battle & text patches

This commit is contained in:
sShemet
2026-01-31 22:30:14 +05:00
parent 80a561dbd4
commit 5c3ed837bc
9 changed files with 229 additions and 69 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -61,8 +61,15 @@
80090884 ismy1bytecitydiv2 80090884 ismy1bytecitydiv2
800908A0 notand1_2 800908A0 notand1_2
800908AC customnamerender 800908AC customnamerender
800908C8 read_chars_jap 800908CC read_chars_jap
800908F8 read_chars_rus 800908FC read_chars_rus
80090908 read_rus_char 8009090C read_rus_char
80090924 end_of_name_read 80090928 end_of_name_read
8009097C concat_string
800909A4 init_counter
800909AC string_copy_start
800909C0 russian_text_src
800909CC russian_char_loop
800909E8 japanese_text_src
80090A14 update_header
 

View File

@@ -1,12 +1,13 @@
; 6 files included ; 7 files included
; 1033 lines ; 1184 lines
; 84 labels ; 99 labels
; 0 equations ; 0 equations
; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm
; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm
; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm
; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm
; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm
; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm
; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm
@@ -631,61 +632,113 @@ FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\
800908A8 move v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 104 800908A8 move v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 104
800908AC customnamerender: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 7 800908AC customnamerender: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 7
800908AC clear a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 52 800908AC clear a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 52
800908B0 lui v1,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 55 800908B0 clear a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 53
800908B4 lh v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 56 800908B4 lui v1,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 56
800908B8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 57 800908B8 lh v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 57
800908BC srl v0,v0,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 58 800908BC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 58
800908C0 bne v0,zero,0x800908F8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 59 800908C0 srl v0,v0,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 59
800908C4 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 60 800908C4 bne v0,zero,0x800908FC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 60
800908C8 read_chars_jap: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 62 800908C8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 61
800908C8 lbu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 63 800908CC read_chars_jap: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 63
800908CC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 64 800908CC lbu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 64
800908D0 sb v0,-0xC(v1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 66 800908D0 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 65
800908D4 beq v0,zero,0x80090924 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 67 800908D4 sb v0,-0xC(v1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 67
800908D8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 68 800908D8 beq v0,zero,0x80090928 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 68
800908DC addiu v1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 69 800908DC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 69
800908E0 addiu a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 70 800908E0 addiu v1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 70
800908E4 sltiu v0,a1,0x7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 71 800908E4 addiu a2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 71
800908E8 bne v0,zero,0x800908C8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 72 800908E8 sltiu v0,a2,0x7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 72
800908EC addiu a0,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 73 800908EC bne v0,zero,0x800908CC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 73
800908F0 j 0x80090924 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 75 800908F0 addiu a0,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 74
800908F4 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 76 800908F4 j 0x80090928 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 76
800908F8 read_chars_rus: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 79 800908F8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 77
800908F8 lh v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 80 800908FC read_chars_rus: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 80
800908FC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 81 800908FC lh v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 81
80090900 andi a2,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 82 80090900 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 82
80090904 addiu a0,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 83 80090904 andi a2,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 83
80090908 read_rus_char: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 84 80090908 addiu a0,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 84
80090908 lbu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 85 8009090C read_rus_char: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 85
8009090C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 86 8009090C lbu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 86
80090910 sb v0,-0xC(v1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 87 80090910 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 87
80090914 addiu v1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 88 80090914 sb v0,-0xC(v1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 88
80090918 addiu a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 89 80090918 addiu v1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 89
8009091C bne a1,a2,0x80090908 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 90 8009091C addiu a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 90
80090920 addiu a0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 91 80090920 bne a1,a2,0x8009090C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 91
80090924 end_of_name_read: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 93 80090924 addiu a0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 92
80090924 lui v0,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 95 80090928 end_of_name_read: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 94
80090928 ori v0,0x3F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 96 80090928 lui v0,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 96
8009092C move a0,a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 98 8009092C ori v0,0x3F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 97
80090930 addu v0,v0,a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 99 80090930 move a0,a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 99
80090934 addiu v0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 100 80090934 addu v0,v0,a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 100
80090938 lbu a1,0x0(v0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 101 80090938 addiu v0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 101
8009093C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 102 8009093C lbu a1,0x0(v0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 102
80090940 sll a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 104 80090940 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 103
80090944 sw a1,0x5E(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 106 80090944 sll a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 105
80090948 sra a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 107 80090948 sh a1,0x5C(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 107
8009094C lui t3,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 109 8009094C sra a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 108
80090950 ori t3,t3,0x1500 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 110 80090950 lui t3,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 110
80090954 jal 0x80090524 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 112 80090954 ori t3,t3,0x1500 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 111
80090958 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 113 80090958 jal 0x80090524 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 113
8009095C addiu a0,sp,0x58 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 115 8009095C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 114
80090960 jal 0x80054894 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 116 80090960 addiu a0,sp,0x58 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 116
80090964 move a1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 117 80090964 jal 0x80054894 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 117
80090968 jal 0x800545E8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 118 80090968 move a1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 118
8009096C clear a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 119 8009096C jal 0x800545E8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 119
80090970 j 0x800D2268 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 121 80090970 clear a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 120
80090974 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 122 80090974 j 0x800D2268 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 122
80090978 .close ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 488 80090978 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 123
8009097C concat_string: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 14
8009097C lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 15
80090980 move a3,a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 16
80090984 srl v1,v0,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 17
80090988 bne v1,zero,0x800909A4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 18
8009098C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 19
80090990 ori v1,r0,0x2000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 20
80090994 sh v1,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 21
80090998 clear a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 22
8009099C j 0x800909AC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 23
800909A0 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 24
800909A4 init_counter: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 26
800909A4 andi a2,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 27
800909A8 addu a0,a0,a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 28
800909AC string_copy_start: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 32
800909AC lhu v0,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 33
800909B0 addiu a0,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 34
800909B4 srl v1,v0,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 35
800909B8 beq v1,zero,0x800909E8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 36
800909BC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 37
800909C0 russian_text_src: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 39
800909C0 andi v1,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 40
800909C4 move a2,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 41
800909C8 addiu a1,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 42
800909CC russian_char_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 44
800909CC lbu v0,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 45
800909D0 addiu v1,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 46
800909D4 sb v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 47
800909D8 beq v1,r0,0x80090A14 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 48
800909DC addiu a0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 49
800909E0 j 0x800909CC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 50
800909E4 addiu a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 51
800909E8 japanese_text_src: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 53
800909E8 lhu v0,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 54
800909EC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 55
800909F0 srl v0,v0,0xC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 56
800909F4 bne v0,r0,0x80090A14 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 57
800909F8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 58
800909FC lhu v0,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 59
80090A00 addiu a1,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 60
80090A04 sb v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 61
80090A08 addiu a2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 62
80090A0C j 0x800909E8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 63
80090A10 addiu a0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 64
80090A14 update_header: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 66
80090A14 lbu v0,0x0(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 67
80090A18 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 68
80090A1C addu a2,a2,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 69
80090A20 sb a2,0x0(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 70
80090A24 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 72
80090A28 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_strings_copy.asm line 73
80090A2C .close ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 489
FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\\2_EP\\BIN\\SLPS_028.25"",0x8000F800; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 7 FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\\2_EP\\BIN\\SLPS_028.25"",0x8000F800; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 7
8000F800 .org 0x8001B5B8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 10 8000F800 .org 0x8001B5B8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 10
8001B5B8 ori a1,r0,0x0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 11 8001B5B8 ori a1,r0,0x0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 11
@@ -707,9 +760,17 @@ FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\
8001BEE8 .org 0x8001BF08 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 53 8001BEE8 .org 0x8001BF08 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 53
8001BF08 j 0x800907F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 56 8001BF08 j 0x800907F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 56
8001BF0C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 57 8001BF0C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 57
8001BF10 .close ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 59 8001BF10 .org 0x8001687C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 60
8001687C j 0x8009097C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 61
80016880 .close ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_txtpatches.asm line 64
FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\\2_EP\\BIN\\789_BATTLE_CODE_JAP.bin"",0x800AB000; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 2 FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\\2_EP\\BIN\\789_BATTLE_CODE_JAP.bin"",0x800AB000; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 2
800AB000 .org 0x800D2214 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 5 800AB000 .org 0x800D2214 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 5
800D2214 j 0x800908AC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 11 800D2214 j 0x800908AC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 11
800D2218 move a0,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 12 800D2218 move a0,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 12
800D221C .close ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 14 800D221C .org 0x800D2C48 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 15
800D2C48 ori v1,r0,0x1B ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 16
800D2C4C .org 0x800D374C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 19
800D374C ori s3,r0,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 21
800D3750 .org 0x800D37A8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 22
800D37A8 ori s3,r0,0x3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 24
800D37AC .close ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm line 26

View File

@@ -11,4 +11,16 @@
j customNameRender j customNameRender
move a0, s0 move a0, s0
.org 0x800d2c48
li v1, 0x1b //смещение на пиксель влево отображаемого имени. В оригинале 0x1d
.org 0x800d374c // Патч смещения имён на пиксель вверх. Используется s3 со значением 3, но нам нужен один раз 2
// li s3, 0x3
li s3, 0x2
.org 0x800d37a8
// clear a0
li s3, 0x3 // ХЗ, ВРОДЕ работает. Подпрограмме не нужен чистый регистр a0
// На тестах следим
.close .close

View File

@@ -50,6 +50,7 @@ customNameRender:
// заполняем буфер и активируем счётчик в зависимости от типа хранения имени // заполняем буфер и активируем счётчик в зависимости от типа хранения имени
clear a1 clear a1
clear a2
lui v1, MyAddr lui v1, MyAddr
@@ -67,8 +68,8 @@ read_chars_jap: //читаем японское им
beq v0, zero, end_of_name_read beq v0, zero, end_of_name_read
nop nop
addiu v1, 0x1 //Увеличиваем адрес записи в буфер addiu v1, 0x1 //Увеличиваем адрес записи в буфер
addiu a1, 0x1 //Счётчик +1 addiu a2, 0x1 //Счётчик +1
sltiu v0, a1, 0x7 sltiu v0, a2, 0x7
bne v0, zero, read_chars_jap //Продолжаем 6 символов... TODO: Считывать до управляющего кода! Хотя он и так остановится на 0x00 в следующей функции. bne v0, zero, read_chars_jap //Продолжаем 6 символов... TODO: Считывать до управляющего кода! Хотя он и так остановится на 0x00 в следующей функции.
addiu a0, 0x2 //адрес чтения + 2 addiu a0, 0x2 //адрес чтения + 2
@@ -103,7 +104,7 @@ end_of_name_read:
sll a1, 1 //*2 = Ширина в 16 битах sll a1, 1 //*2 = Ширина в 16 битах
sw a1, 0x5e(sp) //Сохраняем rect.h в стек sh a1, 0x5c(sp) //Сохраняем rect.w в стек
sra a1, 1 //Возвращаем ширину блоков спрайта и передаём в функцию sra a1, 1 //Возвращаем ширину блоков спрайта и передаём в функцию
lui t3, 0x8009 lui t3, 0x8009

View File

@@ -485,6 +485,7 @@ PageTLoop:
.include "2_EP/EP_charload_grouped.asm" .include "2_EP/EP_charload_grouped.asm"
.include "2_EP/EP_charCalcs.asm" .include "2_EP/EP_charCalcs.asm"
.include "2_EP/EP_battle_name_render.asm" .include "2_EP/EP_battle_name_render.asm"
.include "2_EP/EP_strings_copy.asm"
.close .close
.include "2_EP/EP_txtpatches.asm" // misc text patches .include "2_EP/EP_txtpatches.asm" // misc text patches

73
2_EP/EP_strings_copy.asm Normal file
View File

@@ -0,0 +1,73 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Persona 2 Eternal Punishment (PSX) JAP / Custom Strings Concatination
// Author: Sergey Shemet 31/01/2026
//
// input:
// a0 - destination address
// a1 - source address
//
// free registers:
// v0,v1,a2,a3
concat_string:
lhu v0, 0x0(a0) //if string is initializated as empty
move a3, a0 //a3 dest address copy for header update
srl v1, v0, 0x0D
bne v1, zero, init_counter
nop
li v1,0x2000
sh v1,0x0(a0)
clear a2 //a2 - char counter for saving in string header
j string_copy_start
nop
init_counter:
andi a2, v0, 0xFF //clear command, only length
addu a0, a0, a2
// dest addr a0 ready for save
// a2 - actual char counter
string_copy_start:
lhu v0, 0x0(a1) //checking source format
addiu a0, 0x2 //shift destination address over header
srl v1, v0, 0x0D
beq v1, zero, japanese_text_src
nop
russian_text_src:
andi v1, v0, 0xFF //v1 is src char counter
move a2, v1 //cntr for header update
addiu a1, 2 //shift src address for russian string
russian_char_loop:
lbu v0, 0x0(a1)
addiu v1, -0x1
sb v0, 0x0(a0)
beq v1, 0, update_header
addiu a0, 0x1 //simple bytecopy loop with counter dec...
j russian_char_loop
addiu a1, 0x1
japanese_text_src:
lhu v0, 0x0(a1)
nop
srl v0, v0, 0x0C //checking end command code
bne v0, 0, update_header //end if jap line end
nop
lhu v0, 0x0(a1) //load kanji again
addiu a1, 0x2 //add source address
sb v0, 0x0(a0) //save first byte to dest
addiu a2, 0x1 //increase char counter
j japanese_text_src //looop reading
addiu a0, 0x1 // ...and shift dest addr
update_header:
lbu v0, 0x0(a3) //load counter
nop
addu a2, a2, v0 //actual counter + current counter
sb a2, 0x0(a3) //save
jr ra
nop

View File

@@ -56,6 +56,11 @@
j calcnextXCustom ;PATCHED j calcnextXCustom ;PATCHED
nop nop
// strings custom concat
.org 0x8001687c
j concat_string
//lhu v0,0x0(a0)
.close .close