Add bomb-only mode
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -2,4 +2,4 @@ tournament.asm
|
|||||||
/build
|
/build
|
||||||
/.idea
|
/.idea
|
||||||
/__pycache__
|
/__pycache__
|
||||||
/.vscode
|
/.vscode
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ db #$20, #$19, #$08, #$31 ; year/month/day
|
|||||||
;$7EF420 - $7EF466 - Stat Tracking Bank 1 (overlaps with RNG Item Flags)
|
;$7EF420 - $7EF466 - Stat Tracking Bank 1 (overlaps with RNG Item Flags)
|
||||||
;$7EF450 - $7EF45F - RNG Item (Single) Flags
|
;$7EF450 - $7EF45F - RNG Item (Single) Flags
|
||||||
;$7EF4A0 - $7EF4A7 - Service Request Block
|
;$7EF4A0 - $7EF4A7 - Service Request Block
|
||||||
|
!PROGRESSIVE_BOMBS = "$7EF4A8"
|
||||||
!FRESH_FILE_MARKER = "$7EF4F0" ; zero if fresh file
|
!FRESH_FILE_MARKER = "$7EF4F0" ; zero if fresh file
|
||||||
;$700500 - $70050F - Extended File Name
|
;$700500 - $70050F - Extended File Name
|
||||||
;$701000 - $70100F - Password (incorporate into log header)
|
;$701000 - $70100F - Password (incorporate into log header)
|
||||||
@@ -221,6 +222,7 @@ incsrc fastcredits.asm
|
|||||||
incsrc msu.asm
|
incsrc msu.asm
|
||||||
incsrc multiworld.asm
|
incsrc multiworld.asm
|
||||||
incsrc terrorpin.asm
|
incsrc terrorpin.asm
|
||||||
|
incsrc special_bombs.asm
|
||||||
warnpc $A58000
|
warnpc $A58000
|
||||||
|
|
||||||
;org $228000 ; contrib area
|
;org $228000 ; contrib area
|
||||||
@@ -300,6 +302,11 @@ InvertedCastleHole: ;address used by front end. DO NOT MOVE!
|
|||||||
incbin sheet73.gfx
|
incbin sheet73.gfx
|
||||||
warnpc $31E501
|
warnpc $31E501
|
||||||
|
|
||||||
|
org $31E800
|
||||||
|
Damage_Table_Alt:
|
||||||
|
incbin damage_table_sword_bombs.bin
|
||||||
|
warnpc $31F001
|
||||||
|
|
||||||
org $338000
|
org $338000
|
||||||
GFX_HUD_Palette:
|
GFX_HUD_Palette:
|
||||||
incbin hudpalette.pal
|
incbin hudpalette.pal
|
||||||
|
|||||||
BIN
damage_table_sword_bombs.bin
Normal file
BIN
damage_table_sword_bombs.bin
Normal file
Binary file not shown.
@@ -142,9 +142,10 @@ SetEscapeAssist:
|
|||||||
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : +
|
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : +
|
||||||
BRA ++
|
BRA ++
|
||||||
.no_train ; choo choo
|
.no_train ; choo choo
|
||||||
LDA.l EscapeAssist : BIT.b #$04 : BEQ + : LDA.b #$00 : STA !INFINITE_MAGIC : +
|
LDA.l EscapeAssist
|
||||||
LDA.l EscapeAssist : BIT.b #$02 : BEQ + : LDA.b #$00 : STA !INFINITE_BOMBS : +
|
BIT.b #$40 : BEQ + : STA !INFINITE_MAGIC : +
|
||||||
LDA.l EscapeAssist : BIT.b #$01 : BEQ + : LDA.b #$00 : STA !INFINITE_ARROWS : +
|
BIT.b #$20 : BEQ + : STA !INFINITE_BOMBS : +
|
||||||
|
BIT.b #$10 : BEQ + : STA !INFINITE_ARROWS : +
|
||||||
++
|
++
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
54
dialog.asm
54
dialog.asm
@@ -268,7 +268,7 @@ RTL
|
|||||||
DialogFairyThrow:
|
DialogFairyThrow:
|
||||||
LDA.l Restrict_Ponds : BEQ .normal
|
LDA.l Restrict_Ponds : BEQ .normal
|
||||||
LDA $7EF35C : ORA $7EF35D : ORA $7EF35E : ORA $7EF35F : BNE .normal
|
LDA $7EF35C : ORA $7EF35D : ORA $7EF35E : ORA $7EF35F : BNE .normal
|
||||||
|
|
||||||
.noInventory
|
.noInventory
|
||||||
LDA $0D80, X : !ADD #$08 : STA $0D80, X
|
LDA $0D80, X : !ADD #$08 : STA $0D80, X
|
||||||
LDA.b #$51
|
LDA.b #$51
|
||||||
@@ -299,31 +299,35 @@ RTL
|
|||||||
; s = silver arrow bow
|
; s = silver arrow bow
|
||||||
; p = 2nd progressive bow
|
; p = 2nd progressive bow
|
||||||
DialogGanon2:
|
DialogGanon2:
|
||||||
JSL.l CheckGanonVulnerability
|
JSL.l CheckGanonVulnerability
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
BCS +
|
BCS +
|
||||||
LDA.w #$018D : BRA ++
|
LDA.w #$018D : BRA ++
|
||||||
+
|
+
|
||||||
|
LDA.l SpecialBombs
|
||||||
|
AND.w #$00FF : BEQ + ; branch if not special bomb mode
|
||||||
|
LDA.w #$0195 : BRA ++
|
||||||
|
+
|
||||||
LDA.l $7EF38E
|
LDA.l $7EF38E
|
||||||
|
|
||||||
BIT.w #$0080 : BNE + ; branch if bow
|
BIT.w #$0080 : BNE + ; branch if bow
|
||||||
LDA.w #$0192 : BRA ++
|
LDA.w #$0192 : BRA ++
|
||||||
+
|
+
|
||||||
BIT.w #$0040 : BEQ + ; branch if no silvers
|
BIT.w #$0040 : BEQ + ; branch if no silvers
|
||||||
LDA.w #$0195 : BRA ++
|
LDA.w #$0195 : BRA ++
|
||||||
+
|
+
|
||||||
BIT.w #$0020 : BNE + ; branch if p bow
|
BIT.w #$0020 : BNE + ; branch if p bow
|
||||||
LDA.w #$0194 : BRA ++
|
LDA.w #$0194 : BRA ++
|
||||||
+
|
+
|
||||||
BIT.w #$0080 : BEQ + ; branch if no bow
|
BIT.w #$0080 : BEQ + ; branch if no bow
|
||||||
LDA.w #$0193 : BRA ++
|
LDA.w #$0193 : BRA ++
|
||||||
+
|
+
|
||||||
LDA.w #$016E
|
LDA.w #$016E
|
||||||
++
|
++
|
||||||
STA $1CF0
|
STA $1CF0
|
||||||
SEP #$20
|
SEP #$20
|
||||||
JSL.l Sprite_ShowMessageMinimal_Alt
|
JSL.l Sprite_ShowMessageMinimal_Alt
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DialogEtherTablet:
|
DialogEtherTablet:
|
||||||
@@ -361,7 +365,7 @@ DialogBombosTablet:
|
|||||||
LDA $7EF359 : CMP.b #$FF : BEQ .yesText : CMP.b #$02 : !BGE .noText
|
LDA $7EF359 : CMP.b #$FF : BEQ .yesText : CMP.b #$02 : !BGE .noText
|
||||||
;++
|
;++
|
||||||
.yesText
|
.yesText
|
||||||
PLA
|
PLA
|
||||||
LDA.b #$0D
|
LDA.b #$0D
|
||||||
LDY.b #$01
|
LDY.b #$01
|
||||||
JML Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm)
|
JML Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm)
|
||||||
@@ -373,7 +377,7 @@ RTL
|
|||||||
DialogSahasrahla:
|
DialogSahasrahla:
|
||||||
LDA.l $7EF374 : AND #$04 : BEQ + ;Check if player has green pendant
|
LDA.l $7EF374 : AND #$04 : BEQ + ;Check if player has green pendant
|
||||||
LDA.b #$2F
|
LDA.b #$2F
|
||||||
LDY.b #$00
|
LDY.b #$00
|
||||||
JML Sprite_ShowMessageUnconditional
|
JML Sprite_ShowMessageUnconditional
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
@@ -454,7 +458,7 @@ RTL
|
|||||||
CalculateSignIndex:
|
CalculateSignIndex:
|
||||||
; for the big 1024x1024 screens we are calculating link's effective
|
; for the big 1024x1024 screens we are calculating link's effective
|
||||||
; screen area, as though the screen was 4 different 512x512 screens.
|
; screen area, as though the screen was 4 different 512x512 screens.
|
||||||
; And we do this in a way that will likely give the right value even
|
; And we do this in a way that will likely give the right value even
|
||||||
; with major glitches.
|
; with major glitches.
|
||||||
|
|
||||||
LDA $8A : ASL A : TAY ;what we wrote over
|
LDA $8A : ASL A : TAY ;what we wrote over
|
||||||
@@ -463,13 +467,13 @@ CalculateSignIndex:
|
|||||||
|
|
||||||
LDA $21 : AND.w #$0002 : ASL #2 : EOR $8A : AND.w #$0008 : BEQ +
|
LDA $21 : AND.w #$0002 : ASL #2 : EOR $8A : AND.w #$0008 : BEQ +
|
||||||
TYA : !ADD.w #$0010 : TAY ;add 16 if we are in lower half of big screen.
|
TYA : !ADD.w #$0010 : TAY ;add 16 if we are in lower half of big screen.
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA $23 : AND.w #$0002 : LSR : EOR $8A : AND.w #$0001 : BEQ +
|
LDA $23 : AND.w #$0002 : LSR : EOR $8A : AND.w #$0001 : BEQ +
|
||||||
TYA : INC #2 : TAY ;add 16 if we are in lower half of big screen.
|
TYA : INC #2 : TAY ;add 16 if we are in lower half of big screen.
|
||||||
+
|
+
|
||||||
; ensure even if things go horribly wrong, we don't read the sign out of bounds and crash:
|
; ensure even if things go horribly wrong, we don't read the sign out of bounds and crash:
|
||||||
TYA : AND.w #$00FF : TAY
|
TYA : AND.w #$00FF : TAY
|
||||||
|
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ OnNewFile:
|
|||||||
BPL -
|
BPL -
|
||||||
|
|
||||||
LDX #$000E : -
|
LDX #$000E : -
|
||||||
LDA $7EF37C, X : STA $7EF4E0, X
|
LDA $7EF37C, X : STA $7EF4E0, X
|
||||||
DEX : DEX
|
DEX : DEX
|
||||||
BPL -
|
BPL -
|
||||||
|
|
||||||
@@ -256,6 +256,6 @@ PostItemAnimation:
|
|||||||
JML.l Ancilla_ReceiveItem_objectFinished
|
JML.l Ancilla_ReceiveItem_objectFinished
|
||||||
+
|
+
|
||||||
|
|
||||||
STZ $02E9 : LDA $0C5E, X ; thing we wrote over to get here
|
STZ $02E9 : LDA $0C5E, X ; thing we wrote over to get here
|
||||||
JML.l Ancilla_ReceiveItem_optimus+6
|
JML.l Ancilla_ReceiveItem_optimus+6
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
64
generate_bomb_table.rb
Normal file
64
generate_bomb_table.rb
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
def process_values(sprite, values)
|
||||||
|
ret = values.clone
|
||||||
|
if [1, 2].include?(ret[0]) # boomerang
|
||||||
|
ret[0] = 0
|
||||||
|
end
|
||||||
|
if ret[6] > 0 && sprite != 0x84 # bow and not red eyegore/mimic
|
||||||
|
ret[6] = 0
|
||||||
|
end
|
||||||
|
if ret[7] == 2 # hookshot
|
||||||
|
ret[7] = 0
|
||||||
|
end
|
||||||
|
if ret[9] > 0 && sprite != 0x84 # silver bow and not red eyegore/mimic
|
||||||
|
ret[9] = 0
|
||||||
|
end
|
||||||
|
if ret[10] == 4 # powder
|
||||||
|
ret[10] = 0
|
||||||
|
end
|
||||||
|
if ret[11] > 0 && ![0xA1, 0xA3, 0xCD].include?(sprite) # fire rod
|
||||||
|
ret[11] = 0
|
||||||
|
end
|
||||||
|
if ret[12] != 3 && sprite != 0xCC # ice rod
|
||||||
|
ret[12] = 0
|
||||||
|
end
|
||||||
|
if ret[13] != 3 && ![0xA3, 0xA1].include?(sprite) # bombos
|
||||||
|
ret[13] = 0
|
||||||
|
end
|
||||||
|
if ret[14] != 1 # ether
|
||||||
|
ret[14] = 0
|
||||||
|
end
|
||||||
|
if ret[15] != 3 # quake
|
||||||
|
ret[15] = 0
|
||||||
|
end
|
||||||
|
return ret
|
||||||
|
end
|
||||||
|
|
||||||
|
def split_value(byte)
|
||||||
|
return [byte >> 4, byte & 0x0F]
|
||||||
|
end
|
||||||
|
|
||||||
|
def join_values(value1, value2)
|
||||||
|
return (value1 & 0x0F) << 4 | (value2 & 0x0F)
|
||||||
|
end
|
||||||
|
|
||||||
|
File.open("damage_table.bin") do |input|
|
||||||
|
File.open("damage_table_sword_bombs.bin", "w") do |output|
|
||||||
|
i_enum = input.each_byte
|
||||||
|
(0...0xD7).each do |sprite|
|
||||||
|
values = []
|
||||||
|
(0...8).each do
|
||||||
|
values += split_value(i_enum.next)
|
||||||
|
end
|
||||||
|
v_enum = process_values(sprite, values).to_enum
|
||||||
|
(0...8).each do
|
||||||
|
output.putc(join_values(v_enum.next, v_enum.next))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
begin
|
||||||
|
while true
|
||||||
|
output.putc(i_enum.next)
|
||||||
|
end
|
||||||
|
rescue StopIteration
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
59
hooks.asm
59
hooks.asm
@@ -326,6 +326,12 @@ JSL.l LoadBombCount16
|
|||||||
org $0DDEB3 ; <- 6DEB3 - equipment.asm : 328 (LDA $7EF33F, X)
|
org $0DDEB3 ; <- 6DEB3 - equipment.asm : 328 (LDA $7EF33F, X)
|
||||||
JSL.l IsItemAvailable
|
JSL.l IsItemAvailable
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0DDDE8 ; <- 6DDE8 - equipment.asm : 148 (LDA $7EF340)
|
||||||
|
JSL.l SearchForEquippedItem
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0DDE70 ; <- 6DE70 - equipment.asm : 273 (LDA $7EF340)
|
||||||
|
JSL.l SearchForEquippedItem
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
org $0DE39D ; <- 6E39D - equipment.asm : 1109 (LDA $7EF340)
|
org $0DE39D ; <- 6E39D - equipment.asm : 1109 (LDA $7EF340)
|
||||||
JSL.l SearchForEquippedItem
|
JSL.l SearchForEquippedItem
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -922,12 +928,9 @@ LDA.w AddReceivedItemExpanded_item_target_addr+1, X
|
|||||||
org $09861F ; 4861F - ancilla_init.asm:724 (LDA .item_values, Y)
|
org $09861F ; 4861F - ancilla_init.asm:724 (LDA .item_values, Y)
|
||||||
LDA.w AddReceivedItemExpanded_item_values, Y
|
LDA.w AddReceivedItemExpanded_item_values, Y
|
||||||
|
|
||||||
org $098627 ; 48627 - ancilla_init.asm:731 (LDA .item_target_addr+0, X)
|
org $098624 ; 48624 - ancilla_init.asm:728 (TYA : ASL A : TAX)
|
||||||
LDA.w AddReceivedItemExpanded_item_target_addr+0, X
|
JSL.l UpdateInventoryLocationExpanded
|
||||||
org $09862C ; 4862C - ancilla_init.asm:722 (LDA .item_target_addr+1, X)
|
BRA + : NOP #18 : +
|
||||||
LDA.w AddReceivedItemExpanded_item_target_addr+1, X
|
|
||||||
org $098635 ; 48635 - ancilla_init.asm:727 (LDA .item_values, Y)
|
|
||||||
LDA.w AddReceivedItemExpanded_item_values, Y
|
|
||||||
|
|
||||||
org $0986AA ; 486AA - ancilla_init.asm:848 (LDA .item_masks, X)
|
org $0986AA ; 486AA - ancilla_init.asm:848 (LDA .item_masks, X)
|
||||||
LDA.w AddReceivedItemExpanded_item_masks, X
|
LDA.w AddReceivedItemExpanded_item_masks, X
|
||||||
@@ -2335,9 +2338,6 @@ NOP #6
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $09865E ; <- 4865E
|
org $09865E ; <- 4865E
|
||||||
JSL.l $1BEE1B ; fix something i wrote over i shouldn't have
|
JSL.l $1BEE1B ; fix something i wrote over i shouldn't have
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $098638 ; <- 48638 - ancilla_init.asm:737 - LDA .item_values, Y : BMI .dontWrite (BMI)
|
|
||||||
JSL.l ItemDowngradeFix
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -2719,3 +2719,44 @@ JSL FixTerrorpin ; 4 bytes
|
|||||||
NOP ; 1 byte
|
NOP ; 1 byte
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; Bomb-Only Mode
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $06ECC3 ; Bank06.asm@4704 (PHX : TAX : LDA.l .damage_classes, X : PLX)
|
||||||
|
JSL DamageClassCalc
|
||||||
|
BRA + : NOP #29 : +
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0882D4 ; Bank08.asm@445 (PHX : TYX : ... )
|
||||||
|
JSL Utility_CheckAncillaOverlapWithSprite
|
||||||
|
BRA + : NOP #5 : +
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $088DB1 ; Bank08.asm@1207 (PHY : PHX : TYX : ... )
|
||||||
|
JSL Utility_CheckAncillaOverlapWithSprite
|
||||||
|
BRA + : NOP #7 : +
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
org $0882E8 ; Bank08.asm@456 (LDA $0DB0, Y : CMP.b #$03)
|
||||||
|
JSL Utility_CheckHelmasaurKingCollision
|
||||||
|
NOP
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $1E838C ; sprite_helmasaur_king.asm@522 (LDA $0301 : AND.b #$0A)
|
||||||
|
JSL Utility_CheckHammerHelmasaurKingMask
|
||||||
|
NOP
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $06ED94 ; Bank06.asm@4866 (LDA $0E60, X : AND.b #$40)
|
||||||
|
JSL Utility_CheckImpervious
|
||||||
|
NOP
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $068F94 ; sprite_prep.asm@1984 (INC $0BA0, X : JSL Sprite_InitializedSegmented)
|
||||||
|
JSL AllowBombingMoldorm
|
||||||
|
BRA + : NOP : +
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0DEE05 ; equipment.asm@2065 (LDA $7EF359 : AND.w #$00FF : CMP.w #$00FF : ...)
|
||||||
|
JSL DrawSwordInMenu
|
||||||
|
BRA + : NOP #16 : +
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0DFC51 ; is this being used? I hope not! let's find out if anything breaks!
|
||||||
|
db $B2, $3C, $B3, $3C, $C2, $3C, $17, $3C
|
||||||
|
db $B2, $2C, $B3, $2C, $C2, $2C, $18, $2C
|
||||||
|
db $B2, $24, $B3, $24, $C2, $24, $19, $24
|
||||||
|
db $B2, $28, $B3, $28, $C2, $28, $1A, $28
|
||||||
|
db $B2, $28, $B3, $28, $C2, $28, $1B, $28
|
||||||
|
|||||||
2
init.asm
2
init.asm
@@ -58,4 +58,4 @@ Init_PostRAMClear:
|
|||||||
JSL MSUInit
|
JSL MSUInit
|
||||||
JSL InitRNGPointerTable
|
JSL InitRNGPointerTable
|
||||||
|
|
||||||
JML $00D463 ; The original target of the jump table that we hijacked
|
JML $00D463 ; The original target of the jump table that we hijacked
|
||||||
|
|||||||
320
newitems.asm
320
newitems.asm
@@ -40,6 +40,11 @@
|
|||||||
; #$90 - Big Keys
|
; #$90 - Big Keys
|
||||||
; #$A0 - Small Keys
|
; #$A0 - Small Keys
|
||||||
; #$B0 - Bee Trap
|
; #$B0 - Bee Trap
|
||||||
|
; #$B1 - L-2 Bombs
|
||||||
|
; #$B2 - L-3 Bombs
|
||||||
|
; #$B3 - L-4 Bombs
|
||||||
|
; #$B4 - L-5 Bombs
|
||||||
|
; #$B5 - Progressive Bombs
|
||||||
; #$FE - Server Request (Asychronous Chest)
|
; #$FE - Server Request (Asychronous Chest)
|
||||||
; #$FF - Null Chest
|
; #$FF - Null Chest
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -69,23 +74,23 @@
|
|||||||
;JML GetAnimatedSpriteGfxFile_return
|
;JML GetAnimatedSpriteGfxFile_return
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GetAnimatedSpriteGfxFile:
|
GetAnimatedSpriteGfxFile:
|
||||||
CMP.b #$0C : BNE +
|
CMP.b #$0C : BNE +
|
||||||
LDY.b #$5C : JML GetAnimatedSpriteGfxFile_return
|
LDY.b #$5C : JML GetAnimatedSpriteGfxFile_return
|
||||||
+
|
+
|
||||||
CMP.b #$23 : BNE +
|
CMP.b #$23 : BNE +
|
||||||
LDY.b #$5D : JML GetAnimatedSpriteGfxFile_return
|
LDY.b #$5D : JML GetAnimatedSpriteGfxFile_return
|
||||||
+
|
+
|
||||||
CMP.b #$48 : BNE +
|
CMP.b #$48 : BNE +
|
||||||
LDY.b #$60 : JML GetAnimatedSpriteGfxFile_return
|
LDY.b #$60 : JML GetAnimatedSpriteGfxFile_return
|
||||||
+
|
+
|
||||||
|
|
||||||
CMP.b #$24 : !BGE +
|
CMP.b #$24 : !BGE +
|
||||||
LDY.b #$5B : JML GetAnimatedSpriteGfxFile_return
|
LDY.b #$5B : JML GetAnimatedSpriteGfxFile_return
|
||||||
+
|
+
|
||||||
CMP.b #$37 : !BGE +
|
CMP.b #$37 : !BGE +
|
||||||
LDY.b #$5C : JML GetAnimatedSpriteGfxFile_return
|
LDY.b #$5C : JML GetAnimatedSpriteGfxFile_return
|
||||||
+
|
+
|
||||||
CMP.b #$39 : !BGE +
|
CMP.b #$39 : !BGE +
|
||||||
LDY.b #$5D : JML GetAnimatedSpriteGfxFile_return
|
LDY.b #$5D : JML GetAnimatedSpriteGfxFile_return
|
||||||
+
|
+
|
||||||
LDY.b #$32
|
LDY.b #$32
|
||||||
@@ -276,7 +281,7 @@ AddReceivedItemExpandedGetItem:
|
|||||||
+ CMP.b #$57 : BNE + ; Programmable Object 3
|
+ CMP.b #$57 : BNE + ; Programmable Object 3
|
||||||
%ProgrammableItemLogic(3)
|
%ProgrammableItemLogic(3)
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$58 : BNE + ; Upgrade-Only Sivler Arrows
|
+ CMP.b #$58 : BNE + ; Upgrade-Only Silver Arrows
|
||||||
LDA.l SilverArrowsUseRestriction : BNE +++
|
LDA.l SilverArrowsUseRestriction : BNE +++
|
||||||
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ +++
|
LDA.l SilverArrowsAutoEquip : AND.b #$01 : BEQ +++
|
||||||
LDA $7EF340 : BEQ ++ : CMP.b #$03 : !BGE ++
|
LDA $7EF340 : BEQ ++ : CMP.b #$03 : !BGE ++
|
||||||
@@ -412,6 +417,7 @@ AddReceivedItemExpandedGetItem:
|
|||||||
PLX
|
PLX
|
||||||
LDA $02E9 : CMP.b #$01 ; thing we wrote over
|
LDA $02E9 : CMP.b #$01 ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
; #$70 - Maps
|
; #$70 - Maps
|
||||||
; #$80 - Compasses
|
; #$80 - Compasses
|
||||||
; #$90 - Big Keys
|
; #$90 - Big Keys
|
||||||
@@ -529,9 +535,9 @@ AddReceivedItemExpanded:
|
|||||||
LDA $7EF340 : INC : LSR : CMP.l ProgressiveBowLimit : !BLT +
|
LDA $7EF340 : INC : LSR : CMP.l ProgressiveBowLimit : !BLT +
|
||||||
LDA.l ProgressiveBowReplacement : STA $02D8 : JMP .done
|
LDA.l ProgressiveBowReplacement : STA $02D8 : JMP .done
|
||||||
+ LDA $7EF340 : INC : LSR : CMP.b #$00 : BNE + ; No Bow
|
+ LDA $7EF340 : INC : LSR : CMP.b #$00 : BNE + ; No Bow
|
||||||
LDA.b #$3A : STA $02D8 : BRA .done
|
LDA.b #$3A : STA $02D8 : JMP .done
|
||||||
+ ; Any Bow
|
+ ; Any Bow
|
||||||
LDA.b #$3B : STA $02D8 : BRA .done
|
LDA.b #$3B : STA $02D8 : JMP .done
|
||||||
++ : CMP.b #$65 : BNE ++ ; Progressive Bow 2
|
++ : CMP.b #$65 : BNE ++ ; Progressive Bow 2
|
||||||
LDA !MULTIWORLD_ITEM_PLAYER_ID : BNE +++
|
LDA !MULTIWORLD_ITEM_PLAYER_ID : BNE +++
|
||||||
LDA.l !INVENTORY_SWAP_2 : ORA #$20 : STA.l !INVENTORY_SWAP_2
|
LDA.l !INVENTORY_SWAP_2 : ORA #$20 : STA.l !INVENTORY_SWAP_2
|
||||||
@@ -552,40 +558,51 @@ AddReceivedItemExpanded:
|
|||||||
LDA !MULTIWORLD_ITEM_PLAYER_ID : BEQ +++
|
LDA !MULTIWORLD_ITEM_PLAYER_ID : BEQ +++
|
||||||
LDA.b #$0E : STA $02D8 : BRA .done ; Bee in a bottle
|
LDA.b #$0E : STA $02D8 : BRA .done ; Bee in a bottle
|
||||||
+++
|
+++
|
||||||
|
++ : CMP.b #$B5 : BNE ++ ; Progressive Bombs
|
||||||
|
LDA $7EF4A8
|
||||||
|
CMP.b #$00 : BNE + ; L-1 Bombs
|
||||||
|
LDA.b #$B1 : STA $02D8 : JMP .done
|
||||||
|
+ : CMP.b #$01 : BNE + ; L-2 Bombs
|
||||||
|
LDA.b #$B2 : STA $02D8 : JMP .done
|
||||||
|
+ : CMP.b #$02 : BNE + ; L-3 Bombs
|
||||||
|
LDA.b #$B3 : STA $02D8 : JMP .done
|
||||||
|
+ ; Everything Else
|
||||||
|
LDA.b #$B4 : STA $02D8 : JMP .done
|
||||||
++
|
++
|
||||||
.done
|
.done
|
||||||
PLX : PLA
|
PLX : PLA
|
||||||
|
|
||||||
PHB : PHK ; we're skipping the corresponding instructions to grab the data bank
|
PHB : PHK ; we're skipping the corresponding instructions to grab the data bank
|
||||||
JML.l AddReceivedItem+2
|
JML.l AddReceivedItem+2
|
||||||
}
|
}
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;DATA AddReceivedItemExpanded
|
;DATA AddReceivedItemExpanded
|
||||||
{
|
{
|
||||||
; This is a temporary measure for Fish to have consistent addresses
|
; This is a temporary measure for Fish to have consistent addresses
|
||||||
|
warnpc $A08800
|
||||||
org $A08800
|
org $A08800
|
||||||
|
|
||||||
.y_offsets
|
.y_offsets
|
||||||
db -5, -5, -5, -5, -5, -4, -4, -5
|
db -5, -5, -5, -5, -5, -4, -4, -5
|
||||||
db -5, -4, -4, -4, -2, -4, -4, -4
|
db -5, -4, -4, -4, -2, -4, -4, -4
|
||||||
|
|
||||||
db -4, -4, -4, -4, -4, -4, -4, -4
|
db -4, -4, -4, -4, -4, -4, -4, -4
|
||||||
db -4, -4, -4, -4, -4, -4, -4, -4
|
db -4, -4, -4, -4, -4, -4, -4, -4
|
||||||
|
|
||||||
db -4, -4, -4, -5, -4, -4, -4, -4
|
db -4, -4, -4, -5, -4, -4, -4, -4
|
||||||
db -4, -4, -2, -4, -4, -4, -4, -4
|
db -4, -4, -2, -4, -4, -4, -4, -4
|
||||||
|
|
||||||
db -4, -4, -4, -4, -2, -2, -2, -4
|
db -4, -4, -4, -4, -2, -2, -2, -4
|
||||||
db -4, -4, -4, -4, -4, -4, -4, -4
|
db -4, -4, -4, -4, -4, -4, -4, -4
|
||||||
|
|
||||||
db -4, -4, -2, -2, -4, -2, -4, -4
|
db -4, -4, -2, -2, -4, -2, -4, -4
|
||||||
db -4, -5, -4, -4
|
db -4, -5, -4, -4
|
||||||
;new
|
;new
|
||||||
db -4, -4, -4, -4
|
db -4, -4, -4, -4
|
||||||
db -5 ; Master Sword (Safe)
|
db -5 ; Master Sword (Safe)
|
||||||
db -4, -4, -4, -4 ; +5/+10 Bomb Arrows
|
db -4, -4, -4, -4 ; +5/+10 Bomb Arrows
|
||||||
db -4, -4, -4 ; 3x Programmable Item
|
db -4, -4, -4 ; 3x Programmable Item
|
||||||
db -4 ; Upgrade-Only Sivler Arrows
|
db -4 ; Upgrade-Only Silver Arrows
|
||||||
db -4 ; 1 Rupoor
|
db -4 ; 1 Rupoor
|
||||||
db -4 ; Null Item
|
db -4 ; Null Item
|
||||||
db -4, -4, -4 ; Red, Blue & Green Clocks
|
db -4, -4, -4 ; Red, Blue & Green Clocks
|
||||||
@@ -600,32 +617,33 @@ org $A08800
|
|||||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Free Big Key
|
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Free Big Key
|
||||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Free Small Key
|
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Free Small Key
|
||||||
db -4 ; Bee Trap
|
db -4 ; Bee Trap
|
||||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
db -4, -4, -4, -4, -4 ; Bomb Upgrades
|
||||||
|
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
||||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
||||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
||||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
||||||
|
|
||||||
.x_offsets
|
.x_offsets
|
||||||
db 4, 4, 4, 4, 4, 0, 0, 4
|
db 4, 4, 4, 4, 4, 0, 0, 4
|
||||||
db 4, 4, 4, 4, 5, 0, 0, 0
|
db 4, 4, 4, 4, 5, 0, 0, 0
|
||||||
|
|
||||||
db 0, 0, 0, 4, 0, 4, 0, 0
|
db 0, 0, 0, 4, 0, 4, 0, 0
|
||||||
db 4, 0, 0, 0, 0, 0, 0, 0
|
db 4, 0, 0, 0, 0, 0, 0, 0
|
||||||
|
|
||||||
db 0, 0, 0, 0, 4, 0, 0, 0
|
db 0, 0, 0, 0, 4, 0, 0, 0
|
||||||
db 0, 0, 5, 0, 0, 0, 0, 0
|
db 0, 0, 5, 0, 0, 0, 0, 0
|
||||||
|
|
||||||
db 0, 0, 0, 0, 4, 4, 4, 0
|
db 0, 0, 0, 0, 4, 4, 4, 0
|
||||||
db 0, 0, 0, 0, 0, 0, 0, 0
|
db 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
|
|
||||||
db 0, 0, 4, 4, 0, 4, 0, 0
|
db 0, 0, 4, 4, 0, 4, 0, 0
|
||||||
db 0, 4, 0, 0
|
db 0, 4, 0, 0
|
||||||
;new
|
;new
|
||||||
db 0, 0, 0, 0
|
db 0, 0, 0, 0
|
||||||
db 4 ; Master Sword (Safe)
|
db 4 ; Master Sword (Safe)
|
||||||
db 0, 0, 0, 0 ; +5/+10 Bomb Arrows
|
db 0, 0, 0, 0 ; +5/+10 Bomb Arrows
|
||||||
db 0, 0, 0 ; 3x Programmable Item
|
db 0, 0, 0 ; 3x Programmable Item
|
||||||
db 0 ; Upgrade-Only Sivler Arrows
|
db 0 ; Upgrade-Only Silver Arrows
|
||||||
db 4 ; 1 Rupoor
|
db 4 ; 1 Rupoor
|
||||||
db 0 ; Null Item
|
db 0 ; Null Item
|
||||||
db 0, 0, 0 ; Red, Blue & Green Clocks
|
db 0, 0, 0 ; Red, Blue & Green Clocks
|
||||||
@@ -641,33 +659,34 @@ org $A08800
|
|||||||
;db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; *EVENT*
|
;db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; *EVENT*
|
||||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Free Small Key
|
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Free Small Key
|
||||||
db 0 ; Bee Trap
|
db 0 ; Bee Trap
|
||||||
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
db 0, 0, 0, 0, 0 ; Bomb Upgrades
|
||||||
|
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
||||||
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
||||||
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
||||||
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
||||||
|
|
||||||
.item_graphics_indices
|
.item_graphics_indices
|
||||||
db $06, $18, $18, $18, $2D, $20, $2E, $09
|
db $06, $18, $18, $18, $2D, $20, $2E, $09
|
||||||
db $09, $0A, $08, $05, $10, $0B, $2C, $1B
|
db $09, $0A, $08, $05, $10, $0B, $2C, $1B
|
||||||
|
|
||||||
db $1A, $1C, $14, $19, $0C, $07, $1D, $2F
|
db $1A, $1C, $14, $19, $0C, $07, $1D, $2F
|
||||||
db $07, $15, $12, $0D, $0D, $0E, $11, $17
|
db $07, $15, $12, $0D, $0D, $0E, $11, $17
|
||||||
|
|
||||||
db $28, $27, $04, $04, $0F, $16, $03, $13
|
db $28, $27, $04, $04, $0F, $16, $03, $13
|
||||||
db $01, $1E, $10, $00, $00, $00, $00, $00
|
db $01, $1E, $10, $00, $00, $00, $00, $00
|
||||||
|
|
||||||
db $00, $30, $22, $21, $24, $24, $24, $23
|
db $00, $30, $22, $21, $24, $24, $24, $23
|
||||||
db $23, $23, $29, $2A, $2C, $2B, $03, $03
|
db $23, $23, $29, $2A, $2C, $2B, $03, $03
|
||||||
|
|
||||||
db $34, $35, $31, $33, $02, $32, $36, $37
|
db $34, $35, $31, $33, $02, $32, $36, $37
|
||||||
db $2C, $06, $0C, $38
|
db $2C, $06, $0C, $38
|
||||||
;new
|
;new
|
||||||
db $39, $3A, $3B, $3C
|
db $39, $3A, $3B, $3C
|
||||||
;5x
|
;5x
|
||||||
db $18 ; Master Sword (Safe)
|
db $18 ; Master Sword (Safe)
|
||||||
db $3D, $3E, $3F, $40 ; +5/+10 Bomb Arrows
|
db $3D, $3E, $3F, $40 ; +5/+10 Bomb Arrows
|
||||||
db $00, $00, $00 ; 3x Programmable Item
|
db $00, $00, $00 ; 3x Programmable Item
|
||||||
db $41 ; Upgrade-Only Sivler Arrows
|
db $41 ; Upgrade-Only Silver Arrows
|
||||||
db $24 ; 1 Rupoor
|
db $24 ; 1 Rupoor
|
||||||
db $47 ; Null Item
|
db $47 ; Null Item
|
||||||
db $48, $48, $48 ; Red, Blue & Green Clocks
|
db $48, $48, $48 ; Red, Blue & Green Clocks
|
||||||
@@ -687,32 +706,33 @@ org $A08800
|
|||||||
;db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; *EVENT*
|
;db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; *EVENT*
|
||||||
|
|
||||||
db $47 ; Bee Trap
|
db $47 ; Bee Trap
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
db $13, $13, $13, $13, $13 ; Bomb Upgrades
|
||||||
|
db $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 ; 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
|
||||||
|
|
||||||
.wide_item_flag
|
.wide_item_flag
|
||||||
db $00, $00, $00, $00, $00, $02, $02, $00
|
db $00, $00, $00, $00, $00, $02, $02, $00
|
||||||
db $00, $00, $00, $00, $00, $02, $02, $02
|
db $00, $00, $00, $00, $00, $02, $02, $02
|
||||||
|
|
||||||
db $02, $02, $02, $00, $02, $00, $02, $02
|
db $02, $02, $02, $00, $02, $00, $02, $02
|
||||||
db $00, $02, $02, $02, $02, $02, $02, $02
|
db $00, $02, $02, $02, $02, $02, $02, $02
|
||||||
|
|
||||||
db $02, $02, $02, $02, $00, $02, $02, $02
|
db $02, $02, $02, $02, $00, $02, $02, $02
|
||||||
db $02, $02, $00, $02, $02, $02, $02, $02
|
db $02, $02, $00, $02, $02, $02, $02, $02
|
||||||
|
|
||||||
db $02, $02, $02, $02, $00, $00, $00, $02
|
db $02, $02, $02, $02, $00, $00, $00, $02
|
||||||
db $02, $02, $02, $02, $02, $02, $02, $02
|
db $02, $02, $02, $02, $02, $02, $02, $02
|
||||||
|
|
||||||
db $02, $02, $00, $00, $02, $00, $02, $02
|
db $02, $02, $00, $00, $02, $00, $02, $02
|
||||||
db $02, $00, $02, $02
|
db $02, $00, $02, $02
|
||||||
;new
|
;new
|
||||||
db $02, $02, $02, $02
|
db $02, $02, $02, $02
|
||||||
db $00 ; Master Sword (Safe)
|
db $00 ; Master Sword (Safe)
|
||||||
db $02, $02, $02, $02 ; +5/+10 Bomb Arrows
|
db $02, $02, $02, $02 ; +5/+10 Bomb Arrows
|
||||||
db $02, $02, $02 ; 3x Programmable Item
|
db $02, $02, $02 ; 3x Programmable Item
|
||||||
db $02 ; Upgrade-Only Sivler Arrows
|
db $02 ; Upgrade-Only Silver Arrows
|
||||||
db $00 ; 1 Rupoor
|
db $00 ; 1 Rupoor
|
||||||
db $02 ; Null Item
|
db $02 ; Null Item
|
||||||
db $02, $02, $02 ; Red, Blue & Green Clocks
|
db $02, $02, $02 ; Red, Blue & Green Clocks
|
||||||
@@ -727,34 +747,34 @@ org $A08800
|
|||||||
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Free Big Key
|
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Free Big Key
|
||||||
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; Free Small Key
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; Free Small Key
|
||||||
db $02 ; Bee Trap
|
db $02 ; Bee Trap
|
||||||
|
db $02, $02, $02, $02, $02 ; Bomb Upgrades
|
||||||
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
||||||
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
||||||
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
||||||
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
||||||
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; Unused
|
||||||
|
|
||||||
.properties
|
.properties
|
||||||
db 5, -1, 5, 5, 5, 5, 5, 1
|
db 5, -1, 5, 5, 5, 5, 5, 1
|
||||||
db 2, 1, 1, 1, 2, 2, 2, 4
|
db 2, 1, 1, 1, 2, 2, 2, 4
|
||||||
|
|
||||||
db 4, 4, 1, 1, 2, 1, 1, 1
|
db 4, 4, 1, 1, 2, 1, 1, 1
|
||||||
db 2, 1, 2, 1, 4, 4, 2, 1
|
db 2, 1, 2, 1, 4, 4, 2, 1
|
||||||
|
|
||||||
db 6, 1, 2, 1, 2, 2, 1, 2
|
db 6, 1, 2, 1, 2, 2, 1, 2
|
||||||
db 2, 4, 1, 1, 4, 2, 1, 4
|
db 2, 4, 1, 1, 4, 2, 1, 4
|
||||||
|
|
||||||
db 2, 2, 4, 4, 4, 2, 1, 4
|
db 2, 2, 4, 4, 4, 2, 1, 4
|
||||||
db 1, 2, 2, 1, 2, 2, 1, 1
|
db 1, 2, 2, 1, 2, 2, 1, 1
|
||||||
|
|
||||||
db 4, 4, 1, 2, 2, 4, 4, 4
|
db 4, 4, 1, 2, 2, 4, 4, 4
|
||||||
db 2, 5, 2, 1
|
db 2, 5, 2, 1
|
||||||
;new
|
;new
|
||||||
db 4, 4, 4, 4
|
db 4, 4, 4, 4
|
||||||
db 5 ; Master Sword (Safe)
|
db 5 ; Master Sword (Safe)
|
||||||
db 4, 4, 4, 4 ; +5/+10 Bomb Arrows
|
db 4, 4, 4, 4 ; +5/+10 Bomb Arrows
|
||||||
db 4, 4, 4 ; 3x Programmable Item
|
db 4, 4, 4 ; 3x Programmable Item
|
||||||
db 1 ; Upgrade-Only Sivler Arrows
|
db 1 ; Upgrade-Only Silver Arrows
|
||||||
db 3 ; 1 Rupoor
|
db 3 ; 1 Rupoor
|
||||||
db 1 ; Null Item
|
db 1 ; Null Item
|
||||||
db 1, 2, 4 ; Red, Blue & Green Clocks
|
db 1, 2, 4 ; Red, Blue & Green Clocks
|
||||||
@@ -769,7 +789,8 @@ org $A08800
|
|||||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Free Big Key
|
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Free Big Key
|
||||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Free Small Key
|
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Free Small Key
|
||||||
db 1 ; Bee Trap
|
db 1 ; Bee Trap
|
||||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
db 5, 5, 5, 5, 5 ; Bomb Upgrades
|
||||||
|
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
||||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
||||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
||||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
||||||
@@ -777,26 +798,26 @@ org $A08800
|
|||||||
|
|
||||||
; \item Target SRAM addresses for items you receive
|
; \item Target SRAM addresses for items you receive
|
||||||
.item_target_addr
|
.item_target_addr
|
||||||
dw $F359, $F359, $F359, $F359, $F35A, $F35A, $F35A, $F345
|
dw $F359, $F359, $F359, $F359, $F35A, $F35A, $F35A, $F345
|
||||||
dw $F346, $F34B, $F342, $F340, $F341, $F344, $F35C, $F347
|
dw $F346, $F34B, $F342, $F340, $F341, $F344, $F35C, $F347
|
||||||
|
|
||||||
dw $F348, $F349, $F34A, $F34C, $F34C, $F350, $F35C, $F36B
|
dw $F348, $F349, $F34A, $F34C, $F34C, $F350, $F35C, $F36B
|
||||||
dw $F351, $F352, $F353, $F354, $F354, $F34E, $F356, $F357
|
dw $F351, $F352, $F353, $F354, $F354, $F34E, $F356, $F357
|
||||||
|
|
||||||
dw $F37A, $F34D, $F35B, $F35B, $F36F, $F364, $F36C, $F375
|
dw $F37A, $F34D, $F35B, $F35B, $F36F, $F364, $F36C, $F375
|
||||||
dw $F375, $F344, $F341, $F35C, $F35C, $F35C, $F36D, $F36E
|
dw $F375, $F344, $F341, $F35C, $F35C, $F35C, $F36D, $F36E
|
||||||
|
|
||||||
dw $F36E, $F375, $F366, $F368, $F360, $F360, $F360, $F374
|
dw $F36E, $F375, $F366, $F368, $F360, $F360, $F360, $F374
|
||||||
dw $F374, $F374, $F340, $F340, $F35C, $F35C, $F36C, $F36C
|
dw $F374, $F374, $F340, $F340, $F35C, $F35C, $F36C, $F36C
|
||||||
|
|
||||||
dw $F360, $F360, $F372, $F376, $F376, $F373, $F360, $F360
|
dw $F360, $F360, $F372, $F376, $F376, $F373, $F360, $F360
|
||||||
dw $F35C, $F359, $F34C, $F355
|
dw $F35C, $F359, $F34C, $F355
|
||||||
;new
|
;new
|
||||||
dw $F375, $F376, $F373, $F373
|
dw $F375, $F376, $F373, $F373
|
||||||
dw $F359 ; Master Sword (Safe)
|
dw $F359 ; Master Sword (Safe)
|
||||||
dw $F375, $F375, $F376, $F376 ; +5/+10 Bomb Arrows
|
dw $F375, $F375, $F376, $F376 ; +5/+10 Bomb Arrows
|
||||||
dw $F41A, $F41C, $F41E ; 3x Programmable Item
|
dw $F41A, $F41C, $F41E ; 3x Programmable Item
|
||||||
dw $F340 ; Upgrade-Only Sivler Arrows
|
dw $F340 ; Upgrade-Only Silver Arrows
|
||||||
dw $F360 ; 1 Rupoor
|
dw $F360 ; 1 Rupoor
|
||||||
dw $F36A ; Null Item
|
dw $F36A ; Null Item
|
||||||
dw $F454, $F454, $F454 ; Red, Blue & Green Clocks
|
dw $F454, $F454, $F454 ; Red, Blue & Green Clocks
|
||||||
@@ -811,7 +832,8 @@ org $A08800
|
|||||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Free Big Key
|
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Free Big Key
|
||||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Free Small Key
|
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Free Small Key
|
||||||
dw $F36A ; Bee Trap
|
dw $F36A ; Bee Trap
|
||||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
dw $F4A8, $F4A8, $F4A8, $F4A8, $F4A8 ; Bomb Upgrades
|
||||||
|
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
||||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
||||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
||||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
||||||
@@ -821,26 +843,26 @@ org $A08800
|
|||||||
; DATA Values to write to the above SRAM locations.
|
; DATA Values to write to the above SRAM locations.
|
||||||
{
|
{
|
||||||
.item_values
|
.item_values
|
||||||
db $01, $02, $03, $04, $01, $02, $03, $01
|
db $01, $02, $03, $04, $01, $02, $03, $01
|
||||||
db $01, $01, $01, $01, $01, $02, $FF, $01
|
db $01, $01, $01, $01, $01, $02, $FF, $01
|
||||||
|
|
||||||
db $01, $01, $01, $01, $02, $01, $FF, $FF
|
db $01, $01, $01, $01, $02, $01, $FF, $FF
|
||||||
db $01, $01, $02, $01, $02, $01, $01, $01
|
db $01, $01, $02, $01, $02, $01, $01, $01
|
||||||
|
|
||||||
db $FF, $01, $FF, $02, $FF, $FF, $FF, $FF
|
db $FF, $01, $FF, $02, $FF, $FF, $FF, $FF
|
||||||
db $FF, $FF, $02, $FF, $FF, $FF, $FF, $FF
|
db $FF, $FF, $02, $FF, $FF, $FF, $FF, $FF
|
||||||
|
|
||||||
db $FF, $FF, $FF, $FF, $FF, $FB, $EC, $FF
|
db $FF, $FF, $FF, $FF, $FF, $FB, $EC, $FF
|
||||||
db $FF, $FF, $01, $03, $FF, $FF, $FF, $FF
|
db $FF, $FF, $01, $03, $FF, $FF, $FF, $FF
|
||||||
|
|
||||||
db $9C, $CE, $FF, $01, $0A, $FF, $FF, $FF
|
db $9C, $CE, $FF, $01, $0A, $FF, $FF, $FF
|
||||||
db $FF, $01, $03, $01
|
db $FF, $01, $03, $01
|
||||||
;new
|
;new
|
||||||
db $32, $46, $80, $80
|
db $32, $46, $80, $80
|
||||||
db $02 ; Master Sword (Safe)
|
db $02 ; Master Sword (Safe)
|
||||||
db $FF, $FF, $FF, $FF ; +5/+10 Bomb Arrows
|
db $FF, $FF, $FF, $FF ; +5/+10 Bomb Arrows
|
||||||
db $FF, $FF, $FF ; 3x Programmable Item
|
db $FF, $FF, $FF ; 3x Programmable Item
|
||||||
db $FF ; Upgrade-Only Sivler Arrows
|
db $FF ; Upgrade-Only Silver Arrows
|
||||||
db $FF ; 1 Rupoor
|
db $FF ; 1 Rupoor
|
||||||
db $FF ; Null Item
|
db $FF ; Null Item
|
||||||
db $FF, $FF, $FF ; Red, Blue & Green Clocks
|
db $FF, $FF, $FF ; Red, Blue & Green Clocks
|
||||||
@@ -855,31 +877,32 @@ org $A08800
|
|||||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Free Big Key
|
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Free Big Key
|
||||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Free Small Key
|
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Free Small Key
|
||||||
db $FF ; Bee Trap
|
db $FF ; Bee Trap
|
||||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
db $01, $02, $03, $04, $FF ; Bomb Upgrades
|
||||||
|
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
||||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
||||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
||||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
||||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
||||||
|
|
||||||
;0x00 - Sewer Passage
|
;0x00 - Sewer Passage
|
||||||
;0x02 - Hyrule Castle
|
;0x02 - Hyrule Castle
|
||||||
;0x04 - Eastern Palace
|
;0x04 - Eastern Palace
|
||||||
;0x06 - Desert Palace
|
;0x06 - Desert Palace
|
||||||
;0x08 - Hyrule Castle 2
|
;0x08 - Hyrule Castle 2
|
||||||
;0x0A - Swamp Palace
|
;0x0A - Swamp Palace
|
||||||
;0x0C - Dark Palace
|
;0x0C - Dark Palace
|
||||||
;0x0E - Misery Mire
|
;0x0E - Misery Mire
|
||||||
;0x10 - Skull Woods
|
;0x10 - Skull Woods
|
||||||
;0x12 - Ice Palace
|
;0x12 - Ice Palace
|
||||||
;0x14 - Tower of Hera
|
;0x14 - Tower of Hera
|
||||||
;0x16 - Gargoyle's Domain
|
;0x16 - Gargoyle's Domain
|
||||||
;0x18 - Turtle Rock
|
;0x18 - Turtle Rock
|
||||||
;0x1A - Ganon's Tower
|
;0x1A - Ganon's Tower
|
||||||
|
|
||||||
.item_masks ; these are dungeon correlations to $7EF364 - $7EF369 so it knows where to store compasses, etc
|
.item_masks ; these are dungeon correlations to $7EF364 - $7EF369 so it knows where to store compasses, etc
|
||||||
; sewers and castle get 2 bits active so that they can share their items elegantly
|
; sewers and castle get 2 bits active so that they can share their items elegantly
|
||||||
dw $C000, $C000, $2000, $1000, $0800, $0400, $0200, $0100
|
dw $C000, $C000, $2000, $1000, $0800, $0400, $0200, $0100
|
||||||
dw $0080, $0040, $0020, $0010, $0008, $0004, $0000, $0000
|
dw $0080, $0040, $0020, $0010, $0008, $0004, $0000, $0000
|
||||||
|
|
||||||
dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000
|
dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000
|
||||||
dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000
|
dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000
|
||||||
@@ -901,27 +924,27 @@ org $A08800
|
|||||||
}
|
}
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
BottleListExpanded:
|
BottleListExpanded:
|
||||||
db $16, $2B, $2C, $2D, $3D, $3C, $48
|
db $16, $2B, $2C, $2D, $3D, $3C, $48
|
||||||
|
|
||||||
PotionListExpanded:
|
PotionListExpanded:
|
||||||
db $2E, $2F, $30, $FF, $0E
|
db $2E, $2F, $30, $FF, $0E
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Link_ReceiveItemAlternatesExpanded:
|
Link_ReceiveItemAlternatesExpanded:
|
||||||
{
|
{
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1
|
db -1, -1, -1, -1, -1, -1, -1, -1
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1 ; db -1, -1, -1, -1, $44, -1, -1, -1
|
db -1, -1, -1, -1, -1, -1, -1, -1 ; db -1, -1, -1, -1, $44, -1, -1, -1
|
||||||
|
|
||||||
db -1, -1, $35, -1, -1, -1, -1, -1
|
db -1, -1, $35, -1, -1, -1, -1, -1
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1
|
db -1, -1, -1, -1, -1, -1, -1, -1
|
||||||
|
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1
|
db -1, -1, -1, -1, -1, -1, -1, -1
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1 ; db -1, -1, $46, -1, -1, -1, -1, -1
|
db -1, -1, -1, -1, -1, -1, -1, -1 ; db -1, -1, $46, -1, -1, -1, -1, -1
|
||||||
|
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1
|
db -1, -1, -1, -1, -1, -1, -1, -1
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1
|
db -1, -1, -1, -1, -1, -1, -1, -1
|
||||||
|
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1
|
db -1, -1, -1, -1, -1, -1, -1, -1
|
||||||
db -1, -1, -1, -1
|
db -1, -1, -1, -1
|
||||||
|
|
||||||
db -1, -1, -1, -1
|
db -1, -1, -1, -1
|
||||||
db -1 ; Master Sword (Safe)
|
db -1 ; Master Sword (Safe)
|
||||||
@@ -942,7 +965,8 @@ Link_ReceiveItemAlternatesExpanded:
|
|||||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Free Big Key
|
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Free Big Key
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Free Small Key
|
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Free Small Key
|
||||||
db -1 ; Bee Trap
|
db -1 ; Bee Trap
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
db -1, -1, -1, -1, -1 ; Bomb Upgrades
|
||||||
|
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
||||||
@@ -968,10 +992,10 @@ RTL
|
|||||||
;DrawHUDSilverArrows:
|
;DrawHUDSilverArrows:
|
||||||
; LDA $7EF340 : AND.w #$00FF : BNE +
|
; LDA $7EF340 : AND.w #$00FF : BNE +
|
||||||
; LDA !INVENTORY_SWAP_2 : AND.w #$0040 : BEQ +
|
; LDA !INVENTORY_SWAP_2 : AND.w #$0040 : BEQ +
|
||||||
; LDA.w #$2810 : STA $11C8
|
; LDA.w #$2810 : STA $11C8
|
||||||
; LDA.w #$2811 : STA $11CA
|
; LDA.w #$2811 : STA $11CA
|
||||||
; LDA.w #$2820 : STA $1208
|
; LDA.w #$2820 : STA $1208
|
||||||
; LDA.w #$2821 : STA $120A
|
; LDA.w #$2821 : STA $120A
|
||||||
; +
|
; +
|
||||||
; LDA.w #$11CE : STA $00 ; thing we wrote over
|
; LDA.w #$11CE : STA $00 ; thing we wrote over
|
||||||
;RTL
|
;RTL
|
||||||
@@ -1152,20 +1176,20 @@ AttemptItemSubstitution:
|
|||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CountBottles:
|
CountBottles:
|
||||||
PHX
|
PHX
|
||||||
LDX.b #$00
|
LDX.b #$00
|
||||||
LDA $7EF35C : BEQ ++ : INX
|
LDA $7EF35C : BEQ ++ : INX
|
||||||
++ : LDA $7EF35D : BEQ ++ : INX
|
++ : LDA $7EF35D : BEQ ++ : INX
|
||||||
++ : LDA $7EF35E : BEQ ++ : INX
|
++ : LDA $7EF35E : BEQ ++ : INX
|
||||||
++ : LDA $7EF35F : BEQ ++ : INX
|
++ : LDA $7EF35F : BEQ ++ : INX
|
||||||
++
|
++
|
||||||
TXA
|
TXA
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ActivateGoal:
|
ActivateGoal:
|
||||||
STZ $11
|
STZ $11
|
||||||
STZ $B0
|
STZ $B0
|
||||||
JML.l StatsFinalPrep
|
JML.l StatsFinalPrep
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ChestPrep:
|
ChestPrep:
|
||||||
@@ -1174,7 +1198,23 @@ ChestPrep:
|
|||||||
JSL.l ChestItemServiceRequest
|
JSL.l ChestItemServiceRequest
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDY $0C ; get item value
|
LDY $0C ; get item value
|
||||||
SEC
|
SEC
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
UpdateInventoryLocationExpanded:
|
||||||
|
{
|
||||||
|
REP #$30
|
||||||
|
TYA : AND #$00FF : ASL A : TAX
|
||||||
|
|
||||||
|
; Tells what inventory location to write to.
|
||||||
|
LDA.w AddReceivedItemExpanded_item_target_addr, X : STA $00
|
||||||
|
|
||||||
|
SEP #$30
|
||||||
|
|
||||||
|
LDA.b #$7E : STA $02
|
||||||
|
|
||||||
|
LDA.w AddReceivedItemExpanded_item_values, Y
|
||||||
|
JSL ItemDowngradeFix
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
|||||||
246
special_bombs.asm
Normal file
246
special_bombs.asm
Normal file
@@ -0,0 +1,246 @@
|
|||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
!ANCILLA_DAMAGE = "$06EC84"
|
||||||
|
!BOMB_LEVEL = "$7EF4A8"
|
||||||
|
; start with X = sprite index, A = ancilla index
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
DamageClassCalc:
|
||||||
|
CMP #$01 : BEQ .cane
|
||||||
|
CMP #$2C : BEQ .cane
|
||||||
|
CMP #$31 : BEQ .cane
|
||||||
|
BRA .not_cane
|
||||||
|
.cane
|
||||||
|
PHA
|
||||||
|
LDA SpecialBombs : BEQ .normal_cane
|
||||||
|
LDA $0E20, X : CMP.b #$1E : BEQ .normal_cane ; crystal switch
|
||||||
|
PLA
|
||||||
|
.impervious
|
||||||
|
LDA #$FF
|
||||||
|
RTL
|
||||||
|
.normal_cane
|
||||||
|
PLA
|
||||||
|
.not_cane
|
||||||
|
CMP #$07 : BNE .no_change
|
||||||
|
LDA SpecialBombs : BEQ .normal_bombs
|
||||||
|
LDA $0E20, X : CMP.b #$D6 : BEQ .unstunned_ganon
|
||||||
|
CMP.b #$D7 : BEQ .stunned_ganon
|
||||||
|
CMP.b #$88 : BEQ .mothula
|
||||||
|
CMP.b #$92 : BEQ .helmasaur_king
|
||||||
|
.bomb_level
|
||||||
|
LDA !BOMB_LEVEL : INC A
|
||||||
|
BRA .done
|
||||||
|
.mothula
|
||||||
|
LDA !BOMB_LEVEL : INC A
|
||||||
|
CMP #$04 : !BGE .fix_mothula
|
||||||
|
BRA .done
|
||||||
|
.fix_mothula
|
||||||
|
LDA #$03
|
||||||
|
BRA .done
|
||||||
|
.helmasaur_king
|
||||||
|
LDA $0DB0, X : CMP #$03 : !BGE .bomb_level
|
||||||
|
LDA #$08
|
||||||
|
BRA .done
|
||||||
|
.unstunned_ganon
|
||||||
|
LDA $04C5 : CMP.b #$02 : BNE .impervious
|
||||||
|
LDA $0EE0, X : BNE .impervious
|
||||||
|
LDA #$34 : STA $0EE0, X ; give the poor pig some iframes
|
||||||
|
BRA .bomb_level
|
||||||
|
.stunned_ganon
|
||||||
|
LDA $0EE0, X : BNE .impervious
|
||||||
|
LDA #$34 : STA $0EE0, X ; give the poor pig some iframes
|
||||||
|
LDA #$20 : STA $0F10, X ; knock ganon back or something? idk
|
||||||
|
LDA #$09
|
||||||
|
BRA .done
|
||||||
|
.normal_bombs
|
||||||
|
LDA #$07
|
||||||
|
.no_change
|
||||||
|
PHX : TAX
|
||||||
|
LDA.l !ANCILLA_DAMAGE, X
|
||||||
|
PLX
|
||||||
|
CMP.b #$06 : BNE .done ; not arrows
|
||||||
|
LDA $7EF340 : CMP.b #$03 : !BGE .actual_silver_arrows
|
||||||
|
LDA #$06
|
||||||
|
.done
|
||||||
|
RTL
|
||||||
|
.actual_silver_arrows
|
||||||
|
LDA $0E20, X : CMP.b #$D7 : BNE +
|
||||||
|
LDA #$20 : STA $0F10, X
|
||||||
|
+
|
||||||
|
LDA #$09
|
||||||
|
RTL
|
||||||
|
; end with X = sprite index, A = damage class
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
!SPRITE_SETUP_HIT_BOX_LONG = "$0683EA"
|
||||||
|
!UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG = "$0683E6"
|
||||||
|
; start with X = ancilla index, Y = sprite index
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Utility_CheckAncillaOverlapWithSprite:
|
||||||
|
LDA $0E20, Y : CMP #$09 : BEQ .giant_moldorm
|
||||||
|
CMP #$CB : BEQ .trinexx
|
||||||
|
.not_giant_moldorm ; ordinary collision checking
|
||||||
|
PHY : PHX
|
||||||
|
TYX
|
||||||
|
JSL !SPRITE_SETUP_HIT_BOX_LONG
|
||||||
|
PLX : PLY
|
||||||
|
JSL !UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG
|
||||||
|
RTL
|
||||||
|
.ignore_collision
|
||||||
|
CLC
|
||||||
|
RTL
|
||||||
|
.giant_moldorm
|
||||||
|
LDA $0C4A, X : CMP #$07 : BNE .ignore_collision ; don't collide with non-bombs
|
||||||
|
LDA.l SpecialBombs : BEQ .ignore_collision
|
||||||
|
LDA $0E10, Y : BNE .ignore_collision ; Moldy can have little a I-Frames, as a treat
|
||||||
|
|
||||||
|
JSR SetUpMoldormHitbox
|
||||||
|
JSL !UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG
|
||||||
|
RTL
|
||||||
|
.trinexx
|
||||||
|
LDA $0C4A, X : CMP #$07 : BNE .ignore_collision ; don't collide with non-bombs
|
||||||
|
LDA.l SpecialBombs : BEQ .ignore_collision
|
||||||
|
|
||||||
|
JSR SetUpTrinexxHitbox
|
||||||
|
JSL !UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG
|
||||||
|
RTL
|
||||||
|
; returns carry clear if there was no overlap
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
SetUpTrinexxHitbox:
|
||||||
|
; rearrange trinexx's hitbox to be her middle instead of her head
|
||||||
|
LDA $0CAA, Y : PHA
|
||||||
|
LDA $0E60, Y : PHA
|
||||||
|
LDA $0D10, Y : PHA
|
||||||
|
LDA $0D30, Y : PHA
|
||||||
|
LDA $0D00, Y : PHA
|
||||||
|
LDA $0D20, Y : PHA
|
||||||
|
|
||||||
|
LDA #$80 : STA $0CAA, Y
|
||||||
|
|
||||||
|
PHX
|
||||||
|
LDA $0E80, Y : !SUB.l $1DAF28 : AND.b #$7F : TAX
|
||||||
|
|
||||||
|
LDA $7FFC00, X : STA $0D10, Y
|
||||||
|
LDA $7FFC80, X : STA $0D30, Y
|
||||||
|
LDA $7FFD00, X : STA $0D00, Y
|
||||||
|
LDA $7FFD80, X : STA $0D20, Y
|
||||||
|
|
||||||
|
TYX
|
||||||
|
STZ $0E60, X
|
||||||
|
|
||||||
|
JSL !SPRITE_SETUP_HIT_BOX_LONG
|
||||||
|
PLX
|
||||||
|
|
||||||
|
PLA : STA $0D20, Y
|
||||||
|
PLA : STA $0D00, Y
|
||||||
|
PLA : STA $0D30, Y
|
||||||
|
PLA : STA $0D10, Y
|
||||||
|
PLA : STA $0E60, Y
|
||||||
|
PLA : STA $0CAA, Y
|
||||||
|
RTS
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
SetUpMoldormHitbox:
|
||||||
|
; rearrange moldorm's hitbox to be his tail instead of his head
|
||||||
|
LDA $0D90, Y : PHA
|
||||||
|
LDA $0F60, Y : PHA
|
||||||
|
LDA $0D10, Y : PHA
|
||||||
|
LDA $0D30, Y : PHA
|
||||||
|
LDA $0D00, Y : PHA
|
||||||
|
LDA $0D20, Y : PHA
|
||||||
|
|
||||||
|
PHY : PHX
|
||||||
|
LDA $0E80, Y : !SUB.b #$30 : AND.b #$7F : TAX
|
||||||
|
|
||||||
|
LDA $7FFC00, X : STA $0D10, Y
|
||||||
|
LDA $7FFC80, X : STA $0D30, Y
|
||||||
|
LDA $7FFD00, X : STA $0D00, Y
|
||||||
|
LDA $7FFD80, X : STA $0D20, Y
|
||||||
|
LDA #$01 : STA $09D0, Y
|
||||||
|
|
||||||
|
TYX
|
||||||
|
STZ $0F60, X
|
||||||
|
|
||||||
|
JSL !SPRITE_SETUP_HIT_BOX_LONG
|
||||||
|
|
||||||
|
PLX : PLY
|
||||||
|
|
||||||
|
PLA : STA $0D20, Y
|
||||||
|
PLA : STA $0D00, Y
|
||||||
|
PLA : STA $0D30, Y
|
||||||
|
PLA : STA $0D10, Y
|
||||||
|
PLA : STA $0F60, Y
|
||||||
|
PLA : STA $0D90, Y
|
||||||
|
RTS
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
; start with X = ancilla index, Y = sprite index
|
||||||
|
Utility_CheckHelmasaurKingCollision:
|
||||||
|
LDA $0C4A, X : CMP #$07 : BNE .normal ; normal behavior with non-bombs
|
||||||
|
LDA.l SpecialBombs : BEQ .normal
|
||||||
|
CLC
|
||||||
|
RTL
|
||||||
|
.normal
|
||||||
|
LDA $0DB0, Y : CMP.b #$03
|
||||||
|
RTL
|
||||||
|
; returns carry set if there is collision immunity
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Utility_CheckHammerHelmasaurKingMask:
|
||||||
|
LDA.l SpecialBombs : BNE .no_effect
|
||||||
|
LDA $0301 : AND #$0A
|
||||||
|
RTL
|
||||||
|
.no_effect
|
||||||
|
LDA #$00
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Utility_CheckImpervious:
|
||||||
|
LDA $0E20, X : CMP.b #$CB : BEQ .trinexx
|
||||||
|
.normal
|
||||||
|
LDA $0E60, X : AND.b #$40 : BNE .impervious
|
||||||
|
LDA $0CF2 : CMP #$FF : BEQ .impervious ; special "always-impervious" class
|
||||||
|
LDA $0E20, X : CMP.b #$CC : BEQ .sidenexx : CMP.b #$CD : BEQ .sidenexx
|
||||||
|
LDA $0301 : AND.b #$0A : BEQ .not_impervious ; normal behavior if not hammer
|
||||||
|
LDA.l SpecialBombs : BEQ .not_impervious
|
||||||
|
LDA $0E20, X : CMP.b #$1E : BEQ .not_impervious ; crystal switch
|
||||||
|
CMP.b #$40 : BEQ .not_impervious ; aga barrier
|
||||||
|
BRA .impervious
|
||||||
|
.trinexx
|
||||||
|
LDA SpecialBombs : BEQ .normal
|
||||||
|
LDA $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
||||||
|
BRA .not_impervious
|
||||||
|
.sidenexx
|
||||||
|
LDA $0CAA, X : AND.b #$04 : BEQ .vulnerable
|
||||||
|
LDA SpecialBombs : BEQ .not_impervious
|
||||||
|
LDA $0CF2 : CMP #$06 : !BLT .impervious ; swords are ineffective
|
||||||
|
BRA .not_impervious
|
||||||
|
.vulnerable
|
||||||
|
LDA SpecialBombs : BEQ .not_impervious
|
||||||
|
LDA $0CF2 : CMP #$06 : !BGE .impervious ; non-swords are ineffective
|
||||||
|
BRA .not_impervious
|
||||||
|
.not_impervious
|
||||||
|
LDA #$00 : RTL
|
||||||
|
.impervious
|
||||||
|
LDA #$01 : RTL
|
||||||
|
; returns nonzero A if impervious
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
!SPRITE_INITIALIZED_SEGMENTED = "$1DD6D1"
|
||||||
|
; start with X = sprite index
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
AllowBombingMoldorm:
|
||||||
|
LDA SpecialBombs : BNE .no_disable_projectiles
|
||||||
|
INC $0BA0, X
|
||||||
|
.no_disable_projectiles
|
||||||
|
JSL !SPRITE_INITIALIZED_SEGMENTED
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
DrawSwordInMenu:
|
||||||
|
LDA $7EF359 : AND.w #$00FF : CMP.w #$00FF : BEQ .noSword
|
||||||
|
.hasSword
|
||||||
|
STA $02
|
||||||
|
LDA.w #$F859 : STA $04
|
||||||
|
RTL
|
||||||
|
.noSword
|
||||||
|
LDA SpecialBombs : AND.w #$00FF : BNE .bombSword
|
||||||
|
LDA.w #$0000 : STA $02
|
||||||
|
LDA.w #$F859 : STA $04
|
||||||
|
RTL
|
||||||
|
.bombSword
|
||||||
|
LDA $7EF4A8 : AND.w #$00FF : STA $02
|
||||||
|
LDA.w #$FC51 : STA $04
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
@@ -6,11 +6,11 @@
|
|||||||
;GetFairySword:
|
;GetFairySword:
|
||||||
; CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert single fighter sword to low id one
|
; CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert single fighter sword to low id one
|
||||||
; CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert safe master sword to normal one
|
; CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert safe master sword to normal one
|
||||||
; CMP #$04 : !BLT + : JML.l PyramidFairy_BRANCH_IOTA : + ; for any sword, incl newer
|
; CMP #$04 : !BLT + : JML.l PyramidFairy_BRANCH_IOTA : + ; for any sword, incl newer
|
||||||
; JSL ItemCheck_FairySword : BEQ + : JML.l PyramidFairy_BRANCH_IOTA : + ; skip if we already flagged getting this
|
; JSL ItemCheck_FairySword : BEQ + : JML.l PyramidFairy_BRANCH_IOTA : + ; skip if we already flagged getting this
|
||||||
; JSL ItemSet_FairySword ; mark as got
|
; JSL ItemSet_FairySword ; mark as got
|
||||||
; LDA FairySword : STA $0DC0, X ; whichever sword
|
; LDA FairySword : STA $0DC0, X ; whichever sword
|
||||||
; LDA.b #$05 : STA $0EB0, X ; something we overwrote, documentation unclear on purpose
|
; LDA.b #$05 : STA $0EB0, X ; something we overwrote, documentation unclear on purpose
|
||||||
;
|
;
|
||||||
;JML.l PyramidFairy_BRANCH_GAMMA
|
;JML.l PyramidFairy_BRANCH_GAMMA
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -45,6 +45,7 @@ LookupDamageLevel:
|
|||||||
LDA.l !StalfosBombDamage
|
LDA.l !StalfosBombDamage
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
|
LDA SpecialBombs : BNE .alt_table
|
||||||
PHP
|
PHP
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
TXA : LSR : TAX : BCS .lower
|
TXA : LSR : TAX : BCS .lower
|
||||||
@@ -58,6 +59,20 @@ RTL
|
|||||||
LDA.l Damage_Table, X
|
LDA.l Damage_Table, X
|
||||||
AND.b #$0F
|
AND.b #$0F
|
||||||
RTL
|
RTL
|
||||||
|
.alt_table
|
||||||
|
PHP
|
||||||
|
REP #$20 ; set 16-bit accumulator
|
||||||
|
TXA : LSR : TAX : BCS .alt_lower
|
||||||
|
.alt_upper
|
||||||
|
PLP
|
||||||
|
LDA.l Damage_Table_Alt, X
|
||||||
|
LSR #4
|
||||||
|
RTL
|
||||||
|
.alt_lower
|
||||||
|
PLP
|
||||||
|
LDA.l Damage_Table_Alt, X
|
||||||
|
AND.b #$0F
|
||||||
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; $7F50C0 - Sword Modifier
|
; $7F50C0 - Sword Modifier
|
||||||
LoadModifiedSwordLevel: ; returns short
|
LoadModifiedSwordLevel: ; returns short
|
||||||
@@ -146,22 +161,22 @@ GetSmithSword:
|
|||||||
REP #$20 : LDA $7EF360 : CMP #$000A : SEP #$20 : !BGE .buy
|
REP #$20 : LDA $7EF360 : CMP #$000A : SEP #$20 : !BGE .buy
|
||||||
.cant_afford
|
.cant_afford
|
||||||
REP #$10
|
REP #$10
|
||||||
LDA.b #$7A
|
LDA.b #$7A
|
||||||
LDY.b #$01
|
LDY.b #$01
|
||||||
JSL.l Sprite_ShowMessageUnconditional
|
JSL.l Sprite_ShowMessageUnconditional
|
||||||
LDA.b #$3C : STA $012E ; error sound
|
LDA.b #$3C : STA $012E ; error sound
|
||||||
SEP #$10
|
SEP #$10
|
||||||
BRA .done
|
BRA .done
|
||||||
|
|
||||||
.buy
|
.buy
|
||||||
LDA SmithItem_Player : STA !MULTIWORLD_ITEM_PLAYER_ID
|
LDA SmithItem_Player : STA !MULTIWORLD_ITEM_PLAYER_ID
|
||||||
LDA.l SmithItem : TAY
|
LDA.l SmithItem : TAY
|
||||||
STZ $02E9 ; Item from NPC
|
STZ $02E9 ; Item from NPC
|
||||||
PHX : JSL Link_ReceiveItem : PLX
|
PHX : JSL Link_ReceiveItem : PLX
|
||||||
|
|
||||||
REP #$20 : LDA $7EF360 : !SUB.w #$000A : STA $7EF360 : SEP #$20 ; Take 10 rupees
|
REP #$20 : LDA $7EF360 : !SUB.w #$000A : STA $7EF360 : SEP #$20 ; Take 10 rupees
|
||||||
JSL ItemSet_SmithSword
|
JSL ItemSet_SmithSword
|
||||||
|
|
||||||
.done
|
.done
|
||||||
JML.l Smithy_AlreadyGotSword
|
JML.l Smithy_AlreadyGotSword
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
32
tables.asm
32
tables.asm
@@ -98,7 +98,11 @@ db #$02 ; #$02 = Tempered Sword (default)
|
|||||||
;org $05EBD4 ; PC 0x2EBD4 - sprite_zelda.asm:23 - (LDA $7EF359 : CMP.b #$02 : BCS .hasMasterSword) - Zelda Spawnpoint Sword Check
|
;org $05EBD4 ; PC 0x2EBD4 - sprite_zelda.asm:23 - (LDA $7EF359 : CMP.b #$02 : BCS .hasMasterSword) - Zelda Spawnpoint Sword Check
|
||||||
;db #$05 ; #$02 = Tempered Sword (default) - #$05 = All Swords
|
;db #$05 ; #$02 = Tempered Sword (default) - #$05 = All Swords
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; 0x18002B- 0x18002F (Unused)
|
; 0x18002B- 0x18002E (Unused)
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $30802F ; PC 0x18003F
|
||||||
|
SpecialBombs:
|
||||||
|
db #$00 ; #$00 = Off (default) - #$01 = On
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $308030 ; PC 0x180030
|
org $308030 ; PC 0x180030
|
||||||
EnableSRAMTrace:
|
EnableSRAMTrace:
|
||||||
@@ -223,10 +227,13 @@ db #$00 ; #$00 = Off (default) - #$01 = On (frog/smith can enter multi-entrance
|
|||||||
org $30804D ; PC 0x18004D
|
org $30804D ; PC 0x18004D
|
||||||
EscapeAssist: ; ScrubMode:
|
EscapeAssist: ; ScrubMode:
|
||||||
db #$00
|
db #$00
|
||||||
;---- -mba
|
;-MBA -mba
|
||||||
;m - Infinite Magic
|
;M - Infinite Magic (after escape)
|
||||||
;b - Infinite Bombs
|
;B - Infinite Bombs (after escape)
|
||||||
;a - Infinite Arrows
|
;A - Infinite Arrows (after escape)
|
||||||
|
;m - Infinite Magic (during escape)
|
||||||
|
;b - Infinite Bombs (during escape)
|
||||||
|
;a - Infinite Arrows (during escape)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $30804E ; PC 0x18004E
|
org $30804E ; PC 0x18004E
|
||||||
UncleRefill:
|
UncleRefill:
|
||||||
@@ -242,7 +249,7 @@ db #$01 ; #$00 = Off - #$01 = On (default)
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $308050 ; PC 0x180050 - 0x18005C
|
org $308050 ; PC 0x180050 - 0x18005C
|
||||||
CrystalPendantFlags_2:
|
CrystalPendantFlags_2:
|
||||||
db $00 ; Sewers
|
db $00 ; Sewers
|
||||||
db $00 ; Hyrule Castle
|
db $00 ; Hyrule Castle
|
||||||
db $00 ; Eastern Palace
|
db $00 ; Eastern Palace
|
||||||
db $00 ; Desert Palace
|
db $00 ; Desert Palace
|
||||||
@@ -250,7 +257,7 @@ CrystalPendantFlags_2:
|
|||||||
db $40 ; Swamp Palace
|
db $40 ; Swamp Palace
|
||||||
db $40 ; Palace of Darkness
|
db $40 ; Palace of Darkness
|
||||||
db $40 ; Misery Mire
|
db $40 ; Misery Mire
|
||||||
db $40 ; Skull Woods
|
db $40 ; Skull Woods
|
||||||
db $40 ; Ice Palace
|
db $40 ; Ice Palace
|
||||||
.hera
|
.hera
|
||||||
db $00 ; Tower of Hera
|
db $00 ; Tower of Hera
|
||||||
@@ -630,7 +637,7 @@ dw $6434 ; #6434 - Crystal
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $02A09B ; PC 0x1209B - Bank02.asm:5802 - (pool MilestoneItem_Flags:)
|
org $02A09B ; PC 0x1209B - Bank02.asm:5802 - (pool MilestoneItem_Flags:)
|
||||||
CrystalPendantFlags:
|
CrystalPendantFlags:
|
||||||
db $00 ; Sewers
|
db $00 ; Sewers
|
||||||
db $00 ; Hyrule Castle
|
db $00 ; Hyrule Castle
|
||||||
db $04 ; Eastern Palace
|
db $04 ; Eastern Palace
|
||||||
db $02 ; Desert Palace
|
db $02 ; Desert Palace
|
||||||
@@ -638,7 +645,7 @@ CrystalPendantFlags:
|
|||||||
db $10 ; Swamp Palace
|
db $10 ; Swamp Palace
|
||||||
db $02 ; Palace of Darkness
|
db $02 ; Palace of Darkness
|
||||||
db $01 ; Misery Mire
|
db $01 ; Misery Mire
|
||||||
db $40 ; Skull Woods
|
db $40 ; Skull Woods
|
||||||
db $04 ; Ice Palace
|
db $04 ; Ice Palace
|
||||||
.hera
|
.hera
|
||||||
db $01 ; Tower of Hera
|
db $01 ; Tower of Hera
|
||||||
@@ -1377,6 +1384,13 @@ db $04
|
|||||||
;AD - Small Key of Ganon's Tower
|
;AD - Small Key of Ganon's Tower
|
||||||
;AE - Reserved
|
;AE - Reserved
|
||||||
;AF - Generic Small Key
|
;AF - Generic Small Key
|
||||||
|
|
||||||
|
;B0 - reserved for bee traps
|
||||||
|
;B1 - L-2 Bombs
|
||||||
|
;B2 - L-3 Bombs
|
||||||
|
;B3 - L-4 Bombs
|
||||||
|
;B4 - L-5 Bombs
|
||||||
|
;B5 - Progressive Bombs
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;;Residual Portal
|
;;Residual Portal
|
||||||
;org $0283E0 ; PC 0x103E0 (Bank02.asm:816) (BNE)
|
;org $0283E0 ; PC 0x103E0 (Bank02.asm:816) (BNE)
|
||||||
|
|||||||
@@ -114,19 +114,19 @@ RTL
|
|||||||
;DATA - Loot Identifier to Sprite ID
|
;DATA - Loot Identifier to Sprite ID
|
||||||
{
|
{
|
||||||
.gfxSlots
|
.gfxSlots
|
||||||
db $06, $44, $45, $46, $2D, $20, $2E, $09
|
db $06, $44, $45, $46, $2D, $20, $2E, $09
|
||||||
db $09, $0A, $08, $05, $10, $0B, $2C, $1B
|
db $09, $0A, $08, $05, $10, $0B, $2C, $1B
|
||||||
|
|
||||||
db $1A, $1C, $14, $19, $0C, $07, $1D, $2F
|
db $1A, $1C, $14, $19, $0C, $07, $1D, $2F
|
||||||
db $07, $15, $12, $0D, $0D, $0E, $11, $17
|
db $07, $15, $12, $0D, $0D, $0E, $11, $17
|
||||||
|
|
||||||
db $28, $27, $04, $04, $0F, $16, $03, $13
|
db $28, $27, $04, $04, $0F, $16, $03, $13
|
||||||
db $01, $1E, $10, $00, $00, $00, $00, $00
|
db $01, $1E, $10, $00, $00, $00, $00, $00
|
||||||
|
|
||||||
db $00, $30, $22, $21, $24, $24, $24, $23
|
db $00, $30, $22, $21, $24, $24, $24, $23
|
||||||
db $23, $23, $29, $2A, $2C, $2B, $03, $03
|
db $23, $23, $29, $2A, $2C, $2B, $03, $03
|
||||||
|
|
||||||
db $34, $35, $31, $33, $02, $32, $36, $37
|
db $34, $35, $31, $33, $02, $32, $36, $37
|
||||||
db $2C, $43, $0C, $38, $39, $3A, $F9, $3C
|
db $2C, $43, $0C, $38, $39, $3A, $F9, $3C
|
||||||
; db $2C, $06, $0C, $38, $FF, $FF, $FF, $FF
|
; db $2C, $06, $0C, $38, $FF, $FF, $FF, $FF
|
||||||
|
|
||||||
@@ -160,8 +160,11 @@ RTL
|
|||||||
;Ax
|
;Ax
|
||||||
db $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F ; Free Small Key
|
db $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F ; Free Small Key
|
||||||
|
|
||||||
|
;Bx
|
||||||
db $2C ; Bee Trap
|
db $2C ; Bee Trap
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
db $13, $13, $13, $13, $13 ; Bomb Upgrades
|
||||||
|
|
||||||
|
db $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 ; 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
|
||||||
@@ -196,7 +199,7 @@ GetSpritePalette:
|
|||||||
;--------
|
;--------
|
||||||
TAX : LDA.l .gfxPalettes, X ; look up item gfx
|
TAX : LDA.l .gfxPalettes, X ; look up item gfx
|
||||||
PLB : PLX
|
PLB : PLX
|
||||||
CMP.b #$F8 : !BGE .specialHandling
|
CMP.b #$F7 : !BGE .specialHandling
|
||||||
RTL
|
RTL
|
||||||
.specialHandling
|
.specialHandling
|
||||||
CMP.b #$FD : BNE ++ ; Progressive Sword
|
CMP.b #$FD : BNE ++ ; Progressive Sword
|
||||||
@@ -290,7 +293,8 @@ RTL
|
|||||||
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 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 ; Free Small Key
|
||||||
db $04 ; Bee Trap
|
db $04 ; Bee Trap
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
db $0A, $0A, $0A, $0A, $0A; Bomb Upgrades
|
||||||
|
db $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
|
||||||
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
|
||||||
@@ -549,12 +553,12 @@ LoadModifiedTileBufferAddress:
|
|||||||
PHA
|
PHA
|
||||||
LDA !TILE_UPLOAD_OFFSET_OVERRIDE : BEQ +
|
LDA !TILE_UPLOAD_OFFSET_OVERRIDE : BEQ +
|
||||||
TAX
|
TAX
|
||||||
LDY.w #$0002
|
LDY.w #$0002
|
||||||
LDA.w #$0000 : STA !TILE_UPLOAD_OFFSET_OVERRIDE
|
LDA.w #$0000 : STA !TILE_UPLOAD_OFFSET_OVERRIDE
|
||||||
BRA .done
|
BRA .done
|
||||||
+
|
+
|
||||||
LDX.w #$2D40
|
LDX.w #$2D40
|
||||||
LDY.w #$0002
|
LDY.w #$0002
|
||||||
.done
|
.done
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
@@ -566,7 +570,7 @@ RTL
|
|||||||
; out: Carry - 1 = On Screen, 0 = Off Screen
|
; out: Carry - 1 = On Screen, 0 = Off Screen
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Sprite_IsOnscreen:
|
Sprite_IsOnscreen:
|
||||||
JSR _Sprite_IsOnscreen_DoWork
|
JSR _Sprite_IsOnscreen_DoWork
|
||||||
BCS +
|
BCS +
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA $E2 : PHA : !SUB.w #$0F : STA $E2
|
LDA $E2 : PHA : !SUB.w #$0F : STA $E2
|
||||||
@@ -581,11 +585,11 @@ Sprite_IsOnscreen:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
_Sprite_IsOnscreen_DoWork:
|
_Sprite_IsOnscreen_DoWork:
|
||||||
LDA $0D10, X : CMP $E2
|
LDA $0D10, X : CMP $E2
|
||||||
LDA $0D30, X : SBC $E3 : BNE .offscreen
|
LDA $0D30, X : SBC $E3 : BNE .offscreen
|
||||||
|
|
||||||
LDA $0D00, X : CMP $E8
|
LDA $0D00, X : CMP $E8
|
||||||
LDA $0D20, X : SBC $E9 : BNE .offscreen
|
LDA $0D20, X : SBC $E9 : BNE .offscreen
|
||||||
SEC
|
SEC
|
||||||
RTS
|
RTS
|
||||||
.offscreen
|
.offscreen
|
||||||
|
|||||||
10
zelda.asm
10
zelda.asm
@@ -10,7 +10,15 @@ SpawnZelda:
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
EndRainState:
|
EndRainState:
|
||||||
LDA $7EF3C5 : CMP.b #$02 : !BGE + ; skip if past escape already
|
LDA $7EF3C5 : CMP.b #$02 : !BGE + ; skip if past escape already
|
||||||
LDA.b #$00 : STA !INFINITE_ARROWS : STA !INFINITE_BOMBS : STA !INFINITE_MAGIC
|
LDA.l EscapeAssist : AND #$44
|
||||||
|
CMP #$04 : BNE + : LDA #$00 : STA !INFINITE_MAGIC : +
|
||||||
|
CMP #$40 : BNE + : STA !INFINITE_MAGIC : +
|
||||||
|
LDA.l EscapeAssist : AND #$22
|
||||||
|
CMP #$02 : BNE + : LDA #$00 : STA !INFINITE_BOMBS : +
|
||||||
|
CMP #$20 : BNE + : STA !INFINITE_BOMBS : +
|
||||||
|
LDA.l EscapeAssist : AND #$11
|
||||||
|
CMP #$01 : BNE + : LDA #$00 : STA !INFINITE_ARROWS : +
|
||||||
|
CMP #$10 : BNE + : STA !INFINITE_ARROWS : +
|
||||||
LDA.b #$02 : STA $7EF3C5 ; end rain state
|
LDA.b #$02 : STA $7EF3C5 ; end rain state
|
||||||
JSL MaybeSetPostAgaWorldState
|
JSL MaybeSetPostAgaWorldState
|
||||||
+
|
+
|
||||||
|
|||||||
Reference in New Issue
Block a user