Compare commits
95 Commits
pseudoflut
...
overworld_
| Author | SHA1 | Date | |
|---|---|---|---|
| dacae98439 | |||
| 63f0f8002f | |||
| 4b8de58460 | |||
| 93e1cfa361 | |||
| fa484ec987 | |||
| 256f0fa270 | |||
| 5ad699f731 | |||
| 0b01f75f80 | |||
| f076566dca | |||
| 4815c9971a | |||
| 723d359b0a | |||
| ed85faaab5 | |||
| 13ccba90c3 | |||
| b52404469b | |||
| cd1a1f4288 | |||
| 25c44cd2bb | |||
| 015f769521 | |||
| bfbc180ff3 | |||
| ec6231955d | |||
| 9699c4d731 | |||
| 846ad798cf | |||
| 44e2ccf7f7 | |||
| 5d4e7fa62d | |||
| be81787446 | |||
| 682583c215 | |||
| 3cec56c5d8 | |||
| d05169d5e2 | |||
| f93a817ed3 | |||
| d6f3aee02b | |||
| 4817fa2013 | |||
| 6f138825d9 | |||
| 6400a563ea | |||
| 9c30e3cdf9 | |||
| 7da5e6257a | |||
| 8dfdd3ee87 | |||
| ede8760b5c | |||
| 2a15f39e65 | |||
|
|
c416bfa917 | ||
| b2043ef15e | |||
| 74c55cf048 | |||
|
|
e78c41ef38 | ||
| 6db6733d80 | |||
| 8ffef89fb8 | |||
| 8c6d2ac26d | |||
| 0f26e5aaa5 | |||
| 8a25dc9d52 | |||
| d2ad452170 | |||
| b1e3a7999c | |||
| 53792aea25 | |||
| 0ab9095222 | |||
| e96d802ed1 | |||
| b515b59a38 | |||
| 69a669e16e | |||
| 4896985493 | |||
| 2fd459d8ca | |||
| 918eefc3bd | |||
| 2b241b2340 | |||
| 0c6ba20470 | |||
| 82c5190f63 | |||
| aeec3fe6c6 | |||
| 825d4a1ead | |||
| 6d9cbc85b7 | |||
| f6f6383913 | |||
| fb4068a3e1 | |||
| 42002ae839 | |||
| 0816bb7cab | |||
| a12b5a9188 | |||
| f14fea3699 | |||
| 07f0ee9962 | |||
| 7aac3970d1 | |||
| b663bb982f | |||
| 73ac8d8c25 | |||
| 6df8dca127 | |||
| faf05fb9a9 | |||
| 6da1227578 | |||
| 59affe8b93 | |||
| bdd665db24 | |||
| e81905a517 | |||
| da14e440c7 | |||
| 8d92e39451 | |||
| 2c221dfa37 | |||
| a6a8cda041 | |||
| 2c931527e9 | |||
| 8b173ac27b | |||
| d960103e86 | |||
| 7022b8768a | |||
| d4e1337471 | |||
| b8545ca055 | |||
| f4e7d412ed | |||
| 28b84484e0 | |||
| 2fec3f7484 | |||
| 01abf889d7 | |||
| b8dc86d7c5 | |||
| 8b0f0464f8 | |||
| b3d649a0fb |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -2,4 +2,4 @@ tournament.asm
|
|||||||
/build
|
/build
|
||||||
/.idea
|
/.idea
|
||||||
/__pycache__
|
/__pycache__
|
||||||
/.vscode
|
/.vscode
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ dw !ROM_VERSION_HIGH
|
|||||||
function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<<0))
|
function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<<0))
|
||||||
|
|
||||||
; Feature flags, run asar with -DFEATURE_X=1 to enable
|
; Feature flags, run asar with -DFEATURE_X=1 to enable
|
||||||
!FEATURE_NEW_TEXT ?= 0
|
!FEATURE_NEW_TEXT ?= 1
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
@@ -229,6 +229,9 @@ warnpc $A58000
|
|||||||
;org $228000 ; contrib area
|
;org $228000 ; contrib area
|
||||||
org $A28000 ; contrib area
|
org $A28000 ; contrib area
|
||||||
incsrc contrib.asm
|
incsrc contrib.asm
|
||||||
|
incsrc special_weapons.asm
|
||||||
|
incsrc item_on_b.asm
|
||||||
|
incsrc variable_ganon_vulnerability.asm
|
||||||
warnpc $A38000
|
warnpc $A38000
|
||||||
|
|
||||||
org $A38000
|
org $A38000
|
||||||
@@ -307,6 +310,16 @@ InvertedCastleHole: ;address used by front end. DO NOT MOVE!
|
|||||||
incbin sheet73.gfx
|
incbin sheet73.gfx
|
||||||
warnpc $31E501
|
warnpc $31E501
|
||||||
|
|
||||||
|
org $31E800
|
||||||
|
Damage_Table_Bombs:
|
||||||
|
incbin damage_table_sword_bombs.bin
|
||||||
|
warnpc $31F000
|
||||||
|
|
||||||
|
org $31F000
|
||||||
|
Damage_Table_Pseudo:
|
||||||
|
incbin damage_table_pseudo_sword.bin
|
||||||
|
warnpc $31F800
|
||||||
|
|
||||||
org $338000
|
org $338000
|
||||||
GFX_HUD_Palette:
|
GFX_HUD_Palette:
|
||||||
incbin hudpalette.pal
|
incbin hudpalette.pal
|
||||||
@@ -321,23 +334,24 @@ BossMapIconGFX:
|
|||||||
incbin bossicons.4bpp
|
incbin bossicons.4bpp
|
||||||
|
|
||||||
if !FEATURE_NEW_TEXT
|
if !FEATURE_NEW_TEXT
|
||||||
org $339C00
|
org $339C00
|
||||||
NewFont:
|
NewFont:
|
||||||
incbin newfont.bin
|
incbin newfont.bin
|
||||||
NewFontInverted:
|
NewFontInverted:
|
||||||
incbin newfont_inverted.bin
|
incbin newfont_inverted.bin
|
||||||
org $0CD7DF
|
|
||||||
incbin text_unscramble1.bin
|
org $0CD7DF
|
||||||
org $0CE4D5
|
incbin text_unscramble1.bin
|
||||||
incbin text_unscramble2.bin
|
org $0CE4D5
|
||||||
|
incbin text_unscramble2.bin
|
||||||
endif
|
endif
|
||||||
|
|
||||||
org $328000
|
org $328000
|
||||||
Extra_Text_Table:
|
Extra_Text_Table:
|
||||||
if !FEATURE_NEW_TEXT
|
if !FEATURE_NEW_TEXT
|
||||||
incsrc itemtext_lower.asm
|
incsrc itemtext_lower.asm
|
||||||
else
|
else
|
||||||
incsrc itemtext.asm
|
incsrc itemtext.asm
|
||||||
endif
|
endif
|
||||||
warnpc $32E000
|
warnpc $32E000
|
||||||
|
|
||||||
@@ -644,6 +658,12 @@ Player_HaltDashAttackLong:
|
|||||||
org $07999D
|
org $07999D
|
||||||
Link_ReceiveItem:
|
Link_ReceiveItem:
|
||||||
|
|
||||||
|
org $079F82
|
||||||
|
Link_UseHammer:
|
||||||
|
|
||||||
|
org $07AFEE
|
||||||
|
Link_UseBugNet:
|
||||||
|
|
||||||
org $07A985
|
org $07A985
|
||||||
SetGameModeLikeMirror:
|
SetGameModeLikeMirror:
|
||||||
|
|
||||||
|
|||||||
BIN
c2807_v4.bin
BIN
c2807_v4.bin
Binary file not shown.
BIN
c2807_v4.gfx
BIN
c2807_v4.gfx
Binary file not shown.
BIN
damage_table_pseudo_sword.bin
Normal file
BIN
damage_table_pseudo_sword.bin
Normal file
Binary file not shown.
BIN
damage_table_sword_bombs.bin
Normal file
BIN
damage_table_sword_bombs.bin
Normal file
Binary file not shown.
@@ -1,13 +1,13 @@
|
|||||||
CheckReceivedItemPropertiesBeforeLoad:
|
CheckReceivedItemPropertiesBeforeLoad:
|
||||||
LDA $A0 : BEQ .normalCode
|
LDA $A0 : BEQ .normalCode
|
||||||
LDA $7EC005 : BNE .lightOff
|
LDA $7EC005 : BNE .lightOff
|
||||||
.normalCode
|
.normalCode
|
||||||
LDA.l AddReceivedItemExpanded_properties, X ;Restore Rando Code
|
JSL LoadReceivedItemExpandedProperties ; get palette
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
.lightOff
|
.lightOff
|
||||||
PHX : PHY : PHB
|
PHX : PHY : PHB
|
||||||
LDA.l AddReceivedItemExpanded_properties, X ; get palette
|
JSL LoadReceivedItemExpandedProperties ; get palette
|
||||||
|
|
||||||
REP #$30
|
REP #$30
|
||||||
AND #$0007 ; mask out palette
|
AND #$0007 ; mask out palette
|
||||||
|
|||||||
@@ -165,22 +165,25 @@ RefreshRainAmmo:
|
|||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!INFINITE_ARROWS = "$7F50C8"
|
|
||||||
!INFINITE_BOMBS = "$7F50C9"
|
|
||||||
!INFINITE_MAGIC = "$7F50CA"
|
|
||||||
SetEscapeAssist:
|
SetEscapeAssist:
|
||||||
LDA ProgressIndicator : CMP.b #$01 : BNE .no_train ; check if we're in rain state
|
LDA ProgressIndicator : CMP.b #$01 : BNE .no_train ; check if we're in rain state
|
||||||
.rain
|
.rain
|
||||||
LDA.l EscapeAssist
|
LDA.l EscapeAssist
|
||||||
BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : +
|
BIT.b #$04 : BEQ + : STA InfiniteMagicModifier : +
|
||||||
BIT.b #$02 : BEQ + : STA !INFINITE_BOMBS : +
|
BIT.b #$02 : BEQ + : STA InfiniteBombsModifier : +
|
||||||
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : +
|
BIT.b #$01 : BEQ + : STA InfiniteArrowsModifier : +
|
||||||
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 InfiniteMagicModifier : +
|
||||||
LDA.l EscapeAssist : BIT.b #$01 : BEQ + : LDA.b #$00 : STA !INFINITE_ARROWS : +
|
BIT.b #$20 : BEQ + : STA InfiniteBombsModifier : +
|
||||||
|
BIT.b #$10 : BEQ + : STA InfiniteArrowsModifier : +
|
||||||
++
|
++
|
||||||
|
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP #$01 : BNE +
|
||||||
|
LDA.l SpecialWeaponLevel : BEQ +
|
||||||
|
LDA #$01 : STA InfiniteBombsModifier
|
||||||
|
+
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SetSilverBowMode:
|
SetSilverBowMode:
|
||||||
|
|||||||
98
dialog.asm
98
dialog.asm
@@ -268,8 +268,7 @@ RTL
|
|||||||
DialogFairyThrow:
|
DialogFairyThrow:
|
||||||
LDA.l Restrict_Ponds : BEQ .normal
|
LDA.l Restrict_Ponds : BEQ .normal
|
||||||
LDA BottleContentsOne
|
LDA BottleContentsOne
|
||||||
ORA BottleContentsTwo : ORA BottleContentsThree : ORA BottleContentsFour : BNE .normal
|
ORA BottleContentsTwo : ORA BottleContentsThree : ORA BottleContentsFour : 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
|
||||||
@@ -300,31 +299,64 @@ 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 : JMP .done
|
||||||
+
|
+
|
||||||
|
LDA.l GanonVulnerabilityItem : AND #$00FF : BNE .special_item
|
||||||
|
LDA.l SpecialWeapons : AND.w #$007F
|
||||||
|
CMP.w #$0001 : BEQ .bombs ; bombs if special bomb mode
|
||||||
|
.silver_arrows
|
||||||
LDA.l BowTracking
|
LDA.l BowTracking
|
||||||
|
|
||||||
BIT.w #$0080 : BNE + ; branch if bow
|
BIT.w #$0080 : BNE + ; branch if bow
|
||||||
LDA.w #$0192 : BRA ++
|
LDA.w #$0192 : JMP .done
|
||||||
+
|
+
|
||||||
BIT.w #$0040 : BEQ + ; branch if no silvers
|
BIT.w #$0040 : BEQ + ; branch if no silvers
|
||||||
LDA.w #$0195 : BRA ++
|
LDA.w #$0195 : JMP .done
|
||||||
+
|
+
|
||||||
BIT.w #$0020 : BNE + ; branch if p bow
|
BIT.w #$0020 : BNE + ; branch if p bow
|
||||||
LDA.w #$0194 : BRA ++
|
LDA.w #$0194 : JMP .done
|
||||||
+
|
+
|
||||||
BIT.w #$0080 : BEQ + ; branch if no bow
|
BIT.w #$0080 : BEQ + ; branch if no bow
|
||||||
LDA.w #$0193 : BRA ++
|
LDA.w #$0193 : JMP .done
|
||||||
+
|
+
|
||||||
LDA.w #$016E
|
LDA.w #$016E : JMP .done
|
||||||
++
|
.special_item
|
||||||
|
CMP.w #$0001 : BEQ .silver_arrows
|
||||||
|
CMP.w #$0004 : BEQ .bombs
|
||||||
|
CMP.w #$0005 : BEQ .powder
|
||||||
|
CMP.w #$0010 : BEQ .bee
|
||||||
|
PHX : TAX
|
||||||
|
LDA.l EquipmentWRAM-1, X : PLX : AND #$00FF : BNE +
|
||||||
|
LDA.w #$0192 : JMP .done
|
||||||
|
+
|
||||||
|
LDA.w #$0195 : BRA .done
|
||||||
|
.bombs
|
||||||
|
LDA.l BombsEquipment : AND #$00FF : BNE +
|
||||||
|
LDA.l InfiniteBombsModifier : AND #$00FF : BNE + ; check for infinite bombs
|
||||||
|
LDA.w #$0192 : BRA .done
|
||||||
|
+
|
||||||
|
LDA.w #$0195 : BRA .done
|
||||||
|
.powder
|
||||||
|
LDA.l InventoryTracking : AND #$0010 : BNE + ; check for powder
|
||||||
|
LDA.w #$0192 : BRA .done
|
||||||
|
+
|
||||||
|
LDA.w #$0195 : BRA .done
|
||||||
|
.bee
|
||||||
|
LDA.l BottleContentsOne : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ +
|
||||||
|
LDA.l BottleContentsTwo : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ +
|
||||||
|
LDA.l BottleContentsThree : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ +
|
||||||
|
LDA.l BottleContentsFour : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ +
|
||||||
|
LDA.w #$0192 : BRA .done
|
||||||
|
+
|
||||||
|
LDA.w #$0195 : BRA .done
|
||||||
|
.done
|
||||||
STA $1CF0
|
STA $1CF0
|
||||||
SEP #$20
|
SEP #$20
|
||||||
JSL.l Sprite_ShowMessageMinimal_Alt
|
JSL.l Sprite_ShowMessageMinimal_Alt
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DialogEtherTablet:
|
DialogEtherTablet:
|
||||||
@@ -334,11 +366,8 @@ DialogEtherTablet:
|
|||||||
PLA : JML Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
PLA : JML Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
||||||
+
|
+
|
||||||
BIT $F4 : BVC - ; Show normal text if Y is not pressed
|
BIT $F4 : BVC - ; Show normal text if Y is not pressed
|
||||||
LDA.l AllowHammerTablets : BEQ ++
|
JSL CheckTabletSword : BMI .yesText
|
||||||
LDA HammerEquipment : BEQ .yesText : BRA .noText
|
CMP.b #$02 : !BGE .noText
|
||||||
++
|
|
||||||
LDA SwordEquipment : CMP.b #$FF : BEQ .yesText : CMP.b #$02 : BCS .noText
|
|
||||||
;++
|
|
||||||
.yesText
|
.yesText
|
||||||
PLA
|
PLA
|
||||||
LDA.b #$0C
|
LDA.b #$0C
|
||||||
@@ -356,13 +385,10 @@ DialogBombosTablet:
|
|||||||
PLA : JML Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
PLA : JML Sprite_ShowMessageUnconditional ; Wacky Hylian Text
|
||||||
+
|
+
|
||||||
BIT $F4 : BVC - ; Show normal text if Y is not pressed
|
BIT $F4 : BVC - ; Show normal text if Y is not pressed
|
||||||
LDA.l AllowHammerTablets : BEQ ++
|
JSL CheckTabletSword : BMI .yesText
|
||||||
LDA HammerEquipment : BEQ .yesText : BRA .noText
|
CMP.b #$02 : !BGE .noText
|
||||||
++
|
|
||||||
LDA SwordEquipment : 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)
|
||||||
@@ -374,7 +400,7 @@ RTL
|
|||||||
DialogSahasrahla:
|
DialogSahasrahla:
|
||||||
LDA.l PendantsField : AND #$04 : BEQ + ;Check if player has green pendant
|
LDA.l PendantsField : 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
|
||||||
@@ -455,7 +481,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
|
||||||
@@ -464,13 +490,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
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ HudAdditions:
|
|||||||
+ lda #$207f
|
+ lda #$207f
|
||||||
.reminder sta $7ec702
|
.reminder sta $7ec702
|
||||||
+ lda.w DRFlags : and #$0004 : beq .restore
|
+ lda.w DRFlags : and #$0004 : beq .restore
|
||||||
lda MapField : and.l $0098c0, x : beq .restore
|
; lda MapField : and.l $0098c0, x : beq .restore
|
||||||
txa : lsr : tax
|
txa : lsr : tax
|
||||||
|
|
||||||
lda.l GenericKeys : and #$00ff : bne +
|
lda.l GenericKeys : and #$00ff : bne +
|
||||||
@@ -133,7 +133,7 @@ DrHudDungeonItemsAdditions:
|
|||||||
jsr ConvertToDisplay2 : sta $1644, y
|
jsr ConvertToDisplay2 : sta $1644, y
|
||||||
+ iny #2 : lda.w #$24f5 : sta $1644, y
|
+ iny #2 : lda.w #$24f5 : sta $1644, y
|
||||||
phx : ldx $00
|
phx : ldx $00
|
||||||
lda MapField : and.l $0098c0, x : beq + ; must have map
|
; lda MapField : and.l $0098c0, x : beq + ; must have map
|
||||||
plx : sep #$30 : lda.l ChestKeys, x : sta $02
|
plx : sep #$30 : lda.l ChestKeys, x : sta $02
|
||||||
lda.l GenericKeys : bne +++
|
lda.l GenericKeys : bne +++
|
||||||
lda $02 : !sub DungeonCollectedKeys, x : sta $02
|
lda $02 : !sub DungeonCollectedKeys, x : sta $02
|
||||||
|
|||||||
@@ -217,11 +217,11 @@ AnimatedEntranceFix: ;when an entrance animation tries to start
|
|||||||
PHA : PHX
|
PHA : PHX
|
||||||
LDA.l InvertedMode : BEQ + ;If we are in inverted mode
|
LDA.l InvertedMode : BEQ + ;If we are in inverted mode
|
||||||
LDA.l OWMode+1 : AND.b #!FLAG_OW_MIXED : BNE + ;If we are in Mixed OW shuffle mode
|
LDA.l OWMode+1 : AND.b #!FLAG_OW_MIXED : BNE + ;If we are in Mixed OW shuffle mode
|
||||||
LDA $8A : AND #$40 : BNE + ;and in the light world
|
LDA $8A : AND #$40 : BNE + ;and in the light world
|
||||||
PLX : PLA
|
PLX : PLA
|
||||||
STZ $04C6 ; skip it.
|
STZ $04C6 ; skip it.
|
||||||
LDA #$00
|
LDA #$00
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
PLX : PLA
|
PLX : PLA
|
||||||
STA $02E4 ;what we wrote over
|
STA $02E4 ;what we wrote over
|
||||||
|
|||||||
94
events.asm
94
events.asm
@@ -59,9 +59,9 @@ RTL
|
|||||||
OnUncleItemGet:
|
OnUncleItemGet:
|
||||||
PHA
|
PHA
|
||||||
LDA.l EscapeAssist
|
LDA.l EscapeAssist
|
||||||
BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : +
|
BIT.b #$04 : BEQ + : STA InfiniteMagicModifier : +
|
||||||
BIT.b #$02 : BEQ + : STA !INFINITE_BOMBS : +
|
BIT.b #$02 : BEQ + : STA InfiniteBombsModifier : +
|
||||||
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : +
|
BIT.b #$01 : BEQ + : STA InfiniteArrowsModifier : +
|
||||||
|
|
||||||
LDA UncleItem_Player : STA !MULTIWORLD_ITEM_PLAYER_ID
|
LDA UncleItem_Player : STA !MULTIWORLD_ITEM_PLAYER_ID
|
||||||
PLA
|
PLA
|
||||||
@@ -70,53 +70,53 @@ OnUncleItemGet:
|
|||||||
LDA.l UncleRefill : BIT.b #$04 : BEQ + : LDA.b #$80 : STA.l MagicFiller : + ; refill magic
|
LDA.l UncleRefill : BIT.b #$04 : BEQ + : LDA.b #$80 : STA.l MagicFiller : + ; refill magic
|
||||||
LDA.l UncleRefill : BIT.b #$02 : BEQ + : LDA.b #50 : STA.l BombsFiller : + ; refill bombs
|
LDA.l UncleRefill : BIT.b #$02 : BEQ + : LDA.b #50 : STA.l BombsFiller : + ; refill bombs
|
||||||
LDA.l UncleRefill : BIT.b #$01 : BEQ + ; refill arrows
|
LDA.l UncleRefill : BIT.b #$01 : BEQ + ; refill arrows
|
||||||
LDA.b #70 : STA.l ArrowsFiller
|
LDA.b #70 : STA.l ArrowsFiller
|
||||||
|
|
||||||
LDA.l ArrowMode : BEQ +
|
LDA.l ArrowMode : BEQ +
|
||||||
LDA.l BowTracking : ORA.b #$80 : STA.l BowTracking ; enable bow toggle
|
LDA.l BowTracking : ORA #$80 : STA.l BowTracking ; enable bow toggle
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA.l CurrentRupees : !ADD.l FreeUncleItemAmount : STA.l CurrentRupees ; rupee arrows, so also give the player some money to start
|
LDA.l CurrentRupees : !ADD.l FreeUncleItemAmount : STA.l CurrentRupees ; rupee arrows, so also give the player some money to start
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
|
+
|
||||||
|
LDA.l ProgressIndicator : BNE +
|
||||||
|
LDA.b #$01 : STA.l ProgressIndicator ; handle rain state
|
||||||
+
|
+
|
||||||
LDA.l ProgressIndicator : BNE +
|
|
||||||
LDA.b #$01 : STA.l ProgressIndicator ; handle rain state
|
|
||||||
+
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnAga2Defeated:
|
OnAga2Defeated:
|
||||||
JSL.l Dungeon_SaveRoomData_justKeys ; thing we wrote over, make sure this is first
|
JSL.l Dungeon_SaveRoomData_justKeys ; thing we wrote over, make sure this is first
|
||||||
LDA.b #$01 : STA.l Aga2Duck
|
LDA.b #$01 : STA.l Aga2Duck
|
||||||
JML.l IncrementAgahnim2Sword
|
JML.l IncrementAgahnim2Sword
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnFileCreation:
|
OnFileCreation:
|
||||||
; Copy initial SRAM state from ROM to cart SRAM
|
; Copy initial SRAM state from ROM to cart SRAM
|
||||||
PHB
|
PHB
|
||||||
LDA.w #$03D7 ; \
|
LDA.w #$03D7 ; \
|
||||||
LDX.w #$B000 ; | Copies from beginning of inital sram table up to file name
|
LDX.w #$B000 ; | Copies from beginning of inital sram table up to file name
|
||||||
LDY.w #$0000 ; | (exclusively)
|
LDY.w #$0000 ; | (exclusively)
|
||||||
MVN $70, $30 ; /
|
MVN $70, $30 ; /
|
||||||
; Skip file name and validity value
|
; Skip file name and validity value
|
||||||
LDA.w #$010C ; \
|
LDA.w #$010C ; \
|
||||||
LDX.w #$B3E3 ; | Rando-Specific Assignments & Game Stats block
|
LDX.w #$B3E3 ; | Rando-Specific Assignments & Game Stats block
|
||||||
LDY.w #$03E3 ; |
|
LDY.w #$03E3 ; |
|
||||||
MVN $70, $30 ; /
|
MVN $70, $30 ; /
|
||||||
PLB
|
PLB
|
||||||
|
|
||||||
; resolve instant post-aga if standard
|
; resolve instant post-aga if standard
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.l InitProgressIndicator : BIT #$80 : BEQ +
|
LDA.l InitProgressIndicator : BIT #$80 : BEQ +
|
||||||
LDA.b #$00 : STA.l ProgressIndicatorSRAM ; set post-aga after zelda rescue
|
LDA.b #$00 : STA.l ProgressIndicatorSRAM ; set post-aga after zelda rescue
|
||||||
LDA.b #$00 : STA.l OverworldEventDataSRAM+$02 ; keep rain state vanilla
|
LDA.b #$00 : STA.l OverworldEventDataSRAM+$02 ; keep rain state vanilla
|
||||||
+
|
+
|
||||||
REP #$20
|
REP #$20
|
||||||
|
|
||||||
; Set validity value and do some cleanup. Jump to checksum.
|
; Set validity value and do some cleanup. Jump to checksum.
|
||||||
LDA.w #$55AA : STA.l $7003E1
|
LDA.w #$55AA : STA.l $7003E1
|
||||||
STZ $00
|
STZ $00
|
||||||
STZ $01
|
STZ $01
|
||||||
LDX.b $00
|
LDX.b $00
|
||||||
LDY.w #$0000
|
LDY.w #$0000
|
||||||
TYA
|
TYA
|
||||||
|
|
||||||
JML.l InitializeSaveFile_build_checksum
|
JML.l InitializeSaveFile_build_checksum
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -254,17 +254,17 @@ PostItemAnimation:
|
|||||||
LDA $0403 : STA !MULTIWORLD_ROOMDATA
|
LDA $0403 : STA !MULTIWORLD_ROOMDATA
|
||||||
+
|
+
|
||||||
|
|
||||||
|
LDA.w $02E9 : CMP.b #$01 : BNE +
|
||||||
|
LDA.b $2F : BEQ +
|
||||||
|
JSL.l IncrementChestTurnCounter
|
||||||
|
+
|
||||||
|
|
||||||
LDA !MULTIWORLD_ITEM_PLAYER_ID : BEQ +
|
LDA !MULTIWORLD_ITEM_PLAYER_ID : BEQ +
|
||||||
STZ $02E9
|
STZ $02E9
|
||||||
LDA #$00 : STA !MULTIWORLD_ITEM_PLAYER_ID
|
LDA #$00 : STA !MULTIWORLD_ITEM_PLAYER_ID
|
||||||
JML.l Ancilla_ReceiveItem_objectFinished
|
JML.l Ancilla_ReceiveItem_objectFinished
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA.w $02E9 : CMP.b #$01 : BNE +
|
STZ $02E9 : LDA $0C5E, X ; thing we wrote over to get here
|
||||||
LDA.b $2F : BEQ +
|
|
||||||
JSL.l IncrementChestTurnCounter
|
|
||||||
+
|
|
||||||
|
|
||||||
STZ $02E9 : LDA $0C5E, X ; thing we wrote over to get here
|
|
||||||
JML.l Ancilla_ReceiveItem_optimus+6
|
JML.l Ancilla_ReceiveItem_optimus+6
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -268,15 +268,16 @@ DrawPlayerFileShared:
|
|||||||
%fs_drawBottle(EquipmentSRAM+$1F,9,23)
|
%fs_drawBottle(EquipmentSRAM+$1F,9,23)
|
||||||
|
|
||||||
; Sword
|
; Sword
|
||||||
|
LDA.l SpecialWeapons : AND.w #$007F : CMP #$0001 : BEQ .bombSword
|
||||||
LDA.l EquipmentSRAM+$19 : AND.w #$00FF : BNE +
|
LDA.l EquipmentSRAM+$19 : AND.w #$00FF : BNE +
|
||||||
%fs_drawItemGray(3,26,FileSelectItems_fighters_sword)
|
%fs_drawItemGray(3,26,FileSelectItems_fighters_sword)
|
||||||
BRA ++
|
JMP ++
|
||||||
+ : DEC : BNE +
|
+ : DEC : BNE +
|
||||||
%fs_drawItem(3,26,FileSelectItems_fighters_sword)
|
%fs_drawItem(3,26,FileSelectItems_fighters_sword)
|
||||||
BRA ++
|
JMP ++
|
||||||
+ : DEC : BNE +
|
+ : DEC : BNE +
|
||||||
%fs_drawItem(3,26,FileSelectItems_master_sword)
|
%fs_drawItem(3,26,FileSelectItems_master_sword)
|
||||||
BRA ++
|
JMP ++
|
||||||
+ : DEC : BNE +
|
+ : DEC : BNE +
|
||||||
%fs_drawItem(3,26,FileSelectItems_tempered_sword)
|
%fs_drawItem(3,26,FileSelectItems_tempered_sword)
|
||||||
BRA ++
|
BRA ++
|
||||||
@@ -286,6 +287,29 @@ DrawPlayerFileShared:
|
|||||||
+
|
+
|
||||||
; a sword value above 4 is either corrupted or 0xFF (a.k.a. swordless)
|
; a sword value above 4 is either corrupted or 0xFF (a.k.a. swordless)
|
||||||
%fs_drawItemGray(3,26,FileSelectItems_fighters_sword)
|
%fs_drawItemGray(3,26,FileSelectItems_fighters_sword)
|
||||||
|
BRA ++
|
||||||
|
.bombSword
|
||||||
|
LDA.l $70038F : AND.w #$00FF : BNE +
|
||||||
|
%fs_drawItemGray(3,26,FileSelectItems_fighters_bombs)
|
||||||
|
BRA ++
|
||||||
|
+ : DEC : BNE +
|
||||||
|
%fs_drawItem(3,26,FileSelectItems_fighters_bombs)
|
||||||
|
BRA ++
|
||||||
|
+ : DEC : BNE +
|
||||||
|
%fs_drawItem(3,26,FileSelectItems_master_bombs)
|
||||||
|
BRA ++
|
||||||
|
+ : DEC : BNE +
|
||||||
|
%fs_drawItem(3,26,FileSelectItems_tempered_bombs)
|
||||||
|
BRA ++
|
||||||
|
+ : DEC : BNE +
|
||||||
|
%fs_drawItem(3,26,FileSelectItems_gold_bombs)
|
||||||
|
BRA ++
|
||||||
|
+ : DEC : BNE +
|
||||||
|
%fs_drawItem(3,26,FileSelectItems_extra_gold_bombs)
|
||||||
|
BRA ++
|
||||||
|
+
|
||||||
|
; a bomb value above 5 is... who knows, let's just pretend it's 5
|
||||||
|
%fs_drawItem(3,26,FileSelectItems_extra_gold_bombs)
|
||||||
++
|
++
|
||||||
|
|
||||||
; Shield
|
; Shield
|
||||||
@@ -556,6 +580,18 @@ FileSelectItems:
|
|||||||
.good_bee_bottle
|
.good_bee_bottle
|
||||||
dw #$0240|!FS_COLOR_BW, #$0241|!FS_COLOR_BW, #$0254|!FS_COLOR_YELLOW, #$0246|!FS_COLOR_YELLOW
|
dw #$0240|!FS_COLOR_BW, #$0241|!FS_COLOR_BW, #$0254|!FS_COLOR_YELLOW, #$0246|!FS_COLOR_YELLOW
|
||||||
|
|
||||||
|
.fighters_bombs
|
||||||
|
dw #$020C|!FS_COLOR_GREEN, #$020D|!FS_COLOR_GREEN, #$021C|!FS_COLOR_GREEN, #$02A1|!FS_COLOR_GREEN
|
||||||
|
.master_bombs
|
||||||
|
dw #$020C|!FS_COLOR_BLUE, #$020D|!FS_COLOR_BLUE, #$021C|!FS_COLOR_BLUE, #$02A2|!FS_COLOR_BLUE
|
||||||
|
.tempered_bombs
|
||||||
|
dw #$020C|!FS_COLOR_RED, #$020D|!FS_COLOR_RED, #$021C|!FS_COLOR_RED, #$02A3|!FS_COLOR_RED
|
||||||
|
.gold_bombs
|
||||||
|
dw #$020C|!FS_COLOR_YELLOW, #$020D|!FS_COLOR_YELLOW, #$021C|!FS_COLOR_YELLOW, #$02A4|!FS_COLOR_YELLOW
|
||||||
|
.extra_gold_bombs
|
||||||
|
dw #$020C|!FS_COLOR_YELLOW, #$020D|!FS_COLOR_YELLOW, #$021C|!FS_COLOR_YELLOW, #$02A5|!FS_COLOR_YELLOW
|
||||||
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FileSelectDrawHudBar:
|
FileSelectDrawHudBar:
|
||||||
LDA #$029B|!FS_COLOR_GREEN : %fs_draw16x8(0,10)
|
LDA #$029B|!FS_COLOR_GREEN : %fs_draw16x8(0,10)
|
||||||
@@ -566,11 +602,29 @@ FileSelectDrawHudBar:
|
|||||||
LDA $7F5006 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,11)
|
LDA $7F5006 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,11)
|
||||||
LDA $7F5007 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,12)
|
LDA $7F5007 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,12)
|
||||||
|
|
||||||
|
LDA SpecialWeapons : AND.w #$007F : CMP #$0001 : BEQ .colorBombs
|
||||||
LDA #$028B|!FS_COLOR_BLUE : %fs_draw16x8(0,14)
|
LDA #$028B|!FS_COLOR_BLUE : %fs_draw16x8(0,14)
|
||||||
LDA EquipmentSRAM+$03 : AND.w #$00FF
|
LDA EquipmentSRAM+$03 : AND.w #$00FF
|
||||||
JSL.l HexToDec
|
JSL.l HexToDec
|
||||||
LDA $7F5006 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,14)
|
LDA $7F5006 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,14)
|
||||||
LDA $7F5007 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,15)
|
LDA $7F5007 : AND.w #$00FF : !ADD.w #$210+!FS_COLOR_BW : %fs_draw8x8(1,15)
|
||||||
|
BRA ++
|
||||||
|
.colorBombs
|
||||||
|
LDA $70038F : AND.w #$00FF : BNE +
|
||||||
|
; no bombs, draw no icon
|
||||||
|
BRA ++
|
||||||
|
+ : DEC : BNE +
|
||||||
|
LDA #$028B|!FS_COLOR_GREEN : %fs_draw16x8(0,14)
|
||||||
|
BRA ++
|
||||||
|
+ : DEC : BNE +
|
||||||
|
LDA #$028B|!FS_COLOR_BLUE : %fs_draw16x8(0,14)
|
||||||
|
BRA ++
|
||||||
|
+ : DEC : BNE +
|
||||||
|
LDA #$028B|!FS_COLOR_RED : %fs_draw16x8(0,14)
|
||||||
|
BRA ++
|
||||||
|
+
|
||||||
|
LDA #$028B|!FS_COLOR_YELLOW : %fs_draw16x8(0,14)
|
||||||
|
++
|
||||||
|
|
||||||
LDA.l BowTrackingSRAM : AND.w #$0040 : BEQ +
|
LDA.l BowTrackingSRAM : AND.w #$0040 : BEQ +
|
||||||
LDA #$0299|!FS_COLOR_RED : %fs_draw16x8(0,17)
|
LDA #$0299|!FS_COLOR_RED : %fs_draw16x8(0,17)
|
||||||
|
|||||||
74
generate_bomb_table.rb
Normal file
74
generate_bomb_table.rb
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
def process_values(sprite, values)
|
||||||
|
ret = values.clone
|
||||||
|
if [1, 2].include?(ret[0]) # boomerang
|
||||||
|
if sprite == 0x53 # armos knight
|
||||||
|
ret[0] = 0 # do nothing
|
||||||
|
else
|
||||||
|
ret[0] = 5 # stun very briefly instead of damage
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if ret[6] > 0 && sprite != 0x84 # bow and not red eyegore/mimic
|
||||||
|
ret[6] = 0
|
||||||
|
end
|
||||||
|
if ret[7] == 2 # hookshot
|
||||||
|
ret[7] = 1 # still want to stun
|
||||||
|
end
|
||||||
|
if [1, 2, 7].include?(ret[8]) && sprite != 0x92 # bomb and not helmasaur king
|
||||||
|
ret[8] = 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 && ![0x23, 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] > 0 && ![0x23, 0xA1, 0xA3, 0xD1].include?(sprite) # bombos
|
||||||
|
ret[13] = 0
|
||||||
|
end
|
||||||
|
if ret[14] != 1 && ![0xD1].include?(sprite) # ether
|
||||||
|
ret[14] = 0
|
||||||
|
end
|
||||||
|
if [1, 2].include?(ret[15]) && ![0xD1].include?(sprite) # quake
|
||||||
|
ret[15] = 0
|
||||||
|
end
|
||||||
|
if sprite == 0x53 and ret[2] == 3
|
||||||
|
ret[2] = 1 # armos knight? let's make class 2 not suck
|
||||||
|
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
|
||||||
38
generate_pseudo_sword_table.rb
Normal file
38
generate_pseudo_sword_table.rb
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
def process_values(sprite, values)
|
||||||
|
ret = values.clone
|
||||||
|
if (ret[1] == 0 && sprite != 0x40) || sprite == 0xCE
|
||||||
|
# fighter sword does no damage and it's not the evil barrier, or it's Blind
|
||||||
|
ret[5] = 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_pseudo_sword.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
|
||||||
14
hardmode.asm
14
hardmode.asm
@@ -76,12 +76,18 @@ GetItemDamageValue:
|
|||||||
CPX.b #$04 : BEQ .boomerang
|
CPX.b #$04 : BEQ .boomerang
|
||||||
CPX.b #$05 : BEQ .boomerang
|
CPX.b #$05 : BEQ .boomerang
|
||||||
CPX.b #$39 : BEQ .hookshot
|
CPX.b #$39 : BEQ .hookshot
|
||||||
CPX.b #$3b : BEQ .hookshot
|
CPX.b #$3B : BEQ .hookshot
|
||||||
CPX.b #$3c : BEQ .hookshot
|
CPX.b #$3C : BEQ .hookshot
|
||||||
CPX.b #$3d : BEQ .hookshot
|
CPX.b #$3D : BEQ .hookshot
|
||||||
|
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$02 : BNE .normal
|
||||||
|
TXA : AND.b #$78 : CMP.b #$28 : BNE .normal
|
||||||
|
LDA.l $0DB8F1, X : BEQ .noDamage
|
||||||
|
LDA.b #$01
|
||||||
|
RTL
|
||||||
|
|
||||||
.normal
|
.normal
|
||||||
lda $0db8f1,x ;what we wrote over
|
LDA.l $0DB8F1, X ; what we wrote over
|
||||||
RTL
|
RTL
|
||||||
.boomerang
|
.boomerang
|
||||||
LDA.l StunItemAction : AND #$01 : BNE .normal
|
LDA.l StunItemAction : AND #$01 : BNE .normal
|
||||||
|
|||||||
258
hooks.asm
258
hooks.asm
@@ -396,9 +396,6 @@ JSL.l LoadBombCount
|
|||||||
org $098133 ; <- 48133 - ancilla_init.asm : 211 (STA $7EF343 : BNE .bombs_left_over)
|
org $098133 ; <- 48133 - ancilla_init.asm : 211 (STA $7EF343 : BNE .bombs_left_over)
|
||||||
JSL.l StoreBombCount
|
JSL.l StoreBombCount
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $0DE4BF ; <- 6E4BF - equipment.asm : 1249 (LDA $7EF343 : AND.w #$00FF : BEQ .gotNoBombs)
|
|
||||||
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
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -478,9 +475,9 @@ PegProbability:
|
|||||||
db $00 ; Probability out of 255. 0 = Vanilla behavior
|
db $00 ; Probability out of 255. 0 = Vanilla behavior
|
||||||
TurtleRockTrollPegs:
|
TurtleRockTrollPegs:
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDX.w $04C8 : CPX.w #$FFFF : BEQ .vanilla
|
LDX.w $04C8 : CPX.w #$FFFF : BEQ .vanilla
|
||||||
JSL.l GetRandomInt
|
JSL.l GetRandomInt
|
||||||
LDA.l PegProbability : BEQ .vanilla : CMP.l $7E0FA1
|
LDA.l PegProbability : BEQ .vanilla : CMP.l $7E0FA1
|
||||||
REP #$20 : !BGE .succeed
|
REP #$20 : !BGE .succeed
|
||||||
.fail
|
.fail
|
||||||
JMP.w TurtleRockPegFail
|
JMP.w TurtleRockPegFail
|
||||||
@@ -2583,37 +2580,37 @@ BRA + : NOP #42 : +
|
|||||||
; Hooks for roomloading.asm
|
; Hooks for roomloading.asm
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $02895D ; <- Bank02.asm:1812 (JSL Dungeon_LoadRoom)
|
org $02895D ; <- Bank02.asm:1812 (JSL Dungeon_LoadRoom)
|
||||||
JSL LoadRoomHook
|
JSL LoadRoomHook
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $028BE7 ; <- Bank02.asm:2299 (JSL Dungeon_LoadRoom)
|
org $028BE7 ; <- Bank02.asm:2299 (JSL Dungeon_LoadRoom)
|
||||||
JSL LoadRoomHook_noStats
|
JSL LoadRoomHook_noStats
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $029309 ; <- Bank02.asm:3533 (JSL Dungeon_LoadRoom)
|
org $029309 ; <- Bank02.asm:3533 (JSL Dungeon_LoadRoom)
|
||||||
JSL LoadRoomHook_noStats
|
JSL LoadRoomHook_noStats
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $02C2F3 ; <- Bank02.asm:10391 (JSL Dungeon_LoadRoom)
|
org $02C2F3 ; <- Bank02.asm:10391 (JSL Dungeon_LoadRoom)
|
||||||
JSL LoadRoomHook_noStats
|
JSL LoadRoomHook_noStats
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Hooks into the "Reloading all graphics" routine
|
; Hooks into the "Reloading all graphics" routine
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $00E64D ; <- Bank00.asm:5656 (STZ $00 : STX $01 : STA $02)
|
org $00E64D ; <- Bank00.asm:5656 (STZ $00 : STX $01 : STA $02)
|
||||||
JML BgGraphicsLoading
|
JML BgGraphicsLoading
|
||||||
BgGraphicsLoadingCancel:
|
BgGraphicsLoadingCancel:
|
||||||
RTS : NOP
|
RTS : NOP
|
||||||
BgGraphicsLoadingResume:
|
BgGraphicsLoadingResume:
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Hook when updating the floor tileset in dungeons (such as between floors)
|
; Hook when updating the floor tileset in dungeons (such as between floors)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $00DF62 ; <- Bank00.asm:4672 (LDX.w #$0000 : LDY.w #$0040)
|
org $00DF62 ; <- Bank00.asm:4672 (LDX.w #$0000 : LDY.w #$0040)
|
||||||
JML ReloadingFloors
|
JML ReloadingFloors
|
||||||
NOP : NOP
|
NOP : NOP
|
||||||
ReloadingFloorsResume:
|
ReloadingFloorsResume:
|
||||||
org $00DF6E ; <- A few instructions later, right after JSR Do3To.high16Bit
|
org $00DF6E ; <- A few instructions later, right after JSR Do3To.high16Bit
|
||||||
ReloadingFloorsCancel:
|
ReloadingFloorsCancel:
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -2899,6 +2896,176 @@ org $0AEEF2
|
|||||||
org $008BE5 ; hijack stripes for boss GFX transfer
|
org $008BE5 ; hijack stripes for boss GFX transfer
|
||||||
JSL DoDungeonMapBossIcon
|
JSL DoDungeonMapBossIcon
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; Terrorpin AI fix
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $1EB2B1 ; sprite_terrorpin.asm(57) : AND.b #$03 : STA $0DE0, X ; 5 bytes
|
||||||
|
JSL FixTerrorpin ; 4 bytes
|
||||||
|
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 $08E252 ; Bank08.asm@1770 (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 $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 $06892F ; sprite_prep.asm@548 (LDA $0D00, X : SUB #$0C : STA $0D00, X : ...)
|
||||||
|
JSL AllowBombingBarrier
|
||||||
|
RTS : NOP #7
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0DE4BF ; equipment.asm@1247 (LDA $7EF343 : AND.w #$00FF : BEQ .gotNoBombs : ...)
|
||||||
|
JSL DrawBombInMenu
|
||||||
|
BRA + : NOP #13 : +
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0DFB6A ; headsup_display@727 (CPX #$0004 : BNE .bombsNotEquipped : LDA #$0001)
|
||||||
|
JSL DrawBombInYBox
|
||||||
|
BRA + : NOP #2 : +
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0DEE05 ; equipment.asm@2065 (LDA $7EF359 : AND.w #$00FF : CMP.w #$00FF : ...)
|
||||||
|
JSL DrawSwordInMenu
|
||||||
|
BRA + : NOP #16 : +
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0DFA92 ; headsup_display.asm@622 (PDB : LDA.w #$0149 : ...)
|
||||||
|
JSL DrawBombOnHud
|
||||||
|
BRA + : NOP #8 : +
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $089EF8 ; ancilla_bomb@1438 (LDA.w #$04 : STA $0B)
|
||||||
|
JSL SetBombSpriteColor
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
; bomb icons with numbers
|
||||||
|
org $0DFC51 ; we freed this up earlier in hooks; probably shouldn't use it but *shrug*
|
||||||
|
db $F5, $20, $F5, $20, $F5, $20, $F5, $20
|
||||||
|
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
|
||||||
|
|
||||||
|
; bomb icons without numbers
|
||||||
|
; $0DFC81
|
||||||
|
db $F5, $20, $F5, $20, $F5, $20, $F5, $20
|
||||||
|
db $B2, $3C, $B3, $3C, $C2, $3C, $C2, $7C
|
||||||
|
db $B2, $2C, $B3, $2C, $C2, $2C, $C2, $6C
|
||||||
|
db $B2, $24, $B3, $24, $C2, $24, $C2, $64
|
||||||
|
db $B2, $28, $B3, $28, $C2, $28, $C2, $68
|
||||||
|
db $B2, $28, $B3, $28, $C2, $28, $C2, $68
|
||||||
|
|
||||||
|
warnpc $0DFC51+197 ; we only filled in 197 NOPs so don't overwrite past that
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $1EDCF8 ; bank_1E.asm@16086 (LDX $0202 : ...)
|
||||||
|
JSL SetBeeType
|
||||||
|
BRA + : NOP #15 : +
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $1EB5E8 ; bank_1E.asm@9387 (LDA #$03 : STA $0D80, X)
|
||||||
|
JSL ArrghusBoing
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $1EDFAF ; bank_1E.asm@16607 (.next_sprite)
|
||||||
|
JSL BeeCheckTarget
|
||||||
|
BCS .bee_valid_target
|
||||||
|
BRA .bee_unsuitable_target
|
||||||
|
NOP #48
|
||||||
|
.bee_unsuitable_target
|
||||||
|
skip 11
|
||||||
|
.bee_valid_target
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $07F889 ; free rom from F877 - F88F; the starting part of this is used in quadrant glitch fix in overworld fork, however.
|
||||||
|
Link_UseItemLong:
|
||||||
|
PER .done-1
|
||||||
|
JMP.w ($0000)
|
||||||
|
.done
|
||||||
|
RTL
|
||||||
|
warnpc $07F890
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $06F2DC ; bank_06.asm@22763 (LDA.w $037A : AND.b #$10)
|
||||||
|
JSL CheckBugNet : NOP
|
||||||
|
|
||||||
|
org $06EB91 ; bank_06.asm@21178 (LDA.w $037A : AND.b #$10)
|
||||||
|
JSL CheckBugNet : NOP
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $06ED77 ; bank_06.asm@21597 (LDA.w $0301 : AND.b #$0A : ...)
|
||||||
|
JSL SetHammerClass
|
||||||
|
BRA + : NOP #7 : +
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; Variable Ganon Vulnerability
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $08BBD4 ; ancilla_magic_powder.asm@253 (LDA #$0A : JSL Ancilla_CheckSpriteDamage.preset_class)
|
||||||
|
JSL Ganon_CheckPowderVulnerability
|
||||||
|
NOP #2
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $1D8F4E ; sprite_ganon.asm@325 (LDA $04C5 : CMP #$02)
|
||||||
|
JSL Ganon_CheckInvincible
|
||||||
|
NOP
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0DD628 ; Bank0D.asm@1266 (LDA $0B6B, Y : AND #$02)
|
||||||
|
JSL CheckBeeBoss
|
||||||
|
NOP
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0DD676 ; Bank0D.asm@1303 (TYX : JSL Ancilla_CheckSpriteDamage.preset_class)
|
||||||
|
JSL Ganon_CheckBeeVulnerability
|
||||||
|
NOP
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; Pseudo-Sword Mode
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $06ED70 ; Bank06.asm@4842 (LDA $06ED39, X : STA $0CF2)
|
||||||
|
JSL StoreSwordDamage
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; Item-On-B
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0DEB3C
|
||||||
|
JSL DrawBIndicator : BRA + : NOP #3 : +
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $079CE6 ; Bank07.asm@4632 (LDA #$80 : TSB $3A : ...)
|
||||||
|
JSL UseItem
|
||||||
|
BCC + : RTS : +
|
||||||
|
JSR $9C56
|
||||||
|
NOP #1
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; Fix quadrant glitch
|
||||||
|
org $07A879
|
||||||
|
JSR SwordSpinQuadrantFix
|
||||||
|
|
||||||
|
org $07F877 ; free rom
|
||||||
|
SwordSpinQuadrantFix:
|
||||||
|
LDA.l AllowAccidentalMajorGlitch
|
||||||
|
BEQ ++
|
||||||
|
JMP.w $07E8D9 ; HandleIndoorCameraAndDoors
|
||||||
|
|
||||||
|
++ RTS
|
||||||
|
warnpc $07F88C ; hammer-on-B hook uses the end of this free rom section
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
org $01C4B8 : JSL FixJingleGlitch
|
org $01C4B8 : JSL FixJingleGlitch
|
||||||
@@ -2914,44 +3081,37 @@ org $028818
|
|||||||
org $02A463
|
org $02A463
|
||||||
JSL OnMenuLoad
|
JSL OnMenuLoad
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; Terrorpin AI fix
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $1EB2B1 ; sprite_terrorpin.asm(57) : AND.b #$03 : STA $0DE0, X ; 5 bytes
|
|
||||||
JSL FixTerrorpin ; 4 bytes
|
|
||||||
NOP ; 1 byte
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Text Renderer
|
; Text Renderer
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
if !FEATURE_NEW_TEXT
|
if !FEATURE_NEW_TEXT
|
||||||
org $0EF51B
|
org $0EF51B
|
||||||
JML RenderCharExtended
|
JML RenderCharExtended
|
||||||
org $0EF520
|
org $0EF520
|
||||||
RenderCharExtended_returnOriginal:
|
RenderCharExtended_returnOriginal:
|
||||||
org $0EF567
|
org $0EF567
|
||||||
RenderCharExtended_returnUncompressed:
|
RenderCharExtended_returnUncompressed:
|
||||||
|
|
||||||
org $0EF356
|
org $0EF356
|
||||||
JSL RenderCharLookupWidth
|
JSL RenderCharLookupWidth
|
||||||
org $0EF3BA
|
org $0EF3BA
|
||||||
JSL RenderCharLookupWidth
|
JSL RenderCharLookupWidth
|
||||||
org $0EF48E
|
org $0EF48E
|
||||||
JML RenderCharLookupWidthDraw
|
JML RenderCharLookupWidthDraw
|
||||||
org $0EF499
|
org $0EF499
|
||||||
RenderCharLookupWidthDraw_return:
|
RenderCharLookupWidthDraw_return:
|
||||||
|
|
||||||
org $0EF6AA
|
org $0EF6AA
|
||||||
JML RenderCharToMapExtended
|
JML RenderCharToMapExtended
|
||||||
org $0EF6C2
|
org $0EF6C2
|
||||||
RenderCharToMapExtended_return:
|
RenderCharToMapExtended_return:
|
||||||
|
|
||||||
org $0EFA50
|
org $0EFA50
|
||||||
JSL RenderCharSetColorExtended
|
JSL RenderCharSetColorExtended
|
||||||
org $0EEE5D
|
org $0EEE5D
|
||||||
JSL RenderCharSetColorExtended_init
|
JSL RenderCharSetColorExtended_init
|
||||||
org $0EF285
|
org $0EF285
|
||||||
JSL RenderCharSetColorExtended_close : NOP
|
JSL RenderCharSetColorExtended_close : NOP
|
||||||
endif
|
endif
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Back of tavern fixes
|
; Back of tavern fixes
|
||||||
|
|||||||
231
inventory.asm
231
inventory.asm
@@ -30,9 +30,10 @@
|
|||||||
ProcessMenuButtons:
|
ProcessMenuButtons:
|
||||||
;LDA #$FD : STA InventoryTracking ; DEBUG MODE
|
;LDA #$FD : STA InventoryTracking ; DEBUG MODE
|
||||||
;LDA $F6 : BIT #$20 : BNE .l_pressed ; check for P1 L-button
|
;LDA $F6 : BIT #$20 : BNE .l_pressed ; check for P1 L-button
|
||||||
LDA $F4 : BIT #$40 : BNE .y_pressed ; check for P1 Y-button
|
LDA.b $F4 : BIT.b #$40 : BNE .y_pressed ; check for P1 Y-button
|
||||||
BIT #$20 : BNE .sel_pressed ; check for P1 Select button
|
BIT.b #$20 : BNE .sel_pressed ; check for P1 Select button
|
||||||
LDA $F0 : BIT #$20 : BNE .sel_held
|
BIT.b #$80 : BNE .b_pressed ; check for P1 B-button
|
||||||
|
LDA.b $F0 : BIT.b #$20 : BNE .sel_held
|
||||||
.sel_unheld
|
.sel_unheld
|
||||||
LDA HudFlag : AND #$20 : BEQ +
|
LDA HudFlag : AND #$20 : BEQ +
|
||||||
LDA HudFlag : AND #$DF : STA HudFlag ; select is released, unset hud flag
|
LDA HudFlag : AND #$DF : STA HudFlag ; select is released, unset hud flag
|
||||||
@@ -48,6 +49,18 @@ RTL
|
|||||||
LDA HudFlag : ORA #$20 : STA HudFlag ; set hud flag
|
LDA HudFlag : ORA #$20 : STA HudFlag ; set hud flag
|
||||||
LDA.b #$20 : STA $012F ; menu select sound
|
LDA.b #$20 : STA $012F ; menu select sound
|
||||||
JSL.l ResetEquipment
|
JSL.l ResetEquipment
|
||||||
|
RTL
|
||||||
|
.b_pressed
|
||||||
|
JSR CanPressB : BCC .b_error
|
||||||
|
LDA.w $0202 : CMP.l ItemOnB : BNE .set_b
|
||||||
|
LDA.b #$00
|
||||||
|
.set_b
|
||||||
|
STA.l ItemOnB
|
||||||
|
BRA .b_done
|
||||||
|
.b_error
|
||||||
|
LDA.b #$3C : STA.w $012E ; error sound
|
||||||
|
.b_done
|
||||||
|
SEC
|
||||||
RTL
|
RTL
|
||||||
.y_pressed ; Note: used as entry point by quickswap code. Must preserve X.
|
.y_pressed ; Note: used as entry point by quickswap code. Must preserve X.
|
||||||
LDA.b #$10 : STA $0207
|
LDA.b #$10 : STA $0207
|
||||||
@@ -115,6 +128,27 @@ RTL
|
|||||||
SEC
|
SEC
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
CanPressB:
|
||||||
|
PHY : PHP : SEP #$30
|
||||||
|
LDA.l AllowedItemOnB : BEQ .no
|
||||||
|
CMP.b #$FF : BEQ .skip_allow_check
|
||||||
|
CMP.w $0202 : BNE .no
|
||||||
|
.skip_allow_check
|
||||||
|
PHX
|
||||||
|
LDA.w $0202 : TAX
|
||||||
|
LDA.l ValidItemOnB, X : BNE .plx_and_no
|
||||||
|
PLX
|
||||||
|
PLP : PLY
|
||||||
|
SEC
|
||||||
|
RTS
|
||||||
|
.plx_and_no
|
||||||
|
PLX
|
||||||
|
.no
|
||||||
|
PLP : PLY
|
||||||
|
CLC
|
||||||
|
RTS
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;ProcessBottleMenu:
|
;ProcessBottleMenu:
|
||||||
@@ -146,7 +180,7 @@ RTL
|
|||||||
OpenBottleMenu:
|
OpenBottleMenu:
|
||||||
LDA $F6 : AND #$40 : BEQ .x_not_pressed ; skip if X is not down
|
LDA $F6 : AND #$40 : BEQ .x_not_pressed ; skip if X is not down
|
||||||
LDA.b #$10 : STA $0207 ; set 16 frame cool off
|
LDA.b #$10 : STA $0207 ; set 16 frame cool off
|
||||||
LDA.b #$20 : STA $012F ; make menu sound
|
LDA.b #$20 : STA $012F ; make menu sound
|
||||||
LDA.b #$07 : STA $0200 ; thing we wrote over - opens bottle menu
|
LDA.b #$07 : STA $0200 ; thing we wrote over - opens bottle menu
|
||||||
.x_not_pressed
|
.x_not_pressed
|
||||||
RTL
|
RTL
|
||||||
@@ -159,10 +193,10 @@ CloseBottleMenu:
|
|||||||
LDA $F6 : AND #$40 : BEQ .x_not_pressed ; skip if X is not down
|
LDA $F6 : AND #$40 : BEQ .x_not_pressed ; skip if X is not down
|
||||||
|
|
||||||
LDA.b #$10 : STA $0207 ; set 16 frame cool off
|
LDA.b #$10 : STA $0207 ; set 16 frame cool off
|
||||||
LDA.b #$20 : STA $012F ; make menu sound
|
LDA.b #$20 : STA $012F ; make menu sound
|
||||||
|
|
||||||
INC $0200 ; return to normal menu
|
INC $0200 ; return to normal menu
|
||||||
STZ $0205
|
STZ $0205
|
||||||
|
|
||||||
LDA #$00
|
LDA #$00
|
||||||
RTL
|
RTL
|
||||||
@@ -354,32 +388,32 @@ AddInventory:
|
|||||||
+
|
+
|
||||||
|
|
||||||
CPY.b #$00 : BNE + ; Fighter's Sword & Fighter's Shield
|
CPY.b #$00 : BNE + ; Fighter's Sword & Fighter's Shield
|
||||||
LDX #$01
|
LDX #$01
|
||||||
JSR .incrementSword
|
JSR .incrementSword
|
||||||
JSR .incrementShield
|
JSR .incrementShield
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$01 : BNE + ; Master Sword
|
+ CPY.b #$01 : BNE + ; Master Sword
|
||||||
LDX #$02
|
LDX #$02
|
||||||
JSR .incrementSword
|
JSR .incrementSword
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$02 : BNE + ; Tempered Sword
|
+ CPY.b #$02 : BNE + ; Tempered Sword
|
||||||
LDX #$03
|
LDX #$03
|
||||||
JSR .incrementSword
|
JSR .incrementSword
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$03 : BNE + ; Golden Sword
|
+ CPY.b #$03 : BNE + ; Golden Sword
|
||||||
LDX #$04
|
LDX #$04
|
||||||
JSR .incrementSword
|
JSR .incrementSword
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$04 : BNE + ; Fighter's Shield
|
+ CPY.b #$04 : BNE + ; Fighter's Shield
|
||||||
LDX #$01
|
LDX #$01
|
||||||
JSR .incrementShield
|
JSR .incrementShield
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$05 : BNE + ; Red Shield
|
+ CPY.b #$05 : BNE + ; Red Shield
|
||||||
LDX #$02
|
LDX #$02
|
||||||
JSR .incrementShield
|
JSR .incrementShield
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$06 : BNE + ; Mirror Shield
|
+ CPY.b #$06 : BNE + ; Mirror Shield
|
||||||
LDX #$03
|
LDX #$03
|
||||||
JSR .incrementShield
|
JSR .incrementShield
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$07 : !BLT + ; Items $07 - $0D
|
+ CPY.b #$07 : !BLT + ; Items $07 - $0D
|
||||||
@@ -420,16 +454,16 @@ AddInventory:
|
|||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$22 : BNE + ; Blue Mail
|
+ CPY.b #$22 : BNE + ; Blue Mail
|
||||||
LDX #$01
|
LDX #$01
|
||||||
JSR .incrementMail
|
JSR .incrementMail
|
||||||
+ CPY.b #$23 : BNE + ; Red Mail
|
+ CPY.b #$23 : BNE + ; Red Mail
|
||||||
LDX #$02
|
LDX #$02
|
||||||
JSR .incrementMail
|
JSR .incrementMail
|
||||||
+ CPY.b #$24 : BNE + ; Small Key
|
+ CPY.b #$24 : BNE + ; Small Key
|
||||||
JSR .incrementKey
|
JSR .incrementKey
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$25 : BNE + ; Compass
|
+ CPY.b #$25 : BNE + ; Compass
|
||||||
JSL MaybeFlagCompassTotalPickup
|
JSL MaybeFlagCompassTotalPickup
|
||||||
JSR .incrementCompass
|
JSR .incrementCompass
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$26 : BNE + ; Liar Heart (Container)
|
+ CPY.b #$26 : BNE + ; Liar Heart (Container)
|
||||||
@@ -460,7 +494,7 @@ AddInventory:
|
|||||||
+ CPY.b #$37 : !BLT + ; Items $37 - $39 - Pendants
|
+ CPY.b #$37 : !BLT + ; Items $37 - $39 - Pendants
|
||||||
CPY.b #$3A : !BGE +
|
CPY.b #$3A : !BGE +
|
||||||
JSR .incrementPendant
|
JSR .incrementPendant
|
||||||
JSR .setDungeonCompletion
|
JSR .setDungeonCompletion
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$3A : !BLT + ; Items $3A - $3B - Bow & Silver Arrows
|
+ CPY.b #$3A : !BLT + ; Items $3A - $3B - Bow & Silver Arrows
|
||||||
CPY.b #$3C : !BGE +
|
CPY.b #$3C : !BGE +
|
||||||
@@ -480,7 +514,7 @@ AddInventory:
|
|||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$49 : BNE + ; Fighter's Sword
|
+ CPY.b #$49 : BNE + ; Fighter's Sword
|
||||||
LDX #$01
|
LDX #$01
|
||||||
JSR .incrementSword
|
JSR .incrementSword
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$4A : BNE + ; Flute (Active)
|
+ CPY.b #$4A : BNE + ; Flute (Active)
|
||||||
@@ -500,15 +534,15 @@ AddInventory:
|
|||||||
JSR .incrementCapacity
|
JSR .incrementCapacity
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$50 : BNE + ; Master Sword (Safe)
|
+ CPY.b #$50 : BNE + ; Master Sword (Safe)
|
||||||
LDX #$02
|
LDX #$02
|
||||||
JSR .incrementSword
|
JSR .incrementSword
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$51 : BNE + ; 5 Bomb Capacity Upgrade
|
+ CPY.b #$51 : BNE + ; 5 Bomb Capacity Upgrade
|
||||||
LDX #$02
|
LDX #$02
|
||||||
JSR .maybeIncrementBombs
|
JSR .maybeIncrementBombs
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$52 : BNE + ; 10 Bomb Capacity Upgrade
|
+ CPY.b #$52 : BNE + ; 10 Bomb Capacity Upgrade
|
||||||
LDX #$02
|
LDX #$02
|
||||||
JSR .maybeIncrementBombs
|
JSR .maybeIncrementBombs
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$51 : !BLT + ; Items $51 - $54 - Capacity Upgrades
|
+ CPY.b #$51 : !BLT + ; Items $51 - $54 - Capacity Upgrades
|
||||||
@@ -519,15 +553,15 @@ AddInventory:
|
|||||||
JSR .incrementBow
|
JSR .incrementBow
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$5E : BNE + ; Progressive Sword
|
+ CPY.b #$5E : BNE + ; Progressive Sword
|
||||||
LDA SwordEquipment : INC : TAX
|
LDA SwordEquipment : INC : TAX
|
||||||
JSR .incrementSword
|
JSR .incrementSword
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$5F : BNE + ; Progressive Shield
|
+ CPY.b #$5F : BNE + ; Progressive Shield
|
||||||
LDA ShieldEquipment : INC : TAX
|
LDA ShieldEquipment : INC : TAX
|
||||||
JSR .incrementShield
|
JSR .incrementShield
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$60 : BNE + ; Progressive Armor
|
+ CPY.b #$60 : BNE + ; Progressive Armor
|
||||||
LDA ArmorEquipment : INC : TAX
|
LDA ArmorEquipment : INC : TAX
|
||||||
JSR .incrementMail
|
JSR .incrementMail
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$61 : BNE + ; Progressive Lifting Glove
|
+ CPY.b #$61 : BNE + ; Progressive Lifting Glove
|
||||||
@@ -546,17 +580,27 @@ AddInventory:
|
|||||||
LDA.w AddReceivedItemExpanded_item_target_addr+$100, X : STA.b $00
|
LDA.w AddReceivedItemExpanded_item_target_addr+$100, X : STA.b $00
|
||||||
LDA.w AddReceivedItemExpanded_item_target_addr+$101, X : STA.b $01
|
LDA.w AddReceivedItemExpanded_item_target_addr+$101, X : STA.b $01
|
||||||
CPY.b #$90 : !BGE +
|
CPY.b #$90 : !BGE +
|
||||||
JSL MaybeFlagCompassTotalPickup
|
JSL MaybeFlagCompassTotalPickup
|
||||||
JSR .incrementCompass
|
JSR .incrementCompass
|
||||||
JMP .done
|
BRA .done
|
||||||
+ CPY.b #$90 : !BLT + ; Items $90 - $9F - Free Big Keys
|
+ CPY.b #$90 : !BLT + ; Items $90 - $9F - Free Big Keys
|
||||||
CPY.b #$A0 : !BGE +
|
CPY.b #$A0 : !BGE +
|
||||||
JSR .incrementBigKey
|
JSR .incrementBigKey
|
||||||
JMP .done
|
BRA .done
|
||||||
+ CPY.b #$A0 : !BLT + ; Items $A0 - $AF - Free Small Keys
|
+ CPY.b #$A0 : !BLT + ; Items $A0 - $AF - Free Small Keys
|
||||||
CPY.b #$B0 : !BGE +
|
CPY.b #$B0 : !BGE +
|
||||||
JSR .incrementKey
|
JSR .incrementKey
|
||||||
JMP .done
|
BRA .done
|
||||||
|
+ CPY.b #$C0 : BEQ .special_weapon ; Item $C0 - Bomb Upgrade
|
||||||
|
CPY.b #$C1 : BEQ .special_weapon ; Item $C1 - Cane Upgrade
|
||||||
|
CPY.b #$C2 : BEQ .special_weapon ; Item $C2 - Bug Net Upgrade
|
||||||
|
BRA .done
|
||||||
|
.special_weapon
|
||||||
|
JSR .stampSword ; update "first bomb" timestamp
|
||||||
|
LDA.l SpecialWeaponLevel ; get current bomb level
|
||||||
|
CMP #$05 : !BGE ++ ; check if already maxed
|
||||||
|
INC : STA.l SpecialWeaponLevel
|
||||||
|
++ BRA .done
|
||||||
+
|
+
|
||||||
.done
|
.done
|
||||||
PLP : PLX : PLA
|
PLP : PLX : PLA
|
||||||
@@ -606,21 +650,21 @@ RTS
|
|||||||
|
|
||||||
.incrementSword
|
.incrementSword
|
||||||
JSR .stampSword
|
JSR .stampSword
|
||||||
LDA HighestSword
|
LDA HighestSword
|
||||||
INC : STA $04 : CPX $04 : !BLT + ; don't increment unless we're getting a better sword
|
INC : STA $04 : CPX $04 : !BLT + ; don't increment unless we're getting a better sword
|
||||||
TXA : STA HighestSword
|
TXA : STA HighestSword
|
||||||
+
|
+
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.incrementShield
|
.incrementShield
|
||||||
LDA HighestShield
|
LDA HighestShield
|
||||||
INC : STA $04 : CPX $04 : !BLT + ; don't increment unless we're getting a better shield
|
INC : STA $04 : CPX $04 : !BLT + ; don't increment unless we're getting a better shield
|
||||||
TXA : STA HighestShield
|
TXA : STA HighestShield
|
||||||
+
|
+
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.incrementBow
|
.incrementBow
|
||||||
LDA BowEquipment : BNE .dontCount ; Don't increment Y item count for extra bows
|
LDA BowEquipment : BNE .dontCount ; Don't increment Y item count for extra bows
|
||||||
.incrementY
|
.incrementY
|
||||||
LDA YAItemCounter : !ADD #$08 : STA YAItemCounter
|
LDA YAItemCounter : !ADD #$08 : STA YAItemCounter
|
||||||
.dontCount
|
.dontCount
|
||||||
@@ -653,11 +697,10 @@ RTS
|
|||||||
RTS
|
RTS
|
||||||
|
|
||||||
.incrementMail
|
.incrementMail
|
||||||
|
LDA HighestMail
|
||||||
LDA HighestMail
|
INC : STA $04 : CPX $04 : !BLT + ; don't increment unless we're getting a better mail
|
||||||
INC : STA $04 : CPX $04 : !BLT + ; don't increment unless we're getting a better mail
|
TXA : STA HighestMail
|
||||||
TXA : STA HighestMail
|
+
|
||||||
+
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.incrementKeyLong
|
.incrementKeyLong
|
||||||
@@ -665,7 +708,7 @@ RTS
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
.incrementKey
|
.incrementKey
|
||||||
LDA SmallKeyCounter : INC : STA SmallKeyCounter
|
LDA SmallKeyCounter : INC : STA SmallKeyCounter
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.incrementCompass
|
.incrementCompass
|
||||||
@@ -677,7 +720,7 @@ RTS
|
|||||||
RTS
|
RTS
|
||||||
|
|
||||||
.incrementGTowerPreBigKey
|
.incrementGTowerPreBigKey
|
||||||
LDA PreGTBKLocations : INC : STA PreGTBKLocations
|
LDA PreGTBKLocations : INC : STA PreGTBKLocations
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.maybeIncrementBombs
|
.maybeIncrementBombs
|
||||||
@@ -696,10 +739,17 @@ RTS
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
.incrementBossSword
|
.incrementBossSword
|
||||||
LDA SwordEquipment
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BEQ +
|
||||||
|
CMP.b #$03 : BEQ +
|
||||||
|
CMP.b #$04 : BEQ +
|
||||||
|
CMP.b #$05 : BEQ +
|
||||||
|
CMP.b #$08 : BEQ +
|
||||||
|
LDA SwordEquipment : BRA ++
|
||||||
|
+ : LDA SpecialWeaponLevel
|
||||||
|
++
|
||||||
BNE + : -
|
BNE + : -
|
||||||
LDA SwordlessBossKills : INC : STA SwordlessBossKills
|
LDA SwordlessBossKills : INC : STA SwordlessBossKills
|
||||||
RTS
|
RTS
|
||||||
+ CMP #$FF : BEQ -
|
+ CMP #$FF : BEQ -
|
||||||
+ CMP #$01 : BNE +
|
+ CMP #$01 : BNE +
|
||||||
%TopHalf(SwordBossKills) : RTS
|
%TopHalf(SwordBossKills) : RTS
|
||||||
@@ -771,6 +821,7 @@ AddYMarker:
|
|||||||
+ CMP.w #$10 : BEQ .drawJarMarker
|
+ CMP.w #$10 : BEQ .drawJarMarker
|
||||||
|
|
||||||
.drawNormal
|
.drawNormal
|
||||||
|
JSR CanPressB : BCS .drawBBubble
|
||||||
LDA.w #$7C60
|
LDA.w #$7C60
|
||||||
BRA .drawTile
|
BRA .drawTile
|
||||||
|
|
||||||
@@ -779,12 +830,20 @@ AddYMarker:
|
|||||||
LDA $0207 : AND.w #$0020 : BNE .drawXBubble
|
LDA $0207 : AND.w #$0020 : BNE .drawXBubble
|
||||||
|
|
||||||
.drawYBubble
|
.drawYBubble
|
||||||
|
JSR CanPressB : BCC .drawY
|
||||||
|
LDA.w $0207 : AND.w #$0020 : BNE .drawBBubble
|
||||||
|
.drawY
|
||||||
LDA.w #$3D4F
|
LDA.w #$3D4F
|
||||||
BRA .drawTile
|
BRA .drawTile
|
||||||
|
|
||||||
.drawXBubble
|
.drawXBubble
|
||||||
JSR MakeCircleBlue
|
JSR MakeCircleBlue
|
||||||
LDA.w #$2D3E
|
LDA.w #$2D3E
|
||||||
|
BRA .drawTile
|
||||||
|
|
||||||
|
.drawBBubble
|
||||||
|
JSR MakeCircleRed
|
||||||
|
LDA.w #$293F
|
||||||
|
|
||||||
.drawTile
|
.drawTile
|
||||||
STA $FFC4, Y
|
STA $FFC4, Y
|
||||||
@@ -796,22 +855,40 @@ RTL
|
|||||||
; this is horrible, make it better
|
; this is horrible, make it better
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MakeCircleBlue:
|
MakeCircleBlue:
|
||||||
LDA $FFC0, Y : AND.w #$EFFF : STA $FFC0, Y
|
LDA $FFC0, Y : AND.w #$EFFF : STA $FFC0, Y
|
||||||
LDA $FFC2, Y : AND.w #$EFFF : STA $FFC2, Y
|
LDA $FFC2, Y : AND.w #$EFFF : STA $FFC2, Y
|
||||||
|
|
||||||
LDA $FFFE, Y : AND.w #$EFFF : STA $FFFE, Y
|
LDA $FFFE, Y : AND.w #$EFFF : STA $FFFE, Y
|
||||||
LDA $0004, Y : AND.w #$EFFF : STA $0004, Y
|
LDA $0004, Y : AND.w #$EFFF : STA $0004, Y
|
||||||
|
|
||||||
LDA $003E, Y : AND.w #$EFFF : STA $003E, Y
|
LDA $003E, Y : AND.w #$EFFF : STA $003E, Y
|
||||||
LDA $0044, Y : AND.w #$EFFF : STA $0044, Y
|
LDA $0044, Y : AND.w #$EFFF : STA $0044, Y
|
||||||
|
|
||||||
LDA $0080, Y : AND.w #$EFFF : STA $0080, Y
|
LDA $0080, Y : AND.w #$EFFF : STA $0080, Y
|
||||||
LDA $0082, Y : AND.w #$EFFF : STA $0082, Y
|
LDA $0082, Y : AND.w #$EFFF : STA $0082, Y
|
||||||
|
|
||||||
LDA $FFBE, Y : AND.w #$EFFF : STA $FFBE, Y
|
LDA $FFBE, Y : AND.w #$EFFF : STA $FFBE, Y
|
||||||
LDA $FFC4, Y : AND.w #$EFFF : STA $FFC4, Y
|
LDA $FFC4, Y : AND.w #$EFFF : STA $FFC4, Y
|
||||||
LDA $0084, Y : AND.w #$EFFF : STA $0084, Y
|
LDA $0084, Y : AND.w #$EFFF : STA $0084, Y
|
||||||
LDA $007E, Y : AND.w #$EFFF : STA $007E, Y
|
LDA $007E, Y : AND.w #$EFFF : STA $007E, Y
|
||||||
|
RTS
|
||||||
|
MakeCircleRed:
|
||||||
|
LDA.w $FFC0, Y : AND.w #$EBFF : STA.w $FFC0, Y
|
||||||
|
LDA.w $FFC2, Y : AND.w #$EBFF : STA.w $FFC2, Y
|
||||||
|
|
||||||
|
LDA.w $FFFE, Y : AND.w #$EBFF : STA.w $FFFE, Y
|
||||||
|
LDA.w $0004, Y : AND.w #$EBFF : STA.w $0004, Y
|
||||||
|
|
||||||
|
LDA.w $003E, Y : AND.w #$EBFF : STA.w $003E, Y
|
||||||
|
LDA.w $0044, Y : AND.w #$EBFF : STA.w $0044, Y
|
||||||
|
|
||||||
|
LDA.w $0080, Y : AND.w #$EBFF : STA.w $0080, Y
|
||||||
|
LDA.w $0082, Y : AND.w #$EBFF : STA.w $0082, Y
|
||||||
|
|
||||||
|
LDA.w $FFBE, Y : AND.w #$EBFF : STA.w $FFBE, Y
|
||||||
|
LDA.w $FFC4, Y : AND.w #$EBFF : STA.w $FFC4, Y
|
||||||
|
LDA.w $0084, Y : AND.w #$EBFF : STA.w $0084, Y
|
||||||
|
LDA.w $007E, Y : AND.w #$EBFF : STA.w $007E, Y
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -938,8 +1015,8 @@ RTL
|
|||||||
; PrepItemScreenBigKey:
|
; PrepItemScreenBigKey:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
PrepItemScreenBigKey:
|
PrepItemScreenBigKey:
|
||||||
STZ $02
|
STZ $02
|
||||||
STZ $03
|
STZ $03
|
||||||
REP #$30 ; thing we wrote over - set 16-bit accumulator
|
REP #$30 ; thing we wrote over - set 16-bit accumulator
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -1040,9 +1117,9 @@ CollectPowder:
|
|||||||
LDA WitchItem_Player : STA !MULTIWORLD_ITEM_PLAYER_ID
|
LDA WitchItem_Player : STA !MULTIWORLD_ITEM_PLAYER_ID
|
||||||
LDA.b #$01 : STA.l !SHOP_ENABLE_COUNT
|
LDA.b #$01 : STA.l !SHOP_ENABLE_COUNT
|
||||||
PLA
|
PLA
|
||||||
STZ $02E9 ; item from NPC
|
STZ $02E9 ; item from NPC
|
||||||
JSL.l Link_ReceiveItem
|
JSL.l Link_ReceiveItem
|
||||||
PHA : LDA.b #$00 : STA.l !SHOP_ENABLE_COUNT : PLA
|
PHA : LDA.b #$00 : STA.l !SHOP_ENABLE_COUNT : PLA
|
||||||
;JSL.l FullInventoryExternal
|
;JSL.l FullInventoryExternal
|
||||||
JSL.l ItemSet_Powder
|
JSL.l ItemSet_Powder
|
||||||
RTL
|
RTL
|
||||||
@@ -1067,14 +1144,14 @@ RTL
|
|||||||
DrawMagicHeader:
|
DrawMagicHeader:
|
||||||
LDA MagicConsumption : AND.w #$00FF : CMP.w #$0002 : BEQ .quarterMagic
|
LDA MagicConsumption : AND.w #$00FF : CMP.w #$0002 : BEQ .quarterMagic
|
||||||
.halfMagic
|
.halfMagic
|
||||||
LDA.w #$28F7 : STA $7EC704
|
LDA.w #$28F7 : STA $7EC704
|
||||||
LDA.w #$2851 : STA $7EC706
|
LDA.w #$2851 : STA $7EC706
|
||||||
LDA.w #$28FA : STA $7EC708
|
LDA.w #$28FA : STA $7EC708
|
||||||
RTL
|
RTL
|
||||||
.quarterMagic
|
.quarterMagic
|
||||||
LDA.w #$28F7 : STA $7EC704
|
LDA.w #$28F7 : STA $7EC704
|
||||||
LDA.w #$2800 : STA $7EC706
|
LDA.w #$2800 : STA $7EC706
|
||||||
LDA.w #$2801 : STA $7EC708
|
LDA.w #$2801 : STA $7EC708
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -1123,7 +1200,7 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
SpawnShovelItem:
|
SpawnShovelItem:
|
||||||
LDA $03FC : BEQ +
|
LDA $03FC : BEQ +
|
||||||
JSL DiggingGameGuy_AttemptPrizeSpawn
|
JSL DiggingGameGuy_AttemptPrizeSpawn
|
||||||
JMP .skip
|
JMP .skip
|
||||||
+
|
+
|
||||||
|
|
||||||
@@ -1181,12 +1258,12 @@ RTL
|
|||||||
{
|
{
|
||||||
|
|
||||||
.x_speeds
|
.x_speeds
|
||||||
db $F0
|
db $F0
|
||||||
db $10
|
db $10
|
||||||
|
|
||||||
.x_offsets
|
.x_offsets
|
||||||
db $00
|
db $00
|
||||||
db $13
|
db $13
|
||||||
|
|
||||||
}
|
}
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
98
item_on_b.asm
Normal file
98
item_on_b.asm
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
ItemMenuLocations:
|
||||||
|
dw $11C8 ; Bow
|
||||||
|
dw $11CE ; Boomerang
|
||||||
|
dw $11D4 ; Hookshot
|
||||||
|
dw $11DA ; Bombs
|
||||||
|
dw $11E0 ; Powder / Mushroom
|
||||||
|
dw $1288 ; Fire Rod
|
||||||
|
dw $128E ; Ice Rod
|
||||||
|
dw $1294 ; Bombos
|
||||||
|
dw $129A ; Ether
|
||||||
|
dw $12A0 ; Quake
|
||||||
|
dw $1348 ; Lamp
|
||||||
|
dw $134E ; Hammer
|
||||||
|
dw $1354 ; Flute / Shovel
|
||||||
|
dw $135A ; Bug Net
|
||||||
|
dw $1360 ; Book
|
||||||
|
dw $1408 ; Bottles
|
||||||
|
dw $140E ; Somaria
|
||||||
|
dw $1414 ; Byrna
|
||||||
|
dw $141A ; Cape
|
||||||
|
dw $1420 ; Mirror
|
||||||
|
|
||||||
|
DrawBIndicator:
|
||||||
|
LDA.l ItemOnB : AND.w #$00FF : BEQ .done
|
||||||
|
DEC : ASL : TAX
|
||||||
|
LDA.l ItemMenuLocations, X : TAX
|
||||||
|
LDA.w #$3D3B
|
||||||
|
STA.w $0042, X
|
||||||
|
|
||||||
|
.done ; what we wrote over
|
||||||
|
LDA.w $0202
|
||||||
|
AND.w #$00FF
|
||||||
|
DEC
|
||||||
|
ASL
|
||||||
|
TAX
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
ItemHandlerLocs:
|
||||||
|
dw $A003 ; Bow
|
||||||
|
dw $A0B8 ; Boomerang
|
||||||
|
dw $AB23 ; Hookshot
|
||||||
|
dw $A139 ; Bombs
|
||||||
|
dw $FFFF ; Powder / Mushroom
|
||||||
|
dw $9EEC ; Fire Rod
|
||||||
|
dw $9EEC ; Ice Rod
|
||||||
|
dw $A55E ; Bombos
|
||||||
|
dw $A489 ; Ether
|
||||||
|
dw $A640 ; Quake
|
||||||
|
dw $A246 ; Lamp
|
||||||
|
dw $9F82 ; Hammer
|
||||||
|
dw $FFFF ; Flute / Shovel
|
||||||
|
dw $AFEE ; Bug Net
|
||||||
|
dw $A46E ; Book
|
||||||
|
dw $FFFF ; Bottles
|
||||||
|
dw $AEBB ; Somaria
|
||||||
|
dw $FFFF ; Byrna
|
||||||
|
dw $FFFF ; Cape
|
||||||
|
dw $A913 ; Mirror
|
||||||
|
ValidItemOnB:
|
||||||
|
db $FF
|
||||||
|
db $00, $00, $00, $00, $FF
|
||||||
|
db $00, $00, $00, $00, $00
|
||||||
|
db $00, $00, $FF, $00, $00
|
||||||
|
db $FF, $00, $FF, $FF, $00
|
||||||
|
|
||||||
|
UseItem:
|
||||||
|
JSL CheckDetonateBomb : BCS .normal
|
||||||
|
|
||||||
|
LDA.l ItemOnB : BEQ .normal
|
||||||
|
TAX
|
||||||
|
LDA.b $6C : BNE .prevent_swing
|
||||||
|
CPX.b #$11 : BNE .not_somaria
|
||||||
|
LDA.w $02F5 : BNE .prevent_swing
|
||||||
|
.not_somaria
|
||||||
|
LDA.l ValidItemOnB, X : BNE .normal
|
||||||
|
LDA.b $3A : ORA.b #$40 : STA.b $3A
|
||||||
|
LDA.l $0DFA35, X : STA.w $0304
|
||||||
|
CPX.b #$06 : BEQ .fire_rod
|
||||||
|
CPX.b #$07 : BNE .not_rod
|
||||||
|
.ice_rod
|
||||||
|
LDA.b #$02 : STA.w $0307
|
||||||
|
BRA .not_rod
|
||||||
|
.fire_rod
|
||||||
|
LDA.b #$01 : STA.w $0307
|
||||||
|
.not_rod
|
||||||
|
TXA : DEC : ASL : TAX
|
||||||
|
LDA.l ItemHandlerLocs+1, X : STA.b $01
|
||||||
|
LDA.l ItemHandlerLocs, X : STA.b $00
|
||||||
|
JSL Link_UseItemLong
|
||||||
|
.prevent_swing
|
||||||
|
SEC
|
||||||
|
RTL
|
||||||
|
.normal
|
||||||
|
LDA.b #$80 : TSB.b $3A
|
||||||
|
LDA.b #$01 : TSB.b $50
|
||||||
|
CLC
|
||||||
|
RTL
|
||||||
@@ -9,29 +9,29 @@ RTL
|
|||||||
ItemDowngradeFixMain:
|
ItemDowngradeFixMain:
|
||||||
JSL.l AddInventory
|
JSL.l AddInventory
|
||||||
BMI .dontWrite ; thing we wrote over part 1
|
BMI .dontWrite ; thing we wrote over part 1
|
||||||
|
|
||||||
CPY.b #$1B : BEQ .isPowerGloves ; Power Gloves
|
CPY.b #$1B : BEQ .isPowerGloves ; Power Gloves
|
||||||
CPY.b #$05 : BEQ .isRedShield ; Red Shield
|
CPY.b #$05 : BEQ .isRedShield ; Red Shield
|
||||||
CPY.b #$04 : BEQ .isBlueShield ; Blue Shield
|
CPY.b #$04 : BEQ .isBlueShield ; Blue Shield
|
||||||
CPY.b #$0C : BEQ .isBlueBoomerang ; Blue Boomerang
|
CPY.b #$0C : BEQ .isBlueBoomerang ; Blue Boomerang
|
||||||
CPY.b #$0B : BEQ .isBow ; Bow
|
CPY.b #$0B : BEQ .isBow ; Bow
|
||||||
CPY.b #$3A : BEQ .isBowAndArrows ; Bow
|
CPY.b #$3A : BEQ .isBowAndArrows ; Bow
|
||||||
|
|
||||||
CPY.b #$49 : BEQ .isSword ; Fighter's Sword
|
CPY.b #$49 : BEQ .isSword ; Fighter's Sword
|
||||||
CPY.b #$01 : BEQ .isSword ; Master Sword
|
CPY.b #$01 : BEQ .isSword ; Master Sword
|
||||||
CPY.b #$50 : BEQ .isSword ; Master Sword (Safe)
|
CPY.b #$50 : BEQ .isSword ; Master Sword (Safe)
|
||||||
CPY.b #$02 : BEQ .isSword ; Tempered Sword
|
CPY.b #$02 : BEQ .isSword ; Tempered Sword
|
||||||
|
|
||||||
CPY.b #$3B : BEQ .isSilverArrowBow ; Silver Arrow Bow
|
CPY.b #$3B : BEQ .isSilverArrowBow ; Silver Arrow Bow
|
||||||
CPY.b #$2A : BEQ .isRedBoomerang ; Red Boomerang
|
CPY.b #$2A : BEQ .isRedBoomerang ; Red Boomerang
|
||||||
CPY.b #$0D : BEQ .isMagicPowder ; Magic Powder
|
CPY.b #$0D : BEQ .isMagicPowder ; Magic Powder
|
||||||
CPY.b #$14 : BEQ .isFlute ; Flute
|
CPY.b #$14 : BEQ .isFlute ; Flute
|
||||||
CPY.b #$13 : BEQ .isShovel ; Shovel
|
CPY.b #$13 : BEQ .isShovel ; Shovel
|
||||||
CPY.b #$29 : BEQ .isMushroom ; Mushroom
|
CPY.b #$29 : BEQ .isMushroom ; Mushroom
|
||||||
|
|
||||||
CPY.b #$00 : BEQ .isUncleSwordShield ; Fighter's Sword & Shield
|
CPY.b #$00 : BEQ .isUncleSwordShield ; Fighter's Sword & Shield
|
||||||
|
|
||||||
.done
|
.done
|
||||||
STA [$00] ; thing we wrote over part 2
|
STA [$00] ; thing we wrote over part 2
|
||||||
.dontWrite
|
.dontWrite
|
||||||
RTS
|
RTS
|
||||||
@@ -60,7 +60,7 @@ RTS
|
|||||||
RTS
|
RTS
|
||||||
.isSword
|
.isSword
|
||||||
PHA
|
PHA
|
||||||
LDA HighestSword : STA $04
|
LDA HighestSword : STA $04
|
||||||
TYA ; load sword item
|
TYA ; load sword item
|
||||||
CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert extra fighter's sword to normal one
|
CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert extra fighter's sword to normal one
|
||||||
CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert extra master sword to normal one
|
CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert extra master sword to normal one
|
||||||
@@ -71,11 +71,11 @@ RTS
|
|||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
JMP .done
|
JMP .done
|
||||||
.isUncleSwordShield
|
.isUncleSwordShield
|
||||||
PHA
|
PHA
|
||||||
LDA HighestSword : STA [$00] ; already set to 1 if we had no sword, always keep highest
|
LDA HighestSword : STA [$00] ; already set to 1 if we had no sword, always keep highest
|
||||||
INC $00
|
INC $00
|
||||||
LDA HighestShield : STA [$00]
|
LDA HighestShield : STA [$00]
|
||||||
PLA
|
PLA
|
||||||
RTS
|
RTS
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
22
newhud.asm
22
newhud.asm
@@ -3,18 +3,24 @@ NewDrawHud:
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Draw bomb count
|
; Draw bomb count
|
||||||
!BOMBCOUNT_DRAW_ADDRESS = "$7EC75A"
|
!BOMBCOUNT_DRAW_ADDRESS = "$7EC75A"
|
||||||
!INFINITE_BOMBS = "$7F50C9"
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
LDA !INFINITE_BOMBS : BNE .infinite_bombs
|
LDA InfiniteBombsModifier : BNE .infinite_bombs
|
||||||
.finite_bombs
|
.finite_bombs
|
||||||
LDA.l $7EF343 ; bombs
|
LDA.l SpecialWeapons : AND.b #$7F : CMP #$01 : BNE .normal
|
||||||
|
LDA.l SpecialWeaponLevel : BEQ .no_bombs
|
||||||
|
.normal
|
||||||
|
LDA.l BombsEquipment ; bombs
|
||||||
JSR HudHexToDec2Digit ;requires 8 bit registers!
|
JSR HudHexToDec2Digit ;requires 8 bit registers!
|
||||||
REP #$20
|
REP #$20
|
||||||
LDX.b $06 : TXA : ORA.w #$2400 : STA !BOMBCOUNT_DRAW_ADDRESS ; Draw bombs 10 digit
|
LDX.b $06 : TXA : ORA.w #$2400 : STA !BOMBCOUNT_DRAW_ADDRESS ; Draw bombs 10 digit
|
||||||
LDX.b $07 : TXA : ORA.w #$2400 : STA !BOMBCOUNT_DRAW_ADDRESS+2 ; Draw bombs 1 digit
|
LDX.b $07 : TXA : ORA.w #$2400 : STA !BOMBCOUNT_DRAW_ADDRESS+2 ; Draw bombs 1 digit
|
||||||
BRA +
|
BRA +
|
||||||
|
.no_bombs
|
||||||
|
REP #$20
|
||||||
|
LDA.w #$207F : STA !BOMBCOUNT_DRAW_ADDRESS ; blank
|
||||||
|
STA !BOMBCOUNT_DRAW_ADDRESS+2 ; blank
|
||||||
|
BRA +
|
||||||
.infinite_bombs
|
.infinite_bombs
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w #$2431 : STA !BOMBCOUNT_DRAW_ADDRESS ; infinity (left half)
|
LDA.w #$2431 : STA !BOMBCOUNT_DRAW_ADDRESS ; infinity (left half)
|
||||||
@@ -36,14 +42,13 @@ NewDrawHud:
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Draw arrow count
|
; Draw arrow count
|
||||||
!ARROWCOUNT_DRAW_ADDRESS = "$7EC760"
|
!ARROWCOUNT_DRAW_ADDRESS = "$7EC760"
|
||||||
!INFINITE_ARROWS = "$7F50C8"
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.l ArrowMode : BNE +
|
LDA.l ArrowMode : BNE +
|
||||||
LDA !INFINITE_ARROWS : BNE .infinite_arrows
|
LDA InfiniteArrowsModifier : BNE .infinite_arrows
|
||||||
.finite_arrows
|
.finite_arrows
|
||||||
LDA.l $7EF377 ; arrows
|
LDA.l CurrentArrows ; arrows
|
||||||
JSR HudHexToDec2Digit
|
JSR HudHexToDec2Digit
|
||||||
REP #$20
|
REP #$20
|
||||||
LDX.b $06 : TXA : ORA.w #$2400 : STA !ARROWCOUNT_DRAW_ADDRESS ; Draw arrows 10 digit
|
LDX.b $06 : TXA : ORA.w #$2400 : STA !ARROWCOUNT_DRAW_ADDRESS ; Draw arrows 10 digit
|
||||||
@@ -168,7 +173,6 @@ NewDrawHud:
|
|||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Draw Magic Meter
|
; Draw Magic Meter
|
||||||
!INFINITE_MAGIC = "$7F50CA"
|
|
||||||
!DrawMagicMeter_mp_tilemap = "$0DFE0F"
|
!DrawMagicMeter_mp_tilemap = "$0DFE0F"
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LDA CurrentMagic : AND #$00FF ; crap we wrote over when placing the hook for OnDrawHud
|
LDA CurrentMagic : AND #$00FF ; crap we wrote over when placing the hook for OnDrawHud
|
||||||
@@ -176,7 +180,7 @@ NewDrawHud:
|
|||||||
AND #$FFF8
|
AND #$FFF8
|
||||||
TAX ; end of crap
|
TAX ; end of crap
|
||||||
|
|
||||||
LDA !INFINITE_MAGIC : AND.w #$00FF : BNE + : JMP .green : +
|
LDA InfiniteMagicModifier : AND.w #$00FF : BNE + : JMP .green : +
|
||||||
SEP #$20 : LDA.b #$80 : STA CurrentMagic : REP #$30 ; set magic to max
|
SEP #$20 : LDA.b #$80 : STA CurrentMagic : REP #$30 ; set magic to max
|
||||||
LDX.w #$0080 ; load full magic meter graphics
|
LDX.w #$0080 ; load full magic meter graphics
|
||||||
LDA $1A : AND.w #$000C : LSR #2
|
LDA $1A : AND.w #$000C : LSR #2
|
||||||
|
|||||||
468
newitems.asm
468
newitems.asm
@@ -45,7 +45,9 @@
|
|||||||
; #$B3 - Chicken
|
; #$B3 - Chicken
|
||||||
; #$B4 - Big Magic
|
; #$B4 - Big Magic
|
||||||
; #$B5 - Good Bee
|
; #$B5 - Good Bee
|
||||||
; #$B6/B7 - Reserved for Kara
|
; #$C0 - Progressive Bomb
|
||||||
|
; #$C1 - Progressive Cane
|
||||||
|
; #$C2 - Progressive Bug Net
|
||||||
; #$FE - Server Request (Asychronous Chest)
|
; #$FE - Server Request (Asychronous Chest)
|
||||||
; #$FF - Null Chest
|
; #$FF - Null Chest
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -75,13 +77,13 @@
|
|||||||
;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 #$4B : BNE +
|
CMP.b #$4B : BNE +
|
||||||
@@ -91,13 +93,13 @@ GetAnimatedSpriteGfxFile:
|
|||||||
LDY.b #$5E : JML GetAnimatedSpriteGfxFile_return
|
LDY.b #$5E : 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
|
||||||
@@ -284,7 +286,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 BowEquipment : BEQ ++ : CMP.b #$03 : !BGE ++
|
LDA BowEquipment : BEQ ++ : CMP.b #$03 : !BGE ++
|
||||||
@@ -444,15 +446,15 @@ AddReceivedItemExpandedGetItem:
|
|||||||
LDA.b $21 : SBC.b #$00 : STA.w $0D20,Y ; move up 16 pixels
|
LDA.b $21 : SBC.b #$00 : STA.w $0D20,Y ; move up 16 pixels
|
||||||
LDA.b $EE : STA.w $0F20,Y ; spawns on same layer as link
|
LDA.b $EE : STA.w $0F20,Y ; spawns on same layer as link
|
||||||
LDA.b #$FF : STA.w $0B58,Y ; allows them to expire
|
LDA.b #$FF : STA.w $0B58,Y ; allows them to expire
|
||||||
++ BRA .done
|
++ JMP .done
|
||||||
+ CMP.b #$B3 : BNE + ; Chicken
|
+ CMP.b #$B3 : BNE + ; Chicken
|
||||||
LDA.b #$0B : JSL Sprite_SpawnDynamically : BMI .done
|
LDA.b #$0B : JSL Sprite_SpawnDynamically : BMI ++
|
||||||
LDA $22 : CLC : ADC.b #$03 : AND.b #$F8 : STA $0D10,Y
|
LDA $22 : CLC : ADC.b #$03 : AND.b #$F8 : STA $0D10,Y
|
||||||
LDA $23 : ADC.b #$00 : STA $0D30,Y ; round X to nearest 8
|
LDA $23 : ADC.b #$00 : STA $0D30,Y ; round X to nearest 8
|
||||||
LDA.b $20 : SEC : SBC.b #$08 : STA.w $0D00,Y
|
LDA.b $20 : SEC : SBC.b #$08 : STA.w $0D00,Y
|
||||||
LDA.b $21 : SBC.b #$00 : STA.w $0D20,Y ; move up 8 pixels
|
LDA.b $21 : SBC.b #$00 : STA.w $0D20,Y ; move up 8 pixels
|
||||||
LDA.b $EE : STA.w $0F20,Y ; spawns on same layer as link
|
LDA.b $EE : STA.w $0F20,Y ; spawns on same layer as link
|
||||||
BRA .done
|
++ BRA .done
|
||||||
+ CMP.b #$B4 : BNE + ; Big Magic
|
+ CMP.b #$B4 : BNE + ; Big Magic
|
||||||
LDA.b #$80 : STA MagicFiller ; fill magic
|
LDA.b #$80 : STA MagicFiller ; fill magic
|
||||||
BRA .done
|
BRA .done
|
||||||
@@ -464,11 +466,28 @@ AddReceivedItemExpandedGetItem:
|
|||||||
LDA.b $EE : STA.w $0F20,Y ; spawns on same layer as link
|
LDA.b $EE : STA.w $0F20,Y ; spawns on same layer as link
|
||||||
JSL GoldBee_SpawnSelf_SetProperties
|
JSL GoldBee_SpawnSelf_SetProperties
|
||||||
BRA .done
|
BRA .done
|
||||||
|
+ CMP.b #$C0 : BNE + ; Bomb Upgrade
|
||||||
|
LDA #$01 : STA InfiniteBombsModifier ; infinite bombs
|
||||||
|
BRA .done
|
||||||
|
+ CMP.b #$C1 : BNE + ; Cane Upgrade
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$03 : BEQ .blue_cane
|
||||||
|
CMP.b #$04 : BEQ .red_cane
|
||||||
|
BRA .done
|
||||||
|
.blue_cane
|
||||||
|
LDA #$01 : STA ByrnaEquipment
|
||||||
|
BRA .done
|
||||||
|
.red_cane
|
||||||
|
LDA #$01 : STA SomariaEquipment
|
||||||
|
BRA .done
|
||||||
|
+ CMP.b #$C2 : BNE + ; Bug Net Upgrade
|
||||||
|
LDA.b #$01 : STA BugNetEquipment
|
||||||
|
BRA .done
|
||||||
+
|
+
|
||||||
.done
|
.done
|
||||||
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
|
||||||
@@ -585,9 +604,9 @@ AddReceivedItemExpanded:
|
|||||||
LDA BowEquipment : INC : LSR : CMP.l ProgressiveBowLimit : !BLT +
|
LDA BowEquipment : INC : LSR : CMP.l ProgressiveBowLimit : !BLT +
|
||||||
LDA.l ProgressiveBowReplacement : STA $02D8 : JMP .done
|
LDA.l ProgressiveBowReplacement : STA $02D8 : JMP .done
|
||||||
+ LDA BowEquipment : INC : LSR : CMP.b #$00 : BNE + ; No Bow
|
+ LDA BowEquipment : 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 BowTracking : ORA #$20 : STA.l BowTracking
|
LDA.l BowTracking : ORA #$20 : STA.l BowTracking
|
||||||
@@ -599,50 +618,46 @@ AddReceivedItemExpanded:
|
|||||||
JSL.l GetRNGItemSingle : STA $02D8
|
JSL.l GetRNGItemSingle : STA $02D8
|
||||||
XBA : JSR.w MarkRNGItemSingle
|
XBA : JSR.w MarkRNGItemSingle
|
||||||
LDA #$FF : STA !LOCK_IN ; clear lock-in
|
LDA #$FF : STA !LOCK_IN ; clear lock-in
|
||||||
BRA .done
|
JMP .done
|
||||||
++ : CMP.b #$63 : BNE ++ ; RNG Item (Multi)
|
++ : CMP.b #$63 : BNE ++ ; RNG Item (Multi)
|
||||||
JSL.l GetRNGItemMulti : STA $02D8
|
JSL.l GetRNGItemMulti : STA $02D8
|
||||||
LDA #$FF : STA !LOCK_IN ; clear lock-in
|
LDA #$FF : STA !LOCK_IN ; clear lock-in
|
||||||
BRA .done
|
JMP .done
|
||||||
++ : CMP.b #$B0 : BNE ++ ; Bee Trap
|
++ : CMP.b #$B0 : BNE ++ ; Bee Trap
|
||||||
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 : JMP .done ; Bee in a bottle
|
||||||
+++
|
+++
|
||||||
++
|
++
|
||||||
.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
|
|
||||||
warnpc $A08A00
|
|
||||||
org $A08A00
|
|
||||||
|
|
||||||
.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
|
||||||
@@ -663,31 +678,34 @@ org $A08A00
|
|||||||
db -4 ; Big Magic
|
db -4 ; Big Magic
|
||||||
db -4 ; Good Bee
|
db -4 ; Good Bee
|
||||||
db -4, -4, -4, -4, -4, -4, -4, -4, -4, -4 ; Unused
|
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 ; Bomb Upgrade
|
||||||
|
db -4 ; Cane Upgrade
|
||||||
|
db -4 ; Bug Net Upgrade
|
||||||
|
db -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
|
||||||
@@ -709,32 +727,35 @@ org $A08A00
|
|||||||
db 4 ; Big Magic
|
db 4 ; Big Magic
|
||||||
db 0 ; Good Bee
|
db 0 ; Good Bee
|
||||||
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Unused
|
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 ; Bomb Upgrade
|
||||||
|
db 4 ; Cane Upgrade
|
||||||
|
db 0 ; Bug Net Upgrade
|
||||||
|
db 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
|
||||||
@@ -760,31 +781,34 @@ org $A08A00
|
|||||||
db $3B ; Big Magic
|
db $3B ; Big Magic
|
||||||
db $47 ; Good Bee
|
db $47 ; Good Bee
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
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 $13 ; Bomb Upgrade
|
||||||
|
db $07 ; Cane Upgrade
|
||||||
|
db $27 ; Bug Net Upgrade
|
||||||
|
db $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
|
||||||
@@ -804,34 +828,36 @@ org $A08A00
|
|||||||
db $02 ; Chicken
|
db $02 ; Chicken
|
||||||
db $00 ; Big Magic
|
db $00 ; Big Magic
|
||||||
db $02 ; Good Bee
|
db $02 ; Good Bee
|
||||||
|
|
||||||
db $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 ; Bomb Upgrade
|
||||||
|
db $00 ; Cane Upgrade
|
||||||
|
db $02 ; Bug Net Upgrade
|
||||||
|
db $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
|
||||||
@@ -852,27 +878,30 @@ org $A08A00
|
|||||||
db 4 ; Big Magic
|
db 4 ; Big Magic
|
||||||
db 1 ; Good Bee
|
db 1 ; Good Bee
|
||||||
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
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 5 ; Bomb Upgrade
|
||||||
|
db 5 ; Cane Upgrade
|
||||||
|
db 1 ; Bug Net Upgrade
|
||||||
|
db 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
|
db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ; Unused
|
||||||
|
|
||||||
; \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)
|
||||||
@@ -899,7 +928,10 @@ org $A08A00
|
|||||||
dw $F373 ; Big Magic
|
dw $F373 ; Big Magic
|
||||||
dw $F36A ; Good Bee
|
dw $F36A ; Good Bee
|
||||||
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
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 $F38F ; Bomb Upgrade
|
||||||
|
dw $F38F ; Cane Upgrade
|
||||||
|
dw $F38F ; Bug Net Upgrade
|
||||||
|
dw $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
|
dw $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A, $F36A ; Unused
|
||||||
@@ -908,26 +940,26 @@ org $A08A00
|
|||||||
; 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
|
||||||
@@ -948,71 +980,74 @@ org $A08A00
|
|||||||
db $80 ; Big Magic
|
db $80 ; Big Magic
|
||||||
db $FF ; Good Bee
|
db $FF ; Good Bee
|
||||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Unused
|
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 ; Bomb Upgrade
|
||||||
|
db $FF ; Cane Upgrade
|
||||||
|
db $FF ; Bug Net Upgrade
|
||||||
|
db $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, $4B8B, $20AB ; last two can be re-used
|
dw $0080, $0040, $0020, $0010, $0008, $0004, $4B8B, $20AB ; last two can be re-used
|
||||||
|
|
||||||
; caves
|
; caves
|
||||||
dw $9CCE, $0390, $2F82, $AD03, $02E9, $01C9, $06D0, $72A5
|
dw $9CCE, $0390, $2F82, $AD03, $02E9, $01C9, $06D0, $72A5
|
||||||
dw $A548, $4873, $01A0, $D8AD, $C902, $D020, $A002, $9802
|
dw $A548, $4873, $01A0, $D8AD, $C902, $D020, $A002, $9802
|
||||||
dw $E48D, $DA02, $D8AC, $D002, $A215, $BD08, $84E2, $0085
|
dw $E48D, $DA02, $D8AC, $D002, $A215, $BD08, $84E2, $0085
|
||||||
dw $E3BD, $8584, $A901, $857E, $B902, $857A, $0087, $0A98
|
dw $E3BD, $8584, $A901, $857E, $B902, $857A, $0087, $0A98
|
||||||
dw $BDAA, $84E2, $0085, $E3BD, $8584, $A901, $857E, $B902
|
dw $BDAA, $84E2, $0085, $E3BD, $8584, $A901, $857E, $B902
|
||||||
dw $857A, $0230, $0087, $1FC0, $02D0, $5664, $04A9, $4BC0
|
dw $857A, $0230, $0087, $1FC0, $02D0, $5664, $04A9, $4BC0
|
||||||
dw $06F0, $1EC0, $0AD0, $02A9, $790F, $7EF3, $798F, $7EF3
|
dw $06F0, $1EC0, $0AD0, $02A9, $790F, $7EF3, $798F, $7EF3
|
||||||
dw $1BC0, $04F0, $1CC0, $07D0, $1B22, $1BEE, $0182, $A201
|
dw $1BC0, $04F0, $1CC0, $07D0, $1B22, $1BEE, $0182, $A201
|
||||||
dw $C004, $F037, $A20C, $C001, $F038, $A206, $C002, $D039
|
dw $C004, $F037, $A20C, $C001, $F038, $A206, $C002, $D039
|
||||||
dw $8A14, $0007, $0087, $00EE, $2902, $C907, $D007, $A906
|
dw $8A14, $0007, $0087, $00EE, $2902, $C907, $D007, $A906
|
||||||
dw $8F04, $F3C7, $C07E, $D022, $A70A, $D000, $A904, $8701
|
dw $8F04, $F3C7, $C07E, $D022, $A70A, $D000, $A904, $8701
|
||||||
dw $8000, $C0C9, $F025, $C008, $F032, $C004, $D033, $AE11
|
dw $8000, $C0C9, $F025, $C008, $F032, $C004, $D033, $AE11
|
||||||
dw $040C, $20C2, $C6BD, $0785, $8700, $E200, $8220, $00B0
|
dw $040C, $20C2, $C6BD, $0785, $8700, $E200, $8220, $00B0
|
||||||
dw $3EC0, $0AD0, $082C, $1003, $A905, $8D02, $0309, $20C0
|
dw $3EC0, $0AD0, $082C, $1003, $A905, $8D02, $0309, $20C0
|
||||||
dw $44D0
|
dw $44D0
|
||||||
}
|
}
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
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)
|
||||||
@@ -1039,7 +1074,10 @@ Link_ReceiveItemAlternatesExpanded:
|
|||||||
db -1 ; Big Magic
|
db -1 ; Big Magic
|
||||||
db -1 ; Good Bee
|
db -1 ; Good Bee
|
||||||
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
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 ; Bomb Upgrade
|
||||||
|
db -1 ; Cane Upgrade
|
||||||
|
db -1 ; Bug Net Upgrade
|
||||||
|
db -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
|
db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused
|
||||||
@@ -1064,10 +1102,10 @@ RTL
|
|||||||
;DrawHUDSilverArrows:
|
;DrawHUDSilverArrows:
|
||||||
; LDA BowEquipment : AND.w #$00FF : BNE +
|
; LDA BowEquipment : AND.w #$00FF : BNE +
|
||||||
; LDA BowTracking : AND.w #$0040 : BEQ +
|
; LDA BowTracking : 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
|
||||||
@@ -1247,83 +1285,97 @@ AttemptItemSubstitution:
|
|||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CountBottles:
|
CountBottles:
|
||||||
PHX
|
PHX
|
||||||
LDX.b #$00
|
LDX.b #$00
|
||||||
LDA BottleContentsOne : BEQ ++ : INX
|
LDA BottleContentsOne : BEQ ++ : INX
|
||||||
++ : LDA BottleContentsTwo : BEQ ++ : INX
|
++ : LDA BottleContentsTwo : BEQ ++ : INX
|
||||||
++ : LDA BottleContentsThree : BEQ ++ : INX
|
++ : LDA BottleContentsThree : BEQ ++ : INX
|
||||||
++ : LDA BottleContentsFour : BEQ ++ : INX
|
++ : LDA BottleContentsFour : 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:
|
||||||
LDA.b #$01 : STA $02E9
|
LDA.b #$01 : STA $02E9
|
||||||
JSL.l IncrementChestCounter
|
JSL.l IncrementChestCounter
|
||||||
LDA.l ServerRequestMode : BEQ +
|
LDA.l ServerRequestMode : BEQ +
|
||||||
JSL.l ChestItemServiceRequest
|
JSL.l ChestItemServiceRequest
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDY $0C ; get item value
|
LDY $0C ; get item value
|
||||||
SEC
|
SEC
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Ancilla22_ItemReceipt_ContinueB:
|
Ancilla22_ItemReceipt_ContinueB:
|
||||||
CMP.b #$6A : BNE .return
|
CMP.b #$6A : BNE .return
|
||||||
JSL ActivateTriforceCutscene
|
JSL ActivateTriforceCutscene
|
||||||
.return
|
.return
|
||||||
STZ.w $0C4A,X : STZ.w $0FC1 ; what we wrote over
|
STZ.w $0C4A,X : STZ.w $0FC1 ; what we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Set a flag in SRAM if we pick up a compass in its own dungeon with HUD compass
|
; Set a flag in SRAM if we pick up a compass in its own dungeon with HUD compass
|
||||||
; counts on
|
; counts on
|
||||||
MaybeFlagCompassTotalPickup:
|
MaybeFlagCompassTotalPickup:
|
||||||
LDA.l CompassMode : AND.b #$0F : BEQ .done
|
LDA.l CompassMode : AND.b #$0F : BEQ .done
|
||||||
LDA $040C : CMP #$FF : BEQ .done
|
LDA $040C : CMP #$FF : BEQ .done
|
||||||
LSR : STA $04 : LDA #$0F : !SUB $04 ; Compute flag "index"
|
LSR : STA $04 : LDA #$0F : !SUB $04 ; Compute flag "index"
|
||||||
CPY #$25 : BEQ .setFlag ; Set flag if it's a compass for this dungeon
|
CPY #$25 : BEQ .setFlag ; Set flag if it's a compass for this dungeon
|
||||||
STA $04
|
STA $04
|
||||||
TYA : AND #$0F : CMP $04 : BNE .done ; Check if compass is for this dungeon
|
TYA : AND #$0F : CMP $04 : BNE .done ; Check if compass is for this dungeon
|
||||||
.setFlag
|
.setFlag
|
||||||
CMP #$08 : !BGE ++
|
CMP #$08 : !BGE ++
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
ORA CompassCountDisplay : STA CompassCountDisplay
|
ORA CompassCountDisplay : STA CompassCountDisplay
|
||||||
BRA .done
|
BRA .done
|
||||||
++
|
++
|
||||||
!SUB #$08
|
!SUB #$08
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
BIT.b #$C0 : BEQ + : LDA.b #$C0 : + ; Make Hyrule Castle / Sewers Count for Both
|
BIT.b #$C0 : BEQ + : LDA.b #$C0 : + ; Make Hyrule Castle / Sewers Count for Both
|
||||||
ORA CompassCountDisplay+1 : STA CompassCountDisplay+1
|
ORA CompassCountDisplay+1 : STA CompassCountDisplay+1
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Set the compass count display flag if we're entering a dungeon and alerady have
|
; Set the compass count display flag if we're entering a dungeon and alerady have
|
||||||
; that compass
|
; that compass
|
||||||
MaybeFlagCompassTotalEntrance:
|
MaybeFlagCompassTotalEntrance:
|
||||||
LDX $040C : CPX #$FF : BEQ .done ; Skip if we're not entering dungeon
|
LDX $040C : CPX #$FF : BEQ .done ; Skip if we're not entering dungeon
|
||||||
LDA.l CompassMode : AND.w #$000F : BEQ .done ; Skip if we're not showing compass counts
|
LDA.l CompassMode : AND.w #$000F : BEQ .done ; Skip if we're not showing compass counts
|
||||||
CMP.w #$0002 : BEQ .countShown
|
CMP.w #$0002 : BEQ .countShown
|
||||||
LDA CompassField : AND.l DungeonItemMasks, X : BEQ .done ; skip if we don't have compass
|
LDA CompassField : AND.l DungeonItemMasks, X : BEQ .done ; skip if we don't have compass
|
||||||
.countShown
|
.countShown
|
||||||
SEP #$20
|
SEP #$20
|
||||||
TXA : LSR : STA.b $04 : LDA.b #$0F : !SUB $04 ; Compute flag "index"
|
TXA : LSR : STA.b $04 : LDA.b #$0F : !SUB $04 ; Compute flag "index"
|
||||||
CMP #$08 : !BGE ++
|
CMP #$08 : !BGE ++
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
ORA CompassCountDisplay : STA CompassCountDisplay
|
ORA CompassCountDisplay : STA CompassCountDisplay
|
||||||
REP #$20
|
REP #$20
|
||||||
BRA .done
|
BRA .done
|
||||||
++
|
++
|
||||||
!SUB #$08
|
!SUB #$08
|
||||||
%ValueShift()
|
%ValueShift()
|
||||||
BIT.b #$C0 : BEQ + : LDA.b #$C0 : + ; Make Hyrule Castle / Sewers Count for Both
|
BIT.b #$C0 : BEQ + : LDA.b #$C0 : + ; Make Hyrule Castle / Sewers Count for Both
|
||||||
ORA CompassCountDisplay+1 : STA CompassCountDisplay+1
|
ORA CompassCountDisplay+1 : STA CompassCountDisplay+1
|
||||||
REP #$20
|
REP #$20
|
||||||
.done
|
.done
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
LoadReceivedItemExpandedProperties:
|
||||||
|
CPX.b #$C0 : BEQ .bomb_upgrade
|
||||||
|
LDA.l AddReceivedItemExpanded_properties, X ; load from table
|
||||||
|
RTL
|
||||||
|
.bomb_upgrade
|
||||||
|
LDA SpecialWeaponLevel
|
||||||
|
CMP.b #$01 : BNE + ; L1 Bombs
|
||||||
|
LDA.b #4 : RTL
|
||||||
|
+ : CMP.b #$02 : BNE + ; L2 Bombs
|
||||||
|
LDA.b #2 : RTL
|
||||||
|
+ : CMP.b #$03 : BNE + ; L3 Bombs
|
||||||
|
LDA.b #1 : RTL
|
||||||
|
+ ; Everything Else
|
||||||
|
LDA.b #5 : RTL
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ QuickSwap:
|
|||||||
CPX.b #$01 : BEQ + ; bow
|
CPX.b #$01 : BEQ + ; bow
|
||||||
CPX.b #$05 : BEQ + ; powder
|
CPX.b #$05 : BEQ + ; powder
|
||||||
CPX.b #$0D : BEQ + ; flute
|
CPX.b #$0D : BEQ + ; flute
|
||||||
|
CPX.b #$0E : BEQ + ; bug net
|
||||||
CPX.b #$10 : BEQ + ; bottle
|
CPX.b #$10 : BEQ + ; bottle
|
||||||
BRA .store
|
BRA .store
|
||||||
+ STX $0202 : JSL ProcessMenuButtons_y_pressed
|
+ STX $0202 : JSL ProcessMenuButtons_y_pressed
|
||||||
|
|||||||
22
retro.asm
22
retro.asm
@@ -1,6 +1,5 @@
|
|||||||
!INFINITE_BOMBS = "$7F50C9"
|
|
||||||
IsItemAvailable:
|
IsItemAvailable:
|
||||||
LDA !INFINITE_BOMBS : BEQ .finite
|
LDA InfiniteBombsModifier : BEQ .finite
|
||||||
.infinite
|
.infinite
|
||||||
CPX.b #$04 : BNE .finite
|
CPX.b #$04 : BNE .finite
|
||||||
LDA.b #$01 : RTL
|
LDA.b #$01 : RTL
|
||||||
@@ -8,34 +7,39 @@ IsItemAvailable:
|
|||||||
LDA EquipmentWRAM-1, X
|
LDA EquipmentWRAM-1, X
|
||||||
RTL
|
RTL
|
||||||
LoadBombCount:
|
LoadBombCount:
|
||||||
LDA !INFINITE_BOMBS : BNE .infinite
|
LDA InfiniteBombsModifier : BNE .infinite
|
||||||
.finite
|
.finite
|
||||||
LDA BombsEquipment
|
LDA BombsEquipment
|
||||||
.infinite
|
.infinite
|
||||||
RTL
|
RTL
|
||||||
LoadBombCount16:
|
LoadBombCount16:
|
||||||
LDA !INFINITE_BOMBS : AND.w #$00FF : BNE .infinite
|
LDA InfiniteBombsModifier : AND.w #$00FF : BNE .infinite
|
||||||
.finite
|
.finite
|
||||||
LDA BombsEquipment
|
LDA BombsEquipment
|
||||||
.infinite
|
.infinite
|
||||||
RTL
|
RTL
|
||||||
StoreBombCount:
|
StoreBombCount:
|
||||||
PHA : LDA !INFINITE_BOMBS : BEQ .finite
|
JSL IncrementBombsPlacedCounter
|
||||||
|
PHA : LDA InfiniteBombsModifier : BEQ .finite
|
||||||
.infinite
|
.infinite
|
||||||
PLA : LDA.b #$01 : RTL
|
PLA : LDA.b #$01 : RTL
|
||||||
.finite
|
.finite
|
||||||
PLA : STA BombsEquipment
|
PLA : STA.l BombsEquipment
|
||||||
|
BNE .done
|
||||||
|
LDA.l ItemOnB : CMP #$04 : BNE .done
|
||||||
|
LDA.b #$00 : STA.l ItemOnB
|
||||||
|
.done
|
||||||
|
LDA.l BombsEquipment
|
||||||
RTL
|
RTL
|
||||||
SearchForEquippedItem:
|
SearchForEquippedItem:
|
||||||
LDA !INFINITE_BOMBS : BEQ +
|
LDA InfiniteBombsModifier : BEQ +
|
||||||
LDA.b #$01 : LDX.b #$00 : RTL
|
LDA.b #$01 : LDX.b #$00 : RTL
|
||||||
+
|
+
|
||||||
LDA BowEquipment ; thing we wrote over
|
LDA BowEquipment ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
!INFINITE_ARROWS = "$7F50C8"
|
|
||||||
DecrementArrows:
|
DecrementArrows:
|
||||||
LDA !INFINITE_ARROWS : BNE .infinite
|
LDA InfiniteArrowsModifier : BNE .infinite
|
||||||
LDA.l ArrowMode : BNE .rupees : BRA .normal
|
LDA.l ArrowMode : BNE .rupees : BRA .normal
|
||||||
.infinite
|
.infinite
|
||||||
LDA.b #$01 : RTL
|
LDA.b #$01 : RTL
|
||||||
|
|||||||
@@ -111,6 +111,10 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!RNG_POINTERS = "$7F5200"
|
!RNG_POINTERS = "$7F5200"
|
||||||
GetStaticRNG:
|
GetStaticRNG:
|
||||||
|
LDA.l SeededRNG : BNE .seeded
|
||||||
|
JML GetRandomInt
|
||||||
|
RTL
|
||||||
|
.seeded
|
||||||
PHX : PHP
|
PHX : PHP
|
||||||
REP #$30 ; set 16-bit accumulator and index registers
|
REP #$30 ; set 16-bit accumulator and index registers
|
||||||
AND.w #$000F
|
AND.w #$000F
|
||||||
|
|||||||
600
special_weapons.asm
Normal file
600
special_weapons.asm
Normal file
@@ -0,0 +1,600 @@
|
|||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
!ANCILLA_DAMAGE = "$06EC84"
|
||||||
|
; start with X = sprite index, A = ancilla type index
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
DamageClassCalc:
|
||||||
|
PHA
|
||||||
|
LDA GanonVulnerabilityItem : BEQ +
|
||||||
|
LDA $0E20, X : CMP #$D7 : BNE +
|
||||||
|
PLA
|
||||||
|
JSL Ganon_CheckAncillaVulnerability
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
LDA SpecialWeapons : AND.b #$7F : CMP #$06 : BEQ .cane_immune ; only crystal switches in bee mode
|
||||||
|
PLA
|
||||||
|
CMP #$01 : BEQ .red_cane
|
||||||
|
CMP #$2C : BEQ .red_cane
|
||||||
|
CMP #$31 : BEQ .blue_cane
|
||||||
|
CMP #$0C : BEQ .beam
|
||||||
|
BRA .not_cane_or_beam
|
||||||
|
.red_cane
|
||||||
|
PHA
|
||||||
|
LDA SpecialWeapons : AND.b #$7F : CMP.b #$04 : BEQ .special_cane
|
||||||
|
CMP.b #$05 : BEQ .special_cane
|
||||||
|
LDA SpecialWeapons : AND.b #$80 : BNE .cane_immune
|
||||||
|
BRA .normal
|
||||||
|
.blue_cane
|
||||||
|
PHA
|
||||||
|
LDA SpecialWeapons : AND.b #$7F : CMP.b #$03 : BEQ .special_cane
|
||||||
|
CMP.b #$05 : BEQ .special_cane
|
||||||
|
LDA SpecialWeapons : AND.b #$80 : BNE .cane_immune
|
||||||
|
BRA .normal
|
||||||
|
.cane_immune
|
||||||
|
LDA $0E20, X : CMP.b #$1E : BEQ .normal ; crystal switch
|
||||||
|
PLA
|
||||||
|
BRA .impervious
|
||||||
|
.special_cane
|
||||||
|
PLA
|
||||||
|
LDA $0E20, X : CMP.b #$D6 : BEQ .unstunned_ganon
|
||||||
|
CMP.b #$88 : BEQ .mothula
|
||||||
|
BRA .special_level
|
||||||
|
.impervious
|
||||||
|
LDA #$FF
|
||||||
|
RTL
|
||||||
|
.beam
|
||||||
|
PHA
|
||||||
|
LDA SpecialWeapons : AND.b #$7F : CMP.b #$02 : BNE .normal
|
||||||
|
PLA
|
||||||
|
LDA #$05
|
||||||
|
RTL
|
||||||
|
.normal
|
||||||
|
PLA
|
||||||
|
.not_cane_or_beam
|
||||||
|
CMP #$07 : BNE .no_change
|
||||||
|
LDA SpecialWeapons : AND.b #$7F : CMP #$01 : BNE .normal_bombs
|
||||||
|
LDA SpecialWeaponLevel : 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 #$91 : BEQ .stalfos_knight
|
||||||
|
CMP.b #$92 : BEQ .helmasaur_king
|
||||||
|
.special_level
|
||||||
|
LDA SpecialWeaponLevel
|
||||||
|
BRA .done
|
||||||
|
.mothula
|
||||||
|
LDA SpecialWeaponLevel
|
||||||
|
CMP #$04 : !BGE .fix_mothula
|
||||||
|
BRA .done
|
||||||
|
.fix_mothula
|
||||||
|
LDA #$03
|
||||||
|
BRA .done
|
||||||
|
.stalfos_knight
|
||||||
|
LDA !StalfosBombDamage : BEQ .special_level
|
||||||
|
LDA #$08
|
||||||
|
BRA .done
|
||||||
|
.helmasaur_king
|
||||||
|
LDA $0DB0, X : CMP #$03 : !BGE .special_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 .special_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 BowEquipment : CMP.b #$03 : !BGE .actual_silver_arrows
|
||||||
|
.normal_arrows
|
||||||
|
LDA #$06
|
||||||
|
.done
|
||||||
|
RTL
|
||||||
|
.actual_silver_arrows
|
||||||
|
LDA $0E20, X : CMP.b #$D7 : BNE +
|
||||||
|
LDA SpecialWeapons : AND.b #$7F : CMP #$01 : BEQ .normal_arrows
|
||||||
|
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
|
||||||
|
.giant_moldorm
|
||||||
|
LDA.w $0E10, Y : BNE .ignore_collision ; Moldy can have little a I-Frames, as a treat
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BNE ++
|
||||||
|
LDA.w $0C4A, X : CMP.b #$07 : BEQ .check_collision_moldorm
|
||||||
|
BRA .ignore_collision ; don't collide with non-bombs
|
||||||
|
++ : CMP.b #$03 : BNE ++
|
||||||
|
LDA.w $0C4A, X : CMP.b #$31 : BEQ .check_collision_moldorm
|
||||||
|
BRA .ignore_collision ; don't collide with non-byrna
|
||||||
|
++ : CMP.b #$04 : BNE ++
|
||||||
|
LDA.w $0C4A, X : CMP.b #$01 : BEQ .check_collision_moldorm
|
||||||
|
CMP.b #$2C : BEQ .check_collision_moldorm
|
||||||
|
BRA .ignore_collision ; don't collide with non-somaria
|
||||||
|
++ : CMP.b #$05 : BNE .ignore_collision
|
||||||
|
LDA.w $0C4A, X : CMP.b #$01 : BEQ .check_collision_moldorm
|
||||||
|
CMP.b #$2C : BEQ .check_collision_moldorm
|
||||||
|
CMP.b #$31 : BEQ .check_collision_moldorm
|
||||||
|
BRA .ignore_collision ; don't collide with non-canes
|
||||||
|
|
||||||
|
.check_collision_moldorm
|
||||||
|
JSR SetUpMoldormHitbox
|
||||||
|
JSL !UTILITY_CHECK_IF_HIT_BOXES_OVERLAP_LONG
|
||||||
|
RTL
|
||||||
|
|
||||||
|
.ignore_collision
|
||||||
|
CLC
|
||||||
|
RTL
|
||||||
|
|
||||||
|
.trinexx
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BNE ++
|
||||||
|
LDA.w $0C4A, X : CMP.b #$07 : BEQ .check_collision_trinexx
|
||||||
|
BRA .ignore_collision ; don't collide with non-bombs
|
||||||
|
++ : CMP.b #$03 : BNE ++
|
||||||
|
LDA.w $0C4A, X : CMP.b #$31 : BEQ .check_collision_trinexx
|
||||||
|
JMP .ignore_collision ; don't collide with non-byrna
|
||||||
|
++ : CMP.b #$04 : BNE ++
|
||||||
|
LDA.w $0C4A, X : CMP.b #$01 : BEQ .check_collision_trinexx
|
||||||
|
CMP.b #$2C : BEQ .check_collision_trinexx
|
||||||
|
JMP .ignore_collision ; don't collide with non-somaria
|
||||||
|
++ : CMP #$05 : BNE .ignore_collision
|
||||||
|
LDA.w $0C4A, X : CMP.b #$01 : BEQ .check_collision_trinexx
|
||||||
|
CMP.b #$2C : BEQ .check_collision_trinexx
|
||||||
|
CMP.b #$31 : BEQ .check_collision_trinexx
|
||||||
|
JMP .ignore_collision ; don't collide with non-canes
|
||||||
|
|
||||||
|
.check_collision_trinexx
|
||||||
|
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.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BNE ++
|
||||||
|
LDA.w $0C4A, X : CMP.b #$07 : BEQ .collide
|
||||||
|
BRA .normal ; normal behavior with non-bombs
|
||||||
|
++ : CMP.b #$03 : BNE ++
|
||||||
|
LDA.w $0C4A, X : CMP.b #$31 : BEQ .collide
|
||||||
|
BRA .normal ; normal behavior with non-byrna
|
||||||
|
++ : CMP.b #$04 : BNE ++
|
||||||
|
LDA.w $0C4A, X : CMP.b #$01 : BEQ .collide
|
||||||
|
CMP.b #$2C : BEQ .collide
|
||||||
|
BRA .normal ; normal behavior with non-somaria
|
||||||
|
++ : CMP.b #$05 : BNE .normal
|
||||||
|
LDA.w $0C4A, X : CMP.b #$01 : BEQ .collide
|
||||||
|
CMP.b #$2C : BEQ .collide
|
||||||
|
CMP.b #$31 : BEQ .collide
|
||||||
|
BRA .normal ; normal behavior with non-canes
|
||||||
|
.collide
|
||||||
|
CLC
|
||||||
|
RTL
|
||||||
|
.normal
|
||||||
|
LDA.w $0DB0, Y : CMP.b #$03
|
||||||
|
RTL
|
||||||
|
; returns carry set if there is collision immunity
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Utility_CheckImpervious:
|
||||||
|
LDA $0E20, X : CMP.b #$CB : BNE .normal
|
||||||
|
.trinexx
|
||||||
|
LDA SpecialWeapons : AND.b #$7F : CMP.b #$06 : BEQ .check_sidenexx
|
||||||
|
LDA SpecialWeapons : AND.b #$80 : BNE +
|
||||||
|
BRA .normal
|
||||||
|
+
|
||||||
|
LDA $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
||||||
|
.check_sidenexx
|
||||||
|
LDA.w $0DD1 : ORA.w $0DD2 : BNE .impervious ; at least one sidenexx alive
|
||||||
|
LDA.w $0D80, X : CMP.b #$02 : BCS .impervious ; at least one sidenexx alive
|
||||||
|
BRA .not_impervious
|
||||||
|
.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
|
||||||
|
JSL Ganon_CheckHammerVulnerability : BCS .not_impervious
|
||||||
|
LDA SpecialWeapons : AND.b #$80 : BEQ .not_impervious
|
||||||
|
LDA $0E20, X : CMP.b #$1E : BEQ .not_impervious ; crystal switch
|
||||||
|
CMP.b #$40 : BEQ .not_impervious ; aga barrier
|
||||||
|
BRA .impervious
|
||||||
|
.not_impervious
|
||||||
|
LDA #$00 : RTL
|
||||||
|
.impervious
|
||||||
|
LDA #$01 : RTL
|
||||||
|
.sidenexx
|
||||||
|
LDA $0CAA, X : AND.b #$04 : BEQ .vulnerable
|
||||||
|
LDA.l SpecialWeapons : AND.b #$80 : BEQ .not_impervious
|
||||||
|
LDA $0CF2 : CMP #$06 : !BLT .impervious ; swords are ineffective
|
||||||
|
BRA .not_impervious
|
||||||
|
.vulnerable
|
||||||
|
LDA.l SpecialWeapons : AND.b #$80 : BEQ .not_impervious
|
||||||
|
LDA $0CF2 : CMP #$06 : !BGE .impervious ; non-swords are ineffective
|
||||||
|
BRA .not_impervious
|
||||||
|
; returns nonzero A if impervious
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
!SPRITE_INITIALIZED_SEGMENTED = "$1DD6D1"
|
||||||
|
; start with X = sprite index
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
AllowBombingMoldorm:
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BEQ .no_disable_projectiles
|
||||||
|
CMP.b #$03 : BEQ .no_disable_projectiles
|
||||||
|
CMP.b #$04 : BEQ .no_disable_projectiles
|
||||||
|
CMP.b #$05 : BEQ .no_disable_projectiles
|
||||||
|
CMP.b #$06 : BEQ .no_disable_projectiles
|
||||||
|
INC $0BA0, X
|
||||||
|
.no_disable_projectiles
|
||||||
|
JSL !SPRITE_INITIALIZED_SEGMENTED
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
AllowBombingBarrier:
|
||||||
|
; what we wrote over
|
||||||
|
LDA $0D00, X : !SUB.b #$0C : STA $0D00, X
|
||||||
|
LDA $0E20, X : CMP #$40 : BNE .disable_projectiles
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BEQ .no_disable_projectiles
|
||||||
|
CMP.b #$03 : BEQ .no_disable_projectiles
|
||||||
|
CMP.b #$04 : BEQ .no_disable_projectiles
|
||||||
|
CMP.b #$05 : BEQ .no_disable_projectiles
|
||||||
|
CMP.b #$06 : BEQ .no_disable_projectiles
|
||||||
|
.disable_projectiles
|
||||||
|
INC $0BA0, X
|
||||||
|
.no_disable_projectiles
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
DrawBombInMenu:
|
||||||
|
JSL LoadBombCount16 : AND.w #$00FF : BEQ .noBombs
|
||||||
|
LDA SpecialWeapons : AND.w #$007F : CMP.w #$0001 : BNE .vanillaBombs
|
||||||
|
LDA.l SpecialWeaponLevel : AND.w #$00FF : BEQ .noBombs : STA $02
|
||||||
|
LDA.w #$FC81 : STA $04
|
||||||
|
BRA .done
|
||||||
|
.vanillaBombs
|
||||||
|
LDA.w #$0001 : STA $02
|
||||||
|
LDA.w #$F699 : STA $04
|
||||||
|
BRA .done
|
||||||
|
.noBombs
|
||||||
|
LDA.w #$0000 : STA $02
|
||||||
|
LDA.w #$F699 : STA $04
|
||||||
|
.done
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
DrawSwordInMenu:
|
||||||
|
LDA SpecialWeapons : AND.w #$007F : CMP.w #$0001 : BEQ .specialSword
|
||||||
|
CMP.w #$0003 : BEQ .specialSword
|
||||||
|
CMP.w #$0004 : BEQ .specialSword
|
||||||
|
CMP.w #$0005 : BEQ .specialSword
|
||||||
|
CMP.w #$0008 : BEQ .specialSword
|
||||||
|
LDA SwordEquipment : AND.w #$00FF : CMP.w #$00FF : BEQ .noSword
|
||||||
|
.hasSword
|
||||||
|
STA $02
|
||||||
|
LDA.w #$F859 : STA $04
|
||||||
|
RTL
|
||||||
|
.noSword
|
||||||
|
LDA.w #$0000 : STA $02
|
||||||
|
LDA.w #$F859 : STA $04
|
||||||
|
RTL
|
||||||
|
.specialSword
|
||||||
|
LDA SpecialWeaponLevel : AND.w #$00FF : STA $02
|
||||||
|
LDA.w #$FC51 : STA $04
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
DrawBombInYBox:
|
||||||
|
CPX.w #$0004 : BNE .done
|
||||||
|
LDA SpecialWeapons : AND.w #$007F : CMP.w #$0001 : BNE .vanilla
|
||||||
|
LDA SpecialWeaponLevel : AND.w #$00FF : CLC : ADC.w #$00BD : BRA .done
|
||||||
|
.vanilla
|
||||||
|
LDA.w #$0001
|
||||||
|
.done
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
BombIcon:
|
||||||
|
dw $207F, $207F, $3C88, $3C89, $2C88, $2C89, $2488, $2489, $2888, $2889,$2888, $2889
|
||||||
|
DrawBombOnHud:
|
||||||
|
PHB
|
||||||
|
LDA.w #$0149
|
||||||
|
LDX.w #$86B0
|
||||||
|
LDY.w #$C700
|
||||||
|
MVN $7E, $21
|
||||||
|
PLB
|
||||||
|
|
||||||
|
LDA.l SpecialWeapons : AND.w #$007F : CMP.w #$0001 : BNE .regularBombs
|
||||||
|
LDA.l SpecialWeaponLevel : AND.w #$00FF : ASL #2 : TAX
|
||||||
|
LDA.l BombIcon, X : STA.l $7EC71A
|
||||||
|
LDA.l BombIcon+2, X : STA.l $7EC71C
|
||||||
|
.regularBombs
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
BombSpriteColor:
|
||||||
|
db $04, $08, $04, $02, $0A, $0A
|
||||||
|
SetBombSpriteColor:
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BNE .normal
|
||||||
|
PHX
|
||||||
|
LDA.l SpecialWeaponLevel
|
||||||
|
TAX
|
||||||
|
LDA.l BombSpriteColor, X
|
||||||
|
STA $0B
|
||||||
|
PLX
|
||||||
|
RTL
|
||||||
|
.normal
|
||||||
|
LDA #$04 : STA $0B
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
StoreSwordDamage:
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP #$02 : BEQ +
|
||||||
|
LDA.l $06ED39, X : RTL
|
||||||
|
+
|
||||||
|
LDA #$05
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
BeeDamageClass:
|
||||||
|
db $FF
|
||||||
|
db $06, $00, $07, $08, $0A
|
||||||
|
db $0B, $0C, $0D, $0E, $0F
|
||||||
|
db $FF, $03, $FF, $FF, $FF
|
||||||
|
db $FF, $01, $01, $FF, $FF
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
CheckDetonateBomb:
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BEQ .detonate_bombs
|
||||||
|
CMP.b #$06 : BEQ .release_bee
|
||||||
|
CLC : RTL
|
||||||
|
.detonate_bombs
|
||||||
|
LDX.b #09
|
||||||
|
.check_ancilla
|
||||||
|
LDA.w $0C4A, X
|
||||||
|
CMP.b #$07
|
||||||
|
BNE .next_ancilla
|
||||||
|
LDA.b #03
|
||||||
|
STA.w $039F, X
|
||||||
|
.next_ancilla
|
||||||
|
DEX
|
||||||
|
BPL .check_ancilla
|
||||||
|
JMP .done
|
||||||
|
.release_bee
|
||||||
|
LDX.w $0202
|
||||||
|
LDA.l BeeDamageClass, X : CMP.b #$FF : BEQ .nope
|
||||||
|
JSL $1EDCC9
|
||||||
|
BMI .nope
|
||||||
|
LDX.w $0202
|
||||||
|
LDA.l BeeDamageClass, X
|
||||||
|
CMP.b #$06 : BNE .set_bee_class
|
||||||
|
LDA.l $7EF340 : CMP.b #$03 : !BGE .silver_arrows
|
||||||
|
LDA.b #$06
|
||||||
|
BRA .set_bee_class
|
||||||
|
.silver_arrows
|
||||||
|
LDA.b #$09
|
||||||
|
.set_bee_class
|
||||||
|
STA.w $0ED0, Y
|
||||||
|
BRA .done
|
||||||
|
.nope
|
||||||
|
LDA.b #$3C
|
||||||
|
STA.w $0CF8
|
||||||
|
JSL $0DBB67
|
||||||
|
ORA.w $0CF8
|
||||||
|
STA.w $012E
|
||||||
|
.done
|
||||||
|
SEC
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
SetBeeType:
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BEQ .bee_mode
|
||||||
|
LDX.w $0202
|
||||||
|
.check_bee_type
|
||||||
|
LDA.l $7EF33F, X
|
||||||
|
TAX
|
||||||
|
LDA.l $7EF35B, X
|
||||||
|
CMP.b #$08
|
||||||
|
BNE .regular_bee
|
||||||
|
LDA.b #$01
|
||||||
|
STA.w $0EB0, Y
|
||||||
|
.regular_bee
|
||||||
|
LDA.b #$01
|
||||||
|
STA.w $0ED0, Y
|
||||||
|
RTL
|
||||||
|
.bee_mode
|
||||||
|
LDX.w $0202
|
||||||
|
CPX.b #$10 : BEQ .check_bee_type
|
||||||
|
BRA .regular_bee
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
ArrghusBoing:
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BNE .done
|
||||||
|
LDA.w $0F60, X : AND.b #$BF : STA.w $0F60, X
|
||||||
|
.done
|
||||||
|
; what we wrote over
|
||||||
|
LDA.b #$03
|
||||||
|
STA.w $0D80, X
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
BeeCheckTarget:
|
||||||
|
CPY.w $0FA0
|
||||||
|
BEQ .unsuitable_target
|
||||||
|
|
||||||
|
LDA.w $0DD0,Y
|
||||||
|
CMP.b #$09
|
||||||
|
BCC .unsuitable_target
|
||||||
|
|
||||||
|
LDA.w $0F00,Y
|
||||||
|
BNE .unsuitable_target
|
||||||
|
|
||||||
|
; in bee-mode skip targets that the bee can't hurt
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BNE +
|
||||||
|
JSR BeeCheckDamage
|
||||||
|
CMP.b #$00 : BEQ .unsuitable_target
|
||||||
|
+
|
||||||
|
|
||||||
|
LDA.w $0E40,Y
|
||||||
|
BMI .potential_target
|
||||||
|
|
||||||
|
LDA.w $0F20,Y
|
||||||
|
CMP.w $0F20,X
|
||||||
|
BNE .unsuitable_target
|
||||||
|
|
||||||
|
LDA.w $0F60,Y
|
||||||
|
AND.b #$40
|
||||||
|
BEQ +
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BNE .unsuitable_target
|
||||||
|
; in bee mode, allow targetting anti-fairies, bunny beams, and keese
|
||||||
|
LDA.w $0E20,Y
|
||||||
|
CMP.b #$15 : BEQ + ; anti-fairy
|
||||||
|
CMP.b #$6F : BEQ + ; keese
|
||||||
|
CMP.b #$D1 : BEQ + ; bunny beam
|
||||||
|
BRA .unsuitable_target
|
||||||
|
+
|
||||||
|
|
||||||
|
LDA.w $0BA0,Y
|
||||||
|
BEQ .valid_target
|
||||||
|
BRA .unsuitable_target
|
||||||
|
|
||||||
|
.potential_target
|
||||||
|
LDA.w $0EB0,X
|
||||||
|
BEQ .unsuitable_target
|
||||||
|
|
||||||
|
LDA.w $0CD2,Y
|
||||||
|
AND.b #$40
|
||||||
|
BNE .valid_target
|
||||||
|
|
||||||
|
.unsuitable_target
|
||||||
|
CLC : RTL
|
||||||
|
|
||||||
|
.valid_target
|
||||||
|
SEC : RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
BeeCheckDamage:
|
||||||
|
PHX : PHP
|
||||||
|
REP #$20
|
||||||
|
LDA.w $0E20,Y : AND.w #$00FF
|
||||||
|
ASL #4
|
||||||
|
SEP #$20
|
||||||
|
ORA.w $0ED0,X
|
||||||
|
REP #$30
|
||||||
|
TAX
|
||||||
|
SEP #$20
|
||||||
|
JSL LookupDamageLevel
|
||||||
|
SEP #$10
|
||||||
|
PLP : PLX
|
||||||
|
RTS
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
CheckBugNet:
|
||||||
|
LDA.w $037A : AND.b #$10 : BEQ .done ; normal behavior if not bugnet
|
||||||
|
PHP ; we want to preserve the carry bit
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$08 : BNE .return_10 ; normal behavior if not bugnet mode
|
||||||
|
.bugnet_mode
|
||||||
|
LDA.w $0E20, X : CMP.b #$E3 : BEQ .return_10 ; normal behavior if fairy
|
||||||
|
CMP.b #$79 : BEQ .return_10 ; normal behavior if bee
|
||||||
|
CMP.b #$B2 : BEQ .return_10 ; normal behavior if bee
|
||||||
|
PLP : LDA.b #$00 : RTL
|
||||||
|
.return_10
|
||||||
|
PLP : LDA.b #$10
|
||||||
|
.done
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
SetHammerClass:
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$08 : BNE .normal ; normal behavior if not bugnet mode
|
||||||
|
LDA.w $037A : AND.b #$10 : BEQ .normal ; normal behavior if not bugnet
|
||||||
|
LDA 4, S : TAX ; get sprite index off of stack
|
||||||
|
LDA.w $0E20, X : CMP.b #$88 : BNE .not_mothula
|
||||||
|
LDA.l SpecialWeaponLevel
|
||||||
|
CMP #$04 : !BGE .fix_mothula
|
||||||
|
BRA .done
|
||||||
|
.fix_mothula
|
||||||
|
LDA #$03
|
||||||
|
BRA .done
|
||||||
|
.not_mothula
|
||||||
|
LDA.l SpecialWeaponLevel
|
||||||
|
.done
|
||||||
|
STA.w $0CF2
|
||||||
|
RTL
|
||||||
|
.normal
|
||||||
|
LDA.w $0301
|
||||||
|
AND.b #$0A
|
||||||
|
BEQ .not_hammer
|
||||||
|
LDA.b #$03
|
||||||
|
STA.w $0CF2
|
||||||
|
.not_hammer
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
35
sram.asm
35
sram.asm
@@ -168,13 +168,14 @@ CurrentGenericKeys: skip 1 ; Generic small keys
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Tracking & Indicators ($7EF38C - $7EF3F0)
|
; Tracking & Indicators ($7EF38C - $7EF3F0)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
InventoryTracking: skip 2 ; b r m p n s k f - - - - - - o q (bitfield)
|
InventoryTracking: skip 2 ; - - - - - - o q b r m p n s k f (bitfield)
|
||||||
; b = Blue Boomerang | r = Red Boomerang | m = Mushroom Current
|
; b = Blue Boomerang | r = Red Boomerang | m = Mushroom Current
|
||||||
; p = Magic Powder | n = Mushroom Past | s = Shovel
|
; p = Magic Powder | n = Mushroom Past | s = Shovel
|
||||||
; k = Inactive Flute | f = Active Flute | o = Any bomb acquired
|
; k = Inactive Flute | f = Active Flute | o = Any bomb acquired
|
||||||
; q = Quickswap locked
|
; q = Quickswap locked
|
||||||
BowTracking: skip 2 ; b s p - - - - - - - - - - - - - (bitfield)
|
BowTracking: skip 2 ; - - - - - - - - b s p f - - - - (bitfield)
|
||||||
; b = Bow | s = Silver Arrows Upgrade | p = Second Progressive Bow
|
; b = Any Bow | s = Silver Arrows Upgrade | p = Second Progressive Bow
|
||||||
|
; f = First progressive bow
|
||||||
; The front end writes two distinct progressive bow items. p
|
; The front end writes two distinct progressive bow items. p
|
||||||
; indicates whether the "second" has been found independent of
|
; indicates whether the "second" has been found independent of
|
||||||
; the first
|
; the first
|
||||||
@@ -182,7 +183,9 @@ ItemLimitCounts: skip 16 ; Keeps track of limited non-progressive items s
|
|||||||
; See: ItemSubstitutionRules in tables.asm
|
; See: ItemSubstitutionRules in tables.asm
|
||||||
; Right now this is only used for three items but extra space is
|
; Right now this is only used for three items but extra space is
|
||||||
; reserved
|
; reserved
|
||||||
skip 37 ; Unused
|
skip 35 ; Unused
|
||||||
|
SpecialWeaponLevel: skip 1 ; Keeps track of level of weapon in item modes
|
||||||
|
ItemOnB: skip 1 ; same table as $0202; $01 = arrows .. $14 = mirror
|
||||||
ProgressIndicator: skip 1 ; $00 = Pre-Uncle | $01 = Post-Uncle item | $02 = Zelda Rescued
|
ProgressIndicator: skip 1 ; $00 = Pre-Uncle | $01 = Post-Uncle item | $02 = Zelda Rescued
|
||||||
; $03 = Agahnim 1 defeated
|
; $03 = Agahnim 1 defeated
|
||||||
; $04 and above don't do anything. $00-$02 used in standard mode
|
; $04 and above don't do anything. $00-$02 used in standard mode
|
||||||
@@ -313,7 +316,8 @@ HeartPieceCounter: skip 1 ; Total Number of heartpieces collected (integer
|
|||||||
CrystalCounter: skip 1 ; Total Number of crystals collected (integer)
|
CrystalCounter: skip 1 ; Total Number of crystals collected (integer)
|
||||||
DungeonsCompleted: skip 2 ; Bitfield indicating whether a dungeon's prize has been collected.
|
DungeonsCompleted: skip 2 ; Bitfield indicating whether a dungeon's prize has been collected.
|
||||||
; This has the same shape as the dungeon item bitfields.
|
; This has the same shape as the dungeon item bitfields.
|
||||||
skip 44 ; Unused
|
BombsPlaced: skip 2 ; Total Number of bombs placed (16-bit integer)
|
||||||
|
skip 42 ; Unused
|
||||||
ServiceSequenceRx: ; Service sequence receive
|
ServiceSequenceRx: ; Service sequence receive
|
||||||
ServiceSequenceTx: ; Service sequence transmit
|
ServiceSequenceTx: ; Service sequence transmit
|
||||||
ServiceSequence: skip 8 ; Service request block. See servicerequest.asm
|
ServiceSequence: skip 8 ; Service request block. See servicerequest.asm
|
||||||
@@ -371,6 +375,26 @@ FileMarker: skip 1 ; $FF = Active save file | $00 = Inactive save f
|
|||||||
skip 13 ; Unused
|
skip 13 ; Unused
|
||||||
InverseChecksum: skip 2 ; Vanilla Inverse Checksum. Don't write unless computing checksum.
|
InverseChecksum: skip 2 ; Vanilla Inverse Checksum. Don't write unless computing checksum.
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; Temporary Effects ($7F50C0 - $7F50CF)
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
base $7F50C0
|
||||||
|
SwordModifier: skip 1
|
||||||
|
ShieldModifier: skip 1 ; (not implemented)
|
||||||
|
ArmorModifier: skip 1
|
||||||
|
MagicModifier: skip 1
|
||||||
|
LightConeModifier: skip 1
|
||||||
|
CuccoStormModifier: skip 1
|
||||||
|
OldManDashModifier: skip 1
|
||||||
|
IcePhysicsModifier: skip 1
|
||||||
|
InfiniteArrowsModifier: skip 1
|
||||||
|
InfiniteBombsModifier: skip 1
|
||||||
|
InfiniteMagicModifier: skip 1
|
||||||
|
InvertDPadModifier: skip 1
|
||||||
|
TemporaryOHKO: skip 1
|
||||||
|
SpriteSwapper: skip 1
|
||||||
|
BootsModifier: skip 1 ; (0=Off, 1=Always, 2=Never)
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Expanded SRAM ($7F6000 - $7F6FFF)
|
; Expanded SRAM ($7F6000 - $7F6FFF)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -527,6 +551,7 @@ endmacro
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
%assertSRAM(InventoryTracking, $7EF38C)
|
%assertSRAM(InventoryTracking, $7EF38C)
|
||||||
%assertSRAM(BowTracking, $7EF38E)
|
%assertSRAM(BowTracking, $7EF38E)
|
||||||
|
%assertSRAM(SpecialWeaponLevel, $7EF3C3)
|
||||||
%assertSRAM(ItemLimitCounts, $7EF390)
|
%assertSRAM(ItemLimitCounts, $7EF390)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
%assertSRAM(GameCounter, $7EF3FF)
|
%assertSRAM(GameCounter, $7EF3FF)
|
||||||
|
|||||||
14
stats.asm
14
stats.asm
@@ -184,6 +184,16 @@ IncrementChestTurnCounter:
|
|||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
IncrementBombsPlacedCounter:
|
||||||
|
PHA
|
||||||
|
LDA StatsLocked : BNE +
|
||||||
|
PHP : REP #$20
|
||||||
|
LDA BombsPlaced : INC : STA BombsPlaced
|
||||||
|
PLP
|
||||||
|
+
|
||||||
|
PLA
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
IncrementChestCounter:
|
IncrementChestCounter:
|
||||||
LDA.b #$01 : STA $02E9 ; thing we wrote over
|
LDA.b #$01 : STA $02E9 ; thing we wrote over
|
||||||
PHA
|
PHA
|
||||||
@@ -204,9 +214,9 @@ RTL
|
|||||||
DecrementItemCounter:
|
DecrementItemCounter:
|
||||||
PHA
|
PHA
|
||||||
LDA StatsLocked : BNE +
|
LDA StatsLocked : BNE +
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA TotalItemCounter : DEC : STA TotalItemCounter
|
LDA TotalItemCounter : DEC : STA TotalItemCounter
|
||||||
SEP #$20
|
SEP #$20
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
@@ -3,31 +3,67 @@
|
|||||||
;===================================================================================================
|
;===================================================================================================
|
||||||
table "creditscharmapbighi.txt"
|
table "creditscharmapbighi.txt"
|
||||||
YourSpriteCreditsHi:
|
YourSpriteCreditsHi:
|
||||||
db 2
|
db 2, 55, " " ; $238002
|
||||||
db 55
|
|
||||||
db " " ; $238002
|
|
||||||
|
|
||||||
table "creditscharmapbiglo.txt"
|
table "creditscharmapbiglo.txt"
|
||||||
YourSpriteCreditsLo:
|
YourSpriteCreditsLo:
|
||||||
db 2
|
db 2, 55, " " ; $238020
|
||||||
db 55
|
|
||||||
db " " ; $238020
|
|
||||||
|
|
||||||
|
table "creditscharmapbighi.txt"
|
||||||
CollectionRateHi:
|
CollectionRateHi:
|
||||||
db 2, 55
|
db 2, 55, "COLLECTION RATE /216" ; $23803E, "216" at $238057
|
||||||
db $5F, $6B, $68, $68, $61, $5F, $70, $65, $6B, $6A, $9F, $6E, $5D, $70, $61 ; "Collection Rate"
|
|
||||||
db $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F ; " " 8 spaces
|
|
||||||
print "Collection Rate High Start: ", pc
|
|
||||||
db $9F, $A2 ; " /"
|
|
||||||
db $55, $54, $59 ; 216
|
|
||||||
|
|
||||||
|
table "creditscharmapbiglo.txt"
|
||||||
CollectionRateLo:
|
CollectionRateLo:
|
||||||
db 2, 55
|
db 2, 55, "COLLECTION RATE /216" ; $23805C, "216" at $238075
|
||||||
db $85, $91, $8E, $8E, $87, $85, $96, $8B, $91, $90, $9F, $94, $83, $96, $87 ; "Collection Rate"
|
|
||||||
db $9F, $9F, $9F, $9F, $9F, $9F, $9F, $9F ; " " 8 spaces
|
table "creditscharmapbighi.txt"
|
||||||
print "Collection Rate Low Start: ", pc
|
FirstSwordStatsHi:
|
||||||
db $9F, $C2 ; " /"
|
db 2, 55, "FIRST SWORD " ; $23807A
|
||||||
db $7B, $7A, $7F ; 216
|
|
||||||
|
table "creditscharmapbiglo.txt"
|
||||||
|
FirstSwordStatsLo:
|
||||||
|
db 2, 55, "FIRST SWORD " ; $238098
|
||||||
|
|
||||||
|
table "creditscharmapbighi.txt"
|
||||||
|
SwordlessKillsHi:
|
||||||
|
db 2, 55, "SWORDLESS /13" ; $2380B6
|
||||||
|
|
||||||
|
table "creditscharmapbiglo.txt"
|
||||||
|
SwordlessKillsLo:
|
||||||
|
db 2, 55, "SWORDLESS /13" ; $2380D4
|
||||||
|
|
||||||
|
table "creditscharmapbighi.txt"
|
||||||
|
FighterSwordKillsHi:
|
||||||
|
db 2, 55, "FIGHTER'S SWORD /13" ; $2380F2
|
||||||
|
|
||||||
|
table "creditscharmapbiglo.txt"
|
||||||
|
FighterSwordKillsLo:
|
||||||
|
db 2, 55, "FIGHTER'S SWORD /13" ; $238110
|
||||||
|
|
||||||
|
table "creditscharmapbighi.txt"
|
||||||
|
MasterSwordKillsHi:
|
||||||
|
db 2, 55, "MASTER SWORD /13" ; $23812E
|
||||||
|
|
||||||
|
table "creditscharmapbiglo.txt"
|
||||||
|
MasterSwordKillsLo:
|
||||||
|
db 2, 55, "MASTER SWORD /13" ; $23814C
|
||||||
|
|
||||||
|
table "creditscharmapbighi.txt"
|
||||||
|
TemperedSwordKillsHi:
|
||||||
|
db 2, 55, "TEMPERED SWORD /13" ; $23816A
|
||||||
|
|
||||||
|
table "creditscharmapbiglo.txt"
|
||||||
|
TemperedSwordKillsLo:
|
||||||
|
db 2, 55, "TEMPERED SWORD /13" ; $238188
|
||||||
|
|
||||||
|
table "creditscharmapbighi.txt"
|
||||||
|
GoldSwordKillsHi:
|
||||||
|
db 2, 55, "GOLD SWORD /13" ; $2381A6
|
||||||
|
|
||||||
|
table "creditscharmapbiglo.txt"
|
||||||
|
GoldSwordKillsLo:
|
||||||
|
db 2, 55, "GOLD SWORD /13" ; $2381C4
|
||||||
|
|
||||||
;===================================================================================================
|
;===================================================================================================
|
||||||
|
|
||||||
@@ -475,11 +511,15 @@ CreditsLineBlank:
|
|||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%bigcredits("ACHY ARTHEAU TARTHORON")
|
%bigcredits("ACHY ARTHEAU")
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%bigcredits("GLAN PLAGUEDONE TWROXAS")
|
%bigcredits("GLAN TWROXAS")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("PLAGUEDONE TARTHORON")
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
%blankline()
|
%blankline()
|
||||||
@@ -537,7 +577,11 @@ CreditsLineBlank:
|
|||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%bigcredits("MICHAELK FOUTON BONTA")
|
%bigcredits("MICHAELK FOUTON")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
|
%bigcredits("BONTA EMOSARU")
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
@@ -577,12 +621,6 @@ CreditsLineBlank:
|
|||||||
%emptyline()
|
%emptyline()
|
||||||
%emptyline()
|
%emptyline()
|
||||||
%emptyline()
|
%emptyline()
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
%emptyline()
|
|
||||||
|
|
||||||
;===================================================================================================
|
;===================================================================================================
|
||||||
|
|
||||||
@@ -613,7 +651,8 @@ endif
|
|||||||
%blankline()
|
%blankline()
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%bigcreditsleft("FIRST SWORD")
|
%addarbline(FirstSwordStatsHi)
|
||||||
|
%addarbline(FirstSwordStatsLo)
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
@@ -636,23 +675,28 @@ endif
|
|||||||
%blankline()
|
%blankline()
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%bigcreditsleft("SWORDLESS /13")
|
%addarbline(SwordlessKillsHi)
|
||||||
|
%addarbline(SwordlessKillsLo)
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%bigcreditsleft("FIGHTER'S SWORD /13")
|
%addarbline(FighterSwordKillsHi)
|
||||||
|
%addarbline(FighterSwordKillsLo)
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%bigcreditsleft("MASTER SWORD /13")
|
%addarbline(MasterSwordKillsHi)
|
||||||
|
%addarbline(MasterSwordKillsLo)
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%bigcreditsleft("TEMPERED SWORD /13")
|
%addarbline(TemperedSwordKillsHi)
|
||||||
|
%addarbline(TemperedSwordKillsLo)
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
%bigcreditsleft("GOLD SWORD /13")
|
%addarbline(GoldSwordKillsHi)
|
||||||
|
%addarbline(GoldSwordKillsLo)
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
%blankline()
|
%blankline()
|
||||||
@@ -674,6 +718,10 @@ endif
|
|||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
|
|
||||||
|
%bigcreditsleft("BOMBS PLACED")
|
||||||
|
|
||||||
|
%blankline()
|
||||||
|
|
||||||
%bigcreditsleft("SAVE AND QUITS")
|
%bigcreditsleft("SAVE AND QUITS")
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
@@ -693,11 +741,6 @@ endif
|
|||||||
%bigcreditsleft("TOTAL LAG TIME")
|
%bigcreditsleft("TOTAL LAG TIME")
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
%blankline()
|
|
||||||
|
|
||||||
|
|
||||||
%blankline()
|
|
||||||
%blankline()
|
|
||||||
|
|
||||||
|
|
||||||
%blankline()
|
%blankline()
|
||||||
@@ -729,42 +772,3 @@ endif
|
|||||||
%emptyline()
|
%emptyline()
|
||||||
|
|
||||||
;---------------------------------------------------------------------------------------------------
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
!FIRST_SWORD_X = 19
|
|
||||||
!FIRST_SWORD_Y = 310
|
|
||||||
!PEGASUS_BOOTS_X = 19
|
|
||||||
!PEGASUS_BOOTS_Y = 313
|
|
||||||
!FLUTE_X = 19
|
|
||||||
!FLUTE_Y = 316
|
|
||||||
!MIRROR_X = 19
|
|
||||||
!MIRROR_Y = 319
|
|
||||||
!SWORDLESS_X = 23
|
|
||||||
!SWORDLESS_Y = 327
|
|
||||||
!FIGHTERS_SWORD_X = 23
|
|
||||||
!FIGHTERS_SWORD_Y = 330
|
|
||||||
!MASTER_SWORD_X = 23
|
|
||||||
!MASTER_SWORD_Y = 333
|
|
||||||
!TEMPERED_SWORD_X = 23
|
|
||||||
!TEMPERED_SWORD_Y = 336
|
|
||||||
!GOLD_SWORD_X = 23
|
|
||||||
!GOLD_SWORD_Y = 339
|
|
||||||
!DAMAGETAKEN_X = 26
|
|
||||||
!DAMAGETAKEN_Y = 346
|
|
||||||
!MAGICUSED_X = 26
|
|
||||||
!MAGICUSED_Y = 349
|
|
||||||
!BONKS_X = 26
|
|
||||||
!BONKS_Y = 352
|
|
||||||
!SAVE_AND_QUITS_X = 26
|
|
||||||
!SAVE_AND_QUITS_Y = 355
|
|
||||||
!DEATHS_X = 26
|
|
||||||
!DEATHS_Y = 358
|
|
||||||
!FAERIE_REVIVALS_X = 26
|
|
||||||
!FAERIE_REVIVALS_Y = 361
|
|
||||||
!TOTAL_MENU_TIME_X = 19
|
|
||||||
!TOTAL_MENU_TIME_Y = 364
|
|
||||||
!TOTAL_LAG_TIME_X = 19
|
|
||||||
!TOTAL_LAG_TIME_Y = 367
|
|
||||||
!COLLECTION_RATE_X = 22
|
|
||||||
!COLLECTION_RATE_Y = 380
|
|
||||||
!TOTAL_TIME_X = 19
|
|
||||||
!TOTAL_TIME_Y = 383
|
|
||||||
|
|||||||
@@ -1,10 +1,51 @@
|
|||||||
|
!FIRST_SWORD_X = 19
|
||||||
|
!FIRST_SWORD_Y = 310
|
||||||
|
!PEGASUS_BOOTS_X = 19
|
||||||
|
!PEGASUS_BOOTS_Y = 313
|
||||||
|
!FLUTE_X = 19
|
||||||
|
!FLUTE_Y = 316
|
||||||
|
!MIRROR_X = 19
|
||||||
|
!MIRROR_Y = 319
|
||||||
|
!SWORDLESS_X = 23
|
||||||
|
!SWORDLESS_Y = 327
|
||||||
|
!FIGHTERS_SWORD_X = 23
|
||||||
|
!FIGHTERS_SWORD_Y = 330
|
||||||
|
!MASTER_SWORD_X = 23
|
||||||
|
!MASTER_SWORD_Y = 333
|
||||||
|
!TEMPERED_SWORD_X = 23
|
||||||
|
!TEMPERED_SWORD_Y = 336
|
||||||
|
!GOLD_SWORD_X = 23
|
||||||
|
!GOLD_SWORD_Y = 339
|
||||||
|
!DAMAGETAKEN_X = 26
|
||||||
|
!DAMAGETAKEN_Y = 346
|
||||||
|
!MAGICUSED_X = 26
|
||||||
|
!MAGICUSED_Y = 349
|
||||||
|
!BONKS_X = 26
|
||||||
|
!BONKS_Y = 352
|
||||||
|
!BOMBS_X = 26
|
||||||
|
!BOMBS_Y = 355
|
||||||
|
!SAVE_AND_QUITS_X = 26
|
||||||
|
!SAVE_AND_QUITS_Y = 358
|
||||||
|
!DEATHS_X = 26
|
||||||
|
!DEATHS_Y = 361
|
||||||
|
!FAERIE_REVIVALS_X = 26
|
||||||
|
!FAERIE_REVIVALS_Y = 364
|
||||||
|
!TOTAL_MENU_TIME_X = 19
|
||||||
|
!TOTAL_MENU_TIME_Y = 367
|
||||||
|
!TOTAL_LAG_TIME_X = 19
|
||||||
|
!TOTAL_LAG_TIME_Y = 370
|
||||||
|
!COLLECTION_RATE_X = 22
|
||||||
|
!COLLECTION_RATE_Y = 380
|
||||||
|
!TOTAL_TIME_X = 19
|
||||||
|
!TOTAL_TIME_Y = 383
|
||||||
|
|
||||||
;(address, type, shiftRight, bits, digits, xPos, lineNumber)
|
;(address, type, shiftRight, bits, digits, xPos, lineNumber)
|
||||||
|
|
||||||
%AddStat(SwordTime, 1, 0, 32, 4, !FIRST_SWORD_X, !FIRST_SWORD_Y)
|
%AddStat(SwordTime, 1, 0, 32, 4, !FIRST_SWORD_X, !FIRST_SWORD_Y)
|
||||||
%AddStat(BootsTime, 1, 0, 32, 4, !PEGASUS_BOOTS_X, !PEGASUS_BOOTS_Y)
|
%AddStat(BootsTime, 1, 0, 32, 4, !PEGASUS_BOOTS_X, !PEGASUS_BOOTS_Y)
|
||||||
%AddStat(FluteTime, 1, 0, 32, 4, !FLUTE_X, !FLUTE_Y)
|
%AddStat(FluteTime, 1, 0, 32, 4, !FLUTE_X, !FLUTE_Y)
|
||||||
%AddStat(MirrorTime, 1, 0, 32, 4, !MIRROR_X, !MIRROR_Y)
|
%AddStat(MirrorTime, 1, 0, 32, 4, !MIRROR_X, !MIRROR_Y)
|
||||||
%AddStat(SwordlessBossKills, 0, 0, 08, 2, !SWORDLESS_X, !SWORDLESS_Y)
|
%AddStat(SwordlessBossKills, 0, 0, 04, 2, !SWORDLESS_X, !SWORDLESS_Y)
|
||||||
%AddStat(SwordBossKills, 0, 4, 04, 2, !FIGHTERS_SWORD_X, !FIGHTERS_SWORD_Y)
|
%AddStat(SwordBossKills, 0, 4, 04, 2, !FIGHTERS_SWORD_X, !FIGHTERS_SWORD_Y)
|
||||||
%AddStat(SwordBossKills, 0, 0, 04, 2, !MASTER_SWORD_X, !MASTER_SWORD_Y)
|
%AddStat(SwordBossKills, 0, 0, 04, 2, !MASTER_SWORD_X, !MASTER_SWORD_Y)
|
||||||
%AddStat(SwordBossKills+1, 0, 4, 04, 2, !TEMPERED_SWORD_X, !TEMPERED_SWORD_Y)
|
%AddStat(SwordBossKills+1, 0, 4, 04, 2, !TEMPERED_SWORD_X, !TEMPERED_SWORD_Y)
|
||||||
@@ -12,6 +53,7 @@
|
|||||||
%AddStat(DamageCounter, 0, 0, 16, 5, !DAMAGETAKEN_X, !DAMAGETAKEN_Y)
|
%AddStat(DamageCounter, 0, 0, 16, 5, !DAMAGETAKEN_X, !DAMAGETAKEN_Y)
|
||||||
%AddStat(MagicCounter, 0, 0, 16, 5, !MAGICUSED_X, !MAGICUSED_Y)
|
%AddStat(MagicCounter, 0, 0, 16, 5, !MAGICUSED_X, !MAGICUSED_Y)
|
||||||
%AddStat(BonkCounter, 0, 0, 08, 3, !BONKS_X, !BONKS_Y)
|
%AddStat(BonkCounter, 0, 0, 08, 3, !BONKS_X, !BONKS_Y)
|
||||||
|
%AddStat(BombsPlaced, 0, 0, 16, 4, !BOMBS_X, !BOMBS_Y)
|
||||||
%AddStat(SaveQuitCounter, 0, 0, 08, 2, !SAVE_AND_QUITS_X, !SAVE_AND_QUITS_Y)
|
%AddStat(SaveQuitCounter, 0, 0, 08, 2, !SAVE_AND_QUITS_X, !SAVE_AND_QUITS_Y)
|
||||||
%AddStat(DeathCounter, 0, 0, 08, 2, !DEATHS_X, !DEATHS_Y)
|
%AddStat(DeathCounter, 0, 0, 08, 2, !DEATHS_X, !DEATHS_Y)
|
||||||
%AddStat(FaerieRevivalCounter, 0, 0, 08, 3, !FAERIE_REVIVALS_X, !FAERIE_REVIVALS_Y)
|
%AddStat(FaerieRevivalCounter, 0, 0, 08, 3, !FAERIE_REVIVALS_X, !FAERIE_REVIVALS_Y)
|
||||||
|
|||||||
@@ -39,25 +39,34 @@ LoadSwordForDamage:
|
|||||||
JSR.w LoadModifiedSwordLevel ; load normal sword value
|
JSR.w LoadModifiedSwordLevel ; load normal sword value
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
macro LookupDamageSubclass(table_address)
|
||||||
|
PHP
|
||||||
|
REP #$20 ; set 16-bit accumulator
|
||||||
|
TXA : LSR : TAX : BCS +
|
||||||
|
PLP
|
||||||
|
LDA.l <table_address>, X
|
||||||
|
LSR #4
|
||||||
|
BRA ++
|
||||||
|
+
|
||||||
|
PLP
|
||||||
|
LDA.l <table_address>, X
|
||||||
|
AND.b #$0F
|
||||||
|
++
|
||||||
|
endmacro
|
||||||
|
;================================================================================
|
||||||
;!StalfosBombDamage = "$7F509D"
|
;!StalfosBombDamage = "$7F509D"
|
||||||
LookupDamageLevel:
|
LookupDamageLevel:
|
||||||
CPX.w #$0918 : BNE +
|
CPX.w #$0918 : BNE +
|
||||||
LDA.l !StalfosBombDamage
|
LDA.l !StalfosBombDamage
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
PHP
|
LDA SpecialWeapons : AND.b #$7F : CMP.b #$02 : BEQ .pseudo_table
|
||||||
REP #$20 ; set 16-bit accumulator
|
LDA SpecialWeapons : AND.b #$80 : BNE .bomb_table
|
||||||
TXA : LSR : TAX : BCS .lower
|
%LookupDamageSubclass(Damage_Table) : RTL
|
||||||
.upper
|
.bomb_table
|
||||||
PLP
|
%LookupDamageSubclass(Damage_Table_Bombs) : RTL
|
||||||
LDA.l Damage_Table, X
|
.pseudo_table
|
||||||
LSR #4
|
%LookupDamageSubclass(Damage_Table_Pseudo) : RTL
|
||||||
RTL
|
|
||||||
.lower
|
|
||||||
PLP
|
|
||||||
LDA.l Damage_Table, X
|
|
||||||
AND.b #$0F
|
|
||||||
RTL
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; $7F50C0 - Sword Modifier
|
; $7F50C0 - Sword Modifier
|
||||||
LoadModifiedSwordLevel: ; returns short
|
LoadModifiedSwordLevel: ; returns short
|
||||||
@@ -96,29 +105,40 @@ LoadModifiedMagicLevel:
|
|||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; $7E0348 - Ice Value
|
; $7E0348 - Ice Value
|
||||||
; $7F50C7 - Ice Modifier
|
; $7F50C7 - Temporary Ice Modifier
|
||||||
|
; $30802D - Permanent Ice Modifier ($01 bit)
|
||||||
|
LoadModifiedIceFloorValue:
|
||||||
|
LDA $A0 : CMP #$91 : BEQ + : CMP #$92 : BEQ + : CMP #$93 : BEQ + ; mire basement currently broken - not sure why
|
||||||
|
LDA $5D : CMP #$01 : BEQ + : CMP #$17 : BEQ + : CMP #$1C : BEQ +
|
||||||
|
LDA $5E : CMP #$02 : BEQ +
|
||||||
|
LDA $5B : BNE +
|
||||||
|
LDA.l $30802D : BIT #$01 : BEQ ++
|
||||||
|
LDA $A0 : CMP #$16 : BEQ ++ ; swamp supertile with current -- fine for temporary physics but impossible without boots for permanent
|
||||||
|
LDA.w $0348 : ORA $7F50C7 : ORA #$10 : RTS
|
||||||
|
++ : LDA.w $0348 : ORA $7F50C7 : RTS
|
||||||
|
+ : LDA.w $0348
|
||||||
|
RTS
|
||||||
LoadModifiedIceFloorValue_a11:
|
LoadModifiedIceFloorValue_a11:
|
||||||
LDA $A0 : CMP #$91 : BEQ + : CMP #$92 : BEQ + : CMP #$93 : BEQ + ; mire basement currently broken - not sure why
|
JSR LoadModifiedIceFloorValue : AND.b #$11 : RTL
|
||||||
LDA $5D : CMP #$01 : BEQ + : CMP #$17 : BEQ + : CMP #$1C : BEQ +
|
|
||||||
LDA $5E : CMP #$02 : BEQ +
|
|
||||||
LDA $5B : BNE +
|
|
||||||
LDA.w $0348 : ORA $7F50C7 : AND.b #$11 : RTL
|
|
||||||
+ : LDA.w $0348 : AND.b #$11
|
|
||||||
RTL
|
|
||||||
LoadModifiedIceFloorValue_a01:
|
LoadModifiedIceFloorValue_a01:
|
||||||
LDA $A0 : CMP #$91 : BEQ + : CMP #$92 : BEQ + : CMP #$93 : BEQ + ; mire basement currently broken - not sure why
|
JSR LoadModifiedIceFloorValue : AND.b #$01 : RTL
|
||||||
LDA $5D : CMP #$01 : BEQ + : CMP #$17 : BEQ + : CMP #$1C : BEQ +
|
|
||||||
LDA $5E : CMP #$02 : BEQ +
|
|
||||||
LDA $5B : BNE +
|
|
||||||
LDA.w $0348 : ORA $7F50C7 : AND.b #$01 : RTL
|
|
||||||
+ : LDA.w $0348 : AND.b #$01
|
|
||||||
RTL
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
CheckTabletSword:
|
CheckTabletSword:
|
||||||
LDA.l AllowHammerTablets : BEQ +
|
LDA.l AllowHammerTablets : BEQ +
|
||||||
LDA HammerEquipment : BEQ + ; check for hammer
|
LDA HammerEquipment : BNE .allow ; check for hammer
|
||||||
LDA.b #$02 : RTL
|
|
||||||
+
|
+
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BEQ .check_special
|
||||||
|
CMP.b #$03 : BEQ .check_special
|
||||||
|
CMP.b #$04 : BEQ .check_special
|
||||||
|
CMP.b #$05 : BEQ .check_special
|
||||||
|
CMP.b #$06 : BEQ .allow
|
||||||
|
CMP.b #$08 : BEQ .check_special
|
||||||
|
BRA .normal
|
||||||
|
.allow
|
||||||
|
LDA.b #$02 : RTL
|
||||||
|
.check_special
|
||||||
|
LDA SpecialWeaponLevel : CMP #$02 : !BGE .allow ; check for master bombs
|
||||||
|
.normal
|
||||||
LDA SwordEquipment ; get actual sword value
|
LDA SwordEquipment ; get actual sword value
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -126,15 +146,27 @@ GetSwordLevelForEvilBarrier:
|
|||||||
LDA.l AllowHammerEvilBarrierWithFighterSword : BEQ +
|
LDA.l AllowHammerEvilBarrierWithFighterSword : BEQ +
|
||||||
LDA #$FF : RTL
|
LDA #$FF : RTL
|
||||||
+
|
+
|
||||||
LDA SwordEquipment
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$08 : BEQ +
|
||||||
RTL
|
LDA.l SwordEquipment : RTL
|
||||||
|
+
|
||||||
|
LDA.l SpecialWeaponLevel : RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
CheckGanonHammerDamage:
|
CheckGanonHammerDamage:
|
||||||
LDA.l HammerableGanon : BEQ +
|
LDA.l HammerableGanon : BEQ +
|
||||||
LDA $0E20, X : CMP.b #$D8 ; original behavior except ganon
|
LDA $0E20, X : CMP.b #$D8 ; original behavior except ganon
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
|
LDA.l GanonVulnerabilityItem : CMP.b #$0C : BEQ +
|
||||||
LDA $0E20, X : CMP.b #$D6 ; original behavior
|
LDA $0E20, X : CMP.b #$D6 ; original behavior
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
LDA $0E20, X : CMP.b #$D8 : BCC +
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
CMP.b #$D6 : BNE +
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
CLC
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
GetSmithSword:
|
GetSmithSword:
|
||||||
@@ -161,7 +193,7 @@ GetSmithSword:
|
|||||||
|
|
||||||
REP #$20 : LDA CurrentRupees : !SUB.w #$000A : STA CurrentRupees : SEP #$20 ; Take 10 rupees
|
REP #$20 : LDA CurrentRupees : !SUB.w #$000A : STA CurrentRupees : SEP #$20 ; Take 10 rupees
|
||||||
JSL ItemSet_SmithSword
|
JSL ItemSet_SmithSword
|
||||||
|
|
||||||
.done
|
.done
|
||||||
JML.l Smithy_AlreadyGotSword
|
JML.l Smithy_AlreadyGotSword
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
76
tables.asm
76
tables.asm
@@ -98,7 +98,44 @@ 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- 0x180030 (Unused)
|
; 0x18002B (Unused)
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $30802C ; PC 0x18002C
|
||||||
|
AllowedItemOnB:
|
||||||
|
db #$00
|
||||||
|
; $00 = None (default)
|
||||||
|
; $01 - $20 = Only selected item
|
||||||
|
; $FF = Any valid
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $30802D ; PC 0x18002D
|
||||||
|
ChallengeModes:
|
||||||
|
; ---- ---i
|
||||||
|
; i: Permanent Ice Physics
|
||||||
|
db #$00 ; #$00 = Default behavior;
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $30802E ; PC 0x18002E
|
||||||
|
GanonVulnerabilityItem:
|
||||||
|
db #$00 ; #$00 = Default behavior (silver arrows)
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $30802F ; PC 0x18002F
|
||||||
|
SpecialWeapons:
|
||||||
|
db #$00
|
||||||
|
; s - - - m m m m (bitfield)
|
||||||
|
; s - only swords damage can hurt enemies
|
||||||
|
; m - special weapon mode
|
||||||
|
; $00 = Off (default)
|
||||||
|
; $01 = Bomb mode
|
||||||
|
; $02 = Pseudosword
|
||||||
|
; $03 = Byrna mode
|
||||||
|
; $04 = Somaria mode
|
||||||
|
; $05 = Canes mode
|
||||||
|
; $06 = Bee mode
|
||||||
|
; $07 = Unused
|
||||||
|
; $08 = Bugnet mode
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $308030 ; PC 0x180030
|
||||||
|
EnableSRAMTrace:
|
||||||
|
db #$00 ; #$00 = Off (default) - #$01 = On
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $308031 ; PC 0x180031
|
org $308031 ; PC 0x180031
|
||||||
EnableEasterEggs:
|
EnableEasterEggs:
|
||||||
@@ -214,10 +251,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:
|
||||||
@@ -233,7 +273,7 @@ db #$01 ; #$00 = Off - #$01 = On (default)
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $308050 ; PC 0x180050 - 0x18005D
|
org $308050 ; PC 0x180050 - 0x18005D
|
||||||
CrystalPendantFlags_2:
|
CrystalPendantFlags_2:
|
||||||
db $02 ; Ganons Tower - because 5D is not available right now - sewers doesn't get one
|
db $02 ; Ganons Tower - because 5D is not available right now - sewers doesn't get one
|
||||||
db $04 ; Hyrule Castle
|
db $04 ; Hyrule Castle
|
||||||
db $00 ; Eastern Palace
|
db $00 ; Eastern Palace
|
||||||
db $00 ; Desert Palace
|
db $00 ; Desert Palace
|
||||||
@@ -241,7 +281,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
|
||||||
@@ -384,8 +424,6 @@ org $30808F ; PC 0x18008F
|
|||||||
SwapAgaGanonsTower:
|
SwapAgaGanonsTower:
|
||||||
db $00 ; #$00 = Off (default) - #$01 = On
|
db $00 ; #$00 = Off (default) - #$01 = On
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; 0x18008F (unused)
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $308090 ; PC 0x180090 - 0x180097
|
org $308090 ; PC 0x180090 - 0x180097
|
||||||
ProgressiveSwordLimit:
|
ProgressiveSwordLimit:
|
||||||
db #$04 ; #$04 - 4 Swords (default)
|
db #$04 ; #$04 - 4 Swords (default)
|
||||||
@@ -426,7 +464,11 @@ org $30809D
|
|||||||
DungeonMapIcons:
|
DungeonMapIcons:
|
||||||
db $01
|
db $01
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; 0x18009E - 0x18009F (unused)
|
; 0x18009E (unused)
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $30809F ; PC 0x18009F
|
||||||
|
SeededRNG:
|
||||||
|
db $01 ; #$00 = Off - #$01 = Seeded RNG (default for rando)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $3080A0 ; PC 0x1800A0 - 0x1800A4
|
org $3080A0 ; PC 0x1800A0 - 0x1800A4
|
||||||
Bugfix_MirrorlessSQToLW:
|
Bugfix_MirrorlessSQToLW:
|
||||||
@@ -644,7 +686,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
|
||||||
@@ -652,7 +694,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
|
||||||
@@ -1404,6 +1446,16 @@ 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 - Bee Trap
|
||||||
|
;B1 - Apples
|
||||||
|
;B2 - Fairy
|
||||||
|
;B3 - Chicken
|
||||||
|
;B4 - Big Magic
|
||||||
|
;B5 - 5 Arrows
|
||||||
|
;C0 - Progressive Bomb
|
||||||
|
;C1 - Progressive Cane
|
||||||
|
;C2 - Progressive Bug Net
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;;Residual Portal
|
;;Residual Portal
|
||||||
;org $0283E0 ; PC 0x103E0 (Bank02.asm:816) (BNE)
|
;org $0283E0 ; PC 0x103E0 (Bank02.asm:816) (BNE)
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
; Challenge Timer
|
; Challenge Timer
|
||||||
;================================================================================
|
;================================================================================
|
||||||
!Temp = "$7F5020"
|
!Temp = "$7F5020"
|
||||||
!TemporaryOHKO = "$7F50CC"
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!CLOCK_HOURS = "$7F5080" ; $7F5080 - $7F5083 - Clock Hours
|
!CLOCK_HOURS = "$7F5080" ; $7F5080 - $7F5083 - Clock Hours
|
||||||
!CLOCK_MINUTES = "$7F5084" ; $7F5084 - $7F5087 - Clock Minutes
|
!CLOCK_MINUTES = "$7F5084" ; $7F5084 - $7F5087 - Clock Minutes
|
||||||
@@ -176,7 +175,7 @@ DrawChallengeTimer:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OHKOTimer:
|
OHKOTimer:
|
||||||
LDA !TemporaryOHKO : BNE .kill
|
LDA TemporaryOHKO : BNE .kill
|
||||||
LDA.l TimeoutBehavior : CMP #$02 : BNE +
|
LDA.l TimeoutBehavior : CMP #$02 : BNE +
|
||||||
LDA !Status : AND.b #$02 : BEQ +
|
LDA !Status : AND.b #$02 : BEQ +
|
||||||
.kill
|
.kill
|
||||||
|
|||||||
@@ -107,19 +107,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
|
||||||
|
|
||||||
@@ -161,8 +161,10 @@ RTL
|
|||||||
db $3B ; Big Magic
|
db $3B ; Big Magic
|
||||||
db $4A ; Good Bee
|
db $4A ; Good Bee
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
||||||
|
db $13 ; Bomb Upgrade
|
||||||
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Unused
|
db $07 ; Cane Upgrade
|
||||||
|
db $27 ; Bug Net Upgrade
|
||||||
|
db $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 ; Reserved
|
db $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49, $49 ; Reserved
|
||||||
@@ -195,7 +197,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 #$F6 : !BGE .specialHandling
|
||||||
RTL
|
RTL
|
||||||
.specialHandling
|
.specialHandling
|
||||||
CMP.b #$FD : BNE ++ ; Progressive Sword
|
CMP.b #$FD : BNE ++ ; Progressive Sword
|
||||||
@@ -245,6 +247,16 @@ RTL
|
|||||||
LDA.b #$08 : RTL
|
LDA.b #$08 : RTL
|
||||||
+ ; Any Bow
|
+ ; Any Bow
|
||||||
LDA.b #$02 : RTL
|
LDA.b #$02 : RTL
|
||||||
|
++ : CMP.b #$F7 : BNE ++ ; Progressive Bombs
|
||||||
|
LDA SpecialWeaponLevel
|
||||||
|
CMP.b #$00 : BNE + ; No Bombs
|
||||||
|
LDA.b #$08 : RTL
|
||||||
|
+ : CMP.b #$01 : BNE + ; L1 Bombs
|
||||||
|
LDA.b #$04 : RTL
|
||||||
|
+ : CMP.b #$02 : BNE + ; L2 Bombs
|
||||||
|
LDA.b #$02 : RTL
|
||||||
|
+ ; Everything Else
|
||||||
|
LDA.b #$0A : RTL
|
||||||
++ : CMP.b #$FA : BNE ++ ; RNG Item (Single)
|
++ : CMP.b #$FA : BNE ++ ; RNG Item (Single)
|
||||||
JSL.l GetRNGItemSingle : JMP GetSpritePalette
|
JSL.l GetRNGItemSingle : JMP GetSpritePalette
|
||||||
++ : CMP.b #$FB : BNE ++ ; RNG Item (Multi)
|
++ : CMP.b #$FB : BNE ++ ; RNG Item (Multi)
|
||||||
@@ -297,7 +309,10 @@ RTL
|
|||||||
db $08 ; Big Magic
|
db $08 ; Big Magic
|
||||||
db $04 ; Good Bee
|
db $04 ; Good Bee
|
||||||
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
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 $F7 ; Bomb Upgrade
|
||||||
|
db $0A ; Cane Upgrade
|
||||||
|
db $02 ; Bug Net Upgrade
|
||||||
|
db $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
|
db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused
|
||||||
@@ -352,12 +367,12 @@ IsNarrowSprite:
|
|||||||
++ CMP.b #$63 : BNE ++ ; RNG Item (Multi)
|
++ CMP.b #$63 : BNE ++ ; RNG Item (Multi)
|
||||||
JSL.l GetRNGItemMulti
|
JSL.l GetRNGItemMulti
|
||||||
++ CMP.b #$64 : BEQ + ; Progressive Bow
|
++ CMP.b #$64 : BEQ + ; Progressive Bow
|
||||||
CMP.b #$65 : BNE .continue ; Progressive Bow (alt)
|
CMP.b #$65 : BNE .continue ; Progressive Bow (alt)
|
||||||
+ : LDA BowEquipment : INC : LSR
|
+ : LDA BowEquipment : INC : LSR
|
||||||
CMP.l ProgressiveBowLimit : !BLT +
|
CMP.l ProgressiveBowLimit : !BLT +
|
||||||
LDA.l ProgressiveBowReplacement
|
LDA.l ProgressiveBowReplacement
|
||||||
JSL.l IsNarrowSprite
|
JSL.l IsNarrowSprite
|
||||||
JMP .done
|
JMP .done
|
||||||
.continue
|
.continue
|
||||||
;--------
|
;--------
|
||||||
|
|
||||||
@@ -387,7 +402,7 @@ RTL
|
|||||||
db $15, $18, $24, $2A, $34, $35, $36, $42
|
db $15, $18, $24, $2A, $34, $35, $36, $42
|
||||||
db $43, $45, $59, $A0, $A1, $A2, $A3, $A4
|
db $43, $45, $59, $A0, $A1, $A2, $A3, $A4
|
||||||
db $A5, $A6, $A7, $A8, $A9, $AA, $AB, $AC
|
db $A5, $A6, $A7, $A8, $A9, $AA, $AB, $AC
|
||||||
db $AD, $AE, $AF, $B4, $B5
|
db $AD, $AE, $AF, $B4, $B5, $C1
|
||||||
.smallSprites_end
|
.smallSprites_end
|
||||||
}
|
}
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -569,8 +584,8 @@ LoadModifiedTileBufferAddress:
|
|||||||
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
|
||||||
@@ -582,7 +597,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
|
||||||
@@ -597,11 +612,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
|
||||||
|
|||||||
141
variable_ganon_vulnerability.asm
Normal file
141
variable_ganon_vulnerability.asm
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
!ANCILLA_DAMAGE = "$06EC84"
|
||||||
|
; start with X = sprite index, A = ancilla type index
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Ganon_CheckAncillaVulnerability:
|
||||||
|
PHA
|
||||||
|
LDA $0EE0, X : BNE .not_vulnerable_pla
|
||||||
|
PLA
|
||||||
|
PHX : PHA
|
||||||
|
LDA.l GanonVulnerabilityItem
|
||||||
|
TAX : PLA
|
||||||
|
CMP.l Ganon_CheckByAncilla, X : BNE +
|
||||||
|
PLX : BRA .vulnerable
|
||||||
|
+
|
||||||
|
PLX : PHA
|
||||||
|
LDA.l GanonVulnerabilityItem
|
||||||
|
CMP #$01 : BEQ .silver_arrows
|
||||||
|
CMP #$11 : BEQ .somaria
|
||||||
|
BRA .not_vulnerable_pla
|
||||||
|
.silver_arrows
|
||||||
|
PLA : CMP #$09 : BNE .not_vulnerable
|
||||||
|
LDA $7EF340 : CMP.b #$03 : !BGE +
|
||||||
|
LDA #$09 : BRA .not_vulnerable
|
||||||
|
+
|
||||||
|
BRA .vulnerable
|
||||||
|
.hammer
|
||||||
|
BRA .not_vulnerable_pla ; NYI
|
||||||
|
.golden_bee
|
||||||
|
BRA .not_vulnerable_pla ; NYI
|
||||||
|
.somaria
|
||||||
|
PLA : CMP #$01 : BEQ .vulnerable
|
||||||
|
CMP #$2C : BEQ .vulnerable
|
||||||
|
BRA .vulnerable
|
||||||
|
.vulnerable
|
||||||
|
PHX
|
||||||
|
LDA.l GanonVulnerabilityItem
|
||||||
|
TAX
|
||||||
|
LDA.l Ganon_IFrameDuration, X
|
||||||
|
PLX
|
||||||
|
STA $0EE0, X ; give the poor pig some iframes
|
||||||
|
LDA #$20 : STA $0F10, X
|
||||||
|
LDA #$09
|
||||||
|
RTL
|
||||||
|
.not_vulnerable_pla
|
||||||
|
PLA
|
||||||
|
.not_vulnerable
|
||||||
|
PHX : TAX
|
||||||
|
LDA.l !ANCILLA_DAMAGE, X
|
||||||
|
PLX
|
||||||
|
RTL
|
||||||
|
; end with X = sprite index, A = damage class
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
!ANCILLA_CHECK_SPRITE_DAMAGE_PRESET_CLASS = "$06ECE6"
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Ganon_CheckPowderVulnerability: ; we know it's powder
|
||||||
|
LDA.l GanonVulnerabilityItem : CMP #$05 : BNE .normal ; ganon not vulnerable to powder
|
||||||
|
LDA $0E20, X : CMP #$D7 : BNE .normal ; not stunned ganon
|
||||||
|
LDA $0EE0, X : BNE .normal ; ganon has iframes
|
||||||
|
LDA.l Ganon_IFrameDuration+$05
|
||||||
|
STA $0EE0, X ; give the poor pig some iframes
|
||||||
|
LDA #$20 : STA $0F10, X
|
||||||
|
LDA #$09
|
||||||
|
BRA .done
|
||||||
|
.normal
|
||||||
|
LDA.b #$0A
|
||||||
|
.done
|
||||||
|
JSL.l !ANCILLA_CHECK_SPRITE_DAMAGE_PRESET_CLASS
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Ganon_CheckBeeVulnerability: ; we know it's a bee
|
||||||
|
; X is bee sprite index
|
||||||
|
; Y is target sprite index
|
||||||
|
LDA.l GanonVulnerabilityItem : CMP #$10 : BNE .normal ; ganon not vulnerable to bee
|
||||||
|
LDA $0E20, Y : CMP #$D7 : BNE .normal ; not stunned ganon
|
||||||
|
LDA $0EE0, Y : BNE .normal ; ganon has iframes
|
||||||
|
LDA.l Ganon_IFrameDuration+$10
|
||||||
|
STA $0EE0, Y ; give the poor pig some iframes
|
||||||
|
LDA #$20 : STA $0F10, Y
|
||||||
|
LDA #$09
|
||||||
|
BRA .done
|
||||||
|
.normal
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BNE .regular_bee
|
||||||
|
LDA.w $0ED0, X
|
||||||
|
BRA .done
|
||||||
|
.regular_bee
|
||||||
|
LDA.b #$01
|
||||||
|
.done
|
||||||
|
TYX
|
||||||
|
JSL.l !ANCILLA_CHECK_SPRITE_DAMAGE_PRESET_CLASS
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Ganon_CheckInvincible:
|
||||||
|
LDA $04C5 : CMP.b #$02 : BEQ .not_transparent
|
||||||
|
LDA $0E20, X : CMP #$D7 : BNE .transparent ; non-stunned ganon
|
||||||
|
LDA $0301 : AND.b #$0A : BEQ .transparent ; normal behavior if not hammer
|
||||||
|
LDA.l GanonVulnerabilityItem : CMP #$0C : BNE .transparent ; ganon not vulnerable to hammer
|
||||||
|
.not_transparent
|
||||||
|
LDA #$00 : RTL
|
||||||
|
.transparent
|
||||||
|
LDA #$01 : RTL
|
||||||
|
; return non-zero A if ganon should be invincible
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Ganon_CheckHammerVulnerability: ; we know it's hammer
|
||||||
|
LDA.l GanonVulnerabilityItem : CMP #$0C : BNE .normal ; ganon not vulnerable to hammer
|
||||||
|
LDA $0E20, X : CMP #$D7 : BNE .normal ; not stunned ganon
|
||||||
|
LDA $0EE0, X : BNE .normal ; ganon has iframes
|
||||||
|
LDA.l Ganon_IFrameDuration+$0C
|
||||||
|
STA $0EE0, X ; give the poor pig some iframes
|
||||||
|
LDA #$20 : STA $0F10, X
|
||||||
|
LDA #$09 : STA $0CF2 ; set damage class to silver
|
||||||
|
SEC : RTL
|
||||||
|
.normal
|
||||||
|
CLC : RTL
|
||||||
|
; return carry set bit if stunned Ganon and Ganon vulnerable to hammer
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
CheckBeeBoss:
|
||||||
|
; Y is sprite index
|
||||||
|
LDA.l SpecialWeapons : AND.b #$7F : CMP #$06 : BNE .not_bee_mode
|
||||||
|
LDA #$00 : RTL
|
||||||
|
.not_bee_mode
|
||||||
|
LDA.l GanonVulnerabilityItem : CMP #$10 : BNE .normal ; ganon not vulnerable to bee
|
||||||
|
LDA $0E20, Y : CMP #$D7 : BNE .normal ; not stunned ganon
|
||||||
|
LDA #$00 : RTL
|
||||||
|
.normal
|
||||||
|
LDA $0B6B, Y : AND.b #$02
|
||||||
|
RTL
|
||||||
|
; return non-zero A if entity is a boss (and bee should not attack)
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Ganon_CheckByAncilla:
|
||||||
|
db #$00 ; default behavior--we shouldn't be checking the table here anyway
|
||||||
|
db #$00, #$05, #$1F, #$07, #$00
|
||||||
|
db #$02, #$0B, #$19, #$18, #$1C
|
||||||
|
db #$00, #$00, #$00, #$00, #$00
|
||||||
|
db #$00, #$00, #$31, #$00, #$00
|
||||||
|
Ganon_IFrameDuration:
|
||||||
|
db #$00 ; default behavior--we shouldn't be here anyway
|
||||||
|
db #$00, #$00, #$00, #$34, #$00
|
||||||
|
db #$00, #$00, #$00, #$00, #$00
|
||||||
|
db #$00, #$00, #$00, #$00, #$00
|
||||||
|
db #$00, #$00, #$00, #$00, #$00
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
10
zelda.asm
10
zelda.asm
@@ -9,11 +9,11 @@ SpawnZelda:
|
|||||||
+ RTL
|
+ RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
EndRainState:
|
EndRainState:
|
||||||
LDA.l InitProgressIndicator : BIT.b #$80 : BNE + ; check for instant post-aga
|
LDA.l InitProgressIndicator : BIT.b #$80 : BNE + ; check for instant post-aga
|
||||||
LDA.b #$02 : STA.l ProgressIndicator
|
LDA.b #$02 : STA.l ProgressIndicator
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA.b #$03 : STA.l ProgressIndicator
|
LDA.b #$03 : STA.l ProgressIndicator
|
||||||
LDA.l InitLumberjackOW : STA.l OverworldEventDataWRAM+$02
|
LDA.l InitLumberjackOW : STA.l OverworldEventDataWRAM+$02
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user