Merge branch 'main' into kara

This commit is contained in:
2023-09-05 14:46:57 -05:00
21 changed files with 542 additions and 642 deletions

View File

@@ -49,8 +49,7 @@ dw !ROM_VERSION_HIGH
function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<<0))
; Feature flags, run asar with -DFEATURE_X=0 to disable
!FEATURE_NEW_TEXT ?= 1
; Feature flags, run asar with -DFEATURE_X=1 to enable
;================================================================================
@@ -160,9 +159,7 @@ incsrc special_weapons.asm
incsrc variable_ganon_vulnerability.asm
incsrc item_on_b.asm
incsrc hextodec.asm
if !FEATURE_NEW_TEXT
incsrc textrenderer.asm
endif
incsrc textrenderer.asm
warnpc $A58000
org $A28000
@@ -269,30 +266,24 @@ org $B39600
BossMapIconGFX:
incbin "data/bossicons.4bpp"
if !FEATURE_NEW_TEXT
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 $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
org $B28000
Extra_Text_Table:
if !FEATURE_NEW_TEXT
incsrc itemtext_lower.asm
else
incsrc itemtext.asm
endif
incsrc itemtext.asm
incsrc externalhooks.asm
;================================================================================

View File

@@ -60,7 +60,7 @@ RTL
;--------------------------------------------------------------------------------
GiveBonkItem:
JSR LoadBonkItem
CMP.b #$24 : BNE .notKey
JSR.w AbsorbKeyCheck : BCC .notKey
.key
PHY : LDY.b #$24 : JSL.l AddInventory : PLY ; do inventory processing for a small key
LDA.l CurrentSmallKeys : INC A : STA.l CurrentSmallKeys
@@ -84,3 +84,19 @@ LoadBonkItem:
LDA.b #$24 ; default to small key
++
RTS
;--------------------------------------------------------------------------------
AbsorbKeyCheck:
PHA
CMP.b #$24 : BEQ .key
CMP.b #$A0 : BCC .not_key
CMP.b #$B0 : BCS .not_key
AND.b #$0F : ASL
CMP.w DungeonID : BNE .not_key
.key
PLA
SEC
RTS
.not_key
PLA
CLC
RTS

View File

@@ -2,4 +2,4 @@
rm ../working.sfc
cp ../alttp.sfc ../working.sfc
./bin/macos/asar -DFEATURE_NEW_TEXT=1 LTTP_RND_GeneralBugfixes.asm ../working.sfc
./bin/macos/asar LTTP_RND_GeneralBugfixes.asm ../working.sfc

View File

@@ -2,4 +2,4 @@
rm ../working.sfc
cp ../alttp.sfc ../working.sfc
./bin/linux/asar -DFEATURE_NEW_TEXT=1 LTTP_RND_GeneralBugfixes.asm ../working.sfc
./bin/linux/asar LTTP_RND_GeneralBugfixes.asm ../working.sfc

View File

@@ -103,14 +103,19 @@ SetCutsceneFlag:
LDA.w DungeonID : BMI .no_cutscene
LDA.w RoomItemsTaken : BIT #$80 : BNE .dungeon_prize
.no_cutscene
SEP #$30
PLX
CLC
RTL
.dungeon_prize
LDA.w ItemReceiptID : TAX
LDA.l InventoryTable_properties,X : BPL .no_cutscene
PLX
SEC
LDA.w ItemReceiptMethod : CMP.b #$03 : BCC .no_cutscene
JSR.w SetDungeonCompleted
LDA.w ItemReceiptID
REP #$30
AND.w #$00FF : ASL : TAX
LDA.l InventoryTable_properties,X : BIT.w #$0080 : BEQ .no_cutscene
SEP #$31
PLX
RTL
AnimatePrizeCutscene:
@@ -185,36 +190,20 @@ CheckDungeonCompletion:
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
TYA
REP #$30
AND.w #$00FF : ASL : TAX
LDA.l InventoryTable_properties,X : BIT.w #$0080 : BNE .dont_wait
SEP #$31
PLX
SEC
RTL
.dont_wait
SEP #$30
PLX
CLC
RTL
@@ -272,8 +261,8 @@ PrepPrizeOAMCoordinates:
CLC : ADC.w #$0008 : STA.b Scrap08
LDA.b Scrap02 : STA.b Scrap0A
.wide
PLY : PLX
SEP #$20
PLY : PLX
RTL
PrepPrizeShadow:
@@ -306,14 +295,16 @@ 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
LDA.w AncillaGet,X
REP #$31
AND.w #$00FF : ASL : TAX
LDA.l InventoryTable_properties,X : BIT.w #$0080 : BNE .crystal_behavior
SEP #$30
PLX : PLA
CLC
RTS
.crystal_behavior
SEP #$31
PLX : PLA
SEC
RTS
CheckDungeonWorld:
@@ -324,3 +315,11 @@ CheckDungeonWorld:
.dark_world
SEP #$02
RTL
SetDungeonCompleted:
LDX.w DungeonID : BMI +
REP #$20
LDA.l DungeonItemMasks, X : ORA.l DungeonsCompleted : STA.l DungeonsCompleted
SEP #$20
+
RTS

View File

@@ -27,20 +27,6 @@ RTL
;--------------------------------------------------------------------------------
OnDungeonBossExit:
JSL.l StatTransitionCounter
LDX.w DungeonID : BMI +
LDA.w RoomIndex : CMP.b #$0D : BEQ .aga2
LDA.w RoomIndex : CMP.b #$20 : BEQ .aga
.set_completed
REP #$20
LDA.l DungeonItemMasks, X : ORA.l DungeonsCompleted : STA.l DungeonsCompleted
SEP #$20
+
RTL
.aga2
CPX.b #$1A : BEQ .set_completed
RTL
.aga
CPX.b #$08 : BEQ .set_completed
RTL
;--------------------------------------------------------------------------------
OnPlayerDead:
@@ -100,10 +86,28 @@ OnUncleItemGet:
+
RTL
;--------------------------------------------------------------------------------
OnAga1Defeated:
STA.l ProgressIndicator ; vanilla game state stuff we overwrote
LDA.l GanonVulnerableMode
CMP.b #$06 : BNE +
.light_speed
REP #$20
LDA.w #$0019 : STA.b GameMode
SEP #$20
+
LDA.b #$08 : CMP.w DungeonID : BNE +
ORA.l DungeonsCompleted+1 : STA.l DungeonsCompleted+1
+
.exit
RTL
;--------------------------------------------------------------------------------
OnAga2Defeated:
JSL.l Dungeon_SaveRoomData_justKeys ; thing we wrote over, make sure this is first
LDA.b #$FF : STA.w DungeonID
LDA.b #$01 : STA.l Aga2Duck
LDA.w DungeonID : CMP.b #$1A : BNE +
LDA.l DungeonsCompleted : ORA.b #$04 : STA.l DungeonsCompleted
+
LDA.b #$FF : STA.w DungeonID
JML.l IncrementAgahnim2Sword
;--------------------------------------------------------------------------------
OnFileCreation:
@@ -241,6 +245,11 @@ PreItemGet:
RTL
;--------------------------------------------------------------------------------
PostItemGet:
STZ.w ShopPurchaseFlag
LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ +
LDX.w CurrentSpriteSlot
STZ.w SpriteMetaData,X
+
RTL
;--------------------------------------------------------------------------------
PostItemAnimation:

View File

@@ -917,13 +917,13 @@ DrawPlayerFile_credits:
LDA.l EquipmentSRAM+$2C : AND.w #$00FF : LSR #3 : STA.b Scrap02
%fs_LDY_screenpos(0,20)
LDA.w #$02CF|!FS_COLOR_RED
LDA.l HUDHeartColors_index : ASL : TAX
LDA.l HUDHeartColors_masks_file_select,X
ORA.w #$02CF
LDX.w #$000A
.nextHeart
STA.w $0000, Y
INY #2 : DEX : BNE +
PHA
TYA : !ADD.w #$40-$14 : TAY

View File

@@ -186,21 +186,6 @@ CheckAgaForPed:
CLC ; skip the RNG check
RTL
;---------------------------------------------------------------------------------------------------
KillGanon:
STA.l ProgressIndicator ; vanilla game state stuff we overwrote
LDA.l GanonVulnerableMode
CMP.b #$06 : BNE .exit
.light_speed
REP #$20
LDA.w #$0019 : STA.b GameMode
SEP #$20
.exit
RTL
;---------------------------------------------------------------------------------------------------
CheckForCrystalBossesDefeated:
PHB : PHX : PHY

View File

@@ -525,10 +525,6 @@ JSL AgahnimAsksAboutPed
org $9ED6E8
JSL CheckAgaForPed : NOP
; kill ganon when aga dies in light speed
org $80F970
JSL KillGanon
;================================================================================
; Zelda Sprite Fixes
;--------------------------------------------------------------------------------
@@ -699,6 +695,8 @@ JSL GetItemDamageValue
;================================================================================
; Misc Stats
;--------------------------------------------------------------------------------
org $80F970
JSL OnAga1Defeated
org $829E2E ; <- 11E2E - module_ganon_emerges.asm : 59 (JSL Dungeon_SaveRoomDataWRAM.justKeys)
JSL OnAga2Defeated
;--------------------------------------------------------------------------------
@@ -1414,6 +1412,7 @@ NOP #3 ; Not sure why this is here
;--------------------------------------------------------------------------------
org $87A205 : JSL.l RebuildHUD_update_long
org $8AEF62 : JSL.l RebuildHUD_update_long
org $87A1A4 : JSL.l RebuildHUD_update_long
org $87A1CF : JSL.l RebuildHUD_update_long
org $87A235 : JSL.l RebuildHUD_update_long
;--------------------------------------------------------------------------------
@@ -2594,20 +2593,18 @@ NOP #1
;================================================================================
; Text Renderer
;--------------------------------------------------------------------------------
if !FEATURE_NEW_TEXT
org $8EF51B : JML RenderCharExtended
org $8EF520 : RenderCharExtended_returnOriginal:
org $8EF567 : RenderCharExtended_returnUncompressed:
org $8EF356 : JSL RenderCharLookupWidth
org $8EF3BA : JSL RenderCharLookupWidth
org $8EF48E : JML RenderCharLookupWidthDraw
org $8EF499 : RenderCharLookupWidthDraw_return:
org $8EF6AA : JML RenderCharToMapExtended
org $8EF6C2 : RenderCharToMapExtended_return:
org $8EFA50 : JSL RenderCharSetColorExtended
org $8EEE5D : JSL RenderCharSetColorExtended_init
org $8EF285 : JSL RenderCharSetColorExtended_close : NOP
endif
org $8EF51B : JML RenderCharExtended
org $8EF520 : RenderCharExtended_returnOriginal:
org $8EF567 : RenderCharExtended_returnUncompressed:
org $8EF356 : JSL RenderCharLookupWidth
org $8EF3BA : JSL RenderCharLookupWidth
org $8EF48E : JML RenderCharLookupWidthDraw
org $8EF499 : RenderCharLookupWidthDraw_return:
org $8EF6AA : JML RenderCharToMapExtended
org $8EF6C2 : RenderCharToMapExtended_return:
org $8EFA50 : JSL RenderCharSetColorExtended
org $8EEE5D : JSL RenderCharSetColorExtended_init
org $8EF285 : JSL RenderCharSetColorExtended_close : NOP
;================================================================================
; VRAM

