From bdd16bc20f54ca28c75be1846378155283dc3fa8 Mon Sep 17 00:00:00 2001 From: spannerisms <32842036+spannerisms@users.noreply.github.com> Date: Sat, 3 Jul 2021 09:06:17 -0400 Subject: [PATCH 1/5] dungeon prizes --- compasses.asm | 4 ++-- dungeonmap.asm | 5 ++--- newhud.asm | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/compasses.asm b/compasses.asm index 5c1acb5..37295c2 100644 --- a/compasses.asm +++ b/compasses.asm @@ -17,7 +17,7 @@ DrawDungeonCompassCounts: LDX $040C : CPX.b #$FF : BEQ .done ; Skip if not in a dungeon CMP.w #$0002 : BEQ ++ ; if CompassMode==2, we don't check for the compass - LDA $7EF364 : AND.l .item_masks, X ; Load compass values to A, mask with dungeon item masks + LDA $7EF364 : AND.l DungeonItemMasks, X ; Load compass values to A, mask with dungeon item masks BEQ .done ; skip if we don't have compass ++ @@ -35,7 +35,7 @@ DrawDungeonCompassCounts: .done RTL -.item_masks ; these are dungeon correlations to $7EF364 - $7EF369 so it knows where to store compasses, etc +DungeonItemMasks: ; these are dungeon correlations to $7EF364 - $7EF369 so it knows where to store compasses, etc dw $8000, $4000, $2000, $1000, $0800, $0400, $0200, $0100 dw $0080, $0040, $0020, $0010, $0008, $0004 diff --git a/dungeonmap.asm b/dungeonmap.asm index 6dabf89..39b4624 100644 --- a/dungeonmap.asm +++ b/dungeonmap.asm @@ -107,15 +107,14 @@ DoDungeonMapBossIcon: LDX.b #$02 STX.w $420B + STA.w $4315 LDA.w #$A260>>1 STA.w $2116 - LDA.w #$0040 - STA.w $4315 STX.w $420B ; done - SEP #$32 + SEP #$30 RTL .boss_id diff --git a/newhud.asm b/newhud.asm index f41ed75..35c562f 100644 --- a/newhud.asm +++ b/newhud.asm @@ -131,9 +131,51 @@ SEP #$30 STA !KEY_ICON_ADDRESS .done_keys - - - + + + + +;-------------------------------------------------------------------------------- +; Draw pendant/crystal icon +;-------------------------------------------------------------------------------- +!PRIZE_ICON = $7EC742 +!P_ICON = $296C +!C_ICON = $295F + + SEP #$20 + LDA.b $1B : BEQ .noprize + + + + LDX.w $040C : BMI .noprize + + REP #$20 + + LDA.l MapMode + BEQ .drawprize + + LDA.l $7EF368 + AND.l DungeonItemMasks,X + BEQ .doneprize + +.drawprize + LDA.l CrystalPendantFlags_2, X + AND.w #$0040 : BNE .is_crystal + + LDA.w #!P_ICON + BRA .doneprize + +.is_crystal + LDA.w #!C_ICON + BRA .doneprize + +.noprize + REP #$20 + LDA.w #$207F + +.doneprize + STA.l !PRIZE_ICON + ;-------------------------------------------------------------------------------- ; Draw Magic Meter !INFINITE_MAGIC = "$7F50CA" @@ -261,4 +303,4 @@ HudHexToDec2Digit: DEC : BNE - + STY $07 ; Store 1s digit -RTS \ No newline at end of file +RTS From 00c59c791fb804f218c94d01dda0e59a9b927ff7 Mon Sep 17 00:00:00 2001 From: spannerisms <32842036+spannerisms@users.noreply.github.com> Date: Sat, 3 Jul 2021 09:25:33 -0400 Subject: [PATCH 2/5] damage/magic stats --- LTTP_RND_GeneralBugfixes.asm | 2 +- stats.asm | 16 +++++++++++----- stats/creditsnew.asm | 12 ++++++------ stats/main.asm | 1 + stats/statConfig.asm | 4 ++-- 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 7eeeb24..d2b7ca5 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -55,7 +55,7 @@ db #$20, #$19, #$08, #$31 ; year/month/day !SRAM_SINK = "$7EF41E" ; <- change this (conflicts with Programmable item 3) ;$7EF418 - Goal Item Counter ;$7EF419 - Service Sequence -;$7EF420 - $7EF468 - Stat Tracking Bank 1 (overlaps with RNG Item Flags) +;$7EF420 - $7EF46D - Stat Tracking Bank 1 (overlaps with RNG Item Flags) ;$7EF450 - $7EF45F - RNG Item (Single) Flags ;$7EF4A0 - $7EF4A7 - Service Request Block !FRESH_FILE_MARKER = "$7EF4F0" ; zero if fresh file diff --git a/stats.asm b/stats.asm index 4bd3699..f76b0e1 100644 --- a/stats.asm +++ b/stats.asm @@ -369,8 +369,8 @@ IncrementBigChestCounter: PLA RTL ;-------------------------------------------------------------------------------- -!DAMAGE_COUNTER = "$FFFFFF" -!MAGIC_COUNTER = "$FFFFFF" +!DAMAGE_COUNTER = $7EF46A +!MAGIC_COUNTER = $7EF46C IncrementDamageTakenCounter_Eight: STA.l $7EF36D PHA : PHP @@ -378,7 +378,9 @@ IncrementDamageTakenCounter_Eight: REP #$21 LDA.l !DAMAGE_COUNTER ADC.w #$0008 - STA.l !DAMAGE_COUNTER + BCC ++ + LDA.w #$FFFF +++ STA.l !DAMAGE_COUNTER + PLP PLA RTL @@ -390,7 +392,9 @@ IncrementDamageTakenCounter_Arb: LDA.b $00 AND.w #$00FF ADC.l !DAMAGE_COUNTER - STA.l !DAMAGE_COUNTER + BCC ++ + LDA.w #$FFFF +++ STA.l !DAMAGE_COUNTER + PLP LDA.l $7EF36D @@ -404,7 +408,9 @@ IncrementMagicUseCounter: LDA.b $00 AND.w #$00FF ADC.l !MAGIC_COUNTER - STA.l !MAGIC_COUNTER + BCC ++ + LDA.w #$FFFF +++ STA.l !MAGIC_COUNTER + PLP : PLA RTL diff --git a/stats/creditsnew.asm b/stats/creditsnew.asm index a8e8ef0..dae6d8b 100644 --- a/stats/creditsnew.asm +++ b/stats/creditsnew.asm @@ -639,11 +639,11 @@ endif %blankline() %blankline() -%bigcreditsleft("GT BIG KEY /22") +%bigcreditsleft("DAMAGE TAKEN") %blankline() -%bigcreditsleft("CHEST TURNS") +%bigcreditsleft("MAGIC USED") %blankline() @@ -724,10 +724,10 @@ endif !TEMPERED_SWORD_Y = 336 !GOLD_SWORD_X = 23 !GOLD_SWORD_Y = 339 -!GT_BIG_KEY_X = 23 -!GT_BIG_KEY_Y = 346 -!CHEST_TURNS_X = 26 -!CHEST_TURNS_Y = 349 +!DAMAGETAKEN_X = 26 +!DAMAGETAKEN_Y = 346 +!MAGICUSED_X = 26 +!MAGICUSED_Y = 349 !BONKS_X = 26 !BONKS_Y = 352 !SAVE_AND_QUITS_X = 26 diff --git a/stats/main.asm b/stats/main.asm index 0a666ad..314de0e 100755 --- a/stats/main.asm +++ b/stats/main.asm @@ -60,6 +60,7 @@ ValueCaps: dw 99 dw 999 dw 9999 + dw 9999 ; TODO - 5 digits need to be fixed at a later date BitMasks: dw $FFFF diff --git a/stats/statConfig.asm b/stats/statConfig.asm index 8fa3194..d921b94 100755 --- a/stats/statConfig.asm +++ b/stats/statConfig.asm @@ -9,8 +9,8 @@ %AddStat($7EF425, 0, 0, 04, 2, !MASTER_SWORD_X, !MASTER_SWORD_Y) %AddStat($7EF426, 0, 4, 04, 2, !TEMPERED_SWORD_X, !TEMPERED_SWORD_Y) %AddStat($7EF426, 0, 0, 04, 2, !GOLD_SWORD_X, !GOLD_SWORD_Y) -%AddStat($7EF42A, 0, 0, 05, 2, !GT_BIG_KEY_X, !GT_BIG_KEY_Y) -%AddStat($7EF468, 0, 0, 08, 3, !CHEST_TURNS_X, !CHEST_TURNS_Y) +%AddStat($7EF46A, 0, 0, 16, 5, !DAMAGETAKEN_X, !DAMAGETAKEN_Y) +%AddStat($7EF46C, 0, 0, 16, 5, !MAGICUSED_X, !MAGICUSED_Y) %AddStat($7EF420, 0, 0, 08, 3, !BONKS_X, !BONKS_Y) %AddStat($7EF42D, 0, 0, 08, 2, !SAVE_AND_QUITS_X, !SAVE_AND_QUITS_Y) %AddStat($7EF449, 0, 0, 08, 2, !DEATHS_X, !DEATHS_Y) From 270f0685ff878275a6f146d8753dc9487f582460 Mon Sep 17 00:00:00 2001 From: spannerisms <32842036+spannerisms@users.noreply.github.com> Date: Sun, 4 Jul 2021 05:21:48 -0400 Subject: [PATCH 3/5] add byrna/cape magic tracking --- hardmode.asm | 5 ++--- stats.asm | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/hardmode.asm b/hardmode.asm index 0bda634..1b7fe8b 100644 --- a/hardmode.asm +++ b/hardmode.asm @@ -33,7 +33,7 @@ CalculateByrnaUsage: PLX ++ LDA $7EF36E ; thing we wrote over -RTL + JML IncrementMagicUseCounterByrna ;-------------------------------------------------------------------------------- CalculateCapeUsage: LDA $1B : BEQ ++ @@ -51,8 +51,7 @@ CalculateCapeUsage: LDA.l HardModeExclusionCapeUsage, X : STA $4C ; set cape decrement timer PLX ++ - LDA $7EF36E ; thing we wrote over -RTL + JML IncrementMagicUseCounterOne ;-------------------------------------------------------------------------------- ActivateInvulnerabilityOrDont: LDA $1B : BEQ .nowhere_special diff --git a/stats.asm b/stats.asm index f76b0e1..4263c5d 100644 --- a/stats.asm +++ b/stats.asm @@ -383,7 +383,7 @@ IncrementDamageTakenCounter_Eight: ++ STA.l !DAMAGE_COUNTER + PLP PLA -RTL + RTL IncrementDamageTakenCounter_Arb: PHP @@ -398,10 +398,12 @@ IncrementDamageTakenCounter_Arb: + PLP LDA.l $7EF36D -RTL + RTL IncrementMagicUseCounter: STA.l $7EF36E + +IncrementMagicUseCounterByrna: PHA : PHP LDA !LOCK_STATS : BNE + REP #$21 @@ -413,7 +415,18 @@ IncrementMagicUseCounter: ++ STA.l !MAGIC_COUNTER + PLP : PLA -RTL + RTL + +IncrementMagicUseCounterOne: + LDA !LOCK_STATS : BNE + + REP #$20 + LDA.l !MAGIC_COUNTER + INC + BEQ ++ + STA.l !MAGIC_COUNTER +++ SEP #$20 ++ LDA.l $7EF36E + RTL ;-------------------------------------------------------------------------------- !OW_MIRROR_COUNTER = "$7EF43A" From 27cb1b545900756f7ffdea59342e9ff6b1d731f2 Mon Sep 17 00:00:00 2001 From: Bonta <40473493+Bonta0@users.noreply.github.com> Date: Mon, 5 Jul 2021 20:30:18 +0200 Subject: [PATCH 4/5] Implement Fakeboots --- LTTP_RND_GeneralBugfixes.asm | 3 ++ boots.asm | 80 ++++++++++++++++++++++++++++++++---- hooks.asm | 48 ++++++++++++++++++++-- stats.asm | 14 +++---- tables.asm | 6 ++- 5 files changed, 129 insertions(+), 22 deletions(-) diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 9635e8f..af8cc20 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -501,6 +501,9 @@ Sprite_ShowMessageUnconditional: org $05EC96 Sprite_ZeldaLong: +org $0680FA +Player_ApplyRumbleToSprites: + org $0683E6 Utility_CheckIfHitBoxesOverlapLong: diff --git a/boots.asm b/boots.asm index 7589b3d..555fcb8 100644 --- a/boots.asm +++ b/boots.asm @@ -3,13 +3,75 @@ ;-------------------------------------------------------------------------------- !BOOTS_MODIFIER = "$7F50CE" ModifyBoots: - PHA - LDA !BOOTS_MODIFIER : CMP.b #$01 : BNE + - PLA : AND $7EF379 : ORA.b #$04 : RTL ; yes boots - + : CMP #$02 : BNE + - PLA : AND $7EF379 : AND.b #$FB : RTL ; no boots - + - PLA - AND $7EF379 ; regular boots + PHA + LDA !BOOTS_MODIFIER : CMP.b #$01 : BNE + + PLA : AND $7EF379 : ORA.b #$04 : RTL ; yes boots + + : CMP.b #$02 : BNE + + PLA : AND $7EF379 : AND.b #$FB : RTL ; no boots + + : LDA FakeBoots : CMP.b #$01 : BNE + + LDA $5B : BEQ ++ : LDA $59 : BNE + ; hover check + ++ : PLA : AND $7EF379 : ORA.b #$04 : RTL ; yes boots, not hovering + + + PLA + AND $7EF379 ; regular boots +RTL +;-------------------------------------------------------------------------------- +AddBonkTremors: + PHA + LDA $46 : BNE + ; Check for incapacitated Link + JSL.l IncrementBonkCounter + + + LDA !BOOTS_MODIFIER : CMP.b #$01 : BEQ + + LDA $7EF355 : BNE + ; Check for Boots + PLA : RTL + + + PLA + JSL.l AddDashTremor : JSL.l Player_ApplyRumbleToSprites ; things we wrote over +RTL +;-------------------------------------------------------------------------------- +BonkBreakableWall: + PHX : PHP + SEP #$30 ; set 8-bit accumulator and index registers + LDA !BOOTS_MODIFIER : CMP.b #$01 : BEQ + + LDA $7EF355 : BNE + ; Check for Boots + PLP : PLX : LDA.w #$0000 : RTL + + + PLP : PLX + LDA $0372 : AND.w #$00FF ; things we wrote over +RTL +;-------------------------------------------------------------------------------- +BonkRockPile: + LDA !BOOTS_MODIFIER : CMP.b #$01 : BEQ + + LDA $7EF355 : BNE + ; Check for Boots + LDA.b #$00 : RTL + + + LDA $02EF : AND.b #$70 ; things we wrote over +RTL +;-------------------------------------------------------------------------------- +GravestoneHook: + LDA !BOOTS_MODIFIER : CMP.b #$01 : BEQ + + LDA $7EF355 : BEQ .done ; Check for Boots + + + LDA $0372 : BEQ .done ; things we wrote over + JML.l moveGravestone + .done + JML.l GravestoneHook_continue +;-------------------------------------------------------------------------------- +JumpDownLedge: + LDA !BOOTS_MODIFIER : CMP.b #$01 : BEQ + + LDA $7EF355 : BNE + ; Check for Boots + ; Disarm Waterwalk + LDA $5B : CMP.b #$01 : BNE + + STZ $5B + + + LDA $1B : BNE .done : LDA.b #$02 : STA $EE ; things we wrote over + .done +RTL +;-------------------------------------------------------------------------------- +BonkRecoil: + LDA !BOOTS_MODIFIER : CMP.b #$01 : BEQ + + LDA $7EF355 : BNE + ; Check for Boots + LDA.b #$16 : STA $29 : RTL + + + LDA.b #$24 : STA $29 ; things we wrote over RTL -;-------------------------------------------------------------------------------- \ No newline at end of file diff --git a/hooks.asm b/hooks.asm index 6a48892..1ddd019 100755 --- a/hooks.asm +++ b/hooks.asm @@ -62,6 +62,51 @@ org $079C22 ; <- 39222 - Bank07.asm : 4494 (AND $7EF379 : BEQ .cantDoAction) JSL.l ModifyBoots ;-------------------------------------------------------------------------------- +;================================================================================ +; Enable/Disable Bonk Tremors +;-------------------------------------------------------------------------------- +org $079202 ; 39202 <- Bank07.asm : 2859 (JSL AddDashTremor : JSL Player_ApplyRumbleToSprites) +JSL.l AddBonkTremors : NOP #4 +;-------------------------------------------------------------------------------- + +;================================================================================ +; Bonk Breakable Walls +;-------------------------------------------------------------------------------- +org $01CF8E ; CF8E <- Bank01.asm : 11641 (LDA $0372 : AND.w #$00FF) +JSL.l BonkBreakableWall : NOP #2 +;-------------------------------------------------------------------------------- + +;================================================================================ +; Bonk Rock Pile +;-------------------------------------------------------------------------------- +org $07C196 ; 3C196 <- Bank07.asm : 10310 (LDA $02EF : AND.b #$70) +JSL.l BonkRockPile : NOP +;-------------------------------------------------------------------------------- + +;================================================================================ +; Move Gravestone +;-------------------------------------------------------------------------------- +org $07C0FD ; 3C0FD <- Bank07.asm : 10197 (LDA $0372 : BNE .moveGravestone) +JML.l GravestoneHook : NOP +GravestoneHook_continue: +org $07C106 +moveGravestone: +;-------------------------------------------------------------------------------- + +;================================================================================ +; Jump Down Ledge +;-------------------------------------------------------------------------------- +org $078966 ; 38966 <- Bank07.asm : 1618 (LDA $1B : BNE .indoors : LDA.b #$02 : STA $EE) +JSL.l JumpDownLedge : NOP #4 +;-------------------------------------------------------------------------------- + +;================================================================================ +; Bonk Recoil +;-------------------------------------------------------------------------------- +org $07922C ; 3922C <- Bank07.asm : 2869 (LDA.b #$24 : STA $29) +JSL.l BonkRecoil +;-------------------------------------------------------------------------------- + ;================================================================================ ; Dungeon Exit Hook ;-------------------------------------------------------------------------------- @@ -486,9 +531,6 @@ JSL.l CheckGanonHammerDamage : NOP ;================================================================================ ; Stat Hooks ;-------------------------------------------------------------------------------- -org $079202 ; 39202 <- Bank07.asm : 2859 (JSL AddDashTremor) -JSL.l StatBonkCounter -;-------------------------------------------------------------------------------- org $02B797 ; <- 13797 - Bank02.asm : 8712 (LDA.b #$19 : STA $10) JSL.l StatsFinalPrep ;-------------------------------------------------------------------------------- diff --git a/stats.asm b/stats.asm index 4bd3699..a853fc1 100644 --- a/stats.asm +++ b/stats.asm @@ -144,16 +144,12 @@ !LOCK_STATS = "$7EF443" ;-------------------------------------------------------------------------------- !BONK_COUNTER = "$7EF420" -StatBonkCounter: - PHA - JSL Ancilla_CheckIfAlreadyExistsLong : BCS + - LDA !LOCK_STATS : BNE + - LDA !BONK_COUNTER : INC - CMP.b #100 : BEQ + ; decimal 100 - STA !BONK_COUNTER +IncrementBonkCounter: + LDA !LOCK_STATS : BNE + + LDA !BONK_COUNTER : INC + CMP.b #100 : BEQ + ; decimal 100 + STA !BONK_COUNTER + - PLA - JSL.l AddDashTremor ; thing we wrote over RTL ;-------------------------------------------------------------------------------- !SAVE_COUNTER = "$7EF42D" diff --git a/tables.asm b/tables.asm index b26436f..a376a84 100644 --- a/tables.asm +++ b/tables.asm @@ -388,7 +388,11 @@ org $30808D ; PC 0x18008D InstantPostAgaWorldState: db $00 ; #$00 = Off (default) - #$01 = On ;-------------------------------------------------------------------------------- -; 0x18008E - 0x18008F (unused) +org $30808E ; PC 0x18008E +FakeBoots: +db $00 ; #$00 = Off (default) - #$01 = On +;-------------------------------------------------------------------------------- +; 0x18008F (unused) ;-------------------------------------------------------------------------------- org $308090 ; PC 0x180090 - 0x180097 ProgressiveSwordLimit: From 3548a0bbf535163c50d6aa7479858e55b5d90169 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Thu, 24 Jun 2021 12:23:55 -0700 Subject: [PATCH 5/5] Implement always-allowed medallions --- roomloading.asm | 8 ++-- swordswap.asm | 120 ++++++++++++++++++++++++++++-------------------- tables.asm | 2 +- 3 files changed, 74 insertions(+), 56 deletions(-) diff --git a/roomloading.asm b/roomloading.asm index 29f584d..d545b29 100644 --- a/roomloading.asm +++ b/roomloading.asm @@ -71,15 +71,15 @@ macro DrawBombosPlatform(roomX, roomY, quadX, quadY) endMacro IcePalaceBombosSE: - LDA AllowSwordlessMedallionUse : BNE + : RTL : + + LDA AllowSwordlessMedallionUse : CMP #$01 : BEQ + : RTL : + %DrawBombosPlatform(14, 18, 1, 1) RTL IcePalaceBombosSW: - LDA AllowSwordlessMedallionUse : BNE + : RTL : + + LDA AllowSwordlessMedallionUse : CMP #$01 : BEQ + : RTL : + %DrawBombosPlatform(14, 18, 0, 1) RTL IcePalaceBombosNE: - LDA AllowSwordlessMedallionUse : BNE + : RTL : + + LDA AllowSwordlessMedallionUse : CMP #$01 : BEQ + : RTL : + %DrawBombosPlatform(14, 18, 1, 0) RTL @@ -165,4 +165,4 @@ RoomCallbackTable: db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Fx db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 10x db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 11x - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 12x \ No newline at end of file + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 12x diff --git a/swordswap.asm b/swordswap.asm index bfea58f..7dbd635 100644 --- a/swordswap.asm +++ b/swordswap.asm @@ -6,11 +6,11 @@ ;GetFairySword: ; CMP.b #$49 : BNE + : LDA.b #$00 : + ; convert single fighter sword to low id one ; CMP.b #$50 : BNE + : LDA.b #$01 : + ; convert safe master sword to normal one -; CMP #$04 : !BLT + : JML.l PyramidFairy_BRANCH_IOTA : + ; for any sword, incl newer -; JSL ItemCheck_FairySword : BEQ + : JML.l PyramidFairy_BRANCH_IOTA : + ; skip if we already flagged getting this +; CMP #$04 : !BLT + : JML.l PyramidFairy_BRANCH_IOTA : + ; for any sword, incl newer +; JSL ItemCheck_FairySword : BEQ + : JML.l PyramidFairy_BRANCH_IOTA : + ; skip if we already flagged getting this ; JSL ItemSet_FairySword ; mark as got -; LDA FairySword : STA $0DC0, X ; whichever sword -; LDA.b #$05 : STA $0EB0, X ; something we overwrote, documentation unclear on purpose +; LDA FairySword : STA $0DC0, X ; whichever sword +; LDA.b #$05 : STA $0EB0, X ; something we overwrote, documentation unclear on purpose ; ;JML.l PyramidFairy_BRANCH_GAMMA ;================================================================================ @@ -146,16 +146,16 @@ GetSmithSword: REP #$20 : LDA $7EF360 : CMP #$000A : SEP #$20 : !BGE .buy .cant_afford REP #$10 - LDA.b #$7A - LDY.b #$01 - JSL.l Sprite_ShowMessageUnconditional + LDA.b #$7A + LDY.b #$01 + JSL.l Sprite_ShowMessageUnconditional LDA.b #$3C : STA $012E ; error sound SEP #$10 BRA .done .buy - LDA.l SmithItem : TAY - STZ $02E9 ; Item from NPC + LDA.l SmithItem : TAY + STZ $02E9 ; Item from NPC PHX : JSL Link_ReceiveItem : PLX REP #$20 : LDA $7EF360 : !SUB.w #$000A : STA $7EF360 : SEP #$20 ; Take 10 rupees @@ -165,50 +165,68 @@ GetSmithSword: JML.l Smithy_AlreadyGotSword ;================================================================================ CheckMedallionSword: - PHB : PHX : PHY - LDA.l AllowSwordlessMedallionUse : BNE +++ : JMP + : +++ - LDA $1B : BEQ .outdoors - .indoors - REP #$20 ; set 16-bit accumulator - LDA $A0 ; load room ID - CMP.w #$000E : BNE ++ : .freezor1 - LDA $22 : AND.w #$01FF : CMP.w #368-8 : !BLT .normal : CMP.w #368+32-8 : !BGE .normal ; check x-coord - LDA $20 : AND.w #$01FF : CMP.w #400-22 : !BLT .normal : CMP.w #400+32-22 : !BGE .normal ; check y-coord - JMP .permit - ++ : CMP.w #$007E : BNE ++ : .freezor2 - LDA $22 : AND.w #$01FF : CMP.w #112-8 : !BLT .normal : CMP.w #112+32-8 : !BGE .normal ; check x-coord - LDA $20 : AND.w #$01FF : CMP.w #400-22 : !BLT .normal : CMP.w #400+32-22 : !BGE .normal ; check y-coord - JMP .permit - ++ : CMP.w #$00DE : BNE ++ : .kholdstare - LDA $22 : AND.w #$01FF : CMP.w #368-8 : !BLT .normal : CMP.w #368+32-8 : !BGE .normal ; check x-coord - LDA $20 : AND.w #$01FF : CMP.w #144-22 : !BLT .normal : CMP.w #144+32-22 : !BGE .normal ; check y-coord - BRA .permit - ++ : .normal - SEP #$20 ; set 8-bit accumulator + LDA.l AllowSwordlessMedallionUse : BEQ .check_sword + CMP #$01 : BEQ .check_pad + LDA.b #$02 ; Pretend we have master sword + RTL + .check_sword + LDA $7EF359 + RTL + .check_pad + PHB : PHX : PHY + LDA $1B : BEQ .outdoors + .indoors + REP #$20 ; set 16-bit accumulator + LDA $A0 ; load room ID + CMP.w #$000E : BNE + ; freezor1 + LDA $22 : AND.w #$01FF ; check x-coord + CMP.w #368-8 : !BLT .normal + CMP.w #368+32-8 : !BGE .normal + LDA $20 : AND.w #$01FF ; check y-coord + CMP.w #400-22 : !BLT .normal + CMP.w #400+32-22 : !BGE .normal + JMP .permit + + : CMP.w #$007E : BNE + ; freezor2 + LDA $22 : AND.w #$01FF ; check x-coord + CMP.w #112-8 : !BLT .normal + CMP.w #112+32-8 : !BGE .normal + LDA $20 : AND.w #$01FF ; check y-coord + CMP.w #400-22 : !BLT .normal + CMP.w #400+32-22 : !BGE .normal + JMP .permit + + : CMP.w #$00DE : BNE + ; kholdstare + LDA $22 : AND.w #$01FF ; check x-coord + CMP.w #368-8 : !BLT .normal + CMP.w #368+32-8 : !BGE .normal + LDA $20 : AND.w #$01FF ; check y-coord + CMP.w #144-22 : !BLT .normal + CMP.w #144+32-22 : !BGE .normal + BRA .permit + + : .normal + SEP #$20 ; set 8-bit accumulator + BRA .done + .outdoors + LDA $8A : CMP.b #$70 : BNE + + LDA.l MireRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE .done + LDA $7EF2F0 : AND.b #$20 : BNE .done + LDA.b #$08 : PHA : PLB ; set data bank to $08 + LDY.b #$02 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; misery mire BRA .done - .outdoors - LDA $8A : CMP.b #$70 : BNE ++ - LDA.l MireRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE + - LDA $7EF2F0 : AND.b #$20 : BNE + - LDA.b #$08 : PHA : PLB ; set data bank to $08 - LDY.b #$02 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; misery mire - BRA + - ++ : CMP.b #$47 : BNE ++ - LDA.l TRockRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE + - LDA $7EF2C7 : AND.b #$20 : BNE + - LDA.b #$08 : PHA : PLB ; set data bank to $08 - LDY.b #$03 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; turtle rock - ++ - .done - + - PLY : PLX : PLB - LDA $7EF359 -RTL + + : CMP.b #$47 : BNE + + LDA.l TRockRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE .done + LDA $7EF2C7 : AND.b #$20 : BNE .done + LDA.b #$08 : PHA : PLB ; set data bank to $08 + LDY.b #$03 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; turtle rock + + + .done + PLY : PLX : PLB + LDA $7EF359 + RTL .permit - SEP #$20 ; set 8-bit accumulator - PLY : PLX : PLB - LDA.b #$02 ; Pretend we have master sword -RTL + SEP #$20 ; set 8-bit accumulator + PLY : PLX : PLB + LDA.b #$02 ; Pretend we have master sword + RTL .medallion_type db #$0F, #$10, #$11 ;================================================================================ diff --git a/tables.asm b/tables.asm index b26436f..cb45301 100644 --- a/tables.asm +++ b/tables.asm @@ -167,7 +167,7 @@ db #$00 ; #$00 = Off (default) - #$01 = On ;-------------------------------------------------------------------------------- org $308041 ; PC 0x180041 AllowSwordlessMedallionUse: -db #$00 ; #$00 = Off (default) - #$01 = Medallion Pads - #$02 = Always (Not Implemented) +db #$00 ; #$00 = Off (default) - #$01 = Medallion Pads - #$02 = Always ;-------------------------------------------------------------------------------- org $308042 ; PC 0x180042 PermitSQFromBosses: