From 3058f0928503fea4ac722b9f374e93a5221be4c4 Mon Sep 17 00:00:00 2001 From: InsaneFirebat Date: Tue, 22 Apr 2025 14:37:37 -0400 Subject: [PATCH 1/3] Combine Zeb events and add speedbooster quake --- src/defines.asm | 6 +-- src/flagmenu.asm | 137 +++++++++++++++++------------------------------ src/symbols.asm | 6 +-- 3 files changed, 51 insertions(+), 98 deletions(-) diff --git a/src/defines.asm b/src/defines.asm index b038fb3a..d3985667 100644 --- a/src/defines.asm +++ b/src/defines.asm @@ -339,11 +339,7 @@ !ram_cm_etanks = !WRAM_MENU_START+$AC !ram_cm_reserve = !WRAM_MENU_START+$AE -!ram_cm_zeb1 = !WRAM_MENU_START+$90 -!ram_cm_zeb2 = !WRAM_MENU_START+$92 -!ram_cm_zeb3 = !WRAM_MENU_START+$94 -!ram_cm_zeb4 = !WRAM_MENU_START+$96 -!ram_cm_zebmask = !WRAM_MENU_START+$98 +!ram_cm_zebmask = !WRAM_MENU_START+$90 !ram_cm_ceres_seconds = !WRAM_MENU_START+$90 !ram_cm_zebes_seconds = !WRAM_MENU_START+$92 diff --git a/src/flagmenu.asm b/src/flagmenu.asm index 8fa05a2f..7ece591a 100644 --- a/src/flagmenu.asm +++ b/src/flagmenu.asm @@ -827,64 +827,31 @@ eventflags_setmapstations: eventflags_prepare_events_menu: { - LDA $7ED820 : AND #$0038 : STA !ram_cm_zebmask - JSL eventflags_setup_zeb_ram + LDA $7ED820 : AND #$0038 + CMP #$0020 : BEQ .four + CMP #$0018 : BEQ .three + CMP #$0010 : BEQ .two + CMP #$0008 : BEQ .one + BRA .done + + .one + LDA #$0001 : BRA .done + .two + LDA #$0002 : BRA .done + .three + LDA #$0003 : BRA .done + .four + LDA #$0004 + + .done + STA !ram_cm_zebmask %setmenubank() JML action_submenu } -eventflags_set_zeb_ram: -{ - LDA $7ED820 : AND #$FFC7 - ORA !ram_cm_zebmask : STA $7ED820 - - ; Intentional fallthrough - LDA !ram_cm_zebmask -} - -eventflags_setup_zeb_ram: -{ - CMP #$0020 : BPL .zeb4 - CMP #$0018 : BPL .zeb3 - CMP #$0010 : BPL .zeb2 - CMP #$0008 : BPL .zeb1 - STA !ram_cm_zeb1 - .clear_zeb2 - STA !ram_cm_zeb2 - .clear_zeb3 - STA !ram_cm_zeb3 - .clear_zeb4 - STA !ram_cm_zeb4 - RTL - - .zeb4 - LDA #$0020 : STA !ram_cm_zeb4 - LDA #$0018 : STA !ram_cm_zeb3 - LDA #$0010 : STA !ram_cm_zeb2 - LDA #$0008 : STA !ram_cm_zeb1 - RTL - - .zeb3 - LDA #$0018 : STA !ram_cm_zeb3 - LDA #$0010 : STA !ram_cm_zeb2 - LDA #$0008 : STA !ram_cm_zeb1 - TDC - BRA .clear_zeb4 - - .zeb2 - LDA #$0010 : STA !ram_cm_zeb2 - LDA #$0008 : STA !ram_cm_zeb1 - TDC - BRA .clear_zeb3 - - .zeb1 - LDA #$0008 : STA !ram_cm_zeb1 - TDC - BRA .clear_zeb2 -} - EventsMenu: dw #events_zebesawake + dw #events_speedboostquake dw #events_maridiatubebroken dw #events_shaktool dw #events_chozoacid @@ -892,10 +859,7 @@ EventsMenu: dw #events_metroid2 dw #events_metroid3 dw #events_metroid4 - dw #events_zeb1 - dw #events_zeb2 - dw #events_zeb3 - dw #events_zeb4 + dw #events_zebettites dw #events_mb1glass dw #events_zebesexploding dw #events_animals @@ -911,6 +875,9 @@ EventsMenu: events_zebesawake: %cm_toggle_bit("Zebes Awake", $7ED820, #$0001, #0) +events_speedboostquake: + %cm_toggle_bit("Speedbooster Lavaquake", $7ED822, #$0020, #0) + events_maridiatubebroken: %cm_toggle_bit("Maridia Tube Broken", $7ED820, #$0800, #0) @@ -932,41 +899,35 @@ events_metroid3: events_metroid4: %cm_toggle_bit("4th Metroids Cleared", $7ED822, #$0008, #0) -events_zeb1: - %cm_toggle("1st Zebitite Cleared", !ram_cm_zeb1, #$08, #.routine) - .routine - LDA !ram_cm_zeb1 : BNE .set - TDC - .set - STA !ram_cm_zebmask - JML eventflags_set_zeb_ram - -events_zeb2: - %cm_toggle("2nd Zebitite Cleared", !ram_cm_zeb2, #$10, #.routine) +events_zebettites: + dw !ACTION_CHOICE + dl #!ram_cm_zebmask + dw .routine + db #$28, "Zebs Killed", #$FF + db #$28, " 0", #$FF + db #$28, " 1", #$FF + db #$28, " 2", #$FF + db #$28, " 3", #$FF + db #$28, " 4", #$FF + db #$FF .routine - LDA !ram_cm_zeb2 : BNE .set + CMP #$0000 : BEQ .done + CMP #$0001 : BEQ .one + CMP #$0002 : BEQ .two + CMP #$0003 : BEQ .three + + LDA #$0020 : BRA .done + .three + LDA #$0018 : BRA .done + .two + LDA #$0010 : BRA .done + .one LDA #$0008 - .set - STA !ram_cm_zebmask - JML eventflags_set_zeb_ram - -events_zeb3: - %cm_toggle("3rd Zebitite Cleared", !ram_cm_zeb3, #$18, #.routine) - .routine - LDA !ram_cm_zeb3 : BNE .set - LDA #$0010 - .set - STA !ram_cm_zebmask - JML eventflags_set_zeb_ram -events_zeb4: - %cm_toggle("4th Zebitite Cleared", !ram_cm_zeb4, #$20, #.routine) - .routine - LDA !ram_cm_zeb4 : BNE .set - LDA #$0018 - .set - STA !ram_cm_zebmask - JML eventflags_set_zeb_ram + .done + STA $C1 + LDA $7ED820 : AND #$FFC7 : ORA $C1 : STA $7ED820 + RTL events_mb1glass: %cm_toggle_bit("MB1 Glass Broken", $7ED820, #$0004, #0) diff --git a/src/symbols.asm b/src/symbols.asm index c3874630..5fb83c20 100644 --- a/src/symbols.asm +++ b/src/symbols.asm @@ -322,11 +322,7 @@ ram_cm_plasma = !ram_cm_plasma ; !WRAM_MENU_START+$AA ram_cm_etanks = !ram_cm_etanks ; !WRAM_MENU_START+$AC ram_cm_reserve = !ram_cm_reserve ; !WRAM_MENU_START+$AE -ram_cm_zeb1 = !ram_cm_zeb1 ; !WRAM_MENU_START+$90 -ram_cm_zeb2 = !ram_cm_zeb2 ; !WRAM_MENU_START+$92 -ram_cm_zeb3 = !ram_cm_zeb3 ; !WRAM_MENU_START+$94 -ram_cm_zeb4 = !ram_cm_zeb4 ; !WRAM_MENU_START+$96 -ram_cm_zebmask = !ram_cm_zebmask ; !WRAM_MENU_START+$98 +ram_cm_zebmask = !ram_cm_zebmask ; !WRAM_MENU_START+$90 ram_cm_ceres_seconds = !ram_cm_ceres_seconds ; !WRAM_MENU_START+$90 ram_cm_zebes_seconds = !ram_cm_zebes_seconds ; !WRAM_MENU_START+$92 From 037c3a83bae6c36693100b8ab1f008366c0cdd89 Mon Sep 17 00:00:00 2001 From: InsaneFirebat Date: Thu, 24 Apr 2025 09:57:22 -0400 Subject: [PATCH 2/3] Change Zebettites from choice to numfield --- src/flagmenu.asm | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/flagmenu.asm b/src/flagmenu.asm index 7ece591a..e444c6b1 100644 --- a/src/flagmenu.asm +++ b/src/flagmenu.asm @@ -900,16 +900,7 @@ events_metroid4: %cm_toggle_bit("4th Metroids Cleared", $7ED822, #$0008, #0) events_zebettites: - dw !ACTION_CHOICE - dl #!ram_cm_zebmask - dw .routine - db #$28, "Zebs Killed", #$FF - db #$28, " 0", #$FF - db #$28, " 1", #$FF - db #$28, " 2", #$FF - db #$28, " 3", #$FF - db #$28, " 4", #$FF - db #$FF + %cm_numfield("Zebs Killed", !ram_cm_zebmask, 0, 4, 1, 1, #.routine) .routine CMP #$0000 : BEQ .done CMP #$0001 : BEQ .one From cea24e43d0bfeb02c96e3b8ecdcd101a2bc20141 Mon Sep 17 00:00:00 2001 From: InsaneFirebat Date: Fri, 25 Apr 2025 17:58:05 -0400 Subject: [PATCH 3/3] Combine Metroids events Also fix events menu setup --- src/defines.asm | 1 + src/flagmenu.asm | 80 +++++++++++++++++++++++++++++++----------------- src/symbols.asm | 1 + 3 files changed, 54 insertions(+), 28 deletions(-) diff --git a/src/defines.asm b/src/defines.asm index d3985667..94f345bf 100644 --- a/src/defines.asm +++ b/src/defines.asm @@ -340,6 +340,7 @@ !ram_cm_reserve = !WRAM_MENU_START+$AE !ram_cm_zebmask = !WRAM_MENU_START+$90 +!ram_cm_metmask = !WRAM_MENU_START+$92 !ram_cm_ceres_seconds = !WRAM_MENU_START+$90 !ram_cm_zebes_seconds = !WRAM_MENU_START+$92 diff --git a/src/flagmenu.asm b/src/flagmenu.asm index e444c6b1..b61a71b9 100644 --- a/src/flagmenu.asm +++ b/src/flagmenu.asm @@ -827,24 +827,42 @@ eventflags_setmapstations: eventflags_prepare_events_menu: { + ; Zebettites LDA $7ED820 : AND #$0038 - CMP #$0020 : BEQ .four - CMP #$0018 : BEQ .three - CMP #$0010 : BEQ .two - CMP #$0008 : BEQ .one - BRA .done + CMP #$0020 : BEQ .fourZeb + CMP #$0018 : BEQ .threeZeb + CMP #$0010 : BEQ .twoZeb + CMP #$0008 : BEQ .oneZeb + LDA #$0000 : BRA .doneZeb + .fourZeb + LDA #$0004 : BRA .doneZeb + .threeZeb + LDA #$0003 : BRA .doneZeb + .twoZeb + LDA #$0002 : BRA .doneZeb + .oneZeb + LDA #$0001 : BRA .doneZeb + .doneZeb + STA !ram_cm_zebmask - .one - LDA #$0001 : BRA .done - .two - LDA #$0002 : BRA .done - .three - LDA #$0003 : BRA .done - .four - LDA #$0004 + ; Metroids + LDA $7ED822 : AND #$000F + BIT #$0008 : BNE .fourMet + BIT #$0004 : BNE .threeMet + BIT #$0002 : BNE .twoMet + BIT #$0001 : BNE .oneMet + LDA #$0000 : BRA .doneMet + .fourMet + LDA #$0004 : BRA .doneMet + .threeMet + LDA #$0003 : BRA .doneMet + .twoMet + LDA #$0002 : BRA .doneMet + .oneMet + LDA #$0001 : BRA .doneMet + .doneMet + STA !ram_cm_metmask - .done - STA !ram_cm_zebmask %setmenubank() JML action_submenu } @@ -855,10 +873,7 @@ EventsMenu: dw #events_maridiatubebroken dw #events_shaktool dw #events_chozoacid - dw #events_metroid1 - dw #events_metroid2 - dw #events_metroid3 - dw #events_metroid4 + dw #events_metroids dw #events_zebettites dw #events_mb1glass dw #events_zebesexploding @@ -887,17 +902,26 @@ events_shaktool: events_chozoacid: %cm_toggle_bit("Chozo Lowered Acid", $7ED821, #$0010, #0) -events_metroid1: - %cm_toggle_bit("1st Metroids Cleared", $7ED822, #$0001, #0) - -events_metroid2: - %cm_toggle_bit("2nd Metroids Cleared", $7ED822, #$0002, #0) +events_metroids: + %cm_numfield("Metroid Rooms Cleared", !ram_cm_metmask, 0, 4, 1, 1, #.routine) + .routine + CMP #$0000 : BEQ .done + CMP #$0001 : BEQ .one + CMP #$0002 : BEQ .two + CMP #$0003 : BEQ .three -events_metroid3: - %cm_toggle_bit("3rd Metroids Cleared", $7ED822, #$0004, #0) + LDA #$000F : BRA .done + .three + LDA #$0007 : BRA .done + .two + LDA #$0003 : BRA .done + .one + LDA #$0001 : BRA .done -events_metroid4: - %cm_toggle_bit("4th Metroids Cleared", $7ED822, #$0008, #0) + .done + STA $C1 + LDA $7ED822 : AND #$FFF0 : ORA $C1 : STA $7ED822 + RTL events_zebettites: %cm_numfield("Zebs Killed", !ram_cm_zebmask, 0, 4, 1, 1, #.routine) diff --git a/src/symbols.asm b/src/symbols.asm index 5fb83c20..b4b8d831 100644 --- a/src/symbols.asm +++ b/src/symbols.asm @@ -323,6 +323,7 @@ ram_cm_etanks = !ram_cm_etanks ; !WRAM_MENU_START+$AC ram_cm_reserve = !ram_cm_reserve ; !WRAM_MENU_START+$AE ram_cm_zebmask = !ram_cm_zebmask ; !WRAM_MENU_START+$90 +ram_cm_metmask = !ram_cm_metmask ; !WRAM_MENU_START+$92 ram_cm_ceres_seconds = !ram_cm_ceres_seconds ; !WRAM_MENU_START+$90 ram_cm_zebes_seconds = !ram_cm_zebes_seconds ; !WRAM_MENU_START+$92