diff --git a/src/defines.asm b/src/defines.asm index b038fb3a..94f345bf 100644 --- a/src/defines.asm +++ b/src/defines.asm @@ -339,11 +339,8 @@ !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_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 8fa05a2f..b61a71b9 100644 --- a/src/flagmenu.asm +++ b/src/flagmenu.asm @@ -827,75 +827,54 @@ eventflags_setmapstations: eventflags_prepare_events_menu: { - LDA $7ED820 : AND #$0038 : STA !ram_cm_zebmask - JSL eventflags_setup_zeb_ram - %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 + ; Zebettites + LDA $7ED820 : AND #$0038 + 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 - .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 + ; 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 - .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 + %setmenubank() + JML action_submenu } EventsMenu: dw #events_zebesawake + dw #events_speedboostquake dw #events_maridiatubebroken dw #events_shaktool dw #events_chozoacid - dw #events_metroid1 - dw #events_metroid2 - dw #events_metroid3 - dw #events_metroid4 - dw #events_zeb1 - dw #events_zeb2 - dw #events_zeb3 - dw #events_zeb4 + dw #events_metroids + dw #events_zebettites dw #events_mb1glass dw #events_zebesexploding dw #events_animals @@ -911,6 +890,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) @@ -920,53 +902,47 @@ 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_metroid3: - %cm_toggle_bit("3rd Metroids Cleared", $7ED822, #$0004, #0) - -events_metroid4: - %cm_toggle_bit("4th Metroids Cleared", $7ED822, #$0008, #0) - -events_zeb1: - %cm_toggle("1st Zebitite Cleared", !ram_cm_zeb1, #$08, #.routine) +events_metroids: + %cm_numfield("Metroid Rooms Cleared", !ram_cm_metmask, 0, 4, 1, 1, #.routine) .routine - LDA !ram_cm_zeb1 : BNE .set - TDC - .set - STA !ram_cm_zebmask - JML eventflags_set_zeb_ram + CMP #$0000 : BEQ .done + CMP #$0001 : BEQ .one + CMP #$0002 : BEQ .two + CMP #$0003 : BEQ .three + + LDA #$000F : BRA .done + .three + LDA #$0007 : BRA .done + .two + LDA #$0003 : BRA .done + .one + LDA #$0001 : BRA .done -events_zeb2: - %cm_toggle("2nd Zebitite Cleared", !ram_cm_zeb2, #$10, #.routine) - .routine - LDA !ram_cm_zeb2 : BNE .set - LDA #$0008 - .set - STA !ram_cm_zebmask - JML eventflags_set_zeb_ram + .done + STA $C1 + LDA $7ED822 : AND #$FFF0 : ORA $C1 : STA $7ED822 + RTL -events_zeb3: - %cm_toggle("3rd Zebitite Cleared", !ram_cm_zeb3, #$18, #.routine) +events_zebettites: + %cm_numfield("Zebs Killed", !ram_cm_zebmask, 0, 4, 1, 1, #.routine) .routine - LDA !ram_cm_zeb3 : BNE .set - LDA #$0010 - .set - STA !ram_cm_zebmask - JML eventflags_set_zeb_ram + 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 -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..b4b8d831 100644 --- a/src/symbols.asm +++ b/src/symbols.asm @@ -322,11 +322,8 @@ 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_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