HOW TO PLAY



The HOW_TO_PLAY ($C00474) system ROM call builds and animates an "how to play" screen from a command list. Not all games use this call.

The graphics are set up using the fix layer with hardcoded tile numbers (todo: tilemaps).

=Command list=

The command list starts at $10F300 (how many bytes reserved ?).

Each command is a longword (4 bytes):


 * The rightmost byte is the command parameter
 * The next byte is the command type (0~3)
 * If the command type isn't recognized, the longword is processed as being a pointer to a MESS OUT data buffer
 * The end command is $00000000

00000000 00000000 000000TT PPPPPPPP

Type 0: Loop control

 * If the parameter byte is less than $FF: Set a loop counter to that value
 * If the parameter byte is equal to $FF: Decrement the loop counter and loop back to the setup command until it reaches 0

Type 1: Joystick state
Sets the color of each joystick direction arrow.


 * 1 is light blue (pressed)
 * 0 is dark blue (released)

If followed by a null command ($0.l) the next 16-bit word specifies a number of frame to wait before executing the next command.

Type 2: Buttons state
Sets the state of each button.


 * 1 is pressed
 * 0 is released

If followed by a null command ($0.l) the next 16-bit word specifies a number of frame to wait before executing the next command.

Any other type: Text update
The longword value is a point to a MESS_OUT data buffer.

This command is always followed by a 16-bit word value which specifies a number of frame to wait before executing the next command.

=Example=

NAM-1975 sets up the following command list:

0000 0200   All buttons released 0000 01FF   All arrows highlighted 0010 F3E2   MESS_OUT write "NAM 1975" "CONTROL HERO AND CURSOR" 0004        Wait 4 frames 0000 000C   Init loop counter to 12 0000 0100   All arrows cleared       <--, 0000 0000   Wait... | 0008        ...8 frames                             | 0000 01FF   All arrows highlighted                  | 0000 0000   Wait... | 0008        ...8 frames                             | 0000 00FF   Loop back (blink all arrows 12 times) --' 0000 0201   A button is pressed 0000 0100   All arrows cleared 0010 F418   MESS_OUT write "MACHINE GUN" 0004        Wait 4 frames 0000 000C   Init loop counter to 12 0000 0200   All buttons released     <--, 0000 0000   Wait... | 0008        ...8 frames                             | 0000 0201   A button is pressed                     | 0000 0000   Wait... | 0008        ...8 frames                             | 0000 00FF   Loop back (blink A button 12 times) ' ...

=List of games known to use HOW_TO_PLAY=


 * NAM-1975
 * Baseball Stars Professional
 * Mahjong Kyo Retsuden