Notes:Wario Land: Super Mario Land 3
This page contains notes for the game Wario Land: Super Mario Land 3.
Level Skip Bug
The original Game Boy game has a bug where you can skip certain levels or worlds that have a possible path to the right, even if the level or world has not been beaten yet. This is done by pressing Right and another direction on the D-Pad simultaneously.
This because happens when the player uses the D-Pad to move Wario along the map, the Game Boy version first checks all of the possible paths based on where Wario is standing in this order: Left, Up, Down, Right. These possible paths don't take into account whether Wario beat the level that he is standing on yet.
Afterwards, to determine where to move Wario, the game checks in the following order: Right, Left, Up, Down. [1] Due to the discrepancy in the order of button checking, the level skip glitch is possible to perform.
In the 3DS Virtual Console version, the former check was modified to occur in the following order: Right, Left, Up, Down. Since this matches the second check, the glitch is patched and no longer possible to perform.
The DMGWJA-0.946.patch file contains the following fixes:
;NOA96 Map Move Bad [NOA96 Code Fix0] Mode = 1 Address = 0x2242E Fixcode = 0x67 [NOA96 Code Fix0] Mode = 1 Address = 0x22432 Fixcode = 0x6F [NOA96 Code Fix0] Mode = 1 Address = 0x22436 Fixcode = 0x77 [NOA96 Code Fix0] Mode = 1 Address = 0x2243A Fixcode = 0x03 [NOA96 Code Fix0] Mode = 1 Address = 0x2243E Fixcode = 0x00 [NOA96 Code Fix0] Mode = 1 Address = 0x22442 Fixcode = 0x01 [NOA96 Code Fix0] Mode = 1 Address = 0x22446 Fixcode = 0x02
This results in the following changes to ASM code:
Game Boy | 3DS Virtual Console |
---|---|
ROM8:642A FA E2 A7 ld a,(A7E2) ROM8:642D CB 6F bit 5,a ; Left ROM8:642F 20 0C jr nz,643D ROM8:6431 CB 77 bit 6,a ; Up ROM8:6433 20 0C jr nz,6441 ROM8:6435 CB 7F bit 7,a ; Down ROM8:6437 20 0C jr nz,6445 ROM8:6439 3E 00 ld a,00 ROM8:643B 18 0A jr 6447 ROM8:643D 3E 01 ld a,01 ROM8:643F 18 06 jr 6447 ROM8:6441 3E 02 ld a,02 ROM8:6443 18 02 jr 6447 ROM8:6445 3E 03 ld a,03 ROM8:6447 CD 99 5F call 5F99 ; L=01, U=02, D=03, else=00 ROM8:644A C9 ret |
ROM8:642A FA E2 A7 ld a,(A7E2) ROM8:642D CB 67 bit 4,a ; Right ROM8:642F 20 0C jr nz,643D ROM8:6431 CB 6F bit 5,a ; Left ROM8:6433 20 0C jr nz,6441 ROM8:6435 CB 77 bit 6,a ; Up ROM8:6437 20 0C jr nz,6445 ROM8:6439 3E 03 ld a,03 ROM8:643B 18 0A jr 6447 ROM8:643D 3E 00 ld a,00 ROM8:643F 18 06 jr 6447 ROM8:6441 3E 01 ld a,01 ROM8:6443 18 02 jr 6447 ROM8:6445 3E 02 ld a,02 ROM8:6447 CD 99 5F call 5F99 ; R=00, L=01, U=02, else=03 ROM8:644A C9 ret |