diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 55c2b86..505b882 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -25,8 +25,8 @@ db #$05 ; mark sram as 32k org $3FFFFF ; <- 1FFFFF db #$00 ; expand file to 2mb -org $1FFFF8 ; timestamp rom -dl #$20170801 +org $1FFFF8 ; <- FFFF8 timestamp rom +db #$20, #$17, #$08, #$11 ; year/month/day ;================================================================================ @@ -50,7 +50,7 @@ dl #$20170801 !SRAM_SINK = "$7EF41E" ; <- change this !FRESH_FILE_MARKER = "$7EF4F0" ; zero if fresh file ;$7EF41A[w] - Programmable Item #1 -;$7EF41C[w] - Programmable Item #3 +;$7EF41C[w] - Programmable Item #2 ;$7EF41E[w] - Programmable Item #3 ;$7EF420 - $7EF44F - Stat Tracking Bank 1 ;$7EF450 - $7EF45F - RNG Item (Single) Flags @@ -102,6 +102,7 @@ incsrc flute.asm incsrc dungeondrops.asm incsrc halfmagicbat.asm incsrc newitems.asm +incsrc mantle.asm incsrc swordswap.asm incsrc stats.asm incsrc scratchpad.asm @@ -217,18 +218,18 @@ warnpc $AF8401 ;bank $3F reserved for internal debugging ;$7F5700 - $7F57FF reserved for downstream use ;================================================================================ -org $0080DC ; <- 0xDC - Bank00.asm:179 - Kill Music +;org $0080DC ; <- 0xDC - Bank00.asm:179 - Kill Music ;db #$A9, #$00, #$EA ;LDA.b #$00 : NOP ;================================================================================ -org $0AC53E ; <- 5453E - Bank0A.asm:1103 - (LDA $0AC51F, X) - i have no idea what this is for anymore +;org $0AC53E ; <- 5453E - Bank0A.asm:1103 - (LDA $0AC51F, X) - i have no idea what this is for anymore ;LDA.b #$7F ;NOP #2 ;================================================================================ ;org $05DF8B ; <- 2DF8B - Bank05.asm : 2483 ;AND.w #$0100 ; allow Sprite_DrawMultiple to access lower half of sprite tiles ;================================================================================ -;org $0DF8F1 ; this is required for the X-indicator in the HUD +;org $0DF8F1 ; this is required for the X-indicator in the HUD except not anymore obviously ; ;;red pendant ;db $2B, $31, $2C, $31, $3D, $31, $2E, $31 @@ -377,6 +378,9 @@ Ancilla_SetOam_XY_Long: org $0985E2 ; (break on $0985E4) AddReceivedItem: +org $098BAD +AddPendantOrCrystal: + org $0993DF AddDashTremor: diff --git a/c2807_v3.gfx b/c2807_v3.gfx index 7bad551..92c0502 100755 Binary files a/c2807_v3.gfx and b/c2807_v3.gfx differ diff --git a/c2e3e.gfx b/c2e3e.gfx index 5011965..5eb7917 100644 Binary files a/c2e3e.gfx and b/c2e3e.gfx differ diff --git a/darkworldspawn.asm b/darkworldspawn.asm index 0207705..ec98951 100644 --- a/darkworldspawn.asm +++ b/darkworldspawn.asm @@ -17,7 +17,7 @@ RTL ;-------------------------------------------------------------------------------- DarkWorldFlagSet: PHA - + STA $FFFFFF LDA !FORCE_PYRAMID : AND.b #$08 : BNE .pyramid LDA Bugfix_PreAgaDWDungeonDeathToFakeDW : BEQ + @@ -46,13 +46,17 @@ RTL RTL ;-------------------------------------------------------------------------------- SetDeathWorldChecked: - PHA + PHA : STA $FFFFFF LDA $1B : BEQ + ; skip this for indoors LDA $040C : CMP #$FF : BNE .done ; unless it's a cave + LDA $7EF3C5 : CMP.b #$03 : !BGE .done; thing we originally did - skip if agahnim 1 is dead +;<<<<<<< crystalsgoalganonrespawn LDA $1B : BNE + : LDA $A0 : BNE + : LDA GanonPyramidRespawn : BEQ + ; check if we died in ganon's room and pyramid respawn is enabled +;======= +; LDA $1B : BEQ + : LDA $A0 : BNE + ; check if we died in ganon's room +;>>>>>>> master LDA !FORCE_PYRAMID : ORA.b #$08 : STA !FORCE_PYRAMID ; set pyramid flag BRL DarkWorldFlagSet_pyramid + diff --git a/dialog.asm b/dialog.asm index a2fffe8..ff28384 100644 --- a/dialog.asm +++ b/dialog.asm @@ -260,7 +260,8 @@ DialogEtherTablet: RTL + BIT $F4 : BVC - ; Show normal text if Y is not pressed - LDA $7EF359 : CMP.b #$02 : !BGE .noText + LDA $7EF359 : CMP.b #$FF : BEQ .yesText : CMP.b #$02 : !BGE .noText + .yesText %LoadDialogAddress(EtherTabletText) PLA : JSL Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm) RTL @@ -276,7 +277,8 @@ DialogBombosTablet: RTL + BIT $F4 : BVC - ; Show normal text if Y is not pressed - LDA $7EF359 : CMP.b #$02 : !BGE .noText + LDA $7EF359 : CMP.b #$FF : BEQ .yesText : CMP.b #$02 : !BGE .noText + .yesText %LoadDialogAddress(BombosTabletText) PLA : JSL Sprite_ShowMessageUnconditional ; Text From MSPedestalText (tables.asm) RTL diff --git a/hardmode.asm b/hardmode.asm index e1235c2..77994f2 100644 --- a/hardmode.asm +++ b/hardmode.asm @@ -16,30 +16,36 @@ CalculateSpikeFloorDamage: RTL ;-------------------------------------------------------------------------------- CalculateByrnaUsage: - LDA $1B : BEQ + + LDA $1B : BEQ ++ REP #$20 ; set 16-bit accumulator LDA $A0 ; these are all decimal because i got them that way - CMP.w #279 + CMP.w #279 : BEQ + ; Spike Cave + CMP.w #179 : BEQ + ; Room in Misery Mire SEP #$20 ; set 8-bit accumulator - BNE + + BRA ++ + + + SEP #$20 ; set 8-bit accumulator PHX : TYX LDA.l ByrnaCaveCaneOfByrnaUsage, X : STA $00 PLX - + + ++ LDA $7EF36E ; thing we wrote over RTL ;-------------------------------------------------------------------------------- CalculateCapeUsage: - LDA $1B : BEQ + + LDA $1B : BEQ ++ REP #$20 ; set 16-bit accumulator LDA $A0 ; these are all decimal because i got them that way - CMP.w #279 + CMP.w #279 : BEQ + ; Spike Cave + CMP.w #179 : BEQ + ; Room in Misery Mire SEP #$20 ; set 8-bit accumulator - BNE + - PHX : TYX - LDA.l ByrnaCaveCapeUsage, X : STA $4C - PLX + BRA ++ + + SEP #$20 ; set 8-bit accumulator + PHX : TYX + LDA.l ByrnaCaveCapeUsage, X : STA $4C ; set cape decrement timer + PLX + ++ LDA $7EF36E ; thing we wrote over RTL ;-------------------------------------------------------------------------------- diff --git a/hooks.asm b/hooks.asm index deb99f4..0c20949 100644 --- a/hooks.asm +++ b/hooks.asm @@ -253,13 +253,13 @@ db #$80 ; BRA org $0DE81A ; <- 6E81A - equipment.asm : 1597 (STA $00) RTS org $0DE7B9 ; <- 6E7B9 - equipment.asm : 1548 (LDA.w #$16D0) -LDA.w #$1610 +LDA.w #$1590 org $0DE7CF ; <- 6E7CF - equipment.asm : 1554 (LDA.w #$16C8) -LDA.w #$1608 +LDA.w #$1588 org $0DE7E5 ; <- 6E7E5 - equipment.asm : 1560 (LDA.w #$16D8) -LDA.w #$1618 +LDA.w #$1598 org $0DECEB ; <- 6ECEB - equipment.asm : 1946 (LDA.w #$16E0) -LDA.w #$1620 +LDA.w #$15A0 ;-------------------------------------------------------------------------------- ;org $0DE9D8 ; <- 6E9D8 - equipment.asm : 1635 (LDA $E860, X : STA $12EA, X) ;BRA DrawProgressIcons_initPendantDiagram_notext @@ -713,9 +713,14 @@ JSL.l ItemCheck_BombosTablet org $05F285 ; <- 2F285 JSL.l ItemCheck_EtherTablet ;-------------------------------------------------------------------------------- -org $098BCC ; <- 48BCC - ancilla_init.asm : 1679 (LDA AddReceiveItem.item_graphics_indices, Y : STA $72) -;JSL.l SetTabletItem -JSL SpawnTabletItem : PLX : PLB : RTL +;org $098BCC ; <- 48BCC - ancilla_init.asm : 1679 (LDA AddReceiveItem.item_graphics_indices, Y : STA $72) +;;JSL.l SetTabletItem +;JSL SpawnTabletItem : PLX : PLB : RTL +;-------------------------------------------------------------------------------- +org $07859F ; <- 3859F - Bank07.asm : 965 (JSL AddPendantOrCrystal) +JSL SpawnTabletItem +org $07862A ; <- 3862A - Bank07.asm : 1064 (JSL AddPendantOrCrystal) +JSL SpawnTabletItem ;-------------------------------------------------------------------------------- ;================================================================================ @@ -896,9 +901,9 @@ LDX.w #HUD_TileMap org $0DFA9C ; <- 6FA9C - headsup_display.asm : 629 (MVN $0D, $7E ; $Transfer 0x014A bytes from $6FE77 -> $7EC700) MVN $207E ;-------------------------------------------------------------------------------- -;org $0DE48E ; <- 6E48E - equipment.asm : 1233 (LDA.w #$11CE : STA $00) - HOOK HERE TO DRAW ON THE ITEM SCREEN -;JSL.l DrawHUDSilverArrows -;NOP +org $0DE48E ; <- 6E48E - equipment.asm : 1233 (LDA.w #$11CE : STA $00) - HOOK HERE TO DRAW ON THE ITEM SCREEN +JSL.l DrawHUDDungeonItems +NOP ;-------------------------------------------------------------------------------- org $0DFB1F ; 6FB1F - headsup_display.asm : 681 (LDA $7EF340 : BEQ .hastNoBow) JSL.l CheckHUDSilverArrows @@ -1748,6 +1753,9 @@ JSL.l CheckForZelda org $1AFC55 ; <- D7C55 - sprite_movable_mantle.asm:34 (LDA $7EF34A : BEQ .return) NOP #6 ; remove check ;-------------------------------------------------------------------------------- +org $068841 ; <- 30841 - sprite_prep.asm:269 (LDA $0D00, X : ADD.b #$03 : STA $0D00, X) +JSL.l Mantle_CorrectPosition : NOP #2 +;-------------------------------------------------------------------------------- org $0DFA53 ; <- 6FA53 - hud check for lantern JSL.l LampCheck ;-------------------------------------------------------------------------------- diff --git a/inventory.asm b/inventory.asm index 5689a59..bbb5306 100644 --- a/inventory.asm +++ b/inventory.asm @@ -242,7 +242,7 @@ AddInventory: CMP.w #271 : BNE + : BRL .shop : + ; villiage of outcasts shop, lumberjack shop, lake hylia shop, dark world magic shop CMP.w #272 : BNE + : BRL .shop : + ; red shield shop CMP.w #284 : BNE + : BRL .shop : + ; bomb shop - ;CMP.w #265 : BNE + : BRL .shop : + ; potion shop - commented this out because it's easier to just block potion refills + ;CMP.w #265 : BNE + : BRL .shop : + ; potion shop - commented this out because it's easier to just block potion refills because this one interferes with the powder item being counted ;CMP.w #271 : BNE + : BRL .shop : + ; lake hylia shop CMP.w #287 : BNE + : BRL .shop : + ; kakariko shop CMP.w #255 : BNE + : BRL .shop : + ; light world death mountain shop @@ -257,12 +257,12 @@ AddInventory: LDA $1B : BNE + : BRL .fullItemCounts : + ; ==BEGIN INDOOR-ONLY SECTION - REP #$20 ; Set 16-bit Accumulator - LDA $A0 ; load room ID - CMP.w #$0010 : BNE + ; Ganon Fall Room + ;REP #$20 ; Set 16-bit Accumulator + ;LDA $A0 ; load room ID + ;CMP.w #$0010 : BNE + ; Ganon Fall Room - I think this got taken out ;!SHAME_CHEST = "$7EF416" ; ---s ---- - LDA !SHAME_CHEST : ORA.w #$0010 : STA !SHAME_CHEST - + + ;LDA !SHAME_CHEST : ORA.w #$0010 : STA !SHAME_CHEST + ;+ SEP #$20 ; Set 8-bit Accumulator LDA $040C ; get dungeon id @@ -738,6 +738,7 @@ RTL ; GetWitchLootOAMTableIndex ; in: A - Loot ID ; out: A - Loot OAM Table Index +; check if this is even still referenced anywhere ;-------------------------------------------------------------------------------- GetWitchLootOAMTableIndex: PHX diff --git a/mantle.asm b/mantle.asm new file mode 100644 index 0000000..fd5d1cd --- /dev/null +++ b/mantle.asm @@ -0,0 +1,12 @@ +;================================================================================ +; Mantle Object Changes +;-------------------------------------------------------------------------------- +Mantle_CorrectPosition: + LDA $7EF3C6 : AND.b #$04 : BEQ + + LDA.b #$0A : STA $0D10, X ; just spawn it off to the side where we know it should be + LDA.b #$03 : STA $0D30, X + LDA.b #$90 : STA $0ED0, X + + + LDA $0D00, X : !ADD.b #$03 ; thing we did originally +RTL +;-------------------------------------------------------------------------------- \ No newline at end of file diff --git a/newitems.asm b/newitems.asm index 5367126..e7f7ad9 100755 --- a/newitems.asm +++ b/newitems.asm @@ -220,7 +220,7 @@ AddReceivedItemExpandedGetItem: + CMP.b #$63 : BNE + ; RNG Pool Item (Multi) BRL .done + CMP.b #$6A : BNE + ; Goal Collectable (Single/Triforce) - JSL.l StatsFinalPrep + JSL.l ActivateGoal BRL .done + CMP.b #$6B : BNE + ; Goal Collectable (Multi/Power Star) BRA .multi_collect @@ -228,7 +228,7 @@ AddReceivedItemExpandedGetItem: .multi_collect LDA GoalItemRequirement : BEQ ++ LDA !GOAL_COUNTER : INC : STA !GOAL_COUNTER - CMP GoalItemRequirement : !BLT ++ : JSL.l StatsFinalPrep : ++ + CMP GoalItemRequirement : !BLT ++ : JSL.l ActivateGoal : ++ BRL .done + CMP.b #$70 : !BLT + : CMP.b #$80 : !BGE + ; Free Map AND #$0F : CMP #$08 : !BGE ++ @@ -237,6 +237,7 @@ AddReceivedItemExpandedGetItem: ++ !SUB #$08 %ValueShift() + BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both ORA $7EF369 : STA $7EF369 ; Map 2 BRL .done + CMP.b #$80 : !BLT + : CMP.b #$90 : !BGE + ; Free Compass @@ -246,6 +247,7 @@ AddReceivedItemExpandedGetItem: ++ !SUB #$08 %ValueShift() + BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both ORA $7EF365 : STA $7EF365 ; Compass 2 BRL .done + CMP.b #$90 : !BLT + : CMP.b #$A0 : !BGE + ; Free Big Key @@ -255,6 +257,7 @@ AddReceivedItemExpandedGetItem: ++ !SUB #$08 %ValueShift() + BIT.b #$C0 : BEQ +++ : LDA.b #$C0 : +++ ; Make Hyrule Castle / Sewers Count for Both ORA $7EF367 : STA $7EF367 ; Big Key 2 BRL .done + CMP.b #$A0 : !BLT + : CMP.b #$B0 : !BGE + ; Free Small Key @@ -801,4 +804,9 @@ CountBottles: ++ TXA RTS +;-------------------------------------------------------------------------------- +ActivateGoal: + STZ $11 + STZ $B0 +JMP.l StatsFinalPrep ;-------------------------------------------------------------------------------- \ No newline at end of file diff --git a/pendantcrystalhud.asm b/pendantcrystalhud.asm index 7780496..54e43ba 100644 --- a/pendantcrystalhud.asm +++ b/pendantcrystalhud.asm @@ -139,6 +139,178 @@ ShowDungeonItems: BEQ + : LDA.w #$0000 : RTL : + ; if set, send the zero onwards LDA $040C : AND.w #$00FF : CMP.w #$00FF ; original logic RTL +;-------------------------------------------------------------------------------- +DrawHUDDungeonItems: + ; left side + ;LDA.w #$2871 : STA $1604 ; dungeon row + LDA.w #$2810 : STA $1644 ; small keys + LDA.w #$2811 : STA $1684 ; big key + LDA.w #$2821 : STA $16C4 ; map + LDA.w #$2C20 : STA $1704 ; compass + + ; dungeon names + LDA.w #$2D50 : STA $1606 ; sewers + LDA.w #$2D51 : STA $1608 ; Eastern + LDA.w #$2D52 : STA $160A ; Desert + LDA.w #$2D53 : STA $160C ; Hera + LDA.w #$2D54 : STA $160E ; Agahnims Tower + + LDA.w #$2D55 : STA $1612 ; PoD + LDA.w #$2D56 : STA $1614 ; Swamp + LDA.w #$2D57 : STA $1616 ; Skull Woods + LDA.w #$2D58 : STA $1618 ; Thieves Town + LDA.w #$2D59 : STA $161A ; Ice + LDA.w #$2D5A : STA $161C ; Mire + LDA.w #$2D5B : STA $161E ; Turtle Rock + + LDA.w #$2D5C : STA $1622 ; Ganon's Tower + + SEP #$20 ; set 8-bit accumulator + ; Small Keys + LDA.b #$16 : !ADD $7EF37C : STA $1646 : LDA.b #$28 : ADC #$00 : sta $1646+1 ; sewers + LDA.b #$16 : !ADD $7EF37E : STA $1648 : LDA.b #$28 : ADC #$00 : sta $1648+1 ; Eastern + LDA.b #$16 : !ADD $7EF37F : STA $164A : LDA.b #$28 : ADC #$00 : sta $164A+1 ; Desert + LDA.b #$16 : !ADD $7EF386 : STA $164C : LDA.b #$28 : ADC #$00 : sta $164C+1 ; Hera + LDA.b #$16 : !ADD $7EF380 : STA $164E : LDA.b #$28 : ADC #$00 : sta $164E+1 ; Agahnims Tower + + LDA.b #$16 : !ADD $7EF382 : STA $1652 : LDA.b #$28 : ADC #$00 : sta $1652+1 ; PoD + LDA.b #$16 : !ADD $7EF381 : STA $1654 : LDA.b #$28 : ADC #$00 : sta $1654+1 ; Swamp + LDA.b #$16 : !ADD $7EF384 : STA $1656 : LDA.b #$28 : ADC #$00 : sta $1656+1 ; Skull Woods + LDA.b #$16 : !ADD $7EF387 : STA $1658 : LDA.b #$28 : ADC #$00 : sta $1658+1 ; Thieves Town + LDA.b #$16 : !ADD $7EF385 : STA $165A : LDA.b #$28 : ADC #$00 : sta $165A+1 ; Ice + LDA.b #$16 : !ADD $7EF383 : STA $165C : LDA.b #$28 : ADC #$00 : sta $165C+1 ; Mire + LDA.b #$16 : !ADD $7EF388 : STA $165E : LDA.b #$28 : ADC #$00 : sta $165E+1 ; Turtle Rock + + LDA.b #$16 : !ADD $7EF389 : STA $1662 : LDA.b #$28 : ADC #$00 : sta $1662+1 ; Ganon's Tower + + REP #$20 ; set 16-bit accumulator + + ; Big Keys + LDA $7EF367 : AND.w #$0080 : BEQ + ; sewers + LDA.w #$2826 : STA $1686 + + + LDA $7EF367 : AND.w #$0020 : BEQ + ; Eastern + LDA.w #$2826 : STA $1688 + + + LDA $7EF367 : AND.w #$0010 : BEQ + ; Desert + LDA.w #$2826 : STA $168A + + + LDA $7EF366 : AND.w #$0020 : BEQ + ; Hera + LDA.w #$2826 : STA $168C + + + LDA $7EF367 : AND.w #$0008 : BEQ + ; Agahnims Tower + LDA.w #$2826 : STA $168E + + + LDA $7EF367 : AND.w #$0002 : BEQ + ; PoD + LDA.w #$2826 : STA $1692 + + + LDA $7EF367 : AND.w #$0004 : BEQ + ; Swamp + LDA.w #$2826 : STA $1694 + + + LDA $7EF366 : AND.w #$0080 : BEQ + ; Skull Woods + LDA.w #$2826 : STA $1696 + + + LDA $7EF366 : AND.w #$0010 : BEQ + ; Thieves Town + LDA.w #$2826 : STA $1698 + + + LDA $7EF366 : AND.w #$0040 : BEQ + ; Ice + LDA.w #$2826 : STA $169A + + + LDA $7EF367 : AND.w #$0001 : BEQ + ; Mire + LDA.w #$2826 : STA $169C + + + LDA $7EF366 : AND.w #$0008 : BEQ + ; Turtle Rock + LDA.w #$2826 : STA $169E + + + LDA $7EF366 : AND.w #$0004 : BEQ + ; Ganon's Tower + LDA.w #$2826 : STA $16A2 + + + + ; Maps + LDA $7EF369 : AND.w #$0080 : BEQ + ; sewers + LDA.w #$2826 : STA $16C6 + + + LDA $7EF369 : AND.w #$0020 : BEQ + ; Eastern + LDA.w #$2826 : STA $16C8 + + + LDA $7EF369 : AND.w #$0010 : BEQ + ; Desert + LDA.w #$2826 : STA $16CA + + + LDA $7EF368 : AND.w #$0020 : BEQ + ; Hera + LDA.w #$2826 : STA $16CC + + + LDA $7EF369 : AND.w #$0008 : BEQ + ; Agahnims Tower + LDA.w #$2826 : STA $16CE + + + LDA $7EF369 : AND.w #$0002 : BEQ + ; PoD + LDA.w #$2826 : STA $16D2 + + + LDA $7EF369 : AND.w #$0004 : BEQ + ; Swamp + LDA.w #$2826 : STA $16D4 + + + LDA $7EF368 : AND.w #$0080 : BEQ + ; Skull Woods + LDA.w #$2826 : STA $16D6 + + + LDA $7EF368 : AND.w #$0010 : BEQ + ; Thieves Town + LDA.w #$2826 : STA $16D8 + + + LDA $7EF368 : AND.w #$0040 : BEQ + ; Ice + LDA.w #$2826 : STA $16DA + + + LDA $7EF369 : AND.w #$0001 : BEQ + ; Mire + LDA.w #$2826 : STA $16DC + + + LDA $7EF368 : AND.w #$0008 : BEQ + ; Turtle Rock + LDA.w #$2826 : STA $16DE + + + LDA $7EF368 : AND.w #$0004 : BEQ + ; Ganon's Tower + LDA.w #$2826 : STA $16E2 + + + + ; Compasses + LDA $7EF365 : AND.w #$0080 : BEQ + ; sewers + LDA.w #$2C26 : STA $1706 + + + LDA $7EF365 : AND.w #$0020 : BEQ + ; Eastern + LDA.w #$2C26 : STA $1708 + + + LDA $7EF365 : AND.w #$0010 : BEQ + ; Desert + LDA.w #$2C26 : STA $170A + + + LDA $7EF364 : AND.w #$0020 : BEQ + ; Hera + LDA.w #$2C26 : STA $170C + + + LDA $7EF365 : AND.w #$0008 : BEQ + ; Agahnims Tower + LDA.w #$2C26 : STA $170E + + + LDA $7EF365 : AND.w #$0002 : BEQ + ; PoD + LDA.w #$2C26 : STA $1712 + + + LDA $7EF365 : AND.w #$0004 : BEQ + ; Swamp + LDA.w #$2C26 : STA $1714 + + + LDA $7EF364 : AND.w #$0080 : BEQ + ; Skull Woods + LDA.w #$2C26 : STA $1716 + + + LDA $7EF364 : AND.w #$0010 : BEQ + ; Thieves Town + LDA.w #$2C26 : STA $1718 + + + LDA $7EF364 : AND.w #$0040 : BEQ + ; Ice + LDA.w #$2C26 : STA $171A + + + LDA $7EF365 : AND.w #$0001 : BEQ + ; Mire + LDA.w #$2C26 : STA $171C + + + LDA $7EF364 : AND.w #$0008 : BEQ + ; Turtle Rock + LDA.w #$2C26 : STA $171E + + + LDA $7EF364 : AND.w #$0004 : BEQ + ; Ganon's Tower + LDA.w #$2C26 : STA $1722 + + + + LDA.w #$11CE : STA $00 ; thing we wrote over +RTL +;-------------------------------------------------------------------------------- ;================================================================================ DrawPendantCrystalDiagram: PHP : PHB : PHK : PLB diff --git a/rngfixes.asm b/rngfixes.asm index bbdffab..bc722bc 100644 --- a/rngfixes.asm +++ b/rngfixes.asm @@ -21,6 +21,7 @@ RigChestRNG: JSL.l DecrementItemCounter RTL .forceHeart + LDA #$33 : STA $C8 ; assure the correct state if player talked to shopkeeper LDA $0403 : AND.b #$40 : BNE .notHeart LDA #$07 ; give prize item RTL diff --git a/stats.asm b/stats.asm index 636d743..3b99f58 100644 --- a/stats.asm +++ b/stats.asm @@ -115,7 +115,7 @@ ; s - swordless bosses ; c - capacity upgrades ;-------------------------------------------------------------------------------- -; $7EF452 - unused +; $7EF453 - unused ;-------------------------------------------------------------------------------- ; $7EF454w[2] - challenge timer (low) ;-------------------------------------------------------------------------------- @@ -356,19 +356,19 @@ StatsFinalPrep: ;LDA $FFFFFF ;JSL.l Clock_IsSupported - BRA + - REP #$20 ; set 16-bit accumulator - - LDA $00 : PHA - LDA $02 : PHA - - JSL.l Clock_QuickStamp - LDA $00 : STA !RTA_END - LDA $02 : STA !RTA_END+2 - - PLA : STA $02 - PLA : STA $00 - + + ;BRA + + ; REP #$20 ; set 16-bit accumulator + ; + ; LDA $00 : PHA + ; LDA $02 : PHA + ; + ; JSL.l Clock_QuickStamp + ; LDA $00 : STA !RTA_END + ; LDA $02 : STA !RTA_END+2 + ; + ; PLA : STA $02 + ; PLA : STA $00 + ;+ .done PLP : PLX : PLA diff --git a/tables.asm b/tables.asm index 863eded..65db063 100644 --- a/tables.asm +++ b/tables.asm @@ -10,7 +10,7 @@ HeartPiece_Lumberjack_Tree: HeartPiece_Spectacle_Cave: db #$17 HeartPiece_Circle_Bushes: - db #$61 + db #$3D HeartPiece_Graveyard_Warp: db #$17 HeartPiece_Mire_Warp: @@ -646,7 +646,7 @@ HeartContainer_Mothula: HeartContainer_Blind: db #$3E HeartContainer_Kholdstare: - db #$3E + db #$6A HeartContainer_Vitreous: db #$3E HeartContainer_Trinexx: @@ -683,6 +683,7 @@ db #$01 ; #00 = Do not respawn on Pyramid after Death - #$01 = Respawn on Pyrami org $30816A ; PC 0x18016A FreeItemText: db #$01 ; #00 = Off - #$01 = On (default) +;================================================================================ org $30816B ; PC 0x18016B ByrnaCaveCaneOfByrnaUsage: db #$04, #$02, #$01 ; normal, 1/2, 1/4 magic diff --git a/utilities.asm b/utilities.asm index d8d1651..5798716 100644 --- a/utilities.asm +++ b/utilities.asm @@ -8,6 +8,22 @@ ; out: A - Sprite GFX ID ;-------------------------------------------------------------------------------- GetSpriteID: + + CMP.b #$16 : BEQ .bottle ; Bottle + CMP.b #$2B : BEQ .bottle ; Red Potion w/bottle + CMP.b #$2C : BEQ .bottle ; Green Potion w/bottle + CMP.b #$2D : BEQ .bottle ; Blue Potion w/bottle + CMP.b #$3C : BEQ .bottle ; Bee w/bottle + CMP.b #$3D : BEQ .bottle ; Fairy w/bottle + CMP.b #$48 : BEQ .bottle ; Gold Bee w/bottle + BRA .notBottle + .bottle + PHA : JSR.w CountBottles : CMP.l BottleLimit : !BLT + + PLA : LDA.l BottleLimitReplacement + JSL.l GetSpriteID + RTL + + + PLA : .notBottle PHX PHB : PHK : PLB ;-------- @@ -20,19 +36,37 @@ RTL JSL.l GetRNGItemSingle : JMP GetSpriteID ++ CMP.b #$FB : BNE ++ ; RNG Item (Multi) JSL.l GetRNGItemMulti : JMP GetSpriteID + ++ CMP.b #$FD : BNE ++ ; Progressive Armor + LDA $7EF35B : CMP.l ProgressiveArmorLimit : !BLT + ; Progressive Armor Limit + LDA.l ProgressiveArmorReplacement + JSL.l GetSpriteID + RTL + + + LDA.b #$04 : RTL ++ CMP.b #$FE : BNE ++ ; Progressive Sword - LDA $7EF359 : BNE + ; No Sword + LDA $7EF359 + CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit + LDA.l ProgressiveSwordReplacement + JSL.l GetSpriteID + RTL + + : CMP.b #$00 : BNE + ; No Sword LDA.b #$43 : RTL + : CMP.b #$01 : BNE + ; Fighter Sword LDA.b #$44 : RTL + : CMP.b #$02 : BNE + ; Master Sword LDA.b #$45 : RTL - + ; Everything Else + + ; CMP.b #$03 : BNE + ; Tempered Sword LDA.b #$46 : RTL + + ++ : CMP.b #$FF : BNE ++ ; Progressive Shield - LDA !PROGRESSIVE_SHIELD : AND #$C0 : BNE + ; No Shield + LDA !PROGRESSIVE_SHIELD : AND #$C0 : LSR #6 + CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit + LDA.l ProgressiveShieldReplacement + JSL.l GetSpriteID + RTL + + : CMP.b #$00 : BNE + ; No Shield LDA.b #$2D : RTL - + : CMP.b #$40 : BNE + ; Fighter Shield + + : CMP.b #$01 : BNE + ; Fighter Shield LDA.b #$20 : RTL + ; Everything Else LDA.b #$2E : RTL @@ -69,7 +103,7 @@ RTL db $FE, $FF ; Progressive Sword & Shield ;6x - db $04, $0D ; Progressive Armor & Gloves + db $FD, $0D ; Progressive Armor & Gloves db $FA, $FB ; RNG Single & Multi db $FF, $FF, $FF, $FF, $FF, $FF ; Unused db $49, $4A, $49 ; Goal Item Single, Multi & Alt Multi @@ -95,6 +129,22 @@ RTL ; out: A - Palette ;-------------------------------------------------------------------------------- GetSpritePalette: + + CMP.b #$16 : BEQ .bottle ; Bottle + CMP.b #$2B : BEQ .bottle ; Red Potion w/bottle + CMP.b #$2C : BEQ .bottle ; Green Potion w/bottle + CMP.b #$2D : BEQ .bottle ; Blue Potion w/bottle + CMP.b #$3C : BEQ .bottle ; Bee w/bottle + CMP.b #$3D : BEQ .bottle ; Fairy w/bottle + CMP.b #$48 : BEQ .bottle ; Gold Bee w/bottle + BRA .notBottle + .bottle + PHA : JSR.w CountBottles : CMP.l BottleLimit : !BLT + + PLA : LDA.l BottleLimitReplacement + JSL.l GetSpritePalette + RTL + + + PLA : .notBottle PHX PHB : PHK : PLB ;-------- @@ -104,7 +154,12 @@ GetSpritePalette: RTL .specialHandling CMP.b #$FD : BNE ++ ; Progressive Sword - LDA $7EF359 : BNE + ; No Sword + LDA $7EF359 + CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit + LDA.l ProgressiveSwordReplacement + JSL.l GetSpritePalette + RTL + + : CMP.b #$00 : BNE + ; No Sword LDA.b #$04 : RTL + : CMP.b #$01 : BNE + ; Fighter Sword LDA.b #$04 : RTL @@ -113,14 +168,23 @@ RTL + ; Everything Else LDA.b #$08 : RTL ++ : CMP.b #$FE : BNE ++ ; Progressive Shield - LDA $7EF35A : BNE + ; No Shield + LDA !PROGRESSIVE_SHIELD : AND #$C0 : LSR #6 + CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit + LDA.l ProgressiveShieldReplacement + JSL.l GetSpritePalette + RTL + + : CMP.b #$00 : BNE + ; No Shield LDA.b #$04 : RTL + : CMP.b #$01 : BNE + ; Fighter Shield LDA.b #$02 : RTL + ; Everything Else LDA.b #$08 : RTL ++ : CMP.b #$FF : BNE ++ ; Progressive Armor - LDA $7EF35B : BNE + ; Green Tunic + LDA $7EF35B : CMP.l ProgressiveArmorLimit : !BLT + ; Progressive Armor Limit + LDA.l ProgressiveArmorReplacement + JSL.l GetSpritePalette + RTL + + : CMP.b #$00 : BNE + ; Green Tunic LDA.b #$04 : RTL + ; Everything Else LDA.b #$02 : RTL @@ -184,9 +248,42 @@ IsNarrowSprite: PHB : PHK : PLB ;-------- - CMP.b #$5F : BNE ++ ; Special Handler for Progressive Shield - LDA $7EF35A : BNE + : SEC : BRA .done : +; No Shield + CMP.b #$16 : BEQ .bottle ; Bottle + CMP.b #$2B : BEQ .bottle ; Red Potion w/bottle + CMP.b #$2C : BEQ .bottle ; Green Potion w/bottle + CMP.b #$2D : BEQ .bottle ; Blue Potion w/bottle + CMP.b #$3C : BEQ .bottle ; Bee w/bottle + CMP.b #$3D : BEQ .bottle ; Fairy w/bottle + CMP.b #$48 : BEQ .bottle ; Gold Bee w/bottle + BRA .notBottle + .bottle + JSR.w CountBottles : CMP.l BottleLimit : !BLT + + LDA.l BottleLimitReplacement + JSL.l IsNarrowSprite + BRL .done + + : BRA .continue + .notBottle + CMP.b #$5E : BNE ++ ; Progressive Sword + LDA $7EF359 : CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit + LDA.l ProgressiveSwordReplacement + JSL.l IsNarrowSprite + BRA .done + + : BRA .continue + ++ : CMP.b #$5F : BNE ++ ; Progressive Shield + LDA !PROGRESSIVE_SHIELD : AND #$C0 : BNE + : SEC : BRA .done ; No Shield + LSR #6 : CMP.l ProgressiveShieldLimit : !BLT + ; Progressive Shield Limit + LDA.l ProgressiveShieldReplacement + JSL.l IsNarrowSprite + BRA .done + + + ;LDA $7EF35A : BNE + : SEC : BRA .done : +; No Shield BRA .false ; Everything Else + ++ CMP.b #$60 : BNE ++ ; Progressive Armor + LDA $7EF35B : CMP.l ProgressiveArmorLimit : !BLT + ; Progressive Armor Limit + LDA.l ProgressiveArmorReplacement + JSL.l IsNarrowSprite + BRA .done + + ++ CMP.b #$62 : BNE ++ ; RNG Item (Single) JSL.l GetRNGItemSingle : BRA .continue ++ CMP.b #$63 : BNE ++ ; RNG Item (Multi) @@ -282,7 +379,7 @@ RTS ; in: A - Loot ID ; out: A - OAM Slots Taken ;-------------------------------------------------------------------------------- -; This wastes two OAM slots if you don't want a shadow - fix later +; This wastes two OAM slots if you don't want a shadow - fix later - I wrote "fix later" over a year ago and it's still not fixed (Aug 6, 2017) ;-------------------------------------------------------------------------------- 2084B8 !SPRITE_OAM = "$7EC025" !SKIP_EOR = "$7F5008"