the cutting room mirror

Wario Land: Super Mario Land 3

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

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

References#


  1. McHazard's GB Wario Land: Super Mario Land 3 "game end glitch" in 01:31.15↩︎