Порядок в каталогах
This commit is contained in:
47
1_IS/4bitPattern.asm
Normal file
47
1_IS/4bitPattern.asm
Normal file
@@ -0,0 +1,47 @@
|
||||
;4bit table pattern
|
||||
lui t8,0x1f80
|
||||
ori t8,t8,0x2e0 ;Pattern addr 1f8002e0
|
||||
addiu t7,v0,0x3e8 ;r15 = 800103e8
|
||||
|
||||
lwl t5,0x3(t7)
|
||||
lwr t5,0x0(t7)
|
||||
lwl t6,0x7(t7)
|
||||
lwr t6,0x4(t7)
|
||||
|
||||
swl t5,0x3(t8)
|
||||
swr t5,0x0(t8)
|
||||
swl t6,0x7(t8)
|
||||
swr t6,0x4(t8)
|
||||
|
||||
|
||||
lwl t5,0xb(t7)
|
||||
lwr t5,0x8(t7)
|
||||
lwl t6,0xf(t7)
|
||||
lwr t6,0xc(t7)
|
||||
|
||||
swl t5,0xb(t8)
|
||||
swr t5,0x8(t8)
|
||||
swl t6,0xf(t8)
|
||||
swr t6,0xc(t8)
|
||||
|
||||
|
||||
lwl t5,0x13(t7)
|
||||
lwr t5,0x10(t7)
|
||||
lwl t6,0x17(t7)
|
||||
lwr t6,0x14(t7)
|
||||
|
||||
swl t5,0x13(t8)
|
||||
swr t5,0x10(t8)
|
||||
swl t6,0x17(t8)
|
||||
swr t6,0x14(t8)
|
||||
|
||||
|
||||
lwl t5,0x1b(t7)
|
||||
lwr t5,0x18(t7)
|
||||
lwl t6,0x1f(t7)
|
||||
lwr t6,0x1c(t7)
|
||||
|
||||
swl t5,0x1b(t8)
|
||||
swr t5,0x18(t8)
|
||||
swl t6,0x1f(t8)
|
||||
swr t6,0x1c(t8)
|
||||
BIN
1_IS/BIN/0001_BATTLE_CODE.bin
Normal file
BIN
1_IS/BIN/0001_BATTLE_CODE.bin
Normal file
Binary file not shown.
BIN
1_IS/BIN/1096_J_MENU_Settings_Code.bin
Normal file
BIN
1_IS/BIN/1096_J_MENU_Settings_Code.bin
Normal file
Binary file not shown.
BIN
1_IS/BIN/1097_CODE_ENG.bin
Normal file
BIN
1_IS/BIN/1097_CODE_ENG.bin
Normal file
Binary file not shown.
BIN
1_IS/BIN/1119_CITY_CODE_patched.bin
Normal file
BIN
1_IS/BIN/1119_CITY_CODE_patched.bin
Normal file
Binary file not shown.
BIN
1_IS/BIN/1119_CITY_CODE_patched_2023.bin
Normal file
BIN
1_IS/BIN/1119_CITY_CODE_patched_2023.bin
Normal file
Binary file not shown.
BIN
1_IS/BIN/F1079.BIN
Normal file
BIN
1_IS/BIN/F1079.BIN
Normal file
Binary file not shown.
BIN
1_IS/BIN/SLPS_021.00
Normal file
BIN
1_IS/BIN/SLPS_021.00
Normal file
Binary file not shown.
BIN
1_IS/BIN/SLPS_021.00.bin
Normal file
BIN
1_IS/BIN/SLPS_021.00.bin
Normal file
Binary file not shown.
81
1_IS/BIN/SLPS_021.00.map
Normal file
81
1_IS/BIN/SLPS_021.00.map
Normal file
@@ -0,0 +1,81 @@
|
||||
00000000 0
|
||||
00008009 myaddr
|
||||
80019300 printbigdmatext
|
||||
8001A070 initcopycharchain
|
||||
8001A08F makecharpixels
|
||||
8001A20C makeshadowsmallchar
|
||||
8001A284 generatesmallchar
|
||||
8001B0C8 storecolor
|
||||
800542CC setdrawtpage
|
||||
8008F624 next2bytes
|
||||
8008F650 savelengthandexit
|
||||
8008F66C ismystring
|
||||
8008F67C nextmybyte
|
||||
8008F73C nextmybyte2
|
||||
8008F760 secondstrisjap
|
||||
8008F774 next2bytes2
|
||||
8008F7A0 savelengthandexit2
|
||||
80090000 externalprint
|
||||
80090024 myprintlineroutine
|
||||
800900E4 cputovram_scratchpad_template
|
||||
80090114 _1bppto4bpp_table_template
|
||||
80090164 rect_scratchpad_template
|
||||
800901A8 make_sprite_size_table
|
||||
800901D0 misc_init
|
||||
800901D4 textgroupreadloop
|
||||
800901F8 readtexttobuffer
|
||||
80090244 form_char_data_in_scratch
|
||||
8009024C rect_cmd_init
|
||||
80090274 rect_set_x
|
||||
80090288 rect_set_width
|
||||
80090290 pageloop
|
||||
800902C0 rect_copy_scratch_to_ram
|
||||
800902EC rect_scratch_connect
|
||||
80090340 cpu2vram_cmd_loop
|
||||
800903A8 copy_char_data_start
|
||||
800903C4 copy_char_data_loop
|
||||
800903EC set_flush_cache_cmd
|
||||
800903FC cpu2vram_dma_link
|
||||
80090458 chunk_making_end
|
||||
80090474 textend
|
||||
80090490 pagetloop
|
||||
80090524 .asc:005A
|
||||
8009057E .byt:0001
|
||||
8009057F .byt:0001
|
||||
80090580 make_char_line_in_scratch
|
||||
8009059C char_data_clear
|
||||
800905A8 char_data_loop
|
||||
800905D4 chars_font_loop
|
||||
800905FC char_lines_loop
|
||||
8009060C its_not_empty
|
||||
8009069C not_last
|
||||
800906A8 divideby4
|
||||
800906A8 zero_jump
|
||||
800906B8 spacejump
|
||||
800906D4 sprite_end
|
||||
800906EC make_shadow
|
||||
80090710 shadow_row_loop
|
||||
80090714 shadow_sprites_loop
|
||||
80090724 shadow_pixel_loop
|
||||
80090780 normal_case
|
||||
800907A4 no_s
|
||||
800907D0 notshadow
|
||||
800907E4 _4bit_conversion_table2
|
||||
800907E4 customnamerender
|
||||
80090834 make_sprite_size_table2
|
||||
8009085C read_char
|
||||
80090888 end_of_name_read
|
||||
800908F4 returncharsinstring
|
||||
80090910 ismy1bytestring
|
||||
8009092C notand1
|
||||
8009093C getnewchar
|
||||
80090940 startreading
|
||||
8009095C calcnextxcustom
|
||||
80090984 japoldtext
|
||||
8009098C ihavestringlength
|
||||
800909A4 retuncharstocity
|
||||
800909C0 ismy1bytecity
|
||||
800909D4 retuncharstocitydiv2
|
||||
800909F0 ismy1bytecitydiv2
|
||||
80090A0C notand1_2
|
||||
|
||||
BIN
1_IS/BIN/SLPS_021.00_1.1
Normal file
BIN
1_IS/BIN/SLPS_021.00_1.1
Normal file
Binary file not shown.
BIN
1_IS/BIN/SLPS_021.00_old
Normal file
BIN
1_IS/BIN/SLPS_021.00_old
Normal file
Binary file not shown.
81
1_IS/BUILD_LOGS/SLPS_021.00.map
Normal file
81
1_IS/BUILD_LOGS/SLPS_021.00.map
Normal file
@@ -0,0 +1,81 @@
|
||||
00000000 0
|
||||
00008009 myaddr
|
||||
80019300 printbigdmatext
|
||||
8001A070 initcopycharchain
|
||||
8001A08F makecharpixels
|
||||
8001A20C makeshadowsmallchar
|
||||
8001A284 generatesmallchar
|
||||
8001B0C8 storecolor
|
||||
800542CC setdrawtpage
|
||||
8008F624 next2bytes
|
||||
8008F650 savelengthandexit
|
||||
8008F66C ismystring
|
||||
8008F67C nextmybyte
|
||||
8008F73C nextmybyte2
|
||||
8008F760 secondstrisjap
|
||||
8008F774 next2bytes2
|
||||
8008F7A0 savelengthandexit2
|
||||
80090000 externalprint
|
||||
80090024 myprintlineroutine
|
||||
800900E4 cputovram_scratchpad_template
|
||||
80090114 _1bppto4bpp_table_template
|
||||
80090164 rect_scratchpad_template
|
||||
800901A8 make_sprite_size_table
|
||||
800901D0 misc_init
|
||||
800901D4 textgroupreadloop
|
||||
800901F8 readtexttobuffer
|
||||
80090244 form_char_data_in_scratch
|
||||
8009024C rect_cmd_init
|
||||
80090274 rect_set_x
|
||||
80090288 rect_set_width
|
||||
80090290 pageloop
|
||||
800902C0 rect_copy_scratch_to_ram
|
||||
800902EC rect_scratch_connect
|
||||
80090340 cpu2vram_cmd_loop
|
||||
800903A8 copy_char_data_start
|
||||
800903C4 copy_char_data_loop
|
||||
800903EC set_flush_cache_cmd
|
||||
800903FC cpu2vram_dma_link
|
||||
80090458 chunk_making_end
|
||||
80090474 textend
|
||||
80090490 pagetloop
|
||||
80090524 .asc:005A
|
||||
8009057E .byt:0001
|
||||
8009057F .byt:0001
|
||||
80090580 make_char_line_in_scratch
|
||||
8009059C char_data_clear
|
||||
800905A8 char_data_loop
|
||||
800905D4 chars_font_loop
|
||||
800905FC char_lines_loop
|
||||
8009060C its_not_empty
|
||||
8009069C not_last
|
||||
800906A8 divideby4
|
||||
800906A8 zero_jump
|
||||
800906B8 spacejump
|
||||
800906D4 sprite_end
|
||||
800906EC make_shadow
|
||||
80090710 shadow_row_loop
|
||||
80090714 shadow_sprites_loop
|
||||
80090724 shadow_pixel_loop
|
||||
80090780 normal_case
|
||||
800907A4 no_s
|
||||
800907D0 notshadow
|
||||
800907E4 _4bit_conversion_table2
|
||||
800907E4 customnamerender
|
||||
80090834 make_sprite_size_table2
|
||||
8009085C read_char
|
||||
80090888 end_of_name_read
|
||||
800908F4 returncharsinstring
|
||||
80090910 ismy1bytestring
|
||||
8009092C notand1
|
||||
8009093C getnewchar
|
||||
80090940 startreading
|
||||
8009095C calcnextxcustom
|
||||
80090984 japoldtext
|
||||
8009098C ihavestringlength
|
||||
800909A4 retuncharstocity
|
||||
800909C0 ismy1bytecity
|
||||
800909D4 retuncharstocitydiv2
|
||||
800909F0 ismy1bytecitydiv2
|
||||
80090A0C notand1_2
|
||||
|
||||
918
1_IS/BUILD_LOGS/SLPS_021.00.txt
Normal file
918
1_IS/BUILD_LOGS/SLPS_021.00.txt
Normal file
@@ -0,0 +1,918 @@
|
||||
; 6 files included
|
||||
; 1303 lines
|
||||
; 95 labels
|
||||
; 0 equations
|
||||
|
||||
; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm
|
||||
; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm
|
||||
; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm
|
||||
; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm
|
||||
; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm
|
||||
; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm
|
||||
|
||||
FFFFFFFF .psx ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 5
|
||||
800542CC setdrawtpage: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 8
|
||||
8001B0C8 storecolor: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 9
|
||||
8001A070 initcopycharchain: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 10
|
||||
8001A08F makecharpixels: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 11
|
||||
8001A284 generatesmallchar: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 12
|
||||
8001A20C makeshadowsmallchar: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 13
|
||||
80019300 printbigdmatext: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 14
|
||||
00008009 myaddr: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 16
|
||||
FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\\1_IS\\BIN\\SLPS_021.00"",0x8000F800; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 18
|
||||
8000F800 .org 0x8008F600 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 3
|
||||
8008F600 lui r2,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 8
|
||||
8008F604 sw r4,-0x30(r2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 9
|
||||
8008F608 lhu r3,0x0(r5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 10
|
||||
8008F60C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 11
|
||||
8008F610 srl r2,r3,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 12
|
||||
8008F614 bne r2,zero,0x8008F66C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 13
|
||||
8008F618 lhu r3,0x0(r5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 14
|
||||
8008F61C clear r2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 16
|
||||
8008F620 addiu r4,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 19
|
||||
8008F624 next2bytes: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 20
|
||||
8008F624 sb r3,0x0(r4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 21
|
||||
8008F628 addiu r4,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 22
|
||||
8008F62C addiu r5,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 23
|
||||
8008F630 addiu r2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 24
|
||||
8008F634 lhu r3,0x0(r5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 25
|
||||
8008F638 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 26
|
||||
8008F63C srl r3,r3,0xC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 27
|
||||
8008F640 bne r3,zero,0x8008F650 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 28
|
||||
8008F644 lhu r3,0x0(r5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 29
|
||||
8008F648 j 0x8008F624 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 30
|
||||
8008F64C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 31
|
||||
8008F650 savelengthandexit: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 33
|
||||
8008F650 ori r2,0x2000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 34
|
||||
8008F654 lui r3,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 35
|
||||
8008F658 lw r3,-0x30(r3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 36
|
||||
8008F65C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 37
|
||||
8008F660 sh r2,0x0(r3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 38
|
||||
8008F664 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 39
|
||||
8008F668 move r2,r4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 40
|
||||
8008F66C ismystring: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 43
|
||||
8008F66C lhu r3,0x0(r5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 44
|
||||
8008F670 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 45
|
||||
8008F674 andi r3,r3,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 46
|
||||
8008F678 addiu r3,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 47
|
||||
8008F67C nextmybyte: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 48
|
||||
8008F67C lbu r2,0x0(r5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 49
|
||||
8008F680 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 50
|
||||
8008F684 sb r2,0x0(r4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 51
|
||||
8008F688 addiu r4,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 52
|
||||
8008F68C addiu r3,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 53
|
||||
8008F690 bne r3,zero,0x8008F67C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 54
|
||||
8008F694 addiu r5,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 55
|
||||
8008F698 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 56
|
||||
8008F69C move r2,r4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 57
|
||||
8008F6A0 .org 0x8008F700 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 60
|
||||
8008F700 lhu r3,0x0(r5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 62
|
||||
8008F704 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 63
|
||||
8008F708 srl r2,r3,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 65
|
||||
8008F70C beq r2,zero,0x8008F760 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 66
|
||||
8008F710 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 67
|
||||
8008F714 lbu r2,0x0(r4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 69
|
||||
8008F718 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 70
|
||||
8008F71C lbu r3,0x0(r5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 71
|
||||
8008F720 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 72
|
||||
8008F724 add r2,r3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 73
|
||||
8008F728 sb r2,0x0(r4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 74
|
||||
8008F72C addiu r5,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 76
|
||||
8008F730 sub r2,r3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 77
|
||||
8008F734 addiu r4,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 78
|
||||
8008F738 add r4,r2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 79
|
||||
8008F73C nextmybyte2: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 81
|
||||
8008F73C lbu r2,0x0(r5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 82
|
||||
8008F740 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 83
|
||||
8008F744 sb r2,0x0(r4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 84
|
||||
8008F748 addiu r4,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 85
|
||||
8008F74C addiu r3,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 86
|
||||
8008F750 bne r3,zero,0x8008F67C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 87
|
||||
8008F754 addiu r5,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 88
|
||||
8008F758 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 89
|
||||
8008F75C move r2,r4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 90
|
||||
8008F760 secondstrisjap: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 94
|
||||
8008F760 lbu r3,0x0(r4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 96
|
||||
8008F764 addiu r4,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 97
|
||||
8008F768 add r4,r3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 98
|
||||
8008F76C lhu r3,0x0(r5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 100
|
||||
8008F770 clear r2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 102
|
||||
8008F774 next2bytes2: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 106
|
||||
8008F774 sb r3,0x0(r4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 107
|
||||
8008F778 addiu r4,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 108
|
||||
8008F77C addiu r5,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 109
|
||||
8008F780 addiu r2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 110
|
||||
8008F784 lhu r3,0x0(r5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 111
|
||||
8008F788 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 112
|
||||
8008F78C srl r3,r3,0xC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 113
|
||||
8008F790 bne r3,zero,0x8008F7A0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 114
|
||||
8008F794 lhu r3,0x0(r5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 115
|
||||
8008F798 j 0x8008F774 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 116
|
||||
8008F79C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 117
|
||||
8008F7A0 savelengthandexit2: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 119
|
||||
8008F7A0 lui r3,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 120
|
||||
8008F7A4 lw r3,-0x30(r3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 121
|
||||
8008F7A8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 122
|
||||
8008F7AC lhu r3,0x0(r3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 123
|
||||
8008F7B0 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 124
|
||||
8008F7B4 add r2,r3,r2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 125
|
||||
8008F7B8 lui r3,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 129
|
||||
8008F7BC lw r3,-0x30(r3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 130
|
||||
8008F7C0 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 131
|
||||
8008F7C4 sh r2,0x0(r3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 132
|
||||
8008F7C8 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 133
|
||||
8008F7CC move r2,r4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 134
|
||||
8008F7D0 .org 0x8008F800 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 142
|
||||
8008F800 move r6,ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 145
|
||||
8008F804 lui r5,-0x7FF8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 147
|
||||
8008F808 ori r5,0xA7C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 148
|
||||
8008F80C lui r4,-0x7FF8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 149
|
||||
8008F810 ori r4,-0x5F2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 150
|
||||
8008F814 jal 0x80015FE0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 151
|
||||
8008F818 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 152
|
||||
8008F81C lui r5,-0x7FF8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 154
|
||||
8008F820 ori r5,0xAE4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 155
|
||||
8008F824 lui r4,-0x7FF8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 156
|
||||
8008F828 ori r4,0xA7E ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 157
|
||||
8008F82C jal 0x80015FE0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 158
|
||||
8008F830 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 159
|
||||
8008F834 lui r5,-0x7FF8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 161
|
||||
8008F838 ori r5,-0x5F4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 162
|
||||
8008F83C lui r4,-0x7FF8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 163
|
||||
8008F840 ori r4,0xAE6 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 164
|
||||
8008F844 jal 0x80015FE0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 165
|
||||
8008F848 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 166
|
||||
8008F84C move ra,r6 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 168
|
||||
8008F850 ori r4,r0,0x0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 169
|
||||
8008F854 j 0x80017A9C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\complex_strings_copy.asm line 171
|
||||
8008F858 .org 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 22
|
||||
80090000 externalprint: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 24
|
||||
80090000 move v1,s3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 26
|
||||
80090004 move s3,a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 27
|
||||
80090008 lhu v0,0x0(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 29
|
||||
8009000C move s3,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 30
|
||||
80090010 srl v1,v0,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 31
|
||||
80090014 bne v1,zero,0x80090024 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 32
|
||||
80090018 clear v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 33
|
||||
8009001C j 0x80019300 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 34
|
||||
80090020 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 35
|
||||
80090024 myprintlineroutine: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 37
|
||||
80090024 addiu sp,sp,-0x50 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 38
|
||||
80090028 sw ra,0x4C(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 39
|
||||
8009002C sw s1,0x2C(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 40
|
||||
80090030 sw s2,0x30(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 41
|
||||
80090034 sw s3,0x34(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 42
|
||||
80090038 sw s4,0x38(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 43
|
||||
8009003C sw s5,0x3C(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 44
|
||||
80090040 sw s6,0x40(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 45
|
||||
80090044 sw s8,0x48(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 46
|
||||
80090048 sw s7,0x44(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 47
|
||||
8009004C move s6,a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 49
|
||||
80090050 move s1,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 50
|
||||
80090054 move s2,a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 51
|
||||
80090058 andi v0,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 55
|
||||
8009005C addiu s6,s6,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 56
|
||||
80090060 lui s3,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 57
|
||||
80090064 sh v0,-0x10(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 58
|
||||
80090068 sh v0,-0xE(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 59
|
||||
8009006C lui t0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 62
|
||||
80090070 ori t0,t0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 63
|
||||
80090074 sw s0,0x28(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 65
|
||||
80090078 andi s0,a3,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 66
|
||||
8009007C move a0,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 67
|
||||
80090080 lui a3,-0x7FF8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 68
|
||||
80090084 lui a2,-0x100 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 69
|
||||
80090088 addiu t1,a3,-0x4930 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 72
|
||||
8009008C lw v1,-0x4930(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 73
|
||||
80090090 lbu a1,0x60(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 74
|
||||
80090094 lui v0,-0x8000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 75
|
||||
80090098 and a2,v1,a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 78
|
||||
8009009C andi a1,a1,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 79
|
||||
800900A0 and v1,v1,t0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 80
|
||||
800900A4 or s4,v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 81
|
||||
800900A8 lw v0,0x4(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 82
|
||||
800900AC lw v1,0x0(s4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 83
|
||||
800900B0 addiu v0,v0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 84
|
||||
800900B4 and v1,v1,t0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 85
|
||||
800900B8 or a2,a2,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 86
|
||||
800900BC sw v0,0x4(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 87
|
||||
800900C0 jal 0x8001B0C8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 88
|
||||
800900C4 sw a2,-0x4930(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 89
|
||||
800900C8 move a0,s4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 90
|
||||
800900CC sll a1,s1,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 92
|
||||
800900D0 sra a1,a1,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 93
|
||||
800900D4 sll a2,s2,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 94
|
||||
800900D8 sra a2,a2,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 95
|
||||
800900DC jal 0x8001A070 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 96
|
||||
800900E0 move a3,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 97
|
||||
800900E4 cputovram_scratchpad_template: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 100
|
||||
800900E4 lui a3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 101
|
||||
800900E8 ori a3,a3,0x348 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 102
|
||||
800900EC lui a1,0xF00 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 104
|
||||
800900F0 sw a1,0x0(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 105
|
||||
800900F4 lui a0,-0x6000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 107
|
||||
800900F8 sw a0,0x4(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 108
|
||||
800900FC lui v0,0x1F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 110
|
||||
80090100 ori v0,0x130 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 111
|
||||
80090104 sw v0,0x8(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 112
|
||||
80090108 lui v0,0xC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 114
|
||||
8009010C ori v0,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 115
|
||||
80090110 sw v0,0xC(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 116
|
||||
80090114 _1bppto4bpp_table_template: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 118
|
||||
80090114 lui t8,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 120
|
||||
80090118 ori t8,t8,0x390 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 121
|
||||
8009011C lui t7,-0x7FFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 122
|
||||
80090120 ori t7,t7,0x3E8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 123
|
||||
80090124 lw t5,0x0(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 124
|
||||
80090128 lw t6,0x4(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 125
|
||||
8009012C sw t5,0x0(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 126
|
||||
80090130 sw t6,0x4(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 127
|
||||
80090134 lw t5,0x8(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 128
|
||||
80090138 lw t6,0xC(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 129
|
||||
8009013C sw t5,0x8(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 130
|
||||
80090140 sw t6,0xC(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 131
|
||||
80090144 lw t5,0x10(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 132
|
||||
80090148 lw t6,0x14(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 133
|
||||
8009014C sw t5,0x10(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 134
|
||||
80090150 sw t6,0x14(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 135
|
||||
80090154 lw t5,0x18(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 136
|
||||
80090158 lw t6,0x1C(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 137
|
||||
8009015C sw t5,0x18(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 138
|
||||
80090160 sw t6,0x1C(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 139
|
||||
80090164 rect_scratchpad_template: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 141
|
||||
80090164 lui s3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 143
|
||||
80090168 ori s3,0x3D0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 144
|
||||
8009016C lui v0,0x400 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 145
|
||||
80090170 sw v0,0x0(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 146
|
||||
80090174 lui v0,0x6480 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 147
|
||||
80090178 ori v0,-0x7F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 148
|
||||
8009017C sw v0,0x4(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 149
|
||||
80090180 ori v0,r0,-0xF40 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 150
|
||||
80090184 sh v0,0xC(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 151
|
||||
80090188 lhu v1,0xA8(gp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 152
|
||||
8009018C ori v0,r0,0x0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 154
|
||||
80090190 sw v0,0x8(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 155
|
||||
80090194 sh s2,0xA(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 156
|
||||
80090198 lui v0,0xC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 158
|
||||
8009019C ori v0,0x8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 159
|
||||
800901A0 sw v0,0x10(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 160
|
||||
800901A4 sh v1,0xE(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 161
|
||||
800901A8 make_sprite_size_table: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 163
|
||||
800901A8 lui s3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 164
|
||||
800901AC ori s3,0x3F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 165
|
||||
800901B0 lui v0,0x403 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 166
|
||||
800901B4 ori v0,0x201 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 167
|
||||
800901B8 sw v0,0x0(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 168
|
||||
800901BC lui v1,0x706 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 169
|
||||
800901C0 ori v1,0x504 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 170
|
||||
800901C4 sw v1,0x4(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 171
|
||||
800901C8 ori v0,r0,0x807 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 172
|
||||
800901CC sh v0,0x8(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 173
|
||||
800901D0 misc_init: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 175
|
||||
800901D0 move t6,s1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 176
|
||||
800901D4 textgroupreadloop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 180
|
||||
800901D4 lui s3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 185
|
||||
800901D8 ori s3,0x3F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 186
|
||||
800901DC lui t1,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 187
|
||||
800901E0 lh v1,-0xE(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 189
|
||||
800901E4 lui t2,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 190
|
||||
800901E8 sltiu a0,v1,0xB ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 191
|
||||
800901EC bne a0,zero,0x800901F8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 192
|
||||
800901F0 clear s2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 193
|
||||
800901F4 ori v1,r0,0xA ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 194
|
||||
800901F8 readtexttobuffer: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 196
|
||||
800901F8 lbu a0,0x0(s6) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 197
|
||||
800901FC addiu s6,s6,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 198
|
||||
80090200 addiu v1,v1,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 199
|
||||
80090204 sb a0,-0xC(t2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 200
|
||||
80090208 addiu s2,s2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 201
|
||||
8009020C lh v0,-0xE(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 202
|
||||
80090210 addiu t2,t2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 203
|
||||
80090214 addiu v0,v0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 204
|
||||
80090218 bne v1,zero,0x800901F8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 205
|
||||
8009021C sh v0,-0xE(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 206
|
||||
80090220 ori a0,r0,0x0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 208
|
||||
80090224 sb a0,-0xC(t2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 209
|
||||
80090228 addu s3,s3,s2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 211
|
||||
8009022C addiu s3,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 212
|
||||
80090230 lbu a1,0x0(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 213
|
||||
80090234 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 214
|
||||
80090238 move t5,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 215
|
||||
8009023C lui t3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 217
|
||||
80090240 ori t3,t3,0x1C0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 218
|
||||
80090244 form_char_data_in_scratch: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 220
|
||||
80090244 jal 0x80090580 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 221
|
||||
80090248 move a0,s2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 222
|
||||
8009024C rect_cmd_init: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 225
|
||||
8009024C lui s3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 227
|
||||
80090250 ori s3,0x3D0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 228
|
||||
80090254 lui s1,-0x7FF8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 230
|
||||
80090258 addiu s5,s1,-0x4930 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 231
|
||||
8009025C lui s0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 232
|
||||
80090260 ori s0,s0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 233
|
||||
80090264 lui s7,-0x8000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 234
|
||||
80090268 lui t2,-0x100 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 245
|
||||
8009026C move t4,s4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 246
|
||||
80090270 move t1,s4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 247
|
||||
80090274 rect_set_x: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 248
|
||||
80090274 sh t6,0x8(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 252
|
||||
80090278 sll v0,s2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 254
|
||||
8009027C addu v0,s2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 255
|
||||
80090280 sll v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 256
|
||||
80090284 addu t6,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 257
|
||||
80090288 rect_set_width: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 258
|
||||
80090288 sll v0,t5,0x3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 259
|
||||
8009028C sh v0,0x10(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 260
|
||||
80090290 pageloop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 262
|
||||
80090290 lw v0,-0x4930(s1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 264
|
||||
80090294 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 265
|
||||
80090298 and a0,v0,t2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 266
|
||||
8009029C and v0,v0,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 267
|
||||
800902A0 or a1,v0,s7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 268
|
||||
800902A4 lw v0,0x4(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 269
|
||||
800902A8 lw v1,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 270
|
||||
800902AC addiu v0,v0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 271
|
||||
800902B0 and v1,v1,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 272
|
||||
800902B4 or a0,a0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 273
|
||||
800902B8 sw v0,0x4(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 274
|
||||
800902BC sw a0,-0x4930(s1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 275
|
||||
800902C0 rect_copy_scratch_to_ram: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 277
|
||||
800902C0 lw t8,0x0(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 278
|
||||
800902C4 lw t7,0x4(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 279
|
||||
800902C8 sw t8,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 280
|
||||
800902CC sw t7,0x4(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 281
|
||||
800902D0 lw a3,0x8(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 282
|
||||
800902D4 lw t7,0xC(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 283
|
||||
800902D8 sw a3,0x8(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 284
|
||||
800902DC sw t7,0xC(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 285
|
||||
800902E0 lw t8,0x10(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 286
|
||||
800902E4 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 287
|
||||
800902E8 sw t8,0x10(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 288
|
||||
800902EC rect_scratch_connect: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 290
|
||||
800902EC lw v1,0x18(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 291
|
||||
800902F0 lw v0,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 292
|
||||
800902F4 lw v1,0x0(v1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 293
|
||||
800902F8 and v0,v0,t2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 294
|
||||
800902FC and v1,v1,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 295
|
||||
80090300 or v0,v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 296
|
||||
80090304 sw v0,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 297
|
||||
80090308 lw a0,0x18(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 299
|
||||
8009030C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 300
|
||||
80090310 lw v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 301
|
||||
80090314 and v1,a1,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 302
|
||||
80090318 and v0,v0,t2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 303
|
||||
8009031C or v0,v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 304
|
||||
80090320 sw v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 305
|
||||
80090324 sw a1,0x18(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 306
|
||||
80090328 lhu v0,0x4(t4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 307
|
||||
8009032C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 308
|
||||
80090330 bne v0,zero,0x80090340 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 309
|
||||
80090334 clear s8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 310
|
||||
80090338 sw a1,0x28(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 312
|
||||
8009033C sw a3,0xC(t4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 313
|
||||
80090340 cpu2vram_cmd_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 315
|
||||
80090340 lw v0,-0x4930(s1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 318
|
||||
80090344 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 319
|
||||
80090348 and a0,v0,t2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 320
|
||||
8009034C and v0,v0,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 321
|
||||
80090350 or a3,v0,s7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 322
|
||||
80090354 move a2,a3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 323
|
||||
80090358 lw v0,0x4(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 324
|
||||
8009035C lw v1,0x0(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 325
|
||||
80090360 addiu v0,v0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 326
|
||||
80090364 and v1,v1,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 327
|
||||
80090368 or a0,a0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 328
|
||||
8009036C sw v0,0x4(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 329
|
||||
80090370 sw a0,-0x4930(s1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 333
|
||||
80090374 lui a1,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 336
|
||||
80090378 ori a1,a1,0x348 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 337
|
||||
8009037C lw t8,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 338
|
||||
80090380 lw t7,0x4(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 339
|
||||
80090384 sw t8,0x0(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 340
|
||||
80090388 sw t7,0x4(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 341
|
||||
8009038C lw t8,0x8(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 342
|
||||
80090390 lw t7,0xC(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 343
|
||||
80090394 sw t8,0x8(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 344
|
||||
80090398 sw t7,0xC(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 345
|
||||
8009039C sll v1,s8,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 347
|
||||
800903A0 addiu v0,v1,0x130 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 348
|
||||
800903A4 sh v0,0x8(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 349
|
||||
800903A8 copy_char_data_start: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 350
|
||||
800903A8 lui t3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 351
|
||||
800903AC ori t3,t3,0x1C0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 352
|
||||
800903B0 addiu a2,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 354
|
||||
800903B4 clear v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 355
|
||||
800903B8 sll v1,t5,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 357
|
||||
800903BC sll a1,s8,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 358
|
||||
800903C0 addu a1,t3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 359
|
||||
800903C4 copy_char_data_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 360
|
||||
800903C4 lw t7,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 361
|
||||
800903C8 addu a1,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 362
|
||||
800903CC sw t7,0x0(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 363
|
||||
800903D0 addiu a2,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 365
|
||||
800903D4 addiu v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 366
|
||||
800903D8 ori r1,r0,0xC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 367
|
||||
800903DC bne v0,r1,0x800903C4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 367
|
||||
800903E0 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 368
|
||||
800903E4 bne s8,zero,0x800903FC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 370
|
||||
800903E8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 371
|
||||
800903EC set_flush_cache_cmd: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 373
|
||||
800903EC ori t8,r0,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 374
|
||||
800903F0 sb t8,-0x3D(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 375
|
||||
800903F4 lui t8,0x100 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 376
|
||||
800903F8 sw t8,0x0(a2) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 377
|
||||
800903FC cpu2vram_dma_link: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 379
|
||||
800903FC lw v1,0x18(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 381
|
||||
80090400 lw v0,0x0(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 382
|
||||
80090404 lw v1,0x0(v1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 383
|
||||
80090408 and v0,v0,t2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 384
|
||||
8009040C and v1,v1,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 385
|
||||
80090410 or v0,v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 386
|
||||
80090414 sw v0,0x0(a3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 387
|
||||
80090418 lw a0,0x18(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 388
|
||||
8009041C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 389
|
||||
80090420 lw v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 390
|
||||
80090424 and v1,a3,s0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 391
|
||||
80090428 and v0,v0,t2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 392
|
||||
8009042C or v0,v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 393
|
||||
80090430 sw v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 394
|
||||
80090434 sw a3,0x18(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 395
|
||||
80090438 addiu s8,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 398
|
||||
8009043C bne s8,t5,0x80090340 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 399
|
||||
80090440 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 400
|
||||
80090444 addiu t1,t1,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 402
|
||||
80090448 addiu v0,t4,0x8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 403
|
||||
8009044C sltu v0,t1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 404
|
||||
80090450 bne v0,zero,0x80090290 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 405
|
||||
80090454 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 406
|
||||
80090458 chunk_making_end: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 408
|
||||
80090458 lhu v0,0x4(s4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 410
|
||||
8009045C lui t3,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 411
|
||||
80090460 addiu v0,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 412
|
||||
80090464 lhu v1,-0xE(t3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 413
|
||||
80090468 sh v0,0x4(s4) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 414
|
||||
8009046C bne v1,zero,0x800901D4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 416
|
||||
80090470 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 418
|
||||
80090474 textend: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 420
|
||||
80090474 clear s2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 421
|
||||
80090478 lui s3,-0x7FF8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 422
|
||||
8009047C addiu s5,s3,-0x4930 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 423
|
||||
80090480 lui s1,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 424
|
||||
80090484 ori s1,s1,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 425
|
||||
80090488 move s0,s4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 426
|
||||
8009048C clear a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 427
|
||||
80090490 pagetloop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 429
|
||||
80090490 ori a2,r0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 431
|
||||
80090494 addu s2,s2,a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 432
|
||||
80090498 lui v0,-0x8000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 433
|
||||
8009049C lui a0,-0x100 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 434
|
||||
800904A0 lw v1,-0x4930(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 435
|
||||
800904A4 lw a3,0xA4(gp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 436
|
||||
800904A8 and v1,v1,s1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 437
|
||||
800904AC or v1,v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 438
|
||||
800904B0 sw v1,0x30(s0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 439
|
||||
800904B4 lw v0,-0x4930(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 440
|
||||
800904B8 lw v1,0x0(v1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 441
|
||||
800904BC and v0,v0,a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 442
|
||||
800904C0 and v1,v1,s1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 443
|
||||
800904C4 lw a0,0x4(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 444
|
||||
800904C8 or v0,v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 445
|
||||
800904CC sw v0,-0x4930(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 446
|
||||
800904D0 addiu a0,a0,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 447
|
||||
800904D4 sw a0,0x4(s5) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 448
|
||||
800904D8 lw a0,0x30(s0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 449
|
||||
800904DC jal 0x800542CC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 450
|
||||
800904E0 addiu s0,s0,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 451
|
||||
800904E4 sltiu v0,s2,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 452
|
||||
800904E8 bne v0,zero,0x80090490 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 453
|
||||
800904EC clear a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 454
|
||||
800904F0 move v0,s4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 456
|
||||
800904F4 lw ra,0x4C(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 459
|
||||
800904F8 lw s8,0x48(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 460
|
||||
800904FC lw s7,0x44(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 461
|
||||
80090500 lw s6,0x40(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 462
|
||||
80090504 lw s5,0x3C(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 463
|
||||
80090508 lw s4,0x38(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 464
|
||||
8009050C lw s3,0x34(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 465
|
||||
80090510 lw s2,0x30(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 466
|
||||
80090514 lw s1,0x2C(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 467
|
||||
80090518 lw s0,0x28(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 468
|
||||
8009051C jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 470
|
||||
80090520 addiu sp,sp,0x50 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 471
|
||||
80090524 .byte 0x54,0x68,0x69,0x73,0x20,0x67,0x61,0x6D,0x65,0x20,0x77,0x61,0x73,0x20,0x6F,0x66,0x66,0x69,0x63,0x69,0x61,0x6C,0x6C,0x79,0x20,0x63,0x72,0x61,0x63,0x6B,0x65,0x64,0x20,0x62,0x79,0x20,0x53,0x45,0x52,0x47,0x45,0x59,0x20,0x53,0x48,0x45,0x4D,0x45,0x54,0x20,0x32,0x30,0x32,0x31,0x2D,0x32,0x30,0x32,0x35,0x2E,0x20,0x57,0x48,0x41,0x54,0x20,0x41,0x52,0x45,0x20,0x59,0x4F,0x55,0x20,0x44,0x4F,0x49,0x4E,0x47,0x20,0x48,0x45,0x52,0x45,0x2C,0x20,0x42,0x4F,0x59,0x3F; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 472
|
||||
8009057E .byte 0x00 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 473
|
||||
8009057F .byte 0x00 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 474
|
||||
80090580 make_char_line_in_scratch: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 4
|
||||
80090580 addiu sp,sp,-0x18 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 6
|
||||
80090584 sw ra,0x10(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 7
|
||||
80090588 sw t5,0x14(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 8
|
||||
8009058C move t5,a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 9
|
||||
80090590 sll s3,a1,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 11
|
||||
80090594 lui t7,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 12
|
||||
80090598 addiu t7,-0xC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 13
|
||||
8009059C char_data_clear: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 15
|
||||
8009059C move a1,t3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 16
|
||||
800905A0 addiu a0,a1,0x184 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 17
|
||||
800905A4 ori v0,r0,0x0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 18
|
||||
800905A8 char_data_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 19
|
||||
800905A8 sw v0,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 20
|
||||
800905AC addiu a1,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 21
|
||||
800905B0 bne a1,a0,0x800905A8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 22
|
||||
800905B4 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 23
|
||||
800905B8 move s1,t3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 25
|
||||
800905BC ori a2,r0,0x0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 27
|
||||
800905C0 lbu v0,0x0(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 28
|
||||
800905C4 lbu t2,0xAC(gp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 29
|
||||
800905C8 addiu t7,t7,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 30
|
||||
800905CC lui a3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 32
|
||||
800905D0 ori a3,a3,0x390 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 33
|
||||
800905D4 chars_font_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 36
|
||||
800905D4 addiu v0,-0x20 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 37
|
||||
800905D8 beq v0,zero,0x800906B8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 39
|
||||
800905DC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 40
|
||||
800905E0 lui v1,-0x7FE1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 42
|
||||
800905E4 ori v1,v1,-0x5600 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 43
|
||||
800905E8 sll t0,v0,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 44
|
||||
800905EC sll v0,v0,0x3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 45
|
||||
800905F0 addu v0,v0,t0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 46
|
||||
800905F4 addu t1,v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 47
|
||||
800905F8 clear t3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 49
|
||||
800905FC char_lines_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 51
|
||||
800905FC lbu v1,0x0(t1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 52
|
||||
80090600 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 53
|
||||
80090604 beq v1,zero,0x800906A8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 54
|
||||
80090608 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 55
|
||||
8009060C its_not_empty: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 57
|
||||
8009060C andi a0,v1,0xF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 59
|
||||
80090610 sll a0,a0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 60
|
||||
80090614 addu a0,a0,a3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 61
|
||||
80090618 lhu a0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 62
|
||||
8009061C srl a1,v1,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 64
|
||||
80090620 andi a1,a1,0xF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 65
|
||||
80090624 sll a1,a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 66
|
||||
80090628 addu a1,a1,a3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 67
|
||||
8009062C lhu a1,0x0(a1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 68
|
||||
80090630 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 69
|
||||
80090634 sll a1,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 71
|
||||
80090638 or a0,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 72
|
||||
8009063C mult a0,t2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 73
|
||||
80090640 sll a1,a2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 78
|
||||
80090644 addu a1,a1,a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 79
|
||||
80090648 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 82
|
||||
8009064C mflo t4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 83
|
||||
80090650 mult t3,s3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 86
|
||||
80090654 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 87
|
||||
80090658 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 88
|
||||
8009065C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 89
|
||||
80090660 mflo a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 90
|
||||
80090664 addu a0,a0,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 93
|
||||
80090668 addu a0,a0,s1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 94
|
||||
8009066C andi v0,t4,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 96
|
||||
80090670 sb v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 97
|
||||
80090674 sra v0,t4,0x8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 99
|
||||
80090678 andi v0,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 100
|
||||
8009067C sb v0,0x1(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 101
|
||||
80090680 sra v0,t4,0x10 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 103
|
||||
80090684 andi v0,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 104
|
||||
80090688 sb v0,0x2(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 105
|
||||
8009068C addiu v0,t5,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 107
|
||||
80090690 bne a2,v0,0x8009069C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 108
|
||||
80090694 andi v1,t5,0x3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 109
|
||||
80090698 beq v1,zero,0x800906A8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 111
|
||||
8009069C not_last: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 113
|
||||
8009069C sra v0,t4,0x18 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 114
|
||||
800906A0 andi v0,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 115
|
||||
800906A4 sb v0,0x3(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 116
|
||||
800906A8 divideby4: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 118
|
||||
800906A8 zero_jump: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 120
|
||||
800906A8 addiu t3,t3,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 121
|
||||
800906AC ori v0,r0,0xC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 122
|
||||
800906B0 bne t3,v0,0x800905FC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 123
|
||||
800906B4 addiu t1,t1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 124
|
||||
800906B8 spacejump: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 126
|
||||
800906B8 addiu a2,a2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 127
|
||||
800906BC lbu v0,0x0(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 128
|
||||
800906C0 addiu t7,t7,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 129
|
||||
800906C4 beq v0,zero,0x800906D4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 131
|
||||
800906C8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 132
|
||||
800906CC bne a2,t5,0x800905D4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 134
|
||||
800906D0 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 135
|
||||
800906D4 sprite_end: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 137
|
||||
800906D4 lbu v1,0xAD(gp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 138
|
||||
800906D8 ori v0,r0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 139
|
||||
800906DC bne v1,v0,0x800907D0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 140
|
||||
800906E0 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 141
|
||||
800906E4 move a0,s1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 143
|
||||
800906E8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 144
|
||||
800906EC make_shadow: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 147
|
||||
800906EC move a1,s3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 148
|
||||
800906F0 sll a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 149
|
||||
800906F4 sll v0,s3,0x3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 150
|
||||
800906F8 addu v0,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 151
|
||||
800906FC addu a3,a0,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 153
|
||||
80090700 addu a0,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 154
|
||||
80090704 lbu t1,0xAC(gp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 156
|
||||
80090708 ori t2,r0,0xF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 157
|
||||
8009070C addiu t1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 158
|
||||
80090710 shadow_row_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 161
|
||||
80090710 clear t5 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 163
|
||||
80090714 shadow_sprites_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 166
|
||||
80090714 addu t7,a3,t5 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 168
|
||||
80090718 lw t0,0x0(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 169
|
||||
8009071C clear a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 170
|
||||
80090720 ori a1,r0,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 171
|
||||
80090724 shadow_pixel_loop: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 174
|
||||
80090724 move a1,a2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 175
|
||||
80090728 addiu a1,a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 176
|
||||
8009072C sll a1,a1,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 177
|
||||
80090730 sll v0,a2,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 179
|
||||
80090734 sllv v0,t2,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 180
|
||||
80090738 and v0,t0,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 181
|
||||
8009073C beq v0,zero,0x800907A4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 182
|
||||
80090740 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 183
|
||||
80090744 ori v0,r0,0x7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 186
|
||||
80090748 bne a2,v0,0x80090780 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 187
|
||||
8009074C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 188
|
||||
80090750 addu t8,t7,s3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 191
|
||||
80090754 addiu t8,t8,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 192
|
||||
80090758 lw v1,0x0(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 193
|
||||
8009075C ori v0,r0,0xF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 194
|
||||
80090760 and v0,v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 195
|
||||
80090764 bne v0,zero,0x800907A4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 196
|
||||
80090768 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 197
|
||||
8009076C move v0,t1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 198
|
||||
80090770 or v0,v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 199
|
||||
80090774 sw v0,0x0(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 200
|
||||
80090778 b 0x800907A4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 201
|
||||
8009077C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 202
|
||||
80090780 normal_case: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 204
|
||||
80090780 addu t8,t7,s3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 205
|
||||
80090784 lw v1,0x0(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 206
|
||||
80090788 sllv v0,t2,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 207
|
||||
8009078C and v0,v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 208
|
||||
80090790 bne v0,zero,0x800907A4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 209
|
||||
80090794 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 210
|
||||
80090798 sllv v0,t1,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 211
|
||||
8009079C or v0,v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 212
|
||||
800907A0 sw v0,0x0(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 213
|
||||
800907A4 no_s: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 215
|
||||
800907A4 addiu a2,a2,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 216
|
||||
800907A8 sltiu v0,a2,0x8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 217
|
||||
800907AC bne v0,zero,0x80090724 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 218
|
||||
800907B0 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 219
|
||||
800907B4 addiu t5,t5,0x4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 221
|
||||
800907B8 bne t5,s3,0x80090714 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 222
|
||||
800907BC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 223
|
||||
800907C0 subu a3,s3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 226
|
||||
800907C4 sltu v0,a3,a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 227
|
||||
800907C8 beq v0,zero,0x80090710 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 228
|
||||
800907CC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 229
|
||||
800907D0 notshadow: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 231
|
||||
800907D0 lw t5,0x14(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 232
|
||||
800907D4 lw ra,0x10(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 233
|
||||
800907D8 move v0,s1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 234
|
||||
800907DC jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 235
|
||||
800907E0 addiu sp,sp,0x18 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_charload_grouped.asm line 236
|
||||
800907E4 customnamerender: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 6
|
||||
800907E4 _4bit_conversion_table2: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 7
|
||||
800907E4 lui t8,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 8
|
||||
800907E8 ori t8,t8,0x390 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 9
|
||||
800907EC lui t7,-0x7FFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 10
|
||||
800907F0 ori t7,t7,0x3E8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 11
|
||||
800907F4 lw t5,0x0(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 12
|
||||
800907F8 lw t6,0x4(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 13
|
||||
800907FC sw t5,0x0(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 14
|
||||
80090800 sw t6,0x4(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 15
|
||||
80090804 lw t5,0x8(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 16
|
||||
80090808 lw t6,0xC(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 17
|
||||
8009080C sw t5,0x8(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 18
|
||||
80090810 sw t6,0xC(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 19
|
||||
80090814 lw t5,0x10(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 20
|
||||
80090818 lw t6,0x14(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 21
|
||||
8009081C sw t5,0x10(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 22
|
||||
80090820 sw t6,0x14(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 23
|
||||
80090824 lw t5,0x18(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 24
|
||||
80090828 lw t6,0x1C(t7) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 25
|
||||
8009082C sw t5,0x18(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 26
|
||||
80090830 sw t6,0x1C(t8) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 27
|
||||
80090834 make_sprite_size_table2: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 29
|
||||
80090834 lui s3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 30
|
||||
80090838 ori s3,0x3F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 31
|
||||
8009083C lui v0,0x403 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 32
|
||||
80090840 ori v0,0x201 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 33
|
||||
80090844 sw v0,0x0(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 34
|
||||
80090848 lui v1,0x706 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 35
|
||||
8009084C ori v1,0x504 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 36
|
||||
80090850 sw v1,0x4(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 37
|
||||
80090854 clear a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 40
|
||||
80090858 lui v1,-0x7FF7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 41
|
||||
8009085C read_char: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 42
|
||||
8009085C lbu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 43
|
||||
80090860 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 44
|
||||
80090864 sb v0,-0xC(v1) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 46
|
||||
80090868 beq v0,zero,0x80090888 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 47
|
||||
8009086C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 48
|
||||
80090870 addiu v1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 49
|
||||
80090874 addiu a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 50
|
||||
80090878 addiu a0,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 51
|
||||
8009087C sltiu v0,a1,0x7 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 52
|
||||
80090880 bne v0,zero,0x8009085C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 53
|
||||
80090884 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 54
|
||||
80090888 end_of_name_read: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 56
|
||||
80090888 move a0,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 57
|
||||
8009088C addu s3,s3,a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 58
|
||||
80090890 addiu s3,-0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 59
|
||||
80090894 lbu a1,0x0(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 60
|
||||
80090898 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 61
|
||||
8009089C lui s3,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 63
|
||||
800908A0 ori s3,0x3B0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 64
|
||||
800908A4 lui a2,0x121 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 66
|
||||
800908A8 ori a2,0x3C8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 67
|
||||
800908AC sw a2,0x0(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 68
|
||||
800908B0 lui a2,0xC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 69
|
||||
800908B4 sll a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 70
|
||||
800908B8 or a2,a1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 71
|
||||
800908BC sw a2,0x4(s3) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 72
|
||||
800908C0 sra a1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 73
|
||||
800908C4 lui t3,-0x7FF8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 75
|
||||
800908C8 ori t3,t3,-0x1000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 76
|
||||
800908CC jal 0x80090580 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 78
|
||||
800908D0 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 79
|
||||
800908D4 lui a0,0x1F80 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 81
|
||||
800908D8 ori a0,0x3B0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 82
|
||||
800908DC jal 0x8004F994 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 83
|
||||
800908E0 move a1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 84
|
||||
800908E4 jal 0x8004F6E8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 85
|
||||
800908E8 clear a0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 86
|
||||
800908EC j 0x800CA148 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 88
|
||||
800908F0 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\IS_battle_GG_name_render.asm line 89
|
||||
800908F4 returncharsinstring: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 1
|
||||
800908F4 lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 4
|
||||
800908F8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 5
|
||||
800908FC srl v0,v0,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 6
|
||||
80090900 bne v0,zero,0x80090910 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 7
|
||||
80090904 clear v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 8
|
||||
80090908 j 0x80090940 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 11
|
||||
8009090C nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 12
|
||||
80090910 ismy1bytestring: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 13
|
||||
80090910 lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 14
|
||||
80090914 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 15
|
||||
80090918 andi v0,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 16
|
||||
8009091C andi v1,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 18
|
||||
80090920 beq v1,zero,0x8009092C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 19
|
||||
80090924 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 20
|
||||
80090928 addiu v0,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 21
|
||||
8009092C notand1: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 23
|
||||
8009092C sra v0,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 24
|
||||
80090930 addiu v0,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 25
|
||||
80090934 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 26
|
||||
80090938 move v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 27
|
||||
8009093C getnewchar: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 29
|
||||
8009093C addiu v1,v1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 30
|
||||
80090940 startreading: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 31
|
||||
80090940 lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 32
|
||||
80090944 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 33
|
||||
80090948 sltiu v0,v0,0x1000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 34
|
||||
8009094C bne v0,zero,0x8009093C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 35
|
||||
80090950 addiu a0,a0,0x2 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 36
|
||||
80090954 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 37
|
||||
80090958 move v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 38
|
||||
8009095C calcnextxcustom: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 41
|
||||
8009095C addiu sp,sp,-0x18 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 42
|
||||
80090960 sw ra,0x10(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 43
|
||||
80090964 lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 45
|
||||
80090968 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 46
|
||||
8009096C andi v1,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 47
|
||||
80090970 srl v0,v0,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 48
|
||||
80090974 beq v0,zero,0x80090984 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 49
|
||||
80090978 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 50
|
||||
8009097C j 0x8009098C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 51
|
||||
80090980 move v0,v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 52
|
||||
80090984 japoldtext: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 53
|
||||
80090984 jal 0x800908F4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 54
|
||||
80090988 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 55
|
||||
8009098C ihavestringlength: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 56
|
||||
8009098C sll v1,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 57
|
||||
80090990 addu v1,v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 58
|
||||
80090994 lw ra,0x10(sp) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 59
|
||||
80090998 sll v0,v1,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 60
|
||||
8009099C jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 61
|
||||
800909A0 addiu sp,sp,0x18 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 62
|
||||
800909A4 retuncharstocity: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 64
|
||||
800909A4 lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 65
|
||||
800909A8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 66
|
||||
800909AC srl v0,v0,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 67
|
||||
800909B0 bne v0,zero,0x800909C0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 68
|
||||
800909B4 clear v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 69
|
||||
800909B8 j 0x80090940 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 71
|
||||
800909BC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 72
|
||||
800909C0 ismy1bytecity: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 73
|
||||
800909C0 lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 74
|
||||
800909C4 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 75
|
||||
800909C8 andi v0,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 76
|
||||
800909CC jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 77
|
||||
800909D0 move v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 78
|
||||
800909D4 retuncharstocitydiv2: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 81
|
||||
800909D4 lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 82
|
||||
800909D8 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 83
|
||||
800909DC srl v0,v0,0xD ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 84
|
||||
800909E0 bne v0,zero,0x800909F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 85
|
||||
800909E4 clear v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 86
|
||||
800909E8 j 0x80090940 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 88
|
||||
800909EC nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 89
|
||||
800909F0 ismy1bytecitydiv2: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 90
|
||||
800909F0 lhu v0,0x0(a0) ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 91
|
||||
800909F4 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 92
|
||||
800909F8 andi v0,v0,0xFF ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 93
|
||||
800909FC andi v1,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 95
|
||||
80090A00 beq v1,zero,0x80090A0C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 96
|
||||
80090A04 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 97
|
||||
80090A08 addiu v0,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 98
|
||||
80090A0C notand1_2: ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 100
|
||||
80090A0C sra v0,v0,0x1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 101
|
||||
80090A10 jr ra ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 103
|
||||
80090A14 move v1,v0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\charCalcs.asm line 104
|
||||
80090A18 .close ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\is_main_grouped.asm line 480
|
||||
FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\\1_IS\\BIN\\SLPS_021.00"",0x8000F800; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 7
|
||||
8000F800 .org 0x8001AEF4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 49
|
||||
8001AEF4 j 0x800908F4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 50
|
||||
8001AEF8 clear v1 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 51
|
||||
8001AEFC .org 0x8001AF1C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 56
|
||||
8001AF1C j 0x8009095C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 59
|
||||
8001AF20 nop ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 60
|
||||
8001AF24 .close ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 62
|
||||
FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\\1_IS\\BIN\\1096_J_MENU_Settings_Code.bin"",0x800A2000; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 67
|
||||
800A2000 .org 0x800A2658 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 69
|
||||
800A2658 ori a1,r0,0x5C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 70
|
||||
800A265C .org 0x800A2678 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 71
|
||||
800A2678 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 72
|
||||
800A267C .org 0x800A2690 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 73
|
||||
800A2690 jal 0x8001AFC0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 74
|
||||
800A2694 .org 0x800A26AC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 77
|
||||
800A26AC jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 78
|
||||
800A26B0 .org 0x800A26E8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 79
|
||||
800A26E8 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 80
|
||||
800A26EC .org 0x800A298C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 81
|
||||
800A298C jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 82
|
||||
800A2990 .org 0x800A29B8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 83
|
||||
800A29B8 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 84
|
||||
800A29BC .org 0x800A29F4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 85
|
||||
800A29F4 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 86
|
||||
800A29F8 .org 0x800A2A44 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 87
|
||||
800A2A44 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 88
|
||||
800A2A48 .org 0x800A2D20 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 89
|
||||
800A2D20 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 90
|
||||
800A2D24 .org 0x800A2D4C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 91
|
||||
800A2D4C jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 92
|
||||
800A2D50 .org 0x800A2D7C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 93
|
||||
800A2D7C jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 94
|
||||
800A2D80 .org 0x800A3090 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 95
|
||||
800A3090 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 96
|
||||
800A3094 .org 0x800A30CC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 97
|
||||
800A30CC jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 98
|
||||
800A30D0 .org 0x800A35AC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 99
|
||||
800A35AC jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 100
|
||||
800A35B0 .org 0x800A35E0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 101
|
||||
800A35E0 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 102
|
||||
800A35E4 .org 0x800A3624 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 103
|
||||
800A3624 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 104
|
||||
800A3628 .org 0x800A3658 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 105
|
||||
800A3658 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 106
|
||||
800A365C .org 0x800A369C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 107
|
||||
800A369C jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 108
|
||||
800A36A0 .org 0x800A36D0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 109
|
||||
800A36D0 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 110
|
||||
800A36D4 .org 0x800A3704 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 111
|
||||
800A3704 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 112
|
||||
800A3708 .org 0x800A3734 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 113
|
||||
800A3734 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 114
|
||||
800A3738 .org 0x800A3BA8 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 115
|
||||
800A3BA8 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 116
|
||||
800A3BAC .org 0x800A3BDC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 117
|
||||
800A3BDC jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 118
|
||||
800A3BE0 .org 0x800A3C20 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 119
|
||||
800A3C20 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 120
|
||||
800A3C24 .org 0x800A3C4C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 121
|
||||
800A3C4C jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 122
|
||||
800A3C50 .org 0x800A3C90 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 123
|
||||
800A3C90 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 124
|
||||
800A3C94 .org 0x800A3CBC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 125
|
||||
800A3CBC jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 126
|
||||
800A3CC0 .org 0x800A4310 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 127
|
||||
800A4310 jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 128
|
||||
800A4314 .org 0x800A435C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 129
|
||||
800A435C jal 0x80090000 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 130
|
||||
800A4360 .close ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 132
|
||||
FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\\1_IS\\BIN\\1119_CITY_CODE_patched_2023.bin"",0x800AB000; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 137
|
||||
800AB000 .org 0x800AD30C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 153
|
||||
800AD30C jal 0x800909A4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 154
|
||||
800AD310 .org 0x800AD3AC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 158
|
||||
800AD3AC jal 0x800909A4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 159
|
||||
800AD3B0 .org 0x800AF1DC ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 162
|
||||
800AF1DC jal 0x8001AF1C ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 164
|
||||
800AF1E0 .close ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 167
|
||||
FFFFFFFF .open ""C:\\Users\\Sergey\\Documents\\GitHub\\Persona2-PSX-asm-sources\\1_IS\\BIN\\0001_BATTLE_CODE.bin"",0x800AB000; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 205
|
||||
800AB000 .org 0x800CA0F0 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 208
|
||||
800CA0F0 j 0x800907E4 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 214
|
||||
800CA0F4 move a0,s3 ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 215
|
||||
800CA0F8 .close ; C:\Users\Sergey\Documents\GitHub\Persona2-PSX-asm-sources\1_IS\txtpatches.asm line 217
|
||||
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
|
||||
236
1_IS/IS_charload_grouped.asm
Normal file
236
1_IS/IS_charload_grouped.asm
Normal file
@@ -0,0 +1,236 @@
|
||||
|
||||
// LOADING CHAR FROM CUSTOM FONT FOR ALL LINE
|
||||
|
||||
make_char_line_in_scratch:
|
||||
|
||||
addiu sp, sp,-0x18
|
||||
sw ra, 0x10(sp)
|
||||
sw t5, 0x14(sp)
|
||||
move t5, a0 //char num
|
||||
|
||||
sll s3, a1, 0x2 //width in bytes (sprite count * 4)
|
||||
lui t7, MyAddr
|
||||
addiu t7, -0x0c //Text buffer pointer
|
||||
|
||||
char_data_clear:
|
||||
move a1, t3 //dest address
|
||||
addiu a0, a1, 0x184
|
||||
li v0, 0
|
||||
char_data_loop:
|
||||
sw v0, 0x0(a1)
|
||||
addiu a1, 0x4
|
||||
bne a1, a0, char_data_loop
|
||||
nop
|
||||
|
||||
move s1, t3 // destination address reset
|
||||
|
||||
li a2, 0 // char index counter
|
||||
lbu v0, 0x0(t7)
|
||||
lbu t2, 0xac(gp) //load color
|
||||
addiu t7, t7, 0x01
|
||||
|
||||
lui a3, 0x1f80
|
||||
ori a3, a3,0x390 // set scratch convert addr r7 = 1f8002e0
|
||||
|
||||
|
||||
chars_font_loop:
|
||||
addiu v0, -0x20 //shift unprintable
|
||||
|
||||
beq v0, zero, spaceJump //If space (0x20 ASCII) -- bypass char
|
||||
nop
|
||||
|
||||
lui v1, 0x801f // //load font addr to r3 (801ef000 + BA00)
|
||||
ori v1, v1, 0xaa00 // ==== 801faa00
|
||||
sll t0, v0, 2 // t0 = v0 * 4
|
||||
sll v0, v0, 3 // v0 = v0 * 8
|
||||
addu v0, v0, t0 // v0 = (v0*8) + (v0*4) = v0*12
|
||||
addu t1, v0, v1 //t1 = char addr // t1 = r2(offs) + r3 (start)
|
||||
|
||||
clear t3 //new lines counter
|
||||
|
||||
char_lines_loop:
|
||||
lbu v1, 0x0(t1) //load byte of char font to r3
|
||||
nop
|
||||
beq v1, zero, zero_jump
|
||||
nop
|
||||
|
||||
its_not_empty:
|
||||
//right
|
||||
andi a0, v1, 0xf // a0 = r3 & 0f - cutting left semibyte
|
||||
sll a0, a0, 0x1 // a0 << 1
|
||||
addu a0, a0, a3 // a0 += bit table
|
||||
lhu a0, 0x0(a0) // в a0 - правый полусимвол в 4 бит
|
||||
//left
|
||||
srl a1, v1, 0x4 // r3 >> 4
|
||||
andi a1, a1, 0xf // r2 = r3 & 0f
|
||||
sll a1, a1, 0x1 // r2 << 1
|
||||
addu a1, a1, a3 // r2 = r2 + to4bitConvertTableAddr (r7)
|
||||
lhu a1, 0x0(a1)//>DAT_1f8002e0 в a1 - левый полусимвол в 4 бит
|
||||
nop
|
||||
//combine & color
|
||||
sll a1, 0x10
|
||||
or a0, a1
|
||||
mult a0, t2 //set color - сохраняем в регистре умножения готовые 4 байта
|
||||
//line dest addr calc -
|
||||
// s1(dest addr) + ((current line * (charcount * 4) + charIndex * 3))
|
||||
|
||||
//calc char index * 3
|
||||
sll a1, a2, 1
|
||||
addu a1, a1, a2
|
||||
|
||||
//getting final char line word...
|
||||
nop
|
||||
mflo t4 // t4 = final char
|
||||
|
||||
//multiplying current line * width
|
||||
mult t3, s3
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
mflo a0
|
||||
|
||||
//getting final address
|
||||
addu a0, a0, a1 // a0 = current_line * width_in_bytes + charindex * 3
|
||||
addu a0, a0, s1 // s1 = destination write address
|
||||
|
||||
andi v0, t4, 0xFF //
|
||||
sb v0, 0x00(a0) //
|
||||
|
||||
sra v0, t4, 0x08 //
|
||||
andi v0, v0, 0xFF //
|
||||
sb v0, 0x01(a0) // Byte by byte char data save in LITTLE ENDIAN
|
||||
|
||||
sra v0, t4, 0x10 // cause we are not fitting to memory words
|
||||
andi v0, v0, 0xFF //
|
||||
sb v0, 0x02(a0) //
|
||||
|
||||
addiu v0, t5, -0x1
|
||||
bne a2, v0, not_last
|
||||
andi v1, t5, 0x3
|
||||
|
||||
beq v1, zero, divideby4
|
||||
|
||||
not_last:
|
||||
sra v0, t4, 0x18 // Байт рисуется только если длина не кратна 4
|
||||
andi v0, v0, 0xFF // и это не последний байт
|
||||
sb v0, 0x03(a0) // (иначе происходит наложение байта на следующую строку)
|
||||
|
||||
divideby4:
|
||||
|
||||
zero_jump:
|
||||
addiu t3, t3, 0x01 //inc line counter
|
||||
li v0, 0x0C //line max count
|
||||
bne t3, v0, char_lines_loop //comparing...
|
||||
addiu t1, t1, 0x01 //shift char font line address
|
||||
|
||||
spaceJump:
|
||||
addiu a2, a2, 0x1 // inc char index
|
||||
lbu v0, 0x0(t7)
|
||||
addiu t7, t7, 0x01
|
||||
|
||||
beq v0, zero, sprite_end //if we read 0 - end
|
||||
nop
|
||||
|
||||
bne a2, t5, chars_font_loop // if r3 counter<>0 goto loop
|
||||
nop
|
||||
|
||||
sprite_end:
|
||||
lbu v1, 0xad(gp) // >DAT_8007b23d_textMode load curText Shadow?
|
||||
li v0, 0x1
|
||||
bne v1, v0, NotShadow //Shadow character check
|
||||
nop
|
||||
|
||||
move a0, s1
|
||||
nop
|
||||
|
||||
|
||||
make_shadow: //s3 - line width in bytes, a0 - data start
|
||||
move a1, s3 // a1 = ширина
|
||||
sll a1, 0x1 //a1 = смещение на 3 строку (ширина * 2)
|
||||
sll v0, s3, 3 //v0 = ширина строки * 8
|
||||
addu v0, a1 //v0 = ширина строки * 10
|
||||
|
||||
addu a3, a0, v0 // a3 = указатель на 10 строку
|
||||
addu a0, a1 // a0 = Указатель на 3 строку
|
||||
|
||||
lbu t1, 0xac(gp) // v0 = базовый цвет символа
|
||||
li t2, 0xf // t2 = маска 0xF для работы с 4 битами пикселя
|
||||
addiu t1, 0x1 // t1 = цвет тени (базовый цвет + 1)
|
||||
|
||||
// Основной цикл по строкам (снизу вверх)
|
||||
shadow_row_loop:
|
||||
|
||||
clear t5 //clear sprite shift counter
|
||||
|
||||
//Цикл спрайтов в строке
|
||||
shadow_sprites_loop:
|
||||
|
||||
addu t7, a3, t5 //Текущий адрес спрайта = Адрес текущей строки + смещение спрайта
|
||||
lw t0, 0x0(t7) // t0 = текущая полоса спрайта
|
||||
clear a2 // a2 = счётчик пикселей в строке (X координата)
|
||||
li a1, 0x4 // a1 = сдвиг 1 пиксель вправо (4 бита)
|
||||
|
||||
// Внутренний цикл по пикселям в строке
|
||||
shadow_pixel_loop:
|
||||
move a1, a2 // a1 = текущий X пиксель
|
||||
addiu a1, a1, 0x1 // +1 пиксель вправо
|
||||
sll a1, a1, 0x2 // ×4 (перевод в биты)
|
||||
|
||||
sll v0, a2, 0x2 // v0 = смещение исходного пикселя (X * 4)
|
||||
sllv v0, t2, v0 // v0 = маска для исходного пикселя
|
||||
and v0, t0, v0 // проверяем есть ли исходный пиксель
|
||||
beq v0, zero, no_s // если пикселя нет, пропускаем
|
||||
nop
|
||||
|
||||
//Проверяем граничный случай (8-й пиксель)
|
||||
li v0, 0x7 // последний пиксель (X = 7)
|
||||
bne a2, v0, normal_case // если не 8-й пиксель - обычная обработка
|
||||
nop
|
||||
// Граничный случай: 8-й пиксель исходного спрайта
|
||||
// Тень будет в позиции a1 = 32 (8 × 4) - это следующий word!
|
||||
addu t8, t7, s3 // адрес следующей строки
|
||||
addiu t8, t8, 0x4 // переходим к следующему word
|
||||
lw v1, 0x0(t8) // загружаем следующий word
|
||||
li v0, 0xF // маска для ПЕРВОГО пикселя в новом word
|
||||
and v0, v1, v0 // проверяем занятость (биты 0-3 нового word)
|
||||
bne v0, zero, no_s // если занято - пропускаем
|
||||
nop
|
||||
move v0, t1 // цвет тени (в биты 0-3 нового word)
|
||||
or v0, v1, v0 // добавляем тень
|
||||
sw v0, 0x0(t8) // сохраняем
|
||||
b no_s
|
||||
nop
|
||||
|
||||
normal_case:
|
||||
addu t8, t7, s3 // этот же word в следующей строке
|
||||
lw v1, 0x0(t8) // следующая строка
|
||||
sllv v0, t2, a1 // маска для пикселя тени
|
||||
and v0, v1, v0 // проверяем занятость
|
||||
bne v0, zero, no_s // если занято - пропускаем
|
||||
nop
|
||||
sllv v0, t1, a1 // цвет тени
|
||||
or v0, v1, v0 // добавляем тень
|
||||
sw v0, 0x0(t8) // сохраняем
|
||||
|
||||
no_s:
|
||||
addiu a2, a2, 0x1 // следующий пиксель
|
||||
sltiu v0, a2, 0x8 // X < 8 (все 8 пикселей!)
|
||||
bne v0, zero, shadow_pixel_loop
|
||||
nop
|
||||
|
||||
addiu t5, t5, 0x04
|
||||
bne t5, s3, shadow_sprites_loop
|
||||
nop
|
||||
|
||||
// next line
|
||||
subu a3, s3 //Двигаемся назад на ширину строки
|
||||
sltu v0, a3, a0 // проверяем вышли ли за верхнюю границу
|
||||
beq v0, zero, shadow_row_loop // продолжаем цикл по строкам
|
||||
nop
|
||||
|
||||
NotShadow:
|
||||
lw t5,0x14(sp)
|
||||
lw ra,0x10(sp) //Restore stack and exit
|
||||
move v0, s1
|
||||
jr ra
|
||||
addiu sp, sp, 0x18
|
||||
485
1_IS/IS_main_grouped.asm
Normal file
485
1_IS/IS_main_grouped.asm
Normal file
@@ -0,0 +1,485 @@
|
||||
;
|
||||
; Persona 2 Innocent Sin (PSX) JAP / Custom Characters/Data Patch
|
||||
; Author: Sergey Shemet 12/10/2021
|
||||
|
||||
.psx
|
||||
|
||||
// Определения функций
|
||||
.definelabel SetDrawTPage, 0x800542cc
|
||||
.definelabel storeColor, 0x8001b0c8
|
||||
.definelabel initCopyCharChain, 0x8001a070
|
||||
.definelabel makeCharPixels, 0x8001a08f // need custom routine with custom font
|
||||
.definelabel GenerateSmallChar, 0x8001a284 // need custom routine
|
||||
.definelabel MakeShadowSmallChar, 0x8001a20c
|
||||
.definelabel PrintBigDMAText, 0x80019300
|
||||
|
||||
.definelabel MyAddr, 0x8009
|
||||
|
||||
.open "1_IS/BIN/SLPS_021.00", 0x8000F800
|
||||
|
||||
.include "1_IS/complex_strings_copy.asm"
|
||||
|
||||
.org 0x80090000
|
||||
|
||||
ExternalPrint:
|
||||
// Текстовая тестовая процедура
|
||||
move v1, s3 // Сохраняем s3
|
||||
move s3, a0 // Устанавливаем s3 как адрес текста
|
||||
|
||||
lhu v0, 0x0(s3) // Читаем 2 байта текста
|
||||
move s3, v1 // Восстанавливаем s3
|
||||
srl v1, v0, 0xD // Проверяем 13-й бит (система 1 байт)
|
||||
bne v1, zero, MyPrintLineRoutine // Если установлен, переходим к нашей процедуре
|
||||
clear v1
|
||||
j PrintBigDMAText // Иначе используем стандартную процедуру
|
||||
nop
|
||||
|
||||
MyPrintLineRoutine:
|
||||
addiu sp, sp, -0x50 // Выделяем место в стеке
|
||||
sw ra, 0x4c(sp) // Сохраняем регистры
|
||||
sw s1, 0x2c(sp)
|
||||
sw s2, 0x30(sp)
|
||||
sw s3, 0x34(sp)
|
||||
sw s4, 0x38(sp)
|
||||
sw s5, 0x3c(sp)
|
||||
sw s6, 0x40(sp) // Сохраняем регистры
|
||||
sw s8, 0x48(sp)
|
||||
sw s7, 0x44(sp)
|
||||
|
||||
move s6, a0 // Адрес чтения текста -> s6
|
||||
move s1, a1
|
||||
move s2, a2
|
||||
|
||||
|
||||
// Смещаем поинтер чтения
|
||||
andi v0, v0, 0xff // Берем младший байт
|
||||
addiu s6, s6, 0x2 // Сдвигаем указатель текста на +2 байта
|
||||
lui s3, MyAddr
|
||||
sh v0, -0x10(s3) // Сохраняем счетчик байтов @ 8008fff0 для общего количества
|
||||
sh v0, -0x0e(s3) // Сохраняем счетчик байтов @ 8008fff2 для обратного отсчёта
|
||||
|
||||
|
||||
lui t0, 0xff
|
||||
ori t0, t0, 0xffff // t0 = 00FFFFFF
|
||||
|
||||
sw s0, 0x28(sp) // Сохраняем s0 в стеке
|
||||
andi s0, a3, 0xff // s0 - режим текста (цвет и тень)
|
||||
move a0, s0 // a0 = s0 (обрезанный цвет)
|
||||
lui a3, 0x8008 // a3 = 80080000
|
||||
lui a2, 0xff00 // a2 = FF000000
|
||||
|
||||
//Начинаем формировать цепочки
|
||||
addiu t1, a3, -0x4930 // t1 = 8007b6d0 - новая свободная цепочка
|
||||
lw v1, -0x4930(a3) // v1 = загружаем свободную цепочку
|
||||
lbu a1, 0x60(sp) // Флаг тени из стека -> a1
|
||||
lui v0, 0x8000 // v0 = 80000000
|
||||
|
||||
// Инициализация цвета и textParams
|
||||
and a2, v1, a2 // a2 = v1 & ff000000
|
||||
andi a1, a1, 0xff // Очищаем режим текста
|
||||
and v1, v1, t0 // v1 & 00ffffff
|
||||
or s4, v1, v0 // s4 - основной адрес свободной цепочки
|
||||
lw v0, 0x4(t1) // Загружаем счетчик DMA
|
||||
lw v1, 0x0(s4) // v1 = следующая свободная цепочка
|
||||
addiu v0, v0, -0x1 // Уменьшаем счетчик DMA
|
||||
and v1, v1, t0 // v1 & 00ffffff
|
||||
or a2, a2, v1 // a2 | v1 = следующая свободная цепочка
|
||||
sw v0, 0x4(t1) // Сохраняем счетчик DMA
|
||||
jal storeColor
|
||||
sw a2, -0x4930(a3) // Сохраняем следующую свободную цепочку
|
||||
move a0, s4 // Текущий адрес цепочки
|
||||
|
||||
sll a1, s1, 0x10 // a1 = X << 16
|
||||
sra a1, a1, 0x10 // a1 = X координата
|
||||
sll a2, s2, 0x10 // a2 = Y << 16
|
||||
sra a2, a2, 0x10 // a2 = Y координата
|
||||
jal initCopyCharChain // Инициализация цепочек символов
|
||||
move a3, s0 // Сохраняем режим текста
|
||||
|
||||
// Шаблон cpuToVram
|
||||
cputovram_scratchpad_template:
|
||||
lui a3, 0x1f80
|
||||
ori a3, a3, 0x0348 // a3 = первый символ начала
|
||||
|
||||
lui a1, 0x0F00 // Количество команд без flushcache
|
||||
sw a1, 0x0(a3) // Сохраняем количество команд
|
||||
|
||||
lui a0, 0xa000 // a0 = a0000000
|
||||
sw a0, 0x4(a3)
|
||||
|
||||
lui v0, 0x01f0
|
||||
ori v0, 0x0130
|
||||
sw v0, 0x8(a3) // сохраняем VU для CPUtoVRAM
|
||||
|
||||
lui v0, 0xc
|
||||
ori v0, 0x2
|
||||
sw v0, 0xc(a3) // сохраняем 000c0002
|
||||
|
||||
_1bppTo4bpp_table_template:
|
||||
// Копирование таблицы преобразования 1bpp в 4bpp
|
||||
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)
|
||||
|
||||
rect_scratchpad_template:
|
||||
// Шаблон команды rect в scratchpad
|
||||
lui s3, 0x1f80
|
||||
ori s3, 0x03d0 // s3 = 1f8003d0 - адрес rect в scratchpad
|
||||
lui v0, 0x0400
|
||||
sw v0, 0x0(s3) // Длина цепочки = 4
|
||||
lui v0, 0x6480
|
||||
ori v0, 0x8080
|
||||
sw v0, 0x4(s3)
|
||||
li v0, 0xf0c0
|
||||
sh v0, 0xc(s3) // Сохраняем координаты VU (всегда f0c0)
|
||||
lhu v1, 0xa8(gp) // Загружаем CLUT из GP (всегда 7FD3)
|
||||
|
||||
li v0, 0
|
||||
sw v0, 0x8(s3) //Чистим экранные координаты
|
||||
sh s2, 0xa(s3) //И сразу устанавливаем Y
|
||||
|
||||
lui v0, 0xc
|
||||
ori v0, 0x8 // Ширина спрайта = 8
|
||||
sw v0, 0x10(s3) // Сохраняем ширину
|
||||
sh v1, 0xe(s3) // Сохраняем CLUT
|
||||
|
||||
make_sprite_size_table:
|
||||
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)
|
||||
li v0, 0x0807
|
||||
sh v0, 0x8(s3)
|
||||
|
||||
misc_init:
|
||||
move t6, s1 // Текущий экранный X, который будет смещаться и писаться в команду rect
|
||||
// Устанавливаем, исходя из прилетевшей координаты X
|
||||
|
||||
|
||||
TextGroupReadLoop:
|
||||
// Смотрим количество символов до предела (не более 10) (проверяем MyAddr-0xE)
|
||||
// Отнимаем количество символов в MyAddr-0xE. Устанавливаем признак, если ещё не конец
|
||||
// Копируем символы во временный буфер MyAddr (-0x0с)
|
||||
|
||||
lui s3, 0x1f80
|
||||
ori s3, 0x03f0 // Перезадаём адрес таблицы количества спрайтов для нового цикла
|
||||
lui t1, MyAddr //Постоянный счётчик
|
||||
//TODO!!!!!: Динамическая длина строки для соединения с переменными!
|
||||
lh v1, -0x0e(t1) //Загружаем количество оставшихся символов
|
||||
lui t2, MyAddr //Сдвиг для буфера
|
||||
sltiu a0, v1, 0x0B //Меньше 10 в строке?
|
||||
bne a0, zero, readTextToBuffer
|
||||
clear s2 //Обнуляем счётчик символов
|
||||
li v1, 0xA //Установка максимального количество символов
|
||||
|
||||
readTextToBuffer:
|
||||
lbu a0, 0x0(s6) // Основное чтение байта текста
|
||||
addiu s6, s6, 0x1 // Сдвиг адреса чтения на +1 байт
|
||||
addiu v1, v1, -0x1 // Осталось в этом блоке...
|
||||
sb a0, -0x0c(t2) // Запись символа в буфер
|
||||
addiu s2, s2, 0x1 // Счётчик прочитанного +1
|
||||
lh v0, -0x0e(t1) // Грузим общий счётчик
|
||||
addiu t2, t2, 0x1 // Сдвиг записи +1
|
||||
addiu v0, v0, -0x01 // Общий счётчик -1
|
||||
bne v1, zero, readTextToBuffer // Проверяем частный счётчик != 0
|
||||
sh v0, -0x0e(t1) // Сохраняем общий счётчик
|
||||
|
||||
li a0, 0
|
||||
sb a0, -0x0c(t2) //На всякий случай сохраняем 00-терминатор
|
||||
|
||||
addu s3, s3, s2 // получаем адрес количества спрайтов из таблицы
|
||||
addiu s3, -0x1 // index -1
|
||||
lbu a1, 0x0(s3) // Читаем количество в a1
|
||||
nop
|
||||
move t5, a1 // Храним количество блоков для спрайта
|
||||
|
||||
lui t3, 0x1f80
|
||||
ori t3, t3, 0x1c0 // Начало данных спрайта в scratch
|
||||
|
||||
form_char_data_in_scratch:
|
||||
jal make_char_line_in_scratch //Вызываем процедуру формирования строки
|
||||
move a0, s2 //Передаём в неё длину строки в символах (a0) и в спрайтах (a1)
|
||||
// (формируем спрайт размером до 60x12)
|
||||
|
||||
rect_cmd_init:
|
||||
|
||||
lui s3, 0x1f80
|
||||
ori s3, 0x03d0 // s3 = 1f8003d0 - адрес rect в scratchpad
|
||||
|
||||
lui s1, 0x8008 // Загружаем 80080000
|
||||
addiu s5, s1, -0x4930 // s5 = 7b6d0 (временный DMA)
|
||||
lui s0, 0xff
|
||||
ori s0, s0, 0xffff // s0 = 00ffffff
|
||||
lui s7, 0x8000 // s7 = 80000000
|
||||
|
||||
//Старый неактуальный код из далёкого атлусовского прошлого
|
||||
// Инициализация координат XY
|
||||
//lw v0, 0xb0(gp) // Какой-то множитель ширины символа. В нашем случае не нужен!
|
||||
//lhu v1, 0x4(s4) // Старый счётчик символов сейчас считает спрайты
|
||||
// addiu v0, v0, 0x6 // 0x06 * 6px между буквами!
|
||||
// mult v1, v0 // v1 * v0 = смещение X * номер символа
|
||||
// addiu t3, sp, 0x10 // t3 = sp + 10
|
||||
// sh s8, 0xa(s3) // экранный Y установлен на этапе формироания rect
|
||||
|
||||
lui t2, 0xff00 // t2 = ff000000
|
||||
move t4, s4 // t4 - указатель на print params ОСНОВНОЙ
|
||||
move t1, s4 // t1 - print params для смещения страниц
|
||||
rect_set_X:
|
||||
// lhu t5, 0x20(sp) // Загружаем X из стека
|
||||
// mflo t6 // Результат умножения
|
||||
// addu v0, t5, t6 // v0 = X + смещение
|
||||
sh t6, 0x8(s3) // Сохраняем X координату в текущий rect
|
||||
|
||||
sll v0, s2, 1
|
||||
addu v0, s2 // Умножаем количество обработанных символов на 6
|
||||
sll v0, 1
|
||||
addu t6, v0 // Сдвигаем X (прочитаем со следующим блоком символов)
|
||||
rect_set_width:
|
||||
sll v0, t5, 3 //Количество блоков спрайта * 8 = ширина спрайта
|
||||
sh v0, 0x10(s3) // Сохраняем ширину спрайта
|
||||
|
||||
PageLoop:
|
||||
// Создание цепочки копирования спрайта
|
||||
lw v0, -0x4930(s1) // v0 = *адрес свободной цепочки
|
||||
nop
|
||||
and a0, v0, t2 // a0 = v0 & ff00..
|
||||
and v0, v0, s0 // v0 & 00FFFFFF
|
||||
or a1, v0, s7 // a1 = v0 | s7 (80000000)
|
||||
lw v0, 0x4(s5) // Счетчик команд
|
||||
lw v1, 0x0(a1) // Новый адрес свободной цепочки
|
||||
addiu v0, v0, -0x1 // Уменьшаем счетчик
|
||||
and v1, v1, s0 // v1 & 00FFFFFF
|
||||
or a0, a0, v1 // a0 & v1
|
||||
sw v0, 0x4(s5) // Сохраняем счетчик DMA
|
||||
sw a0, -0x4930(s1) // Сохраняем новую свободную цепочку
|
||||
|
||||
rect_copy_scratch_to_ram:
|
||||
lw t8, 0x0(s3) // Количество команд DMA
|
||||
lw t7, 0x4(s3) // Команда копирования спрайта
|
||||
sw t8, 0x0(a1)
|
||||
sw t7, 0x4(a1)
|
||||
lw a3, 0x8(s3) // Координаты экрана XY
|
||||
lw t7, 0xc(s3) // CLUT и координаты текстуры
|
||||
sw a3, 0x8(a1)
|
||||
sw t7, 0xc(a1)
|
||||
lw t8, 0x10(s3) // Размер спрайта после копирования
|
||||
nop
|
||||
sw t8, 0x10(a1) // Сохраняем последнюю команду
|
||||
|
||||
rect_scratch_connect:
|
||||
lw v1, 0x18(t1) // Следующий параметр
|
||||
lw v0, 0x0(a1) // Текущий новый адрес цепочки
|
||||
lw v1, 0x0(v1) // Загружаем значение
|
||||
and v0, v0, t2 // v0 & ff000000
|
||||
and v1, v1, s0 // v1 & 00FFFFFF
|
||||
or v0, v0, v1 // Команды с FFFFFF
|
||||
sw v0, 0x0(a1) // Обновляем текущий адрес цепочки
|
||||
|
||||
lw a0, 0x18(t1) // Первый адрес цепочки
|
||||
nop
|
||||
lw v0, 0x0(a0) // Первая ссылка цепочки на следующую
|
||||
and v1, a1, s0 // v1 = a1 & 00FFFFFF
|
||||
and v0, v0, t2 // v0 & FF000000
|
||||
or v0, v0, v1 // Последний адрес цепочки
|
||||
sw v0, 0x0(a0) // Первая цепочка следующего адреса
|
||||
sw a1, 0x18(t1) // Текущий адрес цепочки
|
||||
lhu v0, 0x4(t4) // Счетчик символов
|
||||
nop
|
||||
bne v0, zero, cpu2vram_cmd_loop // Если счетчик символов ≠ 0, переходим
|
||||
clear s8 // Сбрасываем счётчик команд спрайтов
|
||||
|
||||
sw a1, 0x28(t1) // Устанавливаем первую цепочку символов в print_params
|
||||
sw a3, 0xc(t4) // Сохраняем экранные координаты в print params
|
||||
|
||||
cpu2vram_cmd_loop:
|
||||
// Цикл команд cpu_to_vram
|
||||
|
||||
lw v0, -0x4930(s1) // Следующая свободная цепочка
|
||||
nop
|
||||
and a0, v0, t2 // a0 = v0 & FF000000
|
||||
and v0, v0, s0 // v0 & 00FFFFFF
|
||||
or a3, v0, s7 // a3 = следующая цепочка & 80...
|
||||
move a2, a3 // a2 = a3 (следующая цепочка)
|
||||
lw v0, 0x4(s5) // Счетчик команд
|
||||
lw v1, 0x0(a3) // Новый адрес свободной цепочки
|
||||
addiu v0, v0, -0x1 // Уменьшаем счетчик
|
||||
and v1, v1, s0 // v1 & 00FFFFFF
|
||||
or a0, a0, v1 // a0 & v1
|
||||
sw v0, 0x4(s5) // Сохраняем счетчик DMA
|
||||
|
||||
|
||||
|
||||
sw a0, -0x4930(s1) // Сохраняем новую свободную цепочку
|
||||
//Тут "оптимизировали" копирование в short, и сделали своё копирование со смещением спрайтов
|
||||
|
||||
lui a1, 0x1f80
|
||||
ori a1, a1, 0x348 // 1f800348 = Scratch команда cpu2vram
|
||||
lw t8, 0x0(a1)
|
||||
lw t7, 0x4(a1)
|
||||
sw t8, 0x0(a2)
|
||||
sw t7, 0x4(a2)
|
||||
lw t8, 0x8(a1) //Сохраняем базу команды cpu2vram
|
||||
lw t7, 0xc(a1)
|
||||
sw t8, 0x8(a2)
|
||||
sw t7, 0xc(a2)
|
||||
|
||||
sll v1, s8, 1 //Текущий индекс блока * 2
|
||||
addiu v0, v1, 0x130 //складываем со 0x130 (начало блока спрайта в VRAM)
|
||||
sh v0, 0x8(a2) //Обновляем VU X прямо в RAM
|
||||
copy_char_data_start:
|
||||
lui t3, 0x1f80
|
||||
ori t3, t3, 0x1c0 // Начало данных спрайта в scratch
|
||||
|
||||
addiu a2, 0x10 //Адрес для записи данных после заголовка команды
|
||||
clear v0 //Основной счётчик строк (0-11)
|
||||
|
||||
sll v1, t5, 2 //v1 = количество байт в одной строке (блоки * 4) (инкремент)
|
||||
sll a1, s8, 2 //Вычисляем смещение начала чтения
|
||||
addu a1, t3 //a1 = начинаем с него
|
||||
copy_char_data_loop:
|
||||
lw t7, 0x0(a1) //Грузим данные
|
||||
addu a1, v1 //Смещаем адрес чтения
|
||||
sw t7, 0x0(a2) //Сохраняем данные
|
||||
|
||||
addiu a2, 0x04
|
||||
addiu v0, 0x01
|
||||
bne v0, 0x0c, copy_char_data_loop
|
||||
nop
|
||||
|
||||
bne s8, zero, cpu2vram_dma_link // Если это первая команда (последняя выполняемая, то добавляем flushcache)
|
||||
nop
|
||||
|
||||
set_flush_cache_cmd:
|
||||
li t8, 0x10
|
||||
sb t8, -0x3d(a2) //Обновляем длину команды до 0x10
|
||||
lui t8, 0x0100
|
||||
sw t8, 0x0(a2) //Устанавливаем команду flush cache в конце команды
|
||||
|
||||
cpu2vram_dma_link:
|
||||
// Связывание DMA символа + копирование спрайта
|
||||
lw v1, 0x18(t1) // Текущая цепочка DMA копирования спрайта
|
||||
lw v0, 0x0(a3) // Текущие команды цепочки символов
|
||||
lw v1, 0x0(v1) // Количество команд + следующая ссылка
|
||||
and v0, v0, t2 // v0 & FF.....
|
||||
and v1, v1, s0 // v1 & 00FFFFFF
|
||||
or v0, v0, v1 // Количество команд & FF..
|
||||
sw v0, 0x0(a3) // Сохраняем текущую команду цепочки
|
||||
lw a0, 0x18(t1) // Адрес заголовка текущей команды копирования спрайта
|
||||
nop
|
||||
lw v0, 0x0(a0) // 04FFFFFF
|
||||
and v1, a3, s0 // v1 = копирование текущей цепочки символов
|
||||
and v0, v0, t2 // v0 & FF000000 (количество команд)
|
||||
or v0, v0, v1 // Полная команда со ссылкой
|
||||
sw v0, 0x0(a0) // Сохраняем с ссылкой на цепочку символов
|
||||
sw a3, 0x18(t1) // Последняя цепочка символов
|
||||
|
||||
//Конец цикла команд cpu_to_vram
|
||||
addiu s8, 0x1
|
||||
bne s8, t5, cpu2vram_cmd_loop
|
||||
nop
|
||||
|
||||
addiu t1, t1, 0x4 // Сдвигаем параметры для следующей страницы
|
||||
addiu v0, t4, 0x8 // Сдвигаем первый параметр цепочки для страницы
|
||||
sltu v0, t1, v0 // Проверяем прохождение первой страницы
|
||||
bne v0, zero, PageLoop // Если не прошли, продолжаем цикл страниц
|
||||
nop
|
||||
|
||||
chunk_making_end:
|
||||
// Увеличиваем счетчик символов + проверка
|
||||
lhu v0, 0x4(s4) // Текущее количество спрайтов
|
||||
lui t3, MyAddr
|
||||
addiu v0, v0, 0x1 // Увеличиваем на 1
|
||||
lhu v1, -0x0e(t3) // Количество оставшихся символов
|
||||
sh v0, 0x4(s4) // Сохраняем счетчик спрайтов в print_params
|
||||
|
||||
bne v1, zero, TextGroupReadLoop
|
||||
// Если обработаны все буквы и созданы все спрайты, то выходим
|
||||
nop
|
||||
|
||||
TextEnd:
|
||||
clear s2
|
||||
lui s3, 0x8008
|
||||
addiu s5, s3, -0x4930 // s5 = 7b6d0
|
||||
lui s1, 0xff
|
||||
ori s1, s1, 0xffff // s1 = 00ffffff
|
||||
move s0, s4 // s0 = текущие параметры строки
|
||||
clear a1
|
||||
|
||||
PageTLoop:
|
||||
// Завершающая обработка страниц
|
||||
li a2, 0x1 // a2 = 1
|
||||
addu s2, s2, a2 // Увеличиваем счетчик
|
||||
lui v0, 0x8000 // v0 = 80000000
|
||||
lui a0, 0xff00 // a0 = ff000000
|
||||
lw v1, -0x4930(s3) // Следующая свободная цепочка
|
||||
lw a3, 0xa4(gp) // Некоторые параметры (почти DMA)
|
||||
and v1, v1, s1 // v1 & 00FFFFFF
|
||||
or v1, v1, v0 // v1 | v0 = 80.....
|
||||
sw v1, 0x30(s0) // Сохраняем последний свободный адрес в параметрах DMA
|
||||
lw v0, -0x4930(s3) // Следующая свободная цепочка
|
||||
lw v1, 0x0(v1) // Создаем еще одну цепочку
|
||||
and v0, v0, a0 // v0 & ff000000
|
||||
and v1, v1, s1 // v1 & 00FFFFFF
|
||||
lw a0, 0x4(s5) // Счетчик DMA
|
||||
or v0, v0, v1 // v0 | v1
|
||||
sw v0, -0x4930(s3) // Новый адрес свободной цепочки
|
||||
addiu a0, a0, -0x1 // Уменьшаем счетчик DMA
|
||||
sw a0, 0x4(s5) // Сохраняем счетчик DMA
|
||||
lw a0, 0x30(s0) // Начало цепочки DMA
|
||||
jal SetDrawTPage // Устанавливаем страницу отрисовки
|
||||
addiu s0, s0, 0x4 // Сдвигаем параметры DMA для следующей страницы
|
||||
sltiu v0, s2, 0x2 // Проверяем счетчик < 2
|
||||
bne v0, zero, PageTLoop // Если да, продолжаем цикл
|
||||
clear a1 // a1 = 0
|
||||
|
||||
move v0, s4 // Возвращаем основные параметры DMA
|
||||
|
||||
// Восстанавливаем регистры из стека
|
||||
lw ra, 0x4c(sp)
|
||||
lw s8, 0x48(sp)
|
||||
lw s7, 0x44(sp)
|
||||
lw s6, 0x40(sp)
|
||||
lw s5, 0x3c(sp)
|
||||
lw s4, 0x38(sp)
|
||||
lw s3, 0x34(sp)
|
||||
lw s2, 0x30(sp)
|
||||
lw s1, 0x2c(sp)
|
||||
lw s0, 0x28(sp)
|
||||
|
||||
jr ra // Возврат
|
||||
addiu sp, sp, 0x50 // Восстанавливаем стек
|
||||
.ascii "This game was officially cracked by SERGEY SHEMET 2021-2025. WHAT ARE YOU DOING HERE, BOY?"
|
||||
.byte 0x00
|
||||
.byte 0x00
|
||||
|
||||
// Включаем дополнительные файлы
|
||||
.include "1_IS/IS_charload_grouped.asm"
|
||||
.include "1_IS/IS_battle_GG_name_render.asm"
|
||||
.include "1_IS/charCalcs.asm"
|
||||
.close
|
||||
.include "1_IS/txtpatches.asm" // misc text patches
|
||||
|
||||
|
||||
|
||||
// compile with ./armips -sym 1_IS/BUILD_LOGS/SLPS_021.00.map -temp 1_IS/BUILD_LOGS/SLPS_021.00.txt 1_IS/is_main_grouped.asm
|
||||
760
1_IS/_OLD_main.asm
Normal file
760
1_IS/_OLD_main.asm
Normal file
@@ -0,0 +1,760 @@
|
||||
;
|
||||
; Persona 2 Innocent Sin (PSX) JAP / Custom Characters/Data Patch
|
||||
;
|
||||
; Author: Sergey Shemet 12/10/2021
|
||||
|
||||
.psx
|
||||
|
||||
|
||||
|
||||
.definelabel SetDrawTPage, 0x800542cc
|
||||
.definelabel storeColor, 0x8001b0c8
|
||||
.definelabel initCopyCharChain, 0x8001a070
|
||||
.definelabel makeCharPixels, 0x8001a08f ;need custom routine with custom font
|
||||
.definelabel GenerateSmallChar, 0x8001a284 ;need custom routine
|
||||
.definelabel MakeShadowSmallChar, 0x8001a20c
|
||||
.definelabel PrintBigDMAText, 0x80019300
|
||||
|
||||
.definelabel MyAddr, 0x8009
|
||||
|
||||
|
||||
.open "SLPS_021.00", 0x8000F800
|
||||
|
||||
|
||||
.include "complex_strings_copy.asm" ;Make complex strings in battles
|
||||
|
||||
;;neeeeed to init 8008fff6 = min dma commands
|
||||
|
||||
.org 0x80090000
|
||||
ExternalPrint:
|
||||
;;;;;;;text routing test routine
|
||||
move r3,s3
|
||||
move s3,r4
|
||||
|
||||
lhu v0,0x0(s3) ;read half 2 bytes of text (r4, not s1+0c!!!!!)
|
||||
move s3,r3
|
||||
srl v1,v0,0xD ;;;;Check 13th bit (1byte system !!!)
|
||||
bne v1,zero,MyPrintLineRoutine
|
||||
clear v1
|
||||
j PrintBigDMAText
|
||||
nop
|
||||
|
||||
;;;;;;;;;;;;;;;;;MyPrintLineRoutine
|
||||
MyPrintLineRoutine:
|
||||
addiu sp,sp,-0x50
|
||||
sw s6,0x40(sp)
|
||||
move s6,r4 ;textReadAddr
|
||||
sw s1,0x2c(sp)
|
||||
move s1,r5
|
||||
sw s2,0x30(sp)
|
||||
move s2,r6
|
||||
sw s3,0x34(sp)
|
||||
clear r25 ;CURRENT TEXT MODE
|
||||
|
||||
|
||||
; NEW COMMAND OBRAB
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;lw v1,0x0(s6)
|
||||
;nop
|
||||
;v1/r3 - MyChars charcount
|
||||
andi v0,v0,0xff
|
||||
addiu s6,s6,0x2 ;Moving text read pointer +2bytes
|
||||
|
||||
|
||||
|
||||
lui s3,MyAddr
|
||||
sw v0,-0x10(s3) ;store bytecounter @ 8008fff0 and clean charCounter (8008fff2)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
lui s3,0x1f80
|
||||
ori s3,s3,0x3d0 ;s3 = 1f8003d0 - copysprite cmd in scratch
|
||||
lui t0,0xff
|
||||
ori t0,t0,0xffff ;t0 = 00FFFFFF
|
||||
|
||||
sw s0, 0x28(sp) ;save s0 in stack
|
||||
andi s0,r7,0xff ;s0 - cut textMode (color & shadow)
|
||||
move r4,s0 ;r4 = s0 (cutted color)
|
||||
lui r7, 0x8008 ;r7 = 8008 0000
|
||||
lui r6, 0xff00 ;r6 = FF000000
|
||||
|
||||
addiu t1,r7,-0x4930 ;t1 = 8007b6d0 - new free CHAIN Here
|
||||
lw v1, -0x4930(r7) ;r3/v1 = load freeChain
|
||||
lbu r5,0x60(sp) ;shadow flag from stack to r5
|
||||
lui v0,0x8000 ;r2 = 8000 0000
|
||||
sw ra,0x4c(sp)
|
||||
sw s8,0x48(sp)
|
||||
sw s7,0x44(sp)
|
||||
sw s5,0x3c(sp) ; push ra,r30,r23,31,r20
|
||||
sw s4,0x38(sp)
|
||||
;;init chains
|
||||
and r6,v1,r6 ;r6 = r3 & ff000000 = FF000000
|
||||
andi r5,r5,0xff ;clean text mode (color/shadow)
|
||||
and v1,v1,t0 ;r3 & 00ffffff
|
||||
or r20,v1,v0 ;r20 - 80...+r3 = freeChain Main Addr
|
||||
lw v0,0x4(t1) ;Load DMA Counter
|
||||
lw v1,0x0(r20) ;r3 = next free Chain
|
||||
addiu v0,v0,-0x1 ;DMA Counter-1
|
||||
and v1,v1,t0 ; r3 & r8 (00ffffff) cut f.byte
|
||||
or r6,r6,v1 ; r6 | r3 = ff+r3 = next free Chain (FF...) +
|
||||
sw v0,0x4(t1) ;save DMACounter
|
||||
jal storeColor
|
||||
sw r6,-0x4930(r7) ;SAVE next free Chain (FF...) to 7b6d0
|
||||
move r4,r20 ;currentChainAddr
|
||||
sll r5,s1,0x10 ;r5 = X<<10h (003A0000)
|
||||
sra r5,r5,0x10 ; r5=r5>>10h 0000003A
|
||||
sll r6,s2,0x10 ; r6 = Y << 10h
|
||||
sra r6,r6,0x10 ;r6>>10h - 100% clean coords
|
||||
jal initCopyCharChain ;init line chains
|
||||
move r7,s0 ;store textMode _THIS IS FOR INIT
|
||||
|
||||
;;;;init ScratchPad
|
||||
;;;;;;;;;;;;;;;;;; CPU TO VRAM
|
||||
lui r7,0x1f80
|
||||
ori r7,r7,0x348 ;r7 = FIRST CHAR START
|
||||
;lui r6,0x1f80 ;LOWER HALF OF CHAR - DONT NEED!!!
|
||||
;ori r6,r6,0x38c
|
||||
li v0,0x2
|
||||
sh v0,0x1c(sp)
|
||||
li v0,0xc
|
||||
|
||||
lui r4,0xa000 ;r4 = a000 0000
|
||||
sh v0,0x1e(sp) ; SAVE 000C0002 TO STACK+1c
|
||||
|
||||
|
||||
|
||||
; INIT CHAR
|
||||
li r5,0x10 ;cmd count 10 00 00 00 =>DAT_1f80034b
|
||||
sb r5,0x3(r7) ;SAVE 0d 00 00 00 =>DAT_1f80034c cmdcount\
|
||||
sw r4,0x4(r7); SAVE a000000 TO DAT_1f80034c
|
||||
lhu t0,0xa0(gp) ;0310 ;Load x(0310) to r8
|
||||
lhu v0,0xa2(gp) ;01f0 ;Load y(01F0)to r2
|
||||
lui v1,0x100 ;0100 0000 flushcache
|
||||
lui at,0x1f80 ;scrathcpadStart
|
||||
sw v1,0x388(at) ;save 0x01 00 00 00 to end of 1st CHAR chain
|
||||
setY1:
|
||||
move s8,s2 ; r18 to r30 (y) !!!!!!!!!!!!!!!!!!!
|
||||
lh r5,0xa0(gp) ;for futher sprite X calc
|
||||
sh t0,0x18(sp)
|
||||
sh v0,0x1a(sp) ;SAVE CONCAT 013001f0 to stack
|
||||
lw r4,0x18(sp) ;LOAD 013001f0 from stack
|
||||
lw v0,0x1c(sp) ; r2 = 000c0002 from stack
|
||||
sw r4,0x8(r7) ;SAVE 013001f0 TO SCRATCH
|
||||
sw v0,0xc(r7) ;=>DAT_1f800354 r2 - 000c0002 to 1st char (to r7+0c)
|
||||
|
||||
lui v0,0x8001 ;load 80010000 to r2
|
||||
|
||||
;4bit table pattern
|
||||
.include "4bitPattern.asm"
|
||||
|
||||
; Copy Sprite DMA Command Forming
|
||||
li v0,0x4
|
||||
sb v0,0x3(s3) ; 04 00 00 00 to 3d0 (sb 04 to 3d3) CHAIN LENGTH
|
||||
li v0,0x64
|
||||
sb v0,0x7(s3) ;sb 64 to 3d7 (copySpriteCommand)
|
||||
li v0,0x80
|
||||
sb v0,0x4(s3)
|
||||
sb v0,0x5(s3)
|
||||
sb v0,0x6(s3) ;make 80 80 80 64 (3d4,5,6,7)
|
||||
bgez r5,LAB_800194fc
|
||||
SetX1:
|
||||
sh s1,0x20(sp) ;store X half to sp+10 !!!!!!!!!!!!!!!!!
|
||||
addiu t0,r5,0x3f
|
||||
LAB_800194fc: ;decoding coords for source sprite
|
||||
sra v0,t0,0x6 ;r2 = r6 >> 6 = 4
|
||||
sll v0,v0,0x6 ;r2 << 6 = 100
|
||||
subu v0,r5,v0 ;r2 = r6 - r2 = 30
|
||||
lh v1,0xa2(gp) ;r3 = load Y half from mem
|
||||
sll v0,v0,0x2 ;r2 << 2
|
||||
sb v0,0xc(s3) ; >DAT_1f8003dc ;STORE RECT SRC CHAR SPRITE X BYTE
|
||||
bgez v1,LAB_80019520 ;if Y r3>=0 - branch & r2=r3
|
||||
move v0,v1
|
||||
addiu v0,v1,0xff ;else r2 = ff - r3
|
||||
LAB_80019520:
|
||||
sra v0,v0,0x8
|
||||
sll v0,v0,0x8
|
||||
subu v0,v1,v0
|
||||
sb v0,0xd(s3) ; >DAT_1f8003dd ;STORE RECT SRC CHAR SPRITE Y BYTE
|
||||
lhu v1,0xa8(gp)
|
||||
;DIFF BETWEEN VERSs::::::::::::::::::::::
|
||||
li v0,0x8 ; r2 = 8 Sprite WIDTH
|
||||
sh v0,0x10(s3) ; 3e0 - 0008 save
|
||||
sh v1,0xe(s3);=>DAT_1f8003de ; *3de = r3 = 7df3 CLUT of RECT
|
||||
li v0,0xc ; r2 = c Sprite HEIGTH
|
||||
sh v0,0x12(s3) ; 3e2 - 000c save
|
||||
|
||||
;TEXT READ START
|
||||
lbu r4,0x0(s6) ;MAIN READ CHAR COMMAND - Load Byte Unsigned
|
||||
nop
|
||||
addiu s6,s6,0x1 ;Shift read address +1 byte
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;CHAR CHECK CUTTED!
|
||||
lui s1,0x8008 ;load 80080000 to r17
|
||||
addiu s5,s1,-0x4930 ;r21 = r17-4930= 7b6d0 (tempDMA)
|
||||
lui s0,0xff
|
||||
ori s0,s0,0xffff ;s0 = 00 ff ff ff
|
||||
lui s7,0x8000 ;r3 = 8000 0000
|
||||
NextChar:
|
||||
addiu r4,r4,-0x20 ;Shift unprintable symbols
|
||||
|
||||
|
||||
|
||||
li t2, 0xa0 ; минимальное значение оптимизированного кода (a0+20 = 192 (Русская А))
|
||||
sltu v0,r4,t2
|
||||
bne v0, zero, NotOptimized ; проверяем на русский текст и перепрыгиваем на старый режим, если нет.
|
||||
nop
|
||||
|
||||
.include "main_spritecopy.asm"
|
||||
|
||||
|
||||
NotOptimized:
|
||||
|
||||
|
||||
;ОБРАБОТКА ПРОБЕЛОВ
|
||||
|
||||
bne r4,zero,SpaceCheckBranch ;Если не пробел - перепрыгиваем сразу
|
||||
nop
|
||||
|
||||
lui t2,MyAddr
|
||||
lh v0,-0xE(t2) ;Load my temp CHAR COUNTER for check
|
||||
nop
|
||||
lh t3,-0x10(t2)
|
||||
addiu v0,v0,1 ;overall chars+1
|
||||
beq v0,t3,SpaceCheckBranch ;is last char - пробел не проверяем!
|
||||
nop
|
||||
|
||||
sh v0,-0xE(t2) ;Save charcount += 1
|
||||
lbu r4,0x0(s6) ;LOAD NEXT CHAR
|
||||
nop
|
||||
j NextChar
|
||||
addiu s6,s6,0x1 ;Shift read address +1 byte
|
||||
|
||||
|
||||
SpaceCheckBranch:
|
||||
|
||||
|
||||
|
||||
jal makeCharPixelsCustom ;MAKE SMALL CHAR IN SCRATCH ___ CUSTOM ROUTINE
|
||||
clear r18
|
||||
|
||||
; Coords XY init
|
||||
lw v0,0xb0(gp); =>DAT_8007b240_parms load r2 from r28+0b0 (7b240)(Xoffs)
|
||||
lui t2,MyAddr
|
||||
lh v1,-0xE(t2) ;Load my temp CHAR COUNTER for check
|
||||
; lhu v1,0x4(r20) ; current char = r3 = half *DMAAddr + 4
|
||||
addiu v0,v0,0x6 ; 0x06 * 6px btw letters!
|
||||
|
||||
|
||||
mult v1,v0 ; r3*r2 = xOffs*charNum
|
||||
|
||||
|
||||
|
||||
lui t2,0xff00 ; r10 = ld upper ff00 = ff000000
|
||||
move t4,r20 ; r12 = r20 (params)
|
||||
addiu t3,sp,0x10 ; r11 = sp + 10 = 807ffe50
|
||||
move t1,r20 ; r12 = r20 (params again)
|
||||
GetY:
|
||||
sh s8,0xa(s3) ; DAT_1f8003da *r19(1st scr DMA)+0a = r30 (Y??) !!!!!!!!!!!!!!!!
|
||||
GetX:
|
||||
lhu t5,0x20(sp) ; r13 = ld half (sp+20) = 003A ---X from sp+20 !!
|
||||
mflo t6 ; r14 = lo
|
||||
addu v0,t5,t6 ; r2 = r13 + r14 = X + Offset
|
||||
sh v0,0x8(s3) ;DAT_1f8003d8 save r2 half to 1f8003d8 = X (3A) !!!!!!!!!!!!!!!!
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IF Mode is not 0 = load 2 to page counter
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
PageLoop:
|
||||
;MAKING COPYSPRITE CHAIN
|
||||
lw v0,-0x4930(s1); r2 = *freeChainAddr
|
||||
nop
|
||||
and r4,v0,t2 ; r4 = r2 & ff00..
|
||||
and v0,v0,s0 ; r2 & 00FFFFFF
|
||||
or r5,v0,s7 ; r5 = r2 or r23 (80000000) = 801ADF10
|
||||
lw v0,0x4(s5) ; CmdCounter r2 = *7b6d0+4 = 705
|
||||
lw v1,0x0(r5) ; r3 = New Free ChainAddr
|
||||
addiu v0,v0,-0x1 ; r2 -= 1 Counter Down
|
||||
and v1,v1,s0 ; r3 & 00FFFFFF cut begin byte
|
||||
or r4,r4,v1 ; r4 & r3 = ff......
|
||||
sw v0,0x4(s5) ; CmdCounter save DMA Counter
|
||||
sw r4,-0x4930(s1); freeChain save new freeChain
|
||||
CopyCmdFromScratch:
|
||||
; CopyScriptChain copy from scratch
|
||||
|
||||
|
||||
contStandartDMA:
|
||||
lui t6,0x500 ; set 4 commands in next chain
|
||||
nop
|
||||
sw t6,0x0(r5) ; set 5 commands
|
||||
nop
|
||||
lui t6, 0xe100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
ori t6,0x0234 ;;;;;;;make changepage command in every command to standart
|
||||
sw t6,0x4(r5) ;store it before all 6400000 command
|
||||
|
||||
addiu r5,4 ;SHIFT DEST ADDR
|
||||
|
||||
|
||||
lw t7,0x4(s3) ;>DAT_1f8003d4 r15 = 64808080 - CopySpriteCmd
|
||||
lw t8,0x8(s3) ;>DAT_1f8003d8 r24 = 001500d1 - xy screen coords
|
||||
lw t5,0xc(s3); >DAT_1f8003dc r13 = 7fd3f0c0 (CLUT & tex coord page)
|
||||
|
||||
sw t7,0x4(r5) ; *r5+4 = r15
|
||||
sw t8,0x8(r5) ; *r5+8 = r24
|
||||
sw t5,0xc(r5) ; *r5+c = r13
|
||||
lw t6,0x10(s3);>DAT_1f8003e0 r14 = 000c0008 - spritesize after copy
|
||||
nop
|
||||
sw t6,0x10(r5) ; *r5+10 = r14 - LAST COMMAND SAVE
|
||||
|
||||
addiu r5,-0x4 ;SHIFT DEST ADDR MINUS
|
||||
|
||||
|
||||
clear r25 ;clearing r25 (reset current chars status)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
lw v1,0x18(t1) ;r3 = *r9+18 (next param???)
|
||||
lw v0,0x0(r5) ; r2 = *cur New Chainaddr
|
||||
lw v1,0x0(v1) ; r3 = *r3
|
||||
and v0,v0,t2 ; r2 & ff000000
|
||||
and v1,v1,s0 ;r3 & 00FFFFFF
|
||||
or v0,v0,v1 ; r2 | r3 = 04FFFFFF - commands with FFFFFF
|
||||
sw v0,0x0(r5) ; *curChainAddr r5 = r2 (upd ..04 with ..FF04)
|
||||
lw r4,0x18(t1) ; r4 = *r8+18 (first chain addr?)
|
||||
nop
|
||||
lw v0,0x0(r4) ; r2 = *r4 FIRST CHAIN LINK TO NEXT??
|
||||
and v1,r5,s0 ; r3 = r5 (cur chain) & 00FFFFFF
|
||||
and v0,v0,t2 ; r2 & FF000000
|
||||
or v0,v0,v1 ; r2 | r3 = last chain adr w 10&....
|
||||
sw v0,0x0(r4) ; *r4 = r2 FIRST CHAIN NEXT ADDR???
|
||||
sw r5,0x18(t1) ;t0->t1 ; r5 = *r8+18 curChainAddr
|
||||
|
||||
|
||||
lhu v0,0x4(t4) ;t1->t4 r2 = half (DMA params)+4 (charCounter)
|
||||
nop
|
||||
bne v0,zero,NotFirstChar ; if CharCount<>0 then Goto...
|
||||
nop
|
||||
sw r5,0x28(t1) ;t0->t1 ;*curChain+28 = currentChainAddr
|
||||
sw t8,0xc(t4) ;t1->t4 ; Params+0c = save half X STORE COORDS
|
||||
|
||||
clear v0
|
||||
sb v0,0x3c(r20) ;store first char offset for moving string (is first in new type)
|
||||
;sh v0,-0x8(t4) ;store first char offset for moving string (is first in new type)
|
||||
nop
|
||||
|
||||
;sh s2,0xe(t4) ;t1->t4 ;Params+0e = save half Y
|
||||
NotFirstChar:
|
||||
lui r5,0x1f80 ;;;;;;;;;;;;;;;;;;;;;;;ADDRESS OF CHAR HERe ---> SLL CHARNUM, 6
|
||||
|
||||
lw v0,-0x4930(s1);>8007b6d0_freeChain r2 = *nextFreeChain
|
||||
ori r5,r5,0x348 ; r5 | 1f800348 = Scratch CharData
|
||||
and r4,v0,t2 ; r4 = r2 & FF000000
|
||||
and v0,v0,s0 ; r2 & 00FFFFFF
|
||||
or r7,v0,s7 ;t4->s7 (800...) ; r7 = r2 | r12 = nextChain & 80...
|
||||
move r6,r7 ; r6 = r7 (nextChain)
|
||||
lw v0,0x4(s5) ; CmdCounter r2 = DMA Counter
|
||||
lw v1,0x0(r7) ; r3 = New Free ChainAddr / currHeader Addr
|
||||
addiu v0,v0,-0x1 ; r2 -= 1 Counter Down
|
||||
and v1,v1,s0 ; r3 & 00FFFFFF cut commandCount / currHeader
|
||||
or r4,r4,v1 ; r4 & r3 = ff......
|
||||
sw v0,0x4(s5);>DAT_8007b6d4_CmdCounter save DMA Counter
|
||||
andi v0,r7,0x3 ; r2 = r7 & 3 (check destAddr MOD 4)
|
||||
|
||||
lui t3,0x1f80
|
||||
ori t3,t3,0x388 ; Scratch DMAChain CharEndAddr
|
||||
|
||||
beq v0,zero,Copy16Bytes ; if r7 MOD 4 = 0 then Branch
|
||||
sw r4,-0x4930(s1);>8007b6d0_freeChain save new freeChain
|
||||
|
||||
;;;;;;;;;;;;;;;Copy from ScratchPad To Chain
|
||||
|
||||
CopyBy2Bytes:
|
||||
lwl t6,0x3(r5) ; if r7 mod4 <> 0 - копируем по 2 байта
|
||||
lwr t6,0x0(r5);>DAT_1f800348
|
||||
lwl t7,0x7(r5)
|
||||
lwr t7,0x4(r5);>DAT_1f80034c
|
||||
lwl t8,0xb(r5)
|
||||
lwr t8,0x8(r5);>DAT_1f800350
|
||||
lwl t5,0xf(r5)
|
||||
lwr t5,0xc(r5);>DAT_1f800354
|
||||
swl t6,0x3(r6)
|
||||
swr t6,0x0(r6)
|
||||
swl t7,0x7(r6)
|
||||
swr t7,0x4(r6)
|
||||
swl t8,0xb(r6)
|
||||
swr t8,0x8(r6)
|
||||
swl t5,0xf(r6)
|
||||
swr t5,0xc(r6)
|
||||
addiu r5,r5,0x10
|
||||
bne r5,t3,CopyBy2Bytes
|
||||
addiu r6,r6,0x10
|
||||
j last4BytesCopy
|
||||
nop
|
||||
Copy16Bytes:
|
||||
lw t6,0x0(r5);>DAT_1f800348 r5 - curScratchAddr,r6 -cur DMAAddr
|
||||
lw t7,0x4(r5)
|
||||
lw t8,0x8(r5)
|
||||
lw t5,0xc(r5)
|
||||
sw t6,0x0(r6)
|
||||
sw t7,0x4(r6)
|
||||
sw t8,0x8(r6)
|
||||
sw t5,0xc(r6)
|
||||
addiu r5,r5,0x10
|
||||
bne r5,t3,Copy16Bytes
|
||||
addiu r6,r6,0x10
|
||||
last4BytesCopy:
|
||||
lwl t6,0x3(r5) ; r14 left = 2 bytes from *r5+3
|
||||
lwr t6,0x0(r5);>DAT_1f800358 r14 right = 2 bytes from *r5
|
||||
nop
|
||||
swl t6,0x3(r6) ; *r6 = r14 left
|
||||
swr t6,0x0(r6) ; *r6+3 = r14 right
|
||||
; linking DMA char+copysprite
|
||||
|
||||
|
||||
lw v1,0x18(t1) ; r3 = current DMACopySprite Chain
|
||||
lw v0,0x0(r7) ; r2 = current CharChainCommands
|
||||
lw v1,0x0(v1) ; r3 = *r3 (comNum+FFFFFF(nextLink))
|
||||
and v0,v0,t2 ; r2 & FF.....
|
||||
and v1,v1,s0 ; r3 & 00FFFFFF
|
||||
or v0,v0,v1 ; r2 | r3 = 10FFFFFF(cmdNum&FF..)
|
||||
sw v0,0x0(r7) ; *r7 = r2 saveCurChainCmd
|
||||
lw r4,0x18(t1) ; r4 = r8+18h - cur CopySpriteCmd hdrAddr
|
||||
nop
|
||||
lw v0,0x0(r4) ; r2 = *r4 (04FFFFFF)
|
||||
and v1,r7,s0 ; r3 = r7 & 00FFFFFF (Copying Cur Char Chain)
|
||||
and v0,v0,t2 ; r2 & FF000000 (04000000) CmdCount
|
||||
or v0,v0,v1 ; R2 | R3 = 04(cmd)..+CharChainAddr
|
||||
sw v0,0x0(r4) ; *r4 = r2 = FullCommand With Link!!!
|
||||
; (04..CharAddr) + SpriteCopyCommand
|
||||
sw r7,0x18(t1) ; *r8+18 = Last Char Chain!
|
||||
addiu t1,t1,0x4 ; r8 (params) += 4 (shift params for NextPage)
|
||||
addiu v0,t4,0x8 ; r2 = r9+8 (shift first chain param for Page)
|
||||
sltu v0,t1,v0 ; r2 = r8 < r2(r9+8) (first page pass)
|
||||
bne v0,zero,PageLoop ; if r2<>0 (r8<r2) then goto Next Page Loop
|
||||
nop
|
||||
|
||||
|
||||
|
||||
OptimizedSpriteCopyEnd:
|
||||
|
||||
;;;CharCount + Check
|
||||
lhu v0,0x4(r20) ; r2 = current charDMACount
|
||||
nop
|
||||
addiu v0,v0,0x1 ; a += 1
|
||||
sh v0,0x4(r20) ;save DMAcounter to chain
|
||||
nop
|
||||
|
||||
|
||||
;DMA OVERFLOW CHECK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (8007b6d4)
|
||||
lui t3,MyAddr
|
||||
lw v0,0x4(s5) ; CmdCounter r2 = DMA Counter
|
||||
lhu v1,-0xC(t3) ;v1 = 8008fff4 = minimum cmd counter
|
||||
nop
|
||||
sltu v0,v0,v1 ; v0 = v0 < V1 ?
|
||||
bne v0,zero,TextEnd ;if v0<>0 then Goto End Text (DMA OVERFLOW!!!!)
|
||||
nop
|
||||
|
||||
|
||||
|
||||
|
||||
;lui t3,MyAddr
|
||||
lhu v0,-0xE(t3) ; r2 = charCount In string
|
||||
lhu v1,-0x10(t3) ; r3 = My charOverAll In string
|
||||
addiu v0,v0,0x1 ; a += 1
|
||||
lbu r4,0x0(s6) ; load next Char to r4 (byte)
|
||||
|
||||
sh v0,-0xE(t3) ; store myCharCounter to MyAddr-E
|
||||
addiu s6,s6,0x1 ;Shift CharAddr
|
||||
|
||||
bne v0,v1,NextChar ; if currentChar<>OverallChar - branch
|
||||
nop
|
||||
TextEnd:
|
||||
clear r18
|
||||
lui s3,0x8008
|
||||
addiu s5,s3,-0x4930 ; r19 = 80080000, r21 = 7b6d0
|
||||
lui s1,0xff ; r17 = 00ff0000
|
||||
ori s1,s1,0xffff ; r17 & ffff = 00ff ffff
|
||||
move s0,r20 ; r16 = r20 (currentTLineParam)
|
||||
clear r5
|
||||
clear r25 ;clearing r25 (reset current chars status)
|
||||
PageTLoop: ;ALMOST FINISH!!!!
|
||||
li r6,0x1 ; r6=1
|
||||
addu r18,r18,r6 ; r18(Counter) += r6
|
||||
lui v0,0x8000 ; r2 = 80000000
|
||||
lui r4,0xff00 ; r4 = ff00 0000
|
||||
lw v1,-0x4930(s3);>8007b6d0_freeChain r3 = next free Chain (*7b6d0)
|
||||
;;;;;;;;;;;;;;;;
|
||||
lw r7,0xa4(gp);>DAT_8007b234 r7 = Texture page = 34
|
||||
beq r25,zero, lastTextPageDefaul
|
||||
nop
|
||||
li r7,0x3f ;IF MODE<>0 then TexturePage = 23F
|
||||
;;;;;;;;;;;;;;;''
|
||||
lastTextPageDefaul:
|
||||
|
||||
and v1,v1,s1 ; r3 & 00FFFFFF
|
||||
or v1,v1,v0 ; r3 | r2 = 80.....
|
||||
sw v1,0x30(s0) ; store last free ChAddr to DMAParams
|
||||
lw v0,-0x4930(s3);>8007b6d0_freeChain r2 = next free chain
|
||||
lw v1,0x0(v1) ; r3 = *r3 = last chain - made one more chain
|
||||
and v0,v0,r4 ; a2 & ff000000
|
||||
and v1,v1,s1 ; r3 & 00FFFFFF
|
||||
lw r4,0x4(s5);>DAT_8007b6d4_CmdCounter r4 = DMA Counter
|
||||
or v0,v0,v1 ; r2 | r3
|
||||
sw v0,-0x4930(s3);>8007b6d0_freeChain new free chain addr add to *7b6b0
|
||||
addiu r4,r4,-0x1 ; DMA Cunter =- 1
|
||||
sw r4,0x4(s5);>DAT_8007b6d4_CmdCounter Store DMA Count
|
||||
lw r4,0x30(s0) ; r4 = *DMA params + 30 = Start Of DMA Chain
|
||||
jal SetDrawTPage ; Set DRAW PAGE
|
||||
addiu s0,s0,0x4 ; r16 += 4 - Shgift DMAParams for next Page
|
||||
sltiu v0,r18,0x2 ; r2 = r18<2
|
||||
bne v0,zero,PageTLoop ; if not r2 then goto Loop
|
||||
clear r5 ; r5 = 0
|
||||
move v0,r20 ; r2 = DMAParamsMain
|
||||
|
||||
lw ra,0x4c(sp)
|
||||
lw s8,0x48(sp)
|
||||
lw s7,0x44(sp)
|
||||
lw s6,0x40(sp)
|
||||
lw s5,0x3c(sp) ;restoring regs from Stack
|
||||
lw s4,0x38(sp)
|
||||
lw s3,0x34(sp)
|
||||
lw s2,0x30(sp)
|
||||
lw s1,0x2c(sp)
|
||||
lw s0,0x28(sp)
|
||||
|
||||
jr ra
|
||||
addiu sp,sp,0x50
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chars / 2 Return Func
|
||||
|
||||
.include "charload.asm"
|
||||
|
||||
.include "charCalcs.asm"
|
||||
|
||||
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 0x8001a7dc
|
||||
;;;;;text patch for Text MOVING & OFFSET
|
||||
|
||||
|
||||
;make branch videocomand reading
|
||||
|
||||
|
||||
chainSpriteCheck:
|
||||
lbu v1,0x7(r5)
|
||||
li r27, 0xe1
|
||||
beq r27, v1, ShiftedCommandCheck
|
||||
nop
|
||||
j 0x8001a7e4 ;return
|
||||
nop
|
||||
|
||||
ShiftedCommandCheck:
|
||||
lbu v1,0xb(r5) ;my new shifted sprite command
|
||||
li r27, 0x64
|
||||
beq r27, v1, ShiftedCommandCheck2
|
||||
nop
|
||||
lbu v1,0x7(r5)
|
||||
nop
|
||||
j 0x8001a7e4 ;return
|
||||
nop
|
||||
|
||||
ShiftedCommandCheck2:
|
||||
lbu v1,0xb(r5)
|
||||
|
||||
goingback:
|
||||
j 0x8001a7e4 ;return
|
||||
nop
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 0x8001aa8c
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;text patch for Text MOVING & OFFSET
|
||||
getRightCoords:
|
||||
; lw r5, 0x28(t1) ;get chain addr from params
|
||||
;lhu r3, 0xc(t2) ;get X from params
|
||||
|
||||
lbu r4,0x7(r5)
|
||||
li r2,0xe1 ;if my new 5 commands?
|
||||
|
||||
bne r2,r4,oldStyleCommand
|
||||
nop
|
||||
addiu r5,4
|
||||
|
||||
oldStyleCommand:
|
||||
lhu r2, 0x8(r5) ;getting cur x (r5 is chain addr) --------!
|
||||
lhu r4, 0xe(t2) ;;getting Y from param
|
||||
subu r3,r3,r2 ; get X offset
|
||||
move r12,r3 ; Saving X offset in r12
|
||||
lhu r2, 0xa(r5) ;getting cur y from chain ----------!
|
||||
sll r3,r3,0x10 ;Shift r3 <<< 10 bits
|
||||
;add r2,r23 ;add
|
||||
subu r2,r4,r2 ;get Y offset
|
||||
|
||||
;clear r23
|
||||
returnToInnocence:
|
||||
j 0x8001aaa8 ;continue!
|
||||
nop
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 0x8001ab2c
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
|
||||
movesprite:
|
||||
lbu r2,0x07(r4)
|
||||
nop
|
||||
beq r2, t7, simpleSpriteCmd ;if r2 == t7 = 64
|
||||
nop
|
||||
beq r2, t6, simpleSpriteCmd ;if r2 == t6 = 66 --simple move
|
||||
nop
|
||||
li r3, 0xe1
|
||||
beq r2, r3, IsThisMyChain ;ReallyMyChain
|
||||
nop
|
||||
j exitmovesprite
|
||||
nop
|
||||
|
||||
ReallyMyChain:
|
||||
lbu r2,0x03(r4)
|
||||
li r3, 0x05
|
||||
beq r2, r3, IsThisMyChain
|
||||
nop
|
||||
j exitmovesprite
|
||||
nop
|
||||
|
||||
IsThisMyChain:
|
||||
lbu r2,0x0b(r4)
|
||||
nop
|
||||
beq r2, t7, notSimpleSpriteCommand ;is this my E1 + 64?
|
||||
nop
|
||||
j exitmovesprite
|
||||
nop
|
||||
|
||||
notSimpleSpriteCommand:
|
||||
lbu r3,0x3c(t2) ;get offset X
|
||||
lhu r2,0x0c(r4)
|
||||
sra r3, r3, 0x4 ;shift 12 >> 4 = 1 pix (OR 0)
|
||||
addu r2,r2,t4
|
||||
addu r2,r2,r3 ;adding myMainOffset X
|
||||
sh r2,0xC(r4)
|
||||
|
||||
lbu r2,0x3c(t2) ;get offset Y
|
||||
lhu r3,0xE(r4)
|
||||
andi r2, r2, 0xF ;get Y offset
|
||||
addu r3,r3,t3
|
||||
addu r3,r3,r2 ;adding myMainOffset
|
||||
;addiu r3,r3,2
|
||||
|
||||
sh r3,0xE(r4)
|
||||
nop
|
||||
j exitmovesprite
|
||||
nop
|
||||
|
||||
simpleSpriteCmd:
|
||||
lhu r2,0x8(r4)
|
||||
lhu r3,0xA(r4)
|
||||
addu r2,r2,t4
|
||||
addu r3,r3,t3
|
||||
sh r2,0x8(r4)
|
||||
sh r3,0xA(r4)
|
||||
nop
|
||||
exitmovesprite:
|
||||
|
||||
j 0x8001ab5c ;EXIT TO MAIN routine
|
||||
|
||||
;;;;;;;;;;;;;;
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SET TEXT BRIGHTNESS
|
||||
|
||||
setTextBrightness:
|
||||
lbu r2,0x07(v1)
|
||||
nop
|
||||
beq r2, t1, simpleBright ;if r2 == t7 = 64
|
||||
nop
|
||||
beq r2, t0, simpleBright ;if r2 == t6 = 66 --simple move
|
||||
nop
|
||||
li r15, 0xe1
|
||||
beq r2, r15, ItsMyBrigth1 ;ReallyMyChain
|
||||
nop
|
||||
j exitbrightsprite
|
||||
nop
|
||||
|
||||
|
||||
ItsMyBrigth1:
|
||||
lbu r2,0x0b(v1)
|
||||
nop
|
||||
beq r2, t1, ItsMyBrigthMake ;is this my E1 + 64?
|
||||
nop
|
||||
j exitbrightsprite
|
||||
nop
|
||||
|
||||
ItsMyBrigthMake:
|
||||
sb s1,0x8(v1)
|
||||
sb s2,0x9(v1)
|
||||
sb s3,0xa(v1)
|
||||
j 0x8001ad6c
|
||||
nop
|
||||
|
||||
simpleBright:
|
||||
sb s1,0x4(v1)
|
||||
sb s2,0x5(v1)
|
||||
sb s3,0x6(v1)
|
||||
|
||||
exitbrightsprite:
|
||||
j 0x8001ad6c
|
||||
nop
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;Patching main code
|
||||
.org 0x8001a7dc
|
||||
;lbu v1,0x7(r5) ;- ORIGINAL load current command
|
||||
j chainSpriteCheck
|
||||
nop
|
||||
|
||||
.org 0x8001aa8c
|
||||
;lhu r2, 0x8(r5) ;getting cur x (r5 is chain addr) --------!
|
||||
;lhu r4, 0xe(t2) ;;getting Y from prarm param
|
||||
j getRightCoords
|
||||
nop
|
||||
|
||||
.org 0x8001ab2c
|
||||
;lbu v0,0x07(a0)
|
||||
j movesprite ;movingsprite routine
|
||||
nop
|
||||
|
||||
|
||||
.org 0x8001ad48
|
||||
;lbu v0,0x07(a1)
|
||||
j setTextBrightness ;textbrightness routine
|
||||
nop
|
||||
.close
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;; BOSSNAMECOPY
|
||||
;.include "battle_patch.asm"
|
||||
|
||||
|
||||
|
||||
|
||||
.include "txtpatches.asm" ;misc text patches
|
||||
|
||||
; COMPILE COMMAND: ./armips -temp 123 main.asm
|
||||
470
1_IS/_OLD_main_before_FINAL_optimization.asm
Normal file
470
1_IS/_OLD_main_before_FINAL_optimization.asm
Normal file
@@ -0,0 +1,470 @@
|
||||
;
|
||||
; Persona 2 Innocent Sin (PSX) JAP / Custom Characters/Data Patch
|
||||
;
|
||||
; Author: Sergey Shemet 12/10/2021
|
||||
|
||||
.psx
|
||||
|
||||
|
||||
|
||||
.definelabel SetDrawTPage, 0x800542cc
|
||||
.definelabel storeColor, 0x8001b0c8
|
||||
.definelabel initCopyCharChain, 0x8001a070
|
||||
.definelabel makeCharPixels, 0x8001a08f ;need custom routine with custom font
|
||||
.definelabel GenerateSmallChar, 0x8001a284 ;need custom routine
|
||||
.definelabel MakeShadowSmallChar, 0x8001a20c
|
||||
.definelabel PrintBigDMAText, 0x80019300
|
||||
|
||||
.definelabel MyAddr, 0x8009
|
||||
|
||||
|
||||
.open "SLPS_021.00", 0x8000F800
|
||||
|
||||
|
||||
.include "complex_strings_copy.asm" ;Make complex strings in battles
|
||||
|
||||
|
||||
|
||||
.org 0x80090000
|
||||
ExternalPrint:
|
||||
;;;;;;;text routing test routine
|
||||
move r3,s3
|
||||
move s3,r4
|
||||
|
||||
lhu v0,0x0(s3) ;read half 2 bytes of text (r4, not s1+0c!!!!!)
|
||||
move s3,r3
|
||||
srl v1,v0,0xD ;;;;Check 13th bit (1byte system !!!)
|
||||
bne v1,zero,MyPrintLineRoutine
|
||||
clear v1
|
||||
j PrintBigDMAText
|
||||
nop
|
||||
|
||||
;;;;;;;;;;;;;;;;;MyPrintLineRoutine
|
||||
MyPrintLineRoutine:
|
||||
addiu sp,sp,-0x50
|
||||
sw s6,0x40(sp)
|
||||
move s6,r4 ;textReadAddr
|
||||
sw s1,0x2c(sp)
|
||||
move s1,r5
|
||||
sw s2,0x30(sp)
|
||||
move s2,r6
|
||||
sw s3,0x34(sp)
|
||||
|
||||
; NEW COMMAND OBRAB
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;lw v1,0x0(s6)
|
||||
;nop
|
||||
;v1/r3 - MyChars charcount
|
||||
andi v0,v0,0xff
|
||||
addiu s6,s6,0x2 ;Moving text read pointer +2bytes
|
||||
|
||||
|
||||
|
||||
lui s3,MyAddr
|
||||
sw v0,-0x10(s3) ;store bytecounter @ 8008fff0 and clean charCounter (8008fff2)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
lui s3,0x1f80
|
||||
ori s3,s3,0x3d0 ;s3 = 1f8003d0 - copysprite cmd in scratch
|
||||
lui t0,0xff
|
||||
ori t0,t0,0xffff ;t0 = 00FFFFFF
|
||||
|
||||
sw s0, 0x28(sp) ;save s0 in stack
|
||||
andi s0,r7,0xff ;s0 - cut textMode (color & shadow)
|
||||
move r4,s0 ;r4 = s0 (cutted color)
|
||||
lui r7, 0x8008 ;r7 = 8008 0000
|
||||
lui r6, 0xff00 ;r6 = FF000000
|
||||
|
||||
addiu t1,r7,-0x4930 ;t1 = 8007b6d0 - new free CHAIN Here
|
||||
lw v1, -0x4930(r7) ;r3/v1 = load freeChain
|
||||
lbu r5,0x60(sp) ;shadow flag from stack to r5
|
||||
lui v0,0x8000 ;r2 = 8000 0000
|
||||
sw ra,0x4c(sp)
|
||||
sw s8,0x48(sp)
|
||||
sw s7,0x44(sp)
|
||||
sw s5,0x3c(sp) ; push ra,r30,r23,31,r20
|
||||
sw s4,0x38(sp)
|
||||
;;init chains
|
||||
and r6,v1,r6 ;r6 = r3 & ff000000 = FF000000
|
||||
andi r5,r5,0xff ;clean text mode (color/shadow)
|
||||
and v1,v1,t0 ;r3 & 00ffffff
|
||||
or r20,v1,v0 ;r20 - 80...+r3 = freeChain Main Addr
|
||||
lw v0,0x4(t1) ;Load DMA Counter
|
||||
lw v1,0x0(r20) ;r3 = next free Chain
|
||||
addiu v0,v0,-0x1 ;DMA Counter-1
|
||||
and v1,v1,t0 ; r3 & r8 (00ffffff) cut f.byte
|
||||
or r6,r6,v1 ; r6 | r3 = ff+r3 = next free Chain (FF...) +
|
||||
sw v0,0x4(t1) ;save DMACounter
|
||||
jal storeColor
|
||||
sw r6,-0x4930(r7) ;SAVE next free Chain (FF...) to 7b6d0
|
||||
move r4,r20 ;currentChainAddr
|
||||
sll r5,s1,0x10 ;r5 = X<<10h (003A0000)
|
||||
sra r5,r5,0x10 ; r5=r5>>10h 0000003A
|
||||
sll r6,s2,0x10 ; r6 = Y << 10h
|
||||
sra r6,r6,0x10 ;r6>>10h - 100% clean coords
|
||||
jal initCopyCharChain ;init line chains
|
||||
move r7,s0 ;store textMode _THIS IS FOR INIT
|
||||
|
||||
;;;;init ScratchPad
|
||||
;;;;;;;;;;;;;;;;;; CPU TO VRAM
|
||||
lui r7,0x1f80
|
||||
ori r7,r7,0x348 ;r7 = FIRST CHAR START
|
||||
;lui r6,0x1f80 ;LOWER HALF OF CHAR - DONT NEED!!!
|
||||
;ori r6,r6,0x38c
|
||||
li v0,0x2
|
||||
sh v0,0x1c(sp)
|
||||
li v0,0xc
|
||||
|
||||
lui r4,0xa000 ;r4 = a000 0000
|
||||
sh v0,0x1e(sp) ; SAVE 000C0002 TO STACK+1c
|
||||
|
||||
|
||||
|
||||
; INIT CHAR
|
||||
li r5,0x10 ;cmd count 10 00 00 00 =>DAT_1f80034b
|
||||
sb r5,0x3(r7) ;SAVE 0d 00 00 00 =>DAT_1f80034c cmdcount\
|
||||
sw r4,0x4(r7); SAVE a000000 TO DAT_1f80034c
|
||||
lhu t0,0xa0(gp) ;0310 ;Load x(0310) to r8
|
||||
lhu v0,0xa2(gp) ;01f0 ;Load y(01F0)to r2
|
||||
lui v1,0x100 ;0100 0000 flushcache
|
||||
lui at,0x1f80 ;scrathcpadStart
|
||||
sw v1,0x388(at) ;save 0x01 00 00 00 to end of 1st CHAR chain
|
||||
setY1:
|
||||
move s8,s2 ; r18 to r30 (y) !!!!!!!!!!!!!!!!!!!
|
||||
lh r5,0xa0(gp) ;for futher sprite X calc
|
||||
sh t0,0x18(sp)
|
||||
sh v0,0x1a(sp) ;SAVE CONCAT 013001f0 to stack
|
||||
lw r4,0x18(sp) ;LOAD 013001f0 from stack
|
||||
lw v0,0x1c(sp) ; r2 = 000c0002 from stack
|
||||
sw r4,0x8(r7) ;DAT_1f800350 load r4 (upper coord 01f6) to r7+8 (DMA)
|
||||
sw v0,0xc(r7) ;=>DAT_1f800354 r2 - 000c0002 to 1st char (to r7+0c)
|
||||
|
||||
lui v0,0x8001 ;load 80010000 to r2
|
||||
|
||||
;4bit table pattern
|
||||
.include "4bitPattern.asm"
|
||||
|
||||
; Copy Sprite DMA Command Forming
|
||||
li v0,0x4
|
||||
sb v0,0x3(s3) ; 04 00 00 00 to 3d0 (sb 04 to 3d3) CHAIN LENGTH
|
||||
li v0,0x64
|
||||
sb v0,0x7(s3) ;sb 64 to 3d7 (copySpriteCommand)
|
||||
li v0,0x80
|
||||
sb v0,0x4(s3)
|
||||
sb v0,0x5(s3)
|
||||
sb v0,0x6(s3) ;make 80 80 80 64 (3d4,5,6,7)
|
||||
bgez r5,LAB_800194fc
|
||||
SetX1:
|
||||
sh s1,0x20(sp) ;store X half to sp+10 !!!!!!!!!!!!!!!!!
|
||||
addiu t0,r5,0x3f
|
||||
LAB_800194fc: ;decoding coords for source sprite
|
||||
sra v0,t0,0x6 ;r2 = r6 >> 6 = 4
|
||||
sll v0,v0,0x6 ;r2 << 6 = 100
|
||||
subu v0,r5,v0 ;r2 = r6 - r2 = 30
|
||||
lh v1,0xa2(gp) ;r3 = load Y half from mem
|
||||
sll v0,v0,0x2 ;r2 << 2
|
||||
sb v0,0xc(s3) ; >DAT_1f8003dc ;STORE CHAR SPRITE X BYTE
|
||||
bgez v1,LAB_80019520 ;if Y r3>=0 - branch & r2=r3
|
||||
move v0,v1
|
||||
addiu v0,v1,0xff ;else r2 = ff - r3
|
||||
LAB_80019520:
|
||||
sra v0,v0,0x8
|
||||
sll v0,v0,0x8
|
||||
subu v0,v1,v0
|
||||
sb v0,0xd(s3) ; >DAT_1f8003dd ;STORE CHAR SPRITE Y BYTE
|
||||
lhu v1,0xa8(gp)
|
||||
;DIFF BETWEEN VERSs::::::::::::::::::::::
|
||||
li v0,0x8 ; r2 = 8 Sprite WIDTH
|
||||
sh v0,0x10(s3) ; 3e0 - 0008 save
|
||||
sh v1,0xe(s3);=>DAT_1f8003de ; *3de = r3 = 7df3
|
||||
li v0,0xc ; r2 = c Sprite HEIGTH
|
||||
sh v0,0x12(s3) ; 3e2 - 000c save
|
||||
|
||||
;TEXT READ START
|
||||
lbu r4,0x0(s6) ;MAIN READ CHAR COMMAND - Load Byte Unsigned
|
||||
nop
|
||||
addiu s6,s6,0x1 ;Shift read address +1 byte
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;CHAR CHECK CUTTED!
|
||||
lui s1,0x8008 ;load 80080000 to r17
|
||||
addiu s5,s1,-0x4930 ;r21 = r17-4930= 7b6d0 (tempDMA)
|
||||
lui s0,0xff
|
||||
ori s0,s0,0xffff ;s0 = 00 ff ff ff
|
||||
lui s7,0x8000 ;r3 = 8000 0000
|
||||
NextChar:
|
||||
addiu r4,r4,-0x20 ;Shift unprintable symbols
|
||||
|
||||
|
||||
;ОБРАБОТКА ПРОБЕЛОВ
|
||||
|
||||
bne r4,zero,SpaceCheckBranch ;Если не пробел - перепрыгиваем сразу
|
||||
nop
|
||||
|
||||
lui t2,MyAddr
|
||||
lh v0,-0xE(t2) ;Load my temp CHAR COUNTER for check
|
||||
nop
|
||||
lh t3,-0x10(t2)
|
||||
addiu v0,v0,1 ;overall chars+1
|
||||
beq v0,t3,SpaceCheckBranch ;is last char - пробел не проверяем!
|
||||
nop
|
||||
|
||||
sh v0,-0xE(t2) ;Save charcount += 1
|
||||
lbu r4,0x0(s6) ;LOAD NEXT CHAR
|
||||
nop
|
||||
j NextChar
|
||||
addiu s6,s6,0x1 ;Shift read address +1 byte
|
||||
|
||||
|
||||
SpaceCheckBranch:
|
||||
|
||||
jal makeCharPixelsCustom ;MAKE SMALL CHAR IN SCRATCH ___ CUSTOM ROUTINE
|
||||
clear r18
|
||||
|
||||
; Coords XY init
|
||||
lw v0,0xb0(gp); =>DAT_8007b240_parms load r2 from r28+0b0 (7b240)(Xoffs)
|
||||
lui t2,MyAddr
|
||||
lh v1,-0xE(t2) ;Load my temp CHAR COUNTER for check
|
||||
; lhu v1,0x4(r20) ; current char = r3 = half *DMAAddr + 4
|
||||
addiu v0,v0,0x6 ; 0x06 * 6px btw letters!
|
||||
|
||||
|
||||
mult v1,v0 ; r3*r2 = xOffs*charNum
|
||||
|
||||
|
||||
|
||||
lui t2,0xff00 ; r10 = ld upper ff00 = ff000000
|
||||
move t4,r20 ; r12 = r20 (params)
|
||||
addiu t3,sp,0x10 ; r11 = sp + 10 = 807ffe50
|
||||
move t1,r20 ; r12 = r20 (params again)
|
||||
GetY:
|
||||
sh s8,0xa(s3) ; DAT_1f8003da *r19(1st scr DMA)+0a = r30 (Y??) !!!!!!!!!!!!!!!!
|
||||
GetX:
|
||||
lhu t5,0x20(sp) ; r13 = ld half (sp+20) = 003A ---X from sp+20 !!
|
||||
mflo t6 ; r14 = lo
|
||||
addu v0,t5,t6 ; r2 = r13 + r14 = X + Offset
|
||||
sh v0,0x8(s3) ;DAT_1f8003d8 save r2 half to 1f8003d8 = X (3A) !!!!!!!!!!!!!!!!
|
||||
PageLoop:
|
||||
;MAKING COPYSPRITE CHAIN
|
||||
lw v0,-0x4930(s1); r2 = *freeChainAddr
|
||||
nop
|
||||
and r4,v0,t2 ; r4 = r2 & ff00..
|
||||
and v0,v0,s0 ; r2 & 00FFFFFF
|
||||
or r5,v0,s7 ; r5 = r2 or r23 (80000000) = 801ADF10
|
||||
lw v0,0x4(s5) ; CmdCounter r2 = *7b6d0+4 = 705
|
||||
lw v1,0x0(r5) ; r3 = New Free ChainAddr
|
||||
addiu v0,v0,-0x1 ; r2 -= 1 Counter Down
|
||||
and v1,v1,s0 ; r3 & 00FFFFFF cut begin byte
|
||||
or r4,r4,v1 ; r4 & r3 = ff......
|
||||
sw v0,0x4(s5) ; CmdCounter save DMA Counter
|
||||
sw r4,-0x4930(s1); freeChain save new freeChain
|
||||
CopyCmdFromScratch:
|
||||
; CopyScriptChain copy from scratch
|
||||
lw t6,0x0(s3) ;>DAT_1f8003d0 r14 = 04000000 - DMA Commands Count
|
||||
lw t7,0x4(s3) ;>DAT_1f8003d4 r15 = 64808080 - CopySpriteCmd
|
||||
lw t8,0x8(s3) ;>DAT_1f8003d8 r24 = 001500d1 - xy screen coords
|
||||
lw t5,0xc(s3); >DAT_1f8003dc r13 = 7fd3f0c0 (CLUT & tex coord page)
|
||||
sw t6,0x0(r5) ; *r5 = r14
|
||||
sw t7,0x4(r5) ; *r5+4 = r15
|
||||
sw t8,0x8(r5) ; *r5+8 = r24
|
||||
sw t5,0xc(r5) ; *r5+c = r13
|
||||
lw t6,0x10(s3);>DAT_1f8003e0 r14 = 000c0008 - spritesize after copy
|
||||
nop
|
||||
sw t6,0x10(r5) ; *r5+10 = r14 - LAST COMMAND SAVE
|
||||
; t1 = t0 (small) !!!!
|
||||
; t4 = t1 (small) !!!!
|
||||
lw v1,0x18(t1) ;r3 = *r9+18 (next param???)
|
||||
lw v0,0x0(r5) ; r2 = *cur New Chainaddr
|
||||
lw v1,0x0(v1) ; r3 = *r3
|
||||
and v0,v0,t2 ; r2 & ff000000
|
||||
and v1,v1,s0 ;r3 & 00FFFFFF
|
||||
or v0,v0,v1 ; r2 | r3 = 04FFFFFF - commands with FFFFFF
|
||||
sw v0,0x0(r5) ; *curChainAddr r5 = r2 (upd ..04 with ..FF04)
|
||||
lw r4,0x18(t1) ; r4 = *r8+18 (first chain addr?)
|
||||
nop
|
||||
lw v0,0x0(r4) ; r2 = *r4 FIRST CHAIN LINK TO NEXT??
|
||||
and v1,r5,s0 ; r3 = r5 (cur chain) & 00FFFFFF
|
||||
and v0,v0,t2 ; r2 & FF000000
|
||||
or v0,v0,v1 ; r2 | r3 = last chain adr w 10&....
|
||||
sw v0,0x0(r4) ; *r4 = r2 FIRST CHAIN NEXT ADDR???
|
||||
sw r5,0x18(t1) ;t0->t1 ; r5 = *r8+18 curChainAddr
|
||||
lhu v0,0x4(t4) ;t1->t4 r2 = half (DMA params)+4 (charCounter)
|
||||
nop
|
||||
bne v0,zero,NotFirstChar ; if CharCount<>0 then Goto...
|
||||
nop
|
||||
sw r5,0x28(t1) ;t0->t1 ;*curChain+28 = currentChainAddr
|
||||
sw t8,0xc(t4) ;t1->t4 ; Params+0c = save half X STORE COORDS
|
||||
;sh s2,0xe(t4) ;t1->t4 ;Params+0e = save half Y
|
||||
NotFirstChar:
|
||||
lui r5,0x1f80 ;;;;;;;;;;;;;;;;;;;;;;;ADDRESS OF CHAR HERe ---> SLL CHARNUM, 6
|
||||
|
||||
lw v0,-0x4930(s1);>8007b6d0_freeChain r2 = *nextFreeChain
|
||||
ori r5,r5,0x348 ; r5 | 1f800348 = Scratch CharData
|
||||
and r4,v0,t2 ; r4 = r2 & FF000000
|
||||
and v0,v0,s0 ; r2 & 00FFFFFF
|
||||
or r7,v0,s7 ;t4->s7 (800...) ; r7 = r2 | r12 = nextChain & 80...
|
||||
move r6,r7 ; r6 = r7 (nextChain)
|
||||
lw v0,0x4(s5) ; CmdCounter r2 = DMA Counter
|
||||
lw v1,0x0(r7) ; r3 = New Free ChainAddr / currHeader Addr
|
||||
addiu v0,v0,-0x1 ; r2 -= 1 Counter Down
|
||||
and v1,v1,s0 ; r3 & 00FFFFFF cut commandCount / currHeader
|
||||
or r4,r4,v1 ; r4 & r3 = ff......
|
||||
sw v0,0x4(s5);>DAT_8007b6d4_CmdCounter save DMA Counter
|
||||
andi v0,r7,0x3 ; r2 = r7 & 3 (check destAddr MOD 4)
|
||||
|
||||
lui t3,0x1f80
|
||||
ori t3,t3,0x388 ; Scratch DMAChain CharEndAddr
|
||||
|
||||
beq v0,zero,Copy16Bytes ; if r7 MOD 4 = 0 then Branch
|
||||
sw r4,-0x4930(s1);>8007b6d0_freeChain save new freeChain
|
||||
|
||||
;;;;;;;;;;;;;;;Copy from ScratchPad To Chain
|
||||
|
||||
CopyBy2Bytes:
|
||||
lwl t6,0x3(r5) ; if r7 mod4 <> 0 - копируем по 2 байта
|
||||
lwr t6,0x0(r5);>DAT_1f800348
|
||||
lwl t7,0x7(r5)
|
||||
lwr t7,0x4(r5);>DAT_1f80034c
|
||||
lwl t8,0xb(r5)
|
||||
lwr t8,0x8(r5);>DAT_1f800350
|
||||
lwl t5,0xf(r5)
|
||||
lwr t5,0xc(r5);>DAT_1f800354
|
||||
swl t6,0x3(r6)
|
||||
swr t6,0x0(r6)
|
||||
swl t7,0x7(r6)
|
||||
swr t7,0x4(r6)
|
||||
swl t8,0xb(r6)
|
||||
swr t8,0x8(r6)
|
||||
swl t5,0xf(r6)
|
||||
swr t5,0xc(r6)
|
||||
addiu r5,r5,0x10
|
||||
bne r5,t3,CopyBy2Bytes
|
||||
addiu r6,r6,0x10
|
||||
j last4BytesCopy
|
||||
nop
|
||||
Copy16Bytes:
|
||||
lw t6,0x0(r5);>DAT_1f800348 r5 - curScratchAddr,r6 -cur DMAAddr
|
||||
lw t7,0x4(r5)
|
||||
lw t8,0x8(r5)
|
||||
lw t5,0xc(r5)
|
||||
sw t6,0x0(r6)
|
||||
sw t7,0x4(r6)
|
||||
sw t8,0x8(r6)
|
||||
sw t5,0xc(r6)
|
||||
addiu r5,r5,0x10
|
||||
bne r5,t3,Copy16Bytes
|
||||
addiu r6,r6,0x10
|
||||
last4BytesCopy:
|
||||
lwl t6,0x3(r5) ; r14 left = 2 bytes from *r5+3
|
||||
lwr t6,0x0(r5);>DAT_1f800358 r14 right = 2 bytes from *r5
|
||||
nop
|
||||
swl t6,0x3(r6) ; *r6 = r14 left
|
||||
swr t6,0x0(r6) ; *r6+3 = r14 right
|
||||
; linking DMA char+copysprite
|
||||
|
||||
; t1 = t0 (small) !!!!
|
||||
; t4 = t1 (small) !!!!
|
||||
lw v1,0x18(t1) ; r3 = current DMACopySprite Chain
|
||||
lw v0,0x0(r7) ; r2 = current CharChainCommands
|
||||
lw v1,0x0(v1) ; r3 = *r3 (comNum+FFFFFF(nextLink))
|
||||
and v0,v0,t2 ; r2 & FF.....
|
||||
and v1,v1,s0 ; r3 & 00FFFFFF
|
||||
or v0,v0,v1 ; r2 | r3 = 10FFFFFF(cmdNum&FF..)
|
||||
sw v0,0x0(r7) ; *r7 = r2 saveCurChainCmd
|
||||
lw r4,0x18(t1) ; r4 = r8+18h - cur CopySpriteCmd hdrAddr
|
||||
nop
|
||||
lw v0,0x0(r4) ; r2 = *r4 (04FFFFFF)
|
||||
and v1,r7,s0 ; r3 = r7 & 00FFFFFF (Copying Cur Char Chain)
|
||||
and v0,v0,t2 ; r2 & FF000000 (04000000) CmdCount
|
||||
or v0,v0,v1 ; R2 | R3 = 04(cmd)..+CharChainAddr
|
||||
sw v0,0x0(r4) ; *r4 = r2 = FullCommand With Link!!!
|
||||
; (04..CharAddr) + SpriteCopyCommand
|
||||
sw r7,0x18(t1) ; *r8+18 = Last Char Chain!
|
||||
addiu t1,t1,0x4 ; r8 (params) += 4 (shift params for NextPage)
|
||||
addiu v0,t4,0x8 ; r2 = r9+8 (shift first chain param for Page)
|
||||
sltu v0,t1,v0 ; r2 = r8 < r2(r9+8) (first page pass)
|
||||
bne v0,zero,PageLoop ; if r2<>0 (r8<r2) then goto Next Page Loop
|
||||
nop
|
||||
|
||||
;;;CharCount + Check
|
||||
lhu v0,0x4(r20) ; r2 = current charDMACount
|
||||
nop
|
||||
addiu v0,v0,0x1 ; a += 1
|
||||
sh v0,0x4(r20) ;save DMAcounter to chain
|
||||
|
||||
;DMA NEED CHECK HERE (8007b6d4)
|
||||
nop
|
||||
lui t3,MyAddr
|
||||
lhu v0,-0xE(t3) ; r2 = charCount In string
|
||||
lhu v1,-0x10(t3) ; r3 = My charOverAll In string
|
||||
addiu v0,v0,0x1 ; a += 1
|
||||
lbu r4,0x0(s6) ; load next Char to r4 (byte)
|
||||
|
||||
sh v0,-0xE(t3) ; store myCharCounter to MyAddr-E
|
||||
addiu s6,s6,0x1 ;Shift CharAddr
|
||||
|
||||
bne v0,v1,NextChar ; if currentChar<>OverallChar - branch
|
||||
nop
|
||||
TextEnd:
|
||||
clear r18
|
||||
lui s3,0x8008
|
||||
addiu s5,s3,-0x4930 ; r19 = 80080000, r21 = 7b6d0
|
||||
lui s1,0xff ; r17 = 00ff0000
|
||||
ori s1,s1,0xffff ; r17 & ffff = 00ff ffff
|
||||
move s0,r20 ; r16 = r20 (currentTLineParam)
|
||||
clear r5
|
||||
PageTLoop: ;ALMOST FINISH!!!!
|
||||
li r6,0x1 ; r6=1
|
||||
addu r18,r18,r6 ; r18(Counter) += r6
|
||||
lui v0,0x8000 ; r2 = 80000000
|
||||
lui r4,0xff00 ; r4 = ff00 0000
|
||||
lw v1,-0x4930(s3);>8007b6d0_freeChain r3 = next free Chain (*7b6d0)
|
||||
lw r7,0xa4(gp);>DAT_8007b234 r7 = someParam(почти DMA)gp+a4 = 34
|
||||
and v1,v1,s1 ; r3 & 00FFFFFF
|
||||
or v1,v1,v0 ; r3 | r2 = 80.....
|
||||
sw v1,0x30(s0) ; store last free ChAddr to DMAParams
|
||||
lw v0,-0x4930(s3);>8007b6d0_freeChain r2 = next free chain
|
||||
lw v1,0x0(v1) ; r3 = *r3 = last chain - made one more chain
|
||||
and v0,v0,r4 ; a2 & ff000000
|
||||
and v1,v1,s1 ; r3 & 00FFFFFF
|
||||
lw r4,0x4(s5);>DAT_8007b6d4_CmdCounter r4 = DMA Counter
|
||||
or v0,v0,v1 ; r2 | r3
|
||||
sw v0,-0x4930(s3);>8007b6d0_freeChain new free chain addr add to *7b6b0
|
||||
addiu r4,r4,-0x1 ; DMA Cunter =- 1
|
||||
sw r4,0x4(s5);>DAT_8007b6d4_CmdCounter Store DMA Count
|
||||
lw r4,0x30(s0) ; r4 = *DMA params + 30 = Start Of DMA Chain
|
||||
jal SetDrawTPage ; Set DRAW PAGE
|
||||
addiu s0,s0,0x4 ; r16 += 4 - Shgift DMAParams for next Page
|
||||
sltiu v0,r18,0x2 ; r2 = r18<2
|
||||
bne v0,zero,PageTLoop ; if not r2 then goto Loop
|
||||
clear r5 ; r5 = 0
|
||||
move v0,r20 ; r2 = DMAParamsMain
|
||||
|
||||
lw ra,0x4c(sp)
|
||||
lw s8,0x48(sp)
|
||||
lw s7,0x44(sp)
|
||||
lw s6,0x40(sp)
|
||||
lw s5,0x3c(sp) ;restoring regs from Stack
|
||||
lw s4,0x38(sp)
|
||||
lw s3,0x34(sp)
|
||||
lw s2,0x30(sp)
|
||||
lw s1,0x2c(sp)
|
||||
lw s0,0x28(sp)
|
||||
|
||||
jr ra
|
||||
addiu sp,sp,0x50
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chars / 2 Return Func
|
||||
|
||||
.include "charload.asm"
|
||||
|
||||
.include "charCalcs.asm"
|
||||
|
||||
|
||||
.close
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;; BOSSNAMECOPY
|
||||
.include "battle_patch.asm"
|
||||
|
||||
|
||||
|
||||
|
||||
.include "txtpatches.asm" ;misc text patches
|
||||
482
1_IS/_OLD_main_before_copysprite_optimize.asm
Normal file
482
1_IS/_OLD_main_before_copysprite_optimize.asm
Normal file
@@ -0,0 +1,482 @@
|
||||
;
|
||||
; Persona 2 Innocent Sin (PSX) JAP / Custom Characters/Data Patch
|
||||
;
|
||||
; Author: Sergey Shemet 12/10/2021
|
||||
|
||||
.psx
|
||||
|
||||
|
||||
|
||||
.definelabel SetDrawTPage, 0x800542cc
|
||||
.definelabel storeColor, 0x8001b0c8
|
||||
.definelabel initCopyCharChain, 0x8001a070
|
||||
.definelabel makeCharPixels, 0x8001a08f ;need custom routine with custom font
|
||||
.definelabel GenerateSmallChar, 0x8001a284 ;need custom routine
|
||||
.definelabel MakeShadowSmallChar, 0x8001a20c
|
||||
.definelabel PrintBigDMAText, 0x80019300
|
||||
|
||||
.definelabel MyAddr, 0x8009
|
||||
|
||||
|
||||
.open "SLPS_021.00", 0x8000F800
|
||||
|
||||
|
||||
.include "complex_strings_copy.asm" ;Make complex strings in battles
|
||||
|
||||
;;neeeeed to init 8008fff6 = min dma commands
|
||||
|
||||
.org 0x80090000
|
||||
ExternalPrint:
|
||||
;;;;;;;text routing test routine
|
||||
move r3,s3
|
||||
move s3,r4
|
||||
|
||||
lhu v0,0x0(s3) ;read half 2 bytes of text (r4, not s1+0c!!!!!)
|
||||
move s3,r3
|
||||
srl v1,v0,0xD ;;;;Check 13th bit (1byte system !!!)
|
||||
bne v1,zero,MyPrintLineRoutine
|
||||
clear v1
|
||||
j PrintBigDMAText
|
||||
nop
|
||||
|
||||
;;;;;;;;;;;;;;;;;MyPrintLineRoutine
|
||||
MyPrintLineRoutine:
|
||||
addiu sp,sp,-0x50
|
||||
sw s6,0x40(sp)
|
||||
move s6,r4 ;textReadAddr
|
||||
sw s1,0x2c(sp)
|
||||
move s1,r5
|
||||
sw s2,0x30(sp)
|
||||
move s2,r6
|
||||
sw s3,0x34(sp)
|
||||
|
||||
; NEW COMMAND OBRAB
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;lw v1,0x0(s6)
|
||||
;nop
|
||||
;v1/r3 - MyChars charcount
|
||||
andi v0,v0,0xff
|
||||
addiu s6,s6,0x2 ;Moving text read pointer +2bytes
|
||||
|
||||
|
||||
|
||||
lui s3,MyAddr
|
||||
sw v0,-0x10(s3) ;store bytecounter @ 8008fff0 and clean charCounter (8008fff2)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
lui s3,0x1f80
|
||||
ori s3,s3,0x3d0 ;s3 = 1f8003d0 - copysprite cmd in scratch
|
||||
lui t0,0xff
|
||||
ori t0,t0,0xffff ;t0 = 00FFFFFF
|
||||
|
||||
sw s0, 0x28(sp) ;save s0 in stack
|
||||
andi s0,r7,0xff ;s0 - cut textMode (color & shadow)
|
||||
move r4,s0 ;r4 = s0 (cutted color)
|
||||
lui r7, 0x8008 ;r7 = 8008 0000
|
||||
lui r6, 0xff00 ;r6 = FF000000
|
||||
|
||||
addiu t1,r7,-0x4930 ;t1 = 8007b6d0 - new free CHAIN Here
|
||||
lw v1, -0x4930(r7) ;r3/v1 = load freeChain
|
||||
lbu r5,0x60(sp) ;shadow flag from stack to r5
|
||||
lui v0,0x8000 ;r2 = 8000 0000
|
||||
sw ra,0x4c(sp)
|
||||
sw s8,0x48(sp)
|
||||
sw s7,0x44(sp)
|
||||
sw s5,0x3c(sp) ; push ra,r30,r23,31,r20
|
||||
sw s4,0x38(sp)
|
||||
;;init chains
|
||||
and r6,v1,r6 ;r6 = r3 & ff000000 = FF000000
|
||||
andi r5,r5,0xff ;clean text mode (color/shadow)
|
||||
and v1,v1,t0 ;r3 & 00ffffff
|
||||
or r20,v1,v0 ;r20 - 80...+r3 = freeChain Main Addr
|
||||
lw v0,0x4(t1) ;Load DMA Counter
|
||||
lw v1,0x0(r20) ;r3 = next free Chain
|
||||
addiu v0,v0,-0x1 ;DMA Counter-1
|
||||
and v1,v1,t0 ; r3 & r8 (00ffffff) cut f.byte
|
||||
or r6,r6,v1 ; r6 | r3 = ff+r3 = next free Chain (FF...) +
|
||||
sw v0,0x4(t1) ;save DMACounter
|
||||
jal storeColor
|
||||
sw r6,-0x4930(r7) ;SAVE next free Chain (FF...) to 7b6d0
|
||||
move r4,r20 ;currentChainAddr
|
||||
sll r5,s1,0x10 ;r5 = X<<10h (003A0000)
|
||||
sra r5,r5,0x10 ; r5=r5>>10h 0000003A
|
||||
sll r6,s2,0x10 ; r6 = Y << 10h
|
||||
sra r6,r6,0x10 ;r6>>10h - 100% clean coords
|
||||
jal initCopyCharChain ;init line chains
|
||||
move r7,s0 ;store textMode _THIS IS FOR INIT
|
||||
|
||||
;;;;init ScratchPad
|
||||
;;;;;;;;;;;;;;;;;; CPU TO VRAM
|
||||
lui r7,0x1f80
|
||||
ori r7,r7,0x348 ;r7 = FIRST CHAR START
|
||||
;lui r6,0x1f80 ;LOWER HALF OF CHAR - DONT NEED!!!
|
||||
;ori r6,r6,0x38c
|
||||
li v0,0x2
|
||||
sh v0,0x1c(sp)
|
||||
li v0,0xc
|
||||
|
||||
lui r4,0xa000 ;r4 = a000 0000
|
||||
sh v0,0x1e(sp) ; SAVE 000C0002 TO STACK+1c
|
||||
|
||||
|
||||
|
||||
; INIT CHAR
|
||||
li r5,0x10 ;cmd count 10 00 00 00 =>DAT_1f80034b
|
||||
sb r5,0x3(r7) ;SAVE 0d 00 00 00 =>DAT_1f80034c cmdcount\
|
||||
sw r4,0x4(r7); SAVE a000000 TO DAT_1f80034c
|
||||
lhu t0,0xa0(gp) ;0310 ;Load x(0310) to r8
|
||||
lhu v0,0xa2(gp) ;01f0 ;Load y(01F0)to r2
|
||||
lui v1,0x100 ;0100 0000 flushcache
|
||||
lui at,0x1f80 ;scrathcpadStart
|
||||
sw v1,0x388(at) ;save 0x01 00 00 00 to end of 1st CHAR chain
|
||||
setY1:
|
||||
move s8,s2 ; r18 to r30 (y) !!!!!!!!!!!!!!!!!!!
|
||||
lh r5,0xa0(gp) ;for futher sprite X calc
|
||||
sh t0,0x18(sp)
|
||||
sh v0,0x1a(sp) ;SAVE CONCAT 013001f0 to stack
|
||||
lw r4,0x18(sp) ;LOAD 013001f0 from stack
|
||||
lw v0,0x1c(sp) ; r2 = 000c0002 from stack
|
||||
sw r4,0x8(r7) ;DAT_1f800350 load r4 (upper coord 01f6) to r7+8 (DMA)
|
||||
sw v0,0xc(r7) ;=>DAT_1f800354 r2 - 000c0002 to 1st char (to r7+0c)
|
||||
|
||||
lui v0,0x8001 ;load 80010000 to r2
|
||||
|
||||
;4bit table pattern
|
||||
.include "4bitPattern.asm"
|
||||
|
||||
; Copy Sprite DMA Command Forming
|
||||
li v0,0x4
|
||||
sb v0,0x3(s3) ; 04 00 00 00 to 3d0 (sb 04 to 3d3) CHAIN LENGTH
|
||||
li v0,0x64
|
||||
sb v0,0x7(s3) ;sb 64 to 3d7 (copySpriteCommand)
|
||||
li v0,0x80
|
||||
sb v0,0x4(s3)
|
||||
sb v0,0x5(s3)
|
||||
sb v0,0x6(s3) ;make 80 80 80 64 (3d4,5,6,7)
|
||||
bgez r5,LAB_800194fc
|
||||
SetX1:
|
||||
sh s1,0x20(sp) ;store X half to sp+10 !!!!!!!!!!!!!!!!!
|
||||
addiu t0,r5,0x3f
|
||||
LAB_800194fc: ;decoding coords for source sprite
|
||||
sra v0,t0,0x6 ;r2 = r6 >> 6 = 4
|
||||
sll v0,v0,0x6 ;r2 << 6 = 100
|
||||
subu v0,r5,v0 ;r2 = r6 - r2 = 30
|
||||
lh v1,0xa2(gp) ;r3 = load Y half from mem
|
||||
sll v0,v0,0x2 ;r2 << 2
|
||||
sb v0,0xc(s3) ; >DAT_1f8003dc ;STORE CHAR SPRITE X BYTE
|
||||
bgez v1,LAB_80019520 ;if Y r3>=0 - branch & r2=r3
|
||||
move v0,v1
|
||||
addiu v0,v1,0xff ;else r2 = ff - r3
|
||||
LAB_80019520:
|
||||
sra v0,v0,0x8
|
||||
sll v0,v0,0x8
|
||||
subu v0,v1,v0
|
||||
sb v0,0xd(s3) ; >DAT_1f8003dd ;STORE CHAR SPRITE Y BYTE
|
||||
lhu v1,0xa8(gp)
|
||||
;DIFF BETWEEN VERSs::::::::::::::::::::::
|
||||
li v0,0x8 ; r2 = 8 Sprite WIDTH
|
||||
sh v0,0x10(s3) ; 3e0 - 0008 save
|
||||
sh v1,0xe(s3);=>DAT_1f8003de ; *3de = r3 = 7df3
|
||||
li v0,0xc ; r2 = c Sprite HEIGTH
|
||||
sh v0,0x12(s3) ; 3e2 - 000c save
|
||||
|
||||
;TEXT READ START
|
||||
lbu r4,0x0(s6) ;MAIN READ CHAR COMMAND - Load Byte Unsigned
|
||||
nop
|
||||
addiu s6,s6,0x1 ;Shift read address +1 byte
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;CHAR CHECK CUTTED!
|
||||
lui s1,0x8008 ;load 80080000 to r17
|
||||
addiu s5,s1,-0x4930 ;r21 = r17-4930= 7b6d0 (tempDMA)
|
||||
lui s0,0xff
|
||||
ori s0,s0,0xffff ;s0 = 00 ff ff ff
|
||||
lui s7,0x8000 ;r3 = 8000 0000
|
||||
NextChar:
|
||||
addiu r4,r4,-0x20 ;Shift unprintable symbols
|
||||
|
||||
|
||||
;ОБРАБОТКА ПРОБЕЛОВ
|
||||
|
||||
bne r4,zero,SpaceCheckBranch ;Если не пробел - перепрыгиваем сразу
|
||||
nop
|
||||
|
||||
lui t2,MyAddr
|
||||
lh v0,-0xE(t2) ;Load my temp CHAR COUNTER for check
|
||||
nop
|
||||
lh t3,-0x10(t2)
|
||||
addiu v0,v0,1 ;overall chars+1
|
||||
beq v0,t3,SpaceCheckBranch ;is last char - пробел не проверяем!
|
||||
nop
|
||||
|
||||
sh v0,-0xE(t2) ;Save charcount += 1
|
||||
lbu r4,0x0(s6) ;LOAD NEXT CHAR
|
||||
nop
|
||||
j NextChar
|
||||
addiu s6,s6,0x1 ;Shift read address +1 byte
|
||||
|
||||
|
||||
SpaceCheckBranch:
|
||||
|
||||
jal makeCharPixelsCustom ;MAKE SMALL CHAR IN SCRATCH ___ CUSTOM ROUTINE
|
||||
clear r18
|
||||
|
||||
; Coords XY init
|
||||
lw v0,0xb0(gp); =>DAT_8007b240_parms load r2 from r28+0b0 (7b240)(Xoffs)
|
||||
lui t2,MyAddr
|
||||
lh v1,-0xE(t2) ;Load my temp CHAR COUNTER for check
|
||||
; lhu v1,0x4(r20) ; current char = r3 = half *DMAAddr + 4
|
||||
addiu v0,v0,0x6 ; 0x06 * 6px btw letters!
|
||||
|
||||
|
||||
mult v1,v0 ; r3*r2 = xOffs*charNum
|
||||
|
||||
|
||||
|
||||
lui t2,0xff00 ; r10 = ld upper ff00 = ff000000
|
||||
move t4,r20 ; r12 = r20 (params)
|
||||
addiu t3,sp,0x10 ; r11 = sp + 10 = 807ffe50
|
||||
move t1,r20 ; r12 = r20 (params again)
|
||||
GetY:
|
||||
sh s8,0xa(s3) ; DAT_1f8003da *r19(1st scr DMA)+0a = r30 (Y??) !!!!!!!!!!!!!!!!
|
||||
GetX:
|
||||
lhu t5,0x20(sp) ; r13 = ld half (sp+20) = 003A ---X from sp+20 !!
|
||||
mflo t6 ; r14 = lo
|
||||
addu v0,t5,t6 ; r2 = r13 + r14 = X + Offset
|
||||
sh v0,0x8(s3) ;DAT_1f8003d8 save r2 half to 1f8003d8 = X (3A) !!!!!!!!!!!!!!!!
|
||||
PageLoop:
|
||||
;MAKING COPYSPRITE CHAIN
|
||||
lw v0,-0x4930(s1); r2 = *freeChainAddr
|
||||
nop
|
||||
and r4,v0,t2 ; r4 = r2 & ff00..
|
||||
and v0,v0,s0 ; r2 & 00FFFFFF
|
||||
or r5,v0,s7 ; r5 = r2 or r23 (80000000) = 801ADF10
|
||||
lw v0,0x4(s5) ; CmdCounter r2 = *7b6d0+4 = 705
|
||||
lw v1,0x0(r5) ; r3 = New Free ChainAddr
|
||||
addiu v0,v0,-0x1 ; r2 -= 1 Counter Down
|
||||
and v1,v1,s0 ; r3 & 00FFFFFF cut begin byte
|
||||
or r4,r4,v1 ; r4 & r3 = ff......
|
||||
sw v0,0x4(s5) ; CmdCounter save DMA Counter
|
||||
sw r4,-0x4930(s1); freeChain save new freeChain
|
||||
CopyCmdFromScratch:
|
||||
; CopyScriptChain copy from scratch
|
||||
lw t6,0x0(s3) ;>DAT_1f8003d0 r14 = 04000000 - DMA Commands Count
|
||||
lw t7,0x4(s3) ;>DAT_1f8003d4 r15 = 64808080 - CopySpriteCmd
|
||||
lw t8,0x8(s3) ;>DAT_1f8003d8 r24 = 001500d1 - xy screen coords
|
||||
lw t5,0xc(s3); >DAT_1f8003dc r13 = 7fd3f0c0 (CLUT & tex coord page)
|
||||
sw t6,0x0(r5) ; *r5 = r14
|
||||
sw t7,0x4(r5) ; *r5+4 = r15
|
||||
sw t8,0x8(r5) ; *r5+8 = r24
|
||||
sw t5,0xc(r5) ; *r5+c = r13
|
||||
lw t6,0x10(s3);>DAT_1f8003e0 r14 = 000c0008 - spritesize after copy
|
||||
nop
|
||||
sw t6,0x10(r5) ; *r5+10 = r14 - LAST COMMAND SAVE
|
||||
; t1 = t0 (small) !!!!
|
||||
; t4 = t1 (small) !!!!
|
||||
lw v1,0x18(t1) ;r3 = *r9+18 (next param???)
|
||||
lw v0,0x0(r5) ; r2 = *cur New Chainaddr
|
||||
lw v1,0x0(v1) ; r3 = *r3
|
||||
and v0,v0,t2 ; r2 & ff000000
|
||||
and v1,v1,s0 ;r3 & 00FFFFFF
|
||||
or v0,v0,v1 ; r2 | r3 = 04FFFFFF - commands with FFFFFF
|
||||
sw v0,0x0(r5) ; *curChainAddr r5 = r2 (upd ..04 with ..FF04)
|
||||
lw r4,0x18(t1) ; r4 = *r8+18 (first chain addr?)
|
||||
nop
|
||||
lw v0,0x0(r4) ; r2 = *r4 FIRST CHAIN LINK TO NEXT??
|
||||
and v1,r5,s0 ; r3 = r5 (cur chain) & 00FFFFFF
|
||||
and v0,v0,t2 ; r2 & FF000000
|
||||
or v0,v0,v1 ; r2 | r3 = last chain adr w 10&....
|
||||
sw v0,0x0(r4) ; *r4 = r2 FIRST CHAIN NEXT ADDR???
|
||||
sw r5,0x18(t1) ;t0->t1 ; r5 = *r8+18 curChainAddr
|
||||
lhu v0,0x4(t4) ;t1->t4 r2 = half (DMA params)+4 (charCounter)
|
||||
nop
|
||||
bne v0,zero,NotFirstChar ; if CharCount<>0 then Goto...
|
||||
nop
|
||||
sw r5,0x28(t1) ;t0->t1 ;*curChain+28 = currentChainAddr
|
||||
sw t8,0xc(t4) ;t1->t4 ; Params+0c = save half X STORE COORDS
|
||||
;sh s2,0xe(t4) ;t1->t4 ;Params+0e = save half Y
|
||||
NotFirstChar:
|
||||
lui r5,0x1f80 ;;;;;;;;;;;;;;;;;;;;;;;ADDRESS OF CHAR HERe ---> SLL CHARNUM, 6
|
||||
|
||||
lw v0,-0x4930(s1);>8007b6d0_freeChain r2 = *nextFreeChain
|
||||
ori r5,r5,0x348 ; r5 | 1f800348 = Scratch CharData
|
||||
and r4,v0,t2 ; r4 = r2 & FF000000
|
||||
and v0,v0,s0 ; r2 & 00FFFFFF
|
||||
or r7,v0,s7 ;t4->s7 (800...) ; r7 = r2 | r12 = nextChain & 80...
|
||||
move r6,r7 ; r6 = r7 (nextChain)
|
||||
lw v0,0x4(s5) ; CmdCounter r2 = DMA Counter
|
||||
lw v1,0x0(r7) ; r3 = New Free ChainAddr / currHeader Addr
|
||||
addiu v0,v0,-0x1 ; r2 -= 1 Counter Down
|
||||
and v1,v1,s0 ; r3 & 00FFFFFF cut commandCount / currHeader
|
||||
or r4,r4,v1 ; r4 & r3 = ff......
|
||||
sw v0,0x4(s5);>DAT_8007b6d4_CmdCounter save DMA Counter
|
||||
andi v0,r7,0x3 ; r2 = r7 & 3 (check destAddr MOD 4)
|
||||
|
||||
lui t3,0x1f80
|
||||
ori t3,t3,0x388 ; Scratch DMAChain CharEndAddr
|
||||
|
||||
beq v0,zero,Copy16Bytes ; if r7 MOD 4 = 0 then Branch
|
||||
sw r4,-0x4930(s1);>8007b6d0_freeChain save new freeChain
|
||||
|
||||
;;;;;;;;;;;;;;;Copy from ScratchPad To Chain
|
||||
|
||||
CopyBy2Bytes:
|
||||
lwl t6,0x3(r5) ; if r7 mod4 <> 0 - копируем по 2 байта
|
||||
lwr t6,0x0(r5);>DAT_1f800348
|
||||
lwl t7,0x7(r5)
|
||||
lwr t7,0x4(r5);>DAT_1f80034c
|
||||
lwl t8,0xb(r5)
|
||||
lwr t8,0x8(r5);>DAT_1f800350
|
||||
lwl t5,0xf(r5)
|
||||
lwr t5,0xc(r5);>DAT_1f800354
|
||||
swl t6,0x3(r6)
|
||||
swr t6,0x0(r6)
|
||||
swl t7,0x7(r6)
|
||||
swr t7,0x4(r6)
|
||||
swl t8,0xb(r6)
|
||||
swr t8,0x8(r6)
|
||||
swl t5,0xf(r6)
|
||||
swr t5,0xc(r6)
|
||||
addiu r5,r5,0x10
|
||||
bne r5,t3,CopyBy2Bytes
|
||||
addiu r6,r6,0x10
|
||||
j last4BytesCopy
|
||||
nop
|
||||
Copy16Bytes:
|
||||
lw t6,0x0(r5);>DAT_1f800348 r5 - curScratchAddr,r6 -cur DMAAddr
|
||||
lw t7,0x4(r5)
|
||||
lw t8,0x8(r5)
|
||||
lw t5,0xc(r5)
|
||||
sw t6,0x0(r6)
|
||||
sw t7,0x4(r6)
|
||||
sw t8,0x8(r6)
|
||||
sw t5,0xc(r6)
|
||||
addiu r5,r5,0x10
|
||||
bne r5,t3,Copy16Bytes
|
||||
addiu r6,r6,0x10
|
||||
last4BytesCopy:
|
||||
lwl t6,0x3(r5) ; r14 left = 2 bytes from *r5+3
|
||||
lwr t6,0x0(r5);>DAT_1f800358 r14 right = 2 bytes from *r5
|
||||
nop
|
||||
swl t6,0x3(r6) ; *r6 = r14 left
|
||||
swr t6,0x0(r6) ; *r6+3 = r14 right
|
||||
; linking DMA char+copysprite
|
||||
|
||||
; t1 = t0 (small) !!!!
|
||||
; t4 = t1 (small) !!!!
|
||||
lw v1,0x18(t1) ; r3 = current DMACopySprite Chain
|
||||
lw v0,0x0(r7) ; r2 = current CharChainCommands
|
||||
lw v1,0x0(v1) ; r3 = *r3 (comNum+FFFFFF(nextLink))
|
||||
and v0,v0,t2 ; r2 & FF.....
|
||||
and v1,v1,s0 ; r3 & 00FFFFFF
|
||||
or v0,v0,v1 ; r2 | r3 = 10FFFFFF(cmdNum&FF..)
|
||||
sw v0,0x0(r7) ; *r7 = r2 saveCurChainCmd
|
||||
lw r4,0x18(t1) ; r4 = r8+18h - cur CopySpriteCmd hdrAddr
|
||||
nop
|
||||
lw v0,0x0(r4) ; r2 = *r4 (04FFFFFF)
|
||||
and v1,r7,s0 ; r3 = r7 & 00FFFFFF (Copying Cur Char Chain)
|
||||
and v0,v0,t2 ; r2 & FF000000 (04000000) CmdCount
|
||||
or v0,v0,v1 ; R2 | R3 = 04(cmd)..+CharChainAddr
|
||||
sw v0,0x0(r4) ; *r4 = r2 = FullCommand With Link!!!
|
||||
; (04..CharAddr) + SpriteCopyCommand
|
||||
sw r7,0x18(t1) ; *r8+18 = Last Char Chain!
|
||||
addiu t1,t1,0x4 ; r8 (params) += 4 (shift params for NextPage)
|
||||
addiu v0,t4,0x8 ; r2 = r9+8 (shift first chain param for Page)
|
||||
sltu v0,t1,v0 ; r2 = r8 < r2(r9+8) (first page pass)
|
||||
bne v0,zero,PageLoop ; if r2<>0 (r8<r2) then goto Next Page Loop
|
||||
nop
|
||||
|
||||
;;;CharCount + Check
|
||||
lhu v0,0x4(r20) ; r2 = current charDMACount
|
||||
nop
|
||||
addiu v0,v0,0x1 ; a += 1
|
||||
sh v0,0x4(r20) ;save DMAcounter to chain
|
||||
nop
|
||||
|
||||
|
||||
;DMA OVERFLOW CHECK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (8007b6d4)
|
||||
lui t3,MyAddr
|
||||
lw v0,0x4(s5) ; CmdCounter r2 = DMA Counter
|
||||
lhu v1,-0xC(t3) ;v1 = 8008fff4 = minimum cmd counter
|
||||
nop
|
||||
sltu v0,v0,v1 ; v0 = v0 < V1 ?
|
||||
bne v0,zero,TextEnd ;if v0<>0 then Goto End Text (DMA OVERFLOW!!!!)
|
||||
nop
|
||||
|
||||
|
||||
|
||||
|
||||
;lui t3,MyAddr
|
||||
lhu v0,-0xE(t3) ; r2 = charCount In string
|
||||
lhu v1,-0x10(t3) ; r3 = My charOverAll In string
|
||||
addiu v0,v0,0x1 ; a += 1
|
||||
lbu r4,0x0(s6) ; load next Char to r4 (byte)
|
||||
|
||||
sh v0,-0xE(t3) ; store myCharCounter to MyAddr-E
|
||||
addiu s6,s6,0x1 ;Shift CharAddr
|
||||
|
||||
bne v0,v1,NextChar ; if currentChar<>OverallChar - branch
|
||||
nop
|
||||
TextEnd:
|
||||
clear r18
|
||||
lui s3,0x8008
|
||||
addiu s5,s3,-0x4930 ; r19 = 80080000, r21 = 7b6d0
|
||||
lui s1,0xff ; r17 = 00ff0000
|
||||
ori s1,s1,0xffff ; r17 & ffff = 00ff ffff
|
||||
move s0,r20 ; r16 = r20 (currentTLineParam)
|
||||
clear r5
|
||||
PageTLoop: ;ALMOST FINISH!!!!
|
||||
li r6,0x1 ; r6=1
|
||||
addu r18,r18,r6 ; r18(Counter) += r6
|
||||
lui v0,0x8000 ; r2 = 80000000
|
||||
lui r4,0xff00 ; r4 = ff00 0000
|
||||
lw v1,-0x4930(s3);>8007b6d0_freeChain r3 = next free Chain (*7b6d0)
|
||||
lw r7,0xa4(gp);>DAT_8007b234 r7 = someParam(почти DMA)gp+a4 = 34
|
||||
and v1,v1,s1 ; r3 & 00FFFFFF
|
||||
or v1,v1,v0 ; r3 | r2 = 80.....
|
||||
sw v1,0x30(s0) ; store last free ChAddr to DMAParams
|
||||
lw v0,-0x4930(s3);>8007b6d0_freeChain r2 = next free chain
|
||||
lw v1,0x0(v1) ; r3 = *r3 = last chain - made one more chain
|
||||
and v0,v0,r4 ; a2 & ff000000
|
||||
and v1,v1,s1 ; r3 & 00FFFFFF
|
||||
lw r4,0x4(s5);>DAT_8007b6d4_CmdCounter r4 = DMA Counter
|
||||
or v0,v0,v1 ; r2 | r3
|
||||
sw v0,-0x4930(s3);>8007b6d0_freeChain new free chain addr add to *7b6b0
|
||||
addiu r4,r4,-0x1 ; DMA Cunter =- 1
|
||||
sw r4,0x4(s5);>DAT_8007b6d4_CmdCounter Store DMA Count
|
||||
lw r4,0x30(s0) ; r4 = *DMA params + 30 = Start Of DMA Chain
|
||||
jal SetDrawTPage ; Set DRAW PAGE
|
||||
addiu s0,s0,0x4 ; r16 += 4 - Shgift DMAParams for next Page
|
||||
sltiu v0,r18,0x2 ; r2 = r18<2
|
||||
bne v0,zero,PageTLoop ; if not r2 then goto Loop
|
||||
clear r5 ; r5 = 0
|
||||
move v0,r20 ; r2 = DMAParamsMain
|
||||
|
||||
lw ra,0x4c(sp)
|
||||
lw s8,0x48(sp)
|
||||
lw s7,0x44(sp)
|
||||
lw s6,0x40(sp)
|
||||
lw s5,0x3c(sp) ;restoring regs from Stack
|
||||
lw s4,0x38(sp)
|
||||
lw s3,0x34(sp)
|
||||
lw s2,0x30(sp)
|
||||
lw s1,0x2c(sp)
|
||||
lw s0,0x28(sp)
|
||||
|
||||
jr ra
|
||||
addiu sp,sp,0x50
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chars / 2 Return Func
|
||||
|
||||
.include "charload.asm"
|
||||
|
||||
.include "charCalcs.asm"
|
||||
|
||||
|
||||
.close
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;; BOSSNAMECOPY
|
||||
.include "battle_patch.asm"
|
||||
|
||||
; 69 x 44
|
||||
;yellow - 976 X 437 white - 976 X 432
|
||||
|
||||
.include "txtpatches.asm" ;misc text patches
|
||||
439
1_IS/_OLD_main_before_spaces.asm
Normal file
439
1_IS/_OLD_main_before_spaces.asm
Normal file
@@ -0,0 +1,439 @@
|
||||
;
|
||||
; Persona 2 Innocent Sin (PSX) JAP / Custom Characters/Data Patch
|
||||
;
|
||||
; Author: Sergey Shemet 12/10/2021
|
||||
|
||||
.psx
|
||||
|
||||
|
||||
|
||||
.definelabel SetDrawTPage, 0x800542cc
|
||||
.definelabel storeColor, 0x8001b0c8
|
||||
.definelabel initCopyCharChain, 0x8001a070
|
||||
.definelabel makeCharPixels, 0x8001a08f ;need custom routine with custom font
|
||||
.definelabel GenerateSmallChar, 0x8001a284 ;need custom routine
|
||||
.definelabel MakeShadowSmallChar, 0x8001a20c
|
||||
.definelabel PrintBigDMAText, 0x80019300
|
||||
|
||||
.definelabel MyAddr, 0x8009
|
||||
|
||||
|
||||
.open "SLPS_021.00", 0x8000F800
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.org 0x80090000
|
||||
ExternalPrint:
|
||||
;;;;;;;text routing test routine
|
||||
move r3,s3
|
||||
move s3,r4
|
||||
|
||||
lhu v0,0x0(s3) ;read half 2 bytes of text (r4, not s1+0c!!!!!)
|
||||
move s3,r3
|
||||
srl v1,v0,0xD ;;;;Check 13th bit (1byte system !!!)
|
||||
bne v1,zero,MyPrintLineRoutine
|
||||
clear v1
|
||||
j PrintBigDMAText
|
||||
nop
|
||||
|
||||
;;;;;;;;;;;;;;;;;MyPrintLineRoutine
|
||||
MyPrintLineRoutine:
|
||||
addiu sp,sp,-0x50
|
||||
sw s6,0x40(sp)
|
||||
move s6,r4 ;textReadAddr
|
||||
sw s1,0x2c(sp)
|
||||
move s1,r5
|
||||
sw s2,0x30(sp)
|
||||
move s2,r6
|
||||
sw s3,0x34(sp)
|
||||
|
||||
; NEW COMMAND OBRAB
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;lw v1,0x0(s6)
|
||||
;nop
|
||||
;v1/r3 - MyChars charcount
|
||||
andi v0,v0,0xff
|
||||
addiu s6,s6,0x2 ;Moving text read pointer +2bytes
|
||||
|
||||
|
||||
|
||||
lui s3,MyAddr
|
||||
sh v0,-0x10(s3) ;store half bytecounter @ 8008fff0
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
lui s3,0x1f80
|
||||
ori s3,s3,0x3d0 ;s3 = 1f8003d0 - copysprite cmd in scratch
|
||||
lui t0,0xff
|
||||
ori t0,t0,0xffff ;t0 = 00FFFFFF
|
||||
|
||||
sw s0, 0x28(sp) ;save s0 in stack
|
||||
andi s0,r7,0xff ;s0 - cut textMode (color & shadow)
|
||||
move r4,s0 ;r4 = s0 (cutted color)
|
||||
lui r7, 0x8008 ;r7 = 8008 0000
|
||||
lui r6, 0xff00 ;r6 = FF000000
|
||||
|
||||
addiu t1,r7,-0x4930 ;t1 = 8007b6d0 - new free CHAIN Here
|
||||
lw v1, -0x4930(r7) ;r3/v1 = load freeChain
|
||||
lbu r5,0x60(sp) ;shadow flag from stack to r5
|
||||
lui v0,0x8000 ;r2 = 8000 0000
|
||||
sw ra,0x4c(sp)
|
||||
sw s8,0x48(sp)
|
||||
sw s7,0x44(sp)
|
||||
sw s5,0x3c(sp) ; push ra,r30,r23,31,r20
|
||||
sw s4,0x38(sp)
|
||||
;;init chains
|
||||
and r6,v1,r6 ;r6 = r3 & ff000000 = FF000000
|
||||
andi r5,r5,0xff ;clean text mode (color/shadow)
|
||||
and v1,v1,t0 ;r3 & 00ffffff
|
||||
or r20,v1,v0 ;r20 - 80...+r3 = freeChain Main Addr
|
||||
lw v0,0x4(t1) ;Load DMA Counter
|
||||
lw v1,0x0(r20) ;r3 = next free Chain
|
||||
addiu v0,v0,-0x1 ;DMA Counter-1
|
||||
and v1,v1,t0 ; r3 & r8 (00ffffff) cut f.byte
|
||||
or r6,r6,v1 ; r6 | r3 = ff+r3 = next free Chain (FF...) +
|
||||
sw v0,0x4(t1) ;save DMACounter
|
||||
jal storeColor
|
||||
sw r6,-0x4930(r7) ;SAVE next free Chain (FF...) to 7b6d0
|
||||
move r4,r20 ;currentChainAddr
|
||||
sll r5,s1,0x10 ;r5 = X<<10h (003A0000)
|
||||
sra r5,r5,0x10 ; r5=r5>>10h 0000003A
|
||||
sll r6,s2,0x10 ; r6 = Y << 10h
|
||||
sra r6,r6,0x10 ;r6>>10h - 100% clean coords
|
||||
jal initCopyCharChain ;init line chains
|
||||
move r7,s0 ;store textMode _THIS IS FOR INIT
|
||||
|
||||
;;;;init ScratchPad
|
||||
;;;;;;;;;;;;;;;;;; CPU TO VRAM
|
||||
lui r7,0x1f80
|
||||
ori r7,r7,0x348 ;r7 = FIRST CHAR START
|
||||
;lui r6,0x1f80 ;LOWER HALF OF CHAR - DONT NEED!!!
|
||||
;ori r6,r6,0x38c
|
||||
li v0,0x2
|
||||
sh v0,0x1c(sp)
|
||||
li v0,0xc
|
||||
|
||||
lui r4,0xa000 ;r4 = a000 0000
|
||||
sh v0,0x1e(sp) ; SAVE 000C0002 TO STACK+1c
|
||||
|
||||
|
||||
|
||||
; INIT CHAR
|
||||
li r5,0x10 ;cmd count 10 00 00 00 =>DAT_1f80034b
|
||||
sb r5,0x3(r7) ;SAVE 0d 00 00 00 =>DAT_1f80034c cmdcount\
|
||||
sw r4,0x4(r7); SAVE a000000 TO DAT_1f80034c
|
||||
lhu t0,0xa0(gp) ;0310 ;Load x(0310) to r8
|
||||
lhu v0,0xa2(gp) ;01f0 ;Load y(01F0)to r2
|
||||
lui v1,0x100 ;0100 0000 flushcache
|
||||
lui at,0x1f80 ;scrathcpadStart
|
||||
sw v1,0x388(at) ;save 0x01 00 00 00 to end of 1st CHAR chain
|
||||
setY1:
|
||||
move s8,s2 ; r18 to r30 (y) !!!!!!!!!!!!!!!!!!!
|
||||
lh r5,0xa0(gp) ;for futher sprite X calc
|
||||
sh t0,0x18(sp)
|
||||
sh v0,0x1a(sp) ;SAVE CONCAT 013001f0 to stack
|
||||
lw r4,0x18(sp) ;LOAD 013001f0 from stack
|
||||
lw v0,0x1c(sp) ; r2 = 000c0002 from stack
|
||||
sw r4,0x8(r7) ;DAT_1f800350 load r4 (upper coord 01f6) to r7+8 (DMA)
|
||||
sw v0,0xc(r7) ;=>DAT_1f800354 r2 - 000c0002 to 1st char (to r7+0c)
|
||||
|
||||
lui v0,0x8001 ;load 80010000 to r2
|
||||
|
||||
;4bit table pattern
|
||||
.include "4bitPattern.asm"
|
||||
|
||||
; Copy Sprite DMA Command Forming
|
||||
li v0,0x4
|
||||
sb v0,0x3(s3) ; 04 00 00 00 to 3d0 (sb 04 to 3d3) CHAIN LENGTH
|
||||
li v0,0x64
|
||||
sb v0,0x7(s3) ;sb 64 to 3d7 (copySpriteCommand)
|
||||
li v0,0x80
|
||||
sb v0,0x4(s3)
|
||||
sb v0,0x5(s3)
|
||||
sb v0,0x6(s3) ;make 80 80 80 64 (3d4,5,6,7)
|
||||
bgez r5,LAB_800194fc
|
||||
SetX1:
|
||||
sh s1,0x20(sp) ;store X half to sp+10 !!!!!!!!!!!!!!!!!
|
||||
addiu t0,r5,0x3f
|
||||
LAB_800194fc: ;decoding coords for source sprite
|
||||
sra v0,t0,0x6 ;r2 = r6 >> 6 = 4
|
||||
sll v0,v0,0x6 ;r2 << 6 = 100
|
||||
subu v0,r5,v0 ;r2 = r6 - r2 = 30
|
||||
lh v1,0xa2(gp) ;r3 = load Y half from mem
|
||||
sll v0,v0,0x2 ;r2 << 2
|
||||
sb v0,0xc(s3) ; >DAT_1f8003dc ;STORE CHAR SPRITE X BYTE
|
||||
bgez v1,LAB_80019520 ;if Y r3>=0 - branch & r2=r3
|
||||
move v0,v1
|
||||
addiu v0,v1,0xff ;else r2 = ff - r3
|
||||
LAB_80019520:
|
||||
sra v0,v0,0x8
|
||||
sll v0,v0,0x8
|
||||
subu v0,v1,v0
|
||||
sb v0,0xd(s3) ; >DAT_1f8003dd ;STORE CHAR SPRITE Y BYTE
|
||||
lhu v1,0xa8(gp)
|
||||
;DIFF BETWEEN VERSs::::::::::::::::::::::
|
||||
li v0,0x8 ; r2 = 8 Sprite WIDTH
|
||||
sh v0,0x10(s3) ; 3e0 - 0008 save
|
||||
sh v1,0xe(s3);=>DAT_1f8003de ; *3de = r3 = 7df3
|
||||
li v0,0xc ; r2 = c Sprite HEIGTH
|
||||
sh v0,0x12(s3) ; 3e2 - 000c save
|
||||
|
||||
;TEXT READ START
|
||||
lbu r4,0x0(s6) ;MAIN READ CHAR COMMAND - Load Byte Unsigned
|
||||
nop
|
||||
addiu s6,s6,0x1 ;Shift read address +1 byte
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;CHAR CHECK CUTTED!
|
||||
lui s1,0x8008 ;load 80080000 to r17
|
||||
addiu s5,s1,-0x4930 ;r21 = r17-4930= 7b6d0 (tempDMA)
|
||||
lui s0,0xff
|
||||
ori s0,s0,0xffff ;s0 = 00 ff ff ff
|
||||
lui s7,0x8000 ;r3 = 8000 0000
|
||||
NextChar:
|
||||
addiu r4,r4,-0x20 ;Shift unprintable symbols
|
||||
|
||||
|
||||
; lhu v1,0x4(r20) ; current char = r3 = half *DMAAddr + 4
|
||||
; nop
|
||||
; beq v1,zero,isFirstChar ;check charnum. if 0 - dont check space (string not initializated)
|
||||
; nop
|
||||
;check r0 is 0 and jump to next char
|
||||
; beq r4,zero,SpaceCharJumpHere ;if char=0 (space) = jump to end of charLoop
|
||||
; nop
|
||||
|
||||
|
||||
isFirstChar:
|
||||
jal makeCharPixelsCustom ;MAKE SMALL CHAR IN SCRATCH ___ CUSTOM ROUTINE
|
||||
clear r18
|
||||
|
||||
; Coords XY init
|
||||
lw v0,0xb0(gp); =>DAT_8007b240_parms load r2 from r28+0b0 (7b240)(Xoffs)
|
||||
lhu v1,0x4(r20) ; current char = r3 = half *DMAAddr + 4
|
||||
|
||||
;NEED TO CUSTOM CHAR COUNT
|
||||
|
||||
addiu v0,v0,0x6 ; 0x06 * 6px btw letters!
|
||||
mult v1,v0 ; r3*r2 = xOffs*charNum
|
||||
lui t2,0xff00 ; r10 = ld upper ff00 = ff000000
|
||||
move t4,r20 ; r12 = r20 (params)
|
||||
addiu t3,sp,0x10 ; r11 = sp + 10 = 807ffe50
|
||||
move t1,r20 ; r12 = r20 (params again)
|
||||
GetY:
|
||||
sh s8,0xa(s3) ; DAT_1f8003da *r19(1st scr DMA)+0a = r30 (Y??) !!!!!!!!!!!!!!!!
|
||||
GetX:
|
||||
lhu t5,0x20(sp) ; r13 = ld half (sp+20) = 003A ---X from sp+20 !!
|
||||
mflo t6 ; r14 = lo
|
||||
addu v0,t5,t6 ; r2 = r13 + r14 = X + Offset
|
||||
sh v0,0x8(s3) ;DAT_1f8003d8 save r2 half to 1f8003d8 = X (3A) !!!!!!!!!!!!!!!!
|
||||
PageLoop:
|
||||
;MAKING COPYSPRITE CHAIN
|
||||
lw v0,-0x4930(s1); r2 = *freeChainAddr
|
||||
nop
|
||||
and r4,v0,t2 ; r4 = r2 & ff00..
|
||||
and v0,v0,s0 ; r2 & 00FFFFFF
|
||||
or r5,v0,s7 ; r5 = r2 or r23 (80000000) = 801ADF10
|
||||
lw v0,0x4(s5) ; CmdCounter r2 = *7b6d0+4 = 705
|
||||
lw v1,0x0(r5) ; r3 = New Free ChainAddr
|
||||
addiu v0,v0,-0x1 ; r2 -= 1 Counter Down
|
||||
and v1,v1,s0 ; r3 & 00FFFFFF cut begin byte
|
||||
or r4,r4,v1 ; r4 & r3 = ff......
|
||||
sw v0,0x4(s5) ; CmdCounter save DMA Counter
|
||||
sw r4,-0x4930(s1); freeChain save new freeChain
|
||||
CopyCmdFromScratch:
|
||||
; CopyScriptChain copy from scratch
|
||||
lw t6,0x0(s3) ;>DAT_1f8003d0 r14 = 04000000 - DMA Commands Count
|
||||
lw t7,0x4(s3) ;>DAT_1f8003d4 r15 = 64808080 - CopySpriteCmd
|
||||
lw t8,0x8(s3) ;>DAT_1f8003d8 r24 = 001500d1 - xy screen coords
|
||||
lw t5,0xc(s3); >DAT_1f8003dc r13 = 7fd3f0c0 (CLUT & tex coord page)
|
||||
sw t6,0x0(r5) ; *r5 = r14
|
||||
sw t7,0x4(r5) ; *r5+4 = r15
|
||||
sw t8,0x8(r5) ; *r5+8 = r24
|
||||
sw t5,0xc(r5) ; *r5+c = r13
|
||||
lw t6,0x10(s3);>DAT_1f8003e0 r14 = 000c0008 - spritesize after copy
|
||||
nop
|
||||
sw t6,0x10(r5) ; *r5+10 = r14 - LAST COMMAND SAVE
|
||||
; t1 = t0 (small) !!!!
|
||||
; t4 = t1 (small) !!!!
|
||||
lw v1,0x18(t1) ;r3 = *r9+18 (next param???)
|
||||
lw v0,0x0(r5) ; r2 = *cur New Chainaddr
|
||||
lw v1,0x0(v1) ; r3 = *r3
|
||||
and v0,v0,t2 ; r2 & ff000000
|
||||
and v1,v1,s0 ;r3 & 00FFFFFF
|
||||
or v0,v0,v1 ; r2 | r3 = 04FFFFFF - commands with FFFFFF
|
||||
sw v0,0x0(r5) ; *curChainAddr r5 = r2 (upd ..04 with ..FF04)
|
||||
lw r4,0x18(t1) ; r4 = *r8+18 (first chain addr?)
|
||||
nop
|
||||
lw v0,0x0(r4) ; r2 = *r4 FIRST CHAIN LINK TO NEXT??
|
||||
and v1,r5,s0 ; r3 = r5 (cur chain) & 00FFFFFF
|
||||
and v0,v0,t2 ; r2 & FF000000
|
||||
or v0,v0,v1 ; r2 | r3 = last chain adr w 10&....
|
||||
sw v0,0x0(r4) ; *r4 = r2 FIRST CHAIN NEXT ADDR???
|
||||
sw r5,0x18(t1) ;t0->t1 ; r5 = *r8+18 curChainAddr
|
||||
lhu v0,0x4(t4) ;t1->t4 r2 = half (DMA params)+4 (charCounter)
|
||||
nop
|
||||
bne v0,zero,NotFirstChar ; if CharCount<>0 then Goto...
|
||||
nop
|
||||
sw r5,0x28(t1) ;t0->t1 ;*curChain+28 = currentChainAddr
|
||||
sw t8,0xc(t4) ;t1->t4 ; Params+0c = save half X STORE COORDS
|
||||
;sh s2,0xe(t4) ;t1->t4 ;Params+0e = save half Y
|
||||
NotFirstChar:
|
||||
lui r5,0x1f80
|
||||
lw v0,-0x4930(s1);>8007b6d0_freeChain r2 = *nextFreeChain
|
||||
ori r5,r5,0x348 ; r5 | 1f800348 = Scratch CharData
|
||||
and r4,v0,t2 ; r4 = r2 & FF000000
|
||||
and v0,v0,s0 ; r2 & 00FFFFFF
|
||||
or r7,v0,s7 ;t4->s7 (800...) ; r7 = r2 | r12 = nextChain & 80...
|
||||
move r6,r7 ; r6 = r7 (nextChain)
|
||||
lw v0,0x4(s5) ; CmdCounter r2 = DMA Counter
|
||||
lw v1,0x0(r7) ; r3 = New Free ChainAddr / currHeader Addr
|
||||
addiu v0,v0,-0x1 ; r2 -= 1 Counter Down
|
||||
and v1,v1,s0 ; r3 & 00FFFFFF cut commandCount / currHeader
|
||||
or r4,r4,v1 ; r4 & r3 = ff......
|
||||
sw v0,0x4(s5);>DAT_8007b6d4_CmdCounter save DMA Counter
|
||||
andi v0,r7,0x3 ; r2 = r7 & 3 (check destAddr MOD 4)
|
||||
|
||||
lui t3,0x1f80
|
||||
ori t3,t3,0x388 ; Scratch DMAChain CharEndAddr
|
||||
|
||||
beq v0,zero,Copy16Bytes ; if r7 MOD 4 = 0 then Branch
|
||||
sw r4,-0x4930(s1);>8007b6d0_freeChain save new freeChain
|
||||
|
||||
;;;;;;;;;;;;;;;Copy from ScratchPad To Chain
|
||||
|
||||
CopyBy2Bytes:
|
||||
lwl t6,0x3(r5) ; if r7 mod4 <> 0 - копируем по 2 байта
|
||||
lwr t6,0x0(r5);>DAT_1f800348
|
||||
lwl t7,0x7(r5)
|
||||
lwr t7,0x4(r5);>DAT_1f80034c
|
||||
lwl t8,0xb(r5)
|
||||
lwr t8,0x8(r5);>DAT_1f800350
|
||||
lwl t5,0xf(r5)
|
||||
lwr t5,0xc(r5);>DAT_1f800354
|
||||
swl t6,0x3(r6)
|
||||
swr t6,0x0(r6)
|
||||
swl t7,0x7(r6)
|
||||
swr t7,0x4(r6)
|
||||
swl t8,0xb(r6)
|
||||
swr t8,0x8(r6)
|
||||
swl t5,0xf(r6)
|
||||
swr t5,0xc(r6)
|
||||
addiu r5,r5,0x10
|
||||
bne r5,t3,CopyBy2Bytes
|
||||
addiu r6,r6,0x10
|
||||
j last4BytesCopy
|
||||
nop
|
||||
Copy16Bytes:
|
||||
lw t6,0x0(r5);>DAT_1f800348 r5 - curScratchAddr,r6 -cur DMAAddr
|
||||
lw t7,0x4(r5)
|
||||
lw t8,0x8(r5)
|
||||
lw t5,0xc(r5)
|
||||
sw t6,0x0(r6)
|
||||
sw t7,0x4(r6)
|
||||
sw t8,0x8(r6)
|
||||
sw t5,0xc(r6)
|
||||
addiu r5,r5,0x10
|
||||
bne r5,t3,Copy16Bytes
|
||||
addiu r6,r6,0x10
|
||||
last4BytesCopy:
|
||||
lwl t6,0x3(r5) ; r14 left = 2 bytes from *r5+3
|
||||
lwr t6,0x0(r5);>DAT_1f800358 r14 right = 2 bytes from *r5
|
||||
nop
|
||||
swl t6,0x3(r6) ; *r6 = r14 left
|
||||
swr t6,0x0(r6) ; *r6+3 = r14 right
|
||||
; linking DMA char+copysprite
|
||||
|
||||
; t1 = t0 (small) !!!!
|
||||
; t4 = t1 (small) !!!!
|
||||
lw v1,0x18(t1) ; r3 = current DMACopySprite Chain
|
||||
lw v0,0x0(r7) ; r2 = current CharChainCommands
|
||||
lw v1,0x0(v1) ; r3 = *r3 (comNum+FFFFFF(nextLink))
|
||||
and v0,v0,t2 ; r2 & FF.....
|
||||
and v1,v1,s0 ; r3 & 00FFFFFF
|
||||
or v0,v0,v1 ; r2 | r3 = 10FFFFFF(cmdNum&FF..)
|
||||
sw v0,0x0(r7) ; *r7 = r2 saveCurChainCmd
|
||||
lw r4,0x18(t1) ; r4 = r8+18h - cur CopySpriteCmd hdrAddr
|
||||
nop
|
||||
lw v0,0x0(r4) ; r2 = *r4 (04FFFFFF)
|
||||
and v1,r7,s0 ; r3 = r7 & 00FFFFFF (Copying Cur Char Chain)
|
||||
and v0,v0,t2 ; r2 & FF000000 (04000000) CmdCount
|
||||
or v0,v0,v1 ; R2 | R3 = 04(cmd)..+CharChainAddr
|
||||
sw v0,0x0(r4) ; *r4 = r2 = FullCommand With Link!!!
|
||||
; (04..CharAddr) + SpriteCopyCommand
|
||||
sw r7,0x18(t1) ; *r8+18 = Last Char Chain!
|
||||
addiu t1,t1,0x4 ; r8 (params) += 4 (shift params for NextPage)
|
||||
addiu v0,t4,0x8 ; r2 = r9+8 (shift first chain param for Page)
|
||||
sltu v0,t1,v0 ; r2 = r8 < r2(r9+8) (first page pass)
|
||||
bne v0,zero,PageLoop ; if r2<>0 (r8<r2) then goto Next Page Loop
|
||||
nop
|
||||
|
||||
SpaceCharJumpHere:
|
||||
;;;CharCount + Check
|
||||
lhu v0,0x4(r20) ; r2 = current charCount
|
||||
nop
|
||||
addiu v0,v0,0x1 ; a += 1
|
||||
lui t3,MyAddr
|
||||
lhu v1,-0x10(t3) ; r3 = My charCount In string
|
||||
lbu r4,0x0(s6) ; load next Char to r4 (byte)
|
||||
addiu s6,s6,0x1 ;Shift CharAddr
|
||||
sh v0,0x4(r20) ; r2 = save to chain
|
||||
|
||||
bne v0,v1,NextChar ; if currentChar<>OverallChar - branch
|
||||
nop
|
||||
TextEnd:
|
||||
clear r18
|
||||
lui s3,0x8008
|
||||
addiu s5,s3,-0x4930 ; r19 = 80080000, r21 = 7b6d0
|
||||
lui s1,0xff ; r17 = 00ff0000
|
||||
ori s1,s1,0xffff ; r17 & ffff = 00ff ffff
|
||||
move s0,r20 ; r16 = r20 (currentTLineParam)
|
||||
clear r5
|
||||
PageTLoop: ;ALMOST FINISH!!!!
|
||||
li r6,0x1 ; r6=1
|
||||
addu r18,r18,r6 ; r18(Counter) += r6
|
||||
lui v0,0x8000 ; r2 = 80000000
|
||||
lui r4,0xff00 ; r4 = ff00 0000
|
||||
lw v1,-0x4930(s3);>8007b6d0_freeChain r3 = next free Chain (*7b6d0)
|
||||
lw r7,0xa4(gp);>DAT_8007b234 r7 = someParam(почти DMA)gp+a4 = 34
|
||||
and v1,v1,s1 ; r3 & 00FFFFFF
|
||||
or v1,v1,v0 ; r3 | r2 = 80.....
|
||||
sw v1,0x30(s0) ; store last free ChAddr to DMAParams
|
||||
lw v0,-0x4930(s3);>8007b6d0_freeChain r2 = next free chain
|
||||
lw v1,0x0(v1) ; r3 = *r3 = last chain - made one more chain
|
||||
and v0,v0,r4 ; a2 & ff000000
|
||||
and v1,v1,s1 ; r3 & 00FFFFFF
|
||||
lw r4,0x4(s5);>DAT_8007b6d4_CmdCounter r4 = DMA Counter
|
||||
or v0,v0,v1 ; r2 | r3
|
||||
sw v0,-0x4930(s3);>8007b6d0_freeChain new free chain addr add to *7b6b0
|
||||
addiu r4,r4,-0x1 ; DMA Cunter =- 1
|
||||
sw r4,0x4(s5);>DAT_8007b6d4_CmdCounter Store DMA Count
|
||||
lw r4,0x30(s0) ; r4 = *DMA params + 30 = Start Of DMA Chain
|
||||
jal SetDrawTPage ; Set DRAW PAGE
|
||||
addiu s0,s0,0x4 ; r16 += 4 - Shgift DMAParams for next Page
|
||||
sltiu v0,r18,0x2 ; r2 = r18<2
|
||||
bne v0,zero,PageTLoop ; if not r2 then goto Loop
|
||||
clear r5 ; r5 = 0
|
||||
move v0,r20 ; r2 = DMAParamsMain
|
||||
|
||||
lw ra,0x4c(sp)
|
||||
lw s8,0x48(sp)
|
||||
lw s7,0x44(sp)
|
||||
lw s6,0x40(sp)
|
||||
lw s5,0x3c(sp) ;restoring regs from Stack
|
||||
lw s4,0x38(sp)
|
||||
lw s3,0x34(sp)
|
||||
lw s2,0x30(sp)
|
||||
lw s1,0x2c(sp)
|
||||
lw s0,0x28(sp)
|
||||
|
||||
jr ra
|
||||
addiu sp,sp,0x50
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chars / 2 Return Func
|
||||
|
||||
.include "charload.asm"
|
||||
|
||||
.include "charCalcs.asm"
|
||||
|
||||
.close
|
||||
|
||||
.include "txtpatches.asm" ;misc text patches
|
||||
760
1_IS/_OLD_main_making_offsets.asm
Normal file
760
1_IS/_OLD_main_making_offsets.asm
Normal file
@@ -0,0 +1,760 @@
|
||||
;
|
||||
; Persona 2 Innocent Sin (PSX) JAP / Custom Characters/Data Patch
|
||||
;
|
||||
; Author: Sergey Shemet 12/10/2021
|
||||
|
||||
.psx
|
||||
|
||||
|
||||
|
||||
.definelabel SetDrawTPage, 0x800542cc
|
||||
.definelabel storeColor, 0x8001b0c8
|
||||
.definelabel initCopyCharChain, 0x8001a070
|
||||
.definelabel makeCharPixels, 0x8001a08f ;need custom routine with custom font
|
||||
.definelabel GenerateSmallChar, 0x8001a284 ;need custom routine
|
||||
.definelabel MakeShadowSmallChar, 0x8001a20c
|
||||
.definelabel PrintBigDMAText, 0x80019300
|
||||
|
||||
.definelabel MyAddr, 0x8009
|
||||
|
||||
|
||||
.open "SLPS_021.00", 0x8000F800
|
||||
|
||||
|
||||
.include "complex_strings_copy.asm" ;Make complex strings in battles
|
||||
|
||||
;;neeeeed to init 8008fff6 = min dma commands
|
||||
|
||||
.org 0x80090000
|
||||
ExternalPrint:
|
||||
;;;;;;;text routing test routine
|
||||
move r3,s3
|
||||
move s3,r4
|
||||
|
||||
lhu v0,0x0(s3) ;read half 2 bytes of text (r4, not s1+0c!!!!!)
|
||||
move s3,r3
|
||||
srl v1,v0,0xD ;;;;Check 13th bit (1byte system !!!)
|
||||
bne v1,zero,MyPrintLineRoutine
|
||||
clear v1
|
||||
j PrintBigDMAText
|
||||
nop
|
||||
|
||||
;;;;;;;;;;;;;;;;;MyPrintLineRoutine
|
||||
MyPrintLineRoutine:
|
||||
addiu sp,sp,-0x50
|
||||
sw s6,0x40(sp)
|
||||
move s6,r4 ;textReadAddr
|
||||
sw s1,0x2c(sp)
|
||||
move s1,r5
|
||||
sw s2,0x30(sp)
|
||||
move s2,r6
|
||||
sw s3,0x34(sp)
|
||||
clear r25 ;CURRENT TEXT MODE
|
||||
|
||||
|
||||
; NEW COMMAND OBRAB
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;lw v1,0x0(s6)
|
||||
;nop
|
||||
;v1/r3 - MyChars charcount
|
||||
andi v0,v0,0xff
|
||||
addiu s6,s6,0x2 ;Moving text read pointer +2bytes
|
||||
|
||||
|
||||
|
||||
lui s3,MyAddr
|
||||
sw v0,-0x10(s3) ;store bytecounter @ 8008fff0 and clean charCounter (8008fff2)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
lui s3,0x1f80
|
||||
ori s3,s3,0x3d0 ;s3 = 1f8003d0 - copysprite cmd in scratch
|
||||
lui t0,0xff
|
||||
ori t0,t0,0xffff ;t0 = 00FFFFFF
|
||||
|
||||
sw s0, 0x28(sp) ;save s0 in stack
|
||||
andi s0,r7,0xff ;s0 - cut textMode (color & shadow)
|
||||
move r4,s0 ;r4 = s0 (cutted color)
|
||||
lui r7, 0x8008 ;r7 = 8008 0000
|
||||
lui r6, 0xff00 ;r6 = FF000000
|
||||
|
||||
addiu t1,r7,-0x4930 ;t1 = 8007b6d0 - new free CHAIN Here
|
||||
lw v1, -0x4930(r7) ;r3/v1 = load freeChain
|
||||
lbu r5,0x60(sp) ;shadow flag from stack to r5
|
||||
lui v0,0x8000 ;r2 = 8000 0000
|
||||
sw ra,0x4c(sp)
|
||||
sw s8,0x48(sp)
|
||||
sw s7,0x44(sp)
|
||||
sw s5,0x3c(sp) ; push ra,r30,r23,31,r20
|
||||
sw s4,0x38(sp)
|
||||
;;init chains
|
||||
and r6,v1,r6 ;r6 = r3 & ff000000 = FF000000
|
||||
andi r5,r5,0xff ;clean text mode (color/shadow)
|
||||
and v1,v1,t0 ;r3 & 00ffffff
|
||||
or r20,v1,v0 ;r20 - 80...+r3 = freeChain Main Addr
|
||||
lw v0,0x4(t1) ;Load DMA Counter
|
||||
lw v1,0x0(r20) ;r3 = next free Chain
|
||||
addiu v0,v0,-0x1 ;DMA Counter-1
|
||||
and v1,v1,t0 ; r3 & r8 (00ffffff) cut f.byte
|
||||
or r6,r6,v1 ; r6 | r3 = ff+r3 = next free Chain (FF...) +
|
||||
sw v0,0x4(t1) ;save DMACounter
|
||||
jal storeColor
|
||||
sw r6,-0x4930(r7) ;SAVE next free Chain (FF...) to 7b6d0
|
||||
move r4,r20 ;currentChainAddr
|
||||
sll r5,s1,0x10 ;r5 = X<<10h (003A0000)
|
||||
sra r5,r5,0x10 ; r5=r5>>10h 0000003A
|
||||
sll r6,s2,0x10 ; r6 = Y << 10h
|
||||
sra r6,r6,0x10 ;r6>>10h - 100% clean coords
|
||||
jal initCopyCharChain ;init line chains
|
||||
move r7,s0 ;store textMode _THIS IS FOR INIT
|
||||
|
||||
;;;;init ScratchPad
|
||||
;;;;;;;;;;;;;;;;;; CPU TO VRAM
|
||||
lui r7,0x1f80
|
||||
ori r7,r7,0x348 ;r7 = FIRST CHAR START
|
||||
;lui r6,0x1f80 ;LOWER HALF OF CHAR - DONT NEED!!!
|
||||
;ori r6,r6,0x38c
|
||||
li v0,0x2
|
||||
sh v0,0x1c(sp)
|
||||
li v0,0xc
|
||||
|
||||
lui r4,0xa000 ;r4 = a000 0000
|
||||
sh v0,0x1e(sp) ; SAVE 000C0002 TO STACK+1c
|
||||
|
||||
|
||||
|
||||
; INIT CHAR
|
||||
li r5,0x10 ;cmd count 10 00 00 00 =>DAT_1f80034b
|
||||
sb r5,0x3(r7) ;SAVE 0d 00 00 00 =>DAT_1f80034c cmdcount\
|
||||
sw r4,0x4(r7); SAVE a000000 TO DAT_1f80034c
|
||||
lhu t0,0xa0(gp) ;0310 ;Load x(0310) to r8
|
||||
lhu v0,0xa2(gp) ;01f0 ;Load y(01F0)to r2
|
||||
lui v1,0x100 ;0100 0000 flushcache
|
||||
lui at,0x1f80 ;scrathcpadStart
|
||||
sw v1,0x388(at) ;save 0x01 00 00 00 to end of 1st CHAR chain
|
||||
setY1:
|
||||
move s8,s2 ; r18 to r30 (y) !!!!!!!!!!!!!!!!!!!
|
||||
lh r5,0xa0(gp) ;for futher sprite X calc
|
||||
sh t0,0x18(sp)
|
||||
sh v0,0x1a(sp) ;SAVE CONCAT 013001f0 to stack
|
||||
lw r4,0x18(sp) ;LOAD 013001f0 from stack
|
||||
lw v0,0x1c(sp) ; r2 = 000c0002 from stack
|
||||
sw r4,0x8(r7) ;SAVE 013001f0 TO SCRATCH
|
||||
sw v0,0xc(r7) ;=>DAT_1f800354 r2 - 000c0002 to 1st char (to r7+0c)
|
||||
|
||||
lui v0,0x8001 ;load 80010000 to r2
|
||||
|
||||
;4bit table pattern
|
||||
.include "4bitPattern.asm"
|
||||
|
||||
; Copy Sprite DMA Command Forming
|
||||
li v0,0x4
|
||||
sb v0,0x3(s3) ; 04 00 00 00 to 3d0 (sb 04 to 3d3) CHAIN LENGTH
|
||||
li v0,0x64
|
||||
sb v0,0x7(s3) ;sb 64 to 3d7 (copySpriteCommand)
|
||||
li v0,0x80
|
||||
sb v0,0x4(s3)
|
||||
sb v0,0x5(s3)
|
||||
sb v0,0x6(s3) ;make 80 80 80 64 (3d4,5,6,7)
|
||||
bgez r5,LAB_800194fc
|
||||
SetX1:
|
||||
sh s1,0x20(sp) ;store X half to sp+10 !!!!!!!!!!!!!!!!!
|
||||
addiu t0,r5,0x3f
|
||||
LAB_800194fc: ;decoding coords for source sprite
|
||||
sra v0,t0,0x6 ;r2 = r6 >> 6 = 4
|
||||
sll v0,v0,0x6 ;r2 << 6 = 100
|
||||
subu v0,r5,v0 ;r2 = r6 - r2 = 30
|
||||
lh v1,0xa2(gp) ;r3 = load Y half from mem
|
||||
sll v0,v0,0x2 ;r2 << 2
|
||||
sb v0,0xc(s3) ; >DAT_1f8003dc ;STORE RECT SRC CHAR SPRITE X BYTE
|
||||
bgez v1,LAB_80019520 ;if Y r3>=0 - branch & r2=r3
|
||||
move v0,v1
|
||||
addiu v0,v1,0xff ;else r2 = ff - r3
|
||||
LAB_80019520:
|
||||
sra v0,v0,0x8
|
||||
sll v0,v0,0x8
|
||||
subu v0,v1,v0
|
||||
sb v0,0xd(s3) ; >DAT_1f8003dd ;STORE RECT SRC CHAR SPRITE Y BYTE
|
||||
lhu v1,0xa8(gp)
|
||||
;DIFF BETWEEN VERSs::::::::::::::::::::::
|
||||
li v0,0x8 ; r2 = 8 Sprite WIDTH
|
||||
sh v0,0x10(s3) ; 3e0 - 0008 save
|
||||
sh v1,0xe(s3);=>DAT_1f8003de ; *3de = r3 = 7df3 CLUT of RECT
|
||||
li v0,0xc ; r2 = c Sprite HEIGTH
|
||||
sh v0,0x12(s3) ; 3e2 - 000c save
|
||||
|
||||
;TEXT READ START
|
||||
lbu r4,0x0(s6) ;MAIN READ CHAR COMMAND - Load Byte Unsigned
|
||||
nop
|
||||
addiu s6,s6,0x1 ;Shift read address +1 byte
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;CHAR CHECK CUTTED!
|
||||
lui s1,0x8008 ;load 80080000 to r17
|
||||
addiu s5,s1,-0x4930 ;r21 = r17-4930= 7b6d0 (tempDMA)
|
||||
lui s0,0xff
|
||||
ori s0,s0,0xffff ;s0 = 00 ff ff ff
|
||||
lui s7,0x8000 ;r3 = 8000 0000
|
||||
NextChar:
|
||||
addiu r4,r4,-0x20 ;Shift unprintable symbols
|
||||
|
||||
|
||||
|
||||
li t2, 0xa0 ; минимальное значение оптимизированного кода (a0+20 = 192 (Русская А))
|
||||
sltu v0,r4,t2
|
||||
bne v0, zero, NotOptimized ; проверяем на русский текст и перепрыгиваем на старый режим, если нет.
|
||||
nop
|
||||
|
||||
.include "main_spritecopy.asm"
|
||||
|
||||
|
||||
NotOptimized:
|
||||
|
||||
|
||||
;ОБРАБОТКА ПРОБЕЛОВ
|
||||
|
||||
bne r4,zero,SpaceCheckBranch ;Если не пробел - перепрыгиваем сразу
|
||||
nop
|
||||
|
||||
lui t2,MyAddr
|
||||
lh v0,-0xE(t2) ;Load my temp CHAR COUNTER for check
|
||||
nop
|
||||
lh t3,-0x10(t2)
|
||||
addiu v0,v0,1 ;overall chars+1
|
||||
beq v0,t3,SpaceCheckBranch ;is last char - пробел не проверяем!
|
||||
nop
|
||||
|
||||
sh v0,-0xE(t2) ;Save charcount += 1
|
||||
lbu r4,0x0(s6) ;LOAD NEXT CHAR
|
||||
nop
|
||||
j NextChar
|
||||
addiu s6,s6,0x1 ;Shift read address +1 byte
|
||||
|
||||
|
||||
SpaceCheckBranch:
|
||||
|
||||
|
||||
|
||||
jal makeCharPixelsCustom ;MAKE SMALL CHAR IN SCRATCH ___ CUSTOM ROUTINE
|
||||
clear r18
|
||||
|
||||
; Coords XY init
|
||||
lw v0,0xb0(gp); =>DAT_8007b240_parms load r2 from r28+0b0 (7b240)(Xoffs)
|
||||
lui t2,MyAddr
|
||||
lh v1,-0xE(t2) ;Load my temp CHAR COUNTER for check
|
||||
; lhu v1,0x4(r20) ; current char = r3 = half *DMAAddr + 4
|
||||
addiu v0,v0,0x6 ; 0x06 * 6px btw letters!
|
||||
|
||||
|
||||
mult v1,v0 ; r3*r2 = xOffs*charNum
|
||||
|
||||
|
||||
|
||||
lui t2,0xff00 ; r10 = ld upper ff00 = ff000000
|
||||
move t4,r20 ; r12 = r20 (params)
|
||||
addiu t3,sp,0x10 ; r11 = sp + 10 = 807ffe50
|
||||
move t1,r20 ; r12 = r20 (params again)
|
||||
GetY:
|
||||
sh s8,0xa(s3) ; DAT_1f8003da *r19(1st scr DMA)+0a = r30 (Y??) !!!!!!!!!!!!!!!!
|
||||
GetX:
|
||||
lhu t5,0x20(sp) ; r13 = ld half (sp+20) = 003A ---X from sp+20 !!
|
||||
mflo t6 ; r14 = lo
|
||||
addu v0,t5,t6 ; r2 = r13 + r14 = X + Offset
|
||||
sh v0,0x8(s3) ;DAT_1f8003d8 save r2 half to 1f8003d8 = X (3A) !!!!!!!!!!!!!!!!
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IF Mode is not 0 = load 2 to page counter
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
PageLoop:
|
||||
;MAKING COPYSPRITE CHAIN
|
||||
lw v0,-0x4930(s1); r2 = *freeChainAddr
|
||||
nop
|
||||
and r4,v0,t2 ; r4 = r2 & ff00..
|
||||
and v0,v0,s0 ; r2 & 00FFFFFF
|
||||
or r5,v0,s7 ; r5 = r2 or r23 (80000000) = 801ADF10
|
||||
lw v0,0x4(s5) ; CmdCounter r2 = *7b6d0+4 = 705
|
||||
lw v1,0x0(r5) ; r3 = New Free ChainAddr
|
||||
addiu v0,v0,-0x1 ; r2 -= 1 Counter Down
|
||||
and v1,v1,s0 ; r3 & 00FFFFFF cut begin byte
|
||||
or r4,r4,v1 ; r4 & r3 = ff......
|
||||
sw v0,0x4(s5) ; CmdCounter save DMA Counter
|
||||
sw r4,-0x4930(s1); freeChain save new freeChain
|
||||
CopyCmdFromScratch:
|
||||
; CopyScriptChain copy from scratch
|
||||
|
||||
|
||||
contStandartDMA:
|
||||
lui t6,0x500 ; set 4 commands in next chain
|
||||
nop
|
||||
sw t6,0x0(r5) ; set 5 commands
|
||||
nop
|
||||
lui t6, 0xe100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
ori t6,0x0234 ;;;;;;;make changepage command in every command to standart
|
||||
sw t6,0x4(r5) ;store it before all 6400000 command
|
||||
|
||||
addiu r5,4 ;SHIFT DEST ADDR
|
||||
|
||||
|
||||
lw t7,0x4(s3) ;>DAT_1f8003d4 r15 = 64808080 - CopySpriteCmd
|
||||
lw t8,0x8(s3) ;>DAT_1f8003d8 r24 = 001500d1 - xy screen coords
|
||||
lw t5,0xc(s3); >DAT_1f8003dc r13 = 7fd3f0c0 (CLUT & tex coord page)
|
||||
|
||||
sw t7,0x4(r5) ; *r5+4 = r15
|
||||
sw t8,0x8(r5) ; *r5+8 = r24
|
||||
sw t5,0xc(r5) ; *r5+c = r13
|
||||
lw t6,0x10(s3);>DAT_1f8003e0 r14 = 000c0008 - spritesize after copy
|
||||
nop
|
||||
sw t6,0x10(r5) ; *r5+10 = r14 - LAST COMMAND SAVE
|
||||
|
||||
addiu r5,-0x4 ;SHIFT DEST ADDR MINUS
|
||||
|
||||
|
||||
clear r25 ;clearing r25 (reset current chars status)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
lw v1,0x18(t1) ;r3 = *r9+18 (next param???)
|
||||
lw v0,0x0(r5) ; r2 = *cur New Chainaddr
|
||||
lw v1,0x0(v1) ; r3 = *r3
|
||||
and v0,v0,t2 ; r2 & ff000000
|
||||
and v1,v1,s0 ;r3 & 00FFFFFF
|
||||
or v0,v0,v1 ; r2 | r3 = 04FFFFFF - commands with FFFFFF
|
||||
sw v0,0x0(r5) ; *curChainAddr r5 = r2 (upd ..04 with ..FF04)
|
||||
lw r4,0x18(t1) ; r4 = *r8+18 (first chain addr?)
|
||||
nop
|
||||
lw v0,0x0(r4) ; r2 = *r4 FIRST CHAIN LINK TO NEXT??
|
||||
and v1,r5,s0 ; r3 = r5 (cur chain) & 00FFFFFF
|
||||
and v0,v0,t2 ; r2 & FF000000
|
||||
or v0,v0,v1 ; r2 | r3 = last chain adr w 10&....
|
||||
sw v0,0x0(r4) ; *r4 = r2 FIRST CHAIN NEXT ADDR???
|
||||
sw r5,0x18(t1) ;t0->t1 ; r5 = *r8+18 curChainAddr
|
||||
|
||||
|
||||
lhu v0,0x4(t4) ;t1->t4 r2 = half (DMA params)+4 (charCounter)
|
||||
nop
|
||||
bne v0,zero,NotFirstChar ; if CharCount<>0 then Goto...
|
||||
nop
|
||||
sw r5,0x28(t1) ;t0->t1 ;*curChain+28 = currentChainAddr
|
||||
sw t8,0xc(t4) ;t1->t4 ; Params+0c = save half X STORE COORDS
|
||||
|
||||
clear v0
|
||||
sb v0,-0x1(r20) ;store first char offset for moving string (is first in new type)
|
||||
;sh v0,-0x8(t4) ;store first char offset for moving string (is first in new type)
|
||||
nop
|
||||
|
||||
;sh s2,0xe(t4) ;t1->t4 ;Params+0e = save half Y
|
||||
NotFirstChar:
|
||||
lui r5,0x1f80 ;;;;;;;;;;;;;;;;;;;;;;;ADDRESS OF CHAR HERe ---> SLL CHARNUM, 6
|
||||
|
||||
lw v0,-0x4930(s1);>8007b6d0_freeChain r2 = *nextFreeChain
|
||||
ori r5,r5,0x348 ; r5 | 1f800348 = Scratch CharData
|
||||
and r4,v0,t2 ; r4 = r2 & FF000000
|
||||
and v0,v0,s0 ; r2 & 00FFFFFF
|
||||
or r7,v0,s7 ;t4->s7 (800...) ; r7 = r2 | r12 = nextChain & 80...
|
||||
move r6,r7 ; r6 = r7 (nextChain)
|
||||
lw v0,0x4(s5) ; CmdCounter r2 = DMA Counter
|
||||
lw v1,0x0(r7) ; r3 = New Free ChainAddr / currHeader Addr
|
||||
addiu v0,v0,-0x1 ; r2 -= 1 Counter Down
|
||||
and v1,v1,s0 ; r3 & 00FFFFFF cut commandCount / currHeader
|
||||
or r4,r4,v1 ; r4 & r3 = ff......
|
||||
sw v0,0x4(s5);>DAT_8007b6d4_CmdCounter save DMA Counter
|
||||
andi v0,r7,0x3 ; r2 = r7 & 3 (check destAddr MOD 4)
|
||||
|
||||
lui t3,0x1f80
|
||||
ori t3,t3,0x388 ; Scratch DMAChain CharEndAddr
|
||||
|
||||
beq v0,zero,Copy16Bytes ; if r7 MOD 4 = 0 then Branch
|
||||
sw r4,-0x4930(s1);>8007b6d0_freeChain save new freeChain
|
||||
|
||||
;;;;;;;;;;;;;;;Copy from ScratchPad To Chain
|
||||
|
||||
CopyBy2Bytes:
|
||||
lwl t6,0x3(r5) ; if r7 mod4 <> 0 - копируем по 2 байта
|
||||
lwr t6,0x0(r5);>DAT_1f800348
|
||||
lwl t7,0x7(r5)
|
||||
lwr t7,0x4(r5);>DAT_1f80034c
|
||||
lwl t8,0xb(r5)
|
||||
lwr t8,0x8(r5);>DAT_1f800350
|
||||
lwl t5,0xf(r5)
|
||||
lwr t5,0xc(r5);>DAT_1f800354
|
||||
swl t6,0x3(r6)
|
||||
swr t6,0x0(r6)
|
||||
swl t7,0x7(r6)
|
||||
swr t7,0x4(r6)
|
||||
swl t8,0xb(r6)
|
||||
swr t8,0x8(r6)
|
||||
swl t5,0xf(r6)
|
||||
swr t5,0xc(r6)
|
||||
addiu r5,r5,0x10
|
||||
bne r5,t3,CopyBy2Bytes
|
||||
addiu r6,r6,0x10
|
||||
j last4BytesCopy
|
||||
nop
|
||||
Copy16Bytes:
|
||||
lw t6,0x0(r5);>DAT_1f800348 r5 - curScratchAddr,r6 -cur DMAAddr
|
||||
lw t7,0x4(r5)
|
||||
lw t8,0x8(r5)
|
||||
lw t5,0xc(r5)
|
||||
sw t6,0x0(r6)
|
||||
sw t7,0x4(r6)
|
||||
sw t8,0x8(r6)
|
||||
sw t5,0xc(r6)
|
||||
addiu r5,r5,0x10
|
||||
bne r5,t3,Copy16Bytes
|
||||
addiu r6,r6,0x10
|
||||
last4BytesCopy:
|
||||
lwl t6,0x3(r5) ; r14 left = 2 bytes from *r5+3
|
||||
lwr t6,0x0(r5);>DAT_1f800358 r14 right = 2 bytes from *r5
|
||||
nop
|
||||
swl t6,0x3(r6) ; *r6 = r14 left
|
||||
swr t6,0x0(r6) ; *r6+3 = r14 right
|
||||
; linking DMA char+copysprite
|
||||
|
||||
|
||||
lw v1,0x18(t1) ; r3 = current DMACopySprite Chain
|
||||
lw v0,0x0(r7) ; r2 = current CharChainCommands
|
||||
lw v1,0x0(v1) ; r3 = *r3 (comNum+FFFFFF(nextLink))
|
||||
and v0,v0,t2 ; r2 & FF.....
|
||||
and v1,v1,s0 ; r3 & 00FFFFFF
|
||||
or v0,v0,v1 ; r2 | r3 = 10FFFFFF(cmdNum&FF..)
|
||||
sw v0,0x0(r7) ; *r7 = r2 saveCurChainCmd
|
||||
lw r4,0x18(t1) ; r4 = r8+18h - cur CopySpriteCmd hdrAddr
|
||||
nop
|
||||
lw v0,0x0(r4) ; r2 = *r4 (04FFFFFF)
|
||||
and v1,r7,s0 ; r3 = r7 & 00FFFFFF (Copying Cur Char Chain)
|
||||
and v0,v0,t2 ; r2 & FF000000 (04000000) CmdCount
|
||||
or v0,v0,v1 ; R2 | R3 = 04(cmd)..+CharChainAddr
|
||||
sw v0,0x0(r4) ; *r4 = r2 = FullCommand With Link!!!
|
||||
; (04..CharAddr) + SpriteCopyCommand
|
||||
sw r7,0x18(t1) ; *r8+18 = Last Char Chain!
|
||||
addiu t1,t1,0x4 ; r8 (params) += 4 (shift params for NextPage)
|
||||
addiu v0,t4,0x8 ; r2 = r9+8 (shift first chain param for Page)
|
||||
sltu v0,t1,v0 ; r2 = r8 < r2(r9+8) (first page pass)
|
||||
bne v0,zero,PageLoop ; if r2<>0 (r8<r2) then goto Next Page Loop
|
||||
nop
|
||||
|
||||
|
||||
|
||||
OptimizedSpriteCopyEnd:
|
||||
|
||||
;;;CharCount + Check
|
||||
lhu v0,0x4(r20) ; r2 = current charDMACount
|
||||
nop
|
||||
addiu v0,v0,0x1 ; a += 1
|
||||
sh v0,0x4(r20) ;save DMAcounter to chain
|
||||
nop
|
||||
|
||||
|
||||
;DMA OVERFLOW CHECK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (8007b6d4)
|
||||
lui t3,MyAddr
|
||||
lw v0,0x4(s5) ; CmdCounter r2 = DMA Counter
|
||||
lhu v1,-0xC(t3) ;v1 = 8008fff4 = minimum cmd counter
|
||||
nop
|
||||
sltu v0,v0,v1 ; v0 = v0 < V1 ?
|
||||
bne v0,zero,TextEnd ;if v0<>0 then Goto End Text (DMA OVERFLOW!!!!)
|
||||
nop
|
||||
|
||||
|
||||
|
||||
|
||||
;lui t3,MyAddr
|
||||
lhu v0,-0xE(t3) ; r2 = charCount In string
|
||||
lhu v1,-0x10(t3) ; r3 = My charOverAll In string
|
||||
addiu v0,v0,0x1 ; a += 1
|
||||
lbu r4,0x0(s6) ; load next Char to r4 (byte)
|
||||
|
||||
sh v0,-0xE(t3) ; store myCharCounter to MyAddr-E
|
||||
addiu s6,s6,0x1 ;Shift CharAddr
|
||||
|
||||
bne v0,v1,NextChar ; if currentChar<>OverallChar - branch
|
||||
nop
|
||||
TextEnd:
|
||||
clear r18
|
||||
lui s3,0x8008
|
||||
addiu s5,s3,-0x4930 ; r19 = 80080000, r21 = 7b6d0
|
||||
lui s1,0xff ; r17 = 00ff0000
|
||||
ori s1,s1,0xffff ; r17 & ffff = 00ff ffff
|
||||
move s0,r20 ; r16 = r20 (currentTLineParam)
|
||||
clear r5
|
||||
clear r25 ;clearing r25 (reset current chars status)
|
||||
PageTLoop: ;ALMOST FINISH!!!!
|
||||
li r6,0x1 ; r6=1
|
||||
addu r18,r18,r6 ; r18(Counter) += r6
|
||||
lui v0,0x8000 ; r2 = 80000000
|
||||
lui r4,0xff00 ; r4 = ff00 0000
|
||||
lw v1,-0x4930(s3);>8007b6d0_freeChain r3 = next free Chain (*7b6d0)
|
||||
;;;;;;;;;;;;;;;;
|
||||
lw r7,0xa4(gp);>DAT_8007b234 r7 = Texture page = 34
|
||||
beq r25,zero, lastTextPageDefaul
|
||||
nop
|
||||
li r7,0x3f ;IF MODE<>0 then TexturePage = 23F
|
||||
;;;;;;;;;;;;;;;''
|
||||
lastTextPageDefaul:
|
||||
|
||||
and v1,v1,s1 ; r3 & 00FFFFFF
|
||||
or v1,v1,v0 ; r3 | r2 = 80.....
|
||||
sw v1,0x30(s0) ; store last free ChAddr to DMAParams
|
||||
lw v0,-0x4930(s3);>8007b6d0_freeChain r2 = next free chain
|
||||
lw v1,0x0(v1) ; r3 = *r3 = last chain - made one more chain
|
||||
and v0,v0,r4 ; a2 & ff000000
|
||||
and v1,v1,s1 ; r3 & 00FFFFFF
|
||||
lw r4,0x4(s5);>DAT_8007b6d4_CmdCounter r4 = DMA Counter
|
||||
or v0,v0,v1 ; r2 | r3
|
||||
sw v0,-0x4930(s3);>8007b6d0_freeChain new free chain addr add to *7b6b0
|
||||
addiu r4,r4,-0x1 ; DMA Cunter =- 1
|
||||
sw r4,0x4(s5);>DAT_8007b6d4_CmdCounter Store DMA Count
|
||||
lw r4,0x30(s0) ; r4 = *DMA params + 30 = Start Of DMA Chain
|
||||
jal SetDrawTPage ; Set DRAW PAGE
|
||||
addiu s0,s0,0x4 ; r16 += 4 - Shgift DMAParams for next Page
|
||||
sltiu v0,r18,0x2 ; r2 = r18<2
|
||||
bne v0,zero,PageTLoop ; if not r2 then goto Loop
|
||||
clear r5 ; r5 = 0
|
||||
move v0,r20 ; r2 = DMAParamsMain
|
||||
|
||||
lw ra,0x4c(sp)
|
||||
lw s8,0x48(sp)
|
||||
lw s7,0x44(sp)
|
||||
lw s6,0x40(sp)
|
||||
lw s5,0x3c(sp) ;restoring regs from Stack
|
||||
lw s4,0x38(sp)
|
||||
lw s3,0x34(sp)
|
||||
lw s2,0x30(sp)
|
||||
lw s1,0x2c(sp)
|
||||
lw s0,0x28(sp)
|
||||
|
||||
jr ra
|
||||
addiu sp,sp,0x50
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chars / 2 Return Func
|
||||
|
||||
.include "charload.asm"
|
||||
|
||||
.include "charCalcs.asm"
|
||||
|
||||
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 0x8001a7dc
|
||||
;;;;;text patch for Text MOVING & OFFSET
|
||||
|
||||
|
||||
;make branch videocomand reading
|
||||
|
||||
|
||||
chainSpriteCheck:
|
||||
lbu v1,0x7(r5)
|
||||
li r27, 0xe1
|
||||
beq r27, v1, ShiftedCommandCheck
|
||||
nop
|
||||
j 0x8001a7e4 ;return
|
||||
nop
|
||||
|
||||
ShiftedCommandCheck:
|
||||
lbu v1,0xb(r5) ;my new shifted sprite command
|
||||
li r27, 0x64
|
||||
beq r27, v1, ShiftedCommandCheck2
|
||||
nop
|
||||
lbu v1,0x7(r5)
|
||||
nop
|
||||
j 0x8001a7e4 ;return
|
||||
nop
|
||||
|
||||
ShiftedCommandCheck2:
|
||||
lbu v1,0xb(r5)
|
||||
|
||||
goingback:
|
||||
j 0x8001a7e4 ;return
|
||||
nop
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 0x8001aa8c
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;text patch for Text MOVING & OFFSET
|
||||
getRightCoords:
|
||||
; lw r5, 0x28(t1) ;get chain addr from params
|
||||
;lhu r3, 0xc(t2) ;get X from params
|
||||
|
||||
lbu r4,0x7(r5)
|
||||
li r2,0xe1 ;if my new 5 commands?
|
||||
|
||||
bne r2,r4,oldStyleCommand
|
||||
nop
|
||||
addiu r5,4
|
||||
|
||||
oldStyleCommand:
|
||||
lhu r2, 0x8(r5) ;getting cur x (r5 is chain addr) --------!
|
||||
lhu r4, 0xe(t2) ;;getting Y from param
|
||||
subu r3,r3,r2 ; get X offset
|
||||
move r12,r3 ; Saving X offset in r12
|
||||
lhu r2, 0xa(r5) ;getting cur y from chain ----------!
|
||||
sll r3,r3,0x10 ;Shift r3 <<< 10 bits
|
||||
;add r2,r23 ;add
|
||||
subu r2,r4,r2 ;get Y offset
|
||||
|
||||
;clear r23
|
||||
returnToInnocence:
|
||||
j 0x8001aaa8 ;continue!
|
||||
nop
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 0x8001ab2c
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
|
||||
movesprite:
|
||||
lbu r2,0x07(r4)
|
||||
nop
|
||||
beq r2, t7, simpleSpriteCmd ;if r2 == t7 = 64
|
||||
nop
|
||||
beq r2, t6, simpleSpriteCmd ;if r2 == t6 = 66 --simple move
|
||||
nop
|
||||
li r3, 0xe1
|
||||
beq r2, r3, IsThisMyChain ;ReallyMyChain
|
||||
nop
|
||||
j exitmovesprite
|
||||
nop
|
||||
|
||||
ReallyMyChain:
|
||||
lbu r2,0x03(r4)
|
||||
li r3, 0x05
|
||||
beq r2, r3, IsThisMyChain
|
||||
nop
|
||||
j exitmovesprite
|
||||
nop
|
||||
|
||||
IsThisMyChain:
|
||||
lbu r2,0x0b(r4)
|
||||
nop
|
||||
beq r2, t7, notSimpleSpriteCommand ;is this my E1 + 64?
|
||||
nop
|
||||
j exitmovesprite
|
||||
nop
|
||||
|
||||
notSimpleSpriteCommand:
|
||||
; lbu t7,-0x1(t2) ;get offset XY
|
||||
lhu r2,0x0c(r4) ;load cur sprite X
|
||||
sra t6, t7, 0x4 ;shift 12 >> 4 = 1 pix (OR 0)
|
||||
addu r2,r2,t4 ;add chain offset
|
||||
;addu r2,r2,t6 ;adding myMainOffset X
|
||||
sh r2,0xC(r4)
|
||||
|
||||
|
||||
lhu r3,0xE(r4)
|
||||
andi t6, t7, 0xF ;get Y offset
|
||||
addu r3,r3,t3
|
||||
;addu r3,r3,t6 ;adding myMainOffset (1,2,0, etc...)
|
||||
addiu r3,r3,2
|
||||
|
||||
sh r3,0xE(r4)
|
||||
nop
|
||||
j exitmovesprite
|
||||
nop
|
||||
|
||||
simpleSpriteCmd:
|
||||
lhu r2,0x8(r4)
|
||||
lhu r3,0xA(r4)
|
||||
addu r2,r2,t4
|
||||
addu r3,r3,t3
|
||||
sh r2,0x8(r4)
|
||||
sh r3,0xA(r4)
|
||||
nop
|
||||
exitmovesprite:
|
||||
|
||||
j 0x8001ab5c ;EXIT TO MAIN routine
|
||||
|
||||
;;;;;;;;;;;;;;
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SET TEXT BRIGHTNESS
|
||||
|
||||
setTextBrightness:
|
||||
lbu r2,0x07(v1)
|
||||
nop
|
||||
beq r2, t1, simpleBright ;if r2 == t7 = 64
|
||||
nop
|
||||
beq r2, t0, simpleBright ;if r2 == t6 = 66 --simple move
|
||||
nop
|
||||
li r15, 0xe1
|
||||
beq r2, r15, ItsMyBrigth1 ;ReallyMyChain
|
||||
nop
|
||||
j exitbrightsprite
|
||||
nop
|
||||
|
||||
|
||||
ItsMyBrigth1:
|
||||
lbu r2,0x0b(v1)
|
||||
nop
|
||||
beq r2, t1, ItsMyBrigthMake ;is this my E1 + 64?
|
||||
nop
|
||||
j exitbrightsprite
|
||||
nop
|
||||
|
||||
ItsMyBrigthMake:
|
||||
sb s1,0x8(v1)
|
||||
sb s2,0x9(v1)
|
||||
sb s3,0xa(v1)
|
||||
j 0x8001ad6c
|
||||
nop
|
||||
|
||||
simpleBright:
|
||||
sb s1,0x4(v1)
|
||||
sb s2,0x5(v1)
|
||||
sb s3,0x6(v1)
|
||||
|
||||
exitbrightsprite:
|
||||
j 0x8001ad6c
|
||||
nop
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;Patching main code
|
||||
.org 0x8001a7dc
|
||||
;lbu v1,0x7(r5) ;- ORIGINAL load current command
|
||||
j chainSpriteCheck
|
||||
nop
|
||||
|
||||
.org 0x8001aa8c
|
||||
;lhu r2, 0x8(r5) ;getting cur x (r5 is chain addr) --------!
|
||||
;lhu r4, 0xe(t2) ;;getting Y from prarm param
|
||||
j getRightCoords
|
||||
nop
|
||||
|
||||
.org 0x8001ab2c
|
||||
;lbu v0,0x07(a0)
|
||||
j movesprite ;movingsprite routine
|
||||
nop
|
||||
|
||||
|
||||
.org 0x8001ad48
|
||||
;lbu v0,0x07(a1)
|
||||
j setTextBrightness ;textbrightness routine
|
||||
nop
|
||||
.close
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;; BOSSNAMECOPY
|
||||
;.include "battle_patch.asm"
|
||||
|
||||
|
||||
|
||||
|
||||
.include "txtpatches.asm" ;misc text patches
|
||||
|
||||
; COMPILE COMMAND: ./armips -temp 123 main.asm
|
||||
234
1_IS/_OLD_main_spritecopy.asm
Normal file
234
1_IS/_OLD_main_spritecopy.asm
Normal file
@@ -0,0 +1,234 @@
|
||||
###############################################################
|
||||
#
|
||||
# OPTIMIZED RUSSIAN TEXT
|
||||
#
|
||||
#
|
||||
|
||||
# Это была славная попытка оптимизации русского текста (на манер Gemini), но она провалилась, так как под все возможные алфавиты просто нет места в видеопамяти
|
||||
# Зато мы научились писать команды копирования спрайтов и кодировать координаты vram и clut
|
||||
|
||||
|
||||
# Coords XY init
|
||||
lui t2,MyAddr
|
||||
|
||||
addiu v0,r4,-0xa0 #shift char code for A is 0
|
||||
sll v0,2 #charcode * 4
|
||||
ori v1,r17,0xf900 #current char params start
|
||||
|
||||
addu v0,v0,v1 # shift to current char params addr
|
||||
lw t7,0x0(v0) #t7 = CURRENT CHAR PARAMS load
|
||||
|
||||
addiu t8,t2,-0x500 #dest temp scratch addr 8008fb00
|
||||
clear r18
|
||||
|
||||
|
||||
|
||||
lh v1,-0xE(t2) #Load my temp CHAR COUNTER for check
|
||||
lhu t5,0x20(sp) # r13 = ld half (sp+20) = 003A ---X from sp+20
|
||||
|
||||
sll t6,v1,0x1 #t6 = charcount*2
|
||||
addu v1,t6,v1 #v1 = t6+v1 = charcount * 3
|
||||
sll v1,0x1 #v1 * 2 = charcount * 6
|
||||
addu v0,v1,t5 #v0 = INIT X + CURCHAR * 6
|
||||
|
||||
sh v0,0x8(s3) #DAT_1f8003d8 save r2 half to 1f8003d8 = X (3A) !!!!!!!!!!!!!!!!
|
||||
#SaveYinScratch:
|
||||
sh s8,0xa(s3) # DAT_1f8003da *r19(1st scr DMA)+0a = r30 (Y??) !!!!!!!!!!!!!!!!
|
||||
|
||||
|
||||
#lw t5,0x0(s3) #copying COMMAND 00 00 00 04
|
||||
#nop
|
||||
lui t5,0x400 #load 4 commands in command
|
||||
nop
|
||||
sw t5,0x0(t8) #paste to tempChain...
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
add5command:
|
||||
lui t5, 0x0500 # 'its 5 commands'
|
||||
sw t5,0x0(t8) #paste...
|
||||
lui t6, 0xe100#################################
|
||||
ori t6,0x023f #e100023f - TextPage = interfaceTim - BEFORE LAST COMMAND
|
||||
sw t6,0x4(t8) #paste...
|
||||
addiu t8, 0x4 #SHIFT temp DMA addr +4 (After TexPage)
|
||||
|
||||
|
||||
|
||||
|
||||
IsRusChar:
|
||||
|
||||
lw t6,0x4(s3) #copying COMMAND 80 80 80 64
|
||||
nop
|
||||
sw t6,0x4(t8) #paste...
|
||||
|
||||
#######################DEST X AND Y HERE@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
lh t5,0x8(s3) #DEST X HERE
|
||||
nop # Need to recalculate X
|
||||
addiu t5, 0x1 #right 1 pixel >
|
||||
sh t5,0x8(t8) #paste DEST X
|
||||
|
||||
|
||||
lh t6,0xA(s3) #load dest Y
|
||||
sra v1, t7, 24 ##>> SHIFT 24 bits = Y vertical offset
|
||||
addu t6,t6,v1 #shift dest y
|
||||
#addiu t6,0x2
|
||||
sh t6,0xA(t8) #save dest y
|
||||
|
||||
|
||||
Ori v1,v1,0x10 #Concat X offs (1<< ) and Y vertical offset - 0x1(2)?
|
||||
sb v1,-0x8(t2) #Store coords to temp
|
||||
|
||||
|
||||
|
||||
li v1, 0xffff
|
||||
and v0, t7, v1 #truncate SRC (FFFF) coords from myTable
|
||||
sh v0,0xc(t8) #Saving source coords to chain
|
||||
|
||||
|
||||
|
||||
lbu v0, 0xac(gp) #load color
|
||||
li v1, 0x3d #initial CLUT X
|
||||
addiu v0,-0x1 # color-1
|
||||
sra v0, 1 # color /2
|
||||
addiu v0, 0x1b0 #vertical color shift in VRAM
|
||||
sll v0, 6 #vertical shift << 6 bits
|
||||
or t6,v0,V1 # vertical<<6 & horis = CLUT
|
||||
|
||||
|
||||
|
||||
sh t6,0xe(t8) #save clut
|
||||
|
||||
li v1,0xff
|
||||
li t5,6
|
||||
sh t5,0x10(t8) #paste...
|
||||
sra v0, t7, 16 #>> shift by 16 bit right
|
||||
and t5, v0, v1 #truncate (AND FF)
|
||||
|
||||
#NEED TO MAKE DEST SIZE IN T5
|
||||
sh t5,0x12(t8) #paste...
|
||||
|
||||
|
||||
|
||||
clear t6
|
||||
sw t6,0x14(t8)############################################
|
||||
|
||||
#Fixing text coords
|
||||
|
||||
#lw t7,0x8(t8) #LOAD X,Y TO T7 FOR STORE IN PARAMS!!
|
||||
lw t7,0x8(s3) #LOAD ORIGINAL X,Y TO T7 FOR STORE IN PARAMS!!
|
||||
nop
|
||||
|
||||
|
||||
|
||||
#MAIN COMMAND PAGELOOP INIT
|
||||
move t4,r20 # r12 = r20 (params)
|
||||
move t1,r20 # r12 = r20 (params again)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
PageLoop2:
|
||||
|
||||
lui t2,0xff00 # r10 = ld upper ff00 = ff000000 #DECREASE COUNTER & GET CHAIN ADDR
|
||||
lw v0,-0x4930(s1)# r2 = *freeChainAddr
|
||||
nop
|
||||
and r4,v0,t2 # r4 = r2 & ff00..
|
||||
and v0,v0,s0 # r2 & 00FFFFFF
|
||||
or r5,v0,s7 # r5 = r2 or r23 (80000000) = 801ADF10
|
||||
lw v0,0x4(s5) # CmdCounter r2 = *7b6d0+4 = 705
|
||||
lw v1,0x0(r5) # r3 = Next Free ChainAddr
|
||||
addiu v0,v0,-0x1 # r2 -= 1 Counter Down
|
||||
and v1,v1,s0 # r3 & 00FFFFFF cut begin byte
|
||||
or r4,r4,v1 # r4 & r3 = ff......
|
||||
sw v0,0x4(s5) # CmdCounter save DMA Counter
|
||||
sw r4,-0x4930(s1)# freeChain save new freeChain
|
||||
|
||||
|
||||
lui t8,0x8009
|
||||
addiu t8,t8,-0x500 #reset temp dma to 8008fb00
|
||||
CopyCmdFromTemp:
|
||||
lw t5,0x0(t8) #copying chain (comand count)
|
||||
lw t6,0x4(t8) #copying (comand id)
|
||||
sw t5,0x0(r5) #paste...
|
||||
sw t6,0x4(r5) #paste...
|
||||
lw t5,0x8(t8) #copying chain (YyyyXxxx)
|
||||
lw t6,0xc(t8) #copying (clutYyXx) #COPYING FROM TEMP TO MAIN CHAIN
|
||||
sw t5,0x8(r5) #paste...
|
||||
sw t6,0xc(r5) #paste...
|
||||
lw t5,0x10(t8) #copying chain (SizeYSizeX)
|
||||
lw t6,0x14(t8) #copying (TexPage command???)
|
||||
sw t5,0x10(r5) #paste...
|
||||
sw t6,0x14(r5) #paste...
|
||||
|
||||
#need to make TexPage on First letter!
|
||||
|
||||
lhu v0,0x4(t4) #t1->t4 r2 = half (DMA params)+4 (charCounter)
|
||||
nop
|
||||
bne v0,zero,NotFirstCharForLastCommand # if CharCount<>0 then Goto...
|
||||
nop
|
||||
lui v0,0x0600 #6 COMMANDS! ON FIRST LETTER
|
||||
sw v0,0x0(r5)
|
||||
lui t5, 0xe100
|
||||
ori t5, 0x0234
|
||||
sw t5,0x018(r5) #store sixth command e100000234
|
||||
|
||||
|
||||
NotFirstCharForLastCommand:
|
||||
|
||||
#OR SHIFTED COMMAND
|
||||
|
||||
#NEED TO COPY XY TO T8 TO COPY TO PARAMS!!!!
|
||||
#lw t8,0x8(t8)
|
||||
|
||||
###
|
||||
lw v1,0x18(t1) #r3 = *r9+18 (next param???)
|
||||
lw v0,0x0(r5) # r2 = *cur New Chainaddr
|
||||
lw v1,0x0(v1) # r3 = *r3
|
||||
and v0,v0,t2 # r2 & ff000000
|
||||
and v1,v1,s0 #r3 & 00FFFFFF
|
||||
or v0,v0,v1 # r2 | r3 = 04FFFFFF - commands with FFFFFF
|
||||
sw v0,0x0(r5) # *curChainAddr r5 = r2 (upd ..04 with ..FF04)
|
||||
lw r4,0x18(t1) # r4 = *r8+18 (first chain addr?)
|
||||
nop
|
||||
lw v0,0x0(r4) # r2 = *r4 FIRST CHAIN LINK TO NEXT??
|
||||
and v1,r5,s0 # r3 = r5 (cur chain) & 00FFFFFF
|
||||
and v0,v0,t2 # r2 & FF000000
|
||||
or v0,v0,v1 # r2 | r3 = last chain adr w 10&....
|
||||
sw v0,0x0(r4) # *r4 = r2 FIRST CHAIN NEXT ADDR???
|
||||
|
||||
sw r5,0x18(t1) #t0->t1 # r5 = *r8+18 curChainAddr
|
||||
lhu v0,0x4(t4) #t1->t4 r2 = half (DMA params)+4 (charCounter)
|
||||
nop
|
||||
bne v0,zero,NotFirstChar2 # if CharCount<>0 then Goto...
|
||||
nop
|
||||
lui t2,MyAddr
|
||||
lb v0,-0x8(t2) #load offset coords from temp
|
||||
nop
|
||||
sb v0,0x3c(r20) #store first char offset for moving string (is first in new type)
|
||||
#andi v0, 0xF #V0 and F = Y offset
|
||||
|
||||
|
||||
|
||||
sw r5,0x28(t1) #t0->t1 #*curChain+28 = currentChainAddr
|
||||
sw t7,0xc(t4) #t1->t4 # Params+0c = save word X+Y STORE COORDS T7!!!!!
|
||||
|
||||
|
||||
|
||||
|
||||
NotFirstChar2:
|
||||
|
||||
addiu t1,t1,0x4 # r8 (params) += 4 (shift params for NextPage)
|
||||
addiu v0,t4,0x8 # r2 = r9+8 (shift first chain param for Page)
|
||||
sltu v0,t1,v0 # r2 = r8 < r2(r9+8) (first page pass)
|
||||
bne v0,zero,PageLoop2 # if r2<>0 (r8<r2) then goto Next Page Loop
|
||||
nop
|
||||
|
||||
j OptimizedSpriteCopyEnd
|
||||
nop
|
||||
102
1_IS/battle_patch.asm
Normal file
102
1_IS/battle_patch.asm
Normal file
@@ -0,0 +1,102 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;; BOSSNAMECOPY
|
||||
|
||||
.psx
|
||||
|
||||
.open "1_IS/BIN/0001_BATTLE_CODE.bin", 0x800AB000
|
||||
|
||||
.definelabel SimpleCopyString, 0x800ef150
|
||||
|
||||
.org 0x800f9e60
|
||||
;BOSSNAME COPY
|
||||
lhu r2,0x0(r5)
|
||||
addiu r5,2
|
||||
sh r2,0x0(r4)
|
||||
andi r3,r2,0xFF
|
||||
addiu r4,2
|
||||
nextch:
|
||||
lbu r2,0x0(r5)
|
||||
nop
|
||||
sb r2,0x0(r4)
|
||||
addiu r4,1
|
||||
addiu r5,1
|
||||
addiu r3,-1
|
||||
bne r3,zero,nextch
|
||||
nop
|
||||
jr ra
|
||||
nop
|
||||
|
||||
|
||||
;BATTLE CONTACT RUS SCRIPT BUILDING
|
||||
CheckAndCopyRusInScript:
|
||||
lhu r3,0x0(r5)
|
||||
nop
|
||||
srl r3,r3,0xD ;;;;Check 13th bit (1byte system !!!)
|
||||
bne v1,zero,MyCopy
|
||||
nop
|
||||
j SimpleCopyString
|
||||
nop
|
||||
|
||||
MyCopy:
|
||||
lhu r3,0x0(r5)
|
||||
nop
|
||||
andi r3,r3,0xFF
|
||||
addiu r3,2
|
||||
nx:
|
||||
lbu r2,0x0(r5)
|
||||
nop
|
||||
sb r2,0x0(r4)
|
||||
addiu r4,1
|
||||
addiu r3,-1
|
||||
bne r3,zero,nx
|
||||
addiu r5,1
|
||||
|
||||
;needToCheck And1 ;ODD_OR_EVEN???
|
||||
andi r2,r4,0x1
|
||||
beq r2,zero,notAnd1_3
|
||||
nop
|
||||
addiu r4,r4,0x1
|
||||
|
||||
|
||||
notAnd1_3:
|
||||
jr ra
|
||||
move r2,r4 ;Duplicate for futher script
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ДИНАМИЧЕСКОЕ ОБРУБАНИЕ ТЕКСТА В БОЁВКЕ!
|
||||
|
||||
.org 0x800f9f20
|
||||
lui r2,0x8011 ;;; LUI ---==== LOAD UPPER INTEGER
|
||||
lbu r2,0x0bc8(r2)
|
||||
nop
|
||||
li r3,3
|
||||
bne r2,r3,not3 ;if mode not 3 = limit 30!
|
||||
li r3,0x30 ;ЭТА СРОКА ВЫПОЛНИТСЯ ПРИ ПЕРЕХОДЕ. Если перехода нет, то r3 перезаписывается. Итого экономим 32 байта на дублях команд
|
||||
|
||||
li r3,0x80 ;Эта строка выполнится только если в 80110bc8 будет 03 (режим общения)
|
||||
not3:
|
||||
lui r2,0x8009 ;загружаем адрес 80090000 в r2
|
||||
sb r3,-0x0c(r2) ;Записываем новый лимит в 80090000 - 0c
|
||||
j 0x80016e10 ;вылетаем в программу дальше по плану! (Хз что там за программа, но выполняется каждый цикл)
|
||||
nop
|
||||
|
||||
|
||||
;BOSSNAME COPYЧёт формат
|
||||
.org 0x800ad4e8
|
||||
;jal 0x80016024 - ORIGINAL CALL
|
||||
;custom call
|
||||
; jal 0x8008f600
|
||||
|
||||
;.org 0x800ad508
|
||||
; jal 0x8008f700
|
||||
|
||||
|
||||
;Battlecontact copy
|
||||
.org 0x800f1f60
|
||||
jal CheckAndCopyRusInScript
|
||||
.org 0x800f20bc
|
||||
jal CheckAndCopyRusInScript
|
||||
|
||||
|
||||
|
||||
|
||||
.close
|
||||
104
1_IS/charCalcs.asm
Normal file
104
1_IS/charCalcs.asm
Normal file
@@ -0,0 +1,104 @@
|
||||
ReturnCharsInString:
|
||||
|
||||
|
||||
lhu v0,0x0(a0)
|
||||
nop
|
||||
srl v0,v0,0xD ;;;;Check 13th bit (1byte system !!!)
|
||||
bne v0,zero,IsMy1byteString
|
||||
clear v1
|
||||
;v1 = charCount
|
||||
|
||||
j StartReading
|
||||
nop
|
||||
IsMy1byteString:
|
||||
lhu v0,0x0(a0)
|
||||
nop
|
||||
andi v0,v0,0xff ;Clear from cmd flag
|
||||
|
||||
andi v1,v0,0x1
|
||||
beq v1,zero,notAnd1
|
||||
nop
|
||||
addiu v0,v0,0x1
|
||||
|
||||
notAnd1:
|
||||
sra v0,v0,1 ;v0/2 (bytes Pairs)
|
||||
addiu v0,v0,1 ;v0 += = header 2 bytes
|
||||
jr ra
|
||||
move v1,v0 ;return v0,v1 - charsNum
|
||||
|
||||
GetNewChar:
|
||||
addiu v1,v1,1
|
||||
StartReading:
|
||||
lhu v0,0x0(a0) ;a0 - curTextAddr
|
||||
nop
|
||||
sltiu v0,v0,0x1000
|
||||
bne v0,zero,GetNewChar ;if currentChar<1000 - goto next addr+2b
|
||||
addiu a0,a0,2
|
||||
jr ra
|
||||
move v0,v1 ;return v0,v1 - charsNum
|
||||
|
||||
|
||||
calcNextXCustom:
|
||||
addiu sp,sp,-0x18
|
||||
sw ra,0x10(sp)
|
||||
|
||||
lhu v0,0x0(a0)
|
||||
nop
|
||||
andi v1,v0,0xff ;Clear from cmd flag
|
||||
srl v0,v0,0xD ;;;;Check 13th bit (1byte system !!!)
|
||||
beq v0,zero,JapOldText ;if bit 0d = 0 - OldTypeText
|
||||
nop
|
||||
j IHaveStringLength
|
||||
move v0,v1 ;double char count
|
||||
JapOldText:
|
||||
jal ReturnCharsInString
|
||||
nop
|
||||
IHaveStringLength:
|
||||
sll v1,v0,0x1
|
||||
addu v1,v1,v0
|
||||
lw ra,0x10(sp)
|
||||
sll v0,v1,0x1 ;*charcount * 6 pix
|
||||
jr ra
|
||||
addiu sp,sp,0x18
|
||||
|
||||
RetunCharsToCity:
|
||||
lhu v0,0x0(a0)
|
||||
nop
|
||||
srl v0,v0,0xD ;;;;Check 13th bit (1byte system !!!)
|
||||
bne v0,zero,IsMy1byteCity
|
||||
clear v1 ;v1 = charCount
|
||||
|
||||
j StartReading
|
||||
nop
|
||||
IsMy1byteCity:
|
||||
lhu v0,0x0(a0)
|
||||
nop
|
||||
andi v0,v0,0xff ;Clear from cmd flag
|
||||
jr ra
|
||||
move v1,v0 ;return v0,v1 - charsNum
|
||||
|
||||
|
||||
RetunCharsToCityDiv2:
|
||||
lhu v0,0x0(a0)
|
||||
nop
|
||||
srl v0,v0,0xD ;;;;Check 13th bit (1byte system !!!)
|
||||
bne v0,zero,IsMy1byteCityDiv2
|
||||
clear v1 ;v1 = charCount
|
||||
|
||||
j StartReading
|
||||
nop
|
||||
IsMy1byteCityDiv2:
|
||||
lhu v0,0x0(a0)
|
||||
nop
|
||||
andi v0,v0,0xff ;Clear from cmd flag
|
||||
|
||||
andi v1,v0,0x1
|
||||
beq v1,zero,notAnd1_2
|
||||
nop
|
||||
addiu v0,v0,0x1
|
||||
|
||||
notAnd1_2:
|
||||
sra v0,v0,1 ;v0/2 (bytes Pairs)
|
||||
; addiu v0,v0,1 ;v0 += = header 2 bytes
|
||||
jr ra
|
||||
move v1,v0 ;return v0,v1 - charsNum
|
||||
88
1_IS/charload.asm
Normal file
88
1_IS/charload.asm
Normal file
@@ -0,0 +1,88 @@
|
||||
|
||||
; LOADING CHAR FROM CUSTOM FONT
|
||||
|
||||
makeCharPixelsCustom:
|
||||
|
||||
addiu sp,sp,-0x18
|
||||
move a1,a0
|
||||
lui a0,0x1f80
|
||||
ori a0,a0,0x358
|
||||
|
||||
sw ra,0x10(sp)
|
||||
|
||||
li a2,1
|
||||
|
||||
lbu t2,0xac(gp)
|
||||
move t0,r4
|
||||
lui v1,0x801f ; ;load font addr to r3 (801ef000 + BA00)
|
||||
ori v1,v1,0xaa00 ; ==== 801faa00
|
||||
sll v0,a1,0x1 ; r2 = r5 << 1 (*2)
|
||||
addu v0,v0,a1 ; r2 += r5 (it. *3)
|
||||
sll v0,v0,0x2 ; r2 << 2 (*4) (r2 = r5 *12)
|
||||
addu t1,v0,v1 ;t1 = char addr ; r9 = r2(offs) + r3 (start)
|
||||
li r6,0x6 ; r6 = byteslength = 6
|
||||
move v0,r6 ; r2 = r6 (counter)
|
||||
beq v0,zero,charLoaded ; if counter=0 then branch
|
||||
addiu r6,r6,-0x1 ; dec r6
|
||||
lui a3,0x1f80
|
||||
ori a3,a3,0x2e0 ; set scratch convert addr r7 = 1f8002e0
|
||||
CharLoop:
|
||||
lhu v1,0x0(t1) ;load upperhalf of char to r3
|
||||
nop
|
||||
andi r4,v1,0xf ; r4 = r3 & 0f - cutting left semibyte
|
||||
srl v1,v1,0x4 ; r3 >> 4
|
||||
andi v0,v1,0xf ; r2 = r3 & 0f
|
||||
sll v0,v0,0x1 ; r2 << 1
|
||||
addu v0,v0,a3 ; r2 = r2 + to4bitConvertTableAddr (r7)
|
||||
lhu v0,0x0(v0);>DAT_1f8002e0 r2 = *r2(half) pixel pattern
|
||||
nop
|
||||
mult v0,t2 ; r2*r10. make Color
|
||||
sll r4,r4,0x1 ; r4 << 1
|
||||
addu r4,r4,a3 ; r4 += r6 counter
|
||||
mflo a1 ; load lo to r5
|
||||
lhu v0,0x0(r4);>DAT_1f8002e0 load table+r4
|
||||
nop
|
||||
mult v0,t2 ; r2 * colorIndex r10
|
||||
srl v1,v1,0x4 ; r3 >> 4, right 4 bits
|
||||
andi r4,v1,0xf ; r4 = r3 & f0 (cut right semibyte)
|
||||
srl v1,v1,0x4 ; r3 >> 4
|
||||
sll v1,v1,0x1 ; r3 << 1 = *2
|
||||
addu v1,v1,a3 ; r3=r3+Table r7
|
||||
sll v0,a1,0x10 ; r2 = r5 << 10 bits
|
||||
mflo t4 ; load r12,low
|
||||
or v0,t4,v0 ; r2 = r12 | r2
|
||||
sw v0,0x0(t0) ; load *r8(current Scratch) from r2(result)
|
||||
lhu v0,0x0(v1);>DAT_1f8002e0 ; load r2 from TablePattern Half from r3
|
||||
nop
|
||||
mult v0,t2 ; r2*color r10
|
||||
sll r4,r4,0x1 ; r4 << 1
|
||||
addu r4,r4,a3 ; r4 = r4 + TableStart
|
||||
mflo a1 ; ld r5,lo
|
||||
lhu v0,0x0(r4);>DAT_1f8002e0 ; ld half r2 from *r4
|
||||
nop
|
||||
mult v0,t2 ; r2*col
|
||||
addiu t1,t1,0x2 ; move charFont + +2
|
||||
move v1,a2 ; r3 = byteCount (r6)
|
||||
addiu a2,a2,-0x1 ; r6 -= 1
|
||||
addiu t0,t0,0x4 ; scrathAddr r8 += 4
|
||||
sll v0,a1,0x10 ; r2 = r5 << 10 bits (move to hi)
|
||||
mflo t4 ; ld r12,lo (result)
|
||||
or v0,t4,v0 ; combine r2 & r 12 (0001 x 1111)
|
||||
sw v0,0x0(t0) ; store result to scratch r2 to *r8
|
||||
bne v1,zero,charLoop ; if r3 counter<>0 goto loop
|
||||
addiu t0,t0,0x4 ; r8 scrath += 4
|
||||
charLoaded:
|
||||
|
||||
lbu v1,0xad(gp) ; >DAT_8007b23d_textMode load curText Shadow?
|
||||
li v0,0x1
|
||||
bne v1,v0,NotShadow ;Shadow character check
|
||||
nop
|
||||
lui a0,0x1f80
|
||||
jal MakeShadowSmallChar ;Make shadow in Scratch DMA
|
||||
ori a0,a0,0x358
|
||||
|
||||
NotShadow:
|
||||
lw ra,0x10(sp) ;Restore stack and exit
|
||||
nop
|
||||
jr ra
|
||||
addiu sp,sp,0x18
|
||||
172
1_IS/complex_strings_copy.asm
Normal file
172
1_IS/complex_strings_copy.asm
Normal file
@@ -0,0 +1,172 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;MAKING COMPLEX RUSSIAN STRINGS
|
||||
|
||||
.org 0x8008f600
|
||||
|
||||
|
||||
;InitProgram + First Hybrid Copy
|
||||
|
||||
lui r2,0x8009
|
||||
sw r4,-0x30(r2) ;;;Store start string addr
|
||||
lhu r3,0x0(r5)
|
||||
nop
|
||||
srl r2,r3,0xD ;;;;Check 13th bit (1byte system !!!)
|
||||
bne r2,zero,isMyString ;;if yes - jump to my prog. If no - init this
|
||||
lhu r3,0x0(r5) ;load first 2-byte
|
||||
|
||||
clear r2 ;clear MAIN counter
|
||||
|
||||
;Standart 2-byte name
|
||||
addiu r4,2 ;DestAddr + 2 (For my xx20 Command)
|
||||
next2bytes:
|
||||
sb r3,0x0(r4)
|
||||
addiu r4,1 ;add dest counter
|
||||
addiu r5,2 ;add src counter
|
||||
addiu r2,1 ;add char counter
|
||||
lhu r3,0x0(r5) ;read next jap char
|
||||
nop
|
||||
srl r3,r3,0xC ;Is it end of 2byte-string???
|
||||
bne r3,zero,saveLengthAndExit
|
||||
lhu r3,0x0(r5)
|
||||
j next2bytes
|
||||
nop
|
||||
|
||||
saveLengthAndExit:
|
||||
ori r2,0x2000 ;add my command
|
||||
lui r3,0x8009
|
||||
lw r3,-0x30(r3) ;load str init address
|
||||
nop
|
||||
sh r2,0x0(r3) ;save init counter +20 to dest addr (half)
|
||||
jr ra ;exit
|
||||
move r2,r4 ;Duplicate for futher script
|
||||
|
||||
|
||||
isMyString:
|
||||
lhu r3,0x0(r5)
|
||||
nop
|
||||
andi r3,r3,0xFF
|
||||
addiu r3,2 ;length to copy = charnum+2
|
||||
nextMyByte:
|
||||
lbu r2,0x0(r5)
|
||||
nop
|
||||
sb r2,0x0(r4)
|
||||
addiu r4,1
|
||||
addiu r3,-1
|
||||
bne r3,zero,nextMyByte
|
||||
addiu r5,1
|
||||
jr ra ;exit
|
||||
move r2,r4 ;Duplicate for futher script
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
.org 0x8008f700 ;Adding my text Program
|
||||
|
||||
lhu r3,0x0(r5) ;read src string length
|
||||
nop
|
||||
;NEED TO CHECK STRING FORMAT
|
||||
srl r2,r3,0xD ;;;;Check 13th bit (1byte system !!!) ;FOR TATSHUYA BOSS
|
||||
beq r2,zero,secondStrisJap
|
||||
nop
|
||||
|
||||
lbu r2,0x0(r4) ;read destination string length (1 byte)
|
||||
nop
|
||||
lbu r3,0x0(r5) ;read src string length
|
||||
nop
|
||||
add r2,r3 ;Sum lengts of old and new strings
|
||||
sb r2,0x0(r4) ;save new string length
|
||||
|
||||
addiu r5,2 ;shift src +2 (len code)
|
||||
sub r2,r3
|
||||
addiu r4,2
|
||||
add r4,r2 ;shift destination - len+2
|
||||
|
||||
nextMyByte2:
|
||||
lbu r2,0x0(r5)
|
||||
nop
|
||||
sb r2,0x0(r4)
|
||||
addiu r4,1
|
||||
addiu r3,-1
|
||||
bne r3,zero,nextMyByte
|
||||
addiu r5,1
|
||||
jr ra ;exit
|
||||
move r2,r4 ;Duplicate for futher script
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
secondStrisJap:
|
||||
|
||||
lbu r3,0x0(r4) ;read dest string length
|
||||
addiu r4,2 ;DestAddr + 2 (For my xx20 Command)
|
||||
add r4,r3 ;add dest counter = end of prev string
|
||||
|
||||
lhu r3,0x0(r5) ;load first 2-byte
|
||||
|
||||
clear r2 ;clear MAIN counter
|
||||
|
||||
;Standart 2-byte name
|
||||
|
||||
next2bytes2:
|
||||
sb r3,0x0(r4)
|
||||
addiu r4,1 ;add dest counter
|
||||
addiu r5,2 ;add src counter
|
||||
addiu r2,1 ;add char counter
|
||||
lhu r3,0x0(r5) ;read next jap char
|
||||
nop
|
||||
srl r3,r3,0xC ;Is it end of 2byte-string???
|
||||
bne r3,zero,saveLengthAndExit2
|
||||
lhu r3,0x0(r5)
|
||||
j next2bytes2
|
||||
nop
|
||||
|
||||
saveLengthAndExit2:
|
||||
lui r3,0x8009
|
||||
lw r3,-0x30(r3)
|
||||
nop
|
||||
lhu r3,0x0(r3) ;load str prev length
|
||||
nop
|
||||
add r2,r3,r2 ;main counter + prev string length
|
||||
|
||||
;ori r2,r3,0x2000 ;add my command = xx20
|
||||
|
||||
lui r3,0x8009
|
||||
lw r3,-0x30(r3)
|
||||
nop
|
||||
sh r2,0x0(r3) ;save counter +20 to dest addr (half)
|
||||
jr ra ;exit
|
||||
move r2,r4 ;Duplicate for futher script
|
||||
|
||||
|
||||
|
||||
|
||||
;NAMEENTER SWAP ROUTINE
|
||||
|
||||
|
||||
.org 0x8008f800 ;Adding my text Program
|
||||
;r4 - destination
|
||||
;r5 - source
|
||||
move r6,ra
|
||||
|
||||
lui r5, 0x8008
|
||||
ori r5, 0x0a7c ;Copy name to temp
|
||||
lui r4, 0x8008
|
||||
ori r4, 0xfa0e ;dest+2
|
||||
jal 0x80015fe0 ;TEMP - 80080a0e
|
||||
nop
|
||||
|
||||
lui r5, 0x8008
|
||||
ori r5, 0x0ae4 ;Copy surname to name
|
||||
lui r4, 0x8008
|
||||
ori r4, 0x0a7e ;dest+2
|
||||
jal 0x80015fe0
|
||||
nop
|
||||
|
||||
lui r5, 0x8008
|
||||
ori r5, 0xfa0c ;Copy temp to surname ;TEMP - 80080a0c
|
||||
lui r4, 0x8008
|
||||
ori r4, 0x0ae6 ;dest+2
|
||||
jal 0x80015fe0
|
||||
nop
|
||||
|
||||
move ra,r6
|
||||
li r4,0
|
||||
|
||||
j 0x80017a9c ;EXIT
|
||||
|
||||
217
1_IS/txtpatches.asm
Normal file
217
1_IS/txtpatches.asm
Normal file
@@ -0,0 +1,217 @@
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;
|
||||
;;; Some txt Patches to JAPAN Version to print bi(u)g text smaller
|
||||
;;;
|
||||
|
||||
.open "1_IS/BIN/SLPS_021.00", 0x8000F800
|
||||
|
||||
;Text speed patch (0 - show all text(!!!) - 4 - Normal (Pressed Button - 1))
|
||||
;.org 0x8001bfd4
|
||||
; li r5,0
|
||||
;move a0,s0 ;Original Code
|
||||
|
||||
|
||||
; Main Bigfont size between letters for special codes
|
||||
;.org 0x8001957c
|
||||
; addiu v0,v0,0x6
|
||||
|
||||
;calcNextX Routine (calc X in line after command)
|
||||
;.org 0x8001af38
|
||||
; sll r2,r3,2h ; Its Original - Custom in custom routine
|
||||
|
||||
;dialog start line tabulation
|
||||
;.org 0x8007b195
|
||||
; .byte 0x4 ;pixels
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;Print Routines Calls Replacing
|
||||
|
||||
;main dialog calls from PrintProgramText Routine
|
||||
;.org 0x8001c398
|
||||
; jal ExternalPrint
|
||||
;.org 0x8001c40c
|
||||
; jal ExternalPrint
|
||||
|
||||
;Selection Menu Calls
|
||||
;.org 0x8001d058
|
||||
; jal ExternalPrint
|
||||
;.org 0x8001d0d8
|
||||
; jal ExternalPrint
|
||||
|
||||
;printPlaneTEXT (PlayerName, etc...)
|
||||
;.org 0x8001c688
|
||||
; jal ExternalPrint
|
||||
|
||||
|
||||
|
||||
;custom CheckCharNumToLineEnd for proper Complex Lines Read (charcountread)
|
||||
.org 0x8001aef4
|
||||
j ReturnCharsInString ;custom routine
|
||||
clear v1
|
||||
;j 0x8001af00 ;original code
|
||||
|
||||
;calcnextX Custom
|
||||
|
||||
.org 0x8001af1c
|
||||
; addiu sp,sp,-0x18 ;Original Code
|
||||
; sw ra,0x10(sp)
|
||||
j calcnextXCustom ;PATCHED
|
||||
nop
|
||||
|
||||
.close
|
||||
|
||||
|
||||
|
||||
; COnfiguration Menu Strings Calls
|
||||
.open "1_IS/BIN/1096_J_MENU_Settings_Code.bin", 0x800A2000
|
||||
|
||||
.org 0x800a2658
|
||||
li a1,0x5c
|
||||
.org 0x800a2678
|
||||
jal ExternalPrint ;CONFIGURATION MENU & X Coord
|
||||
.org 0x800a2690
|
||||
jal 0x8001afc0 ;OOOOOPS :))))
|
||||
|
||||
|
||||
.org 0x800a26ac
|
||||
jal ExternalPrint
|
||||
.org 0x800a26e8
|
||||
jal ExternalPrint
|
||||
.org 0x800a298c
|
||||
jal ExternalPrint
|
||||
.org 0x800a29b8
|
||||
jal ExternalPrint
|
||||
.org 0x800a29f4
|
||||
jal ExternalPrint
|
||||
.org 0x800a2a44
|
||||
jal ExternalPrint
|
||||
.org 0x800a2d20
|
||||
jal ExternalPrint
|
||||
.org 0x800a2d4c
|
||||
jal ExternalPrint
|
||||
.org 0x800a2d7c
|
||||
jal ExternalPrint
|
||||
.org 0x800a3090
|
||||
jal ExternalPrint
|
||||
.org 0x800a30cc
|
||||
jal ExternalPrint
|
||||
.org 0x800a35ac
|
||||
jal ExternalPrint
|
||||
.org 0x800a35e0
|
||||
jal ExternalPrint
|
||||
.org 0x800a3624
|
||||
jal ExternalPrint
|
||||
.org 0x800a3658
|
||||
jal ExternalPrint
|
||||
.org 0x800a369c
|
||||
jal ExternalPrint
|
||||
.org 0x800a36d0
|
||||
jal ExternalPrint
|
||||
.org 0x800a3704
|
||||
jal ExternalPrint
|
||||
.org 0x800a3734
|
||||
jal ExternalPrint
|
||||
.org 0x800a3ba8
|
||||
jal ExternalPrint
|
||||
.org 0x800a3bdc
|
||||
jal ExternalPrint
|
||||
.org 0x800a3c20
|
||||
jal ExternalPrint
|
||||
.org 0x800a3c4c
|
||||
jal ExternalPrint
|
||||
.org 0x800a3c90
|
||||
jal ExternalPrint
|
||||
.org 0x800a3cbc
|
||||
jal ExternalPrint
|
||||
.org 0x800a4310
|
||||
jal ExternalPrint
|
||||
.org 0x800a435c
|
||||
jal ExternalPrint
|
||||
|
||||
.close
|
||||
|
||||
|
||||
; CITY PATCHES!
|
||||
|
||||
.open "1_IS/BIN/1119_CITY_CODE_patched_2023.bin", 0x800AB000
|
||||
|
||||
;IN 1119 - 800AD320 (offs 8992) - need to 0,0,0,0 (its shift left 0x1) x3 instead x6 - Text and rect coord
|
||||
;OVERALL X LEFT SHIFT!!!
|
||||
;.org 0x800ad320C:\Downloads\PSX
|
||||
;nop
|
||||
|
||||
;'800AD328 need to 64 instead 128 (text pixels wide x2 instead x4) - rect X WIDE
|
||||
;.org 0x800ad328
|
||||
;sll a1,0x1
|
||||
;'800AD360 (offs 9056)- need 5 instead 6 - pixels for X-offset text from start of rect
|
||||
;.org 0x800ad360
|
||||
;addiu a1,a1,0x5
|
||||
|
||||
|
||||
;check lenght for hiuse names for overallcoords calc
|
||||
.org 0x800ad30c
|
||||
jal RetunCharsToCity
|
||||
|
||||
|
||||
;checklenghth for housename RECT
|
||||
.org 0x800ad3ac
|
||||
jal RetunCharsToCity
|
||||
|
||||
|
||||
.org 0x800af1dc
|
||||
;jal RetunCharsToCityDiv2 ;OR ReturnCharsInString
|
||||
jal 0x8001af1c
|
||||
|
||||
|
||||
.close
|
||||
|
||||
;.org 0x800ad380
|
||||
;jal ExternalPrint
|
||||
;.org 0x800ad400
|
||||
;jal ExternalPrint
|
||||
;.org 0x800b2008
|
||||
;jal ExternalPrint
|
||||
;.org 0x800b21b8
|
||||
;jal ExternalPrint
|
||||
;.org 0x800b2278
|
||||
;jal ExternalPrint
|
||||
|
||||
;district select windows
|
||||
;.org 0x800b1af0
|
||||
; .byte 0x12
|
||||
;.org 0x800b1afc
|
||||
; .byte 0x08
|
||||
|
||||
;.org 0x800b1c3f
|
||||
; .byte 0x00
|
||||
|
||||
;.org 0x800b1c68
|
||||
; .byte 0x4a
|
||||
;.org 0x800b1ca8
|
||||
; .byte 0x4a
|
||||
;.org 0x800b1d4c
|
||||
; .byte 0x4a
|
||||
;.org 0x800b1d94
|
||||
; .byte 0x4a
|
||||
;.org 0x800b1dc0
|
||||
; .byte 0x4a
|
||||
|
||||
;.org 0x800b8d3c
|
||||
;City Districts Table with pointers Here
|
||||
|
||||
|
||||
;BATTLE CUSTOM NAME RENDERING REDIRECT
|
||||
.open "1_IS/BIN/0001_BATTLE_CODE.bin", 0x800AB000
|
||||
|
||||
|
||||
.org 0x800ca0f0
|
||||
|
||||
;ORIGINAL
|
||||
; jal 0x8001aef4
|
||||
; move a0, s3 //a0 - адрес имени
|
||||
|
||||
j customNameRender
|
||||
move a0, s3
|
||||
|
||||
.close
|
||||
Reference in New Issue
Block a user