diff --git a/2_EP/BIN/789_BATTLE_CODE_JAP.bin b/2_EP/BIN/789_BATTLE_CODE_JAP.bin index f1377ce..d925614 100644 Binary files a/2_EP/BIN/789_BATTLE_CODE_JAP.bin and b/2_EP/BIN/789_BATTLE_CODE_JAP.bin differ diff --git a/2_EP/BIN/SLPS_028.25 b/2_EP/BIN/SLPS_028.25 index aadd6d5..268bafe 100644 Binary files a/2_EP/BIN/SLPS_028.25 and b/2_EP/BIN/SLPS_028.25 differ diff --git a/2_EP/BUILD_LOGS/SLPS_028.25.map b/2_EP/BUILD_LOGS/SLPS_028.25.map index 86abf67..e4db564 100644 --- a/2_EP/BUILD_LOGS/SLPS_028.25.map +++ b/2_EP/BUILD_LOGS/SLPS_028.25.map @@ -61,8 +61,15 @@ 80090884 ismy1bytecitydiv2 800908A0 notand1_2 800908AC customnamerender -800908C8 read_chars_jap -800908F8 read_chars_rus -80090908 read_rus_char -80090924 end_of_name_read +800908CC read_chars_jap +800908FC read_chars_rus +8009090C read_rus_char +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  \ No newline at end of file diff --git a/2_EP/BUILD_LOGS/SLPS_028.25.txt b/2_EP/BUILD_LOGS/SLPS_028.25.txt index 282b3f2..209283b 100644 --- a/2_EP/BUILD_LOGS/SLPS_028.25.txt +++ b/2_EP/BUILD_LOGS/SLPS_028.25.txt @@ -1,12 +1,13 @@ -; 6 files included -; 1033 lines -; 84 labels +; 7 files included +; 1184 lines +; 99 labels ; 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_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_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_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 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 -800908B0 lui v1,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 55 -800908B4 lh v0,0x0(a0) ; 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 -800908BC srl v0,v0,0xD ; 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 -800908C4 nop ; 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 lbu v0,0x0(a0) ; 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 -800908D0 sb v0,-0xC(v1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 66 -800908D4 beq v0,zero,0x80090924 ; 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 -800908DC addiu v1,0x1 ; 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 -800908E4 sltiu v0,a1,0x7 ; 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 -800908EC addiu a0,0x2 ; 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 -800908F4 nop ; 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 lh v0,0x0(a0) ; 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 -80090900 andi a2,v0,0xFF ; 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 -80090908 read_rus_char: ; 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 nop ; 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 -80090914 addiu v1,0x1 ; 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 -8009091C bne a1,a2,0x80090908 ; 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 -80090924 end_of_name_read: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 93 -80090924 lui v0,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 95 -80090928 ori v0,0x3F0 ; 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 -80090930 addu v0,v0,a0 ; 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 -80090938 lbu a1,0x0(v0) ; 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 -80090940 sll a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 104 -80090944 sw a1,0x5E(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 106 -80090948 sra a1,0x1 ; 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 -80090950 ori t3,t3,0x1500 ; 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 -80090958 nop ; 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 -80090960 jal 0x80054894 ; 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 -80090968 jal 0x800545E8 ; 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 -80090970 j 0x800D2268 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 121 -80090974 nop ; 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 +800908B0 clear a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 53 +800908B4 lui v1,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 56 +800908B8 lh v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 57 +800908BC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 58 +800908C0 srl v0,v0,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 59 +800908C4 bne v0,zero,0x800908FC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 60 +800908C8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 61 +800908CC read_chars_jap: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 63 +800908CC lbu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 64 +800908D0 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 65 +800908D4 sb v0,-0xC(v1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 67 +800908D8 beq v0,zero,0x80090928 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 68 +800908DC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 69 +800908E0 addiu v1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 70 +800908E4 addiu a2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 71 +800908E8 sltiu v0,a2,0x7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 72 +800908EC bne v0,zero,0x800908CC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 73 +800908F0 addiu a0,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 74 +800908F4 j 0x80090928 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 76 +800908F8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 77 +800908FC read_chars_rus: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 80 +800908FC lh v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 81 +80090900 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 82 +80090904 andi a2,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 83 +80090908 addiu a0,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 84 +8009090C read_rus_char: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 85 +8009090C lbu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 86 +80090910 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 87 +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 v1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 89 +8009091C addiu a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 90 +80090920 bne a1,a2,0x8009090C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 91 +80090924 addiu a0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 92 +80090928 end_of_name_read: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 94 +80090928 lui v0,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 96 +8009092C ori v0,0x3F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 97 +80090930 move a0,a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 99 +80090934 addu v0,v0,a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 100 +80090938 addiu v0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 101 +8009093C lbu a1,0x0(v0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 102 +80090940 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 103 +80090944 sll a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 105 +80090948 sh a1,0x5C(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 107 +8009094C sra a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 108 +80090950 lui t3,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 110 +80090954 ori t3,t3,0x1500 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 111 +80090958 jal 0x80090524 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 113 +8009095C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 114 +80090960 addiu a0,sp,0x58 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 116 +80090964 jal 0x80054894 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 117 +80090968 move a1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 118 +8009096C jal 0x800545E8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 119 +80090970 clear a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 120 +80090974 j 0x800D2268 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_name_render.asm line 122 +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 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 @@ -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 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 -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 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 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 diff --git a/2_EP/EP_battle_code_links_main.asm b/2_EP/EP_battle_code_links_main.asm index 4d59f78..e122449 100644 --- a/2_EP/EP_battle_code_links_main.asm +++ b/2_EP/EP_battle_code_links_main.asm @@ -4,11 +4,23 @@ .org 0x800d2214 -;ORIGINAL + ;ORIGINAL ; jal 0x8001bee0 //Оригинальный вызов процедуры подсчёта символов в текущем имени. Мы заменим её вызовом своего кода ; move a0, s0 //a0 - адрес имени j customNameRender 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 \ No newline at end of file diff --git a/2_EP/EP_battle_name_render.asm b/2_EP/EP_battle_name_render.asm index 69109b9..a9108cf 100644 --- a/2_EP/EP_battle_name_render.asm +++ b/2_EP/EP_battle_name_render.asm @@ -50,6 +50,7 @@ customNameRender: // заполняем буфер и активируем счётчик в зависимости от типа хранения имени clear a1 + clear a2 lui v1, MyAddr @@ -67,13 +68,13 @@ read_chars_jap: //читаем японское им beq v0, zero, end_of_name_read nop addiu v1, 0x1 //Увеличиваем адрес записи в буфер - addiu a1, 0x1 //Счётчик +1 - sltiu v0, a1, 0x7 + addiu a2, 0x1 //Счётчик +1 + sltiu v0, a2, 0x7 bne v0, zero, read_chars_jap //Продолжаем 6 символов... TODO: Считывать до управляющего кода! Хотя он и так остановится на 0x00 в следующей функции. addiu a0, 0x2 //адрес чтения + 2 j end_of_name_read //Пропускаем чтение русского имени - nop + nop read_chars_rus: //Читаем русское имя из EP @@ -103,7 +104,7 @@ end_of_name_read: sll a1, 1 //*2 = Ширина в 16 битах - sw a1, 0x5e(sp) //Сохраняем rect.h в стек + sh a1, 0x5c(sp) //Сохраняем rect.w в стек sra a1, 1 //Возвращаем ширину блоков спрайта и передаём в функцию lui t3, 0x8009 diff --git a/2_EP/EP_main_grouped.asm b/2_EP/EP_main_grouped.asm index f0cee7a..6a7d5da 100644 --- a/2_EP/EP_main_grouped.asm +++ b/2_EP/EP_main_grouped.asm @@ -485,6 +485,7 @@ PageTLoop: .include "2_EP/EP_charload_grouped.asm" .include "2_EP/EP_charCalcs.asm" .include "2_EP/EP_battle_name_render.asm" +.include "2_EP/EP_strings_copy.asm" .close .include "2_EP/EP_txtpatches.asm" // misc text patches diff --git a/2_EP/EP_strings_copy.asm b/2_EP/EP_strings_copy.asm new file mode 100644 index 0000000..a93c850 --- /dev/null +++ b/2_EP/EP_strings_copy.asm @@ -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 diff --git a/2_EP/EP_txtpatches.asm b/2_EP/EP_txtpatches.asm index ca6d19a..f2bbc38 100644 --- a/2_EP/EP_txtpatches.asm +++ b/2_EP/EP_txtpatches.asm @@ -56,6 +56,11 @@ j calcnextXCustom ;PATCHED nop +// strings custom concat +.org 0x8001687c + j concat_string + //lhu v0,0x0(a0) + .close