the cutting room mirror

Error Chunks

This article has a talk page!This article has a talk page!
view on tcrf.net

This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically:

  • Dig even further.

This is a sub-page of Proto:Mickey's Ultimate Challenge (Game Boy).

The game has a basic error handler that uses the exact same dialogue character set starting at 0x00070C0 to 0x000073FF. First, it clears the screen, then it prints out the associated error message.

The error messages can be found in various addresses. To trigger them, you need to glitch out with a cheat code or triggering at various parts of the game.

Some errors may reveal a fraction of the prototype's source code (However, it only lists labels and variables.).

This was removed in the final version, and instead it locks the game rather than going to the debug log.

Mickey's_Ultimate_Challenge_(Nov_12,_1993_prototype)_-_Error_chunk.png
  • Press Left or Right to scroll the text if it's long.
  • Press Select to activate a free-camera mode. However, this is used by developers to see what's going on, as it's limited to previous on-screen tiles and movement.
  • Press Start to exit the message and get back to the game.
  • A note, that the byte %02X is a two-digit byte that points to source values stored in WRAM, while %04X is a four-digit variant stored at two points of the WRAM values.

Here's the full text:

  • 0x0000038B to 0x000003ED
  • A small chunk of strings.
%nBC=%04x 
A=%02x 
PC=%04x 
+2=%04x
%nDE=%04x 
F=%02x 
SP=%04x 
+4=%04x
%nHL=%04x 
N=%02x 
+0=%04x 
+6=%04x%n
  • 0x00000E20 to 0x00000F50
  • A extended version of the aforementioned strings.
%s =%04x%n
----Discontinuity----
04x:%02x 
%02x.%02x 
%02x_%02x 
%02x.%02x 
%02x%n
%n
%n
SP=%04x
%n+0=%04x 
+2=%04x 
+4=%04x 
+6=%04x
%n+8=%04x 
+a=%04x 
+c=%04x 
+e=%04x%n
10=%04x 
12=%04x 
14=%04x 
16=%04x
%n18=%04x 
1a=%04x 
1c=%04x 
1e=%04x%n
20=%04x 
22=%04x 
24=%04x 
26=%04x%n
  • 0x000010C0 to 0x000011A0
  • Another extended version of the aforementioned strings.
C=%04x 
A=%02x 
PC=%04x 
+2=%04x%n
DE=%04x 
F=%02x 
SP=%04x 
+4=%04x%n
HL=%04x 
N=%02x 
+0=%04x 
+6=%04x
%n+8=%04x 
+a=%04x 
+c=%04x 
+e=%04x
%n10=%04x 
12=%04x 
14=%04x 
16=%04x%n
18=%04x 
1a=%04x 
1c=%04x 
1e=%04x%n
20=%04x 
22=%04x 
24=%04x 
26=%04x
  • 0x00003BE0 to 0x00003F40 (DMA error/In-game errors)
  • This error reveals a small block of DMA code. What is revealed is that dmaqueread is associated at ill_dmaqueread, ill_dmaquewrite, dodma.
  • It appears that this error says that the function dmalen is more than 255, and it is at length_fatal
  • fatal_args is in short for fatal arguments.
%n Not Yet Imp.%n
%n Shouldn't be here.%n
%N updsprites:fatal_args %N
%N qwrite=qread.Flushing. %N
dmaqueread =%04X,AT ill_dmaqueread%N
?dmaqueread =%04X,AT ill_dmaqueread%N
?dmaqueread =%04X,AT ill_dmaquewrite%N
?dmaqueread =%04X,AT ill_dmaquewrite%N
?%N adddma_overrun   %N
%N dmalen=0! %N
%N dmalen>255 %N
dmalen =%04X,AT length_fatal%N
?dmasrc =%04X,AT length_fatal%N
? %N illegal_dmasrc %N
dmasrc =%04X,AT fatal%N
? %N illegal_dmabank %N
dmasrc+2 =%04X,AT %N
?%N illegal_dmadest %N
dmadest =%04X,AT fatal%N
?dmaqueread =%04X,AT dodma%N
?dmaqueread =%04X,AT dodma%N
?dmaquewrite =%04X,AT dodma%N
?dmaquewrite =%04X,AT dodma%N
?%N LCD_ON! %N
argwidth =%04X,AT bad_decomp_wid%N
%N decomp_first %N
%N decomp>32! %N
%n Fatal error
r_coll x=%02x y=%02x x1=%02x%n
%N blank_collide! %N
%N fatal_argx>32     %N
`SH6*V
  • 0x00007400 to 0x00007463 (In-game errors)
  • pumproom - presumably the internal name of the pump minigame seen in the final version.
%N keepfalling %N
%N bef_nav %N
%N pumproom %N
%N dlgheight=0! %N
%N dlgwidth=0! %N
%N subst_name %N
  • 0x00013FC0 to 0x000014000 (In-game errors)
%N got_e7 %N
%N got_c0 %N
%N galstartover %N
%N scalecolor %N
  • 0x00013AF0 to 0x000013BD0 (In-game errors)
  • This error are triggered if the WRAM addresses 0x00000C1A0 and 0x00000C1B0 with a value of FF are detected.
  • This reveals a fragment of source code for the player, and the variable sprty is assigned to the corresponding WRAM addresses. The same goes for the moving_sprite flag.
  • hit_b means in short for "hit box" and it is associated to the sprty flag that calculates the sprite's Y position.
%N Horace_comment? %N
%N navdyrel =%04X,AT moving_sprite%N
%N sprty =%04X,AT hit_bk%N
%N navdyrel =%04X,AT 2moving_sprite%N
%N sprty =%04X,AT yeow%N
%N fly_to_horace         %N
%N dbg_prompt_re-entry      %N
  • This screen starts at Work RAM address 0x0000D8E0 to 0x0000DB1C.