Порядок в каталогах
This commit is contained in:
89
1_IS/IS_battle_GG_name_render.asm
Normal file
89
1_IS/IS_battle_GG_name_render.asm
Normal file
@@ -0,0 +1,89 @@
|
||||
//
|
||||
// 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
|
||||
Reference in New Issue
Block a user