Allows for 256 translevels and 255 overworld events. Recent versions of Lunar Magic will allow you to edit these using the overworld editor.
The extension of the level and event ranges are accomplished by moving around mostly overworld-related RAM addresses, and extending the region in RAM that is transferred to and from SRAM. The level tile information table retains its original address at $1EA2, so this patch should be fairly compatible with most other resources out there.
Screenshots:
The main rejection reason: there are missing address remaps, all of them in LM hijacked locations, which break functionality.
A hijack at $03BA50 (seems to be a fixed location but if not, read3($04919A)), which breaks a check regarding re-enterable levels.
Code
code_03BA50:
PHP
REP #$30
LDA $04
PHA
JSR label_03BA82
LDX $04
PLA
STA $04
LDA $7ED000,X
AND #$00FF
TAX
LDA $1EA2,X
AND #$0080
BEQ label_03BA7B
LDA $1EA2,X
AND #$0020
BEQ label_03BA7B
LDA #$00FF
BRA label_03BA7E
label_03BA7B:
LDA $13C1
label_03BA7E:
PLP
CMP #$81
RTL
label_03BA82:
PHP
SEP #$10
REP #$20
LDA $00
PHA
LDA $02
PHA
LDX $0DD6
LDA $1F1F,X
STA $00
LDA $1F21,X
STA $02
TXA
LSR #2
TAX
LDA $00
AND #$000F
STA $04
LDA $00
AND #$0010
ASL #4
ADC $04
STA $04
LDA $02
ASL #4
AND #$00FF
ADC $04
STA $04
LDA $02
AND #$0010
BEQ label_03BACE
LDA $04
CLC
ADC #$0200
STA $04
label_03BACE:
LDA $1F11,X
AND #$00FF
BEQ label_03BADE
LDA $04
CLC
ADC #$0400
STA $04
label_03BADE:
PLA
STA $02
PLA
STA $00
PLP
RTS
The routine at read3($048567), which breaks star roads and pipes.
Code
LDY $0DD6
LDX $1DF6
LDA $128B52,X
PHA
AND #$01FF
STA $1F17,Y
LSR #4
STA $1F1F,Y
LDA $128BA2,X
STA $1F19,Y
LSR #4
STA $1F21,Y
PLA
LSR
XBA
AND #$000F
RTL
The routine at read3($049A36), which breaks red exit tiles.
Code
LDY $0DD6
REP #$30
LDA #$0011
STA $02
LDX #$0055
label_12B3FC:
LDA $1F19,Y
CMP $12B467,X
BNE label_12B44C
LDA $1F17,Y
CMP $12B469,X
BNE label_12B44C
LDA $12B46B,X
AND #$00FF
CMP $13C3
BNE label_12B44C
LDA $12B4C1,X
STA $1F19,Y
LDA $12B4C3,X
STA $1F17,Y
LDA $12B4C5,X
AND #$00FF
STA $13C3
LDA $02
ASL
TAX
LDA $12B51B,X
AND #$00FF
STA $1F21,Y
LDA $12B51C,X
AND #$00FF
STA $1F1F,Y
BRA label_12B455
label_12B44C:
DEC $02
DEX #5
BPL label_12B3FC
label_12B455:
SEP #$30
RTL
There's one unremapped address in the routine at $0FFB20 (or read3($04DBBA)); since that's a bigass routine I'll just say it: LDY $1F11,x in $0FFB4C. This routine seems to be related to exiting a map via a red tile.
This small code snippet at $0FFAF0 (read3($049DFE)).
There's probably more, but the amount of hijacks made to allow the OW to work are a ton so I might have missed one. Besides, all of these are impediments to keep testing comfortably anyway.
The patch doesn't assemble using the latest version of Asar, due to it not having read as alias of read1.
Please add a check that uninstalls the Sprite 19 fix if already installed. The error message is misleading for this one hijack; since it said I was missing one hijack, I thought I needed to install it when it was otherwhise.
Code
if read3($01E762) == $EA
print "Sprite 19 fix detected. Uninstalling!"
org $01E762 : JSL $03BCA0 : BRA $00
org $03BCA0
LDA $009EF0
STA $1F11|!addr
STA $1FB8|!addr
RTL
org $05B15D : STA $1F19|!addr
endif
Since the fix is just a bunch of NOPs too, you can always implement it inside the patch instead.
Code
org $01E762 : NOP #6
org $05B15D : NOP #3
Also minor but you can implement this hex edit
Code
org $05DA1D : db $FF
to disable that dumb code that makes levels with a level number greater than 12E always having No Yoshi intros.
Only compatible with Lunar Magic 2.53. For an untested version supporting Lunar Magic 3.00 and up, click here.
Allows for up to 256 translevels and 255 overworld events. Recent versions of Lunar Magic will allow you to edit these using the overworld editor.
Note that I do not guarantee, nor provide support for, compatibility of this patch with any other patch or tool besides Lunar Magic. Developers can use the included documentation to implement cross compatibility with other resources.
Screenshots:
Even if not a written rule (for now), all patches should be compatible with the latest version of Lunar Magic available at the time of their moderation. Ragey is already working on updating it too, so there's that.
Follow Us On