Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/custompresets.asm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
7 changes: 5 additions & 2 deletions src/defines.asm
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down
10 changes: 6 additions & 4 deletions src/freespace.asm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
82 changes: 37 additions & 45 deletions src/layout.asm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -1549,7 +1506,6 @@ layout_morph_ball_hidden_plm_equipment:
dw $0004



%startfree(84)

layout_save_station_mini_instructions:
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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)


Expand Down
2 changes: 1 addition & 1 deletion src/main.asm
Original file line number Diff line number Diff line change
Expand Up @@ -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 ""
Expand Down
80 changes: 44 additions & 36 deletions src/menu.asm
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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
Expand Down
Loading
Loading