the cutting room mirror

Marble Madness (Tengen, Genesis)

Marble Madness is a port of the classic marble rolling arcade game. This version, published by Tengen, was released exclusively in Japan. Electronic Arts had already published their own version in the US and Europe the previous year. The Tengen port is considered far more accurate (and less lenient) than the EA release, though it is quite a rarity.

Sub-Page#

Hidden Text#

This string is located at 0x2BB, right after the ROM header and standard Tengen copyright text:

PROGRAMMED BY JUN AMANAI.

This build date is located at 0x22327:

VER 5-14-93  13:09 by Jun Amanai

Zoom/Rotate Test#

This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: Find the intended way to activate this screen, which includes calling function 0x3F64. It could be reached after a move.w 0xc,(ffd034).w, which would be read at 0x3C7C, but the bytes that make up that instruction aren't present in the ROM.

This debug screen allows testing the squash/stretch effect seen with the logos on the title screen. Rotation doesn't seem to be implemented.

Text used in this screen is located at 0x3B85, which is read by a function at 0x253E. Before that function is called, the following steps must be taken:

  • Graphics for the logo are already loaded in memory;
  • 0xFFD026 = 0xC, set in function 0x3F64;
  • 0xFFD026 is read by the main game loop at 0x4A22;
  • 0xFFD026 = 0x4, allows interaction with a screen;
  • 0xFFD026 is read by the main game loop at 0x4A22.

However, it isn't yet clear how function 0x3F64 ends up being called. An alternative is to patch in a move.w 0xc,(ffd026).w after the logo graphics are loaded, at address 0x1E82, and a move.w 0x4,(ffd026).w at address 0x50A, which is only reached after the first read of 0xFFD026.

These steps are accomplished with the following patches:

000508:31FC
00050A:0004
00050C:D026
00050E:4E71
001E82:31FC
001E84:000C
001E86:D026

Alternatively, apply this Game Genie code:

9TCT-BCJJ
ATCT-AAAL
E2CT-BBTN
RECT-A6TR
9TSA-BCNC
BTSA-AAEE
E2SA-BBYG

Controls:

Control Pad 1 Up / Down

Decrease / Increase ZOOM Y, stretching logo vertically

Control Pad 1 Left / Right

Decrease / Increase ZOOM X, stretching logo horizontally

Control Pad 1 A

Decrease DEGREE, unknown effect

Control Pad 1 B

Reset DEGREE, unknown effect

Control Pad 1 C

Increase DEGREE, unknown effect

Control Pad 2 Up / Down / Left / Right

Moves logo in that direction, updating HPOS / VPOS; If moved offscreen, then it decreases H SIZE / V SIZE

Control Pad 2 A / B / C

Hold to move logo at different speeds

When Start on Control Pad 1 is pressed, it switches to a memory display that is updated in real-time:

Controls:

Control Pad 1 Up / Down

Scroll 1 line up / down

Control Pad 1 A / C

Scroll 16 lines up / down

Control Pad 1 B

Updates several addresses when pressed

When Start on Control Pad 1 is pressed, it switches to the game options screen.

(Source: Original TCRF research)