Files
Persona2-PSX-asm-sources/1_IS/IS_battle_GG_name_render.asm
2025-11-04 23:06:09 +05:00

89 lines
3.8 KiB
NASM
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// Persona 2 Innocent Sin (PSX) JAP / Custom Name Render In Battle
// Author: Sergey Shemet 06/10/2025
customNameRender:
_4bit_conversion_table2:
lui t8, 0x1f80
ori t8, t8, 0x390
lui t7, 0x8001
ori t7, t7, 0x3e8
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)
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 // Будем серить в scratch
lui v0, 0x0403 // таблицей рассчитанных команд и ширин
ori v0, 0x0201 // необходимых для спрайтов линии (cmdCount << 2)
sw v0, 0x0(s3)
lui v1, 0x0706
ori v1, 0x0504
sw v1, 0x4(s3)
//адрес текста в a0
clear a1
lui v1, MyAddr
read_char:
lbu v0, 0x0(a0)
nop
sb v0, -0x0c(v1) // Запись символа в буфер
beq v0, zero, end_of_name_read
nop
addiu v1, 0x1 //Увеличиваем адрес записи в буфер
addiu a1, 0x1 //Счётчик +1
addiu a0, 0x2 //адрес чтения + 2
sltiu v0, a1, 0x7
bne v0, zero, read_char //Продолжаем 6 символов...
nop
end_of_name_read:
move a0, a1 // Перебрасываем cчётчик символов в a0
addu s3, s3, a0 // получаем адрес количества спрайтов из таблицы
addiu s3, -0x1 // index -1
lbu a1, 0x0(s3) // Читаем количество ширину спрайтов в a1
nop
lui s3, 0x1f80 //Формируем данные rect для команды LoadImage в scratch
ori s3, 0x03b0 // адрес хранения Rect
lui a2, 0x0121 //Y
ori a2, 0x03C8 //X
sw a2, 0x0(s3)
lui a2, 0x000C //Heigth
sll a1, 1 //*2 = Ширина в 16 битах
or a2, a1 //Совмещаем ширину
sw a2, 0x4(s3)
sra a1, 1 //Возвращаем ширину блоков спрайта и передаём в функцию
lui t3, 0x8008
ori t3, t3, 0xf000 // Начало данных спрайта в scratch
jal make_char_line_in_scratch //Формируем символы в scratch
nop
lui a0, 0x1f80 // Формируем аргументы команды LoadImage
ori a0, 0x03b0 // адрес хранения Rect
jal 0x8004f994 //Вызов LoadImage
move a1, v0 //Адрес данных символов
jal 0x8004f6e8 //Тут же вызов DrawSync
clear a0 //Обязательно обнуляем аргумент 0
j 0x800ca148 //Возврат в оригинальную процедуру
nop