@@ -3,34 +3,40 @@
|
||||
;================================================================================
|
||||
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)
|
||||
;db #$23, $4E
|
||||
;org $80FFC0 ; <- 7FC0 - Bank00.asm : 9173 (db "THE LEGEND OF ZELDA " ; 21 bytes)
|
||||
;db $23, $4E
|
||||
|
||||
org $00FFD5 ; <- 7FD5 - Bank00.asm : 9175 (db $20 ; rom layout)
|
||||
db #$30 ; set fast lorom
|
||||
org $80FFD5 ; <- 7FD5 - Bank00.asm : 9175 (db $20 ; rom layout)
|
||||
db $30 ; set fast lorom
|
||||
|
||||
;org $00FFD6 ; <- 7FD6 - Bank00.asm : 9176 (db $02 ; cartridge type)
|
||||
;db #$55 ; enable S-RTC
|
||||
;org $80FFD6 ; <- 7FD6 - Bank00.asm : 9176 (db $02 ; cartridge type)
|
||||
;db $55 ; enable S-RTC
|
||||
|
||||
org $00FFD7 ; <- 7FD7 - Bank00.asm : 9177 (db $0A ; rom size)
|
||||
db #$0B ; mark rom as 16mbit
|
||||
org $80FFD7 ; <- 7FD7 - Bank00.asm : 9177 (db $0A ; rom size)
|
||||
db $0B ; mark rom as 16mbit
|
||||
|
||||
org $00FFD8 ; <- 7FD8 - Bank00.asm : 9178 (db $03 ; ram size (sram size))
|
||||
db #$05 ; mark sram as 32k
|
||||
org $80FFD8 ; <- 7FD8 - Bank00.asm : 9178 (db $03 ; ram size (sram size))
|
||||
db $05 ; mark sram as 32k
|
||||
|
||||
org $3FFFFF ; <- 1FFFFF
|
||||
db #$00 ; expand file to 2mb
|
||||
org $BFFFFF ; <- 1FFFFF
|
||||
db $00 ; expand file to 2mb
|
||||
|
||||
org $1FFFF8 ; <- FFFF8 timestamp rom
|
||||
db #$20, #$19, #$08, #$31 ; year/month/day
|
||||
org $9FFFF8 ; <- FFFF8 timestamp rom
|
||||
db $20, $19, $08, $31 ; year/month/day
|
||||
|
||||
;================================================================================
|
||||
!ROM_VERSION_LOW ?= 1 ; ROM version (two 16-bit integers)
|
||||
!ROM_VERSION_HIGH ?= 3 ;
|
||||
!ROM_VERSION_HIGH ?= 4 ;
|
||||
|
||||
org $00FFE0 ; Unused hardware vector
|
||||
org $80FFE0 ; Unused hardware vector
|
||||
RomVersion:
|
||||
dw !ROM_VERSION_LOW
|
||||
dw !ROM_VERSION_HIGH
|
||||
@@ -56,10 +62,9 @@ incsrc ram.asm
|
||||
incsrc sram.asm
|
||||
incsrc registers.asm
|
||||
incsrc vanillalabels.asm
|
||||
incsrc overworldmap.asm ; Overwrites some code in bank $8A
|
||||
|
||||
;org $208000 ; bank #$20
|
||||
org $A08000 ; bank #$A0
|
||||
incsrc newitems.asm ; LEAVE THIS AS FIRST
|
||||
org $A08000 ; bank $20
|
||||
incsrc itemdowngrade.asm
|
||||
incsrc bugfixes.asm
|
||||
incsrc darkworldspawn.asm
|
||||
@@ -67,7 +72,6 @@ incsrc lampmantlecone.asm
|
||||
incsrc floodgatesoftlock.asm
|
||||
incsrc heartpieces.asm
|
||||
incsrc npcitems.asm
|
||||
incsrc utilities.asm
|
||||
incsrc flipperkill.asm
|
||||
incsrc pendantcrystalhud.asm
|
||||
incsrc potions.asm
|
||||
@@ -78,7 +82,6 @@ incsrc tablets.asm
|
||||
incsrc fairyfixes.asm
|
||||
incsrc rngfixes.asm
|
||||
incsrc medallions.asm
|
||||
incsrc inventory.asm
|
||||
incsrc zelda.asm
|
||||
incsrc maidencrystals.asm
|
||||
incsrc flute.asm
|
||||
@@ -98,9 +101,9 @@ incsrc roomloading.asm
|
||||
incsrc icepalacegraphics.asm
|
||||
warnpc $A18000
|
||||
|
||||
org $1C8000 ; text tables for translation
|
||||
org $9C8000 ; text tables for translation
|
||||
incbin "data/i18n_en.bin"
|
||||
warnpc $1CF356
|
||||
warnpc $9CF356
|
||||
|
||||
org $A18000 ; static mapping area
|
||||
incsrc framehook.asm
|
||||
@@ -111,7 +114,7 @@ incsrc hud.asm
|
||||
warnpc $A18800
|
||||
|
||||
org $A18800 ; static mapping area
|
||||
incsrc zsnes.asm
|
||||
|
||||
warnpc $A19000
|
||||
|
||||
org $A1A000 ; static mapping area. Referenced by front end. Do not move.
|
||||
@@ -131,7 +134,6 @@ incsrc glitched.asm
|
||||
incsrc hardmode.asm
|
||||
incsrc goalitem.asm
|
||||
incsrc quickswap.asm
|
||||
incsrc endingsequence.asm
|
||||
incsrc cuccostorm.asm
|
||||
incsrc retro.asm
|
||||
incsrc controllerjank.asm
|
||||
@@ -144,7 +146,6 @@ incsrc hashalphabet.asm
|
||||
incsrc inverted.asm
|
||||
incsrc invertedmaps.asm
|
||||
incsrc newhud.asm
|
||||
incsrc compasses.asm
|
||||
incsrc save.asm
|
||||
incsrc password.asm
|
||||
incsrc enemy_adjustments.asm
|
||||
@@ -152,110 +153,127 @@ incsrc hudtext.asm
|
||||
incsrc servicerequest.asm
|
||||
incsrc elder.asm
|
||||
incsrc toast.asm
|
||||
incsrc darkroomitems.asm
|
||||
incsrc fastcredits.asm
|
||||
incsrc msu.asm
|
||||
incsrc dungeonmap.asm
|
||||
incsrc hextodec.asm
|
||||
if !FEATURE_NEW_TEXT
|
||||
incsrc textrenderer.asm
|
||||
incsrc textrenderer.asm
|
||||
endif
|
||||
warnpc $A58000
|
||||
|
||||
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
|
||||
incsrc stats/credits.asm ; Statically mapped
|
||||
incsrc stats/main.asm
|
||||
incsrc stats/statConfig.asm
|
||||
FontTable:
|
||||
incsrc stats/fonttable.asm
|
||||
|
||||
org $308000 ; bank #$30
|
||||
org $B08000 ; bank $30
|
||||
incsrc tables.asm
|
||||
|
||||
org $348000
|
||||
org $B48000
|
||||
incsrc spc.asm
|
||||
|
||||
org $318000 ; bank #$31
|
||||
org $B18000 ; bank $31
|
||||
GFX_Mire_Bombos:
|
||||
incbin "data/99ff1_bombos.gfx"
|
||||
warnpc $318800
|
||||
warnpc $B18800
|
||||
|
||||
org $318800
|
||||
org $B18800
|
||||
GFX_Mire_Quake:
|
||||
incbin "data/99ff1_quake.gfx"
|
||||
warnpc $319000
|
||||
warnpc $B19000
|
||||
|
||||
org $319000
|
||||
org $B19000
|
||||
GFX_TRock_Bombos:
|
||||
incbin "data/a6fc4_bombos.gfx"
|
||||
warnpc $319800
|
||||
warnpc $B19800
|
||||
|
||||
org $319800
|
||||
org $B19800
|
||||
GFX_TRock_Ether:
|
||||
incbin "data/a6fc4_ether.gfx"
|
||||
warnpc $31A000
|
||||
warnpc $B1A000
|
||||
|
||||
org $31A000
|
||||
org $B1A000
|
||||
GFX_HUD_Items:
|
||||
incbin "data/c2807_v4.gfx"
|
||||
warnpc $31A800
|
||||
warnpc $B1A800
|
||||
|
||||
org $31A800
|
||||
GFX_New_Items:
|
||||
incbin "data/newitems.gfx"
|
||||
;incbin eventitems.gfx ; *EVENT*
|
||||
warnpc $31B000
|
||||
org $B1A800
|
||||
|
||||
org $31B000
|
||||
warnpc $B1B000
|
||||
|
||||
org $B1B000
|
||||
GFX_HUD_Main:
|
||||
incbin "data/c2e3e.gfx"
|
||||
warnpc $31B800
|
||||
warnpc $B1B800
|
||||
|
||||
org $31C000
|
||||
org $B1C000
|
||||
IcePalaceFloorGfx:
|
||||
incbin "data/ice_palace_floor.bin"
|
||||
warnpc $31C801
|
||||
warnpc $B1C801
|
||||
|
||||
org $31C800
|
||||
org $B1C800
|
||||
Damage_Table:
|
||||
incbin "data/damage_table.bin"
|
||||
warnpc $31D001
|
||||
warnpc $B1D001
|
||||
|
||||
org $31D000
|
||||
org $B1D000
|
||||
FileSelectNewGraphics:
|
||||
incbin "data/fileselectgfx.2bpp"
|
||||
warnpc $31E001
|
||||
warnpc $B1E001
|
||||
|
||||
org $31E000
|
||||
org $B1E000
|
||||
InvertedCastleHole: ;address used by front end. DO NOT MOVE!
|
||||
incbin "data/sheet73.gfx"
|
||||
warnpc $31E501
|
||||
warnpc $B1E501
|
||||
|
||||
org $338000
|
||||
org $B38000
|
||||
GFX_HUD_Palette:
|
||||
incbin "data/hudpalette.pal"
|
||||
warnpc $338041
|
||||
warnpc $B38041
|
||||
|
||||
org $339000
|
||||
org $B39000
|
||||
ExpandedTrinexx:
|
||||
incbin "data/sheet178.gfx"
|
||||
warnpc $339600
|
||||
warnpc $B39600
|
||||
|
||||
org $339600
|
||||
org $B39600
|
||||
BossMapIconGFX:
|
||||
incbin "data/bossicons.4bpp"
|
||||
|
||||
if !FEATURE_NEW_TEXT
|
||||
org $339C00
|
||||
NewFont:
|
||||
incbin "data/newfont.bin"
|
||||
NewFontInverted:
|
||||
incbin "data/newfont_inverted.bin"
|
||||
|
||||
org $0CD7DF
|
||||
incbin "data/text_unscramble1.bin"
|
||||
org $0CE4D5
|
||||
incbin "data/text_unscramble2.bin"
|
||||
org $B39C00
|
||||
NewFont:
|
||||
incbin "data/newfont.bin"
|
||||
NewFontInverted:
|
||||
incbin "data/newfont_inverted.bin"
|
||||
SmallCharacters:
|
||||
incbin "data/smallchars.2bpp"
|
||||
org $8CD7DF
|
||||
incsrc data/playernamecharmap.asm
|
||||
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
|
||||
|
||||
org $328000
|
||||
org $B28000
|
||||
Extra_Text_Table:
|
||||
if !FEATURE_NEW_TEXT
|
||||
incsrc itemtext_lower.asm
|
||||
@@ -265,9 +283,13 @@ endif
|
||||
|
||||
incsrc externalhooks.asm
|
||||
;================================================================================
|
||||
org $119100 ; PC 0x89100
|
||||
org $919100 ; PC 0x89100
|
||||
incbin "data/map_icons.gfx"
|
||||
warnpc $119401
|
||||
warnpc $919401
|
||||
;================================================================================
|
||||
org $9BB1E0
|
||||
incsrc custompalettes.asm
|
||||
warnpc $9BB880
|
||||
;================================================================================
|
||||
org $AF8000 ; PC 0x178000
|
||||
Static_RNG: ; each line below is 512 bytes of rng
|
||||
@@ -318,25 +340,18 @@ warnpc $B08000
|
||||
;$70:6000 (8K) Scratch buffers
|
||||
;================================================================================
|
||||
|
||||
org $00D09C ; 0x509C - HUD Items H
|
||||
org $80D09C ; 0x509C - HUD Items H
|
||||
db GFX_HUD_Items>>16
|
||||
org $00D17B ; 0x517B - HUD Items M
|
||||
org $80D17B ; 0x517B - HUD Items M
|
||||
db GFX_HUD_Items>>8
|
||||
org $00D25A ; 0x525A - HUD Items L
|
||||
org $80D25A ; 0x525A - HUD Items L
|
||||
db GFX_HUD_Items
|
||||
|
||||
; this used to be a pointer to a dummy file
|
||||
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
|
||||
org $80D09D ; 0x509D - HUD Main H
|
||||
db GFX_HUD_Main>>16
|
||||
org $00D17C ; 0x517C - HUD Main M
|
||||
org $80D17C ; 0x517C - HUD Main M
|
||||
db GFX_HUD_Main>>8
|
||||
org $00D25B ; 0x525B - HUD Main L
|
||||
org $80D25B ; 0x525B - HUD Main L
|
||||
db GFX_HUD_Main
|
||||
|
||||
;================================================================================
|
||||
|
||||
@@ -153,7 +153,7 @@ RestoreBgEther:
|
||||
INX #2 : CPX.b #$10 : BNE -
|
||||
BRA ++
|
||||
++
|
||||
JML $02FF51 ; Bank0E.asm : 3936 vanilla restore routine after loop which RTLs
|
||||
JML $82FF51 ; Bank0E.asm : 3936 vanilla restore routine after loop which RTLs
|
||||
;================================================================================
|
||||
DDMConditionalLightning:
|
||||
LDA.l DisableFlashing
|
||||
@@ -161,7 +161,7 @@ DDMConditionalLightning:
|
||||
BNE +
|
||||
LDA.w Scrap
|
||||
LDX.b #$02
|
||||
JML $07FA7F ; Bank0E.asm : 4738 vanilla loop equivalent to below beginning at LDY #$00
|
||||
JML $87FA7F ; Bank0E.asm : 4738 vanilla loop equivalent to below beginning at LDY #$00
|
||||
+
|
||||
LDA.b Scrap00 : LDX.b #$02 : LDY.b #$00
|
||||
-
|
||||
@@ -172,7 +172,7 @@ DDMConditionalLightning:
|
||||
LDA.w $F523, Y : LDA.l PaletteBuffer+$F0, X
|
||||
INY #2
|
||||
INX #2 : CPX.b #$10 : BNE -
|
||||
JML $07FAAC ; Bank0E.asm : 4754 both branches converge here
|
||||
JML $87FAAC ; Bank0E.asm : 4754 both branches converge here
|
||||
;================================================================================
|
||||
ConditionalGTFlash:
|
||||
LDA.l DisableFlashing : REP #$20 : BNE +
|
||||
@@ -222,17 +222,17 @@ LoadElectroPalette:
|
||||
LDA.w #$0404 : STA.b Scrap0E
|
||||
LDA.w #$001B : STA.b Scrap02
|
||||
SEP #$10
|
||||
LDX.b Scrap0C : LDA.l $1BEBB4, X : AND.w #$00FF : ADC.w #$D630
|
||||
LDX.b Scrap0C : LDA.l $9BEBB4, X : AND.w #$00FF : ADC.w #$D630
|
||||
REP #$10 : LDX.w #$01B2 : LDY.w #$0002
|
||||
JSR ConditionalLoadGearPalette
|
||||
SEP #$10
|
||||
LDX.b Scrap0D
|
||||
LDA.l $1BEBC1, X : AND.w #$00FF : ADC.w #$D648
|
||||
LDA.l $9BEBC1, X : AND.w #$00FF : ADC.w #$D648
|
||||
REP #$10 : LDX.w #$01B8 : LDY.w #$0003
|
||||
JSR ConditionalLoadGearPalette
|
||||
SEP #$10
|
||||
LDX.b Scrap0E
|
||||
LDA.l $1BEC06, X : AND.w #$00FF : ASL A : ADC.w #$D308
|
||||
LDA.l $9BEC06, X : AND.w #$00FF : ASL A : ADC.w #$D308
|
||||
REP #$10 : LDX.w #$01E2 : LDY.w #$000E
|
||||
JSR ConditionalLoadGearPalette
|
||||
SEP #$30
|
||||
|
||||
@@ -3,19 +3,20 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadLibraryItemGFX:
|
||||
%GetPossiblyEncryptedItem(LibraryItem, SpriteItemValues)
|
||||
STA.w SpriteItemType, X ; Store item type
|
||||
JSL.l PrepDynamicTile
|
||||
JSL.l ResolveLootIDLong
|
||||
STA.w SpriteID, X
|
||||
JSL.l PrepDynamicTile_loot_resolved
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawLibraryItemGFX:
|
||||
PHA
|
||||
LDA.w SpriteItemType, X ; Retrieve stored item type
|
||||
LDA.w SpriteID, X
|
||||
JSL.l DrawDynamicTile
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
SetLibraryItem:
|
||||
LDY.w SpriteItemType, X ; Retrieve stored item type
|
||||
LDY.w SpriteID, X
|
||||
JSL.l ItemSet_Library ; contains thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
@@ -29,12 +30,14 @@ LoadBonkItemGFX:
|
||||
LoadBonkItemGFX_inner:
|
||||
LDA.b #$00 : STA.l RedrawFlag
|
||||
JSR LoadBonkItem
|
||||
STA.w SpriteItemType, X
|
||||
STA.w SpriteID, X
|
||||
JSL.l PrepDynamicTile
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawBonkItemGFX:
|
||||
PHA
|
||||
LDA.l RedrawFlag : BEQ .skipInit ; skip init if already ready
|
||||
LDA.l RedrawFlag : BEQ .skipInit
|
||||
JSL.l LoadBonkItemGFX_inner
|
||||
BRA .done ; don't draw on the init frame
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ FixBunnyOnExitToLightWorld:
|
||||
STZ.b LinkState ; set player mode 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
|
||||
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,31 +0,0 @@
|
||||
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:
|
||||
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
|
||||
RTL
|
||||
|
||||
@@ -119,5 +119,5 @@ HandleOneMindController:
|
||||
.no_onemind
|
||||
STZ.b NMIDoneFlag
|
||||
|
||||
JML $008034 ; reset frame loop
|
||||
JML $808034 ; reset frame loop
|
||||
|
||||
|
||||
17
custompalettes.asm
Normal file
17
custompalettes.asm
Normal file
@@ -0,0 +1,17 @@
|
||||
PalettesCustom:
|
||||
.master_sword
|
||||
dw $0000, $7E4E, $6FF4, $1CF5, $7FFF, $1CE7, $7A10, $64A5
|
||||
.tempered_sword
|
||||
dw $0000, $7FFF, $1979, $14B6, $39DC, $14A5, $66F7, $45EF
|
||||
.golden_sword
|
||||
dw $0000, $033F, $7FFF, $2640, $7FFF, $1CE7, $7A10, $64A5
|
||||
.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, $7FFF, $27FF, $5E2D, $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
|
||||
LDA.l AddReceivedItemExpanded_properties, X ; 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
|
||||
Y=75
|
||||
Z=76
|
||||
'=77
|
||||
.=A0
|
||||
/=A2
|
||||
:=A3
|
||||
_=A6
|
||||
a=A0
|
||||
b=A1
|
||||
c=A2
|
||||
d=A3
|
||||
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
|
||||
Y=9B
|
||||
Z=9C
|
||||
'=9d
|
||||
.=C0
|
||||
/=C2
|
||||
:=C3
|
||||
_=C6
|
||||
a=BB
|
||||
b=BC
|
||||
c=BD
|
||||
d=BE
|
||||
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
|
||||
X=4F
|
||||
Y=50
|
||||
Z=51
|
||||
Z=51
|
||||
.=52
|
||||
|
||||
@@ -24,4 +24,8 @@ V=2F
|
||||
W=30
|
||||
X=31
|
||||
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
|
||||
|
||||
;===================================================================================================
|
||||
|
||||
|
||||
57
dialog.asm
57
dialog.asm
@@ -114,26 +114,45 @@ FreeDungeonItemNotice:
|
||||
+ : 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...
|
||||
%CopyDialog(Notice_BigKeyOf)
|
||||
BRA .dungeon
|
||||
JMP .dungeon
|
||||
+ : 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 : CMP.b #$AF : BNE ++ : JMP .skip : ++
|
||||
%CopyDialog(Notice_SmallKeyOf)
|
||||
LDA.b #$01 : STA.w ScratchBufferNV ; set up a flip for small keys
|
||||
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
|
||||
|
||||
.dungeon
|
||||
LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer
|
||||
LDA.w ScratchBufferV
|
||||
AND.b #$0F ; looking at low bits only
|
||||
AND.b #$0F
|
||||
STA.w ScratchBufferNV+1
|
||||
LDA.w ScratchBufferNV : BEQ +
|
||||
LDA.w ScratchBufferNV
|
||||
LDA.b #$0F : !SUB.w ScratchBufferNV+1 : STA.w ScratchBufferNV+1 ; flip the values for small keys
|
||||
+
|
||||
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
|
||||
%CopyDialog(Notice_LightWorld) : JMP .done
|
||||
+ : CMP.b #$01 : BNE + ; ...dark world
|
||||
@@ -161,12 +180,34 @@ FreeDungeonItemNotice:
|
||||
+ : CMP.b #$0C : BNE + ; ...desert palace
|
||||
%CopyDialog(Notice_Desert) : JMP .done
|
||||
+ : CMP.b #$0D : BNE + ; ...eastern palace
|
||||
%CopyDialog(Notice_Eastern) : BRA .done
|
||||
%CopyDialog(Notice_Eastern) : JMP .done
|
||||
+ : CMP.b #$0E : BNE + ; ...hyrule castle
|
||||
%CopyDialog(Notice_Castle) : BRA .done
|
||||
%CopyDialog(Notice_Castle) : JMP .done
|
||||
+ : CMP.b #$0F : BNE + ; ...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
|
||||
|
||||
STZ.w TextID : STZ.w TextID+1 ; reset decompression buffer
|
||||
@@ -341,7 +382,7 @@ AgahnimAsksAboutPed:
|
||||
STA.w TextID
|
||||
|
||||
.vanilla
|
||||
JML $05FA8E ; Sprite_ShowMessageMinimal
|
||||
JML $85FA8E ; Sprite_ShowMessageMinimal
|
||||
;--------------------------------------------------------------------------------
|
||||
Main_ShowTextMessage_Alt:
|
||||
; Are we in text mode? If so then end the routine.
|
||||
@@ -433,7 +474,7 @@ Sprite_ShowSolicitedMessageIfPlayerFacing_Alt:
|
||||
|
||||
; Make sure that the sprite is facing towards the player, otherwise
|
||||
; talking can't happen. (What sprites actually use this???)
|
||||
LDA.l $05E1A3, X : PLX : CMP.b LinkDirection : BNE .not_facing_each_other
|
||||
LDA.l $85E1A3, X : PLX : CMP.b LinkDirection : BNE .not_facing_each_other
|
||||
|
||||
PHY
|
||||
|
||||
@@ -490,7 +531,7 @@ Sprite_ShowSolicitedMessageIfPlayerFacing_PreserveMessage:
|
||||
|
||||
; Make sure that the sprite is facing towards the player, otherwise
|
||||
; talking can't happen. (What sprites actually use this???)
|
||||
LDA.l $05E1A3, X : PLX : CMP.b LinkDirection : BNE .not_facing_each_other
|
||||
LDA.l $85E1A3, X : PLX : CMP.b LinkDirection : BNE .not_facing_each_other
|
||||
|
||||
PLA : XBA : PLA
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
StoreLastOverworldDoorID:
|
||||
TXA : INC
|
||||
STA.l PreviousOverworldDoor
|
||||
LDA.l $1BBB73, X : STA.w EntranceIndex
|
||||
LDA.l $9BBB73, X : STA.w EntranceIndex
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
329
dungeondrops.asm
329
dungeondrops.asm
@@ -1,9 +1,328 @@
|
||||
;================================================================================
|
||||
; Dungeon & Boss Drop Fixes
|
||||
;--------------------------------------------------------------------------------
|
||||
DropSafeDungeon:
|
||||
LDA.w DungeonID : CMP.b #$08 : BEQ +
|
||||
LDA.l $01C6FC, X : JML Sprite_SpawnFallingItem
|
||||
+
|
||||
SpawnDungeonPrize:
|
||||
PHX : PHB
|
||||
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 ResolveLootIDLong
|
||||
STA.w SpriteID,X
|
||||
JSL.l TransferItemReceiptToBuffer_using_ReceiptID
|
||||
PLY : PLX : PLA
|
||||
RTL
|
||||
|
||||
SetItemPose:
|
||||
PHA
|
||||
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 RoomItemsTaken : BIT #$80 : BNE .dungeon_prize
|
||||
.no_cutscene
|
||||
PLX
|
||||
CLC
|
||||
RTL
|
||||
.dungeon_prize
|
||||
JSR.w SetDungeonCompletion
|
||||
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 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 RoomItemsTaken : BIT #$80 : BNE .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
|
||||
|
||||
SetDungeonCompletion:
|
||||
LDX.w DungeonID : BMI +
|
||||
REP #$20
|
||||
LDA.l DungeonItemMasks, X : ORA.l DungeonsCompleted : STA.l DungeonsCompleted
|
||||
SEP #$20
|
||||
+
|
||||
RTS
|
||||
|
||||
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
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
@@ -2,7 +2,7 @@ NewElderCode:
|
||||
{
|
||||
LDA.b OverworldIndex : CMP.b #$1B : BEQ .newCodeContinue
|
||||
;Restore Jump we can keep the RTL so JML
|
||||
JML $05F0CD
|
||||
JML $85F0CD
|
||||
.newCodeContinue
|
||||
PHB : PHK : PLB
|
||||
LDA.b #$07 : STA.w SpriteOAMProp, X ; Palette
|
||||
|
||||
@@ -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
|
||||
;--------------------------------------------------------------------------------
|
||||
NewFireBarDamage:
|
||||
LDA.w $00EE : CMP.w SpriteLayer, X : BNE .NotSameLayer
|
||||
LDA.b LinkLayer : CMP.w SpriteLayer, X : BNE .NotSameLayer
|
||||
JSL Sprite_AttemptDamageToPlayerPlusRecoilLong
|
||||
RTL
|
||||
.NotSameLayer
|
||||
|
||||
@@ -29,7 +29,7 @@ LockAgahnimDoors:
|
||||
LDA.w #$0001 : RTL ;Keep the door locked
|
||||
++
|
||||
SEP #$30
|
||||
JSL $099B6F ;Add tower break seal
|
||||
JSL $899B6F ;Add tower break seal
|
||||
REP #$30
|
||||
LDA.w #$0001 ;Prevent door from opening that frame otherwise it glitchy
|
||||
RTL
|
||||
@@ -142,11 +142,11 @@ JML.l AllowStartFromExitReturn
|
||||
|
||||
.doStart
|
||||
|
||||
LDA.l $028481, X ;Module_LocationMenu_starting_points
|
||||
LDA.l $828481, X ;Module_LocationMenu_starting_points
|
||||
ASL : TAX
|
||||
|
||||
LDA.l $02D8D2, X : STA.b RoomIndex
|
||||
LDA.l $02D8D3, X : STA.b RoomIndex+1
|
||||
LDA.l $82D8D2, X : STA.b RoomIndex
|
||||
LDA.l $82D8D3, X : STA.b RoomIndex+1
|
||||
|
||||
; Go to pre-overworld mode
|
||||
LDA.b #$08 : STA.b GameMode
|
||||
@@ -166,9 +166,9 @@ RTL
|
||||
CheckHole:
|
||||
LDX.w #$0024
|
||||
.nextHoleClassic
|
||||
LDA.b Scrap00 : CMP.l $1BB800, X
|
||||
LDA.b Scrap00 : CMP.l $9BB800, X
|
||||
BNE .wrongMap16Classic
|
||||
LDA.b OverworldIndex : CMP.l $1BB826, X
|
||||
LDA.b OverworldIndex : CMP.l $9BB826, X
|
||||
BEQ .matchedHoleClassic
|
||||
.wrongMap16Classic
|
||||
DEX #2 : BPL .nextHoleClassic
|
||||
|
||||
98
events.asm
98
events.asm
@@ -1,10 +1,15 @@
|
||||
OnPrepFileSelect:
|
||||
LDA.b GameSubMode : CMP.b #$03 : BNE +
|
||||
LDA.b #$06 : STA.b NMISTRIPES ; thing we wrote over
|
||||
RTL
|
||||
+
|
||||
JSL.l LoadAlphabetTilemap
|
||||
JML.l LoadFullItemTiles
|
||||
LDA.b GameSubMode : CMP.b #$03 : BNE +
|
||||
LDA.b #$06 : STA.b NMISTRIPES ; thing we wrote over
|
||||
RTL
|
||||
+
|
||||
PHA : PHX
|
||||
REP #$10
|
||||
JSL.l LoadAlphabetTilemap
|
||||
JSL.l LoadFullItemTiles
|
||||
SEP #$10
|
||||
PLX : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
OnDrawHud:
|
||||
JSL.l DrawChallengeTimer ; this has to come before NewDrawHud because the timer overwrites the compass counter
|
||||
@@ -20,6 +25,10 @@ OnDungeonEntrance:
|
||||
INC.w UpdateHUD
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
OnDungeonBossExit:
|
||||
JSL.l StatTransitionCounter
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
OnPlayerDead:
|
||||
PHA
|
||||
JSL.l SetDeathWorldChecked
|
||||
@@ -37,8 +46,8 @@ OnDungeonExit:
|
||||
STA.w DungeonID : STZ.w Map16ChangeIndex ; thing we wrote over
|
||||
|
||||
PHA : PHP
|
||||
JSL.l HUD_RebuildLong
|
||||
INC.w UpdateHUD
|
||||
JSL.l HUD_RebuildLong
|
||||
JSL.l FloodGateResetInner
|
||||
JSL.l SetSilverBowMode
|
||||
PLP : PLA
|
||||
@@ -84,21 +93,19 @@ OnAga2Defeated:
|
||||
JML.l IncrementAgahnim2Sword
|
||||
;--------------------------------------------------------------------------------
|
||||
OnFileCreation:
|
||||
; Copy initial SRAM state from ROM to cart SRAM
|
||||
; If the inital SRAM table is move these addresses must be changed
|
||||
PHB
|
||||
LDA.w #$03D7 ; \
|
||||
LDX.w #$B000 ; | Copies from beginning of inital sram table up to file name
|
||||
LDY.w #$0000 ; | (exclusively)
|
||||
MVN !SRAMBank, !SRAMTableBank ; /
|
||||
; Skip file name and validity value
|
||||
LDA.w #$010C ; \
|
||||
LDX.w #$B3E3 ; | Rando-Specific Assignments & Game Stats block
|
||||
LDY.w #$03E3 ; |
|
||||
MVN !SRAMBank, !SRAMTableBank ; /
|
||||
LDA.w #$03D7
|
||||
LDX.w #$B000
|
||||
LDY.w #$0000
|
||||
MVN CartridgeSRAM>>16, InitSRAMTable>>16
|
||||
; Skip file name and validity value
|
||||
LDA.w #$010C
|
||||
LDX.w #$B3E3
|
||||
LDY.w #$03E3
|
||||
MVN CartridgeSRAM>>16, InitSRAMTable>>16
|
||||
PLB
|
||||
|
||||
; resolve instant post-aga if standard
|
||||
; Resolve instant post-aga if standard
|
||||
SEP #$20
|
||||
LDA.l InitProgressIndicator : BIT #$80 : BEQ +
|
||||
LDA.b #$00 : STA.l ProgressIndicatorSRAM ; set post-aga after zelda rescue
|
||||
@@ -106,13 +113,13 @@ OnFileCreation:
|
||||
+
|
||||
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
|
||||
JSL.l WriteNewFileChecksum
|
||||
JSL.l WriteSaveChecksumAndBackup
|
||||
STZ.b Scrap00
|
||||
STZ.b Scrap01
|
||||
|
||||
JML.l InitializeSaveFile_done
|
||||
JML.l InitializeSaveFile_checksum_done
|
||||
;--------------------------------------------------------------------------------
|
||||
OnFileLoad:
|
||||
REP #$10 ; set 16 bit index registers
|
||||
@@ -224,19 +231,40 @@ PostItemGet:
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
PostItemAnimation:
|
||||
LDA.b #$00 : STA.l BusyItem ; mark item as finished
|
||||
LDA.b #$00 : STA.l BusyItem ; mark item as finished
|
||||
LDA.l TextBoxDefer : BEQ +
|
||||
STZ.w TextID : STZ.w TextID+1 ; reset decompression buffer
|
||||
JSL.l Main_ShowTextMessage_Alt
|
||||
LDA.b #$00 : STA.l TextBoxDefer
|
||||
+
|
||||
LDA.w ItemReceiptMethod : CMP.b #$01 : BNE +
|
||||
LDA.b LinkDirection : BEQ +
|
||||
JSL.l IncrementChestTurnCounter
|
||||
+
|
||||
REP #$20
|
||||
LDA.w TransparencyFlag : BNE .SP05
|
||||
LDA.l PalettesCustom_off_black+$00 : STA.l PaletteBuffer+$0170
|
||||
LDA.l PalettesCustom_off_black+$02 : STA.l PaletteBuffer+$0172
|
||||
LDA.l PalettesCustom_off_black+$04 : STA.l PaletteBuffer+$0174
|
||||
LDA.l PalettesCustom_off_black+$06 : STA.l PaletteBuffer+$0176
|
||||
LDA.l PalettesCustom_off_black+$08 : STA.l PaletteBuffer+$0178
|
||||
LDA.l PalettesCustom_off_black+$0A : STA.l PaletteBuffer+$017A
|
||||
LDA.l PalettesCustom_off_black+$0C : STA.l PaletteBuffer+$017C
|
||||
LDA.l PalettesCustom_off_black+$0E : STA.l PaletteBuffer+$017E
|
||||
BRA .done
|
||||
.SP05
|
||||
LDA.l PalettesCustom_off_black+$00 : STA.l PaletteBuffer+$01B0
|
||||
LDA.l PalettesCustom_off_black+$02 : STA.l PaletteBuffer+$01B2
|
||||
LDA.l PalettesCustom_off_black+$04 : STA.l PaletteBuffer+$01B4
|
||||
LDA.l PalettesCustom_off_black+$06 : STA.l PaletteBuffer+$01B6
|
||||
LDA.l PalettesCustom_off_black+$08 : STA.l PaletteBuffer+$01B8
|
||||
LDA.l PalettesCustom_off_black+$0A : STA.l PaletteBuffer+$01BA
|
||||
LDA.l PalettesCustom_off_black+$0C : STA.l PaletteBuffer+$01BC
|
||||
LDA.l PalettesCustom_off_black+$0E : STA.l PaletteBuffer+$01BE
|
||||
.done
|
||||
INC.b NMICGRAM
|
||||
SEP #$20
|
||||
|
||||
LDA.l TextBoxDefer : BEQ +
|
||||
STZ.w TextID : STZ.w TextID+1 ; reset decompression buffer
|
||||
JSL.l Main_ShowTextMessage_Alt
|
||||
LDA.b #$00 : STA.l TextBoxDefer
|
||||
+
|
||||
|
||||
LDA.w ItemReceiptMethod : CMP.b #$01 : BNE +
|
||||
LDA.b LinkDirection : BEQ +
|
||||
JSL.l IncrementChestTurnCounter
|
||||
+
|
||||
|
||||
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
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
org $298000 ; 0x148000
|
||||
org $A98000 ; 0x148000
|
||||
Ext_OnFileCreate: ;x
|
||||
RTL : RTL : RTL : RTL : RTL
|
||||
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
|
||||
|
||||
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:
|
||||
BIT.b Joy1B_All-1 : BVC .slow
|
||||
|
||||
LDA.w #$0001 : STA.b $50
|
||||
|
||||
LDA.b ScrapBufferBD+$0B
|
||||
CLC
|
||||
ADC.w #$0004
|
||||
INC
|
||||
|
||||
JSR IsFastCredits
|
||||
BCC .slow
|
||||
|
||||
INC
|
||||
INC
|
||||
INC
|
||||
|
||||
AND.w #$FFFE
|
||||
STA.b ScrapBufferBD+$0B
|
||||
SEP #$20
|
||||
RTL
|
||||
|
||||
|
||||
.slow
|
||||
INC.b ScrapBufferBD+$0B
|
||||
STA.b ScrapBufferBD+$0B
|
||||
|
||||
SEP #$20
|
||||
RTL
|
||||
@@ -49,18 +79,20 @@ FastCreditsCutsceneScrollY:
|
||||
|
||||
FastCreditsCutsceneScroll:
|
||||
LDA.w $00E2,Y
|
||||
CMP.l $0EC308,X ; compare to target
|
||||
CMP.l $8EC308,X ; compare to target
|
||||
|
||||
ROL.b Scrap00 ; put carry in here
|
||||
LDA.l $0EC348,X ; get movement
|
||||
LDA.l $8EC348,X ; get movement
|
||||
BPL ++ ; if positive, leave saved carry alone
|
||||
INC.b Scrap00 ; otherwise, flip it
|
||||
++ ROR.b Scrap00 ; recover carry
|
||||
|
||||
BCC ++ ; scroll if carry not set
|
||||
|
||||
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
|
||||
BPL .positive
|
||||
@@ -77,16 +109,9 @@ FastCreditsCutsceneScroll:
|
||||
ASL
|
||||
ASL
|
||||
|
||||
|
||||
|
||||
.slow
|
||||
RTS
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
FastCreditsCutsceneUnderworldX:
|
||||
JSR FastCreditsCutsceneScrollX
|
||||
CLC
|
||||
@@ -106,19 +131,27 @@ FastCreditsCutsceneUnderworldY:
|
||||
|
||||
|
||||
FastTextScroll:
|
||||
LDA.b FrameCounter
|
||||
BIT.b Joy1B_All-1 : BVC .slow
|
||||
LDA.b FrameCounter
|
||||
SEP #$10
|
||||
JSR IsFastCredits
|
||||
BCC .slow
|
||||
|
||||
AND.w #$0000
|
||||
REP #$10
|
||||
RTL
|
||||
|
||||
.slow
|
||||
AND.w #$0003
|
||||
REP #$10
|
||||
RTL
|
||||
|
||||
DumbFlagForMSU:
|
||||
STA.l CurrentWorld
|
||||
STZ.b $50
|
||||
STZ.b FastCreditsActive
|
||||
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
300
fileselect.asm
300
fileselect.asm
@@ -1,6 +1,4 @@
|
||||
|
||||
;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_RED = $0400
|
||||
!FS_COLOR_YELLOW = $0800
|
||||
@@ -110,6 +108,7 @@ JMP DrawItem
|
||||
DrawPlayerFile:
|
||||
LDA.b FrameCounter : AND.w #$0001 : BNE .normal
|
||||
JSR DrawPlayerFileShared
|
||||
|
||||
INC.w SkipOAM ; Suppress animated tile updates for this frame
|
||||
|
||||
; re-enable Stripe Image format upload on this frame
|
||||
@@ -146,7 +145,7 @@ DrawPlayerFile:
|
||||
AND.w #$00FF
|
||||
BEQ .flashing
|
||||
|
||||
LDA.w #$26BE
|
||||
LDA.w #$26FE
|
||||
BRA .draw_access_icon
|
||||
|
||||
.flashing
|
||||
@@ -155,10 +154,8 @@ DrawPlayerFile:
|
||||
|
||||
.draw_access_icon
|
||||
STA.w GFXStripes+$0412
|
||||
|
||||
LDA.w #$FFFF
|
||||
STA.w GFXStripes+$0414
|
||||
|
||||
BRA .done
|
||||
.normal
|
||||
STZ.w SkipOAM ; ensure core animated tile updates are not suppressed
|
||||
@@ -357,23 +354,40 @@ DrawPlayerFileShared:
|
||||
++
|
||||
|
||||
; Heart Pieces
|
||||
LDA.l HUDHeartColors_index : ASL : TAX
|
||||
LDA.l EquipmentSRAM+$2B : AND.w #$00FF : BNE +
|
||||
%fs_drawItem(9,26,FileSelectItems_heart_piece_0_of_4)
|
||||
BRA ++
|
||||
LDY.w #9*$20+26*2+$1004
|
||||
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 +
|
||||
%fs_drawItem(9,26,FileSelectItems_heart_piece_1_of_4)
|
||||
BRA ++
|
||||
LDY.w #9*$20+26*2+$1004
|
||||
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 +
|
||||
%fs_drawItem(9,26,FileSelectItems_heart_piece_2_of_4)
|
||||
BRA ++
|
||||
LDY.w #9*$20+26*2+$1004
|
||||
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+$0130 : AND.w #$00FF
|
||||
JSL.l HUDHex2Digit_Long
|
||||
TYA : AND.w #$00FF : !ADD.w #$0210+!FS_COLOR_BW : %fs_draw8x8(11,26)
|
||||
TXA : AND.w #$00FF : !ADD.w #$0210+!FS_COLOR_BW : %fs_draw8x8(11,27)
|
||||
JSL.l HexToDec
|
||||
LDA.l HexToDecDigit4 : AND.w #$00FF : ORA.w #!FS_COLOR_BW|$02E0 : %fs_draw8x8(11,26)
|
||||
LDA.l HexToDecDigit5 : AND.w #$00FF : ORA.w #!FS_COLOR_BW|$02E0 : %fs_draw8x8(11,27)
|
||||
|
||||
; Boots
|
||||
%fs_drawItemBasic(EquipmentSRAM+$15,3,28,FileSelectItems_boots)
|
||||
@@ -419,52 +433,52 @@ DrawPlayerFileShared:
|
||||
|
||||
; Crystals
|
||||
LDA.l EquipmentSRAM+$3A : AND.w #$0002 : BEQ +
|
||||
LDA.w #$0297|!FS_COLOR_BLUE
|
||||
LDA.w #$02D7|!FS_COLOR_BLUE
|
||||
BRA ++
|
||||
+
|
||||
LDA.w #$0287|!FS_COLOR_GRAY
|
||||
LDA.w #$02C7|!FS_COLOR_GRAY
|
||||
++ : %fs_draw16x8(13,18)
|
||||
|
||||
LDA.l EquipmentSRAM+$3A : AND.w #$0010 : BEQ +
|
||||
LDA.w #$0297|!FS_COLOR_BLUE
|
||||
LDA.w #$02D7|!FS_COLOR_BLUE
|
||||
BRA ++
|
||||
+
|
||||
LDA.w #$0287|!FS_COLOR_GRAY
|
||||
LDA.w #$02C7|!FS_COLOR_GRAY
|
||||
++ : %fs_draw16x8(12,19)
|
||||
|
||||
LDA.l EquipmentSRAM+$3A : AND.w #$0040 : BEQ +
|
||||
LDA.w #$0297|!FS_COLOR_BLUE
|
||||
LDA.w #$02D7|!FS_COLOR_BLUE
|
||||
BRA ++
|
||||
+
|
||||
LDA.w #$0287|!FS_COLOR_GRAY
|
||||
LDA.w #$02C7|!FS_COLOR_GRAY
|
||||
++ : %fs_draw16x8(13,20)
|
||||
|
||||
LDA.l EquipmentSRAM+$3A : AND.w #$0020 : BEQ +
|
||||
LDA.w #$0297|!FS_COLOR_BLUE
|
||||
LDA.w #$02D7|!FS_COLOR_BLUE
|
||||
BRA ++
|
||||
+
|
||||
LDA.w #$0287|!FS_COLOR_GRAY
|
||||
LDA.w #$02C7|!FS_COLOR_GRAY
|
||||
++ : %fs_draw16x8(12,21)
|
||||
|
||||
LDA.l EquipmentSRAM+$3A : AND.w #$0004 : BEQ +
|
||||
LDA.w #$0297|!FS_COLOR_RED
|
||||
LDA.w #$02D7|!FS_COLOR_RED
|
||||
BRA ++
|
||||
+
|
||||
LDA.w #$0287|!FS_COLOR_GRAY
|
||||
LDA.w #$02C7|!FS_COLOR_GRAY
|
||||
++ : %fs_draw16x8(13,22)
|
||||
|
||||
LDA.l EquipmentSRAM+$3A : AND.w #$0001 : BEQ +
|
||||
LDA.w #$0297|!FS_COLOR_RED
|
||||
LDA.w #$02D7|!FS_COLOR_RED
|
||||
BRA ++
|
||||
+
|
||||
LDA.w #$0287|!FS_COLOR_GRAY
|
||||
LDA.w #$02C7|!FS_COLOR_GRAY
|
||||
++ : %fs_draw16x8(12,23)
|
||||
|
||||
LDA.l EquipmentSRAM+$3A : AND.w #$0008 : BEQ +
|
||||
LDA.w #$0297|!FS_COLOR_BLUE
|
||||
LDA.w #$02D7|!FS_COLOR_BLUE
|
||||
BRA ++
|
||||
+
|
||||
LDA.w #$0287|!FS_COLOR_GRAY
|
||||
LDA.w #$02C7|!FS_COLOR_GRAY
|
||||
++ : %fs_draw16x8(13,24)
|
||||
|
||||
|
||||
@@ -474,157 +488,148 @@ RTS
|
||||
|
||||
FileSelectItems:
|
||||
.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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
dw #$026F|!FS_COLOR_RED, #$026F|!FS_COLOR_RED|!FS_HFLIP, #$027F|!FS_COLOR_RED, #$02B5|!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
|
||||
dw #$02AF|!FS_COLOR_RED, #$02AF|!FS_COLOR_RED|!FS_HFLIP, #$02BF|!FS_COLOR_RED, #$02F5|!FS_COLOR_RED
|
||||
|
||||
.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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
FileSelectDrawHudBar:
|
||||
LDA.w #$029B|!FS_COLOR_GREEN : %fs_draw16x8(0,10)
|
||||
LDA.w #$02DB|!FS_COLOR_GREEN : %fs_draw16x8(0,10)
|
||||
LDA.l DisplayRupeesSRAM
|
||||
JSL.l HUDHex4Digit_Long
|
||||
LDA.b Scrap04 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,9)
|
||||
LDA.b Scrap05 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,10)
|
||||
LDA.b Scrap06 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,11)
|
||||
LDA.b Scrap07 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,12)
|
||||
LDA.b Scrap04 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,9)
|
||||
LDA.b Scrap05 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,10)
|
||||
LDA.b Scrap06 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,11)
|
||||
LDA.b Scrap07 : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,12)
|
||||
|
||||
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
|
||||
JSL.l HUDHex2Digit_Long
|
||||
TYA : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,14)
|
||||
TXA : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,15)
|
||||
TYA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,14)
|
||||
TXA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,15)
|
||||
|
||||
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 ++
|
||||
+
|
||||
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
|
||||
JSL.l HUDHex2Digit_Long
|
||||
TYA : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,17)
|
||||
TXA : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,18)
|
||||
TYA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,17)
|
||||
TXA : AND.w #$00FF : !ADD.w #$0250+!FS_COLOR_BW : %fs_draw8x8(1,18)
|
||||
RTS
|
||||
;--------------------------------------------------------------------------------
|
||||
AltBufferTable:
|
||||
@@ -759,44 +764,61 @@ RTL
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadFullItemTiles:
|
||||
PHA : PHX
|
||||
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 #$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
|
||||
LDA.b #$80 : STA.w VMAIN
|
||||
LDA.b #$01 : STA.w DMAP0
|
||||
LDA.b #$18 : STA.w BBAD0
|
||||
LDX.w #$3200 : STX.w VMADDL
|
||||
LDA.b #FileSelectNewGraphics>>16 : STA.w A1B0
|
||||
LDX.w #FileSelectNewGraphics : STX.w A1T0L
|
||||
LDX.w #$0C00 : STX.w DAS0L
|
||||
LDA.b #$01 : STA.w MDMAEN
|
||||
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:
|
||||
LDA.b GameMode : CMP.b #$04 : BNE +
|
||||
; load the vanilla file select screen BG3 palette for naming screen
|
||||
@@ -840,7 +862,7 @@ DrawPlayerFile_credits:
|
||||
|
||||
LDA.l EquipmentSRAM+$2C : AND.w #$00FF : LSR #3 : STA.b Scrap02
|
||||
%fs_LDY_screenpos(0,20)
|
||||
LDA.w #$028F|!FS_COLOR_RED
|
||||
LDA.w #$02CF|!FS_COLOR_RED
|
||||
LDX.w #$000A
|
||||
|
||||
.nextHeart
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
|
||||
; Written over and used by OnEnterWater hook.
|
||||
UnequipCapeQuiet:
|
||||
LDA.b #$20 : STA.w PoofTimer
|
||||
STZ.w NoDamage
|
||||
STZ.b CapeOn
|
||||
STZ.w LinkZap
|
||||
LDA.b #$20 : STA.w PoofTimer
|
||||
STZ.w NoDamage
|
||||
STZ.b CapeOn
|
||||
STZ.w LinkZap
|
||||
RTL
|
||||
|
||||
protectff:
|
||||
@@ -43,7 +43,7 @@ protectff:
|
||||
BMI .special_overworld
|
||||
|
||||
AND.b #$3F
|
||||
CMP.l $02A4E3,X
|
||||
CMP.l $82A4E3,X
|
||||
BEQ ++
|
||||
|
||||
.protect
|
||||
|
||||
@@ -5,9 +5,6 @@ SpawnHauntedGroveItem:
|
||||
LDA.b OverworldIndex : CMP.b #$2A : BEQ + : RTL : + ; Skip if not the haunted grove
|
||||
LDA.b IndoorsFlag : BEQ + : RTL : + ; Skip if indoors
|
||||
|
||||
%GetPossiblyEncryptedItem(HauntedGroveItem, HeartPieceOutdoorValues)
|
||||
JSL.l PrepDynamicTile
|
||||
|
||||
LDA.b #$EB
|
||||
STA.l MiniGameTime
|
||||
JSL Sprite_SpawnDynamically
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
; Frame Hook
|
||||
;--------------------------------------------------------------------------------
|
||||
FrameHookAction:
|
||||
JSL $0080B5 ; Module_MainRouting
|
||||
JSL $8080B5 ; Module_MainRouting
|
||||
JSL CheckMusicLoadRequest
|
||||
PHP : REP #$30 : PHA
|
||||
SEP #$20
|
||||
@@ -35,7 +35,27 @@ PostNMIHookAction:
|
||||
.return
|
||||
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
|
||||
|
||||
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 ItemQueuePtr : BEQ .done
|
||||
-
|
||||
LDA.w ItemGFXQueue,X : STA.w ItemGFXPtr
|
||||
LDA.w ItemTargetQueue,X : STA.w ItemGFXTarget
|
||||
PHX
|
||||
JSL.l TransferItemToVRAM
|
||||
REP #$10
|
||||
PLX
|
||||
DEX #2
|
||||
BPL -
|
||||
|
||||
STZ.w ItemQueuePtr
|
||||
.done
|
||||
SEP #$30
|
||||
RTS
|
||||
|
||||
@@ -70,7 +70,7 @@ GetAgahnimLightning:
|
||||
;1 = Forbid
|
||||
AllowJoypadInput:
|
||||
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
|
||||
RTL
|
||||
.fullCheck
|
||||
|
||||
@@ -81,7 +81,7 @@ GetItemDamageValue:
|
||||
CPX.b #$3d : BEQ .hookshot
|
||||
|
||||
.normal
|
||||
LDA.l $0db8f1,x ;what we wrote over
|
||||
LDA.l $8DB8F1,x ;what we wrote over
|
||||
RTL
|
||||
.boomerang
|
||||
LDA.l StunItemAction : AND.b #$01 : BNE .normal
|
||||
|
||||
112
hashalphabet.asm
112
hashalphabet.asm
@@ -69,110 +69,88 @@ RTL
|
||||
; DMAAlphabetTilemap:
|
||||
;--------------------------------------------------------------------------------
|
||||
DMAAlphabetTilemap:
|
||||
PHA : PHX
|
||||
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 #$80 : STA.w VMAIN ; write read increment on $2119
|
||||
LDA.b #$18 : STA.w BBAD0 ; set bus B destination to VRAM register
|
||||
|
||||
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
|
||||
PHA : PHX
|
||||
REP #$10
|
||||
LDA.b #$01 : STA.w DMAP0
|
||||
LDA.b #$80 : STA.w VMAIN
|
||||
LDA.b #$18 : STA.w BBAD0
|
||||
LDX.w #$6060 : STX.w VMADDL
|
||||
LDA.b #BigRAM>>16 : STA.w A1B0
|
||||
LDX.w #BigRAM : STX.w A1T0L
|
||||
LDX.w #$0080 : STX.w DAS0L
|
||||
LDA.b #$01 : STA.w MDMAEN
|
||||
SEP #$10
|
||||
PLX : PLA
|
||||
RTS
|
||||
;--------------------------------------------------------------------------------
|
||||
HashAlphabetTilesWithBlank:
|
||||
;BLANK
|
||||
dw #$0186|!FS_COLOR_BW, #$0186|!FS_COLOR_BW, #$0196|!FS_COLOR_BW, #$0196|!FS_COLOR_BW
|
||||
dw #$0188, #$0188, #$0188, #$0188
|
||||
HashAlphabetTiles:
|
||||
;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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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:
|
||||
;db $60, $62, $00, $37
|
||||
|
||||
@@ -55,76 +55,76 @@
|
||||
!FSTILE_Y_TOP = $1D82
|
||||
!FSTILE_Y_BOTTOM = $1D92
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0CDE60 ; <- 65E60
|
||||
org $8CDE60 ; <- 65E60
|
||||
FileSelect_CopyFile_Top:
|
||||
db $62, $A5, $00, $15
|
||||
dw !FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0CDE7A ; <- 65E7A
|
||||
org $8CDE7A ; <- 65E7A
|
||||
FileSelect_CopyFile_Bottom:
|
||||
db $62, $C5, $00, $15
|
||||
dw !FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0CDE94 ; <- 65E94
|
||||
org $8CDE94 ; <- 65E94
|
||||
FileSelect_KillFile_Top:
|
||||
db $63, $25, $00, $19
|
||||
dw !FSTILE_D_TOP, !FSTILE_E_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_T_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_F_TOP, !FSTILE_I_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
|
||||
org $0CDEB2 ; <- 65EB2
|
||||
org $8CDEB2 ; <- 65EB2
|
||||
FileSelect_KillFile_Bottom:
|
||||
db $63, $45, $00, $19
|
||||
dw !FSTILE_D_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_T_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_F_BOTTOM, !FSTILE_I_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
|
||||
;CopyFile_Header:
|
||||
org $0CE228 ; <- 66228
|
||||
org $8CE228 ; <- 66228
|
||||
dw !FSTILE_BRACKET_OPEN_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_C_TOP, !FSTILE_O_TOP, !FSTILE_P_TOP, !FSTILE_Y_TOP, !FSTILE_SPACE, !FSTILE_F_TOP, !FSTILE_I_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_TOP
|
||||
org $0CE24A ; <- 6624A
|
||||
org $8CE24A ; <- 6624A
|
||||
dw !FSTILE_BRACKET_OPEN_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_C_BOTTOM, !FSTILE_O_BOTTOM, !FSTILE_P_BOTTOM, !FSTILE_Y_BOTTOM, !FSTILE_SPACE, !FSTILE_F_BOTTOM, !FSTILE_I_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_BOTTOM
|
||||
|
||||
;CopyFile_Which:
|
||||
org $0CE2DB ; <- 662DB
|
||||
org $8CE2DB ; <- 662DB
|
||||
dw $0D80, $0D61, $0D62, $0D4C, $0D61, $0D86, !FSTILE_SPACE
|
||||
org $0CE2ED ; <- 662ED
|
||||
org $8CE2ED ; <- 662ED
|
||||
dw $0D90, $0D71, $0D72, $0D5C, $0D71, $0D96, !FSTILE_SPACE
|
||||
|
||||
;CopyFile_Where:
|
||||
org $0CE39C ; <- 6639C
|
||||
org $8CE39C ; <- 6639C
|
||||
dw $0D80, $0D61, $0D4E, $0D6B, $0D4E, $0D86, !FSTILE_SPACE
|
||||
org $0CE3AE ; <- 663AE
|
||||
org $8CE3AE ; <- 663AE
|
||||
dw $0D90, $0D71, $0D5E, $0D7B, $0D5E, $0D96, !FSTILE_SPACE
|
||||
|
||||
;CopyFile_Execute:
|
||||
org $0CD13A ; <- 6513A
|
||||
org $8CD13A ; <- 6513A
|
||||
dw !FSTILE_C_TOP, !FSTILE_SPACE, !FSTILE_O_TOP, !FSTILE_SPACE, !FSTILE_P_TOP, !FSTILE_SPACE, !FSTILE_Y_TOP, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
org $0CD150 ; <- 65150
|
||||
org $8CD150 ; <- 65150
|
||||
dw !FSTILE_C_BOTTOM, !FSTILE_SPACE, !FSTILE_O_BOTTOM, !FSTILE_SPACE, !FSTILE_P_BOTTOM, !FSTILE_SPACE, !FSTILE_Y_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
|
||||
;CopyFile_Cancel:
|
||||
org $0CE29A ; <- 6629A
|
||||
org $8CE29A ; <- 6629A
|
||||
dw !FSTILE_C_TOP, !FSTILE_SPACE, !FSTILE_A_TOP, !FSTILE_SPACE, !FSTILE_N_TOP, !FSTILE_SPACE, !FSTILE_C_TOP, !FSTILE_SPACE, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_L_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
org $0CE2BA ; <- 662BA
|
||||
org $8CE2BA ; <- 662BA
|
||||
dw !FSTILE_C_BOTTOM, !FSTILE_SPACE, !FSTILE_A_BOTTOM, !FSTILE_SPACE, !FSTILE_N_BOTTOM, !FSTILE_SPACE, !FSTILE_C_BOTTOM, !FSTILE_SPACE, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_L_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
|
||||
;KillFile_Header:
|
||||
org $0CE002 ; <- 66002
|
||||
org $8CE002 ; <- 66002
|
||||
dw !FSTILE_BRACKET_OPEN_TOP, !FSTILE_SPACE, !FSTILE_D_TOP, !FSTILE_E_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_T_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_F_TOP, !FSTILE_I_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_TOP, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
org $0CE028 ; <- 66028
|
||||
org $8CE028 ; <- 66028
|
||||
dw !FSTILE_BRACKET_OPEN_BOTTOM, !FSTILE_SPACE, !FSTILE_D_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_T_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_F_BOTTOM, !FSTILE_I_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
|
||||
;KillFile_Which:
|
||||
org $0CE04E ; <- 6604E
|
||||
org $8CE04E ; <- 6604E
|
||||
dw !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
org $0CE084 ; <- 66084
|
||||
org $8CE084 ; <- 66084
|
||||
dw !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
|
||||
;KillFile_Execute:
|
||||
org $0CD328 ; <- 65328
|
||||
org $8CD328 ; <- 65328
|
||||
dw !FSTILE_D_TOP, !FSTILE_E_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_T_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
org $0CD344 ; <- 65344
|
||||
org $8CD344 ; <- 65344
|
||||
dw !FSTILE_D_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_T_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
|
||||
;KillFile_Cancel:
|
||||
org $0CE0BA ; <- 660BA
|
||||
org $8CE0BA ; <- 660BA
|
||||
dw !FSTILE_C_TOP, !FSTILE_A_TOP, !FSTILE_N_TOP, !FSTILE_C_TOP, !FSTILE_E_TOP, !FSTILE_L_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
org $0CE0DA ; <- 660DA
|
||||
org $8CE0DA ; <- 660DA
|
||||
dw !FSTILE_C_BOTTOM, !FSTILE_A_BOTTOM, !FSTILE_N_BOTTOM, !FSTILE_C_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
|
||||
151
heartpieces.asm
151
heartpieces.asm
@@ -3,31 +3,17 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
HeartPieceGet:
|
||||
PHX : PHY
|
||||
LDY.w SpriteItemType, X ; load item value into Y register
|
||||
BNE +
|
||||
; if for any reason the item value is 0 reload it, just in case
|
||||
JSL.l LoadHeartPieceRoomValue : TAY
|
||||
+
|
||||
JSL.l LoadHeartPieceRoomValue
|
||||
JSL.l ResolveLootIDLong
|
||||
TAY
|
||||
JSL.l MaybeMarkDigSpotCollected
|
||||
|
||||
.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
|
||||
|
||||
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
|
||||
CLC ; return false
|
||||
JMP .done ; finished
|
||||
|
||||
.unfinished_heart
|
||||
SEC ; return true
|
||||
.done
|
||||
JSL MaybeUnlockTabletAnimation
|
||||
|
||||
PLY : PLX
|
||||
@@ -35,42 +21,38 @@ RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
HeartContainerGet:
|
||||
PHX : PHY
|
||||
JSL.l AddInventory_incrementBossSwordLong
|
||||
LDY.w SpriteItemType, X ; load item value into Y register
|
||||
BNE +
|
||||
; if for any reason the item value is 0 reload it, just in case
|
||||
JSL.l IncrementBossSword
|
||||
LDY.w SpriteID, X : BNE +
|
||||
JSL.l LoadHeartContainerRoomValue : TAY
|
||||
+
|
||||
|
||||
BRA HeartPieceGet_skipLoad
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawHeartPieceGFX:
|
||||
PHP
|
||||
JSL.l Sprite_IsOnscreen : BCC .offscreen
|
||||
|
||||
PHA : PHY
|
||||
LDA.l RedrawFlag : BEQ .skipInit ; skip init if already ready
|
||||
JSL.l HeartPieceSpritePrep
|
||||
JMP .done ; don't draw on the init frame
|
||||
|
||||
.skipInit
|
||||
LDA.w SpriteItemType, X ; Retrieve stored item type
|
||||
|
||||
.skipLoad
|
||||
|
||||
PHA
|
||||
JSL.l IsNarrowSprite : BCC +
|
||||
LDA.w SpriteControl, X : ORA.b #$20 : STA.w SpriteControl, X
|
||||
+
|
||||
PLA
|
||||
|
||||
JSL.l DrawDynamicTile
|
||||
JSL.l Sprite_DrawShadowLong
|
||||
|
||||
.done
|
||||
PLY : PLA
|
||||
.offscreen
|
||||
PLP
|
||||
PHP
|
||||
JSL.l Sprite_IsOnscreen : BCC .offscreen
|
||||
PHA : PHY
|
||||
LDA.l RedrawFlag : BEQ .skipInit ; skip init if already ready
|
||||
JSL.l HeartPieceSpritePrep
|
||||
JMP .done ; don't draw on the init frame
|
||||
.skipInit
|
||||
LDA.w SpriteID, X ; Retrieve stored item type
|
||||
.skipLoad
|
||||
PHA : PHX
|
||||
TAX
|
||||
LDA.l SpriteProperties_standing_width,X : BNE +
|
||||
PLX
|
||||
LDA.w SpriteControl, X : ORA.b #$20 : STA.w SpriteControl, X
|
||||
BRA .draw
|
||||
+
|
||||
PLX
|
||||
.draw
|
||||
PLA
|
||||
JSL.l DrawDynamicTile
|
||||
JSL.l Sprite_DrawShadowLong
|
||||
.done
|
||||
PLY : PLA
|
||||
.offscreen
|
||||
PLP
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawHeartContainerGFX:
|
||||
@@ -83,37 +65,36 @@ DrawHeartContainerGFX:
|
||||
BRA DrawHeartPieceGFX_done ; don't draw on the init frame
|
||||
|
||||
.skipInit
|
||||
LDA.w SpriteItemType, X ; Retrieve stored item type
|
||||
LDA.w SpriteID, X ; Retrieve stored item type
|
||||
|
||||
BRA DrawHeartPieceGFX_skipLoad
|
||||
;--------------------------------------------------------------------------------
|
||||
HeartContainerSound:
|
||||
CPY.b #$20 : BEQ + ; Skip for Crystal
|
||||
CPY.b #$37 : BEQ + ; Skip for Pendants
|
||||
CPY.b #$38 : BEQ +
|
||||
CPY.b #$39 : BEQ +
|
||||
JSL.l CheckIfBossRoom : BCC + ; Skip if not in a boss room
|
||||
LDA.b #$2E
|
||||
SEC
|
||||
RTL
|
||||
LDA.w ItemReceiptMethod : CMP.b #$03 : BEQ +
|
||||
JSL.l CheckIfBossRoom : BCC + ; Skip if not in a boss room
|
||||
LDA.b #$2E
|
||||
SEC
|
||||
RTL
|
||||
+
|
||||
CLC
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
NormalItemSkipSound:
|
||||
LDA.w AncillaGet, X ; thing we wrote over
|
||||
|
||||
CPY.b #$20 : BEQ + ; Skip for Crystal
|
||||
CPY.b #$37 : BEQ + ; Skip for Pendants
|
||||
CPY.b #$38 : BEQ +
|
||||
CPY.b #$39 : BEQ +
|
||||
|
||||
PHA
|
||||
JSL.l CheckIfBossRoom
|
||||
PLA
|
||||
; Out: C - skip sounds if set
|
||||
JSL.l CheckIfBossRoom : BCS .boss_room
|
||||
TDC
|
||||
CPY #$17 : BEQ .skip
|
||||
CLC
|
||||
RTL
|
||||
+
|
||||
CLC
|
||||
.boss_room
|
||||
LDA.w ItemReceiptMethod : CMP.b #$03 : BEQ +
|
||||
.skip
|
||||
SEC
|
||||
RTL
|
||||
+
|
||||
LDA.b #$20
|
||||
.dont_skip
|
||||
CLC
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
HeartPieceSpritePrep:
|
||||
@@ -125,9 +106,10 @@ HeartPieceSpritePrep:
|
||||
LDA.b LinkState : CMP.b #$14 : BEQ .skip ; skip if we're mid-mirror
|
||||
|
||||
LDA.b #$00 : STA.l RedrawFlag
|
||||
JSL.l LoadHeartPieceRoomValue ; load item type
|
||||
STA.w SpriteItemType, X ; Store item type
|
||||
JSL.l PrepDynamicTile
|
||||
JSL.l LoadHeartPieceRoomValue
|
||||
JSL.l ResolveLootIDLong
|
||||
STA.w SpriteID, X
|
||||
JSL.l PrepDynamicTile_loot_resolved
|
||||
|
||||
.skip
|
||||
PLA
|
||||
@@ -138,8 +120,9 @@ HeartContainerSpritePrep:
|
||||
|
||||
LDA.b #$00 : STA.l RedrawFlag
|
||||
JSL.l LoadHeartContainerRoomValue ; load item type
|
||||
STA.w SpriteItemType, X ; Store item type
|
||||
JSL.l PrepDynamicTile
|
||||
JSL.l ResolveLootIDLong
|
||||
STA.w SpriteID, X
|
||||
JSL.l PrepDynamicTile_loot_resolved
|
||||
|
||||
PLA
|
||||
RTL
|
||||
@@ -155,7 +138,7 @@ LoadHeartPieceRoomValue:
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
HPItemReset:
|
||||
JSL $09AD58 ; GiveRupeeGift - thing we wrote over
|
||||
JSL $89AD58 ; GiveRupeeGift - thing we wrote over
|
||||
PHA : LDA.b #$01 : STA.l RedrawFlag : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
@@ -378,9 +361,9 @@ RTL
|
||||
;#13 - Ganon's Tower - Agahnim II
|
||||
;#0 - Pyramid of Power - Ganon
|
||||
;--------------------------------------------------------------------------------
|
||||
;JSL $06DD40 ; DashKey_Draw
|
||||
;JSL $06DBF8 ; Sprite_PrepAndDrawSingleLargeLong
|
||||
;JSL $06DC00 ; Sprite_PrepAndDrawSingleSmallLong ; draw first cell correctly
|
||||
;JSL $00D51B ; GetAnimatedSpriteTile
|
||||
;JSL $00D52D ; GetAnimatedSpriteTile.variable
|
||||
;JSL $86DD40 ; DashKey_Draw
|
||||
;JSL $86DBF8 ; Sprite_PrepAndDrawSingleLargeLong
|
||||
;JSL $86DC00 ; Sprite_PrepAndDrawSingleSmallLong ; draw first cell correctly
|
||||
;JSL $80D51B ; GetAnimatedSpriteTile
|
||||
;JSL $80D52D ; GetAnimatedSpriteTile.variable
|
||||
;================================================================================
|
||||
|
||||
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
|
||||
HUD_TileMap:
|
||||
dw $207F, $207F, $2850, $A856
|
||||
dw $2852, $285B, $285B, $285C
|
||||
;dw $207F, $3CA8, $207F, $207F, $207F
|
||||
dw $207F, $207F, $2850, $A856
|
||||
dw $2852, $285B, $285B, $285C
|
||||
;dw $207F, $3CA8, $207F, $207F, $207F
|
||||
dw $207F, $3C02, $3C03, $207F, $207F ; normal mode
|
||||
;dw $3C02, $3C03, $207F, $207F, $207F ; rupee arrows
|
||||
dw $2C88, $2C89, $207F, $20A7
|
||||
dw $20A9, $207F, $2871 ;, $207F
|
||||
dw $207F, $207F, $288B, $288F
|
||||
dw $24AB, $24AC, $688F, $688B
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $2854, $2871
|
||||
dw $2858, $207F, $207F, $285D
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $2854, $304E
|
||||
dw $2858, $207F, $207F, $285D
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $2854, $305E
|
||||
dw $2859, $A85B, $A85B, $A85C
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $2854, $305E
|
||||
dw $6854, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $A850, $2856
|
||||
dw $E850
|
||||
dw $2C88, $2C89, $207F, $20A7
|
||||
dw $20A9, $207F, $2871 ;, $207F
|
||||
dw $207F, $207F, $288B, $288F
|
||||
dw $24AB, $24AC, $688F, $688B
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $2854, $2871
|
||||
dw $2858, $207F, $207F, $285D
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $2854, $304E
|
||||
dw $2858, $207F, $207F, $285D
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $2854, $305E
|
||||
dw $2859, $A85B, $A85B, $A85C
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $2854, $305E
|
||||
dw $6854, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $207F, $207F
|
||||
dw $207F, $207F, $A850, $2856
|
||||
dw $E850
|
||||
|
||||
38
init.asm
38
init.asm
@@ -53,7 +53,10 @@ Init_Primary:
|
||||
|
||||
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
|
||||
RTL
|
||||
|
||||
JML ReturnFromInit
|
||||
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; Init_PostRAMClear
|
||||
;--------------------------------------------------------------------------------
|
||||
@@ -64,6 +67,35 @@ Init_PostRAMClear:
|
||||
|
||||
JSL MSUInit
|
||||
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
|
||||
fill $500 ;
|
||||
|
||||
org $30B000 ; PC 0x183000
|
||||
org $B0B000 ; PC 0x183000
|
||||
InitSRAMTable:
|
||||
InitRoomDataWRAM:
|
||||
org $30B060 ; PC 0x183060
|
||||
org $B0B060 ; PC 0x183060
|
||||
InitATAltarRoom: dw $0000 ; aga curtains
|
||||
org $30B092 ; PC 0x183092
|
||||
org $B0B092 ; PC 0x183092
|
||||
InitSWBackEntryRoom: dw $0000 ; skull woods curtains
|
||||
|
||||
org $30B20C
|
||||
org $B0B20C
|
||||
dw $F000, $F000 ; Pre-open kak bomb hut & brewery
|
||||
|
||||
org $30B280 ; PC 0x183280 - 0x1832FF
|
||||
org $B0B280 ; PC 0x183280 - 0x1832FF
|
||||
InitOverworldEvents:
|
||||
org $30B282 ; PC 0x183282 - Lumberjacks
|
||||
org $B0B282 ; PC 0x183282 - Lumberjacks
|
||||
InitLumberjackOW: db $00
|
||||
org $30B29B ; PC 0x18329B - Open castle gate
|
||||
org $B0B29B ; PC 0x18329B - Open castle gate
|
||||
InitHyruleCastleOW: db $20
|
||||
org $30B2DB ; PC 0x1832DB - Pyramid hole
|
||||
org $B0B2DB ; PC 0x1832DB - Pyramid hole
|
||||
InitPyramidOW: db $00
|
||||
org $30B2C3 ; PC 0x1832C3 - GT
|
||||
org $B0B2C3 ; PC 0x1832C3 - GT
|
||||
InitDDMWestOW: db $00
|
||||
|
||||
|
||||
org $30B340 ; PC 0x183340
|
||||
org $B0B340 ; PC 0x183340
|
||||
StartingEquipment:
|
||||
StartingBow: skip 1 ; PC 0x183340
|
||||
StartingBoomerang: skip 1 ; PC 0x183341
|
||||
@@ -129,13 +129,13 @@ InitDroppedFollowerIndoors: skip 1 ; PC 0x1833D1
|
||||
InitDroppedFollowerLayer: skip 1 ; PC 0x1833D2
|
||||
InitFollowerDropped: skip 1 ; PC 0x1833D3
|
||||
|
||||
org $30B3D9 ; PC 0x1833D9 - 0x1833F0
|
||||
org $B0B3D9 ; PC 0x1833D9 - 0x1833F0
|
||||
StaticFileName: ; The validity value ($55AA) must be written manually on SRAM init at $7003E1
|
||||
dw $0181, $0068, $006E, $018C
|
||||
dw $0166, $0064, $0068, $018C
|
||||
dw $0165, $0068, $006D, $018C
|
||||
|
||||
org $30B401 ; PC 0x183401
|
||||
org $B0B401 ; PC 0x183401
|
||||
InitDeathCounter:
|
||||
dw $FFFF
|
||||
|
||||
@@ -147,29 +147,29 @@ dw $FFFF
|
||||
; excluding ~28 bytes (File name, validity value, and checksum.)
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
org $30B414 ; PC 0x183414-0x183416
|
||||
org $B0B414 ; PC 0x183414-0x183416
|
||||
InitMapOverlay: dw $0000
|
||||
|
||||
org $30B417 ; PC 0x183417
|
||||
org $B0B417 ; PC 0x183417
|
||||
InitHighestSword: db $00
|
||||
|
||||
org $30B414 ; PC 0x183418-0x183419
|
||||
org $B0B414 ; PC 0x183418-0x183419
|
||||
InitGoalCounter: dw $0000
|
||||
|
||||
org $30B422 ; PC 0x183422
|
||||
org $B0B422 ; PC 0x183422
|
||||
InitHighestShield: db $00
|
||||
|
||||
org $30B428 ; PC 0x183428
|
||||
org $B0B428 ; PC 0x183428
|
||||
InitMapsCompasses: db $00
|
||||
|
||||
org $30B429 ; PC 0x183429
|
||||
org $B0B429 ; PC 0x183429
|
||||
InitPendantCounter: db $00
|
||||
|
||||
org $30B454 ; PC 0x183454-0x183457
|
||||
org $B0B454 ; PC 0x183454-0x183457
|
||||
InitChallengeTimer: dw $0000, $0000
|
||||
|
||||
org $30B46E ; PC 0x18346E
|
||||
org $B0B46E ; PC 0x18346E
|
||||
InitHighestMail: db $00
|
||||
|
||||
org $30B471 ; PC 0x183471
|
||||
org $B0B471 ; PC 0x183471
|
||||
InitCrystalCounter: db $00
|
||||
|
||||
751
inventory.asm
751
inventory.asm
@@ -1,28 +1,6 @@
|
||||
;================================================================================
|
||||
; 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:
|
||||
; out: Carry - 0 = No Button, 1 = Yes Button
|
||||
@@ -129,10 +107,6 @@ ProcessBottleMenu:
|
||||
.no_bottles
|
||||
LDA.b #$00 ; pretend like the controller state was 0 from the overridden load
|
||||
RTL
|
||||
; .y_not_pressed
|
||||
; LDA.b Joy1A_New : AND.b #$0C ; thing we wrote over - load controller state
|
||||
;RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
;OpenBottleMenu:
|
||||
@@ -162,522 +136,201 @@ RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
; 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:
|
||||
PHA : PHX : PHP
|
||||
CPY.b #$0C : BNE + ; Blue Boomerang
|
||||
LDA.l InventoryTracking : ORA.b #$80 : STA.l InventoryTracking
|
||||
JMP .incrementCounts
|
||||
+ CPY.b #$2A : BNE + ; Red Boomerang
|
||||
LDA.l InventoryTracking : ORA.b #$40 : STA.l InventoryTracking
|
||||
JMP .incrementCounts
|
||||
+ CPY.b #$29 : BNE + ; Mushroom
|
||||
LDA.l InventoryTracking : ORA.b #$28 : STA.l InventoryTracking
|
||||
JMP .incrementCounts
|
||||
+ CPY.b #$0D : BNE + ; Magic Powder
|
||||
LDA.l InventoryTracking : ORA.b #$10 : STA.l InventoryTracking
|
||||
JMP .incrementCounts
|
||||
+ CPY.b #$13 : BNE + ; Shovel
|
||||
LDA.l InventoryTracking : ORA.b #$04 : STA.l InventoryTracking
|
||||
JMP .incrementCounts
|
||||
+ CPY.b #$14 : BNE + ; Flute (Inactive)
|
||||
LDA.l InventoryTracking : ORA.b #$02 : STA.l InventoryTracking
|
||||
JMP .incrementCounts
|
||||
+ CPY.b #$4A : BNE + ; Flute (Active)
|
||||
LDA.l InventoryTracking : ORA.b #$01 : STA.l InventoryTracking
|
||||
JMP .incrementCounts
|
||||
+ CPY.b #$0B : BNE + ; Bow
|
||||
LDA.l ArrowMode : BNE +++
|
||||
LDA.l BowTracking : ORA.b #$80 : STA.l BowTracking
|
||||
+++
|
||||
JMP .incrementCounts
|
||||
+ CPY.b #$3A : BNE + ; Bow & Arrows
|
||||
LDA.l BowTracking : ORA.b #$80 : STA.l BowTracking
|
||||
JMP .incrementCounts
|
||||
+ CPY.b #$3B : BNE + ; Bow & Silver Arrows
|
||||
LDA.l BowTracking : ORA.b #$40 : STA.l BowTracking
|
||||
LDA.l ArrowMode : BNE +++
|
||||
LDA.l BowTracking : ORA.b #$80 : STA.l BowTracking ; activate wood arrows when not in rupee bow
|
||||
+++
|
||||
JMP .incrementCounts
|
||||
+ CPY.b #$43 : BNE + ; Single arrow
|
||||
LDA.l ArrowMode : BEQ +++
|
||||
LDA.l BowTracking : ORA.b #$80 : STA.l BowTracking ; activate wood arrows in quick-swap
|
||||
+++
|
||||
JMP .incrementCounts
|
||||
+ CPY.b #$58 : BNE + ; Upgrade-Only Silver Arrows
|
||||
LDA.l BowTracking : ORA.b #$40 : STA.l BowTracking
|
||||
+
|
||||
|
||||
.incrementCounts
|
||||
; 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 +
|
||||
CPY.b #$32 : BNE +
|
||||
JMP .done
|
||||
+
|
||||
CMP.b #$04 : BCS +
|
||||
LDA.l SewersLocations : INC : STA.l SewersLocations
|
||||
LDA.l HCLocations : INC : STA.l HCLocations
|
||||
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
|
||||
; In: Y - Receipt ID
|
||||
; Uses $0B-$0D for long absolute addressing
|
||||
PHA : PHX : PHY : PHP : PHB
|
||||
PHK : PLB
|
||||
LDA.b #$7E : STA.b Scrap0D
|
||||
LDA.l StatsLocked : BNE .done
|
||||
LDA.w InventoryTable_properties,Y : BIT #$01 : BEQ .done
|
||||
JSR.w ShopCheck : BCS .done
|
||||
JSR.w DungeonIncrement : BCS .done
|
||||
JSR.w IncrementByOne
|
||||
JSR.w StampItem
|
||||
SEP #$20
|
||||
JSR.w IncrementYAItems
|
||||
REP #$20
|
||||
LDA.l TotalItemCounter : INC : TAY
|
||||
LDA.l BootsEquipment : BNE +
|
||||
TYA : STA.l PreBootsLocations
|
||||
+
|
||||
LDA.l MirrorEquipment : BNE +
|
||||
TYA : STA.l PreMirrorLocations
|
||||
+
|
||||
LDA.l FluteEquipment : BNE +
|
||||
TYA : STA.l PreFluteLocations
|
||||
+
|
||||
TYA
|
||||
STA.l TotalItemCounter
|
||||
.done
|
||||
PLB : PLP : PLY : PLX : PLA
|
||||
RTL
|
||||
|
||||
ShopCheck:
|
||||
LDA.b IndoorsFlag : BEQ .count
|
||||
LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ .count
|
||||
LDA.w InventoryTable_properties,Y : BIT.b #$02 : BNE .count
|
||||
REP #$20
|
||||
LDA.b RoomIndex
|
||||
CMP.w #274 : BEQ .nocount ; dark world death mountain shop, ornamental shield shop
|
||||
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
|
||||
CMP.w #284 : BEQ .nocount ; bomb shop
|
||||
CMP.w #287 : BEQ .nocount ; kakariko shop
|
||||
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
|
||||
LDA.w DungeonID : BMI .done
|
||||
CMP.l BallNChainDungeon : BNE +
|
||||
CPY.b #$32 : BEQ .ballchain_bigkey
|
||||
+
|
||||
CMP.b #$04 : BCS +
|
||||
LDA.l SewersLocations : INC : STA.l SewersLocations : STA.l HCLocations
|
||||
BRA .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
|
||||
CLC
|
||||
RTS
|
||||
.ballchain_bigkey
|
||||
LDA.l BigKeysBigChests
|
||||
CLC : ADC.b #$10
|
||||
STA.l BigKeysBigChests
|
||||
SEC
|
||||
RTS
|
||||
|
||||
StampItem:
|
||||
REP #$30
|
||||
TYA : ASL : TAX
|
||||
LDA.w InventoryTable_stamp,X : BEQ .skip
|
||||
STA.b Scrap0B
|
||||
LDA.b [Scrap0B] : BNE .skip
|
||||
LDA.l NMIFrames : STA.b [Scrap0B]
|
||||
INC.b Scrap0B : INC.b Scrap0B
|
||||
LDA.l NMIFrames+2 : STA.b [Scrap0B]
|
||||
.skip
|
||||
RTS
|
||||
|
||||
IncrementYAItems:
|
||||
LDA.w InventoryTable_properties,Y
|
||||
BIT.b #$10 : BNE .bomb_check
|
||||
BIT.b #$20 : BNE .bow_check
|
||||
BIT.b #$04 : BEQ .not_y
|
||||
.y_item
|
||||
LDA.l YAItemCounter : !ADD #$08 : STA.l YAItemCounter
|
||||
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
|
||||
.bow_check
|
||||
LDA.l BowEquipment : BNE +
|
||||
BRA .y_item
|
||||
+
|
||||
RTS
|
||||
.bomb_check
|
||||
LDA.l InventoryTracking+1 : BIT.b #$02 : BNE +
|
||||
ORA.b #$02 : STA.l InventoryTracking+1
|
||||
BRA .y_item
|
||||
+
|
||||
RTS
|
||||
|
||||
IncrementByOne:
|
||||
REP #$20
|
||||
LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total
|
||||
TYA : ASL : TAX
|
||||
LDA.w InventoryTable_stat,X : BEQ .skip
|
||||
STA.b Scrap0B
|
||||
SEP #$20
|
||||
LDA.b #$01 : ADC.b [Scrap0B] : STA.b [Scrap0B]
|
||||
.skip
|
||||
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
|
||||
+
|
||||
.done
|
||||
PLP : PLX : PLA
|
||||
RTL
|
||||
; WHICH BEE IS BOTTLED?
|
||||
; MAKE SURE FAIRY FOUNTAINS DON'T FUCK THE COUNTS UP
|
||||
|
||||
.stampSword
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
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
|
||||
|
||||
.stampBoots
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA.l BootsTime : BNE +
|
||||
LDA.l BootsTime+2 : BNE +
|
||||
LDA.l NMIFrames : STA.l BootsTime
|
||||
LDA.l NMIFrames+2 : STA.l BootsTime+2
|
||||
+
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
RTS
|
||||
|
||||
.stampFlute
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA.l FluteTime : BNE +
|
||||
LDA.l FluteTime+2 : BNE +
|
||||
LDA.l NMIFrames : STA.l FluteTime
|
||||
LDA.l NMIFrames+2 : STA.l FluteTime+2
|
||||
+
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
RTS
|
||||
|
||||
.stampMirror
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
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
|
||||
|
||||
.incrementSword
|
||||
JSR .stampSword
|
||||
LDA.l HighestSword
|
||||
INC : STA.b Scrap04 : CPX.b Scrap04 : !BLT + ; don't increment unless we're getting a better sword
|
||||
TXA : STA.l HighestSword
|
||||
IncrementBossSword:
|
||||
PHX
|
||||
LDA.l StatsLocked : BNE .done
|
||||
LDA.l SwordEquipment : CMP.b #$FF : BNE +
|
||||
BRA .none
|
||||
+
|
||||
RTS
|
||||
ASL : TAX
|
||||
JMP.w (.vectors,X)
|
||||
|
||||
.incrementShield
|
||||
LDA.l HighestShield
|
||||
INC : STA.b Scrap04 : CPX.b Scrap04 : !BLT + ; don't increment unless we're getting a better shield
|
||||
TXA : STA.l HighestShield
|
||||
+
|
||||
RTS
|
||||
.vectors
|
||||
dw .none
|
||||
dw .fighter
|
||||
dw .master
|
||||
dw .tempered
|
||||
dw .golden
|
||||
|
||||
.incrementBow
|
||||
LDA.l BowEquipment : BNE .dontCount ; Don't increment Y item count for extra bows
|
||||
.incrementY
|
||||
LDA.l YAItemCounter : !ADD #$08 : STA.l YAItemCounter
|
||||
.dontCount
|
||||
RTS
|
||||
|
||||
.incrementA
|
||||
LDA.l YAItemCounter : INC : AND.b #$07 : TAX
|
||||
LDA.l YAItemCounter : AND.b #$F8 : STA.l YAItemCounter
|
||||
TXA : ORA.l YAItemCounter : STA.l YAItemCounter
|
||||
RTS
|
||||
|
||||
.incrementPendant
|
||||
LDA.l PendantCounter : INC : STA.l PendantCounter
|
||||
RTS
|
||||
|
||||
.incrementCapacity
|
||||
LDA.l CapacityUpgrades : INC : STA.l CapacityUpgrades
|
||||
RTS
|
||||
|
||||
.incrementHeartPiece
|
||||
LDA.l HeartPieceCounter : INC : STA.l HeartPieceCounter
|
||||
RTS
|
||||
|
||||
.incrementHeartContainer
|
||||
LDA.l HeartContainerCounter : INC : STA.l HeartContainerCounter
|
||||
RTS
|
||||
|
||||
.incrementCrystal
|
||||
LDA.l CrystalCounter : INC : STA.l CrystalCounter
|
||||
RTS
|
||||
|
||||
.incrementMail
|
||||
LDA.l HighestMail
|
||||
INC : STA.b Scrap04 : CPX.b Scrap04 : !BLT + ; don't increment unless we're getting a better mail
|
||||
TXA : STA.l HighestMail
|
||||
+
|
||||
RTS
|
||||
|
||||
.incrementKeyLong
|
||||
JSR .incrementKey
|
||||
RTL
|
||||
|
||||
.incrementVanillaKey
|
||||
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 SwordEquipment
|
||||
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
|
||||
;--------------------------------------------------------------------------------
|
||||
.none
|
||||
LDA.l SwordlessBossKills : INC : STA.l SwordlessBossKills
|
||||
.done
|
||||
PLX
|
||||
RTL
|
||||
.fighter
|
||||
LDA.l SwordBossKills
|
||||
CLC : ADC.b #$10
|
||||
STA.l SwordBossKills
|
||||
PLX
|
||||
RTL
|
||||
.master
|
||||
LDA.l SwordBossKills : INC : AND.b #$0F : TAX
|
||||
LDA.l SwordBossKills : AND.b #$F0 : STA.l SwordBossKills
|
||||
TXA : ORA.l SwordBossKills : STA.l SwordBossKills
|
||||
PLX
|
||||
RTL
|
||||
.tempered
|
||||
LDA.l SwordBossKills+1
|
||||
CLC : ADC.b #$10
|
||||
STA.l SwordBossKills+1
|
||||
PLX
|
||||
RTL
|
||||
.golden
|
||||
LDA.l SwordBossKills+1 : INC : AND.b #$0F : TAX
|
||||
LDA.l SwordBossKills+1 : AND.b #$F0 : STA.l SwordBossKills+1
|
||||
TXA : ORA.l SwordBossKills+1 : STA.l SwordBossKills+1
|
||||
PLX
|
||||
RTL
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; Link_ReceiveItem_HUDRefresh:
|
||||
IncrementFinalSword:
|
||||
PHX
|
||||
REP #$20
|
||||
LDA.w RoomIndex : BNE .done
|
||||
SEP #$20
|
||||
LDA.l SwordEquipment : CMP.b #$FF : BNE +
|
||||
BRA IncrementBossSword_none
|
||||
+
|
||||
ASL : TAX
|
||||
JMP.w (IncrementBossSword_vectors,X)
|
||||
.done
|
||||
SEP #$20
|
||||
PLX
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
Link_ReceiveItem_HUDRefresh:
|
||||
LDA.l BombsEquipment : BNE + ; skip if we have bombs
|
||||
@@ -835,7 +488,7 @@ ClearOWKeys:
|
||||
|
||||
JSL.l TurtleRockEntranceFix
|
||||
JSL.l FakeWorldFix
|
||||
JSR.w FixBunnyOnExitToLightWorld
|
||||
JSL.l FixBunnyOnExitToLightWorld
|
||||
LDA.l GenericKeys : BEQ +
|
||||
PLA : LDA.l CurrentGenericKeys : STA.l CurrentSmallKeys
|
||||
RTL
|
||||
@@ -858,10 +511,14 @@ RTL
|
||||
; LoadPowder:
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadPowder:
|
||||
PHX
|
||||
JSL.l Sprite_SpawnDynamically ; thing we wrote over
|
||||
%GetPossiblyEncryptedItem(WitchItem, SpriteItemValues)
|
||||
STA.w SpriteAuxTable, Y ; Store item type
|
||||
JSL.l PrepDynamicTile
|
||||
JSL.l ResolveLootIDLong
|
||||
STA.w SpriteID, Y
|
||||
TYX
|
||||
JSL.l PrepDynamicTile_loot_resolved
|
||||
PLX
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
@@ -884,12 +541,12 @@ RTL
|
||||
DrawPowder:
|
||||
LDA.w ItemReceiptPose : BNE .defer ; defer if link is buying a potion
|
||||
LDA.l RedrawFlag : BEQ +
|
||||
LDA.w SpriteAuxTable, X ; Retrieve stored item type
|
||||
JSL.l PrepDynamicTile
|
||||
; LDA.w SpriteAuxTable, X ; Retrieve stored item type
|
||||
JSL.l PrepDynamicTile_loot_resolved
|
||||
LDA.b #$00 : STA.l RedrawFlag ; reset redraw flag
|
||||
BRA .defer
|
||||
+
|
||||
LDA.w SpriteAuxTable, X ; Retrieve stored item type
|
||||
LDA.w SpriteID, X ; Retrieve stored item type
|
||||
JSL.l DrawDynamicTile
|
||||
.defer
|
||||
RTL
|
||||
@@ -909,7 +566,8 @@ LoadMushroom:
|
||||
|
||||
LDA.b #$00 : STA.l RedrawFlag
|
||||
%GetPossiblyEncryptedItem(MushroomItem, SpriteItemValues)
|
||||
STA.w SpriteItemType, X ; Store item type
|
||||
JSR.w ResolveLootID
|
||||
STA.w SpriteID,X
|
||||
JSL.l PrepDynamicTile
|
||||
|
||||
.skip
|
||||
@@ -927,7 +585,7 @@ DrawMushroom:
|
||||
BRA .done ; don't draw on the init frame
|
||||
|
||||
.skipInit
|
||||
LDA.w SpriteItemType, X ; Retrieve stored item type
|
||||
LDA.w SpriteID, X ; Retrieve stored item type
|
||||
JSL.l DrawDynamicTile
|
||||
|
||||
.done
|
||||
@@ -939,15 +597,14 @@ RTL
|
||||
; CollectPowder:
|
||||
;--------------------------------------------------------------------------------
|
||||
CollectPowder:
|
||||
LDY.w SpriteAuxTable, X ; Retrieve stored item type
|
||||
BNE +
|
||||
; if for any reason the item value is 0 reload it, just in case
|
||||
%GetPossiblyEncryptedItem(WitchItem, SpriteItemValues) : TAY
|
||||
+
|
||||
STZ.w ItemReceiptMethod ; item from NPC
|
||||
JSL.l Link_ReceiveItem
|
||||
;JSL.l FullInventoryExternal
|
||||
JSL.l ItemSet_Powder
|
||||
LDY.w SpriteID, X ; Retrieve stored item type
|
||||
BNE +
|
||||
; if for any reason the item value is 0 reload it, just in case
|
||||
%GetPossiblyEncryptedItem(WitchItem, SpriteItemValues) : TAY
|
||||
+
|
||||
STZ.w ItemReceiptMethod ; item from NPC
|
||||
JSL.l Link_ReceiveItem
|
||||
JSL.l ItemSet_Powder
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
2597
invertedmaps.asm
2597
invertedmaps.asm
File diff suppressed because it is too large
Load Diff
1369
itemdatatables.asm
Normal file
1369
itemdatatables.asm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -2,11 +2,6 @@
|
||||
; Item Downgrade Fix
|
||||
;--------------------------------------------------------------------------------
|
||||
ItemDowngradeFix:
|
||||
JSR ItemDowngradeFixMain
|
||||
JSL CountChestKeyLong
|
||||
RTL
|
||||
|
||||
ItemDowngradeFixMain:
|
||||
JSL.l AddInventory
|
||||
BMI .dontWrite ; thing we wrote over part 1
|
||||
|
||||
@@ -34,7 +29,7 @@ ItemDowngradeFixMain:
|
||||
.done
|
||||
STA.b [Scrap00] ; thing we wrote over part 2
|
||||
.dontWrite
|
||||
RTS
|
||||
RTL
|
||||
.isPowerGloves
|
||||
.isBlueShield
|
||||
.isRedShield
|
||||
@@ -43,7 +38,7 @@ RTS
|
||||
.isBowAndArrows
|
||||
CMP.b [$00] : !BGE .done ; finished if we're upgrading
|
||||
LDA.b [$00] ; reload old value
|
||||
RTS
|
||||
RTL
|
||||
.isSilverArrowBow
|
||||
.isRedBoomerang
|
||||
.isMagicPowder
|
||||
@@ -54,10 +49,10 @@ RTS
|
||||
LDA.b [Scrap00] : BNE + ; don't upgrade if we already have the toggle for it
|
||||
PLA
|
||||
STA.b [Scrap00]
|
||||
RTS
|
||||
RTL
|
||||
+
|
||||
PLA
|
||||
RTS
|
||||
RTL
|
||||
.isSword
|
||||
PHA
|
||||
LDA.l HighestSword : STA.b Scrap04
|
||||
@@ -77,5 +72,5 @@ JMP .done
|
||||
INC.b Scrap00
|
||||
LDA.l HighestShield : STA.b [Scrap00]
|
||||
PLA
|
||||
RTS
|
||||
RTL
|
||||
;================================================================================
|
||||
|
||||
36
itemtext.asm
36
itemtext.asm
@@ -1,4 +1,4 @@
|
||||
org $328000
|
||||
org $B28000
|
||||
; You have found
|
||||
; the map of
|
||||
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
|
||||
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
|
||||
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
|
||||
@@ -111,3 +116,32 @@ Notice_Sewers:
|
||||
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
|
||||
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
|
||||
; the map of
|
||||
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 $75, $00, $43, $00, $37, $00, $34, $00, $FF, $00, $3C, $00, $30, $00, $3F, $00, $FF, $00, $3E, $00, $35
|
||||
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, $E3, $00, $D7, $00, $D4, $00, $FF, $00, $DC, $00, $D0, $00, $DF, $00, $FF, $00, $DE, $00, $D5
|
||||
dw #$7F7F
|
||||
|
||||
; You have found
|
||||
; the compass of
|
||||
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 $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 $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, $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
|
||||
|
||||
; Oh look! it's
|
||||
; the big key of
|
||||
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 $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 $74, $00, $B8, $00, $D7, $00, $FF, $00, $DB, $00, $DE, $00, $DE, $00, $DA, $00, $C7, $00, $FF, $00, $D8, $00, $E3, $00, $D8, $00, $E2
|
||||
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
|
||||
|
||||
; this is a
|
||||
; small key to
|
||||
Notice_SmallKeyOf:
|
||||
db $74, $00, $BD, $00, $37, $00, $38, $00, $42, $00, $FF, $00, $38, $00, $42, $00, $FF, $00, $30
|
||||
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 $74, $00, $BD, $00, $D7, $00, $D8, $00, $E2, $00, $FF, $00, $D8, $00, $E2, $00, $FF, $00, $D0
|
||||
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
|
||||
|
||||
; 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
|
||||
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
|
||||
|
||||
; dark world
|
||||
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
|
||||
|
||||
; Ganons Tower
|
||||
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
|
||||
|
||||
; Turtle Rock
|
||||
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
|
||||
|
||||
; Thieves Town
|
||||
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
|
||||
|
||||
; Tower of 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
|
||||
|
||||
; Ice Palace
|
||||
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
|
||||
|
||||
; Skull Woods
|
||||
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
|
||||
|
||||
; Misery 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
|
||||
|
||||
; Dark Palace
|
||||
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
|
||||
|
||||
; Swamp Palace
|
||||
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
|
||||
|
||||
; Castle Tower
|
||||
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
|
||||
|
||||
; Desert Palace
|
||||
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
|
||||
|
||||
; Eastern Palace
|
||||
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
|
||||
|
||||
; Hyrule 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
|
||||
|
||||
; Hyrule Castle
|
||||
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
|
||||
|
||||
; This Dungeon
|
||||
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
|
||||
dw #$7F7F
|
||||
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
|
||||
|
||||
; 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.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
|
||||
|
||||
SEP #$20
|
||||
JSL $00D7C8
|
||||
JSL $80D7C8
|
||||
LDA.b #$80 : STA.b HDMAENQ
|
||||
LDX.b #$04 ; bunny theme
|
||||
|
||||
@@ -245,10 +245,10 @@ RTL
|
||||
;
|
||||
; On entry, A = $8A (overworld area being loaded)
|
||||
Overworld_MosaicDarkWorldChecks:
|
||||
CMP.b #$40 : beq .checkCrystals
|
||||
CMP.b #$42 : beq .checkCrystals
|
||||
CMP.b #$50 : beq .checkCrystals
|
||||
CMP.b #$51 : bne .doFade
|
||||
CMP.b #$40 : BEQ .checkCrystals
|
||||
CMP.b #$42 : BEQ .checkCrystals
|
||||
CMP.b #$50 : BEQ .checkCrystals
|
||||
CMP.b #$51 : BNE .doFade
|
||||
|
||||
.checkCrystals
|
||||
LDA.l CrystalsField : CMP.b #$7F : BEQ .done
|
||||
|
||||
132
newhud.asm
132
newhud.asm
@@ -64,10 +64,8 @@ NewHUD_DrawArrows:
|
||||
|
||||
;================================================================================
|
||||
NewHUD_DrawGoal:
|
||||
LDA.w UpdateHUD : BEQ .no_goal
|
||||
|
||||
REP #$20
|
||||
|
||||
LDA.w UpdateHUD : BEQ .no_goal
|
||||
LDA.l GoalItemRequirement : BEQ .no_goal
|
||||
|
||||
LDA.l GoalItemIcon : STA.w HUDGoalIndicator
|
||||
@@ -172,13 +170,15 @@ NewHUD_DrawPrizeIcon:
|
||||
|
||||
LDA.l MapField
|
||||
AND.l DungeonItemMasks,X
|
||||
|
||||
BEQ .no_prize
|
||||
|
||||
.prize
|
||||
TYX
|
||||
LDA.l CrystalPendantFlags_2,X
|
||||
AND.w #$0040
|
||||
BIT.w #$0080
|
||||
BNE .no_icon
|
||||
|
||||
BIT.w #$0040
|
||||
BNE .crystal
|
||||
|
||||
LDY.w #!PTile
|
||||
@@ -186,6 +186,10 @@ NewHUD_DrawPrizeIcon:
|
||||
|
||||
.crystal
|
||||
LDY.w #!CTile
|
||||
BRA .draw_prize
|
||||
|
||||
.no_icon
|
||||
LDY.w #!BlankTile
|
||||
|
||||
.draw_prize
|
||||
STY.w HUDPrizeIcon
|
||||
@@ -221,8 +225,6 @@ NewHUD_DrawItemCounter:
|
||||
LDA.b $06 : TAX : STX.w HUDGoalIndicator+$04
|
||||
LDA.b $07 : TAX : STX.w HUDGoalIndicator+$06
|
||||
|
||||
|
||||
|
||||
;================================================================================
|
||||
DrawMagicMeter_mp_tilemap = $0DFE0F
|
||||
NewHUD_DrawMagicMeter:
|
||||
@@ -251,7 +253,6 @@ NewHUD_DrawMagicMeter:
|
||||
TDC
|
||||
.recolor
|
||||
TAX
|
||||
|
||||
LDA.l MagicMeterColorMasks,X
|
||||
|
||||
TYX
|
||||
@@ -361,8 +362,6 @@ HUDHex2Digit:
|
||||
|
||||
RTS
|
||||
|
||||
;===================================================================================================
|
||||
|
||||
HUDHex4Digit:
|
||||
JSL HexToDec
|
||||
|
||||
@@ -376,7 +375,6 @@ HUDHex4Digit:
|
||||
SEP #$20
|
||||
RTS
|
||||
|
||||
;================================================================================
|
||||
HUDHex2Digit_Long:
|
||||
JSR HUDHex2Digit
|
||||
REP #$20
|
||||
@@ -386,3 +384,115 @@ HUDHex4Digit_Long:
|
||||
JSR HUDHex4Digit
|
||||
REP #$20
|
||||
RTL
|
||||
|
||||
;================================================================================
|
||||
UpdateHearts:
|
||||
PHB
|
||||
REP #$20
|
||||
SEP #$10
|
||||
|
||||
LDX.b #$7E
|
||||
PHX
|
||||
PLB
|
||||
|
||||
LDA.w $7EF36C
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
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
|
||||
|
||||
JSR.w CheckHeartPalette
|
||||
|
||||
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 $7EF36D
|
||||
AND.w #$0007
|
||||
BEQ .skip_partial
|
||||
|
||||
CMP.w #$0005
|
||||
|
||||
JSR.w CheckHeartPalette
|
||||
BCS .more_than_half
|
||||
|
||||
INC
|
||||
|
||||
.more_than_half
|
||||
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
|
||||
|
||||
ColorAnimatedHearts:
|
||||
REP #$20
|
||||
LDA.l HUDHeartColors_index : ASL : TAX
|
||||
LDA.l HUDHeartColors_masks_game_hud,X
|
||||
ORA.l HeartFramesBaseTiles,X
|
||||
STA.b [Scrap00],Y
|
||||
SEP #$20
|
||||
RTL
|
||||
|
||||
HeartFramesBaseTiles:
|
||||
dw $20A3, $20A4, $20A3, $20A0
|
||||
|
||||
1561
newitems.asm
1561
newitems.asm
File diff suppressed because it is too large
Load Diff
37
npcitems.asm
37
npcitems.asm
@@ -47,23 +47,23 @@ ItemCheck_SickKid:
|
||||
RTL
|
||||
|
||||
ItemCheck_TreeKid:
|
||||
LDA.l NpcFlags : AND.b #$08 ; FluteBoy_Chillin - 73: LDA FluteEquipment
|
||||
LDA.l NpcFlags : AND.b #$08
|
||||
RTL
|
||||
|
||||
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
|
||||
|
||||
ItemCheck_TreeKid3:
|
||||
JSL $0DD030 ; FluteAardvark_Draw - thing we wrote over
|
||||
JSL $8DD030 ; FluteAardvark_Draw - thing we wrote over
|
||||
LDA.l NpcFlags : AND.b #$08
|
||||
BEQ .normal
|
||||
BRA .done
|
||||
BNE .done
|
||||
LDA.b #$05
|
||||
.normal
|
||||
.normal
|
||||
LDA.w SpriteActivity, X
|
||||
.done
|
||||
RTL
|
||||
.done
|
||||
RTL
|
||||
|
||||
ItemCheck_Sahasrala:
|
||||
LDA.l NpcFlags : AND.b #$10
|
||||
@@ -74,7 +74,7 @@ ItemCheck_Library:
|
||||
RTL
|
||||
|
||||
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
|
||||
|
||||
ItemCheck_Powder:
|
||||
@@ -133,7 +133,7 @@ RTL
|
||||
ItemSet_Mushroom:
|
||||
PHA
|
||||
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 +
|
||||
; if for any reason the item value is 0 reload it, just in case
|
||||
%GetPossiblyEncryptedItem(MushroomItem, SpriteItemValues) : TAY
|
||||
@@ -174,8 +174,11 @@ RTL
|
||||
; Randomize Zora King
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadZoraKingItemGFX:
|
||||
LDA.l $1DE1C3 ; location randomizer writes zora item to
|
||||
JML.l PrepDynamicTile
|
||||
LDA.l $9DE1C3 ; location randomizer writes zora item to
|
||||
JSL.l ResolveLootIDLong
|
||||
STA.w SpriteID,Y
|
||||
TYX
|
||||
JML.l PrepDynamicTile_loot_resolved
|
||||
;--------------------------------------------------------------------------------
|
||||
JumpToSplashItemTarget:
|
||||
LDA.w SpriteMovement, X
|
||||
@@ -186,18 +189,20 @@ JumpToSplashItemTarget:
|
||||
; Randomize Catfish
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadCatfishItemGFX:
|
||||
LDA.l $1DE185 ; location randomizer writes catfish item to
|
||||
JML PrepDynamicTile
|
||||
LDA.l $9DE185 ; location randomizer writes catfish item to
|
||||
JSL.l ResolveLootIDLong
|
||||
STA.w SpriteID, Y
|
||||
TYX
|
||||
JML.l PrepDynamicTile_loot_resolved
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawThrownItem:
|
||||
LDA.b OverworldIndex : CMP.b #$81 : BNE .catfish
|
||||
.zora
|
||||
LDA.b #$01 : STA.l RedrawFlag
|
||||
LDA.l $1DE1C3 ; location randomizer writes zora item to
|
||||
BRA .draw
|
||||
.catfish
|
||||
LDA.l $1DE185 ; location randomizer writes catfish item to
|
||||
.draw
|
||||
LDA.w SpriteID,X
|
||||
JML DrawDynamicTile
|
||||
;--------------------------------------------------------------------------------
|
||||
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:
|
||||
LDA.b GameSubMode
|
||||
|
||||
JSL.l UseImplicitRegIndexedLongJumpTable
|
||||
JSL.l JumpTableLong
|
||||
|
||||
dl Password_BeginInit ; 0
|
||||
dl Password_EndInit ; 1
|
||||
|
||||
@@ -51,70 +51,6 @@ GetCrystalNumber:
|
||||
PLX
|
||||
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:
|
||||
PHP
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
@@ -175,7 +111,7 @@ CheckCloseItemMenu:
|
||||
LDA.l MenuCollapse : BNE +
|
||||
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
|
||||
;================================================================================
|
||||
ShowDungeonItems:
|
||||
@@ -187,19 +123,23 @@ ShowDungeonItems:
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
UpdateKeys:
|
||||
PHX : PHP
|
||||
SEP #$30 ; set 8-bit accumulator & index registers
|
||||
LDA.w DungeonID : CMP.b #$1F : !BGE .skip
|
||||
LSR : TAX ; get dungeon index and store to X
|
||||
LDA.l CurrentSmallKeys : STA.l DungeonKeys, X
|
||||
|
||||
CPX.b #$00 : BNE +
|
||||
STA.l HyruleCastleKeys ; copy HC to sewers
|
||||
+ : CPX.b #$01 : BNE +
|
||||
STA.l SewerKeys ; copy sewers to HC
|
||||
+
|
||||
.skip
|
||||
PLP : PLX
|
||||
PHX : PHP
|
||||
SEP #$30 ; set 8-bit accumulator & index registers
|
||||
LDA.w DungeonID : CMP.b #$1F : !BLT .skip
|
||||
|
||||
LSR : TAX ; get dungeon index and store to X
|
||||
|
||||
LDA.l CurrentSmallKeys ; load current key count
|
||||
STA.l DungeonKeys, X ; save to main counts
|
||||
|
||||
CPX.b #$00 : BNE +
|
||||
STA.l HyruleCastleKeys ; copy HC to sewers
|
||||
+ : CPX.b #$01 : BNE +
|
||||
STA.l SewerKeys ; copy sewers to HC
|
||||
+
|
||||
.skip
|
||||
JSL.l PostItemGet
|
||||
PLP : PLX
|
||||
RTL
|
||||
;$37C = Sewer Passage
|
||||
;$37D = Hyrule Castle
|
||||
@@ -284,7 +224,7 @@ DrawHUDDungeonItems:
|
||||
|
||||
|
||||
.dungeon_bitmasks
|
||||
dw $4000 ; Hyrule Castle
|
||||
dw $C000 ; Hyrule Castle
|
||||
dw $2000 ; Eastern
|
||||
dw $1000 ; Desert
|
||||
dw $0020 ; Hera
|
||||
@@ -690,3 +630,38 @@ RestoreMenu_SetSubModule:
|
||||
LDA.b #$03 : STA.w SubModuleInterface
|
||||
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
|
||||
|
||||
ReadCharacterFromPlayerName: ;Only for use on Name Screen
|
||||
LDA.l ExtendedFileNameSRAM, X
|
||||
LDA.l ExtendedFileNameSRAM, X
|
||||
CPX.w #$0008 : !BGE +
|
||||
LDA.l FileNameVanillaSRAM, X ;what we wrote over
|
||||
+
|
||||
@@ -59,7 +59,7 @@ db $98, $a0, $a8, $b0
|
||||
db $c0, $c8, $d0, $d8
|
||||
|
||||
|
||||
NumberStripes:
|
||||
NewNameStripes:
|
||||
dw $AB66, $1100 ; 0-4 top
|
||||
dw $1D40, $0188, $1D41, $0188, $1D42, $0188, $1D43, $0188
|
||||
dw $1D44
|
||||
@@ -72,15 +72,36 @@ dw $1D49
|
||||
dw $0B67, $1100 ; 5-9 bottom
|
||||
dw $1D55, $0188, $1D56, $0188, $1D57, $0188, $1D58, $0188
|
||||
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
|
||||
|
||||
TransferNumericStripes:
|
||||
TransferNewNameStripes:
|
||||
REP #$30
|
||||
LDA.w GameMode : CMP.w #$0204 : BNE .exit
|
||||
SEP #$20
|
||||
LDA.b #NumberStripes>>0 : STA.b $00
|
||||
LDA.b #NumberStripes>>8 : STA.b $01
|
||||
LDA.b #NumberStripes>>16 : STA.b $02 : STA.w DMA1ADDRB
|
||||
LDA.b #NewNameStripes>>0 : STA.b $00
|
||||
LDA.b #NewNameStripes>>8 : STA.b $01
|
||||
LDA.b #NewNameStripes>>16 : STA.b $02 : STA.w DMA1ADDRB
|
||||
STZ.b $06 : LDY.w #$0000
|
||||
.check_next
|
||||
LDA.b [$00],Y : BPL .next_stripe
|
||||
|
||||
@@ -11,7 +11,7 @@ QuickSwap:
|
||||
LDA.l QuickSwapFlag : BEQ .done
|
||||
LDA.w ItemCursor : BEQ .done ; Skip everything if we don't have any items
|
||||
|
||||
LDY.b #$14
|
||||
LDY.b #$14
|
||||
PHX
|
||||
XBA ; restore the stashed value
|
||||
CMP.b #$30 : BNE +
|
||||
|
||||
65
ram.asm
65
ram.asm
@@ -48,6 +48,8 @@ NMIHUD = $7E0016 ; during NMI.
|
||||
NMIINCR = $7E0017 ;
|
||||
NMIUP1100 = $7E0018 ;
|
||||
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
|
||||
IndoorsFlag = $7E001B ; $00 = Outdoors | $01 = Indoors
|
||||
MAINDESQ = $7E001C ; PPU register queues written during NMI
|
||||
@@ -186,6 +188,15 @@ RaceGameFlag = $7E021B ;
|
||||
;
|
||||
MessageJunk = $7E0223 ; Zeroed but never used (?)
|
||||
;
|
||||
ShopPurchaseFlag = $7E0224 ; $01 = Shop purchase item receipt.
|
||||
;CoolScratch = $7E0224 ; 0x5C bytes of free ram
|
||||
ItemQueuePtr = $7E0226 ; Pointer into Item GFX and VRAM target queues. Word length.
|
||||
SpriteID = $7E0230 ; 0x0A bytes. Receipt ID for main loop sprite we're handling.
|
||||
ItemGFXQueue = $7E0230 ; Pointers to decompressed item tiles deferred to NMI loading. $10 bytes
|
||||
ItemTargetQueue = $7E0240 ; Pointers to VRAM targets for ItemGFXQueue. $10 bytes
|
||||
AncillaVelocityZ = $7E0294 ; 0x0A bytes
|
||||
AncillaZCoord = $7E029E ; 0x0A bytes
|
||||
;
|
||||
ItemReceiptID = $7E02D8 ;
|
||||
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.
|
||||
PoofTimer = $7E02E2 ; Countdown timer for poofing.
|
||||
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 ;
|
||||
;
|
||||
@@ -221,6 +232,8 @@ NoDamage = $7E037B ; Prevents Link from receiving damage.
|
||||
;
|
||||
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.
|
||||
;
|
||||
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
|
||||
;
|
||||
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)
|
||||
; 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
|
||||
@@ -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
|
||||
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.
|
||||
;
|
||||
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.
|
||||
OverlordXLow = $7E0B08 ; $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.
|
||||
;
|
||||
AncillaCoordYLow = $7E0BFA ;
|
||||
AncillaCoordXLow = $7E0C04 ;
|
||||
AncillaCoordYHigh = $7E0C0E ;
|
||||
AncillaCoordXHigh = $7E0C18 ;
|
||||
;
|
||||
AncillaVelocityY = $7E0C22 ; $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.
|
||||
;
|
||||
AncillaLayer = $7E0C7C ;
|
||||
;
|
||||
SpriteBump = $7E0CD2 ; See symbols_wram.asm. $10 bytes.
|
||||
;
|
||||
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
|
||||
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
|
||||
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)
|
||||
;
|
||||
@@ -333,6 +364,8 @@ SpriteZCoord = $7E0F70 ;
|
||||
SpriteVelocityZ = $7E0F80 ;
|
||||
SpriteSubPixelZ = $7E0F90 ;
|
||||
;
|
||||
CurrentSpriteSlot = $7E0FA0 ; Holds the current sprite/ancilla's index
|
||||
;
|
||||
FreezeSprites = $7E0FC1 ; "Seems to freeze sprites"
|
||||
;
|
||||
PrizePackIndexes = $7E0FC7 ; $07 bytes. One for each prize pack.
|
||||
@@ -383,6 +416,8 @@ ScratchBufferV = $7E1EB0 ; Volatile scratch buffer. Can clobber at will
|
||||
|
||||
TileUploadBuffer = $7EA180 ; 0x300 bytes
|
||||
;
|
||||
ItemGetGFX = $7EBD40 ; Item receipt graphics location
|
||||
;
|
||||
RoomFade = $7EC005 ; Flags fade to black on room transitions. Word length.
|
||||
FadeTimer = $7EC007 ; Timer for transition fading and mosaics. Word length.
|
||||
FadeDirection = $7EC009 ; Word length
|
||||
@@ -448,6 +483,9 @@ TotalItemCountTiles = $7ECB00 ; Cached total item count tiles for HUD. Four
|
||||
;--------------------------------------------------------------------------------
|
||||
DecompressionBuffer = $7F0000 ; Decompression Buffer. $2000 bytes.
|
||||
|
||||
DecompBuffer2 = $7F4000 ; Another buffer
|
||||
|
||||
|
||||
base $7F5000
|
||||
RedrawFlag: skip 1 ;
|
||||
skip 2 ; Unused
|
||||
@@ -464,15 +502,16 @@ BossKills: skip 1 ;
|
||||
LagTime: skip 4 ; Computed during stats preparation for display
|
||||
RupeesCollected: 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
|
||||
skip 3 ;
|
||||
skip 9 ;
|
||||
; Shop Block $7F5050 - $7F506F
|
||||
ShopId: skip 1 ; Shop ID. Used for indexing and loading inventory for custom shops
|
||||
ShopType: skip 1 ; Shop type. $FF = vanilla shop
|
||||
; t - - - - - - -
|
||||
; t = Take-any
|
||||
; t d a v - - q q
|
||||
; 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:
|
||||
; [Item ID][Price low][Price High][Purchase Count]
|
||||
ShopState: skip 1 ; - - - - - l c r | Bitfield that determines whether to draw an item
|
||||
@@ -551,13 +590,17 @@ CompassTotalsWRAM: skip $10 ; \ Compass and map dungeon HUD display total
|
||||
MapTotalsWRAM: skip $10 ; / on boot for tracking.
|
||||
skip $30 ; Reserved for general dungeon tracking data. May have over
|
||||
; allocated here. Feel free to reassign.
|
||||
skip $40 ; Unused
|
||||
MapCompassFlag: skip 2 ; Used to flag overworld map drawing.
|
||||
skip $3E ; Unused
|
||||
skip $260 ; Unused
|
||||
DialogBuffer: skip $100 ; Dialog Buffer
|
||||
;
|
||||
PrivateBlockWRAM = $7F7700 ; Reserved for 3rd party use. $500 bytes.
|
||||
; See also: $200 bytes at PrivateBlockPersistent, copied to SRAM.
|
||||
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.
|
||||
MiniGameTimeFinal = $7FFE04 ; Final mini game time. 32 bits.
|
||||
@@ -706,7 +749,7 @@ endmacro
|
||||
%assertRAM(ForceSwordUp, $7E03EF)
|
||||
%assertRAM(FluteTimer, $7E03F0)
|
||||
%assertRAM(YButtonOverride, $7E03FC)
|
||||
%assertRAM(ItemsTaken, $7E0403)
|
||||
%assertRAM(RoomItemsTaken, $7E0403)
|
||||
%assertRAM(DungeonID, $7E040C)
|
||||
%assertRAM(LayerAdjustment, $7E047A)
|
||||
%assertRAM(RoomIndexMirror, $7E048E)
|
||||
@@ -725,6 +768,9 @@ endmacro
|
||||
%assertRAM(TileMapTile32, $7E0698)
|
||||
%assertRAM(SkipOAM, $7E0710)
|
||||
%assertRAM(OWScreenSize, $7E0712)
|
||||
%assertRAM(OAMBuffer, $7E0800)
|
||||
%assertRAM(OAMBuffer2, $7E0A00)
|
||||
%assertRAM(TransparencyFlag, $7E0ABD)
|
||||
%assertRAM(OWTransitionFlag, $7E0ABF)
|
||||
%assertRAM(TreePullKills, $7E0CFB)
|
||||
%assertRAM(TreePullHits, $7E0CFC)
|
||||
@@ -741,6 +787,7 @@ endmacro
|
||||
%assertRAM(AncillaVelocityX, $7E0C2C)
|
||||
%assertRAM(AncillaID, $7E0C4A)
|
||||
%assertRAM(AncillaGet, $7E0C5E)
|
||||
%assertRAM(AncillaLayer, $7E0C7C)
|
||||
%assertRAM(SpriteBump, $7E0CD2)
|
||||
%assertRAM(SpritePosYLow, $7E0D00)
|
||||
%assertRAM(SpritePosXLow, $7E0D10)
|
||||
@@ -799,6 +846,7 @@ endmacro
|
||||
%assertRAM(SpriteZCoord, $7E0F70)
|
||||
%assertRAM(SpriteVelocityZ, $7E0F80)
|
||||
%assertRAM(SpriteSubPixelZ, $7E0F90)
|
||||
%assertRAM(CurrentSpriteSlot, $7E0FA0)
|
||||
%assertRAM(FreezeSprites, $7E0FC1)
|
||||
%assertRAM(PrizePackIndexes, $7E0FC7)
|
||||
%assertRAM(SpriteCoordCacheX, $7E0FD8)
|
||||
@@ -918,6 +966,7 @@ endmacro
|
||||
%assertRAM(TxStatus, $7F53FF)
|
||||
%assertRAM(CompassTotalsWRAM, $7F5410)
|
||||
%assertRAM(MapTotalsWRAM, $7F5420)
|
||||
%assertRAM(MapCompassFlag, $7F5460)
|
||||
%assertRAM(DialogBuffer, $7F5700)
|
||||
%assertRAM(MiniGameTime, $7FFE00)
|
||||
%assertRAM(MiniGameTimeFinal, $7FFE04)
|
||||
|
||||
39
rngfixes.asm
39
rngfixes.asm
@@ -21,7 +21,7 @@ RigChestRNG:
|
||||
RTL
|
||||
.forceHeart
|
||||
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
|
||||
RTL
|
||||
.notHeart
|
||||
@@ -35,9 +35,8 @@ RTL
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
FixChestCounterForChestGame:
|
||||
JSL.l DecrementItemCounter
|
||||
JSL.l $0DBA71
|
||||
RTL
|
||||
JSL DecrementItemCounter
|
||||
JML $8DBA71
|
||||
;--------------------------------------------------------------------------------
|
||||
RNG_Lanmolas1:
|
||||
LDA.b #$00 : BRA _rng_done
|
||||
@@ -129,20 +128,20 @@ InitRNGPointerTable:
|
||||
PLP : PLX
|
||||
RTL
|
||||
.rngDefaults
|
||||
dw #$0000 ; 00 = Lanmolas 1
|
||||
dw #$0040 ; 01 = Moldorm 1
|
||||
dw #$0080 ; 02 = Agahnim 1
|
||||
dw #$00C0 ; 03 = Helmasaur
|
||||
dw #$0100 ; 04 = Arrghus
|
||||
dw #$0140 ; 05 = Mothula
|
||||
dw #$0180 ; 06 = Kholdstare
|
||||
dw #$01C0 ; 07 = Vitreous
|
||||
dw #$0200 ; 08 = Trinexx
|
||||
dw #$0240 ; 09 = Lanmolas 2
|
||||
dw #$0280 ; 10 = Moldorm 2
|
||||
dw #$02C0 ; 11 = Agahnim 2
|
||||
dw #$0300 ; 12 = Agahnim 2 Phantoms
|
||||
dw #$0340 ; 13 = Ganon
|
||||
dw #$0380 ; 14 = Ganon Extra Warp
|
||||
dw #$03C0 ; 15 = Standard Escape Enemy Drops
|
||||
dw $0000 ; 00 = Lanmolas 1
|
||||
dw $0040 ; 01 = Moldorm 1
|
||||
dw $0080 ; 02 = Agahnim 1
|
||||
dw $00C0 ; 03 = Helmasaur
|
||||
dw $0100 ; 04 = Arrghus
|
||||
dw $0140 ; 05 = Mothula
|
||||
dw $0180 ; 06 = Kholdstare
|
||||
dw $01C0 ; 07 = Vitreous
|
||||
dw $0200 ; 08 = Trinexx
|
||||
dw $0240 ; 09 = Lanmolas 2
|
||||
dw $0280 ; 10 = Moldorm 2
|
||||
dw $02C0 ; 11 = Agahnim 2
|
||||
dw $0300 ; 12 = Agahnim 2 Phantoms
|
||||
dw $0340 ; 13 = Ganon
|
||||
dw $0380 ; 14 = Ganon Extra Warp
|
||||
dw $03C0 ; 15 = Standard Escape Enemy Drops
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
@@ -7,7 +7,7 @@ LoadRoomHook:
|
||||
LDX.b RoomIndex ; Room ID
|
||||
LDA.l RoomCallbackTable, X
|
||||
SEP #$10 ; 8 bit XY
|
||||
JSL UseImplicitRegIndexedLongJumpTable
|
||||
JSL JumpTableLong
|
||||
; Callback routines:
|
||||
dl NoCallback ; 00
|
||||
dl IcePalaceBombosSE ; 01
|
||||
|
||||
177
save.asm
177
save.asm
@@ -1,60 +1,74 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
WriteSaveChecksumAndBackup:
|
||||
LDX.w #$0000 : TXA : - ; Checksum first $04FE bytes
|
||||
CLC : ADC.l SaveDataWRAM, X
|
||||
INX #2
|
||||
CPX.w #$04FE : BNE -
|
||||
LDX.w #$0000 : - ; Checksum extended save data
|
||||
CLC : ADC.l ExtendedFileNameWRAM, X
|
||||
INX #2
|
||||
CPX.w #$0FFE : BNE -
|
||||
TDC
|
||||
CLC
|
||||
LDX.w #$004FC
|
||||
-
|
||||
ADC.l CartridgeSRAM, X
|
||||
DEX #2
|
||||
BPL -
|
||||
LDX.w #$0FFE
|
||||
-
|
||||
ADC.l ExtendedFileNameSRAM, X
|
||||
DEX #2
|
||||
BPL -
|
||||
STA.b Scrap00
|
||||
LDA.w #$5A5A
|
||||
SEC : SBC.b Scrap00
|
||||
STA.l InverseChecksumSRAM
|
||||
|
||||
|
||||
.backup_save
|
||||
PHB
|
||||
LDA.w #$14FF ; \
|
||||
LDX.w #CartridgeSRAM&$FFFF ; | Copies $1500 bytes from beginning of cart SRAM to
|
||||
LDY.w #SaveBackupSRAM&$FFFF ; | $704000
|
||||
MVN !SRAMBank, !SRAMBank ; /
|
||||
LDA.w #$14FF
|
||||
LDX.w #CartridgeSRAM
|
||||
LDY.w #SaveBackupSRAM
|
||||
MVN CartridgeSRAM>>16, CartridgeSRAM>>16
|
||||
PLB
|
||||
|
||||
TDC
|
||||
TAX
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
ValidateSRAM:
|
||||
REP #$30
|
||||
LDX.w #$0000 : TXA : - ; Checksum first $04FE bytes
|
||||
CLC : ADC.l CartridgeSRAM, X
|
||||
INX #2
|
||||
CPX.w #$04FE : BNE -
|
||||
LDX.w #$0000 : - ; Checksum extended save data
|
||||
CLC : ADC.l ExtendedFileNameSRAM, X
|
||||
INX #2
|
||||
CPX.w #$0FFE : BNE -
|
||||
TDC
|
||||
CLC
|
||||
LDX.w #$04FC
|
||||
-
|
||||
ADC.l CartridgeSRAM, X
|
||||
DEX #2
|
||||
BPL -
|
||||
LDX.w #$0FFE
|
||||
-
|
||||
ADC.l ExtendedFileNameSRAM, X
|
||||
DEX #2
|
||||
BPL -
|
||||
STA.b Scrap00
|
||||
LDA.w #$5A5A
|
||||
SEC : SBC.b Scrap00
|
||||
CMP.l InverseChecksumSRAM : BEQ .goodchecksum
|
||||
LDX.w #$0000 : TXA : - ; Do the same for the backup save
|
||||
CLC : ADC.l SaveBackupSRAM, X
|
||||
INX #2
|
||||
CPX.w #$04FE : BNE -
|
||||
LDX.w #$0000 : -
|
||||
CLC : ADC.l SaveBackupSRAM+$500, X
|
||||
INX #2
|
||||
CPX.w #$0FFE : BNE -
|
||||
TDC
|
||||
LDX.w #$04FC
|
||||
-
|
||||
ADC.l SaveBackupSRAM, X
|
||||
DEX #2
|
||||
BPL -
|
||||
LDX.w #$0FFE
|
||||
-
|
||||
ADC.l SaveBackupSRAM+$500, X
|
||||
DEX #2
|
||||
BPL -
|
||||
STA.b Scrap00
|
||||
LDA.w #$5A5A
|
||||
SEC : SBC.b Scrap00
|
||||
CMP.l SaveBackupSRAM+$4FE : BEQ +
|
||||
TDC : STA.l FileValiditySRAM ; Delete save by way of zeroing validity marker
|
||||
BRA .goodchecksum : +
|
||||
TDC : STA.l FileValiditySRAM ; Delete save
|
||||
BRA .goodchecksum
|
||||
+
|
||||
PHB
|
||||
LDA.w #$14FF ; \
|
||||
LDX.w #SaveBackupSRAM&$FFFF ; | Copies $1500 bytes from backup on cart SRAM to
|
||||
LDY.w #CartridgeSRAM&$FFFF ; | main save location at $700000
|
||||
MVN !SRAMBank, !SRAMBank ; /
|
||||
LDA.w #$14FF
|
||||
LDX.w #SaveBackupSRAM
|
||||
LDY.w #CartridgeSRAM
|
||||
MVN CartridgeSRAM>>16, CartridgeSRAM>>16
|
||||
PLB
|
||||
|
||||
.goodchecksum
|
||||
@@ -146,88 +160,23 @@ RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
CopyExtendedSaveFileToWRAM:
|
||||
PHA
|
||||
SEP #$30
|
||||
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
|
||||
;--------------------------------------------------------------------------------
|
||||
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
|
||||
PHB
|
||||
LDA.w #$0FFF
|
||||
LDX.w #ExtendedSaveDataSRAM
|
||||
LDY.w #ExtendedSaveDataWRAM
|
||||
MVN ExtendedSaveDataWRAM>>16, CartridgeSRAM>>16
|
||||
PLB
|
||||
PLA
|
||||
STA.l $7EC00D ; what we wrote over
|
||||
STA.l $7EC00D ; What we wrote over. Keep this write last.
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
CopyExtendedWRAMSaveFileToSRAM:
|
||||
PHA
|
||||
PHB
|
||||
SEP #$30
|
||||
LDA.b #$00 : PHA : PLB
|
||||
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
|
||||
;--------------------------------------------------------------------------------
|
||||
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
|
||||
LDA.w #$0FFF
|
||||
LDX.w #ExtendedSaveDataSRAM
|
||||
LDY.w #ExtendedSaveDataWRAM
|
||||
MVN CartridgeSRAM>>16, ExtendedSaveDataWRAM>>16
|
||||
PLB
|
||||
PLA
|
||||
TDC
|
||||
TAX
|
||||
RTL
|
||||
|
||||
297
shopkeeper.asm
297
shopkeeper.asm
@@ -1,39 +1,7 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
; 291 - Moldorm Cave
|
||||
; 286 - Northeast Dark Swamp Cave
|
||||
;--------------------------------------------------------------------------------
|
||||
!FREE_TILE_BUFFER = $1180
|
||||
; A = Tile ID
|
||||
macro UploadOAM(dest)
|
||||
PHA : PHP
|
||||
!FREE_TILE = $5C60
|
||||
!FREE_TILE_ALT = $5A40
|
||||
|
||||
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
|
||||
; $0C-$0D : Value to Display
|
||||
@@ -162,10 +130,13 @@ SpritePrep_ShopKeeper:
|
||||
PLY : +++
|
||||
|
||||
PHX : PHY
|
||||
PHX : TYX : LDA.l ShopInventory, X : PLX : TAY
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
PHX : TYX : LDA.l ShopInventory, X : PLX
|
||||
SEP #$10
|
||||
JSL.l ResolveLootIDLong
|
||||
TAY
|
||||
REP #$30
|
||||
LDA.b 1,s : TAX : LDA.l .tile_offsets, X : TAX
|
||||
JSR LoadTile
|
||||
JSR.w SetupTileTransfer
|
||||
PLY : PLX
|
||||
INY #4
|
||||
|
||||
@@ -173,11 +144,13 @@ SpritePrep_ShopKeeper:
|
||||
INX #8
|
||||
JMP -
|
||||
.stop
|
||||
REP #$20
|
||||
LDA.w ItemQueuePtr
|
||||
DEC #2
|
||||
AND.w #$00E
|
||||
STA.w ItemQueuePtr
|
||||
SEP #$20
|
||||
|
||||
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
|
||||
LDA.l ShopType : BIT.b #$20 : BEQ .notTakeAll ; Take-all
|
||||
.takeAll
|
||||
@@ -217,122 +190,42 @@ dw $0100, $0000
|
||||
;--------------------------------------------------------------------------------
|
||||
; X - Tile Buffer Offset
|
||||
; Y - Item ID
|
||||
LoadTile:
|
||||
TXA : !ADD.w #!FREE_TILE_BUFFER : STA.l TileUploadOffsetOverride ; load offset from X
|
||||
SEP #$30 ; set 8-bit accumulator & index registers
|
||||
TYA ; load item ID from Y
|
||||
JSL.l GetSpriteID ; convert loot id to sprite id
|
||||
JSL.l GetAnimatedSpriteTile_variable
|
||||
SetupTileTransfer:
|
||||
LDA.l ShopType : BIT.w #$0010 : BNE .alt_vram
|
||||
TXA : LSR #2
|
||||
CLC : ADC.w #!FREE_TILE
|
||||
BRA .store_target
|
||||
.alt_vram
|
||||
TXA : LSR #2
|
||||
CLC : ADC.w #!FREE_TILE_ALT
|
||||
.store_target
|
||||
LDX.w ItemQueuePtr
|
||||
STA.w ItemTargetQueue,X
|
||||
|
||||
TYA : ASL : TAX
|
||||
LDA.l StandingItemGraphicsOffsets,X
|
||||
LDX.w ItemQueuePtr
|
||||
STA.w ItemGFXQueue,X
|
||||
|
||||
TXA
|
||||
INC #2
|
||||
AND.w #$000E
|
||||
STA.w ItemQueuePtr
|
||||
TDC
|
||||
REP #$10 ; set 16-bit index registers
|
||||
SEP #$20
|
||||
RTS
|
||||
;--------------------------------------------------------------------------------
|
||||
;ShopInventory, X
|
||||
;[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:
|
||||
PLA : PLA : PLA
|
||||
LDA.b #ShopkeeperJumpTable>>16 : PHA
|
||||
LDA.b #ShopkeeperJumpTable>>8 : PHA
|
||||
LDA.b #ShopkeeperJumpTable : PHA
|
||||
LDA.w SpriteItemType, X
|
||||
JML.l UseImplicitRegIndexedLocalJumpTable
|
||||
JML.l JumpTableLocal
|
||||
;--------------------------------------------------------------------------------
|
||||
Sprite_ShopKeeper:
|
||||
|
||||
@@ -476,59 +369,59 @@ Shopkeeper_SetupHitboxes:
|
||||
RTS
|
||||
|
||||
Shopkeeper_BuyItem:
|
||||
PHX : PHY
|
||||
TYX
|
||||
PHX : PHY
|
||||
TYX
|
||||
|
||||
LDA.l ShopInventory, X
|
||||
CMP.b #$0E : BEQ .refill ; Bee Refill
|
||||
CMP.b #$2E : BEQ .refill ; Red Potion Refill
|
||||
CMP.b #$2F : BEQ .refill ; Green Potion Refill
|
||||
CMP.b #$30 : BEQ .refill ; Blue Potion Refill
|
||||
BRA +
|
||||
.refill
|
||||
JSL.l Sprite_GetEmptyBottleIndex : BMI .full_bottles
|
||||
+
|
||||
LDA.l ShopInventory, X
|
||||
CMP.b #$0E : BEQ .refill ; Bee Refill
|
||||
CMP.b #$2E : BEQ .refill ; Red Potion Refill
|
||||
CMP.b #$2F : BEQ .refill ; Green Potion Refill
|
||||
CMP.b #$30 : BEQ .refill ; Blue Potion Refill
|
||||
BRA +
|
||||
.refill
|
||||
JSL.l Sprite_GetEmptyBottleIndex : BMI .full_bottles
|
||||
+
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
.cant_afford
|
||||
LDA.b #$7A
|
||||
LDY.b #$01
|
||||
JSL.l Sprite_ShowMessageUnconditional
|
||||
LDA.b #$3C : STA.w SFX2 ; error sound
|
||||
JMP .done
|
||||
.full_bottles
|
||||
LDA.b #$6B
|
||||
LDY.b #$01
|
||||
JSL.l Sprite_ShowMessageUnconditional
|
||||
LDA.b #$3C : STA.w SFX2 ; error sound
|
||||
JMP .done
|
||||
.buy
|
||||
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
|
||||
++
|
||||
LDA.l ShopInventory, X : TAY : JSL.l Link_ReceiveItem
|
||||
LDA.l ShopInventory+3, X : INC : STA.l ShopInventory+3, X
|
||||
.cant_afford
|
||||
LDA.b #$7A
|
||||
LDY.b #$01
|
||||
JSL.l Sprite_ShowMessageUnconditional
|
||||
LDA.b #$3C : STA.w SFX2 ; error sound
|
||||
JMP .done
|
||||
.full_bottles
|
||||
LDA.b #$6B : LDY.b #$01
|
||||
JSL.l Sprite_ShowMessageUnconditional
|
||||
LDA.b #$3C : STA.w SFX2 ; error sound
|
||||
JMP .done
|
||||
.buy
|
||||
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
|
||||
++
|
||||
INC.w ShopPurchaseFlag
|
||||
LDA.l ShopInventory, X : TAY : JSL.l Link_ReceiveItem
|
||||
LDA.l ShopInventory+3, X : INC : STA.l ShopInventory+3, X
|
||||
|
||||
TXA : LSR #2 : TAX
|
||||
LDA.l ShopType : BIT.b #$80 : BNE +
|
||||
LDA.l ShopState : ORA.w Shopkeeper_ItemMasks, X : STA.l ShopState
|
||||
PHX
|
||||
TXA : !ADD ShopSRAMIndex : TAX
|
||||
LDA.l PurchaseCounts, X : INC : BEQ +++ : STA.l PurchaseCounts, X : +++
|
||||
PLX
|
||||
BRA ++
|
||||
+ ; Take-any
|
||||
BIT.b #$20 : BNE .takeAll
|
||||
.takeAny
|
||||
LDA.l ShopState : ORA.b #$07 : STA.l ShopState
|
||||
PHX : LDA.l ShopSRAMIndex : TAX : LDA.b #$01 : STA.l PurchaseCounts, X : PLX
|
||||
BRA ++
|
||||
.takeAll
|
||||
LDA.l ShopState : ORA.w Shopkeeper_ItemMasks, X : STA.l ShopState
|
||||
PHX : LDA.l ShopSRAMIndex : TAX : LDA.l ShopState : STA.l PurchaseCounts, X : PLX
|
||||
++
|
||||
TXA : LSR #2 : TAX
|
||||
LDA.l ShopType : BIT.b #$80 : BNE +
|
||||
LDA.l ShopState : ORA.w Shopkeeper_ItemMasks, X : STA.l ShopState
|
||||
PHX
|
||||
TXA : !ADD ShopSRAMIndex : TAX
|
||||
LDA.l PurchaseCounts, X : INC : BEQ +++ : STA.l PurchaseCounts, X : +++
|
||||
PLX
|
||||
BRA ++
|
||||
+ ; Take-any
|
||||
BIT.b #$20 : BNE .takeAll
|
||||
.takeAny
|
||||
LDA.l ShopState : ORA.b #$07 : STA.l ShopState
|
||||
PHX : LDA.l ShopSRAMIndex : TAX : LDA.b #$01 : STA.l PurchaseCounts, X : PLX
|
||||
BRA ++
|
||||
.takeAll
|
||||
LDA.l ShopState : ORA.w Shopkeeper_ItemMasks, X : STA.l ShopState
|
||||
PHX : LDA.l ShopSRAMIndex : TAX : LDA.l ShopState : STA.l PurchaseCounts, X : PLX
|
||||
++
|
||||
.done
|
||||
PLY : PLX
|
||||
RTS
|
||||
@@ -668,6 +561,8 @@ Shopkeeper_DrawNextItem:
|
||||
PLY
|
||||
|
||||
LDA.l ShopInventory, X ; get item id
|
||||
JSL.l ResolveLootIDLong
|
||||
STA.b Scrap0D
|
||||
CMP.b #$2E : BNE + : BRA .potion
|
||||
+ CMP.b #$2F : BNE + : BRA .potion
|
||||
+ CMP.b #$30 : BEQ .potion
|
||||
@@ -685,19 +580,25 @@ Shopkeeper_DrawNextItem:
|
||||
|
||||
STA.l SpriteOAM+4
|
||||
|
||||
LDA.l ShopInventory, X ; get item palette
|
||||
JSL.l GetSpritePalette : STA.l SpriteOAM+5
|
||||
LDA.b Scrap0D
|
||||
PHX
|
||||
JSL.l GetSpritePalette_resolved : STA.l SpriteOAM+5
|
||||
PLX
|
||||
|
||||
LDA.b #$00 : STA.l SpriteOAM+6
|
||||
|
||||
LDA.l ShopInventory, X ; get item palette
|
||||
JSL.l IsNarrowSprite : BCS .narrow
|
||||
LDA.b Scrap0D
|
||||
PHX
|
||||
TAX
|
||||
LDA.l SpriteProperties_standing_width,X : BEQ .narrow
|
||||
.full
|
||||
PLX
|
||||
LDA.b #$02
|
||||
STA.l SpriteOAM+7
|
||||
LDA.b #$01
|
||||
BRA ++
|
||||
.narrow
|
||||
PLX
|
||||
LDA.b #$00
|
||||
STA.l SpriteOAM+7
|
||||
JSR.w PrepNarrowLower
|
||||
|
||||
106
spriteswap.asm
106
spriteswap.asm
@@ -2,23 +2,23 @@ org $008A01 ; 0xA01 - Bank00.asm (LDA.b #$10 : STA $4304 : STA $4314 : STA $4324
|
||||
LDA.b PlayerSpriteBank
|
||||
|
||||
org $1BEDF9
|
||||
JSL SpriteSwap_Palette_ArmorAndGloves ;4bytes
|
||||
RTL ;1byte
|
||||
NOP #$01
|
||||
JSL SpriteSwap_Palette_ArmorAndGloves ; 4bytes
|
||||
RTL ; 1byte
|
||||
NOP
|
||||
|
||||
org $1BEE1B
|
||||
JSL SpriteSwap_Palette_ArmorAndGloves_part_two
|
||||
RTL
|
||||
|
||||
!BANK_BASE = $29
|
||||
!BANK_BASE = $A9
|
||||
|
||||
org $BF8000
|
||||
SwapSpriteIfNecessary:
|
||||
PHP
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
LDA.l SpriteSwapper : BEQ + : !ADD #!BANK_BASE : CMP.b PlayerSpriteBank : BEQ +
|
||||
LDA.l SpriteSwapper : BEQ + : CLC : ADC.b #!BANK_BASE : CMP.b PlayerSpriteBank : BEQ +
|
||||
STA.b PlayerSpriteBank
|
||||
STZ.w SkipOAM ; Set Normal Sprite NMI
|
||||
STZ.w SkipOAM ; Set Normal Sprite NMI
|
||||
JSL.l SpriteSwap_Palette_ArmorAndGloves_part_two
|
||||
+
|
||||
PLP
|
||||
@@ -26,57 +26,57 @@ RTL
|
||||
|
||||
SpriteSwap_Palette_ArmorAndGloves:
|
||||
{
|
||||
;DEDF9
|
||||
LDA.l SpriteSwapper : BNE .continue
|
||||
LDA.b #$10 : STA.b PlayerSpriteBank ; Load Original Sprite Location
|
||||
REP #$21
|
||||
LDA.l ArmorEquipment
|
||||
JSL $1BEDFF ; Read Original Palette Code
|
||||
RTL
|
||||
.part_two
|
||||
SEP #$30
|
||||
LDA.l SpriteSwapper : BNE .continue
|
||||
REP #$30
|
||||
LDA.l GloveEquipment
|
||||
JSL $1BEE21 ; Read Original Palette Code
|
||||
RTL
|
||||
; DEDF9
|
||||
LDA.l SpriteSwapper : BNE .continue
|
||||
LDA.b #$10 : STA.b PlayerSpriteBank ; Load Original Sprite Location
|
||||
REP #$21
|
||||
LDA.l ArmorEquipment
|
||||
JSL $9BEDFF ; Read Original Palette Code
|
||||
RTL
|
||||
.part_two
|
||||
SEP #$30
|
||||
LDA.l SpriteSwapper : BNE .continue
|
||||
REP #$30
|
||||
LDA.l GloveEquipment
|
||||
JSL $9BEE21 ; Read Original Palette Code
|
||||
RTL
|
||||
|
||||
.continue
|
||||
.continue
|
||||
|
||||
PHX : PHY : PHA
|
||||
; Load armor palette
|
||||
PHB : PHK : PLB
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
|
||||
; Check what Link's armor value is.
|
||||
LDA.l ArmorEquipment : AND.w #$00FF : TAX
|
||||
|
||||
LDA.l $1BEC06, X : AND.w #$00FF : ASL A : ADC.w #$F000 : STA.b Scrap00
|
||||
;replace D308 by 7000 and search
|
||||
REP #$10 ; set 16-bit index registers
|
||||
|
||||
LDA.w #$01E2 ; Target SP-7 (sprite palette 6)
|
||||
LDX.w #$000E ; Palette has 15 colors
|
||||
|
||||
TXY : TAX
|
||||
|
||||
LDA.b PlayerSpriteBank : AND.w #$00FF : STA.b Scrap02
|
||||
PHX : PHY : PHA
|
||||
; Load armor palette
|
||||
PHB : PHK : PLB
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
|
||||
; Check what Link's armor value is.
|
||||
LDA.l ArmorEquipment : AND.w #$00FF : TAX
|
||||
|
||||
LDA.l $9BEC06, X : AND.w #$00FF : ASL A : ADC.w #$F000 : STA.b Scrap00
|
||||
; replace D308 by 7000 and search
|
||||
REP #$10 ; set 16-bit index registers
|
||||
|
||||
LDA.w #$01E2 ; Target SP-7 (sprite palette 6)
|
||||
LDX.w #$000E ; Palette has 15 colors
|
||||
|
||||
TXY : TAX
|
||||
|
||||
LDA.b PlayerSpriteBank : AND.w #$00FF : STA.b Scrap02
|
||||
|
||||
.loop
|
||||
|
||||
LDA.b [Scrap00] : STA.l PaletteBufferAux, X : STA.l PaletteBuffer, X
|
||||
|
||||
INC.b Scrap00 : INC.b Scrap00
|
||||
|
||||
INX #2
|
||||
|
||||
DEY : BPL .loop
|
||||
LDA.b [Scrap00] : STA.l PaletteBufferAux, X : STA.l PaletteBuffer, X
|
||||
|
||||
SEP #$30
|
||||
|
||||
|
||||
PLB
|
||||
INC.b NMICGRAM
|
||||
PLA : PLY : PLX
|
||||
RTL
|
||||
INC.b Scrap00 : INC.b Scrap00
|
||||
|
||||
INX #2
|
||||
|
||||
DEY : BPL .loop
|
||||
|
||||
SEP #$30
|
||||
|
||||
|
||||
PLB
|
||||
INC.b NMICGRAM
|
||||
PLA : PLY : PLX
|
||||
RTL
|
||||
}
|
||||
|
||||
13
sram.asm
13
sram.asm
@@ -382,6 +382,7 @@ InverseChecksumWRAM: skip 2 ; Vanilla Inverse Checksum. Don't write unless c
|
||||
; beginning at $700500
|
||||
;--------------------------------------------------------------------------------
|
||||
base $7F6000 ; $1000 byte buffer we place beginning at second save file
|
||||
ExtendedSaveDataWRAM: ;
|
||||
ExtendedFileNameWRAM: skip 24 ; File name, 12 word-length characters.
|
||||
RoomPotData: skip 592 ; Table for expanded pot shuffle. One word per room.
|
||||
SpritePotData: skip 592 ; Table for expanded pot shuffle. One word per room.
|
||||
@@ -414,6 +415,7 @@ FileNameVanillaSRAM: skip 8 ; First four characters of file name
|
||||
FileValiditySRAM: skip 2 ;
|
||||
skip 283 ;
|
||||
InverseChecksumSRAM: skip 2 ;
|
||||
ExtendedSaveDataSRAM: ;
|
||||
ExtendedFileNameSRAM: skip 24 ; We read and write the file name directly from and to SRAM (24 bytes)
|
||||
skip $1AE4 ;
|
||||
RomVersionSRAM: skip 4 ; ALTTPR ROM version. Low byte is the version, high byte writes
|
||||
@@ -426,15 +428,6 @@ SaveBackupSRAM: ; Backup copy of save ram. Game will attempt to
|
||||
; checksum on file select screen load fails.
|
||||
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
|
||||
;================================================================================
|
||||
@@ -656,6 +649,7 @@ endmacro
|
||||
%assertSRAM(GTCollectedKeys, $7EF4ED)
|
||||
%assertSRAM(FileMarker, $7EF4F0)
|
||||
;--------------------------------------------------------------------------------
|
||||
%assertSRAM(ExtendedSaveDataWRAM, $7F6000)
|
||||
%assertSRAM(ExtendedFileNameWRAM, $7F6000)
|
||||
%assertSRAM(RoomPotData, $7F6018)
|
||||
%assertSRAM(SpritePotData, $7F6268)
|
||||
@@ -678,6 +672,7 @@ endmacro
|
||||
%assertSRAM(FileNameVanillaSRAM, $7003D9)
|
||||
%assertSRAM(FileValiditySRAM, $7003E1)
|
||||
%assertSRAM(InverseChecksumSRAM, $7004FE)
|
||||
%assertSRAM(ExtendedSaveDataSRAM, $700500)
|
||||
%assertSRAM(ExtendedFileNameSRAM, $700500)
|
||||
%assertSRAM(RomVersionSRAM, $701FFC)
|
||||
%assertSRAM(RomNameSRAM, $702000)
|
||||
|
||||
135
stats.asm
135
stats.asm
@@ -33,7 +33,7 @@ DecrementSaveCounter:
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DungeonHoleWarpTransition:
|
||||
LDA.l $01C31F, X
|
||||
LDA.l $81C31F, X
|
||||
BRA StatTransitionCounter
|
||||
DungeonHoleEntranceTransition:
|
||||
JSL EnableForceBlank
|
||||
@@ -78,33 +78,37 @@ IncrementSmallKeys:
|
||||
STA.l CurrentSmallKeys ; thing we wrote over, write small key count
|
||||
PHX
|
||||
LDA.l StatsLocked : BNE +
|
||||
JSL AddInventory_incrementKeyLong
|
||||
LDA.l SmallKeyCounter : INC : STA.l SmallKeyCounter
|
||||
+
|
||||
JSL.l UpdateKeys
|
||||
PHY : LDY.b #24 : JSL.l FullInventoryExternal : PLY
|
||||
PHY : LDY.b #24 : JSL.l AddInventory : PLY
|
||||
JSL.l HUD_RebuildLong
|
||||
INC.w UpdateHUD
|
||||
PLX
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
IncrementSmallKeysNoPrimary:
|
||||
STA.l CurrentSmallKeys ; thing we wrote over, write small key count
|
||||
PHX
|
||||
LDA.l StatsLocked : BNE +
|
||||
JSL AddInventory_incrementKeyLong
|
||||
+
|
||||
JSL.l UpdateKeys
|
||||
LDA.b IndoorsFlag : BEQ + ; skip room check if outdoors
|
||||
PHP : REP #$20 ; set 16-bit accumulator
|
||||
LDA.b RoomIndex : CMP.w #$0087 : BNE ++ ; hera basement
|
||||
PLP : PHY : LDY.b #$24 : JSL.l FullInventoryExternal
|
||||
JSR CountChestKey : PLY : BRA +
|
||||
++
|
||||
PLP
|
||||
+
|
||||
JSL.l HUD_RebuildLong
|
||||
INC.w UpdateHUD
|
||||
PLX
|
||||
STA.l CurrentSmallKeys ; thing we wrote over, write small key count
|
||||
PHX
|
||||
LDA.l StatsLocked : BNE +
|
||||
LDA.l SmallKeyCounter : INC : STA.l SmallKeyCounter
|
||||
+
|
||||
JSL.l UpdateKeys
|
||||
LDA.b IndoorsFlag : BEQ + ; skip room check if outdoors
|
||||
PHP : REP #$20 ; set 16-bit accumulator
|
||||
LDA.b RoomIndex : CMP.w #$0087 : BNE ++ ; hera basement
|
||||
PLP : PHY
|
||||
LDY.b #$24
|
||||
JSL.l AddInventory
|
||||
JSR CountChestKey
|
||||
PLY
|
||||
BRA +
|
||||
++
|
||||
PLP
|
||||
+
|
||||
INC.w UpdateHUD
|
||||
JSL.l HUD_RebuildLong
|
||||
PLX
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DecrementSmallKeys:
|
||||
@@ -112,53 +116,56 @@ DecrementSmallKeys:
|
||||
JSL.l UpdateKeys
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
CountChestKeyLong: ; called from ItemDowngradeFix in itemdowngrade.asm
|
||||
JSR CountChestKey
|
||||
CountChestKeyLong:
|
||||
JSR.w CountChestKey
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
CountChestKey: ; called by neighbor functions
|
||||
CountChestKey:
|
||||
PHA : PHX
|
||||
CPY.b #$24 : BEQ + ; small key for this dungeon - use DungeonID
|
||||
CPY.b #$A0 : !BLT .end ; Ignore most items
|
||||
CPY.b #$AE : !BGE .end ; Ignore reserved key and generic key
|
||||
TYA : AND.B #$0F
|
||||
TAX : BRA .count ; use Key id instead of DungeonID (Keysanity)
|
||||
+
|
||||
LDA.w DungeonID : LSR : TAX
|
||||
.count
|
||||
LDA.l DungeonCollectedKeys, X : INC : STA.l DungeonCollectedKeys, X
|
||||
LDA.l StatsLocked : BNE .done
|
||||
CPY.b #$24 : BEQ .this_dungeon
|
||||
TYA
|
||||
AND.b #$0F : CMP.b #$02 : BCC .hc_sewers
|
||||
TAX
|
||||
LDA.l DungeonCollectedKeys,X : INC : STA.l DungeonCollectedKeys,X
|
||||
BRA .done
|
||||
.this_dungeon
|
||||
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 +
|
||||
STA.l HCCollectedKeys ; copy HC to sewers
|
||||
+
|
||||
CPX.b #$01 : BNE +
|
||||
STA.l SewerCollectedKeys ; copy sewers to HC
|
||||
+
|
||||
.end
|
||||
.hc_sewers
|
||||
LDA.l SewerCollectedKeys : INC
|
||||
STA.l SewerCollectedKeys : STA.l HCCollectedKeys
|
||||
|
||||
.done
|
||||
PLX : PLA
|
||||
RTS
|
||||
;--------------------------------------------------------------------------------
|
||||
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
|
||||
CMP.b #115 : BNE + ; Desert Bonk Key
|
||||
LDA.l BonkKey_Desert : BRA ++
|
||||
+ : CMP.b #140 : BNE + ; GTower Bonk Key
|
||||
LDA.l BonkKey_GTower : BRA ++
|
||||
+ LDA.b #$24 ; default to small key
|
||||
++
|
||||
CMP.b #$24 : BNE +
|
||||
PHY
|
||||
TAY : JSR CountChestKey
|
||||
PLY
|
||||
+
|
||||
LDA.b RoomIndex
|
||||
CMP.b #115 : BNE +
|
||||
LDA.l BonkKey_Desert
|
||||
BRA ++
|
||||
+
|
||||
CMP.b #140 : BNE +
|
||||
LDA.l BonkKey_GTower : BRA ++
|
||||
+
|
||||
LDA.b #$24
|
||||
++
|
||||
CMP.b #$24 : BNE +
|
||||
PHY
|
||||
TAY
|
||||
JSR CountChestKey
|
||||
PLY
|
||||
+
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
IncrementAgahnim2Sword:
|
||||
PHA
|
||||
LDA.l StatsLocked : BNE +
|
||||
JSL AddInventory_incrementBossSwordLong
|
||||
+
|
||||
PLA
|
||||
PHA
|
||||
JSL.l IncrementBossSword
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
IncrementDeathCounter:
|
||||
@@ -215,12 +222,14 @@ DecrementItemCounter:
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
IncrementBigChestCounter:
|
||||
JSL.l Dungeon_SaveRoomQuadrantData ; thing we wrote over
|
||||
PHA
|
||||
LDA.l StatsLocked : BNE +
|
||||
%BottomHalf(BigKeysBigChests)
|
||||
+
|
||||
PLA
|
||||
JSL.l Dungeon_SaveRoomQuadrantData ; thing we wrote over
|
||||
PHA
|
||||
LDA.l StatsLocked : BNE +
|
||||
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
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
IncrementDamageTakenCounter_Eight:
|
||||
@@ -333,7 +342,7 @@ StatsFinalPrep:
|
||||
LDA.l StatsLocked : BNE .ramPostOnly
|
||||
INC : STA.l StatsLocked
|
||||
|
||||
JSL.l AddInventory_incrementBossSwordLong
|
||||
JSL.l IncrementFinalSword
|
||||
|
||||
LDA.l HighestMail : INC : STA.l HighestMail ; add green mail to mail count
|
||||
|
||||
|
||||
@@ -530,7 +530,7 @@ CreditsLineBlank:
|
||||
|
||||
%blankline()
|
||||
|
||||
%bigcredits("AND...")
|
||||
%bigcredits("AND&")
|
||||
|
||||
%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>
|
||||
endmacro
|
||||
|
||||
CreditsStats:
|
||||
%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(FluteTime, 1, 0, 32, 4, !FLUTE_X, !FLUTE_Y)
|
||||
@@ -65,3 +66,5 @@ endmacro
|
||||
%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(NMIFrames, 1, 0, 32, 4, !TOTAL_TIME_X, !TOTAL_TIME_Y)
|
||||
|
||||
dw $FFFF
|
||||
|
||||
1590
tables.asm
1590
tables.asm
File diff suppressed because it is too large
Load Diff
34
tablets.asm
34
tablets.asm
@@ -30,25 +30,21 @@ RTS
|
||||
;--------------------------------------------------------------------------------
|
||||
SpawnTabletItem:
|
||||
JSL.l LoadOutdoorValue
|
||||
PHA
|
||||
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 #$EB
|
||||
STA.l MiniGameTime
|
||||
JSL Sprite_SpawnDynamically
|
||||
|
||||
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
|
||||
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
|
||||
;--------------------------------------------------------------------------------
|
||||
MaybeUnlockTabletAnimation:
|
||||
@@ -92,7 +88,7 @@ IsMedallion:
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
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
|
||||
;--------------------------------------------------------------------------------
|
||||
CheckTabletItem:
|
||||
|
||||
162
textrenderer.asm
162
textrenderer.asm
@@ -1,6 +1,6 @@
|
||||
RenderCharSetColorExtended_init:
|
||||
stz.b Scrap0C
|
||||
jsl $00d84e
|
||||
jsl Attract_DecompressStoryGfx
|
||||
rtl
|
||||
|
||||
RenderCharSetColorExtended_close:
|
||||
@@ -26,9 +26,7 @@ RenderCharSetColorExtended:
|
||||
|
||||
RenderCharToMapExtended:
|
||||
phx : tya : asl #2 : tax
|
||||
lda.l FontProperties, x
|
||||
and.w #$0001
|
||||
bne .uncompressed
|
||||
lda.l FontProperties, x : bit.w #$0001 : bne .uncompressed
|
||||
.compressed
|
||||
plx
|
||||
lda.w #$0000
|
||||
@@ -104,9 +102,7 @@ RenderCharThinTable:
|
||||
RenderCharExtended:
|
||||
pha
|
||||
asl : asl : tax
|
||||
lda.l FontProperties, x
|
||||
and.w #$00ff
|
||||
bne .renderUncompressed
|
||||
lda.l FontProperties, x : and.w #$00ff : bne .renderUncompressed
|
||||
|
||||
.renderOriginal
|
||||
pla : asl : tax : asl : adc.b Scrap0E
|
||||
@@ -209,39 +205,39 @@ FontProperties:
|
||||
dw $0000, $0000 ; 2E
|
||||
dw $0000, $0000 ; 2F
|
||||
|
||||
dw $8001, $0400 ; 30 ; a
|
||||
dw $8001, $0410 ; 31
|
||||
dw $8001, $0420 ; 32
|
||||
dw $8001, $0430 ; 33
|
||||
dw $8001, $0440 ; 34
|
||||
dw $8001, $0450 ; 35
|
||||
dw $8001, $0460 ; 36
|
||||
dw $8001, $0470 ; 37
|
||||
dw $8001, $0480 ; 38
|
||||
dw $8001, $0490 ; 39
|
||||
dw $8001, $04A0 ; 3A
|
||||
dw $8001, $04B0 ; 3B
|
||||
dw $8001, $04C0 ; 3C
|
||||
dw $8001, $04D0 ; 3D
|
||||
dw $8001, $04E0 ; 3E
|
||||
dw $8001, $04F0 ; 3F
|
||||
dw $0000, $0000 ; 30
|
||||
dw $0000, $0000 ; 31
|
||||
dw $0000, $0000 ; 32
|
||||
dw $0000, $0000 ; 33
|
||||
dw $0000, $0000 ; 34
|
||||
dw $0000, $0000 ; 35
|
||||
dw $0000, $0000 ; 36
|
||||
dw $0000, $0000 ; 37
|
||||
dw $0000, $0000 ; 38
|
||||
dw $0000, $0000 ; 39
|
||||
dw $0000, $0000 ; 3A
|
||||
dw $0000, $0000 ; 3B
|
||||
dw $0000, $0000 ; 3C
|
||||
dw $0000, $0000 ; 3D
|
||||
dw $0000, $0000 ; 3E
|
||||
dw $0000, $0000 ; 3F
|
||||
|
||||
dw $8001, $0600 ; 40
|
||||
dw $8001, $0610 ; 41
|
||||
dw $8001, $0620 ; 42
|
||||
dw $8001, $0630 ; 43
|
||||
dw $8001, $0640 ; 44
|
||||
dw $8001, $0650 ; 45
|
||||
dw $8001, $0660 ; 46
|
||||
dw $8001, $0670 ; 47
|
||||
dw $8001, $0680 ; 48
|
||||
dw $8001, $0690 ; 49 ; z
|
||||
dw $8001, $06F0 ; 4A ; :
|
||||
dw $8001, $0A90 ; 4B ; @ (thin)
|
||||
dw $8001, $0AA0 ; 4C ; # (thin)
|
||||
dw $0000, $0000 ; 4D
|
||||
dw $0000, $0000 ; 4E
|
||||
dw $8001, $0EF0 ; 4F ; <sp>
|
||||
dw $0000, $0000 ; 40
|
||||
dw $0000, $0000 ; 41
|
||||
dw $0000, $0000 ; 42
|
||||
dw $0000, $0000 ; 43
|
||||
dw $0000, $0000 ; 44
|
||||
dw $0000, $0000 ; 45
|
||||
dw $0000, $0000 ; 46
|
||||
dw $0000, $0000 ; 47
|
||||
dw $0000, $0000 ; 48
|
||||
dw $0000, $0000 ; 49
|
||||
dw $0000, $0000 ; 4A
|
||||
dw $0000, $0000 ; 4B
|
||||
dw $0000, $0000 ; 4C
|
||||
dw $0000, $0000 ; 4D
|
||||
dw $0000, $0000 ; 4E
|
||||
dw $8001, $0DF0 ; 4F ; <sp>
|
||||
|
||||
dw $0000, $0000 ; 50
|
||||
dw $0000, $0000 ; 51
|
||||
@@ -318,15 +314,15 @@ FontProperties:
|
||||
dw $0000, $0000 ; 94
|
||||
dw $0000, $0000 ; 95
|
||||
dw $0000, $0000 ; 96
|
||||
dw $0000, $0000 ; 97
|
||||
dw $0000, $0000 ; 98
|
||||
dw $0000, $0000 ; 99
|
||||
dw $0000, $0000 ; 9A
|
||||
dw $0000, $0000 ; 9B
|
||||
dw $0000, $0000 ; 9C
|
||||
dw $0000, $0000 ; 9D
|
||||
dw $0000, $0000 ; 9E
|
||||
dw $0000, $0000 ; 9F
|
||||
dw $8001, $0AD0 ; 97 ; /
|
||||
dw $8001, $0AE0 ; 98 ; •
|
||||
dw $8001, $02A0 ; 99 ; Cursor |>
|
||||
dw $0000, $0000 ; 9A ; smiley lookin JP char
|
||||
dw $8001, $06A0 ; 9B ; Link face left
|
||||
dw $8001, $06B0 ; 9C ; Link face right
|
||||
dw $8001, $06E0 ; 9D ; '
|
||||
dw $8001, $0AF0 ; 9E ; "
|
||||
dw $8001, $02E0 ; 9F ; ellipsis ...
|
||||
|
||||
dw $8001, $0800 ; A0 ; 0
|
||||
dw $8001, $0810 ; A1
|
||||
@@ -372,44 +368,44 @@ FontProperties:
|
||||
dw $8001, $06C0 ; C7 ; !
|
||||
dw $8001, $02D0 ; C8 ; ,
|
||||
dw $8001, $02B0 ; C9 ; -
|
||||
dw $8000, $0000 ; CA
|
||||
dw $8000, $0000 ; CB
|
||||
dw $8000, $02E0 ; CC ; ...
|
||||
dw $8000, $0000 ; CA ; 🡄"
|
||||
dw $8000, $0000 ; CB ; 🡆
|
||||
dw $0000, $0000 ; CC ; Blank char
|
||||
dw $8001, $02C0 ; CD ; .
|
||||
dw $8001, $02F0 ; CE ; ~
|
||||
dw $8000, $0000 ; CF
|
||||
dw $8000, $0000 ; CF ;
|
||||
|
||||
dw $0000, $0000 ; D0
|
||||
dw $0000, $0000 ; D1
|
||||
dw $8001, $06a0 ; D2 ; Link face left
|
||||
dw $8001, $06b0 ; D3 ; Link face right
|
||||
dw $0000, $0000 ; D4
|
||||
dw $0000, $0000 ; D5
|
||||
dw $0000, $0000 ; D6
|
||||
dw $0000, $0000 ; D7
|
||||
dw $8001, $06E0 ; D8 ; '
|
||||
dw $0000, $0000 ; D9
|
||||
dw $0000, $0000 ; DA
|
||||
dw $0000, $0000 ; DB
|
||||
dw $0000, $0000 ; DC
|
||||
dw $0000, $0000 ; DD
|
||||
dw $0000, $0000 ; DE
|
||||
dw $0000, $0000 ; DF
|
||||
dw $8001, $0400 ; D0 ; a
|
||||
dw $8001, $0410 ; D1
|
||||
dw $8001, $0420 ; D2
|
||||
dw $8001, $0430 ; D3
|
||||
dw $8001, $0440 ; D4
|
||||
dw $8001, $0450 ; D5
|
||||
dw $8001, $0460 ; D6
|
||||
dw $8001, $0470 ; D7
|
||||
dw $8001, $0480 ; D8
|
||||
dw $8001, $0490 ; D9
|
||||
dw $8001, $04A0 ; DA
|
||||
dw $8001, $04B0 ; DB
|
||||
dw $8001, $04C0 ; DC
|
||||
dw $8001, $04D0 ; DD
|
||||
dw $8001, $04E0 ; DE
|
||||
dw $8001, $04F0 ; DF ; p
|
||||
|
||||
dw $0000, $0000 ; E0
|
||||
dw $0000, $0000 ; E1
|
||||
dw $0000, $0000 ; E2
|
||||
dw $0000, $0000 ; E3
|
||||
dw $8001, $02A0 ; E4 ; Cursor |>
|
||||
dw $0000, $0000 ; E5
|
||||
dw $0000, $0000 ; E6
|
||||
dw $0000, $0000 ; E7
|
||||
dw $0000, $0000 ; E8
|
||||
dw $0000, $0000 ; E9
|
||||
dw $0000, $0000 ; EA
|
||||
dw $0000, $0000 ; EB
|
||||
dw $0000, $0000 ; EC
|
||||
dw $0000, $0000 ; ED
|
||||
dw $8001, $0600 ; E0 ; q
|
||||
dw $8001, $0610 ; E1
|
||||
dw $8001, $0620 ; E2
|
||||
dw $8001, $0630 ; E3
|
||||
dw $8001, $0640 ; E4
|
||||
dw $8001, $0650 ; E5
|
||||
dw $8001, $0660 ; E6
|
||||
dw $8001, $0670 ; E7
|
||||
dw $8001, $0680 ; E8
|
||||
dw $8001, $0690 ; E9 ; z
|
||||
dw $8001, $0A80 ; EA ; :
|
||||
dw $8001, $0A90 ; EB ; @ (thin)
|
||||
dw $8001, $0AA0 ; EC ; # (thin)
|
||||
dw $8001, $0A00 ; ED ; _
|
||||
dw $0000, $0000 ; EE
|
||||
dw $0000, $0000 ; EF
|
||||
|
||||
@@ -428,4 +424,4 @@ FontProperties:
|
||||
dw $0000, $0000 ; FC
|
||||
dw $0000, $0000 ; FD
|
||||
dw $0000, $0000 ; FE
|
||||
dw $8001, $0EF0 ; FF ; <sp>
|
||||
dw $8001, $0DF0 ; FF ; <sp>
|
||||
|
||||
615
utilities.asm
615
utilities.asm
@@ -6,150 +6,25 @@
|
||||
; out: A - Sprite GFX ID
|
||||
;--------------------------------------------------------------------------------
|
||||
GetSpriteID:
|
||||
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
|
||||
CMP.b #$6D : BEQ .server_F0 ; Server Request F0
|
||||
CMP.b #$6E : BEQ .server_F1 ; Server Request F1
|
||||
CMP.b #$6F : BEQ .server_F2 ; Server Request F2
|
||||
JSR.w AttemptItemSubstitution
|
||||
JSR.w ResolveLootID
|
||||
CMP.b #$6D : BEQ .server_F0 ; Server Request F0
|
||||
CMP.b #$6E : BEQ .server_F1 ; Server Request F1
|
||||
CMP.b #$6F : BEQ .server_F2 ; Server Request F2
|
||||
BRA .normal
|
||||
.bottle
|
||||
PHA : JSR.w CountBottles : CMP.l BottleLimit : !BLT +
|
||||
PLA : LDA.l BottleLimitReplacement
|
||||
JMP GetSpriteID
|
||||
+
|
||||
PLA : BRA .normal
|
||||
.server_F0
|
||||
JSL.l ItemVisualServiceRequest_F0
|
||||
BRA .normal
|
||||
.server_F1
|
||||
JSL.l ItemVisualServiceRequest_F1
|
||||
BRA .normal
|
||||
.server_F0
|
||||
JSL.l ItemVisualServiceRequest_F0
|
||||
BRA .normal
|
||||
.server_F1
|
||||
JSL.l ItemVisualServiceRequest_F1
|
||||
BRA .normal
|
||||
.server_F2
|
||||
JSL.l ItemVisualServiceRequest_F2
|
||||
JSL.l ItemVisualServiceRequest_F2
|
||||
.normal
|
||||
|
||||
PHX
|
||||
PHB : PHK : PLB
|
||||
;--------
|
||||
TAX : LDA.l .gfxSlots, X ; look up item gfx
|
||||
PLB : PLX
|
||||
CMP.b #$F8 : !BGE .specialHandling
|
||||
TAX : LDA.l ItemReceipts_graphics, X ; look up item gfx
|
||||
PLX
|
||||
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
|
||||
|
||||
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 ; Unused
|
||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Reserved
|
||||
}
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; GetSpritePalette
|
||||
@@ -157,264 +32,67 @@ RTL
|
||||
; out: A - Palette
|
||||
;--------------------------------------------------------------------------------
|
||||
GetSpritePalette:
|
||||
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
|
||||
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 #$F8 : !BGE .specialHandling
|
||||
JSR AttemptItemSubstitution
|
||||
JSR.w ResolveLootID
|
||||
.resolved
|
||||
TAX
|
||||
LDA.l SpriteProperties_standing_palette, X : BIT #$80 : BNE .load_palette
|
||||
ASL
|
||||
RTL
|
||||
.specialHandling
|
||||
CMP.b #$FD : BNE ++ ; Progressive Sword
|
||||
LDA.l HighestSword
|
||||
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 #$FA : BNE ++ ; RNG Item (Single)
|
||||
JSL.l GetRNGItemSingle : JMP GetSpritePalette
|
||||
++ : CMP.b #$FB : BNE ++ ; RNG Item (Multi)
|
||||
JSL.l GetRNGItemMulti : JMP GetSpritePalette
|
||||
++
|
||||
.load_palette
|
||||
JSL.l LoadItemPalette
|
||||
ASL
|
||||
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, $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
|
||||
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 #$24 : !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, $FF, $FF, $FF, $FF, $FF
|
||||
}
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; PrepDynamicTile
|
||||
; in: A - Loot ID
|
||||
; in: SpriteID,X - Loot ID
|
||||
;-------------------------------------------------------------------------------- 20/8477
|
||||
PrepDynamicTile:
|
||||
PHA : PHX : PHY
|
||||
PHX : PHY : PHB
|
||||
JSR.w ResolveLootID
|
||||
-
|
||||
JSR.w LoadDynamicTileOAMTable
|
||||
JSL.l GetSpriteID ; convert loot id to sprite id
|
||||
JSL.l GetAnimatedSpriteTile_variable
|
||||
PLY : PLX : PLA
|
||||
JSL TransferItemReceiptToBuffer_using_ReceiptID
|
||||
SEP #$30
|
||||
PLB : PLY : PLX
|
||||
RTL
|
||||
.loot_resolved
|
||||
PHX : PHY : PHB
|
||||
BRA -
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; LoadDynamicTileOAMTable
|
||||
; in: A - Loot ID
|
||||
; in: SpriteID,X - Loot ID
|
||||
; out: A - Loot ID
|
||||
;-------------------------------------------------------------------------------- 20/847B
|
||||
LoadDynamicTileOAMTable:
|
||||
PHA : PHP
|
||||
PHP
|
||||
REP #$20
|
||||
LDA.w #$0000 : STA.l SpriteOAM : STA.l SpriteOAM+2
|
||||
LDA.w #$0200 : STA.l SpriteOAM+6
|
||||
SEP #$20
|
||||
LDA.b #$24 : STA.l SpriteOAM+4
|
||||
|
||||
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 #$24 : STA.l SpriteOAM+4
|
||||
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
|
||||
|
||||
LDA.b $01,s
|
||||
.narrow
|
||||
REP #$20
|
||||
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
|
||||
|
||||
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
|
||||
.done
|
||||
TXA
|
||||
PLX
|
||||
PLP
|
||||
RTS
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; DrawDynamicTile
|
||||
@@ -424,58 +102,66 @@ 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)
|
||||
;-------------------------------------------------------------------------------- 2084B8
|
||||
DrawDynamicTile:
|
||||
JSL.l IsNarrowSprite : BCS .narrow
|
||||
PHX
|
||||
TAX
|
||||
LDA.l SpriteProperties_standing_width,X : BEQ .narrow
|
||||
|
||||
.full
|
||||
LDA.b #$01 : STA.b Scrap06
|
||||
LDA.b #$0C : JSL.l OAM_AllocateFromRegionC
|
||||
LDA.b #$02 : PHA
|
||||
BRA .draw
|
||||
.full
|
||||
PLX
|
||||
LDA.b #$01 : STA.b Scrap06
|
||||
LDA.b #$0C : JSL.l OAM_AllocateFromRegionC
|
||||
LDA.b #$02 : PHA
|
||||
BRA .draw
|
||||
|
||||
.narrow
|
||||
LDA.b #$02 : STA.b Scrap06
|
||||
LDA.b #$10 : JSL.l OAM_AllocateFromRegionC
|
||||
LDA.b #$03 : PHA
|
||||
.narrow
|
||||
PLX
|
||||
LDA.b #$02 : STA.b Scrap06
|
||||
LDA.b #$10 : JSL.l OAM_AllocateFromRegionC
|
||||
LDA.b #$03 : PHA
|
||||
|
||||
.draw
|
||||
LDA.b #SpriteOAM>>0 : STA.b Scrap08
|
||||
LDA.b #SpriteOAM>>8 : STA.b Scrap09
|
||||
STZ.b Scrap07
|
||||
LDA.b #$7E : PHB : PHA : PLB
|
||||
LDA.b #$01 : STA.l SpriteSkipEOR
|
||||
JSL Sprite_DrawMultiple_quantity_preset
|
||||
LDA.b #$00 : STA.l SpriteSkipEOR
|
||||
PLB
|
||||
.draw
|
||||
LDA.b #SpriteOAM>>0 : STA.b Scrap08
|
||||
LDA.b #SpriteOAM>>8 : STA.b Scrap09
|
||||
STZ.b Scrap07
|
||||
LDA.b #$7E : PHB : PHA : PLB
|
||||
LDA.b #$01 : STA.l SpriteSkipEOR
|
||||
JSL Sprite_DrawMultiple_quantity_preset
|
||||
LDA.b #$00 : STA.l SpriteSkipEOR
|
||||
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+2 : INC #2 : STA.b OAMPtr+2
|
||||
PLA
|
||||
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+2 : INC #2 : STA.b OAMPtr+2
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DrawDynamicTileNoShadow:
|
||||
JSL.l IsNarrowSprite : BCS .narrow
|
||||
PHX
|
||||
TAX
|
||||
LDA.l SpriteProperties_standing_width,X : BEQ .narrow
|
||||
|
||||
.full
|
||||
LDA.b #$01 : STA.b Scrap06
|
||||
LDA.b #$04 : JSL.l OAM_AllocateFromRegionC
|
||||
BRA .draw
|
||||
.full
|
||||
PLX
|
||||
LDA.b #$01 : STA.b Scrap06
|
||||
LDA.b #$04 : JSL.l OAM_AllocateFromRegionC
|
||||
BRA .draw
|
||||
|
||||
.narrow
|
||||
LDA.b #$02 : STA.b Scrap06
|
||||
LDA.b #$08 : JSL.l OAM_AllocateFromRegionC
|
||||
.narrow
|
||||
PLX
|
||||
LDA.b #$02 : STA.b Scrap06
|
||||
LDA.b #$08 : JSL.l OAM_AllocateFromRegionC
|
||||
|
||||
.draw
|
||||
LDA.b #SpriteOAM>>0 : STA.b Scrap08
|
||||
LDA.b #SpriteOAM>>8 : STA.b Scrap09
|
||||
STZ.b Scrap07
|
||||
LDA.b #$7E : PHB : PHA : PLB
|
||||
LDA.b #$01 : STA.l SpriteSkipEOR
|
||||
JSL Sprite_DrawMultiple_quantity_preset
|
||||
LDA.l Bob : BNE + : LDA.b #$00 : STA.l SpriteSkipEOR : + ; Bob fix is conditional
|
||||
PLB
|
||||
.draw
|
||||
LDA.b #SpriteOAM>>0 : STA.b Scrap08
|
||||
LDA.b #SpriteOAM>>8 : STA.b Scrap09
|
||||
STZ.b Scrap07
|
||||
LDA.b #$7E : PHB : PHA : PLB
|
||||
LDA.b #$01 : STA.l SpriteSkipEOR
|
||||
JSL Sprite_DrawMultiple_quantity_preset
|
||||
LDA.l Bob : BNE + : LDA.b #$00 : STA.l SpriteSkipEOR : + ; Bob fix is conditional
|
||||
PLB
|
||||
|
||||
LDA.b OAMPtr : !ADD.b #$08 : STA.b OAMPtr
|
||||
LDA.b OAMPtr+2 : INC #2 : STA.b OAMPtr+2
|
||||
LDA.b OAMPtr : !ADD.b #$08 : STA.b OAMPtr
|
||||
LDA.b OAMPtr+2 : INC #2 : STA.b OAMPtr+2
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
@@ -501,13 +187,13 @@ RTL
|
||||
; out: Carry - 1 = On Screen, 0 = Off Screen
|
||||
;--------------------------------------------------------------------------------
|
||||
Sprite_IsOnscreen:
|
||||
JSR _Sprite_IsOnscreen_DoWork
|
||||
JSR .check_sprite
|
||||
BCS +
|
||||
REP #$20
|
||||
LDA.b BG2H : PHA : !SUB.w #$0F : STA.b BG2H
|
||||
LDA.b BG2V : PHA : !SUB.w #$0F : STA.b BG2V
|
||||
SEP #$20
|
||||
JSR _Sprite_IsOnscreen_DoWork
|
||||
JSR .check_sprite
|
||||
REP #$20
|
||||
PLA : STA.b BG2V
|
||||
PLA : STA.b BG2H
|
||||
@@ -515,7 +201,7 @@ Sprite_IsOnscreen:
|
||||
+
|
||||
RTL
|
||||
|
||||
_Sprite_IsOnscreen_DoWork:
|
||||
.check_sprite
|
||||
LDA.w SpritePosXLow, X : CMP.b BG2H
|
||||
LDA.w SpritePosXHigh, X : SBC.b BG2H+1 : BNE .offscreen
|
||||
|
||||
@@ -558,7 +244,7 @@ RTL
|
||||
SkipDrawEOR:
|
||||
LDA.l SpriteSkipEOR : BEQ .normal
|
||||
LDA.w #$0000 : STA.l SpriteSkipEOR
|
||||
LDA.w Scrap04 : AND.w #$F0FF : STA.w Scrap04
|
||||
LDA.w #$0F00 : TRB.b Scrap04
|
||||
.normal
|
||||
LDA.b ($08), Y : EOR.w Scrap04 ; thing we wrote over
|
||||
RTL
|
||||
@@ -628,8 +314,89 @@ 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!)
|
||||
;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.
|
||||
;================================================================================
|
||||
|
||||
DynamicDrawCleanup:
|
||||
PHA
|
||||
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
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
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
|
||||
LDA.b #$7E
|
||||
PHA : PLB
|
||||
REP #$30
|
||||
|
||||
TXA : ASL : TAX
|
||||
LDA.l SpriteProperties_palette_addr,X : STA.b Scrap0A
|
||||
LDY.w #$000E
|
||||
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
|
||||
|
||||
TransferVRAMStripes:
|
||||
JSL.l TransferNumericStripes
|
||||
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
|
||||
|
||||
@@ -1,123 +1,185 @@
|
||||
;================================================================================
|
||||
;===================================================================================================
|
||||
; Vanilla Labels
|
||||
;================================================================================
|
||||
;===================================================================================================
|
||||
; EVERY LABEL SHOULD BE IN A FAST ROM BANK
|
||||
;===================================================================================================
|
||||
; Labels for routines in the vanilla portion of the ROM. More or less in sequential
|
||||
; order. Most of these names came from the MoN US disassembly. But we should
|
||||
; refer to the JP 1.0 disassembly as that's what the randomizer is based on.
|
||||
; All routines can be assumed to return long unless otherwise noted.
|
||||
;================================================================================
|
||||
;===================================================================================================
|
||||
;---------------------------------------------------------------------------------------------------
|
||||
;===================================================================================================
|
||||
; Long routines (use JSL)
|
||||
;===================================================================================================
|
||||
Vram_EraseTilemaps_triforce = $808333
|
||||
JumpTableLocal = $808781
|
||||
JumpTableLong = $80879C
|
||||
Sound_LoadLightWorldSongBank = $808913
|
||||
Sound_LoadLightWorldSongBank_do_load = $80891D
|
||||
EnableForceBlank = $80893D
|
||||
DungeonMask = $8098C0
|
||||
DecompSwordGfx = $80D308
|
||||
DecompShieldGfx = $80D348
|
||||
Tagalong_LoadGfx = $80D463
|
||||
GetAnimatedSpriteTile = $80D51B
|
||||
GetAnimatedSpriteTile_variable = $80D52D
|
||||
Attract_DecompressStoryGfx = $80D84E
|
||||
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
|
||||
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_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
|
||||
|
||||
UseImplicitRegIndexedLocalJumpTable = $008781
|
||||
UseImplicitRegIndexedLongJumpTable = $00879C
|
||||
Vram_EraseTilemaps_triforce = 008333
|
||||
Sound_LoadLightWorldSongBank = $008913
|
||||
Sound_LoadLightWorldSongBank_do_load = $00891D
|
||||
EnableForceBlank = $00893D
|
||||
SaveGameFile = $00894A ; long
|
||||
DungeonMask = $0098C0
|
||||
DecompSwordGfx = $00D308
|
||||
DecompShieldGfx = $00D348
|
||||
Tagalong_LoadGfx = $00D463
|
||||
GetAnimatedSpriteTile = $00D51B
|
||||
GetAnimatedSpriteTile_variable = $00D52D
|
||||
Attract_DecompressStoryGfx = $00D84E
|
||||
LoadSelectScreenGfx = $00E529
|
||||
PrepDungeonExit = $00F945
|
||||
Mirror_InitHdmaSettings = $00FDEE
|
||||
Dungeon_LoadRoom = $01873A
|
||||
Module_PreDungeon = $02821E
|
||||
Module_PreDungeon_setAmbientSfx = $028296
|
||||
Dungeon_SaveRoomData = $02A0A8
|
||||
Dungeon_SaveRoomData_justKeys = $02A0BE
|
||||
Dungeon_SaveRoomQuadrantData = $02B861
|
||||
LoadGearPalettes_bunny = $02FD8A
|
||||
LoadGearPalettes_variable = $02FD95
|
||||
Filter_Majorly_Whiten_Color = $02FEAB
|
||||
Sprite_SpawnFallingItem = $05A51D
|
||||
Sprite_DrawMultiple = $05DF6C
|
||||
Sprite_DrawMultiple_quantity_preset = $05DF70
|
||||
Sprite_DrawMultiple_player_deferred = $05DF75
|
||||
Sprite_ShowSolicitedMessageIfPlayerFacing = $05E1A7
|
||||
Sprite_ShowMessageFromPlayerContact = $05E1F0
|
||||
Sprite_ShowMessageUnconditional = $05E219
|
||||
Sprite_ZeldaLong = $05EC96
|
||||
Sprite_EB_HeartPiece_handle_flags = $05F0C0
|
||||
Player_ApplyRumbleToSprites = $0680FA
|
||||
Utility_CheckIfHitBoxesOverlapLong = $0683E6
|
||||
Chicken_SpawnAvengerChicken = $06A7DB ; returns short
|
||||
Sprite_DrawShadowLong = $06DC5C
|
||||
DashKey_Draw = $06DD40
|
||||
Sprite_PrepAndDrawSingleLargeLong = $06DBF8
|
||||
Sprite_PrepAndDrawSingleSmallLong = $06DC00
|
||||
Sprite_ApplySpeedTowardsPlayerLong = $06EA18
|
||||
Sprite_DirectionToFacePlayerLong = $06EAA6
|
||||
Sprite_CheckDamageToPlayerSameLayerLong = $06F12F
|
||||
OAM_AllocateDeferToPlayerLong = $06F86A
|
||||
Player_HaltDashAttackLong = $0791B3
|
||||
Link_ReceiveItem = $07999D
|
||||
Sprite_CheckIfPlayerPreoccupied = $07F4AA
|
||||
Ancilla_ReceiveItem = $08C3AE
|
||||
Ancilla_BreakTowerSeal_draw_single_crystal = $08CE93
|
||||
Ancilla_BreakTowerSeal_stop_spawning_sparkles = $08CEC3
|
||||
BreakTowerSeal_ExecuteSparkles = $08CF59
|
||||
Ancilla_SetOam_XY_Long = $08F710
|
||||
AddReceivedItem = $0985E2
|
||||
AddPendantOrCrystal = $098BAD
|
||||
AddWeathervaneExplosion = $098CFD
|
||||
AddDashTremor = $0993DF
|
||||
AddAncillaLong = $099D04
|
||||
Ancilla_CheckIfAlreadyExistsLong = $099D1A
|
||||
Sprite_SetSpawnedCoords = $09AE64
|
||||
GiveRupeeGift = $09AD58
|
||||
Overworld_LoadOverlayAndMap = $0AB96C
|
||||
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
|
||||
RebuildHUD_update = $0DFAA5
|
||||
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
|
||||
;===================================================================================================
|
||||
; Palettes
|
||||
;===================================================================================================
|
||||
PalettesVanillaBank = $9B0000
|
||||
PalettesVanilla_none = $9B0000
|
||||
PalettesVanilla_red_melon = $9BD218
|
||||
PalettesVanilla_blue_ice = $9BD236
|
||||
PalettesVanilla_green_blue_guard = $9BD272
|
||||
PalettesVanilla_dark_world_melon = $9BD290
|
||||
PalettesVanilla_blue_dark_ice = $9BD2BC
|
||||
PalettesVanilla_spraux09 = $9BD47E
|
||||
|
||||
;===================================================================================================
|
||||
; 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