From 0fc8df4b885fb931da6946cf083000e5ff2feb55 Mon Sep 17 00:00:00 2001 From: Jonathan Keller <19418817+NobodyNada@users.noreply.github.com> Date: Tue, 4 Oct 2022 16:58:13 -0700 Subject: [PATCH 01/23] Infinite-doppler mode for Phantoon. --- src/defines.asm | 25 ++++++-- src/flagmenu.asm | 4 ++ src/infohud.asm | 144 +++++++++++++++++++++++++++++++++++++++++++++++ src/init.asm | 3 + src/symbols.asm | 21 ++++++- 5 files changed, 190 insertions(+), 7 deletions(-) diff --git a/src/defines.asm b/src/defines.asm index d087f354..b62ff89a 100644 --- a/src/defines.asm +++ b/src/defines.asm @@ -9,7 +9,7 @@ !WRAM_BANK = !WRAM_START>>16 !WRAM_SIZE = #$0200 !WRAM_START = $7EFD00 -!WRAM_PERSIST_START = $7EFD80 +!WRAM_PERSIST_START = $7EFD94 !WRAM_MENU_START = $7EFE00 !WRAM_END = $7EFF00 !CRASHDUMP = $7EFF00 @@ -79,7 +79,6 @@ !ram_print_segment_timer = !WRAM_START+$5C !ram_activated_shine_duration = !WRAM_START+$5E -; ^ FREE SPACE ^ up to +$6C ; ---------------------------------------------------------- ; Shinetune uses several variables not used by other modes, @@ -106,6 +105,22 @@ !ram_shinetune_early_4 = !WRAM_START+$7C !ram_shinetune_late_4 = !WRAM_START+$7E + +!ram_infidoppler_active = !WRAM_START+$80 + +; An array of 5 words, one per projectile, representing +; the distance Samus travelled horizontally before firing. +; The low byte of each word is integer pixels, and the high +; byte is fractional pixels. Yes, that sounds weird, but it +; makes the math a little bit easier. +!ram_infidoppler_offsets = !WRAM_START+$82 ; array of 5 words +!ram_infidoppler_x = !WRAM_START+$8C +!ram_infidoppler_subx = !WRAM_START+$8E +!ram_infidoppler_y = !WRAM_START+$90 +!ram_infidoppler_suby = !WRAM_START+$92 + +; No free space :( + ; ---------------------------------------------------------- ; WRAM variables below this point are PERSISTENT. ; They maintain their value across savestates. @@ -175,7 +190,7 @@ ; 1: SPC load requested ; ROM address: routine to perform next initialization step -; ^ FREE SPACE ^ up to +$7C (!WRAM_START+$FC - !WRAM_PERSIST_START) +; No free space :( ; ----------------------- ; RAM (Bank 7E required) @@ -353,7 +368,7 @@ ; SRAM ; ----- -!SRAM_VERSION = #$0017 +!SRAM_VERSION = #$0018 !SRAM_START = $702000 !PRESET_SLOTS = $703000 @@ -440,6 +455,8 @@ !sram_spin_lock = !SRAM_START+$8E !sram_map_grid_alignment = !SRAM_START+$90 +!sram_infidoppler_enabled = !SRAM_START+$92 + ; ^ FREE SPACE ^ up to +$EE !sram_presetequiprando = !SRAM_START+$100 diff --git a/src/flagmenu.asm b/src/flagmenu.asm index c5879f1c..8d392a06 100644 --- a/src/flagmenu.asm +++ b/src/flagmenu.asm @@ -2316,6 +2316,7 @@ MiscMenu: dw #misc_water_physics dw #misc_double_jump dw #misc_spin_lock + dw #misc_infidoppler dw #$FFFF dw #misc_magicpants dw #misc_spacepants @@ -2547,6 +2548,9 @@ misc_double_jump: misc_spin_lock: %cm_toggle("Spin Lock", !sram_spin_lock, #$0001, #0) +misc_infidoppler: + %cm_toggle("Phantoon Infi-Doppler", !sram_infidoppler_enabled, #$0001, #0) + init_physics_ram: { LDA !sram_water_physics : BNE init_physics_non_vanilla diff --git a/src/infohud.asm b/src/infohud.asm index 3c87c123..7d08ffaa 100644 --- a/src/infohud.asm +++ b/src/infohud.asm @@ -1819,9 +1819,153 @@ ih_adjust_realtime: overwrite_HUD_numbers: RTL +; Infidoppler routines. +; +; When Samus fires a missile during a Phantoon swoop, record her position. +; Each successive time she fires a missile, teleport her back to the initial +; position. Each time a missile hits, teleport it back by the amount Samus +; moved before firing it, and allow it to hit again. This way, Phantoon's +; cooldowns behave as if we were dopplering, but we never run out of room. +infidoppler_hook_fire_missile: +{ + ; Is infidoppler active? + LDA !ram_infidoppler_active + BEQ .done + +.active: + LDX $14 ; projectile index + SEC + + LDA !SAMUS_X_SUBPX : SBC !ram_infidoppler_subx + AND #$FF00 : STA !ram_infidoppler_offsets,x + LDA !SAMUS_X : SBC !ram_infidoppler_x + AND #$00FF : ORA !ram_infidoppler_offsets,x : STA !ram_infidoppler_offsets,x + + LDA !ram_infidoppler_x + STA !SAMUS_X + LDA !ram_infidoppler_subx + STA !SAMUS_X_SUBPX + + LDA !ram_infidoppler_y + STA !SAMUS_Y + LDA !ram_infidoppler_suby + STA !SAMUS_Y_SUBPX + +.done: + DEC $09C6 + JML $90BEC7 +} + +infidoppler_hook_projectile_collision: +{ + ; Is infidoppler enabled? + LDA !sram_infidoppler_enabled + BNE .check + +.no: + LDA $0C18,y + BIT #$0008 + RTL + +.check + ; Is infidoppler already active? + LDA !ram_infidoppler_active + BNE .active + + ; Are we in phantoon's room? + LDA !ROOM_ID : CMP.w #ROOM_PhantoonRoom : BNE .no + + LDA $0C18,y + AND #$F00 : CMP #$100 : BNE .no ; Is this a missile? + CPX #$0000 : BNE .no ; Is this phantoon? + + ; Is phantoon in a swoop? +if !FEATURE_PAL + LDA $0FB2 : CMP #$D6AC : BNE .no +else + LDA $0FB2 : CMP #$D678 : BNE .no +endif + + ; Is this the last missile? + LDA $102A : CMP.w #101 : BCC .no + + ; Initialize infidoppler. + LDA #$FFFF + STA !ram_infidoppler_active + LDA !SAMUS_X + STA !ram_infidoppler_x + LDA !SAMUS_X_SUBPX + STA !ram_infidoppler_subx + LDA !SAMUS_Y + STA !ram_infidoppler_y + LDA !SAMUS_Y_SUBPX + STA !ram_infidoppler_suby + + BRA .no + +.active: + TYX + + ; We've shot Phantoon with a missile in infidoppler mode. + LDA !ram_infidoppler_offsets,x + BEQ .done ; if projectile variable is 0, this missile has already hit + + ; Subtract projectile variable from missile position + ; the LOW 8 bits are pixels, the HIGH 8 bits are fractional + ; yes, it's weird. but it saves a couple XBAs + PHA : AND #$FF00 : SEC + EOR #$FFFF : ADC $0B8C,y : STA $0B8C,y + PLA : AND #$00FF + EOR #$FFFF : ADC $0B64,y : STA $0B64,y + + LDA #$0000 + LSR $0C2C,x ; halve damage, since it will double hit + STA !ram_infidoppler_offsets,x + TAX + LDA #$0001 + +.done: + ; if zero flag is set, the projectile despawns + RTL +} + +infidoppler_hook_phantoon_swoop_end: +{ + LDA #$0000 + STA !ram_infidoppler_active + + ; Hijacked code +if !FEATURE_PAL + LDA #$D6ED + STA $0FB2, x + JML $A7D6BF +else + LDA #$D6B9 + STA $0FB2, x + JML $A7D68B +endif +} + print pc, " infohud end" warnpc $F0E000 ; spritefeat.asm +if !FEATURE_PAL +org $A7D6B9 +else +org $A7D685 +endif + JML infidoppler_hook_phantoon_swoop_end + +org $90BEBF + JML infidoppler_hook_fire_missile + +if !FEATURE_PAL +org $A09CD8 +else +org $A09CC8 +endif + JSL infidoppler_hook_projectile_collision + NOP : NOP ; Stuff that needs to be placed in bank 80 org $80FD00 diff --git a/src/init.asm b/src/init.asm index 0dfd9aa4..22762b7f 100644 --- a/src/init.asm +++ b/src/init.asm @@ -139,6 +139,9 @@ endif TDC : STA !sram_spin_lock : STA !sram_ctrl_toggle_spin_lock DEC : STA !sram_map_grid_alignment + .sram_upgrade_17to18 + TDC : STA !sram_infidoppler_enabled + LDA !SRAM_VERSION : STA !sram_initialized RTS diff --git a/src/symbols.asm b/src/symbols.asm index a21cc549..e3b49425 100644 --- a/src/symbols.asm +++ b/src/symbols.asm @@ -77,8 +77,6 @@ ram_kraid_adjust_timer = !ram_kraid_adjust_timer ; !WRAM_START+$5A ram_print_segment_timer = !ram_print_segment_timer ; !WRAM_START+$5C ram_activated_shine_duration = !ram_activated_shine_duration ; !WRAM_START+$5E -; ^ FREE SPACE ^ up to +$6C - ; ---------------------------------------------------------- ; Shinetune uses several variables not used by other modes, ; but also shinetune does not use many other variables, @@ -104,6 +102,21 @@ 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_infidoppler_active = !ram_infidoppler_active ; !WRAM_START+$80 + +; An array of 5 words, one per projectile, representing +; the distance Samus travelled horizontally before firing. +; The low byte of each word is integer pixels, and the high +; byte is fractional pixels. Yes, that sounds weird, but it +; makes the math a little bit easier. +ram_infidoppler_offsets = !ram_infidoppler_offsets ; !WRAM_START+$82 ; array of 5 words +ram_infidoppler_x = !ram_infidoppler_x ; !WRAM_START+$8C +ram_infidoppler_subx = !ram_infidoppler_subx ; !WRAM_START+$8E +ram_infidoppler_y = !ram_infidoppler_y ; !WRAM_START+$90 +ram_infidoppler_suby = !ram_infidoppler_suby ; !WRAM_START+$92 + +; No free space :( + ; ---------------------------------------------------------- ; WRAM variables below this point are PERSISTENT. ; They maintain their value across savestates. @@ -170,7 +183,7 @@ ram_baby_rng = !ram_baby_rng ; !WRAM_PERSIST_START+$66 ram_quickboot_spc_state = !ram_quickboot_spc_state ; !WRAM_PERSIST_START+$68 -; ^ FREE SPACE ^ up to +$7C (!WRAM_START+$FC - !WRAM_PERSIST_START) +; No free space :( ; ----------------------- ; RAM (Bank 7E required) @@ -428,6 +441,8 @@ sram_cm_font = !sram_cm_font ; !SRAM_START+$8C sram_spin_lock = !sram_spin_lock ; !SRAM_START+$8E sram_map_grid_alignment = !sram_map_grid_alignment ; !SRAM_START+$90 +sram_infidoppler_enabled = !sram_infidoppler_enabled ; !SRAM_START+$92 + ; ^ FREE SPACE ^ up to +$EE sram_presetequiprando = !sram_presetequiprando ; !SRAM_START+$100 From 084b5128596bb54ed0b6eea9be38dfc59e30d57e Mon Sep 17 00:00:00 2001 From: Jonathan Keller <19418817+NobodyNada@users.noreply.github.com> Date: Wed, 15 Jan 2025 19:46:50 -0800 Subject: [PATCH 02/23] Fix Phantoon's swoop behavior in pacifist mode --- src/damage.asm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/damage.asm b/src/damage.asm index d9b1084c..75aced78 100644 --- a/src/damage.asm +++ b/src/damage.asm @@ -588,3 +588,18 @@ endif print pc, " damage bankA0 end" +; Adjust Phantoon to look at adjusted projectile damage instead of absolute difference in health +if !FEATURE_PAL +org $A7DE2F +else +org $A7DDFB +endif + LDA $187A + +if !FEATURE_PAL +org $A7DE2F +else +org $A7DE65 +endif + LDA $187A + From e5c9c1da0c99014993b3a7ce07112f82bd0ede0f Mon Sep 17 00:00:00 2001 From: Jonathan Keller <19418817+NobodyNada@users.noreply.github.com> Date: Wed, 15 Jan 2025 19:54:38 -0800 Subject: [PATCH 03/23] Document infi-doppler --- web/data/changelog.mdx | 1 + web/data/help.mdx | 1 + 2 files changed, 2 insertions(+) diff --git a/web/data/changelog.mdx b/web/data/changelog.mdx index 16e7aa7c..c91b7403 100644 --- a/web/data/changelog.mdx +++ b/web/data/changelog.mdx @@ -21,6 +21,7 @@ - Differentiate vanilla/vanilla+ top-left display modes (2.6.5) - Added spinlock option and force map grid alignment option (2.6.5) - Walljump mode learned Mt. Everest and adjust rules for detecting bonks (2.6.5) +- Added infite-doppler mode for Phantoon # Version 2.5.x - Added a separate version of savestates for MiSTer, Everdrives, and most modern emulators (not SNES Classic/VC) (2.5.0) diff --git a/web/data/help.mdx b/web/data/help.mdx index 22f82a54..8a68f602 100644 --- a/web/data/help.mdx +++ b/web/data/help.mdx @@ -106,6 +106,7 @@ If you experience crashes or severe glitches when using savestates, your platfor | - Water Physics | Control whether the current room's water physics are applied, including DASH Recall's Pressure Valve item. | - Double Jump | From DASH Recall, allows Samus to double jump as if she had space jump for one jump. | - Spin Lock | From Map Rando, allows Samus to avoid breaking out of spin with up or down following a walljump. +| - Phantoon Infi-Doppler | Allows Samus to doppler Phantoon indefinitely without running out of space. | - Magic Pants | Toggle a flashing animation on Samus or a sound (or both) to show when dash should be held for short charging. | - Space Pants | Toggle a flashing animation on Samus or a sound (or both) during a space jump to show when you should jump. | | **Note**: If you have both Magic Pants and Space Pants on, only one of them will be used. From 81486f2c9d24b2156d3d1631d8057c6c07bb7fdc Mon Sep 17 00:00:00 2001 From: InsaneFirebat Date: Thu, 6 Feb 2025 23:05:39 -0500 Subject: [PATCH 04/23] Implement cout's freespace macros Replaces our orgs with a macro that assigns freespace to the next available byte Use %startfree(80) to org into the next byte of freespace in bank $80 Use %endfree(80) to signal the end of freespace usage and update macro variables Replaces most of the print commands with a list of banks written to, the next available byte, and how many bytes are remaining From https://github.com/cout/baby_metroid/blob/main/src/freespace.asm Co-Authored-By: Paul Brannan --- src/crash.asm | 9 +- src/customizemenu.asm | 10 +- src/custompresets.asm | 6 +- src/cutscenes.asm | 26 ++- src/damage.asm | 16 +- src/demos.asm | 5 +- src/fanfare.asm | 11 +- src/flagmenu.asm | 6 +- src/freespace.asm | 394 ++++++++++++++++++++++++++++++++++++++++++ src/gamemenu.asm | 5 +- src/gamemode.asm | 7 +- src/infohud.asm | 12 +- src/init.asm | 6 +- src/layout.asm | 32 ++-- src/layoutmenu.asm | 6 +- src/main.asm | 5 + src/mainmenu.asm | 5 +- src/menu.asm | 16 +- src/minimap.asm | 17 +- src/misc.asm | 17 +- src/presets.asm | 34 ++-- src/rng.asm | 32 ++-- src/roomnames.asm | 5 +- src/save.asm | 7 +- src/spritefeat.asm | 5 +- src/spriteprio.asm | 7 +- src/tilegraphics.asm | 5 +- src/tinystates.asm | 12 +- 28 files changed, 521 insertions(+), 197 deletions(-) create mode 100644 src/freespace.asm diff --git a/src/crash.asm b/src/crash.asm index a832f598..865f0e82 100644 --- a/src/crash.asm +++ b/src/crash.asm @@ -41,8 +41,7 @@ BRKHandlerHook: JML BRKHandler_setBank -org $80E000 -print pc, " crash handler bank80 start" +%startfree(80) ; This routine (or a bridge to it) must live in bank $80 CrashHandler: @@ -184,11 +183,9 @@ COPHandler: JMP CrashHandler_fixStack } -print pc, " crash handler bank80 end" -warnpc $80F000 ; presets.asm +%endfree(80) pullpc -print pc, " crash handler bank89 start" CrashViewer: { @@ -1128,5 +1125,3 @@ CrashTextInfo11: ; Press LRSlSt to soft reset db "Press ", #$8D, #$8C, #$85, #$84, " to soft reset", #$FF -print pc, " crash handler bank89 end" - diff --git a/src/customizemenu.asm b/src/customizemenu.asm index 8364f41f..4867ab0b 100644 --- a/src/customizemenu.asm +++ b/src/customizemenu.asm @@ -1,7 +1,6 @@ pushpc -org $E4E000 -print pc, " menu customization start" +%startfree(E4) ; ---------- ; Audio Menu @@ -984,11 +983,10 @@ ConvertNormal2Header: %norm2head("%") } -print pc, " menu customization end" +%endfree(E4) -org $AEFD20 -print pc, " menu PaletteProfileTables start" +%startfree(AE) ; These tables can live anywhere PaletteProfileTables: @@ -1106,5 +1104,5 @@ EXAKTProfileTable: dw $2DC6, $5F65, $3A42, $18A1, $2982, $4F0A, $6F08, $4EC9, $18A1, $2DE6, $63CC } -print pc, " menu PaletteProfileTables end" +%endfree(AE) pullpc diff --git a/src/custompresets.asm b/src/custompresets.asm index 0b12f8e8..2d8e4a4a 100644 --- a/src/custompresets.asm +++ b/src/custompresets.asm @@ -2,8 +2,7 @@ ; Custom Presets ; -------------- -org $83B000 -print pc, " custompresets start" +%startfree(83) ; Backward compatibility was promised. Just because it's unused, doesn't mean you can use it. @@ -1232,6 +1231,5 @@ PresetEquipRandoReserveTable: PresetEquipRandoETankTable: dw #$0063, #$00C7, #$012B, #$018F, #$01F3, #$0257, #$02BB, #$031F, #$0383, #$03E7, #$044B, #$04AF, #$0513, #$0517, #$05DB -print pc, " custompresets end" -warnpc $83C000 ; layout.asm +%endfree(83) diff --git a/src/cutscenes.asm b/src/cutscenes.asm index 6df48e67..f20bb953 100644 --- a/src/cutscenes.asm +++ b/src/cutscenes.asm @@ -14,12 +14,11 @@ endif JSR cutscenes_nintendo_logo_hijack NOP - org $80AE5C JSR cutscenes_door_transition -org $80FF80 -print pc, " cutscenes bank80 start" + +%startfree(80) cutscenes_door_transition: { @@ -37,8 +36,7 @@ cutscenes_door_transition: JMP ($AE76,x) } -warnpc $80FFB0 ; header -print pc, " cutscenes bank80 end" +%endfree(80) if !FEATURE_PAL @@ -105,8 +103,7 @@ endif JSL cutscenes_kraid_death_camera -org $8BF800 -print pc, " cutscenes start" +%startfree(8B) cutscenes_nintendo_logo_hijack: { @@ -288,8 +285,7 @@ cutscenes_kraid_death_camera: RTL } -print pc, " cutscenes end" -warnpc $8BFA00 ; misc.asm +%endfree(8B) ; Non-flashing palette instruction @@ -416,8 +412,7 @@ hook_tourian_crateria_palette_fx_objects: dw $C685, #crateria_4_palette -org $88F000 -print pc, " cutscenes bank88 start" +%startfree(88) pb_soft_explosion_colors: db $01, $01, $00 @@ -804,7 +799,7 @@ rising_earthquake_start: JMP rising_earthquake_end } -print pc, " cutscenes bank88 end" +%endfree(88) org $888AD1 @@ -1061,8 +1056,7 @@ endif JSL cutscenes_mb_custom_damage -org $A9FBC0 -print pc, " cutscenes MB start" +%startfree(A9) cutscenes_mb_fast_init: { @@ -1619,5 +1613,5 @@ cutscenes_mb_custom_damage: JML $91DF51 } -print pc, " cutscenes MB end" -warnpc $A9FFE0 ; rng.asm +%endfree(A9) + diff --git a/src/damage.asm b/src/damage.asm index d9b1084c..418dc08b 100644 --- a/src/damage.asm +++ b/src/damage.asm @@ -153,8 +153,7 @@ suit_metroid_damage: } -org $90FE00 -print pc, " damage bank90 start" +%startfree(90) damage_overwritten_movement_routine: ; We overwrote an unnecessary JSR, a STZ command, and a jump to the movement routine @@ -383,11 +382,10 @@ else endif PLB : PLP : RTL -print pc, " damage bank90 end" +%endfree(90) -org $93F61D -print pc, " damage bank93 start" +%startfree(93) damage_init_beam: { @@ -515,7 +513,7 @@ dash_charge_3_damage_table: dash_charge_4_damage_table: dw #$0064, #$00FA, #$0096, #$012C, #$00C8, #$01C2, #$00FA, #$01F4, #$01F4, #$01F4, #$01F4, #$01F4, #$0000, #$0000, #$0000, #$0000 -print pc, " damage bank93 end" +%endfree(93) if !FEATURE_PAL @@ -539,8 +537,8 @@ org $A0A62B endif JSR EnemyDamagePowerBomb -org $A0FFD0 -print pc, " damage bankA0 start" + +%startfree(A0) EnemyDamage: { @@ -586,5 +584,5 @@ else JMP $A63C endif -print pc, " damage bankA0 end" +%endfree(A0) diff --git a/src/demos.asm b/src/demos.asm index 0fa011d5..bec91023 100644 --- a/src/demos.asm +++ b/src/demos.asm @@ -722,8 +722,7 @@ endif warnpc $82893D -org $87C964 ; $918ACE ; repoint to any bank with WRAM access -print pc, " demos start" +%startfree(87) ; repoint to any bank with WRAM access DemoInputInstructionLists: ; Order of demos does not matter @@ -2940,5 +2939,5 @@ DemoInput_tasdance: } ; tasdance endif -print pc, " demos end" +%endfree(87) diff --git a/src/fanfare.asm b/src/fanfare.asm index ef4870d6..a5aaedb3 100644 --- a/src/fanfare.asm +++ b/src/fanfare.asm @@ -43,8 +43,7 @@ original_button_tilemap_offset_table: dw #$8436, #$8289, EndFanfareText dw #$8436, #$8289, EndFanfareText -org $859643 -print pc, " fanfare message start" +%startfree(85) ;;; Message text must be listed in order table ../resources/HUDfont.tbl @@ -205,13 +204,11 @@ SpecialButtonTilemapOffsets: dw #$0000 ; 25h: dw #$0000 ; 26h: Reserved -print pc, " fanfare message end" -warnpc $85F800 ; gamemode.asm +%endfree(85) endif -org $85FE00 -print pc, " fanfare start" +%startfree(85) ; List this first since it affects bank $84 where we are trying to minimize change play_or_skip_fanfare: @@ -343,5 +340,5 @@ hook_end_fanfare: PLB : PLP : RTL } -print pc, " fanfare end" +%endfree(85) diff --git a/src/flagmenu.asm b/src/flagmenu.asm index c5879f1c..09bfc463 100644 --- a/src/flagmenu.asm +++ b/src/flagmenu.asm @@ -1,6 +1,5 @@ -org $85A000 -print pc, " flagmenu start" +%startfree(85) ; -------------- ; Equipment menu @@ -2641,6 +2640,5 @@ GameLoopExtras: RTL } -print pc, " flagmenu end" -warnpc $85F800 ; gamemode.asm +%endfree(85) diff --git a/src/freespace.asm b/src/freespace.asm new file mode 100644 index 00000000..4a6f5a5a --- /dev/null +++ b/src/freespace.asm @@ -0,0 +1,394 @@ + +; Original design by cout https://github.com/cout/baby_metroid/blob/main/src/freespace.asm + +; Assign start of freespace per bank +; Only one chunk allowed per bank +; Ommited banks have no freespace +!START_FREESPACE_80 = $80CD8E ; $3232 +!START_FREESPACE_81 = $81EF1A ; $FE6 +!START_FREESPACE_82 = $82F70F ; $8F1 +!START_FREESPACE_83 = $83AD66 ; $529A +!START_FREESPACE_84 = $84EFD9 ; $1027 (PAL) +!START_FREESPACE_85 = $859643 ; $69BF +!START_FREESPACE_86 = $86F4E2 ; $B1E (PAL) +!START_FREESPACE_87 = $87C964 ; $369C +!START_FREESPACE_88 = $88EE32 ; $11CE +!START_FREESPACE_89 = $89AEFD ; $5103 +!START_FREESPACE_8A = $8AE980 ; $1680 +!START_FREESPACE_8B = $8BF760 ; $8A0 +!START_FREESPACE_8C = $8CF79D ; $C17 (PAL) +!START_FREESPACE_8D = $8DFFF1 ; $F +!START_FREESPACE_8E = $8EE600 ; $1A00 +!START_FREESPACE_8F = $8FE99B ; $1665 +!START_FREESPACE_90 = $90F63A ; $9C6 +!START_FREESPACE_91 = $91FFEE ; $12 +!START_FREESPACE_92 = $92EDF4 ; $120C +!START_FREESPACE_93 = $93F61D ; $9E3 +!START_FREESPACE_94 = $94B19F ; $1661 +!START_FREESPACE_99 = $99EE21 ; $11DF +!START_FREESPACE_9A = $9AFC20 ; $3E0 +!START_FREESPACE_9B = $9BCBFB ; $1405 +!START_FREESPACE_9C = $9CFA80 ; $580 +!START_FREESPACE_9D = $9DF780 ; $880 +!START_FREESPACE_9E = $9EF6C0 ; $940 +!START_FREESPACE_9F = $9FF740 ; $8C0 +!START_FREESPACE_A0 = $A0F7F3 ; $80D (PAL) +!START_FREESPACE_A1 = $A1EBD1 ; $142F +!START_FREESPACE_A2 = $A2F4B0 ; $B50 (PAL) +!START_FREESPACE_A3 = $A3F32D ; $CD3 (PAL) +!START_FREESPACE_A4 = $A4F6D9 ; $927 (PAL) +!START_FREESPACE_A5 = $A5F99F ; $661 (PAL) +!START_FREESPACE_A6 = $A6FE93 ; $16D (PAL) +!START_FREESPACE_A7 = $A7FFB6 ; $4A (PAL) +!START_FREESPACE_A8 = $A8F9CD ; $633 (PAL) +!START_FREESPACE_A9 = $A9FBBD ; $443 (PAL) +!START_FREESPACE_AA = $AAF7E3 ; $81D (PAL) +!START_FREESPACE_AB = $ABF800 ; $800 +!START_FREESPACE_AC = $ACEE00 ; $1200 +!START_FREESPACE_AD = $ADF710 ; $8F0 (PAL) +!START_FREESPACE_AE = $AEFD20 ; $2E0 +!START_FREESPACE_AF = $AFEC00 ; $1400 +!START_FREESPACE_B0 = $B0EE00 ; $1200 +!START_FREESPACE_B2 = $B2FF23 ; $DD (PAL) +!START_FREESPACE_B3 = $B3ED87 ; $1279 (PAL) +!START_FREESPACE_B4 = $B4F4B8 ; $B48 +!START_FREESPACE_B5 = $B5F000 ; $1000 +!START_FREESPACE_B6 = $B6F200 ; $E00 +!START_FREESPACE_B7 = $B7FFC0 ; $40 (PAL) +!START_FREESPACE_B8 = $B88000 ; $8000 +!START_FREESPACE_CE = $CEB22E ; $4DD2 +!START_FREESPACE_DE = $DED1C0 ; $2E40 +!START_FREESPACE_DF = $DF8000 ; $8000 +!START_FREESPACE_E0 = $E08000 ; $8000 +!START_FREESPACE_E1 = $E18000 ; $8000 +!START_FREESPACE_E2 = $E28000 ; $8000 +!START_FREESPACE_E3 = $E38000 ; $8000 +!START_FREESPACE_E4 = $E48000 ; $8000 +!START_FREESPACE_E5 = $E58000 ; $8000 +!START_FREESPACE_E6 = $E68000 ; $8000 +!START_FREESPACE_E7 = $E78000 ; $8000 +!START_FREESPACE_E8 = $E88000 ; $8000 +!START_FREESPACE_E9 = $E98000 ; $8000 +!START_FREESPACE_EA = $EA8000 ; $8000 +!START_FREESPACE_EB = $EB8000 ; $8000 +!START_FREESPACE_EC = $EC8000 ; $8000 +!START_FREESPACE_ED = $ED8000 ; $8000 +!START_FREESPACE_EE = $EE8000 ; $8000 +!START_FREESPACE_EF = $EF8000 ; $8000 +!START_FREESPACE_F0 = $F08000 ; $8000 +!START_FREESPACE_F1 = $F18000 ; $8000 +!START_FREESPACE_F2 = $F28000 ; $8000 +!START_FREESPACE_F3 = $F38000 ; $8000 +!START_FREESPACE_F4 = $F48000 ; $8000 +!START_FREESPACE_F5 = $F58000 ; $8000 +!START_FREESPACE_F6 = $F68000 ; $8000 +!START_FREESPACE_F7 = $F78000 ; $8000 +!START_FREESPACE_F8 = $F88000 ; $8000 +!START_FREESPACE_F9 = $F98000 ; $8000 +!START_FREESPACE_FA = $FA8000 ; $8000 +!START_FREESPACE_FB = $FB8000 ; $8000 +!START_FREESPACE_FC = $FC8000 ; $8000 +!START_FREESPACE_FD = $FD8000 ; $8000 +!START_FREESPACE_FE = $FE8000 ; $8000 +!START_FREESPACE_FF = $FF8000 ; $8000 + +; These defines will be reassigned by the endfree macro +; This leaves our starting location untouched for later evaluation +!FREESPACE_80 = !START_FREESPACE_80 +!FREESPACE_81 = !START_FREESPACE_81 +!FREESPACE_82 = !START_FREESPACE_82 +!FREESPACE_83 = !START_FREESPACE_83 +!FREESPACE_84 = !START_FREESPACE_84 +!FREESPACE_85 = !START_FREESPACE_85 +!FREESPACE_86 = !START_FREESPACE_86 +!FREESPACE_87 = !START_FREESPACE_87 +!FREESPACE_88 = !START_FREESPACE_88 +!FREESPACE_89 = !START_FREESPACE_89 +!FREESPACE_8A = !START_FREESPACE_8A +!FREESPACE_8B = !START_FREESPACE_8B +!FREESPACE_8C = !START_FREESPACE_8C +!FREESPACE_8D = !START_FREESPACE_8D +!FREESPACE_8E = !START_FREESPACE_8E +!FREESPACE_8F = !START_FREESPACE_8F +!FREESPACE_90 = !START_FREESPACE_90 +!FREESPACE_91 = !START_FREESPACE_91 +!FREESPACE_92 = !START_FREESPACE_92 +!FREESPACE_93 = !START_FREESPACE_93 +!FREESPACE_94 = !START_FREESPACE_94 +!FREESPACE_99 = !START_FREESPACE_99 +!FREESPACE_9A = !START_FREESPACE_9A +!FREESPACE_9B = !START_FREESPACE_9B +!FREESPACE_9C = !START_FREESPACE_9C +!FREESPACE_9D = !START_FREESPACE_9D +!FREESPACE_9E = !START_FREESPACE_9E +!FREESPACE_9F = !START_FREESPACE_9F +!FREESPACE_A0 = !START_FREESPACE_A0 +!FREESPACE_A1 = !START_FREESPACE_A1 +!FREESPACE_A2 = !START_FREESPACE_A2 +!FREESPACE_A3 = !START_FREESPACE_A3 +!FREESPACE_A4 = !START_FREESPACE_A4 +!FREESPACE_A5 = !START_FREESPACE_A5 +!FREESPACE_A6 = !START_FREESPACE_A6 +!FREESPACE_A7 = !START_FREESPACE_A7 +!FREESPACE_A8 = !START_FREESPACE_A8 +!FREESPACE_A9 = !START_FREESPACE_A9 +!FREESPACE_AA = !START_FREESPACE_AA +!FREESPACE_AB = !START_FREESPACE_AB +!FREESPACE_AC = !START_FREESPACE_AC +!FREESPACE_AD = !START_FREESPACE_AD +!FREESPACE_AE = !START_FREESPACE_AE +!FREESPACE_AF = !START_FREESPACE_AF +!FREESPACE_B0 = !START_FREESPACE_B0 +!FREESPACE_B2 = !START_FREESPACE_B2 +!FREESPACE_B3 = !START_FREESPACE_B3 +!FREESPACE_B4 = !START_FREESPACE_B4 +!FREESPACE_B5 = !START_FREESPACE_B5 +!FREESPACE_B6 = !START_FREESPACE_B6 +!FREESPACE_B7 = !START_FREESPACE_B7 +!FREESPACE_B8 = !START_FREESPACE_B8 +!FREESPACE_CE = !START_FREESPACE_CE +!FREESPACE_DE = !START_FREESPACE_DE +!FREESPACE_DF = !START_FREESPACE_DF +!FREESPACE_E0 = !START_FREESPACE_E0 +!FREESPACE_E1 = !START_FREESPACE_E1 +!FREESPACE_E2 = !START_FREESPACE_E2 +!FREESPACE_E3 = !START_FREESPACE_E3 +!FREESPACE_E4 = !START_FREESPACE_E4 +!FREESPACE_E5 = !START_FREESPACE_E5 +!FREESPACE_E6 = !START_FREESPACE_E6 +!FREESPACE_E7 = !START_FREESPACE_E7 +!FREESPACE_E8 = !START_FREESPACE_E8 +!FREESPACE_E9 = !START_FREESPACE_E9 +!FREESPACE_EA = !START_FREESPACE_EA +!FREESPACE_EB = !START_FREESPACE_EB +!FREESPACE_EC = !START_FREESPACE_EC +!FREESPACE_ED = !START_FREESPACE_ED +!FREESPACE_EE = !START_FREESPACE_EE +!FREESPACE_EF = !START_FREESPACE_EF +!FREESPACE_F0 = !START_FREESPACE_F0 +!FREESPACE_F1 = !START_FREESPACE_F1 +!FREESPACE_F2 = !START_FREESPACE_F2 +!FREESPACE_F3 = !START_FREESPACE_F3 +!FREESPACE_F4 = !START_FREESPACE_F4 +!FREESPACE_F5 = !START_FREESPACE_F5 +!FREESPACE_F6 = !START_FREESPACE_F6 +!FREESPACE_F7 = !START_FREESPACE_F7 +!FREESPACE_F8 = !START_FREESPACE_F8 +!FREESPACE_F9 = !START_FREESPACE_F9 +!FREESPACE_FA = !START_FREESPACE_FA +!FREESPACE_FB = !START_FREESPACE_FB +!FREESPACE_FC = !START_FREESPACE_FC +!FREESPACE_FD = !START_FREESPACE_FD +!FREESPACE_FE = !START_FREESPACE_FE +!FREESPACE_FF = !START_FREESPACE_FF + +; Assign end of freespace per bank +; Set for freespace that doesn't end at the bank border +!END_FREESPACE_80 = $80FFC0 ; Game header +!END_FREESPACE_81 = $81FF00 ; Thanks Genji! +!END_FREESPACE_82 = $820000+$10000 +!END_FREESPACE_83 = $830000+$10000 +!END_FREESPACE_84 = $840000+$10000 +!END_FREESPACE_85 = $850000+$10000 +!END_FREESPACE_86 = $860000+$10000 +!END_FREESPACE_87 = $870000+$10000 +!END_FREESPACE_88 = $880000+$10000 +!END_FREESPACE_89 = $890000+$10000 +!END_FREESPACE_8A = $8A0000+$10000 +!END_FREESPACE_8B = $8B0000+$10000 +!END_FREESPACE_8C = $8C0000+$10000 +!END_FREESPACE_8D = $8D0000+$10000 +!END_FREESPACE_8E = $8E0000+$10000 +!END_FREESPACE_8F = $8F0000+$10000 +!END_FREESPACE_90 = $900000+$10000 +!END_FREESPACE_91 = $910000+$10000 +!END_FREESPACE_92 = $920000+$10000 +!END_FREESPACE_93 = $930000+$10000 +!END_FREESPACE_94 = $94C800 ; Ship tiles +!END_FREESPACE_99 = $990000+$10000 +!END_FREESPACE_9A = $9A0000+$10000 +!END_FREESPACE_9B = $9BE000 ; Samus tiles +!END_FREESPACE_9C = $9C0000+$10000 +!END_FREESPACE_9D = $9D0000+$10000 +!END_FREESPACE_9E = $9E0000+$10000 +!END_FREESPACE_9F = $9F0000+$10000 +!END_FREESPACE_A0 = $A00000+$10000 +!END_FREESPACE_A1 = $A10000+$10000 +!END_FREESPACE_A2 = $A20000+$10000 +!END_FREESPACE_A3 = $A30000+$10000 +!END_FREESPACE_A4 = $A40000+$10000 +!END_FREESPACE_A5 = $A50000+$10000 +!END_FREESPACE_A6 = $A60000+$10000 +!END_FREESPACE_A7 = $A70000+$10000 +!END_FREESPACE_A8 = $A80000+$10000 +!END_FREESPACE_A9 = $A90000+$10000 +!END_FREESPACE_AA = $AA0000+$10000 +!END_FREESPACE_AB = $AB0000+$10000 +!END_FREESPACE_AC = $AC0000+$10000 +!END_FREESPACE_AD = $AD0000+$10000 +!END_FREESPACE_AE = $AE0000+$10000 +!END_FREESPACE_AF = $AF0000+$10000 +!END_FREESPACE_B0 = $B00000+$10000 +!END_FREESPACE_B2 = $B20000+$10000 +!END_FREESPACE_B3 = $B30000+$10000 +!END_FREESPACE_B4 = $B40000+$10000 +!END_FREESPACE_B5 = $B50000+$10000 +!END_FREESPACE_B6 = $B60000+$10000 +!END_FREESPACE_B7 = $B70000+$10000 +!END_FREESPACE_B8 = $B80000+$10000 +!END_FREESPACE_CE = $CE0000+$10000 +!END_FREESPACE_DE = $DE0000+$10000 +!END_FREESPACE_DF = $DF0000+$10000 +!END_FREESPACE_E0 = $E00000+$10000 +!END_FREESPACE_E1 = $E10000+$10000 +!END_FREESPACE_E2 = $E20000+$10000 +!END_FREESPACE_E3 = $E30000+$10000 +!END_FREESPACE_E4 = $E40000+$10000 +!END_FREESPACE_E5 = $E5F000 ; clearenemies.asm +!END_FREESPACE_E6 = $E68000 ; tilegraphics.asm +!END_FREESPACE_E7 = $E78000 ; tilegraphics.asm +!END_FREESPACE_E8 = $E88000 ; tilegraphics.asm + presets.asm +!END_FREESPACE_E9 = $E98000 ; presets.asm +!END_FREESPACE_EA = $EA8000 ; presets.asm +!END_FREESPACE_EB = $EB8000 ; presets.asm +!END_FREESPACE_EC = $EC8000 ; presets.asm +!END_FREESPACE_ED = $ED8000 ; presets.asm +!END_FREESPACE_EE = $EE8000 ; presets.asm +!END_FREESPACE_EF = $EF0000+$10000 +!END_FREESPACE_F0 = $F00000+$10000 +!END_FREESPACE_F1 = $F10000+$10000 +!END_FREESPACE_F2 = $F20000+$10000 +!END_FREESPACE_F3 = $F30000+$10000 +!END_FREESPACE_F4 = $F4D800 ; tilegraphics.asm +!END_FREESPACE_F5 = $F58000 ; tilegraphics.asm +!END_FREESPACE_F6 = $F68000 ; tilegraphics.asm +!END_FREESPACE_F7 = $F78000 ; tilegraphics.asm +!END_FREESPACE_F8 = $F88000 ; tilegraphics.asm +!END_FREESPACE_F9 = $F98000 ; tilegraphics.asm +!END_FREESPACE_FA = $FA8000 ; tilegraphics.asm +!END_FREESPACE_FB = $FB8000 ; tilegraphics.asm +!END_FREESPACE_FC = $FC8000 ; tilegraphics.asm +!END_FREESPACE_FD = $FD8000 ; tilegraphics.asm +!END_FREESPACE_FE = $FE8000 ; tilegraphics.asm +!END_FREESPACE_FF = $1000000 + +; Allows us to setup warnings for mishandled macros +!FREESPACE_BANK = -1 + +macro startfree(bank) +; Allows us to assign freespace without gaps from different files +assert !FREESPACE_BANK < 0, "You forgot to close out bank !FREESPACE_BANK" +org !FREESPACE_ +!FREESPACE_BANK = $ +endmacro + +macro endfree(bank) +; Used to close out an org and track the next free byte +assert !FREESPACE_BANK >= 0, "No matching startfree()" +assert $ = !FREESPACE_BANK, "You closed out the wrong bank. (Check bank !FREESPACE_BANK)" +!FREESPACE_COUNTER_ ?= 0 +FreespaceLabel_!FREESPACE_COUNTER_: +!FREESPACE_ := FreespaceLabel_!FREESPACE_COUNTER_ +!FREESPACE_COUNTER_ #= !FREESPACE_COUNTER_+1 +!FREESPACE_BANK = -1 +warnpc !END_FREESPACE_ +endmacro + +macro printfreespacebank(bank) +; Print some numbers about our freespace usage +org !FREESPACE_ +!FREESPACE_COUNTER_ ?= 0 +if !FREESPACE_COUNTER_ +print "Bank $ ended at $", pc, " with $", hex(!END_FREESPACE_-!FREESPACE_), " bytes remaining" +endif +endmacro + +macro printfreespace() +; Hide this long list in a single macro +%printfreespacebank(80) +%printfreespacebank(81) +%printfreespacebank(82) +%printfreespacebank(83) +%printfreespacebank(84) +%printfreespacebank(85) +%printfreespacebank(86) +%printfreespacebank(87) +%printfreespacebank(88) +%printfreespacebank(89) +%printfreespacebank(8A) +%printfreespacebank(8B) +%printfreespacebank(8C) +%printfreespacebank(8D) +%printfreespacebank(8E) +%printfreespacebank(8F) +%printfreespacebank(90) +%printfreespacebank(91) +%printfreespacebank(92) +%printfreespacebank(93) +%printfreespacebank(99) +%printfreespacebank(9A) +%printfreespacebank(9C) +%printfreespacebank(9D) +%printfreespacebank(9E) +%printfreespacebank(9F) +%printfreespacebank(A0) +%printfreespacebank(A1) +%printfreespacebank(A2) +%printfreespacebank(A3) +%printfreespacebank(A4) +%printfreespacebank(A5) +%printfreespacebank(A6) +%printfreespacebank(A7) +%printfreespacebank(A8) +%printfreespacebank(A9) +%printfreespacebank(AA) +%printfreespacebank(AB) +%printfreespacebank(AC) +%printfreespacebank(AD) +%printfreespacebank(AE) +%printfreespacebank(AF) +%printfreespacebank(B0) +%printfreespacebank(B2) +%printfreespacebank(B3) +%printfreespacebank(B4) +%printfreespacebank(B5) +%printfreespacebank(B6) +%printfreespacebank(B7) +%printfreespacebank(B8) +%printfreespacebank(CE) +%printfreespacebank(DE) +%printfreespacebank(DF) +%printfreespacebank(E0) +%printfreespacebank(E1) +%printfreespacebank(E2) +%printfreespacebank(E3) +%printfreespacebank(E4) +%printfreespacebank(E5) +%printfreespacebank(E6) +%printfreespacebank(E7) +%printfreespacebank(E8) +%printfreespacebank(E9) +%printfreespacebank(EA) +%printfreespacebank(EB) +%printfreespacebank(EC) +%printfreespacebank(ED) +%printfreespacebank(EE) +%printfreespacebank(EF) +%printfreespacebank(F0) +%printfreespacebank(F1) +%printfreespacebank(F2) +%printfreespacebank(F3) +%printfreespacebank(F4) +%printfreespacebank(F5) +%printfreespacebank(F6) +%printfreespacebank(F7) +%printfreespacebank(F8) +%printfreespacebank(F9) +%printfreespacebank(FA) +%printfreespacebank(FB) +%printfreespacebank(FC) +%printfreespacebank(FD) +%printfreespacebank(FE) +%printfreespacebank(FF) +endmacro + diff --git a/src/gamemenu.asm b/src/gamemenu.asm index 5f9a240a..6044490a 100644 --- a/src/gamemenu.asm +++ b/src/gamemenu.asm @@ -1,6 +1,5 @@ -org $B3F000 -print pc, " gamemenu start" +%startfree(B3) ; ---------- ; Game menu @@ -551,5 +550,5 @@ ControllerLayoutTable: dw !CTRL_Y, !CTRL_B, !CTRL_A, !CTRL_SELECT, !CTRL_X, !CTRL_L, !CTRL_R ; MMX Style (D4) dw !CTRL_X, !CTRL_B, !CTRL_Y, !CTRL_SELECT, !CTRL_A, !CTRL_L, !CTRL_R ; SMW Style (D5) -print pc, " gamemenu end" +%endfree(B3) diff --git a/src/gamemode.asm b/src/gamemode.asm index 810ffc93..b2333848 100644 --- a/src/gamemode.asm +++ b/src/gamemode.asm @@ -23,8 +23,7 @@ org $82E526 endif -org $85F800 -print pc, " gamemode start" +%startfree(85) gamemode_start: { @@ -459,5 +458,5 @@ gamemode_door_transtion_load_sprites: } endif -print pc, " gamemode end" -warnpc $85FD00 ; menu.asm +%endfree(85) + diff --git a/src/infohud.asm b/src/infohud.asm index 3c87c123..484f6fdd 100644 --- a/src/infohud.asm +++ b/src/infohud.asm @@ -206,8 +206,7 @@ endif ; !FEATURE_VANILLAHUD ; Main bank stuff -org $F08000 -print pc, " infohud start" +%startfree(F0) ; List this first since it affects bank $84 where we are trying to minimize change ih_get_item_code: @@ -1819,13 +1818,11 @@ ih_adjust_realtime: overwrite_HUD_numbers: RTL -print pc, " infohud end" -warnpc $F0E000 ; spritefeat.asm +%endfree(F0) ; Stuff that needs to be placed in bank 80 -org $80FD00 -print pc, " infohud bank80 start" +%startfree(80) ; Used by room layout ih_set_picky_chozo_event_and_enemy_speed: @@ -1943,6 +1940,5 @@ HexToNumberGFX2: dw #$0C09, #$0C00, #$0C01, #$0C02, #$0C03, #$0C04, #$0C05, #$0C06, #$0C07, #$0C08 dw #$0C09, #$0C00, #$0C01, #$0C02, #$0C03, #$0C04, #$0C05, #$0C06, #$0C07, #$0C08 -print pc, " infohud bank80 end" -warnpc $80FF80 ; cutscenes.asm door transition code +%endfree(80) diff --git a/src/init.asm b/src/init.asm index 0dfd9aa4..e6ce5de9 100644 --- a/src/init.asm +++ b/src/init.asm @@ -28,8 +28,7 @@ org $80856E JML init_post_boot -org $81F000 -print pc, " init start" +%startfree(81) init_code: { @@ -278,5 +277,4 @@ init_post_boot: JML $82893D ; hijacked code: start main game loop } -print pc, " init end" -warnpc $81FF00 ; Special thanks +%endfree(81) diff --git a/src/layout.asm b/src/layout.asm index 9a13ae12..965a41b4 100644 --- a/src/layout.asm +++ b/src/layout.asm @@ -91,8 +91,7 @@ layout_create_plms_execute_asm: warnpc $82EB9F -org $82F800 -print pc, " layout bank82 start" +%startfree(82) layout_create_plms_itempickups_end: RTS @@ -330,8 +329,7 @@ hijack_door_closing_plm: JMP $E8EF } -print pc, " layout bank82 end" -warnpc $82FA80 ; presets.asm +%endfree(82) ; Crateria Kihunters bottom door @@ -453,8 +451,7 @@ hook_layout_asm_deadscientist_door0: dw #layout_asm_magnetstairs -org $83C000 -print pc, " layout bank83 start" +%startfree(83) ; Custom door definitions ; Includes Samus X and Y and an asm pointer @@ -1276,8 +1273,7 @@ layout_asm_waterway_external: RTL } -print pc, " layout bank83 end" -warnpc $83F000 ; presets +%endfree(83) ; Allow debug save stations to be used @@ -1414,8 +1410,7 @@ layout_morph_ball_hidden_plm_equipment: -org $84F000 -print pc, " layout bank84 start" +%startfree(84) layout_save_station_mini_instructions: { @@ -1472,7 +1467,7 @@ layout_bomb_grey_door_check_fast: RTS } -print pc, " layout bank84 end" +%endfree(84) ; Sanity check Varia/Gravity pickups @@ -2005,8 +2000,7 @@ layout_execute_setup_asm_end: warnpc $8FE8A3 -org $8FEA00 -print pc, " layout start" +%startfree(8F) ; East Ocean library background table (migrated to make more room for West Ocean) layout_east_ocean_library_background_table: @@ -3544,11 +3538,10 @@ layout_asm_pants_to_pants_scrolls: BRA layout_asm_to_pants_scrolls } -print pc, " layout end" +%endfree(8F) -org $A1EBD1 -print pc, " layout bankA1 start" +%startfree(A1) layout_asm_plasma_dash_enemies: dw $F693, #$0100, #$0080, #$0000, #$2000, #$0004, #$8001, #$0020 @@ -3563,11 +3556,10 @@ layout_asm_statues_oob_viewer_enemies: dw $D73F, #$0080, #$01B0, #$0000, #$2C00, #$0000, #$0000, #$0240 db #$FF, #$FF, #$00 -print pc, " layout bankA1 end" +%endfree(A1) -org $B4F4B8 -print pc, " layout bankB4 start" +%startfree(B4) layout_asm_plasma_dash_enemy_set: dw $F693, #$0001, $F393, #$0002 @@ -3576,5 +3568,5 @@ layout_asm_plasma_dash_enemy_set: layout_asm_statues_oob_viewer_enemy_set: db #$FF, #$FF, #$00 -print pc, " layout bankB4 end" +%endfree(B4) diff --git a/src/layoutmenu.asm b/src/layoutmenu.asm index f29015b9..d5efedb6 100644 --- a/src/layoutmenu.asm +++ b/src/layoutmenu.asm @@ -1,7 +1,6 @@ pushpc -org $E48000 -print pc, " layoutmenu start" +%startfree(E4) ; ------------------------- ; Room Layout menu @@ -4261,6 +4260,5 @@ layout_updown_downdoor: dw #$0000 -print pc, " layoutmenu end" -warnpc $E4E000 ; customizemenu.asm +%endfree(E4) pullpc diff --git a/src/main.asm b/src/main.asm index d3bce452..3b6ffb35 100644 --- a/src/main.asm +++ b/src/main.asm @@ -60,6 +60,7 @@ if !FEATURE_SD2SNES !FEATURE_TINYSTATES = 0 incsrc macros.asm incsrc defines.asm + incsrc freespace.asm incsrc save.asm else if !FEATURE_TINYSTATES @@ -67,11 +68,13 @@ if !FEATURE_TINYSTATES !FEATURE_SD2SNES = 1 ; Set this to enable savestate features incsrc macros.asm incsrc defines.asm + incsrc freespace.asm incsrc tinystates.asm else print "SD2SNES AND TINYSTATES DISABLED" incsrc macros.asm incsrc defines.asm + incsrc freespace.asm endif endif @@ -106,4 +109,6 @@ endif ; Make sure the ROM expands to 4MB org $FFFFFF : db $FF +%printfreespace() print "Assembly complete. Total bytes written: ", bytes + diff --git a/src/mainmenu.asm b/src/mainmenu.asm index 641ad231..9bc6eddf 100644 --- a/src/mainmenu.asm +++ b/src/mainmenu.asm @@ -1,6 +1,5 @@ -org $B88000 -print pc, " mainmenu start" +%startfree(B8) ; ------------ ; Menu Helpers @@ -2514,5 +2513,5 @@ endif RTL } -print pc, " mainmenu end" +%endfree(B8) diff --git a/src/menu.asm b/src/menu.asm index ac837612..b1ecd93e 100644 --- a/src/menu.asm +++ b/src/menu.asm @@ -14,8 +14,7 @@ incsrc mainmenu.asm ; Menu logic ; ---------- -org $85FD00 -print pc, " menu bank85 start" +%startfree(85) initialize_ppu_long: PHP : %a16() @@ -39,12 +38,10 @@ maybe_trigger_pause_long: JSR $80FA RTL -print pc, " menu bank85 end" -warnpc $85FE00 ; fanfare.asm +%endfree(85) -org $89B000 -print pc, " menu start" +%startfree(89) cm_start: { @@ -3773,7 +3770,7 @@ incbin ../resources/cm_gfx.bin HexMenuGFXTable: dw $2C70, $2C71, $2C72, $2C73, $2C74, $2C75, $2C76, $2C77, $2C78, $2C79, $2C50, $2C51, $2C52, $2C53, $2C54, $2C55 -print pc, " menu end" +%endfree(89) ; ------------- @@ -3783,11 +3780,10 @@ print pc, " menu end" incsrc crash.asm -org $B5F000 -print pc, " menu bankB5 start" +%startfree(B5) cm_hud_table2: incbin ../resources/cm_gfx2.bin -print pc, " menu bankB5 end" +%endfree(B5) diff --git a/src/minimap.asm b/src/minimap.asm index 120d57ee..df12c565 100644 --- a/src/minimap.asm +++ b/src/minimap.asm @@ -11,15 +11,14 @@ incbin ../resources/hudgfx.bin ; Place minimap graphics in bank DF -org $DFD500 -print pc, " minimap bankDF start" +%startfree(DF) mapgfx_bin: incbin ../resources/mapgfx.bin ; Next block needs to be all zeros to clear a tilemap fillbyte $00 fill 4096 -print pc, " minimap bankDF end" +%endfree(DF) ; The default HUD minimap should be cleared @@ -113,8 +112,7 @@ org $82E488 ; write tiles to VRAM ; Placed in bank 82 so that the jumps work -org $82F70F -print pc, " minimap bank82 start" +%startfree(82) mm_write_hud_tiles_during_door: { @@ -133,8 +131,7 @@ mm_write_hud_tiles_during_door: JMP $E492 ; resume logic } -print pc, " minimap bank82 end" -warnpc $82F800 ; layout.asm +%endfree(82) org $90A7E8 ; optimize following code by exactly six bytes @@ -186,8 +183,7 @@ org $90A97E ; Placed in bank 90 so that the jumps work -org $90F640 -print pc, " minimap bank90 start" +%startfree(90) mm_initialize_minimap: { @@ -267,7 +263,6 @@ mm_write_and_clear_hud_tiles: RTL } -print pc, " minimap bank90 end" -warnpc $90F980 ; PJBoy respin patch +%endfree(90) endif ; !FEATURE_VANILLAHUD diff --git a/src/misc.asm b/src/misc.asm index b9bc682c..255287ad 100644 --- a/src/misc.asm +++ b/src/misc.asm @@ -191,8 +191,7 @@ org $869D59 JSR move_kraid_rocks_horizontally -org $86F500 -print pc, " misc bank86 start" +%startfree(86) ; Copied from $8688B6 but optimized for Kraid rocks using a hard-coded radius ; This is intended to offset extra practice rom lag in Kraid's room @@ -238,11 +237,10 @@ IconCancelMenu: RTL } -print pc, " misc bank86 end" +%endfree(86) -org $90FA00 -print pc, " misc bank90 start" +%startfree(90) hook_set_music_track: { @@ -616,12 +614,10 @@ set_fade_in_door_function: JML $908E0F } -print pc, " misc bank90 end" -warnpc $90FE00 ; damage.asm +%endfree(90) -org $8BFA00 -print pc, " misc bank8B start" +%startfree(8B) fade_in_skip_draw: { @@ -834,4 +830,5 @@ decompression_increment_bank: RTS } -print pc, " misc bank8B end" +%endfree(8B) + diff --git a/src/presets.asm b/src/presets.asm index 85c3da61..80798975 100644 --- a/src/presets.asm +++ b/src/presets.asm @@ -1,6 +1,5 @@ -org $82FA80 -print pc, " presets bank82 start" +%startfree(82) preset_load: { @@ -233,12 +232,10 @@ EnsureSamusIsDrawn_long: RTL } -print pc, " presets bank82 end" -warnpc $82FE00 ; tinystates.asm +%endfree(82) -org $83F000 -print pc, " presets bank83 start" +%startfree(83) clear_all_enemies: { @@ -923,11 +920,10 @@ endif RTL } -print pc, " presets bank83 end" +%endfree(83) -org $80F000 -print pc, " presets bank80 start" +%startfree(80) preset_layer_bg_offsets: { @@ -1006,8 +1002,7 @@ add_grapple_and_xray_to_hud: JMP resume_infohud_icon_initialization } -print pc, " presets bank80 end" -warnpc $80F500 ; save.asm or tinystates.asm +%endfree(80) ; $80:9AB1: Add x-ray and grapple HUD items if necessary @@ -1054,11 +1049,10 @@ incsrc presets/nghyper_data.asm ; E88h bytes incsrc presets/ngplasma_data.asm ; EA4h bytes incsrc presets/suitless_data.asm ; 3DF0h bytes print pc, " preset data crossbank end" -warnpc $F08000 ; infohud.asm +warnpc $F08000 check bankcross on -org $F18000 ; 7703h bytes used / 8FDh bytes free -print pc, " preset menu bankF1 start" +%startfree(F1) incsrc presets/kpdr21_menu.asm ; 11A3h bytes incsrc presets/kpdr22_menu.asm ; 11C1h bytes incsrc presets/kpdr23_menu.asm ; 11E7h bytes @@ -1066,10 +1060,9 @@ incsrc presets/kpdr25_menu.asm ; 10D8h bytes incsrc presets/prkd19_menu.asm ; 10B3h bytes incsrc presets/prkd20_menu.asm ; 10A9h bytes incsrc presets/pkrd_menu.asm ; F79h bytes -print pc, " preset menu bankF1 end" +%endfree(F1) -org $F28000 ; 7356h bytes used / CAAh bytes free -print pc, " preset menu bankF2 start" +%startfree(F2) incsrc presets/14ice_menu.asm ; 7C6h bytes incsrc presets/14speed_menu.asm ; 7EBh bytes incsrc presets/hundo_menu.asm ; 1220h bytes @@ -1077,10 +1070,9 @@ incsrc presets/100early_menu.asm ; 1320h bytes incsrc presets/100map_menu.asm ; 1670h bytes incsrc presets/gtclassic_menu.asm ; D7Ch bytes incsrc presets/gtmax_menu.asm ; 1378h bytes -print pc, " preset menu bankF2 end" +%endfree(F2) -org $F38000 ; 72B8h bytes used / D48h bytes free -print pc, " preset menu bankF3 start" +%startfree(F3) incsrc presets/rbo_menu.asm ; D97h bytes incsrc presets/nintendopower_menu.asm ; 70Ch bytes incsrc presets/allbosskpdr_menu.asm ; 942h bytes @@ -1089,5 +1081,5 @@ incsrc presets/allbossprkd_menu.asm ; 9BEh bytes incsrc presets/ngplasma_menu.asm ; 85Ch bytes incsrc presets/nghyper_menu.asm ; 864h bytes incsrc presets/suitless_menu.asm ; 1B43h bytes -print pc, " preset menu bankF3 end" +%endfree(F3) diff --git a/src/rng.asm b/src/rng.asm index 7ac0b0da..65aded94 100644 --- a/src/rng.asm +++ b/src/rng.asm @@ -232,8 +232,7 @@ endif ; Hooks ; ----- -org $83AE00 -print pc, " rng start" +%startfree(83) MenuRNG: ; Generates new random number @@ -595,12 +594,10 @@ hook_botwoon_spit: JML $808111 } -print pc, " rng end" -warnpc $83B000 ; custompresets.asm +%endfree(83) -org $A4F700 -print pc, " crocomire rng start" +%startfree(A4) hook_crocomire_rng: { @@ -633,11 +630,10 @@ hook_crocomire_damage: RTS } -print pc, " crocomire rng end" +%endfree(A4) -org $A5FA00 -print pc, " draygon rng start" +%startfree(A5) hook_draygon_rng_left: { @@ -680,7 +676,7 @@ endif RTS } -print pc, " draygon rng end" +%endfree(A5) ; This is actually for preset support instead of RNG @@ -732,8 +728,7 @@ endif LDA $7ED82E -org $A6FEC0 -print pc, " ridley rng start" +%startfree(A6) ridley_init_hook: { @@ -817,11 +812,10 @@ else dw $80ED, $F598 endif -print pc, " ridley rng end" +%endfree(A6) -org $A7FFB6 -print pc, " kraid rng start" +%startfree(A7) phantoon_damage_palette: { @@ -890,11 +884,10 @@ endif RTS } -print pc, " kraid rng end" +%endfree(A7) -org $A9FFE0 -print pc, " baby rng start" +%startfree(A9) hook_baby_skip_rng: { @@ -919,4 +912,5 @@ else endif } -print pc, " baby rng end" +%endfree(A9) + diff --git a/src/roomnames.asm b/src/roomnames.asm index f2e5b5cc..e98fd649 100644 --- a/src/roomnames.asm +++ b/src/roomnames.asm @@ -4,8 +4,7 @@ ; (autogenerated) ; --------------- -org $E58000 -print pc, " roomnames start" +%startfree(E5) RoomNameTextTable: ROOM: @@ -1319,5 +1318,5 @@ org $E5E82C db $28, "Debug Room", $FF warnpc $E5E844 -print pc, " roomnames end" +%endfree(E5) diff --git a/src/save.asm b/src/save.asm index 374e007f..1ce28438 100644 --- a/src/save.asm +++ b/src/save.asm @@ -38,8 +38,7 @@ macro sram_to_vram(vram_addr, size, sram_addr) endmacro -org $80F500 -print pc, " save start" +%startfree(80) ; These can be modified to do game-specific things before and after saving and loading ; Both A and X/Y are 16-bit here @@ -415,5 +414,5 @@ vm: JMP ($0002,X) } -print pc, " save end" -warnpc $80FD00 ; infohud.asm +%endfree(80) + diff --git a/src/spritefeat.asm b/src/spritefeat.asm index 87214272..bbff2bf4 100644 --- a/src/spritefeat.asm +++ b/src/spritefeat.asm @@ -20,8 +20,7 @@ hook_standard_sprite_tiles: db $FF, $FF, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 -org $F0E000 -print pc, " spritefeat start" +%startfree(F0) ; This runs every frame before any other sprites are drawn, this is needed so we can get priority over everything else update_sprite_features: @@ -965,4 +964,4 @@ DrawMBHitbox: sprite_tiles: incbin "../resources/spritegfx.bin":0-600 -print pc, " spritefeat end" +%endfree(F0) diff --git a/src/spriteprio.asm b/src/spriteprio.asm index a7f914e8..c43a0c2a 100644 --- a/src/spriteprio.asm +++ b/src/spriteprio.asm @@ -8,8 +8,7 @@ org $908643 JSL oam_add_samus_sprite_with_prio -org $81EF20 -print pc, " spriteprio start" +%startfree(81) ; This is a copy of the code that adds samus spritemap to the OAM buffer ; ($8189AE) with a modification that it can adjust the sprite propery flags @@ -80,5 +79,5 @@ oam_add_samus_sprite_with_prio: RTL } -print pc, " spriteprio end" -warnpc $81F000 ; init.asm +%endfree(81) + diff --git a/src/tilegraphics.asm b/src/tilegraphics.asm index 33830e0d..925b8531 100644 --- a/src/tilegraphics.asm +++ b/src/tilegraphics.asm @@ -54,8 +54,7 @@ warnpc $E8E000 ; presets.asm check bankcross on -org $F48000 -print pc, " tilegraphics start" +%startfree(F4) ; 12K CRE tile graphics tiles_cre: @@ -602,7 +601,7 @@ preset_vram_landing_site_params: preset_vram_landing_site_floor_params: db $D1, $08, $C9, $08 ; Y = 4.0+ -print pc, " tilegraphics end" +%endfree(F4) warnpc $F4D800 diff --git a/src/tinystates.asm b/src/tinystates.asm index 67445d4d..34dd0ee4 100644 --- a/src/tinystates.asm +++ b/src/tinystates.asm @@ -38,8 +38,7 @@ macro sram_to_vram(vram_addr, size, sram_addr) endmacro -org $80F600 -print pc, " tinysave start" +%startfree(80) ; These can be modified to do game-specific things before and after saving and loading ; Both A and X/Y are 16-bit here @@ -512,12 +511,10 @@ tinystates_load_paused: RTL } -print pc, " tinysave end" -warnpc $80FD00 ; infohud.asm +%endfree(80) -org $82FE00 -print pc, " tinysave bank82 start" +%startfree(82) tinystates_preload_bg_data: JSR $82E2 ; Re-load BG3 tiles @@ -616,4 +613,5 @@ else endif } -print pc, " tinysave bank82 end" +%endfree(82) + From 78147d55084e0ed0feb7d358a851f7a30b903061 Mon Sep 17 00:00:00 2001 From: idle Date: Sun, 2 Feb 2025 21:50:25 -0600 Subject: [PATCH 05/23] Update NTSC-to-PAL resources based on disassembly --- .../ntsc_to_pal_abridged_pseudo_patch.txt | 1105 +++++-- resources/ntsc_to_pal_raw_pseudo_patch.txt | 2678 ++++++++++++++++- 2 files changed, 3422 insertions(+), 361 deletions(-) diff --git a/resources/ntsc_to_pal_abridged_pseudo_patch.txt b/resources/ntsc_to_pal_abridged_pseudo_patch.txt index 636cf1a7..012f89c5 100644 --- a/resources/ntsc_to_pal_abridged_pseudo_patch.txt +++ b/resources/ntsc_to_pal_abridged_pseudo_patch.txt @@ -25,7 +25,7 @@ org $809416 ; Escape timer X position math org $809E5B - LDA #$01C0 ; previously LDA #$00E0 + LDA #$010C ; previously LDA #$00E0 ; Escape timer Y position math org $809E6E @@ -45,7 +45,7 @@ org $809EEC ; Tilemap for failed SRAM mapping check org $80BC37 dw ... -org $80BC47 +org $80C437 ; Freespace org $80CD8E @@ -110,7 +110,7 @@ org $82EF4B BNE $2F ; previously BNE $34 ;======== Remove 5 bytes ======== -; Check and branch if Japanese language +; Check and branch if Japanese/French language org $82EF4D ; previously LDA $09E2 ; previously BNE $11 @@ -120,7 +120,7 @@ org $82EF7A <-- org $82EF7F BRA $3C ; previously BRA $41 ;======== Remove 5 bytes ======== -; Check and branch if Japanese language +; Check and branch if Japanese/French language org $82EF7C <-- org $82EF81 ; previously LDA $09E2 ; previously BNE $11 @@ -206,7 +206,7 @@ org $83A0BA db #$0A ; previously db #$10 ; Room FX, Mother Brain 2, Y velocity and timer -org $83A0BA +org $83A0CA dw #$0036 ; previously dw #$0030 db #$0A ; previously db #$10 @@ -286,10 +286,17 @@ org $84D4E8 dw $98D1 ; org $84D4EE <-- org $84D4E8 -; PLM, Maridia Tube break (timing differences) -org $84D4F8 <-- org $84D4F2 - dw ... -org $84D527 <-- org $84D521 +; PLM, Maridia Tube break instruction list timing difference +org $84D4FE <-- org $84D4F8 + dw #$0028 ; previously dw #$0030 + +; PLM, Maridia Tube break instruction list sound routine +org $84D50A <-- org $84D504 + dw $8C2B ; previously dw $8C10 + +; PLM, Maridia Tube break instruction list timing difference +org $84D511 <-- org $84D50B + dw #$0050 ; previously dw #$0060 ; Instruction, Speed booster chozo orb FX Y velocity org $84E641 <-- org $84E63B @@ -561,7 +568,7 @@ org $86AEB3 <-- org $86AE77 org $86AEB9 <-- org $86AE7D SBC #$0012 ; previously SBC #$0010 -; Golden torizo projectile initalization parameters +; Golden torizo projectile velocities org $86B06B <-- org $86B02F dw ... org $86B07F <-- org $86B043 @@ -598,7 +605,7 @@ org $86B2CF <-- org $86B293 org $86B2FD <-- org $86B2C1 dw #$0028 ; previously dw #$0030 -; Golden torizo projectile initalization parameters +; Golden torizo projectile velocities org $86B3B2 <-- org $86B376 dw ... org $86B3C6 <-- org $86B38A @@ -628,7 +635,7 @@ org $86C4CE <-- org $86C492 org $86C4EE <-- org $86C4B2 LDA #$0086 ; previously LDA #$0070 -; Mother brain projectile velocities +; Mother brain projectile accelerations org $86C58C <-- org $86C550 dw ... org $86C5A0 <-- org $86C564 @@ -646,7 +653,7 @@ org $86C8C6 <-- org $86C88A LDA #$000E ; previously LDA #$000C ; Mother brain projectile velocities -org $86C9CE <-- org $86C992 +org $86C9EE <-- org $86C9B2 dw ... org $86CA0E <-- org $86C9D2 @@ -668,7 +675,7 @@ org $86D06A <-- org $86D02E dw ... org $86D0BC <-- org $86D080 -; Kago projectile velocity +; Kago projectile acceleration org $86D0BE <-- org $86D082 dw #$010C ; previously dw #$00E0 @@ -768,7 +775,7 @@ org $8AE980 ;======================================================= ;======== Insert 52 bytes ======== -; Prepare transfer of data into VRAM? (PAL only) +; Load intro text tiles (PAL implementation) org $8B8D23 PHP ; SEP #$30 ; @@ -779,7 +786,7 @@ org $8B8D23 PHY ; LDY #$0000 ; LDX #$0000 ; - LDA $00,Y ; + LDA [$00],Y ; CMP #$002F ; BEQ $09 ; ORA #$2000 ; @@ -800,7 +807,7 @@ org $8B8D23 org $8B8D57 <-- org $8B8D23 ;======== Insert 52 bytes ======== -; Prepare transfer of data into VRAM? (PAL only) +; Load intro text bottom half tiles (PAL implementation) org $8B8D57 <-- org $8B8D23 PHP ; SEP #$30 ; @@ -811,7 +818,7 @@ org $8B8D57 <-- org $8B8D23 PHY ; LDY #$0000 ; LDX #$0000 ; - LDA $00,Y ; + LDA [$00],Y ; CMP #$002F ; BEQ $09 ; ORA #$2000 ; @@ -832,39 +839,121 @@ org $8B8D57 <-- org $8B8D23 org $8B8D8B <-- org $8B8D23 ;======== Remove 195 bytes ======== -; Prepare transfer of data into VRAM? (NTSC only) +; Load intro text tiles (NTSC implementation) org $8B8D8B <-- org $8B8D23 - ; previously db ... + ; previously PHP + ; previously REP #$30 + ; previously PHX + ; previously LDA $0000,Y + ; previously TAX + ; previously LDA $0002,Y + ; previously STA $12 + ; previously LDA $0004,Y + ; previously STA $16 + ; previously PHY + ; previously LDA #$A000 + ; previously CLC + ; previously ADC $16 + ; previously TAY + ; previously PHB + ; previously PEA $7F00 + ; previously PLB + ; previously PLB + ; previously LDA $0000,Y + ; previously STA $7E4000,X + ; previously LDA $0002,Y + ; previously STA $7E4002,X + ; previously LDA $0004,Y + ; previously STA $7E4004,X + ; previously LDA $0006,Y + ; previously STA $7E4006,X + ; previously LDA $0008,Y + ; previously STA $7E4008,X + ; previously LDA $000A,Y + ; previously STA $7E400A,X + ; previously LDA $000C,Y + ; previously STA $7E400C,X + ; previously LDA $000E,Y + ; previously STA $7E400E,X + ; previously PLB + ; previously PLY + ; previously LDA $0006,Y + ; previously STA $16 + ; previously TXA + ; previously CLC + ; previously ADC #$0300 + ; previously TAX + ; previously PHY + ; previously LDA #$A000 + ; previously CLC + ; previously ADC $16 + ; previously TAY + ; previously PHB + ; previously PEA $7F00 + ; previously PLB + ; previously PLB + ; previously LDA $0000,Y + ; previously STA $7E4000,X + ; previously LDA $0002,Y + ; previously STA $7E4002,X + ; previously LDA $0004,Y + ; previously STA $7E4004,X + ; previously LDA $0006,Y + ; previously STA $7E4006,X + ; previously LDA $0008,Y + ; previously STA $7E4008,X + ; previously LDA $000A,Y + ; previously STA $7E400A,X + ; previously LDA $000C,Y + ; previously STA $7E400C,X + ; previously LDA $000E,Y + ; previously STA $7E400E,X + ; previously PLB + ; previously PLY + ; previously TXA + ; previously SEC + ; previously SBC #$02F0 + ; previously TAX + ; previously TYA + ; previously CLC + ; previously ADC #$0004 + ; previously TAY + ; previously DEC $12 + ; previously BEQ $03 + ; previously JMP $8D30 + ; previously PLX + ; previously PLP + ; previously RTS org $8B8D8B <-- org $8B8DE6 ;======== Insert 3 bytes ======== -; Prepare transfer of data into VRAM? +; Transfer text tiles to VRAM org $8B8D8B <-- org $8B8DE6 PHP ; REP #$30 ; org $8B8D8E <-- org $8B8DE6 -; Transfer alternate text tiles to VRAM (different number of tiles?) +; Transfer text tiles to VRAM (different number of tiles) org $8B8D92 <-- org $8B8DEA LDA #$0100 ; previously LDA #$0600 -; Transfer alternate text tiles to VRAM (different VRAM destination?) +; Transfer alternate text tiles to VRAM (different VRAM destination) org $8B8D99 <-- org $8B8DF1 LDA #$3600 ; previously LDA #$4000 -; Transfer alternate text tiles to VRAM (different VRAM source?) +; Transfer alternate text tiles to VRAM (different VRAM source) org $8B8DA9 <-- org $8B8E01 LDA #$4F00 ; previously LDA #$4180 ;======== Insert 1 byte ======== -; Prepare transfer of data into VRAM? +; Transfer text tiles to VRAM org $8B8DB4 <-- org $8B8E0C PLP ; org $8B8DB5 <-- org $8B8E0C -;======== Insert 42 bytes ======== +;======== Insert 39 bytes ======== ; Handle cinematic BG objects without Samus eyes -org $8B95D8 <-- org $8B962F +org $8B9602 <-- org $8B9659 PHP ; REP #$30 ; BIT $19F1 ; @@ -881,19 +970,12 @@ org $8B95D8 <-- org $8B962F BIT $19F3 ; BPL $03 ; JSR $87A0 ; - JSR $87D3 ; PLP ; RTS ; -org $8B9602 <-- org $8B962F - -;======== Remove 3 bytes ======== -; Handle cinematic BG objects without Samus eyes -org $8B9627 <-- org $8B9654 - ; previously JSR $87D3 -org $8B9627 <-- org $8B9657 +org $8B9629 <-- org $8B9659 ; Cinematic ending and credits velocity? -org $8B99AA <-- org $8B997A +org $8B994A <-- org $8B997A ADC #$9800 ; previously ADC #$8000 ; Cinematic title scene timing? @@ -917,9 +999,9 @@ org $8B9EEA <-- org $8B9F1A LDA #$02D0 ; previously LDA #$0384 ; Cinematic instruction lists (timing differences) -org $8BA03D <-- org $8BA00D +org $8BA00D <-- org $8BA03D dw ... -org $8BA0F5 <-- org $8BA0C5 +org $8BA095 <-- org $8BA0C5 ; Transfer font 1 tiles to VRAM (different number of tiles) org $8BA45F <-- org $8BA48F @@ -928,7 +1010,7 @@ org $8BA45F <-- org $8BA48F ;======== Insert 22 bytes ======== ; Cinematic function, intro, initialization org $8BA54D <-- org $8BA57D - LDA $90E2 ; + LDA $09E2 ; BNE $11 ; LDX #$00FE ; LDA $8CD8CF,X ; @@ -955,7 +1037,7 @@ org $8BA5F9 <-- org $8BA618 ;======== Insert 20 bytes ======== ; Cinematic function, intro, queue music org $8BA619 <-- org $8BA638 - LDA $90E2 ; + LDA $09E2 ; BNE $0F ; LDX #$00FE ; LDA $8CD9CF,X ; @@ -971,7 +1053,7 @@ org $8BA632 <-- org $8BA63D ;======== Insert 41 bytes ======== ; Cinematic function, intro, wait for music queue org $8BA640 <-- org $8BA64B - LDA $90E2 ; + LDA $09E2 ; BNE $24 ; LDX $0330 ; LDA #$0100 ; @@ -1012,14 +1094,14 @@ org $8BA6AA <-- org $8BA68C org $8BA6E4 <-- org $8BA6C6 ; previously LDX #$0600 ; previously LDY #$0000 - ; LDA $A72B,Y - ; STA $7E3000,X - ; INY - ; INY - ; INX - ; INX - ; CPX #$0700 - ; BMI $F0 + ; previously LDA $A72B,Y + ; previously STA $7E3000,X + ; previously INY + ; previously INY + ; previously INX + ; previously INX + ; previously CPX #$0700 + ; previously BMI $F0 org $8BA6E4 <-- org $8BA6DC ;======== Insert 3 bytes ======== @@ -1038,7 +1120,7 @@ org $8BA736 <-- org $8BA82B ; Cinematic function, intro, blank out text tiles org $8BA779 <-- org $8BA86E LDX #$00FE ; previously PHY - LDA $3C29 ; previously LDX #$0000 + LDA #$3C29 ; previously LDX #$0000 STA $7E3600,X ; previously LDA $7F8290 DEX ; previously STA $7E4000,X DEX ; previously LDA $7F8292 @@ -1055,14 +1137,14 @@ org $8BA779 <-- org $8BA86E ; previously STA $7E400C,X ; previously LDA $7F829E ; previously STA $7E400E,X - ; TXA - ; CLC - ; ADC #$0010 - ; TAX - ; CPX #$0600 - ; BMI $B5 - ; PLY -org $8BA779 <-- org $8BA8BE + ; previously TXA + ; previously CLC + ; previously ADC #$0010 + ; previously TAX + ; previously CPX #$0600 + ; previously BMI $B5 + ; previously PLY +org $8BA787 <-- org $8BA8BE ;======== Remove 5 bytes ======== ; Cinematic function, intro, page 1 creating text @@ -1075,7 +1157,7 @@ org $8BAD25 <-- org $8BAE61 BEQ $16 ; previously BEQ $0F ;======== Insert 24 bytes ======== -; Cinematic function, intro, page 2 creating text +; Cinematic function, intro, page 1 creating text org $8BAD3D <-- org $8BAE79 PHB ; PEA $8B00 ; @@ -1103,22 +1185,24 @@ org $8BAD58 <-- org $8BAE81 org $8BAD6E <-- org $8BAE97 BEQ $16 ; previously BEQ $18 -;======== Remove 8 bytes ======== +;======== Move 10 bytes below ======== ; Cinematic function, intro, page 2 blink and wait org $8BAD7E <-- org $8BAEA7 ; previously PHY ; previously LDY $D40D ; previously JSR $94E4 ; previously PLY -org $8BAD7E <-- org $8BAEAF + ; previously PLB + ; previously RTS +org $8BAD7E <-- org $8BAEB1 -;======== Remove 1 byte ======== +;======== Insert 1 byte ======== ; Cinematic function, intro, page 2 blink and wait -org $8BAD7F <-- org $8BAEB0 - ; previously RTS +org $8BAD7E <-- org $8BAEB1 + PLB ; org $8BAD7F <-- org $8BAEB1 -;======== Insert 24 bytes ======== +;======== Insert 14 bytes ======== ; Cinematic function, intro, page 2 blink and wait org $8BAD86 <-- org $8BAEB8 PHB ; @@ -1129,12 +1213,19 @@ org $8BAD86 <-- org $8BAEB8 LDY $CDD8 ; JSR $9333 ; PLY ; +org $8BAD94 <-- org $8BAEB8 + +;======== Start of 10 bytes from above ======== +; Cinematic function, intro, page 2 blink and wait +org $8BAD94 <-- org $8BAEB8 +org $8BAD94 <-- org $8BAEB8 ($8BAEA7) PHY ; LDY $D384 ; JSR $948D ; PLY ; PLB ; RTS ; +org $8BAD9E <-- org $8BAEB8 ($8BAEB1) org $8BAD9E <-- org $8BAEB8 ;======== Remove 5 bytes ======== @@ -1147,22 +1238,24 @@ org $8BAF5D <-- org $8BB07C org $8BAF73 <-- org $8BB092 BEQ $16 ; previously BEQ $18 -;======== Remove 8 bytes ======== +;======== Move 10 bytes below ======== ; Cinematic function, intro, page 3 blink and wait org $8BAF83 <-- org $8BB0A2 ; previously PHY ; previously LDY $D419 ; previously JSR $94E4 ; previously PLY -org $8BAF83 <-- org $8BB0AA + ; previously PLB + ; previously RTS +org $8BAF83 <-- org $8BB0AC -;======== Remove 1 byte ======== +;======== Insert 1 byte ======== ; Cinematic function, intro, page 3 blink and wait -org $8BAF84 <-- org $8BB0AB - ; previously RTS +org $8BAF83 <-- org $8BB0AC + PLB ; org $8BAF84 <-- org $8BB0AC -;======== Insert 24 bytes ======== +;======== Insert 14 bytes ======== ; Cinematic function, intro, page 3 blink and wait org $8BAF8B <-- org $8BB0B3 PHB ; @@ -1173,12 +1266,19 @@ org $8BAF8B <-- org $8BB0B3 LDY $CDD8 ; JSR $9333 ; PLY ; +org $8BAF99 <-- org $8BB0B3 + +;======== Start of 10 bytes from above ======== +; Cinematic function, intro, page 3 blink and wait +org $8BAF99 <-- org $8BB0B3 +org $8BAF99 <-- org $8BB0B3 ($8BB0A2) PHY ; LDY $D390 ; JSR $948D ; PLY ; PLB ; RTS ; +org $8BAFA3 <-- org $8BB0B3 ($8BB0AC) org $8BAFA3 <-- org $8BB0B3 ;======== Remove 5 bytes ======== @@ -1213,22 +1313,24 @@ org $8BB07D <-- org $8BB1A3 org $8BB093 <-- org $8BB1B9 BEQ $16 ; previously BEQ $18 -;======== Remove 8 bytes ======== +;======== Move 10 bytes below ======== ; Cinematic function, intro, page 5 blink and wait org $8BB0A3 <-- org $8BB1C9 ; previously PHY ; previously LDY $D431 ; previously JSR $94E4 ; previously PLY -org $8BB0A3 <-- org $8BB1D1 + ; previously PLB + ; previously RTS +org $8BB0A3 <-- org $8BB1D3 -;======== Remove 1 byte ======== +;======== Insert 1 byte ======== ; Cinematic function, intro, page 5 blink and wait -org $8BB0A4 <-- org $8BB1D2 - ; previously RTS +org $8BB0A3 <-- org $8BB1D3 + PLB ; org $8BB0A4 <-- org $8BB1D3 -;======== Insert 24 bytes ======== +;======== Insert 14 bytes ======== ; Cinematic function, intro, page 5 blink and wait org $8BB0AB <-- org $8BB1DA PHB ; @@ -1239,12 +1341,19 @@ org $8BB0AB <-- org $8BB1DA LDY $CDD8 ; JSR $9333 ; PLY ; +org $8BB0B9 <-- org $8BB1DA + +;======== Start of 10 bytes from above ======== +; Cinematic function, intro, page 5 blink and wait +org $8BB0B9 <-- org $8BB1DA +org $8BB0B9 <-- org $8BB1DA ($8BB1C9) PHY ; LDY $D3A8 ; JSR $948D ; PLY ; PLB ; RTS ; +org $8BB0C3 <-- org $8BB1DA ($8BB1D3) org $8BB0C3 <-- org $8BB1DA ;======== Remove 5 bytes ======== @@ -1281,28 +1390,66 @@ org $8BB3CF <-- org $8BB710 org $8BB95F <-- org $8BBCA0 org $8BB95F <-- org $8BBCA0 ($8BB4EB) -;======== Remove 50 bytes ======== -; First two methods replaced with RTS -org $8BB95F <-- org $8BBCA0 ($8BB4EB) +;======== Remove 46 bytes ======== +; Instruction, load non-existent Japanese intro text +org $8BB3CF <-- org $8BBCA0 ($8BB4EB) + ; previously PHY + ; previously JSL $8B95C3 + ; previously LDA $8CE40B + ; previously STA $7EC022 + ; previously LDA $8CE40D + ; previously STA $7EC024 + ; previously LDA $8CE40F + ; previously STA $7EC026 + ; previously LDY #$D389 + ; previously JSR $8D23 + ; previously LDY #$D389 + ; previously JSR $8D23 + ; previously JSR $8DE6 + ; previously PLY + ; previously RTS +org $8BB3CF <-- org $8BBCA0 ($8BB519) + +;======== Remove 4 bytes ======== +; Instruction, enable cinematic BG tilemap updates org $8BB95F <-- org $8BBCA0 ($8BB519) + ; previously JSL $8B95B8 org $8BB95F <-- org $8BBCA0 ($8BB51D) -;======== Insert 14 bytes ======== -; Method implementation differences -org $8BB960 <-- org $8BBCA0 ($8BB51E) - db ... -org $8BB99F <-- org $8BBCA0 ($8BB54F) +;======== Remove 4 bytes ======== +; Instruction, disable cinematic BG tilemap updates +org $8BB961 <-- org $8BBCA0 ($8BB51F) + ; previously JSL $8B95C3 +org $8BB961 <-- org $8BBCA0 ($8BB523) + +;======== Insert 18 bytes ======== +; Instruction, load alternate intro text page 1 subpage 1 +org $8BB97C <-- org $8BBCA0 ($8BB53E) + LDA $09E2 ; previously LDY #$CF75 + BNE $0F ; previously JSR $8D23 + LDA #$A000 ; previously LDY #$CFBD + STA $00 ; previously JSR $8D23 + LDA #$0100 ; previously JSR $8DE6 + STA $12 ; + JSR $8D23 ; + BRA $0D ; + LDA #$A800 ; + STA $00 ; + LDA #$0100 ; + STA $12 ; + JSR $8D23 ; +org $8BB99D <-- org $8BBCA0 ($8BB54D) ;======== Insert 45 bytes ======== -; Method added for PAL +; Instruction, load intro text page 1 subpage 2 org $8BB9A4 <-- org $8BBCA0 ($8BB554) LDA $8F ; BEQ $28 ; - LDA $D300 ; + LDA #$D300 ; STA $19A1,X ; LDA #$0001 ; STA $19A9,X ; - LDA $9382 ; + LDA #$9382 ; STA $19A5,X ; JSR $A775 ; LDA #$A100 ; @@ -1316,65 +1463,216 @@ org $8BB9A4 <-- org $8BBCA0 ($8BB554) org $8BB9D1 <-- org $8BBCA0 ($8BB554) ;======== Insert 11 bytes ======== -; Method added for PAL +; Instruction, enable cinematic BG tilemap updates and page 1 done input org $8BB9D1 <-- org $8BBCA0 ($8BB554) JSL $8B9561 ; - LDA $AD9E ; + LDA #$AD9E ; STA $1F51 ; RTS ; org $8BB9DC <-- org $8BBCA0 ($8BB554) -;======== Insert 14 bytes ======== -; Method implementation differences -org $8BB9DC <-- org $8BBCA0 ($8BB554) - db ... -org $8BBA1B <-- org $8BBCA0 ($8BB585) +;======== Remove 4 bytes ======== +; Instruction, disable cinematic BG tilemap updates +org $8BB9DD <-- org $8BBCA0 ($8BB555) + ; previously JSL $8B95C3 +org $8BB9DD <-- org $8BBCA0 ($8BB559) + +;======== Insert 18 bytes ======== +; Instruction, load alternate intro text page 2 subpage 1 +org $8BB9F8 <-- org $8BBCA0 ($8BB574) + LDA $09E2 ; previously LDY #$CF75 + BNE $0F ; previously JSR $8D23 + LDA #$A240 ; previously LDY #$CFBD + STA $00 ; previously JSR $8D23 + LDA #$0100 ; previously JSR $8DE6 + STA $12 ; + JSR $8D23 ; + BRA $0D ; + LDA #$AA40 ; + STA $00 ; + LDA #$0100 ; + STA $12 ; + JSR $8D23 ; +org $8BBA19 <-- org $8BBCA0 ($8BB583) -;======== Remove 6 bytes ======== -; Method implementation differences -org $8BBA1B <-- org $8BBCA0 ($8BB585) - db ... -org $8BBA48 <-- org $8BBCA0 ($8BB5B8) +org $8BBA1D <-- org $8BBCA0 ($8BB587) + BEQ $28 ; previously BEQ $2E -;======== Insert 20 bytes ======== -; Method implementation differences -org $8BBA53 <-- org $8BBCA0 ($8BB5C3) - db ... -org $8BBA92 <-- org $8BBCA0 ($8BB5EE) +;======== Remove 4 bytes ======== +; Instruction, disable cinematic BG tilemap updates +org $8BBA31 <-- org $8BBCA0 ($8BB59B) + ; previously JSL $8B95C3 +org $8BBA31 <-- org $8BBCA0 ($8BB59F) -; Method implementation differences -org $8BBA92 <-- org $8BBCA0 ($8BB5EE) - db ... -org $8BBABF <-- org $8BBCA0 ($8BB61B) +;======== Remove 2 bytes ======== +; Instruction, load alternate intro text page 2 subpage 2 +org $8BBA34 <-- org $8BBCA0 ($8BB5A2) + LDA #$A340 ; previously LDY #$D085 + STA $00 ; previously JSR $8D23 + LDA #$0100 ; previously LDY #$D0E1 + STA $12 ; previously JSR $8D23 + JSR $8D23 ; previously JSR $8DE6 +org $8BBA41 <-- org $8BBCA0 ($8BB5B1) -;======== Insert 14 bytes ======== -; Method implementation differences -org $8BBACA <-- org $8BBCA0 ($8BB626) - db ... -org $8BBB09 <-- org $8BBCA0 ($8BB657) +;======== Remove 4 bytes ======== +; Instruction, disable cinematic BG tilemap updates +org $8BBA54 <-- org $8BBCA0 ($8BB5C4) + ; previously JSL $8B95C3 +org $8BBA54 <-- org $8BBCA0 ($8BB5C8) -;======== Insert 27 bytes ======== -; Method implementation differences -org $8BBB09 <-- org $8BBCA0 ($8BB657) - db ... -org $8BBB57 <-- org $8BBCA0 ($8BB68A) +;======== Insert 24 bytes ======== +; Instruction, load alternate intro text page 3 subpage 1 +org $8BBA6F <-- org $8BBCA0 ($8BB5E3) + LDA $09E2 ; previously LDY #$D0F9 + BNE $0F ; previously JSR $8D23 + LDA #$A480 ; previously JSR $8DE6 + STA $00 ; + LDA #$0100 ; + STA $12 ; + JSR $8D23 ; + BRA $0D ; + LDA #$AC80 ; + STA $00 ; + LDA #$0100 ; + STA $12 ; + JSR $8D23 ; +org $8BBA90 <-- org $8BBCA0 ($8BB5EC) -;======== Insert 20 bytes ======== -; Method implementation differences -org $8BBB62 <-- org $8BBCA0 ($8BB695) - db ... -org $8BBBA1 <-- org $8BBCA0 ($8BB6C0) +;======== Remove 4 bytes ======== +; Instruction, disable cinematic BG tilemap updates +org $8BBAA8 <-- org $8BBCA0 ($8BB604) + ; previously JSL $8B95C3 +org $8BBAA8 <-- org $8BBCA0 ($8BB608) + +;======== Insert 4 bytes ======== +; Instruction, load alternate intro text page 3 subpage 2 +org $8BBAAB <-- org $8BBCA0 ($8BB60B) + LDA #$A580 ; previously LDY #$D15D + STA $00 ; previously JSR $8D23 + LDA #$0080 ; previously JSR $8DE6 + STA $12 ; + JSR $8D23 ; +org $8BBAB8 <-- org $8BBCA0 ($8BB614) -; Method implementation differences -org $8BBBA1 <-- org $8BBCA0 ($8BB6C0) - db ... -org $8BBBCE <-- org $8BBCA0 ($8BB6ED) +;======== Remove 4 bytes ======== +; Instruction, disable cinematic BG tilemap updates +org $8BBACB <-- org $8BBCA0 ($8BB627) + ; previously JSL $8B95C3 +org $8BBACB <-- org $8BBCA0 ($8BB62B) + +;======== Insert 18 bytes ======== +; Instruction, load alternate intro text page 4 subpage 1 +org $8BBAE6 <-- org $8BBCA0 ($8BB646) + LDA $09E2 ; previously LDY #$D1B9 + BNE $0F ; previously JSR $8D23 + LDA #$A680 ; previously LDY #$D215 + STA $00 ; previously JSR $8D23 + LDA #$0100 ; previously JSR $8DE6 + STA $12 ; + JSR $8D23 ; + BRA $0D ; + LDA #$AE80 ; + STA $00 ; + LDA #$0100 ; + STA $12 ; + JSR $8D23 ; +org $8BBB07 <-- org $8BBCA0 ($8BB655) -;======== Insert 20 bytes ======== -; Method implementation differences -org $8BBBD9 <-- org $8BBCA0 ($8BB6F8) - db ... -org $8BBC00 <-- org $8BBCA0 ($8BB70B) +org $8BBB0B <-- org $8BBCA0 ($8BB659) + BEQ $49 ; previously BEQ $2E + +;======== Remove 4 bytes ======== +; Instruction, disable cinematic BG tilemap updates +org $8BBB1F <-- org $8BBCA0 ($8BB66D) + ; previously JSL $8B95C3 +org $8BBB1F <-- org $8BBCA0 ($8BB671) + +;======== Insert 31 bytes ======== +; Instruction, load alternate intro text page 4 subpage 2 +org $8BBB22 <-- org $8BBCA0 ($8BB674) + LDA $09E2 ; previously LDY #$D259 + BNE $0F ; previously JSR $8D23 + LDA #$A780 ; previously LDY #$D2A5 + STA $00 ; previously JSR $8D23 + LDA #$0080 ; previously JSR $8DE6 + STA $12 ; + JSR $8D23 ; + BRA $1A ; + LDA #$AF80 ; + STA $00 ; + LDA #$0080 ; + STA $12 ; + JSR $8D23 ; + LDA #$B800 ; + STA $00 ; + LDA #$0080 ; + STA $12 ; + JSR $8D23 ; +org $8BBB50 <-- org $8BBCA0 ($8BB683) + +;======== Remove 4 bytes ======== +; Instruction, disable cinematic BG tilemap updates +org $8BBB63 <-- org $8BBCA0 ($8BB696) + ; previously JSL $8B95C3 +org $8BBB63 <-- org $8BBCA0 ($8BB69A) + +;======== Insert 24 bytes ======== +; Instruction, load alternate intro text page 5 subpage 1 +org $8BBB7E <-- org $8BBCA0 ($8BB6B5) + LDA $09E2 ; previously LDY #$D2D5 + BNE $0F ; previously JSR $8D23 + LDA #$B0C0 ; previously JSR $8DE6 + STA $00 ; + LDA #$0100 ; + STA $12 ; + JSR $8D23 ; + BRA $0D ; + LDA #$B8C0 ; + STA $00 ; + LDA #$0100 ; + STA $12 ; + JSR $8D23 ; +org $8BBB9F <-- org $8BBCA0 ($8BB6BE) + +;======== Remove 4 bytes ======== +; Instruction, disable cinematic BG tilemap updates +org $8BBBB7 <-- org $8BBCA0 ($8BB6D6) + ; previously JSL $8B95C3 +org $8BBBB7 <-- org $8BBCA0 ($8BB6DA) + +;======== Insert 4 bytes ======== +; Instruction, load alternate intro text page 5 subpage 2 +org $8BBBBA <-- org $8BBCA0 ($8BB6DD) + LDA #$B1C0 ; previously LDY #$D30D + STA $00 ; previously JSR $8D23 + LDA #$0100 ; previously JSR $8DE6 + STA $12 ; + JSR $8D23 ; +org $8BBBC7 <-- org $8BBCA0 ($8BB6E6) + +;======== Remove 4 bytes ======== +; Instruction, disable cinematic BG tilemap updates +org $8BBBDA <-- org $8BBCA0 ($8BB6F9) + ; previously JSL $8B95C3 +org $8BBBDA <-- org $8BBCA0 ($8BB6FD) + +;======== Insert 24 bytes ======== +; Instruction, load alternate intro text page 6 +org $8BBBDD <-- org $8BBCA0 ($8BB700) + LDA $09E2 ; previously LDY #$D371 + BNE $0F ; previously JSR $8D23 + LDA #$B300 ; previously JSR $8DE6 + STA $00 ; + LDA #$0100 ; + STA $12 ; + JSR $8D23 ; + BRA $0D ; + LDA #$BB00 ; + STA $00 ; + LDA #$0100 ; + STA $12 ; + JSR $8D23 ; +org $8BBBFE <-- org $8BBCA0 ($8BB709) ;======== End of 549 bytes from above ======== org $8BBC05 <-- org $8BBCA0 ($8BB710) @@ -1529,6 +1827,10 @@ org $8BD378 <-- org $8BD407 dw $D2F8 ; org $8BD37E <-- org $8BD407 +; Handle final screen cinematic objects (PAL uses routine without Samus eyes) +org $8BD3F3 <-- org $8BD47C + JSR $9602 ; previously JSR $962F + ; Cinematic velocity? org $8BD691 <-- org $8BD71A ADC #$0003 ; previously ADC #$0002 @@ -1590,7 +1892,7 @@ org $8BE247 <-- org $8BE2D0 org $8BE376 <-- org $8BE3FF LDA #$0084 ; previously LDA #$00B4 -; Cinematic velocity? +; Cinematic item percentage alternate text tiles size org $8BE3D1 <-- org $8BE45A SBC #$0800 ; previously SBC #$0400 @@ -1619,10 +1921,15 @@ org $8BE709 <-- org $8BE781 LDX #$00FE ; previously LDX #$007E LDA #$004F ; previously LDA #$007F -; Ending credits data and instruction lists (timing differences?) -org $8BE92F <-- org $8BE9A7 +; Cinematic ending cutscene instruction lists (timing differences) +org $8BEA97 <-- org $8BEB0F dw ... -org $8BEF21 <-- org $8BEF99 +org $8BEC01 <-- org $8BEC79 + +; Ending credits cutscene instruction lists (timing differences) +org $8BECB5 <-- org $8BED2D + dw ... +org $8BEE23 <-- org $8BEE9B ; Cinematic timing difference? org $8BF426 <-- org $8BF49E @@ -1705,7 +2012,7 @@ org $8CD6A9 <-- org $8CD66D db #$01 ; dw $D6CF ; dw $C007 ; - dw $9698 ; + dw $9668 ; org $8CD6B9 <-- org $8CD66D ; Intro, "Space Colony" text positioning? @@ -1735,25 +2042,26 @@ org $8CDACF <-- org $8CD81B dw ... org $8CDBCF <-- org $8CD91B -; Ending sequence, instruction list timing difference? +; Ending sequence, instruction list timing difference org $8CDBD1 <-- org $8CD91D dw #$0006 ; previously dw #$0008 +; Ending sequence, instruction list timing difference org $8CDF41 <-- org $8CDC8D dw #$0022 ; previously dw #$0023 -; Ending sequence data? +; Tilemap, post credits, 1994 Nintendo org $8CE18F <-- org $8CDEDB dw ... org $8CE20F <-- org $8CDF5B ;======== Insert 256 bytes ======== -; Ending sequence data? +; Tilemap, post credits, item percentage additional alternate text org $8CE20F <-- org $8CDF5B dw ... org $8CE30F <-- org $8CDF5B -; Ending sequence data? +; Tilemap, post credits, item percentage alternate text org $8CE30F <-- org $8CDF5B dw ... org $8CE38F <-- org $8CDFDB @@ -2054,73 +2362,68 @@ org $91812D ... ; modified by SpriteSomething org $918167 -; Demo instructions, Landing site +; Demo instructions, Landing site (timing differences) org $918ACE dw ... org $918C3C -; Demo instructions, Pseudo screw attack +; Demo instructions, Pseudo screw attack (timing differences) org $918C3E dw ... org $918DEE -; Demo instructions, Speed booster +; Demo instructions, Speed booster (timing differences) org $918DF0 dw ... org $918E62 -; Demo instructions, Dachora +; Demo instructions, Dachora (timing differences) org $918E64 dw ... org $918EB2 -; Demo instructions, Red Brinstar +; Demo instructions, Red Brinstar (timing differences) org $918EB4 dw ... org $918F38 -; Demo instructions, Wrecked Ship hall +; Demo instructions, Wrecked Ship hall (timing differences) org $918F3A dw ... org $918FE2 ;======== Remove 102 bytes ======== -; Demo instructions, Lower Norfair entrance +; Demo instructions, Lower Norfair entrance (timing and movement differences) org $918FE4 dw ... org $9190EC <-- org $919152 ; Demo instructions, Eye door -org $9190EE <-- org $919154 +org $9190EE <-- org $919154 (timing differences) dw ... org $9192D4 <-- org $91933A -; Demo instructions, Shinespark +; Demo instructions, Shinespark (timing differences) org $9192D6 <-- org $91933C dw ... org $919364 <-- org $9193CA ; Demo instructions, Missile door -org $919366 <-- org $9193CC +org $919366 <-- org $9193CC (timing differences) dw ... org $9193FC <-- org $919462 ; Demo instructions, Kraid -org $9193FE <-- org $919464 +org $9193FE <-- org $919464 (timing differences) dw ... org $919404 <-- org $91946A ;======== Insert 36 bytes ======== -; Demo instructions, Fireflea room +; Demo instructions, Fireflea room (timing and movement differences) org $919406 <-- org $91946C dw ... org $9194C6 <-- org $919508 -; Demo instructions, Screw attack -org $9194C8 <-- org $91950A - dw ... -org $91951C <-- org $91955E - ; Demo instructions, Brinstar diagonal room org $91951E <-- org $919560 dw ... @@ -2133,32 +2436,27 @@ org $919616 <-- org $919658 ;======== Insert 6 bytes ======== ; Demo instructions, Big Pink -org $919618 <-- org $91965A +org $919618 <-- org $91965A (timing differences) dw ... org $9196FC <-- org $919738 ; Demo instructions, Grapple beam -org $9196FE <-- org $91973A +org $9196FE <-- org $91973A (timing differences) dw ... org $919860 <-- org $91989C -; Demo instructions, Ice beam -org $919862 <-- org $91989E - dw ... -org $919970 <-- org $9199AC - -; Demo instructions, Gauntlet entrance +; Demo instructions, Gauntlet entrance (timing differences) org $919972 <-- org $9199AE dw ... org $91998A <-- org $9199C6 ;======== Remove 108 bytes ======== -; Demo instructions, Advanced grapple beam +; Demo instructions, Advanced grapple beam (timing and movement differences) org $91998C <-- org $9199C8 dw ... org $919A46 <-- org $919AEE -; Demo instructions, Infinite bomb jump +; Demo instructions, Infinite bomb jump (timing differences) org $919A48 <-- org $919AF0 dw ... org $919C2E <-- org $919CD6 @@ -2168,12 +2466,12 @@ org $919C30 <-- org $919CD8 dw ... org $919CFC <-- org $919DA4 -; Demo instructions, Tourian entrance +; Demo instructions, Tourian entrance (timing differences) org $919CFE <-- org $919DA6 dw ... org $919D04 <-- org $919DAC -; Demo instructions, Crystal flash +; Demo instructions, Crystal flash (timing differences) org $919D06 <-- org $919DAE dw ... org $919DA8 <-- org $919E50 @@ -2186,7 +2484,7 @@ org $91B162 <-- org $91B20A ; Animation delay timing differences org $91B162 <-- org $91B20A dw ... ; also modified by SpriteSomething -org $91B581 <-- org $91B629 +org $91B577 <-- org $91B61F ;======== Insert 5 bytes ======== ; Special sound/palletes for Samus? @@ -2450,10 +2748,17 @@ org $A0CBE7 <-- org $A0CBC7 dw ... org $A0CEDF <-- org $A0CEBF -; Enemy header data -org $A0CEDF <-- org $A0CEBF - dw ... -org $A0F7F3 <-- org $A0F7D3 +; Spore Spawn header cry +org $A0DF6D <-- org $A0DF4D + dw #$0000 ; previously dw #$002C + +; Spore Spawn header cry +org $A0DF6D <-- org $A0DF4D + dw #$0000 ; previously dw #$002C + +; Ceres steam palette (errantly pointing to bank A0 instead of bank A6) +org $A0E221 <-- org $A0E201 + dw $E25F ; previously dw $E23F ; Freespace org $A0F7F3 <-- org $A0F7D3 @@ -2462,10 +2767,57 @@ org $A0F7F3 <-- org $A0F7D3 ; Bank A1 ;======================================================= -; Enemy population -org $A18000 - db ... -org $A1EBD1 +; Early Supers Room, first shutter speed +org $A19A6C + dw #$00A4 ; previously dw #$0090 + +; Ice Beam Gate Room, first shutter speed? +org $A1A340 + dw #$0010 ; previously dw #$000D + +; Ice Beam Gate Room, second shutter speed +org $A1A34E + dw #$0070 ; previously dw #$0068 + +; Hi Jump Energy Tank Room, sova speed +org $A1B3D1 + dw #$0005 ; previously dw #$0004 + +; Ice Beam Tutorial Room, first boyon Y position +org $A1B492 + dw #$00D5 ; previously dw #$00D9 + +; Ice Beam Tutorial Room, second boyon Y position +org $A1B4A2 + dw #$00D5 ; previously dw #$00D9 + +; Ice Beam Tutorial Room, third boyon Y position +org $A1B4B2 + dw #$00D5 ; previously dw #$00D9 + +; Ice Beam Snake Room, first sova speed +org $A1B6B9 + dw #$0002 ; previously dw #$0001 + +; Ice Beam Snake Room, second sova speed +org $A1B6C9 + dw #$0002 ; previously dw #$0001 + +; Ice Beam Snake Room, third sova speed +org $A1B6D9 + dw #$0002 ; previously dw #$0001 + +; Single Chamber Room, first multiviola speed +org $A1B828 + dw #$00D8 ; previously dw #$00D0 + +; Single Chamber Room, first multiviola speed +org $A1B848 + dw #$0098 ; previously dw #$0088 + +; Crab Shaft Room, first sciser speed +org $A1CFCF + dw #$0002 ; previously dw #$0003 ; Freespace org $A1EBD1 @@ -2507,10 +2859,10 @@ org $A29C06 <-- org $A29BF5 ;======== Insert 7 bytes ======== ; Puyo AI, $12 later used by vertical movement routine org $A29C43 <-- org $A29C32 - LDA $9A19,Y ; previously STZ $12 + LDA $9A19,Y ; AND #$00FF ; XBA ; - STA $12 ; + STA $12 ; previously STZ $12 org $A29C4C <-- org $A29C34 ; Cacatac AI instruction lists (timing differences) @@ -2754,8 +3106,8 @@ org $A3A8ED <-- org $A3A8DD ;======== Insert 3 bytes ======== ; Mochtroid AI, $0FA8 and $0FAA later used by horizontal movement routine org $A3A8EF <-- org $A3A8DF - LDA #$CCD0 ; previously STZ $0FA8,X - STA $0FA8,X ; + LDA #$CCD0 ; + STA $0FA8,X ; previously STZ $0FA8,X LDA #$FFFE ; previously LDA #$FFFF org $A3A8F8 <-- org $A3A8E5 @@ -2765,8 +3117,8 @@ org $A3A8FB <-- org $A3A8E8 ;======== Insert 3 bytes ======== ; Mochtroid AI, $0FA8 later used by horizontal movement routine org $A3A8FD <-- org $A3A8EA - LDA #$3330 ; previously STZ $0FA8,X - STA $0FA8,X ; + LDA #$3330 ; + STA $0FA8,X ; previously STZ $0FA8,X org $A3A903 <-- org $A3A8ED org $A3A923 <-- org $A3A90D @@ -2778,8 +3130,8 @@ org $A3A92B <-- org $A3A915 ;======== Insert 3 bytes ======== ; Mochtroid AI, $0FAC and $0FAE later used by vertical movement routine org $A3A92D <-- org $A3A917 - LDA #$CCD0 ; previously STZ $0FAC,X - STA $0FAC,X ; + LDA #$CCD0 ; + STA $0FAC,X ; previously STZ $0FAC,X LDA #$FFFE ; previously LDA #$FFFF org $A3A936 <-- org $A3A91D @@ -2789,12 +3141,12 @@ org $A3A939 <-- org $A3A920 ;======== Insert 3 bytes ======== ; Mochtroid AI, $0FAC later used by vertical movement routine org $A3A93B <-- org $A3A922 - LDA #$3330 ; previously STZ $0FAC,X - STA $0FA8,X ; + LDA #$3330 ; + STA $0FA8,X ; previously STZ $0FAC,X org $A3A941 <-- org $A3A925 ; Zoa AI velocities? -org $A3B435 <-- org $A3B419 +org $A3B431 <-- org $A3B415 db ... org $A3B445 <-- org $A3B429 @@ -2947,10 +3299,12 @@ org $A499FE <-- org $A499EB org $A49A04 <-- org $A499F1 ADC #$9999 ; previously ADC #$8000 -;======== Insert 6 bytes ======== -; Initialize an extra crocomire AI variable? org $A49A13 <-- org $A49A00 BMI $09 ; previously BMI $03 + +;======== Insert 6 bytes ======== +; Initialize an extra crocomire AI variable? +org $A49A15 <-- org $A49A02 LDA #$9999 ; STA $0FB0 ; org $A49A1B <-- org $A49A02 @@ -3066,27 +3420,30 @@ org $A5E6F7 <-- org $A5E6EF ($A5E6E7) org $A5E6FB <-- org $A5E6EF ($A5E6EB) org $A5E6FB <-- org $A5E6EF -;======== Remove 40 bytes ======== -; Spore Spawn data +;======== Remove 4 bytes ======== +; Spore Spawn death sequence instruction list (set up death) org $A5E789 <-- org $A5E77D - db ... -org $A5E811 <-- org $A5E82D + ; previously dw $E8BA + ; previously dw $EB9B +org $A5E789 <-- org $A5E781 -;======== Insert 28 bytes ======== -; Spore Spawn logic -org $A5E811 <-- org $A5E82D - LDA #$0000,Y ; - STA $7E7816 ; - LDA #$0002,Y ; - STA $7E7818 ; - LDA #$0004,Y ; - STA $7E7814 ; - TYA ; - CLC ; - ADC #$0006 ; - TAY ; - RTL ; -org $A5E82D +;======== Remove 4 bytes ======== +; Spore Spawn death sequence instruction list (dying) +org $A5E78D <-- org $A5E785 + ; previously dw $E8BA + ; previously dw $EBEE +org $A5E78D <-- org $A5E789 + +; Spore Spawn death sequence instruction list (timing) +org $A5E791 <-- org $A5E78D + dw #$0008 ; previously #$0001 + +;======== Remove 4 bytes ======== +; Spore Spawn death sequence instruction list (wait eight frames) +org $A5E797 <-- org $A5E793 + ; previously dw $813A + ; previously dw #$0008 +org $A5E797 ;======== Insert 5 bytes ======== ; Spore Spawn logic @@ -3157,7 +3514,7 @@ org $A5EE35 <-- org $A5EDF9 ; Spore Spawn logic org $A5EE85 <-- org $A5EE49 JSR $EBD0 ; - LDA $EC23 ; + LDA #$EC23 ; STA $0FA8 ; org $A5EE8E <-- org $A5EE49 @@ -3213,74 +3570,143 @@ org $A6B9E5 <-- org $A6B9D5 org $A6C0D1 <-- org $A6C0C1 BNE $26 ; previously BNE $31 -;======== Move 11 bytes below ======== -; Baby Metroid AI data +;======== Remove 11 bytes ======== +; Baby Metroid AI data? org $A6C0F3 <-- org $A6C0E3 + ; previously LDA $09E2 + ; previously BNE $06 + ; previously INC $0FB2 + ; previously INC $0FB2 org $A6C0F3 <-- org $A6C0EE org $A6C0FD <-- org $A6C0F8 BNE $15 ; previously BNE $0A -;======== Start of 11 bytes from above ======== -; Baby Metroid AI data +;======== Insert 11 bytes ======== +; Baby Metroid AI data? org $A6C105 <-- org $A6C100 -org $A6C105 <-- org $A6C100 ($A6C0E3) - -; Method implementation differences -org $A6C10A <-- org $A6C100 ($A6C0E8) - JSL $A6C3A2 ; previously INC $0FB2 - BRA $04 ; previously INC $0FB2 -org $A6C110 <-- org $A6C100 ($A6C0EE) - -;======== End of 11 bytes from above ======== -org $A6C110 <-- org $A6C100 ($A6C0EE) + LDA $09E2 ; + BNE $06 ; + JSL $A6C3A2 ; + BRA $04 ; org $A6C110 <-- org $A6C100 -;======== Insert 23 bytes ======== +;======== Insert 20 bytes ======== ; Escape timer initialization routine? org $A6C393 <-- org $A6C383 LDA $09E2 BNE $05 - LDX $DEC3 + LDX #$DE3C BRA $0D - LDX $DE5A + LDX #$DE5A BRA $08 - LDX $DE00 + LDX #$DE00 BRA $03 org $A6C3A7 <-- org $A6C383 +; Escape timer initialization routine? (relocated data from bank A6 to bank AD) +org $A6C3A7 <-- org $A6C383 + LDX #$DE1E ; previously LDX #$C3B8 + ;======== Insert 3 bytes ======== ; Escape timer initialization routine? -org $A6C3A7 <-- org $A6C383 - LDX $DE1E ; previously LDX $C3B8 - PHB ; previously PHB - PEA $AD00 ; previously PHK - PLB +org $A6C3AB <-- org $A6C387 + PEA $AD00 + PLB ; previously PHK org $A6C3AF <-- org $A6C388 -;======== Remove 152 bytes ======== -; Escape timer tilemap data? (NTSC only) +;======== Move 152 bytes to bank AD ======== +; Escape timer tilemaps and transfer entries org $A6C3DF <-- org $A6C3B8 - ; previously db ... +org $A6C3DF <-- org $A6C3D6 +org $A6C3DF <-- org $A6C3F4 org $A6C3DF <-- org $A6C450 ;======== Insert 58 bytes ======== -; Escape timer tile transfer entries? (PAL only) +; Zebes escape timer tile transfer entries org $A6C45A <-- org $A6C4CB - db ... + dw $0200 ; + dl $B0C000 ; + dw $7E00 ; + dw $0120 ; + dl $B0C200 ; + dw $7F00 ; + dw $01C0 ; + dl $B7DA00 ; + dw $1820 ; + dw $0200 ; + dl $B7DBC0 ; + dw $1900 ; + dw $0200 ; + dl $B7DDC0 ; + dw $1A00 ; + dw $0200 ; + dl $B7DFC0 ; + dw $1B00 ; + dw $0100 ; + dl $B7E1C0 ; + dw $1C00 ; + dw $0100 ; + dl $B7E3C0 ; + dw $1D00 ; + dw $0000 ; org $A6C494 <-- org $A6C4CB +; Zebes escape timer first tile transfer size +org $A6C4A2 <-- org $A6C4D9 + dw $01C0 ; previously dw $0200 + +; Zebes escape timer second tile transfer destination +org $A6C4AE <-- org $A6C4E5 + dw $7900 ; previously dw $7920 + +; Zebes escape timer third tile transfer destination +org $A6C4B5 <-- org $A6C4EC + dw $7A00 ; previously dw $7A20 + +; Zebes escape timer fourth tile transfer destination +org $A6C4BC <-- org $A6C4F3 + dw $7B00 ; previously dw $7B20 + +; Zebes escape timer fifth tile transfer destination +org $A6C4C3 <-- org $A6C4FA + dw $7C00 ; previously dw $7C20 + ;======== Insert 7 bytes ======== -; Escape timer tile transfer entries -org $A6C494 <-- org $A6C4CB - db ... +; Zebes escape timer sixth tile transfer +org $A6C4C5 <-- org $A6C4FC + dw $0100 ; + dl $B7E3C0 ; + dw $7D00 ; +org $A6C4CC <-- org $A6C4FC + +; Ceres escape timer first tile transfer size org $A6C4CE <-- org $A6C4FE + dw $01C0 ; previously dw $0200 + +; Ceres escape timer second tile transfer destination +org $A6C4DA <-- org $A6C50A + dw $1900 ; previously dw $1920 + +; Ceres escape timer third tile transfer destination +org $A6C4E1 <-- org $A6C511 + dw $1A00 ; previously dw $1A20 + +; Ceres escape timer fourth tile transfer destination +org $A6C4E8 <-- org $A6C518 + dw $1B00 ; previously dw $1B20 + +; Ceres escape timer fifth tile transfer destination +org $A6C4EF <-- org $A6C51F + dw $1C00 ; previously dw $1C20 ;======== Insert 7 bytes ======== -; Escape timer tile transfer entries -org $A6C4CE <-- org $A6C4FE - db ... -org $A6C50F <-- org $A6C538 +; Ceres escape timer sixth tile transfer +org $A6C4F1 <-- org $A6C521 + dw $0100 ; + dl $B7E3C0 ; + dw $1D00 ; +org $A6C4F8 <-- org $A6C521 ; Ceres Steam AI velocity? org $A6E8C2 <-- org $A6E8EB @@ -3389,9 +3815,9 @@ org $A7B6C7 <-- org $A7B696 ;======== Insert 3 bytes ======== ; Kraid X position org $A7B6CC <-- org $A7B69B - LDA $A938 ; previously STZ $12 - STA $12 ; previously LDA $A922 - LDA $A936 ; + LDA $A938 ; + STA $12 ; previously STZ $12 + LDA $A936 ; previously LDA $A922 org $A7B6D4 <-- org $A7B6A0 ; Kraid projectile velocities @@ -3405,7 +3831,7 @@ org $A7C8D7 <-- org $A7C8A3 ; Kraid timer org $A7C926 <-- org $A7C8F2 - LDA #$0064 ; previously LDA #$0078 + LDA #$0050 ; previously LDA #$0060 ; Phantoon velocities? org $A7CDA7 <-- org $A7CD73 @@ -3458,7 +3884,7 @@ org $A7E9C4 <-- org $A7E990 CMP #$0006 ; previously CMP #$0005 ; Dachora constants? -org $A7F4FD <-- org $A7F4C9 +org $A7F509 <-- org $A7F4D5 dw ... org $A7F511 <-- org $A7F4DD @@ -3699,7 +4125,7 @@ org $A8F401 <-- org $A8F3F9 ;======== Insert 7 bytes ======== ; Kihunter AI org $A8F41C <-- org $A8F414 - BNE $0B ; previously BNE $04 + BPL $0B ; previously BPL $04 LDA #$6666 ; STA $7E7806,X ; org $A8F425 <-- org $A8F416 @@ -3729,7 +4155,7 @@ org $A9B224 <-- org $A9B214 ; MB3 AI org $A9B22C <-- org $A9B21C LDA #$0000 ; - STA $17A9 ; + STA $179A ; STA $7EC09A ; LDA #$7FFF ; STA $7EC09C ; @@ -3740,9 +4166,9 @@ org $A9B23D <-- org $A9B21C org $A9B243 <-- org $A9B222 LDA #$0000 ; STA $7E7844 ; - LDA $A900 ; + LDA #$A900 ; STA $0605 ; - LDA $B257 ; + LDA #$B257 ; STA $0604 ; org $A9B256 <-- org $A9B222 @@ -3750,13 +4176,13 @@ org $A9B256 <-- org $A9B222 ; MB3 AI org $A9B257 <-- org $A9B223 LDY $0330 ; - LDA $0B0C ; - STA $000D,Y ; - LDA $B700 ; + LDA $0BC0 ; + STA $00D0,Y ; + LDA #$B700 ; STA $00D3,Y ; - LDA $DA00 ; + LDA #$DA00 ; STA $00D2,Y ; - LDA $1820 ; + LDA #$1820 ; STA $00D5,Y ; TYA ; CLC ; @@ -3846,7 +4272,7 @@ org $AA839F <-- org $AA838F org $AA8697 <-- org $AA8687 ; Torizo AI instruction lists (timing differences) -org $AAB897 <-- org $AAB887 +org $AAB889 <-- org $AAB879 db ... org $AAC21A <-- org $AAC20A @@ -3895,7 +4321,7 @@ org $AAC538 <-- org $AAC528 LDA #$003C ; previously LDA #$0048 ; Torizo AI instruction list (timing differences) -org $AAC9F2 <-- org $AAC9E2 +org $AAC9DB <-- org $AAC9CB db ... org $AACADE <-- org $AACACE @@ -3957,10 +4383,105 @@ org $ACEE00 ; Bank AD ;======================================================= -;======== Insert 388 bytes ======== -; Unknown (PAL only) +;======== Insert 30 bytes ======== +; Escape timer tilemap transfer entries org $ADDE00 - db ... + dw $002A + dl $ADDE78 + dw $5287 + dw $002A + dl $ADDEA2 + dw $52A7 + dw $001E + dl $ADDECC + dw $52CA + dw $001E + dl $ADDEEA + dw $52EA + dw $0000 +org $ADDE1E <-- org $ADDE00 + +;======== Start of 152 bytes from bank A6 ======== +; Escape timer tilemaps and transfer entries +org $ADDE1E <-- org $ADDE00 +org $ADDE1E <-- org $ADDE00 ($A6C3B8) + +; Escape timer tilemap transfer entries +org $ADDE1E <-- org $ADDE00 ($A6C3B8) + dw $002E ; previously dw $0018 + dl $ADDF08 ; previously dw $A6C3F4 + dw $5287 ; previously dw $528A + dw $002E ; previously dw $0018 + dl $ADDF36 ; previously dw $A6C40C + dw $52A7 ; previously dw $52AA + dw $002A ; previously dw $0016 + dl $ADDF64 ; previously dw $A6C424 + dw $52C7 ; previously dw $52CA + dw $002A ; previously dw $0016 + dl $ADDF8E ; previously dw $A6C43A + dw $52E7 ; previously dw $52EA +org $ADDE3A <-- org $ADDE00 ($A6C3D4) + +;======== Insert 30 bytes ======== +; Escape timer tilemap transfer entries +org $ADDE3C <-- org $ADDE00 ($A6C3D6) + dw $0026 + dl $ADDFB8 + dw $4A87 + dw $0026 + dl $ADDFDE + dw $4AA7 + dw $0026 + dl $ADE004 + dw $4AC7 + dw $0026 + dl $ADE02A + dw $4AE7 + dw $0000 +org $ADDE5A <-- org $ADDE00 ($A6C3D6) + +; Escape timer tilemap transfer entries +org $ADDE5A <-- org $ADDE00 ($A6C3D6) + dw $001A ; previously dw $0018 + dl $ADE050 ; previously dw $A6C3F4 + dw $4A8A ; previously dw $4A8A + dw $001A ; previously dw $0018 + dl $ADE06A ; previously dw $A6C40C + dw $4AAA ; previously dw $4AAA + dw $0024 ; previously dw $0016 + dl $ADE084 ; previously dw $A6C424 + dw $4AC8 ; previously dw $4ACA + dw $0024 ; previously dw $0016 + dl $ADE0A8 ; previously dw $A6C43A + dw $4AE8 ; previously dw $4AEA +org $ADDE76 <-- org $ADDE00 ($A6C3F2) + +;======== Insert 144 bytes ======== +; Escape timer tilemaps +org $ADDE78 <-- org $ADDE00 ($A6C3F4) + dw ... +org $ADDF08 <-- org $ADDE00 ($A6C3F4) + +;======== Insert 84 bytes ======== +; Escape timer tilemaps +org $ADDF08 <-- org $ADDE00 ($A6C3F4) + dw ... +org $ADDFB8 <-- org $ADDE00 ($A6C450) + +;======== End of 152 bytes from bank A6 ======== +org $ADDFB8 <-- org $ADDE00 ($A6C450) +org $ADDFB8 <-- org $ADDE00 + +;======== Insert 152 bytes ======== +; Escape timer tilemaps +org $ADDFB8 <-- org $ADDE00 + dw ... +org $ADE050 <-- org $ADDE00 + +;======== Insert 124 bytes ======== +; Escape timer tilemaps +org $ADE050 <-- org $ADDE00 + dw ... org $ADE0CC <-- org $ADDE00 ; Freespace @@ -4023,11 +4544,10 @@ org $B2EFDF <-- org $B2EFCF ;======== Remove 5 bytes ======== ; Wall space pirate AI org $B2EFF9 <-- org $B2EFE9 - LDA $0466 ; previously LDA $7E8004,X - STA $7E8004,X ; previously CLC + LDA #$0466 ; previously LDA $7E8004,X + ; previously CLC ; previously ADC #$0002 - ; previously STA $7E8004,X -org $B2F000 <-- org $B2EFF5 +org $B2EFFC <-- org $B2EFF1 ;======== Insert 63 bytes ======== ; Wall space pirate AI @@ -4037,7 +4557,7 @@ org $B2F08D <-- org $B2F082 XBA ; CLC ; ADC $7E8006,X ; - STA $7E8006 ; + STA $7E8006,X ; BCC $20 ; LDA $7E8004,X ; AND #$FF00 ; @@ -4063,12 +4583,12 @@ org $B2F0D0 <-- org $B2F086 ;======== Insert 47 bytes ======== ; Wall space pirate AI org $B2F160 <-- org $B2F116 - LDA $7E8004,X ; LDA $0FB2,X - AND #$00FF ; CLS - XBA ; ADC $7E8004,X + LDA $7E8004,X ; previously LDA $0FB2,X + AND #$00FF ; previously CLC + XBA ; previously ADC $7E8004,X CLC ; ADC $7E8006,X ; - STA $7E8006 ; + STA $7E8006,X ; BCC $18 ; LDA $7E8004,X ; AND #$FF00 ; @@ -4077,7 +4597,7 @@ org $B2F160 <-- org $B2F116 ADC $0FB2,X ; AND #$00FF ; STA $0FB2,X ; - CMP $7E8000,X ; + CMP $7E8002,X ; BEQ $18 ; LDA $7E8004,X ; AND #$FF00 ; @@ -4292,10 +4812,37 @@ org $B6F200 ; Bank B7 ;======================================================= -;======== Insert 704 bytes ======== -; Tiles +;======== Remove 64 bytes ======== +; Escape Timer first set of tiles org $B7DA00 db ... +org $B7DBC0 <-- org $B7DC00 + +; Escape Timer second set of tiles +org $B7DBC0 <-- org $B7DC00 + db ... +org $B7DDC0 <-- org $B7DE00 + +; Escape Timer third set of tiles +org $B7DDC0 <-- org $B7DE00 + db ... +org $B7DFC0 <-- org $B7E000 + +; Escape Timer fourth set of tiles +org $B7DFC0 <-- org $B7E000 + db ... +org $B7E1C0 <-- org $B7E200 + +;======== Insert 256 bytes ======== +; Escape Timer fifth set of tiles +org $B7E1C0 <-- org $B7E200 + db ... +org $B7E3C0 <-- org $B7E300 + +;======== Insert 512 bytes ======== +; Escape Timer sixth set of tiles +org $B7E3C0 <-- org $B7E300 + db ... org $B7E5C0 <-- org $B7E300 ; Freespace diff --git a/resources/ntsc_to_pal_raw_pseudo_patch.txt b/resources/ntsc_to_pal_raw_pseudo_patch.txt index a3eaaf39..d7722a9c 100644 --- a/resources/ntsc_to_pal_raw_pseudo_patch.txt +++ b/resources/ntsc_to_pal_raw_pseudo_patch.txt @@ -168,7 +168,7 @@ DDFFFF,chained 82EE28,replace,1,28 82EE34,replace,1,28 82EED2,replace,2,80c0 ; bank 8B, originally 1bc1 -82EEE0,replace,1,65 +82EEE0,replace,2,65a3 ; bank 8B, originally 95a3 82EF47,replace,1,32 82EF4C,replace,1,2f 82EF4D,remove,5 @@ -343,11 +343,13 @@ DDFFFF,chained 84D4D8,replace,2,27d5 ; bank 84, originally 21d5 84D4E8,insert,6,ca863000d198 84D4F0,replace,2,f8d4 ; bank 84, originally f2d4 -84D4F8,ignore,47 84D4FA,replace,2,ecd5 ; bank 84, originally e6d5 84D4FC,replace,2,32d5 ; bank 84, originally 2cd5 +84D4FE,replace,1,28 +84D50A,replace,1,2b 84D50D,replace,2,49d5 ; bank 84, originally 43d5 84D50F,replace,2,3cd5 ; bank 84, originally 36d5 +84D511,replace,1,50 84D519,replace,2,2bd5 ; bank 84, originally 25d5 84D51B,replace,2,f4d5 ; bank 84, originally eed5 84D527,replace,2,2bd5 ; bank 84, originally 25d5 @@ -1849,7 +1851,7 @@ DDFFFF,chained 86C9B2,replace,2,d0c9 ; bank 86, originally 94c9 86C9BC,replace,2,eec9 ; bank 86, originally b2c9 86C9C2,replace,2,f0c9 ; bank 86, originally b4c9 -86C9CE,ignore,64 +86C9EE,ignore,32 86CA57,replace,2,45e5 ; bank 86, originally 09e5 86CA80,replace,2,5eca ; bank 86, originally 22ca 86CAA4,replace,2,82ca ; bank 86, originally 46ca @@ -2582,12 +2584,10 @@ DDFFFF,chained 8B94D5,replace,2,e094 ; bank 8B, originally 3795 8B94F8,replace,2,ed94 ; bank 8B, originally 4495 8B9529,replace,2,2e95 ; bank 8B, originally 8595 -8B95D8,insert,14,08c2302cf1191020a206008eed19 -8B95E6,insert,15,bdcd19f006202996aeed19caca10ee -8B95F5,insert,13,2cf319100320a08720d3872860 -8B9609,replace,1,1d -8B9616,replace,2,2996 ; bank 8B, originally 5996 -8B9627,remove,3 +8B95EC,replace,2,2996 ; bank 8B, originally 5996 +8B9602,insert,14,08c2302cf119101da206008eed19 +8B9610,insert,15,bdcd19f006202996aeed19caca10ee +8B961F,insert,10,2cf319100320a0872860 8B9647,replace,2,3c96 ; bank 8B, originally 6c96 8B968C,replace,2,9196 ; bank 8B, originally c196 8B96A2,replace,2,ad96 ; bank 8B, originally dd96 @@ -2939,11 +2939,13 @@ DDFFFF,chained 8BAD6F,replace,1,16 8BAD78,replace,2,d8cd ; bank 8B, originally 73ce 8BAD7B,replace,2,3393 ; bank 8B, originally 8a93 -8BAD7E,remove,8 -8BAD7F,remove,1 +8BAD7E,move,10 +8BAD7E,insert,1,ab 8BAD80,replace,2,52ae ; bank 8B, originally 6caf 8BAD86,insert,14,8bf4008babab5aa0d8cd2033937a -8BAD94,insert,10,5aa084d3208d947aab60 +8BAD94,place,10 +8BAD96,replace,2,84d3 ; bank 8B, originally 0dd4 +8BAD99,replace,2,8d94 ; bank 8B, originally e494 8BADBC,replace,2,98f3 ; bank 91, originally 33f4 8BADC0,replace,2,6dfa ; bank 91, originally 08fb 8BADF7,replace,2,bacd ; bank 8B, originally 55ce @@ -2971,11 +2973,13 @@ DDFFFF,chained 8BAF74,replace,1,16 8BAF7D,replace,2,d8cd ; bank 8B, originally 73ce 8BAF80,replace,2,3393 ; bank 8B, originally 8a93 -8BAF83,remove,8 -8BAF84,remove,1 +8BAF83,move,10 +8BAF83,insert,1,ab 8BAF85,replace,2,d1af ; bank 8B, originally f2b0 8BAF8B,insert,14,8bf4008babab5aa0d8cd2033937a -8BAF99,insert,10,5aa090d3208d947aab60 +8BAF99,place,10 +8BAF9B,replace,2,90d3 ; bank 8B, originally 19d4 +8BAF9E,replace,2,8d94 ; bank 8B, originally e494 8BAFA6,remove,5 8BAFAE,replace,2,96d3 ; bank 8B, originally 1fd4 8BAFB1,replace,2,8d94 ; bank 8B, originally e494 @@ -3000,11 +3004,13 @@ DDFFFF,chained 8BB094,replace,1,16 8BB09D,replace,2,d8cd ; bank 8B, originally 73ce 8BB0A0,replace,2,3393 ; bank 8B, originally 8a93 -8BB0A3,remove,8 -8BB0A4,remove,1 +8BB0A3,move,10 +8BB0A3,insert,1,ab 8BB0A5,replace,2,c3b0 ; bank 8B, originally dab1 8BB0AB,insert,14,8bf4008babab5aa0d8cd2033937a -8BB0B9,insert,10,5aa0a8d3208d947aab60 +8BB0B9,place,10 +8BB0BB,replace,2,a8d3 ; bank 8B, originally 31d4 +8BB0BE,replace,2,8d94 ; bank 8B, originally e494 8BB0C4,replace,2,cfb3 ; bank 8B, originally 10b7 8BB0E0,replace,2,f0b0 ; bank 8B, originally 07b2 8BB0E6,replace,2,6c95 ; bank 8B, originally c395 @@ -3119,46 +3125,91 @@ DDFFFF,chained 8BB7D4,replace,2,e3b7 ; bank 8B, originally 24bb 8BB7EF,replace,2,b8cd ; bank 8B, originally 53ce 8BB95F,place,678 -8BB95F,remove,50 -8BB960,ignore,49 -8BB991,filler,14 +8BB95F,remove,46 +8BB95F,remove,4 +8BB961,remove,4 +8BB962,replace,2,bfe7 ; bank 8B, originally 0be4 +8BB96A,replace,2,c1e7 ; bank 8B, originally 0de4 +8BB972,replace,2,c3e7 ; bank 8B, originally 0fe4 +8BB97A,replace,2,75a7 ; bank 8B, originally 6aa8 +8BB97C,replace,15,ade209d00fa900a08500a900018512 +8BB98B,insert,18,20238d800da900a88500a90001851220238d 8BB9A0,replace,2,6195 ; bank 8B, originally b895 8BB9A4,insert,16,a58ff028a900d39da119a901009da919 8BB9B4,insert,14,a982939da5192075a7a900a18500 8BB9C2,insert,15,a90001851220238da93c008da31b60 8BB9D1,insert,11,2261958ba99ead8d511f60 -8BB9DC,ignore,49 -8BBA0D,filler,14 -8BBA1B,ignore,45 +8BB9DD,remove,4 +8BB9DE,replace,2,bfe7 ; bank 8B, originally 0be4 +8BB9E6,replace,2,c1e7 ; bank 8B, originally 0de4 +8BB9EE,replace,2,c3e7 ; bank 8B, originally 0fe4 +8BB9F6,replace,2,75a7 ; bank 8B, originally 6aa8 +8BB9F8,replace,15,ade209d00fa940a28500a900018512 +8BBA07,insert,18,20238d800da940aa8500a90001851220238d +8BBA1E,replace,1,28 8BBA20,replace,2,16d3 ; bank 8B, originally a5d3 8BBA2C,replace,2,8293 ; bank 8B, originally d993 -8BBA48,remove,6 +8BBA31,remove,4 +8BBA32,replace,2,75a7 ; bank 8B, originally 6aa8 +8BBA34,replace,13,a940a38500a90001851220238d +8BBA41,remove,2 8BBA49,replace,2,6195 ; bank 8B, originally b895 8BBA4D,replace,2,52ae ; bank 8B, originally 6caf -8BBA53,ignore,43 -8BBA7E,filler,20 -8BBA92,ignore,45 +8BBA54,remove,4 +8BBA55,replace,2,bfe7 ; bank 8B, originally 0be4 +8BBA5D,replace,2,c1e7 ; bank 8B, originally 0de4 +8BBA65,replace,2,c3e7 ; bank 8B, originally 0fe4 +8BBA6D,replace,2,75a7 ; bank 8B, originally 6aa8 +8BBA6F,replace,9,ade209d00fa980a485 +8BBA78,insert,11,00a90001851220238d800d +8BBA83,insert,13,a980ac8500a90001851220238d 8BBA97,replace,2,2cd3 ; bank 8B, originally bbd3 8BBAA3,replace,2,8293 ; bank 8B, originally d993 +8BBAA8,remove,4 +8BBAA9,replace,2,75a7 ; bank 8B, originally 6aa8 +8BBAAB,replace,9,a980a58500a9800085 +8BBAB4,insert,4,1220238d 8BBAC0,replace,2,6195 ; bank 8B, originally b895 8BBAC4,replace,2,d1af ; bank 8B, originally f2b0 -8BBACA,ignore,49 -8BBAFB,filler,14 -8BBB09,ignore,51 +8BBACB,remove,4 +8BBACC,replace,2,bfe7 ; bank 8B, originally 0be4 +8BBAD4,replace,2,c1e7 ; bank 8B, originally 0de4 +8BBADC,replace,2,c3e7 ; bank 8B, originally 0fe4 +8BBAE4,replace,2,75a7 ; bank 8B, originally 6aa8 +8BBAE6,replace,15,ade209d00fa980a68500a900018512 +8BBAF5,insert,18,20238d800da980ae8500a90001851220238d +8BBB0C,replace,1,49 8BBB0E,replace,2,42d3 ; bank 8B, originally d1d3 8BBB1A,replace,2,8293 ; bank 8B, originally d993 -8BBB3C,filler,27 +8BBB1F,remove,4 +8BBB20,replace,2,75a7 ; bank 8B, originally 6aa8 +8BBB22,replace,15,ade209d00fa980a78500a980008512 +8BBB31,insert,5,20238d801a +8BBB36,insert,13,a980af8500a98000851220238d +8BBB43,insert,13,a900b88500a98000851220578d 8BBB58,replace,2,6195 ; bank 8B, originally b895 8BBB5C,replace,2,02b0 ; bank 8B, originally 23b1 -8BBB62,ignore,43 -8BBB8D,filler,20 -8BBBA1,ignore,45 +8BBB63,remove,4 +8BBB64,replace,2,bfe7 ; bank 8B, originally 0be4 +8BBB6C,replace,2,c1e7 ; bank 8B, originally 0de4 +8BBB74,replace,2,c3e7 ; bank 8B, originally 0fe4 +8BBB7C,replace,2,75a7 ; bank 8B, originally 6aa8 +8BBB7E,replace,9,ade209d00fa9c0b085 +8BBB87,insert,11,00a90001851220238d800d +8BBB92,insert,13,a9c0b88500a90001851220238d 8BBBA6,replace,2,58d3 ; bank 8B, originally e7d3 8BBBB2,replace,2,8293 ; bank 8B, originally d993 +8BBBB7,remove,4 +8BBBB8,replace,2,75a7 ; bank 8B, originally 6aa8 +8BBBBA,replace,9,a9c0b18500a9000185 +8BBBC3,insert,4,1220238d 8BBBCF,replace,2,6195 ; bank 8B, originally b895 8BBBD3,replace,2,c3b0 ; bank 8B, originally dab1 -8BBBD9,ignore,19 -8BBBEC,filler,20 +8BBBDA,remove,4 +8BBBDB,replace,2,75a7 ; bank 8B, originally 6aa8 +8BBBDD,replace,9,ade209d00fa900b385 +8BBBE6,insert,11,00a90001851220238d800d +8BBBF1,insert,13,a900bb8500a90001851220238d 8BBC01,replace,2,6195 ; bank 8B, originally b895 8BBC09,replace,2,8393 ; bank 8B, originally da93 8BBC13,replace,2,9de9 ; bank 8C, originally e9e5 @@ -3702,7 +3753,7 @@ DDFFFF,chained 8BD3E0,replace,2,6997 ; bank 8B, originally 9997 8BD3E3,replace,2,9ae7 ; bank 8B, originally 12e8 8BD3EF,replace,2,7be4 ; bank 8B, originally 04e5 -8BD3F4,replace,2,0296 ; bank 8B, originally 2f96 +8BD3F4,replace,2,0296 8BD41D,replace,2,9df1 ; bank 8C, originally e9ed 8BD431,replace,2,5dbb ; bank 98, originally d6bc 8BD442,replace,2,f6a3 ; bank 99, originally 6fa5 @@ -3958,7 +4009,7 @@ DDFFFF,chained 8BE8E7,replace,2,2fe9 ; bank 8B, originally a7e9 8BE8FE,replace,2,85e8 ; bank 8B, originally fde8 8BE92D,replace,2,f3e8 ; bank 8B, originally 6be9 -8BE92F,ignore,1522 +8BEA97,ignore,362 8BEA97,replace,2,7f94 ; bank 8B, originally d694 8BEA9D,replace,2,d2a3 ; bank 8C, originally 96a3 8BEAA1,replace,2,e8a3 ; bank 8C, originally aca3 @@ -4131,6 +4182,7 @@ DDFFFF,chained 8BECAF,replace,2,7fa2 ; bank 8C, originally 43a2 8BECB1,replace,2,6594 ; bank 8B, originally bc94 8BECB3,replace,2,adec ; bank 8B, originally 25ed +8BECB5,ignore,366 8BECB7,replace,2,33a0 ; bank 8C, originally f79f 8BECBB,replace,2,c1a0 ; bank 8C, originally 85a0 8BECBF,replace,2,f0a0 ; bank 8C, originally b4a0 @@ -6015,18 +6067,15 @@ DDFFFF,chained 9193FE,ignore,6 919406,ignore,156 9194A2,filler,36 -9194C8,ignore,84 91951E,ignore,90 91957A,ignore,156 919618,ignore,222 9196F6,filler,6 9196FE,ignore,354 -919862,ignore,270 919972,ignore,24 91998C,ignore,186 919A46,remove,108 919A48,ignore,486 -919C30,ignore,204 919CFE,ignore,6 919D06,ignore,162 919DD8,replace,2,ee90 ; bank 91, originally 5491 @@ -6552,7 +6601,7 @@ DDFFFF,chained 91B15C,replace,2,8bb4 ; bank 91, originally 33b5 91B15E,replace,2,8eb4 ; bank 91, originally 36b5 91B160,replace,2,91b4 ; bank 91, originally 39b5 -91B162,ignore,1055 +91B162,ignore,1045 91B529,replace,2,2bb5 ; bank 91, originally d3b5 91B536,replace,2,40b5 ; bank 91, originally e8b5 91B538,replace,2,4bb5 ; bank 91, originally f3b5 @@ -7647,12 +7696,2405 @@ A0C950,replace,2,80bb ; bank A0, originally 70bb A0C9CF,ignore,520 A0CBD7,filler,16 A0CBE7,ignore,760 -A0CEDF,ignore,10516 +A0CEE1,replace,2,9786 ; bank A2, originally 8786 +A0CEF1,replace,2,2c87 ; bank A2, originally 1c87 +A0CEF7,replace,2,ac87 ; bank A2, originally 9c87 +A0CF21,replace,2,2289 ; bank A2, originally 1289 +A0CF31,replace,2,bd89 ; bank A2, originally ad89 +A0CF37,replace,2,008a ; bank A2, originally f089 +A0CF61,replace,2,708b ; bank A2, originally 608b +A0CF71,replace,2,7c8d ; bank A2, originally 6c8d +A0CF77,replace,2,e28d ; bank A2, originally d28d +A0CF8F,replace,2,9192 ; bank A2, originally 8192 +A0CFA1,replace,2,708b ; bank A2, originally 608b +A0CFB1,replace,2,ad8d ; bank A2, originally 9d8d +A0CFB7,replace,2,3e91 ; bank A2, originally 2e91 +A0CFCF,replace,2,af92 ; bank A2, originally 9f92 +A0CFD1,replace,2,1f93 ; bank A2, originally 0f93 +A0CFE1,replace,2,9d99 ; bank A2, originally 8d99 +A0CFF1,replace,2,4f9a ; bank A2, originally 3f9a +A0CFF7,replace,2,8d9a ; bank A2, originally 7d9a +A0D021,replace,2,829e ; bank A2, originally 6a9e +A0D031,replace,2,609f ; bank A2, originally 489f +A0D037,replace,2,cb9f ; bank A2, originally b39f +A0D061,replace,2,a3a3 ; bank A2, originally 8ba3 +A0D071,replace,2,11a4 ; bank A2, originally f9a3 +A0D077,replace,2,96a4 ; bank A2, originally 7ea4 +A0D091,replace,2,91a5 ; bank A2, originally 79a5 +A0D0A1,replace,2,b6a5 ; bank A2, originally 9ea5 +A0D0B1,replace,2,5ca6 ; bank A2, originally 44a6 +A0D0B7,replace,2,71a7 ; bank A2, originally 59a7 +A0D0E1,replace,2,b6a5 ; bank A2, originally 9ea5 +A0D0F1,replace,2,eaa6 ; bank A2, originally d2a6 +A0D121,replace,2,0bb0 ; bank A2, originally f3af +A0D131,replace,2,83b0 ; bank A2, originally 6bb0 +A0D137,replace,2,37b1 ; bank A2, originally 1fb1 +A0D149,replace,2,2bb0 ; bank A2, originally 13b0 +A0D153,replace,2,1cb2 ; bank A2, originally 04b2 +A0D161,replace,2,24b2 ; bank A2, originally 0cb2 +A0D171,replace,2,83b0 ; bank A2, originally 6bb0 +A0D177,replace,2,37b1 ; bank A2, originally 1fb1 +A0D189,replace,2,44b2 ; bank A2, originally 2cb2 +A0D193,replace,2,74b2 ; bank A2, originally 5cb2 +A0D1A1,replace,2,7cb2 ; bank A2, originally 64b2 +A0D1B1,replace,2,83b0 ; bank A2, originally 6bb0 +A0D1B7,replace,2,37b1 ; bank A2, originally 1fb1 +A0D1C9,replace,2,9cb2 ; bank A2, originally 84b2 +A0D1D3,replace,2,ccb2 ; bank A2, originally b4b2 +A0D1E1,replace,2,d4b2 ; bank A2, originally bcb2 +A0D1F1,replace,2,f8b3 ; bank A2, originally e0b3 +A0D1F7,replace,2,27b4 ; bank A2, originally 0fb4 +A0D209,replace,2,f4b2 ; bank A2, originally dcb2 +A0D221,replace,2,73ba ; bank A2, originally 5bba +A0D231,replace,2,88b5 ; bank A2, originally 70b5 +A0D237,replace,2,a7b5 ; bank A2, originally 8fb5 +A0D261,replace,2,73ba ; bank A2, originally 5bba +A0D271,replace,2,1ab6 ; bank A2, originally 02b6 +A0D277,replace,2,dcb7 ; bank A2, originally c4b7 +A0D27D,replace,2,41b9 ; bank A2, originally 29b9 +A0D287,replace,2,6bb9 ; bank A2, originally 53b9 +A0D28F,replace,2,5fb9 ; bank A2, originally 47b9 +A0D291,replace,2,65b9 ; bank A2, originally 4db9 +A0D2A1,replace,2,93ba ; bank A2, originally 7bba +A0D2B1,replace,2,e5bb ; bank A2, originally cdbb +A0D2B7,replace,2,fbbb ; bank A2, originally e3bb +A0D2E1,replace,2,34be ; bank A2, originally 1cbe +A0D2F1,replace,2,b1be ; bank A2, originally 99be +A0D2F7,replace,2,eabe ; bank A2, originally d2be +A0D321,replace,2,e9c0 ; bank A2, originally d1c0 +A0D331,replace,2,5ac2 ; bank A2, originally 42c2 +A0D337,replace,2,8fc2 ; bank A2, originally 77c2 +A0D361,replace,2,12c6 ; bank A2, originally fac5 +A0D371,replace,2,0bc7 ; bank A2, originally f3c6 +A0D377,replace,2,3cc7 ; bank A2, originally 24c7 +A0D3A1,replace,2,43ca ; bank A2, originally 2bca +A0D3B1,replace,2,eccc ; bank A2, originally d4cc +A0D3B7,replace,2,2bcd ; bank A2, originally 13cd +A0D3CF,replace,2,a4d3 ; bank A2, originally 8cd3 +A0D3D1,replace,2,ccd3 ; bank A2, originally b4d3 +A0D3E1,replace,2,24d8 ; bank A2, originally 0cd8 +A0D3F1,replace,2,8edf ; bank A2, originally 76df +A0D3F7,replace,2,46e0 ; bank A2, originally 2ee0 +A0D421,replace,2,93e1 ; bank A2, originally 7be1 +A0D431,replace,2,ebe1 ; bank A2, originally d3e1 +A0D437,replace,2,39e2 ; bank A2, originally 21e2 +A0D451,replace,2,c1e3 ; bank A2, originally a9e3 +A0D461,replace,2,d8e2 ; bank A2, originally c0e2 +A0D471,replace,2,30e3 ; bank A2, originally 18e3 +A0D477,replace,2,6be3 ; bank A2, originally 53e3 +A0D489,replace,2,8fe4 ; bank A2, originally 77e4 +A0D491,replace,2,c1e3 ; bank A2, originally a9e3 +A0D4A1,replace,2,6fe4 ; bank A2, originally 57e4 +A0D4B1,replace,2,b7e4 ; bank A2, originally 9fe4 +A0D4B7,replace,2,f2e4 ; bank A2, originally dae4 +A0D4C9,replace,2,8fe4 ; bank A2, originally 77e4 +A0D4D3,replace,2,87e5 ; bank A2, originally 6fe5 +A0D4E1,replace,2,93e5 ; bank A2, originally 7be5 +A0D4F1,replace,2,1ee6 ; bank A2, originally 06e6 +A0D4F7,replace,2,66e6 ; bank A2, originally 4ee6 +A0D507,replace,2,ece7 ; bank A2, originally d4e7 +A0D50F,replace,2,e0e7 ; bank A2, originally c8e7 +A0D511,replace,2,e6e7 ; bank A2, originally cee7 +A0D521,replace,2,90e9 ; bank A2, originally 78e9 +A0D531,replace,2,f2e9 ; bank A2, originally dae9 +A0D537,replace,2,ceea ; bank A2, originally b6ea +A0D561,replace,2,90e9 ; bank A2, originally 78e9 +A0D571,replace,2,2aee ; bank A2, originally 12ee +A0D577,replace,2,e9ee ; bank A2, originally d1ee +A0D587,replace,2,cef0 ; bank A2, originally b6f0 +A0D58F,replace,2,b5f0 ; bank A2, originally 9df0 +A0D591,replace,2,baf0 ; bank A2, originally a2f0 +A0D5A1,replace,2,90e9 ; bank A2, originally 78e9 +A0D5B1,replace,2,29f1 ; bank A2, originally 11f1 +A0D5B7,replace,2,f6f1 ; bank A2, originally def1 +A0D5C7,replace,2,32f4 ; bank A2, originally 1af4 +A0D5CF,replace,2,f0f3 ; bank A2, originally d8f3 +A0D5D1,replace,2,26f4 ; bank A2, originally 0ef4 +A0D5E1,replace,2,90e9 ; bank A2, originally 78e9 +A0D5F1,replace,2,2aee ; bank A2, originally 12ee +A0D5F7,replace,2,e9ee ; bank A2, originally d1ee +A0D607,replace,2,cef0 ; bank A2, originally b6f0 +A0D60F,replace,2,b5f0 ; bank A2, originally 9df0 +A0D611,replace,2,c2f0 ; bank A2, originally aaf0 +A0D621,replace,2,dfed ; bank A2, originally c7ed +A0D631,replace,2,1dee ; bank A2, originally 05ee +A0D637,replace,2,e9ee ; bank A2, originally d1ee +A0D647,replace,2,cef0 ; bank A2, originally b6f0 +A0D64F,replace,2,b5f0 ; bank A2, originally 9df0 +A0D651,replace,2,baf0 ; bank A2, originally a2f0 +A0D661,replace,2,9786 ; bank A3, originally 8786 +A0D671,replace,2,fd86 ; bank A3, originally ed86 +A0D677,replace,2,5c87 ; bank A3, originally 4c87 +A0D6A1,replace,2,0089 ; bank A3, originally f088 +A0D6B1,replace,2,7089 ; bank A3, originally 6089 +A0D6B7,replace,2,8989 ; bank A3, originally 7989 +A0D6D1,replace,2,1f8b ; bank A3, originally 0f8b +A0D6E1,replace,2,1f8c ; bank A3, originally 0f8c +A0D6F1,replace,2,3d8d ; bank A3, originally 2d8d +A0D6F7,replace,2,fe8d ; bank A3, originally ee8d +A0D707,replace,2,938e ; bank A3, originally 838e +A0D70F,replace,2,7b8e ; bank A3, originally 6b8e +A0D711,replace,2,998e ; bank A3, originally 898e +A0D721,replace,2,1a90 ; bank A3, originally 0a90 +A0D731,replace,2,c590 ; bank A3, originally b590 +A0D737,replace,2,3b91 ; bank A3, originally 2b91 +A0D753,replace,2,ba94 ; bank A3, originally aa94 +A0D771,replace,2,f694 ; bank A3, originally e694 +A0D777,replace,2,3a95 ; bank A3, originally 2a95 +A0D779,replace,2,3a95 ; bank A3, originally 2a95 +A0D77D,replace,2,3a95 ; bank A3, originally 2a95 +A0D7A1,replace,2,6b96 ; bank A3, originally 5b96 +A0D7B1,replace,2,f396 ; bank A3, originally e396 +A0D7B7,replace,2,dee6 ; bank A3, originally c2e6 +A0D7E1,replace,2,1b98 ; bank A3, originally 0b98 +A0D7F1,replace,2,4b99 ; bank A3, originally 3b99 +A0D7F7,replace,2,dee6 ; bank A3, originally c2e6 +A0D821,replace,2,8b9b ; bank A3, originally 7b9b +A0D831,replace,2,ca9c ; bank A3, originally ba9c +A0D837,replace,2,269d ; bank A3, originally 169d +A0D84F,replace,2,179f ; bank A3, originally 079f +A0D851,replace,2,189f ; bank A3, originally 089f +A0D861,replace,2,ab9b ; bank A3, originally 9b9b +A0D871,replace,2,af9c ; bank A3, originally 9f9c +A0D877,replace,2,269d ; bank A3, originally 169d +A0D88F,replace,2,179f ; bank A3, originally 079f +A0D8A1,replace,2,61a0 ; bank A3, originally 51a0 +A0D8B1,replace,2,5da1 ; bank A3, originally 4da1 +A0D8B7,replace,2,e0a2 ; bank A3, originally d0a2 +A0D8E1,replace,2,61a0 ; bank A3, originally 51a0 +A0D8F1,replace,2,5da1 ; bank A3, originally 4da1 +A0D8F7,replace,2,e0a2 ; bank A3, originally d0a2 +A0D921,replace,2,35a7 ; bank A3, originally 25a7 +A0D931,replace,2,8da7 ; bank A3, originally 7da7 +A0D937,replace,2,a0a7 ; bank A3, originally 90a7 +A0D94F,replace,2,6fa9 ; bank A3, originally 53a9 +A0D951,replace,2,c4a9 ; bank A3, originally a8a9 +A0D961,replace,2,64aa ; bank A3, originally 48aa +A0D971,replace,2,25ab ; bank A3, originally 09ab +A0D977,replace,2,ebab ; bank A3, originally cfab +A0D9A1,replace,2,a1af ; bank A3, originally 85af +A0D9B1,replace,2,25ab ; bank A3, originally 09ab +A0D9B7,replace,2,ebab ; bank A3, originally cfab +A0D9E1,replace,2,a1b0 ; bank A3, originally 85b0 +A0D9F1,replace,2,25ab ; bank A3, originally 09ab +A0D9F7,replace,2,ebab ; bank A3, originally cfab +A0DA21,replace,2,c1b0 ; bank A3, originally a5b0 +A0DA31,replace,2,25ab ; bank A3, originally 09ab +A0DA37,replace,2,ebab ; bank A3, originally cfab +A0DA61,replace,2,33b2 ; bank A3, originally 17b2 +A0DA71,replace,2,25ab ; bank A3, originally 09ab +A0DA77,replace,2,ebab ; bank A3, originally cfab +A0DAA1,replace,2,bdb3 ; bank A3, originally a1b3 +A0DAB1,replace,2,66b4 ; bank A3, originally 4ab4 +A0DAB7,replace,2,98b4 ; bank A3, originally 7cb4 +A0DAE1,replace,2,cfb5 ; bank A3, originally b3b5 +A0DAF1,replace,2,8bb6 ; bank A3, originally 6fb6 +A0DAF7,replace,2,dee6 ; bank A3, originally c2e6 +A0DB09,replace,2,efb5 ; bank A3, originally d3b5 +A0DB61,replace,2,1eb7 ; bank A3, originally 02b7 +A0DB71,replace,2,cfba ; bank A3, originally b3ba +A0DB77,replace,2,41bb ; bank A3, originally 25bb +A0DB91,replace,2,19bf ; bank A3, originally fdbe +A0DBA1,replace,2,5ac6 ; bank A3, originally 3ec6 +A0DBB1,replace,2,cac6 ; bank A3, originally aec6 +A0DBB7,replace,2,e3c6 ; bank A3, originally c7c6 +A0DBD1,replace,2,11c8 ; bank A3, originally f5c7 +A0DBE1,replace,2,c2c8 ; bank A3, originally a6c8 +A0DBF1,replace,2,fecd ; bank A3, originally e2cd +A0DBF7,replace,2,80ce ; bank A3, originally 64ce +A0DC0F,replace,2,ccd3 ; bank A3, originally b0d3 +A0DC11,replace,2,85d4 ; bank A3, originally 69d4 +A0DC21,replace,2,b8da ; bank A3, originally 9cda +A0DC31,replace,2,efdb ; bank A3, originally d3db +A0DC37,replace,2,37dc ; bank A3, originally 1bdc +A0DC51,replace,2,38dc ; bank A3, originally 1cdc +A0DC61,replace,2,bedf ; bank A3, originally a2df +A0DC71,replace,2,5fe0 ; bank A3, originally 43e0 +A0DC77,replace,2,a7e0 ; bank A3, originally 8be0 +A0DCA1,replace,2,58e2 ; bank A3, originally 3ce2 +A0DCB1,replace,2,f0e2 ; bank A3, originally d4e2 +A0DCB7,replace,2,dee6 ; bank A3, originally c2e6 +A0DCE1,replace,2,98e5 ; bank A3, originally 7ce5 +A0DCF1,replace,2,b8e5 ; bank A3, originally 9ce5 +A0DCF7,replace,2,dee6 ; bank A3, originally c2e6 +A0DD21,replace,2,cce5 ; bank A3, originally b0e5 +A0DD31,replace,2,85e6 ; bank A3, originally 69e6 +A0DD37,replace,2,dee6 ; bank A3, originally c2e6 +A0DD61,replace,2,ece5 ; bank A3, originally d0e5 +A0DD71,replace,2,85e6 ; bank A3, originally 69e6 +A0DD77,replace,2,dee6 ; bank A3, originally c2e6 +A0DDA1,replace,2,cbe9 ; bank A3, originally afe9 +A0DDB1,replace,2,6bea ; bank A3, originally 4fea +A0DDB7,replace,2,b4eb ; bank A3, originally 98eb +A0DDBB,replace,2,4feb ; bank A3, originally 33eb +A0DDBD,replace,2,02eb ; bank A3, originally e6ea +A0DDC7,replace,2,5ef0 ; bank A3, originally 42f0 +A0DDCF,replace,2,07ee ; bank A3, originally ebed +A0DDD1,replace,2,23ef ; bank A3, originally 07ef +A0DDE1,replace,2,96b8 ; bank A4, originally 7db8 +A0DDF1,replace,2,6a8a ; bank A4, originally 5a8a +A0DDF7,replace,2,148c ; bank A4, originally 048c +A0DDFB,replace,2,9786 ; bank A4, originally 8786 +A0DE07,replace,2,abb9 ; bank A4, originally 92b9 +A0DE0F,replace,2,69b9 ; bank A4, originally 50b9 +A0DE21,replace,2,96b8 ; bank A4, originally 7db8 +A0DE31,replace,2,93f6 ; bank A4, originally 7af6 +A0DE37,replace,2,d4f6 ; bank A4, originally bbf6 +A0DE61,replace,2,03a2 ; bank A5, originally f7a1 +A0DE71,replace,2,9786 ; bank A5, originally 8786 +A0DE77,replace,2,0c87 ; bank A5, originally fc86 +A0DE7B,replace,2,5d95 ; bank A5, originally 4d95 +A0DE87,replace,2,1796 ; bank A5, originally 0796 +A0DE8F,replace,2,fa95 ; bank A5, originally ea95 +A0DE91,replace,2,0096 ; bank A5, originally f095 +A0DEB1,replace,2,77c4 ; bank A5, originally 6bc4 +A0DEB7,replace,2,92c4 ; bank A5, originally 86c4 +A0DEE1,replace,2,03a2 ; bank A5, originally f7a1 +A0DEF1,replace,2,a5c5 ; bank A5, originally 99c5 +A0DEF7,replace,2,b6c5 ; bank A5, originally aac5 +A0DF21,replace,2,03a2 ; bank A5, originally f7a1 +A0DF31,replace,2,b9c5 ; bank A5, originally adc5 +A0DF37,replace,2,d0c5 ; bank A5, originally c4c5 +A0DF61,replace,2,65e3 ; bank A5, originally 59e3 +A0DF6D,replace,1,00 +A0DF71,replace,2,2fea ; bank A5, originally 2aea +A0DF77,replace,2,18eb ; bank A5, originally 13eb +A0DF87,replace,2,2eee ; bank A5, originally f2ed +A0DF8F,replace,2,28ee ; bank A5, originally eced +A0DF91,replace,2,8fed ; bank A5, originally 5aed +A0DFA1,replace,2,65e3 ; bank A5, originally 59e3 +A0DFB1,replace,2,2fea ; bank A5, originally 2aea +A0DFB7,replace,2,18eb ; bank A5, originally 13eb +A0DFCF,replace,2,28ee ; bank A5, originally eced +A0DFD1,replace,2,8fed ; bank A5, originally 5aed +A0DFE1,replace,2,9786 ; bank A6, originally 8786 +A0DFF1,replace,2,0587 ; bank A6, originally f586 +A0DFF7,replace,2,a387 ; bank A6, originally 9387 +A0E021,replace,2,198b ; bank A6, originally 098b +A0E031,replace,2,3f8b ; bank A6, originally 2f8b +A0E037,replace,2,bd8b ; bank A6, originally ad8b +A0E061,replace,2,198b ; bank A6, originally 098b +A0E071,replace,2,958b ; bank A6, originally 858b +A0E077,replace,2,a98b ; bank A6, originally 998b +A0E0A1,replace,2,0b8d ; bank A6, originally fb8c +A0E0B1,replace,2,0c90 ; bank A6, originally fc8f +A0E0B7,replace,2,3390 ; bank A6, originally 2390 +A0E0E1,replace,2,8094 ; bank A6, originally 7094 +A0E0F1,replace,2,d494 ; bank A6, originally c494 +A0E0F7,replace,2,1e96 ; bank A6, originally 0e96 +A0E121,replace,2,9c99 ; bank A6, originally 8c99 +A0E131,replace,2,689a ; bank A6, originally 589a +A0E137,replace,2,d29a ; bank A6, originally c29a +A0E147,replace,2,499c ; bank A6, originally 399c +A0E14F,replace,2,329c ; bank A6, originally 229c +A0E151,replace,2,499c ; bank A6, originally 399c +A0E161,replace,2,26e1 ; bank A6, originally 4fe1 +A0E171,replace,2,05a1 ; bank A6, originally f5a0 +A0E177,replace,2,98a2 ; bank A6, originally 88a2 +A0E17B,replace,2,e3a2 ; bank A6, originally d3a2 +A0E187,replace,2,89df ; bank A6, originally b2df +A0E191,replace,2,61df ; bank A6, originally 8adf +A0E1A1,replace,2,26e1 ; bank A6, originally 4fe1 +A0E1B1,replace,2,05a1 ; bank A6, originally f5a0 +A0E1B7,replace,2,37b2 ; bank A6, originally 27b2 +A0E1BB,replace,2,a7b2 ; bank A6, originally 97b2 +A0E1BF,replace,2,9ab2 ; bank A6, originally 8ab2 +A0E1C7,replace,2,89df ; bank A6, originally b2df +A0E1D1,replace,2,61df ; bank A6, originally 8adf +A0E1E1,replace,2,86e1 ; bank A6, originally afe1 +A0E1F1,replace,2,6dc6 ; bank A6, originally 96c6 +A0E1F7,replace,2,abc8 ; bank A6, originally d4c8 +A0E221,replace,1,5f +A0E231,replace,2,88ef ; bank A6, originally b1ef +A0E237,replace,2,e4ef ; bank A6, originally 0df0 +A0E24F,replace,2,16f0 ; bank A6, originally 3ff0 +A0E255,replace,2,5fe2 ; bank A0, originally 3fe2 +A0E261,replace,2,c3f4 ; bank A6, originally ecf4 +A0E271,replace,2,9cf6 ; bank A6, originally c5f6 +A0E277,replace,2,3cf7 ; bank A6, originally 65f7 +A0E289,replace,2,03f5 ; bank A6, originally 2cf5 +A0E28F,replace,2,f7f8 ; bank A6, originally 20f9 +A0E291,replace,2,f7f8 ; bank A6, originally 20f9 +A0E293,replace,2,49fb ; bank A6, originally 72fb +A0E2B1,replace,2,49fb ; bank A6, originally 72fb +A0E2B7,replace,2,0afc ; bank A6, originally 33fc +A0E2CF,replace,2,7efd ; bank A6, originally a7fd +A0E2D1,replace,2,83fd ; bank A6, originally acfd +A0E2E1,replace,2,9786 ; bank A7, originally 8786 +A0E2F1,replace,2,6fa9 ; bank A7, originally 59a9 +A0E2F7,replace,2,37ac ; bank A7, originally 21ac +A0E30F,replace,2,af94 ; bank A7, originally 9f94 +A0E321,replace,2,9786 ; bank A7, originally 8786 +A0E331,replace,2,59ab ; bank A7, originally 43ab +A0E337,replace,2,f1b7 ; bank A7, originally bdb7 +A0E34F,replace,2,a094 ; bank A7, originally 9094 +A0E351,replace,2,c594 ; bank A7, originally b594 +A0E361,replace,2,9786 ; bank A7, originally 8786 +A0E371,replace,2,7eab ; bank A7, originally 68ab +A0E377,replace,2,35b8 ; bank A7, originally 01b8 +A0E38F,replace,2,9f94 ; bank A7, originally 8f94 +A0E3A1,replace,2,9786 ; bank A7, originally 8786 +A0E3B1,replace,2,b2ab ; bank A7, originally 9cab +A0E3B7,replace,2,41b8 ; bank A7, originally 0db8 +A0E3CF,replace,2,9f94 ; bank A7, originally 8f94 +A0E3E1,replace,2,9786 ; bank A7, originally 8786 +A0E3F1,replace,2,e0ab ; bank A7, originally caab +A0E3F7,replace,2,4db8 ; bank A7, originally 19b8 +A0E40F,replace,2,9f94 ; bank A7, originally 8f94 +A0E421,replace,2,9786 ; bank A7, originally 8786 +A0E431,replace,2,0eac ; bank A7, originally f8ab +A0E437,replace,2,2aba ; bank A7, originally f6b9 +A0E44F,replace,2,9f94 ; bank A7, originally 8f94 +A0E451,replace,2,c594 ; bank A7, originally b594 +A0E461,replace,2,9786 ; bank A7, originally 8786 +A0E471,replace,2,23bd ; bank A7, originally efbc +A0E477,replace,2,66bd ; bank A7, originally 32bd +A0E48F,replace,2,03bd ; bank A7, originally cfbc +A0E4A1,replace,2,9786 ; bank A7, originally 8786 +A0E4B1,replace,2,61bd ; bank A7, originally 2dbd +A0E4B7,replace,2,7dbd ; bank A7, originally 49bd +A0E4CF,replace,2,12bd ; bank A7, originally debc +A0E4E1,replace,2,35ca ; bank A7, originally 01ca +A0E4F1,replace,2,27ce ; bank A7, originally f3cd +A0E4F7,replace,2,dace ; bank A7, originally a6ce +A0E4FB,replace,2,73dd ; bank A7, originally 3fdd +A0E507,replace,2,cedd ; bank A7, originally 9add +A0E50F,replace,2,c9dd ; bank A7, originally 95dd +A0E511,replace,2,cfdd ; bank A7, originally 9bdd +A0E521,replace,2,35ca ; bank A7, originally 01ca +A0E531,replace,2,89ce ; bank A7, originally 55ce +A0E561,replace,2,35ca ; bank A7, originally 01ca +A0E571,replace,2,89ce ; bank A7, originally 55ce +A0E577,replace,2,45e0 ; bank A7, originally 11e0 +A0E5A1,replace,2,35ca ; bank A7, originally 01ca +A0E5B1,replace,2,89ce ; bank A7, originally 55ce +A0E5B7,replace,2,45e0 ; bank A7, originally 11e0 +A0E5E1,replace,2,32e8 ; bank A7, originally fee7 +A0E5F1,replace,2,46e9 ; bank A7, originally 12e9 +A0E5F7,replace,2,74e9 ; bank A7, originally 40e9 +A0E621,replace,2,59f2 ; bank A7, originally 25f2 +A0E631,replace,2,11f5 ; bank A7, originally ddf4 +A0E637,replace,2,62f5 ; bank A7, originally 2ef5 +A0E661,replace,2,9786 ; bank A8, originally 8786 +A0E671,replace,2,f087 ; bank A8, originally e087 +A0E677,replace,2,2b89 ; bank A8, originally 1b89 +A0E687,replace,2,1c8b ; bank A8, originally 0c8b +A0E68F,replace,2,168b ; bank A8, originally 068b +A0E691,replace,2,228b ; bank A8, originally 128b +A0E6A1,replace,2,9786 ; bank A8, originally 8786 +A0E6B1,replace,2,c088 ; bank A8, originally b088 +A0E6B7,replace,2,ae89 ; bank A8, originally 9e89 +A0E6E1,replace,2,9c8f ; bank A8, originally 8c8f +A0E6F1,replace,2,6890 ; bank A8, originally 5890 +A0E6F7,replace,2,f290 ; bank A8, originally e290 +A0E721,replace,2,8993 ; bank A8, originally 7993 +A0E731,replace,2,f396 ; bank A8, originally e396 +A0E737,replace,2,4097 ; bank A8, originally 3097 +A0E761,replace,2,ad95 ; bank A8, originally 9d95 +A0E771,replace,2,f396 ; bank A8, originally e396 +A0E777,replace,2,4097 ; bank A8, originally 3097 +A0E7A1,replace,2,bc99 ; bank A8, originally ac99 +A0E7B1,replace,2,fe9a ; bank A8, originally ee9a +A0E7B7,replace,2,4c9b ; bank A8, originally 3c9b +A0E7E1,replace,2,5f9f ; bank A8, originally 4f9f +A0E7F1,replace,2,58a1 ; bank A8, originally 48a1 +A0E7F7,replace,2,21a2 ; bank A8, originally 11a2 +A0E7FD,replace,2,45a8 ; bank A8, originally 35a8 +A0E80F,replace,2,a9a7 ; bank A8, originally 99a7 +A0E811,replace,2,cda7 ; bank A8, originally bda7 +A0E821,replace,2,0eab ; bank A8, originally feaa +A0E831,replace,2,56ab ; bank A8, originally 46ab +A0E837,replace,2,85ab ; bank A8, originally 75ab +A0E851,replace,2,93ab ; bank A8, originally 83ab +A0E861,replace,2,2cac ; bank A8, originally 1cac +A0E871,replace,2,9baf ; bank A8, originally 8baf +A0E877,replace,2,1ab1 ; bank A8, originally 0ab1 +A0E887,replace,2,10b4 ; bank A8, originally 00b4 +A0E88F,replace,2,16b4 ; bank A8, originally 06b4 +A0E891,replace,2,1cb4 ; bank A8, originally 0cb4 +A0E8A1,replace,2,6eb6 ; bank A8, originally 5eb6 +A0E8B1,replace,2,86b7 ; bank A8, originally 76b7 +A0E8B7,replace,2,1db8 ; bank A8, originally 0db8 +A0E8CF,replace,2,36be ; bank A8, originally 2ebe +A0E8D1,replace,2,b4be ; bank A8, originally acbe +A0E8E1,replace,2,4bc1 ; bank A8, originally 43c1 +A0E8F1,replace,2,d1c1 ; bank A8, originally c9c1 +A0E8F7,replace,2,24c2 ; bank A8, originally 1cc2 +A0E907,replace,2,47c6 ; bank A8, originally 3fc6 +A0E90F,replace,2,c6c5 ; bank A8, originally bec5 +A0E911,replace,2,f7c5 ; bank A8, originally efc5 +A0E921,replace,2,bbc6 ; bank A8, originally b3c6 +A0E931,replace,2,7fcb ; bank A8, originally 77cb +A0E937,replace,2,3ecc ; bank A8, originally 36cc +A0E94F,replace,2,7cd1 ; bank A8, originally 74d1 +A0E951,replace,2,9ad1 ; bank A8, originally 92d1 +A0E961,replace,2,bbc6 ; bank A8, originally b3c6 +A0E971,replace,2,d4cb ; bank A8, originally cccb +A0E977,replace,2,6ecc ; bank A8, originally 66cc +A0E98F,replace,2,7cd1 ; bank A8, originally 74d1 +A0E991,replace,2,95d1 ; bank A8, originally 8dd1 +A0E9A1,replace,2,29d8 ; bank A8, originally 21d8 +A0E9B1,replace,2,d1d8 ; bank A8, originally c9d8 +A0E9B7,replace,2,13d9 ; bank A8, originally 0bd9 +A0E9D1,replace,2,1cdb ; bank A8, originally 14db +A0E9E1,replace,2,cfdb ; bank A8, originally c7db +A0E9F1,replace,2,d5dc ; bank A8, originally cddc +A0E9F7,replace,2,73dd ; bank A8, originally 6bdd +A0EA21,replace,2,38e2 ; bank A8, originally 30e2 +A0EA31,replace,2,90e3 ; bank A8, originally 88e3 +A0EA37,replace,2,cbe3 ; bank A8, originally c3e3 +A0EA61,replace,2,8fe5 ; bank A8, originally 87e5 +A0EA71,replace,2,3fe6 ; bank A8, originally 37e6 +A0EA77,replace,2,96e6 ; bank A8, originally 8ee6 +A0EA91,replace,2,16e7 ; bank A8, originally 0ee7 +A0EAA1,replace,2,b4e7 ; bank A8, originally ace7 +A0EAB1,replace,2,36e8 ; bank A8, originally 2ee8 +A0EAB7,replace,2,b6e8 ; bank A8, originally aee8 +A0EAD1,replace,2,25e9 ; bank A8, originally 1de9 +A0EAE1,replace,2,a2e9 ; bank A8, originally 9ae9 +A0EAF1,replace,2,90f1 ; bank A8, originally 88f1 +A0EAF7,replace,2,64f2 ; bank A8, originally 5cf2 +A0EB11,replace,2,10f7 ; bank A8, originally 01f7 +A0EB21,replace,2,a2e9 ; bank A8, originally 9ae9 +A0EB31,replace,2,1cf2 ; bank A8, originally 14f2 +A0EB37,replace,2,6af2 ; bank A8, originally 62f2 +A0EB61,replace,2,c2e9 ; bank A8, originally bae9 +A0EB71,replace,2,90f1 ; bank A8, originally 88f1 +A0EB77,replace,2,64f2 ; bank A8, originally 5cf2 +A0EB91,replace,2,10f7 ; bank A8, originally 01f7 +A0EBA1,replace,2,c2e9 ; bank A8, originally bae9 +A0EBB1,replace,2,1cf2 ; bank A8, originally 14f2 +A0EBB7,replace,2,6af2 ; bank A8, originally 62f2 +A0EBE1,replace,2,e2e9 ; bank A8, originally dae9 +A0EBF1,replace,2,90f1 ; bank A8, originally 88f1 +A0EBF7,replace,2,64f2 ; bank A8, originally 5cf2 +A0EC11,replace,2,10f7 ; bank A8, originally 01f7 +A0EC21,replace,2,e2e9 ; bank A8, originally dae9 +A0EC31,replace,2,1cf2 ; bank A8, originally 14f2 +A0EC37,replace,2,6af2 ; bank A8, originally 62f2 +A0EC61,replace,2,8294 ; bank A9, originally 7294 +A0EC71,replace,2,1587 ; bank A9, originally 0587 +A0EC77,replace,2,9b87 ; bank A9, originally 8b87 +A0EC7B,replace,2,9b87 ; bank A9, originally 8b87 +A0EC87,replace,2,9787 ; bank A9, originally 8787 +A0EC8F,replace,2,13b6 ; bank A9, originally c6b5 +A0EC91,replace,2,54b5 ; bank A9, originally 07b5 +A0ECA1,replace,2,8294 ; bank A9, originally 7294 +A0ECB1,replace,2,9786 ; bank A9, originally 8786 +A0ECB7,replace,2,4e87 ; bank A9, originally 3e87 +A0ECBB,replace,2,4e87 ; bank A9, originally 3e87 +A0ECC7,replace,2,9787 ; bank A9, originally 8787 +A0ECCF,replace,2,12b6 ; bank A9, originally c5b5 +A0ECD1,replace,2,50b5 ; bank A9, originally 03b5 +A0ECE1,replace,2,33f9 ; bank A9, originally e6f8 +A0ECF1,replace,2,5dc7 ; bank A9, originally 10c7 +A0ECF7,replace,2,c6c7 ; bank A9, originally 79c7 +A0ED0F,replace,2,50cf ; bank A9, originally 03cf +A0ED21,replace,2,8294 ; bank A9, originally 7294 +A0ED31,replace,2,458b ; bank A9, originally 358b +A0ED37,replace,2,958b ; bank A9, originally 858b +A0ED61,replace,2,09d7 ; bank A9, originally bcd6 +A0ED71,replace,2,55d3 ; bank A9, originally 08d3 +A0ED77,replace,2,b5d3 ; bank A9, originally 68d3 +A0ED87,replace,2,77d4 ; bank A9, originally 2ad4 +A0ED8F,replace,2,80d4 ; bank A9, originally 33d4 +A0ED91,replace,2,80d4 ; bank A9, originally 33d4 +A0EDA1,replace,2,f3f8 ; bank A9, originally a6f8 +A0EDB1,replace,2,03d8 ; bank A9, originally b6d7 +A0EDB7,replace,2,28d9 ; bank A9, originally dbd8 +A0EDBB,replace,2,28d9 ; bank A9, originally dbd8 +A0EDC7,replace,2,19d9 ; bank A9, originally ccd8 +A0EDCF,replace,2,91dd ; bank A9, originally 44dd +A0EDD1,replace,2,6add ; bank A9, originally 1ddd +A0EDE1,replace,2,f9eb ; bank A9, originally aceb +A0EDF1,replace,2,03d8 ; bank A9, originally b6d7 +A0EDF7,replace,2,28d9 ; bank A9, originally dbd8 +A0EE07,replace,2,6add ; bank A9, originally 1ddd +A0EE0F,replace,2,6add ; bank A9, originally 1ddd +A0EE11,replace,2,6add ; bank A9, originally 1ddd +A0EE21,replace,2,f3f8 ; bank A9, originally a6f8 +A0EE31,replace,2,96d8 ; bank A9, originally 49d8 +A0EE37,replace,2,28d9 ; bank A9, originally dbd8 +A0EE47,replace,2,3add ; bank A9, originally eddc +A0EE4F,replace,2,45dd ; bank A9, originally f8dc +A0EE51,replace,2,45dd ; bank A9, originally f8dc +A0EE61,replace,2,f3f8 ; bank A9, originally a6f8 +A0EE71,replace,2,c3d8 ; bank A9, originally 76d8 +A0EE77,replace,2,28d9 ; bank A9, originally dbd8 +A0EE87,replace,2,4add ; bank A9, originally fddc +A0EE8F,replace,2,55dd ; bank A9, originally 08dd +A0EE91,replace,2,55dd ; bank A9, originally 08dd +A0EEA1,replace,2,f3f8 ; bank A9, originally a6f8 +A0EEB1,replace,2,ecd8 ; bank A9, originally 9fd8 +A0EEB7,replace,2,28d9 ; bank A9, originally dbd8 +A0EEC7,replace,2,5add ; bank A9, originally 0ddd +A0EECF,replace,2,65dd ; bank A9, originally 18dd +A0EED1,replace,2,65dd ; bank A9, originally 18dd +A0EEE1,replace,2,33f9 ; bank A9, originally e6f8 +A0EEF1,replace,2,84ef ; bank A9, originally 37ef +A0EEF7,replace,2,12f0 ; bank A9, originally c5ef +A0EF07,replace,2,07f0 ; bank A9, originally baef +A0EF0F,replace,2,d6f7 ; bank A9, originally 89f7 +A0EF11,replace,2,8ff8 ; bank A9, originally 42f8 +A0EF21,replace,2,9786 ; bank AA, originally 8786 +A0EF31,replace,2,8fc8 ; bank AA, originally 7fc8 +A0EF37,replace,2,b4c6 ; bank AA, originally a4c6 +A0EF3B,replace,2,8ec6 ; bank AA, originally 7ec6 +A0EF4F,replace,2,87c9 ; bank AA, originally 77c9 +A0EF51,replace,2,8cc9 ; bank AA, originally 7cc9 +A0EF61,replace,2,9786 ; bank AA, originally 8786 +A0EF71,replace,2,8fc8 ; bank AA, originally 7fc8 +A0EF77,replace,2,b4c6 ; bank AA, originally a4c6 +A0EF7B,replace,2,8ec6 ; bank AA, originally 7ec6 +A0EF8F,replace,2,87c9 ; bank AA, originally 77c9 +A0EF91,replace,2,8cc9 ; bank AA, originally 7cc9 +A0EFA1,replace,2,9786 ; bank AA, originally 8786 +A0EFB1,replace,2,8fc8 ; bank AA, originally 7fc8 +A0EFB7,replace,2,79d3 ; bank AA, originally 69d3 +A0EFBB,replace,2,cad3 ; bank AA, originally bad3 +A0EFCF,replace,2,87c9 ; bank AA, originally 77c9 +A0EFD1,replace,2,77d6 ; bank AA, originally 67d6 +A0EFE1,replace,2,9786 ; bank AA, originally 8786 +A0EFF1,replace,2,8fc8 ; bank AA, originally 7fc8 +A0EFF7,replace,2,79d3 ; bank AA, originally 69d3 +A0EFFB,replace,2,cad3 ; bank AA, originally bad3 +A0F00F,replace,2,87c9 ; bank AA, originally 77c9 +A0F011,replace,2,77d6 ; bank AA, originally 67d6 +A0F021,replace,2,55d7 ; bank AA, originally 45d7 +A0F031,replace,2,d8d7 ; bank AA, originally c8d7 +A0F037,replace,2,d7d7 ; bank AA, originally c7d7 +A0F061,replace,2,55d7 ; bank AA, originally 45d7 +A0F0A1,replace,2,21d9 ; bank AA, originally 11d9 +A0F0B1,replace,2,53de ; bank AA, originally 43de +A0F0B7,replace,2,b3dc ; bank AA, originally a3dc +A0F0BB,replace,2,b3dc ; bank AA, originally a3dc +A0F0CF,replace,2,3fdf ; bank AA, originally 2fdf +A0F0D1,replace,2,44df ; bank AA, originally 34df +A0F0E1,replace,2,cde2 ; bank AA, originally bde2 +A0F0F1,replace,2,26e7 ; bank AA, originally 16e7 +A0F121,replace,2,2de3 ; bank AA, originally 1de3 +A0F131,replace,2,35e7 ; bank AA, originally 25e7 +A0F137,replace,2,b7e7 ; bank AA, originally a7e7 +A0F14F,replace,2,ebe7 ; bank AA, originally dbe7 +A0F151,replace,2,ece7 ; bank AA, originally dce7 +A0F175,replace,2,9786 ; bank B3, originally 8786 +A0F185,replace,2,0b87 ; bank B3, originally fb86 +A0F18B,replace,2,1e87 ; bank B3, originally 0e87 +A0F1A9,replace,2,c0fd ; bank B7, originally 00fb +A0F1B5,replace,2,9b87 ; bank B3, originally 8b87 +A0F1C5,replace,2,4b88 ; bank B3, originally 3b88 +A0F1CB,replace,2,8a88 ; bank B3, originally 7a88 +A0F1F5,replace,2,0d8a ; bank B3, originally fd89 +A0F205,replace,2,4b88 ; bank B3, originally 3b88 +A0F20B,replace,2,8a88 ; bank B3, originally 7a88 +A0F235,replace,2,d18a ; bank B3, originally c18a +A0F245,replace,2,718b ; bank B3, originally 618b +A0F24B,replace,2,ae8b ; bank B3, originally 9e8b +A0F275,replace,2,ec8e ; bank B3, originally dc8e +A0F285,replace,2,5c8f ; bank B3, originally 4c8f +A0F28B,replace,2,be8f ; bank B3, originally ae8f +A0F2B5,replace,2,2993 ; bank B3, originally 1993 +A0F2C5,replace,2,9395 ; bank B3, originally 8395 +A0F2CB,replace,2,7896 ; bank B3, originally 6896 +A0F2DB,replace,2,51a0 ; bank B3, originally 41a0 +A0F2E3,replace,2,0fa0 ; bank B3, originally ff9f +A0F2E5,replace,2,26a0 ; bank B3, originally 16a0 +A0F2E9,replace,2,c0e5 ; bank B7, originally 00e3 +A0F2F5,replace,2,35e5 ; bank B3, originally 25e5 +A0F305,replace,2,dbe6 ; bank B3, originally cbe6 +A0F30B,replace,2,65e6 ; bank B3, originally 55e6 +A0F335,replace,2,54e9 ; bank B3, originally 44e9 +A0F345,replace,2,f5ea ; bank B3, originally e5ea +A0F34B,replace,2,2aeb ; bank B3, originally 1aeb +A0F375,replace,2,9786 ; bank B2, originally 8786 +A0F385,replace,2,afef ; bank B2, originally 9fef +A0F38B,replace,2,38f0 ; bank B2, originally 2df0 +A0F39B,replace,2,7787 ; bank B2, originally 6787 +A0F3A3,replace,2,7c87 ; bank B2, originally 6c87 +A0F3A5,replace,2,8987 ; bank B2, originally 7987 +A0F3B5,replace,2,b786 ; bank B2, originally a786 +A0F3C5,replace,2,afef ; bank B2, originally 9fef +A0F3CB,replace,2,38f0 ; bank B2, originally 2df0 +A0F3E3,replace,2,7c87 ; bank B2, originally 6c87 +A0F3E5,replace,2,8987 ; bank B2, originally 7987 +A0F3F5,replace,2,f786 ; bank B2, originally e786 +A0F405,replace,2,afef ; bank B2, originally 9fef +A0F40B,replace,2,38f0 ; bank B2, originally 2df0 +A0F423,replace,2,7c87 ; bank B2, originally 6c87 +A0F425,replace,2,8987 ; bank B2, originally 7987 +A0F435,replace,2,3787 ; bank B2, originally 2787 +A0F445,replace,2,afef ; bank B2, originally 9fef +A0F44B,replace,2,38f0 ; bank B2, originally 2df0 +A0F463,replace,2,7c87 ; bank B2, originally 6c87 +A0F465,replace,2,8987 ; bank B2, originally 7987 +A0F475,replace,2,d786 ; bank B2, originally c786 +A0F485,replace,2,afef ; bank B2, originally 9fef +A0F48B,replace,2,38f0 ; bank B2, originally 2df0 +A0F4A3,replace,2,7c87 ; bank B2, originally 6c87 +A0F4A5,replace,2,8987 ; bank B2, originally 7987 +A0F4B5,replace,2,1787 ; bank B2, originally 0787 +A0F4C5,replace,2,afef ; bank B2, originally 9fef +A0F4CB,replace,2,38f0 ; bank B2, originally 2df0 +A0F4E3,replace,2,7c87 ; bank B2, originally 6c87 +A0F4E5,replace,2,8987 ; bank B2, originally 7987 +A0F4F5,replace,2,9786 ; bank B2, originally 8786 +A0F505,replace,2,57f6 ; bank B2, originally def5 +A0F50B,replace,2,1bf7 ; bank B2, originally a2f6 +A0F51B,replace,2,7787 ; bank B2, originally 6787 +A0F523,replace,2,7c87 ; bank B2, originally 6c87 +A0F525,replace,2,8987 ; bank B2, originally 7987 +A0F535,replace,2,b786 ; bank B2, originally a786 +A0F545,replace,2,57f6 ; bank B2, originally def5 +A0F54B,replace,2,1bf7 ; bank B2, originally a2f6 +A0F55B,replace,2,7787 ; bank B2, originally 6787 +A0F563,replace,2,7c87 ; bank B2, originally 6c87 +A0F565,replace,2,8987 ; bank B2, originally 7987 +A0F575,replace,2,f786 ; bank B2, originally e786 +A0F585,replace,2,57f6 ; bank B2, originally def5 +A0F58B,replace,2,1bf7 ; bank B2, originally a2f6 +A0F59B,replace,2,7787 ; bank B2, originally 6787 +A0F5A3,replace,2,7c87 ; bank B2, originally 6c87 +A0F5A5,replace,2,8987 ; bank B2, originally 7987 +A0F5B5,replace,2,1787 ; bank B2, originally 0787 +A0F5C5,replace,2,57f6 ; bank B2, originally def5 +A0F5CB,replace,2,1bf7 ; bank B2, originally a2f6 +A0F5DB,replace,2,7787 ; bank B2, originally 6787 +A0F5E3,replace,2,7c87 ; bank B2, originally 6c87 +A0F5E5,replace,2,8987 ; bank B2, originally 7987 +A0F5F5,replace,2,d786 ; bank B2, originally c786 +A0F605,replace,2,57f6 ; bank B2, originally def5 +A0F60B,replace,2,1bf7 ; bank B2, originally a2f6 +A0F61B,replace,2,7787 ; bank B2, originally 6787 +A0F623,replace,2,7c87 ; bank B2, originally 6c87 +A0F625,replace,2,8987 ; bank B2, originally 7987 +A0F635,replace,2,1787 ; bank B2, originally 0787 +A0F645,replace,2,57f6 ; bank B2, originally def5 +A0F64B,replace,2,1bf7 ; bank B2, originally a2f6 +A0F65B,replace,2,7787 ; bank B2, originally 6787 +A0F663,replace,2,7c87 ; bank B2, originally 6c87 +A0F665,replace,2,8987 ; bank B2, originally 7987 +A0F675,replace,2,9786 ; bank B2, originally 8786 +A0F685,replace,2,7bfd ; bank B2, originally 02fd +A0F68B,replace,2,abfd ; bank B2, originally 32fd +A0F69B,replace,2,7787 ; bank B2, originally 6787 +A0F6A3,replace,2,7c87 ; bank B2, originally 6c87 +A0F6A5,replace,2,8987 ; bank B2, originally 7987 +A0F6B5,replace,2,b786 ; bank B2, originally a786 +A0F6C5,replace,2,7bfd ; bank B2, originally 02fd +A0F6CB,replace,2,abfd ; bank B2, originally 32fd +A0F6DB,replace,2,7787 ; bank B2, originally 6787 +A0F6E3,replace,2,7c87 ; bank B2, originally 6c87 +A0F6E5,replace,2,8987 ; bank B2, originally 7987 +A0F6F5,replace,2,f786 ; bank B2, originally e786 +A0F705,replace,2,7bfd ; bank B2, originally 02fd +A0F70B,replace,2,abfd ; bank B2, originally 32fd +A0F71B,replace,2,7787 ; bank B2, originally 6787 +A0F723,replace,2,7c87 ; bank B2, originally 6c87 +A0F725,replace,2,8987 ; bank B2, originally 7987 +A0F735,replace,2,3787 ; bank B2, originally 2787 +A0F745,replace,2,7bfd ; bank B2, originally 02fd +A0F74B,replace,2,abfd ; bank B2, originally 32fd +A0F75B,replace,2,7787 ; bank B2, originally 6787 +A0F763,replace,2,7c87 ; bank B2, originally 6c87 +A0F765,replace,2,8987 ; bank B2, originally 7987 +A0F775,replace,2,d786 ; bank B2, originally c786 +A0F785,replace,2,7bfd ; bank B2, originally 02fd +A0F78B,replace,2,abfd ; bank B2, originally 32fd +A0F79B,replace,2,7787 ; bank B2, originally 6787 +A0F7A3,replace,2,7c87 ; bank B2, originally 6c87 +A0F7A5,replace,2,8987 ; bank B2, originally 7987 +A0F7B5,replace,2,1787 ; bank B2, originally 0787 +A0F7C5,replace,2,7bfd ; bank B2, originally 02fd +A0F7CB,replace,2,abfd ; bank B2, originally 32fd +A0F7DB,replace,2,7787 ; bank B2, originally 6787 +A0F7E3,replace,2,7c87 ; bank B2, originally 6c87 +A0F7E5,replace,2,8987 ; bank B2, originally 7987 ;======================================================= ; Bank A1 ;======================================================= -A18000,ignore,27601 +A18002,replace,2,dfd3 ; bank A0, originally bfd3 +A18012,replace,2,dfd3 ; bank A0, originally bfd3 +A18022,replace,2,dfd3 ; bank A0, originally bfd3 +A18032,replace,2,dfd3 ; bank A0, originally bfd3 +A18042,replace,2,dfd3 ; bank A0, originally bfd3 +A18052,replace,2,1fd7 ; bank A0, originally ffd6 +A18062,replace,2,1fd7 ; bank A0, originally ffd6 +A18072,replace,2,1fd7 ; bank A0, originally ffd6 +A18082,replace,2,1fd7 ; bank A0, originally ffd6 +A18092,replace,2,1fd7 ; bank A0, originally ffd6 +A180A2,replace,2,5fd8 ; bank A0, originally 3fd8 +A180B2,replace,2,5fd8 ; bank A0, originally 3fd8 +A180C2,replace,2,5fd8 ; bank A0, originally 3fd8 +A180D5,replace,2,dfe9 ; bank A0, originally bfe9 +A180E5,replace,2,dfe9 ; bank A0, originally bfe9 +A180F5,replace,2,dfe9 ; bank A0, originally bfe9 +A18108,replace,2,5fd6 ; bank A0, originally 3fd6 +A18118,replace,2,5fd6 ; bank A0, originally 3fd6 +A18128,replace,2,5fd6 ; bank A0, originally 3fd6 +A18138,replace,2,1fdd ; bank A0, originally ffdc +A18148,replace,2,1fdd ; bank A0, originally ffdc +A18158,replace,2,1fdd ; bank A0, originally ffdc +A18168,replace,2,1fdd ; bank A0, originally ffdc +A18178,replace,2,1fdd ; bank A0, originally ffdc +A18188,replace,2,1fdd ; bank A0, originally ffdc +A1819B,replace,2,9fea ; bank A0, originally 7fea +A181AB,replace,2,9fea ; bank A0, originally 7fea +A181BB,replace,2,9fea ; bank A0, originally 7fea +A181CB,replace,2,9fea ; bank A0, originally 7fea +A181DB,replace,2,9fea ; bank A0, originally 7fea +A181EB,replace,2,9fea ; bank A0, originally 7fea +A181FE,replace,2,9fea ; bank A0, originally 7fea +A1820E,replace,2,9fea ; bank A0, originally 7fea +A1821E,replace,2,9fea ; bank A0, originally 7fea +A1822E,replace,2,9fea ; bank A0, originally 7fea +A1823E,replace,2,9fea ; bank A0, originally 7fea +A1824E,replace,2,9fea ; bank A0, originally 7fea +A18261,replace,2,1fdd ; bank A0, originally ffdc +A18271,replace,2,1fdd ; bank A0, originally ffdc +A18281,replace,2,1fdd ; bank A0, originally ffdc +A18291,replace,2,9fdb ; bank A0, originally 7fdb +A182A1,replace,2,9fdb ; bank A0, originally 7fdb +A182B1,replace,2,9fdb ; bank A0, originally 7fdb +A182C1,replace,2,1fdd ; bank A0, originally ffdc +A182D1,replace,2,9fd4 ; bank A0, originally 7fd4 +A182E1,replace,2,1fdd ; bank A0, originally ffdc +A182F1,replace,2,1fdd ; bank A0, originally ffdc +A18301,replace,2,1fdd ; bank A0, originally ffdc +A18311,replace,2,1fdd ; bank A0, originally ffdc +A18321,replace,2,1fdd ; bank A0, originally ffdc +A18331,replace,2,1fdd ; bank A0, originally ffdc +A18341,replace,2,1fdd ; bank A0, originally ffdc +A18351,replace,2,9fd4 ; bank A0, originally 7fd4 +A18364,replace,2,1fd1 ; bank A0, originally ffd0 +A18374,replace,2,1fd1 ; bank A0, originally ffd0 +A18384,replace,2,1fd1 ; bank A0, originally ffd0 +A18394,replace,2,1fd1 ; bank A0, originally ffd0 +A183A4,replace,2,1fd1 ; bank A0, originally ffd0 +A183B4,replace,2,1fd1 ; bank A0, originally ffd0 +A183C4,replace,2,1fd1 ; bank A0, originally ffd0 +A183D4,replace,2,1fd1 ; bank A0, originally ffd0 +A183E4,replace,2,1fd1 ; bank A0, originally ffd0 +A183F4,replace,2,1fd1 ; bank A0, originally ffd0 +A18404,replace,2,1fd1 ; bank A0, originally ffd0 +A18414,replace,2,1fd1 ; bank A0, originally ffd0 +A18427,replace,2,73f6 ; bank A0, originally 53f6 +A18437,replace,2,73f3 ; bank A0, originally 53f3 +A18447,replace,2,73f6 ; bank A0, originally 53f6 +A18457,replace,2,73f6 ; bank A0, originally 53f6 +A18467,replace,2,73f6 ; bank A0, originally 53f6 +A1847A,replace,2,dfe7 ; bank A0, originally bfe7 +A1848A,replace,2,dfe7 ; bank A0, originally bfe7 +A1849A,replace,2,dfe7 ; bank A0, originally bfe7 +A184AA,replace,2,5fd6 ; bank A0, originally 3fd6 +A184BA,replace,2,5fd6 ; bank A0, originally 3fd6 +A184CA,replace,2,5fd6 ; bank A0, originally 3fd6 +A184DA,replace,2,dfe7 ; bank A0, originally bfe7 +A184ED,replace,2,1fef ; bank A0, originally ffee +A18500,replace,2,b3f6 ; bank A0, originally 93f6 +A18510,replace,2,b3f6 ; bank A0, originally 93f6 +A18520,replace,2,b3f6 ; bank A0, originally 93f6 +A18530,replace,2,b3f6 ; bank A0, originally 93f6 +A18540,replace,2,b3f6 ; bank A0, originally 93f6 +A18550,replace,2,9fe8 ; bank A0, originally 7fe8 +A18560,replace,2,9fe8 ; bank A0, originally 7fe8 +A18573,replace,2,5fd7 ; bank A0, originally 3fd7 +A18586,replace,2,dfe6 ; bank A0, originally bfe6 +A18596,replace,2,dfe6 ; bank A0, originally bfe6 +A185B2,replace,2,33f6 ; bank A0, originally 13f6 +A185C2,replace,2,33f6 ; bank A0, originally 13f6 +A185E1,replace,2,9fd8 ; bank A0, originally 7fd8 +A185F1,replace,2,9fd8 ; bank A0, originally 7fd8 +A18601,replace,2,9fd8 ; bank A0, originally 7fd8 +A18611,replace,2,9fd8 ; bank A0, originally 7fd8 +A18621,replace,2,9fd8 ; bank A0, originally 7fd8 +A18631,replace,2,9fd8 ; bank A0, originally 7fd8 +A18641,replace,2,9fd8 ; bank A0, originally 7fd8 +A18651,replace,2,9fd8 ; bank A0, originally 7fd8 +A18661,replace,2,9fd8 ; bank A0, originally 7fd8 +A18671,replace,2,9fd8 ; bank A0, originally 7fd8 +A18684,replace,2,1fd7 ; bank A0, originally ffd6 +A18694,replace,2,1fd7 ; bank A0, originally ffd6 +A186A4,replace,2,b3f1 ; bank A0, originally 93f1 +A186B4,replace,2,1fd4 ; bank A0, originally ffd3 +A186C4,replace,2,1fd8 ; bank A0, originally ffd7 +A186D4,replace,2,1fd8 ; bank A0, originally ffd7 +A186E4,replace,2,1fd8 ; bank A0, originally ffd7 +A186FA,replace,2,9fd8 ; bank A0, originally 7fd8 +A1870A,replace,2,9fd8 ; bank A0, originally 7fd8 +A1871A,replace,2,9fd8 ; bank A0, originally 7fd8 +A1872A,replace,2,9fd8 ; bank A0, originally 7fd8 +A1873A,replace,2,9fd8 ; bank A0, originally 7fd8 +A1874A,replace,2,9fd8 ; bank A0, originally 7fd8 +A1875A,replace,2,9fd8 ; bank A0, originally 7fd8 +A1876A,replace,2,9fd8 ; bank A0, originally 7fd8 +A1877A,replace,2,9fd8 ; bank A0, originally 7fd8 +A1878A,replace,2,9fd8 ; bank A0, originally 7fd8 +A1879A,replace,2,9fd8 ; bank A0, originally 7fd8 +A187AA,replace,2,9fd8 ; bank A0, originally 7fd8 +A187BA,replace,2,9fd8 ; bank A0, originally 7fd8 +A187CA,replace,2,9fd8 ; bank A0, originally 7fd8 +A187DA,replace,2,9fd8 ; bank A0, originally 7fd8 +A187EA,replace,2,9fd8 ; bank A0, originally 7fd8 +A187FA,replace,2,9fd8 ; bank A0, originally 7fd8 +A1880A,replace,2,9fd8 ; bank A0, originally 7fd8 +A1881A,replace,2,9fd8 ; bank A0, originally 7fd8 +A1882A,replace,2,9fd8 ; bank A0, originally 7fd8 +A1883D,replace,2,9fd0 ; bank A0, originally 7fd0 +A1884D,replace,2,dfd0 ; bank A0, originally bfd0 +A1885D,replace,2,dfd0 ; bank A0, originally bfd0 +A18870,replace,2,dfce ; bank A0, originally bfce +A18880,replace,2,dfce ; bank A0, originally bfce +A18890,replace,2,dfce ; bank A0, originally bfce +A188A0,replace,2,dfce ; bank A0, originally bfce +A188B6,replace,2,5fdc ; bank A0, originally 3fdc +A188C9,replace,2,73f3 ; bank A0, originally 53f3 +A188D9,replace,2,73f3 ; bank A0, originally 53f3 +A188E9,replace,2,73f3 ; bank A0, originally 53f3 +A188F9,replace,2,73f3 ; bank A0, originally 53f3 +A18909,replace,2,73f3 ; bank A0, originally 53f3 +A18919,replace,2,73f3 ; bank A0, originally 53f3 +A18929,replace,2,73f3 ; bank A0, originally 53f3 +A18939,replace,2,73f3 ; bank A0, originally 53f3 +A18949,replace,2,73f3 ; bank A0, originally 53f3 +A18959,replace,2,73f3 ; bank A0, originally 53f3 +A18969,replace,2,73f3 ; bank A0, originally 53f3 +A1897C,replace,2,dfd3 ; bank A0, originally bfd3 +A1898C,replace,2,dfd3 ; bank A0, originally bfd3 +A1899C,replace,2,dfd3 ; bank A0, originally bfd3 +A189AC,replace,2,5fd6 ; bank A0, originally 3fd6 +A189BC,replace,2,5fd6 ; bank A0, originally 3fd6 +A189CC,replace,2,5fd6 ; bank A0, originally 3fd6 +A189DF,replace,2,5fd7 ; bank A0, originally 3fd7 +A189F2,replace,2,dfe7 ; bank A0, originally bfe7 +A18A02,replace,2,f3f1 ; bank A0, originally d3f1 +A18A15,replace,2,9fd8 ; bank A0, originally 7fd8 +A18A25,replace,2,9fd8 ; bank A0, originally 7fd8 +A18A35,replace,2,9fd8 ; bank A0, originally 7fd8 +A18A45,replace,2,9fd8 ; bank A0, originally 7fd8 +A18A55,replace,2,9fd8 ; bank A0, originally 7fd8 +A18A65,replace,2,9fd8 ; bank A0, originally 7fd8 +A18A75,replace,2,9fd8 ; bank A0, originally 7fd8 +A18A85,replace,2,9fd8 ; bank A0, originally 7fd8 +A18A95,replace,2,9fd8 ; bank A0, originally 7fd8 +A18AA5,replace,2,9fd8 ; bank A0, originally 7fd8 +A18AB8,replace,2,9fd7 ; bank A0, originally 7fd7 +A18AC8,replace,2,9fd7 ; bank A0, originally 7fd7 +A18AD8,replace,2,9fd7 ; bank A0, originally 7fd7 +A18AE8,replace,2,9fd7 ; bank A0, originally 7fd7 +A18AF8,replace,2,9fd7 ; bank A0, originally 7fd7 +A18B08,replace,2,9fd7 ; bank A0, originally 7fd7 +A18B18,replace,2,9fd7 ; bank A0, originally 7fd7 +A18B28,replace,2,9fd7 ; bank A0, originally 7fd7 +A18B3E,replace,2,1fe8 ; bank A0, originally ffe7 +A18B4E,replace,2,1fe8 ; bank A0, originally ffe7 +A18B61,replace,2,5fd7 ; bank A0, originally 3fd7 +A18B74,replace,2,5fd7 ; bank A0, originally 3fd7 +A18B87,replace,2,1fd1 ; bank A0, originally ffd0 +A18B97,replace,2,1fd1 ; bank A0, originally ffd0 +A18BA7,replace,2,1fd1 ; bank A0, originally ffd0 +A18BB7,replace,2,9fd2 ; bank A0, originally 7fd2 +A18BCA,replace,2,1fe8 ; bank A0, originally ffe7 +A18BDA,replace,2,1fe8 ; bank A0, originally ffe7 +A18BEA,replace,2,5fdd ; bank A0, originally 3fdd +A18BFA,replace,2,5fdd ; bank A0, originally 3fdd +A18C0D,replace,2,9fd0 ; bank A0, originally 7fd0 +A18C1D,replace,2,dfd0 ; bank A0, originally bfd0 +A18C2D,replace,2,dfd0 ; bank A0, originally bfd0 +A18C3D,replace,2,1fe2 ; bank A0, originally ffe1 +A18C4D,replace,2,1fe2 ; bank A0, originally ffe1 +A18C5D,replace,2,1fe2 ; bank A0, originally ffe1 +A18C6D,replace,2,1fe2 ; bank A0, originally ffe1 +A18C7D,replace,2,1fe2 ; bank A0, originally ffe1 +A18C8D,replace,2,1fe2 ; bank A0, originally ffe1 +A18C9D,replace,2,1fe2 ; bank A0, originally ffe1 +A18CAD,replace,2,1fe2 ; bank A0, originally ffe1 +A18CBD,replace,2,1fe2 ; bank A0, originally ffe1 +A18CCD,replace,2,1fe2 ; bank A0, originally ffe1 +A18CDD,replace,2,1fe2 ; bank A0, originally ffe1 +A18CED,replace,2,1fe2 ; bank A0, originally ffe1 +A18CFD,replace,2,1fe2 ; bank A0, originally ffe1 +A18D0D,replace,2,1fe2 ; bank A0, originally ffe1 +A18D1D,replace,2,1fe2 ; bank A0, originally ffe1 +A18D2D,replace,2,1fe2 ; bank A0, originally ffe1 +A18D3D,replace,2,1fe2 ; bank A0, originally ffe1 +A18D4D,replace,2,1fe2 ; bank A0, originally ffe1 +A18D5D,replace,2,1fe2 ; bank A0, originally ffe1 +A18D6D,replace,2,1fe2 ; bank A0, originally ffe1 +A18D7D,replace,2,1fe2 ; bank A0, originally ffe1 +A18D8D,replace,2,1fe2 ; bank A0, originally ffe1 +A18DA0,replace,2,1fe2 ; bank A0, originally ffe1 +A18DB0,replace,2,1fe2 ; bank A0, originally ffe1 +A18DC0,replace,2,1fe2 ; bank A0, originally ffe1 +A18DD0,replace,2,1fe2 ; bank A0, originally ffe1 +A18DE0,replace,2,1fe2 ; bank A0, originally ffe1 +A18DF0,replace,2,1fe2 ; bank A0, originally ffe1 +A18E00,replace,2,1fe2 ; bank A0, originally ffe1 +A18E10,replace,2,1fe2 ; bank A0, originally ffe1 +A18E20,replace,2,1fe2 ; bank A0, originally ffe1 +A18E30,replace,2,1fe2 ; bank A0, originally ffe1 +A18E40,replace,2,1fe2 ; bank A0, originally ffe1 +A18E50,replace,2,1fe2 ; bank A0, originally ffe1 +A18E60,replace,2,1fe2 ; bank A0, originally ffe1 +A18E70,replace,2,1fe2 ; bank A0, originally ffe1 +A18E80,replace,2,1fe2 ; bank A0, originally ffe1 +A18E90,replace,2,1fe2 ; bank A0, originally ffe1 +A18EA0,replace,2,1fe2 ; bank A0, originally ffe1 +A18EB0,replace,2,1fe2 ; bank A0, originally ffe1 +A18EC0,replace,2,1fe2 ; bank A0, originally ffe1 +A18ED3,replace,2,33f3 ; bank A0, originally 13f3 +A18EE3,replace,2,f3f2 ; bank A0, originally d3f2 +A18EF3,replace,2,f3f2 ; bank A0, originally d3f2 +A18F03,replace,2,f3f2 ; bank A0, originally d3f2 +A18F19,replace,2,dfea ; bank A0, originally bfea +A18F29,replace,2,1feb ; bank A0, originally ffea +A18F39,replace,2,dfea ; bank A0, originally bfea +A18F49,replace,2,1feb ; bank A0, originally ffea +A18F59,replace,2,9fd7 ; bank A0, originally 7fd7 +A18F69,replace,2,9fd7 ; bank A0, originally 7fd7 +A18F7C,replace,2,5fd9 ; bank A0, originally 3fd9 +A18F8C,replace,2,9fdc ; bank A0, originally 7fdc +A18F9C,replace,2,9fdc ; bank A0, originally 7fdc +A18FAC,replace,2,9fdc ; bank A0, originally 7fdc +A18FC5,replace,2,dfea ; bank A0, originally bfea +A18FD5,replace,2,1feb ; bank A0, originally ffea +A18FE5,replace,2,dfea ; bank A0, originally bfea +A18FF5,replace,2,1feb ; bank A0, originally ffea +A19005,replace,2,dfea ; bank A0, originally bfea +A19015,replace,2,1feb ; bank A0, originally ffea +A1902E,replace,2,b3f1 ; bank A0, originally 93f1 +A1903E,replace,2,b3f1 ; bank A0, originally 93f1 +A1904E,replace,2,b3f1 ; bank A0, originally 93f1 +A1905E,replace,2,9fdc ; bank A0, originally 7fdc +A1906E,replace,2,9fdc ; bank A0, originally 7fdc +A19081,replace,2,5fd7 ; bank A0, originally 3fd7 +A19091,replace,2,1ff0 ; bank A0, originally ffef +A190A1,replace,2,1ff0 ; bank A0, originally ffef +A190B1,replace,2,1ff0 ; bank A0, originally ffef +A190C7,replace,2,dfe7 ; bank A0, originally bfe7 +A190D7,replace,2,dfe7 ; bank A0, originally bfe7 +A190E7,replace,2,dfd9 ; bank A0, originally bfd9 +A190F7,replace,2,dfd9 ; bank A0, originally bfd9 +A19107,replace,2,dfd9 ; bank A0, originally bfd9 +A1911A,replace,2,1fd7 ; bank A0, originally ffd6 +A1912A,replace,2,dfcf ; bank A0, originally bfcf +A1913A,replace,2,dfcf ; bank A0, originally bfcf +A1914A,replace,2,dfcf ; bank A0, originally bfcf +A1915A,replace,2,1fd7 ; bank A0, originally ffd6 +A1916A,replace,2,dfd7 ; bank A0, originally bfd7 +A1917A,replace,2,dfd7 ; bank A0, originally bfd7 +A1918D,replace,2,1fdd ; bank A0, originally ffdc +A1919D,replace,2,1fdd ; bank A0, originally ffdc +A191AD,replace,2,9fea ; bank A0, originally 7fea +A191BD,replace,2,9fea ; bank A0, originally 7fea +A191CD,replace,2,9fea ; bank A0, originally 7fea +A191DD,replace,2,9fea ; bank A0, originally 7fea +A191ED,replace,2,9fea ; bank A0, originally 7fea +A19200,replace,2,1fdd ; bank A0, originally ffdc +A19210,replace,2,1fdd ; bank A0, originally ffdc +A19220,replace,2,9fdb ; bank A0, originally 7fdb +A19230,replace,2,9fdb ; bank A0, originally 7fdb +A19240,replace,2,9fd2 ; bank A0, originally 7fd2 +A19250,replace,2,9fea ; bank A0, originally 7fea +A19260,replace,2,9fea ; bank A0, originally 7fea +A19270,replace,2,9fea ; bank A0, originally 7fea +A19280,replace,2,9fea ; bank A0, originally 7fea +A19290,replace,2,9fea ; bank A0, originally 7fea +A192A3,replace,2,1fd0 ; bank A0, originally ffcf +A192B3,replace,2,1fd0 ; bank A0, originally ffcf +A192C3,replace,2,1fd0 ; bank A0, originally ffcf +A192D3,replace,2,1fd0 ; bank A0, originally ffcf +A192E3,replace,2,9fdc ; bank A0, originally 7fdc +A192F3,replace,2,9fdc ; bank A0, originally 7fdc +A19303,replace,2,9fdc ; bank A0, originally 7fdc +A19313,replace,2,9fdc ; bank A0, originally 7fdc +A19326,replace,2,5fd7 ; bank A0, originally 3fd7 +A19336,replace,2,dfd9 ; bank A0, originally bfd9 +A19346,replace,2,dfd9 ; bank A0, originally bfd9 +A19356,replace,2,dfd9 ; bank A0, originally bfd9 +A19366,replace,2,9fea ; bank A0, originally 7fea +A19376,replace,2,9fea ; bank A0, originally 7fea +A19386,replace,2,9fea ; bank A0, originally 7fea +A19396,replace,2,9fea ; bank A0, originally 7fea +A193AC,replace,2,dfe6 ; bank A0, originally bfe6 +A193BC,replace,2,dfe6 ; bank A0, originally bfe6 +A193CC,replace,2,5fd7 ; bank A0, originally 3fd7 +A193DC,replace,2,9fea ; bank A0, originally 7fea +A193EC,replace,2,9fea ; bank A0, originally 7fea +A193FC,replace,2,9fea ; bank A0, originally 7fea +A1940C,replace,2,9fea ; bank A0, originally 7fea +A1941F,replace,2,9fdc ; bank A0, originally 7fdc +A1942F,replace,2,9fdc ; bank A0, originally 7fdc +A1943F,replace,2,9fdc ; bank A0, originally 7fdc +A19452,replace,2,9fd4 ; bank A0, originally 7fd4 +A19462,replace,2,9fd4 ; bank A0, originally 7fd4 +A19472,replace,2,9fd4 ; bank A0, originally 7fd4 +A19482,replace,2,9fd4 ; bank A0, originally 7fd4 +A19492,replace,2,9fe8 ; bank A0, originally 7fe8 +A194A2,replace,2,9fd4 ; bank A0, originally 7fd4 +A194B2,replace,2,9fd4 ; bank A0, originally 7fd4 +A194C2,replace,2,9fd4 ; bank A0, originally 7fd4 +A194D2,replace,2,9fd4 ; bank A0, originally 7fd4 +A194E2,replace,2,73f2 ; bank A0, originally 53f2 +A194F2,replace,2,73f2 ; bank A0, originally 53f2 +A19505,replace,2,dfdf ; bank A0, originally bfdf +A19515,replace,2,dfdf ; bank A0, originally bfdf +A19525,replace,2,dfdf ; bank A0, originally bfdf +A1953E,replace,2,9fd2 ; bank A0, originally 7fd2 +A1954E,replace,2,9fd2 ; bank A0, originally 7fd2 +A1955E,replace,2,9fd2 ; bank A0, originally 7fd2 +A1956E,replace,2,5fd9 ; bank A0, originally 3fd9 +A1957E,replace,2,5fd9 ; bank A0, originally 3fd9 +A1958E,replace,2,5fd9 ; bank A0, originally 3fd9 +A1959E,replace,2,5fd9 ; bank A0, originally 3fd9 +A195AE,replace,2,b3f1 ; bank A0, originally 93f1 +A195BE,replace,2,b3f1 ; bank A0, originally 93f1 +A195CE,replace,2,b3f1 ; bank A0, originally 93f1 +A195E4,replace,2,dfe7 ; bank A0, originally bfe7 +A195F4,replace,2,dfe7 ; bank A0, originally bfe7 +A19604,replace,2,1fd0 ; bank A0, originally ffcf +A1961D,replace,2,5fd5 ; bank A0, originally 3fd5 +A1962D,replace,2,5fd5 ; bank A0, originally 3fd5 +A1963D,replace,2,dfd9 ; bank A0, originally bfd9 +A1964D,replace,2,dfd9 ; bank A0, originally bfd9 +A1966F,replace,2,dfe6 ; bank A0, originally bfe6 +A1967F,replace,2,dfe6 ; bank A0, originally bfe6 +A1968F,replace,2,9fea ; bank A0, originally 7fea +A1969F,replace,2,9fea ; bank A0, originally 7fea +A196AF,replace,2,9fea ; bank A0, originally 7fea +A196BF,replace,2,9fea ; bank A0, originally 7fea +A196CF,replace,2,9fea ; bank A0, originally 7fea +A196E2,replace,2,dfd6 ; bank A0, originally bfd6 +A196F2,replace,2,dfd6 ; bank A0, originally bfd6 +A19702,replace,2,dfd6 ; bank A0, originally bfd6 +A19712,replace,2,dfd6 ; bank A0, originally bfd6 +A19722,replace,2,dfd6 ; bank A0, originally bfd6 +A19735,replace,2,9fe8 ; bank A0, originally 7fe8 +A19745,replace,2,9fe8 ; bank A0, originally 7fe8 +A19755,replace,2,9fe8 ; bank A0, originally 7fe8 +A19765,replace,2,9fe8 ; bank A0, originally 7fe8 +A19778,replace,2,f3f1 ; bank A0, originally d3f1 +A19788,replace,2,f3f1 ; bank A0, originally d3f1 +A19798,replace,2,f3f1 ; bank A0, originally d3f1 +A197A8,replace,2,9fe8 ; bank A0, originally 7fe8 +A197B8,replace,2,9fe8 ; bank A0, originally 7fe8 +A197C8,replace,2,9fe8 ; bank A0, originally 7fe8 +A197D8,replace,2,9fe8 ; bank A0, originally 7fe8 +A197E8,replace,2,9fe8 ; bank A0, originally 7fe8 +A197FB,replace,2,dfd9 ; bank A0, originally bfd9 +A1980B,replace,2,5fd9 ; bank A0, originally 3fd9 +A1981B,replace,2,5fd9 ; bank A0, originally 3fd9 +A1982B,replace,2,5fd5 ; bank A0, originally 3fd5 +A1983B,replace,2,5fd5 ; bank A0, originally 3fd5 +A1984B,replace,2,5fd5 ; bank A0, originally 3fd5 +A1985B,replace,2,5fd5 ; bank A0, originally 3fd5 +A1986B,replace,2,5fd5 ; bank A0, originally 3fd5 +A1987B,replace,2,5fd5 ; bank A0, originally 3fd5 +A1988E,replace,2,9fe8 ; bank A0, originally 7fe8 +A1989E,replace,2,9fe8 ; bank A0, originally 7fe8 +A198AE,replace,2,9fe8 ; bank A0, originally 7fe8 +A198BE,replace,2,9fe8 ; bank A0, originally 7fe8 +A198D1,replace,2,5fd7 ; bank A0, originally 3fd7 +A198E4,replace,2,5fd7 ; bank A0, originally 3fd7 +A198F7,replace,2,dfea ; bank A0, originally bfea +A19907,replace,2,1feb ; bank A0, originally ffea +A19917,replace,2,dfea ; bank A0, originally bfea +A19927,replace,2,1feb ; bank A0, originally ffea +A19937,replace,2,dfea ; bank A0, originally bfea +A19947,replace,2,1feb ; bank A0, originally ffea +A19957,replace,2,dfea ; bank A0, originally bfea +A19967,replace,2,1feb ; bank A0, originally ffea +A1997A,replace,2,5fd7 ; bank A0, originally 3fd7 +A1998A,replace,2,9fdc ; bank A0, originally 7fdc +A1999A,replace,2,9fdc ; bank A0, originally 7fdc +A199AA,replace,2,5fd4 ; bank A0, originally 3fd4 +A199BA,replace,2,9fdc ; bank A0, originally 7fdc +A199CA,replace,2,5fd4 ; bank A0, originally 3fd4 +A199DA,replace,2,9fdc ; bank A0, originally 7fdc +A199EA,replace,2,9fdc ; bank A0, originally 7fdc +A199FA,replace,2,dfe5 ; bank A0, originally bfe5 +A19A0A,replace,2,dfe5 ; bank A0, originally bfe5 +A19A1A,replace,2,dfe5 ; bank A0, originally bfe5 +A19A2D,replace,2,b3f1 ; bank A0, originally 93f1 +A19A40,replace,2,5fd9 ; bank A0, originally 3fd9 +A19A50,replace,2,5fd9 ; bank A0, originally 3fd9 +A19A60,replace,2,1fd5 ; bank A0, originally ffd4 +A19A6C,replace,1,a4 +A19A70,replace,2,1fd5 ; bank A0, originally ffd4 +A19A80,replace,2,1fd5 ; bank A0, originally ffd4 +A19A90,replace,2,5fd6 ; bank A0, originally 3fd6 +A19AA0,replace,2,5fd6 ; bank A0, originally 3fd6 +A19AB0,replace,2,5fd6 ; bank A0, originally 3fd6 +A19AC0,replace,2,5fd6 ; bank A0, originally 3fd6 +A19AD0,replace,2,b3f1 ; bank A0, originally 93f1 +A19AE0,replace,2,5fd9 ; bank A0, originally 3fd9 +A19AF0,replace,2,5fd9 ; bank A0, originally 3fd9 +A19B00,replace,2,5fd9 ; bank A0, originally 3fd9 +A19B13,replace,2,dfd6 ; bank A0, originally bfd6 +A19B23,replace,2,dfd6 ; bank A0, originally bfd6 +A19B33,replace,2,dfd6 ; bank A0, originally bfd6 +A19B43,replace,2,dfd6 ; bank A0, originally bfd6 +A19B53,replace,2,dfd6 ; bank A0, originally bfd6 +A19B63,replace,2,5fd6 ; bank A0, originally 3fd6 +A19B73,replace,2,5fd6 ; bank A0, originally 3fd6 +A19B83,replace,2,5fd6 ; bank A0, originally 3fd6 +A19B93,replace,2,dfe7 ; bank A0, originally bfe7 +A19BA3,replace,2,dfe7 ; bank A0, originally bfe7 +A19BB3,replace,2,dfe7 ; bank A0, originally bfe7 +A19BC6,replace,2,9fd8 ; bank A0, originally 7fd8 +A19BD6,replace,2,9fd8 ; bank A0, originally 7fd8 +A19BE6,replace,2,9fd8 ; bank A0, originally 7fd8 +A19BF6,replace,2,9fd8 ; bank A0, originally 7fd8 +A19C06,replace,2,9fd8 ; bank A0, originally 7fd8 +A19C16,replace,2,9fd8 ; bank A0, originally 7fd8 +A19C26,replace,2,9fd8 ; bank A0, originally 7fd8 +A19C36,replace,2,9fd8 ; bank A0, originally 7fd8 +A19C46,replace,2,9fd8 ; bank A0, originally 7fd8 +A19C56,replace,2,9fd8 ; bank A0, originally 7fd8 +A19C66,replace,2,9fea ; bank A0, originally 7fea +A19C76,replace,2,9fea ; bank A0, originally 7fea +A19C86,replace,2,9fea ; bank A0, originally 7fea +A19C96,replace,2,9fea ; bank A0, originally 7fea +A19CA6,replace,2,9fea ; bank A0, originally 7fea +A19CB9,replace,2,5fd9 ; bank A0, originally 3fd9 +A19CC9,replace,2,5fd9 ; bank A0, originally 3fd9 +A19CD9,replace,2,5fd9 ; bank A0, originally 3fd9 +A19CE9,replace,2,73f2 ; bank A0, originally 53f2 +A19CF9,replace,2,73f2 ; bank A0, originally 53f2 +A19D09,replace,2,73f2 ; bank A0, originally 53f2 +A19D19,replace,2,73f2 ; bank A0, originally 53f2 +A19D29,replace,2,73f2 ; bank A0, originally 53f2 +A19D39,replace,2,5fd9 ; bank A0, originally 3fd9 +A19D49,replace,2,5fd9 ; bank A0, originally 3fd9 +A19D5C,replace,2,9fdc ; bank A0, originally 7fdc +A19D6C,replace,2,9fdc ; bank A0, originally 7fdc +A19D7C,replace,2,9fd6 ; bank A0, originally 7fd6 +A19D8C,replace,2,9fd6 ; bank A0, originally 7fd6 +A19D9C,replace,2,9fd6 ; bank A0, originally 7fd6 +A19DAC,replace,2,9fd2 ; bank A0, originally 7fd2 +A19DBC,replace,2,9fd2 ; bank A0, originally 7fd2 +A19DCC,replace,2,9fd2 ; bank A0, originally 7fd2 +A19DDC,replace,2,1fe6 ; bank A0, originally ffe5 +A19DEC,replace,2,1fe6 ; bank A0, originally ffe5 +A19DFC,replace,2,1fe6 ; bank A0, originally ffe5 +A19E0C,replace,2,1fe6 ; bank A0, originally ffe5 +A19E1C,replace,2,1fe6 ; bank A0, originally ffe5 +A19E2F,replace,2,9fdc ; bank A0, originally 7fdc +A19E3F,replace,2,9fdc ; bank A0, originally 7fdc +A19E4F,replace,2,9fdc ; bank A0, originally 7fdc +A19E5F,replace,2,9fdc ; bank A0, originally 7fdc +A19E6F,replace,2,f3f1 ; bank A0, originally d3f1 +A19E7F,replace,2,f3f1 ; bank A0, originally d3f1 +A19E8F,replace,2,f3f1 ; bank A0, originally d3f1 +A19E9F,replace,2,f3f1 ; bank A0, originally d3f1 +A19EB5,replace,2,dfe2 ; bank A0, originally bfe2 +A19EC5,replace,2,1fe3 ; bank A0, originally ffe2 +A19ED5,replace,2,5fe3 ; bank A0, originally 3fe3 +A19EE5,replace,2,9fe3 ; bank A0, originally 7fe3 +A19EF5,replace,2,dfe3 ; bank A0, originally bfe3 +A19F05,replace,2,1fe4 ; bank A0, originally ffe3 +A19F15,replace,2,5fe4 ; bank A0, originally 3fe4 +A19F25,replace,2,9fe4 ; bank A0, originally 7fe4 +A19F3B,replace,2,5fd5 ; bank A0, originally 3fd5 +A19F4B,replace,2,5fd5 ; bank A0, originally 3fd5 +A19F61,replace,2,dfce ; bank A0, originally bfce +A19F71,replace,2,dfce ; bank A0, originally bfce +A19F81,replace,2,dfce ; bank A0, originally bfce +A19F91,replace,2,dfce ; bank A0, originally bfce +A19FA4,replace,2,b3f1 ; bank A0, originally 93f1 +A19FB4,replace,2,9fd8 ; bank A0, originally 7fd8 +A19FC4,replace,2,9fd8 ; bank A0, originally 7fd8 +A19FD4,replace,2,9fd8 ; bank A0, originally 7fd8 +A19FE4,replace,2,9fd8 ; bank A0, originally 7fd8 +A19FF4,replace,2,9fd8 ; bank A0, originally 7fd8 +A1A004,replace,2,9fd8 ; bank A0, originally 7fd8 +A1A014,replace,2,9fd8 ; bank A0, originally 7fd8 +A1A024,replace,2,9fd8 ; bank A0, originally 7fd8 +A1A034,replace,2,9fd8 ; bank A0, originally 7fd8 +A1A044,replace,2,9fd8 ; bank A0, originally 7fd8 +A1A057,replace,2,5fd7 ; bank A0, originally 3fd7 +A1A067,replace,2,dfd7 ; bank A0, originally bfd7 +A1A077,replace,2,dfd7 ; bank A0, originally bfd7 +A1A087,replace,2,dfd7 ; bank A0, originally bfd7 +A1A097,replace,2,1fd0 ; bank A0, originally ffcf +A1A0A7,replace,2,1fd0 ; bank A0, originally ffcf +A1A0BA,replace,2,b3f6 ; bank A0, originally 93f6 +A1A0CA,replace,2,b3f6 ; bank A0, originally 93f6 +A1A0DA,replace,2,b3f6 ; bank A0, originally 93f6 +A1A0EA,replace,2,1fe1 ; bank A0, originally ffe0 +A1A0FD,replace,2,5fdf ; bank A0, originally 3fdf +A1A110,replace,2,9fdb ; bank A0, originally 7fdb +A1A120,replace,2,9fdb ; bank A0, originally 7fdb +A1A133,replace,2,33f2 ; bank A0, originally 13f2 +A1A143,replace,2,33f2 ; bank A0, originally 13f2 +A1A153,replace,2,33f2 ; bank A0, originally 13f2 +A1A163,replace,2,33f2 ; bank A0, originally 13f2 +A1A173,replace,2,33f2 ; bank A0, originally 13f2 +A1A183,replace,2,dfcf ; bank A0, originally bfcf +A1A193,replace,2,dfcf ; bank A0, originally bfcf +A1A1A3,replace,2,dfcf ; bank A0, originally bfcf +A1A1B3,replace,2,dfcf ; bank A0, originally bfcf +A1A1C3,replace,2,dfcf ; bank A0, originally bfcf +A1A1D6,replace,2,dfda ; bank A0, originally bfda +A1A1E6,replace,2,dfda ; bank A0, originally bfda +A1A1F6,replace,2,dfda ; bank A0, originally bfda +A1A206,replace,2,dfda ; bank A0, originally bfda +A1A219,replace,2,b3f5 ; bank A0, originally 93f5 +A1A229,replace,2,b3f5 ; bank A0, originally 93f5 +A1A23C,replace,2,1ff1 ; bank A0, originally fff0 +A1A24C,replace,2,5fe8 ; bank A0, originally 3fe8 +A1A25C,replace,2,5fe8 ; bank A0, originally 3fe8 +A1A26C,replace,2,5fe8 ; bank A0, originally 3fe8 +A1A27C,replace,2,5fd3 ; bank A0, originally 3fd3 +A1A28C,replace,2,5fd3 ; bank A0, originally 3fd3 +A1A29C,replace,2,5fd3 ; bank A0, originally 3fd3 +A1A2AC,replace,2,5fd3 ; bank A0, originally 3fd3 +A1A2BC,replace,2,5fd3 ; bank A0, originally 3fd3 +A1A2CC,replace,2,5fd3 ; bank A0, originally 3fd3 +A1A2DF,replace,2,33f2 ; bank A0, originally 13f2 +A1A2EF,replace,2,33f2 ; bank A0, originally 13f2 +A1A2FF,replace,2,33f2 ; bank A0, originally 13f2 +A1A30F,replace,2,33f2 ; bank A0, originally 13f2 +A1A31F,replace,2,33f2 ; bank A0, originally 13f2 +A1A332,replace,2,1fd5 ; bank A0, originally ffd4 +A1A340,replace,1,10 +A1A342,replace,2,1fd5 ; bank A0, originally ffd4 +A1A34E,replace,1,70 +A1A352,replace,2,9fd9 ; bank A0, originally 7fd9 +A1A362,replace,2,9fd9 ; bank A0, originally 7fd9 +A1A372,replace,2,9fd9 ; bank A0, originally 7fd9 +A1A382,replace,2,5fd1 ; bank A0, originally 3fd1 +A1A392,replace,2,5fd1 ; bank A0, originally 3fd1 +A1A3A2,replace,2,5fd1 ; bank A0, originally 3fd1 +A1A3B2,replace,2,5fd1 ; bank A0, originally 3fd1 +A1A3C2,replace,2,5fd1 ; bank A0, originally 3fd1 +A1A3D2,replace,2,5fd1 ; bank A0, originally 3fd1 +A1A3E2,replace,2,dfdc ; bank A0, originally bfdc +A1A3F5,replace,2,dfe7 ; bank A0, originally bfe7 +A1A405,replace,2,dfe7 ; bank A0, originally bfe7 +A1A415,replace,2,dfe7 ; bank A0, originally bfe7 +A1A428,replace,2,dfeb ; bank A0, originally bfeb +A1A438,replace,2,1fec ; bank A0, originally ffeb +A1A448,replace,2,dfeb ; bank A0, originally bfeb +A1A458,replace,2,1fec ; bank A0, originally ffeb +A1A468,replace,2,dfeb ; bank A0, originally bfeb +A1A478,replace,2,1fec ; bank A0, originally ffeb +A1A48B,replace,2,5fd4 ; bank A0, originally 3fd4 +A1A49B,replace,2,5fd4 ; bank A0, originally 3fd4 +A1A4AB,replace,2,5fd4 ; bank A0, originally 3fd4 +A1A4BB,replace,2,5fd4 ; bank A0, originally 3fd4 +A1A4CB,replace,2,5fd4 ; bank A0, originally 3fd4 +A1A4DB,replace,2,5fd4 ; bank A0, originally 3fd4 +A1A4F1,replace,2,33f4 ; bank A0, originally 13f4 +A1A501,replace,2,33f4 ; bank A0, originally 13f4 +A1A511,replace,2,33f7 ; bank A0, originally 13f7 +A1A521,replace,2,dfda ; bank A0, originally bfda +A1A531,replace,2,dfda ; bank A0, originally bfda +A1A544,replace,2,5fd7 ; bank A0, originally 3fd7 +A1A560,replace,2,5fda ; bank A0, originally 3fda +A1A570,replace,2,5fda ; bank A0, originally 3fda +A1A580,replace,2,5fda ; bank A0, originally 3fda +A1A590,replace,2,5fda ; bank A0, originally 3fda +A1A5A0,replace,2,5fda ; bank A0, originally 3fda +A1A5B0,replace,2,dfd1 ; bank A0, originally bfd1 +A1A5C0,replace,2,dfd1 ; bank A0, originally bfd1 +A1A5D0,replace,2,dfd1 ; bank A0, originally bfd1 +A1A5E0,replace,2,dfd1 ; bank A0, originally bfd1 +A1A5F0,replace,2,dfd1 ; bank A0, originally bfd1 +A1A600,replace,2,dfd1 ; bank A0, originally bfd1 +A1A610,replace,2,dfd1 ; bank A0, originally bfd1 +A1A626,replace,2,9fe1 ; bank A0, originally 7fe1 +A1A645,replace,2,9fe8 ; bank A0, originally 7fe8 +A1A655,replace,2,9fe8 ; bank A0, originally 7fe8 +A1A665,replace,2,9fe8 ; bank A0, originally 7fe8 +A1A675,replace,2,9fe8 ; bank A0, originally 7fe8 +A1A685,replace,2,9fe8 ; bank A0, originally 7fe8 +A1A695,replace,2,9fe8 ; bank A0, originally 7fe8 +A1A6A8,replace,2,dfd2 ; bank A0, originally bfd2 +A1A6B8,replace,2,dfd2 ; bank A0, originally bfd2 +A1A6C8,replace,2,dfdc ; bank A0, originally bfdc +A1A6D8,replace,2,dfdc ; bank A0, originally bfdc +A1A6E8,replace,2,dfdc ; bank A0, originally bfdc +A1A6F8,replace,2,dfdc ; bank A0, originally bfdc +A1A708,replace,2,dfdc ; bank A0, originally bfdc +A1A718,replace,2,dfd4 ; bank A0, originally bfd4 +A1A728,replace,2,dfd4 ; bank A0, originally bfd4 +A1A738,replace,2,dfd4 ; bank A0, originally bfd4 +A1A748,replace,2,dfd4 ; bank A0, originally bfd4 +A1A758,replace,2,dfd4 ; bank A0, originally bfd4 +A1A768,replace,2,dfd4 ; bank A0, originally bfd4 +A1A778,replace,2,dfd4 ; bank A0, originally bfd4 +A1A788,replace,2,dfd4 ; bank A0, originally bfd4 +A1A798,replace,2,dfd2 ; bank A0, originally bfd2 +A1A7A8,replace,2,dfd2 ; bank A0, originally bfd2 +A1A7BB,replace,2,33f2 ; bank A0, originally 13f2 +A1A7CB,replace,2,33f2 ; bank A0, originally 13f2 +A1A7DB,replace,2,33f2 ; bank A0, originally 13f2 +A1A7EB,replace,2,33f2 ; bank A0, originally 13f2 +A1A7FB,replace,2,33f2 ; bank A0, originally 13f2 +A1A80B,replace,2,1fd4 ; bank A0, originally ffd3 +A1A81B,replace,2,5fd8 ; bank A0, originally 3fd8 +A1A82E,replace,2,5fe7 ; bank A0, originally 3fe7 +A1A83E,replace,2,33f4 ; bank A0, originally 13f4 +A1A84E,replace,2,33f4 ; bank A0, originally 13f4 +A1A85E,replace,2,33f4 ; bank A0, originally 13f4 +A1A86E,replace,2,5fe7 ; bank A0, originally 3fe7 +A1A87E,replace,2,33f7 ; bank A0, originally 13f7 +A1A88E,replace,2,5fe7 ; bank A0, originally 3fe7 +A1A89E,replace,2,33f7 ; bank A0, originally 13f7 +A1A8AE,replace,2,5fe7 ; bank A0, originally 3fe7 +A1A8BE,replace,2,5fe7 ; bank A0, originally 3fe7 +A1A8CE,replace,2,33f7 ; bank A0, originally 13f7 +A1A8E1,replace,2,1fe7 ; bank A0, originally ffe6 +A1A8F1,replace,2,1fe7 ; bank A0, originally ffe6 +A1A901,replace,2,1fd6 ; bank A0, originally ffd5 +A1A911,replace,2,1fd6 ; bank A0, originally ffd5 +A1A921,replace,2,1fd6 ; bank A0, originally ffd5 +A1A931,replace,2,1fd6 ; bank A0, originally ffd5 +A1A941,replace,2,1fe8 ; bank A0, originally ffe7 +A1A951,replace,2,1fd4 ; bank A0, originally ffd3 +A1A967,replace,2,f3f6 ; bank A0, originally d3f6 +A1A977,replace,2,f3f6 ; bank A0, originally d3f6 +A1A987,replace,2,f3f6 ; bank A0, originally d3f6 +A1A997,replace,2,5fdd ; bank A0, originally 3fdd +A1A9A7,replace,2,5fdd ; bank A0, originally 3fdd +A1A9B7,replace,2,5fdd ; bank A0, originally 3fdd +A1A9C7,replace,2,5fdd ; bank A0, originally 3fdd +A1A9DA,replace,2,f3f6 ; bank A0, originally d3f6 +A1A9EA,replace,2,dfd1 ; bank A0, originally bfd1 +A1A9FA,replace,2,f3f6 ; bank A0, originally d3f6 +A1AA0A,replace,2,dfd1 ; bank A0, originally bfd1 +A1AA1A,replace,2,f3f6 ; bank A0, originally d3f6 +A1AA2A,replace,2,dfd1 ; bank A0, originally bfd1 +A1AA3A,replace,2,dfd1 ; bank A0, originally bfd1 +A1AA4A,replace,2,f3f6 ; bank A0, originally d3f6 +A1AA5A,replace,2,f3f6 ; bank A0, originally d3f6 +A1AA6A,replace,2,1fd0 ; bank A0, originally ffcf +A1AA7A,replace,2,1fd0 ; bank A0, originally ffcf +A1AA8D,replace,2,5fd3 ; bank A0, originally 3fd3 +A1AA9D,replace,2,5fd3 ; bank A0, originally 3fd3 +A1AAAD,replace,2,5fd3 ; bank A0, originally 3fd3 +A1AABD,replace,2,5fd3 ; bank A0, originally 3fd3 +A1AACD,replace,2,5fd3 ; bank A0, originally 3fd3 +A1AADD,replace,2,5fd3 ; bank A0, originally 3fd3 +A1AAED,replace,2,5fd3 ; bank A0, originally 3fd3 +A1AAFD,replace,2,5fd3 ; bank A0, originally 3fd3 +A1AB0D,replace,2,5fd3 ; bank A0, originally 3fd3 +A1AB1D,replace,2,5fd3 ; bank A0, originally 3fd3 +A1AB2D,replace,2,5fd3 ; bank A0, originally 3fd3 +A1AB3D,replace,2,5fd3 ; bank A0, originally 3fd3 +A1AB4D,replace,2,f3f1 ; bank A0, originally d3f1 +A1AB5D,replace,2,f3f1 ; bank A0, originally d3f1 +A1AB6D,replace,2,f3f1 ; bank A0, originally d3f1 +A1AB80,replace,2,1fe7 ; bank A0, originally ffe6 +A1AB90,replace,2,1fe7 ; bank A0, originally ffe6 +A1ABA0,replace,2,1fe7 ; bank A0, originally ffe6 +A1ABB0,replace,2,1fe7 ; bank A0, originally ffe6 +A1ABC0,replace,2,1fe7 ; bank A0, originally ffe6 +A1ABD0,replace,2,dfdf ; bank A0, originally bfdf +A1ABE0,replace,2,dfdf ; bank A0, originally bfdf +A1ABF0,replace,2,dfdf ; bank A0, originally bfdf +A1AC00,replace,2,dfd6 ; bank A0, originally bfd6 +A1AC10,replace,2,dfd6 ; bank A0, originally bfd6 +A1AC20,replace,2,dfd6 ; bank A0, originally bfd6 +A1AC30,replace,2,dfd6 ; bank A0, originally bfd6 +A1AC40,replace,2,dfd6 ; bank A0, originally bfd6 +A1AC53,replace,2,5fe8 ; bank A0, originally 3fe8 +A1AC63,replace,2,5fe8 ; bank A0, originally 3fe8 +A1AC73,replace,2,5fe8 ; bank A0, originally 3fe8 +A1AC83,replace,2,5fe8 ; bank A0, originally 3fe8 +A1AC93,replace,2,5fe8 ; bank A0, originally 3fe8 +A1ACA3,replace,2,5fe8 ; bank A0, originally 3fe8 +A1ACB3,replace,2,5fe8 ; bank A0, originally 3fe8 +A1ACC3,replace,2,5fe8 ; bank A0, originally 3fe8 +A1ACD3,replace,2,5fe8 ; bank A0, originally 3fe8 +A1ACE3,replace,2,dfd1 ; bank A0, originally bfd1 +A1ACF3,replace,2,dfd1 ; bank A0, originally bfd1 +A1AD09,replace,2,5fe7 ; bank A0, originally 3fe7 +A1AD19,replace,2,5fe7 ; bank A0, originally 3fe7 +A1AD29,replace,2,5fe7 ; bank A0, originally 3fe7 +A1AD39,replace,2,5fe7 ; bank A0, originally 3fe7 +A1AD49,replace,2,5fe7 ; bank A0, originally 3fe7 +A1AD59,replace,2,5fe7 ; bank A0, originally 3fe7 +A1AD6C,replace,2,dfe0 ; bank A0, originally bfe0 +A1AD7C,replace,2,dfe0 ; bank A0, originally bfe0 +A1AD8F,replace,2,dfd4 ; bank A0, originally bfd4 +A1AD9F,replace,2,dfd4 ; bank A0, originally bfd4 +A1ADAF,replace,2,1fd3 ; bank A0, originally ffd2 +A1ADBF,replace,2,1fd3 ; bank A0, originally ffd2 +A1ADCF,replace,2,dfd4 ; bank A0, originally bfd4 +A1ADDF,replace,2,dfd4 ; bank A0, originally bfd4 +A1ADEF,replace,2,dfd4 ; bank A0, originally bfd4 +A1ADFF,replace,2,dfd4 ; bank A0, originally bfd4 +A1AE0F,replace,2,dfd4 ; bank A0, originally bfd4 +A1AE1F,replace,2,dfd4 ; bank A0, originally bfd4 +A1AE2F,replace,2,dfd4 ; bank A0, originally bfd4 +A1AE3F,replace,2,dfd4 ; bank A0, originally bfd4 +A1AE52,replace,2,dfe9 ; bank A0, originally bfe9 +A1AE62,replace,2,dfe9 ; bank A0, originally bfe9 +A1AE72,replace,2,dfe9 ; bank A0, originally bfe9 +A1AE82,replace,2,dfe9 ; bank A0, originally bfe9 +A1AE92,replace,2,dfe9 ; bank A0, originally bfe9 +A1AEB1,replace,2,5fd5 ; bank A0, originally 3fd5 +A1AEC1,replace,2,5fd5 ; bank A0, originally 3fd5 +A1AED1,replace,2,1fd3 ; bank A0, originally ffd2 +A1AEE1,replace,2,1fd3 ; bank A0, originally ffd2 +A1AEF4,replace,2,33f7 ; bank A0, originally 13f7 +A1AF04,replace,2,33f7 ; bank A0, originally 13f7 +A1AF14,replace,2,33f7 ; bank A0, originally 13f7 +A1AF24,replace,2,33f7 ; bank A0, originally 13f7 +A1AF34,replace,2,33f7 ; bank A0, originally 13f7 +A1AF44,replace,2,33f7 ; bank A0, originally 13f7 +A1AF54,replace,2,33f7 ; bank A0, originally 13f7 +A1AF64,replace,2,33f7 ; bank A0, originally 13f7 +A1AF74,replace,2,33f7 ; bank A0, originally 13f7 +A1AF87,replace,2,dfdc ; bank A0, originally bfdc +A1AF97,replace,2,dfdc ; bank A0, originally bfdc +A1AFA7,replace,2,dfdc ; bank A0, originally bfdc +A1AFB7,replace,2,dfdc ; bank A0, originally bfdc +A1AFC7,replace,2,9fd9 ; bank A0, originally 7fd9 +A1AFD7,replace,2,9fd9 ; bank A0, originally 7fd9 +A1AFEA,replace,2,5fd7 ; bank A0, originally 3fd7 +A1AFFA,replace,2,dfd4 ; bank A0, originally bfd4 +A1B00A,replace,2,dfd4 ; bank A0, originally bfd4 +A1B01A,replace,2,dfd4 ; bank A0, originally bfd4 +A1B02A,replace,2,dfd4 ; bank A0, originally bfd4 +A1B03A,replace,2,9fe0 ; bank A0, originally 7fe0 +A1B04A,replace,2,9fe0 ; bank A0, originally 7fe0 +A1B05A,replace,2,9fe0 ; bank A0, originally 7fe0 +A1B06A,replace,2,9fe0 ; bank A0, originally 7fe0 +A1B07A,replace,2,9fe0 ; bank A0, originally 7fe0 +A1B08A,replace,2,9fe0 ; bank A0, originally 7fe0 +A1B09A,replace,2,9fe0 ; bank A0, originally 7fe0 +A1B0AA,replace,2,9fe0 ; bank A0, originally 7fe0 +A1B0BA,replace,2,dfd4 ; bank A0, originally bfd4 +A1B0CA,replace,2,dfd4 ; bank A0, originally bfd4 +A1B0DA,replace,2,dfd4 ; bank A0, originally bfd4 +A1B0EA,replace,2,dfd4 ; bank A0, originally bfd4 +A1B0FA,replace,2,dfd4 ; bank A0, originally bfd4 +A1B10A,replace,2,dfd4 ; bank A0, originally bfd4 +A1B11D,replace,2,5fd1 ; bank A0, originally 3fd1 +A1B12D,replace,2,5fd1 ; bank A0, originally 3fd1 +A1B13D,replace,2,5fd1 ; bank A0, originally 3fd1 +A1B14D,replace,2,5fd1 ; bank A0, originally 3fd1 +A1B15D,replace,2,5fd1 ; bank A0, originally 3fd1 +A1B16D,replace,2,1fd4 ; bank A0, originally ffd3 +A1B17D,replace,2,1fd4 ; bank A0, originally ffd3 +A1B18D,replace,2,1fd4 ; bank A0, originally ffd3 +A1B19D,replace,2,1fd4 ; bank A0, originally ffd3 +A1B1AD,replace,2,5fd8 ; bank A0, originally 3fd8 +A1B1BD,replace,2,5fd8 ; bank A0, originally 3fd8 +A1B1CD,replace,2,5fd8 ; bank A0, originally 3fd8 +A1B1DD,replace,2,5fd8 ; bank A0, originally 3fd8 +A1B1F6,replace,2,dfdc ; bank A0, originally bfdc +A1B206,replace,2,dfdc ; bank A0, originally bfdc +A1B216,replace,2,dfdc ; bank A0, originally bfdc +A1B226,replace,2,dfdc ; bank A0, originally bfdc +A1B236,replace,2,dfdc ; bank A0, originally bfdc +A1B246,replace,2,dfdc ; bank A0, originally bfdc +A1B259,replace,2,9fe0 ; bank A0, originally 7fe0 +A1B269,replace,2,9fe0 ; bank A0, originally 7fe0 +A1B279,replace,2,5fda ; bank A0, originally 3fda +A1B289,replace,2,5fda ; bank A0, originally 3fda +A1B299,replace,2,5fda ; bank A0, originally 3fda +A1B2A9,replace,2,5fda ; bank A0, originally 3fda +A1B2B9,replace,2,9fe0 ; bank A0, originally 7fe0 +A1B2C9,replace,2,9fe0 ; bank A0, originally 7fe0 +A1B2D9,replace,2,5fd5 ; bank A0, originally 3fd5 +A1B2E9,replace,2,1fe0 ; bank A0, originally ffdf +A1B2F9,replace,2,5fe0 ; bank A0, originally 3fe0 +A1B309,replace,2,1fe0 ; bank A0, originally ffdf +A1B319,replace,2,5fe0 ; bank A0, originally 3fe0 +A1B32C,replace,2,33f2 ; bank A0, originally 13f2 +A1B33C,replace,2,33f2 ; bank A0, originally 13f2 +A1B34C,replace,2,33f2 ; bank A0, originally 13f2 +A1B35C,replace,2,33f2 ; bank A0, originally 13f2 +A1B36C,replace,2,33f2 ; bank A0, originally 13f2 +A1B37C,replace,2,dfd4 ; bank A0, originally bfd4 +A1B38C,replace,2,dfd4 ; bank A0, originally bfd4 +A1B39C,replace,2,dfd4 ; bank A0, originally bfd4 +A1B3AC,replace,2,dfd4 ; bank A0, originally bfd4 +A1B3C5,replace,2,dfdc ; bank A0, originally bfdc +A1B3D1,replace,1,05 +A1B3D8,replace,2,5fd4 ; bank A0, originally 3fd4 +A1B3E8,replace,2,dfdc ; bank A0, originally bfdc +A1B3F8,replace,2,dfdc ; bank A0, originally bfdc +A1B408,replace,2,dfdc ; bank A0, originally bfdc +A1B418,replace,2,5fd6 ; bank A0, originally 3fd6 +A1B428,replace,2,5fd6 ; bank A0, originally 3fd6 +A1B438,replace,2,5fd6 ; bank A0, originally 3fd6 +A1B448,replace,2,1fd0 ; bank A0, originally ffcf +A1B45B,replace,2,1fd8 ; bank A0, originally ffd7 +A1B46B,replace,2,1fd8 ; bank A0, originally ffd7 +A1B47B,replace,2,1fd8 ; bank A0, originally ffd7 +A1B48E,replace,2,dfce ; bank A0, originally bfce +A1B492,replace,1,d5 +A1B49E,replace,2,dfce ; bank A0, originally bfce +A1B4A2,replace,1,d5 +A1B4AE,replace,2,dfce ; bank A0, originally bfce +A1B4B2,replace,1,d5 +A1B4BE,replace,2,5fd4 ; bank A0, originally 3fd4 +A1B4D1,replace,2,9fd6 ; bank A0, originally 7fd6 +A1B4E1,replace,2,9fd6 ; bank A0, originally 7fd6 +A1B4F1,replace,2,33f2 ; bank A0, originally 13f2 +A1B501,replace,2,33f2 ; bank A0, originally 13f2 +A1B511,replace,2,33f2 ; bank A0, originally 13f2 +A1B521,replace,2,33f2 ; bank A0, originally 13f2 +A1B531,replace,2,33f2 ; bank A0, originally 13f2 +A1B544,replace,2,1fd3 ; bank A0, originally ffd2 +A1B554,replace,2,1fd3 ; bank A0, originally ffd2 +A1B564,replace,2,1fd3 ; bank A0, originally ffd2 +A1B574,replace,2,1fd3 ; bank A0, originally ffd2 +A1B584,replace,2,1fd3 ; bank A0, originally ffd2 +A1B594,replace,2,1fd3 ; bank A0, originally ffd2 +A1B5A4,replace,2,dfdc ; bank A0, originally bfdc +A1B5B4,replace,2,dfdc ; bank A0, originally bfdc +A1B5C4,replace,2,dfdc ; bank A0, originally bfdc +A1B5D4,replace,2,dfdc ; bank A0, originally bfdc +A1B5E7,replace,2,dfd4 ; bank A0, originally bfd4 +A1B5F7,replace,2,dfd4 ; bank A0, originally bfd4 +A1B607,replace,2,dfd4 ; bank A0, originally bfd4 +A1B617,replace,2,dfd4 ; bank A0, originally bfd4 +A1B627,replace,2,dfd4 ; bank A0, originally bfd4 +A1B637,replace,2,dfd4 ; bank A0, originally bfd4 +A1B647,replace,2,dfdc ; bank A0, originally bfdc +A1B657,replace,2,dfdc ; bank A0, originally bfdc +A1B667,replace,2,dfdc ; bank A0, originally bfdc +A1B67A,replace,2,1fe7 ; bank A0, originally ffe6 +A1B68A,replace,2,1fe7 ; bank A0, originally ffe6 +A1B69A,replace,2,1fe7 ; bank A0, originally ffe6 +A1B6AD,replace,2,dfdc ; bank A0, originally bfdc +A1B6B9,replace,1,02 +A1B6BD,replace,2,dfdc ; bank A0, originally bfdc +A1B6C9,replace,1,02 +A1B6CD,replace,2,dfdc ; bank A0, originally bfdc +A1B6D9,replace,1,02 +A1B6DD,replace,2,1fe7 ; bank A0, originally ffe6 +A1B6ED,replace,2,1fe7 ; bank A0, originally ffe6 +A1B6FD,replace,2,1fe7 ; bank A0, originally ffe6 +A1B70D,replace,2,1fe7 ; bank A0, originally ffe6 +A1B720,replace,2,9fef ; bank A0, originally 7fef +A1B733,replace,2,1fd8 ; bank A0, originally ffd7 +A1B743,replace,2,1fd8 ; bank A0, originally ffd7 +A1B753,replace,2,5fd5 ; bank A0, originally 3fd5 +A1B769,replace,2,dfda ; bank A0, originally bfda +A1B779,replace,2,dfda ; bank A0, originally bfda +A1B789,replace,2,dfda ; bank A0, originally bfda +A1B799,replace,2,dfda ; bank A0, originally bfda +A1B7A9,replace,2,dfda ; bank A0, originally bfda +A1B7B9,replace,2,f3f1 ; bank A0, originally d3f1 +A1B7C9,replace,2,f3f1 ; bank A0, originally d3f1 +A1B7D9,replace,2,f3f1 ; bank A0, originally d3f1 +A1B7E9,replace,2,f3f1 ; bank A0, originally d3f1 +A1B7F9,replace,2,f3f1 ; bank A0, originally d3f1 +A1B809,replace,2,f3f1 ; bank A0, originally d3f1 +A1B81C,replace,2,dfd1 ; bank A0, originally bfd1 +A1B828,replace,1,d8 +A1B82C,replace,2,dfd1 ; bank A0, originally bfd1 +A1B83C,replace,2,dfd1 ; bank A0, originally bfd1 +A1B848,replace,1,98 +A1B84C,replace,2,dfe9 ; bank A0, originally bfe9 +A1B85C,replace,2,dfe9 ; bank A0, originally bfe9 +A1B86C,replace,2,dfe9 ; bank A0, originally bfe9 +A1B87C,replace,2,dfe9 ; bank A0, originally bfe9 +A1B88F,replace,2,1fd3 ; bank A0, originally ffd2 +A1B89F,replace,2,1fd3 ; bank A0, originally ffd2 +A1B8AF,replace,2,1fd3 ; bank A0, originally ffd2 +A1B8BF,replace,2,1fd3 ; bank A0, originally ffd2 +A1B8CF,replace,2,1fd3 ; bank A0, originally ffd2 +A1B8DF,replace,2,1fd3 ; bank A0, originally ffd2 +A1B8EF,replace,2,9fd6 ; bank A0, originally 7fd6 +A1B8FF,replace,2,9fd6 ; bank A0, originally 7fd6 +A1B912,replace,2,33f2 ; bank A0, originally 13f2 +A1B922,replace,2,33f2 ; bank A0, originally 13f2 +A1B932,replace,2,33f2 ; bank A0, originally 13f2 +A1B942,replace,2,33f2 ; bank A0, originally 13f2 +A1B952,replace,2,33f2 ; bank A0, originally 13f2 +A1B962,replace,2,9fdb ; bank A0, originally 7fdb +A1B972,replace,2,9fdb ; bank A0, originally 7fdb +A1B982,replace,2,9fdb ; bank A0, originally 7fdb +A1B995,replace,2,dfda ; bank A0, originally bfda +A1B9A5,replace,2,dfda ; bank A0, originally bfda +A1B9B5,replace,2,dfda ; bank A0, originally bfda +A1B9C5,replace,2,dfda ; bank A0, originally bfda +A1B9D8,replace,2,5fd7 ; bank A0, originally 3fd7 +A1B9E8,replace,2,dfdc ; bank A0, originally bfdc +A1B9F8,replace,2,dfdc ; bank A0, originally bfdc +A1BA08,replace,2,dfdc ; bank A0, originally bfdc +A1BA18,replace,2,dfdc ; bank A0, originally bfdc +A1BA28,replace,2,dfdc ; bank A0, originally bfdc +A1BA38,replace,2,dfdc ; bank A0, originally bfdc +A1BA4B,replace,2,9fe0 ; bank A0, originally 7fe0 +A1BA5B,replace,2,9fe0 ; bank A0, originally 7fe0 +A1BA6B,replace,2,9fe0 ; bank A0, originally 7fe0 +A1BA7B,replace,2,9fe0 ; bank A0, originally 7fe0 +A1BA8B,replace,2,dfeb ; bank A0, originally bfeb +A1BA9B,replace,2,1fec ; bank A0, originally ffeb +A1BAAB,replace,2,dfeb ; bank A0, originally bfeb +A1BABB,replace,2,1fec ; bank A0, originally ffeb +A1BACB,replace,2,dfeb ; bank A0, originally bfeb +A1BADB,replace,2,1fec ; bank A0, originally ffeb +A1BAEB,replace,2,5fd5 ; bank A0, originally 3fd5 +A1BAFB,replace,2,5fd5 ; bank A0, originally 3fd5 +A1BB0E,replace,2,dfdd ; bank A0, originally bfdd +A1BB14,replace,2,43bd ; bank A4, originally 2abd +A1BB1E,replace,2,1fde ; bank A0, originally ffdd +A1BB24,replace,2,43bd ; bank A4, originally 2abd +A1BB34,replace,2,1fe7 ; bank A0, originally ffe6 +A1BB44,replace,2,1fe7 ; bank A0, originally ffe6 +A1BB54,replace,2,1fe7 ; bank A0, originally ffe6 +A1BB64,replace,2,1fe7 ; bank A0, originally ffe6 +A1BB74,replace,2,1fe7 ; bank A0, originally ffe6 +A1BB84,replace,2,1fe7 ; bank A0, originally ffe6 +A1BB94,replace,2,1fd2 ; bank A0, originally ffd1 +A1BBA4,replace,2,1fd2 ; bank A0, originally ffd1 +A1BBB4,replace,2,1fd2 ; bank A0, originally ffd1 +A1BBC4,replace,2,1fd2 ; bank A0, originally ffd1 +A1BBD7,replace,2,1fe7 ; bank A0, originally ffe6 +A1BBE7,replace,2,33f2 ; bank A0, originally 13f2 +A1BBF7,replace,2,33f2 ; bank A0, originally 13f2 +A1BC07,replace,2,33f2 ; bank A0, originally 13f2 +A1BC17,replace,2,33f2 ; bank A0, originally 13f2 +A1BC27,replace,2,33f2 ; bank A0, originally 13f2 +A1BC3A,replace,2,9fe9 ; bank A0, originally 7fe9 +A1BC4D,replace,2,1fd7 ; bank A0, originally ffd6 +A1BC5D,replace,2,1fd7 ; bank A0, originally ffd6 +A1BC6D,replace,2,5fd8 ; bank A0, originally 3fd8 +A1BC7D,replace,2,5fd8 ; bank A0, originally 3fd8 +A1BC8D,replace,2,5fd8 ; bank A0, originally 3fd8 +A1BCA0,replace,2,9fe7 ; bank A0, originally 7fe7 +A1BCB0,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BCC0,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BCD0,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BCE0,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BCF0,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BD00,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BD10,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BD20,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BD30,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BD40,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BD50,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BD60,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BD70,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BD80,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BD90,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BDA0,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BDB0,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BDC0,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BDD0,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BDE0,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BDF0,replace,2,1fe0 ; bank A0, originally ffdf +A1BE00,replace,2,5fe0 ; bank A0, originally 3fe0 +A1BE10,replace,2,1fe0 ; bank A0, originally ffdf +A1BE20,replace,2,5fe0 ; bank A0, originally 3fe0 +A1BE30,replace,2,1fe0 ; bank A0, originally ffdf +A1BE40,replace,2,5fe0 ; bank A0, originally 3fe0 +A1BE50,replace,2,1fe0 ; bank A0, originally ffdf +A1BE60,replace,2,5fe0 ; bank A0, originally 3fe0 +A1BE70,replace,2,1fea ; bank A0, originally ffe9 +A1BE80,replace,2,1fea ; bank A0, originally ffe9 +A1BE93,replace,2,1ff1 ; bank A0, originally fff0 +A1BEA3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BEB3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BEC3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BED3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BEE3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BEF3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BF03,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BF13,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BF23,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BF33,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BF43,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BF53,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BF63,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BF73,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BF83,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BF93,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BFA3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BFB3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BFC3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BFD3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1BFE6,replace,2,5feb ; bank A0, originally 3feb +A1BFF6,replace,2,9feb ; bank A0, originally 7feb +A1C006,replace,2,5feb ; bank A0, originally 3feb +A1C016,replace,2,9feb ; bank A0, originally 7feb +A1C026,replace,2,5feb ; bank A0, originally 3feb +A1C036,replace,2,9feb ; bank A0, originally 7feb +A1C046,replace,2,1fea ; bank A0, originally ffe9 +A1C056,replace,2,1fea ; bank A0, originally ffe9 +A1C066,replace,2,1fea ; bank A0, originally ffe9 +A1C076,replace,2,1fea ; bank A0, originally ffe9 +A1C086,replace,2,5feb ; bank A0, originally 3feb +A1C096,replace,2,9feb ; bank A0, originally 7feb +A1C0A6,replace,2,5fea ; bank A0, originally 3fea +A1C0B6,replace,2,5fea ; bank A0, originally 3fea +A1C0C6,replace,2,5fea ; bank A0, originally 3fea +A1C0D6,replace,2,5fea ; bank A0, originally 3fea +A1C0E6,replace,2,5fea ; bank A0, originally 3fea +A1C0F6,replace,2,5fea ; bank A0, originally 3fea +A1C106,replace,2,5fea ; bank A0, originally 3fea +A1C116,replace,2,5fea ; bank A0, originally 3fea +A1C126,replace,2,5fea ; bank A0, originally 3fea +A1C139,replace,2,1fe9 ; bank A0, originally ffe8 +A1C149,replace,2,1fe9 ; bank A0, originally ffe8 +A1C159,replace,2,1fea ; bank A0, originally ffe9 +A1C169,replace,2,1fea ; bank A0, originally ffe9 +A1C179,replace,2,1fea ; bank A0, originally ffe9 +A1C189,replace,2,5fea ; bank A0, originally 3fea +A1C1AE,replace,2,1ff1 ; bank A0, originally fff0 +A1C1BE,replace,2,1fe9 ; bank A0, originally ffe8 +A1C1CE,replace,2,1fe9 ; bank A0, originally ffe8 +A1C1ED,replace,2,9fe7 ; bank A0, originally 7fe7 +A1C1FD,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C20D,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C21D,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C22D,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C23D,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C24D,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C25D,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C26D,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C283,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C293,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C2A3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C2B3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C2C3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C2D3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C2E3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C2F3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C303,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C313,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C323,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C333,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C343,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C353,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C363,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C373,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C383,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C393,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C3A3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C3B3,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C3C3,replace,2,5fe9 ; bank A0, originally 3fe9 +A1C3D3,replace,2,5fe9 ; bank A0, originally 3fe9 +A1C3E6,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C3F6,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C406,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C416,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C426,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C436,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C446,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C456,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C466,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C476,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C486,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C496,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C4A6,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C4B6,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C4C6,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C4D6,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C4E6,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C4F6,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C506,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C516,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C526,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C536,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C546,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C556,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C566,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C576,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C586,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C596,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C5A6,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C5B6,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C5C6,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C5D6,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C5E9,replace,2,5fea ; bank A0, originally 3fea +A1C5F9,replace,2,5fea ; bank A0, originally 3fea +A1C609,replace,2,5fea ; bank A0, originally 3fea +A1C619,replace,2,5fea ; bank A0, originally 3fea +A1C629,replace,2,5fea ; bank A0, originally 3fea +A1C639,replace,2,5fea ; bank A0, originally 3fea +A1C649,replace,2,5fea ; bank A0, originally 3fea +A1C659,replace,2,5fea ; bank A0, originally 3fea +A1C669,replace,2,1fe9 ; bank A0, originally ffe8 +A1C679,replace,2,1fe9 ; bank A0, originally ffe8 +A1C689,replace,2,1fe9 ; bank A0, originally ffe8 +A1C69F,replace,2,5fea ; bank A0, originally 3fea +A1C6AF,replace,2,5fea ; bank A0, originally 3fea +A1C6BF,replace,2,5fea ; bank A0, originally 3fea +A1C6CF,replace,2,5fea ; bank A0, originally 3fea +A1C6DF,replace,2,5fea ; bank A0, originally 3fea +A1C6F2,replace,2,9fe7 ; bank A0, originally 7fe7 +A1C702,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C712,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C722,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C732,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C742,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C752,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C762,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C772,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C782,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C792,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C7A2,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C7B2,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C7C2,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C7D2,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C7E2,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C7F2,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C802,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C812,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C822,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C832,replace,2,1fea ; bank A0, originally ffe9 +A1C842,replace,2,1fea ; bank A0, originally ffe9 +A1C852,replace,2,1fea ; bank A0, originally ffe9 +A1C862,replace,2,1fea ; bank A0, originally ffe9 +A1C872,replace,2,1fea ; bank A0, originally ffe9 +A1C882,replace,2,1fea ; bank A0, originally ffe9 +A1C892,replace,2,1fea ; bank A0, originally ffe9 +A1C8A2,replace,2,1fea ; bank A0, originally ffe9 +A1C8B2,replace,2,1fea ; bank A0, originally ffe9 +A1C8C5,replace,2,9fe7 ; bank A0, originally 7fe7 +A1C8D5,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C8E5,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C8F5,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C905,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C915,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C925,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C935,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C945,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C955,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C965,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C975,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C985,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C995,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C9A5,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C9B5,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C9C5,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C9D5,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C9E5,replace,2,9fd8 ; bank A0, originally 7fd8 +A1C9F5,replace,2,9fd8 ; bank A0, originally 7fd8 +A1CA05,replace,2,9fd8 ; bank A0, originally 7fd8 +A1CA15,replace,2,5fe9 ; bank A0, originally 3fe9 +A1CA25,replace,2,5fe9 ; bank A0, originally 3fe9 +A1CA35,replace,2,1fea ; bank A0, originally ffe9 +A1CA45,replace,2,1fea ; bank A0, originally ffe9 +A1CA55,replace,2,1fea ; bank A0, originally ffe9 +A1CA65,replace,2,1fea ; bank A0, originally ffe9 +A1CA78,replace,2,9fe7 ; bank A0, originally 7fe7 +A1CA88,replace,2,9fd8 ; bank A0, originally 7fd8 +A1CA98,replace,2,9fd8 ; bank A0, originally 7fd8 +A1CAA8,replace,2,9fd8 ; bank A0, originally 7fd8 +A1CAB8,replace,2,9fd8 ; bank A0, originally 7fd8 +A1CAC8,replace,2,9fd8 ; bank A0, originally 7fd8 +A1CAD8,replace,2,9fd8 ; bank A0, originally 7fd8 +A1CAE8,replace,2,9fd8 ; bank A0, originally 7fd8 +A1CAF8,replace,2,9fd8 ; bank A0, originally 7fd8 +A1CB08,replace,2,9fd8 ; bank A0, originally 7fd8 +A1CB18,replace,2,9fd8 ; bank A0, originally 7fd8 +A1CB28,replace,2,9fd8 ; bank A0, originally 7fd8 +A1CB3B,replace,2,5fea ; bank A0, originally 3fea +A1CB4B,replace,2,5fea ; bank A0, originally 3fea +A1CB5B,replace,2,5fea ; bank A0, originally 3fea +A1CB6B,replace,2,5fea ; bank A0, originally 3fea +A1CB7B,replace,2,5fea ; bank A0, originally 3fea +A1CB8B,replace,2,5fea ; bank A0, originally 3fea +A1CB9B,replace,2,5fea ; bank A0, originally 3fea +A1CBAE,replace,2,1fe0 ; bank A0, originally ffdf +A1CBBE,replace,2,5fe0 ; bank A0, originally 3fe0 +A1CBCE,replace,2,1fe0 ; bank A0, originally ffdf +A1CBDE,replace,2,5fe0 ; bank A0, originally 3fe0 +A1CBEE,replace,2,1fe0 ; bank A0, originally ffdf +A1CBFE,replace,2,5fe0 ; bank A0, originally 3fe0 +A1CC0E,replace,2,1fe0 ; bank A0, originally ffdf +A1CC1E,replace,2,5fe0 ; bank A0, originally 3fe0 +A1CC2E,replace,2,1fe0 ; bank A0, originally ffdf +A1CC3E,replace,2,5fe0 ; bank A0, originally 3fe0 +A1CC51,replace,2,1fe9 ; bank A0, originally ffe8 +A1CC61,replace,2,1fe9 ; bank A0, originally ffe8 +A1CC71,replace,2,9fe9 ; bank A0, originally 7fe9 +A1CC81,replace,2,9fe9 ; bank A0, originally 7fe9 +A1CC91,replace,2,5fea ; bank A0, originally 3fea +A1CCA1,replace,2,5fea ; bank A0, originally 3fea +A1CCB1,replace,2,5fea ; bank A0, originally 3fea +A1CCC1,replace,2,5fea ; bank A0, originally 3fea +A1CCD4,replace,2,dfe4 ; bank A0, originally bfe4 +A1CCE4,replace,2,1fe5 ; bank A0, originally ffe4 +A1CCF4,replace,2,5fe5 ; bank A0, originally 3fe5 +A1CD04,replace,2,9fe5 ; bank A0, originally 7fe5 +A1CD17,replace,2,5fea ; bank A0, originally 3fea +A1CD27,replace,2,5fea ; bank A0, originally 3fea +A1CD37,replace,2,5fea ; bank A0, originally 3fea +A1CD47,replace,2,5fea ; bank A0, originally 3fea +A1CD57,replace,2,5fea ; bank A0, originally 3fea +A1CD67,replace,2,5fea ; bank A0, originally 3fea +A1CD77,replace,2,5fea ; bank A0, originally 3fea +A1CD87,replace,2,1fea ; bank A0, originally ffe9 +A1CD97,replace,2,1fea ; bank A0, originally ffe9 +A1CDA7,replace,2,1fea ; bank A0, originally ffe9 +A1CDB7,replace,2,1fea ; bank A0, originally ffe9 +A1CDC7,replace,2,1fe0 ; bank A0, originally ffdf +A1CDD7,replace,2,5fe0 ; bank A0, originally 3fe0 +A1CDE7,replace,2,1fe0 ; bank A0, originally ffdf +A1CDF7,replace,2,5fe0 ; bank A0, originally 3fe0 +A1CE07,replace,2,1fe0 ; bank A0, originally ffdf +A1CE17,replace,2,5fe0 ; bank A0, originally 3fe0 +A1CE27,replace,2,1fe0 ; bank A0, originally ffdf +A1CE37,replace,2,5fe0 ; bank A0, originally 3fe0 +A1CE47,replace,2,5fea ; bank A0, originally 3fea +A1CE57,replace,2,5fea ; bank A0, originally 3fea +A1CE6A,replace,2,dfe8 ; bank A0, originally bfe8 +A1CE7A,replace,2,dfe8 ; bank A0, originally bfe8 +A1CE8A,replace,2,dfe8 ; bank A0, originally bfe8 +A1CE9A,replace,2,dfe8 ; bank A0, originally bfe8 +A1CEAA,replace,2,dfe8 ; bank A0, originally bfe8 +A1CEBA,replace,2,dfe8 ; bank A0, originally bfe8 +A1CECA,replace,2,9fd7 ; bank A0, originally 7fd7 +A1CEDA,replace,2,9fd7 ; bank A0, originally 7fd7 +A1CEEA,replace,2,9fd7 ; bank A0, originally 7fd7 +A1CEFA,replace,2,9fd7 ; bank A0, originally 7fd7 +A1CF0A,replace,2,9fd7 ; bank A0, originally 7fd7 +A1CF1A,replace,2,9fd7 ; bank A0, originally 7fd7 +A1CF2D,replace,2,9fd3 ; bank A0, originally 7fd3 +A1CF3D,replace,2,9fd3 ; bank A0, originally 7fd3 +A1CF4D,replace,2,9fd3 ; bank A0, originally 7fd3 +A1CF5D,replace,2,1fd9 ; bank A0, originally ffd8 +A1CF6D,replace,2,1fd9 ; bank A0, originally ffd8 +A1CF7D,replace,2,1fd9 ; bank A0, originally ffd8 +A1CF90,replace,2,dfd3 ; bank A0, originally bfd3 +A1CFA0,replace,2,b3f1 ; bank A0, originally 93f1 +A1CFB0,replace,2,b3f1 ; bank A0, originally 93f1 +A1CFC3,replace,2,9fd7 ; bank A0, originally 7fd7 +A1CFCF,replace,1,02 +A1CFD3,replace,2,9fd7 ; bank A0, originally 7fd7 +A1CFE3,replace,2,9fd7 ; bank A0, originally 7fd7 +A1CFF3,replace,2,9fd7 ; bank A0, originally 7fd7 +A1D006,replace,2,5fd7 ; bank A0, originally 3fd7 +A1D016,replace,2,9fd4 ; bank A0, originally 7fd4 +A1D026,replace,2,9fd4 ; bank A0, originally 7fd4 +A1D036,replace,2,9fd4 ; bank A0, originally 7fd4 +A1D046,replace,2,9fd4 ; bank A0, originally 7fd4 +A1D056,replace,2,9fd4 ; bank A0, originally 7fd4 +A1D066,replace,2,9fd4 ; bank A0, originally 7fd4 +A1D076,replace,2,5fd0 ; bank A0, originally 3fd0 +A1D089,replace,2,1fd9 ; bank A0, originally ffd8 +A1D099,replace,2,1fd9 ; bank A0, originally ffd8 +A1D0A9,replace,2,1fd9 ; bank A0, originally ffd8 +A1D0B9,replace,2,1fd9 ; bank A0, originally ffd8 +A1D0C9,replace,2,1fd9 ; bank A0, originally ffd8 +A1D0D9,replace,2,1fd9 ; bank A0, originally ffd8 +A1D0E9,replace,2,1fd9 ; bank A0, originally ffd8 +A1D0F9,replace,2,1fd9 ; bank A0, originally ffd8 +A1D112,replace,2,dfcf ; bank A0, originally bfcf +A1D122,replace,2,dfcf ; bank A0, originally bfcf +A1D132,replace,2,dfcf ; bank A0, originally bfcf +A1D142,replace,2,dfcf ; bank A0, originally bfcf +A1D152,replace,2,dfcf ; bank A0, originally bfcf +A1D162,replace,2,9fda ; bank A0, originally 7fda +A1D172,replace,2,9fda ; bank A0, originally 7fda +A1D182,replace,2,9fda ; bank A0, originally 7fda +A1D192,replace,2,9fda ; bank A0, originally 7fda +A1D1A2,replace,2,9fda ; bank A0, originally 7fda +A1D1BB,replace,2,9fe9 ; bank A0, originally 7fe9 +A1D1CB,replace,2,9fe9 ; bank A0, originally 7fe9 +A1D1DB,replace,2,9fe9 ; bank A0, originally 7fe9 +A1D1EE,replace,2,9fe9 ; bank A0, originally 7fe9 +A1D1FE,replace,2,9fe9 ; bank A0, originally 7fe9 +A1D20E,replace,2,9fe9 ; bank A0, originally 7fe9 +A1D21E,replace,2,9fe9 ; bank A0, originally 7fe9 +A1D22E,replace,2,9fe9 ; bank A0, originally 7fe9 +A1D23E,replace,2,9fe9 ; bank A0, originally 7fe9 +A1D24E,replace,2,9fe9 ; bank A0, originally 7fe9 +A1D25E,replace,2,9fe9 ; bank A0, originally 7fe9 +A1D26E,replace,2,9fe9 ; bank A0, originally 7fe9 +A1D281,replace,2,9ff0 ; bank A0, originally 7ff0 +A1D291,replace,2,9ff0 ; bank A0, originally 7ff0 +A1D2A1,replace,2,9ff0 ; bank A0, originally 7ff0 +A1D2B1,replace,2,9ff0 ; bank A0, originally 7ff0 +A1D2C1,replace,2,9ff0 ; bank A0, originally 7ff0 +A1D2D1,replace,2,9ff0 ; bank A0, originally 7ff0 +A1D2E1,replace,2,9ff0 ; bank A0, originally 7ff0 +A1D2F1,replace,2,dfdb ; bank A0, originally bfdb +A1D301,replace,2,dfdb ; bank A0, originally bfdb +A1D314,replace,2,5fde ; bank A0, originally 3fde +A1D324,replace,2,9fde ; bank A0, originally 7fde +A1D334,replace,2,dfde ; bank A0, originally bfde +A1D344,replace,2,1fdf ; bank A0, originally ffde +A1D357,replace,2,dfdb ; bank A0, originally bfdb +A1D367,replace,2,dfdb ; bank A0, originally bfdb +A1D377,replace,2,dfdb ; bank A0, originally bfdb +A1D387,replace,2,dfdb ; bank A0, originally bfdb +A1D397,replace,2,dfdb ; bank A0, originally bfdb +A1D3AA,replace,2,1fd7 ; bank A0, originally ffd6 +A1D3BA,replace,2,f3f1 ; bank A0, originally d3f1 +A1D3CA,replace,2,f3f1 ; bank A0, originally d3f1 +A1D3DA,replace,2,f3f1 ; bank A0, originally d3f1 +A1D3ED,replace,2,73f7 ; bank A0, originally 53f7 +A1D3FD,replace,2,73f7 ; bank A0, originally 53f7 +A1D40D,replace,2,73f7 ; bank A0, originally 53f7 +A1D41D,replace,2,73f4 ; bank A0, originally 53f4 +A1D42D,replace,2,73f4 ; bank A0, originally 53f4 +A1D43D,replace,2,73f7 ; bank A0, originally 53f7 +A1D453,replace,2,9fd1 ; bank A0, originally 7fd1 +A1D463,replace,2,9fd1 ; bank A0, originally 7fd1 +A1D473,replace,2,9fd1 ; bank A0, originally 7fd1 +A1D483,replace,2,dfcf ; bank A0, originally bfcf +A1D493,replace,2,dfcf ; bank A0, originally bfcf +A1D4A3,replace,2,9fd1 ; bank A0, originally 7fd1 +A1D4B3,replace,2,9fd1 ; bank A0, originally 7fd1 +A1D4C3,replace,2,9fd1 ; bank A0, originally 7fd1 +A1D4D3,replace,2,dfcf ; bank A0, originally bfcf +A1D4E3,replace,2,dfcf ; bank A0, originally bfcf +A1D4F3,replace,2,dfcf ; bank A0, originally bfcf +A1D503,replace,2,dfcf ; bank A0, originally bfcf +A1D513,replace,2,dfcf ; bank A0, originally bfcf +A1D529,replace,2,dff0 ; bank A0, originally bff0 +A1D53F,replace,2,dfce ; bank A0, originally bfce +A1D54F,replace,2,dfce ; bank A0, originally bfce +A1D55F,replace,2,dfce ; bank A0, originally bfce +A1D56F,replace,2,dfce ; bank A0, originally bfce +A1D57F,replace,2,dfce ; bank A0, originally bfce +A1D58F,replace,2,dfce ; bank A0, originally bfce +A1D59F,replace,2,dfce ; bank A0, originally bfce +A1D5AF,replace,2,f3f1 ; bank A0, originally d3f1 +A1D5BF,replace,2,f3f1 ; bank A0, originally d3f1 +A1D5CF,replace,2,f3f1 ; bank A0, originally d3f1 +A1D5E2,replace,2,5fcf ; bank A0, originally 3fcf +A1D5F2,replace,2,9fcf ; bank A0, originally 7fcf +A1D602,replace,2,9fcf ; bank A0, originally 7fcf +A1D612,replace,2,9fcf ; bank A0, originally 7fcf +A1D622,replace,2,9fcf ; bank A0, originally 7fcf +A1D635,replace,2,9fd7 ; bank A0, originally 7fd7 +A1D645,replace,2,9fd7 ; bank A0, originally 7fd7 +A1D655,replace,2,9fd7 ; bank A0, originally 7fd7 +A1D665,replace,2,9fd7 ; bank A0, originally 7fd7 +A1D675,replace,2,9fd7 ; bank A0, originally 7fd7 +A1D685,replace,2,9fd7 ; bank A0, originally 7fd7 +A1D698,replace,2,5fd0 ; bank A0, originally 3fd0 +A1D6A8,replace,2,5fd0 ; bank A0, originally 3fd0 +A1D6B8,replace,2,5fd0 ; bank A0, originally 3fd0 +A1D6C8,replace,2,5fd0 ; bank A0, originally 3fd0 +A1D6D8,replace,2,5fd0 ; bank A0, originally 3fd0 +A1D6E8,replace,2,5fd0 ; bank A0, originally 3fd0 +A1D6F8,replace,2,5fd0 ; bank A0, originally 3fd0 +A1D708,replace,2,9fd1 ; bank A0, originally 7fd1 +A1D718,replace,2,9fd1 ; bank A0, originally 7fd1 +A1D728,replace,2,9fd1 ; bank A0, originally 7fd1 +A1D738,replace,2,9fd1 ; bank A0, originally 7fd1 +A1D748,replace,2,9fd1 ; bank A0, originally 7fd1 +A1D75B,replace,2,5fd0 ; bank A0, originally 3fd0 +A1D76B,replace,2,dfd3 ; bank A0, originally bfd3 +A1D77B,replace,2,dfd3 ; bank A0, originally bfd3 +A1D78B,replace,2,dfd3 ; bank A0, originally bfd3 +A1D79B,replace,2,dfd3 ; bank A0, originally bfd3 +A1D7AB,replace,2,dfd3 ; bank A0, originally bfd3 +A1D7BB,replace,2,1fd7 ; bank A0, originally ffd6 +A1D7CB,replace,2,1fd7 ; bank A0, originally ffd6 +A1D7DB,replace,2,dfd3 ; bank A0, originally bfd3 +A1D7EE,replace,2,9fd7 ; bank A0, originally 7fd7 +A1D801,replace,2,dfcf ; bank A0, originally bfcf +A1D811,replace,2,dfcf ; bank A0, originally bfcf +A1D821,replace,2,dfcf ; bank A0, originally bfcf +A1D831,replace,2,dfcf ; bank A0, originally bfcf +A1D841,replace,2,dfcf ; bank A0, originally bfcf +A1D851,replace,2,dfcf ; bank A0, originally bfcf +A1D864,replace,2,dfcf ; bank A0, originally bfcf +A1D874,replace,2,dfcf ; bank A0, originally bfcf +A1D884,replace,2,dfcf ; bank A0, originally bfcf +A1D894,replace,2,dfcf ; bank A0, originally bfcf +A1D8A4,replace,2,dfcf ; bank A0, originally bfcf +A1D8B4,replace,2,dfcf ; bank A0, originally bfcf +A1D8C4,replace,2,dfcf ; bank A0, originally bfcf +A1D8D4,replace,2,dfd3 ; bank A0, originally bfd3 +A1D8E4,replace,2,dfd3 ; bank A0, originally bfd3 +A1D8F4,replace,2,dfd3 ; bank A0, originally bfd3 +A1D904,replace,2,dfd3 ; bank A0, originally bfd3 +A1D914,replace,2,dfd3 ; bank A0, originally bfd3 +A1D924,replace,2,dfd3 ; bank A0, originally bfd3 +A1D934,replace,2,dfd3 ; bank A0, originally bfd3 +A1D944,replace,2,dfd3 ; bank A0, originally bfd3 +A1D957,replace,2,5fd0 ; bank A0, originally 3fd0 +A1D967,replace,2,5fd0 ; bank A0, originally 3fd0 +A1D977,replace,2,5fd0 ; bank A0, originally 3fd0 +A1D987,replace,2,5fd0 ; bank A0, originally 3fd0 +A1D997,replace,2,dfd3 ; bank A0, originally bfd3 +A1D9A7,replace,2,dfd3 ; bank A0, originally bfd3 +A1D9B7,replace,2,dfd3 ; bank A0, originally bfd3 +A1D9C7,replace,2,dfd3 ; bank A0, originally bfd3 +A1D9D7,replace,2,dfd3 ; bank A0, originally bfd3 +A1D9E7,replace,2,1fd7 ; bank A0, originally ffd6 +A1D9F7,replace,2,1fd7 ; bank A0, originally ffd6 +A1DA0A,replace,2,1fd9 ; bank A0, originally ffd8 +A1DA1A,replace,2,dfcf ; bank A0, originally bfcf +A1DA2A,replace,2,dfdb ; bank A0, originally bfdb +A1DA3D,replace,2,5fe6 ; bank A0, originally 3fe6 +A1DA4D,replace,2,5fe6 ; bank A0, originally 3fe6 +A1DA5D,replace,2,9fe6 ; bank A0, originally 7fe6 +A1DA6D,replace,2,5fe6 ; bank A0, originally 3fe6 +A1DA7D,replace,2,5fe6 ; bank A0, originally 3fe6 +A1DA8D,replace,2,9fe6 ; bank A0, originally 7fe6 +A1DA9D,replace,2,5fe6 ; bank A0, originally 3fe6 +A1DAAD,replace,2,5fe6 ; bank A0, originally 3fe6 +A1DABD,replace,2,9fe6 ; bank A0, originally 7fe6 +A1DAD3,replace,2,5fe6 ; bank A0, originally 3fe6 +A1DAE3,replace,2,5fe6 ; bank A0, originally 3fe6 +A1DAF3,replace,2,9fe6 ; bank A0, originally 7fe6 +A1DB03,replace,2,5fe6 ; bank A0, originally 3fe6 +A1DB13,replace,2,5fe6 ; bank A0, originally 3fe6 +A1DB23,replace,2,9fe6 ; bank A0, originally 7fe6 +A1DB33,replace,2,5fe6 ; bank A0, originally 3fe6 +A1DB43,replace,2,5fe6 ; bank A0, originally 3fe6 +A1DB53,replace,2,9fe6 ; bank A0, originally 7fe6 +A1DB66,replace,2,9fe9 ; bank A0, originally 7fe9 +A1DB76,replace,2,9fe9 ; bank A0, originally 7fe9 +A1DB86,replace,2,9fe9 ; bank A0, originally 7fe9 +A1DB96,replace,2,9fe9 ; bank A0, originally 7fe9 +A1DBA6,replace,2,9fe9 ; bank A0, originally 7fe9 +A1DBB6,replace,2,9fe9 ; bank A0, originally 7fe9 +A1DBC6,replace,2,9fe9 ; bank A0, originally 7fe9 +A1DBD9,replace,2,9fe9 ; bank A0, originally 7fe9 +A1DBE9,replace,2,9fe9 ; bank A0, originally 7fe9 +A1DBF9,replace,2,9fe9 ; bank A0, originally 7fe9 +A1DC09,replace,2,9fe9 ; bank A0, originally 7fe9 +A1DC19,replace,2,9fe9 ; bank A0, originally 7fe9 +A1DC29,replace,2,9fe9 ; bank A0, originally 7fe9 +A1DC3C,replace,2,9fda ; bank A0, originally 7fda +A1DC4C,replace,2,9fda ; bank A0, originally 7fda +A1DC5C,replace,2,9fda ; bank A0, originally 7fda +A1DC6F,replace,2,1fd9 ; bank A0, originally ffd8 +A1DC7F,replace,2,1fd9 ; bank A0, originally ffd8 +A1DC8F,replace,2,1fd9 ; bank A0, originally ffd8 +A1DC9F,replace,2,1fd9 ; bank A0, originally ffd8 +A1DCAF,replace,2,1fd9 ; bank A0, originally ffd8 +A1DCBF,replace,2,dfcf ; bank A0, originally bfcf +A1DCCF,replace,2,dfcf ; bank A0, originally bfcf +A1DCE2,replace,2,dfcf ; bank A0, originally bfcf +A1DCF2,replace,2,dfcf ; bank A0, originally bfcf +A1DD02,replace,2,dfcf ; bank A0, originally bfcf +A1DD12,replace,2,dfcf ; bank A0, originally bfcf +A1DD22,replace,2,dfcf ; bank A0, originally bfcf +A1DD38,replace,2,9fda ; bank A0, originally 7fda +A1DD48,replace,2,9fda ; bank A0, originally 7fda +A1DD58,replace,2,9fda ; bank A0, originally 7fda +A1DD68,replace,2,9fda ; bank A0, originally 7fda +A1DD78,replace,2,9fda ; bank A0, originally 7fda +A1DD88,replace,2,5fd0 ; bank A0, originally 3fd0 +A1DD9B,replace,2,dfd3 ; bank A0, originally bfd3 +A1DDAB,replace,2,dfd3 ; bank A0, originally bfd3 +A1DDBB,replace,2,dfd3 ; bank A0, originally bfd3 +A1DDCB,replace,2,dfcf ; bank A0, originally bfcf +A1DDDB,replace,2,dfcf ; bank A0, originally bfcf +A1DDEB,replace,2,dfcf ; bank A0, originally bfcf +A1DDFB,replace,2,dfcf ; bank A0, originally bfcf +A1DE17,replace,2,9fd7 ; bank A0, originally 7fd7 +A1DE27,replace,2,9fd7 ; bank A0, originally 7fd7 +A1DE37,replace,2,9fd7 ; bank A0, originally 7fd7 +A1DE47,replace,2,9fd7 ; bank A0, originally 7fd7 +A1DE5A,replace,2,b3f2 ; bank A0, originally 93f2 +A1DE6D,replace,2,1fd7 ; bank A0, originally ffd6 +A1DE7D,replace,2,1fd7 ; bank A0, originally ffd6 +A1DE8D,replace,2,1fd7 ; bank A0, originally ffd6 +A1DE9D,replace,2,1fd7 ; bank A0, originally ffd6 +A1DEAD,replace,2,1fd7 ; bank A0, originally ffd6 +A1DEBD,replace,2,9fd7 ; bank A0, originally 7fd7 +A1DECD,replace,2,9fd7 ; bank A0, originally 7fd7 +A1DEDD,replace,2,9fd7 ; bank A0, originally 7fd7 +A1DEED,replace,2,9fd7 ; bank A0, originally 7fd7 +A1DEFD,replace,2,9fd7 ; bank A0, originally 7fd7 +A1DF0D,replace,2,9fd7 ; bank A0, originally 7fd7 +A1DF1D,replace,2,9fd7 ; bank A0, originally 7fd7 +A1DF30,replace,2,dfe7 ; bank A0, originally bfe7 +A1DF40,replace,2,9fda ; bank A0, originally 7fda +A1DF50,replace,2,dfe7 ; bank A0, originally bfe7 +A1DF63,replace,2,dfdf ; bank A0, originally bfdf +A1DF73,replace,2,dfdf ; bank A0, originally bfdf +A1DF83,replace,2,dfdf ; bank A0, originally bfdf +A1DF96,replace,2,dfdf ; bank A0, originally bfdf +A1DFA6,replace,2,dfdf ; bank A0, originally bfdf +A1DFB6,replace,2,dfdf ; bank A0, originally bfdf +A1DFC6,replace,2,dfdf ; bank A0, originally bfdf +A1DFD9,replace,2,1fd0 ; bank A0, originally ffcf +A1DFE9,replace,2,1fd0 ; bank A0, originally ffcf +A1DFF9,replace,2,1fd0 ; bank A0, originally ffcf +A1E009,replace,2,1fd0 ; bank A0, originally ffcf +A1E01C,replace,2,1fd0 ; bank A0, originally ffcf +A1E02C,replace,2,1fd0 ; bank A0, originally ffcf +A1E03C,replace,2,1fd0 ; bank A0, originally ffcf +A1E04C,replace,2,1fd0 ; bank A0, originally ffcf +A1E05C,replace,2,1fd0 ; bank A0, originally ffcf +A1E06C,replace,2,1fd0 ; bank A0, originally ffcf +A1E07F,replace,2,1fd7 ; bank A0, originally ffd6 +A1E08F,replace,2,1fd7 ; bank A0, originally ffd6 +A1E09F,replace,2,1fd7 ; bank A0, originally ffd6 +A1E0AF,replace,2,73f7 ; bank A0, originally 53f7 +A1E0BF,replace,2,73f7 ; bank A0, originally 53f7 +A1E0CF,replace,2,73f7 ; bank A0, originally 53f7 +A1E0DF,replace,2,73f7 ; bank A0, originally 53f7 +A1E0EF,replace,2,1fd7 ; bank A0, originally ffd6 +A1E102,replace,2,b3f4 ; bank A0, originally 93f4 +A1E112,replace,2,b3f4 ; bank A0, originally 93f4 +A1E122,replace,2,b3f4 ; bank A0, originally 93f4 +A1E132,replace,2,b3f4 ; bank A0, originally 93f4 +A1E142,replace,2,b3f4 ; bank A0, originally 93f4 +A1E152,replace,2,b3f4 ; bank A0, originally 93f4 +A1E162,replace,2,b3f7 ; bank A0, originally 93f7 +A1E172,replace,2,b3f7 ; bank A0, originally 93f7 +A1E182,replace,2,b3f7 ; bank A0, originally 93f7 +A1E192,replace,2,b3f7 ; bank A0, originally 93f7 +A1E1A2,replace,2,b3f7 ; bank A0, originally 93f7 +A1E1B2,replace,2,b3f7 ; bank A0, originally 93f7 +A1E1C2,replace,2,b3f7 ; bank A0, originally 93f7 +A1E1D8,replace,2,9fdd ; bank A0, originally 7fdd +A1E1E8,replace,2,9fdd ; bank A0, originally 7fdd +A1E1F8,replace,2,9fdd ; bank A0, originally 7fdd +A1E208,replace,2,9fdd ; bank A0, originally 7fdd +A1E218,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E228,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E238,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E248,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E25B,replace,2,5fed ; bank A0, originally 3fed +A1E26E,replace,2,dfee ; bank A0, originally bfee +A1E27E,replace,2,9fed ; bank A0, originally 7fed +A1E28E,replace,2,9fed ; bank A0, originally 7fed +A1E29E,replace,2,1fee ; bank A0, originally ffed +A1E2AE,replace,2,1fee ; bank A0, originally ffed +A1E2BE,replace,2,1fee ; bank A0, originally ffed +A1E2CE,replace,2,5fee ; bank A0, originally 3fee +A1E2DE,replace,2,5fee ; bank A0, originally 3fee +A1E2EE,replace,2,9fee ; bank A0, originally 7fee +A1E2FE,replace,2,9fee ; bank A0, originally 7fee +A1E30E,replace,2,9fee ; bank A0, originally 7fee +A1E321,replace,2,9fec ; bank A0, originally 7fec +A1E331,replace,2,5fec ; bank A0, originally 3fec +A1E341,replace,2,9fe2 ; bank A0, originally 7fe2 +A1E351,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E361,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E371,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E387,replace,2,1fda ; bank A0, originally ffd9 +A1E397,replace,2,1fda ; bank A0, originally ffd9 +A1E3AA,replace,2,dfd5 ; bank A0, originally bfd5 +A1E3BA,replace,2,dfd5 ; bank A0, originally bfd5 +A1E3CA,replace,2,dfd5 ; bank A0, originally bfd5 +A1E3DA,replace,2,dfd5 ; bank A0, originally bfd5 +A1E3EA,replace,2,dfd5 ; bank A0, originally bfd5 +A1E3FA,replace,2,dfd5 ; bank A0, originally bfd5 +A1E40A,replace,2,dfd5 ; bank A0, originally bfd5 +A1E41A,replace,2,dfd5 ; bank A0, originally bfd5 +A1E42D,replace,2,5fd7 ; bank A0, originally 3fd7 +A1E440,replace,2,9fdd ; bank A0, originally 7fdd +A1E450,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E460,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E470,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E480,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E490,replace,2,9fdd ; bank A0, originally 7fdd +A1E4A3,replace,2,9fdd ; bank A0, originally 7fdd +A1E4B3,replace,2,9fdd ; bank A0, originally 7fdd +A1E4C3,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E4D3,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E4E3,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E4F3,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E503,replace,2,9fdd ; bank A0, originally 7fdd +A1E516,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E526,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E536,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E546,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E559,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E569,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E579,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E589,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E59C,replace,2,b3f4 ; bank A0, originally 93f4 +A1E5AC,replace,2,b3f4 ; bank A0, originally 93f4 +A1E5BF,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E5CF,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E5DF,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E5EF,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E5FF,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E60F,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E61F,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E62F,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E63F,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E652,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E662,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E672,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E682,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E695,replace,2,b3f7 ; bank A0, originally 93f7 +A1E6A5,replace,2,b3f7 ; bank A0, originally 93f7 +A1E6B5,replace,2,b3f7 ; bank A0, originally 93f7 +A1E6C5,replace,2,b3f7 ; bank A0, originally 93f7 +A1E6D5,replace,2,b3f7 ; bank A0, originally 93f7 +A1E6E5,replace,2,b3f7 ; bank A0, originally 93f7 +A1E6F5,replace,2,b3f7 ; bank A0, originally 93f7 +A1E70E,replace,2,1fee ; bank A0, originally ffed +A1E71E,replace,2,1fee ; bank A0, originally ffed +A1E72E,replace,2,1fee ; bank A0, originally ffed +A1E73E,replace,2,5fee ; bank A0, originally 3fee +A1E74E,replace,2,5fee ; bank A0, originally 3fee +A1E75E,replace,2,9fee ; bank A0, originally 7fee +A1E76E,replace,2,9fee ; bank A0, originally 7fee +A1E77E,replace,2,9fee ; bank A0, originally 7fee +A1E794,replace,2,9fdd ; bank A0, originally 7fdd +A1E7A4,replace,2,9fdd ; bank A0, originally 7fdd +A1E7B4,replace,2,9fdd ; bank A0, originally 7fdd +A1E7C4,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E7D4,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E7E4,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E7F4,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E804,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E814,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E824,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E834,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E844,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E857,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E867,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E877,replace,2,5fd2 ; bank A0, originally 3fd2 +A1E88A,replace,2,5fe2 ; bank A0, originally 3fe2 +A1E89A,replace,2,5fe2 ; bank A0, originally 3fe2 +A1E8AD,replace,2,5fe2 ; bank A0, originally 3fe2 +A1E8BD,replace,2,5fe2 ; bank A0, originally 3fe2 +A1E8D0,replace,2,5fe2 ; bank A0, originally 3fe2 +A1E8E0,replace,2,5fe2 ; bank A0, originally 3fe2 +A1E8F3,replace,2,5fe2 ; bank A0, originally 3fe2 +A1E903,replace,2,5fe2 ; bank A0, originally 3fe2 +A1E916,replace,2,5fe2 ; bank A0, originally 3fe2 +A1E926,replace,2,5fe2 ; bank A0, originally 3fe2 +A1E939,replace,2,5fe1 ; bank A0, originally 3fe1 +A1E949,replace,2,5fe2 ; bank A0, originally 3fe2 +A1E95C,replace,2,5fe2 ; bank A0, originally 3fe2 +A1E96C,replace,2,5fe2 ; bank A0, originally 3fe2 +A1E97C,replace,2,1fe2 ; bank A0, originally ffe1 +A1E98C,replace,2,1fe2 ; bank A0, originally ffe1 +A1E99C,replace,2,1fe2 ; bank A0, originally ffe1 +A1E9AC,replace,2,1fe2 ; bank A0, originally ffe1 +A1E9BC,replace,2,1fe2 ; bank A0, originally ffe1 +A1E9CC,replace,2,1fe2 ; bank A0, originally ffe1 +A1E9DC,replace,2,1fe2 ; bank A0, originally ffe1 +A1E9EC,replace,2,1fe2 ; bank A0, originally ffe1 +A1E9FC,replace,2,1fe2 ; bank A0, originally ffe1 +A1EA0C,replace,2,1fe2 ; bank A0, originally ffe1 +A1EA1C,replace,2,1fe2 ; bank A0, originally ffe1 +A1EA2F,replace,2,1fe2 ; bank A0, originally ffe1 +A1EA3F,replace,2,1fe2 ; bank A0, originally ffe1 +A1EA4F,replace,2,1fe2 ; bank A0, originally ffe1 +A1EA5F,replace,2,1fe2 ; bank A0, originally ffe1 +A1EA6F,replace,2,1fe2 ; bank A0, originally ffe1 +A1EA7F,replace,2,1fe2 ; bank A0, originally ffe1 +A1EA8F,replace,2,1fe2 ; bank A0, originally ffe1 +A1EA9F,replace,2,1fe2 ; bank A0, originally ffe1 +A1EAAF,replace,2,1fe2 ; bank A0, originally ffe1 +A1EABF,replace,2,1fe2 ; bank A0, originally ffe1 +A1EACF,replace,2,1fe2 ; bank A0, originally ffe1 +A1EADF,replace,2,5fe2 ; bank A0, originally 3fe2 +A1EAEF,replace,2,5fe2 ; bank A0, originally 3fe2 +A1EB02,replace,2,5fe2 ; bank A0, originally 3fe2 +A1EB12,replace,2,5fe2 ; bank A0, originally 3fe2 +A1EB22,replace,2,1fe2 ; bank A0, originally ffe1 +A1EB32,replace,2,1fe2 ; bank A0, originally ffe1 +A1EB42,replace,2,1fe2 ; bank A0, originally ffe1 +A1EB52,replace,2,1fe2 ; bank A0, originally ffe1 +A1EB62,replace,2,1fe2 ; bank A0, originally ffe1 +A1EB75,replace,2,5fe2 ; bank A0, originally 3fe2 +A1EB85,replace,2,5fe2 ; bank A0, originally 3fe2 +A1EB98,replace,2,5fe2 ; bank A0, originally 3fe2 +A1EBA8,replace,2,5fe2 ; bank A0, originally 3fe2 +A1EBBB,replace,2,5fe2 ; bank A0, originally 3fe2 ;======================================================= ; Bank A2 @@ -8039,8 +10481,8 @@ A29C17,replace,2,1b9a ; bank A2, originally 0b9a A29C1F,replace,2,d69c ; bank A2, originally be9c A29C26,replace,2,1b9a ; bank A2, originally 0b9a A29C3B,replace,2,199a ; bank A2, originally 099a -A29C43,replace,2,b919 -A29C45,insert,7,9a29ff00eb8512 +A29C43,insert,7,b9199a29ff00eb +A29C4A,replace,2,8512 A29C5B,replace,2,bbc6 ; bank A0, originally abc6 A29C81,replace,2,b09d ; bank A2, originally 989d A29CA4,replace,2,f999 ; bank A2, originally e999 @@ -9934,19 +12376,19 @@ A3A8D2,replace,2,55a7 ; bank A3, originally 45a7 A3A8D5,replace,2,58a9 ; bank A3, originally 3ca9 A3A8E6,replace,1,16 A3A8EE,replace,1,1c -A3A8EF,replace,6,a9d0cc9da80f -A3A8F5,insert,3,a9feff +A3A8EF,insert,3,a9d0cc +A3A8F2,replace,6,9da80fa9feff A3A8FC,replace,1,0e -A3A8FD,replace,3,a93033 -A3A900,insert,3,9da80f +A3A8FD,insert,3,a93033 +A3A900,replace,3,9da80f A3A916,replace,2,bbc6 ; bank A0, originally abc6 A3A924,replace,1,16 A3A92C,replace,1,1c -A3A92D,replace,6,a9d0cc9dac0f -A3A933,insert,3,a9feff +A3A92D,insert,3,a9d0cc +A3A930,replace,6,9dac0fa9feff A3A93A,replace,1,0e -A3A93B,replace,3,a93033 -A3A93E,insert,3,9dac0f +A3A93B,insert,3,a93033 +A3A93E,replace,3,9dac0f A3A954,replace,2,96c7 ; bank A0, originally 86c7 A3A979,replace,2,69a7 ; bank A3, originally 59a7 A3A97C,replace,2,58a9 ; bank A3, originally 3ca9 @@ -10119,7 +12561,7 @@ A3B429,replace,2,ddb3 ; bank A3, originally c1b3 A3B42B,replace,2,f3b3 ; bank A3, originally d7b3 A3B42D,replace,2,03b4 ; bank A3, originally e7b3 A3B42F,replace,2,19b4 ; bank A3, originally fdb3 -A3B435,ignore,16 +A3B431,ignore,20 A3B46A,replace,2,9eb4 ; bank A3, originally 82b4 A3B47D,replace,2,ddb3 ; bank A3, originally c1b3 A3B4A5,replace,2,1baf ; bank A0, originally 0baf @@ -14206,10 +16648,44 @@ A5E759,replace,2,6be7 ; bank A5, originally 5fe7 A5E75D,replace,2,b4ee ; bank A5, originally 6fee A5E765,replace,2,b4ee ; bank A5, originally 6fee A5E769,replace,2,efe6 ; bank A5, originally e3e6 -A5E789,ignore,136 -A5E811,remove,40 -A5E811,insert,14,b900008f16787eb902008f18787e -A5E81F,insert,14,b904008f14787e9818690600a86b +A5E789,remove,4 +A5E78B,replace,2,18ef ; bank A5, originally d3ee +A5E78D,remove,4 +A5E791,replace,1,08 +A5E793,replace,2,18ef ; bank A5, originally d3ee +A5E795,replace,2,b6e9 ; bank A5, originally b1e9 +A5E797,remove,4 +A5E799,replace,2,91e7 ; bank A5, originally 8de7 +A5E79D,replace,2,18ef ; bank A5, originally d3ee +A5E7A1,replace,2,06ef ; bank A5, originally c1ee +A5E7A5,replace,2,f4ee ; bank A5, originally afee +A5E7A9,replace,2,e2ee ; bank A5, originally 9dee +A5E7AD,replace,2,d0ee ; bank A5, originally 8bee +A5E7B1,replace,2,beee ; bank A5, originally 79ee +A5E7B5,replace,2,aaee ; bank A5, originally 65ee +A5E7BD,replace,2,73e9 ; bank A5, originally 6ee9 +A5E7C7,replace,2,cfe8 ; bank A5, originally cae8 +A5E7CB,replace,2,73e9 ; bank A5, originally 6ee9 +A5E7CF,replace,2,aaee ; bank A5, originally 65ee +A5E7D1,replace,2,cfe8 ; bank A5, originally cae8 +A5E7D5,replace,2,73e9 ; bank A5, originally 6ee9 +A5E7D9,replace,2,aaee ; bank A5, originally 65ee +A5E7DB,replace,2,cfe8 ; bank A5, originally cae8 +A5E7DF,replace,2,73e9 ; bank A5, originally 6ee9 +A5E7E3,replace,2,aaee ; bank A5, originally 65ee +A5E7E5,replace,2,cfe8 ; bank A5, originally cae8 +A5E7E9,replace,2,73e9 ; bank A5, originally 6ee9 +A5E7ED,replace,2,aaee ; bank A5, originally 65ee +A5E7EF,replace,2,cfe8 ; bank A5, originally cae8 +A5E7F3,replace,2,73e9 ; bank A5, originally 6ee9 +A5E7F7,replace,2,aaee ; bank A5, originally 65ee +A5E7F9,replace,2,cfe8 ; bank A5, originally cae8 +A5E7FD,replace,2,73e9 ; bank A5, originally 6ee9 +A5E801,replace,2,aaee ; bank A5, originally 65ee +A5E803,replace,2,cfe8 ; bank A5, originally cae8 +A5E807,replace,2,73e9 ; bank A5, originally 6ee9 +A5E80B,replace,2,aaee ; bank A5, originally 65ee +A5E80D,replace,2,b6e8 ; bank A5, originally b1e8 A5E897,insert,5,ad8c0ff007 A5E8A0,replace,1,c1 A5E8AE,replace,1,43 @@ -15195,10 +17671,9 @@ A6C0BB,replace,2,46c1 ; bank A6, originally 36c1 A6C0CC,replace,2,acc1 ; bank A6, originally 9cc1 A6C0D2,replace,1,26 A6C0D4,replace,2,dfc3 ; bank A6, originally 50c4 -A6C0F3,move,11 +A6C0F3,remove,11 A6C0FE,replace,1,15 -A6C105,place,11 -A6C10A,replace,6,22a2c3a68004 +A6C105,insert,11,ade209d00622a2c3a68004 A6C111,replace,2,a7c3 ; bank A6, originally 83c3 A6C115,replace,2,acc1 ; bank A6, originally 9cc1 A6C11B,replace,2,b7c2 ; bank A6, originally a7c2 @@ -15216,14 +17691,34 @@ A6C2F2,replace,2,dac2 ; bank A6, originally cac2 A6C305,replace,2,dac2 ; bank A6, originally cac2 A6C393,insert,10,ade209d005a23cde800d A6C39D,insert,10,a25ade8008a200de8003 -A6C3A7,replace,5,a21ede8bf4 -A6C3AC,insert,3,00adab -A6C3DF,remove,152 -A6C45A,filler,58 -A6C494,ignore,51 -A6C4C7,filler,7 -A6C4CE,ignore,58 -A6C508,filler,7 +A6C3A8,replace,2,1ede +A6C3AB,insert,3,f400ad +A6C3AE,replace,1,ab +A6C3DF,move,152 +A6C45A,insert,14,000200c0b0007e200100c2b0007f +A6C468,insert,14,c00100dab720180002c0dbb70019 +A6C476,insert,14,0002c0ddb7001a0002c0dfb7001b +A6C484,insert,16,0001c0e1b7001c0001c0e3b7001d0000 +A6C4A2,replace,2,c001 +A6C4AB,replace,2,c0db ; bank B7, originally 00dc +A6C4AE,replace,1,00 +A6C4B2,replace,2,c0dd ; bank B7, originally 00de +A6C4B5,replace,1,00 +A6C4B9,replace,2,c0df ; bank B7, originally 00e0 +A6C4BC,replace,1,00 +A6C4C0,replace,2,c0e1 ; bank B7, originally 00e2 +A6C4C3,replace,1,00 +A6C4C5,insert,7,0001c0e3b7007d +A6C4CE,replace,2,c001 +A6C4D7,replace,2,c0db ; bank B7, originally 00dc +A6C4DA,replace,1,00 +A6C4DE,replace,2,c0dd ; bank B7, originally 00de +A6C4E1,replace,1,00 +A6C4E5,replace,2,c0df ; bank B7, originally 00e0 +A6C4E8,replace,1,00 +A6C4EC,replace,2,c0e1 ; bank B7, originally 00e2 +A6C4EF,replace,1,00 +A6C4F1,insert,7,0001c0e3b7001d A6C510,replace,2,d8c5 ; bank A6, originally 01c6 A6C516,replace,2,9fe6 ; bank A6, originally c8e6 A6C519,replace,2,3ed4 ; bank A6, originally 67d4 @@ -17362,8 +19857,8 @@ A7B695,replace,2,2ca9 ; bank A0, originally 1ca9 A7B69F,replace,1,34 A7B6A2,insert,9,6d7c0f8d7c0fad32a9 A7B6C8,replace,1,13 -A7B6CC,replace,5,ad38a98512 -A7B6D1,insert,3,ad36a9 +A7B6CC,insert,3,ad38a9 +A7B6CF,replace,5,8512ad36a9 A7B6D7,replace,2,bbc6 ; bank A0, originally abc6 A7B6F4,replace,2,faae ; bank A7, originally e4ae A7B6FA,replace,2,0bb7 ; bank A7, originally d7b6 @@ -18206,7 +20701,7 @@ A7F4EF,replace,2,2ffe ; bank A7, originally fbfd A7F4F3,replace,2,edf4 ; bank A7, originally b9f4 A7F4F7,replace,2,9dfd ; bank A7, originally 69fd A7F4FB,replace,2,f5f4 ; bank A7, originally c1f4 -A7F4FD,ignore,20 +A7F509,ignore,8 A7F534,replace,2,8ff4 ; bank A7, originally 5bf4 A7F53C,replace,2,cdf3 ; bank A7, originally 99f3 A7F542,replace,2,a4f5 ; bank A7, originally 70f5 @@ -21347,8 +23842,8 @@ A9B31B,replace,2,21b3 ; bank A9, originally d1b2 A9B31D,remove,8 A9B325,replace,1,0a A9B327,replace,2,30b3 ; bank A9, originally e3b2 +A9B32C,remove,3 A9B32C,replace,4,2293c3a6 -A9B330,remove,3 A9B334,replace,2,b7c2 ; bank A6, originally a7c2 A9B33A,replace,2,46b3 ; bank A9, originally f9b2 A9B347,replace,2,93b3 ; bank A9, originally 46b3 @@ -23088,12 +25583,12 @@ AAB230,replace,2,5db2 ; bank AA, originally 4db2 AAB265,replace,2,aab0 ; bank AA, originally 9ab0 AAB274,replace,2,b4ba ; bank A0, originally a4ba AAB27A,replace,2,e7ba ; bank A0, originally d7ba +AAB889,ignore,2449 AAB889,replace,2,b0c3 ; bank AA, originally a0c3 AAB88B,replace,2,d9c2 ; bank AA, originally c9c2 AAB88F,replace,2,e087 ; bank AA, originally d087 AAB891,replace,2,acb0 ; bank AA, originally 9cb0 AAB893,replace,2,d6c6 ; bank AA, originally c6c6 -AAB897,ignore,2435 AAB897,replace,2,acb0 ; bank AA, originally 9cb0 AAB899,replace,2,cfc6 ; bank AA, originally bfc6 AAB89D,replace,2,22aa ; bank AA, originally 12aa @@ -23885,12 +26380,12 @@ AAC9A1,replace,2,b7a6 ; bank A0, originally a7a6 AAC9AD,replace,2,bbc6 ; bank AA, originally abc6 AAC9B3,replace,2,d8b1 ; bank AA, originally c8b1 AAC9D8,replace,2,68d6 ; bank AA, originally 58d6 +AAC9DB,ignore,259 AAC9E4,replace,2,b0c3 ; bank AA, originally a0c3 AAC9E6,replace,2,d9c2 ; bank AA, originally c9c2 AAC9E8,replace,2,acb0 ; bank AA, originally 9cb0 AAC9EA,replace,2,d2d5 ; bank AA, originally c2d5 AAC9EE,replace,2,40aa ; bank AA, originally 30aa -AAC9F2,ignore,236 AAC9F2,replace,2,acb0 ; bank AA, originally 9cb0 AAC9F4,replace,2,cfc6 ; bank AA, originally bfc6 AAC9F8,replace,2,40aa ; bank AA, originally 30aa @@ -24828,7 +27323,20 @@ AAE7D2,replace,2,71e4 ; bank AA, originally 61e4 ;======================================================= ; Bank AD ;======================================================= -ADDE00,filler,716 +ADDE00,insert,14,2a0078dead87522a00a2deada752 +ADDE0E,insert,16,1e00ccdeadca521e00eadeadea520000 +ADDE1E,place,326 +ADDE1E,replace,14,2e0008dfad87522e0036dfada752 +ADDE2C,replace,14,2a0064dfadc7522a008edfade752 +ADDE3C,insert,14,2600b8dfad874a2600dedfada74a +ADDE4A,insert,16,260004e0adc74a26002ae0ade74a0000 +ADDE5A,replace,14,1a0050e0ad8a4a1a006ae0adaa4a +ADDE68,replace,14,240084e0adc84a2400a8e0ade84a +ADDE78,filler,144 +ADDF08,ignore,92 +ADDF64,filler,84 +ADDFB8,filler,152 +ADE050,filler,124 ADE127,replace,2,2be1 ; bank AD, originally 5fde ADE12B,replace,2,72e4 ; bank AD, originally a6e1 ADE12D,replace,2,4be1 ; bank AD, originally 7fde @@ -26614,8 +29122,8 @@ B2EFB3,replace,2,46ed ; bank B2, originally 36ed B2EFBE,replace,2,bced ; bank B2, originally aced B2EFD3,replace,2,3302 B2EFE0,replace,1,1f -B2EFF9,replace,7,a966049f04807e -B2F000,remove,5 +B2EFF9,replace,3,a96604 +B2EFFC,remove,5 B2F001,replace,2,3ff0 ; bank B2, originally 34f0 B2F00C,replace,2,12f1 ; bank B2, originally c8f0 B2F046,replace,2,fdae ; bank A0, originally edae @@ -28356,8 +30864,14 @@ B4EC09,replace,2,5fe9 ; bank A0, originally 3fe9 ;======================================================= ; Bank B7 ;======================================================= -B7DA00,ignore,2304 -B7E300,filler,704 +B7DA00,ignore,448 +B7DBC0,remove,64 +B7DBC0,ignore,512 +B7DDC0,ignore,512 +B7DFC0,ignore,512 +B7E1C0,ignore,256 +B7E2C0,filler,256 +B7E3C0,filler,512 ;======================================================= ; Bank B8 From 04797daa92bb0872f98e56d29994b65718761991 Mon Sep 17 00:00:00 2001 From: idle Date: Sat, 8 Feb 2025 08:15:37 -0600 Subject: [PATCH 06/23] Updated resources to differentiate NSO from Virtual Console --- .../ntsc_to_pal_abridged_pseudo_patch.txt | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/resources/ntsc_to_pal_abridged_pseudo_patch.txt b/resources/ntsc_to_pal_abridged_pseudo_patch.txt index 012f89c5..1f0f9d32 100644 --- a/resources/ntsc_to_pal_abridged_pseudo_patch.txt +++ b/resources/ntsc_to_pal_abridged_pseudo_patch.txt @@ -54,7 +54,7 @@ org $80CD8E org $80FFC0 ; Country code and checksum -; NOTE: This section is also different on Virtual Console NTSC and JU, +; NOTE: This section is also different on NSO and Virtual Console NTSC and JU, ; and it may also be modified by SpriteSomething org $80FFD9 db #$02,#$01,#$00,#$04,#$84,#$FB,#$7B @@ -2123,13 +2123,13 @@ org $8DE45E org $8DEAE2 ; Tourian red flashing -; NOTE: This section is the same on NTSC and PAL but different on Virtual Console NTSC and JU +; NOTE: This section is the same on NTSC and PAL but different on NSO and Virtual Console NTSC and JU org $8DF895 dw ... org $8DF941 ; Old Tourian escape shaft flashing -; NOTE: This section is the same on NTSC and PAL but different on Virtual Console NTSC and JU +; NOTE: This section is the same on NTSC and PAL but different on NSO and Virtual Console NTSC and JU org $8DFA6D dw ... org $8DFBC1 @@ -3330,7 +3330,7 @@ org $A49A79 <-- org $A49A60 ADC #$0001 ; previously ADC #$0000 ; Crocomire palette -; NOTE: This section is the same on NTSC and PAL but different on Virtual Console NTSC and JU +; NOTE: This section is the same on NTSC and PAL but different on NSO and Virtual Console NTSC and JU org $A4B936 <-- org $A4B91D dw ... org $A4B956 <-- org $A4B93D @@ -3762,13 +3762,13 @@ org $A7AA7F <-- org $A7AA69 LDA #$00FA ; previously LDA #$012C ; Kraid background palette -; NOTE: This section is the same on NTSC and PAL and Virtual Console NTSC but different on JU +; NOTE: This section is the same on NTSC and PAL and NSO and Virtual Console NTSC but different on JU org $A7B3E9 <-- org $A7B3D3 dw ... org $A7B409 <-- org $A7B3F3 ; Kraid sprite palette -; NOTE: This section is the same on NTSC and PAL and Virtual Console NTSC but different on JU +; NOTE: This section is the same on NTSC and PAL and NSO and Virtual Console NTSC but different on JU org $A7B529 <-- org $A7B513 dw ... org $A7B549 <-- org $A7B533 @@ -4248,7 +4248,7 @@ org $A9BBC0 <-- org $A9BB73 ADC #$01CC ; previously ADC #$0180 ; MB1 phase ended room palettes -; NOTE: This section is the same on NTSC and PAL but different on Virtual Console NTSC and JU +; NOTE: This section is the same on NTSC and PAL but different on NSO and Virtual Console NTSC and JU org $A9D0FF <-- org $A9D0B2 dw ... org $A9D18F <-- org $A9D142 @@ -4881,7 +4881,7 @@ org $B88000 ;======================================================= ; Tileset 9 Heated Norfair palette -; NOTE: This section is the same on NTSC and PAL and Virtual Console NTSC but different on JU +; NOTE: This section is the same on NTSC and PAL and NSO and Virtual Console NTSC but different on JU org $C2B5E4 dw ... org $C2B6BB @@ -4906,6 +4906,7 @@ org $CEB22D ; Bank DC ; Bank DD ; Bank DE +; NOTE: These banks are unchanged on NSO but are different on Virtual Console NTSC and JU ;======================================================= ; SPC engine main data length @@ -5068,6 +5069,7 @@ org $DED18C <-- org $DED1C0 ;======================================================= ; Bank DF +; NOTE: This bank is unchanged on NSO but is different on Virtual Console NTSC and JU ;======================================================= ; Freespace From 706ab59e5ac9d2475d52f8d8426319ddf4e21ce7 Mon Sep 17 00:00:00 2001 From: idle Date: Sat, 22 Feb 2025 13:37:36 -0600 Subject: [PATCH 07/23] Rename rng.asm to enemy_rng.asm --- src/{rng.asm => enemy_rng.asm} | 0 src/main.asm | 9 +++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) rename src/{rng.asm => enemy_rng.asm} (100%) diff --git a/src/rng.asm b/src/enemy_rng.asm similarity index 100% rename from src/rng.asm rename to src/enemy_rng.asm diff --git a/src/main.asm b/src/main.asm index 5e2de02e..cb90660b 100644 --- a/src/main.asm +++ b/src/main.asm @@ -16,7 +16,7 @@ lorom !VERSION_MAJOR = 2 !VERSION_MINOR = 6 !VERSION_BUILD = 5 -!VERSION_REV = 2 +!VERSION_REV = 3 table ../resources/normal.tbl print "" @@ -46,6 +46,11 @@ if !ORIGINAL_MESSAGE_TEXT print "PRESERVE FANFARE MESSAGES" endif +if !PRESERVE_WRAM_DURING_SPACETIME +else + print "WRAM NOT PRESERVED DURING SPACETIME" +endif + if !RAW_TILE_GRAPHICS else print "FAST PRESETS DISABLED" @@ -82,7 +87,7 @@ incsrc roomnames.asm incsrc clearenemies.asm incsrc demos.asm incsrc infohud.asm -incsrc rng.asm +incsrc enemy_rng.asm incsrc custompresets.asm incsrc presets.asm incsrc damage.asm From 82583a9c77be7177ae4dfa98a23245618f919e00 Mon Sep 17 00:00:00 2001 From: idle Date: Sat, 22 Feb 2025 20:35:39 -0600 Subject: [PATCH 08/23] Port arm pump counter infohud mode --- src/infohudmodes.asm | 40 ++++++++++++++++++++++++++++++++++++++++ src/mainmenu.asm | 27 +++++++++++++++++++++++---- 2 files changed, 63 insertions(+), 4 deletions(-) diff --git a/src/infohudmodes.asm b/src/infohudmodes.asm index 97cb5c51..cfd3201a 100644 --- a/src/infohudmodes.asm +++ b/src/infohudmodes.asm @@ -24,6 +24,7 @@ dw status_quickdrop dw status_walljump dw status_armpump + dw status_pumpcounter dw status_shottimer dw status_ramwatch @@ -1445,6 +1446,45 @@ status_armpump: RTS } +status_pumpcounter: +{ +; this makes the assumption that the user only attempting to pump on one angle button +; !ram_HUD_check = where to draw (index * 6 + $88) +; !ram_roomstrat_counter = pumps counted +; !ram_roomstrat_state = neutral/angle +; !ram_fail_count = reset after fail, non-zero during counting + LDA !SAMUS_HP : STA !ram_last_hp + + LDA !ram_roomstrat_state : BNE .angleLast + LDA !IH_CONTROLLER_PRI : AND #$0030 : BEQ .fail + LDA !ram_roomstrat_state : EOR #$0001 : STA !ram_roomstrat_state + LDA !ram_roomstrat_counter : INC : STA !ram_roomstrat_counter + RTS + + .angleLast + LDA !IH_CONTROLLER_PRI : AND #$0030 : BNE .fail + LDA !ram_roomstrat_state : EOR #$0001 : STA !ram_roomstrat_state + LDA !ram_roomstrat_counter : INC : STA !ram_roomstrat_counter + STA !ram_fail_count + RTS + + .fail + LDA !ram_fail_count : BEQ .done + LDA !ram_HUD_check : CMP #$0006 : BMI .draw + TDC : STA !ram_HUD_check + + .draw + ASL : ADC !ram_HUD_check : ASL : ADC #$0088 : TAX + LDA !ram_roomstrat_counter + JSR Draw2 + LDA !IH_BLANK : STA !HUD_TILEMAP,X + TDC : STA !ram_roomstrat_counter : STA !ram_roomstrat_state : STA !ram_fail_count + LDA !ram_HUD_check : INC : STA !ram_HUD_check + + .done + RTS +} + status_shottimer: { LDA !IH_CONTROLLER_PRI_NEW : AND !IH_INPUT_SHOT : BEQ .incShot diff --git a/src/mainmenu.asm b/src/mainmenu.asm index 641ad231..00a68772 100644 --- a/src/mainmenu.asm +++ b/src/mainmenu.asm @@ -1446,9 +1446,18 @@ DisplayModeMenu: dw ihmode_vspeed dw ihmode_quickdrop dw ihmode_walljump + dw #$FFFF + dw ihmode_goto_page2 + dw #$0000 + %cm_header("INFOHUD DISPLAY MODE") + +DisplayModeMenu2: dw ihmode_armpump + dw ihmode_pumpcounter dw ihmode_shottimer dw ihmode_ramwatch + dw #$FFFF + dw ihmode_goto_page1 dw #$0000 %cm_header("INFOHUD DISPLAY MODE") @@ -1514,14 +1523,17 @@ ihmode_armpump: !IH_MODE_ARMPUMP_INDEX = #$0012 %cm_jsl("Arm Pump Trainer", #action_select_infohud_mode, #$0012) +ihmode_pumpcounter: + %cm_jsl("Arm Pump Counter", #action_select_infohud_mode, #$0013) + ihmode_shottimer: - %cm_jsl("Shot Timer", #action_select_infohud_mode, #$0013) + %cm_jsl("Shot Timer", #action_select_infohud_mode, #$0014) ihmode_ramwatch: -!IH_MODE_RAMWATCH_INDEX = #$0014 - %cm_jsl("Custom RAM Watch", #action_select_infohud_mode, #$0014) +!IH_MODE_RAMWATCH_INDEX = #$0015 + %cm_jsl("Custom RAM Watch", #action_select_infohud_mode, #$0015) -!IH_MODE_COUNT = #$0015 +!IH_MODE_COUNT = #$0016 action_select_infohud_mode: { TYA : STA !sram_display_mode @@ -1529,6 +1541,12 @@ action_select_infohud_mode: JML cm_previous_menu } +ihmode_goto_page1: + %cm_adjacent_submenu("GOTO PAGE ONE", #DisplayModeMenu) + +ihmode_goto_page2: + %cm_adjacent_submenu("GOTO PAGE TWO", #DisplayModeMenu2) + ih_display_mode: dw !ACTION_CHOICE dl #!sram_display_mode @@ -1553,6 +1571,7 @@ ih_display_mode: db #$28, " QUICK DROP", #$FF db #$28, " WALL JUMP", #$FF db #$28, " ARM PUMP", #$FF + db #$28, " PUMP COUNT", #$FF db #$28, " SHOT TIMER", #$FF db #$28, " RAM WATCH", #$FF db #$FF From 469be1c16d6998a96b16783527484ba1c4eca3f1 Mon Sep 17 00:00:00 2001 From: idle Date: Sat, 22 Feb 2025 20:57:04 -0600 Subject: [PATCH 09/23] Port ceres ridley hits room strat --- layout/create_layout.py | 5 ++++ src/infohudmodes.asm | 12 +++++++++ src/layoutmenu.asm | 14 +++++++++++ src/mainmenu.asm | 54 ++++++++++++++++++++++++++++------------- 4 files changed, 68 insertions(+), 17 deletions(-) diff --git a/layout/create_layout.py b/layout/create_layout.py index d6b230af..6e4f58e9 100644 --- a/layout/create_layout.py +++ b/layout/create_layout.py @@ -169,6 +169,8 @@ key2 = key + "2" if key2 in menus: has_page2 = True + if door_prefix != "areaboss": + f_menu_output.write(" dw #$FFFF\n") f_menu_output.write(" dw #doormenu_%s%s_goto_page2\n" % (goto_prefix, door_prefix)) has_page3 = False key3 = key + "3" @@ -191,6 +193,8 @@ f_menu_output.write(" dw #doormenu_%s %s\n" % (f'{door_menu_label:14}', data[2])) else: f_menu_output.write(" dw #doormenu_%s\n" % door_menu_label) + if door_prefix != "areaboss": + f_menu_output.write(" dw #$FFFF\n") f_menu_output.write(" dw #doormenu_%s%s_goto_page1\n" % (goto_prefix, door_prefix)) if has_page3: f_menu_output.write(" dw #doormenu_%s%s_goto_page3\n" % (goto_prefix, door_prefix)) @@ -203,6 +207,7 @@ f_menu_output.write(" dw #doormenu_%s %s\n" % (f'{door_menu_label:14}', data[2])) else: f_menu_output.write(" dw #doormenu_%s\n" % door_menu_label) + f_menu_output.write(" dw #$FFFF\n") f_menu_output.write(" dw #doormenu_%s%s_goto_page1\n" % (goto_prefix, door_prefix)) f_menu_output.write(" dw #doormenu_%s%s_goto_page2\n" % (goto_prefix, door_prefix)) f_menu_output.write(" dw #$0000\n") diff --git a/src/infohudmodes.asm b/src/infohudmodes.asm index cfd3201a..63640654 100644 --- a/src/infohudmodes.asm +++ b/src/infohudmodes.asm @@ -44,6 +44,7 @@ status_roomstrat: RTS .status_room_table + dw status_ceresridley dw status_doorskip dw status_tacotank dw status_moondance @@ -1608,6 +1609,17 @@ status_ramwatch: RTS } +status_ceresridley: +{ + ; displays number of shots until Ridley "dies" + LDA $7E781A : CMP !ram_HUD_check : BEQ .done + STA !ram_HUD_check + LDX #$0088 : JSR Draw4 + + .done + RTS +} + status_doorskip: { if !FEATURE_PAL diff --git a/src/layoutmenu.asm b/src/layoutmenu.asm index f29015b9..102cd0d2 100644 --- a/src/layoutmenu.asm +++ b/src/layoutmenu.asm @@ -1071,6 +1071,7 @@ LayoutCrateriaLeftDoorMenu: dw #doormenu_left_8C52 dw #doormenu_left_8C3A dw #doormenu_left_8C5E + dw #$FFFF dw #doormenu_crateria_left_goto_page2 dw #$0000 %cm_header("SELECT LEFT DOOR") @@ -1093,6 +1094,7 @@ LayoutCrateriaLeftDoorMenu2: dw #doormenu_left_8A06 dw #doormenu_left_89FA dw #doormenu_left_89EE + dw #$FFFF dw #doormenu_crateria_left_goto_page1 dw #$0000 %cm_header("SELECT LEFT DOOR") @@ -1368,6 +1370,7 @@ LayoutLowerNorfairLeftDoorMenu: dw #doormenu_left_985E dw #doormenu_left_9A3E dw #doormenu_left_9936 + dw #$FFFF dw #doormenu_lower_norfair_left_goto_page2 dw #$0000 %cm_header("SELECT LEFT DOOR") @@ -1385,6 +1388,7 @@ LayoutLowerNorfairLeftDoorMenu2: dw #doormenu_left_99BA dw #doormenu_left_9A56 dw #doormenu_left_997E + dw #$FFFF dw #doormenu_lower_norfair_left_goto_page1 dw #$0000 %cm_header("SELECT LEFT DOOR") @@ -1729,6 +1733,7 @@ LayoutUpperNorfairLeftDoorMenu: dw #doormenu_left_9396 dw #doormenu_left_938A dw #doormenu_left_961E + dw #$FFFF dw #doormenu_upper_norfair_left_goto_page2 dw #doormenu_upper_norfair_left_goto_page3 dw #$0000 @@ -1751,6 +1756,7 @@ LayoutUpperNorfairLeftDoorMenu2: dw #doormenu_left_96D2 dw #doormenu_left_982E dw #doormenu_left_96EA + dw #$FFFF dw #doormenu_upper_norfair_left_goto_page1 dw #doormenu_upper_norfair_left_goto_page3 dw #$0000 @@ -1772,6 +1778,7 @@ LayoutUpperNorfairLeftDoorMenu3: dw #doormenu_left_95B2 dw #doormenu_left_977A dw #doormenu_left_9642 + dw #$FFFF dw #doormenu_upper_norfair_left_goto_page1 dw #doormenu_upper_norfair_left_goto_page2 dw #$0000 @@ -2465,6 +2472,7 @@ LayoutCrateriaRightDoorMenu: dw #doormenu_right_8B1A dw #doormenu_right_8952 dw #doormenu_right_8C46 + dw #$FFFF dw #doormenu_crateria_right_goto_page2 dw #$0000 %cm_header("SELECT RIGHT DOOR") @@ -2485,6 +2493,7 @@ LayoutCrateriaRightDoorMenu2: dw #doormenu_right_8BE6 dw #doormenu_right_8B26 dw #doormenu_right_89CA + dw #$FFFF dw #doormenu_crateria_right_goto_page1 dw #$0000 %cm_header("SELECT RIGHT DOOR") @@ -2756,6 +2765,7 @@ LayoutLowerNorfairRightDoorMenu: dw #doormenu_right_9852 dw #doormenu_right_9A32 dw #doormenu_right_992A + dw #$FFFF dw #doormenu_lower_norfair_right_goto_page2 dw #$0000 %cm_header("SELECT RIGHT DOOR") @@ -2773,6 +2783,7 @@ LayoutLowerNorfairRightDoorMenu2: dw #doormenu_right_9A1A dw #doormenu_right_998A dw #doormenu_right_9972 + dw #$FFFF dw #doormenu_lower_norfair_right_goto_page1 dw #$0000 %cm_header("SELECT RIGHT DOOR") @@ -3117,6 +3128,7 @@ LayoutUpperNorfairRightDoorMenu: dw #doormenu_right_93AE dw #doormenu_right_9612 dw #doormenu_right_9606 + dw #$FFFF dw #doormenu_upper_norfair_right_goto_page2 dw #doormenu_upper_norfair_right_goto_page3 dw #$0000 @@ -3140,6 +3152,7 @@ LayoutUpperNorfairRightDoorMenu2: dw #doormenu_right_9666 dw #doormenu_right_96DE dw #doormenu_right_9702 + dw #$FFFF dw #doormenu_upper_norfair_right_goto_page1 dw #doormenu_upper_norfair_right_goto_page3 dw #$0000 @@ -3158,6 +3171,7 @@ LayoutUpperNorfairRightDoorMenu3: dw #doormenu_right_965A dw #doormenu_right_964E dw #doormenu_right_962A + dw #$FFFF dw #doormenu_upper_norfair_right_goto_page1 dw #doormenu_upper_norfair_right_goto_page2 dw #$0000 diff --git a/src/mainmenu.asm b/src/mainmenu.asm index 00a68772..39aef167 100644 --- a/src/mainmenu.asm +++ b/src/mainmenu.asm @@ -1585,6 +1585,7 @@ ih_goto_room_strat: %cm_submenu("Select Room Strat", #RoomStratMenu) RoomStratMenu: + dw ihstrat_ceresridley dw ihstrat_doorskip dw ihstrat_tacotank dw ihstrat_moondance @@ -1596,63 +1597,75 @@ RoomStratMenu: dw ihstrat_botwooncf dw ihstrat_draygonai dw ihstrat_snailclip + dw #$FFFF + dw ihstrat_goto_page2 + dw #$0000 + %cm_header("INFOHUD ROOM STRAT") + %cm_footer("ROOM STRAT MUST BE ACTIVE") + +RoomStratMenu2: dw ihstrat_wasteland dw ihstrat_ridleyai dw ihstrat_downbackzeb dw ihstrat_mbhp dw ihstrat_twocries + dw #$FFFF + dw ihstrat_goto_page1 dw #$0000 %cm_header("INFOHUD ROOM STRAT") %cm_footer("ROOM STRAT MUST BE ACTIVE") +ihstrat_ceresridley: + %cm_jsl("Ceres Ridley Hits", #action_select_room_strat, #$0000) + ihstrat_doorskip: - %cm_jsl("Parlor-Climb Door Skip", #action_select_room_strat, #$0000) + %cm_jsl("Parlor-Climb Door Skip", #action_select_room_strat, #$0001) ihstrat_tacotank: - %cm_jsl("Taco Tank", #action_select_room_strat, #$0001) + %cm_jsl("Taco Tank", #action_select_room_strat, #$0002) ihstrat_moondance: - %cm_jsl("Moondance", #action_select_room_strat, #$0002) + %cm_jsl("Moondance", #action_select_room_strat, #$0003) ihstrat_gateglitch: - %cm_jsl("Gate Glitch", #action_select_room_strat, #$0003) + %cm_jsl("Gate Glitch", #action_select_room_strat, #$0004) ihstrat_moatcwj: - %cm_jsl("Moat CWJ", #action_select_room_strat, #$0004) + %cm_jsl("Moat CWJ", #action_select_room_strat, #$0005) ihstrat_robotflush: - %cm_jsl("Robot Flush", #action_select_room_strat, #$0005) + %cm_jsl("Robot Flush", #action_select_room_strat, #$0006) ihstrat_shinetopb: - %cm_jsl("Shine to PB", #action_select_room_strat, #$0006) + %cm_jsl("Shine to PB", #action_select_room_strat, #$0007) ihstrat_elevatorcf: - %cm_jsl("Elevator Crystal Flash", #action_select_room_strat, #$0007) + %cm_jsl("Elevator Crystal Flash", #action_select_room_strat, #$0008) ihstrat_botwooncf: - %cm_jsl("Botwoon Crystal Flash", #action_select_room_strat, #$0008) + %cm_jsl("Botwoon Crystal Flash", #action_select_room_strat, #$0009) ihstrat_draygonai: - %cm_jsl("Draygon AI", #action_select_room_strat, #$0009) + %cm_jsl("Draygon AI", #action_select_room_strat, #$000A) ihstrat_snailclip: - %cm_jsl("Aqueduct Snail Clip", #action_select_room_strat, #$000A) + %cm_jsl("Aqueduct Snail Clip", #action_select_room_strat, #$000B) ihstrat_wasteland: - %cm_jsl("Wasteland Entry", #action_select_room_strat, #$000B) + %cm_jsl("Wasteland Entry", #action_select_room_strat, #$000C) ihstrat_ridleyai: - %cm_jsl("Ridley AI", #action_select_room_strat, #$000C) + %cm_jsl("Ridley AI", #action_select_room_strat, #$000D) ihstrat_downbackzeb: - %cm_jsl("Downback Zeb Skip", #action_select_room_strat, #$000D) + %cm_jsl("Downback Zeb Skip", #action_select_room_strat, #$000E) ihstrat_mbhp: -!IH_STRAT_MBHP_INDEX = #$000E - %cm_jsl("Mother Brain HP", #action_select_room_strat, #$000E) +!IH_STRAT_MBHP_INDEX = #$000F + %cm_jsl("Mother Brain HP", #action_select_room_strat, #$000F) ihstrat_twocries: - %cm_jsl("Two Cries Standup", #action_select_room_strat, #$000F) + %cm_jsl("Two Cries Standup", #action_select_room_strat, #$0010) action_select_room_strat: { @@ -1663,11 +1676,18 @@ action_select_room_strat: JML cm_previous_menu } +ihstrat_goto_page1: + %cm_adjacent_submenu("GOTO PAGE ONE", #RoomStratMenu) + +ihstrat_goto_page2: + %cm_adjacent_submenu("GOTO PAGE TWO", #RoomStratMenu2) + ih_room_strat: dw !ACTION_CHOICE dl #!sram_room_strat dw #.routine db #$28, "Current Strat", #$FF + db #$28, " CERES HITS", #$FF db #$28, " DOOR SKIP", #$FF db #$28, " TACO TANK", #$FF db #$28, " MOONDANCE", #$FF From 6e6d82f6796e7b306d08733d24901d5b13d6b9cc Mon Sep 17 00:00:00 2001 From: idle Date: Sat, 22 Feb 2025 21:41:36 -0600 Subject: [PATCH 10/23] Port pit room right door room strat --- src/infohudmodes.asm | 101 +++++++++++++++++++++++++------------------ src/mainmenu.asm | 71 ++++++++++++++++-------------- 2 files changed, 97 insertions(+), 75 deletions(-) diff --git a/src/infohudmodes.asm b/src/infohudmodes.asm index 63640654..d2f6c919 100644 --- a/src/infohudmodes.asm +++ b/src/infohudmodes.asm @@ -17,14 +17,14 @@ dw status_spikesuit dw status_lagcounter dw status_cpuusage - dw status_xpos - dw status_ypos dw status_hspeed dw status_vspeed dw status_quickdrop dw status_walljump dw status_armpump dw status_pumpcounter + dw status_xpos + dw status_ypos dw status_shottimer dw status_ramwatch @@ -47,6 +47,7 @@ status_roomstrat: dw status_ceresridley dw status_doorskip dw status_tacotank + dw status_pitdoor dw status_moondance dw status_gateglitch dw status_moatcwj @@ -733,46 +734,6 @@ status_cpuusage: RTS } -status_xpos: -{ - ; Suppress Samus HP display - LDA !SAMUS_HP : STA !ram_last_hp - - LDA !SAMUS_X : CMP !ram_xpos : BEQ .checksubpixel - STA !ram_xpos : LDX #$0088 : JSR Draw4 - LDA !SAMUS_X_SUBPX : BRA .drawsubpixel - - .checksubpixel - LDA !SAMUS_X_SUBPX : CMP !ram_subpixel_pos : BEQ .done - - .drawsubpixel - STA !ram_subpixel_pos : LDX #$0092 : JSR Draw4Hex - LDA !IH_DECIMAL : STA !HUD_TILEMAP+$90 - - .done - RTS -} - -status_ypos: -{ - ; Suppress Samus HP display - LDA !SAMUS_HP : STA !ram_last_hp - - LDA !SAMUS_Y : CMP !ram_ypos : BEQ .checksubpixel - STA !ram_ypos : LDX #$0088 : JSR Draw4 - LDA !SAMUS_Y_SUBPX : BRA .drawsubpixel - - .checksubpixel - LDA !SAMUS_Y_SUBPX : CMP !ram_subpixel_pos : BEQ .done - - .drawsubpixel - STA !ram_subpixel_pos : LDX #$0092 : JSR Draw4Hex - LDA !IH_DECIMAL : STA !HUD_TILEMAP+$90 - - .done - RTS -} - status_hspeed: { ; converted to only use 4 tiles in the HUD, saving 202 cycles @@ -1486,6 +1447,46 @@ status_pumpcounter: RTS } +status_xpos: +{ + ; Suppress Samus HP display + LDA !SAMUS_HP : STA !ram_last_hp + + LDA !SAMUS_X : CMP !ram_xpos : BEQ .checksubpixel + STA !ram_xpos : LDX #$0088 : JSR Draw4 + LDA !SAMUS_X_SUBPX : BRA .drawsubpixel + + .checksubpixel + LDA !SAMUS_X_SUBPX : CMP !ram_subpixel_pos : BEQ .done + + .drawsubpixel + STA !ram_subpixel_pos : LDX #$0092 : JSR Draw4Hex + LDA !IH_DECIMAL : STA !HUD_TILEMAP+$90 + + .done + RTS +} + +status_ypos: +{ + ; Suppress Samus HP display + LDA !SAMUS_HP : STA !ram_last_hp + + LDA !SAMUS_Y : CMP !ram_ypos : BEQ .checksubpixel + STA !ram_ypos : LDX #$0088 : JSR Draw4 + LDA !SAMUS_Y_SUBPX : BRA .drawsubpixel + + .checksubpixel + LDA !SAMUS_Y_SUBPX : CMP !ram_subpixel_pos : BEQ .done + + .drawsubpixel + STA !ram_subpixel_pos : LDX #$0092 : JSR Draw4Hex + LDA !IH_DECIMAL : STA !HUD_TILEMAP+$90 + + .done + RTS +} + status_shottimer: { LDA !IH_CONTROLLER_PRI_NEW : AND !IH_INPUT_SHOT : BEQ .incShot @@ -2082,6 +2083,22 @@ endif JMP .incstate } +status_pitdoor: +{ + LDA !ROOM_ID : CMP.w #ROOM_PitRoom : BNE .done + LDA $7EDE64 : BNE .draw_N + LDA !IH_LETTER_Y : STA !HUD_TILEMAP+$8E + LDA !sram_display_mode_reward : BEQ .done + %sfxreward() + RTS + + .draw_N + LDA !IH_LETTER_N : STA !HUD_TILEMAP+$8E + + .done + RTS +} + status_moondance: { LDA !ROOM_ID : CMP.w #ROOM_DachoraRoom : BEQ .moondance diff --git a/src/mainmenu.asm b/src/mainmenu.asm index 39aef167..00651e9a 100644 --- a/src/mainmenu.asm +++ b/src/mainmenu.asm @@ -1440,8 +1440,6 @@ DisplayModeMenu: dw ihmode_spikesuit dw ihmode_lagcounter dw ihmode_cpuusage - dw ihmode_xpos - dw ihmode_ypos dw ihmode_hspeed dw ihmode_vspeed dw ihmode_quickdrop @@ -1454,6 +1452,8 @@ DisplayModeMenu: DisplayModeMenu2: dw ihmode_armpump dw ihmode_pumpcounter + dw ihmode_xpos + dw ihmode_ypos dw ihmode_shottimer dw ihmode_ramwatch dw #$FFFF @@ -1499,32 +1499,32 @@ ihmode_lagcounter: ihmode_cpuusage: %cm_jsl("CPU Usage", #action_select_infohud_mode, #$000B) -ihmode_xpos: - %cm_jsl("X Position", #action_select_infohud_mode, #$000C) - -ihmode_ypos: - %cm_jsl("Y Position", #action_select_infohud_mode, #$000D) - ihmode_hspeed: - %cm_jsl("Horizontal Speed", #action_select_infohud_mode, #$000E) + %cm_jsl("Horizontal Speed", #action_select_infohud_mode, #$000C) ihmode_vspeed: !IH_MODE_VSPEED_INDEX = #$000F - %cm_jsl("Vertical Speed", #action_select_infohud_mode, #$000F) + %cm_jsl("Vertical Speed", #action_select_infohud_mode, #$000D) ihmode_quickdrop: - %cm_jsl("Quickdrop Trainer", #action_select_infohud_mode, #$0010) + %cm_jsl("Quickdrop Trainer", #action_select_infohud_mode, #$000E) ihmode_walljump: !IH_MODE_WALLJUMP_INDEX = #$0011 - %cm_jsl("Walljump Trainer", #action_select_infohud_mode, #$0011) + %cm_jsl("Walljump Trainer", #action_select_infohud_mode, #$000F) ihmode_armpump: !IH_MODE_ARMPUMP_INDEX = #$0012 - %cm_jsl("Arm Pump Trainer", #action_select_infohud_mode, #$0012) + %cm_jsl("Arm Pump Trainer", #action_select_infohud_mode, #$0010) ihmode_pumpcounter: - %cm_jsl("Arm Pump Counter", #action_select_infohud_mode, #$0013) + %cm_jsl("Arm Pump Counter", #action_select_infohud_mode, #$0011) + +ihmode_xpos: + %cm_jsl("X Position", #action_select_infohud_mode, #$0012) + +ihmode_ypos: + %cm_jsl("Y Position", #action_select_infohud_mode, #$0013) ihmode_shottimer: %cm_jsl("Shot Timer", #action_select_infohud_mode, #$0014) @@ -1564,14 +1564,14 @@ ih_display_mode: db #$28, " SPIKESUIT", #$FF db #$28, "LAG COUNTER", #$FF db #$28, " CPU USAGE", #$FF - db #$28, " X POSITION", #$FF - db #$28, " Y POSITION", #$FF db #$28, "HORIZ SPEED", #$FF db #$28, " VERT SPEED", #$FF db #$28, " QUICK DROP", #$FF db #$28, " WALL JUMP", #$FF db #$28, " ARM PUMP", #$FF db #$28, " PUMP COUNT", #$FF + db #$28, " X POSITION", #$FF + db #$28, " Y POSITION", #$FF db #$28, " SHOT TIMER", #$FF db #$28, " RAM WATCH", #$FF db #$FF @@ -1588,6 +1588,7 @@ RoomStratMenu: dw ihstrat_ceresridley dw ihstrat_doorskip dw ihstrat_tacotank + dw ihstrat_pitdoor dw ihstrat_moondance dw ihstrat_gateglitch dw ihstrat_moatcwj @@ -1595,8 +1596,6 @@ RoomStratMenu: dw ihstrat_shinetopb dw ihstrat_elevatorcf dw ihstrat_botwooncf - dw ihstrat_draygonai - dw ihstrat_snailclip dw #$FFFF dw ihstrat_goto_page2 dw #$0000 @@ -1604,6 +1603,8 @@ RoomStratMenu: %cm_footer("ROOM STRAT MUST BE ACTIVE") RoomStratMenu2: + dw ihstrat_draygonai + dw ihstrat_snailclip dw ihstrat_wasteland dw ihstrat_ridleyai dw ihstrat_downbackzeb @@ -1624,48 +1625,51 @@ ihstrat_doorskip: ihstrat_tacotank: %cm_jsl("Taco Tank", #action_select_room_strat, #$0002) +ihstrat_pitdoor: + %cm_jsl("Pit Room Right Door", #action_select_room_strat, #$0003) + ihstrat_moondance: - %cm_jsl("Moondance", #action_select_room_strat, #$0003) + %cm_jsl("Moondance", #action_select_room_strat, #$0004) ihstrat_gateglitch: - %cm_jsl("Gate Glitch", #action_select_room_strat, #$0004) + %cm_jsl("Gate Glitch", #action_select_room_strat, #$0005) ihstrat_moatcwj: - %cm_jsl("Moat CWJ", #action_select_room_strat, #$0005) + %cm_jsl("Moat CWJ", #action_select_room_strat, #$0006) ihstrat_robotflush: - %cm_jsl("Robot Flush", #action_select_room_strat, #$0006) + %cm_jsl("Robot Flush", #action_select_room_strat, #$0007) ihstrat_shinetopb: - %cm_jsl("Shine to PB", #action_select_room_strat, #$0007) + %cm_jsl("Shine to PB", #action_select_room_strat, #$0008) ihstrat_elevatorcf: - %cm_jsl("Elevator Crystal Flash", #action_select_room_strat, #$0008) + %cm_jsl("Elevator Crystal Flash", #action_select_room_strat, #$0009) ihstrat_botwooncf: - %cm_jsl("Botwoon Crystal Flash", #action_select_room_strat, #$0009) + %cm_jsl("Botwoon Crystal Flash", #action_select_room_strat, #$000A) ihstrat_draygonai: - %cm_jsl("Draygon AI", #action_select_room_strat, #$000A) + %cm_jsl("Draygon AI", #action_select_room_strat, #$000B) ihstrat_snailclip: - %cm_jsl("Aqueduct Snail Clip", #action_select_room_strat, #$000B) + %cm_jsl("Aqueduct Snail Clip", #action_select_room_strat, #$000C) ihstrat_wasteland: - %cm_jsl("Wasteland Entry", #action_select_room_strat, #$000C) + %cm_jsl("Wasteland Entry", #action_select_room_strat, #$000D) ihstrat_ridleyai: - %cm_jsl("Ridley AI", #action_select_room_strat, #$000D) + %cm_jsl("Ridley AI", #action_select_room_strat, #$000E) ihstrat_downbackzeb: - %cm_jsl("Downback Zeb Skip", #action_select_room_strat, #$000E) + %cm_jsl("Downback Zeb Skip", #action_select_room_strat, #$000F) ihstrat_mbhp: -!IH_STRAT_MBHP_INDEX = #$000F - %cm_jsl("Mother Brain HP", #action_select_room_strat, #$000F) +!IH_STRAT_MBHP_INDEX = #$0010 + %cm_jsl("Mother Brain HP", #action_select_room_strat, #$0010) ihstrat_twocries: - %cm_jsl("Two Cries Standup", #action_select_room_strat, #$0010) + %cm_jsl("Two Cries Standup", #action_select_room_strat, #$0011) action_select_room_strat: { @@ -1690,6 +1694,7 @@ ih_room_strat: db #$28, " CERES HITS", #$FF db #$28, " DOOR SKIP", #$FF db #$28, " TACO TANK", #$FF + db #$28, " PIT DOOR", #$FF db #$28, " MOONDANCE", #$FF db #$28, "GATE GLITCH", #$FF db #$28, " MOAT CWJ", #$FF From dc4719cca0bcee51336ce227b2dc868f4a9da242 Mon Sep 17 00:00:00 2001 From: idle Date: Sun, 23 Feb 2025 00:57:49 -0600 Subject: [PATCH 11/23] Port kihunter manip room strat --- src/defines.asm | 14 +++- src/infohudmodes.asm | 196 +++++++++++++++++++++++++++++++++++++++++++ src/mainmenu.asm | 11 ++- src/symbols.asm | 14 +++- 4 files changed, 228 insertions(+), 7 deletions(-) diff --git a/src/defines.asm b/src/defines.asm index d087f354..31ef5a9e 100644 --- a/src/defines.asm +++ b/src/defines.asm @@ -82,8 +82,9 @@ ; ^ FREE SPACE ^ up to +$6C ; ---------------------------------------------------------- -; Shinetune uses several variables not used by other modes, -; but also shinetune does not use many other variables, +; Shinetune and kihunter manip use several variables +; that are not used by other modes, +; but also they do not need many other variables, ; so the following variables share the same WRAM !ram_xpos = !WRAM_START+$6E @@ -96,6 +97,15 @@ !ram_fail_sum = !WRAM_START+$7C !ram_fail_count = !WRAM_START+$7E +!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_shine_dash_held_late = !WRAM_START+$6E !ram_shinetune_early_1 = !WRAM_START+$70 !ram_shinetune_late_1 = !WRAM_START+$72 diff --git a/src/infohudmodes.asm b/src/infohudmodes.asm index d2f6c919..cf2dc03b 100644 --- a/src/infohudmodes.asm +++ b/src/infohudmodes.asm @@ -59,6 +59,7 @@ status_roomstrat: dw status_snailclip dw status_wasteland dw status_ridleyai + dw status_kihuntermanip dw status_downbackzeb dw status_mbhp dw status_twocries @@ -3272,6 +3273,201 @@ endif RTS } +status_kihuntermanip: +{ + LDA !ROOM_ID : CMP.w #ROOM_RedKihunterShaft : BEQ .roomStairs + CMP.w #ROOM_ThreeMusketeersRoom : BNE .done + JMP status_musketeermanip + + .done + RTS + + .roomStairs + LDA !IH_BLANK : STA !HUD_TILEMAP+$8C : STA !HUD_TILEMAP+$90 + + ; start with top kihunter, enemy0 + LDX #$0000 + + ; Y position, check if below (greater than) Y = 500 + LDA !ENEMY_Y,X : CMP #$01F4 : BPL .topYSuccess + LDA !IH_LETTER_N : STA !HUD_TILEMAP+$88 : STA !HUD_TILEMAP+$8A + STA !HUD_TILEMAP+$8E : BRA .movementEnemy0 + + .topYSuccess + LDA !IH_LETTER_Y : STA !HUD_TILEMAP+$88 + + ; X position, check if left of (less than) X = 168 + LDA !ENEMY_X,X : CMP #$00A8 : BMI .topXSuccess + LDA !IH_LETTER_N : STA !HUD_TILEMAP+$8A : BRA .movementEnemy0 + + .topXSuccess + LDA !IH_LETTER_Y : STA !HUD_TILEMAP+$8A + + .movementEnemy0 + ; check for change in enemy0 xpos + LDA !ENEMY_X,X : CMP !ram_enemy0_last_xpos + BEQ .finishX0 : BMI .leftX0 + LDA !IH_ARROW_RIGHT : STA !HUD_TILEMAP+$16 + BRA .finishX0 + .leftX0 + LDA !IH_ARROW_LEFT : STA !HUD_TILEMAP+$16 + .finishX0 + LDA !ENEMY_X,X : STA !ram_enemy0_last_xpos + + ; check for change in enemy0 ypos + LDA !ENEMY_Y,X : CMP !ram_enemy0_last_ypos + BEQ .finishY0 : BMI .upY0 + LDA !IH_ARROW_DOWN : STA !HUD_TILEMAP+$18 + BRA .finishY0 + .upY0 + LDA !IH_ARROW_UP : STA !HUD_TILEMAP+$18 + .finishY0 + LDA !ENEMY_Y,X : STA !ram_enemy0_last_ypos + + ; bottom kihunter, enemy4 + LDX #$0100 + + ; Y position, check if below (greater than) Y = 790 + LDA !ENEMY_Y,X : CMP #$0316 : BPL .bottomYSuccess + LDA !IH_LETTER_N : STA !HUD_TILEMAP+$8E : BRA .movementEnemy4 + + .bottomYSuccess + LDA !IH_LETTER_Y : STA !HUD_TILEMAP+$8E + + .movementEnemy4 + ; check for change in enemy4 xpos + LDA !ENEMY_X,X : CMP !ram_enemy4_last_xpos + BEQ .finishX4 : BMI .leftX4 + LDA !IH_ARROW_RIGHT : STA !HUD_TILEMAP+$56 + BRA .finishX4 + .leftX4 + LDA !IH_ARROW_LEFT : STA !HUD_TILEMAP+$56 + .finishX4 + LDA !ENEMY_X,X : STA !ram_enemy4_last_xpos + + ; check for change in enemy4 ypos + LDA !ENEMY_Y,X : CMP !ram_enemy4_last_ypos + BEQ .finishY4 : BMI .upY4 + LDA !IH_ARROW_DOWN : STA !HUD_TILEMAP+$58 + BRA .finishY4 + .upY4 + LDA !IH_ARROW_UP : STA !HUD_TILEMAP+$58 + .finishY4 + LDA !ENEMY_Y,X : STA !ram_enemy4_last_ypos + + RTS +} + +status_musketeermanip: +{ + LDA !SAMUS_HP : STA !ram_last_hp + LDA !IH_BLANK : STA !HUD_TILEMAP+$8C : STA !HUD_TILEMAP+$8E + STA !HUD_TILEMAP+$90 : STA !HUD_TILEMAP+$92 : STA !HUD_TILEMAP+$94 + STA !HUD_TILEMAP+$96 : STA !HUD_TILEMAP+$98 : STA !HUD_TILEMAP+$14 + + ; top kihunter, enemy8 + LDX #$0200 + + ; X position, check if right of (greater than) X = 396 or X = 343 + LDA !ENEMY_X,X : CMP #$018C : BPL .successBothTop + CMP #$0157 : BPL .successSingleTop + LDA !IH_LETTER_N : STA !HUD_TILEMAP+$16 : STA !HUD_TILEMAP+$18 + BRA .movementEnemy8 + + .successBothTop + LDA !IH_LETTER_Y : STA !HUD_TILEMAP+$16 : STA !HUD_TILEMAP+$18 + BRA .movementEnemy8 + + .successSingleTop + LDA !IH_LETTER_Y : STA !HUD_TILEMAP+$16 + LDA !IH_LETTER_N : STA !HUD_TILEMAP+$18 + + .movementEnemy8 + ; check for change in enemy8 xpos + LDA !ENEMY_X,X : CMP !ram_enemy8_last_xpos + BEQ .x8Finish : BMI .x8Left + LDA !IH_ARROW_RIGHT : STA !HUD_TILEMAP+$56 + BRA .x8Finish + .x8Left + LDA !IH_ARROW_LEFT : STA !HUD_TILEMAP+$56 + .x8Finish + LDA !ENEMY_X,X : STA !ram_enemy8_last_xpos + + ; check for change in enemy8 ypos + LDA !ENEMY_Y,X : CMP !ram_enemy8_last_ypos + BEQ .y8Finish : BMI .y8Up + LDA !IH_ARROW_DOWN : STA !HUD_TILEMAP+$58 + BRA .y8Finish + .y8Up + LDA !IH_ARROW_UP : STA !HUD_TILEMAP+$58 + .y8Finish + LDA !ENEMY_Y,X : STA !ram_enemy8_last_ypos + + ; middle kihunter, enemy6 + LDX #$0180 + + ; X position, check if left of (less than) X = 343 + LDA !ENEMY_X,X : CMP #$0157 : BMI .successMiddle + LDA !IH_LETTER_N : STA !HUD_TILEMAP+$88 : BRA .movementEnemy6 + + .successMiddle + LDA !IH_LETTER_Y : STA !HUD_TILEMAP+$88 + + .movementEnemy6 + ; check for change in enemy6 xpos + LDA !ENEMY_X,X : CMP !ram_enemy6_last_xpos + BEQ .x6Finish : BMI .x6Left + LDA !IH_ARROW_RIGHT : STA !HUD_TILEMAP+$8C + BRA .x6Finish + .x6Left + LDA !IH_ARROW_LEFT : STA !HUD_TILEMAP+$8C + .x6Finish + LDA !ENEMY_X,X : STA !ram_enemy6_last_xpos + + ; check for change in enemy6 ypos + LDA !ENEMY_Y,X : CMP !ram_enemy6_last_ypos + BEQ .y6Finish : BMI .y6Up + LDA !IH_ARROW_DOWN : STA !HUD_TILEMAP+$8E + BRA .y6Finish + .y6Up + LDA !IH_ARROW_UP : STA !HUD_TILEMAP+$8E + .y6Finish + LDA !ENEMY_Y,X : STA !ram_enemy6_last_ypos + + ; bottom kihunter, enemy4 + LDX #$0100 + + ; X position, check if right of (greater than) X = 343 + LDA !ENEMY_X,X : CMP #$0157 : BPL .successBottom + LDA !IH_LETTER_N : STA !HUD_TILEMAP+$92 : BRA .movementEnemy4 + + .successBottom + LDA !IH_LETTER_Y : STA !HUD_TILEMAP+$92 + + .movementEnemy4 + ; check for change in enemy4 xpos + LDA !ENEMY_X,X : CMP !ram_enemy4_last_xpos + BEQ .x4Finish : BMI .x4Left + LDA !IH_ARROW_RIGHT : STA !HUD_TILEMAP+$96 + BRA .x4Finish + .x4Left + LDA !IH_ARROW_LEFT : STA !HUD_TILEMAP+$96 + .x4Finish + LDA !ENEMY_X,X : STA !ram_enemy4_last_xpos + + ; check for change in enemy4 ypos + LDA !ENEMY_Y,X : CMP !ram_enemy4_last_ypos + BEQ .y4Finish : BMI .y4Up + LDA !IH_ARROW_DOWN : STA !HUD_TILEMAP+$98 + BRA .y4Finish + .y4Up + LDA !IH_ARROW_UP : STA !HUD_TILEMAP+$98 + .y4Finish + LDA !ENEMY_Y,X : STA !ram_enemy4_last_ypos + + RTS +} + status_wasteland: { ; save a bunch of bytes/cycles by using 16bit addressing diff --git a/src/mainmenu.asm b/src/mainmenu.asm index 00651e9a..f8966b88 100644 --- a/src/mainmenu.asm +++ b/src/mainmenu.asm @@ -1607,6 +1607,7 @@ RoomStratMenu2: dw ihstrat_snailclip dw ihstrat_wasteland dw ihstrat_ridleyai + dw ihstrat_kihuntermanip dw ihstrat_downbackzeb dw ihstrat_mbhp dw ihstrat_twocries @@ -1661,15 +1662,18 @@ ihstrat_wasteland: ihstrat_ridleyai: %cm_jsl("Ridley AI", #action_select_room_strat, #$000E) +ihstrat_kihuntermanip: + %cm_jsl("Kihunter Manipulation", #action_select_room_strat, #$000F) + ihstrat_downbackzeb: - %cm_jsl("Downback Zeb Skip", #action_select_room_strat, #$000F) + %cm_jsl("Downback Zeb Skip", #action_select_room_strat, #$0010) ihstrat_mbhp: !IH_STRAT_MBHP_INDEX = #$0010 - %cm_jsl("Mother Brain HP", #action_select_room_strat, #$0010) + %cm_jsl("Mother Brain HP", #action_select_room_strat, #$0011) ihstrat_twocries: - %cm_jsl("Two Cries Standup", #action_select_room_strat, #$0011) + %cm_jsl("Two Cries Standup", #action_select_room_strat, #$0012) action_select_room_strat: { @@ -1706,6 +1710,7 @@ ih_room_strat: db #$28, " SNAIL CLIP", #$FF db #$28, " WASTELAND", #$FF db #$28, " RIDLEY AI", #$FF + db #$28, " KIHUNTER", #$FF db #$28, " DBACK ZEB", #$FF db #$28, " MB HP", #$FF db #$28, " TWO CRIES", #$FF diff --git a/src/symbols.asm b/src/symbols.asm index a21cc549..06fd4f26 100644 --- a/src/symbols.asm +++ b/src/symbols.asm @@ -80,8 +80,9 @@ ram_activated_shine_duration = !ram_activated_shine_duration ; !WRAM_START+$5E ; ^ FREE SPACE ^ up to +$6C ; ---------------------------------------------------------- -; Shinetune uses several variables not used by other modes, -; but also shinetune does not use many other variables, +; Shinetune and kihunter manip use several variables +; that are not used by other modes, +; but also they do not need many other variables, ; so the following variables share the same WRAM ram_xpos = !ram_xpos ; !WRAM_START+$6E @@ -94,6 +95,15 @@ 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_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_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 From 73944bac27b57f5e679ba5fab07148ba1426d39c Mon Sep 17 00:00:00 2001 From: idle Date: Sun, 23 Feb 2025 14:25:57 -0600 Subject: [PATCH 12/23] Port kraid radar room strat --- src/defines.asm | 24 +++++- src/infohudmodes.asm | 173 +++++++++++++++++++++++++++++++++++++++++++ src/mainmenu.asm | 35 +++++---- src/symbols.asm | 10 ++- 4 files changed, 225 insertions(+), 17 deletions(-) diff --git a/src/defines.asm b/src/defines.asm index 31ef5a9e..f0ef4f48 100644 --- a/src/defines.asm +++ b/src/defines.asm @@ -82,7 +82,7 @@ ; ^ FREE SPACE ^ up to +$6C ; ---------------------------------------------------------- -; Shinetune and kihunter manip use several variables +; A few room strats like shinetune use several variables ; that are not used by other modes, ; but also they do not need many other variables, ; so the following variables share the same WRAM @@ -97,6 +97,7 @@ !ram_fail_sum = !WRAM_START+$7C !ram_fail_count = !WRAM_START+$7E +; Kihunter manip !ram_enemy0_last_xpos = !WRAM_START+$6E !ram_enemy0_last_ypos = !WRAM_START+$70 !ram_enemy4_last_xpos = !WRAM_START+$72 @@ -106,6 +107,13 @@ !ram_enemy8_last_xpos = !WRAM_START+$7A !ram_enemy8_last_ypos = !WRAM_START+$7C +; 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 + +; Shinetune !ram_shine_dash_held_late = !WRAM_START+$6E !ram_shinetune_early_1 = !WRAM_START+$70 !ram_shinetune_late_1 = !WRAM_START+$72 @@ -515,9 +523,23 @@ !IH_LETTER_Y = #$0C67 !IH_NUMBER_ZERO = #$0C09 !IH_ARROW_LEFT = #$0C60 +!IH_ARROW_LEFT_GREY = #$1460 +!IH_ARROW_LEFT_PINK_OUTLINE = #$0860 +!IH_ARROW_LEFT_RED = #$1C60 !IH_ARROW_UP = #$0C61 +!IH_ARROW_UP_GREY = #$1461 +!IH_ARROW_UP_PINK_OUTLINE = #$0861 +!IH_ARROW_UP_RED = #$1C61 !IH_ARROW_RIGHT = #$0C62 +!IH_ARROW_RIGHT_GREY = #$1462 +!IH_ARROW_RIGHT_PINK_OUTLINE = #$0862 +!IH_ARROW_RIGHT_RED = #$1C62 !IH_ARROW_DOWN = #$0C63 +!IH_ARROW_DOWN_GREY = #$1463 +!IH_ARROW_DOWN_PINK_OUTLINE = #$0863 +!IH_ARROW_DOWN_RED = #$1C63 +!IH_MORPH_BALL_YELLOW = #$00C9 +!IH_MORPH_BALL_GREEN = #$10C9 !IH_PAUSE = #$0100 ; right !IH_SLOWDOWN = #$0400 ; down diff --git a/src/infohudmodes.asm b/src/infohudmodes.asm index cf2dc03b..d2b9593b 100644 --- a/src/infohudmodes.asm +++ b/src/infohudmodes.asm @@ -49,6 +49,7 @@ status_roomstrat: dw status_tacotank dw status_pitdoor dw status_moondance + dw status_kraidradar dw status_gateglitch dw status_moatcwj dw status_robotflush @@ -2673,6 +2674,178 @@ status_moondance_tas: JMP .alldone } +status_kraidradar: +{ + LDA !ROOM_ID : CMP.w #ROOM_KraidRoom : BNE .skip + ; stop tracking when Kraid takes damage + LDA !ENEMY_HP : CMP #$03E8 : BEQ .setup + + .skip + RTS + + .setup + LDA !SAMUS_HP : STA !ram_last_hp ; suppress Samus HP + LDA !IH_BLANK : STA !HUD_TILEMAP+$88 : STA !HUD_TILEMAP+$8A ; clear space on HUD + STA !HUD_TILEMAP+$8C : STA !HUD_TILEMAP+$8E : STA !HUD_TILEMAP+$90 + STA !HUD_TILEMAP+$92 : STA !HUD_TILEMAP+$94 : STA !HUD_TILEMAP+$96 + STA !HUD_TILEMAP+$98 + + ; Detect and draw Samus first + + ; check if sweet spot (2 missile KQK using bomb setup) + LDY !SAMUS_X : CPY #$004B : BEQ .greenSamus + LDA !IH_MORPH_BALL_YELLOW : BRA .checkSamusX + + .greenSamus + LDA !IH_MORPH_BALL_GREEN + + .checkSamusX + CPY #$0060 : BPL .samusXrightSide + CPY #$0030 : BMI .samusXpos1 + CPY #$0040 : BMI .samusXpos2 + CPY #$0050 : BMI .samusXpos3 + STA !HUD_TILEMAP+$92 : BRA .checkEnemies + .samusXpos1 + STA !HUD_TILEMAP+$8C : BRA .checkEnemies + .samusXpos2 + STA !HUD_TILEMAP+$8E : BRA .checkEnemies + .samusXpos3 + STA !HUD_TILEMAP+$90 : BRA .checkEnemies + .samusXrightSide + CPY #$0070 : BMI .samusXpos5 + CPY #$0080 : BMI .samusXpos6 + STA !HUD_TILEMAP+$98 : BRA .checkEnemies + .samusXpos5 + STA !HUD_TILEMAP+$94 : BRA .checkEnemies + .samusXpos6 + STA !HUD_TILEMAP+$96 + + ; Detect stuff + .checkEnemies + ; Enemy 6 (good fingernail) + LDX #$0180 + + ; Y position, check if Y < 624 + LDA !ENEMY_Y,X : CMP #$0270 : BCC .enemy6X + LDA #$FFFF : STA !ram_radar6 : BRA .checkEnemy7 + + .enemy6X + ; check X position, set position bit on radar + LDY !ENEMY_X,X : TDC + CPY #$0020 : BMI .enemy6X_store : INC + CPY #$0030 : BMI .enemy6X_store : INC + CPY #$0040 : BMI .enemy6X_store : INC + CPY #$0050 : BMI .enemy6X_store : INC + CPY #$0060 : BMI .enemy6X_store : INC + CPY #$0070 : BMI .enemy6X_store : INC + CPY #$0080 : BMI .enemy6X_store : INC + .enemy6X_store + ASL : STA !ram_radar6 + + ; check if Y position is moving up or down + LDA !ENEMY_Y,X : CMP !ram_enemy6_last_ypos : BCC .enemy6Y_movingUp + STA !ram_enemy6_last_ypos + ; check if Y position is high or low, Y < 594 + CMP #$0252 : BCC .enemy6YHigh_movingDown + LDA !ram_radar6 : ORA #$0800 : BRA .enemy6Y_store + .enemy6YHigh_movingDown + LDA !ram_radar6 : ORA #$0400 : BRA .enemy6Y_store + + .enemy6Y_movingUp + STA !ram_enemy6_last_ypos + ; check if Y position is high or low, Y < 594 + CMP #$0252 : BCC .enemy6YHigh_movingUp + LDA !ram_radar6 : AND #$00FF : ORA #$0200 : BRA .enemy6Y_store + .enemy6YHigh_movingUp + LDA !ram_radar6 : AND #$00FF : ORA #$0100 + .enemy6Y_store + STA !ram_radar6 + + .checkEnemy7 + ; Enemy 7 (bad fingernail) + LDX #$01C0 + + ; Y position, check if Y < 624 + LDA !ENEMY_Y,X : CMP #$0270 : BCC .enemy7X + LDA #$FFFF : STA !ram_radar7 : BRA .drawEnemy6 + + .enemy7X + ; check X position, set position bit on radar + LDY !ENEMY_X,X : TDC + CPY #$0020 : BMI .enemy7X_store : INC + CPY #$0030 : BMI .enemy7X_store : INC + CPY #$0040 : BMI .enemy7X_store : INC + CPY #$0050 : BMI .enemy7X_store : INC + CPY #$0060 : BMI .enemy7X_store : INC + CPY #$0070 : BMI .enemy7X_store : INC + CPY #$0080 : BMI .enemy7X_store : INC + .enemy7X_store + ASL : STA !ram_radar7 + + ; check if Y position is moving up or down + LDA !ENEMY_Y,X : CMP !ram_enemy7_last_ypos : BCC .enemy7Y_movingUp + STA !ram_enemy7_last_ypos + ; check if Y position is high or low, Y < 594 + CMP #$0252 : BCC .enemy7YHigh_movingDown + LDA !ram_radar7 : ORA #$0800 : BRA .enemy7Y_store + .enemy7YHigh_movingDown + LDA !ram_radar7 : ORA #$0400 : BRA .enemy7Y_store + + .enemy7Y_movingUp + STA !ram_enemy7_last_ypos + ; check if Y position is high or low, Y < 594 + CMP #$0252 : BCC .enemy7YHigh_movingUp + LDA !ram_radar7 : AND #$00FF : ORA #$0200 : BRA .enemy7Y_store + .enemy7YHigh_movingUp + LDA !ram_radar7 : AND #$00FF : ORA #$0100 + .enemy7Y_store + STA !ram_radar7 + +; Draw stuff +; Don't draw the enemy if first nibble is non-zero +; Second bit determines arrow direction and color: +; 8 = far away moving down, 4 = close moving down +; 2 = far away moving up, 1 = close moving up +; Low byte contains the position offset +; The bottom-left tile of the HUD is unused + .drawEnemy6 + ; Enemy 6 (good fingernail) + LDA !ram_radar6 : BIT #$F000 : BNE .drawEnemy7 + AND #$00FF : TAX + LDA !ram_radar6 : AND #$0F00 + CMP #$0800 : BEQ .farDown6 + CMP #$0400 : BEQ .closeDown6 + CMP #$0200 : BEQ .farUp6 + + LDA !IH_ARROW_UP_PINK_OUTLINE : STA !HUD_TILEMAP+$8A,X : BRA .drawEnemy7 + .farUp6 + LDA !IH_ARROW_UP : STA !HUD_TILEMAP+$8A,X : BRA .drawEnemy7 + .closeDown6 + LDA !IH_ARROW_DOWN_PINK_OUTLINE : STA !HUD_TILEMAP+$8A,X : BRA .drawEnemy7 + .farDown6 + LDA !IH_ARROW_DOWN : STA !HUD_TILEMAP+$8A,X + + .drawEnemy7 + ; Enemy 7 (bad fingernail) + LDA !ram_radar7 : AND #$F000 : BNE .done + AND #$00FF : TAX + LDA !ram_radar7 : AND #$0F00 + CMP #$0800 : BEQ .farDown7 + CMP #$0400 : BEQ .closeDown7 + CMP #$0200 : BEQ .farUp7 + + LDA !IH_ARROW_UP_RED : STA !HUD_TILEMAP+$8A,X : BRA .done + .farUp7 + LDA !IH_ARROW_UP_GREY : STA !HUD_TILEMAP+$8A,X : BRA .done + .closeDown7 + LDA !IH_ARROW_DOWN_RED : STA !HUD_TILEMAP+$8A,X : BRA .done + .farDown7 + LDA !IH_ARROW_DOWN_GREY : STA !HUD_TILEMAP+$8A,X + + .done + RTS +} + status_gateglitch: { ; Arbitrarily expecting shot and gate events to be within 20 frames of each other diff --git a/src/mainmenu.asm b/src/mainmenu.asm index f8966b88..d302269f 100644 --- a/src/mainmenu.asm +++ b/src/mainmenu.asm @@ -1590,6 +1590,7 @@ RoomStratMenu: dw ihstrat_tacotank dw ihstrat_pitdoor dw ihstrat_moondance + dw ihstrat_kraidradar dw ihstrat_gateglitch dw ihstrat_moatcwj dw ihstrat_robotflush @@ -1632,48 +1633,51 @@ ihstrat_pitdoor: ihstrat_moondance: %cm_jsl("Moondance", #action_select_room_strat, #$0004) +ihstrat_kraidradar: + %cm_jsl("Kraid Nail Radar", #action_select_room_strat, #$0005) + ihstrat_gateglitch: - %cm_jsl("Gate Glitch", #action_select_room_strat, #$0005) + %cm_jsl("Gate Glitch", #action_select_room_strat, #$0006) ihstrat_moatcwj: - %cm_jsl("Moat CWJ", #action_select_room_strat, #$0006) + %cm_jsl("Moat CWJ", #action_select_room_strat, #$0007) ihstrat_robotflush: - %cm_jsl("Robot Flush", #action_select_room_strat, #$0007) + %cm_jsl("Robot Flush", #action_select_room_strat, #$0008) ihstrat_shinetopb: - %cm_jsl("Shine to PB", #action_select_room_strat, #$0008) + %cm_jsl("Shine to PB", #action_select_room_strat, #$0009) ihstrat_elevatorcf: - %cm_jsl("Elevator Crystal Flash", #action_select_room_strat, #$0009) + %cm_jsl("Elevator Crystal Flash", #action_select_room_strat, #$000A) ihstrat_botwooncf: - %cm_jsl("Botwoon Crystal Flash", #action_select_room_strat, #$000A) + %cm_jsl("Botwoon Crystal Flash", #action_select_room_strat, #$000B) ihstrat_draygonai: - %cm_jsl("Draygon AI", #action_select_room_strat, #$000B) + %cm_jsl("Draygon AI", #action_select_room_strat, #$000C) ihstrat_snailclip: - %cm_jsl("Aqueduct Snail Clip", #action_select_room_strat, #$000C) + %cm_jsl("Aqueduct Snail Clip", #action_select_room_strat, #$000D) ihstrat_wasteland: - %cm_jsl("Wasteland Entry", #action_select_room_strat, #$000D) + %cm_jsl("Wasteland Entry", #action_select_room_strat, #$000E) ihstrat_ridleyai: - %cm_jsl("Ridley AI", #action_select_room_strat, #$000E) + %cm_jsl("Ridley AI", #action_select_room_strat, #$000F) ihstrat_kihuntermanip: - %cm_jsl("Kihunter Manipulation", #action_select_room_strat, #$000F) + %cm_jsl("Kihunter Manipulation", #action_select_room_strat, #$0010) ihstrat_downbackzeb: - %cm_jsl("Downback Zeb Skip", #action_select_room_strat, #$0010) + %cm_jsl("Downback Zeb Skip", #action_select_room_strat, #$0011) ihstrat_mbhp: -!IH_STRAT_MBHP_INDEX = #$0010 - %cm_jsl("Mother Brain HP", #action_select_room_strat, #$0011) +!IH_STRAT_MBHP_INDEX = #$0012 + %cm_jsl("Mother Brain HP", #action_select_room_strat, #$0012) ihstrat_twocries: - %cm_jsl("Two Cries Standup", #action_select_room_strat, #$0012) + %cm_jsl("Two Cries Standup", #action_select_room_strat, #$0013) action_select_room_strat: { @@ -1700,6 +1704,7 @@ ih_room_strat: db #$28, " TACO TANK", #$FF db #$28, " PIT DOOR", #$FF db #$28, " MOONDANCE", #$FF + db #$28, "KRAID RADAR", #$FF db #$28, "GATE GLITCH", #$FF db #$28, " MOAT CWJ", #$FF db #$28, "ROBOT FLUSH", #$FF diff --git a/src/symbols.asm b/src/symbols.asm index 06fd4f26..8b84b16c 100644 --- a/src/symbols.asm +++ b/src/symbols.asm @@ -80,7 +80,7 @@ ram_activated_shine_duration = !ram_activated_shine_duration ; !WRAM_START+$5E ; ^ FREE SPACE ^ up to +$6C ; ---------------------------------------------------------- -; Shinetune and kihunter manip use several variables +; A few room strats like shinetune use several variables ; that are not used by other modes, ; but also they do not need many other variables, ; so the following variables share the same WRAM @@ -95,6 +95,7 @@ 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 +; 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 @@ -104,6 +105,13 @@ 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 +; 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 + +; 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 From c2920728cdd754ded041d8cfd5a25e13975d33ef Mon Sep 17 00:00:00 2001 From: idle Date: Sun, 23 Feb 2025 15:00:52 -0600 Subject: [PATCH 13/23] Port zeb skip room strat --- layout/layoutmenutemplate.asm | 1 + src/defines.asm | 2 ++ src/infohudmodes.asm | 61 +++++++++++++++++++++++++++++------ src/layoutmenu.asm | 1 + src/mainmenu.asm | 11 +++++-- 5 files changed, 64 insertions(+), 12 deletions(-) diff --git a/layout/layoutmenutemplate.asm b/layout/layoutmenutemplate.asm index 97b492d2..e0af7c95 100644 --- a/layout/layoutmenutemplate.asm +++ b/layout/layoutmenutemplate.asm @@ -321,6 +321,7 @@ layout_bombtorizodoor: db #$28, "r VANILLA", #$FF db #$28, "r FAST", #$FF db #$28, "r SLOW", #$FF + db #$FF layout_magnetstairs: %cm_toggle_bit("Remove Magnet Stairs", !sram_room_layout, !ROOM_LAYOUT_MAGNET_STAIRS, #0) diff --git a/src/defines.asm b/src/defines.asm index f0ef4f48..73f05cde 100644 --- a/src/defines.asm +++ b/src/defines.asm @@ -522,6 +522,7 @@ !IH_LETTER_X = #$0C66 !IH_LETTER_Y = #$0C67 !IH_NUMBER_ZERO = #$0C09 +!IH_NUMBER_ZERO_YELLOW = #$2009 !IH_ARROW_LEFT = #$0C60 !IH_ARROW_LEFT_GREY = #$1460 !IH_ARROW_LEFT_PINK_OUTLINE = #$0860 @@ -540,6 +541,7 @@ !IH_ARROW_DOWN_RED = #$1C63 !IH_MORPH_BALL_YELLOW = #$00C9 !IH_MORPH_BALL_GREEN = #$10C9 +!IH_STUCK_GREEN = #$106B !IH_PAUSE = #$0100 ; right !IH_SLOWDOWN = #$0400 ; down diff --git a/src/infohudmodes.asm b/src/infohudmodes.asm index d2b9593b..557af675 100644 --- a/src/infohudmodes.asm +++ b/src/infohudmodes.asm @@ -62,6 +62,7 @@ status_roomstrat: dw status_ridleyai dw status_kihuntermanip dw status_downbackzeb + dw status_zebskip dw status_mbhp dw status_twocries } @@ -3811,15 +3812,6 @@ status_wasteland: JMP .reset } -status_mbhp: -{ - LDA !ENEMY_HP+$40 : CMP !ram_mb_hp : BEQ .done : STA !ram_mb_hp - LDX #$0088 : JSR Draw4 - - .done - RTS -} - status_ridleyai: { ; check if Ridley's room @@ -4249,6 +4241,57 @@ status_downbackzeb: RTS } +status_zebskip: +{ + LDA !ROOM_ID : CMP.w #ROOM_MotherBrainRoom : BNE .end + + ; check if first zeb dead + LDA $7ED820 : AND #$0038 : BNE .secondZeb + + ; check if X position is beyond first zeb + ; exit if first zeb alive and X beyond first zeb + LDA !SAMUS_X : CMP #$0334 : BPL .firstZeb + + .end + RTS + + .firstZeb + LDA !SAMUS_X : CMP #$0345 : BMI .stuck + LDA !IH_BLANK : STA !HUD_TILEMAP+$8E + BRA .iFrames + + .secondZeb + ; check if X is beyond 2nd zeb, exit if so + LDA !SAMUS_X : CMP #$0274 : BMI .end + CMP #$0285 : BMI .stuck + LDA !IH_BLANK : STA !HUD_TILEMAP+$8E : STA !HUD_TILEMAP+$90 + BRA .iFrames + + .stuck + LDA !IH_STUCK_GREEN : STA !HUD_TILEMAP+$8E + LDA !IH_BLANK : STA !HUD_TILEMAP+$90 + + .iFrames + LDA !SAMUS_IFRAME_TIMER : BEQ .noIframes + AND #$00FF ; don't draw out-of-range garbage + LDX #$0088 : JSR Draw2 + RTS + + .noIframes + LDA !IH_NUMBER_ZERO_YELLOW : STA !HUD_TILEMAP+$8A + LDA !IH_BLANK : STA !HUD_TILEMAP+$88 + RTS +} + +status_mbhp: +{ + LDA !ENEMY_HP+$40 : CMP !ram_mb_hp : BEQ .done : STA !ram_mb_hp + LDX #$0088 : JSR Draw4 + + .done + RTS +} + status_twocries: { LDA !ram_roomstrat_state : BEQ .start diff --git a/src/layoutmenu.asm b/src/layoutmenu.asm index 102cd0d2..0e389a22 100644 --- a/src/layoutmenu.asm +++ b/src/layoutmenu.asm @@ -327,6 +327,7 @@ layout_bombtorizodoor: db #$28, "r VANILLA", #$FF db #$28, "r FAST", #$FF db #$28, "r SLOW", #$FF + db #$FF layout_magnetstairs: %cm_toggle_bit("Remove Magnet Stairs", !sram_room_layout, !ROOM_LAYOUT_MAGNET_STAIRS, #0) diff --git a/src/mainmenu.asm b/src/mainmenu.asm index d302269f..28f08532 100644 --- a/src/mainmenu.asm +++ b/src/mainmenu.asm @@ -1610,6 +1610,7 @@ RoomStratMenu2: dw ihstrat_ridleyai dw ihstrat_kihuntermanip dw ihstrat_downbackzeb + dw ihstrat_zebskip dw ihstrat_mbhp dw ihstrat_twocries dw #$FFFF @@ -1672,12 +1673,15 @@ ihstrat_kihuntermanip: ihstrat_downbackzeb: %cm_jsl("Downback Zeb Skip", #action_select_room_strat, #$0011) +ihstrat_zebskip: + %cm_jsl("Zeb Skip Indicator", #action_select_room_strat, #$0012) + ihstrat_mbhp: -!IH_STRAT_MBHP_INDEX = #$0012 - %cm_jsl("Mother Brain HP", #action_select_room_strat, #$0012) +!IH_STRAT_MBHP_INDEX = #$0013 + %cm_jsl("Mother Brain HP", #action_select_room_strat, #$0013) ihstrat_twocries: - %cm_jsl("Two Cries Standup", #action_select_room_strat, #$0013) + %cm_jsl("Two Cries Standup", #action_select_room_strat, #$0014) action_select_room_strat: { @@ -1717,6 +1721,7 @@ ih_room_strat: db #$28, " RIDLEY AI", #$FF db #$28, " KIHUNTER", #$FF db #$28, " DBACK ZEB", #$FF + db #$28, " ZEB SKIP", #$FF db #$28, " MB HP", #$FF db #$28, " TWO CRIES", #$FF db #$FF From 23cf0e4a5cd08aa452e43876aca8dfc65e91ec45 Mon Sep 17 00:00:00 2001 From: idle Date: Sun, 23 Feb 2025 20:46:09 -0600 Subject: [PATCH 14/23] Port custom HUD number graphics --- resources/num_gfx_choice.bin | Bin 0 -> 5888 bytes src/customizemenu.asm | 111 +++++++++++++++++++++++++-- src/defines.asm | 11 ++- src/infohud.asm | 60 ++++++++++++++- src/infohudmodes.asm | 13 +++- src/init.asm | 141 +++++++++++++++++++---------------- src/mainmenu.asm | 2 +- src/spritefeat.asm | 2 +- src/symbols.asm | 9 ++- 9 files changed, 261 insertions(+), 88 deletions(-) create mode 100644 resources/num_gfx_choice.bin diff --git a/resources/num_gfx_choice.bin b/resources/num_gfx_choice.bin new file mode 100644 index 0000000000000000000000000000000000000000..9c2ca2d3f3f83ba2e4c4419b72cdeffa3c6dd812 GIT binary patch literal 5888 zcmbtY-;W#B6~r z8ttsleCM8f&fI&?cg`rsU9PXW%Wl(cDn}`mF<%ajI(w`G#=N>Gk#{-gf?ejzDg)W> zzIFL$XMbVLdp}Yg$oH5pThkbm;)b)Aa(TwtqYUE4e6Y*Aub3@Gr}FWOl@PH&(y>8uROy)-rFi4BY2%7i?d5FEWJ=)Q+497*OM6_11B=VwY>C#Q{kK`PBa-0|C;ZN;xE%4 zBF7)^@K54@-g-WXAO4QTUsML-pQex2G*;9YlNrB-6>{9Bf6>3eOLZX|&bjDF_f-3| zT~&)C`D%0|St0Cz<~z;b+tu(DH2}V7SKFsKW(RM-?VM|!>7G)y;L(xrAO1fR`*!yf zu@SE2&PsH?dsXXe`O`mq8*iPltF1HYcj8a$4DBcLt#?-1r`zwhPj^<-dWyF&KEcJm z$|#;xe!Km?D)s$_-~X)d^Qwo+sfTM9!ngdO@3mbsQid7%$NHXsBfPcNs(+*$KXk*- zZmeG9b3as`8P)7!7`_@tg1ce6TWb_yMPxGyUlnWZe!H(4v`-|(MRqFT1wUwb*d4&n zw*L6(@>gq{oKJ8wqW)S-m5X|OF`!%wlu5jHrPi*sWj?{FD>(hDwTofRskJ4Z9l6$4 zmc)bg4|yrii7Mx#6>r!W)apj87Det3qidBdyiePUZrp0ZHzN*T2_qF4ac$kyV+5yu z?JA#$Y{b!#C=Q464pf6UkrWr%u11Nz$dxT#oX-z$+`4hAbl@iF?!7nP@Y z{<~4@TI~|!Z~Ynjr$ZbVMz3Av`=Nh~oKZ8LahdU#RR0ZGecqL8DEcc}NMDO0o5RTD zQ?*!8;+w>!hK8d3bQJYPW_)@+Z7+)DqW(_&f{UiisuoREab$+d7S7+gtyS z%9c7MxH+VjImBt!^D%yUk&b^PuKaQwHBDJ7I|b#Q+H-kO4F!WpxJBET9=l<2wIizaXA$ z@$k~GM*N@|NHajnXk!d;m;A5uDcGo@`NEL=>KzY`Ci&H}o?&hV{~@a@kNLFrb8~Kl zW4!f@Cl4O`&A0J{|Gq!}?*$)dexUV)A9VgN z&RWln=YK8h{O_tdGFo~epQ(I3zvaE!^=!m$&mi!AcN&5$DkMH;Cl*9dASH8gZ}@(7rA6 z=eKx?{9vE6Q9qCUFSfHo%31hB{le#kcA+i$g3EZ~;$M1Ki}EX{3J%98t1-&{lK&h2 z>P3H<*`HZlnIbnl|Ke)1aaPqO`>!@vo5j$7O?i@8OTPb_AC^2-q<-yk33t(_R^MZ8 zX}iq-#DR=(`Bh&_?TbwNGCq}yA;+nuk{(&|DDBM0(=Ymh%Xs3cf3-SUK$+t*&%fqB zc$Z#o*zARoA8L>L4pxn_8-`J{*X+6A2)+R@U=s`o$%)$iI?xmc|3Rj%=sQ4!TVw{> zqn#8_e|5D5?h!$DaCrh=(42t$PG-}0{;%VgWIxS-*tM%oVZXH&-jI)Y@owbK|MIKk zr(+s^$#1MSPz5xgi_;SwJ{s)vqK0SnGqJiS6C-mW%3$MgmGxFPy4*Y4da3eKg^2Pp zaly_;!LA?{+=;9%&V%f4=;NFK7Ss-EopIlcdZi;Nois5dNvuS8Dv{|HY{fO=Rg zr+1Y#qrK+~E$-#LTl7zmWdBDh3;%dNqk>&%OFTO=_WxubUX9m3cKaIu5HOxSmBXvD1d@*9JFPE-shUFc_w*gG!kkNkr7+l`!PsW;W)>U)v$@MaxZ zf5HEI{qq~%URiytKXS^W7k=C;&i?wu;SXt#^X0en`eRO2tcOdz{NK5LQvav2WI&Zq zS6=5otgjQ5uNSUx{mTc*AGvU9Q^rrVa-qu6zd}0~7V6vudOu(%$WyF;!BO2Py+EE{ znrIOQpLDSnXcc0$PC3}H}iT=d)#P&m9WBtKLrJE(#C=E)mtJX7W^2^D7R!w#| zMwL)6biB=O3;kUWeBObK4s&onI$-uo?0`{k3{Ke9!3nHa7V_f9AAbBH`1)vYTiv8= zR~sKtM!kk9P_tE&4p{1u3_IZ9HZQFYMkcqjr_=hTvzPooxIeLvdWIUtd{Q6TcJ<0n z6aLp7Iqk8+!1#>JS2|SsZRrr}Mab~?=$;8pf&krCbp|K62%~ zIaA?t@rwS6ZOYsqhR%QDrPyQs6K|6BulL_*tfC8e5bulc6YC${>+GpLmaMct&#VX*H?ypU!^F za;js3>4Lb6{?Eb*#`#ZV>|TBTgSfoSODZ<>GdTTLU$jirZ+0S=ua~!Z9;xRI!G8fW zEc;7AQe0%_7qL&7+2z=6W(n1ySJX9P-qj^jOXiT$&U{v%mmMR2XVX+BlCg7cynz@D z5Yfv%Pj~!~Ft(-tLJ=HRk3V{ggYhGttb+8lo z0Kbv{^|P$@AoU}Q`IdUj{;YpbV!j+?`bcdufEi7~pIj(9S)62fSK>7)(y{M+*Y--%Gv#rrlqPn@&ZtA9CCt4l%#mdgbw;f&oxy0G2$UW_McuHh^T`l$V4X)l2>!EHcC;Y$D|G-LiNd7Ckg-e?M z6aJfO$oCqK|9`&!pxXbc@;BCh%|E$U5I?@>%)L1WF1UOB$N3gcv6ibm PMgM+S{U`Mx>%ad1Cf9Q! literal 0 HcmV?d00001 diff --git a/src/customizemenu.asm b/src/customizemenu.asm index 8364f41f..7cfc034b 100644 --- a/src/customizemenu.asm +++ b/src/customizemenu.asm @@ -280,12 +280,13 @@ CustomizeMenu: dw #mc_menubackground dw #mc_custompalettes_menu dw #mc_paletteprofile - dw #mc_palette2custom + dw #mc_palette_to_custom dw #mc_paletterando dw #$FFFF dw #mc_customsfx dw #$FFFF dw #mc_customfont + dw #mc_customnumber dw #$FFFF dw #mc_menuscroll_button dw #mc_menuscroll_delay @@ -335,23 +336,23 @@ mc_paletteprofile: db #$28, " EXAKT", #$FF db #$FF -mc_palette2custom: - %cm_submenu("Copy Palette to Custom", #Palette2CustomConfirm) +mc_palette_to_custom: + %cm_submenu("Copy Palette to Custom", #PaletteToCustomConfirm) -Palette2CustomConfirm: - dw #palette2custom_abort +PaletteToCustomConfirm: + dw #palette_to_custom_abort dw #$FFFF - dw #palette2custom_confirm + dw #palette_to_custom_confirm dw #$0000 %cm_header("OVERWRITE CUSTOM PALETTES") %cm_footer("YOU WILL LOSE SAVED COLORS") -palette2custom_abort: +palette_to_custom_abort: %cm_jsl("ABORT", #.routine, #$0000) .routine JML cm_previous_menu -palette2custom_confirm: +palette_to_custom_confirm: %cm_jsl("Copy Palette to Custom", .routine, #$0000) .routine LDA !sram_custompalette_profile : BEQ .custom_selected @@ -450,6 +451,100 @@ mc_customfont: .routine JML cm_transfer_custom_tileset +mc_customnumber: + dw !ACTION_CHOICE + dl #!sram_number_gfx_choice + dw #.routine + db #$28, "HUD Number Font", #$FF + db #$28, " DEFAULT", #$FF + db #$28, " LTTP", #$FF + db #$28, " KLONOA", #$FF + db #$28, " TI-83", #$FF + db #$28, " SHIN-CHAN", #$FF + db #$28, " SMT", #$FF + db #$28, " SMW", #$FF + db #$28, " DKC", #$FF + db #$28, " ZAMN", #$FF + db #$28, " EMERALD", #$FF + db #$28, " EARTHBOUND", #$FF + db #$28, " FFVI", #$FF + db #$28, " LUFIA 2", #$FF + db #$28, " GOONIES 2", #$FF + db #$28, " PAC-MAN", #$FF + db #$28, " DOOM", #$FF + db #$28, " UNDERTALE", #$FF + db #$28, " ???", #$FF + db #$28, " SKYROADS", #$FF + db #$28, " YOSHI'S", #$FF + db #$28, " NOT-SM", #$FF + db #$28, " TAZMANIA", #$FF + db #$28, " BLACK BASS", #$FF + db #$FF + .routine + ; check if already on submenu + LDA !DP_MenuIndices : CMP.w #NumberGFXMenu : BEQ .uploadGFX + + ; don't increment address if A/X/Y pressed + LDA !IH_CONTROLLER_PRI_NEW : BIT #$40C0 : BEQ .submenu + LDA !sram_number_gfx_choice : DEC : STA !sram_number_gfx_choice + + .submenu + ; upload new GFX first + JSL .uploadGFX + ; jump to submenu + LDY #NumberGFXMenu + JML action_submenu + + .uploadGFX + ; wait for vertical blanking before uploading GFX + PHB : PEA $0000 : PLB : PLB + ; multiply by 100h and add to addr + LDA !sram_number_gfx_choice : XBA + CLC : ADC.w #NumberGFXChoice : TAY + + JSL cm_wait_for_lag_frame + %a8() + ; DMA number GFX to second to last row ($E0-EF) + LDA #$80 : STA $2115 ; word access, inc by 1 + LDX #$4700 : STX $2116 ; VRAM addr ($4700 x 2 = $8E00) + STY $4302 ; src addr + LDA.b #NumberGFXChoice>>16 : STA $4304 ; src bank + LDX #$0100 : STX $4305 ; size + LDA #$01 : STA $4300 ; word, normal increment (DMA MODE) + LDA #$18 : STA $4301 ; destination (VRAM write) + LDA #$01 : STA $420B ; initiate DMA (channel 1) + %a16() + + PLB + RTL + +NumberGFXMenu: + dw mc_customnumber + dw #$FFFF + dw mc_numbergfx_display + dw #$0000 + %cm_header("PREVIEW NUMBER GFX") + +mc_numbergfx_display: +; manual cm_jsl for custom text + .dm_actionIndex + dw !ACTION_JSL + .dm_jsl + dw #.routine + .dm_arg + dw #$0000 + .dm_text + db #$3C, " " + db #$E9, #$E0, #$E1, #$E2, #$E3, #$E4, #$E5, #$E6 + db #$E7, #$E8, #$EA, #$EB, #$EC, #$ED, #$EE, #$EF + db #$FF + .routine + ; set cursor back to first position + LDX !MENU_STACK_INDEX + TDC : STA !ram_cm_cursor_stack,X + %sfxfail() + RTL + mc_customheader: %cm_jsl("Customize Menu Header", #.routine, #$0000) .routine diff --git a/src/defines.asm b/src/defines.asm index 73f05cde..89f9dfd8 100644 --- a/src/defines.asm +++ b/src/defines.asm @@ -371,7 +371,7 @@ ; SRAM ; ----- -!SRAM_VERSION = #$0017 +!SRAM_VERSION = #$0018 !SRAM_START = $702000 !PRESET_SLOTS = $703000 @@ -393,8 +393,7 @@ !sram_ctrl_dec_custom_preset = !SRAM_START+$1A !sram_ctrl_toggle_tileviewer = !SRAM_START+$1C !sram_ctrl_update_timers = !SRAM_START+$1E -!sram_ctrl_auto_save_state = !SRAM_START+$F0 ; note the change of order -!sram_ctrl_toggle_spin_lock = !SRAM_START+$F2 +; More ctrl shortcuts starting at $F0 !sram_artificial_lag = !SRAM_START+$20 !sram_rerandomize = !SRAM_START+$22 @@ -457,9 +456,15 @@ !sram_cm_font = !SRAM_START+$8C !sram_spin_lock = !SRAM_START+$8E !sram_map_grid_alignment = !SRAM_START+$90 +!sram_number_gfx_choice = !SRAM_START+$92 ; ^ FREE SPACE ^ up to +$EE +!sram_ctrl_auto_save_state = !SRAM_START+$F0 +!sram_ctrl_toggle_spin_lock = !SRAM_START+$F2 + +; ^ FREE SPACE ^ up to +$FE + !sram_presetequiprando = !SRAM_START+$100 !sram_presetequiprando_beampref = !SRAM_START+$102 !sram_presetequiprando_max_etanks = !SRAM_START+$104 diff --git a/src/infohud.asm b/src/infohud.asm index 3c87c123..866da555 100644 --- a/src/infohud.asm +++ b/src/infohud.asm @@ -505,7 +505,7 @@ ih_before_room_transition: dw status_door_vspeed dw status_chargetimer dw status_shinetimer - dw status_dashcounter + dw status_door_dashcounter dw status_door_xpos dw status_door_ypos } @@ -1815,12 +1815,66 @@ ih_adjust_realtime: RTL } -; Placeholder for future support +NumberGFXChoice: +incbin ../resources/num_gfx_choice.bin + overwrite_HUD_numbers: +{ + ; runs after cm_transfer_original_tileset + LDA !sram_number_gfx_choice : BNE .custom RTL + .custom + PHP : %ai16() + PHB : PEA $0000 : PLB : PLB + ; multiply by 100h and add to addr + LDA !sram_number_gfx_choice : XBA : CLC : ADC.w #NumberGFXChoice : TAY + %a8() + + ; DMA tiles 1-9, 0 + LDA #$80 : STA $2115 ; word access, inc by 1 + LDX #$4000 : STX $2116 ; VRAM addr ($4000 x 2 = $8000) + STY $4302 ; src addr + LDA.b #NumberGFXChoice>>16 : STA $4304 ; src bank + LDX #$00A0 : STX $4305 ; size + LDA #$01 : STA $4300 ; word, normal increment (DMA MODE) + LDA #$18 : STA $4301 ; destination (VRAM write) + LDA #$01 : STA $420B ; initiate DMA (channel 1) + + ; fix src addr in Y + %a16() + TYA : CLC : ADC #$00A0 : TAY + %a8() + + ; DMA tiles A-B + LDX #$43B0 : STX $2116 ; VRAM addr ($43B0 x 2 = $8760) + STY $4302 ; src addr + LDA.b #NumberGFXChoice>>16 : STA $4304 ; src bank + LDX #$0020 : STX $4305 ; size + LDA #$01 : STA $4300 ; word, normal increment (DMA MODE) + LDA #$18 : STA $4301 ; destination (VRAM write) + LDA #$01 : STA $420B ; initiate DMA (channel 1) + + ; fix src addr in Y again + %a16() + TYA : CLC : ADC #$0020 : TAY + %a8() + + ; DMA tiles C-F + LDX #$42C0 : STX $2116 ; VRAM addr ($42C0 x 2 = $8580) + STY $4302 ; src addr + LDA.b #NumberGFXChoice>>16 : STA $4304 ; src bank + LDX #$0040 : STX $4305 ; size + LDA #$01 : STA $4300 ; word, normal increment (DMA MODE) + LDA #$18 : STA $4301 ; destination (VRAM write) + LDA #$01 : STA $420B ; initiate DMA (channel 1) + + PLB : PLP + RTL +} + print pc, " infohud end" -warnpc $F0E000 ; spritefeat.asm +warnpc $F0EC00 ; spritefeat.asm ; Stuff that needs to be placed in bank 80 diff --git a/src/infohudmodes.asm b/src/infohudmodes.asm index 557af675..7b81a6f7 100644 --- a/src/infohudmodes.asm +++ b/src/infohudmodes.asm @@ -1012,14 +1012,19 @@ status_door_vspeed: RTS } +status_door_dashcounter: +{ + LDA !SAMUS_DASH_COUNTER : LDX #$0088 : JMP Draw4 +} + status_door_xpos: { - LDA !SAMUS_X : LDX #$0088 : JMP Draw4 + LDA !SAMUS_X : LDX #$0088 : JMP Draw4Hex } status_door_ypos: { - LDA !SAMUS_Y : LDX #$0088 : JMP Draw4 + LDA !SAMUS_Y : LDX #$0088 : JMP Draw4Hex } status_quickdrop: @@ -1456,7 +1461,7 @@ status_xpos: LDA !SAMUS_HP : STA !ram_last_hp LDA !SAMUS_X : CMP !ram_xpos : BEQ .checksubpixel - STA !ram_xpos : LDX #$0088 : JSR Draw4 + STA !ram_xpos : LDX #$0088 : JSR Draw4Hex LDA !SAMUS_X_SUBPX : BRA .drawsubpixel .checksubpixel @@ -1476,7 +1481,7 @@ status_ypos: LDA !SAMUS_HP : STA !ram_last_hp LDA !SAMUS_Y : CMP !ram_ypos : BEQ .checksubpixel - STA !ram_ypos : LDX #$0088 : JSR Draw4 + STA !ram_ypos : LDX #$0088 : JSR Draw4Hex LDA !SAMUS_Y_SUBPX : BRA .drawsubpixel .checksubpixel diff --git a/src/init.asm b/src/init.asm index 0dfd9aa4..d4d42a01 100644 --- a/src/init.asm +++ b/src/init.asm @@ -37,11 +37,15 @@ init_code: PHA ; Initialize RAM (Bank 7E required) - LDA #$0000 : STA !ram_slowdown_mode + TDC : STA !ram_slowdown_mode ; Check if we should initialize SRAM LDA !sram_initialized : CMP !SRAM_VERSION : BEQ .sram_initialized - JSR init_sram + BCC .sram_init_routine + TDC + .sram_init_routine + ASL : TAX + JSR (init_sram_routine_table,X) .sram_initialized if !FEATURE_SD2SNES @@ -77,30 +81,60 @@ init_nonzero_wram: JML init_wram_based_on_sram } +init_sram_routine_table: + dw init_sram ; Version 0 treated same as 0-9 + dw init_sram ; Version 1 treated same as 0-9 + dw init_sram ; Version 2 treated same as 0-9 + dw init_sram ; Version 3 treated same as 0-9 + dw init_sram ; Version 4 treated same as 0-9 + dw init_sram ; Version 5 treated same as 0-9 + dw init_sram ; Version 6 treated same as 0-9 + dw init_sram ; Version 7 treated same as 0-9 + dw init_sram ; Version 8 treated same as 0-9 + dw init_sram ; Version 9 treated same as 0-9 + dw init_sram_upgrade_9toA + dw init_sram_upgrade_AtoB + dw init_sram_upgrade_BtoC + dw init_sram_upgrade_CtoD + dw init_sram_upgrade_DtoE + dw init_sram_upgrade_EtoF + dw init_sram_upgrade_Fto10 + dw init_sram_upgrade_10to11 + dw init_sram_upgrade_11to12 + dw init_sram_upgrade_12to13 + dw init_sram_upgrade_13to14 + dw init_sram_upgrade_14to15 + dw init_sram_upgrade_15to16 + dw init_sram_upgrade_16to17 + dw init_sram_upgrade_17to18 + init_sram: { - ; check SRAM version from !sram_initialized - CMP #$000F : BEQ .sram_upgrade_Fto10 - BPL .sram_upgrade_1xto1x - CMP #$0009 : BEQ .sram_upgrade_9toA - CMP #$000A : BEQ .sram_upgrade_AtoB - CMP #$000B : BEQ .sram_upgrade_BtoC - CMP #$000C : BEQ .sram_upgrade_CtoD - CMP #$000D : BEQ .sram_upgrade_DtoE - CMP #$000E : BEQ .sram_upgrade_EtoF - - .sram_upgrade_upto9 - JSL init_sram_upto9 - - .sram_upgrade_9toA + JSL init_sram_controller_shortcuts + LDA #$0015 : STA !sram_artificial_lag + TDC : STA !sram_fanfare + STA !sram_frame_counter_mode + STA !sram_display_mode + STA !sram_last_preset + STA !sram_save_has_set_rng + STA !sram_preset_category + STA !sram_custom_preset_slot + STA !sram_room_strat + STA !sram_sprite_prio_flag + INC : STA !sram_rerandomize + STA !sram_music_toggle + INC : STA !sram_metronome_sfx + LDA #$000A : STA !sram_metronome_tickrate + + .upgrade_9toA TDC : STA !sram_ctrl_toggle_tileviewer STA !sram_status_icons STA !sram_suit_properties - .sram_upgrade_AtoB + .upgrade_AtoB TDC : STA !sram_ctrl_update_timers - .sram_upgrade_BtoC + .upgrade_BtoC TDC : STA !sram_top_display_mode STA !sram_room_layout INC : STA !sram_healthalarm @@ -111,62 +145,44 @@ else LDA #$0003 : STA !sram_cutscenes endif - .sram_upgrade_CtoD + .upgrade_CtoD TDC : STA !sram_preset_options STA !sram_lag_counter_mode - .sram_upgrade_DtoE + .upgrade_DtoE TDC : STA !sram_fast_doors - .sram_upgrade_EtoF + .upgrade_EtoF TDC : STA !sram_suppress_flashing - .sram_upgrade_Fto10 + .upgrade_Fto10 TDC : STA !sram_fast_elevators - BRA .sram_upgrade_10to11 - - .sram_upgrade_1xto1x - CMP #$0010 : BEQ .sram_upgrade_10to11 - CMP #$0011 : BEQ .sram_upgrade_11to12 - CMP #$0012 : BEQ .sram_upgrade_12to13 - CMP #$0013 : BEQ .sram_upgrade_13to14 - CMP #$0014 : BEQ .sram_upgrade_14to15 - CMP #$0015 : BEQ .sram_upgrade_15to16 - CMP #$0016 : BEQ .sram_upgrade_16to17 - BRA .sram_upgrade_upto9 - - .sram_upgrade_16to17 - TDC : STA !sram_spin_lock : STA !sram_ctrl_toggle_spin_lock - DEC : STA !sram_map_grid_alignment - - LDA !SRAM_VERSION : STA !sram_initialized - RTS - .sram_upgrade_10to11 + .upgrade_10to11 TDC : STA !sram_custom_damage STA !sram_custom_charge_damage STA !sram_custom_uncharge_damage STA !sram_water_physics STA !sram_double_jump - .sram_upgrade_11to12 + .upgrade_11to12 JSL init_menu_customization TDC : STA !sram_ctrl_auto_save_state - .sram_upgrade_12to13 + .upgrade_12to13 TDC : STA !sram_custom_header - .sram_upgrade_13to14 + .upgrade_13to14 ; "skip fanfares, but adjust timer" option has been replaced with "speedrun" timer mode - LDA !sram_fanfare : BIT #$0002 : BEQ .sram_upgrade_14to15 + LDA !sram_fanfare : BIT #$0002 : BEQ .upgrade_14to15 LDA !sram_fanfare : AND #$0001 : STA !sram_fanfare - LDA !sram_frame_counter_mode : BNE .sram_upgrade_14to15 + LDA !sram_frame_counter_mode : BNE .upgrade_14to15 LDA !FRAME_COUNTER_ADJUST_REALTIME : STA !sram_frame_counter_mode - .sram_upgrade_14to15 + .upgrade_14to15 TDC : STA !sram_bomb_torizo_door - .sram_upgrade_15to16 + .upgrade_15to16 TDC : STA !sram_door_display_mode STA !sram_cm_font : STA !sram_presetequiprando_beampref STA !sram_display_mode_reward @@ -177,27 +193,20 @@ endif LDA #$002E : STA !sram_presetequiprando_max_missiles LDA #$000A : STA !sram_presetequiprando_max_supers LDA #$000A : STA !sram_presetequiprando_max_pbs - JMP .sram_upgrade_16to17 + + .upgrade_16to17 + TDC : STA !sram_spin_lock : STA !sram_ctrl_toggle_spin_lock + DEC : STA !sram_map_grid_alignment + + .upgrade_17to18 + TDC : STA !sram_number_gfx_choice + + LDA !SRAM_VERSION : STA !sram_initialized + RTS } -init_sram_upto9: +init_sram_controller_shortcuts: { - LDA #$0015 : STA !sram_artificial_lag - TDC : STA !sram_fanfare - STA !sram_frame_counter_mode - STA !sram_display_mode - STA !sram_last_preset - STA !sram_save_has_set_rng - STA !sram_preset_category - STA !sram_custom_preset_slot - STA !sram_room_strat - STA !sram_sprite_prio_flag - INC : STA !sram_rerandomize - STA !sram_music_toggle - INC : STA !sram_metronome_sfx - LDA #$000A : STA !sram_metronome_tickrate - - .controller_shortcuts ; branch called by ctrl_reset_defaults in mainmenu.asm LDA #$3000 : STA !sram_ctrl_menu ; Start + Select LDA #$6010 : STA !sram_ctrl_save_state ; Select + Y + R diff --git a/src/mainmenu.asm b/src/mainmenu.asm index 28f08532..67fff1d9 100644 --- a/src/mainmenu.asm +++ b/src/mainmenu.asm @@ -2481,7 +2481,7 @@ ctrl_reset_defaults: %cm_jsl("Reset to Defaults", .routine, #$0000) .routine %sfxreset() - JSL init_sram_upto9_controller_shortcuts + JSL init_sram_controller_shortcuts if !FEATURE_SD2SNES JML validate_sram_for_savestates else diff --git a/src/spritefeat.asm b/src/spritefeat.asm index 87214272..6f93a453 100644 --- a/src/spritefeat.asm +++ b/src/spritefeat.asm @@ -20,7 +20,7 @@ hook_standard_sprite_tiles: db $FF, $FF, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 -org $F0E000 +org $F0EC00 print pc, " spritefeat start" ; This runs every frame before any other sprites are drawn, this is needed so we can get priority over everything else diff --git a/src/symbols.asm b/src/symbols.asm index 8b84b16c..2d1168d5 100644 --- a/src/symbols.asm +++ b/src/symbols.asm @@ -381,8 +381,7 @@ sram_ctrl_inc_custom_preset = !sram_ctrl_inc_custom_preset ; !SRAM_START+$18 sram_ctrl_dec_custom_preset = !sram_ctrl_dec_custom_preset ; !SRAM_START+$1A sram_ctrl_toggle_tileviewer = !sram_ctrl_toggle_tileviewer ; !SRAM_START+$1C sram_ctrl_update_timers = !sram_ctrl_update_timers ; !SRAM_START+$1E -sram_ctrl_auto_save_state = !sram_ctrl_auto_save_state ; !SRAM_START+$F0 ; note the change of order -sram_ctrl_toggle_spin_lock = !sram_ctrl_toggle_spin_lock ; !SRAM_START+$F2 +; More ctrl shortcuts starting at $F0 sram_artificial_lag = !sram_artificial_lag ; !SRAM_START+$20 sram_rerandomize = !sram_rerandomize ; !SRAM_START+$22 @@ -445,9 +444,15 @@ sram_cm_fast_scroll_button = !sram_cm_fast_scroll_button ; !SRAM_START+$8A sram_cm_font = !sram_cm_font ; !SRAM_START+$8C sram_spin_lock = !sram_spin_lock ; !SRAM_START+$8E sram_map_grid_alignment = !sram_map_grid_alignment ; !SRAM_START+$90 +sram_number_gfx_choice = !sram_number_gfx_choice ; !SRAM_START+$92 ; ^ FREE SPACE ^ up to +$EE +sram_ctrl_auto_save_state = !sram_ctrl_auto_save_state ; !SRAM_START+$F0 +sram_ctrl_toggle_spin_lock = !sram_ctrl_toggle_spin_lock ; !SRAM_START+$F2 + +; ^ FREE SPACE ^ up to +$FE + sram_presetequiprando = !sram_presetequiprando ; !SRAM_START+$100 sram_presetequiprando_beampref = !sram_presetequiprando_beampref ; !SRAM_START+$102 sram_presetequiprando_max_etanks = !sram_presetequiprando_max_etanks ; !SRAM_START+$104 From 92a60a5488ba1903c9afc77d2ef12c43ea084b6b Mon Sep 17 00:00:00 2001 From: idle Date: Mon, 24 Feb 2025 01:05:20 -0600 Subject: [PATCH 15/23] Port Super HUD --- src/defines.asm | 15 +- src/infohud.asm | 11 +- src/infohudmodes.asm | 480 ++++++++++++++++++++++++++++++++++++++++--- src/init.asm | 3 + src/mainmenu.asm | 471 +++++++++++++++++++++++++++++++++++++++--- src/symbols.asm | 15 +- 6 files changed, 929 insertions(+), 66 deletions(-) diff --git a/src/defines.asm b/src/defines.asm index 89f9dfd8..db1bf38e 100644 --- a/src/defines.asm +++ b/src/defines.asm @@ -61,10 +61,8 @@ !ram_magic_pants_pal3 = !WRAM_START+$40 !ram_room_has_set_rng = !WRAM_START+$42 - -!ram_watch_left_hud = !WRAM_START+$44 -!ram_watch_right_hud = !WRAM_START+$46 - +!ram_HUD_top = !WRAM_START+$44 +!ram_HUD_middle = !WRAM_START+$46 !ram_HUD_check = !WRAM_START+$48 !ram_roomstrat_counter = !WRAM_START+$4A !ram_roomstrat_state = !WRAM_START+$4C @@ -78,6 +76,8 @@ !ram_kraid_adjust_timer = !WRAM_START+$5A !ram_print_segment_timer = !WRAM_START+$5C !ram_activated_shine_duration = !WRAM_START+$5E +!ram_watch_left_hud = !WRAM_START+$60 +!ram_watch_right_hud = !WRAM_START+$62 ; ^ FREE SPACE ^ up to +$6C @@ -90,8 +90,8 @@ !ram_xpos = !WRAM_START+$6E !ram_ypos = !WRAM_START+$70 !ram_subpixel_pos = !WRAM_START+$72 -!ram_horizontal_speed = !WRAM_START+$74 -!ram_vertical_speed = !WRAM_START+$76 +!ram_HUD_top_counter = !WRAM_START+$74 +!ram_HUD_middle_counter = !WRAM_START+$76 !ram_quickdrop_counter = !WRAM_START+$78 !ram_walljump_counter = !WRAM_START+$7A !ram_fail_sum = !WRAM_START+$7C @@ -457,6 +457,9 @@ !sram_spin_lock = !SRAM_START+$8E !sram_map_grid_alignment = !SRAM_START+$90 !sram_number_gfx_choice = !SRAM_START+$92 +!sram_superhud_bottom = !SRAM_START+$94 +!sram_superhud_middle = !SRAM_START+$96 +!sram_superhud_top = !SRAM_START+$98 ; ^ FREE SPACE ^ up to +$EE diff --git a/src/infohud.asm b/src/infohud.asm index 866da555..b3ef9987 100644 --- a/src/infohud.asm +++ b/src/infohud.asm @@ -1089,7 +1089,13 @@ endif ; Status Icons .statusIcons - LDA !sram_status_icons : BNE .checkHealthBomb + LDA !sram_status_icons : BNE .checkSuperHUD + RTL + + ; Super HUD + .checkSuperHUD + LDA !sram_display_mode : CMP !IH_MODE_ROOMSTRAT_INDEX : BNE .checkHealthBomb + LDA !sram_room_strat : BNE .checkHealthBomb RTL ; health bomb @@ -1629,7 +1635,8 @@ else STA !ram_enemy_hp : STA !ram_mb_hp STA !ram_dash_counter : STA !ram_shine_counter STA !ram_xpos : STA !ram_ypos : STA !ram_subpixel_pos - STA !ram_horizontal_speed : STA !ram_vertical_speed + LDA !ram_seed_X : LSR : STA !ram_HUD_top : STA !ram_HUD_middle + STA !ram_HUD_top_counter : STA !ram_HUD_middle_counter JML $808111 ; overwritten code + return endif ; !FEATURE_VANILLAHUD diff --git a/src/infohudmodes.asm b/src/infohudmodes.asm index 7b81a6f7..06c7ecc4 100644 --- a/src/infohudmodes.asm +++ b/src/infohudmodes.asm @@ -9,7 +9,7 @@ dw status_roomstrat dw status_chargetimer dw status_xfactor - dw status_cooldowncounter + dw status_cooldown dw status_shinetimer dw status_dashcounter dw status_shinetune @@ -44,6 +44,7 @@ status_roomstrat: RTS .status_room_table + dw status_superhud dw status_ceresridley dw status_doorskip dw status_tacotank @@ -113,7 +114,7 @@ status_xfactor: RTS } -status_cooldowncounter: +status_cooldown: { LDA !SAMUS_COOLDOWN : CMP !ram_HUD_check : BEQ .done : STA !ram_HUD_check LDX #$0088 : JSR Draw4 @@ -712,14 +713,12 @@ status_spikesuit: status_lagcounter: { - LDA !REALTIME_LAG_COUNTER : BEQ .done ; unused RAM + LDA !REALTIME_LAG_COUNTER : BEQ .check CLC : ADC !ram_lag_counter : STA !ram_lag_counter : STZ !REALTIME_LAG_COUNTER - CMP !ram_HUD_check : BEQ .done : STA !ram_HUD_check - LDX #$0082 - PHA : LDA !ram_minimap : BEQ .draw3 - LDX #$0014 - .draw3 - PLA : JSR Draw3 + + .check + LDA !ram_lag_counter : CMP !ram_HUD_check : BEQ .done : STA !ram_HUD_check + LDX #$0088 : JSR Draw4 .done RTS @@ -739,14 +738,13 @@ status_cpuusage: status_hspeed: { - ; converted to only use 4 tiles in the HUD, saving 202 cycles ; subspeed + submomentum into low byte of Hspeed LDA !SAMUS_X_SUBRUNSPEED : CLC : ADC !SAMUS_X_SUBMOMENTUM - AND #$FF00 : XBA : STA !ram_horizontal_speed + AND #$FF00 : XBA : STA !ram_momentum_sum ; speed + momentum + carry into high byte of Hspeed LDA !SAMUS_X_RUNSPEED : ADC !SAMUS_X_MOMENTUM - AND #$00FF : XBA : ORA !ram_horizontal_speed + AND #$00FF : XBA : ORA !ram_momentum_sum ; maybe skip drawing CMP !ram_HUD_check : BEQ .done @@ -757,7 +755,7 @@ status_hspeed: LDA !IH_DECIMAL : STA !HUD_TILEMAP+$8C ; draw fraction in hex - LDA !ram_horizontal_speed : AND #$00F0 : LSR #3 : TAY + LDA !ram_momentum_sum : AND #$00F0 : LSR #3 : TAY LDA.w HexGFXTable,Y : STA !HUD_TILEMAP+$8E .done @@ -781,27 +779,27 @@ endif ; Suppress Samus HP display LDA !SAMUS_HP : STA !ram_last_hp - LDA !SAMUS_Y_SPEED : CMP !ram_vertical_speed : BEQ .checkfalling : CMP #$FFFF : BNE .drawspeed + LDA !SAMUS_Y_SPEED : CMP !ram_momentum_sum : BEQ .checkfalling : CMP #$FFFF : BNE .drawspeed ; At the peak of a normal jump, speed will go negative for one frame ; Instead of drawing 65535 for one frame, draw a hyphen ; We can detect this if our speed was previously positive ; If speed was previously negative, then proceed as normal to draw 65535 - TAY : LDA !ram_vertical_speed : AND #$8000 : BNE .restorespeed + TAY : LDA !ram_momentum_sum : AND #$8000 : BNE .restorespeed LDA !IH_BLANK : STA !HUD_TILEMAP+$88 : STA !HUD_TILEMAP+$8A : STA !HUD_TILEMAP+$8C : STA !HUD_TILEMAP+$90 LDA !IH_HYPHEN : STA !HUD_TILEMAP+$8E ; Store speed as some negative value that isn't FFFF, ; so if it is negative again we'll update it to 65535 - LDA #$8000 : STA !ram_vertical_speed + LDA #$8000 : STA !ram_momentum_sum BRA .checkfalling .restorespeed TYA .drawspeed - STA !ram_vertical_speed : LDX #$0088 : JSR Draw4 + STA !ram_momentum_sum : LDX #$0088 : JSR Draw4 LDA !IH_BLANK : STA !HUD_TILEMAP+$90 .checkfalling @@ -905,9 +903,13 @@ endif .newjump LDA #$0001 : STA !ram_roomstrat_counter : STA !ram_walljump_counter - ; Print initial jump speed over item% + ; Print initial jump speed over item% when Samus doesn't bonk and superhud not selected LDA !sram_top_display_mode : BNE .skipprint LDA $0B1A : BNE .skipprint + LDA !sram_display_mode : CMP !IH_MODE_ROOMSTRAT_INDEX : BNE .printjumpseed + LDA !sram_room_strat : BEQ .skipprint + + .printjumpseed LDA !HUD_TILEMAP+$12 : STA $14 LDA !SAMUS_Y_SPEEDCOMBINED : AND #$0FFF LDX #$0012 : JSR Draw4Hex @@ -937,11 +939,11 @@ status_door_hspeed: { ; subspeed + submomentum into low byte of Hspeed LDA !SAMUS_X_SUBRUNSPEED : CLC : ADC !SAMUS_X_SUBMOMENTUM - AND #$FF00 : XBA : STA !ram_horizontal_speed + AND #$FF00 : XBA : STA !ram_momentum_sum ; speed + momentum + carry into high byte of Hspeed LDA !SAMUS_X_RUNSPEED : ADC !SAMUS_X_MOMENTUM - AND #$00FF : XBA : ORA !ram_horizontal_speed + AND #$00FF : XBA : ORA !ram_momentum_sum ; draw whole number in decimal AND #$FF00 : XBA @@ -973,7 +975,7 @@ status_door_hspeed: LDA !IH_DECIMAL : STA !HUD_TILEMAP+$8C ; draw fraction in hex - LDA !ram_horizontal_speed : AND #$00F0 : LSR #3 : TAX + LDA !ram_momentum_sum : AND #$00F0 : LSR #3 : TAX LDA.l HexGFXTable,X : STA !HUD_TILEMAP+$8E .done @@ -1089,7 +1091,7 @@ status_walljump: LDA !ram_roomstrat_counter : BEQ .blankaverage ; Divide total vertical speed by frame count - TAX : LDA !ram_vertical_speed + TAX : LDA !ram_momentum_sum STA $4204 TXA %a8() @@ -1103,7 +1105,7 @@ status_walljump: LDA !IH_BLANK : STA !HUD_TILEMAP+$90 .startaverage - TDC : STA !ram_vertical_speed : INC : STA !ram_roomstrat_counter + TDC : STA !ram_momentum_sum : INC : STA !ram_roomstrat_counter BRA .incspeed .blankaverage @@ -1135,13 +1137,13 @@ status_walljump: .addspeed ; If total speed overflows, stop tracking the average - LDA !ram_vertical_speed : CLC : CLV : ADC $12 : BVS .clearaverage - STA !ram_vertical_speed + LDA !ram_momentum_sum : CLC : CLV : ADC $12 : BVS .clearaverage + STA !ram_momentum_sum BRA .checkjump .subtractspeed - LDA !ram_vertical_speed : CMP $12 : BMI .zerospeed - SEC : SBC $12 : STA !ram_vertical_speed + LDA !ram_momentum_sum : CMP $12 : BMI .zerospeed + SEC : SBC $12 : STA !ram_momentum_sum BRA .checkjump .resetreleasejump @@ -1150,7 +1152,7 @@ status_walljump: BRA .blanksides .zerospeed - TDC : STA !ram_vertical_speed + TDC : STA !ram_momentum_sum .checkjump LDA !IH_CONTROLLER_PRI_NEW : AND !IH_INPUT_JUMP : BNE .pressedjump @@ -1618,6 +1620,428 @@ status_ramwatch: RTS } +status_superhud: +{ + LDA !sram_superhud_top : BEQ .middle + ASL : TAX + JSR (superhud_top_table,X) + + .middle + LDA !sram_superhud_middle : BEQ .bottom + ASL : TAX + JSR (superhud_middle_table,X) + + .bottom + LDA !sram_superhud_bottom : ASL : TAX + JMP (superhud_bottom_table,X) + +superhud_bottom_table: + dw status_enemyhp + dw status_chargetimer + dw status_xfactor + dw status_cooldown + dw status_shinetimer + dw status_dashcounter + dw status_iframecounter + dw status_spikesuit + dw status_lagcounter + dw status_cpuusage + dw status_hspeed + dw status_vspeed + dw status_quickdrop + dw status_walljump + dw status_armpump + dw status_pumpcounter + dw status_xpos + dw status_ypos + dw status_shottimer + dw status_ramwatch + dw status_ceresridley + dw status_doorskip + dw status_tacotank + dw status_pitdoor + dw status_moondance + dw status_gateglitch + dw status_moatcwj + dw status_robotflush + dw status_shinetopb + dw status_elevatorcf + dw status_botwooncf + dw status_draygonai + dw status_snailclip + dw status_wasteland + dw status_ridleyai + dw status_downbackzeb + dw status_zebskip + dw status_mbhp + dw status_twocries + +superhud_middle_table: + dw status_enemyhp_done + dw middleHUD_chargetimer + dw middleHUD_xfactor + dw middleHUD_cooldown + dw middleHUD_shinetimer + dw middleHUD_dashcounter + dw middleHUD_iframecounter + dw middleHUD_lagcounter + dw middleHUD_cpuusage + dw middleHUD_hspeed + dw middleHUD_shottimer + +superhud_top_table: + dw status_enemyhp_done + dw topHUD_chargetimer + dw topHUD_xfactor + dw topHUD_cooldown + dw topHUD_shinetimer + dw topHUD_dashcounter + dw topHUD_iframecounter + dw topHUD_lagcounter + dw topHUD_cpuusage + dw topHUD_hspeed + dw topHUD_shottimer + +middleHUD_chargetimer: +{ + LDA !IH_CONTROLLER_PRI_NEW : AND !IH_INPUT_SHOT : BNE .pressedShot + LDA !IH_CONTROLLER_PRI : AND !IH_INPUT_SHOT : BNE .charging + + ; count up to 36 frames of shot released + LDA !ram_HUD_middle_counter : CMP #$0024 : BPL .reset + INC : STA !ram_HUD_middle_counter + ASL : TAX : LDA NumberGFXTable,X : STA !HUD_TILEMAP+$54 + RTS + + .reset + LDA !IH_BLANK : STA !HUD_TILEMAP+$54 + LDA #$003C : STA !ram_HUD_middle + RTS + + .pressedShot + TDC : STA !ram_HUD_middle_counter + + .charging + LDA #$003C : SEC : SBC !SAMUS_CHARGE_TIMER + CMP !ram_HUD_middle : BEQ .done : STA !ram_HUD_middle + CMP #$0001 : BPL .drawCharge + + ; Beam charged + LDA !IH_SHINESPARK : STA !HUD_TILEMAP+$56 + LDA !SAMUS_CHARGE_TIMER : SEC : SBC #$003C + ASL : TAX : LDA NumberGFXTable,X : STA !HUD_TILEMAP+$58 + RTS + + .drawCharge + LDX #$0054 : JSR Draw3 + + .done + RTS +} + +topHUD_chargetimer: +{ + LDA !IH_CONTROLLER_PRI_NEW : AND !IH_INPUT_SHOT : BNE .pressedShot + LDA !IH_CONTROLLER_PRI : AND !IH_INPUT_SHOT : BNE .charging + + ; count up to 36 frames of shot released + LDA !ram_HUD_top_counter : CMP #$0024 : BPL .reset + INC : STA !ram_HUD_top_counter + ASL : TAX : LDA NumberGFXTable,X : STA !HUD_TILEMAP+$14 + RTS + + .reset + LDA !IH_BLANK : STA !HUD_TILEMAP+$14 + LDA #$003C : STA !ram_HUD_top + RTS + + .pressedShot + TDC : STA !ram_HUD_top_counter + + .charging + LDA #$003C : SEC : SBC !SAMUS_CHARGE_TIMER + CMP !ram_HUD_top : BEQ .done : STA !ram_HUD_top + CMP #$0001 : BPL .drawCharge + + ; Beam charged + LDA !IH_SHINESPARK : STA !HUD_TILEMAP+$16 + LDA !SAMUS_CHARGE_TIMER : SEC : SBC #$003C + ASL : TAX : LDA NumberGFXTable,X : STA !HUD_TILEMAP+$18 + RTS + + .drawCharge + LDX #$0014 : JSR Draw3 + + .done + RTS +} + +middleHUD_xfactor: +{ + LDA #$0079 : SEC : SBC !SAMUS_CHARGE_TIMER : CMP !ram_HUD_middle : BEQ .done : STA !ram_HUD_middle + LDX #$0054 : JSR Draw3 + + .done + RTS +} + +topHUD_xfactor: +{ + LDA #$0079 : SEC : SBC !SAMUS_CHARGE_TIMER : CMP !ram_HUD_top : BEQ .done : STA !ram_HUD_top + LDX #$0014 : JSR Draw3 + + .done + RTS +} + +middleHUD_cooldown: +{ + LDA !SAMUS_COOLDOWN : CMP !ram_HUD_middle : BEQ .done : STA !ram_HUD_middle + LDX #$0054 : JSR Draw3 + + .done + RTS +} + +topHUD_cooldown: +{ + LDA !SAMUS_COOLDOWN : CMP !ram_HUD_top : BEQ .done : STA !ram_HUD_top + LDX #$0014 : JSR Draw3 + + .done + RTS +} + +middleHUD_shinetimer: +{ + LDA !ram_armed_shine_duration : BNE .nonZero + + ; count up to 36 frames of shinespark being late + LDA !ram_HUD_middle_counter : CMP !SAFEWORD : BEQ .done + CMP #$0024 : BPL .reset + INC : STA !ram_HUD_middle_counter + ASL : TAX : LDA NumberGFXTable,X : STA !HUD_TILEMAP+$54 + + LDA !SAMUS_MOVEMENT_TYPE : AND #$00FF : CMP #$0002 : BEQ .late + BRA .draw + + .reset + LDA !IH_BLANK : STA !HUD_TILEMAP+$54 + BRA .draw + + .late + ; arbitrary value indicating normal jumping pose already observed + LDA !SAFEWORD : STA !ram_HUD_middle_counter + BRA .draw + + .nonZero + LDA !IH_BLANK : STA !HUD_TILEMAP+$54 + TDC : STA !ram_HUD_middle_counter + + .draw + LDA !ram_armed_shine_duration : CMP !ram_HUD_middle : BEQ .done + STA !ram_HUD_middle + LDX #$0056 : JSR Draw2 + + .done + RTS +} + +topHUD_shinetimer: +{ + LDA !ram_armed_shine_duration : BNE .nonZero + + ; count up to 36 frames of shinespark being late + LDA !ram_HUD_top_counter : CMP !SAFEWORD : BEQ .done + CMP #$0024 : BPL .reset + INC : STA !ram_HUD_top_counter + ASL : TAX : LDA NumberGFXTable,X : STA !HUD_TILEMAP+$14 + + LDA !SAMUS_MOVEMENT_TYPE : AND #$00FF : CMP #$0002 : BEQ .late + BRA .draw + + .reset + LDA !IH_BLANK : STA !HUD_TILEMAP+$14 + BRA .draw + + .late + ; arbitrary value indicating normal jumping pose already observed + LDA !SAFEWORD : STA !ram_HUD_top_counter + BRA .draw + + .nonZero + LDA !IH_BLANK : STA !HUD_TILEMAP+$14 + TDC : STA !ram_HUD_top_counter + + .draw + LDA !ram_armed_shine_duration : CMP !ram_HUD_top : BEQ .done + STA !ram_HUD_top + LDX #$0016 : JSR Draw2 + + .done + RTS +} + +middleHUD_dashcounter: +{ + LDA !SAMUS_DASH_COUNTER : AND #$00FF : CMP !ram_HUD_middle : BEQ .done + STA !ram_HUD_middle : LDX #$0054 : JSR Draw3 + + .done + RTS +} + +topHUD_dashcounter: +{ + LDA !SAMUS_DASH_COUNTER : AND #$00FF : CMP !ram_HUD_top : BEQ .done + STA !ram_HUD_top : LDX #$0014 : JSR Draw3 + + .done + RTS +} + +middleHUD_iframecounter: +{ + LDA !SAMUS_IFRAME_TIMER : CMP !ram_HUD_middle : BEQ .done : STA !ram_HUD_middle + LDX #$0054 : JSR Draw3 + + .done + RTS +} + +topHUD_iframecounter: +{ + LDA !SAMUS_IFRAME_TIMER : CMP !ram_HUD_top : BEQ .done : STA !ram_HUD_top + LDX #$0014 : JSR Draw3 + + .done + RTS +} + +middleHUD_lagcounter: +{ + LDA !REALTIME_LAG_COUNTER : BEQ .check + CLC : ADC !ram_lag_counter : STA !ram_lag_counter : STZ !REALTIME_LAG_COUNTER + + .check + LDA !ram_lag_counter : CMP !ram_HUD_middle : BEQ .done : STA !ram_HUD_middle + LDX #$0054 : JSR Draw3 + + .done + RTS +} + +topHUD_lagcounter: +{ + LDA !REALTIME_LAG_COUNTER : BEQ .check + CLC : ADC !ram_lag_counter : STA !ram_lag_counter : STZ !REALTIME_LAG_COUNTER + + .check + LDA !ram_lag_counter : CMP !ram_HUD_top : BEQ .done : STA !ram_HUD_top + LDX #$0014 : JSR Draw3 + + .done + RTS +} + +middleHUD_cpuusage: +{ + LDA !ram_vcounter_data : AND #$00FF + %a8() : STA $211B : XBA : STA $211B : LDA #$64 : STA $211C : %a16() + LDA $2134 : STA $4204 + %a8() : LDA #$E1 : STA $4206 : %a16() + PHA : PLA : PHA : PLA : LDA $4214 + LDX #$0054 : JSR Draw2 + LDA !IH_PERCENT : STA !HUD_TILEMAP+$58 + RTS +} + +topHUD_cpuusage: +{ + LDA !ram_vcounter_data : AND #$00FF + %a8() : STA $211B : XBA : STA $211B : LDA #$64 : STA $211C : %a16() + LDA $2134 : STA $4204 + %a8() : LDA #$E1 : STA $4206 : %a16() + PHA : PLA : PHA : PLA : LDA $4214 + LDX #$0014 : JSR Draw2 + LDA !IH_PERCENT : STA !HUD_TILEMAP+$18 + RTS +} + +middleHUD_hspeed: +{ + ; subspeed + submomentum into low byte of Hspeed + LDA !SAMUS_X_SUBRUNSPEED : CLC : ADC !SAMUS_X_SUBMOMENTUM + AND #$FF00 : XBA : STA !ram_momentum_sum + + ; speed + momentum + carry into high byte of Hspeed + LDA !SAMUS_X_RUNSPEED : ADC !SAMUS_X_MOMENTUM + AND #$00FF : XBA : ORA !ram_momentum_sum + + ; maybe skip drawing + CMP !ram_HUD_middle : BEQ .done + STA !ram_HUD_middle + + ; draw whole number in decimal + AND #$FF00 : XBA : ASL : TAY : LDA.w HexGFXTable,Y : STA !HUD_TILEMAP+$54 + LDA !IH_DECIMAL : STA !HUD_TILEMAP+$56 + + ; draw fraction in hex + LDA !ram_momentum_sum : AND #$00F0 : LSR #3 : TAY + LDA.w HexGFXTable,Y : STA !HUD_TILEMAP+$58 + + .done + RTS +} + +topHUD_hspeed: +{ + ; subspeed + submomentum into low byte of Hspeed + LDA !SAMUS_X_SUBRUNSPEED : CLC : ADC !SAMUS_X_SUBMOMENTUM + AND #$FF00 : XBA : STA !ram_momentum_sum + + ; speed + momentum + carry into high byte of Hspeed + LDA !SAMUS_X_RUNSPEED : ADC !SAMUS_X_MOMENTUM + AND #$00FF : XBA : ORA !ram_momentum_sum + + ; maybe skip drawing + CMP !ram_HUD_top : BEQ .done + STA !ram_HUD_top + + ; draw whole number in decimal + AND #$FF00 : XBA : ASL : TAY : LDA.w HexGFXTable,Y : STA !HUD_TILEMAP+$14 + LDA !IH_DECIMAL : STA !HUD_TILEMAP+$16 + + ; draw fraction in hex + LDA !ram_momentum_sum : AND #$00F0 : LSR #3 : TAY + LDA.w HexGFXTable,Y : STA !HUD_TILEMAP+$18 + + .done + RTS +} + +middleHUD_shottimer: +{ + LDA !IH_CONTROLLER_PRI_NEW : AND !IH_INPUT_SHOT : BEQ .incShot + LDA !ram_HUD_middle_counter : LDX #$0054 : JSR Draw3 + TDC : STA !ram_HUD_middle_counter + + .incShot + LDA !ram_HUD_middle_counter : INC : STA !ram_HUD_middle_counter + RTS +} + +topHUD_shottimer: +{ + LDA !IH_CONTROLLER_PRI_NEW : AND !IH_INPUT_SHOT : BEQ .incShot + LDA !ram_HUD_top_counter : LDX #$0014 : JSR Draw3 + TDC : STA !ram_HUD_top_counter + + .incShot + LDA !ram_HUD_top_counter : INC : STA !ram_HUD_top_counter + RTS +} + status_ceresridley: { ; displays number of shots until Ridley "dies" diff --git a/src/init.asm b/src/init.asm index d4d42a01..431cceb8 100644 --- a/src/init.asm +++ b/src/init.asm @@ -200,6 +200,9 @@ endif .upgrade_17to18 TDC : STA !sram_number_gfx_choice + STA !sram_superhud_bottom + STA !sram_superhud_middle + STA !sram_superhud_top LDA !SRAM_VERSION : STA !sram_initialized RTS diff --git a/src/mainmenu.asm b/src/mainmenu.asm index 67fff1d9..24e61ef6 100644 --- a/src/mainmenu.asm +++ b/src/mainmenu.asm @@ -1408,6 +1408,7 @@ InfoHudMenu: dw #ih_goto_room_strat dw #ih_room_strat dw #$FFFF + dw #ih_superhud dw #ih_door_display_mode dw #$FFFF dw #ih_goto_timer_settings @@ -1432,7 +1433,7 @@ DisplayModeMenu: dw ihmode_roomstrat dw ihmode_chargetimer dw ihmode_xfactor - dw ihmode_cooldowncounter + dw ihmode_cooldown dw ihmode_shinetimer dw ihmode_dashcounter dw ihmode_shinetune @@ -1474,7 +1475,7 @@ ihmode_chargetimer: ihmode_xfactor: %cm_jsl("X-Factor Timer", #action_select_infohud_mode, #$0003) -ihmode_cooldowncounter: +ihmode_cooldown: %cm_jsl("Cooldown Timer", #action_select_infohud_mode, #$0004) ihmode_shinetimer: @@ -1585,6 +1586,7 @@ ih_goto_room_strat: %cm_submenu("Select Room Strat", #RoomStratMenu) RoomStratMenu: + dw ihstrat_superhud dw ihstrat_ceresridley dw ihstrat_doorskip dw ihstrat_tacotank @@ -1619,69 +1621,73 @@ RoomStratMenu2: %cm_header("INFOHUD ROOM STRAT") %cm_footer("ROOM STRAT MUST BE ACTIVE") +; SuperHUD must always be the first room strat option +ihstrat_superhud: + %cm_jsl("Super HUD", #action_select_room_strat, #$0000) + ihstrat_ceresridley: - %cm_jsl("Ceres Ridley Hits", #action_select_room_strat, #$0000) + %cm_jsl("Ceres Ridley Hits", #action_select_room_strat, #$0001) ihstrat_doorskip: - %cm_jsl("Parlor-Climb Door Skip", #action_select_room_strat, #$0001) + %cm_jsl("Parlor-Climb Door Skip", #action_select_room_strat, #$0002) ihstrat_tacotank: - %cm_jsl("Taco Tank", #action_select_room_strat, #$0002) + %cm_jsl("Taco Tank", #action_select_room_strat, #$0003) ihstrat_pitdoor: - %cm_jsl("Pit Room Right Door", #action_select_room_strat, #$0003) + %cm_jsl("Pit Room Right Door", #action_select_room_strat, #$0004) ihstrat_moondance: - %cm_jsl("Moondance", #action_select_room_strat, #$0004) + %cm_jsl("Moondance", #action_select_room_strat, #$0005) ihstrat_kraidradar: - %cm_jsl("Kraid Nail Radar", #action_select_room_strat, #$0005) + %cm_jsl("Kraid Nail Radar", #action_select_room_strat, #$0006) ihstrat_gateglitch: - %cm_jsl("Gate Glitch", #action_select_room_strat, #$0006) + %cm_jsl("Gate Glitch", #action_select_room_strat, #$0007) ihstrat_moatcwj: - %cm_jsl("Moat CWJ", #action_select_room_strat, #$0007) + %cm_jsl("Moat CWJ", #action_select_room_strat, #$0008) ihstrat_robotflush: - %cm_jsl("Robot Flush", #action_select_room_strat, #$0008) + %cm_jsl("Robot Flush", #action_select_room_strat, #$0009) ihstrat_shinetopb: - %cm_jsl("Shine to PB", #action_select_room_strat, #$0009) + %cm_jsl("Shine to PB", #action_select_room_strat, #$000A) ihstrat_elevatorcf: - %cm_jsl("Elevator Crystal Flash", #action_select_room_strat, #$000A) + %cm_jsl("Elevator Crystal Flash", #action_select_room_strat, #$000B) ihstrat_botwooncf: - %cm_jsl("Botwoon Crystal Flash", #action_select_room_strat, #$000B) + %cm_jsl("Botwoon Crystal Flash", #action_select_room_strat, #$000C) ihstrat_draygonai: - %cm_jsl("Draygon AI", #action_select_room_strat, #$000C) + %cm_jsl("Draygon AI", #action_select_room_strat, #$000D) ihstrat_snailclip: - %cm_jsl("Aqueduct Snail Clip", #action_select_room_strat, #$000D) + %cm_jsl("Aqueduct Snail Clip", #action_select_room_strat, #$000E) ihstrat_wasteland: - %cm_jsl("Wasteland Entry", #action_select_room_strat, #$000E) + %cm_jsl("Wasteland Entry", #action_select_room_strat, #$000F) ihstrat_ridleyai: - %cm_jsl("Ridley AI", #action_select_room_strat, #$000F) + %cm_jsl("Ridley AI", #action_select_room_strat, #$0010) ihstrat_kihuntermanip: - %cm_jsl("Kihunter Manipulation", #action_select_room_strat, #$0010) + %cm_jsl("Kihunter Manipulation", #action_select_room_strat, #$0011) ihstrat_downbackzeb: - %cm_jsl("Downback Zeb Skip", #action_select_room_strat, #$0011) + %cm_jsl("Downback Zeb Skip", #action_select_room_strat, #$0012) ihstrat_zebskip: - %cm_jsl("Zeb Skip Indicator", #action_select_room_strat, #$0012) + %cm_jsl("Zeb Skip Indicator", #action_select_room_strat, #$0013) ihstrat_mbhp: -!IH_STRAT_MBHP_INDEX = #$0013 - %cm_jsl("Mother Brain HP", #action_select_room_strat, #$0013) +!IH_STRAT_MBHP_INDEX = #$0014 + %cm_jsl("Mother Brain HP", #action_select_room_strat, #$0014) ihstrat_twocries: - %cm_jsl("Two Cries Standup", #action_select_room_strat, #$0014) + %cm_jsl("Two Cries Standup", #action_select_room_strat, #$0015) action_select_room_strat: { @@ -1703,6 +1709,7 @@ ih_room_strat: dl #!sram_room_strat dw #.routine db #$28, "Current Strat", #$FF + db #$28, " SUPER HUD", #$FF db #$28, " CERES HITS", #$FF db #$28, " DOOR SKIP", #$FF db #$28, " TACO TANK", #$FF @@ -1729,6 +1736,422 @@ ih_room_strat: LDA !IH_MODE_ROOMSTRAT_INDEX : STA !sram_display_mode JML init_print_segment_timer +ih_superhud: + %cm_submenu("Configure Super HUD", #SuperHUDMenu) + +SuperHUDMenu: + dw #ih_superhud_bottom_selector + dw #ih_superhud_bottom_submenu + dw #$FFFF + dw #ih_superhud_middle_selector + dw #ih_superhud_middle_submenu + dw #$FFFF + dw #ih_superhud_top_selector + dw #ih_superhud_top_submenu + dw #$FFFF + dw #ih_superhud_enable + dw #$0000 + %cm_header("CONFIGURE SUPER HUD") + +ih_superhud_bottom_selector: + dw !ACTION_CHOICE + dl #!sram_superhud_bottom + dw #$0000 + db #$28, "Current Bottom", #$FF + db #$28, " ENEMY HP", #$FF + db #$28, " CHARGE", #$FF + db #$28, " X FACTOR", #$FF + db #$28, " COOLDOWN", #$FF + db #$28, " SHINESPARK", #$FF + db #$28, " DASH", #$FF + db #$28, " I FRAMES", #$FF + db #$28, " SPIKESUIT", #$FF + db #$28, "LAG COUNTER", #$FF + db #$28, " CPU USAGE", #$FF + db #$28, "HORIZ SPEED", #$FF + db #$28, " VERT SPEED", #$FF + db #$28, " QUICK DROP", #$FF + db #$28, " WALL JUMP", #$FF + db #$28, " ARM PUMP", #$FF + db #$28, " PUMP COUNT", #$FF + db #$28, " X POSITION", #$FF + db #$28, " Y POSITION", #$FF + db #$28, " SHOT TIMER", #$FF + db #$28, " RAM WATCH", #$FF + db #$28, " CERES HITS", #$FF + db #$28, " DOOR SKIP", #$FF + db #$28, " TACO TANK", #$FF + db #$28, " PIT DOOR", #$FF + db #$28, " MOONDANCE", #$FF + db #$28, "GATE GLITCH", #$FF + db #$28, " MOAT CWJ", #$FF + db #$28, "ROBOT FLUSH", #$FF + db #$28, "SHINE TO PB", #$FF + db #$28, "ELEVATOR CF", #$FF + db #$28, " BOTWOON CF", #$FF + db #$28, " DRAYGON AI", #$FF + db #$28, " SNAIL CLIP", #$FF + db #$28, " WASTELAND", #$FF + db #$28, " RIDLEY AI", #$FF + db #$28, " DBACK ZEB", #$FF + db #$28, " ZEB SKIP", #$FF + db #$28, " MB HP", #$FF + db #$28, " TWO CRIES", #$FF + db #$FF + +ih_superhud_bottom_submenu: + %cm_submenu("Bottom HUD List", #SuperHUDBottomMenu) + +SuperHUDBottomMenu: + dw ih_superhud_enemyhp + dw ih_superhud_chargetimer + dw ih_superhud_xfactor + dw ih_superhud_cooldown + dw ih_superhud_shinetimer + dw ih_superhud_dashcounter + dw ih_superhud_iframecounter + dw ih_superhud_spikesuit + dw ih_superhud_lagcounter + dw ih_superhud_cpuusage + dw ih_superhud_hspeed + dw ih_superhud_vspeed + dw ih_superhud_quickdrop + dw ih_superhud_walljump + dw ih_superhud_armpump + dw ih_superhud_pumpcounter + dw #$FFFF + dw ih_superhud_goto_page2 + dw ih_superhud_goto_page3 + dw #$0000 + %cm_header("SUPER HUD BOTTOM MODE") + +SuperHUDBottomMenu2: + dw ih_superhud_xpos + dw ih_superhud_ypos + dw ih_superhud_shottimer + dw ih_superhud_ramwatch + dw ih_superhud_ceresridley + dw ih_superhud_doorskip + dw ih_superhud_tacotank + dw ih_superhud_pitdoor + dw ih_superhud_moondance + dw ih_superhud_gateglitch + dw ih_superhud_moatcwj + dw ih_superhud_robotflush + dw ih_superhud_shinetopb + dw #$FFFF + dw ih_superhud_goto_page1 + dw ih_superhud_goto_page3 + dw #$0000 + %cm_header("SUPER HUD BOTTOM MODE") + +SuperHUDBottomMenu3: + dw ih_superhud_elevatorcf + dw ih_superhud_botwooncf + dw ih_superhud_draygonai + dw ih_superhud_snailclip + dw ih_superhud_wasteland + dw ih_superhud_ridleyai + dw ih_superhud_downbackzeb + dw ih_superhud_zebskip + dw ih_superhud_mbhp + dw ih_superhud_twocries + dw #$FFFF + dw ih_superhud_goto_page2 + dw ih_superhud_goto_page3 + dw #$0000 + %cm_header("SUPER HUD BOTTOM MODE") + +ih_superhud_enemyhp: + %cm_jsl("Enemy HP", #action_select_superhud_bottom, #$0000) + +ih_superhud_chargetimer: + %cm_jsl("Charge Timer", #action_select_superhud_bottom, #$0001) + +ih_superhud_xfactor: + %cm_jsl("X-Factor Timer", #action_select_superhud_bottom, #$0002) + +ih_superhud_cooldown: + %cm_jsl("Cooldown Timer", #action_select_superhud_bottom, #$0003) + +ih_superhud_shinetimer: + %cm_jsl("Shinespark Timer", #action_select_superhud_bottom, #$0004) + +ih_superhud_dashcounter: + %cm_jsl("Dash Counter", #action_select_superhud_bottom, #$0005) + +ih_superhud_iframecounter: + %cm_jsl("I-Frame Counter", #action_select_superhud_bottom, #$0006) + +ih_superhud_spikesuit: + %cm_jsl("Spikesuit Trainer", #action_select_superhud_bottom, #$0007) + +ih_superhud_lagcounter: + %cm_jsl("Lag Counter", #action_select_superhud_bottom, #$0008) + +ih_superhud_cpuusage: + %cm_jsl("CPU Usage", #action_select_superhud_bottom, #$0009) + +ih_superhud_hspeed: + %cm_jsl("Horizontal Speed", #action_select_superhud_bottom, #$000A) + +ih_superhud_vspeed: + %cm_jsl("Vertical Speed", #action_select_superhud_bottom, #$000B) + +ih_superhud_quickdrop: + %cm_jsl("Quickdrop Trainer", #action_select_superhud_bottom, #$000C) + +ih_superhud_walljump: + %cm_jsl("Walljump Trainer", #action_select_superhud_bottom, #$000D) + +ih_superhud_armpump: + %cm_jsl("Arm Pump Trainer", #action_select_superhud_bottom, #$000E) + +ih_superhud_pumpcounter: + %cm_jsl("Arm Pump Counter", #action_select_superhud_bottom, #$000F) + +ih_superhud_xpos: + %cm_jsl("X Position", #action_select_superhud_bottom, #$0010) + +ih_superhud_ypos: + %cm_jsl("Y Position", #action_select_superhud_bottom, #$0011) + +ih_superhud_shottimer: + %cm_jsl("Shot Timer", #action_select_superhud_bottom, #$0012) + +ih_superhud_ramwatch: + %cm_jsl("Custom RAM Watch", #action_select_superhud_bottom, #$0013) + +ih_superhud_ceresridley: + %cm_jsl("Ceres Ridley Hits", #action_select_superhud_bottom, #$0014) + +ih_superhud_doorskip: + %cm_jsl("Parlor-Climb Door Skip", #action_select_superhud_bottom, #$0015) + +ih_superhud_tacotank: + %cm_jsl("Taco Tank", #action_select_superhud_bottom, #$0016) + +ih_superhud_pitdoor: + %cm_jsl("Pit Room Right Door", #action_select_superhud_bottom, #$0017) + +ih_superhud_moondance: + %cm_jsl("Moondance", #action_select_superhud_bottom, #$0018) + +ih_superhud_gateglitch: + %cm_jsl("Gate Glitch", #action_select_superhud_bottom, #$0019) + +ih_superhud_moatcwj: + %cm_jsl("Moat CWJ", #action_select_superhud_bottom, #$001A) + +ih_superhud_robotflush: + %cm_jsl("Robot Flush", #action_select_superhud_bottom, #$001B) + +ih_superhud_shinetopb: + %cm_jsl("Shine to PB", #action_select_superhud_bottom, #$001C) + +ih_superhud_elevatorcf: + %cm_jsl("Elevator Crystal Flash", #action_select_superhud_bottom, #$001D) + +ih_superhud_botwooncf: + %cm_jsl("Botwoon Crystal Flash", #action_select_superhud_bottom, #$001E) + +ih_superhud_draygonai: + %cm_jsl("Draygon AI", #action_select_superhud_bottom, #$001F) + +ih_superhud_snailclip: + %cm_jsl("Aqueduct Snail Clip", #action_select_superhud_bottom, #$0020) + +ih_superhud_wasteland: + %cm_jsl("Wasteland Entry", #action_select_superhud_bottom, #$0021) + +ih_superhud_ridleyai: + %cm_jsl("Ridley AI", #action_select_superhud_bottom, #$0022) + +ih_superhud_downbackzeb: + %cm_jsl("Downback Zeb Skip", #action_select_superhud_bottom, #$0023) + +ih_superhud_zebskip: + %cm_jsl("Zeb Skip Indicator", #action_select_superhud_bottom, #$0024) + +ih_superhud_mbhp: + %cm_jsl("Mother Brain HP", #action_select_superhud_bottom, #$0025) + +ih_superhud_twocries: + %cm_jsl("Two Cries Standup", #action_select_superhud_bottom, #$0026) + +ih_superhud_goto_page1: + %cm_adjacent_submenu("GOTO PAGE ONE", #SuperHUDBottomMenu) + +ih_superhud_goto_page2: + %cm_adjacent_submenu("GOTO PAGE TWO", #SuperHUDBottomMenu2) + +ih_superhud_goto_page3: + %cm_adjacent_submenu("GOTO PAGE THREE", #SuperHUDBottomMenu3) + +action_select_superhud_bottom: +{ + TYA : STA !sram_superhud_bottom + JML cm_previous_menu +} + +ih_superhud_middle_selector: + dw !ACTION_CHOICE + dl #!sram_superhud_middle + dw #$0000 + db #$28, "Current Middle", #$FF + db #$28, " OFF", #$FF + db #$28, " CHARGE", #$FF + db #$28, " X FACTOR", #$FF + db #$28, " COOLDOWN", #$FF + db #$28, " SHINESPARK", #$FF + db #$28, " DASH", #$FF + db #$28, " I FRAMES", #$FF + db #$28, "LAG COUNTER", #$FF + db #$28, " CPU USAGE", #$FF + db #$28, "HORIZ SPEED", #$FF + db #$28, " SHOT TIMER", #$FF + db #$FF + +ih_superhud_middle_submenu: + %cm_submenu("Middle HUD List", #SuperHUDMiddleMenu) + +SuperHUDMiddleMenu: + dw ih_superhud_middle_off + dw ih_superhud_middle_chargetimer + dw ih_superhud_middle_xfactor + dw ih_superhud_middle_cooldown + dw ih_superhud_middle_shinetimer + dw ih_superhud_middle_dashcounter + dw ih_superhud_middle_iframecounter + dw ih_superhud_middle_lagcounter + dw ih_superhud_middle_cpuusage + dw ih_superhud_middle_hspeed + dw ih_superhud_middle_shottimer + dw #$0000 + %cm_header("SUPER HUD MIDDLE MODE") + +ih_superhud_middle_off: + %cm_jsl("Disabled", #action_select_superhud_middle, #$0000) + +ih_superhud_middle_chargetimer: + %cm_jsl("Charge Timer", #action_select_superhud_middle, #$0001) + +ih_superhud_middle_xfactor: + %cm_jsl("X-Factor Timer", #action_select_superhud_middle, #$0002) + +ih_superhud_middle_cooldown: + %cm_jsl("Cooldown Timer", #action_select_superhud_middle, #$0003) + +ih_superhud_middle_shinetimer: + %cm_jsl("Shinespark Timer", #action_select_superhud_middle, #$0004) + +ih_superhud_middle_dashcounter: + %cm_jsl("Dash Counter", #action_select_superhud_middle, #$0005) + +ih_superhud_middle_iframecounter: + %cm_jsl("I-Frame Counter", #action_select_superhud_middle, #$0006) + +ih_superhud_middle_lagcounter: + %cm_jsl("Lag Counter", #action_select_superhud_middle, #$0007) + +ih_superhud_middle_cpuusage: + %cm_jsl("CPU Usage", #action_select_superhud_middle, #$0008) + +ih_superhud_middle_hspeed: + %cm_jsl("Horizontal Speed", #action_select_superhud_middle, #$0009) + +ih_superhud_middle_shottimer: + %cm_jsl("Shot Timer", #action_select_superhud_middle, #$000A) + +action_select_superhud_middle: +{ + TYA : STA !sram_superhud_middle + JML cm_previous_menu +} + +ih_superhud_top_selector: + dw !ACTION_CHOICE + dl #!sram_superhud_top + dw #$0000 + db #$28, "Current Top ", #$FF + db #$28, " OFF", #$FF + db #$28, " CHARGE", #$FF + db #$28, " X FACTOR", #$FF + db #$28, " COOLDOWN", #$FF + db #$28, " SHINESPARK", #$FF + db #$28, " DASH", #$FF + db #$28, " I FRAMES", #$FF + db #$28, "LAG COUNTER", #$FF + db #$28, " CPU USAGE", #$FF + db #$28, "HORIZ SPEED", #$FF + db #$28, " SHOT TIMER", #$FF + db #$FF + +ih_superhud_top_submenu: + %cm_submenu("Top HUD List", #SuperHUDTopMenu) + +SuperHUDTopMenu: + dw ih_superhud_top_off + dw ih_superhud_top_chargetimer + dw ih_superhud_top_xfactor + dw ih_superhud_top_cooldown + dw ih_superhud_top_shinetimer + dw ih_superhud_top_dashcounter + dw ih_superhud_top_iframecounter + dw ih_superhud_top_lagcounter + dw ih_superhud_top_cpuusage + dw ih_superhud_top_hspeed + dw ih_superhud_top_shottimer + dw #$0000 + %cm_header("SUPER HUD TOP MODE") + +ih_superhud_top_off: + %cm_jsl("Disabled", #action_select_superhud_top, #$0000) + +ih_superhud_top_chargetimer: + %cm_jsl("Charge Timer", #action_select_superhud_top, #$0001) + +ih_superhud_top_xfactor: + %cm_jsl("X-Factor Timer", #action_select_superhud_top, #$0002) + +ih_superhud_top_cooldown: + %cm_jsl("Cooldown Timer", #action_select_superhud_top, #$0003) + +ih_superhud_top_shinetimer: + %cm_jsl("Shinespark Timer", #action_select_superhud_top, #$0004) + +ih_superhud_top_dashcounter: + %cm_jsl("Dash Counter", #action_select_superhud_top, #$0005) + +ih_superhud_top_iframecounter: + %cm_jsl("I-Frame Counter", #action_select_superhud_top, #$0006) + +ih_superhud_top_lagcounter: + %cm_jsl("Lag Counter", #action_select_superhud_top, #$0007) + +ih_superhud_top_cpuusage: + %cm_jsl("CPU Usage", #action_select_superhud_top, #$0008) + +ih_superhud_top_hspeed: + %cm_jsl("Horizontal Speed", #action_select_superhud_top, #$0009) + +ih_superhud_top_shottimer: + %cm_jsl("Shot Timer", #action_select_superhud_top, #$000A) + +action_select_superhud_top: +{ + TYA : STA !sram_superhud_top + JML cm_previous_menu +} + +ih_superhud_enable: + %cm_jsl("Enable Super HUD", .routine, !IH_MODE_ROOMSTRAT_INDEX) + .routine + TYA : STA !sram_display_mode + TDC : STA !sram_room_strat + %sfxconfirm() + RTL + ih_door_display_mode: dw !ACTION_CHOICE dl #!sram_door_display_mode diff --git a/src/symbols.asm b/src/symbols.asm index 2d1168d5..538040ec 100644 --- a/src/symbols.asm +++ b/src/symbols.asm @@ -59,10 +59,8 @@ ram_magic_pants_pal2 = !ram_magic_pants_pal2 ; !WRAM_START+$3E ram_magic_pants_pal3 = !ram_magic_pants_pal3 ; !WRAM_START+$40 ram_room_has_set_rng = !ram_room_has_set_rng ; !WRAM_START+$42 - -ram_watch_left_hud = !ram_watch_left_hud ; !WRAM_START+$44 -ram_watch_right_hud = !ram_watch_right_hud ; !WRAM_START+$46 - +ram_HUD_top = !ram_HUD_top ; !WRAM_START+$44 +ram_HUD_middle = !ram_HUD_middle ; !WRAM_START+$46 ram_HUD_check = !ram_HUD_check ; !WRAM_START+$48 ram_roomstrat_counter = !ram_roomstrat_counter ; !WRAM_START+$4A ram_roomstrat_state = !ram_roomstrat_state ; !WRAM_START+$4C @@ -76,6 +74,8 @@ ram_lag_counter = !ram_lag_counter ; !WRAM_START+$58 ram_kraid_adjust_timer = !ram_kraid_adjust_timer ; !WRAM_START+$5A ram_print_segment_timer = !ram_print_segment_timer ; !WRAM_START+$5C ram_activated_shine_duration = !ram_activated_shine_duration ; !WRAM_START+$5E +ram_watch_left_hud = !ram_watch_left_hud ; !WRAM_START+$60 +ram_watch_right_hud = !ram_watch_right_hud ; !WRAM_START+$62 ; ^ FREE SPACE ^ up to +$6C @@ -88,8 +88,8 @@ ram_activated_shine_duration = !ram_activated_shine_duration ; !WRAM_START+$5E ram_xpos = !ram_xpos ; !WRAM_START+$6E ram_ypos = !ram_ypos ; !WRAM_START+$70 ram_subpixel_pos = !ram_subpixel_pos ; !WRAM_START+$72 -ram_horizontal_speed = !ram_horizontal_speed ; !WRAM_START+$74 -ram_vertical_speed = !ram_vertical_speed ; !WRAM_START+$76 +ram_HUD_top_counter = !ram_HUD_top_counter ; !WRAM_START+$74 +ram_HUD_middle_counter = !ram_HUD_middle_counter ; !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 @@ -445,6 +445,9 @@ sram_cm_font = !sram_cm_font ; !SRAM_START+$8C sram_spin_lock = !sram_spin_lock ; !SRAM_START+$8E sram_map_grid_alignment = !sram_map_grid_alignment ; !SRAM_START+$90 sram_number_gfx_choice = !sram_number_gfx_choice ; !SRAM_START+$92 +sram_superhud_bottom = !sram_superhud_bottom ; !SRAM_START+$94 +sram_superhud_middle = !sram_superhud_middle ; !SRAM_START+$96 +sram_superhud_top = !sram_superhud_top ; !SRAM_START+$98 ; ^ FREE SPACE ^ up to +$EE From 2bbec994fe9f8fc4f4ab626cf307bb5b21d6e57b Mon Sep 17 00:00:00 2001 From: idle Date: Tue, 25 Feb 2025 00:43:58 -0600 Subject: [PATCH 16/23] ten years --- src/cutscenes.asm | 678 +++++++++++++++++++++++++++++++++++++++++++++- src/freespace.asm | 5 + src/gamemode.asm | 30 +- 3 files changed, 710 insertions(+), 3 deletions(-) diff --git a/src/cutscenes.asm b/src/cutscenes.asm index f20bb953..0e7ba154 100644 --- a/src/cutscenes.asm +++ b/src/cutscenes.asm @@ -285,9 +285,684 @@ cutscenes_kraid_death_camera: RTL } +if !FEATURE_PAL +else +custom_intro_init: +{ + LDA #$0001 : STA !sram_music_toggle + JSR $A395 + LDA #custom_intro_InitialFadeIn : STA !CINEMATIC_FUNCTION_POINTER + RTS +} + +custom_intro_InitialFadeIn: +{ + JSL $808EF4 : BCS .done + LDA #custom_intro_InitialFadeInWait : STA !CINEMATIC_FUNCTION_POINTER + LDA #$0002 : STA !SCREEN_FADE_DELAY : STA !SCREEN_FADE_COUNTER + .done + RTS +} + +custom_intro_InitialFadeInWait: +{ + JSR $911B : BCC .done + LDA #custom_intro_LastMetroidMusic : STA !CINEMATIC_FUNCTION_POINTER + LDA #$003C : STA $1A49 + .done + RTS +} + +custom_intro_LastMetroidMusic: +{ + DEC $1A49 : BNE .done + LDA #custom_intro_GalaxyIsAtPeaceMusic : STA !CINEMATIC_FUNCTION_POINTER + LDA #$00C8 : STA $1A49 + LDA #$0005 : JSL !MUSIC_ROUTINE + .done + RTS +} + +custom_intro_GalaxyIsAtPeaceMusic: +{ + DEC $1A49 : BNE .done + TDC : JSL !MUSIC_ROUTINE + LDA #$FF42 : JSL !MUSIC_ROUTINE + LDA #$0005 : LDY #$000E : JSL $808FF7 + LDA #custom_intro_WaitMusicQueue : STA !CINEMATIC_FUNCTION_POINTER + .done + RTS +} + +custom_intro_WaitMusicQueue: +{ + JSL $808EF4 : BCS .done + LDA #custom_intro_InitialFadeOut : STA !CINEMATIC_FUNCTION_POINTER + LDA #$00F0 : STA $1A49 + .done + RTS +} + +custom_intro_InitialFadeOut: +{ + DEC $1A49 : BNE .done + LDA #custom_intro_InitialFadeOutWait : STA !CINEMATIC_FUNCTION_POINTER + LDA #$0002 : STA !SCREEN_FADE_DELAY : STA !SCREEN_FADE_COUNTER + .done + RTS +} + +custom_intro_InitialFadeOutWait: +{ + JSR $90D5 : BCC .done + LDA #custom_intro_SetupCustomPage : STA !CINEMATIC_FUNCTION_POINTER + .done + RTS +} + +custom_intro_SetupCustomPage: +{ + JSR $A66F + LDA.W #custom_intro_SpawnCustomText : STA !CINEMATIC_FUNCTION_POINTER + RTS +} + +custom_intro_SpawnCustomText: +{ + JSL $808EF4 : BCS .done + LDA #custom_intro_CustomFadeInWait : STA !CINEMATIC_FUNCTION_POINTER + LDA #$0002 : STA !SCREEN_FADE_DELAY : STA !SCREEN_FADE_COUNTER + LDA #custom_intro_HideCaret : STA $1B3B + LDY #custom_intro_CustomDefinition : LDA #$4C00 + JSR $95F0 + .done + RTS +} + +custom_intro_HideCaret: + dw $0005, $0000 + dw $94BC, #custom_intro_HideCaret + +custom_intro_CustomFadeInWait: +{ + JSR $911B : BCC .done + LDA #$A391 : STA !CINEMATIC_FUNCTION_POINTER + .done + RTS +} + +custom_intro_CustomDefinition: + dw #custom_intro_CustomFadeInWait_done + dw #custom_intro_CustomFadeInWait_done + dw custom_intro_CustomText + +custom_intro_EndCustomText: +{ + JSR $ADE1 + LDA #custom_intro_WaitForInput : STA !CINEMATIC_FUNCTION_POINTER + RTS +} + +custom_intro_WaitForInput: +{ + LDA $1BA3 : BEQ .timerExpired + DEC : STA $1BA3 + RTS + + .timerExpired: + LDA !IH_CONTROLLER_PRI_NEW : BNE .newInputs + RTS + + .newInputs: + JML $808462 +} + +endif %endfree(8B) +org $8CD67D +IndirectInstructions_IntroText_Space: +org $8CD683 +IndirectInstructions_IntroText_Nothing: +org $8CD685 +IndirectInstructions_IntroText_A: +org $8CD68B +IndirectInstructions_IntroText_B: +org $8CD691 +IndirectInstructions_IntroText_C: +org $8CD697 +IndirectInstructions_IntroText_D: +org $8CD69D +IndirectInstructions_IntroText_E: +org $8CD6A3 +IndirectInstructions_IntroText_F: +org $8CD6A9 +IndirectInstructions_IntroText_G: +org $8CD6AF +IndirectInstructions_IntroText_H: +org $8CD6B5 +IndirectInstructions_IntroText_I: +org $8CD6BB +IndirectInstructions_IntroText_J: +org $8CD6C1 +IndirectInstructions_IntroText_K: +org $8CD6C7 +IndirectInstructions_IntroText_L: +org $8CD6CD +IndirectInstructions_IntroText_M: +org $8CD6D3 +IndirectInstructions_IntroText_N: +org $8CD6D9 +IndirectInstructions_IntroText_O: +org $8CD6DF +IndirectInstructions_IntroText_P: +org $8CD6E5 +IndirectInstructions_IntroText_Q: +org $8CD6EB +IndirectInstructions_IntroText_R: +org $8CD6F1 +IndirectInstructions_IntroText_S: +org $8CD6F7 +IndirectInstructions_IntroText_T: +org $8CD6FD +IndirectInstructions_IntroText_U: +org $8CD703 +IndirectInstructions_IntroText_V: +org $8CD709 +IndirectInstructions_IntroText_W: +org $8CD70F +IndirectInstructions_IntroText_X: +org $8CD715 +IndirectInstructions_IntroText_Y: +org $8CD71B +IndirectInstructions_IntroText_Z: +org $8CD721 +IndirectInstructions_IntroText_Zero: +org $8CD727 +IndirectInstructions_IntroText_One: +org $8CD72D +IndirectInstructions_IntroText_Two: +org $8CD733 +IndirectInstructions_IntroText_Three: +org $8CD739 +IndirectInstructions_IntroText_Four: +org $8CD73F +IndirectInstructions_IntroText_Five: +org $8CD745 +IndirectInstructions_IntroText_Six: +org $8CD74B +IndirectInstructions_IntroText_Seven: +org $8CD751 +IndirectInstructions_IntroText_Eight: +org $8CD757 +IndirectInstructions_IntroText_Nine: +org $8CD75D +IndirectInstructions_IntroText_Period: +org $8CD763 +IndirectInstructions_IntroText_Comma: +org $8CD769 +IndirectInstructions_IntroText_DecimalPoint: +org $8CD76F +IndirectInstructions_IntroText_Apostrophe: +org $8CD775 +IndirectInstructions_IntroText_Colon: +org $8CD77B +IndirectInstructions_IntroText_ExclamationPoint: + + +macro intro_char(label, x, y) + dw $0005 + db + db + dw #IndirectInstructions_IntroText_