If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Marble Madness (Tengen, Genesis)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Marble Madness

Developers: Tengen
Publisher: Tengen
Platform: Genesis
Released in JP: August 13, 1993


CopyrightIcon.png This game has hidden developer credits.
DevTextIcon.png This game has hidden development-related text.
DebugIcon.png This game has debugging material.


PrereleaseIcon.png This game has a prerelease article

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

Read about prerelease information and/or media for this game.
Prerelease Info

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

Elementary, my dear Cactus.
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.

MarbleMadnessTengen-Genesis-ZoomTest.png

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:

Pad1 Up / Down Decrease / Increase ZOOM Y, stretching logo vertically
Pad1 Left / Right Decrease / Increase ZOOM X, stretching logo horizontally
Pad1 A Decrease DEGREE, unknown effect
Pad1 B Reset DEGREE, unknown effect
Pad1 C Increase DEGREE, unknown effect
Pad2 Up / Down / Left / Right Moves logo in that direction, updating HPOS / VPOS; If moved off-screen, then it decreases H SIZE / V SIZE
Pad2 A / B / C Hold to move logo at different speeds

When Pad1 Start is pressed, it switches to a memory display that is updated in real-time:

MarbleMadnessTengen-Genesis-MemoryDisplay.png

Controls:

Pad1 Up / Down Scroll 1 line up / down
Pad1 A / C Scroll 16 lines up / down
Pad1 B Updates several addresses when pressed

When Pad1 Start is pressed, it switches to the game options screen.

(Source: Original TCRF research)