Merge branch 'main' into kara
This commit is contained in:
@@ -3,34 +3,40 @@
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
lorom
|
lorom
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
; THIS NEEDS TO BE THE FIRST INCLUDE BECAUSE IT CHANGES THINGS EVERYWHERE
|
||||||
|
; If this were to be included later, it would almost certainly overwrite other changes
|
||||||
|
incsrc "fastrom.asm"
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
;org $00FFC0 ; <- 7FC0 - Bank00.asm : 9173 (db "THE LEGEND OF ZELDA " ; 21 bytes)
|
;org $80FFC0 ; <- 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)
|
org $80FFD5 ; <- 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)
|
;org $80FFD6 ; <- 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)
|
org $80FFD7 ; <- 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))
|
org $80FFD8 ; <- 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
|
org $BFFFFF ; <- 1FFFFF
|
||||||
db #$00 ; expand file to 2mb
|
db $00 ; expand file to 2mb
|
||||||
|
|
||||||
org $1FFFF8 ; <- FFFF8 timestamp rom
|
org $9FFFF8 ; <- 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)
|
!ROM_VERSION_LOW ?= 1 ; ROM version (two 16-bit integers)
|
||||||
!ROM_VERSION_HIGH ?= 2 ;
|
!ROM_VERSION_HIGH ?= 4 ;
|
||||||
|
|
||||||
org $00FFE0 ; Unused hardware vector
|
org $80FFE0 ; Unused hardware vector
|
||||||
RomVersion:
|
RomVersion:
|
||||||
dw !ROM_VERSION_LOW
|
dw !ROM_VERSION_LOW
|
||||||
dw !ROM_VERSION_HIGH
|
dw !ROM_VERSION_HIGH
|
||||||
@@ -43,8 +49,8 @@ dw !ROM_VERSION_HIGH
|
|||||||
|
|
||||||
function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<<0))
|
function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<<0))
|
||||||
|
|
||||||
; Feature flags, run asar with -DFEATURE_X=1 to enable
|
; Feature flags, run asar with -DFEATURE_X=0 to disable
|
||||||
!FEATURE_NEW_TEXT ?= 0
|
!FEATURE_NEW_TEXT ?= 1
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
@@ -56,10 +62,9 @@ incsrc ram.asm
|
|||||||
incsrc sram.asm
|
incsrc sram.asm
|
||||||
incsrc registers.asm
|
incsrc registers.asm
|
||||||
incsrc vanillalabels.asm
|
incsrc vanillalabels.asm
|
||||||
|
incsrc overworldmap.asm ; Overwrites some code in bank $8A
|
||||||
|
|
||||||
;org $208000 ; bank #$20
|
org $A08000 ; bank $20
|
||||||
org $A08000 ; bank #$A0
|
|
||||||
incsrc newitems.asm ; LEAVE THIS AS FIRST
|
|
||||||
incsrc itemdowngrade.asm
|
incsrc itemdowngrade.asm
|
||||||
incsrc bugfixes.asm
|
incsrc bugfixes.asm
|
||||||
incsrc darkworldspawn.asm
|
incsrc darkworldspawn.asm
|
||||||
@@ -67,7 +72,6 @@ incsrc lampmantlecone.asm
|
|||||||
incsrc floodgatesoftlock.asm
|
incsrc floodgatesoftlock.asm
|
||||||
incsrc heartpieces.asm
|
incsrc heartpieces.asm
|
||||||
incsrc npcitems.asm
|
incsrc npcitems.asm
|
||||||
incsrc utilities.asm
|
|
||||||
incsrc flipperkill.asm
|
incsrc flipperkill.asm
|
||||||
incsrc pendantcrystalhud.asm
|
incsrc pendantcrystalhud.asm
|
||||||
incsrc potions.asm
|
incsrc potions.asm
|
||||||
@@ -78,7 +82,6 @@ incsrc tablets.asm
|
|||||||
incsrc fairyfixes.asm
|
incsrc fairyfixes.asm
|
||||||
incsrc rngfixes.asm
|
incsrc rngfixes.asm
|
||||||
incsrc medallions.asm
|
incsrc medallions.asm
|
||||||
incsrc inventory.asm
|
|
||||||
incsrc zelda.asm
|
incsrc zelda.asm
|
||||||
incsrc maidencrystals.asm
|
incsrc maidencrystals.asm
|
||||||
incsrc flute.asm
|
incsrc flute.asm
|
||||||
@@ -98,9 +101,9 @@ incsrc roomloading.asm
|
|||||||
incsrc icepalacegraphics.asm
|
incsrc icepalacegraphics.asm
|
||||||
warnpc $A18000
|
warnpc $A18000
|
||||||
|
|
||||||
org $1C8000 ; text tables for translation
|
org $9C8000 ; text tables for translation
|
||||||
incbin "data/i18n_en.bin"
|
incbin "data/i18n_en.bin"
|
||||||
warnpc $1CF356
|
warnpc $9CF356
|
||||||
|
|
||||||
org $A18000 ; static mapping area
|
org $A18000 ; static mapping area
|
||||||
incsrc framehook.asm
|
incsrc framehook.asm
|
||||||
@@ -111,7 +114,7 @@ incsrc hud.asm
|
|||||||
warnpc $A18800
|
warnpc $A18800
|
||||||
|
|
||||||
org $A18800 ; static mapping area
|
org $A18800 ; static mapping area
|
||||||
incsrc zsnes.asm
|
|
||||||
warnpc $A19000
|
warnpc $A19000
|
||||||
|
|
||||||
org $A1A000 ; static mapping area. Referenced by front end. Do not move.
|
org $A1A000 ; static mapping area. Referenced by front end. Do not move.
|
||||||
@@ -131,7 +134,6 @@ incsrc glitched.asm
|
|||||||
incsrc hardmode.asm
|
incsrc hardmode.asm
|
||||||
incsrc goalitem.asm
|
incsrc goalitem.asm
|
||||||
incsrc quickswap.asm
|
incsrc quickswap.asm
|
||||||
incsrc endingsequence.asm
|
|
||||||
incsrc cuccostorm.asm
|
incsrc cuccostorm.asm
|
||||||
incsrc retro.asm
|
incsrc retro.asm
|
||||||
incsrc controllerjank.asm
|
incsrc controllerjank.asm
|
||||||
@@ -144,7 +146,6 @@ incsrc hashalphabet.asm
|
|||||||
incsrc inverted.asm
|
incsrc inverted.asm
|
||||||
incsrc invertedmaps.asm
|
incsrc invertedmaps.asm
|
||||||
incsrc newhud.asm
|
incsrc newhud.asm
|
||||||
incsrc compasses.asm
|
|
||||||
incsrc save.asm
|
incsrc save.asm
|
||||||
incsrc password.asm
|
incsrc password.asm
|
||||||
incsrc enemy_adjustments.asm
|
incsrc enemy_adjustments.asm
|
||||||
@@ -152,121 +153,139 @@ incsrc hudtext.asm
|
|||||||
incsrc servicerequest.asm
|
incsrc servicerequest.asm
|
||||||
incsrc elder.asm
|
incsrc elder.asm
|
||||||
incsrc toast.asm
|
incsrc toast.asm
|
||||||
incsrc darkroomitems.asm
|
|
||||||
incsrc fastcredits.asm
|
incsrc fastcredits.asm
|
||||||
incsrc msu.asm
|
incsrc msu.asm
|
||||||
incsrc dungeonmap.asm
|
incsrc dungeonmap.asm
|
||||||
incsrc special_weapons.asm
|
incsrc special_weapons.asm
|
||||||
incsrc variable_ganon_vulnerability.asm
|
incsrc variable_ganon_vulnerability.asm
|
||||||
|
incsrc hextodec.asm
|
||||||
if !FEATURE_NEW_TEXT
|
if !FEATURE_NEW_TEXT
|
||||||
incsrc textrenderer.asm
|
incsrc textrenderer.asm
|
||||||
endif
|
endif
|
||||||
warnpc $A58000
|
warnpc $A58000
|
||||||
|
|
||||||
org $A28000
|
org $A28000
|
||||||
|
ItemReceiptGraphicsROM:
|
||||||
|
; we need some empty space here so that 0000 can mean nothing
|
||||||
|
fillbyte $00 : fill 32
|
||||||
|
incbin "data/customitems.4bpp"
|
||||||
|
warnpc $A2B000
|
||||||
|
org $A2B000
|
||||||
|
incsrc itemdatatables.asm ; Statically mapped
|
||||||
|
incsrc decompresseditemgraphics.asm
|
||||||
|
incsrc newitems.asm
|
||||||
|
incsrc utilities.asm
|
||||||
|
incsrc inventory.asm
|
||||||
|
|
||||||
org $A38000
|
org $A38000
|
||||||
|
incsrc stats/credits.asm ; Statically mapped
|
||||||
incsrc stats/main.asm
|
incsrc stats/main.asm
|
||||||
|
incsrc stats/statConfig.asm
|
||||||
|
FontTable:
|
||||||
|
incsrc stats/fonttable.asm
|
||||||
|
|
||||||
org $308000 ; bank #$30
|
org $B08000 ; bank $30
|
||||||
incsrc tables.asm
|
incsrc tables.asm
|
||||||
|
|
||||||
org $348000
|
org $B48000
|
||||||
incsrc spc.asm
|
incsrc spc.asm
|
||||||
|
|
||||||
org $318000 ; bank #$31
|
org $B18000 ; bank $31
|
||||||
GFX_Mire_Bombos:
|
GFX_Mire_Bombos:
|
||||||
incbin "data/99ff1_bombos.gfx"
|
incbin "data/99ff1_bombos.gfx"
|
||||||
warnpc $318800
|
warnpc $B18800
|
||||||
|
|
||||||
org $318800
|
org $B18800
|
||||||
GFX_Mire_Quake:
|
GFX_Mire_Quake:
|
||||||
incbin "data/99ff1_quake.gfx"
|
incbin "data/99ff1_quake.gfx"
|
||||||
warnpc $319000
|
warnpc $B19000
|
||||||
|
|
||||||
org $319000
|
org $B19000
|
||||||
GFX_TRock_Bombos:
|
GFX_TRock_Bombos:
|
||||||
incbin "data/a6fc4_bombos.gfx"
|
incbin "data/a6fc4_bombos.gfx"
|
||||||
warnpc $319800
|
warnpc $B19800
|
||||||
|
|
||||||
org $319800
|
org $B19800
|
||||||
GFX_TRock_Ether:
|
GFX_TRock_Ether:
|
||||||
incbin "data/a6fc4_ether.gfx"
|
incbin "data/a6fc4_ether.gfx"
|
||||||
warnpc $31A000
|
warnpc $B1A000
|
||||||
|
|
||||||
org $31A000
|
org $B1A000
|
||||||
GFX_HUD_Items:
|
GFX_HUD_Items:
|
||||||
incbin "data/c2807_v4.gfx"
|
incbin "data/c2807_v4.gfx"
|
||||||
warnpc $31A800
|
warnpc $B1A800
|
||||||
|
|
||||||
org $31A800
|
org $B1A800
|
||||||
GFX_New_Items:
|
|
||||||
incbin "data/newitems.gfx"
|
|
||||||
;incbin eventitems.gfx ; *EVENT*
|
|
||||||
warnpc $31B000
|
|
||||||
|
|
||||||
org $31B000
|
warnpc $B1B000
|
||||||
|
|
||||||
|
org $B1B000
|
||||||
GFX_HUD_Main:
|
GFX_HUD_Main:
|
||||||
incbin "data/c2e3e.gfx"
|
incbin "data/c2e3e.gfx"
|
||||||
warnpc $31B800
|
warnpc $B1B800
|
||||||
|
|
||||||
org $31C000
|
org $B1C000
|
||||||
IcePalaceFloorGfx:
|
IcePalaceFloorGfx:
|
||||||
incbin "data/ice_palace_floor.bin"
|
incbin "data/ice_palace_floor.bin"
|
||||||
warnpc $31C801
|
warnpc $B1C801
|
||||||
|
|
||||||
org $31C800
|
org $B1C800
|
||||||
Damage_Table:
|
Damage_Table:
|
||||||
incbin "data/damage_table.bin"
|
incbin "data/damage_table.bin"
|
||||||
warnpc $31D001
|
warnpc $B1D001
|
||||||
|
|
||||||
org $31D000
|
org $B1D000
|
||||||
FileSelectNewGraphics:
|
FileSelectNewGraphics:
|
||||||
incbin "data/fileselectgfx.2bpp"
|
incbin "data/fileselectgfx.2bpp"
|
||||||
warnpc $31E001
|
warnpc $B1E001
|
||||||
|
|
||||||
org $31E000
|
org $B1E000
|
||||||
InvertedCastleHole: ;address used by front end. DO NOT MOVE!
|
InvertedCastleHole: ;address used by front end. DO NOT MOVE!
|
||||||
incbin "data/sheet73.gfx"
|
incbin "data/sheet73.gfx"
|
||||||
warnpc $31E501
|
warnpc $B1E501
|
||||||
|
|
||||||
org $31E800
|
org $B1E800
|
||||||
Damage_Table_Bombs:
|
Damage_Table_Bombs:
|
||||||
incbin damage_table_sword_bombs.bin
|
incbin damage_table_sword_bombs.bin
|
||||||
warnpc $31F000
|
warnpc $B1F000
|
||||||
|
|
||||||
org $31F000
|
org $B1F000
|
||||||
Damage_Table_Pseudo:
|
Damage_Table_Pseudo:
|
||||||
incbin damage_table_pseudo_sword.bin
|
incbin damage_table_pseudo_sword.bin
|
||||||
warnpc $31F800
|
warnpc $B1F800
|
||||||
|
|
||||||
org $338000
|
org $B38000
|
||||||
GFX_HUD_Palette:
|
GFX_HUD_Palette:
|
||||||
incbin "data/hudpalette.pal"
|
incbin "data/hudpalette.pal"
|
||||||
warnpc $338041
|
warnpc $B38041
|
||||||
|
|
||||||
org $339000
|
org $B39000
|
||||||
|
ExpandedTrinexx:
|
||||||
incbin "data/sheet178.gfx"
|
incbin "data/sheet178.gfx"
|
||||||
warnpc $339600
|
warnpc $B39600
|
||||||
|
|
||||||
org $339600
|
org $B39600
|
||||||
BossMapIconGFX:
|
BossMapIconGFX:
|
||||||
incbin "data/bossicons.4bpp"
|
incbin "data/bossicons.4bpp"
|
||||||
|
|
||||||
if !FEATURE_NEW_TEXT
|
if !FEATURE_NEW_TEXT
|
||||||
org $339C00
|
org $B39C00
|
||||||
NewFont:
|
NewFont:
|
||||||
incbin "data/newfont.bin"
|
incbin "data/newfont.bin"
|
||||||
NewFontInverted:
|
NewFontInverted:
|
||||||
incbin "data/newfont_inverted.bin"
|
incbin "data/newfont_inverted.bin"
|
||||||
|
SmallCharacters:
|
||||||
org $0CD7DF
|
incbin "data/smallchars.2bpp"
|
||||||
incbin "data/text_unscramble1.bin"
|
org $8CD7DF
|
||||||
org $0CE4D5
|
incsrc data/playernamecharmap.asm
|
||||||
incbin "data/text_unscramble2.bin"
|
org $8CE73D
|
||||||
|
incbin data/playernamestripes_1.bin
|
||||||
|
org $8CE911
|
||||||
|
incbin data/playernamestripes_2.bin
|
||||||
|
incsrc data/kanjireplacements.asm ; Overwrites text gfx data and masks in bank $8E
|
||||||
endif
|
endif
|
||||||
|
|
||||||
org $328000
|
org $B28000
|
||||||
Extra_Text_Table:
|
Extra_Text_Table:
|
||||||
if !FEATURE_NEW_TEXT
|
if !FEATURE_NEW_TEXT
|
||||||
incsrc itemtext_lower.asm
|
incsrc itemtext_lower.asm
|
||||||
@@ -276,9 +295,13 @@ endif
|
|||||||
|
|
||||||
incsrc externalhooks.asm
|
incsrc externalhooks.asm
|
||||||
;================================================================================
|
;================================================================================
|
||||||
org $119100 ; PC 0x89100
|
org $919100 ; PC 0x89100
|
||||||
incbin "data/map_icons.gfx"
|
incbin "data/map_icons.gfx"
|
||||||
warnpc $119401
|
warnpc $919401
|
||||||
|
;================================================================================
|
||||||
|
org $9BB1E0
|
||||||
|
incsrc custompalettes.asm
|
||||||
|
warnpc $9BB880
|
||||||
;================================================================================
|
;================================================================================
|
||||||
org $AF8000 ; PC 0x178000
|
org $AF8000 ; PC 0x178000
|
||||||
Static_RNG: ; each line below is 512 bytes of rng
|
Static_RNG: ; each line below is 512 bytes of rng
|
||||||
@@ -329,25 +352,18 @@ warnpc $B08000
|
|||||||
;$70:6000 (8K) Scratch buffers
|
;$70:6000 (8K) Scratch buffers
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
org $00D09C ; 0x509C - HUD Items H
|
org $80D09C ; 0x509C - HUD Items H
|
||||||
db GFX_HUD_Items>>16
|
db GFX_HUD_Items>>16
|
||||||
org $00D17B ; 0x517B - HUD Items M
|
org $80D17B ; 0x517B - HUD Items M
|
||||||
db GFX_HUD_Items>>8
|
db GFX_HUD_Items>>8
|
||||||
org $00D25A ; 0x525A - HUD Items L
|
org $80D25A ; 0x525A - HUD Items L
|
||||||
db GFX_HUD_Items
|
db GFX_HUD_Items
|
||||||
|
|
||||||
; this used to be a pointer to a dummy file
|
org $80D09D ; 0x509D - HUD Main H
|
||||||
org $00D065 ; 005065 - New Items H
|
|
||||||
db GFX_New_Items>>16
|
|
||||||
org $00D144 ; 005114 - New Items M
|
|
||||||
db GFX_New_Items>>8
|
|
||||||
org $00D223 ; 005223 - New Items L
|
|
||||||
db GFX_New_Items
|
|
||||||
|
|
||||||
org $00D09D ; 0x509D - HUD Main H
|
|
||||||
db GFX_HUD_Main>>16
|
db GFX_HUD_Main>>16
|
||||||
org $00D17C ; 0x517C - HUD Main M
|
org $80D17C ; 0x517C - HUD Main M
|
||||||
db GFX_HUD_Main>>8
|
db GFX_HUD_Main>>8
|
||||||
org $00D25B ; 0x525B - HUD Main L
|
org $80D25B ; 0x525B - HUD Main L
|
||||||
db GFX_HUD_Main
|
db GFX_HUD_Main
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ RestoreBgEther:
|
|||||||
INX #2 : CPX.b #$10 : BNE -
|
INX #2 : CPX.b #$10 : BNE -
|
||||||
BRA ++
|
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:
|
DDMConditionalLightning:
|
||||||
LDA.l DisableFlashing
|
LDA.l DisableFlashing
|
||||||
@@ -161,7 +161,7 @@ DDMConditionalLightning:
|
|||||||
BNE +
|
BNE +
|
||||||
LDA.w Scrap
|
LDA.w Scrap
|
||||||
LDX.b #$02
|
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
|
LDA.b Scrap00 : LDX.b #$02 : LDY.b #$00
|
||||||
-
|
-
|
||||||
@@ -172,7 +172,7 @@ DDMConditionalLightning:
|
|||||||
LDA.w $F523, Y : LDA.l PaletteBuffer+$F0, X
|
LDA.w $F523, Y : LDA.l PaletteBuffer+$F0, X
|
||||||
INY #2
|
INY #2
|
||||||
INX #2 : CPX.b #$10 : BNE -
|
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:
|
ConditionalGTFlash:
|
||||||
LDA.l DisableFlashing : REP #$20 : BNE +
|
LDA.l DisableFlashing : REP #$20 : BNE +
|
||||||
@@ -222,17 +222,17 @@ LoadElectroPalette:
|
|||||||
LDA.w #$0404 : STA.b Scrap0E
|
LDA.w #$0404 : STA.b Scrap0E
|
||||||
LDA.w #$001B : STA.b Scrap02
|
LDA.w #$001B : STA.b Scrap02
|
||||||
SEP #$10
|
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
|
REP #$10 : LDX.w #$01B2 : LDY.w #$0002
|
||||||
JSR ConditionalLoadGearPalette
|
JSR ConditionalLoadGearPalette
|
||||||
SEP #$10
|
SEP #$10
|
||||||
LDX.b Scrap0D
|
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
|
REP #$10 : LDX.w #$01B8 : LDY.w #$0003
|
||||||
JSR ConditionalLoadGearPalette
|
JSR ConditionalLoadGearPalette
|
||||||
SEP #$10
|
SEP #$10
|
||||||
LDX.b Scrap0E
|
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
|
REP #$10 : LDX.w #$01E2 : LDY.w #$000E
|
||||||
JSR ConditionalLoadGearPalette
|
JSR ConditionalLoadGearPalette
|
||||||
SEP #$30
|
SEP #$30
|
||||||
|
|||||||
@@ -3,19 +3,21 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadLibraryItemGFX:
|
LoadLibraryItemGFX:
|
||||||
%GetPossiblyEncryptedItem(LibraryItem, SpriteItemValues)
|
%GetPossiblyEncryptedItem(LibraryItem, SpriteItemValues)
|
||||||
STA.w SpriteItemType, X ; Store item type
|
JSL.l AttemptItemSubstitution
|
||||||
JSL.l PrepDynamicTile
|
JSL.l ResolveLootIDLong
|
||||||
|
STA.w SpriteID, X
|
||||||
|
JSL.l PrepDynamicTile_loot_resolved
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawLibraryItemGFX:
|
DrawLibraryItemGFX:
|
||||||
PHA
|
PHA
|
||||||
LDA.w SpriteItemType, X ; Retrieve stored item type
|
LDA.w SpriteID, X
|
||||||
JSL.l DrawDynamicTile
|
JSL.l DrawDynamicTile
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SetLibraryItem:
|
SetLibraryItem:
|
||||||
LDY.w SpriteItemType, X ; Retrieve stored item type
|
LDY.w SpriteID, X
|
||||||
JSL.l ItemSet_Library ; contains thing we wrote over
|
JSL.l ItemSet_Library ; contains thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -29,17 +31,27 @@ LoadBonkItemGFX:
|
|||||||
LoadBonkItemGFX_inner:
|
LoadBonkItemGFX_inner:
|
||||||
LDA.b #$00 : STA.l RedrawFlag
|
LDA.b #$00 : STA.l RedrawFlag
|
||||||
JSR LoadBonkItem
|
JSR LoadBonkItem
|
||||||
|
JSL.l AttemptItemSubstitution
|
||||||
|
JSL.l ResolveLootIDLong
|
||||||
|
STA.w SpriteItemType, X
|
||||||
|
STA.w SpriteID, X
|
||||||
JSL.l PrepDynamicTile
|
JSL.l PrepDynamicTile
|
||||||
|
PHA : PHX
|
||||||
|
LDA.w SpriteID,X : TAX
|
||||||
|
LDA.l SpriteProperties_standing_width,X : BNE +
|
||||||
|
LDA.b #$00 : STA.l SpriteOAM : STA.l SpriteOAM+8
|
||||||
|
+
|
||||||
|
PLX : PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawBonkItemGFX:
|
DrawBonkItemGFX:
|
||||||
PHA
|
PHA
|
||||||
LDA.l RedrawFlag : BEQ .skipInit ; skip init if already ready
|
LDA.l RedrawFlag : BEQ .skipInit
|
||||||
JSL.l LoadBonkItemGFX_inner
|
JSL.l LoadBonkItemGFX_inner
|
||||||
BRA .done ; don't draw on the init frame
|
BRA .done ; don't draw on the init frame
|
||||||
|
|
||||||
.skipInit
|
.skipInit
|
||||||
JSR LoadBonkItem
|
LDA.w SpriteID,X
|
||||||
JSL.l DrawDynamicTileNoShadow
|
JSL.l DrawDynamicTileNoShadow
|
||||||
|
|
||||||
.done
|
.done
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ FixBunnyOnExitToLightWorld:
|
|||||||
STZ.b LinkState ; set player mode to Normal
|
STZ.b LinkState ; set player mode to Normal
|
||||||
STZ.w BunnyFlag : STZ.b BunnyFlagDP ; return player graphics to normal
|
STZ.w BunnyFlag : STZ.b BunnyFlagDP ; return player graphics to normal
|
||||||
+
|
+
|
||||||
RTS
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -245,3 +245,10 @@ ParadoxCaveGfxFix:
|
|||||||
LDX.w #$00C0 : STX.w DAS0L
|
LDX.w #$00C0 : STX.w DAS0L
|
||||||
BRA .uploadLine
|
BRA .uploadLine
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
SetItemRiseTimer:
|
||||||
|
LDA.w ItemReceiptMethod : CMP #$01 : BNE .not_from_chest
|
||||||
|
LDA.b #$38 : STA.w AncillaTimer, X
|
||||||
|
RTL
|
||||||
|
.not_from_chest
|
||||||
|
TYA : STA.w AncillaTimer, X ; What we wrote over
|
||||||
|
RTL
|
||||||
|
|||||||
@@ -1,82 +0,0 @@
|
|||||||
DrawDungeonItemCounts:
|
|
||||||
LDX.b IndoorsFlag : BNE + : RTL : + ; Skip if outdoors
|
|
||||||
; extra hard safeties for getting dungeon ID to prevent crashes
|
|
||||||
PHA
|
|
||||||
LDA.w DungeonID : AND.w #$00FE : TAX ; force dungeon ID to be multiple of 2
|
|
||||||
PLA
|
|
||||||
CPX.b #$1B : BCS .done ; Skip if not in a valid dungeon ID
|
|
||||||
|
|
||||||
JSR.w DrawCompassCounts
|
|
||||||
JSR.w DrawMapCounts
|
|
||||||
.done
|
|
||||||
RTL
|
|
||||||
|
|
||||||
DrawCompassCounts:
|
|
||||||
PHX
|
|
||||||
LDA.l CompassMode : AND.w #$00FF : BEQ .done
|
|
||||||
BIT.w #$0002 : BNE + ; if CompassMode==2, we don't check for the compass
|
|
||||||
LDA.l CompassField : AND.l DungeonItemMasks, X ; Load compass values to A, mask with dungeon item masks
|
|
||||||
BEQ .done ; skip if we don't have compass
|
|
||||||
+
|
|
||||||
TXA : LSR : TAX
|
|
||||||
LDA.l CompassTotalsWRAM, X : AND.w #$00FF
|
|
||||||
SEP #$20
|
|
||||||
JSR HudHexToDec2Digit
|
|
||||||
REP #$20
|
|
||||||
PHX
|
|
||||||
LDX.b Scrap06 : TXA : ORA.w #$2400 : STA.l HUDTileMapBuffer+$9A
|
|
||||||
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDTileMapBuffer+$9C
|
|
||||||
PLX
|
|
||||||
LDA.l DungeonLocationsChecked, X : AND.w #$00FF
|
|
||||||
SEP #$20
|
|
||||||
JSR HudHexToDec2Digit
|
|
||||||
REP #$20
|
|
||||||
LDX.b Scrap06 : TXA : ORA.w #$2400 : STA.l HUDTileMapBuffer+$94 ; Draw the item count
|
|
||||||
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDTileMapBuffer+$96
|
|
||||||
LDA.w #$2830 : STA.l HUDTileMapBuffer+$98 ; draw the slash
|
|
||||||
.done
|
|
||||||
PLX
|
|
||||||
RTS
|
|
||||||
|
|
||||||
DrawMapCounts:
|
|
||||||
PHX
|
|
||||||
LDA.l MapHUDMode : AND.w #$00FF : BEQ .done
|
|
||||||
BIT.w #$0002 : BNE + ; if MapHUDMode==2, we don't check for map
|
|
||||||
LDA.l MapField : AND.l DungeonItemMasks, X ; Load map values to A, mask with dungeon item masks
|
|
||||||
BEQ .done ; skip if we don't have map
|
|
||||||
+
|
|
||||||
TXA : LSR : TAX
|
|
||||||
LDA.l MapTotalsWRAM, X : AND.w #$00FF
|
|
||||||
SEP #$20
|
|
||||||
JSR HudHexToDec2Digit
|
|
||||||
REP #$20
|
|
||||||
PHX
|
|
||||||
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDTileMapBuffer+$A6
|
|
||||||
PLX
|
|
||||||
LDA.l DungeonCollectedKeys, X : AND.w #$00FF
|
|
||||||
SEP #$20
|
|
||||||
JSR HudHexToDec2Digit
|
|
||||||
REP #$20
|
|
||||||
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDTileMapBuffer+$A2
|
|
||||||
LDA.w #$2830 : STA.l HUDTileMapBuffer+$A4 ; draw the slash
|
|
||||||
.done
|
|
||||||
PLX
|
|
||||||
RTS
|
|
||||||
|
|
||||||
DungeonItemMasks: ; these are dungeon correlations to $7EF364 - $7EF369 so it knows where to store compasses, etc
|
|
||||||
dw $C000, $C000, $2000, $1000, $0800, $0400, $0200, $0100
|
|
||||||
dw $0080, $0040, $0020, $0010, $0008, $0004
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
InitDungeonCounts:
|
|
||||||
LDX.b #$0F
|
|
||||||
-
|
|
||||||
LDA.l CompassTotalsROM, X : STA.l CompassTotalsWRAM, X
|
|
||||||
DEX
|
|
||||||
BPL -
|
|
||||||
LDX.b #$0F
|
|
||||||
-
|
|
||||||
LDA.l ChestKeys, X : STA.l MapTotalsWRAM, X
|
|
||||||
DEX
|
|
||||||
BPL -
|
|
||||||
RTL
|
|
||||||
|
|
||||||
@@ -119,5 +119,5 @@ HandleOneMindController:
|
|||||||
.no_onemind
|
.no_onemind
|
||||||
STZ.b NMIDoneFlag
|
STZ.b NMIDoneFlag
|
||||||
|
|
||||||
JML $008034 ; reset frame loop
|
JML $808034 ; reset frame loop
|
||||||
|
|
||||||
|
|||||||
19
custompalettes.asm
Normal file
19
custompalettes.asm
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
PalettesCustom:
|
||||||
|
.master_sword
|
||||||
|
dw $0000, $7E4E, $6FF4, $1CF5, $7FFF, $1CE7, $7A10, $64A5
|
||||||
|
.tempered_sword
|
||||||
|
dw $7FFF, $093B, $169F, $7E8D, $7FFF, $1CE7, $7A10, $64A5
|
||||||
|
.golden_sword
|
||||||
|
dw $0000, $033F, $7FFF, $2640, $7FFF, $1CE7, $7A10, $64A5
|
||||||
|
.golden_bombs
|
||||||
|
dw $0000, $7FFF, $27FF, $02BC, $4F5F, $1CE7, $2E9C, $14B6
|
||||||
|
.fighter_shield
|
||||||
|
dw $0000, $7FFF, $27FF, $5E2D, $7FFF, $1CE7, $7A10, $64A5
|
||||||
|
.red_shield
|
||||||
|
dw $0000, $7FFF, $27FF, $5E2D, $4F5F, $1CE7, $2E9C, $14B6
|
||||||
|
.mirror_shield
|
||||||
|
dw $0000, $7E4E, $6F44, $1CF5, $7399, $1CE7, $02F9, $0233
|
||||||
|
.crystal
|
||||||
|
dw $7FFF, $7FFF, $0000, $5907, $6E0E, $0000, $7FBB, $7672
|
||||||
|
.off_black
|
||||||
|
dw $0000, $14A5, $14A5, $14A5, $14A5, $14A5, $14A5, $14A5
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
CheckReceivedItemPropertiesBeforeLoad:
|
|
||||||
LDA.b RoomIndex : BEQ .normalCode
|
|
||||||
LDA.l RoomFade : BNE .lightOff
|
|
||||||
.normalCode
|
|
||||||
LDA.l AddReceivedItemExpanded_properties, X ;Restore Rando Code
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.lightOff
|
|
||||||
PHX : PHY : PHB
|
|
||||||
JSL LoadReceivedItemExpandedProperties ; get palette
|
|
||||||
|
|
||||||
REP #$30
|
|
||||||
AND.w #$0007 ; mask out palette
|
|
||||||
ASL #5 ; multiply by 32
|
|
||||||
ADC.w #$C610 ; offset to latter half
|
|
||||||
|
|
||||||
TAX ; give to destination
|
|
||||||
LDY.w #$C610 ; target palette SP0 colors 8-F
|
|
||||||
|
|
||||||
LDA.w #$000F ; 16 bytes
|
|
||||||
MVN $7E, $7E ; move palette
|
|
||||||
|
|
||||||
SEP #$30
|
|
||||||
PLB : PLY : PLX
|
|
||||||
INC.b NMICGRAM
|
|
||||||
LDA.b #$00
|
|
||||||
RTL
|
|
||||||
@@ -35,8 +35,45 @@ W=73
|
|||||||
X=74
|
X=74
|
||||||
Y=75
|
Y=75
|
||||||
Z=76
|
Z=76
|
||||||
'=77
|
a=A0
|
||||||
.=A0
|
b=A1
|
||||||
/=A2
|
c=A2
|
||||||
:=A3
|
d=A3
|
||||||
_=A6
|
e=A4
|
||||||
|
f=A5
|
||||||
|
g=A6
|
||||||
|
h=A7
|
||||||
|
i=A8
|
||||||
|
j=A9
|
||||||
|
k=AA
|
||||||
|
l=AB
|
||||||
|
m=AC
|
||||||
|
n=AD
|
||||||
|
o=AE
|
||||||
|
p=AF
|
||||||
|
q=B0
|
||||||
|
r=B1
|
||||||
|
s=B2
|
||||||
|
t=B3
|
||||||
|
u=B4
|
||||||
|
v=B5
|
||||||
|
w=B6
|
||||||
|
x=B7
|
||||||
|
y=B8
|
||||||
|
z=B9
|
||||||
|
'=D9
|
||||||
|
"=DA
|
||||||
|
/=DB
|
||||||
|
.=DC
|
||||||
|
:=DD
|
||||||
|
_=DE
|
||||||
|
^=DF
|
||||||
|
&=E0
|
||||||
|
#=E1
|
||||||
|
@=E2
|
||||||
|
>=E3
|
||||||
|
?=E4
|
||||||
|
!=E5
|
||||||
|
~=E6
|
||||||
|
,=E7
|
||||||
|
-=E8
|
||||||
|
|||||||
@@ -35,8 +35,45 @@ W=99
|
|||||||
X=9A
|
X=9A
|
||||||
Y=9B
|
Y=9B
|
||||||
Z=9C
|
Z=9C
|
||||||
'=9d
|
a=BB
|
||||||
.=C0
|
b=BC
|
||||||
/=C2
|
c=BD
|
||||||
:=C3
|
d=BE
|
||||||
_=C6
|
e=BF
|
||||||
|
f=C0
|
||||||
|
g=C1
|
||||||
|
h=C2
|
||||||
|
i=C3
|
||||||
|
j=C4
|
||||||
|
k=C5
|
||||||
|
l=C6
|
||||||
|
m=C7
|
||||||
|
n=C8
|
||||||
|
o=C9
|
||||||
|
p=CA
|
||||||
|
q=CB
|
||||||
|
r=CC
|
||||||
|
s=CD
|
||||||
|
t=CE
|
||||||
|
u=CF
|
||||||
|
v=D0
|
||||||
|
w=D1
|
||||||
|
x=D2
|
||||||
|
y=D3
|
||||||
|
z=D4
|
||||||
|
'=EC
|
||||||
|
"=ED
|
||||||
|
/=EE
|
||||||
|
.=EF
|
||||||
|
:=F0
|
||||||
|
_=F1
|
||||||
|
^=F2
|
||||||
|
&=F3
|
||||||
|
#=F4
|
||||||
|
@=F5
|
||||||
|
>=F6
|
||||||
|
?=F7
|
||||||
|
!=F8
|
||||||
|
~=F9
|
||||||
|
,=FA
|
||||||
|
-=FB
|
||||||
|
|||||||
@@ -24,4 +24,5 @@ V=4D
|
|||||||
W=4E
|
W=4E
|
||||||
X=4F
|
X=4F
|
||||||
Y=50
|
Y=50
|
||||||
Z=51
|
Z=51
|
||||||
|
.=52
|
||||||
|
|||||||
@@ -24,4 +24,8 @@ V=2F
|
|||||||
W=30
|
W=30
|
||||||
X=31
|
X=31
|
||||||
Y=32
|
Y=32
|
||||||
Z=33
|
Z=33
|
||||||
|
,=34
|
||||||
|
'=35
|
||||||
|
-=36
|
||||||
|
.=37
|
||||||
|
|||||||
BIN
data/customitems.4bpp
Normal file
BIN
data/customitems.4bpp
Normal file
Binary file not shown.
BIN
data/customitems.png
Normal file
BIN
data/customitems.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.8 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
BIN
data/i18n_en.bin
BIN
data/i18n_en.bin
Binary file not shown.
55
data/kanjireplacements.asm
Normal file
55
data/kanjireplacements.asm
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
; Kanji replacement characters
|
||||||
|
|
||||||
|
org $8E9AC9
|
||||||
|
;.charDD ; 𓄿
|
||||||
|
db $FB, $8C, $73, $CB, $30, $4B, $30, $54
|
||||||
|
db $2B, $5B, $24, $2D, $12, $13, $61, $1E
|
||||||
|
db $36, $09, $1B, $04, $14, $0B, $15, $0A
|
||||||
|
db $15, $0A, $21, $1E, $1E, $48, $30, $38
|
||||||
|
;.charDE ; ☥
|
||||||
|
db $1E, $33, $0C, $2D, $12, $2D, $12, $2D
|
||||||
|
db $12, $F3, $0C, $01, $01, $BF, $40, $C0
|
||||||
|
db $3F, $BF, $40, $F2, $0C, $12, $0C, $12
|
||||||
|
db $0C, $12, $0C, $1E, $50, $A0, $F0
|
||||||
|
;.charDF ; ≈
|
||||||
|
db $01, $3B, $6E, $11, $C4, $3B, $91, $6E
|
||||||
|
db $BB, $44, $26, $18, $3C, $E7, $3B, $6E
|
||||||
|
db $11, $C4, $3B, $91, $6E, $BB, $44, $EE
|
||||||
|
db $98, $60, $F0
|
||||||
|
;.charE0 ; 🡅
|
||||||
|
db $0C, $12, $0C, $21, $1E, $40, $3F, $80
|
||||||
|
db $7F, $02, $01, $01, $E1, $1E, $21, $1E
|
||||||
|
db $21, $1E, $21, $1E, $21, $1E, $21, $1E
|
||||||
|
db $21, $1E, $3F, $80, $80
|
||||||
|
;.charE1 ; 🡇
|
||||||
|
db $3F, $21, $1E, $21, $1E, $21, $1E, $21
|
||||||
|
db $1E, $21, $1E, $21, $1E, $E1, $1E, $80
|
||||||
|
db $7F, $40, $3F, $21, $1E, $12, $0C, $0C
|
||||||
|
db $28, $10, $30
|
||||||
|
;.charE2 ; 🡆
|
||||||
|
db $18, $14, $08, $12, $0C, $F1, $0E, $80
|
||||||
|
db $7F, $01, $80, $7F, $80, $7F, $80, $7F
|
||||||
|
db $F1, $0E, $12, $0C, $14, $08, $18, $20
|
||||||
|
db $C0, $C0
|
||||||
|
;.charE3 ; 🡄
|
||||||
|
db $06, $0A, $04, $12, $0C, $23, $1C, $40
|
||||||
|
db $3F, $02, $01, $03, $80, $7F, $80, $7F
|
||||||
|
db $40, $3F, $23, $1C, $12, $0C, $0A, $04
|
||||||
|
db $06, $10, $E0, $F0
|
||||||
|
|
||||||
|
|
||||||
|
org $8EBD94
|
||||||
|
;.charDD ; 𓄿
|
||||||
|
db $BF, $FE, $3F, $FF, $B8 ; 10111111 11111110 00111111 11111111 10111000
|
||||||
|
;.charDE ; ☥
|
||||||
|
db $BF, $FA, $3F, $FF, $B8 ; 10111111 11111010 00111111 11111111 10111000
|
||||||
|
;.charDF ; ≈
|
||||||
|
db $AF, $FE, $2B, $FE, $38 ; 10101111 11111110 00101011 11111110 00111000
|
||||||
|
;.charE0 ; 🡅
|
||||||
|
db $2F, $FE, $3F, $FF, $A8 ; 00101111 11111110 00111111 11111111 10101000
|
||||||
|
;.charE1 ; 🡇
|
||||||
|
db $2F, $F0, $3F, $FF, $B8 ; 00101111 11110000 00111111 11111111 10111000
|
||||||
|
;.charE2 ; 🡆
|
||||||
|
db $2F, $F8, $3F, $FE, $38 ; 00101111 11111000 00111111 11111110 00111000
|
||||||
|
;.charE3 ; 🡄
|
||||||
|
db $2F, $FE, $3F, $FE, $38 ; 00101111 11111110 00111111 11111110 00111000
|
||||||
BIN
data/newfont.bin
BIN
data/newfont.bin
Binary file not shown.
Binary file not shown.
59
data/playernamecharmap.asm
Normal file
59
data/playernamecharmap.asm
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
db $00, $01, $02, $03, $04, $CC, $CC ; あ い う え お ⎵ ⎵
|
||||||
|
db $15, $16, $17, $1D, $1E, $CC ; が ぎ ぐ げ ご ⎵
|
||||||
|
db $50, $51, $52, $53, $54, $CC, $CC ; ア イ ウ エ オ ⎵ ⎵
|
||||||
|
db $D0, $D1, $D2, $D3, $D4, $CC ; a b c d e ⎵
|
||||||
|
db $AA, $AB, $AC, $AD, $CC, $CC ; A B C D ⎵ ⎵
|
||||||
|
|
||||||
|
db $08, $09, $0A, $0B, $0C, $CC, $CC ; か き く け こ ⎵ ⎵
|
||||||
|
db $1F, $25, $26, $27, $2D, $CC ; ざ じ ず ぜ ぞ ⎵
|
||||||
|
db $58, $59, $5A, $5B, $5C, $CC, $CC ; カ キ ク ケ コ ⎵ ⎵
|
||||||
|
db $D5, $D6, $D7, $D8, $D9, $CC ; ザ ジ ズ ゼ ゾ ⎵
|
||||||
|
db $AE, $AF, $B0, $B1, $CC, $CC ; E F G H ⎵ ⎵
|
||||||
|
|
||||||
|
db $10, $11, $12, $13, $14, $CC, $CC ; さ し す せ そ ⎵ ⎵
|
||||||
|
db $2E, $2F, $35, $36, $37, $CC ; だ ぢ づ で ど ⎵
|
||||||
|
db $60, $61, $62, $63, $64, $CC, $CC ; サ シ ス セ ソ ⎵ ⎵
|
||||||
|
db $DA, $DB, $DC, $DD, $DE, $CC ; ダ ヂ ヅ デ ド ⎵
|
||||||
|
db $B2, $B3, $B4, $B5, $CC, $CC ; I J K L ⎵ ⎵
|
||||||
|
|
||||||
|
db $18, $19, $1A, $1B, $1C, $CC, $CC ; た ち つ て と ⎵ ⎵
|
||||||
|
db $3D, $3E, $3F, $40, $41, $CC ; ば び ぶ べ ぼ ⎵
|
||||||
|
db $68, $69, $6A, $6B, $6C, $CC, $CC ; タ チ ツ テ ト ⎵ ⎵
|
||||||
|
db $DF, $E0, $E1, $E2, $E3, $CC ; バ ビ ブ ベ ボ ⎵
|
||||||
|
db $B6, $B7, $B8, $B9, $CC, $CC ; M N O P ⎵ ⎵
|
||||||
|
|
||||||
|
db $20, $21, $22, $23, $24, $CC, $CC ; な に ぬ ね の ⎵ ⎵
|
||||||
|
db $42, $43, $44, $45, $46, $CC ; ぱ ぴ ぷ ぺ ぽ ⎵
|
||||||
|
db $70, $71, $72, $73, $74, $CC, $CC ; ナ ニ ヌ ネ ノ ⎵ ⎵
|
||||||
|
db $E4, $E5, $E6, $E7, $E8, $CC ; パ ピ プ ペ ポ ⎵
|
||||||
|
db $BA, $BB, $BC, $BD, $CC, $CC ; Q R S T ⎵ ⎵
|
||||||
|
|
||||||
|
db $28, $29, $2A, $2B, $2C, $CC, $CC ; は ひ ふ へ ほ ⎵ ⎵
|
||||||
|
db $65, $66, $67, $6D, $6E, $CC
|
||||||
|
db $78, $79, $7A, $7B, $7C, $CC, $CC ; ハ ヒ フ ヘ ホ ⎵ ⎵
|
||||||
|
db $E9, $EA, $EB, $EC, $C6, $CC ; ァ ィ ゥ ェ ォ ⎵
|
||||||
|
db $BE, $BF, $C0, $C1, $CC, $CC ; U V W X ⎵ ⎵
|
||||||
|
|
||||||
|
db $30, $31, $32, $33, $34, $CC, $CC ; ま み む め も ⎵ ⎵
|
||||||
|
db $6F, $75, $76, $77, $7D, $CC ; ザ ジ ズ ゼ ゾ ⎵
|
||||||
|
db $80, $81, $82, $83, $84, $CC, $CC ; マ ミ ム メ モ ⎵ ⎵
|
||||||
|
db $CC, $CC, $CC, $CC, $9A, $CC ; ャ ュ ョ ⎵ ッ ⎵
|
||||||
|
db $C2, $C3, $C9, $CE, $CC, $CC ; Y Z - 〜 ⎵ ⎵
|
||||||
|
|
||||||
|
db $05, $CC, $06, $CC, $07, $CC, $CC ; や ⎵ ゆ ⎵ よ ⎵ ⎵
|
||||||
|
db $7E, $7F, $85, $86, $87, $CC ; ダ ヂ ヅ デ ド ⎵
|
||||||
|
db $55, $CC, $56, $CC, $57, $CC, $CC ; ヤ ⎵ ユ ⎵ ヨ ⎵ ⎵
|
||||||
|
db $A0, $A1, $A2, $A3, $A4, $CC ; ⎵ ⎵ ⎵ ⎵ ⎵ ⎵
|
||||||
|
db $CC, $CC, $CC, $CC, $CC, $CC ; ⎵ ⎵ ⎵ ⎵ ⎵ ⎵
|
||||||
|
|
||||||
|
db $38, $39, $3A, $3B, $3C, $CC, $CC ; ら り る れ ろ ⎵ ⎵
|
||||||
|
db $8D, $8E, $8F, $90, $91, $CC ; バ ビ ブ ベ ボ ⎵
|
||||||
|
db $88, $89, $8A, $8B, $8C, $CC, $CC ; ラ リ ル レ ロ ⎵ ⎵
|
||||||
|
db $A5, $A6, $A7, $A8, $A9, $CC ; ⎵ ⎵ ⎵ ⎵ ⎵ ⎵
|
||||||
|
db $CA, $CB, $CD, $CD, $CC, $CC ; 🡄 🡆 END ⎵ ⎵
|
||||||
|
|
||||||
|
db $0D, $0E, $0F, $CC, $C9, $CC, $CC ; わ を ん ⎵ - ⎵ ⎵
|
||||||
|
db $92, $93, $94, $95, $96, $CC ; パ ピ プ ペ ポ ⎵
|
||||||
|
db $5D, $5E, $5F, $CC, $C9, $CC, $CC ; ワ ヲ ン ⎵ - ⎵ ⎵
|
||||||
|
db $CC, $CC, $CC, $CC, $CC, $CC ; ⎵ ⎵ ⎵ ⎵ ⎵ ⎵
|
||||||
|
db $CC, $CC, $CC, $CC, $CC, $CC ; ⎵ ⎵ ⎵ ⎵ ⎵ ⎵
|
||||||
BIN
data/playernamecharmap.bin
Normal file
BIN
data/playernamecharmap.bin
Normal file
Binary file not shown.
BIN
data/playernamestripes_1.bin
Normal file
BIN
data/playernamestripes_1.bin
Normal file
Binary file not shown.
72
data/playernamestripes_2.asm
Normal file
72
data/playernamestripes_2.asm
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
dw $E164, $3900 ; VRAM $C9C2 | 58 bytes | Horizontal
|
||||||
|
dw $1CA2, $0188, $1CA3, $0188, $1CA4, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DA0, $0188, $1DA1, $0188, $1DA2, $0188
|
||||||
|
dw $1DA3, $0188, $1DA4, $0188, $0188, $0188, $1D4A, $0188
|
||||||
|
dw $1D4B, $0188, $1D4C, $0188, $1D4D
|
||||||
|
|
||||||
|
dw $0165, $3900 ; VRAM $CA02 | 58 bytes | Horizontal
|
||||||
|
dw $1CB2, $0188, $1CB3, $0188, $1CB4, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DB0, $0188, $1DB1, $0188, $1DB2, $0188
|
||||||
|
dw $1DB3, $0188, $1DB4, $0188, $0188, $0188, $1D5A, $0188
|
||||||
|
dw $1D5B, $0188, $1D5C, $0188, $1D5D
|
||||||
|
|
||||||
|
dw $2165, $3900 ; VRAM $CA42 | 58 bytes | Horizontal
|
||||||
|
dw $1CAA, $0188, $1CAB, $0188, $1CAC, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DA5, $0188, $1DA6, $0188, $1DA7, $0188
|
||||||
|
dw $1DA8, $0188, $1DA9, $0188, $0188, $0188, $1D4E, $0188
|
||||||
|
dw $1D4F, $0188, $1D60, $0188, $1D61
|
||||||
|
|
||||||
|
dw $4165, $3900 ; VRAM $CA82 | 58 bytes | Horizontal
|
||||||
|
dw $1CBA, $0188, $1CBB, $0188, $1CBC, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DB5, $0188, $1DB6, $0188, $1DB7, $0188
|
||||||
|
dw $1DB8, $0188, $1DB9, $0188, $0188, $0188, $1D5E, $0188
|
||||||
|
dw $1D5F, $0188, $1D70, $0188, $1D71
|
||||||
|
|
||||||
|
dw $6165, $3900 ; VRAM $CAC2 | 58 bytes | Horizontal
|
||||||
|
dw $1CC2, $0188, $1CC3, $0188, $1CC4, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DAA, $0188, $1DAB, $0188, $1DAC, $0188
|
||||||
|
dw $1DAD, $0188, $1DAE, $0188, $0188, $0188, $1D62, $0188
|
||||||
|
dw $1D63, $0188, $1D64, $0188, $1D65
|
||||||
|
|
||||||
|
dw $8165, $3900 ; VRAM $CB02 | 58 bytes | Horizontal
|
||||||
|
dw $1CD2, $0188, $1CD3, $0188, $1CD4, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DBA, $0188, $1DBB, $0188, $1DBC, $0188
|
||||||
|
dw $1DBD, $0188, $1DBE, $0188, $0188, $0188, $1D72, $0188
|
||||||
|
dw $1D73, $0188, $1D74, $0188, $1D75
|
||||||
|
|
||||||
|
dw $A165, $3900 ; VRAM $CB42 | 58 bytes | Horizontal
|
||||||
|
dw $1CCA, $0188, $1CCB, $0188, $1CCC, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DAF, $0188, $1DC0, $0188, $1DC1, $0188
|
||||||
|
dw $1DC2, $0188, $1DC3, $0188, $0188, $0188, $1D66, $0188
|
||||||
|
dw $1D67, $0188, $1D68, $0188, $1D69
|
||||||
|
|
||||||
|
dw $C165, $3900 ; VRAM $CB82 | 58 bytes | Horizontal
|
||||||
|
dw $1CDA, $0188, $1CDB, $0188, $1CDC, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DBF, $0188, $1DD0, $0188, $1DD1, $0188
|
||||||
|
dw $1DD2, $0188, $1DD3, $0188, $0188, $0188, $1D76, $0188
|
||||||
|
dw $1D77, $0188, $1D78, $0188, $1D79
|
||||||
|
|
||||||
|
dw $E165, $3900 ; VRAM $CBC2 | 58 bytes | Horizontal
|
||||||
|
dw $1CE2, $0188, $1CE3, $0188, $1CE4, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DC4, $0188, $1DC5, $0188, $1DC6, $0188
|
||||||
|
dw $1DC7, $0188, $1DC8, $0188, $0188, $0188, $1D6A, $0188
|
||||||
|
dw $1D6B, $0188, $1D6C, $0188, $1D6D
|
||||||
|
|
||||||
|
dw $0166, $3900 ; VRAM $CC02 | 58 bytes | Horizontal
|
||||||
|
dw $1CF2, $0188, $1CF3, $0188, $1CF4, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DD4, $0188, $1DD5, $0188, $1DD6, $0188
|
||||||
|
dw $1DD7, $0188, $1DD8, $0188, $0188, $0188, $1D7A, $0188
|
||||||
|
dw $1D7B, $0188, $1D7C, $0188, $1D7D
|
||||||
|
|
||||||
|
; dw $2166, $3900 ; VRAM $CC42 | 58 bytes | Horizontal
|
||||||
|
; dw $1CEA, $0188, $1CEB, $0188, $1CEC, $0188, $0188, $0188
|
||||||
|
; dw $0188, $0188, $1DC9, $0188, $1DCA, $0188, $1DCB, $0188
|
||||||
|
; dw $1DCC, $0188, $1D86, $0188, $0188, $0188, $1D6E, $0188
|
||||||
|
; dw $1D6F, $0188, $1D80, $0188, $1D81
|
||||||
|
;
|
||||||
|
; dw $4166, $3900 ; VRAM $CC82 | 58 bytes | Horizontal
|
||||||
|
; dw $1CFA, $0188, $1CFB, $0188, $1CFC, $0188, $0188, $0188
|
||||||
|
; dw $0188, $0188, $1DD9, $0188, $1DDA, $0188, $1DDB, $0188
|
||||||
|
; dw $1DDC, $0188, $1D96, $0188, $0188, $0188, $1D7E, $0188
|
||||||
|
; dw $1D7F, $0188, $1D90, $0188, $1D91
|
||||||
|
|
||||||
BIN
data/playernamestripes_2.bin
Normal file
BIN
data/playernamestripes_2.bin
Normal file
Binary file not shown.
72
data/playernamestripes_3.asm
Normal file
72
data/playernamestripes_3.asm
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
dw $E164, $3900 ; VRAM $C9C2 | 58 bytes | Horizontal
|
||||||
|
dw $1CA2, $0188, $1CA3, $0188, $1CA4, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DA0, $0188, $1DA1, $0188, $1DA2, $0188
|
||||||
|
dw $1DA3, $0188, $1DA4, $0188, $0188, $0188, $1D4A, $0188
|
||||||
|
dw $1D4B, $0188, $1D4C, $0188, $1D4D
|
||||||
|
|
||||||
|
dw $0165, $3900 ; VRAM $CA02 | 58 bytes | Horizontal
|
||||||
|
dw $1CB2, $0188, $1CB3, $0188, $1CB4, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DB0, $0188, $1DB1, $0188, $1DB2, $0188
|
||||||
|
dw $1DB3, $0188, $1DB4, $0188, $0188, $0188, $1D5A, $0188
|
||||||
|
dw $1D5B, $0188, $1D5C, $0188, $1D5D
|
||||||
|
|
||||||
|
dw $2165, $3900 ; VRAM $CA42 | 58 bytes | Horizontal
|
||||||
|
dw $1CAA, $0188, $1CAB, $0188, $1CAC, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DA5, $0188, $1DA6, $0188, $1DA7, $0188
|
||||||
|
dw $1DA8, $0188, $1DA9, $0188, $0188, $0188, $1D4E, $0188
|
||||||
|
dw $1D4F, $0188, $1D60, $0188, $1D61
|
||||||
|
|
||||||
|
dw $4165, $3900 ; VRAM $CA82 | 58 bytes | Horizontal
|
||||||
|
dw $1CBA, $0188, $1CBB, $0188, $1CBC, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DB5, $0188, $1DB6, $0188, $1DB7, $0188
|
||||||
|
dw $1DB8, $0188, $1DB9, $0188, $0188, $0188, $1D5E, $0188
|
||||||
|
dw $1D5F, $0188, $1D70, $0188, $1D71
|
||||||
|
|
||||||
|
dw $6165, $3900 ; VRAM $CAC2 | 58 bytes | Horizontal
|
||||||
|
dw $1CC2, $0188, $1CC3, $0188, $1CC4, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DAA, $0188, $1DAB, $0188, $1DAC, $0188
|
||||||
|
dw $1DAD, $0188, $1DAE, $0188, $0188, $0188, $1D62, $0188
|
||||||
|
dw $1D63, $0188, $1D64, $0188, $1D65
|
||||||
|
|
||||||
|
dw $8165, $3900 ; VRAM $CB02 | 58 bytes | Horizontal
|
||||||
|
dw $1CD2, $0188, $1CD3, $0188, $1CD4, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DBA, $0188, $1DBB, $0188, $1DBC, $0188
|
||||||
|
dw $1DBD, $0188, $1DBE, $0188, $0188, $0188, $1D72, $0188
|
||||||
|
dw $1D73, $0188, $1D74, $0188, $1D75
|
||||||
|
|
||||||
|
dw $A165, $3900 ; VRAM $CB42 | 58 bytes | Horizontal
|
||||||
|
dw $1CCA, $0188, $1CCB, $0188, $1CCC, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DAF, $0188, $1DC0, $0188, $1DC1, $0188
|
||||||
|
dw $1DC2, $0188, $1DC3, $0188, $0188, $0188, $1D66, $0188
|
||||||
|
dw $1D67, $0188, $1D68, $0188, $1D69
|
||||||
|
|
||||||
|
dw $C165, $3900 ; VRAM $CB82 | 58 bytes | Horizontal
|
||||||
|
dw $1CDA, $0188, $1CDB, $0188, $1CDC, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DBF, $0188, $1DD0, $0188, $1DD1, $0188
|
||||||
|
dw $1DD2, $0188, $1DD3, $0188, $0188, $0188, $1D76, $0188
|
||||||
|
dw $1D77, $0188, $1D78, $0188, $1D79
|
||||||
|
|
||||||
|
dw $E165, $3900 ; VRAM $CBC2 | 58 bytes | Horizontal
|
||||||
|
dw $1CE2, $0188, $1CE3, $0188, $1CE4, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DC4, $0188, $1DC5, $0188, $1DC6, $0188
|
||||||
|
dw $1DC7, $0188, $1DC8, $0188, $0188, $0188, $1D6A, $0188
|
||||||
|
dw $1D6B, $0188, $1D6C, $0188, $1D6D
|
||||||
|
|
||||||
|
dw $0166, $3900 ; VRAM $CC02 | 58 bytes | Horizontal
|
||||||
|
dw $1CF2, $0188, $1CF3, $0188, $1CF4, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DD4, $0188, $1DD5, $0188, $1DD6, $0188
|
||||||
|
dw $1DD7, $0188, $1DD8, $0188, $0188, $0188, $1D7A, $0188
|
||||||
|
dw $1D7B, $0188, $1D7C, $0188, $1D7D
|
||||||
|
|
||||||
|
dw $2166, $3900 ; VRAM $CC42 | 58 bytes | Horizontal
|
||||||
|
dw $1CEA, $0188, $1CEB, $0188, $1CEC, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DC9, $0188, $1DCA, $0188, $1DCB, $0188
|
||||||
|
dw $1DCC, $0188, $1D86, $0188, $0188, $0188, $1D6E, $0188
|
||||||
|
dw $1D6F, $0188, $1D80, $0188, $1D81
|
||||||
|
|
||||||
|
dw $4166, $3900 ; VRAM $CC82 | 58 bytes | Horizontal
|
||||||
|
dw $1CFA, $0188, $1CFB, $0188, $1CFC, $0188, $0188, $0188
|
||||||
|
dw $0188, $0188, $1DD9, $0188, $1DDA, $0188, $1DDB, $0188
|
||||||
|
dw $1DDC, $0188, $1D96, $0188, $0188, $0188, $1D7E, $0188
|
||||||
|
dw $1D7F, $0188, $1D90, $0188, $1D91
|
||||||
|
|
||||||
25
data/playernamestripes_4.asm
Normal file
25
data/playernamestripes_4.asm
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
dw $2362, $3900 ; VRAM $C446 | 58 bytes | Horizontal
|
||||||
|
dw $1C48, $0188, $1C49, $0188, $1C4A, $0188, $1C4B, $0188
|
||||||
|
dw $1C4C, $0188, $0188, $0188, $0188, $0188, $1CC5, $0188
|
||||||
|
dw $1CC6, $0188, $1CC7, $0188, $1CCD, $0188, $1CCE, $0188
|
||||||
|
dw $0188, $0188, $1CE8, $0188, $1CE9
|
||||||
|
|
||||||
|
dw $4362, $3900 ; VRAM $C486 | 58 bytes | Horizontal
|
||||||
|
dw $1C58, $0188, $1C59, $0188, $1C5A, $0188, $1C5B, $0188
|
||||||
|
dw $1C5C, $0188, $0188, $0188, $0188, $0188, $1CD5, $0188
|
||||||
|
dw $1CD6, $0188, $1CD7, $0188, $1CDD, $0188, $1CDE, $0188
|
||||||
|
dw $0188, $0188, $1CF8, $0188, $1CF9
|
||||||
|
|
||||||
|
dw $6362, $3900 ; VRAM $C4C6 | 58 bytes | Horizontal
|
||||||
|
dw $1C60, $0188, $1C61, $0188, $1C62, $0188, $1C63, $0188
|
||||||
|
dw $1C64, $0188, $0188, $0188, $0188, $0188, $1CCF, $0188
|
||||||
|
dw $1CE5, $0188, $1CE6, $0188, $1CE7, $0188, $1CED, $0188
|
||||||
|
dw $0188, $0188, $1D00, $0188, $1D01
|
||||||
|
|
||||||
|
|
||||||
|
dw $8362, $3900 ; VRAM $C506 | 58 bytes | Horizontal
|
||||||
|
dw $1C70, $0188, $1C71, $0188, $1C72, $0188, $1C73, $0188
|
||||||
|
dw $1C74, $0188, $0188, $0188, $0188, $0188, $1CDF, $0188
|
||||||
|
dw $1CF5, $0188, $1CF6, $0188, $1CF7, $0188, $1CFD, $0188
|
||||||
|
dw $0188, $0188, $1D10, $0188, $1D11
|
||||||
|
|
||||||
BIN
data/smallchars.2bpp
Normal file
BIN
data/smallchars.2bpp
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
539
decompresseditemgraphics.asm
Normal file
539
decompresseditemgraphics.asm
Normal file
@@ -0,0 +1,539 @@
|
|||||||
|
;===================================================================================================
|
||||||
|
; Get the item's graphic from WRAM/ROM
|
||||||
|
; Bit 7 set indicates an explicit WRAM address
|
||||||
|
; Bit 7 reset indicates an offset into the ROM buffer
|
||||||
|
;===================================================================================================
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
; Enters with A for parameter
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
TransferItemReceiptToBuffer_using_GraphicsID:
|
||||||
|
PHP
|
||||||
|
PHB
|
||||||
|
|
||||||
|
REP #$30
|
||||||
|
PHX
|
||||||
|
PHY
|
||||||
|
|
||||||
|
SEP #$30
|
||||||
|
LDX.b #$00
|
||||||
|
|
||||||
|
.find_reverse
|
||||||
|
CMP.l ItemReceipts_graphics,X
|
||||||
|
BEQ .found
|
||||||
|
|
||||||
|
INX
|
||||||
|
BNE .find_reverse
|
||||||
|
|
||||||
|
.found
|
||||||
|
TXA
|
||||||
|
REP #$30
|
||||||
|
BRA ++
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
TransferRupeesProperly:
|
||||||
|
PHP
|
||||||
|
PHB
|
||||||
|
|
||||||
|
REP #$31
|
||||||
|
PHX
|
||||||
|
PHY
|
||||||
|
|
||||||
|
AND.w #$00FF
|
||||||
|
SBC.w #$0023
|
||||||
|
|
||||||
|
XBA
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
ADC.w #BigDecompressionBuffer+$800
|
||||||
|
|
||||||
|
BRA TransferItemReceiptToBuffer_using_ExplicitBufferAddress
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
TransferItemReceiptToBuffer_using_ReceiptID:
|
||||||
|
PHP : PHB
|
||||||
|
|
||||||
|
REP #$30
|
||||||
|
PHX : PHY
|
||||||
|
|
||||||
|
++ AND.w #$00FF
|
||||||
|
ASL : TAX
|
||||||
|
|
||||||
|
LDA.l BusyItem : BNE +
|
||||||
|
LDA.l StandingItemGraphicsOffsets,X
|
||||||
|
BRA .have_address
|
||||||
|
+
|
||||||
|
LDA.l ItemReceiptGraphicsOffsets,X
|
||||||
|
.have_address
|
||||||
|
BMI TransferItemReceiptToBuffer_using_ExplicitBufferAddress
|
||||||
|
|
||||||
|
.rom_address
|
||||||
|
ADC.w #ItemReceiptGraphicsROM
|
||||||
|
PHK
|
||||||
|
BRA .continue
|
||||||
|
|
||||||
|
#TransferItemReceiptToBuffer_using_ExplicitBufferAddress:
|
||||||
|
PEA.w $7F7F
|
||||||
|
PLB
|
||||||
|
|
||||||
|
.continue
|
||||||
|
PLB
|
||||||
|
TAY
|
||||||
|
LDX.w #62
|
||||||
|
|
||||||
|
.next_write
|
||||||
|
LDA.w $003E,Y
|
||||||
|
STA.l ItemGetGFX+$00,X
|
||||||
|
|
||||||
|
LDA.w $023E,Y
|
||||||
|
STA.l ItemGetGFX+$40,X
|
||||||
|
|
||||||
|
DEY
|
||||||
|
DEY
|
||||||
|
DEX
|
||||||
|
DEX
|
||||||
|
BPL .next_write
|
||||||
|
|
||||||
|
|
||||||
|
REP #$30
|
||||||
|
PLY
|
||||||
|
PLX
|
||||||
|
PLB
|
||||||
|
PLP
|
||||||
|
RTL
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
TransferItemToVRAM:
|
||||||
|
REP #$21
|
||||||
|
SEP #$10
|
||||||
|
|
||||||
|
LDA.w ItemGFXPtr
|
||||||
|
BEQ .exit
|
||||||
|
BMI .wram_address
|
||||||
|
|
||||||
|
.rom_address
|
||||||
|
ADC.w #ItemReceiptGraphicsROM
|
||||||
|
|
||||||
|
LDX.b #ItemReceiptGraphicsROM>>16
|
||||||
|
|
||||||
|
.set_address
|
||||||
|
STA.w $4302
|
||||||
|
ADC.w #$0200
|
||||||
|
STA.w $4312
|
||||||
|
|
||||||
|
STX.w $4304
|
||||||
|
STX.w $4314
|
||||||
|
|
||||||
|
LDX.b #$80
|
||||||
|
STX.w $2115
|
||||||
|
|
||||||
|
LDA.w #$1801
|
||||||
|
STA.w $4300
|
||||||
|
STA.w $4310
|
||||||
|
|
||||||
|
LDA.w #$0040
|
||||||
|
STA.w $4305
|
||||||
|
STA.w $4315
|
||||||
|
|
||||||
|
LDA.w ItemGFXTarget
|
||||||
|
STA.w $2116
|
||||||
|
|
||||||
|
LDX.b #$01
|
||||||
|
STX.w $420B
|
||||||
|
|
||||||
|
ADC.w #$0100
|
||||||
|
STA.w $2116
|
||||||
|
|
||||||
|
INX
|
||||||
|
STX.w $420B
|
||||||
|
|
||||||
|
STZ.w ItemGFXPtr
|
||||||
|
STZ.w ItemGFXTarget
|
||||||
|
|
||||||
|
.exit
|
||||||
|
RTL
|
||||||
|
|
||||||
|
.wram_address
|
||||||
|
LDX.b #$7F
|
||||||
|
BRA .set_address
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
; Decompress everything at the start of the game
|
||||||
|
;===================================================================================================
|
||||||
|
DecompBufferOffset = $18
|
||||||
|
DecompTestByte = $04
|
||||||
|
DecompCommand = $02
|
||||||
|
DecompSize = $00
|
||||||
|
DecompTileCount = $1A
|
||||||
|
DecompSaveY = $1A
|
||||||
|
Decomp3BPPScratch = $20
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
DecompressAllItemGraphics:
|
||||||
|
PHP
|
||||||
|
PHB
|
||||||
|
PHD
|
||||||
|
|
||||||
|
REP #$38
|
||||||
|
|
||||||
|
; Stack change for safety
|
||||||
|
TSX
|
||||||
|
|
||||||
|
LDA.w #$1400
|
||||||
|
TCS
|
||||||
|
|
||||||
|
PHX
|
||||||
|
|
||||||
|
; direct page change for speed
|
||||||
|
LDA.w #$1200
|
||||||
|
TCD
|
||||||
|
|
||||||
|
STZ.b DecompBufferOffset
|
||||||
|
|
||||||
|
SEP #$34
|
||||||
|
|
||||||
|
STA.l $4200 ; already 0 from the LDA above
|
||||||
|
|
||||||
|
LDX.b #$5D+$73 : JSR FastSpriteDecomp
|
||||||
|
LDX.b #$5C+$73 : JSR FastSpriteDecomp
|
||||||
|
LDX.b #$5B+$73 : JSR FastSpriteDecomp
|
||||||
|
LDX.b #$5A+$73 : JSR FastSpriteDecomp
|
||||||
|
|
||||||
|
REP #$30
|
||||||
|
PLX
|
||||||
|
TXS
|
||||||
|
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
|
LDA.b #$81
|
||||||
|
STA.l $4200
|
||||||
|
|
||||||
|
|
||||||
|
PLD
|
||||||
|
PLB
|
||||||
|
PLP
|
||||||
|
|
||||||
|
RTL
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
; I normally hate macros like this... but I don't feel like constantly rewriting this
|
||||||
|
;===================================================================================================
|
||||||
|
macro GetNextByte()
|
||||||
|
LDA.w $0000,Y
|
||||||
|
INY
|
||||||
|
BNE ?++
|
||||||
|
|
||||||
|
; Y pulls more than it needs, but that's fine
|
||||||
|
; the high byte should only be affected if we somehow have FF as our bank
|
||||||
|
; and if that happens, we have other problems
|
||||||
|
PHB
|
||||||
|
PLY
|
||||||
|
INY
|
||||||
|
PHY
|
||||||
|
PLB
|
||||||
|
|
||||||
|
LDY.w #$8000
|
||||||
|
|
||||||
|
?++
|
||||||
|
endmacro
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
; There's no long vanilla routine, and we're going to make heavy use of this
|
||||||
|
; so might as well rewrite it to be fast
|
||||||
|
;===================================================================================================
|
||||||
|
FastSpriteDecomp:
|
||||||
|
SEP #$30
|
||||||
|
|
||||||
|
LDA.l $80CFC0,X : PHA : PLB ; bank
|
||||||
|
LDA.l $80D09F,X : XBA ; high
|
||||||
|
LDA.l $80D17E,X ; low
|
||||||
|
|
||||||
|
REP #$10
|
||||||
|
|
||||||
|
TAY
|
||||||
|
|
||||||
|
LDX.w #$0000
|
||||||
|
|
||||||
|
.next_command
|
||||||
|
%GetNextByte()
|
||||||
|
|
||||||
|
CMP.b #$FF
|
||||||
|
BNE .continue
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
JMP Unrolled3BPPConvert
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.continue
|
||||||
|
CMP.b #$E0
|
||||||
|
BCS .expanded
|
||||||
|
|
||||||
|
STA.b DecompTestByte
|
||||||
|
|
||||||
|
REP #$20
|
||||||
|
|
||||||
|
AND.w #$001F
|
||||||
|
|
||||||
|
BRA .normal
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
; Putting some commands up here for branch distance
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
.nonrepeating
|
||||||
|
REP #$21
|
||||||
|
TYA
|
||||||
|
ADC.b DecompSize
|
||||||
|
ORA.w #$8000
|
||||||
|
STA.b DecompSize
|
||||||
|
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
|
.next_nonrepeating
|
||||||
|
%GetNextByte()
|
||||||
|
|
||||||
|
STA.l DecompBuffer2,X
|
||||||
|
|
||||||
|
INX
|
||||||
|
|
||||||
|
CPY.b DecompSize
|
||||||
|
BNE .next_nonrepeating
|
||||||
|
|
||||||
|
BRA .next_command
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.repeating
|
||||||
|
%GetNextByte()
|
||||||
|
|
||||||
|
STY.b DecompSaveY
|
||||||
|
|
||||||
|
LDY.b DecompSize
|
||||||
|
|
||||||
|
.next_repeating
|
||||||
|
STA.l DecompBuffer2,X
|
||||||
|
|
||||||
|
INX
|
||||||
|
DEY
|
||||||
|
BNE .next_repeating
|
||||||
|
|
||||||
|
LDY.b DecompSaveY
|
||||||
|
BRA .next_command
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
; Rest of command handling
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
.expanded
|
||||||
|
STA.b DecompCommand
|
||||||
|
|
||||||
|
ASL
|
||||||
|
ASL
|
||||||
|
ASL
|
||||||
|
STA.b DecompTestByte
|
||||||
|
|
||||||
|
LDA.b DecompCommand
|
||||||
|
AND.b #$03
|
||||||
|
XBA
|
||||||
|
|
||||||
|
%GetNextByte()
|
||||||
|
|
||||||
|
REP #$20
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.normal
|
||||||
|
INC
|
||||||
|
STA.b DecompSize
|
||||||
|
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
|
LDA.b DecompTestByte
|
||||||
|
|
||||||
|
AND.b #$E0
|
||||||
|
BEQ .nonrepeating
|
||||||
|
BMI .copy
|
||||||
|
|
||||||
|
ASL
|
||||||
|
BPL .repeating
|
||||||
|
|
||||||
|
ASL
|
||||||
|
BPL .repeating_word
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.incremental
|
||||||
|
%GetNextByte()
|
||||||
|
|
||||||
|
STY.b DecompSaveY
|
||||||
|
|
||||||
|
LDY.b DecompSize
|
||||||
|
|
||||||
|
.next_incremental
|
||||||
|
STA.l DecompBuffer2,X
|
||||||
|
|
||||||
|
INC
|
||||||
|
INX
|
||||||
|
|
||||||
|
DEY
|
||||||
|
BNE .next_incremental
|
||||||
|
|
||||||
|
LDY.b DecompSaveY
|
||||||
|
JMP .next_command
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.repeating_word
|
||||||
|
JSR .get_next_word
|
||||||
|
REP #$20
|
||||||
|
|
||||||
|
STY.b DecompSaveY
|
||||||
|
|
||||||
|
LDY.b DecompSize
|
||||||
|
DEY
|
||||||
|
|
||||||
|
.next_word
|
||||||
|
STA.l DecompBuffer2,X
|
||||||
|
|
||||||
|
INX
|
||||||
|
INX
|
||||||
|
|
||||||
|
DEY
|
||||||
|
DEY
|
||||||
|
BPL .next_word
|
||||||
|
|
||||||
|
INY
|
||||||
|
BEQ .not_too_far
|
||||||
|
|
||||||
|
DEX
|
||||||
|
|
||||||
|
.not_too_far
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
|
LDY.b DecompSaveY
|
||||||
|
|
||||||
|
JMP .next_command
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.copy
|
||||||
|
JSR .get_next_word
|
||||||
|
|
||||||
|
STY.b DecompSaveY
|
||||||
|
|
||||||
|
TAY
|
||||||
|
|
||||||
|
LDA.b DecompSize
|
||||||
|
BNE ++
|
||||||
|
|
||||||
|
DEC.b DecompSize+1
|
||||||
|
|
||||||
|
++ PHB
|
||||||
|
LDA.b #$7F
|
||||||
|
PHA
|
||||||
|
PLB
|
||||||
|
|
||||||
|
.next_copy
|
||||||
|
LDA.w DecompBuffer2,Y
|
||||||
|
STA.w DecompBuffer2,X
|
||||||
|
|
||||||
|
INX
|
||||||
|
INY
|
||||||
|
|
||||||
|
DEC.b DecompSize+0
|
||||||
|
BNE .next_copy
|
||||||
|
|
||||||
|
DEC.b DecompSize+1
|
||||||
|
BPL .next_copy
|
||||||
|
|
||||||
|
PLB
|
||||||
|
|
||||||
|
LDY.b DecompSaveY
|
||||||
|
|
||||||
|
JMP .next_command
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
; These are only used once per command, so I'm fine with letting them be a JSR I guess
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
.get_next_word
|
||||||
|
%GetNextByte()
|
||||||
|
XBA
|
||||||
|
|
||||||
|
%GetNextByte()
|
||||||
|
XBA
|
||||||
|
|
||||||
|
RTS
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
; More macros, because lazy
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
macro DoPlanesA(offset)
|
||||||
|
LDA.w DecompBuffer2+<offset>+<offset>,Y
|
||||||
|
STA.w BigDecompressionBuffer+<offset>+<offset>,X
|
||||||
|
|
||||||
|
ORA.w DecompBuffer2+<offset>+<offset>-1,Y
|
||||||
|
AND.w #$FF00
|
||||||
|
STA.b Decomp3BPPScratch
|
||||||
|
|
||||||
|
LDA.w DecompBuffer2+$10+<offset>,Y
|
||||||
|
AND.w #$00FF
|
||||||
|
TSB.b Decomp3BPPScratch
|
||||||
|
|
||||||
|
XBA
|
||||||
|
ORA.b Decomp3BPPScratch
|
||||||
|
STA.w BigDecompressionBuffer+$10+<offset>+<offset>,X
|
||||||
|
|
||||||
|
endmacro
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
Unrolled3BPPConvert:
|
||||||
|
LDA.b #$7F
|
||||||
|
PHA
|
||||||
|
PLB
|
||||||
|
|
||||||
|
REP #$21
|
||||||
|
|
||||||
|
LDY.w #$0000
|
||||||
|
LDX.b DecompBufferOffset
|
||||||
|
|
||||||
|
.next_3bpp_tile
|
||||||
|
%DoPlanesA(0) ; 8 times
|
||||||
|
%DoPlanesA(1)
|
||||||
|
%DoPlanesA(2)
|
||||||
|
%DoPlanesA(3)
|
||||||
|
%DoPlanesA(4)
|
||||||
|
%DoPlanesA(5)
|
||||||
|
%DoPlanesA(6)
|
||||||
|
%DoPlanesA(7)
|
||||||
|
|
||||||
|
; carry will always be clear
|
||||||
|
; don't worry
|
||||||
|
TXA
|
||||||
|
ADC.w #32
|
||||||
|
TAX
|
||||||
|
|
||||||
|
; just trust me
|
||||||
|
TYA
|
||||||
|
ADC.w #24
|
||||||
|
TAY
|
||||||
|
|
||||||
|
CMP.w #24*64
|
||||||
|
BCS .done
|
||||||
|
|
||||||
|
JMP .next_3bpp_tile
|
||||||
|
|
||||||
|
.done
|
||||||
|
STX.b DecompBufferOffset
|
||||||
|
SEP #$30
|
||||||
|
|
||||||
|
RTS
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
|
||||||
95
dialog.asm
95
dialog.asm
@@ -114,26 +114,45 @@ FreeDungeonItemNotice:
|
|||||||
+ : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for dungeon big key
|
+ : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for dungeon big key
|
||||||
LDA.w ScratchBufferV : AND.b #$F0 : CMP.b #$90 : BNE + ; big key of...
|
LDA.w ScratchBufferV : AND.b #$F0 : CMP.b #$90 : BNE + ; big key of...
|
||||||
%CopyDialog(Notice_BigKeyOf)
|
%CopyDialog(Notice_BigKeyOf)
|
||||||
BRA .dungeon
|
JMP .dungeon
|
||||||
+ : LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for dungeon small key
|
+ : LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for dungeon small key
|
||||||
LDA.w ScratchBufferV : AND.b #$F0 : CMP.b #$A0 : BNE + ; small key of...
|
LDA.w ScratchBufferV : AND.b #$F0 : CMP.b #$A0 : BNE + ; small key of...
|
||||||
LDA.w ScratchBufferV : CMP.b #$AF : BNE ++ : JMP .skip : ++
|
LDA.w ScratchBufferV : CMP.b #$AF : BNE ++ : JMP .skip : ++
|
||||||
%CopyDialog(Notice_SmallKeyOf)
|
%CopyDialog(Notice_SmallKeyOf)
|
||||||
LDA.b #$01 : STA.w ScratchBufferNV ; set up a flip for small keys
|
LDA.b #$01 : STA.w ScratchBufferNV ; set up a flip for small keys
|
||||||
BRA .dungeon
|
BRA .dungeon
|
||||||
+
|
+ : LDA.l FreeItemText : AND.b #$20 : BEQ + ; show message for crystal
|
||||||
|
LDA.w ScratchBufferV : CMP.b #$B0 : !BLT + ; crystal #
|
||||||
|
CMP.b #$B7 : !BGE +
|
||||||
|
%CopyDialog(Notice_Crystal)
|
||||||
|
JMP .crystal
|
||||||
|
+
|
||||||
JMP .skip ; it's not something we are going to give a notice for
|
JMP .skip ; it's not something we are going to give a notice for
|
||||||
|
|
||||||
.dungeon
|
.dungeon
|
||||||
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
|
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
|
||||||
LDA.w ScratchBufferV
|
LDA.w ScratchBufferV
|
||||||
AND.b #$0F ; looking at low bits only
|
AND.b #$0F
|
||||||
STA.w ScratchBufferNV+1
|
STA.w ScratchBufferNV+1
|
||||||
LDA.w ScratchBufferNV : BEQ +
|
LDA.w ScratchBufferNV : BEQ +
|
||||||
LDA.w ScratchBufferNV
|
LDA.w ScratchBufferNV
|
||||||
LDA.b #$0F : !SUB.w ScratchBufferNV+1 : STA.w ScratchBufferNV+1 ; flip the values for small keys
|
LDA.b #$0F : !SUB.w ScratchBufferNV+1 : STA.w ScratchBufferNV+1 ; flip the values for small keys
|
||||||
+
|
+
|
||||||
LDA.w ScratchBufferNV+1
|
LDA.w ScratchBufferNV+1
|
||||||
|
ASL : TAX
|
||||||
|
REP #$20
|
||||||
|
LDA.l DungeonItemIDMap,X : CMP.w #$0003 : BCC .hc_sewers
|
||||||
|
CMP.w DungeonID : BNE +
|
||||||
|
BRA .self_notice
|
||||||
|
.hc_sewers
|
||||||
|
LDA.w DungeonID : CMP.w #$0003 : BCS +
|
||||||
|
.self_notice
|
||||||
|
SEP #$20
|
||||||
|
%CopyDialog(Notice_Self)
|
||||||
|
JMP.w .done
|
||||||
|
+
|
||||||
|
SEP #$20
|
||||||
|
LDA.w ScratchBufferNV+1
|
||||||
CMP.b #$00 : BNE + ; ...light world
|
CMP.b #$00 : BNE + ; ...light world
|
||||||
%CopyDialog(Notice_LightWorld) : JMP .done
|
%CopyDialog(Notice_LightWorld) : JMP .done
|
||||||
+ : CMP.b #$01 : BNE + ; ...dark world
|
+ : CMP.b #$01 : BNE + ; ...dark world
|
||||||
@@ -161,12 +180,34 @@ FreeDungeonItemNotice:
|
|||||||
+ : CMP.b #$0C : BNE + ; ...desert palace
|
+ : CMP.b #$0C : BNE + ; ...desert palace
|
||||||
%CopyDialog(Notice_Desert) : JMP .done
|
%CopyDialog(Notice_Desert) : JMP .done
|
||||||
+ : CMP.b #$0D : BNE + ; ...eastern palace
|
+ : CMP.b #$0D : BNE + ; ...eastern palace
|
||||||
%CopyDialog(Notice_Eastern) : BRA .done
|
%CopyDialog(Notice_Eastern) : JMP .done
|
||||||
+ : CMP.b #$0E : BNE + ; ...hyrule castle
|
+ : CMP.b #$0E : BNE + ; ...hyrule castle
|
||||||
%CopyDialog(Notice_Castle) : BRA .done
|
%CopyDialog(Notice_Castle) : JMP .done
|
||||||
+ : CMP.b #$0F : BNE + ; ...sewers
|
+ : CMP.b #$0F : BNE + ; ...sewers
|
||||||
%CopyDialog(Notice_Sewers)
|
%CopyDialog(Notice_Sewers)
|
||||||
+
|
+
|
||||||
|
JMP .done
|
||||||
|
|
||||||
|
.crystal
|
||||||
|
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
|
||||||
|
LDA.w ScratchBufferV
|
||||||
|
AND.b #$0F ; looking at low bits only
|
||||||
|
CMP.b #$00 : BNE +
|
||||||
|
%CopyDialog(Notice_Six) : JMP .done
|
||||||
|
+ : CMP.b #$01 : BNE +
|
||||||
|
%CopyDialog(Notice_One) : JMP .done
|
||||||
|
+ : CMP.b #$02 : BNE +
|
||||||
|
%CopyDialog(Notice_Five) : JMP .done
|
||||||
|
+ : CMP.b #$03 : BNE +
|
||||||
|
%CopyDialog(Notice_Seven) : JMP .done
|
||||||
|
+ : CMP.b #$04 : BNE +
|
||||||
|
%CopyDialog(Notice_Two) : JMP .done
|
||||||
|
+ : CMP.b #$05 : BNE +
|
||||||
|
%CopyDialog(Notice_Four) : JMP .done
|
||||||
|
+ : CMP.b #$06 : BNE +
|
||||||
|
%CopyDialog(Notice_Three) : JMP .done
|
||||||
|
+
|
||||||
|
|
||||||
.done
|
.done
|
||||||
|
|
||||||
STZ.w TextID : STZ.w TextID+1 ; reset decompression buffer
|
STZ.w TextID : STZ.w TextID+1 ; reset decompression buffer
|
||||||
@@ -360,7 +401,7 @@ RTL
|
|||||||
|
|
||||||
;---------------------------------------------------------------------------------------------------
|
;---------------------------------------------------------------------------------------------------
|
||||||
AgahnimAsksAboutPed:
|
AgahnimAsksAboutPed:
|
||||||
LDA.l InvincibleGanon
|
LDA.l GanonVulnerableMode
|
||||||
CMP.b #$06 : BNE .vanilla
|
CMP.b #$06 : BNE .vanilla
|
||||||
|
|
||||||
LDA.l OverworldEventDataWRAM+$80 ; check ped flag
|
LDA.l OverworldEventDataWRAM+$80 ; check ped flag
|
||||||
@@ -371,7 +412,7 @@ AgahnimAsksAboutPed:
|
|||||||
STA.w TextID
|
STA.w TextID
|
||||||
|
|
||||||
.vanilla
|
.vanilla
|
||||||
JML $05FA8E ; Sprite_ShowMessageMinimal
|
JML $85FA8E ; Sprite_ShowMessageMinimal
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Main_ShowTextMessage_Alt:
|
Main_ShowTextMessage_Alt:
|
||||||
; Are we in text mode? If so then end the routine.
|
; Are we in text mode? If so then end the routine.
|
||||||
@@ -422,24 +463,24 @@ Main_ShowTextMessage_Alt_already_in_text_mode:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
CalculateSignIndex:
|
CalculateSignIndex:
|
||||||
; for the big 1024x1024 screens we are calculating link's effective
|
; for the big 1024x1024 screens we are calculating link's effective
|
||||||
; screen area, as though the screen was 4 different 512x512 screens.
|
; screen area, as though the screen was 4 different 512x512 screens.
|
||||||
; And we do this in a way that will likely give the right value even
|
; And we do this in a way that will likely give the right value even
|
||||||
; with major glitches.
|
; with major glitches.
|
||||||
|
|
||||||
LDA.b OverworldIndex : ASL A : TAY ;what we wrote over
|
LDA.b OverworldIndex : ASL A : TAY ;what we wrote over
|
||||||
|
|
||||||
LDA.w OWScreenSize : BEQ .done ; If a small map, we can skip these calculations.
|
LDA.w OWScreenSize : BEQ .done ; If a small map, we can skip these calculations.
|
||||||
|
|
||||||
LDA.b LinkPosY+1 : AND.w #$0002 : ASL #2 : EOR.b OverworldIndex : AND.w #$0008 : BEQ +
|
LDA.b LinkPosY+1 : AND.w #$0002 : ASL #2 : EOR.b OverworldIndex : AND.w #$0008 : BEQ +
|
||||||
TYA : !ADD.w #$0010 : TAY ;add 16 if we are in lower half of big screen.
|
TYA : !ADD.w #$0010 : TAY ;add 16 if we are in lower half of big screen.
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA.b LinkPosX+1 : AND.w #$0002 : LSR : EOR.b OverworldIndex : AND.w #$0001 : BEQ +
|
LDA.b LinkPosX+1 : AND.w #$0002 : LSR : EOR.b OverworldIndex : AND.w #$0001 : BEQ +
|
||||||
TYA : INC #2 : TAY ;add 16 if we are in lower half of big screen.
|
TYA : INC #2 : TAY ;add 16 if we are in lower half of big screen.
|
||||||
+
|
+
|
||||||
; ensure even if things go horribly wrong, we don't read the sign out of bounds and crash:
|
; ensure even if things go horribly wrong, we don't read the sign out of bounds and crash:
|
||||||
TYA : AND.w #$00FF : TAY
|
TYA : AND.w #$00FF : TAY
|
||||||
|
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
@@ -463,7 +504,7 @@ Sprite_ShowSolicitedMessageIfPlayerFacing_Alt:
|
|||||||
|
|
||||||
; Make sure that the sprite is facing towards the player, otherwise
|
; Make sure that the sprite is facing towards the player, otherwise
|
||||||
; talking can't happen. (What sprites actually use this???)
|
; 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
|
PHY
|
||||||
|
|
||||||
@@ -471,10 +512,10 @@ Sprite_ShowSolicitedMessageIfPlayerFacing_Alt:
|
|||||||
LDY.w TextID+1
|
LDY.w TextID+1
|
||||||
|
|
||||||
; Check what room we're in so we know which npc we're talking to
|
; Check what room we're in so we know which npc we're talking to
|
||||||
LDA.b RoomIndex
|
LDA.b RoomIndex
|
||||||
CMP.b #$05 : BEQ .SahasrahlaDialogs
|
CMP.b #$05 : BEQ .SahasrahlaDialogs
|
||||||
CMP.b #$1C : BEQ .BombShopGuyDialog
|
CMP.b #$1C : BEQ .BombShopGuyDialog
|
||||||
BRA .SayNothing
|
BRA .SayNothing
|
||||||
|
|
||||||
.SahasrahlaDialogs
|
.SahasrahlaDialogs
|
||||||
REP #$20 : LDA.l MapReveal_Sahasrahla : ORA.l MapOverlay : STA.l MapOverlay : SEP #$20
|
REP #$20 : LDA.l MapReveal_Sahasrahla : ORA.l MapOverlay : STA.l MapOverlay : SEP #$20
|
||||||
@@ -520,7 +561,7 @@ Sprite_ShowSolicitedMessageIfPlayerFacing_PreserveMessage:
|
|||||||
|
|
||||||
; Make sure that the sprite is facing towards the player, otherwise
|
; Make sure that the sprite is facing towards the player, otherwise
|
||||||
; talking can't happen. (What sprites actually use this???)
|
; 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
|
PLA : XBA : PLA
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
StoreLastOverworldDoorID:
|
StoreLastOverworldDoorID:
|
||||||
TXA : INC
|
TXA : INC
|
||||||
STA.l PreviousOverworldDoor
|
STA.l PreviousOverworldDoor
|
||||||
LDA.l $1BBB73, X : STA.w EntranceIndex
|
LDA.l $9BBB73, X : STA.w EntranceIndex
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
327
dungeondrops.asm
327
dungeondrops.asm
@@ -1,9 +1,326 @@
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Dungeon & Boss Drop Fixes
|
; Dungeon & Boss Drop Fixes
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DropSafeDungeon:
|
SpawnDungeonPrize:
|
||||||
LDA.w DungeonID : CMP.b #$08 : BEQ +
|
PHX : PHB
|
||||||
LDA.l $01C6FC, X : JML Sprite_SpawnFallingItem
|
JSL.l AttemptItemSubstitution
|
||||||
+
|
JSL.l ResolveLootIDLong
|
||||||
|
STA.w ItemReceiptID
|
||||||
|
TAX
|
||||||
|
LDA.b #$29 : LDY.b #$06
|
||||||
|
|
||||||
|
JSL.l AddAncillaLong
|
||||||
|
BCS .failed_spawn
|
||||||
|
LDA.w ItemReceiptID
|
||||||
|
STA.w AncillaGet,X : STA.w SpriteID,X
|
||||||
|
JSR.w AddDungeonPrizeAncilla
|
||||||
|
.failed_spawn
|
||||||
|
PLB : PLX
|
||||||
|
RTL
|
||||||
|
|
||||||
|
AddDungeonPrizeAncilla:
|
||||||
|
LDY.w ItemReceiptID
|
||||||
|
STZ.w AncillaVelocityY,X
|
||||||
|
STZ.w AncillaVelocityX,X
|
||||||
|
STZ.w AncillaGeneral,X
|
||||||
|
STZ.w $0385,X
|
||||||
|
STZ.w $0C54,X
|
||||||
|
|
||||||
|
LDA.b #$D0 : STA.w AncillaVelocityZ,X
|
||||||
|
LDA.b #$80 : STA.w AncillaZCoord,X
|
||||||
|
LDA.b #$09 : STA.w AncillaTimer,X
|
||||||
|
LDA.b #$00 : STA.w $0394,X
|
||||||
|
LDA.w AncillaGet,X : STA.w ItemReceiptID
|
||||||
|
LDA.w DungeonID : CMP.b #$14 : BNE .not_hera
|
||||||
|
LDA.b LinkAbsoluteY+1 : AND.b #$FE
|
||||||
|
INC A
|
||||||
|
STA.b Scrap01
|
||||||
|
STZ.b Scrap00
|
||||||
|
LDA.b LinkAbsoluteX+1 : AND.b #$FE
|
||||||
|
INC A
|
||||||
|
STA.b Scrap03
|
||||||
|
STZ.b Scrap02
|
||||||
|
BRA .set_coords_exit
|
||||||
|
.not_hera
|
||||||
|
TYA : ASL : TAY
|
||||||
|
REP #$20
|
||||||
|
LDA.w #$0078
|
||||||
|
CLC : ADC.b BG2V
|
||||||
|
STA.b Scrap00
|
||||||
|
LDA.w #$0078
|
||||||
|
CLC : ADC.b BG2H
|
||||||
|
STA.b Scrap02
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
|
.set_coords_exit
|
||||||
|
LDA.b Scrap00 : STA.w AncillaCoordYLow,X
|
||||||
|
LDA.b Scrap01 : STA.w AncillaCoordYHigh,X
|
||||||
|
LDA.b Scrap02 : STA.w AncillaCoordXLow,X
|
||||||
|
LDA.b Scrap03 : STA.w AncillaCoordXHigh,X
|
||||||
|
RTS
|
||||||
|
|
||||||
|
PrepPrizeTile:
|
||||||
|
PHA : PHX : PHY
|
||||||
|
LDA.w AncillaGet, X
|
||||||
|
JSL.l AttemptItemSubstitution
|
||||||
|
JSL.l ResolveLootIDLong
|
||||||
|
STA.w SpriteID,X
|
||||||
|
JSL.l TransferItemReceiptToBuffer_using_ReceiptID
|
||||||
|
PLY : PLX : PLA
|
||||||
|
RTL
|
||||||
|
|
||||||
|
SetItemPose:
|
||||||
|
PHA
|
||||||
|
LDA.w DungeonID : BMI .one_handed
|
||||||
|
LDA.w RoomItemsTaken : BIT.b #$80 : BNE +
|
||||||
|
.one_handed
|
||||||
|
PLA
|
||||||
|
JML $8799F2
|
||||||
|
+
|
||||||
|
JSR.w CrystalOrPendantBehavior : BCC .one_handed
|
||||||
|
.two_handed
|
||||||
|
PLA
|
||||||
|
JML $8799EE ; cool pose
|
||||||
|
|
||||||
|
SetPrizeCoords:
|
||||||
|
PHX : PHY
|
||||||
|
STZ.b Scrap03
|
||||||
|
LDA.w ItemReceiptMethod : CMP.b #$03 : BEQ +
|
||||||
|
.regular_coords
|
||||||
|
PLY : PLX
|
||||||
|
LDY.w AncillaGet,X
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
JSR.w CrystalOrPendantBehavior : BCC .regular_coords
|
||||||
|
PLY : PLX
|
||||||
|
LDY.b #$20 ; Treat as crystal
|
||||||
|
RTL
|
||||||
|
|
||||||
|
SetCutsceneFlag:
|
||||||
|
; Out: c - Cutscene flag $02 if set, $01 if unset.
|
||||||
|
PHX
|
||||||
|
LDY.b #$01 ; wrote over
|
||||||
|
LDA.w DungeonID : BMI .no_cutscene
|
||||||
|
LDA.w RoomItemsTaken : BIT #$80 : BNE .dungeon_prize
|
||||||
|
.no_cutscene
|
||||||
|
PLX
|
||||||
|
CLC
|
||||||
|
RTL
|
||||||
|
.dungeon_prize
|
||||||
|
LDA.w ItemReceiptID : TAX
|
||||||
|
LDA.l InventoryTable_properties,X : BPL .no_cutscene
|
||||||
|
PLX
|
||||||
|
SEC
|
||||||
|
RTL
|
||||||
|
|
||||||
|
AnimatePrizeCutscene:
|
||||||
|
LDA.w ItemReceiptMethod : CMP.b #$03 : BNE +
|
||||||
|
JSR.w CrystalOrPendantBehavior : BCC +
|
||||||
|
LDA.w DungeonID : BMI +
|
||||||
|
LDA.w RoomItemsTaken : BIT #$80 : BEQ +
|
||||||
|
SEC
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
CLC
|
||||||
|
RTL
|
||||||
|
|
||||||
|
PrizeDropSparkle:
|
||||||
|
LDA.w AncillaID,X : CMP.b #$29 : BNE .no_sparkle
|
||||||
|
JSR.w CrystalOrPendantBehavior : BCC .no_sparkle
|
||||||
|
SEC
|
||||||
|
RTL
|
||||||
|
.no_sparkle
|
||||||
|
CLC
|
||||||
|
RTL
|
||||||
|
|
||||||
|
HandleDropSFX:
|
||||||
|
LDA.w RoomItemsTaken : BIT #$80 : BEQ .no_sound
|
||||||
|
JSR.w CrystalOrPendantBehavior : BCC .no_sound
|
||||||
|
SEC
|
||||||
|
RTL
|
||||||
|
.no_sound
|
||||||
|
CLC
|
||||||
|
RTL
|
||||||
|
|
||||||
|
HandleCrystalsField:
|
||||||
|
TAX
|
||||||
|
LDA.w ItemReceiptID : CMP.b #$20 : BNE .not_crystal
|
||||||
|
TXA
|
||||||
|
STA.l CrystalsField
|
||||||
|
RTL
|
||||||
|
.not_crystal
|
||||||
|
RTL
|
||||||
|
|
||||||
|
MaybeKeepLootID:
|
||||||
|
PHA
|
||||||
|
LDA.w DungeonID : BMI .no_prize
|
||||||
|
LDA.w RoomItemsTaken : BIT #$80 : BNE .prize
|
||||||
|
.no_prize
|
||||||
|
STZ.w ItemReceiptID
|
||||||
|
STZ.w ItemReceiptPose
|
||||||
|
PLA
|
||||||
|
RTL
|
||||||
|
.prize
|
||||||
|
STZ.w ItemReceiptPose
|
||||||
|
PLA
|
||||||
|
RTL
|
||||||
|
|
||||||
|
CheckSpawnPrize:
|
||||||
|
; In: A - DungeonID
|
||||||
|
; Out: c - Spawn prize if set
|
||||||
|
REP #$20
|
||||||
|
LDX.w DungeonID
|
||||||
|
LDA.l DungeonItemMasks,X : AND.l DungeonsCompleted : BEQ .spawn
|
||||||
|
SEP #$20
|
||||||
|
CLC
|
||||||
|
RTL
|
||||||
|
.spawn
|
||||||
|
SEP #$21
|
||||||
|
RTL
|
||||||
|
|
||||||
|
CheckDungeonCompletion:
|
||||||
|
LDX.w DungeonID
|
||||||
|
REP #$20
|
||||||
|
LDA.l DungeonItemMasks,X : AND.l DungeonsCompleted
|
||||||
|
SEP #$20
|
||||||
|
RTL
|
||||||
|
|
||||||
|
MaybeOpenDoor:
|
||||||
|
;LDA.w ItemReceiptID : TAX
|
||||||
|
LDA.w DungeonID : LSR : TAX
|
||||||
|
LDA.l DungeonPrizeReceiptID,X : TAX
|
||||||
|
LDA.l InventoryTable_properties,X : BMI .no_open
|
||||||
|
REP #$20
|
||||||
|
LDX.w DungeonID
|
||||||
|
LDA.l DungeonMask,X : AND.l DungeonsCompleted
|
||||||
|
SEP #$20
|
||||||
|
SEC
|
||||||
|
RTL
|
||||||
|
.no_open
|
||||||
|
REP #$20
|
||||||
|
LDX.w DungeonID
|
||||||
|
LDA.l DungeonMask,X : AND.l DungeonsCompleted
|
||||||
|
SEP #$20
|
||||||
|
CLC
|
||||||
|
RTL
|
||||||
|
|
||||||
|
PendantMusicCheck:
|
||||||
|
; In: A - Item receipt ID
|
||||||
|
PHX
|
||||||
|
TAY
|
||||||
|
LDA.w ItemReceiptMethod : CMP.b #$03 : BNE .dont_wait
|
||||||
|
TYX
|
||||||
|
LDA.l InventoryTable_properties,X : BMI .dont_wait
|
||||||
|
PLX
|
||||||
|
SEC
|
||||||
|
RTL
|
||||||
|
.dont_wait
|
||||||
|
PLX
|
||||||
|
CLC
|
||||||
|
RTL
|
||||||
|
|
||||||
|
PrepPrizeOAMCoordinates:
|
||||||
|
PHX : PHY
|
||||||
|
LDY.w AncillaLayer,X
|
||||||
|
|
||||||
|
LDA.w $F67F,Y : STA.b $65
|
||||||
|
STZ.b $64
|
||||||
|
|
||||||
|
LDA.w AncillaCoordYLow,X : STA.b Scrap00
|
||||||
|
LDA.w AncillaCoordYHigh,X : STA.b Scrap01
|
||||||
|
LDA.w AncillaCoordXLow,X : STA.b Scrap02
|
||||||
|
LDA.w AncillaCoordXHigh,X : STA.b Scrap03
|
||||||
|
|
||||||
|
REP #$20
|
||||||
|
LDA.b Scrap00
|
||||||
|
SEC : SBC.w $0122
|
||||||
|
STA.b Scrap00
|
||||||
|
|
||||||
|
LDA.b Scrap02
|
||||||
|
SEC : SBC.w $011E
|
||||||
|
STA.b Scrap02
|
||||||
|
STA.b Scrap04
|
||||||
|
|
||||||
|
REP #$20
|
||||||
|
LDA.w $029E,X
|
||||||
|
AND.w #$00FF
|
||||||
|
STA.b $72
|
||||||
|
|
||||||
|
LDA.b $00
|
||||||
|
STA.b $06
|
||||||
|
SEC
|
||||||
|
SBC.b $72
|
||||||
|
STA.b $00
|
||||||
|
|
||||||
|
SEP #$20
|
||||||
|
TXY
|
||||||
|
LDA.w AncillaGet,X : TAX
|
||||||
|
LDA.l SpriteProperties_chest_width,X : BNE .wide
|
||||||
|
TYX
|
||||||
|
LDA.w AncillaID,X : CMP.b #$3E : BEQ .rising_crystal
|
||||||
|
REP #$20
|
||||||
|
LDA.b Scrap00
|
||||||
|
CLC : ADC.w #$0008
|
||||||
|
STA.b Scrap08
|
||||||
|
LDA.b Scrap02
|
||||||
|
CLC : ADC.w #$0004
|
||||||
|
STA.b Scrap02 : STA.b Scrap0A
|
||||||
|
BRA .wide
|
||||||
|
.rising_crystal
|
||||||
|
REP #$20
|
||||||
|
LDA.b Scrap00
|
||||||
|
CLC : ADC.w #$0008 : STA.b Scrap08
|
||||||
|
LDA.b Scrap02 : STA.b Scrap0A
|
||||||
|
.wide
|
||||||
|
PLY : PLX
|
||||||
|
SEP #$20
|
||||||
|
RTL
|
||||||
|
|
||||||
|
PrepPrizeShadow:
|
||||||
|
PHX
|
||||||
|
LDA.w ItemReceiptID : TAX
|
||||||
|
LDA.l SpriteProperties_standing_width,X : BNE .wide
|
||||||
|
LDA.b Scrap02
|
||||||
|
SEC : SBC.b #$04
|
||||||
|
STA.b Scrap02
|
||||||
|
.wide
|
||||||
|
LDA.b #$20 : STA.b Scrap04 ; What we wrote over
|
||||||
|
PLX
|
||||||
|
RTL
|
||||||
|
|
||||||
|
CheckPoseItemCoordinates:
|
||||||
|
PHX
|
||||||
|
LDA.w ItemReceiptPose : BEQ .done
|
||||||
|
BIT.b #$02 : BEQ .done
|
||||||
|
LDA.w AncillaGet,X : TAX
|
||||||
|
LDA.l SpriteProperties_chest_width,X : BNE .done
|
||||||
|
LDA.b Scrap02
|
||||||
|
CLC : ADC.b #$04
|
||||||
|
STA.b Scrap02
|
||||||
|
.done
|
||||||
|
PLX
|
||||||
|
LDA.w AncillaGet,X
|
||||||
|
TAX
|
||||||
|
RTL
|
||||||
|
|
||||||
|
CrystalOrPendantBehavior:
|
||||||
|
; Out: c - Crystal Behavior if set, pendant if unset
|
||||||
|
PHA : PHX
|
||||||
|
LDA.w AncillaGet,X : TAX
|
||||||
|
LDA.l InventoryTable_properties,X : BMI .crystal_behavior
|
||||||
|
PLX : PLA
|
||||||
|
CLC
|
||||||
|
RTS
|
||||||
|
.crystal_behavior
|
||||||
|
PLX : PLA
|
||||||
|
SEC
|
||||||
|
RTS
|
||||||
|
|
||||||
|
CheckDungeonWorld:
|
||||||
|
; Maintain vanilla door opening behavior with dungeon prizes
|
||||||
|
TXA : CMP.b #$05 : BCS .dark_world
|
||||||
|
REP #$02
|
||||||
|
RTL
|
||||||
|
.dark_world
|
||||||
|
SEP #$02
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ NewElderCode:
|
|||||||
{
|
{
|
||||||
LDA.b OverworldIndex : CMP.b #$1B : BEQ .newCodeContinue
|
LDA.b OverworldIndex : CMP.b #$1B : BEQ .newCodeContinue
|
||||||
;Restore Jump we can keep the RTL so JML
|
;Restore Jump we can keep the RTL so JML
|
||||||
JML $05F0CD
|
JML $85F0CD
|
||||||
.newCodeContinue
|
.newCodeContinue
|
||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
LDA.b #$07 : STA.w SpriteOAMProp, X ; Palette
|
LDA.b #$07 : STA.w SpriteOAMProp, X ; Palette
|
||||||
@@ -42,7 +42,7 @@ RTL
|
|||||||
{
|
{
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.l GoalItemRequirement : BEQ .despawn
|
LDA.l GoalItemRequirement : BEQ .despawn
|
||||||
LDA.l InvincibleGanon : AND.w #$00FF : CMP.w #$0005 : BEQ .despawn
|
LDA.l GanonVulnerableMode : AND.w #$00FF : CMP.w #$0005 : BEQ .despawn
|
||||||
LDA.l TurnInGoalItems : AND.w #$00FF : BNE +
|
LDA.l TurnInGoalItems : AND.w #$00FF : BNE +
|
||||||
.despawn
|
.despawn
|
||||||
SEP #$20
|
SEP #$20
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
;================================================================================
|
|
||||||
; Dialog Pointer Override
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
EndingSequenceTableOverride:
|
|
||||||
PHY
|
|
||||||
PHX
|
|
||||||
TYX
|
|
||||||
LDA.l EndingSequenceText, X
|
|
||||||
PLX
|
|
||||||
STA.w $1008, X
|
|
||||||
PLY
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
EndingSequenceTableLookupOverride:
|
|
||||||
PHY
|
|
||||||
PHX
|
|
||||||
TYX
|
|
||||||
LDA.l EndingSequenceText, X : AND.w #$00FF
|
|
||||||
PLX
|
|
||||||
PLY
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
@@ -20,7 +20,7 @@ RTL
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
NewFireBarDamage:
|
NewFireBarDamage:
|
||||||
LDA.w $00EE : CMP.w SpriteLayer, X : BNE .NotSameLayer
|
LDA.b LinkLayer : CMP.w SpriteLayer, X : BNE .NotSameLayer
|
||||||
JSL Sprite_AttemptDamageToPlayerPlusRecoilLong
|
JSL Sprite_AttemptDamageToPlayerPlusRecoilLong
|
||||||
RTL
|
RTL
|
||||||
.NotSameLayer
|
.NotSameLayer
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ LockAgahnimDoors:
|
|||||||
JSR.w LockAgahnimDoorsCore : BEQ .unlock
|
JSR.w LockAgahnimDoorsCore : BEQ .unlock
|
||||||
PHX : PHY
|
PHX : PHY
|
||||||
SEP #$30
|
SEP #$30
|
||||||
JSL.l CheckEnoughCrystalsForTower
|
JSL.l CheckTowerOpen
|
||||||
REP #$30
|
REP #$30
|
||||||
PLY : PLX
|
PLY : PLX
|
||||||
!BGE .crystalOrUnlock
|
!BGE .crystalOrUnlock
|
||||||
@@ -29,7 +29,7 @@ LockAgahnimDoors:
|
|||||||
LDA.w #$0001 : RTL ;Keep the door locked
|
LDA.w #$0001 : RTL ;Keep the door locked
|
||||||
++
|
++
|
||||||
SEP #$30
|
SEP #$30
|
||||||
JSL $099B6F ;Add tower break seal
|
JSL $899B6F ;Add tower break seal
|
||||||
REP #$30
|
REP #$30
|
||||||
LDA.w #$0001 ;Prevent door from opening that frame otherwise it glitchy
|
LDA.w #$0001 ;Prevent door from opening that frame otherwise it glitchy
|
||||||
RTL
|
RTL
|
||||||
@@ -142,11 +142,11 @@ JML.l AllowStartFromExitReturn
|
|||||||
|
|
||||||
.doStart
|
.doStart
|
||||||
|
|
||||||
LDA.l $028481, X ;Module_LocationMenu_starting_points
|
LDA.l $828481, X ;Module_LocationMenu_starting_points
|
||||||
ASL : TAX
|
ASL : TAX
|
||||||
|
|
||||||
LDA.l $02D8D2, X : STA.b RoomIndex
|
LDA.l $82D8D2, X : STA.b RoomIndex
|
||||||
LDA.l $02D8D3, X : STA.b RoomIndex+1
|
LDA.l $82D8D3, X : STA.b RoomIndex+1
|
||||||
|
|
||||||
; Go to pre-overworld mode
|
; Go to pre-overworld mode
|
||||||
LDA.b #$08 : STA.b GameMode
|
LDA.b #$08 : STA.b GameMode
|
||||||
@@ -155,6 +155,7 @@ JML.l AllowStartFromExitReturn
|
|||||||
STZ.b SubSubModule
|
STZ.b SubSubModule
|
||||||
STZ.w DeathReloadFlag
|
STZ.w DeathReloadFlag
|
||||||
STZ.w RespawnFlag
|
STZ.w RespawnFlag
|
||||||
|
INC.w UpdateHUD
|
||||||
|
|
||||||
JSL Equipment_SearchForEquippedItemLong
|
JSL Equipment_SearchForEquippedItemLong
|
||||||
JSL HUD_RebuildLong2
|
JSL HUD_RebuildLong2
|
||||||
@@ -165,9 +166,9 @@ RTL
|
|||||||
CheckHole:
|
CheckHole:
|
||||||
LDX.w #$0024
|
LDX.w #$0024
|
||||||
.nextHoleClassic
|
.nextHoleClassic
|
||||||
LDA.b Scrap00 : CMP.l $1BB800, X
|
LDA.b Scrap00 : CMP.l $9BB800, X
|
||||||
BNE .wrongMap16Classic
|
BNE .wrongMap16Classic
|
||||||
LDA.b OverworldIndex : CMP.l $1BB826, X
|
LDA.b OverworldIndex : CMP.l $9BB826, X
|
||||||
BEQ .matchedHoleClassic
|
BEQ .matchedHoleClassic
|
||||||
.wrongMap16Classic
|
.wrongMap16Classic
|
||||||
DEX #2 : BPL .nextHoleClassic
|
DEX #2 : BPL .nextHoleClassic
|
||||||
|
|||||||
107
events.asm
107
events.asm
@@ -3,8 +3,13 @@ OnPrepFileSelect:
|
|||||||
LDA.b #$06 : STA.b NMISTRIPES ; thing we wrote over
|
LDA.b #$06 : STA.b NMISTRIPES ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
|
PHA : PHX
|
||||||
|
REP #$10
|
||||||
JSL.l LoadAlphabetTilemap
|
JSL.l LoadAlphabetTilemap
|
||||||
JML.l LoadFullItemTiles
|
JSL.l LoadFullItemTiles
|
||||||
|
SEP #$10
|
||||||
|
PLX : PLA
|
||||||
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnDrawHud:
|
OnDrawHud:
|
||||||
JSL.l DrawChallengeTimer ; this has to come before NewDrawHud because the timer overwrites the compass counter
|
JSL.l DrawChallengeTimer ; this has to come before NewDrawHud because the timer overwrites the compass counter
|
||||||
@@ -17,6 +22,25 @@ JML.l ReturnFromOnDrawHud
|
|||||||
OnDungeonEntrance:
|
OnDungeonEntrance:
|
||||||
STA.l PegColor ; thing we wrote over
|
STA.l PegColor ; thing we wrote over
|
||||||
JSL MaybeFlagDungeonTotalsEntrance
|
JSL MaybeFlagDungeonTotalsEntrance
|
||||||
|
INC.w UpdateHUD
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
OnDungeonBossExit:
|
||||||
|
JSL.l StatTransitionCounter
|
||||||
|
LDX.w DungeonID : BMI +
|
||||||
|
LDA.w RoomIndex : CMP.b #$0D : BEQ .aga2
|
||||||
|
LDA.w RoomIndex : CMP.b #$20 : BEQ .aga
|
||||||
|
.set_completed
|
||||||
|
REP #$20
|
||||||
|
LDA.l DungeonItemMasks, X : ORA.l DungeonsCompleted : STA.l DungeonsCompleted
|
||||||
|
SEP #$20
|
||||||
|
+
|
||||||
|
RTL
|
||||||
|
.aga2
|
||||||
|
CPX.b #$1A : BEQ .set_completed
|
||||||
|
RTL
|
||||||
|
.aga
|
||||||
|
CPX.b #$08 : BEQ .set_completed
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnPlayerDead:
|
OnPlayerDead:
|
||||||
@@ -29,16 +53,17 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnDungeonExit:
|
OnDungeonExit:
|
||||||
PHA : PHP
|
PHA : PHP
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
JSL.l SQEGFix
|
JSL.l SQEGFix
|
||||||
PLP : PLA
|
PLP : PLA
|
||||||
|
|
||||||
STA.w DungeonID : STZ.w Map16ChangeIndex ; thing we wrote over
|
STA.w DungeonID : STZ.w Map16ChangeIndex ; thing we wrote over
|
||||||
|
|
||||||
PHA : PHP
|
PHA : PHP
|
||||||
JSL.l HUD_RebuildLong
|
INC.w UpdateHUD
|
||||||
JSL.l FloodGateResetInner
|
JSL.l HUD_RebuildLong
|
||||||
JSL.l SetSilverBowMode
|
JSL.l FloodGateResetInner
|
||||||
|
JSL.l SetSilverBowMode
|
||||||
PLP : PLA
|
PLP : PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -77,25 +102,24 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnAga2Defeated:
|
OnAga2Defeated:
|
||||||
JSL.l Dungeon_SaveRoomData_justKeys ; thing we wrote over, make sure this is first
|
JSL.l Dungeon_SaveRoomData_justKeys ; thing we wrote over, make sure this is first
|
||||||
|
LDA.b #$FF : STA.w DungeonID
|
||||||
LDA.b #$01 : STA.l Aga2Duck
|
LDA.b #$01 : STA.l Aga2Duck
|
||||||
JML.l IncrementAgahnim2Sword
|
JML.l IncrementAgahnim2Sword
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnFileCreation:
|
OnFileCreation:
|
||||||
; Copy initial SRAM state from ROM to cart SRAM
|
|
||||||
; If the inital SRAM table is move these addresses must be changed
|
|
||||||
PHB
|
PHB
|
||||||
LDA.w #$03D7 ; \
|
LDA.w #$03D7
|
||||||
LDX.w #$B000 ; | Copies from beginning of inital sram table up to file name
|
LDX.w #$B000
|
||||||
LDY.w #$0000 ; | (exclusively)
|
LDY.w #$0000
|
||||||
MVN !SRAMBank, !SRAMTableBank ; /
|
MVN CartridgeSRAM>>16, InitSRAMTable>>16
|
||||||
; Skip file name and validity value
|
; Skip file name and validity value
|
||||||
LDA.w #$010C ; \
|
LDA.w #$010C
|
||||||
LDX.w #$B3E3 ; | Rando-Specific Assignments & Game Stats block
|
LDX.w #$B3E3
|
||||||
LDY.w #$03E3 ; |
|
LDY.w #$03E3
|
||||||
MVN !SRAMBank, !SRAMTableBank ; /
|
MVN CartridgeSRAM>>16, InitSRAMTable>>16
|
||||||
PLB
|
PLB
|
||||||
|
|
||||||
; resolve instant post-aga if standard
|
; Resolve instant post-aga if standard
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.l InitProgressIndicator : BIT #$80 : BEQ +
|
LDA.l InitProgressIndicator : BIT #$80 : BEQ +
|
||||||
LDA.b #$00 : STA.l ProgressIndicatorSRAM ; set post-aga after zelda rescue
|
LDA.b #$00 : STA.l ProgressIndicatorSRAM ; set post-aga after zelda rescue
|
||||||
@@ -103,13 +127,13 @@ OnFileCreation:
|
|||||||
+
|
+
|
||||||
REP #$20
|
REP #$20
|
||||||
|
|
||||||
; Set validity value and do some cleanup. Jump to checksum.
|
; Set validity value and do some cleanup. Jump to checksum done.
|
||||||
LDA.w #$55AA : STA.l FileValiditySRAM
|
LDA.w #$55AA : STA.l FileValiditySRAM
|
||||||
JSL.l WriteNewFileChecksum
|
JSL.l WriteSaveChecksumAndBackup
|
||||||
STZ.b Scrap00
|
STZ.b Scrap00
|
||||||
STZ.b Scrap01
|
STZ.b Scrap01
|
||||||
|
|
||||||
JML.l InitializeSaveFile_done
|
JML.l InitializeSaveFile_checksum_done
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnFileLoad:
|
OnFileLoad:
|
||||||
REP #$10 ; set 16 bit index registers
|
REP #$10 ; set 16 bit index registers
|
||||||
@@ -198,6 +222,7 @@ OnOWTransition:
|
|||||||
PHP
|
PHP
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA.b #$FF : STA.l RNGLockIn ; clear lock-in
|
LDA.b #$FF : STA.l RNGLockIn ; clear lock-in
|
||||||
|
INC.w UpdateHUD
|
||||||
PLP
|
PLP
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -216,23 +241,47 @@ PreItemGet:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PostItemGet:
|
PostItemGet:
|
||||||
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PostItemAnimation:
|
PostItemAnimation:
|
||||||
|
PHB
|
||||||
LDA.b #$00 : STA.l BusyItem ; mark item as finished
|
LDA.b #$00 : STA.l BusyItem ; mark item as finished
|
||||||
|
|
||||||
LDA.l TextBoxDefer : BEQ +
|
LDA.l TextBoxDefer : BEQ +
|
||||||
STZ.w TextID : STZ.w TextID+1 ; reset decompression buffer
|
STZ.w TextID : STZ.w TextID+1 ; reset decompression buffer
|
||||||
JSL.l Main_ShowTextMessage_Alt
|
JSL.l Main_ShowTextMessage_Alt
|
||||||
LDA.b #$00 : STA.l TextBoxDefer
|
LDA.b #$00 : STA.l TextBoxDefer
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA.w ItemReceiptMethod : CMP.b #$01 : BNE +
|
LDA.w ItemReceiptMethod : CMP.b #$01 : BNE +
|
||||||
LDA.b LinkDirection : BEQ +
|
LDA.b LinkDirection : BEQ +
|
||||||
JSL.l IncrementChestTurnCounter
|
JSL.l IncrementChestTurnCounter
|
||||||
+
|
+
|
||||||
|
REP #$20
|
||||||
|
PEA.w $7E00
|
||||||
|
PLB : PLB
|
||||||
|
LDA.w TransparencyFlag : BNE .SP05
|
||||||
|
LDA.l PalettesCustom_off_black+$00 : STA.w PaletteBuffer+$0170 : STA.w PaletteBufferAux+$0170
|
||||||
|
LDA.l PalettesCustom_off_black+$02 : STA.w PaletteBuffer+$0172 : STA.w PaletteBufferAux+$0172
|
||||||
|
STA.w PaletteBuffer+$0174 : STA.w PaletteBufferAux+$0174
|
||||||
|
STA.w PaletteBuffer+$0176 : STA.w PaletteBufferAux+$0176
|
||||||
|
STA.w PaletteBuffer+$0178 : STA.w PaletteBufferAux+$0178
|
||||||
|
STA.w PaletteBuffer+$017A : STA.w PaletteBufferAux+$017A
|
||||||
|
STA.w PaletteBuffer+$017C : STA.w PaletteBufferAux+$017C
|
||||||
|
STA.w PaletteBuffer+$017E : STA.w PaletteBufferAux+$017E
|
||||||
|
BRA .done
|
||||||
|
.SP05
|
||||||
|
LDA.l PalettesCustom_off_black+$00 : STA.w PaletteBuffer+$01B0 : STA.w PaletteBufferAux+$01B0
|
||||||
|
LDA.l PalettesCustom_off_black+$02 : STA.w PaletteBuffer+$01B2 : STA.w PaletteBufferAux+$01B2
|
||||||
|
STA.w PaletteBuffer+$01B4 : STA.w PaletteBufferAux+$01B4
|
||||||
|
STA.w PaletteBuffer+$01B6 : STA.w PaletteBufferAux+$01B6
|
||||||
|
STA.w PaletteBuffer+$01B8 : STA.w PaletteBufferAux+$01B8
|
||||||
|
STA.w PaletteBuffer+$01BA : STA.w PaletteBufferAux+$01BA
|
||||||
|
STA.w PaletteBuffer+$01BC : STA.w PaletteBufferAux+$01BC
|
||||||
|
STA.w PaletteBuffer+$01BE : STA.w PaletteBufferAux+$01BE
|
||||||
|
.done
|
||||||
|
INC.b NMICGRAM
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
STZ.w ItemReceiptMethod : LDA.w AncillaGet, X ; thing we wrote over to get here
|
STZ.w ItemReceiptMethod : LDA.w AncillaGet, X ; thing we wrote over to get here
|
||||||
|
PLB
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
org $298000 ; 0x148000
|
org $A98000 ; 0x148000
|
||||||
Ext_OnFileCreate: ;x
|
Ext_OnFileCreate: ;x
|
||||||
RTL : RTL : RTL : RTL : RTL
|
RTL : RTL : RTL : RTL : RTL
|
||||||
Ext_OnFileLoad: ;x immediately after load
|
Ext_OnFileLoad: ;x immediately after load
|
||||||
|
|||||||
15
failure.asm
15
failure.asm
@@ -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
|
pushtable
|
||||||
|
|
||||||
table "data/bsodencode.txt"
|
table "data/bsodencode.txt"
|
||||||
|
|||||||
@@ -1,21 +1,51 @@
|
|||||||
|
FastCreditsActive = $50
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
|
||||||
|
FlagFastCredits:
|
||||||
|
LDA.b #$40
|
||||||
|
TRB.b FastCreditsActive
|
||||||
|
|
||||||
|
AND.b Joy1B_All
|
||||||
|
TSB.b FastCreditsActive
|
||||||
|
|
||||||
|
LDA.b #$20
|
||||||
|
AND.b Joy1A_New
|
||||||
|
EOR.b FastCreditsActive
|
||||||
|
STA.b FastCreditsActive
|
||||||
|
|
||||||
|
LDA.b FastCreditsActive
|
||||||
|
AND.b #$60
|
||||||
|
BEQ .slow
|
||||||
|
|
||||||
|
LDA.b #$01
|
||||||
|
TSB.b FastCreditsActive
|
||||||
|
|
||||||
|
.slow
|
||||||
|
LDA.b $11
|
||||||
|
ASL
|
||||||
|
TAX
|
||||||
|
|
||||||
|
RTL
|
||||||
|
|
||||||
;===================================================================================================
|
;===================================================================================================
|
||||||
|
|
||||||
FastCreditsCutsceneTimer:
|
FastCreditsCutsceneTimer:
|
||||||
BIT.b Joy1B_All-1 : BVC .slow
|
|
||||||
|
|
||||||
LDA.w #$0001 : STA.b $50
|
|
||||||
|
|
||||||
LDA.b ScrapBufferBD+$0B
|
LDA.b ScrapBufferBD+$0B
|
||||||
CLC
|
INC
|
||||||
ADC.w #$0004
|
|
||||||
|
JSR IsFastCredits
|
||||||
|
BCC .slow
|
||||||
|
|
||||||
|
INC
|
||||||
|
INC
|
||||||
|
INC
|
||||||
|
|
||||||
AND.w #$FFFE
|
AND.w #$FFFE
|
||||||
STA.b ScrapBufferBD+$0B
|
|
||||||
SEP #$20
|
|
||||||
RTL
|
|
||||||
|
|
||||||
|
|
||||||
.slow
|
.slow
|
||||||
INC.b ScrapBufferBD+$0B
|
STA.b ScrapBufferBD+$0B
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
RTL
|
RTL
|
||||||
@@ -49,18 +79,20 @@ FastCreditsCutsceneScrollY:
|
|||||||
|
|
||||||
FastCreditsCutsceneScroll:
|
FastCreditsCutsceneScroll:
|
||||||
LDA.w $00E2,Y
|
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
|
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
|
BPL ++ ; if positive, leave saved carry alone
|
||||||
INC.b Scrap00 ; otherwise, flip it
|
INC.b Scrap00 ; otherwise, flip it
|
||||||
++ ROR.b Scrap00 ; recover carry
|
++ ROR.b Scrap00 ; recover carry
|
||||||
|
|
||||||
BCC ++ ; scroll if carry not set
|
BCC ++ ; scroll if carry not set
|
||||||
|
|
||||||
LDA.w #$0000
|
LDA.w #$0000
|
||||||
|
|
||||||
++ BIT.b Joy1B_All-1 : BVC .slow ; check for X held
|
++ JSR IsFastCredits
|
||||||
|
BCC .slow
|
||||||
|
|
||||||
AND.w #$FFFF ; get sign of A
|
AND.w #$FFFF ; get sign of A
|
||||||
BPL .positive
|
BPL .positive
|
||||||
@@ -77,16 +109,9 @@ FastCreditsCutsceneScroll:
|
|||||||
ASL
|
ASL
|
||||||
ASL
|
ASL
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.slow
|
.slow
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FastCreditsCutsceneUnderworldX:
|
FastCreditsCutsceneUnderworldX:
|
||||||
JSR FastCreditsCutsceneScrollX
|
JSR FastCreditsCutsceneScrollX
|
||||||
CLC
|
CLC
|
||||||
@@ -106,19 +131,27 @@ FastCreditsCutsceneUnderworldY:
|
|||||||
|
|
||||||
|
|
||||||
FastTextScroll:
|
FastTextScroll:
|
||||||
LDA.b FrameCounter
|
LDA.b FrameCounter
|
||||||
BIT.b Joy1B_All-1 : BVC .slow
|
SEP #$10
|
||||||
|
JSR IsFastCredits
|
||||||
|
BCC .slow
|
||||||
|
|
||||||
AND.w #$0000
|
AND.w #$0000
|
||||||
|
REP #$10
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
.slow
|
.slow
|
||||||
AND.w #$0003
|
AND.w #$0003
|
||||||
|
REP #$10
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
DumbFlagForMSU:
|
DumbFlagForMSU:
|
||||||
STA.l CurrentWorld
|
STA.l CurrentWorld
|
||||||
STZ.b $50
|
STZ.b FastCreditsActive
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
IsFastCredits:
|
||||||
|
LDY.b FastCreditsActive
|
||||||
|
CPY.b #$20
|
||||||
|
RTS
|
||||||
|
|
||||||
|
|||||||
6591
fastrom.asm
Normal file
6591
fastrom.asm
Normal file
File diff suppressed because it is too large
Load Diff
511
fileselect.asm
511
fileselect.asm
@@ -1,6 +1,4 @@
|
|||||||
|
|
||||||
;FS prefix means file_select, since these defines and macros are specific to this screen
|
;FS prefix means file_select, since these defines and macros are specific to this screen
|
||||||
|
|
||||||
!FS_COLOR_BROWN = $0000 ;(only used for: Shovel, hammer, powder)
|
!FS_COLOR_BROWN = $0000 ;(only used for: Shovel, hammer, powder)
|
||||||
!FS_COLOR_RED = $0400
|
!FS_COLOR_RED = $0400
|
||||||
!FS_COLOR_YELLOW = $0800
|
!FS_COLOR_YELLOW = $0800
|
||||||
@@ -110,6 +108,7 @@ JMP DrawItem
|
|||||||
DrawPlayerFile:
|
DrawPlayerFile:
|
||||||
LDA.b FrameCounter : AND.w #$0001 : BNE .normal
|
LDA.b FrameCounter : AND.w #$0001 : BNE .normal
|
||||||
JSR DrawPlayerFileShared
|
JSR DrawPlayerFileShared
|
||||||
|
|
||||||
INC.w SkipOAM ; Suppress animated tile updates for this frame
|
INC.w SkipOAM ; Suppress animated tile updates for this frame
|
||||||
|
|
||||||
; re-enable Stripe Image format upload on this frame
|
; re-enable Stripe Image format upload on this frame
|
||||||
@@ -146,7 +145,7 @@ DrawPlayerFile:
|
|||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
BEQ .flashing
|
BEQ .flashing
|
||||||
|
|
||||||
LDA.w #$26BE
|
LDA.w #$26FE
|
||||||
BRA .draw_access_icon
|
BRA .draw_access_icon
|
||||||
|
|
||||||
.flashing
|
.flashing
|
||||||
@@ -155,10 +154,8 @@ DrawPlayerFile:
|
|||||||
|
|
||||||
.draw_access_icon
|
.draw_access_icon
|
||||||
STA.w GFXStripes+$0412
|
STA.w GFXStripes+$0412
|
||||||
|
|
||||||
LDA.w #$FFFF
|
LDA.w #$FFFF
|
||||||
STA.w GFXStripes+$0414
|
STA.w GFXStripes+$0414
|
||||||
|
|
||||||
BRA .done
|
BRA .done
|
||||||
.normal
|
.normal
|
||||||
STZ.w SkipOAM ; ensure core animated tile updates are not suppressed
|
STZ.w SkipOAM ; ensure core animated tile updates are not suppressed
|
||||||
@@ -332,7 +329,7 @@ DrawPlayerFileShared:
|
|||||||
%fs_drawItemGray(3,26,FileSelectItems_fighters_sword)
|
%fs_drawItemGray(3,26,FileSelectItems_fighters_sword)
|
||||||
BRA ++
|
BRA ++
|
||||||
.bombSword
|
.bombSword
|
||||||
LDA.l $70038F : AND.w #$00FF : BNE +
|
LDA.l SpecialWeaponLevelSRAM : AND.w #$00FF : BNE +
|
||||||
%fs_drawItemGray(3,26,FileSelectItems_fighters_bombs)
|
%fs_drawItemGray(3,26,FileSelectItems_fighters_bombs)
|
||||||
BRA ++
|
BRA ++
|
||||||
+ : DEC : BNE +
|
+ : DEC : BNE +
|
||||||
@@ -381,23 +378,40 @@ DrawPlayerFileShared:
|
|||||||
++
|
++
|
||||||
|
|
||||||
; Heart Pieces
|
; Heart Pieces
|
||||||
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
LDA.l EquipmentSRAM+$2B : AND.w #$00FF : BNE +
|
LDA.l EquipmentSRAM+$2B : AND.w #$00FF : BNE +
|
||||||
%fs_drawItem(9,26,FileSelectItems_heart_piece_0_of_4)
|
LDY.w #9*$20+26*2+$1004
|
||||||
BRA ++
|
LDA.w #$02C0 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0000, Y
|
||||||
|
LDA.w #$42C0 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0002, Y
|
||||||
|
LDA.w #$02D0 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0040, Y
|
||||||
|
LDA.w #$42D0 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0042, Y
|
||||||
|
JMP ++
|
||||||
+ : DEC : BNE +
|
+ : DEC : BNE +
|
||||||
%fs_drawItem(9,26,FileSelectItems_heart_piece_1_of_4)
|
LDY.w #9*$20+26*2+$1004
|
||||||
BRA ++
|
LDA.w #$02C1 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0000, Y
|
||||||
|
LDA.w #$42C0 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0002, Y
|
||||||
|
LDA.w #$02D0 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0040, Y
|
||||||
|
LDA.w #$42D0 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0042, Y
|
||||||
|
JMP ++
|
||||||
+ : DEC : BNE +
|
+ : DEC : BNE +
|
||||||
%fs_drawItem(9,26,FileSelectItems_heart_piece_2_of_4)
|
LDY.w #9*$20+26*2+$1004
|
||||||
BRA ++
|
LDA.w #$02C1 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0000, Y
|
||||||
|
LDA.w #$42C0 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0002, Y
|
||||||
|
LDA.w #$02D1 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0040, Y
|
||||||
|
LDA.w #$42D0 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0042, Y
|
||||||
|
JMP ++
|
||||||
+
|
+
|
||||||
%fs_drawItem(9,26,FileSelectItems_heart_piece_3_of_4)
|
LDY.w #9*$20+26*2+$1004
|
||||||
|
LDA.w #$02C1 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0000, Y
|
||||||
|
LDA.w #$42C1 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0002, Y
|
||||||
|
LDA.w #$02D1 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0040, Y
|
||||||
|
LDA.w #$42D0 : ORA.l HUDHeartColors_masks_file_select,X : STA.w $0042, Y
|
||||||
++
|
++
|
||||||
|
|
||||||
LDA.l EquipmentSRAM+$0108 : AND.w #$00FF
|
LDA.l EquipmentSRAM+$0130 : AND.w #$00FF
|
||||||
JSL.l HexToDec
|
JSL.l HexToDec
|
||||||
LDA.l HexToDecDigit4 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(11,26)
|
LDA.l HexToDecDigit4 : AND.w #$00FF : ORA.w #!FS_COLOR_BW|$02E0 : %fs_draw8x8(11,26)
|
||||||
LDA.l HexToDecDigit5 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(11,27)
|
LDA.l HexToDecDigit5 : AND.w #$00FF : ORA.w #!FS_COLOR_BW|$02E0 : %fs_draw8x8(11,27)
|
||||||
|
|
||||||
; Boots
|
; Boots
|
||||||
%fs_drawItemBasic(EquipmentSRAM+$15,3,28,FileSelectItems_boots)
|
%fs_drawItemBasic(EquipmentSRAM+$15,3,28,FileSelectItems_boots)
|
||||||
@@ -443,52 +457,52 @@ DrawPlayerFileShared:
|
|||||||
|
|
||||||
; Crystals
|
; Crystals
|
||||||
LDA.l EquipmentSRAM+$3A : AND.w #$0002 : BEQ +
|
LDA.l EquipmentSRAM+$3A : AND.w #$0002 : BEQ +
|
||||||
LDA.w #$0297|!FS_COLOR_BLUE
|
LDA.w #$02D7|!FS_COLOR_BLUE
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$0287|!FS_COLOR_GRAY
|
LDA.w #$02C7|!FS_COLOR_GRAY
|
||||||
++ : %fs_draw16x8(13,18)
|
++ : %fs_draw16x8(13,18)
|
||||||
|
|
||||||
LDA.l EquipmentSRAM+$3A : AND.w #$0010 : BEQ +
|
LDA.l EquipmentSRAM+$3A : AND.w #$0010 : BEQ +
|
||||||
LDA.w #$0297|!FS_COLOR_BLUE
|
LDA.w #$02D7|!FS_COLOR_BLUE
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$0287|!FS_COLOR_GRAY
|
LDA.w #$02C7|!FS_COLOR_GRAY
|
||||||
++ : %fs_draw16x8(12,19)
|
++ : %fs_draw16x8(12,19)
|
||||||
|
|
||||||
LDA.l EquipmentSRAM+$3A : AND.w #$0040 : BEQ +
|
LDA.l EquipmentSRAM+$3A : AND.w #$0040 : BEQ +
|
||||||
LDA.w #$0297|!FS_COLOR_BLUE
|
LDA.w #$02D7|!FS_COLOR_BLUE
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$0287|!FS_COLOR_GRAY
|
LDA.w #$02C7|!FS_COLOR_GRAY
|
||||||
++ : %fs_draw16x8(13,20)
|
++ : %fs_draw16x8(13,20)
|
||||||
|
|
||||||
LDA.l EquipmentSRAM+$3A : AND.w #$0020 : BEQ +
|
LDA.l EquipmentSRAM+$3A : AND.w #$0020 : BEQ +
|
||||||
LDA.w #$0297|!FS_COLOR_BLUE
|
LDA.w #$02D7|!FS_COLOR_BLUE
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$0287|!FS_COLOR_GRAY
|
LDA.w #$02C7|!FS_COLOR_GRAY
|
||||||
++ : %fs_draw16x8(12,21)
|
++ : %fs_draw16x8(12,21)
|
||||||
|
|
||||||
LDA.l EquipmentSRAM+$3A : AND.w #$0004 : BEQ +
|
LDA.l EquipmentSRAM+$3A : AND.w #$0004 : BEQ +
|
||||||
LDA.w #$0297|!FS_COLOR_RED
|
LDA.w #$02D7|!FS_COLOR_RED
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$0287|!FS_COLOR_GRAY
|
LDA.w #$02C7|!FS_COLOR_GRAY
|
||||||
++ : %fs_draw16x8(13,22)
|
++ : %fs_draw16x8(13,22)
|
||||||
|
|
||||||
LDA.l EquipmentSRAM+$3A : AND.w #$0001 : BEQ +
|
LDA.l EquipmentSRAM+$3A : AND.w #$0001 : BEQ +
|
||||||
LDA.w #$0297|!FS_COLOR_RED
|
LDA.w #$02D7|!FS_COLOR_RED
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$0287|!FS_COLOR_GRAY
|
LDA.w #$02C7|!FS_COLOR_GRAY
|
||||||
++ : %fs_draw16x8(12,23)
|
++ : %fs_draw16x8(12,23)
|
||||||
|
|
||||||
LDA.l EquipmentSRAM+$3A : AND.w #$0008 : BEQ +
|
LDA.l EquipmentSRAM+$3A : AND.w #$0008 : BEQ +
|
||||||
LDA.w #$0297|!FS_COLOR_BLUE
|
LDA.w #$02D7|!FS_COLOR_BLUE
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$0287|!FS_COLOR_GRAY
|
LDA.w #$02C7|!FS_COLOR_GRAY
|
||||||
++ : %fs_draw16x8(13,24)
|
++ : %fs_draw16x8(13,24)
|
||||||
|
|
||||||
|
|
||||||
@@ -498,260 +512,252 @@ RTS
|
|||||||
|
|
||||||
FileSelectItems:
|
FileSelectItems:
|
||||||
.empty_bow ;for an eventual update for retro mode
|
.empty_bow ;for an eventual update for retro mode
|
||||||
dw #$0201|!FS_COLOR_YELLOW, #$02B8|!FS_COLOR_YELLOW, #$02B7|!FS_COLOR_YELLOW, #$0212|!FS_COLOR_YELLOW
|
dw #$0241|!FS_COLOR_YELLOW, #$02F8|!FS_COLOR_YELLOW, #$02F7|!FS_COLOR_YELLOW, #$0252|!FS_COLOR_YELLOW
|
||||||
.bow
|
.bow
|
||||||
dw #$0201|!FS_COLOR_YELLOW, #$0202|!FS_COLOR_YELLOW, #$0211|!FS_COLOR_YELLOW, #$0212|!FS_COLOR_YELLOW
|
dw #$0241|!FS_COLOR_YELLOW, #$0242|!FS_COLOR_YELLOW, #$0251|!FS_COLOR_YELLOW, #$0252|!FS_COLOR_YELLOW
|
||||||
.silver_bow
|
.silver_bow
|
||||||
dw #$0201|!FS_COLOR_YELLOW, #$0204|!FS_COLOR_YELLOW, #$0203|!FS_COLOR_RED, #$0212|!FS_COLOR_YELLOW
|
dw #$0241|!FS_COLOR_YELLOW, #$0244|!FS_COLOR_YELLOW, #$0243|!FS_COLOR_RED, #$0252|!FS_COLOR_YELLOW
|
||||||
.regular_arrow ;for an eventual update for retro mode
|
.regular_arrow ;for an eventual update for retro mode
|
||||||
dw #$0200|!FS_COLOR_YELLOW, #$02BA|!FS_COLOR_YELLOW, #$02B9|!FS_COLOR_RED, #$0200|!FS_COLOR_YELLOW
|
dw #$0240|!FS_COLOR_YELLOW, #$02FA|!FS_COLOR_YELLOW, #$02F9|!FS_COLOR_RED, #$0240|!FS_COLOR_YELLOW
|
||||||
.silver_arrow
|
.silver_arrow
|
||||||
dw #$0200|!FS_COLOR_YELLOW, #$0214|!FS_COLOR_YELLOW, #$0213|!FS_COLOR_RED, #$0200|!FS_COLOR_YELLOW
|
dw #$0240|!FS_COLOR_YELLOW, #$0254|!FS_COLOR_YELLOW, #$0253|!FS_COLOR_RED, #$0240|!FS_COLOR_YELLOW
|
||||||
.blue_boomerang
|
.blue_boomerang
|
||||||
dw #$0205|!FS_COLOR_BLUE, #$0206|!FS_COLOR_BLUE, #$0200|!FS_COLOR_BW, #$0216|!FS_COLOR_BLUE
|
dw #$0245|!FS_COLOR_BLUE, #$0246|!FS_COLOR_BLUE, #$0240|!FS_COLOR_BW, #$0256|!FS_COLOR_BLUE
|
||||||
.red_boomerang
|
.red_boomerang
|
||||||
dw #$0205|!FS_COLOR_RED, #$0206|!FS_COLOR_RED, #$0200|!FS_COLOR_BW, #$0216|!FS_COLOR_RED
|
dw #$0245|!FS_COLOR_RED, #$0246|!FS_COLOR_RED, #$0240|!FS_COLOR_BW, #$0256|!FS_COLOR_RED
|
||||||
.both_boomerang
|
.both_boomerang
|
||||||
dw #$02B6|!FS_COLOR_BLUE, #$02B6|!FS_COLOR_RED, #$02B6|!FS_COLOR_BLUE|!FS_VFLIP, #$02B6|!FS_COLOR_RED|!FS_VFLIP
|
dw #$02F6|!FS_COLOR_BLUE, #$02F6|!FS_COLOR_RED, #$02F6|!FS_COLOR_BLUE|!FS_VFLIP, #$02F6|!FS_COLOR_RED|!FS_VFLIP
|
||||||
.hookshot
|
.hookshot
|
||||||
dw #$0200|!FS_COLOR_RED, #$0215|!FS_COLOR_RED, #$0230|!FS_COLOR_RED, #$0200|!FS_COLOR_BW
|
dw #$0240|!FS_COLOR_RED, #$0255|!FS_COLOR_RED, #$0270|!FS_COLOR_RED, #$0240|!FS_COLOR_BW
|
||||||
.bombs
|
.bombs
|
||||||
dw #$020C|!FS_COLOR_BLUE, #$020D|!FS_COLOR_BLUE, #$021C|!FS_COLOR_BLUE, #$021C|!FS_COLOR_BLUE|!FS_HFLIP
|
dw #$024C|!FS_COLOR_BLUE, #$024D|!FS_COLOR_BLUE, #$025C|!FS_COLOR_BLUE, #$025C|!FS_COLOR_BLUE|!FS_HFLIP
|
||||||
.fire_rod
|
.fire_rod
|
||||||
dw #$0220|!FS_COLOR_RED, #$0210|!FS_COLOR_RED, #$0230|!FS_COLOR_RED, #$0231|!FS_COLOR_RED
|
dw #$0260|!FS_COLOR_RED, #$0250|!FS_COLOR_RED, #$0270|!FS_COLOR_RED, #$0271|!FS_COLOR_RED
|
||||||
.ice_rod
|
.ice_rod
|
||||||
dw #$0220|!FS_COLOR_BLUE, #$0221|!FS_COLOR_BLUE, #$0230|!FS_COLOR_BLUE, #$0231|!FS_COLOR_BLUE
|
dw #$0260|!FS_COLOR_BLUE, #$0261|!FS_COLOR_BLUE, #$0270|!FS_COLOR_BLUE, #$0271|!FS_COLOR_BLUE
|
||||||
.bombos
|
.bombos
|
||||||
dw #$0207|!FS_COLOR_YELLOW, #$0217|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP, #$0217|!FS_COLOR_YELLOW, #$0207|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP
|
dw #$0247|!FS_COLOR_YELLOW, #$0257|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP, #$0257|!FS_COLOR_YELLOW, #$0247|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP
|
||||||
.ether
|
.ether
|
||||||
dw #$0208|!FS_COLOR_YELLOW, #$0218|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP, #$0218|!FS_COLOR_YELLOW, #$0208|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP
|
dw #$0248|!FS_COLOR_YELLOW, #$0258|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP, #$0258|!FS_COLOR_YELLOW, #$0248|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP
|
||||||
.quake
|
.quake
|
||||||
dw #$0209|!FS_COLOR_YELLOW, #$0219|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP, #$0219|!FS_COLOR_YELLOW, #$0209|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP
|
dw #$0249|!FS_COLOR_YELLOW, #$0259|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP, #$0259|!FS_COLOR_YELLOW, #$0249|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP
|
||||||
.lamp
|
.lamp
|
||||||
dw #$022C|!FS_COLOR_RED, #$022C|!FS_COLOR_RED|!FS_HFLIP, #$023C|!FS_COLOR_RED, #$023D|!FS_COLOR_RED
|
dw #$026C|!FS_COLOR_RED, #$026C|!FS_COLOR_RED|!FS_HFLIP, #$027C|!FS_COLOR_RED, #$027D|!FS_COLOR_RED
|
||||||
.hammer
|
.hammer
|
||||||
dw #$0222|!FS_COLOR_BROWN, #$0223|!FS_COLOR_BROWN, #$0232|!FS_COLOR_BROWN, #$0233|!FS_COLOR_BROWN
|
dw #$0262|!FS_COLOR_BROWN, #$0263|!FS_COLOR_BROWN, #$0272|!FS_COLOR_BROWN, #$0273|!FS_COLOR_BROWN
|
||||||
.bugnet
|
.bugnet
|
||||||
dw #$0228|!FS_COLOR_YELLOW, #$0229|!FS_COLOR_YELLOW, #$0238|!FS_COLOR_YELLOW, #$0239|!FS_COLOR_YELLOW
|
dw #$0268|!FS_COLOR_YELLOW, #$0269|!FS_COLOR_YELLOW, #$0278|!FS_COLOR_YELLOW, #$0279|!FS_COLOR_YELLOW
|
||||||
.shovel
|
.shovel
|
||||||
dw #$0224|!FS_COLOR_BROWN, #$0225|!FS_COLOR_BROWN, #$0234|!FS_COLOR_BROWN, #$0235|!FS_COLOR_BROWN
|
dw #$0264|!FS_COLOR_BROWN, #$0265|!FS_COLOR_BROWN, #$0274|!FS_COLOR_BROWN, #$0275|!FS_COLOR_BROWN
|
||||||
.flute
|
.flute
|
||||||
dw #$0226|!FS_COLOR_BLUE, #$0227|!FS_COLOR_BLUE, #$0236|!FS_COLOR_BLUE, #$0237|!FS_COLOR_BLUE
|
dw #$0266|!FS_COLOR_BLUE, #$0267|!FS_COLOR_BLUE, #$0276|!FS_COLOR_BLUE, #$0277|!FS_COLOR_BLUE
|
||||||
.book
|
.book
|
||||||
dw #$022A|!FS_COLOR_GREEN, #$022B|!FS_COLOR_GREEN, #$023A|!FS_COLOR_GREEN, #$023B|!FS_COLOR_GREEN
|
dw #$026A|!FS_COLOR_GREEN, #$026B|!FS_COLOR_GREEN, #$027A|!FS_COLOR_GREEN, #$027B|!FS_COLOR_GREEN
|
||||||
.redcane
|
.redcane
|
||||||
dw #$021D|!FS_COLOR_RED, #$021E|!FS_COLOR_RED, #$022D|!FS_COLOR_RED, #$022E|!FS_COLOR_RED
|
dw #$025D|!FS_COLOR_RED, #$025E|!FS_COLOR_RED, #$026D|!FS_COLOR_RED, #$026E|!FS_COLOR_RED
|
||||||
.bluecane
|
.bluecane
|
||||||
dw #$021D|!FS_COLOR_BLUE, #$021E|!FS_COLOR_BLUE, #$022D|!FS_COLOR_BLUE, #$022E|!FS_COLOR_BLUE
|
dw #$025D|!FS_COLOR_BLUE, #$025E|!FS_COLOR_BLUE, #$026D|!FS_COLOR_BLUE, #$026E|!FS_COLOR_BLUE
|
||||||
.cape
|
.cape
|
||||||
dw #$0248|!FS_COLOR_RED, #$0249|!FS_COLOR_RED, #$0258|!FS_COLOR_RED, #$0259|!FS_COLOR_RED
|
dw #$0288|!FS_COLOR_RED, #$0289|!FS_COLOR_RED, #$0298|!FS_COLOR_RED, #$0299|!FS_COLOR_RED
|
||||||
.mirror
|
.mirror
|
||||||
dw #$024A|!FS_COLOR_BLUE, #$024B|!FS_COLOR_BLUE, #$025A|!FS_COLOR_BLUE, #$025B|!FS_COLOR_BLUE
|
dw #$028A|!FS_COLOR_BLUE, #$028B|!FS_COLOR_BLUE, #$029A|!FS_COLOR_BLUE, #$029B|!FS_COLOR_BLUE
|
||||||
|
|
||||||
.flippers
|
.flippers
|
||||||
dw #$020E|!FS_COLOR_BLUE, #$020F|!FS_COLOR_BLUE, #$021F|!FS_COLOR_BLUE|!FS_HFLIP, #$021F|!FS_COLOR_BLUE
|
dw #$024E|!FS_COLOR_BLUE, #$024F|!FS_COLOR_BLUE, #$025F|!FS_COLOR_BLUE|!FS_HFLIP, #$025F|!FS_COLOR_BLUE
|
||||||
|
|
||||||
.boots
|
.boots
|
||||||
dw #$024C|!FS_COLOR_BOOTS, #$024D|!FS_COLOR_BOOTS, #$025C|!FS_COLOR_BOOTS, #$025D|!FS_COLOR_BOOTS
|
dw #$028C|!FS_COLOR_BOOTS, #$028D|!FS_COLOR_BOOTS, #$029C|!FS_COLOR_BOOTS, #$029D|!FS_COLOR_BOOTS
|
||||||
|
|
||||||
.pearl
|
.pearl
|
||||||
dw #$0264|!FS_COLOR_RED, #$0265|!FS_COLOR_RED, #$0274|!FS_COLOR_RED, #$0275|!FS_COLOR_RED
|
dw #$02A4|!FS_COLOR_RED, #$02A5|!FS_COLOR_RED, #$02B4|!FS_COLOR_RED, #$02B5|!FS_COLOR_RED
|
||||||
|
|
||||||
.no_pendant
|
.no_pendant
|
||||||
dw #$0285|!FS_COLOR_GRAY, #$0286|!FS_COLOR_GRAY, #$02B2|!FS_COLOR_GRAY, #$0296|!FS_COLOR_GRAY
|
dw #$02C5|!FS_COLOR_GRAY, #$02C6|!FS_COLOR_GRAY, #$02F2|!FS_COLOR_GRAY, #$02D6|!FS_COLOR_GRAY
|
||||||
.green_pendant
|
.green_pendant
|
||||||
dw #$0285|!FS_COLOR_GREEN, #$0286|!FS_COLOR_GREEN, #$0295|!FS_COLOR_GREEN, #$0296|!FS_COLOR_GREEN
|
dw #$02C5|!FS_COLOR_GREEN, #$02C6|!FS_COLOR_GREEN, #$02D5|!FS_COLOR_GREEN, #$02D6|!FS_COLOR_GREEN
|
||||||
.blue_pendant
|
.blue_pendant
|
||||||
dw #$0285|!FS_COLOR_BLUE, #$0286|!FS_COLOR_BLUE, #$0295|!FS_COLOR_BLUE, #$0296|!FS_COLOR_BLUE
|
dw #$02C5|!FS_COLOR_BLUE, #$02C6|!FS_COLOR_BLUE, #$02D5|!FS_COLOR_BLUE, #$02D6|!FS_COLOR_BLUE
|
||||||
.red_pendant
|
.red_pendant
|
||||||
dw #$0285|!FS_COLOR_RED, #$0286|!FS_COLOR_RED, #$0295|!FS_COLOR_RED, #$0296|!FS_COLOR_RED
|
dw #$02C5|!FS_COLOR_RED, #$02C6|!FS_COLOR_RED, #$02D5|!FS_COLOR_RED, #$02D6|!FS_COLOR_RED
|
||||||
|
|
||||||
.gloves
|
.gloves
|
||||||
dw #$024E|!FS_COLOR_BROWN, #$024F|!FS_COLOR_BROWN, #$025E|!FS_COLOR_BROWN, #$025F|!FS_COLOR_BROWN
|
dw #$028E|!FS_COLOR_BROWN, #$028F|!FS_COLOR_BROWN, #$029E|!FS_COLOR_BROWN, #$029F|!FS_COLOR_BROWN
|
||||||
.mitts
|
.mitts
|
||||||
dw #$0260|!FS_COLOR_YELLOW, #$0261|!FS_COLOR_YELLOW, #$0270|!FS_COLOR_YELLOW, #$0271|!FS_COLOR_YELLOW
|
dw #$02A0|!FS_COLOR_YELLOW, #$02A1|!FS_COLOR_YELLOW, #$02B0|!FS_COLOR_YELLOW, #$02B1|!FS_COLOR_YELLOW
|
||||||
|
|
||||||
.mushroom
|
.mushroom
|
||||||
dw #$0262|!FS_COLOR_RED, #$0263|!FS_COLOR_RED, #$0272|!FS_COLOR_RED, #$0273|!FS_COLOR_RED
|
dw #$02A2|!FS_COLOR_RED, #$02A3|!FS_COLOR_RED, #$02B2|!FS_COLOR_RED, #$02B3|!FS_COLOR_RED
|
||||||
.powder
|
.powder
|
||||||
dw #$020A|!FS_COLOR_BROWN, #$020B|!FS_COLOR_BROWN, #$021A|!FS_COLOR_BROWN, #$021B|!FS_COLOR_BROWN
|
dw #$024A|!FS_COLOR_BROWN, #$024B|!FS_COLOR_BROWN, #$025A|!FS_COLOR_BROWN, #$025B|!FS_COLOR_BROWN
|
||||||
|
|
||||||
.fighters_sword
|
.fighters_sword
|
||||||
dw #$0266|!FS_COLOR_BLUE, #$0267|!FS_COLOR_BLUE, #$0276|!FS_COLOR_BLUE, #$0277|!FS_COLOR_BLUE
|
dw #$02A6|!FS_COLOR_BLUE, #$02A7|!FS_COLOR_BLUE, #$02B6|!FS_COLOR_BLUE, #$02B7|!FS_COLOR_BLUE
|
||||||
.master_sword
|
.master_sword
|
||||||
dw #$0268|!FS_COLOR_BLUE, #$0269|!FS_COLOR_BLUE, #$0278|!FS_COLOR_RED, #$0279|!FS_COLOR_BLUE
|
dw #$02A8|!FS_COLOR_BLUE, #$02A9|!FS_COLOR_BLUE, #$02B8|!FS_COLOR_RED, #$02B9|!FS_COLOR_BLUE
|
||||||
.tempered_sword
|
.tempered_sword
|
||||||
dw #$0268|!FS_COLOR_RED, #$0269|!FS_COLOR_RED, #$0278|!FS_COLOR_GREEN, #$026A|!FS_COLOR_RED
|
dw #$02A8|!FS_COLOR_RED, #$02A9|!FS_COLOR_RED, #$02B8|!FS_COLOR_GREEN, #$02AA|!FS_COLOR_RED
|
||||||
.gold_sword
|
.gold_sword
|
||||||
dw #$0268|!FS_COLOR_YELLOW, #$0269|!FS_COLOR_YELLOW, #$0278|!FS_COLOR_BLUE, #$027A|!FS_COLOR_YELLOW
|
dw #$02A8|!FS_COLOR_YELLOW, #$02A9|!FS_COLOR_YELLOW, #$02B8|!FS_COLOR_BLUE, #$02BA|!FS_COLOR_YELLOW
|
||||||
|
|
||||||
.fighters_shield
|
.fighters_shield
|
||||||
dw #$026B|!FS_COLOR_BLUE, #$026B|!FS_COLOR_BLUE|!FS_HFLIP, #$027B|!FS_COLOR_BLUE, #$027B|!FS_COLOR_BLUE|!FS_HFLIP
|
dw #$02AB|!FS_COLOR_BLUE, #$02AB|!FS_COLOR_BLUE|!FS_HFLIP, #$02BB|!FS_COLOR_BLUE, #$02BB|!FS_COLOR_BLUE|!FS_HFLIP
|
||||||
.fire_shield
|
.fire_shield
|
||||||
dw #$026C|!FS_COLOR_BOOTS, #$026C|!FS_COLOR_BOOTS|!FS_HFLIP, #$027C|!FS_COLOR_BOOTS, #$027C|!FS_COLOR_BOOTS|!FS_HFLIP
|
dw #$02AC|!FS_COLOR_BOOTS, #$02AC|!FS_COLOR_BOOTS|!FS_HFLIP, #$02BC|!FS_COLOR_BOOTS, #$02BC|!FS_COLOR_BOOTS|!FS_HFLIP
|
||||||
.mirror_shield
|
.mirror_shield
|
||||||
dw #$026D|!FS_COLOR_YELLOW, #$026E|!FS_COLOR_YELLOW, #$027D|!FS_COLOR_YELLOW, #$027E|!FS_COLOR_YELLOW
|
dw #$02AD|!FS_COLOR_YELLOW, #$02AE|!FS_COLOR_YELLOW, #$02BD|!FS_COLOR_YELLOW, #$02BE|!FS_COLOR_YELLOW
|
||||||
|
|
||||||
.green_mail
|
.green_mail
|
||||||
dw #$026F|!FS_COLOR_GREEN, #$026F|!FS_COLOR_GREEN|!FS_HFLIP, #$027F|!FS_COLOR_GREEN, #$02B3|!FS_COLOR_GREEN
|
dw #$02AF|!FS_COLOR_GREEN, #$02AF|!FS_COLOR_GREEN|!FS_HFLIP, #$02BF|!FS_COLOR_GREEN, #$02F3|!FS_COLOR_GREEN
|
||||||
.blue_mail
|
.blue_mail
|
||||||
dw #$026F|!FS_COLOR_BLUE, #$026F|!FS_COLOR_BLUE|!FS_HFLIP, #$027F|!FS_COLOR_BLUE, #$02B4|!FS_COLOR_BLUE
|
dw #$02AF|!FS_COLOR_BLUE, #$02AF|!FS_COLOR_BLUE|!FS_HFLIP, #$02BF|!FS_COLOR_BLUE, #$02F4|!FS_COLOR_BLUE
|
||||||
.red_mail
|
.red_mail
|
||||||
dw #$026F|!FS_COLOR_RED, #$026F|!FS_COLOR_RED|!FS_HFLIP, #$027F|!FS_COLOR_RED, #$02B5|!FS_COLOR_RED
|
dw #$02AF|!FS_COLOR_RED, #$02AF|!FS_COLOR_RED|!FS_HFLIP, #$02BF|!FS_COLOR_RED, #$02F5|!FS_COLOR_RED
|
||||||
|
|
||||||
.heart_piece_0_of_4
|
|
||||||
dw #$0280|!FS_COLOR_RED, #$0280|!FS_COLOR_RED|!FS_HFLIP, #$0290|!FS_COLOR_RED, #$0290|!FS_COLOR_RED|!FS_HFLIP
|
|
||||||
.heart_piece_1_of_4
|
|
||||||
dw #$0281|!FS_COLOR_RED, #$0280|!FS_COLOR_RED|!FS_HFLIP, #$0290|!FS_COLOR_RED, #$0290|!FS_COLOR_RED|!FS_HFLIP
|
|
||||||
.heart_piece_2_of_4
|
|
||||||
dw #$0281|!FS_COLOR_RED, #$0280|!FS_COLOR_RED|!FS_HFLIP, #$0291|!FS_COLOR_RED, #$0290|!FS_COLOR_RED|!FS_HFLIP
|
|
||||||
.heart_piece_3_of_4
|
|
||||||
dw #$0281|!FS_COLOR_RED, #$0281|!FS_COLOR_RED|!FS_HFLIP, #$0291|!FS_COLOR_RED, #$0290|!FS_COLOR_RED|!FS_HFLIP
|
|
||||||
|
|
||||||
.empty_bottle
|
.empty_bottle
|
||||||
dw #$0240|!FS_COLOR_BW, #$0241|!FS_COLOR_BW, #$0250|!FS_COLOR_BW, #$0251|!FS_COLOR_BW
|
dw #$0280|!FS_COLOR_BW, #$0281|!FS_COLOR_BW, #$0290|!FS_COLOR_BW, #$0291|!FS_COLOR_BW
|
||||||
.red_potion
|
.red_potion
|
||||||
dw #$0242|!FS_COLOR_RED, #$0242|!FS_COLOR_RED|!FS_HFLIP, #$0252|!FS_COLOR_RED, #$0243|!FS_COLOR_RED
|
dw #$0282|!FS_COLOR_RED, #$0282|!FS_COLOR_RED|!FS_HFLIP, #$0292|!FS_COLOR_RED, #$0283|!FS_COLOR_RED
|
||||||
.green_potion
|
.green_potion
|
||||||
dw #$0242|!FS_COLOR_GREEN, #$0242|!FS_COLOR_GREEN|!FS_HFLIP, #$0252|!FS_COLOR_GREEN, #$0244|!FS_COLOR_GREEN
|
dw #$0282|!FS_COLOR_GREEN, #$0282|!FS_COLOR_GREEN|!FS_HFLIP, #$0292|!FS_COLOR_GREEN, #$0284|!FS_COLOR_GREEN
|
||||||
.blue_potion
|
.blue_potion
|
||||||
dw #$0242|!FS_COLOR_BLUE, #$0242|!FS_COLOR_BLUE|!FS_HFLIP, #$0252|!FS_COLOR_BLUE, #$0245|!FS_COLOR_BLUE
|
dw #$0282|!FS_COLOR_BLUE, #$0282|!FS_COLOR_BLUE|!FS_HFLIP, #$0292|!FS_COLOR_BLUE, #$0285|!FS_COLOR_BLUE
|
||||||
.fairy_bottle
|
.fairy_bottle
|
||||||
dw #$0247|!FS_COLOR_YELLOW|!FS_HFLIP, #$0247|!FS_COLOR_YELLOW, #$0256|!FS_COLOR_BLUE, #$0257|!FS_COLOR_BLUE
|
dw #$0287|!FS_COLOR_YELLOW|!FS_HFLIP, #$0287|!FS_COLOR_YELLOW, #$0296|!FS_COLOR_BLUE, #$0297|!FS_COLOR_BLUE
|
||||||
.bee_bottle
|
.bee_bottle
|
||||||
dw #$0240|!FS_COLOR_BW, #$0241|!FS_COLOR_BW, #$0254|!FS_COLOR_YELLOW, #$0255|!FS_COLOR_YELLOW
|
dw #$0280|!FS_COLOR_BW, #$0281|!FS_COLOR_BW, #$0294|!FS_COLOR_YELLOW, #$0295|!FS_COLOR_YELLOW
|
||||||
.good_bee_bottle
|
.good_bee_bottle
|
||||||
dw #$0240|!FS_COLOR_BW, #$0241|!FS_COLOR_BW, #$0254|!FS_COLOR_YELLOW, #$0246|!FS_COLOR_YELLOW
|
dw #$0280|!FS_COLOR_BW, #$0281|!FS_COLOR_BW, #$0294|!FS_COLOR_YELLOW, #$0286|!FS_COLOR_YELLOW
|
||||||
|
|
||||||
.fighters_bombs
|
.fighters_bombs
|
||||||
dw #$020C|!FS_COLOR_GREEN, #$020D|!FS_COLOR_GREEN, #$021C|!FS_COLOR_GREEN, #$02A1|!FS_COLOR_GREEN
|
dw #$024C|!FS_COLOR_GREEN, #$024D|!FS_COLOR_GREEN, #$025C|!FS_COLOR_GREEN, #$02E1|!FS_COLOR_GREEN
|
||||||
.master_bombs
|
.master_bombs
|
||||||
dw #$020C|!FS_COLOR_BLUE, #$020D|!FS_COLOR_BLUE, #$021C|!FS_COLOR_BLUE, #$02A2|!FS_COLOR_BLUE
|
dw #$024C|!FS_COLOR_BLUE, #$024D|!FS_COLOR_BLUE, #$025C|!FS_COLOR_BLUE, #$02E2|!FS_COLOR_BLUE
|
||||||
.tempered_bombs
|
.tempered_bombs
|
||||||
dw #$020C|!FS_COLOR_RED, #$020D|!FS_COLOR_RED, #$021C|!FS_COLOR_RED, #$02A3|!FS_COLOR_RED
|
dw #$024C|!FS_COLOR_RED, #$024D|!FS_COLOR_RED, #$025C|!FS_COLOR_RED, #$02E3|!FS_COLOR_RED
|
||||||
.gold_bombs
|
.gold_bombs
|
||||||
dw #$020C|!FS_COLOR_YELLOW, #$020D|!FS_COLOR_YELLOW, #$021C|!FS_COLOR_YELLOW, #$02A4|!FS_COLOR_YELLOW
|
dw #$024C|!FS_COLOR_YELLOW, #$024D|!FS_COLOR_YELLOW, #$025C|!FS_COLOR_YELLOW, #$02E4|!FS_COLOR_YELLOW
|
||||||
.extra_gold_bombs
|
.extra_gold_bombs
|
||||||
dw #$020C|!FS_COLOR_YELLOW, #$020D|!FS_COLOR_YELLOW, #$021C|!FS_COLOR_YELLOW, #$02A5|!FS_COLOR_YELLOW
|
dw #$024C|!FS_COLOR_YELLOW, #$024D|!FS_COLOR_YELLOW, #$025C|!FS_COLOR_YELLOW, #$02E5|!FS_COLOR_YELLOW
|
||||||
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FileSelectDrawHudBar:
|
FileSelectDrawHudBar:
|
||||||
LDA.w #$029B|!FS_COLOR_GREEN : %fs_draw16x8(0,10)
|
LDA.w #$02DB|!FS_COLOR_GREEN : %fs_draw16x8(0,10)
|
||||||
LDA.l DisplayRupeesSRAM
|
LDA.l DisplayRupeesSRAM
|
||||||
JSL.l HexToDec
|
JSL.l HUDHex4Digit_Long
|
||||||
LDA.l HexToDecDigit2 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,9)
|
LDA.b Scrap04 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,9)
|
||||||
LDA.l HexToDecDigit3 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,10)
|
LDA.b Scrap05 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,10)
|
||||||
LDA.l HexToDecDigit4 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,11)
|
LDA.b Scrap06 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,11)
|
||||||
LDA.l HexToDecDigit5 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,12)
|
LDA.b Scrap07 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,12)
|
||||||
|
|
||||||
LDA.l SpecialWeapons : AND.w #$00FF : CMP #$0001 : BEQ .colorBombs
|
LDA.l SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BEQ .colorBombs
|
||||||
LDA.w #$028B|!FS_COLOR_BLUE : %fs_draw16x8(0,14)
|
LDA.w #$02CB|!FS_COLOR_BLUE : %fs_draw16x8(0,14)
|
||||||
LDA.l BombsEquipmentSRAM : AND.w #$00FF
|
LDA.l BombsEquipmentSRAM : AND.w #$00FF
|
||||||
JSL.l HexToDec
|
JSL.l HUDHex2Digit_Long
|
||||||
LDA.l HexToDecDigit4 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,14)
|
TYA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,14)
|
||||||
LDA.l HexToDecDigit5 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,15)
|
TXA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,15)
|
||||||
BRA ++
|
BRA ++
|
||||||
|
|
||||||
.colorBombs
|
.colorBombs
|
||||||
LDA.l $70038F : AND.w #$00FF : BNE +
|
LDA.l SpecialWeaponLevelSRAM : AND.w #$00FF : BNE +
|
||||||
; no bombs, draw no icon
|
; no bombs, draw no icon
|
||||||
BRA ++
|
BRA ++
|
||||||
+ : DEC : BNE +
|
+ : DEC : BNE +
|
||||||
LDA.w #$028B|!FS_COLOR_GREEN : %fs_draw16x8(0,14)
|
LDA.w #$02CB|!FS_COLOR_GREEN : %fs_draw16x8(0,14)
|
||||||
BRA ++
|
BRA ++
|
||||||
+ : DEC : BNE +
|
+ : DEC : BNE +
|
||||||
LDA.w #$028B|!FS_COLOR_BLUE : %fs_draw16x8(0,14)
|
LDA.w #$02CB|!FS_COLOR_BLUE : %fs_draw16x8(0,14)
|
||||||
BRA ++
|
BRA ++
|
||||||
+ : DEC : BNE +
|
+ : DEC : BNE +
|
||||||
LDA.w #$028B|!FS_COLOR_RED : %fs_draw16x8(0,14)
|
LDA.w #$02CB|!FS_COLOR_RED : %fs_draw16x8(0,14)
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$028B|!FS_COLOR_YELLOW : %fs_draw16x8(0,14)
|
LDA.w #$02CB|!FS_COLOR_YELLOW : %fs_draw16x8(0,14)
|
||||||
++
|
++
|
||||||
|
|
||||||
LDA.l BowTrackingSRAM : AND.w #$0040 : BEQ +
|
LDA.l BowTrackingSRAM : AND.w #$0040 : BEQ +
|
||||||
LDA.w #$0299|!FS_COLOR_RED : %fs_draw16x8(0,17)
|
LDA.w #$02D9|!FS_COLOR_RED : %fs_draw16x8(0,17)
|
||||||
BRA ++
|
BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$0289|!FS_COLOR_BROWN : %fs_draw16x8(0,17)
|
LDA.w #$02C9|!FS_COLOR_BROWN : %fs_draw16x8(0,17)
|
||||||
++
|
++
|
||||||
LDA.l CurrentArrowsSRAM : AND.w #$00FF
|
LDA.l CurrentArrowsSRAM : AND.w #$00FF
|
||||||
JSL.l HexToDec
|
JSL.l HUDHex2Digit_Long
|
||||||
LDA.l HexToDecDigit4 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,17)
|
TYA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,17)
|
||||||
LDA.l HexToDecDigit5 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,18)
|
TXA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,18)
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
AltBufferTable:
|
AltBufferTable:
|
||||||
LDA.b #$02 : STA.w BG34NBA ; Have Screen 3 use same tile area as screens 1
|
LDA.b #$02 : STA.w BG34NBA ; Have Screen 3 use same tile area as screens 1
|
||||||
.noScreen3Change
|
.noScreen3Change
|
||||||
REP #$20
|
REP #$20
|
||||||
LDX.w #$0400 ; 14 rows with 64 bytes (30 tiles * 2 + 4 byte header)
|
LDX.w #$0400 ; 14 rows with 64 bytes (30 tiles * 2 + 4 byte header)
|
||||||
;fill with the blank character
|
;fill with the blank character
|
||||||
LDA.w #$0188
|
LDA.w #$0188
|
||||||
-
|
-
|
||||||
STA.w GFXStripes, X
|
STA.w GFXStripes, X
|
||||||
DEX : DEX : BNE -
|
DEX : DEX : BNE -
|
||||||
|
|
||||||
; set vram offsets
|
; set vram offsets
|
||||||
LDA.w #$0161 : STA.w GFXStripes+$02 ;file 1 top row
|
LDA.w #$0161 : STA.w GFXStripes+$02 ;file 1 top row
|
||||||
LDA.w #$2161 : STA.w GFXStripes+$42 ;file 1 bottom row
|
LDA.w #$2161 : STA.w GFXStripes+$42 ;file 1 bottom row
|
||||||
|
|
||||||
LDA.w #$4161 : STA.w GFXStripes+$82 ;gap row top
|
LDA.w #$4161 : STA.w GFXStripes+$82 ;gap row top
|
||||||
LDA.w #$6161 : STA.w GFXStripes+$C2 ;gap row bottom
|
LDA.w #$6161 : STA.w GFXStripes+$C2 ;gap row bottom
|
||||||
|
|
||||||
LDA.w #$8161 : STA.w GFXStripes+$0102 ;file 2 top row
|
LDA.w #$8161 : STA.w GFXStripes+$0102 ;file 2 top row
|
||||||
LDA.w #$A161 : STA.w GFXStripes+$0142 ;file 2 bottom row
|
LDA.w #$A161 : STA.w GFXStripes+$0142 ;file 2 bottom row
|
||||||
|
|
||||||
LDA.w #$C161 : STA.w GFXStripes+$0182 ;gap row top
|
LDA.w #$C161 : STA.w GFXStripes+$0182 ;gap row top
|
||||||
LDA.w #$E161 : STA.w GFXStripes+$01C2 ;gap row bottom
|
LDA.w #$E161 : STA.w GFXStripes+$01C2 ;gap row bottom
|
||||||
|
|
||||||
LDA.w #$0162 : STA.w GFXStripes+$0202 ;file 3 top row
|
LDA.w #$0162 : STA.w GFXStripes+$0202 ;file 3 top row
|
||||||
LDA.w #$2162 : STA.w GFXStripes+$0242 ;file 3 bottom row
|
LDA.w #$2162 : STA.w GFXStripes+$0242 ;file 3 bottom row
|
||||||
|
|
||||||
LDA.w #$4162 : STA.w GFXStripes+$0282 ;extra gap row top
|
LDA.w #$4162 : STA.w GFXStripes+$0282 ;extra gap row top
|
||||||
LDA.w #$6162 : STA.w GFXStripes+$02C2 ;extra gap row bottom
|
LDA.w #$6162 : STA.w GFXStripes+$02C2 ;extra gap row bottom
|
||||||
|
|
||||||
LDA.w #$8162 : STA.w GFXStripes+$0302 ;extra gap row top
|
LDA.w #$8162 : STA.w GFXStripes+$0302 ;extra gap row top
|
||||||
LDA.w #$A162 : STA.w GFXStripes+$0342 ;extra gap row bottom
|
LDA.w #$A162 : STA.w GFXStripes+$0342 ;extra gap row bottom
|
||||||
|
|
||||||
LDA.w #$C162 : STA.w GFXStripes+$0382 ;extra gap row top
|
LDA.w #$C162 : STA.w GFXStripes+$0382 ;extra gap row top
|
||||||
LDA.w #$E162 : STA.w GFXStripes+$03C2 ;extra gap row bottom
|
LDA.w #$E162 : STA.w GFXStripes+$03C2 ;extra gap row bottom
|
||||||
|
|
||||||
; set lengths
|
; set lengths
|
||||||
LDA.w #$3B00
|
LDA.w #$3B00
|
||||||
STA.w GFXStripes+$04 ;file 1 top row
|
STA.w GFXStripes+$04 ;file 1 top row
|
||||||
STA.w GFXStripes+$44 ;file 1 bottom row
|
STA.w GFXStripes+$44 ;file 1 bottom row
|
||||||
STA.w GFXStripes+$84 ;gap row top
|
STA.w GFXStripes+$84 ;gap row top
|
||||||
STA.w GFXStripes+$C4 ;gap row bottom
|
STA.w GFXStripes+$C4 ;gap row bottom
|
||||||
STA.w GFXStripes+$0104 ;file 2 top row
|
STA.w GFXStripes+$0104 ;file 2 top row
|
||||||
STA.w GFXStripes+$0144 ;file 2 bottom row
|
STA.w GFXStripes+$0144 ;file 2 bottom row
|
||||||
STA.w GFXStripes+$0184 ;gap row top
|
STA.w GFXStripes+$0184 ;gap row top
|
||||||
STA.w GFXStripes+$01C4 ;gap row bottom
|
STA.w GFXStripes+$01C4 ;gap row bottom
|
||||||
STA.w GFXStripes+$0204 ;file 3 top row
|
STA.w GFXStripes+$0204 ;file 3 top row
|
||||||
STA.w GFXStripes+$0244 ;file 3 bottom row
|
STA.w GFXStripes+$0244 ;file 3 bottom row
|
||||||
STA.w GFXStripes+$0284 ;extra gap row top
|
STA.w GFXStripes+$0284 ;extra gap row top
|
||||||
STA.w GFXStripes+$02C4 ;extra gap row bottom
|
STA.w GFXStripes+$02C4 ;extra gap row bottom
|
||||||
STA.w GFXStripes+$0304 ;extra gap row top
|
STA.w GFXStripes+$0304 ;extra gap row top
|
||||||
STA.w GFXStripes+$0344 ;extra gap row bottom
|
STA.w GFXStripes+$0344 ;extra gap row bottom
|
||||||
STA.w GFXStripes+$0384 ;extra gap row top
|
STA.w GFXStripes+$0384 ;extra gap row top
|
||||||
STA.w GFXStripes+$03C4 ;extra gap row bottom
|
STA.w GFXStripes+$03C4 ;extra gap row bottom
|
||||||
|
|
||||||
; Set last packet marker
|
; Set last packet marker
|
||||||
LDA.w #$00FF : STA.w GFXStripes+$0402
|
LDA.w #$00FF : STA.w GFXStripes+$0402
|
||||||
|
|
||||||
; Draw Unlock option if applicable
|
; Draw Unlock option if applicable
|
||||||
LDA.b GameMode : AND.w #$00FF : CMP.w #$0001 : BNE +
|
LDA.b GameMode : AND.w #$00FF : CMP.w #$0001 : BNE +
|
||||||
LDA.l IsEncrypted : AND.w #$00FF : CMP.w #$0002 : BNE +
|
LDA.l IsEncrypted : AND.w #$00FF : CMP.w #$0002 : BNE +
|
||||||
PHP : SEP #$30 : PHX : PHY : JSL ValidatePassword : PLY : PLX : PLP
|
PHP : SEP #$30 : PHX : PHY : JSL ValidatePassword : PLY : PLX : PLP
|
||||||
AND.w #$00FF : BNE +
|
AND.w #$00FF : BNE +
|
||||||
LDA.w #!FSTILE_U_TOP : %fs_draw8x16(14,5)
|
LDA.w #!FSTILE_U_TOP : %fs_draw8x16(14,5)
|
||||||
LDA.w #!FSTILE_N_TOP : %fs_draw8x16(14,6)
|
LDA.w #!FSTILE_N_TOP : %fs_draw8x16(14,6)
|
||||||
LDA.w #!FSTILE_L_TOP : %fs_draw8x16(14,7)
|
LDA.w #!FSTILE_L_TOP : %fs_draw8x16(14,7)
|
||||||
LDA.w #!FSTILE_O_TOP : %fs_draw8x16(14,8)
|
LDA.w #!FSTILE_O_TOP : %fs_draw8x16(14,8)
|
||||||
LDA.w #!FSTILE_C_TOP : %fs_draw8x16(14,9)
|
LDA.w #!FSTILE_C_TOP : %fs_draw8x16(14,9)
|
||||||
LDA.w #!FSTILE_K_TOP : %fs_draw8x16(14,10)
|
LDA.w #!FSTILE_K_TOP : %fs_draw8x16(14,10)
|
||||||
+
|
+
|
||||||
SEP #$20
|
SEP #$20
|
||||||
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -759,31 +765,31 @@ AltBufferTable_credits:
|
|||||||
JSL AltBufferTable_noScreen3Change
|
JSL AltBufferTable_noScreen3Change
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w #$6168 : STA.w GFXStripes+$02 ;file 1 top row
|
LDA.w #$6168 : STA.w GFXStripes+$02 ;file 1 top row
|
||||||
LDA.w #$8168 : STA.w GFXStripes+$42 ;file 1 bottom row
|
LDA.w #$8168 : STA.w GFXStripes+$42 ;file 1 bottom row
|
||||||
|
|
||||||
LDA.w #$A168 : STA.w GFXStripes+$82 ;gap row top
|
LDA.w #$A168 : STA.w GFXStripes+$82 ;gap row top
|
||||||
LDA.w #$C168 : STA.w GFXStripes+$C2 ;gap row bottom
|
LDA.w #$C168 : STA.w GFXStripes+$C2 ;gap row bottom
|
||||||
|
|
||||||
LDA.w #$E168 : STA.w GFXStripes+$0102 ;file 2 top row
|
LDA.w #$E168 : STA.w GFXStripes+$0102 ;file 2 top row
|
||||||
LDA.w #$0169 : STA.w GFXStripes+$0142 ;file 2 bottom row
|
LDA.w #$0169 : STA.w GFXStripes+$0142 ;file 2 bottom row
|
||||||
|
|
||||||
LDA.w #$2169 : STA.w GFXStripes+$0182 ;gap row top
|
LDA.w #$2169 : STA.w GFXStripes+$0182 ;gap row top
|
||||||
LDA.w #$4169 : STA.w GFXStripes+$01c2 ;gap row bottom
|
LDA.w #$4169 : STA.w GFXStripes+$01c2 ;gap row bottom
|
||||||
|
|
||||||
LDA.w #$6169 : STA.w GFXStripes+$0202 ;file 3 top row
|
LDA.w #$6169 : STA.w GFXStripes+$0202 ;file 3 top row
|
||||||
LDA.w #$8169 : STA.w GFXStripes+$0242 ;file 3 bottom row
|
LDA.w #$8169 : STA.w GFXStripes+$0242 ;file 3 bottom row
|
||||||
|
|
||||||
LDA.w #$A169 : STA.w GFXStripes+$0282 ;extra gap row top
|
LDA.w #$A169 : STA.w GFXStripes+$0282 ;extra gap row top
|
||||||
LDA.w #$C169 : STA.w GFXStripes+$02C2 ;extra gap row bottom
|
LDA.w #$C169 : STA.w GFXStripes+$02C2 ;extra gap row bottom
|
||||||
|
|
||||||
LDA.w #$E169 : STA.w GFXStripes+$0302 ;extra gap row top
|
LDA.w #$E169 : STA.w GFXStripes+$0302 ;extra gap row top
|
||||||
LDA.w #$016A : STA.w GFXStripes+$0342 ;extra gap row bottom
|
LDA.w #$016A : STA.w GFXStripes+$0342 ;extra gap row bottom
|
||||||
|
|
||||||
LDA.w #$216A : STA.w GFXStripes+$0382 ;extra gap row top
|
LDA.w #$216A : STA.w GFXStripes+$0382 ;extra gap row top
|
||||||
LDA.w #$416A : STA.w GFXStripes+$03C2 ;extra gap row bottom
|
LDA.w #$416A : STA.w GFXStripes+$03C2 ;extra gap row bottom
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro LayoutPriority(address)
|
macro LayoutPriority(address)
|
||||||
@@ -813,44 +819,61 @@ RTL
|
|||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadFullItemTiles:
|
LoadFullItemTiles:
|
||||||
PHA : PHX
|
LDA.b #$80 : STA.w VMAIN
|
||||||
LDA.w DMAP0 : PHA ; preserve DMA parameters
|
LDA.b #$01 : STA.w DMAP0
|
||||||
LDA.w BBAD0 : PHA ; preserve DMA parameters
|
LDA.b #$18 : STA.w BBAD0
|
||||||
LDA.w A1T0L : PHA ; preserve DMA parameters
|
LDX.w #$3200 : STX.w VMADDL
|
||||||
LDA.w A1T0H : PHA ; preserve DMA parameters
|
LDA.b #FileSelectNewGraphics>>16 : STA.w A1B0
|
||||||
LDA.w A1B0 : PHA ; preserve DMA parameters
|
LDX.w #FileSelectNewGraphics : STX.w A1T0L
|
||||||
LDA.w DAS0L : PHA ; preserve DMA parameters
|
LDX.w #$0C00 : STX.w DAS0L
|
||||||
LDA.w DAS0H : PHA ; preserve DMA parameters
|
LDA.b #$01 : STA.w MDMAEN
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
LDA.b #$80 : STA.w VMAIN ; write read increment on $2119
|
|
||||||
LDA.b #$01 : STA.w DMAP0 ; set DMA transfer direction A -> B, bus A auto increment, double-byte mode
|
|
||||||
LDA.b #$18 : STA.w BBAD0 ; set bus B destination to VRAM register
|
|
||||||
|
|
||||||
LDA.b #$00 : STA.w VMADDL ; write VRAM destination address
|
|
||||||
LDA.b #$30 : STA.w VMADDH ; write VRAM destination address
|
|
||||||
|
|
||||||
LDA.b #$31 : STA.w A1B0 ; set bus A source bank
|
|
||||||
LDA.b #FileSelectNewGraphics : STA.w A1T0L ; set bus A source address to ROM
|
|
||||||
LDA.b #FileSelectNewGraphics>>8 : STA.w A1T0H ; set bus A source address to ROM
|
|
||||||
|
|
||||||
LDA.w INIDISP : PHA : LDA.b #$80 : STA.w INIDISP ; save screen state & turn screen off
|
|
||||||
|
|
||||||
STZ.w DAS0L : LDA.b #$10 : STA.w DAS0H ; set transfer size to 0x1000
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
|
|
||||||
PLA : STA.w INIDISP ; put screen back however it was before
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
PLA : STA.w DAS0H ; restore DMA parameters
|
|
||||||
PLA : STA.w DAS0L ; restore DMA parameters
|
|
||||||
PLA : STA.w A1B0 ; restore DMA parameters
|
|
||||||
PLA : STA.w A1T0H ; restore DMA parameters
|
|
||||||
PLA : STA.w A1T0L ; restore DMA parameters
|
|
||||||
PLA : STA.w BBAD0 ; restore DMA parameters
|
|
||||||
PLA : STA.w DMAP0 ; restore DMA parameters
|
|
||||||
PLX : PLA
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
; z colon @
|
||||||
|
; length $340
|
||||||
|
; target vram $6C00
|
||||||
|
; NewFont+$400
|
||||||
|
LoadLowerCaseLettersSymbols:
|
||||||
|
LDA.b #$80 : STA.w VMAIN
|
||||||
|
LDA.b #$01 : STA.w DMAP0
|
||||||
|
LDA.b #$18 : STA.w BBAD0
|
||||||
|
|
||||||
|
; Lower case letters
|
||||||
|
LDA.b #NewFont>>16 : STA.w A1B0
|
||||||
|
LDX.w #NewFont+$400 : STX.w A1T0L
|
||||||
|
LDX.w #$0400 : STX.w DAS0L
|
||||||
|
LDX.w #$2D00 : STX.w VMADDL
|
||||||
|
LDA.b #$01 : STA.w MDMAEN
|
||||||
|
|
||||||
|
; : @ #
|
||||||
|
LDA.b #NewFont>>16 : STA.w A1B0
|
||||||
|
LDX.w #NewFont+$A80 : STX.w A1T0L
|
||||||
|
LDA.b #NewFont>>16 : STA.w A1B1
|
||||||
|
LDX.w #NewFont+$B80 : STX.w A1T1L
|
||||||
|
LDX.w #$0030 : STX.w DAS0L : STX.w DAS1L
|
||||||
|
|
||||||
|
LDX.w #$2E50 : STX.w VMADDL
|
||||||
|
LDA.b #$01 : STA.w MDMAEN
|
||||||
|
LDX.w #$2ED0 : STX.w VMADDL
|
||||||
|
LDA.b #$02 : STA.w MDMAEN
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
LoadFileSelectVanillaItems:
|
||||||
|
REP #$10
|
||||||
|
LDA.b #$80 : STA.w VMAIN
|
||||||
|
LDA.b #$01 : STA.w DMAP0
|
||||||
|
LDA.b #$18 : STA.w BBAD0
|
||||||
|
|
||||||
|
; Lower case letters
|
||||||
|
LDA.b #DecompBuffer2>>16 : STA.w A1B0
|
||||||
|
LDX.w #DecompBuffer2 : STX.w A1T0L
|
||||||
|
LDX.w #$0600 : STX.w DAS0L
|
||||||
|
LDX.w #$2F00 : STX.w VMADDL
|
||||||
|
LDA.b #$01 : STA.w MDMAEN
|
||||||
|
|
||||||
|
SEP #$10
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
SetFileSelectPalette:
|
SetFileSelectPalette:
|
||||||
LDA.b GameMode : CMP.b #$04 : BNE +
|
LDA.b GameMode : CMP.b #$04 : BNE +
|
||||||
; load the vanilla file select screen BG3 palette for naming screen
|
; load the vanilla file select screen BG3 palette for naming screen
|
||||||
@@ -894,7 +917,7 @@ DrawPlayerFile_credits:
|
|||||||
|
|
||||||
LDA.l EquipmentSRAM+$2C : AND.w #$00FF : LSR #3 : STA.b Scrap02
|
LDA.l EquipmentSRAM+$2C : AND.w #$00FF : LSR #3 : STA.b Scrap02
|
||||||
%fs_LDY_screenpos(0,20)
|
%fs_LDY_screenpos(0,20)
|
||||||
LDA.w #$028F|!FS_COLOR_RED
|
LDA.w #$02CF|!FS_COLOR_RED
|
||||||
LDX.w #$000A
|
LDX.w #$000A
|
||||||
|
|
||||||
.nextHeart
|
.nextHeart
|
||||||
@@ -964,20 +987,20 @@ JML FSSelectFile_continue
|
|||||||
JML FSSelectFile_return
|
JML FSSelectFile_return
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MaybeForceFileName:
|
MaybeForceFileName:
|
||||||
LDA.l ForceFileName : BEQ +
|
LDA.l ForceFileName : BEQ +
|
||||||
REP #$20
|
REP #$20
|
||||||
LDX.b #$FE
|
LDX.b #$FE
|
||||||
-
|
-
|
||||||
INX : INX
|
INX : INX
|
||||||
LDA.l StaticFileName, X : STA.l ExtendedFileNameSRAM, X
|
LDA.l StaticFileName, X : STA.l ExtendedFileNameSRAM, X
|
||||||
CPX.b #$16 : BEQ .done
|
CPX.b #$16 : BEQ .done
|
||||||
CPX.b #$08 : BCS -
|
CPX.b #$08 : BCS -
|
||||||
STA.l FileNameVanillaSRAM, X
|
STA.l FileNameVanillaSRAM, X
|
||||||
BRA -
|
BRA -
|
||||||
.done
|
.done
|
||||||
SEP #$20
|
SEP #$20
|
||||||
JML.l InitializeSaveFile
|
JML.l InitializeSaveFile
|
||||||
|
|
||||||
+
|
+
|
||||||
JML.l NameFile_MakeScreenVisible
|
JML.l NameFile_MakeScreenVisible
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
|
|
||||||
; Written over and used by OnEnterWater hook.
|
; Written over and used by OnEnterWater hook.
|
||||||
UnequipCapeQuiet:
|
UnequipCapeQuiet:
|
||||||
LDA.b #$20 : STA.w PoofTimer
|
LDA.b #$20 : STA.w PoofTimer
|
||||||
STZ.w NoDamage
|
STZ.w NoDamage
|
||||||
STZ.b CapeOn
|
STZ.b CapeOn
|
||||||
STZ.w LinkZap
|
STZ.w LinkZap
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
protectff:
|
protectff:
|
||||||
@@ -43,7 +43,7 @@ protectff:
|
|||||||
BMI .special_overworld
|
BMI .special_overworld
|
||||||
|
|
||||||
AND.b #$3F
|
AND.b #$3F
|
||||||
CMP.l $02A4E3,X
|
CMP.l $82A4E3,X
|
||||||
BEQ ++
|
BEQ ++
|
||||||
|
|
||||||
.protect
|
.protect
|
||||||
|
|||||||
@@ -5,9 +5,6 @@ SpawnHauntedGroveItem:
|
|||||||
LDA.b OverworldIndex : CMP.b #$2A : BEQ + : RTL : + ; Skip if not the haunted grove
|
LDA.b OverworldIndex : CMP.b #$2A : BEQ + : RTL : + ; Skip if not the haunted grove
|
||||||
LDA.b IndoorsFlag : BEQ + : RTL : + ; Skip if indoors
|
LDA.b IndoorsFlag : BEQ + : RTL : + ; Skip if indoors
|
||||||
|
|
||||||
%GetPossiblyEncryptedItem(HauntedGroveItem, HeartPieceOutdoorValues)
|
|
||||||
JSL.l PrepDynamicTile
|
|
||||||
|
|
||||||
LDA.b #$EB
|
LDA.b #$EB
|
||||||
STA.l MiniGameTime
|
STA.l MiniGameTime
|
||||||
JSL Sprite_SpawnDynamically
|
JSL Sprite_SpawnDynamically
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
; Frame Hook
|
; Frame Hook
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FrameHookAction:
|
FrameHookAction:
|
||||||
JSL $0080B5 ; Module_MainRouting
|
JSL $8080B5 ; Module_MainRouting
|
||||||
JSL CheckMusicLoadRequest
|
JSL CheckMusicLoadRequest
|
||||||
PHP : REP #$30 : PHA
|
PHP : REP #$30 : PHA
|
||||||
SEP #$20
|
SEP #$20
|
||||||
@@ -35,7 +35,31 @@ PostNMIHookAction:
|
|||||||
.return
|
.return
|
||||||
STZ.w NMIAux ; zero bank byte of NMI hook pointer
|
STZ.w NMIAux ; zero bank byte of NMI hook pointer
|
||||||
+
|
+
|
||||||
|
JSR.w TransferItemGFX
|
||||||
LDA.b INIDISPQ : STA.w INIDISP ; thing we wrote over, turn screen back on
|
LDA.b INIDISPQ : STA.w INIDISP ; thing we wrote over, turn screen back on
|
||||||
|
|
||||||
JML.l PostNMIHookReturn
|
JML.l PostNMIHookReturn
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
TransferItemGFX:
|
||||||
|
; Only used for shops now but could be used for anything. We should look at how door rando does this
|
||||||
|
; and try to unify one approach.
|
||||||
|
REP #$30
|
||||||
|
LDX.w ItemStackPtr : BEQ .done
|
||||||
|
TXA : BIT #$0040 : BNE .fail ; Crash if we have more than 16 queued (should never happen.)
|
||||||
|
DEX #2
|
||||||
|
-
|
||||||
|
LDA.l ItemGFXStack,X : STA.w ItemGFXPtr
|
||||||
|
LDA.l ItemTargetStack,X : STA.w ItemGFXTarget
|
||||||
|
PHX
|
||||||
|
JSL.l TransferItemToVRAM
|
||||||
|
REP #$10
|
||||||
|
PLX
|
||||||
|
DEX #2
|
||||||
|
BPL -
|
||||||
|
|
||||||
|
STZ.w ItemStackPtr
|
||||||
|
.done
|
||||||
|
SEP #$30
|
||||||
|
RTS
|
||||||
|
.fail
|
||||||
|
BRK #$00
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ GetAgahnimLightning:
|
|||||||
;1 = Forbid
|
;1 = Forbid
|
||||||
AllowJoypadInput:
|
AllowJoypadInput:
|
||||||
LDA.l PermitSQFromBosses : BEQ .fullCheck
|
LDA.l PermitSQFromBosses : BEQ .fullCheck
|
||||||
LDA.w ItemsTaken : AND.b #$80 : BEQ .fullCheck
|
LDA.w RoomItemsTaken : AND.b #$80 : BEQ .fullCheck
|
||||||
LDA.w MedallionFlag : ORA.w CutsceneFlag ; we have heart container, do short check
|
LDA.w MedallionFlag : ORA.w CutsceneFlag ; we have heart container, do short check
|
||||||
RTL
|
RTL
|
||||||
.fullCheck
|
.fullCheck
|
||||||
|
|||||||
126
goalitem.asm
126
goalitem.asm
@@ -15,7 +15,7 @@ RTL
|
|||||||
;Carry set = ganon vulnerable
|
;Carry set = ganon vulnerable
|
||||||
CheckGanonVulnerability:
|
CheckGanonVulnerability:
|
||||||
PHX
|
PHX
|
||||||
LDA.l InvincibleGanon
|
LDA.l GanonVulnerableMode
|
||||||
ASL
|
ASL
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
@@ -39,6 +39,8 @@ CheckGanonVulnerability:
|
|||||||
dw .crystals_and_bosses
|
dw .crystals_and_bosses
|
||||||
dw .bosses_only
|
dw .bosses_only
|
||||||
dw .all_dungeons_no_agahnim
|
dw .all_dungeons_no_agahnim
|
||||||
|
dw .all_items
|
||||||
|
dw .completionist
|
||||||
|
|
||||||
; 00 = always vulnerable
|
; 00 = always vulnerable
|
||||||
.vulnerable
|
.vulnerable
|
||||||
@@ -92,80 +94,114 @@ CheckGanonVulnerability:
|
|||||||
.bosses_only
|
.bosses_only
|
||||||
JMP CheckForCrystalBossesDefeated
|
JMP CheckForCrystalBossesDefeated
|
||||||
|
|
||||||
|
; 09 = 100% item collection rate
|
||||||
|
.all_items
|
||||||
|
REP #$20
|
||||||
|
LDA.l TotalItemCounter : CMP.l TotalItemCount
|
||||||
|
SEP #$20
|
||||||
|
RTS
|
||||||
|
|
||||||
|
; 0A = 100% item collection rate and all dungeons
|
||||||
|
.completionist
|
||||||
|
REP #$20
|
||||||
|
LDA.l TotalItemCounter : CMP.l TotalItemCount
|
||||||
|
SEP #$20
|
||||||
|
BCC .fail
|
||||||
|
BRA .all_dungeons
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GetRequiredCrystalsForTower:
|
GetRequiredCrystalsForTower:
|
||||||
BEQ + : JSL.l BreakTowerSeal_ExecuteSparkles : + ; thing we wrote over
|
BEQ + : JSL.l BreakTowerSeal_ExecuteSparkles : + ; thing we wrote over
|
||||||
LDA.l NumberOfCrystalsRequiredForTower : CMP.b #$00 : BNE + : JML.l Ancilla_BreakTowerSeal_stop_spawning_sparkles : +
|
LDA.l GanonsTowerOpenTarget : CMP.b #$00 : BNE + : JML.l Ancilla_BreakTowerSeal_stop_spawning_sparkles : +
|
||||||
LDA.l NumberOfCrystalsRequiredForTower : CMP.b #$01 : BNE + : JML.l Ancilla_BreakTowerSeal_draw_single_crystal : +
|
LDA.l GanonsTowerOpenTarget : CMP.b #$01 : BNE + : JML.l Ancilla_BreakTowerSeal_draw_single_crystal : +
|
||||||
LDA.l NumberOfCrystalsRequiredForTower : DEC #2 : TAX
|
LDA.l GanonsTowerOpenTarget : DEC #2 : TAX
|
||||||
JML.l GetRequiredCrystalsForTower_continue
|
JML.l GetRequiredCrystalsForTower_continue
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GetRequiredCrystalsInX:
|
GetRequiredCrystalsInX:
|
||||||
LDA.l NumberOfCrystalsRequiredForTower : CMP.b #$00 : BNE +
|
LDA.l GanonsTowerOpenTarget : CMP.b #$00 : BNE +
|
||||||
TAX
|
TAX
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
|
|
||||||
TXA
|
TXA
|
||||||
|
|
||||||
- CMP.l NumberOfCrystalsRequiredForTower : BCC +
|
- CMP.l GanonsTowerOpenTarget : BCC +
|
||||||
SBC.l NumberOfCrystalsRequiredForTower ; carry guaranteed set
|
SBC.l GanonsTowerOpenTarget ; carry guaranteed set
|
||||||
BRA -
|
BRA -
|
||||||
|
|
||||||
+ INC : CMP.l NumberOfCrystalsRequiredForTower : BNE +
|
+ INC : CMP.l GanonsTowerOpenTarget : BNE +
|
||||||
LDA.b #$08
|
LDA.b #$08
|
||||||
+ : DEC : TAX
|
+ : DEC : TAX
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CheckEnoughCrystalsForGanon:
|
CheckEnoughCrystalsForGanon:
|
||||||
|
REP #$20
|
||||||
LDA.l CrystalCounter
|
LDA.l CrystalCounter
|
||||||
CMP.l NumberOfCrystalsRequiredForGanon
|
CMP.l GanonVulnerableTarget
|
||||||
|
SEP #$20
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CheckEnoughCrystalsForTower:
|
CheckTowerOpen:
|
||||||
LDA.l CrystalCounter
|
LDA.l GanonsTowerOpenMode : ASL : TAX
|
||||||
CMP.l NumberOfCrystalsRequiredForTower
|
JSR.w (.tower_open_modes,X)
|
||||||
RTL
|
RTL
|
||||||
|
.tower_open_modes
|
||||||
|
dw .vanilla
|
||||||
|
dw .arbitrary_cmp
|
||||||
|
|
||||||
|
.vanilla
|
||||||
|
LDA.l CrystalsField
|
||||||
|
AND.b #$7F : CMP.b #$7F
|
||||||
|
RTS
|
||||||
|
|
||||||
|
.arbitrary_cmp
|
||||||
|
REP #$30
|
||||||
|
LDA.l GanonsTowerOpenAddress : TAX
|
||||||
|
LDA.l $7E0000,X
|
||||||
|
CMP.l GanonsTowerOpenTarget
|
||||||
|
SEP #$30
|
||||||
|
RTS
|
||||||
|
|
||||||
;---------------------------------------------------------------------------------------------------
|
;---------------------------------------------------------------------------------------------------
|
||||||
CheckAgaForPed:
|
CheckAgaForPed:
|
||||||
LDA.l InvincibleGanon
|
REP #$20
|
||||||
CMP.b #$06 : BNE .vanilla
|
LDA.l GanonVulnerableMode
|
||||||
|
CMP.w #$0006 : BNE .vanilla
|
||||||
|
|
||||||
.light_speed
|
.light_speed
|
||||||
LDA.l OverworldEventDataWRAM+$80 ; check ped flag
|
SEP #$20
|
||||||
AND.b #$40
|
LDA.l OverworldEventDataWRAM+$80 ; check ped flag
|
||||||
BEQ .force_blue_ball
|
AND.b #$40
|
||||||
|
BEQ .force_blue_ball
|
||||||
|
|
||||||
.vanilla ; run vanilla check for phase
|
.vanilla ; run vanilla check for phase
|
||||||
LDA.w SpriteAux, X
|
SEP #$20
|
||||||
CMP.b #$02
|
LDA.w SpriteAux, X
|
||||||
RTL
|
CMP.b #$02
|
||||||
|
RTL
|
||||||
|
|
||||||
.force_blue_ball
|
.force_blue_ball
|
||||||
LDA.b #$01 : STA.w SpriteAuxTable, Y
|
LDA.b #$01 : STA.w SpriteAuxTable, Y
|
||||||
LDA.b #$20 : STA.w SpriteTimer, Y
|
LDA.b #$20 : STA.w SpriteTimer, Y
|
||||||
CLC ; skip the RNG check
|
CLC ; skip the RNG check
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;---------------------------------------------------------------------------------------------------
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
KillGanon:
|
KillGanon:
|
||||||
STA.l ProgressIndicator ; vanilla game state stuff we overwrote
|
STA.l ProgressIndicator ; vanilla game state stuff we overwrote
|
||||||
|
|
||||||
LDA.l InvincibleGanon
|
LDA.l GanonVulnerableMode
|
||||||
CMP.b #$06 : BNE .exit
|
CMP.b #$06 : BNE .exit
|
||||||
|
|
||||||
.light_speed
|
.light_speed
|
||||||
LDA.l OverworldEventDataWRAM+$5B : ORA.b #$20 : STA.l OverworldEventDataWRAM+$5B ; pyramid hole
|
REP #$20
|
||||||
LDA.b #$08 : STA.l RoomDataWRAM[$00].high ; kill ganon
|
LDA.w #$0019 : STA.b GameMode
|
||||||
LDA.b #$02 : STA.l MoonPearlEquipment ; pearl but invisible in menu
|
SEP #$20
|
||||||
|
|
||||||
.exit
|
.exit
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;---------------------------------------------------------------------------------------------------
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
CheckForCrystalBossesDefeated:
|
CheckForCrystalBossesDefeated:
|
||||||
PHB : PHX : PHY
|
PHB : PHX : PHY
|
||||||
|
|
||||||
@@ -203,8 +239,36 @@ CheckForCrystalBossesDefeated:
|
|||||||
SEP #$30
|
SEP #$30
|
||||||
PLY : PLX : PLB
|
PLY : PLX : PLB
|
||||||
|
|
||||||
LDA.b Scrap00 : CMP.l NumberOfCrystalsRequiredForGanon
|
LDA.b Scrap00 : CMP.l GanonVulnerableTarget
|
||||||
|
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
CheckPedestalPull:
|
||||||
|
; Out: c - Successful ped pull if set, do nothing if unset.
|
||||||
|
PHX
|
||||||
|
LDA.l PedCheckMode : ASL : TAX
|
||||||
|
JSR.w (.pedestal_modes,X)
|
||||||
|
PLX
|
||||||
|
RTL
|
||||||
|
|
||||||
|
.pedestal_modes
|
||||||
|
dw .vanilla
|
||||||
|
dw .arbitrary_cmp
|
||||||
|
|
||||||
|
.vanilla
|
||||||
|
LDA.l PendantsField
|
||||||
|
AND.b #$07 : CMP.b #$07 : BNE ..nopull
|
||||||
|
SEC
|
||||||
|
RTS
|
||||||
|
..nopull
|
||||||
|
CLC
|
||||||
|
RTS
|
||||||
|
|
||||||
|
.arbitrary_cmp
|
||||||
|
REP #$30
|
||||||
|
LDA.l PedPullAddress : TAX
|
||||||
|
LDA.l $7E0000,X
|
||||||
|
CMP.l PedPullTarget
|
||||||
|
SEP #$30
|
||||||
|
RTS
|
||||||
|
|||||||
112
hashalphabet.asm
112
hashalphabet.asm
@@ -69,110 +69,88 @@ RTL
|
|||||||
; DMAAlphabetTilemap:
|
; DMAAlphabetTilemap:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DMAAlphabetTilemap:
|
DMAAlphabetTilemap:
|
||||||
PHA : PHX
|
PHA : PHX
|
||||||
LDA.w DMAP0 : PHA ; preserve DMA parameters
|
REP #$10
|
||||||
LDA.w BBAD0 : PHA ; preserve DMA parameters
|
LDA.b #$01 : STA.w DMAP0
|
||||||
LDA.w A1T0L : PHA ; preserve DMA parameters
|
LDA.b #$80 : STA.w VMAIN
|
||||||
LDA.w A1T0H : PHA ; preserve DMA parameters
|
LDA.b #$18 : STA.w BBAD0
|
||||||
LDA.w A1B0 : PHA ; preserve DMA parameters
|
LDX.w #$6060 : STX.w VMADDL
|
||||||
LDA.w DAS0L : PHA ; preserve DMA parameters
|
LDA.b #BigRAM>>16 : STA.w A1B0
|
||||||
LDA.w DAS0H : PHA ; preserve DMA parameters
|
LDX.w #BigRAM : STX.w A1T0L
|
||||||
;--------------------------------------------------------------------------------
|
LDX.w #$0080 : STX.w DAS0L
|
||||||
LDA.b #$01 : STA.w DMAP0 ; set DMA transfer direction A -> B, bus A auto increment, double-byte mode
|
LDA.b #$01 : STA.w MDMAEN
|
||||||
LDA.b #$80 : STA.w VMAIN ; write read increment on $2119
|
SEP #$10
|
||||||
LDA.b #$18 : STA.w BBAD0 ; set bus B destination to VRAM register
|
PLX : PLA
|
||||||
|
|
||||||
LDA.b #$60 : STA.w VMADDL ; write VRAM destination address
|
|
||||||
STA.w VMADDH ; write VRAM destination address
|
|
||||||
|
|
||||||
LDA.b #BigRAM : STA.w A1T0L ; set bus A source address to WRAM
|
|
||||||
LDA.b #BigRAM>>8 : STA.w A1T0H ; set bus A source address to WRAM
|
|
||||||
LDA.b #BigRAM>>16 : STA.w A1B0 ; set bus A source bank
|
|
||||||
|
|
||||||
LDA.b #$80 : STA.w DAS0L : STZ.w DAS0H ; set transfer size to 0x40
|
|
||||||
|
|
||||||
LDA.w INIDISP : PHA : LDA.b #$80 : STA.w INIDISP ; save screen state & turn screen off
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
PLA : STA.w INIDISP ; put screen back however it was before
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
PLA : STA.w DAS0H ; restore DMA parameters
|
|
||||||
PLA : STA.w DAS0L ; restore DMA parameters
|
|
||||||
PLA : STA.w A1B0 ; restore DMA parameters
|
|
||||||
PLA : STA.w A1T0H ; restore DMA parameters
|
|
||||||
PLA : STA.w A1T0L ; restore DMA parameters
|
|
||||||
PLA : STA.w BBAD0 ; restore DMA parameters
|
|
||||||
PLA : STA.w DMAP0 ; restore DMA parameters
|
|
||||||
PLX : PLA
|
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
HashAlphabetTilesWithBlank:
|
HashAlphabetTilesWithBlank:
|
||||||
;BLANK
|
;BLANK
|
||||||
dw #$0186|!FS_COLOR_BW, #$0186|!FS_COLOR_BW, #$0196|!FS_COLOR_BW, #$0196|!FS_COLOR_BW
|
dw #$0188, #$0188, #$0188, #$0188
|
||||||
HashAlphabetTiles:
|
HashAlphabetTiles:
|
||||||
;BOW
|
;BOW
|
||||||
dw #$0201|!FS_COLOR_YELLOW, #$0202|!FS_COLOR_YELLOW, #$0211|!FS_COLOR_YELLOW, #$0212|!FS_COLOR_YELLOW
|
dw #$0241|!FS_COLOR_YELLOW, #$0242|!FS_COLOR_YELLOW, #$0251|!FS_COLOR_YELLOW, #$0252|!FS_COLOR_YELLOW
|
||||||
;BOOM
|
;BOOM
|
||||||
dw #$0205|!FS_COLOR_BLUE, #$0206|!FS_COLOR_BLUE, #$0200|!FS_COLOR_BW, #$0216|!FS_COLOR_BLUE
|
dw #$0245|!FS_COLOR_BLUE, #$0246|!FS_COLOR_BLUE, #$0240|!FS_COLOR_BW, #$0256|!FS_COLOR_BLUE
|
||||||
;HOOK
|
;HOOK
|
||||||
dw #$0200|!FS_COLOR_RED, #$0215|!FS_COLOR_RED, #$0230|!FS_COLOR_RED, #$0200|!FS_COLOR_BW
|
dw #$0240|!FS_COLOR_RED, #$0255|!FS_COLOR_RED, #$0270|!FS_COLOR_RED, #$0240|!FS_COLOR_BW
|
||||||
;BOMB
|
;BOMB
|
||||||
dw #$020C|!FS_COLOR_BLUE, #$020D|!FS_COLOR_BLUE, #$021C|!FS_COLOR_BLUE, #$021C|!FS_COLOR_BLUE|!FS_HFLIP
|
dw #$024C|!FS_COLOR_BLUE, #$024D|!FS_COLOR_BLUE, #$025C|!FS_COLOR_BLUE, #$025C|!FS_COLOR_BLUE|!FS_HFLIP
|
||||||
;SHROOM
|
;SHROOM
|
||||||
dw #$0262|!FS_COLOR_RED, #$0263|!FS_COLOR_RED, #$0272|!FS_COLOR_RED, #$0273|!FS_COLOR_RED
|
dw #$02A2|!FS_COLOR_RED, #$02A3|!FS_COLOR_RED, #$02B2|!FS_COLOR_RED, #$02B3|!FS_COLOR_RED
|
||||||
;POWDER
|
;POWDER
|
||||||
dw #$020A|!FS_COLOR_BROWN, #$020B|!FS_COLOR_BROWN, #$021A|!FS_COLOR_BROWN, #$021B|!FS_COLOR_BROWN
|
dw #$024A|!FS_COLOR_BROWN, #$024B|!FS_COLOR_BROWN, #$025A|!FS_COLOR_BROWN, #$025B|!FS_COLOR_BROWN
|
||||||
;ROD
|
;ROD
|
||||||
dw #$0220|!FS_COLOR_BLUE, #$0221|!FS_COLOR_BLUE, #$0230|!FS_COLOR_BLUE, #$0231|!FS_COLOR_BLUE
|
dw #$0260|!FS_COLOR_BLUE, #$0261|!FS_COLOR_BLUE, #$0270|!FS_COLOR_BLUE, #$0271|!FS_COLOR_BLUE
|
||||||
;PENDANT
|
;PENDANT
|
||||||
dw #$0285|!FS_COLOR_GREEN, #$0286|!FS_COLOR_GREEN, #$0295|!FS_COLOR_GREEN, #$0296|!FS_COLOR_GREEN
|
dw #$02C5|!FS_COLOR_GREEN, #$02C6|!FS_COLOR_GREEN, #$02D5|!FS_COLOR_GREEN, #$02D6|!FS_COLOR_GREEN
|
||||||
;BOMBOS
|
;BOMBOS
|
||||||
dw #$0207|!FS_COLOR_YELLOW, #$0217|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP, #$0217|!FS_COLOR_YELLOW, #$0207|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP
|
dw #$0247|!FS_COLOR_YELLOW, #$0257|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP, #$0257|!FS_COLOR_YELLOW, #$0247|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP
|
||||||
;ETHER
|
;ETHER
|
||||||
dw #$0208|!FS_COLOR_YELLOW, #$0218|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP, #$0218|!FS_COLOR_YELLOW, #$0208|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP
|
dw #$0248|!FS_COLOR_YELLOW, #$0258|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP, #$0258|!FS_COLOR_YELLOW, #$0248|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP
|
||||||
;QUAKE
|
;QUAKE
|
||||||
dw #$0209|!FS_COLOR_YELLOW, #$0219|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP, #$0219|!FS_COLOR_YELLOW, #$0209|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP
|
dw #$0249|!FS_COLOR_YELLOW, #$0259|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP, #$0259|!FS_COLOR_YELLOW, #$0249|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP
|
||||||
;LAMP
|
;LAMP
|
||||||
dw #$022C|!FS_COLOR_RED, #$022C|!FS_COLOR_RED|!FS_HFLIP, #$023C|!FS_COLOR_RED, #$023D|!FS_COLOR_RED
|
dw #$026C|!FS_COLOR_RED, #$026C|!FS_COLOR_RED|!FS_HFLIP, #$027C|!FS_COLOR_RED, #$027D|!FS_COLOR_RED
|
||||||
;HAMMER
|
;HAMMER
|
||||||
dw #$0222|!FS_COLOR_BROWN, #$0223|!FS_COLOR_BROWN, #$0232|!FS_COLOR_BROWN, #$0233|!FS_COLOR_BROWN
|
dw #$0262|!FS_COLOR_BROWN, #$0263|!FS_COLOR_BROWN, #$0272|!FS_COLOR_BROWN, #$0273|!FS_COLOR_BROWN
|
||||||
;SHOVEL
|
;SHOVEL
|
||||||
dw #$0224|!FS_COLOR_BROWN, #$0225|!FS_COLOR_BROWN, #$0234|!FS_COLOR_BROWN, #$0235|!FS_COLOR_BROWN
|
dw #$0264|!FS_COLOR_BROWN, #$0265|!FS_COLOR_BROWN, #$0274|!FS_COLOR_BROWN, #$0275|!FS_COLOR_BROWN
|
||||||
;FLUTE
|
;FLUTE
|
||||||
dw #$0226|!FS_COLOR_BLUE, #$0227|!FS_COLOR_BLUE, #$0236|!FS_COLOR_BLUE, #$0237|!FS_COLOR_BLUE
|
dw #$0266|!FS_COLOR_BLUE, #$0267|!FS_COLOR_BLUE, #$0276|!FS_COLOR_BLUE, #$0277|!FS_COLOR_BLUE
|
||||||
;NET
|
;NET
|
||||||
dw #$0228|!FS_COLOR_YELLOW, #$0229|!FS_COLOR_YELLOW, #$0238|!FS_COLOR_YELLOW, #$0239|!FS_COLOR_YELLOW
|
dw #$0268|!FS_COLOR_YELLOW, #$0269|!FS_COLOR_YELLOW, #$0278|!FS_COLOR_YELLOW, #$0279|!FS_COLOR_YELLOW
|
||||||
;BOOK
|
;BOOK
|
||||||
dw #$022A|!FS_COLOR_GREEN, #$022B|!FS_COLOR_GREEN, #$023A|!FS_COLOR_GREEN, #$023B|!FS_COLOR_GREEN
|
dw #$026A|!FS_COLOR_GREEN, #$026B|!FS_COLOR_GREEN, #$027A|!FS_COLOR_GREEN, #$027B|!FS_COLOR_GREEN
|
||||||
;BOTTLE
|
;BOTTLE
|
||||||
dw #$0240|!FS_COLOR_BW, #$0241|!FS_COLOR_BW, #$0250|!FS_COLOR_BW, #$0251|!FS_COLOR_BW
|
dw #$0280|!FS_COLOR_BW, #$0281|!FS_COLOR_BW, #$0290|!FS_COLOR_BW, #$0291|!FS_COLOR_BW
|
||||||
;POTION
|
;POTION
|
||||||
dw #$0242|!FS_COLOR_GREEN, #$0242|!FS_COLOR_GREEN|!FS_HFLIP, #$0252|!FS_COLOR_GREEN, #$0253|!FS_COLOR_GREEN
|
dw #$0282|!FS_COLOR_GREEN, #$0282|!FS_COLOR_GREEN|!FS_HFLIP, #$0292|!FS_COLOR_GREEN, #$0293|!FS_COLOR_GREEN
|
||||||
;CANE
|
;CANE
|
||||||
dw #$021D|!FS_COLOR_RED, #$021E|!FS_COLOR_RED, #$022D|!FS_COLOR_RED, #$022E|!FS_COLOR_RED
|
dw #$025D|!FS_COLOR_RED, #$025E|!FS_COLOR_RED, #$026D|!FS_COLOR_RED, #$026E|!FS_COLOR_RED
|
||||||
;CAPE
|
;CAPE
|
||||||
dw #$0248|!FS_COLOR_RED, #$0249|!FS_COLOR_RED, #$0258|!FS_COLOR_RED, #$0259|!FS_COLOR_RED
|
dw #$0288|!FS_COLOR_RED, #$0289|!FS_COLOR_RED, #$0298|!FS_COLOR_RED, #$0299|!FS_COLOR_RED
|
||||||
;MIRROR
|
;MIRROR
|
||||||
dw #$024A|!FS_COLOR_BLUE, #$024B|!FS_COLOR_BLUE, #$025A|!FS_COLOR_BLUE, #$025B|!FS_COLOR_BLUE
|
dw #$028A|!FS_COLOR_BLUE, #$028B|!FS_COLOR_BLUE, #$029A|!FS_COLOR_BLUE, #$029B|!FS_COLOR_BLUE
|
||||||
;BOOTS
|
;BOOTS
|
||||||
dw #$024C|!FS_COLOR_BOOTS, #$024D|!FS_COLOR_BOOTS, #$025C|!FS_COLOR_BOOTS, #$025D|!FS_COLOR_BOOTS
|
dw #$028C|!FS_COLOR_BOOTS, #$028D|!FS_COLOR_BOOTS, #$029C|!FS_COLOR_BOOTS, #$029D|!FS_COLOR_BOOTS
|
||||||
;GLOVES
|
;GLOVES
|
||||||
dw #$024E|!FS_COLOR_BROWN, #$024F|!FS_COLOR_BROWN, #$025E|!FS_COLOR_BROWN, #$025F|!FS_COLOR_BROWN
|
dw #$028E|!FS_COLOR_BROWN, #$028F|!FS_COLOR_BROWN, #$029E|!FS_COLOR_BROWN, #$029F|!FS_COLOR_BROWN
|
||||||
;FLIPPERS
|
;FLIPPERS
|
||||||
dw #$020E|!FS_COLOR_BLUE, #$020F|!FS_COLOR_BLUE, #$021F|!FS_COLOR_BLUE|!FS_HFLIP, #$021F|!FS_COLOR_BLUE
|
dw #$024E|!FS_COLOR_BLUE, #$024F|!FS_COLOR_BLUE, #$025F|!FS_COLOR_BLUE|!FS_HFLIP, #$025F|!FS_COLOR_BLUE
|
||||||
;PEARL
|
;PEARL
|
||||||
dw #$0264|!FS_COLOR_RED, #$0265|!FS_COLOR_RED, #$0274|!FS_COLOR_RED, #$0275|!FS_COLOR_RED
|
dw #$02A4|!FS_COLOR_RED, #$02A5|!FS_COLOR_RED, #$02B4|!FS_COLOR_RED, #$02B5|!FS_COLOR_RED
|
||||||
;SHIELD
|
;SHIELD
|
||||||
dw #$026D|!FS_COLOR_YELLOW, #$026E|!FS_COLOR_YELLOW, #$027D|!FS_COLOR_YELLOW, #$027E|!FS_COLOR_YELLOW
|
dw #$02AD|!FS_COLOR_YELLOW, #$02AE|!FS_COLOR_YELLOW, #$02BD|!FS_COLOR_YELLOW, #$02BE|!FS_COLOR_YELLOW
|
||||||
;TUNIC
|
;TUNIC
|
||||||
dw #$026F|!FS_COLOR_GREEN, #$026F|!FS_COLOR_GREEN|!FS_HFLIP, #$027F|!FS_COLOR_GREEN, #$027F|!FS_COLOR_GREEN|!FS_HFLIP
|
dw #$02AF|!FS_COLOR_GREEN, #$02AF|!FS_COLOR_GREEN|!FS_HFLIP, #$02BF|!FS_COLOR_GREEN, #$02BF|!FS_COLOR_GREEN|!FS_HFLIP
|
||||||
;HEART
|
;HEART
|
||||||
dw #$0281|!FS_COLOR_RED, #$0281|!FS_COLOR_RED|!FS_HFLIP, #$0291|!FS_COLOR_RED, #$0291|!FS_COLOR_RED|!FS_HFLIP
|
dw #$02C1|!FS_COLOR_RED, #$02C1|!FS_COLOR_RED|!FS_HFLIP, #$02D1|!FS_COLOR_RED, #$02D1|!FS_COLOR_RED|!FS_HFLIP
|
||||||
;MAP
|
;MAP
|
||||||
dw #$0282|!FS_COLOR_YELLOW, #$0283|!FS_COLOR_YELLOW, #$0292|!FS_COLOR_YELLOW, #$0293|!FS_COLOR_YELLOW
|
dw #$02C2|!FS_COLOR_YELLOW, #$02C3|!FS_COLOR_YELLOW, #$02D2|!FS_COLOR_YELLOW, #$02D3|!FS_COLOR_YELLOW
|
||||||
;COMPASS
|
;COMPASS
|
||||||
dw #$0284|!FS_COLOR_RED, #$0284|!FS_COLOR_RED|!FS_HFLIP, #$0294|!FS_COLOR_RED, #$0294|!FS_COLOR_RED|!FS_HFLIP
|
dw #$02C4|!FS_COLOR_RED, #$02C4|!FS_COLOR_RED|!FS_HFLIP, #$02D4|!FS_COLOR_RED, #$02D4|!FS_COLOR_RED|!FS_HFLIP
|
||||||
;KEY
|
;KEY
|
||||||
dw #$022F|!FS_COLOR_YELLOW|!FS_HFLIP, #$022F|!FS_COLOR_YELLOW, #$023E|!FS_COLOR_YELLOW, #$023F|!FS_COLOR_YELLOW
|
dw #$026F|!FS_COLOR_YELLOW|!FS_HFLIP, #$026F|!FS_COLOR_YELLOW, #$027E|!FS_COLOR_YELLOW, #$027F|!FS_COLOR_YELLOW
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FileSelect_PlayerSelectText_Top:
|
FileSelect_PlayerSelectText_Top:
|
||||||
;db $60, $62, $00, $37
|
;db $60, $62, $00, $37
|
||||||
|
|||||||
@@ -55,76 +55,76 @@
|
|||||||
!FSTILE_Y_TOP = $1D82
|
!FSTILE_Y_TOP = $1D82
|
||||||
!FSTILE_Y_BOTTOM = $1D92
|
!FSTILE_Y_BOTTOM = $1D92
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $0CDE60 ; <- 65E60
|
org $8CDE60 ; <- 65E60
|
||||||
FileSelect_CopyFile_Top:
|
FileSelect_CopyFile_Top:
|
||||||
db $62, $A5, $00, $15
|
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
|
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:
|
FileSelect_CopyFile_Bottom:
|
||||||
db $62, $C5, $00, $15
|
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
|
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:
|
FileSelect_KillFile_Top:
|
||||||
db $63, $25, $00, $19
|
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
|
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:
|
FileSelect_KillFile_Bottom:
|
||||||
db $63, $45, $00, $19
|
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
|
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:
|
;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
|
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
|
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:
|
;CopyFile_Which:
|
||||||
org $0CE2DB ; <- 662DB
|
org $8CE2DB ; <- 662DB
|
||||||
dw $0D80, $0D61, $0D62, $0D4C, $0D61, $0D86, !FSTILE_SPACE
|
dw $0D80, $0D61, $0D62, $0D4C, $0D61, $0D86, !FSTILE_SPACE
|
||||||
org $0CE2ED ; <- 662ED
|
org $8CE2ED ; <- 662ED
|
||||||
dw $0D90, $0D71, $0D72, $0D5C, $0D71, $0D96, !FSTILE_SPACE
|
dw $0D90, $0D71, $0D72, $0D5C, $0D71, $0D96, !FSTILE_SPACE
|
||||||
|
|
||||||
;CopyFile_Where:
|
;CopyFile_Where:
|
||||||
org $0CE39C ; <- 6639C
|
org $8CE39C ; <- 6639C
|
||||||
dw $0D80, $0D61, $0D4E, $0D6B, $0D4E, $0D86, !FSTILE_SPACE
|
dw $0D80, $0D61, $0D4E, $0D6B, $0D4E, $0D86, !FSTILE_SPACE
|
||||||
org $0CE3AE ; <- 663AE
|
org $8CE3AE ; <- 663AE
|
||||||
dw $0D90, $0D71, $0D5E, $0D7B, $0D5E, $0D96, !FSTILE_SPACE
|
dw $0D90, $0D71, $0D5E, $0D7B, $0D5E, $0D96, !FSTILE_SPACE
|
||||||
|
|
||||||
;CopyFile_Execute:
|
;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
|
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
|
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:
|
;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
|
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
|
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:
|
;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
|
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
|
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:
|
;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
|
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
|
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:
|
;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
|
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
|
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:
|
;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
|
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
|
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
|
||||||
|
|||||||
169
heartpieces.asm
169
heartpieces.asm
@@ -3,31 +3,18 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
HeartPieceGet:
|
HeartPieceGet:
|
||||||
PHX : PHY
|
PHX : PHY
|
||||||
LDY.w SpriteItemType, X ; load item value into Y register
|
JSL.l LoadHeartPieceRoomValue
|
||||||
BNE +
|
JSL.l AttemptItemSubstitution
|
||||||
; if for any reason the item value is 0 reload it, just in case
|
JSL.l ResolveLootIDLong
|
||||||
JSL.l LoadHeartPieceRoomValue : TAY
|
TAY
|
||||||
+
|
|
||||||
JSL.l MaybeMarkDigSpotCollected
|
JSL.l MaybeMarkDigSpotCollected
|
||||||
|
|
||||||
.skipLoad
|
.skipLoad
|
||||||
|
CPY.b #$26 : BNE .not_heart ; don't add a 1/4 heart if it's not a heart piece
|
||||||
|
LDA.l HeartPieceQuarter : INC A : AND.b #$03 : STA.l HeartPieceQuarter
|
||||||
|
.not_heart
|
||||||
|
JSL.l $8791B3 ; Player_HaltDashAttackLong
|
||||||
STZ.w ItemReceiptMethod ; 0 = Receiving item from an NPC or message
|
STZ.w ItemReceiptMethod ; 0 = Receiving item from an NPC or message
|
||||||
|
|
||||||
CPY.b #$26 : BNE .notHeart ; don't add a 1/4 heart if it's not a heart piece
|
|
||||||
LDA.l HeartPieceQuarter : INC A : AND.b #$03 : STA.l HeartPieceQuarter : BNE .unfinished_heart ; add up heart quarters
|
|
||||||
BRA .giveItem
|
|
||||||
|
|
||||||
.notHeart
|
|
||||||
.giveItem
|
|
||||||
JSL.l $0791B3 ; Player_HaltDashAttackLong
|
|
||||||
JSL.l Link_ReceiveItem
|
JSL.l Link_ReceiveItem
|
||||||
CLC ; return false
|
|
||||||
JMP .done ; finished
|
|
||||||
|
|
||||||
.unfinished_heart
|
|
||||||
SEC ; return true
|
|
||||||
.done
|
|
||||||
JSL MaybeUnlockTabletAnimation
|
JSL MaybeUnlockTabletAnimation
|
||||||
|
|
||||||
PLY : PLX
|
PLY : PLX
|
||||||
@@ -35,42 +22,43 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
HeartContainerGet:
|
HeartContainerGet:
|
||||||
PHX : PHY
|
PHX : PHY
|
||||||
JSL.l AddInventory_incrementBossSwordLong
|
JSL.l IncrementBossSword
|
||||||
LDY.w SpriteItemType, X ; load item value into Y register
|
LDY.w SpriteID, X : BNE +
|
||||||
BNE +
|
|
||||||
; if for any reason the item value is 0 reload it, just in case
|
|
||||||
JSL.l LoadHeartContainerRoomValue : TAY
|
JSL.l LoadHeartContainerRoomValue : TAY
|
||||||
+
|
+
|
||||||
|
|
||||||
BRA HeartPieceGet_skipLoad
|
BRA HeartPieceGet_skipLoad
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawHeartPieceGFX:
|
DrawHeartPieceGFX:
|
||||||
PHP
|
PHP
|
||||||
JSL.l Sprite_IsOnscreen : BCC .offscreen
|
JSL.l Sprite_IsOnscreen : BCC .offscreen
|
||||||
|
PHA : PHY
|
||||||
PHA : PHY
|
LDA.l RedrawFlag : BEQ .skipInit ; skip init if already ready
|
||||||
LDA.l RedrawFlag : BEQ .skipInit ; skip init if already ready
|
JSL.l HeartPieceSpritePrep
|
||||||
JSL.l HeartPieceSpritePrep
|
JMP .done ; don't draw on the init frame
|
||||||
JMP .done ; don't draw on the init frame
|
.skipInit
|
||||||
|
LDA.w SpriteID, X ; Retrieve stored item type
|
||||||
.skipInit
|
.skipLoad
|
||||||
LDA.w SpriteItemType, X ; Retrieve stored item type
|
PHA : PHX
|
||||||
|
TAX
|
||||||
.skipLoad
|
LDA.l SpriteProperties_standing_width,X : BNE +
|
||||||
|
PLX
|
||||||
PHA
|
LDA.w SpriteControl, X : ORA.b #$20 : STA.w SpriteControl, X
|
||||||
JSL.l IsNarrowSprite : BCC +
|
PLA
|
||||||
LDA.w SpriteControl, X : ORA.b #$20 : STA.w SpriteControl, X
|
JSL.l DrawDynamicTile
|
||||||
+
|
LDA.b Scrap00
|
||||||
PLA
|
CLC : ADC.b #$04
|
||||||
|
STA.b Scrap00
|
||||||
JSL.l DrawDynamicTile
|
JSL.l Sprite_DrawShadowLong
|
||||||
JSL.l Sprite_DrawShadowLong
|
BRA .done
|
||||||
|
+
|
||||||
.done
|
PLX
|
||||||
PLY : PLA
|
PLA
|
||||||
.offscreen
|
JSL.l DrawDynamicTile
|
||||||
PLP
|
JSL.l Sprite_DrawShadowLong
|
||||||
|
.done
|
||||||
|
PLY : PLA
|
||||||
|
.offscreen
|
||||||
|
PLP
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawHeartContainerGFX:
|
DrawHeartContainerGFX:
|
||||||
@@ -83,37 +71,36 @@ DrawHeartContainerGFX:
|
|||||||
BRA DrawHeartPieceGFX_done ; don't draw on the init frame
|
BRA DrawHeartPieceGFX_done ; don't draw on the init frame
|
||||||
|
|
||||||
.skipInit
|
.skipInit
|
||||||
LDA.w SpriteItemType, X ; Retrieve stored item type
|
LDA.w SpriteID, X ; Retrieve stored item type
|
||||||
|
|
||||||
BRA DrawHeartPieceGFX_skipLoad
|
BRA DrawHeartPieceGFX_skipLoad
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
HeartContainerSound:
|
HeartContainerSound:
|
||||||
CPY.b #$20 : BEQ + ; Skip for Crystal
|
LDA.w ItemReceiptMethod : CMP.b #$03 : BEQ +
|
||||||
CPY.b #$37 : BEQ + ; Skip for Pendants
|
JSL.l CheckIfBossRoom : BCC + ; Skip if not in a boss room
|
||||||
CPY.b #$38 : BEQ +
|
LDA.b #$2E
|
||||||
CPY.b #$39 : BEQ +
|
SEC
|
||||||
JSL.l CheckIfBossRoom : BCC + ; Skip if not in a boss room
|
RTL
|
||||||
LDA.b #$2E
|
|
||||||
SEC
|
|
||||||
RTL
|
|
||||||
+
|
+
|
||||||
CLC
|
CLC
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
NormalItemSkipSound:
|
NormalItemSkipSound:
|
||||||
LDA.w AncillaGet, X ; thing we wrote over
|
; Out: C - skip sounds if set
|
||||||
|
JSL.l CheckIfBossRoom : BCS .boss_room
|
||||||
CPY.b #$20 : BEQ + ; Skip for Crystal
|
TDC
|
||||||
CPY.b #$37 : BEQ + ; Skip for Pendants
|
CPY #$17 : BEQ .skip
|
||||||
CPY.b #$38 : BEQ +
|
CLC
|
||||||
CPY.b #$39 : BEQ +
|
|
||||||
|
|
||||||
PHA
|
|
||||||
JSL.l CheckIfBossRoom
|
|
||||||
PLA
|
|
||||||
RTL
|
RTL
|
||||||
+
|
.boss_room
|
||||||
CLC
|
LDA.w ItemReceiptMethod : CMP.b #$03 : BEQ +
|
||||||
|
.skip
|
||||||
|
SEC
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
LDA.b #$20
|
||||||
|
.dont_skip
|
||||||
|
CLC
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
HeartPieceSpritePrep:
|
HeartPieceSpritePrep:
|
||||||
@@ -125,9 +112,11 @@ HeartPieceSpritePrep:
|
|||||||
LDA.b LinkState : CMP.b #$14 : BEQ .skip ; skip if we're mid-mirror
|
LDA.b LinkState : CMP.b #$14 : BEQ .skip ; skip if we're mid-mirror
|
||||||
|
|
||||||
LDA.b #$00 : STA.l RedrawFlag
|
LDA.b #$00 : STA.l RedrawFlag
|
||||||
JSL.l LoadHeartPieceRoomValue ; load item type
|
JSL.l LoadHeartPieceRoomValue
|
||||||
STA.w SpriteItemType, X ; Store item type
|
JSL.l AttemptItemSubstitution
|
||||||
JSL.l PrepDynamicTile
|
JSL.l ResolveLootIDLong
|
||||||
|
STA.w SpriteID, X
|
||||||
|
JSL.l PrepDynamicTile_loot_resolved
|
||||||
|
|
||||||
.skip
|
.skip
|
||||||
PLA
|
PLA
|
||||||
@@ -138,8 +127,10 @@ HeartContainerSpritePrep:
|
|||||||
|
|
||||||
LDA.b #$00 : STA.l RedrawFlag
|
LDA.b #$00 : STA.l RedrawFlag
|
||||||
JSL.l LoadHeartContainerRoomValue ; load item type
|
JSL.l LoadHeartContainerRoomValue ; load item type
|
||||||
STA.w SpriteItemType, X ; Store item type
|
JSL.l AttemptItemSubstitution
|
||||||
JSL.l PrepDynamicTile
|
JSL.l ResolveLootIDLong
|
||||||
|
STA.w SpriteID, X
|
||||||
|
JSL.l PrepDynamicTile_loot_resolved
|
||||||
|
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
@@ -155,7 +146,7 @@ LoadHeartPieceRoomValue:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
HPItemReset:
|
HPItemReset:
|
||||||
JSL $09AD58 ; GiveRupeeGift - thing we wrote over
|
JSL $89AD58 ; GiveRupeeGift - thing we wrote over
|
||||||
PHA : LDA.b #$01 : STA.l RedrawFlag : PLA
|
PHA : LDA.b #$01 : STA.l RedrawFlag : PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -220,7 +211,10 @@ LoadIndoorValue:
|
|||||||
LDA.l StandingKey_Hera
|
LDA.l StandingKey_Hera
|
||||||
JMP .done
|
JMP .done
|
||||||
+
|
+
|
||||||
LDA.w #$0017 ; default to a normal hp
|
PHX
|
||||||
|
LDX.w CurrentSpriteSlot ; If we're on a different screen ID via glitches load the sprite
|
||||||
|
LDA.w SpriteID,X ; we can see and are interacting with
|
||||||
|
PLX
|
||||||
.done
|
.done
|
||||||
AND.w #$00FF ; the loads are words but the values are 1-byte so we need to clear the top half of the accumulator - no guarantee it was 8-bit before
|
AND.w #$00FF ; the loads are words but the values are 1-byte so we need to clear the top half of the accumulator - no guarantee it was 8-bit before
|
||||||
PLP
|
PLP
|
||||||
@@ -283,7 +277,10 @@ LoadOutdoorValue:
|
|||||||
%GetPossiblyEncryptedItem(HeartPiece_Zora, HeartPieceOutdoorValues)
|
%GetPossiblyEncryptedItem(HeartPiece_Zora, HeartPieceOutdoorValues)
|
||||||
JMP .done
|
JMP .done
|
||||||
+
|
+
|
||||||
LDA.w #$0017 ; default to a normal hp
|
PHX
|
||||||
|
LDX.w CurrentSpriteSlot ; If we're on a different screen ID via glitches load the sprite
|
||||||
|
LDA.w SpriteID,X ; we can see and are interacting with.
|
||||||
|
PLX
|
||||||
.done
|
.done
|
||||||
AND.w #$00FF ; the loads are words but the values are 1-byte so we need to clear the top half of the accumulator - no guarantee it was 8-bit before
|
AND.w #$00FF ; the loads are words but the values are 1-byte so we need to clear the top half of the accumulator - no guarantee it was 8-bit before
|
||||||
PLP
|
PLP
|
||||||
@@ -378,9 +375,9 @@ RTL
|
|||||||
;#13 - Ganon's Tower - Agahnim II
|
;#13 - Ganon's Tower - Agahnim II
|
||||||
;#0 - Pyramid of Power - Ganon
|
;#0 - Pyramid of Power - Ganon
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;JSL $06DD40 ; DashKey_Draw
|
;JSL $86DD40 ; DashKey_Draw
|
||||||
;JSL $06DBF8 ; Sprite_PrepAndDrawSingleLargeLong
|
;JSL $86DBF8 ; Sprite_PrepAndDrawSingleLargeLong
|
||||||
;JSL $06DC00 ; Sprite_PrepAndDrawSingleSmallLong ; draw first cell correctly
|
;JSL $86DC00 ; Sprite_PrepAndDrawSingleSmallLong ; draw first cell correctly
|
||||||
;JSL $00D51B ; GetAnimatedSpriteTile
|
;JSL $80D51B ; GetAnimatedSpriteTile
|
||||||
;JSL $00D52D ; GetAnimatedSpriteTile.variable
|
;JSL $80D52D ; GetAnimatedSpriteTile.variable
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
215
hextodec.asm
Normal file
215
hextodec.asm
Normal file
@@ -0,0 +1,215 @@
|
|||||||
|
;===================================================================================================
|
||||||
|
; New file because of the enormous table
|
||||||
|
;===================================================================================================
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
; HexToDec
|
||||||
|
; in: A(w) - Word to Convert
|
||||||
|
; out: HexToDecDigit1 - HexToDecDigit5 (high - low)
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
HexToDec:
|
||||||
|
PHP
|
||||||
|
REP #$30
|
||||||
|
PHX
|
||||||
|
PHA
|
||||||
|
|
||||||
|
CMP.w #1000
|
||||||
|
BCS .over_1000
|
||||||
|
|
||||||
|
ASL
|
||||||
|
TAX
|
||||||
|
|
||||||
|
LDA.l FastHexTable,X
|
||||||
|
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
|
AND.b #$0F
|
||||||
|
STA.l HexToDecDigit5
|
||||||
|
|
||||||
|
LDA.l FastHexTable,X
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
STA.l HexToDecDigit4
|
||||||
|
|
||||||
|
XBA
|
||||||
|
AND.b #$0F
|
||||||
|
STA.l HexToDecDigit3
|
||||||
|
|
||||||
|
REP #$20
|
||||||
|
|
||||||
|
LDA.l #$0000
|
||||||
|
STA.l HexToDecDigit1
|
||||||
|
|
||||||
|
PLA
|
||||||
|
PLX
|
||||||
|
PLP
|
||||||
|
RTL
|
||||||
|
|
||||||
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.over_1000
|
||||||
|
; get remainder mod100
|
||||||
|
STA.l $4204
|
||||||
|
|
||||||
|
SEP #$20
|
||||||
|
LDA.b #100
|
||||||
|
STA.l $4206
|
||||||
|
|
||||||
|
PHD
|
||||||
|
PLD
|
||||||
|
REP #$20
|
||||||
|
XBA
|
||||||
|
LDA.l $4216
|
||||||
|
AND.w #$7F
|
||||||
|
ASL
|
||||||
|
TAX
|
||||||
|
|
||||||
|
SEP #$20
|
||||||
|
LDA.l FastHexTable,X
|
||||||
|
AND.b #$0F
|
||||||
|
STA.l HexToDecDigit5
|
||||||
|
|
||||||
|
LDA.l FastHexTable,X
|
||||||
|
AND.b #$F0
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
STA.l HexToDecDigit4
|
||||||
|
|
||||||
|
REP #$20
|
||||||
|
|
||||||
|
LDA.l $4214
|
||||||
|
ASL
|
||||||
|
TAX
|
||||||
|
|
||||||
|
LDA.l FastHexTable,X
|
||||||
|
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
|
AND.b #$0F
|
||||||
|
STA.l HexToDecDigit3
|
||||||
|
|
||||||
|
LDA.l FastHexTable,X
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
LSR
|
||||||
|
STA.l HexToDecDigit2
|
||||||
|
|
||||||
|
XBA
|
||||||
|
AND.b #$0F
|
||||||
|
STA.l HexToDecDigit1
|
||||||
|
|
||||||
|
REP #$20
|
||||||
|
PLA
|
||||||
|
PLX
|
||||||
|
PLP
|
||||||
|
RTL
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
FastHexTable:
|
||||||
|
dw $000, $001, $002, $003, $004, $005, $006, $007, $008, $009
|
||||||
|
dw $010, $011, $012, $013, $014, $015, $016, $017, $018, $019
|
||||||
|
dw $020, $021, $022, $023, $024, $025, $026, $027, $028, $029
|
||||||
|
dw $030, $031, $032, $033, $034, $035, $036, $037, $038, $039
|
||||||
|
dw $040, $041, $042, $043, $044, $045, $046, $047, $048, $049
|
||||||
|
dw $050, $051, $052, $053, $054, $055, $056, $057, $058, $059
|
||||||
|
dw $060, $061, $062, $063, $064, $065, $066, $067, $068, $069
|
||||||
|
dw $070, $071, $072, $073, $074, $075, $076, $077, $078, $079
|
||||||
|
dw $080, $081, $082, $083, $084, $085, $086, $087, $088, $089
|
||||||
|
dw $090, $091, $092, $093, $094, $095, $096, $097, $098, $099
|
||||||
|
dw $100, $101, $102, $103, $104, $105, $106, $107, $108, $109
|
||||||
|
dw $110, $111, $112, $113, $114, $115, $116, $117, $118, $119
|
||||||
|
dw $120, $121, $122, $123, $124, $125, $126, $127, $128, $129
|
||||||
|
dw $130, $131, $132, $133, $134, $135, $136, $137, $138, $139
|
||||||
|
dw $140, $141, $142, $143, $144, $145, $146, $147, $148, $149
|
||||||
|
dw $150, $151, $152, $153, $154, $155, $156, $157, $158, $159
|
||||||
|
dw $160, $161, $162, $163, $164, $165, $166, $167, $168, $169
|
||||||
|
dw $170, $171, $172, $173, $174, $175, $176, $177, $178, $179
|
||||||
|
dw $180, $181, $182, $183, $184, $185, $186, $187, $188, $189
|
||||||
|
dw $190, $191, $192, $193, $194, $195, $196, $197, $198, $199
|
||||||
|
dw $200, $201, $202, $203, $204, $205, $206, $207, $208, $209
|
||||||
|
dw $210, $211, $212, $213, $214, $215, $216, $217, $218, $219
|
||||||
|
dw $220, $221, $222, $223, $224, $225, $226, $227, $228, $229
|
||||||
|
dw $230, $231, $232, $233, $234, $235, $236, $237, $238, $239
|
||||||
|
dw $240, $241, $242, $243, $244, $245, $246, $247, $248, $249
|
||||||
|
dw $250, $251, $252, $253, $254, $255, $256, $257, $258, $259
|
||||||
|
dw $260, $261, $262, $263, $264, $265, $266, $267, $268, $269
|
||||||
|
dw $270, $271, $272, $273, $274, $275, $276, $277, $278, $279
|
||||||
|
dw $280, $281, $282, $283, $284, $285, $286, $287, $288, $289
|
||||||
|
dw $290, $291, $292, $293, $294, $295, $296, $297, $298, $299
|
||||||
|
dw $300, $301, $302, $303, $304, $305, $306, $307, $308, $309
|
||||||
|
dw $310, $311, $312, $313, $314, $315, $316, $317, $318, $319
|
||||||
|
dw $320, $321, $322, $323, $324, $325, $326, $327, $328, $329
|
||||||
|
dw $330, $331, $332, $333, $334, $335, $336, $337, $338, $339
|
||||||
|
dw $340, $341, $342, $343, $344, $345, $346, $347, $348, $349
|
||||||
|
dw $350, $351, $352, $353, $354, $355, $356, $357, $358, $359
|
||||||
|
dw $360, $361, $362, $363, $364, $365, $366, $367, $368, $369
|
||||||
|
dw $370, $371, $372, $373, $374, $375, $376, $377, $378, $379
|
||||||
|
dw $380, $381, $382, $383, $384, $385, $386, $387, $388, $389
|
||||||
|
dw $390, $391, $392, $393, $394, $395, $396, $397, $398, $399
|
||||||
|
dw $400, $401, $402, $403, $404, $405, $406, $407, $408, $409
|
||||||
|
dw $410, $411, $412, $413, $414, $415, $416, $417, $418, $419
|
||||||
|
dw $420, $421, $422, $423, $424, $425, $426, $427, $428, $429
|
||||||
|
dw $430, $431, $432, $433, $434, $435, $436, $437, $438, $439
|
||||||
|
dw $440, $441, $442, $443, $444, $445, $446, $447, $448, $449
|
||||||
|
dw $450, $451, $452, $453, $454, $455, $456, $457, $458, $459
|
||||||
|
dw $460, $461, $462, $463, $464, $465, $466, $467, $468, $469
|
||||||
|
dw $470, $471, $472, $473, $474, $475, $476, $477, $478, $479
|
||||||
|
dw $480, $481, $482, $483, $484, $485, $486, $487, $488, $489
|
||||||
|
dw $490, $491, $492, $493, $494, $495, $496, $497, $498, $499
|
||||||
|
dw $500, $501, $502, $503, $504, $505, $506, $507, $508, $509
|
||||||
|
dw $510, $511, $512, $513, $514, $515, $516, $517, $518, $519
|
||||||
|
dw $520, $521, $522, $523, $524, $525, $526, $527, $528, $529
|
||||||
|
dw $530, $531, $532, $533, $534, $535, $536, $537, $538, $539
|
||||||
|
dw $540, $541, $542, $543, $544, $545, $546, $547, $548, $549
|
||||||
|
dw $550, $551, $552, $553, $554, $555, $556, $557, $558, $559
|
||||||
|
dw $560, $561, $562, $563, $564, $565, $566, $567, $568, $569
|
||||||
|
dw $570, $571, $572, $573, $574, $575, $576, $577, $578, $579
|
||||||
|
dw $580, $581, $582, $583, $584, $585, $586, $587, $588, $589
|
||||||
|
dw $590, $591, $592, $593, $594, $595, $596, $597, $598, $599
|
||||||
|
dw $600, $601, $602, $603, $604, $605, $606, $607, $608, $609
|
||||||
|
dw $610, $611, $612, $613, $614, $615, $616, $617, $618, $619
|
||||||
|
dw $620, $621, $622, $623, $624, $625, $626, $627, $628, $629
|
||||||
|
dw $630, $631, $632, $633, $634, $635, $636, $637, $638, $639
|
||||||
|
dw $640, $641, $642, $643, $644, $645, $646, $647, $648, $649
|
||||||
|
dw $650, $651, $652, $653, $654, $655, $656, $657, $658, $659
|
||||||
|
dw $660, $661, $662, $663, $664, $665, $666, $667, $668, $669
|
||||||
|
dw $670, $671, $672, $673, $674, $675, $676, $677, $678, $679
|
||||||
|
dw $680, $681, $682, $683, $684, $685, $686, $687, $688, $689
|
||||||
|
dw $690, $691, $692, $693, $694, $695, $696, $697, $698, $699
|
||||||
|
dw $700, $701, $702, $703, $704, $705, $706, $707, $708, $709
|
||||||
|
dw $710, $711, $712, $713, $714, $715, $716, $717, $718, $719
|
||||||
|
dw $720, $721, $722, $723, $724, $725, $726, $727, $728, $729
|
||||||
|
dw $730, $731, $732, $733, $734, $735, $736, $737, $738, $739
|
||||||
|
dw $740, $741, $742, $743, $744, $745, $746, $747, $748, $749
|
||||||
|
dw $750, $751, $752, $753, $754, $755, $756, $757, $758, $759
|
||||||
|
dw $760, $761, $762, $763, $764, $765, $766, $767, $768, $769
|
||||||
|
dw $770, $771, $772, $773, $774, $775, $776, $777, $778, $779
|
||||||
|
dw $780, $781, $782, $783, $784, $785, $786, $787, $788, $789
|
||||||
|
dw $790, $791, $792, $793, $794, $795, $796, $797, $798, $799
|
||||||
|
dw $800, $801, $802, $803, $804, $805, $806, $807, $808, $809
|
||||||
|
dw $810, $811, $812, $813, $814, $815, $816, $817, $818, $819
|
||||||
|
dw $820, $821, $822, $823, $824, $825, $826, $827, $828, $829
|
||||||
|
dw $830, $831, $832, $833, $834, $835, $836, $837, $838, $839
|
||||||
|
dw $840, $841, $842, $843, $844, $845, $846, $847, $848, $849
|
||||||
|
dw $850, $851, $852, $853, $854, $855, $856, $857, $858, $859
|
||||||
|
dw $860, $861, $862, $863, $864, $865, $866, $867, $868, $869
|
||||||
|
dw $870, $871, $872, $873, $874, $875, $876, $877, $878, $879
|
||||||
|
dw $880, $881, $882, $883, $884, $885, $886, $887, $888, $889
|
||||||
|
dw $890, $891, $892, $893, $894, $895, $896, $897, $898, $899
|
||||||
|
dw $900, $901, $902, $903, $904, $905, $906, $907, $908, $909
|
||||||
|
dw $910, $911, $912, $913, $914, $915, $916, $917, $918, $919
|
||||||
|
dw $920, $921, $922, $923, $924, $925, $926, $927, $928, $929
|
||||||
|
dw $930, $931, $932, $933, $934, $935, $936, $937, $938, $939
|
||||||
|
dw $940, $941, $942, $943, $944, $945, $946, $947, $948, $949
|
||||||
|
dw $950, $951, $952, $953, $954, $955, $956, $957, $958, $959
|
||||||
|
dw $960, $961, $962, $963, $964, $965, $966, $967, $968, $969
|
||||||
|
dw $970, $971, $972, $973, $974, $975, $976, $977, $978, $979
|
||||||
|
dw $980, $981, $982, $983, $984, $985, $986, $987, $988, $989
|
||||||
|
dw $990, $991, $992, $993, $994, $995, $996, $997, $998, $999
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
86
hud.asm
86
hud.asm
@@ -1,47 +1,47 @@
|
|||||||
;org $0DFE97 ; <- 6FE97 - headsup_display.asm:1009 (.hud_tilemap)
|
;org $8DFE97 ; <- 6FE97 - headsup_display.asm:1009 (.hud_tilemap)
|
||||||
; DO NOT EXCEED 0x150
|
; DO NOT EXCEED 0x150
|
||||||
HUD_TileMap:
|
HUD_TileMap:
|
||||||
dw $207F, $207F, $2850, $A856
|
dw $207F, $207F, $2850, $A856
|
||||||
dw $2852, $285B, $285B, $285C
|
dw $2852, $285B, $285B, $285C
|
||||||
;dw $207F, $3CA8, $207F, $207F, $207F
|
;dw $207F, $3CA8, $207F, $207F, $207F
|
||||||
dw $207F, $3C02, $3C03, $207F, $207F ; normal mode
|
dw $207F, $3C02, $3C03, $207F, $207F ; normal mode
|
||||||
;dw $3C02, $3C03, $207F, $207F, $207F ; rupee arrows
|
;dw $3C02, $3C03, $207F, $207F, $207F ; rupee arrows
|
||||||
dw $2C88, $2C89, $207F, $20A7
|
dw $2C88, $2C89, $207F, $20A7
|
||||||
dw $20A9, $207F, $2871 ;, $207F
|
dw $20A9, $207F, $2871 ;, $207F
|
||||||
dw $207F, $207F, $288B, $288F
|
dw $207F, $207F, $288B, $288F
|
||||||
dw $24AB, $24AC, $688F, $688B
|
dw $24AB, $24AC, $688F, $688B
|
||||||
dw $207F, $207F, $207F, $207F
|
dw $207F, $207F, $207F, $207F
|
||||||
dw $207F, $207F, $2854, $2871
|
dw $207F, $207F, $2854, $2871
|
||||||
dw $2858, $207F, $207F, $285D
|
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, $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 $207F, $207F, $2854, $304E
|
||||||
dw $2858, $207F, $207F, $285D
|
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, $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 $207F, $207F, $2854, $305E
|
||||||
dw $2859, $A85B, $A85B, $A85C
|
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, $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 $207F, $207F, $2854, $305E
|
||||||
dw $6854, $207F, $207F, $207F
|
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, $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 $207F, $207F, $A850, $2856
|
||||||
dw $E850
|
dw $E850
|
||||||
|
|||||||
43
init.asm
43
init.asm
@@ -48,12 +48,16 @@ Init_Primary:
|
|||||||
LDA.l OneMindTimerInit : STA.l OneMindTimerRAM
|
LDA.l OneMindTimerInit : STA.l OneMindTimerRAM
|
||||||
SEP #$30
|
SEP #$30
|
||||||
|
|
||||||
LDA.b #$01 : STA.w MEMSEL ; enable fastrom access on upper banks
|
LDA.l RomSpeed : STA.w MEMSEL ; enable fastrom access on upper banks
|
||||||
STA.l OneMindId
|
LDA.b #$01 : STA.l OneMindId
|
||||||
|
|
||||||
LDA.b #$10 : STA.b PlayerSpriteBank ; set default player sprite bank
|
LDA.b #$10 : STA.b PlayerSpriteBank ; set default player sprite bank
|
||||||
LDA.b #$81 : STA.w NMITIMEN ; thing we wrote over, turn on NMI & gamepad
|
LDA.b #$81 : STA.w NMITIMEN ; thing we wrote over, turn on NMI & gamepad
|
||||||
RTL
|
LDA.b #(ReturnFromInit>>16)|$80 : PHA : PLB
|
||||||
|
|
||||||
|
JML ReturnFromInit
|
||||||
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Init_PostRAMClear
|
; Init_PostRAMClear
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -64,6 +68,35 @@ Init_PostRAMClear:
|
|||||||
|
|
||||||
JSL MSUInit
|
JSL MSUInit
|
||||||
JSL InitRNGPointerTable
|
JSL InitRNGPointerTable
|
||||||
JSL InitDungeonCounts
|
JSL DecompressAllItemGraphics
|
||||||
|
JSR InitDungeonCounts
|
||||||
|
|
||||||
JML $00D463 ; The original target of the jump table that we hijacked
|
JML $80D463 ; The original target of the jump table that we hijacked
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
InitDungeonCounts:
|
||||||
|
PHB
|
||||||
|
LDX.b #$0F
|
||||||
|
-
|
||||||
|
LDA.l CompassTotalsROM, X : STA.l CompassTotalsWRAM, X
|
||||||
|
DEX
|
||||||
|
BPL -
|
||||||
|
LDX.b #$0F
|
||||||
|
-
|
||||||
|
LDA.l ChestKeys, X : STA.l MapTotalsWRAM, X
|
||||||
|
DEX
|
||||||
|
BPL -
|
||||||
|
|
||||||
|
LDA.b #$7E
|
||||||
|
PHA : PLB
|
||||||
|
REP #$30
|
||||||
|
LDA.l TotalItemCount
|
||||||
|
JSL.l HUDHex4Digit_Long
|
||||||
|
SEP #$20
|
||||||
|
LDA.b Scrap04 : TAX : STX.w TotalItemCountTiles+$00
|
||||||
|
LDA.b Scrap05 : TAX : STX.w TotalItemCountTiles+$02
|
||||||
|
LDA.b Scrap06 : TAX : STX.w TotalItemCountTiles+$04
|
||||||
|
LDA.b Scrap07 : TAX : STX.w TotalItemCountTiles+$06
|
||||||
|
SEP #$10
|
||||||
|
PLB
|
||||||
|
RTS
|
||||||
|
|||||||
@@ -14,30 +14,30 @@
|
|||||||
fillword $0000 ; Zero out the table
|
fillword $0000 ; Zero out the table
|
||||||
fill $500 ;
|
fill $500 ;
|
||||||
|
|
||||||
org $30B000 ; PC 0x183000
|
org $B0B000 ; PC 0x183000
|
||||||
InitSRAMTable:
|
InitSRAMTable:
|
||||||
InitRoomDataWRAM:
|
InitRoomDataWRAM:
|
||||||
org $30B060 ; PC 0x183060
|
org $B0B060 ; PC 0x183060
|
||||||
InitATAltarRoom: dw $0000 ; aga curtains
|
InitATAltarRoom: dw $0000 ; aga curtains
|
||||||
org $30B092 ; PC 0x183092
|
org $B0B092 ; PC 0x183092
|
||||||
InitSWBackEntryRoom: dw $0000 ; skull woods curtains
|
InitSWBackEntryRoom: dw $0000 ; skull woods curtains
|
||||||
|
|
||||||
org $30B20C
|
org $B0B20C
|
||||||
dw $F000, $F000 ; Pre-open kak bomb hut & brewery
|
dw $F000, $F000 ; Pre-open kak bomb hut & brewery
|
||||||
|
|
||||||
org $30B280 ; PC 0x183280 - 0x1832FF
|
org $B0B280 ; PC 0x183280 - 0x1832FF
|
||||||
InitOverworldEvents:
|
InitOverworldEvents:
|
||||||
org $30B282 ; PC 0x183282 - Lumberjacks
|
org $B0B282 ; PC 0x183282 - Lumberjacks
|
||||||
InitLumberjackOW: db $00
|
InitLumberjackOW: db $00
|
||||||
org $30B29B ; PC 0x18329B - Open castle gate
|
org $B0B29B ; PC 0x18329B - Open castle gate
|
||||||
InitHyruleCastleOW: db $20
|
InitHyruleCastleOW: db $20
|
||||||
org $30B2DB ; PC 0x1832DB - Pyramid hole
|
org $B0B2DB ; PC 0x1832DB - Pyramid hole
|
||||||
InitPyramidOW: db $00
|
InitPyramidOW: db $00
|
||||||
org $30B2C3 ; PC 0x1832C3 - GT
|
org $B0B2C3 ; PC 0x1832C3 - GT
|
||||||
InitDDMWestOW: db $00
|
InitDDMWestOW: db $00
|
||||||
|
|
||||||
|
|
||||||
org $30B340 ; PC 0x183340
|
org $B0B340 ; PC 0x183340
|
||||||
StartingEquipment:
|
StartingEquipment:
|
||||||
StartingBow: skip 1 ; PC 0x183340
|
StartingBow: skip 1 ; PC 0x183340
|
||||||
StartingBoomerang: skip 1 ; PC 0x183341
|
StartingBoomerang: skip 1 ; PC 0x183341
|
||||||
@@ -129,13 +129,13 @@ InitDroppedFollowerIndoors: skip 1 ; PC 0x1833D1
|
|||||||
InitDroppedFollowerLayer: skip 1 ; PC 0x1833D2
|
InitDroppedFollowerLayer: skip 1 ; PC 0x1833D2
|
||||||
InitFollowerDropped: skip 1 ; PC 0x1833D3
|
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
|
StaticFileName: ; The validity value ($55AA) must be written manually on SRAM init at $7003E1
|
||||||
dw $0181, $0068, $006E, $018C
|
dw $0181, $0068, $006E, $018C
|
||||||
dw $0166, $0064, $0068, $018C
|
dw $0166, $0064, $0068, $018C
|
||||||
dw $0165, $0068, $006D, $018C
|
dw $0165, $0068, $006D, $018C
|
||||||
|
|
||||||
org $30B401 ; PC 0x183401
|
org $B0B401 ; PC 0x183401
|
||||||
InitDeathCounter:
|
InitDeathCounter:
|
||||||
dw $FFFF
|
dw $FFFF
|
||||||
|
|
||||||
@@ -147,29 +147,29 @@ dw $FFFF
|
|||||||
; excluding ~28 bytes (File name, validity value, and checksum.)
|
; excluding ~28 bytes (File name, validity value, and checksum.)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
org $30B414 ; PC 0x183414-0x183416
|
org $B0B414 ; PC 0x183414-0x183416
|
||||||
InitMapOverlay: dw $0000
|
InitMapOverlay: dw $0000
|
||||||
|
|
||||||
org $30B417 ; PC 0x183417
|
org $B0B417 ; PC 0x183417
|
||||||
InitHighestSword: db $00
|
InitHighestSword: db $00
|
||||||
|
|
||||||
org $30B414 ; PC 0x183418-0x183419
|
org $B0B414 ; PC 0x183418-0x183419
|
||||||
InitGoalCounter: dw $0000
|
InitGoalCounter: dw $0000
|
||||||
|
|
||||||
org $30B422 ; PC 0x183422
|
org $B0B422 ; PC 0x183422
|
||||||
InitHighestShield: db $00
|
InitHighestShield: db $00
|
||||||
|
|
||||||
org $30B428 ; PC 0x183428
|
org $B0B428 ; PC 0x183428
|
||||||
InitMapsCompasses: db $00
|
InitMapsCompasses: db $00
|
||||||
|
|
||||||
org $30B429 ; PC 0x183429
|
org $B0B429 ; PC 0x183429
|
||||||
InitPendantCounter: db $00
|
InitPendantCounter: db $00
|
||||||
|
|
||||||
org $30B454 ; PC 0x183454-0x183457
|
org $B0B454 ; PC 0x183454-0x183457
|
||||||
InitChallengeTimer: dw $0000, $0000
|
InitChallengeTimer: dw $0000, $0000
|
||||||
|
|
||||||
org $30B46E ; PC 0x18346E
|
org $B0B46E ; PC 0x18346E
|
||||||
InitHighestMail: db $00
|
InitHighestMail: db $00
|
||||||
|
|
||||||
org $30B471 ; PC 0x183471
|
org $B0B471 ; PC 0x183471
|
||||||
InitCrystalCounter: db $00
|
InitCrystalCounter: db $00
|
||||||
|
|||||||
786
inventory.asm
786
inventory.asm
@@ -1,28 +1,6 @@
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Inventory Updates
|
; Inventory Updates
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; InventoryTracking
|
|
||||||
; ------oq brmpnskf
|
|
||||||
; b = blue boomerang | -
|
|
||||||
; r = red boomerang | -
|
|
||||||
; m = mushroom current | -
|
|
||||||
; p = magic powder | -
|
|
||||||
; n = mushroom past | -
|
|
||||||
; s = shovel | -
|
|
||||||
; k = fake flute | o = any bomb acquired from item location
|
|
||||||
; f = working flute | q = quickswap locked
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; BowTracking
|
|
||||||
; Item Tracking Slot #2
|
|
||||||
; bsp-----
|
|
||||||
; b = bow
|
|
||||||
; s = silver arrow bow
|
|
||||||
; p = 2nd progressive bow
|
|
||||||
; -
|
|
||||||
; -
|
|
||||||
; -
|
|
||||||
; -
|
|
||||||
; -
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; ProcessMenuButtons:
|
; ProcessMenuButtons:
|
||||||
; out: Carry - 0 = No Button, 1 = Yes Button
|
; out: Carry - 0 = No Button, 1 = Yes Button
|
||||||
@@ -32,10 +10,9 @@ ProcessMenuButtons:
|
|||||||
BIT.b #$20 : BNE .sel_pressed ; check for P1 Select button
|
BIT.b #$20 : BNE .sel_pressed ; check for P1 Select button
|
||||||
LDA.b Joy1A_All : BIT.b #$20 : BNE .sel_held
|
LDA.b Joy1A_All : BIT.b #$20 : BNE .sel_held
|
||||||
.sel_unheld
|
.sel_unheld
|
||||||
LDA.l HudFlag : AND.b #$20 : BEQ +
|
LDA.l HudFlag : AND.b #$60 : BEQ +
|
||||||
LDA.l HudFlag : AND.b #$DF : STA.l HudFlag ; select is released, unset hud flag
|
LDA.b #$00 : STA.l HudFlag
|
||||||
LDA.b IndoorsFlag : BEQ + ; skip if outdoors
|
JSL.l MaybePlaySelectSFX
|
||||||
LDA.b #$20 : STA.w SFX3 ; menu select sound
|
|
||||||
+
|
+
|
||||||
JSL.l ResetEquipment
|
JSL.l ResetEquipment
|
||||||
+
|
+
|
||||||
@@ -43,8 +20,14 @@ ProcessMenuButtons:
|
|||||||
CLC ; no buttons
|
CLC ; no buttons
|
||||||
RTL
|
RTL
|
||||||
.sel_pressed
|
.sel_pressed
|
||||||
LDA.l HudFlag : ORA.b #$20 : STA.l HudFlag ; set hud flag
|
LDA.l HUDDungeonItems : BIT.b #$0C : BNE +
|
||||||
LDA.b #$20 : STA.w SFX3 ; menu select sound
|
LDA.b #$40
|
||||||
|
BRA .store_flag
|
||||||
|
+
|
||||||
|
LDA.b #$60
|
||||||
|
.store_flag
|
||||||
|
STA.l HudFlag
|
||||||
|
JSL.l MaybePlaySelectSFX
|
||||||
JSL.l ResetEquipment
|
JSL.l ResetEquipment
|
||||||
RTL
|
RTL
|
||||||
.y_pressed ; Note: used as entry point by quickswap code. Must preserve X.
|
.y_pressed ; Note: used as entry point by quickswap code. Must preserve X.
|
||||||
@@ -129,10 +112,6 @@ ProcessBottleMenu:
|
|||||||
.no_bottles
|
.no_bottles
|
||||||
LDA.b #$00 ; pretend like the controller state was 0 from the overridden load
|
LDA.b #$00 ; pretend like the controller state was 0 from the overridden load
|
||||||
RTL
|
RTL
|
||||||
; .y_not_pressed
|
|
||||||
; LDA.b Joy1A_New : AND.b #$0C ; thing we wrote over - load controller state
|
|
||||||
;RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;OpenBottleMenu:
|
;OpenBottleMenu:
|
||||||
@@ -162,548 +141,212 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; AddInventory:
|
; AddInventory:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro TopHalf(address)
|
|
||||||
LDA.l <address> : !ADD #$10 : STA.l <address>
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
macro BottomHalf(address)
|
|
||||||
PHA : PHX
|
|
||||||
LDA.l <address> : INC : AND.b #$0F : TAX
|
|
||||||
LDA.l <address> : AND.b #$F0 : STA.l <address>
|
|
||||||
TXA : ORA.l <address> : STA.l <address>
|
|
||||||
PLX : PLA
|
|
||||||
endmacro
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
FullInventoryExternal:
|
|
||||||
PHA : PHX : PHP : JMP AddInventory_incrementCounts
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
AddInventory:
|
AddInventory:
|
||||||
PHA : PHX : PHP
|
; In: Y - Receipt ID
|
||||||
CPY.b #$0C : BNE + ; Blue Boomerang
|
; Uses $0B-$0D for long absolute addressing
|
||||||
LDA.l InventoryTracking : ORA.b #$80 : STA.l InventoryTracking
|
PHA : PHX : PHY : PHP : PHB
|
||||||
JMP .incrementCounts
|
PHK : PLB
|
||||||
+ CPY.b #$2A : BNE + ; Red Boomerang
|
LDA.b #$7E : STA.b Scrap0D
|
||||||
LDA.l InventoryTracking : ORA.b #$40 : STA.l InventoryTracking
|
LDA.l StatsLocked : BNE .done
|
||||||
JMP .incrementCounts
|
LDA.w InventoryTable_properties,Y : BIT #$01 : BEQ .done
|
||||||
+ CPY.b #$29 : BNE + ; Mushroom
|
JSR.w ShopCheck : BCS .done
|
||||||
LDA.l InventoryTracking : ORA.b #$28 : STA.l InventoryTracking
|
JSR.w DungeonIncrement : BCS .done
|
||||||
JMP .incrementCounts
|
JSR.w IncrementByOne
|
||||||
+ CPY.b #$0D : BNE + ; Magic Powder
|
JSR.w StampItem
|
||||||
LDA.l InventoryTracking : ORA.b #$10 : STA.l InventoryTracking
|
SEP #$20
|
||||||
JMP .incrementCounts
|
JSR.w IncrementYAItems
|
||||||
+ CPY.b #$13 : BNE + ; Shovel
|
REP #$20
|
||||||
LDA.l InventoryTracking : ORA.b #$04 : STA.l InventoryTracking
|
LDA.l TotalItemCounter : INC : TAY
|
||||||
JMP .incrementCounts
|
LDA.l BootsEquipment : BNE +
|
||||||
+ CPY.b #$14 : BNE + ; Flute (Inactive)
|
TYA : STA.l PreBootsLocations
|
||||||
LDA.l InventoryTracking : ORA.b #$02 : STA.l InventoryTracking
|
+
|
||||||
JMP .incrementCounts
|
LDA.l MirrorEquipment : BNE +
|
||||||
+ CPY.b #$4A : BNE + ; Flute (Active)
|
TYA : STA.l PreMirrorLocations
|
||||||
LDA.l InventoryTracking : ORA.b #$01 : STA.l InventoryTracking
|
+
|
||||||
JMP .incrementCounts
|
LDA.l FluteEquipment : BNE +
|
||||||
+ CPY.b #$0B : BNE + ; Bow
|
TYA : STA.l PreFluteLocations
|
||||||
LDA.l ArrowMode : BNE +++
|
+
|
||||||
LDA.l BowTracking : ORA.b #$80 : STA.l BowTracking
|
TYA
|
||||||
+++
|
STA.l TotalItemCounter
|
||||||
JMP .incrementCounts
|
.done
|
||||||
+ CPY.b #$3A : BNE + ; Bow & Arrows
|
PLB : PLP : PLY : PLX : PLA
|
||||||
LDA.l BowTracking : ORA.b #$80 : STA.l BowTracking
|
RTL
|
||||||
JMP .incrementCounts
|
|
||||||
+ CPY.b #$3B : BNE + ; Bow & Silver Arrows
|
ShopCheck:
|
||||||
LDA.l BowTracking : ORA.b #$40 : STA.l BowTracking
|
; TODO: If we write all shops, we can use the ShopPurchase flag instead of this
|
||||||
LDA.l ArrowMode : BNE +++
|
LDA.b IndoorsFlag : BEQ .count
|
||||||
LDA.l BowTracking : ORA.b #$80 : STA.l BowTracking ; activate wood arrows when not in rupee bow
|
LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ .count
|
||||||
+++
|
LDA.w InventoryTable_properties,Y : BIT.b #$02 : BNE .count
|
||||||
JMP .incrementCounts
|
REP #$20
|
||||||
+ CPY.b #$43 : BNE + ; Single arrow
|
LDA.b RoomIndex
|
||||||
LDA.l ArrowMode : BEQ +++
|
CMP.w #274 : BEQ .nocount ; dark world death mountain shop, ornamental shield shop
|
||||||
LDA.l BowTracking : ORA.b #$80 : STA.l BowTracking ; activate wood arrows in quick-swap
|
CMP.w #271 : BEQ .nocount ; villiage of outcasts shop, lumberjack shop, lake hylia shop, dark world magic shop
|
||||||
+++
|
CMP.w #272 : BEQ .nocount ; red shield shop
|
||||||
JMP .incrementCounts
|
CMP.w #284 : BEQ .nocount ; bomb shop
|
||||||
+ CPY.b #$58 : BNE + ; Upgrade-Only Silver Arrows
|
CMP.w #287 : BEQ .nocount ; kakariko shop
|
||||||
LDA.l BowTracking : ORA.b #$40 : STA.l BowTracking
|
CMP.w #255 : BEQ .nocount ; light world death mountain shop
|
||||||
|
CMP.w #276 : BEQ .nocount ; waterfall fairy
|
||||||
|
CMP.w #277 : BEQ .nocount ; upgrade fairy (shop)
|
||||||
|
CMP.w #278 : BEQ .nocount ; pyramid fairy
|
||||||
|
SEP #$20
|
||||||
|
.count
|
||||||
|
CLC
|
||||||
|
RTS
|
||||||
|
.nocount
|
||||||
|
SEP #$21
|
||||||
|
RTS
|
||||||
|
|
||||||
|
DungeonIncrement:
|
||||||
|
LDA.w InventoryTable_properties,Y : BIT.b #$40 : BEQ +
|
||||||
|
JSL.l CountChestKeyLong
|
||||||
+
|
+
|
||||||
|
LDA.b IndoorsFlag : BEQ .done
|
||||||
.incrementCounts
|
LDA.w DungeonID : BMI .done
|
||||||
; don't count any of this stuff
|
|
||||||
CPY.b #$20 : BNE + : JMP .itemCounts : + ; Crystal
|
|
||||||
CPY.b #$26 : BNE + : JMP .itemCounts : + ; Heart Piece Completion Heart
|
|
||||||
CPY.b #$2E : BNE + : JMP .itemCounts : + ; Red Potion (Refill)
|
|
||||||
CPY.b #$2F : BNE + : JMP .itemCounts : + ; Green Potion (Refill)
|
|
||||||
CPY.b #$30 : BNE + : JMP .itemCounts : + ; Blue Potion (Refill)
|
|
||||||
CPY.b #$37 : BNE + : JMP .itemCounts : + ; Pendant
|
|
||||||
CPY.b #$38 : BNE + : JMP .itemCounts : + ; Pendant
|
|
||||||
CPY.b #$39 : BNE + : JMP .itemCounts : + ; Pendant
|
|
||||||
|
|
||||||
CPY.b #$04 : !BLT .isSword ; Swords - Skip Shop/Fairy Check for Swords
|
|
||||||
CPY.b #$49 : BEQ .isSword
|
|
||||||
CPY.b #$50 : BEQ .isSword
|
|
||||||
CPY.b #$5E : BEQ .isSword
|
|
||||||
BRA +
|
|
||||||
.isSword
|
|
||||||
JMP .dungeonCounts
|
|
||||||
+
|
|
||||||
CPY.b #$3B : BNE + : JMP .dungeonCounts : + ; Silver Arrow Bow - Skip Shop/Fairy Check for Silver Arrow Bow
|
|
||||||
|
|
||||||
LDA.b IndoorsFlag : BEQ ++ ; skip shop check if outdoors
|
|
||||||
LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ ++ ; skip shop check for chests
|
|
||||||
PHP : REP #$20 ; set 16-bit accumulator
|
|
||||||
LDA.b RoomIndex
|
|
||||||
CMP.w #274 : BNE + : JMP .shop : + ; dark world death mountain shop, ornamental shield shop
|
|
||||||
CMP.w #271 : BNE + : JMP .shop : + ; villiage of outcasts shop, lumberjack shop, lake hylia shop, dark world magic shop
|
|
||||||
CMP.w #272 : BNE + : JMP .shop : + ; red shield shop
|
|
||||||
CMP.w #284 : BNE + : JMP .shop : + ; bomb shop
|
|
||||||
;CMP.w #265 : BNE + : JMP .shop : + ; potion shop - commented this out because it's easier to just block potion refills because this one interferes with the powder item being counted
|
|
||||||
;CMP.w #271 : BNE + : JMP .shop : + ; lake hylia shop
|
|
||||||
CMP.w #287 : BNE + : JMP .shop : + ; kakariko shop
|
|
||||||
CMP.w #255 : BNE + : JMP .shop : + ; light world death mountain shop
|
|
||||||
CMP.w #276 : BNE + : JMP .shop : + ; waterfall fairy
|
|
||||||
CMP.w #277 : BNE + : JMP .shop : + ; upgrade fairy (shop)
|
|
||||||
CMP.w #278 : BNE + : JMP .shop : + ; pyramid fairy
|
|
||||||
PLP : BRA ++
|
|
||||||
.shop
|
|
||||||
PLP : JMP .done
|
|
||||||
++
|
|
||||||
|
|
||||||
.dungeonCounts
|
|
||||||
LDA.b IndoorsFlag : BNE + : JMP .fullItemCounts : +
|
|
||||||
SEP #$20 ; Set 8-bit Accumulator
|
|
||||||
|
|
||||||
LDA.w DungeonID ; get dungeon id
|
|
||||||
CMP.b #$FF : BEQ .fullItemCounts
|
|
||||||
|
|
||||||
CMP.l BallNChainDungeon : BNE +
|
CMP.l BallNChainDungeon : BNE +
|
||||||
CPY.b #$32 : BNE +
|
CPY.b #$32 : BEQ .ballchain_bigkey
|
||||||
JMP .done
|
|
||||||
+
|
+
|
||||||
CMP.b #$04 : BCS +
|
CMP.b #$04 : BCS +
|
||||||
LDA.l SewersLocations : INC : STA.l SewersLocations
|
LDA.l SewersLocations : INC : STA.l SewersLocations : STA.l HCLocations
|
||||||
LDA.l HCLocations : INC : STA.l HCLocations
|
BRA .done
|
||||||
BRA .fullItemCounts
|
|
||||||
+ LSR : TAX : LDA.l DungeonLocationsChecked, X : INC : STA.l DungeonLocationsChecked, X
|
|
||||||
++ CPX.b #$0D : BNE +
|
|
||||||
LDA.l BigKeyField : AND.b #$04 : BNE ++
|
|
||||||
JSR .incrementGTowerPreBigKey
|
|
||||||
++
|
|
||||||
+
|
|
||||||
; == END INDOOR-ONLY SECTION
|
|
||||||
.fullItemCounts
|
|
||||||
|
|
||||||
LDA.l BootsEquipment : BNE + ; Check for Boots
|
|
||||||
LDA.l PreBootsLocations : INC : STA.l PreBootsLocations ; Increment Pre Boots Counter
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.l MirrorEquipment : BNE + ; Check for Mirror
|
|
||||||
LDA.l PreMirrorLocations : INC : STA.l PreMirrorLocations ; Increment Pre Mirror Counter
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.l FluteEquipment : BNE + ; Check for Flute
|
|
||||||
LDA.l PreFluteLocations : INC : STA.l PreFluteLocations ; Increment Pre Mirror Counter
|
|
||||||
+
|
|
||||||
|
|
||||||
REP #$20
|
|
||||||
LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total
|
|
||||||
SEP #$20
|
|
||||||
|
|
||||||
.itemCounts
|
|
||||||
|
|
||||||
CPY.b #$00 : BNE + ; Fighter's Sword & Fighter's Shield
|
|
||||||
LDX.b #$01
|
|
||||||
JSR .incrementSword
|
|
||||||
JSR .incrementShield
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$01 : BNE + ; Master Sword
|
|
||||||
LDX.b #$02
|
|
||||||
JSR .incrementSword
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$02 : BNE + ; Tempered Sword
|
|
||||||
LDX.b #$03
|
|
||||||
JSR .incrementSword
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$03 : BNE + ; Golden Sword
|
|
||||||
LDX.b #$04
|
|
||||||
JSR .incrementSword
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$04 : BNE + ; Fighter's Shield
|
|
||||||
LDX.b #$01
|
|
||||||
JSR .incrementShield
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$05 : BNE + ; Red Shield
|
|
||||||
LDX.b #$02
|
|
||||||
JSR .incrementShield
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$06 : BNE + ; Mirror Shield
|
|
||||||
LDX.b #$03
|
|
||||||
JSR .incrementShield
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$07 : !BLT + ; Items $07 - $0D
|
|
||||||
CPY.b #$0E : !BGE +
|
|
||||||
JSR .incrementY
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$14 : BNE + ; Flute (Inactive) - LEAVE THIS ABOVE THE 0F-16 CONDITION - kkat
|
|
||||||
JSR .stampFlute
|
|
||||||
JSR .incrementY
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$0F : !BLT + ; Items $0F - $16
|
|
||||||
CPY.b #$17 : !BGE +
|
|
||||||
JSR .incrementY
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$17 : BNE + ; Heart Piece
|
|
||||||
JSR .incrementHeartPiece
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$18 : !BLT + ; Items $18 - $19
|
|
||||||
CPY.b #$1A : !BGE +
|
|
||||||
JSR .incrementY
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$1A : BNE + ; Magic Mirror
|
|
||||||
JSR .stampMirror
|
|
||||||
JSR .incrementY
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$1D : BNE + ; Book of Mudora - LEAVE THIS ABOVE THE 1B-1F CONDITION - kkat
|
|
||||||
JSR .incrementY
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$1B : !BLT + ; Items IndoorsFlag - $1F
|
|
||||||
CPY.b #$20 : !BGE +
|
|
||||||
JSR .incrementA
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$20 : BNE + ; Crystal
|
|
||||||
JSR .incrementCrystal
|
|
||||||
JSR .setDungeonCompletion
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$21 : BNE + ; Bug Net
|
|
||||||
JSR .incrementY
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$22 : BNE + ; Blue Mail
|
|
||||||
LDX.b #$01
|
|
||||||
JSR .incrementMail
|
|
||||||
+ CPY.b #$23 : BNE + ; Red Mail
|
|
||||||
LDX.b #$02
|
|
||||||
JSR .incrementMail
|
|
||||||
+ CPY.b #$24 : BNE + ; Small Key
|
|
||||||
JSR .incrementVanillaKey
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$25 : BNE + ; Compass
|
|
||||||
JSL MaybeFlagCompassTotalPickup
|
|
||||||
JSR .incrementCompass
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$26 : BNE + ; Liar Heart (Container)
|
|
||||||
;JSR .incrementHeartContainer
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$27 : BNE + ; 1 Bomb
|
|
||||||
JSR .maybeIncrementBombs
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$28 : BNE + ; 3 Bombs
|
|
||||||
JSR .maybeIncrementBombs
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$29 : BNE + ; Mushroom
|
|
||||||
JSR .incrementY
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$2A : !BLT + ; Items $2A - $2D
|
|
||||||
CPY.b #$2E : !BGE +
|
|
||||||
JSR .incrementY
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$31 : BNE + ; 10 Bombs
|
|
||||||
JSR .maybeIncrementBombs
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$32 : BNE + ; Big Key
|
|
||||||
JSR .incrementBigKey
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$33 : BNE + ; Map
|
|
||||||
JSL MaybeFlagMapTotalPickup
|
|
||||||
JSR .incrementMap
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$37 : !BLT + ; Items $37 - $39 - Pendants
|
|
||||||
CPY.b #$3A : !BGE +
|
|
||||||
JSR .incrementPendant
|
|
||||||
JSR .setDungeonCompletion
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$3A : !BLT + ; Items $3A - $3B - Bow & Silver Arrows
|
|
||||||
CPY.b #$3C : !BGE +
|
|
||||||
JSR .incrementBow
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$3C : BNE + ; Bottle w/Bee
|
|
||||||
JSR .incrementY
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$3D : BNE + ; Bottle w/Fairy
|
|
||||||
JSR .incrementY
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$3E : !BLT + ; Items $3E - $3F - Heart Containers
|
|
||||||
CPY.b #$40 : !BGE +
|
|
||||||
JSR .incrementHeartContainer
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$48 : BNE + ; Bottle w/Gold Bee
|
|
||||||
JSR .incrementY
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$49 : BNE + ; Fighter's Sword
|
|
||||||
LDX.b #$01
|
|
||||||
JSR .incrementSword
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$4A : BNE + ; Flute (Active)
|
|
||||||
JSR .stampFlute
|
|
||||||
JSR .incrementY
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$4B : BNE + ; Pegasus Boots
|
|
||||||
JSR .stampBoots
|
|
||||||
JSR .incrementA
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$4C : BNE + ; 50 Bomb Capacity Upgrade
|
|
||||||
JSR .incrementCapacity
|
|
||||||
JSR .maybeIncrementBombs
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$4D : !BLT + ; Items $4D - $4F - Capacity Upgrades
|
|
||||||
CPY.b #$50 : !BGE +
|
|
||||||
JSR .incrementCapacity
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$50 : BNE + ; Master Sword (Safe)
|
|
||||||
LDX.b #$02
|
|
||||||
JSR .incrementSword
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$51 : BNE + ; 5 Bomb Capacity Upgrade
|
|
||||||
LDX.b #$02
|
|
||||||
JSR .maybeIncrementBombs
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$52 : BNE + ; 10 Bomb Capacity Upgrade
|
|
||||||
LDX.b #$02
|
|
||||||
JSR .maybeIncrementBombs
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$51 : !BLT + ; Items $51 - $54 - Capacity Upgrades
|
|
||||||
CPY.b #$55 : !BGE +
|
|
||||||
JSR .incrementCapacity
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$58 : BNE + ; Upgrade-Only Silver Arrows
|
|
||||||
JSR .incrementBow
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$5E : BNE + ; Progressive Sword
|
|
||||||
LDA.l SwordEquipment : INC : TAX
|
|
||||||
JSR .incrementSword
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$5F : BNE + ; Progressive Shield
|
|
||||||
LDA.l ShieldEquipment : INC : TAX
|
|
||||||
JSR .incrementShield
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$60 : BNE + ; Progressive Armor
|
|
||||||
LDA.l ArmorEquipment : INC : TAX
|
|
||||||
JSR .incrementMail
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$61 : BNE + ; Progressive Lifting Glove
|
|
||||||
JSR .incrementA
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$64 : !BLT + ; Items $64 & $65 - Progressive Bow
|
|
||||||
CPY.b #$66 : !BGE +
|
|
||||||
JSR .incrementBow
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$70 : !BLT + ; Items $70 - $7F - Free Maps
|
|
||||||
CPY.b #$80 : !BGE +
|
|
||||||
JSL MaybeFlagMapTotalPickup
|
|
||||||
JSR .incrementMap
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$80 : !BLT + ; Items $80 - $8F - Free Compasses
|
|
||||||
CPY.b #$90 : !BGE +
|
|
||||||
JSL MaybeFlagCompassTotalPickup
|
|
||||||
JSR .incrementCompass
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$90 : !BLT + ; Items $90 - $9F - Free Big Keys
|
|
||||||
CPY.b #$A0 : !BGE +
|
|
||||||
JSR .incrementBigKey
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$A0 : !BLT + ; Items $A0 - $AF - Free Small Keys
|
|
||||||
CPY.b #$B0 : !BGE +
|
|
||||||
JSR .incrementKey
|
|
||||||
JMP .done
|
|
||||||
+ CPY.b #$B6 : BNE + ; Item $B6 - Bomb Upgrade
|
|
||||||
JSR .stampSword ; update "first bomb" timestamp
|
|
||||||
LDA.l SpecialWeaponLevel ; get current bomb level
|
|
||||||
CMP #$05 : !BGE ++ ; check if already maxed
|
|
||||||
INC : STA.l SpecialWeaponLevel
|
|
||||||
++ JMP .done
|
|
||||||
+ CPY.b #$B7 : BNE + ; Item $B7 - Cane Upgrade
|
|
||||||
JSR .stampSword ; update "first cane" timestamp
|
|
||||||
LDA.l SpecialWeaponLevel ; get current cane level
|
|
||||||
CMP #$05 : !BGE ++ ; check if already maxed
|
|
||||||
INC : STA.l SpecialWeaponLevel
|
|
||||||
++ JMP .done
|
|
||||||
+ CPY.b #$B8 : BNE + ; Item $B8 - Bug Net Upgrade
|
|
||||||
JSR .stampSword ; update "first bug net" timestamp
|
|
||||||
LDA.l SpecialWeaponLevel ; get current bug net level
|
|
||||||
CMP #$05 : !BGE ++ ; check if already maxed
|
|
||||||
INC : STA.l SpecialWeaponLevel
|
|
||||||
++ JMP .done
|
|
||||||
+
|
+
|
||||||
|
LSR : TAX : LDA.l DungeonLocationsChecked, X : INC : STA.l DungeonLocationsChecked, X
|
||||||
|
CPX.b #$0D : BNE +
|
||||||
|
LDA.l BigKeyField : BIT.b #$04 : BNE ++
|
||||||
|
LDA.l PreGTBKLocations : INC : STA.l PreGTBKLocations
|
||||||
|
++
|
||||||
|
+
|
||||||
.done
|
.done
|
||||||
PLP : PLX : PLA
|
CLC
|
||||||
RTL
|
RTS
|
||||||
; WHICH BEE IS BOTTLED?
|
.ballchain_bigkey
|
||||||
; MAKE SURE FAIRY FOUNTAINS DON'T FUCK THE COUNTS UP
|
LDA.l BigKeysBigChests
|
||||||
|
CLC : ADC.b #$10
|
||||||
.stampSword
|
STA.l BigKeysBigChests
|
||||||
REP #$20 ; set 16-bit accumulator
|
SEC
|
||||||
LDA.l SwordTime : BNE +
|
|
||||||
LDA.l SwordTime+2 : BNE +
|
|
||||||
LDA.l NMIFrames : STA.l SwordTime
|
|
||||||
LDA.l NMIFrames+2 : STA.l SwordTime+2
|
|
||||||
+
|
|
||||||
SEP #$20 ; set 8-bit accumulator
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.stampBoots
|
StampItem:
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$30
|
||||||
LDA.l BootsTime : BNE +
|
TYA : ASL : TAX
|
||||||
LDA.l BootsTime+2 : BNE +
|
LDA.w InventoryTable_stamp,X : BEQ .skip
|
||||||
LDA.l NMIFrames : STA.l BootsTime
|
STA.b Scrap0B
|
||||||
LDA.l NMIFrames+2 : STA.l BootsTime+2
|
LDA.b [Scrap0B] : BNE .skip
|
||||||
+
|
LDA.l NMIFrames : STA.b [Scrap0B]
|
||||||
SEP #$20 ; set 8-bit accumulator
|
INC.b Scrap0B : INC.b Scrap0B
|
||||||
|
LDA.l NMIFrames+2 : STA.b [Scrap0B]
|
||||||
|
.skip
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.stampFlute
|
IncrementYAItems:
|
||||||
REP #$20 ; set 16-bit accumulator
|
LDA.w InventoryTable_properties,Y
|
||||||
LDA.l FluteTime : BNE +
|
BIT.b #$10 : BNE .bomb_check
|
||||||
LDA.l FluteTime+2 : BNE +
|
BIT.b #$20 : BNE .bow_check
|
||||||
LDA.l NMIFrames : STA.l FluteTime
|
BIT.b #$04 : BEQ .not_y
|
||||||
LDA.l NMIFrames+2 : STA.l FluteTime+2
|
.y_item
|
||||||
+
|
LDA.l YAItemCounter : !ADD #$08 : STA.l YAItemCounter
|
||||||
SEP #$20 ; set 8-bit accumulator
|
BRA .done
|
||||||
|
.not_y
|
||||||
|
BIT.b #$08 : BEQ .done
|
||||||
|
.a_item
|
||||||
|
LDA.l YAItemCounter : INC : AND.b #$07 : TAX
|
||||||
|
LDA.l YAItemCounter : AND.b #$F8 : STA.l YAItemCounter
|
||||||
|
TXA : ORA.l YAItemCounter : STA.l YAItemCounter
|
||||||
|
.done
|
||||||
RTS
|
RTS
|
||||||
|
.bow_check
|
||||||
.stampMirror
|
LDA.l BowEquipment : BNE +
|
||||||
REP #$20 ; set 16-bit accumulator
|
BRA .y_item
|
||||||
LDA.l MirrorTime : BNE +
|
|
||||||
LDA.l MirrorTime+2 : BNE +
|
|
||||||
LDA.l NMIFrames : STA.l MirrorTime
|
|
||||||
LDA.l NMIFrames+2 : STA.l MirrorTime+2
|
|
||||||
+
|
+
|
||||||
SEP #$20 ; set 8-bit accumulator
|
|
||||||
RTS
|
RTS
|
||||||
|
.bomb_check
|
||||||
.incrementSword
|
LDA.l InventoryTracking+1 : BIT.b #$02 : BNE +
|
||||||
JSR .stampSword
|
ORA.b #$02 : STA.l InventoryTracking+1
|
||||||
LDA.l HighestSword
|
BRA .y_item
|
||||||
INC : STA.b Scrap04 : CPX.b Scrap04 : !BLT + ; don't increment unless we're getting a better sword
|
|
||||||
TXA : STA.l HighestSword
|
|
||||||
+
|
+
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.incrementShield
|
IncrementByOne:
|
||||||
LDA.l HighestShield
|
REP #$20
|
||||||
INC : STA.b Scrap04 : CPX.b Scrap04 : !BLT + ; don't increment unless we're getting a better shield
|
TYA : ASL : TAX
|
||||||
TXA : STA.l HighestShield
|
LDA.w InventoryTable_stat,X : BEQ .skip
|
||||||
|
STA.b Scrap0B
|
||||||
|
SEP #$21
|
||||||
|
LDA.b #$00 : ADC.b [Scrap0B] : STA.b [Scrap0B]
|
||||||
|
.skip
|
||||||
|
SEP #$20
|
||||||
|
RTS
|
||||||
|
|
||||||
|
IncrementBossSword:
|
||||||
|
PHX
|
||||||
|
LDA.l StatsLocked : BNE .done
|
||||||
|
|
||||||
|
.start
|
||||||
|
LDA.l SpecialWeapons : CMP.b #$01 : BEQ .check_special_weapon
|
||||||
|
CMP.b #$03 : BEQ .check_special_weapon
|
||||||
|
CMP.b #$04 : BEQ .check_special_weapon
|
||||||
|
CMP.b #$05 : BEQ .check_special_weapon
|
||||||
|
CMP.b #$08 : BEQ .check_special_weapon
|
||||||
|
|
||||||
|
.check_sword
|
||||||
|
LDA.l SwordEquipment : CMP.b #$FF : BNE +
|
||||||
|
BRA .none
|
||||||
+
|
+
|
||||||
RTS
|
ASL : TAX
|
||||||
|
JMP.w (.vectors,X)
|
||||||
|
.check_special_weapon
|
||||||
|
LDA.l SpecialWeaponLevel
|
||||||
|
ASL : TAX
|
||||||
|
JMP.w (.vectors,X)
|
||||||
|
|
||||||
.incrementBow
|
.vectors
|
||||||
LDA.l BowEquipment : BNE .dontCount ; Don't increment Y item count for extra bows
|
dw .none
|
||||||
.incrementY
|
dw .fighter
|
||||||
LDA.l YAItemCounter : !ADD #$08 : STA.l YAItemCounter
|
dw .master
|
||||||
.dontCount
|
dw .tempered
|
||||||
RTS
|
dw .golden
|
||||||
|
dw .golden
|
||||||
|
|
||||||
.incrementA
|
.none
|
||||||
LDA.l YAItemCounter : INC : AND.b #$07 : TAX
|
LDA.l SwordlessBossKills : INC : STA.l SwordlessBossKills
|
||||||
LDA.l YAItemCounter : AND.b #$F8 : STA.l YAItemCounter
|
.done
|
||||||
TXA : ORA.l YAItemCounter : STA.l YAItemCounter
|
PLX
|
||||||
RTS
|
RTL
|
||||||
|
.fighter
|
||||||
.incrementPendant
|
LDA.l SwordBossKills
|
||||||
LDA.l PendantCounter : INC : STA.l PendantCounter
|
CLC : ADC.b #$10
|
||||||
RTS
|
STA.l SwordBossKills
|
||||||
|
PLX
|
||||||
.incrementCapacity
|
RTL
|
||||||
LDA.l CapacityUpgrades : INC : STA.l CapacityUpgrades
|
.master
|
||||||
RTS
|
LDA.l SwordBossKills : INC : AND.b #$0F : TAX
|
||||||
|
LDA.l SwordBossKills : AND.b #$F0 : STA.l SwordBossKills
|
||||||
.incrementHeartPiece
|
TXA : ORA.l SwordBossKills : STA.l SwordBossKills
|
||||||
LDA.l HeartPieceCounter : INC : STA.l HeartPieceCounter
|
PLX
|
||||||
RTS
|
RTL
|
||||||
|
.tempered
|
||||||
.incrementHeartContainer
|
LDA.l SwordBossKills+1
|
||||||
LDA.l HeartContainerCounter : INC : STA.l HeartContainerCounter
|
CLC : ADC.b #$10
|
||||||
RTS
|
STA.l SwordBossKills+1
|
||||||
|
PLX
|
||||||
.incrementCrystal
|
RTL
|
||||||
LDA.l CrystalCounter : INC : STA.l CrystalCounter
|
.golden
|
||||||
RTS
|
LDA.l SwordBossKills+1 : INC : AND.b #$0F : TAX
|
||||||
|
LDA.l SwordBossKills+1 : AND.b #$F0 : STA.l SwordBossKills+1
|
||||||
.incrementMail
|
TXA : ORA.l SwordBossKills+1 : STA.l SwordBossKills+1
|
||||||
LDA.l HighestMail
|
PLX
|
||||||
INC : STA.b Scrap04 : CPX.b Scrap04 : !BLT + ; don't increment unless we're getting a better mail
|
RTL
|
||||||
TXA : STA.l HighestMail
|
|
||||||
+
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.incrementKeyLong
|
|
||||||
JSR .incrementKey
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.incrementVanillaKey
|
|
||||||
LDA.l SmallKeyCounter : INC : STA.l SmallKeyCounter
|
|
||||||
JSL.l UpdateKeys
|
|
||||||
|
|
||||||
.incrementKey
|
|
||||||
LDA.l SmallKeyCounter : INC : STA.l SmallKeyCounter
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.incrementCompass
|
|
||||||
%BottomHalf(MapsCompasses)
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.incrementBigKey
|
|
||||||
%TopHalf(BigKeysBigChests)
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.incrementGTowerPreBigKey
|
|
||||||
LDA.l PreGTBKLocations : INC : STA.l PreGTBKLocations
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.maybeIncrementBombs
|
|
||||||
LDA.l InventoryTracking+1 : AND.b #$02 : BNE +
|
|
||||||
LDA.l InventoryTracking+1 : ORA.b #$02 : STA.l InventoryTracking+1
|
|
||||||
JSR .incrementY
|
|
||||||
+
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.incrementMap
|
|
||||||
%TopHalf(MapsCompasses)
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.incrementBossSwordLong
|
|
||||||
JSR .incrementBossSword
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.incrementBossSword
|
|
||||||
LDA.l SpecialWeapons : CMP.b #$01 : BEQ +
|
|
||||||
CMP.b #$03 : BEQ +
|
|
||||||
CMP.b #$04 : BEQ +
|
|
||||||
CMP.b #$05 : BEQ +
|
|
||||||
CMP.b #$08 : BEQ +
|
|
||||||
LDA.l SwordEquipment : BRA ++
|
|
||||||
+ : LDA.l SpecialWeaponLevel
|
|
||||||
++
|
|
||||||
BNE + : -
|
|
||||||
LDA.l SwordlessBossKills : INC : STA.l SwordlessBossKills
|
|
||||||
RTS
|
|
||||||
+ CMP.b #$FF : BEQ -
|
|
||||||
+ CMP.b #$01 : BNE +
|
|
||||||
%TopHalf(SwordBossKills) : RTS
|
|
||||||
+ CMP.b #$02 : BNE +
|
|
||||||
%BottomHalf(SwordBossKills) : RTS
|
|
||||||
+ CMP.b #$03 : BNE +
|
|
||||||
%TopHalf(SwordBossKills+1) : RTS
|
|
||||||
+ CMP.b #$04 : BNE +
|
|
||||||
%BottomHalf(SwordBossKills+1)
|
|
||||||
+
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.setDungeonCompletion
|
|
||||||
LDX.w DungeonID : BMI +
|
|
||||||
REP #$20 ; 16 bit
|
|
||||||
LDA.l DungeonMask, X
|
|
||||||
ORA.l DungeonsCompleted : STA.l DungeonsCompleted
|
|
||||||
SEP #$20 ; 8 bit
|
|
||||||
+
|
|
||||||
RTS
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Link_ReceiveItem_HUDRefresh:
|
IncrementFinalSword:
|
||||||
|
PHX
|
||||||
|
REP #$20
|
||||||
|
LDA.w RoomIndex : BNE .done
|
||||||
|
SEP #$20
|
||||||
|
JMP IncrementBossSword_start
|
||||||
|
.done
|
||||||
|
SEP #$20
|
||||||
|
PLX
|
||||||
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Link_ReceiveItem_HUDRefresh:
|
Link_ReceiveItem_HUDRefresh:
|
||||||
LDA.l BombsEquipment : BNE + ; skip if we have bombs
|
LDA.l BombsEquipment : BNE + ; skip if we have bombs
|
||||||
@@ -714,6 +357,7 @@ Link_ReceiveItem_HUDRefresh:
|
|||||||
+
|
+
|
||||||
|
|
||||||
JSL.l HUD_RefreshIconLong ; thing we wrote over
|
JSL.l HUD_RefreshIconLong ; thing we wrote over
|
||||||
|
INC.w UpdateHUD
|
||||||
JSL.l PostItemGet
|
JSL.l PostItemGet
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -728,6 +372,7 @@ HandleBombAbsorbtion:
|
|||||||
LDA.b #$04 : STA.w ItemCursor ; set selected item to bombs
|
LDA.b #$04 : STA.w ItemCursor ; set selected item to bombs
|
||||||
LDA.b #$01 : STA.w CurrentYItem ; set selected item to bombs
|
LDA.b #$01 : STA.w CurrentYItem ; set selected item to bombs
|
||||||
JSL.l HUD_RebuildLong
|
JSL.l HUD_RebuildLong
|
||||||
|
INC.w UpdateHUD
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -859,7 +504,7 @@ ClearOWKeys:
|
|||||||
|
|
||||||
JSL.l TurtleRockEntranceFix
|
JSL.l TurtleRockEntranceFix
|
||||||
JSL.l FakeWorldFix
|
JSL.l FakeWorldFix
|
||||||
JSR.w FixBunnyOnExitToLightWorld
|
JSL.l FixBunnyOnExitToLightWorld
|
||||||
LDA.l GenericKeys : BEQ +
|
LDA.l GenericKeys : BEQ +
|
||||||
PLA : LDA.l CurrentGenericKeys : STA.l CurrentSmallKeys
|
PLA : LDA.l CurrentGenericKeys : STA.l CurrentSmallKeys
|
||||||
RTL
|
RTL
|
||||||
@@ -882,10 +527,15 @@ RTL
|
|||||||
; LoadPowder:
|
; LoadPowder:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadPowder:
|
LoadPowder:
|
||||||
|
PHX
|
||||||
JSL.l Sprite_SpawnDynamically ; thing we wrote over
|
JSL.l Sprite_SpawnDynamically ; thing we wrote over
|
||||||
%GetPossiblyEncryptedItem(WitchItem, SpriteItemValues)
|
%GetPossiblyEncryptedItem(WitchItem, SpriteItemValues)
|
||||||
STA.w SpriteAuxTable, Y ; Store item type
|
JSL.l AttemptItemSubstitution
|
||||||
JSL.l PrepDynamicTile
|
JSL.l ResolveLootIDLong
|
||||||
|
STA.w SpriteID, Y
|
||||||
|
TYX
|
||||||
|
JSL.l PrepDynamicTile_loot_resolved
|
||||||
|
PLX
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -908,12 +558,12 @@ RTL
|
|||||||
DrawPowder:
|
DrawPowder:
|
||||||
LDA.w ItemReceiptPose : BNE .defer ; defer if link is buying a potion
|
LDA.w ItemReceiptPose : BNE .defer ; defer if link is buying a potion
|
||||||
LDA.l RedrawFlag : BEQ +
|
LDA.l RedrawFlag : BEQ +
|
||||||
LDA.w SpriteAuxTable, X ; Retrieve stored item type
|
; LDA.w SpriteAuxTable, X ; Retrieve stored item type
|
||||||
JSL.l PrepDynamicTile
|
JSL.l PrepDynamicTile_loot_resolved
|
||||||
LDA.b #$00 : STA.l RedrawFlag ; reset redraw flag
|
LDA.b #$00 : STA.l RedrawFlag ; reset redraw flag
|
||||||
BRA .defer
|
BRA .defer
|
||||||
+
|
+
|
||||||
LDA.w SpriteAuxTable, X ; Retrieve stored item type
|
LDA.w SpriteID, X ; Retrieve stored item type
|
||||||
JSL.l DrawDynamicTile
|
JSL.l DrawDynamicTile
|
||||||
.defer
|
.defer
|
||||||
RTL
|
RTL
|
||||||
@@ -933,7 +583,9 @@ LoadMushroom:
|
|||||||
|
|
||||||
LDA.b #$00 : STA.l RedrawFlag
|
LDA.b #$00 : STA.l RedrawFlag
|
||||||
%GetPossiblyEncryptedItem(MushroomItem, SpriteItemValues)
|
%GetPossiblyEncryptedItem(MushroomItem, SpriteItemValues)
|
||||||
STA.w SpriteItemType, X ; Store item type
|
JSL.l AttemptItemSubstitution
|
||||||
|
JSR.w ResolveLootID
|
||||||
|
STA.w SpriteID,X
|
||||||
JSL.l PrepDynamicTile
|
JSL.l PrepDynamicTile
|
||||||
|
|
||||||
.skip
|
.skip
|
||||||
@@ -951,7 +603,7 @@ DrawMushroom:
|
|||||||
BRA .done ; don't draw on the init frame
|
BRA .done ; don't draw on the init frame
|
||||||
|
|
||||||
.skipInit
|
.skipInit
|
||||||
LDA.w SpriteItemType, X ; Retrieve stored item type
|
LDA.w SpriteID, X ; Retrieve stored item type
|
||||||
JSL.l DrawDynamicTile
|
JSL.l DrawDynamicTile
|
||||||
|
|
||||||
.done
|
.done
|
||||||
@@ -963,14 +615,13 @@ RTL
|
|||||||
; CollectPowder:
|
; CollectPowder:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CollectPowder:
|
CollectPowder:
|
||||||
LDY.w SpriteAuxTable, X ; Retrieve stored item type
|
LDY.w SpriteID, X ; Retrieve stored item type
|
||||||
BNE +
|
BNE +
|
||||||
; if for any reason the item value is 0 reload it, just in case
|
; if for any reason the item value is 0 reload it, just in case
|
||||||
%GetPossiblyEncryptedItem(WitchItem, SpriteItemValues) : TAY
|
%GetPossiblyEncryptedItem(WitchItem, SpriteItemValues) : TAY
|
||||||
+
|
+
|
||||||
STZ.w ItemReceiptMethod ; item from NPC
|
STZ.w ItemReceiptMethod ; item from NPC
|
||||||
JSL.l Link_ReceiveItem
|
JSL.l Link_ReceiveItem
|
||||||
;JSL.l FullInventoryExternal
|
|
||||||
JSL.l ItemSet_Powder
|
JSL.l ItemSet_Powder
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -1104,3 +755,14 @@ RTL
|
|||||||
|
|
||||||
}
|
}
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
MaybePlaySelectSFX:
|
||||||
|
LDA.w DungeonID : BMI .not_dungeon
|
||||||
|
.play
|
||||||
|
LDA.b #$20 : STA.w SFX3 ; menu select sound
|
||||||
|
RTL
|
||||||
|
.not_dungeon
|
||||||
|
LDA.l HUDDungeonItems : BIT.b #$13 : BEQ .dont_play
|
||||||
|
BIT.b #$0C : BEQ .dont_play
|
||||||
|
BRA .play
|
||||||
|
.dont_play
|
||||||
|
RTL
|
||||||
|
|||||||
2680
invertedmaps.asm
2680
invertedmaps.asm
File diff suppressed because it is too large
Load Diff
1482
itemdatatables.asm
Normal file
1482
itemdatatables.asm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -2,11 +2,6 @@
|
|||||||
; Item Downgrade Fix
|
; Item Downgrade Fix
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ItemDowngradeFix:
|
ItemDowngradeFix:
|
||||||
JSR ItemDowngradeFixMain
|
|
||||||
JSL CountChestKeyLong
|
|
||||||
RTL
|
|
||||||
|
|
||||||
ItemDowngradeFixMain:
|
|
||||||
JSL.l AddInventory
|
JSL.l AddInventory
|
||||||
BMI .dontWrite ; thing we wrote over part 1
|
BMI .dontWrite ; thing we wrote over part 1
|
||||||
|
|
||||||
@@ -34,7 +29,7 @@ ItemDowngradeFixMain:
|
|||||||
.done
|
.done
|
||||||
STA.b [Scrap00] ; thing we wrote over part 2
|
STA.b [Scrap00] ; thing we wrote over part 2
|
||||||
.dontWrite
|
.dontWrite
|
||||||
RTS
|
RTL
|
||||||
.isPowerGloves
|
.isPowerGloves
|
||||||
.isBlueShield
|
.isBlueShield
|
||||||
.isRedShield
|
.isRedShield
|
||||||
@@ -43,7 +38,7 @@ RTS
|
|||||||
.isBowAndArrows
|
.isBowAndArrows
|
||||||
CMP.b [$00] : !BGE .done ; finished if we're upgrading
|
CMP.b [$00] : !BGE .done ; finished if we're upgrading
|
||||||
LDA.b [$00] ; reload old value
|
LDA.b [$00] ; reload old value
|
||||||
RTS
|
RTL
|
||||||
.isSilverArrowBow
|
.isSilverArrowBow
|
||||||
.isRedBoomerang
|
.isRedBoomerang
|
||||||
.isMagicPowder
|
.isMagicPowder
|
||||||
@@ -54,10 +49,10 @@ RTS
|
|||||||
LDA.b [Scrap00] : BNE + ; don't upgrade if we already have the toggle for it
|
LDA.b [Scrap00] : BNE + ; don't upgrade if we already have the toggle for it
|
||||||
PLA
|
PLA
|
||||||
STA.b [Scrap00]
|
STA.b [Scrap00]
|
||||||
RTS
|
RTL
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
RTS
|
RTL
|
||||||
.isSword
|
.isSword
|
||||||
PHA
|
PHA
|
||||||
LDA.l HighestSword : STA.b Scrap04
|
LDA.l HighestSword : STA.b Scrap04
|
||||||
@@ -77,5 +72,5 @@ JMP .done
|
|||||||
INC.b Scrap00
|
INC.b Scrap00
|
||||||
LDA.l HighestShield : STA.b [Scrap00]
|
LDA.l HighestShield : STA.b [Scrap00]
|
||||||
PLA
|
PLA
|
||||||
RTS
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
36
itemtext.asm
36
itemtext.asm
@@ -1,4 +1,4 @@
|
|||||||
org $328000
|
org $B28000
|
||||||
; You have found
|
; You have found
|
||||||
; the map of
|
; the map of
|
||||||
Notice_MapOf:
|
Notice_MapOf:
|
||||||
@@ -27,6 +27,11 @@ Notice_SmallKeyOf:
|
|||||||
db $75, $00, $BC, $00, $B6, $00, $AA, $00, $B5, $00, $B5, $00, $FF, $00, $B4, $00, $AE, $00, $C2, $00, $FF, $00, $BD, $00, $B8
|
db $75, $00, $BC, $00, $B6, $00, $AA, $00, $B5, $00, $B5, $00, $FF, $00, $B4, $00, $AE, $00, $C2, $00, $FF, $00, $BD, $00, $B8
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
|
;
|
||||||
|
Notice_Crystal:
|
||||||
|
db $74, $00, $C2, $00, $B8, $00, $BE, $00, $FF, $00, $B9, $00, $B2, $00, $AC, $00, $B4, $00, $AE, $00, $AD, $00, $FF, $00, $BE, $00, $B9
|
||||||
|
dw $7F7F
|
||||||
|
|
||||||
; light world
|
; light world
|
||||||
Notice_LightWorld:
|
Notice_LightWorld:
|
||||||
db $76, $00, $B5, $00, $B2, $00, $B0, $00, $B1, $00, $BD, $00, $FF, $00, $C0, $00, $B8, $00, $BB, $00, $B5, $00, $AD
|
db $76, $00, $B5, $00, $B2, $00, $B0, $00, $B1, $00, $BD, $00, $FF, $00, $C0, $00, $B8, $00, $BB, $00, $B5, $00, $AD
|
||||||
@@ -111,3 +116,32 @@ Notice_Sewers:
|
|||||||
Notice_Self:
|
Notice_Self:
|
||||||
db $76, $00, $BD, $00, $B1, $00, $B2, $00, $BC, $00, $FF, $00, $AD, $00, $BE, $00, $B7, $00, $B0, $00, $AE, $00, $B8, $00, $B7
|
db $76, $00, $BD, $00, $B1, $00, $B2, $00, $BC, $00, $FF, $00, $AD, $00, $BE, $00, $B7, $00, $B0, $00, $AE, $00, $B8, $00, $B7
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
|
; Crystal numbers
|
||||||
|
Notice_One:
|
||||||
|
db $75, $00, $AC, $00, $BB, $00, $C2, $00, $BC, $00, $BD, $00, $AA, $00, $B5, $00, $FF, $00, $B8, $00, $B7, $00, $AE
|
||||||
|
dw #$7F7F
|
||||||
|
|
||||||
|
Notice_Two:
|
||||||
|
db $75, $00, $AC, $00, $BB, $00, $C2, $00, $BC, $00, $BD, $00, $AA, $00, $B5, $00, $FF, $00, $BD, $00, $C0, $00, $B8
|
||||||
|
dw #$7F7F
|
||||||
|
|
||||||
|
Notice_Three:
|
||||||
|
db $75, $00, $AC, $00, $BB, $00, $C2, $00, $BC, $00, $BD, $00, $AA, $00, $B5, $00, $FF, $00, $BD, $00, $B1, $00, $BB, $00, $AE, $00, $AE
|
||||||
|
dw #$7F7F
|
||||||
|
|
||||||
|
Notice_Four:
|
||||||
|
db $75, $00, $AC, $00, $BB, $00, $C2, $00, $BC, $00, $BD, $00, $AA, $00, $B5, $00, $FF, $00, $AF, $00, $B8, $00, $BE, $00, $BB
|
||||||
|
dw #$7F7F
|
||||||
|
|
||||||
|
Notice_Five:
|
||||||
|
db $75, $00, $AC, $00, $BB, $00, $C2, $00, $BC, $00, $BD, $00, $AA, $00, $B5, $00, $FF, $00, $AF, $00, $B2, $00, $BF, $00, $AE
|
||||||
|
dw #$7F7F
|
||||||
|
|
||||||
|
Notice_Six:
|
||||||
|
db $75, $00, $AC, $00, $BB, $00, $C2, $00, $BC, $00, $BD, $00, $AA, $00, $B5, $00, $FF, $00, $BC, $00, $B2, $00, $C1
|
||||||
|
dw #$7F7F
|
||||||
|
|
||||||
|
Notice_Seven:
|
||||||
|
db $75, $00, $AC, $00, $BB, $00, $C2, $00, $BC, $00, $BD, $00, $AA, $00, $B5, $00, $FF, $00, $BC, $00, $AE, $00, $BF, $00, $AE, $00, $B7
|
||||||
|
dw #$7F7F
|
||||||
|
|||||||
@@ -1,113 +1,147 @@
|
|||||||
org $328000
|
org $B28000
|
||||||
; You have found
|
; You have found
|
||||||
; the map of
|
; the map of
|
||||||
Notice_MapOf:
|
Notice_MapOf:
|
||||||
db $74, $00, $C2, $00, $3E, $00, $44, $00, $FF, $00, $37, $00, $30, $00, $45, $00, $34, $00, $FF, $00, $35, $00, $3E, $00, $44, $00, $3D, $00, $33
|
db $74, $00, $C2, $00, $DE, $00, $E4, $00, $FF, $00, $D7, $00, $D0, $00, $E5, $00, $D4, $00, $FF, $00, $D5, $00, $DE, $00, $E4, $00, $DD, $00, $D3
|
||||||
db $75, $00, $43, $00, $37, $00, $34, $00, $FF, $00, $3C, $00, $30, $00, $3F, $00, $FF, $00, $3E, $00, $35
|
db $75, $00, $E3, $00, $D7, $00, $D4, $00, $FF, $00, $DC, $00, $D0, $00, $DF, $00, $FF, $00, $DE, $00, $D5
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; You have found
|
; You have found
|
||||||
; the compass of
|
; the compass of
|
||||||
Notice_CompassOf:
|
Notice_CompassOf:
|
||||||
db $74, $00, $C2, $00, $3E, $00, $44, $00, $FF, $00, $37, $00, $30, $00, $45, $00, $34, $00, $FF, $00, $35, $00, $3E, $00, $44, $00, $3D, $00, $33
|
db $74, $00, $C2, $00, $DE, $00, $E4, $00, $FF, $00, $D7, $00, $D0, $00, $E5, $00, $D4, $00, $FF, $00, $D5, $00, $DE, $00, $E4, $00, $DD, $00, $D3
|
||||||
db $75, $00, $43, $00, $37, $00, $34, $00, $FF, $00, $32, $00, $3E, $00, $3C, $00, $3F, $00, $30, $00, $42, $00, $42, $00, $FF, $00, $3E, $00, $35
|
db $75, $00, $E3, $00, $D7, $00, $D4, $00, $FF, $00, $D2, $00, $DE, $00, $DC, $00, $DF, $00, $D0, $00, $E2, $00, $E2, $00, $FF, $00, $DE, $00, $D5
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; Oh look! it's
|
; Oh look! it's
|
||||||
; the big key of
|
; the big key of
|
||||||
Notice_BigKeyOf:
|
Notice_BigKeyOf:
|
||||||
db $74, $00, $B8, $00, $37, $00, $FF, $00, $3B, $00, $3E, $00, $3E, $00, $3A, $00, $C7, $00, $FF, $00, $38, $00, $43, $00, $D8, $00, $42
|
db $74, $00, $B8, $00, $D7, $00, $FF, $00, $DB, $00, $DE, $00, $DE, $00, $DA, $00, $C7, $00, $FF, $00, $D8, $00, $E3, $00, $9D, $00, $E2
|
||||||
db $75, $00, $43, $00, $37, $00, $34, $00, $FF, $00, $31, $00, $38, $00, $36, $00, $FF, $00, $3A, $00, $34, $00, $48, $00, $FF, $00, $3E, $00, $35
|
db $75, $00, $E3, $00, $D7, $00, $D4, $00, $FF, $00, $D1, $00, $D8, $00, $D6, $00, $FF, $00, $DA, $00, $D4, $00, $E8, $00, $FF, $00, $DE, $00, $D5
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; this is a
|
; this is a
|
||||||
; small key to
|
; small key to
|
||||||
Notice_SmallKeyOf:
|
Notice_SmallKeyOf:
|
||||||
db $74, $00, $BD, $00, $37, $00, $38, $00, $42, $00, $FF, $00, $38, $00, $42, $00, $FF, $00, $30
|
db $74, $00, $BD, $00, $D7, $00, $D8, $00, $E2, $00, $FF, $00, $D8, $00, $E2, $00, $FF, $00, $D0
|
||||||
db $75, $00, $42, $00, $3C, $00, $30, $00, $3B, $00, $3B, $00, $FF, $00, $3A, $00, $34, $00, $48, $00, $FF, $00, $43, $00, $3e
|
db $75, $00, $E2, $00, $DC, $00, $D0, $00, $DB, $00, $DB, $00, $FF, $00, $DA, $00, $D4, $00, $E8, $00, $FF, $00, $E3, $00, $DE
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
|
; You picked up
|
||||||
|
Notice_Crystal:
|
||||||
|
db $74, $00, $C2, $00, $DE, $00, $E4, $00, $FF, $00, $DF, $00, $D8, $00, $D2, $00, $DA, $00, $D4, $00, $D3, $00, $FF, $00, $E4, $00, $DF
|
||||||
|
dw $7F7F
|
||||||
|
|
||||||
; light world
|
; light world
|
||||||
Notice_LightWorld:
|
Notice_LightWorld:
|
||||||
db $76, $00, $B5, $00, $38, $00, $36, $00, $37, $00, $43, $00, $FF, $00, $C0, $00, $3E, $00, $41, $00, $3B, $00, $33
|
db $76, $00, $B5, $00, $D8, $00, $D6, $00, $D7, $00, $E3, $00, $FF, $00, $C0, $00, $DE, $00, $E1, $00, $DB, $00, $D3
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; dark world
|
; dark world
|
||||||
Notice_DarkWorld:
|
Notice_DarkWorld:
|
||||||
db $76, $00, $AD, $00, $30, $00, $41, $00, $3A, $00, $FF, $00, $C0, $00, $3E, $00, $41, $00, $3B, $00, $33
|
db $76, $00, $AD, $00, $D0, $00, $E1, $00, $DA, $00, $FF, $00, $C0, $00, $DE, $00, $E1, $00, $DB, $00, $D3
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; Ganons Tower
|
; Ganons Tower
|
||||||
Notice_GTower:
|
Notice_GTower:
|
||||||
db $76, $00, $B0, $00, $30, $00, $3D, $00, $3E, $00, $3D, $00, $42, $00, $FF, $00, $BD, $00, $3E, $00, $46, $00, $34, $00, $41
|
db $76, $00, $B0, $00, $D0, $00, $DD, $00, $DE, $00, $DD, $00, $E2, $00, $FF, $00, $BD, $00, $DE, $00, $E6, $00, $D4, $00, $E1
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; Turtle Rock
|
; Turtle Rock
|
||||||
Notice_TRock:
|
Notice_TRock:
|
||||||
db $76, $00, $BD, $00, $44, $00, $41, $00, $43, $00, $3B, $00, $34, $00, $FF, $00, $BB, $00, $3E, $00, $32, $00, $3a
|
db $76, $00, $BD, $00, $E4, $00, $E1, $00, $E3, $00, $DB, $00, $D4, $00, $FF, $00, $BB, $00, $DE, $00, $D2, $00, $DA
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; Thieves Town
|
; Thieves Town
|
||||||
Notice_Thieves:
|
Notice_Thieves:
|
||||||
db $76, $00, $BD, $00, $37, $00, $38, $00, $34, $00, $45, $00, $34, $00, $42, $00, $FF, $00, $BD, $00, $3E, $00, $46, $00, $3d
|
db $76, $00, $BD, $00, $D7, $00, $D8, $00, $D4, $00, $E5, $00, $D4, $00, $E2, $00, $FF, $00, $BD, $00, $DE, $00, $E6, $00, $DD
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; Tower of Hera
|
; Tower of Hera
|
||||||
Notice_Hera:
|
Notice_Hera:
|
||||||
db $76, $00, $BD, $00, $3E, $00, $46, $00, $34, $00, $41, $00, $FF, $00, $3E, $00, $35, $00, $FF, $00, $B1, $00, $34, $00, $41, $00, $30
|
db $76, $00, $BD, $00, $DE, $00, $E6, $00, $D4, $00, $E1, $00, $FF, $00, $DE, $00, $D5, $00, $FF, $00, $B1, $00, $D4, $00, $E1, $00, $D0
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; Ice Palace
|
; Ice Palace
|
||||||
Notice_Ice:
|
Notice_Ice:
|
||||||
db $76, $00, $B2, $00, $32, $00, $34, $00, $FF, $00, $B9, $00, $30, $00, $3B, $00, $30, $00, $32, $00, $34
|
db $76, $00, $B2, $00, $D2, $00, $D4, $00, $FF, $00, $B9, $00, $D0, $00, $DB, $00, $D0, $00, $D2, $00, $D4
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; Skull Woods
|
; Skull Woods
|
||||||
Notice_Skull:
|
Notice_Skull:
|
||||||
db $76, $00, $BC, $00, $3A, $00, $44, $00, $3B, $00, $3B, $00, $FF, $00, $C0, $00, $3E, $00, $3E, $00, $33, $00, $42
|
db $76, $00, $BC, $00, $DA, $00, $E4, $00, $DB, $00, $DB, $00, $FF, $00, $C0, $00, $DE, $00, $DE, $00, $D3, $00, $E2
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; Misery Mire
|
; Misery Mire
|
||||||
Notice_Mire:
|
Notice_Mire:
|
||||||
db $76, $00, $B6, $00, $38, $00, $42, $00, $34, $00, $41, $00, $48, $00, $FF, $00, $B6, $00, $38, $00, $41, $00, $34
|
db $76, $00, $B6, $00, $D8, $00, $E2, $00, $D4, $00, $E1, $00, $E8, $00, $FF, $00, $B6, $00, $D8, $00, $E1, $00, $D4
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; Dark Palace
|
; Dark Palace
|
||||||
Notice_PoD:
|
Notice_PoD:
|
||||||
db $76, $00, $AD, $00, $30, $00, $41, $00, $3A, $00, $FF, $00, $B9, $00, $30, $00, $3B, $00, $30, $00, $32, $00, $34
|
db $76, $00, $AD, $00, $D0, $00, $E1, $00, $DA, $00, $FF, $00, $B9, $00, $D0, $00, $DB, $00, $D0, $00, $D2, $00, $D4
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; Swamp Palace
|
; Swamp Palace
|
||||||
Notice_Swamp:
|
Notice_Swamp:
|
||||||
db $76, $00, $BC, $00, $46, $00, $30, $00, $3C, $00, $3F, $00, $FF, $00, $B9, $00, $30, $00, $3B, $00, $30, $00, $32, $00, $34
|
db $76, $00, $BC, $00, $E6, $00, $D0, $00, $DC, $00, $DF, $00, $FF, $00, $B9, $00, $D0, $00, $DB, $00, $D0, $00, $D2, $00, $D4
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; Castle Tower
|
; Castle Tower
|
||||||
Notice_AgaTower:
|
Notice_AgaTower:
|
||||||
db $76, $00, $AC, $00, $30, $00, $42, $00, $43, $00, $3B, $00, $34, $00, $FF, $00, $BD, $00, $3E, $00, $46, $00, $34, $00, $41
|
db $76, $00, $AC, $00, $D0, $00, $E2, $00, $E3, $00, $DB, $00, $D4, $00, $FF, $00, $BD, $00, $DE, $00, $E6, $00, $D4, $00, $E1
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; Desert Palace
|
; Desert Palace
|
||||||
Notice_Desert:
|
Notice_Desert:
|
||||||
db $76, $00, $AD, $00, $34, $00, $42, $00, $34, $00, $41, $00, $43, $00, $FF, $00, $B9, $00, $30, $00, $3B, $00, $30, $00, $32, $00, $34
|
db $76, $00, $AD, $00, $D4, $00, $E2, $00, $D4, $00, $E1, $00, $E3, $00, $FF, $00, $B9, $00, $D0, $00, $DB, $00, $D0, $00, $D2, $00, $D4
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; Eastern Palace
|
; Eastern Palace
|
||||||
Notice_Eastern:
|
Notice_Eastern:
|
||||||
db $76, $00, $AE, $00, $30, $00, $42, $00, $43, $00, $34, $00, $41, $00, $3D, $00, $FF, $00, $B9, $00, $30, $00, $3B, $00, $30, $00, $32, $00, $34
|
db $76, $00, $AE, $00, $D0, $00, $E2, $00, $E3, $00, $D4, $00, $E1, $00, $DD, $00, $FF, $00, $B9, $00, $D0, $00, $DB, $00, $D0, $00, $D2, $00, $D4
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; Hyrule Castle
|
; Hyrule Castle
|
||||||
Notice_Castle:
|
Notice_Castle:
|
||||||
db $76, $00, $B1, $00, $48, $00, $41, $00, $44, $00, $3B, $00, $34, $00, $FF, $00, $AC, $00, $30, $00, $42, $00, $43, $00, $3B, $00, $34
|
db $76, $00, $B1, $00, $E8, $00, $E1, $00, $E4, $00, $DB, $00, $D4, $00, $FF, $00, $AC, $00, $D0, $00, $E2, $00, $E3, $00, $DB, $00, $D4
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; Hyrule Castle
|
; Hyrule Castle
|
||||||
Notice_Sewers:
|
Notice_Sewers:
|
||||||
db $76, $00, $B1, $00, $48, $00, $41, $00, $44, $00, $3B, $00, $34, $00, $FF, $00, $AC, $00, $30, $00, $42, $00, $43, $00, $3B, $00, $34
|
db $76, $00, $B1, $00, $E8, $00, $E1, $00, $E4, $00, $DB, $00, $D4, $00, $FF, $00, $AC, $00, $D0, $00, $E2, $00, $E3, $00, $DB, $00, $D4
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
; This Dungeon
|
; This Dungeon
|
||||||
Notice_Self:
|
Notice_Self:
|
||||||
db $76, $00, $43, $00, $37, $00, $38, $00, $42, $00, $FF, $00, $33, $00, $44, $00, $3D, $00, $36, $00, $34, $00, $3E, $00, $3d
|
db $76, $00, $E3, $00, $D7, $00, $D8, $00, $E2, $00, $FF, $00, $D3, $00, $E4, $00, $DD, $00, $D6, $00, $D4, $00, $DE, $00, $Dd
|
||||||
dw #$7F7F
|
dw #$7F7F
|
||||||
|
|
||||||
|
; Crystal numbers
|
||||||
|
Notice_One:
|
||||||
|
db $75, $00, $D2, $00, $E1, $00, $E8, $00, $E2, $00, $E3, $00, $D0, $00, $DB, $00, $FF, $00, $DE, $00, $DD, $00, $D4
|
||||||
|
dw #$7F7F
|
||||||
|
|
||||||
|
Notice_Two:
|
||||||
|
db $75, $00, $D2, $00, $E1, $00, $E8, $00, $E2, $00, $E3, $00, $D0, $00, $DB, $00, $FF, $00, $E3, $00, $E6, $00, $DE
|
||||||
|
dw #$7F7F
|
||||||
|
|
||||||
|
Notice_Three:
|
||||||
|
db $75, $00, $D2, $00, $E1, $00, $E8, $00, $E2, $00, $E3, $00, $D0, $00, $DB, $00, $FF, $00, $E3, $00, $D7, $00, $E1, $00, $D4, $00, $D4
|
||||||
|
dw #$7F7F
|
||||||
|
|
||||||
|
Notice_Four:
|
||||||
|
db $75, $00, $D2, $00, $E1, $00, $E8, $00, $E2, $00, $E3, $00, $D0, $00, $DB, $00, $FF, $00, $D5, $00, $DE, $00, $E4, $00, $E1
|
||||||
|
dw #$7F7F
|
||||||
|
|
||||||
|
Notice_Five:
|
||||||
|
db $75, $00, $D2, $00, $E1, $00, $E8, $00, $E2, $00, $E3, $00, $D0, $00, $DB, $00, $FF, $00, $D5, $00, $D8, $00, $E5, $00, $D4
|
||||||
|
dw #$7F7F
|
||||||
|
|
||||||
|
Notice_Six:
|
||||||
|
db $75, $00, $D2, $00, $E1, $00, $E8, $00, $E2, $00, $E3, $00, $D0, $00, $DB, $00, $FF, $00, $E2, $00, $D8, $00, $E7
|
||||||
|
dw #$7F7F
|
||||||
|
|
||||||
|
Notice_Seven:
|
||||||
|
db $75, $00, $D2, $00, $E1, $00, $E8, $00, $E2, $00, $E3, $00, $D0, $00, $DB, $00, $FF, $00, $E2, $00, $D4, $00, $E5, $00, $D4, $00, $DD
|
||||||
|
dw #$7F7F
|
||||||
|
|||||||
@@ -14,5 +14,5 @@ MaidenCrystalScript:
|
|||||||
LDA.l CrystalsField : AND.b #$7F : CMP.b #$7F : BNE + ; check if we have all crystals
|
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
|
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
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
10
music.asm
10
music.asm
@@ -103,7 +103,7 @@ Overworld_FinishMirrorWarp:
|
|||||||
LDA.w #$0000 : STA.l FadeTimer : STA.l FadeDirection
|
LDA.w #$0000 : STA.l FadeTimer : STA.l FadeDirection
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
JSL $00D7C8
|
JSL $80D7C8
|
||||||
LDA.b #$80 : STA.b HDMAENQ
|
LDA.b #$80 : STA.b HDMAENQ
|
||||||
LDX.b #$04 ; bunny theme
|
LDX.b #$04 ; bunny theme
|
||||||
|
|
||||||
@@ -245,10 +245,10 @@ RTL
|
|||||||
;
|
;
|
||||||
; On entry, A = $8A (overworld area being loaded)
|
; On entry, A = $8A (overworld area being loaded)
|
||||||
Overworld_MosaicDarkWorldChecks:
|
Overworld_MosaicDarkWorldChecks:
|
||||||
CMP.b #$40 : beq .checkCrystals
|
CMP.b #$40 : BEQ .checkCrystals
|
||||||
CMP.b #$42 : beq .checkCrystals
|
CMP.b #$42 : BEQ .checkCrystals
|
||||||
CMP.b #$50 : beq .checkCrystals
|
CMP.b #$50 : BEQ .checkCrystals
|
||||||
CMP.b #$51 : bne .doFade
|
CMP.b #$51 : BNE .doFade
|
||||||
|
|
||||||
.checkCrystals
|
.checkCrystals
|
||||||
LDA.l CrystalsField : CMP.b #$7F : BEQ .done
|
LDA.l CrystalsField : CMP.b #$7F : BEQ .done
|
||||||
|
|||||||
704
newhud.asm
704
newhud.asm
@@ -1,273 +1,515 @@
|
|||||||
|
!InfiniteTile = $2431
|
||||||
|
!BlankTile = $207F
|
||||||
|
!SlashTile = $2830
|
||||||
|
!PTile = $296C
|
||||||
|
!CTile = $295F
|
||||||
|
|
||||||
NewDrawHud:
|
NewDrawHud:
|
||||||
|
PHB
|
||||||
|
|
||||||
SEP #$30
|
SEP #$30
|
||||||
;================================================================================
|
REP #$10
|
||||||
; Draw bomb count
|
|
||||||
;================================================================================
|
|
||||||
|
|
||||||
LDA.l InfiniteBombs : BNE .infinite_bombs
|
LDA.b #$7E
|
||||||
.finite_bombs
|
PHA : PLB
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE .normal
|
|
||||||
LDA.l SpecialWeaponLevel : BEQ .no_bombs
|
|
||||||
.normal
|
|
||||||
LDA.l BombsEquipment ; bombs
|
|
||||||
JSR HudHexToDec2Digit ; requires 8 bit registers!
|
|
||||||
REP #$20
|
|
||||||
LDX.b Scrap06 : TXA : ORA.w #$2400 : STA.l HUDBombCount ; Draw bombs 10 digit
|
|
||||||
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDBombCount+2 ; Draw bombs 1 digit
|
|
||||||
BRA +
|
|
||||||
|
|
||||||
.no_bombs
|
|
||||||
REP #$20
|
|
||||||
LDA.w #$207F : STA HUDBombCount
|
|
||||||
STA HUDBombCount+2
|
|
||||||
BRA +
|
|
||||||
|
|
||||||
.infinite_bombs
|
|
||||||
REP #$20
|
|
||||||
LDA.w #$2431 : STA.l HUDBombCount ; infinity (left half)
|
|
||||||
INC A : STA.l HUDBombCount+2 ; infinity (right half)
|
|
||||||
+
|
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Draw rupee counter
|
NewHUD_DrawBombs:
|
||||||
;================================================================================
|
LDA.l InfiniteBombs : BNE .infinite
|
||||||
|
LDA.l SpecialWeapons : CMP #$01 : BNE .normal
|
||||||
LDA.l DisplayRupees ; Drawing bombs (above) always ends with 16-bit A, so, no need to REP here
|
LDA.l SpecialWeaponLevel : BEQ .no_bombs
|
||||||
JSR HudHexToDec4Digit
|
|
||||||
LDX.b Scrap04 : TXA : ORA.w #$2400 : STA.l HUDRupees ; 1000s
|
|
||||||
LDX.b Scrap05 : TXA : ORA.w #$2400 : STA.l HUDRupees+2 ; 100s
|
|
||||||
LDX.b Scrap06 : TXA : ORA.w #$2400 : STA.l HUDRupees+4 ; 10s
|
|
||||||
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDRupees+6 ; 1s
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; Draw arrow count
|
|
||||||
;================================================================================
|
|
||||||
|
|
||||||
|
.infinite
|
||||||
|
LDY.w #!InfiniteTile+0
|
||||||
|
LDX.w #!InfiniteTile+1
|
||||||
|
BRA .draw
|
||||||
|
|
||||||
|
.no_bombs
|
||||||
|
LDY.w #!BlankTile
|
||||||
|
LDX.w #!BlankTile
|
||||||
|
BRA .draw
|
||||||
|
|
||||||
|
.normal
|
||||||
|
LDA.w BombsEquipment
|
||||||
|
JSR HUDHex2Digit
|
||||||
|
|
||||||
|
.draw
|
||||||
|
STY.w HUDBombCount+0
|
||||||
|
STX.w HUDBombCount+2
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
NewHUD_DrawRupees:
|
||||||
|
REP #$20
|
||||||
|
|
||||||
|
LDA.w DisplayRupees
|
||||||
|
JSR HUDHex4Digit
|
||||||
|
|
||||||
|
LDA.b Scrap04 : TAX : STX.w HUDRupees+0 ; 1000s
|
||||||
|
LDA.b Scrap05 : TAX : STX.w HUDRupees+2 ; 100s
|
||||||
|
LDA.b Scrap06 : TAX : STX.w HUDRupees+4 ; 10s
|
||||||
|
LDA.b Scrap07 : TAX : STX.w HUDRupees+6 ; 1s
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
NewHUD_DrawArrows:
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.l ArrowMode : BNE +
|
|
||||||
LDA.l InfiniteArrows : BNE .infinite_arrows
|
LDA.l ArrowMode : BNE NewHUD_DrawGoal
|
||||||
.finite_arrows
|
LDA.l InfiniteArrows : BEQ .finite
|
||||||
LDA.l CurrentArrows ; arrows
|
|
||||||
JSR HudHexToDec2Digit
|
.infinite
|
||||||
REP #$20
|
LDY.w #!InfiniteTile+0
|
||||||
LDX.b Scrap06 : TXA : ORA.w #$2400 : STA.l HUDArrowCount ; Draw arrows 10 digit
|
LDX.w #!InfiniteTile+1
|
||||||
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDArrowCount+2 ; Draw arrows 1 digit
|
BRA .draw
|
||||||
BRA +
|
|
||||||
|
.finite
|
||||||
.infinite_arrows
|
LDA.w CurrentArrows
|
||||||
REP #$20
|
JSR HUDHex2Digit
|
||||||
LDA.w #$2431 : STA.l HUDArrowCount ; infinity (left half)
|
|
||||||
INC A : STA.l HUDArrowCount+2 ; infinity (right half)
|
.draw
|
||||||
+
|
STY.w HUDArrowCount+0
|
||||||
|
STX.w HUDArrowCount+2
|
||||||
;================================================================================
|
|
||||||
; Draw Goal Item Indicator
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
NewHUD_DrawGoal:
|
||||||
|
REP #$20
|
||||||
|
LDA.w UpdateHUD : BEQ .no_goal
|
||||||
|
LDA.l GoalItemRequirement : BEQ .no_goal
|
||||||
|
|
||||||
|
LDA.l GoalItemIcon : STA.w HUDGoalIndicator
|
||||||
|
LDA.w #!SlashTile : STA.w HUDGoalIndicator+8
|
||||||
|
LDA.l GoalCounter
|
||||||
|
JSR HUDHex4Digit
|
||||||
|
|
||||||
|
LDA.b Scrap05 : TAX : STX.w HUDGoalIndicator+2 ; draw 100's digit
|
||||||
|
LDA.b Scrap06 : TAX : STX.w HUDGoalIndicator+4 ; draw 10's digit
|
||||||
|
LDA.b Scrap07 : TAX : STX.w HUDGoalIndicator+6 ; draw 1's digit
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.l GoalItemRequirement : BNE + : JMP .done : + ; Star Meter
|
|
||||||
|
|
||||||
LDA.l GoalCounter
|
LDA.l GoalItemRequirement : CMP.w #$FFFF : BNE .real_goal
|
||||||
JSR HudHexToDec4Digit
|
|
||||||
|
|
||||||
LDA.l GoalItemIcon : STA.l HUDGoalIndicator ; draw star icon
|
LDX.w #!BlankTile
|
||||||
|
STX.w HUDGoalIndicator+10
|
||||||
LDX.b Scrap05 : TXA : ORA.w #$2400 : STA.l HUDGoalIndicator+2 ; draw 100's digit
|
STX.w HUDGoalIndicator+12
|
||||||
LDX.b Scrap06 : TXA : ORA.w #$2400 : STA.l HUDGoalIndicator+4 ; draw 10's digit
|
STX.w HUDGoalIndicator+14
|
||||||
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDGoalIndicator+6 ; draw 1's digit
|
|
||||||
|
|
||||||
LDA.l GoalItemRequirement : CMP.w #$FFFF : BEQ .skip
|
|
||||||
LDA.l GoalItemRequirement
|
|
||||||
JSR HudHexToDec4Digit
|
|
||||||
LDA.w #$2830 : STA.l HUDGoalIndicator+8 ; draw slash
|
|
||||||
LDX.b Scrap05 : TXA : ORA.w #$2400 : STA.l HUDGoalIndicator+10 ; draw 100's digit
|
|
||||||
LDX.b Scrap06 : TXA : ORA.w #$2400 : STA.l HUDGoalIndicator+12 ; draw 10's digit
|
|
||||||
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDGoalIndicator+14 ; draw 1's digit
|
|
||||||
BRA .done
|
|
||||||
.skip
|
|
||||||
LDA.w #$207F ; transparent tile
|
|
||||||
STA.l HUDGoalIndicator+8
|
|
||||||
STA.l HUDGoalIndicator+10
|
|
||||||
STA.l HUDGoalIndicator+12
|
|
||||||
.done
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; Draw Dungeon Compass Counts
|
|
||||||
;================================================================================
|
|
||||||
LDA.l CompassMode : ORA.l MapHUDMode : BIT #$0003 : BEQ +
|
|
||||||
JSL.l DrawDungeonItemCounts ; compasses.asm
|
|
||||||
+
|
|
||||||
|
|
||||||
;================================================================================
|
.no_goal
|
||||||
; Draw key count
|
|
||||||
;================================================================================
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.l CurrentSmallKeys : CMP.b #$FF : BEQ .not_in_dungeon
|
BRA NewHUD_DrawKeys
|
||||||
.in_dungeon
|
|
||||||
JSR HudHexToDec2Digit : REP #$20
|
|
||||||
|
|
||||||
; if 10s digit is 0, draw transparent tile instead of 0
|
|
||||||
LDX.b Scrap06 : TXA : CPX.b #$90 : BNE +
|
|
||||||
LDA.w #$007F
|
|
||||||
+
|
|
||||||
ORA.w #$2400 : STA.l HUDKeyDigits
|
|
||||||
|
|
||||||
; 1s digit
|
|
||||||
LDX.b Scrap07 : TXA : ORA.w #$2400 : STA.l HUDKeyDigits+2
|
|
||||||
BRA .done_keys
|
|
||||||
|
|
||||||
.not_in_dungeon
|
|
||||||
REP #$20
|
|
||||||
|
|
||||||
;in the overworld, draw transparent tiles instead of key count
|
|
||||||
LDA.w #$247F : STA.l HUDKeyDigits : STA.l HUDKeyDigits+2
|
|
||||||
STA.l HUDKeyIcon
|
|
||||||
|
|
||||||
.done_keys
|
|
||||||
|
|
||||||
|
.real_goal
|
||||||
|
JSR HUDHex4Digit
|
||||||
|
|
||||||
|
LDA.b Scrap05 : TAX : STX.w HUDGoalIndicator+10 ; draw 100's digit
|
||||||
|
LDA.b Scrap06 : TAX : STX.w HUDGoalIndicator+12 ; draw 10's digit
|
||||||
|
LDA.b Scrap07 : TAX : STX.w HUDGoalIndicator+14 ; draw 1's digit
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
NewHUD_DrawKeys:
|
||||||
|
LDA.l CurrentSmallKeys
|
||||||
|
CMP.b #$FF
|
||||||
|
BNE .in_dungeon
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
LDY.w #!BlankTile
|
||||||
; Draw pendant/crystal icon
|
STY.w HUDKeyIcon
|
||||||
;--------------------------------------------------------------------------------
|
STY.w HUDKeyDigits+0
|
||||||
!P_ICON = $296C
|
STY.w HUDKeyDigits+2
|
||||||
!C_ICON = $295F
|
BRA NewHUD_DrawDungeonCounters
|
||||||
|
|
||||||
|
.in_dungeon
|
||||||
|
JSR HUDHex2Digit
|
||||||
|
CPY.w #$2490
|
||||||
|
BNE .real_10s
|
||||||
|
|
||||||
|
LDY.w #!BlankTile
|
||||||
|
|
||||||
|
.real_10s
|
||||||
|
STY.w HUDKeyDigits+0
|
||||||
|
STX.w HUDKeyDigits+2
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
NewHUD_DrawDungeonCounters:
|
||||||
|
LDA.w UpdateHUD : BEQ NewHUD_DrawPrizeIcon
|
||||||
|
LDA.l CompassMode : ORA.l MapHUDMode : BIT.b #$03 : BEQ NewHUD_DrawPrizeIcon
|
||||||
|
LDX.b IndoorsFlag : BNE +
|
||||||
|
JMP.w NewHUD_DrawMagicMeter
|
||||||
|
+
|
||||||
|
SEP #$30
|
||||||
|
; extra hard safeties for getting dungeon ID to prevent crashes
|
||||||
|
LDA.w DungeonID
|
||||||
|
CMP.b #$1B : BCS NewHUD_DrawPrizeIcon ; Skip if not in a valid dungeon ID
|
||||||
|
AND.b #$FE : TAX
|
||||||
|
LSR : TAY
|
||||||
|
PHX : PHY
|
||||||
|
|
||||||
|
JSR.w DrawCompassCounts
|
||||||
|
SEP #$10
|
||||||
|
PLY : PLX
|
||||||
|
JSR.w DrawMapCounts
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
NewHUD_DrawPrizeIcon:
|
||||||
|
REP #$10
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.b IndoorsFlag : BEQ .noprize
|
LDA.b GameMode
|
||||||
|
CMP.b #$12 : BEQ .no_prize
|
||||||
|
CMP.b #$0E : BEQ +
|
||||||
|
LDA.w UpdateHUD : BEQ NewHUD_DrawItemCounter
|
||||||
|
+
|
||||||
|
LDA.w DungeonID
|
||||||
|
CMP.b #$1A : BCS .no_prize
|
||||||
|
CMP.b #$04 : BCC .no_prize
|
||||||
|
CMP.b #$08 : BNE .dungeon
|
||||||
|
|
||||||
LDX.w DungeonID
|
.no_prize
|
||||||
CPX #$1A : !BGE .noprize
|
LDY.w #!BlankTile
|
||||||
CPX #$04 : !BLT .noprize
|
BRA .draw_prize
|
||||||
CPX #$08 : BEQ .noprize
|
|
||||||
|
|
||||||
LDA.b GameMode : CMP.b #$12 : BEQ .noprize
|
|
||||||
|
|
||||||
|
.dungeon
|
||||||
|
SEP #$30
|
||||||
|
TAX
|
||||||
|
LSR
|
||||||
|
TAY
|
||||||
LDA.l MapMode
|
LDA.l MapMode
|
||||||
REP #$20
|
|
||||||
BEQ .drawprize
|
REP #$30
|
||||||
|
BEQ .prize
|
||||||
|
|
||||||
LDA.l MapField
|
LDA.l MapField
|
||||||
AND.l DungeonItemMasks,X
|
AND.l DungeonItemMasks,X
|
||||||
BEQ .noprize
|
BEQ .no_prize
|
||||||
|
|
||||||
.drawprize
|
.prize
|
||||||
TXA : LSR : TAX
|
TYX
|
||||||
LDA.l CrystalPendantFlags_2, X
|
LDA.l CrystalPendantFlags_2,X
|
||||||
AND.w #$0040 : BNE .is_crystal
|
BIT.w #$0080
|
||||||
|
BNE .no_icon
|
||||||
|
|
||||||
LDA.w #!P_ICON
|
BIT.w #$0040
|
||||||
BRA .doneprize
|
BNE .crystal
|
||||||
|
|
||||||
.is_crystal
|
LDY.w #!PTile
|
||||||
LDA.w #!C_ICON
|
BRA .draw_prize
|
||||||
BRA .doneprize
|
|
||||||
|
|
||||||
.noprize
|
.crystal
|
||||||
|
LDY.w #!CTile
|
||||||
|
BRA .draw_prize
|
||||||
|
|
||||||
|
.no_icon
|
||||||
|
LDY.w #!BlankTile
|
||||||
|
|
||||||
|
.draw_prize
|
||||||
|
STY.w HUDPrizeIcon
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
NewHUD_DrawItemCounter:
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w #$207F
|
LDA.w UpdateHUD : BEQ NewHUD_DrawMagicMeter
|
||||||
|
LDA.l ItemCounterHUD : AND.w #$00FF : BEQ NewHUD_DrawMagicMeter
|
||||||
|
LDA.w #!SlashTile : STA.w HUDGoalIndicator+$08
|
||||||
|
LDA.l TotalItemCount : CMP.w #1000 : BCS .item_four_digits
|
||||||
|
LDA.w TotalItemCountTiles+$02 : STA.w HUDGoalIndicator+$0A
|
||||||
|
LDA.w TotalItemCountTiles+$04 : STA.w HUDGoalIndicator+$0C
|
||||||
|
LDA.w TotalItemCountTiles+$06 : STA.w HUDGoalIndicator+$0E
|
||||||
|
|
||||||
.doneprize
|
LDA.w TotalItemCounter
|
||||||
STA.l HUDPrizeIcon
|
JSR.w HUDHex4Digit
|
||||||
|
LDA.b $05 : TAX : STX.w HUDGoalIndicator+$02
|
||||||
|
LDA.b $06 : TAX : STX.w HUDGoalIndicator+$04
|
||||||
|
LDA.b $07 : TAX : STX.w HUDGoalIndicator+$06
|
||||||
|
BRA NewHUD_DrawMagicMeter
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
.item_four_digits
|
||||||
; Draw Magic Meter
|
LDA.w TotalItemCountTiles+$00 : STA.w HUDGoalIndicator+$0A
|
||||||
|
LDA.w TotalItemCountTiles+$02 : STA.w HUDGoalIndicator+$0C
|
||||||
|
LDA.w TotalItemCountTiles+$04 : STA.w HUDGoalIndicator+$0E
|
||||||
|
LDA.w TotalItemCountTiles+$06 : STA.w HUDGoalIndicator+$10
|
||||||
|
|
||||||
|
LDA.w TotalItemCounter
|
||||||
|
JSR.w HUDHex4Digit
|
||||||
|
LDA.b $04 : TAX : STX.w HUDGoalIndicator+$00
|
||||||
|
LDA.b $05 : TAX : STX.w HUDGoalIndicator+$02
|
||||||
|
LDA.b $06 : TAX : STX.w HUDGoalIndicator+$04
|
||||||
|
LDA.b $07 : TAX : STX.w HUDGoalIndicator+$06
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
DrawMagicMeter_mp_tilemap = $0DFE0F
|
DrawMagicMeter_mp_tilemap = $0DFE0F
|
||||||
;--------------------------------------------------------------------------------
|
NewHUD_DrawMagicMeter:
|
||||||
LDA.l CurrentMagic : AND.w #$00FF ; crap we wrote over when placing the hook for OnDrawHud
|
SEP #$31
|
||||||
!ADD #$0007
|
LDA.l CurrentMagic
|
||||||
AND.w #$FFF8
|
ADC.b #$06 ; carry set by above for +1 to get +7
|
||||||
TAX ; end of crap
|
AND.b #$F8
|
||||||
|
TAY
|
||||||
LDA.l InfiniteMagic : AND.w #$00FF : BNE + : JMP .green : +
|
|
||||||
SEP #$20 : LDA.b #$80 : STA.l CurrentMagic : REP #$30 ; set magic to max
|
LDA.l InfiniteMagic
|
||||||
LDX.w #$0080 ; load full magic meter graphics
|
BEQ .set_index
|
||||||
LDA.b FrameCounter : AND.w #$000C : LSR #2
|
|
||||||
BEQ .red
|
.infinite_magic
|
||||||
CMP.w #0001 : BEQ .yellow
|
LDA.b #$80
|
||||||
CMP.w #0002 : BNE + : JMP .green : +
|
STA.w CurrentMagic
|
||||||
.blue
|
TAY
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+0, X : AND.w #$EFFF : STA.l HUDTileMapBuffer+$46
|
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+2, X : AND.w #$EFFF : STA.l HUDTileMapBuffer+$86
|
LDA.b FrameCounter
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+4, X : AND.w #$EFFF : STA.l HUDTileMapBuffer+$C6
|
REP #$30
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+6, X : AND.w #$EFFF : STA.l HUDTileMapBuffer+$06
|
AND.w #$000C
|
||||||
RTL
|
LSR
|
||||||
.red
|
BRA .recolor
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+0, X : AND.w #$E7FF : STA.l HUDTileMapBuffer+$46
|
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+2, X : AND.w #$E7FF : STA.l HUDTileMapBuffer+$86
|
.set_index ; this branch is always 0000 when taken
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+4, X : AND.w #$E7FF : STA.l HUDTileMapBuffer+$C6
|
REP #$30
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+6, X : AND.w #$E7FF : STA.l HUDTileMapBuffer+$06
|
TDC
|
||||||
RTL
|
.recolor
|
||||||
.yellow
|
TAX
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+0, X : AND.w #$EBFF : STA.l HUDTileMapBuffer+$46
|
LDA.l MagicMeterColorMasks,X
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+2, X : AND.w #$EBFF : STA.l HUDTileMapBuffer+$86
|
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+4, X : AND.w #$EBFF : STA.l HUDTileMapBuffer+$C6
|
TYX
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+6, X : AND.w #$EBFF : STA.l HUDTileMapBuffer+$0106
|
TAY : AND.l DrawMagicMeter_mp_tilemap+0,X : STA.w HUDTileMapBuffer+$046
|
||||||
RTL
|
TYA : AND.l DrawMagicMeter_mp_tilemap+2,X : STA.w HUDTileMapBuffer+$086
|
||||||
.orange
|
TYA : AND.l DrawMagicMeter_mp_tilemap+4,X : STA.w HUDTileMapBuffer+$0C6
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+0, X : AND.w #$E3FF : STA.l HUDTileMapBuffer+$46
|
TYA : AND.l DrawMagicMeter_mp_tilemap+6,X : STA.w HUDTileMapBuffer+$106
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+2, X : AND.w #$E3FF : STA.l HUDTileMapBuffer+$86
|
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+4, X : AND.w #$E3FF : STA.l HUDTileMapBuffer+$C6
|
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+6, X : AND.w #$E3FF : STA.l HUDTileMapBuffer+$0106
|
|
||||||
RTL
|
|
||||||
.green
|
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+0, X : STA.l HUDTileMapBuffer+$46
|
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+2, X : STA.l HUDTileMapBuffer+$86
|
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+4, X : STA.l HUDTileMapBuffer+$C6
|
|
||||||
LDA.l DrawMagicMeter_mp_tilemap+6, X : STA.l HUDTileMapBuffer+$0106
|
|
||||||
RTL
|
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; 16-bit A, 8-bit X
|
NewHUD_DoneDrawing:
|
||||||
; in: A(b) - Byte to Convert
|
STZ.w UpdateHUD
|
||||||
; out: $04 - $07 (high - low)
|
PLB
|
||||||
|
RTL
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
HudHexToDec4Digit:
|
MagicMeterColorMasks:
|
||||||
LDY.b #$90
|
dw $FFFF ; green - KEEP GREEN FIRST
|
||||||
-
|
dw $EFFF ; blue
|
||||||
CMP.w #1000 : !BLT +
|
dw $E7FF ; red
|
||||||
INY
|
dw $EBFF ; yellow
|
||||||
SBC.w #1000 : BRA -
|
dw $E3FF ; orange
|
||||||
+
|
|
||||||
STY.b Scrap04 : LDY.b #$90 ; Store 1000s digit & reset Y
|
;================================================================================
|
||||||
-
|
DrawCompassCounts:
|
||||||
CMP.w #100 : !BLT +
|
LDA.l CompassMode : BEQ .done
|
||||||
INY
|
|
||||||
SBC.w #100 : BRA -
|
; no compass needed if this bit is set
|
||||||
+
|
BIT.b #$02 : BNE .draw_compass_count
|
||||||
STY.b Scrap05 : LDY.b #$90 ; Store 100s digit & reset Y
|
REP #$20
|
||||||
-
|
LDA.l CompassField : AND.l DungeonItemMasks,X : BEQ .done
|
||||||
CMP.w #10 : !BLT +
|
|
||||||
INY
|
.draw_compass_count
|
||||||
SBC.w #10 : BRA -
|
SEP #$20
|
||||||
+
|
TYX : BNE .not_sewers
|
||||||
STY.b Scrap06 : LDY.b #$90 ; Store 10s digit & reset Y
|
INX
|
||||||
CMP.w #1 : !BLT +
|
|
||||||
-
|
.not_sewers
|
||||||
INY
|
LDA.l DungeonLocationsChecked, X
|
||||||
DEC : BNE -
|
PHA
|
||||||
+
|
|
||||||
STY.b Scrap07 ; Store 1s digit
|
LDA.l CompassTotalsWRAM,X
|
||||||
|
|
||||||
|
JSR HUDHex2Digit
|
||||||
|
STY.w HUDTileMapBuffer+$9A : STX.w HUDTileMapBuffer+$9C
|
||||||
|
|
||||||
|
LDX.w #!BlankTile : STX.w HUDTileMapBuffer+$92
|
||||||
|
LDX.w #!SlashTile : STX.w HUDTileMapBuffer+$98
|
||||||
|
|
||||||
|
PLA
|
||||||
|
JSR HUDHex2Digit
|
||||||
|
STY.w HUDTileMapBuffer+$94 : STX.w HUDTileMapBuffer+$96
|
||||||
|
|
||||||
|
.done
|
||||||
|
SEP #$20
|
||||||
|
RTS
|
||||||
|
;================================================================================
|
||||||
|
DrawMapCounts:
|
||||||
|
LDA.l MapHUDMode : BEQ .done
|
||||||
|
|
||||||
|
; no map needed if this bit is set
|
||||||
|
BIT.b #$02 : BNE .draw_map_count
|
||||||
|
REP #$20
|
||||||
|
LDA.l MapField : AND.l DungeonItemMasks,X : BEQ .done
|
||||||
|
|
||||||
|
.draw_map_count
|
||||||
|
SEP #$20
|
||||||
|
TYX : BNE .not_sewers
|
||||||
|
INX
|
||||||
|
|
||||||
|
.not_sewers
|
||||||
|
LDA.l DungeonCollectedKeys, X
|
||||||
|
PHA
|
||||||
|
|
||||||
|
LDA.l MapTotalsWRAM,X
|
||||||
|
|
||||||
|
JSR HUDHex2Digit
|
||||||
|
STX.w HUDTileMapBuffer+$A6
|
||||||
|
|
||||||
|
LDX.w #!SlashTile : STX.w HUDTileMapBuffer+$A4
|
||||||
|
|
||||||
|
PLA
|
||||||
|
JSR HUDHex2Digit
|
||||||
|
STX.w HUDTileMapBuffer+$A2
|
||||||
|
|
||||||
|
.done
|
||||||
|
SEP #$20
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; 8-bit registers
|
; Exits with:
|
||||||
; in: A(b) - Byte to Convert
|
; X - ones place tile
|
||||||
; out: $06 - $07 (high - low)
|
; Y - tens place tile
|
||||||
|
;===================================================================================================
|
||||||
|
HUDHex2Digit:
|
||||||
|
SEP #$30 ; clear high byte of X and Y and make it so they don't get B
|
||||||
|
ASL : TAX
|
||||||
|
|
||||||
|
REP #$10
|
||||||
|
|
||||||
|
LDA.b #$24 : XBA ; tile props in high byte
|
||||||
|
|
||||||
|
LDA.l FastHexTable,X : LSR #4 : ORA.b #$90
|
||||||
|
TAY
|
||||||
|
|
||||||
|
LDA.l FastHexTable,X : AND.b #$0F : ORA.b #$90
|
||||||
|
TAX
|
||||||
|
|
||||||
|
RTS
|
||||||
|
|
||||||
|
HUDHex4Digit:
|
||||||
|
JSL HexToDec
|
||||||
|
|
||||||
|
REP #$30
|
||||||
|
|
||||||
|
LDA.l HexToDecDigit2 : ORA.w #$9090 : STA.b Scrap04
|
||||||
|
LDA.l HexToDecDigit4 : ORA.w #$9090 : STA.b Scrap06
|
||||||
|
|
||||||
|
LDA.w #$2400
|
||||||
|
|
||||||
|
SEP #$20
|
||||||
|
RTS
|
||||||
|
|
||||||
|
HUDHex2Digit_Long:
|
||||||
|
JSR HUDHex2Digit
|
||||||
|
REP #$20
|
||||||
|
RTL
|
||||||
|
|
||||||
|
HUDHex4Digit_Long:
|
||||||
|
JSR HUDHex4Digit
|
||||||
|
REP #$20
|
||||||
|
RTL
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
HudHexToDec2Digit:
|
UpdateHearts:
|
||||||
LDY.b #$90
|
PHB
|
||||||
-
|
REP #$20
|
||||||
CMP.b #10 : !BLT +
|
SEP #$10
|
||||||
INY
|
|
||||||
SBC.b #10 : BRA -
|
LDX.b #$7E
|
||||||
+
|
PHX
|
||||||
STY.b Scrap06 : LDY.b #$90 ; Store 10s digit and reset Y
|
PLB
|
||||||
CMP.b #1 : !BLT +
|
|
||||||
-
|
LDA.w MaximumHealth
|
||||||
INY
|
LSR
|
||||||
DEC : BNE -
|
LSR
|
||||||
+
|
LSR
|
||||||
STY.b Scrap07 ; Store 1s digit
|
AND.w #$1F1F
|
||||||
|
|
||||||
|
|
||||||
|
TAX
|
||||||
|
XBA
|
||||||
|
TAY
|
||||||
|
|
||||||
|
LDA.w #HUDTileMapBuffer+$068
|
||||||
|
STA.b $07
|
||||||
|
STA.b $09
|
||||||
|
|
||||||
|
.next_filled_heart
|
||||||
|
CPX.b #$01
|
||||||
|
BMI .done_hearts
|
||||||
|
|
||||||
|
PHX
|
||||||
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
|
PLX
|
||||||
|
ORA.w #$20A0
|
||||||
|
|
||||||
|
CPY.b #$01
|
||||||
|
BPL .add_heart
|
||||||
|
|
||||||
|
INC
|
||||||
|
INC
|
||||||
|
|
||||||
|
.add_heart
|
||||||
|
STA.b ($07)
|
||||||
|
|
||||||
|
DEY
|
||||||
|
DEX
|
||||||
|
|
||||||
|
LDA.b $07
|
||||||
|
INC
|
||||||
|
INC
|
||||||
|
CMP.w #HUDTileMapBuffer+$07C
|
||||||
|
BEQ .next_row
|
||||||
|
|
||||||
|
CMP.w #HUDTileMapBuffer+$0BC
|
||||||
|
BNE .fine
|
||||||
|
|
||||||
|
.next_row
|
||||||
|
ADC.w #$002B
|
||||||
|
|
||||||
|
.fine
|
||||||
|
STA.b $07
|
||||||
|
|
||||||
|
CPY.b #$00
|
||||||
|
BNE .next_filled_heart
|
||||||
|
|
||||||
|
STA.b $09
|
||||||
|
BRA .next_filled_heart
|
||||||
|
|
||||||
|
.done_hearts
|
||||||
|
LDA.w CurrentHealth
|
||||||
|
AND.w #$0007
|
||||||
|
BEQ .skip_partial
|
||||||
|
CMP.w #$0005
|
||||||
|
BCS .more_than_half
|
||||||
|
|
||||||
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
|
ORA.w #$20A1
|
||||||
|
STA.b ($09)
|
||||||
|
BRA .skip_partial
|
||||||
|
|
||||||
|
.more_than_half
|
||||||
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
|
ORA.w #$20A0
|
||||||
|
STA.b ($09)
|
||||||
|
|
||||||
|
.skip_partial
|
||||||
|
SEP #$30
|
||||||
|
|
||||||
|
PLB
|
||||||
|
RTL
|
||||||
|
|
||||||
|
CheckHeartPaletteFileSelect:
|
||||||
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
|
LDA.l HUDHeartColors_masks_file_select,X
|
||||||
|
ORA.w #$0200
|
||||||
|
LDX.w #$000A
|
||||||
|
RTL
|
||||||
|
|
||||||
|
CheckHeartPalette:
|
||||||
|
PHX
|
||||||
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
|
ORA.w #$20A0
|
||||||
|
PLX
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
ColorAnimatedHearts:
|
||||||
|
PHX
|
||||||
|
REP #$20
|
||||||
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
|
PLX
|
||||||
|
ORA.l HeartFramesBaseTiles,X
|
||||||
|
STA.b [Scrap00],Y
|
||||||
|
SEP #$20
|
||||||
|
RTL
|
||||||
|
|
||||||
|
HeartFramesBaseTiles:
|
||||||
|
dw $20A3, $20A4, $20A3, $20A0
|
||||||
|
|||||||
1758
newitems.asm
1758
newitems.asm
File diff suppressed because it is too large
Load Diff
39
npcitems.asm
39
npcitems.asm
@@ -47,23 +47,23 @@ ItemCheck_SickKid:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
ItemCheck_TreeKid:
|
ItemCheck_TreeKid:
|
||||||
LDA.l NpcFlags : AND.b #$08 ; FluteBoy_Chillin - 73: LDA FluteEquipment
|
LDA.l NpcFlags : AND.b #$08
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
ItemCheck_TreeKid2:
|
ItemCheck_TreeKid2:
|
||||||
LDA.l NpcFlags : AND.b #$08 : LSR #$02 ; FluteAardvark_InitialStateFromFluteState - 225: LDA FluteEquipment : AND.b #$03
|
LDA.l NpcFlags : AND.b #$08 : CMP.b #$08
|
||||||
|
TDC ; ?? TODO
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
ItemCheck_TreeKid3:
|
ItemCheck_TreeKid3:
|
||||||
JSL $0DD030 ; FluteAardvark_Draw - thing we wrote over
|
JSL $8DD030 ; FluteAardvark_Draw - thing we wrote over
|
||||||
LDA.l NpcFlags : AND.b #$08
|
LDA.l NpcFlags : AND.b #$08
|
||||||
BEQ .normal
|
BNE .done
|
||||||
BRA .done
|
|
||||||
LDA.b #$05
|
LDA.b #$05
|
||||||
.normal
|
.normal
|
||||||
LDA.w SpriteActivity, X
|
LDA.w SpriteActivity, X
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
ItemCheck_Sahasrala:
|
ItemCheck_Sahasrala:
|
||||||
LDA.l NpcFlags : AND.b #$10
|
LDA.l NpcFlags : AND.b #$10
|
||||||
@@ -74,7 +74,7 @@ ItemCheck_Library:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
ItemCheck_Mushroom:
|
ItemCheck_Mushroom:
|
||||||
LDA.l NpcFlags+1 : ROL #4 ; does the same thing as below
|
LDA.l NpcFlags+1 : AND.b #$10 : CMP.b #$10 ; does the same thing as below
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
ItemCheck_Powder:
|
ItemCheck_Powder:
|
||||||
@@ -133,7 +133,7 @@ RTL
|
|||||||
ItemSet_Mushroom:
|
ItemSet_Mushroom:
|
||||||
PHA
|
PHA
|
||||||
LDA.l NpcFlags+1 : ORA.b #$10 : STA.l NpcFlags+1
|
LDA.l NpcFlags+1 : ORA.b #$10 : STA.l NpcFlags+1
|
||||||
LDY.w SpriteItemType, X ; Retrieve stored item type
|
LDY.w SpriteID, X ; Retrieve stored item type
|
||||||
BNE +
|
BNE +
|
||||||
; if for any reason the item value is 0 reload it, just in case
|
; if for any reason the item value is 0 reload it, just in case
|
||||||
%GetPossiblyEncryptedItem(MushroomItem, SpriteItemValues) : TAY
|
%GetPossiblyEncryptedItem(MushroomItem, SpriteItemValues) : TAY
|
||||||
@@ -174,8 +174,12 @@ RTL
|
|||||||
; Randomize Zora King
|
; Randomize Zora King
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadZoraKingItemGFX:
|
LoadZoraKingItemGFX:
|
||||||
LDA.l $1DE1C3 ; location randomizer writes zora item to
|
LDA.l $9DE1C3 ; location randomizer writes zora item to
|
||||||
JML.l PrepDynamicTile
|
JSL.l AttemptItemSubstitution
|
||||||
|
JSL.l ResolveLootIDLong
|
||||||
|
STA.w SpriteID,Y
|
||||||
|
TYX
|
||||||
|
JML.l PrepDynamicTile_loot_resolved
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
JumpToSplashItemTarget:
|
JumpToSplashItemTarget:
|
||||||
LDA.w SpriteMovement, X
|
LDA.w SpriteMovement, X
|
||||||
@@ -186,18 +190,21 @@ JumpToSplashItemTarget:
|
|||||||
; Randomize Catfish
|
; Randomize Catfish
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadCatfishItemGFX:
|
LoadCatfishItemGFX:
|
||||||
LDA.l $1DE185 ; location randomizer writes catfish item to
|
LDA.l $9DE185 ; location randomizer writes catfish item to
|
||||||
JML PrepDynamicTile
|
JSL.l AttemptItemSubstitution
|
||||||
|
JSL.l ResolveLootIDLong
|
||||||
|
STA.w SpriteID, Y
|
||||||
|
TYX
|
||||||
|
JML.l PrepDynamicTile_loot_resolved
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawThrownItem:
|
DrawThrownItem:
|
||||||
LDA.b OverworldIndex : CMP.b #$81 : BNE .catfish
|
LDA.b OverworldIndex : CMP.b #$81 : BNE .catfish
|
||||||
.zora
|
.zora
|
||||||
LDA.b #$01 : STA.l RedrawFlag
|
LDA.b #$01 : STA.l RedrawFlag
|
||||||
LDA.l $1DE1C3 ; location randomizer writes zora item to
|
|
||||||
BRA .draw
|
BRA .draw
|
||||||
.catfish
|
.catfish
|
||||||
LDA.l $1DE185 ; location randomizer writes catfish item to
|
|
||||||
.draw
|
.draw
|
||||||
|
LDA.w SpriteID,X
|
||||||
JML DrawDynamicTile
|
JML DrawDynamicTile
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MarkThrownItem:
|
MarkThrownItem:
|
||||||
|
|||||||
143
overworldmap.asm
Normal file
143
overworldmap.asm
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
pushpc
|
||||||
|
|
||||||
|
org $0AC02B
|
||||||
|
DrawPrizesOverride:
|
||||||
|
LDX.b #$FF
|
||||||
|
|
||||||
|
.loopStart
|
||||||
|
INX : PHX
|
||||||
|
JSR OverworldMap_CheckForPrize
|
||||||
|
BCC + : JMP .skip_draw : +
|
||||||
|
|
||||||
|
TXA : ASL A : TAX
|
||||||
|
LDA.l MapCompassFlag
|
||||||
|
AND #$01 : BNE +
|
||||||
|
LDA.l WorldMapIcon_posx_vanilla+1, X : STA.l $7EC10B
|
||||||
|
LDA.l WorldMapIcon_posx_vanilla, X : STA.l $7EC10A
|
||||||
|
LDA.l WorldMapIcon_posy_vanilla+1, X : STA.l $7EC109
|
||||||
|
LDA.l WorldMapIcon_posy_vanilla, X : STA.l $7EC108
|
||||||
|
BRA .adjustment
|
||||||
|
+ LDA.l WorldMapIcon_posx_located+1, X : STA.l $7EC10B
|
||||||
|
LDA.l WorldMapIcon_posx_located, X : STA.l $7EC10A
|
||||||
|
LDA.l WorldMapIcon_posy_located+1, X : STA.l $7EC109
|
||||||
|
LDA.l WorldMapIcon_posy_located, X : STA.l $7EC108
|
||||||
|
.adjustment
|
||||||
|
LDA.l WorldMapIcon_tile, X : CMP #$FF : BEQ .skip_draw
|
||||||
|
LDA.l WorldMapIcon_tile+1, X : BEQ .dont_adjust
|
||||||
|
CMP.b #$64 : BEQ .is_crystal
|
||||||
|
LDA.b $1A : AND.b #$10 : BNE .skip_draw
|
||||||
|
.is_crystal
|
||||||
|
JSR.w WorldMapIcon_AdjustCoordinate
|
||||||
|
.dont_adjust
|
||||||
|
JSR.w WorldMap_CalculateOAMCoordinates
|
||||||
|
BCC .skip_draw
|
||||||
|
PLX : PHX : TXA : ASL A : TAX
|
||||||
|
LDA.l WorldMapIcon_tile+1, X : BEQ .is_red_x
|
||||||
|
LDA.l MapCompassFlag : CMP.b #$01 : BEQ .is_red_x
|
||||||
|
LDA.l WorldMapIcon_tile+1, X : STA.b $0D
|
||||||
|
LDA.l WorldMapIcon_tile, X : STA.b $0C
|
||||||
|
LDA.b #$02 : BRA .continue
|
||||||
|
.is_red_x
|
||||||
|
LDA.b $1A : LSR #3 : AND.b #$03 : TAX
|
||||||
|
LDA.l WorldMap_RedXChars,X : STA.b $0D
|
||||||
|
LDA.b #$32 : STA.b $0C : LDA.b #$00
|
||||||
|
.continue
|
||||||
|
STA.b $0B
|
||||||
|
PLX : PHX
|
||||||
|
INX : JSR.w WorldMap_HandleSpriteBlink
|
||||||
|
.skip_draw
|
||||||
|
; end of loop
|
||||||
|
PLX : CPX #12 : BCS + : JMP .loopStart : +
|
||||||
|
|
||||||
|
PLA : STA.l $7EC10B
|
||||||
|
PLA : STA.l $7EC10A
|
||||||
|
PLA : STA.l $7EC109
|
||||||
|
PLA : STA.l $7EC108
|
||||||
|
RTS
|
||||||
|
|
||||||
|
|
||||||
|
; X - the index of the prize marker
|
||||||
|
OverworldMap_CheckForPrize:
|
||||||
|
PHX
|
||||||
|
LDA #$00 : STA.l MapCompassFlag
|
||||||
|
JSR OverworldMap_CheckForCompass
|
||||||
|
BCC +
|
||||||
|
LDA.l MapCompassFlag : ORA #$01 : STA.l MapCompassFlag
|
||||||
|
LDA CurrentWorld : AND #$40 : BNE ++ ; is the compass position on LW or DW?
|
||||||
|
LDA.l WorldCompassMask, X : BEQ + : JMP .fail
|
||||||
|
++ LDA.l WorldCompassMask, X : BNE + : JMP .fail
|
||||||
|
+ JSR OverworldMap_CheckForMap
|
||||||
|
BCC +
|
||||||
|
LDA.l MapCompassFlag : ORA #$02 : STA.l MapCompassFlag
|
||||||
|
+
|
||||||
|
LDA.l MapCompassFlag : BEQ .fail
|
||||||
|
CMP #$02 : BNE .checkIfObtained
|
||||||
|
LDA CurrentWorld : AND #$40 : BNE +
|
||||||
|
CPX #3 : BCS .fail : BRA .checkIfObtained
|
||||||
|
+ CPX #10 : BCS .fail
|
||||||
|
CPX #3 : BCC .fail
|
||||||
|
|
||||||
|
.checkIfObtained
|
||||||
|
LDA.l MC_DungeonIdsForPrize, X
|
||||||
|
BPL +++ : CLC : BRA .done : +++ ; non-prize flags
|
||||||
|
CMP.b #$02 : BCC .hyrule_castle
|
||||||
|
ASL : TAX
|
||||||
|
REP #$20
|
||||||
|
LDA.l DungeonsCompleted : AND.l DungeonItemMasks,X : BNE .fail
|
||||||
|
CLC : BRA .done
|
||||||
|
|
||||||
|
; see if hyrule castle has been completely cleared
|
||||||
|
.hyrule_castle
|
||||||
|
LDA.l CompassTotalsWRAM, X : SEC : SBC DungeonLocationsChecked, X : BEQ .fail
|
||||||
|
CLC : BRA .done
|
||||||
|
|
||||||
|
.fail
|
||||||
|
SEC
|
||||||
|
.done
|
||||||
|
SEP #$20
|
||||||
|
PLX
|
||||||
|
RTS
|
||||||
|
|
||||||
|
; X - which compass in question
|
||||||
|
; CLC - should not move indicator
|
||||||
|
; SEC - yep indicator can move
|
||||||
|
OverworldMap_CheckForCompass:
|
||||||
|
LDA.l CompassMode : AND #$80 : BEQ .unset ; should I check for compass logic
|
||||||
|
LDA.l CompassMode : AND #$40 : BEQ .set ; compasses/maps aren't shuffled
|
||||||
|
LDA.l CompassMode : AND #$20 : BNE +
|
||||||
|
JSR OverworldMap_CheckForMap : BCC .unset : BRA .set
|
||||||
|
+ LDA.l CompassExists, X : BEQ .set ; compass doesn't exist
|
||||||
|
PHX
|
||||||
|
LDA.l MC_SRAM_Offsets, X : TAX ; put compass offset into X
|
||||||
|
LDA CompassField, X : ORA MapOverlay, X
|
||||||
|
PLX
|
||||||
|
AND.l MC_Masks, X : BNE .set ; is the compass obtained
|
||||||
|
.unset
|
||||||
|
CLC
|
||||||
|
RTS
|
||||||
|
.set
|
||||||
|
SEC
|
||||||
|
RTS
|
||||||
|
|
||||||
|
; map - which map in question
|
||||||
|
; CLC - should not show exact prize
|
||||||
|
; SEC - yep should show exact prize
|
||||||
|
OverworldMap_CheckForMap:
|
||||||
|
LDA.l MapMode : BEQ .set ; obtaining map doesn't change anything
|
||||||
|
LDA CurrentWorld : AND #$40 : BNE + ; not really sure on this check
|
||||||
|
LDA MapField : ORA MapOverlay : AND.b #$01 : BNE .set : BRA .continue
|
||||||
|
+ LDA MapField : ORA MapOverlay : AND.b #$02 : BNE .set
|
||||||
|
.continue
|
||||||
|
PHX
|
||||||
|
LDA.l MC_SRAM_Offsets, X : TAX ; put map offset into X
|
||||||
|
LDA MapField, X : ORA MapOverlay, X
|
||||||
|
PLX
|
||||||
|
AND.l MC_Masks, X : BNE .set ; is the map obtained?
|
||||||
|
.unset
|
||||||
|
CLC
|
||||||
|
RTS
|
||||||
|
.set
|
||||||
|
SEC
|
||||||
|
RTS
|
||||||
|
|
||||||
|
pullpc
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
Module_Password:
|
Module_Password:
|
||||||
LDA.b GameSubMode
|
LDA.b GameSubMode
|
||||||
|
|
||||||
JSL.l UseImplicitRegIndexedLongJumpTable
|
JSL.l JumpTableLong
|
||||||
|
|
||||||
dl Password_BeginInit ; 0
|
dl Password_BeginInit ; 0
|
||||||
dl Password_EndInit ; 1
|
dl Password_EndInit ; 1
|
||||||
|
|||||||
@@ -17,18 +17,20 @@ RTL
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
HUDRebuildIndoorHole:
|
HUDRebuildIndoorHole:
|
||||||
PHA
|
PHA
|
||||||
|
INC.w UpdateHUD
|
||||||
LDA.l GenericKeys : BEQ .normal
|
LDA.l GenericKeys : BEQ .normal
|
||||||
.generic
|
.generic
|
||||||
PLA
|
PLA
|
||||||
LDA.l CurrentGenericKeys ; generic key count
|
LDA.l CurrentGenericKeys ; generic key count
|
||||||
JSL.l HUD_RebuildIndoor_Palace
|
JSL.l HUD_RebuildIndoor_Palace
|
||||||
RTL
|
RTL
|
||||||
.normal
|
.normal
|
||||||
PLA
|
PLA
|
||||||
JSL.l HUD_RebuildIndoor_Palace
|
JSL.l HUD_RebuildIndoor_Palace
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
HUDRebuildIndoor:
|
HUDRebuildIndoor:
|
||||||
|
INC.w UpdateHUD
|
||||||
LDA.l GenericKeys : BEQ .normal
|
LDA.l GenericKeys : BEQ .normal
|
||||||
.generic
|
.generic
|
||||||
LDA.b #$00 : STA.l RoomDarkness
|
LDA.b #$00 : STA.l RoomDarkness
|
||||||
@@ -49,70 +51,6 @@ GetCrystalNumber:
|
|||||||
PLX
|
PLX
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
OverworldMap_CheckObject:
|
|
||||||
PHX
|
|
||||||
;CPX.b #$01 : BNE + : JMP ++ : + : JMP .fail
|
|
||||||
LDA.l CurrentWorld : AND.b #$40 : BNE +
|
|
||||||
;LW Map
|
|
||||||
LDA.l MapMode : BEQ +++
|
|
||||||
LDA.l MapField : ORA.l MapOverlay : AND.b #$01 : BNE +++
|
|
||||||
PHX
|
|
||||||
LDA.l .lw_map_offsets, X : TAX ; put map offset into X
|
|
||||||
LDA.l MapField, X : ORA.l MapOverlay, X
|
|
||||||
PLX
|
|
||||||
AND.l .lw_map_masks, X : BNE +++
|
|
||||||
JMP .fail
|
|
||||||
+++
|
|
||||||
LDA.l .lw_offsets, X
|
|
||||||
BPL +++ : CLC : BRA .done : +++ ; don't display master sword
|
|
||||||
TAX : BRA ++
|
|
||||||
+
|
|
||||||
;DW Map
|
|
||||||
LDA.l MapMode : BEQ +++
|
|
||||||
LDA.l MapField : ORA.l MapOverlay : AND.b #$02 : BNE +++
|
|
||||||
PHX
|
|
||||||
LDA.l .dw_map_offsets, X : TAX ; put map offset into X
|
|
||||||
LDA.l MapField, X : ORA.l MapOverlay, X
|
|
||||||
PLX
|
|
||||||
AND.l .dw_map_masks, X : BNE +++
|
|
||||||
JMP .fail
|
|
||||||
+++
|
|
||||||
LDA.l .dw_offsets, X
|
|
||||||
TAX : BRA ++
|
|
||||||
SEC
|
|
||||||
PLX
|
|
||||||
RTL
|
|
||||||
++
|
|
||||||
LDA.l CrystalPendantFlags_2, X
|
|
||||||
AND.b #$40 : BNE .checkCrystal
|
|
||||||
|
|
||||||
.checkPendant
|
|
||||||
LDA.l PendantsField : AND.l CrystalPendantFlags, X : BNE .fail
|
|
||||||
CLC : BRA .done
|
|
||||||
|
|
||||||
.checkCrystal
|
|
||||||
LDA.l CrystalsField : AND.l CrystalPendantFlags, X : BNE .fail
|
|
||||||
CLC : BRA .done
|
|
||||||
|
|
||||||
.fail
|
|
||||||
SEC
|
|
||||||
.done
|
|
||||||
PLX
|
|
||||||
RTL
|
|
||||||
.lw_offsets
|
|
||||||
db $02, $0A, $03, $FF
|
|
||||||
.dw_offsets
|
|
||||||
db $06, $08, $0C, $0B, $07, $09, $05
|
|
||||||
.lw_map_offsets
|
|
||||||
db $01, $00, $01
|
|
||||||
; pod skull trock thieves mire ice swamp
|
|
||||||
.dw_map_offsets
|
|
||||||
db $01, $00, $00, $00, $01, $00, $01
|
|
||||||
.lw_map_masks
|
|
||||||
db $20, $20, $10, $00
|
|
||||||
.dw_map_masks
|
|
||||||
db $02, $80, $08, $10, $01, $40, $04
|
|
||||||
;================================================================================
|
|
||||||
SetLWDWMap:
|
SetLWDWMap:
|
||||||
PHP
|
PHP
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
@@ -173,31 +111,39 @@ CheckCloseItemMenu:
|
|||||||
LDA.l MenuCollapse : BNE +
|
LDA.l MenuCollapse : BNE +
|
||||||
LDA.b Joy1A_New : AND.b #$10 : RTL
|
LDA.b Joy1A_New : AND.b #$10 : RTL
|
||||||
+
|
+
|
||||||
LDA.b Joy1A_All : AND.b #$10 : EOR.b #$10
|
LDA.b Joy1A_All : EOR.b #$10
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
ShowDungeonItems:
|
ShowDungeonItems:
|
||||||
REP #$30
|
LDA.w DungeonID-1 : BMI .no_dungeon
|
||||||
LDA.w DungeonID : AND.w #$00FF : CMP.w #$00FF : BNE + : RTL : + ; return normal result if outdoors or in a cave
|
LDA.l HudFlag : AND.w #$0040 : BEQ +
|
||||||
LDA.l HudFlag : AND.w #$0020 ; check hud flag
|
.no_dungeon
|
||||||
BEQ + : LDA.w #$0000 : RTL : + ; if set, send the zero onwards
|
LDA.w #$0000
|
||||||
LDA.w DungeonID : AND.w #$00FF : CMP.w #$00FF ; original logic
|
RTL
|
||||||
|
+
|
||||||
|
LDA.w DungeonID
|
||||||
|
REP #$02
|
||||||
|
.done
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
UpdateKeys:
|
UpdateKeys:
|
||||||
PHX : PHP
|
PHX : PHP
|
||||||
SEP #$30 ; set 8-bit accumulator & index registers
|
SEP #$30 ; set 8-bit accumulator & index registers
|
||||||
LDA.w DungeonID : CMP.b #$1F : !BGE .skip
|
LDA.w DungeonID : CMP.b #$1F : !BLT .skip
|
||||||
LSR : TAX ; get dungeon index and store to X
|
|
||||||
LDA.l CurrentSmallKeys : STA.l DungeonKeys, X
|
LSR : TAX ; get dungeon index and store to X
|
||||||
|
|
||||||
CPX.b #$00 : BNE +
|
LDA.l CurrentSmallKeys ; load current key count
|
||||||
STA.l HyruleCastleKeys ; copy HC to sewers
|
STA.l DungeonKeys, X ; save to main counts
|
||||||
+ : CPX.b #$01 : BNE +
|
|
||||||
STA.l SewerKeys ; copy sewers to HC
|
CPX.b #$00 : BNE +
|
||||||
+
|
STA.l HyruleCastleKeys ; copy HC to sewers
|
||||||
.skip
|
+ : CPX.b #$01 : BNE +
|
||||||
PLP : PLX
|
STA.l SewerKeys ; copy sewers to HC
|
||||||
|
+
|
||||||
|
.skip
|
||||||
|
JSL.l PostItemGet
|
||||||
|
PLP : PLX
|
||||||
RTL
|
RTL
|
||||||
;$37C = Sewer Passage
|
;$37C = Sewer Passage
|
||||||
;$37D = Hyrule Castle
|
;$37D = Hyrule Castle
|
||||||
@@ -248,7 +194,7 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawHUDDungeonItems:
|
DrawHUDDungeonItems:
|
||||||
LDA.l HUDDungeonItems : BNE .continue
|
LDA.l HUDDungeonItems : BNE .continue
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
.dungeon_positions
|
.dungeon_positions
|
||||||
dw 0 ; Hyrule Castle
|
dw 0 ; Hyrule Castle
|
||||||
@@ -282,7 +228,7 @@ DrawHUDDungeonItems:
|
|||||||
|
|
||||||
|
|
||||||
.dungeon_bitmasks
|
.dungeon_bitmasks
|
||||||
dw $4000 ; Hyrule Castle
|
dw $C000 ; Hyrule Castle
|
||||||
dw $2000 ; Eastern
|
dw $2000 ; Eastern
|
||||||
dw $1000 ; Desert
|
dw $1000 ; Desert
|
||||||
dw $0020 ; Hera
|
dw $0020 ; Hera
|
||||||
@@ -311,28 +257,19 @@ DrawHUDDungeonItems:
|
|||||||
dw $A4*2 ; ; Turtle Rock
|
dw $A4*2 ; ; Turtle Rock
|
||||||
dw $0D*2 ; ; Ganon's Tower
|
dw $0D*2 ; ; Ganon's Tower
|
||||||
|
|
||||||
.continue
|
.continue
|
||||||
PHP
|
PHP : PHB
|
||||||
|
PHK : PLB
|
||||||
PHB
|
REP #$30
|
||||||
PHK
|
|
||||||
PLB
|
|
||||||
|
|
||||||
REP #$30
|
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; dungeon names
|
; dungeon names
|
||||||
LDA.w #$2D50
|
LDA.w #$2D50
|
||||||
|
|
||||||
LDY.w #00
|
LDY.w #00
|
||||||
|
|
||||||
|
.next_dungeon_name
|
||||||
.next_dungeon_name
|
|
||||||
LDX.w .dungeon_positions,Y
|
LDX.w .dungeon_positions,Y
|
||||||
STA.w GFXStripes+$0646,X
|
STA.w GFXStripes+$0646,X
|
||||||
|
|
||||||
INC
|
INC
|
||||||
|
|
||||||
INY : INY
|
INY : INY
|
||||||
CPY.w #26 : BCC .next_dungeon_name
|
CPY.w #26 : BCC .next_dungeon_name
|
||||||
|
|
||||||
@@ -344,163 +281,138 @@ DrawHUDDungeonItems:
|
|||||||
STA.w GFXStripes+$06C6,X
|
STA.w GFXStripes+$06C6,X
|
||||||
STA.w GFXStripes+$0706,X
|
STA.w GFXStripes+$0706,X
|
||||||
|
|
||||||
DEX : DEX : BPL --
|
DEX : DEX
|
||||||
|
BPL --
|
||||||
|
|
||||||
LDA.l HudFlag : AND.w #$0020 : BEQ +
|
LDA.l HudFlag : AND.w #$0020 : BEQ +
|
||||||
|
JMP .maps_and_compasses
|
||||||
JMP .maps_and_compasses
|
|
||||||
|
|
||||||
+
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
|
+
|
||||||
|
LDA.l HUDDungeonItems : AND.w #$0001 : BNE +
|
||||||
|
LDA.w #$24F5 : STA.w GFXStripes+$0684 ; blank tile
|
||||||
|
BRA .skip_small_keys
|
||||||
|
+
|
||||||
|
.draw_small_keys
|
||||||
|
LDA.w #$2810 : STA.w GFXStripes+$0684 ; small keys icon
|
||||||
|
LDY.w #0
|
||||||
|
CLC
|
||||||
|
|
||||||
LDA.l HUDDungeonItems : AND.w #$0001 : BEQ .skip_small_keys
|
.next_small_key
|
||||||
|
LDX.w .small_key_x_offset,Y
|
||||||
|
LDA.l DungeonKeys,X
|
||||||
|
AND.w #$00FF
|
||||||
|
|
||||||
.draw_small_keys
|
LDX.w .dungeon_positions,Y
|
||||||
LDA.w #$2810 : STA.w GFXStripes+$0684 ; small keys icon
|
ADC.w #$2816
|
||||||
|
STA.w GFXStripes+$0686,X
|
||||||
|
|
||||||
LDY.w #0
|
INY : INY
|
||||||
|
CPY.w #26 : BCC .next_small_key
|
||||||
; Clear the carry only once
|
|
||||||
; it will be cleared by looping condition afterwards
|
|
||||||
CLC
|
|
||||||
|
|
||||||
.next_small_key
|
|
||||||
LDX.w .small_key_x_offset,Y
|
|
||||||
LDA.l DungeonKeys,X
|
|
||||||
AND.w #$00FF
|
|
||||||
|
|
||||||
LDX.w .dungeon_positions,Y
|
|
||||||
ADC.w #$2816
|
|
||||||
STA.w GFXStripes+$0686,X
|
|
||||||
|
|
||||||
INY : INY
|
|
||||||
CPY.w #26 : BCC .next_small_key
|
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
|
|
||||||
.skip_small_keys
|
.skip_small_keys
|
||||||
|
; Big Keys
|
||||||
|
LDA.l HUDDungeonItems : AND.w #$0002 : BNE +
|
||||||
|
LDA.w #$24F5 : STA.w GFXStripes+$06C4 ; blank tile
|
||||||
|
BRA .skip_big_keys
|
||||||
|
+
|
||||||
|
LDA.w #$2811 : STA.w GFXStripes+$06C4 ; big key icon
|
||||||
|
LDX.w #0
|
||||||
|
LDA.l BigKeyField
|
||||||
|
|
||||||
; Big Keys
|
.next_big_key
|
||||||
LDA.l HUDDungeonItems : AND.w #$0002 : BEQ .skip_big_keys
|
BIT.w .dungeon_bitmasks,X
|
||||||
|
BEQ ..skip_key
|
||||||
|
|
||||||
|
LDY.w .dungeon_positions,X
|
||||||
|
LDA.w #$2826
|
||||||
|
STA.w GFXStripes+$06C6,Y
|
||||||
|
LDA.l BigKeyField
|
||||||
|
|
||||||
LDA.w #$2811 : STA.w GFXStripes+$06C4 ; big key icon
|
..skip_key
|
||||||
|
INX : INX
|
||||||
; use X so we can BIT
|
CPX.w #26 : BCC .next_big_key
|
||||||
LDX.w #0
|
|
||||||
|
|
||||||
; load once and test multiple times
|
|
||||||
LDA.l BigKeyField
|
|
||||||
|
|
||||||
.next_big_key
|
|
||||||
BIT.w .dungeon_bitmasks,X
|
|
||||||
BEQ ..skip_key
|
|
||||||
|
|
||||||
LDY.w .dungeon_positions,X
|
|
||||||
LDA.w #$2826
|
|
||||||
STA.w GFXStripes+$06C6,Y
|
|
||||||
|
|
||||||
; reload
|
|
||||||
LDA.l BigKeyField
|
|
||||||
|
|
||||||
..skip_key
|
|
||||||
INX : INX
|
|
||||||
CPX.w #26 : BCC .next_big_key
|
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
|
|
||||||
.skip_big_keys
|
.skip_big_keys
|
||||||
|
LDA.l HUDDungeonItems : AND.w #$0010 : BNE +
|
||||||
|
LDA.w #$24F5 : STA.w GFXStripes+$0704 ; blank tile
|
||||||
|
BRA .skip_boss_kills
|
||||||
|
+
|
||||||
|
LDA.w #$280F : STA.w GFXStripes+$0704 ; skull icon
|
||||||
|
LDY.w #0
|
||||||
|
|
||||||
LDA.l HUDDungeonItems : AND.w #$0010 : BEQ .skip_boss_kills
|
.next_boss_kill
|
||||||
LDA.w #$280F : STA.w GFXStripes+$0704 ; skull icon
|
LDX.w .boss_room_ids,Y
|
||||||
LDY.w #0
|
LDA.l RoomDataWRAM.l,X
|
||||||
|
AND.w #$0800
|
||||||
|
BEQ ..skip_boss_kill
|
||||||
|
LDA.w #$2826
|
||||||
|
LDX.w .dungeon_positions,Y
|
||||||
|
STA.w GFXStripes+$0706,X
|
||||||
|
..skip_boss_kill
|
||||||
|
INY : INY
|
||||||
|
CPY.w #26 : BCC .next_boss_kill
|
||||||
|
|
||||||
.next_boss_kill
|
;-------------------------------------------------------------------------------
|
||||||
LDX.w .boss_room_ids,Y
|
.skip_boss_kills
|
||||||
LDA.l RoomDataWRAM.l,X
|
LDA.l HUDDungeonItems : BIT.w #$00F3 : BEQ .maps_and_compasses
|
||||||
AND.w #$0800
|
JMP .exit
|
||||||
BEQ ..skip_boss_kill
|
;-------------------------------------------------------------------------------
|
||||||
|
.maps_and_compasses
|
||||||
|
LDA.w #$24F5 : STA.w GFXStripes+$0704 ; blank tile boss icon
|
||||||
|
; Maps
|
||||||
|
LDA.l HUDDungeonItems : AND.w #$0004 : BNE +
|
||||||
|
LDA.w #$24F5 : STA.w GFXStripes+$0684 ; map icon
|
||||||
|
BRA .skip_maps
|
||||||
|
+
|
||||||
|
LDA.w #$2821 : STA.w GFXStripes+$0684 ; map icon
|
||||||
|
LDX.w #0
|
||||||
|
LDA.l MapField
|
||||||
|
|
||||||
LDA.w #$2826
|
.next_map
|
||||||
LDX.w .dungeon_positions,Y
|
BIT.w .dungeon_bitmasks,X
|
||||||
STA.w GFXStripes+$0706,X
|
BEQ ..skip_map
|
||||||
|
|
||||||
..skip_boss_kill
|
LDY.w .dungeon_positions,X
|
||||||
INY : INY
|
LDA.w #$2826
|
||||||
CPY.w #26 : BCC .next_boss_kill
|
STA.w GFXStripes+$0686,Y
|
||||||
|
LDA.l MapField
|
||||||
|
|
||||||
|
..skip_map
|
||||||
|
INX : INX
|
||||||
|
CPX.w #26 : BCC .next_map
|
||||||
|
|
||||||
|
.skip_maps
|
||||||
|
LDA.l HUDDungeonItems : AND.w #$0008 : BNE +
|
||||||
|
LDA.w #$24F5 : STA.w GFXStripes+$06C4 ; blank tile
|
||||||
|
BRA .skip_compasses
|
||||||
|
+
|
||||||
|
LDA.w #$2C20 : STA.w GFXStripes+$06C4 ; compass icon
|
||||||
|
LDX.w #0
|
||||||
|
LDA.l CompassField
|
||||||
|
|
||||||
|
.next_compass
|
||||||
|
BIT.w .dungeon_bitmasks,X
|
||||||
|
BEQ ..skip_compass
|
||||||
|
|
||||||
|
LDY.w .dungeon_positions,X
|
||||||
|
LDA.w #$2826
|
||||||
|
STA.w GFXStripes+$06C6,Y
|
||||||
|
LDA.l CompassField
|
||||||
|
|
||||||
|
..skip_compass
|
||||||
|
INX : INX
|
||||||
|
CPX.w #26 : BCC .next_compass
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
|
|
||||||
.skip_boss_kills
|
.skip_compasses
|
||||||
JMP .exit
|
.exit
|
||||||
|
PLB
|
||||||
;-------------------------------------------------------------------------------
|
PLP
|
||||||
|
|
||||||
; This should only display if select is pressed in hud
|
|
||||||
.maps_and_compasses
|
|
||||||
|
|
||||||
; Maps
|
|
||||||
LDA.l HUDDungeonItems : AND.w #$0004 : BEQ .skip_maps
|
|
||||||
LDA.w #$2821 : STA.w GFXStripes+$0684 ; map icon
|
|
||||||
|
|
||||||
; use X so we can BIT
|
|
||||||
LDX.w #0
|
|
||||||
|
|
||||||
; load once and test multiple times
|
|
||||||
LDA.l MapField
|
|
||||||
|
|
||||||
.next_map
|
|
||||||
BIT.w .dungeon_bitmasks,X
|
|
||||||
BEQ ..skip_map
|
|
||||||
|
|
||||||
LDY.w .dungeon_positions,X
|
|
||||||
LDA.w #$2826
|
|
||||||
STA.w GFXStripes+$0686,Y
|
|
||||||
|
|
||||||
; reload
|
|
||||||
LDA.l MapField
|
|
||||||
|
|
||||||
..skip_map
|
|
||||||
INX : INX
|
|
||||||
CPX.w #26 : BCC .next_map
|
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.skip_maps
|
|
||||||
|
|
||||||
; Compasses
|
|
||||||
LDA.l HUDDungeonItems : AND.w #$0008 : BEQ .skip_compasses
|
|
||||||
LDA.w #$2C20 : STA.w GFXStripes+$06C4 ; compass icon
|
|
||||||
|
|
||||||
; use X so we can BIT
|
|
||||||
LDX.w #0
|
|
||||||
|
|
||||||
; load once and test multiple times
|
|
||||||
LDA.l CompassField
|
|
||||||
|
|
||||||
.next_compass
|
|
||||||
BIT.w .dungeon_bitmasks,X
|
|
||||||
BEQ ..skip_compass
|
|
||||||
|
|
||||||
LDY.w .dungeon_positions,X
|
|
||||||
LDA.w #$2826
|
|
||||||
STA.w GFXStripes+$06C6,Y
|
|
||||||
|
|
||||||
; reload
|
|
||||||
LDA.l CompassField
|
|
||||||
|
|
||||||
..skip_compass
|
|
||||||
INX : INX
|
|
||||||
CPX.w #26 : BCC .next_compass
|
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.skip_compasses
|
|
||||||
|
|
||||||
.exit
|
|
||||||
PLB
|
|
||||||
PLP
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -656,15 +568,19 @@ HandleEmptyMenu:
|
|||||||
LDA.b Joy1A_New : BIT.b #$DF : BNE .close_menu ; Not select, close menu
|
LDA.b Joy1A_New : BIT.b #$DF : BNE .close_menu ; Not select, close menu
|
||||||
BIT.b #$20 : BNE .sel_pressed
|
BIT.b #$20 : BNE .sel_pressed
|
||||||
LDA.b Joy1A_All : BIT.b #$20 : BNE .wait_for_change
|
LDA.b Joy1A_All : BIT.b #$20 : BNE .wait_for_change
|
||||||
LDA.l HudFlag : AND.b #$20 : BEQ .wait_for_change ; HUD flag off, skip drawing work
|
LDA.l HudFlag : AND.b #$60 : BEQ .wait_for_change
|
||||||
LDA.l HudFlag : AND.b #$DF : STA.l HudFlag ; Unset without select
|
LDA.l HudFlag : AND.b #$9F : STA.l HudFlag ; Unset without select
|
||||||
LDA.b IndoorsFlag : BEQ ++ ; skip if outdoors
|
JSL.l MaybePlaySelectSFX
|
||||||
LDA.b #$20 : STA.w SFX3
|
LDA.b #$0C : BRA .done
|
||||||
++
|
|
||||||
LDA.b #$0C : BRA .done
|
|
||||||
.sel_pressed
|
.sel_pressed
|
||||||
LDA.l HudFlag : ORA.b #$20 : STA.l HudFlag
|
LDA.l HUDDungeonItems : BIT.b #$0C : BNE +
|
||||||
LDA.b #$20 : STA.w SFX3
|
LDA.b #$40
|
||||||
|
BRA .store_flag
|
||||||
|
+
|
||||||
|
LDA.b #$60
|
||||||
|
.store_flag
|
||||||
|
STA.l HudFlag
|
||||||
|
JSL.l MaybePlaySelectSFX
|
||||||
LDA.b #$0C : BRA .done
|
LDA.b #$0C : BRA .done
|
||||||
.wait_for_change
|
.wait_for_change
|
||||||
LDA.b #$03 : BRA .done
|
LDA.b #$03 : BRA .done
|
||||||
@@ -687,3 +603,40 @@ RestoreMenu_SetSubModule:
|
|||||||
+
|
+
|
||||||
LDA.b #$03 : STA.w SubModuleInterface
|
LDA.b #$03 : STA.w SubModuleInterface
|
||||||
RTL
|
RTL
|
||||||
|
;-------------------------------------------------------------------------------
|
||||||
|
DrawHeartPiecesMenu:
|
||||||
|
LDA.l HUDHeartColors_index : AND.w #$00FF
|
||||||
|
ASL : TAX
|
||||||
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
|
STA.b Scrap0D
|
||||||
|
|
||||||
|
LDA.l HeartPieceQuarter : AND.w #$00FF
|
||||||
|
ASL #3 : TAX
|
||||||
|
LDY.w #$16F2
|
||||||
|
|
||||||
|
LDA.l HeartPieceMenuBaseTiles,X
|
||||||
|
ORA.b Scrap0D
|
||||||
|
STA.w $0000,Y
|
||||||
|
|
||||||
|
INX #2
|
||||||
|
LDA.l HeartPieceMenuBaseTiles,X
|
||||||
|
ORA.b Scrap0D
|
||||||
|
STA.w $0002,Y
|
||||||
|
|
||||||
|
INX #2
|
||||||
|
LDA.l HeartPieceMenuBaseTiles,X
|
||||||
|
ORA.b Scrap0D
|
||||||
|
STA.w $0040,Y
|
||||||
|
|
||||||
|
INX #2
|
||||||
|
LDA.l HeartPieceMenuBaseTiles,X
|
||||||
|
ORA.b Scrap0D
|
||||||
|
STA.w $0042,Y
|
||||||
|
RTL
|
||||||
|
|
||||||
|
HeartPieceMenuBaseTiles:
|
||||||
|
dw $2084, $6084, $2085, $6085 ; 0 heart pieces
|
||||||
|
dw $20AD, $6084, $2085, $6085 ; 1 heart piece
|
||||||
|
dw $20AD, $6084, $20AE, $6085 ; 2 heart pieces
|
||||||
|
dw $20AD, $60AD, $20AE, $6085 ; 3 heart pieces
|
||||||
|
;-------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ WriteCharacterToPlayerName:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
ReadCharacterFromPlayerName: ;Only for use on Name Screen
|
ReadCharacterFromPlayerName: ;Only for use on Name Screen
|
||||||
LDA.l ExtendedFileNameSRAM, X
|
LDA.l ExtendedFileNameSRAM, X
|
||||||
CPX.w #$0008 : !BGE +
|
CPX.w #$0008 : !BGE +
|
||||||
LDA.l FileNameVanillaSRAM, X ;what we wrote over
|
LDA.l FileNameVanillaSRAM, X ;what we wrote over
|
||||||
+
|
+
|
||||||
@@ -59,7 +59,7 @@ db $98, $a0, $a8, $b0
|
|||||||
db $c0, $c8, $d0, $d8
|
db $c0, $c8, $d0, $d8
|
||||||
|
|
||||||
|
|
||||||
NumberStripes:
|
NewNameStripes:
|
||||||
dw $AB66, $1100 ; 0-4 top
|
dw $AB66, $1100 ; 0-4 top
|
||||||
dw $1D40, $0188, $1D41, $0188, $1D42, $0188, $1D43, $0188
|
dw $1D40, $0188, $1D41, $0188, $1D42, $0188, $1D43, $0188
|
||||||
dw $1D44
|
dw $1D44
|
||||||
@@ -72,15 +72,36 @@ dw $1D49
|
|||||||
dw $0B67, $1100 ; 5-9 bottom
|
dw $0B67, $1100 ; 5-9 bottom
|
||||||
dw $1D55, $0188, $1D56, $0188, $1D57, $0188, $1D58, $0188
|
dw $1D55, $0188, $1D56, $0188, $1D57, $0188, $1D58, $0188
|
||||||
dw $1D59
|
dw $1D59
|
||||||
|
|
||||||
|
; Move JP characters where a-z are to column where second END button was
|
||||||
|
dw $B162, $1100
|
||||||
|
dw $1CEE, $0188, $1CEF, $0188, $1D05, $0188, $1D06, $0188
|
||||||
|
dw $1D07
|
||||||
|
dw $D162, $1100
|
||||||
|
dw $1CFE, $0188, $1CFF, $0188, $1D15, $0188, $1D16, $0188
|
||||||
|
dw $1D17
|
||||||
|
dw $F162, $1100
|
||||||
|
dw $1D0D, $0188, $1D0E, $0188, $1D0F, $0188, $1D20, $0188
|
||||||
|
dw $1D21
|
||||||
|
dw $1163, $1100
|
||||||
|
dw $1D1D, $0188, $1D1E, $0188, $1D1F, $0188, $1D30, $0188
|
||||||
|
dw $1D31
|
||||||
|
dw $3163, $1100
|
||||||
|
dw $1D22, $0188, $1D23, $0188, $1D24, $0188, $1D25, $0188
|
||||||
|
dw $1D26
|
||||||
|
dw $5163, $1100
|
||||||
|
dw $1D32, $0188, $1D33, $0188, $1D34, $0188, $1D35, $0188
|
||||||
|
dw $1D36
|
||||||
|
|
||||||
db $80 ; termination
|
db $80 ; termination
|
||||||
|
|
||||||
TransferNumericStripes:
|
TransferNewNameStripes:
|
||||||
REP #$30
|
REP #$30
|
||||||
LDA.w GameMode : CMP.w #$0204 : BNE .exit
|
LDA.w GameMode : CMP.w #$0204 : BNE .exit
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.b #NumberStripes>>0 : STA.b $00
|
LDA.b #NewNameStripes>>0 : STA.b $00
|
||||||
LDA.b #NumberStripes>>8 : STA.b $01
|
LDA.b #NewNameStripes>>8 : STA.b $01
|
||||||
LDA.b #NumberStripes>>16 : STA.b $02 : STA.w DMA1ADDRB
|
LDA.b #NewNameStripes>>16 : STA.b $02 : STA.w DMA1ADDRB
|
||||||
STZ.b $06 : LDY.w #$0000
|
STZ.b $06 : LDY.w #$0000
|
||||||
.check_next
|
.check_next
|
||||||
LDA.b [$00],Y : BPL .next_stripe
|
LDA.b [$00],Y : BPL .next_stripe
|
||||||
|
|||||||
72
ram.asm
72
ram.asm
@@ -48,6 +48,8 @@ NMIHUD = $7E0016 ; during NMI.
|
|||||||
NMIINCR = $7E0017 ;
|
NMIINCR = $7E0017 ;
|
||||||
NMIUP1100 = $7E0018 ;
|
NMIUP1100 = $7E0018 ;
|
||||||
UPINCVH = $7E0019 ; Incremental upload VRAM high byte
|
UPINCVH = $7E0019 ; Incremental upload VRAM high byte
|
||||||
|
LinkAbsoluteY = $7E0020 ; Link's absolute coordinates. Word length
|
||||||
|
LinkAbsoluteX = $7E0022 ;
|
||||||
FrameCounter = $7E001A ; Increments every frame that the game isn't lagging
|
FrameCounter = $7E001A ; Increments every frame that the game isn't lagging
|
||||||
IndoorsFlag = $7E001B ; $00 = Outdoors | $01 = Indoors
|
IndoorsFlag = $7E001B ; $00 = Outdoors | $01 = Indoors
|
||||||
MAINDESQ = $7E001C ; PPU register queues written during NMI
|
MAINDESQ = $7E001C ; PPU register queues written during NMI
|
||||||
@@ -186,6 +188,15 @@ RaceGameFlag = $7E021B ;
|
|||||||
;
|
;
|
||||||
MessageJunk = $7E0223 ; Zeroed but never used (?)
|
MessageJunk = $7E0223 ; Zeroed but never used (?)
|
||||||
;
|
;
|
||||||
|
ShopPurchaseFlag = $7E0224 ; $01 = Shop purchase item receipt.
|
||||||
|
;CoolScratch = $7E0224 ; 0x5C bytes of free ram
|
||||||
|
ItemStackPtr = $7E0226 ; Pointer into Item GFX and VRAM target queues. Word length.
|
||||||
|
; If not zero, pointer should always be left pointing at the
|
||||||
|
; next available slot in the stack during the frame.
|
||||||
|
SpriteID = $7E0230 ; 0x0A bytes. Receipt ID for main loop sprite we're handling.
|
||||||
|
AncillaVelocityZ = $7E0294 ; 0x0A bytes
|
||||||
|
AncillaZCoord = $7E029E ; 0x0A bytes
|
||||||
|
;
|
||||||
ItemReceiptID = $7E02D8 ;
|
ItemReceiptID = $7E02D8 ;
|
||||||
ItemReceiptPose = $7E02DA ; $00 = No pose | $01 = One hand up | $02 = Two hands up
|
ItemReceiptPose = $7E02DA ; $00 = No pose | $01 = One hand up | $02 = Two hands up
|
||||||
;
|
;
|
||||||
@@ -193,7 +204,7 @@ BunnyFlag = $7E02E0 ; $00 = Link | $01 = Bunny
|
|||||||
Poofing = $7E02E1 ; Flags cape and bunny poof.
|
Poofing = $7E02E1 ; Flags cape and bunny poof.
|
||||||
PoofTimer = $7E02E2 ; Countdown timer for poofing.
|
PoofTimer = $7E02E2 ; Countdown timer for poofing.
|
||||||
SwordCooldown = $7E02E3 ; Cooldown for sword after dashing through an enemy.
|
SwordCooldown = $7E02E3 ; Cooldown for sword after dashing through an enemy.
|
||||||
CutsceneFlag = $7E02E4 ; Flags various cutscenes. All non-zero behave the same.
|
CutsceneFlag = $7E02E4 ; Flags various cutscenes.
|
||||||
;
|
;
|
||||||
ItemReceiptMethod = $7E02E9 ;
|
ItemReceiptMethod = $7E02E9 ;
|
||||||
;
|
;
|
||||||
@@ -221,6 +232,8 @@ NoDamage = $7E037B ; Prevents Link from receiving damage.
|
|||||||
;
|
;
|
||||||
AncillaGeneral = $7E039F ; General use buffer for front slot ancillae. $0F bytes.
|
AncillaGeneral = $7E039F ; General use buffer for front slot ancillae. $0F bytes.
|
||||||
;
|
;
|
||||||
|
AncillaTimer = $7E03B1 ; Used as a timer for ancilla.
|
||||||
|
;
|
||||||
AncillaSearch = $7E03C4 ; Used to search through ancilla when every front slot is occupied.
|
AncillaSearch = $7E03C4 ; Used to search through ancilla when every front slot is occupied.
|
||||||
;
|
;
|
||||||
ForceSwordUp = $7E03EF ; $01 = Force sword up pose.
|
ForceSwordUp = $7E03EF ; $01 = Force sword up pose.
|
||||||
@@ -228,7 +241,7 @@ FluteTimer = $7E03F0 ; Countdown timer for being able to use the fl
|
|||||||
;
|
;
|
||||||
YButtonOverride = $7E03FC ; Y override for minigames. $00 = Selected item | $01 = Shovel | $02 = Bow
|
YButtonOverride = $7E03FC ; Y override for minigames. $00 = Selected item | $01 = Shovel | $02 = Bow
|
||||||
;
|
;
|
||||||
ItemsTaken = $7E0403 ; Items taken in a room: b k u t s e h c
|
RoomItemsTaken = $7E0403 ; Items taken in a room: b k u t s e h c
|
||||||
; b = boss kill/item | k = key/heart piece (prevents crystals)
|
; b = boss kill/item | k = key/heart piece (prevents crystals)
|
||||||
; u = 2nd key/heart piece | t = chest 4/rupees/swamp drain/bomb floor/mire wall
|
; u = 2nd key/heart piece | t = chest 4/rupees/swamp drain/bomb floor/mire wall
|
||||||
; s = chest 3/pod or dp wall | e, h, c = chest 2, 1, 0
|
; s = chest 3/pod or dp wall | e, h, c = chest 2, 1, 0
|
||||||
@@ -262,8 +275,19 @@ TileMapTile32 = $7E0698 ; Tilemap location of new tile32 objects, such
|
|||||||
SkipOAM = $7E0710 ; Set to skip OAM updates. High byte written $FF with exploding walls
|
SkipOAM = $7E0710 ; Set to skip OAM updates. High byte written $FF with exploding walls
|
||||||
OWScreenSize = $7E0712 ; Flags overworld screen size.
|
OWScreenSize = $7E0712 ; Flags overworld screen size.
|
||||||
;
|
;
|
||||||
|
OAMBuffer = $7E0800 ; Main OAM buffer sent to OAM. $200 bytes.
|
||||||
|
OAMBuffer2 = $7E0A00 ;
|
||||||
|
;
|
||||||
|
TransparencyFlag = $7E0ABD ; Flags transparency effects e.g. in Thieves Town Hellway
|
||||||
|
;
|
||||||
OWTransitionFlag = $7E0ABF ; Used for certain transitions like smith, witch, etc.
|
OWTransitionFlag = $7E0ABF ; Used for certain transitions like smith, witch, etc.
|
||||||
;
|
;
|
||||||
|
ItemGFXPtr = $7E0AFA ; Pointer for item receipt graphics transfers
|
||||||
|
; $0000 - no transfer, do nothing
|
||||||
|
; bit 7 reset - offset into ROM table
|
||||||
|
; bit 7 set - explicit bank7 address
|
||||||
|
ItemGFXTarget = $7E0AFC ; target VRAM address
|
||||||
|
;
|
||||||
ArcVariable = $7E0B08 ; Arc variable. Word length.
|
ArcVariable = $7E0B08 ; Arc variable. Word length.
|
||||||
OverlordXLow = $7E0B08 ; $08 bytes.
|
OverlordXLow = $7E0B08 ; $08 bytes.
|
||||||
OverlordXHigh = $7E0B10 ; $08 bytes.
|
OverlordXHigh = $7E0B10 ; $08 bytes.
|
||||||
@@ -279,6 +303,11 @@ SaveFileIndex = $7E0B9D ;
|
|||||||
;
|
;
|
||||||
SpriteAncillaInteract = $7E0BA0 ; If nonzero, ancillae do not interact with the sprite. $10 bytes.
|
SpriteAncillaInteract = $7E0BA0 ; If nonzero, ancillae do not interact with the sprite. $10 bytes.
|
||||||
;
|
;
|
||||||
|
AncillaCoordYLow = $7E0BFA ;
|
||||||
|
AncillaCoordXLow = $7E0C04 ;
|
||||||
|
AncillaCoordYHigh = $7E0C0E ;
|
||||||
|
AncillaCoordXHigh = $7E0C18 ;
|
||||||
|
;
|
||||||
AncillaVelocityY = $7E0C22 ; $0A bytes.
|
AncillaVelocityY = $7E0C22 ; $0A bytes.
|
||||||
AncillaVelocityX = $7E0C2C ; $0A bytes.
|
AncillaVelocityX = $7E0C2C ; $0A bytes.
|
||||||
;
|
;
|
||||||
@@ -286,6 +315,8 @@ AncillaID = $7E0C4A ; $0A bytes.
|
|||||||
;
|
;
|
||||||
AncillaGet = $7E0C5E ; Used by varius ancilla in various ways. $0F bytes.
|
AncillaGet = $7E0C5E ; Used by varius ancilla in various ways. $0F bytes.
|
||||||
;
|
;
|
||||||
|
AncillaLayer = $7E0C7C ;
|
||||||
|
;
|
||||||
SpriteBump = $7E0CD2 ; See symbols_wram.asm. $10 bytes.
|
SpriteBump = $7E0CD2 ; See symbols_wram.asm. $10 bytes.
|
||||||
;
|
;
|
||||||
TreePullKills = $7E0CFB ; Kills for tree pulls.
|
TreePullKills = $7E0CFB ; Kills for tree pulls.
|
||||||
@@ -316,7 +347,7 @@ SpriteOAMProperties = $7E0E40 ; h m w o o o o o | h = Harmless | m = m
|
|||||||
SpriteHitPoints = $7E0E50 ; Set from $0DB173
|
SpriteHitPoints = $7E0E50 ; Set from $0DB173
|
||||||
SpriteControl = $7E0E60 ; n i o s p p p t | n = Death animation? | i = Immune to attack/collion?
|
SpriteControl = $7E0E60 ; n i o s p p p t | n = Death animation? | i = Immune to attack/collion?
|
||||||
; o = Shadow | p = OAM prop palette | t = OAM prop name table
|
; o = Shadow | p = OAM prop palette | t = OAM prop name table
|
||||||
SpriteItemType = $7E0E80 ; Sprite Item Type. $10 bytes.
|
SpriteItemType = $7E0E80 ; Sprite Item Type. Also used for jump table local. $10 bytes.
|
||||||
;
|
;
|
||||||
SpriteSpawnStep = $7E0ED0 ; Related to enemies spawning other sprites (eg pikit, zirro)
|
SpriteSpawnStep = $7E0ED0 ; Related to enemies spawning other sprites (eg pikit, zirro)
|
||||||
;
|
;
|
||||||
@@ -333,6 +364,8 @@ SpriteZCoord = $7E0F70 ;
|
|||||||
SpriteVelocityZ = $7E0F80 ;
|
SpriteVelocityZ = $7E0F80 ;
|
||||||
SpriteSubPixelZ = $7E0F90 ;
|
SpriteSubPixelZ = $7E0F90 ;
|
||||||
;
|
;
|
||||||
|
CurrentSpriteSlot = $7E0FA0 ; Holds the current sprite/ancilla's index
|
||||||
|
;
|
||||||
FreezeSprites = $7E0FC1 ; "Seems to freeze sprites"
|
FreezeSprites = $7E0FC1 ; "Seems to freeze sprites"
|
||||||
;
|
;
|
||||||
PrizePackIndexes = $7E0FC7 ; $07 bytes. One for each prize pack.
|
PrizePackIndexes = $7E0FC7 ; $07 bytes. One for each prize pack.
|
||||||
@@ -354,6 +387,8 @@ DelayTimer = $7E1CE9 ;
|
|||||||
;
|
;
|
||||||
TextID = $7E1CF0 ; Message ID and page. Word length.
|
TextID = $7E1CF0 ; Message ID and page. Word length.
|
||||||
;
|
;
|
||||||
|
UpdateHUD = $7E1E03 ; Flag used to mark HUD updates and avoid heavy code segments.
|
||||||
|
;
|
||||||
ToastBuffer = $7E1E0E ; Multiworld buffer. Word length.
|
ToastBuffer = $7E1E0E ; Multiworld buffer. Word length.
|
||||||
;
|
;
|
||||||
MSUResumeTime = $7E1E6B ; Mirrored MSU block
|
MSUResumeTime = $7E1E6B ; Mirrored MSU block
|
||||||
@@ -381,6 +416,8 @@ ScratchBufferV = $7E1EB0 ; Volatile scratch buffer. Can clobber at will
|
|||||||
|
|
||||||
TileUploadBuffer = $7EA180 ; 0x300 bytes
|
TileUploadBuffer = $7EA180 ; 0x300 bytes
|
||||||
;
|
;
|
||||||
|
ItemGetGFX = $7EBD40 ; Item receipt graphics location
|
||||||
|
;
|
||||||
RoomFade = $7EC005 ; Flags fade to black on room transitions. Word length.
|
RoomFade = $7EC005 ; Flags fade to black on room transitions. Word length.
|
||||||
FadeTimer = $7EC007 ; Timer for transition fading and mosaics. Word length.
|
FadeTimer = $7EC007 ; Timer for transition fading and mosaics. Word length.
|
||||||
FadeDirection = $7EC009 ; Word length
|
FadeDirection = $7EC009 ; Word length
|
||||||
@@ -439,12 +476,18 @@ HUDArrowCount = $7EC760 ;
|
|||||||
HUDKeyDigits = $7EC764 ;
|
HUDKeyDigits = $7EC764 ;
|
||||||
;
|
;
|
||||||
BigRAM = $7EC900 ; Big buffer of free ram (0x1F00)
|
BigRAM = $7EC900 ; Big buffer of free ram (0x1F00)
|
||||||
|
ItemGFXStack = $7ECB00 ; Pointers to source of decompressed item tiles deferred to NMI loading.
|
||||||
|
ItemGFXSBankStack = $7ECB20 ; Source bank byte for above.
|
||||||
|
ItemTargetStack = $7ECB40 ; Pointers to VRAM targets for ItemGFXStack.
|
||||||
|
TotalItemCountTiles = $7ECF00 ; Cached total item count tiles for HUD. Four words high to low.
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Bank 7F
|
; Bank 7F
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DecompressionBuffer = $7F0000 ; Decompression Buffer. $2000 bytes.
|
DecompressionBuffer = $7F0000 ; Decompression Buffer. $2000 bytes.
|
||||||
|
|
||||||
|
DecompBuffer2 = $7F4000 ; Another buffer
|
||||||
|
|
||||||
base $7F5000
|
base $7F5000
|
||||||
RedrawFlag: skip 1 ;
|
RedrawFlag: skip 1 ;
|
||||||
skip 2 ; Unused
|
skip 2 ; Unused
|
||||||
@@ -461,15 +504,16 @@ BossKills: skip 1 ;
|
|||||||
LagTime: skip 4 ; Computed during stats preparation for display
|
LagTime: skip 4 ; Computed during stats preparation for display
|
||||||
RupeesCollected: skip 2 ; Computed during stats preparation for display
|
RupeesCollected: skip 2 ; Computed during stats preparation for display
|
||||||
NonChestCounter: skip 2 ; Computed during stats preparation for display
|
NonChestCounter: skip 2 ; Computed during stats preparation for display
|
||||||
skip 2 ; Unused
|
BowTrackingFlags: skip 2 ; Stores tracking bits for progressive bows before resolution to concrete item.
|
||||||
TileUploadOffsetOverride: skip 2 ; Offset override for loading sprite gfx
|
TileUploadOffsetOverride: skip 2 ; Offset override for loading sprite gfx
|
||||||
skip 3 ;
|
skip 3 ;
|
||||||
skip 9 ;
|
skip 9 ;
|
||||||
; Shop Block $7F5050 - $7F506F
|
; Shop Block $7F5050 - $7F506F
|
||||||
ShopId: skip 1 ; Shop ID. Used for indexing and loading inventory for custom shops
|
ShopId: skip 1 ; Shop ID. Used for indexing and loading inventory for custom shops
|
||||||
ShopType: skip 1 ; Shop type. $FF = vanilla shop
|
ShopType: skip 1 ; Shop type. $FF = vanilla shop
|
||||||
; t - - - - - - -
|
; t d a v - - q q
|
||||||
; t = Take-any
|
; t = $01 - Take-any | d = $01 - Door check | a = $01 = Take-all
|
||||||
|
; v = Use alt vram | q = Number of items
|
||||||
ShopInventory: skip $0D ; For three possible shop items, row major:
|
ShopInventory: skip $0D ; For three possible shop items, row major:
|
||||||
; [Item ID][Price low][Price High][Purchase Count]
|
; [Item ID][Price low][Price High][Purchase Count]
|
||||||
ShopState: skip 1 ; - - - - - l c r | Bitfield that determines whether to draw an item
|
ShopState: skip 1 ; - - - - - l c r | Bitfield that determines whether to draw an item
|
||||||
@@ -525,7 +569,7 @@ OHKOFlag: skip 1 ; Any non-zero write sets OHKO mode
|
|||||||
SpriteSwapper: skip 1 ; Loads new link sprite and glove/armor palette. No gfx or
|
SpriteSwapper: skip 1 ; Loads new link sprite and glove/armor palette. No gfx or
|
||||||
; code currently in base ROM for this.
|
; code currently in base ROM for this.
|
||||||
BootsModifier: skip 1 ; $01 = Give dash ability
|
BootsModifier: skip 1 ; $01 = Give dash ability
|
||||||
skip 1 ; Unused
|
OHKOCached: skip 1 ; "Old" OHKO flag state. Used to detect changes.
|
||||||
; Crypto Block ($7F50D0 - $7F51FF)
|
; Crypto Block ($7F50D0 - $7F51FF)
|
||||||
KeyBase: skip $10 ;
|
KeyBase: skip $10 ;
|
||||||
y: skip 4 ;
|
y: skip 4 ;
|
||||||
@@ -548,13 +592,17 @@ CompassTotalsWRAM: skip $10 ; \ Compass and map dungeon HUD display total
|
|||||||
MapTotalsWRAM: skip $10 ; / on boot for tracking.
|
MapTotalsWRAM: skip $10 ; / on boot for tracking.
|
||||||
skip $30 ; Reserved for general dungeon tracking data. May have over
|
skip $30 ; Reserved for general dungeon tracking data. May have over
|
||||||
; allocated here. Feel free to reassign.
|
; allocated here. Feel free to reassign.
|
||||||
skip $40 ; Unused
|
MapCompassFlag: skip 2 ; Used to flag overworld map drawing.
|
||||||
|
skip $3E ; Unused
|
||||||
skip $260 ; Unused
|
skip $260 ; Unused
|
||||||
DialogBuffer: skip $100 ; Dialog Buffer
|
DialogBuffer: skip $100 ; Dialog Buffer
|
||||||
;
|
;
|
||||||
PrivateBlockWRAM = $7F7700 ; Reserved for 3rd party use. $500 bytes.
|
PrivateBlockWRAM = $7F7700 ; Reserved for 3rd party use. $500 bytes.
|
||||||
; See also: $200 bytes at PrivateBlockPersistent, copied to SRAM.
|
; See also: $200 bytes at PrivateBlockPersistent, copied to SRAM.
|
||||||
BigDecompressionBuffer = $7F8000 ; Reserved for large gfx decompression buffer. $5000 bytes.
|
BigDecompressionBuffer = $7F8000 ; Reserved for large gfx decompression buffer. $5000 bytes.
|
||||||
|
; KEEP THIS AT $8000+
|
||||||
|
; its location at an address with bit 7 set is used for detecting
|
||||||
|
; ROM location versus RAM locations
|
||||||
;
|
;
|
||||||
MiniGameTime = $7FFE00 ; Time spent in mini game. 32-bits.
|
MiniGameTime = $7FFE00 ; Time spent in mini game. 32-bits.
|
||||||
MiniGameTimeFinal = $7FFE04 ; Final mini game time. 32 bits.
|
MiniGameTimeFinal = $7FFE04 ; Final mini game time. 32 bits.
|
||||||
@@ -703,7 +751,7 @@ endmacro
|
|||||||
%assertRAM(ForceSwordUp, $7E03EF)
|
%assertRAM(ForceSwordUp, $7E03EF)
|
||||||
%assertRAM(FluteTimer, $7E03F0)
|
%assertRAM(FluteTimer, $7E03F0)
|
||||||
%assertRAM(YButtonOverride, $7E03FC)
|
%assertRAM(YButtonOverride, $7E03FC)
|
||||||
%assertRAM(ItemsTaken, $7E0403)
|
%assertRAM(RoomItemsTaken, $7E0403)
|
||||||
%assertRAM(DungeonID, $7E040C)
|
%assertRAM(DungeonID, $7E040C)
|
||||||
%assertRAM(LayerAdjustment, $7E047A)
|
%assertRAM(LayerAdjustment, $7E047A)
|
||||||
%assertRAM(RoomIndexMirror, $7E048E)
|
%assertRAM(RoomIndexMirror, $7E048E)
|
||||||
@@ -722,6 +770,9 @@ endmacro
|
|||||||
%assertRAM(TileMapTile32, $7E0698)
|
%assertRAM(TileMapTile32, $7E0698)
|
||||||
%assertRAM(SkipOAM, $7E0710)
|
%assertRAM(SkipOAM, $7E0710)
|
||||||
%assertRAM(OWScreenSize, $7E0712)
|
%assertRAM(OWScreenSize, $7E0712)
|
||||||
|
%assertRAM(OAMBuffer, $7E0800)
|
||||||
|
%assertRAM(OAMBuffer2, $7E0A00)
|
||||||
|
%assertRAM(TransparencyFlag, $7E0ABD)
|
||||||
%assertRAM(OWTransitionFlag, $7E0ABF)
|
%assertRAM(OWTransitionFlag, $7E0ABF)
|
||||||
%assertRAM(TreePullKills, $7E0CFB)
|
%assertRAM(TreePullKills, $7E0CFB)
|
||||||
%assertRAM(TreePullHits, $7E0CFC)
|
%assertRAM(TreePullHits, $7E0CFC)
|
||||||
@@ -738,6 +789,7 @@ endmacro
|
|||||||
%assertRAM(AncillaVelocityX, $7E0C2C)
|
%assertRAM(AncillaVelocityX, $7E0C2C)
|
||||||
%assertRAM(AncillaID, $7E0C4A)
|
%assertRAM(AncillaID, $7E0C4A)
|
||||||
%assertRAM(AncillaGet, $7E0C5E)
|
%assertRAM(AncillaGet, $7E0C5E)
|
||||||
|
%assertRAM(AncillaLayer, $7E0C7C)
|
||||||
%assertRAM(SpriteBump, $7E0CD2)
|
%assertRAM(SpriteBump, $7E0CD2)
|
||||||
%assertRAM(SpritePosYLow, $7E0D00)
|
%assertRAM(SpritePosYLow, $7E0D00)
|
||||||
%assertRAM(SpritePosXLow, $7E0D10)
|
%assertRAM(SpritePosXLow, $7E0D10)
|
||||||
@@ -796,6 +848,7 @@ endmacro
|
|||||||
%assertRAM(SpriteZCoord, $7E0F70)
|
%assertRAM(SpriteZCoord, $7E0F70)
|
||||||
%assertRAM(SpriteVelocityZ, $7E0F80)
|
%assertRAM(SpriteVelocityZ, $7E0F80)
|
||||||
%assertRAM(SpriteSubPixelZ, $7E0F90)
|
%assertRAM(SpriteSubPixelZ, $7E0F90)
|
||||||
|
%assertRAM(CurrentSpriteSlot, $7E0FA0)
|
||||||
%assertRAM(FreezeSprites, $7E0FC1)
|
%assertRAM(FreezeSprites, $7E0FC1)
|
||||||
%assertRAM(PrizePackIndexes, $7E0FC7)
|
%assertRAM(PrizePackIndexes, $7E0FC7)
|
||||||
%assertRAM(SpriteCoordCacheX, $7E0FD8)
|
%assertRAM(SpriteCoordCacheX, $7E0FD8)
|
||||||
@@ -915,6 +968,7 @@ endmacro
|
|||||||
%assertRAM(TxStatus, $7F53FF)
|
%assertRAM(TxStatus, $7F53FF)
|
||||||
%assertRAM(CompassTotalsWRAM, $7F5410)
|
%assertRAM(CompassTotalsWRAM, $7F5410)
|
||||||
%assertRAM(MapTotalsWRAM, $7F5420)
|
%assertRAM(MapTotalsWRAM, $7F5420)
|
||||||
|
%assertRAM(MapCompassFlag, $7F5460)
|
||||||
%assertRAM(DialogBuffer, $7F5700)
|
%assertRAM(DialogBuffer, $7F5700)
|
||||||
%assertRAM(MiniGameTime, $7FFE00)
|
%assertRAM(MiniGameTime, $7FFE00)
|
||||||
%assertRAM(MiniGameTimeFinal, $7FFE04)
|
%assertRAM(MiniGameTimeFinal, $7FFE04)
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ LoadBombCount16:
|
|||||||
RTL
|
RTL
|
||||||
StoreBombCount:
|
StoreBombCount:
|
||||||
JSL IncrementBombsPlacedCounter
|
JSL IncrementBombsPlacedCounter
|
||||||
|
INC.w UpdateHUD
|
||||||
PHA : LDA.l InfiniteBombs : BEQ .finite
|
PHA : LDA.l InfiniteBombs : BEQ .finite
|
||||||
.infinite
|
.infinite
|
||||||
PLA : LDA.b #$01 : RTL
|
PLA : LDA.b #$01 : RTL
|
||||||
|
|||||||
39
rngfixes.asm
39
rngfixes.asm
@@ -21,7 +21,7 @@ RigChestRNG:
|
|||||||
RTL
|
RTL
|
||||||
.forceHeart
|
.forceHeart
|
||||||
LDA.b #$33 : STA.b ScrapBufferBD+$0B ; assure the correct state if player talked to shopkeeper
|
LDA.b #$33 : STA.b ScrapBufferBD+$0B ; assure the correct state if player talked to shopkeeper
|
||||||
LDA.w ItemsTaken : AND.b #$40 : BNE .notHeart
|
LDA.w RoomItemsTaken : AND.b #$40 : BNE .notHeart
|
||||||
LDA.b #$07 ; give prize item
|
LDA.b #$07 ; give prize item
|
||||||
RTL
|
RTL
|
||||||
.notHeart
|
.notHeart
|
||||||
@@ -35,9 +35,8 @@ RTL
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FixChestCounterForChestGame:
|
FixChestCounterForChestGame:
|
||||||
JSL.l DecrementItemCounter
|
JSL DecrementItemCounter
|
||||||
JSL.l $0DBA71
|
JML $8DBA71
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
RNG_Lanmolas1:
|
RNG_Lanmolas1:
|
||||||
LDA.b #$00 : BRA _rng_done
|
LDA.b #$00 : BRA _rng_done
|
||||||
@@ -133,20 +132,20 @@ InitRNGPointerTable:
|
|||||||
PLP : PLX
|
PLP : PLX
|
||||||
RTL
|
RTL
|
||||||
.rngDefaults
|
.rngDefaults
|
||||||
dw #$0000 ; 00 = Lanmolas 1
|
dw $0000 ; 00 = Lanmolas 1
|
||||||
dw #$0040 ; 01 = Moldorm 1
|
dw $0040 ; 01 = Moldorm 1
|
||||||
dw #$0080 ; 02 = Agahnim 1
|
dw $0080 ; 02 = Agahnim 1
|
||||||
dw #$00C0 ; 03 = Helmasaur
|
dw $00C0 ; 03 = Helmasaur
|
||||||
dw #$0100 ; 04 = Arrghus
|
dw $0100 ; 04 = Arrghus
|
||||||
dw #$0140 ; 05 = Mothula
|
dw $0140 ; 05 = Mothula
|
||||||
dw #$0180 ; 06 = Kholdstare
|
dw $0180 ; 06 = Kholdstare
|
||||||
dw #$01C0 ; 07 = Vitreous
|
dw $01C0 ; 07 = Vitreous
|
||||||
dw #$0200 ; 08 = Trinexx
|
dw $0200 ; 08 = Trinexx
|
||||||
dw #$0240 ; 09 = Lanmolas 2
|
dw $0240 ; 09 = Lanmolas 2
|
||||||
dw #$0280 ; 10 = Moldorm 2
|
dw $0280 ; 10 = Moldorm 2
|
||||||
dw #$02C0 ; 11 = Agahnim 2
|
dw $02C0 ; 11 = Agahnim 2
|
||||||
dw #$0300 ; 12 = Agahnim 2 Phantoms
|
dw $0300 ; 12 = Agahnim 2 Phantoms
|
||||||
dw #$0340 ; 13 = Ganon
|
dw $0340 ; 13 = Ganon
|
||||||
dw #$0380 ; 14 = Ganon Extra Warp
|
dw $0380 ; 14 = Ganon Extra Warp
|
||||||
dw #$03C0 ; 15 = Standard Escape Enemy Drops
|
dw $03C0 ; 15 = Standard Escape Enemy Drops
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ LoadRoomHook:
|
|||||||
LDX.b RoomIndex ; Room ID
|
LDX.b RoomIndex ; Room ID
|
||||||
LDA.l RoomCallbackTable, X
|
LDA.l RoomCallbackTable, X
|
||||||
SEP #$10 ; 8 bit XY
|
SEP #$10 ; 8 bit XY
|
||||||
JSL UseImplicitRegIndexedLongJumpTable
|
JSL JumpTableLong
|
||||||
; Callback routines:
|
; Callback routines:
|
||||||
dl NoCallback ; 00
|
dl NoCallback ; 00
|
||||||
dl IcePalaceBombosSE ; 01
|
dl IcePalaceBombosSE ; 01
|
||||||
|
|||||||
177
save.asm
177
save.asm
@@ -1,60 +1,74 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
WriteSaveChecksumAndBackup:
|
WriteSaveChecksumAndBackup:
|
||||||
LDX.w #$0000 : TXA : - ; Checksum first $04FE bytes
|
TDC
|
||||||
CLC : ADC.l SaveDataWRAM, X
|
CLC
|
||||||
INX #2
|
LDX.w #$004FC
|
||||||
CPX.w #$04FE : BNE -
|
-
|
||||||
LDX.w #$0000 : - ; Checksum extended save data
|
ADC.l CartridgeSRAM, X
|
||||||
CLC : ADC.l ExtendedFileNameWRAM, X
|
DEX #2
|
||||||
INX #2
|
BPL -
|
||||||
CPX.w #$0FFE : BNE -
|
LDX.w #$0FFE
|
||||||
|
-
|
||||||
|
ADC.l ExtendedFileNameSRAM, X
|
||||||
|
DEX #2
|
||||||
|
BPL -
|
||||||
STA.b Scrap00
|
STA.b Scrap00
|
||||||
LDA.w #$5A5A
|
LDA.w #$5A5A
|
||||||
SEC : SBC.b Scrap00
|
SEC : SBC.b Scrap00
|
||||||
STA.l InverseChecksumSRAM
|
STA.l InverseChecksumSRAM
|
||||||
|
|
||||||
|
.backup_save
|
||||||
PHB
|
PHB
|
||||||
LDA.w #$14FF ; \
|
LDA.w #$14FF
|
||||||
LDX.w #CartridgeSRAM&$FFFF ; | Copies $1500 bytes from beginning of cart SRAM to
|
LDX.w #CartridgeSRAM
|
||||||
LDY.w #SaveBackupSRAM&$FFFF ; | $704000
|
LDY.w #SaveBackupSRAM
|
||||||
MVN !SRAMBank, !SRAMBank ; /
|
MVN CartridgeSRAM>>16, CartridgeSRAM>>16
|
||||||
PLB
|
PLB
|
||||||
|
TDC
|
||||||
|
TAX
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ValidateSRAM:
|
ValidateSRAM:
|
||||||
REP #$30
|
REP #$30
|
||||||
LDX.w #$0000 : TXA : - ; Checksum first $04FE bytes
|
TDC
|
||||||
CLC : ADC.l CartridgeSRAM, X
|
CLC
|
||||||
INX #2
|
LDX.w #$04FC
|
||||||
CPX.w #$04FE : BNE -
|
-
|
||||||
LDX.w #$0000 : - ; Checksum extended save data
|
ADC.l CartridgeSRAM, X
|
||||||
CLC : ADC.l ExtendedFileNameSRAM, X
|
DEX #2
|
||||||
INX #2
|
BPL -
|
||||||
CPX.w #$0FFE : BNE -
|
LDX.w #$0FFE
|
||||||
|
-
|
||||||
|
ADC.l ExtendedFileNameSRAM, X
|
||||||
|
DEX #2
|
||||||
|
BPL -
|
||||||
STA.b Scrap00
|
STA.b Scrap00
|
||||||
LDA.w #$5A5A
|
LDA.w #$5A5A
|
||||||
SEC : SBC.b Scrap00
|
SEC : SBC.b Scrap00
|
||||||
CMP.l InverseChecksumSRAM : BEQ .goodchecksum
|
CMP.l InverseChecksumSRAM : BEQ .goodchecksum
|
||||||
LDX.w #$0000 : TXA : - ; Do the same for the backup save
|
TDC
|
||||||
CLC : ADC.l SaveBackupSRAM, X
|
LDX.w #$04FC
|
||||||
INX #2
|
-
|
||||||
CPX.w #$04FE : BNE -
|
ADC.l SaveBackupSRAM, X
|
||||||
LDX.w #$0000 : -
|
DEX #2
|
||||||
CLC : ADC.l SaveBackupSRAM+$500, X
|
BPL -
|
||||||
INX #2
|
LDX.w #$0FFE
|
||||||
CPX.w #$0FFE : BNE -
|
-
|
||||||
|
ADC.l SaveBackupSRAM+$500, X
|
||||||
|
DEX #2
|
||||||
|
BPL -
|
||||||
STA.b Scrap00
|
STA.b Scrap00
|
||||||
LDA.w #$5A5A
|
LDA.w #$5A5A
|
||||||
SEC : SBC.b Scrap00
|
SEC : SBC.b Scrap00
|
||||||
CMP.l SaveBackupSRAM+$4FE : BEQ +
|
CMP.l SaveBackupSRAM+$4FE : BEQ +
|
||||||
TDC : STA.l FileValiditySRAM ; Delete save by way of zeroing validity marker
|
TDC : STA.l FileValiditySRAM ; Delete save
|
||||||
BRA .goodchecksum : +
|
BRA .goodchecksum
|
||||||
|
+
|
||||||
PHB
|
PHB
|
||||||
LDA.w #$14FF ; \
|
LDA.w #$14FF
|
||||||
LDX.w #SaveBackupSRAM&$FFFF ; | Copies $1500 bytes from backup on cart SRAM to
|
LDX.w #SaveBackupSRAM
|
||||||
LDY.w #CartridgeSRAM&$FFFF ; | main save location at $700000
|
LDY.w #CartridgeSRAM
|
||||||
MVN !SRAMBank, !SRAMBank ; /
|
MVN CartridgeSRAM>>16, CartridgeSRAM>>16
|
||||||
PLB
|
PLB
|
||||||
|
|
||||||
.goodchecksum
|
.goodchecksum
|
||||||
@@ -146,88 +160,23 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CopyExtendedSaveFileToWRAM:
|
CopyExtendedSaveFileToWRAM:
|
||||||
PHA
|
PHA
|
||||||
SEP #$30
|
PHB
|
||||||
LDA.w DMAP0 : PHA ; preserve DMA parameters
|
LDA.w #$0FFF
|
||||||
LDA.w BBAD0 : PHA ; preserve DMA parameters
|
LDX.w #ExtendedSaveDataSRAM
|
||||||
LDA.w A1T0L : PHA ; preserve DMA parameters
|
LDY.w #ExtendedSaveDataWRAM
|
||||||
LDA.w A1T0H : PHA ; preserve DMA parameters
|
MVN ExtendedSaveDataWRAM>>16, CartridgeSRAM>>16
|
||||||
LDA.w A1B0 : PHA ; preserve DMA parameters
|
PLB
|
||||||
LDA.w DAS0L : PHA ; preserve DMA parameters
|
|
||||||
LDA.w DAS0H : PHA ; preserve DMA parameters
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
STZ.w NMITIMEN ; Disable NMI, V/H, joypad
|
|
||||||
STZ.w HDMAEN ; Disable HDMA
|
|
||||||
LDA.b #$00 : STA.w DMAP0 ; set DMA transfer direction A -> B, bus A auto increment, single-byte mode
|
|
||||||
|
|
||||||
LDA.b #$80 : STA.w BBAD0 ; set bus B source to WRAM register
|
|
||||||
|
|
||||||
LDA.b #$00 : STA.w WMADDL ; set WRAM register source address
|
|
||||||
LDA.b #$60 : STA.w WMADDH
|
|
||||||
LDA.b #$7F : STA.w WMADDB
|
|
||||||
|
|
||||||
STZ.w A1T0L ; set bus A destination address to SRAM
|
|
||||||
LDA.b #$05 : STA.w A1T0H
|
|
||||||
LDA.b #$70 : STA.w A1B0
|
|
||||||
|
|
||||||
LDA.b #$00 : STA.w DAS0L ; set transfer size to 0x1000
|
|
||||||
LDA.b #$10 : STA.w DAS0H ; STZ DAS0B
|
|
||||||
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
LDA.b #$81 : STA.w NMITIMEN ; Re-enable NMI and joypad
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
PLA : STA.w DAS0H ; restore DMA parameters
|
|
||||||
PLA : STA.w DAS0L ; restore DMA parameters
|
|
||||||
PLA : STA.w A1B0 ; restore DMA parameters
|
|
||||||
PLA : STA.w A1T0H ; restore DMA parameters
|
|
||||||
PLA : STA.w A1T0L ; restore DMA parameters
|
|
||||||
PLA : STA.w BBAD0 ; restore DMA parameters
|
|
||||||
PLA : STA.w DMAP0 ; restore DMA parameters
|
|
||||||
REP #$30
|
|
||||||
PLA
|
PLA
|
||||||
STA.l $7EC00D ; what we wrote over
|
STA.l $7EC00D ; What we wrote over. Keep this write last.
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CopyExtendedWRAMSaveFileToSRAM:
|
CopyExtendedWRAMSaveFileToSRAM:
|
||||||
PHA
|
|
||||||
PHB
|
PHB
|
||||||
SEP #$30
|
LDA.w #$0FFF
|
||||||
LDA.b #$00 : PHA : PLB
|
LDX.w #ExtendedSaveDataSRAM
|
||||||
LDA.w DMAP0 : PHA ; preserve DMA parameters
|
LDY.w #ExtendedSaveDataWRAM
|
||||||
LDA.w BBAD0 : PHA ; preserve DMA parameters
|
MVN CartridgeSRAM>>16, ExtendedSaveDataWRAM>>16
|
||||||
LDA.w A1T0L : PHA ; preserve DMA parameters
|
|
||||||
LDA.w A1T0H : PHA ; preserve DMA parameters
|
|
||||||
LDA.w A1B0 : PHA ; preserve DMA parameters
|
|
||||||
LDA.w DAS0L : PHA ; preserve DMA parameters
|
|
||||||
LDA.w DAS0H : PHA ; preserve DMA parameters
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
STZ.w NMITIMEN ; Disable NMI, V/H, joypad
|
|
||||||
STZ.w HDMAEN ; Disable HDMA
|
|
||||||
LDA.b #$80 : STA.w DMAP0 ; set DMA transfer direction B -> A, bus A auto increment, single-byte mode
|
|
||||||
|
|
||||||
STA.w BBAD0 ; set bus B source to WRAM register
|
|
||||||
|
|
||||||
LDA.b #$00 : STA.w WMADDL ; set WRAM register source address
|
|
||||||
LDA.b #$60 : STA.w WMADDH
|
|
||||||
LDA.b #$7F : STA.w WMADDB
|
|
||||||
|
|
||||||
STZ.w A1T0L ; set bus A destination address to SRAM
|
|
||||||
LDA.b #$05 : STA.w A1T0H
|
|
||||||
LDA.b #$70 : STA.w A1B0
|
|
||||||
|
|
||||||
LDA.b #$10 : STA.w DAS0L ; set transfer size to 0xB00
|
|
||||||
LDA.b #$0B : STA.w DAS0H ; STZ DAS0B
|
|
||||||
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
LDA.b #$81 : STA.w NMITIMEN; Re-enable NMI and joypad
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
PLA : STA.w DAS0H ; restore DMA parameters
|
|
||||||
PLA : STA.w DAS0L ; restore DMA parameters
|
|
||||||
PLA : STA.w A1B0 ; restore DMA parameters
|
|
||||||
PLA : STA.w A1T0H ; restore DMA parameters
|
|
||||||
PLA : STA.w A1T0L ; restore DMA parameters
|
|
||||||
PLA : STA.w BBAD0 ; restore DMA parameters
|
|
||||||
PLA : STA.w DMAP0 ; restore DMA parameters
|
|
||||||
REP #$30
|
|
||||||
PLB
|
PLB
|
||||||
PLA
|
TDC
|
||||||
|
TAX
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
308
shopkeeper.asm
308
shopkeeper.asm
@@ -1,39 +1,7 @@
|
|||||||
;--------------------------------------------------------------------------------
|
|
||||||
; 291 - Moldorm Cave
|
|
||||||
; 286 - Northeast Dark Swamp Cave
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
!FREE_TILE_BUFFER = $1180
|
!FREE_TILE_BUFFER = $1180
|
||||||
; A = Tile ID
|
!FREE_TILE = $5C60
|
||||||
macro UploadOAM(dest)
|
!FREE_TILE_ALT = $5A40
|
||||||
PHA : PHP
|
|
||||||
|
|
||||||
PHA
|
|
||||||
REP #$20 ; set 16-bit accumulator
|
|
||||||
LDA.w #$0000 : STA.l SpriteOAM
|
|
||||||
STA.l SpriteOAM+2
|
|
||||||
LDA.w #$0200 : STA.l SpriteOAM+6
|
|
||||||
SEP #$20 ; set 8-bit accumulator
|
|
||||||
LDA.b <dest> : STA.l SpriteOAM+4
|
|
||||||
|
|
||||||
LDA.b $01,s
|
|
||||||
|
|
||||||
JSL.l GetSpritePalette
|
|
||||||
STA.l SpriteOAM+5 : STA.l SpriteOAM+13
|
|
||||||
PLA
|
|
||||||
JSL.l IsNarrowSprite : BCS .narrow
|
|
||||||
|
|
||||||
BRA .done
|
|
||||||
|
|
||||||
.narrow
|
|
||||||
REP #$20 ; set 16-bit accumulator
|
|
||||||
LDA.w #$0000 : STA.l SpriteOAM+7
|
|
||||||
STA.l SpriteOAM+14
|
|
||||||
LDA.w #$0800 : STA.l SpriteOAM+9
|
|
||||||
LDA.w #$3400 : STA.l SpriteOAM+11
|
|
||||||
|
|
||||||
.done
|
|
||||||
PLP : PLA
|
|
||||||
endmacro
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; $0A : Digit Offset
|
; $0A : Digit Offset
|
||||||
; $0C-$0D : Value to Display
|
; $0C-$0D : Value to Display
|
||||||
@@ -137,8 +105,8 @@ SpritePrep_ShopKeeper:
|
|||||||
LDX.w #$0000
|
LDX.w #$0000
|
||||||
LDY.w #$0000
|
LDY.w #$0000
|
||||||
-
|
-
|
||||||
TYA : CMP.l ShopCapacity : !BLT ++ : JMP .stop : ++
|
TYA : CMP.l ShopCapacity : !BLT ++ : JMP .done : ++
|
||||||
LDA.l ShopContentsTable+1, X : CMP.b #$FF : BNE ++ : JMP .stop : ++
|
LDA.l ShopContentsTable+1, X : CMP.b #$FF : BNE ++ : JMP .done : ++
|
||||||
|
|
||||||
LDA.l ShopContentsTable, X : CMP.l ShopId : BEQ ++ : JMP .next : ++
|
LDA.l ShopContentsTable, X : CMP.l ShopId : BEQ ++ : JMP .next : ++
|
||||||
LDA.l ShopContentsTable+1, X : PHX : TYX : STA.l ShopInventory, X : PLX
|
LDA.l ShopContentsTable+1, X : PHX : TYX : STA.l ShopInventory, X : PLX
|
||||||
@@ -161,24 +129,23 @@ SpritePrep_ShopKeeper:
|
|||||||
++
|
++
|
||||||
PLY : +++
|
PLY : +++
|
||||||
|
|
||||||
PHX : PHY
|
PHX : PHY
|
||||||
PHX : TYX : LDA.l ShopInventory, X : PLX : TAY
|
PHX : TYX : LDA.l ShopInventory, X : PLX
|
||||||
REP #$20 ; set 16-bit accumulator
|
SEP #$10
|
||||||
LDA.b 1,s : TAX : LDA.l .tile_offsets, X : TAX
|
JSL.l AttemptItemSubstitution
|
||||||
JSR LoadTile
|
JSL.l ResolveLootIDLong
|
||||||
PLY : PLX
|
TAY
|
||||||
INY #4
|
REP #$30
|
||||||
|
LDA.b 1,s : TAX : LDA.l .tile_offsets, X : TAX
|
||||||
|
JSR.w SetupTileTransfer
|
||||||
|
PLY : PLX
|
||||||
|
INY #4
|
||||||
.next
|
.next
|
||||||
INX #8
|
INX #8
|
||||||
JMP -
|
JMP -
|
||||||
.stop
|
|
||||||
|
|
||||||
LDA.b #Shopkeeper_UploadVRAMTilesLong>>16 : STA.w NMIAux+2
|
|
||||||
LDA.b #Shopkeeper_UploadVRAMTilesLong>>8 : STA.w NMIAux+1
|
|
||||||
LDA.b #Shopkeeper_UploadVRAMTilesLong>>0 : STA.w NMIAux
|
|
||||||
|
|
||||||
.done
|
.done
|
||||||
|
SEP #$20
|
||||||
LDA.l ShopType : BIT.b #$20 : BEQ .notTakeAll ; Take-all
|
LDA.l ShopType : BIT.b #$20 : BEQ .notTakeAll ; Take-all
|
||||||
.takeAll
|
.takeAll
|
||||||
|
|
||||||
@@ -217,122 +184,42 @@ dw $0100, $0000
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; X - Tile Buffer Offset
|
; X - Tile Buffer Offset
|
||||||
; Y - Item ID
|
; Y - Item ID
|
||||||
LoadTile:
|
SetupTileTransfer:
|
||||||
TXA : !ADD.w #!FREE_TILE_BUFFER : STA.l TileUploadOffsetOverride ; load offset from X
|
LDA.l ShopType : BIT.w #$0010 : BNE .alt_vram
|
||||||
SEP #$30 ; set 8-bit accumulator & index registers
|
TXA : LSR #2
|
||||||
TYA ; load item ID from Y
|
CLC : ADC.w #!FREE_TILE
|
||||||
JSL.l GetSpriteID ; convert loot id to sprite id
|
BRA .store_target
|
||||||
JSL.l GetAnimatedSpriteTile_variable
|
.alt_vram
|
||||||
|
TXA : LSR #2
|
||||||
|
CLC : ADC.w #!FREE_TILE_ALT
|
||||||
|
.store_target
|
||||||
|
LDX.w ItemStackPtr
|
||||||
|
STA.l ItemTargetStack,X
|
||||||
|
|
||||||
|
TYA : ASL : TAX
|
||||||
|
LDA.l StandingItemGraphicsOffsets,X
|
||||||
|
LDX.w ItemStackPtr
|
||||||
|
STA.l ItemGFXStack,X
|
||||||
|
|
||||||
|
TXA
|
||||||
|
INC #2
|
||||||
|
STA.l ItemStackPtr
|
||||||
|
|
||||||
|
LDA.w #$0000
|
||||||
REP #$10 ; set 16-bit index registers
|
REP #$10 ; set 16-bit index registers
|
||||||
|
SEP #$20
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;ShopInventory, X
|
;ShopInventory, X
|
||||||
;[id][$lo][$hi][purchase_counter]
|
;[id][$lo][$hi][purchase_counter]
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Shopkeeper_UploadVRAMTilesLong:
|
|
||||||
JSR.w Shopkeeper_UploadVRAMTiles
|
|
||||||
RTL
|
|
||||||
Shopkeeper_UploadVRAMTiles:
|
|
||||||
LDA.w DMAP0 : PHA ; preserve DMA parameters
|
|
||||||
LDA.w BBAD0 : PHA ; preserve DMA parameters
|
|
||||||
LDA.w A1T0L : PHA ; preserve DMA parameters
|
|
||||||
LDA.w A1T0H : PHA ; preserve DMA parameters
|
|
||||||
LDA.w A1B0 : PHA ; preserve DMA parameters
|
|
||||||
LDA.w DAS0L : PHA ; preserve DMA parameters
|
|
||||||
LDA.w DAS0H : PHA ; preserve DMA parameters
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
LDA.b #$01 : STA.w DMAP0 ; set DMA transfer direction A -> B, bus A auto increment, double-byte mode
|
|
||||||
LDA.b #$18 : STA.w BBAD0 ; set bus B destination to VRAM register
|
|
||||||
LDA.b #$80 : STA.w VMAIN ; set VRAM to increment by 2 on high register write
|
|
||||||
|
|
||||||
LDA.b #$80 : STA.w A1T0L ; set bus A source address to tile buffer
|
|
||||||
LDA.b #$A1 : STA.w A1T0H
|
|
||||||
LDA.b #$7E : STA.w A1B0
|
|
||||||
|
|
||||||
LDA.l ShopType : AND.b #$10 : BNE .special
|
|
||||||
JMP .normal
|
|
||||||
|
|
||||||
.special
|
|
||||||
|
|
||||||
LDA.b #$40 : STA.w DAS0L : STZ.b DAS0H ; set transfer size to 0x40
|
|
||||||
LDA.b #$40 : STA.w VMADDL ; set VRAM register destination address
|
|
||||||
LDA.b #$5A : STA.w VMADDH
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
|
|
||||||
LDA.b #$40 : STA.w DAS0L : STZ.b DAS0H ; set transfer size to 0x40
|
|
||||||
LDA.b #$40 : STA.w VMADDL ; set VRAM register destination address
|
|
||||||
LDA.b #$5B : STA.w VMADDH
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
|
|
||||||
LDA.b #$40 : STA.w DAS0L : STZ.b DAS0H ; set transfer size to 0x40
|
|
||||||
LDA.b #$60 : STA.w VMADDL ; set VRAM register destination address
|
|
||||||
LDA.b #$5A : STA.w VMADDH
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
|
|
||||||
LDA.b #$40 : STA.w DAS0L : STZ.b DAS0H ; set transfer size to 0x40
|
|
||||||
LDA.b #$60 : STA.w VMADDL ; set VRAM register destination address
|
|
||||||
LDA.b #$5B : STA.w VMADDH
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
|
|
||||||
LDA.b #$40 : STA.w DAS0L : STZ.b DAS0H ; set transfer size to 0x40
|
|
||||||
LDA.b #$80 : STA.w VMADDL ; set VRAM register destination address
|
|
||||||
LDA.b #$5A : STA.w VMADDH
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
|
|
||||||
LDA.b #$40 : STA.w DAS0L : STZ.b DAS0H ; set transfer size to 0x40
|
|
||||||
LDA.b #$80 : STA.w VMADDL ; set VRAM register destination address
|
|
||||||
LDA.b #$5B : STA.w VMADDH
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
JMP .end
|
|
||||||
|
|
||||||
.normal
|
|
||||||
LDA.b #$40 : STA.w DAS0L : STZ.b DAS0H ; set transfer size to 0x40
|
|
||||||
LDA.b #$60 : STA.w VMADDL ; set VRAM register destination address
|
|
||||||
LDA.b #$5C : STA.w VMADDH
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
|
|
||||||
LDA.b #$40 : STA.w DAS0L : STZ.b DAS0H ; set transfer size to 0x40
|
|
||||||
LDA.b #$60 : STA.w VMADDL ; set VRAM register destination address
|
|
||||||
LDA.b #$5D : STA.w VMADDH
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
|
|
||||||
LDA.b #$40 : STA.w DAS0L : STZ.b DAS0H ; set transfer size to 0x40
|
|
||||||
LDA.b #$80 : STA.w VMADDL ; set VRAM register destination address
|
|
||||||
LDA.b #$5C : STA.w VMADDH
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
|
|
||||||
LDA.b #$40 : STA.w DAS0L : STZ.b DAS0H ; set transfer size to 0x40
|
|
||||||
LDA.b #$80 : STA.w VMADDL ; set VRAM register destination address
|
|
||||||
LDA.b #$5D : STA.w VMADDH
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
|
|
||||||
LDA.b #$40 : STA.w DAS0L : STZ.b DAS0H ; set transfer size to 0x40
|
|
||||||
LDA.b #$A0 : STA.w VMADDL ; set VRAM register destination address
|
|
||||||
LDA.b #$5C : STA.w VMADDH
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
|
|
||||||
LDA.b #$40 : STA.w DAS0L : STZ.b DAS0H ; set transfer size to 0x40
|
|
||||||
LDA.b #$A0 : STA.w VMADDL ; set VRAM register destination address
|
|
||||||
LDA.b #$5D : STA.w VMADDH
|
|
||||||
LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
.end
|
|
||||||
PLA : STA.w DAS0H ; restore DMA parameters
|
|
||||||
PLA : STA.w DAS0L ; restore DMA parameters
|
|
||||||
PLA : STA.w A1B0 ; restore DMA parameters
|
|
||||||
PLA : STA.w A1T0H ; restore DMA parameters
|
|
||||||
PLA : STA.w A1T0L ; restore DMA parameters
|
|
||||||
PLA : STA.w BBAD0 ; restore DMA parameters
|
|
||||||
PLA : STA.w DMAP0 ; restore DMA parameters
|
|
||||||
RTS
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Shopkepeer_CallOriginal:
|
Shopkepeer_CallOriginal:
|
||||||
PLA : PLA : PLA
|
PLA : PLA : PLA
|
||||||
LDA.b #ShopkeeperJumpTable>>16 : PHA
|
LDA.b #ShopkeeperJumpTable>>16 : PHA
|
||||||
LDA.b #ShopkeeperJumpTable>>8 : PHA
|
LDA.b #ShopkeeperJumpTable>>8 : PHA
|
||||||
LDA.b #ShopkeeperJumpTable : PHA
|
LDA.b #ShopkeeperJumpTable : PHA
|
||||||
LDA.w SpriteItemType, X
|
LDA.w SpriteItemType, X
|
||||||
JML.l UseImplicitRegIndexedLocalJumpTable
|
JML.l JumpTableLocal
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Sprite_ShopKeeper:
|
Sprite_ShopKeeper:
|
||||||
|
|
||||||
@@ -476,59 +363,59 @@ Shopkeeper_SetupHitboxes:
|
|||||||
RTS
|
RTS
|
||||||
|
|
||||||
Shopkeeper_BuyItem:
|
Shopkeeper_BuyItem:
|
||||||
PHX : PHY
|
PHX : PHY
|
||||||
TYX
|
TYX
|
||||||
|
|
||||||
LDA.l ShopInventory, X
|
LDA.l ShopInventory, X
|
||||||
CMP.b #$0E : BEQ .refill ; Bee Refill
|
CMP.b #$0E : BEQ .refill ; Bee Refill
|
||||||
CMP.b #$2E : BEQ .refill ; Red Potion Refill
|
CMP.b #$2E : BEQ .refill ; Red Potion Refill
|
||||||
CMP.b #$2F : BEQ .refill ; Green Potion Refill
|
CMP.b #$2F : BEQ .refill ; Green Potion Refill
|
||||||
CMP.b #$30 : BEQ .refill ; Blue Potion Refill
|
CMP.b #$30 : BEQ .refill ; Blue Potion Refill
|
||||||
BRA +
|
BRA +
|
||||||
.refill
|
.refill
|
||||||
JSL.l Sprite_GetEmptyBottleIndex : BMI .full_bottles
|
JSL.l Sprite_GetEmptyBottleIndex : BMI .full_bottles
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA.l ShopType : AND.b #$80 : BNE .buy ; don't charge if this is a take-any
|
LDA.l ShopType : AND.b #$80 : BNE .buy ; don't charge if this is a take-any
|
||||||
REP #$20 : LDA.l CurrentRupees : CMP.l ShopInventory+1, X : SEP #$20 : !BGE .buy
|
REP #$20 : LDA.l CurrentRupees : CMP.l ShopInventory+1, X : SEP #$20 : !BGE .buy
|
||||||
|
|
||||||
.cant_afford
|
.cant_afford
|
||||||
LDA.b #$7A
|
LDA.b #$7A
|
||||||
LDY.b #$01
|
LDY.b #$01
|
||||||
JSL.l Sprite_ShowMessageUnconditional
|
JSL.l Sprite_ShowMessageUnconditional
|
||||||
LDA.b #$3C : STA.w SFX2 ; error sound
|
LDA.b #$3C : STA.w SFX2 ; error sound
|
||||||
JMP .done
|
JMP .done
|
||||||
.full_bottles
|
.full_bottles
|
||||||
LDA.b #$6B
|
LDA.b #$6B : LDY.b #$01
|
||||||
LDY.b #$01
|
JSL.l Sprite_ShowMessageUnconditional
|
||||||
JSL.l Sprite_ShowMessageUnconditional
|
LDA.b #$3C : STA.w SFX2 ; error sound
|
||||||
LDA.b #$3C : STA.w SFX2 ; error sound
|
JMP .done
|
||||||
JMP .done
|
.buy
|
||||||
.buy
|
LDA.l ShopType : AND.b #$80 : BNE ++ ; don't charge if this is a take-any
|
||||||
LDA.l ShopType : AND.b #$80 : BNE ++ ; don't charge if this is a take-any
|
REP #$20 : LDA.l CurrentRupees : !SUB ShopInventory+1, X : STA.l CurrentRupees : SEP #$20 ; Take price away
|
||||||
REP #$20 : LDA.l CurrentRupees : !SUB ShopInventory+1, X : STA.l CurrentRupees : SEP #$20 ; Take price away
|
++
|
||||||
++
|
INC.w ShopPurchaseFlag
|
||||||
LDA.l ShopInventory, X : TAY : JSL.l Link_ReceiveItem
|
LDA.l ShopInventory, X : TAY : JSL.l Link_ReceiveItem
|
||||||
LDA.l ShopInventory+3, X : INC : STA.l ShopInventory+3, X
|
LDA.l ShopInventory+3, X : INC : STA.l ShopInventory+3, X
|
||||||
|
|
||||||
TXA : LSR #2 : TAX
|
TXA : LSR #2 : TAX
|
||||||
LDA.l ShopType : BIT.b #$80 : BNE +
|
LDA.l ShopType : BIT.b #$80 : BNE +
|
||||||
LDA.l ShopState : ORA.w Shopkeeper_ItemMasks, X : STA.l ShopState
|
LDA.l ShopState : ORA.w Shopkeeper_ItemMasks, X : STA.l ShopState
|
||||||
PHX
|
PHX
|
||||||
TXA : !ADD ShopSRAMIndex : TAX
|
TXA : !ADD ShopSRAMIndex : TAX
|
||||||
LDA.l PurchaseCounts, X : INC : BEQ +++ : STA.l PurchaseCounts, X : +++
|
LDA.l PurchaseCounts, X : INC : BEQ +++ : STA.l PurchaseCounts, X : +++
|
||||||
PLX
|
PLX
|
||||||
BRA ++
|
BRA ++
|
||||||
+ ; Take-any
|
+ ; Take-any
|
||||||
BIT.b #$20 : BNE .takeAll
|
BIT.b #$20 : BNE .takeAll
|
||||||
.takeAny
|
.takeAny
|
||||||
LDA.l ShopState : ORA.b #$07 : STA.l ShopState
|
LDA.l ShopState : ORA.b #$07 : STA.l ShopState
|
||||||
PHX : LDA.l ShopSRAMIndex : TAX : LDA.b #$01 : STA.l PurchaseCounts, X : PLX
|
PHX : LDA.l ShopSRAMIndex : TAX : LDA.b #$01 : STA.l PurchaseCounts, X : PLX
|
||||||
BRA ++
|
BRA ++
|
||||||
.takeAll
|
.takeAll
|
||||||
LDA.l ShopState : ORA.w Shopkeeper_ItemMasks, X : STA.l ShopState
|
LDA.l ShopState : ORA.w Shopkeeper_ItemMasks, X : STA.l ShopState
|
||||||
PHX : LDA.l ShopSRAMIndex : TAX : LDA.l ShopState : STA.l PurchaseCounts, X : PLX
|
PHX : LDA.l ShopSRAMIndex : TAX : LDA.l ShopState : STA.l PurchaseCounts, X : PLX
|
||||||
++
|
++
|
||||||
.done
|
.done
|
||||||
PLY : PLX
|
PLY : PLX
|
||||||
RTS
|
RTS
|
||||||
@@ -668,6 +555,9 @@ Shopkeeper_DrawNextItem:
|
|||||||
PLY
|
PLY
|
||||||
|
|
||||||
LDA.l ShopInventory, X ; get item id
|
LDA.l ShopInventory, X ; get item id
|
||||||
|
JSL.l AttemptItemSubstitution
|
||||||
|
JSL.l ResolveLootIDLong
|
||||||
|
STA.b Scrap0D
|
||||||
CMP.b #$2E : BNE + : BRA .potion
|
CMP.b #$2E : BNE + : BRA .potion
|
||||||
+ CMP.b #$2F : BNE + : BRA .potion
|
+ CMP.b #$2F : BNE + : BRA .potion
|
||||||
+ CMP.b #$30 : BEQ .potion
|
+ CMP.b #$30 : BEQ .potion
|
||||||
@@ -685,19 +575,25 @@ Shopkeeper_DrawNextItem:
|
|||||||
|
|
||||||
STA.l SpriteOAM+4
|
STA.l SpriteOAM+4
|
||||||
|
|
||||||
LDA.l ShopInventory, X ; get item palette
|
LDA.b Scrap0D
|
||||||
JSL.l GetSpritePalette : STA.l SpriteOAM+5
|
PHX
|
||||||
|
JSL.l GetSpritePalette_resolved : STA.l SpriteOAM+5
|
||||||
|
PLX
|
||||||
|
|
||||||
LDA.b #$00 : STA.l SpriteOAM+6
|
LDA.b #$00 : STA.l SpriteOAM+6
|
||||||
|
|
||||||
LDA.l ShopInventory, X ; get item palette
|
LDA.b Scrap0D
|
||||||
JSL.l IsNarrowSprite : BCS .narrow
|
PHX
|
||||||
|
TAX
|
||||||
|
LDA.l SpriteProperties_standing_width,X : BEQ .narrow
|
||||||
.full
|
.full
|
||||||
|
PLX
|
||||||
LDA.b #$02
|
LDA.b #$02
|
||||||
STA.l SpriteOAM+7
|
STA.l SpriteOAM+7
|
||||||
LDA.b #$01
|
LDA.b #$01
|
||||||
BRA ++
|
BRA ++
|
||||||
.narrow
|
.narrow
|
||||||
|
PLX
|
||||||
LDA.b #$00
|
LDA.b #$00
|
||||||
STA.l SpriteOAM+7
|
STA.l SpriteOAM+7
|
||||||
JSR.w PrepNarrowLower
|
JSR.w PrepNarrowLower
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!ANCILLA_DAMAGE = "$06EC84"
|
!ANCILLA_DAMAGE = "$86EC84"
|
||||||
; start with X = sprite index, A = ancilla type index
|
; start with X = sprite index, A = ancilla type index
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DamageClassCalc:
|
DamageClassCalc:
|
||||||
@@ -112,8 +112,8 @@ DamageClassCalc:
|
|||||||
RTL
|
RTL
|
||||||
; end with X = sprite index, A = damage class
|
; end with X = sprite index, A = damage class
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!SPRITE_SETUP_HIT_BOX_LONG = "$0683EA"
|
!SPRITE_SETUP_HIT_BOX_LONG = "$8683EA"
|
||||||
!UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG = "$0683E6"
|
!UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG = "$8683E6"
|
||||||
; start with X = ancilla index, Y = sprite index
|
; start with X = ancilla index, Y = sprite index
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Utility_CheckAncillaOverlapWithSprite:
|
Utility_CheckAncillaOverlapWithSprite:
|
||||||
@@ -188,7 +188,7 @@ SetUpTrinexxHitbox:
|
|||||||
LDA #$80 : STA $0CAA, Y
|
LDA #$80 : STA $0CAA, Y
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
LDA $0E80, Y : !SUB.l $1DAF28 : AND.b #$7F : TAX
|
LDA $0E80, Y : !SUB.l $9DAF28 : AND.b #$7F : TAX
|
||||||
|
|
||||||
LDA $7FFC00, X : STA $0D10, Y
|
LDA $7FFC00, X : STA $0D10, Y
|
||||||
LDA $7FFC80, X : STA $0D30, Y
|
LDA $7FFC80, X : STA $0D30, Y
|
||||||
@@ -412,9 +412,9 @@ BombIcon:
|
|||||||
DrawBombOnHud:
|
DrawBombOnHud:
|
||||||
PHB
|
PHB
|
||||||
LDA.w #$0149
|
LDA.w #$0149
|
||||||
LDX.w #$86B0
|
LDX.w #HUD_TileMap
|
||||||
LDY.w #$C700
|
LDY.w #$C700
|
||||||
MVN $7E, $21
|
MVN $A17E
|
||||||
PLB
|
PLB
|
||||||
|
|
||||||
LDA.l SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BNE .regularBombs
|
LDA.l SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BNE .regularBombs
|
||||||
|
|||||||
@@ -2,21 +2,21 @@ org $008A01 ; 0xA01 - Bank00.asm (LDA.b #$10 : STA $4304 : STA $4314 : STA $4324
|
|||||||
LDA.b PlayerSpriteBank
|
LDA.b PlayerSpriteBank
|
||||||
|
|
||||||
org $1BEDF9
|
org $1BEDF9
|
||||||
JSL SpriteSwap_Palette_ArmorAndGloves ;4bytes
|
JSL SpriteSwap_Palette_ArmorAndGloves ; 4bytes
|
||||||
RTL ;1byte
|
RTL ; 1byte
|
||||||
NOP #$01
|
NOP
|
||||||
|
|
||||||
org $1BEE1B
|
org $1BEE1B
|
||||||
JSL SpriteSwap_Palette_ArmorAndGloves_part_two
|
JSL SpriteSwap_Palette_ArmorAndGloves_part_two
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
!BANK_BASE = $29
|
!BANK_BASE = $A9
|
||||||
|
|
||||||
org $BF8000
|
org $BF8000
|
||||||
SwapSpriteIfNecessary:
|
SwapSpriteIfNecessary:
|
||||||
PHP
|
PHP
|
||||||
SEP #$20 ; set 8-bit accumulator
|
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
|
STA.b PlayerSpriteBank
|
||||||
STZ.w SkipOAM ; Set Normal Sprite NMI
|
STZ.w SkipOAM ; Set Normal Sprite NMI
|
||||||
JSL.l SpriteSwap_Palette_ArmorAndGloves_part_two
|
JSL.l SpriteSwap_Palette_ArmorAndGloves_part_two
|
||||||
@@ -26,57 +26,57 @@ RTL
|
|||||||
|
|
||||||
SpriteSwap_Palette_ArmorAndGloves:
|
SpriteSwap_Palette_ArmorAndGloves:
|
||||||
{
|
{
|
||||||
;DEDF9
|
; DEDF9
|
||||||
LDA.l SpriteSwapper : BNE .continue
|
LDA.l SpriteSwapper : BNE .continue
|
||||||
LDA.b #$10 : STA.b PlayerSpriteBank ; Load Original Sprite Location
|
LDA.b #$10 : STA.b PlayerSpriteBank ; Load Original Sprite Location
|
||||||
REP #$21
|
REP #$21
|
||||||
LDA.l ArmorEquipment
|
LDA.l ArmorEquipment
|
||||||
JSL $1BEDFF ; Read Original Palette Code
|
JSL $9BEDFF ; Read Original Palette Code
|
||||||
RTL
|
RTL
|
||||||
.part_two
|
.part_two
|
||||||
SEP #$30
|
SEP #$30
|
||||||
LDA.l SpriteSwapper : BNE .continue
|
LDA.l SpriteSwapper : BNE .continue
|
||||||
REP #$30
|
REP #$30
|
||||||
LDA.l GloveEquipment
|
LDA.l GloveEquipment
|
||||||
JSL $1BEE21 ; Read Original Palette Code
|
JSL $9BEE21 ; Read Original Palette Code
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
.continue
|
.continue
|
||||||
|
|
||||||
PHX : PHY : PHA
|
PHX : PHY : PHA
|
||||||
; Load armor palette
|
; Load armor palette
|
||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
|
|
||||||
; Check what Link's armor value is.
|
; Check what Link's armor value is.
|
||||||
LDA.l ArmorEquipment : AND.w #$00FF : TAX
|
LDA.l ArmorEquipment : AND.w #$00FF : TAX
|
||||||
|
|
||||||
LDA.l $1BEC06, X : AND.w #$00FF : ASL A : ADC.w #$F000 : STA.b Scrap00
|
LDA.l $9BEC06, X : AND.w #$00FF : ASL A : ADC.w #$F000 : STA.b Scrap00
|
||||||
;replace D308 by 7000 and search
|
; replace D308 by 7000 and search
|
||||||
REP #$10 ; set 16-bit index registers
|
REP #$10 ; set 16-bit index registers
|
||||||
|
|
||||||
LDA.w #$01E2 ; Target SP-7 (sprite palette 6)
|
LDA.w #$01E2 ; Target SP-7 (sprite palette 6)
|
||||||
LDX.w #$000E ; Palette has 15 colors
|
LDX.w #$000E ; Palette has 15 colors
|
||||||
|
|
||||||
TXY : TAX
|
TXY : TAX
|
||||||
|
|
||||||
LDA.b PlayerSpriteBank : AND.w #$00FF : STA.b Scrap02
|
LDA.b PlayerSpriteBank : AND.w #$00FF : STA.b Scrap02
|
||||||
|
|
||||||
.loop
|
.loop
|
||||||
|
|
||||||
LDA.b [Scrap00] : STA.l PaletteBufferAux, X : STA.l PaletteBuffer, X
|
LDA.b [Scrap00] : STA.l PaletteBufferAux, X : STA.l PaletteBuffer, X
|
||||||
|
|
||||||
INC.b Scrap00 : INC.b Scrap00
|
INC.b Scrap00 : INC.b Scrap00
|
||||||
|
|
||||||
INX #2
|
INX #2
|
||||||
|
|
||||||
DEY : BPL .loop
|
DEY : BPL .loop
|
||||||
|
|
||||||
SEP #$30
|
SEP #$30
|
||||||
|
|
||||||
|
|
||||||
PLB
|
PLB
|
||||||
INC.b NMICGRAM
|
INC.b NMICGRAM
|
||||||
PLA : PLY : PLX
|
PLA : PLY : PLX
|
||||||
RTL
|
RTL
|
||||||
}
|
}
|
||||||
|
|||||||
32
sram.asm
32
sram.asm
@@ -177,8 +177,9 @@ InventoryTracking: skip 2 ; - - - - - - o q b r m p n s k f (bitfield)
|
|||||||
; p = Magic Powder | n = Mushroom Past | s = Shovel
|
; p = Magic Powder | n = Mushroom Past | s = Shovel
|
||||||
; k = Inactive Flute | f = Active Flute | o = Any bomb acquired
|
; k = Inactive Flute | f = Active Flute | o = Any bomb acquired
|
||||||
; q = Quickswap locked
|
; q = Quickswap locked
|
||||||
BowTracking: skip 1 ; b s p - - - - - (bitfield)
|
BowTracking: skip 1 ; b s p f - - - - - - - - - - - - (bitfield)
|
||||||
; b = Bow | s = Silver Arrows Upgrade | p = Second Progressive Bow
|
; b = Any Bow | s = Silver Arrows Upgrade | p = Second Progressive Bow
|
||||||
|
; f = First progressive bow
|
||||||
; The front end writes two distinct progressive bow items. p
|
; The front end writes two distinct progressive bow items. p
|
||||||
; indicates whether the "second" has been found independent of
|
; indicates whether the "second" has been found independent of
|
||||||
; the first
|
; the first
|
||||||
@@ -255,7 +256,8 @@ MapOverlay: skip 2 ; Used to reveal dungeon prizes on the map in mo
|
|||||||
; | m = Misery Mire | d = Palace of Darkness | s = Swamp Palace
|
; | m = Misery Mire | d = Palace of Darkness | s = Swamp Palace
|
||||||
; | a = Aga Tower | t = Desert Palace | e = Eastern Palace
|
; | a = Aga Tower | t = Desert Palace | e = Eastern Palace
|
||||||
; / h = Hyrule Castle | s = Sewer Passage
|
; / h = Hyrule Castle | s = Sewer Passage
|
||||||
HudFlag: ;
|
HudFlag: ; - h c - - - - -
|
||||||
|
; c = show maps and compasses | h = show heart pieces
|
||||||
IgnoreFaeries: ;
|
IgnoreFaeries: ;
|
||||||
HasGroveItem: ;
|
HasGroveItem: ;
|
||||||
GeneralFlags: skip 1 ; - - h - - i - g (bitfield)
|
GeneralFlags: skip 1 ; - - h - - i - g (bitfield)
|
||||||
@@ -315,12 +317,13 @@ MagicCounter: skip 2 ; Magic used by player (16-bit integer)
|
|||||||
HighestMail: skip 1 ; Highest mail level
|
HighestMail: skip 1 ; Highest mail level
|
||||||
SmallKeyCounter: skip 1 ; Total Number of small keys collected (integer)
|
SmallKeyCounter: skip 1 ; Total Number of small keys collected (integer)
|
||||||
HeartPieceCounter: skip 1 ; Total Number of heartpieces collected (integer)
|
HeartPieceCounter: skip 1 ; Total Number of heartpieces collected (integer)
|
||||||
CrystalCounter: skip 1 ; Total Number of crystals collected (integer)
|
skip 1 ; Unused
|
||||||
DungeonsCompleted: skip 2 ; Bitfield indicating whether a dungeon's prize has been collected.
|
DungeonsCompleted: skip 2 ; Bitfield indicating whether a dungeon's prize has been collected.
|
||||||
; This has the same shape as the dungeon item bitfields.
|
; This has the same shape as the dungeon item bitfields.
|
||||||
MapCountDisplay: skip 2 ;
|
MapCountDisplay: skip 2 ;
|
||||||
|
CrystalCounter: skip 2 ; Total Number of crystals collected (integer)
|
||||||
BombsPlaced: skip 2 ; Total Number of bombs placed (16-bit integer)
|
BombsPlaced: skip 2 ; Total Number of bombs placed (16-bit integer)
|
||||||
skip 40 ; Unused
|
skip 38 ; Unused
|
||||||
ServiceSequence: ; See servicerequest.asm
|
ServiceSequence: ; See servicerequest.asm
|
||||||
ServiceSequenceRx: skip 8 ; Service sequence receive
|
ServiceSequenceRx: skip 8 ; Service sequence receive
|
||||||
ServiceSequenceTx: skip 8 ; Service sequence transmit
|
ServiceSequenceTx: skip 8 ; Service sequence transmit
|
||||||
@@ -384,6 +387,7 @@ InverseChecksumWRAM: skip 2 ; Vanilla Inverse Checksum. Don't write unless c
|
|||||||
; beginning at $700500
|
; beginning at $700500
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
base $7F6000 ; $1000 byte buffer we place beginning at second save file
|
base $7F6000 ; $1000 byte buffer we place beginning at second save file
|
||||||
|
ExtendedSaveDataWRAM: ;
|
||||||
ExtendedFileNameWRAM: skip 24 ; File name, 12 word-length characters.
|
ExtendedFileNameWRAM: skip 24 ; File name, 12 word-length characters.
|
||||||
RoomPotData: skip 592 ; Table for expanded pot shuffle. One word per room.
|
RoomPotData: skip 592 ; Table for expanded pot shuffle. One word per room.
|
||||||
SpritePotData: skip 592 ; Table for expanded pot shuffle. One word per room.
|
SpritePotData: skip 592 ; Table for expanded pot shuffle. One word per room.
|
||||||
@@ -408,7 +412,8 @@ BombsEquipmentSRAM: skip 31 ;
|
|||||||
DisplayRupeesSRAM: skip 21 ;
|
DisplayRupeesSRAM: skip 21 ;
|
||||||
CurrentArrowsSRAM: skip 21 ;
|
CurrentArrowsSRAM: skip 21 ;
|
||||||
InventoryTrackingSRAM: skip 2 ;
|
InventoryTrackingSRAM: skip 2 ;
|
||||||
BowTrackingSRAM: skip 2 ;
|
BowTrackingSRAM: skip 1 ;
|
||||||
|
SpecialWeaponLevelSRAM: skip 1 ;
|
||||||
skip 53 ;
|
skip 53 ;
|
||||||
ProgressIndicatorSRAM: skip 1 ;
|
ProgressIndicatorSRAM: skip 1 ;
|
||||||
skip 19 ;
|
skip 19 ;
|
||||||
@@ -416,6 +421,7 @@ FileNameVanillaSRAM: skip 8 ; First four characters of file name
|
|||||||
FileValiditySRAM: skip 2 ;
|
FileValiditySRAM: skip 2 ;
|
||||||
skip 283 ;
|
skip 283 ;
|
||||||
InverseChecksumSRAM: skip 2 ;
|
InverseChecksumSRAM: skip 2 ;
|
||||||
|
ExtendedSaveDataSRAM: ;
|
||||||
ExtendedFileNameSRAM: skip 24 ; We read and write the file name directly from and to SRAM (24 bytes)
|
ExtendedFileNameSRAM: skip 24 ; We read and write the file name directly from and to SRAM (24 bytes)
|
||||||
skip $1AE4 ;
|
skip $1AE4 ;
|
||||||
RomVersionSRAM: skip 4 ; ALTTPR ROM version. Low byte is the version, high byte writes
|
RomVersionSRAM: skip 4 ; ALTTPR ROM version. Low byte is the version, high byte writes
|
||||||
@@ -428,15 +434,6 @@ SaveBackupSRAM: ; Backup copy of save ram. Game will attempt to
|
|||||||
; checksum on file select screen load fails.
|
; checksum on file select screen load fails.
|
||||||
base off
|
base off
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; Bank Definitions
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; If these move (most likely by placing initsramtable.asm somewhere else) these
|
|
||||||
; bank definitions need to be changed as well.
|
|
||||||
;================================================================================
|
|
||||||
!SRAMBank = $70
|
|
||||||
!SRAMTableBank = $30|$80
|
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Assertions
|
; Assertions
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -604,9 +601,9 @@ endmacro
|
|||||||
%assertSRAM(HighestMail, $7EF46E)
|
%assertSRAM(HighestMail, $7EF46E)
|
||||||
%assertSRAM(SmallKeyCounter, $7EF46F)
|
%assertSRAM(SmallKeyCounter, $7EF46F)
|
||||||
%assertSRAM(HeartPieceCounter, $7EF470)
|
%assertSRAM(HeartPieceCounter, $7EF470)
|
||||||
%assertSRAM(CrystalCounter, $7EF471)
|
|
||||||
%assertSRAM(DungeonsCompleted, $7EF472)
|
%assertSRAM(DungeonsCompleted, $7EF472)
|
||||||
%assertSRAM(MapCountDisplay, $7EF474)
|
%assertSRAM(MapCountDisplay, $7EF474)
|
||||||
|
%assertSRAM(CrystalCounter, $7EF476)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
%assertSRAM(ServiceSequence, $7EF4A0)
|
%assertSRAM(ServiceSequence, $7EF4A0)
|
||||||
%assertSRAM(ServiceSequenceRx, $7EF4A0)
|
%assertSRAM(ServiceSequenceRx, $7EF4A0)
|
||||||
@@ -659,6 +656,7 @@ endmacro
|
|||||||
%assertSRAM(GTCollectedKeys, $7EF4ED)
|
%assertSRAM(GTCollectedKeys, $7EF4ED)
|
||||||
%assertSRAM(FileMarker, $7EF4F0)
|
%assertSRAM(FileMarker, $7EF4F0)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
%assertSRAM(ExtendedSaveDataWRAM, $7F6000)
|
||||||
%assertSRAM(ExtendedFileNameWRAM, $7F6000)
|
%assertSRAM(ExtendedFileNameWRAM, $7F6000)
|
||||||
%assertSRAM(RoomPotData, $7F6018)
|
%assertSRAM(RoomPotData, $7F6018)
|
||||||
%assertSRAM(SpritePotData, $7F6268)
|
%assertSRAM(SpritePotData, $7F6268)
|
||||||
@@ -677,10 +675,12 @@ endmacro
|
|||||||
%assertSRAM(CurrentArrowsSRAM, $700377)
|
%assertSRAM(CurrentArrowsSRAM, $700377)
|
||||||
%assertSRAM(InventoryTrackingSRAM, $70038C)
|
%assertSRAM(InventoryTrackingSRAM, $70038C)
|
||||||
%assertSRAM(BowTrackingSRAM, $70038E)
|
%assertSRAM(BowTrackingSRAM, $70038E)
|
||||||
|
%assertSRAM(SpecialWeaponLevelSRAM, $70038F)
|
||||||
%assertSRAM(ProgressIndicatorSRAM, $7003C5)
|
%assertSRAM(ProgressIndicatorSRAM, $7003C5)
|
||||||
%assertSRAM(FileNameVanillaSRAM, $7003D9)
|
%assertSRAM(FileNameVanillaSRAM, $7003D9)
|
||||||
%assertSRAM(FileValiditySRAM, $7003E1)
|
%assertSRAM(FileValiditySRAM, $7003E1)
|
||||||
%assertSRAM(InverseChecksumSRAM, $7004FE)
|
%assertSRAM(InverseChecksumSRAM, $7004FE)
|
||||||
|
%assertSRAM(ExtendedSaveDataSRAM, $700500)
|
||||||
%assertSRAM(ExtendedFileNameSRAM, $700500)
|
%assertSRAM(ExtendedFileNameSRAM, $700500)
|
||||||
%assertSRAM(RomVersionSRAM, $701FFC)
|
%assertSRAM(RomVersionSRAM, $701FFC)
|
||||||
%assertSRAM(RomNameSRAM, $702000)
|
%assertSRAM(RomNameSRAM, $702000)
|
||||||
|
|||||||
113
stats.asm
113
stats.asm
@@ -33,7 +33,7 @@ DecrementSaveCounter:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DungeonHoleWarpTransition:
|
DungeonHoleWarpTransition:
|
||||||
LDA.l $01C31F, X
|
LDA.l $81C31F, X
|
||||||
BRA StatTransitionCounter
|
BRA StatTransitionCounter
|
||||||
DungeonHoleEntranceTransition:
|
DungeonHoleEntranceTransition:
|
||||||
JSL EnableForceBlank
|
JSL EnableForceBlank
|
||||||
@@ -78,31 +78,37 @@ IncrementSmallKeys:
|
|||||||
STA.l CurrentSmallKeys ; thing we wrote over, write small key count
|
STA.l CurrentSmallKeys ; thing we wrote over, write small key count
|
||||||
PHX
|
PHX
|
||||||
LDA.l StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
JSL AddInventory_incrementKeyLong
|
LDA.l SmallKeyCounter : INC : STA.l SmallKeyCounter
|
||||||
+
|
+
|
||||||
JSL.l UpdateKeys
|
JSL.l UpdateKeys
|
||||||
PHY : LDY.b #24 : JSL.l FullInventoryExternal : PLY
|
PHY : LDY.b #24 : JSL.l AddInventory : PLY
|
||||||
JSL.l HUD_RebuildLong
|
JSL.l HUD_RebuildLong
|
||||||
|
INC.w UpdateHUD
|
||||||
PLX
|
PLX
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementSmallKeysNoPrimary:
|
IncrementSmallKeysNoPrimary:
|
||||||
STA.l CurrentSmallKeys ; thing we wrote over, write small key count
|
STA.l CurrentSmallKeys ; thing we wrote over, write small key count
|
||||||
PHX
|
PHX
|
||||||
LDA.l StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
JSL AddInventory_incrementKeyLong
|
LDA.l SmallKeyCounter : INC : STA.l SmallKeyCounter
|
||||||
+
|
+
|
||||||
JSL.l UpdateKeys
|
JSL.l UpdateKeys
|
||||||
LDA.b IndoorsFlag : BEQ + ; skip room check if outdoors
|
LDA.b IndoorsFlag : BEQ + ; skip room check if outdoors
|
||||||
PHP : REP #$20 ; set 16-bit accumulator
|
PHP : REP #$20 ; set 16-bit accumulator
|
||||||
LDA.b RoomIndex : CMP.w #$0087 : BNE ++ ; hera basement
|
LDA.b RoomIndex : CMP.w #$0087 : BNE ++ ; hera basement
|
||||||
PLP : PHY : LDY.b #$24 : JSL.l FullInventoryExternal
|
PLP : PHY
|
||||||
JSR CountChestKey : PLY : BRA +
|
LDY.b #$24
|
||||||
++
|
JSL.l AddInventory
|
||||||
PLP
|
JSR CountChestKey
|
||||||
+
|
PLY
|
||||||
JSL.l HUD_RebuildLong
|
BRA +
|
||||||
PLX
|
++
|
||||||
|
PLP
|
||||||
|
+
|
||||||
|
INC.w UpdateHUD
|
||||||
|
JSL.l HUD_RebuildLong
|
||||||
|
PLX
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DecrementSmallKeys:
|
DecrementSmallKeys:
|
||||||
@@ -110,52 +116,55 @@ DecrementSmallKeys:
|
|||||||
JSL.l UpdateKeys
|
JSL.l UpdateKeys
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CountChestKeyLong: ; called from ItemDowngradeFix in itemdowngrade.asm
|
CountChestKeyLong:
|
||||||
JSR CountChestKey
|
JSR.w CountChestKey
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CountChestKey: ; called by neighbor functions
|
CountChestKey:
|
||||||
PHA : PHX
|
PHA : PHX
|
||||||
CPY.b #$24 : BEQ + ; small key for this dungeon - use DungeonID
|
LDA.l StatsLocked : BNE .done
|
||||||
CPY.b #$A0 : !BLT .end ; Ignore most items
|
CPY.b #$24 : BEQ .this_dungeon
|
||||||
CPY.b #$AE : !BGE .end ; Ignore reserved key and generic key
|
TYA
|
||||||
TYA : AND.B #$0F
|
AND.b #$0F : CMP.b #$02 : BCC .hc_sewers
|
||||||
TAX : BRA .count ; use Key id instead of DungeonID (Keysanity)
|
TAX
|
||||||
+
|
LDA.l DungeonCollectedKeys,X : INC : STA.l DungeonCollectedKeys,X
|
||||||
LDA.w DungeonID : LSR : TAX
|
BRA .done
|
||||||
.count
|
.this_dungeon
|
||||||
LDA.l DungeonCollectedKeys, X : INC : STA.l DungeonCollectedKeys, X
|
LDA.w DungeonID : CMP.b #$03 : BCC .hc_sewers
|
||||||
|
LSR : TAX
|
||||||
|
LDA.l DungeonCollectedKeys,X : INC : STA.l DungeonCollectedKeys,X
|
||||||
|
BRA .done
|
||||||
|
|
||||||
CPX.b #$00 : BNE +
|
.hc_sewers
|
||||||
STA.l HCCollectedKeys ; copy HC to sewers
|
LDA.l SewerCollectedKeys : INC
|
||||||
+
|
STA.l SewerCollectedKeys : STA.l HCCollectedKeys
|
||||||
CPX.b #$01 : BNE +
|
|
||||||
STA.l SewerCollectedKeys ; copy sewers to HC
|
.done
|
||||||
+
|
|
||||||
.end
|
|
||||||
PLX : PLA
|
PLX : PLA
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CountBonkItem: ; called from GetBonkItem in bookofmudora.asm
|
CountBonkItem: ; called from GetBonkItem in bookofmudora.asm
|
||||||
LDA.b RoomIndex ; check room ID - only bonk keys in 2 rooms so we're just checking the lower byte
|
LDA.b RoomIndex
|
||||||
CMP.b #115 : BNE + ; Desert Bonk Key
|
CMP.b #115 : BNE +
|
||||||
LDA.l BonkKey_Desert : BRA ++
|
LDA.l BonkKey_Desert
|
||||||
+ : CMP.b #140 : BNE + ; GTower Bonk Key
|
BRA ++
|
||||||
|
+
|
||||||
|
CMP.b #140 : BNE +
|
||||||
LDA.l BonkKey_GTower : BRA ++
|
LDA.l BonkKey_GTower : BRA ++
|
||||||
+ LDA.b #$24 ; default to small key
|
+
|
||||||
|
LDA.b #$24
|
||||||
++
|
++
|
||||||
CMP.b #$24 : BNE +
|
CMP.b #$24 : BNE +
|
||||||
PHY
|
PHY
|
||||||
TAY : JSR CountChestKey
|
TAY
|
||||||
|
JSR CountChestKey
|
||||||
PLY
|
PLY
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
IncrementAgahnim2Sword:
|
IncrementAgahnim2Sword:
|
||||||
PHA
|
PHA
|
||||||
LDA.l StatsLocked : BNE +
|
JSL.l IncrementBossSword
|
||||||
JSL AddInventory_incrementBossSwordLong
|
|
||||||
+
|
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -225,9 +234,11 @@ RTL
|
|||||||
IncrementBigChestCounter:
|
IncrementBigChestCounter:
|
||||||
JSL.l Dungeon_SaveRoomQuadrantData ; thing we wrote over
|
JSL.l Dungeon_SaveRoomQuadrantData ; thing we wrote over
|
||||||
PHA
|
PHA
|
||||||
LDA.l StatsLocked : BNE +
|
LDA.l StatsLocked : BNE +
|
||||||
%BottomHalf(BigKeysBigChests)
|
LDA.l BigKeysBigChests : INC : AND.b #$0F : TAX
|
||||||
+
|
LDA.l BigKeysBigChests : AND.b #$F0 : STA.l BigKeysBigChests
|
||||||
|
TXA : ORA.l BigKeysBigChests : STA.l BigKeysBigChests
|
||||||
|
+
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -341,7 +352,7 @@ StatsFinalPrep:
|
|||||||
LDA.l StatsLocked : BNE .ramPostOnly
|
LDA.l StatsLocked : BNE .ramPostOnly
|
||||||
INC : STA.l StatsLocked
|
INC : STA.l StatsLocked
|
||||||
|
|
||||||
JSL.l AddInventory_incrementBossSwordLong
|
JSL.l IncrementFinalSword
|
||||||
|
|
||||||
LDA.l HighestMail : INC : STA.l HighestMail ; add green mail to mail count
|
LDA.l HighestMail : INC : STA.l HighestMail ; add green mail to mail count
|
||||||
|
|
||||||
|
|||||||
@@ -487,10 +487,10 @@ CreditsLineBlank:
|
|||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%bigcredits("MATRETHEWEY IBAZLY")
|
%bigcredits(" MATRETHEWEY ")
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
%bigcredits("FISH_WAFFLE64 KRELBEL")
|
%bigcredits("FISH_WAFFLE64 IBAZLY")
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
@@ -574,7 +574,7 @@ CreditsLineBlank:
|
|||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%bigcredits("AND...")
|
%bigcredits("AND&")
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
|
|||||||
BIN
stats/font.gb
BIN
stats/font.gb
Binary file not shown.
268
stats/fonttable.asm
Normal file
268
stats/fonttable.asm
Normal file
@@ -0,0 +1,268 @@
|
|||||||
|
; Small letters red
|
||||||
|
dw $39E0 ; A ; $00
|
||||||
|
dw $39E1 ; B ;
|
||||||
|
dw $39E2 ; C ;
|
||||||
|
dw $39E3 ; D ;
|
||||||
|
dw $39E4 ; E ;
|
||||||
|
dw $39E5 ; F ;
|
||||||
|
dw $39E6 ; G ;
|
||||||
|
dw $39E7 ; H ;
|
||||||
|
dw $39E8 ; I ;
|
||||||
|
dw $39E9 ; J ;
|
||||||
|
dw $39EA ; K ;
|
||||||
|
dw $39EB ; L ;
|
||||||
|
dw $39EC ; M ;
|
||||||
|
dw $39ED ; N ;
|
||||||
|
dw $39EE ; O ;
|
||||||
|
dw $39EF ; P ;
|
||||||
|
dw $39F0 ; Q ;
|
||||||
|
dw $39F1 ; R ;
|
||||||
|
dw $39F2 ; S ;
|
||||||
|
dw $39F3 ; T ;
|
||||||
|
dw $39F4 ; U ;
|
||||||
|
dw $39F5 ; V ;
|
||||||
|
dw $39F6 ; W ;
|
||||||
|
dw $39F7 ; X ;
|
||||||
|
dw $39F8 ; Y ;
|
||||||
|
dw $39F9 ; Z ; $19
|
||||||
|
;
|
||||||
|
; Small letters yellow ;
|
||||||
|
dw $2DE0 ; A ; $1A
|
||||||
|
dw $2DE1 ; B ;
|
||||||
|
dw $2DE2 ; C ;
|
||||||
|
dw $2DE3 ; D ;
|
||||||
|
dw $2DE4 ; E ;
|
||||||
|
dw $2DE5 ; F ;
|
||||||
|
dw $2DE6 ; G ;
|
||||||
|
dw $2DE7 ; H ;
|
||||||
|
dw $2DE8 ; I ;
|
||||||
|
dw $2DE9 ; J ;
|
||||||
|
dw $2DEA ; K ;
|
||||||
|
dw $2DEB ; L ;
|
||||||
|
dw $2DEC ; M ;
|
||||||
|
dw $2DED ; N ;
|
||||||
|
dw $2DEE ; O ;
|
||||||
|
dw $2DEF ; P ;
|
||||||
|
dw $2DF0 ; Q ;
|
||||||
|
dw $2DF1 ; R ;
|
||||||
|
dw $2DF2 ; S ;
|
||||||
|
dw $2DF3 ; T ;
|
||||||
|
dw $2DF4 ; U ;
|
||||||
|
dw $2DF5 ; V ;
|
||||||
|
dw $2DF6 ; W ;
|
||||||
|
dw $2DF7 ; X ;
|
||||||
|
dw $2DF8 ; Y ;
|
||||||
|
dw $2DF9 ; Z ; $33
|
||||||
|
dw $2DFB ; , ;
|
||||||
|
dw $2DFC ; ' ;
|
||||||
|
dw $2DFD ; - ;
|
||||||
|
dw $2DFE ; . ;
|
||||||
|
;
|
||||||
|
; Small letters green ;
|
||||||
|
dw $29E0 ; A ; $38
|
||||||
|
dw $29E1 ; B ;
|
||||||
|
dw $29E2 ; C ;
|
||||||
|
dw $29E3 ; D ;
|
||||||
|
dw $29E4 ; E ;
|
||||||
|
dw $29E5 ; F ;
|
||||||
|
dw $29E6 ; G ;
|
||||||
|
dw $29E7 ; H ;
|
||||||
|
dw $29E8 ; I ;
|
||||||
|
dw $29E9 ; J ;
|
||||||
|
dw $29EA ; K ;
|
||||||
|
dw $29EB ; L ;
|
||||||
|
dw $29EC ; M ;
|
||||||
|
dw $29ED ; N ;
|
||||||
|
dw $29EE ; O ;
|
||||||
|
dw $29EF ; P ;
|
||||||
|
dw $29F0 ; Q ;
|
||||||
|
dw $29F1 ; R ;
|
||||||
|
dw $29F2 ; S ;
|
||||||
|
dw $29F3 ; T ;
|
||||||
|
dw $29F4 ; U ;
|
||||||
|
dw $29F5 ; V ;
|
||||||
|
dw $29F6 ; W ;
|
||||||
|
dw $29F7 ; X ;
|
||||||
|
dw $29F8 ; Y ;
|
||||||
|
dw $29F9 ; Z ; $51
|
||||||
|
dw $29FA ; • ;
|
||||||
|
;
|
||||||
|
; Big characters top ;
|
||||||
|
dw $3D40 ; 0 ; $53
|
||||||
|
dw $3D41 ; 1 ;
|
||||||
|
dw $3D42 ; 2 ;
|
||||||
|
dw $3D43 ; 3 ;
|
||||||
|
dw $3D44 ; 4 ;
|
||||||
|
dw $3D45 ; 5 ;
|
||||||
|
dw $3D46 ; 6 ;
|
||||||
|
dw $3D47 ; 7 ;
|
||||||
|
dw $3D48 ; 8 ;
|
||||||
|
dw $3D49 ; 9 ;
|
||||||
|
dw $3D4A ; A ;
|
||||||
|
dw $3D4B ; B ;
|
||||||
|
dw $3D4C ; C ;
|
||||||
|
dw $3D4D ; D ;
|
||||||
|
dw $3D4E ; E ;
|
||||||
|
dw $3D4F ; F ; $62
|
||||||
|
dw $3D60 ; G ;
|
||||||
|
dw $3D61 ; H ;
|
||||||
|
dw $3D62 ; I ;
|
||||||
|
dw $3D63 ; J ;
|
||||||
|
dw $3D64 ; K ;
|
||||||
|
dw $3D65 ; L ;
|
||||||
|
dw $3D66 ; M ;
|
||||||
|
dw $3D67 ; N ;
|
||||||
|
dw $3D68 ; O ;
|
||||||
|
dw $3D69 ; P ;
|
||||||
|
dw $3D6A ; Q ;
|
||||||
|
dw $3D6B ; R ;
|
||||||
|
dw $3D6C ; S ;
|
||||||
|
dw $3D6D ; T ;
|
||||||
|
dw $3D6E ; U ;
|
||||||
|
dw $3D6F ; V ; $72
|
||||||
|
dw $3D80 ; W ;
|
||||||
|
dw $3D81 ; X ;
|
||||||
|
dw $3D82 ; Y ;
|
||||||
|
dw $3D83 ; Z ;
|
||||||
|
dw $0000 ; ;
|
||||||
|
dw $0000 ; ;
|
||||||
|
; Big characters bottom ;
|
||||||
|
dw $3D50 ; 0 ; $79
|
||||||
|
dw $3D51 ; 1 ;
|
||||||
|
dw $3D52 ; 2 ;
|
||||||
|
dw $3D53 ; 3 ;
|
||||||
|
dw $3D54 ; 4 ;
|
||||||
|
dw $3D55 ; 5 ;
|
||||||
|
dw $3D56 ; 6 ;
|
||||||
|
dw $3D57 ; 7 ;
|
||||||
|
dw $3D58 ; 8 ;
|
||||||
|
dw $3D59 ; 9 ;
|
||||||
|
dw $3D5A ; A ; $83
|
||||||
|
dw $3D5B ; B ;
|
||||||
|
dw $3D5C ; C ;
|
||||||
|
dw $3D5D ; D ;
|
||||||
|
dw $3D5E ; E ;
|
||||||
|
dw $3D5F ; F ;
|
||||||
|
dw $3D70 ; G ;
|
||||||
|
dw $3D71 ; H ;
|
||||||
|
dw $3D72 ; I ;
|
||||||
|
dw $3D73 ; J ;
|
||||||
|
dw $3D74 ; K ;
|
||||||
|
dw $3D75 ; L ;
|
||||||
|
dw $3D76 ; M ;
|
||||||
|
dw $3D77 ; N ;
|
||||||
|
dw $3D78 ; O ;
|
||||||
|
dw $3D79 ; P ;
|
||||||
|
dw $3D7A ; Q ;
|
||||||
|
dw $3D7B ; R ;
|
||||||
|
dw $3D7C ; S ;
|
||||||
|
dw $3D7D ; T ;
|
||||||
|
dw $3D7E ; U ;
|
||||||
|
dw $3D7F ; V ; $98
|
||||||
|
dw $3D90 ; W ;
|
||||||
|
dw $3D91 ; X ;
|
||||||
|
dw $3D92 ; Y ;
|
||||||
|
dw $3D93 ; Z ; $9C
|
||||||
|
dw $0000 ; ;
|
||||||
|
dw $0000 ; ;
|
||||||
|
dw $3D9C ; <sp> ; $9F
|
||||||
|
; Lower case letters top ;
|
||||||
|
dw $3DA0 ; a ; $A0
|
||||||
|
dw $3DA1 ; b ;
|
||||||
|
dw $3DA2 ; c ;
|
||||||
|
dw $3DA3 ; d ;
|
||||||
|
dw $3DA4 ; e ;
|
||||||
|
dw $3DA5 ; f ;
|
||||||
|
dw $3DA6 ; g ;
|
||||||
|
dw $3DA7 ; h ;
|
||||||
|
dw $3DA8 ; i ;
|
||||||
|
dw $3DA9 ; j ;
|
||||||
|
dw $3DAA ; k ;
|
||||||
|
dw $3DAB ; l ;
|
||||||
|
dw $3DAC ; m ;
|
||||||
|
dw $3DAD ; n ;
|
||||||
|
dw $3DAE ; o ;
|
||||||
|
dw $3DAF ; p ;
|
||||||
|
dw $3DC0 ; q ; $B0
|
||||||
|
dw $3DC1 ; r ;
|
||||||
|
dw $3DC2 ; s ;
|
||||||
|
dw $3DC3 ; t ;
|
||||||
|
dw $3DC4 ; u ;
|
||||||
|
dw $3DC5 ; v ;
|
||||||
|
dw $3DC6 ; w ;
|
||||||
|
dw $3DC7 ; x ;
|
||||||
|
dw $3DC8 ; y ;
|
||||||
|
dw $3DC9 ; z ;
|
||||||
|
dw $0000 ; ;
|
||||||
|
; Lower case letters bottom;
|
||||||
|
dw $3DB0 ; a ;
|
||||||
|
dw $3DB1 ; b ;
|
||||||
|
dw $3DB2 ; c ;
|
||||||
|
dw $3DB3 ; d ;
|
||||||
|
dw $3DB4 ; e ;
|
||||||
|
dw $3DB5 ; f ; $C0
|
||||||
|
dw $3DB6 ; g ;
|
||||||
|
dw $3DB7 ; h ;
|
||||||
|
dw $3DB8 ; i ;
|
||||||
|
dw $3DB9 ; j ;
|
||||||
|
dw $3DBA ; k ;
|
||||||
|
dw $3DBB ; l ;
|
||||||
|
dw $3DBC ; m ;
|
||||||
|
dw $3DBD ; n ;
|
||||||
|
dw $3DBE ; o ;
|
||||||
|
dw $3DBF ; p ;
|
||||||
|
dw $3DD0 ; q ;
|
||||||
|
dw $3DD1 ; r ;
|
||||||
|
dw $3DD2 ; s ;
|
||||||
|
dw $3DD3 ; t ;
|
||||||
|
dw $3DD4 ; u ;
|
||||||
|
dw $3DD5 ; v ; $D0
|
||||||
|
dw $3DD6 ; w ;
|
||||||
|
dw $3DD7 ; x ;
|
||||||
|
dw $3DD8 ; y ;
|
||||||
|
dw $3DD9 ; z ;
|
||||||
|
dw $0000 ; ;
|
||||||
|
dw $0000 ; ;
|
||||||
|
dw $0000 ; ;
|
||||||
|
dw $0000 ; ;
|
||||||
|
; Special chars top ;
|
||||||
|
dw $3D2D ; ' ; $D9
|
||||||
|
dw $3D2E ; " ;
|
||||||
|
dw $3D27 ; / ;
|
||||||
|
dw $3D8D ; . ;
|
||||||
|
dw $3DCA ; : ;
|
||||||
|
dw $3DCD ; _ ;
|
||||||
|
dw $3D28 ; • ;
|
||||||
|
dw $3D2F ; ... ; $E0
|
||||||
|
dw $3DCC ; # ;
|
||||||
|
dw $3DCB ; @ ;
|
||||||
|
dw $3D29 ; |> ;
|
||||||
|
dw $3D86 ; ? ;
|
||||||
|
dw $3D87 ; ! ;
|
||||||
|
dw $3D8E ; ~ ;
|
||||||
|
dw $3D88 ; , ;
|
||||||
|
dw $3D89 ; - ;
|
||||||
|
dw $0000 ; ;
|
||||||
|
dw $0000 ; ;
|
||||||
|
dw $0000 ; ;
|
||||||
|
; Special chars bottom ;
|
||||||
|
dw $3D3D ; ' ; $EC
|
||||||
|
dw $3D3E ; " ;
|
||||||
|
dw $3D37 ; / ;
|
||||||
|
dw $3D9D ; . ;
|
||||||
|
dw $3DDA ; : ; $F0
|
||||||
|
dw $3DDD ; _ ;
|
||||||
|
dw $3D38 ; • ;
|
||||||
|
dw $3D3F ; ... ;
|
||||||
|
dw $3DDC ; # ;
|
||||||
|
dw $3DDB ; @ ;
|
||||||
|
dw $3D39 ; |> ;
|
||||||
|
dw $3D96 ; ? ;
|
||||||
|
dw $3D97 ; ! ;
|
||||||
|
dw $3D9E ; ~ ;
|
||||||
|
dw $3D98 ; , ;
|
||||||
|
dw $3D99 ; - ; $FB
|
||||||
|
dw $0000 ; ;
|
||||||
|
dw $0000 ; ;
|
||||||
|
dw $0000 ; ;
|
||||||
|
dw $0000 ; ;
|
||||||
@@ -1 +0,0 @@
|
|||||||
ź9°9±9´9µ9¶9·9Ü9Ý9Ţ9ß9đ9ń9ň9ó9ô9ő9ö9÷9ř9ů9ú9ű9ü9ý9ţ9ź-°-±-´-µ-¶-·-Ü-Ý-Ţ-ß-đ-ń-ň-ó-ô-ő-ö-÷-ř-ů-ú-ű-ü-ý-ţ-©-ą-ş-»-ź)°)±)´)µ)¶)·)Ü)Ý)Ţ)ß)đ)ń)ň)ó)ô)ő)ö)÷)ř)ů)ú)ű)ü)ý)ţ)Ľ)@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=€=<3D>=‚=<3D>=¨=‡=P=Q=R=S=T=U=V=W=X=Y=Z=[=\=]=^=_=p=q=r=s=t=u=v=w=x=y=z={=|=}=~==<3D>=‘=’=“=¸=—=<3D>=Ŕ=Á=Â=Ă=<3D>=†=‰=Ä=‰=Ĺ=Ć=Ç=˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙Đ=Ń=Ň=Ó=<3D>=–=™˝Ô=™=Ő=Ö=×=˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙
|
|
||||||
954
stats/main.asm
954
stats/main.asm
File diff suppressed because it is too large
Load Diff
@@ -46,6 +46,7 @@ macro AddStat(address, type, shiftRight, bits, digits, xPos, lineNumber)
|
|||||||
dl <address>
|
dl <address>
|
||||||
endmacro
|
endmacro
|
||||||
|
|
||||||
|
CreditsStats:
|
||||||
%AddStat(SwordTime, 1, 0, 32, 4, !FIRST_SWORD_X, !FIRST_SWORD_Y)
|
%AddStat(SwordTime, 1, 0, 32, 4, !FIRST_SWORD_X, !FIRST_SWORD_Y)
|
||||||
%AddStat(BootsTime, 1, 0, 32, 4, !PEGASUS_BOOTS_X, !PEGASUS_BOOTS_Y)
|
%AddStat(BootsTime, 1, 0, 32, 4, !PEGASUS_BOOTS_X, !PEGASUS_BOOTS_Y)
|
||||||
%AddStat(FluteTime, 1, 0, 32, 4, !FLUTE_X, !FLUTE_Y)
|
%AddStat(FluteTime, 1, 0, 32, 4, !FLUTE_X, !FLUTE_Y)
|
||||||
@@ -66,3 +67,5 @@ endmacro
|
|||||||
%AddStat(LagTime, 1, 0, 32, 4, !TOTAL_LAG_TIME_X, !TOTAL_LAG_TIME_Y)
|
%AddStat(LagTime, 1, 0, 32, 4, !TOTAL_LAG_TIME_X, !TOTAL_LAG_TIME_Y)
|
||||||
%AddStat(TotalItemCounter, 0, 0, 16, 3, !COLLECTION_RATE_X, !COLLECTION_RATE_Y)
|
%AddStat(TotalItemCounter, 0, 0, 16, 3, !COLLECTION_RATE_X, !COLLECTION_RATE_Y)
|
||||||
%AddStat(NMIFrames, 1, 0, 32, 4, !TOTAL_TIME_X, !TOTAL_TIME_Y)
|
%AddStat(NMIFrames, 1, 0, 32, 4, !TOTAL_TIME_X, !TOTAL_TIME_Y)
|
||||||
|
|
||||||
|
dw $FFFF
|
||||||
|
|||||||
1666
tables.asm
1666
tables.asm
File diff suppressed because it is too large
Load Diff
35
tablets.asm
35
tablets.asm
@@ -30,25 +30,22 @@ RTS
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SpawnTabletItem:
|
SpawnTabletItem:
|
||||||
JSL.l LoadOutdoorValue
|
JSL.l LoadOutdoorValue
|
||||||
PHA
|
JSL.l AttemptItemSubstitution
|
||||||
JSL.l PrepDynamicTile
|
JSL.l ResolveLootIDLong
|
||||||
|
PHA
|
||||||
|
LDA.b #$EB : STA.l MiniGameTime
|
||||||
|
JSL Sprite_SpawnDynamically
|
||||||
|
PLA
|
||||||
|
STA.w SpriteID,Y
|
||||||
|
TYX
|
||||||
|
JSL.l PrepDynamicTile_loot_resolved
|
||||||
|
|
||||||
JSL.l GetSpriteID
|
LDA.b LinkPosX : STA.w SpritePosXLow, Y
|
||||||
|
LDA.b LinkPosX+1 : STA.w SpritePosXHigh, Y
|
||||||
LDA.b #$EB
|
LDA.b LinkPosY : STA.w SpritePosYLow, Y
|
||||||
STA.l MiniGameTime
|
LDA.b LinkPosY+1 : STA.w SpritePosYHigh, Y
|
||||||
JSL Sprite_SpawnDynamically
|
LDA.b #$00 : STA.w SpriteLayer, Y
|
||||||
|
LDA.b #$7F : STA.w SpriteZCoord, Y ; spawn WAY up high
|
||||||
PLA : STA.w SpriteItemType, Y ; Store item type
|
|
||||||
LDA.b LinkPosX : STA.w SpritePosXLow, Y
|
|
||||||
LDA.b LinkPosX+1 : STA.w SpritePosXHigh, Y
|
|
||||||
|
|
||||||
LDA.b LinkPosY : STA.w SpritePosYLow, Y
|
|
||||||
LDA.b LinkPosY+1 : STA.w SpritePosYHigh, Y
|
|
||||||
|
|
||||||
LDA.b #$00 : STA.w SpriteLayer, Y
|
|
||||||
|
|
||||||
LDA.b #$7F : STA.w SpriteZCoord, Y ; spawn WAY up high
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MaybeUnlockTabletAnimation:
|
MaybeUnlockTabletAnimation:
|
||||||
@@ -92,7 +89,7 @@ IsMedallion:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadNarrowObject:
|
LoadNarrowObject:
|
||||||
LDA.l AddReceivedItemExpanded_wide_item_flag, X : STA.b ($92), Y ; AddReceiveItem.wide_item_flag?
|
LDA.l SpriteProperties_standing_width, X : STA.b ($92), Y ; AddReceiveItem.wide_item_flag?
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CheckTabletItem:
|
CheckTabletItem:
|
||||||
|
|||||||
162
textrenderer.asm
162
textrenderer.asm
@@ -1,6 +1,6 @@
|
|||||||
RenderCharSetColorExtended_init:
|
RenderCharSetColorExtended_init:
|
||||||
stz.b Scrap0C
|
stz.b Scrap0C
|
||||||
jsl $00d84e
|
jsl Attract_DecompressStoryGfx
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
RenderCharSetColorExtended_close:
|
RenderCharSetColorExtended_close:
|
||||||
@@ -26,9 +26,7 @@ RenderCharSetColorExtended:
|
|||||||
|
|
||||||
RenderCharToMapExtended:
|
RenderCharToMapExtended:
|
||||||
phx : tya : asl #2 : tax
|
phx : tya : asl #2 : tax
|
||||||
lda.l FontProperties, x
|
lda.l FontProperties, x : bit.w #$0001 : bne .uncompressed
|
||||||
and.w #$0001
|
|
||||||
bne .uncompressed
|
|
||||||
.compressed
|
.compressed
|
||||||
plx
|
plx
|
||||||
lda.w #$0000
|
lda.w #$0000
|
||||||
@@ -104,9 +102,7 @@ RenderCharThinTable:
|
|||||||
RenderCharExtended:
|
RenderCharExtended:
|
||||||
pha
|
pha
|
||||||
asl : asl : tax
|
asl : asl : tax
|
||||||
lda.l FontProperties, x
|
lda.l FontProperties, x : and.w #$00ff : bne .renderUncompressed
|
||||||
and.w #$00ff
|
|
||||||
bne .renderUncompressed
|
|
||||||
|
|
||||||
.renderOriginal
|
.renderOriginal
|
||||||
pla : asl : tax : asl : adc.b Scrap0E
|
pla : asl : tax : asl : adc.b Scrap0E
|
||||||
@@ -209,39 +205,39 @@ FontProperties:
|
|||||||
dw $0000, $0000 ; 2E
|
dw $0000, $0000 ; 2E
|
||||||
dw $0000, $0000 ; 2F
|
dw $0000, $0000 ; 2F
|
||||||
|
|
||||||
dw $8001, $0400 ; 30 ; a
|
dw $0000, $0000 ; 30
|
||||||
dw $8001, $0410 ; 31
|
dw $0000, $0000 ; 31
|
||||||
dw $8001, $0420 ; 32
|
dw $0000, $0000 ; 32
|
||||||
dw $8001, $0430 ; 33
|
dw $0000, $0000 ; 33
|
||||||
dw $8001, $0440 ; 34
|
dw $0000, $0000 ; 34
|
||||||
dw $8001, $0450 ; 35
|
dw $0000, $0000 ; 35
|
||||||
dw $8001, $0460 ; 36
|
dw $0000, $0000 ; 36
|
||||||
dw $8001, $0470 ; 37
|
dw $0000, $0000 ; 37
|
||||||
dw $8001, $0480 ; 38
|
dw $0000, $0000 ; 38
|
||||||
dw $8001, $0490 ; 39
|
dw $0000, $0000 ; 39
|
||||||
dw $8001, $04A0 ; 3A
|
dw $0000, $0000 ; 3A
|
||||||
dw $8001, $04B0 ; 3B
|
dw $0000, $0000 ; 3B
|
||||||
dw $8001, $04C0 ; 3C
|
dw $0000, $0000 ; 3C
|
||||||
dw $8001, $04D0 ; 3D
|
dw $0000, $0000 ; 3D
|
||||||
dw $8001, $04E0 ; 3E
|
dw $0000, $0000 ; 3E
|
||||||
dw $8001, $04F0 ; 3F
|
dw $0000, $0000 ; 3F
|
||||||
|
|
||||||
dw $8001, $0600 ; 40
|
dw $0000, $0000 ; 40
|
||||||
dw $8001, $0610 ; 41
|
dw $0000, $0000 ; 41
|
||||||
dw $8001, $0620 ; 42
|
dw $0000, $0000 ; 42
|
||||||
dw $8001, $0630 ; 43
|
dw $0000, $0000 ; 43
|
||||||
dw $8001, $0640 ; 44
|
dw $0000, $0000 ; 44
|
||||||
dw $8001, $0650 ; 45
|
dw $0000, $0000 ; 45
|
||||||
dw $8001, $0660 ; 46
|
dw $0000, $0000 ; 46
|
||||||
dw $8001, $0670 ; 47
|
dw $0000, $0000 ; 47
|
||||||
dw $8001, $0680 ; 48
|
dw $0000, $0000 ; 48
|
||||||
dw $8001, $0690 ; 49 ; z
|
dw $0000, $0000 ; 49
|
||||||
dw $8001, $06F0 ; 4A ; :
|
dw $0000, $0000 ; 4A
|
||||||
dw $8001, $0A90 ; 4B ; @ (thin)
|
dw $0000, $0000 ; 4B
|
||||||
dw $8001, $0AA0 ; 4C ; # (thin)
|
dw $0000, $0000 ; 4C
|
||||||
dw $0000, $0000 ; 4D
|
dw $0000, $0000 ; 4D
|
||||||
dw $0000, $0000 ; 4E
|
dw $0000, $0000 ; 4E
|
||||||
dw $8001, $0EF0 ; 4F ; <sp>
|
dw $8001, $0DF0 ; 4F ; <sp>
|
||||||
|
|
||||||
dw $0000, $0000 ; 50
|
dw $0000, $0000 ; 50
|
||||||
dw $0000, $0000 ; 51
|
dw $0000, $0000 ; 51
|
||||||
@@ -318,15 +314,15 @@ FontProperties:
|
|||||||
dw $0000, $0000 ; 94
|
dw $0000, $0000 ; 94
|
||||||
dw $0000, $0000 ; 95
|
dw $0000, $0000 ; 95
|
||||||
dw $0000, $0000 ; 96
|
dw $0000, $0000 ; 96
|
||||||
dw $0000, $0000 ; 97
|
dw $8001, $0AD0 ; 97 ; /
|
||||||
dw $0000, $0000 ; 98
|
dw $8001, $0AE0 ; 98 ; •
|
||||||
dw $0000, $0000 ; 99
|
dw $8001, $02A0 ; 99 ; Cursor |>
|
||||||
dw $0000, $0000 ; 9A
|
dw $0000, $0000 ; 9A ; smiley lookin JP char
|
||||||
dw $0000, $0000 ; 9B
|
dw $8001, $06A0 ; 9B ; Link face left
|
||||||
dw $0000, $0000 ; 9C
|
dw $8001, $06B0 ; 9C ; Link face right
|
||||||
dw $0000, $0000 ; 9D
|
dw $8001, $06E0 ; 9D ; '
|
||||||
dw $0000, $0000 ; 9E
|
dw $8001, $0AF0 ; 9E ; "
|
||||||
dw $0000, $0000 ; 9F
|
dw $8001, $02E0 ; 9F ; ellipsis ...
|
||||||
|
|
||||||
dw $8001, $0800 ; A0 ; 0
|
dw $8001, $0800 ; A0 ; 0
|
||||||
dw $8001, $0810 ; A1
|
dw $8001, $0810 ; A1
|
||||||
@@ -372,44 +368,44 @@ FontProperties:
|
|||||||
dw $8001, $06C0 ; C7 ; !
|
dw $8001, $06C0 ; C7 ; !
|
||||||
dw $8001, $02D0 ; C8 ; ,
|
dw $8001, $02D0 ; C8 ; ,
|
||||||
dw $8001, $02B0 ; C9 ; -
|
dw $8001, $02B0 ; C9 ; -
|
||||||
dw $8000, $0000 ; CA
|
dw $8000, $0000 ; CA ; 🡄"
|
||||||
dw $8000, $0000 ; CB
|
dw $8000, $0000 ; CB ; 🡆
|
||||||
dw $8000, $02E0 ; CC ; ...
|
dw $0000, $0000 ; CC ; Blank char
|
||||||
dw $8001, $02C0 ; CD ; .
|
dw $8001, $02C0 ; CD ; .
|
||||||
dw $8001, $02F0 ; CE ; ~
|
dw $8001, $02F0 ; CE ; ~
|
||||||
dw $8000, $0000 ; CF
|
dw $8000, $0000 ; CF ;
|
||||||
|
|
||||||
dw $0000, $0000 ; D0
|
dw $8001, $0400 ; D0 ; a
|
||||||
dw $0000, $0000 ; D1
|
dw $8001, $0410 ; D1
|
||||||
dw $8001, $06a0 ; D2 ; Link face left
|
dw $8001, $0420 ; D2
|
||||||
dw $8001, $06b0 ; D3 ; Link face right
|
dw $8001, $0430 ; D3
|
||||||
dw $0000, $0000 ; D4
|
dw $8001, $0440 ; D4
|
||||||
dw $0000, $0000 ; D5
|
dw $8001, $0450 ; D5
|
||||||
dw $0000, $0000 ; D6
|
dw $8001, $0460 ; D6
|
||||||
dw $0000, $0000 ; D7
|
dw $8001, $0470 ; D7
|
||||||
dw $8001, $06E0 ; D8 ; '
|
dw $8001, $0480 ; D8
|
||||||
dw $0000, $0000 ; D9
|
dw $8001, $0490 ; D9
|
||||||
dw $0000, $0000 ; DA
|
dw $8001, $04A0 ; DA
|
||||||
dw $0000, $0000 ; DB
|
dw $8001, $04B0 ; DB
|
||||||
dw $0000, $0000 ; DC
|
dw $8001, $04C0 ; DC
|
||||||
dw $0000, $0000 ; DD
|
dw $8001, $04D0 ; DD
|
||||||
dw $0000, $0000 ; DE
|
dw $8001, $04E0 ; DE
|
||||||
dw $0000, $0000 ; DF
|
dw $8001, $04F0 ; DF ; p
|
||||||
|
|
||||||
dw $0000, $0000 ; E0
|
dw $8001, $0600 ; E0 ; q
|
||||||
dw $0000, $0000 ; E1
|
dw $8001, $0610 ; E1
|
||||||
dw $0000, $0000 ; E2
|
dw $8001, $0620 ; E2
|
||||||
dw $0000, $0000 ; E3
|
dw $8001, $0630 ; E3
|
||||||
dw $8001, $02A0 ; E4 ; Cursor |>
|
dw $8001, $0640 ; E4
|
||||||
dw $0000, $0000 ; E5
|
dw $8001, $0650 ; E5
|
||||||
dw $0000, $0000 ; E6
|
dw $8001, $0660 ; E6
|
||||||
dw $0000, $0000 ; E7
|
dw $8001, $0670 ; E7
|
||||||
dw $0000, $0000 ; E8
|
dw $8001, $0680 ; E8
|
||||||
dw $0000, $0000 ; E9
|
dw $8001, $0690 ; E9 ; z
|
||||||
dw $0000, $0000 ; EA
|
dw $8001, $0A80 ; EA ; :
|
||||||
dw $0000, $0000 ; EB
|
dw $8001, $0A90 ; EB ; @ (thin)
|
||||||
dw $0000, $0000 ; EC
|
dw $8001, $0AA0 ; EC ; # (thin)
|
||||||
dw $0000, $0000 ; ED
|
dw $8001, $0A00 ; ED ; _
|
||||||
dw $0000, $0000 ; EE
|
dw $0000, $0000 ; EE
|
||||||
dw $0000, $0000 ; EF
|
dw $0000, $0000 ; EF
|
||||||
|
|
||||||
@@ -428,4 +424,4 @@ FontProperties:
|
|||||||
dw $0000, $0000 ; FC
|
dw $0000, $0000 ; FC
|
||||||
dw $0000, $0000 ; FD
|
dw $0000, $0000 ; FD
|
||||||
dw $0000, $0000 ; FE
|
dw $0000, $0000 ; FE
|
||||||
dw $8001, $0EF0 ; FF ; <sp>
|
dw $8001, $0DF0 ; FF ; <sp>
|
||||||
|
|||||||
44
timer.asm
44
timer.asm
@@ -110,22 +110,23 @@ dw #$003C, #$0000
|
|||||||
dw #$FFFF, #$7FFF
|
dw #$FFFF, #$7FFF
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawChallengeTimer:
|
DrawChallengeTimer:
|
||||||
LDA.l OHKOFlag : AND.w #$00FF : BEQ +
|
JSR.w CheckOHKO : BCC ++
|
||||||
LDA.w #$2807 : STA.l HUDTileMapBuffer+$90
|
AND.w #$00FF : BEQ +
|
||||||
LDA.w #$280A : STA.l HUDTileMapBuffer+$92
|
LDA.w #$2807 : STA.l HUDTileMapBuffer+$90
|
||||||
LDA.w #$280B : STA.l HUDTileMapBuffer+$94
|
LDA.w #$280A : STA.l HUDTileMapBuffer+$92
|
||||||
LDA.w #$280C : STA.l HUDTileMapBuffer+$96
|
LDA.w #$280B : STA.l HUDTileMapBuffer+$94
|
||||||
RTL
|
LDA.w #$280C : STA.l HUDTileMapBuffer+$96
|
||||||
+
|
RTL
|
||||||
LDA.w #$247F : STA.l HUDTileMapBuffer+$90
|
+
|
||||||
STA.l HUDTileMapBuffer+$92
|
LDA.w #$247F : STA.l HUDTileMapBuffer+$90
|
||||||
STA.l HUDTileMapBuffer+$94
|
STA.l HUDTileMapBuffer+$92
|
||||||
STA.l HUDTileMapBuffer+$96
|
STA.l HUDTileMapBuffer+$94
|
||||||
++
|
STA.l HUDTileMapBuffer+$96
|
||||||
|
++
|
||||||
|
|
||||||
LDA.l TimerStyle : BNE + : RTL : + ; Hud Timer
|
LDA.l TimerStyle : BNE + : RTL : + ; Hud Timer
|
||||||
LDA.w #$2807 : STA.l HUDTileMapBuffer+$92
|
LDA.w #$2807 : STA.l HUDTileMapBuffer+$92
|
||||||
LDA.l ClockStatus : AND.w #$0002 : BEQ + ; DNF / OKHO
|
LDA.l ClockStatus : AND.w #$0002 : BEQ + ; DNF / OKHO
|
||||||
|
|
||||||
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
|
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
|
||||||
LDA.w #$2808 : STA.l HUDTileMapBuffer+$94
|
LDA.w #$2808 : STA.l HUDTileMapBuffer+$94
|
||||||
@@ -171,3 +172,16 @@ OHKOTimer:
|
|||||||
LDA.l CurrentHealth
|
LDA.l CurrentHealth
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
CheckOHKO:
|
||||||
|
SEP #$20
|
||||||
|
LDA.l OHKOFlag : CMP.l OHKOCached : BNE .change
|
||||||
|
REP #$20
|
||||||
|
CLC
|
||||||
|
RTS
|
||||||
|
.change
|
||||||
|
STA.l OHKOCached
|
||||||
|
INC.w UpdateHUD
|
||||||
|
REP #$20
|
||||||
|
SEC
|
||||||
|
RTS
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
750
utilities.asm
750
utilities.asm
@@ -6,156 +6,25 @@
|
|||||||
; out: A - Sprite GFX ID
|
; out: A - Sprite GFX ID
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GetSpriteID:
|
GetSpriteID:
|
||||||
JSR AttemptItemSubstitution
|
JSL.l AttemptItemSubstitution
|
||||||
CMP.b #$16 : BEQ .bottle ; Bottle
|
JSR.w ResolveLootID
|
||||||
CMP.b #$2B : BEQ .bottle ; Red Potion w/bottle
|
|
||||||
CMP.b #$2C : BEQ .bottle ; Green Potion w/bottle
|
|
||||||
CMP.b #$2D : BEQ .bottle ; Blue Potion w/bottle
|
|
||||||
CMP.b #$3C : BEQ .bottle ; Bee w/bottle
|
|
||||||
CMP.b #$3D : BEQ .bottle ; Fairy w/bottle
|
|
||||||
CMP.b #$48 : BEQ .bottle ; Gold Bee w/bottle
|
|
||||||
CMP.b #$6D : BEQ .server_F0 ; Server Request F0
|
CMP.b #$6D : BEQ .server_F0 ; Server Request F0
|
||||||
CMP.b #$6E : BEQ .server_F1 ; Server Request F1
|
CMP.b #$6E : BEQ .server_F1 ; Server Request F1
|
||||||
CMP.b #$6F : BEQ .server_F2 ; Server Request F2
|
CMP.b #$6F : BEQ .server_F2 ; Server Request F2
|
||||||
BRA .normal
|
BRA .normal
|
||||||
.bottle
|
|
||||||
PHA : JSR.w CountBottles : CMP.l BottleLimit : !BLT +
|
|
||||||
PLA : LDA.l BottleLimitReplacement
|
|
||||||
JMP GetSpriteID
|
|
||||||
+
|
|
||||||
PLA : BRA .normal
|
|
||||||
.server_F0
|
.server_F0
|
||||||
JSL.l ItemVisualServiceRequest_F0
|
JSL.l ItemVisualServiceRequest_F0
|
||||||
BRA .normal
|
BRA .normal
|
||||||
.server_F1
|
.server_F1
|
||||||
JSL.l ItemVisualServiceRequest_F1
|
JSL.l ItemVisualServiceRequest_F1
|
||||||
BRA .normal
|
BRA .normal
|
||||||
.server_F2
|
.server_F2
|
||||||
JSL.l ItemVisualServiceRequest_F2
|
JSL.l ItemVisualServiceRequest_F2
|
||||||
.normal
|
.normal
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
PHB : PHK : PLB
|
TAX : LDA.l ItemReceipts_graphics, X ; look up item gfx
|
||||||
;--------
|
PLX
|
||||||
TAX : LDA.l .gfxSlots, X ; look up item gfx
|
|
||||||
PLB : PLX
|
|
||||||
CMP.b #$F8 : !BGE .specialHandling
|
|
||||||
RTL
|
RTL
|
||||||
.specialHandling
|
|
||||||
CMP.b #$F9 : BNE ++ ; Progressive Magic
|
|
||||||
LDA.l MagicConsumption : BNE +++
|
|
||||||
LDA.b #$3B : RTL ; Half Magic
|
|
||||||
+++
|
|
||||||
LDA.b #$3C : RTL ; Quarter Magic
|
|
||||||
++ CMP.b #$FA : BNE ++ ; RNG Item (Single)
|
|
||||||
JSL.l GetRNGItemSingle : JMP GetSpriteID
|
|
||||||
++ CMP.b #$FB : BNE ++ ; RNG Item (Multi)
|
|
||||||
JSL.l GetRNGItemMulti : JMP GetSpriteID
|
|
||||||
++ CMP.b #$FD : BNE ++ ; Progressive Armor
|
|
||||||
LDA.l ArmorEquipment : CMP.l ProgressiveArmorLimit : !BLT + ; Progressive Armor Limit
|
|
||||||
LDA.l ProgressiveArmorReplacement
|
|
||||||
JMP GetSpriteID
|
|
||||||
+
|
|
||||||
LDA.b #$04 : RTL
|
|
||||||
++ CMP.b #$FE : BNE ++ ; Progressive Sword
|
|
||||||
LDA.l HighestSword
|
|
||||||
CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit
|
|
||||||
LDA.l ProgressiveSwordReplacement
|
|
||||||
JMP GetSpriteID
|
|
||||||
+ : CMP.b #$00 : BNE + ; No Sword
|
|
||||||
LDA.b #$43 : RTL
|
|
||||||
+ : CMP.b #$01 : BNE + ; Fighter Sword
|
|
||||||
LDA.b #$44 : RTL
|
|
||||||
+ : CMP.b #$02 : BNE + ; Master Sword
|
|
||||||
LDA.b #$45 : RTL
|
|
||||||
+ ; CMP.b #$03 : BNE + ; Tempered Sword
|
|
||||||
LDA.b #$46 : RTL
|
|
||||||
+
|
|
||||||
++ : CMP.b #$FF : BNE ++ ; Progressive Shield
|
|
||||||
LDA.l HighestShield
|
|
||||||
CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit
|
|
||||||
LDA.l ProgressiveShieldReplacement
|
|
||||||
JMP GetSpriteID
|
|
||||||
+ : CMP.b #$00 : BNE + ; No Shield
|
|
||||||
LDA.b #$2D : RTL
|
|
||||||
+ : CMP.b #$01 : BNE + ; Fighter Shield
|
|
||||||
LDA.b #$20 : RTL
|
|
||||||
+ ; Everything Else
|
|
||||||
LDA.b #$2E : RTL
|
|
||||||
++ : CMP.b #$F8 : BNE ++ ; Progressive Bow
|
|
||||||
LDA.l BowEquipment : INC : LSR
|
|
||||||
CMP.l ProgressiveBowLimit : !BLT +
|
|
||||||
LDA.l ProgressiveBowReplacement
|
|
||||||
JMP GetSpriteID
|
|
||||||
+ : CMP.b #$00 : BNE + ; No Bow
|
|
||||||
LDA.b #$29 : RTL
|
|
||||||
+ ; Any Bow
|
|
||||||
LDA.b #$2A : RTL
|
|
||||||
++
|
|
||||||
RTL
|
|
||||||
|
|
||||||
;DATA - Loot Identifier to Sprite ID
|
|
||||||
{
|
|
||||||
.gfxSlots
|
|
||||||
db $06, $44, $45, $46, $2D, $20, $2E, $09
|
|
||||||
db $09, $0A, $08, $05, $10, $0B, $2C, $1B
|
|
||||||
|
|
||||||
db $1A, $1C, $14, $19, $0C, $07, $1D, $2F
|
|
||||||
db $07, $15, $12, $0D, $0D, $0E, $11, $17
|
|
||||||
|
|
||||||
db $28, $27, $04, $04, $0F, $16, $03, $13
|
|
||||||
db $01, $1E, $10, $00, $00, $00, $00, $00
|
|
||||||
|
|
||||||
db $00, $30, $22, $21, $24, $24, $24, $23
|
|
||||||
db $23, $23, $29, $2A, $2C, $2B, $03, $03
|
|
||||||
|
|
||||||
db $34, $35, $31, $33, $02, $32, $36, $37
|
|
||||||
db $2C, $43, $0C, $38, $39, $3A, $F9, $3C
|
|
||||||
; db $2C, $06, $0C, $38, $FF, $FF, $FF, $FF
|
|
||||||
|
|
||||||
;5x
|
|
||||||
db $44 ; Safe Master Sword
|
|
||||||
db $3D, $3E, $3F, $40 ; Bomb & Arrow +5/+10
|
|
||||||
db $2C, $00, $00 ; 3x Programmable Item
|
|
||||||
db $41 ; Upgrade-Only Silver Arrows
|
|
||||||
db $24 ; 1 Rupoor
|
|
||||||
db $47 ; Null Item
|
|
||||||
db $48, $48, $48 ; Red, Blue & Green Clocks
|
|
||||||
db $FE, $FF ; Progressive Sword & Shield
|
|
||||||
|
|
||||||
;6x
|
|
||||||
db $FD, $0D ; Progressive Armor & Gloves
|
|
||||||
db $FA, $FB ; RNG Single & Multi
|
|
||||||
db $F8, $F8 ; Progressive Bow x2
|
|
||||||
db $FF, $FF, $FF, $FF ; Unused
|
|
||||||
db $49, $4A, $49 ; Goal Item Single, Multi & Alt Multi
|
|
||||||
db $39, $39, $39 ; Server Request F0, F1, F2
|
|
||||||
|
|
||||||
;7x
|
|
||||||
db $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21, $21 ; Free Map
|
|
||||||
|
|
||||||
;8x
|
|
||||||
db $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16, $16 ; Free Compass
|
|
||||||
|
|
||||||
;9x
|
|
||||||
db $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22, $22 ; Free Big Key
|
|
||||||
|
|
||||||
;Ax
|
|
||||||
db $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F ; Free Small Key
|
|
||||||
|
|
||||||
;Bx
|
|
||||||
db $49 ; reserved for bee traps
|
|
||||||
db $13, $13, $13, $13, $13 ; reserved for bonk shuffle
|
|
||||||
db $13 ; Bomb Upgrade
|
|
||||||
db $07 ; Cane Upgrade
|
|
||||||
db $27 ; Bug Net Upgrade
|
|
||||||
db $49, $49, $49, $49, $49, $49, $49 ; Unused
|
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Reserved
|
|
||||||
}
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; GetSpritePalette
|
; GetSpritePalette
|
||||||
@@ -163,281 +32,70 @@ RTL
|
|||||||
; out: A - Palette
|
; out: A - Palette
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GetSpritePalette:
|
GetSpritePalette:
|
||||||
JSR AttemptItemSubstitution
|
JSL.l AttemptItemSubstitution
|
||||||
CMP.b #$16 : BEQ .bottle ; Bottle
|
JSR.w ResolveLootID
|
||||||
CMP.b #$2B : BEQ .bottle ; Red Potion w/bottle
|
.resolved
|
||||||
CMP.b #$2C : BEQ .bottle ; Green Potion w/bottle
|
TAX
|
||||||
CMP.b #$2D : BEQ .bottle ; Blue Potion w/bottle
|
LDA.l SpriteProperties_standing_palette, X : BIT #$80 : BNE .load_palette
|
||||||
CMP.b #$3C : BEQ .bottle ; Bee w/bottle
|
ASL
|
||||||
CMP.b #$3D : BEQ .bottle ; Fairy w/bottle
|
|
||||||
CMP.b #$48 : BEQ .bottle ; Gold Bee w/bottle
|
|
||||||
BRA .notBottle
|
|
||||||
.bottle
|
|
||||||
PHA : JSR.w CountBottles : CMP.l BottleLimit : !BLT +
|
|
||||||
PLA : LDA.l BottleLimitReplacement
|
|
||||||
JMP GetSpritePalette
|
|
||||||
+
|
|
||||||
PLA : .notBottle
|
|
||||||
PHX
|
|
||||||
PHB : PHK : PLB
|
|
||||||
;--------
|
|
||||||
TAX : LDA.l GfxPalettes, X ; look up item gfx
|
|
||||||
PLB : PLX
|
|
||||||
CMP.b #$F6 : !BGE .specialHandling
|
|
||||||
RTL
|
RTL
|
||||||
.specialHandling
|
.load_palette
|
||||||
CMP.b #$FD : BNE ++ ; Progressive Sword
|
JSL.l LoadItemPalette
|
||||||
LDA.l HighestSword
|
ASL
|
||||||
CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit
|
|
||||||
LDA.l ProgressiveSwordReplacement
|
|
||||||
JMP GetSpritePalette
|
|
||||||
+ : CMP.b #$00 : BNE + ; No Sword
|
|
||||||
LDA.b #$04 : RTL
|
|
||||||
+ : CMP.b #$01 : BNE + ; Fighter Sword
|
|
||||||
LDA.b #$04 : RTL
|
|
||||||
+ : CMP.b #$02 : BNE + ; Master Sword
|
|
||||||
LDA.b #$02 : RTL
|
|
||||||
+ ; Everything Else
|
|
||||||
LDA.b #$08 : RTL
|
|
||||||
++ : CMP.b #$FE : BNE ++ ; Progressive Shield
|
|
||||||
LDA.l HighestShield
|
|
||||||
CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit
|
|
||||||
LDA.l ProgressiveShieldReplacement
|
|
||||||
JMP GetSpritePalette
|
|
||||||
+ : CMP.b #$00 : BNE + ; No Shield
|
|
||||||
LDA.b #$04 : RTL
|
|
||||||
+ : CMP.b #$01 : BNE + ; Fighter Shield
|
|
||||||
LDA.b #$02 : RTL
|
|
||||||
+ ; Everything Else
|
|
||||||
LDA.b #$08 : RTL
|
|
||||||
++ : CMP.b #$FF : BNE ++ ; Progressive Armor
|
|
||||||
LDA.l HighestMail
|
|
||||||
CMP.l ProgressiveArmorLimit : !BLT + ; Progressive Armor Limit
|
|
||||||
LDA.l ProgressiveArmorReplacement
|
|
||||||
JMP GetSpritePalette
|
|
||||||
+ : CMP.b #$00 : BNE + ; Green Tunic
|
|
||||||
LDA.b #$04 : RTL
|
|
||||||
+ ; Everything Else
|
|
||||||
LDA.b #$02 : RTL
|
|
||||||
++ : CMP.b #$FC : BNE ++ ; Progressive Gloves
|
|
||||||
LDA.l GloveEquipment : BNE + ; No Gloves
|
|
||||||
LDA.b #$02 : RTL
|
|
||||||
+ ; Everything Else
|
|
||||||
LDA.b #$08 : RTL
|
|
||||||
++ : CMP.b #$F8 : BNE ++ ; Progressive Bow
|
|
||||||
LDA.l BowEquipment : INC : LSR
|
|
||||||
CMP.l ProgressiveBowLimit : !BLT +
|
|
||||||
LDA.l ProgressiveBowReplacement
|
|
||||||
JMP GetSpritePalette
|
|
||||||
+ : CMP.b #$00 : BNE + ; No Bow
|
|
||||||
LDA.b #$08 : RTL
|
|
||||||
+ ; Any Bow
|
|
||||||
LDA.b #$02 : RTL
|
|
||||||
++ : CMP.b #$F7 : BNE ++ ; Progressive Bombs
|
|
||||||
LDA SpecialWeaponLevel
|
|
||||||
CMP.b #$00 : BNE + ; No Bombs
|
|
||||||
LDA.b #$08 : RTL
|
|
||||||
+ : CMP.b #$01 : BNE + ; L1 Bombs
|
|
||||||
LDA.b #$04 : RTL
|
|
||||||
+ : CMP.b #$02 : BNE + ; L2 Bombs
|
|
||||||
LDA.b #$02 : RTL
|
|
||||||
+ ; Everything Else
|
|
||||||
LDA.b #$0A : RTL
|
|
||||||
++ : CMP.b #$FA : BNE ++ ; RNG Item (Single)
|
|
||||||
JSL.l GetRNGItemSingle : JMP GetSpritePalette
|
|
||||||
++ : CMP.b #$FB : BNE ++ ; RNG Item (Multi)
|
|
||||||
JSL.l GetRNGItemMulti : JMP GetSpritePalette
|
|
||||||
++
|
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;DATA - Loot Identifier to Sprite Palette
|
|
||||||
{
|
|
||||||
GfxPalettes:
|
|
||||||
db $00, $04, $02, $08, $04, $02, $08, $02
|
|
||||||
db $04, $02, $02, $02, $04, $04, $04, $08
|
|
||||||
|
|
||||||
db $08, $08, $02, $02, $04, $02, $02, $02
|
|
||||||
db $04, $02, $04, $02, $08, $08, $04, $02
|
|
||||||
|
|
||||||
db $0A, $02, $04, $02, $04, $04, $00, $04
|
|
||||||
db $04, $08, $02, $02, $08, $04, $02, $08
|
|
||||||
|
|
||||||
db $04, $04, $08, $08, $08, $04, $02, $08
|
|
||||||
db $02, $04, $08, $02, $04, $04, $02, $02
|
|
||||||
|
|
||||||
db $08, $08, $02, $04, $04, $08, $08, $08
|
|
||||||
db $04, $04, $04, $02, $08, $08, $08, $08
|
|
||||||
; db $04, $0A, $04, $02, $FF, $FF, $FF, $FF
|
|
||||||
|
|
||||||
db $04 ; Safe Master Sword
|
|
||||||
db $08, $08, $08, $08 ; Bomb & Arrow +5/+10
|
|
||||||
db $04, $00, $00 ; Programmable Items 1-3
|
|
||||||
db $02 ; Upgrade-Only Silver Arrows
|
|
||||||
db $06 ; 1 Rupoor
|
|
||||||
db $02 ; Null Item
|
|
||||||
db $02, $04, $08 ; Red, Blue & Green Clocks
|
|
||||||
db $FD, $FE, $FF, $FC ; Progressive Sword, Shield, Armor & Gloves
|
|
||||||
db $FA, $FB ; RNG Single & Multi
|
|
||||||
db $F8, $F8 ; Progressive Bow
|
|
||||||
db $00, $00, $00, $00 ; Unused
|
|
||||||
db $08, $08, $08 ; Goal Item Single, Multi & Alt Multi
|
|
||||||
db $04, $04, $04 ; Server Request F0, F1, F2
|
|
||||||
|
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Free Map
|
|
||||||
db $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04 ; Free Compass
|
|
||||||
;db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; *EVENT*
|
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Free Big Key
|
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Free Small Key
|
|
||||||
db $08 ; reserved for bee traps
|
|
||||||
db $08, $08, $08, $08, $08 ; reserved for bonk shuffle
|
|
||||||
db $F7 ; Bomb Upgrade
|
|
||||||
db $0A ; Cane Upgrade
|
|
||||||
db $02 ; Bug Net Upgrade
|
|
||||||
db $08, $08, $08, $08, $08, $08, $08 ; Unused
|
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
|
||||||
}
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; IsNarrowSprite
|
|
||||||
; in: A - Loot ID
|
|
||||||
; out: Carry - 0 = Full, 1 = Narrow
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
IsNarrowSprite:
|
|
||||||
PHA : PHX
|
|
||||||
PHB : PHK : PLB
|
|
||||||
JSR AttemptItemSubstitution
|
|
||||||
;--------
|
|
||||||
CMP.b #$16 : BEQ .bottle ; Bottle
|
|
||||||
CMP.b #$2B : BEQ .bottle ; Red Potion w/bottle
|
|
||||||
CMP.b #$2C : BEQ .bottle ; Green Potion w/bottle
|
|
||||||
CMP.b #$2D : BEQ .bottle ; Blue Potion w/bottle
|
|
||||||
CMP.b #$3C : BEQ .bottle ; Bee w/bottle
|
|
||||||
CMP.b #$3D : BEQ .bottle ; Fairy w/bottle
|
|
||||||
CMP.b #$48 : BEQ .bottle ; Gold Bee w/bottle
|
|
||||||
BRA .notBottle
|
|
||||||
.bottle
|
|
||||||
JSR.w CountBottles : CMP.l BottleLimit : !BLT +
|
|
||||||
LDA.l BottleLimitReplacement
|
|
||||||
JSL.l IsNarrowSprite
|
|
||||||
JMP .done
|
|
||||||
+ : JMP .continue
|
|
||||||
.notBottle
|
|
||||||
CMP.b #$5E : BNE ++ ; Progressive Sword
|
|
||||||
LDA.l HighestSword : CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit
|
|
||||||
LDA.l ProgressiveSwordReplacement
|
|
||||||
JSL.l IsNarrowSprite
|
|
||||||
JMP .done
|
|
||||||
+ : JMP .continue
|
|
||||||
++ CMP.b #$5F : BNE ++ ; Progressive Shield
|
|
||||||
LDA.l HighestShield : BNE + : JMP .done ; No Shield
|
|
||||||
+ : CMP.l ProgressiveShieldLimit : !BLT .continue
|
|
||||||
LDA.l ProgressiveShieldReplacement
|
|
||||||
JSL.l IsNarrowSprite
|
|
||||||
JMP .done
|
|
||||||
++ CMP.b #$60 : BNE ++ ; Progressive Armor
|
|
||||||
LDA.l HighestMail : CMP.l ProgressiveArmorLimit : !BLT .continue
|
|
||||||
LDA.l ProgressiveArmorReplacement
|
|
||||||
JSL.l IsNarrowSprite
|
|
||||||
JMP .done
|
|
||||||
+
|
|
||||||
++ CMP.b #$62 : BNE ++ ; RNG Item (Single)
|
|
||||||
JSL.l GetRNGItemSingle : JMP .continue
|
|
||||||
++ CMP.b #$63 : BNE ++ ; RNG Item (Multi)
|
|
||||||
JSL.l GetRNGItemMulti
|
|
||||||
++ CMP.b #$64 : BEQ + ; Progressive Bow
|
|
||||||
CMP.b #$65 : BNE .continue ; Progressive Bow (alt)
|
|
||||||
+ : LDA.l BowEquipment : INC : LSR
|
|
||||||
CMP.l ProgressiveBowLimit : !BLT +
|
|
||||||
LDA.l ProgressiveBowReplacement
|
|
||||||
JSL.l IsNarrowSprite
|
|
||||||
JMP .done
|
|
||||||
.continue
|
|
||||||
;--------
|
|
||||||
|
|
||||||
LDX.b #$00 ; set index counter to 0
|
|
||||||
;----
|
|
||||||
-
|
|
||||||
CPX.b #$2A : !BGE .false ; finish if we've done the whole list
|
|
||||||
CMP.l .smallSprites, X : BNE + ; skip to next if we don't match
|
|
||||||
;--
|
|
||||||
SEC ; set true state
|
|
||||||
BRA .done ; we're done
|
|
||||||
;--
|
|
||||||
+
|
|
||||||
INX ; increment index
|
|
||||||
BRA - ; go back to beginning of loop
|
|
||||||
;----
|
|
||||||
.false
|
|
||||||
CLC
|
|
||||||
.done
|
|
||||||
PLB : PLX : PLA
|
|
||||||
RTL
|
|
||||||
|
|
||||||
;DATA - Half-Size Sprite Markers
|
|
||||||
{
|
|
||||||
.smallSprites
|
|
||||||
db $04, $07, $08, $09, $0A, $0B, $0C, $13
|
|
||||||
db $15, $18, $24, $2A, $34, $35, $36, $42
|
|
||||||
db $43, $45, $59, $A0, $A1, $A2, $A3, $A4
|
|
||||||
db $A5, $A6, $A7, $A8, $A9, $AA, $AB, $AC
|
|
||||||
db $AD, $AE, $AF, $B7, $FF, $FF, $FF, $FF
|
|
||||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
|
|
||||||
}
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; PrepDynamicTile
|
; PrepDynamicTile
|
||||||
; in: A - Loot ID
|
; in: SpriteID,X - Loot ID
|
||||||
;-------------------------------------------------------------------------------- 20/8477
|
;-------------------------------------------------------------------------------- 20/8477
|
||||||
PrepDynamicTile:
|
PrepDynamicTile:
|
||||||
PHA : PHX : PHY
|
PHX : PHY : PHB
|
||||||
|
JSR.w ResolveLootID
|
||||||
|
-
|
||||||
JSR.w LoadDynamicTileOAMTable
|
JSR.w LoadDynamicTileOAMTable
|
||||||
JSL.l GetSpriteID ; convert loot id to sprite id
|
JSL TransferItemReceiptToBuffer_using_ReceiptID
|
||||||
JSL.l GetAnimatedSpriteTile_variable
|
SEP #$30
|
||||||
PLY : PLX : PLA
|
PLB : PLY : PLX
|
||||||
RTL
|
RTL
|
||||||
|
.loot_resolved
|
||||||
|
PHX : PHY : PHB
|
||||||
|
BRA -
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; LoadDynamicTileOAMTable
|
; LoadDynamicTileOAMTable
|
||||||
; in: A - Loot ID
|
; in: SpriteID,X - Loot ID
|
||||||
|
; out: A - Loot ID
|
||||||
;-------------------------------------------------------------------------------- 20/847B
|
;-------------------------------------------------------------------------------- 20/847B
|
||||||
LoadDynamicTileOAMTable:
|
LoadDynamicTileOAMTable:
|
||||||
PHA : PHP
|
PHP
|
||||||
|
REP #$20
|
||||||
PHA
|
LDA.w #$0000 : STA.l SpriteOAM : STA.l SpriteOAM+2
|
||||||
REP #$20 ; set 16-bit accumulator
|
LDA.w #$0200 : STA.l SpriteOAM+6
|
||||||
LDA.w #$0000 : STA.l SpriteOAM
|
SEP #$20
|
||||||
STA.l SpriteOAM+2
|
LDA.b #$24 : STA.l SpriteOAM+4
|
||||||
LDA.w #$0200 : STA.l SpriteOAM+6
|
|
||||||
SEP #$20 ; set 8-bit accumulator
|
|
||||||
LDA.b #$24 : STA.l SpriteOAM+4
|
|
||||||
|
|
||||||
LDA.b $01,s
|
|
||||||
|
|
||||||
JSL.l GetSpritePalette
|
|
||||||
STA.l SpriteOAM+5 : STA.l SpriteOAM+13
|
|
||||||
PLA
|
|
||||||
JSL.l IsNarrowSprite : BCS .narrow
|
|
||||||
|
|
||||||
|
LDA.w SpriteID,X
|
||||||
|
JSL.l GetSpritePalette_resolved
|
||||||
|
STA.l SpriteOAM+5 : STA.l SpriteOAM+13
|
||||||
|
PHX
|
||||||
|
LDA.l SpriteProperties_standing_width,X : BEQ .narrow
|
||||||
BRA .done
|
BRA .done
|
||||||
|
|
||||||
.narrow
|
.narrow
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20
|
||||||
LDA.w #$0000 : STA.l SpriteOAM+7
|
LDA.w #$0400 : STA.l SpriteOAM+7 : STA.l SpriteOAM+14
|
||||||
STA.l SpriteOAM+14
|
LDA.w #$0000 : STA.l SpriteOAM+14
|
||||||
LDA.w #$0800 : STA.l SpriteOAM+9
|
LDA.w #$0800 : STA.l SpriteOAM+9
|
||||||
LDA.w #$3400 : STA.l SpriteOAM+11
|
LDA.w #$3400 : STA.l SpriteOAM+11
|
||||||
|
|
||||||
.done
|
SEP #$20
|
||||||
PLP : PLA
|
LDA.b #$04 : STA.l SpriteOAM
|
||||||
RTS
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
.done
|
||||||
|
TXA
|
||||||
|
PLX
|
||||||
|
PLP
|
||||||
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; DrawDynamicTile
|
; DrawDynamicTile
|
||||||
; in: A - Loot ID
|
; in: A - Loot ID
|
||||||
@@ -446,15 +104,19 @@ RTS
|
|||||||
; This wastes two OAM slots if you don't want a shadow - fix later - I wrote "fix later" over a year ago and it's still not fixed (Aug 6, 2017) - lol (May 25th, 2019)
|
; This wastes two OAM slots if you don't want a shadow - fix later - I wrote "fix later" over a year ago and it's still not fixed (Aug 6, 2017) - lol (May 25th, 2019)
|
||||||
;-------------------------------------------------------------------------------- 2084B8
|
;-------------------------------------------------------------------------------- 2084B8
|
||||||
DrawDynamicTile:
|
DrawDynamicTile:
|
||||||
JSL.l IsNarrowSprite : BCS .narrow
|
PHX
|
||||||
|
TAX
|
||||||
|
LDA.l SpriteProperties_standing_width,X : BEQ .narrow
|
||||||
|
|
||||||
.full
|
.full
|
||||||
|
PLX
|
||||||
LDA.b #$01 : STA.b Scrap06
|
LDA.b #$01 : STA.b Scrap06
|
||||||
LDA.b #$0C : JSL.l OAM_AllocateFromRegionC
|
LDA.b #$0C : JSL.l OAM_AllocateFromRegionC
|
||||||
LDA.b #$02 : PHA
|
LDA.b #$02 : PHA
|
||||||
BRA .draw
|
BRA .draw
|
||||||
|
|
||||||
.narrow
|
.narrow
|
||||||
|
PLX
|
||||||
LDA.b #$02 : STA.b Scrap06
|
LDA.b #$02 : STA.b Scrap06
|
||||||
LDA.b #$10 : JSL.l OAM_AllocateFromRegionC
|
LDA.b #$10 : JSL.l OAM_AllocateFromRegionC
|
||||||
LDA.b #$03 : PHA
|
LDA.b #$03 : PHA
|
||||||
@@ -464,9 +126,9 @@ DrawDynamicTile:
|
|||||||
LDA.b #SpriteOAM>>8 : STA.b Scrap09
|
LDA.b #SpriteOAM>>8 : STA.b Scrap09
|
||||||
STZ.b Scrap07
|
STZ.b Scrap07
|
||||||
LDA.b #$7E : PHB : PHA : PLB
|
LDA.b #$7E : PHB : PHA : PLB
|
||||||
LDA.b #$01 : STA.l SpriteSkipEOR
|
LDA.b #$01 : STA.l SpriteSkipEOR
|
||||||
JSL Sprite_DrawMultiple_quantity_preset
|
JSL Sprite_DrawMultiple_quantity_preset
|
||||||
LDA.b #$00 : STA.l SpriteSkipEOR
|
LDA.b #$00 : STA.l SpriteSkipEOR
|
||||||
PLB
|
PLB
|
||||||
|
|
||||||
LDA.b OAMPtr : !ADD.b #$08 : STA.b OAMPtr ; leave the pointer in the right spot to draw the shadow, if desired
|
LDA.b OAMPtr : !ADD.b #$08 : STA.b OAMPtr ; leave the pointer in the right spot to draw the shadow, if desired
|
||||||
@@ -475,14 +137,18 @@ DrawDynamicTile:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DrawDynamicTileNoShadow:
|
DrawDynamicTileNoShadow:
|
||||||
JSL.l IsNarrowSprite : BCS .narrow
|
PHX
|
||||||
|
TAX
|
||||||
|
LDA.l SpriteProperties_standing_width,X : BEQ .narrow
|
||||||
|
|
||||||
.full
|
.full
|
||||||
|
PLX
|
||||||
LDA.b #$01 : STA.b Scrap06
|
LDA.b #$01 : STA.b Scrap06
|
||||||
LDA.b #$04 : JSL.l OAM_AllocateFromRegionC
|
LDA.b #$04 : JSL.l OAM_AllocateFromRegionC
|
||||||
BRA .draw
|
BRA .draw
|
||||||
|
|
||||||
.narrow
|
.narrow
|
||||||
|
PLX
|
||||||
LDA.b #$02 : STA.b Scrap06
|
LDA.b #$02 : STA.b Scrap06
|
||||||
LDA.b #$08 : JSL.l OAM_AllocateFromRegionC
|
LDA.b #$08 : JSL.l OAM_AllocateFromRegionC
|
||||||
|
|
||||||
@@ -491,9 +157,9 @@ DrawDynamicTileNoShadow:
|
|||||||
LDA.b #SpriteOAM>>8 : STA.b Scrap09
|
LDA.b #SpriteOAM>>8 : STA.b Scrap09
|
||||||
STZ.b Scrap07
|
STZ.b Scrap07
|
||||||
LDA.b #$7E : PHB : PHA : PLB
|
LDA.b #$7E : PHB : PHA : PLB
|
||||||
LDA.b #$01 : STA.l SpriteSkipEOR
|
LDA.b #$01 : STA.l SpriteSkipEOR
|
||||||
JSL Sprite_DrawMultiple_quantity_preset
|
JSL Sprite_DrawMultiple_quantity_preset
|
||||||
LDA.l Bob : BNE + : LDA.b #$00 : STA.l SpriteSkipEOR : + ; Bob fix is conditional
|
LDA.l Bob : BNE + : LDA.b #$00 : STA.l SpriteSkipEOR : + ; Bob fix is conditional
|
||||||
PLB
|
PLB
|
||||||
|
|
||||||
LDA.b OAMPtr : !ADD.b #$08 : STA.b OAMPtr
|
LDA.b OAMPtr : !ADD.b #$08 : STA.b OAMPtr
|
||||||
@@ -523,13 +189,13 @@ RTL
|
|||||||
; out: Carry - 1 = On Screen, 0 = Off Screen
|
; out: Carry - 1 = On Screen, 0 = Off Screen
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Sprite_IsOnscreen:
|
Sprite_IsOnscreen:
|
||||||
JSR _Sprite_IsOnscreen_DoWork
|
JSR .check_sprite
|
||||||
BCS +
|
BCS +
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.b BG2H : PHA : !SUB.w #$0F : STA.b BG2H
|
LDA.b BG2H : PHA : !SUB.w #$0F : STA.b BG2H
|
||||||
LDA.b BG2V : PHA : !SUB.w #$0F : STA.b BG2V
|
LDA.b BG2V : PHA : !SUB.w #$0F : STA.b BG2V
|
||||||
SEP #$20
|
SEP #$20
|
||||||
JSR _Sprite_IsOnscreen_DoWork
|
JSR .check_sprite
|
||||||
REP #$20
|
REP #$20
|
||||||
PLA : STA.b BG2V
|
PLA : STA.b BG2V
|
||||||
PLA : STA.b BG2H
|
PLA : STA.b BG2H
|
||||||
@@ -537,7 +203,7 @@ Sprite_IsOnscreen:
|
|||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
_Sprite_IsOnscreen_DoWork:
|
.check_sprite
|
||||||
LDA.w SpritePosXLow, X : CMP.b BG2H
|
LDA.w SpritePosXLow, X : CMP.b BG2H
|
||||||
LDA.w SpritePosXHigh, X : SBC.b BG2H+1 : BNE .offscreen
|
LDA.w SpritePosXHigh, X : SBC.b BG2H+1 : BNE .offscreen
|
||||||
|
|
||||||
@@ -580,106 +246,10 @@ RTL
|
|||||||
SkipDrawEOR:
|
SkipDrawEOR:
|
||||||
LDA.l SpriteSkipEOR : BEQ .normal
|
LDA.l SpriteSkipEOR : BEQ .normal
|
||||||
LDA.w #$0000 : STA.l SpriteSkipEOR
|
LDA.w #$0000 : STA.l SpriteSkipEOR
|
||||||
LDA.w Scrap04 : AND.w #$F0FF : STA.w Scrap04
|
LDA.w #$0F00 : TRB.b Scrap04
|
||||||
.normal
|
.normal
|
||||||
LDA.b ($08), Y : EOR.w Scrap04 ; thing we wrote over
|
LDA.b ($08), Y : EOR.w Scrap04 ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; HexToDec
|
|
||||||
; in: A(w) - Word to Convert
|
|
||||||
; out: HexToDecDigit1 - HexToDecDigit5 (high - low)
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
HexToDec:
|
|
||||||
PHA
|
|
||||||
PHA
|
|
||||||
LDA.w #$9090
|
|
||||||
STA.b Scrap04 : STA.b Scrap06 ; temporarily store our decimal values here for speed
|
|
||||||
PLA
|
|
||||||
-
|
|
||||||
CMP.w #1000 : !BLT +
|
|
||||||
INC.b Scrap04
|
|
||||||
!SUB.w #1000 : BRA -
|
|
||||||
+ -
|
|
||||||
CMP.w #100 : !BLT +
|
|
||||||
INC.b Scrap05
|
|
||||||
!SUB.w #100 : BRA -
|
|
||||||
+ -
|
|
||||||
CMP.w #10 : !BLT +
|
|
||||||
INC.b Scrap06
|
|
||||||
!SUB.w #10 : BRA -
|
|
||||||
+ -
|
|
||||||
CMP.w #1 : !BLT +
|
|
||||||
INC.b Scrap07
|
|
||||||
!SUB.w #1 : BRA -
|
|
||||||
+
|
|
||||||
LDA.b Scrap04 : STA.l HexToDecDigit2 ; move to digit storage
|
|
||||||
LDA.b Scrap06 : STA.l HexToDecDigit4
|
|
||||||
PLA
|
|
||||||
RTL
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; CountBits
|
|
||||||
; in: A(b) - Byte to count bits in
|
|
||||||
; out: A(b) - sum of bits
|
|
||||||
; caller is responsible for setting 8-bit mode and preserving X and Y
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;CountBits:
|
|
||||||
; PHX
|
|
||||||
; TAX ; Save a copy of value
|
|
||||||
; LSR #4 ; Shift down hi nybble, Leave <3> in C
|
|
||||||
; PHA ; And save <7:4> in Stack
|
|
||||||
; TXA ; Recover value
|
|
||||||
; AND.b #$07 ; Put out <2:0> in X
|
|
||||||
; TAX ; And save in X
|
|
||||||
; LDA.l NybbleBitCounts, X ; Fetch count for <2:0>
|
|
||||||
; PLX ; get <7:4>
|
|
||||||
; ADC.l NybbleBitCounts, X ; Add count for S & C
|
|
||||||
; PLX
|
|
||||||
;RTL
|
|
||||||
|
|
||||||
; Look up table of bit counts in the values $00-$0F
|
|
||||||
NybbleBitCounts:
|
|
||||||
db #00, #01, #01, #02, #01, #02, #02, #03, #01, #02, #02, #03, #02, #03, #03, #04
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; HexToDec
|
|
||||||
; in: A(w) - Word to Convert
|
|
||||||
; out: HexToDecDigit1 - HexToDecDigit5 (high - low)
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;HexToDec:
|
|
||||||
; PHA
|
|
||||||
; PHA
|
|
||||||
; LDA.w #$9090
|
|
||||||
; STA.l HexToDecDigit1 : STA.l HexToDecDigit3 : STA.l HexToDecDigit4 ; clear digit storage
|
|
||||||
; PLA
|
|
||||||
; -
|
|
||||||
; CMP.w #10000 : !BLT +
|
|
||||||
; PHA : SEP #$20 : LDA.l HexToDecDigit1 : INC : STA.l HexToDecDigit1 : REP #$20 : PLA
|
|
||||||
; !SUB.w #10000 : BRA -
|
|
||||||
; + -
|
|
||||||
; CMP.w #1000 : !BLT +
|
|
||||||
; PHA : SEP #$20 : LDA.l HexToDecDigit2 : INC : STA.l HexToDecDigit2 : REP #$20 : PLA
|
|
||||||
; !SUB.w #1000 : BRA -
|
|
||||||
; + -
|
|
||||||
; CMP.w #100 : !BLT +
|
|
||||||
; PHA : SEP #$20 : LDA.l HexToDecDigit3 : INC : STA.l HexToDecDigit3 : REP #$20 : PLA
|
|
||||||
; !SUB.w #100 : BRA -
|
|
||||||
; + -
|
|
||||||
; CMP.w #10 : !BLT +
|
|
||||||
; PHA : SEP #$20 : LDA.l HexToDecDigit4 : INC : STA.l HexToDecDigit4 : REP #$20 : PLA
|
|
||||||
; !SUB.w #10 : BRA -
|
|
||||||
; + -
|
|
||||||
; CMP.w #1 : !BLT +
|
|
||||||
; PHA : SEP #$20 : LDA.l HexToDecDigit5 : INC : STA.l HexToDecDigit5 : REP #$20 : PLA
|
|
||||||
; !SUB.w #1 : BRA -
|
|
||||||
; +
|
|
||||||
; PLA
|
|
||||||
;RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; WriteVRAMStripe
|
; WriteVRAMStripe
|
||||||
@@ -708,27 +278,27 @@ RTL
|
|||||||
; in: Y(w) - Address of Data to Copy
|
; in: Y(w) - Address of Data to Copy
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
WriteVRAMBlock:
|
WriteVRAMBlock:
|
||||||
PHX
|
PHX
|
||||||
LDX.w GFXStripes ; get pointer
|
LDX.w GFXStripes ; get pointer
|
||||||
AND.w #$7F : STA.w GFXStripes+2, X : INX #2 ; set destination
|
AND.w #$7F : STA.w GFXStripes+2, X : INX #2 ; set destination
|
||||||
PLA : ASL : AND.w #$3FFF : STA.w GFXStripes+2, X : INX #2 ; set length
|
PLA : ASL : AND.w #$3FFF : STA.w GFXStripes+2, X : INX #2 ; set length
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
TYX ; set X to source
|
TYX ; set X to source
|
||||||
PHA
|
PHA
|
||||||
TXA : !ADD #$1002 : TAY ; set Y to dest
|
TXA : !ADD #$1002 : TAY ; set Y to dest
|
||||||
PLA
|
PLA
|
||||||
;A is already the value we need for mvn
|
;A is already the value we need for mvn
|
||||||
MVN $7F7E ; currently we transfer from our buffers in 7F to the vram buffer in 7E
|
MVN $7F7E ; currently we transfer from our buffers in 7F to the vram buffer in 7E
|
||||||
|
|
||||||
!ADD 1, s ; add the length in A to the stack pointer on the top of the stack
|
!ADD 1, s ; add the length in A to the stack pointer on the top of the stack
|
||||||
PLX : TAX ; pull and promptly ignore, copying the value we just got over it
|
PLX : TAX ; pull and promptly ignore, copying the value we just got over it
|
||||||
|
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA.b #$FF : STA.w GFXStripes+$02, X
|
LDA.b #$FF : STA.w GFXStripes+$02, X
|
||||||
STX.w GFXStripes
|
STX.w GFXStripes
|
||||||
LDA.b #01 : STA.w NMISTRIPES
|
LDA.b #01 : STA.w NMISTRIPES
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;Byte 1 byte 2 Byte 3 byte 4
|
;Byte 1 byte 2 Byte 3 byte 4
|
||||||
@@ -746,8 +316,142 @@ RTL
|
|||||||
;This feature makes it easy to draw the same tile repeatedly. If this bit is set, the length bits should be set to 2 times the number of copies of the tile to upload. (Without subtracting 1!)
|
;This feature makes it easy to draw the same tile repeatedly. If this bit is set, the length bits should be set to 2 times the number of copies of the tile to upload. (Without subtracting 1!)
|
||||||
;It is followed by a single tile (word). Combining this this with the D bit makes it easy to draw large horizontal or vertical runs of a tile without using much space. Geat for erasing or drawing horizontal or verical box edges.
|
;It is followed by a single tile (word). Combining this this with the D bit makes it easy to draw large horizontal or vertical runs of a tile without using much space. Geat for erasing or drawing horizontal or verical box edges.
|
||||||
;================================================================================
|
;================================================================================
|
||||||
TransferVRAMStripes:
|
|
||||||
JSL.l TransferNumericStripes
|
DynamicDrawCleanup:
|
||||||
JSL.l DoDungeonMapBossIcon
|
PHA
|
||||||
LDA.b NMISTRIPES : CMP.b #$01 ; What we wrote over
|
REP #$20
|
||||||
|
LDA.w #$F000
|
||||||
|
STA.w OAMBuffer
|
||||||
|
STA.w OAMBuffer+$04
|
||||||
|
STA.w OAMBuffer+$08
|
||||||
|
STA.w OAMBuffer+$0C
|
||||||
|
STZ.w OAMBuffer+$02
|
||||||
|
STZ.w OAMBuffer+$06
|
||||||
|
STZ.w OAMBuffer+$0A
|
||||||
|
STZ.w OAMBuffer+$0E
|
||||||
|
SEP #$20
|
||||||
|
PLA
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
CheckReceivedItemPropertiesBeforeLoad:
|
||||||
|
PHX
|
||||||
|
LDX.w CurrentSpriteSlot
|
||||||
|
LDA.w AncillaID,X : CMP.b #$29 : BEQ .falling_sprite
|
||||||
|
PLX
|
||||||
|
LDA.b RoomIndex : BEQ .normalCode
|
||||||
|
LDA.l RoomFade : BNE .load_palette
|
||||||
|
.normalCode
|
||||||
|
LDA.l SpriteProperties_chest_palette,X : BIT #$80 : BNE .load_palette
|
||||||
|
RTL
|
||||||
|
.load_palette
|
||||||
|
JSL.l LoadItemPalette
|
||||||
|
RTL
|
||||||
|
.falling_sprite
|
||||||
|
PLX
|
||||||
|
LDA.l SpriteProperties_standing_palette,X : BIT #$80 : BNE .load_palette
|
||||||
|
RTL
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
LoadItemPalette:
|
||||||
|
; In: X - Loot ID
|
||||||
|
; Out: A - Sprite palette index
|
||||||
|
PHX : PHY : PHB
|
||||||
|
LDA.b #PalettesVanillaBank>>16 : STA.b Scrap0C
|
||||||
|
PEA $7E00
|
||||||
|
PLB : PLB
|
||||||
|
REP #$30
|
||||||
|
|
||||||
|
|
||||||
|
CPX.w #$00C0 : BNE .not_prog_bombs
|
||||||
|
LDA.l SpecialWeaponLevel : AND.w #$00FF : BNE +
|
||||||
|
LDA.w #PalettesVanilla_blue_ice+$0E : BRA .continue ; none
|
||||||
|
+ DEC : BNE +
|
||||||
|
LDA.w #PalettesVanilla_green_blue_guard+$0E : BRA .continue ; fighter
|
||||||
|
+ DEC : BNE +
|
||||||
|
LDA.w #PalettesVanilla_blue_ice+$0E : BRA .continue ; master
|
||||||
|
+ DEC : BNE +
|
||||||
|
LDA.w #PalettesVanilla_red_melon+$0E : BRA .continue ; tempered
|
||||||
|
+ LDA.w #PalettesCustom_golden_bombs : BRA .continue ; gold
|
||||||
|
|
||||||
|
.not_prog_bombs
|
||||||
|
TXA : ASL : TAX
|
||||||
|
LDA.l SpriteProperties_palette_addr, X
|
||||||
|
|
||||||
|
.continue
|
||||||
|
STA.b Scrap0A
|
||||||
|
|
||||||
|
LDY.w #$000E
|
||||||
|
JSR.w GTTorchCheck : BCS .aux
|
||||||
|
LDA.w TransparencyFlag : BNE .SP05
|
||||||
|
-
|
||||||
|
LDA.b [Scrap0A], Y
|
||||||
|
STA.w PaletteBuffer+$0170,Y
|
||||||
|
DEY #2
|
||||||
|
BPL -
|
||||||
|
LDA.w #$0003
|
||||||
|
BRA .done
|
||||||
|
.SP05
|
||||||
|
-
|
||||||
|
LDA.b [Scrap0A], Y
|
||||||
|
STA.w PaletteBuffer+$01B0,Y
|
||||||
|
DEY #2
|
||||||
|
BPL -
|
||||||
|
LDA.w #$0005
|
||||||
|
.done
|
||||||
|
SEP #$30
|
||||||
|
PLB : PLY : PLX
|
||||||
|
INC.b NMICGRAM
|
||||||
|
RTL
|
||||||
|
.aux
|
||||||
|
LDA.w TransparencyFlag : BNE .SP05_aux
|
||||||
|
-
|
||||||
|
LDA.b [Scrap0A], Y
|
||||||
|
STA.w PaletteBufferAux+$0170,Y
|
||||||
|
DEY #2
|
||||||
|
BPL -
|
||||||
|
LDA.w #$0003
|
||||||
|
BRA .done
|
||||||
|
.SP05_aux
|
||||||
|
-
|
||||||
|
LDA.b [Scrap0A], Y
|
||||||
|
STA.w PaletteBufferAux+$01B0,Y
|
||||||
|
DEY #2
|
||||||
|
BPL -
|
||||||
|
LDA.w #$0005
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
TransferVRAMStripes:
|
||||||
|
JSL.l TransferNewNameStripes
|
||||||
|
JSL.l DoDungeonMapBossIcon
|
||||||
|
LDA.b NMISTRIPES : CMP.b #$01 ; What we wrote over
|
||||||
|
RTL
|
||||||
|
|
||||||
|
|
||||||
|
ItemReceiptWidthCheck:
|
||||||
|
PHX
|
||||||
|
LDX.w CurrentSpriteSlot
|
||||||
|
LDA.w AncillaID,X : CMP.b #$29 : BEQ .falling_sprite
|
||||||
|
PLX
|
||||||
|
LDA.l SpriteProperties_chest_width, X
|
||||||
|
RTL
|
||||||
|
.falling_sprite
|
||||||
|
PLX
|
||||||
|
LDA.l SpriteProperties_standing_width, X
|
||||||
|
RTL
|
||||||
|
|
||||||
|
GTTorchCheck:
|
||||||
|
PHX
|
||||||
|
SEP #$30
|
||||||
|
LDA.w RoomIndex : CMP.b #$8C : BNE .done
|
||||||
|
LDX.w CurrentSpriteSlot
|
||||||
|
LDA.w SpriteTypeTable,X : CMP.b #$3B : BNE .done; Bonk Item
|
||||||
|
SEC
|
||||||
|
REP #$30
|
||||||
|
PLX
|
||||||
|
RTS
|
||||||
|
.done
|
||||||
|
CLC
|
||||||
|
REP #$30
|
||||||
|
PLX
|
||||||
|
RTS
|
||||||
|
|||||||
@@ -1,122 +1,190 @@
|
|||||||
;================================================================================
|
;===================================================================================================
|
||||||
; Vanilla Labels
|
; 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
|
; 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
|
; 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.
|
; 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
|
||||||
|
InitializeTilesets = $80E1DB
|
||||||
|
LoadSelectScreenGfx = $80E529
|
||||||
|
CopyFontToVRAM = $80E596
|
||||||
|
PrepDungeonExit = $80F945
|
||||||
|
Mirror_InitHdmaSettings = $80FDEE
|
||||||
|
Dungeon_LoadRoom = $81873A
|
||||||
|
Underworld_HandleRoomTags = $81C2FD
|
||||||
|
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
|
||||||
|
MasterSword_InPedestal = $858908
|
||||||
|
MasterSword_InPedestal_exit = $85894C
|
||||||
|
Ancilla_SpawnFallingPrize = $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_EA_HeartContainer = $85EF3F
|
||||||
|
Sprite_EB_HeartPiece_handle_flags = $85F0C0
|
||||||
|
Player_ApplyRumbleToSprites = $8680FA
|
||||||
|
Sprite_Main = $868328
|
||||||
|
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
|
||||||
|
Sprite_AttemptDamageToPlayerPlusRecoilLong = $86F425
|
||||||
|
Ancilla_Main = $888242
|
||||||
|
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
|
||||||
|
AncillaAdd_ItemReceipt_not_crystal = $898605
|
||||||
|
AncillaAdd_FallingPrize = $898BAD
|
||||||
|
AncillaAdd_FallingPrize_not_medallion = $898BD6
|
||||||
|
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
|
||||||
|
InitializeSaveFile_checksum_done = $8CDBDB
|
||||||
|
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
|
||||||
|
RebuildHUD_update = $8DFAA5
|
||||||
|
Messaging_Text = $8EEE10
|
||||||
|
AfterDeathCounterOutput = $8E8FD
|
||||||
|
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
|
||||||
|
CrystalCutscene_Initialize_skip_palette = $9ECD39
|
||||||
|
Sprite_PlayerCantPassThrough = $9EF4E7
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
; Local routines (use JSR)
|
||||||
|
;===================================================================================================
|
||||||
|
LoadBackgroundGraphics = $80E649
|
||||||
|
LoadBackgroundGraphics_arbitrary = $80E64D
|
||||||
|
RoomTag_PrizeTriggerDoor_open = $81C529
|
||||||
|
RoomTag_PrizeTriggerDoor_exit = $81C529
|
||||||
|
RoomTag_GetHeartForPrize = $81C709
|
||||||
|
RoomTag_GetHeartForPrize_spawn_prize = $81C731
|
||||||
|
RoomTag_GetHeartForPrize_delete_tag = $81C749
|
||||||
|
Chicken_SpawnAvengerChicken = $86A7DB
|
||||||
|
Link_UseHammer = $879F82
|
||||||
|
Link_PerformOpenChest_no_replacement = $87B59F
|
||||||
|
Sprite_EA_HeartContainer_main = $85EF47
|
||||||
|
Ancilla_ExecuteAll = $88832B
|
||||||
|
Ancilla_ExecuteOne = $88833C
|
||||||
|
Ancilla22_ItemReceipt_is_pendant = $88C421
|
||||||
|
Ancilla22_ItemReceipt_wait_for_music = $88C42B
|
||||||
|
ItemReceipt_Animate_continue = $88C637
|
||||||
|
AncillaDraw_ItemReceipt = $88C6B4
|
||||||
|
Ancilla29_MilestoneItemReceipt = $88CAB0
|
||||||
|
Ancilla29_MilestoneItemReceipt_skip_crystal_sfx = $88CAE5
|
||||||
|
Ancilla29_MilestoneItemReceipt_no_sparkle = $88CB2E
|
||||||
|
Ancilla_SetOAM_XY = $88F6F3
|
||||||
|
Ancilla_AddAncilla = $899CCE
|
||||||
|
DrawProgressIcons = $8DE9C8
|
||||||
|
ItemMenu_DrawEquippedYItem = $8DEB3A
|
||||||
|
ItemMenu_DrawEquippedYItem_exit = $8DECE6
|
||||||
|
ItemMenu_DrawEquipment_dungeonitems = $8DEDCC
|
||||||
|
DrawEquipment = $8DED29
|
||||||
|
DrawEquipment_in_a_dungeon = $8DEDFE
|
||||||
|
UpdateHUDBuffer_update_item_check_arrows = $8DFB41
|
||||||
|
RenderText_DecompressAndDrawSingle = $8EF4FB
|
||||||
|
DecompressFontGFX = $8EF572
|
||||||
|
CopyDecompressedCharToTransferBuffer = $8EF5BC
|
||||||
|
CopyDecompressedToFullBuffer = $8EF6A8
|
||||||
|
Trinexx_FinalPhase = $9DADB5
|
||||||
|
Trinexx_PreFinalPhase = $9DB0D2
|
||||||
|
|
||||||
UseImplicitRegIndexedLocalJumpTable = $008781
|
;===================================================================================================
|
||||||
UseImplicitRegIndexedLongJumpTable = $00879C
|
; Palettes
|
||||||
Vram_EraseTilemaps_triforce = 008333
|
;===================================================================================================
|
||||||
Sound_LoadLightWorldSongBank = $008913
|
PalettesVanillaBank = $9B0000
|
||||||
Sound_LoadLightWorldSongBank_do_load = $00891D
|
PalettesVanilla_none = $9B0000
|
||||||
EnableForceBlank = $00893D
|
PalettesVanilla_red_melon = $9BD218
|
||||||
SaveGameFile = $00894A ; long
|
PalettesVanilla_blue_ice = $9BD236
|
||||||
DungeonMask = $0098C0
|
PalettesVanilla_green_blue_guard = $9BD272
|
||||||
DecompSwordGfx = $00D308
|
PalettesVanilla_dark_world_melon = $9BD290
|
||||||
DecompShieldGfx = $00D348
|
PalettesVanilla_blue_dark_ice = $9BD2BC
|
||||||
Tagalong_LoadGfx = $00D463
|
PalettesVanilla_spraux09 = $9BD47E
|
||||||
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
|
|
||||||
Link_UseHammer = $079F82
|
|
||||||
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
|
|
||||||
InitializeSaveFile_done = $0CDBDB
|
|
||||||
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 ; returns short
|
|
||||||
ItemMenu_DrawEquippedYItem = $0DEB3A ; returns short
|
|
||||||
ItemMenu_DrawEquippedYItem_exit = $0DECE6 ; returns short
|
|
||||||
ItemMenu_DrawEquipment_dungeonitems = $0DEDCC ; returns short
|
|
||||||
DrawEquipment = $0DED29 ; 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
|
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
; Misc. Data
|
||||||
|
;===================================================================================================
|
||||||
|
WorldMapIcon_AdjustCoordinate = $8AC59B
|
||||||
|
WorldMap_CalculateOAMCoordinates = $8AC3B1
|
||||||
|
WorldMap_HandleSpriteBlink = $8AC52E
|
||||||
|
WorldMap_RedXChars = $8ABF70
|
||||||
|
TextCharMasks = $8EB844
|
||||||
|
|||||||
15
zsnes.asm
15
zsnes.asm
@@ -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
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Reference in New Issue
Block a user