View File

@@ -181,13 +181,17 @@ AddInventory:
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
REP #$30
TYA : AND.w #$00FF : ASL : TAX
SEP #$20
LDA.w InventoryTable_properties,X : BIT.b #$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
@@ -203,14 +207,17 @@ AddInventory:
TYA
STA.l TotalItemCounter
.done
SEP #$30
PLB : PLP : PLY : PLX : PLA
RTL
ShopCheck:
; In: X - Receipt ID << 1
; TODO: If we write all shops, we can use the ShopPurchase flag instead of this
PHX
LDA.b IndoorsFlag : BEQ .count
LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ .count
LDA.w InventoryTable_properties,Y : BIT.b #$02 : BNE .count
LDA.w InventoryTable_properties,X : BIT.b #$02 : BNE .count
REP #$20
LDA.b RoomIndex
CMP.w #274 : BEQ .nocount ; dark world death mountain shop, ornamental shield shop
@@ -225,15 +232,20 @@ ShopCheck:
SEP #$20
.count
CLC
PLX
RTS
.nocount
SEP #$21
PLX
RTS
DungeonIncrement:
LDA.w InventoryTable_properties,Y : BIT.b #$40 : BEQ +
; In: X - Receipt ID << 1
PHX
LDA.w InventoryTable_properties,X : BIT.b #$40 : BEQ +
JSL.l CountChestKeyLong
+
SEP #$10
LDA.b IndoorsFlag : BEQ .done
LDA.w DungeonID : BMI .done
CMP.l BallNChainDungeon : BNE +
@@ -243,36 +255,41 @@ DungeonIncrement:
LDA.l SewersLocations : INC : STA.l SewersLocations : STA.l HCLocations
BRA .done
+
LSR : TAX : LDA.l DungeonLocationsChecked, X : INC : STA.l DungeonLocationsChecked, X
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
REP #$11
PLX
RTS
.ballchain_bigkey
LDA.l BigKeysBigChests
CLC : ADC.b #$10
STA.l BigKeysBigChests
REP #$10
PLX
SEC
RTS
StampItem:
REP #$30
TYA : ASL : TAX
LDA.w InventoryTable_stamp,X : BEQ .skip
STA.b Scrap0B
LDA.b [Scrap0B] : BNE .skip
INC.b Scrap0B : INC.b Scrap0B
LDA.b [Scrap0B] : BNE .skip
DEC.b Scrap0B : DEC.b Scrap0B
LDA.l NMIFrames : STA.b [Scrap0B]
INC.b Scrap0B : INC.b Scrap0B
LDA.l NMIFrames+2 : STA.b [Scrap0B]
.skip
SEP #$20
RTS
IncrementYAItems:
LDA.w InventoryTable_properties,Y
PHX
LDA.w InventoryTable_properties,X
BIT.b #$10 : BNE .bomb_check
BIT.b #$20 : BNE .bow_check
BIT.b #$04 : BEQ .not_y
@@ -286,28 +303,29 @@ IncrementYAItems:
LDA.l YAItemCounter : AND.b #$F8 : STA.l YAItemCounter
TXA : ORA.l YAItemCounter : STA.l YAItemCounter
.done
PLX
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
+
PLX
RTS
IncrementByOne:
PHX
REP #$20
TYA : ASL : TAX
LDA.w InventoryTable_stat,X : BEQ .skip
STA.b Scrap0B
SEP #$21
LDA.b #$00 : ADC.b [Scrap0B] : STA.b [Scrap0B]
.skip
SEP #$20
PLX
RTS
IncrementBossSword:

View File

@@ -1150,6 +1150,7 @@ OverworldMapChangePointers:
dw $2C18, $2C98
dw $2D0A, $2D0C, $2D10, $2D14
dw $2D16, $2D8A, $2D8C, $2D8E
dw $2C94, $2C92, $2B8E
dw $2D94|!OWW_STOP
dw !OWW_ArbTileCopy

View File

