diff --git a/src/custompresets.asm b/src/custompresets.asm index e09634f3..a957220b 100644 --- a/src/custompresets.asm +++ b/src/custompresets.asm @@ -88,7 +88,7 @@ custom_preset_save: ; save scrolls PHB : TXA : PHA : CLC ADC #(!PRESET_SLOTS+$8C) : TAY ; Y = Destination - LDX #$CD20 : LDA #$0031 ; X = Source, A = Size + LDX #$CD20 : LDA #$0031 ; X = Source, A = Size-1 MVN $7E70 ; srcBank, destBank ; save explored map tiles @@ -282,7 +282,7 @@ custom_preset_save: PHB TXA : CLC ADC #(!PRESET_SLOTS+$8C) : TAY ; Y = Destination - LDX #$CD20 : LDA #$0031 ; X = Source, A = Size + LDX #$CD20 : LDA #$0031 ; X = Source, A = Size-1 MVN $7E70 ; srcBank, destBank PLB RTL @@ -440,7 +440,7 @@ custom_preset_save: PHB TXA : CLC ADC #(!PRESET_SLOTS+$1B8) : TAY ; Y = Destination - LDX #$CD20 : LDA #$0031 ; X = Source, A = Size + LDX #$CD20 : LDA #$0031 ; X = Source, A = Size-1 MVN $7E70 ; srcBank, destBank PLB RTL diff --git a/src/defines.asm b/src/defines.asm index f851dea2..b56de077 100644 --- a/src/defines.asm +++ b/src/defines.asm @@ -9,6 +9,9 @@ !CRASHDUMP_TILEMAP_BUFFER = $7E5800 ; 2048 bytes !CRASH_INITIAL_ADDRESS = #$7E0A44 +!DP_REGISTER_BACKUP_START = $7EF4D0 +!DP_REGISTER_BACKUP_SIZE = $30 + ; Practice hack menu tilemap buffer !ram_tilemap_buffer = $7EF500 ; 2048 bytes @@ -732,7 +735,7 @@ !OAM_HIGH = $0570 !OAM_STACK_POINTER = $0590 !PB_EXPLOSION_STATUS = $0592 -!REALTIME_LAG_COUNTER = $05A0 ; Not used in vanilla +!REALTIME_LAG_COUNTER = $05A0 ; Not used in vanilla !MAP_MIN_X_SCROLL = $05AC !MAP_MAX_X_SCROLL = $05AE !MAP_MIN_Y_SCROLL = $05B0 @@ -745,7 +748,7 @@ !DEBUG_SUPERS = $05CB !DEBUG_POWERBOMBS = $05CD !DEBUG_MODE = $05D1 -!MENU_STACK_INDEX = $05D5 ; Only used for debugging in vanilla +!MENU_STACK_INDEX = $05D5 ; Only used for debugging in vanilla !CACHED_RANDOM_NUMBER = $05E5 !BITMASK = $05E7 !DISABLE_SOUNDS = $05F5 diff --git a/src/freespace.asm b/src/freespace.asm index 7d711dd8..1b9f3647 100644 --- a/src/freespace.asm +++ b/src/freespace.asm @@ -9,13 +9,15 @@ !START_FREESPACE_82 = $82F70F ; $8F1 ; Logic expects custom doors are placed at or after $83C000 !START_FREESPACE_83 = $83C000 ; $529A -!START_FREESPACE_84 = $84EFD9 ; $1027 (PAL) +; Block shuffler parity only allows freespace in $84F000 region +!START_FREESPACE_84 = $84F002 ; $FFC ; Leave space for custom fanfare text to immediately follow vanilla text !START_FREESPACE_85 = $85A000 ; $69BF !START_FREESPACE_86 = $86F4E2 ; $B1E (PAL) !START_FREESPACE_87 = $87C964 ; $369C !START_FREESPACE_88 = $88EE32 ; $11CE -!START_FREESPACE_89 = $89AEFD ; $5103 +; Block shuffler parity only allows freespace starting at $89B000 +!START_FREESPACE_89 = $89B000 ; $4F00 !START_FREESPACE_8A = $8AE980 ; $1680 !START_FREESPACE_8B = $8BF760 ; $8A0 if !FEATURE_PAL @@ -195,12 +197,12 @@ endif !END_FREESPACE_81 = $81FF00 ; Thanks Genji! !END_FREESPACE_82 = $820000+$10000 !END_FREESPACE_83 = $830000+$10000 -!END_FREESPACE_84 = $840000+$10000 +!END_FREESPACE_84 = $840000+$FFFE ; Avoid the edge of bank $84 for block shuffler !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_89 = $890000+$FF00 ; Avoid last $100 of $89 for block shuffler !END_FREESPACE_8A = $8A0000+$10000 !END_FREESPACE_8B = $8B0000+$10000 !END_FREESPACE_8C = $8C0000+$10000 diff --git a/src/layout.asm b/src/layout.asm index b9afcf51..c4ed3e5d 100644 --- a/src/layout.asm +++ b/src/layout.asm @@ -1403,33 +1403,10 @@ layout_asm_mb_external: %endfree(83) -; Ignore bombs for bomb torizo with VARIA tweaks -org $848258 -layout_bomb_torizo_finish_crumbling: - INC $1D27,X : INC $1D27,X - LDA #$D356 : STA $1CD7,X - RTS -warnpc $848270 - -; Relocate grey door preinstruction table and add new type that has no prerequisite to begin flashing -org $848C4F -layout_grey_door_preinstruction_table: - dw $BDD4, $BDE3, $BDF2, $BE01, $BE1C, $BE1F, $BE30, $BDB2 -warnpc $848C7C - ; Allow debug save stations to be used org $848D0C AND #$000F -; Instruction set to restore MB escape wall -org $8494C9 -layout_restore_mb_escape_wall: - dw $8004, $8B0F, $8AE8, $82E8, $830F - db $01, $00 - dw $8004, $8B0F, $8AE8, $82E8, $830F - dw $0000 -warnpc $849505 - org $84AADF layout_save_station_mini_entry: dw $B5EE, #layout_save_station_mini_instructions @@ -1458,16 +1435,7 @@ org $84BAD1 layout_bomb_grey_door_new_check: LDA !sram_room_layout : BIT !ROOM_LAYOUT_VARIA_TWEAKS : BNE layout_bomb_grey_door_original_skip BRA layout_bomb_grey_door_original_check - -layout_bomb_set_room_argument: -{ - LDA !sram_room_layout : BIT !ROOM_LAYOUT_VARIA_TWEAKS : BEQ .end - LDA #layout_bomb_torizo_start_crumbling : STA $1D21 - LDA #$BA54 : STA $1D75 - .end - JMP $8899 -} -warnpc $84BAF4 +warnpc $84BADC org $84BAF8 dw layout_bomb_grey_door_new_instructions @@ -1512,17 +1480,6 @@ layout_bomb_torizo_start_crumbling: layout_bomb_torizo_end_preinstruction: warnpc $84D356 -org $84D476 -layout_spazer_block_plm: -{ - LDX $0DDE : LDA $0C18,X : BIT #$0004 : BEQ .delete_plm - JMP $CF0C ; Break block - .delete_plm - TDC : STA $1C37,Y - RTS -} -warnpc $84D490 - if !FEATURE_PAL org $84E543 else @@ -1549,7 +1506,6 @@ layout_morph_ball_hidden_plm_equipment: dw $0004 - %startfree(84) layout_save_station_mini_instructions: @@ -1582,6 +1538,10 @@ layout_save_station_mini_instructions: dw $0000 } +; Add new type that has no prerequisite to begin flashing +layout_grey_door_preinstruction_table: + dw $BDD4, $BDE3, $BDF2, $BE01, $BE1C, $BE1F, $BE30, $BDB2 + layout_bomb_grey_door_new_instructions: dw layout_bomb_grey_door_check_vanilla dw #$0001, $A683 @@ -1607,6 +1567,22 @@ layout_bomb_grey_door_check_fast: RTS } +layout_bomb_set_room_argument: +{ + LDA !sram_room_layout : BIT !ROOM_LAYOUT_VARIA_TWEAKS : BEQ .end + LDA #layout_bomb_torizo_start_crumbling : STA $1D21 + LDA #layout_bomb_grey_door_original_delay : STA $1D75 + .end + JMP $8899 +} + +layout_bomb_torizo_finish_crumbling: +{ + INC $1D27,X : INC $1D27,X + LDA #$D356 : STA $1CD7,X + RTS +} + layout_fix_mb_escape_wall: { ; Overwritten logic @@ -1618,6 +1594,22 @@ layout_fix_mb_escape_wall: RTL } +layout_restore_mb_escape_wall: + dw $8004, $8B0F, $8AE8, $82E8, $830F + db $01, $00 + dw $8004, $8B0F, $8AE8, $82E8, $830F + dw $0000 + +layout_spazer_block_plm: +{ + LDX $0DDE : LDA $0C18,X + BIT #$0004 : BEQ .delete_plm + JMP $CF0C ; Break block + .delete_plm + TDC : STA $1C37,Y + RTS +} + %endfree(84) diff --git a/src/main.asm b/src/main.asm index 70f15c6d..34b73907 100644 --- a/src/main.asm +++ b/src/main.asm @@ -17,7 +17,7 @@ lorom !VERSION_MAJOR = 2 !VERSION_MINOR = 7 !VERSION_BUILD = 4 -!VERSION_REV = 0 +!VERSION_REV = 2 table ../resources/normal.tbl print "" diff --git a/src/menu.asm b/src/menu.asm index f3f5b1c6..d1973e12 100644 --- a/src/menu.asm +++ b/src/menu.asm @@ -449,28 +449,29 @@ endif cm_transfer_custom_cgram: { - ; $0A = Border & OFF $7277 - ; $12 = Header $48F3 - ; $1A = Num $0000, $7FFF - ; $32 = ON / Sel Num $4376 - ; $34 = Selected item $761F - ; $3A = Sel Num $0000, $761F - %a16() + %ai16() + ; backup DB registers (also sets bank to 7E) + PHB : LDX #$0000 ; X = Source + LDY.w #!DP_REGISTER_BACKUP_START ; Y = Destination + LDA.w #!DP_REGISTER_BACKUP_SIZE-1 ; A = Size-1 + MVN $7E7E ; srcBank, destBank + ; backup gameplay palettes - LDA $7EC00A : STA !ram_cgram_cache - LDA $7EC00E : STA !ram_cgram_cache+$02 - LDA $7EC012 : STA !ram_cgram_cache+$04 - LDA $7EC014 : STA !ram_cgram_cache+$06 - LDA $7EC016 : STA !ram_cgram_cache+$08 - LDA $7EC01A : STA !ram_cgram_cache+$0A - LDA $7EC01C : STA !ram_cgram_cache+$0C - LDA $7EC01E : STA !ram_cgram_cache+$0E - LDA $7EC032 : STA !ram_cgram_cache+$10 - LDA $7EC034 : STA !ram_cgram_cache+$12 - LDA $7EC036 : STA !ram_cgram_cache+$14 - LDA $7EC03A : STA !ram_cgram_cache+$16 - LDA $7EC03C : STA !ram_cgram_cache+$18 - LDA $7EC03E : STA !ram_cgram_cache+$1A + LDA $C00A : STA !ram_cgram_cache + LDA $C00E : STA !ram_cgram_cache+$02 + LDA $C012 : STA !ram_cgram_cache+$04 + LDA $C014 : STA !ram_cgram_cache+$06 + LDA $C016 : STA !ram_cgram_cache+$08 + LDA $C01A : STA !ram_cgram_cache+$0A + LDA $C01C : STA !ram_cgram_cache+$0C + LDA $C01E : STA !ram_cgram_cache+$0E + LDA $C032 : STA !ram_cgram_cache+$10 + LDA $C034 : STA !ram_cgram_cache+$12 + LDA $C036 : STA !ram_cgram_cache+$14 + LDA $C03A : STA !ram_cgram_cache+$16 + LDA $C03C : STA !ram_cgram_cache+$18 + LDA $C03E : STA !ram_cgram_cache+$1A + PLB JSL PrepMenuPalette @@ -495,22 +496,29 @@ cm_transfer_custom_cgram: cm_transfer_original_cgram: { - PHP : %a16() + PHP : %ai16() + ; restore DB registers (also sets bank to 7E) + PHB : LDY #$0000 ; Y = Destination + LDX.w #!DP_REGISTER_BACKUP_START ; X = Source + LDA.w #!DP_REGISTER_BACKUP_SIZE-1 ; A = Size-1 + MVN $7E7E ; srcBank, destBank + ; restore gameplay palettes - LDA !ram_cgram_cache : STA $7EC00A - LDA !ram_cgram_cache+$02 : STA $7EC00E - LDA !ram_cgram_cache+$04 : STA $7EC012 - LDA !ram_cgram_cache+$06 : STA $7EC014 - LDA !ram_cgram_cache+$08 : STA $7EC016 - LDA !ram_cgram_cache+$0A : STA $7EC01A - LDA !ram_cgram_cache+$0C : STA $7EC01C - LDA !ram_cgram_cache+$0E : STA $7EC01E - LDA !ram_cgram_cache+$10 : STA $7EC032 - LDA !ram_cgram_cache+$12 : STA $7EC034 - LDA !ram_cgram_cache+$14 : STA $7EC036 - LDA !ram_cgram_cache+$16 : STA $7EC03A - LDA !ram_cgram_cache+$18 : STA $7EC03C - LDA !ram_cgram_cache+$1A : STA $7EC03E + LDA !ram_cgram_cache : STA $C00A + LDA !ram_cgram_cache+$02 : STA $C00E + LDA !ram_cgram_cache+$04 : STA $C012 + LDA !ram_cgram_cache+$06 : STA $C014 + LDA !ram_cgram_cache+$08 : STA $C016 + LDA !ram_cgram_cache+$0A : STA $C01A + LDA !ram_cgram_cache+$0C : STA $C01C + LDA !ram_cgram_cache+$0E : STA $C01E + LDA !ram_cgram_cache+$10 : STA $C032 + LDA !ram_cgram_cache+$12 : STA $C034 + LDA !ram_cgram_cache+$14 : STA $C036 + LDA !ram_cgram_cache+$16 : STA $C03A + LDA !ram_cgram_cache+$18 : STA $C03C + LDA !ram_cgram_cache+$1A : STA $C03E + PLB JSL transfer_cgram_long PLP diff --git a/src/misc.asm b/src/misc.asm index ef82ee0c..ef82b478 100644 --- a/src/misc.asm +++ b/src/misc.asm @@ -221,6 +221,198 @@ org $84D66B endif JSL lock_samus_bowling +org $84878F + JMP hook_load_item_plm_gfx + +org $848610 + JSR process_plm_draw_instruction + +org $848B46 + JSR process_plm_draw_instruction + +if !FEATURE_PAL +org $84E090 +else +org $84E08A +endif + JSR process_plm_draw_instruction + +%startfree(84) + +; Copied from vanilla, but modified to handle block shuffler +process_plm_draw_instruction: +{ + LDA $7EDE6C,X : TAY + LDA !PLM_BLOCK_INDEX,X : STA $12 : TAX + LDA $0000,Y : BPL .row + JMP $8647 + + .row + BEQ .shuffler + STA $16 : INY #2 + + .loop_row + LDA $0000,Y + STA $7F0002,X + INY #2 : INX #2 + DEC $16 : BNE .loop_row + + .done + JMP $8664 + + .shuffler + STA $16 : INY #2 + CPY #$F000 : BCS .loop_F000_check + + .loop_shuffler + LDA $0000,Y + STA $7F0002,X + INY #2 : INX #2 + DEC $16 : BEQ .done_shuffler + CPY #$F000 : BCC .loop_shuffler + + .loop_F000 + LDA #$FFFF + STA $7F0002,X + INY #2 : INX #2 + DEC $16 : BEQ .done_shuffler + .loop_F000_check + CPY #$FFFE : BCS .loop_shuffler + BRA .loop_F000 + + .done_shuffler + ; subtract Y from X + PHY : TXA + SEC : SBC $01,X : TAX + +if !FEATURE_PAL +else + ; account for bank 84 patches + LDA #$861E : STA $7F8613,X ; $848610 misc + LDA #$00B9 : STA $7F8791,X ; $84878F misc + TDC : STA $7F8792,X ; $84878F misc + LDA #$8E22 : STA $7F88A1,X ; $84889F infohud + LDA #$8081 : STA $7F88A3,X ; $84889F infohud + LDA #$861E : STA $7F8B49,X ; $848B46 misc + LDA #$A2DA : STA $7F8BDF,X ; $848BDD fanfare + LDA #$0EA2 : STA $7F8BE0,X ; $848BDD fanfare + LDA #$0007 : STA $7F8D0F,X ; $848D0C layout + LDA #$0001 : STA $7FAAE1,X ; $84AADF layout + LDA #$A2B5 : STA $7FAAE3,X ; $84AADF layout + LDA #$949D : STA $7FAC03,X ; $84AC01 layout + LDA #$09A2 : STA $7FB426,X ; $84B423 layout + LDA #$09A2 : STA $7FB4D4,X ; $84B4D1 layout + LDA #$2000 : STA $7FB7F5,X ; $84B7F2 layout + ; $84BA4C layout + LDA #$BA6F : STA $7FBA52,X ; $84BA50 layout + ; $84BA54 layout + ; $84BA6F layout + ; $84BA7A layout + LDA #$C8B9 : STA $7FBAD3,X ; $84BAD1 layout + LDA #$291D : STA $7FBAD5,X ; $84BAD1 layout + LDA #$007C : STA $7FBAD7,X ; $84BAD1 layout + LDA #$A94A : STA $7FBAD9,X ; $84BAD1 layout + LDA #$0004 : STA $7FBADB,X ; $84BAD1 layout + LDA #$9900 : STA $7FBADC,X ; $84BAD1 layout + LDA #$BA4C : STA $7FBAFA,X ; $84BAF8 layout + LDA #$BE4B : STA $7FBE45,X ; $84BE43 layout + LDA #$CFA0 : STA $7FD016,X ; $84D014 layout + LDA #$C910 : STA $7FD018,X ; $84D014 layout + LDA #$A4AD : STA $7FD191,X ; $84D18F layout + LDA #$2909 : STA $7FD193,X ; $84D18F layout + LDA #$0200 : STA $7FD195,X ; $84D18F layout + LDA #$47F0 : STA $7FD197,X ; $84D18F layout + LDA #$02AD : STA $7FD199,X ; $84D18F layout + LDA #$290B : STA $7FD19B,X ; $84D18F layout + LDA #$000F : STA $7FD19D,X ; $84D18F layout + LDA #$03C9 : STA $7FD19F,X ; $84D18F layout + LDA #$D000 : STA $7FD1A1,X ; $84D18F layout + LDA #$AD3C : STA $7FD1A3,X ; $84D18F layout + LDA #$0A1C : STA $7FD1A5,X ; $84D18F layout + LDA #$1DC9 : STA $7FD1A7,X ; $84D18F layout + LDA #$F000 : STA $7FD1A9,X ; $84D18F layout + LDA #$C90A : STA $7FD1AB,X ; $84D18F layout + LDA #$0079 : STA $7FD1AD,X ; $84D18F layout + LDA #$05F0 : STA $7FD1AF,X ; $84D18F layout + LDA #$7AC9 : STA $7FD1B1,X ; $84D18F layout + LDA #$D000 : STA $7FD1B3,X ; $84D18F layout + LDA #$A92A : STA $7FD1B5,X ; $84D18F layout + LDA #$000C : STA $7FD1B7,X ; $84D18F layout + LDA #$FA22 : STA $7FD1B9,X ; $84D18F layout + LDA #$8081 : STA $7FD1BB,X ; $84D18F layout + LDA #$01A9 : STA $7FD1BD,X ; $84D18F layout + LDA #$9D00 : STA $7FD1BF,X ; $84D18F layout + LDA #$0FB4 : STA $7FD1C1,X ; $84D18F layout + ; $84D1DE layout + LDA #$A4AD : STA $7FD33D,X ; $84D33B layout + LDA #$2909 : STA $7FD33F,X ; $84D33B layout + LDA #$1000 : STA $7FD341,X ; $84D33B layout + LDA #$13F0 : STA $7FD343,X ; $84D33B layout + LDA #$01A9 : STA $7FD345,X ; $84D33B layout + LDA #$9F00 : STA $7FD347,X ; $84D33B layout + LDA #$DE1C : STA $7FD349,X ; $84D33B layout + LDA #$FE7E : STA $7FD34B,X ; $84D33B layout + LDA #$1D27 : STA $7FD34D,X ; $84D33B layout + LDA #$27FE : STA $7FD34F,X ; $84D33B layout + LDA #$A91D : STA $7FD351,X ; $84D33B layout + LDA #$D356 : STA $7FD353,X ; $84D33B layout + LDA #$D79D : STA $7FD355,X ; $84D33B layout + LDA #$1CD7 : STA $7FD356,X ; $84D33B layout + LDA #$F084 : STA $7FD66E,X ; $84D66B misc + LDA #$861E : STA $7FE08D,X ; $84E08A misc + LDA #$8899 : STA $7FE53F,X ; $84E53D layout + LDA #$0002 : STA $7FE8D0,X ; $84E8CE layout + LDA #$0002 : STA $7FEE04,X ; $84EE02 layout +endif + + ; account for WRAM modifications + TDC + STA $7F003B,X ; $39-3B + STA $7F003C,X ; $39-3B + STA $7F0040,X ; $3E-43 + STA $7F0042,X ; $3E-43 + STA $7F0044,X ; $3E-43 + STA $7F00C3,X ; $C1-CF + STA $7F00C5,X ; $C1-CF + STA $7F00C7,X ; $C1-CF + STA $7F00C9,X ; $C1-CF + STA $7F00CB,X ; $C1-CF + STA $7F00CD,X ; $C1-CF + STA $7F00CF,X ; $C1-CF + STA $7F00D0,X ; $C1-CF + STA $7F05A2,X ; !REALTIME_LAG_COUNTER + STA $7F05D7,X ; !MENU_STACK_INDEX + STA $7F05D9,X ; !MENU_STACK_INDEX + STA $7F0A04,X ; !SAMUS_FAKE_SHINESPARK_FLAG + STA $7F0A16,X ; !SAMUS_DOUBLE_JUMP + STA $7F0A18,X ; !SAMUS_SUBTRACT_WALL_JUMP + STA $7F0A1C,X ; !SAMUS_SPEED_OR_BLUE_BOOSTER_BITMASK + STA $7F0A72,X ; !SAMUS_WATER_PHYSICS + STA $7F0A9A,X ; !SAMUS_LAVA_DAMAGE_SUITS + STA $7F0B0E,X ; !DAMAGE_COUNTER + + PLY + JMP $8664 +} + +hook_load_item_plm_gfx: +{ + LDA $0000,Y + CMP #$AF00 : BCC .end + CMP #$FF00 : BCS .end + + ; We are attempting to load GFX from freespace, + ; probably because of some OOB block shuffler shenanigans + ; However we are using the freespace so we don't want to use that, + ; so transfer data from $AF00 which we know is FFFF + LDA #$AF00 + + .end + JMP $8792 +} + +%endfree(84) + org $869D59 JSR move_kraid_rocks_horizontally @@ -895,14 +1087,14 @@ spacetime_routine: INY #2 INX #2 : CPX #($7EF378-$7EC1C0) : BMI .loop_skip_sprite_object_ram - ; Check if Y will cause us to reach CTRL_SHORTCUT_ROUTINE - TYA : CLC : ADC #(!CTRL_SHORTCUT_ROUTINE-$7EF398) : CMP #$0000 : BPL .normal_load_loop + ; Check if Y will cause us to reach DP_REGISTER_BACKUP_START + TYA : CLC : ADC #(!DP_REGISTER_BACKUP_START-$7EF398) : CMP #$0000 : BPL .normal_load_loop ; It will, so run our own loop .loop_before_wram LDA [$00],Y : STA $7EC1C0,X INY #2 - INX #2 : CPX #(!CTRL_SHORTCUT_ROUTINE-$7EC1C0) : BMI .loop_before_wram + INX #2 : CPX #(!DP_REGISTER_BACKUP_START-$7EC1C0) : BMI .loop_before_wram ; Skip over WRAM ; Instead of load and store, load and load @@ -918,7 +1110,7 @@ spacetime_routine: .overwrite_sprite_object_ram ; Check if Y will cause us to reach WRAM - TYA : CLC : ADC #(!CTRL_SHORTCUT_ROUTINE-$7EEF98) : CMP #$0000 : BPL .normal_load_loop + TYA : CLC : ADC #(!DP_REGISTER_BACKUP_START-$7EEF98) : CMP #$0000 : BPL .normal_load_loop BRA .loop_before_wram } endif diff --git a/web/data/changelog.mdx b/web/data/changelog.mdx index 0a073f7e..97dee2e6 100644 --- a/web/data/changelog.mdx +++ b/web/data/changelog.mdx @@ -32,6 +32,8 @@ - Add ridley tail and phantoon flame rng options and bonk indicator option defaulted off (2.7.4) - Added double springball and camera position infohud modes, and expanded door skip mode (2.7.4) - Added subpixels to vertical speed and first tap E/L feedback to shinetune (2.7.4) +- Add block shuffler detection and attempt to mimic vanilla behavior (2.7.4.1) +- Fixes for DP registers and loading GFX that affect or were affected by block shuffler (2.7.4.2) # Version 2.6.x - Optimize kraid rock projectiles to reduce lag when Kraid rises (2.6.0) diff --git a/web/data/config.json b/web/data/config.json index 98f86843..b2c747c5 100644 --- a/web/data/config.json +++ b/web/data/config.json @@ -1,6 +1,6 @@ { "name": "Super Metroid Practice Hack", - "version": "2.7.4", + "version": "2.7.4.2", "variants": ["NTSC", "PAL"], "base": { "NTSC": {