update comments on MoreSaveSlots patch
This commit is contained in:
@@ -32,6 +32,8 @@ memcpy:
|
|||||||
.include CopyData
|
.include CopyData
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
start:
|
start:
|
||||||
# Apply all necessary patches
|
# Apply all necessary patches
|
||||||
call apply_enable_scroll_patch
|
call apply_enable_scroll_patch
|
||||||
@@ -40,8 +42,9 @@ start:
|
|||||||
call apply_fix_file_index
|
call apply_fix_file_index
|
||||||
call apply_preview_window_fix
|
call apply_preview_window_fix
|
||||||
call apply_static_patches
|
call apply_static_patches
|
||||||
# Rewrite the existing char file to have the appropriate size; this must be
|
# Rewrite the existing char file regions to have the appropriate size; this
|
||||||
# done after all patches are applied
|
# must be done after the patches are applied because we call the checksum
|
||||||
|
# function, which is patched by one of the above calls
|
||||||
call update_existing_char_file_list
|
call update_existing_char_file_list
|
||||||
jmp update_existing_char_file_list_memcard
|
jmp update_existing_char_file_list_memcard
|
||||||
|
|
||||||
@@ -64,6 +67,8 @@ enable_scroll_start:
|
|||||||
mov ecx, [eax + 0xEC] # ecx = scroll_bar->client_id
|
mov ecx, [eax + 0xEC] # ecx = scroll_bar->client_id
|
||||||
imul ecx, ecx, 0x24
|
imul ecx, ecx, 0x24
|
||||||
# Set up scroll bar graphics (in struct at scroll_bar + 0x1C)
|
# Set up scroll bar graphics (in struct at scroll_bar + 0x1C)
|
||||||
|
# TODO: Even though we set this up the same way PSO Xbox does, it still
|
||||||
|
# doesn't render. Figure this out and fix it.
|
||||||
mov dword [eax + ecx + 0x1C], 0x439D0000
|
mov dword [eax + ecx + 0x1C], 0x439D0000
|
||||||
mov dword [eax + ecx + 0x20], 0x43360000
|
mov dword [eax + ecx + 0x20], 0x43360000
|
||||||
mov dword [eax + ecx + 0x24], 0x439D0000
|
mov dword [eax + ecx + 0x24], 0x439D0000
|
||||||
@@ -89,7 +94,8 @@ enable_scroll_end:
|
|||||||
|
|
||||||
|
|
||||||
apply_fix_scroll_patch1:
|
apply_fix_scroll_patch1:
|
||||||
# This patch fixes the preview display so it will show the correct character
|
# This patch fixes character selection cursor object so it will take the
|
||||||
|
# scroll offset into account
|
||||||
push 6 # Call size
|
push 6 # Call size
|
||||||
push 0x00413C38 # Call address
|
push 0x00413C38 # Call address
|
||||||
call get_code_size_for_fix_scroll_patch1
|
call get_code_size_for_fix_scroll_patch1
|
||||||
@@ -111,7 +117,9 @@ fix_scroll_patch1_end:
|
|||||||
|
|
||||||
|
|
||||||
apply_fix_scroll_patch2:
|
apply_fix_scroll_patch2:
|
||||||
# This patch fixes the preview display so it will show the correct character
|
# This patch changes the TAdSinglePlyChrSelectGC::selected_index_within_view
|
||||||
|
# to be the selected character's absolute index (including scroll_offset),
|
||||||
|
# not the index only within to the displayed four characters
|
||||||
push 6 # Call size
|
push 6 # Call size
|
||||||
push 0x00413CD8 # Call address
|
push 0x00413CD8 # Call address
|
||||||
call get_code_size_for_fix_scroll_patch2
|
call get_code_size_for_fix_scroll_patch2
|
||||||
@@ -188,7 +196,6 @@ preview_window_fix_end:
|
|||||||
|
|
||||||
apply_static_patches:
|
apply_static_patches:
|
||||||
.include WriteCodeBlocksBB
|
.include WriteCodeBlocksBB
|
||||||
|
|
||||||
# These patches change various places where the character data size and slot
|
# These patches change various places where the character data size and slot
|
||||||
# count are referenced
|
# count are referenced
|
||||||
.data 0x004751A4
|
.data 0x004751A4
|
||||||
@@ -235,16 +242,16 @@ apply_static_patches:
|
|||||||
.data 0x00022FC4 # total file size
|
.data 0x00022FC4 # total file size
|
||||||
.data 0x006C2643
|
.data 0x006C2643
|
||||||
.data 0x00000004
|
.data 0x00000004
|
||||||
.binary BC2F0200 # save_count offset
|
.data 0x00022FBC # save_count offset
|
||||||
.data 0x006C264D
|
.data 0x006C264D
|
||||||
.data 0x00000004
|
.data 0x00000004
|
||||||
.binary BC2F0200 # save_count offset
|
.data 0x00022FBC # save_count offset
|
||||||
.data 0x006C26EF
|
.data 0x006C26EF
|
||||||
.data 0x00000004
|
.data 0x00000004
|
||||||
.binary BC2F0200 # save_count offset
|
.data 0x00022FBC # save_count offset
|
||||||
.data 0x006C2705
|
.data 0x006C2705
|
||||||
.data 0x00000004
|
.data 0x00000004
|
||||||
.binary C02F0200 # round2_seed offset
|
.data 0x00022FC0 # round2_seed offset
|
||||||
.data 0x006C2793
|
.data 0x006C2793
|
||||||
.data 0x00000004
|
.data 0x00000004
|
||||||
.data 0x00022FC4 # total file size
|
.data 0x00022FC4 # total file size
|
||||||
@@ -268,10 +275,10 @@ apply_static_patches:
|
|||||||
.data 0x00022FC4 # total file size
|
.data 0x00022FC4 # total file size
|
||||||
.data 0x006C35D2
|
.data 0x006C35D2
|
||||||
.data 0x00000004
|
.data 0x00000004
|
||||||
.binary BC2F0200 # save_count offset
|
.data 0x00022FBC # save_count offset
|
||||||
.data 0x006C35DB
|
.data 0x006C35DB
|
||||||
.data 0x00000004
|
.data 0x00000004
|
||||||
.binary BC2F0200 # save_count offset
|
.data 0x00022FBC # save_count offset
|
||||||
.data 0x006C36E0
|
.data 0x006C36E0
|
||||||
.data 0x00000004
|
.data 0x00000004
|
||||||
.data 0x00022FC4 # total file size
|
.data 0x00022FC4 # total file size
|
||||||
@@ -412,7 +419,7 @@ apply_static_patches:
|
|||||||
.data 0x00022FC4 # total file size
|
.data 0x00022FC4 # total file size
|
||||||
.data 0x006C6B74
|
.data 0x006C6B74
|
||||||
.data 0x00000004
|
.data 0x00000004
|
||||||
.binary 5D000000 # memcard block count
|
.data 0x0000005D # memcard block count
|
||||||
.data 0x006C6BF6
|
.data 0x006C6BF6
|
||||||
.data 0x00000004
|
.data 0x00000004
|
||||||
.data 0x00022FC4 # total file size
|
.data 0x00022FC4 # total file size
|
||||||
@@ -445,9 +452,9 @@ apply_static_patches:
|
|||||||
.data 0x00022FC4 # total file size
|
.data 0x00022FC4 # total file size
|
||||||
.data 0x0077BE92
|
.data 0x0077BE92
|
||||||
.data 0x00000004
|
.data 0x00000004
|
||||||
.binary B42F0200 # bgm_test_songs_unlocked offset
|
.data 0x00022FB4 # bgm_test_songs_unlocked offset
|
||||||
|
|
||||||
# Signature check on all files (rewritten as loop)
|
# Signature check on all save files (rewritten as loop)
|
||||||
.data 0x006C1C2D
|
.data 0x006C1C2D
|
||||||
.deltaof sig_check_begin, sig_check_end
|
.deltaof sig_check_begin, sig_check_end
|
||||||
sig_check_begin:
|
sig_check_begin:
|
||||||
@@ -519,8 +526,7 @@ update_existing_char_file_list:
|
|||||||
# Replace the existing character list with an appropriately-longer one. This
|
# Replace the existing character list with an appropriately-longer one. This
|
||||||
# part does not need to be done if the patch is applied statically to the
|
# part does not need to be done if the patch is applied statically to the
|
||||||
# executable; this is only necessary when used as a server patch because the
|
# executable; this is only necessary when used as a server patch because the
|
||||||
# character list is already allocated at the time the patch is applied in
|
# character list is already allocated at the time the patch is applied.
|
||||||
# that case
|
|
||||||
push 0x00022FC4 # total file size
|
push 0x00022FC4 # total file size
|
||||||
mov eax, 0x008581C5 # operator_new
|
mov eax, 0x008581C5 # operator_new
|
||||||
call eax
|
call eax
|
||||||
@@ -574,6 +580,8 @@ clear_next_char_done:
|
|||||||
mov ecx, 0x006C26FC
|
mov ecx, 0x006C26FC
|
||||||
jmp ecx # PSOBBCharacterFileList::checksum(char_file_list)
|
jmp ecx # PSOBBCharacterFileList::checksum(char_file_list)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
update_existing_char_file_list_memcard:
|
update_existing_char_file_list_memcard:
|
||||||
# Allocate a new memory card file area and copy the data there too. It seems
|
# Allocate a new memory card file area and copy the data there too. It seems
|
||||||
# Sega didn't fully strip out the local saving code from PSOBB; instead, they
|
# Sega didn't fully strip out the local saving code from PSOBB; instead, they
|
||||||
@@ -581,6 +589,8 @@ update_existing_char_file_list_memcard:
|
|||||||
# bigger now, we also have to make that heap-allocated buffer larger. We add
|
# bigger now, we also have to make that heap-allocated buffer larger. We add
|
||||||
# a few "blocks" on the end, since the original code in the game does that
|
# a few "blocks" on the end, since the original code in the game does that
|
||||||
# too, but it's probably not strictly necessary.
|
# too, but it's probably not strictly necessary.
|
||||||
|
# Like the above, this part is not necessary if this patch is statically
|
||||||
|
# applied to the executable.
|
||||||
mov eax, 0x00022FC4 # total file size
|
mov eax, 0x00022FC4 # total file size
|
||||||
add eax, 0x0000FFFF
|
add eax, 0x0000FFFF
|
||||||
and eax, 0xFFFFC000
|
and eax, 0xFFFFC000
|
||||||
|
|||||||
Reference in New Issue
Block a user