avatar_Puresox

Great games with Bad Controls! How hard would it be for a programmer to alter?

Started by Puresox, 23:23, 01 November 13

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Puresox

I am interested to know how difficult it would be for a programmer too amend the games to have better controls? Is it a complex thing to do?
E.G.s
XY-Bots is a cool little game but does suffer from awkward controls that cause you to turn when you don't want too.
Forgotten Worlds the shooting mechanism ruins a great little game.

[size=78%]There are many more which I am sure people are aware of.[/size]


TFM

TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

nrgroom

Escape from the Planet of the Robot Monsters always annoyed me - instead of straight directional controls, it was left/right to turn, and forward to move. I think down was a special attack or bomb. I loved the game, and played on through anyway, but with better controls, it could have been so much more fun.

arnoldemu

Quote from: Puresox on 23:23, 01 November 13
I am interested to know how difficult it would be for a programmer too amend the games to have better controls? Is it a complex thing to do?
E.G.s
XY-Bots is a cool little game but does suffer from awkward controls that cause you to turn when you don't want too.
Forgotten Worlds the shooting mechanism ruins a great little game.

[size=78%]There are many more which I am sure people are aware of.[/size]
The problems I see:

1. if extra code is required, then finding spare ram and fitting this in may be a problem.
2. to make the game work with a different control method may not actually be possible without more major alternations to the game engine.

in the case of robot monsters, the frames are probably there, so changing it to a different method may be less work.

My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Puresox

Another game which I feel could benefit better controls is--- Into the Eagles Nest. This is a great game but it is hampered by not having an on screen display for your health, Ammo and Keys. You have too monitor it, by keep pressing escape, which breaks up the flow of the game. I don't know why they couldn't facilitate it, it doesn't sound too difficult to do? I think the Spectrum/C64 version managed it, so why wasn't the CPC version done this way?

romppainen

Quote from: nrgroom on 11:06, 02 November 13Escape from the Planet of the Robot Monsters always annoyed me - instead of straight directional controls, it was left/right to turn, and forward to move. I think down was a special attack or bomb. I loved the game, and played on through anyway, but with better controls, it could have been so much more fun.

It ain't like that on every platform: I don't know about how original arcade machine behaves but C64 version - and IIRC Amiga version too - had standard controls, you can guess how devastated I got when I tried CPC port because I really loved the graphics. Split screen instead of scrolling didn't help either  :(

Axelay

Quote from: Puresox on 00:26, 22 November 13
Another game which I feel could benefit better controls is--- Into the Eagles Nest. This is a great game but it is hampered by not having an on screen display for your health, Ammo and Keys. You have too monitor it, by keep pressing escape, which breaks up the flow of the game. I don't know why they couldn't facilitate it, it doesn't sound too difficult to do? I think the Spectrum/C64 version managed it, so why wasn't the CPC version done this way?


Not necessary!  ;)  This was discovered by arnoldemu a while ago, but the short story is if you grab the tape version off CPC-Power you get score, health, ammo & keys all displayed on one line.

arnoldemu

Quote from: romppainen on 02:34, 22 November 13
It ain't like that on every platform: I don't know about how original arcade machine behaves but C64 version - and IIRC Amiga version too - had standard controls, you can guess how devastated I got when I tried CPC port because I really loved the graphics. Split screen instead of scrolling didn't help either  :(
I wish I had time to fix this with the controls. Anyone else looked at the code for this yet?

My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

arnoldemu

Quote from: arnoldemu on 10:27, 22 November 13
I wish I had time to fix this with the controls. Anyone else looked at the code for this yet?
use the disk version.

controls are poked into 4823.

4f8f is menu controls?
4fcb is game controls (500a is joystick), rest is for keyboard)

4822 then works out if you want to rotate left/right etc.

I think it's done like this because the code is potentially smaller? OR perhaps because it's for a joystick with 1 button. 2 button joystick would have fire and bomb? (perfect for plus gamepad and using fire 2 is something that mr.lou would approve of).


4828 is one direction, 4838 is the other.
4b1c is move forwards
4b15 is drop bomb
484e is fire??? (not sure).

If I understand it correct, then these are the bit combinations:


%0001        left
%0010        right
%0100        up
%1000        down
%0101        left/up
%1001        left/down
%0110        right/up
%1010        right/down

