the cutting room mirror

Rolling Thunder 3

To do:
$12 has a $4EFAFFFE (jmp to self with d16(pc) addressing mode) opcode with some bytes after it overwritten with $22223333444455556666 ...hmmm.

This third entry in the Rolling Thunder series follows a new agent, Jay.

Japanese Release Mode?/Alternate Logo/Alternate Title Screen#

To do:

  • More differences?
  • Was the HUD changed in any way?

RollingThunder3_NamcotScreen.png RollingThunder3_OldLogoTitleScreen.png RollingThunder3_OldLogoPasswordScreen.png

The game fixes bit 5 of byte $D7(a6) to 1 on startup. If you force it to 0 by patching out the write with 392:4E71, 394:4E71, and 396:4E71, some parts of the game change:

  • The Namco screen reads "NAMCOT for Sega Mega Drive" as with Namco's Japanese releases (this most likely means that the bit turns on a Japanese region mode; Rolling Thunder 3 was not released in Japan).
    • The Namco logo animation was also changed somewhat?
  • The game's logo resembles that of Rolling Thunder 2!
  • The title screen has a logo animation resembling that of Rolling Thunder 2!
  • The title screen was changed somewhat? Not sure.
  • Some predefined passwords are changed (see below).

Text remains in English.

Unused Checksum Error Screen#

To do:
Really unused? (hidden checksum routine could be possible!)

RollingThunder3_ChecksumErrorScreen.png

Using patch code 38B:1A (Gens/GS) on startup will bring you to a screen that says nothing but "IT'S A BAD ROM." and hang the game. This screen doesn't actually check the ROM; it's just what would appear on a checksum error. The game does not check its checksum.

Predefined Passwords#

Some of these passwords have been previously documented elsewhere; this is a full list.

US

"JP"

Effect

RISKY

Enables Hard difficulty in the Configuration screen.

PAUSE

Normally, when you pause, the screen is tinted blue and the word PAUSE appears on screen. With this password, neither happens: the game just freezes when you pause. (You still hear the pause sound effect.)

GREED

RAIRU

Has you play as a female character; GameFAQs calls her Ellen. Cutscenes are permanently disabled (DEMO in the Configuration screen is forced to OFF) when playing as "Ellen", but the ending is the same as the normal game despite not playing as Jay.

REIGN

YOSSY

Level select. The number appears next to the CONFIGURATION option on the title screen; use Left and Right to select. Genrollthun3-level.png

ANNOY

NAOKI

Allows you to choose at most five lives to start with instead of at most three from the Configuration screen.

CRASH

DICK-

Gives you 999 bullets to start with, instead of 40.

Unused Horizontal Interrupt Routine#

Rolling Thunder 3 does not use horizontal interrupts, and the game — as well as the previous three Now Production Genesis games, Quad Challenge, Splatterhouse 2, and Splatterhouse 3 — is programmed such that raster effects are coded in through the horizontal interrupt. However, the framework is in place for Rolling Thunder 3 to use the horizontal interrupt, so the question is: does Rolling Thunder 3 have unused raster effects?

Quad Challenge and Splatterhouse 2 have a horizontal interrupt routine. Spllatterhouse 3, the other previous routine, completely removes this routine, however Rolling Thunder 3 seems to place it back. However, unlike the other three games, Rolling Thunder 3 accesses both RAM and the VDP via registers — RAM via a6, the VDP via a5 — and the horizontal interrupt routine was changed to suit.

The strange thing here, however, is that the VDP access to grab the H/V Counter, which is used to determine if we should run the horizontal interrupt routine, was changed from 8(a5) ($C00008) to (8).w (access ROM address $8, which is zero as a byte, as a word, and as a longword). This changes the addressing mode, but not the number of bytes to encode the instruction (so was this change made to the final binary?). This means that by merely changing the opcode portion of the instruction encoding, and the patch codes to do so are B64:0C6D and B8C:302D.

However, the horizontal interrupt routine is still never called because the VDP flag that enables horizontal interrupts is never set. We can force it on, however, with patch code 7BE6:8014 on startup. However, I noticed now the screen has random corruption issues; I have to figure out why...

This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: TODO looks like I also need to set the VDP register that enables horizontal interrupts...

  • - enable HInt

sigh - they set the H Scroll Table address to the same as the Window plane.

  • 7C00:8D2E - move H Scroll Table to $B800 (a safe address, comparing the VRAM layout of this game and of Splatterhouse Part 2).

The game does call a routine that fills the HInt scroll array (make note of that).