turn a bunch of addresses into fast rom
bunch of consistency clean ups in hooks
move zsnes to failures
This commit is contained in:
spannerisms
2022-12-30 03:07:15 -05:00
parent 36ca193b75
commit ff88437f8e
36 changed files with 2108 additions and 2133 deletions

View File

@@ -6,25 +6,25 @@ lorom
;================================================================================
;org $00FFC0 ; <- 7FC0 - Bank00.asm : 9173 (db "THE LEGEND OF ZELDA " ; 21 bytes)
;db #$23, $4E
;db $23, $4E
org $00FFD5 ; <- 7FD5 - Bank00.asm : 9175 (db $20 ; rom layout)
db #$30 ; set fast lorom
db $30 ; set fast lorom
;org $00FFD6 ; <- 7FD6 - Bank00.asm : 9176 (db $02 ; cartridge type)
;db #$55 ; enable S-RTC
;db $55 ; enable S-RTC
org $00FFD7 ; <- 7FD7 - Bank00.asm : 9177 (db $0A ; rom size)
db #$0B ; mark rom as 16mbit
db $0B ; mark rom as 16mbit
org $00FFD8 ; <- 7FD8 - Bank00.asm : 9178 (db $03 ; ram size (sram size))
db #$05 ; mark sram as 32k
db $05 ; mark sram as 32k
org $3FFFFF ; <- 1FFFFF
db #$00 ; expand file to 2mb
org $BFFFFF ; <- 1FFFFF
db $00 ; expand file to 2mb
org $1FFFF8 ; <- FFFF8 timestamp rom
db #$20, #$19, #$08, #$31 ; year/month/day
db $20, $19, $08, $31 ; year/month/day
;================================================================================
!ROM_VERSION_LOW ?= 1 ; ROM version (two 16-bit integers)
@@ -57,8 +57,7 @@ incsrc sram.asm
incsrc registers.asm
incsrc vanillalabels.asm
;org $208000 ; bank #$20
org $A08000 ; bank #$A0
org $A08000 ; bank $20
incsrc itemdowngrade.asm
incsrc bugfixes.asm
incsrc darkworldspawn.asm
@@ -97,7 +96,7 @@ incsrc roomloading.asm
incsrc icepalacegraphics.asm
warnpc $A18000
org $1C8000 ; text tables for translation
org $9C8000 ; text tables for translation
incbin "data/i18n_en.bin"
warnpc $1CF356
@@ -154,8 +153,9 @@ incsrc darkroomitems.asm
incsrc fastcredits.asm
incsrc msu.asm
incsrc dungeonmap.asm
if !FEATURE_NEW_TEXT
incsrc textrenderer.asm
incsrc textrenderer.asm
endif
warnpc $A58000
@@ -167,101 +167,102 @@ incsrc utilities.asm
org $A38000
incsrc stats/main.asm
org $308000 ; bank #$30
org $B08000 ; bank $30
incsrc tables.asm
org $348000
org $B48000
incsrc spc.asm
org $318000 ; bank #$31
org $B18000 ; bank $31
GFX_Mire_Bombos:
incbin "data/99ff1_bombos.gfx"
warnpc $318800
warnpc $B18800
org $318800
org $B18800
GFX_Mire_Quake:
incbin "data/99ff1_quake.gfx"
warnpc $319000
warnpc $B19000
org $319000
org $B19000
GFX_TRock_Bombos:
incbin "data/a6fc4_bombos.gfx"
warnpc $319800
warnpc $B19800
org $319800
org $B19800
GFX_TRock_Ether:
incbin "data/a6fc4_ether.gfx"
warnpc $31A000
warnpc $B1A000
org $31A000
org $B1A000
GFX_HUD_Items:
incbin "data/c2807_v4.gfx"
warnpc $31A800
warnpc $B1A800
org $31A800
org $B1A800
warnpc $31B000
warnpc $B1B000
org $31B000
org $B1B000
GFX_HUD_Main:
incbin "data/c2e3e.gfx"
warnpc $31B800
warnpc $B1B800
org $31C000
org $B1C000
IcePalaceFloorGfx:
incbin "data/ice_palace_floor.bin"
warnpc $31C801
warnpc $B1C801
org $31C800
org $B1C800
Damage_Table:
incbin "data/damage_table.bin"
warnpc $31D001
warnpc $B1D001
org $31D000
org $B1D000
FileSelectNewGraphics:
incbin "data/fileselect.chr.gfx"
warnpc $31E001
warnpc $B1E001
org $31E000
org $B1E000
InvertedCastleHole: ;address used by front end. DO NOT MOVE!
incbin "data/sheet73.gfx"
warnpc $31E501
warnpc $B1E501
org $338000
org $B38000
GFX_HUD_Palette:
incbin "data/hudpalette.pal"
warnpc $338041
warnpc $B38041
org $339000
org $B39000
ExpandedTrinexx:
incbin "data/sheet178.gfx"
warnpc $339600
warnpc $B39600
org $339600
org $B39600
BossMapIconGFX:
incbin "data/bossicons.4bpp"
if !FEATURE_NEW_TEXT
org $339C00
NewFont:
incbin "data/newfont.bin"
NewFontInverted:
incbin "data/newfont_inverted.bin"
org $B39C00
NewFont:
incbin "data/newfont.bin"
NewFontInverted:
incbin "data/newfont_inverted.bin"
org $0CD7DF
incbin "data/text_unscramble1.bin"
org $0CE4D5
incbin "data/text_unscramble2.bin"
org $0CD7DF
incbin "data/text_unscramble1.bin"
org $0CE4D5
incbin "data/text_unscramble2.bin"
endif
org $328000
org $B28000
Extra_Text_Table:
incsrc itemtext.asm
incsrc externalhooks.asm
;================================================================================
org $119100 ; PC 0x89100
org $919100 ; PC 0x89100
incbin "data/map_icons.gfx"
warnpc $119401
warnpc $919401
;================================================================================
org $AF8000 ; PC 0x178000
Static_RNG: ; each line below is 512 bytes of rng

View File

@@ -153,7 +153,7 @@ RestoreBgEther:
INX #2 : CPX.b #$10 : BNE -
BRA ++
++
JML $02FF51 ; Bank0E.asm : 3936 vanilla restore routine after loop which RTLs
JML $82FF51 ; Bank0E.asm : 3936 vanilla restore routine after loop which RTLs
;================================================================================
DDMConditionalLightning:
LDA.l DisableFlashing
@@ -161,7 +161,7 @@ DDMConditionalLightning:
BNE +
LDA.w Scrap
LDX.b #$02
JML $07FA7F ; Bank0E.asm : 4738 vanilla loop equivalent to below beginning at LDY #$00
JML $87FA7F ; Bank0E.asm : 4738 vanilla loop equivalent to below beginning at LDY #$00
+
LDA.b Scrap00 : LDX.b #$02 : LDY.b #$00
-
@@ -172,7 +172,7 @@ DDMConditionalLightning:
LDA.w $F523, Y : LDA.l PaletteBuffer+$F0, X
INY #2
INX #2 : CPX.b #$10 : BNE -
JML $07FAAC ; Bank0E.asm : 4754 both branches converge here
JML $87FAAC ; Bank0E.asm : 4754 both branches converge here
;================================================================================
ConditionalGTFlash:
LDA.l DisableFlashing : REP #$20 : BNE +
@@ -222,17 +222,17 @@ LoadElectroPalette:
LDA.w #$0404 : STA.b Scrap0E
LDA.w #$001B : STA.b Scrap02
SEP #$10
LDX.b Scrap0C : LDA.l $1BEBB4, X : AND.w #$00FF : ADC.w #$D630
LDX.b Scrap0C : LDA.l $9BEBB4, X : AND.w #$00FF : ADC.w #$D630
REP #$10 : LDX.w #$01B2 : LDY.w #$0002
JSR ConditionalLoadGearPalette
SEP #$10
LDX.b Scrap0D
LDA.l $1BEBC1, X : AND.w #$00FF : ADC.w #$D648
LDA.l $9BEBC1, X : AND.w #$00FF : ADC.w #$D648
REP #$10 : LDX.w #$01B8 : LDY.w #$0003
JSR ConditionalLoadGearPalette
SEP #$10
LDX.b Scrap0E
LDA.l $1BEC06, X : AND.w #$00FF : ASL A : ADC.w #$D308
LDA.l $9BEC06, X : AND.w #$00FF : ASL A : ADC.w #$D308
REP #$10 : LDX.w #$01E2 : LDY.w #$000E
JSR ConditionalLoadGearPalette
SEP #$30

View File

@@ -119,5 +119,5 @@ HandleOneMindController:
.no_onemind
STZ.b NMIDoneFlag
JML $008034 ; reset frame loop
JML $808034 ; reset frame loop

View File