ix+&0e is the direction.

I don't know how the directions work, assuming it does this (depends on starting point and which direction to rotate):

0: left
1: left/up
2: up
3: right/up
4: right
5: right/down
6: down
7: left/down

these are the numbers (all possible cases if you consider all axes):


%0000       no movement 8
%0001        left        0
%0010        right       4
%0011       not used    8
%0100        up          2
%0101        left/up        1
%0110        right/up    3
%0111       not used    8
%1000        down        6
%1001        left/down   7
%1010        right/down  5
%1011       not used    8
%1100       not used    8
%1101       not used    8
%1110       not used    8
%1111       not used    8

this is some potential code (not tested):


org &4824

add a,tab/256
ld c,a
ld a,tab and 255
adc a,0
ld b,a
ld a,(bc)
bit 4,a
jp z,&4b15
;; moving..
ld (ix+&0e),a
ld bc,&485c
call &476d
ld (ix+&14),&2
jp (hl)

Most of this is guesswork.

The idea is that based on the possible left/right/up/down, you decide the direction (thats the numbers between 0-7), and do auto move. If the number is 8, this is effectively no movement and happens when no directions are pressed or a bad combination.

So who will give a good patch?
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

arnoldemu

bit 3 is up
bit 2 is down
bit 1 is left
bit 0 is right
bit 4 is fire 2 (on joystick)

so that makes my numbers wrong.

My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

arnoldemu

0 is facing diagonally right/up. so pointing with back to us looking towards the right.
increase number to move clockwise, decrease to move anti-clockwise.

My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

arnoldemu

Quote from: arnoldemu on 14:54, 22 November 13
0 is facing diagonally right/up. so pointing with back to us looking towards the right.
increase number to move clockwise, decrease to move anti-clockwise.

corrected numbers based on this:

these are rotation numbers:
5: left
6: left/up
7: up
0: right/up
1: right
2: right/down
3: down
4: left/down


My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

arnoldemu

Quote from: Puresox on 23:23, 01 November 13
I am interested to know how difficult it would be for a programmer too amend the games to have better controls? Is it a complex thing to do?
E.G.s
XY-Bots is a cool little game but does suffer from awkward controls that cause you to turn when you don't want too.
Forgotten Worlds the shooting mechanism ruins a great little game.

[size=78%]There are many more which I am sure people are aware of.[/size]
For each of these games you have to find where the keyboard/joystick are scanned. Then you have to find how this is stored (normally the information is put into a byte, with 1 bit representing each input pressed). e.g. bit 0 is left, bit 1 is right. But it depends on the game. Then you need to find where the game reads this information and makes it's decisions.
When you've done that you need to work out how to make the sprites move as you want, and then make the code to patch (write over) the existing code to make it do as you want.

In the case of robot monsters, you have to then change the controls a bit more because it's designed for joystick with 1 fire button. if you change it for a joystick with 2 fire buttons it's more simple, but if you want joystick + keyboard, it becomes a bit more trickier.

In addition, monsters scans both keyboard and joystick at the same time, so you either have to make both work together OR you have to then modify the menu system to let you choose keyboard/joystick controls.

to then make it compatible with gx4000 (if you want to go that far), you need to make sure it can all be controlled through joystick.

so, really you have to look at each game on a case by case basis. Each game has to be patched in it's own way.

It takes some discovery to work out how it operates and how to make it do what you want.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

arnoldemu

Quote from: Puresox on 23:23, 01 November 13
I am interested to know how difficult it would be for a programmer too amend the games to have better controls? Is it a complex thing to do?
E.G.s
XY-Bots is a cool little game but does suffer from awkward controls that cause you to turn when you don't want too.
Forgotten Worlds the shooting mechanism ruins a great little game.

[size=78%]There are many more which I am sure people are aware of.[/size]
btw, xybots and robot monsters were written for the cpc by the same company, and possibly the same programmer.

Both were done by Krisalis.

My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Puresox

Cheers for taking the time to explain it, interesting stuff.
A note on Escape from the Robot Monsters. Didn't the arcade version actually have this rotation style controls, I always thought it had, but maybe my mind is clouded by playing the Amstrad version .

arnoldemu

