Mail has been fixed; you should now be able to confirm your e-mail address, watch pages, and the like.
Please report any issues on Discord.

OutRun 2019

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

OutRun 2019

Developer: Hertz
Publishers: SIMS (JP), Sega (US/EU)
Platform: Genesis
Released in JP: March 26, 1993
Released in US: 1993
Released in EU: 1993


GraphicsIcon.png This game has unused graphics.
DebugIcon.png This game has debugging material.


ProtoIcon.png This game has a prototype article

Note: This article also covers the so-called "US beta" version, whose origin and exact details are presently unknown, however contains everything presently shown on this page in its final form.
Note: Before using patch codes, you must disable the checksum check. To do so, use one of these patch codes (any emulator):
  • Japan: 3C4:4E75
  • USA: 3D8:4E75
  • Europe: 3F0:4E75
  • "US beta": 3C4:4E75
Hmmm...
To do:
  • Was the volume near the beginning of the ending theme changed in the US and Europe versions to be more variable?

Main Menu Features Codes

The main menu code (the Start/Options/Records screen) checks for two codes that turn on and off several interesting features.

  • To turn these features on, press Up twice, A once, B twice, and C seven times.
  • To turn these features off, press Up twice and C once.

After entering a code, press Start to confirm. These must be the only buttons you press on the main menu before pressing Start, and you can press the buttons in any order. Once you press Start, if you entered a code correctly, the sound effect you hear when you select an item from the main menu should be different, and you should be taken to the Options screen (since that option is selected since you pressed Up twice in both cases).

With the features on, three things will change.

OutRun2019 ExtraOptions.png

First, there will be several extra options on the Options screen. These additional options are described below.

Second, during gameplay, hold C while pressing Start to pause (or press them both at the same time) to reset the game.

OutRun2019 HertzCredits.png

Finally, an additional line HERTZ CORP. will be added to the end credits after the line Printed by SEGA ENTERPRISES LTD..

The features set flag is also checked in the Sega screen, but whatever action was taken here has since been removed. The earlier Junker's High prototype does do something here (jump to the Data Loading screen; see below).

The Additional Options

There are three additional options in the Options screen: STAGE, MODE, and CONTROL.

STAGE
This determines which stage/gameplay mode is currently active. A value of 0 means normal gameplay, and a value of 1 means jump to the ending. All other values choose the individual pieces of all the stages in succession, with the game resetting after you complete the stage associated with that piece (so you can play starting at any checkpoint, but only up to the end of that stage).
MODE
This value goes from 0 to 15 decimal inclusive and represents the RAM word $FFFF10. However, the game only ever accesses the low byte ($FFFF11), and only uses three bits:
  • If bit 0 is on (all odd values), collision with cars and most other objects is disabled (you will still collide with some things, such as guard rails, and even then the disabled collision with most other things seems to behave wonkily at best; what appears to happen is that it still registers that you hit one of these scenery objects and will slow you down but will not send you flying, but this needs technical confirmation).
  • If bit 1 is on (2, 3, 6, 7, 10, 11, 14, or 15), you will have infinite time (the game will not declare game over when the timer reaches zero).
  • The Genesis can run in one of two horizontal screen resolutions, 256 pixels wide (H32) or 320 pixels wide (H40). Normally, the actual gameplay runs in H32. If bit 3 is on (8-15), gameplay will run in H40. This will render the HUD corrupt, as the HUD is directly tied to the horizontal screen resolution.
The game does check the entire word twice, but this is residual leftover from the more specific additional MODE checks of the Junker's High prototype (not allowing game saving if collision detection is turned off and the unknown extra effect of infinite time) and the effects are both removed here, so the point is moot.
CONTROL
This value goes from 0 to $F hexadecimal inclusive and represents the RAM word $FFFF08. However, the game only ever accesses the low byte ($FFFF09), and only uses the low two bits:
  • If bit 0 is on (all odd values), the normal HUD will be replaced with a debug HUD, discussed below.
  • If bit 1 is on (2, 3, 6, 7, $A, $B, $E, or $F), the ability to retire mid-race is disabled (pausing will not show the RETIRE? prompt and the buttons do nothing).

The Debug HUD

OutRun2019 DebugHUDScreenshot.png

If bit 0 of the CONTROL value in the extended Options screen is selected (that is, you choose any odd value), the normal HUD will be replaced with this debug HUD. Here is a picture of the HUD with each field numbered; a description of each field is provided below, numbered in the order the game draws the values (except for the first one, which is drawn separately).

(1 )3   (2 )103  037(9 ) (10)0000   (11)00000060
        (3 )B9800000                (12)00000000
        (4 )10000000                (13)00000000
        (5 )020  277(6 )
        (7 ) 1■1■1 
        (8 )00001000
