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

Notes:Wario Land: Super Mario Land 3

From The Cutting Room Floor
Jump to navigation Jump to search

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