HOW TO PLAY

From NeoGeo Development Wiki
Revision as of 22:37, 21 February 2017 by Furrtek (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
A "scripted" how-to-play screen.

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)
Bit 7 6 5 4 3 2 1 0
Def Up-Right Right Down-Right Down Down-Left Left Up-Left Up

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
Bit 7 6 5 4 3 2 1 0
Def - D C B A

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