diff --git a/src/defines.asm b/src/defines.asm index 572564a5..787c0649 100644 --- a/src/defines.asm +++ b/src/defines.asm @@ -38,11 +38,11 @@ !CTRL_SHORTCUT_SKIP_REMAINING_PEA = !CTRL_SHORTCUT_ROUTINE+$7FA !CTRL_SHORTCUT_SKIP_REMAINING_PEA_VALUE = $FCFC -; If WRAM_PERSIST_START is changed from $7EFD80 then also adjust init.asm +; If WRAM_PERSIST_START is changed from $7EFDA0 then also adjust init.asm !WRAM_AND_CRASH_SIZE = #$0300 !WRAM_SIZE = #$0200 !WRAM_START = $7EFD00 -!WRAM_PERSIST_START = $7EFD80 +!WRAM_PERSIST_START = $7EFDA0 !WRAM_MENU_START = $7EFE00 !WRAM_END = $7EFF00 !CRASHDUMP = $7EFF00 @@ -113,7 +113,7 @@ !ram_room_has_set_rng = !WRAM_START+$5E ; Room set RNG only uses the most significant bit !ram_activated_shine_duration = !WRAM_START+$60 -; ^ FREE SPACE ^ up to +$6C +; ^ FREE SPACE ^ up to +$8C ; ---------------------------------------------------------- ; A few room strats like shinetune use several variables @@ -121,48 +121,49 @@ ; but also they do not need many other variables, ; so the following variables share the same WRAM -!ram_xpos = !WRAM_START+$6E -!ram_ypos = !WRAM_START+$70 -!ram_subpixel_pos = !WRAM_START+$72 -!ram_HUD_check = !WRAM_START+$74 -!ram_shot_timer = !WRAM_START+$76 -!ram_quickdrop_counter = !WRAM_START+$78 -!ram_walljump_counter = !WRAM_START+$7A -!ram_fail_sum = !WRAM_START+$7C -!ram_fail_count = !WRAM_START+$7E +!ram_xpos = !WRAM_START+$8E +!ram_ypos = !WRAM_START+$90 +!ram_subpixel_pos = !WRAM_START+$92 +!ram_HUD_check = !WRAM_START+$94 +!ram_shot_timer = !WRAM_START+$96 +!ram_quickdrop_counter = !WRAM_START+$98 +!ram_walljump_counter = !WRAM_START+$9A +!ram_fail_sum = !WRAM_START+$9C +!ram_fail_count = !WRAM_START+$9E ; Shot timer also reuses values -!ram_shot_timer_past1 = !WRAM_START+$78 -!ram_shot_timer_past2 = !WRAM_START+$7A -!ram_shot_timer_past3 = !WRAM_START+$7C -!ram_shot_timer_past4 = !WRAM_START+$7E +!ram_shot_timer_past1 = !WRAM_START+$98 +!ram_shot_timer_past2 = !WRAM_START+$9A +!ram_shot_timer_past3 = !WRAM_START+$9C +!ram_shot_timer_past4 = !WRAM_START+$9E ; Kihunter manip -!ram_enemy0_last_xpos = !WRAM_START+$6E -!ram_enemy0_last_ypos = !WRAM_START+$70 -!ram_enemy4_last_xpos = !WRAM_START+$72 -!ram_enemy4_last_ypos = !WRAM_START+$74 -!ram_enemy6_last_xpos = !WRAM_START+$76 -!ram_enemy6_last_ypos = !WRAM_START+$78 -!ram_enemy8_last_xpos = !WRAM_START+$7A -!ram_enemy8_last_ypos = !WRAM_START+$7C +!ram_enemy0_last_xpos = !WRAM_START+$8E +!ram_enemy0_last_ypos = !WRAM_START+$90 +!ram_enemy4_last_xpos = !WRAM_START+$92 +!ram_enemy4_last_ypos = !WRAM_START+$94 +!ram_enemy6_last_xpos = !WRAM_START+$96 +!ram_enemy6_last_ypos = !WRAM_START+$98 +!ram_enemy8_last_xpos = !WRAM_START+$9A +!ram_enemy8_last_ypos = !WRAM_START+$9C ; Kraid radar (reuses above ram_enemy6 variables) -!ram_radar6 = !WRAM_START+$6E -!ram_radar7 = !WRAM_START+$70 -!ram_enemy7_last_xpos = !WRAM_START+$7A -!ram_enemy7_last_ypos = !WRAM_START+$7C +!ram_radar6 = !WRAM_START+$8E +!ram_radar7 = !WRAM_START+$90 +!ram_enemy7_last_xpos = !WRAM_START+$9A +!ram_enemy7_last_ypos = !WRAM_START+$9C ; Shinetune -!ram_shine_dash_held_late = !WRAM_START+$6E -!ram_shinetune_early_1 = !WRAM_START+$70 -!ram_shinetune_late_1 = !WRAM_START+$72 -!ram_shinetune_early_2 = !WRAM_START+$74 -!ram_shinetune_late_2 = !WRAM_START+$76 -!ram_shinetune_early_3 = !WRAM_START+$78 -!ram_shinetune_late_3 = !WRAM_START+$7A -!ram_shinetune_early_4 = !WRAM_START+$7C -!ram_shinetune_late_4 = !WRAM_START+$7E +!ram_shine_dash_held_late = !WRAM_START+$8E +!ram_shinetune_early_1 = !WRAM_START+$90 +!ram_shinetune_late_1 = !WRAM_START+$92 +!ram_shinetune_early_2 = !WRAM_START+$94 +!ram_shinetune_late_2 = !WRAM_START+$96 +!ram_shinetune_early_3 = !WRAM_START+$98 +!ram_shinetune_late_3 = !WRAM_START+$9A +!ram_shinetune_early_4 = !WRAM_START+$9C +!ram_shinetune_late_4 = !WRAM_START+$9E + ; ---------------------------------------------------------- ; WRAM variables below this point are PERSISTENT. @@ -179,19 +180,20 @@ !ram_magic_pants_enabled = !WRAM_PERSIST_START+$0A !ram_space_pants_enabled = !WRAM_PERSIST_START+$0C -!ram_kraid_claw_rng = !WRAM_PERSIST_START+$0E -!ram_kraid_wait_rng = !WRAM_PERSIST_START+$10 -!ram_draygon_rng_left = !WRAM_PERSIST_START+$12 -!ram_draygon_rng_right = !WRAM_PERSIST_START+$14 -!ram_turret_rng = !WRAM_PERSIST_START+$16 -!ram_ridley_rng_flags = !WRAM_PERSIST_START+$18 -!ram_ridley_rng_times_and_fireball = !WRAM_PERSIST_START+$1A -!ram_crocomire_rng = !WRAM_PERSIST_START+$1C -!ram_phantoon_phase_rng = !WRAM_PERSIST_START+$1E -!ram_phantoon_eye_and_flames_rng = !WRAM_PERSIST_START+$20 -!ram_botwoon_rng = !WRAM_PERSIST_START+$22 -!ram_baby_rng = !WRAM_PERSIST_START+$24 -!ram_mb_rng = !WRAM_PERSIST_START+$26 + +!ram_game_loop_extras = !WRAM_PERSIST_START+$0E +!ram_infinite_ammo = !WRAM_PERSIST_START+$10 +!ram_suits_heat_damage_value = !WRAM_PERSIST_START+$12 +!ram_sprite_feature_flags = !WRAM_PERSIST_START+$14 +!ram_door_portal_flags = !WRAM_PERSIST_START+$16 +!ram_door_source = !WRAM_PERSIST_START+$18 +!ram_door_destination = !WRAM_PERSIST_START+$1A +!ram_frames_held = !WRAM_PERSIST_START+$1C +!ram_quickboot_spc_state = !WRAM_PERSIST_START+$1E +!ram_display_backup = !WRAM_PERSIST_START+$20 +!ram_slowdown_mode = !WRAM_PERSIST_START+$22 + +; ^ FREE SPACE ^ up to +$26 !ram_itempickups_all = !WRAM_PERSIST_START+$28 !ram_itempickups_visible = !WRAM_PERSIST_START+$2A @@ -215,24 +217,7 @@ !ram_watch_edit_lock_left = !WRAM_PERSIST_START+$4A !ram_watch_edit_lock_right = !WRAM_PERSIST_START+$4C -!ram_game_loop_extras = !WRAM_PERSIST_START+$4E -!ram_infinite_ammo = !WRAM_PERSIST_START+$50 -!ram_suits_heat_damage_value = !WRAM_PERSIST_START+$52 -!ram_sprite_feature_flags = !WRAM_PERSIST_START+$54 -!ram_door_portal_flags = !WRAM_PERSIST_START+$56 -!ram_door_source = !WRAM_PERSIST_START+$58 -!ram_door_destination = !WRAM_PERSIST_START+$5A -!ram_frames_held = !WRAM_PERSIST_START+$5C -!ram_quickboot_spc_state = !WRAM_PERSIST_START+$5E -!ram_display_backup = !WRAM_PERSIST_START+$60 - -; ^ FREE SPACE ^ up to +$7C (!WRAM_START+$FC - !WRAM_PERSIST_START) - -; ----------------------- -; RAM (Bank 7E required) -; ----------------------- - -!ram_slowdown_mode = $7EFDFE +; ^ FREE SPACE ^ up to +$5E (!WRAM_START+$FE - !WRAM_PERSIST_START) ; --------- ; RAM Menu @@ -484,7 +469,7 @@ ; SRAM ; ----- -!SRAM_VERSION = #$001E +!SRAM_VERSION = #$001F !SRAM_START = $702000 !SRAM_SIZE = #$1000 @@ -572,10 +557,25 @@ !sram_update_timers_ctrl_input = !SRAM_START+$AC !sram_update_timers_options = !SRAM_START+$AE -; ^ FREE SPACE ^ up to +$EC +; ^ FREE SPACE ^ up to +$CE ; This is a continuation of sram_ctrl_shortcut_selections !sram_ctrl_additional_selections = !SRAM_START+$D0 ; 18 bytes starting from +$EE +!sram_hard_reset_clears_rng = !SRAM_START+$D1 ; only uses first bit +!sram_kraid_claw_rng = !SRAM_START+$D2 +!sram_kraid_wait_rng = !SRAM_START+$D4 +!sram_draygon_rng_left = !SRAM_START+$D6 +!sram_draygon_rng_right = !SRAM_START+$D8 +!sram_turret_rng = !SRAM_START+$DA +!sram_ridley_rng_flags = !SRAM_START+$DC +!sram_ridley_rng_times_and_fireball = !SRAM_START+$DE +!sram_crocomire_rng = !SRAM_START+$E0 +!sram_phantoon_phase_rng = !SRAM_START+$E2 +!sram_phantoon_eye_and_flames_rng = !SRAM_START+$E4 +!sram_botwoon_rng = !SRAM_START+$E6 +!sram_baby_rng = !SRAM_START+$E8 +!sram_mb_rng = !SRAM_START+$EA +!sram_rng_reserved = !SRAM_START+$EC ; available !sram_presetequiprando = !SRAM_START+$100 !sram_presetequiprando_beampref = !SRAM_START+$102 @@ -1238,12 +1238,11 @@ if !FEATURE_TINYSTATES !SRAM_SAVED_RNG = $737F80 !SRAM_SAVED_FRAME_COUNTER = $737F82 !SRAM_SAVED_ENEMY_COUNTER = $737F84 -!SRAM_TINYSTATE_ROOM = $737F86 +!SRAM_SAVED_MINIMAP = $737F86 !SRAM_SEG_TIMER_F = $737F88 !SRAM_SEG_TIMER_S = $737F8A !SRAM_SEG_TIMER_M = $737F8C -!SRAM_SAVED_MINIMAP = $737F8E -!SRAM_SLOWDOWN_MODE = $737F90 +!SRAM_SLOWDOWN_MODE = $737F8E else !SRAM_DMA_BANK = $770000 !SRAM_SAVED_RNG = $770080 diff --git a/src/enemy_rng.asm b/src/enemy_rng.asm index 95120f55..3ee4cec4 100644 --- a/src/enemy_rng.asm +++ b/src/enemy_rng.asm @@ -165,17 +165,17 @@ endif init_botwoon_rng: { - LDA !ram_botwoon_rng : AND !BOTWOON_RNG_ALL_PATTERN_MASK : STA !eram_botwoon_all_pattern_rng + LDA !sram_botwoon_rng : AND !BOTWOON_RNG_ALL_PATTERN_MASK : STA !eram_botwoon_all_pattern_rng AND !BOTWOON_RNG_FIRST_MASK : CMP !BOTWOON_RNG_FIRST_MASK : BEQ .invalid STA !eram_botwoon_first_rng : LSR #4 : ORA !eram_botwoon_first_rng .set_first STA !eram_botwoon_first_rng - LDA !ram_botwoon_rng : AND !BOTWOON_RNG_HIDDEN_MASK + LDA !sram_botwoon_rng : AND !BOTWOON_RNG_HIDDEN_MASK XBA : STA !eram_botwoon_hidden_rng - LDA !ram_botwoon_rng : AND !BOTWOON_RNG_SECOND_MASK + LDA !sram_botwoon_rng : AND !BOTWOON_RNG_SECOND_MASK LSR #2 : XBA : STA !eram_botwoon_second_rng - LDA !ram_botwoon_rng : AND !BOTWOON_RNG_SPIT_MASK : STA !eram_botwoon_spit_rng - LDA !ram_botwoon_rng : AND !BOTWOON_RNG_AFTER_SPIT_MASK : STA !eram_botwoon_after_spit_rng + LDA !sram_botwoon_rng : AND !BOTWOON_RNG_SPIT_MASK : STA !eram_botwoon_spit_rng + LDA !sram_botwoon_rng : AND !BOTWOON_RNG_AFTER_SPIT_MASK : STA !eram_botwoon_after_spit_rng RTL .invalid @@ -241,7 +241,7 @@ org $A587C2 else org $A587B2 endif - LDA !ram_turret_rng : TAX + LDA !sram_turret_rng : TAX JSL $808111 : AND #$0003 JMP (hook_turret_rng_table,X) @@ -336,7 +336,7 @@ org $A7AE23 else org $A7AE0D endif - LDA !ram_kraid_wait_rng : BNE kraid_wait_load_delay + LDA !sram_kraid_wait_rng : BNE kraid_wait_load_delay LDA !CACHED_RANDOM_NUMBER : AND #$0007 kraid_wait_load_delay: ASL : TAX : LDA.w KraidWaitTable,X @@ -588,25 +588,25 @@ endif init_phantoon_rng: { - LDA !ram_phantoon_phase_rng : AND !PHANTOON_RNG_VISIBLE_BIT + LDA !sram_phantoon_phase_rng : AND !PHANTOON_RNG_VISIBLE_BIT STA !eram_phantoon_always_visible - LDA !ram_phantoon_phase_rng : AND !PHANTOON_RNG_PHASE_1_MASK + LDA !sram_phantoon_phase_rng : AND !PHANTOON_RNG_PHASE_1_MASK STA !eram_phantoon_rng_round_1 - LDA !ram_phantoon_phase_rng : AND !PHANTOON_RNG_PHASE_2_MASK + LDA !sram_phantoon_phase_rng : AND !PHANTOON_RNG_PHASE_2_MASK XBA : STA !eram_phantoon_rng_round_2 - LDA !ram_phantoon_phase_rng : AND !PHANTOON_RNG_FLIP_MASK + LDA !sram_phantoon_phase_rng : AND !PHANTOON_RNG_FLIP_MASK ASL #2 : XBA : STA !eram_phantoon_rng_flip - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_1_MASK + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_1_MASK STA !eram_phantoon_rng_flames_1 - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_2_MASK + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_2_MASK LSR #3 : STA !eram_phantoon_rng_flames_2 - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_PATH_MASK + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_PATH_MASK ASL #2 : XBA : STA !eram_phantoon_rng_flame_direction - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_3_MASK + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_3_MASK XBA : STA !eram_phantoon_rng_flames_3 - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_4_MASK + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_4_MASK XBA : LSR #3 : STA !eram_phantoon_rng_flames_4 - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_EYE_CLOSE_MASK + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_EYE_CLOSE_MASK XBA : ASL #2 : XBA : STA !eram_phantoon_rng_eyeclose RTL } @@ -982,7 +982,7 @@ hook_botwoon_move_after_spit: hook_crocomire_rng: { - LDA !ram_crocomire_rng : BEQ .no_manip + LDA !sram_crocomire_rng : BEQ .no_manip DEC : BEQ .step TDC ; return with <400 for swipe RTS @@ -1275,7 +1275,7 @@ turret_rng_reroll: hook_draygon_rng_right: { - LDA !ram_draygon_rng_right : BEQ .no_manip + LDA !sram_draygon_rng_right : BEQ .no_manip DEC ; return with 1-swoop or 0-goop RTS @@ -1286,7 +1286,7 @@ hook_draygon_rng_right: hook_draygon_rng_left: { - LDA !ram_draygon_rng_left : BEQ .no_manip + LDA !sram_draygon_rng_left : BEQ .no_manip DEC ; return with 1-swoop or 0-goop RTS @@ -1335,7 +1335,7 @@ hook_spore_spawn_scroll: ; Migrated from bank A6 since not enough freespace there init_ceres_ridley_rng: { - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_CERES_MASK : BEQ .set_ceres_rng + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_CERES_MASK : BEQ .set_ceres_rng CMP !RIDLEY_RNG_CERES_FIREBALL : BEQ .ceres_fireball CMP !RIDLEY_RNG_CERES_LUNGE : BEQ .ceres_lunge CMP !RIDLEY_RNG_CERES_SWOOP : BEQ .ceres_swoop @@ -1371,7 +1371,7 @@ endif init_zebes_ridley_rng: { - LDA !ram_ridley_rng_flags + LDA !sram_ridley_rng_flags BIT !RIDLEY_RNG_75_25_LUNGE : BNE .set_75_25_lunge BIT !RIDLEY_RNG_75_25_POGO : BNE .set_75_25_pogo if !FEATURE_PAL @@ -1399,7 +1399,7 @@ endif .set_75_25 STA !eram_ridley_lunge_pogo_rng - LDA !ram_ridley_rng_flags + LDA !sram_ridley_rng_flags BIT !RIDLEY_RNG_50_50_SWOOP : BNE .set_50_50_swoop BIT !RIDLEY_RNG_50_50_POGO : BNE .set_50_50_pogo if !FEATURE_PAL @@ -1431,7 +1431,7 @@ endif .set_50_50 STA !eram_ridley_pogo_swoop_rng - LDA !ram_ridley_rng_times_and_fireball + LDA !sram_ridley_rng_times_and_fireball BIT !RIDLEY_RNG_ALL_FIREBALL : BNE .set_all_fireball BIT !RIDLEY_RNG_NO_FIREBALL : BNE .set_no_fireball TDC : BRA .set_fireball @@ -1446,21 +1446,21 @@ endif .set_fireball STA !eram_ridley_fireball_rng - LDA !ram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_HOVER_TIME_MASK + LDA !sram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_HOVER_TIME_MASK STA !eram_ridley_hover_time_rng - LDA !ram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_POGO_TIME_MASK + LDA !sram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_POGO_TIME_MASK XBA : STA !eram_ridley_pogo_time_rng - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_POGO_HEIGHT_MASK + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_POGO_HEIGHT_MASK LSR #3 : STA !eram_ridley_pogo_height_rng PHX - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_BACKPOGO_MASK + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_BACKPOGO_MASK XBA : ASL : TAX : LDA.l ridley_backpogo_threshold_table,X STA !eram_ridley_backpogo_rng - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_TAIL_MASK + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_TAIL_MASK XBA : LSR #2 : TAX : LDA.l ridley_tail_threshold_table,X STA !eram_ridley_tail_rng PLX @@ -2030,7 +2030,7 @@ endif hook_kraid_claw_rng: { - LDA !ram_kraid_claw_rng : BEQ .no_manip + LDA !sram_kraid_claw_rng : BEQ .no_manip DEC #2 ; return -1 (laggy) or 0 (laggier) RTS @@ -2064,7 +2064,7 @@ endif hook_baby_skip_rng: { - LDA !ram_baby_rng : BEQ .no_manip + LDA !sram_baby_rng : BEQ .no_manip DEC : BEQ .rng_set ; lunge LDA #$0020 : STA $7E7802,X @@ -2181,21 +2181,21 @@ init_mb_rng_from_menu: hook_mb_init_rng: { - LDA !ram_mb_rng : AND !MB_RNG_WALKING_MASK : ASL : TAX + LDA !sram_mb_rng : AND !MB_RNG_WALKING_MASK : ASL : TAX LDA.l mb_normal_walking_rng_table,X : STA !eram_mb_normal_walking_rng LDA.l mb_ketchup_walking_rng_table,X : STA !eram_mb_ketchup_walking_rng - LDA !ram_mb_rng : AND !MB_RNG_KETCHUP_MASK : LSR : TAX + LDA !sram_mb_rng : AND !MB_RNG_KETCHUP_MASK : LSR : TAX LDA.l mb_ketchup_rng_table,X : STA !eram_mb_ketchup_rng - LDA !ram_mb_rng : AND !MB_RNG_DAMAGE_DOWN_MASK : LSR #3 : TAX + LDA !sram_mb_rng : AND !MB_RNG_DAMAGE_DOWN_MASK : LSR #3 : TAX LDA.l mb_damage_down_rng_table,X : STA !eram_mb_damage_down_rng - LDA !ram_mb_rng : AND !MB_RNG_PHASE3_ATTACK_MASK + LDA !sram_mb_rng : AND !MB_RNG_PHASE3_ATTACK_MASK EOR !MB_RNG_PHASE3_ATTACK_RINGS : STA !eram_mb_phase3_attack_rng - LDA !ram_mb_rng : AND !MB_RNG_NORMAL_ATTACK_MASK : XBA : TAX + LDA !sram_mb_rng : AND !MB_RNG_NORMAL_ATTACK_MASK : XBA : TAX LDA.l mb_air_rings_rng_table,X : STA !eram_mb_air_rings_rng LDA.l mb_ground_bomb_rng_table,X : STA !eram_mb_ground_bomb_rng LDA.l mb_ground_attack_rng_tables_table,X : STA !eram_mb_ground_attack_rng_table LDA.l mb_close_attack_rng_tables_table,X : STA !eram_mb_close_attack_rng_table - LDA !ram_mb_rng : AND !MB_RNG_BOMB_CROUCH_MASK : XBA : ASL #3 : XBA : TAX + LDA !sram_mb_rng : AND !MB_RNG_BOMB_CROUCH_MASK : XBA : ASL #3 : XBA : TAX LDA.l mb_try_bomb_crouch_rng_table,X : STA !eram_mb_try_bomb_crouch LDA.l mb_bomb_crouch_rng_table,X : STA !eram_mb_bomb_crouch diff --git a/src/infohud.asm b/src/infohud.asm index c17bdaa8..965ec5c8 100644 --- a/src/infohud.asm +++ b/src/infohud.asm @@ -61,6 +61,9 @@ org $828B34 ; reset room timers for first room of Ceres org $828B3A ceres_start_timers_return: +org $82E34C ; reset door transition timers in next room mode + LDA #hook_fix_doors_moving_up + org $8290F6 ; hijack, HUD routine while paused JSL ih_hud_code_paused @@ -224,6 +227,30 @@ endif endif ; !FEATURE_VANILLAHUD +%startfree(82) + +hook_fix_doors_moving_up: +{ + PEA $8F70 : PLB + LDA.w !sram_lag_counter_mode : CMP #$0002 : BNE .vanilla + + ; Transition lag set to next room, which we are starting to load next + ; Reset realtime and gametime/transition timers + TDC : STA !ram_realtime_room : STA !ram_transition_counter + + .vanilla + PLB + LDA !DOOR_DIRECTION : AND #$0003 : CMP #$0003 : BNE .done + JSL $80AD1D + + .done + LDA #$E36E : STA !DOOR_FUNCTION_POINTER + RTS +} + +%endfree(82) + + ; Main bank stuff %startfree(F0) diff --git a/src/infohudmodes.asm b/src/infohudmodes.asm index 5f0c98c0..3c623e79 100644 --- a/src/infohudmodes.asm +++ b/src/infohudmodes.asm @@ -173,6 +173,10 @@ status_dashcounter: RTS } +status_shinetune_invalid_momentum: + LDA #$DEAD : STA !ram_momentum_count + JMP status_shinetune_shinetune_start + status_shinetune: { if !FEATURE_PAL @@ -225,7 +229,7 @@ endif PEA $0000 : PLA : PEA $0000 : PLA LDA $4214 : LDX #$0054 : JSR Draw4Hundredths - .invalid_momentum + .done_momentum TDC : DEC : STA !ram_momentum_count BRA .shinetune_start @@ -243,7 +247,7 @@ endif BRA .shinetune_start .check_superhud - LDA !sram_display_mode : CMP !IH_MODE_ROOMSTRAT_INDEX : BEQ .invalid_momentum + LDA !sram_display_mode : CMP !IH_MODE_ROOMSTRAT_INDEX : BEQ .done_momentum BRA .print_momentum .shinetune_start @@ -618,6 +622,10 @@ endif .pressdash0 LDA !SAMUS_POSE : CMP #$0010 : BPL .dash0done CMP #$0009 : BMI .dash0done + LDA !ram_momentum_count : CMP #$000C : BPL .latedash0 + INC : BNE .dash0done + + .latedash0 LDA !SAMUS_ANIMATION_FRAME : ASL : ASL ORA !SAMUS_ANIMATION_TIMER : ASL : TAY LDA.w ShineTune1TapLateTable,Y : BEQ .dash0done diff --git a/src/init.asm b/src/init.asm index effc5ca8..a9ef2676 100644 --- a/src/init.asm +++ b/src/init.asm @@ -7,12 +7,12 @@ org $808455 org $808490 clear_bank: ; This loop is based on WRAM_PERSIST_START - LDX #$3F5E + LDX #$3F66 .loop STZ $0000,X - STZ $3F60,X - STZ $7EC0,X - STZ $BE20,X + STZ $3F68,X + STZ $7ED0,X + STZ $BE38,X DEX #2 : BPL .loop JSL init_wram_based_on_sram BRA .end @@ -56,16 +56,17 @@ init_code: .clear_loop_start ; This loop is based on WRAM_PERSIST_START - LDX #$007E + LDX #$0096 .clear_loop - STZ $FD80,X - STZ $FE00,X - STZ $FE80,X - STZ $FF00,X - STZ $FF80,X + STZ $FDA0,X + STZ $FE38,X + STZ $FED0,X + STZ $FF68,X DEX #2 : BPL .clear_loop STA.w !ram_quickboot_spc_state JSR init_non_zero_persistent_wram + LDA !sram_hard_reset_clears_rng : BIT #$0001 : BEQ .persistent_cleared + JSR init_reset_rng_control .persistent_cleared ; Always clear slowdown mode @@ -95,8 +96,8 @@ endif init_factory_reset: { - JSR init_non_zero_persistent_wram JSR init_sram + JSR init_non_zero_persistent_wram RTL } @@ -108,6 +109,27 @@ init_non_zero_persistent_wram: LDA !sram_seed_X : STA !ram_seed_X LDA !sram_seed_Y : STA !ram_seed_Y LDA #$8000 : STA !ram_cm_gmode + + ; If Map Completion preset category selected then turn minimap on + LDA !sram_preset_category : CMP !PRESET_CATEGORY_100MAP_INDEX : BEQ .set_minimap + CMP !PRESET_CATEGORY_SPAZERMAP_INDEX : BNE .done + + .set_minimap + LDA #$0001 : STA !ram_minimap + + .done + RTS +} + +init_reset_rng_control: +{ + TDC : STA !sram_kraid_claw_rng : STA !sram_kraid_wait_rng + STA !sram_draygon_rng_left : STA !sram_draygon_rng_right + STA !sram_turret_rng : STA !sram_ridley_rng_flags + STA !sram_ridley_rng_times_and_fireball : STA !sram_crocomire_rng + STA !sram_phantoon_phase_rng : STA !sram_phantoon_eye_and_flames_rng + STA !sram_botwoon_rng : STA !sram_baby_rng + STA !sram_mb_rng : STA !sram_rng_reserved RTS } @@ -143,6 +165,7 @@ init_sram_routine_table: dw init_sram_upgrade_1Bto1C dw init_sram_upgrade_1Cto1D dw init_sram_upgrade_1Dto1E + dw init_sram_upgrade_1Eto1F dw init_sram_fail init_sram: @@ -288,6 +311,10 @@ endif TDC : STA !sram_update_timers_ctrl_input LDA !UPDATE_TIMERS_ON_PRESS : STA !sram_update_timers_options + .upgrade_1Eto1F + JSR init_reset_rng_control + INC : STA !sram_hard_reset_clears_rng + LDA !SRAM_VERSION : STA !sram_initialized RTS diff --git a/src/main.asm b/src/main.asm index c8302422..5cdd58c9 100644 --- a/src/main.asm +++ b/src/main.asm @@ -16,8 +16,8 @@ lorom !VERSION_MAJOR = 2 !VERSION_MINOR = 7 -!VERSION_BUILD = 6 -!VERSION_REV = 2 +!VERSION_BUILD = 7 +!VERSION_REV = 0 table ../resources/normal.tbl print "" diff --git a/src/mainmenu.asm b/src/mainmenu.asm index 3879022e..bd0c1d1c 100644 --- a/src/mainmenu.asm +++ b/src/mainmenu.asm @@ -103,7 +103,7 @@ action_game_mainmenu: action_rng_mainmenu: { - LDA !ram_turret_rng : LSR : STA !ram_cm_turret_rng + LDA !sram_turret_rng : LSR : STA !ram_cm_turret_rng LDA.w !DROP_CHANCE_TABLE_LENGTH-1 : ASL : TAX .dropTableLoop LDA.l drop_chance_tables,X : CMP !ram_drop_chance_table : BEQ .setDropChances @@ -2853,6 +2853,7 @@ ih_lag_counter: db #$28, "Transition Lag", #$FF db #$28, " DOOR", #$FF db #$28, " FULL", #$FF + db #$28, " NEXT ROOM", #$FF db #$FF ih_auto_update_timers: @@ -2987,6 +2988,8 @@ RngMenu: dw #rng_baby_rng dw #$FFFF dw #rng_drop_chances + dw #$FFFF + dw #rng_hard_reset dw #$0000 %cm_header("RNG CONTROL") @@ -3004,7 +3007,7 @@ rng_goto_mb: rng_kraid_claw_rng: dw !ACTION_CHOICE - dl #!ram_kraid_claw_rng + dl #!sram_kraid_claw_rng dw #$0000 db #$28, "Kraid Claw RNG", #$FF db #$28, " RANDOM", #$FF @@ -3014,7 +3017,7 @@ rng_kraid_claw_rng: rng_kraid_wait_rng: dw !ACTION_CHOICE - dl #!ram_kraid_wait_rng + dl #!sram_kraid_wait_rng dw #$0000 db #$28, "Kraid Wait RNG", #$FF db #$28, " RANDOM", #$FF @@ -3029,7 +3032,7 @@ rng_kraid_wait_rng: rng_crocomire_rng: dw !ACTION_CHOICE - dl #!ram_crocomire_rng + dl #!sram_crocomire_rng dw #$0000 db #$28, "Crocomire RNG", #$FF db #$28, " RANDOM", #$FF @@ -3039,7 +3042,7 @@ rng_crocomire_rng: rng_draygon_rng_right: dw !ACTION_CHOICE - dl #!ram_draygon_rng_right + dl #!sram_draygon_rng_right dw #$0000 db #$28, "Draygon from Ri", #$FF db #$28, "ght RANDOM", #$FF @@ -3049,7 +3052,7 @@ rng_draygon_rng_right: rng_draygon_rng_left: dw !ACTION_CHOICE - dl #!ram_draygon_rng_left + dl #!sram_draygon_rng_left dw #$0000 db #$28, "Draygon from Le", #$FF db #$28, "ft RANDOM", #$FF @@ -3079,12 +3082,12 @@ rng_turret_rng: db #$28, "NOT DN RITE", #$FF db #$FF .routine - ASL : STA !ram_turret_rng + ASL : STA !sram_turret_rng RTL rng_baby_rng: dw !ACTION_CHOICE - dl #!ram_baby_rng + dl #!sram_baby_rng dw #$0000 db #$28, "Baby Skip RNG", #$FF db #$28, " RANDOM", #$FF @@ -3110,6 +3113,9 @@ rng_drop_chances: LDA.l drop_chance_tables,X : STA !ram_drop_chance_table RTL +rng_hard_reset: + %cm_toggle_bit("Hard Reset Clears RNG", !sram_hard_reset_clears_rng, #$0001, #0) + ; -------------- ; Phantoon Menu @@ -3117,27 +3123,27 @@ rng_drop_chances: rng_prepare_phantoon_menu: { - LDA !ram_phantoon_phase_rng : PHA + LDA !sram_phantoon_phase_rng : PHA JSL rng_phan_set_phan_first_phase JSL rng_phan_set_phan_second_phase - PLA : STA !ram_phantoon_phase_rng + PLA : STA !sram_phantoon_phase_rng AND !PHANTOON_RNG_FLIP_MASK : ASL #2 : XBA : STA !ram_cm_phantoon_flip_rng - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_1_MASK + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_1_MASK STA !ram_cm_phantoon_flames_1_rng - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_2_MASK + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_2_MASK LSR #3 : STA !ram_cm_phantoon_flames_2_rng - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_PATH_MASK + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_PATH_MASK ASL #2 : XBA : STA !ram_cm_phantoon_flame_direction_rng - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_3_MASK + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_3_MASK XBA : STA !ram_cm_phantoon_flames_3_rng - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_4_MASK + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_4_MASK XBA : LSR #3 : CMP #$0007 : BNE .set_flame_4 DEC #2 .set_flame_4 STA !ram_cm_phantoon_flames_4_rng - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_EYE_CLOSE_MASK + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_EYE_CLOSE_MASK XBA : ASL #2 : XBA : STA !ram_cm_phantoon_eyeclose_rng - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_EYE_CLOSE_INVERTED + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_EYE_CLOSE_INVERTED BEQ .set_flames : CMP #$0005 : BEQ .first_only : CMP #$0006 : BEQ .first_only LDA #$0001 .set_flames @@ -3198,18 +3204,18 @@ rng_phan_first_phase: db #$FF .routine ASL : TAX - LDA !ram_phantoon_phase_rng : AND !PHANTOON_RNG_PHASE_1_INVERTED - STA !ram_phantoon_phase_rng + LDA !sram_phantoon_phase_rng : AND !PHANTOON_RNG_PHASE_1_INVERTED + STA !sram_phantoon_phase_rng LDA.l rng_phan_phase_1_table,X - ORA !ram_phantoon_phase_rng : STA !ram_phantoon_phase_rng + ORA !sram_phantoon_phase_rng : STA !sram_phantoon_phase_rng .check_flames ; If first round pattern is random or #1 Left or #1 Right, update it LDA !ram_cm_phantoon_flames_1_rng : BEQ .update_flames CMP #$0005 : BMI .done_flames .update_flames - LDA !ram_phantoon_phase_rng : AND !PHANTOON_RNG_PHASE_1_MASK + LDA !sram_phantoon_phase_rng : AND !PHANTOON_RNG_PHASE_1_MASK BEQ .set_random : AND #$0015 : BEQ .set_left - LDA !ram_phantoon_phase_rng : AND #$002A : BEQ .set_right + LDA !sram_phantoon_phase_rng : AND #$002A : BEQ .set_right .set_random TDC : STA !ram_cm_phantoon_flames_1_rng JMP rng_phan_flame_pattern_1_routine @@ -3252,15 +3258,15 @@ rng_phan_second_phase: ; Either set flip off or back to vanilla when changing second phase ; By default assume vanilla TDC : STA !ram_cm_phantoon_flip_rng - LDA !ram_phantoon_phase_rng : AND !PHANTOON_RNG_PHASE_2_FLIP_INVERTED - STA !ram_phantoon_phase_rng + LDA !sram_phantoon_phase_rng : AND !PHANTOON_RNG_PHASE_2_FLIP_INVERTED + STA !sram_phantoon_phase_rng LDA.l rng_phan_phase_2_table,X - ORA !ram_phantoon_phase_rng : STA !ram_phantoon_phase_rng + ORA !sram_phantoon_phase_rng : STA !sram_phantoon_phase_rng LDA.l rng_phan_phase_2_table,X BEQ .done_flip : TXA : BEQ .done_flip ; If setting phase 2 to non-vanilla value then turn flip off LDA #$0002 : STA !ram_cm_phantoon_flip_rng - LDA !ram_phantoon_phase_rng : ORA #$0080 : STA !ram_phantoon_phase_rng + LDA !sram_phantoon_phase_rng : ORA #$0080 : STA !sram_phantoon_phase_rng .done_flip LDA !ROOM_ID : CMP.w #ROOM_PhantoonRoom : BNE .done JML init_phantoon_rng @@ -3278,7 +3284,7 @@ rng_phan_phase_2_table: rng_phan_set_phan_first_phase: { LDX #$0000 - LDA !ram_phantoon_phase_rng : AND !PHANTOON_RNG_PHASE_1_MASK + LDA !sram_phantoon_phase_rng : AND !PHANTOON_RNG_PHASE_1_MASK BEQ .end_first_loop .first_loop CMP.l rng_phan_phase_1_table,X : BEQ .end_first_loop @@ -3293,8 +3299,8 @@ rng_phan_set_phan_second_phase: ; Either set flip off or back to vanilla when changing second phase ; By default assume vanilla TDC : TAX : STA !ram_cm_phantoon_flip_rng - LDA !ram_phantoon_phase_rng : AND !PHANTOON_RNG_FLIP_INVERTED - STA !ram_phantoon_phase_rng : AND !PHANTOON_RNG_PHASE_2_MASK + LDA !sram_phantoon_phase_rng : AND !PHANTOON_RNG_FLIP_INVERTED + STA !sram_phantoon_phase_rng : AND !PHANTOON_RNG_PHASE_2_MASK BEQ .end_second_loop .second_loop CMP.l rng_phan_phase_2_table,X : BEQ .end_second_loop @@ -3304,7 +3310,7 @@ rng_phan_set_phan_second_phase: BEQ .done_flip : TXA : BEQ .done_flip ; If setting phase 2 to non-vanilla value then turn flip off LDA #$0002 : STA !ram_cm_phantoon_flip_rng - LDA !ram_phantoon_phase_rng : ORA #$0080 : STA !ram_phantoon_phase_rng + LDA !sram_phantoon_phase_rng : ORA #$0080 : STA !sram_phantoon_phase_rng .done_flip LDA !ROOM_ID : CMP.w #ROOM_PhantoonRoom : BNE .done JML init_phantoon_rng @@ -3313,43 +3319,43 @@ rng_phan_set_phan_second_phase: } rng_phan_always_visible: - %cm_toggle_bit("Always Visible", !ram_phantoon_phase_rng, !PHANTOON_RNG_VISIBLE_BIT, rng_phan_set_phan_second_phase_done_flip) + %cm_toggle_bit("Always Visible", !sram_phantoon_phase_rng, !PHANTOON_RNG_VISIBLE_BIT, rng_phan_set_phan_second_phase_done_flip) rng_phan_fast_left_1: - %cm_toggle_bit("#1 Fast Left", !ram_phantoon_phase_rng, #$0020, rng_phan_set_phan_first_phase) + %cm_toggle_bit("#1 Fast Left", !sram_phantoon_phase_rng, #$0020, rng_phan_set_phan_first_phase) rng_phan_mid_left_1: - %cm_toggle_bit("#1 Mid Left", !ram_phantoon_phase_rng, #$0008, rng_phan_set_phan_first_phase) + %cm_toggle_bit("#1 Mid Left", !sram_phantoon_phase_rng, #$0008, rng_phan_set_phan_first_phase) rng_phan_slow_left_1: - %cm_toggle_bit("#1 Slow Left", !ram_phantoon_phase_rng, #$0002, rng_phan_set_phan_first_phase) + %cm_toggle_bit("#1 Slow Left", !sram_phantoon_phase_rng, #$0002, rng_phan_set_phan_first_phase) rng_phan_fast_right_1: - %cm_toggle_bit("#1 Fast Right", !ram_phantoon_phase_rng, #$0010, rng_phan_set_phan_first_phase) + %cm_toggle_bit("#1 Fast Right", !sram_phantoon_phase_rng, #$0010, rng_phan_set_phan_first_phase) rng_phan_mid_right_1: - %cm_toggle_bit("#1 Mid Right", !ram_phantoon_phase_rng, #$0004, rng_phan_set_phan_first_phase) + %cm_toggle_bit("#1 Mid Right", !sram_phantoon_phase_rng, #$0004, rng_phan_set_phan_first_phase) rng_phan_slow_right_1: - %cm_toggle_bit("#1 Slow Right", !ram_phantoon_phase_rng, #$0001, rng_phan_set_phan_first_phase) + %cm_toggle_bit("#1 Slow Right", !sram_phantoon_phase_rng, #$0001, rng_phan_set_phan_first_phase) rng_phan_fast_left_2: - %cm_toggle_bit("#2 Fast Left", !ram_phantoon_phase_rng, #$2000, rng_phan_set_phan_second_phase) + %cm_toggle_bit("#2 Fast Left", !sram_phantoon_phase_rng, #$2000, rng_phan_set_phan_second_phase) rng_phan_mid_left_2: - %cm_toggle_bit("#2 Mid Left", !ram_phantoon_phase_rng, #$0800, rng_phan_set_phan_second_phase) + %cm_toggle_bit("#2 Mid Left", !sram_phantoon_phase_rng, #$0800, rng_phan_set_phan_second_phase) rng_phan_slow_left_2: - %cm_toggle_bit("#2 Slow Left", !ram_phantoon_phase_rng, #$0200, rng_phan_set_phan_second_phase) + %cm_toggle_bit("#2 Slow Left", !sram_phantoon_phase_rng, #$0200, rng_phan_set_phan_second_phase) rng_phan_fast_right_2: - %cm_toggle_bit("#2 Fast Right", !ram_phantoon_phase_rng, #$1000, rng_phan_set_phan_second_phase) + %cm_toggle_bit("#2 Fast Right", !sram_phantoon_phase_rng, #$1000, rng_phan_set_phan_second_phase) rng_phan_mid_right_2: - %cm_toggle_bit("#2 Mid Right", !ram_phantoon_phase_rng, #$0400, rng_phan_set_phan_second_phase) + %cm_toggle_bit("#2 Mid Right", !sram_phantoon_phase_rng, #$0400, rng_phan_set_phan_second_phase) rng_phan_slow_right_2: - %cm_toggle_bit("#2 Slow Right", !ram_phantoon_phase_rng, #$0100, rng_phan_set_phan_second_phase) + %cm_toggle_bit("#2 Slow Right", !sram_phantoon_phase_rng, #$0100, rng_phan_set_phan_second_phase) rng_phan_second_phase_flip: dw !ACTION_CHOICE @@ -3362,10 +3368,10 @@ rng_phan_second_phase_flip: db #$28, " RANDOM", #$FF db #$FF .routine - LDA !ram_phantoon_phase_rng : AND !PHANTOON_RNG_FLIP_INVERTED - STA !ram_phantoon_phase_rng + LDA !sram_phantoon_phase_rng : AND !PHANTOON_RNG_FLIP_INVERTED + STA !sram_phantoon_phase_rng LDA !ram_cm_phantoon_flip_rng : XBA : LSR #2 - ORA !ram_phantoon_phase_rng : STA !ram_phantoon_phase_rng + ORA !sram_phantoon_phase_rng : STA !sram_phantoon_phase_rng LDA !ROOM_ID : CMP.w #ROOM_PhantoonRoom : BNE .done JML init_phantoon_rng .done @@ -3382,10 +3388,10 @@ rng_phan_eyeclose: db #$28, " FAST", #$FF db #$FF .routine - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_EYE_CLOSE_INVERTED - STA !ram_phantoon_eye_and_flames_rng + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_EYE_CLOSE_INVERTED + STA !sram_phantoon_eye_and_flames_rng LDA !ram_cm_phantoon_eyeclose_rng : XBA : LSR #2 : XBA - ORA !ram_phantoon_eye_and_flames_rng : STA !ram_phantoon_eye_and_flames_rng + ORA !sram_phantoon_eye_and_flames_rng : STA !sram_phantoon_eye_and_flames_rng LDA !ROOM_ID : CMP.w #ROOM_PhantoonRoom : BNE .done JML init_phantoon_rng .done @@ -3407,8 +3413,8 @@ rng_phan_flames: INC #3 .set_cm_vars STA !ram_cm_phantoon_flames_1_rng - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_EYE_CLOSE_MASK - ORA !ram_cm_phantoon_flames_1_rng : STA !ram_phantoon_eye_and_flames_rng + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_EYE_CLOSE_MASK + ORA !ram_cm_phantoon_flames_1_rng : STA !sram_phantoon_eye_and_flames_rng TDC : STA !ram_cm_phantoon_flames_2_rng : STA !ram_cm_phantoon_flames_3_rng STA !ram_cm_phantoon_flames_4_rng : STA !ram_cm_phantoon_flame_direction_rng LDA !ROOM_ID : CMP.w #ROOM_PhantoonRoom : BNE .done @@ -3445,8 +3451,8 @@ rng_phan_flame_pattern_1: db #$28, " #1 RIGHT", #$FF db #$FF .routine - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_1_INVERTED - ORA !ram_cm_phantoon_flames_1_rng : STA !ram_phantoon_eye_and_flames_rng + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_1_INVERTED + ORA !ram_cm_phantoon_flames_1_rng : STA !sram_phantoon_eye_and_flames_rng JMP flame_pattern_update rng_phan_flame_pattern_2: @@ -3461,10 +3467,10 @@ rng_phan_flame_pattern_2: db #$28, " 1424212", #$FF db #$FF .routine - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_2_INVERTED - STA !ram_phantoon_eye_and_flames_rng + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_2_INVERTED + STA !sram_phantoon_eye_and_flames_rng LDA !ram_cm_phantoon_flames_2_rng : ASL #3 - ORA !ram_phantoon_eye_and_flames_rng : STA !ram_phantoon_eye_and_flames_rng + ORA !sram_phantoon_eye_and_flames_rng : STA !sram_phantoon_eye_and_flames_rng JMP flame_pattern_update rng_phan_flame_pattern_3: @@ -3479,10 +3485,10 @@ rng_phan_flame_pattern_3: db #$28, " 1424212", #$FF db #$FF .routine - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_3_INVERTED - STA !ram_phantoon_eye_and_flames_rng + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_3_INVERTED + STA !sram_phantoon_eye_and_flames_rng LDA !ram_cm_phantoon_flames_3_rng : XBA - ORA !ram_phantoon_eye_and_flames_rng : STA !ram_phantoon_eye_and_flames_rng + ORA !sram_phantoon_eye_and_flames_rng : STA !sram_phantoon_eye_and_flames_rng JMP flame_pattern_update rng_phan_flame_pattern_4: @@ -3498,13 +3504,13 @@ rng_phan_flame_pattern_4: db #$28, " NO REPEAT", #$FF db #$FF .routine - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_4_INVERTED - STA !ram_phantoon_eye_and_flames_rng + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_4_INVERTED + STA !sram_phantoon_eye_and_flames_rng LDA !ram_cm_phantoon_flames_4_rng : CMP #$0005 : BNE .set_flame_4 INC #2 .set_flame_4 XBA : ASL #3 - ORA !ram_phantoon_eye_and_flames_rng : STA !ram_phantoon_eye_and_flames_rng + ORA !sram_phantoon_eye_and_flames_rng : STA !sram_phantoon_eye_and_flames_rng JMP flame_pattern_update rng_phan_flame_direction: @@ -3517,15 +3523,15 @@ rng_phan_flame_direction: db #$28, " RIGHT", #$FF db #$FF .routine - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_PATH_INVERTED - STA !ram_phantoon_eye_and_flames_rng + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_FLAMES_PATH_INVERTED + STA !sram_phantoon_eye_and_flames_rng LDA !ram_cm_phantoon_flame_direction_rng : XBA : LSR #2 - ORA !ram_phantoon_eye_and_flames_rng : STA !ram_phantoon_eye_and_flames_rng + ORA !sram_phantoon_eye_and_flames_rng : STA !sram_phantoon_eye_and_flames_rng ; Fallthrough flame_pattern_update: { - LDA !ram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_EYE_CLOSE_INVERTED + LDA !sram_phantoon_eye_and_flames_rng : AND !PHANTOON_RNG_EYE_CLOSE_INVERTED BEQ .set_flames : CMP #$0005 : BEQ .first_only : CMP #$0006 : BEQ .first_only LDA #$0001 .set_flames @@ -3546,26 +3552,26 @@ flame_pattern_update: rng_prepare_ridley_menu: { - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_CERES_MASK + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_CERES_MASK STA !ram_cm_ridley_ceres_ai_rng - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_POGO_HEIGHT_MASK + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_POGO_HEIGHT_MASK LSR #3 : STA !ram_cm_ridley_pogo_height_rng - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_75_25_MASK + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_75_25_MASK ASL #2 : XBA : STA !ram_cm_ridley_lunge_pogo_rng - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_BACKPOGO_MASK + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_BACKPOGO_MASK XBA : STA !ram_cm_ridley_backpogo_rng - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_TAIL_MASK + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_TAIL_MASK XBA : LSR #3 : STA !ram_cm_ridley_tail_rng - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_50_50_MASK + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_50_50_MASK XBA : ASL #2 : XBA : STA !ram_cm_ridley_swoop_pogo_rng - LDA !ram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_HOVER_TIME_MASK + LDA !sram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_HOVER_TIME_MASK STA !ram_cm_ridley_hover_time_value_rng : BEQ .set_hover TDC : INC .set_hover STA !ram_cm_ridley_hover_time_rng - LDA !ram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_FIREBALL_MASK + LDA !sram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_FIREBALL_MASK ASL #2 : XBA : STA !ram_cm_ridley_hover_fireball_rng - LDA !ram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_POGO_TIME_MASK + LDA !sram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_POGO_TIME_MASK XBA : STA !ram_cm_ridley_pogo_time_value_rng : BEQ .set_pogo TDC : INC .set_pogo @@ -3603,8 +3609,8 @@ rng_ridley_ceres_ai: db #$28, " SWOOP", #$FF db #$FF .routine - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_CERES_INVERTED - ORA !ram_cm_ridley_ceres_ai_rng : STA !ram_ridley_rng_flags + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_CERES_INVERTED + ORA !ram_cm_ridley_ceres_ai_rng : STA !sram_ridley_rng_flags LDA !ROOM_ID : CMP.w #ROOM_CeresRidleyRoom : BNE .done JML init_ceres_ridley_rng .done @@ -3620,10 +3626,10 @@ rng_ridley_lunge_pogo: db #$28, "o POGO", #$FF db #$FF .routine - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_75_25_INVERTED - STA !ram_ridley_rng_flags + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_75_25_INVERTED + STA !sram_ridley_rng_flags LDA !ram_cm_ridley_lunge_pogo_rng : XBA : LSR #2 - ORA !ram_ridley_rng_flags : STA !ram_ridley_rng_flags + ORA !sram_ridley_rng_flags : STA !sram_ridley_rng_flags LDA !ROOM_ID : CMP.w #ROOM_RidleyRoom : BNE .done JML init_zebes_ridley_rng .done @@ -3639,10 +3645,10 @@ rng_ridley_swoop_pogo: db #$28, "o POGO", #$FF db #$FF .routine - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_50_50_INVERTED - STA !ram_ridley_rng_flags + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_50_50_INVERTED + STA !sram_ridley_rng_flags LDA !ram_cm_ridley_swoop_pogo_rng : XBA : LSR #2 : XBA - ORA !ram_ridley_rng_flags : STA !ram_ridley_rng_flags + ORA !sram_ridley_rng_flags : STA !sram_ridley_rng_flags LDA !ROOM_ID : CMP.w #ROOM_RidleyRoom : BNE .done JML init_zebes_ridley_rng .done @@ -3663,10 +3669,10 @@ rng_ridley_backpogo: db #$28, " 75%", #$FF db #$FF .routine - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_BACKPOGO_INVERTED - STA !ram_ridley_rng_flags + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_BACKPOGO_INVERTED + STA !sram_ridley_rng_flags LDA !ram_cm_ridley_backpogo_rng : XBA - ORA !ram_ridley_rng_flags : STA !ram_ridley_rng_flags + ORA !sram_ridley_rng_flags : STA !sram_ridley_rng_flags LDA !ROOM_ID : CMP.w #ROOM_RidleyRoom : BNE .done JML init_zebes_ridley_rng .done @@ -3684,10 +3690,10 @@ rng_ridley_pogo_height: db #$28, " HIGHEST", #$FF db #$FF .routine - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_POGO_HEIGHT_INVERTED - STA !ram_ridley_rng_flags + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_POGO_HEIGHT_INVERTED + STA !sram_ridley_rng_flags LDA !ram_cm_ridley_pogo_height_rng : ASL #3 - ORA !ram_ridley_rng_flags : STA !ram_ridley_rng_flags + ORA !sram_ridley_rng_flags : STA !sram_ridley_rng_flags LDA !ROOM_ID : CMP.w #ROOM_RidleyRoom : BNE .done JML init_zebes_ridley_rng .done @@ -3702,13 +3708,13 @@ rng_ridley_pogo_time: db #$28, " FIXED", #$FF db #$FF .routine - LDA !ram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_POGO_TIME_INVERTED - STA !ram_ridley_rng_times_and_fireball + LDA !sram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_POGO_TIME_INVERTED + STA !sram_ridley_rng_times_and_fireball LDA !ram_cm_ridley_pogo_time_rng : BEQ .set_value LDA !ram_cm_ridley_pogo_time_value_rng : BNE .set_value LDA #$0080 : STA !ram_cm_ridley_pogo_time_value_rng .set_value - XBA : ORA !ram_ridley_rng_times_and_fireball : STA !ram_ridley_rng_times_and_fireball + XBA : ORA !sram_ridley_rng_times_and_fireball : STA !sram_ridley_rng_times_and_fireball LDA !ROOM_ID : CMP.w #ROOM_RidleyRoom : BNE .done JML init_zebes_ridley_rng .done @@ -3723,10 +3729,10 @@ rng_ridley_pogo_time_dynamic: rng_ridley_pogo_time_value: %cm_numfield_word("Pogo Time Value", !ram_cm_ridley_pogo_time_value_rng, 128, 191, 1, 4, #.routine) .routine - LDA !ram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_POGO_TIME_INVERTED - STA !ram_ridley_rng_times_and_fireball + LDA !sram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_POGO_TIME_INVERTED + STA !sram_ridley_rng_times_and_fireball LDA !ram_cm_ridley_pogo_time_value_rng : XBA - ORA !ram_ridley_rng_times_and_fireball : STA !ram_ridley_rng_times_and_fireball + ORA !sram_ridley_rng_times_and_fireball : STA !sram_ridley_rng_times_and_fireball LDA !ROOM_ID : CMP.w #ROOM_RidleyRoom : BNE .done JML init_zebes_ridley_rng .done @@ -3741,13 +3747,13 @@ rng_ridley_hover_time: db #$28, " FIXED", #$FF db #$FF .routine - LDA !ram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_HOVER_TIME_INVERTED - STA !ram_ridley_rng_times_and_fireball + LDA !sram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_HOVER_TIME_INVERTED + STA !sram_ridley_rng_times_and_fireball LDA !ram_cm_ridley_hover_time_rng : BEQ .set_value LDA !ram_cm_ridley_hover_time_value_rng : BNE .set_value LDA #$0020 : STA !ram_cm_ridley_hover_time_value_rng .set_value - ORA !ram_ridley_rng_times_and_fireball : STA !ram_ridley_rng_times_and_fireball + ORA !sram_ridley_rng_times_and_fireball : STA !sram_ridley_rng_times_and_fireball LDA !ROOM_ID : CMP.w #ROOM_RidleyRoom : BNE .done JML init_zebes_ridley_rng .done @@ -3762,8 +3768,8 @@ rng_ridley_hover_time_dynamic: rng_ridley_hover_time_value: %cm_numfield_word("Hover Time Value", !ram_cm_ridley_hover_time_value_rng, 32, 63, 1, 4, #.routine) .routine - LDA !ram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_HOVER_TIME_INVERTED - ORA !ram_cm_ridley_hover_time_value_rng : STA !ram_ridley_rng_times_and_fireball + LDA !sram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_HOVER_TIME_INVERTED + ORA !ram_cm_ridley_hover_time_value_rng : STA !sram_ridley_rng_times_and_fireball LDA !ROOM_ID : CMP.w #ROOM_RidleyRoom : BNE .done JML init_zebes_ridley_rng .done @@ -3779,10 +3785,10 @@ rng_ridley_hover_fireball: db #$28, " LESS OFTEN", #$FF db #$FF .routine - LDA !ram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_FIREBALL_INVERTED - STA !ram_ridley_rng_times_and_fireball + LDA !sram_ridley_rng_times_and_fireball : AND !RIDLEY_RNG_FIREBALL_INVERTED + STA !sram_ridley_rng_times_and_fireball LDA !ram_cm_ridley_hover_fireball_rng : XBA : LSR #2 - ORA !ram_ridley_rng_times_and_fireball : STA !ram_ridley_rng_times_and_fireball + ORA !sram_ridley_rng_times_and_fireball : STA !sram_ridley_rng_times_and_fireball LDA !ROOM_ID : CMP.w #ROOM_RidleyRoom : BNE .done JML init_zebes_ridley_rng .done @@ -3803,10 +3809,10 @@ rng_ridley_tail: db #$28, " 75%", #$FF db #$FF .routine - LDA !ram_ridley_rng_flags : AND !RIDLEY_RNG_TAIL_INVERTED - STA !ram_ridley_rng_flags + LDA !sram_ridley_rng_flags : AND !RIDLEY_RNG_TAIL_INVERTED + STA !sram_ridley_rng_flags LDA !ram_cm_ridley_tail_rng : ASL #3 : XBA - ORA !ram_ridley_rng_flags : STA !ram_ridley_rng_flags + ORA !sram_ridley_rng_flags : STA !sram_ridley_rng_flags LDA !ROOM_ID : CMP.w #ROOM_RidleyRoom : BNE .done JML init_zebes_ridley_rng .done @@ -3819,22 +3825,22 @@ rng_ridley_tail: rng_prepare_botwoon_menu: { - LDA !ram_botwoon_rng : AND !BOTWOON_RNG_FIRST_MASK + LDA !sram_botwoon_rng : AND !BOTWOON_RNG_FIRST_MASK CMP !BOTWOON_RNG_FIRST_MASK : BNE .botwoonFirst - AND !BOTWOON_RNG_FIRST_INVERTED : STA !ram_botwoon_rng + AND !BOTWOON_RNG_FIRST_INVERTED : STA !sram_botwoon_rng .botwoonFirst JSL rng_botwoon_set_first TDC : STA !ram_cm_botwoon_hidden_rng : STA !ram_cm_botwoon_second_rng - LDA !ram_botwoon_rng : BIT !BOTWOON_RNG_HIDDEN_ENABLED : BEQ .botwoonSecond + LDA !sram_botwoon_rng : BIT !BOTWOON_RNG_HIDDEN_ENABLED : BEQ .botwoonSecond AND !BOTWOON_RNG_HIDDEN_VALUE : XBA : LSR #3 : INC - STA !ram_cm_botwoon_hidden_rng : LDA !ram_botwoon_rng + STA !ram_cm_botwoon_hidden_rng : LDA !sram_botwoon_rng .botwoonSecond BIT !BOTWOON_RNG_SECOND_ENABLED : BEQ .botwoonSpit AND !BOTWOON_RNG_SECOND_VALUE : XBA : ASL #3 : XBA : INC - STA !ram_cm_botwoon_second_rng : LDA !ram_botwoon_rng + STA !ram_cm_botwoon_second_rng : LDA !sram_botwoon_rng .botwoonSpit AND !BOTWOON_RNG_SPIT_MASK : LSR #2 : STA !ram_cm_botwoon_spit_rng - LDA !ram_botwoon_rng : AND !BOTWOON_RNG_AFTER_SPIT_MASK + LDA !sram_botwoon_rng : AND !BOTWOON_RNG_AFTER_SPIT_MASK BEQ .botwoonAfterSpit EOR !BOTWOON_RNG_AFTER_SPIT_ENABLED : INC .botwoonAfterSpit @@ -3881,10 +3887,10 @@ rng_botwoon_first: db #$FF .routine ASL : TAX - LDA !ram_botwoon_rng : AND !BOTWOON_RNG_FIRST_INVERTED - STA !ram_botwoon_rng + LDA !sram_botwoon_rng : AND !BOTWOON_RNG_FIRST_INVERTED + STA !sram_botwoon_rng LDA.l rng_botwoon_first_table,X - ORA !ram_botwoon_rng : STA !ram_botwoon_rng + ORA !sram_botwoon_rng : STA !sram_botwoon_rng .checkRoom LDA !ROOM_ID : CMP.w #ROOM_BotwoonRoom : BNE .done JML init_botwoon_rng @@ -3898,7 +3904,7 @@ rng_botwoon_first_table: rng_botwoon_set_first: { LDX #$0000 - LDA !ram_botwoon_rng : AND !BOTWOON_RNG_FIRST_MASK + LDA !sram_botwoon_rng : AND !BOTWOON_RNG_FIRST_MASK .first_loop CMP.l rng_botwoon_first_table,X : BEQ .end_first_loop INX #2 : CPX #$001E : BNE .first_loop @@ -3911,16 +3917,16 @@ rng_botwoon_set_first: } rng_botwoon_first_bottom: - %cm_toggle_bit_inverted("First LB Bottom", !ram_botwoon_rng, #$0010, rng_botwoon_set_first) + %cm_toggle_bit_inverted("First LB Bottom", !sram_botwoon_rng, #$0010, rng_botwoon_set_first) rng_botwoon_first_top: - %cm_toggle_bit_inverted("First LT Top", !ram_botwoon_rng, #$0020, rng_botwoon_set_first) + %cm_toggle_bit_inverted("First LT Top", !sram_botwoon_rng, #$0020, rng_botwoon_set_first) rng_botwoon_first_right: - %cm_toggle_bit_inverted("First LR Right", !ram_botwoon_rng, #$0040, rng_botwoon_set_first) + %cm_toggle_bit_inverted("First LR Right", !sram_botwoon_rng, #$0040, rng_botwoon_set_first) rng_botwoon_first_left: - %cm_toggle_bit_inverted("First LL Left", !ram_botwoon_rng, #$0080, rng_botwoon_set_first) + %cm_toggle_bit_inverted("First LL Left", !sram_botwoon_rng, #$0080, rng_botwoon_set_first) rng_botwoon_hidden: dw !ACTION_CHOICE @@ -3933,12 +3939,12 @@ rng_botwoon_hidden: db #$28, "LR BR TR RT", #$FF db #$FF .routine - LDA !ram_botwoon_rng : AND !BOTWOON_RNG_HIDDEN_INVERTED - STA !ram_botwoon_rng + LDA !sram_botwoon_rng : AND !BOTWOON_RNG_HIDDEN_INVERTED + STA !sram_botwoon_rng LDA !ram_cm_botwoon_hidden_rng : BEQ .checkRoom ; possible values are $01, $09, $11 DEC : ASL #3 : INC : XBA - ORA !ram_botwoon_rng : STA !ram_botwoon_rng + ORA !sram_botwoon_rng : STA !sram_botwoon_rng .checkRoom LDA !ROOM_ID : CMP.w #ROOM_BotwoonRoom : BNE .done JML init_botwoon_rng @@ -3957,12 +3963,12 @@ rng_botwoon_second: db #$28, "LL BB TT RR", #$FF db #$FF .routine - LDA !ram_botwoon_rng : AND !BOTWOON_RNG_SECOND_INVERTED - STA !ram_botwoon_rng + LDA !sram_botwoon_rng : AND !BOTWOON_RNG_SECOND_INVERTED + STA !sram_botwoon_rng LDA !ram_cm_botwoon_second_rng : BEQ .checkRoom ; possible values are $01, $09, $11, $19 DEC : ASL #3 : INC : XBA : ASL #2 - ORA !ram_botwoon_rng : STA !ram_botwoon_rng + ORA !sram_botwoon_rng : STA !sram_botwoon_rng .checkRoom LDA !ROOM_ID : CMP.w #ROOM_BotwoonRoom : BNE .done JML init_botwoon_rng @@ -3979,11 +3985,11 @@ rng_botwoon_spit: db #$28, "ALWAYS SPIT", #$FF db #$FF .routine - LDA !ram_botwoon_rng : AND !BOTWOON_RNG_SPIT_INVERTED - STA !ram_botwoon_rng + LDA !sram_botwoon_rng : AND !BOTWOON_RNG_SPIT_INVERTED + STA !sram_botwoon_rng LDA !ram_cm_botwoon_spit_rng : BEQ .checkRoom ; 0-4 = no spit, 6-E = spit - ASL #2 : ORA !ram_botwoon_rng : STA !ram_botwoon_rng + ASL #2 : ORA !sram_botwoon_rng : STA !sram_botwoon_rng .checkRoom LDA !ROOM_ID : CMP.w #ROOM_BotwoonRoom : BNE .done JML init_botwoon_rng @@ -4000,11 +4006,11 @@ rng_botwoon_after_spit: db #$28, "pit HIDE", #$FF db #$FF .routine - LDA !ram_botwoon_rng : AND !BOTWOON_RNG_AFTER_SPIT_INVERTED - STA !ram_botwoon_rng + LDA !sram_botwoon_rng : AND !BOTWOON_RNG_AFTER_SPIT_INVERTED + STA !sram_botwoon_rng LDA !ram_cm_botwoon_after_spit_rng : BEQ .checkRoom DEC : ORA !BOTWOON_RNG_AFTER_SPIT_ENABLED - ORA !ram_botwoon_rng : STA !ram_botwoon_rng + ORA !sram_botwoon_rng : STA !sram_botwoon_rng .checkRoom LDA !ROOM_ID : CMP.w #ROOM_BotwoonRoom : BNE .done JML init_botwoon_rng @@ -4018,17 +4024,17 @@ rng_botwoon_after_spit: rng_prepare_mb_menu: { - LDA !ram_mb_rng : AND !MB_RNG_WALKING_MASK + LDA !sram_mb_rng : AND !MB_RNG_WALKING_MASK STA !ram_cm_mb_walking_rng - LDA !ram_mb_rng : AND !MB_RNG_KETCHUP_MASK + LDA !sram_mb_rng : AND !MB_RNG_KETCHUP_MASK LSR #2 : STA !ram_cm_mb_ketchup_rng - LDA !ram_mb_rng : AND !MB_RNG_DAMAGE_DOWN_MASK + LDA !sram_mb_rng : AND !MB_RNG_DAMAGE_DOWN_MASK LSR #4 : STA !ram_cm_mb_damage_down_rng - LDA !ram_mb_rng : AND !MB_RNG_PHASE3_ATTACK_MASK + LDA !sram_mb_rng : AND !MB_RNG_PHASE3_ATTACK_MASK ASL : XBA : STA !ram_cm_mb_phase3_attack_rng - LDA !ram_mb_rng : AND !MB_RNG_NORMAL_ATTACK_MASK + LDA !sram_mb_rng : AND !MB_RNG_NORMAL_ATTACK_MASK LSR : XBA : STA !ram_cm_mb_normal_attack_rng - LDA !ram_mb_rng : AND !MB_RNG_BOMB_CROUCH_MASK + LDA !sram_mb_rng : AND !MB_RNG_BOMB_CROUCH_MASK XBA : ASL #2 : XBA : STA !ram_cm_mb_bomb_crouch_rng %setmenubank() JML action_submenu @@ -4056,8 +4062,8 @@ rng_mb_walking: db #$28, " MINIMIZED", #$FF db #$FF .routine - LDA !ram_mb_rng : AND !MB_RNG_WALKING_INVERTED - ORA !ram_cm_mb_walking_rng : STA !ram_mb_rng + LDA !sram_mb_rng : AND !MB_RNG_WALKING_INVERTED + ORA !ram_cm_mb_walking_rng : STA !sram_mb_rng LDA !ROOM_ID : CMP.w #ROOM_MotherBrainRoom : BNE .done JML init_mb_rng_from_menu .done @@ -4078,10 +4084,10 @@ rng_mb_normal_attack: db #$28, " MINIMIZED", #$FF db #$FF .routine - LDA !ram_mb_rng : AND !MB_RNG_NORMAL_ATTACK_INVERTED - STA !ram_mb_rng + LDA !sram_mb_rng : AND !MB_RNG_NORMAL_ATTACK_INVERTED + STA !sram_mb_rng LDA !ram_cm_mb_normal_attack_rng : ASL : XBA - ORA !ram_mb_rng : STA !ram_mb_rng + ORA !sram_mb_rng : STA !sram_mb_rng LDA !ROOM_ID : CMP.w #ROOM_MotherBrainRoom : BNE .done JML init_mb_rng_from_menu .done @@ -4097,10 +4103,10 @@ rng_mb_bomb_crouch: db #$28, " MINIMIZED", #$FF db #$FF .routine - LDA !ram_mb_rng : AND !MB_RNG_BOMB_CROUCH_INVERTED - STA !ram_mb_rng + LDA !sram_mb_rng : AND !MB_RNG_BOMB_CROUCH_INVERTED + STA !sram_mb_rng LDA !ram_cm_mb_bomb_crouch_rng : XBA : LSR #2 : XBA - ORA !ram_mb_rng : STA !ram_mb_rng + ORA !sram_mb_rng : STA !sram_mb_rng LDA !ROOM_ID : CMP.w #ROOM_MotherBrainRoom : BNE .done JML init_mb_rng_from_menu .done @@ -4116,10 +4122,10 @@ rng_mb_ketchup: db #$28, " MINIMIZED", #$FF db #$FF .routine - LDA !ram_mb_rng : AND !MB_RNG_KETCHUP_INVERTED - STA !ram_mb_rng + LDA !sram_mb_rng : AND !MB_RNG_KETCHUP_INVERTED + STA !sram_mb_rng LDA !ram_cm_mb_ketchup_rng : ASL #2 - ORA !ram_mb_rng : STA !ram_mb_rng + ORA !sram_mb_rng : STA !sram_mb_rng LDA !ROOM_ID : CMP.w #ROOM_MotherBrainRoom : BNE .done JML init_mb_rng_from_menu .done @@ -4135,10 +4141,10 @@ rng_mb_damage_down: db #$28, " MAX BOMBS", #$FF db #$FF .routine - LDA !ram_mb_rng : AND !MB_RNG_DAMAGE_DOWN_INVERTED - STA !ram_mb_rng + LDA !sram_mb_rng : AND !MB_RNG_DAMAGE_DOWN_INVERTED + STA !sram_mb_rng LDA !ram_cm_mb_damage_down_rng : ASL #4 - ORA !ram_mb_rng : STA !ram_mb_rng + ORA !sram_mb_rng : STA !sram_mb_rng LDA !ROOM_ID : CMP.w #ROOM_MotherBrainRoom : BNE .done JML init_mb_rng_from_menu .done @@ -4154,10 +4160,10 @@ rng_mb_phase3_attack: db #$28, " MAX BOMBS", #$FF db #$FF .routine - LDA !ram_mb_rng : AND !MB_RNG_PHASE3_ATTACK_INVERTED - STA !ram_mb_rng + LDA !sram_mb_rng : AND !MB_RNG_PHASE3_ATTACK_INVERTED + STA !sram_mb_rng LDA !ram_cm_mb_phase3_attack_rng : XBA : LSR - ORA !ram_mb_rng : STA !ram_mb_rng + ORA !sram_mb_rng : STA !sram_mb_rng LDA !ROOM_ID : CMP.w #ROOM_MotherBrainRoom : BNE .done JML init_mb_rng_from_menu .done @@ -4185,6 +4191,8 @@ if !FEATURE_DEV dw #$FFFF dw #save_delete endif + dw #$FFFF + dw #rng_hard_reset dw #$0000 %cm_header("SAVESTATE SETTINGS") @@ -4200,12 +4208,14 @@ save_middoorsave: save_alwayssave: %cm_toggle_bit("Auto-Save Every Door", !ram_auto_save_state, #$8000, #0) +if !FEATURE_DEV save_delete: %cm_jsl("DEV Delete Savestate", .routine, #$DEAD) .routine TYA : STA !SRAM_SAVED_STATE %sfxconfirm() RTL +endif save_rando_enable: %cm_toggle("Variance on Load State", !sram_loadstate_rando_enable, #$01, #0) @@ -4224,7 +4234,7 @@ save_rando_supers: save_rando_powerbombs: %cm_numfield_word("Power Bomb Variance", !sram_loadstate_rando_powerbombs, 0, 50, 1, 2, #0) -endif +endif ; !FEATURE_SD2SNES ; ------------- diff --git a/src/menu.asm b/src/menu.asm index c79a649f..5486be25 100644 --- a/src/menu.asm +++ b/src/menu.asm @@ -125,16 +125,17 @@ cm_boot: LDA !ram_quickboot_spc_state : BMI .spc_loop .done + JSL cm_write_ctrl_routine + LDA !ram_load_preset_low_word : BEQ .main_game_loop + ; If Map Completion preset category selected then turn minimap on LDA !sram_preset_category : CMP !PRESET_CATEGORY_100MAP_INDEX : BEQ .set_minimap - CMP !PRESET_CATEGORY_SPAZERMAP_INDEX : BNE .check_preset + CMP !PRESET_CATEGORY_SPAZERMAP_INDEX : BNE .load_preset .set_minimap LDA #$0001 : STA !ram_minimap - .check_preset - JSL cm_write_ctrl_routine - LDA !ram_load_preset_low_word : BEQ .main_game_loop + .load_preset JSL preset_load .main_game_loop @@ -365,7 +366,8 @@ cm_transfer_original_tileset: { PHP : %ai16() - ; If Map Completion preset category selected then turn minimap on + ; If loading a preset and Map Completion preset category selected then turn minimap on + LDA !ram_load_preset_low_word : BEQ .check_room LDA !sram_preset_category : CMP !PRESET_CATEGORY_100MAP_INDEX : BEQ .set_minimap CMP !PRESET_CATEGORY_SPAZERMAP_INDEX : BNE .check_room diff --git a/src/misc.asm b/src/misc.asm index 368053e6..d84075b6 100644 --- a/src/misc.asm +++ b/src/misc.asm @@ -1261,14 +1261,16 @@ endif PEA $A000 : PLB : PLB %ai16() ; Skip draw sprite objects - ; Skip drawing bombs and projectile explosions ; The rest will be the same as the original routine, ; other than adding a touch of artificial lag - PHA : PLA : PHA : PLA + PHX : LDX #$0038 + .lagloop + DEX #2 : BPL .lagloop + PLX : NOP #3 if !FEATURE_PAL - JML $A0886D + JML $A08869 else - JML $A0885D + JML $A08859 endif } diff --git a/src/save.asm b/src/save.asm index c615dcc0..cc378507 100644 --- a/src/save.asm +++ b/src/save.asm @@ -83,7 +83,12 @@ post_load_state: STA !HUD_TILEMAP+$46 : STA !HUD_TILEMAP+$86 : STA !HUD_TILEMAP+$C6 BRA .minimapDone .disableMinimap - LDA !IH_BLANK : STA !HUD_TILEMAP+$7C : STA !HUD_TILEMAP+$7E + LDA !IH_BLANK + STA !HUD_TILEMAP+$3C : STA !HUD_TILEMAP+$7C : STA !HUD_TILEMAP+$BC + STA !HUD_TILEMAP+$3E : STA !HUD_TILEMAP+$7E : STA !HUD_TILEMAP+$BE + STA !HUD_TILEMAP+$40 : STA !HUD_TILEMAP+$80 : STA !HUD_TILEMAP+$C0 + STA !HUD_TILEMAP+$42 : STA !HUD_TILEMAP+$82 : STA !HUD_TILEMAP+$C2 + STA !HUD_TILEMAP+$44 : STA !HUD_TILEMAP+$84 : STA !HUD_TILEMAP+$C4 .minimapDone ; Reload custom HUD number GFX diff --git a/src/symbols.asm b/src/symbols.asm index 6abe357f..0f0e4369 100644 --- a/src/symbols.asm +++ b/src/symbols.asm @@ -23,7 +23,7 @@ ram_tilemap_buffer = !ram_tilemap_buffer ; $7EF500 ; 2048 bytes ; and they are only accurate and maintained enough to make that work ; Shortcuts can skip remaining checks by replacing the return address word -; If WRAM_PERSIST_START is changed from $7EFD80 then also adjust init.asm +; If WRAM_PERSIST_START is changed from $7EFDA0 then also adjust init.asm ; These variables are NOT PERSISTENT across savestates -- ; they're saved and reloaded along with the game state. @@ -90,7 +90,7 @@ ram_load_preset_high_word = !ram_load_preset_high_word ; !WRAM_START+$5D ; Load ram_room_has_set_rng = !ram_room_has_set_rng ; !WRAM_START+$5E ; Room set RNG only uses the most significant bit ram_activated_shine_duration = !ram_activated_shine_duration ; !WRAM_START+$60 -; ^ FREE SPACE ^ up to +$6C +; ^ FREE SPACE ^ up to +$8C ; ---------------------------------------------------------- ; A few room strats like shinetune use several variables @@ -98,48 +98,48 @@ ram_activated_shine_duration = !ram_activated_shine_duration ; !WRAM_START+$60 ; but also they do not need many other variables, ; so the following variables share the same WRAM -ram_xpos = !ram_xpos ; !WRAM_START+$6E -ram_ypos = !ram_ypos ; !WRAM_START+$70 -ram_subpixel_pos = !ram_subpixel_pos ; !WRAM_START+$72 -ram_HUD_check = !ram_HUD_check ; !WRAM_START+$74 -ram_shot_timer = !ram_shot_timer ; !WRAM_START+$76 -ram_quickdrop_counter = !ram_quickdrop_counter ; !WRAM_START+$78 -ram_walljump_counter = !ram_walljump_counter ; !WRAM_START+$7A -ram_fail_sum = !ram_fail_sum ; !WRAM_START+$7C -ram_fail_count = !ram_fail_count ; !WRAM_START+$7E +ram_xpos = !ram_xpos ; !WRAM_START+$8E +ram_ypos = !ram_ypos ; !WRAM_START+$90 +ram_subpixel_pos = !ram_subpixel_pos ; !WRAM_START+$92 +ram_HUD_check = !ram_HUD_check ; !WRAM_START+$94 +ram_shot_timer = !ram_shot_timer ; !WRAM_START+$96 +ram_quickdrop_counter = !ram_quickdrop_counter ; !WRAM_START+$98 +ram_walljump_counter = !ram_walljump_counter ; !WRAM_START+$9A +ram_fail_sum = !ram_fail_sum ; !WRAM_START+$9C +ram_fail_count = !ram_fail_count ; !WRAM_START+$9E ; Shot timer also reuses values -ram_shot_timer_past1 = !ram_shot_timer_past1 ; !WRAM_START+$78 -ram_shot_timer_past2 = !ram_shot_timer_past2 ; !WRAM_START+$7A -ram_shot_timer_past3 = !ram_shot_timer_past3 ; !WRAM_START+$7C -ram_shot_timer_past4 = !ram_shot_timer_past4 ; !WRAM_START+$7E +ram_shot_timer_past1 = !ram_shot_timer_past1 ; !WRAM_START+$98 +ram_shot_timer_past2 = !ram_shot_timer_past2 ; !WRAM_START+$9A +ram_shot_timer_past3 = !ram_shot_timer_past3 ; !WRAM_START+$9C +ram_shot_timer_past4 = !ram_shot_timer_past4 ; !WRAM_START+$9E ; Kihunter manip -ram_enemy0_last_xpos = !ram_enemy0_last_xpos ; !WRAM_START+$6E -ram_enemy0_last_ypos = !ram_enemy0_last_ypos ; !WRAM_START+$70 -ram_enemy4_last_xpos = !ram_enemy4_last_xpos ; !WRAM_START+$72 -ram_enemy4_last_ypos = !ram_enemy4_last_ypos ; !WRAM_START+$74 -ram_enemy6_last_xpos = !ram_enemy6_last_xpos ; !WRAM_START+$76 -ram_enemy6_last_ypos = !ram_enemy6_last_ypos ; !WRAM_START+$78 -ram_enemy8_last_xpos = !ram_enemy8_last_xpos ; !WRAM_START+$7A -ram_enemy8_last_ypos = !ram_enemy8_last_ypos ; !WRAM_START+$7C +ram_enemy0_last_xpos = !ram_enemy0_last_xpos ; !WRAM_START+$8E +ram_enemy0_last_ypos = !ram_enemy0_last_ypos ; !WRAM_START+$90 +ram_enemy4_last_xpos = !ram_enemy4_last_xpos ; !WRAM_START+$92 +ram_enemy4_last_ypos = !ram_enemy4_last_ypos ; !WRAM_START+$94 +ram_enemy6_last_xpos = !ram_enemy6_last_xpos ; !WRAM_START+$96 +ram_enemy6_last_ypos = !ram_enemy6_last_ypos ; !WRAM_START+$98 +ram_enemy8_last_xpos = !ram_enemy8_last_xpos ; !WRAM_START+$9A +ram_enemy8_last_ypos = !ram_enemy8_last_ypos ; !WRAM_START+$9C ; Kraid radar (reuses above ram_enemy6 variables) -ram_radar6 = !ram_radar6 ; !WRAM_START+$6E -ram_radar7 = !ram_radar7 ; !WRAM_START+$70 -ram_enemy7_last_xpos = !ram_enemy7_last_xpos ; !WRAM_START+$7A -ram_enemy7_last_ypos = !ram_enemy7_last_ypos ; !WRAM_START+$7C +ram_radar6 = !ram_radar6 ; !WRAM_START+$8E +ram_radar7 = !ram_radar7 ; !WRAM_START+$90 +ram_enemy7_last_xpos = !ram_enemy7_last_xpos ; !WRAM_START+$9A +ram_enemy7_last_ypos = !ram_enemy7_last_ypos ; !WRAM_START+$9C ; Shinetune -ram_shine_dash_held_late = !ram_shine_dash_held_late ; !WRAM_START+$6E -ram_shinetune_early_1 = !ram_shinetune_early_1 ; !WRAM_START+$70 -ram_shinetune_late_1 = !ram_shinetune_late_1 ; !WRAM_START+$72 -ram_shinetune_early_2 = !ram_shinetune_early_2 ; !WRAM_START+$74 -ram_shinetune_late_2 = !ram_shinetune_late_2 ; !WRAM_START+$76 -ram_shinetune_early_3 = !ram_shinetune_early_3 ; !WRAM_START+$78 -ram_shinetune_late_3 = !ram_shinetune_late_3 ; !WRAM_START+$7A -ram_shinetune_early_4 = !ram_shinetune_early_4 ; !WRAM_START+$7C -ram_shinetune_late_4 = !ram_shinetune_late_4 ; !WRAM_START+$7E +ram_shine_dash_held_late = !ram_shine_dash_held_late ; !WRAM_START+$8E +ram_shinetune_early_1 = !ram_shinetune_early_1 ; !WRAM_START+$90 +ram_shinetune_late_1 = !ram_shinetune_late_1 ; !WRAM_START+$92 +ram_shinetune_early_2 = !ram_shinetune_early_2 ; !WRAM_START+$94 +ram_shinetune_late_2 = !ram_shinetune_late_2 ; !WRAM_START+$96 +ram_shinetune_early_3 = !ram_shinetune_early_3 ; !WRAM_START+$98 +ram_shinetune_late_3 = !ram_shinetune_late_3 ; !WRAM_START+$9A +ram_shinetune_early_4 = !ram_shinetune_early_4 ; !WRAM_START+$9C +ram_shinetune_late_4 = !ram_shinetune_late_4 ; !WRAM_START+$9E ; ---------------------------------------------------------- ; WRAM variables below this point are PERSISTENT. @@ -156,19 +156,20 @@ ram_random_preset_value = !ram_random_preset_value ; !WRAM_PERSIST_START+$08 ram_magic_pants_enabled = !ram_magic_pants_enabled ; !WRAM_PERSIST_START+$0A ram_space_pants_enabled = !ram_space_pants_enabled ; !WRAM_PERSIST_START+$0C -ram_kraid_claw_rng = !ram_kraid_claw_rng ; !WRAM_PERSIST_START+$0E -ram_kraid_wait_rng = !ram_kraid_wait_rng ; !WRAM_PERSIST_START+$10 -ram_draygon_rng_left = !ram_draygon_rng_left ; !WRAM_PERSIST_START+$12 -ram_draygon_rng_right = !ram_draygon_rng_right ; !WRAM_PERSIST_START+$14 -ram_turret_rng = !ram_turret_rng ; !WRAM_PERSIST_START+$16 -ram_ridley_rng_flags = !ram_ridley_rng_flags ; !WRAM_PERSIST_START+$18 -ram_ridley_rng_times_and_fireball = !ram_ridley_rng_times_and_fireball ; !WRAM_PERSIST_START+$1A -ram_crocomire_rng = !ram_crocomire_rng ; !WRAM_PERSIST_START+$1C -ram_phantoon_phase_rng = !ram_phantoon_phase_rng ; !WRAM_PERSIST_START+$1E -ram_phantoon_eye_and_flames_rng = !ram_phantoon_eye_and_flames_rng ; !WRAM_PERSIST_START+$20 -ram_botwoon_rng = !ram_botwoon_rng ; !WRAM_PERSIST_START+$22 -ram_baby_rng = !ram_baby_rng ; !WRAM_PERSIST_START+$24 -ram_mb_rng = !ram_mb_rng ; !WRAM_PERSIST_START+$26 + +ram_game_loop_extras = !ram_game_loop_extras ; !WRAM_PERSIST_START+$0E +ram_infinite_ammo = !ram_infinite_ammo ; !WRAM_PERSIST_START+$10 +ram_suits_heat_damage_value = !ram_suits_heat_damage_value ; !WRAM_PERSIST_START+$12 +ram_sprite_feature_flags = !ram_sprite_feature_flags ; !WRAM_PERSIST_START+$14 +ram_door_portal_flags = !ram_door_portal_flags ; !WRAM_PERSIST_START+$16 +ram_door_source = !ram_door_source ; !WRAM_PERSIST_START+$18 +ram_door_destination = !ram_door_destination ; !WRAM_PERSIST_START+$1A +ram_frames_held = !ram_frames_held ; !WRAM_PERSIST_START+$1C +ram_quickboot_spc_state = !ram_quickboot_spc_state ; !WRAM_PERSIST_START+$1E +ram_display_backup = !ram_display_backup ; !WRAM_PERSIST_START+$20 +ram_slowdown_mode = !ram_slowdown_mode ; !WRAM_PERSIST_START+$22 + +; ^ FREE SPACE ^ up to +$26 ram_itempickups_all = !ram_itempickups_all ; !WRAM_PERSIST_START+$28 ram_itempickups_visible = !ram_itempickups_visible ; !WRAM_PERSIST_START+$2A @@ -192,24 +193,7 @@ ram_watch_edit_right = !ram_watch_edit_right ; !WRAM_PERSIST_START+$48 ram_watch_edit_lock_left = !ram_watch_edit_lock_left ; !WRAM_PERSIST_START+$4A ram_watch_edit_lock_right = !ram_watch_edit_lock_right ; !WRAM_PERSIST_START+$4C -ram_game_loop_extras = !ram_game_loop_extras ; !WRAM_PERSIST_START+$4E -ram_infinite_ammo = !ram_infinite_ammo ; !WRAM_PERSIST_START+$50 -ram_suits_heat_damage_value = !ram_suits_heat_damage_value ; !WRAM_PERSIST_START+$52 -ram_sprite_feature_flags = !ram_sprite_feature_flags ; !WRAM_PERSIST_START+$54 -ram_door_portal_flags = !ram_door_portal_flags ; !WRAM_PERSIST_START+$56 -ram_door_source = !ram_door_source ; !WRAM_PERSIST_START+$58 -ram_door_destination = !ram_door_destination ; !WRAM_PERSIST_START+$5A -ram_frames_held = !ram_frames_held ; !WRAM_PERSIST_START+$5C -ram_quickboot_spc_state = !ram_quickboot_spc_state ; !WRAM_PERSIST_START+$5E -ram_display_backup = !ram_display_backup ; !WRAM_PERSIST_START+$60 - -; ^ FREE SPACE ^ up to +$7C (!WRAM_START+$FC - !WRAM_PERSIST_START) - -; ----------------------- -; RAM (Bank 7E required) -; ----------------------- - -ram_slowdown_mode = !ram_slowdown_mode ; $7EFDFE +; ^ FREE SPACE ^ up to +$5E (!WRAM_START+$FE - !WRAM_PERSIST_START) ; --------- ; RAM Menu @@ -536,10 +520,25 @@ sram_fast_teleport = !sram_fast_teleport ; !SRAM_START+$AA sram_update_timers_ctrl_input = !sram_update_timers_ctrl_input ; !SRAM_START+$AC sram_update_timers_options = !sram_update_timers_options ; !SRAM_START+$AE -; ^ FREE SPACE ^ up to +$EC +; ^ FREE SPACE ^ up to +$CE ; This is a continuation of sram_ctrl_shortcut_selections sram_ctrl_additional_selections = !sram_ctrl_additional_selections ; !SRAM_START+$D0 ; 18 bytes starting from +$EE +sram_hard_reset_clears_rng = !sram_hard_reset_clears_rng ; !SRAM_START+$D1 ; only uses first bit +sram_kraid_claw_rng = !sram_kraid_claw_rng ; !SRAM_START+$D2 +sram_kraid_wait_rng = !sram_kraid_wait_rng ; !SRAM_START+$D4 +sram_draygon_rng_left = !sram_draygon_rng_left ; !SRAM_START+$D6 +sram_draygon_rng_right = !sram_draygon_rng_right ; !SRAM_START+$D8 +sram_turret_rng = !sram_turret_rng ; !SRAM_START+$DA +sram_ridley_rng_flags = !sram_ridley_rng_flags ; !SRAM_START+$DC +sram_ridley_rng_times_and_fireball = !sram_ridley_rng_times_and_fireball ; !SRAM_START+$DE +sram_crocomire_rng = !sram_crocomire_rng ; !SRAM_START+$E0 +sram_phantoon_phase_rng = !sram_phantoon_phase_rng ; !SRAM_START+$E2 +sram_phantoon_eye_and_flames_rng = !sram_phantoon_eye_and_flames_rng ; !SRAM_START+$E4 +sram_botwoon_rng = !sram_botwoon_rng ; !SRAM_START+$E6 +sram_baby_rng = !sram_baby_rng ; !SRAM_START+$E8 +sram_mb_rng = !sram_mb_rng ; !SRAM_START+$EA +sram_rng_reserved = !sram_rng_reserved ; !SRAM_START+$EC ; available sram_presetequiprando = !sram_presetequiprando ; !SRAM_START+$100 sram_presetequiprando_beampref = !sram_presetequiprando_beampref ; !SRAM_START+$102 diff --git a/src/tinystates.asm b/src/tinystates.asm index 9aaf573f..c561e45c 100644 --- a/src/tinystates.asm +++ b/src/tinystates.asm @@ -122,7 +122,12 @@ post_load_state: STA !HUD_TILEMAP+$46 : STA !HUD_TILEMAP+$86 : STA !HUD_TILEMAP+$C6 BRA .minimapDone .disableMinimap - LDA !IH_BLANK : STA !HUD_TILEMAP+$7C : STA !HUD_TILEMAP+$7E + LDA !IH_BLANK + STA !HUD_TILEMAP+$3C : STA !HUD_TILEMAP+$7C : STA !HUD_TILEMAP+$BC + STA !HUD_TILEMAP+$3E : STA !HUD_TILEMAP+$7E : STA !HUD_TILEMAP+$BE + STA !HUD_TILEMAP+$40 : STA !HUD_TILEMAP+$80 : STA !HUD_TILEMAP+$C0 + STA !HUD_TILEMAP+$42 : STA !HUD_TILEMAP+$82 : STA !HUD_TILEMAP+$C2 + STA !HUD_TILEMAP+$44 : STA !HUD_TILEMAP+$84 : STA !HUD_TILEMAP+$C4 .minimapDone ; Reload custom HUD number GFX diff --git a/web/data/changelog.mdx b/web/data/changelog.mdx index bb91e367..7b6c1e51 100644 --- a/web/data/changelog.mdx +++ b/web/data/changelog.mdx @@ -52,6 +52,9 @@ - Added Update Timers menu (2.7.6) - Updated Zeni customize menu profile (2.7.6.1) - Remove rare 2nd round phantoon patterns from left/right/no slow/no mid/no fast options (2.7.6.2) +- Move RNG control to SRAM, with option defaulted on to still reset it when SNES hard resets (2.7.7) +- Fine-tune door transition lag and make minimap toggle easier to use (2.7.7) +- Prevent shinetune from showing L# when dash pressed near beginning of movement (2.7.7) # Version 2.6.x - Optimize kraid rock projectiles to reduce lag when Kraid rises (2.6.0) diff --git a/web/data/config.json b/web/data/config.json index 216ce181..7771d43e 100644 --- a/web/data/config.json +++ b/web/data/config.json @@ -1,6 +1,6 @@ { "name": "Super Metroid Practice Hack", - "version": "2.7.6.2", + "version": "2.7.7", "variants": ["NTSC", "PAL"], "base": { "NTSC": { @@ -19,24 +19,24 @@ "options": [ { "id": "sd2snes", "name": "SD2SNES, FXPAK" }, { "id": "mister", "name": "MiSTer, SuperNT" }, - { "id": "bsnes", "name": "Snes9x 1.61+, BSNES v115"}, + { "id": "bsnes", "name": "Snes9x 1.61+, BSNES v115" }, { "id": "tinystates", "name": "Snes9x 1.60 or older, Everdrive" }, { "id": "emulator", "name": "SNES Classic, Virtual Console" } ] } ], "patches": [ - { "platform": "emulator", "variant": "NTSC", "file": "/patches/emulator-ntsc.ips", "size": 4194304}, - { "platform": "emulator", "variant": "PAL", "file": "/patches/emulator-pal.ips", "size": 4194304}, + { "platform": "emulator", "variant": "NTSC", "file": "/patches/emulator-ntsc.ips", "size": 4194304 }, + { "platform": "emulator", "variant": "PAL", "file": "/patches/emulator-pal.ips", "size": 4194304 }, - { "platform": "sd2snes", "variant": "NTSC", "file": "/patches/sd2snes-ntsc.ips", "size": 4194304}, - { "platform": "mister", "variant": "NTSC", "file": "/patches/sd2snes-ntsc.ips", "size": 4194304}, - { "platform": "bsnes", "variant": "NTSC", "file": "/patches/sd2snes-ntsc.ips", "size": 4194304}, - { "platform": "sd2snes", "variant": "PAL", "file": "/patches/sd2snes-pal.ips", "size": 4194304}, - { "platform": "mister", "variant": "PAL", "file": "/patches/sd2snes-pal.ips", "size": 4194304}, - { "platform": "bsnes", "variant": "PAL", "file": "/patches/sd2snes-pal.ips", "size": 4194304}, + { "platform": "sd2snes", "variant": "NTSC", "file": "/patches/sd2snes-ntsc.ips", "size": 4194304 }, + { "platform": "mister", "variant": "NTSC", "file": "/patches/sd2snes-ntsc.ips", "size": 4194304 }, + { "platform": "bsnes", "variant": "NTSC", "file": "/patches/sd2snes-ntsc.ips", "size": 4194304 }, + { "platform": "sd2snes", "variant": "PAL", "file": "/patches/sd2snes-pal.ips", "size": 4194304 }, + { "platform": "mister", "variant": "PAL", "file": "/patches/sd2snes-pal.ips", "size": 4194304 }, + { "platform": "bsnes", "variant": "PAL", "file": "/patches/sd2snes-pal.ips", "size": 4194304 }, - { "platform": "tinystates", "variant": "NTSC", "file": "/patches/tinystates-ntsc.ips", "size": 4194304}, - { "platform": "tinystates", "variant": "PAL", "file": "/patches/tinystates-pal.ips", "size": 4194304} + { "platform": "tinystates", "variant": "NTSC", "file": "/patches/tinystates-ntsc.ips", "size": 4194304 }, + { "platform": "tinystates", "variant": "PAL", "file": "/patches/tinystates-pal.ips", "size": 4194304 } ] } diff --git a/web/data/help.mdx b/web/data/help.mdx index f15f5e8a..874b25f2 100644 --- a/web/data/help.mdx +++ b/web/data/help.mdx @@ -223,6 +223,7 @@ If you experience crashes or severe glitches when using savestates, your platfor | - Baby Skip RNG | Set the baby into a lunge state or force it to not lunge. | - All Drops | Override the vanilla drop chance tables with one of six possible drops. | | This can produce non-vanilla behavior, including enemies spawning drops that normally do not. +| - Hard Reset Clears RNG | When the practice hack starts, resets all RNG control settings to the default vanilla behavior. This option is on by default. | | | **Savestate Settings** | Features relating to the practice hack's built-in savestates. Not available on some platforms. | - Rerandomize | Toggles rerandomizing of RNG values upon loading a savestate. Automatically disabled in rooms with "seeded" RNG, but some of these situations may not be accounted for yet.