Quote from: Puresox on 16:16, 22 November 13
Cheers for taking the time to explain it, interesting stuff.
A note on Escape from the Robot Monsters. Didn't the arcade version actually have this rotation style controls, I always thought it had, but maybe my mind is clouded by playing the Amstrad version .
no problem.

I looked at a video of the arcade game.

It seems it has a track ball, and you can use that to turn the direction you want, more than 8 positions.
So the arcade is played with 2 hands, one on the ball and one on the buttons.

If you translate that to a joystick. Perfect would be an analogue joystick, you can control the angles well, and buttons for fire, but only if you're using a gamepad and a thumbstick. If you use another method it becomes awkward.

So switch it to joystick, but then you have a problem because it's awkward to rotate and fire with the joystick because of it's digital movement and because of the placement in your hands.

So best is to do as the other versions do and make the controls go in the direction you want based on the button you press, but now you need 2 fire buttons, one for flame thrower and one for bomb.

So this is probably exactly why they did it like this.

My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Gryzor

Speaking of the rotating joystick... Midnight Resistance! The arcade was awesome to play, but the controls didn't translate so well to home computers...

TotO

"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

Puresox

Midnight Resistance , was bearable , well I thought it was ok , although some of the shot sprites were oversized , but was a playable game nonetheless. Forgotten Worlds was completely wrecked by shite controls, otherwise it was a reasonable effort.IMO


Didn't Quickshot or cheetah or  another company bring out a rotary joystick ? That some games recognised? Was it any good?

Gryzor


arnoldemu

Quote from: Puresox on 21:35, 24 November 13
Didn't Quickshot or cheetah or  another company bring out a rotary joystick ? That some games recognised? Was it any good?
I believe they did and I believe the follow up to Ikari Warriors used it, but I can't find the actual code to support it.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Optimus

I am curious about something, I was gonna open another thread, but this one is perfect for this.


Shoot em ups. They have this same mechanic. You press the space bar frantically and sometimes it's just like the input is not taken. Or at some periods you stop shooting bullets, while others you can shoot fast.
It's like there is a limitation of how many bullets you can shoot at a time (and based on total sprite numbers/enemies?) but not always, there are periods between shooting as many times as you press and not shooting enough.


I am not sure if I am clear. There are times I press frantically the space bar and sometimes bullets are not coming out and I loose. I see it everywhere, even in modern games, like Star Sabre. Is it because of limitation of sprites at the same time on screen? Input limitation, delays?


p.s. Other than that, Anarchy. Great game, but if you play with keyboard, what kind of awful keyboard configuration is that? Also, Renegade, crazy keyboard configuration too. Why?

Sykobee (Briggsy)

I imagine that often it is done to a sprite limit, although the game should have been designed so that the gap between bullets is enough to keep a steady rate up.  Alternatively it could be that the game just reads the keyboard input once in its game cycle and you missed that small window that the space bar was pressed, and there was no (or very small) keyboard buffer in place.


Or there's the old "gun overheated" mechanic I guess.  But that's useful in a game where you have to count your bullets and watch how liberal you are with shooting them all over the place.


Personally I'd rather some shoot'em'up games had "start shooting" and "stop shooting" for the spacebar, rather than "daley thompson that spacebar!".

arnoldemu

Yes, if you look at some games. You fire a bullet, and the next one can't be fired until the previous one has been removed from the screen (e.g. hit an enemy or hit the side of the screen).

You can check this by approaching the side of the screen and firing continuously, if it's faster at the edge than near the middle is purely down to the number of sprites.

I agree, really shoot em ups should be based on rate. Based on the rate you can know the maximum number of bullets required.
Then even if you shoot an enemy, the next bullet will not come until the time between bullets has been reached. But to make that fair, you need a fast rate so that you're not stuck near an enemy waiting for the next bullets to be fired.

You could get around this by using a limited bullet range. So you need to be closer, but the rate can be higher because overall less sprites on screen.

Don't forget in these games cpu time is taken with 1) updating the movement of the bullets (which is easy) 2) collisions (takes more time)

So by minimising the number of bullets your minimising the number of collision tests that are required.

My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Sykobee (Briggsy)

Heh, yeah, I can imagine a game designer ... "we've got the cycles to render and collision detect TWO bullets per frame.  That's why the weapon is a shotgun."

Powered by SMFPacks Menu Editor Mod