From 43515851c1e930de21e64a6e59776e28fa529589 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Sun, 7 Jun 2026 21:35:34 -0500 Subject: [PATCH 1/5] orange potion --- LTTP_RND_GeneralBugfixes.asm | 1 + data/c2e3e.bin | Bin 2048 -> 2048 bytes data/c2e3e.gfx | Bin 1545 -> 1555 bytes data/customitems.4bpp | Bin 5120 -> 5120 bytes data/newitems.pal | Bin 768 -> 768 bytes events.asm | 72 ++++++++++++++++++----------------- fileselect.asm | 7 +++- gk/data/item_mapping.asm | 2 +- gk/data/junk_items.asm | 2 +- gk/orange_potion.asm | 34 +++++++++++++++++ hooks.asm | 16 ++++++++ itemdatatables.asm | 12 +++--- newitems.asm | 2 +- shopkeeper.asm | 1 + 14 files changed, 105 insertions(+), 44 deletions(-) create mode 100644 gk/orange_potion.asm diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 5d20f34..68f0030 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -206,6 +206,7 @@ warnpc $A38000 org $B98000 incsrc gk/crystalswitchbook.asm +incsrc gk/orange_potion.asm incsrc gk/mimicdash.asm incsrc gk/gloom.asm incsrc gk/special_weapons.asm diff --git a/data/c2e3e.bin b/data/c2e3e.bin index f6b100cea1c09cebbeb0f8d56e795e357956f662..2471c19d40b639cfec380dd88095b833d515c690 100644 GIT binary patch delta 28 kcmZn=Xb{+Nfr(%G`TqFt^55$Z)_<=T|NnpUeI`X#0Km8n;{X5v delta 16 XcmZn=Xb{+NfoXCBlj!EBOwz0XGam(q diff --git a/data/c2e3e.gfx b/data/c2e3e.gfx index a894e266bb69111a8c0e2cf930cfcc647b4731f0..0665d324bcb6005764e7c17c90340f0398434b65 100644 GIT binary patch delta 28 kcmeC=nas1nor%9ykCFYm{P+5U_227zV;DF4Fzsaq0G163T*hs1= zWbqMpZ5&i^3&9aA1{vl$pyz|HIK|;KS(Dv19b}MrJ1|biX`SH)4H;YKdu5F^P7sku zf|h2@2F1h8W&8HtlTvGA?0<+tV9*Ed%pr$S6owJ&_7fhlglGA1Btf}eJ8P)G#!|*A z%a{64Ep@l*d3Ji$nN4RaEz%jC(f|XD5YQ`u=!-t+94kD+11wAaLO}2tKc^OqTO)d< z1?|!WZQE<3HS&oAdC9oXz=sq3W3yc49p?M?{#Y0DV!p4mP#~bSKlaJ-Z65WO5}t5R J#GPP+;1{WEh714z delta 32 jcmZqBXwcZuz%#i~;QwR+UiZnzcy~eBj++ngJFox%*MJP6 diff --git a/data/newitems.pal b/data/newitems.pal index 4d2e0ec584595b0d1073209297bf8355b4b6b960..c549cf98abbf485c30f9c2a6d003b5cfad22e5d8 100644 GIT binary patch delta 39 xcmV+?0NDS427m^T*cgb2i2wip&M_EDlrfyvb15k)|JFIZj3JTXk+XpTe*u1k64(F$ delta 17 YcmZo*YhasjW8$a&NsLmP8yV{v0Yak&=>Px# diff --git a/events.asm b/events.asm index 5a7f974..9574667 100644 --- a/events.asm +++ b/events.asm @@ -1,14 +1,14 @@ OnPrepFileSelect: - LDA.b GameSubMode : CMP.b #$03 : BNE + - LDA.b #$06 : STA.b NMISTRIPES ; thing we wrote over - RTL - + - PHA : PHX - REP #$10 - JSL LoadAlphabetTilemap - JSL LoadFullItemTiles - SEP #$10 - PLX : PLA + LDA.b GameSubMode : CMP.b #$03 : BNE + + LDA.b #$06 : STA.b NMISTRIPES ; thing we wrote over + RTL + + + PHA : PHX + REP #$10 + JSL LoadAlphabetTilemap + JSL LoadFullItemTiles + SEP #$10 + PLX : PLA RTL ;-------------------------------------------------------------------------------- OnDrawHud: @@ -22,17 +22,17 @@ JML ReturnFromOnDrawHud ;-------------------------------------------------------------------------------- OnDungeonEntrance: STA.l PegColor ; thing we wrote over - JSL MaybeFlagDungeonTotalsEntrance - LDA.w #$0001 : STA.l UpdateHUDFlag - SEP #$30 - JSL DynamicDropGFXClear - REP #$30 + JSL MaybeFlagDungeonTotalsEntrance + LDA.w #$0001 : STA.l UpdateHUDFlag + SEP #$30 + JSL DynamicDropGFXClear + REP #$30 RTL ;-------------------------------------------------------------------------------- OnDungeonBossExit: - JSL StatTransitionCounter - JSL ClearMultiworldText - JSL DynamicDropGFXClear + JSL StatTransitionCounter + JSL ClearMultiworldText + JSL DynamicDropGFXClear RTL ;-------------------------------------------------------------------------------- OnPlayerDead: @@ -41,40 +41,44 @@ OnPlayerDead: JSL DynamicDropGFXClear JSL SetSilverBowMode JSL RefreshRainAmmo + LDA.b #$00 + STA.l InfiniteMagic PLA RTL ;-------------------------------------------------------------------------------- OnDungeonExit: - PHA : PHP - SEP #$20 ; set 8-bit accumulator - JSL SQEGFix - JSL DynamicDropGFXClear - PLP : PLA + PHA : PHP + SEP #$20 ; set 8-bit accumulator + JSL SQEGFix + JSL DynamicDropGFXClear + PLP : PLA - STA.w DungeonID : STZ.w Map16ChangeIndex ; thing we wrote over + STA.w DungeonID : STZ.w Map16ChangeIndex ; thing we wrote over - PHA : PHP - LDA.w #$0001 : STA.l UpdateHUDFlag - JSL HUD_RebuildLong - JSL FloodGateResetInner - JSL SetSilverBowMode - PLP : PLA + PHA : PHP + LDA.w #$0001 : STA.l UpdateHUDFlag + JSL HUD_RebuildLong + JSL FloodGateResetInner + JSL SetSilverBowMode + PLP : PLA RTL ;-------------------------------------------------------------------------------- OnSave: - LDA.b #$70 : PHA : PLB ; thing we wrote over - data bank change + LDA.b #$70 : PHA : PLB ; thing we wrote over - data bank change JSL DarkWorldSaveFix - JML MSUResumeReset + JML MSUResumeReset ;-------------------------------------------------------------------------------- OnQuit: JSL SQEGFix LDA.b #$00 : STA.l AltTextFlag ; bandaid patch bug with mirroring away from text LDA.b #$10 : STA.b MAINDESQ ; thing we wrote over + LDA.b #$00 + STA.l InfiniteMagic RTL ;-------------------------------------------------------------------------------- OnDeathNoSave: - JSL MSUResumeReset - LDA.b #$05 : STA.b $10 ; what we wrote over + JSL MSUResumeReset + LDA.b #$05 : STA.b $10 ; what we wrote over RTL ;-------------------------------------------------------------------------------- OnUncleItemGet: diff --git a/fileselect.asm b/fileselect.asm index 1931199..a85c2a9 100644 --- a/fileselect.asm +++ b/fileselect.asm @@ -82,7 +82,10 @@ DrawBottle: AND.w #$00FF : BNE + LDX.w #FileSelectItems_empty_bottle JMP DrawItemGray - + : DEC #2 : BNE + + + : DEC : BNE + + LDX.w #FileSelectItems_orange_potion + JMP DrawItem + + : DEC : BNE + LDX.w #FileSelectItems_empty_bottle JMP DrawItem + : DEC : BNE + @@ -619,6 +622,8 @@ FileSelectItems: dw #$0282|!FS_COLOR_GREEN, #$0282|!FS_COLOR_GREEN|!FS_HFLIP, #$0292|!FS_COLOR_GREEN, #$0284|!FS_COLOR_GREEN .blue_potion dw #$0282|!FS_COLOR_BLUE, #$0282|!FS_COLOR_BLUE|!FS_HFLIP, #$0292|!FS_COLOR_BLUE, #$0285|!FS_COLOR_BLUE + .orange_potion + dw #$0282|!FS_COLOR_BROWN, #$0282|!FS_COLOR_BROWN|!FS_HFLIP, #$0292|!FS_COLOR_BROWN, #$0286|!FS_COLOR_BROWN .fairy_bottle dw #$0287|!FS_COLOR_YELLOW|!FS_HFLIP, #$0287|!FS_COLOR_YELLOW, #$0296|!FS_COLOR_BLUE, #$0297|!FS_COLOR_BLUE .bee_bottle diff --git a/gk/data/item_mapping.asm b/gk/data/item_mapping.asm index 3e64912..bd1a61e 100644 --- a/gk/data/item_mapping.asm +++ b/gk/data/item_mapping.asm @@ -116,7 +116,7 @@ db !TIER_JUNK ; 62 - RNG pool item (single) db !TIER_JUNK ; 63 - RNG pool item (multi) db !TIER_MAJOR ; 64 - Progressive bow db !TIER_MAJOR ; 65 - Progressive bow -db !TIER_JUNK ; 66 - +db !TIER_HEALTH ; 66 - Potion refill (orange) db !TIER_JUNK ; 67 - db !TIER_JUNK ; 68 - db !TIER_JUNK ; 69 - diff --git a/gk/data/junk_items.asm b/gk/data/junk_items.asm index 87eb7df..56bc64e 100644 --- a/gk/data/junk_items.asm +++ b/gk/data/junk_items.asm @@ -101,7 +101,7 @@ db $00 ; 62 - RNG pool item (single) db $00 ; 63 - RNG pool item (multi) db $00 ; 64 - Progressive bow db $00 ; 65 - Progressive bow -db $00 ; 66 - +db $00 ; 66 - Potion refill (orange) db $00 ; 67 - db $00 ; 68 - db $00 ; 69 - diff --git a/gk/orange_potion.asm b/gk/orange_potion.asm new file mode 100644 index 0000000..4099811 --- /dev/null +++ b/gk/orange_potion.asm @@ -0,0 +1,34 @@ +CheckOrangePotion: + LDA.l BottleContents, X + CMP.b #$01 + BEQ .orange + + ; return to vanilla behavior + CMP.b #$00 + RTL + +.orange + LDA.l InfiniteMagic + BNE .nope + + LDA.b #$02 + STA.l BottleContents, X + + STZ.w $0301 + + LDA.b #$80 + STA.l MagicFiller + + LDA.b #$01 + STA.l InfiniteMagic + + JSL RebuildHUD_update_long + LDA.b #$00 + RTL + +.nope + JSL Sound_SetSfxPanWithPlayerCoords + ORA.b #$3C + STA.w SFX2 + LDA.b #$00 + RTL diff --git a/hooks.asm b/hooks.asm index 22a5ac9..66f8595 100755 --- a/hooks.asm +++ b/hooks.asm @@ -997,6 +997,12 @@ LDA.w BottleListExpanded, X org $89895C ; 4895C - ancilla_init.asm:1344 (LDA PotionList, X) LDA.w PotionListExpanded, X + +org $89895A +LDX.b #$06 + +org $89896A +ADC.b #$01 ;-------------------------------------------------------------------------------- org $86D1EB ; 351EB - sprite_absorbable.asm:364 (STA $7EF375) ; bugbug commented out until i figure out why it doesn't work JSL HandleBombAbsorbtion @@ -1029,6 +1035,7 @@ JSL RefillHealth ;-------------------------------------------------------------------------------- org $80F922 ; <- 7922 - Bank00.asm:8543 - (JSL HUD.RefillMagicPower : BCC .beta) JSL RefillMagic +;-------------------------------------------------------------------------------- ;================================================================================ ; Early Bottle Fix @@ -1165,6 +1172,8 @@ ORA.w #$8000 : STA.w $007E, Y ORA.w #$4000 : STA.w $0084, Y JSL AddYMarker : NOP #2 ;-------------------------------------------------------------------------------- +org $8DF779 ; <- 6F779 (not in disassembly) - mushroom bottle hud tile +dw $20D2, $60D2, $20E2, $202D ; (Orig: $2044, $2045, $2046, $2047) org $8DF789+6 ; <- 6F789+6 (not in disassembly) - red bottle hud tile, lower right dw $2413 ; (Orig: #$24E3) org $8DF789+6+8 ; green bottle hud tile, lower right @@ -2847,3 +2856,10 @@ org $8DFB63 ; bank_0D.asm@18092 (LDA.l $7EF33F, X : AND.w #$00FF) JSL CheckFluteInHUD NOP #3 ;-------------------------------------------------------------------------------- + +;================================================================================ +; Orange Potion (Chateau Romani) +;-------------------------------------------------------------------------------- +org $87A15C ; bank_07.asm@6963 (LDA.l $7EF35C, X) +JSL CheckOrangePotion +;-------------------------------------------------------------------------------- diff --git a/itemdatatables.asm b/itemdatatables.asm index db404d6..0ee9c7d 100644 --- a/itemdatatables.asm +++ b/itemdatatables.asm @@ -239,7 +239,7 @@ endmacro %ReceiptProps($63, -4, 0, $FF, $F36A, $FF, skip, rng_multi) ; 63 - RNG pool item (multi) %ReceiptProps($64, -4, 0, $FF, $F340, $FF, skip, progressive_bow) ; 64 - Progressive bow %ReceiptProps($65, -4, 0, $FF, $F340, $FF, skip, progressive_bow_2) ; 65 - Progressive bow -%ReceiptProps($66, -4, 0, $FF, $F36A, $FF, skip, skip) ; 66 - +%ReceiptProps($66, -4, 0, $51, $F36E, $FF, skip, skip) ; 66 - Potion refill (yellow) %ReceiptProps($67, -4, 0, $FF, $F36A, $FF, skip, skip) ; 67 - %ReceiptProps($68, -4, 0, $FF, $F36A, $FF, skip, skip) ; 68 - %ReceiptProps($69, -4, 0, $FF, $F36A, $FF, skip, skip) ; 69 - @@ -518,7 +518,7 @@ endmacro %SpriteProps($63, 2, 2, $FF, $FF, $0000) ; 63 - RNG pool item (multi) %SpriteProps($64, 2, 2, $FF, $FF, $0000) ; 64 - Progressive bow %SpriteProps($65, 2, 2, $FF, $FF, $0000) ; 65 - Progressive bow -%SpriteProps($66, 2, 2, $00, $00, $0000) ; 66 - +%SpriteProps($66, 2, 2, $02, $02, $0000) ; 66 - Potion refill (yellow) %SpriteProps($67, 2, 2, $00, $00, $0000) ; 67 - %SpriteProps($68, 2, 2, $00, $00, $0000) ; 68 - %SpriteProps($69, 2, 2, $00, $00, $0000) ; 69 - @@ -794,7 +794,7 @@ endmacro %InventoryItem($63, $0001, $0000, $0000) ; 63 - RNG pool item (multi) %InventoryItem($64, $00A5, $0000, $0000) ; 64 - Progressive bow %InventoryItem($65, $00A5, $0000, $0000) ; 65 - Progressive bow -%InventoryItem($66, $0001, $0000, $0000) ; 66 - +%InventoryItem($66, $0081, $0000, $0000) ; 66 - Potion refill (yellow) %InventoryItem($67, $0001, $0000, $0000) ; 67 - %InventoryItem($68, $0001, $0000, $0000) ; 68 - %InventoryItem($69, $0001, $0000, $0000) ; 69 - @@ -1054,7 +1054,7 @@ ItemReceiptGraphicsOffsets: dw $0 ; 63 - RNG pool item (multi) dw $0 ; 64 - Progressive bow dw $0 ; 65 - Progressive bow - dw $0 ; 66 - + dw $0CE0 ; 66 - Potion refill (yellow) dw $0 ; 67 - dw $0 ; 68 - dw $0 ; 69 - @@ -1324,7 +1324,7 @@ StandingItemGraphicsOffsets: dw $0 ; 63 - RNG pool item (multi) dw $0 ; 64 - Progressive bow dw $0 ; 65 - Progressive bow - dw $0 ; 66 - + dw $0CA0 ; 66 - Potion refill (yellow) dw $0 ; 67 - dw $0 ; 68 - dw $0 ; 69 - @@ -1590,7 +1590,7 @@ VRAMAddressOffset: dw $0024 ; 63 - RNG pool item (multi) dw $0024 ; 64 - Progressive bow dw $0024 ; 65 - Progressive bow - dw $0024 ; 66 - + dw $0024 ; 66 - Potion refill (yellow) dw $0024 ; 67 - dw $0024 ; 68 - dw $0024 ; 69 - diff --git a/newitems.asm b/newitems.asm index 697a845..c086428 100755 --- a/newitems.asm +++ b/newitems.asm @@ -935,7 +935,7 @@ BottleListExpanded: db $16, $2B, $2C, $2D, $3D, $3C, $48 PotionListExpanded: - db $2E, $2F, $30, $FF, $0E + db $66, $FF, $2E, $2F, $30, $FF, $0E ;-------------------------------------------------------------------------------- HandleBowTracking: ; In: A - Item Receipt ID diff --git a/shopkeeper.asm b/shopkeeper.asm index 05c4872..567a85c 100644 --- a/shopkeeper.asm +++ b/shopkeeper.asm @@ -433,6 +433,7 @@ Shopkeeper_BuyItem: CMP.b #$2E : BEQ .refill ; Red Potion Refill CMP.b #$2F : BEQ .refill ; Green Potion Refill CMP.b #$30 : BEQ .refill ; Blue Potion Refill + CMP.b #$66 : BEQ .refill ; Yellow Potion Refill CMP.b #$AF : BEQ .generic_key BRA + .refill From 82ce1628e6a146ce6bf10f863a3cc01e2833f8cd Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Sun, 7 Jun 2026 21:43:56 -0500 Subject: [PATCH 2/5] Make infinite magic bar blue instead of flashy --- gk/orange_potion.asm | 3 --- newhud.asm | 11 ++++++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/gk/orange_potion.asm b/gk/orange_potion.asm index 4099811..fd3d8b8 100644 --- a/gk/orange_potion.asm +++ b/gk/orange_potion.asm @@ -16,9 +16,6 @@ CheckOrangePotion: STZ.w $0301 - LDA.b #$80 - STA.l MagicFiller - LDA.b #$01 STA.l InfiniteMagic diff --git a/newhud.asm b/newhud.asm index e669ef8..ede7358 100644 --- a/newhud.asm +++ b/newhud.asm @@ -273,10 +273,15 @@ NewHUD_DrawMagicMeter: STA.w CurrentMagic TAY - LDA.b FrameCounter REP #$30 - AND.w #$000C - LSR + LDA.w #$0002 + + ; ; cycle through colors + ; LDA.b FrameCounter + ; REP #$30 + ; AND.w #$000C + ; LSR + BRA .recolor .set_index ; this branch is always 0000 when taken From 99d426bc1e86adbca74501d614a5c1b04b7ef5de Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Mon, 8 Jun 2026 00:11:01 -0500 Subject: [PATCH 3/5] Bitflag to block silverless damage on phase 4 ganon --- dialog.asm | 2 +- gk/special_weapons.asm | 2 +- gk/variable_ganon_vulnerability.asm | 15 +++++++++------ goalitem.asm | 3 +++ swordswap.asm | 2 +- tables.asm | 4 ++++ 6 files changed, 19 insertions(+), 9 deletions(-) diff --git a/dialog.asm b/dialog.asm index 8625c85..c536740 100644 --- a/dialog.asm +++ b/dialog.asm @@ -304,7 +304,7 @@ DialogGanon2: BCS + LDA.w #$018D : JMP .done + - LDA.l GanonVulnerabilityItem : AND.w #$00FF + LDA.l GanonVulnerabilityItem : AND.w #$007F BEQ .silver_arrows CMP.w #$0001 : BEQ .silver_arrows CMP.w #$0004 : BEQ .bombs diff --git a/gk/special_weapons.asm b/gk/special_weapons.asm index da1847a..22c5d25 100644 --- a/gk/special_weapons.asm +++ b/gk/special_weapons.asm @@ -1,6 +1,6 @@ DamageClassCalc: PHA - LDA.l GanonVulnerabilityItem : BEQ + + LDA.l GanonVulnerabilityItem : AND.b #$7F : BEQ + LDA.w SpriteTypeTable, X : CMP.b #$D7 : BNE + PLA JSL Ganon_CheckAncillaVulnerability diff --git a/gk/variable_ganon_vulnerability.asm b/gk/variable_ganon_vulnerability.asm index 20acb5d..ef9b688 100644 --- a/gk/variable_ganon_vulnerability.asm +++ b/gk/variable_ganon_vulnerability.asm @@ -4,12 +4,14 @@ Ganon_CheckAncillaVulnerability: PLA PHX : PHA LDA.l GanonVulnerabilityItem - BMI .no_weakness + BVS .no_weakness + AND.b #$7F TAX : PLA CMP.l Ganon_CheckByAncilla, X : BNE + PLX : BRA .vulnerable + PLX : PHA LDA.l GanonVulnerabilityItem + AND.b #$7F BEQ .silver_arrows CMP.b #$01 : BEQ .silver_arrows CMP.b #$11 : BEQ .somaria @@ -34,6 +36,7 @@ Ganon_CheckAncillaVulnerability: .vulnerable PHX LDA.l GanonVulnerabilityItem + AND.b #$7F TAX LDA.l Ganon_IFrameDuration, X PLX @@ -52,7 +55,7 @@ Ganon_CheckAncillaVulnerability: RTL ;-------------------------------------------------------------------------------- Ganon_CheckPowderVulnerability: - LDA.l GanonVulnerabilityItem : CMP.b #$05 : BNE .normal + LDA.l GanonVulnerabilityItem : AND.b #$7F : CMP.b #$05 : BNE .normal LDA.w SpriteTypeTable, X : CMP.b #$D7 : BNE .normal LDA.w $0EE0, X : BNE .normal ; ganon has i-frames LDA.l Ganon_IFrameDuration+$05 @@ -69,7 +72,7 @@ Ganon_CheckPowderVulnerability: Ganon_CheckBeeVulnerability: ; X is bee sprite index ; Y is target sprite index - LDA.l GanonVulnerabilityItem : CMP.b #$10 : BNE .normal + LDA.l GanonVulnerabilityItem : AND.b #$7F : CMP.b #$10 : BNE .normal LDA.w SpriteTypeTable, Y : CMP.b #$D7 : BNE .normal LDA.w $0EE0, Y : BNE .normal ; ganon has i-frames LDA.l Ganon_IFrameDuration+$10 @@ -88,14 +91,14 @@ Ganon_CheckInvincible: LDA.w $04C5 : CMP.b #$02 : BEQ .not_transparent LDA.w SpriteTypeTable, X : CMP.b #$D7 : BNE .transparent ; non-stunned ganon LDA.w UseY1 : AND.b #$0A : BEQ .transparent ; normal behavior if not hammering - LDA.l GanonVulnerabilityItem : CMP.b #$0C : BNE .transparent + LDA.l GanonVulnerabilityItem : AND.b #$7F : CMP.b #$0C : BNE .transparent .not_transparent LDA.b #$00 : RTL .transparent LDA.b #$01 : RTL ;-------------------------------------------------------------------------------- Ganon_CheckHammerVulnerability: - LDA.l GanonVulnerabilityItem : CMP.b #$0C : BNE .normal + LDA.l GanonVulnerabilityItem : AND.b #$7F : CMP.b #$0C : BNE .normal LDA.w SpriteTypeTable, X : CMP.b #$D7 : BNE .normal LDA.w $0EE0, X : BNE .normal ; ganon has i-frames LDA.l Ganon_IFrameDuration+$0C @@ -108,7 +111,7 @@ Ganon_CheckHammerVulnerability: ;-------------------------------------------------------------------------------- CheckBeeBoss: ; Y is sprite index - LDA.l GanonVulnerabilityItem : CMP.b #$10 : BNE .normal + LDA.l GanonVulnerabilityItem : AND.b #$7F : CMP.b #$10 : BNE .normal LDA.w SpriteTypeTable, Y : CMP.b #$D7 : BNE .normal LDA.b #$00 : RTL .normal diff --git a/goalitem.asm b/goalitem.asm index f5318f9..3223c15 100644 --- a/goalitem.asm +++ b/goalitem.asm @@ -1,5 +1,8 @@ GoalItemGanonCheck: LDA.w SpriteTypeTable, X : CMP.b #$D6 : BNE .success ; skip if not ganon + LDA.l GanonVulnerabilityItem : BPL + + LDA.w SpriteActivity, X : CMP.b #$12 : BEQ .fail + + LDA.b #$01 : JSL CheckConditionPass BCS .success diff --git a/swordswap.asm b/swordswap.asm index 144c891..e62b5bd 100644 --- a/swordswap.asm +++ b/swordswap.asm @@ -101,7 +101,7 @@ CheckGanonHammerDamage: LDA.w SpriteTypeTable, X : CMP.b #$D8 ; original behavior except ganon RTL + - LDA.l GanonVulnerabilityItem : CMP.b #$0C : BEQ .hammer_silvers + LDA.l GanonVulnerabilityItem : AND.b #$7F : CMP.b #$0C : BEQ .hammer_silvers LDA.w SpriteTypeTable, X : CMP.b #$D6 ; original behavior RTL diff --git a/tables.asm b/tables.asm index f0c2197..66f3a18 100644 --- a/tables.asm +++ b/tables.asm @@ -105,6 +105,10 @@ db $00 ;-------------------------------------------------------------------------------- org $B0802E GanonVulnerabilityItem: +; sn-i iiii +; s - immune to sword spins in phase 4 +; n - immune to all items +; i - index of item vulnerability db $00 ; $00 = default behavior (silver arrows) ;-------------------------------------------------------------------------------- org $B0902F From 7d3a3a54e3d710d2c1479de72c19e85e5f50dbe1 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Mon, 8 Jun 2026 16:10:55 -0500 Subject: [PATCH 4/5] Fix max frame count --- stats/main.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stats/main.asm b/stats/main.asm index 5ec90a6..28c870f 100755 --- a/stats/main.asm +++ b/stats/main.asm @@ -174,7 +174,7 @@ FindLine: !FRAMES_PER_SECOND = 60 !FRAMES_PER_MINUTE = 60*60 !FRAMES_PER_HOUR = 60*60*60 -!MAX_FRAME_COUNT = (99*60)+(59*60)+(59*60)+59 +!MAX_FRAME_COUNT = (99*60*60*60)+(59*60*60)+(59*60)+59 macro CountUnits(framesPerUnit, unitCounter) STZ.b From 1092f1bc85380408db4da1c9454a58043ae4ae8c Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Mon, 8 Jun 2026 22:57:41 -0500 Subject: [PATCH 5/5] Text updates and orange refill box --- data/i18n_en.bin | Bin 29525 -> 29525 bytes data/i18n_en.bin.bak | Bin 0 -> 29525 bytes dialog.asm | 4 ++++ shopkeeper.asm | 2 +- stats/fonttable.asm | 8 +++++--- textrenderer.asm | 8 ++++---- 6 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 data/i18n_en.bin.bak diff --git a/data/i18n_en.bin b/data/i18n_en.bin index e13478943630dfaf17c9ea17161a868694292744..1b5ad572abb6d12de50922033ddc98fa15c4ef9b 100644 GIT binary patch delta 20 ccmccmjPdF-#tkZ#jK4PhV8)K?U`yN*Iig5~ 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