@@ -85,19 +85,20 @@
; InventoryTable
;------------------------------------------------------------------------------
; .properties [0x01] - $A2C000 (0x114000 PC)
; • p k w o a y s t
; • - - - - - - - - p k w o a y s t
; t = Count for total item counter | s = Count for total in shops
; y = Y item | a = A item
; o = Bomb item | w = Bow item
; k = Chest Key | p = Crystal prize behavior (sparkle, etc) if set
; .stat [0x02] - $A2C100 (0x114100 PC)
; • Pointer to address in bank $7E. Increments byte by one if stats not locked.
; .stamp [0x02] - $A2C300 (0x114300 PC)
; .stamp [0x02] - $A2C200 (0x114200 PC)
; • Pointer to address in bank $7E. Stamps 32-bit frame time if stats not locked.
; .stat [0x02] - $A2C400 (0x114400 PC)
; • Pointer to address in bank $7E. Increments byte by one if stats not locked.
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
; ItemReceiptGraphicsOffsets & StandingItemGraphicsOffsets
; ItemReceiptGraphicsOffsets - $22C600 (0x114600)
; StandingItemGraphicsOffsets - $22C800 (0x114800)
;------------------------------------------------------------------------------
; Each receipt ID has one word-length entry. Decompressed vanilla item graphics
; are located starting at BigDecompressionBuffer. The graphics routines use the
@@ -450,7 +451,7 @@ endmacro
%SpriteProps($21, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 21 - Net
%SpriteProps($22, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 22 - Blue mail
%SpriteProps($23, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 23 - Red mail
%SpriteProps($24, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; 24 - Small key
%SpriteProps($24, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; 24 - Small key
%SpriteProps($25, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 25 - Compass
%SpriteProps($26, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 26 - Heart container from 4/4
%SpriteProps($27, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 27 - Bomb
@@ -574,22 +575,22 @@ endmacro
%SpriteProps($9D, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 9D - Big key of Eastern Palace
%SpriteProps($9E, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 9E - Big key of Hyrule Castle
%SpriteProps($9F, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 9F - Big key of Sewers
%SpriteProps($A0, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A0 - Small key of Sewers
%SpriteProps($A1, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A1 - Small key of Hyrule Castle
%SpriteProps($A2, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A2 - Small key of Eastern Palace
%SpriteProps($A3, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A3 - Small key of Desert Palace
%SpriteProps($A4, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A4 - Small key of Agahnim's Tower
%SpriteProps($A5, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A5 - Small key of Swamp Palace
%SpriteProps($A6, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A6 - Small key of Dark Palace
%SpriteProps($A7, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A7 - Small key of Misery Mire
%SpriteProps($A8, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A8 - Small key of Skull Woods
%SpriteProps($A9, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A9 - Small key of Ice Palace
%SpriteProps($AA, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; AA - Small key of Tower of Hera
%SpriteProps($AB, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; AB - Small key of Thieves' Town
%SpriteProps($AC, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; AC - Small key of Turtle Rock
%SpriteProps($AD, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; AD - Small key of Ganon's Tower
%SpriteProps($A0, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; A0 - Small key of Sewers
%SpriteProps($A1, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; A1 - Small key of Hyrule Castle
%SpriteProps($A2, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; A2 - Small key of Eastern Palace
%SpriteProps($A3, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; A3 - Small key of Desert Palace
%SpriteProps($A4, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; A4 - Small key of Agahnim's Tower
%SpriteProps($A5, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; A5 - Small key of Swamp Palace
%SpriteProps($A6, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; A6 - Small key of Dark Palace
%SpriteProps($A7, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; A7 - Small key of Misery Mire
%SpriteProps($A8, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; A8 - Small key of Skull Woods
%SpriteProps($A9, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; A9 - Small key of Ice Palace
%SpriteProps($AA, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; AA - Small key of Tower of Hera
%SpriteProps($AB, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; AB - Small key of Thieves' Town
%SpriteProps($AC, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; AC - Small key of Turtle Rock
%SpriteProps($AD, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; AD - Small key of Ganon's Tower
%SpriteProps($AE, 2, 2, $02, $02, $0000) ; AE - Reserved
%SpriteProps($AF, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; AF - Generic small key
%SpriteProps($AF, 0, 0, $02, $04, PalettesVanilla_blue_ice+$0E) ; AF - Generic small key
%SpriteProps($B0, 2, 2, $80, $80, PalettesCustom_crystal) ; B0 - Crystal 6
%SpriteProps($B1, 2, 2, $80, $80, PalettesCustom_crystal) ; B1 - Crystal 1
%SpriteProps($B2, 2, 2, $80, $80, PalettesCustom_crystal) ; B2 - Crystal 5
@@ -672,280 +673,280 @@ endmacro
%SpriteProps($FF, 2, 2, $04, $04, $0000) ; FF -
;------------------------------------------------------------------------------
; Properties: p k w o a y s t
; Properties: - - - - - - - - p k w o a y s t
; t = Count for total item counter | s = Count for total in shops
; y = Y item | a = A item
; o = Bomb item | w = Bow item
; k = Chest Key | p = Crystal prize behavior (sparkle, etc) if set
InventoryTable:
.properties : fillbyte $00 : fill 256 ; See above
.properties : fillword $0000 : fill 256*2 ; See above
.stamp : fillword $0000 : fill 256*2 ; Address to stamp with 32-bit time (bank $7E)
.stat : fillword $0000 : fill 256*2 ; Address to increment by one (bank $7E)
macro InventoryItem(id, props, stamp, stat)
pushpc
org InventoryTable_properties+<id> : db <props>
org InventoryTable_properties+<id>+<id> : dw <props>
org InventoryTable_stamp+<id>+<id> : dw <stamp>
org InventoryTable_stat+<id>+<id> : dw <stat>
pullpc
endmacro
%InventoryItem($00, $81, SwordTime, $0000) ; 00 - Fighter sword & Shield
%InventoryItem($01, $81, SwordTime, $0000) ; 01 - Master sword
%InventoryItem($02, $01, SwordTime, $0000) ; 02 - Tempered sword
%InventoryItem($03, $81, SwordTime, $0000) ; 03 - Butter sword
%InventoryItem($04, $81, $0000, $0000) ; 04 - Fighter shield
%InventoryItem($05, $81, $0000, $0000) ; 05 - Fire shield
%InventoryItem($06, $81, $0000, $0000) ; 06 - Mirror shield
%InventoryItem($07, $85, $0000, $0000) ; 07 - Fire rod
%InventoryItem($08, $85, $0000, $0000) ; 08 - Ice rod
%InventoryItem($09, $85, $0000, $0000) ; 09 - Hammer
%InventoryItem($0A, $85, $0000, $0000) ; 0A - Hookshot
%InventoryItem($0B, $85, $0000, $0000) ; 0B - Bow
%InventoryItem($0C, $85, $0000, $0000) ; 0C - Blue Boomerang
%InventoryItem($0D, $85, $0000, $0000) ; 0D - Powder
%InventoryItem($0E, $81, $0000, $0000) ; 0E - Bottle refill (bee)
%InventoryItem($0F, $85, $0000, $0000) ; 0F - Bombos
%InventoryItem($10, $85, $0000, $0000) ; 10 - Ether
%InventoryItem($11, $85, $0000, $0000) ; 11 - Quake
%InventoryItem($12, $85, $0000, $0000) ; 12 - Lamp
%InventoryItem($13, $85, $0000, $0000) ; 13 - Shovel
%InventoryItem($14, $85, FluteTime, $0000) ; 14 - Flute (inactive)
%InventoryItem($15, $85, $0000, $0000) ; 15 - Somaria
%InventoryItem($16, $85, $0000, $0000) ; 16 - Bottle
%InventoryItem($17, $01, $0000, HeartPieceCounter) ; 17 - Heart piece
%InventoryItem($18, $85, $0000, $0000) ; 18 - Byrna
%InventoryItem($19, $85, $0000, $0000) ; 19 - Cape
%InventoryItem($1A, $85, MirrorTime, $0000) ; 1A - Mirror
%InventoryItem($1B, $89, $0000, $0000) ; 1B - Glove
%InventoryItem($1C, $89, $0000, $0000) ; 1C - Mitts
%InventoryItem($1D, $85, $0000, $0000) ; 1D - Book
%InventoryItem($1E, $89, $0000, $0000) ; 1E - Flippers
%InventoryItem($1F, $81, $0000, $0000) ; 1F - Pearl
%InventoryItem($20, $80, $0000, $0000) ; 20 - Crystal
%InventoryItem($21, $85, $0000, $0000) ; 21 - Net
%InventoryItem($22, $81, $0000, $0000) ; 22 - Blue mail
%InventoryItem($23, $81, $0000, $0000) ; 23 - Red mail
%InventoryItem($24, $41, $0000, SmallKeyCounter) ; 24 - Small key
%InventoryItem($25, $01, $0000, $0000) ; 25 - Compass
%InventoryItem($26, $00, $0000, $0000) ; 26 - Heart container from 4/4
%InventoryItem($27, $15, $0000, $0000) ; 27 - Bomb
%InventoryItem($28, $15, $0000, $0000) ; 28 - 3 bombs
%InventoryItem($29, $85, $0000, $0000) ; 29 - Mushroom
%InventoryItem($2A, $05, $0000, $0000) ; 2A - Red boomerang
%InventoryItem($2B, $85, $0000, $0000) ; 2B - Full bottle (red)
%InventoryItem($2C, $85, $0000, $0000) ; 2C - Full bottle (green)
%InventoryItem($2D, $85, $0000, $0000) ; 2D - Full bottle (blue)
%InventoryItem($2E, $80, $0000, $0000) ; 2E - Potion refill (red)
%InventoryItem($2F, $80, $0000, $0000) ; 2F - Potion refill (green)
%InventoryItem($30, $80, $0000, $0000) ; 30 - Potion refill (blue)
%InventoryItem($31, $11, $0000, $0000) ; 31 - 10 bombs
%InventoryItem($32, $01, $0000, $0000) ; 32 - Big key
%InventoryItem($33, $01, $0000, $0000) ; 33 - Map
%InventoryItem($34, $01, $0000, $0000) ; 34 - 1 rupee
%InventoryItem($35, $01, $0000, $0000) ; 35 - 5 rupees
%InventoryItem($36, $01, $0000, $0000) ; 36 - 20 rupees
%InventoryItem($37, $00, $0000, $0000) ; 37 - Green pendant
%InventoryItem($38, $00, $0000, $0000) ; 38 - Red pendant
%InventoryItem($39, $00, $0000, $0000) ; 39 - Blue pendant
%InventoryItem($3A, $A5, $0000, $0000) ; 3A - Bow And Arrows
%InventoryItem($3B, $A5, $0000, $0000) ; 3B - Silver Bow
%InventoryItem($3C, $85, $0000, $0000) ; 3C - Full bottle (bee)
%InventoryItem($3D, $85, $0000, $0000) ; 3D - Full bottle (fairy)
%InventoryItem($3E, $01, $0000, HeartContainerCounter) ; 3E - Boss heart
%InventoryItem($3F, $81, $0000, HeartContainerCounter) ; 3F - Sanc heart
%InventoryItem($40, $01, $0000, $0000) ; 40 - 100 rupees
%InventoryItem($41, $01, $0000, $0000) ; 41 - 50 rupees
%InventoryItem($42, $01, $0000, $0000) ; 42 - Heart
%InventoryItem($43, $01, $0000, $0000) ; 43 - Arrow
%InventoryItem($44, $01, $0000, $0000) ; 44 - 10 arrows
%InventoryItem($45, $01, $0000, $0000) ; 45 - Small magic
%InventoryItem($46, $01, $0000, $0000) ; 46 - 300 rupees
%InventoryItem($47, $01, $0000, $0000) ; 47 - 20 rupees green
%InventoryItem($48, $85, $0000, $0000) ; 48 - Full bottle (good bee)
%InventoryItem($49, $81, $0000, $0000) ; 49 - Tossed fighter sword
%InventoryItem($4A, $85, FluteTime, $0000) ; 4A - Active Flute
%InventoryItem($4B, $89, BootsTime, $0000) ; 4B - Boots
%InventoryItem($4C, $15, $0000, CapacityUpgrades) ; 4C - Bomb capacity (50)
%InventoryItem($4D, $01, $0000, CapacityUpgrades) ; 4D - Arrow capacity (70)
%InventoryItem($4E, $81, $0000, CapacityUpgrades) ; 4E - 1/2 magic
%InventoryItem($4F, $81, $0000, CapacityUpgrades) ; 4F - 1/4 magic
%InventoryItem($50, $81, SwordTime, $0000) ; 50 - Master Sword (safe)
%InventoryItem($51, $15, $0000, CapacityUpgrades) ; 51 - Bomb capacity (+5)
%InventoryItem($52, $15, $0000, CapacityUpgrades) ; 52 - Bomb capacity (+10)
%InventoryItem($53, $01, $0000, CapacityUpgrades) ; 53 - Arrow capacity (+5)
%InventoryItem($54, $01, $0000, CapacityUpgrades) ; 54 - Arrow capacity (+10)
%InventoryItem($55, $01, $0000, $0000) ; 55 - Programmable item 1
%InventoryItem($56, $01, $0000, $0000) ; 56 - Programmable item 2
%InventoryItem($57, $01, $0000, $0000) ; 57 - Programmable item 3
%InventoryItem($58, $81, $0000, $0000) ; 58 - Upgrade-only Silver Arrows
%InventoryItem($59, $01, $0000, $0000) ; 59 - Rupoor
%InventoryItem($5A, $01, $0000, $0000) ; 5A - Nothing
%InventoryItem($5B, $81, $0000, $0000) ; 5B - Red clock
%InventoryItem($5C, $81, $0000, $0000) ; 5C - Blue clock
%InventoryItem($5D, $81, $0000, $0000) ; 5D - Green clock
%InventoryItem($5E, $81, $0000, $0000) ; 5E - Progressive sword
%InventoryItem($5F, $81, $0000, $0000) ; 5F - Progressive shield
%InventoryItem($60, $81, $0000, $0000) ; 60 - Progressive armor
%InventoryItem($61, $89, $0000, $0000) ; 61 - Progressive glove
%InventoryItem($62, $01, $0000, $0000) ; 62 - RNG pool item (single)
%InventoryItem($63, $01, $0000, $0000) ; 63 - RNG pool item (multi)
%InventoryItem($64, $A5, $0000, $0000) ; 64 - Progressive bow
%InventoryItem($65, $A5, $0000, $0000) ; 65 - Progressive bow
%InventoryItem($66, $01, $0000, $0000) ; 66 -
%InventoryItem($67, $01, $0000, $0000) ; 67 -
%InventoryItem($68, $01, $0000, $0000) ; 68 -
%InventoryItem($69, $01, $0000, $0000) ; 69 -
%InventoryItem($6A, $81, $0000, $0000) ; 6A - Triforce
%InventoryItem($6B, $81, $0000, $0000) ; 6B - Power star
%InventoryItem($6C, $81, $0000, $0000) ; 6C - Triforce Piece
%InventoryItem($6D, $01, $0000, $0000) ; 6D - Server request item
%InventoryItem($6E, $01, $0000, $0000) ; 6E - Server request item (dungeon drop)
%InventoryItem($6F, $01, $0000, $0000) ; 6F -
%InventoryItem($70, $01, $0000, $0000) ; 70 - Map of Light World
%InventoryItem($71, $01, $0000, $0000) ; 71 - Map of Dark World
%InventoryItem($72, $01, $0000, $0000) ; 72 - Map of Ganon's Tower
%InventoryItem($73, $01, $0000, $0000) ; 73 - Map of Turtle Rock
%InventoryItem($74, $01, $0000, $0000) ; 74 - Map of Thieves' Town
%InventoryItem($75, $01, $0000, $0000) ; 75 - Map of Tower of Hera
%InventoryItem($76, $01, $0000, $0000) ; 76 - Map of Ice Palace
%InventoryItem($77, $01, $0000, $0000) ; 77 - Map of Skull Woods
%InventoryItem($78, $01, $0000, $0000) ; 78 - Map of Misery Mire
%InventoryItem($79, $01, $0000, $0000) ; 79 - Map of Dark Palace
%InventoryItem($7A, $01, $0000, $0000) ; 7A - Map of Swamp Palace
%InventoryItem($7B, $01, $0000, $0000) ; 7B - Map of Agahnim's Tower
%InventoryItem($7C, $01, $0000, $0000) ; 7C - Map of Desert Palace
%InventoryItem($7D, $01, $0000, $0000) ; 7D - Map of Eastern Palace
%InventoryItem($7E, $01, $0000, $0000) ; 7E - Map of Hyrule Castle
%InventoryItem($7F, $01, $0000, $0000) ; 7F - Map of Sewers
%InventoryItem($80, $01, $0000, $0000) ; 80 - Compass of Light World
%InventoryItem($81, $01, $0000, $0000) ; 81 - Compass of Dark World
%InventoryItem($82, $01, $0000, $0000) ; 82 - Compass of Ganon's Tower
%InventoryItem($83, $01, $0000, $0000) ; 83 - Compass of Turtle Rock
%InventoryItem($84, $01, $0000, $0000) ; 84 - Compass of Thieves' Town
%InventoryItem($85, $01, $0000, $0000) ; 85 - Compass of Tower of Hera
%InventoryItem($86, $01, $0000, $0000) ; 86 - Compass of Ice Palace
%InventoryItem($87, $01, $0000, $0000) ; 87 - Compass of Skull Woods
%InventoryItem($88, $01, $0000, $0000) ; 88 - Compass of Misery Mire
%InventoryItem($89, $01, $0000, $0000) ; 89 - Compass of Dark Palace
%InventoryItem($8A, $01, $0000, $0000) ; 8A - Compass of Swamp Palace
%InventoryItem($8B, $01, $0000, $0000) ; 8B - Compass of Agahnim's Tower
%InventoryItem($8C, $01, $0000, $0000) ; 8C - Compass of Desert Palace
%InventoryItem($8D, $01, $0000, $0000) ; 8D - Compass of Eastern Palace
%InventoryItem($8E, $01, $0000, $0000) ; 8E - Compass of Hyrule Castle
%InventoryItem($8F, $01, $0000, $0000) ; 8F - Compass of Sewers
%InventoryItem($90, $81, $0000, $0000) ; 90 - Skull key
%InventoryItem($91, $01, $0000, $0000) ; 91 - Reserved
%InventoryItem($92, $01, $0000, $0000) ; 92 - Big key of Ganon's Tower
%InventoryItem($93, $01, $0000, $0000) ; 93 - Big key of Turtle Rock
%InventoryItem($94, $01, $0000, $0000) ; 94 - Big key of Thieves' Town
%InventoryItem($95, $01, $0000, $0000) ; 95 - Big key of Tower of Hera
%InventoryItem($96, $01, $0000, $0000) ; 96 - Big key of Ice Palace
%InventoryItem($97, $01, $0000, $0000) ; 97 - Big key of Skull Woods
%InventoryItem($98, $01, $0000, $0000) ; 98 - Big key of Misery Mire
%InventoryItem($99, $01, $0000, $0000) ; 99 - Big key of Dark Palace
%InventoryItem($9A, $01, $0000, $0000) ; 9A - Big key of Swamp Palace
%InventoryItem($9B, $01, $0000, $0000) ; 9B - Big key of Agahnim's Tower
%InventoryItem($9C, $01, $0000, $0000) ; 9C - Big key of Desert Palace
%InventoryItem($9D, $01, $0000, $0000) ; 9D - Big key of Eastern Palace
%InventoryItem($9E, $01, $0000, $0000) ; 9E - Big key of Hyrule Castle
%InventoryItem($9F, $01, $0000, $0000) ; 9F - Big key of Sewers
%InventoryItem($A0, $41, $0000, SmallKeyCounter) ; A0 - Small key of Sewers
%InventoryItem($A1, $41, $0000, SmallKeyCounter) ; A1 - Small key of Hyrule Castle
%InventoryItem($A2, $41, $0000, SmallKeyCounter) ; A2 - Small key of Eastern Palace
%InventoryItem($A3, $41, $0000, SmallKeyCounter) ; A3 - Small key of Desert Palace
%InventoryItem($A4, $41, $0000, SmallKeyCounter) ; A4 - Small key of Agahnim's Tower
%InventoryItem($A5, $41, $0000, SmallKeyCounter) ; A5 - Small key of Swamp Palace
%InventoryItem($A6, $41, $0000, SmallKeyCounter) ; A6 - Small key of Dark Palace
%InventoryItem($A7, $41, $0000, SmallKeyCounter) ; A7 - Small key of Misery Mire
%InventoryItem($A8, $41, $0000, SmallKeyCounter) ; A8 - Small key of Skull Woods
%InventoryItem($A9, $41, $0000, SmallKeyCounter) ; A9 - Small key of Ice Palace
%InventoryItem($AA, $41, $0000, SmallKeyCounter) ; AA - Small key of Tower of Hera
%InventoryItem($AB, $41, $0000, SmallKeyCounter) ; AB - Small key of Thieves' Town
%InventoryItem($AC, $41, $0000, SmallKeyCounter) ; AC - Small key of Turtle Rock
%InventoryItem($AD, $41, $0000, SmallKeyCounter) ; AD - Small key of Ganon's Tower
%InventoryItem($AE, $01, $0000, $0000) ; AE - Reserved
%InventoryItem($AF, $01, $0000, SmallKeyCounter) ; AF - Generic small key
%InventoryItem($B0, $81, $0000, $0000) ; B0 - Crystal 6
%InventoryItem($B1, $81, $0000, $0000) ; B1 - Crystal 1
%InventoryItem($B2, $81, $0000, $0000) ; B2 - Crystal 5
%InventoryItem($B3, $81, $0000, $0000) ; B3 - Crystal 7
%InventoryItem($B4, $81, $0000, $0000) ; B4 - Crystal 2
%InventoryItem($B5, $81, $0000, $0000) ; B5 - Crystal 4
%InventoryItem($B6, $81, $0000, $0000) ; B6 - Crystal 3
%InventoryItem($B7, $01, $0000, $0000) ; B7 - Reserved
%InventoryItem($B8, $01, $0000, $0000) ; B8 -
%InventoryItem($B9, $01, $0000, $0000) ; B9 -
%InventoryItem($BA, $01, $0000, $0000) ; BA -
%InventoryItem($BB, $01, $0000, $0000) ; BB -
%InventoryItem($BC, $01, $0000, $0000) ; BC -
%InventoryItem($BD, $01, $0000, $0000) ; BD -
%InventoryItem($BE, $01, $0000, $0000) ; BE -
%InventoryItem($BF, $01, $0000, $0000) ; BF -
%InventoryItem($C0, $15, SwordTime, $0000) ; C0 - Progressive Bombs
%InventoryItem($C1, $85, SwordTime, $0000) ; C1 - Progressive Cane
%InventoryItem($C2, $85, SwordTime, $0000) ; C2 - Progressive Bug Net
%InventoryItem($C3, $01, $0000, $0000) ; C3 -
%InventoryItem($C4, $01, $0000, $0000) ; C4 -
%InventoryItem($C5, $01, $0000, $0000) ; C5 -
%InventoryItem($C6, $01, $0000, $0000) ; C6 -
%InventoryItem($C7, $01, $0000, $0000) ; C7 -
%InventoryItem($C8, $01, $0000, $0000) ; C8 -
%InventoryItem($C9, $01, $0000, $0000) ; C9 -
%InventoryItem($CA, $01, $0000, $0000) ; CA -
%InventoryItem($CB, $01, $0000, $0000) ; CB -
%InventoryItem($CC, $01, $0000, $0000) ; CC -
%InventoryItem($CD, $01, $0000, $0000) ; CD -
%InventoryItem($CE, $01, $0000, $0000) ; CE -
%InventoryItem($CF, $01, $0000, $0000) ; CF -
%InventoryItem($D0, $01, $0000, $0000) ; D0 -
%InventoryItem($D1, $01, $0000, $0000) ; D1 -
%InventoryItem($D2, $01, $0000, $0000) ; D2 -
%InventoryItem($D3, $01, $0000, $0000) ; D3 -
%InventoryItem($D4, $01, $0000, $0000) ; D4 -
%InventoryItem($D5, $01, $0000, $0000) ; D5 -
%InventoryItem($D6, $01, $0000, $0000) ; D6 -
%InventoryItem($D7, $01, $0000, $0000) ; D7 -
%InventoryItem($D8, $01, $0000, $0000) ; D8 -
%InventoryItem($D9, $01, $0000, $0000) ; D9 -
%InventoryItem($DA, $01, $0000, $0000) ; DA -
%InventoryItem($DB, $01, $0000, $0000) ; DB -
%InventoryItem($DC, $01, $0000, $0000) ; DC -
%InventoryItem($DD, $01, $0000, $0000) ; DD -
%InventoryItem($DE, $01, $0000, $0000) ; DE -
%InventoryItem($DF, $01, $0000, $0000) ; DF -
%InventoryItem($E0, $01, $0000, $0000) ; E0 -
%InventoryItem($E1, $01, $0000, $0000) ; E1 -
%InventoryItem($E2, $01, $0000, $0000) ; E2 -
%InventoryItem($E3, $01, $0000, $0000) ; E3 -
%InventoryItem($E4, $01, $0000, $0000) ; E4 -
%InventoryItem($E5, $01, $0000, $0000) ; E5 -
%InventoryItem($E6, $01, $0000, $0000) ; E6 -
%InventoryItem($E7, $01, $0000, $0000) ; E7 -
%InventoryItem($E8, $01, $0000, $0000) ; E8 -
%InventoryItem($E9, $01, $0000, $0000) ; E9 -
%InventoryItem($EA, $01, $0000, $0000) ; EA -
%InventoryItem($EB, $01, $0000, $0000) ; EB -
%InventoryItem($EC, $01, $0000, $0000) ; EC -
%InventoryItem($ED, $01, $0000, $0000) ; ED -
%InventoryItem($EE, $01, $0000, $0000) ; EE -
%InventoryItem($EF, $01, $0000, $0000) ; EF -
%InventoryItem($F0, $01, $0000, $0000) ; F0 -
%InventoryItem($F1, $01, $0000, $0000) ; F1 -
%InventoryItem($F2, $01, $0000, $0000) ; F2 -
%InventoryItem($F3, $01, $0000, $0000) ; F3 -
%InventoryItem($F4, $01, $0000, $0000) ; F4 -
%InventoryItem($F5, $01, $0000, $0000) ; F5 -
%InventoryItem($F6, $01, $0000, $0000) ; F6 -
%InventoryItem($F7, $01, $0000, $0000) ; F7 -
%InventoryItem($F8, $01, $0000, $0000) ; F8 -
%InventoryItem($F9, $01, $0000, $0000) ; F9 -
%InventoryItem($FA, $01, $0000, $0000) ; FA -
%InventoryItem($FB, $01, $0000, $0000) ; FB -
%InventoryItem($FC, $01, $0000, $0000) ; FC -
%InventoryItem($FD, $01, $0000, $0000) ; FD -
%InventoryItem($FE, $01, $0000, $0000) ; FE - Server request (async)
%InventoryItem($FF, $01, $0000, $0000) ; FF -
%InventoryItem($00, $0081, SwordTime, $0000) ; 00 - Fighter sword & Shield
%InventoryItem($01, $0081, SwordTime, $0000) ; 01 - Master sword
%InventoryItem($02, $0001, SwordTime, $0000) ; 02 - Tempered sword
%InventoryItem($03, $0081, SwordTime, $0000) ; 03 - Butter sword
%InventoryItem($04, $0081, $0000, $0000) ; 04 - Fighter shield
%InventoryItem($05, $0081, $0000, $0000) ; 05 - Fire shield
%InventoryItem($06, $0081, $0000, $0000) ; 06 - Mirror shield
%InventoryItem($07, $0085, $0000, $0000) ; 07 - Fire rod
%InventoryItem($08, $0085, $0000, $0000) ; 08 - Ice rod
%InventoryItem($09, $0085, $0000, $0000) ; 09 - Hammer
%InventoryItem($0A, $0085, $0000, $0000) ; 0A - Hookshot
%InventoryItem($0B, $0085, $0000, $0000) ; 0B - Bow
%InventoryItem($0C, $0085, $0000, $0000) ; 0C - Blue Boomerang
%InventoryItem($0D, $0085, $0000, $0000) ; 0D - Powder
%InventoryItem($0E, $0081, $0000, $0000) ; 0E - Bottle refill (bee)
%InventoryItem($0F, $0085, $0000, $0000) ; 0F - Bombos
%InventoryItem($10, $0085, $0000, $0000) ; 10 - Ether
%InventoryItem($11, $0085, $0000, $0000) ; 11 - Quake
%InventoryItem($12, $0085, $0000, $0000) ; 12 - Lamp
%InventoryItem($13, $0085, $0000, $0000) ; 13 - Shovel
%InventoryItem($14, $0085, FluteTime, $0000) ; 14 - Flute (inactive)
%InventoryItem($15, $0085, $0000, $0000) ; 15 - Somaria
%InventoryItem($16, $0085, $0000, $0000) ; 16 - Bottle
%InventoryItem($17, $0001, $0000, HeartPieceCounter) ; 17 - Heart piece
%InventoryItem($18, $0085, $0000, $0000) ; 18 - Byrna
%InventoryItem($19, $0085, $0000, $0000) ; 19 - Cape
%InventoryItem($1A, $0085, MirrorTime, $0000) ; 1A - Mirror
%InventoryItem($1B, $0089, $0000, $0000) ; 1B - Glove
%InventoryItem($1C, $0089, $0000, $0000) ; 1C - Mitts
%InventoryItem($1D, $0085, $0000, $0000) ; 1D - Book
%InventoryItem($1E, $0089, $0000, $0000) ; 1E - Flippers
%InventoryItem($1F, $0081, $0000, $0000) ; 1F - Pearl
%InventoryItem($20, $0080, $0000, $0000) ; 20 - Crystal
%InventoryItem($21, $0085, $0000, $0000) ; 21 - Net
%InventoryItem($22, $0081, $0000, $0000) ; 22 - Blue mail
%InventoryItem($23, $0081, $0000, $0000) ; 23 - Red mail
%InventoryItem($24, $0041, $0000, SmallKeyCounter) ; 24 - Small key
%InventoryItem($25, $0001, $0000, $0000) ; 25 - Compass
%InventoryItem($26, $0000, $0000, $0000) ; 26 - Heart container from 4/4
%InventoryItem($27, $0015, $0000, $0000) ; 27 - Bomb
%InventoryItem($28, $0015, $0000, $0000) ; 28 - 3 bombs
%InventoryItem($29, $0085, $0000, $0000) ; 29 - Mushroom
%InventoryItem($2A, $0005, $0000, $0000) ; 2A - Red boomerang
%InventoryItem($2B, $0085, $0000, $0000) ; 2B - Full bottle (red)
%InventoryItem($2C, $0085, $0000, $0000) ; 2C - Full bottle (green)
%InventoryItem($2D, $0085, $0000, $0000) ; 2D - Full bottle (blue)
%InventoryItem($2E, $0080, $0000, $0000) ; 2E - Potion refill (red)
%InventoryItem($2F, $0080, $0000, $0000) ; 2F - Potion refill (green)
%InventoryItem($30, $0080, $0000, $0000) ; 30 - Potion refill (blue)
%InventoryItem($31, $0011, $0000, $0000) ; 31 - 10 bombs
%InventoryItem($32, $0001, $0000, $0000) ; 32 - Big key
%InventoryItem($33, $0001, $0000, $0000) ; 33 - Map
%InventoryItem($34, $0001, $0000, $0000) ; 34 - 1 rupee
%InventoryItem($35, $0001, $0000, $0000) ; 35 - 5 rupees
%InventoryItem($36, $0001, $0000, $0000) ; 36 - 20 rupees
%InventoryItem($37, $0000, $0000, $0000) ; 37 - Green pendant
%InventoryItem($38, $0000, $0000, $0000) ; 38 - Red pendant
%InventoryItem($39, $0000, $0000, $0000) ; 39 - Blue pendant
%InventoryItem($3A, $00A5, $0000, $0000) ; 3A - Bow And Arrows
%InventoryItem($3B, $00A5, $0000, $0000) ; 3B - Silver Bow
%InventoryItem($3C, $0085, $0000, $0000) ; 3C - Full bottle (bee)
%InventoryItem($3D, $0085, $0000, $0000) ; 3D - Full bottle (fairy)
%InventoryItem($3E, $0001, $0000, HeartContainerCounter) ; 3E - Boss heart
%InventoryItem($3F, $0081, $0000, HeartContainerCounter) ; 3F - Sanc heart
%InventoryItem($40, $0001, $0000, $0000) ; 40 - 100 rupees
%InventoryItem($41, $0001, $0000, $0000) ; 41 - 50 rupees
%InventoryItem($42, $0001, $0000, $0000) ; 42 - Heart
%InventoryItem($43, $0001, $0000, $0000) ; 43 - Arrow
%InventoryItem($44, $0001, $0000, $0000) ; 44 - 10 arrows
%InventoryItem($45, $0001, $0000, $0000) ; 45 - Small magic
%InventoryItem($46, $0001, $0000, $0000) ; 46 - 300 rupees
%InventoryItem($47, $0001, $0000, $0000) ; 47 - 20 rupees green
%InventoryItem($48, $0085, $0000, $0000) ; 48 - Full bottle (good bee)
%InventoryItem($49, $0081, $0000, $0000) ; 49 - Tossed fighter sword
%InventoryItem($4A, $0085, FluteTime, $0000) ; 4A - Active Flute
%InventoryItem($4B, $0089, BootsTime, $0000) ; 4B - Boots
%InventoryItem($4C, $0015, $0000, CapacityUpgrades) ; 4C - Bomb capacity (50)
%InventoryItem($4D, $0001, $0000, CapacityUpgrades) ; 4D - Arrow capacity (70)
%InventoryItem($4E, $0081, $0000, CapacityUpgrades) ; 4E - 1/2 magic
%InventoryItem($4F, $0081, $0000, CapacityUpgrades) ; 4F - 1/4 magic
%InventoryItem($50, $0081, SwordTime, $0000) ; 50 - Master Sword (safe)
%InventoryItem($51, $0015, $0000, CapacityUpgrades) ; 51 - Bomb capacity (+5)
%InventoryItem($52, $0015, $0000, CapacityUpgrades) ; 52 - Bomb capacity (+10)
%InventoryItem($53, $0001, $0000, CapacityUpgrades) ; 53 - Arrow capacity (+5)
%InventoryItem($54, $0001, $0000, CapacityUpgrades) ; 54 - Arrow capacity (+10)
%InventoryItem($55, $0001, $0000, $0000) ; 55 - Programmable item 1
%InventoryItem($56, $0001, $0000, $0000) ; 56 - Programmable item 2
%InventoryItem($57, $0001, $0000, $0000) ; 57 - Programmable item 3
%InventoryItem($58, $0081, $0000, $0000) ; 58 - Upgrade-only Silver Arrows
%InventoryItem($59, $0001, $0000, $0000) ; 59 - Rupoor
%InventoryItem($5A, $0001, $0000, $0000) ; 5A - Nothing
%InventoryItem($5B, $0081, $0000, $0000) ; 5B - Red clock
%InventoryItem($5C, $0081, $0000, $0000) ; 5C - Blue clock
%InventoryItem($5D, $0081, $0000, $0000) ; 5D - Green clock
%InventoryItem($5E, $0081, $0000, $0000) ; 5E - Progressive sword
%InventoryItem($5F, $0081, $0000, $0000) ; 5F - Progressive shield
%InventoryItem($60, $0081, $0000, $0000) ; 60 - Progressive armor
%InventoryItem($61, $0089, $0000, $0000) ; 61 - Progressive glove
%InventoryItem($62, $0001, $0000, $0000) ; 62 - RNG pool item (single)
%InventoryItem($63, $0001, $0000, $0000) ; 63 - RNG pool item (multi)
%InventoryItem($64, $00A5, $0000, $0000) ; 64 - Progressive bow
%InventoryItem($65, $00A5, $0000, $0000) ; 65 - Progressive bow
%InventoryItem($66, $0001, $0000, $0000) ; 66 -
%InventoryItem($67, $0001, $0000, $0000) ; 67 -
%InventoryItem($68, $0001, $0000, $0000) ; 68 -
%InventoryItem($69, $0001, $0000, $0000) ; 69 -
%InventoryItem($6A, $0081, $0000, $0000) ; 6A - Triforce
%InventoryItem($6B, $0081, $0000, $0000) ; 6B - Power star
%InventoryItem($6C, $0081, $0000, $0000) ; 6C - Triforce Piece
%InventoryItem($6D, $0001, $0000, $0000) ; 6D - Server request item
%InventoryItem($6E, $0001, $0000, $0000) ; 6E - Server request item (dungeon drop)
%InventoryItem($6F, $0001, $0000, $0000) ; 6F -
%InventoryItem($70, $0001, $0000, $0000) ; 70 - Map of Light World
%InventoryItem($71, $0001, $0000, $0000) ; 71 - Map of Dark World
%InventoryItem($72, $0001, $0000, $0000) ; 72 - Map of Ganon's Tower
%InventoryItem($73, $0001, $0000, $0000) ; 73 - Map of Turtle Rock
%InventoryItem($74, $0001, $0000, $0000) ; 74 - Map of Thieves' Town
%InventoryItem($75, $0001, $0000, $0000) ; 75 - Map of Tower of Hera
%InventoryItem($76, $0001, $0000, $0000) ; 76 - Map of Ice Palace
%InventoryItem($77, $0001, $0000, $0000) ; 77 - Map of Skull Woods
%InventoryItem($78, $0001, $0000, $0000) ; 78 - Map of Misery Mire
%InventoryItem($79, $0001, $0000, $0000) ; 79 - Map of Dark Palace
%InventoryItem($7A, $0001, $0000, $0000) ; 7A - Map of Swamp Palace
%InventoryItem($7B, $0001, $0000, $0000) ; 7B - Map of Agahnim's Tower
%InventoryItem($7C, $0001, $0000, $0000) ; 7C - Map of Desert Palace
%InventoryItem($7D, $0001, $0000, $0000) ; 7D - Map of Eastern Palace
%InventoryItem($7E, $0001, $0000, $0000) ; 7E - Map of Hyrule Castle
%InventoryItem($7F, $0001, $0000, $0000) ; 7F - Map of Sewers
%InventoryItem($80, $0001, $0000, $0000) ; 80 - Compass of Light World
%InventoryItem($81, $0001, $0000, $0000) ; 81 - Compass of Dark World
%InventoryItem($82, $0001, $0000, $0000) ; 82 - Compass of Ganon's Tower
%InventoryItem($83, $0001, $0000, $0000) ; 83 - Compass of Turtle Rock
%InventoryItem($84, $0001, $0000, $0000) ; 84 - Compass of Thieves' Town
%InventoryItem($85, $0001, $0000, $0000) ; 85 - Compass of Tower of Hera
%InventoryItem($86, $0001, $0000, $0000) ; 86 - Compass of Ice Palace
%InventoryItem($87, $0001, $0000, $0000) ; 87 - Compass of Skull Woods
%InventoryItem($88, $0001, $0000, $0000) ; 88 - Compass of Misery Mire
%InventoryItem($89, $0001, $0000, $0000) ; 89 - Compass of Dark Palace
%InventoryItem($8A, $0001, $0000, $0000) ; 8A - Compass of Swamp Palace
%InventoryItem($8B, $0001, $0000, $0000) ; 8B - Compass of Agahnim's Tower
%InventoryItem($8C, $0001, $0000, $0000) ; 8C - Compass of Desert Palace
%InventoryItem($8D, $0001, $0000, $0000) ; 8D - Compass of Eastern Palace
%InventoryItem($8E, $0001, $0000, $0000) ; 8E - Compass of Hyrule Castle
%InventoryItem($8F, $0001, $0000, $0000) ; 8F - Compass of Sewers
%InventoryItem($90, $0081, $0000, $0000) ; 90 - Skull key
%InventoryItem($91, $0001, $0000, $0000) ; 91 - Reserved
%InventoryItem($92, $0001, $0000, $0000) ; 92 - Big key of Ganon's Tower
%InventoryItem($93, $0001, $0000, $0000) ; 93 - Big key of Turtle Rock
%InventoryItem($94, $0001, $0000, $0000) ; 94 - Big key of Thieves' Town
%InventoryItem($95, $0001, $0000, $0000) ; 95 - Big key of Tower of Hera
%InventoryItem($96, $0001, $0000, $0000) ; 96 - Big key of Ice Palace
%InventoryItem($97, $0001, $0000, $0000) ; 97 - Big key of Skull Woods
%InventoryItem($98, $0001, $0000, $0000) ; 98 - Big key of Misery Mire
%InventoryItem($99, $0001, $0000, $0000) ; 99 - Big key of Dark Palace
%InventoryItem($9A, $0001, $0000, $0000) ; 9A - Big key of Swamp Palace
%InventoryItem($9B, $0001, $0000, $0000) ; 9B - Big key of Agahnim's Tower
%InventoryItem($9C, $0001, $0000, $0000) ; 9C - Big key of Desert Palace
%InventoryItem($9D, $0001, $0000, $0000) ; 9D - Big key of Eastern Palace
%InventoryItem($9E, $0001, $0000, $0000) ; 9E - Big key of Hyrule Castle
%InventoryItem($9F, $0001, $0000, $0000) ; 9F - Big key of Sewers
%InventoryItem($A0, $0041, $0000, SmallKeyCounter) ; A0 - Small key of Sewers
%InventoryItem($A1, $0041, $0000, SmallKeyCounter) ; A1 - Small key of Hyrule Castle
%InventoryItem($A2, $0041, $0000, SmallKeyCounter) ; A2 - Small key of Eastern Palace
%InventoryItem($A3, $0041, $0000, SmallKeyCounter) ; A3 - Small key of Desert Palace
%InventoryItem($A4, $0041, $0000, SmallKeyCounter) ; A4 - Small key of Agahnim's Tower
%InventoryItem($A5, $0041, $0000, SmallKeyCounter) ; A5 - Small key of Swamp Palace
%InventoryItem($A6, $0041, $0000, SmallKeyCounter) ; A6 - Small key of Dark Palace
%InventoryItem($A7, $0041, $0000, SmallKeyCounter) ; A7 - Small key of Misery Mire
%InventoryItem($A8, $0041, $0000, SmallKeyCounter) ; A8 - Small key of Skull Woods
%InventoryItem($A9, $0041, $0000, SmallKeyCounter) ; A9 - Small key of Ice Palace
%InventoryItem($AA, $0041, $0000, SmallKeyCounter) ; AA - Small key of Tower of Hera
%InventoryItem($AB, $0041, $0000, SmallKeyCounter) ; AB - Small key of Thieves' Town
%InventoryItem($AC, $0041, $0000, SmallKeyCounter) ; AC - Small key of Turtle Rock
%InventoryItem($AD, $0041, $0000, SmallKeyCounter) ; AD - Small key of Ganon's Tower
%InventoryItem($AE, $0001, $0000, $0000) ; AE - Reserved
%InventoryItem($AF, $0001, $0000, SmallKeyCounter) ; AF - Generic small key
%InventoryItem($B0, $0080, $0000, $0000) ; B0 - Crystal 6
%InventoryItem($B1, $0080, $0000, $0000) ; B1 - Crystal 1
%InventoryItem($B2, $0080, $0000, $0000) ; B2 - Crystal 5
%InventoryItem($B3, $0080, $0000, $0000) ; B3 - Crystal 7
%InventoryItem($B4, $0080, $0000, $0000) ; B4 - Crystal 2
%InventoryItem($B5, $0080, $0000, $0000) ; B5 - Crystal 4
%InventoryItem($B6, $0080, $0000, $0000) ; B6 - Crystal 3
%InventoryItem($B7, $0000, $0000, $0000) ; B7 - Reserved
%InventoryItem($B8, $0001, $0000, $0000) ; B8 -
%InventoryItem($B9, $0001, $0000, $0000) ; B9 -
%InventoryItem($BA, $0001, $0000, $0000) ; BA -
%InventoryItem($BB, $0001, $0000, $0000) ; BB -
%InventoryItem($BC, $0001, $0000, $0000) ; BC -
%InventoryItem($BD, $0001, $0000, $0000) ; BD -
%InventoryItem($BE, $0001, $0000, $0000) ; BE -
%InventoryItem($BF, $0001, $0000, $0000) ; BF -
%InventoryItem($C0, $0015, SwordTime, $0000) ; C0 - Progressive Bombs
%InventoryItem($C1, $0085, SwordTime, $0000) ; C1 - Progressive Cane
%InventoryItem($C2, $0085, SwordTime, $0000) ; C2 - Progressive Bug Net
%InventoryItem($C3, $0001, $0000, $0000) ; C3 -
%InventoryItem($C4, $0001, $0000, $0000) ; C4 -
%InventoryItem($C5, $0001, $0000, $0000) ; C5 -
%InventoryItem($C6, $0001, $0000, $0000) ; C6 -
%InventoryItem($C7, $0001, $0000, $0000) ; C7 -
%InventoryItem($C8, $0001, $0000, $0000) ; C8 -
%InventoryItem($C9, $0001, $0000, $0000) ; C9 -
%InventoryItem($CA, $0001, $0000, $0000) ; CA -
%InventoryItem($CB, $0001, $0000, $0000) ; CB -
%InventoryItem($CC, $0001, $0000, $0000) ; CC -
%InventoryItem($CD, $0001, $0000, $0000) ; CD -
%InventoryItem($CE, $0001, $0000, $0000) ; CE -
%InventoryItem($CF, $0001, $0000, $0000) ; CF -
%InventoryItem($D0, $0001, $0000, $0000) ; D0 -
%InventoryItem($D1, $0001, $0000, $0000) ; D1 -
%InventoryItem($D2, $0001, $0000, $0000) ; D2 -
%InventoryItem($D3, $0001, $0000, $0000) ; D3 -
%InventoryItem($D4, $0001, $0000, $0000) ; D4 -
%InventoryItem($D5, $0001, $0000, $0000) ; D5 -
%InventoryItem($D6, $0001, $0000, $0000) ; D6 -
%InventoryItem($D7, $0001, $0000, $0000) ; D7 -
%InventoryItem($D8, $0001, $0000, $0000) ; D8 -
%InventoryItem($D9, $0001, $0000, $0000) ; D9 -
%InventoryItem($DA, $0001, $0000, $0000) ; DA -
%InventoryItem($DB, $0001, $0000, $0000) ; DB -
%InventoryItem($DC, $0001, $0000, $0000) ; DC -
%InventoryItem($DD, $0001, $0000, $0000) ; DD -
%InventoryItem($DE, $0001, $0000, $0000) ; DE -
%InventoryItem($DF, $0001, $0000, $0000) ; DF -
%InventoryItem($E0, $0001, $0000, $0000) ; E0 -
%InventoryItem($E1, $0001, $0000, $0000) ; E1 -
%InventoryItem($E2, $0001, $0000, $0000) ; E2 -
%InventoryItem($E3, $0001, $0000, $0000) ; E3 -
%InventoryItem($E4, $0001, $0000, $0000) ; E4 -
%InventoryItem($E5, $0001, $0000, $0000) ; E5 -
%InventoryItem($E6, $0001, $0000, $0000) ; E6 -
%InventoryItem($E7, $0001, $0000, $0000) ; E7 -
%InventoryItem($E8, $0001, $0000, $0000) ; E8 -
%InventoryItem($E9, $0001, $0000, $0000) ; E9 -
%InventoryItem($EA, $0001, $0000, $0000) ; EA -
%InventoryItem($EB, $0001, $0000, $0000) ; EB -
%InventoryItem($EC, $0001, $0000, $0000) ; EC -
%InventoryItem($ED, $0001, $0000, $0000) ; ED -
%InventoryItem($EE, $0001, $0000, $0000) ; EE -
%InventoryItem($EF, $0001, $0000, $0000) ; EF -
%InventoryItem($F0, $0001, $0000, $0000) ; F0 -
%InventoryItem($F1, $0001, $0000, $0000) ; F1 -
%InventoryItem($F2, $0001, $0000, $0000) ; F2 -
%InventoryItem($F3, $0001, $0000, $0000) ; F3 -
%InventoryItem($F4, $0001, $0000, $0000) ; F4 -
%InventoryItem($F5, $0001, $0000, $0000) ; F5 -
%InventoryItem($F6, $0001, $0000, $0000) ; F6 -
%InventoryItem($F7, $0001, $0000, $0000) ; F7 -
%InventoryItem($F8, $0001, $0000, $0000) ; F8 -
%InventoryItem($F9, $0001, $0000, $0000) ; F9 -
%InventoryItem($FA, $0001, $0000, $0000) ; FA -
%InventoryItem($FB, $0001, $0000, $0000) ; FB -
%InventoryItem($FC, $0001, $0000, $0000) ; FC -
%InventoryItem($FD, $0001, $0000, $0000) ; FD -
%InventoryItem($FE, $0001, $0000, $0000) ; FE - Server request (async)
%InventoryItem($FF, $0001, $0000, $0000) ; FF -
ItemReceiptGraphicsOffsets:
dw $0860 ; 00 - Fighter Sword and Shield
@@ -1022,7 +1023,7 @@ ItemReceiptGraphicsOffsets:
dw BigDecompressionBuffer+$0000 ; 47 - 20 rupees green
dw BigDecompressionBuffer+$09A0 ; 48 - Full bottle (good bee)
dw BigDecompressionBuffer+$1C20 ; 49 - Tossed fighter sword
dw BigDecompressionBuffer+$09A0 ; 4A - Bottle refill (good bee)
dw BigDecompressionBuffer+$0C40 ; 4A - Active Flute
dw BigDecompressionBuffer+$0040 ; 4B - Boots
; Rando items
@@ -1292,7 +1293,7 @@ StandingItemGraphicsOffsets:
dw BigDecompressionBuffer+$0000 ; 47 - 20 rupees green
dw BigDecompressionBuffer+$09A0 ; 48 - Full bottle (good bee)
dw $00A0 ; 49 - Tossed fighter sword
dw BigDecompressionBuffer+$09A0 ; 4A - Bottle refill (good bee)
dw BigDecompressionBuffer+$0C40 ; 4A - Active Flute
dw BigDecompressionBuffer+$0040 ; 4B - Boots
; Rando items

View File

@@ -2,146 +2,146 @@ org $B28000
; You have found
; the map of
Notice_MapOf:
db $74, $00, $C2, $00, $B8, $00, $BE, $00, $FF, $00, $B1, $00, $AA, $00, $BF, $00, $AE, $00, $FF, $00, $AF, $00, $B8, $00, $BE, $00, $B7, $00, $AD
db $75, $00, $BD, $00, $B1, $00, $AE, $00, $FF, $00, $B6, $00, $AA, $00, $B9, $00, $FF, $00, $B8, $00, $AF
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, $B8, $00, $BE, $00, $FF, $00, $B1, $00, $AA, $00, $BF, $00, $AE, $00, $FF, $00, $AF, $00, $B8, $00, $BE, $00, $B7, $00, $AD
db $75, $00, $BD, $00, $B1, $00, $AE, $00, $FF, $00, $AC, $00, $B8, $00, $B6, $00, $B9, $00, $AA, $00, $BC, $00, $BC, $00, $FF, $00, $B8, $00, $AF
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, $B1, $00, $FF, $00, $B5, $00, $B8, $00, $B8, $00, $B4, $00, $C7, $00, $FF, $00, $B2, $00, $BD, $00, $D8, $00, $BC
db $75, $00, $BD, $00, $B1, $00, $AE, $00, $FF, $00, $AB, $00, $B2, $00, $B0, $00, $FF, $00, $B4, $00, $AE, $00, $C2, $00, $FF, $00, $B8, $00, $AF
db $74, $00, $B8, $00, $D7, $00, $FF, $00, $DB, $00, $DE, $00, $DE, $00, $DA, $00, $C7, $00, $FF, $00, $D8, $00, $E3, $00, $9D, $00, $E2
db $75, $00, $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, $B1, $00, $B2, $00, $BC, $00, $FF, $00, $B2, $00, $BC, $00, $FF, $00, $AA
db $75, $00, $BC, $00, $B6, $00, $AA, $00, $B5, $00, $B5, $00, $FF, $00, $B4, $00, $AE, $00, $C2, $00, $FF, $00, $BD, $00, $B8
db $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, $B8, $00, $BE, $00, $FF, $00, $B9, $00, $B2, $00, $AC, $00, $B4, $00, $AE, $00, $AD, $00, $FF, $00, $BE, $00, $B9
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, $B2, $00, $B0, $00, $B1, $00, $BD, $00, $FF, $00, $C0, $00, $B8, $00, $BB, $00, $B5, $00, $AD
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, $AA, $00, $BB, $00, $B4, $00, $FF, $00, $C0, $00, $B8, $00, $BB, $00, $B5, $00, $AD
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, $AA, $00, $B7, $00, $B8, $00, $B7, $00, $BC, $00, $FF, $00, $BD, $00, $B8, $00, $C0, $00, $AE, $00, $BB
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, $BE, $00, $BB, $00, $BD, $00, $B5, $00, $AE, $00, $FF, $00, $BB, $00, $B8, $00, $AC, $00, $B4
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, $B1, $00, $B2, $00, $AE, $00, $BF, $00, $AE, $00, $BC, $00, $FF, $00, $BD, $00, $B8, $00, $C0, $00, $B7
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, $B8, $00, $C0, $00, $AE, $00, $BB, $00, $FF, $00, $B8, $00, $AF, $00, $FF, $00, $B1, $00, $AE, $00, $BB, $00, $AA
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, $AC, $00, $AE, $00, $FF, $00, $B9, $00, $AA, $00, $B5, $00, $AA, $00, $AC, $00, $AE
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, $B4, $00, $BE, $00, $B5, $00, $B5, $00, $FF, $00, $C0, $00, $B8, $00, $B8, $00, $AD, $00, $BC
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, $B2, $00, $BC, $00, $AE, $00, $BB, $00, $C2, $00, $FF, $00, $B6, $00, $B2, $00, $BB, $00, $AE
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, $AA, $00, $BB, $00, $B4, $00, $FF, $00, $B9, $00, $AA, $00, $B5, $00, $AA, $00, $AC, $00, $AE
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, $C0, $00, $AA, $00, $B6, $00, $B9, $00, $FF, $00, $B9, $00, $AA, $00, $B5, $00, $AA, $00, $AC, $00, $AE
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, $AA, $00, $BC, $00, $BD, $00, $B5, $00, $AE, $00, $FF, $00, $BD, $00, $B8, $00, $C0, $00, $AE, $00, $BB
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, $AE, $00, $BC, $00, $AE, $00, $BB, $00, $BD, $00, $FF, $00, $B9, $00, $AA, $00, $B5, $00, $AA, $00, $AC, $00, $AE
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, $AA, $00, $BC, $00, $BD, $00, $AE, $00, $BB, $00, $B7, $00, $FF, $00, $B9, $00, $AA, $00, $B5, $00, $AA, $00, $AC, $00, $AE
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, $C2, $00, $BB, $00, $BE, $00, $B5, $00, $AE, $00, $FF, $00, $AC, $00, $AA, $00, $BC, $00, $BD, $00, $B5, $00, $AE
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, $C2, $00, $BB, $00, $BE, $00, $B5, $00, $AE, $00, $FF, $00, $AC, $00, $AA, $00, $BC, $00, $BD, $00, $B5, $00, $AE
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, $BD, $00, $B1, $00, $B2, $00, $BC, $00, $FF, $00, $AD, $00, $BE, $00, $B7, $00, $B0, $00, $AE, $00, $B8, $00, $B7
db $76, $00, $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, $AC, $00, $BB, $00, $C2, $00, $BC, $00, $BD, $00, $AA, $00, $B5, $00, $FF, $00, $B8, $00, $B7, $00, $AE
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, $AC, $00, $BB, $00, $C2, $00, $BC, $00, $BD, $00, $AA, $00, $B5, $00, $FF, $00, $BD, $00, $C0, $00, $B8
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, $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
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, $AC, $00, $BB, $00, $C2, $00, $BC, $00, $BD, $00, $AA, $00, $B5, $00, $FF, $00, $AF, $00, $B8, $00, $BE, $00, $BB
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, $AC, $00, $BB, $00, $C2, $00, $BC, $00, $BD, $00, $AA, $00, $B5, $00, $FF, $00, $AF, $00, $B2, $00, $BF, $00, $AE
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, $AC, $00, $BB, $00, $C2, $00, $BC, $00, $BD, $00, $AA, $00, $B5, $00, $FF, $00, $BC, $00, $B2, $00, $C1
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, $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
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

View File

@@ -1,147 +0,0 @@
org $B28000
; You have found
; the map of
Notice_MapOf:
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, $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, $D7, $00, $FF, $00, $DB, $00, $DE, $00, $DE, $00, $DA, $00, $C7, $00, $FF, $00, $D8, $00, $E3, $00, $9D, $00, $E2
db $75, $00, $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, $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, $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, $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, $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, $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, $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, $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, $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, $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, $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, $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, $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, $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, $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, $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, $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, $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, $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

View File

@@ -131,7 +131,6 @@ AddReceivedItemExpandedGetItem:
SEP #$30
PLB : PLX
STZ.w ShopPurchaseFlag
LDA.w ItemReceiptMethod : CMP.b #$01 ; thing we wrote over
RTL
@@ -208,7 +207,6 @@ ItemBehavior:
JSR .increment_shield
RTS
..shop_shield
TYX
LDA.l InventoryTable_properties,X : BIT.b #$02 : BNE -
RTS
@@ -220,7 +218,6 @@ ItemBehavior:
JSR .increment_shield
RTS
..shop_shield
TYX
LDA.l InventoryTable_properties,X : BIT.b #$02 : BNE -
RTS
@@ -274,13 +271,11 @@ ItemBehavior:
RTS
.bow
LDA.l BowTracking : ORA.b #$80 : STA.l BowTracking
BIT #$40 : BNE .silversbow
LDA.b #$01 : STA.l BowEquipment
RTS
.silversbow
LDA.l BowTracking : ORA.b #$80 : STA.l BowTracking
LDA.l SilverArrowsUseRestriction : BNE +
LDA.l BowTracking : ORA.b #$40 : STA.l BowTracking
LDA.b #03 : STA.l BowEquipment ; set bow to silver
@@ -324,7 +319,6 @@ ItemBehavior:
JMP.w .increment_map
.bow_and_arrows
LDA.b #$80 : ORA.l BowTracking : STA.l BowTracking
LDA.l BowTracking : BIT.b #$40 : BEQ .no_silvers
LDA.l SilverArrowsUseRestriction : BNE .no_silvers
LDA.l CurrentArrows : BEQ +
@@ -344,7 +338,6 @@ ItemBehavior:
RTS
.silver_bow
LDA.b #$80 : ORA.l BowTracking : STA.l BowTracking
LDA.l SilverArrowsUseRestriction : BNE .noequip
LDA.b #$40 : ORA.l BowTracking : STA.l BowTracking
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ .noequip
@@ -554,8 +547,7 @@ ItemBehavior:
RTS
.same_dungeon
SEP #$20
LDA.l CurrentSmallKeys : INC : STA.l CurrentSmallKeys
LDA.l DungeonKeys,X : INC : STA.l DungeonKeys,X
LDA.l CurrentSmallKeys : INC : STA.l CurrentSmallKeys : STA.l DungeonKeys,X
RTS
.same_dungeon_hc
@@ -606,25 +598,31 @@ ItemBehavior:
.increment_bigkey
SEP #$20
LDA.l StatsLocked : BNE +
LDA.l BigKeysBigChests
CLC : ADC.b #$10
STA.l BigKeysBigChests
+
RTS
.increment_map
SEP #$20
LDA.l StatsLocked : BNE +
LDA.l MapsCompasses
CLC : ADC.b #$10
STA.l MapsCompasses
JSL.l MaybeFlagMapTotalPickup
+
RTS
.increment_compass
SEP #$20
LDA.l StatsLocked : BNE +
LDA.l MapsCompasses : INC : AND.b #$0F : TAX
LDA.l MapsCompasses : AND.b #$F0 : STA.l MapsCompasses
TXA : ORA.l MapsCompasses : STA.l MapsCompasses
JSL MaybeFlagCompassTotalPickup
+
RTS
.pendant
@@ -733,7 +731,7 @@ ResolveLootID:
.magic
SEP #$20
LDA.l MagicConsumption : TAX
LDA.w ResolveLootID_magic_ids,X
LDA.w .magic_ids,X
JMP.w .have_item
..ids
db $4E, $4F, $4F
@@ -746,7 +744,7 @@ ResolveLootID:
JMP.w .get_item
+
TAX
LDA.w ResolveLootID_prog_sword_ids,X
LDA.w .prog_sword_ids,X
JMP.w .have_item
..ids
db $49, $50, $02, $03, $03
@@ -759,7 +757,7 @@ ResolveLootID:
JMP.w .get_item
+
TAX
LDA.w ResolveLootID_shields_ids,X
LDA.w .shields_ids,X
JMP.w .have_item
..ids
db $04, $05, $06, $06
@@ -772,7 +770,7 @@ ResolveLootID:
JMP.w .get_item
+
TAX
LDA.w ResolveLootID_armor_ids,X
LDA.w .armor_ids,X
JMP.w .have_item
..ids
db $22, $23, $23
@@ -781,29 +779,39 @@ ResolveLootID:
.gloves
SEP #$20
LDA.l GloveEquipment : TAX
LDA.w ResolveLootID_gloves_ids,X
LDA.w .gloves_ids,X
JMP.w .have_item
..ids
db $1B, $1C, $1C
.progressive_bow
SEP #$20
; For non-chest progressive bows we assign the tracking bits to SpriteMetaData,X
; (where X is that sprite's slot) so the bit can be set on pickup.
SEP #$30
LDA.l BowEquipment : INC : LSR : CMP.l ProgressiveBowLimit : BCC +
LDA.l ProgressiveBowReplacement
JMP.w .get_item
+
LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ +
LDX.w CurrentSpriteSlot
LDA.b #$10 : STA.w SpriteMetaData,X
+
LDA.l BowEquipment : TAX
LDA.w ResolveLootID_bows_ids,X
LDA.w .bows_ids,X
JMP.w .get_item
.progressive_bow_2
SEP #$20
SEP #$30
LDA.l BowEquipment : INC : LSR : CMP.l ProgressiveBowLimit : BCC +
LDA.l ProgressiveBowReplacement
JMP.w .get_item
+
LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ +
LDX.w CurrentSpriteSlot
LDA.b #$20 : STA.w SpriteMetaData,X
+
LDA.l BowEquipment : TAX
LDA.w ResolveLootID_bows_ids,X
LDA.w .bows_ids,X
JMP.w .get_item
.bows
@@ -859,17 +867,33 @@ PotionListExpanded:
;--------------------------------------------------------------------------------
HandleBowTracking:
; In: A - Item Receipt ID
PHA
CMP.b #$64 : BEQ .prog_one
CMP.b #$65 : BEQ .prog_two
RTS
CMP.b #$0B : BEQ .vanilla_bow
CMP.b #$3A : BEQ .vanilla_bow
CMP.b #$3B : BEQ .vanilla_bow
PLA
RTS
.prog_one
LDA.b #$90
LDA.b #$10
BRA .done
.prog_two
LDA.b #$A0
LDA.b #$20
BRA .done
.vanilla_bow
; A non-chest progressive bow will always have been resolved to a vanilla bow ID
; at this point.
LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ +
LDX.w CurrentSpriteSlot
LDA.w SpriteMetaData,X : BEQ +
BRA .done
+
LDA.b #$00
.done
ORA.l BowTracking : STA.l BowTracking
LDA.w ItemReceiptID
ORA.b #$80 : ORA.l BowTracking
STA.l BowTracking
PLA
RTS
;--------------------------------------------------------------------------------
;Return BowEquipment but also draw silver arrows if you have the upgrade even if you don't have the bow

View File

@@ -127,23 +127,20 @@ ShowDungeonItems:
RTL
;--------------------------------------------------------------------------------
UpdateKeys:
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
PHX : PHP
SEP #$30
LDA.l GenericKeys : BNE .skip
LDA.w DungeonID : CMP.b #$1F : BCS .skip
LSR : TAX
LDA.l CurrentSmallKeys
CPX.b #$02 : BCC .castle_sewers
STA.l DungeonKeys, X
BRA .skip
.castle_sewers
STA.l HyruleCastleKeys : STA.l SewerKeys
.skip
JSL.l PostItemGet
PLP : PLX
RTL
;$37C = Sewer Passage
;$37D = Hyrule Castle

View File

@@ -193,7 +193,8 @@ ShopPurchaseFlag = $7E0224 ; $01 = Shop purchase item receipt.
ItemStackPtr = $7E0226 ; Pointer into Item GFX and VRAM target queues. Word length.
; If not zero, pointer should always be left pointing at the
; next available slot in the stack during the frame.
SpriteID = $7E0230 ; 0x0A bytes. Receipt ID for main loop sprite we're handling.
SpriteID = $7E0230 ; 0x10 bytes. Receipt ID for main loop sprite we're handling.
SpriteMetaData = $7E0240 ; 0x10 bytes. Sprite metadata. Used for prog bow tracking.
AncillaVelocityZ = $7E0294 ; 0x0A bytes
AncillaZCoord = $7E029E ; 0x0A bytes
;

View File

@@ -173,8 +173,8 @@ RTL
CopyExtendedWRAMSaveFileToSRAM:
PHB
LDA.w #$0FFF
LDX.w #ExtendedSaveDataSRAM
LDY.w #ExtendedSaveDataWRAM
LDX.w #ExtendedSaveDataWRAM
LDY.w #ExtendedSaveDataSRAM
MVN CartridgeSRAM>>16, ExtendedSaveDataWRAM>>16
PLB
TDC

View File

@@ -117,7 +117,10 @@ DecrementSmallKeys:
RTL
;--------------------------------------------------------------------------------
CountChestKeyLong:
PHX : PHP
SEP #$30
JSR.w CountChestKey
PLP : PLX
RTL
;--------------------------------------------------------------------------------
CountChestKey:

View File

@@ -682,14 +682,14 @@ DungeonPrizeReceiptID:
db $00 ; Sewers
db $00 ; Hyrule Castle
db $37 ; Eastern Palace
db $38 ; Desert Palace
db $39 ; Desert Palace
db $00 ; Agahnim's Tower
db $20 ; Swamp Palace
db $20 ; Palace of Darkness
db $20 ; Misery Mire
db $20 ; Skull Woods
db $20 ; Ice Palace
db $39 ; Tower of Hera
db $38 ; Tower of Hera
db $20 ; Thieves' Town
db $20 ; Turtle Rock
;Ether/Nothing: $00

View File

@@ -382,7 +382,7 @@ LoadItemPalette:
STA.b Scrap0A
LDY.w #$000E
JSR.w GTTorchCheck : BCS .aux
JSR.w AuxPaletteCheck : BCS .aux
LDA.w TransparencyFlag : BNE .SP05
-
LDA.b [Scrap0A], Y
@@ -440,18 +440,23 @@ ItemReceiptWidthCheck:
LDA.l SpriteProperties_standing_width, X
RTL
GTTorchCheck:
AuxPaletteCheck:
; Out: c - write to aux palette buffer if set, main buffer if unset.
;
; We have to put an item's palette in the aux buffer in rooms where standing
; item gfx are loaded in the middle of a fade-in/out such as the spiral staircase
; fade for GT torch room and the Hera cage.
PHX
SEP #$30
LDA.w RoomIndex : CMP.b #$8C : BNE .done
LDX.w CurrentSpriteSlot
LDA.w SpriteTypeTable,X : CMP.b #$3B : BNE .done; Bonk Item
SEC
REP #$30
LDA.w ItemReceiptMethod : BNE .main_buffer ; Never use aux if we're actually receiving an item
LDA.w RoomIndex : CMP.b #$8C : BEQ .aux_buffer ; GT torch/Hope room
LDA.w RoomIndex : CMP.b #$87 : BEQ .aux_buffer ; Hera cage/basement
.main_buffer
REP #$31
PLX
RTS
.done
CLC
.aux_buffer
SEC
REP #$30
PLX
RTS