We just reached 30,000 articles on this wiki! 🥳
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:

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:

MarbleMadnessTengen-Genesis-MemoryDisplay.png

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)