I should add, although the test screen I wrote is extremely basic, there is a lot behind this routine.
For example, some moves can ignore the state of firebutton, so you can charge your gun or whatever while performing special movements. Tolerance to mistakes or delays made by the player in trying to perform the special moves can be increased or diminished. This can help to change difficulty but is also good for adjusting to different fps. 60fps is fine but if the game was running on a device that could only manage 30fps it might be an idea to diminish the mistake & delay tolerance so special moves remain around the same difficult to do.
The same joypad can be set up for different sets of special moves. For example, in Street Fighter games many of the special moves depend on which direction you're facing. This could be easily achieved by setting two control schemes (or more) for the same controller:-
player1left = sfPadInitialise(j,n,m)
player1right = sfPadInitialise(j,n,m)
player1swimming = sfPadInitialise(j,n,m)
player1invehicle = sfPadInitialise(j,n,m)
Where j is the number of the joypad being used, n is the number of special moves for that control configuration and m the maximum number of steps in any special move
Ok, I'm done waffling about stuff no one will probably care about.
For example, some moves can ignore the state of firebutton, so you can charge your gun or whatever while performing special movements. Tolerance to mistakes or delays made by the player in trying to perform the special moves can be increased or diminished. This can help to change difficulty but is also good for adjusting to different fps. 60fps is fine but if the game was running on a device that could only manage 30fps it might be an idea to diminish the mistake & delay tolerance so special moves remain around the same difficult to do.
The same joypad can be set up for different sets of special moves. For example, in Street Fighter games many of the special moves depend on which direction you're facing. This could be easily achieved by setting two control schemes (or more) for the same controller:-
player1left = sfPadInitialise(j,n,m)
player1right = sfPadInitialise(j,n,m)
player1swimming = sfPadInitialise(j,n,m)
player1invehicle = sfPadInitialise(j,n,m)
Where j is the number of the joypad being used, n is the number of special moves for that control configuration and m the maximum number of steps in any special move
Ok, I'm done waffling about stuff no one will probably care about.