From cd961b695375fae420aeef706bf4c0193673d25e Mon Sep 17 00:00:00 2001 From: scawful Date: Fri, 10 Jan 2025 19:40:17 -0500 Subject: [PATCH] Update progress flags and world map icon conditions --- Core/symbols.asm | 31 ++--- Overworld/overworld.asm | 46 ++------ Overworld/world_map.asm | 234 ++++++++++++++++++------------------- Sprites/NPCs/maku_tree.asm | 6 +- Util/item_cheat.asm | 2 +- 5 files changed, 142 insertions(+), 177 deletions(-) diff --git a/Core/symbols.asm b/Core/symbols.asm index ad2e7c7..8367834 100644 --- a/Core/symbols.asm +++ b/Core/symbols.asm @@ -44,17 +44,8 @@ SaveRam: ; 0x03 - Agahnim defeated GAMESTATE = $7EF3C5 -; Map icon -; 0x00 - Red X on Maku Tree/Maku Warp -; 0x01 - Red X on Hall of Secrets -; 0x02 - Red X on Kalyxo Pyramid -; 0x03 - Toadstool Woods Crystal -; 0x04 - Kalyxo Crystals All -; 0x05 - -; 0x06 - -; 0x07 - -; 0x08 - Skull on GT | Climb Ganon's Tower -MAPICON = $7EF3C7 +; Red X on Hall of Secrets +; Red X on Kalyxo Pyramid ; .fmp h.i. ; f - fortress of secrets @@ -76,7 +67,19 @@ OOSPROG2 = $7EF3C6 ; .... ...m ; m - maku tree has met link (0: no | 1: yes) -OOSPROG3 = $7EF3D4 +MakuTreeQuest = $7EF3D4 + +; Map icon +; 0x00 - Red X on Maku Tree/Maku Warp +; 0x01 - Toadstool Woods Crystal +; 0x02 - Kalyxo All Crystals +; 0x03 - +; 0x04 - +; 0x05 - +; 0x06 - +; 0x07 - +; 0x08 - Skull on GT | Climb Ganon's Tower +MapIcon = $7EF3C7 ; Dungeon ID Legend ; Mushroom Grotto ID 0x0C (Palace of Darkness) @@ -95,11 +98,11 @@ OOSPROG3 = $7EF3D4 ; i - Ice Palace ; m - Misery Mire ; t - Turtle Rock -CRYSTALS = $7EF37A +CRYSTALS = $7EF37A ; 01 - Fishing Rod ; 02 - Portal Rod -CUSTOMRODS = $7EF351 +CustomRods = $7EF351 ; Free SRAM Block 38A-3C4 FishingRod = $7EF38A diff --git a/Overworld/overworld.asm b/Overworld/overworld.asm index f798e76..c0b2cbd 100644 --- a/Overworld/overworld.asm +++ b/Overworld/overworld.asm @@ -121,18 +121,18 @@ LoadDarkWorldIntro: LDA.b #$40 : STA.l $7EF3CA RTL .not_dw_spawn - LDA.l $7EF3C5 : CMP.b #$02 : BNE .continue + LDA.l GAMESTATE : CMP.b #$02 : BNE .intro_sequence ; Check for maku tree progress flag - LDA.l $7EF3D6 : CMP.b #$02 : BCS .has_pearl + LDA.l OOSPROG : CMP.b #$02 : BCS .has_pearl STZ.w $1B LDA.b #$40 : STA.l $7EF3CA RTL - .continue - .has_pearl + .has_pearl + .intro_sequence ; Check if the player was in a dungeon when they saved LDA.b $1B : BNE .indoors LDA.l $7EF3CA - .indoors + .indoors RTL } pushpc @@ -171,7 +171,7 @@ org $0794D9 JSL LoadOverworldPitAreas : BCC .overworld_pit_transition JSL $01FFD9 ; TakeDamageFromPit RTS -.overworld_pit_transition + .overworld_pit_transition org $1AF5C3 : CMP.b #$5E @@ -210,8 +210,6 @@ SpawnPointData: #_02DB78: dw $00D0 ; 0x05 - Old man cave - ROOM 00D0 #_02DB7A: dw $00E4 ; 0x06 - Old man home - ROOM 00E4 -; --------------------------------------------------------- - .camera_scroll_boundaries #_02DB7C: db $21, $20, $21, $21, $09, $09, $09, $0A ; 0x00 - Link's house #_02DB84: db $02, $02, $02, $03, $04, $04, $04, $05 ; 0x01 - Sanctuary @@ -221,8 +219,6 @@ SpawnPointData: #_02DBA4: db $1E, $1E, $1E, $1F, $01, $00, $01, $01 ; 0x05 - Old man cave #_02DBAC: db $1D, $1C, $1D, $1D, $08, $08, $08, $09 ; 0x06 - Old man home -; --------------------------------------------------------- - .horizontal_scroll #_02DBB4: dw $0900 ; 0x00 - Link's house #_02DBB6: dw $0480 ; 0x01 - Sanctuary @@ -232,8 +228,6 @@ SpawnPointData: #_02DBBE: dw $0100 ; 0x05 - Old man cave #_02DBC0: dw $0800 ; 0x06 - Old man home -; --------------------------------------------------------- - .vertical_scroll #_02DBC2: dw $2110 ; 0x00 - Link's house #_02DBC4: dw $0231 ; 0x01 - Sanctuary @@ -243,8 +237,6 @@ SpawnPointData: #_02DBCC: dw $1E8C ; 0x05 - Old man cave #_02DBCE: dw $1D10 ; 0x06 - Old man home -; --------------------------------------------------------- - .y_coordinate #_02DBD0: dw $2178 ; 0x00 - Link's house #_02DBD2: dw $029C ; 0x01 - Sanctuary @@ -254,8 +246,6 @@ SpawnPointData: #_02DBDA: dw $1EF8 ; 0x05 - Old man cave #_02DBDC: dw $1D98 ; 0x06 - Old man home -; --------------------------------------------------------- - .x_coordinate #_02DBDE: dw $0978 ; 0x00 - Link's house #_02DBE0: dw $04F8 ; 0x01 - Sanctuary @@ -265,19 +255,15 @@ SpawnPointData: #_02DBE8: dw $01A8 ; 0x05 - Old man cave #_02DBEA: dw $0878 ; 0x06 - Old man home -; --------------------------------------------------------- - .camera_trigger_y #_02DBEC: dw $017F ; 0x00 - Link's house #_02DBEE: dw $00A7 ; 0x01 - Sanctuary #_02DBF0: dw $0083 ; 0x02 - Prison #_02DBF2: dw $007B ; 0x03 - Uncle #_02DBF4: dw $009A ; 0x04 - Throne -#_02DBF6: DW $0103 ; 0x05 - Old man cave +#_02DBF6: dw $0103 ; 0x05 - Old man cave #_02DBF8: dw $0187 ; 0x06 - Old man home -; --------------------------------------------------------- - .camera_trigger_x #_02DBFA: dw $017F ; 0x00 - Link's house #_02DBFC: dw $00FF ; 0x01 - Sanctuary @@ -287,8 +273,6 @@ SpawnPointData: #_02DC04: dw $017F ; 0x05 - Old man cave #_02DC06: dw $007F ; 0x06 - Old man home -; --------------------------------------------------------- - .main_GFX #_02DC08: db $03 ; 0x00 - Link's house #_02DC09: db $03 ; 0x01 - Sanctuary @@ -298,8 +282,6 @@ SpawnPointData: #_02DC0D: db $06 ; 0x05 - Old man cave #_02DC0E: db $14 ; 0x06 - Old man home -; --------------------------------------------------------- - .floor #_02DC0F: db $00 ; 0x00 - Link's house #_02DC10: db $00 ; 0x01 - Sanctuary @@ -309,8 +291,6 @@ SpawnPointData: #_02DC14: db $00 ; 0x05 - Old man cave #_02DC15: db $00 ; 0x06 - Old man home -; --------------------------------------------------------- - .dungeon_id #_02DC16: db $FF ; 0x00 - Link's house #_02DC17: db $00 ; 0x01 - Sanctuary @@ -320,8 +300,6 @@ SpawnPointData: #_02DC1B: db $FF ; 0x05 - Old man cave #_02DC1C: db $FF ; 0x06 - Old man home -; --------------------------------------------------------- - .layer #_02DC1D: db $00 ; 0x00 - Link's house #_02DC1E: db $00 ; 0x01 - Sanctuary @@ -331,8 +309,6 @@ SpawnPointData: #_02DC22: db $00 ; 0x05 - Old man cave #_02DC23: db $01 ; 0x06 - Old man home -; --------------------------------------------------------- - .camera_scroll_controller #_02DC24: db $00 ; 0x00 - Link's house #_02DC25: db $22 ; 0x01 - Sanctuary @@ -342,8 +318,6 @@ SpawnPointData: #_02DC29: db $02 ; 0x05 - Old man cave #_02DC2A: db $02 ; 0x06 - Old man home -; --------------------------------------------------------- - .quadrant #_02DC2B: db $02 ; 0x00 - Link's house #_02DC2C: db $00 ; 0x01 - Sanctuary @@ -353,8 +327,6 @@ SpawnPointData: #_02DC30: db $10 ; 0x05 - Old man cave #_02DC31: db $02 ; 0x06 - Old man home -; --------------------------------------------------------- - .overworld_door_tilemap #_02DC32: dw $0816 ; 0x00 - Link's house #_02DC34: dw $0000 ; 0x01 - Sanctuary @@ -364,8 +336,6 @@ SpawnPointData: #_02DC3C: dw $0000 ; 0x05 - Old man cave #_02DC3E: dw $0000 ; 0x06 - Old man home -; --------------------------------------------------------- - .entrance_id #_02DC40: dw $0000 ; 0x00 - Link's house #_02DC42: dw $0002 ; 0x01 - Sanctuary @@ -375,8 +345,6 @@ SpawnPointData: #_02DC4A: dw $004F ; 0x05 - Old man cave #_02DC4C: dw $0030 ; 0x06 - Old man home -; --------------------------------------------------------- - .song #_02DC4E: db $07 ; 0x00 - Link's house - SONG 07 #_02DC4F: db $14 ; 0x01 - Sanctuary - SONG 14 diff --git a/Overworld/world_map.asm b/Overworld/world_map.asm index dfe9c87..d485187 100644 --- a/Overworld/world_map.asm +++ b/Overworld/world_map.asm @@ -172,8 +172,6 @@ MapIconDraw: LDA.l $7EC10A : PHA LDA.l $7EC10B : PHA - ;----------------------------------- - .draw_prizes LDA.b $8A : AND.b #$40 : BEQ .lwprizes LDA.l OOSPROG : AND.b #$02 : BNE .check_pendants @@ -208,156 +206,152 @@ MapIconDraw: JMP restore_coords_and_exit .lwprizes - ;----------------------------------- - - LDA.l $7EF3C7 : CMP.b #$01 : BEQ .hall_of_secrets - CMP.b #$02 : BEQ .draw_secret - CMP.b #$03 : BEQ .draw_crystal_1 - CMP.b #$04 : BCS .draw_crystals - JSL DrawEonEscapeIcon - JSR HandleMapDrawIcon - JMP restore_coords_and_exit - - .hall_of_secrets + LDA.l OOSPROG : CMP.b #$02 : BNE + JSL DrawHallOfSecretsIcon JSR HandleMapDrawIcon - JMP restore_coords_and_exit - - .draw_secret ; Pyramid of Power + JMP .main_quest + + + LDA.l OOSPROG : AND.b #$10 : BEQ .main_quest + ; Pyramid of Power JSL DrawPyramidIcon JSR HandleMapDrawIcon_noflash - JMP .skip_draw_6 + .main_quest + + LDA.l MapIcon : CMP.b #$01 : BEQ .draw_crystal_1 + CMP.b #$02 : BEQ .draw_crystals + JSL DrawEonEscapeIcon + JSR HandleMapDrawIcon + JMP restore_coords_and_exit .draw_crystal_1 - ; Draw Crystal 1 - LDA.l $7EF37A : AND #$02 : BNE .skip_draw_0 - ; X position - LDA.b #$00 : STA.l $7EC10B - LDA.b #$87 : STA.l $7EC10A - ; Y position - LDA.b #$04 : STA.l $7EC109 - LDA.b #$01 : STA.l $7EC108 - ; Tile GFX - LDA.b #$64 : STA.b $0D - LDA.b #$38 : STA.b $0C - ; Tile Size - LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 - LDA.b #$0E : STA.l $7EC025 ; OAM Slot used - JSR HandleMapDrawIcon - .skip_draw_0 - JMP restore_coords_and_exit + ; Draw Crystal 1 + LDA.l $7EF37A : AND #$02 : BNE .skip_draw_0 + ; X position + LDA.b #$00 : STA.l $7EC10B + LDA.b #$87 : STA.l $7EC10A + ; Y position + LDA.b #$04 : STA.l $7EC109 + LDA.b #$01 : STA.l $7EC108 + ; Tile GFX + LDA.b #$64 : STA.b $0D + LDA.b #$38 : STA.b $0C + ; Tile Size + LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + LDA.b #$0E : STA.l $7EC025 ; OAM Slot used + JSR HandleMapDrawIcon + .skip_draw_0 + JMP restore_coords_and_exit .draw_crystals - ; Draw Crystal 2 - LDA.l $7EF37A : AND #$10 : BNE .skip_draw_1 - ; X position (2) - LDA.b #$1E : STA.l $7EC10B - LDA.b #$A0 : STA.l $7EC10A - ; Y position (2) - LDA.b #$09 : STA.l $7EC109 - LDA.b #$74 : STA.l $7EC108 + ; Draw Crystal 2 + LDA.l $7EF37A : AND #$10 : BNE .skip_draw_1 + ; X position (2) + LDA.b #$1E : STA.l $7EC10B + LDA.b #$A0 : STA.l $7EC10A + ; Y position (2) + LDA.b #$09 : STA.l $7EC109 + LDA.b #$74 : STA.l $7EC108 - LDA.b #$64 : STA.b $0D - LDA.b #$34 : STA.b $0C ; Tile GFX + LDA.b #$64 : STA.b $0D + LDA.b #$34 : STA.b $0C ; Tile GFX - LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 - LDA.b #$08 : STA.l $7EC025 + LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + LDA.b #$08 : STA.l $7EC025 - JSR HandleMapDrawIcon - .skip_draw_1 + JSR HandleMapDrawIcon + .skip_draw_1 - ; Draw Crystal 3 - LDA.l $7EF37A : AND #$40 : BNE .skip_draw_2 - ; X position - LDA.b #$08 : STA.l $7EC10B - LDA.b #$10 : STA.l $7EC10A - ; Y position - LDA.b #$04 : STA.l $7EC109 - LDA.b #$0E : STA.l $7EC108 + ; Draw Crystal 3 + LDA.l $7EF37A : AND #$40 : BNE .skip_draw_2 + ; X position + LDA.b #$08 : STA.l $7EC10B + LDA.b #$10 : STA.l $7EC10A + ; Y position + LDA.b #$04 : STA.l $7EC109 + LDA.b #$0E : STA.l $7EC108 - LDA.b #$64 : STA.b $0D - LDA.b #$34 : STA.b $0C ; Tile GFX + LDA.b #$64 : STA.b $0D + LDA.b #$34 : STA.b $0C ; Tile GFX - LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 - LDA.b #$0D : STA.l $7EC025 + LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + LDA.b #$0D : STA.l $7EC025 - JSR HandleMapDrawIcon - .skip_draw_2 + JSR HandleMapDrawIcon + .skip_draw_2 + ; Draw Crystal 4 + LDA.l $7EF37A : AND #$20 : BNE .skip_draw_3 + ; X position + LDA.b #$0E : STA.l $7EC10B + LDA.b #$5E : STA.l $7EC10A + ; Y position + LDA.b #$06 : STA.l $7EC109 + LDA.b #$68 : STA.l $7EC108 - ; Draw Crystal 4 - LDA.l $7EF37A : AND #$20 : BNE .skip_draw_3 - ; X position - LDA.b #$0E : STA.l $7EC10B - LDA.b #$5E : STA.l $7EC10A - ; Y position - LDA.b #$06 : STA.l $7EC109 - LDA.b #$68 : STA.l $7EC108 + LDA.b #$64 : STA.b $0D + LDA.b #$3C : STA.b $0C ; Tile GFX - LDA.b #$64 : STA.b $0D - LDA.b #$3C : STA.b $0C ; Tile GFX + LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + LDA.b #$0B : STA.l $7EC025 - LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 - LDA.b #$0B : STA.l $7EC025 + JSR HandleMapDrawIcon + .skip_draw_3 - JSR HandleMapDrawIcon - .skip_draw_3 + ; Draw Crystal 5 + LDA.l $7EF37A : AND #$04 : BNE .skip_draw_4 + ; X position + LDA.b #$0C : STA.l $7EC10B + LDA.b #$34 : STA.l $7EC10A + ; Y position + LDA.b #$00 : STA.l $7EC109 + LDA.b #$0E : STA.l $7EC108 - ; Draw Crystal 5 - LDA.l $7EF37A : AND #$04 : BNE .skip_draw_4 - ; X position - LDA.b #$0C : STA.l $7EC10B - LDA.b #$34 : STA.l $7EC10A - ; Y position - LDA.b #$00 : STA.l $7EC109 - LDA.b #$0E : STA.l $7EC108 + LDA.b #$64 : STA.b $0D + LDA.b #$34 : STA.b $0C ; Tile GFX - LDA.b #$64 : STA.b $0D - LDA.b #$34 : STA.b $0C ; Tile GFX + LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + LDA.b #$09 : STA.l $7EC025 - LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 - LDA.b #$09 : STA.l $7EC025 + JSR HandleMapDrawIcon + .skip_draw_4 - JSR HandleMapDrawIcon - .skip_draw_4 + ; Draw Crystal 6 + LDA.l $7EF37A : AND #$01 : BNE .skip_draw_5 + ; X position (6) + LDA.b #$0D : STA.l $7EC10B + LDA.b #$05 : STA.l $7EC10A + ; Y position (6) + LDA.b #$0D : STA.l $7EC109 + LDA.b #$09 : STA.l $7EC108 - ; Draw Crystal 6 - LDA.l $7EF37A : AND #$01 : BNE .skip_draw_5 - ; X position (6) - LDA.b #$0D : STA.l $7EC10B - LDA.b #$05 : STA.l $7EC10A - ; Y position (6) - LDA.b #$0D : STA.l $7EC109 - LDA.b #$09 : STA.l $7EC108 + LDA.b #$64 : STA.b $0D + LDA.b #$32 : STA.b $0C ; Tile GFX - LDA.b #$64 : STA.b $0D - LDA.b #$32 : STA.b $0C ; Tile GFX + LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + LDA.b #$0A : STA.l $7EC025 - LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 - LDA.b #$0A : STA.l $7EC025 + JSR HandleMapDrawIcon + .skip_draw_5 - JSR HandleMapDrawIcon - .skip_draw_5 + ; Draw Crystal 7 + LDA.l $7EF37A : AND #$08 : BNE .skip_draw_6 + ; X position + LDA.b #$00 : STA.l $7EC10B + LDA.b #$F4 : STA.l $7EC10A + ; Y position + LDA.b #$0D : STA.l $7EC109 + LDA.b #$0E : STA.l $7EC108 - ; Draw Crystal 7 - LDA.l $7EF37A : AND #$08 : BNE .skip_draw_6 - ; X position - LDA.b #$00 : STA.l $7EC10B - LDA.b #$F4 : STA.l $7EC10A - ; Y position - LDA.b #$0D : STA.l $7EC109 - LDA.b #$0E : STA.l $7EC108 + LDA.b #$64 : STA.b $0D + LDA.b #$32 : STA.b $0C ; Tile GFX - LDA.b #$64 : STA.b $0D - LDA.b #$32 : STA.b $0C ; Tile GFX + LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + LDA.b #$0C : STA.l $7EC025 - LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 - LDA.b #$0C : STA.l $7EC025 + JSR HandleMapDrawIcon + .skip_draw_6 - JSR HandleMapDrawIcon - .skip_draw_6 - - JMP restore_coords_and_exit + JMP restore_coords_and_exit } HandleMapDrawIcon: diff --git a/Sprites/NPCs/maku_tree.asm b/Sprites/NPCs/maku_tree.asm index 27203e7..80131de 100644 --- a/Sprites/NPCs/maku_tree.asm +++ b/Sprites/NPCs/maku_tree.asm @@ -76,7 +76,7 @@ Sprite_MakuTree_Main: MakuTree_Handler: { ; Check the progress flags - LDA.l $7EF3D4 : CMP.b #$01 : BEQ .has_met_link + LDA.l MakuTreeQuest : AND.b #$01 : BNE .has_met_link %GotoAction(1) RTS .has_met_link @@ -92,8 +92,8 @@ Sprite_MakuTree_Main: LDA.w SprY, X : STA $05 JSL GetDistance8bit_Long : CMP #$28 : BCS .not_too_close %ShowUnconditionalMessage($20) - LDA.b #$01 : STA.l $7EF3D4 - LDA.b #$01 : STA.l $7EF3C7 ; Mark the Hall of Secrets + LDA.b #$01 : STA.l MakuTreeQuest + LDA.b #$01 : STA.l MapIcon ; Mushroom Grotto LDA.l $7EF3D6 : ORA.b #$02 : STA.l $7EF3D6 %GotoAction(2) .not_too_close diff --git a/Util/item_cheat.asm b/Util/item_cheat.asm index 0a50216..953a2ee 100644 --- a/Util/item_cheat.asm +++ b/Util/item_cheat.asm @@ -179,7 +179,7 @@ endif STA.l $7EF280,X LDA.b #$02 : STA $7EF3C5 - LDA.b #$01 : STA OOSPROG3 + LDA.b #$01 : STA MakuTreeQuest LDA.b #%00001010 : STA OOSPROG END: