IS new text system complete
This commit is contained in:
Binary file not shown.
Binary file not shown.
918
123.txt
Normal file
918
123.txt
Normal 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
572
EP_main_dynamic_chains.asm
Normal 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
|
||||
@@ -126,9 +126,13 @@ Custom regs:
|
||||
- всегда за тобой
|
||||
- splash screen переводчика
|
||||
- имя в боёвке
|
||||
- описания статов персон
|
||||
- группа пернатых феникс р
|
||||
- розовый аргус
|
||||
- майя-прайм
|
||||
- Рейх и прочие арканы
|
||||
- Измеритель звёзд и прочие заклинания
|
||||
- оракул где-то рядом
|
||||
- ортр
|
||||
- аэшма
|
||||
- ортр суммон + название
|
||||
- аэшма суммон + название
|
||||
- перебрать все локации в данжах
|
||||
89
IS_battle_GG_name_render.asm
Normal file
89
IS_battle_GG_name_render.asm
Normal file
@@ -0,0 +1,89 @@
|
||||
//
|
||||
// Persona 2 Innocent Sin (PSX) JAP / Custom Name Render In Battle
|
||||
// Author: Sergey Shemet 06/10/2025
|
||||
|
||||
|
||||
customNameRender:
|
||||
_4bit_conversion_table2:
|
||||
lui t8, 0x1f80
|
||||
ori t8, t8, 0x390
|
||||
lui t7, 0x8001
|
||||
ori t7, t7, 0x3e8
|
||||
lw t5, 0x0(t7)
|
||||
lw t6, 0x4(t7)
|
||||
sw t5, 0x0(t8)
|
||||
sw t6, 0x4(t8)
|
||||
lw t5, 0x8(t7)
|
||||
lw t6, 0xC(t7)
|
||||
sw t5, 0x8(t8)
|
||||
sw t6, 0xC(t8)
|
||||
lw t5, 0x10(t7)
|
||||
lw t6, 0x14(t7)
|
||||
sw t5, 0x10(t8)
|
||||
sw t6, 0x14(t8)
|
||||
lw t5, 0x18(t7)
|
||||
lw t6, 0x1C(t7)
|
||||
sw t5, 0x18(t8)
|
||||
sw t6, 0x1C(t8)
|
||||
|
||||
make_sprite_size_table2:
|
||||
lui s3, 0x1f80
|
||||
ori s3, 0x03f0 // Будем серить в scratch
|
||||
lui v0, 0x0403 // таблицей рассчитанных команд и ширин
|
||||
ori v0, 0x0201 // необходимых для спрайтов линии (cmdCount << 2)
|
||||
sw v0, 0x0(s3)
|
||||
lui v1, 0x0706
|
||||
ori v1, 0x0504
|
||||
sw v1, 0x4(s3)
|
||||
|
||||
//адрес текста в a0
|
||||
clear a1
|
||||
lui v1, MyAddr
|
||||
read_char:
|
||||
lbu v0, 0x0(a0)
|
||||
nop
|
||||
|
||||
sb v0, -0x0c(v1) // Запись символа в буфер
|
||||
beq v0, zero, end_of_name_read
|
||||
nop
|
||||
addiu v1, 0x1 //Увеличиваем адрес записи в буфер
|
||||
addiu a1, 0x1 //Счётчик +1
|
||||
addiu a0, 0x2 //адрес чтения + 2
|
||||
sltiu v0, a1, 0x7
|
||||
bne v0, zero, read_char //Продолжаем 6 символов...
|
||||
nop
|
||||
|
||||
end_of_name_read:
|
||||
move a0, a1 // Перебрасываем cчётчик символов в a0
|
||||
addu s3, s3, a0 // получаем адрес количества спрайтов из таблицы
|
||||
addiu s3, -0x1 // index -1
|
||||
lbu a1, 0x0(s3) // Читаем количество ширину спрайтов в a1
|
||||
nop
|
||||
|
||||
lui s3, 0x1f80 //Формируем данные rect для команды LoadImage в scratch
|
||||
ori s3, 0x03b0 // адрес хранения Rect
|
||||
|
||||
lui a2, 0x0121 //Y
|
||||
ori a2, 0x03C8 //X
|
||||
sw a2, 0x0(s3)
|
||||
lui a2, 0x000C //Heigth
|
||||
sll a1, 1 //*2 = Ширина в 16 битах
|
||||
or a2, a1 //Совмещаем ширину
|
||||
sw a2, 0x4(s3)
|
||||
sra a1, 1 //Возвращаем ширину блоков спрайта и передаём в функцию
|
||||
|
||||
lui t3, 0x8008
|
||||
ori t3, t3, 0xf000 // Начало данных спрайта в scratch
|
||||
|
||||
jal make_char_line_in_scratch //Формируем символы в scratch
|
||||
nop
|
||||
|
||||
lui a0, 0x1f80 // Формируем аргументы команды LoadImage
|
||||
ori a0, 0x03b0 // адрес хранения Rect
|
||||
jal 0x8004f994 //Вызов LoadImage
|
||||
move a1, v0 //Адрес данных символов
|
||||
jal 0x8004f6e8 //Тут же вызов DrawSync
|
||||
clear a0 //Обязательно обнуляем аргумент 0
|
||||
|
||||
j 0x800ca148 //Возврат в оригинальную процедуру
|
||||
nop
|
||||
@@ -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
|
||||
@@ -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
|
||||
BIN
SLPS_021.00
BIN
SLPS_021.00
Binary file not shown.
BIN
SLPS_021.00.bin
Normal file
BIN
SLPS_021.00.bin
Normal file
Binary file not shown.
103
SLPS_021.00.map
103
SLPS_021.00.map
@@ -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
245
ep_ai_main.asm
Normal 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:
|
||||
; ... (восстановление контекста и завершение)
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user