diff --git a/1_IS/IS_main_grouped.asm b/1_IS/IS_main_grouped.asm index f3330c6..2c796d6 100644 --- a/1_IS/IS_main_grouped.asm +++ b/1_IS/IS_main_grouped.asm @@ -473,7 +473,7 @@ PageTLoop: jr ra // Возврат addiu sp, sp, 0x50 // Восстанавливаем стек - .ascii "This game was officially cracked by SERGEY SHEMET 2021-2025. WHAT ARE YOU DOING HERE, BOY?" + .ascii "This game was officially cracked by SERGEY SHEMET 2021-2026. WHAT ARE YOU DOING HERE, BOY?" .byte 0x00 .byte 0x00 diff --git a/2_EP/BIN/789_BATTLE_CODE_JAP.bin b/2_EP/BIN/789_BATTLE_CODE_JAP.bin new file mode 100644 index 0000000..f1377ce Binary files /dev/null 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 9cad18e..aadd6d5 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 74f2b97..86abf67 100644 --- a/2_EP/BUILD_LOGS/SLPS_028.25.map +++ b/2_EP/BUILD_LOGS/SLPS_028.25.map @@ -60,4 +60,9 @@ 80090868 retuncharstocitydiv2 80090884 ismy1bytecitydiv2 800908A0 notand1_2 +800908AC customnamerender +800908C8 read_chars_jap +800908F8 read_chars_rus +80090908 read_rus_char +80090924 end_of_name_read  \ 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 dee7625..282b3f2 100644 --- a/2_EP/BUILD_LOGS/SLPS_028.25.txt +++ b/2_EP/BUILD_LOGS/SLPS_028.25.txt @@ -1,12 +1,14 @@ -; 4 files included -; 895 lines -; 79 labels +; 6 files included +; 1033 lines +; 84 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_txtpatches.asm +; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_battle_code_links_main.asm FFFFFFFF .psx ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 9 800578FC setdrawtpage: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 12 @@ -372,7 +374,7 @@ FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\ 80090520 addiu sp,sp,0x50 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 482 80090524 make_char_line_in_scratch: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 4 80090524 addiu sp,sp,-0x18 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 6 -80090528 sw ra,0x10(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 7 +80090528 sw s3,0x10(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 7 8009052C sw t5,0x14(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 8 80090530 move t5,a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 9 80090534 sll s3,a1,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 11 @@ -537,7 +539,7 @@ FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\ 80090770 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 229 80090774 notshadow: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 231 80090774 lw t5,0x14(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 232 -80090778 lw ra,0x10(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 233 +80090778 lw s3,0x10(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 233 8009077C move v0,s1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 234 80090780 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 235 80090784 addiu sp,sp,0x18 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charload_grouped.asm line 236 @@ -627,7 +629,63 @@ FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\ 800908A0 sra v0,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 101 800908A4 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 103 800908A8 move v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_charCalcs.asm line 104 -800908AC .close ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\2_EP\EP_main_grouped.asm line 487 +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 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 @@ -650,3 +708,8 @@ FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\ 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 +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 diff --git a/2_EP/EP_battle_code_links_main.asm b/2_EP/EP_battle_code_links_main.asm new file mode 100644 index 0000000..4d59f78 --- /dev/null +++ b/2_EP/EP_battle_code_links_main.asm @@ -0,0 +1,14 @@ +;BATTLE CUSTOM NAME RENDERING REDIRECT +.open "2_EP/BIN/789_BATTLE_CODE_JAP.bin", 0x800AB000 + + +.org 0x800d2214 + +;ORIGINAL + ; jal 0x8001bee0 //Оригинальный вызов процедуры подсчёта символов в текущем имени. Мы заменим её вызовом своего кода + ; move a0, s0 //a0 - адрес имени + + j customNameRender + move a0, s0 + +.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 new file mode 100644 index 0000000..69109b9 --- /dev/null +++ b/2_EP/EP_battle_name_render.asm @@ -0,0 +1,122 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Persona 2 Eternal Punishment (PSX) JAP / Custom Name Render In Battle VRAM +// Author: Sergey Shemet 24/01/2026 +// + +customNameRender: +// _4bit_conversion_table2: +// lui t8, 0x1f80 +// ori t8, t8, 0x390 +// lui t7, 0x8001 +// ori t7, t7, 0x5fc +// lw t5, 0x0(t7) +// lw t6, 0x4(t7) +// sw t5, 0x0(t8) +// sw t6, 0x4(t8) +// lw t5, 0x8(t7) +// lw t6, 0xC(t7) +// sw t5, 0x8(t8) +// sw t6, 0xC(t8) +// lw t5, 0x10(t7) +// lw t6, 0x14(t7) //Удалим этот код, потому что эта таблица в 99.999999% есть в scratchpad +// sw t5, 0x10(t8) +// sw t6, 0x14(t8) +// lw t5, 0x18(t7) +// lw t6, 0x1C(t7) +// sw t5, 0x18(t8) +// sw t6, 0x1C(t8) + +// make_sprite_size_table2: +// lui s3, 0x1f80 +// ori s3, 0x03f0 +// lui v0, 0x0403 +// ori v0, 0x0201 //И эта моя кастомная таблица тоже +// sw v0, 0x0(s3) +// lui v1, 0x0706 +// ori v1, 0x0504 +// sw v1, 0x4(s3) + + + +// Занятые регистры после перехода из процедуры рендеринга +// ИХ НЕ ТРОГАТЬ (Если трогать, то сохранять в стеке, либо в вызове make_char_line_in_scratch) +// s3 - входящий a0 функции (используется позже в коде) +// s4 - адрес параметров перса (смещение 0x54) +// s5 - счётчик персов +// s6 - глобальный RECT.x VRAM + + //адрес имени в a0 + + // заполняем буфер и активируем счётчик в зависимости от типа хранения имени + clear a1 + + + lui v1, MyAddr + lh v0, 0x0(a0) + nop + srl v0, v0, 0xD // Проверяем 13-й бит (имя в моём формате) + bne v0, zero, read_chars_rus // Если установлен, читаем текст по-другому + nop + +read_chars_jap: //читаем японское имя ГГ из IS + lbu v0, 0x0(a0) + nop + + sb v0, -0x0c(v1) // Запись символа в буфер + beq v0, zero, end_of_name_read + nop + addiu v1, 0x1 //Увеличиваем адрес записи в буфер + addiu a1, 0x1 //Счётчик +1 + sltiu v0, a1, 0x7 + bne v0, zero, read_chars_jap //Продолжаем 6 символов... TODO: Считывать до управляющего кода! Хотя он и так остановится на 0x00 в следующей функции. + addiu a0, 0x2 //адрес чтения + 2 + + j end_of_name_read //Пропускаем чтение русского имени + nop + + +read_chars_rus: //Читаем русское имя из EP + lh v0, 0x0(a0) + nop + andi a2, v0, 0xFF //чистим количество символов и превращаем в счётчик + addiu a0, 2 //Смещаем адрес чтения текста (пропускаем управляющий код) +read_rus_char: + lbu v0, 0x0(a0) //грузим символ... + nop + sb v0, -0x0c(v1) + addiu v1, 0x1 //Увеличиваем адрес записи в буфер + addiu a1, 0x1 //Счётчик +1 + bne a1, a2, read_rus_char //Продолжаем, пока не достигнем счётчика символов + addiu a0, 0x1 //адрес чтения + 1 + +end_of_name_read: + + lui v0, 0x1f80 //Адрес хранения таблицы количества спрайтов на количество символов + ori v0, 0x03f0 + + move a0, a2 // Перебрасываем cчётчик символов в a0 + addu v0, v0, a0 // получаем адрес количества спрайтов из таблицы + addiu v0, -0x1 // index -1 + lbu a1, 0x0(v0) // Читаем количество ширину спрайтов в a1 + nop + + sll a1, 1 //*2 = Ширина в 16 битах + + sw a1, 0x5e(sp) //Сохраняем rect.h в стек + sra a1, 1 //Возвращаем ширину блоков спрайта и передаём в функцию + + lui t3, 0x8009 + ori t3, t3, 0x1500 // Начало данных спрайта в RAM (LoadImage не работает со scratch!) + + jal make_char_line_in_scratch //Формируем символы в RAM + nop + + addiu a0, sp, 0x58 //RECT хранится в стеке... + jal 0x80054894 //Вызов LoadImage + move a1, v0 //Адрес данных символов, которые вернулись из процедуры формирования пикулей + jal 0x800545e8 //Тут же вызов DrawSync + clear a0 //Обязательно обнуляем аргумент 0 + + j 0x800d2268 //Возврат в оригинальную процедуру на команду смещения глобального X + nop \ No newline at end of file diff --git a/2_EP/EP_charload_grouped.asm b/2_EP/EP_charload_grouped.asm index c22390a..1fa1101 100644 --- a/2_EP/EP_charload_grouped.asm +++ b/2_EP/EP_charload_grouped.asm @@ -4,7 +4,7 @@ make_char_line_in_scratch: addiu sp, sp,-0x18 - sw ra, 0x10(sp) + sw s3, 0x10(sp) sw t5, 0x14(sp) move t5, a0 //char num @@ -230,7 +230,7 @@ shadow_row_loop: NotShadow: lw t5,0x14(sp) - lw ra,0x10(sp) //Restore stack and exit + lw s3,0x10(sp) //Restore stack and exit move v0, s1 jr ra addiu sp, sp, 0x18 \ No newline at end of file diff --git a/2_EP/EP_main_grouped.asm b/2_EP/EP_main_grouped.asm index a0bca6e..f0cee7a 100644 --- a/2_EP/EP_main_grouped.asm +++ b/2_EP/EP_main_grouped.asm @@ -484,9 +484,11 @@ PageTLoop: .include "2_EP/EP_charload_grouped.asm" .include "2_EP/EP_charCalcs.asm" +.include "2_EP/EP_battle_name_render.asm" .close .include "2_EP/EP_txtpatches.asm" // misc text patches +.include "2_EP/EP_battle_code_links_main.asm" //links battle calls to main code funcs