User:Andlabs/Viewpoint (Neo Geo)

Debugging Features
Bits 2 and 7 of byte $3FFFE in ROM control debugging features. While bit 2 is set, bit 7 is not set, and will need to be set with the MAME debugger. On startup, use maincpu.mb@3FFFE = 0xFF go to set the address and start execution. (The byte's value in ROM by default is $7F.)

Once outside the Neo-Geo BIOS, press both the 1P Start and Next Game buttons (in MAME, 1 and 7, respectively, by default) OR both the 2P Start and Previous Game (in MAME, 2 and 8, respectively, by default) buttons simultaneously. If done right, you should see PAUSE on the upper right corner of the screen and the game will pause. This will disappear and the game will resume if you press the buttons again.

While PAUSE is shown, press both Up and Down at once to open a debug menu. The debug menu will be shown on the upper left corner of the screen and will not have a border. The options: Press Button 2 to exit this menu. Warning: if you try to unpause the game before exiting the menu, nothing will happen until you exit the menu, which will both exit the menu and unpause the game, possibly resulting in the game registering Button 2 to launch one of your special attacks!
 * RESET: Select with Button 1 to reset the Neo-Geo. The BIOS might not reset the sound hardware on startup, so the background music that was previously playing may continue to play until the Neo-Geo splash screen shows up.
 * HIT CHK: Can be set to either Active or Off with Button 1. When Off, you are invincible (and in some cases, colliding with an enemy will register as damage to that enemy).
 * LINK CHK: Can be set to either Off or On with Button 1. The effect of this parameter is unknown.
 * SCROLL: Can be set to either Off or On with Button 1. When On, camera coordinates are shown on the top-left corner of the screen during gameplay. Note: when you turn SCROLL off, the screen will keep showing the previous SCROLL values, and will not go away until you lose a life.
 * OBJ MSG: Can be set to either Off or On with Button 1. When On, part of the HUD on the bottom of the screen is replaced with various information about objects. Note: when you turn OBJ MSG off, the HUD will keep showing the previous OBJ MSG values, and will not return to normal until you lose a life.
 * PLAYER: Can be set to either Off or On with Button 1. When On, clearly-labeled player information are shown on the bottom-right corner of the screen during gameplay. Note: when you turn PLAYER off, the screen will keep showing the previous PLAYER values, and will not go away until you lose a life.
 * VIEW OBJ</tt>: Select with Button 1 to open an object viewer, discussed below.
 * OBJ POS</tt>: Select with Button 1 to open an object position information viewer, discussed below.
 * KEY TRACE</tt>: Discussed below.
 * STAGE NO</tt>: Discussed below.

Note (except for STAGE NO</tt>): though all of these features (the pausing, the debug menu, and its entries) can be used at any time, they only really make sense during actual gameplay (and in some cases, such as the game state display items, their effects only show up during actual gameplay).

VIEW OBJ
Choosing this item from the debug menu opens a screen where you can view game objects. There's a fair amount of stuff going on here, and the screen even runs in one of two modes: sprite mode and fix mode. The game's background music will keep playing during this screen.

The screen starts in sprite mode. Press Button 4 to open a menu that lets you choose with the joystick, and Button 1 to choose. There appears to be no way to exit the VIEW OBJ screen, though you can do the pause/debug menu above as usual.

Sprite Mode
This mode lets you handle objects that appear as in-game sprites, such as the player ship and enemies.

The current object itself is shown to the right. At the top of the screen you see the palette line for the current object. On the left is a number of labels, some data, and a cursor for another menu.

This first menu lets you choose between three labels: Note: even while in a menu option, the buttons below will still have their desired effects.
 * PATN</tt>: The value for this is actually two two-digit hexadecimal numbers. Press Button 1 to change the cursor to a + that appears under the numbers. The number on the left is the current object number; the number on the right is which of that object's sprites are currentlys hown. Use Left and Right to choose the two numbers, Up and Down to change one of their values, and Button 1 again to stop. Changes take effect immediately.
 * COLOR</tt>: This value is the number of the current palette line being used for the sprite. Hold Button 1 and use Up and Down to change (the cursor should change while Button 1 is held).
 * V</tt>/H</tt>: These values show you the current position of the sprite on screen. Hold Button 1 and use the joystick to move around (the cursor should change while Button 1 is held).

Holding down Button 2 will also trigger V</tt>/H</tt> without changing the menu cursor. If you are in PATN</tt> or V</tt>/H</tt>, you will be returned to PATN</tt> or V</tt>/<tt>H</tt> when you release Button 2. This will not work if you are in <tt>COLOR</tt> (Button 2 will merely do nothing).

On the bottom left corner of the screen, underneath the above menu, is a bunch of labels: <tt>MODE</tt>, <tt>SIZE</tt>, and <tt>OFFSET</tt>, with <tt>SIZE</tt> and <tt>OFFSET</tt> having <tt>Z</tt> and <tt>X</tt> labels. Press Button 3 at any time to toggle number next to the <tt>SIZE</tt> labels on or off. You can now select these two numbers in the menu, and hold down Button 1 to change the cursor to indicate entering an edit mode for these two values, but they do not appear to change at all. Nothing ever appears to show up next to the <tt>OFFSET</tt> labels.

Fix Mode
This screen lets you test tiles that are drawn in the fixed plane of the Neo-Geo screen (a flat, non-scrolling, transparent tilemap that is always drawn above everything else, typically used for the HUD (or at least the credits counter at the bottom of game screens)). The top shows you the current palette line, two banks of tiles are shown in the middle, and the bottom shows you both the current bank number and palette number and what the screen's controls are. That being said, the controls are simple: use Up and Down to choose a palette and Left and Right to choose banks. Buttons 1, 2, and 3 are not used here.

OBJ POS
This option allows you to control position of objects currently on screen. The currently selected object will blink; use Up and Down to choose another one.

Press Button 1 to move the entire object as a single group. Use the joystick to move. The top left corner of the screen will show you the current object coordinates as well as the memory address of the current object's data. Press Button 2 to go back to the OBJ POS menu. The other buttons do nothing.

Press Button 3 to move the entire object "separately". This appears to be entirely identical to the group mode.

Press Button 2 to return to the debug menu. The other buttons do nothing.

KEY TRACE
lorem ipsum dolor sit amet whatever it is followed by

This is recording data to ROM; unlike on the Genesis I don't know any free memory block to record to here. Memory card? How does that work in MAME?

The setting only takes effect when entering a new stage (it will not have any immediate effect; nor will it have an effect when you die and start over, even from a continue(TODO check this part again)); you will need to do it during the title screen or how to play screen for it to take effect on the first stage.

STAGE NO
This allows you to choose a stage and checkpoint for that stage. While selecting this item on the menu, press Button 1. The cursor will change to show that you have entered the edit mode for this option. Use Up and Down to select a stage (left number) and Left and Right to select a checkpoint number, then press Button 1 to confirm or Button 2 to cancel. The other buttons do not do anything.

The change only takes effect when entering a new stage (it will not have any immediate effect; nor will it have an effect when you die and start over, even from a continue(TODO check this part again)); you will need to do it during the title screen or how to play screen for it to take effect on the first stage. Furthermore, though the checkpoint number is bounded by the currently selected stage, the stage number is not unbounded, and any number greater than or equal to 07 has interesting effects:
 * 07 is the "stage" for the intro. The intro itself will not play during this stage; if you enter it with this stage select, you will be taken to an empty stage that scrolls at the usual speed. You can, however, collide with the walls (even in the part when you're in the sky!).
 * 08 is the ending, and this time the ending does work properly.
 * 09-0C are test stages; see below.
 * (0D-1F here)

Stage 09
This stage has a simple geometric tiled floor with a colored line going through the middle and has no background music. Occasionally an indestructible spinning triangle will come on screen and follow you, so over time the number of spinning triangles increases. Though you cannot destroy these triangles, they can destroy you.

Stages 0A-0C
Like Stage 09, but have no objects.