Many File Select screen improvements.
Expand File Select screen drawable area Remove Copy File text from Select Screen Rename HASH to CODE (matches Z1R). Relocate in vram 2 bpp graphics used for file select screen Move names and hearts Extend naming screen to allow for 12 character names
This commit is contained in:
@@ -165,6 +165,7 @@ incsrc retro.asm
|
||||
incsrc dpadinvert.asm
|
||||
incsrc boots.asm
|
||||
incsrc fileselect.asm
|
||||
incsrc playername.asm
|
||||
incsrc decryption.asm
|
||||
warnpc $A58000
|
||||
|
||||
|
||||
10
events.asm
10
events.asm
@@ -74,7 +74,11 @@ RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!RNG_ITEM_LOCK_IN = "$7F5090"
|
||||
OnFileLoad:
|
||||
SEP #$20 ; set 8 bit accumulator
|
||||
REP #$10 ; set 16 bit index registers
|
||||
JSL.l EnableForceBlank ; what we wrote over
|
||||
|
||||
LDA.b #$07 : STA $210c ; Restore screen 3 to normal tile area
|
||||
|
||||
LDA !FRESH_FILE_MARKER : BNE +
|
||||
JSL.l OnNewFile
|
||||
LDA.b #$FF : STA !FRESH_FILE_MARKER
|
||||
@@ -95,9 +99,7 @@ OnFileLoad:
|
||||
LDA.l IsEncrypted : CMP.b #01 : BNE +
|
||||
JSL LoadStaticDecryptionKey
|
||||
+
|
||||
|
||||
REP #$20 ; restore 16 bit accumulator
|
||||
LDA.w #$0007 : STA $7EC00D : STA $7EC013 ; thing we wrote over - sets up some graphics timers
|
||||
SEP #$10 ; restore 8 bit index registers
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!RNG_ITEM_LOCK_IN = "$7F5090"
|
||||
|
||||
179
fileselect.asm
179
fileselect.asm
@@ -1,66 +1,145 @@
|
||||
;DrawPlayerFile:
|
||||
; PHX : PHY
|
||||
;
|
||||
; ; draw bow
|
||||
; LDA.w #$21DA : STA $1070
|
||||
; LDA.w #$21DB : STA $1072
|
||||
; LDA.w #$21EA : STA $10A2
|
||||
; LDA.w #$21EB : STA $10A4
|
||||
;
|
||||
; ; draw bow
|
||||
; LDA.w #$21DA : STA $1070
|
||||
; LDA.w #$21DB : STA $1072
|
||||
; LDA.w #$21EA : STA $10A2
|
||||
; LDA.w #$21EB : STA $10A4
|
||||
;
|
||||
; PLY : PLX
|
||||
; LDA.w #$0004 : STA $02 ; thing we wrote over
|
||||
;RTL
|
||||
!ExtendedPlayerName = "$700500"
|
||||
|
||||
;FS prefix means file_select, since these defines and macros are specific to this screen
|
||||
|
||||
!FS_COLOR_BROWN = "$0000" ;(only used for: Shovel, hammer, powder)
|
||||
!FS_COLOR_RED = "$0400"
|
||||
!FS_COLOR_YELLOW = "$0800"
|
||||
!FS_COLOR_BLUE = "$0C00"
|
||||
!FS_COLOR_GRAY = "$1000" ;(Used to gray out items)
|
||||
!FS_COLOR_BOOTS = "$1400"
|
||||
!FS_COLOR_GREEN = "$1800"
|
||||
!FS_COLOR_BW = "$1C00"
|
||||
|
||||
macro fs_draw8x8(screenrow,screencol)
|
||||
STA.w <screenrow>*$20+<screencol>*2+$1004
|
||||
endmacro
|
||||
macro fs_draw16x8(screenrow,screencol)
|
||||
%fs_draw8x8(<screenrow>,<screencol>)
|
||||
INC A
|
||||
%fs_draw8x8(<screenrow>,<screencol>+1)
|
||||
endmacro
|
||||
macro fs_draw8x16block(screenrow,screencol)
|
||||
%fs_draw8x8(<screenrow>,<screencol>)
|
||||
!ADD #$0010
|
||||
%fs_draw8x8(<screenrow>+1,<screencol>)
|
||||
endmacro
|
||||
macro fs_draw16x16block(screenrow,screencol)
|
||||
%fs_draw16x8(<screenrow>,<screencol>)
|
||||
!ADD #$000F
|
||||
%fs_draw16x8(<screenrow>+1,<screencol>)
|
||||
endmacro
|
||||
macro fs_draw16x16strip(screenrow,screencol)
|
||||
%fs_draw16x8(<screenrow>,<screencol>)
|
||||
INC A
|
||||
%fs_draw16x8(<screenrow>+1,<screencol>)
|
||||
endmacro
|
||||
|
||||
|
||||
DrawPlayerFile:
|
||||
PHX : PHY : PHP
|
||||
|
||||
SEP #$10 ; 8-bit index registers
|
||||
|
||||
LDA !ExtendedPlayerName+$00 : ORA.w #!FS_COLOR_BW
|
||||
%fs_draw8x16block(6,3)
|
||||
LDA !ExtendedPlayerName+$02 : ORA.w #!FS_COLOR_BW
|
||||
%fs_draw8x16block(6,5)
|
||||
LDA !ExtendedPlayerName+$04 : ORA.w #!FS_COLOR_BW
|
||||
%fs_draw8x16block(6,7)
|
||||
LDA !ExtendedPlayerName+$06 : ORA.w #!FS_COLOR_BW
|
||||
%fs_draw8x16block(6,9)
|
||||
|
||||
LDA !ExtendedPlayerName+$08 : ORA.w #!FS_COLOR_BW
|
||||
%fs_draw8x16block(9,3)
|
||||
LDA !ExtendedPlayerName+$0A : ORA.w #!FS_COLOR_BW
|
||||
%fs_draw8x16block(9,5)
|
||||
LDA !ExtendedPlayerName+$0C : ORA.w #!FS_COLOR_BW
|
||||
%fs_draw8x16block(9,7)
|
||||
LDA !ExtendedPlayerName+$0E : ORA.w #!FS_COLOR_BW
|
||||
%fs_draw8x16block(9,9)
|
||||
|
||||
; ;bow
|
||||
; LDA !INVENTORY_SWAP_2 : ORA.w #$0040 : BEQ +
|
||||
; LDX $700340 : BEQ ++
|
||||
; LDA.w #$0208|FS_COLOR_YELLOW ;Bow + silvers
|
||||
; %fs_draw16x16strip(2,12)
|
||||
; LDA.w #$020A|FS_COLOR_RED ;Bow + silvers (Arrow Tail)
|
||||
; %fs_draw8x8(3,12)
|
||||
; BRA .bow_end
|
||||
; ++
|
||||
; LDA #$020B|FS_COLOR_RED ; Silver arrows
|
||||
; BRA .draw_bow
|
||||
; +
|
||||
; LDA.w #$0204|FS_COLOR_GRAY ; No Bow
|
||||
; LDX $700340 : BEQ .draw_bow
|
||||
; LDA.w #$0204|FS_COLOR_YELLOW ; Bow
|
||||
; .draw_bow
|
||||
; %fs_draw16x16strip(?,?)
|
||||
; .bow_end
|
||||
|
||||
; ;hookshot
|
||||
; LDA.w #$0214|FS_COLOR_GRAY
|
||||
; LDX $700343 : BEQ +
|
||||
; LDA.w #$0214|FS_COLOR_RED
|
||||
; +
|
||||
; %fs_draw16x16strip(2,16)
|
||||
|
||||
PLP : PLY : PLX
|
||||
LDA.w #$0004 : STA $02 ; thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
AltBufferTable:
|
||||
|
||||
LDA.b #$02 : STA $210c ; Have Screen 3 use same tile area as screens 1
|
||||
|
||||
REP #$20
|
||||
LDX.w #500 ; 10 rows with 50 bytes (23 tiles * 2 + 4 byte header)
|
||||
LDX.w #$0300 ; 12 rows with 64 bytes (30 tiles * 2 + 4 byte header)
|
||||
;fill with the blank character
|
||||
LDA.w #$0188
|
||||
-
|
||||
STA $1000, X
|
||||
DEX : DEX : BNE -
|
||||
|
||||
|
||||
; set vram offsets
|
||||
LDA.w #$2861 : STA $1002 ;file 1 top row
|
||||
|
||||
LDA.w #$4861 : STA $1034 ;file 1 bottom row
|
||||
|
||||
LDA.w #$6861 : STA $1066 ;gap row top
|
||||
LDA.w #$8861 : STA $1098 ;gap row bottom
|
||||
|
||||
LDA.w #$A861 : STA $10CA ;file 2 top row
|
||||
LDA.w #$C861 : STA $10FC ;file 2 bottom row
|
||||
|
||||
LDA.w #$E861 : STA $112E ;gap row top
|
||||
LDA.w #$0862 : STA $1160 ;gap row bottom
|
||||
|
||||
LDA.w #$2862 : STA $1192 ;file 3 top row
|
||||
LDA.w #$4862 : STA $11c4 ;file 3 bottom row
|
||||
|
||||
LDA.w #$2161 : STA $1002 ;file 1 top row
|
||||
LDA.w #$4161 : STA $1042 ;file 1 bottom row
|
||||
|
||||
LDA.w #$6161 : STA $1082 ;gap row top
|
||||
LDA.w #$8161 : STA $10C2 ;gap row bottom
|
||||
|
||||
LDA.w #$A161 : STA $1102 ;file 2 top row
|
||||
LDA.w #$C161 : STA $1142 ;file 2 bottom row
|
||||
|
||||
LDA.w #$E161 : STA $1182 ;gap row top
|
||||
LDA.w #$0162 : STA $11c2 ;gap row bottom
|
||||
|
||||
LDA.w #$2162 : STA $1202 ;file 3 top row
|
||||
LDA.w #$4162 : STA $1242 ;file 3 bottom row
|
||||
|
||||
LDA.w #$6162 : STA $1282 ;extra gap row top
|
||||
LDA.w #$8162 : STA $12c2 ;extra gap row bottom
|
||||
|
||||
; set lengths
|
||||
LDA.w #$2d00
|
||||
LDA.w #$3B00
|
||||
STA $1004 ;file 1 top row
|
||||
STA $1036 ;file 1 bottom row
|
||||
STA $1068 ;gap row top
|
||||
STA $109A ;gap row bottom
|
||||
STA $10CC ;file 2 top row
|
||||
STA $10FE ;file 2 bottom row
|
||||
STA $1130 ;gap row top
|
||||
STA $1162 ;gap row bottom
|
||||
STA $1194 ;file 3 top row
|
||||
STA $11c6 ;file 3 bottom row
|
||||
|
||||
STA $1044 ;file 1 bottom row
|
||||
STA $1084 ;gap row top
|
||||
STA $10C4 ;gap row bottom
|
||||
STA $1104 ;file 2 top row
|
||||
STA $1144 ;file 2 bottom row
|
||||
STA $1184 ;gap row top
|
||||
STA $11c4 ;gap row bottom
|
||||
STA $1204 ;file 3 top row
|
||||
STA $1244 ;file 3 bottom row
|
||||
STA $1284 ;extra gap row top
|
||||
STA $12c4 ;extra gap row bottom
|
||||
|
||||
; Set last packet marker
|
||||
LDA.w #$00FF : STA $11f6
|
||||
LDA.w #$00FF : STA $1302
|
||||
SEP #$20
|
||||
|
||||
RTL
|
||||
;------------------------------------------------------------------------------
|
||||
;--------------------------------------------------------------------------------
|
||||
Validate_SRAM:
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
@@ -39,7 +39,7 @@ RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
!ALPHA_TILE_WIDTH = "#$40"
|
||||
!ALPHA_VRAM_DEST_BASE = "#$FA00"
|
||||
!ALPHA_VRAM_DEST_BASE = "#$5A00"
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; LoadAlphabetTiles
|
||||
@@ -227,10 +227,10 @@ FileSelect_PlayerSelectText_Top:
|
||||
;db $60, $62, $00, $37
|
||||
dw !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_BRACKET_OPEN_TOP
|
||||
dw !FSTILE_SPACE, !FSTILE_H_TOP
|
||||
dw !FSTILE_SPACE, !FSTILE_A_TOP
|
||||
dw !FSTILE_SPACE, !FSTILE_S_TOP
|
||||
dw !FSTILE_SPACE, !FSTILE_H_TOP
|
||||
dw !FSTILE_SPACE, !FSTILE_C_TOP
|
||||
dw !FSTILE_SPACE, !FSTILE_O_TOP
|
||||
dw !FSTILE_SPACE, !FSTILE_D_TOP
|
||||
dw !FSTILE_SPACE, !FSTILE_E_TOP
|
||||
dw !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_SPACE, $05A0, $05A1
|
||||
dw !FSTILE_SPACE, $05A4, $05A5
|
||||
@@ -245,10 +245,10 @@ FileSelect_PlayerSelectText_Bottom:
|
||||
;db $60, $82, $00, $37
|
||||
dw !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_BRACKET_OPEN_BOTTOM
|
||||
dw !FSTILE_SPACE, !FSTILE_H_BOTTOM
|
||||
dw !FSTILE_SPACE, !FSTILE_A_BOTTOM
|
||||
dw !FSTILE_SPACE, !FSTILE_S_BOTTOM
|
||||
dw !FSTILE_SPACE, !FSTILE_H_BOTTOM
|
||||
dw !FSTILE_SPACE, !FSTILE_C_BOTTOM
|
||||
dw !FSTILE_SPACE, !FSTILE_O_BOTTOM
|
||||
dw !FSTILE_SPACE, !FSTILE_D_BOTTOM
|
||||
dw !FSTILE_SPACE, !FSTILE_E_BOTTOM
|
||||
dw !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_SPACE, $05A2, $05A3
|
||||
dw !FSTILE_SPACE, $05A6, $05A7
|
||||
|
||||
@@ -10,37 +10,75 @@
|
||||
!FSTILE_A_TOP = "$1D4A"
|
||||
!FSTILE_A_BOTTOM = "$1D5A"
|
||||
|
||||
!FSTILE_C_TOP = "$1D4C"
|
||||
!FSTILE_C_BOTTOM = "$1D5C"
|
||||
|
||||
!FSTILE_D_TOP = "$1D4D"
|
||||
!FSTILE_D_BOTTOM = "$1D5D"
|
||||
|
||||
!FSTILE_E_TOP = "$1D4E"
|
||||
!FSTILE_E_BOTTOM = "$1D5E"
|
||||
|
||||
!FSTILE_F_TOP = "$1D4F"
|
||||
!FSTILE_F_BOTTOM = "$1D5F"
|
||||
|
||||
!FSTILE_H_TOP = "$1D61"
|
||||
!FSTILE_H_BOTTOM = "$1D71"
|
||||
|
||||
!FSTILE_I_TOP = "$1D62"
|
||||
!FSTILE_I_BOTTOM = "$1D72"
|
||||
|
||||
!FSTILE_K_TOP = "$1D64"
|
||||
!FSTILE_K_BOTTOM = "$1D74"
|
||||
|
||||
!FSTILE_L_TOP = "$1D65"
|
||||
!FSTILE_L_BOTTOM = "$1D75"
|
||||
|
||||
!FSTILE_N_TOP = "$1D67"
|
||||
!FSTILE_N_BOTTOM = "$1D77"
|
||||
|
||||
!FSTILE_O_TOP = "$1D68"
|
||||
!FSTILE_O_BOTTOM = "$1D78"
|
||||
|
||||
!FSTILE_P_TOP = "$1D69"
|
||||
!FSTILE_P_BOTTOM = "$1D79"
|
||||
|
||||
!FSTILE_S_TOP = "$1D6C"
|
||||
!FSTILE_S_BOTTOM = "$1D7C"
|
||||
|
||||
!FSTILE_T_TOP = "$1D6D"
|
||||
!FSTILE_T_BOTTOM = "$1D7D"
|
||||
|
||||
!FSTILE_Y_TOP = "$1D82"
|
||||
!FSTILE_Y_BOTTOM = "$1D92"
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0CDE60 ; <- 65E60
|
||||
FileSelect_CopyFile_Top:
|
||||
db $62, $A5, $00, $15
|
||||
dw $1D4C, !FSTILE_SPACE, $1D68, !FSTILE_SPACE, $1D69, !FSTILE_SPACE, $1D82, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE
|
||||
;dw !FSTILE_C_TOP, !FSTILE_SPACE, !FSTILE_O_TOP, !FSTILE_SPACE, !FSTILE_P_TOP, !FSTILE_SPACE, !FSTILE_Y_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;dw $1CAC, !FSTILE_SPACE, $1D23, !FSTILE_SPACE, $1D89, !FSTILE_SPACE, $1D04, !FSTILE_SPACE, $1D89, !FSTILE_SPACE, $1D07
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0CDE7A ; <- 65E7A
|
||||
FileSelect_CopyFile_Bottom:
|
||||
db $62, $C5, $00, $15
|
||||
dw $1D5C, !FSTILE_SPACE, $1D78, !FSTILE_SPACE, $1D79, !FSTILE_SPACE, $1D92, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE,!FSTILE_SPACE
|
||||
;dw !FSTILE_C_BOTTOM, !FSTILE_SPACE, !FSTILE_O_BOTTOM, !FSTILE_SPACE, !FSTILE_P_BOTTOM, !FSTILE_SPACE, !FSTILE_Y_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;dw $1CBC, !FSTILE_SPACE, $1D33, !FSTILE_SPACE, $1D99, !FSTILE_SPACE, $1D14, !FSTILE_SPACE, $1D99, !FSTILE_SPACE, $1D17
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0CDE94 ; <- 65E94
|
||||
FileSelect_KillFile_Top:
|
||||
db $63, $25, $00, $19
|
||||
dw $1D4D, !FSTILE_SPACE, $1D4E, !FSTILE_SPACE, $1D65, !FSTILE_SPACE, $1D4E, !FSTILE_SPACE, $1D6D, !FSTILE_SPACE, $1D4E, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;dw $1D64, !FSTILE_SPACE, $1D62, !FSTILE_SPACE, $1D65, !FSTILE_SPACE, $1D65, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;dw $1D64, !FSTILE_SPACE, $1D62, !FSTILE_SPACE, $1D65, !FSTILE_SPACE, $1D65, !FSTILE_SPACE, $1D04, !FSTILE_SPACE, $1D89, !FSTILE_SPACE, $1D07
|
||||
dw !FSTILE_D_TOP, !FSTILE_SPACE, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_L_TOP, !FSTILE_SPACE, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_T_TOP, !FSTILE_SPACE, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;dw !FSTILE_K_TOP, !FSTILE_SPACE, !FSTILE_I_TOP, !FSTILE_SPACE, !FSTILE_L_TOP, !FSTILE_SPACE, !FSTILE_L_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;dw !FSTILE_K_TOP, !FSTILE_SPACE, !FSTILE_I_TOP, !FSTILE_SPACE, !FSTILE_L_TOP, !FSTILE_SPACE, !FSTILE_L_TOP, !FSTILE_SPACE, $1D04, !FSTILE_SPACE, $1D89, !FSTILE_SPACE, $1D07
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $0CDEB2 ; <- 65EB2
|
||||
;FileSelect_KillFile_Bottom:
|
||||
db $63, $45, $00, $19
|
||||
dw $1D5D, !FSTILE_SPACE, $1D5E, !FSTILE_SPACE, $1D75, !FSTILE_SPACE, $1D5E, !FSTILE_SPACE, $1D7D, !FSTILE_SPACE, $1D5E, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;dw $1D74, !FSTILE_SPACE, $1D72, !FSTILE_SPACE, $1D75, !FSTILE_SPACE, $1D75, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;dw $1D74, !FSTILE_SPACE, $1D72, !FSTILE_SPACE, $1D75, !FSTILE_SPACE, $1D75, !FSTILE_SPACE, $1D14, !FSTILE_SPACE, $1D99, !FSTILE_SPACE, $1D17
|
||||
dw !FSTILE_D_BOTTOM, !FSTILE_SPACE, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_L_BOTTOM, !FSTILE_SPACE, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_T_BOTTOM, !FSTILE_SPACE, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;dw !FSTILE_K_BOTTOM, !FSTILE_SPACE, !FSTILE_I_BOTTOM, !FSTILE_SPACE, !FSTILE_L_BOTTOM, !FSTILE_SPACE, !FSTILE_L_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
;dw !FSTILE_K_BOTTOM, !FSTILE_SPACE, !FSTILE_I_BOTTOM, !FSTILE_SPACE, !FSTILE_L_BOTTOM, !FSTILE_SPACE, !FSTILE_L_BOTTOM, !FSTILE_SPACE, $1D14, !FSTILE_SPACE, $1D99, !FSTILE_SPACE, $1D17
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $0CDDE8 ; <- 65DE8
|
||||
;FileSelect_PlayerSelectText_Top:
|
||||
@@ -60,9 +98,9 @@ dw $1D5D, !FSTILE_SPACE, $1D5E, !FSTILE_SPACE, $1D75, !FSTILE_SPACE, $1D5E, !FST
|
||||
;--------------------------------------------------------------------------------
|
||||
;CopyFile_Header:
|
||||
org $0CE228 ; <- 66228
|
||||
dw !FSTILE_BRACKET_OPEN_TOP, !FSTILE_SPACE, !FSTILE_SPACE, $1D4C, $1D68, $1D69, $1D82, !FSTILE_SPACE, $1D4F, $1D62, $1D65, $1D4E, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_TOP
|
||||
dw !FSTILE_BRACKET_OPEN_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_C_TOP, !FSTILE_O_TOP, !FSTILE_P_TOP, !FSTILE_Y_TOP, !FSTILE_SPACE, !FSTILE_F_TOP, !FSTILE_I_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_TOP
|
||||
org $0CE24A ; <- 6624A
|
||||
dw !FSTILE_BRACKET_OPEN_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, $1D5C, $1D78, $1D79, $1D92, !FSTILE_SPACE, $1D5F, $1D72, $1D75, $1D5E, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_BOTTOM
|
||||
dw !FSTILE_BRACKET_OPEN_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_C_BOTTOM, !FSTILE_O_BOTTOM, !FSTILE_P_BOTTOM, !FSTILE_Y_BOTTOM, !FSTILE_SPACE, !FSTILE_F_BOTTOM, !FSTILE_I_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_BOTTOM
|
||||
|
||||
;CopyFile_Which:
|
||||
org $0CE2DB ; <- 662DB
|
||||
@@ -78,21 +116,21 @@ dw $0D90, $0D71, $0D5E, $0D7B, $0D5E, $0D96, !FSTILE_SPACE
|
||||
|
||||
;CopyFile_Execute:
|
||||
org $0CD13A ; <- 6513A
|
||||
dw $1D4C, !FSTILE_SPACE, $1D68, !FSTILE_SPACE, $1D69, !FSTILE_SPACE, $1D82, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_C_TOP, !FSTILE_SPACE, !FSTILE_O_TOP, !FSTILE_SPACE, !FSTILE_P_TOP, !FSTILE_SPACE, !FSTILE_Y_TOP, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
org $0CD150 ; <- 65150
|
||||
dw $1D5C, !FSTILE_SPACE, $1D78, !FSTILE_SPACE, $1D79, !FSTILE_SPACE, $1D92, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_C_BOTTOM, !FSTILE_SPACE, !FSTILE_O_BOTTOM, !FSTILE_SPACE, !FSTILE_P_BOTTOM, !FSTILE_SPACE, !FSTILE_Y_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
|
||||
;CopyFile_Cancel:
|
||||
org $0CE29A ; <- 6629A
|
||||
dw $1D4C, !FSTILE_SPACE, $1D4A, !FSTILE_SPACE, $1D67, !FSTILE_SPACE, $1D4C, !FSTILE_SPACE, $1D4E, !FSTILE_SPACE, $1D65, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_C_TOP, !FSTILE_SPACE, !FSTILE_A_TOP, !FSTILE_SPACE, !FSTILE_N_TOP, !FSTILE_SPACE, !FSTILE_C_TOP, !FSTILE_SPACE, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_L_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
org $0CE2BA ; <- 662BA
|
||||
dw $1D5C, !FSTILE_SPACE, $1D5A, !FSTILE_SPACE, $1D77, !FSTILE_SPACE, $1D5C, !FSTILE_SPACE, $1D5E, !FSTILE_SPACE, $1D75, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_C_BOTTOM, !FSTILE_SPACE, !FSTILE_A_BOTTOM, !FSTILE_SPACE, !FSTILE_N_BOTTOM, !FSTILE_SPACE, !FSTILE_C_BOTTOM, !FSTILE_SPACE, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_L_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
|
||||
;KillFile_Header:
|
||||
org $0CE002 ; <- 66002
|
||||
dw !FSTILE_BRACKET_OPEN_TOP, !FSTILE_SPACE, $1D4D, $1D4E, $1D65, $1D4E, $1D6D, $1D4E, !FSTILE_SPACE, $1D4F, $1D62, $1D65, $1D4E, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_TOP, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_BRACKET_OPEN_TOP, !FSTILE_SPACE, !FSTILE_D_TOP, !FSTILE_E_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_T_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_F_TOP, !FSTILE_I_TOP, !FSTILE_L_TOP, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_TOP, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
org $0CE028 ; <- 66028
|
||||
dw !FSTILE_BRACKET_OPEN_BOTTOM, !FSTILE_SPACE, $1D5D, $1D5E, $1D75, $1D5E, $1D7D, $1D5E, !FSTILE_SPACE, $1D5F, $1D72, $1D75, $1D5E, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_BRACKET_OPEN_BOTTOM, !FSTILE_SPACE, !FSTILE_D_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_T_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_F_BOTTOM, !FSTILE_I_BOTTOM, !FSTILE_L_BOTTOM, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_BRACKET_CLOSE_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
|
||||
;KillFile_Which:
|
||||
org $0CE04E ; <- 6604E
|
||||
@@ -102,13 +140,12 @@ dw $0D5D, $0D5E, $0D75, $0D5E, $0D7D, $0D5E, !FSTILE_SPACE, $0D90, $0D71, $0D72,
|
||||
|
||||
;KillFile_Execute:
|
||||
org $0CD328 ; <- 65328
|
||||
dw $1D4D, !FSTILE_SPACE, $1D4E, !FSTILE_SPACE, $1D65, !FSTILE_SPACE, $1D4E, !FSTILE_SPACE, $1D6D, !FSTILE_SPACE, $1D4E, !FSTILE_SPACE
|
||||
dw !FSTILE_D_TOP, !FSTILE_SPACE, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_L_TOP, !FSTILE_SPACE, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_T_TOP, !FSTILE_SPACE, !FSTILE_E_TOP, !FSTILE_SPACE
|
||||
org $0CD344 ; <- 65344
|
||||
dw $1D5D, !FSTILE_SPACE, $1D5E, !FSTILE_SPACE, $1D75, !FSTILE_SPACE, $1D5E, !FSTILE_SPACE, $1D7D, !FSTILE_SPACE, $1D5E, !FSTILE_SPACE
|
||||
dw !FSTILE_D_BOTTOM, !FSTILE_SPACE, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_L_BOTTOM, !FSTILE_SPACE, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_T_BOTTOM, !FSTILE_SPACE, !FSTILE_E_BOTTOM, !FSTILE_SPACE
|
||||
|
||||
;KillFile_Cancel:
|
||||
org $0CE0BA ; <- 660BA
|
||||
dw $1D4C, !FSTILE_SPACE, $1D4A, !FSTILE_SPACE, $1D67, !FSTILE_SPACE, $1D4C, !FSTILE_SPACE, $1D4E, !FSTILE_SPACE, $1D65, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
dw !FSTILE_C_TOP, !FSTILE_SPACE, !FSTILE_A_TOP, !FSTILE_SPACE, !FSTILE_N_TOP, !FSTILE_SPACE, !FSTILE_C_TOP, !FSTILE_SPACE, !FSTILE_E_TOP, !FSTILE_SPACE, !FSTILE_L_TOP, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
org $0CE0DA ; <- 660DA
|
||||
dw $1D5C, !FSTILE_SPACE, $1D5A, !FSTILE_SPACE, $1D77, !FSTILE_SPACE, $1D5C, !FSTILE_SPACE, $1D5E, !FSTILE_SPACE, $1D75, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
|
||||
dw !FSTILE_C_BOTTOM, !FSTILE_SPACE, !FSTILE_A_BOTTOM, !FSTILE_SPACE, !FSTILE_N_BOTTOM, !FSTILE_SPACE, !FSTILE_C_BOTTOM, !FSTILE_SPACE, !FSTILE_E_BOTTOM, !FSTILE_SPACE, !FSTILE_L_BOTTOM, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE
|
||||
|
||||
69
hooks.asm
69
hooks.asm
@@ -82,8 +82,8 @@ LDA $C8 : EOR.b #$04 : STA $C8 : NOP #4 ; set cursor to only select first file
|
||||
org $0CCE0F ; < 64E0F - Bank0C.asm : 1880 (LDX $00 : INX #2 : CPX.w #$0006 : BCC .nextFile)
|
||||
NOP #9 ; don't draw the other two save files
|
||||
;--------------------------------------------------------------------------------
|
||||
;org $0CD527 ; <- 65527 : Bank0C.asm : 2913 (LDA.w #$0004 : STA $02) [LDA.w #$0006 : STA $02]
|
||||
;JSL.l DrawPlayerFile : NOP ; hijack hearts draw routine to draw a full inventory
|
||||
org $0CD527 ; <- 65527 : Bank0C.asm : 2913 (LDA.w #$0004 : STA $02) [LDA.w #$0006 : STA $02]
|
||||
JSL.l DrawPlayerFile : NOP ; hijack hearts draw routine to draw a full inventory
|
||||
|
||||
org $0ccdd5 ; Bank0C.asm:1881 (LDX.w #$00FD)
|
||||
JSL.l AltBufferTable : NOP #8 ; Selection screen
|
||||
@@ -96,6 +96,68 @@ JML.l Validate_SRAM ;(Return via RTL. Original code JML'd to Intro_LoadSpriteSta
|
||||
org $0CCD57 ;<- 64D57 - Bank0C.asm :
|
||||
RTL ;Just in case anybody ever removes the previous hook
|
||||
;--------------------------------------------------------------------------------
|
||||
org $00E55D ; <- 0655D - Bank00.asm : 5473 (LDA.w #$7000 : STA $2116)
|
||||
LDA.w #$2000 ; Load file select screen graphics to VRAM word addres 0x2000 instead of 0x7000
|
||||
;--------------------------------------------------------------------------------
|
||||
org $00833A ; <- 0033A - Bank00.asm : 481 (LDA.w #$007F)
|
||||
LDA.w #$0180 ; change which character is used as the blank character for the select screen
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0CD50C ; <- 6550C (Not in disassembly, would be in bank0c.asm if it were) Position table for Name and Hearts
|
||||
;dw $0012, $0112, $0212 ; vanilla-ish positions of file names
|
||||
;dw $0026, $0126, $0226 ; vanilla-ish positions of hearts names
|
||||
dw $00C8, $014A, $01CA ; repositioned, only the first value matters
|
||||
dw $0012, $0192, $0112
|
||||
org $0CD53B ; <- 6553B : Bank0c.asm : 2919 (ADD.w #$0010 : STA $102C, Y) [... : STA $1034, Y]
|
||||
STA.w $1042, Y ; Make 2nd half of names line up properly
|
||||
;org $0CD540 ; <- 65540 : Bank0c.asm : 2923 (INY #2) [INY #4]
|
||||
;NOP #2 ; Remove space between name characters
|
||||
org $0CD571 ; <- 65571 : Bank0c.asm : 2943 (LDA $04 : ADD.w #$002A : TAY) [... : ADD.w #$0032 : ...]
|
||||
ADC.w #$0040 ;make Hearts line up properly
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;================================================================================
|
||||
; Name Entry Screen
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0CD7BE ; <- 657BE : Bank0C.asm : 3353 (STA $7003D9, X)
|
||||
JSL.l WriteBlanksToPlayerName
|
||||
org $0CDB11 ; <- 65B11 : Bank0C.asm : 3605 (LDA $00 : AND.w #$FFF0 : ASL A : ORA $02 : STA $7003D9, X)
|
||||
JSL.l WriteCharacterToPlayerName
|
||||
org $0CDCA9 ; <- 65CA9 : Bank0C.asm : 3853 (LDA $7003D9, X)
|
||||
JSL.l ReadCharacterFromPlayerName
|
||||
org $0CDC90 ; <- 65C90 : Bank0C.asm : 3847 (ORA $DD24, Y) [ORA $DC82, Y]
|
||||
JSL.l GetCharacterPosition
|
||||
org $0CDA79 ; <- 65A79 : Bank0C.asm : 3518 (LDA $0CDA13, X : STA $0800, Y) [LDA $0CD98f, X : ...]
|
||||
LDA.l HeartCursorPositions, X
|
||||
org $0CDAEB ; <- 65AEB : Bank0C.asm : 3571-3575,3581-3587 (...) [LDA $0B12 : AND #$03]
|
||||
; JP here is different. Indicated line number implement the US version of the same functionality
|
||||
JSL.l WrapCharacterPosition : NOP
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0CE43A ; No assembly source. Makes name entry box wider
|
||||
db $2C
|
||||
org $0CE448
|
||||
db $2D, $40, $1E
|
||||
org $0CE45C
|
||||
db $4D, $40, $1E
|
||||
org $0CE462
|
||||
db $6D, $40, $1E
|
||||
org $0CE468
|
||||
db $8D, $40, $1E
|
||||
org $0CE46E
|
||||
db $AD, $40, $1E
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0CE41A ; No assembly source.
|
||||
; Fix name screen background to use the not-overwritten copy of its graphics
|
||||
db $09 : SKIP 5 : db $09 : SKIP 5 : db $09 : SKIP 5 : db $09 : SKIP 5 : db $09 : SKIP 5
|
||||
db $09 : SKIP 5 : db $49 : SKIP 1 : db $49 : SKIP 1 : db $49 : SKIP 1 : db $49 : SKIP 1
|
||||
db $c9 : SKIP 5 : db $09 : SKIP 5 : db $09 : SKIP 1 : db $09 : SKIP 1 : db $09 : SKIP 1
|
||||
db $09 : SKIP 1 : db $89 : SKIP 4 : db $80, $09 : SKIP 4 : db $80, $09 : SKIP 4
|
||||
db $80, $09 : SKIP 5 : db $89 : SKIP 5
|
||||
db $49 : SKIP 5 : db $09 : SKIP 5 : db $09 : SKIP 5 : db $49 : SKIP 5 : db $09 : SKIP 5
|
||||
db $C9 : SKIP 5 : db $89 : SKIP 5 : db $89 : SKIP 5 : db $09 : SKIP 1 : db $09 : SKIP 1
|
||||
db $09 : SKIP 1 : db $09 : SKIP 1 : db $09 : SKIP 1 : db $09 : SKIP 1 : db $09 : SKIP 1
|
||||
db $09 : SKIP 5 : db $09 : SKIP 1 : db $09 : SKIP 1 : db $09 : SKIP 1 : db $09 : SKIP 1
|
||||
db $09 : SKIP 1 : db $09 : SKIP 1 : db $09 : SKIP 1 : db $09 : SKIP 5 : db $05
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;================================================================================
|
||||
; Damage table Relocation from WRAM
|
||||
@@ -1566,9 +1628,8 @@ dw $05AC, $04FC, $0001, $0027, $00F0 ; Zelda in the water room
|
||||
org $00894A ; <- 94A
|
||||
PHB : JSL.l DarkWorldSaveFix
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0CCF05 ; <- 64F05
|
||||
org $028046 ; <- 10046 - Bank02.asm : 217 (JSL EnableForceBlank) (Start of Module_LoadFile)
|
||||
JSL.l OnFileLoad
|
||||
NOP #7
|
||||
;--------------------------------------------------------------------------------
|
||||
org $09F520 ; <- 4F520 - module_death.asm : 401 (LDA $7EF3C5 : CMP.b #$03 : BCS BRANCH_THETA)
|
||||
JSL.l OnPlayerDead
|
||||
|
||||
54
playername.asm
Normal file
54
playername.asm
Normal file
@@ -0,0 +1,54 @@
|
||||
; Note shortly before this we have a blank-the-sram slot code that we might want to hook
|
||||
WriteBlanksToPlayerName:
|
||||
STA.l !ExtendedPlayerName
|
||||
STA.l !ExtendedPlayerName+2
|
||||
STA.l !ExtendedPlayerName+4
|
||||
STA.l !ExtendedPlayerName+6
|
||||
|
||||
STA.l !ExtendedPlayerName+8
|
||||
STA.l !ExtendedPlayerName+10
|
||||
STA.l !ExtendedPlayerName+12
|
||||
STA.l !ExtendedPlayerName+14
|
||||
|
||||
STA.l $7003D9, X ;What we wrote over (clear first byte of vanilla name slot)
|
||||
RTL
|
||||
|
||||
WriteCharacterToPlayerName:
|
||||
CPX.w #$0008 : !BLT .orig
|
||||
STA !ExtendedPlayerName-8, X
|
||||
.orig
|
||||
STA $7003D9, X ;what we wrote over
|
||||
RTL
|
||||
|
||||
ReadCharacterFromPlayerName: ;Only for use on Name Screen
|
||||
CPX.w #$0008 : !BLT .orig
|
||||
LDA !ExtendedPlayerName-8, X
|
||||
.orig
|
||||
LDA $7003D9, X ;what we wrote over
|
||||
RTL
|
||||
|
||||
GetCharacterPosition:
|
||||
PHB : PHK : PLB
|
||||
ORA.w CharacterPositions, Y
|
||||
XBA
|
||||
PLB
|
||||
RTL
|
||||
|
||||
WrapCharacterPosition:
|
||||
LDA $0B12 : BPL +
|
||||
LDA.b #$0B
|
||||
+
|
||||
CMP.b #$0C : !BLT +
|
||||
LDA.b #$00
|
||||
+
|
||||
STA $0B12
|
||||
RTL
|
||||
|
||||
CharacterPositions:
|
||||
dw $006E, $006F, $0070, $0071
|
||||
dw $0073, $0074, $0075, $0076
|
||||
dw $0078, $0079, $007a, $007b
|
||||
HeartCursorPositions:
|
||||
db $70, $78, $80, $88
|
||||
db $98, $a0, $a8, $b0
|
||||
db $c0, $c8, $d0, $d8
|
||||
Reference in New Issue
Block a user