IS new text system complete

This commit is contained in:
sShemet
2025-10-18 17:25:22 +05:00
parent 9a82929c8b
commit 39268fad88
13 changed files with 1916 additions and 63 deletions

Binary file not shown.

Binary file not shown.

918
123.txt Normal file
View File

@@ -0,0 +1,918 @@
; 6 files included
; 1303 lines
; 95 labels
; 0 equations
; C:\psx\asm\p2is_asm\is_main_grouped.asm
; C:\psx\asm\p2is_asm\complex_strings_copy.asm
; C:\psx\asm\p2is_asm\IS_charload_grouped.asm
; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm
; C:\psx\asm\p2is_asm\charCalcs.asm
; C:\psx\asm\p2is_asm\txtpatches.asm
FFFFFFFF .psx ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 5
800542CC setdrawtpage: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 8
8001B0C8 storecolor: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 9
8001A070 initcopycharchain: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 10
8001A08F makecharpixels: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 11
8001A284 generatesmallchar: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 12
8001A20C makeshadowsmallchar: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 13
80019300 printbigdmatext: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 14
00008009 myaddr: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 16
FFFFFFFF .open ""C:\\psx\\asm\\p2is_asm\\SLPS_021.00"",0x8000F800 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 18
8000F800 .org 0x8008F600 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 3
8008F600 lui r2,-0x7FF7 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 8
8008F604 sw r4,-0x30(r2) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 9
8008F608 lhu r3,0x0(r5) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 10
8008F60C nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 11
8008F610 srl r2,r3,0xD ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 12
8008F614 bne r2,zero,0x8008F66C ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 13
8008F618 lhu r3,0x0(r5) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 14
8008F61C clear r2 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 16
8008F620 addiu r4,0x2 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 19
8008F624 next2bytes: ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 20
8008F624 sb r3,0x0(r4) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 21
8008F628 addiu r4,0x1 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 22
8008F62C addiu r5,0x2 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 23
8008F630 addiu r2,0x1 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 24
8008F634 lhu r3,0x0(r5) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 25
8008F638 nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 26
8008F63C srl r3,r3,0xC ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 27
8008F640 bne r3,zero,0x8008F650 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 28
8008F644 lhu r3,0x0(r5) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 29
8008F648 j 0x8008F624 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 30
8008F64C nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 31
8008F650 savelengthandexit: ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 33
8008F650 ori r2,0x2000 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 34
8008F654 lui r3,-0x7FF7 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 35
8008F658 lw r3,-0x30(r3) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 36
8008F65C nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 37
8008F660 sh r2,0x0(r3) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 38
8008F664 jr ra ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 39
8008F668 move r2,r4 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 40
8008F66C ismystring: ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 43
8008F66C lhu r3,0x0(r5) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 44
8008F670 nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 45
8008F674 andi r3,r3,0xFF ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 46
8008F678 addiu r3,0x2 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 47
8008F67C nextmybyte: ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 48
8008F67C lbu r2,0x0(r5) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 49
8008F680 nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 50
8008F684 sb r2,0x0(r4) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 51
8008F688 addiu r4,0x1 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 52
8008F68C addiu r3,-0x1 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 53
8008F690 bne r3,zero,0x8008F67C ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 54
8008F694 addiu r5,0x1 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 55
8008F698 jr ra ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 56
8008F69C move r2,r4 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 57
8008F6A0 .org 0x8008F700 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 60
8008F700 lhu r3,0x0(r5) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 62
8008F704 nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 63
8008F708 srl r2,r3,0xD ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 65
8008F70C beq r2,zero,0x8008F760 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 66
8008F710 nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 67
8008F714 lbu r2,0x0(r4) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 69
8008F718 nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 70
8008F71C lbu r3,0x0(r5) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 71
8008F720 nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 72
8008F724 add r2,r3 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 73
8008F728 sb r2,0x0(r4) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 74
8008F72C addiu r5,0x2 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 76
8008F730 sub r2,r3 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 77
8008F734 addiu r4,0x2 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 78
8008F738 add r4,r2 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 79
8008F73C nextmybyte2: ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 81
8008F73C lbu r2,0x0(r5) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 82
8008F740 nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 83
8008F744 sb r2,0x0(r4) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 84
8008F748 addiu r4,0x1 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 85
8008F74C addiu r3,-0x1 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 86
8008F750 bne r3,zero,0x8008F67C ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 87
8008F754 addiu r5,0x1 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 88
8008F758 jr ra ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 89
8008F75C move r2,r4 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 90
8008F760 secondstrisjap: ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 94
8008F760 lbu r3,0x0(r4) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 96
8008F764 addiu r4,0x2 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 97
8008F768 add r4,r3 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 98
8008F76C lhu r3,0x0(r5) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 100
8008F770 clear r2 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 102
8008F774 next2bytes2: ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 106
8008F774 sb r3,0x0(r4) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 107
8008F778 addiu r4,0x1 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 108
8008F77C addiu r5,0x2 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 109
8008F780 addiu r2,0x1 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 110
8008F784 lhu r3,0x0(r5) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 111
8008F788 nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 112
8008F78C srl r3,r3,0xC ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 113
8008F790 bne r3,zero,0x8008F7A0 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 114
8008F794 lhu r3,0x0(r5) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 115
8008F798 j 0x8008F774 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 116
8008F79C nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 117
8008F7A0 savelengthandexit2: ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 119
8008F7A0 lui r3,-0x7FF7 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 120
8008F7A4 lw r3,-0x30(r3) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 121
8008F7A8 nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 122
8008F7AC lhu r3,0x0(r3) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 123
8008F7B0 nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 124
8008F7B4 add r2,r3,r2 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 125
8008F7B8 lui r3,-0x7FF7 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 129
8008F7BC lw r3,-0x30(r3) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 130
8008F7C0 nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 131
8008F7C4 sh r2,0x0(r3) ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 132
8008F7C8 jr ra ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 133
8008F7CC move r2,r4 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 134
8008F7D0 .org 0x8008F800 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 142
8008F800 move r6,ra ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 145
8008F804 lui r5,-0x7FF8 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 147
8008F808 ori r5,0xA7C ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 148
8008F80C lui r4,-0x7FF8 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 149
8008F810 ori r4,-0x5F2 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 150
8008F814 jal 0x80015FE0 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 151
8008F818 nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 152
8008F81C lui r5,-0x7FF8 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 154
8008F820 ori r5,0xAE4 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 155
8008F824 lui r4,-0x7FF8 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 156
8008F828 ori r4,0xA7E ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 157
8008F82C jal 0x80015FE0 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 158
8008F830 nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 159
8008F834 lui r5,-0x7FF8 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 161
8008F838 ori r5,-0x5F4 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 162
8008F83C lui r4,-0x7FF8 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 163
8008F840 ori r4,0xAE6 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 164
8008F844 jal 0x80015FE0 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 165
8008F848 nop ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 166
8008F84C move ra,r6 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 168
8008F850 ori r4,r0,0x0 ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 169
8008F854 j 0x80017A9C ; C:\psx\asm\p2is_asm\complex_strings_copy.asm line 171
8008F858 .org 0x80090000 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 22
80090000 externalprint: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 24
80090000 move v1,s3 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 26
80090004 move s3,a0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 27
80090008 lhu v0,0x0(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 29
8009000C move s3,v1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 30
80090010 srl v1,v0,0xD ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 31
80090014 bne v1,zero,0x80090024 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 32
80090018 clear v1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 33
8009001C j 0x80019300 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 34
80090020 nop ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 35
80090024 myprintlineroutine: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 37
80090024 addiu sp,sp,-0x50 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 38
80090028 sw ra,0x4C(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 39
8009002C sw s1,0x2C(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 40
80090030 sw s2,0x30(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 41
80090034 sw s3,0x34(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 42
80090038 sw s4,0x38(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 43
8009003C sw s5,0x3C(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 44
80090040 sw s6,0x40(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 45
80090044 sw s8,0x48(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 46
80090048 sw s7,0x44(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 47
8009004C move s6,a0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 49
80090050 move s1,a1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 50
80090054 move s2,a2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 51
80090058 andi v0,v0,0xFF ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 55
8009005C addiu s6,s6,0x2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 56
80090060 lui s3,-0x7FF7 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 57
80090064 sh v0,-0x10(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 58
80090068 sh v0,-0xE(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 59
8009006C lui t0,0xFF ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 62
80090070 ori t0,t0,-0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 63
80090074 sw s0,0x28(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 65
80090078 andi s0,a3,0xFF ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 66
8009007C move a0,s0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 67
80090080 lui a3,-0x7FF8 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 68
80090084 lui a2,-0x100 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 69
80090088 addiu t1,a3,-0x4930 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 72
8009008C lw v1,-0x4930(a3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 73
80090090 lbu a1,0x60(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 74
80090094 lui v0,-0x8000 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 75
80090098 and a2,v1,a2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 78
8009009C andi a1,a1,0xFF ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 79
800900A0 and v1,v1,t0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 80
800900A4 or s4,v1,v0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 81
800900A8 lw v0,0x4(t1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 82
800900AC lw v1,0x0(s4) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 83
800900B0 addiu v0,v0,-0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 84
800900B4 and v1,v1,t0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 85
800900B8 or a2,a2,v1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 86
800900BC sw v0,0x4(t1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 87
800900C0 jal 0x8001B0C8 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 88
800900C4 sw a2,-0x4930(a3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 89
800900C8 move a0,s4 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 90
800900CC sll a1,s1,0x10 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 92
800900D0 sra a1,a1,0x10 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 93
800900D4 sll a2,s2,0x10 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 94
800900D8 sra a2,a2,0x10 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 95
800900DC jal 0x8001A070 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 96
800900E0 move a3,s0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 97
800900E4 cputovram_scratchpad_template: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 100
800900E4 lui a3,0x1F80 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 101
800900E8 ori a3,a3,0x348 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 102
800900EC lui a1,0xF00 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 104
800900F0 sw a1,0x0(a3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 105
800900F4 lui a0,-0x6000 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 107
800900F8 sw a0,0x4(a3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 108
800900FC lui v0,0x1F0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 110
80090100 ori v0,0x130 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 111
80090104 sw v0,0x8(a3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 112
80090108 lui v0,0xC ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 114
8009010C ori v0,0x2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 115
80090110 sw v0,0xC(a3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 116
80090114 _1bppto4bpp_table_template: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 118
80090114 lui t8,0x1F80 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 120
80090118 ori t8,t8,0x390 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 121
8009011C lui t7,-0x7FFF ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 122
80090120 ori t7,t7,0x3E8 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 123
80090124 lw t5,0x0(t7) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 124
80090128 lw t6,0x4(t7) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 125
8009012C sw t5,0x0(t8) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 126
80090130 sw t6,0x4(t8) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 127
80090134 lw t5,0x8(t7) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 128
80090138 lw t6,0xC(t7) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 129
8009013C sw t5,0x8(t8) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 130
80090140 sw t6,0xC(t8) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 131
80090144 lw t5,0x10(t7) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 132
80090148 lw t6,0x14(t7) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 133
8009014C sw t5,0x10(t8) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 134
80090150 sw t6,0x14(t8) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 135
80090154 lw t5,0x18(t7) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 136
80090158 lw t6,0x1C(t7) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 137
8009015C sw t5,0x18(t8) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 138
80090160 sw t6,0x1C(t8) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 139
80090164 rect_scratchpad_template: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 141
80090164 lui s3,0x1F80 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 143
80090168 ori s3,0x3D0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 144
8009016C lui v0,0x400 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 145
80090170 sw v0,0x0(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 146
80090174 lui v0,0x6480 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 147
80090178 ori v0,-0x7F80 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 148
8009017C sw v0,0x4(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 149
80090180 ori v0,r0,-0xF40 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 150
80090184 sh v0,0xC(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 151
80090188 lhu v1,0xA8(gp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 152
8009018C ori v0,r0,0x0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 154
80090190 sw v0,0x8(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 155
80090194 sh s2,0xA(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 156
80090198 lui v0,0xC ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 158
8009019C ori v0,0x8 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 159
800901A0 sw v0,0x10(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 160
800901A4 sh v1,0xE(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 161
800901A8 make_sprite_size_table: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 163
800901A8 lui s3,0x1F80 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 164
800901AC ori s3,0x3F0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 165
800901B0 lui v0,0x403 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 166
800901B4 ori v0,0x201 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 167
800901B8 sw v0,0x0(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 168
800901BC lui v1,0x706 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 169
800901C0 ori v1,0x504 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 170
800901C4 sw v1,0x4(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 171
800901C8 ori v0,r0,0x807 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 172
800901CC sh v0,0x8(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 173
800901D0 misc_init: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 175
800901D0 move t6,s1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 176
800901D4 textgroupreadloop: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 180
800901D4 lui s3,0x1F80 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 185
800901D8 ori s3,0x3F0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 186
800901DC lui t1,-0x7FF7 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 187
800901E0 lh v1,-0xE(t1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 189
800901E4 lui t2,-0x7FF7 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 190
800901E8 sltiu a0,v1,0xB ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 191
800901EC bne a0,zero,0x800901F8 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 192
800901F0 clear s2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 193
800901F4 ori v1,r0,0xA ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 194
800901F8 readtexttobuffer: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 196
800901F8 lbu a0,0x0(s6) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 197
800901FC addiu s6,s6,0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 198
80090200 addiu v1,v1,-0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 199
80090204 sb a0,-0xC(t2) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 200
80090208 addiu s2,s2,0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 201
8009020C lh v0,-0xE(t1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 202
80090210 addiu t2,t2,0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 203
80090214 addiu v0,v0,-0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 204
80090218 bne v1,zero,0x800901F8 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 205
8009021C sh v0,-0xE(t1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 206
80090220 ori a0,r0,0x0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 208
80090224 sb a0,-0xC(t2) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 209
80090228 addu s3,s3,s2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 211
8009022C addiu s3,-0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 212
80090230 lbu a1,0x0(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 213
80090234 nop ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 214
80090238 move t5,a1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 215
8009023C lui t3,0x1F80 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 217
80090240 ori t3,t3,0x1C0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 218
80090244 form_char_data_in_scratch: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 220
80090244 jal 0x80090580 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 221
80090248 move a0,s2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 222
8009024C rect_cmd_init: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 225
8009024C lui s3,0x1F80 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 227
80090250 ori s3,0x3D0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 228
80090254 lui s1,-0x7FF8 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 230
80090258 addiu s5,s1,-0x4930 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 231
8009025C lui s0,0xFF ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 232
80090260 ori s0,s0,-0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 233
80090264 lui s7,-0x8000 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 234
80090268 lui t2,-0x100 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 245
8009026C move t4,s4 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 246
80090270 move t1,s4 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 247
80090274 rect_set_x: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 248
80090274 sh t6,0x8(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 252
80090278 sll v0,s2,0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 254
8009027C addu v0,s2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 255
80090280 sll v0,0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 256
80090284 addu t6,v0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 257
80090288 rect_set_width: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 258
80090288 sll v0,t5,0x3 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 259
8009028C sh v0,0x10(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 260
80090290 pageloop: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 262
80090290 lw v0,-0x4930(s1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 264
80090294 nop ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 265
80090298 and a0,v0,t2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 266
8009029C and v0,v0,s0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 267
800902A0 or a1,v0,s7 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 268
800902A4 lw v0,0x4(s5) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 269
800902A8 lw v1,0x0(a1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 270
800902AC addiu v0,v0,-0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 271
800902B0 and v1,v1,s0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 272
800902B4 or a0,a0,v1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 273
800902B8 sw v0,0x4(s5) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 274
800902BC sw a0,-0x4930(s1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 275
800902C0 rect_copy_scratch_to_ram: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 277
800902C0 lw t8,0x0(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 278
800902C4 lw t7,0x4(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 279
800902C8 sw t8,0x0(a1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 280
800902CC sw t7,0x4(a1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 281
800902D0 lw a3,0x8(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 282
800902D4 lw t7,0xC(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 283
800902D8 sw a3,0x8(a1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 284
800902DC sw t7,0xC(a1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 285
800902E0 lw t8,0x10(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 286
800902E4 nop ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 287
800902E8 sw t8,0x10(a1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 288
800902EC rect_scratch_connect: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 290
800902EC lw v1,0x18(t1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 291
800902F0 lw v0,0x0(a1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 292
800902F4 lw v1,0x0(v1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 293
800902F8 and v0,v0,t2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 294
800902FC and v1,v1,s0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 295
80090300 or v0,v0,v1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 296
80090304 sw v0,0x0(a1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 297
80090308 lw a0,0x18(t1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 299
8009030C nop ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 300
80090310 lw v0,0x0(a0) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 301
80090314 and v1,a1,s0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 302
80090318 and v0,v0,t2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 303
8009031C or v0,v0,v1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 304
80090320 sw v0,0x0(a0) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 305
80090324 sw a1,0x18(t1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 306
80090328 lhu v0,0x4(t4) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 307
8009032C nop ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 308
80090330 bne v0,zero,0x80090340 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 309
80090334 clear s8 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 310
80090338 sw a1,0x28(t1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 312
8009033C sw a3,0xC(t4) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 313
80090340 cpu2vram_cmd_loop: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 315
80090340 lw v0,-0x4930(s1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 318
80090344 nop ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 319
80090348 and a0,v0,t2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 320
8009034C and v0,v0,s0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 321
80090350 or a3,v0,s7 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 322
80090354 move a2,a3 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 323
80090358 lw v0,0x4(s5) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 324
8009035C lw v1,0x0(a3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 325
80090360 addiu v0,v0,-0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 326
80090364 and v1,v1,s0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 327
80090368 or a0,a0,v1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 328
8009036C sw v0,0x4(s5) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 329
80090370 sw a0,-0x4930(s1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 333
80090374 lui a1,0x1F80 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 336
80090378 ori a1,a1,0x348 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 337
8009037C lw t8,0x0(a1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 338
80090380 lw t7,0x4(a1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 339
80090384 sw t8,0x0(a2) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 340
80090388 sw t7,0x4(a2) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 341
8009038C lw t8,0x8(a1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 342
80090390 lw t7,0xC(a1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 343
80090394 sw t8,0x8(a2) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 344
80090398 sw t7,0xC(a2) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 345
8009039C sll v1,s8,0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 347
800903A0 addiu v0,v1,0x130 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 348
800903A4 sh v0,0x8(a2) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 349
800903A8 copy_char_data_start: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 350
800903A8 lui t3,0x1F80 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 351
800903AC ori t3,t3,0x1C0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 352
800903B0 addiu a2,0x10 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 354
800903B4 clear v0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 355
800903B8 sll v1,t5,0x2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 357
800903BC sll a1,s8,0x2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 358
800903C0 addu a1,t3 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 359
800903C4 copy_char_data_loop: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 360
800903C4 lw t7,0x0(a1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 361
800903C8 addu a1,v1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 362
800903CC sw t7,0x0(a2) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 363
800903D0 addiu a2,0x4 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 365
800903D4 addiu v0,0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 366
800903D8 ori r1,r0,0xC ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 367
800903DC bne v0,r1,0x800903C4 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 367
800903E0 nop ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 368
800903E4 bne s8,zero,0x800903FC ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 370
800903E8 nop ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 371
800903EC set_flush_cache_cmd: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 373
800903EC ori t8,r0,0x10 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 374
800903F0 sb t8,-0x3D(a2) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 375
800903F4 lui t8,0x100 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 376
800903F8 sw t8,0x0(a2) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 377
800903FC cpu2vram_dma_link: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 379
800903FC lw v1,0x18(t1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 381
80090400 lw v0,0x0(a3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 382
80090404 lw v1,0x0(v1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 383
80090408 and v0,v0,t2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 384
8009040C and v1,v1,s0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 385
80090410 or v0,v0,v1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 386
80090414 sw v0,0x0(a3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 387
80090418 lw a0,0x18(t1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 388
8009041C nop ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 389
80090420 lw v0,0x0(a0) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 390
80090424 and v1,a3,s0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 391
80090428 and v0,v0,t2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 392
8009042C or v0,v0,v1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 393
80090430 sw v0,0x0(a0) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 394
80090434 sw a3,0x18(t1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 395
80090438 addiu s8,0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 398
8009043C bne s8,t5,0x80090340 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 399
80090440 nop ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 400
80090444 addiu t1,t1,0x4 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 402
80090448 addiu v0,t4,0x8 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 403
8009044C sltu v0,t1,v0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 404
80090450 bne v0,zero,0x80090290 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 405
80090454 nop ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 406
80090458 chunk_making_end: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 408
80090458 lhu v0,0x4(s4) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 410
8009045C lui t3,-0x7FF7 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 411
80090460 addiu v0,v0,0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 412
80090464 lhu v1,-0xE(t3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 413
80090468 sh v0,0x4(s4) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 414
8009046C bne v1,zero,0x800901D4 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 416
80090470 nop ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 418
80090474 textend: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 420
80090474 clear s2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 421
80090478 lui s3,-0x7FF8 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 422
8009047C addiu s5,s3,-0x4930 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 423
80090480 lui s1,0xFF ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 424
80090484 ori s1,s1,-0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 425
80090488 move s0,s4 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 426
8009048C clear a1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 427
80090490 pagetloop: ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 429
80090490 ori a2,r0,0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 431
80090494 addu s2,s2,a2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 432
80090498 lui v0,-0x8000 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 433
8009049C lui a0,-0x100 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 434
800904A0 lw v1,-0x4930(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 435
800904A4 lw a3,0xA4(gp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 436
800904A8 and v1,v1,s1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 437
800904AC or v1,v1,v0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 438
800904B0 sw v1,0x30(s0) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 439
800904B4 lw v0,-0x4930(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 440
800904B8 lw v1,0x0(v1) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 441
800904BC and v0,v0,a0 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 442
800904C0 and v1,v1,s1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 443
800904C4 lw a0,0x4(s5) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 444
800904C8 or v0,v0,v1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 445
800904CC sw v0,-0x4930(s3) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 446
800904D0 addiu a0,a0,-0x1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 447
800904D4 sw a0,0x4(s5) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 448
800904D8 lw a0,0x30(s0) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 449
800904DC jal 0x800542CC ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 450
800904E0 addiu s0,s0,0x4 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 451
800904E4 sltiu v0,s2,0x2 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 452
800904E8 bne v0,zero,0x80090490 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 453
800904EC clear a1 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 454
800904F0 move v0,s4 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 456
800904F4 lw ra,0x4C(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 459
800904F8 lw s8,0x48(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 460
800904FC lw s7,0x44(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 461
80090500 lw s6,0x40(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 462
80090504 lw s5,0x3C(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 463
80090508 lw s4,0x38(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 464
8009050C lw s3,0x34(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 465
80090510 lw s2,0x30(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 466
80090514 lw s1,0x2C(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 467
80090518 lw s0,0x28(sp) ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 468
8009051C jr ra ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 470
80090520 addiu sp,sp,0x50 ; C:\psx\asm\p2is_asm\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:\psx\asm\p2is_asm\is_main_grouped.asm line 472
8009057E .byte 0x00 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 473
8009057F .byte 0x00 ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 474
80090580 make_char_line_in_scratch: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 4
80090580 addiu sp,sp,-0x18 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 6
80090584 sw ra,0x10(sp) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 7
80090588 sw t5,0x14(sp) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 8
8009058C move t5,a0 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 9
80090590 sll s3,a1,0x2 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 11
80090594 lui t7,-0x7FF7 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 12
80090598 addiu t7,-0xC ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 13
8009059C char_data_clear: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 15
8009059C move a1,t3 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 16
800905A0 addiu a0,a1,0x184 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 17
800905A4 ori v0,r0,0x0 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 18
800905A8 char_data_loop: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 19
800905A8 sw v0,0x0(a1) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 20
800905AC addiu a1,0x4 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 21
800905B0 bne a1,a0,0x800905A8 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 22
800905B4 nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 23
800905B8 move s1,t3 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 25
800905BC ori a2,r0,0x0 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 27
800905C0 lbu v0,0x0(t7) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 28
800905C4 lbu t2,0xAC(gp) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 29
800905C8 addiu t7,t7,0x1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 30
800905CC lui a3,0x1F80 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 32
800905D0 ori a3,a3,0x390 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 33
800905D4 chars_font_loop: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 36
800905D4 addiu v0,-0x20 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 37
800905D8 beq v0,zero,0x800906B8 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 39
800905DC nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 40
800905E0 lui v1,-0x7FE1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 42
800905E4 ori v1,v1,-0x5600 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 43
800905E8 sll t0,v0,0x2 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 44
800905EC sll v0,v0,0x3 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 45
800905F0 addu v0,v0,t0 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 46
800905F4 addu t1,v0,v1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 47
800905F8 clear t3 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 49
800905FC char_lines_loop: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 51
800905FC lbu v1,0x0(t1) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 52
80090600 nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 53
80090604 beq v1,zero,0x800906A8 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 54
80090608 nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 55
8009060C its_not_empty: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 57
8009060C andi a0,v1,0xF ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 59
80090610 sll a0,a0,0x1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 60
80090614 addu a0,a0,a3 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 61
80090618 lhu a0,0x0(a0) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 62
8009061C srl a1,v1,0x4 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 64
80090620 andi a1,a1,0xF ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 65
80090624 sll a1,a1,0x1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 66
80090628 addu a1,a1,a3 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 67
8009062C lhu a1,0x0(a1) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 68
80090630 nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 69
80090634 sll a1,0x10 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 71
80090638 or a0,a1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 72
8009063C mult a0,t2 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 73
80090640 sll a1,a2,0x1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 78
80090644 addu a1,a1,a2 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 79
80090648 nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 82
8009064C mflo t4 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 83
80090650 mult t3,s3 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 86
80090654 nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 87
80090658 nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 88
8009065C nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 89
80090660 mflo a0 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 90
80090664 addu a0,a0,a1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 93
80090668 addu a0,a0,s1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 94
8009066C andi v0,t4,0xFF ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 96
80090670 sb v0,0x0(a0) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 97
80090674 sra v0,t4,0x8 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 99
80090678 andi v0,v0,0xFF ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 100
8009067C sb v0,0x1(a0) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 101
80090680 sra v0,t4,0x10 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 103
80090684 andi v0,v0,0xFF ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 104
80090688 sb v0,0x2(a0) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 105
8009068C addiu v0,t5,-0x1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 107
80090690 bne a2,v0,0x8009069C ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 108
80090694 andi v1,t5,0x3 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 109
80090698 beq v1,zero,0x800906A8 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 111
8009069C not_last: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 113
8009069C sra v0,t4,0x18 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 114
800906A0 andi v0,v0,0xFF ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 115
800906A4 sb v0,0x3(a0) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 116
800906A8 divideby4: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 118
800906A8 zero_jump: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 120
800906A8 addiu t3,t3,0x1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 121
800906AC ori v0,r0,0xC ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 122
800906B0 bne t3,v0,0x800905FC ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 123
800906B4 addiu t1,t1,0x1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 124
800906B8 spacejump: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 126
800906B8 addiu a2,a2,0x1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 127
800906BC lbu v0,0x0(t7) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 128
800906C0 addiu t7,t7,0x1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 129
800906C4 beq v0,zero,0x800906D4 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 131
800906C8 nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 132
800906CC bne a2,t5,0x800905D4 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 134
800906D0 nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 135
800906D4 sprite_end: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 137
800906D4 lbu v1,0xAD(gp) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 138
800906D8 ori v0,r0,0x1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 139
800906DC bne v1,v0,0x800907D0 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 140
800906E0 nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 141
800906E4 move a0,s1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 143
800906E8 nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 144
800906EC make_shadow: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 147
800906EC move a1,s3 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 148
800906F0 sll a1,0x1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 149
800906F4 sll v0,s3,0x3 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 150
800906F8 addu v0,a1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 151
800906FC addu a3,a0,v0 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 153
80090700 addu a0,a1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 154
80090704 lbu t1,0xAC(gp) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 156
80090708 ori t2,r0,0xF ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 157
8009070C addiu t1,0x1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 158
80090710 shadow_row_loop: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 161
80090710 clear t5 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 163
80090714 shadow_sprites_loop: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 166
80090714 addu t7,a3,t5 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 168
80090718 lw t0,0x0(t7) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 169
8009071C clear a2 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 170
80090720 ori a1,r0,0x4 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 171
80090724 shadow_pixel_loop: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 174
80090724 move a1,a2 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 175
80090728 addiu a1,a1,0x1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 176
8009072C sll a1,a1,0x2 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 177
80090730 sll v0,a2,0x2 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 179
80090734 sllv v0,t2,v0 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 180
80090738 and v0,t0,v0 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 181
8009073C beq v0,zero,0x800907A4 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 182
80090740 nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 183
80090744 ori v0,r0,0x7 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 186
80090748 bne a2,v0,0x80090780 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 187
8009074C nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 188
80090750 addu t8,t7,s3 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 191
80090754 addiu t8,t8,0x4 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 192
80090758 lw v1,0x0(t8) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 193
8009075C ori v0,r0,0xF ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 194
80090760 and v0,v1,v0 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 195
80090764 bne v0,zero,0x800907A4 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 196
80090768 nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 197
8009076C move v0,t1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 198
80090770 or v0,v1,v0 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 199
80090774 sw v0,0x0(t8) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 200
80090778 b 0x800907A4 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 201
8009077C nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 202
80090780 normal_case: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 204
80090780 addu t8,t7,s3 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 205
80090784 lw v1,0x0(t8) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 206
80090788 sllv v0,t2,a1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 207
8009078C and v0,v1,v0 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 208
80090790 bne v0,zero,0x800907A4 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 209
80090794 nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 210
80090798 sllv v0,t1,a1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 211
8009079C or v0,v1,v0 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 212
800907A0 sw v0,0x0(t8) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 213
800907A4 no_s: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 215
800907A4 addiu a2,a2,0x1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 216
800907A8 sltiu v0,a2,0x8 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 217
800907AC bne v0,zero,0x80090724 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 218
800907B0 nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 219
800907B4 addiu t5,t5,0x4 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 221
800907B8 bne t5,s3,0x80090714 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 222
800907BC nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 223
800907C0 subu a3,s3 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 226
800907C4 sltu v0,a3,a0 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 227
800907C8 beq v0,zero,0x80090710 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 228
800907CC nop ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 229
800907D0 notshadow: ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 231
800907D0 lw t5,0x14(sp) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 232
800907D4 lw ra,0x10(sp) ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 233
800907D8 move v0,s1 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 234
800907DC jr ra ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 235
800907E0 addiu sp,sp,0x18 ; C:\psx\asm\p2is_asm\IS_charload_grouped.asm line 236
800907E4 customnamerender: ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 6
800907E4 _4bit_conversion_table2: ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 7
800907E4 lui t8,0x1F80 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 8
800907E8 ori t8,t8,0x390 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 9
800907EC lui t7,-0x7FFF ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 10
800907F0 ori t7,t7,0x3E8 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 11
800907F4 lw t5,0x0(t7) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 12
800907F8 lw t6,0x4(t7) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 13
800907FC sw t5,0x0(t8) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 14
80090800 sw t6,0x4(t8) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 15
80090804 lw t5,0x8(t7) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 16
80090808 lw t6,0xC(t7) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 17
8009080C sw t5,0x8(t8) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 18
80090810 sw t6,0xC(t8) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 19
80090814 lw t5,0x10(t7) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 20
80090818 lw t6,0x14(t7) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 21
8009081C sw t5,0x10(t8) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 22
80090820 sw t6,0x14(t8) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 23
80090824 lw t5,0x18(t7) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 24
80090828 lw t6,0x1C(t7) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 25
8009082C sw t5,0x18(t8) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 26
80090830 sw t6,0x1C(t8) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 27
80090834 make_sprite_size_table2: ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 29
80090834 lui s3,0x1F80 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 30
80090838 ori s3,0x3F0 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 31
8009083C lui v0,0x403 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 32
80090840 ori v0,0x201 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 33
80090844 sw v0,0x0(s3) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 34
80090848 lui v1,0x706 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 35
8009084C ori v1,0x504 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 36
80090850 sw v1,0x4(s3) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 37
80090854 clear a1 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 40
80090858 lui v1,-0x7FF7 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 41
8009085C read_char: ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 42
8009085C lbu v0,0x0(a0) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 43
80090860 nop ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 44
80090864 sb v0,-0xC(v1) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 46
80090868 beq v0,zero,0x80090888 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 47
8009086C nop ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 48
80090870 addiu v1,0x1 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 49
80090874 addiu a1,0x1 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 50
80090878 addiu a0,0x2 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 51
8009087C sltiu v0,a1,0x7 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 52
80090880 bne v0,zero,0x8009085C ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 53
80090884 nop ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 54
80090888 end_of_name_read: ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 56
80090888 move a0,a1 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 57
8009088C addu s3,s3,a0 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 58
80090890 addiu s3,-0x1 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 59
80090894 lbu a1,0x0(s3) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 60
80090898 nop ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 61
8009089C lui s3,0x1F80 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 63
800908A0 ori s3,0x3B0 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 64
800908A4 lui a2,0x121 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 66
800908A8 ori a2,0x3C8 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 67
800908AC sw a2,0x0(s3) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 68
800908B0 lui a2,0xC ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 69
800908B4 sll a1,0x1 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 70
800908B8 or a2,a1 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 71
800908BC sw a2,0x4(s3) ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 72
800908C0 sra a1,0x1 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 73
800908C4 lui t3,-0x7FF8 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 75
800908C8 ori t3,t3,-0x1000 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 76
800908CC jal 0x80090580 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 78
800908D0 nop ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 79
800908D4 lui a0,0x1F80 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 81
800908D8 ori a0,0x3B0 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 82
800908DC jal 0x8004F994 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 83
800908E0 move a1,v0 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 84
800908E4 jal 0x8004F6E8 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 85
800908E8 clear a0 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 86
800908EC j 0x800CA148 ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 88
800908F0 nop ; C:\psx\asm\p2is_asm\IS_battle_GG_name_render.asm line 89
800908F4 returncharsinstring: ; C:\psx\asm\p2is_asm\charCalcs.asm line 1
800908F4 lhu v0,0x0(a0) ; C:\psx\asm\p2is_asm\charCalcs.asm line 4
800908F8 nop ; C:\psx\asm\p2is_asm\charCalcs.asm line 5
800908FC srl v0,v0,0xD ; C:\psx\asm\p2is_asm\charCalcs.asm line 6
80090900 bne v0,zero,0x80090910 ; C:\psx\asm\p2is_asm\charCalcs.asm line 7
80090904 clear v1 ; C:\psx\asm\p2is_asm\charCalcs.asm line 8
80090908 j 0x80090940 ; C:\psx\asm\p2is_asm\charCalcs.asm line 11
8009090C nop ; C:\psx\asm\p2is_asm\charCalcs.asm line 12
80090910 ismy1bytestring: ; C:\psx\asm\p2is_asm\charCalcs.asm line 13
80090910 lhu v0,0x0(a0) ; C:\psx\asm\p2is_asm\charCalcs.asm line 14
80090914 nop ; C:\psx\asm\p2is_asm\charCalcs.asm line 15
80090918 andi v0,v0,0xFF ; C:\psx\asm\p2is_asm\charCalcs.asm line 16
8009091C andi v1,v0,0x1 ; C:\psx\asm\p2is_asm\charCalcs.asm line 18
80090920 beq v1,zero,0x8009092C ; C:\psx\asm\p2is_asm\charCalcs.asm line 19
80090924 nop ; C:\psx\asm\p2is_asm\charCalcs.asm line 20
80090928 addiu v0,v0,0x1 ; C:\psx\asm\p2is_asm\charCalcs.asm line 21
8009092C notand1: ; C:\psx\asm\p2is_asm\charCalcs.asm line 23
8009092C sra v0,v0,0x1 ; C:\psx\asm\p2is_asm\charCalcs.asm line 24
80090930 addiu v0,v0,0x1 ; C:\psx\asm\p2is_asm\charCalcs.asm line 25
80090934 jr ra ; C:\psx\asm\p2is_asm\charCalcs.asm line 26
80090938 move v1,v0 ; C:\psx\asm\p2is_asm\charCalcs.asm line 27
8009093C getnewchar: ; C:\psx\asm\p2is_asm\charCalcs.asm line 29
8009093C addiu v1,v1,0x1 ; C:\psx\asm\p2is_asm\charCalcs.asm line 30
80090940 startreading: ; C:\psx\asm\p2is_asm\charCalcs.asm line 31
80090940 lhu v0,0x0(a0) ; C:\psx\asm\p2is_asm\charCalcs.asm line 32
80090944 nop ; C:\psx\asm\p2is_asm\charCalcs.asm line 33
80090948 sltiu v0,v0,0x1000 ; C:\psx\asm\p2is_asm\charCalcs.asm line 34
8009094C bne v0,zero,0x8009093C ; C:\psx\asm\p2is_asm\charCalcs.asm line 35
80090950 addiu a0,a0,0x2 ; C:\psx\asm\p2is_asm\charCalcs.asm line 36
80090954 jr ra ; C:\psx\asm\p2is_asm\charCalcs.asm line 37
80090958 move v0,v1 ; C:\psx\asm\p2is_asm\charCalcs.asm line 38
8009095C calcnextxcustom: ; C:\psx\asm\p2is_asm\charCalcs.asm line 41
8009095C addiu sp,sp,-0x18 ; C:\psx\asm\p2is_asm\charCalcs.asm line 42
80090960 sw ra,0x10(sp) ; C:\psx\asm\p2is_asm\charCalcs.asm line 43
80090964 lhu v0,0x0(a0) ; C:\psx\asm\p2is_asm\charCalcs.asm line 45
80090968 nop ; C:\psx\asm\p2is_asm\charCalcs.asm line 46
8009096C andi v1,v0,0xFF ; C:\psx\asm\p2is_asm\charCalcs.asm line 47
80090970 srl v0,v0,0xD ; C:\psx\asm\p2is_asm\charCalcs.asm line 48
80090974 beq v0,zero,0x80090984 ; C:\psx\asm\p2is_asm\charCalcs.asm line 49
80090978 nop ; C:\psx\asm\p2is_asm\charCalcs.asm line 50
8009097C j 0x8009098C ; C:\psx\asm\p2is_asm\charCalcs.asm line 51
80090980 move v0,v1 ; C:\psx\asm\p2is_asm\charCalcs.asm line 52
80090984 japoldtext: ; C:\psx\asm\p2is_asm\charCalcs.asm line 53
80090984 jal 0x800908F4 ; C:\psx\asm\p2is_asm\charCalcs.asm line 54
80090988 nop ; C:\psx\asm\p2is_asm\charCalcs.asm line 55
8009098C ihavestringlength: ; C:\psx\asm\p2is_asm\charCalcs.asm line 56
8009098C sll v1,v0,0x1 ; C:\psx\asm\p2is_asm\charCalcs.asm line 57
80090990 addu v1,v1,v0 ; C:\psx\asm\p2is_asm\charCalcs.asm line 58
80090994 lw ra,0x10(sp) ; C:\psx\asm\p2is_asm\charCalcs.asm line 59
80090998 sll v0,v1,0x1 ; C:\psx\asm\p2is_asm\charCalcs.asm line 60
8009099C jr ra ; C:\psx\asm\p2is_asm\charCalcs.asm line 61
800909A0 addiu sp,sp,0x18 ; C:\psx\asm\p2is_asm\charCalcs.asm line 62
800909A4 retuncharstocity: ; C:\psx\asm\p2is_asm\charCalcs.asm line 64
800909A4 lhu v0,0x0(a0) ; C:\psx\asm\p2is_asm\charCalcs.asm line 65
800909A8 nop ; C:\psx\asm\p2is_asm\charCalcs.asm line 66
800909AC srl v0,v0,0xD ; C:\psx\asm\p2is_asm\charCalcs.asm line 67
800909B0 bne v0,zero,0x800909C0 ; C:\psx\asm\p2is_asm\charCalcs.asm line 68
800909B4 clear v1 ; C:\psx\asm\p2is_asm\charCalcs.asm line 69
800909B8 j 0x80090940 ; C:\psx\asm\p2is_asm\charCalcs.asm line 71
800909BC nop ; C:\psx\asm\p2is_asm\charCalcs.asm line 72
800909C0 ismy1bytecity: ; C:\psx\asm\p2is_asm\charCalcs.asm line 73
800909C0 lhu v0,0x0(a0) ; C:\psx\asm\p2is_asm\charCalcs.asm line 74
800909C4 nop ; C:\psx\asm\p2is_asm\charCalcs.asm line 75
800909C8 andi v0,v0,0xFF ; C:\psx\asm\p2is_asm\charCalcs.asm line 76
800909CC jr ra ; C:\psx\asm\p2is_asm\charCalcs.asm line 77
800909D0 move v1,v0 ; C:\psx\asm\p2is_asm\charCalcs.asm line 78
800909D4 retuncharstocitydiv2: ; C:\psx\asm\p2is_asm\charCalcs.asm line 81
800909D4 lhu v0,0x0(a0) ; C:\psx\asm\p2is_asm\charCalcs.asm line 82
800909D8 nop ; C:\psx\asm\p2is_asm\charCalcs.asm line 83
800909DC srl v0,v0,0xD ; C:\psx\asm\p2is_asm\charCalcs.asm line 84
800909E0 bne v0,zero,0x800909F0 ; C:\psx\asm\p2is_asm\charCalcs.asm line 85
800909E4 clear v1 ; C:\psx\asm\p2is_asm\charCalcs.asm line 86
800909E8 j 0x80090940 ; C:\psx\asm\p2is_asm\charCalcs.asm line 88
800909EC nop ; C:\psx\asm\p2is_asm\charCalcs.asm line 89
800909F0 ismy1bytecitydiv2: ; C:\psx\asm\p2is_asm\charCalcs.asm line 90
800909F0 lhu v0,0x0(a0) ; C:\psx\asm\p2is_asm\charCalcs.asm line 91
800909F4 nop ; C:\psx\asm\p2is_asm\charCalcs.asm line 92
800909F8 andi v0,v0,0xFF ; C:\psx\asm\p2is_asm\charCalcs.asm line 93
800909FC andi v1,v0,0x1 ; C:\psx\asm\p2is_asm\charCalcs.asm line 95
80090A00 beq v1,zero,0x80090A0C ; C:\psx\asm\p2is_asm\charCalcs.asm line 96
80090A04 nop ; C:\psx\asm\p2is_asm\charCalcs.asm line 97
80090A08 addiu v0,v0,0x1 ; C:\psx\asm\p2is_asm\charCalcs.asm line 98
80090A0C notand1_2: ; C:\psx\asm\p2is_asm\charCalcs.asm line 100
80090A0C sra v0,v0,0x1 ; C:\psx\asm\p2is_asm\charCalcs.asm line 101
80090A10 jr ra ; C:\psx\asm\p2is_asm\charCalcs.asm line 103
80090A14 move v1,v0 ; C:\psx\asm\p2is_asm\charCalcs.asm line 104
80090A18 .close ; C:\psx\asm\p2is_asm\is_main_grouped.asm line 480
FFFFFFFF .open ""C:\\psx\\asm\\p2is_asm\\SLPS_021.00"",0x8000F800 ; C:\psx\asm\p2is_asm\txtpatches.asm line 7
8000F800 .org 0x8001AEF4 ; C:\psx\asm\p2is_asm\txtpatches.asm line 49
8001AEF4 j 0x800908F4 ; C:\psx\asm\p2is_asm\txtpatches.asm line 50
8001AEF8 clear v1 ; C:\psx\asm\p2is_asm\txtpatches.asm line 51
8001AEFC .org 0x8001AF1C ; C:\psx\asm\p2is_asm\txtpatches.asm line 56
8001AF1C j 0x8009095C ; C:\psx\asm\p2is_asm\txtpatches.asm line 59
8001AF20 nop ; C:\psx\asm\p2is_asm\txtpatches.asm line 60
8001AF24 .close ; C:\psx\asm\p2is_asm\txtpatches.asm line 62
FFFFFFFF .open ""C:\\psx\\asm\\p2is_asm\\1096_J_MENU_Settings_Code.bin"",0x800A2000; C:\psx\asm\p2is_asm\txtpatches.asm line 67
800A2000 .org 0x800A2658 ; C:\psx\asm\p2is_asm\txtpatches.asm line 69
800A2658 ori a1,r0,0x5C ; C:\psx\asm\p2is_asm\txtpatches.asm line 70
800A265C .org 0x800A2678 ; C:\psx\asm\p2is_asm\txtpatches.asm line 71
800A2678 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 72
800A267C .org 0x800A2690 ; C:\psx\asm\p2is_asm\txtpatches.asm line 73
800A2690 jal 0x8001AFC0 ; C:\psx\asm\p2is_asm\txtpatches.asm line 74
800A2694 .org 0x800A26AC ; C:\psx\asm\p2is_asm\txtpatches.asm line 77
800A26AC jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 78
800A26B0 .org 0x800A26E8 ; C:\psx\asm\p2is_asm\txtpatches.asm line 79
800A26E8 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 80
800A26EC .org 0x800A298C ; C:\psx\asm\p2is_asm\txtpatches.asm line 81
800A298C jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 82
800A2990 .org 0x800A29B8 ; C:\psx\asm\p2is_asm\txtpatches.asm line 83
800A29B8 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 84
800A29BC .org 0x800A29F4 ; C:\psx\asm\p2is_asm\txtpatches.asm line 85
800A29F4 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 86
800A29F8 .org 0x800A2A44 ; C:\psx\asm\p2is_asm\txtpatches.asm line 87
800A2A44 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 88
800A2A48 .org 0x800A2D20 ; C:\psx\asm\p2is_asm\txtpatches.asm line 89
800A2D20 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 90
800A2D24 .org 0x800A2D4C ; C:\psx\asm\p2is_asm\txtpatches.asm line 91
800A2D4C jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 92
800A2D50 .org 0x800A2D7C ; C:\psx\asm\p2is_asm\txtpatches.asm line 93
800A2D7C jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 94
800A2D80 .org 0x800A3090 ; C:\psx\asm\p2is_asm\txtpatches.asm line 95
800A3090 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 96
800A3094 .org 0x800A30CC ; C:\psx\asm\p2is_asm\txtpatches.asm line 97
800A30CC jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 98
800A30D0 .org 0x800A35AC ; C:\psx\asm\p2is_asm\txtpatches.asm line 99
800A35AC jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 100
800A35B0 .org 0x800A35E0 ; C:\psx\asm\p2is_asm\txtpatches.asm line 101
800A35E0 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 102
800A35E4 .org 0x800A3624 ; C:\psx\asm\p2is_asm\txtpatches.asm line 103
800A3624 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 104
800A3628 .org 0x800A3658 ; C:\psx\asm\p2is_asm\txtpatches.asm line 105
800A3658 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 106
800A365C .org 0x800A369C ; C:\psx\asm\p2is_asm\txtpatches.asm line 107
800A369C jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 108
800A36A0 .org 0x800A36D0 ; C:\psx\asm\p2is_asm\txtpatches.asm line 109
800A36D0 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 110
800A36D4 .org 0x800A3704 ; C:\psx\asm\p2is_asm\txtpatches.asm line 111
800A3704 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 112
800A3708 .org 0x800A3734 ; C:\psx\asm\p2is_asm\txtpatches.asm line 113
800A3734 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 114
800A3738 .org 0x800A3BA8 ; C:\psx\asm\p2is_asm\txtpatches.asm line 115
800A3BA8 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 116
800A3BAC .org 0x800A3BDC ; C:\psx\asm\p2is_asm\txtpatches.asm line 117
800A3BDC jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 118
800A3BE0 .org 0x800A3C20 ; C:\psx\asm\p2is_asm\txtpatches.asm line 119
800A3C20 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 120
800A3C24 .org 0x800A3C4C ; C:\psx\asm\p2is_asm\txtpatches.asm line 121
800A3C4C jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 122
800A3C50 .org 0x800A3C90 ; C:\psx\asm\p2is_asm\txtpatches.asm line 123
800A3C90 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 124
800A3C94 .org 0x800A3CBC ; C:\psx\asm\p2is_asm\txtpatches.asm line 125
800A3CBC jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 126
800A3CC0 .org 0x800A4310 ; C:\psx\asm\p2is_asm\txtpatches.asm line 127
800A4310 jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 128
800A4314 .org 0x800A435C ; C:\psx\asm\p2is_asm\txtpatches.asm line 129
800A435C jal 0x80090000 ; C:\psx\asm\p2is_asm\txtpatches.asm line 130
800A4360 .close ; C:\psx\asm\p2is_asm\txtpatches.asm line 132
FFFFFFFF .open ""C:\\psx\\asm\\p2is_asm\\1119_CITY_CODE_patched_2023.bin"",0x800AB000; C:\psx\asm\p2is_asm\txtpatches.asm line 137
800AB000 .org 0x800AD30C ; C:\psx\asm\p2is_asm\txtpatches.asm line 153
800AD30C jal 0x800909A4 ; C:\psx\asm\p2is_asm\txtpatches.asm line 154
800AD310 .org 0x800AD3AC ; C:\psx\asm\p2is_asm\txtpatches.asm line 158
800AD3AC jal 0x800909A4 ; C:\psx\asm\p2is_asm\txtpatches.asm line 159
800AD3B0 .org 0x800AF1DC ; C:\psx\asm\p2is_asm\txtpatches.asm line 162
800AF1DC jal 0x8001AF1C ; C:\psx\asm\p2is_asm\txtpatches.asm line 164
800AF1E0 .close ; C:\psx\asm\p2is_asm\txtpatches.asm line 167
FFFFFFFF .open ""C:\\psx\\asm\\p2is_asm\\0001_BATTLE_CODE.bin"",0x800AB000; C:\psx\asm\p2is_asm\txtpatches.asm line 205
800AB000 .org 0x800CA0F0 ; C:\psx\asm\p2is_asm\txtpatches.asm line 208
800CA0F0 j 0x800907E4 ; C:\psx\asm\p2is_asm\txtpatches.asm line 214
800CA0F4 move a0,s3 ; C:\psx\asm\p2is_asm\txtpatches.asm line 215
800CA0F8 .close ; C:\psx\asm\p2is_asm\txtpatches.asm line 217

572
EP_main_dynamic_chains.asm Normal file
View File

@@ -0,0 +1,572 @@
;
; Persona 2 Eternal Punishment (PSX) JAP / Custom Characters/Data Patch
;
; Author: Sergey Shemet 06/10/2022
.psx
.definelabel SetDrawTPage, 0x800578fc
.definelabel storeColor, 0x8001c0b4
.definelabel initCopyCharChain, 0x8001b110
;.definelabel makeCharPixels, 0x8001a08f ;need custom routine with custom font
;.definelabel GenerateSmallChar, 0x8001a284 ;need custom routine
.definelabel MakeShadowSmallChar, 0x8001b2a8
.definelabel PrintBigDMAText, 0x8001a3a8
.definelabel MyAddr, 0x8009
.open "SLPS_028.25", 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(a0) ;read half 2 bytes of text (r4, not s1+0c!!!!!)
nop
; 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 s4,0x38(sp)
move s4,r4 ;textReadAddr - S4 (NOT S6!)
sw s0,0x28(sp)
move s0,r5
sw s1,0x2c(sp)
move s1,r6
sw s3,0x34(sp)
; NEW COMMAND OBRAB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;lw v1,0x0(s5)
;nop
;v1/r3 - MyChars charcount
andi v0,v0,0xff
addiu s4,s4,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 r4,r7,0xff ;s0 - cut textMode (color & shadow)
lui r7, 0x8008 ;r7 = 8008 0000
lui r6, 0xff00 ;r6 = FF000000
addiu t1,r7,-0x31a8 ;t1 - new free CHAIN Here
lw v1, -0x31a8(r7) ;r3/v1 = load freeChain
lbu r5,0x60(sp) ;shadow flag from stack to r5
lui v0,0x8000 ;r2 = 8000 0000
sw ra,0x48(sp)
sw s7,0x44(sp)
sw s6,0x40(sp)
sw s5,0x3c(sp) ; push ra,r30,r23,31,r20
sw s2,0x30(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 s5,v1,v0 ;r20 - 80...+r3 = freeChain Main Addr
lw v0,0x4(t1) ;Load DMA Counter
lw v1,0x0(s5) ;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,-0x31a8(r7) ;SAVE next free Chain (FF...)
move r4,s5 ;currentChainAddr
sll r5,s0,0x10 ;r5 = X<<10h (003A0000)
sra r5,r5,0x10 ; r5=r5>>10h 0000003A
sll r6,s1,0x10 ; r6 = Y << 10h
jal initCopyCharChain ;init line chains
sra r6,r6,0x10 ;r6>>10h - 100% clean coords
;move r7,s0 ;store textMode _THIS IS FOR INIT
;;;;init ScratchPad
;;;;;;;;;;;;;;;;;; CPU TO VRAM
lui r6,0x1f80
ori r6,r6,0x348 ;r7 = FIRST CHAR START
;lui r6,0x1f80 ;LOWER HALF OF CHAR - DONT NEED!!!
;ori r6,r6,0x38c
;4bit table pattern
.include "EP_4bitPattern.asm"
li v0,0x2
sh v0,0x1c(sp)
li v0,0xc
li r4,0x10 ;COMMANDS IN CHAR FORMING CHAIN?
lui r3,0xa000 ;r4 = a000 0000
sh v0,0x1e(sp) ; SAVE 000C0002 TO STACK+1c
; INIT CHAR
lui v0,0x100 ;FLUSH CACHE 01 00 00 00 =>DAT_1f80034b
sb r4,0x3(r6) ;SAVE 0d 00 00 00 =>DAT_1f80034c cmdcount\
sw r3,0x4(r6); SAVE a000000 TO DAT_1f80034c
lui at,0x1f80 ;scrathcpadStart
sw v0,0x388(at) ;save 0x01 00 00 00 to end of 1st CHAR chain
; 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)
lhu r4,0x98(gp) ;0310 ;Load x(0310) to r8
lhu r3,0x9a(gp) ;01f0 ;Load y(01F0)to r2
;lui v1,0x100 ;0100 0000 flushcache
li v0,0x80
sb v0,0x4(s3)
sb v0,0x5(s3)
sb v0,0x6(s3) ;make 80 80 80 64 (3d4,5,6)
setY1:
lw v0,0x1c(sp) ; r2 = 000c0002 from stack
lh r7,0x98(gp) ;for futher sprite X calc
sh r4,0x18(sp)
sh r3,0x1a(sp) ;SAVE CONCAT 013001f0 to stack
lw r4,0x18(sp) ;LOAD 013001f0 from stack
;lw v1,0x18(sp)
move t0,r7
sw r4,0x8(r6) ;DAT_1f800350 load r4 (upper coord 01f6) to r7+8 (DMA)
sw v0,0xc(r6) ;=>DAT_1f800354 r2 - 000c0002 to 1st char (to r7+0c)
bgez r7,LAB_800194fc
SetX1:
sh s1,0x20(sp) ;store X half to sp+10 !!!!!!!!!!!!!!!!!
addiu t0,r7,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,r7,v0 ;r2 = r6 - r2 = 30
lh v1,0x9a(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,0xa0(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
sh s0,0x8(s3)
sh s1,0xa(s3)
li v0,0xc ; r2 = c Sprite HEIGTH
sh v0,0x12(s3) ; 3e2 - 000c save
;TEXT READ START
lbu r4,0x0(s4) ;MAIN READ CHAR COMMAND - Load Byte Unsigned
nop
addiu s4,s4,0x1 ;Shift read address +1 byte
;;;;;;;;;;;;;;;;;;;;;;;;;CHAR CHECK CUTTED!
lui s6,0x8008 ;load 80080000 to r17
addiu s7,s6,-0x3198 ;r21 = r17-4930= (tempDMA)
lui s0,0xff
ori s0,s0,0xffff ;s0 = 00 ff ff ff
lui s1,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
;ITS A SPACE!!!!
sh v0,-0xE(t2) ;Save charcount += 1
nop
lbu r4,0x0(s4) ;LOAD NEXT CHAR
;j SpaceJump
;X COORD SHIFT (+6)
lhu v0,0xa8(gp) ;LOAD INIT X
lhu v1,0x8(s3) ;LOAD LAST X IN SCRATCH
addiu v0,v0,0x6 ;v0 = INIT X+6
addu v1,v1,v0 ;LAST X = LAST X + (INIT X + 6)
sh v1,0x8(s3) ;UPDATE LAST X IN SCRATCH DMA
j NextChar
addiu s4,s4,0x1 ;Shift read address +1 byte
SpaceCheckBranch:
;LAB_8001a608 NextChar:
jal makeCharPixelsCustom ;MAKE SMALL CHAR IN SCRATCH ___ CUSTOM ROUTINE
clear s2
; 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 t6,s5 ; r14 = r21 (params) =r9 FROM SMALL SRC
addiu t5,sp,0x10 ; r11 = sp + 10 = 807ffe50
lui t3,0x8008
addiu t4,t3,-0x31a8
move t1,s5 ; r9 = r21 (params again) =t9 ;=r8 FROM SMALL
SetY:
; sh s8,0xa(s3) ; DAT_1f8003da *r19(1st scr DMA)+0a = r30 (Y??) !!!!!!!!!!!!!!!!
SetX:
; 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,-0x3198(s6); r2 = *freeChainAddr
nop
and r4,v0,t2 ; r4 = r2 & ff00..
and v0,v0,s0 ; r2 & 00FFFFFF
or r5,v0,s1 ; r5 = r2 or r23 (80xxxxxx)
lw v0,0x4(s7) ; CmdCounter
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(s7) ; CmdCounter save DMA Counter
sw r4,-0x3198(s6); freeChain save new freeChain
CopyCmdFromScratch:
; CopyScriptChain copy from scratch
lw t9,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 t9,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 t9,0x10(s3);>DAT_1f8003e0 r14 = 000c0008 - spritesize after copy
nop
sw t9,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(t6) ;t1->t6 r2 = half (DMA params)+4 (charCounter)
nop
bne v0,zero,NotFirstChar ; if CharCount<>0 then Goto...
nop ;clear t0
sw r5,0x28(t1) ;t0->t1 ;*curChain+28 = Set first Char Chain
sw t8,0xc(t6) ;t1->t6 ; Params+0c = save STORE COORDS to params
;sh s2,0xe(t4) ;t1->t6 ;Params+0e = save half Y
NotFirstChar:
; lui t3,0x1f80
; ori t3,t3,0x388 ; Scratch DMAChain CharEndAddr
lui r5,0x1f80 ;;;;;;;;;;;;;;;;;;;;;;;ADDRESS OF CHAR HERe ---> SLL CHARNUM, 6
lw v0,-0x31a8(t3) ; r2 = *nextFreeChain
ori r5,r5,0x348 ; r5 | 1f800348 = Scratch CharData
and r4,v0,t2 ; r4 = r2 & FF000000 FFNEXTCHAIN
and v0,v0,s0 ; r2 & 00FFFFFF = 00XTCHAN
or r7,v0,s1 ;or (800...) ; r7 = r2 | r12 = nextChain & 80...
move r6,r7 ; r6 = r7 (nextChain)
lw v0,0x4(t4) ; 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 & 80.... commandCount / currHeader
or r4,r4,v1 ; r4 & r3 = ff......
sw v0,0x4(t4) ; save DMA Counter
andi v0,r7,0x3 ; r2 = r7 & 3 (check destAddr MOD 4)
sw r4,-0x31a8(t3) ; save new freeChain
beq v0,zero,Copy16Bytes ; if r7 MOD 4 = 0 then Branch
addiu v0,r5,0x40 ;T3 = 388!
;;;;;;;;;;;;;;;Copy from ScratchPad To Chain
CopyBy2Bytes:
lwl t9,0x3(r5) ; if r7 mod4 <> 0 - копируем по 2 байта
lwr t9,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 t9,0x3(r6)
swr t9,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,v0,CopyBy2Bytes
addiu r6,r6,0x10
j last4BytesCopy
nop
Copy16Bytes:
lw t9,0x0(r5);>DAT_1f800348 r5 - curScratchAddr,r6 -cur DMAAddr
lw t7,0x4(r5)
lw t8,0x8(r5)
lw t5,0xc(r5)
sw t9,0x0(r6)
sw t7,0x4(r6)
sw t8,0x8(r6)
sw t5,0xc(r6)
addiu r5,r5,0x10
bne r5,v0,Copy16Bytes
addiu r6,r6,0x10
last4BytesCopy:
lwl t9,0x3(r5) ; r14 left = 2 bytes from *r5+3
lwr t9,0x0(r5);>DAT_1f800358 r14 right = 2 bytes from *r5
nop
swl t9,0x3(r6) ; *r6 = r14 left
swr t9,0x0(r6) ; *r6+3 = r14 right
; linking DMA char+copysprite
; t0 (smallSRC) = t1 (HERE) !!!! ;r8 = r9 !!!!!!!!!!!!!
; t1 (smallSRC) = t6 (HERE) !!!! ;r9 = r14 !!!!!!!!!!!!
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 (10FFFFFF)
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,t6,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
;X COORD SHIFT (+6)
lhu v0,0xa8(gp) ;LOAD INIT X
lhu v1,0x8(s3) ;LOAD LAST X IN SCRATCH
addiu v0,v0,0x6 ;v0 = INIT X+6
addu v1,v1,v0 ;LAST X = LAST X + (INIT X + 6)
sh v1,0x8(s3) ;UPDATE LAST X IN SCRATCH DMA
SpaceJump:
;;;CharCount + Check
lhu v0,0x4(s5) ; r2 = current charDMACount
lui t9,MyAddr
addiu v0,v0,0x1 ; a += 1
sh v0,0x4(s5) ;save DMAcounter to chain
;DMA OVERFLOW CHECK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (8007b6d4)
lw v0,0x4(s7) ; CmdCounter r2 = DMA Char Counter
;lhu v1,-0xC(t9) ;v1 = 8008fff4 = minimum cmd counter
move v1,5 ;80cd0 ///
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(s4) ; load next Char to r4 (byte)
sh v0,-0xE(t3) ; store myCharCounter to MyAddr-E
addiu s4,s4,0x1 ;Shift CharAddr
bne v0,v1,NextChar ; if currentChar<>OverallChar - branch
nop
TextEnd:
clear r18
lui s3,0x8008
addiu s4,s3,-0x3198 ; r19 = 80080000, r21 = 7ce68
lui s1,0xff ; r17 = 00ff0000
ori s1,s1,0xffff ; r17 & ffff = 00ff ffff
move s0,s5 ; 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,-0x3198(s3);>7ce68 r3 = next free Chain (*7ce68)
lw r7,0x9c(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,-0x3198(s3);>7ce68 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(s4);>DAT_8007b6d4_CmdCounter r4 = DMA Counter
or v0,v0,v1 ; r2 | r3
sw v0,-0x3198(s3);>7ce68 new free chain addr add to *7b6b0
addiu r4,r4,-0x1 ; DMA Cunter =- 1
sw r4,0x4(s4);>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,s5 ; r2 = DMAParamsMain
lw ra,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 "EP_charload.asm"
.include "charCalcs.asm"
;patching PrintCommandText
.org 0x8001d138
;jal 0x8001a3a8 ORIG CALL
jal ExternalPrint
.org 0x8001d0c4
;jal 0x8001a3a8 ORIG CALL
jal ExternalPrint
.org 0x8001bee0
j ReturnCharsInString ;custom routine
; j 0x8001beec
.org 0x8001bf08
; addiu sp,sp,-0x18 ;Original Code
; sw ra,0x10(sp)
j calcnextXCustom ;PATCHED
nop
.close
;;;;;;;;;;;;;;;;;;;;;;;;; BOSSNAMECOPY
;;.include "battle_patch.asm"
;;.include "txtpatches.asm" ;misc text patches
; COMPILE COMMAND: ./armips -temp 123_EP EP_main.asm

View File

@@ -126,9 +126,13 @@ Custom regs:
- всегда за тобой
- splash screen переводчика
- имя в боёвке
- описания статов персон
- группа пернатых феникс р
- розовый аргус
- майя-прайм
- Рейх и прочие арканы
- Измеритель звёзд и прочие заклинания
- оракул где-то рядом
- ортр
- аэшма
- ортр суммон + название
- аэшма суммон + название
- перебрать все локации в данжах

View 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

View File

@@ -7,22 +7,22 @@ make_char_line_in_scratch:
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:
lui a0, 0x1f80
addiu a1, a0, 0x1c0
addiu a2, a0, 0x348
move a1, t3 //dest address
addiu a0, a1, 0x184
li v0, 0
char_data_loop:
sw v0, 0x0(a1)
addiu a1, 0x4
bne a1, a2, char_data_loop
bne a1, a0, char_data_loop
nop
addiu s1, a0, 0x01c0 // destination address reset
move s1, t3 // destination address reset
li a2, 0 // char index counter
lbu v0, 0x0(t7)
@@ -139,8 +139,10 @@ sprite_end:
li v0, 0x1
bne v1, v0, NotShadow //Shadow character check
nop
lui a0, 0x1f80
ori a0, a0, 0x1c0
move a0, s1
nop
make_shadow: //s3 - line width in bytes, a0 - data start
move a1, s3 // a1 = ширина
@@ -180,7 +182,7 @@ shadow_row_loop:
beq v0, zero, no_s // если пикселя нет, пропускаем
nop
// Проверяем граничный случай (8-й пиксель)
//Проверяем граничный случай (8-й пиксель)
li v0, 0x7 // последний пиксель (X = 7)
bne a2, v0, normal_case // если не 8-й пиксель - обычная обработка
nop
@@ -229,6 +231,6 @@ shadow_row_loop:
NotShadow:
lw t5,0x14(sp)
lw ra,0x10(sp) //Restore stack and exit
nop
move v0, s1
jr ra
addiu sp, sp, 0x18

View File

@@ -163,10 +163,10 @@ rect_scratchpad_template:
make_sprite_size_table:
lui s3, 0x1f80
ori s3, 0x03f0 // Будем серить в scratch
lui v0, 0x0303 // таблицей рассчитанных команд и ширин
lui v0, 0x0403 // таблицей рассчитанных команд и ширин
ori v0, 0x0201 // необходимых для спрайтов линии (cmdCount << 2)
sw v0, 0x0(s3)
lui v1, 0x0606
lui v1, 0x0706
ori v1, 0x0504
sw v1, 0x4(s3)
li v0, 0x0807
@@ -214,6 +214,9 @@ TextGroupReadLoop:
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)
@@ -472,10 +475,11 @@ PageTLoop:
// Включаем дополнительные файлы
.include "IS_charload_grouped.asm"
.include "IS_battle_GG_name_render.asm"
.include "charCalcs.asm"
.close
.include "txtpatches.asm" // misc text patches
// compile with ./armips -sym SLPS_021.00.map IS_main_grouped.asm
// compile with ./armips -sym SLPS_021.00.map -temp 123.txt is_main_grouped.asm

Binary file not shown.

BIN
SLPS_021.00.bin Normal file

Binary file not shown.

View File

@@ -24,53 +24,58 @@
800901D0 misc_init
800901D4 textgroupreadloop
800901F8 readtexttobuffer
8009023C form_char_data_in_scratch
80090244 rect_cmd_init
8009026C rect_set_x
80090280 rect_set_width
80090288 pageloop
800902B8 rect_copy_scratch_to_ram
800902E4 rect_scratch_connect
80090338 cpu2vram_cmd_loop
800903A0 copy_char_data_start
800903BC copy_char_data_loop
800903E4 set_flush_cache_cmd
800903F4 cpu2vram_dma_link
80090450 chunk_making_end
8009046C textend
80090488 pagetloop
8009051C .asc:005A
80090576 .byt:0001
80090577 .byt:0001
80090578 make_char_line_in_scratch
80090594 char_data_clear
800905A4 char_data_loop
800905D0 chars_font_loop
800905F8 char_lines_loop
80090608 its_not_empty
80090698 not_last
800906A4 divideby4
800906A4 zero_jump
800906B4 spacejump
800906D0 sprite_end
800906E8 make_shadow
8009070C shadow_row_loop
80090710 shadow_sprites_loop
80090720 shadow_pixel_loop
80090754 normal_case
80090778 no_s
800907A4 notshadow
800907B8 returncharsinstring
800907D4 ismy1bytestring
800907F0 notand1
80090800 getnewchar
80090804 startreading
80090820 calcnextxcustom
80090848 japoldtext
80090850 ihavestringlength
80090868 retuncharstocity
80090884 ismy1bytecity
80090898 retuncharstocitydiv2
800908B4 ismy1bytecitydiv2
800908D0 notand1_2
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


245
ep_ai_main.asm Normal file
View File

@@ -0,0 +1,245 @@
; ===== ОСНОВНАЯ ФУНКЦИЯ ПЕЧАТИ =====
.org 0x80090000
ExternalPrint:
lhu v0,0x0(a0) ; Читаем 2 байта текста
nop
srl v1,v0,0xD ; Проверяем 13-й бит (система 1-байтовых символов)
bne v1,zero,MyPrintLineRoutine ; Если установлен - используем кастомную систему
clear v1
j PrintBigDMAText ; Иначе - оригинальная система печати
nop
; ===== КАСТОМНАЯ СИСТЕМА ПЕЧАТИ =====
MyPrintLineRoutine:
addiu sp,sp,-0x50 ; Сохраняем контекст
sw s4,0x38(sp)
move s4,r4 ; s4 = адрес текста для чтения
sw s0,0x28(sp)
move s0,r5 ; s0 = параметр X
sw s1,0x2c(sp)
move s1,r6 ; s1 = параметр Y
sw s3,0x34(sp)
; ===== ИНИЦИАЛИЗАЦИЯ ПАРАМЕТРОВ ТЕКСТА =====
andi v0,v0,0xff
addiu s4,s4,0x2 ; Сдвигаем указатель текста на +2 байта
lui s3,MyAddr
sw v0,-0x10(s3) ; Сохраняем счётчик байтов @ 8008fff0
sh zero,-0xE(s3) ; Очищаем счётчик символов @ 8008fff2
; ===== ИНИЦИАЛИЗАЦИЯ DMA ЦЕПОЧЕК =====
lui s3,0x1f80
ori s3,s3,0x3d0 ; s3 = 1f8003d0 - команда копирования спрайта в scratch
lui t0,0xff
ori t0,t0,0xffff ; t0 = 00FFFFFF (маска)
andi r4,r7,0xff ; Режим текста (цвет и тень)
lui r7, 0x8008 ; r7 = 80080000
lui r6, 0xff00 ; r6 = FF000000 (маска)
; ЗАГРУЗКА ЦЕПОЧКИ ФОРМИРОВАНИЯ СИМВОЛОВ
addiu t1,r7,-0x31a8 ; t1 = адрес цепочки формирования (8007ce58)
lw v1, -0x31a8(r7) ; v1 = текущая свободная цепочка формирования
lbu r5,0x60(sp) ; Флаг тени из стека
and r6,v1,r6 ; r6 = старшие байты цепочки (FFxxxxxx)
andi r5,r5,0xff ; Очищаем режим текста
and v1,v1,t0 ; v1 = младшие байты цепочки (00xxxxxx)
or s5,v1,v0 ; s5 = адрес текущей цепочки формирования (80xxxxxx)
; ОБНОВЛЕНИЕ СЧЁТЧИКА И ЦЕПОЧКИ
lw v0,0x4(t1) ; Счётчик команд DMA
lw v1,0x0(s5) ; Следующая свободная цепочка
addiu v0,v0,-0x1 ; Уменьшаем счётчик
and v1,v1,t0 ; Обрезаем старший байт
or r6,r6,v1 ; Объединяем с старшими байтами
sw v0,0x4(t1) ; Сохраняем счётчик
jal storeColor
sw r6,-0x31a8(r7) ; Сохраняем обновлённую цепочку
; ===== ИНИЦИАЛИЗАЦИЯ ЦЕПОЧКИ КОПИРОВАНИЯ =====
move r4,s5 ; Адрес текущей цепочки
sll r5,s0,0x10 ; Координата X
sra r5,r5,0x10
sll r6,s1,0x10 ; Координата Y
jal initCopyCharChain ; Инициализация цепочки копирования
sra r6,r6,0x10
; ===== НАСТРОЙКА SCRATCH PAD ДЛЯ DMA =====
lui r6,0x1f80
ori r6,r6,0x348 ; r6 = 1f800348 - начало данных символа в scratch
; ... (паттерны 4-bit и инициализация пропущены для краткости)
; ===== ОСНОВНОЙ ЦИКЛ ОБРАБОТКИ СИМВОЛОВ =====
NextChar:
addiu r4,r4,-0x20 ; Сдвигаем непечатаемые символы
; ОБРАБОТКА ПРОБЕЛОВ
bne r4,zero,SpaceCheckBranch
nop
lui t2,MyAddr
lh v0,-0xE(t2) ; Текущий счётчик символов
nop
lh t3,-0x10(t2) ; Общий счётчик символов
addiu v0,v0,1
beq v0,t3,SpaceCheckBranch ; Если последний символ - не обрабатываем пробел
nop
; ПРОБЕЛ - только сдвигаем позицию
sh v0,-0xE(t2) ; Обновляем счётчик
nop
lbu r4,0x0(s4) ; Следующий символ
; СДВИГ ПОЗИЦИИ X
lhu v0,0xa8(gp) ; Начальный X
lhu v1,0x8(s3) ; Текущий X в scratch
addiu v0,v0,0x6 ; Сдвиг на 6 пикселей
addu v1,v1,v0 ; Новый X
sh v1,0x8(s3) ; Обновляем в scratch DMA
j NextChar
addiu s4,s4,0x1 ; Следующий байт текста
; ===== ОБРАБОТКА НЕ-ПРОБЕЛЬНЫХ СИМВОЛОВ =====
SpaceCheckBranch:
jal makeCharPixelsCustom ; СОЗДАЁМ ПИКСЕЛИ СИМВОЛА В SCRATCH
clear s2
; ===== ФОРМИРОВАНИЕ КОМАНДЫ КОПИРОВАНИЯ SPRITE =====
PageLoop:
; ЗАГРУЗКА ЦЕПОЧКИ КОПИРОВАНИЯ SPRITE
lw v0,-0x3198(s6) ; Адрес свободной цепочки копирования (8007ce68)
nop
and r4,v0,t2 ; Старшие байты
and v0,v0,s0 ; Младшие байты
or r5,v0,s1 ; r5 = полный адрес цепочки (80xxxxxx)
; ОБНОВЛЕНИЕ СЧЁТЧИКА КОПИРОВАНИЯ
lw v0,0x4(s7) ; Счётчик команд копирования
lw v1,0x0(r5) ; Следующая свободная цепочка
addiu v0,v0,-0x1 ; Уменьшаем счётчик
and v1,v1,s0 ; Обрезаем старший байт
or r4,r4,v1 ; Объединяем
sw v0,0x4(s7) ; Сохраняем счётчик
sw r4,-0x3198(s6) ; Сохраняем обновлённую цепочку
; ===== КОПИРОВАНИЕ ИЗ SCRATCH В ЦЕПОЧКУ =====
CopyCmdFromScratch:
; Копируем команду DMA из scratch в цепочку
lw t9,0x0(s3) ; Количество команд (04000000)
lw t7,0x4(s3) ; Команда копирования спрайта (64808080)
lw t8,0x8(s3) ; Координаты XY на экране
lw t5,0xc(s3) ; CLUT и координаты текстуры
; СОХРАНЯЕМ В ЦЕПОЧКУ КОПИРОВАНИЯ
sw t9,0x0(r5) ;
sw t7,0x4(r5)
sw t8,0x8(r5)
sw t5,0xc(r5)
lw t9,0x10(s3) ; Размер спрайта после копирования
nop
sw t9,0x10(r5) ; Последняя команда
; ===== СВЯЗЫВАНИЕ ЦЕПОЧЕК =====
; СВЯЗЬ: ЦЕПОЧКА ФОРМИРОВАНИЯ → ЦЕПОЧКА КОПИРОВАНИЯ
lw v1,0x18(t1) ; Текущая цепочка формирования
lw v0,0x0(r5) ; Текущая команда копирования
lw v1,0x0(v1) ; Следующая цепочка формирования
and v0,v0,t2 ; Маска старших байтов
and v1,v1,s0 ; Маска младших байтов
or v0,v0,v1 ; Объединяем
sw v0,0x0(r5) ; Обновляем команду
; ОБНОВЛЯЕМ ССЫЛКУ В ЦЕПОЧКЕ ФОРМИРОВАНИЯ
lw r4,0x18(t1) ; Адрес цепочки формирования
nop
lw v0,0x0(r4) ; Текущая команда формирования
and v1,r5,s0 ; Адрес цепочки копирования
and v0,v0,t2 ; Маска старших байтов
or v0,v0,v1 ; Объединяем
sw v0,0x0(r4) ; Сохраняем обновлённую ссылку
sw r5,0x18(t1) ; Сохраняем текущую цепочку копирования
; ===== ПРОВЕРКА ПЕРВОГО СИМВОЛА =====
lhu v0,0x4(t6) ; Счётчик символов
nop
bne v0,zero,NotFirstChar ; Если не первый символ - пропускаем
nop
; ИНИЦИАЛИЗАЦИЯ ДЛЯ ПЕРВОГО СИМВОЛА
sw r5,0x28(t1) ; Устанавливаем первую цепочку символа
sw t8,0xc(t6) ; Сохраняем координаты в параметрах
NotFirstChar:
; ===== КОПИРОВАНИЕ ДАННЫХ СИМВОЛА ИЗ SCRATCH =====
lui r5,0x1f80
ori r5,r5,0x348 ; r5 = данные символа в scratch
lw v0,-0x31a8(t3) ; Следующая свободная цепочка формирования
and r4,v0,t2 ; Старшие байты
and v0,v0,s0 ; Младшие байты
or r7,v0,s1 ; r7 = адрес цепочки (80xxxxxx)
move r6,r7 ; r6 = адрес назначения
; ... (копирование данных пропущено для краткости)
; ===== СВЯЗЫВАНИЕ: ДАННЫЕ СИМВОЛА → КОМАНДА КОПИРОВАНИЯ =====
lw v1,0x18(t1) ; Текущая команда копирования
lw v0,0x0(r7) ; Текущие данные символа
lw v1,0x0(v1) ; Следующая команда копирования
and v0,v0,t2 ; Маска старших байтов
and v1,v1,s0 ; Маска младших байтов
or v0,v0,v1 ; Объединяем
sw v0,0x0(r7) ; Обновляем данные символа
; ОБНОВЛЯЕМ ССЫЛКУ В КОМАНДЕ КОПИРОВАНИЯ
lw r4,0x18(t1) ; Адрес команды копирования
nop
lw v0,0x0(r4) ; Текущая команда
and v1,r7,s0 ; Адрес данных символа
and v0,v0,t2 ; Маска старших байтов
or v0,v0,v1 ; Объединяем
sw v0,0x0(r4) ; Сохраняем обновлённую ссылку
sw r7,0x18(t1) ; Сохраняем текущие данные символа
; ===== СДВИГ ПОЗИЦИИ ДЛЯ СЛЕДУЮЩЕГО СИМВОЛА =====
lhu v0,0xa8(gp) ; Начальный X
lhu v1,0x8(s3) ; Текущий X
addiu v0,v0,0x6 ; Сдвиг на 6 пикселей
addu v1,v1,v0 ; Новый X
sh v1,0x8(s3) ; Обновляем
; ===== ПРОВЕРКА ЗАВЕРШЕНИЯ ТЕКСТА =====
lhu v0,0x4(s5) ; Счётчик символов DMA
lui t9,MyAddr
addiu v0,v0,0x1
sh v0,0x4(s5) ; Сохраняем
; ПРОВЕРКА ПЕРЕПОЛНЕНИЯ DMA
lw v0,0x4(s7) ; Текущий счётчик
move v1,5 ; Минимальный лимит
sltu v0,v0,v1 ; Проверяем переполнение
bne v0,zero,TextEnd ; Если переполнение - завершаем
; ПРОВЕРКА КОНЦА СТРОКИ
lui t3,MyAddr
lhu v0,-0xE(t3) ; Текущий символ
lhu v1,-0x10(t3) ; Общее количество символов
addiu v0,v0,0x1
lbu r4,0x0(s4) ; Следующий символ
sh v0,-0xE(t3) ; Сохраняем счётчик
addiu s4,s4,0x1 ; Сдвигаем указатель
bne v0,v1,NextChar ; Если не конец - продолжаем
nop
; ===== ЗАВЕРШЕНИЕ ОБРАБОТКИ ТЕКСТА =====
TextEnd:
; ... (восстановление контекста и завершение)

View File

@@ -201,3 +201,17 @@ jal 0x8001af1c
;City Districts Table with pointers Here
;BATTLE CUSTOM NAME RENDERING REDIRECT
.open "0001_BATTLE_CODE.bin", 0x800AB000
.org 0x800ca0f0
;ORIGINAL
; jal 0x8001aef4
; move a0, s3 //a0 - адрес имени
j customNameRender
move a0, s3
.close