@@ -255,9 +255,9 @@ endmacro
FastSpriteDecomp:
SEP #$30
LDA.l $00CFC0,X : PHA : PLB ; bank
LDA.l $00D09F,X : XBA ; high
LDA.l $00D17E,X ; low
LDA.l $80CFC0,X : PHA : PLB ; bank
LDA.l $80D09F,X : XBA ; high
LDA.l $80D17E,X ; low
REP #$10
@@ -334,7 +334,6 @@ FastSpriteDecomp:
ASL
ASL
ASL
AND.b #$E0
STA.b DecompTestByte
LDA.b DecompCommand
@@ -395,19 +394,24 @@ FastSpriteDecomp:
STY.b DecompSaveY
LDY.b DecompSize
DEY
.next_word
STA.l DecompBuffer2,X
INX
DEY
BEQ .done_restore_y
INX
DEY
BNE .next_word
.done_restore_y
DEY
DEY
BPL .next_word
INY
BEQ .not_too_far
DEX
.not_too_far
SEP #$20
LDY.b DecompSaveY

View File

@@ -341,7 +341,7 @@ AgahnimAsksAboutPed:
STA.w TextID
.vanilla
JML $05FA8E ; Sprite_ShowMessageMinimal
JML $85FA8E ; Sprite_ShowMessageMinimal
;--------------------------------------------------------------------------------
Main_ShowTextMessage_Alt:
; Are we in text mode? If so then end the routine.
@@ -433,7 +433,7 @@ Sprite_ShowSolicitedMessageIfPlayerFacing_Alt:
; Make sure that the sprite is facing towards the player, otherwise
; talking can't happen. (What sprites actually use this???)
LDA.l $05E1A3, X : PLX : CMP.b LinkDirection : BNE .not_facing_each_other
LDA.l $85E1A3, X : PLX : CMP.b LinkDirection : BNE .not_facing_each_other
PHY
@@ -490,7 +490,7 @@ Sprite_ShowSolicitedMessageIfPlayerFacing_PreserveMessage:
; Make sure that the sprite is facing towards the player, otherwise
; talking can't happen. (What sprites actually use this???)
LDA.l $05E1A3, X : PLX : CMP.b LinkDirection : BNE .not_facing_each_other
LDA.l $85E1A3, X : PLX : CMP.b LinkDirection : BNE .not_facing_each_other
PLA : XBA : PLA

View File

@@ -8,7 +8,7 @@
StoreLastOverworldDoorID:
TXA : INC
STA.l PreviousOverworldDoor
LDA.l $1BBB73, X : STA.w EntranceIndex
LDA.l $9BBB73, X : STA.w EntranceIndex
RTL
;--------------------------------------------------------------------------------

View File

@@ -3,7 +3,7 @@
;--------------------------------------------------------------------------------
DropSafeDungeon:
LDA.w DungeonID : CMP.b #$08 : BEQ +
LDA.l $01C6FC, X : JML Sprite_SpawnFallingItem
LDA.l $81C6FC, X : JML Sprite_SpawnFallingItem
+
RTL
;--------------------------------------------------------------------------------

View File