Hmmm...
To do:
Replace with an edited screenshot?
  1. (word $FFF1DA, hexadecimal? assumed to be no larger than decimal 9/hex $F, otherwise will just show as increasing letters and then other random symbols/tiles). This is a makeshift frame counter: it counts up from 0 every frame and resets every time it is drawn on screen. That is, take the refresh rate of your system and divide that by this number to get the current framerate of the game. So if this value is 3 (as shown here) and you are on a NTSC system (which is 60Hz), the current framerate is 60/3=20fps.
  2. (word $FFF144 shifted right 5 times, decimal and limited to 3 digits; going over 999 turns the uppermost digit into hexadecimal ($A00)). This appears to be the current position along the path that you are in (alternatively, the current Z position of your car, or even your progress through the race). This value is limited to what the game internally uses to build pieces, so the number may reset at odd points during the race.
  3. (long $FFF100, hexadecimal) (TODO seems to be the state of all on-screen objects except the HUD and of the background, as a 32-bit bitfield (in-game this is split into btst instructions on the four consecutive bytes of the longword)).
  4. (long $FFF300, hexadecimal) (TODO seems to be the bits controlling player control and possibly NPCs as well, as a 32-bit bitfield (in-game this is split into btst instructions on the four consecutive bytes of the longword)).
  5. (word result of word $FFF602 - word $FFF600, decimal and limited to 3 digits; going over 999 turns the uppermost digit into hexadecimal ($A00)). (TODO unknown; setting both words to $FFFF causes random corruption every time a new segment is loaded).
  6. (word result of constant word #$4A0 - word $FFF602, decimal and limited to 3 digits; going over 999 turns the uppermost digit into hexadecimal ($A00)). (TODO unknown; related to 5).
  7. (7 plane mapping words starting from $FFF3D0; that is, 7 tiles). (TODO unknown; has to do with stage piece data; also though this field is seven tiles long, only the middle five tiles or the last six tiles seem to show anything). Note: when first starting a new game, this section might not appear until you get out of the starting tunnel.
  8. (word $FFF300 as low word of long with high word zero, hexadecimal). Just the upper word of section 4 above by itself. Junker's High had some other value here instead.
  9. (word $FFF632, decimal and limited to 3 digits; going over 999 turns the uppermost digit into hexadecimal ($A00)). (TODO unknown).
  10. (word $FFF284 (the full long is read but the low word discarded), hexadecimal). (TODO unknown; appears to be related to torque of car on road in certain physics calculations, such as collisions?)
  11. (word $FFF128 as low word of long with high word zero, hexadecimal). (TODO unknown; appears to be related to background scrolling and ground/road drawing (other than the road you are currently on)).
  12. (long $FFF1BC, hexadecimal) (TODO unknown).
  13. (long $FFF1C4, hexadecimal) (TODO unknown; appears to have to do with being on bridges).

"Dorago Quest V" Title Screen

OutRun2019 DoragoQuestV.png

Screen mode $8 (screen mode numbers are in increments of $4) loads a joke title screen for "Dorago Quest V". No music plays, and the code for the menu is the same as the code for the Options screen (rather than for the regular main menu).

There is no way to access the Dorago Quest V screen without editing the ROM. The methods described below require you to disable the checksum (see above).

To have the game boot directly into this screen, use one of the following patch codes (Gens/GS only):

  • Japan: 322:0008
  • USA: 336:0008
  • Europe: 34E:0008
  • "US beta": 322:0008

To have the game jump into this screen by selecting any option from the main menu, use one of the following patch codes (any emulator):

  • Japan: 10A20:7C0C
  • USA: 10A3A:7C0C
  • Europe: 10A5C:7C0C
  • "US beta": 10A0A:7C0C

The music will continue to play with this. This takes advantage of an unused target in the main menu jump table that returns to the main loop, which moves to the next screen mode (and the title screen is screen mode $4).

The alternate title screen is only somewhat functional. Selecting Start takes you right to the game, but with nothing set up (it literally calls the game loop function directly without setting any environment up), so you are taken to an invalid level that does not seem to end (shown left) and with the title screen music as background music (it starts playing over again). Selecting Options does take you to the Options screen, but exiting that will take you back to the regular title screen.

Hmmm...
To do:
Screenshot of the invalid level?
OutRun2019 DataLoading.png

The third option, Data Loading, will not take you to the Records screen, however. Instead, it takes you to this screen, which just says DATA LOADING. Immediately after drawing this, the game deliberately jumps into noncode, which causes the game to hang.


(Source: Everything up to this point, Tony H, Sik, Mezmorize, andlabs)