@@ -2,7 +2,7 @@ NewElderCode:
{
LDA.b OverworldIndex : CMP.b #$1B : BEQ .newCodeContinue
;Restore Jump we can keep the RTL so JML
JML $05F0CD
JML $85F0CD
.newCodeContinue
PHB : PHK : PLB
LDA.b #$07 : STA.w SpriteOAMProp, X ; Palette

View File

@@ -29,7 +29,7 @@ LockAgahnimDoors:
LDA.w #$0001 : RTL ;Keep the door locked
++
SEP #$30
JSL $099B6F ;Add tower break seal
JSL $899B6F ;Add tower break seal
REP #$30
LDA.w #$0001 ;Prevent door from opening that frame otherwise it glitchy
RTL
@@ -142,11 +142,11 @@ JML.l AllowStartFromExitReturn
.doStart
LDA.l $028481, X ;Module_LocationMenu_starting_points
LDA.l $828481, X ;Module_LocationMenu_starting_points
ASL : TAX
LDA.l $02D8D2, X : STA.b RoomIndex
LDA.l $02D8D3, X : STA.b RoomIndex+1
LDA.l $82D8D2, X : STA.b RoomIndex
LDA.l $82D8D3, X : STA.b RoomIndex+1
; Go to pre-overworld mode
LDA.b #$08 : STA.b GameMode
@@ -165,9 +165,9 @@ RTL
CheckHole:
LDX.w #$0024
.nextHoleClassic
LDA.b Scrap00 : CMP.l $1BB800, X
LDA.b Scrap00 : CMP.l $9BB800, X
BNE .wrongMap16Classic
LDA.b OverworldIndex : CMP.l $1BB826, X
LDA.b OverworldIndex : CMP.l $9BB826, X
BEQ .matchedHoleClassic
.wrongMap16Classic
DEX #2 : BPL .nextHoleClassic

View File

@@ -1,4 +1,4 @@
org $298000 ; 0x148000
org $A98000 ; 0x148000
Ext_OnFileCreate: ;x
RTL : RTL : RTL : RTL : RTL
Ext_OnFileLoad: ;x immediately after load

View File

@@ -1,3 +1,18 @@
CheckZSNES:
SEP #$28
LDA.b #$FF
CLC
ADC.b #$FF
CMP.b #$64
REP #$28
BEQ .zsnes
LDA.w #$01FF : TCS ; thing we wrote over - initialize stack
JML ReturnCheckZSNES
.zsnes
JML DontUseZSNES
;===================================================================================================
pushtable
table "data/bsodencode.txt"

View File

@@ -49,10 +49,10 @@ FastCreditsCutsceneScrollY:
FastCreditsCutsceneScroll:
LDA.w $00E2,Y
CMP.l $0EC308,X ; compare to target
CMP.l $8EC308,X ; compare to target
ROL.b Scrap00 ; put carry in here
LDA.l $0EC348,X ; get movement
LDA.l $8EC348,X ; get movement
BPL ++ ; if positive, leave saved carry alone
INC.b Scrap00 ; otherwise, flip it
++ ROR.b Scrap00 ; recover carry

View File

@@ -4,10 +4,10 @@
; Written over and used by OnEnterWater hook.
UnequipCapeQuiet:
LDA.b #$20 : STA.w PoofTimer
STZ.w NoDamage
STZ.b CapeOn
STZ.w LinkZap
LDA.b #$20 : STA.w PoofTimer
STZ.w NoDamage
STZ.b CapeOn
STZ.w LinkZap
RTL
protectff:
@@ -43,7 +43,7 @@ protectff:
BMI .special_overworld
AND.b #$3F
CMP.l $02A4E3,X
CMP.l $82A4E3,X
BEQ ++
.protect

View File

@@ -2,7 +2,7 @@
; Frame Hook
;--------------------------------------------------------------------------------
FrameHookAction:
JSL $0080B5 ; Module_MainRouting
JSL $8080B5 ; Module_MainRouting
JSL CheckMusicLoadRequest
PHP : REP #$30 : PHA
SEP #$20

View File

@@ -81,7 +81,7 @@ GetItemDamageValue:
CPX.b #$3d : BEQ .hookshot
.normal
LDA.l $0db8f1,x ;what we wrote over
LDA.l $8DB8F1,x ;what we wrote over
RTL
.boomerang
LDA.l StunItemAction : AND.b #$01 : BNE .normal

View File

@@ -55,76 +55,76 @@
!FSTILE_Y_TOP = $1D82
!FSTILE_Y_BOTTOM = $1D92
;--------------------------------------------------------------------------------
org $0CDE60 ; <- 65E60
org $8CDE60 ; <- 65E60
FileSelect_CopyFile_Top:
db $62, $A5, $00, $15
dw !FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE
;--------------------------------------------------------------------------------
org $0CDE7A ; <- 65E7A
org $8CDE7A ; <- 65E7A
FileSelect_CopyFile_Bottom:
db $62, $C5, $00, $15
dw !FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE
;--------------------------------------------------------------------------------
org $0CDE94 ; <- 65E94
org $8CDE94 ; <- 65E94
FileSelect_KillFile_Top:
db $63, $25, $00, $19
dw !FSTILE_D_TOP, !FSTILE_E_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_T_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_F_TOP, !FSTILE_I_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_SPACE
org $0CDEB2 ; <- 65EB2
org $8CDEB2 ; <- 65EB2
FileSelect_KillFile_Bottom:
db $63, $45, $00, $19
dw !FSTILE_D_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_T_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_F_BOTTOM, !FSTILE_I_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE
;CopyFile_Header:
org $0CE228 ; <- 66228
org $8CE228 ; <- 66228
dw !FSTILE_BRACKET_OPEN_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_C_TOP, !FSTILE_O_TOP, !FSTILE_P_TOP, !FSTILE_Y_TOP, !FSTILE_SPACE, !FSTILE_F_TOP, !FSTILE_I_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_TOP
org $0CE24A ; <- 6624A
org $8CE24A ; <- 6624A
dw !FSTILE_BRACKET_OPEN_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_C_BOTTOM, !FSTILE_O_BOTTOM, !FSTILE_P_BOTTOM, !FSTILE_Y_BOTTOM, !FSTILE_SPACE, !FSTILE_F_BOTTOM, !FSTILE_I_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_BOTTOM
;CopyFile_Which:
org $0CE2DB ; <- 662DB
org $8CE2DB ; <- 662DB
dw $0D80, $0D61, $0D62, $0D4C, $0D61, $0D86, !FSTILE_SPACE
org $0CE2ED ; <- 662ED
org $8CE2ED ; <- 662ED
dw $0D90, $0D71, $0D72, $0D5C, $0D71, $0D96, !FSTILE_SPACE
;CopyFile_Where:
org $0CE39C ; <- 6639C
org $8CE39C ; <- 6639C
dw $0D80, $0D61, $0D4E, $0D6B, $0D4E, $0D86, !FSTILE_SPACE
org $0CE3AE ; <- 663AE
org $8CE3AE ; <- 663AE
dw $0D90, $0D71, $0D5E, $0D7B, $0D5E, $0D96, !FSTILE_SPACE
;CopyFile_Execute:
org $0CD13A ; <- 6513A
org $8CD13A ; <- 6513A
dw !FSTILE_C_TOP, !FSTILE_SPACE, !FSTILE_O_TOP, !FSTILE_SPACE, !FSTILE_P_TOP, !FSTILE_SPACE, !FSTILE_Y_TOP, !FSTILE_SPACE, !FSTILE_SPACE
org $0CD150 ; <- 65150
org $8CD150 ; <- 65150
dw !FSTILE_C_BOTTOM, !FSTILE_SPACE, !FSTILE_O_BOTTOM, !FSTILE_SPACE, !FSTILE_P_BOTTOM, !FSTILE_SPACE, !FSTILE_Y_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE
;CopyFile_Cancel:
org $0CE29A ; <- 6629A
org $8CE29A ; <- 6629A
dw !FSTILE_C_TOP, !FSTILE_SPACE, !FSTILE_A_TOP, !FSTILE_SPACE, !FSTILE_N_TOP, !FSTILE_SPACE, !FSTILE_C_TOP, !FSTILE_SPACE, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_L_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
org $0CE2BA ; <- 662BA
org $8CE2BA ; <- 662BA
dw !FSTILE_C_BOTTOM, !FSTILE_SPACE, !FSTILE_A_BOTTOM, !FSTILE_SPACE, !FSTILE_N_BOTTOM, !FSTILE_SPACE, !FSTILE_C_BOTTOM, !FSTILE_SPACE, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_L_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
;KillFile_Header:
org $0CE002 ; <- 66002
org $8CE002 ; <- 66002
dw !FSTILE_BRACKET_OPEN_TOP, !FSTILE_SPACE, !FSTILE_D_TOP, !FSTILE_E_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_T_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_F_TOP, !FSTILE_I_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_TOP, !FSTILE_SPACE, !FSTILE_SPACE
org $0CE028 ; <- 66028
org $8CE028 ; <- 66028
dw !FSTILE_BRACKET_OPEN_BOTTOM, !FSTILE_SPACE, !FSTILE_D_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_T_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_F_BOTTOM, !FSTILE_I_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE
;KillFile_Which:
org $0CE04E ; <- 6604E
org $8CE04E ; <- 6604E
dw !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
org $0CE084 ; <- 66084
org $8CE084 ; <- 66084
dw !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
;KillFile_Execute:
org $0CD328 ; <- 65328
org $8CD328 ; <- 65328
dw !FSTILE_D_TOP, !FSTILE_E_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_T_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
org $0CD344 ; <- 65344
org $8CD344 ; <- 65344
dw !FSTILE_D_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_T_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
;KillFile_Cancel:
org $0CE0BA ; <- 660BA
org $8CE0BA ; <- 660BA
dw !FSTILE_C_TOP, !FSTILE_A_TOP, !FSTILE_N_TOP, !FSTILE_C_TOP, !FSTILE_E_TOP, !FSTILE_L_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
org $0CE0DA ; <- 660DA
org $8CE0DA ; <- 660DA
dw !FSTILE_C_BOTTOM, !FSTILE_A_BOTTOM, !FSTILE_N_BOTTOM, !FSTILE_C_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE

View File

@@ -19,7 +19,7 @@ HeartPieceGet:
.notHeart
.giveItem
JSL.l $0791B3 ; Player_HaltDashAttackLong
JSL.l $8791B3 ; Player_HaltDashAttackLong
STZ.w ItemReceiptMethod ; 0 = Receiving item from an NPC or message
JSL.l Link_ReceiveItem
@@ -155,7 +155,7 @@ LoadHeartPieceRoomValue:
RTL
;--------------------------------------------------------------------------------
HPItemReset:
JSL $09AD58 ; GiveRupeeGift - thing we wrote over
JSL $89AD58 ; GiveRupeeGift - thing we wrote over
PHA : LDA.b #$01 : STA.l RedrawFlag : PLA
RTL
;--------------------------------------------------------------------------------
@@ -378,9 +378,9 @@ RTL
;#13 - Ganon's Tower - Agahnim II
;#0 - Pyramid of Power - Ganon
;--------------------------------------------------------------------------------
;JSL $06DD40 ; DashKey_Draw
;JSL $06DBF8 ; Sprite_PrepAndDrawSingleLargeLong
;JSL $06DC00 ; Sprite_PrepAndDrawSingleSmallLong ; draw first cell correctly
;JSL $00D51B ; GetAnimatedSpriteTile
;JSL $00D52D ; GetAnimatedSpriteTile.variable
;JSL $86DD40 ; DashKey_Draw
;JSL $86DBF8 ; Sprite_PrepAndDrawSingleLargeLong
;JSL $86DC00 ; Sprite_PrepAndDrawSingleSmallLong ; draw first cell correctly
;JSL $80D51B ; GetAnimatedSpriteTile
;JSL $80D52D ; GetAnimatedSpriteTile.variable
;================================================================================

1179
hooks.asm

File diff suppressed because it is too large Load Diff

84
hud.asm
View File

@@ -1,47 +1,47 @@
;org $0DFE97 ; <- 6FE97 - headsup_display.asm:1009 (.hud_tilemap)
; DO NOT EXCEED 0x150
HUD_TileMap:
dw $207F, $207F, $2850, $A856
dw $2852, $285B, $285B, $285C
;dw $207F, $3CA8, $207F, $207F, $207F
dw $207F, $207F, $2850, $A856
dw $2852, $285B, $285B, $285C
;dw $207F, $3CA8, $207F, $207F, $207F
dw $207F, $3C02, $3C03, $207F, $207F ; normal mode
;dw $3C02, $3C03, $207F, $207F, $207F ; rupee arrows
dw $2C88, $2C89, $207F, $20A7
dw $20A9, $207F, $2871 ;, $207F
dw $207F, $207F, $288B, $288F
dw $24AB, $24AC, $688F, $688B
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $2854, $2871
dw $2858, $207F, $207F, $285D
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $2854, $304E
dw $2858, $207F, $207F, $285D
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $2854, $305E
dw $2859, $A85B, $A85B, $A85C
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $2854, $305E
dw $6854, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $A850, $2856
dw $E850
dw $2C88, $2C89, $207F, $20A7
dw $20A9, $207F, $2871 ;, $207F
dw $207F, $207F, $288B, $288F
dw $24AB, $24AC, $688F, $688B
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $2854, $2871
dw $2858, $207F, $207F, $285D
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $2854, $304E
dw $2858, $207F, $207F, $285D
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $2854, $305E
dw $2859, $A85B, $A85B, $A85C
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $2854, $305E
dw $6854, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $207F, $207F
dw $207F, $207F, $A850, $2856
dw $E850

View File

@@ -71,7 +71,7 @@ Init_PostRAMClear:
JSL DecompressAllItemGraphics
JML $00D463 ; The original target of the jump table that we hijacked
JML $80D463 ; The original target of the jump table that we hijacked
;---------------------------------------------------------------------------------------------------

View File

@@ -14,30 +14,30 @@
fillword $0000 ; Zero out the table
fill $500 ;
org $30B000 ; PC 0x183000
org $B0B000 ; PC 0x183000
InitSRAMTable:
InitRoomDataWRAM:
org $30B060 ; PC 0x183060
org $B0B060 ; PC 0x183060
InitATAltarRoom: dw $0000 ; aga curtains
org $30B092 ; PC 0x183092
org $B0B092 ; PC 0x183092
InitSWBackEntryRoom: dw $0000 ; skull woods curtains
org $30B20C
org $B0B20C
dw $F000, $F000 ; Pre-open kak bomb hut & brewery
org $30B280 ; PC 0x183280 - 0x1832FF
org $B0B280 ; PC 0x183280 - 0x1832FF
InitOverworldEvents:
org $30B282 ; PC 0x183282 - Lumberjacks
org $B0B282 ; PC 0x183282 - Lumberjacks
InitLumberjackOW: db $00
org $30B29B ; PC 0x18329B - Open castle gate
org $B0B29B ; PC 0x18329B - Open castle gate
InitHyruleCastleOW: db $20
org $30B2DB ; PC 0x1832DB - Pyramid hole
org $B0B2DB ; PC 0x1832DB - Pyramid hole
InitPyramidOW: db $00
org $30B2C3 ; PC 0x1832C3 - GT
org $B0B2C3 ; PC 0x1832C3 - GT
InitDDMWestOW: db $00
org $30B340 ; PC 0x183340
org $B0B340 ; PC 0x183340
StartingEquipment:
StartingBow: skip 1 ; PC 0x183340
StartingBoomerang: skip 1 ; PC 0x183341
@@ -129,13 +129,13 @@ InitDroppedFollowerIndoors: skip 1 ; PC 0x1833D1
InitDroppedFollowerLayer: skip 1 ; PC 0x1833D2
InitFollowerDropped: skip 1 ; PC 0x1833D3
org $30B3D9 ; PC 0x1833D9 - 0x1833F0
org $B0B3D9 ; PC 0x1833D9 - 0x1833F0
StaticFileName: ; The validity value ($55AA) must be written manually on SRAM init at $7003E1
dw $0181, $0162, $0168, $018C
dw $0166, $014E, $0162, $018C
dw $0165, $0162, $0167, $018C
org $30B401 ; PC 0x183401
org $B0B401 ; PC 0x183401
InitDeathCounter:
dw $FFFF
@@ -147,29 +147,29 @@ dw $FFFF
; excluding ~28 bytes (File name, validity value, and checksum.)
;--------------------------------------------------------------------------------
org $30B414 ; PC 0x183414-0x183416
org $B0B414 ; PC 0x183414-0x183416
InitMapOverlay: dw $0000
org $30B417 ; PC 0x183417
org $B0B417 ; PC 0x183417
InitHighestSword: db $00
org $30B414 ; PC 0x183418-0x183419
org $B0B414 ; PC 0x183418-0x183419
InitGoalCounter: dw $0000
org $30B422 ; PC 0x183422
org $B0B422 ; PC 0x183422
InitHighestShield: db $00
org $30B428 ; PC 0x183428
org $B0B428 ; PC 0x183428
InitMapsCompasses: db $00
org $30B429 ; PC 0x183429
org $B0B429 ; PC 0x183429
InitPendantCounter: db $00
org $30B454 ; PC 0x183454-0x183457
org $B0B454 ; PC 0x183454-0x183457
InitChallengeTimer: dw $0000, $0000
org $30B46E ; PC 0x18346E
org $B0B46E ; PC 0x18346E
InitHighestMail: db $00
org $30B471 ; PC 0x183471
org $B0B471 ; PC 0x183471
InitCrystalCounter: db $00

View File

@@ -1,4 +1,4 @@
org $328000
org $B28000
; You have found
; the map of
Notice_MapOf:

View File

@@ -14,5 +14,5 @@ MaidenCrystalScript:
LDA.l CrystalsField : AND.b #$7F : CMP.b #$7F : BNE + ; check if we have all crystals
LDA.b #$08 : STA.l MapIcons ; Update the map icon to just be Ganon's Tower
+
JML.l $1ECF35 ; <- F4F35 - sprite_crystal_maiden.asm : 426
JML.l $9ECF35 ; <- F4F35 - sprite_crystal_maiden.asm : 426
;--------------------------------------------------------------------------------

View File

@@ -103,7 +103,7 @@ Overworld_FinishMirrorWarp:
LDA.w #$0000 : STA.l FadeTimer : STA.l FadeDirection
SEP #$20
JSL $00D7C8
JSL $80D7C8
LDA.b #$80 : STA.b HDMAENQ
LDX.b #$04 ; bunny theme
@@ -245,10 +245,10 @@ RTL
;
; On entry, A = $8A (overworld area being loaded)
Overworld_MosaicDarkWorldChecks:
CMP.b #$40 : beq .checkCrystals
CMP.b #$42 : beq .checkCrystals
CMP.b #$50 : beq .checkCrystals
CMP.b #$51 : bne .doFade
CMP.b #$40 : BEQ .checkCrystals
CMP.b #$42 : BEQ .checkCrystals
CMP.b #$50 : BEQ .checkCrystals
CMP.b #$51 : BNE .doFade
.checkCrystals
LDA.l CrystalsField : CMP.b #$7F : BEQ .done

View File

@@ -55,7 +55,7 @@ ItemCheck_TreeKid2:
RTL
ItemCheck_TreeKid3:
JSL $0DD030 ; FluteAardvark_Draw - thing we wrote over
JSL $8DD030 ; FluteAardvark_Draw - thing we wrote over
LDA.l NpcFlags : AND.b #$08
BNE .done
@@ -176,7 +176,7 @@ RTL
; Randomize Zora King
;--------------------------------------------------------------------------------
LoadZoraKingItemGFX:
LDA.l $1DE1C3 ; location randomizer writes zora item to
LDA.l $9DE1C3 ; location randomizer writes zora item to
JML.l PrepDynamicTile
;--------------------------------------------------------------------------------
JumpToSplashItemTarget:
@@ -188,17 +188,17 @@ JumpToSplashItemTarget:
; Randomize Catfish
;--------------------------------------------------------------------------------
LoadCatfishItemGFX:
LDA.l $1DE185 ; location randomizer writes catfish item to
LDA.l $9DE185 ; location randomizer writes catfish item to
JML PrepDynamicTile
;--------------------------------------------------------------------------------
DrawThrownItem:
LDA.b OverworldIndex : CMP.b #$81 : BNE .catfish
.zora
LDA.b #$01 : STA.l RedrawFlag
LDA.l $1DE1C3 ; location randomizer writes zora item to
LDA.l $9DE1C3 ; location randomizer writes zora item to
BRA .draw
.catfish
LDA.l $1DE185 ; location randomizer writes catfish item to
LDA.l $9DE185 ; location randomizer writes catfish item to
.draw
JML DrawDynamicTile
;--------------------------------------------------------------------------------

View File

@@ -1,7 +1,7 @@
Module_Password:
LDA.b GameSubMode
JSL.l UseImplicitRegIndexedLongJumpTable
JSL.l JumpTableLong
dl Password_BeginInit ; 0
dl Password_EndInit ; 1

View File

@@ -35,9 +35,8 @@ RTL
RTL
;--------------------------------------------------------------------------------
FixChestCounterForChestGame:
JSL.l DecrementItemCounter
JSL.l $0DBA71
RTL
JSL DecrementItemCounter
JML $8DBA71
;--------------------------------------------------------------------------------
RNG_Lanmolas1:
LDA.b #$00 : BRA _rng_done
@@ -129,20 +128,20 @@ InitRNGPointerTable:
PLP : PLX
RTL
.rngDefaults
dw #$0000 ; 00 = Lanmolas 1
dw #$0040 ; 01 = Moldorm 1
dw #$0080 ; 02 = Agahnim 1
dw #$00C0 ; 03 = Helmasaur
dw #$0100 ; 04 = Arrghus
dw #$0140 ; 05 = Mothula
dw #$0180 ; 06 = Kholdstare
dw #$01C0 ; 07 = Vitreous
dw #$0200 ; 08 = Trinexx
dw #$0240 ; 09 = Lanmolas 2
dw #$0280 ; 10 = Moldorm 2
dw #$02C0 ; 11 = Agahnim 2
dw #$0300 ; 12 = Agahnim 2 Phantoms
dw #$0340 ; 13 = Ganon
dw #$0380 ; 14 = Ganon Extra Warp
dw #$03C0 ; 15 = Standard Escape Enemy Drops
dw $0000 ; 00 = Lanmolas 1
dw $0040 ; 01 = Moldorm 1
dw $0080 ; 02 = Agahnim 1
dw $00C0 ; 03 = Helmasaur
dw $0100 ; 04 = Arrghus
dw $0140 ; 05 = Mothula
dw $0180 ; 06 = Kholdstare
dw $01C0 ; 07 = Vitreous
dw $0200 ; 08 = Trinexx
dw $0240 ; 09 = Lanmolas 2
dw $0280 ; 10 = Moldorm 2
dw $02C0 ; 11 = Agahnim 2
dw $0300 ; 12 = Agahnim 2 Phantoms
dw $0340 ; 13 = Ganon
dw $0380 ; 14 = Ganon Extra Warp
dw $03C0 ; 15 = Standard Escape Enemy Drops
;--------------------------------------------------------------------------------

View File

@@ -7,7 +7,7 @@ LoadRoomHook:
LDX.b RoomIndex ; Room ID
LDA.l RoomCallbackTable, X
SEP #$10 ; 8 bit XY
JSL UseImplicitRegIndexedLongJumpTable
JSL JumpTableLong
; Callback routines:
dl NoCallback ; 00
dl IcePalaceBombosSE ; 01

View File

@@ -332,7 +332,7 @@ Shopkepeer_CallOriginal:
LDA.b #ShopkeeperJumpTable>>8 : PHA
LDA.b #ShopkeeperJumpTable : PHA
LDA.w SpriteItemType, X
JML.l UseImplicitRegIndexedLocalJumpTable
JML.l JumpTableLocal
;--------------------------------------------------------------------------------
Sprite_ShopKeeper:

View File

@@ -2,23 +2,23 @@ org $008A01 ; 0xA01 - Bank00.asm (LDA.b #$10 : STA $4304 : STA $4314 : STA $4324
LDA.b PlayerSpriteBank
org $1BEDF9
JSL SpriteSwap_Palette_ArmorAndGloves ;4bytes
RTL ;1byte
NOP #$01
JSL SpriteSwap_Palette_ArmorAndGloves ; 4bytes
RTL ; 1byte
NOP
org $1BEE1B
JSL SpriteSwap_Palette_ArmorAndGloves_part_two
RTL
!BANK_BASE = $29
!BANK_BASE = $A9
org $BF8000
SwapSpriteIfNecessary:
PHP
SEP #$20 ; set 8-bit accumulator
LDA.l SpriteSwapper : BEQ + : !ADD #!BANK_BASE : CMP.b PlayerSpriteBank : BEQ +
LDA.l SpriteSwapper : BEQ + : CLC : ADC.b #!BANK_BASE : CMP.b PlayerSpriteBank : BEQ +
STA.b PlayerSpriteBank
STZ.w SkipOAM ; Set Normal Sprite NMI
STZ.w SkipOAM ; Set Normal Sprite NMI
JSL.l SpriteSwap_Palette_ArmorAndGloves_part_two
+
PLP
@@ -26,57 +26,57 @@ RTL
SpriteSwap_Palette_ArmorAndGloves:
{
;DEDF9
LDA.l SpriteSwapper : BNE .continue
LDA.b #$10 : STA.b PlayerSpriteBank ; Load Original Sprite Location
REP #$21
LDA.l ArmorEquipment
JSL $1BEDFF ; Read Original Palette Code
RTL
.part_two
SEP #$30
LDA.l SpriteSwapper : BNE .continue
REP #$30
LDA.l GloveEquipment
JSL $1BEE21 ; Read Original Palette Code
RTL
; DEDF9
LDA.l SpriteSwapper : BNE .continue
LDA.b #$10 : STA.b PlayerSpriteBank ; Load Original Sprite Location
REP #$21
LDA.l ArmorEquipment
JSL $9BEDFF ; Read Original Palette Code
RTL
.part_two
SEP #$30
LDA.l SpriteSwapper : BNE .continue
REP #$30
LDA.l GloveEquipment
JSL $9BEE21 ; Read Original Palette Code
RTL
.continue
.continue
PHX : PHY : PHA
; Load armor palette
PHB : PHK : PLB
REP #$20 ; set 16-bit accumulator
; Check what Link's armor value is.
LDA.l ArmorEquipment : AND.w #$00FF : TAX
LDA.l $1BEC06, X : AND.w #$00FF : ASL A : ADC.w #$F000 : STA.b Scrap00
;replace D308 by 7000 and search
REP #$10 ; set 16-bit index registers
LDA.w #$01E2 ; Target SP-7 (sprite palette 6)
LDX.w #$000E ; Palette has 15 colors
TXY : TAX
LDA.b PlayerSpriteBank : AND.w #$00FF : STA.b Scrap02
PHX : PHY : PHA
; Load armor palette
PHB : PHK : PLB
REP #$20 ; set 16-bit accumulator
; Check what Link's armor value is.
LDA.l ArmorEquipment : AND.w #$00FF : TAX
LDA.l $9BEC06, X : AND.w #$00FF : ASL A : ADC.w #$F000 : STA.b Scrap00
; replace D308 by 7000 and search
REP #$10 ; set 16-bit index registers
LDA.w #$01E2 ; Target SP-7 (sprite palette 6)
LDX.w #$000E ; Palette has 15 colors
TXY : TAX
LDA.b PlayerSpriteBank : AND.w #$00FF : STA.b Scrap02
.loop
LDA.b [Scrap00] : STA.l PaletteBufferAux, X : STA.l PaletteBuffer, X
INC.b Scrap00 : INC.b Scrap00
INX #2
DEY : BPL .loop
LDA.b [Scrap00] : STA.l PaletteBufferAux, X : STA.l PaletteBuffer, X
SEP #$30
PLB
INC.b NMICGRAM
PLA : PLY : PLX
RTL
INC.b Scrap00 : INC.b Scrap00
INX #2
DEY : BPL .loop
SEP #$30
PLB
INC.b NMICGRAM
PLA : PLY : PLX
RTL
}

View File

@@ -33,7 +33,7 @@ DecrementSaveCounter:
RTL
;--------------------------------------------------------------------------------
DungeonHoleWarpTransition:
LDA.l $01C31F, X
LDA.l $81C31F, X
BRA StatTransitionCounter
DungeonHoleEntranceTransition:
JSL EnableForceBlank

View File

@@ -5,7 +5,7 @@ lorom
!BLT = "BCC"
!BGE = "BCS"
org $238000
org $A38000
incsrc stats/credits.asm
FontGfx:
@@ -41,8 +41,8 @@ PreparePointer:
LDY.w #$0000
RTL
; Regular stat: XXXX X00L LLLL LLLL BBBB SSSS CCC- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA
; Time stat: XXXX X01L LLLL LLLL ---- ---- ---- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA
; Regular stat: XXXX X00L LLLL LLLL BBBB SSSS CCC- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA
; Time stat: XXXX X01L LLLL LLLL ---- ---- ---- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA
; End of data: 1111 1111 1111 1111
; X X offset (measured in 8x8 tiles)
@@ -58,55 +58,55 @@ RTL
; A Memory Address
ValueCaps:
dw 0
dw 9
dw 99
dw 999
dw 9999
dw 9999 ; TODO - 5 digits need to be fixed at a later date
dw 0
dw 9
dw 99
dw 999
dw 9999
dw 9999 ; TODO - 5 digits need to be fixed at a later date
BitMasks:
dw $FFFF
dw $0001
dw $0003
dw $0007
dw $000F
dw $001F
dw $003F
dw $007F
dw $00FF
dw $01FF
dw $03FF
dw $07FF
dw $0FFF
dw $1FFF
dw $3FFF
dw $7FFF
dw $FFFF
dw $0001
dw $0003
dw $0007
dw $000F
dw $001F
dw $003F
dw $007F
dw $00FF
dw $01FF
dw $03FF
dw $07FF
dw $0FFF
dw $1FFF
dw $3FFF
dw $7FFF
macro StripeStart(xPos, length)
LDA.b $C8
CLC
ADC.w #<xPos>
XBA
STA.w $1002,x
LDA.w #<length>*2-1
XBA
LDA.w #$0500
STA.w $1004,x
LDA.b $C8
CLC
ADC.w #<xPos>
XBA
STA.w $1002,x
LDA.w #<length>*2-1
XBA
LDA.w #$0500
STA.w $1004,x
endmacro
macro StripeTile()
STA.w $1006,x
INX
INX
STA.w $1006,x
INX
INX
endmacro
macro StripeEnd()
INX
INX
INX
INX
INX
INX
INX
INX
endmacro
HexToDecStats:
@@ -140,52 +140,52 @@ HexToDecStats:
RTL
LastHexDigit:
TYA
AND.w #$000F
PHA
TYA
LSR #4
TAY
CLC
LDA.b StatsBottom
BNE +
; Upper half
PLA
ADC #$3D40
RTS
+ ; Lower half
PLA
ADC #$3D50
RTS
FindLine:
LDY.w #$0000
TYA
AND.w #$000F
PHA
TYA
LSR #4
TAY
CLC
LDA.b StatsBottom
BNE +
; Upper half
PLA
ADC #$3D40
RTS
+ ; Lower half
PLA
ADC #$3D50
RTS
FindLine:
LDY.w #$0000
- LDA.w CreditsStats,y
STZ.b StatsBottom
CMP #$FFFF
BEQ .noLine
XBA
AND.w #$01FF
CMP.b LineNumber
BEQ .lineFound
INC
INC.b StatsBottom
CMP.b LineNumber
BEQ .lineFound
INY #8
BRA -
- LDA.w CreditsStats,y
STZ.b StatsBottom
CMP #$FFFF
BEQ .noLine
XBA
AND.w #$01FF
CMP.b LineNumber
BEQ .lineFound
INC
INC.b StatsBottom
CMP.b LineNumber
BEQ .lineFound
INY #8
BRA -
.lineFound
SEC
RTS
SEC
RTS
.noLine
CLC
RTS
CLC
RTS
!FRAMES_PER_SECOND = 60
!FRAMES_PER_MINUTE = 60*60
@@ -193,20 +193,20 @@ FindLine:
!MAX_FRAME_COUNT = 59*60+59*60+59*60+99
macro CountUnits(framesPerUnit, unitCounter)
STZ.b <unitCounter>
STZ.b <unitCounter>
?loop:
LDA.b ValueLow
SEC
SBC.w #<framesPerUnit>
STA.b Temp
LDA.b ValueHigh
SBC.w #<framesPerUnit>>>16
BCC ?end
STA.b ValueHigh
LDA.b Temp
STA.b ValueLow
INC.b <unitCounter>
BRA ?loop
LDA.b ValueLow
SEC
SBC.w #<framesPerUnit>
STA.b Temp
LDA.b ValueHigh
SBC.w #<framesPerUnit>>>16
BCC ?end
STA.b ValueHigh
LDA.b Temp
STA.b ValueLow
INC.b <unitCounter>
BRA ?loop
?end:
endmacro
@@ -215,342 +215,342 @@ endmacro
BlankCreditsTile = $883D
RenderCreditsStatCounter:
PHB
PHK
PLB
JSR FindLine
BCS +
JMP .endStats
+
; XXXX X00L LLLL LLLL BBBB SSSS CCC- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA
; == Determine stat type ==
LDA.w CreditsStats,y ; LLLL LLLL XXXX XTTL
LSR
AND.w #$0003 ; TT
CMP.w #$0000
BEQ .normalStat
JMP .timeStat
PHB
PHK
PLB
JSR FindLine
BCS +
JMP .endStats
+
; XXXX X00L LLLL LLLL BBBB SSSS CCC- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA
; == Determine stat type ==
LDA.w CreditsStats,y ; LLLL LLLL XXXX XTTL
LSR
AND.w #$0003 ; TT
CMP.w #$0000
BEQ .normalStat
JMP .timeStat
.normalStat
; == Write Stripe header (VRAM address, i.e. tile coordinates) ==
LDA.w CreditsStats,y ; LLLL LLLL XXXX XTTL
LSR #3
AND.w #$001F ; X XXXX
CLC
ADC.w $C8
XBA
STA.w $1002,x
; == Write Stripe header (Length of data) ==
LDA.w #4*2-1 ; 4 tiles = 8 bytes
XBA
STA.w $1004,x
PHX
; == Load tile base (upper or lower half of white two-line zero) ==
LDA.b StatsBottom
BNE +
LDA.w #$3D40
BRA ++
+ LDA.w #$3D50
++ STA.b Temp
; == Write Stripe header (VRAM address, i.e. tile coordinates) ==
LDA.w CreditsStats,y ; LLLL LLLL XXXX XTTL
LSR #3
AND.w #$001F ; X XXXX
CLC
ADC.w $C8
XBA
STA.w $1002,x
; == Load the actual stat word ==
LDA.w CreditsStats+5,y
STA.b StatsPtr
LDA.w CreditsStats+6,y
STA.b StatsPtr+1
LDA.b [StatsPtr]
STA.b ValueLow
; == Shift value ==
LDA.w CreditsStats+2,y; CCC- ---- BBBB SSSS
AND.w #$000F ; SSSS
BEQ +
TAX
LDA.b ValueLow
- LSR
DEX
BNE -
STA.b ValueLow
+
; == Mask value ==
LDA.w CreditsStats+2,y; CCC- ---- BBBB SSSS
;LSR #4
;AND.w #$000F ; BBBB
; == Write Stripe header (Length of data) ==
LDA.w #4*2-1 ; 4 tiles = 8 bytes
XBA
STA.w $1004,x
PHX
; == Load tile base (upper or lower half of white two-line zero) ==
LDA.b StatsBottom
BNE +
LDA.w #$3D40
BRA ++
+ LDA.w #$3D50
++ STA.b Temp
; == Load the actual stat word ==
LDA.w CreditsStats+5,y
STA.b StatsPtr
LDA.w CreditsStats+6,y
STA.b StatsPtr+1
LDA.b [StatsPtr]
STA.b ValueLow
; == Shift value ==
LDA.w CreditsStats+2,y; CCC- ---- BBBB SSSS
AND.w #$000F ; SSSS
BEQ +
TAX
LDA.b ValueLow
- LSR
DEX
BNE -
STA.b ValueLow
+
; == Mask value ==
LDA.w CreditsStats+2,y; CCC- ---- BBBB SSSS
;LSR #4
;AND.w #$000F ; BBBB
LSR #3
AND.w #$001E
TAX
LDA.l BitMasks,x
AND.b ValueLow
STA.b ValueLow
; == Cap value ==
LDA.w CreditsStats+3,y; ---- ---- CCC- ----
LSR #5
AND.w #$0007 ; CCC
BEQ +
ASL : TAX
LDA.l ValueCaps,x
CMP.b ValueLow
!BGE +
STA.b ValueLow
+
; == Display value ==
LDA.b ValueLow
JSL HexToDecStats
PLX
STZ.b RemoveZero
LDA.l $7F5004
AND.w #$00FF
CMP.b RemoveZero
BNE +
LDA.w #BlankCreditsTile
BRA ++
+ DEC.b RemoveZero
CLC
ADC.b Temp
++ %StripeTile()
LDA.l $7F5005
AND.w #$00FF
CMP.b RemoveZero
BNE +
LDA.w #BlankCreditsTile
BRA ++
+ DEC.b RemoveZero
CLC
ADC.b Temp
++ %StripeTile()
LDA.l $7F5006
AND.w #$00FF
CMP.b RemoveZero
BNE +
LDA.w #BlankCreditsTile
BRA ++
+ DEC.b RemoveZero
CLC
ADC.b Temp
++ %StripeTile()
LDA.l $7F5007
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
%StripeEnd()
TAX
LDA.l BitMasks,x
AND.b ValueLow
STA.b ValueLow
; == Cap value ==
LDA.w CreditsStats+3,y; ---- ---- CCC- ----
LSR #5
AND.w #$0007 ; CCC
BEQ +
ASL : TAX
LDA.l ValueCaps,x
CMP.b ValueLow
!BGE +
STA.b ValueLow
+
; == Display value ==
LDA.b ValueLow
JSL HexToDecStats
PLX
STZ.b RemoveZero
LDA.l $7F5004
AND.w #$00FF
CMP.b RemoveZero
BNE +
LDA.w #BlankCreditsTile
BRA ++
+ DEC.b RemoveZero
CLC
ADC.b Temp
++ %StripeTile()
LDA.l $7F5005
AND.w #$00FF
CMP.b RemoveZero
BNE +
LDA.w #BlankCreditsTile
BRA ++
+ DEC.b RemoveZero
CLC
ADC.b Temp
++ %StripeTile()
LDA.l $7F5006
AND.w #$00FF
CMP.b RemoveZero
BNE +
LDA.w #BlankCreditsTile
BRA ++
+ DEC.b RemoveZero
CLC
ADC.b Temp
++ %StripeTile()
LDA.l $7F5007
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
%StripeEnd()
.endStats
PLB
RTL
PLB
RTL
.timeStat
; Output format: HH:MM:SS.FF
; == Write Stripe header (VRAM address, i.e. tile coordinates) ==
LDA.w CreditsStats,y ; LLLL LLLL XXXX XTTL
LSR #3
AND.w #$001F ; X XXXX
CLC
ADC.b $C8
XBA
STA.w $1002,x
; == Write Stripe header (Length of data) ==
LDA.w #11*2-1 ; 11 tiles = 22 bytes
XBA
STA.w $1004,x
PHX
; == Load the actual stat words ==
LDA.w CreditsStats+5,y
STA.b StatsPtr
LDA.w CreditsStats+6,y
STA.b StatsPtr+1
LDA.b [StatsPtr]
STA.b ValueLow
INC.b StatsPtr
INC.b StatsPtr
LDA.b [StatsPtr]
STA.b ValueHigh
CMP.w #!MAX_FRAME_COUNT>>16+1
!BGE ++
; == Convert total frames into hours, minutes, seconds and frames ==
%CountUnits(!FRAMES_PER_HOUR, Hours)
%CountUnits(!FRAMES_PER_MINUTE, Minutes)
%CountUnits(!FRAMES_PER_SECOND, Seconds)
; == Cap at 99:59:59.59 ==
LDA.b Hours
CMP.w #100
!BLT +
++ LDA.w #99
STA.b Hours
LDA.w #59
STA.b Minutes
STA.b Seconds
STA.b ValueLow
; Output format: HH:MM:SS.FF
; == Write Stripe header (VRAM address, i.e. tile coordinates) ==
LDA.w CreditsStats,y ; LLLL LLLL XXXX XTTL
LSR #3
AND.w #$001F ; X XXXX
CLC
ADC.b $C8
XBA
STA.w $1002,x
; == Write Stripe header (Length of data) ==
LDA.w #11*2-1 ; 11 tiles = 22 bytes
XBA
STA.w $1004,x
PHX
; == Load the actual stat words ==
LDA.w CreditsStats+5,y
STA.b StatsPtr
LDA.w CreditsStats+6,y
STA.b StatsPtr+1
LDA.b [StatsPtr]
STA.b ValueLow
INC.b StatsPtr
INC.b StatsPtr
LDA.b [StatsPtr]
STA.b ValueHigh
CMP.w #!MAX_FRAME_COUNT>>16+1
!BGE ++
; == Convert total frames into hours, minutes, seconds and frames ==
%CountUnits(!FRAMES_PER_HOUR, Hours)
%CountUnits(!FRAMES_PER_MINUTE, Minutes)
%CountUnits(!FRAMES_PER_SECOND, Seconds)
; == Cap at 99:59:59.59 ==
LDA.b Hours
CMP.w #100
!BLT +
++ LDA.w #99
STA.b Hours
LDA.w #59
STA.b Minutes
STA.b Seconds
STA.b ValueLow
+
; == Load tile base (upper or lower half of white two-line zero) ==
LDA.b StatsBottom
BNE +
LDA.w #$3D40
BRA ++
+ LDA.w #$3D50
++ STA.b Temp
PLX
; == Display value ==
LDA.b Hours
JSL HexToDecStats
LDA.l $7F5006
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
LDA.l $7F5007
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
LDA.w #!ColonOffset
CLC
ADC.b Temp
%StripeTile()
LDA.b Minutes
JSL HexToDecStats
LDA.l $7F5006
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
LDA.l $7F5007
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
LDA.w #!ColonOffset
CLC
ADC.b Temp
%StripeTile()
LDA.b Seconds
JSL HexToDecStats
LDA.l $7F5006
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
LDA.l $7F5007
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
LDA.w #!PeriodOffset
CLC
ADC.b Temp
%StripeTile()
LDA.b ValueLow
JSL HexToDecStats
LDA.l $7F5006
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
LDA.l $7F5007
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
%StripeEnd()
JMP .endStats
; == Load tile base (upper or lower half of white two-line zero) ==
LDA.b StatsBottom
BNE +
LDA.w #$3D40
BRA ++
+ LDA.w #$3D50
++ STA.b Temp
PLX
; == Display value ==
LDA.b Hours
JSL HexToDecStats
LDA.l $7F5006
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
LDA.l $7F5007
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
LDA.w #!ColonOffset
CLC
ADC.b Temp
%StripeTile()
LDA.b Minutes
JSL HexToDecStats
LDA.l $7F5006
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
LDA.l $7F5007
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
LDA.w #!ColonOffset
CLC
ADC.b Temp
%StripeTile()
LDA.b Seconds
JSL HexToDecStats
LDA.l $7F5006
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
LDA.l $7F5007
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
LDA.w #!PeriodOffset
CLC
ADC.b Temp
%StripeTile()
LDA.b ValueLow
JSL HexToDecStats
LDA.l $7F5006
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
LDA.l $7F5007
AND.w #$00FF
CLC
ADC.b Temp
%StripeTile()
%StripeEnd()
JMP .endStats
RenderLineNumber:
%StripeStart(0, 3)
STZ.b StatsBottom
LDA.b $CA
TAY
AND.w #$0001
BEQ +
DEY
INC.b StatsBottom
+
JSR LastHexDigit
PHA
JSR LastHexDigit
PHA
JSR LastHexDigit
%StripeTile()
PLA
%StripeTile()
PLA
%StripeTile()
%StripeEnd()
RTS
%StripeStart(0, 3)
STZ.b StatsBottom
LDA.b $CA
TAY
AND.w #$0001
BEQ +
DEY
INC.b StatsBottom
+
JSR LastHexDigit
PHA
JSR LastHexDigit
PHA
JSR LastHexDigit
%StripeTile()
PLA
%StripeTile()
PLA
%StripeTile()
%StripeEnd()
RTS
LoadModifiedFont:
; Based on CopyFontToVram(Bank00)
; copies font graphics to VRAM (for BG3)
; set name base table to vram $4000 (word)
LDA.b #$02 : STA.w OBSEL
; increment on writes to $2119
LDA.b #$80 : STA.w VMAIN
; set bank of the source address (see below)
LDA.b #FontGfx>>16 : STA.b Scrap02
REP #$30
; vram target address is $7000 (word)
LDA.w #$7000 : STA.w VMADDL
; $00[3] = $0E8000 (offset for the font data)
LDA.w #FontGfx : STA.b Scrap00
; going to write 0x1000 bytes (0x800 words)
LDX.w #FontGfxEnd-FontGfx/2-1
; Based on CopyFontToVram(Bank00)
; copies font graphics to VRAM (for BG3)
; set name base table to vram $4000 (word)
LDA.b #$02 : STA.w OBSEL
; increment on writes to $2119
LDA.b #$80 : STA.w VMAIN
; set bank of the source address (see below)
LDA.b #FontGfx>>16 : STA.b Scrap02
REP #$30
; vram target address is $7000 (word)
LDA.w #$7000 : STA.w VMADDL
; $00[3] = $0E8000 (offset for the font data)
LDA.w #FontGfx : STA.b Scrap00
; going to write 0x1000 bytes (0x800 words)
LDX.w #FontGfxEnd-FontGfx/2-1
.nextWord
; read a word from the font data
LDA.b [$00] : STA.w VMDATAL
; increment source address by 2
INC.b Scrap00 : INC.b Scrap00
DEX : BPL .nextWord
SEP #$30
; read a word from the font data
LDA.b [$00] : STA.w VMDATAL
; increment source address by 2
INC.b Scrap00 : INC.b Scrap00
DEX : BPL .nextWord
SEP #$30
JSL LoadFullItemTilesCredits
RTL
RTL
LoadFullItemTilesCredits:
; Based on CopyFontToVram(Bank00)
@@ -584,17 +584,17 @@ LoadFullItemTilesCredits:
DEX : BPL .nextWord
SEP #$30
RTL
RTL
CheckFontTable:
TAY
PHB
PHK
PLB
LDA.w FontTable,Y
PLB
RTL
TAY
PHB
PHK
PLB
LDA.w FontTable,Y
PLB
RTL
NearEnding:
STZ.w $012A ; disable triforce helper thread
@@ -602,7 +602,7 @@ NearEnding:
REP #$10
JSL AltBufferTable_credits
JSR DrawEndingItems
JML.l $00ec03 ; PaletteFilter_InitTheEndSprite
JML.l $80EC03 ; PaletteFilter_InitTheEndSprite
EndingItems:
; This function is not strictly needed, simply updating the tracker
@@ -621,20 +621,20 @@ DrawEndingItems:
RTS
FontTable:
incbin stats/fonttable.bin
incbin stats/fonttable.bin
CreditsStats:
incsrc stats/statConfig.asm
dw $FFFF
org $0eedd9
JSL EndingItems
org $0EEDD9
JSL EndingItems
org $0eedaf
org $0EEDAF
JSL NearEnding
org $0EE651
JSL LoadModifiedFont
JSL LoadModifiedFont
org $0EE828
JSL PreparePointer
@@ -646,13 +646,13 @@ org $0EE83F
org $0EE853
LDA.b [CreditsPtr],Y
NOP
AND.w #$00ff
ASL A
JSL CheckFontTable
org $0ee86d
JSL RenderCreditsStatCounter
JMP.w AfterDeathCounterOutput
org $0ee8fd
AfterDeathCounterOutput:
AND.w #$00FF
ASL A
JSL CheckFontTable
org $0EE86D
JSL RenderCreditsStatCounter
JMP.w AfterDeathCounterOutput
org $8EE8FD
AfterDeathCounterOutput:

1358
tables.asm

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
RenderCharSetColorExtended_init:
stz.b Scrap0C
jsl $00d84e
jsl $80d84e
rtl
RenderCharSetColorExtended_close:

View File

@@ -1,116 +1,128 @@
;================================================================================
;===================================================================================================
; Vanilla Labels
;================================================================================
;===================================================================================================
; EVERY LABEL SHOULD BE IN A FAST ROM BANK
;===================================================================================================
; Labels for routines in the vanilla portion of the ROM. More or less in sequential
; order. Most of these names came from the MoN US disassembly. But we should
; refer to the JP 1.0 disassembly as that's what the randomizer is based on.
; All routines can be assumed to return long unless otherwise noted.
;================================================================================
;===================================================================================================
;---------------------------------------------------------------------------------------------------
;===================================================================================================
; Long routines (use JSL)
;===================================================================================================
Vram_EraseTilemaps_triforce = $808333
JumpTableLocal = $808781
JumpTableLong = $80879C
Sound_LoadLightWorldSongBank = $808913
Sound_LoadLightWorldSongBank_do_load = $80891D
EnableForceBlank = $80893D
DungeonMask = $8098C0
DecompSwordGfx = $80D308
DecompShieldGfx = $80D348
Tagalong_LoadGfx = $80D463
GetAnimatedSpriteTile = $80D51B
GetAnimatedSpriteTile_variable = $80D52D
Attract_DecompressStoryGfx = $80D84E
LoadSelectScreenGfx = $80E529
PrepDungeonExit = $80F945
Mirror_InitHdmaSettings = $80FDEE
Dungeon_LoadRoom = $81873A
Module_PreDungeon = $82821E
Module_PreDungeon_setAmbientSfx = $828296
Dungeon_SaveRoomData = $82A0A8
Dungeon_SaveRoomData_justKeys = $82A0BE
Dungeon_SaveRoomQuadrantData = $82B861
LoadGearPalettes_bunny = $82FD8A
LoadGearPalettes_variable = $82FD95
Filter_Majorly_Whiten_Color = $82FEAB
Sprite_SpawnFallingItem = $85A51D
Sprite_DrawMultiple = $85DF6C
Sprite_DrawMultiple_quantity_preset = $85DF70
Sprite_DrawMultiple_player_deferred = $85DF75
Sprite_ShowSolicitedMessageIfPlayerFacing = $85E1A7
Sprite_ShowMessageFromPlayerContact = $85E1F0
Sprite_ShowMessageUnconditional = $85E219
Sprite_ZeldaLong = $85EC96
Sprite_EB_HeartPiece_handle_flags = $85F0C0
Player_ApplyRumbleToSprites = $8680FA
Utility_CheckIfHitBoxesOverlapLong = $8683E6
Sprite_PrepAndDrawSingleLargeLong = $86DBF8
Sprite_PrepAndDrawSingleSmallLong = $86DC00
Sprite_DrawShadowLong = $86DC5C
DashKey_Draw = $86DD40
Sprite_ApplySpeedTowardsPlayerLong = $86EA18
Sprite_DirectionToFacePlayerLong = $86EAA6
Sprite_CheckDamageToPlayerSameLayerLong = $86F12F
OAM_AllocateDeferToPlayerLong = $86F86A
Player_HaltDashAttackLong = $8791B3
Link_ReceiveItem = $87999D
Sprite_CheckIfPlayerPreoccupied = $87F4AA
Ancilla_ReceiveItem = $88C3AE
Ancilla_BreakTowerSeal_draw_single_crystal = $88CE93
Ancilla_BreakTowerSeal_stop_spawning_sparkles = $88CEC3
BreakTowerSeal_ExecuteSparkles = $88CF59
Ancilla_SetOam_XY_Long = $88F710
AddReceivedItem = $8985E2
AddPendantOrCrystal = $898BAD
AddWeathervaneExplosion = $898CFD
AddDashTremor = $8993DF
AddAncillaLong = $899D04
Ancilla_CheckIfAlreadyExistsLong = $899D1A
GiveRupeeGift = $89AD58
Sprite_SetSpawnedCoords = $89AE64
OverworldMap_InitGfx = $8ABA4F
OverworldMap_DarkWorldTilemap = $8ABA99
OverworldMap_LoadSprGfx = $8ABAB9
NameFile_MakeScreenVisible = $8CD7D1
InitializeSaveFile = $8CDB3E
InitializeSaveFile_build_checksum = $8CDBC0
GetRandomInt = $8DBA71
OAM_AllocateFromRegionA = $8DBA80
OAM_AllocateFromRegionB = $8DBA84
OAM_AllocateFromRegionC = $8DBA88
OAM_AllocateFromRegionD = $8DBA8C
OAM_AllocateFromRegionE = $8DBA90
OAM_AllocateFromRegionF = $8DBA94
Sound_SetSfxPanWithPlayerCoords = $8DBB67
Sound_SetSfx1PanLong = $8DBB6E
Sound_SetSfx2PanLong = $8DBB7C
Sound_SetSfx3PanLong = $8DBB8A
HUD_RefreshIconLong = $8DDB7F
Equipment_UpdateEquippedItemLong = $8DDD32
BottleMenu_movingOn = $8DE01E
RestoreNormalMenu = $8DE346
Equipment_SearchForEquippedItemLong = $8DE395
HUD_RebuildLong = $8DFA78
HUD_RebuildIndoor_Palace = $8DFA88
HUD_RebuildLong2 = $8DFA88
Messaging_Text = $8EEE10
Overworld_TileAttr = $8FFD94
Overworld_DrawPersistentMap16 = $9BC97C
Palette_Sword = $9BED03
Palette_Shield = $9BED29
Palette_ArmorAndGloves = $9BEDF9
Palette_Hud = $9BEE52
Palette_SelectScreen = $9BEF96
Sprite_NullifyHookshotDrag = $9CF500
Ancilla_CheckForAvailableSlot = $9CF537
ShopKeeper_RapidTerminateReceiveItem = $9CFAAA
Filter_MajorWhitenMain = $9DE9B6
Sprite_SpawnDynamically = $9DF65D
Sprite_SpawnDynamically_arbitrary = $9DF65F
DiggingGameGuy_AttemptPrizeSpawn = $9DFD4B
Sprite_GetEmptyBottleIndex = $9EDE28
Sprite_PlayerCantPassThrough = $9EF4E7
;===================================================================================================
;---------------------------------------------------------------------------------------------------
;===================================================================================================
; Local routines (use JSR)
;===================================================================================================
;---------------------------------------------------------------------------------------------------
;===================================================================================================
Chicken_SpawnAvengerChicken = $86A7DB
DrawProgressIcons = $8DE9C8
DrawEquipment = $8DED29
UseImplicitRegIndexedLocalJumpTable = $008781
UseImplicitRegIndexedLongJumpTable = $00879C
Vram_EraseTilemaps_triforce = 008333
Sound_LoadLightWorldSongBank = $008913
Sound_LoadLightWorldSongBank_do_load = $00891D
EnableForceBlank = $00893D
DungeonMask = $0098C0
DecompSwordGfx = $00D308
DecompShieldGfx = $00D348
Tagalong_LoadGfx = $00D463
GetAnimatedSpriteTile = $00D51B
GetAnimatedSpriteTile_variable = $00D52D
Attract_DecompressStoryGfx = $00D84E
LoadSelectScreenGfx = $00E529
PrepDungeonExit = $00F945
Mirror_InitHdmaSettings = $00FDEE
Dungeon_LoadRoom = $01873A
Module_PreDungeon = $02821E
Module_PreDungeon_setAmbientSfx = $028296
Dungeon_SaveRoomData = $02A0A8
Dungeon_SaveRoomData_justKeys = $02A0BE
Dungeon_SaveRoomQuadrantData = $02B861
LoadGearPalettes_bunny = $02FD8A
LoadGearPalettes_variable = $02FD95
Filter_Majorly_Whiten_Color = $02FEAB
Sprite_SpawnFallingItem = $05A51D
Sprite_DrawMultiple = $05DF6C
Sprite_DrawMultiple_quantity_preset = $05DF70
Sprite_DrawMultiple_player_deferred = $05DF75
Sprite_ShowSolicitedMessageIfPlayerFacing = $05E1A7
Sprite_ShowMessageFromPlayerContact = $05E1F0
Sprite_ShowMessageUnconditional = $05E219
Sprite_ZeldaLong = $05EC96
Sprite_EB_HeartPiece_handle_flags = $05F0C0
Player_ApplyRumbleToSprites = $0680FA
Utility_CheckIfHitBoxesOverlapLong = $0683E6
Chicken_SpawnAvengerChicken = $06A7DB ; returns short
Sprite_DrawShadowLong = $06DC5C
DashKey_Draw = $06DD40
Sprite_PrepAndDrawSingleLargeLong = $06DBF8
Sprite_PrepAndDrawSingleSmallLong = $06DC00
Sprite_ApplySpeedTowardsPlayerLong = $06EA18
Sprite_DirectionToFacePlayerLong = $06EAA6
Sprite_CheckDamageToPlayerSameLayerLong = $06F12F
OAM_AllocateDeferToPlayerLong = $06F86A
Player_HaltDashAttackLong = $0791B3
Link_ReceiveItem = $07999D
Sprite_CheckIfPlayerPreoccupied = $07F4AA
Ancilla_ReceiveItem = $08C3AE
Ancilla_BreakTowerSeal_draw_single_crystal = $08CE93
Ancilla_BreakTowerSeal_stop_spawning_sparkles = $08CEC3
BreakTowerSeal_ExecuteSparkles = $08CF59
Ancilla_SetOam_XY_Long = $08F710
AddReceivedItem = $0985E2
AddPendantOrCrystal = $098BAD
AddWeathervaneExplosion = $098CFD
AddDashTremor = $0993DF
AddAncillaLong = $099D04
Ancilla_CheckIfAlreadyExistsLong = $099D1A
Sprite_SetSpawnedCoords = $09AE64
GiveRupeeGift = $09AD58
OverworldMap_InitGfx = $0ABA4F
OverworldMap_DarkWorldTilemap = $0ABA99
OverworldMap_LoadSprGfx = $0ABAB9
NameFile_MakeScreenVisible = $0CD7D1
InitializeSaveFile = $0CDB3E
InitializeSaveFile_build_checksum = $0CDBC0
GetRandomInt = $0DBA71
OAM_AllocateFromRegionA = $0DBA80
OAM_AllocateFromRegionB = $0DBA84
OAM_AllocateFromRegionC = $0DBA88
OAM_AllocateFromRegionD = $0DBA8C
OAM_AllocateFromRegionE = $0DBA90
OAM_AllocateFromRegionF = $0DBA94
Sound_SetSfxPanWithPlayerCoords = $0DBB67
Sound_SetSfx1PanLong = $0DBB6E
Sound_SetSfx2PanLong = $0DBB7C
Sound_SetSfx3PanLong = $0DBB8A
HUD_RefreshIconLong = $0DDB7F
Equipment_UpdateEquippedItemLong = $0DDD32
BottleMenu_movingOn = $0DE01E
RestoreNormalMenu = $0DE346
Equipment_SearchForEquippedItemLong = $0DE395
DrawProgressIcons = $0DE9C8 ; this returns short
DrawEquipment = $0DED29 ; this returns short
HUD_RebuildLong = $0DFA78
HUD_RebuildIndoor_Palace = $0DFA88
HUD_RebuildLong2 = $0DFA88
Messaging_Text = $0EEE10
Overworld_TileAttr = $0FFD94
Overworld_DrawPersistentMap16 = $1BC97C
Palette_Sword = $1BED03
Palette_Shield = $1BED29
Palette_ArmorAndGloves = $1BEDF9
Palette_Hud = $1BEE52
Palette_SelectScreen = $1BEF96
ShopKeeper_RapidTerminateReceiveItem = $1CFAAA
Sprite_NullifyHookshotDrag = $1CF500
Ancilla_CheckForAvailableSlot = $1CF537
Filter_MajorWhitenMain = $1DE9B6
Sprite_SpawnDynamically = $1DF65D
Sprite_SpawnDynamically_arbitrary = $1DF65F
DiggingGameGuy_AttemptPrizeSpawn = $1DFD4B
Sprite_GetEmptyBottleIndex = $1EDE28
Sprite_PlayerCantPassThrough = $1EF4E7
;===================================================================================================

View File

@@ -1,15 +0,0 @@
;--------------------------------------------------------------------------------
CheckZSNES:
SEP #$28
LDA.b #$FF
CLC
ADC.b #$FF
CMP.b #$64
CLD
BEQ .zsnes
REP #$20
LDA.w #$01FF : TCS ; thing we wrote over - initialize stack
JML.l ReturnCheckZSNES
.zsnes
JML DontUseZSNES
;--------------------------------------------------------------------------------