diff --git a/asm/1130.s b/asm/1130.s new file mode 100644 index 0000000..2ba95cf --- /dev/null +++ b/asm/1130.s @@ -0,0 +1,510 @@ +.include "macro.inc" + +/* assembler directives */ +.set noat /* allow manual use of $at */ +.set noreorder /* don't insert nops after branches */ +.set gp=64 /* allow use of 64-bit general purpose registers */ + +.section .text, "ax" + +/* Generated by spimdisasm 1.12.1 */ + +glabel nnScCreateScheduler +/* 1130 80000530 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 1134 80000534 AFB00018 */ sw $s0, 0x18($sp) +/* 1138 80000538 00808025 */ or $s0, $a0, $zero +/* 113C 8000053C AFBF001C */ sw $ra, 0x1C($sp) +/* 1140 80000540 AFA50034 */ sw $a1, 0x34($sp) +/* 1144 80000544 240E0001 */ addiu $t6, $zero, 0x1 +/* 1148 80000548 240F0001 */ addiu $t7, $zero, 0x1 +/* 114C 8000054C 24180003 */ addiu $t8, $zero, 0x3 +/* 1150 80000550 AE00066C */ sw $zero, 0x66C($s0) +/* 1154 80000554 AE000670 */ sw $zero, 0x670($s0) +/* 1158 80000558 AE000674 */ sw $zero, 0x674($s0) +/* 115C 8000055C AE000668 */ sw $zero, 0x668($s0) +/* 1160 80000560 AE0E0678 */ sw $t6, 0x678($s0) +/* 1164 80000564 A60F0000 */ sh $t7, 0x0($s0) +/* 1168 80000568 A6180002 */ sh $t8, 0x2($s0) +/* 116C 8000056C 26040074 */ addiu $a0, $s0, 0x74 +/* 1170 80000570 AFA4002C */ sw $a0, 0x2C($sp) +/* 1174 80000574 2605008C */ addiu $a1, $s0, 0x8C +/* 1178 80000578 0C00CFC4 */ jal osCreateMesgQueue +/* 117C 8000057C 24060008 */ addiu $a2, $zero, 0x8 +/* 1180 80000580 260400AC */ addiu $a0, $s0, 0xAC +/* 1184 80000584 AFA40028 */ sw $a0, 0x28($sp) +/* 1188 80000588 260500C4 */ addiu $a1, $s0, 0xC4 +/* 118C 8000058C 0C00CFC4 */ jal osCreateMesgQueue +/* 1190 80000590 24060008 */ addiu $a2, $zero, 0x8 +/* 1194 80000594 260400E4 */ addiu $a0, $s0, 0xE4 +/* 1198 80000598 AFA40024 */ sw $a0, 0x24($sp) +/* 119C 8000059C 260500FC */ addiu $a1, $s0, 0xFC +/* 11A0 800005A0 0C00CFC4 */ jal osCreateMesgQueue +/* 11A4 800005A4 24060008 */ addiu $a2, $zero, 0x8 +/* 11A8 800005A8 2604003C */ addiu $a0, $s0, 0x3C +/* 11AC 800005AC 26050054 */ addiu $a1, $s0, 0x54 +/* 11B0 800005B0 0C00CFC4 */ jal osCreateMesgQueue +/* 11B4 800005B4 24060008 */ addiu $a2, $zero, 0x8 +/* 11B8 800005B8 26040004 */ addiu $a0, $s0, 0x4 +/* 11BC 800005BC 2605001C */ addiu $a1, $s0, 0x1C +/* 11C0 800005C0 0C00CFC4 */ jal osCreateMesgQueue +/* 11C4 800005C4 24060008 */ addiu $a2, $zero, 0x8 +/* 11C8 800005C8 2604011C */ addiu $a0, $s0, 0x11C +/* 11CC 800005CC 26050134 */ addiu $a1, $s0, 0x134 +/* 11D0 800005D0 0C00CFC4 */ jal osCreateMesgQueue +/* 11D4 800005D4 24060008 */ addiu $a2, $zero, 0x8 +/* 11D8 800005D8 8FA4002C */ lw $a0, 0x2C($sp) +/* 11DC 800005DC 2405029A */ addiu $a1, $zero, 0x29A +/* 11E0 800005E0 0C00CFD0 */ jal osViSetEvent +/* 11E4 800005E4 93A60037 */ lbu $a2, 0x37($sp) +/* 11E8 800005E8 24040004 */ addiu $a0, $zero, 0x4 +/* 11EC 800005EC 8FA50028 */ lw $a1, 0x28($sp) +/* 11F0 800005F0 0C00CFEC */ jal osSetEventMesg +/* 11F4 800005F4 2406029B */ addiu $a2, $zero, 0x29B +/* 11F8 800005F8 24040009 */ addiu $a0, $zero, 0x9 +/* 11FC 800005FC 8FA50024 */ lw $a1, 0x24($sp) +/* 1200 80000600 0C00CFEC */ jal osSetEventMesg +/* 1204 80000604 2406029C */ addiu $a2, $zero, 0x29C +/* 1208 80000608 2404000E */ addiu $a0, $zero, 0xE +/* 120C 8000060C 8FA5002C */ lw $a1, 0x2C($sp) +/* 1210 80000610 0C00CFEC */ jal osSetEventMesg +/* 1214 80000614 2406029D */ addiu $a2, $zero, 0x29D +/* 1218 80000618 8FBF001C */ lw $ra, 0x1C($sp) +/* 121C 8000061C 8FB00018 */ lw $s0, 0x18($sp) +/* 1220 80000620 27BD0030 */ addiu $sp, $sp, 0x30 +/* 1224 80000624 03E00008 */ jr $ra +/* 1228 80000628 00000000 */ nop + +glabel nnScStartScheduler +/* 122C 8000062C 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 1230 80000630 AFB00020 */ sw $s0, 0x20($sp) +/* 1234 80000634 00808025 */ or $s0, $a0, $zero +/* 1238 80000638 AFBF0024 */ sw $ra, 0x24($sp) +/* 123C 8000063C 3C0E8008 */ lui $t6, %hi(D_800792D0) +/* 1240 80000640 25CE92D0 */ addiu $t6, $t6, %lo(D_800792D0) +/* 1244 80000644 26040158 */ addiu $a0, $s0, 0x158 +/* 1248 80000648 3C068000 */ lui $a2, %hi(nnScEventHandler) +/* 124C 8000064C 240F0078 */ addiu $t7, $zero, 0x78 +/* 1250 80000650 AFAF0014 */ sw $t7, 0x14($sp) +/* 1254 80000654 24C60710 */ addiu $a2, $a2, %lo(nnScEventHandler) +/* 1258 80000658 AFA4002C */ sw $a0, 0x2C($sp) +/* 125C 8000065C AFAE0010 */ sw $t6, 0x10($sp) +/* 1260 80000660 24050013 */ addiu $a1, $zero, 0x13 +/* 1264 80000664 0C00CEB8 */ jal osCreateThread +/* 1268 80000668 02003825 */ or $a3, $s0, $zero +/* 126C 8000066C 0C00CF0C */ jal osStartThread +/* 1270 80000670 8FA4002C */ lw $a0, 0x2C($sp) +/* 1274 80000674 3C188008 */ lui $t8, %hi(D_8007A2D0) +/* 1278 80000678 2718A2D0 */ addiu $t8, $t8, %lo(D_8007A2D0) +/* 127C 8000067C 26040308 */ addiu $a0, $s0, 0x308 +/* 1280 80000680 3C068000 */ lui $a2, %hi(nnScExecuteAudio) +/* 1284 80000684 2419006E */ addiu $t9, $zero, 0x6E +/* 1288 80000688 AFB90014 */ sw $t9, 0x14($sp) +/* 128C 8000068C 24C60900 */ addiu $a2, $a2, %lo(nnScExecuteAudio) +/* 1290 80000690 AFA4002C */ sw $a0, 0x2C($sp) +/* 1294 80000694 AFB80010 */ sw $t8, 0x10($sp) +/* 1298 80000698 24050012 */ addiu $a1, $zero, 0x12 +/* 129C 8000069C 0C00CEB8 */ jal osCreateThread +/* 12A0 800006A0 02003825 */ or $a3, $s0, $zero +/* 12A4 800006A4 0C00CF0C */ jal osStartThread +/* 12A8 800006A8 8FA4002C */ lw $a0, 0x2C($sp) +/* 12AC 800006AC 3C088008 */ lui $t0, %hi(D_8007B2D0) +/* 12B0 800006B0 2508B2D0 */ addiu $t0, $t0, %lo(D_8007B2D0) +/* 12B4 800006B4 260404B8 */ addiu $a0, $s0, 0x4B8 +/* 12B8 800006B8 3C068000 */ lui $a2, %hi(nnScExecuteGraphics) +/* 12BC 800006BC 24090064 */ addiu $t1, $zero, 0x64 +/* 12C0 800006C0 AFA90014 */ sw $t1, 0x14($sp) +/* 12C4 800006C4 24C60A80 */ addiu $a2, $a2, %lo(nnScExecuteGraphics) +/* 12C8 800006C8 AFA4002C */ sw $a0, 0x2C($sp) +/* 12CC 800006CC AFA80010 */ sw $t0, 0x10($sp) +/* 12D0 800006D0 24050011 */ addiu $a1, $zero, 0x11 +/* 12D4 800006D4 0C00CEB8 */ jal osCreateThread +/* 12D8 800006D8 02003825 */ or $a3, $s0, $zero +/* 12DC 800006DC 0C00CF0C */ jal osStartThread +/* 12E0 800006E0 8FA4002C */ lw $a0, 0x2C($sp) +/* 12E4 800006E4 8FBF0024 */ lw $ra, 0x24($sp) +/* 12E8 800006E8 8FB00020 */ lw $s0, 0x20($sp) +/* 12EC 800006EC 27BD0030 */ addiu $sp, $sp, 0x30 +/* 12F0 800006F0 03E00008 */ jr $ra +/* 12F4 800006F4 00000000 */ nop + +glabel nnScGetAudioMQ +/* 12F8 800006F8 24820004 */ addiu $v0, $a0, 0x4 +/* 12FC 800006FC 03E00008 */ jr $ra +/* 1300 80000700 00000000 */ nop + +glabel nnScGetGfxMQ +/* 1304 80000704 2482003C */ addiu $v0, $a0, 0x3C +/* 1308 80000708 03E00008 */ jr $ra +/* 130C 8000070C 00000000 */ nop + +glabel nnScEventHandler +/* 1310 80000710 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 1314 80000714 AFB00014 */ sw $s0, 0x14($sp) +/* 1318 80000718 00808025 */ or $s0, $a0, $zero +/* 131C 8000071C AFBF002C */ sw $ra, 0x2C($sp) +/* 1320 80000720 AFB50028 */ sw $s5, 0x28($sp) +/* 1324 80000724 AFB40024 */ sw $s4, 0x24($sp) +/* 1328 80000728 AFB30020 */ sw $s3, 0x20($sp) +/* 132C 8000072C AFB2001C */ sw $s2, 0x1C($sp) +/* 1330 80000730 AFB10018 */ sw $s1, 0x18($sp) +/* 1334 80000734 3C118008 */ lui $s1, %hi(D_8007B2D0) +/* 1338 80000738 AFA0003C */ sw $zero, 0x3C($sp) +/* 133C 8000073C 2631B2D0 */ addiu $s1, $s1, %lo(D_8007B2D0) +/* 1340 80000740 26150074 */ addiu $s5, $s0, 0x74 +/* 1344 80000744 2414029D */ addiu $s4, $zero, 0x29D +/* 1348 80000748 2413029A */ addiu $s3, $zero, 0x29A +/* 134C 8000074C 27B2003C */ addiu $s2, $sp, 0x3C +/* 1350 80000750 02A02025 */ or $a0, $s5, $zero +.L80000754: +/* 1354 80000754 02402825 */ or $a1, $s2, $zero +/* 1358 80000758 0C00D008 */ jal osRecvMesg +/* 135C 8000075C 24060001 */ addiu $a2, $zero, 0x1 +/* 1360 80000760 962E0000 */ lhu $t6, 0x0($s1) +/* 1364 80000764 8FB8003C */ lw $t8, 0x3C($sp) +/* 1368 80000768 02002025 */ or $a0, $s0, $zero +/* 136C 8000076C 25CF0001 */ addiu $t7, $t6, 0x1 +/* 1370 80000770 13130005 */ beq $t8, $s3, .L80000788 +/* 1374 80000774 A62F0000 */ sh $t7, 0x0($s1) +/* 1378 80000778 13140007 */ beq $t8, $s4, .L80000798 +/* 137C 8000077C 02002025 */ or $a0, $s0, $zero +/* 1380 80000780 1000FFF4 */ b .L80000754 +/* 1384 80000784 02A02025 */ or $a0, $s5, $zero +.L80000788: +/* 1388 80000788 0C00022C */ jal nnScEventBroadcast +/* 138C 8000078C 02002825 */ or $a1, $s0, $zero +/* 1390 80000790 1000FFF0 */ b .L80000754 +/* 1394 80000794 02A02025 */ or $a0, $s5, $zero +.L80000798: +/* 1398 80000798 0C00022C */ jal nnScEventBroadcast +/* 139C 8000079C 26050002 */ addiu $a1, $s0, 0x2 +/* 13A0 800007A0 1000FFEC */ b .L80000754 +/* 13A4 800007A4 02A02025 */ or $a0, $s5, $zero +/* 13A8 800007A8 00000000 */ nop +/* 13AC 800007AC 00000000 */ nop +/* 13B0 800007B0 8FBF002C */ lw $ra, 0x2C($sp) +/* 13B4 800007B4 8FB00014 */ lw $s0, 0x14($sp) +/* 13B8 800007B8 8FB10018 */ lw $s1, 0x18($sp) +/* 13BC 800007BC 8FB2001C */ lw $s2, 0x1C($sp) +/* 13C0 800007C0 8FB30020 */ lw $s3, 0x20($sp) +/* 13C4 800007C4 8FB40024 */ lw $s4, 0x24($sp) +/* 13C8 800007C8 8FB50028 */ lw $s5, 0x28($sp) +/* 13CC 800007CC 03E00008 */ jr $ra +/* 13D0 800007D0 27BD0040 */ addiu $sp, $sp, 0x40 + +glabel nnScAddClient +/* 13D4 800007D4 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 13D8 800007D8 AFBF0014 */ sw $ra, 0x14($sp) +/* 13DC 800007DC AFA40018 */ sw $a0, 0x18($sp) +/* 13E0 800007E0 AFA60020 */ sw $a2, 0x20($sp) +/* 13E4 800007E4 24040001 */ addiu $a0, $zero, 0x1 +/* 13E8 800007E8 0C00D058 */ jal osSetIntMask +/* 13EC 800007EC AFA5001C */ sw $a1, 0x1C($sp) +/* 13F0 800007F0 8FA5001C */ lw $a1, 0x1C($sp) +/* 13F4 800007F4 8FAE0020 */ lw $t6, 0x20($sp) +/* 13F8 800007F8 8FA30018 */ lw $v1, 0x18($sp) +/* 13FC 800007FC 00402025 */ or $a0, $v0, $zero +/* 1400 80000800 ACAE0004 */ sw $t6, 0x4($a1) +/* 1404 80000804 8C6F0668 */ lw $t7, 0x668($v1) +/* 1408 80000808 ACAF0000 */ sw $t7, 0x0($a1) +/* 140C 8000080C 0C00D058 */ jal osSetIntMask +/* 1410 80000810 AC650668 */ sw $a1, 0x668($v1) +/* 1414 80000814 8FBF0014 */ lw $ra, 0x14($sp) +/* 1418 80000818 27BD0018 */ addiu $sp, $sp, 0x18 +/* 141C 8000081C 03E00008 */ jr $ra +/* 1420 80000820 00000000 */ nop + +glabel nnScRemoveClient +/* 1424 80000824 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 1428 80000828 AFBF0014 */ sw $ra, 0x14($sp) +/* 142C 8000082C AFA40020 */ sw $a0, 0x20($sp) +/* 1430 80000830 8FAE0020 */ lw $t6, 0x20($sp) +/* 1434 80000834 24040001 */ addiu $a0, $zero, 0x1 +/* 1438 80000838 8DC30668 */ lw $v1, 0x668($t6) +/* 143C 8000083C AFA00018 */ sw $zero, 0x18($sp) +/* 1440 80000840 AFA50024 */ sw $a1, 0x24($sp) +/* 1444 80000844 0C00D058 */ jal osSetIntMask +/* 1448 80000848 AFA3001C */ sw $v1, 0x1C($sp) +/* 144C 8000084C 8FA3001C */ lw $v1, 0x1C($sp) +/* 1450 80000850 8FA50024 */ lw $a1, 0x24($sp) +/* 1454 80000854 8FA60018 */ lw $a2, 0x18($sp) +/* 1458 80000858 1060000F */ beqz $v1, .L80000898 +/* 145C 8000085C 00402025 */ or $a0, $v0, $zero +.L80000860: +/* 1460 80000860 5465000A */ bnel $v1, $a1, .L8000088C +/* 1464 80000864 00603025 */ or $a2, $v1, $zero +/* 1468 80000868 10C00004 */ beqz $a2, .L8000087C +/* 146C 8000086C 8FB90020 */ lw $t9, 0x20($sp) +/* 1470 80000870 8CAF0000 */ lw $t7, 0x0($a1) +/* 1474 80000874 10000008 */ b .L80000898 +/* 1478 80000878 ACCF0000 */ sw $t7, 0x0($a2) +.L8000087C: +/* 147C 8000087C 8CB80000 */ lw $t8, 0x0($a1) +/* 1480 80000880 10000005 */ b .L80000898 +/* 1484 80000884 AF380668 */ sw $t8, 0x668($t9) +/* 1488 80000888 00603025 */ or $a2, $v1, $zero +.L8000088C: +/* 148C 8000088C 8C630000 */ lw $v1, 0x0($v1) +/* 1490 80000890 1460FFF3 */ bnez $v1, .L80000860 +/* 1494 80000894 00000000 */ nop +.L80000898: +/* 1498 80000898 0C00D058 */ jal osSetIntMask +/* 149C 8000089C 00000000 */ nop +/* 14A0 800008A0 8FBF0014 */ lw $ra, 0x14($sp) +/* 14A4 800008A4 27BD0020 */ addiu $sp, $sp, 0x20 +/* 14A8 800008A8 03E00008 */ jr $ra +/* 14AC 800008AC 00000000 */ nop + +glabel nnScEventBroadcast +/* 14B0 800008B0 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 14B4 800008B4 AFB10018 */ sw $s1, 0x18($sp) +/* 14B8 800008B8 00A08825 */ or $s1, $a1, $zero +/* 14BC 800008BC AFBF001C */ sw $ra, 0x1C($sp) +/* 14C0 800008C0 AFB00014 */ sw $s0, 0x14($sp) +/* 14C4 800008C4 8C900668 */ lw $s0, 0x668($a0) +/* 14C8 800008C8 52000009 */ beql $s0, $zero, .L800008F0 +/* 14CC 800008CC 8FBF001C */ lw $ra, 0x1C($sp) +/* 14D0 800008D0 8E040004 */ lw $a0, 0x4($s0) +.L800008D4: +/* 14D4 800008D4 02202825 */ or $a1, $s1, $zero +/* 14D8 800008D8 0C00D080 */ jal osSendMesg +/* 14DC 800008DC 00003025 */ or $a2, $zero, $zero +/* 14E0 800008E0 8E100000 */ lw $s0, 0x0($s0) +/* 14E4 800008E4 5600FFFB */ bnel $s0, $zero, .L800008D4 +/* 14E8 800008E8 8E040004 */ lw $a0, 0x4($s0) +/* 14EC 800008EC 8FBF001C */ lw $ra, 0x1C($sp) +.L800008F0: +/* 14F0 800008F0 8FB00014 */ lw $s0, 0x14($sp) +/* 14F4 800008F4 8FB10018 */ lw $s1, 0x18($sp) +/* 14F8 800008F8 03E00008 */ jr $ra +/* 14FC 800008FC 27BD0020 */ addiu $sp, $sp, 0x20 + +glabel nnScExecuteAudio +/* 1500 80000900 27BDFFA8 */ addiu $sp, $sp, -0x58 +/* 1504 80000904 AFB20020 */ sw $s2, 0x20($sp) +/* 1508 80000908 00809025 */ or $s2, $a0, $zero +/* 150C 8000090C AFBF003C */ sw $ra, 0x3C($sp) +/* 1510 80000910 AFBE0038 */ sw $fp, 0x38($sp) +/* 1514 80000914 AFB70034 */ sw $s7, 0x34($sp) +/* 1518 80000918 AFB60030 */ sw $s6, 0x30($sp) +/* 151C 8000091C AFB5002C */ sw $s5, 0x2C($sp) +/* 1520 80000920 AFB40028 */ sw $s4, 0x28($sp) +/* 1524 80000924 AFB30024 */ sw $s3, 0x24($sp) +/* 1528 80000928 AFB1001C */ sw $s1, 0x1C($sp) +/* 152C 8000092C AFB00018 */ sw $s0, 0x18($sp) +/* 1530 80000930 AFA00054 */ sw $zero, 0x54($sp) +/* 1534 80000934 AFA00050 */ sw $zero, 0x50($sp) +/* 1538 80000938 26550004 */ addiu $s5, $s2, 0x4 +/* 153C 8000093C 00008825 */ or $s1, $zero, $zero +/* 1540 80000940 241E0002 */ addiu $fp, $zero, 0x2 +/* 1544 80000944 24170001 */ addiu $s7, $zero, 0x1 +/* 1548 80000948 27B60050 */ addiu $s6, $sp, 0x50 +/* 154C 8000094C 27B40054 */ addiu $s4, $sp, 0x54 +/* 1550 80000950 02A02025 */ or $a0, $s5, $zero +.L80000954: +/* 1554 80000954 02C02825 */ or $a1, $s6, $zero +/* 1558 80000958 0C00D008 */ jal osRecvMesg +/* 155C 8000095C 24060001 */ addiu $a2, $zero, 0x1 +/* 1560 80000960 0C00D0D4 */ jal osWritebackDCacheAll +/* 1564 80000964 00000000 */ nop +/* 1568 80000968 8E53066C */ lw $s3, 0x66C($s2) +/* 156C 8000096C 5260000E */ beql $s3, $zero, .L800009A8 +/* 1570 80000970 8FAE0050 */ lw $t6, 0x50($sp) +/* 1574 80000974 0C00D0E0 */ jal osSpTaskYield +/* 1578 80000978 265000AC */ addiu $s0, $s2, 0xAC +/* 157C 8000097C 02002025 */ or $a0, $s0, $zero +/* 1580 80000980 02802825 */ or $a1, $s4, $zero +/* 1584 80000984 0C00D008 */ jal osRecvMesg +/* 1588 80000988 24060001 */ addiu $a2, $zero, 0x1 +/* 158C 8000098C 0C00D0E8 */ jal osSpTaskYielded +/* 1590 80000990 26640010 */ addiu $a0, $s3, 0x10 +/* 1594 80000994 10400003 */ beqz $v0, .L800009A4 +/* 1598 80000998 03C08825 */ or $s1, $fp, $zero +/* 159C 8000099C 10000001 */ b .L800009A4 +/* 15A0 800009A0 02E08825 */ or $s1, $s7, $zero +.L800009A4: +/* 15A4 800009A4 8FAE0050 */ lw $t6, 0x50($sp) +.L800009A8: +/* 15A8 800009A8 265000AC */ addiu $s0, $s2, 0xAC +/* 15AC 800009AC AE4E0670 */ sw $t6, 0x670($s2) +/* 15B0 800009B0 8FA40050 */ lw $a0, 0x50($sp) +/* 15B4 800009B4 0C00D14B */ jal osSpTaskLoad +/* 15B8 800009B8 24840010 */ addiu $a0, $a0, 0x10 +/* 15BC 800009BC 8FA40050 */ lw $a0, 0x50($sp) +/* 15C0 800009C0 0C00D1A5 */ jal osSpTaskStartGo +/* 15C4 800009C4 24840010 */ addiu $a0, $a0, 0x10 +/* 15C8 800009C8 02002025 */ or $a0, $s0, $zero +/* 15CC 800009CC 02802825 */ or $a1, $s4, $zero +/* 15D0 800009D0 0C00D008 */ jal osRecvMesg +/* 15D4 800009D4 24060001 */ addiu $a2, $zero, 0x1 +/* 15D8 800009D8 8E4F0674 */ lw $t7, 0x674($s2) +/* 15DC 800009DC AE400670 */ sw $zero, 0x670($s2) +/* 15E0 800009E0 2644011C */ addiu $a0, $s2, 0x11C +/* 15E4 800009E4 11E00003 */ beqz $t7, .L800009F4 +/* 15E8 800009E8 02802825 */ or $a1, $s4, $zero +/* 15EC 800009EC 0C00D080 */ jal osSendMesg +/* 15F0 800009F0 24060001 */ addiu $a2, $zero, 0x1 +.L800009F4: +/* 15F4 800009F4 16370008 */ bne $s1, $s7, .L80000A18 +/* 15F8 800009F8 00000000 */ nop +/* 15FC 800009FC 26700010 */ addiu $s0, $s3, 0x10 +/* 1600 80000A00 0C00D14B */ jal osSpTaskLoad +/* 1604 80000A04 02002025 */ or $a0, $s0, $zero +/* 1608 80000A08 0C00D1A5 */ jal osSpTaskStartGo +/* 160C 80000A0C 02002025 */ or $a0, $s0, $zero +/* 1610 80000A10 10000007 */ b .L80000A30 +/* 1614 80000A14 8FB80050 */ lw $t8, 0x50($sp) +.L80000A18: +/* 1618 80000A18 163E0004 */ bne $s1, $fp, .L80000A2C +/* 161C 80000A1C 02002025 */ or $a0, $s0, $zero +/* 1620 80000A20 02802825 */ or $a1, $s4, $zero +/* 1624 80000A24 0C00D080 */ jal osSendMesg +/* 1628 80000A28 24060001 */ addiu $a2, $zero, 0x1 +.L80000A2C: +/* 162C 80000A2C 8FB80050 */ lw $t8, 0x50($sp) +.L80000A30: +/* 1630 80000A30 24060001 */ addiu $a2, $zero, 0x1 +/* 1634 80000A34 00008825 */ or $s1, $zero, $zero +/* 1638 80000A38 8F040050 */ lw $a0, 0x50($t8) +/* 163C 80000A3C 0C00D080 */ jal osSendMesg +/* 1640 80000A40 8F050054 */ lw $a1, 0x54($t8) +/* 1644 80000A44 1000FFC3 */ b .L80000954 +/* 1648 80000A48 02A02025 */ or $a0, $s5, $zero +/* 164C 80000A4C 00000000 */ nop +/* 1650 80000A50 8FBF003C */ lw $ra, 0x3C($sp) +/* 1654 80000A54 8FB00018 */ lw $s0, 0x18($sp) +/* 1658 80000A58 8FB1001C */ lw $s1, 0x1C($sp) +/* 165C 80000A5C 8FB20020 */ lw $s2, 0x20($sp) +/* 1660 80000A60 8FB30024 */ lw $s3, 0x24($sp) +/* 1664 80000A64 8FB40028 */ lw $s4, 0x28($sp) +/* 1668 80000A68 8FB5002C */ lw $s5, 0x2C($sp) +/* 166C 80000A6C 8FB60030 */ lw $s6, 0x30($sp) +/* 1670 80000A70 8FB70034 */ lw $s7, 0x34($sp) +/* 1674 80000A74 8FBE0038 */ lw $fp, 0x38($sp) +/* 1678 80000A78 03E00008 */ jr $ra +/* 167C 80000A7C 27BD0058 */ addiu $sp, $sp, 0x58 + +glabel nnScExecuteGraphics +/* 1680 80000A80 27BDFFB8 */ addiu $sp, $sp, -0x48 +/* 1684 80000A84 AFB00014 */ sw $s0, 0x14($sp) +/* 1688 80000A88 00808025 */ or $s0, $a0, $zero +/* 168C 80000A8C AFBF002C */ sw $ra, 0x2C($sp) +/* 1690 80000A90 AFB50028 */ sw $s5, 0x28($sp) +/* 1694 80000A94 AFB40024 */ sw $s4, 0x24($sp) +/* 1698 80000A98 AFB30020 */ sw $s3, 0x20($sp) +/* 169C 80000A9C AFB2001C */ sw $s2, 0x1C($sp) +/* 16A0 80000AA0 AFB10018 */ sw $s1, 0x18($sp) +/* 16A4 80000AA4 AFA00044 */ sw $zero, 0x44($sp) +/* 16A8 80000AA8 2615003C */ addiu $s5, $s0, 0x3C +/* 16AC 80000AAC 27B40040 */ addiu $s4, $sp, 0x40 +/* 16B0 80000AB0 27B30044 */ addiu $s3, $sp, 0x44 +/* 16B4 80000AB4 02A02025 */ or $a0, $s5, $zero +.L80000AB8: +/* 16B8 80000AB8 02802825 */ or $a1, $s4, $zero +/* 16BC 80000ABC 0C00D008 */ jal osRecvMesg +/* 16C0 80000AC0 24060001 */ addiu $a2, $zero, 0x1 +/* 16C4 80000AC4 02002025 */ or $a0, $s0, $zero +/* 16C8 80000AC8 0C0002ED */ jal nnScWaitTaskReady +/* 16CC 80000ACC 8FA50040 */ lw $a1, 0x40($sp) +/* 16D0 80000AD0 8E0E0670 */ lw $t6, 0x670($s0) +/* 16D4 80000AD4 8FAF0040 */ lw $t7, 0x40($sp) +/* 16D8 80000AD8 2604011C */ addiu $a0, $s0, 0x11C +/* 16DC 80000ADC 11C00005 */ beqz $t6, .L80000AF4 +/* 16E0 80000AE0 02602825 */ or $a1, $s3, $zero +/* 16E4 80000AE4 AE0F0674 */ sw $t7, 0x674($s0) +/* 16E8 80000AE8 0C00D008 */ jal osRecvMesg +/* 16EC 80000AEC 24060001 */ addiu $a2, $zero, 0x1 +/* 16F0 80000AF0 AE000674 */ sw $zero, 0x674($s0) +.L80000AF4: +/* 16F4 80000AF4 8FB80040 */ lw $t8, 0x40($sp) +/* 16F8 80000AF8 261100AC */ addiu $s1, $s0, 0xAC +/* 16FC 80000AFC 261200E4 */ addiu $s2, $s0, 0xE4 +/* 1700 80000B00 AE18066C */ sw $t8, 0x66C($s0) +/* 1704 80000B04 8FA40040 */ lw $a0, 0x40($sp) +/* 1708 80000B08 0C00D14B */ jal osSpTaskLoad +/* 170C 80000B0C 24840010 */ addiu $a0, $a0, 0x10 +/* 1710 80000B10 8FA40040 */ lw $a0, 0x40($sp) +/* 1714 80000B14 0C00D1A5 */ jal osSpTaskStartGo +/* 1718 80000B18 24840010 */ addiu $a0, $a0, 0x10 +/* 171C 80000B1C 02202025 */ or $a0, $s1, $zero +/* 1720 80000B20 02602825 */ or $a1, $s3, $zero +/* 1724 80000B24 0C00D008 */ jal osRecvMesg +/* 1728 80000B28 24060001 */ addiu $a2, $zero, 0x1 +/* 172C 80000B2C AE00066C */ sw $zero, 0x66C($s0) +/* 1730 80000B30 02402025 */ or $a0, $s2, $zero +/* 1734 80000B34 02602825 */ or $a1, $s3, $zero +/* 1738 80000B38 0C00D008 */ jal osRecvMesg +/* 173C 80000B3C 24060001 */ addiu $a2, $zero, 0x1 +/* 1740 80000B40 8E190678 */ lw $t9, 0x678($s0) +/* 1744 80000B44 53200005 */ beql $t9, $zero, .L80000B5C +/* 1748 80000B48 8FA80040 */ lw $t0, 0x40($sp) +/* 174C 80000B4C 0C00D1B8 */ jal osViBlack +/* 1750 80000B50 00002025 */ or $a0, $zero, $zero +/* 1754 80000B54 AE000678 */ sw $zero, 0x678($s0) +/* 1758 80000B58 8FA80040 */ lw $t0, 0x40($sp) +.L80000B5C: +/* 175C 80000B5C 8D090008 */ lw $t1, 0x8($t0) +/* 1760 80000B60 312A0040 */ andi $t2, $t1, 0x40 +/* 1764 80000B64 51400004 */ beql $t2, $zero, .L80000B78 +/* 1768 80000B68 8FAB0040 */ lw $t3, 0x40($sp) +/* 176C 80000B6C 0C00D1D4 */ jal osViSwapBuffer +/* 1770 80000B70 8D04000C */ lw $a0, 0xC($t0) +/* 1774 80000B74 8FAB0040 */ lw $t3, 0x40($sp) +.L80000B78: +/* 1778 80000B78 24060001 */ addiu $a2, $zero, 0x1 +/* 177C 80000B7C 8D640050 */ lw $a0, 0x50($t3) +/* 1780 80000B80 0C00D080 */ jal osSendMesg +/* 1784 80000B84 8D650054 */ lw $a1, 0x54($t3) +/* 1788 80000B88 1000FFCB */ b .L80000AB8 +/* 178C 80000B8C 02A02025 */ or $a0, $s5, $zero +/* 1790 80000B90 8FBF002C */ lw $ra, 0x2C($sp) +/* 1794 80000B94 8FB00014 */ lw $s0, 0x14($sp) +/* 1798 80000B98 8FB10018 */ lw $s1, 0x18($sp) +/* 179C 80000B9C 8FB2001C */ lw $s2, 0x1C($sp) +/* 17A0 80000BA0 8FB30020 */ lw $s3, 0x20($sp) +/* 17A4 80000BA4 8FB40024 */ lw $s4, 0x24($sp) +/* 17A8 80000BA8 8FB50028 */ lw $s5, 0x28($sp) +/* 17AC 80000BAC 03E00008 */ jr $ra +/* 17B0 80000BB0 27BD0048 */ addiu $sp, $sp, 0x48 + +glabel nnScWaitTaskReady +/* 17B4 80000BB4 27BDFFB8 */ addiu $sp, $sp, -0x48 +/* 17B8 80000BB8 AFB1001C */ sw $s1, 0x1C($sp) +/* 17BC 80000BBC 00808825 */ or $s1, $a0, $zero +/* 17C0 80000BC0 AFBF002C */ sw $ra, 0x2C($sp) +/* 17C4 80000BC4 AFB40028 */ sw $s4, 0x28($sp) +/* 17C8 80000BC8 AFB30024 */ sw $s3, 0x24($sp) +/* 17CC 80000BCC AFB20020 */ sw $s2, 0x20($sp) +/* 17D0 80000BD0 AFB00018 */ sw $s0, 0x18($sp) +/* 17D4 80000BD4 AFA00044 */ sw $zero, 0x44($sp) +/* 17D8 80000BD8 0C00D1E8 */ jal osViGetCurrentFramebuffer +/* 17DC 80000BDC 8CB4000C */ lw $s4, 0xC($a1) +/* 17E0 80000BE0 14540012 */ bne $v0, $s4, .L80000C2C +/* 17E4 80000BE4 2632011C */ addiu $s2, $s1, 0x11C +/* 17E8 80000BE8 27B30044 */ addiu $s3, $sp, 0x44 +/* 17EC 80000BEC 27B0003C */ addiu $s0, $sp, 0x3C +/* 17F0 80000BF0 02202025 */ or $a0, $s1, $zero +.L80000BF4: +/* 17F4 80000BF4 02002825 */ or $a1, $s0, $zero +/* 17F8 80000BF8 0C0001F5 */ jal nnScAddClient +/* 17FC 80000BFC 02403025 */ or $a2, $s2, $zero +/* 1800 80000C00 02402025 */ or $a0, $s2, $zero +/* 1804 80000C04 02602825 */ or $a1, $s3, $zero +/* 1808 80000C08 0C00D008 */ jal osRecvMesg +/* 180C 80000C0C 24060001 */ addiu $a2, $zero, 0x1 +/* 1810 80000C10 02202025 */ or $a0, $s1, $zero +/* 1814 80000C14 0C000209 */ jal nnScRemoveClient +/* 1818 80000C18 02002825 */ or $a1, $s0, $zero +/* 181C 80000C1C 0C00D1E8 */ jal osViGetCurrentFramebuffer +/* 1820 80000C20 00000000 */ nop +/* 1824 80000C24 5054FFF3 */ beql $v0, $s4, .L80000BF4 +/* 1828 80000C28 02202025 */ or $a0, $s1, $zero +.L80000C2C: +/* 182C 80000C2C 8FBF002C */ lw $ra, 0x2C($sp) +/* 1830 80000C30 8FB00018 */ lw $s0, 0x18($sp) +/* 1834 80000C34 8FB1001C */ lw $s1, 0x1C($sp) +/* 1838 80000C38 8FB20020 */ lw $s2, 0x20($sp) +/* 183C 80000C3C 8FB30024 */ lw $s3, 0x24($sp) +/* 1840 80000C40 8FB40028 */ lw $s4, 0x28($sp) +/* 1844 80000C44 03E00008 */ jr $ra +/* 1848 80000C48 27BD0048 */ addiu $sp, $sp, 0x48 +/* 184C 80000C4C 00000000 */ nop diff --git a/asm/1EDF0.s b/asm/1EDF0.s new file mode 100644 index 0000000..ed87899 --- /dev/null +++ b/asm/1EDF0.s @@ -0,0 +1,3228 @@ +.include "macro.inc" + +/* assembler directives */ +.set noat /* allow manual use of $at */ +.set noreorder /* don't insert nops after branches */ +.set gp=64 /* allow use of 64-bit general purpose registers */ + +.section .text, "ax" + +/* Generated by spimdisasm 1.11.1 */ + +glabel func_8001E1F0 +/* 1EDF0 8001E1F0 3C028009 */ lui $v0, %hi(gHUDResolutionY) +/* 1EDF4 8001E1F4 3C038009 */ lui $v1, %hi(D_8008C654) +/* 1EDF8 8001E1F8 2463C654 */ addiu $v1, $v1, %lo(D_8008C654) +/* 1EDFC 8001E1FC 2442C64C */ addiu $v0, $v0, %lo(gHUDResolutionY) +/* 1EE00 8001E200 3C018009 */ lui $at, %hi(D_8008C638) +/* 1EE04 8001E204 AC20C638 */ sw $zero, %lo(D_8008C638)($at) +/* 1EE08 8001E208 3C018009 */ lui $at, %hi(D_8008C63C) +/* 1EE0C 8001E20C AC20C63C */ sw $zero, %lo(D_8008C63C)($at) +/* 1EE10 8001E210 3C018009 */ lui $at, %hi(D_8008C640) +/* 1EE14 8001E214 240EFFFF */ addiu $t6, $zero, -0x1 +/* 1EE18 8001E218 AC2EC640 */ sw $t6, %lo(D_8008C640)($at) +/* 1EE1C 8001E21C AC400000 */ sw $zero, 0x0($v0) +/* 1EE20 8001E220 3C018009 */ lui $at, %hi(gHUDResolutionX) +/* 1EE24 8001E224 AC20C648 */ sw $zero, %lo(gHUDResolutionX)($at) +/* 1EE28 8001E228 AC600000 */ sw $zero, 0x0($v1) +/* 1EE2C 8001E22C 3C018009 */ lui $at, %hi(D_8008C650) +/* 1EE30 8001E230 AC20C650 */ sw $zero, %lo(D_8008C650)($at) +/* 1EE34 8001E234 3C018009 */ lui $at, %hi(D_8008C658) +/* 1EE38 8001E238 24190140 */ addiu $t9, $zero, 0x140 +/* 1EE3C 8001E23C AC39C658 */ sw $t9, %lo(D_8008C658)($at) +/* 1EE40 8001E240 3C018009 */ lui $at, %hi(D_8008C65C) +/* 1EE44 8001E244 240800F0 */ addiu $t0, $zero, 0xF0 +/* 1EE48 8001E248 AC28C65C */ sw $t0, %lo(D_8008C65C)($at) +/* 1EE4C 8001E24C 3C018009 */ lui $at, %hi(D_8008C630) +/* 1EE50 8001E250 A420C630 */ sh $zero, %lo(D_8008C630)($at) +/* 1EE54 8001E254 03E00008 */ jr $ra +/* 1EE58 8001E258 00000000 */ nop + +glabel func_8001E25C +/* 1EE5C 8001E25C 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 1EE60 8001E260 3C088008 */ lui $t0, %hi(gMasterGfxPos) +/* 1EE64 8001E264 3C098008 */ lui $t1, %hi(D_8007B2F8) +/* 1EE68 8001E268 44800000 */ mtc1 $zero, $f0 +/* 1EE6C 8001E26C 2529B2F8 */ addiu $t1, $t1, %lo(D_8007B2F8) +/* 1EE70 8001E270 2508B2FC */ addiu $t0, $t0, %lo(gMasterGfxPos) +/* 1EE74 8001E274 AFBF0014 */ sw $ra, 0x14($sp) +/* 1EE78 8001E278 AFA40028 */ sw $a0, 0x28($sp) +/* 1EE7C 8001E27C 8D020000 */ lw $v0, 0x0($t0) +/* 1EE80 8001E280 3C0F0103 */ lui $t7, (0x1030040 >> 16) +/* 1EE84 8001E284 3C180200 */ lui $t8, %hi(D_2000040) +/* 1EE88 8001E288 244E0008 */ addiu $t6, $v0, 0x8 +/* 1EE8C 8001E28C AD0E0000 */ sw $t6, 0x0($t0) +/* 1EE90 8001E290 27180040 */ addiu $t8, $t8, %lo(D_2000040) +/* 1EE94 8001E294 35EF0040 */ ori $t7, $t7, (0x1030040 & 0xFFFF) +/* 1EE98 8001E298 AC4F0000 */ sw $t7, 0x0($v0) +/* 1EE9C 8001E29C AC580004 */ sw $t8, 0x4($v0) +/* 1EEA0 8001E2A0 8D2A0000 */ lw $t2, 0x0($t1) +/* 1EEA4 8001E2A4 8FB90028 */ lw $t9, 0x28($sp) +/* 1EEA8 8001E2A8 44070000 */ mfc1 $a3, $f0 +/* 1EEAC 8001E2AC 000A5980 */ sll $t3, $t2, 6 +/* 1EEB0 8001E2B0 032B2021 */ addu $a0, $t9, $t3 +/* 1EEB4 8001E2B4 248400C0 */ addiu $a0, $a0, 0xC0 +/* 1EEB8 8001E2B8 3C05C320 */ lui $a1, (0xC3200000 >> 16) +/* 1EEBC 8001E2BC 0C00D866 */ jal guTranslate +/* 1EEC0 8001E2C0 3C06C2F0 */ lui $a2, (0xC2F00000 >> 16) +/* 1EEC4 8001E2C4 3C068005 */ lui $a2, %hi(D_8004D2B4) +/* 1EEC8 8001E2C8 3C088008 */ lui $t0, %hi(gMasterGfxPos) +/* 1EECC 8001E2CC 3C098008 */ lui $t1, %hi(D_8007B2F8) +/* 1EED0 8001E2D0 44800000 */ mtc1 $zero, $f0 +/* 1EED4 8001E2D4 2529B2F8 */ addiu $t1, $t1, %lo(D_8007B2F8) +/* 1EED8 8001E2D8 2508B2FC */ addiu $t0, $t0, %lo(gMasterGfxPos) +/* 1EEDC 8001E2DC 24C6D2B4 */ addiu $a2, $a2, %lo(D_8004D2B4) +/* 1EEE0 8001E2E0 8D020000 */ lw $v0, 0x0($t0) +/* 1EEE4 8001E2E4 3C0D0101 */ lui $t5, (0x1010040 >> 16) +/* 1EEE8 8001E2E8 35AD0040 */ ori $t5, $t5, (0x1010040 & 0xFFFF) +/* 1EEEC 8001E2EC 244C0008 */ addiu $t4, $v0, 0x8 +/* 1EEF0 8001E2F0 AD0C0000 */ sw $t4, 0x0($t0) +/* 1EEF4 8001E2F4 AC4D0000 */ sw $t5, 0x0($v0) +/* 1EEF8 8001E2F8 8D2E0000 */ lw $t6, 0x0($t1) +/* 1EEFC 8001E2FC 3C0A0200 */ lui $t2, %hi(D_2000000) +/* 1EF00 8001E300 254A0000 */ addiu $t2, $t2, %lo(D_2000000) +/* 1EF04 8001E304 000E7980 */ sll $t7, $t6, 6 +/* 1EF08 8001E308 25F800C0 */ addiu $t8, $t7, 0xC0 +/* 1EF0C 8001E30C 030AC821 */ addu $t9, $t8, $t2 +/* 1EF10 8001E310 AC590004 */ sw $t9, 0x4($v0) +/* 1EF14 8001E314 8D2B0000 */ lw $t3, 0x0($t1) +/* 1EF18 8001E318 3C0E0600 */ lui $t6, (0x6000000 >> 16) +/* 1EF1C 8001E31C 3C048005 */ lui $a0, %hi(D_8004D2BC) +/* 1EF20 8001E320 256C0001 */ addiu $t4, $t3, 0x1 +/* 1EF24 8001E324 AD2C0000 */ sw $t4, 0x0($t1) +/* 1EF28 8001E328 8D020000 */ lw $v0, 0x0($t0) +/* 1EF2C 8001E32C 3C0F803A */ lui $t7, %hi(D_803A6FC0) +/* 1EF30 8001E330 25EF6FC0 */ addiu $t7, $t7, %lo(D_803A6FC0) +/* 1EF34 8001E334 244D0008 */ addiu $t5, $v0, 0x8 +/* 1EF38 8001E338 AD0D0000 */ sw $t5, 0x0($t0) +/* 1EF3C 8001E33C AC4F0004 */ sw $t7, 0x4($v0) +/* 1EF40 8001E340 AC4E0000 */ sw $t6, 0x0($v0) +/* 1EF44 8001E344 90C50000 */ lbu $a1, 0x0($a2) +/* 1EF48 8001E348 2484D2BC */ addiu $a0, $a0, %lo(D_8004D2BC) +/* 1EF4C 8001E34C 2407000F */ addiu $a3, $zero, 0xF +/* 1EF50 8001E350 10A0002E */ beqz $a1, .L8001E40C +/* 1EF54 8001E354 00000000 */ nop +/* 1EF58 8001E358 8C830000 */ lw $v1, 0x0($a0) +/* 1EF5C 8001E35C 10600003 */ beqz $v1, .L8001E36C +/* 1EF60 8001E360 2478FFFF */ addiu $t8, $v1, -0x1 +/* 1EF64 8001E364 AC980000 */ sw $t8, 0x0($a0) +/* 1EF68 8001E368 03001825 */ or $v1, $t8, $zero +.L8001E36C: +/* 1EF6C 8001E36C 00E31023 */ subu $v0, $a3, $v1 +/* 1EF70 8001E370 00420019 */ multu $v0, $v0 +/* 1EF74 8001E374 3C088009 */ lui $t0, %hi(D_8008C660) +/* 1EF78 8001E378 2508C660 */ addiu $t0, $t0, %lo(D_8008C660) +/* 1EF7C 8001E37C 3C198008 */ lui $t9, %hi(D_8007B2E4) +/* 1EF80 8001E380 3C018009 */ lui $at, %hi(D_8008C664) +/* 1EF84 8001E384 00001012 */ mflo $v0 +/* 1EF88 8001E388 00025043 */ sra $t2, $v0, 1 +/* 1EF8C 8001E38C AD0A0000 */ sw $t2, 0x0($t0) +/* 1EF90 8001E390 8F39B2E4 */ lw $t9, %lo(D_8007B2E4)($t9) +/* 1EF94 8001E394 AC22C664 */ sw $v0, %lo(D_8008C664)($at) +/* 1EF98 8001E398 3C018008 */ lui $at, %hi(D_8007BAE4) +/* 1EF9C 8001E39C 332B0480 */ andi $t3, $t9, 0x480 +/* 1EFA0 8001E3A0 5560004E */ bnel $t3, $zero, .L8001E4DC +/* 1EFA4 8001E3A4 8D0A0000 */ lw $t2, 0x0($t0) +/* 1EFA8 8001E3A8 C424BAE4 */ lwc1 $f4, %lo(D_8007BAE4)($at) +/* 1EFAC 8001E3AC 3C028005 */ lui $v0, %hi(D_8004D2B8) +/* 1EFB0 8001E3B0 3C018008 */ lui $at, %hi(D_8007BAEC) +/* 1EFB4 8001E3B4 46040032 */ c.eq.s $f0, $f4 +/* 1EFB8 8001E3B8 2442D2B8 */ addiu $v0, $v0, %lo(D_8004D2B8) +/* 1EFBC 8001E3BC 45000011 */ bc1f .L8001E404 +/* 1EFC0 8001E3C0 00000000 */ nop +/* 1EFC4 8001E3C4 C426BAEC */ lwc1 $f6, %lo(D_8007BAEC)($at) +/* 1EFC8 8001E3C8 46060032 */ c.eq.s $f0, $f6 +/* 1EFCC 8001E3CC 00000000 */ nop +/* 1EFD0 8001E3D0 4500000C */ bc1f .L8001E404 +/* 1EFD4 8001E3D4 00000000 */ nop +/* 1EFD8 8001E3D8 3C028005 */ lui $v0, %hi(D_8004D2B8) +/* 1EFDC 8001E3DC 2442D2B8 */ addiu $v0, $v0, %lo(D_8004D2B8) +/* 1EFE0 8001E3E0 8C4C0000 */ lw $t4, 0x0($v0) +/* 1EFE4 8001E3E4 258D0001 */ addiu $t5, $t4, 0x1 +/* 1EFE8 8001E3E8 29A1001F */ slti $at, $t5, 0x1F +/* 1EFEC 8001E3EC 1420003A */ bnez $at, .L8001E4D8 +/* 1EFF0 8001E3F0 AC4D0000 */ sw $t5, 0x0($v0) +/* 1EFF4 8001E3F4 AC870000 */ sw $a3, 0x0($a0) +/* 1EFF8 8001E3F8 A0C00000 */ sb $zero, 0x0($a2) +/* 1EFFC 8001E3FC 10000036 */ b .L8001E4D8 +/* 1F000 8001E400 AC400000 */ sw $zero, 0x0($v0) +.L8001E404: +/* 1F004 8001E404 10000034 */ b .L8001E4D8 +/* 1F008 8001E408 AC400000 */ sw $zero, 0x0($v0) +.L8001E40C: +/* 1F00C 8001E40C 3C048005 */ lui $a0, %hi(D_8004D2BC) +/* 1F010 8001E410 2484D2BC */ addiu $a0, $a0, %lo(D_8004D2BC) +/* 1F014 8001E414 8C830000 */ lw $v1, 0x0($a0) +/* 1F018 8001E418 10600003 */ beqz $v1, .L8001E428 +/* 1F01C 8001E41C 246FFFFF */ addiu $t7, $v1, -0x1 +/* 1F020 8001E420 AC8F0000 */ sw $t7, 0x0($a0) +/* 1F024 8001E424 01E01825 */ or $v1, $t7, $zero +.L8001E428: +/* 1F028 8001E428 00630019 */ multu $v1, $v1 +/* 1F02C 8001E42C 3C088009 */ lui $t0, %hi(D_8008C660) +/* 1F030 8001E430 2508C660 */ addiu $t0, $t0, %lo(D_8008C660) +/* 1F034 8001E434 3C0A8009 */ lui $t2, %hi(D_8008C592) +/* 1F038 8001E438 3C018009 */ lui $at, %hi(D_8008C664) +/* 1F03C 8001E43C 00001012 */ mflo $v0 +/* 1F040 8001E440 0002C043 */ sra $t8, $v0, 1 +/* 1F044 8001E444 AD180000 */ sw $t8, 0x0($t0) +/* 1F048 8001E448 954AC592 */ lhu $t2, %lo(D_8008C592)($t2) +/* 1F04C 8001E44C AC22C664 */ sw $v0, %lo(D_8008C664)($at) +/* 1F050 8001E450 31590001 */ andi $t9, $t2, 0x1 +/* 1F054 8001E454 17200020 */ bnez $t9, .L8001E4D8 +/* 1F058 8001E458 3C0B8008 */ lui $t3, %hi(D_8007B2E4) +/* 1F05C 8001E45C 8D6BB2E4 */ lw $t3, %lo(D_8007B2E4)($t3) +/* 1F060 8001E460 3C018008 */ lui $at, %hi(D_8007BAE4) +/* 1F064 8001E464 316C0480 */ andi $t4, $t3, 0x480 +/* 1F068 8001E468 5580001C */ bnel $t4, $zero, .L8001E4DC +/* 1F06C 8001E46C 8D0A0000 */ lw $t2, 0x0($t0) +/* 1F070 8001E470 C428BAE4 */ lwc1 $f8, %lo(D_8007BAE4)($at) +/* 1F074 8001E474 3C028005 */ lui $v0, %hi(D_8004D2B8) +/* 1F078 8001E478 2442D2B8 */ addiu $v0, $v0, %lo(D_8004D2B8) +/* 1F07C 8001E47C 46080032 */ c.eq.s $f0, $f8 +/* 1F080 8001E480 3C018008 */ lui $at, %hi(D_8007BAEC) +/* 1F084 8001E484 45020007 */ bc1fl .L8001E4A4 +/* 1F088 8001E488 8C4D0000 */ lw $t5, 0x0($v0) +/* 1F08C 8001E48C C42ABAEC */ lwc1 $f10, %lo(D_8007BAEC)($at) +/* 1F090 8001E490 460A0032 */ c.eq.s $f0, $f10 +/* 1F094 8001E494 00000000 */ nop +/* 1F098 8001E498 4501000C */ bc1t .L8001E4CC +/* 1F09C 8001E49C 00000000 */ nop +/* 1F0A0 8001E4A0 8C4D0000 */ lw $t5, 0x0($v0) +.L8001E4A4: +/* 1F0A4 8001E4A4 2407000F */ addiu $a3, $zero, 0xF +/* 1F0A8 8001E4A8 24B80001 */ addiu $t8, $a1, 0x1 +/* 1F0AC 8001E4AC 25AE0001 */ addiu $t6, $t5, 0x1 +/* 1F0B0 8001E4B0 29C1001F */ slti $at, $t6, 0x1F +/* 1F0B4 8001E4B4 14200008 */ bnez $at, .L8001E4D8 +/* 1F0B8 8001E4B8 AC4E0000 */ sw $t6, 0x0($v0) +/* 1F0BC 8001E4BC AC870000 */ sw $a3, 0x0($a0) +/* 1F0C0 8001E4C0 A0D80000 */ sb $t8, 0x0($a2) +/* 1F0C4 8001E4C4 10000004 */ b .L8001E4D8 +/* 1F0C8 8001E4C8 AC400000 */ sw $zero, 0x0($v0) +.L8001E4CC: +/* 1F0CC 8001E4CC 3C028005 */ lui $v0, %hi(D_8004D2B8) +/* 1F0D0 8001E4D0 2442D2B8 */ addiu $v0, $v0, %lo(D_8004D2B8) +/* 1F0D4 8001E4D4 AC400000 */ sw $zero, 0x0($v0) +.L8001E4D8: +/* 1F0D8 8001E4D8 8D0A0000 */ lw $t2, 0x0($t0) +.L8001E4DC: +/* 1F0DC 8001E4DC 3C028008 */ lui $v0, %hi(D_8007B2E4) +/* 1F0E0 8001E4E0 8C42B2E4 */ lw $v0, %lo(D_8007B2E4)($v0) +/* 1F0E4 8001E4E4 2419001C */ addiu $t9, $zero, 0x1C +/* 1F0E8 8001E4E8 3C018009 */ lui $at, %hi(gHUDResolutionX) +/* 1F0EC 8001E4EC 032A5823 */ subu $t3, $t9, $t2 +/* 1F0F0 8001E4F0 AC2BC648 */ sw $t3, %lo(gHUDResolutionX)($at) +/* 1F0F4 8001E4F4 3C018009 */ lui $at, %hi(gHUDResolutionY) +/* 1F0F8 8001E4F8 240C0018 */ addiu $t4, $zero, 0x18 +/* 1F0FC 8001E4FC 304D0C00 */ andi $t5, $v0, 0xC00 +/* 1F100 8001E500 AC2CC64C */ sw $t4, %lo(gHUDResolutionY)($at) +/* 1F104 8001E504 15A00008 */ bnez $t5, .L8001E528 +/* 1F108 8001E508 01A01025 */ or $v0, $t5, $zero +/* 1F10C 8001E50C 3C048008 */ lui $a0, %hi(D_8007BACC) +/* 1F110 8001E510 0C0079FF */ jal func_8001E7FC +/* 1F114 8001E514 2484BACC */ addiu $a0, $a0, %lo(D_8007BACC) +/* 1F118 8001E518 3C028008 */ lui $v0, %hi(D_8007B2E4) +/* 1F11C 8001E51C 8C42B2E4 */ lw $v0, %lo(D_8007B2E4)($v0) +/* 1F120 8001E520 304E0C00 */ andi $t6, $v0, 0xC00 +/* 1F124 8001E524 01C01025 */ or $v0, $t6, $zero +.L8001E528: +/* 1F128 8001E528 3C0F8009 */ lui $t7, %hi(D_8008C664) +/* 1F12C 8001E52C 8DEFC664 */ lw $t7, %lo(D_8008C664)($t7) +/* 1F130 8001E530 2418001C */ addiu $t8, $zero, 0x1C +/* 1F134 8001E534 3C018009 */ lui $at, %hi(gHUDResolutionX) +/* 1F138 8001E538 030FC823 */ subu $t9, $t8, $t7 +/* 1F13C 8001E53C AC39C648 */ sw $t9, %lo(gHUDResolutionX)($at) +/* 1F140 8001E540 3C018009 */ lui $at, %hi(gHUDResolutionY) +/* 1F144 8001E544 240A00C5 */ addiu $t2, $zero, 0xC5 +/* 1F148 8001E548 14400004 */ bnez $v0, .L8001E55C +/* 1F14C 8001E54C AC2AC64C */ sw $t2, %lo(gHUDResolutionY)($at) +/* 1F150 8001E550 3C048008 */ lui $a0, %hi(D_8007BAC8) +/* 1F154 8001E554 0C007AF7 */ jal func_8001EBDC +/* 1F158 8001E558 8C84BAC8 */ lw $a0, %lo(D_8007BAC8)($a0) +.L8001E55C: +/* 1F15C 8001E55C 3C028009 */ lui $v0, %hi(D_8008C592) +/* 1F160 8001E560 3C0C8008 */ lui $t4, %hi(D_80084EE0) +/* 1F164 8001E564 958C4EE0 */ lhu $t4, %lo(D_80084EE0)($t4) +/* 1F168 8001E568 9442C592 */ lhu $v0, %lo(D_8008C592)($v0) +/* 1F16C 8001E56C 318D000D */ andi $t5, $t4, 0xD +/* 1F170 8001E570 304B0001 */ andi $t3, $v0, 0x1 +/* 1F174 8001E574 11A0000E */ beqz $t5, .L8001E5B0 +/* 1F178 8001E578 01601025 */ or $v0, $t3, $zero +/* 1F17C 8001E57C 1560000C */ bnez $t3, .L8001E5B0 +/* 1F180 8001E580 3C0E8008 */ lui $t6, %hi(D_80084F1C) +/* 1F184 8001E584 8DCE4F1C */ lw $t6, %lo(D_80084F1C)($t6) +/* 1F188 8001E588 95D80014 */ lhu $t8, 0x14($t6) +/* 1F18C 8001E58C 330F0008 */ andi $t7, $t8, 0x8 +/* 1F190 8001E590 15E00007 */ bnez $t7, .L8001E5B0 +/* 1F194 8001E594 00000000 */ nop +/* 1F198 8001E598 0C007AA1 */ jal func_8001EA84 +/* 1F19C 8001E59C 8FA40028 */ lw $a0, 0x28($sp) +/* 1F1A0 8001E5A0 3C028009 */ lui $v0, %hi(D_8008C592) +/* 1F1A4 8001E5A4 9442C592 */ lhu $v0, %lo(D_8008C592)($v0) +/* 1F1A8 8001E5A8 30590001 */ andi $t9, $v0, 0x1 +/* 1F1AC 8001E5AC 03201025 */ or $v0, $t9, $zero +.L8001E5B0: +/* 1F1B0 8001E5B0 3C018009 */ lui $at, %hi(gHUDResolutionY) +/* 1F1B4 8001E5B4 AC20C64C */ sw $zero, %lo(gHUDResolutionY)($at) +/* 1F1B8 8001E5B8 3C018009 */ lui $at, %hi(gHUDResolutionX) +/* 1F1BC 8001E5BC 1040000D */ beqz $v0, .L8001E5F4 +/* 1F1C0 8001E5C0 AC20C648 */ sw $zero, %lo(gHUDResolutionX)($at) +/* 1F1C4 8001E5C4 3C028009 */ lui $v0, %hi(D_8008C630) +/* 1F1C8 8001E5C8 2442C630 */ addiu $v0, $v0, %lo(D_8008C630) +/* 1F1CC 8001E5CC 944A0000 */ lhu $t2, 0x0($v0) +/* 1F1D0 8001E5D0 11400008 */ beqz $t2, .L8001E5F4 +/* 1F1D4 8001E5D4 00000000 */ nop +/* 1F1D8 8001E5D8 0C0080F4 */ jal func_800203D0 +/* 1F1DC 8001E5DC 00000000 */ nop +/* 1F1E0 8001E5E0 3C028009 */ lui $v0, %hi(D_8008C630) +/* 1F1E4 8001E5E4 2442C630 */ addiu $v0, $v0, %lo(D_8008C630) +/* 1F1E8 8001E5E8 944B0000 */ lhu $t3, 0x0($v0) +/* 1F1EC 8001E5EC 256CFFFF */ addiu $t4, $t3, -0x1 +/* 1F1F0 8001E5F0 A44C0000 */ sh $t4, 0x0($v0) +.L8001E5F4: +/* 1F1F4 8001E5F4 3C028008 */ lui $v0, %hi(D_8007B2E4) +/* 1F1F8 8001E5F8 8C42B2E4 */ lw $v0, %lo(D_8007B2E4)($v0) +/* 1F1FC 8001E5FC 304D0004 */ andi $t5, $v0, 0x4 +/* 1F200 8001E600 11A00005 */ beqz $t5, .L8001E618 +/* 1F204 8001E604 3C048008 */ lui $a0, %hi(D_8007BAB8) +/* 1F208 8001E608 0C007B57 */ jal func_8001ED5C +/* 1F20C 8001E60C 2484BAB8 */ addiu $a0, $a0, %lo(D_8007BAB8) +/* 1F210 8001E610 10000006 */ b .L8001E62C +/* 1F214 8001E614 00000000 */ nop +.L8001E618: +/* 1F218 8001E618 304E0008 */ andi $t6, $v0, 0x8 +/* 1F21C 8001E61C 11C00003 */ beqz $t6, .L8001E62C +/* 1F220 8001E620 3C048008 */ lui $a0, %hi(D_8007BAB8) +/* 1F224 8001E624 0C007CF7 */ jal func_8001F3DC +/* 1F228 8001E628 2484BAB8 */ addiu $a0, $a0, %lo(D_8007BAB8) +.L8001E62C: +/* 1F22C 8001E62C 3C018009 */ lui $at, %hi(gHUDResolutionY) +/* 1F230 8001E630 AC20C64C */ sw $zero, %lo(gHUDResolutionY)($at) +/* 1F234 8001E634 3C018009 */ lui $at, %hi(gHUDResolutionX) +/* 1F238 8001E638 3C198009 */ lui $t9, %hi(D_8008C592) +/* 1F23C 8001E63C 9739C592 */ lhu $t9, %lo(D_8008C592)($t9) +/* 1F240 8001E640 AC20C648 */ sw $zero, %lo(gHUDResolutionX)($at) +/* 1F244 8001E644 3C018009 */ lui $at, %hi(D_8008C658) +/* 1F248 8001E648 24180140 */ addiu $t8, $zero, 0x140 +/* 1F24C 8001E64C AC38C658 */ sw $t8, %lo(D_8008C658)($at) +/* 1F250 8001E650 3C018009 */ lui $at, %hi(D_8008C65C) +/* 1F254 8001E654 240F00F0 */ addiu $t7, $zero, 0xF0 +/* 1F258 8001E658 332A0001 */ andi $t2, $t9, 0x1 +/* 1F25C 8001E65C 1140003E */ beqz $t2, .L8001E758 +/* 1F260 8001E660 AC2FC65C */ sw $t7, %lo(D_8008C65C)($at) +/* 1F264 8001E664 0C008262 */ jal Draw_MISS_Icon +/* 1F268 8001E668 00000000 */ nop +/* 1F26C 8001E66C 3C0B8009 */ lui $t3, %hi(D_8008C592) +/* 1F270 8001E670 956BC592 */ lhu $t3, %lo(D_8008C592)($t3) +/* 1F274 8001E674 3C028008 */ lui $v0, %hi(D_8007BABA) +/* 1F278 8001E678 316C0002 */ andi $t4, $t3, 0x2 +/* 1F27C 8001E67C 15800012 */ bnez $t4, .L8001E6C8 +/* 1F280 8001E680 00000000 */ nop +/* 1F284 8001E684 9442BABA */ lhu $v0, %lo(D_8007BABA)($v0) +/* 1F288 8001E688 3C0D8008 */ lui $t5, %hi(D_8007BB2C) +/* 1F28C 8001E68C 1040000E */ beqz $v0, .L8001E6C8 +/* 1F290 8001E690 00000000 */ nop +/* 1F294 8001E694 95ADBB2C */ lhu $t5, %lo(D_8007BB2C)($t5) +/* 1F298 8001E698 3C188008 */ lui $t8, %hi(D_80086F10) +/* 1F29C 8001E69C 31AE0001 */ andi $t6, $t5, 0x1 +/* 1F2A0 8001E6A0 15C00009 */ bnez $t6, .L8001E6C8 +/* 1F2A4 8001E6A4 00000000 */ nop +/* 1F2A8 8001E6A8 8F186F10 */ lw $t8, %lo(D_80086F10)($t8) +/* 1F2AC 8001E6AC 2444FFFF */ addiu $a0, $v0, -0x1 +/* 1F2B0 8001E6B0 3099FFFF */ andi $t9, $a0, 0xFFFF +/* 1F2B4 8001E6B4 330F0001 */ andi $t7, $t8, 0x1 +/* 1F2B8 8001E6B8 15E00003 */ bnez $t7, .L8001E6C8 +/* 1F2BC 8001E6BC 00000000 */ nop +/* 1F2C0 8001E6C0 0C007E98 */ jal func_8001FA60 +/* 1F2C4 8001E6C4 03202025 */ or $a0, $t9, $zero +.L8001E6C8: +/* 1F2C8 8001E6C8 3C0A8008 */ lui $t2, %hi(D_8007BAC0) +/* 1F2CC 8001E6CC 954ABAC0 */ lhu $t2, %lo(D_8007BAC0)($t2) +/* 1F2D0 8001E6D0 3C0C8008 */ lui $t4, %hi(D_8007B2E4) +/* 1F2D4 8001E6D4 314B0020 */ andi $t3, $t2, 0x20 +/* 1F2D8 8001E6D8 11600007 */ beqz $t3, .L8001E6F8 +/* 1F2DC 8001E6DC 00000000 */ nop +/* 1F2E0 8001E6E0 8D8CB2E4 */ lw $t4, %lo(D_8007B2E4)($t4) +/* 1F2E4 8001E6E4 318D0800 */ andi $t5, $t4, 0x800 +/* 1F2E8 8001E6E8 15A00003 */ bnez $t5, .L8001E6F8 +/* 1F2EC 8001E6EC 00000000 */ nop +/* 1F2F0 8001E6F0 0C007EE5 */ jal func_8001FB94 +/* 1F2F4 8001E6F4 00000000 */ nop +.L8001E6F8: +/* 1F2F8 8001E6F8 3C048008 */ lui $a0, %hi(D_8007BACC) +/* 1F2FC 8001E6FC 0C007FBB */ jal func_8001FEEC +/* 1F300 8001E700 2484BACC */ addiu $a0, $a0, %lo(D_8007BACC) +/* 1F304 8001E704 3C028008 */ lui $v0, %hi(D_8007C990) +/* 1F308 8001E708 8C42C990 */ lw $v0, %lo(D_8007C990)($v0) +/* 1F30C 8001E70C 3C038008 */ lui $v1, %hi(D_8007C998) +/* 1F310 8001E710 2463C998 */ addiu $v1, $v1, %lo(D_8007C998) +/* 1F314 8001E714 50400036 */ beql $v0, $zero, .L8001E7F0 +/* 1F318 8001E718 8FBF0014 */ lw $ra, 0x14($sp) +.L8001E71C: +/* 1F31C 8001E71C 846E0074 */ lh $t6, 0x74($v1) +/* 1F320 8001E720 2401FFFF */ addiu $at, $zero, -0x1 +/* 1F324 8001E724 24640024 */ addiu $a0, $v1, 0x24 +/* 1F328 8001E728 11C10007 */ beq $t6, $at, .L8001E748 +/* 1F32C 8001E72C 00000000 */ nop +/* 1F330 8001E730 AFA20024 */ sw $v0, 0x24($sp) +/* 1F334 8001E734 0C007FBB */ jal func_8001FEEC +/* 1F338 8001E738 AFA3001C */ sw $v1, 0x1C($sp) +/* 1F33C 8001E73C 8FA20024 */ lw $v0, 0x24($sp) +/* 1F340 8001E740 8FA3001C */ lw $v1, 0x1C($sp) +/* 1F344 8001E744 2442FFFF */ addiu $v0, $v0, -0x1 +.L8001E748: +/* 1F348 8001E748 1440FFF4 */ bnez $v0, .L8001E71C +/* 1F34C 8001E74C 24630128 */ addiu $v1, $v1, 0x128 +/* 1F350 8001E750 10000027 */ b .L8001E7F0 +/* 1F354 8001E754 8FBF0014 */ lw $ra, 0x14($sp) +.L8001E758: +/* 1F358 8001E758 3C188008 */ lui $t8, %hi(D_8007BA74) +/* 1F35C 8001E75C 8F18BA74 */ lw $t8, %lo(D_8007BA74)($t8) +/* 1F360 8001E760 3C0F8008 */ lui $t7, %hi(D_8007B2E4) +/* 1F364 8001E764 3C0A8008 */ lui $t2, %hi(D_8007BA78) +/* 1F368 8001E768 13000009 */ beqz $t8, .L8001E790 +/* 1F36C 8001E76C 00000000 */ nop +/* 1F370 8001E770 8DEFB2E4 */ lw $t7, %lo(D_8007B2E4)($t7) +/* 1F374 8001E774 31F90007 */ andi $t9, $t7, 0x7 +/* 1F378 8001E778 17200005 */ bnez $t9, .L8001E790 +/* 1F37C 8001E77C 00000000 */ nop +/* 1F380 8001E780 0C007E06 */ jal func_8001F818 +/* 1F384 8001E784 00000000 */ nop +/* 1F388 8001E788 10000019 */ b .L8001E7F0 +/* 1F38C 8001E78C 8FBF0014 */ lw $ra, 0x14($sp) +.L8001E790: +/* 1F390 8001E790 8D4ABA78 */ lw $t2, %lo(D_8007BA78)($t2) +/* 1F394 8001E794 3C0B8008 */ lui $t3, %hi(D_8007B2E4) +/* 1F398 8001E798 3C0D8008 */ lui $t5, %hi(D_8007BA7C) +/* 1F39C 8001E79C 11400009 */ beqz $t2, .L8001E7C4 +/* 1F3A0 8001E7A0 00000000 */ nop +/* 1F3A4 8001E7A4 8D6BB2E4 */ lw $t3, %lo(D_8007B2E4)($t3) +/* 1F3A8 8001E7A8 316C000B */ andi $t4, $t3, 0xB +/* 1F3AC 8001E7AC 15800005 */ bnez $t4, .L8001E7C4 +/* 1F3B0 8001E7B0 00000000 */ nop +/* 1F3B4 8001E7B4 0C007E40 */ jal func_8001F900 +/* 1F3B8 8001E7B8 00000000 */ nop +/* 1F3BC 8001E7BC 1000000C */ b .L8001E7F0 +/* 1F3C0 8001E7C0 8FBF0014 */ lw $ra, 0x14($sp) +.L8001E7C4: +/* 1F3C4 8001E7C4 8DADBA7C */ lw $t5, %lo(D_8007BA7C)($t5) +/* 1F3C8 8001E7C8 3C0E8008 */ lui $t6, %hi(D_8007B2E4) +/* 1F3CC 8001E7CC 51A00008 */ beql $t5, $zero, .L8001E7F0 +/* 1F3D0 8001E7D0 8FBF0014 */ lw $ra, 0x14($sp) +/* 1F3D4 8001E7D4 8DCEB2E4 */ lw $t6, %lo(D_8007B2E4)($t6) +/* 1F3D8 8001E7D8 31D80007 */ andi $t8, $t6, 0x7 +/* 1F3DC 8001E7DC 57000004 */ bnel $t8, $zero, .L8001E7F0 +/* 1F3E0 8001E7E0 8FBF0014 */ lw $ra, 0x14($sp) +/* 1F3E4 8001E7E4 0C007E6C */ jal func_8001F9B0 +/* 1F3E8 8001E7E8 00000000 */ nop +/* 1F3EC 8001E7EC 8FBF0014 */ lw $ra, 0x14($sp) +.L8001E7F0: +/* 1F3F0 8001E7F0 27BD0028 */ addiu $sp, $sp, 0x28 +/* 1F3F4 8001E7F4 03E00008 */ jr $ra +/* 1F3F8 8001E7F8 00000000 */ nop + +glabel func_8001E7FC +/* 1F3FC 8001E7FC 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 1F400 8001E800 AFBF0034 */ sw $ra, 0x34($sp) +/* 1F404 8001E804 AFB00030 */ sw $s0, 0x30($sp) +/* 1F408 8001E808 AFA40038 */ sw $a0, 0x38($sp) +/* 1F40C 8001E80C 8FAE0038 */ lw $t6, 0x38($sp) +/* 1F410 8001E810 3C04803A */ lui $a0, %hi(gTex_HUD_and_Menu) +/* 1F414 8001E814 240F0011 */ addiu $t7, $zero, 0x11 +/* 1F418 8001E818 8DD00064 */ lw $s0, 0x64($t6) +/* 1F41C 8001E81C 24180020 */ addiu $t8, $zero, 0x20 +/* 1F420 8001E820 24190027 */ addiu $t9, $zero, 0x27 +/* 1F424 8001E824 24080400 */ addiu $t0, $zero, 0x400 +/* 1F428 8001E828 24090400 */ addiu $t1, $zero, 0x400 +/* 1F42C 8001E82C AFA90020 */ sw $t1, 0x20($sp) +/* 1F430 8001E830 AFA8001C */ sw $t0, 0x1C($sp) +/* 1F434 8001E834 AFB90018 */ sw $t9, 0x18($sp) +/* 1F438 8001E838 AFB80014 */ sw $t8, 0x14($sp) +/* 1F43C 8001E83C AFAF0010 */ sw $t7, 0x10($sp) +/* 1F440 8001E840 24846F40 */ addiu $a0, $a0, %lo(gTex_HUD_and_Menu) +/* 1F444 8001E844 00002825 */ or $a1, $zero, $zero +/* 1F448 8001E848 24060001 */ addiu $a2, $zero, 0x1 +/* 1F44C 8001E84C 0C00843F */ jal func_800210FC +/* 1F450 8001E850 2407003E */ addiu $a3, $zero, 0x3E +/* 1F454 8001E854 3C04803A */ lui $a0, %hi(gTex_HUD_and_Menu) +/* 1F458 8001E858 240A0012 */ addiu $t2, $zero, 0x12 +/* 1F45C 8001E85C 240B0020 */ addiu $t3, $zero, 0x20 +/* 1F460 8001E860 240C0038 */ addiu $t4, $zero, 0x38 +/* 1F464 8001E864 240D0400 */ addiu $t5, $zero, 0x400 +/* 1F468 8001E868 240E0400 */ addiu $t6, $zero, 0x400 +/* 1F46C 8001E86C AFAE0020 */ sw $t6, 0x20($sp) +/* 1F470 8001E870 AFAD001C */ sw $t5, 0x1C($sp) +/* 1F474 8001E874 AFAC0018 */ sw $t4, 0x18($sp) +/* 1F478 8001E878 AFAB0014 */ sw $t3, 0x14($sp) +/* 1F47C 8001E87C AFAA0010 */ sw $t2, 0x10($sp) +/* 1F480 8001E880 24846F40 */ addiu $a0, $a0, %lo(gTex_HUD_and_Menu) +/* 1F484 8001E884 00002825 */ or $a1, $zero, $zero +/* 1F488 8001E888 24060012 */ addiu $a2, $zero, 0x12 +/* 1F48C 8001E88C 0C00843F */ jal func_800210FC +/* 1F490 8001E890 2407003E */ addiu $a3, $zero, 0x3E +/* 1F494 8001E894 960F0004 */ lhu $t7, 0x4($s0) +/* 1F498 8001E898 96190006 */ lhu $t9, 0x6($s0) +/* 1F49C 8001E89C 000FC0C0 */ sll $t8, $t7, 3 +/* 1F4A0 8001E8A0 030FC023 */ subu $t8, $t8, $t7 +/* 1F4A4 8001E8A4 0018C0C0 */ sll $t8, $t8, 3 +/* 1F4A8 8001E8A8 0319001A */ div $zero, $t8, $t9 +/* 1F4AC 8001E8AC 00003812 */ mflo $a3 +/* 1F4B0 8001E8B0 17200002 */ bnez $t9, .L8001E8BC +/* 1F4B4 8001E8B4 00000000 */ nop +/* 1F4B8 8001E8B8 0007000D */ break 7 +.L8001E8BC: +/* 1F4BC 8001E8BC 2401FFFF */ addiu $at, $zero, -0x1 +/* 1F4C0 8001E8C0 17210004 */ bne $t9, $at, .L8001E8D4 +/* 1F4C4 8001E8C4 3C018000 */ lui $at, (0x80000000 >> 16) +/* 1F4C8 8001E8C8 17010002 */ bne $t8, $at, .L8001E8D4 +/* 1F4CC 8001E8CC 00000000 */ nop +/* 1F4D0 8001E8D0 0006000D */ break 6 +.L8001E8D4: +/* 1F4D4 8001E8D4 50E00011 */ beql $a3, $zero, .L8001E91C +/* 1F4D8 8001E8D8 960D0008 */ lhu $t5, 0x8($s0) +/* 1F4DC 8001E8DC 3C04803A */ lui $a0, %hi(gTex_HUD_and_Menu) +/* 1F4E0 8001E8E0 24080005 */ addiu $t0, $zero, 0x5 +/* 1F4E4 8001E8E4 2409005E */ addiu $t1, $zero, 0x5E +/* 1F4E8 8001E8E8 240A0027 */ addiu $t2, $zero, 0x27 +/* 1F4EC 8001E8EC 240B0400 */ addiu $t3, $zero, 0x400 +/* 1F4F0 8001E8F0 240C0400 */ addiu $t4, $zero, 0x400 +/* 1F4F4 8001E8F4 AFAC0020 */ sw $t4, 0x20($sp) +/* 1F4F8 8001E8F8 AFAB001C */ sw $t3, 0x1C($sp) +/* 1F4FC 8001E8FC AFAA0018 */ sw $t2, 0x18($sp) +/* 1F500 8001E900 AFA90014 */ sw $t1, 0x14($sp) +/* 1F504 8001E904 AFA80010 */ sw $t0, 0x10($sp) +/* 1F508 8001E908 24846F40 */ addiu $a0, $a0, %lo(gTex_HUD_and_Menu) +/* 1F50C 8001E90C 24050003 */ addiu $a1, $zero, 0x3 +/* 1F510 8001E910 0C00843F */ jal func_800210FC +/* 1F514 8001E914 2406000B */ addiu $a2, $zero, 0xB +/* 1F518 8001E918 960D0008 */ lhu $t5, 0x8($s0) +.L8001E91C: +/* 1F51C 8001E91C 960F000A */ lhu $t7, 0xA($s0) +/* 1F520 8001E920 3C04803A */ lui $a0, %hi(gTex_HUD_and_Menu) +/* 1F524 8001E924 000D70C0 */ sll $t6, $t5, 3 +/* 1F528 8001E928 01CD7023 */ subu $t6, $t6, $t5 +/* 1F52C 8001E92C 000E70C0 */ sll $t6, $t6, 3 +/* 1F530 8001E930 01CF001A */ div $zero, $t6, $t7 +/* 1F534 8001E934 00003812 */ mflo $a3 +/* 1F538 8001E938 24846F40 */ addiu $a0, $a0, %lo(gTex_HUD_and_Menu) +/* 1F53C 8001E93C 15E00002 */ bnez $t7, .L8001E948 +/* 1F540 8001E940 00000000 */ nop +/* 1F544 8001E944 0007000D */ break 7 +.L8001E948: +/* 1F548 8001E948 2401FFFF */ addiu $at, $zero, -0x1 +/* 1F54C 8001E94C 15E10004 */ bne $t7, $at, .L8001E960 +/* 1F550 8001E950 3C018000 */ lui $at, (0x80000000 >> 16) +/* 1F554 8001E954 15C10002 */ bne $t6, $at, .L8001E960 +/* 1F558 8001E958 00000000 */ nop +/* 1F55C 8001E95C 0006000D */ break 6 +.L8001E960: +/* 1F560 8001E960 24050003 */ addiu $a1, $zero, 0x3 +/* 1F564 8001E964 10E0000C */ beqz $a3, .L8001E998 +/* 1F568 8001E968 24060015 */ addiu $a2, $zero, 0x15 +/* 1F56C 8001E96C 24180005 */ addiu $t8, $zero, 0x5 +/* 1F570 8001E970 2419005E */ addiu $t9, $zero, 0x5E +/* 1F574 8001E974 2408002C */ addiu $t0, $zero, 0x2C +/* 1F578 8001E978 24090400 */ addiu $t1, $zero, 0x400 +/* 1F57C 8001E97C 240A0400 */ addiu $t2, $zero, 0x400 +/* 1F580 8001E980 AFAA0020 */ sw $t2, 0x20($sp) +/* 1F584 8001E984 AFA9001C */ sw $t1, 0x1C($sp) +/* 1F588 8001E988 AFA80018 */ sw $t0, 0x18($sp) +/* 1F58C 8001E98C AFB90014 */ sw $t9, 0x14($sp) +/* 1F590 8001E990 0C00843F */ jal func_800210FC +/* 1F594 8001E994 AFB80010 */ sw $t8, 0x10($sp) +.L8001E998: +/* 1F598 8001E998 3C04803A */ lui $a0, %hi(gTex_HUD_and_Menu) +/* 1F59C 8001E99C 240B000A */ addiu $t3, $zero, 0xA +/* 1F5A0 8001E9A0 AFAB0010 */ sw $t3, 0x10($sp) +/* 1F5A4 8001E9A4 24846F40 */ addiu $a0, $a0, %lo(gTex_HUD_and_Menu) +/* 1F5A8 8001E9A8 24050020 */ addiu $a1, $zero, 0x20 +/* 1F5AC 8001E9AC 2406001D */ addiu $a2, $zero, 0x1D +/* 1F5B0 8001E9B0 0C00838B */ jal func_80020E2C +/* 1F5B4 8001E9B4 24070080 */ addiu $a3, $zero, 0x80 +/* 1F5B8 8001E9B8 24040003 */ addiu $a0, $zero, 0x3 +/* 1F5BC 8001E9BC 2405000C */ addiu $a1, $zero, 0xC +/* 1F5C0 8001E9C0 00003025 */ or $a2, $zero, $zero +/* 1F5C4 8001E9C4 0C008353 */ jal func_80020D4C +/* 1F5C8 8001E9C8 96070004 */ lhu $a3, 0x4($s0) +/* 1F5CC 8001E9CC 24040001 */ addiu $a0, $zero, 0x1 +/* 1F5D0 8001E9D0 24050036 */ addiu $a1, $zero, 0x36 +/* 1F5D4 8001E9D4 00003025 */ or $a2, $zero, $zero +/* 1F5D8 8001E9D8 0C008353 */ jal func_80020D4C +/* 1F5DC 8001E9DC 96070006 */ lhu $a3, 0x6($s0) +/* 1F5E0 8001E9E0 24040003 */ addiu $a0, $zero, 0x3 +/* 1F5E4 8001E9E4 2405000C */ addiu $a1, $zero, 0xC +/* 1F5E8 8001E9E8 2406001B */ addiu $a2, $zero, 0x1B +/* 1F5EC 8001E9EC 0C008353 */ jal func_80020D4C +/* 1F5F0 8001E9F0 96070008 */ lhu $a3, 0x8($s0) +/* 1F5F4 8001E9F4 24040001 */ addiu $a0, $zero, 0x1 +/* 1F5F8 8001E9F8 24050036 */ addiu $a1, $zero, 0x36 +/* 1F5FC 8001E9FC 2406001B */ addiu $a2, $zero, 0x1B +/* 1F600 8001EA00 0C008353 */ jal func_80020D4C +/* 1F604 8001EA04 9607000A */ lhu $a3, 0xA($s0) +/* 1F608 8001EA08 240C0070 */ addiu $t4, $zero, 0x70 +/* 1F60C 8001EA0C 240D001D */ addiu $t5, $zero, 0x1D +/* 1F610 8001EA10 240E0400 */ addiu $t6, $zero, 0x400 +/* 1F614 8001EA14 240F0400 */ addiu $t7, $zero, 0x400 +/* 1F618 8001EA18 AFAF001C */ sw $t7, 0x1C($sp) +/* 1F61C 8001EA1C AFAE0018 */ sw $t6, 0x18($sp) +/* 1F620 8001EA20 AFAD0014 */ sw $t5, 0x14($sp) +/* 1F624 8001EA24 AFAC0010 */ sw $t4, 0x10($sp) +/* 1F628 8001EA28 2404002F */ addiu $a0, $zero, 0x2F +/* 1F62C 8001EA2C 00002825 */ or $a1, $zero, $zero +/* 1F630 8001EA30 24060008 */ addiu $a2, $zero, 0x8 +/* 1F634 8001EA34 0C0083E3 */ jal func_80020F8C +/* 1F638 8001EA38 2407000A */ addiu $a3, $zero, 0xA +/* 1F63C 8001EA3C 24180070 */ addiu $t8, $zero, 0x70 +/* 1F640 8001EA40 2419001D */ addiu $t9, $zero, 0x1D +/* 1F644 8001EA44 24080400 */ addiu $t0, $zero, 0x400 +/* 1F648 8001EA48 24090400 */ addiu $t1, $zero, 0x400 +/* 1F64C 8001EA4C AFA9001C */ sw $t1, 0x1C($sp) +/* 1F650 8001EA50 AFA80018 */ sw $t0, 0x18($sp) +/* 1F654 8001EA54 AFB90014 */ sw $t9, 0x14($sp) +/* 1F658 8001EA58 AFB80010 */ sw $t8, 0x10($sp) +/* 1F65C 8001EA5C 2404002F */ addiu $a0, $zero, 0x2F +/* 1F660 8001EA60 2405001B */ addiu $a1, $zero, 0x1B +/* 1F664 8001EA64 24060008 */ addiu $a2, $zero, 0x8 +/* 1F668 8001EA68 0C0083E3 */ jal func_80020F8C +/* 1F66C 8001EA6C 2407000A */ addiu $a3, $zero, 0xA +/* 1F670 8001EA70 8FBF0034 */ lw $ra, 0x34($sp) +/* 1F674 8001EA74 8FB00030 */ lw $s0, 0x30($sp) +/* 1F678 8001EA78 27BD0038 */ addiu $sp, $sp, 0x38 +/* 1F67C 8001EA7C 03E00008 */ jr $ra +/* 1F680 8001EA80 00000000 */ nop + +glabel func_8001EA84 +/* 1F684 8001EA84 27BDFF88 */ addiu $sp, $sp, -0x78 +/* 1F688 8001EA88 44800000 */ mtc1 $zero, $f0 +/* 1F68C 8001EA8C AFBF002C */ sw $ra, 0x2C($sp) +/* 1F690 8001EA90 AFA40078 */ sw $a0, 0x78($sp) +/* 1F694 8001EA94 240E0104 */ addiu $t6, $zero, 0x104 +/* 1F698 8001EA98 3C018009 */ lui $at, %hi(gHUDResolutionX) +/* 1F69C 8001EA9C AC2EC648 */ sw $t6, %lo(gHUDResolutionX)($at) +/* 1F6A0 8001EAA0 3C018009 */ lui $at, %hi(gHUDResolutionY) +/* 1F6A4 8001EAA4 240F0018 */ addiu $t7, $zero, 0x18 +/* 1F6A8 8001EAA8 44050000 */ mfc1 $a1, $f0 +/* 1F6AC 8001EAAC 44060000 */ mfc1 $a2, $f0 +/* 1F6B0 8001EAB0 3C078008 */ lui $a3, %hi(D_80086DEC) +/* 1F6B4 8001EAB4 AC2FC64C */ sw $t7, %lo(gHUDResolutionY)($at) +/* 1F6B8 8001EAB8 8CE76DEC */ lw $a3, %lo(D_80086DEC)($a3) +/* 1F6BC 8001EABC 0C008D5C */ jal func_80023570 +/* 1F6C0 8001EAC0 27A40038 */ addiu $a0, $sp, 0x38 +/* 1F6C4 8001EAC4 3C188009 */ lui $t8, %hi(gHUDResolutionX) +/* 1F6C8 8001EAC8 3C0B8009 */ lui $t3, %hi(gHUDResolutionY) +/* 1F6CC 8001EACC 8F18C648 */ lw $t8, %lo(gHUDResolutionX)($t8) +/* 1F6D0 8001EAD0 8D6BC64C */ lw $t3, %lo(gHUDResolutionY)($t3) +/* 1F6D4 8001EAD4 3C0A8008 */ lui $t2, %hi(D_8007B2F8) +/* 1F6D8 8001EAD8 27190011 */ addiu $t9, $t8, 0x11 +/* 1F6DC 8001EADC 256C0011 */ addiu $t4, $t3, 0x11 +/* 1F6E0 8001EAE0 44992000 */ mtc1 $t9, $f4 +/* 1F6E4 8001EAE4 448C4000 */ mtc1 $t4, $f8 +/* 1F6E8 8001EAE8 254AB2F8 */ addiu $t2, $t2, %lo(D_8007B2F8) +/* 1F6EC 8001EAEC 468021A0 */ cvt.s.w $f6, $f4 +/* 1F6F0 8001EAF0 8D4E0000 */ lw $t6, 0x0($t2) +/* 1F6F4 8001EAF4 8FAD0078 */ lw $t5, 0x78($sp) +/* 1F6F8 8001EAF8 44808000 */ mtc1 $zero, $f16 +/* 1F6FC 8001EAFC 000E7980 */ sll $t7, $t6, 6 +/* 1F700 8001EB00 468042A0 */ cvt.s.w $f10, $f8 +/* 1F704 8001EB04 01AF2821 */ addu $a1, $t5, $t7 +/* 1F708 8001EB08 E7A60068 */ swc1 $f6, 0x68($sp) +/* 1F70C 8001EB0C 24A500C0 */ addiu $a1, $a1, 0xC0 +/* 1F710 8001EB10 27A40038 */ addiu $a0, $sp, 0x38 +/* 1F714 8001EB14 E7B00070 */ swc1 $f16, 0x70($sp) +/* 1F718 8001EB18 0C00D480 */ jal guMtxF2L +/* 1F71C 8001EB1C E7AA006C */ swc1 $f10, 0x6C($sp) +/* 1F720 8001EB20 3C098008 */ lui $t1, %hi(gMasterGfxPos) +/* 1F724 8001EB24 3C0A8008 */ lui $t2, %hi(D_8007B2F8) +/* 1F728 8001EB28 254AB2F8 */ addiu $t2, $t2, %lo(D_8007B2F8) +/* 1F72C 8001EB2C 2529B2FC */ addiu $t1, $t1, %lo(gMasterGfxPos) +/* 1F730 8001EB30 8D220000 */ lw $v0, 0x0($t1) +/* 1F734 8001EB34 3C190102 */ lui $t9, (0x1020040 >> 16) +/* 1F738 8001EB38 37390040 */ ori $t9, $t9, (0x1020040 & 0xFFFF) +/* 1F73C 8001EB3C 24580008 */ addiu $t8, $v0, 0x8 +/* 1F740 8001EB40 AD380000 */ sw $t8, 0x0($t1) +/* 1F744 8001EB44 AC590000 */ sw $t9, 0x0($v0) +/* 1F748 8001EB48 8D4B0000 */ lw $t3, 0x0($t2) +/* 1F74C 8001EB4C 3C0D0200 */ lui $t5, %hi(D_2000000) +/* 1F750 8001EB50 25AD0000 */ addiu $t5, $t5, %lo(D_2000000) +/* 1F754 8001EB54 000B6180 */ sll $t4, $t3, 6 +/* 1F758 8001EB58 258E00C0 */ addiu $t6, $t4, 0xC0 +/* 1F75C 8001EB5C 01CD7821 */ addu $t7, $t6, $t5 +/* 1F760 8001EB60 AC4F0004 */ sw $t7, 0x4($v0) +/* 1F764 8001EB64 8D580000 */ lw $t8, 0x0($t2) +/* 1F768 8001EB68 3C0C0600 */ lui $t4, (0x6000000 >> 16) +/* 1F76C 8001EB6C 3C04803A */ lui $a0, %hi(gTex_HUD_and_Menu) +/* 1F770 8001EB70 27190001 */ addiu $t9, $t8, 0x1 +/* 1F774 8001EB74 AD590000 */ sw $t9, 0x0($t2) +/* 1F778 8001EB78 8D220000 */ lw $v0, 0x0($t1) +/* 1F77C 8001EB7C 3C0E803B */ lui $t6, %hi(D_803A8EA0) +/* 1F780 8001EB80 25CE8EA0 */ addiu $t6, $t6, %lo(D_803A8EA0) +/* 1F784 8001EB84 244B0008 */ addiu $t3, $v0, 0x8 +/* 1F788 8001EB88 AD2B0000 */ sw $t3, 0x0($t1) +/* 1F78C 8001EB8C AC4E0004 */ sw $t6, 0x4($v0) +/* 1F790 8001EB90 AC4C0000 */ sw $t4, 0x0($v0) +/* 1F794 8001EB94 240D000E */ addiu $t5, $zero, 0xE +/* 1F798 8001EB98 240F0093 */ addiu $t7, $zero, 0x93 +/* 1F79C 8001EB9C 24180400 */ addiu $t8, $zero, 0x400 +/* 1F7A0 8001EBA0 24190400 */ addiu $t9, $zero, 0x400 +/* 1F7A4 8001EBA4 AFB90020 */ sw $t9, 0x20($sp) +/* 1F7A8 8001EBA8 AFB8001C */ sw $t8, 0x1C($sp) +/* 1F7AC 8001EBAC AFAF0014 */ sw $t7, 0x14($sp) +/* 1F7B0 8001EBB0 AFAD0010 */ sw $t5, 0x10($sp) +/* 1F7B4 8001EBB4 24846F40 */ addiu $a0, $a0, %lo(gTex_HUD_and_Menu) +/* 1F7B8 8001EBB8 2405000D */ addiu $a1, $zero, 0xD +/* 1F7BC 8001EBBC 2406000A */ addiu $a2, $zero, 0xA +/* 1F7C0 8001EBC0 2407000B */ addiu $a3, $zero, 0xB +/* 1F7C4 8001EBC4 0C00843F */ jal func_800210FC +/* 1F7C8 8001EBC8 AFA00018 */ sw $zero, 0x18($sp) +/* 1F7CC 8001EBCC 8FBF002C */ lw $ra, 0x2C($sp) +/* 1F7D0 8001EBD0 27BD0078 */ addiu $sp, $sp, 0x78 +/* 1F7D4 8001EBD4 03E00008 */ jr $ra +/* 1F7D8 8001EBD8 00000000 */ nop + +glabel func_8001EBDC +/* 1F7DC 8001EBDC 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 1F7E0 8001EBE0 AFB0002C */ sw $s0, 0x2C($sp) +/* 1F7E4 8001EBE4 3C10803A */ lui $s0, %hi(gTex_HUD_and_Menu) +/* 1F7E8 8001EBE8 AFB30038 */ sw $s3, 0x38($sp) +/* 1F7EC 8001EBEC 00809825 */ or $s3, $a0, $zero +/* 1F7F0 8001EBF0 26106F40 */ addiu $s0, $s0, %lo(gTex_HUD_and_Menu) +/* 1F7F4 8001EBF4 AFBF003C */ sw $ra, 0x3C($sp) +/* 1F7F8 8001EBF8 AFB20034 */ sw $s2, 0x34($sp) +/* 1F7FC 8001EBFC AFB10030 */ sw $s1, 0x30($sp) +/* 1F800 8001EC00 240E000C */ addiu $t6, $zero, 0xC +/* 1F804 8001EC04 240F0020 */ addiu $t7, $zero, 0x20 +/* 1F808 8001EC08 24180010 */ addiu $t8, $zero, 0x10 +/* 1F80C 8001EC0C 24190400 */ addiu $t9, $zero, 0x400 +/* 1F810 8001EC10 24080400 */ addiu $t0, $zero, 0x400 +/* 1F814 8001EC14 AFA80020 */ sw $t0, 0x20($sp) +/* 1F818 8001EC18 AFB9001C */ sw $t9, 0x1C($sp) +/* 1F81C 8001EC1C AFB80018 */ sw $t8, 0x18($sp) +/* 1F820 8001EC20 AFAF0014 */ sw $t7, 0x14($sp) +/* 1F824 8001EC24 AFAE0010 */ sw $t6, 0x10($sp) +/* 1F828 8001EC28 02002025 */ or $a0, $s0, $zero +/* 1F82C 8001EC2C 00002825 */ or $a1, $zero, $zero +/* 1F830 8001EC30 00003025 */ or $a2, $zero, $zero +/* 1F834 8001EC34 0C00843F */ jal func_800210FC +/* 1F838 8001EC38 2407000C */ addiu $a3, $zero, 0xC +/* 1F83C 8001EC3C 2409000C */ addiu $t1, $zero, 0xC +/* 1F840 8001EC40 240A002C */ addiu $t2, $zero, 0x2C +/* 1F844 8001EC44 240B0010 */ addiu $t3, $zero, 0x10 +/* 1F848 8001EC48 240C0400 */ addiu $t4, $zero, 0x400 +/* 1F84C 8001EC4C 240D0400 */ addiu $t5, $zero, 0x400 +/* 1F850 8001EC50 AFAD0020 */ sw $t5, 0x20($sp) +/* 1F854 8001EC54 AFAC001C */ sw $t4, 0x1C($sp) +/* 1F858 8001EC58 AFAB0018 */ sw $t3, 0x18($sp) +/* 1F85C 8001EC5C AFAA0014 */ sw $t2, 0x14($sp) +/* 1F860 8001EC60 AFA90010 */ sw $t1, 0x10($sp) +/* 1F864 8001EC64 02002025 */ or $a0, $s0, $zero +/* 1F868 8001EC68 24050016 */ addiu $a1, $zero, 0x16 +/* 1F86C 8001EC6C 00003025 */ or $a2, $zero, $zero +/* 1F870 8001EC70 0C00843F */ jal func_800210FC +/* 1F874 8001EC74 2407000C */ addiu $a3, $zero, 0xC +/* 1F878 8001EC78 240E000C */ addiu $t6, $zero, 0xC +/* 1F87C 8001EC7C 240F0038 */ addiu $t7, $zero, 0x38 +/* 1F880 8001EC80 24180010 */ addiu $t8, $zero, 0x10 +/* 1F884 8001EC84 24190400 */ addiu $t9, $zero, 0x400 +/* 1F888 8001EC88 24080400 */ addiu $t0, $zero, 0x400 +/* 1F88C 8001EC8C AFA80020 */ sw $t0, 0x20($sp) +/* 1F890 8001EC90 AFB9001C */ sw $t9, 0x1C($sp) +/* 1F894 8001EC94 AFB80018 */ sw $t8, 0x18($sp) +/* 1F898 8001EC98 AFAF0014 */ sw $t7, 0x14($sp) +/* 1F89C 8001EC9C AFAE0010 */ sw $t6, 0x10($sp) +/* 1F8A0 8001ECA0 02002025 */ or $a0, $s0, $zero +/* 1F8A4 8001ECA4 2405002C */ addiu $a1, $zero, 0x2C +/* 1F8A8 8001ECA8 00003025 */ or $a2, $zero, $zero +/* 1F8AC 8001ECAC 0C00843F */ jal func_800210FC +/* 1F8B0 8001ECB0 2407000C */ addiu $a3, $zero, 0xC +/* 1F8B4 8001ECB4 2409000C */ addiu $t1, $zero, 0xC +/* 1F8B8 8001ECB8 240A0044 */ addiu $t2, $zero, 0x44 +/* 1F8BC 8001ECBC 240B0010 */ addiu $t3, $zero, 0x10 +/* 1F8C0 8001ECC0 240C0400 */ addiu $t4, $zero, 0x400 +/* 1F8C4 8001ECC4 240D0400 */ addiu $t5, $zero, 0x400 +/* 1F8C8 8001ECC8 AFAD0020 */ sw $t5, 0x20($sp) +/* 1F8CC 8001ECCC AFAC001C */ sw $t4, 0x1C($sp) +/* 1F8D0 8001ECD0 AFAB0018 */ sw $t3, 0x18($sp) +/* 1F8D4 8001ECD4 AFAA0014 */ sw $t2, 0x14($sp) +/* 1F8D8 8001ECD8 AFA90010 */ sw $t1, 0x10($sp) +/* 1F8DC 8001ECDC 02002025 */ or $a0, $s0, $zero +/* 1F8E0 8001ECE0 24050042 */ addiu $a1, $zero, 0x42 +/* 1F8E4 8001ECE4 00003025 */ or $a2, $zero, $zero +/* 1F8E8 8001ECE8 0C00843F */ jal func_800210FC +/* 1F8EC 8001ECEC 2407000C */ addiu $a3, $zero, 0xC +/* 1F8F0 8001ECF0 240E000A */ addiu $t6, $zero, 0xA +/* 1F8F4 8001ECF4 AFAE0010 */ sw $t6, 0x10($sp) +/* 1F8F8 8001ECF8 02002025 */ or $a0, $s0, $zero +/* 1F8FC 8001ECFC 24050020 */ addiu $a1, $zero, 0x20 +/* 1F900 8001ED00 2406001D */ addiu $a2, $zero, 0x1D +/* 1F904 8001ED04 0C00838B */ jal func_80020E2C +/* 1F908 8001ED08 24070080 */ addiu $a3, $zero, 0x80 +/* 1F90C 8001ED0C 02609025 */ or $s2, $s3, $zero +/* 1F910 8001ED10 24100006 */ addiu $s0, $zero, 0x6 +/* 1F914 8001ED14 24130004 */ addiu $s3, $zero, 0x4 +/* 1F918 8001ED18 00008825 */ or $s1, $zero, $zero +.L8001ED1C: +/* 1F91C 8001ED1C 24040001 */ addiu $a0, $zero, 0x1 +/* 1F920 8001ED20 02002825 */ or $a1, $s0, $zero +/* 1F924 8001ED24 24060006 */ addiu $a2, $zero, 0x6 +/* 1F928 8001ED28 0C008353 */ jal func_80020D4C +/* 1F92C 8001ED2C 92470024 */ lbu $a3, 0x24($s2) +/* 1F930 8001ED30 26310001 */ addiu $s1, $s1, 0x1 +/* 1F934 8001ED34 26520001 */ addiu $s2, $s2, 0x1 +/* 1F938 8001ED38 1633FFF8 */ bne $s1, $s3, .L8001ED1C +/* 1F93C 8001ED3C 26100016 */ addiu $s0, $s0, 0x16 +/* 1F940 8001ED40 8FBF003C */ lw $ra, 0x3C($sp) +/* 1F944 8001ED44 8FB0002C */ lw $s0, 0x2C($sp) +/* 1F948 8001ED48 8FB10030 */ lw $s1, 0x30($sp) +/* 1F94C 8001ED4C 8FB20034 */ lw $s2, 0x34($sp) +/* 1F950 8001ED50 8FB30038 */ lw $s3, 0x38($sp) +/* 1F954 8001ED54 03E00008 */ jr $ra +/* 1F958 8001ED58 27BD0040 */ addiu $sp, $sp, 0x40 + +glabel func_8001ED5C +/* 1F95C 8001ED5C 27BDFF80 */ addiu $sp, $sp, -0x80 +/* 1F960 8001ED60 AFB10030 */ sw $s1, 0x30($sp) +/* 1F964 8001ED64 3C038008 */ lui $v1, %hi(gMasterGfxPos) +/* 1F968 8001ED68 2463B2FC */ addiu $v1, $v1, %lo(gMasterGfxPos) +/* 1F96C 8001ED6C 00808825 */ or $s1, $a0, $zero +/* 1F970 8001ED70 AFBF0034 */ sw $ra, 0x34($sp) +/* 1F974 8001ED74 AFB0002C */ sw $s0, 0x2C($sp) +/* 1F978 8001ED78 3C0F8005 */ lui $t7, %hi(D_8004D300) +/* 1F97C 8001ED7C 25EFD300 */ addiu $t7, $t7, %lo(D_8004D300) +/* 1F980 8001ED80 8DE10000 */ lw $at, 0x0($t7) +/* 1F984 8001ED84 8DF90004 */ lw $t9, 0x4($t7) +/* 1F988 8001ED88 27AE0060 */ addiu $t6, $sp, 0x60 +/* 1F98C 8001ED8C ADC10000 */ sw $at, 0x0($t6) +/* 1F990 8001ED90 ADD90004 */ sw $t9, 0x4($t6) +/* 1F994 8001ED94 8C620000 */ lw $v0, 0x0($v1) +/* 1F998 8001ED98 3C0EE700 */ lui $t6, (0xE7000000 >> 16) +/* 1F99C 8001ED9C 3C018009 */ lui $at, %hi(gHUDResolutionX) +/* 1F9A0 8001EDA0 24580008 */ addiu $t8, $v0, 0x8 +/* 1F9A4 8001EDA4 AC780000 */ sw $t8, 0x0($v1) +/* 1F9A8 8001EDA8 AC400004 */ sw $zero, 0x4($v0) +/* 1F9AC 8001EDAC AC4E0000 */ sw $t6, 0x0($v0) +/* 1F9B0 8001EDB0 8C620000 */ lw $v0, 0x0($v1) +/* 1F9B4 8001EDB4 3C19BA00 */ lui $t9, (0xBA000C02 >> 16) +/* 1F9B8 8001EDB8 37390C02 */ ori $t9, $t9, (0xBA000C02 & 0xFFFF) +/* 1F9BC 8001EDBC 244F0008 */ addiu $t7, $v0, 0x8 +/* 1F9C0 8001EDC0 AC6F0000 */ sw $t7, 0x0($v1) +/* 1F9C4 8001EDC4 AC400004 */ sw $zero, 0x4($v0) +/* 1F9C8 8001EDC8 AC590000 */ sw $t9, 0x0($v0) +/* 1F9CC 8001EDCC 8C620000 */ lw $v0, 0x0($v1) +/* 1F9D0 8001EDD0 3C0F803A */ lui $t7, %hi(D_8039D990) +/* 1F9D4 8001EDD4 25EFD990 */ addiu $t7, $t7, %lo(D_8039D990) +/* 1F9D8 8001EDD8 24580008 */ addiu $t8, $v0, 0x8 +/* 1F9DC 8001EDDC AC780000 */ sw $t8, 0x0($v1) +/* 1F9E0 8001EDE0 3C0EFD10 */ lui $t6, (0xFD100000 >> 16) +/* 1F9E4 8001EDE4 AC4E0000 */ sw $t6, 0x0($v0) +/* 1F9E8 8001EDE8 AC4F0004 */ sw $t7, 0x4($v0) +/* 1F9EC 8001EDEC 8C620000 */ lw $v0, 0x0($v1) +/* 1F9F0 8001EDF0 3C18E800 */ lui $t8, (0xE8000000 >> 16) +/* 1F9F4 8001EDF4 3C0FF500 */ lui $t7, (0xF5000100 >> 16) +/* 1F9F8 8001EDF8 24590008 */ addiu $t9, $v0, 0x8 +/* 1F9FC 8001EDFC AC790000 */ sw $t9, 0x0($v1) +/* 1FA00 8001EE00 AC400004 */ sw $zero, 0x4($v0) +/* 1FA04 8001EE04 AC580000 */ sw $t8, 0x0($v0) +/* 1FA08 8001EE08 8C620000 */ lw $v0, 0x0($v1) +/* 1FA0C 8001EE0C 35EF0100 */ ori $t7, $t7, (0xF5000100 & 0xFFFF) +/* 1FA10 8001EE10 3C190700 */ lui $t9, (0x7000000 >> 16) +/* 1FA14 8001EE14 244E0008 */ addiu $t6, $v0, 0x8 +/* 1FA18 8001EE18 AC6E0000 */ sw $t6, 0x0($v1) +/* 1FA1C 8001EE1C AC590004 */ sw $t9, 0x4($v0) +/* 1FA20 8001EE20 AC4F0000 */ sw $t7, 0x0($v0) +/* 1FA24 8001EE24 8C620000 */ lw $v0, 0x0($v1) +/* 1FA28 8001EE28 3C0EE600 */ lui $t6, (0xE6000000 >> 16) +/* 1FA2C 8001EE2C 3C19F000 */ lui $t9, (0xF0000000 >> 16) +/* 1FA30 8001EE30 24580008 */ addiu $t8, $v0, 0x8 +/* 1FA34 8001EE34 AC780000 */ sw $t8, 0x0($v1) +/* 1FA38 8001EE38 AC400004 */ sw $zero, 0x4($v0) +/* 1FA3C 8001EE3C AC4E0000 */ sw $t6, 0x0($v0) +/* 1FA40 8001EE40 8C620000 */ lw $v0, 0x0($v1) +/* 1FA44 8001EE44 3C18073F */ lui $t8, (0x73FC000 >> 16) +/* 1FA48 8001EE48 3718C000 */ ori $t8, $t8, (0x73FC000 & 0xFFFF) +/* 1FA4C 8001EE4C 244F0008 */ addiu $t7, $v0, 0x8 +/* 1FA50 8001EE50 AC6F0000 */ sw $t7, 0x0($v1) +/* 1FA54 8001EE54 AC580004 */ sw $t8, 0x4($v0) +/* 1FA58 8001EE58 AC590000 */ sw $t9, 0x0($v0) +/* 1FA5C 8001EE5C 8C620000 */ lw $v0, 0x0($v1) +/* 1FA60 8001EE60 3C0FE700 */ lui $t7, (0xE7000000 >> 16) +/* 1FA64 8001EE64 24190018 */ addiu $t9, $zero, 0x18 +/* 1FA68 8001EE68 244E0008 */ addiu $t6, $v0, 0x8 +/* 1FA6C 8001EE6C AC6E0000 */ sw $t6, 0x0($v1) +/* 1FA70 8001EE70 AC400004 */ sw $zero, 0x4($v0) +/* 1FA74 8001EE74 AC4F0000 */ sw $t7, 0x0($v0) +/* 1FA78 8001EE78 AC39C648 */ sw $t9, %lo(gHUDResolutionX)($at) +/* 1FA7C 8001EE7C 3C018009 */ lui $at, %hi(gHUDResolutionY) +/* 1FA80 8001EE80 2418003E */ addiu $t8, $zero, 0x3E +/* 1FA84 8001EE84 240E000E */ addiu $t6, $zero, 0xE +/* 1FA88 8001EE88 AC38C64C */ sw $t8, %lo(gHUDResolutionY)($at) +/* 1FA8C 8001EE8C AFAE0010 */ sw $t6, 0x10($sp) +/* 1FA90 8001EE90 240E0400 */ addiu $t6, $zero, 0x400 +/* 1FA94 8001EE94 24180400 */ addiu $t8, $zero, 0x400 +/* 1FA98 8001EE98 2419000E */ addiu $t9, $zero, 0xE +/* 1FA9C 8001EE9C 3C04803A */ lui $a0, %hi(D_803A6F60) +/* 1FAA0 8001EEA0 240F0064 */ addiu $t7, $zero, 0x64 +/* 1FAA4 8001EEA4 AFAF0014 */ sw $t7, 0x14($sp) +/* 1FAA8 8001EEA8 24846F60 */ addiu $a0, $a0, %lo(D_803A6F60) +/* 1FAAC 8001EEAC AFB90018 */ sw $t9, 0x18($sp) +/* 1FAB0 8001EEB0 AFB8001C */ sw $t8, 0x1C($sp) +/* 1FAB4 8001EEB4 AFAE0020 */ sw $t6, 0x20($sp) +/* 1FAB8 8001EEB8 00002825 */ or $a1, $zero, $zero +/* 1FABC 8001EEBC 00003025 */ or $a2, $zero, $zero +/* 1FAC0 8001EEC0 0C00843F */ jal func_800210FC +/* 1FAC4 8001EEC4 2407006E */ addiu $a3, $zero, 0x6E +/* 1FAC8 8001EEC8 240F0024 */ addiu $t7, $zero, 0x24 +/* 1FACC 8001EECC 3C018009 */ lui $at, %hi(gHUDResolutionX) +/* 1FAD0 8001EED0 AC2FC648 */ sw $t7, %lo(gHUDResolutionX)($at) +/* 1FAD4 8001EED4 3C018009 */ lui $at, %hi(gHUDResolutionY) +/* 1FAD8 8001EED8 24190094 */ addiu $t9, $zero, 0x94 +/* 1FADC 8001EEDC 3C10803A */ lui $s0, %hi(D_803A6F60) +/* 1FAE0 8001EEE0 AC39C64C */ sw $t9, %lo(gHUDResolutionY)($at) +/* 1FAE4 8001EEE4 26106F60 */ addiu $s0, $s0, %lo(D_803A6F60) +/* 1FAE8 8001EEE8 24190400 */ addiu $t9, $zero, 0x400 +/* 1FAEC 8001EEEC 240F0400 */ addiu $t7, $zero, 0x400 +/* 1FAF0 8001EEF0 2418000E */ addiu $t8, $zero, 0xE +/* 1FAF4 8001EEF4 240E0064 */ addiu $t6, $zero, 0x64 +/* 1FAF8 8001EEF8 AFAE0014 */ sw $t6, 0x14($sp) +/* 1FAFC 8001EEFC AFB80010 */ sw $t8, 0x10($sp) +/* 1FB00 8001EF00 AFAF001C */ sw $t7, 0x1C($sp) +/* 1FB04 8001EF04 AFB90020 */ sw $t9, 0x20($sp) +/* 1FB08 8001EF08 02002025 */ or $a0, $s0, $zero +/* 1FB0C 8001EF0C 24050045 */ addiu $a1, $zero, 0x45 +/* 1FB10 8001EF10 00003025 */ or $a2, $zero, $zero +/* 1FB14 8001EF14 2407006E */ addiu $a3, $zero, 0x6E +/* 1FB18 8001EF18 0C00843F */ jal func_800210FC +/* 1FB1C 8001EF1C AFA00018 */ sw $zero, 0x18($sp) +/* 1FB20 8001EF20 2418000E */ addiu $t8, $zero, 0xE +/* 1FB24 8001EF24 240E0064 */ addiu $t6, $zero, 0x64 +/* 1FB28 8001EF28 240F0400 */ addiu $t7, $zero, 0x400 +/* 1FB2C 8001EF2C 24190400 */ addiu $t9, $zero, 0x400 +/* 1FB30 8001EF30 AFB90020 */ sw $t9, 0x20($sp) +/* 1FB34 8001EF34 AFAF001C */ sw $t7, 0x1C($sp) +/* 1FB38 8001EF38 AFAE0014 */ sw $t6, 0x14($sp) +/* 1FB3C 8001EF3C AFB80010 */ sw $t8, 0x10($sp) +/* 1FB40 8001EF40 02002025 */ or $a0, $s0, $zero +/* 1FB44 8001EF44 00002825 */ or $a1, $zero, $zero +/* 1FB48 8001EF48 24060018 */ addiu $a2, $zero, 0x18 +/* 1FB4C 8001EF4C 2407006E */ addiu $a3, $zero, 0x6E +/* 1FB50 8001EF50 0C00843F */ jal func_800210FC +/* 1FB54 8001EF54 AFA00018 */ sw $zero, 0x18($sp) +/* 1FB58 8001EF58 2418000E */ addiu $t8, $zero, 0xE +/* 1FB5C 8001EF5C 240E0064 */ addiu $t6, $zero, 0x64 +/* 1FB60 8001EF60 240F0400 */ addiu $t7, $zero, 0x400 +/* 1FB64 8001EF64 24190400 */ addiu $t9, $zero, 0x400 +/* 1FB68 8001EF68 AFB90020 */ sw $t9, 0x20($sp) +/* 1FB6C 8001EF6C AFAF001C */ sw $t7, 0x1C($sp) +/* 1FB70 8001EF70 AFAE0014 */ sw $t6, 0x14($sp) +/* 1FB74 8001EF74 AFB80010 */ sw $t8, 0x10($sp) +/* 1FB78 8001EF78 02002025 */ or $a0, $s0, $zero +/* 1FB7C 8001EF7C 2405008C */ addiu $a1, $zero, 0x8C +/* 1FB80 8001EF80 24060018 */ addiu $a2, $zero, 0x18 +/* 1FB84 8001EF84 2407006E */ addiu $a3, $zero, 0x6E +/* 1FB88 8001EF88 0C00843F */ jal func_800210FC +/* 1FB8C 8001EF8C AFA00018 */ sw $zero, 0x18($sp) +/* 1FB90 8001EF90 2418000E */ addiu $t8, $zero, 0xE +/* 1FB94 8001EF94 240E0064 */ addiu $t6, $zero, 0x64 +/* 1FB98 8001EF98 240F0400 */ addiu $t7, $zero, 0x400 +/* 1FB9C 8001EF9C 24190400 */ addiu $t9, $zero, 0x400 +/* 1FBA0 8001EFA0 AFB90020 */ sw $t9, 0x20($sp) +/* 1FBA4 8001EFA4 AFAF001C */ sw $t7, 0x1C($sp) +/* 1FBA8 8001EFA8 AFAE0014 */ sw $t6, 0x14($sp) +/* 1FBAC 8001EFAC AFB80010 */ sw $t8, 0x10($sp) +/* 1FBB0 8001EFB0 02002025 */ or $a0, $s0, $zero +/* 1FBB4 8001EFB4 24050045 */ addiu $a1, $zero, 0x45 +/* 1FBB8 8001EFB8 24060032 */ addiu $a2, $zero, 0x32 +/* 1FBBC 8001EFBC 2407006E */ addiu $a3, $zero, 0x6E +/* 1FBC0 8001EFC0 0C00843F */ jal func_800210FC +/* 1FBC4 8001EFC4 AFA00018 */ sw $zero, 0x18($sp) +/* 1FBC8 8001EFC8 24180024 */ addiu $t8, $zero, 0x24 +/* 1FBCC 8001EFCC 240E0040 */ addiu $t6, $zero, 0x40 +/* 1FBD0 8001EFD0 240F0400 */ addiu $t7, $zero, 0x400 +/* 1FBD4 8001EFD4 24190400 */ addiu $t9, $zero, 0x400 +/* 1FBD8 8001EFD8 AFB90020 */ sw $t9, 0x20($sp) +/* 1FBDC 8001EFDC AFAF001C */ sw $t7, 0x1C($sp) +/* 1FBE0 8001EFE0 AFAE0014 */ sw $t6, 0x14($sp) +/* 1FBE4 8001EFE4 AFB80010 */ sw $t8, 0x10($sp) +/* 1FBE8 8001EFE8 02002025 */ or $a0, $s0, $zero +/* 1FBEC 8001EFEC 2405006A */ addiu $a1, $zero, 0x6A +/* 1FBF0 8001EFF0 2406000E */ addiu $a2, $zero, 0xE +/* 1FBF4 8001EFF4 24070024 */ addiu $a3, $zero, 0x24 +/* 1FBF8 8001EFF8 0C00843F */ jal func_800210FC +/* 1FBFC 8001EFFC AFA00018 */ sw $zero, 0x18($sp) +/* 1FC00 8001F000 9638011C */ lhu $t8, 0x11C($s1) +/* 1FC04 8001F004 240E0018 */ addiu $t6, $zero, 0x18 +/* 1FC08 8001F008 3C018009 */ lui $at, %hi(gHUDResolutionX) +/* 1FC0C 8001F00C 13000028 */ beqz $t8, .L8001F0B0 +/* 1FC10 8001F010 240F003E */ addiu $t7, $zero, 0x3E +/* 1FC14 8001F014 AC2EC648 */ sw $t6, %lo(gHUDResolutionX)($at) +/* 1FC18 8001F018 3C018009 */ lui $at, %hi(gHUDResolutionY) +/* 1FC1C 8001F01C AC2FC64C */ sw $t7, %lo(gHUDResolutionY)($at) +/* 1FC20 8001F020 9624011C */ lhu $a0, 0x11C($s1) +/* 1FC24 8001F024 0C005224 */ jal func_80014890 +/* 1FC28 8001F028 26250119 */ addiu $a1, $s1, 0x119 +/* 1FC2C 8001F02C 8E390010 */ lw $t9, 0x10($s1) +/* 1FC30 8001F030 00402025 */ or $a0, $v0, $zero +/* 1FC34 8001F034 97250008 */ lhu $a1, 0x8($t9) +/* 1FC38 8001F038 0C005274 */ jal func_800149D0 +/* 1FC3C 8001F03C AFA20074 */ sw $v0, 0x74($sp) +/* 1FC40 8001F040 8FA30074 */ lw $v1, 0x74($sp) +/* 1FC44 8001F044 3C19800C */ lui $t9, %hi(D_800C0690) +/* 1FC48 8001F048 304800FF */ andi $t0, $v0, 0xFF +/* 1FC4C 8001F04C 00032202 */ srl $a0, $v1, 8 +/* 1FC50 8001F050 3098000F */ andi $t8, $a0, 0xF +/* 1FC54 8001F054 00187880 */ sll $t7, $t8, 2 +/* 1FC58 8001F058 032FC821 */ addu $t9, $t9, $t7 +/* 1FC5C 8001F05C 8F390690 */ lw $t9, %lo(D_800C0690)($t9) +/* 1FC60 8001F060 306E00FF */ andi $t6, $v1, 0xFF +/* 1FC64 8001F064 000EC080 */ sll $t8, $t6, 2 +/* 1FC68 8001F068 03387021 */ addu $t6, $t9, $t8 +/* 1FC6C 8001F06C 30590004 */ andi $t9, $v0, 0x4 +/* 1FC70 8001F070 1720000F */ bnez $t9, .L8001F0B0 +/* 1FC74 8001F074 8DC70000 */ lw $a3, 0x0($t6) +/* 1FC78 8001F078 00E02025 */ or $a0, $a3, $zero +/* 1FC7C 8001F07C AFA7006C */ sw $a3, 0x6C($sp) +/* 1FC80 8001F080 0C008346 */ jal func_80020D18 +/* 1FC84 8001F084 A3A8006B */ sb $t0, 0x6B($sp) +/* 1FC88 8001F088 93A8006B */ lbu $t0, 0x6B($sp) +/* 1FC8C 8001F08C 0002C080 */ sll $t8, $v0, 2 +/* 1FC90 8001F090 0302C023 */ subu $t8, $t8, $v0 +/* 1FC94 8001F094 240E0037 */ addiu $t6, $zero, 0x37 +/* 1FC98 8001F098 03A83021 */ addu $a2, $sp, $t0 +/* 1FC9C 8001F09C 8FA7006C */ lw $a3, 0x6C($sp) +/* 1FCA0 8001F0A0 90C60060 */ lbu $a2, 0x60($a2) +/* 1FCA4 8001F0A4 01D82023 */ subu $a0, $t6, $t8 +/* 1FCA8 8001F0A8 0C0082D3 */ jal func_80020B4C +/* 1FCAC 8001F0AC 24050003 */ addiu $a1, $zero, 0x3 +.L8001F0B0: +/* 1FCB0 8001F0B0 962F011C */ lhu $t7, 0x11C($s1) +/* 1FCB4 8001F0B4 24190024 */ addiu $t9, $zero, 0x24 +/* 1FCB8 8001F0B8 240E0094 */ addiu $t6, $zero, 0x94 +/* 1FCBC 8001F0BC 29E10003 */ slti $at, $t7, 0x3 +/* 1FCC0 8001F0C0 102000C1 */ beqz $at, .L8001F3C8 +/* 1FCC4 8001F0C4 27A50068 */ addiu $a1, $sp, 0x68 +/* 1FCC8 8001F0C8 3C018009 */ lui $at, %hi(gHUDResolutionX) +/* 1FCCC 8001F0CC AC39C648 */ sw $t9, %lo(gHUDResolutionX)($at) +/* 1FCD0 8001F0D0 3C018009 */ lui $at, %hi(gHUDResolutionY) +/* 1FCD4 8001F0D4 AC2EC64C */ sw $t6, %lo(gHUDResolutionY)($at) +/* 1FCD8 8001F0D8 9638011C */ lhu $t8, 0x11C($s1) +/* 1FCDC 8001F0DC 00001025 */ or $v0, $zero, $zero +/* 1FCE0 8001F0E0 1300000B */ beqz $t8, .L8001F110 +/* 1FCE4 8001F0E4 27B00068 */ addiu $s0, $sp, 0x68 +/* 1FCE8 8001F0E8 02201825 */ or $v1, $s1, $zero +/* 1FCEC 8001F0EC 906F0119 */ lbu $t7, 0x119($v1) +.L8001F0F0: +/* 1FCF0 8001F0F0 24420001 */ addiu $v0, $v0, 0x1 +/* 1FCF4 8001F0F4 26100001 */ addiu $s0, $s0, 0x1 +/* 1FCF8 8001F0F8 A20FFFFF */ sb $t7, -0x1($s0) +/* 1FCFC 8001F0FC 9639011C */ lhu $t9, 0x11C($s1) +/* 1FD00 8001F100 24630001 */ addiu $v1, $v1, 0x1 +/* 1FD04 8001F104 0059082B */ sltu $at, $v0, $t9 +/* 1FD08 8001F108 5420FFF9 */ bnel $at, $zero, .L8001F0F0 +/* 1FD0C 8001F10C 906F0119 */ lbu $t7, 0x119($v1) +.L8001F110: +/* 1FD10 8001F110 00A28021 */ addu $s0, $a1, $v0 +/* 1FD14 8001F114 24440001 */ addiu $a0, $v0, 0x1 +/* 1FD18 8001F118 A2000000 */ sb $zero, 0x0($s0) +/* 1FD1C 8001F11C 308EFFFF */ andi $t6, $a0, 0xFFFF +/* 1FD20 8001F120 01C02025 */ or $a0, $t6, $zero +/* 1FD24 8001F124 0C005224 */ jal func_80014890 +/* 1FD28 8001F128 AFAE0038 */ sw $t6, 0x38($sp) +/* 1FD2C 8001F12C 8E380010 */ lw $t8, 0x10($s1) +/* 1FD30 8001F130 00402025 */ or $a0, $v0, $zero +/* 1FD34 8001F134 97050008 */ lhu $a1, 0x8($t8) +/* 1FD38 8001F138 0C005274 */ jal func_800149D0 +/* 1FD3C 8001F13C AFA20074 */ sw $v0, 0x74($sp) +/* 1FD40 8001F140 8FA30074 */ lw $v1, 0x74($sp) +/* 1FD44 8001F144 3C18800C */ lui $t8, %hi(D_800C0690) +/* 1FD48 8001F148 304800FF */ andi $t0, $v0, 0xFF +/* 1FD4C 8001F14C 00032202 */ srl $a0, $v1, 8 +/* 1FD50 8001F150 308F000F */ andi $t7, $a0, 0xF +/* 1FD54 8001F154 000F7080 */ sll $t6, $t7, 2 +/* 1FD58 8001F158 030EC021 */ addu $t8, $t8, $t6 +/* 1FD5C 8001F15C 8F180690 */ lw $t8, %lo(D_800C0690)($t8) +/* 1FD60 8001F160 307900FF */ andi $t9, $v1, 0xFF +/* 1FD64 8001F164 00197880 */ sll $t7, $t9, 2 +/* 1FD68 8001F168 030FC821 */ addu $t9, $t8, $t7 +/* 1FD6C 8001F16C 30580004 */ andi $t8, $v0, 0x4 +/* 1FD70 8001F170 13000006 */ beqz $t8, .L8001F18C +/* 1FD74 8001F174 8F270000 */ lw $a3, 0x0($t9) +/* 1FD78 8001F178 962F011C */ lhu $t7, 0x11C($s1) +/* 1FD7C 8001F17C 3C078005 */ lui $a3, %hi(D_8004D2C0) +/* 1FD80 8001F180 000FC880 */ sll $t9, $t7, 2 +/* 1FD84 8001F184 00F93821 */ addu $a3, $a3, $t9 +/* 1FD88 8001F188 8CE7D2C0 */ lw $a3, %lo(D_8004D2C0)($a3) +.L8001F18C: +/* 1FD8C 8001F18C 00E02025 */ or $a0, $a3, $zero +/* 1FD90 8001F190 AFA7006C */ sw $a3, 0x6C($sp) +/* 1FD94 8001F194 0C008346 */ jal func_80020D18 +/* 1FD98 8001F198 A3A8006B */ sb $t0, 0x6B($sp) +/* 1FD9C 8001F19C 93A8006B */ lbu $t0, 0x6B($sp) +/* 1FDA0 8001F1A0 00027080 */ sll $t6, $v0, 2 +/* 1FDA4 8001F1A4 01C27023 */ subu $t6, $t6, $v0 +/* 1FDA8 8001F1A8 2418007C */ addiu $t8, $zero, 0x7C +/* 1FDAC 8001F1AC 03A83021 */ addu $a2, $sp, $t0 +/* 1FDB0 8001F1B0 8FA7006C */ lw $a3, 0x6C($sp) +/* 1FDB4 8001F1B4 90C60060 */ lbu $a2, 0x60($a2) +/* 1FDB8 8001F1B8 030E2023 */ subu $a0, $t8, $t6 +/* 1FDBC 8001F1BC 0C0082D3 */ jal func_80020B4C +/* 1FDC0 8001F1C0 24050003 */ addiu $a1, $zero, 0x3 +/* 1FDC4 8001F1C4 240F0001 */ addiu $t7, $zero, 0x1 +/* 1FDC8 8001F1C8 A20F0000 */ sb $t7, 0x0($s0) +/* 1FDCC 8001F1CC 97A4003A */ lhu $a0, 0x3A($sp) +/* 1FDD0 8001F1D0 0C005224 */ jal func_80014890 +/* 1FDD4 8001F1D4 27A50068 */ addiu $a1, $sp, 0x68 +/* 1FDD8 8001F1D8 8E390010 */ lw $t9, 0x10($s1) +/* 1FDDC 8001F1DC 00402025 */ or $a0, $v0, $zero +/* 1FDE0 8001F1E0 97250008 */ lhu $a1, 0x8($t9) +/* 1FDE4 8001F1E4 0C005274 */ jal func_800149D0 +/* 1FDE8 8001F1E8 AFA20074 */ sw $v0, 0x74($sp) +/* 1FDEC 8001F1EC 8FA30074 */ lw $v1, 0x74($sp) +/* 1FDF0 8001F1F0 3C19800C */ lui $t9, %hi(D_800C0690) +/* 1FDF4 8001F1F4 304800FF */ andi $t0, $v0, 0xFF +/* 1FDF8 8001F1F8 00032202 */ srl $a0, $v1, 8 +/* 1FDFC 8001F1FC 3098000F */ andi $t8, $a0, 0xF +/* 1FE00 8001F200 00187880 */ sll $t7, $t8, 2 +/* 1FE04 8001F204 032FC821 */ addu $t9, $t9, $t7 +/* 1FE08 8001F208 8F390690 */ lw $t9, %lo(D_800C0690)($t9) +/* 1FE0C 8001F20C 306E00FF */ andi $t6, $v1, 0xFF +/* 1FE10 8001F210 000EC080 */ sll $t8, $t6, 2 +/* 1FE14 8001F214 03387021 */ addu $t6, $t9, $t8 +/* 1FE18 8001F218 30590004 */ andi $t9, $v0, 0x4 +/* 1FE1C 8001F21C 13200006 */ beqz $t9, .L8001F238 +/* 1FE20 8001F220 8DC70000 */ lw $a3, 0x0($t6) +/* 1FE24 8001F224 9638011C */ lhu $t8, 0x11C($s1) +/* 1FE28 8001F228 3C078005 */ lui $a3, %hi(D_8004D2C0) +/* 1FE2C 8001F22C 00187080 */ sll $t6, $t8, 2 +/* 1FE30 8001F230 00EE3821 */ addu $a3, $a3, $t6 +/* 1FE34 8001F234 8CE7D2C0 */ lw $a3, %lo(D_8004D2C0)($a3) +.L8001F238: +/* 1FE38 8001F238 00E02025 */ or $a0, $a3, $zero +/* 1FE3C 8001F23C AFA7006C */ sw $a3, 0x6C($sp) +/* 1FE40 8001F240 0C008346 */ jal func_80020D18 +/* 1FE44 8001F244 A3A8006B */ sb $t0, 0x6B($sp) +/* 1FE48 8001F248 93A8006B */ lbu $t0, 0x6B($sp) +/* 1FE4C 8001F24C 00027880 */ sll $t7, $v0, 2 +/* 1FE50 8001F250 01E27823 */ subu $t7, $t7, $v0 +/* 1FE54 8001F254 24190037 */ addiu $t9, $zero, 0x37 +/* 1FE58 8001F258 03A83021 */ addu $a2, $sp, $t0 +/* 1FE5C 8001F25C 8FA7006C */ lw $a3, 0x6C($sp) +/* 1FE60 8001F260 90C60060 */ lbu $a2, 0x60($a2) +/* 1FE64 8001F264 032F2023 */ subu $a0, $t9, $t7 +/* 1FE68 8001F268 0C0082D3 */ jal func_80020B4C +/* 1FE6C 8001F26C 2405001B */ addiu $a1, $zero, 0x1B +/* 1FE70 8001F270 24180002 */ addiu $t8, $zero, 0x2 +/* 1FE74 8001F274 A2180000 */ sb $t8, 0x0($s0) +/* 1FE78 8001F278 97A4003A */ lhu $a0, 0x3A($sp) +/* 1FE7C 8001F27C 0C005224 */ jal func_80014890 +/* 1FE80 8001F280 27A50068 */ addiu $a1, $sp, 0x68 +/* 1FE84 8001F284 8E2E0010 */ lw $t6, 0x10($s1) +/* 1FE88 8001F288 00402025 */ or $a0, $v0, $zero +/* 1FE8C 8001F28C 95C50008 */ lhu $a1, 0x8($t6) +/* 1FE90 8001F290 0C005274 */ jal func_800149D0 +/* 1FE94 8001F294 AFA20074 */ sw $v0, 0x74($sp) +/* 1FE98 8001F298 8FA30074 */ lw $v1, 0x74($sp) +/* 1FE9C 8001F29C 3C0E800C */ lui $t6, %hi(D_800C0690) +/* 1FEA0 8001F2A0 304800FF */ andi $t0, $v0, 0xFF +/* 1FEA4 8001F2A4 00032202 */ srl $a0, $v1, 8 +/* 1FEA8 8001F2A8 3099000F */ andi $t9, $a0, 0xF +/* 1FEAC 8001F2AC 0019C080 */ sll $t8, $t9, 2 +/* 1FEB0 8001F2B0 01D87021 */ addu $t6, $t6, $t8 +/* 1FEB4 8001F2B4 8DCE0690 */ lw $t6, %lo(D_800C0690)($t6) +/* 1FEB8 8001F2B8 306F00FF */ andi $t7, $v1, 0xFF +/* 1FEBC 8001F2BC 000FC880 */ sll $t9, $t7, 2 +/* 1FEC0 8001F2C0 01D97821 */ addu $t7, $t6, $t9 +/* 1FEC4 8001F2C4 304E0004 */ andi $t6, $v0, 0x4 +/* 1FEC8 8001F2C8 11C00006 */ beqz $t6, .L8001F2E4 +/* 1FECC 8001F2CC 8DE70000 */ lw $a3, 0x0($t7) +/* 1FED0 8001F2D0 9639011C */ lhu $t9, 0x11C($s1) +/* 1FED4 8001F2D4 3C078005 */ lui $a3, %hi(D_8004D2C0) +/* 1FED8 8001F2D8 00197880 */ sll $t7, $t9, 2 +/* 1FEDC 8001F2DC 00EF3821 */ addu $a3, $a3, $t7 +/* 1FEE0 8001F2E0 8CE7D2C0 */ lw $a3, %lo(D_8004D2C0)($a3) +.L8001F2E4: +/* 1FEE4 8001F2E4 00E02025 */ or $a0, $a3, $zero +/* 1FEE8 8001F2E8 AFA7006C */ sw $a3, 0x6C($sp) +/* 1FEEC 8001F2EC 0C008346 */ jal func_80020D18 +/* 1FEF0 8001F2F0 A3A8006B */ sb $t0, 0x6B($sp) +/* 1FEF4 8001F2F4 93A8006B */ lbu $t0, 0x6B($sp) +/* 1FEF8 8001F2F8 0002C080 */ sll $t8, $v0, 2 +/* 1FEFC 8001F2FC 0302C023 */ subu $t8, $t8, $v0 +/* 1FF00 8001F300 240E007C */ addiu $t6, $zero, 0x7C +/* 1FF04 8001F304 03A83021 */ addu $a2, $sp, $t0 +/* 1FF08 8001F308 8FA7006C */ lw $a3, 0x6C($sp) +/* 1FF0C 8001F30C 90C60060 */ lbu $a2, 0x60($a2) +/* 1FF10 8001F310 01D82023 */ subu $a0, $t6, $t8 +/* 1FF14 8001F314 0C0082D3 */ jal func_80020B4C +/* 1FF18 8001F318 24050035 */ addiu $a1, $zero, 0x35 +/* 1FF1C 8001F31C 24190003 */ addiu $t9, $zero, 0x3 +/* 1FF20 8001F320 A2190000 */ sb $t9, 0x0($s0) +/* 1FF24 8001F324 97A4003A */ lhu $a0, 0x3A($sp) +/* 1FF28 8001F328 0C005224 */ jal func_80014890 +/* 1FF2C 8001F32C 27A50068 */ addiu $a1, $sp, 0x68 +/* 1FF30 8001F330 8E2F0010 */ lw $t7, 0x10($s1) +/* 1FF34 8001F334 00402025 */ or $a0, $v0, $zero +/* 1FF38 8001F338 95E50008 */ lhu $a1, 0x8($t7) +/* 1FF3C 8001F33C 0C005274 */ jal func_800149D0 +/* 1FF40 8001F340 AFA20074 */ sw $v0, 0x74($sp) +/* 1FF44 8001F344 8FA30074 */ lw $v1, 0x74($sp) +/* 1FF48 8001F348 3C0F800C */ lui $t7, %hi(D_800C0690) +/* 1FF4C 8001F34C 304800FF */ andi $t0, $v0, 0xFF +/* 1FF50 8001F350 00032202 */ srl $a0, $v1, 8 +/* 1FF54 8001F354 308E000F */ andi $t6, $a0, 0xF +/* 1FF58 8001F358 000EC880 */ sll $t9, $t6, 2 +/* 1FF5C 8001F35C 01F97821 */ addu $t7, $t7, $t9 +/* 1FF60 8001F360 8DEF0690 */ lw $t7, %lo(D_800C0690)($t7) +/* 1FF64 8001F364 307800FF */ andi $t8, $v1, 0xFF +/* 1FF68 8001F368 00187080 */ sll $t6, $t8, 2 +/* 1FF6C 8001F36C 01EEC021 */ addu $t8, $t7, $t6 +/* 1FF70 8001F370 304F0004 */ andi $t7, $v0, 0x4 +/* 1FF74 8001F374 11E00006 */ beqz $t7, .L8001F390 +/* 1FF78 8001F378 8F070000 */ lw $a3, 0x0($t8) +/* 1FF7C 8001F37C 962E011C */ lhu $t6, 0x11C($s1) +/* 1FF80 8001F380 3C078005 */ lui $a3, %hi(D_8004D2C0) +/* 1FF84 8001F384 000EC080 */ sll $t8, $t6, 2 +/* 1FF88 8001F388 00F83821 */ addu $a3, $a3, $t8 +/* 1FF8C 8001F38C 8CE7D2C0 */ lw $a3, %lo(D_8004D2C0)($a3) +.L8001F390: +/* 1FF90 8001F390 00E02025 */ or $a0, $a3, $zero +/* 1FF94 8001F394 AFA7006C */ sw $a3, 0x6C($sp) +/* 1FF98 8001F398 0C008346 */ jal func_80020D18 +/* 1FF9C 8001F39C A3A8006B */ sb $t0, 0x6B($sp) +/* 1FFA0 8001F3A0 93A8006B */ lbu $t0, 0x6B($sp) +/* 1FFA4 8001F3A4 0002C880 */ sll $t9, $v0, 2 +/* 1FFA8 8001F3A8 0322C823 */ subu $t9, $t9, $v0 +/* 1FFAC 8001F3AC 240F00C3 */ addiu $t7, $zero, 0xC3 +/* 1FFB0 8001F3B0 03A83021 */ addu $a2, $sp, $t0 +/* 1FFB4 8001F3B4 8FA7006C */ lw $a3, 0x6C($sp) +/* 1FFB8 8001F3B8 90C60060 */ lbu $a2, 0x60($a2) +/* 1FFBC 8001F3BC 01F92023 */ subu $a0, $t7, $t9 +/* 1FFC0 8001F3C0 0C0082D3 */ jal func_80020B4C +/* 1FFC4 8001F3C4 2405001B */ addiu $a1, $zero, 0x1B +.L8001F3C8: +/* 1FFC8 8001F3C8 8FBF0034 */ lw $ra, 0x34($sp) +/* 1FFCC 8001F3CC 8FB0002C */ lw $s0, 0x2C($sp) +/* 1FFD0 8001F3D0 8FB10030 */ lw $s1, 0x30($sp) +/* 1FFD4 8001F3D4 03E00008 */ jr $ra +/* 1FFD8 8001F3D8 27BD0080 */ addiu $sp, $sp, 0x80 + +glabel func_8001F3DC +/* 1FFDC 8001F3DC 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 1FFE0 8001F3E0 3C038008 */ lui $v1, %hi(gMasterGfxPos) +/* 1FFE4 8001F3E4 2463B2FC */ addiu $v1, $v1, %lo(gMasterGfxPos) +/* 1FFE8 8001F3E8 AFBF002C */ sw $ra, 0x2C($sp) +/* 1FFEC 8001F3EC AFA40030 */ sw $a0, 0x30($sp) +/* 1FFF0 8001F3F0 3C018009 */ lui $at, %hi(gHUDResolutionX) +/* 1FFF4 8001F3F4 AC20C648 */ sw $zero, %lo(gHUDResolutionX)($at) +/* 1FFF8 8001F3F8 3C018009 */ lui $at, %hi(gHUDResolutionY) +/* 1FFFC 8001F3FC AC20C64C */ sw $zero, %lo(gHUDResolutionY)($at) +/* 20000 8001F400 8C620000 */ lw $v0, 0x0($v1) +/* 20004 8001F404 3C0FE700 */ lui $t7, (0xE7000000 >> 16) +/* 20008 8001F408 3C19FD10 */ lui $t9, (0xFD100000 >> 16) +/* 2000C 8001F40C 244E0008 */ addiu $t6, $v0, 0x8 +/* 20010 8001F410 AC6E0000 */ sw $t6, 0x0($v1) +/* 20014 8001F414 AC400004 */ sw $zero, 0x4($v0) +/* 20018 8001F418 AC4F0000 */ sw $t7, 0x0($v0) +/* 2001C 8001F41C 8C620000 */ lw $v0, 0x0($v1) +/* 20020 8001F420 3C0E803A */ lui $t6, %hi(D_8039D990) +/* 20024 8001F424 25CED990 */ addiu $t6, $t6, %lo(D_8039D990) +/* 20028 8001F428 24580008 */ addiu $t8, $v0, 0x8 +/* 2002C 8001F42C AC780000 */ sw $t8, 0x0($v1) +/* 20030 8001F430 AC4E0004 */ sw $t6, 0x4($v0) +/* 20034 8001F434 AC590000 */ sw $t9, 0x0($v0) +/* 20038 8001F438 8C620000 */ lw $v0, 0x0($v1) +/* 2003C 8001F43C 3C18E800 */ lui $t8, (0xE8000000 >> 16) +/* 20040 8001F440 3C0EF500 */ lui $t6, (0xF5000100 >> 16) +/* 20044 8001F444 244F0008 */ addiu $t7, $v0, 0x8 +/* 20048 8001F448 AC6F0000 */ sw $t7, 0x0($v1) +/* 2004C 8001F44C AC400004 */ sw $zero, 0x4($v0) +/* 20050 8001F450 AC580000 */ sw $t8, 0x0($v0) +/* 20054 8001F454 8C620000 */ lw $v0, 0x0($v1) +/* 20058 8001F458 35CE0100 */ ori $t6, $t6, (0xF5000100 & 0xFFFF) +/* 2005C 8001F45C 3C0F0700 */ lui $t7, (0x7000000 >> 16) +/* 20060 8001F460 24590008 */ addiu $t9, $v0, 0x8 +/* 20064 8001F464 AC790000 */ sw $t9, 0x0($v1) +/* 20068 8001F468 AC4F0004 */ sw $t7, 0x4($v0) +/* 2006C 8001F46C AC4E0000 */ sw $t6, 0x0($v0) +/* 20070 8001F470 8C620000 */ lw $v0, 0x0($v1) +/* 20074 8001F474 3C19E600 */ lui $t9, (0xE6000000 >> 16) +/* 20078 8001F478 3C0FF000 */ lui $t7, (0xF0000000 >> 16) +/* 2007C 8001F47C 24580008 */ addiu $t8, $v0, 0x8 +/* 20080 8001F480 AC780000 */ sw $t8, 0x0($v1) +/* 20084 8001F484 AC400004 */ sw $zero, 0x4($v0) +/* 20088 8001F488 AC590000 */ sw $t9, 0x0($v0) +/* 2008C 8001F48C 8C620000 */ lw $v0, 0x0($v1) +/* 20090 8001F490 3C18073F */ lui $t8, (0x73FC000 >> 16) +/* 20094 8001F494 3718C000 */ ori $t8, $t8, (0x73FC000 & 0xFFFF) +/* 20098 8001F498 244E0008 */ addiu $t6, $v0, 0x8 +/* 2009C 8001F49C AC6E0000 */ sw $t6, 0x0($v1) +/* 200A0 8001F4A0 AC580004 */ sw $t8, 0x4($v0) +/* 200A4 8001F4A4 AC4F0000 */ sw $t7, 0x0($v0) +/* 200A8 8001F4A8 8C620000 */ lw $v0, 0x0($v1) +/* 200AC 8001F4AC 3C0EE700 */ lui $t6, (0xE7000000 >> 16) +/* 200B0 8001F4B0 3C04803A */ lui $a0, %hi(D_803A6F60) +/* 200B4 8001F4B4 24590008 */ addiu $t9, $v0, 0x8 +/* 200B8 8001F4B8 AC790000 */ sw $t9, 0x0($v1) +/* 200BC 8001F4BC AC400004 */ sw $zero, 0x4($v0) +/* 200C0 8001F4C0 AC4E0000 */ sw $t6, 0x0($v0) +/* 200C4 8001F4C4 240F0014 */ addiu $t7, $zero, 0x14 +/* 200C8 8001F4C8 24180400 */ addiu $t8, $zero, 0x400 +/* 200CC 8001F4CC 24190400 */ addiu $t9, $zero, 0x400 +/* 200D0 8001F4D0 AFB90020 */ sw $t9, 0x20($sp) +/* 200D4 8001F4D4 AFB8001C */ sw $t8, 0x1C($sp) +/* 200D8 8001F4D8 AFAF0010 */ sw $t7, 0x10($sp) +/* 200DC 8001F4DC 24846F60 */ addiu $a0, $a0, %lo(D_803A6F60) +/* 200E0 8001F4E0 24050081 */ addiu $a1, $zero, 0x81 +/* 200E4 8001F4E4 24060048 */ addiu $a2, $zero, 0x48 +/* 200E8 8001F4E8 24070040 */ addiu $a3, $zero, 0x40 +/* 200EC 8001F4EC AFA00014 */ sw $zero, 0x14($sp) +/* 200F0 8001F4F0 0C00843F */ jal func_800210FC +/* 200F4 8001F4F4 AFA00018 */ sw $zero, 0x18($sp) +/* 200F8 8001F4F8 3C04803A */ lui $a0, %hi(D_803A6F60) +/* 200FC 8001F4FC 240E0014 */ addiu $t6, $zero, 0x14 +/* 20100 8001F500 240F0014 */ addiu $t7, $zero, 0x14 +/* 20104 8001F504 24180400 */ addiu $t8, $zero, 0x400 +/* 20108 8001F508 24190400 */ addiu $t9, $zero, 0x400 +/* 2010C 8001F50C AFB90020 */ sw $t9, 0x20($sp) +/* 20110 8001F510 AFB8001C */ sw $t8, 0x1C($sp) +/* 20114 8001F514 AFAF0018 */ sw $t7, 0x18($sp) +/* 20118 8001F518 AFAE0010 */ sw $t6, 0x10($sp) +/* 2011C 8001F51C 24846F60 */ addiu $a0, $a0, %lo(D_803A6F60) +/* 20120 8001F520 24050081 */ addiu $a1, $zero, 0x81 +/* 20124 8001F524 2406005C */ addiu $a2, $zero, 0x5C +/* 20128 8001F528 24070040 */ addiu $a3, $zero, 0x40 +/* 2012C 8001F52C 0C00843F */ jal func_800210FC +/* 20130 8001F530 AFA00014 */ sw $zero, 0x14($sp) +/* 20134 8001F534 3C04803A */ lui $a0, %hi(D_803A6F60) +/* 20138 8001F538 240E0014 */ addiu $t6, $zero, 0x14 +/* 2013C 8001F53C 240F0028 */ addiu $t7, $zero, 0x28 +/* 20140 8001F540 24180400 */ addiu $t8, $zero, 0x400 +/* 20144 8001F544 24190400 */ addiu $t9, $zero, 0x400 +/* 20148 8001F548 AFB90020 */ sw $t9, 0x20($sp) +/* 2014C 8001F54C AFB8001C */ sw $t8, 0x1C($sp) +/* 20150 8001F550 AFAF0018 */ sw $t7, 0x18($sp) +/* 20154 8001F554 AFAE0010 */ sw $t6, 0x10($sp) +/* 20158 8001F558 24846F60 */ addiu $a0, $a0, %lo(D_803A6F60) +/* 2015C 8001F55C 24050081 */ addiu $a1, $zero, 0x81 +/* 20160 8001F560 24060070 */ addiu $a2, $zero, 0x70 +/* 20164 8001F564 24070040 */ addiu $a3, $zero, 0x40 +/* 20168 8001F568 0C00843F */ jal func_800210FC +/* 2016C 8001F56C AFA00014 */ sw $zero, 0x14($sp) +/* 20170 8001F570 3C04803A */ lui $a0, %hi(D_803A6F60) +/* 20174 8001F574 240E0014 */ addiu $t6, $zero, 0x14 +/* 20178 8001F578 240F003C */ addiu $t7, $zero, 0x3C +/* 2017C 8001F57C 24180400 */ addiu $t8, $zero, 0x400 +/* 20180 8001F580 24190400 */ addiu $t9, $zero, 0x400 +/* 20184 8001F584 AFB90020 */ sw $t9, 0x20($sp) +/* 20188 8001F588 AFB8001C */ sw $t8, 0x1C($sp) +/* 2018C 8001F58C AFAF0018 */ sw $t7, 0x18($sp) +/* 20190 8001F590 AFAE0010 */ sw $t6, 0x10($sp) +/* 20194 8001F594 24846F60 */ addiu $a0, $a0, %lo(D_803A6F60) +/* 20198 8001F598 24050081 */ addiu $a1, $zero, 0x81 +/* 2019C 8001F59C 24060084 */ addiu $a2, $zero, 0x84 +/* 201A0 8001F5A0 24070040 */ addiu $a3, $zero, 0x40 +/* 201A4 8001F5A4 0C00843F */ jal func_800210FC +/* 201A8 8001F5A8 AFA00014 */ sw $zero, 0x14($sp) +/* 201AC 8001F5AC 3C04803A */ lui $a0, %hi(gTex_HUD_and_Menu) +/* 201B0 8001F5B0 240E000A */ addiu $t6, $zero, 0xA +/* 201B4 8001F5B4 AFAE0010 */ sw $t6, 0x10($sp) +/* 201B8 8001F5B8 24846F40 */ addiu $a0, $a0, %lo(gTex_HUD_and_Menu) +/* 201BC 8001F5BC 24050020 */ addiu $a1, $zero, 0x20 +/* 201C0 8001F5C0 2406001D */ addiu $a2, $zero, 0x1D +/* 201C4 8001F5C4 0C00838B */ jal func_80020E2C +/* 201C8 8001F5C8 24070080 */ addiu $a3, $zero, 0x80 +/* 201CC 8001F5CC 3C038008 */ lui $v1, %hi(gMasterGfxPos) +/* 201D0 8001F5D0 2463B2FC */ addiu $v1, $v1, %lo(gMasterGfxPos) +/* 201D4 8001F5D4 8C620000 */ lw $v0, 0x0($v1) +/* 201D8 8001F5D8 3C19803A */ lui $t9, %hi(D_80399AB0) +/* 201DC 8001F5DC 27399AB0 */ addiu $t9, $t9, %lo(D_80399AB0) +/* 201E0 8001F5E0 244F0008 */ addiu $t7, $v0, 0x8 +/* 201E4 8001F5E4 AC6F0000 */ sw $t7, 0x0($v1) +/* 201E8 8001F5E8 3C18FD10 */ lui $t8, (0xFD100000 >> 16) +/* 201EC 8001F5EC AC580000 */ sw $t8, 0x0($v0) +/* 201F0 8001F5F0 AC590004 */ sw $t9, 0x4($v0) +/* 201F4 8001F5F4 8C620000 */ lw $v0, 0x0($v1) +/* 201F8 8001F5F8 3C0FE800 */ lui $t7, (0xE8000000 >> 16) +/* 201FC 8001F5FC 3C19F500 */ lui $t9, (0xF5000100 >> 16) +/* 20200 8001F600 244E0008 */ addiu $t6, $v0, 0x8 +/* 20204 8001F604 AC6E0000 */ sw $t6, 0x0($v1) +/* 20208 8001F608 AC400004 */ sw $zero, 0x4($v0) +/* 2020C 8001F60C AC4F0000 */ sw $t7, 0x0($v0) +/* 20210 8001F610 8C620000 */ lw $v0, 0x0($v1) +/* 20214 8001F614 37390100 */ ori $t9, $t9, (0xF5000100 & 0xFFFF) +/* 20218 8001F618 3C0E0700 */ lui $t6, (0x7000000 >> 16) +/* 2021C 8001F61C 24580008 */ addiu $t8, $v0, 0x8 +/* 20220 8001F620 AC780000 */ sw $t8, 0x0($v1) +/* 20224 8001F624 AC4E0004 */ sw $t6, 0x4($v0) +/* 20228 8001F628 AC590000 */ sw $t9, 0x0($v0) +/* 2022C 8001F62C 8C620000 */ lw $v0, 0x0($v1) +/* 20230 8001F630 3C18E600 */ lui $t8, (0xE6000000 >> 16) +/* 20234 8001F634 3C0EF000 */ lui $t6, (0xF0000000 >> 16) +/* 20238 8001F638 244F0008 */ addiu $t7, $v0, 0x8 +/* 2023C 8001F63C AC6F0000 */ sw $t7, 0x0($v1) +/* 20240 8001F640 AC400004 */ sw $zero, 0x4($v0) +/* 20244 8001F644 AC580000 */ sw $t8, 0x0($v0) +/* 20248 8001F648 8C620000 */ lw $v0, 0x0($v1) +/* 2024C 8001F64C 3C0F073F */ lui $t7, (0x73FC000 >> 16) +/* 20250 8001F650 35EFC000 */ ori $t7, $t7, (0x73FC000 & 0xFFFF) +/* 20254 8001F654 24590008 */ addiu $t9, $v0, 0x8 +/* 20258 8001F658 AC790000 */ sw $t9, 0x0($v1) +/* 2025C 8001F65C AC4F0004 */ sw $t7, 0x4($v0) +/* 20260 8001F660 AC4E0000 */ sw $t6, 0x0($v0) +/* 20264 8001F664 8C620000 */ lw $v0, 0x0($v1) +/* 20268 8001F668 3C19E700 */ lui $t9, (0xE7000000 >> 16) +/* 2026C 8001F66C 24040005 */ addiu $a0, $zero, 0x5 +/* 20270 8001F670 24580008 */ addiu $t8, $v0, 0x8 +/* 20274 8001F674 AC780000 */ sw $t8, 0x0($v1) +/* 20278 8001F678 AC400004 */ sw $zero, 0x4($v0) +/* 2027C 8001F67C AC590000 */ sw $t9, 0x0($v0) +/* 20280 8001F680 3C078008 */ lui $a3, %hi(D_8007BAA4) +/* 20284 8001F684 90E7BAA4 */ lbu $a3, %lo(D_8007BAA4)($a3) +/* 20288 8001F688 2405009D */ addiu $a1, $zero, 0x9D +/* 2028C 8001F68C 0C008353 */ jal func_80020D4C +/* 20290 8001F690 2406006C */ addiu $a2, $zero, 0x6C +/* 20294 8001F694 3C078008 */ lui $a3, %hi(D_8007BAA5) +/* 20298 8001F698 90E7BAA5 */ lbu $a3, %lo(D_8007BAA5)($a3) +/* 2029C 8001F69C 24040005 */ addiu $a0, $zero, 0x5 +/* 202A0 8001F6A0 2405008B */ addiu $a1, $zero, 0x8B +/* 202A4 8001F6A4 0C008353 */ jal func_80020D4C +/* 202A8 8001F6A8 2406007C */ addiu $a2, $zero, 0x7C +/* 202AC 8001F6AC 3C078008 */ lui $a3, %hi(D_8007BAA6) +/* 202B0 8001F6B0 90E7BAA6 */ lbu $a3, %lo(D_8007BAA6)($a3) +/* 202B4 8001F6B4 24040005 */ addiu $a0, $zero, 0x5 +/* 202B8 8001F6B8 2405009D */ addiu $a1, $zero, 0x9D +/* 202BC 8001F6BC 0C008353 */ jal func_80020D4C +/* 202C0 8001F6C0 2406008B */ addiu $a2, $zero, 0x8B +/* 202C4 8001F6C4 3C078008 */ lui $a3, %hi(D_8007BAA7) +/* 202C8 8001F6C8 90E7BAA7 */ lbu $a3, %lo(D_8007BAA7)($a3) +/* 202CC 8001F6CC 24040005 */ addiu $a0, $zero, 0x5 +/* 202D0 8001F6D0 240500AF */ addiu $a1, $zero, 0xAF +/* 202D4 8001F6D4 0C008353 */ jal func_80020D4C +/* 202D8 8001F6D8 2406007C */ addiu $a2, $zero, 0x7C +/* 202DC 8001F6DC 3C038009 */ lui $v1, %hi(D_80092876) +/* 202E0 8001F6E0 94632876 */ lhu $v1, %lo(D_80092876)($v1) +/* 202E4 8001F6E4 8FA50030 */ lw $a1, 0x30($sp) +/* 202E8 8001F6E8 306E0008 */ andi $t6, $v1, 0x8 +/* 202EC 8001F6EC 51C0000F */ beql $t6, $zero, .L8001F72C +/* 202F0 8001F6F0 306E0004 */ andi $t6, $v1, 0x4 +/* 202F4 8001F6F4 8CA20010 */ lw $v0, 0x10($a1) +/* 202F8 8001F6F8 90440024 */ lbu $a0, 0x24($v0) +/* 202FC 8001F6FC 28810032 */ slti $at, $a0, 0x32 +/* 20300 8001F700 10200009 */ beqz $at, .L8001F728 +/* 20304 8001F704 248F0001 */ addiu $t7, $a0, 0x1 +/* 20308 8001F708 3C038008 */ lui $v1, %hi(D_8007B2E4) +/* 2030C 8001F70C 2463B2E4 */ addiu $v1, $v1, %lo(D_8007B2E4) +/* 20310 8001F710 A04F0024 */ sb $t7, 0x24($v0) +/* 20314 8001F714 8C780000 */ lw $t8, 0x0($v1) +/* 20318 8001F718 2401FFF7 */ addiu $at, $zero, -0x9 +/* 2031C 8001F71C 0301C824 */ and $t9, $t8, $at +/* 20320 8001F720 10000030 */ b .L8001F7E4 +/* 20324 8001F724 AC790000 */ sw $t9, 0x0($v1) +.L8001F728: +/* 20328 8001F728 306E0004 */ andi $t6, $v1, 0x4 +.L8001F72C: +/* 2032C 8001F72C 11C0000E */ beqz $t6, .L8001F768 +/* 20330 8001F730 8FA50030 */ lw $a1, 0x30($sp) +/* 20334 8001F734 8CA20010 */ lw $v0, 0x10($a1) +/* 20338 8001F738 90440026 */ lbu $a0, 0x26($v0) +/* 2033C 8001F73C 28810032 */ slti $at, $a0, 0x32 +/* 20340 8001F740 10200009 */ beqz $at, .L8001F768 +/* 20344 8001F744 248F0001 */ addiu $t7, $a0, 0x1 +/* 20348 8001F748 3C038008 */ lui $v1, %hi(D_8007B2E4) +/* 2034C 8001F74C 2463B2E4 */ addiu $v1, $v1, %lo(D_8007B2E4) +/* 20350 8001F750 A04F0026 */ sb $t7, 0x26($v0) +/* 20354 8001F754 8C780000 */ lw $t8, 0x0($v1) +/* 20358 8001F758 2401FFF7 */ addiu $at, $zero, -0x9 +/* 2035C 8001F75C 0301C824 */ and $t9, $t8, $at +/* 20360 8001F760 10000020 */ b .L8001F7E4 +/* 20364 8001F764 AC790000 */ sw $t9, 0x0($v1) +.L8001F768: +/* 20368 8001F768 306E0001 */ andi $t6, $v1, 0x1 +/* 2036C 8001F76C 51C0000F */ beql $t6, $zero, .L8001F7AC +/* 20370 8001F770 306E0002 */ andi $t6, $v1, 0x2 +/* 20374 8001F774 8CA20010 */ lw $v0, 0x10($a1) +/* 20378 8001F778 90440027 */ lbu $a0, 0x27($v0) +/* 2037C 8001F77C 28810032 */ slti $at, $a0, 0x32 +/* 20380 8001F780 10200009 */ beqz $at, .L8001F7A8 +/* 20384 8001F784 248F0001 */ addiu $t7, $a0, 0x1 +/* 20388 8001F788 3C038008 */ lui $v1, %hi(D_8007B2E4) +/* 2038C 8001F78C 2463B2E4 */ addiu $v1, $v1, %lo(D_8007B2E4) +/* 20390 8001F790 A04F0027 */ sb $t7, 0x27($v0) +/* 20394 8001F794 8C780000 */ lw $t8, 0x0($v1) +/* 20398 8001F798 2401FFF7 */ addiu $at, $zero, -0x9 +/* 2039C 8001F79C 0301C824 */ and $t9, $t8, $at +/* 203A0 8001F7A0 10000010 */ b .L8001F7E4 +/* 203A4 8001F7A4 AC790000 */ sw $t9, 0x0($v1) +.L8001F7A8: +/* 203A8 8001F7A8 306E0002 */ andi $t6, $v1, 0x2 +.L8001F7AC: +/* 203AC 8001F7AC 11C0000D */ beqz $t6, .L8001F7E4 +/* 203B0 8001F7B0 00000000 */ nop +/* 203B4 8001F7B4 8CA20010 */ lw $v0, 0x10($a1) +/* 203B8 8001F7B8 3C038008 */ lui $v1, %hi(D_8007B2E4) +/* 203BC 8001F7BC 2463B2E4 */ addiu $v1, $v1, %lo(D_8007B2E4) +/* 203C0 8001F7C0 90440025 */ lbu $a0, 0x25($v0) +/* 203C4 8001F7C4 28810032 */ slti $at, $a0, 0x32 +/* 203C8 8001F7C8 10200006 */ beqz $at, .L8001F7E4 +/* 203CC 8001F7CC 248F0001 */ addiu $t7, $a0, 0x1 +/* 203D0 8001F7D0 A04F0025 */ sb $t7, 0x25($v0) +/* 203D4 8001F7D4 8C780000 */ lw $t8, 0x0($v1) +/* 203D8 8001F7D8 2401FFF7 */ addiu $at, $zero, -0x9 +/* 203DC 8001F7DC 0301C824 */ and $t9, $t8, $at +/* 203E0 8001F7E0 AC790000 */ sw $t9, 0x0($v1) +.L8001F7E4: +/* 203E4 8001F7E4 3C038008 */ lui $v1, %hi(D_8007B2E4) +/* 203E8 8001F7E8 2463B2E4 */ addiu $v1, $v1, %lo(D_8007B2E4) +/* 203EC 8001F7EC 8C6E0000 */ lw $t6, 0x0($v1) +/* 203F0 8001F7F0 31CF0008 */ andi $t7, $t6, 0x8 +/* 203F4 8001F7F4 15E00004 */ bnez $t7, .L8001F808 +/* 203F8 8001F7F8 00002025 */ or $a0, $zero, $zero +/* 203FC 8001F7FC 24050004 */ addiu $a1, $zero, 0x4 +/* 20400 8001F800 0C009A35 */ jal func_800268D4 +/* 20404 8001F804 240600FF */ addiu $a2, $zero, 0xFF +.L8001F808: +/* 20408 8001F808 8FBF002C */ lw $ra, 0x2C($sp) +/* 2040C 8001F80C 27BD0030 */ addiu $sp, $sp, 0x30 +/* 20410 8001F810 03E00008 */ jr $ra +/* 20414 8001F814 00000000 */ nop + +glabel func_8001F818 +/* 20418 8001F818 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 2041C 8001F81C AFBF0024 */ sw $ra, 0x24($sp) +/* 20420 8001F820 3C0E8008 */ lui $t6, %hi(D_8007BA74) +/* 20424 8001F824 8DCEBA74 */ lw $t6, %lo(D_8007BA74)($t6) +/* 20428 8001F828 3C198008 */ lui $t9, %hi(D_8007BD30) +/* 2042C 8001F82C 2739BD30 */ addiu $t9, $t9, %lo(D_8007BD30) +/* 20430 8001F830 000E7940 */ sll $t7, $t6, 5 +/* 20434 8001F834 01EE7821 */ addu $t7, $t7, $t6 +/* 20438 8001F838 000F7880 */ sll $t7, $t7, 2 +/* 2043C 8001F83C 25F8FF90 */ addiu $t8, $t7, -0x70 +/* 20440 8001F840 03191021 */ addu $v0, $t8, $t9 +/* 20444 8001F844 C4440004 */ lwc1 $f4, 0x4($v0) +/* 20448 8001F848 3C01402C */ lui $at, (0x402C0000 >> 16) +/* 2044C 8001F84C 44814800 */ mtc1 $at, $f9 +/* 20450 8001F850 44804000 */ mtc1 $zero, $f8 +/* 20454 8001F854 460021A1 */ cvt.d.s $f6, $f4 +/* 20458 8001F858 3C0A8009 */ lui $t2, %hi(D_8008C644) +/* 2045C 8001F85C 46283280 */ add.d $f10, $f6, $f8 +/* 20460 8001F860 254AC644 */ addiu $t2, $t2, %lo(D_8008C644) +/* 20464 8001F864 C44C0000 */ lwc1 $f12, 0x0($v0) +/* 20468 8001F868 8C460008 */ lw $a2, 0x8($v0) +/* 2046C 8001F86C AFAA0010 */ sw $t2, 0x10($sp) +/* 20470 8001F870 462053A0 */ cvt.s.d $f14, $f10 +/* 20474 8001F874 0C00904F */ jal func_8002413C +/* 20478 8001F878 27A70034 */ addiu $a3, $sp, 0x34 +/* 2047C 8001F87C 3C098009 */ lui $t1, %hi(D_8008C644) +/* 20480 8001F880 10400019 */ beqz $v0, .L8001F8E8 +/* 20484 8001F884 2529C644 */ addiu $t1, $t1, %lo(D_8008C644) +/* 20488 8001F888 3C088008 */ lui $t0, %hi(gMasterGfxPos) +/* 2048C 8001F88C 2508B2FC */ addiu $t0, $t0, %lo(gMasterGfxPos) +/* 20490 8001F890 8D030000 */ lw $v1, 0x0($t0) +/* 20494 8001F894 3C0D803B */ lui $t5, %hi(D_803A8B90) +/* 20498 8001F898 25AD8B90 */ addiu $t5, $t5, %lo(D_803A8B90) +/* 2049C 8001F89C 246B0008 */ addiu $t3, $v1, 0x8 +/* 204A0 8001F8A0 AD0B0000 */ sw $t3, 0x0($t0) +/* 204A4 8001F8A4 3C0C0600 */ lui $t4, (0x6000000 >> 16) +/* 204A8 8001F8A8 AC6C0000 */ sw $t4, 0x0($v1) +/* 204AC 8001F8AC AC6D0004 */ sw $t5, 0x4($v1) +/* 204B0 8001F8B0 8D250000 */ lw $a1, 0x0($t1) +/* 204B4 8001F8B4 240E0400 */ addiu $t6, $zero, 0x400 +/* 204B8 8001F8B8 240F0400 */ addiu $t7, $zero, 0x400 +/* 204BC 8001F8BC AFAF001C */ sw $t7, 0x1C($sp) +/* 204C0 8001F8C0 AFAE0018 */ sw $t6, 0x18($sp) +/* 204C4 8001F8C4 8FA40034 */ lw $a0, 0x34($sp) +/* 204C8 8001F8C8 24060040 */ addiu $a2, $zero, 0x40 +/* 204CC 8001F8CC 2407001D */ addiu $a3, $zero, 0x1D +/* 204D0 8001F8D0 AFA00010 */ sw $zero, 0x10($sp) +/* 204D4 8001F8D4 AFA00014 */ sw $zero, 0x14($sp) +/* 204D8 8001F8D8 0C0083E3 */ jal func_80020F8C +/* 204DC 8001F8DC 24A5FFE2 */ addiu $a1, $a1, -0x1E +/* 204E0 8001F8E0 10000004 */ b .L8001F8F4 +/* 204E4 8001F8E4 8FBF0024 */ lw $ra, 0x24($sp) +.L8001F8E8: +/* 204E8 8001F8E8 241800F0 */ addiu $t8, $zero, 0xF0 +/* 204EC 8001F8EC AD380000 */ sw $t8, 0x0($t1) +/* 204F0 8001F8F0 8FBF0024 */ lw $ra, 0x24($sp) +.L8001F8F4: +/* 204F4 8001F8F4 27BD0038 */ addiu $sp, $sp, 0x38 +/* 204F8 8001F8F8 03E00008 */ jr $ra +/* 204FC 8001F8FC 00000000 */ nop + +glabel func_8001F900 +/* 20500 8001F900 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 20504 8001F904 3C028008 */ lui $v0, %hi(D_8007BAB8) +/* 20508 8001F908 2442BAB8 */ addiu $v0, $v0, %lo(D_8007BAB8) +/* 2050C 8001F90C AFBF0024 */ sw $ra, 0x24($sp) +/* 20510 8001F910 C4440018 */ lwc1 $f4, 0x18($v0) +/* 20514 8001F914 3C014026 */ lui $at, (0x40260000 >> 16) +/* 20518 8001F918 44814800 */ mtc1 $at, $f9 +/* 2051C 8001F91C 44804000 */ mtc1 $zero, $f8 +/* 20520 8001F920 460021A1 */ cvt.d.s $f6, $f4 +/* 20524 8001F924 27AE0030 */ addiu $t6, $sp, 0x30 +/* 20528 8001F928 46283280 */ add.d $f10, $f6, $f8 +/* 2052C 8001F92C AFAE0010 */ sw $t6, 0x10($sp) +/* 20530 8001F930 C44C0014 */ lwc1 $f12, 0x14($v0) +/* 20534 8001F934 8C46001C */ lw $a2, 0x1C($v0) +/* 20538 8001F938 462053A0 */ cvt.s.d $f14, $f10 +/* 2053C 8001F93C 0C00904F */ jal func_8002413C +/* 20540 8001F940 27A70034 */ addiu $a3, $sp, 0x34 +/* 20544 8001F944 10400016 */ beqz $v0, .L8001F9A0 +/* 20548 8001F948 3C088008 */ lui $t0, %hi(gMasterGfxPos) +/* 2054C 8001F94C 2508B2FC */ addiu $t0, $t0, %lo(gMasterGfxPos) +/* 20550 8001F950 8D030000 */ lw $v1, 0x0($t0) +/* 20554 8001F954 3C19803B */ lui $t9, %hi(D_803A8C80) +/* 20558 8001F958 27398C80 */ addiu $t9, $t9, %lo(D_803A8C80) +/* 2055C 8001F95C 246F0008 */ addiu $t7, $v1, 0x8 +/* 20560 8001F960 AD0F0000 */ sw $t7, 0x0($t0) +/* 20564 8001F964 3C180600 */ lui $t8, (0x6000000 >> 16) +/* 20568 8001F968 AC780000 */ sw $t8, 0x0($v1) +/* 2056C 8001F96C AC790004 */ sw $t9, 0x4($v1) +/* 20570 8001F970 8FA50030 */ lw $a1, 0x30($sp) +/* 20574 8001F974 24090400 */ addiu $t1, $zero, 0x400 +/* 20578 8001F978 240A0400 */ addiu $t2, $zero, 0x400 +/* 2057C 8001F97C AFAA001C */ sw $t2, 0x1C($sp) +/* 20580 8001F980 AFA90018 */ sw $t1, 0x18($sp) +/* 20584 8001F984 8FA40034 */ lw $a0, 0x34($sp) +/* 20588 8001F988 24060018 */ addiu $a2, $zero, 0x18 +/* 2058C 8001F98C 2407001E */ addiu $a3, $zero, 0x1E +/* 20590 8001F990 AFA00010 */ sw $zero, 0x10($sp) +/* 20594 8001F994 AFA00014 */ sw $zero, 0x14($sp) +/* 20598 8001F998 0C0083E3 */ jal func_80020F8C +/* 2059C 8001F99C 24A5FFE2 */ addiu $a1, $a1, -0x1E +.L8001F9A0: +/* 205A0 8001F9A0 8FBF0024 */ lw $ra, 0x24($sp) +/* 205A4 8001F9A4 27BD0038 */ addiu $sp, $sp, 0x38 +/* 205A8 8001F9A8 03E00008 */ jr $ra +/* 205AC 8001F9AC 00000000 */ nop + +glabel func_8001F9B0 +/* 205B0 8001F9B0 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 205B4 8001F9B4 3C028008 */ lui $v0, %hi(D_8007BAB8) +/* 205B8 8001F9B8 2442BAB8 */ addiu $v0, $v0, %lo(D_8007BAB8) +/* 205BC 8001F9BC AFBF0024 */ sw $ra, 0x24($sp) +/* 205C0 8001F9C0 C4440018 */ lwc1 $f4, 0x18($v0) +/* 205C4 8001F9C4 3C014026 */ lui $at, (0x40260000 >> 16) +/* 205C8 8001F9C8 44814800 */ mtc1 $at, $f9 +/* 205CC 8001F9CC 44804000 */ mtc1 $zero, $f8 +/* 205D0 8001F9D0 460021A1 */ cvt.d.s $f6, $f4 +/* 205D4 8001F9D4 27AE0030 */ addiu $t6, $sp, 0x30 +/* 205D8 8001F9D8 46283280 */ add.d $f10, $f6, $f8 +/* 205DC 8001F9DC AFAE0010 */ sw $t6, 0x10($sp) +/* 205E0 8001F9E0 C44C0014 */ lwc1 $f12, 0x14($v0) +/* 205E4 8001F9E4 8C46001C */ lw $a2, 0x1C($v0) +/* 205E8 8001F9E8 462053A0 */ cvt.s.d $f14, $f10 +/* 205EC 8001F9EC 0C00904F */ jal func_8002413C +/* 205F0 8001F9F0 27A70034 */ addiu $a3, $sp, 0x34 +/* 205F4 8001F9F4 10400016 */ beqz $v0, .L8001FA50 +/* 205F8 8001F9F8 3C088008 */ lui $t0, %hi(gMasterGfxPos) +/* 205FC 8001F9FC 2508B2FC */ addiu $t0, $t0, %lo(gMasterGfxPos) +/* 20600 8001FA00 8D030000 */ lw $v1, 0x0($t0) +/* 20604 8001FA04 3C19803B */ lui $t9, %hi(gExclamationMarkPalette) +/* 20608 8001FA08 27398C08 */ addiu $t9, $t9, %lo(gExclamationMarkPalette) +/* 2060C 8001FA0C 246F0008 */ addiu $t7, $v1, 0x8 +/* 20610 8001FA10 AD0F0000 */ sw $t7, 0x0($t0) +/* 20614 8001FA14 3C180600 */ lui $t8, (0x6000000 >> 16) +/* 20618 8001FA18 AC780000 */ sw $t8, 0x0($v1) +/* 2061C 8001FA1C AC790004 */ sw $t9, 0x4($v1) +/* 20620 8001FA20 8FA50030 */ lw $a1, 0x30($sp) +/* 20624 8001FA24 24090400 */ addiu $t1, $zero, 0x400 +/* 20628 8001FA28 240A0400 */ addiu $t2, $zero, 0x400 +/* 2062C 8001FA2C AFAA001C */ sw $t2, 0x1C($sp) +/* 20630 8001FA30 AFA90018 */ sw $t1, 0x18($sp) +/* 20634 8001FA34 8FA40034 */ lw $a0, 0x34($sp) +/* 20638 8001FA38 24060010 */ addiu $a2, $zero, 0x10 +/* 2063C 8001FA3C 2407001E */ addiu $a3, $zero, 0x1E +/* 20640 8001FA40 AFA00010 */ sw $zero, 0x10($sp) +/* 20644 8001FA44 AFA00014 */ sw $zero, 0x14($sp) +/* 20648 8001FA48 0C0083E3 */ jal func_80020F8C +/* 2064C 8001FA4C 24A5FFE2 */ addiu $a1, $a1, -0x1E +.L8001FA50: +/* 20650 8001FA50 8FBF0024 */ lw $ra, 0x24($sp) +/* 20654 8001FA54 27BD0038 */ addiu $sp, $sp, 0x38 +/* 20658 8001FA58 03E00008 */ jr $ra +/* 2065C 8001FA5C 00000000 */ nop + +glabel func_8001FA60 +/* 20660 8001FA60 27BDFFB8 */ addiu $sp, $sp, -0x48 +/* 20664 8001FA64 AFA40048 */ sw $a0, 0x48($sp) +/* 20668 8001FA68 308EFFFF */ andi $t6, $a0, 0xFFFF +/* 2066C 8001FA6C 01C02025 */ or $a0, $t6, $zero +/* 20670 8001FA70 AFBF0024 */ sw $ra, 0x24($sp) +/* 20674 8001FA74 000478C0 */ sll $t7, $a0, 3 +/* 20678 8001FA78 01E47821 */ addu $t7, $t7, $a0 +/* 2067C 8001FA7C 000F7880 */ sll $t7, $t7, 2 +/* 20680 8001FA80 01E47821 */ addu $t7, $t7, $a0 +/* 20684 8001FA84 3C188008 */ lui $t8, %hi(D_8007C998) +/* 20688 8001FA88 2718C998 */ addiu $t8, $t8, %lo(D_8007C998) +/* 2068C 8001FA8C 000F78C0 */ sll $t7, $t7, 3 +/* 20690 8001FA90 01F81821 */ addu $v1, $t7, $t8 +/* 20694 8001FA94 8C790088 */ lw $t9, 0x88($v1) +/* 20698 8001FA98 24010001 */ addiu $at, $zero, 0x1 +/* 2069C 8001FA9C 24620024 */ addiu $v0, $v1, 0x24 +/* 206A0 8001FAA0 97290000 */ lhu $t1, 0x0($t9) +/* 206A4 8001FAA4 27A70044 */ addiu $a3, $sp, 0x44 +/* 206A8 8001FAA8 27AC0040 */ addiu $t4, $sp, 0x40 +/* 206AC 8001FAAC 55210006 */ bnel $t1, $at, .L8001FAC8 +/* 206B0 8001FAB0 8C440064 */ lw $a0, 0x64($v0) +/* 206B4 8001FAB4 24620024 */ addiu $v0, $v1, 0x24 +/* 206B8 8001FAB8 8C4A0068 */ lw $t2, 0x68($v0) +/* 206BC 8001FABC 10000015 */ b .L8001FB14 +/* 206C0 8001FAC0 C54E0094 */ lwc1 $f14, 0x94($t2) +/* 206C4 8001FAC4 8C440064 */ lw $a0, 0x64($v0) +.L8001FAC8: +/* 206C8 8001FAC8 24010002 */ addiu $at, $zero, 0x2 +/* 206CC 8001FACC 948B0000 */ lhu $t3, 0x0($a0) +/* 206D0 8001FAD0 5561000C */ bnel $t3, $at, .L8001FB04 +/* 206D4 8001FAD4 C484001C */ lwc1 $f4, 0x1C($a0) +/* 206D8 8001FAD8 C4460024 */ lwc1 $f6, 0x24($v0) +/* 206DC 8001FADC 3C018007 */ lui $at, %hi(D_800716C0) +/* 206E0 8001FAE0 D42416C0 */ ldc1 $f4, %lo(D_800716C0)($at) +/* 206E4 8001FAE4 46003221 */ cvt.d.s $f8, $f6 +/* 206E8 8001FAE8 C4500004 */ lwc1 $f16, 0x4($v0) +/* 206EC 8001FAEC 46282282 */ mul.d $f10, $f4, $f8 +/* 206F0 8001FAF0 460084A1 */ cvt.d.s $f18, $f16 +/* 206F4 8001FAF4 462A9180 */ add.d $f6, $f18, $f10 +/* 206F8 8001FAF8 10000006 */ b .L8001FB14 +/* 206FC 8001FAFC 462033A0 */ cvt.s.d $f14, $f6 +/* 20700 8001FB00 C484001C */ lwc1 $f4, 0x1C($a0) +.L8001FB04: +/* 20704 8001FB04 C4480024 */ lwc1 $f8, 0x24($v0) +/* 20708 8001FB08 C4520004 */ lwc1 $f18, 0x4($v0) +/* 2070C 8001FB0C 46082402 */ mul.s $f16, $f4, $f8 +/* 20710 8001FB10 46109380 */ add.s $f14, $f18, $f16 +.L8001FB14: +/* 20714 8001FB14 C44C0000 */ lwc1 $f12, 0x0($v0) +/* 20718 8001FB18 8C460008 */ lw $a2, 0x8($v0) +/* 2071C 8001FB1C 0C00904F */ jal func_8002413C +/* 20720 8001FB20 AFAC0010 */ sw $t4, 0x10($sp) +/* 20724 8001FB24 10400017 */ beqz $v0, .L8001FB84 +/* 20728 8001FB28 3C088008 */ lui $t0, %hi(gMasterGfxPos) +/* 2072C 8001FB2C 2508B2FC */ addiu $t0, $t0, %lo(gMasterGfxPos) +/* 20730 8001FB30 8D030000 */ lw $v1, 0x0($t0) +/* 20734 8001FB34 3C0F803B */ lui $t7, %hi(gDL_StaffIcon) +/* 20738 8001FB38 25EF8CF8 */ addiu $t7, $t7, %lo(gDL_StaffIcon) +/* 2073C 8001FB3C 246D0008 */ addiu $t5, $v1, 0x8 +/* 20740 8001FB40 AD0D0000 */ sw $t5, 0x0($t0) +/* 20744 8001FB44 3C0E0600 */ lui $t6, (0x6000000 >> 16) +/* 20748 8001FB48 AC6E0000 */ sw $t6, 0x0($v1) +/* 2074C 8001FB4C AC6F0004 */ sw $t7, 0x4($v1) +/* 20750 8001FB50 8FA40044 */ lw $a0, 0x44($sp) +/* 20754 8001FB54 8FA50040 */ lw $a1, 0x40($sp) +/* 20758 8001FB58 24180400 */ addiu $t8, $zero, 0x400 +/* 2075C 8001FB5C 24190400 */ addiu $t9, $zero, 0x400 +/* 20760 8001FB60 AFB9001C */ sw $t9, 0x1C($sp) +/* 20764 8001FB64 AFB80018 */ sw $t8, 0x18($sp) +/* 20768 8001FB68 24060018 */ addiu $a2, $zero, 0x18 +/* 2076C 8001FB6C 2407002A */ addiu $a3, $zero, 0x2A +/* 20770 8001FB70 AFA00010 */ sw $zero, 0x10($sp) +/* 20774 8001FB74 AFA00014 */ sw $zero, 0x14($sp) +/* 20778 8001FB78 2484FFFC */ addiu $a0, $a0, -0x4 +/* 2077C 8001FB7C 0C0083E3 */ jal func_80020F8C +/* 20780 8001FB80 24A5FFD6 */ addiu $a1, $a1, -0x2A +.L8001FB84: +/* 20784 8001FB84 8FBF0024 */ lw $ra, 0x24($sp) +/* 20788 8001FB88 27BD0048 */ addiu $sp, $sp, 0x48 +/* 2078C 8001FB8C 03E00008 */ jr $ra +/* 20790 8001FB90 00000000 */ nop + +glabel func_8001FB94 +/* 20794 8001FB94 27BDFFA0 */ addiu $sp, $sp, -0x60 +/* 20798 8001FB98 3C028008 */ lui $v0, %hi(D_8007BAB8) +/* 2079C 8001FB9C 2442BAB8 */ addiu $v0, $v0, %lo(D_8007BAB8) +/* 207A0 8001FBA0 AFBF002C */ sw $ra, 0x2C($sp) +/* 207A4 8001FBA4 8C4E0078 */ lw $t6, 0x78($v0) +/* 207A8 8001FBA8 C4460038 */ lwc1 $f6, 0x38($v0) +/* 207AC 8001FBAC C4480018 */ lwc1 $f8, 0x18($v0) +/* 207B0 8001FBB0 C5C4001C */ lwc1 $f4, 0x1C($t6) +/* 207B4 8001FBB4 27AF0058 */ addiu $t7, $sp, 0x58 +/* 207B8 8001FBB8 AFAF0010 */ sw $t7, 0x10($sp) +/* 207BC 8001FBBC 46062002 */ mul.s $f0, $f4, $f6 +/* 207C0 8001FBC0 C44C0014 */ lwc1 $f12, 0x14($v0) +/* 207C4 8001FBC4 8C46001C */ lw $a2, 0x1C($v0) +/* 207C8 8001FBC8 27A7005C */ addiu $a3, $sp, 0x5C +/* 207CC 8001FBCC 0C00904F */ jal func_8002413C +/* 207D0 8001FBD0 46004380 */ add.s $f14, $f8, $f0 +/* 207D4 8001FBD4 10400044 */ beqz $v0, .L8001FCE8 +/* 207D8 8001FBD8 3C038008 */ lui $v1, %hi(gMasterGfxPos) +/* 207DC 8001FBDC 2463B2FC */ addiu $v1, $v1, %lo(gMasterGfxPos) +/* 207E0 8001FBE0 8C620000 */ lw $v0, 0x0($v1) +/* 207E4 8001FBE4 3C19E700 */ lui $t9, (0xE7000000 >> 16) +/* 207E8 8001FBE8 3C0FFD10 */ lui $t7, (0xFD100000 >> 16) +/* 207EC 8001FBEC 24580008 */ addiu $t8, $v0, 0x8 +/* 207F0 8001FBF0 AC780000 */ sw $t8, 0x0($v1) +/* 207F4 8001FBF4 AC400004 */ sw $zero, 0x4($v0) +/* 207F8 8001FBF8 AC590000 */ sw $t9, 0x0($v0) +/* 207FC 8001FBFC 8C620000 */ lw $v0, 0x0($v1) +/* 20800 8001FC00 3C18803A */ lui $t8, %hi(gBattleStatusPal) +/* 20804 8001FC04 27182960 */ addiu $t8, $t8, %lo(gBattleStatusPal) +/* 20808 8001FC08 244E0008 */ addiu $t6, $v0, 0x8 +/* 2080C 8001FC0C AC6E0000 */ sw $t6, 0x0($v1) +/* 20810 8001FC10 AC580004 */ sw $t8, 0x4($v0) +/* 20814 8001FC14 AC4F0000 */ sw $t7, 0x0($v0) +/* 20818 8001FC18 8C620000 */ lw $v0, 0x0($v1) +/* 2081C 8001FC1C 3C0EE800 */ lui $t6, (0xE8000000 >> 16) +/* 20820 8001FC20 3C18F500 */ lui $t8, (0xF5000100 >> 16) +/* 20824 8001FC24 24590008 */ addiu $t9, $v0, 0x8 +/* 20828 8001FC28 AC790000 */ sw $t9, 0x0($v1) +/* 2082C 8001FC2C AC400004 */ sw $zero, 0x4($v0) +/* 20830 8001FC30 AC4E0000 */ sw $t6, 0x0($v0) +/* 20834 8001FC34 8C620000 */ lw $v0, 0x0($v1) +/* 20838 8001FC38 37180100 */ ori $t8, $t8, (0xF5000100 & 0xFFFF) +/* 2083C 8001FC3C 3C190700 */ lui $t9, (0x7000000 >> 16) +/* 20840 8001FC40 244F0008 */ addiu $t7, $v0, 0x8 +/* 20844 8001FC44 AC6F0000 */ sw $t7, 0x0($v1) +/* 20848 8001FC48 AC590004 */ sw $t9, 0x4($v0) +/* 2084C 8001FC4C AC580000 */ sw $t8, 0x0($v0) +/* 20850 8001FC50 8C620000 */ lw $v0, 0x0($v1) +/* 20854 8001FC54 3C0FE600 */ lui $t7, (0xE6000000 >> 16) +/* 20858 8001FC58 3C19F000 */ lui $t9, (0xF0000000 >> 16) +/* 2085C 8001FC5C 244E0008 */ addiu $t6, $v0, 0x8 +/* 20860 8001FC60 AC6E0000 */ sw $t6, 0x0($v1) +/* 20864 8001FC64 AC400004 */ sw $zero, 0x4($v0) +/* 20868 8001FC68 AC4F0000 */ sw $t7, 0x0($v0) +/* 2086C 8001FC6C 8C620000 */ lw $v0, 0x0($v1) +/* 20870 8001FC70 3C0E073F */ lui $t6, (0x73FC000 >> 16) +/* 20874 8001FC74 35CEC000 */ ori $t6, $t6, (0x73FC000 & 0xFFFF) +/* 20878 8001FC78 24580008 */ addiu $t8, $v0, 0x8 +/* 2087C 8001FC7C AC780000 */ sw $t8, 0x0($v1) +/* 20880 8001FC80 AC4E0004 */ sw $t6, 0x4($v0) +/* 20884 8001FC84 AC590000 */ sw $t9, 0x0($v0) +/* 20888 8001FC88 8C620000 */ lw $v0, 0x0($v1) +/* 2088C 8001FC8C 3C18E700 */ lui $t8, (0xE7000000 >> 16) +/* 20890 8001FC90 3C04803A */ lui $a0, %hi(D_803A6F70) +/* 20894 8001FC94 244F0008 */ addiu $t7, $v0, 0x8 +/* 20898 8001FC98 AC6F0000 */ sw $t7, 0x0($v1) +/* 2089C 8001FC9C AC400004 */ sw $zero, 0x4($v0) +/* 208A0 8001FCA0 AC580000 */ sw $t8, 0x0($v0) +/* 208A4 8001FCA4 2419000F */ addiu $t9, $zero, 0xF +/* 208A8 8001FCA8 8FA5005C */ lw $a1, 0x5C($sp) +/* 208AC 8001FCAC 8FA60058 */ lw $a2, 0x58($sp) +/* 208B0 8001FCB0 AFB90010 */ sw $t9, 0x10($sp) +/* 208B4 8001FCB4 24190400 */ addiu $t9, $zero, 0x400 +/* 208B8 8001FCB8 240E0051 */ addiu $t6, $zero, 0x51 +/* 208BC 8001FCBC 240F0031 */ addiu $t7, $zero, 0x31 +/* 208C0 8001FCC0 24180400 */ addiu $t8, $zero, 0x400 +/* 208C4 8001FCC4 AFB8001C */ sw $t8, 0x1C($sp) +/* 208C8 8001FCC8 AFAF0018 */ sw $t7, 0x18($sp) +/* 208CC 8001FCCC AFAE0014 */ sw $t6, 0x14($sp) +/* 208D0 8001FCD0 AFB90020 */ sw $t9, 0x20($sp) +/* 208D4 8001FCD4 24846F70 */ addiu $a0, $a0, %lo(D_803A6F70) +/* 208D8 8001FCD8 2407002E */ addiu $a3, $zero, 0x2E +/* 208DC 8001FCDC 24A5FFE9 */ addiu $a1, $a1, -0x17 +/* 208E0 8001FCE0 0C00843F */ jal func_800210FC +/* 208E4 8001FCE4 24C6FFF1 */ addiu $a2, $a2, -0xF +.L8001FCE8: +/* 208E8 8001FCE8 8FBF002C */ lw $ra, 0x2C($sp) +/* 208EC 8001FCEC 27BD0060 */ addiu $sp, $sp, 0x60 +/* 208F0 8001FCF0 03E00008 */ jr $ra +/* 208F4 8001FCF4 00000000 */ nop + +glabel func_8001FCF8 +/* 208F8 8001FCF8 27BDFFA8 */ addiu $sp, $sp, -0x58 +/* 208FC 8001FCFC AFB00030 */ sw $s0, 0x30($sp) +/* 20900 8001FD00 AFA5005C */ sw $a1, 0x5C($sp) +/* 20904 8001FD04 AFA60060 */ sw $a2, 0x60($sp) +/* 20908 8001FD08 AFA70064 */ sw $a3, 0x64($sp) +/* 2090C 8001FD0C 30AEFFFF */ andi $t6, $a1, 0xFFFF +/* 20910 8001FD10 30CFFFFF */ andi $t7, $a2, 0xFFFF +/* 20914 8001FD14 0007C400 */ sll $t8, $a3, 16 +/* 20918 8001FD18 00183C03 */ sra $a3, $t8, 16 +/* 2091C 8001FD1C 01E03025 */ or $a2, $t7, $zero +/* 20920 8001FD20 01C02825 */ or $a1, $t6, $zero +/* 20924 8001FD24 00808025 */ or $s0, $a0, $zero +/* 20928 8001FD28 AFBF0034 */ sw $ra, 0x34($sp) +/* 2092C 8001FD2C 3C038005 */ lui $v1, %hi(D_8004D2CC) +/* 20930 8001FD30 8E0A0068 */ lw $t2, 0x68($s0) +/* 20934 8001FD34 2463D2CC */ addiu $v1, $v1, %lo(D_8004D2CC) +/* 20938 8001FD38 00001025 */ or $v0, $zero, $zero +/* 2093C 8001FD3C 00A04025 */ or $t0, $a1, $zero +.L8001FD40: +/* 20940 8001FD40 946C0000 */ lhu $t4, 0x0($v1) +/* 20944 8001FD44 01886824 */ and $t5, $t4, $t0 +/* 20948 8001FD48 51A00007 */ beql $t5, $zero, .L8001FD68 +/* 2094C 8001FD4C 24420001 */ addiu $v0, $v0, 0x1 +/* 20950 8001FD50 01421821 */ addu $v1, $t2, $v0 +/* 20954 8001FD54 A0660012 */ sb $a2, 0x12($v1) +/* 20958 8001FD58 A0670022 */ sb $a3, 0x22($v1) +/* 2095C 8001FD5C 10000006 */ b .L8001FD78 +/* 20960 8001FD60 00001025 */ or $v0, $zero, $zero +/* 20964 8001FD64 24420001 */ addiu $v0, $v0, 0x1 +.L8001FD68: +/* 20968 8001FD68 2C410007 */ sltiu $at, $v0, 0x7 +/* 2096C 8001FD6C 1420FFF4 */ bnez $at, .L8001FD40 +/* 20970 8001FD70 24630002 */ addiu $v1, $v1, 0x2 +/* 20974 8001FD74 00001025 */ or $v0, $zero, $zero +.L8001FD78: +/* 20978 8001FD78 3C038005 */ lui $v1, %hi(D_8004D2DC) +/* 2097C 8001FD7C 2463D2DC */ addiu $v1, $v1, %lo(D_8004D2DC) +/* 20980 8001FD80 24040004 */ addiu $a0, $zero, 0x4 +.L8001FD84: +/* 20984 8001FD84 946E0000 */ lhu $t6, 0x0($v1) +/* 20988 8001FD88 0002C080 */ sll $t8, $v0, 2 +/* 2098C 8001FD8C 01584821 */ addu $t1, $t2, $t8 +/* 20990 8001FD90 01C87824 */ and $t7, $t6, $t0 +/* 20994 8001FD94 51E0004E */ beql $t7, $zero, .L8001FED0 +/* 20998 8001FD98 24420001 */ addiu $v0, $v0, 0x1 +/* 2099C 8001FD9C 8D390044 */ lw $t9, 0x44($t1) +/* 209A0 8001FDA0 1720004A */ bnez $t9, .L8001FECC +/* 209A4 8001FDA4 01426021 */ addu $t4, $t2, $v0 +/* 209A8 8001FDA8 3C0E803B */ lui $t6, %hi(D_803A8E0C) +/* 209AC 8001FDAC A1870032 */ sb $a3, 0x32($t4) +/* 209B0 8001FDB0 25CE8E0C */ addiu $t6, $t6, %lo(D_803A8E0C) +/* 209B4 8001FDB4 00066900 */ sll $t5, $a2, 4 +/* 209B8 8001FDB8 01AE1821 */ addu $v1, $t5, $t6 +/* 209BC 8001FDBC 3C088009 */ lui $t0, %hi(D_8008C748) +/* 209C0 8001FDC0 3C013F80 */ lui $at, (0x3F800000 >> 16) +/* 209C4 8001FDC4 C4640008 */ lwc1 $f4, 0x8($v1) +/* 209C8 8001FDC8 C466000C */ lwc1 $f6, 0xC($v1) +/* 209CC 8001FDCC 44814000 */ mtc1 $at, $f8 +/* 209D0 8001FDD0 2508C748 */ addiu $t0, $t0, %lo(D_8008C748) +/* 209D4 8001FDD4 E5040000 */ swc1 $f4, 0x0($t0) +/* 209D8 8001FDD8 E5060004 */ swc1 $f6, 0x4($t0) +/* 209DC 8001FDDC E5080008 */ swc1 $f8, 0x8($t0) +/* 209E0 8001FDE0 846F0000 */ lh $t7, 0x0($v1) +/* 209E4 8001FDE4 8E040064 */ lw $a0, 0x64($s0) +/* 209E8 8001FDE8 3C19803B */ lui $t9, %hi(D_803A8DD8) +/* 209EC 8001FDEC 000FC080 */ sll $t8, $t7, 2 +/* 209F0 8001FDF0 948C0000 */ lhu $t4, 0x0($a0) +/* 209F4 8001FDF4 030FC021 */ addu $t8, $t8, $t7 +/* 209F8 8001FDF8 0018C040 */ sll $t8, $t8, 1 +/* 209FC 8001FDFC 27398DD8 */ addiu $t9, $t9, %lo(D_803A8DD8) +/* 20A00 8001FE00 24010001 */ addiu $at, $zero, 0x1 +/* 20A04 8001FE04 1581000F */ bne $t4, $at, .L8001FE44 +/* 20A08 8001FE08 03195821 */ addu $t3, $t8, $t9 +/* 20A0C 8001FE0C 94650004 */ lhu $a1, 0x4($v1) +/* 20A10 8001FE10 30AD0100 */ andi $t5, $a1, 0x100 +/* 20A14 8001FE14 51A00005 */ beql $t5, $zero, .L8001FE2C +/* 20A18 8001FE18 C48A0018 */ lwc1 $f10, 0x18($a0) +/* 20A1C 8001FE1C 8E0E0068 */ lw $t6, 0x68($s0) +/* 20A20 8001FE20 1000001B */ b .L8001FE90 +/* 20A24 8001FE24 C5C00094 */ lwc1 $f0, 0x94($t6) +/* 20A28 8001FE28 C48A0018 */ lwc1 $f10, 0x18($a0) +.L8001FE2C: +/* 20A2C 8001FE2C C6100024 */ lwc1 $f16, 0x24($s0) +/* 20A30 8001FE30 8E0F0068 */ lw $t7, 0x68($s0) +/* 20A34 8001FE34 46105482 */ mul.s $f18, $f10, $f16 +/* 20A38 8001FE38 C5E40094 */ lwc1 $f4, 0x94($t7) +/* 20A3C 8001FE3C 10000014 */ b .L8001FE90 +/* 20A40 8001FE40 46122001 */ sub.s $f0, $f4, $f18 +.L8001FE44: +/* 20A44 8001FE44 94650004 */ lhu $a1, 0x4($v1) +/* 20A48 8001FE48 3C013FE0 */ lui $at, (0x3FE00000 >> 16) +/* 20A4C 8001FE4C 30B80100 */ andi $t8, $a1, 0x100 +/* 20A50 8001FE50 5300000F */ beql $t8, $zero, .L8001FE90 +/* 20A54 8001FE54 C6000004 */ lwc1 $f0, 0x4($s0) +/* 20A58 8001FE58 C486001C */ lwc1 $f6, 0x1C($a0) +/* 20A5C 8001FE5C 44815800 */ mtc1 $at, $f11 +/* 20A60 8001FE60 44805000 */ mtc1 $zero, $f10 +/* 20A64 8001FE64 46003221 */ cvt.d.s $f8, $f6 +/* 20A68 8001FE68 C6040024 */ lwc1 $f4, 0x24($s0) +/* 20A6C 8001FE6C 462A4402 */ mul.d $f16, $f8, $f10 +/* 20A70 8001FE70 C6080004 */ lwc1 $f8, 0x4($s0) +/* 20A74 8001FE74 460024A1 */ cvt.d.s $f18, $f4 +/* 20A78 8001FE78 460042A1 */ cvt.d.s $f10, $f8 +/* 20A7C 8001FE7C 46328182 */ mul.d $f6, $f16, $f18 +/* 20A80 8001FE80 46265100 */ add.d $f4, $f10, $f6 +/* 20A84 8001FE84 10000002 */ b .L8001FE90 +/* 20A88 8001FE88 46202020 */ cvt.s.d $f0, $f4 +/* 20A8C 8001FE8C C6000004 */ lwc1 $f0, 0x4($s0) +.L8001FE90: +/* 20A90 8001FE90 C6100008 */ lwc1 $f16, 0x8($s0) +/* 20A94 8001FE94 8E060000 */ lw $a2, 0x0($s0) +/* 20A98 8001FE98 44809000 */ mtc1 $zero, $f18 +/* 20A9C 8001FE9C 44070000 */ mfc1 $a3, $f0 +/* 20AA0 8001FEA0 AFA90038 */ sw $t1, 0x38($sp) +/* 20AA4 8001FEA4 AFB00020 */ sw $s0, 0x20($sp) +/* 20AA8 8001FEA8 AFA8001C */ sw $t0, 0x1C($sp) +/* 20AAC 8001FEAC AFAB0018 */ sw $t3, 0x18($sp) +/* 20AB0 8001FEB0 94640002 */ lhu $a0, 0x2($v1) +/* 20AB4 8001FEB4 E7B00010 */ swc1 $f16, 0x10($sp) +/* 20AB8 8001FEB8 0C005DFE */ jal func_800177F8 +/* 20ABC 8001FEBC E7B20014 */ swc1 $f18, 0x14($sp) +/* 20AC0 8001FEC0 8FA90038 */ lw $t1, 0x38($sp) +/* 20AC4 8001FEC4 10000004 */ b .L8001FED8 +/* 20AC8 8001FEC8 AD220044 */ sw $v0, 0x44($t1) +.L8001FECC: +/* 20ACC 8001FECC 24420001 */ addiu $v0, $v0, 0x1 +.L8001FED0: +/* 20AD0 8001FED0 1444FFAC */ bne $v0, $a0, .L8001FD84 +/* 20AD4 8001FED4 24630002 */ addiu $v1, $v1, 0x2 +.L8001FED8: +/* 20AD8 8001FED8 8FBF0034 */ lw $ra, 0x34($sp) +/* 20ADC 8001FEDC 8FB00030 */ lw $s0, 0x30($sp) +/* 20AE0 8001FEE0 27BD0058 */ addiu $sp, $sp, 0x58 +/* 20AE4 8001FEE4 03E00008 */ jr $ra +/* 20AE8 8001FEE8 00000000 */ nop + +glabel func_8001FEEC +/* 20AEC 8001FEEC 27BDFF40 */ addiu $sp, $sp, -0xC0 +/* 20AF0 8001FEF0 AFB3003C */ sw $s3, 0x3C($sp) +/* 20AF4 8001FEF4 00809825 */ or $s3, $a0, $zero +/* 20AF8 8001FEF8 AFBF0054 */ sw $ra, 0x54($sp) +/* 20AFC 8001FEFC AFBE0050 */ sw $fp, 0x50($sp) +/* 20B00 8001FF00 AFB7004C */ sw $s7, 0x4C($sp) +/* 20B04 8001FF04 AFB60048 */ sw $s6, 0x48($sp) +/* 20B08 8001FF08 AFB50044 */ sw $s5, 0x44($sp) +/* 20B0C 8001FF0C AFB40040 */ sw $s4, 0x40($sp) +/* 20B10 8001FF10 AFB20038 */ sw $s2, 0x38($sp) +/* 20B14 8001FF14 AFB10034 */ sw $s1, 0x34($sp) +/* 20B18 8001FF18 AFB00030 */ sw $s0, 0x30($sp) +/* 20B1C 8001FF1C 3C0E8008 */ lui $t6, %hi(D_8007B2E4) +/* 20B20 8001FF20 8DCEB2E4 */ lw $t6, %lo(D_8007B2E4)($t6) +/* 20B24 8001FF24 8E620068 */ lw $v0, 0x68($s3) +/* 20B28 8001FF28 27A700B0 */ addiu $a3, $sp, 0xB0 +/* 20B2C 8001FF2C 31CF0800 */ andi $t7, $t6, 0x800 +/* 20B30 8001FF30 15E00082 */ bnez $t7, .L8002013C +/* 20B34 8001FF34 0040F025 */ or $fp, $v0, $zero +/* 20B38 8001FF38 8E630064 */ lw $v1, 0x64($s3) +/* 20B3C 8001FF3C 24010001 */ addiu $at, $zero, 0x1 +/* 20B40 8001FF40 27B900AC */ addiu $t9, $sp, 0xAC +/* 20B44 8001FF44 94780000 */ lhu $t8, 0x0($v1) +/* 20B48 8001FF48 57010004 */ bnel $t8, $at, .L8001FF5C +/* 20B4C 8001FF4C C464001C */ lwc1 $f4, 0x1C($v1) +/* 20B50 8001FF50 10000006 */ b .L8001FF6C +/* 20B54 8001FF54 C44E0094 */ lwc1 $f14, 0x94($v0) +/* 20B58 8001FF58 C464001C */ lwc1 $f4, 0x1C($v1) +.L8001FF5C: +/* 20B5C 8001FF5C C6660024 */ lwc1 $f6, 0x24($s3) +/* 20B60 8001FF60 C66A0004 */ lwc1 $f10, 0x4($s3) +/* 20B64 8001FF64 46062202 */ mul.s $f8, $f4, $f6 +/* 20B68 8001FF68 46085380 */ add.s $f14, $f10, $f8 +.L8001FF6C: +/* 20B6C 8001FF6C C66C0000 */ lwc1 $f12, 0x0($s3) +/* 20B70 8001FF70 8E660008 */ lw $a2, 0x8($s3) +/* 20B74 8001FF74 0C00904F */ jal func_8002413C +/* 20B78 8001FF78 AFB90010 */ sw $t9, 0x10($sp) +/* 20B7C 8001FF7C 3C048008 */ lui $a0, %hi(gMasterGfxPos) +/* 20B80 8001FF80 2484B2FC */ addiu $a0, $a0, %lo(gMasterGfxPos) +/* 20B84 8001FF84 3C0DE700 */ lui $t5, (0xE7000000 >> 16) +/* 20B88 8001FF88 00406025 */ or $t4, $v0, $zero +/* 20B8C 8001FF8C 8C830000 */ lw $v1, 0x0($a0) +/* 20B90 8001FF90 3C18FD10 */ lui $t8, (0xFD100000 >> 16) +/* 20B94 8001FF94 0000B025 */ or $s6, $zero, $zero +/* 20B98 8001FF98 246E0008 */ addiu $t6, $v1, 0x8 +/* 20B9C 8001FF9C AC8E0000 */ sw $t6, 0x0($a0) +/* 20BA0 8001FFA0 AC600004 */ sw $zero, 0x4($v1) +/* 20BA4 8001FFA4 AC6D0000 */ sw $t5, 0x0($v1) +/* 20BA8 8001FFA8 8C830000 */ lw $v1, 0x0($a0) +/* 20BAC 8001FFAC 3C19803A */ lui $t9, %hi(gBattleStatusPal) +/* 20BB0 8001FFB0 27392960 */ addiu $t9, $t9, %lo(gBattleStatusPal) +/* 20BB4 8001FFB4 246F0008 */ addiu $t7, $v1, 0x8 +/* 20BB8 8001FFB8 AC8F0000 */ sw $t7, 0x0($a0) +/* 20BBC 8001FFBC AC790004 */ sw $t9, 0x4($v1) +/* 20BC0 8001FFC0 AC780000 */ sw $t8, 0x0($v1) +/* 20BC4 8001FFC4 8C830000 */ lw $v1, 0x0($a0) +/* 20BC8 8001FFC8 3C0FE800 */ lui $t7, (0xE8000000 >> 16) +/* 20BCC 8001FFCC 3C19F500 */ lui $t9, (0xF5000100 >> 16) +/* 20BD0 8001FFD0 246E0008 */ addiu $t6, $v1, 0x8 +/* 20BD4 8001FFD4 AC8E0000 */ sw $t6, 0x0($a0) +/* 20BD8 8001FFD8 AC600004 */ sw $zero, 0x4($v1) +/* 20BDC 8001FFDC AC6F0000 */ sw $t7, 0x0($v1) +/* 20BE0 8001FFE0 8C830000 */ lw $v1, 0x0($a0) +/* 20BE4 8001FFE4 37390100 */ ori $t9, $t9, (0xF5000100 & 0xFFFF) +/* 20BE8 8001FFE8 3C0E0700 */ lui $t6, (0x7000000 >> 16) +/* 20BEC 8001FFEC 24780008 */ addiu $t8, $v1, 0x8 +/* 20BF0 8001FFF0 AC980000 */ sw $t8, 0x0($a0) +/* 20BF4 8001FFF4 AC6E0004 */ sw $t6, 0x4($v1) +/* 20BF8 8001FFF8 AC790000 */ sw $t9, 0x0($v1) +/* 20BFC 8001FFFC 8C830000 */ lw $v1, 0x0($a0) +/* 20C00 80020000 3C18E600 */ lui $t8, (0xE6000000 >> 16) +/* 20C04 80020004 3C0EF000 */ lui $t6, (0xF0000000 >> 16) +/* 20C08 80020008 246F0008 */ addiu $t7, $v1, 0x8 +/* 20C0C 8002000C AC8F0000 */ sw $t7, 0x0($a0) +/* 20C10 80020010 AC600004 */ sw $zero, 0x4($v1) +/* 20C14 80020014 AC780000 */ sw $t8, 0x0($v1) +/* 20C18 80020018 8C830000 */ lw $v1, 0x0($a0) +/* 20C1C 8002001C 3C0F073F */ lui $t7, (0x73FC000 >> 16) +/* 20C20 80020020 35EFC000 */ ori $t7, $t7, (0x73FC000 & 0xFFFF) +/* 20C24 80020024 24790008 */ addiu $t9, $v1, 0x8 +/* 20C28 80020028 AC990000 */ sw $t9, 0x0($a0) +/* 20C2C 8002002C AC6F0004 */ sw $t7, 0x4($v1) +/* 20C30 80020030 AC6E0000 */ sw $t6, 0x0($v1) +/* 20C34 80020034 8C830000 */ lw $v1, 0x0($a0) +/* 20C38 80020038 0000B825 */ or $s7, $zero, $zero +/* 20C3C 8002003C 0000A025 */ or $s4, $zero, $zero +/* 20C40 80020040 24780008 */ addiu $t8, $v1, 0x8 +/* 20C44 80020044 AC980000 */ sw $t8, 0x0($a0) +/* 20C48 80020048 AC600004 */ sw $zero, 0x4($v1) +/* 20C4C 8002004C AC6D0000 */ sw $t5, 0x0($v1) +/* 20C50 80020050 03C08025 */ or $s0, $fp, $zero +.L80020054: +/* 20C54 80020054 92030012 */ lbu $v1, 0x12($s0) +/* 20C58 80020058 3C0E803B */ lui $t6, %hi(D_803A8D70) +/* 20C5C 8002005C 25CE8D70 */ addiu $t6, $t6, %lo(D_803A8D70) +/* 20C60 80020060 10600032 */ beqz $v1, .L8002012C +/* 20C64 80020064 0003C8C0 */ sll $t9, $v1, 3 +/* 20C68 80020068 032E1021 */ addu $v0, $t9, $t6 +/* 20C6C 8002006C 3C188005 */ lui $t8, %hi(D_8004D2CC) +/* 20C70 80020070 2718D2CC */ addiu $t8, $t8, %lo(D_8004D2CC) +/* 20C74 80020074 00147840 */ sll $t7, $s4, 1 +/* 20C78 80020078 84480000 */ lh $t0, 0x0($v0) +/* 20C7C 8002007C 84490002 */ lh $t1, 0x2($v0) +/* 20C80 80020080 94510004 */ lhu $s1, 0x4($v0) +/* 20C84 80020084 94520006 */ lhu $s2, 0x6($v0) +/* 20C88 80020088 11800016 */ beqz $t4, .L800200E4 +/* 20C8C 8002008C 01F8A821 */ addu $s5, $t7, $t8 +/* 20C90 80020090 8FB900B0 */ lw $t9, 0xB0($sp) +/* 20C94 80020094 8FB800AC */ lw $t8, 0xAC($sp) +/* 20C98 80020098 00117843 */ sra $t7, $s1, 1 +/* 20C9C 8002009C 03377021 */ addu $t6, $t9, $s7 +/* 20CA0 800200A0 01CF2823 */ subu $a1, $t6, $t7 +/* 20CA4 800200A4 0316C821 */ addu $t9, $t8, $s6 +/* 20CA8 800200A8 24180400 */ addiu $t8, $zero, 0x400 +/* 20CAC 800200AC 240F0400 */ addiu $t7, $zero, 0x400 +/* 20CB0 800200B0 00127043 */ sra $t6, $s2, 1 +/* 20CB4 800200B4 3C04803A */ lui $a0, %hi(D_803A6F70) +/* 20CB8 800200B8 24846F70 */ addiu $a0, $a0, %lo(D_803A6F70) +/* 20CBC 800200BC 032E3023 */ subu $a2, $t9, $t6 +/* 20CC0 800200C0 AFAF001C */ sw $t7, 0x1C($sp) +/* 20CC4 800200C4 AFB80020 */ sw $t8, 0x20($sp) +/* 20CC8 800200C8 02203825 */ or $a3, $s1, $zero +/* 20CCC 800200CC AFB20010 */ sw $s2, 0x10($sp) +/* 20CD0 800200D0 AFA80014 */ sw $t0, 0x14($sp) +/* 20CD4 800200D4 AFA90018 */ sw $t1, 0x18($sp) +/* 20CD8 800200D8 0C00843F */ jal func_800210FC +/* 20CDC 800200DC AFAC00B4 */ sw $t4, 0xB4($sp) +/* 20CE0 800200E0 8FAC00B4 */ lw $t4, 0xB4($sp) +.L800200E4: +/* 20CE4 800200E4 96B90000 */ lhu $t9, 0x0($s5) +/* 20CE8 800200E8 97CE0000 */ lhu $t6, 0x0($fp) +/* 20CEC 800200EC 00111843 */ sra $v1, $s1, 1 +/* 20CF0 800200F0 00122043 */ sra $a0, $s2, 1 +/* 20CF4 800200F4 032E7824 */ and $t7, $t9, $t6 +/* 20CF8 800200F8 15E00003 */ bnez $t7, .L80020108 +/* 20CFC 800200FC 02E3B821 */ addu $s7, $s7, $v1 +/* 20D00 80020100 10000009 */ b .L80020128 +/* 20D04 80020104 A2000012 */ sb $zero, 0x12($s0) +.L80020108: +/* 20D08 80020108 82020022 */ lb $v0, 0x22($s0) +/* 20D0C 8002010C 18400006 */ blez $v0, .L80020128 +/* 20D10 80020110 2458FFFF */ addiu $t8, $v0, -0x1 +/* 20D14 80020114 A2180022 */ sb $t8, 0x22($s0) +/* 20D18 80020118 82190022 */ lb $t9, 0x22($s0) +/* 20D1C 8002011C 57200003 */ bnel $t9, $zero, .L8002012C +/* 20D20 80020120 02C4B023 */ subu $s6, $s6, $a0 +/* 20D24 80020124 A2000012 */ sb $zero, 0x12($s0) +.L80020128: +/* 20D28 80020128 02C4B023 */ subu $s6, $s6, $a0 +.L8002012C: +/* 20D2C 8002012C 26940001 */ addiu $s4, $s4, 0x1 +/* 20D30 80020130 24010007 */ addiu $at, $zero, 0x7 +/* 20D34 80020134 1681FFC7 */ bne $s4, $at, .L80020054 +/* 20D38 80020138 26100001 */ addiu $s0, $s0, 0x1 +.L8002013C: +/* 20D3C 8002013C 3C013FE0 */ lui $at, (0x3FE00000 >> 16) +/* 20D40 80020140 44810800 */ mtc1 $at, $f1 +/* 20D44 80020144 44800000 */ mtc1 $zero, $f0 +/* 20D48 80020148 0000A025 */ or $s4, $zero, $zero +/* 20D4C 8002014C 00003025 */ or $a2, $zero, $zero +/* 20D50 80020150 03C02025 */ or $a0, $fp, $zero +/* 20D54 80020154 240A0001 */ addiu $t2, $zero, 0x1 +/* 20D58 80020158 24090004 */ addiu $t1, $zero, 0x4 +/* 20D5C 8002015C 24080008 */ addiu $t0, $zero, 0x8 +/* 20D60 80020160 2407FFFE */ addiu $a3, $zero, -0x2 +.L80020164: +/* 20D64 80020164 8C8E0044 */ lw $t6, 0x44($a0) +/* 20D68 80020168 51C0004F */ beql $t6, $zero, .L800202A8 +/* 20D6C 8002016C 26940001 */ addiu $s4, $s4, 0x1 +/* 20D70 80020170 8E6F0068 */ lw $t7, 0x68($s3) +/* 20D74 80020174 C6700000 */ lwc1 $f16, 0x0($s3) +/* 20D78 80020178 3C0E8005 */ lui $t6, %hi(D_8004D2DC) +/* 20D7C 8002017C 01E6C021 */ addu $t8, $t7, $a2 +/* 20D80 80020180 8F020044 */ lw $v0, 0x44($t8) +/* 20D84 80020184 25CED2DC */ addiu $t6, $t6, %lo(D_8004D2DC) +/* 20D88 80020188 0014C840 */ sll $t9, $s4, 1 +/* 20D8C 8002018C E450000C */ swc1 $f16, 0xC($v0) +/* 20D90 80020190 C6720008 */ lwc1 $f18, 0x8($s3) +/* 20D94 80020194 032E2821 */ addu $a1, $t9, $t6 +/* 20D98 80020198 03D48021 */ addu $s0, $fp, $s4 +/* 20D9C 8002019C E4520014 */ swc1 $f18, 0x14($v0) +/* 20DA0 800201A0 8E630064 */ lw $v1, 0x64($s3) +/* 20DA4 800201A4 946F0000 */ lhu $t7, 0x0($v1) +/* 20DA8 800201A8 554F0012 */ bnel $t2, $t7, .L800201F4 +/* 20DAC 800201AC 94580008 */ lhu $t8, 0x8($v0) +/* 20DB0 800201B0 94580008 */ lhu $t8, 0x8($v0) +/* 20DB4 800201B4 33190100 */ andi $t9, $t8, 0x100 +/* 20DB8 800201B8 53200006 */ beql $t9, $zero, .L800201D4 +/* 20DBC 800201BC C4660018 */ lwc1 $f6, 0x18($v1) +/* 20DC0 800201C0 8E6E0068 */ lw $t6, 0x68($s3) +/* 20DC4 800201C4 C5C40094 */ lwc1 $f4, 0x94($t6) +/* 20DC8 800201C8 1000001B */ b .L80020238 +/* 20DCC 800201CC E4440010 */ swc1 $f4, 0x10($v0) +/* 20DD0 800201D0 C4660018 */ lwc1 $f6, 0x18($v1) +.L800201D4: +/* 20DD4 800201D4 C66A0024 */ lwc1 $f10, 0x24($s3) +/* 20DD8 800201D8 8E6F0068 */ lw $t7, 0x68($s3) +/* 20DDC 800201DC 460A3202 */ mul.s $f8, $f6, $f10 +/* 20DE0 800201E0 C5F00094 */ lwc1 $f16, 0x94($t7) +/* 20DE4 800201E4 46088481 */ sub.s $f18, $f16, $f8 +/* 20DE8 800201E8 10000013 */ b .L80020238 +/* 20DEC 800201EC E4520010 */ swc1 $f18, 0x10($v0) +/* 20DF0 800201F0 94580008 */ lhu $t8, 0x8($v0) +.L800201F4: +/* 20DF4 800201F4 33190100 */ andi $t9, $t8, 0x100 +/* 20DF8 800201F8 5320000E */ beql $t9, $zero, .L80020234 +/* 20DFC 800201FC C6680004 */ lwc1 $f8, 0x4($s3) +/* 20E00 80020200 C464001C */ lwc1 $f4, 0x1C($v1) +/* 20E04 80020204 C6700024 */ lwc1 $f16, 0x24($s3) +/* 20E08 80020208 460021A1 */ cvt.d.s $f6, $f4 +/* 20E0C 8002020C 46008221 */ cvt.d.s $f8, $f16 +/* 20E10 80020210 46203282 */ mul.d $f10, $f6, $f0 +/* 20E14 80020214 C6640004 */ lwc1 $f4, 0x4($s3) +/* 20E18 80020218 460021A1 */ cvt.d.s $f6, $f4 +/* 20E1C 8002021C 46285482 */ mul.d $f18, $f10, $f8 +/* 20E20 80020220 46323400 */ add.d $f16, $f6, $f18 +/* 20E24 80020224 462082A0 */ cvt.s.d $f10, $f16 +/* 20E28 80020228 10000003 */ b .L80020238 +/* 20E2C 8002022C E44A0010 */ swc1 $f10, 0x10($v0) +/* 20E30 80020230 C6680004 */ lwc1 $f8, 0x4($s3) +.L80020234: +/* 20E34 80020234 E4480010 */ swc1 $f8, 0x10($v0) +.L80020238: +/* 20E38 80020238 94AE0000 */ lhu $t6, 0x0($a1) +/* 20E3C 8002023C 97CF0000 */ lhu $t7, 0x0($fp) +/* 20E40 80020240 01CFC024 */ and $t8, $t6, $t7 +/* 20E44 80020244 5700000A */ bnel $t8, $zero, .L80020270 +/* 20E48 80020248 82030032 */ lb $v1, 0x32($s0) +/* 20E4C 8002024C AC800044 */ sw $zero, 0x44($a0) +/* 20E50 80020250 94430008 */ lhu $v1, 0x8($v0) +/* 20E54 80020254 30790001 */ andi $t9, $v1, 0x1 +/* 20E58 80020258 13200012 */ beqz $t9, .L800202A4 +/* 20E5C 8002025C 00677024 */ and $t6, $v1, $a3 +/* 20E60 80020260 A44E0008 */ sh $t6, 0x8($v0) +/* 20E64 80020264 1000000F */ b .L800202A4 +/* 20E68 80020268 A4480000 */ sh $t0, 0x0($v0) +/* 20E6C 8002026C 82030032 */ lb $v1, 0x32($s0) +.L80020270: +/* 20E70 80020270 1860000C */ blez $v1, .L800202A4 +/* 20E74 80020274 246FFFFF */ addiu $t7, $v1, -0x1 +/* 20E78 80020278 A20F0032 */ sb $t7, 0x32($s0) +/* 20E7C 8002027C 82180032 */ lb $t8, 0x32($s0) +/* 20E80 80020280 57000009 */ bnel $t8, $zero, .L800202A8 +/* 20E84 80020284 26940001 */ addiu $s4, $s4, 0x1 +/* 20E88 80020288 AC800044 */ sw $zero, 0x44($a0) +/* 20E8C 8002028C 94430008 */ lhu $v1, 0x8($v0) +/* 20E90 80020290 30790001 */ andi $t9, $v1, 0x1 +/* 20E94 80020294 13200003 */ beqz $t9, .L800202A4 +/* 20E98 80020298 00677024 */ and $t6, $v1, $a3 +/* 20E9C 8002029C A44E0008 */ sh $t6, 0x8($v0) +/* 20EA0 800202A0 A4480000 */ sh $t0, 0x0($v0) +.L800202A4: +/* 20EA4 800202A4 26940001 */ addiu $s4, $s4, 0x1 +.L800202A8: +/* 20EA8 800202A8 24C60004 */ addiu $a2, $a2, 0x4 +/* 20EAC 800202AC 1689FFAD */ bne $s4, $t1, .L80020164 +/* 20EB0 800202B0 24840004 */ addiu $a0, $a0, 0x4 +/* 20EB4 800202B4 8FBF0054 */ lw $ra, 0x54($sp) +/* 20EB8 800202B8 8FB00030 */ lw $s0, 0x30($sp) +/* 20EBC 800202BC 8FB10034 */ lw $s1, 0x34($sp) +/* 20EC0 800202C0 8FB20038 */ lw $s2, 0x38($sp) +/* 20EC4 800202C4 8FB3003C */ lw $s3, 0x3C($sp) +/* 20EC8 800202C8 8FB40040 */ lw $s4, 0x40($sp) +/* 20ECC 800202CC 8FB50044 */ lw $s5, 0x44($sp) +/* 20ED0 800202D0 8FB60048 */ lw $s6, 0x48($sp) +/* 20ED4 800202D4 8FB7004C */ lw $s7, 0x4C($sp) +/* 20ED8 800202D8 8FBE0050 */ lw $fp, 0x50($sp) +/* 20EDC 800202DC 03E00008 */ jr $ra +/* 20EE0 800202E0 27BD00C0 */ addiu $sp, $sp, 0xC0 + +glabel func_800202E4 +/* 20EE4 800202E4 8C820068 */ lw $v0, 0x68($a0) +/* 20EE8 800202E8 00001825 */ or $v1, $zero, $zero +/* 20EEC 800202EC 00402825 */ or $a1, $v0, $zero +.L800202F0: +/* 20EF0 800202F0 90AE0012 */ lbu $t6, 0x12($a1) +/* 20EF4 800202F4 24630001 */ addiu $v1, $v1, 0x1 +/* 20EF8 800202F8 2C610007 */ sltiu $at, $v1, 0x7 +/* 20EFC 800202FC 11C00002 */ beqz $t6, .L80020308 +/* 20F00 80020300 00000000 */ nop +/* 20F04 80020304 A0A00012 */ sb $zero, 0x12($a1) +.L80020308: +/* 20F08 80020308 1420FFF9 */ bnez $at, .L800202F0 +/* 20F0C 8002030C 24A50001 */ addiu $a1, $a1, 0x1 +/* 20F10 80020310 8C440044 */ lw $a0, 0x44($v0) +/* 20F14 80020314 00401825 */ or $v1, $v0, $zero +/* 20F18 80020318 50800008 */ beql $a0, $zero, .L8002033C +/* 20F1C 8002031C 8C640048 */ lw $a0, 0x48($v1) +/* 20F20 80020320 948F0008 */ lhu $t7, 0x8($a0) +/* 20F24 80020324 24050008 */ addiu $a1, $zero, 0x8 +/* 20F28 80020328 A4850000 */ sh $a1, 0x0($a0) +/* 20F2C 8002032C 31F8FFFE */ andi $t8, $t7, 0xFFFE +/* 20F30 80020330 A4980008 */ sh $t8, 0x8($a0) +/* 20F34 80020334 AC600044 */ sw $zero, 0x44($v1) +/* 20F38 80020338 8C640048 */ lw $a0, 0x48($v1) +.L8002033C: +/* 20F3C 8002033C 24050008 */ addiu $a1, $zero, 0x8 +/* 20F40 80020340 2406FFFE */ addiu $a2, $zero, -0x2 +/* 20F44 80020344 50800007 */ beql $a0, $zero, .L80020364 +/* 20F48 80020348 8C64004C */ lw $a0, 0x4C($v1) +/* 20F4C 8002034C 94990008 */ lhu $t9, 0x8($a0) +/* 20F50 80020350 A4850000 */ sh $a1, 0x0($a0) +/* 20F54 80020354 03264024 */ and $t0, $t9, $a2 +/* 20F58 80020358 A4880008 */ sh $t0, 0x8($a0) +/* 20F5C 8002035C AC600048 */ sw $zero, 0x48($v1) +/* 20F60 80020360 8C64004C */ lw $a0, 0x4C($v1) +.L80020364: +/* 20F64 80020364 50800007 */ beql $a0, $zero, .L80020384 +/* 20F68 80020368 8C640050 */ lw $a0, 0x50($v1) +/* 20F6C 8002036C 94890008 */ lhu $t1, 0x8($a0) +/* 20F70 80020370 A4850000 */ sh $a1, 0x0($a0) +/* 20F74 80020374 01265024 */ and $t2, $t1, $a2 +/* 20F78 80020378 A48A0008 */ sh $t2, 0x8($a0) +/* 20F7C 8002037C AC60004C */ sw $zero, 0x4C($v1) +/* 20F80 80020380 8C640050 */ lw $a0, 0x50($v1) +.L80020384: +/* 20F84 80020384 10800006 */ beqz $a0, .L800203A0 +/* 20F88 80020388 00000000 */ nop +/* 20F8C 8002038C 948B0008 */ lhu $t3, 0x8($a0) +/* 20F90 80020390 A4850000 */ sh $a1, 0x0($a0) +/* 20F94 80020394 01666024 */ and $t4, $t3, $a2 +/* 20F98 80020398 A48C0008 */ sh $t4, 0x8($a0) +/* 20F9C 8002039C AC600050 */ sw $zero, 0x50($v1) +.L800203A0: +/* 20FA0 800203A0 03E00008 */ jr $ra +/* 20FA4 800203A4 00000000 */ nop + +glabel func_800203A8 +/* 20FA8 800203A8 03E00008 */ jr $ra +/* 20FAC 800203AC 00000000 */ nop + +glabel func_800203B0 +/* 20FB0 800203B0 03E00008 */ jr $ra +/* 20FB4 800203B4 00000000 */ nop + +glabel func_800203B8 +/* 20FB8 800203B8 03E00008 */ jr $ra +/* 20FBC 800203BC 00000000 */ nop + +glabel func_800203C0 +/* 20FC0 800203C0 03E00008 */ jr $ra +/* 20FC4 800203C4 00000000 */ nop + +glabel func_800203C8 +/* 20FC8 800203C8 03E00008 */ jr $ra +/* 20FCC 800203CC 00000000 */ nop + +glabel func_800203D0 +/* 20FD0 800203D0 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 20FD4 800203D4 AFB10030 */ sw $s1, 0x30($sp) +/* 20FD8 800203D8 AFB0002C */ sw $s0, 0x2C($sp) +/* 20FDC 800203DC 3C108008 */ lui $s0, %hi(gMasterGfxPos) +/* 20FE0 800203E0 3C118008 */ lui $s1, %hi(D_8007D088) +/* 20FE4 800203E4 2631D088 */ addiu $s1, $s1, %lo(D_8007D088) +/* 20FE8 800203E8 2610B2FC */ addiu $s0, $s0, %lo(gMasterGfxPos) +/* 20FEC 800203EC AFBF0034 */ sw $ra, 0x34($sp) +/* 20FF0 800203F0 3C0AE700 */ lui $t2, (0xE7000000 >> 16) +/* 20FF4 800203F4 240E00B5 */ addiu $t6, $zero, 0xB5 +/* 20FF8 800203F8 3C018009 */ lui $at, %hi(gHUDResolutionX) +/* 20FFC 800203FC AC2EC648 */ sw $t6, %lo(gHUDResolutionX)($at) +/* 21000 80020400 3C018009 */ lui $at, %hi(gHUDResolutionY) +/* 21004 80020404 240F001A */ addiu $t7, $zero, 0x1A +/* 21008 80020408 AC2FC64C */ sw $t7, %lo(gHUDResolutionY)($at) +/* 2100C 8002040C 8E020000 */ lw $v0, 0x0($s0) +/* 21010 80020410 3C0BFD10 */ lui $t3, (0xFD100000 >> 16) +/* 21014 80020414 24580008 */ addiu $t8, $v0, 0x8 +/* 21018 80020418 AE180000 */ sw $t8, 0x0($s0) +/* 2101C 8002041C AC400004 */ sw $zero, 0x4($v0) +/* 21020 80020420 AC4A0000 */ sw $t2, 0x0($v0) +/* 21024 80020424 8E020000 */ lw $v0, 0x0($s0) +/* 21028 80020428 3C0C803A */ lui $t4, %hi(D_8039D990) +/* 2102C 8002042C 258CD990 */ addiu $t4, $t4, %lo(D_8039D990) +/* 21030 80020430 24590008 */ addiu $t9, $v0, 0x8 +/* 21034 80020434 AE190000 */ sw $t9, 0x0($s0) +/* 21038 80020438 AC4C0004 */ sw $t4, 0x4($v0) +/* 2103C 8002043C AC4B0000 */ sw $t3, 0x0($v0) +/* 21040 80020440 8E020000 */ lw $v0, 0x0($s0) +/* 21044 80020444 3C0EE800 */ lui $t6, (0xE8000000 >> 16) +/* 21048 80020448 3C18F500 */ lui $t8, (0xF5000100 >> 16) +/* 2104C 8002044C 244D0008 */ addiu $t5, $v0, 0x8 +/* 21050 80020450 AE0D0000 */ sw $t5, 0x0($s0) +/* 21054 80020454 AC400004 */ sw $zero, 0x4($v0) +/* 21058 80020458 AC4E0000 */ sw $t6, 0x0($v0) +/* 2105C 8002045C 8E020000 */ lw $v0, 0x0($s0) +/* 21060 80020460 37180100 */ ori $t8, $t8, (0xF5000100 & 0xFFFF) +/* 21064 80020464 3C190700 */ lui $t9, (0x7000000 >> 16) +/* 21068 80020468 244F0008 */ addiu $t7, $v0, 0x8 +/* 2106C 8002046C AE0F0000 */ sw $t7, 0x0($s0) +/* 21070 80020470 AC590004 */ sw $t9, 0x4($v0) +/* 21074 80020474 AC580000 */ sw $t8, 0x0($v0) +/* 21078 80020478 8E020000 */ lw $v0, 0x0($s0) +/* 2107C 8002047C 3C0CE600 */ lui $t4, (0xE6000000 >> 16) +/* 21080 80020480 3C0EF000 */ lui $t6, (0xF0000000 >> 16) +/* 21084 80020484 244B0008 */ addiu $t3, $v0, 0x8 +/* 21088 80020488 AE0B0000 */ sw $t3, 0x0($s0) +/* 2108C 8002048C AC400004 */ sw $zero, 0x4($v0) +/* 21090 80020490 AC4C0000 */ sw $t4, 0x0($v0) +/* 21094 80020494 8E020000 */ lw $v0, 0x0($s0) +/* 21098 80020498 3C0F073F */ lui $t7, (0x73FC000 >> 16) +/* 2109C 8002049C 35EFC000 */ ori $t7, $t7, (0x73FC000 & 0xFFFF) +/* 210A0 800204A0 244D0008 */ addiu $t5, $v0, 0x8 +/* 210A4 800204A4 AE0D0000 */ sw $t5, 0x0($s0) +/* 210A8 800204A8 AC4F0004 */ sw $t7, 0x4($v0) +/* 210AC 800204AC AC4E0000 */ sw $t6, 0x0($v0) +/* 210B0 800204B0 8E020000 */ lw $v0, 0x0($s0) +/* 210B4 800204B4 24580008 */ addiu $t8, $v0, 0x8 +/* 210B8 800204B8 AE180000 */ sw $t8, 0x0($s0) +/* 210BC 800204BC AC400004 */ sw $zero, 0x4($v0) +/* 210C0 800204C0 AC4A0000 */ sw $t2, 0x0($v0) +/* 210C4 800204C4 8E390000 */ lw $t9, 0x0($s1) +/* 210C8 800204C8 3C04803A */ lui $a0, %hi(D_803A6F60) +/* 210CC 800204CC 24846F60 */ addiu $a0, $a0, %lo(D_803A6F60) +/* 210D0 800204D0 972B0090 */ lhu $t3, 0x90($t9) +/* 210D4 800204D4 00002825 */ or $a1, $zero, $zero +/* 210D8 800204D8 00003025 */ or $a2, $zero, $zero +/* 210DC 800204DC 316C0080 */ andi $t4, $t3, 0x80 +/* 210E0 800204E0 11800043 */ beqz $t4, .L800205F0 +/* 210E4 800204E4 2407006E */ addiu $a3, $zero, 0x6E +/* 210E8 800204E8 3C04803A */ lui $a0, %hi(D_803A6F60) +/* 210EC 800204EC 240D0010 */ addiu $t5, $zero, 0x10 +/* 210F0 800204F0 240E0064 */ addiu $t6, $zero, 0x64 +/* 210F4 800204F4 240F001C */ addiu $t7, $zero, 0x1C +/* 210F8 800204F8 24180400 */ addiu $t8, $zero, 0x400 +/* 210FC 800204FC 24190400 */ addiu $t9, $zero, 0x400 +/* 21100 80020500 AFB90020 */ sw $t9, 0x20($sp) +/* 21104 80020504 AFB8001C */ sw $t8, 0x1C($sp) +/* 21108 80020508 AFAF0018 */ sw $t7, 0x18($sp) +/* 2110C 8002050C AFAE0014 */ sw $t6, 0x14($sp) +/* 21110 80020510 AFAD0010 */ sw $t5, 0x10($sp) +/* 21114 80020514 24846F60 */ addiu $a0, $a0, %lo(D_803A6F60) +/* 21118 80020518 00002825 */ or $a1, $zero, $zero +/* 2111C 8002051C 00003025 */ or $a2, $zero, $zero +/* 21120 80020520 0C00843F */ jal func_800210FC +/* 21124 80020524 2407006E */ addiu $a3, $zero, 0x6E +/* 21128 80020528 3C04803A */ lui $a0, %hi(D_803A6F60) +/* 2112C 8002052C 240B0010 */ addiu $t3, $zero, 0x10 +/* 21130 80020530 240C0064 */ addiu $t4, $zero, 0x64 +/* 21134 80020534 240D002C */ addiu $t5, $zero, 0x2C +/* 21138 80020538 240E0400 */ addiu $t6, $zero, 0x400 +/* 2113C 8002053C 240F0400 */ addiu $t7, $zero, 0x400 +/* 21140 80020540 AFAF0020 */ sw $t7, 0x20($sp) +/* 21144 80020544 AFAE001C */ sw $t6, 0x1C($sp) +/* 21148 80020548 AFAD0018 */ sw $t5, 0x18($sp) +/* 2114C 8002054C AFAC0014 */ sw $t4, 0x14($sp) +/* 21150 80020550 AFAB0010 */ sw $t3, 0x10($sp) +/* 21154 80020554 24846F60 */ addiu $a0, $a0, %lo(D_803A6F60) +/* 21158 80020558 00002825 */ or $a1, $zero, $zero +/* 2115C 8002055C 24060010 */ addiu $a2, $zero, 0x10 +/* 21160 80020560 0C00843F */ jal func_800210FC +/* 21164 80020564 2407006E */ addiu $a3, $zero, 0x6E +/* 21168 80020568 3C04803A */ lui $a0, %hi(D_803A6F60) +/* 2116C 8002056C 24180010 */ addiu $t8, $zero, 0x10 +/* 21170 80020570 24190064 */ addiu $t9, $zero, 0x64 +/* 21174 80020574 240B003C */ addiu $t3, $zero, 0x3C +/* 21178 80020578 240C0400 */ addiu $t4, $zero, 0x400 +/* 2117C 8002057C 240D0400 */ addiu $t5, $zero, 0x400 +/* 21180 80020580 AFAD0020 */ sw $t5, 0x20($sp) +/* 21184 80020584 AFAC001C */ sw $t4, 0x1C($sp) +/* 21188 80020588 AFAB0018 */ sw $t3, 0x18($sp) +/* 2118C 8002058C AFB90014 */ sw $t9, 0x14($sp) +/* 21190 80020590 AFB80010 */ sw $t8, 0x10($sp) +/* 21194 80020594 24846F60 */ addiu $a0, $a0, %lo(D_803A6F60) +/* 21198 80020598 00002825 */ or $a1, $zero, $zero +/* 2119C 8002059C 24060020 */ addiu $a2, $zero, 0x20 +/* 211A0 800205A0 0C00843F */ jal func_800210FC +/* 211A4 800205A4 2407006E */ addiu $a3, $zero, 0x6E +/* 211A8 800205A8 3C04803A */ lui $a0, %hi(D_803A6F60) +/* 211AC 800205AC 240E0004 */ addiu $t6, $zero, 0x4 +/* 211B0 800205B0 240F0064 */ addiu $t7, $zero, 0x64 +/* 211B4 800205B4 2418004C */ addiu $t8, $zero, 0x4C +/* 211B8 800205B8 24190400 */ addiu $t9, $zero, 0x400 +/* 211BC 800205BC 240B0400 */ addiu $t3, $zero, 0x400 +/* 211C0 800205C0 AFAB0020 */ sw $t3, 0x20($sp) +/* 211C4 800205C4 AFB9001C */ sw $t9, 0x1C($sp) +/* 211C8 800205C8 AFB80018 */ sw $t8, 0x18($sp) +/* 211CC 800205CC AFAF0014 */ sw $t7, 0x14($sp) +/* 211D0 800205D0 AFAE0010 */ sw $t6, 0x10($sp) +/* 211D4 800205D4 24846F60 */ addiu $a0, $a0, %lo(D_803A6F60) +/* 211D8 800205D8 00002825 */ or $a1, $zero, $zero +/* 211DC 800205DC 24060030 */ addiu $a2, $zero, 0x30 +/* 211E0 800205E0 0C00843F */ jal func_800210FC +/* 211E4 800205E4 2407006E */ addiu $a3, $zero, 0x6E +/* 211E8 800205E8 1000002D */ b .L800206A0 +/* 211EC 800205EC 8E2E0000 */ lw $t6, 0x0($s1) +.L800205F0: +/* 211F0 800205F0 240C0010 */ addiu $t4, $zero, 0x10 +/* 211F4 800205F4 240D0064 */ addiu $t5, $zero, 0x64 +/* 211F8 800205F8 240E001C */ addiu $t6, $zero, 0x1C +/* 211FC 800205FC 240F0400 */ addiu $t7, $zero, 0x400 +/* 21200 80020600 24180400 */ addiu $t8, $zero, 0x400 +/* 21204 80020604 AFB80020 */ sw $t8, 0x20($sp) +/* 21208 80020608 AFAF001C */ sw $t7, 0x1C($sp) +/* 2120C 8002060C AFAE0018 */ sw $t6, 0x18($sp) +/* 21210 80020610 AFAD0014 */ sw $t5, 0x14($sp) +/* 21214 80020614 0C00843F */ jal func_800210FC +/* 21218 80020618 AFAC0010 */ sw $t4, 0x10($sp) +/* 2121C 8002061C 3C04803A */ lui $a0, %hi(D_803A6F60) +/* 21220 80020620 2419000A */ addiu $t9, $zero, 0xA +/* 21224 80020624 240B0064 */ addiu $t3, $zero, 0x64 +/* 21228 80020628 240C002C */ addiu $t4, $zero, 0x2C +/* 2122C 8002062C 240D0400 */ addiu $t5, $zero, 0x400 +/* 21230 80020630 240E0400 */ addiu $t6, $zero, 0x400 +/* 21234 80020634 AFAE0020 */ sw $t6, 0x20($sp) +/* 21238 80020638 AFAD001C */ sw $t5, 0x1C($sp) +/* 2123C 8002063C AFAC0018 */ sw $t4, 0x18($sp) +/* 21240 80020640 AFAB0014 */ sw $t3, 0x14($sp) +/* 21244 80020644 AFB90010 */ sw $t9, 0x10($sp) +/* 21248 80020648 24846F60 */ addiu $a0, $a0, %lo(D_803A6F60) +/* 2124C 8002064C 00002825 */ or $a1, $zero, $zero +/* 21250 80020650 24060010 */ addiu $a2, $zero, 0x10 +/* 21254 80020654 0C00843F */ jal func_800210FC +/* 21258 80020658 2407006E */ addiu $a3, $zero, 0x6E +/* 2125C 8002065C 3C04803A */ lui $a0, %hi(D_803A6F60) +/* 21260 80020660 240F0002 */ addiu $t7, $zero, 0x2 +/* 21264 80020664 24180064 */ addiu $t8, $zero, 0x64 +/* 21268 80020668 2419004E */ addiu $t9, $zero, 0x4E +/* 2126C 8002066C 240B0400 */ addiu $t3, $zero, 0x400 +/* 21270 80020670 240C0400 */ addiu $t4, $zero, 0x400 +/* 21274 80020674 AFAC0020 */ sw $t4, 0x20($sp) +/* 21278 80020678 AFAB001C */ sw $t3, 0x1C($sp) +/* 2127C 8002067C AFB90018 */ sw $t9, 0x18($sp) +/* 21280 80020680 AFB80014 */ sw $t8, 0x14($sp) +/* 21284 80020684 AFAF0010 */ sw $t7, 0x10($sp) +/* 21288 80020688 24846F60 */ addiu $a0, $a0, %lo(D_803A6F60) +/* 2128C 8002068C 00002825 */ or $a1, $zero, $zero +/* 21290 80020690 2406001A */ addiu $a2, $zero, 0x1A +/* 21294 80020694 0C00843F */ jal func_800210FC +/* 21298 80020698 2407006E */ addiu $a3, $zero, 0x6E +/* 2129C 8002069C 8E2E0000 */ lw $t6, 0x0($s1) +.L800206A0: +/* 212A0 800206A0 3C0D8008 */ lui $t5, %hi(D_8007D0AC) +/* 212A4 800206A4 8DADD0AC */ lw $t5, %lo(D_8007D0AC)($t5) +/* 212A8 800206A8 8DCF0020 */ lw $t7, 0x20($t6) +/* 212AC 800206AC 24040004 */ addiu $a0, $zero, 0x4 +/* 212B0 800206B0 24050011 */ addiu $a1, $zero, 0x11 +/* 212B4 800206B4 85F80002 */ lh $t8, 0x2($t7) +/* 212B8 800206B8 00003025 */ or $a2, $zero, $zero +/* 212BC 800206BC 0018C880 */ sll $t9, $t8, 2 +/* 212C0 800206C0 01B95821 */ addu $t3, $t5, $t9 +/* 212C4 800206C4 0C0082D3 */ jal func_80020B4C +/* 212C8 800206C8 8D670000 */ lw $a3, 0x0($t3) +/* 212CC 800206CC 3C04803A */ lui $a0, %hi(gTex_HUD_and_Menu) +/* 212D0 800206D0 240C000A */ addiu $t4, $zero, 0xA +/* 212D4 800206D4 AFAC0010 */ sw $t4, 0x10($sp) +/* 212D8 800206D8 24846F40 */ addiu $a0, $a0, %lo(gTex_HUD_and_Menu) +/* 212DC 800206DC 24050020 */ addiu $a1, $zero, 0x20 +/* 212E0 800206E0 2406001D */ addiu $a2, $zero, 0x1D +/* 212E4 800206E4 0C00838B */ jal func_80020E2C +/* 212E8 800206E8 24070080 */ addiu $a3, $zero, 0x80 +/* 212EC 800206EC 8E020000 */ lw $v0, 0x0($s0) +/* 212F0 800206F0 3C18803A */ lui $t8, %hi(D_80399AB0) +/* 212F4 800206F4 27189AB0 */ addiu $t8, $t8, %lo(D_80399AB0) +/* 212F8 800206F8 244E0008 */ addiu $t6, $v0, 0x8 +/* 212FC 800206FC AE0E0000 */ sw $t6, 0x0($s0) +/* 21300 80020700 3C0FFD10 */ lui $t7, (0xFD100000 >> 16) +/* 21304 80020704 AC4F0000 */ sw $t7, 0x0($v0) +/* 21308 80020708 AC580004 */ sw $t8, 0x4($v0) +/* 2130C 8002070C 8E020000 */ lw $v0, 0x0($s0) +/* 21310 80020710 3C19E800 */ lui $t9, (0xE8000000 >> 16) +/* 21314 80020714 3C0CF500 */ lui $t4, (0xF5000100 >> 16) +/* 21318 80020718 244D0008 */ addiu $t5, $v0, 0x8 +/* 2131C 8002071C AE0D0000 */ sw $t5, 0x0($s0) +/* 21320 80020720 AC400004 */ sw $zero, 0x4($v0) +/* 21324 80020724 AC590000 */ sw $t9, 0x0($v0) +/* 21328 80020728 8E020000 */ lw $v0, 0x0($s0) +/* 2132C 8002072C 358C0100 */ ori $t4, $t4, (0xF5000100 & 0xFFFF) +/* 21330 80020730 3C0E0700 */ lui $t6, (0x7000000 >> 16) +/* 21334 80020734 244B0008 */ addiu $t3, $v0, 0x8 +/* 21338 80020738 AE0B0000 */ sw $t3, 0x0($s0) +/* 2133C 8002073C AC4E0004 */ sw $t6, 0x4($v0) +/* 21340 80020740 AC4C0000 */ sw $t4, 0x0($v0) +/* 21344 80020744 8E020000 */ lw $v0, 0x0($s0) +/* 21348 80020748 3C18E600 */ lui $t8, (0xE6000000 >> 16) +/* 2134C 8002074C 3C19F000 */ lui $t9, (0xF0000000 >> 16) +/* 21350 80020750 244F0008 */ addiu $t7, $v0, 0x8 +/* 21354 80020754 AE0F0000 */ sw $t7, 0x0($s0) +/* 21358 80020758 AC400004 */ sw $zero, 0x4($v0) +/* 2135C 8002075C AC580000 */ sw $t8, 0x0($v0) +/* 21360 80020760 8E020000 */ lw $v0, 0x0($s0) +/* 21364 80020764 3C0B073F */ lui $t3, (0x73FC000 >> 16) +/* 21368 80020768 356BC000 */ ori $t3, $t3, (0x73FC000 & 0xFFFF) +/* 2136C 8002076C 244D0008 */ addiu $t5, $v0, 0x8 +/* 21370 80020770 AE0D0000 */ sw $t5, 0x0($s0) +/* 21374 80020774 AC4B0004 */ sw $t3, 0x4($v0) +/* 21378 80020778 AC590000 */ sw $t9, 0x0($v0) +/* 2137C 8002077C 8E020000 */ lw $v0, 0x0($s0) +/* 21380 80020780 3C0EE700 */ lui $t6, (0xE7000000 >> 16) +/* 21384 80020784 24040003 */ addiu $a0, $zero, 0x3 +/* 21388 80020788 244C0008 */ addiu $t4, $v0, 0x8 +/* 2138C 8002078C AE0C0000 */ sw $t4, 0x0($s0) +/* 21390 80020790 AC400004 */ sw $zero, 0x4($v0) +/* 21394 80020794 AC4E0000 */ sw $t6, 0x0($v0) +/* 21398 80020798 8E290000 */ lw $t1, 0x0($s1) +/* 2139C 8002079C 24050010 */ addiu $a1, $zero, 0x10 +/* 213A0 800207A0 952F0090 */ lhu $t7, 0x90($t1) +/* 213A4 800207A4 31F80080 */ andi $t8, $t7, 0x80 +/* 213A8 800207A8 53000033 */ beql $t8, $zero, .L80020878 +/* 213AC 800207AC 8FBF0034 */ lw $ra, 0x34($sp) +/* 213B0 800207B0 8D2D0020 */ lw $t5, 0x20($t1) +/* 213B4 800207B4 2406001C */ addiu $a2, $zero, 0x1C +/* 213B8 800207B8 0C008353 */ jal func_80020D4C +/* 213BC 800207BC 95A70006 */ lhu $a3, 0x6($t5) +/* 213C0 800207C0 8E390000 */ lw $t9, 0x0($s1) +/* 213C4 800207C4 24040003 */ addiu $a0, $zero, 0x3 +/* 213C8 800207C8 24050010 */ addiu $a1, $zero, 0x10 +/* 213CC 800207CC 8F2B0020 */ lw $t3, 0x20($t9) +/* 213D0 800207D0 24060026 */ addiu $a2, $zero, 0x26 +/* 213D4 800207D4 0C008353 */ jal func_80020D4C +/* 213D8 800207D8 9567000E */ lhu $a3, 0xE($t3) +/* 213DC 800207DC 8E2C0000 */ lw $t4, 0x0($s1) +/* 213E0 800207E0 24040003 */ addiu $a0, $zero, 0x3 +/* 213E4 800207E4 24050046 */ addiu $a1, $zero, 0x46 +/* 213E8 800207E8 8D8E0020 */ lw $t6, 0x20($t4) +/* 213EC 800207EC 2406001C */ addiu $a2, $zero, 0x1C +/* 213F0 800207F0 0C008353 */ jal func_80020D4C +/* 213F4 800207F4 95C7002A */ lhu $a3, 0x2A($t6) +/* 213F8 800207F8 8E2F0000 */ lw $t7, 0x0($s1) +/* 213FC 800207FC 24040003 */ addiu $a0, $zero, 0x3 +/* 21400 80020800 24050046 */ addiu $a1, $zero, 0x46 +/* 21404 80020804 8DF80020 */ lw $t8, 0x20($t7) +/* 21408 80020808 24060026 */ addiu $a2, $zero, 0x26 +/* 2140C 8002080C 0C008353 */ jal func_80020D4C +/* 21410 80020810 9707000C */ lhu $a3, 0xC($t8) +/* 21414 80020814 8E2D0000 */ lw $t5, 0x0($s1) +/* 21418 80020818 24010004 */ addiu $at, $zero, 0x4 +/* 2141C 8002081C 3C04803A */ lui $a0, %hi(gTex_HUD_and_Menu) +/* 21420 80020820 8DB90020 */ lw $t9, 0x20($t5) +/* 21424 80020824 24846F40 */ addiu $a0, $a0, %lo(gTex_HUD_and_Menu) +/* 21428 80020828 2405005B */ addiu $a1, $zero, 0x5B +/* 2142C 8002082C 97220026 */ lhu $v0, 0x26($t9) +/* 21430 80020830 24060003 */ addiu $a2, $zero, 0x3 +/* 21434 80020834 2407000C */ addiu $a3, $zero, 0xC +/* 21438 80020838 1041000E */ beq $v0, $at, .L80020874 +/* 2143C 8002083C 240B000C */ addiu $t3, $zero, 0xC +/* 21440 80020840 00026080 */ sll $t4, $v0, 2 +/* 21444 80020844 01826023 */ subu $t4, $t4, $v0 +/* 21448 80020848 000C6080 */ sll $t4, $t4, 2 +/* 2144C 8002084C 258E0020 */ addiu $t6, $t4, 0x20 +/* 21450 80020850 240F0010 */ addiu $t7, $zero, 0x10 +/* 21454 80020854 24180400 */ addiu $t8, $zero, 0x400 +/* 21458 80020858 240D0400 */ addiu $t5, $zero, 0x400 +/* 2145C 8002085C AFAD0020 */ sw $t5, 0x20($sp) +/* 21460 80020860 AFB8001C */ sw $t8, 0x1C($sp) +/* 21464 80020864 AFAF0018 */ sw $t7, 0x18($sp) +/* 21468 80020868 AFAE0014 */ sw $t6, 0x14($sp) +/* 2146C 8002086C 0C00843F */ jal func_800210FC +/* 21470 80020870 AFAB0010 */ sw $t3, 0x10($sp) +.L80020874: +/* 21474 80020874 8FBF0034 */ lw $ra, 0x34($sp) +.L80020878: +/* 21478 80020878 8FB0002C */ lw $s0, 0x2C($sp) +/* 2147C 8002087C 8FB10030 */ lw $s1, 0x30($sp) +/* 21480 80020880 03E00008 */ jr $ra +/* 21484 80020884 27BD0038 */ addiu $sp, $sp, 0x38 + +glabel Init_MISS_Icon +/* 21488 80020888 3C028009 */ lui $v0, %hi(gMISSData) +/* 2148C 8002088C 2442C668 */ addiu $v0, $v0, %lo(gMISSData) +/* 21490 80020890 24030008 */ addiu $v1, $zero, 0x8 +.L80020894: +/* 21494 80020894 2463FFFC */ addiu $v1, $v1, -0x4 +/* 21498 80020898 A4400000 */ sh $zero, 0x0($v0) +/* 2149C 8002089C A440001C */ sh $zero, 0x1C($v0) +/* 214A0 800208A0 A4400038 */ sh $zero, 0x38($v0) +/* 214A4 800208A4 A4400054 */ sh $zero, 0x54($v0) +/* 214A8 800208A8 1460FFFA */ bnez $v1, .L80020894 +/* 214AC 800208AC 24420070 */ addiu $v0, $v0, 0x70 +/* 214B0 800208B0 03E00008 */ jr $ra +/* 214B4 800208B4 00000000 */ nop + +glabel Setup_MISS_Icon +/* 214B8 800208B8 3C0E8009 */ lui $t6, %hi(gMISSData) +/* 214BC 800208BC 95CEC668 */ lhu $t6, %lo(gMISSData)($t6) +/* 214C0 800208C0 3C028009 */ lui $v0, %hi(gMISSData) +/* 214C4 800208C4 2442C668 */ addiu $v0, $v0, %lo(gMISSData) +/* 214C8 800208C8 11C00007 */ beqz $t6, .L800208E8 +/* 214CC 800208CC 24030007 */ addiu $v1, $zero, 0x7 +/* 214D0 800208D0 2463FFFF */ addiu $v1, $v1, -0x1 +.L800208D4: +/* 214D4 800208D4 10600004 */ beqz $v1, .L800208E8 +/* 214D8 800208D8 2442001C */ addiu $v0, $v0, 0x1C +/* 214DC 800208DC 944F0000 */ lhu $t7, 0x0($v0) +/* 214E0 800208E0 55E0FFFC */ bnel $t7, $zero, .L800208D4 +/* 214E4 800208E4 2463FFFF */ addiu $v1, $v1, -0x1 +.L800208E8: +/* 214E8 800208E8 44800000 */ mtc1 $zero, $f0 +/* 214EC 800208EC 2418002D */ addiu $t8, $zero, 0x2D +/* 214F0 800208F0 A4580000 */ sh $t8, 0x0($v0) +/* 214F4 800208F4 AC440004 */ sw $a0, 0x4($v0) +/* 214F8 800208F8 E4400010 */ swc1 $f0, 0x10($v0) +/* 214FC 800208FC E4400008 */ swc1 $f0, 0x8($v0) +/* 21500 80020900 8C830064 */ lw $v1, 0x64($a0) +/* 21504 80020904 24010001 */ addiu $at, $zero, 0x1 +/* 21508 80020908 24080023 */ addiu $t0, $zero, 0x23 +/* 2150C 8002090C 94650000 */ lhu $a1, 0x0($v1) +/* 21510 80020910 24090031 */ addiu $t1, $zero, 0x31 +/* 21514 80020914 240A0029 */ addiu $t2, $zero, 0x29 +/* 21518 80020918 14A00006 */ bnez $a1, .L80020934 +/* 2151C 8002091C 240B000E */ addiu $t3, $zero, 0xE +/* 21520 80020920 C464001C */ lwc1 $f4, 0x1C($v1) +/* 21524 80020924 C4860024 */ lwc1 $f6, 0x24($a0) +/* 21528 80020928 46062202 */ mul.s $f8, $f4, $f6 +/* 2152C 8002092C 10000010 */ b .L80020970 +/* 21530 80020930 E448000C */ swc1 $f8, 0xC($v0) +.L80020934: +/* 21534 80020934 54A10008 */ bnel $a1, $at, .L80020958 +/* 21538 80020938 C4840024 */ lwc1 $f4, 0x24($a0) +/* 2153C 8002093C 8C990068 */ lw $t9, 0x68($a0) +/* 21540 80020940 C4900004 */ lwc1 $f16, 0x4($a0) +/* 21544 80020944 C72A0094 */ lwc1 $f10, 0x94($t9) +/* 21548 80020948 46105481 */ sub.s $f18, $f10, $f16 +/* 2154C 8002094C 10000008 */ b .L80020970 +/* 21550 80020950 E452000C */ swc1 $f18, 0xC($v0) +/* 21554 80020954 C4840024 */ lwc1 $f4, 0x24($a0) +.L80020958: +/* 21558 80020958 3C018007 */ lui $at, %hi(D_800716C8) +/* 2155C 8002095C D42816C8 */ ldc1 $f8, %lo(D_800716C8)($at) +/* 21560 80020960 460021A1 */ cvt.d.s $f6, $f4 +/* 21564 80020964 46283282 */ mul.d $f10, $f6, $f8 +/* 21568 80020968 46205420 */ cvt.s.d $f16, $f10 +/* 2156C 8002096C E450000C */ swc1 $f16, 0xC($v0) +.L80020970: +/* 21570 80020970 A4480014 */ sh $t0, 0x14($v0) +/* 21574 80020974 A4490016 */ sh $t1, 0x16($v0) +/* 21578 80020978 A44A0018 */ sh $t2, 0x18($v0) +/* 2157C 8002097C A44B001A */ sh $t3, 0x1A($v0) +/* 21580 80020980 03E00008 */ jr $ra +/* 21584 80020984 00000000 */ nop + +glabel Draw_MISS_Icon +/* 21588 80020988 27BDFF78 */ addiu $sp, $sp, -0x88 +/* 2158C 8002098C 3C038008 */ lui $v1, %hi(gMasterGfxPos) +/* 21590 80020990 2463B2FC */ addiu $v1, $v1, %lo(gMasterGfxPos) +/* 21594 80020994 AFBF0044 */ sw $ra, 0x44($sp) +/* 21598 80020998 AFB40040 */ sw $s4, 0x40($sp) +/* 2159C 8002099C AFB3003C */ sw $s3, 0x3C($sp) +/* 215A0 800209A0 AFB20038 */ sw $s2, 0x38($sp) +/* 215A4 800209A4 AFB10034 */ sw $s1, 0x34($sp) +/* 215A8 800209A8 AFB00030 */ sw $s0, 0x30($sp) +/* 215AC 800209AC 3C0BE700 */ lui $t3, (0xE7000000 >> 16) +/* 215B0 800209B0 8C620000 */ lw $v0, 0x0($v1) +/* 215B4 800209B4 3C18FD10 */ lui $t8, (0xFD100000 >> 16) +/* 215B8 800209B8 3C108009 */ lui $s0, %hi(gMISSData) +/* 215BC 800209BC 244E0008 */ addiu $t6, $v0, 0x8 +/* 215C0 800209C0 AC6E0000 */ sw $t6, 0x0($v1) +/* 215C4 800209C4 AC400004 */ sw $zero, 0x4($v0) +/* 215C8 800209C8 AC4B0000 */ sw $t3, 0x0($v0) +/* 215CC 800209CC 8C620000 */ lw $v0, 0x0($v1) +/* 215D0 800209D0 3C19803A */ lui $t9, %hi(gBattleStatusPal) +/* 215D4 800209D4 27392960 */ addiu $t9, $t9, %lo(gBattleStatusPal) +/* 215D8 800209D8 244F0008 */ addiu $t7, $v0, 0x8 +/* 215DC 800209DC AC6F0000 */ sw $t7, 0x0($v1) +/* 215E0 800209E0 AC590004 */ sw $t9, 0x4($v0) +/* 215E4 800209E4 AC580000 */ sw $t8, 0x0($v0) +/* 215E8 800209E8 8C620000 */ lw $v0, 0x0($v1) +/* 215EC 800209EC 3C0DE800 */ lui $t5, (0xE8000000 >> 16) +/* 215F0 800209F0 3C0FF500 */ lui $t7, (0xF5000100 >> 16) +/* 215F4 800209F4 244C0008 */ addiu $t4, $v0, 0x8 +/* 215F8 800209F8 AC6C0000 */ sw $t4, 0x0($v1) +/* 215FC 800209FC AC400004 */ sw $zero, 0x4($v0) +/* 21600 80020A00 AC4D0000 */ sw $t5, 0x0($v0) +/* 21604 80020A04 8C620000 */ lw $v0, 0x0($v1) +/* 21608 80020A08 35EF0100 */ ori $t7, $t7, (0xF5000100 & 0xFFFF) +/* 2160C 80020A0C 3C180700 */ lui $t8, (0x7000000 >> 16) +/* 21610 80020A10 244E0008 */ addiu $t6, $v0, 0x8 +/* 21614 80020A14 AC6E0000 */ sw $t6, 0x0($v1) +/* 21618 80020A18 AC580004 */ sw $t8, 0x4($v0) +/* 2161C 80020A1C AC4F0000 */ sw $t7, 0x0($v0) +/* 21620 80020A20 8C620000 */ lw $v0, 0x0($v1) +/* 21624 80020A24 3C0CE600 */ lui $t4, (0xE6000000 >> 16) +/* 21628 80020A28 3C0EF000 */ lui $t6, (0xF0000000 >> 16) +/* 2162C 80020A2C 24590008 */ addiu $t9, $v0, 0x8 +/* 21630 80020A30 AC790000 */ sw $t9, 0x0($v1) +/* 21634 80020A34 AC400004 */ sw $zero, 0x4($v0) +/* 21638 80020A38 AC4C0000 */ sw $t4, 0x0($v0) +/* 2163C 80020A3C 8C620000 */ lw $v0, 0x0($v1) +/* 21640 80020A40 3C0F073F */ lui $t7, (0x73FC000 >> 16) +/* 21644 80020A44 35EFC000 */ ori $t7, $t7, (0x73FC000 & 0xFFFF) +/* 21648 80020A48 244D0008 */ addiu $t5, $v0, 0x8 +/* 2164C 80020A4C AC6D0000 */ sw $t5, 0x0($v1) +/* 21650 80020A50 AC4F0004 */ sw $t7, 0x4($v0) +/* 21654 80020A54 AC4E0000 */ sw $t6, 0x0($v0) +/* 21658 80020A58 8C620000 */ lw $v0, 0x0($v1) +/* 2165C 80020A5C 2610C668 */ addiu $s0, $s0, %lo(gMISSData) +/* 21660 80020A60 24110008 */ addiu $s1, $zero, 0x8 +/* 21664 80020A64 24580008 */ addiu $t8, $v0, 0x8 +/* 21668 80020A68 AC780000 */ sw $t8, 0x0($v1) +/* 2166C 80020A6C AC400004 */ sw $zero, 0x4($v0) +/* 21670 80020A70 AC4B0000 */ sw $t3, 0x0($v0) +/* 21674 80020A74 3C14803A */ lui $s4, %hi(D_803A6F70) +/* 21678 80020A78 26946F70 */ addiu $s4, $s4, %lo(D_803A6F70) +/* 2167C 80020A7C 27B30070 */ addiu $s3, $sp, 0x70 +/* 21680 80020A80 27B20074 */ addiu $s2, $sp, 0x74 +.L80020A84: +/* 21684 80020A84 96190000 */ lhu $t9, 0x0($s0) +/* 21688 80020A88 02403825 */ or $a3, $s2, $zero +/* 2168C 80020A8C 53200025 */ beql $t9, $zero, .L80020B24 +/* 21690 80020A90 2631FFFF */ addiu $s1, $s1, -0x1 +/* 21694 80020A94 8E020004 */ lw $v0, 0x4($s0) +/* 21698 80020A98 C60C0008 */ lwc1 $f12, 0x8($s0) +/* 2169C 80020A9C C60E000C */ lwc1 $f14, 0xC($s0) +/* 216A0 80020AA0 10400007 */ beqz $v0, .L80020AC0 +/* 216A4 80020AA4 C6000010 */ lwc1 $f0, 0x10($s0) +/* 216A8 80020AA8 C4440000 */ lwc1 $f4, 0x0($v0) +/* 216AC 80020AAC C4460004 */ lwc1 $f6, 0x4($v0) +/* 216B0 80020AB0 C4480008 */ lwc1 $f8, 0x8($v0) +/* 216B4 80020AB4 46046300 */ add.s $f12, $f12, $f4 +/* 216B8 80020AB8 46067380 */ add.s $f14, $f14, $f6 +/* 216BC 80020ABC 46080000 */ add.s $f0, $f0, $f8 +.L80020AC0: +/* 216C0 80020AC0 44060000 */ mfc1 $a2, $f0 +/* 216C4 80020AC4 0C00904F */ jal func_8002413C +/* 216C8 80020AC8 AFB30010 */ sw $s3, 0x10($sp) +/* 216CC 80020ACC 9602001A */ lhu $v0, 0x1A($s0) +/* 216D0 80020AD0 96070018 */ lhu $a3, 0x18($s0) +/* 216D4 80020AD4 8FAC0074 */ lw $t4, 0x74($sp) +/* 216D8 80020AD8 AFA20010 */ sw $v0, 0x10($sp) +/* 216DC 80020ADC 960F0014 */ lhu $t7, 0x14($s0) +/* 216E0 80020AE0 00076843 */ sra $t5, $a3, 1 +/* 216E4 80020AE4 8FAE0070 */ lw $t6, 0x70($sp) +/* 216E8 80020AE8 AFAF0014 */ sw $t7, 0x14($sp) +/* 216EC 80020AEC 96180016 */ lhu $t8, 0x16($s0) +/* 216F0 80020AF0 018D2823 */ subu $a1, $t4, $t5 +/* 216F4 80020AF4 240C0400 */ addiu $t4, $zero, 0x400 +/* 216F8 80020AF8 24190400 */ addiu $t9, $zero, 0x400 +/* 216FC 80020AFC AFB9001C */ sw $t9, 0x1C($sp) +/* 21700 80020B00 AFAC0020 */ sw $t4, 0x20($sp) +/* 21704 80020B04 02802025 */ or $a0, $s4, $zero +/* 21708 80020B08 01C23023 */ subu $a2, $t6, $v0 +/* 2170C 80020B0C 0C00843F */ jal func_800210FC +/* 21710 80020B10 AFB80018 */ sw $t8, 0x18($sp) +/* 21714 80020B14 960D0000 */ lhu $t5, 0x0($s0) +/* 21718 80020B18 25AEFFFF */ addiu $t6, $t5, -0x1 +/* 2171C 80020B1C A60E0000 */ sh $t6, 0x0($s0) +/* 21720 80020B20 2631FFFF */ addiu $s1, $s1, -0x1 +.L80020B24: +/* 21724 80020B24 1620FFD7 */ bnez $s1, .L80020A84 +/* 21728 80020B28 2610001C */ addiu $s0, $s0, 0x1C +/* 2172C 80020B2C 8FBF0044 */ lw $ra, 0x44($sp) +/* 21730 80020B30 8FB00030 */ lw $s0, 0x30($sp) +/* 21734 80020B34 8FB10034 */ lw $s1, 0x34($sp) +/* 21738 80020B38 8FB20038 */ lw $s2, 0x38($sp) +/* 2173C 80020B3C 8FB3003C */ lw $s3, 0x3C($sp) +/* 21740 80020B40 8FB40040 */ lw $s4, 0x40($sp) +/* 21744 80020B44 03E00008 */ jr $ra +/* 21748 80020B48 27BD0088 */ addiu $sp, $sp, 0x88 + +glabel func_80020B4C +/* 2174C 80020B4C 27BDFFB0 */ addiu $sp, $sp, -0x50 +/* 21750 80020B50 AFB40040 */ sw $s4, 0x40($sp) +/* 21754 80020B54 AFB3003C */ sw $s3, 0x3C($sp) +/* 21758 80020B58 AFB20038 */ sw $s2, 0x38($sp) +/* 2175C 80020B5C AFB10034 */ sw $s1, 0x34($sp) +/* 21760 80020B60 3C088008 */ lui $t0, %hi(gMasterGfxPos) +/* 21764 80020B64 2508B2FC */ addiu $t0, $t0, %lo(gMasterGfxPos) +/* 21768 80020B68 00E08825 */ or $s1, $a3, $zero +/* 2176C 80020B6C 00809025 */ or $s2, $a0, $zero +/* 21770 80020B70 00A09825 */ or $s3, $a1, $zero +/* 21774 80020B74 3C14E700 */ lui $s4, (0xE7000000 >> 16) +/* 21778 80020B78 AFBF004C */ sw $ra, 0x4C($sp) +/* 2177C 80020B7C AFB60048 */ sw $s6, 0x48($sp) +/* 21780 80020B80 AFB50044 */ sw $s5, 0x44($sp) +/* 21784 80020B84 AFB00030 */ sw $s0, 0x30($sp) +/* 21788 80020B88 8D020000 */ lw $v0, 0x0($t0) +/* 2178C 80020B8C 3C18FD10 */ lui $t8, (0xFD100000 >> 16) +/* 21790 80020B90 0006C880 */ sll $t9, $a2, 2 +/* 21794 80020B94 244E0008 */ addiu $t6, $v0, 0x8 +/* 21798 80020B98 AD0E0000 */ sw $t6, 0x0($t0) +/* 2179C 80020B9C AC400004 */ sw $zero, 0x4($v0) +/* 217A0 80020BA0 AC540000 */ sw $s4, 0x0($v0) +/* 217A4 80020BA4 8D020000 */ lw $v0, 0x0($t0) +/* 217A8 80020BA8 3C0E803A */ lui $t6, %hi(D_803A6FB0) +/* 217AC 80020BAC 01D97021 */ addu $t6, $t6, $t9 +/* 217B0 80020BB0 244F0008 */ addiu $t7, $v0, 0x8 +/* 217B4 80020BB4 AD0F0000 */ sw $t7, 0x0($t0) +/* 217B8 80020BB8 AC580000 */ sw $t8, 0x0($v0) +/* 217BC 80020BBC 8DCE6FB0 */ lw $t6, %lo(D_803A6FB0)($t6) +/* 217C0 80020BC0 24160006 */ addiu $s6, $zero, 0x6 +/* 217C4 80020BC4 3C15803A */ lui $s5, %hi(D_803A6F80) +/* 217C8 80020BC8 AC4E0004 */ sw $t6, 0x4($v0) +/* 217CC 80020BCC 8D020000 */ lw $v0, 0x0($t0) +/* 217D0 80020BD0 3C18E800 */ lui $t8, (0xE8000000 >> 16) +/* 217D4 80020BD4 3C0EF500 */ lui $t6, (0xF5000100 >> 16) +/* 217D8 80020BD8 244F0008 */ addiu $t7, $v0, 0x8 +/* 217DC 80020BDC AD0F0000 */ sw $t7, 0x0($t0) +/* 217E0 80020BE0 AC400004 */ sw $zero, 0x4($v0) +/* 217E4 80020BE4 AC580000 */ sw $t8, 0x0($v0) +/* 217E8 80020BE8 8D020000 */ lw $v0, 0x0($t0) +/* 217EC 80020BEC 35CE0100 */ ori $t6, $t6, (0xF5000100 & 0xFFFF) +/* 217F0 80020BF0 3C0F0700 */ lui $t7, (0x7000000 >> 16) +/* 217F4 80020BF4 24590008 */ addiu $t9, $v0, 0x8 +/* 217F8 80020BF8 AD190000 */ sw $t9, 0x0($t0) +/* 217FC 80020BFC AC4F0004 */ sw $t7, 0x4($v0) +/* 21800 80020C00 AC4E0000 */ sw $t6, 0x0($v0) +/* 21804 80020C04 8D020000 */ lw $v0, 0x0($t0) +/* 21808 80020C08 3C19E600 */ lui $t9, (0xE6000000 >> 16) +/* 2180C 80020C0C 3C0FF000 */ lui $t7, (0xF0000000 >> 16) +/* 21810 80020C10 24580008 */ addiu $t8, $v0, 0x8 +/* 21814 80020C14 AD180000 */ sw $t8, 0x0($t0) +/* 21818 80020C18 AC400004 */ sw $zero, 0x4($v0) +/* 2181C 80020C1C AC590000 */ sw $t9, 0x0($v0) +/* 21820 80020C20 8D020000 */ lw $v0, 0x0($t0) +/* 21824 80020C24 3C180703 */ lui $t8, (0x703C000 >> 16) +/* 21828 80020C28 3718C000 */ ori $t8, $t8, (0x703C000 & 0xFFFF) +/* 2182C 80020C2C 244E0008 */ addiu $t6, $v0, 0x8 +/* 21830 80020C30 AD0E0000 */ sw $t6, 0x0($t0) +/* 21834 80020C34 AC580004 */ sw $t8, 0x4($v0) +/* 21838 80020C38 AC4F0000 */ sw $t7, 0x0($v0) +/* 2183C 80020C3C 8D020000 */ lw $v0, 0x0($t0) +/* 21840 80020C40 26B56F80 */ addiu $s5, $s5, %lo(D_803A6F80) +/* 21844 80020C44 2410002C */ addiu $s0, $zero, 0x2C +/* 21848 80020C48 24590008 */ addiu $t9, $v0, 0x8 +/* 2184C 80020C4C AD190000 */ sw $t9, 0x0($t0) +/* 21850 80020C50 AC400004 */ sw $zero, 0x4($v0) +/* 21854 80020C54 AC540000 */ sw $s4, 0x0($v0) +/* 21858 80020C58 92230000 */ lbu $v1, 0x0($s1) +/* 2185C 80020C5C 24140020 */ addiu $s4, $zero, 0x20 +/* 21860 80020C60 50600024 */ beql $v1, $zero, .L80020CF4 +/* 21864 80020C64 8FBF004C */ lw $ra, 0x4C($sp) +.L80020C68: +/* 21868 80020C68 16830004 */ bne $s4, $v1, .L80020C7C +/* 2186C 80020C6C 00602025 */ or $a0, $v1, $zero +/* 21870 80020C70 26310001 */ addiu $s1, $s1, 0x1 +/* 21874 80020C74 1000001B */ b .L80020CE4 +/* 21878 80020C78 26520006 */ addiu $s2, $s2, 0x6 +.L80020C7C: +/* 2187C 80020C7C 3C028005 */ lui $v0, %hi(D_8004D44C) +/* 21880 80020C80 2442D44C */ addiu $v0, $v0, %lo(D_8004D44C) +/* 21884 80020C84 00001825 */ or $v1, $zero, $zero +.L80020C88: +/* 21888 80020C88 904E0000 */ lbu $t6, 0x0($v0) +/* 2188C 80020C8C 11C40004 */ beq $t6, $a0, .L80020CA0 +/* 21890 80020C90 00000000 */ nop +/* 21894 80020C94 24630001 */ addiu $v1, $v1, 0x1 +/* 21898 80020C98 1470FFFB */ bne $v1, $s0, .L80020C88 +/* 2189C 80020C9C 24420001 */ addiu $v0, $v0, 0x1 +.L80020CA0: +/* 218A0 80020CA0 00760019 */ multu $v1, $s6 +/* 218A4 80020CA4 240F0008 */ addiu $t7, $zero, 0x8 +/* 218A8 80020CA8 24190400 */ addiu $t9, $zero, 0x400 +/* 218AC 80020CAC 240E0400 */ addiu $t6, $zero, 0x400 +/* 218B0 80020CB0 AFAE0020 */ sw $t6, 0x20($sp) +/* 218B4 80020CB4 AFB9001C */ sw $t9, 0x1C($sp) +/* 218B8 80020CB8 AFAF0010 */ sw $t7, 0x10($sp) +/* 218BC 80020CBC 02A02025 */ or $a0, $s5, $zero +/* 218C0 80020CC0 02402825 */ or $a1, $s2, $zero +/* 218C4 80020CC4 02603025 */ or $a2, $s3, $zero +/* 218C8 80020CC8 0000C012 */ mflo $t8 +/* 218CC 80020CCC AFB80014 */ sw $t8, 0x14($sp) +/* 218D0 80020CD0 24070006 */ addiu $a3, $zero, 0x6 +/* 218D4 80020CD4 0C00843F */ jal func_800210FC +/* 218D8 80020CD8 AFA00018 */ sw $zero, 0x18($sp) +/* 218DC 80020CDC 26520006 */ addiu $s2, $s2, 0x6 +/* 218E0 80020CE0 26310001 */ addiu $s1, $s1, 0x1 +.L80020CE4: +/* 218E4 80020CE4 92230000 */ lbu $v1, 0x0($s1) +/* 218E8 80020CE8 1460FFDF */ bnez $v1, .L80020C68 +/* 218EC 80020CEC 00000000 */ nop +/* 218F0 80020CF0 8FBF004C */ lw $ra, 0x4C($sp) +.L80020CF4: +/* 218F4 80020CF4 8FB00030 */ lw $s0, 0x30($sp) +/* 218F8 80020CF8 8FB10034 */ lw $s1, 0x34($sp) +/* 218FC 80020CFC 8FB20038 */ lw $s2, 0x38($sp) +/* 21900 80020D00 8FB3003C */ lw $s3, 0x3C($sp) +/* 21904 80020D04 8FB40040 */ lw $s4, 0x40($sp) +/* 21908 80020D08 8FB50044 */ lw $s5, 0x44($sp) +/* 2190C 80020D0C 8FB60048 */ lw $s6, 0x48($sp) +/* 21910 80020D10 03E00008 */ jr $ra +/* 21914 80020D14 27BD0050 */ addiu $sp, $sp, 0x50 + +glabel func_80020D18 +/* 21918 80020D18 90820000 */ lbu $v0, 0x0($a0) +/* 2191C 80020D1C 00001825 */ or $v1, $zero, $zero +/* 21920 80020D20 24840001 */ addiu $a0, $a0, 0x1 +/* 21924 80020D24 50400007 */ beql $v0, $zero, .L80020D44 +/* 21928 80020D28 00601025 */ or $v0, $v1, $zero +/* 2192C 80020D2C 90820000 */ lbu $v0, 0x0($a0) +.L80020D30: +/* 21930 80020D30 24630001 */ addiu $v1, $v1, 0x1 +/* 21934 80020D34 24840001 */ addiu $a0, $a0, 0x1 +/* 21938 80020D38 5440FFFD */ bnel $v0, $zero, .L80020D30 +/* 2193C 80020D3C 90820000 */ lbu $v0, 0x0($a0) +/* 21940 80020D40 00601025 */ or $v0, $v1, $zero +.L80020D44: +/* 21944 80020D44 03E00008 */ jr $ra +/* 21948 80020D48 00000000 */ nop + +glabel func_80020D4C +/* 2194C 80020D4C 27BDFFA8 */ addiu $sp, $sp, -0x58 +/* 21950 80020D50 AFB00024 */ sw $s0, 0x24($sp) +/* 21954 80020D54 00A08025 */ or $s0, $a1, $zero +/* 21958 80020D58 AFB40034 */ sw $s4, 0x34($sp) +/* 2195C 80020D5C AFB30030 */ sw $s3, 0x30($sp) +/* 21960 80020D60 3093FFFF */ andi $s3, $a0, 0xFFFF +/* 21964 80020D64 00C0A025 */ or $s4, $a2, $zero +/* 21968 80020D68 27A50048 */ addiu $a1, $sp, 0x48 +/* 2196C 80020D6C AFBF003C */ sw $ra, 0x3C($sp) +/* 21970 80020D70 AFB50038 */ sw $s5, 0x38($sp) +/* 21974 80020D74 AFB2002C */ sw $s2, 0x2C($sp) +/* 21978 80020D78 AFB10028 */ sw $s1, 0x28($sp) +/* 2197C 80020D7C AFA40058 */ sw $a0, 0x58($sp) +/* 21980 80020D80 00A08825 */ or $s1, $a1, $zero +/* 21984 80020D84 00E02025 */ or $a0, $a3, $zero +/* 21988 80020D88 0C0090CC */ jal func_80024330 +/* 2198C 80020D8C 3266FFFF */ andi $a2, $s3, 0xFFFF +/* 21990 80020D90 1040001B */ beqz $v0, .L80020E00 +/* 21994 80020D94 00409025 */ or $s2, $v0, $zero +/* 21998 80020D98 24150020 */ addiu $s5, $zero, 0x20 +.L80020D9C: +/* 2199C 80020D9C 92220000 */ lbu $v0, 0x0($s1) +/* 219A0 80020DA0 02002025 */ or $a0, $s0, $zero +/* 219A4 80020DA4 02802825 */ or $a1, $s4, $zero +/* 219A8 80020DA8 12A2000F */ beq $s5, $v0, .L80020DE8 +/* 219AC 80020DAC 32690006 */ andi $t1, $s3, 0x6 +/* 219B0 80020DB0 000270C0 */ sll $t6, $v0, 3 +/* 219B4 80020DB4 25CF0020 */ addiu $t7, $t6, 0x20 +/* 219B8 80020DB8 2418001D */ addiu $t8, $zero, 0x1D +/* 219BC 80020DBC 24190400 */ addiu $t9, $zero, 0x400 +/* 219C0 80020DC0 24080400 */ addiu $t0, $zero, 0x400 +/* 219C4 80020DC4 AFA8001C */ sw $t0, 0x1C($sp) +/* 219C8 80020DC8 AFB90018 */ sw $t9, 0x18($sp) +/* 219CC 80020DCC AFB80014 */ sw $t8, 0x14($sp) +/* 219D0 80020DD0 AFAF0010 */ sw $t7, 0x10($sp) +/* 219D4 80020DD4 24060008 */ addiu $a2, $zero, 0x8 +/* 219D8 80020DD8 0C0083E3 */ jal func_80020F8C +/* 219DC 80020DDC 2407000A */ addiu $a3, $zero, 0xA +/* 219E0 80020DE0 10000004 */ b .L80020DF4 +/* 219E4 80020DE4 26100007 */ addiu $s0, $s0, 0x7 +.L80020DE8: +/* 219E8 80020DE8 51200003 */ beql $t1, $zero, .L80020DF8 +/* 219EC 80020DEC 2652FFFF */ addiu $s2, $s2, -0x1 +/* 219F0 80020DF0 26100007 */ addiu $s0, $s0, 0x7 +.L80020DF4: +/* 219F4 80020DF4 2652FFFF */ addiu $s2, $s2, -0x1 +.L80020DF8: +/* 219F8 80020DF8 1640FFE8 */ bnez $s2, .L80020D9C +/* 219FC 80020DFC 26310001 */ addiu $s1, $s1, 0x1 +.L80020E00: +/* 21A00 80020E00 8FBF003C */ lw $ra, 0x3C($sp) +/* 21A04 80020E04 8FB00024 */ lw $s0, 0x24($sp) +/* 21A08 80020E08 8FB10028 */ lw $s1, 0x28($sp) +/* 21A0C 80020E0C 8FB2002C */ lw $s2, 0x2C($sp) +/* 21A10 80020E10 8FB30030 */ lw $s3, 0x30($sp) +/* 21A14 80020E14 8FB40034 */ lw $s4, 0x34($sp) +/* 21A18 80020E18 8FB50038 */ lw $s5, 0x38($sp) +/* 21A1C 80020E1C 03E00008 */ jr $ra +/* 21A20 80020E20 27BD0058 */ addiu $sp, $sp, 0x58 + +glabel func_80020E24 +/* 21A24 80020E24 03E00008 */ jr $ra +/* 21A28 80020E28 00000000 */ nop + +glabel func_80020E2C +/* 21A2C 80020E2C 3C038008 */ lui $v1, %hi(gMasterGfxPos) +/* 21A30 80020E30 2463B2FC */ addiu $v1, $v1, %lo(gMasterGfxPos) +/* 21A34 80020E34 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 21A38 80020E38 8C620000 */ lw $v0, 0x0($v1) +/* 21A3C 80020E3C 3C01FD48 */ lui $at, (0xFD480000 >> 16) +/* 21A40 80020E40 00A75021 */ addu $t2, $a1, $a3 +/* 21A44 80020E44 244E0008 */ addiu $t6, $v0, 0x8 +/* 21A48 80020E48 AC6E0000 */ sw $t6, 0x0($v1) +/* 21A4C 80020E4C 8C8F0008 */ lw $t7, 0x8($a0) +/* 21A50 80020E50 01456823 */ subu $t5, $t2, $a1 +/* 21A54 80020E54 25AD0008 */ addiu $t5, $t5, 0x8 +/* 21A58 80020E58 25F8FFFF */ addiu $t8, $t7, -0x1 +/* 21A5C 80020E5C 33190FFF */ andi $t9, $t8, 0xFFF +/* 21A60 80020E60 03217025 */ or $t6, $t9, $at +/* 21A64 80020E64 AC4E0000 */ sw $t6, 0x0($v0) +/* 21A68 80020E68 8C8F0000 */ lw $t7, 0x0($a0) +/* 21A6C 80020E6C 000DC8C3 */ sra $t9, $t5, 3 +/* 21A70 80020E70 332E01FF */ andi $t6, $t9, 0x1FF +/* 21A74 80020E74 AC4F0004 */ sw $t7, 0x4($v0) +/* 21A78 80020E78 8C620000 */ lw $v0, 0x0($v1) +/* 21A7C 80020E7C 000E7A40 */ sll $t7, $t6, 9 +/* 21A80 80020E80 3C01F548 */ lui $at, (0xF5480000 >> 16) +/* 21A84 80020E84 24580008 */ addiu $t8, $v0, 0x8 +/* 21A88 80020E88 AC780000 */ sw $t8, 0x0($v1) +/* 21A8C 80020E8C 01E16825 */ or $t5, $t7, $at +/* 21A90 80020E90 3C190700 */ lui $t9, (0x7000000 >> 16) +/* 21A94 80020E94 AC590004 */ sw $t9, 0x4($v0) +/* 21A98 80020E98 AC4D0000 */ sw $t5, 0x0($v0) +/* 21A9C 80020E9C 8C620000 */ lw $v0, 0x0($v1) +/* 21AA0 80020EA0 3C0FE600 */ lui $t7, (0xE6000000 >> 16) +/* 21AA4 80020EA4 0005C880 */ sll $t9, $a1, 2 +/* 21AA8 80020EA8 244E0008 */ addiu $t6, $v0, 0x8 +/* 21AAC 80020EAC AC6E0000 */ sw $t6, 0x0($v1) +/* 21AB0 80020EB0 AC400004 */ sw $zero, 0x4($v0) +/* 21AB4 80020EB4 AC4F0000 */ sw $t7, 0x0($v0) +/* 21AB8 80020EB8 8C620000 */ lw $v0, 0x0($v1) +/* 21ABC 80020EBC 332E0FFF */ andi $t6, $t9, 0xFFF +/* 21AC0 80020EC0 000E7B00 */ sll $t7, $t6, 12 +/* 21AC4 80020EC4 24580008 */ addiu $t8, $v0, 0x8 +/* 21AC8 80020EC8 AC780000 */ sw $t8, 0x0($v1) +/* 21ACC 80020ECC 0006C080 */ sll $t8, $a2, 2 +/* 21AD0 80020ED0 33190FFF */ andi $t9, $t8, 0xFFF +/* 21AD4 80020ED4 3C01F400 */ lui $at, (0xF4000000 >> 16) +/* 21AD8 80020ED8 01E17025 */ or $t6, $t7, $at +/* 21ADC 80020EDC 01D9C025 */ or $t8, $t6, $t9 +/* 21AE0 80020EE0 AFB90008 */ sw $t9, 0x8($sp) +/* 21AE4 80020EE4 AFAF000C */ sw $t7, 0xC($sp) +/* 21AE8 80020EE8 AC580000 */ sw $t8, 0x0($v0) +/* 21AEC 80020EEC 8FB80040 */ lw $t8, 0x40($sp) +/* 21AF0 80020EF0 000A7880 */ sll $t7, $t2, 2 +/* 21AF4 80020EF4 31EE0FFF */ andi $t6, $t7, 0xFFF +/* 21AF8 80020EF8 000ECB00 */ sll $t9, $t6, 12 +/* 21AFC 80020EFC 00D87821 */ addu $t7, $a2, $t8 +/* 21B00 80020F00 000F7080 */ sll $t6, $t7, 2 +/* 21B04 80020F04 31D80FFF */ andi $t8, $t6, 0xFFF +/* 21B08 80020F08 3C010700 */ lui $at, (0x7000000 >> 16) +/* 21B0C 80020F0C 03217825 */ or $t7, $t9, $at +/* 21B10 80020F10 01F87025 */ or $t6, $t7, $t8 +/* 21B14 80020F14 AFB80000 */ sw $t8, 0x0($sp) +/* 21B18 80020F18 AFB90004 */ sw $t9, 0x4($sp) +/* 21B1C 80020F1C AC4E0004 */ sw $t6, 0x4($v0) +/* 21B20 80020F20 8C620000 */ lw $v0, 0x0($v1) +/* 21B24 80020F24 3C0FE700 */ lui $t7, (0xE7000000 >> 16) +/* 21B28 80020F28 3C01F200 */ lui $at, (0xF2000000 >> 16) +/* 21B2C 80020F2C 24590008 */ addiu $t9, $v0, 0x8 +/* 21B30 80020F30 AC790000 */ sw $t9, 0x0($v1) +/* 21B34 80020F34 AFA2001C */ sw $v0, 0x1C($sp) +/* 21B38 80020F38 AC400004 */ sw $zero, 0x4($v0) +/* 21B3C 80020F3C AC4F0000 */ sw $t7, 0x0($v0) +/* 21B40 80020F40 8C620000 */ lw $v0, 0x0($v1) +/* 21B44 80020F44 244E0008 */ addiu $t6, $v0, 0x8 +/* 21B48 80020F48 AC6E0000 */ sw $t6, 0x0($v1) +/* 21B4C 80020F4C AC400004 */ sw $zero, 0x4($v0) +/* 21B50 80020F50 AC4D0000 */ sw $t5, 0x0($v0) +/* 21B54 80020F54 8C620000 */ lw $v0, 0x0($v1) +/* 21B58 80020F58 8FAF000C */ lw $t7, 0xC($sp) +/* 21B5C 80020F5C 8FAE0008 */ lw $t6, 0x8($sp) +/* 21B60 80020F60 24590008 */ addiu $t9, $v0, 0x8 +/* 21B64 80020F64 AC790000 */ sw $t9, 0x0($v1) +/* 21B68 80020F68 01E1C025 */ or $t8, $t7, $at +/* 21B6C 80020F6C 030EC825 */ or $t9, $t8, $t6 +/* 21B70 80020F70 AC590000 */ sw $t9, 0x0($v0) +/* 21B74 80020F74 8FB80000 */ lw $t8, 0x0($sp) +/* 21B78 80020F78 8FAF0004 */ lw $t7, 0x4($sp) +/* 21B7C 80020F7C 01F87025 */ or $t6, $t7, $t8 +/* 21B80 80020F80 AC4E0004 */ sw $t6, 0x4($v0) +/* 21B84 80020F84 03E00008 */ jr $ra +/* 21B88 80020F88 27BD0030 */ addiu $sp, $sp, 0x30 + +glabel func_80020F8C +/* 21B8C 80020F8C 3C0E8009 */ lui $t6, %hi(gHUDResolutionX) +/* 21B90 80020F90 8DCEC648 */ lw $t6, %lo(gHUDResolutionX)($t6) +/* 21B94 80020F94 3C028009 */ lui $v0, %hi(D_8008C650) +/* 21B98 80020F98 8C42C650 */ lw $v0, %lo(D_8008C650)($v0) +/* 21B9C 80020F9C 3C0F8009 */ lui $t7, %hi(gHUDResolutionY) +/* 21BA0 80020FA0 008E2021 */ addu $a0, $a0, $t6 +/* 21BA4 80020FA4 8DEFC64C */ lw $t7, %lo(gHUDResolutionY)($t7) +/* 21BA8 80020FA8 00C43021 */ addu $a2, $a2, $a0 +/* 21BAC 80020FAC 00C2082A */ slt $at, $a2, $v0 +/* 21BB0 80020FB0 14200050 */ bnez $at, .L800210F4 +/* 21BB4 80020FB4 00AF2821 */ addu $a1, $a1, $t7 +/* 21BB8 80020FB8 3C038009 */ lui $v1, %hi(D_8008C654) +/* 21BBC 80020FBC 8C63C654 */ lw $v1, %lo(D_8008C654)($v1) +/* 21BC0 80020FC0 00E53821 */ addu $a3, $a3, $a1 +/* 21BC4 80020FC4 3C088009 */ lui $t0, %hi(D_8008C658) +/* 21BC8 80020FC8 00E3082A */ slt $at, $a3, $v1 +/* 21BCC 80020FCC 14200049 */ bnez $at, .L800210F4 +/* 21BD0 80020FD0 00000000 */ nop +/* 21BD4 80020FD4 8D08C658 */ lw $t0, %lo(D_8008C658)($t0) +/* 21BD8 80020FD8 3C098009 */ lui $t1, %hi(D_8008C65C) +/* 21BDC 80020FDC 0104082A */ slt $at, $t0, $a0 +/* 21BE0 80020FE0 14200044 */ bnez $at, .L800210F4 +/* 21BE4 80020FE4 00000000 */ nop +/* 21BE8 80020FE8 8D29C65C */ lw $t1, %lo(D_8008C65C)($t1) +/* 21BEC 80020FEC 3C0A8008 */ lui $t2, %hi(gMasterGfxPos) +/* 21BF0 80020FF0 254AB2FC */ addiu $t2, $t2, %lo(gMasterGfxPos) +/* 21BF4 80020FF4 0125082A */ slt $at, $t1, $a1 +/* 21BF8 80020FF8 1420003E */ bnez $at, .L800210F4 +/* 21BFC 80020FFC 0106082A */ slt $at, $t0, $a2 +/* 21C00 80021000 10200002 */ beqz $at, .L8002100C +/* 21C04 80021004 8FB80010 */ lw $t8, 0x10($sp) +/* 21C08 80021008 01003025 */ or $a2, $t0, $zero +.L8002100C: +/* 21C0C 8002100C 0127082A */ slt $at, $t1, $a3 +/* 21C10 80021010 10200002 */ beqz $at, .L8002101C +/* 21C14 80021014 0304C823 */ subu $t9, $t8, $a0 +/* 21C18 80021018 01203825 */ or $a3, $t1, $zero +.L8002101C: +/* 21C1C 8002101C 0082082A */ slt $at, $a0, $v0 +/* 21C20 80021020 10200004 */ beqz $at, .L80021034 +/* 21C24 80021024 0006C080 */ sll $t8, $a2, 2 +/* 21C28 80021028 03225821 */ addu $t3, $t9, $v0 +/* 21C2C 8002102C AFAB0010 */ sw $t3, 0x10($sp) +/* 21C30 80021030 00402025 */ or $a0, $v0, $zero +.L80021034: +/* 21C34 80021034 00A3082A */ slt $at, $a1, $v1 +/* 21C38 80021038 10200006 */ beqz $at, .L80021054 +/* 21C3C 8002103C 33190FFF */ andi $t9, $t8, 0xFFF +/* 21C40 80021040 8FAC0014 */ lw $t4, 0x14($sp) +/* 21C44 80021044 01856823 */ subu $t5, $t4, $a1 +/* 21C48 80021048 01A37021 */ addu $t6, $t5, $v1 +/* 21C4C 8002104C AFAE0014 */ sw $t6, 0x14($sp) +/* 21C50 80021050 00602825 */ or $a1, $v1, $zero +.L80021054: +/* 21C54 80021054 8D430000 */ lw $v1, 0x0($t2) +/* 21C58 80021058 00195B00 */ sll $t3, $t9, 12 +/* 21C5C 8002105C 3C01E400 */ lui $at, (0xE4000000 >> 16) +/* 21C60 80021060 00076880 */ sll $t5, $a3, 2 +/* 21C64 80021064 31AE0FFF */ andi $t6, $t5, 0xFFF +/* 21C68 80021068 01616025 */ or $t4, $t3, $at +/* 21C6C 8002106C 246F0008 */ addiu $t7, $v1, 0x8 +/* 21C70 80021070 AD4F0000 */ sw $t7, 0x0($t2) +/* 21C74 80021074 0004C080 */ sll $t8, $a0, 2 +/* 21C78 80021078 33190FFF */ andi $t9, $t8, 0xFFF +/* 21C7C 8002107C 018E7825 */ or $t7, $t4, $t6 +/* 21C80 80021080 00056880 */ sll $t5, $a1, 2 +/* 21C84 80021084 31AC0FFF */ andi $t4, $t5, 0xFFF +/* 21C88 80021088 00195B00 */ sll $t3, $t9, 12 +/* 21C8C 8002108C 016C7025 */ or $t6, $t3, $t4 +/* 21C90 80021090 AC6E0004 */ sw $t6, 0x4($v1) +/* 21C94 80021094 AC6F0000 */ sw $t7, 0x0($v1) +/* 21C98 80021098 8D430000 */ lw $v1, 0x0($t2) +/* 21C9C 8002109C 3C18B400 */ lui $t8, (0xB4000000 >> 16) +/* 21CA0 800210A0 246F0008 */ addiu $t7, $v1, 0x8 +/* 21CA4 800210A4 AD4F0000 */ sw $t7, 0x0($t2) +/* 21CA8 800210A8 AC780000 */ sw $t8, 0x0($v1) +/* 21CAC 800210AC 8FAE0014 */ lw $t6, 0x14($sp) +/* 21CB0 800210B0 8FAB0010 */ lw $t3, 0x10($sp) +/* 21CB4 800210B4 000E7940 */ sll $t7, $t6, 5 +/* 21CB8 800210B8 31F8FFFF */ andi $t8, $t7, 0xFFFF +/* 21CBC 800210BC 000B6540 */ sll $t4, $t3, 21 +/* 21CC0 800210C0 0198C825 */ or $t9, $t4, $t8 +/* 21CC4 800210C4 AC790004 */ sw $t9, 0x4($v1) +/* 21CC8 800210C8 8D430000 */ lw $v1, 0x0($t2) +/* 21CCC 800210CC 3C0BB300 */ lui $t3, (0xB3000000 >> 16) +/* 21CD0 800210D0 246D0008 */ addiu $t5, $v1, 0x8 +/* 21CD4 800210D4 AD4D0000 */ sw $t5, 0x0($t2) +/* 21CD8 800210D8 AC6B0000 */ sw $t3, 0x0($v1) +/* 21CDC 800210DC 8FB8001C */ lw $t8, 0x1C($sp) +/* 21CE0 800210E0 8FAF0018 */ lw $t7, 0x18($sp) +/* 21CE4 800210E4 3319FFFF */ andi $t9, $t8, 0xFFFF +/* 21CE8 800210E8 000F6400 */ sll $t4, $t7, 16 +/* 21CEC 800210EC 01996825 */ or $t5, $t4, $t9 +/* 21CF0 800210F0 AC6D0004 */ sw $t5, 0x4($v1) +.L800210F4: +/* 21CF4 800210F4 03E00008 */ jr $ra +/* 21CF8 800210F8 00000000 */ nop + +glabel func_800210FC +/* 21CFC 800210FC 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 21D00 80021100 AFBF0024 */ sw $ra, 0x24($sp) +/* 21D04 80021104 AFA5002C */ sw $a1, 0x2C($sp) +/* 21D08 80021108 AFA60030 */ sw $a2, 0x30($sp) +/* 21D0C 8002110C AFA70034 */ sw $a3, 0x34($sp) +/* 21D10 80021110 8FAE0038 */ lw $t6, 0x38($sp) +/* 21D14 80021114 8FA5003C */ lw $a1, 0x3C($sp) +/* 21D18 80021118 8FA60040 */ lw $a2, 0x40($sp) +/* 21D1C 8002111C 8FA70034 */ lw $a3, 0x34($sp) +/* 21D20 80021120 0C00838B */ jal func_80020E2C +/* 21D24 80021124 AFAE0010 */ sw $t6, 0x10($sp) +/* 21D28 80021128 8FAF003C */ lw $t7, 0x3C($sp) +/* 21D2C 8002112C 8FB80040 */ lw $t8, 0x40($sp) +/* 21D30 80021130 8FB90044 */ lw $t9, 0x44($sp) +/* 21D34 80021134 8FA80048 */ lw $t0, 0x48($sp) +/* 21D38 80021138 8FA4002C */ lw $a0, 0x2C($sp) +/* 21D3C 8002113C 8FA50030 */ lw $a1, 0x30($sp) +/* 21D40 80021140 8FA60034 */ lw $a2, 0x34($sp) +/* 21D44 80021144 8FA70038 */ lw $a3, 0x38($sp) +/* 21D48 80021148 AFAF0010 */ sw $t7, 0x10($sp) +/* 21D4C 8002114C AFB80014 */ sw $t8, 0x14($sp) +/* 21D50 80021150 AFB90018 */ sw $t9, 0x18($sp) +/* 21D54 80021154 0C0083E3 */ jal func_80020F8C +/* 21D58 80021158 AFA8001C */ sw $t0, 0x1C($sp) +/* 21D5C 8002115C 8FBF0024 */ lw $ra, 0x24($sp) +/* 21D60 80021160 27BD0028 */ addiu $sp, $sp, 0x28 +/* 21D64 80021164 03E00008 */ jr $ra +/* 21D68 80021168 00000000 */ nop +/* 21D6C 8002116C 00000000 */ nop diff --git a/asm/25290.s b/asm/25290.s new file mode 100644 index 0000000..70e4b2e --- /dev/null +++ b/asm/25290.s @@ -0,0 +1,2188 @@ +.include "macro.inc" + +/* assembler directives */ +.set noat /* allow manual use of $at */ +.set noreorder /* don't insert nops after branches */ +.set gp=64 /* allow use of 64-bit general purpose registers */ + +.section .text, "ax" + +/* Generated by spimdisasm 1.10.1 */ + +glabel func_80024690 +/* 25290 80024690 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 25294 80024694 AFBF0024 */ sw $ra, 0x24($sp) +/* 25298 80024698 AFA40040 */ sw $a0, 0x40($sp) +/* 2529C 8002469C AFA50044 */ sw $a1, 0x44($sp) +/* 252A0 800246A0 AFA60048 */ sw $a2, 0x48($sp) +/* 252A4 800246A4 8FA40044 */ lw $a0, 0x44($sp) +/* 252A8 800246A8 0C00D918 */ jal osInvalDCache +/* 252AC 800246AC 8FA50048 */ lw $a1, 0x48($sp) +/* 252B0 800246B0 8FAE0044 */ lw $t6, 0x44($sp) +/* 252B4 800246B4 8FAF0048 */ lw $t7, 0x48($sp) +/* 252B8 800246B8 3C188009 */ lui $t8, %hi(D_8008F288) +/* 252BC 800246BC 2718F288 */ addiu $t8, $t8, %lo(D_8008F288) +/* 252C0 800246C0 AFB80018 */ sw $t8, 0x18($sp) +/* 252C4 800246C4 27A40028 */ addiu $a0, $sp, 0x28 +/* 252C8 800246C8 00002825 */ or $a1, $zero, $zero +/* 252CC 800246CC 00003025 */ or $a2, $zero, $zero +/* 252D0 800246D0 8FA70040 */ lw $a3, 0x40($sp) +/* 252D4 800246D4 AFAE0010 */ sw $t6, 0x10($sp) +/* 252D8 800246D8 0C00D944 */ jal osPiStartDma +/* 252DC 800246DC AFAF0014 */ sw $t7, 0x14($sp) +/* 252E0 800246E0 3C048009 */ lui $a0, %hi(D_8008F288) +/* 252E4 800246E4 2484F288 */ addiu $a0, $a0, %lo(D_8008F288) +/* 252E8 800246E8 00002825 */ or $a1, $zero, $zero +/* 252EC 800246EC 0C00D008 */ jal osRecvMesg +/* 252F0 800246F0 24060001 */ addiu $a2, $zero, 0x1 +/* 252F4 800246F4 8FBF0024 */ lw $ra, 0x24($sp) +/* 252F8 800246F8 27BD0040 */ addiu $sp, $sp, 0x40 +/* 252FC 800246FC 03E00008 */ jr $ra +/* 25300 80024700 00000000 */ nop + +glabel func_80024704 +/* 25304 80024704 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 25308 80024708 AFB00020 */ sw $s0, 0x20($sp) +/* 2530C 8002470C 3C108009 */ lui $s0, %hi(D_8008F240) +/* 25310 80024710 2610F240 */ addiu $s0, $s0, %lo(D_8008F240) +/* 25314 80024714 AFBF0024 */ sw $ra, 0x24($sp) +/* 25318 80024718 3C058033 */ lui $a1, %hi(D_80331AB0) +/* 2531C 8002471C 3C060006 */ lui $a2, (0x68000 >> 16) +/* 25320 80024720 34C68000 */ ori $a2, $a2, (0x68000 & 0xFFFF) +/* 25324 80024724 24A51AB0 */ addiu $a1, $a1, %lo(D_80331AB0) +/* 25328 80024728 0C00D988 */ jal alHeapInit +/* 2532C 8002472C 02002025 */ or $a0, $s0, $zero +/* 25330 80024730 340E8000 */ ori $t6, $zero, 0x8000 +/* 25334 80024734 AFAE0010 */ sw $t6, 0x10($sp) +/* 25338 80024738 00002025 */ or $a0, $zero, $zero +/* 2533C 8002473C 00002825 */ or $a1, $zero, $zero +/* 25340 80024740 02003025 */ or $a2, $s0, $zero +/* 25344 80024744 0C00D998 */ jal alHeapDBAlloc +/* 25348 80024748 24070001 */ addiu $a3, $zero, 0x1 +/* 2534C 8002474C 3C018009 */ lui $at, %hi(D_8008F250) +/* 25350 80024750 340F8000 */ ori $t7, $zero, 0x8000 +/* 25354 80024754 AC22F250 */ sw $v0, %lo(D_8008F250)($at) +/* 25358 80024758 AFAF0010 */ sw $t7, 0x10($sp) +/* 2535C 8002475C 00002025 */ or $a0, $zero, $zero +/* 25360 80024760 00002825 */ or $a1, $zero, $zero +/* 25364 80024764 02003025 */ or $a2, $s0, $zero +/* 25368 80024768 0C00D998 */ jal alHeapDBAlloc +/* 2536C 8002476C 24070001 */ addiu $a3, $zero, 0x1 +/* 25370 80024770 3C018009 */ lui $at, %hi(D_8008F254) +/* 25374 80024774 24180040 */ addiu $t8, $zero, 0x40 +/* 25378 80024778 AC22F254 */ sw $v0, %lo(D_8008F254)($at) +/* 2537C 8002477C AFB80010 */ sw $t8, 0x10($sp) +/* 25380 80024780 00002025 */ or $a0, $zero, $zero +/* 25384 80024784 00002825 */ or $a1, $zero, $zero +/* 25388 80024788 02003025 */ or $a2, $s0, $zero +/* 2538C 8002478C 0C00D998 */ jal alHeapDBAlloc +/* 25390 80024790 24070001 */ addiu $a3, $zero, 0x1 +/* 25394 80024794 3C018009 */ lui $at, %hi(D_8008F258) +/* 25398 80024798 24190040 */ addiu $t9, $zero, 0x40 +/* 2539C 8002479C AC22F258 */ sw $v0, %lo(D_8008F258)($at) +/* 253A0 800247A0 AFB90010 */ sw $t9, 0x10($sp) +/* 253A4 800247A4 00002025 */ or $a0, $zero, $zero +/* 253A8 800247A8 00002825 */ or $a1, $zero, $zero +/* 253AC 800247AC 02003025 */ or $a2, $s0, $zero +/* 253B0 800247B0 0C00D998 */ jal alHeapDBAlloc +/* 253B4 800247B4 24070001 */ addiu $a3, $zero, 0x1 +/* 253B8 800247B8 3C018009 */ lui $at, %hi(D_8008F25C) +/* 253BC 800247BC 34088000 */ ori $t0, $zero, 0x8000 +/* 253C0 800247C0 AC22F25C */ sw $v0, %lo(D_8008F25C)($at) +/* 253C4 800247C4 AFA80010 */ sw $t0, 0x10($sp) +/* 253C8 800247C8 00002025 */ or $a0, $zero, $zero +/* 253CC 800247CC 00002825 */ or $a1, $zero, $zero +/* 253D0 800247D0 02003025 */ or $a2, $s0, $zero +/* 253D4 800247D4 0C00D998 */ jal alHeapDBAlloc +/* 253D8 800247D8 24070001 */ addiu $a3, $zero, 0x1 +/* 253DC 800247DC 3C018009 */ lui $at, %hi(D_8008F260) +/* 253E0 800247E0 34098000 */ ori $t1, $zero, 0x8000 +/* 253E4 800247E4 AC22F260 */ sw $v0, %lo(D_8008F260)($at) +/* 253E8 800247E8 AFA90010 */ sw $t1, 0x10($sp) +/* 253EC 800247EC 00002025 */ or $a0, $zero, $zero +/* 253F0 800247F0 00002825 */ or $a1, $zero, $zero +/* 253F4 800247F4 02003025 */ or $a2, $s0, $zero +/* 253F8 800247F8 0C00D998 */ jal alHeapDBAlloc +/* 253FC 800247FC 24070001 */ addiu $a3, $zero, 0x1 +/* 25400 80024800 3C018009 */ lui $at, %hi(D_8008F264) +/* 25404 80024804 340A8000 */ ori $t2, $zero, 0x8000 +/* 25408 80024808 AC22F264 */ sw $v0, %lo(D_8008F264)($at) +/* 2540C 8002480C AFAA0010 */ sw $t2, 0x10($sp) +/* 25410 80024810 00002025 */ or $a0, $zero, $zero +/* 25414 80024814 00002825 */ or $a1, $zero, $zero +/* 25418 80024818 02003025 */ or $a2, $s0, $zero +/* 2541C 8002481C 0C00D998 */ jal alHeapDBAlloc +/* 25420 80024820 24070001 */ addiu $a3, $zero, 0x1 +/* 25424 80024824 3C018009 */ lui $at, %hi(D_8008F268) +/* 25428 80024828 3C048009 */ lui $a0, %hi(D_8008F270) +/* 2542C 8002482C 3C058009 */ lui $a1, %hi(D_8008F2A0) +/* 25430 80024830 AC22F268 */ sw $v0, %lo(D_8008F268)($at) +/* 25434 80024834 24A5F2A0 */ addiu $a1, $a1, %lo(D_8008F2A0) +/* 25438 80024838 2484F270 */ addiu $a0, $a0, %lo(D_8008F270) +/* 2543C 8002483C 0C00CFC4 */ jal osCreateMesgQueue +/* 25440 80024840 24060001 */ addiu $a2, $zero, 0x1 +/* 25444 80024844 3C048009 */ lui $a0, %hi(D_8008F288) +/* 25448 80024848 3C058009 */ lui $a1, %hi(D_8008F2A4) +/* 2544C 8002484C 24A5F2A4 */ addiu $a1, $a1, %lo(D_8008F2A4) +/* 25450 80024850 2484F288 */ addiu $a0, $a0, %lo(D_8008F288) +/* 25454 80024854 0C00CFC4 */ jal osCreateMesgQueue +/* 25458 80024858 24060001 */ addiu $a2, $zero, 0x1 +/* 2545C 8002485C 3C018009 */ lui $at, %hi(D_8008F698) +/* 25460 80024860 A020F698 */ sb $zero, %lo(D_8008F698)($at) +/* 25464 80024864 0C00D9B0 */ jal osAiSetFrequency +/* 25468 80024868 24045622 */ addiu $a0, $zero, 0x5622 +/* 2546C 8002486C 3C058009 */ lui $a1, %hi(D_8008F5F8) +/* 25470 80024870 24A5F5F8 */ addiu $a1, $a1, %lo(D_8008F5F8) +/* 25474 80024874 3C0C8002 */ lui $t4, %hi(func_80024A48) +/* 25478 80024878 24030010 */ addiu $v1, $zero, 0x10 +/* 2547C 8002487C 240B0040 */ addiu $t3, $zero, 0x40 +/* 25480 80024880 258C4A48 */ addiu $t4, $t4, %lo(func_80024A48) +/* 25484 80024884 240D0001 */ addiu $t5, $zero, 0x1 +/* 25488 80024888 3C048009 */ lui $a0, %hi(D_8008F5A8) +/* 2548C 8002488C ACA20018 */ sw $v0, 0x18($a1) +/* 25490 80024890 ACA30000 */ sw $v1, 0x0($a1) +/* 25494 80024894 ACA30004 */ sw $v1, 0x4($a1) +/* 25498 80024898 ACAB0008 */ sw $t3, 0x8($a1) +/* 2549C 8002489C ACAC0010 */ sw $t4, 0x10($a1) +/* 254A0 800248A0 A0AD001C */ sb $t5, 0x1C($a1) +/* 254A4 800248A4 ACB00014 */ sw $s0, 0x14($a1) +/* 254A8 800248A8 ACA00020 */ sw $zero, 0x20($a1) +/* 254AC 800248AC 0C00DA2B */ jal alInit +/* 254B0 800248B0 2484F5A8 */ addiu $a0, $a0, %lo(D_8008F5A8) +/* 254B4 800248B4 8FBF0024 */ lw $ra, 0x24($sp) +/* 254B8 800248B8 8FB00020 */ lw $s0, 0x20($sp) +/* 254BC 800248BC 27BD0028 */ addiu $sp, $sp, 0x28 +/* 254C0 800248C0 03E00008 */ jr $ra +/* 254C4 800248C4 00000000 */ nop + +glabel func_800248C8 +/* 254C8 800248C8 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 254CC 800248CC AFB10028 */ sw $s1, 0x28($sp) +/* 254D0 800248D0 3C118009 */ lui $s1, %hi(D_8008F698) +/* 254D4 800248D4 2631F698 */ addiu $s1, $s1, %lo(D_8008F698) +/* 254D8 800248D8 AFBF002C */ sw $ra, 0x2C($sp) +/* 254DC 800248DC AFB00024 */ sw $s0, 0x24($sp) +/* 254E0 800248E0 AFA60048 */ sw $a2, 0x48($sp) +/* 254E4 800248E4 00803825 */ or $a3, $a0, $zero +/* 254E8 800248E8 8E300004 */ lw $s0, 0x4($s1) +/* 254EC 800248EC 00003025 */ or $a2, $zero, $zero +/* 254F0 800248F0 52000016 */ beql $s0, $zero, .L8002494C +/* 254F4 800248F4 8E300008 */ lw $s0, 0x8($s1) +/* 254F8 800248F8 8E020008 */ lw $v0, 0x8($s0) +.L800248FC: +/* 254FC 800248FC 00E57021 */ addu $t6, $a3, $a1 +/* 25500 80024900 00E2082A */ slt $at, $a3, $v0 +/* 25504 80024904 14200010 */ bnez $at, .L80024948 +/* 25508 80024908 24430500 */ addiu $v1, $v0, 0x500 +/* 2550C 8002490C 006E082A */ slt $at, $v1, $t6 +/* 25510 80024910 1420000A */ bnez $at, .L8002493C +/* 25514 80024914 02003025 */ or $a2, $s0, $zero +/* 25518 80024918 8E180010 */ lw $t8, 0x10($s0) +/* 2551C 8002491C 3C0F8005 */ lui $t7, %hi(D_800538F8) +/* 25520 80024920 8DEF38F8 */ lw $t7, %lo(D_800538F8)($t7) +/* 25524 80024924 0307C821 */ addu $t9, $t8, $a3 +/* 25528 80024928 03222023 */ subu $a0, $t9, $v0 +/* 2552C 8002492C 0C00D374 */ jal osVirtualToPhysical +/* 25530 80024930 AE0F000C */ sw $t7, 0xC($s0) +/* 25534 80024934 10000040 */ b .L80024A38 +/* 25538 80024938 8FBF002C */ lw $ra, 0x2C($sp) +.L8002493C: +/* 2553C 8002493C 8E100000 */ lw $s0, 0x0($s0) +/* 25540 80024940 5600FFEE */ bnel $s0, $zero, .L800248FC +/* 25544 80024944 8E020008 */ lw $v0, 0x8($s0) +.L80024948: +/* 25548 80024948 8E300008 */ lw $s0, 0x8($s1) +.L8002494C: +/* 2554C 8002494C 8E090000 */ lw $t1, 0x0($s0) +/* 25550 80024950 AFA70040 */ sw $a3, 0x40($sp) +/* 25554 80024954 AFA60030 */ sw $a2, 0x30($sp) +/* 25558 80024958 02002025 */ or $a0, $s0, $zero +/* 2555C 8002495C 0C00DA08 */ jal alUnlink +/* 25560 80024960 AE290008 */ sw $t1, 0x8($s1) +/* 25564 80024964 8FA60030 */ lw $a2, 0x30($sp) +/* 25568 80024968 8FA70040 */ lw $a3, 0x40($sp) +/* 2556C 8002496C 02002025 */ or $a0, $s0, $zero +/* 25570 80024970 10C00005 */ beqz $a2, .L80024988 +/* 25574 80024974 00C02825 */ or $a1, $a2, $zero +/* 25578 80024978 0C00DA14 */ jal alLink +/* 2557C 8002497C AFA70040 */ sw $a3, 0x40($sp) +/* 25580 80024980 1000000C */ b .L800249B4 +/* 25584 80024984 8FA70040 */ lw $a3, 0x40($sp) +.L80024988: +/* 25588 80024988 8E220004 */ lw $v0, 0x4($s1) +/* 2558C 8002498C 50400007 */ beql $v0, $zero, .L800249AC +/* 25590 80024990 AE300004 */ sw $s0, 0x4($s1) +/* 25594 80024994 AE300004 */ sw $s0, 0x4($s1) +/* 25598 80024998 AE020000 */ sw $v0, 0x0($s0) +/* 2559C 8002499C AE000004 */ sw $zero, 0x4($s0) +/* 255A0 800249A0 10000004 */ b .L800249B4 +/* 255A4 800249A4 AC500004 */ sw $s0, 0x4($v0) +/* 255A8 800249A8 AE300004 */ sw $s0, 0x4($s1) +.L800249AC: +/* 255AC 800249AC AE000000 */ sw $zero, 0x0($s0) +/* 255B0 800249B0 AE000004 */ sw $zero, 0x4($s0) +.L800249B4: +/* 255B4 800249B4 30E20001 */ andi $v0, $a3, 0x1 +/* 255B8 800249B8 8E110010 */ lw $s1, 0x10($s0) +/* 255BC 800249BC AFA20038 */ sw $v0, 0x38($sp) +/* 255C0 800249C0 00E23823 */ subu $a3, $a3, $v0 +/* 255C4 800249C4 AE070008 */ sw $a3, 0x8($s0) +/* 255C8 800249C8 3C0A8005 */ lui $t2, %hi(D_800538F8) +/* 255CC 800249CC 8D4A38F8 */ lw $t2, %lo(D_800538F8)($t2) +/* 255D0 800249D0 3C088005 */ lui $t0, %hi(D_800538F4) +/* 255D4 800249D4 250838F4 */ addiu $t0, $t0, %lo(D_800538F4) +/* 255D8 800249D8 AE0A000C */ sw $t2, 0xC($s0) +/* 255DC 800249DC 8D030000 */ lw $v1, 0x0($t0) +/* 255E0 800249E0 3C0C8009 */ lui $t4, %hi(D_8008F2A8) +/* 255E4 800249E4 3C0E8009 */ lui $t6, %hi(D_8008F270) +/* 255E8 800249E8 00035880 */ sll $t3, $v1, 2 +/* 255EC 800249EC 01635823 */ subu $t3, $t3, $v1 +/* 255F0 800249F0 000B58C0 */ sll $t3, $t3, 3 +/* 255F4 800249F4 25CEF270 */ addiu $t6, $t6, %lo(D_8008F270) +/* 255F8 800249F8 258CF2A8 */ addiu $t4, $t4, %lo(D_8008F2A8) +/* 255FC 800249FC 240D0500 */ addiu $t5, $zero, 0x500 +/* 25600 80024A00 246F0001 */ addiu $t7, $v1, 0x1 +/* 25604 80024A04 AD0F0000 */ sw $t7, 0x0($t0) +/* 25608 80024A08 AFAD0014 */ sw $t5, 0x14($sp) +/* 2560C 80024A0C 016C2021 */ addu $a0, $t3, $t4 +/* 25610 80024A10 AFAE0018 */ sw $t6, 0x18($sp) +/* 25614 80024A14 00002825 */ or $a1, $zero, $zero +/* 25618 80024A18 00003025 */ or $a2, $zero, $zero +/* 2561C 80024A1C 0C00D944 */ jal osPiStartDma +/* 25620 80024A20 AFB10010 */ sw $s1, 0x10($sp) +/* 25624 80024A24 0C00D374 */ jal osVirtualToPhysical +/* 25628 80024A28 02202025 */ or $a0, $s1, $zero +/* 2562C 80024A2C 8FB80038 */ lw $t8, 0x38($sp) +/* 25630 80024A30 00581021 */ addu $v0, $v0, $t8 +/* 25634 80024A34 8FBF002C */ lw $ra, 0x2C($sp) +.L80024A38: +/* 25638 80024A38 8FB00024 */ lw $s0, 0x24($sp) +/* 2563C 80024A3C 8FB10028 */ lw $s1, 0x28($sp) +/* 25640 80024A40 03E00008 */ jr $ra +/* 25644 80024A44 27BD0040 */ addiu $sp, $sp, 0x40 + +glabel func_80024A48 +/* 25648 80024A48 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 2564C 80024A4C 3C038009 */ lui $v1, %hi(D_8008F698) +/* 25650 80024A50 2463F698 */ addiu $v1, $v1, %lo(D_8008F698) +/* 25654 80024A54 AFBF002C */ sw $ra, 0x2C($sp) +/* 25658 80024A58 AFB30028 */ sw $s3, 0x28($sp) +/* 2565C 80024A5C AFB20024 */ sw $s2, 0x24($sp) +/* 25660 80024A60 AFB10020 */ sw $s1, 0x20($sp) +/* 25664 80024A64 AFB0001C */ sw $s0, 0x1C($sp) +/* 25668 80024A68 AFA40030 */ sw $a0, 0x30($sp) +/* 2566C 80024A6C 906E0000 */ lbu $t6, 0x0($v1) +/* 25670 80024A70 3C0F8009 */ lui $t7, %hi(D_8008F6A8) +/* 25674 80024A74 25EFF6A8 */ addiu $t7, $t7, %lo(D_8008F6A8) +/* 25678 80024A78 15C0001D */ bnez $t6, .L80024AF0 +/* 2567C 80024A7C 3C108009 */ lui $s0, %hi(D_8008F6A8) +/* 25680 80024A80 3C118009 */ lui $s1, %hi(D_8008F6BC) +/* 25684 80024A84 3C138009 */ lui $s3, %hi(D_8008F928) +/* 25688 80024A88 3C128009 */ lui $s2, %hi(D_8008F240) +/* 2568C 80024A8C AC6F0008 */ sw $t7, 0x8($v1) +/* 25690 80024A90 AC600004 */ sw $zero, 0x4($v1) +/* 25694 80024A94 2652F240 */ addiu $s2, $s2, %lo(D_8008F240) +/* 25698 80024A98 2673F928 */ addiu $s3, $s3, %lo(D_8008F928) +/* 2569C 80024A9C 2631F6BC */ addiu $s1, $s1, %lo(D_8008F6BC) +/* 256A0 80024AA0 2610F6A8 */ addiu $s0, $s0, %lo(D_8008F6A8) +.L80024AA4: +/* 256A4 80024AA4 02202025 */ or $a0, $s1, $zero +/* 256A8 80024AA8 0C00DA14 */ jal alLink +/* 256AC 80024AAC 02002825 */ or $a1, $s0, $zero +/* 256B0 80024AB0 24180500 */ addiu $t8, $zero, 0x500 +/* 256B4 80024AB4 AFB80010 */ sw $t8, 0x10($sp) +/* 256B8 80024AB8 00002025 */ or $a0, $zero, $zero +/* 256BC 80024ABC 00002825 */ or $a1, $zero, $zero +/* 256C0 80024AC0 02403025 */ or $a2, $s2, $zero +/* 256C4 80024AC4 0C00D998 */ jal alHeapDBAlloc +/* 256C8 80024AC8 24070001 */ addiu $a3, $zero, 0x1 +/* 256CC 80024ACC 26310014 */ addiu $s1, $s1, 0x14 +/* 256D0 80024AD0 26100014 */ addiu $s0, $s0, 0x14 +/* 256D4 80024AD4 1633FFF3 */ bne $s1, $s3, .L80024AA4 +/* 256D8 80024AD8 AE02FFFC */ sw $v0, -0x4($s0) +/* 256DC 80024ADC 24190001 */ addiu $t9, $zero, 0x1 +/* 256E0 80024AE0 3C018009 */ lui $at, %hi(D_8008F698) +/* 256E4 80024AE4 3C038009 */ lui $v1, %hi(D_8008F698) +/* 256E8 80024AE8 2463F698 */ addiu $v1, $v1, %lo(D_8008F698) +/* 256EC 80024AEC A039F698 */ sb $t9, %lo(D_8008F698)($at) +.L80024AF0: +/* 256F0 80024AF0 8FA80030 */ lw $t0, 0x30($sp) +/* 256F4 80024AF4 3C028002 */ lui $v0, %hi(func_800248C8) +/* 256F8 80024AF8 244248C8 */ addiu $v0, $v0, %lo(func_800248C8) +/* 256FC 80024AFC AD030000 */ sw $v1, 0x0($t0) +/* 25700 80024B00 8FBF002C */ lw $ra, 0x2C($sp) +/* 25704 80024B04 8FB0001C */ lw $s0, 0x1C($sp) +/* 25708 80024B08 8FB10020 */ lw $s1, 0x20($sp) +/* 2570C 80024B0C 8FB20024 */ lw $s2, 0x24($sp) +/* 25710 80024B10 8FB30028 */ lw $s3, 0x28($sp) +/* 25714 80024B14 03E00008 */ jr $ra +/* 25718 80024B18 27BD0030 */ addiu $sp, $sp, 0x30 + +glabel func_80024B1C +/* 2571C 80024B1C 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 25720 80024B20 AFB2001C */ sw $s2, 0x1C($sp) +/* 25724 80024B24 3C128009 */ lui $s2, %hi(D_8008F698) +/* 25728 80024B28 2652F698 */ addiu $s2, $s2, %lo(D_8008F698) +/* 2572C 80024B2C AFBF0024 */ sw $ra, 0x24($sp) +/* 25730 80024B30 AFB30020 */ sw $s3, 0x20($sp) +/* 25734 80024B34 AFB10018 */ sw $s1, 0x18($sp) +/* 25738 80024B38 AFB00014 */ sw $s0, 0x14($sp) +/* 2573C 80024B3C 8E500004 */ lw $s0, 0x4($s2) +/* 25740 80024B40 3C138005 */ lui $s3, %hi(D_800538F8) +/* 25744 80024B44 267338F8 */ addiu $s3, $s3, %lo(D_800538F8) +/* 25748 80024B48 1200001A */ beqz $s0, .L80024BB4 +/* 2574C 80024B4C 00000000 */ nop +.L80024B50: +/* 25750 80024B50 8E0F000C */ lw $t7, 0xC($s0) +/* 25754 80024B54 8E6E0000 */ lw $t6, 0x0($s3) +/* 25758 80024B58 8E020000 */ lw $v0, 0x0($s0) +/* 2575C 80024B5C 25F80002 */ addiu $t8, $t7, 0x2 +/* 25760 80024B60 030E082B */ sltu $at, $t8, $t6 +/* 25764 80024B64 10200011 */ beqz $at, .L80024BAC +/* 25768 80024B68 00408825 */ or $s1, $v0, $zero +/* 2576C 80024B6C 8E590004 */ lw $t9, 0x4($s2) +/* 25770 80024B70 16190002 */ bne $s0, $t9, .L80024B7C +/* 25774 80024B74 00000000 */ nop +/* 25778 80024B78 AE420004 */ sw $v0, 0x4($s2) +.L80024B7C: +/* 2577C 80024B7C 0C00DA08 */ jal alUnlink +/* 25780 80024B80 02002025 */ or $a0, $s0, $zero +/* 25784 80024B84 8E450008 */ lw $a1, 0x8($s2) +/* 25788 80024B88 50A00006 */ beql $a1, $zero, .L80024BA4 +/* 2578C 80024B8C AE500008 */ sw $s0, 0x8($s2) +/* 25790 80024B90 0C00DA14 */ jal alLink +/* 25794 80024B94 02002025 */ or $a0, $s0, $zero +/* 25798 80024B98 10000004 */ b .L80024BAC +/* 2579C 80024B9C 00000000 */ nop +/* 257A0 80024BA0 AE500008 */ sw $s0, 0x8($s2) +.L80024BA4: +/* 257A4 80024BA4 AE000000 */ sw $zero, 0x0($s0) +/* 257A8 80024BA8 AE000004 */ sw $zero, 0x4($s0) +.L80024BAC: +/* 257AC 80024BAC 1620FFE8 */ bnez $s1, .L80024B50 +/* 257B0 80024BB0 02208025 */ or $s0, $s1, $zero +.L80024BB4: +/* 257B4 80024BB4 3C138005 */ lui $s3, %hi(D_800538F8) +/* 257B8 80024BB8 3C018005 */ lui $at, %hi(D_800538F4) +/* 257BC 80024BBC 267338F8 */ addiu $s3, $s3, %lo(D_800538F8) +/* 257C0 80024BC0 AC2038F4 */ sw $zero, %lo(D_800538F4)($at) +/* 257C4 80024BC4 8E680000 */ lw $t0, 0x0($s3) +/* 257C8 80024BC8 25090001 */ addiu $t1, $t0, 0x1 +/* 257CC 80024BCC AE690000 */ sw $t1, 0x0($s3) +/* 257D0 80024BD0 8FBF0024 */ lw $ra, 0x24($sp) +/* 257D4 80024BD4 8FB00014 */ lw $s0, 0x14($sp) +/* 257D8 80024BD8 8FB10018 */ lw $s1, 0x18($sp) +/* 257DC 80024BDC 8FB2001C */ lw $s2, 0x1C($sp) +/* 257E0 80024BE0 8FB30020 */ lw $s3, 0x20($sp) +/* 257E4 80024BE4 03E00008 */ jr $ra +/* 257E8 80024BE8 27BD0028 */ addiu $sp, $sp, 0x28 + +glabel func_80024BEC +/* 257EC 80024BEC 27BDFE48 */ addiu $sp, $sp, -0x1B8 +/* 257F0 80024BF0 AFB00018 */ sw $s0, 0x18($sp) +/* 257F4 80024BF4 00808025 */ or $s0, $a0, $zero +/* 257F8 80024BF8 AFBF003C */ sw $ra, 0x3C($sp) +/* 257FC 80024BFC AFBE0038 */ sw $fp, 0x38($sp) +/* 25800 80024C00 AFB70034 */ sw $s7, 0x34($sp) +/* 25804 80024C04 AFB60030 */ sw $s6, 0x30($sp) +/* 25808 80024C08 AFB5002C */ sw $s5, 0x2C($sp) +/* 2580C 80024C0C AFB40028 */ sw $s4, 0x28($sp) +/* 25810 80024C10 AFB30024 */ sw $s3, 0x24($sp) +/* 25814 80024C14 AFB20020 */ sw $s2, 0x20($sp) +/* 25818 80024C18 AFB1001C */ sw $s1, 0x1C($sp) +/* 2581C 80024C1C 3C0E8009 */ lui $t6, %hi(D_8008F610) +/* 25820 80024C20 8DCEF610 */ lw $t6, %lo(D_8008F610)($t6) +/* 25824 80024C24 3C013F80 */ lui $at, (0x3F800000 >> 16) +/* 25828 80024C28 44814000 */ mtc1 $at, $f8 +/* 2582C 80024C2C 448E2000 */ mtc1 $t6, $f4 +/* 25830 80024C30 3C014270 */ lui $at, (0x42700000 >> 16) +/* 25834 80024C34 44818000 */ mtc1 $at, $f16 +/* 25838 80024C38 468021A0 */ cvt.s.w $f6, $f4 +/* 2583C 80024C3C AFA00128 */ sw $zero, 0x128($sp) +/* 25840 80024C40 AFA00068 */ sw $zero, 0x68($sp) +/* 25844 80024C44 AFA00064 */ sw $zero, 0x64($sp) +/* 25848 80024C48 2401FFF0 */ addiu $at, $zero, -0x10 +/* 2584C 80024C4C 27A401A0 */ addiu $a0, $sp, 0x1A0 +/* 25850 80024C50 46083282 */ mul.s $f10, $f6, $f8 +/* 25854 80024C54 27A50180 */ addiu $a1, $sp, 0x180 +/* 25858 80024C58 24060008 */ addiu $a2, $zero, 0x8 +/* 2585C 80024C5C 46105003 */ div.s $f0, $f10, $f16 +/* 25860 80024C60 4600048D */ trunc.w.s $f18, $f0 +/* 25864 80024C64 44039000 */ mfc1 $v1, $f18 +/* 25868 80024C68 00000000 */ nop +/* 2586C 80024C6C 44832000 */ mtc1 $v1, $f4 +/* 25870 80024C70 00601025 */ or $v0, $v1, $zero +/* 25874 80024C74 468021A0 */ cvt.s.w $f6, $f4 +/* 25878 80024C78 4600303C */ c.lt.s $f6, $f0 +/* 2587C 80024C7C 00000000 */ nop +/* 25880 80024C80 45020003 */ bc1fl .L80024C90 +/* 25884 80024C84 3058000F */ andi $t8, $v0, 0xF +/* 25888 80024C88 24620001 */ addiu $v0, $v1, 0x1 +/* 2588C 80024C8C 3058000F */ andi $t8, $v0, 0xF +.L80024C90: +/* 25890 80024C90 13000002 */ beqz $t8, .L80024C9C +/* 25894 80024C94 0041C824 */ and $t9, $v0, $at +/* 25898 80024C98 27220010 */ addiu $v0, $t9, 0x10 +.L80024C9C: +/* 2589C 80024C9C 0C00CFC4 */ jal osCreateMesgQueue +/* 258A0 80024CA0 AFA20130 */ sw $v0, 0x130($sp) +/* 258A4 80024CA4 27A40168 */ addiu $a0, $sp, 0x168 +/* 258A8 80024CA8 27A50148 */ addiu $a1, $sp, 0x148 +/* 258AC 80024CAC 0C00CFC4 */ jal osCreateMesgQueue +/* 258B0 80024CB0 24060008 */ addiu $a2, $zero, 0x8 +/* 258B4 80024CB4 02002025 */ or $a0, $s0, $zero +/* 258B8 80024CB8 27A50140 */ addiu $a1, $sp, 0x140 +/* 258BC 80024CBC 0C0001F5 */ jal nnScAddClient +/* 258C0 80024CC0 27A601A0 */ addiu $a2, $sp, 0x1A0 +/* 258C4 80024CC4 0C0001BE */ jal nnScGetAudioMQ +/* 258C8 80024CC8 02002025 */ or $a0, $s0, $zero +/* 258CC 80024CCC 3C1E8009 */ lui $fp, %hi(D_8008F978) +/* 258D0 80024CD0 AFA20120 */ sw $v0, 0x120($sp) +/* 258D4 80024CD4 27DEF978 */ addiu $fp, $fp, %lo(D_8008F978) +/* 258D8 80024CD8 2417001C */ addiu $s7, $zero, 0x1C +/* 258DC 80024CDC 24140002 */ addiu $s4, $zero, 0x2 +.L80024CE0: +/* 258E0 80024CE0 27A401A0 */ addiu $a0, $sp, 0x1A0 +.L80024CE4: +/* 258E4 80024CE4 27A50068 */ addiu $a1, $sp, 0x68 +/* 258E8 80024CE8 0C00D008 */ jal osRecvMesg +/* 258EC 80024CEC 24060001 */ addiu $a2, $zero, 0x1 +/* 258F0 80024CF0 8FA80068 */ lw $t0, 0x68($sp) +/* 258F4 80024CF4 24010001 */ addiu $at, $zero, 0x1 +/* 258F8 80024CF8 85030000 */ lh $v1, 0x0($t0) +/* 258FC 80024CFC 10610005 */ beq $v1, $at, .L80024D14 +/* 25900 80024D00 24010003 */ addiu $at, $zero, 0x3 +/* 25904 80024D04 106100B0 */ beq $v1, $at, .L80024FC8 +/* 25908 80024D08 8FAA0064 */ lw $t2, 0x64($sp) +/* 2590C 80024D0C 1000FFF5 */ b .L80024CE4 +/* 25910 80024D10 27A401A0 */ addiu $a0, $sp, 0x1A0 +.L80024D14: +/* 25914 80024D14 0C0095C7 */ jal func_8002571C +/* 25918 80024D18 00000000 */ nop +/* 2591C 80024D1C 8FA90064 */ lw $t1, 0x64($sp) +/* 25920 80024D20 24010001 */ addiu $at, $zero, 0x1 +/* 25924 80024D24 00008825 */ or $s1, $zero, $zero +/* 25928 80024D28 11210006 */ beq $t1, $at, .L80024D44 +/* 2592C 80024D2C 27B0005C */ addiu $s0, $sp, 0x5C +/* 25930 80024D30 5134FFEC */ beql $t1, $s4, .L80024CE4 +/* 25934 80024D34 27A401A0 */ addiu $a0, $sp, 0x1A0 +/* 25938 80024D38 8FB30130 */ lw $s3, 0x130($sp) +/* 2593C 80024D3C 1000002E */ b .L80024DF8 +/* 25940 80024D40 2673FFF0 */ addiu $s3, $s3, -0x10 +.L80024D44: +/* 25944 80024D44 27B20060 */ addiu $s2, $sp, 0x60 +.L80024D48: +/* 25948 80024D48 864B0000 */ lh $t3, 0x0($s2) +/* 2594C 80024D4C 860A0000 */ lh $t2, 0x0($s0) +/* 25950 80024D50 00117080 */ sll $t6, $s1, 2 +/* 25954 80024D54 0177001A */ div $zero, $t3, $s7 +/* 25958 80024D58 00006012 */ mflo $t4 +/* 2595C 80024D5C 014C6823 */ subu $t5, $t2, $t4 +/* 25960 80024D60 A60D0000 */ sh $t5, 0x0($s0) +/* 25964 80024D64 86050000 */ lh $a1, 0x0($s0) +/* 25968 80024D68 16E00002 */ bnez $s7, .L80024D74 +/* 2596C 80024D6C 00000000 */ nop +/* 25970 80024D70 0007000D */ break 7 +.L80024D74: +/* 25974 80024D74 2401FFFF */ addiu $at, $zero, -0x1 +/* 25978 80024D78 16E10004 */ bne $s7, $at, .L80024D8C +/* 2597C 80024D7C 3C018000 */ lui $at, (0x80000000 >> 16) +/* 25980 80024D80 15610002 */ bne $t3, $at, .L80024D8C +/* 25984 80024D84 00000000 */ nop +/* 25988 80024D88 0006000D */ break 6 +.L80024D8C: +/* 2598C 80024D8C 01D17023 */ subu $t6, $t6, $s1 +/* 25990 80024D90 04A30004 */ bgezl $a1, .L80024DA4 +/* 25994 80024D94 000E7080 */ sll $t6, $t6, 2 +/* 25998 80024D98 A6000000 */ sh $zero, 0x0($s0) +/* 2599C 80024D9C 86050000 */ lh $a1, 0x0($s0) +/* 259A0 80024DA0 000E7080 */ sll $t6, $t6, 2 +.L80024DA4: +/* 259A4 80024DA4 01D17021 */ addu $t6, $t6, $s1 +/* 259A8 80024DA8 000E70C0 */ sll $t6, $t6, 3 +/* 259AC 80024DAC 01D17023 */ subu $t6, $t6, $s1 +/* 259B0 80024DB0 000E7080 */ sll $t6, $t6, 2 +/* 259B4 80024DB4 03CE2021 */ addu $a0, $fp, $t6 +/* 259B8 80024DB8 0C00DA38 */ jal alSeqpSetVol +/* 259BC 80024DBC 2484001C */ addiu $a0, $a0, 0x1C +/* 259C0 80024DC0 26310001 */ addiu $s1, $s1, 0x1 +/* 259C4 80024DC4 26100002 */ addiu $s0, $s0, 0x2 +/* 259C8 80024DC8 1634FFDF */ bne $s1, $s4, .L80024D48 +/* 259CC 80024DCC 26520002 */ addiu $s2, $s2, 0x2 +/* 259D0 80024DD0 87AF005C */ lh $t7, 0x5C($sp) +/* 259D4 80024DD4 87B8005E */ lh $t8, 0x5E($sp) +/* 259D8 80024DD8 55E00006 */ bnel $t7, $zero, .L80024DF4 +/* 259DC 80024DDC 8FB30130 */ lw $s3, 0x130($sp) +/* 259E0 80024DE0 17000003 */ bnez $t8, .L80024DF0 +/* 259E4 80024DE4 8FB90064 */ lw $t9, 0x64($sp) +/* 259E8 80024DE8 27280001 */ addiu $t0, $t9, 0x1 +/* 259EC 80024DEC AFA80064 */ sw $t0, 0x64($sp) +.L80024DF0: +/* 259F0 80024DF0 8FB30130 */ lw $s3, 0x130($sp) +.L80024DF4: +/* 259F4 80024DF4 2673FFF0 */ addiu $s3, $s3, -0x10 +.L80024DF8: +/* 259F8 80024DF8 3C128005 */ lui $s2, %hi(D_80053900) +/* 259FC 80024DFC 8E523900 */ lw $s2, %lo(D_80053900)($s2) +/* 25A00 80024E00 24010003 */ addiu $at, $zero, 0x3 +/* 25A04 80024E04 3C078005 */ lui $a3, %hi(D_800538FC) +/* 25A08 80024E08 0241001A */ div $zero, $s2, $at +/* 25A0C 80024E0C 8CE738FC */ lw $a3, %lo(D_800538FC)($a3) +/* 25A10 80024E10 3C158009 */ lui $s5, %hi(D_8008F250) +/* 25A14 80024E14 27AB0070 */ addiu $t3, $sp, 0x70 +/* 25A18 80024E18 00074880 */ sll $t1, $a3, 2 +/* 25A1C 80024E1C 01274823 */ subu $t1, $t1, $a3 +/* 25A20 80024E20 00094880 */ sll $t1, $t1, 2 +/* 25A24 80024E24 01274823 */ subu $t1, $t1, $a3 +/* 25A28 80024E28 00075080 */ sll $t2, $a3, 2 +/* 25A2C 80024E2C 000948C0 */ sll $t1, $t1, 3 +/* 25A30 80024E30 02AAA821 */ addu $s5, $s5, $t2 +/* 25A34 80024E34 00009010 */ mfhi $s2 +/* 25A38 80024E38 012B8021 */ addu $s0, $t1, $t3 +/* 25A3C 80024E3C 0C0092C7 */ jal func_80024B1C +/* 25A40 80024E40 8EB5F250 */ lw $s5, %lo(D_8008F250)($s5) +/* 25A44 80024E44 3C0E8009 */ lui $t6, %hi(D_8008F260) +/* 25A48 80024E48 25CEF260 */ addiu $t6, $t6, %lo(D_8008F260) +/* 25A4C 80024E4C 00126880 */ sll $t5, $s2, 2 +/* 25A50 80024E50 01AEB021 */ addu $s6, $t5, $t6 +/* 25A54 80024E54 0C00D374 */ jal osVirtualToPhysical +/* 25A58 80024E58 8EC40000 */ lw $a0, 0x0($s6) +/* 25A5C 80024E5C 8FB90130 */ lw $t9, 0x130($sp) +/* 25A60 80024E60 8FA80128 */ lw $t0, 0x128($sp) +/* 25A64 80024E64 3C188005 */ lui $t8, %hi(D_80053904) +/* 25A68 80024E68 27183904 */ addiu $t8, $t8, %lo(D_80053904) +/* 25A6C 80024E6C 03284823 */ subu $t1, $t9, $t0 +/* 25A70 80024E70 252B0060 */ addiu $t3, $t1, 0x60 +/* 25A74 80024E74 00127840 */ sll $t7, $s2, 1 +/* 25A78 80024E78 01F88821 */ addu $s1, $t7, $t8 +/* 25A7C 80024E7C 316AFFF0 */ andi $t2, $t3, 0xFFF0 +/* 25A80 80024E80 A62A0000 */ sh $t2, 0x0($s1) +/* 25A84 80024E84 86270000 */ lh $a3, 0x0($s1) +/* 25A88 80024E88 00403025 */ or $a2, $v0, $zero +/* 25A8C 80024E8C 02A02025 */ or $a0, $s5, $zero +/* 25A90 80024E90 00F3082A */ slt $at, $a3, $s3 +/* 25A94 80024E94 10200003 */ beqz $at, .L80024EA4 +/* 25A98 80024E98 3C058009 */ lui $a1, %hi(D_8008F928) +/* 25A9C 80024E9C A6330000 */ sh $s3, 0x0($s1) +/* 25AA0 80024EA0 86270000 */ lh $a3, 0x0($s1) +.L80024EA4: +/* 25AA4 80024EA4 3C0C8005 */ lui $t4, %hi(D_80049FC0) +/* 25AA8 80024EA8 3C0D8005 */ lui $t5, %hi(D_80049EF0) +/* 25AAC 80024EAC 25AD9EF0 */ addiu $t5, $t5, %lo(D_80049EF0) +/* 25AB0 80024EB0 258C9FC0 */ addiu $t4, $t4, %lo(D_80049FC0) +/* 25AB4 80024EB4 018D9023 */ subu $s2, $t4, $t5 +/* 25AB8 80024EB8 0C00DA9A */ jal alAudioFrame +/* 25ABC 80024EBC 24A5F928 */ addiu $a1, $a1, %lo(D_8008F928) +/* 25AC0 80024EC0 3C078005 */ lui $a3, %hi(D_800538FC) +/* 25AC4 80024EC4 8CE738FC */ lw $a3, %lo(D_800538FC)($a3) +/* 25AC8 80024EC8 3C188009 */ lui $t8, %hi(D_8008F250) +/* 25ACC 80024ECC 27AE0168 */ addiu $t6, $sp, 0x168 +/* 25AD0 80024ED0 2718F250 */ addiu $t8, $t8, %lo(D_8008F250) +/* 25AD4 80024ED4 00077880 */ sll $t7, $a3, 2 +/* 25AD8 80024ED8 AE000000 */ sw $zero, 0x0($s0) +/* 25ADC 80024EDC AE0E0050 */ sw $t6, 0x50($s0) +/* 25AE0 80024EE0 AE000054 */ sw $zero, 0x54($s0) +/* 25AE4 80024EE4 01F81821 */ addu $v1, $t7, $t8 +/* 25AE8 80024EE8 8C790000 */ lw $t9, 0x0($v1) +/* 25AEC 80024EEC 3C0C8005 */ lui $t4, %hi(D_80049EF0) +/* 25AF0 80024EF0 3C0D8005 */ lui $t5, %hi(D_8004B3F0) +/* 25AF4 80024EF4 AE190040 */ sw $t9, 0x40($s0) +/* 25AF8 80024EF8 8C680000 */ lw $t0, 0x0($v1) +/* 25AFC 80024EFC 3C0E8007 */ lui $t6, %hi(D_80072BD0) +/* 25B00 80024F00 258C9EF0 */ addiu $t4, $t4, %lo(D_80049EF0) +/* 25B04 80024F04 00484823 */ subu $t1, $v0, $t0 +/* 25B08 80024F08 000958C3 */ sra $t3, $t1, 3 +/* 25B0C 80024F0C 000B50C0 */ sll $t2, $t3, 3 +/* 25B10 80024F10 25ADB3F0 */ addiu $t5, $t5, %lo(D_8004B3F0) +/* 25B14 80024F14 25CE2BD0 */ addiu $t6, $t6, %lo(D_80072BD0) +/* 25B18 80024F18 240F0800 */ addiu $t7, $zero, 0x800 +/* 25B1C 80024F1C AE0A0044 */ sw $t2, 0x44($s0) +/* 25B20 80024F20 AE140010 */ sw $s4, 0x10($s0) +/* 25B24 80024F24 AE000014 */ sw $zero, 0x14($s0) +/* 25B28 80024F28 AE0C0018 */ sw $t4, 0x18($s0) +/* 25B2C 80024F2C AE12001C */ sw $s2, 0x1C($s0) +/* 25B30 80024F30 AE0D0020 */ sw $t5, 0x20($s0) +/* 25B34 80024F34 AE0E0028 */ sw $t6, 0x28($s0) +/* 25B38 80024F38 AE0F002C */ sw $t7, 0x2C($s0) +/* 25B3C 80024F3C AE000030 */ sw $zero, 0x30($s0) +/* 25B40 80024F40 AE000034 */ sw $zero, 0x34($s0) +/* 25B44 80024F44 AE000038 */ sw $zero, 0x38($s0) +/* 25B48 80024F48 AE00003C */ sw $zero, 0x3C($s0) +/* 25B4C 80024F4C AE000048 */ sw $zero, 0x48($s0) +/* 25B50 80024F50 AE00004C */ sw $zero, 0x4C($s0) +/* 25B54 80024F54 8FA40120 */ lw $a0, 0x120($sp) +/* 25B58 80024F58 02002825 */ or $a1, $s0, $zero +/* 25B5C 80024F5C 0C00D080 */ jal osSendMesg +/* 25B60 80024F60 24060001 */ addiu $a2, $zero, 0x1 +/* 25B64 80024F64 0C00DC00 */ jal osAiGetLength +/* 25B68 80024F68 00000000 */ nop +/* 25B6C 80024F6C 3C088005 */ lui $t0, %hi(D_80053900) +/* 25B70 80024F70 8D083900 */ lw $t0, %lo(D_80053900)($t0) +/* 25B74 80024F74 3C078005 */ lui $a3, %hi(D_800538FC) +/* 25B78 80024F78 8CE738FC */ lw $a3, %lo(D_800538FC)($a3) +/* 25B7C 80024F7C 3C018005 */ lui $at, %hi(D_80053900) +/* 25B80 80024F80 25090001 */ addiu $t1, $t0, 0x1 +/* 25B84 80024F84 AC293900 */ sw $t1, %lo(D_80053900)($at) +/* 25B88 80024F88 0002C082 */ srl $t8, $v0, 2 +/* 25B8C 80024F8C 3C018005 */ lui $at, %hi(D_800538FC) +/* 25B90 80024F90 38F90001 */ xori $t9, $a3, 0x1 +/* 25B94 80024F94 AFB80128 */ sw $t8, 0x128($sp) +/* 25B98 80024F98 AC3938FC */ sw $t9, %lo(D_800538FC)($at) +/* 25B9C 80024F9C 27A40168 */ addiu $a0, $sp, 0x168 +/* 25BA0 80024FA0 00002825 */ or $a1, $zero, $zero +/* 25BA4 80024FA4 0C00D008 */ jal osRecvMesg +/* 25BA8 80024FA8 24060001 */ addiu $a2, $zero, 0x1 +/* 25BAC 80024FAC 86250000 */ lh $a1, 0x0($s1) +/* 25BB0 80024FB0 8EC40000 */ lw $a0, 0x0($s6) +/* 25BB4 80024FB4 00055880 */ sll $t3, $a1, 2 +/* 25BB8 80024FB8 0C00DC04 */ jal osAiSetNextBuffer +/* 25BBC 80024FBC 01602825 */ or $a1, $t3, $zero +/* 25BC0 80024FC0 1000FF48 */ b .L80024CE4 +/* 25BC4 80024FC4 27A401A0 */ addiu $a0, $sp, 0x1A0 +.L80024FC8: +/* 25BC8 80024FC8 254C0001 */ addiu $t4, $t2, 0x1 +/* 25BCC 80024FCC 3C048009 */ lui $a0, %hi(D_8008F994) +/* 25BD0 80024FD0 AFAC0064 */ sw $t4, 0x64($sp) +/* 25BD4 80024FD4 0C00DC30 */ jal n_alSeqpGetVol +/* 25BD8 80024FD8 2484F994 */ addiu $a0, $a0, %lo(D_8008F994) +/* 25BDC 80024FDC 3C048009 */ lui $a0, %hi(D_8008FB30) +/* 25BE0 80024FE0 A7A20060 */ sh $v0, 0x60($sp) +/* 25BE4 80024FE4 0C00DC30 */ jal n_alSeqpGetVol +/* 25BE8 80024FE8 2484FB30 */ addiu $a0, $a0, %lo(D_8008FB30) +/* 25BEC 80024FEC 87AE0060 */ lh $t6, 0x60($sp) +/* 25BF0 80024FF0 A7A2005E */ sh $v0, 0x5E($sp) +/* 25BF4 80024FF4 A7A20062 */ sh $v0, 0x62($sp) +/* 25BF8 80024FF8 1000FF39 */ b .L80024CE0 +/* 25BFC 80024FFC A7AE005C */ sh $t6, 0x5C($sp) +/* 25C00 80025000 00000000 */ nop +/* 25C04 80025004 00000000 */ nop +/* 25C08 80025008 00000000 */ nop +/* 25C0C 8002500C 00000000 */ nop +/* 25C10 80025010 8FBF003C */ lw $ra, 0x3C($sp) +/* 25C14 80025014 8FB00018 */ lw $s0, 0x18($sp) +/* 25C18 80025018 8FB1001C */ lw $s1, 0x1C($sp) +/* 25C1C 8002501C 8FB20020 */ lw $s2, 0x20($sp) +/* 25C20 80025020 8FB30024 */ lw $s3, 0x24($sp) +/* 25C24 80025024 8FB40028 */ lw $s4, 0x28($sp) +/* 25C28 80025028 8FB5002C */ lw $s5, 0x2C($sp) +/* 25C2C 8002502C 8FB60030 */ lw $s6, 0x30($sp) +/* 25C30 80025030 8FB70034 */ lw $s7, 0x34($sp) +/* 25C34 80025034 8FBE0038 */ lw $fp, 0x38($sp) +/* 25C38 80025038 03E00008 */ jr $ra +/* 25C3C 8002503C 27BD01B8 */ addiu $sp, $sp, 0x1B8 + +glabel func_80025040 +/* 25C40 80025040 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 25C44 80025044 AFBF001C */ sw $ra, 0x1C($sp) +/* 25C48 80025048 AFA40028 */ sw $a0, 0x28($sp) +/* 25C4C 8002504C 3C068009 */ lui $a2, %hi(D_8008F240) +/* 25C50 80025050 240E0004 */ addiu $t6, $zero, 0x4 +/* 25C54 80025054 AFAE0010 */ sw $t6, 0x10($sp) +/* 25C58 80025058 24C6F240 */ addiu $a2, $a2, %lo(D_8008F240) +/* 25C5C 8002505C 00002025 */ or $a0, $zero, $zero +/* 25C60 80025060 00002825 */ or $a1, $zero, $zero +/* 25C64 80025064 0C00D998 */ jal alHeapDBAlloc +/* 25C68 80025068 24070001 */ addiu $a3, $zero, 0x1 +/* 25C6C 8002506C 3C038005 */ lui $v1, %hi(D_800538F0) +/* 25C70 80025070 246338F0 */ addiu $v1, $v1, %lo(D_800538F0) +/* 25C74 80025074 AC620000 */ sw $v0, 0x0($v1) +/* 25C78 80025078 8FA40028 */ lw $a0, 0x28($sp) +/* 25C7C 8002507C 00402825 */ or $a1, $v0, $zero +/* 25C80 80025080 0C0091A4 */ jal func_80024690 +/* 25C84 80025084 24060004 */ addiu $a2, $zero, 0x4 +/* 25C88 80025088 3C0F8005 */ lui $t7, %hi(D_800538F0) +/* 25C8C 8002508C 8DEF38F0 */ lw $t7, %lo(D_800538F0)($t7) +/* 25C90 80025090 3C068009 */ lui $a2, %hi(D_8008F240) +/* 25C94 80025094 24C6F240 */ addiu $a2, $a2, %lo(D_8008F240) +/* 25C98 80025098 85E20002 */ lh $v0, 0x2($t7) +/* 25C9C 8002509C 00002025 */ or $a0, $zero, $zero +/* 25CA0 800250A0 00002825 */ or $a1, $zero, $zero +/* 25CA4 800250A4 0002C0C0 */ sll $t8, $v0, 3 +/* 25CA8 800250A8 27020004 */ addiu $v0, $t8, 0x4 +/* 25CAC 800250AC AFA20010 */ sw $v0, 0x10($sp) +/* 25CB0 800250B0 AFA20024 */ sw $v0, 0x24($sp) +/* 25CB4 800250B4 0C00D998 */ jal alHeapDBAlloc +/* 25CB8 800250B8 24070001 */ addiu $a3, $zero, 0x1 +/* 25CBC 800250BC 3C038005 */ lui $v1, %hi(D_800538F0) +/* 25CC0 800250C0 246338F0 */ addiu $v1, $v1, %lo(D_800538F0) +/* 25CC4 800250C4 AC620000 */ sw $v0, 0x0($v1) +/* 25CC8 800250C8 8FA40028 */ lw $a0, 0x28($sp) +/* 25CCC 800250CC 00402825 */ or $a1, $v0, $zero +/* 25CD0 800250D0 0C0091A4 */ jal func_80024690 +/* 25CD4 800250D4 8FA60024 */ lw $a2, 0x24($sp) +/* 25CD8 800250D8 8FBF001C */ lw $ra, 0x1C($sp) +/* 25CDC 800250DC 27BD0028 */ addiu $sp, $sp, 0x28 +/* 25CE0 800250E0 03E00008 */ jr $ra +/* 25CE4 800250E4 00000000 */ nop + +glabel func_800250E8 +/* 25CE8 800250E8 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 25CEC 800250EC AFBF001C */ sw $ra, 0x1C($sp) +/* 25CF0 800250F0 00803825 */ or $a3, $a0, $zero +/* 25CF4 800250F4 3C0E8009 */ lui $t6, %hi(D_8008F240) +/* 25CF8 800250F8 25CEF240 */ addiu $t6, $t6, %lo(D_8008F240) +/* 25CFC 800250FC 3C048009 */ lui $a0, %hi(D_8008D090) +/* 25D00 80025100 3C068002 */ lui $a2, %hi(func_80024BEC) +/* 25D04 80025104 240F0032 */ addiu $t7, $zero, 0x32 +/* 25D08 80025108 AFAF0014 */ sw $t7, 0x14($sp) +/* 25D0C 8002510C 24C64BEC */ addiu $a2, $a2, %lo(func_80024BEC) +/* 25D10 80025110 2484D090 */ addiu $a0, $a0, %lo(D_8008D090) +/* 25D14 80025114 AFAE0010 */ sw $t6, 0x10($sp) +/* 25D18 80025118 0C00CEB8 */ jal osCreateThread +/* 25D1C 8002511C 24050005 */ addiu $a1, $zero, 0x5 +/* 25D20 80025120 3C048009 */ lui $a0, %hi(D_8008D090) +/* 25D24 80025124 0C00CF0C */ jal osStartThread +/* 25D28 80025128 2484D090 */ addiu $a0, $a0, %lo(D_8008D090) +/* 25D2C 8002512C 8FBF001C */ lw $ra, 0x1C($sp) +/* 25D30 80025130 27BD0020 */ addiu $sp, $sp, 0x20 +/* 25D34 80025134 03E00008 */ jr $ra +/* 25D38 80025138 00000000 */ nop + +glabel func_8002513C +/* 25D3C 8002513C 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 25D40 80025140 AFBF0024 */ sw $ra, 0x24($sp) +/* 25D44 80025144 AFB00020 */ sw $s0, 0x20($sp) +/* 25D48 80025148 AFA40028 */ sw $a0, 0x28($sp) +/* 25D4C 8002514C AFA5002C */ sw $a1, 0x2C($sp) +/* 25D50 80025150 AFA60030 */ sw $a2, 0x30($sp) +/* 25D54 80025154 AFA70034 */ sw $a3, 0x34($sp) +/* 25D58 80025158 3C068009 */ lui $a2, %hi(D_8008F240) +/* 25D5C 8002515C 340E8000 */ ori $t6, $zero, 0x8000 +/* 25D60 80025160 AFAE0010 */ sw $t6, 0x10($sp) +/* 25D64 80025164 24C6F240 */ addiu $a2, $a2, %lo(D_8008F240) +/* 25D68 80025168 00002025 */ or $a0, $zero, $zero +/* 25D6C 8002516C 00002825 */ or $a1, $zero, $zero +/* 25D70 80025170 0C00D998 */ jal alHeapDBAlloc +/* 25D74 80025174 24070001 */ addiu $a3, $zero, 0x1 +/* 25D78 80025178 3C108009 */ lui $s0, %hi(D_8008F978) +/* 25D7C 8002517C 2610F978 */ addiu $s0, $s0, %lo(D_8008F978) +/* 25D80 80025180 3C068009 */ lui $a2, %hi(D_8008F240) +/* 25D84 80025184 340F8000 */ ori $t7, $zero, 0x8000 +/* 25D88 80025188 AE020190 */ sw $v0, 0x190($s0) +/* 25D8C 8002518C AFAF0010 */ sw $t7, 0x10($sp) +/* 25D90 80025190 24C6F240 */ addiu $a2, $a2, %lo(D_8008F240) +/* 25D94 80025194 00002025 */ or $a0, $zero, $zero +/* 25D98 80025198 00002825 */ or $a1, $zero, $zero +/* 25D9C 8002519C 0C00D998 */ jal alHeapDBAlloc +/* 25DA0 800251A0 24070001 */ addiu $a3, $zero, 0x1 +/* 25DA4 800251A4 3C198009 */ lui $t9, %hi(D_8008F240) +/* 25DA8 800251A8 24030040 */ addiu $v1, $zero, 0x40 +/* 25DAC 800251AC 24180010 */ addiu $t8, $zero, 0x10 +/* 25DB0 800251B0 2739F240 */ addiu $t9, $t9, %lo(D_8008F240) +/* 25DB4 800251B4 3C048009 */ lui $a0, %hi(D_8008F994) +/* 25DB8 800251B8 AE02032C */ sw $v0, 0x32C($s0) +/* 25DBC 800251BC AE030000 */ sw $v1, 0x0($s0) +/* 25DC0 800251C0 AE030004 */ sw $v1, 0x4($s0) +/* 25DC4 800251C4 A2180008 */ sb $t8, 0x8($s0) +/* 25DC8 800251C8 AE19000C */ sw $t9, 0xC($s0) +/* 25DCC 800251CC AE000010 */ sw $zero, 0x10($s0) +/* 25DD0 800251D0 AE000014 */ sw $zero, 0x14($s0) +/* 25DD4 800251D4 AE000018 */ sw $zero, 0x18($s0) +/* 25DD8 800251D8 A2000009 */ sb $zero, 0x9($s0) +/* 25DDC 800251DC 2484F994 */ addiu $a0, $a0, %lo(D_8008F994) +/* 25DE0 800251E0 0C00E064 */ jal alCSPNew +/* 25DE4 800251E4 02002825 */ or $a1, $s0, $zero +/* 25DE8 800251E8 3C098009 */ lui $t1, %hi(D_8008F240) +/* 25DEC 800251EC 24030040 */ addiu $v1, $zero, 0x40 +/* 25DF0 800251F0 24080010 */ addiu $t0, $zero, 0x10 +/* 25DF4 800251F4 2529F240 */ addiu $t1, $t1, %lo(D_8008F240) +/* 25DF8 800251F8 3C048009 */ lui $a0, %hi(D_8008FB30) +/* 25DFC 800251FC 3C058009 */ lui $a1, %hi(D_8008FB14) +/* 25E00 80025200 AE03019C */ sw $v1, 0x19C($s0) +/* 25E04 80025204 AE0301A0 */ sw $v1, 0x1A0($s0) +/* 25E08 80025208 A20801A4 */ sb $t0, 0x1A4($s0) +/* 25E0C 8002520C AE0901A8 */ sw $t1, 0x1A8($s0) +/* 25E10 80025210 AE0001AC */ sw $zero, 0x1AC($s0) +/* 25E14 80025214 AE0001B0 */ sw $zero, 0x1B0($s0) +/* 25E18 80025218 AE0001B4 */ sw $zero, 0x1B4($s0) +/* 25E1C 8002521C A20001A5 */ sb $zero, 0x1A5($s0) +/* 25E20 80025220 24A5FB14 */ addiu $a1, $a1, %lo(D_8008FB14) +/* 25E24 80025224 0C00E064 */ jal alCSPNew +/* 25E28 80025228 2484FB30 */ addiu $a0, $a0, %lo(D_8008FB30) +/* 25E2C 8002522C 0C009410 */ jal func_80025040 +/* 25E30 80025230 8FA40030 */ lw $a0, 0x30($sp) +/* 25E34 80025234 3C048005 */ lui $a0, %hi(D_800538F0) +/* 25E38 80025238 8C8438F0 */ lw $a0, %lo(D_800538F0)($a0) +/* 25E3C 8002523C 0C00E142 */ jal alSeqFileNew +/* 25E40 80025240 8FA50030 */ lw $a1, 0x30($sp) +/* 25E44 80025244 8FAA002C */ lw $t2, 0x2C($sp) +/* 25E48 80025248 8FAB0028 */ lw $t3, 0x28($sp) +/* 25E4C 8002524C 3C068009 */ lui $a2, %hi(D_8008F240) +/* 25E50 80025250 24C6F240 */ addiu $a2, $a2, %lo(D_8008F240) +/* 25E54 80025254 014B8023 */ subu $s0, $t2, $t3 +/* 25E58 80025258 AFB00010 */ sw $s0, 0x10($sp) +/* 25E5C 8002525C 00002025 */ or $a0, $zero, $zero +/* 25E60 80025260 00002825 */ or $a1, $zero, $zero +/* 25E64 80025264 0C00D998 */ jal alHeapDBAlloc +/* 25E68 80025268 24070001 */ addiu $a3, $zero, 0x1 +/* 25E6C 8002526C 3C038005 */ lui $v1, %hi(D_800538E8) +/* 25E70 80025270 246338E8 */ addiu $v1, $v1, %lo(D_800538E8) +/* 25E74 80025274 AC620000 */ sw $v0, 0x0($v1) +/* 25E78 80025278 8FA40028 */ lw $a0, 0x28($sp) +/* 25E7C 8002527C 00402825 */ or $a1, $v0, $zero +/* 25E80 80025280 0C0091A4 */ jal func_80024690 +/* 25E84 80025284 02003025 */ or $a2, $s0, $zero +/* 25E88 80025288 3C048005 */ lui $a0, %hi(D_800538E8) +/* 25E8C 8002528C 8C8438E8 */ lw $a0, %lo(D_800538E8)($a0) +/* 25E90 80025290 0C00E101 */ jal alBnkfNew +/* 25E94 80025294 8FA50038 */ lw $a1, 0x38($sp) +/* 25E98 80025298 3C0C8005 */ lui $t4, %hi(D_800538E8) +/* 25E9C 8002529C 8D8C38E8 */ lw $t4, %lo(D_800538E8)($t4) +/* 25EA0 800252A0 3C048009 */ lui $a0, %hi(D_8008F994) +/* 25EA4 800252A4 2484F994 */ addiu $a0, $a0, %lo(D_8008F994) +/* 25EA8 800252A8 8D900004 */ lw $s0, 0x4($t4) +/* 25EAC 800252AC 0C00E154 */ jal alSeqpSetBank +/* 25EB0 800252B0 02002825 */ or $a1, $s0, $zero +/* 25EB4 800252B4 3C048009 */ lui $a0, %hi(D_8008FB30) +/* 25EB8 800252B8 2484FB30 */ addiu $a0, $a0, %lo(D_8008FB30) +/* 25EBC 800252BC 0C00E154 */ jal alSeqpSetBank +/* 25EC0 800252C0 02002825 */ or $a1, $s0, $zero +/* 25EC4 800252C4 8FBF0024 */ lw $ra, 0x24($sp) +/* 25EC8 800252C8 8FB00020 */ lw $s0, 0x20($sp) +/* 25ECC 800252CC 27BD0028 */ addiu $sp, $sp, 0x28 +/* 25ED0 800252D0 03E00008 */ jr $ra +/* 25ED4 800252D4 00000000 */ nop + +glabel func_800252D8 +/* 25ED8 800252D8 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 25EDC 800252DC AFBF0014 */ sw $ra, 0x14($sp) +/* 25EE0 800252E0 AFA40028 */ sw $a0, 0x28($sp) +/* 25EE4 800252E4 AFA5002C */ sw $a1, 0x2C($sp) +/* 25EE8 800252E8 8FAF002C */ lw $t7, 0x2C($sp) +/* 25EEC 800252EC 3C0E8005 */ lui $t6, %hi(D_800538F0) +/* 25EF0 800252F0 8DCE38F0 */ lw $t6, %lo(D_800538F0)($t6) +/* 25EF4 800252F4 000FC0C0 */ sll $t8, $t7, 3 +/* 25EF8 800252F8 8FA80028 */ lw $t0, 0x28($sp) +/* 25EFC 800252FC 01D81021 */ addu $v0, $t6, $t8 +/* 25F00 80025300 8C460008 */ lw $a2, 0x8($v0) +/* 25F04 80025304 8C470004 */ lw $a3, 0x4($v0) +/* 25F08 80025308 00084880 */ sll $t1, $t0, 2 +/* 25F0C 8002530C 30D90001 */ andi $t9, $a2, 0x1 +/* 25F10 80025310 13200002 */ beqz $t9, .L8002531C +/* 25F14 80025314 00E02025 */ or $a0, $a3, $zero +/* 25F18 80025318 24C60001 */ addiu $a2, $a2, 0x1 +.L8002531C: +/* 25F1C 8002531C 01284823 */ subu $t1, $t1, $t0 +/* 25F20 80025320 00094880 */ sll $t1, $t1, 2 +/* 25F24 80025324 01284821 */ addu $t1, $t1, $t0 +/* 25F28 80025328 000948C0 */ sll $t1, $t1, 3 +/* 25F2C 8002532C 01284823 */ subu $t1, $t1, $t0 +/* 25F30 80025330 3C0A8009 */ lui $t2, %hi(D_8008F978) +/* 25F34 80025334 254AF978 */ addiu $t2, $t2, %lo(D_8008F978) +/* 25F38 80025338 00094880 */ sll $t1, $t1, 2 +/* 25F3C 8002533C 012A1021 */ addu $v0, $t1, $t2 +/* 25F40 80025340 8C450190 */ lw $a1, 0x190($v0) +/* 25F44 80025344 0C0091A4 */ jal func_80024690 +/* 25F48 80025348 AFA2001C */ sw $v0, 0x1C($sp) +/* 25F4C 8002534C 8FA2001C */ lw $v0, 0x1C($sp) +/* 25F50 80025350 8FAB002C */ lw $t3, 0x2C($sp) +/* 25F54 80025354 AC4B0194 */ sw $t3, 0x194($v0) +/* 25F58 80025358 8FBF0014 */ lw $ra, 0x14($sp) +/* 25F5C 8002535C 03E00008 */ jr $ra +/* 25F60 80025360 27BD0028 */ addiu $sp, $sp, 0x28 + +glabel func_80025364 +/* 25F64 80025364 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 25F68 80025368 AFBF0014 */ sw $ra, 0x14($sp) +/* 25F6C 8002536C 00047080 */ sll $t6, $a0, 2 +/* 25F70 80025370 01C47023 */ subu $t6, $t6, $a0 +/* 25F74 80025374 000E7080 */ sll $t6, $t6, 2 +/* 25F78 80025378 01C47021 */ addu $t6, $t6, $a0 +/* 25F7C 8002537C 000E70C0 */ sll $t6, $t6, 3 +/* 25F80 80025380 01C47023 */ subu $t6, $t6, $a0 +/* 25F84 80025384 3C0F8009 */ lui $t7, %hi(D_8008F978) +/* 25F88 80025388 25EFF978 */ addiu $t7, $t7, %lo(D_8008F978) +/* 25F8C 8002538C 000E7080 */ sll $t6, $t6, 2 +/* 25F90 80025390 01CF1021 */ addu $v0, $t6, $t7 +/* 25F94 80025394 8C580048 */ lw $t8, 0x48($v0) +/* 25F98 80025398 24460098 */ addiu $a2, $v0, 0x98 +/* 25F9C 8002539C 00C02025 */ or $a0, $a2, $zero +/* 25FA0 800253A0 53000004 */ beql $t8, $zero, .L800253B4 +/* 25FA4 800253A4 8C450190 */ lw $a1, 0x190($v0) +/* 25FA8 800253A8 1000000D */ b .L800253E0 +/* 25FAC 800253AC 00001025 */ or $v0, $zero, $zero +/* 25FB0 800253B0 8C450190 */ lw $a1, 0x190($v0) +.L800253B4: +/* 25FB4 800253B4 AFA20024 */ sw $v0, 0x24($sp) +/* 25FB8 800253B8 0C00E2BB */ jal alCSeqNew +/* 25FBC 800253BC AFA60020 */ sw $a2, 0x20($sp) +/* 25FC0 800253C0 8FA20024 */ lw $v0, 0x24($sp) +/* 25FC4 800253C4 8FA50020 */ lw $a1, 0x20($sp) +/* 25FC8 800253C8 2444001C */ addiu $a0, $v0, 0x1C +/* 25FCC 800253CC 0C00E414 */ jal alCSPSetSeq +/* 25FD0 800253D0 AFA4001C */ sw $a0, 0x1C($sp) +/* 25FD4 800253D4 0C00E424 */ jal alSeqpPlay +/* 25FD8 800253D8 8FA4001C */ lw $a0, 0x1C($sp) +/* 25FDC 800253DC 24020001 */ addiu $v0, $zero, 0x1 +.L800253E0: +/* 25FE0 800253E0 8FBF0014 */ lw $ra, 0x14($sp) +/* 25FE4 800253E4 27BD0028 */ addiu $sp, $sp, 0x28 +/* 25FE8 800253E8 03E00008 */ jr $ra +/* 25FEC 800253EC 00000000 */ nop + +glabel func_800253F0 +/* 25FF0 800253F0 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 25FF4 800253F4 AFBF0014 */ sw $ra, 0x14($sp) +/* 25FF8 800253F8 00802825 */ or $a1, $a0, $zero +/* 25FFC 800253FC 00057080 */ sll $t6, $a1, 2 +/* 26000 80025400 01C57023 */ subu $t6, $t6, $a1 +/* 26004 80025404 000E7080 */ sll $t6, $t6, 2 +/* 26008 80025408 01C57021 */ addu $t6, $t6, $a1 +/* 2600C 8002540C 000E70C0 */ sll $t6, $t6, 3 +/* 26010 80025410 01C57023 */ subu $t6, $t6, $a1 +/* 26014 80025414 000E7080 */ sll $t6, $t6, 2 +/* 26018 80025418 3C188009 */ lui $t8, %hi(D_8008F978) +/* 2601C 8002541C 2718F978 */ addiu $t8, $t8, %lo(D_8008F978) +/* 26020 80025420 25CF001C */ addiu $t7, $t6, 0x1C +/* 26024 80025424 0C00E430 */ jal alSeqpStop +/* 26028 80025428 01F82021 */ addu $a0, $t7, $t8 +/* 2602C 8002542C 8FBF0014 */ lw $ra, 0x14($sp) +/* 26030 80025430 27BD0018 */ addiu $sp, $sp, 0x18 +/* 26034 80025434 03E00008 */ jr $ra +/* 26038 80025438 00000000 */ nop + +glabel func_8002543C +/* 2603C 8002543C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 26040 80025440 AFBF0014 */ sw $ra, 0x14($sp) +/* 26044 80025444 00802825 */ or $a1, $a0, $zero +/* 26048 80025448 00057080 */ sll $t6, $a1, 2 +/* 2604C 8002544C 01C57023 */ subu $t6, $t6, $a1 +/* 26050 80025450 000E7080 */ sll $t6, $t6, 2 +/* 26054 80025454 01C57021 */ addu $t6, $t6, $a1 +/* 26058 80025458 000E70C0 */ sll $t6, $t6, 3 +/* 2605C 8002545C 01C57023 */ subu $t6, $t6, $a1 +/* 26060 80025460 000E7080 */ sll $t6, $t6, 2 +/* 26064 80025464 3C188009 */ lui $t8, %hi(D_8008F978) +/* 26068 80025468 2718F978 */ addiu $t8, $t8, %lo(D_8008F978) +/* 2606C 8002546C 25CF001C */ addiu $t7, $t6, 0x1C +/* 26070 80025470 0C00E43C */ jal alSeqpGetState +/* 26074 80025474 01F82021 */ addu $a0, $t7, $t8 +/* 26078 80025478 8FBF0014 */ lw $ra, 0x14($sp) +/* 2607C 8002547C 27BD0018 */ addiu $sp, $sp, 0x18 +/* 26080 80025480 03E00008 */ jr $ra +/* 26084 80025484 00000000 */ nop + +glabel func_80025488 +/* 26088 80025488 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 2608C 8002548C AFB30028 */ sw $s3, 0x28($sp) +/* 26090 80025490 3C138009 */ lui $s3, %hi(D_8008F240) +/* 26094 80025494 AFB4002C */ sw $s4, 0x2C($sp) +/* 26098 80025498 AFB20024 */ sw $s2, 0x24($sp) +/* 2609C 8002549C AFB10020 */ sw $s1, 0x20($sp) +/* 260A0 800254A0 00A08825 */ or $s1, $a1, $zero +/* 260A4 800254A4 00809025 */ or $s2, $a0, $zero +/* 260A8 800254A8 00C0A025 */ or $s4, $a2, $zero +/* 260AC 800254AC 2673F240 */ addiu $s3, $s3, %lo(D_8008F240) +/* 260B0 800254B0 AFBF003C */ sw $ra, 0x3C($sp) +/* 260B4 800254B4 AFB70038 */ sw $s7, 0x38($sp) +/* 260B8 800254B8 AFB60034 */ sw $s6, 0x34($sp) +/* 260BC 800254BC AFB50030 */ sw $s5, 0x30($sp) +/* 260C0 800254C0 AFB0001C */ sw $s0, 0x1C($sp) +/* 260C4 800254C4 02328023 */ subu $s0, $s1, $s2 +/* 260C8 800254C8 AFB00010 */ sw $s0, 0x10($sp) +/* 260CC 800254CC 00002025 */ or $a0, $zero, $zero +/* 260D0 800254D0 00002825 */ or $a1, $zero, $zero +/* 260D4 800254D4 02603025 */ or $a2, $s3, $zero +/* 260D8 800254D8 0C00D998 */ jal alHeapDBAlloc +/* 260DC 800254DC 24070001 */ addiu $a3, $zero, 0x1 +/* 260E0 800254E0 3C118005 */ lui $s1, %hi(D_800538EC) +/* 260E4 800254E4 263138EC */ addiu $s1, $s1, %lo(D_800538EC) +/* 260E8 800254E8 AE220000 */ sw $v0, 0x0($s1) +/* 260EC 800254EC 02402025 */ or $a0, $s2, $zero +/* 260F0 800254F0 00402825 */ or $a1, $v0, $zero +/* 260F4 800254F4 0C0091A4 */ jal func_80024690 +/* 260F8 800254F8 02003025 */ or $a2, $s0, $zero +/* 260FC 800254FC 3C058009 */ lui $a1, %hi(D_8008F678) +/* 26100 80025500 24A5F678 */ addiu $a1, $a1, %lo(D_8008F678) +/* 26104 80025504 3C178009 */ lui $s7, %hi(D_8008F620) +/* 26108 80025508 26F7F620 */ addiu $s7, $s7, %lo(D_8008F620) +/* 2610C 8002550C 240E0050 */ addiu $t6, $zero, 0x50 +/* 26110 80025510 240F0020 */ addiu $t7, $zero, 0x20 +/* 26114 80025514 ACAE0000 */ sw $t6, 0x0($a1) +/* 26118 80025518 ACAF0004 */ sw $t7, 0x4($a1) +/* 2611C 8002551C ACB30008 */ sw $s3, 0x8($a1) +/* 26120 80025520 0C00E5B5 */ jal alSndpNew +/* 26124 80025524 02E02025 */ or $a0, $s7, $zero +/* 26128 80025528 8E240000 */ lw $a0, 0x0($s1) +/* 2612C 8002552C 0C00E101 */ jal alBnkfNew +/* 26130 80025530 02802825 */ or $a1, $s4, $zero +/* 26134 80025534 8E380000 */ lw $t8, 0x0($s1) +/* 26138 80025538 3C028009 */ lui $v0, %hi(D_8008F688) +/* 2613C 8002553C 2442F688 */ addiu $v0, $v0, %lo(D_8008F688) +/* 26140 80025540 8F190004 */ lw $t9, 0x4($t8) +/* 26144 80025544 3C168009 */ lui $s6, %hi(D_8008F684) +/* 26148 80025548 26D6F684 */ addiu $s6, $s6, %lo(D_8008F684) +/* 2614C 8002554C AC590000 */ sw $t9, 0x0($v0) +/* 26150 80025550 8F29000C */ lw $t1, 0xC($t9) +/* 26154 80025554 00002025 */ or $a0, $zero, $zero +/* 26158 80025558 00002825 */ or $a1, $zero, $zero +/* 2615C 8002555C AEC90000 */ sw $t1, 0x0($s6) +/* 26160 80025560 852B000E */ lh $t3, 0xE($t1) +/* 26164 80025564 02603025 */ or $a2, $s3, $zero +/* 26168 80025568 24070001 */ addiu $a3, $zero, 0x1 +/* 2616C 8002556C 000B6040 */ sll $t4, $t3, 1 +/* 26170 80025570 0C00D998 */ jal alHeapDBAlloc +/* 26174 80025574 AFAC0010 */ sw $t4, 0x10($sp) +/* 26178 80025578 8EC30000 */ lw $v1, 0x0($s6) +/* 2617C 8002557C 3C138009 */ lui $s3, %hi(D_8008F68C) +/* 26180 80025580 3C148009 */ lui $s4, %hi(D_8008F690) +/* 26184 80025584 2694F690 */ addiu $s4, $s4, %lo(D_8008F690) +/* 26188 80025588 2673F68C */ addiu $s3, $s3, %lo(D_8008F68C) +/* 2618C 8002558C AE620000 */ sw $v0, 0x0($s3) +/* 26190 80025590 AE800000 */ sw $zero, 0x0($s4) +/* 26194 80025594 846D000E */ lh $t5, 0xE($v1) +/* 26198 80025598 00009025 */ or $s2, $zero, $zero +/* 2619C 8002559C 00008825 */ or $s1, $zero, $zero +/* 261A0 800255A0 11A00019 */ beqz $t5, .L80025608 +/* 261A4 800255A4 00008025 */ or $s0, $zero, $zero +/* 261A8 800255A8 2415FFFF */ addiu $s5, $zero, -0x1 +/* 261AC 800255AC 00717021 */ addu $t6, $v1, $s1 +.L800255B0: +/* 261B0 800255B0 8DC50010 */ lw $a1, 0x10($t6) +/* 261B4 800255B4 0C00E604 */ jal alSndpAllocate +/* 261B8 800255B8 02E02025 */ or $a0, $s7, $zero +/* 261BC 800255BC 8E6F0000 */ lw $t7, 0x0($s3) +/* 261C0 800255C0 01F0C021 */ addu $t8, $t7, $s0 +/* 261C4 800255C4 A7020000 */ sh $v0, 0x0($t8) +/* 261C8 800255C8 8E790000 */ lw $t9, 0x0($s3) +/* 261CC 800255CC 03304021 */ addu $t0, $t9, $s0 +/* 261D0 800255D0 85090000 */ lh $t1, 0x0($t0) +/* 261D4 800255D4 52A90005 */ beql $s5, $t1, .L800255EC +/* 261D8 800255D8 8EC30000 */ lw $v1, 0x0($s6) +/* 261DC 800255DC 8E8A0000 */ lw $t2, 0x0($s4) +/* 261E0 800255E0 254B0001 */ addiu $t3, $t2, 0x1 +/* 261E4 800255E4 AE8B0000 */ sw $t3, 0x0($s4) +/* 261E8 800255E8 8EC30000 */ lw $v1, 0x0($s6) +.L800255EC: +/* 261EC 800255EC 26520001 */ addiu $s2, $s2, 0x1 +/* 261F0 800255F0 26310004 */ addiu $s1, $s1, 0x4 +/* 261F4 800255F4 846C000E */ lh $t4, 0xE($v1) +/* 261F8 800255F8 26100002 */ addiu $s0, $s0, 0x2 +/* 261FC 800255FC 024C082B */ sltu $at, $s2, $t4 +/* 26200 80025600 5420FFEB */ bnel $at, $zero, .L800255B0 +/* 26204 80025604 00717021 */ addu $t6, $v1, $s1 +.L80025608: +/* 26208 80025608 8FBF003C */ lw $ra, 0x3C($sp) +/* 2620C 8002560C 8FB0001C */ lw $s0, 0x1C($sp) +/* 26210 80025610 8FB10020 */ lw $s1, 0x20($sp) +/* 26214 80025614 8FB20024 */ lw $s2, 0x24($sp) +/* 26218 80025618 8FB30028 */ lw $s3, 0x28($sp) +/* 2621C 8002561C 8FB4002C */ lw $s4, 0x2C($sp) +/* 26220 80025620 8FB50030 */ lw $s5, 0x30($sp) +/* 26224 80025624 8FB60034 */ lw $s6, 0x34($sp) +/* 26228 80025628 8FB70038 */ lw $s7, 0x38($sp) +/* 2622C 8002562C 03E00008 */ jr $ra +/* 26230 80025630 27BD0040 */ addiu $sp, $sp, 0x40 + +glabel func_80025634 +/* 26234 80025634 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 26238 80025638 AFBF0014 */ sw $ra, 0x14($sp) +/* 2623C 8002563C 00803025 */ or $a2, $a0, $zero +/* 26240 80025640 3C0E8009 */ lui $t6, %hi(D_8008F68C) +/* 26244 80025644 8DCEF68C */ lw $t6, %lo(D_8008F68C)($t6) +/* 26248 80025648 00067840 */ sll $t7, $a2, 1 +/* 2624C 8002564C 3C048009 */ lui $a0, %hi(D_8008F620) +/* 26250 80025650 01CFC021 */ addu $t8, $t6, $t7 +/* 26254 80025654 87050000 */ lh $a1, 0x0($t8) +/* 26258 80025658 0C00E62C */ jal alSndpSetSound +/* 2625C 8002565C 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 26260 80025660 3C048009 */ lui $a0, %hi(D_8008F620) +/* 26264 80025664 0C00E634 */ jal alSndpGetState +/* 26268 80025668 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 2626C 8002566C 14400003 */ bnez $v0, .L8002567C +/* 26270 80025670 3C048009 */ lui $a0, %hi(D_8008F620) +/* 26274 80025674 0C00E63C */ jal alSndpPlay +/* 26278 80025678 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +.L8002567C: +/* 2627C 8002567C 8FBF0014 */ lw $ra, 0x14($sp) +/* 26280 80025680 27BD0018 */ addiu $sp, $sp, 0x18 +/* 26284 80025684 03E00008 */ jr $ra +/* 26288 80025688 00000000 */ nop + +glabel func_8002568C +/* 2628C 8002568C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 26290 80025690 AFBF0014 */ sw $ra, 0x14($sp) +/* 26294 80025694 00803025 */ or $a2, $a0, $zero +/* 26298 80025698 3C0E8009 */ lui $t6, %hi(D_8008F68C) +/* 2629C 8002569C 8DCEF68C */ lw $t6, %lo(D_8008F68C)($t6) +/* 262A0 800256A0 00067840 */ sll $t7, $a2, 1 +/* 262A4 800256A4 3C048009 */ lui $a0, %hi(D_8008F620) +/* 262A8 800256A8 01CFC021 */ addu $t8, $t6, $t7 +/* 262AC 800256AC 87050000 */ lh $a1, 0x0($t8) +/* 262B0 800256B0 0C00E62C */ jal alSndpSetSound +/* 262B4 800256B4 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 262B8 800256B8 3C048009 */ lui $a0, %hi(D_8008F620) +/* 262BC 800256BC 0C00E658 */ jal alSndpStop +/* 262C0 800256C0 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 262C4 800256C4 8FBF0014 */ lw $ra, 0x14($sp) +/* 262C8 800256C8 27BD0018 */ addiu $sp, $sp, 0x18 +/* 262CC 800256CC 03E00008 */ jr $ra +/* 262D0 800256D0 00000000 */ nop + +glabel func_800256D4 +/* 262D4 800256D4 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 262D8 800256D8 AFBF0014 */ sw $ra, 0x14($sp) +/* 262DC 800256DC 00803025 */ or $a2, $a0, $zero +/* 262E0 800256E0 3C0E8009 */ lui $t6, %hi(D_8008F68C) +/* 262E4 800256E4 8DCEF68C */ lw $t6, %lo(D_8008F68C)($t6) +/* 262E8 800256E8 00067840 */ sll $t7, $a2, 1 +/* 262EC 800256EC 3C048009 */ lui $a0, %hi(D_8008F620) +/* 262F0 800256F0 01CFC021 */ addu $t8, $t6, $t7 +/* 262F4 800256F4 87050000 */ lh $a1, 0x0($t8) +/* 262F8 800256F8 0C00E62C */ jal alSndpSetSound +/* 262FC 800256FC 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 26300 80025700 3C048009 */ lui $a0, %hi(D_8008F620) +/* 26304 80025704 0C00E634 */ jal alSndpGetState +/* 26308 80025708 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 2630C 8002570C 8FBF0014 */ lw $ra, 0x14($sp) +/* 26310 80025710 27BD0018 */ addiu $sp, $sp, 0x18 +/* 26314 80025714 03E00008 */ jr $ra +/* 26318 80025718 00000000 */ nop + +glabel func_8002571C +/* 2631C 8002571C 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 26320 80025720 AFB20020 */ sw $s2, 0x20($sp) +/* 26324 80025724 3C128009 */ lui $s2, %hi(D_8008F934) +/* 26328 80025728 2652F934 */ addiu $s2, $s2, %lo(D_8008F934) +/* 2632C 8002572C AFBF003C */ sw $ra, 0x3C($sp) +/* 26330 80025730 AFBE0038 */ sw $fp, 0x38($sp) +/* 26334 80025734 AFB70034 */ sw $s7, 0x34($sp) +/* 26338 80025738 AFB60030 */ sw $s6, 0x30($sp) +/* 2633C 8002573C AFB5002C */ sw $s5, 0x2C($sp) +/* 26340 80025740 AFB40028 */ sw $s4, 0x28($sp) +/* 26344 80025744 AFB30024 */ sw $s3, 0x24($sp) +/* 26348 80025748 AFB1001C */ sw $s1, 0x1C($sp) +/* 2634C 8002574C AFB00018 */ sw $s0, 0x18($sp) +/* 26350 80025750 28010005 */ slti $at, $zero, 0x5 +/* 26354 80025754 AE400000 */ sw $zero, 0x0($s2) +/* 26358 80025758 10200046 */ beqz $at, .L80025874 +/* 2635C 8002575C 00001025 */ or $v0, $zero, $zero +/* 26360 80025760 3C1E8009 */ lui $fp, %hi(D_8008F958) +/* 26364 80025764 3C178009 */ lui $s7, %hi(D_8008F970) +/* 26368 80025768 3C168009 */ lui $s6, %hi(D_8008F95C) +/* 2636C 8002576C 3C158009 */ lui $s5, %hi(D_8008F960) +/* 26370 80025770 3C148009 */ lui $s4, %hi(D_8008F94C) +/* 26374 80025774 3C138005 */ lui $s3, %hi(D_800539A8) +/* 26378 80025778 3C118009 */ lui $s1, %hi(D_8008F930) +/* 2637C 8002577C 3C108009 */ lui $s0, %hi(D_8008F92C) +/* 26380 80025780 2610F92C */ addiu $s0, $s0, %lo(D_8008F92C) +/* 26384 80025784 2631F930 */ addiu $s1, $s1, %lo(D_8008F930) +/* 26388 80025788 267339A8 */ addiu $s3, $s3, %lo(D_800539A8) +/* 2638C 8002578C 2694F94C */ addiu $s4, $s4, %lo(D_8008F94C) +/* 26390 80025790 26B5F960 */ addiu $s5, $s5, %lo(D_8008F960) +/* 26394 80025794 26D6F95C */ addiu $s6, $s6, %lo(D_8008F95C) +/* 26398 80025798 26F7F970 */ addiu $s7, $s7, %lo(D_8008F970) +/* 2639C 8002579C 27DEF958 */ addiu $fp, $fp, %lo(D_8008F958) +.L800257A0: +/* 263A0 800257A0 00027080 */ sll $t6, $v0, 2 +/* 263A4 800257A4 026E1821 */ addu $v1, $s3, $t6 +/* 263A8 800257A8 8C640000 */ lw $a0, 0x0($v1) +/* 263AC 800257AC 2C410005 */ sltiu $at, $v0, 0x5 +/* 263B0 800257B0 5080002C */ beql $a0, $zero, .L80025864 +/* 263B4 800257B4 24480001 */ addiu $t0, $v0, 0x1 +/* 263B8 800257B8 10200023 */ beqz $at, .L80025848 +/* 263BC 800257BC 00027880 */ sll $t7, $v0, 2 +/* 263C0 800257C0 3C018007 */ lui $at, %hi(jtbl_80071700) +/* 263C4 800257C4 002F0821 */ addu $at, $at, $t7 +/* 263C8 800257C8 8C2F1700 */ lw $t7, %lo(jtbl_80071700)($at) +/* 263CC 800257CC 01E00008 */ jr $t7 +/* 263D0 800257D0 00000000 */ nop +glabel .L800257D4 +/* 263D4 800257D4 8E980000 */ lw $t8, 0x0($s4) +/* 263D8 800257D8 8EB90000 */ lw $t9, 0x0($s5) +/* 263DC 800257DC AE180000 */ sw $t8, 0x0($s0) +/* 263E0 800257E0 10000019 */ b .L80025848 +/* 263E4 800257E4 AE390000 */ sw $t9, 0x0($s1) +glabel .L800257E8 +/* 263E8 800257E8 3C088009 */ lui $t0, %hi(D_8008F950) +/* 263EC 800257EC 8D08F950 */ lw $t0, %lo(D_8008F950)($t0) +/* 263F0 800257F0 3C098009 */ lui $t1, %hi(D_8008F964) +/* 263F4 800257F4 AE080000 */ sw $t0, 0x0($s0) +/* 263F8 800257F8 8D29F964 */ lw $t1, %lo(D_8008F964)($t1) +/* 263FC 800257FC 10000012 */ b .L80025848 +/* 26400 80025800 AE290000 */ sw $t1, 0x0($s1) +glabel .L80025804 +/* 26404 80025804 3C0A8009 */ lui $t2, %hi(D_8008F954) +/* 26408 80025808 8D4AF954 */ lw $t2, %lo(D_8008F954)($t2) +/* 2640C 8002580C 3C0B8009 */ lui $t3, %hi(D_8008F968) +/* 26410 80025810 AE0A0000 */ sw $t2, 0x0($s0) +/* 26414 80025814 8D6BF968 */ lw $t3, %lo(D_8008F968)($t3) +/* 26418 80025818 1000000B */ b .L80025848 +/* 2641C 8002581C AE2B0000 */ sw $t3, 0x0($s1) +glabel .L80025820 +/* 26420 80025820 8FCC0000 */ lw $t4, 0x0($fp) +/* 26424 80025824 3C0D8009 */ lui $t5, %hi(D_8008F96C) +/* 26428 80025828 AE0C0000 */ sw $t4, 0x0($s0) +/* 2642C 8002582C 8DADF96C */ lw $t5, %lo(D_8008F96C)($t5) +/* 26430 80025830 10000005 */ b .L80025848 +/* 26434 80025834 AE2D0000 */ sw $t5, 0x0($s1) +glabel .L80025838 +/* 26438 80025838 8ECE0000 */ lw $t6, 0x0($s6) +/* 2643C 8002583C 8EEF0000 */ lw $t7, 0x0($s7) +/* 26440 80025840 AE0E0000 */ sw $t6, 0x0($s0) +/* 26444 80025844 AE2F0000 */ sw $t7, 0x0($s1) +.L80025848: +/* 26448 80025848 2498FFFF */ addiu $t8, $a0, -0x1 +/* 2644C 8002584C 17000004 */ bnez $t8, .L80025860 +/* 26450 80025850 AC780000 */ sw $t8, 0x0($v1) +/* 26454 80025854 0C009783 */ jal func_80025E0C +/* 26458 80025858 00000000 */ nop +/* 2645C 8002585C 8E420000 */ lw $v0, 0x0($s2) +.L80025860: +/* 26460 80025860 24480001 */ addiu $t0, $v0, 0x1 +.L80025864: +/* 26464 80025864 29010005 */ slti $at, $t0, 0x5 +/* 26468 80025868 AE480000 */ sw $t0, 0x0($s2) +/* 2646C 8002586C 1420FFCC */ bnez $at, .L800257A0 +/* 26470 80025870 01001025 */ or $v0, $t0, $zero +.L80025874: +/* 26474 80025874 3C048005 */ lui $a0, %hi(D_8005397C) +/* 26478 80025878 8C84397C */ lw $a0, %lo(D_8005397C)($a0) +/* 2647C 8002587C 240100FF */ addiu $at, $zero, 0xFF +/* 26480 80025880 10810003 */ beq $a0, $at, .L80025890 +/* 26484 80025884 00000000 */ nop +/* 26488 80025888 0C009661 */ jal func_80025984 +/* 2648C 8002588C 00000000 */ nop +.L80025890: +/* 26490 80025890 3C098005 */ lui $t1, %hi(D_8005398C) +/* 26494 80025894 8D29398C */ lw $t1, %lo(D_8005398C)($t1) +/* 26498 80025898 11200003 */ beqz $t1, .L800258A8 +/* 2649C 8002589C 00000000 */ nop +/* 264A0 800258A0 0C009885 */ jal func_80026214 +/* 264A4 800258A4 00000000 */ nop +.L800258A8: +/* 264A8 800258A8 3C0A8005 */ lui $t2, %hi(D_80053990) +/* 264AC 800258AC 8D4A3990 */ lw $t2, %lo(D_80053990)($t2) +/* 264B0 800258B0 11400003 */ beqz $t2, .L800258C0 +/* 264B4 800258B4 00000000 */ nop +/* 264B8 800258B8 0C0098BD */ jal func_800262F4 +/* 264BC 800258BC 00000000 */ nop +.L800258C0: +/* 264C0 800258C0 0C0096F6 */ jal func_80025BD8 +/* 264C4 800258C4 00000000 */ nop +/* 264C8 800258C8 8FBF003C */ lw $ra, 0x3C($sp) +/* 264CC 800258CC 8FB00018 */ lw $s0, 0x18($sp) +/* 264D0 800258D0 8FB1001C */ lw $s1, 0x1C($sp) +/* 264D4 800258D4 8FB20020 */ lw $s2, 0x20($sp) +/* 264D8 800258D8 8FB30024 */ lw $s3, 0x24($sp) +/* 264DC 800258DC 8FB40028 */ lw $s4, 0x28($sp) +/* 264E0 800258E0 8FB5002C */ lw $s5, 0x2C($sp) +/* 264E4 800258E4 8FB60030 */ lw $s6, 0x30($sp) +/* 264E8 800258E8 8FB70034 */ lw $s7, 0x34($sp) +/* 264EC 800258EC 8FBE0038 */ lw $fp, 0x38($sp) +/* 264F0 800258F0 03E00008 */ jr $ra +/* 264F4 800258F4 27BD0040 */ addiu $sp, $sp, 0x40 + +glabel func_800258F8 +/* 264F8 800258F8 04800009 */ bltz $a0, .L80025920 +/* 264FC 800258FC 28810047 */ slti $at, $a0, 0x47 +/* 26500 80025900 10200007 */ beqz $at, .L80025920 +/* 26504 80025904 00047080 */ sll $t6, $a0, 2 +/* 26508 80025908 3C0F8005 */ lui $t7, %hi(D_800539E4) +/* 2650C 8002590C 01EE7821 */ addu $t7, $t7, $t6 +/* 26510 80025910 8DEF39E4 */ lw $t7, %lo(D_800539E4)($t7) +/* 26514 80025914 3C018009 */ lui $at, %hi(D_8008F92C) +/* 26518 80025918 03E00008 */ jr $ra +/* 2651C 8002591C AC2FF92C */ sw $t7, %lo(D_8008F92C)($at) +.L80025920: +/* 26520 80025920 3C188005 */ lui $t8, %hi(D_800539E4) +/* 26524 80025924 8F1839E4 */ lw $t8, %lo(D_800539E4)($t8) +/* 26528 80025928 3C018009 */ lui $at, %hi(D_8008F92C) +/* 2652C 8002592C AC38F92C */ sw $t8, %lo(D_8008F92C)($at) +/* 26530 80025930 03E00008 */ jr $ra +/* 26534 80025934 00000000 */ nop + +glabel func_80025938 +/* 26538 80025938 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 2653C 8002593C AFBF0014 */ sw $ra, 0x14($sp) +/* 26540 80025940 3C0E8005 */ lui $t6, %hi(D_8005398C) +/* 26544 80025944 8DCE398C */ lw $t6, %lo(D_8005398C)($t6) +/* 26548 80025948 3C0F8005 */ lui $t7, %hi(D_80053990) +/* 2654C 8002594C 15C00004 */ bnez $t6, .L80025960 +/* 26550 80025950 00000000 */ nop +/* 26554 80025954 8DEF3990 */ lw $t7, %lo(D_80053990)($t7) +/* 26558 80025958 11E00003 */ beqz $t7, .L80025968 +/* 2655C 8002595C 00000000 */ nop +.L80025960: +/* 26560 80025960 10000004 */ b .L80025974 +/* 26564 80025964 24020001 */ addiu $v0, $zero, 0x1 +.L80025968: +/* 26568 80025968 0C009661 */ jal func_80025984 +/* 2656C 8002596C 00000000 */ nop +/* 26570 80025970 00001025 */ or $v0, $zero, $zero +.L80025974: +/* 26574 80025974 8FBF0014 */ lw $ra, 0x14($sp) +/* 26578 80025978 27BD0018 */ addiu $sp, $sp, 0x18 +/* 2657C 8002597C 03E00008 */ jr $ra +/* 26580 80025980 00000000 */ nop + +glabel func_80025984 +/* 26584 80025984 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 26588 80025988 AFBF0014 */ sw $ra, 0x14($sp) +/* 2658C 8002598C 00803025 */ or $a2, $a0, $zero +/* 26590 80025990 3C018005 */ lui $at, %hi(D_8005397C) +/* 26594 80025994 AC26397C */ sw $a2, %lo(D_8005397C)($at) +/* 26598 80025998 24010001 */ addiu $at, $zero, 0x1 +/* 2659C 8002599C 14C10025 */ bne $a2, $at, .L80025A34 +/* 265A0 800259A0 3C048009 */ lui $a0, %hi(D_8008FB30) +/* 265A4 800259A4 3C0E8005 */ lui $t6, %hi(D_80053980) +/* 265A8 800259A8 8DCE3980 */ lw $t6, %lo(D_80053980)($t6) +/* 265AC 800259AC 240100FF */ addiu $at, $zero, 0xFF +/* 265B0 800259B0 3C0F8009 */ lui $t7, %hi(D_8008F9C0) +/* 265B4 800259B4 15C10007 */ bne $t6, $at, .L800259D4 +/* 265B8 800259B8 00000000 */ nop +/* 265BC 800259BC 0C0098EA */ jal func_800263A8 +/* 265C0 800259C0 00002025 */ or $a0, $zero, $zero +/* 265C4 800259C4 5040000C */ beql $v0, $zero, .L800259F8 +/* 265C8 800259C8 24180001 */ addiu $t8, $zero, 0x1 +/* 265CC 800259CC 10000058 */ b .L80025B30 +/* 265D0 800259D0 8FBF0014 */ lw $ra, 0x14($sp) +.L800259D4: +/* 265D4 800259D4 8DEFF9C0 */ lw $t7, %lo(D_8008F9C0)($t7) +/* 265D8 800259D8 3C048009 */ lui $a0, %hi(D_8008F994) +/* 265DC 800259DC 51E00006 */ beql $t7, $zero, .L800259F8 +/* 265E0 800259E0 24180001 */ addiu $t8, $zero, 0x1 +/* 265E4 800259E4 0C00E430 */ jal alSeqpStop +/* 265E8 800259E8 2484F994 */ addiu $a0, $a0, %lo(D_8008F994) +/* 265EC 800259EC 10000050 */ b .L80025B30 +/* 265F0 800259F0 8FBF0014 */ lw $ra, 0x14($sp) +/* 265F4 800259F4 24180001 */ addiu $t8, $zero, 0x1 +.L800259F8: +/* 265F8 800259F8 3C018005 */ lui $at, %hi(D_80053978) +/* 265FC 800259FC 3C048009 */ lui $a0, %hi(D_8008FB30) +/* 26600 80025A00 AC383978 */ sw $t8, %lo(D_80053978)($at) +/* 26604 80025A04 2484FB30 */ addiu $a0, $a0, %lo(D_8008FB30) +/* 26608 80025A08 0C00DA38 */ jal alSeqpSetVol +/* 2660C 80025A0C 24057FFF */ addiu $a1, $zero, 0x7FFF +/* 26610 80025A10 24197FFF */ addiu $t9, $zero, 0x7FFF +/* 26614 80025A14 3C018005 */ lui $at, %hi(D_80053988) +/* 26618 80025A18 AC393988 */ sw $t9, %lo(D_80053988)($at) +/* 2661C 80025A1C 0C0094D9 */ jal func_80025364 +/* 26620 80025A20 24040001 */ addiu $a0, $zero, 0x1 +/* 26624 80025A24 240800FF */ addiu $t0, $zero, 0xFF +/* 26628 80025A28 3C018005 */ lui $at, %hi(D_8005397C) +/* 2662C 80025A2C 1000003F */ b .L80025B2C +/* 26630 80025A30 AC28397C */ sw $t0, %lo(D_8005397C)($at) +.L80025A34: +/* 26634 80025A34 3C018005 */ lui $at, %hi(D_80053978) +/* 26638 80025A38 AC203978 */ sw $zero, %lo(D_80053978)($at) +/* 2663C 80025A3C 2484FB30 */ addiu $a0, $a0, %lo(D_8008FB30) +/* 26640 80025A40 0C00E430 */ jal alSeqpStop +/* 26644 80025A44 AFA60020 */ sw $a2, 0x20($sp) +/* 26648 80025A48 8FA60020 */ lw $a2, 0x20($sp) +/* 2664C 80025A4C 3C098005 */ lui $t1, %hi(D_80053980) +/* 26650 80025A50 3C0D8005 */ lui $t5, %hi(D_80053980) +/* 26654 80025A54 28C10050 */ slti $at, $a2, 0x50 +/* 26658 80025A58 1420001C */ bnez $at, .L80025ACC +/* 2665C 80025A5C 00000000 */ nop +/* 26660 80025A60 8D293980 */ lw $t1, %lo(D_80053980)($t1) +/* 26664 80025A64 24C2FFB0 */ addiu $v0, $a2, -0x50 +/* 26668 80025A68 AFA2001C */ sw $v0, 0x1C($sp) +/* 2666C 80025A6C 10490005 */ beq $v0, $t1, .L80025A84 +/* 26670 80025A70 00000000 */ nop +/* 26674 80025A74 0C0098EA */ jal func_800263A8 +/* 26678 80025A78 00402025 */ or $a0, $v0, $zero +/* 2667C 80025A7C 5440002C */ bnel $v0, $zero, .L80025B30 +/* 26680 80025A80 8FBF0014 */ lw $ra, 0x14($sp) +.L80025A84: +/* 26684 80025A84 0C0094D9 */ jal func_80025364 +/* 26688 80025A88 00002025 */ or $a0, $zero, $zero +/* 2668C 80025A8C 3C048009 */ lui $a0, %hi(D_8008F994) +/* 26690 80025A90 2484F994 */ addiu $a0, $a0, %lo(D_8008F994) +/* 26694 80025A94 0C00DA38 */ jal alSeqpSetVol +/* 26698 80025A98 00002825 */ or $a1, $zero, $zero +/* 2669C 80025A9C 3C018005 */ lui $at, %hi(D_80053984) +/* 266A0 80025AA0 AC203984 */ sw $zero, %lo(D_80053984)($at) +/* 266A4 80025AA4 8FAB001C */ lw $t3, 0x1C($sp) +/* 266A8 80025AA8 3C018005 */ lui $at, %hi(D_80053990) +/* 266AC 80025AAC 240A0100 */ addiu $t2, $zero, 0x100 +/* 266B0 80025AB0 AC2A3990 */ sw $t2, %lo(D_80053990)($at) +/* 266B4 80025AB4 3C018005 */ lui $at, %hi(D_80053980) +/* 266B8 80025AB8 AC2B3980 */ sw $t3, %lo(D_80053980)($at) +/* 266BC 80025ABC 3C018005 */ lui $at, %hi(D_8005397C) +/* 266C0 80025AC0 240C00FF */ addiu $t4, $zero, 0xFF +/* 266C4 80025AC4 10000019 */ b .L80025B2C +/* 266C8 80025AC8 AC2C397C */ sw $t4, %lo(D_8005397C)($at) +.L80025ACC: +/* 266CC 80025ACC 8DAD3980 */ lw $t5, %lo(D_80053980)($t5) +/* 266D0 80025AD0 00C02025 */ or $a0, $a2, $zero +/* 266D4 80025AD4 50CD0006 */ beql $a2, $t5, .L80025AF0 +/* 266D8 80025AD8 00002025 */ or $a0, $zero, $zero +/* 266DC 80025ADC 0C0098EA */ jal func_800263A8 +/* 266E0 80025AE0 AFA60020 */ sw $a2, 0x20($sp) +/* 266E4 80025AE4 14400011 */ bnez $v0, .L80025B2C +/* 266E8 80025AE8 8FA60020 */ lw $a2, 0x20($sp) +/* 266EC 80025AEC 00002025 */ or $a0, $zero, $zero +.L80025AF0: +/* 266F0 80025AF0 0C0094D9 */ jal func_80025364 +/* 266F4 80025AF4 AFA60020 */ sw $a2, 0x20($sp) +/* 266F8 80025AF8 3C048009 */ lui $a0, %hi(D_8008F994) +/* 266FC 80025AFC 2484F994 */ addiu $a0, $a0, %lo(D_8008F994) +/* 26700 80025B00 0C00DA38 */ jal alSeqpSetVol +/* 26704 80025B04 24057FFF */ addiu $a1, $zero, 0x7FFF +/* 26708 80025B08 8FA60020 */ lw $a2, 0x20($sp) +/* 2670C 80025B0C 240E7FFF */ addiu $t6, $zero, 0x7FFF +/* 26710 80025B10 3C018005 */ lui $at, %hi(D_80053984) +/* 26714 80025B14 AC2E3984 */ sw $t6, %lo(D_80053984)($at) +/* 26718 80025B18 3C018005 */ lui $at, %hi(D_80053980) +/* 2671C 80025B1C AC263980 */ sw $a2, %lo(D_80053980)($at) +/* 26720 80025B20 3C018005 */ lui $at, %hi(D_8005397C) +/* 26724 80025B24 240F00FF */ addiu $t7, $zero, 0xFF +/* 26728 80025B28 AC2F397C */ sw $t7, %lo(D_8005397C)($at) +.L80025B2C: +/* 2672C 80025B2C 8FBF0014 */ lw $ra, 0x14($sp) +.L80025B30: +/* 26730 80025B30 27BD0020 */ addiu $sp, $sp, 0x20 +/* 26734 80025B34 03E00008 */ jr $ra +/* 26738 80025B38 00000000 */ nop + +glabel func_80025B3C +/* 2673C 80025B3C 3C058005 */ lui $a1, %hi(D_80053970) +/* 26740 80025B40 24A53970 */ addiu $a1, $a1, %lo(D_80053970) +/* 26744 80025B44 8CA20000 */ lw $v0, 0x0($a1) +/* 26748 80025B48 3C018005 */ lui $at, %hi(D_8005390C) +/* 2674C 80025B4C 240E0040 */ addiu $t6, $zero, 0x40 +/* 26750 80025B50 00021880 */ sll $v1, $v0, 2 +/* 26754 80025B54 00230821 */ addu $at, $at, $v1 +/* 26758 80025B58 AC24390C */ sw $a0, %lo(D_8005390C)($at) +/* 2675C 80025B5C 3C018005 */ lui $at, %hi(D_8005392C) +/* 26760 80025B60 00230821 */ addu $at, $at, $v1 +/* 26764 80025B64 AC20392C */ sw $zero, %lo(D_8005392C)($at) +/* 26768 80025B68 3C018005 */ lui $at, %hi(D_8005394C) +/* 2676C 80025B6C 00230821 */ addu $at, $at, $v1 +/* 26770 80025B70 24420001 */ addiu $v0, $v0, 0x1 +/* 26774 80025B74 AC2E394C */ sw $t6, %lo(D_8005394C)($at) +/* 26778 80025B78 304F0007 */ andi $t7, $v0, 0x7 +/* 2677C 80025B7C ACAF0000 */ sw $t7, 0x0($a1) +/* 26780 80025B80 3C018009 */ lui $at, %hi(D_8008FCB0) +/* 26784 80025B84 03E00008 */ jr $ra +/* 26788 80025B88 AC22FCB0 */ sw $v0, %lo(D_8008FCB0)($at) + +glabel func_80025B8C +/* 2678C 80025B8C 3C078005 */ lui $a3, %hi(D_80053970) +/* 26790 80025B90 24E73970 */ addiu $a3, $a3, %lo(D_80053970) +/* 26794 80025B94 8CE20000 */ lw $v0, 0x0($a3) +/* 26798 80025B98 3C018005 */ lui $at, %hi(D_8005390C) +/* 2679C 80025B9C 00021880 */ sll $v1, $v0, 2 +/* 267A0 80025BA0 00230821 */ addu $at, $at, $v1 +/* 267A4 80025BA4 AC24390C */ sw $a0, %lo(D_8005390C)($at) +/* 267A8 80025BA8 3C018005 */ lui $at, %hi(D_8005392C) +/* 267AC 80025BAC 00230821 */ addu $at, $at, $v1 +/* 267B0 80025BB0 AC25392C */ sw $a1, %lo(D_8005392C)($at) +/* 267B4 80025BB4 3C018005 */ lui $at, %hi(D_8005394C) +/* 267B8 80025BB8 00230821 */ addu $at, $at, $v1 +/* 267BC 80025BBC 24420001 */ addiu $v0, $v0, 0x1 +/* 267C0 80025BC0 AC26394C */ sw $a2, %lo(D_8005394C)($at) +/* 267C4 80025BC4 304E0007 */ andi $t6, $v0, 0x7 +/* 267C8 80025BC8 ACEE0000 */ sw $t6, 0x0($a3) +/* 267CC 80025BCC 3C018009 */ lui $at, %hi(D_8008FCB4) +/* 267D0 80025BD0 03E00008 */ jr $ra +/* 267D4 80025BD4 AC22FCB4 */ sw $v0, %lo(D_8008FCB4)($at) + +glabel func_80025BD8 +/* 267D8 80025BD8 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 267DC 80025BDC 3C078005 */ lui $a3, %hi(D_8005396C) +/* 267E0 80025BE0 24E7396C */ addiu $a3, $a3, %lo(D_8005396C) +/* 267E4 80025BE4 AFBF001C */ sw $ra, 0x1C($sp) +/* 267E8 80025BE8 AFB00018 */ sw $s0, 0x18($sp) +/* 267EC 80025BEC 240900FF */ addiu $t1, $zero, 0xFF +/* 267F0 80025BF0 8CE30000 */ lw $v1, 0x0($a3) +/* 267F4 80025BF4 3C0E8005 */ lui $t6, %hi(D_8005390C) +/* 267F8 80025BF8 25CE390C */ addiu $t6, $t6, %lo(D_8005390C) +/* 267FC 80025BFC 00031080 */ sll $v0, $v1, 2 +/* 26800 80025C00 004E2821 */ addu $a1, $v0, $t6 +/* 26804 80025C04 8CA60000 */ lw $a2, 0x0($a1) +/* 26808 80025C08 3C088009 */ lui $t0, %hi(D_8008F934) +/* 2680C 80025C0C 2508F934 */ addiu $t0, $t0, %lo(D_8008F934) +/* 26810 80025C10 11260077 */ beq $t1, $a2, .L80025DF0 +/* 26814 80025C14 3C0D8005 */ lui $t5, %hi(D_80053970) +/* 26818 80025C18 246F0001 */ addiu $t7, $v1, 0x1 +/* 2681C 80025C1C 31F80007 */ andi $t8, $t7, 0x7 +/* 26820 80025C20 330A0003 */ andi $t2, $t8, 0x3 +/* 26824 80025C24 00C08025 */ or $s0, $a2, $zero +/* 26828 80025C28 ACA90000 */ sw $t1, 0x0($a1) +/* 2682C 80025C2C ACF80000 */ sw $t8, 0x0($a3) +/* 26830 80025C30 AD0A0000 */ sw $t2, 0x0($t0) +/* 26834 80025C34 00C02025 */ or $a0, $a2, $zero +/* 26838 80025C38 0C00963E */ jal func_800258F8 +/* 2683C 80025C3C AFA20024 */ sw $v0, 0x24($sp) +/* 26840 80025C40 3C0B8009 */ lui $t3, %hi(D_8008F92C) +/* 26844 80025C44 8D6BF92C */ lw $t3, %lo(D_8008F92C)($t3) +/* 26848 80025C48 3C088009 */ lui $t0, %hi(D_8008F934) +/* 2684C 80025C4C 3C058005 */ lui $a1, %hi(D_800539A8) +/* 26850 80025C50 8D6C0000 */ lw $t4, 0x0($t3) +/* 26854 80025C54 2508F934 */ addiu $t0, $t0, %lo(D_8008F934) +/* 26858 80025C58 8FA20024 */ lw $v0, 0x24($sp) +/* 2685C 80025C5C 11800027 */ beqz $t4, .L80025CFC +/* 26860 80025C60 24A539A8 */ addiu $a1, $a1, %lo(D_800539A8) +/* 26864 80025C64 240D0004 */ addiu $t5, $zero, 0x4 +/* 26868 80025C68 3C0F8005 */ lui $t7, %hi(D_8005392C) +/* 2686C 80025C6C AD0D0000 */ sw $t5, 0x0($t0) +/* 26870 80025C70 01E27821 */ addu $t7, $t7, $v0 +/* 26874 80025C74 8DEF392C */ lw $t7, %lo(D_8005392C)($t7) +/* 26878 80025C78 000D7080 */ sll $t6, $t5, 2 +/* 2687C 80025C7C 3C018005 */ lui $at, %hi(D_800539BC) +/* 26880 80025C80 002E0821 */ addu $at, $at, $t6 +/* 26884 80025C84 3C188005 */ lui $t8, %hi(D_8005394C) +/* 26888 80025C88 3C058005 */ lui $a1, %hi(D_800539A4) +/* 2688C 80025C8C 8CA539A4 */ lw $a1, %lo(D_800539A4)($a1) +/* 26890 80025C90 0302C021 */ addu $t8, $t8, $v0 +/* 26894 80025C94 AC2F39BC */ sw $t7, %lo(D_800539BC)($at) +/* 26898 80025C98 8F18394C */ lw $t8, %lo(D_8005394C)($t8) +/* 2689C 80025C9C 3C018005 */ lui $at, %hi(D_800539D0) +/* 268A0 80025CA0 002E0821 */ addu $at, $at, $t6 +/* 268A4 80025CA4 AFA50028 */ sw $a1, 0x28($sp) +/* 268A8 80025CA8 1205000C */ beq $s0, $a1, .L80025CDC +/* 268AC 80025CAC AC3839D0 */ sw $t8, %lo(D_800539D0)($at) +/* 268B0 80025CB0 240600FF */ addiu $a2, $zero, 0xFF +/* 268B4 80025CB4 50C5000A */ beql $a2, $a1, .L80025CE0 +/* 268B8 80025CB8 240600FF */ addiu $a2, $zero, 0xFF +/* 268BC 80025CBC 0C0095A3 */ jal func_8002568C +/* 268C0 80025CC0 00A02025 */ or $a0, $a1, $zero +/* 268C4 80025CC4 3C018005 */ lui $at, %hi(D_800539A4) +/* 268C8 80025CC8 AC3039A4 */ sw $s0, %lo(D_800539A4)($at) +/* 268CC 80025CCC 0C00958D */ jal func_80025634 +/* 268D0 80025CD0 02002025 */ or $a0, $s0, $zero +/* 268D4 80025CD4 3C058005 */ lui $a1, %hi(D_800539A4) +/* 268D8 80025CD8 8CA539A4 */ lw $a1, %lo(D_800539A4)($a1) +.L80025CDC: +/* 268DC 80025CDC 240600FF */ addiu $a2, $zero, 0xFF +.L80025CE0: +/* 268E0 80025CE0 14C50038 */ bne $a2, $a1, .L80025DC4 +/* 268E4 80025CE4 3C018005 */ lui $at, %hi(D_800539A4) +/* 268E8 80025CE8 AC3039A4 */ sw $s0, %lo(D_800539A4)($at) +/* 268EC 80025CEC 0C00958D */ jal func_80025634 +/* 268F0 80025CF0 02002025 */ or $a0, $s0, $zero +/* 268F4 80025CF4 10000034 */ b .L80025DC8 +/* 268F8 80025CF8 8FAA0028 */ lw $t2, 0x28($sp) +.L80025CFC: +/* 268FC 80025CFC 8D040000 */ lw $a0, 0x0($t0) +/* 26900 80025D00 3C0A8005 */ lui $t2, %hi(D_8005392C) +/* 26904 80025D04 01425021 */ addu $t2, $t2, $v0 +/* 26908 80025D08 8D4A392C */ lw $t2, %lo(D_8005392C)($t2) +/* 2690C 80025D0C 3C018005 */ lui $at, %hi(D_800539BC) +/* 26910 80025D10 3C0B8005 */ lui $t3, %hi(D_8005394C) +/* 26914 80025D14 0004C880 */ sll $t9, $a0, 2 +/* 26918 80025D18 00390821 */ addu $at, $at, $t9 +/* 2691C 80025D1C 01625821 */ addu $t3, $t3, $v0 +/* 26920 80025D20 8D6B394C */ lw $t3, %lo(D_8005394C)($t3) +/* 26924 80025D24 AC2A39BC */ sw $t2, %lo(D_800539BC)($at) +/* 26928 80025D28 3C018005 */ lui $at, %hi(D_800539D0) +/* 2692C 80025D2C 00390821 */ addu $at, $at, $t9 +/* 26930 80025D30 00B96021 */ addu $t4, $a1, $t9 +/* 26934 80025D34 AC2B39D0 */ sw $t3, %lo(D_800539D0)($at) +/* 26938 80025D38 8D8D0000 */ lw $t5, 0x0($t4) +/* 2693C 80025D3C 3C068005 */ lui $a2, %hi(D_80053994) +/* 26940 80025D40 03202025 */ or $a0, $t9, $zero +/* 26944 80025D44 11A0000C */ beqz $t5, .L80025D78 +/* 26948 80025D48 00D93021 */ addu $a2, $a2, $t9 +/* 2694C 80025D4C 8CC63994 */ lw $a2, %lo(D_80053994)($a2) +/* 26950 80025D50 12060009 */ beq $s0, $a2, .L80025D78 +/* 26954 80025D54 00000000 */ nop +/* 26958 80025D58 0C0095A3 */ jal func_8002568C +/* 2695C 80025D5C 00C02025 */ or $a0, $a2, $zero +/* 26960 80025D60 3C048009 */ lui $a0, %hi(D_8008F934) +/* 26964 80025D64 8C84F934 */ lw $a0, %lo(D_8008F934)($a0) +/* 26968 80025D68 3C058005 */ lui $a1, %hi(D_800539A8) +/* 2696C 80025D6C 24A539A8 */ addiu $a1, $a1, %lo(D_800539A8) +/* 26970 80025D70 00047080 */ sll $t6, $a0, 2 +/* 26974 80025D74 01C02025 */ or $a0, $t6, $zero +.L80025D78: +/* 26978 80025D78 3C0F8005 */ lui $t7, %hi(D_80053994) +/* 2697C 80025D7C 25E23994 */ addiu $v0, $t7, %lo(D_80053994) +/* 26980 80025D80 00823821 */ addu $a3, $a0, $v0 +/* 26984 80025D84 3C048005 */ lui $a0, %hi(D_800539A4) +/* 26988 80025D88 248439A4 */ addiu $a0, $a0, %lo(D_800539A4) +/* 2698C 80025D8C 00001825 */ or $v1, $zero, $zero +/* 26990 80025D90 240600FF */ addiu $a2, $zero, 0xFF +.L80025D94: +/* 26994 80025D94 8C580000 */ lw $t8, 0x0($v0) +/* 26998 80025D98 00A3C821 */ addu $t9, $a1, $v1 +/* 2699C 80025D9C 56180004 */ bnel $s0, $t8, .L80025DB0 +/* 269A0 80025DA0 24420004 */ addiu $v0, $v0, 0x4 +/* 269A4 80025DA4 AF200000 */ sw $zero, 0x0($t9) +/* 269A8 80025DA8 AC460000 */ sw $a2, 0x0($v0) +/* 269AC 80025DAC 24420004 */ addiu $v0, $v0, 0x4 +.L80025DB0: +/* 269B0 80025DB0 1444FFF8 */ bne $v0, $a0, .L80025D94 +/* 269B4 80025DB4 24630004 */ addiu $v1, $v1, 0x4 +/* 269B8 80025DB8 ACF00000 */ sw $s0, 0x0($a3) +/* 269BC 80025DBC 0C00958D */ jal func_80025634 +/* 269C0 80025DC0 02002025 */ or $a0, $s0, $zero +.L80025DC4: +/* 269C4 80025DC4 8FAA0028 */ lw $t2, 0x28($sp) +.L80025DC8: +/* 269C8 80025DC8 3C0B8009 */ lui $t3, %hi(D_8008F92C) +/* 269CC 80025DCC 5150000B */ beql $t2, $s0, .L80025DFC +/* 269D0 80025DD0 8FBF001C */ lw $ra, 0x1C($sp) +/* 269D4 80025DD4 8D6BF92C */ lw $t3, %lo(D_8008F92C)($t3) +/* 269D8 80025DD8 3C018009 */ lui $at, %hi(D_8008F92C) +/* 269DC 80025DDC 256C0004 */ addiu $t4, $t3, 0x4 +/* 269E0 80025DE0 0C009783 */ jal func_80025E0C +/* 269E4 80025DE4 AC2CF92C */ sw $t4, %lo(D_8008F92C)($at) +/* 269E8 80025DE8 10000004 */ b .L80025DFC +/* 269EC 80025DEC 8FBF001C */ lw $ra, 0x1C($sp) +.L80025DF0: +/* 269F0 80025DF0 8DAD3970 */ lw $t5, %lo(D_80053970)($t5) +/* 269F4 80025DF4 ACED0000 */ sw $t5, 0x0($a3) +/* 269F8 80025DF8 8FBF001C */ lw $ra, 0x1C($sp) +.L80025DFC: +/* 269FC 80025DFC 8FB00018 */ lw $s0, 0x18($sp) +/* 26A00 80025E00 27BD0038 */ addiu $sp, $sp, 0x38 +/* 26A04 80025E04 03E00008 */ jr $ra +/* 26A08 80025E08 00000000 */ nop + +glabel func_80025E0C +/* 26A0C 80025E0C 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 26A10 80025E10 AFB00018 */ sw $s0, 0x18($sp) +/* 26A14 80025E14 3C108009 */ lui $s0, %hi(D_8008F92C) +/* 26A18 80025E18 2610F92C */ addiu $s0, $s0, %lo(D_8008F92C) +/* 26A1C 80025E1C AFBF001C */ sw $ra, 0x1C($sp) +/* 26A20 80025E20 3409FFFF */ ori $t1, $zero, 0xFFFF +/* 26A24 80025E24 3C048009 */ lui $a0, %hi(D_8008F934) +/* 26A28 80025E28 8C84F934 */ lw $a0, %lo(D_8008F934)($a0) +/* 26A2C 80025E2C 3C0E8005 */ lui $t6, %hi(D_80053994) +/* 26A30 80025E30 8E020000 */ lw $v0, 0x0($s0) +/* 26A34 80025E34 00043880 */ sll $a3, $a0, 2 +/* 26A38 80025E38 01C77021 */ addu $t6, $t6, $a3 +/* 26A3C 80025E3C 8DCE3994 */ lw $t6, %lo(D_80053994)($t6) +/* 26A40 80025E40 3401FFFD */ ori $at, $zero, 0xFFFD +/* 26A44 80025E44 AFAE0024 */ sw $t6, 0x24($sp) +/* 26A48 80025E48 8C430000 */ lw $v1, 0x0($v0) +/* 26A4C 80025E4C 15230005 */ bne $t1, $v1, .L80025E64 +/* 26A50 80025E50 00000000 */ nop +/* 26A54 80025E54 0C0095A3 */ jal func_8002568C +/* 26A58 80025E58 01C02025 */ or $a0, $t6, $zero +/* 26A5C 80025E5C 100000E9 */ b .L80026204 +/* 26A60 80025E60 8FBF001C */ lw $ra, 0x1C($sp) +.L80025E64: +/* 26A64 80025E64 14610007 */ bne $v1, $at, .L80025E84 +/* 26A68 80025E68 3C0A8009 */ lui $t2, %hi(D_8008F930) +/* 26A6C 80025E6C 254AF930 */ addiu $t2, $t2, %lo(D_8008F930) +/* 26A70 80025E70 244F0004 */ addiu $t7, $v0, 0x4 +/* 26A74 80025E74 AD420000 */ sw $v0, 0x0($t2) +/* 26A78 80025E78 AE0F0000 */ sw $t7, 0x0($s0) +/* 26A7C 80025E7C 8DE30000 */ lw $v1, 0x0($t7) +/* 26A80 80025E80 01E01025 */ or $v0, $t7, $zero +.L80025E84: +/* 26A84 80025E84 3C0A8009 */ lui $t2, %hi(D_8008F930) +/* 26A88 80025E88 3401FFFE */ ori $at, $zero, 0xFFFE +/* 26A8C 80025E8C 14610006 */ bne $v1, $at, .L80025EA8 +/* 26A90 80025E90 254AF930 */ addiu $t2, $t2, %lo(D_8008F930) +/* 26A94 80025E94 8D580000 */ lw $t8, 0x0($t2) +/* 26A98 80025E98 AE180000 */ sw $t8, 0x0($s0) +/* 26A9C 80025E9C 27020004 */ addiu $v0, $t8, 0x4 +/* 26AA0 80025EA0 AE020000 */ sw $v0, 0x0($s0) +/* 26AA4 80025EA4 8C430000 */ lw $v1, 0x0($v0) +.L80025EA8: +/* 26AA8 80025EA8 3C018005 */ lui $at, %hi(D_800539A8) +/* 26AAC 80025EAC 00270821 */ addu $at, $at, $a3 +/* 26AB0 80025EB0 AC2339A8 */ sw $v1, %lo(D_800539A8)($at) +/* 26AB4 80025EB4 244C0004 */ addiu $t4, $v0, 0x4 +/* 26AB8 80025EB8 AE0C0000 */ sw $t4, 0x0($s0) +/* 26ABC 80025EBC 8D8D0000 */ lw $t5, 0x0($t4) +/* 26AC0 80025EC0 01801025 */ or $v0, $t4, $zero +/* 26AC4 80025EC4 8FAF0024 */ lw $t7, 0x24($sp) +/* 26AC8 80025EC8 112D0018 */ beq $t1, $t5, .L80025F2C +/* 26ACC 80025ECC 3C0E8009 */ lui $t6, %hi(D_8008F68C) +/* 26AD0 80025ED0 8DCEF68C */ lw $t6, %lo(D_8008F68C)($t6) +/* 26AD4 80025ED4 000FC040 */ sll $t8, $t7, 1 +/* 26AD8 80025ED8 3C048009 */ lui $a0, %hi(D_8008F620) +/* 26ADC 80025EDC 01D8C821 */ addu $t9, $t6, $t8 +/* 26AE0 80025EE0 87250000 */ lh $a1, 0x0($t9) +/* 26AE4 80025EE4 0C00E62C */ jal alSndpSetSound +/* 26AE8 80025EE8 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 26AEC 80025EEC 8E0B0000 */ lw $t3, 0x0($s0) +/* 26AF0 80025EF0 3C058005 */ lui $a1, %hi(D_8004D750) +/* 26AF4 80025EF4 3C048009 */ lui $a0, %hi(D_8008F620) +/* 26AF8 80025EF8 8D6C0000 */ lw $t4, 0x0($t3) +/* 26AFC 80025EFC 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 26B00 80025F00 000C6880 */ sll $t5, $t4, 2 +/* 26B04 80025F04 00AD2821 */ addu $a1, $a1, $t5 +/* 26B08 80025F08 0C00E66C */ jal alSndpSetPitch +/* 26B0C 80025F0C 8CA5D750 */ lw $a1, %lo(D_8004D750)($a1) +/* 26B10 80025F10 3C048009 */ lui $a0, %hi(D_8008F934) +/* 26B14 80025F14 8C84F934 */ lw $a0, %lo(D_8008F934)($a0) +/* 26B18 80025F18 3C0A8009 */ lui $t2, %hi(D_8008F930) +/* 26B1C 80025F1C 254AF930 */ addiu $t2, $t2, %lo(D_8008F930) +/* 26B20 80025F20 8E020000 */ lw $v0, 0x0($s0) +/* 26B24 80025F24 3409FFFF */ ori $t1, $zero, 0xFFFF +/* 26B28 80025F28 00043880 */ sll $a3, $a0, 2 +.L80025F2C: +/* 26B2C 80025F2C 244F0004 */ addiu $t7, $v0, 0x4 +/* 26B30 80025F30 AE0F0000 */ sw $t7, 0x0($s0) +/* 26B34 80025F34 8DE30000 */ lw $v1, 0x0($t7) +/* 26B38 80025F38 3C068005 */ lui $a2, %hi(D_800539BC) +/* 26B3C 80025F3C 01E01025 */ or $v0, $t7, $zero +/* 26B40 80025F40 11230028 */ beq $t1, $v1, .L80025FE4 +/* 26B44 80025F44 00C73021 */ addu $a2, $a2, $a3 +/* 26B48 80025F48 3C068005 */ lui $a2, %hi(D_800539BC) +/* 26B4C 80025F4C 8FA80024 */ lw $t0, 0x24($sp) +/* 26B50 80025F50 00C73021 */ addu $a2, $a2, $a3 +/* 26B54 80025F54 8CC639BC */ lw $a2, %lo(D_800539BC)($a2) +/* 26B58 80025F58 3C018009 */ lui $at, %hi(D_8008F938) +/* 26B5C 80025F5C 00270821 */ addu $at, $at, $a3 +/* 26B60 80025F60 00087040 */ sll $t6, $t0, 1 +/* 26B64 80025F64 00601025 */ or $v0, $v1, $zero +/* 26B68 80025F68 AC23F938 */ sw $v1, %lo(D_8008F938)($at) +/* 26B6C 80025F6C 10C00006 */ beqz $a2, .L80025F88 +/* 26B70 80025F70 01C04025 */ or $t0, $t6, $zero +/* 26B74 80025F74 0003C202 */ srl $t8, $v1, 8 +/* 26B78 80025F78 00D80019 */ multu $a2, $t8 +/* 26B7C 80025F7C 00001012 */ mflo $v0 +/* 26B80 80025F80 00000000 */ nop +/* 26B84 80025F84 00000000 */ nop +.L80025F88: +/* 26B88 80025F88 3C198009 */ lui $t9, %hi(D_8008F68C) +/* 26B8C 80025F8C 8F39F68C */ lw $t9, %lo(D_8008F68C)($t9) +/* 26B90 80025F90 3C048009 */ lui $a0, %hi(D_8008F620) +/* 26B94 80025F94 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 26B98 80025F98 03285821 */ addu $t3, $t9, $t0 +/* 26B9C 80025F9C 85650000 */ lh $a1, 0x0($t3) +/* 26BA0 80025FA0 0C00E62C */ jal alSndpSetSound +/* 26BA4 80025FA4 AFA20020 */ sw $v0, 0x20($sp) +/* 26BA8 80025FA8 8FA20020 */ lw $v0, 0x20($sp) +/* 26BAC 80025FAC 3C048009 */ lui $a0, %hi(D_8008F620) +/* 26BB0 80025FB0 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 26BB4 80025FB4 00022C00 */ sll $a1, $v0, 16 +/* 26BB8 80025FB8 00056403 */ sra $t4, $a1, 16 +/* 26BBC 80025FBC 0C00E684 */ jal alSndpSetVol +/* 26BC0 80025FC0 01802825 */ or $a1, $t4, $zero +/* 26BC4 80025FC4 3C048009 */ lui $a0, %hi(D_8008F934) +/* 26BC8 80025FC8 8C84F934 */ lw $a0, %lo(D_8008F934)($a0) +/* 26BCC 80025FCC 3C0A8009 */ lui $t2, %hi(D_8008F930) +/* 26BD0 80025FD0 254AF930 */ addiu $t2, $t2, %lo(D_8008F930) +/* 26BD4 80025FD4 8E020000 */ lw $v0, 0x0($s0) +/* 26BD8 80025FD8 3409FFFF */ ori $t1, $zero, 0xFFFF +/* 26BDC 80025FDC 10000023 */ b .L8002606C +/* 26BE0 80025FE0 00043880 */ sll $a3, $a0, 2 +.L80025FE4: +/* 26BE4 80025FE4 8CC639BC */ lw $a2, %lo(D_800539BC)($a2) +/* 26BE8 80025FE8 3C038009 */ lui $v1, %hi(D_8008F938) +/* 26BEC 80025FEC 00671821 */ addu $v1, $v1, $a3 +/* 26BF0 80025FF0 50C0001F */ beql $a2, $zero, .L80026070 +/* 26BF4 80025FF4 244C0004 */ addiu $t4, $v0, 0x4 +/* 26BF8 80025FF8 8C63F938 */ lw $v1, %lo(D_8008F938)($v1) +/* 26BFC 80025FFC 8FAE0024 */ lw $t6, 0x24($sp) +/* 26C00 80026000 3C0F8009 */ lui $t7, %hi(D_8008F68C) +/* 26C04 80026004 00036A02 */ srl $t5, $v1, 8 +/* 26C08 80026008 00CD0019 */ multu $a2, $t5 +/* 26C0C 8002600C 8DEFF68C */ lw $t7, %lo(D_8008F68C)($t7) +/* 26C10 80026010 000EC040 */ sll $t8, $t6, 1 +/* 26C14 80026014 3C048009 */ lui $a0, %hi(D_8008F620) +/* 26C18 80026018 01F8C821 */ addu $t9, $t7, $t8 +/* 26C1C 8002601C 87250000 */ lh $a1, 0x0($t9) +/* 26C20 80026020 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 26C24 80026024 00001012 */ mflo $v0 +/* 26C28 80026028 AFA20020 */ sw $v0, 0x20($sp) +/* 26C2C 8002602C 0C00E62C */ jal alSndpSetSound +/* 26C30 80026030 00000000 */ nop +/* 26C34 80026034 8FA20020 */ lw $v0, 0x20($sp) +/* 26C38 80026038 3C048009 */ lui $a0, %hi(D_8008F620) +/* 26C3C 8002603C 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 26C40 80026040 00022C00 */ sll $a1, $v0, 16 +/* 26C44 80026044 00055C03 */ sra $t3, $a1, 16 +/* 26C48 80026048 0C00E684 */ jal alSndpSetVol +/* 26C4C 8002604C 01602825 */ or $a1, $t3, $zero +/* 26C50 80026050 3C048009 */ lui $a0, %hi(D_8008F934) +/* 26C54 80026054 8C84F934 */ lw $a0, %lo(D_8008F934)($a0) +/* 26C58 80026058 3C0A8009 */ lui $t2, %hi(D_8008F930) +/* 26C5C 8002605C 254AF930 */ addiu $t2, $t2, %lo(D_8008F930) +/* 26C60 80026060 8E020000 */ lw $v0, 0x0($s0) +/* 26C64 80026064 3409FFFF */ ori $t1, $zero, 0xFFFF +/* 26C68 80026068 00043880 */ sll $a3, $a0, 2 +.L8002606C: +/* 26C6C 8002606C 244C0004 */ addiu $t4, $v0, 0x4 +.L80026070: +/* 26C70 80026070 AE0C0000 */ sw $t4, 0x0($s0) +/* 26C74 80026074 8D8E0000 */ lw $t6, 0x0($t4) +/* 26C78 80026078 3C0F8005 */ lui $t7, %hi(D_800539D0) +/* 26C7C 8002607C 01E77821 */ addu $t7, $t7, $a3 +/* 26C80 80026080 112E0017 */ beq $t1, $t6, .L800260E0 +/* 26C84 80026084 00000000 */ nop +/* 26C88 80026088 8DEF39D0 */ lw $t7, %lo(D_800539D0)($t7) +/* 26C8C 8002608C 24010040 */ addiu $at, $zero, 0x40 +/* 26C90 80026090 3C188009 */ lui $t8, %hi(D_8008F68C) +/* 26C94 80026094 15E10012 */ bne $t7, $at, .L800260E0 +/* 26C98 80026098 8FB90024 */ lw $t9, 0x24($sp) +/* 26C9C 8002609C 8F18F68C */ lw $t8, %lo(D_8008F68C)($t8) +/* 26CA0 800260A0 00195840 */ sll $t3, $t9, 1 +/* 26CA4 800260A4 3C048009 */ lui $a0, %hi(D_8008F620) +/* 26CA8 800260A8 030B6021 */ addu $t4, $t8, $t3 +/* 26CAC 800260AC 85850000 */ lh $a1, 0x0($t4) +/* 26CB0 800260B0 0C00E62C */ jal alSndpSetSound +/* 26CB4 800260B4 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 26CB8 800260B8 8E0D0000 */ lw $t5, 0x0($s0) +/* 26CBC 800260BC 3C048009 */ lui $a0, %hi(D_8008F620) +/* 26CC0 800260C0 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 26CC4 800260C4 0C00E69C */ jal alSndpSetPan +/* 26CC8 800260C8 91A50003 */ lbu $a1, 0x3($t5) +/* 26CCC 800260CC 3C048009 */ lui $a0, %hi(D_8008F934) +/* 26CD0 800260D0 8C84F934 */ lw $a0, %lo(D_8008F934)($a0) +/* 26CD4 800260D4 3C0A8009 */ lui $t2, %hi(D_8008F930) +/* 26CD8 800260D8 254AF930 */ addiu $t2, $t2, %lo(D_8008F930) +/* 26CDC 800260DC 00043880 */ sll $a3, $a0, 2 +.L800260E0: +/* 26CE0 800260E0 3C0E8005 */ lui $t6, %hi(D_800539D0) +/* 26CE4 800260E4 01C77021 */ addu $t6, $t6, $a3 +/* 26CE8 800260E8 8DCE39D0 */ lw $t6, %lo(D_800539D0)($t6) +/* 26CEC 800260EC 24010040 */ addiu $at, $zero, 0x40 +/* 26CF0 800260F0 3C0F8009 */ lui $t7, %hi(D_8008F68C) +/* 26CF4 800260F4 11C10015 */ beq $t6, $at, .L8002614C +/* 26CF8 800260F8 8FB90024 */ lw $t9, 0x24($sp) +/* 26CFC 800260FC 8DEFF68C */ lw $t7, %lo(D_8008F68C)($t7) +/* 26D00 80026100 0019C040 */ sll $t8, $t9, 1 +/* 26D04 80026104 3C048009 */ lui $a0, %hi(D_8008F620) +/* 26D08 80026108 01F85821 */ addu $t3, $t7, $t8 +/* 26D0C 8002610C 85650000 */ lh $a1, 0x0($t3) +/* 26D10 80026110 0C00E62C */ jal alSndpSetSound +/* 26D14 80026114 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 26D18 80026118 3C0C8009 */ lui $t4, %hi(D_8008F934) +/* 26D1C 8002611C 8D8CF934 */ lw $t4, %lo(D_8008F934)($t4) +/* 26D20 80026120 3C058005 */ lui $a1, %hi(D_800539D3) +/* 26D24 80026124 3C048009 */ lui $a0, %hi(D_8008F620) +/* 26D28 80026128 000C6880 */ sll $t5, $t4, 2 +/* 26D2C 8002612C 00AD2821 */ addu $a1, $a1, $t5 +/* 26D30 80026130 90A539D3 */ lbu $a1, %lo(D_800539D3)($a1) +/* 26D34 80026134 0C00E69C */ jal alSndpSetPan +/* 26D38 80026138 2484F620 */ addiu $a0, $a0, %lo(D_8008F620) +/* 26D3C 8002613C 3C048009 */ lui $a0, %hi(D_8008F934) +/* 26D40 80026140 3C0A8009 */ lui $t2, %hi(D_8008F930) +/* 26D44 80026144 254AF930 */ addiu $t2, $t2, %lo(D_8008F930) +/* 26D48 80026148 8C84F934 */ lw $a0, %lo(D_8008F934)($a0) +.L8002614C: +/* 26D4C 8002614C 8E0E0000 */ lw $t6, 0x0($s0) +/* 26D50 80026150 2C810005 */ sltiu $at, $a0, 0x5 +/* 26D54 80026154 00047880 */ sll $t7, $a0, 2 +/* 26D58 80026158 25D90004 */ addiu $t9, $t6, 0x4 +/* 26D5C 8002615C 10200028 */ beqz $at, .L80026200 +/* 26D60 80026160 AE190000 */ sw $t9, 0x0($s0) +/* 26D64 80026164 3C018007 */ lui $at, %hi(jtbl_80071714) +/* 26D68 80026168 002F0821 */ addu $at, $at, $t7 +/* 26D6C 8002616C 8C2F1714 */ lw $t7, %lo(jtbl_80071714)($at) +/* 26D70 80026170 01E00008 */ jr $t7 +/* 26D74 80026174 00000000 */ nop +glabel .L80026178 +/* 26D78 80026178 8E180000 */ lw $t8, 0x0($s0) +/* 26D7C 8002617C 3C018009 */ lui $at, %hi(D_8008F94C) +/* 26D80 80026180 AC38F94C */ sw $t8, %lo(D_8008F94C)($at) +/* 26D84 80026184 8D4B0000 */ lw $t3, 0x0($t2) +/* 26D88 80026188 3C018009 */ lui $at, %hi(D_8008F960) +/* 26D8C 8002618C 1000001C */ b .L80026200 +/* 26D90 80026190 AC2BF960 */ sw $t3, %lo(D_8008F960)($at) +glabel .L80026194 +/* 26D94 80026194 8E0C0000 */ lw $t4, 0x0($s0) +/* 26D98 80026198 3C018009 */ lui $at, %hi(D_8008F950) +/* 26D9C 8002619C AC2CF950 */ sw $t4, %lo(D_8008F950)($at) +/* 26DA0 800261A0 8D4D0000 */ lw $t5, 0x0($t2) +/* 26DA4 800261A4 3C018009 */ lui $at, %hi(D_8008F964) +/* 26DA8 800261A8 10000015 */ b .L80026200 +/* 26DAC 800261AC AC2DF964 */ sw $t5, %lo(D_8008F964)($at) +glabel .L800261B0 +/* 26DB0 800261B0 8E0E0000 */ lw $t6, 0x0($s0) +/* 26DB4 800261B4 3C018009 */ lui $at, %hi(D_8008F954) +/* 26DB8 800261B8 AC2EF954 */ sw $t6, %lo(D_8008F954)($at) +/* 26DBC 800261BC 8D590000 */ lw $t9, 0x0($t2) +/* 26DC0 800261C0 3C018009 */ lui $at, %hi(D_8008F968) +/* 26DC4 800261C4 1000000E */ b .L80026200 +/* 26DC8 800261C8 AC39F968 */ sw $t9, %lo(D_8008F968)($at) +glabel .L800261CC +/* 26DCC 800261CC 8E0F0000 */ lw $t7, 0x0($s0) +/* 26DD0 800261D0 3C018009 */ lui $at, %hi(D_8008F958) +/* 26DD4 800261D4 AC2FF958 */ sw $t7, %lo(D_8008F958)($at) +/* 26DD8 800261D8 8D580000 */ lw $t8, 0x0($t2) +/* 26DDC 800261DC 3C018009 */ lui $at, %hi(D_8008F96C) +/* 26DE0 800261E0 10000007 */ b .L80026200 +/* 26DE4 800261E4 AC38F96C */ sw $t8, %lo(D_8008F96C)($at) +glabel .L800261E8 +/* 26DE8 800261E8 8E0B0000 */ lw $t3, 0x0($s0) +/* 26DEC 800261EC 3C018009 */ lui $at, %hi(D_8008F95C) +/* 26DF0 800261F0 AC2BF95C */ sw $t3, %lo(D_8008F95C)($at) +/* 26DF4 800261F4 8D4C0000 */ lw $t4, 0x0($t2) +/* 26DF8 800261F8 3C018009 */ lui $at, %hi(D_8008F970) +/* 26DFC 800261FC AC2CF970 */ sw $t4, %lo(D_8008F970)($at) +.L80026200: +/* 26E00 80026200 8FBF001C */ lw $ra, 0x1C($sp) +.L80026204: +/* 26E04 80026204 8FB00018 */ lw $s0, 0x18($sp) +/* 26E08 80026208 27BD0028 */ addiu $sp, $sp, 0x28 +/* 26E0C 8002620C 03E00008 */ jr $ra +/* 26E10 80026210 00000000 */ nop + +glabel func_80026214 +/* 26E14 80026214 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 26E18 80026218 AFBF0014 */ sw $ra, 0x14($sp) +/* 26E1C 8002621C 3C038005 */ lui $v1, %hi(D_80053978) +/* 26E20 80026220 8C633978 */ lw $v1, %lo(D_80053978)($v1) +/* 26E24 80026224 3C0F8005 */ lui $t7, %hi(D_80053984) +/* 26E28 80026228 25EF3984 */ addiu $t7, $t7, %lo(D_80053984) +/* 26E2C 8002622C 00037080 */ sll $t6, $v1, 2 +/* 26E30 80026230 01CF1021 */ addu $v0, $t6, $t7 +/* 26E34 80026234 3C198005 */ lui $t9, %hi(D_8005398C) +/* 26E38 80026238 8F39398C */ lw $t9, %lo(D_8005398C)($t9) +/* 26E3C 8002623C 8C580000 */ lw $t8, 0x0($v0) +/* 26E40 80026240 3C098005 */ lui $t1, %hi(D_80053974) +/* 26E44 80026244 3C0A8005 */ lui $t2, %hi(D_80053974) +/* 26E48 80026248 03194023 */ subu $t0, $t8, $t9 +/* 26E4C 8002624C AC480000 */ sw $t0, 0x0($v0) +/* 26E50 80026250 05000007 */ bltz $t0, .L80026270 +/* 26E54 80026254 01003025 */ or $a2, $t0, $zero +/* 26E58 80026258 8D293974 */ lw $t1, %lo(D_80053974)($t1) +/* 26E5C 8002625C 00037080 */ sll $t6, $v1, 2 +/* 26E60 80026260 01C37023 */ subu $t6, $t6, $v1 +/* 26E64 80026264 0128082A */ slt $at, $t1, $t0 +/* 26E68 80026268 10200012 */ beqz $at, .L800262B4 +/* 26E6C 8002626C 000E7080 */ sll $t6, $t6, 2 +.L80026270: +/* 26E70 80026270 00035880 */ sll $t3, $v1, 2 +/* 26E74 80026274 01635823 */ subu $t3, $t3, $v1 +/* 26E78 80026278 000B5880 */ sll $t3, $t3, 2 +/* 26E7C 8002627C 01635821 */ addu $t3, $t3, $v1 +/* 26E80 80026280 000B58C0 */ sll $t3, $t3, 3 +/* 26E84 80026284 01635823 */ subu $t3, $t3, $v1 +/* 26E88 80026288 8D4A3974 */ lw $t2, %lo(D_80053974)($t2) +/* 26E8C 8002628C 000B5880 */ sll $t3, $t3, 2 +/* 26E90 80026290 3C0D8009 */ lui $t5, %hi(D_8008F978) +/* 26E94 80026294 25ADF978 */ addiu $t5, $t5, %lo(D_8008F978) +/* 26E98 80026298 256C001C */ addiu $t4, $t3, 0x1C +/* 26E9C 8002629C 018D2021 */ addu $a0, $t4, $t5 +/* 26EA0 800262A0 0C00E430 */ jal alSeqpStop +/* 26EA4 800262A4 AC4A0000 */ sw $t2, 0x0($v0) +/* 26EA8 800262A8 3C018005 */ lui $at, %hi(D_8005398C) +/* 26EAC 800262AC 1000000D */ b .L800262E4 +/* 26EB0 800262B0 AC20398C */ sw $zero, %lo(D_8005398C)($at) +.L800262B4: +/* 26EB4 800262B4 01C37021 */ addu $t6, $t6, $v1 +/* 26EB8 800262B8 000E70C0 */ sll $t6, $t6, 3 +/* 26EBC 800262BC 01C37023 */ subu $t6, $t6, $v1 +/* 26EC0 800262C0 000E7080 */ sll $t6, $t6, 2 +/* 26EC4 800262C4 3C188009 */ lui $t8, %hi(D_8008F978) +/* 26EC8 800262C8 00062C00 */ sll $a1, $a2, 16 +/* 26ECC 800262CC 0005CC03 */ sra $t9, $a1, 16 +/* 26ED0 800262D0 2718F978 */ addiu $t8, $t8, %lo(D_8008F978) +/* 26ED4 800262D4 25CF001C */ addiu $t7, $t6, 0x1C +/* 26ED8 800262D8 01F82021 */ addu $a0, $t7, $t8 +/* 26EDC 800262DC 0C00DA38 */ jal alSeqpSetVol +/* 26EE0 800262E0 03202825 */ or $a1, $t9, $zero +.L800262E4: +/* 26EE4 800262E4 8FBF0014 */ lw $ra, 0x14($sp) +/* 26EE8 800262E8 27BD0018 */ addiu $sp, $sp, 0x18 +/* 26EEC 800262EC 03E00008 */ jr $ra +/* 26EF0 800262F0 00000000 */ nop + +glabel func_800262F4 +/* 26EF4 800262F4 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 26EF8 800262F8 3C048005 */ lui $a0, %hi(D_80053990) +/* 26EFC 800262FC 24843990 */ addiu $a0, $a0, %lo(D_80053990) +/* 26F00 80026300 AFBF0014 */ sw $ra, 0x14($sp) +/* 26F04 80026304 3C068005 */ lui $a2, %hi(D_80053978) +/* 26F08 80026308 8CC63978 */ lw $a2, %lo(D_80053978)($a2) +/* 26F0C 8002630C 3C0F8005 */ lui $t7, %hi(D_80053984) +/* 26F10 80026310 25EF3984 */ addiu $t7, $t7, %lo(D_80053984) +/* 26F14 80026314 00067080 */ sll $t6, $a2, 2 +/* 26F18 80026318 01CF1021 */ addu $v0, $t6, $t7 +/* 26F1C 8002631C 8C580000 */ lw $t8, 0x0($v0) +/* 26F20 80026320 8C990000 */ lw $t9, 0x0($a0) +/* 26F24 80026324 3C098005 */ lui $t1, %hi(D_80053974) +/* 26F28 80026328 3C0A8005 */ lui $t2, %hi(D_80053974) +/* 26F2C 8002632C 03194021 */ addu $t0, $t8, $t9 +/* 26F30 80026330 AC480000 */ sw $t0, 0x0($v0) +/* 26F34 80026334 05000005 */ bltz $t0, .L8002634C +/* 26F38 80026338 01001825 */ or $v1, $t0, $zero +/* 26F3C 8002633C 8D293974 */ lw $t1, %lo(D_80053974)($t1) +/* 26F40 80026340 0128082A */ slt $at, $t1, $t0 +/* 26F44 80026344 50200006 */ beql $at, $zero, .L80026360 +/* 26F48 80026348 00065880 */ sll $t3, $a2, 2 +.L8002634C: +/* 26F4C 8002634C 8D4A3974 */ lw $t2, %lo(D_80053974)($t2) +/* 26F50 80026350 AC800000 */ sw $zero, 0x0($a0) +/* 26F54 80026354 10000010 */ b .L80026398 +/* 26F58 80026358 AC4A0000 */ sw $t2, 0x0($v0) +/* 26F5C 8002635C 00065880 */ sll $t3, $a2, 2 +.L80026360: +/* 26F60 80026360 01665823 */ subu $t3, $t3, $a2 +/* 26F64 80026364 000B5880 */ sll $t3, $t3, 2 +/* 26F68 80026368 01665821 */ addu $t3, $t3, $a2 +/* 26F6C 8002636C 000B58C0 */ sll $t3, $t3, 3 +/* 26F70 80026370 01665823 */ subu $t3, $t3, $a2 +/* 26F74 80026374 000B5880 */ sll $t3, $t3, 2 +/* 26F78 80026378 3C0D8009 */ lui $t5, %hi(D_8008F978) +/* 26F7C 8002637C 00032C00 */ sll $a1, $v1, 16 +/* 26F80 80026380 00057403 */ sra $t6, $a1, 16 +/* 26F84 80026384 25ADF978 */ addiu $t5, $t5, %lo(D_8008F978) +/* 26F88 80026388 256C001C */ addiu $t4, $t3, 0x1C +/* 26F8C 8002638C 018D2021 */ addu $a0, $t4, $t5 +/* 26F90 80026390 0C00DA38 */ jal alSeqpSetVol +/* 26F94 80026394 01C02825 */ or $a1, $t6, $zero +.L80026398: +/* 26F98 80026398 8FBF0014 */ lw $ra, 0x14($sp) +/* 26F9C 8002639C 27BD0018 */ addiu $sp, $sp, 0x18 +/* 26FA0 800263A0 03E00008 */ jr $ra +/* 26FA4 800263A4 00000000 */ nop + +glabel func_800263A8 +/* 26FA8 800263A8 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 26FAC 800263AC AFBF0014 */ sw $ra, 0x14($sp) +/* 26FB0 800263B0 00802825 */ or $a1, $a0, $zero +/* 26FB4 800263B4 3C0E8005 */ lui $t6, %hi(D_80053978) +/* 26FB8 800263B8 8DCE3978 */ lw $t6, %lo(D_80053978)($t6) +/* 26FBC 800263BC 3C188009 */ lui $t8, %hi(D_8008F9C0) +/* 26FC0 800263C0 3C048009 */ lui $a0, %hi(D_8008F994) +/* 26FC4 800263C4 000E7880 */ sll $t7, $t6, 2 +/* 26FC8 800263C8 01EE7823 */ subu $t7, $t7, $t6 +/* 26FCC 800263CC 000F7880 */ sll $t7, $t7, 2 +/* 26FD0 800263D0 01EE7821 */ addu $t7, $t7, $t6 +/* 26FD4 800263D4 000F78C0 */ sll $t7, $t7, 3 +/* 26FD8 800263D8 01EE7823 */ subu $t7, $t7, $t6 +/* 26FDC 800263DC 000F7880 */ sll $t7, $t7, 2 +/* 26FE0 800263E0 030FC021 */ addu $t8, $t8, $t7 +/* 26FE4 800263E4 8F18F9C0 */ lw $t8, %lo(D_8008F9C0)($t8) +/* 26FE8 800263E8 17000008 */ bnez $t8, .L8002640C +/* 26FEC 800263EC 00000000 */ nop +/* 26FF0 800263F0 0C0094B6 */ jal func_800252D8 +/* 26FF4 800263F4 00002025 */ or $a0, $zero, $zero +/* 26FF8 800263F8 24040001 */ addiu $a0, $zero, 0x1 +/* 26FFC 800263FC 0C0094B6 */ jal func_800252D8 +/* 27000 80026400 24050001 */ addiu $a1, $zero, 0x1 +/* 27004 80026404 10000007 */ b .L80026424 +/* 27008 80026408 00001025 */ or $v0, $zero, $zero +.L8002640C: +/* 2700C 8002640C 0C00E430 */ jal alSeqpStop +/* 27010 80026410 2484F994 */ addiu $a0, $a0, %lo(D_8008F994) +/* 27014 80026414 3C048009 */ lui $a0, %hi(D_8008FB30) +/* 27018 80026418 0C00E430 */ jal alSeqpStop +/* 2701C 8002641C 2484FB30 */ addiu $a0, $a0, %lo(D_8008FB30) +/* 27020 80026420 24020001 */ addiu $v0, $zero, 0x1 +.L80026424: +/* 27024 80026424 8FBF0014 */ lw $ra, 0x14($sp) +/* 27028 80026428 27BD0018 */ addiu $sp, $sp, 0x18 +/* 2702C 8002642C 03E00008 */ jr $ra +/* 27030 80026430 00000000 */ nop + +glabel func_80026434 +/* 27034 80026434 3C038005 */ lui $v1, %hi(D_8005398C) +/* 27038 80026438 2463398C */ addiu $v1, $v1, %lo(D_8005398C) +/* 2703C 8002643C 8C6E0000 */ lw $t6, 0x0($v1) +/* 27040 80026440 3C0F8005 */ lui $t7, %hi(D_80053990) +/* 27044 80026444 15C00006 */ bnez $t6, .L80026460 +/* 27048 80026448 00000000 */ nop +/* 2704C 8002644C 8DEF3990 */ lw $t7, %lo(D_80053990)($t7) +/* 27050 80026450 34188000 */ ori $t8, $zero, 0x8000 +/* 27054 80026454 00001025 */ or $v0, $zero, $zero +/* 27058 80026458 11E00003 */ beqz $t7, .L80026468 +/* 2705C 8002645C 00000000 */ nop +.L80026460: +/* 27060 80026460 03E00008 */ jr $ra +/* 27064 80026464 24020001 */ addiu $v0, $zero, 0x1 +.L80026468: +/* 27068 80026468 0304001B */ divu $zero, $t8, $a0 +/* 2706C 8002646C 0000C812 */ mflo $t9 +/* 27070 80026470 AC790000 */ sw $t9, 0x0($v1) +/* 27074 80026474 14800002 */ bnez $a0, .L80026480 +/* 27078 80026478 00000000 */ nop +/* 2707C 8002647C 0007000D */ break 7 +.L80026480: +/* 27080 80026480 03E00008 */ jr $ra +/* 27084 80026484 00000000 */ nop + +glabel func_80026488 +/* 27088 80026488 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 2708C 8002648C AFBF002C */ sw $ra, 0x2C($sp) +/* 27090 80026490 AFB40028 */ sw $s4, 0x28($sp) +/* 27094 80026494 AFB30024 */ sw $s3, 0x24($sp) +/* 27098 80026498 AFB20020 */ sw $s2, 0x20($sp) +/* 2709C 8002649C AFB1001C */ sw $s1, 0x1C($sp) +/* 270A0 800264A0 AFB00018 */ sw $s0, 0x18($sp) +/* 270A4 800264A4 3C108005 */ lui $s0, %hi(D_80053994) +/* 270A8 800264A8 3C118005 */ lui $s1, %hi(D_800539A8) +/* 270AC 800264AC 3C148005 */ lui $s4, %hi(D_800539BC) +/* 270B0 800264B0 269439BC */ addiu $s4, $s4, %lo(D_800539BC) +/* 270B4 800264B4 263139A8 */ addiu $s1, $s1, %lo(D_800539A8) +/* 270B8 800264B8 26103994 */ addiu $s0, $s0, %lo(D_80053994) +/* 270BC 800264BC 241300FF */ addiu $s3, $zero, 0xFF +/* 270C0 800264C0 241200FF */ addiu $s2, $zero, 0xFF +.L800264C4: +/* 270C4 800264C4 8E040000 */ lw $a0, 0x0($s0) +/* 270C8 800264C8 50920004 */ beql $a0, $s2, .L800264DC +/* 270CC 800264CC 26310004 */ addiu $s1, $s1, 0x4 +/* 270D0 800264D0 0C0095A3 */ jal func_8002568C +/* 270D4 800264D4 00000000 */ nop +/* 270D8 800264D8 26310004 */ addiu $s1, $s1, 0x4 +.L800264DC: +/* 270DC 800264DC 26100004 */ addiu $s0, $s0, 0x4 +/* 270E0 800264E0 AE20FFFC */ sw $zero, -0x4($s1) +/* 270E4 800264E4 1634FFF7 */ bne $s1, $s4, .L800264C4 +/* 270E8 800264E8 AE13FFFC */ sw $s3, -0x4($s0) +/* 270EC 800264EC 8FBF002C */ lw $ra, 0x2C($sp) +/* 270F0 800264F0 8FB00018 */ lw $s0, 0x18($sp) +/* 270F4 800264F4 8FB1001C */ lw $s1, 0x1C($sp) +/* 270F8 800264F8 8FB20020 */ lw $s2, 0x20($sp) +/* 270FC 800264FC 8FB30024 */ lw $s3, 0x24($sp) +/* 27100 80026500 8FB40028 */ lw $s4, 0x28($sp) +/* 27104 80026504 03E00008 */ jr $ra +/* 27108 80026508 27BD0030 */ addiu $sp, $sp, 0x30 + +glabel func_8002650C +/* 2710C 8002650C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 27110 80026510 AFBF0014 */ sw $ra, 0x14($sp) +/* 27114 80026514 3C048005 */ lui $a0, %hi(D_800539A4) +/* 27118 80026518 8C8439A4 */ lw $a0, %lo(D_800539A4)($a0) +/* 2711C 8002651C 240100FF */ addiu $at, $zero, 0xFF +/* 27120 80026520 10810003 */ beq $a0, $at, .L80026530 +/* 27124 80026524 00000000 */ nop +/* 27128 80026528 0C0095A3 */ jal func_8002568C +/* 2712C 8002652C 00000000 */ nop +.L80026530: +/* 27130 80026530 3C018005 */ lui $at, %hi(D_800539B8) +/* 27134 80026534 AC2039B8 */ sw $zero, %lo(D_800539B8)($at) +/* 27138 80026538 3C018005 */ lui $at, %hi(D_800539A4) +/* 2713C 8002653C 240E00FF */ addiu $t6, $zero, 0xFF +/* 27140 80026540 AC2E39A4 */ sw $t6, %lo(D_800539A4)($at) +/* 27144 80026544 8FBF0014 */ lw $ra, 0x14($sp) +/* 27148 80026548 27BD0018 */ addiu $sp, $sp, 0x18 +/* 2714C 8002654C 03E00008 */ jr $ra +/* 27150 80026550 00000000 */ nop + +glabel func_80026554 +/* 27154 80026554 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 27158 80026558 AFBF0014 */ sw $ra, 0x14($sp) +/* 2715C 8002655C 00803025 */ or $a2, $a0, $zero +/* 27160 80026560 3C0E8005 */ lui $t6, %hi(D_8005398C) +/* 27164 80026564 8DCE398C */ lw $t6, %lo(D_8005398C)($t6) +/* 27168 80026568 3C0F8005 */ lui $t7, %hi(D_80053990) +/* 2716C 8002656C 15C00006 */ bnez $t6, .L80026588 +/* 27170 80026570 00000000 */ nop +/* 27174 80026574 8DEF3990 */ lw $t7, %lo(D_80053990)($t7) +/* 27178 80026578 3C028005 */ lui $v0, %hi(D_80053974) +/* 2717C 8002657C 24423974 */ addiu $v0, $v0, %lo(D_80053974) +/* 27180 80026580 11E00003 */ beqz $t7, .L80026590 +/* 27184 80026584 0006C1C0 */ sll $t8, $a2, 7 +.L80026588: +/* 27188 80026588 10000013 */ b .L800265D8 +/* 2718C 8002658C 24020001 */ addiu $v0, $zero, 0x1 +.L80026590: +/* 27190 80026590 2719007F */ addiu $t9, $t8, 0x7F +/* 27194 80026594 AC590000 */ sw $t9, 0x0($v0) +/* 27198 80026598 3C048009 */ lui $a0, %hi(D_8008F994) +/* 2719C 8002659C 2484F994 */ addiu $a0, $a0, %lo(D_8008F994) +/* 271A0 800265A0 0C00DA38 */ jal alSeqpSetVol +/* 271A4 800265A4 84450002 */ lh $a1, 0x2($v0) +/* 271A8 800265A8 3C048009 */ lui $a0, %hi(D_8008FB30) +/* 271AC 800265AC 3C058005 */ lui $a1, %hi(D_80053976) +/* 271B0 800265B0 84A53976 */ lh $a1, %lo(D_80053976)($a1) +/* 271B4 800265B4 0C00DA38 */ jal alSeqpSetVol +/* 271B8 800265B8 2484FB30 */ addiu $a0, $a0, %lo(D_8008FB30) +/* 271BC 800265BC 3C038005 */ lui $v1, %hi(D_80053974) +/* 271C0 800265C0 8C633974 */ lw $v1, %lo(D_80053974)($v1) +/* 271C4 800265C4 3C048005 */ lui $a0, %hi(D_80053984) +/* 271C8 800265C8 24843984 */ addiu $a0, $a0, %lo(D_80053984) +/* 271CC 800265CC 00001025 */ or $v0, $zero, $zero +/* 271D0 800265D0 AC830000 */ sw $v1, 0x0($a0) +/* 271D4 800265D4 AC830004 */ sw $v1, 0x4($a0) +.L800265D8: +/* 271D8 800265D8 8FBF0014 */ lw $ra, 0x14($sp) +/* 271DC 800265DC 27BD0018 */ addiu $sp, $sp, 0x18 +/* 271E0 800265E0 03E00008 */ jr $ra +/* 271E4 800265E4 00000000 */ nop +/* 271E8 800265E8 00000000 */ nop +/* 271EC 800265EC 00000000 */ nop diff --git a/asm/328F0.s b/asm/328F0.s new file mode 100644 index 0000000..e57c1e1 --- /dev/null +++ b/asm/328F0.s @@ -0,0 +1,1982 @@ +.include "macro.inc" + +/* assembler directives */ +.set noat /* allow manual use of $at */ +.set noreorder /* don't insert nops after branches */ +.set gp=64 /* allow use of 64-bit general purpose registers */ + +.section .text, "ax" + +/* Generated by spimdisasm 1.10.1 */ + +glabel func_80031CF0 +/* 328F0 80031CF0 AFA40000 */ sw $a0, 0x0($sp) +/* 328F4 80031CF4 308EFFFF */ andi $t6, $a0, 0xFFFF +/* 328F8 80031CF8 01C02025 */ or $a0, $t6, $zero +/* 328FC 80031CFC 288103E8 */ slti $at, $a0, 0x3E8 +/* 32900 80031D00 14200002 */ bnez $at, .L80031D0C +/* 32904 80031D04 00801025 */ or $v0, $a0, $zero +/* 32908 80031D08 240203E7 */ addiu $v0, $zero, 0x3E7 +.L80031D0C: +/* 3290C 80031D0C 24030064 */ addiu $v1, $zero, 0x64 +/* 32910 80031D10 0043001A */ div $zero, $v0, $v1 +/* 32914 80031D14 2404000A */ addiu $a0, $zero, 0xA +/* 32918 80031D18 00007812 */ mflo $t7 +/* 3291C 80031D1C 00004810 */ mfhi $t1 +/* 32920 80031D20 28580064 */ slti $t8, $v0, 0x64 +/* 32924 80031D24 14600002 */ bnez $v1, .L80031D30 +/* 32928 80031D28 00000000 */ nop +/* 3292C 80031D2C 0007000D */ break 7 +.L80031D30: +/* 32930 80031D30 2401FFFF */ addiu $at, $zero, -0x1 +/* 32934 80031D34 14610004 */ bne $v1, $at, .L80031D48 +/* 32938 80031D38 3C018000 */ lui $at, (0x80000000 >> 16) +/* 3293C 80031D3C 14410002 */ bne $v0, $at, .L80031D48 +/* 32940 80031D40 00000000 */ nop +/* 32944 80031D44 0006000D */ break 6 +.L80031D48: +/* 32948 80031D48 0124001A */ div $zero, $t1, $a0 +/* 3294C 80031D4C 00005012 */ mflo $t2 +/* 32950 80031D50 3B180001 */ xori $t8, $t8, 0x1 +/* 32954 80031D54 284B000A */ slti $t3, $v0, 0xA +/* 32958 80031D58 0044001A */ div $zero, $v0, $a0 +/* 3295C 80031D5C 01F8C821 */ addu $t9, $t7, $t8 +/* 32960 80031D60 396B0001 */ xori $t3, $t3, 0x1 +/* 32964 80031D64 014B6021 */ addu $t4, $t2, $t3 +/* 32968 80031D68 00007010 */ mfhi $t6 +/* 3296C 80031D6C 2728000F */ addiu $t0, $t9, 0xF +/* 32970 80031D70 258D000F */ addiu $t5, $t4, 0xF +/* 32974 80031D74 25CF0010 */ addiu $t7, $t6, 0x10 +/* 32978 80031D78 A0A80000 */ sb $t0, 0x0($a1) +/* 3297C 80031D7C 14800002 */ bnez $a0, .L80031D88 +/* 32980 80031D80 00000000 */ nop +/* 32984 80031D84 0007000D */ break 7 +.L80031D88: +/* 32988 80031D88 2401FFFF */ addiu $at, $zero, -0x1 +/* 3298C 80031D8C 14810004 */ bne $a0, $at, .L80031DA0 +/* 32990 80031D90 3C018000 */ lui $at, (0x80000000 >> 16) +/* 32994 80031D94 15210002 */ bne $t1, $at, .L80031DA0 +/* 32998 80031D98 00000000 */ nop +/* 3299C 80031D9C 0006000D */ break 6 +.L80031DA0: +/* 329A0 80031DA0 A0AD0001 */ sb $t5, 0x1($a1) +/* 329A4 80031DA4 14800002 */ bnez $a0, .L80031DB0 +/* 329A8 80031DA8 00000000 */ nop +/* 329AC 80031DAC 0007000D */ break 7 +.L80031DB0: +/* 329B0 80031DB0 2401FFFF */ addiu $at, $zero, -0x1 +/* 329B4 80031DB4 14810004 */ bne $a0, $at, .L80031DC8 +/* 329B8 80031DB8 3C018000 */ lui $at, (0x80000000 >> 16) +/* 329BC 80031DBC 14410002 */ bne $v0, $at, .L80031DC8 +/* 329C0 80031DC0 00000000 */ nop +/* 329C4 80031DC4 0006000D */ break 6 +.L80031DC8: +/* 329C8 80031DC8 A0AF0002 */ sb $t7, 0x2($a1) +/* 329CC 80031DCC 03E00008 */ jr $ra +/* 329D0 80031DD0 00000000 */ nop + +glabel func_80031DD4 +/* 329D4 80031DD4 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 329D8 80031DD8 AFBF0014 */ sw $ra, 0x14($sp) +/* 329DC 80031DDC 00803025 */ or $a2, $a0, $zero +/* 329E0 80031DE0 24010001 */ addiu $at, $zero, 0x1 +/* 329E4 80031DE4 14C10006 */ bne $a2, $at, .L80031E00 +/* 329E8 80031DE8 3C098009 */ lui $t1, %hi(D_80092D30) +/* 329EC 80031DEC 25292D30 */ addiu $t1, $t1, %lo(D_80092D30) +/* 329F0 80031DF0 8D2E0000 */ lw $t6, 0x0($t1) +/* 329F4 80031DF4 25CF0006 */ addiu $t7, $t6, 0x6 +/* 329F8 80031DF8 10000044 */ b .L80031F0C +/* 329FC 80031DFC AD2F0000 */ sw $t7, 0x0($t1) +.L80031E00: +/* 32A00 80031E00 2401000A */ addiu $at, $zero, 0xA +/* 32A04 80031E04 14C1000B */ bne $a2, $at, .L80031E34 +/* 32A08 80031E08 3C028009 */ lui $v0, %hi(D_80092D36) +/* 32A0C 80031E0C 24422D36 */ addiu $v0, $v0, %lo(D_80092D36) +/* 32A10 80031E10 84580000 */ lh $t8, 0x0($v0) +/* 32A14 80031E14 3C048009 */ lui $a0, %hi(D_80092D34) +/* 32A18 80031E18 2719000D */ addiu $t9, $t8, 0xD +/* 32A1C 80031E1C A4590000 */ sh $t9, 0x0($v0) +/* 32A20 80031E20 84450000 */ lh $a1, 0x0($v0) +/* 32A24 80031E24 0C00C7C7 */ jal func_80031F1C +/* 32A28 80031E28 84842D34 */ lh $a0, %lo(D_80092D34)($a0) +/* 32A2C 80031E2C 10000038 */ b .L80031F10 +/* 32A30 80031E30 8FBF0014 */ lw $ra, 0x14($sp) +.L80031E34: +/* 32A34 80031E34 28C1000F */ slti $at, $a2, 0xF +/* 32A38 80031E38 14200006 */ bnez $at, .L80031E54 +/* 32A3C 80031E3C 2408000C */ addiu $t0, $zero, 0xC +/* 32A40 80031E40 3C0A8009 */ lui $t2, %hi(D_80092CC0) +/* 32A44 80031E44 8D4A2CC0 */ lw $t2, %lo(D_80092CC0)($t2) +/* 32A48 80031E48 0146082A */ slt $at, $t2, $a2 +/* 32A4C 80031E4C 50200003 */ beql $at, $zero, .L80031E5C +/* 32A50 80031E50 24C6FFF1 */ addiu $a2, $a2, -0xF +.L80031E54: +/* 32A54 80031E54 2406003B */ addiu $a2, $zero, 0x3B +/* 32A58 80031E58 24C6FFF1 */ addiu $a2, $a2, -0xF +.L80031E5C: +/* 32A5C 80031E5C 30CB00F8 */ andi $t3, $a2, 0xF8 +/* 32A60 80031E60 01680019 */ multu $t3, $t0 +/* 32A64 80031E64 30CF0007 */ andi $t7, $a2, 0x7 +/* 32A68 80031E68 000FC0C0 */ sll $t8, $t7, 3 +/* 32A6C 80031E6C 3C098009 */ lui $t1, %hi(D_80092D30) +/* 32A70 80031E70 3C0B8007 */ lui $t3, %hi(D_8006E4C0) +/* 32A74 80031E74 25292D30 */ addiu $t1, $t1, %lo(D_80092D30) +/* 32A78 80031E78 256BE4C0 */ addiu $t3, $t3, %lo(D_8006E4C0) +/* 32A7C 80031E7C 3C068007 */ lui $a2, %hi(D_8006F3F8) +/* 32A80 80031E80 8D240000 */ lw $a0, 0x0($t1) +/* 32A84 80031E84 24C6F3F8 */ addiu $a2, $a2, %lo(D_8006F3F8) +/* 32A88 80031E88 00006012 */ mflo $t4 +/* 32A8C 80031E8C 00003825 */ or $a3, $zero, $zero +/* 32A90 80031E90 05810003 */ bgez $t4, .L80031EA0 +/* 32A94 80031E94 000C6843 */ sra $t5, $t4, 1 +/* 32A98 80031E98 25810001 */ addiu $at, $t4, 0x1 +/* 32A9C 80031E9C 00016843 */ sra $t5, $at, 1 +.L80031EA0: +/* 32AA0 80031EA0 000D70C0 */ sll $t6, $t5, 3 +/* 32AA4 80031EA4 07010003 */ bgez $t8, .L80031EB4 +/* 32AA8 80031EA8 0018C843 */ sra $t9, $t8, 1 +/* 32AAC 80031EAC 27010001 */ addiu $at, $t8, 0x1 +/* 32AB0 80031EB0 0001C843 */ sra $t9, $at, 1 +.L80031EB4: +/* 32AB4 80031EB4 01D95021 */ addu $t2, $t6, $t9 +/* 32AB8 80031EB8 014B2821 */ addu $a1, $t2, $t3 +.L80031EBC: +/* 32ABC 80031EBC 2402001C */ addiu $v0, $zero, 0x1C +.L80031EC0: +/* 32AC0 80031EC0 8CAC0000 */ lw $t4, 0x0($a1) +/* 32AC4 80031EC4 004C6806 */ srlv $t5, $t4, $v0 +/* 32AC8 80031EC8 31AF000F */ andi $t7, $t5, 0xF +/* 32ACC 80031ECC 11E00006 */ beqz $t7, .L80031EE8 +/* 32AD0 80031ED0 2442FFFC */ addiu $v0, $v0, -0x4 +/* 32AD4 80031ED4 8CD80000 */ lw $t8, 0x0($a2) +/* 32AD8 80031ED8 000F7040 */ sll $t6, $t7, 1 +/* 32ADC 80031EDC 030EC821 */ addu $t9, $t8, $t6 +/* 32AE0 80031EE0 972A0000 */ lhu $t2, 0x0($t9) +/* 32AE4 80031EE4 A48A0000 */ sh $t2, 0x0($a0) +.L80031EE8: +/* 32AE8 80031EE8 0441FFF5 */ bgez $v0, .L80031EC0 +/* 32AEC 80031EEC 24840002 */ addiu $a0, $a0, 0x2 +/* 32AF0 80031EF0 24E70001 */ addiu $a3, $a3, 0x1 +/* 32AF4 80031EF4 24840270 */ addiu $a0, $a0, 0x270 +/* 32AF8 80031EF8 14E8FFF0 */ bne $a3, $t0, .L80031EBC +/* 32AFC 80031EFC 24A50020 */ addiu $a1, $a1, 0x20 +/* 32B00 80031F00 8D220000 */ lw $v0, 0x0($t1) +/* 32B04 80031F04 244B0012 */ addiu $t3, $v0, 0x12 +/* 32B08 80031F08 AD2B0000 */ sw $t3, 0x0($t1) +.L80031F0C: +/* 32B0C 80031F0C 8FBF0014 */ lw $ra, 0x14($sp) +.L80031F10: +/* 32B10 80031F10 27BD0018 */ addiu $sp, $sp, 0x18 +/* 32B14 80031F14 03E00008 */ jr $ra +/* 32B18 80031F18 00000000 */ nop + +glabel func_80031F1C +/* 32B1C 80031F1C AFA40000 */ sw $a0, 0x0($sp) +/* 32B20 80031F20 00047400 */ sll $t6, $a0, 16 +/* 32B24 80031F24 AFA50004 */ sw $a1, 0x4($sp) +/* 32B28 80031F28 0005C400 */ sll $t8, $a1, 16 +/* 32B2C 80031F2C 00182C03 */ sra $a1, $t8, 16 +/* 32B30 80031F30 000E2403 */ sra $a0, $t6, 16 +/* 32B34 80031F34 00054080 */ sll $t0, $a1, 2 +/* 32B38 80031F38 3C018009 */ lui $at, %hi(D_80092D34) +/* 32B3C 80031F3C 01054021 */ addu $t0, $t0, $a1 +/* 32B40 80031F40 3C0B8009 */ lui $t3, %hi(D_80092D20) +/* 32B44 80031F44 8D6B2D20 */ lw $t3, %lo(D_80092D20)($t3) +/* 32B48 80031F48 A4242D34 */ sh $a0, %lo(D_80092D34)($at) +/* 32B4C 80031F4C 00084180 */ sll $t0, $t0, 6 +/* 32B50 80031F50 3C018009 */ lui $at, %hi(D_80092D36) +/* 32B54 80031F54 00884821 */ addu $t1, $a0, $t0 +/* 32B58 80031F58 A4252D36 */ sh $a1, %lo(D_80092D36)($at) +/* 32B5C 80031F5C 00095040 */ sll $t2, $t1, 1 +/* 32B60 80031F60 3C018009 */ lui $at, %hi(D_80092D30) +/* 32B64 80031F64 014B6021 */ addu $t4, $t2, $t3 +/* 32B68 80031F68 AC2C2D30 */ sw $t4, %lo(D_80092D30)($at) +/* 32B6C 80031F6C 03E00008 */ jr $ra +/* 32B70 80031F70 00000000 */ nop + +glabel func_80031F74 +/* 32B74 80031F74 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 32B78 80031F78 AFB10018 */ sw $s1, 0x18($sp) +/* 32B7C 80031F7C 00808825 */ or $s1, $a0, $zero +/* 32B80 80031F80 AFBF001C */ sw $ra, 0x1C($sp) +/* 32B84 80031F84 AFB00014 */ sw $s0, 0x14($sp) +/* 32B88 80031F88 92300000 */ lbu $s0, 0x0($s1) +/* 32B8C 80031F8C 12000006 */ beqz $s0, .L80031FA8 +/* 32B90 80031F90 02002025 */ or $a0, $s0, $zero +.L80031F94: +/* 32B94 80031F94 0C00C775 */ jal func_80031DD4 +/* 32B98 80031F98 26310001 */ addiu $s1, $s1, 0x1 +/* 32B9C 80031F9C 92300000 */ lbu $s0, 0x0($s1) +/* 32BA0 80031FA0 5600FFFC */ bnel $s0, $zero, .L80031F94 +/* 32BA4 80031FA4 02002025 */ or $a0, $s0, $zero +.L80031FA8: +/* 32BA8 80031FA8 8FBF001C */ lw $ra, 0x1C($sp) +/* 32BAC 80031FAC 8FB00014 */ lw $s0, 0x14($sp) +/* 32BB0 80031FB0 8FB10018 */ lw $s1, 0x18($sp) +/* 32BB4 80031FB4 03E00008 */ jr $ra +/* 32BB8 80031FB8 27BD0020 */ addiu $sp, $sp, 0x20 + +glabel func_80031FBC +/* 32BBC 80031FBC 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 32BC0 80031FC0 AFB10018 */ sw $s1, 0x18($sp) +/* 32BC4 80031FC4 AFB00014 */ sw $s0, 0x14($sp) +/* 32BC8 80031FC8 00A08025 */ or $s0, $a1, $zero +/* 32BCC 80031FCC 00808825 */ or $s1, $a0, $zero +/* 32BD0 80031FD0 AFBF001C */ sw $ra, 0x1C($sp) +/* 32BD4 80031FD4 02001025 */ or $v0, $s0, $zero +/* 32BD8 80031FD8 1200000C */ beqz $s0, .L8003200C +/* 32BDC 80031FDC 2610FFFF */ addiu $s0, $s0, -0x1 +/* 32BE0 80031FE0 92220000 */ lbu $v0, 0x0($s1) +/* 32BE4 80031FE4 10400009 */ beqz $v0, .L8003200C +/* 32BE8 80031FE8 00402025 */ or $a0, $v0, $zero +.L80031FEC: +/* 32BEC 80031FEC 0C00C775 */ jal func_80031DD4 +/* 32BF0 80031FF0 26310001 */ addiu $s1, $s1, 0x1 +/* 32BF4 80031FF4 02001025 */ or $v0, $s0, $zero +/* 32BF8 80031FF8 12000004 */ beqz $s0, .L8003200C +/* 32BFC 80031FFC 2610FFFF */ addiu $s0, $s0, -0x1 +/* 32C00 80032000 92220000 */ lbu $v0, 0x0($s1) +/* 32C04 80032004 5440FFF9 */ bnel $v0, $zero, .L80031FEC +/* 32C08 80032008 00402025 */ or $a0, $v0, $zero +.L8003200C: +/* 32C0C 8003200C 8FBF001C */ lw $ra, 0x1C($sp) +/* 32C10 80032010 8FB00014 */ lw $s0, 0x14($sp) +/* 32C14 80032014 8FB10018 */ lw $s1, 0x18($sp) +/* 32C18 80032018 03E00008 */ jr $ra +/* 32C1C 8003201C 27BD0020 */ addiu $sp, $sp, 0x20 + +glabel func_80032020 +/* 32C20 80032020 3C188007 */ lui $t8, %hi(D_8006F3C0) +/* 32C24 80032024 2718F3C0 */ addiu $t8, $t8, %lo(D_8006F3C0) +/* 32C28 80032028 000478C0 */ sll $t7, $a0, 3 +/* 32C2C 8003202C 01F8C821 */ addu $t9, $t7, $t8 +/* 32C30 80032030 3C018007 */ lui $at, %hi(D_8006F3F8) +/* 32C34 80032034 AC39F3F8 */ sw $t9, %lo(D_8006F3F8)($at) +/* 32C38 80032038 03E00008 */ jr $ra +/* 32C3C 8003203C 00000000 */ nop + +glabel func_80032040 +/* 32C40 80032040 AFA40000 */ sw $a0, 0x0($sp) +/* 32C44 80032044 00047400 */ sll $t6, $a0, 16 +/* 32C48 80032048 AFA50004 */ sw $a1, 0x4($sp) +/* 32C4C 8003204C 0005C400 */ sll $t8, $a1, 16 +/* 32C50 80032050 AFA60008 */ sw $a2, 0x8($sp) +/* 32C54 80032054 00066C00 */ sll $t5, $a2, 16 +/* 32C58 80032058 AFA7000C */ sw $a3, 0xC($sp) +/* 32C5C 8003205C 00077C00 */ sll $t7, $a3, 16 +/* 32C60 80032060 000F3C03 */ sra $a3, $t7, 16 +/* 32C64 80032064 000D3403 */ sra $a2, $t5, 16 +/* 32C68 80032068 00182C03 */ sra $a1, $t8, 16 +/* 32C6C 8003206C 000E2403 */ sra $a0, $t6, 16 +/* 32C70 80032070 0005C880 */ sll $t9, $a1, 2 +/* 32C74 80032074 0325C821 */ addu $t9, $t9, $a1 +/* 32C78 80032078 93A8001B */ lbu $t0, 0x1B($sp) +/* 32C7C 8003207C 0019C980 */ sll $t9, $t9, 6 +/* 32C80 80032080 3C0F8009 */ lui $t7, %hi(D_80092D20) +/* 32C84 80032084 8DEF2D20 */ lw $t7, %lo(D_80092D20)($t7) +/* 32C88 80032088 00996821 */ addu $t5, $a0, $t9 +/* 32C8C 8003208C 000D7040 */ sll $t6, $t5, 1 +/* 32C90 80032090 24010005 */ addiu $at, $zero, 0x5 +/* 32C94 80032094 8FA30010 */ lw $v1, 0x10($sp) +/* 32C98 80032098 15010035 */ bne $t0, $at, .L80032170 +/* 32C9C 8003209C 01CF1021 */ addu $v0, $t6, $t7 +/* 32CA0 800320A0 18E0005B */ blez $a3, .L80032210 +/* 32CA4 800320A4 00002025 */ or $a0, $zero, $zero +/* 32CA8 800320A8 24180140 */ addiu $t8, $zero, 0x140 +/* 32CAC 800320AC 03064823 */ subu $t1, $t8, $a2 +/* 32CB0 800320B0 0009C840 */ sll $t9, $t1, 1 +/* 32CB4 800320B4 03204825 */ or $t1, $t9, $zero +/* 32CB8 800320B8 8FA80014 */ lw $t0, 0x14($sp) +.L800320BC: +/* 32CBC 800320BC 18C00027 */ blez $a2, .L8003215C +/* 32CC0 800320C0 00002825 */ or $a1, $zero, $zero +/* 32CC4 800320C4 30CB0003 */ andi $t3, $a2, 0x3 +/* 32CC8 800320C8 1160000C */ beqz $t3, .L800320FC +/* 32CCC 800320CC 01605025 */ or $t2, $t3, $zero +.L800320D0: +/* 32CD0 800320D0 906D0000 */ lbu $t5, 0x0($v1) +/* 32CD4 800320D4 24A50001 */ addiu $a1, $a1, 0x1 +/* 32CD8 800320D8 24420002 */ addiu $v0, $v0, 0x2 +/* 32CDC 800320DC 000D7040 */ sll $t6, $t5, 1 +/* 32CE0 800320E0 010E7821 */ addu $t7, $t0, $t6 +/* 32CE4 800320E4 95F80000 */ lhu $t8, 0x0($t7) +/* 32CE8 800320E8 24630001 */ addiu $v1, $v1, 0x1 +/* 32CEC 800320EC 1545FFF8 */ bne $t2, $a1, .L800320D0 +/* 32CF0 800320F0 A458FFFE */ sh $t8, -0x2($v0) +/* 32CF4 800320F4 50A6001A */ beql $a1, $a2, .L80032160 +/* 32CF8 800320F8 24840001 */ addiu $a0, $a0, 0x1 +.L800320FC: +/* 32CFC 800320FC 90790000 */ lbu $t9, 0x0($v1) +/* 32D00 80032100 24A50004 */ addiu $a1, $a1, 0x4 +/* 32D04 80032104 24420008 */ addiu $v0, $v0, 0x8 +/* 32D08 80032108 00196840 */ sll $t5, $t9, 1 +/* 32D0C 8003210C 010D7021 */ addu $t6, $t0, $t5 +/* 32D10 80032110 95CF0000 */ lhu $t7, 0x0($t6) +/* 32D14 80032114 24630004 */ addiu $v1, $v1, 0x4 +/* 32D18 80032118 A44FFFF8 */ sh $t7, -0x8($v0) +/* 32D1C 8003211C 9078FFFD */ lbu $t8, -0x3($v1) +/* 32D20 80032120 0018C840 */ sll $t9, $t8, 1 +/* 32D24 80032124 01196821 */ addu $t5, $t0, $t9 +/* 32D28 80032128 95AE0000 */ lhu $t6, 0x0($t5) +/* 32D2C 8003212C A44EFFFA */ sh $t6, -0x6($v0) +/* 32D30 80032130 906FFFFE */ lbu $t7, -0x2($v1) +/* 32D34 80032134 000FC040 */ sll $t8, $t7, 1 +/* 32D38 80032138 0118C821 */ addu $t9, $t0, $t8 +/* 32D3C 8003213C 972D0000 */ lhu $t5, 0x0($t9) +/* 32D40 80032140 A44DFFFC */ sh $t5, -0x4($v0) +/* 32D44 80032144 906EFFFF */ lbu $t6, -0x1($v1) +/* 32D48 80032148 000E7840 */ sll $t7, $t6, 1 +/* 32D4C 8003214C 010FC021 */ addu $t8, $t0, $t7 +/* 32D50 80032150 97190000 */ lhu $t9, 0x0($t8) +/* 32D54 80032154 14A6FFE9 */ bne $a1, $a2, .L800320FC +/* 32D58 80032158 A459FFFE */ sh $t9, -0x2($v0) +.L8003215C: +/* 32D5C 8003215C 24840001 */ addiu $a0, $a0, 0x1 +.L80032160: +/* 32D60 80032160 1487FFD6 */ bne $a0, $a3, .L800320BC +/* 32D64 80032164 00491021 */ addu $v0, $v0, $t1 +/* 32D68 80032168 03E00008 */ jr $ra +/* 32D6C 8003216C 00000000 */ nop +.L80032170: +/* 32D70 80032170 24010002 */ addiu $at, $zero, 0x2 +/* 32D74 80032174 15010026 */ bne $t0, $at, .L80032210 +/* 32D78 80032178 00000000 */ nop +/* 32D7C 8003217C 18E00024 */ blez $a3, .L80032210 +/* 32D80 80032180 00002025 */ or $a0, $zero, $zero +/* 32D84 80032184 240D0140 */ addiu $t5, $zero, 0x140 +/* 32D88 80032188 01A64823 */ subu $t1, $t5, $a2 +/* 32D8C 8003218C 00097040 */ sll $t6, $t1, 1 +/* 32D90 80032190 01C04825 */ or $t1, $t6, $zero +/* 32D94 80032194 8FA80014 */ lw $t0, 0x14($sp) +.L80032198: +/* 32D98 80032198 18C0001A */ blez $a2, .L80032204 +/* 32D9C 8003219C 00002825 */ or $a1, $zero, $zero +/* 32DA0 800321A0 906B0000 */ lbu $t3, 0x0($v1) +.L800321A4: +/* 32DA4 800321A4 24A50002 */ addiu $a1, $a1, 0x2 +/* 32DA8 800321A8 24630001 */ addiu $v1, $v1, 0x1 +/* 32DAC 800321AC 000B6103 */ sra $t4, $t3, 4 +/* 32DB0 800321B0 318FFFFF */ andi $t7, $t4, 0xFFFF +/* 32DB4 800321B4 11E00007 */ beqz $t7, .L800321D4 +/* 32DB8 800321B8 316E000F */ andi $t6, $t3, 0xF +/* 32DBC 800321BC 000FC040 */ sll $t8, $t7, 1 +/* 32DC0 800321C0 0118C821 */ addu $t9, $t0, $t8 +/* 32DC4 800321C4 972D0000 */ lhu $t5, 0x0($t9) +/* 32DC8 800321C8 24420002 */ addiu $v0, $v0, 0x2 +/* 32DCC 800321CC 10000002 */ b .L800321D8 +/* 32DD0 800321D0 A44DFFFE */ sh $t5, -0x2($v0) +.L800321D4: +/* 32DD4 800321D4 24420002 */ addiu $v0, $v0, 0x2 +.L800321D8: +/* 32DD8 800321D8 11C00007 */ beqz $t6, .L800321F8 +/* 32DDC 800321DC 00A6082A */ slt $at, $a1, $a2 +/* 32DE0 800321E0 000E7840 */ sll $t7, $t6, 1 +/* 32DE4 800321E4 010FC021 */ addu $t8, $t0, $t7 +/* 32DE8 800321E8 97190000 */ lhu $t9, 0x0($t8) +/* 32DEC 800321EC 24420002 */ addiu $v0, $v0, 0x2 +/* 32DF0 800321F0 10000002 */ b .L800321FC +/* 32DF4 800321F4 A459FFFE */ sh $t9, -0x2($v0) +.L800321F8: +/* 32DF8 800321F8 24420002 */ addiu $v0, $v0, 0x2 +.L800321FC: +/* 32DFC 800321FC 5420FFE9 */ bnel $at, $zero, .L800321A4 +/* 32E00 80032200 906B0000 */ lbu $t3, 0x0($v1) +.L80032204: +/* 32E04 80032204 24840001 */ addiu $a0, $a0, 0x1 +/* 32E08 80032208 1487FFE3 */ bne $a0, $a3, .L80032198 +/* 32E0C 8003220C 00491021 */ addu $v0, $v0, $t1 +.L80032210: +/* 32E10 80032210 03E00008 */ jr $ra +/* 32E14 80032214 00000000 */ nop + +glabel func_80032218 +/* 32E18 80032218 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 32E1C 8003221C AFB20030 */ sw $s2, 0x30($sp) +/* 32E20 80032220 00A09025 */ or $s2, $a1, $zero +/* 32E24 80032224 AFBF0034 */ sw $ra, 0x34($sp) +/* 32E28 80032228 AFB1002C */ sw $s1, 0x2C($sp) +/* 32E2C 8003222C AFB00028 */ sw $s0, 0x28($sp) +/* 32E30 80032230 1A400010 */ blez $s2, .L80032274 +/* 32E34 80032234 00008825 */ or $s1, $zero, $zero +/* 32E38 80032238 00808025 */ or $s0, $a0, $zero +.L8003223C: +/* 32E3C 8003223C 8E0E0008 */ lw $t6, 0x8($s0) +/* 32E40 80032240 86040000 */ lh $a0, 0x0($s0) +/* 32E44 80032244 86050002 */ lh $a1, 0x2($s0) +/* 32E48 80032248 92060004 */ lbu $a2, 0x4($s0) +/* 32E4C 8003224C 92070005 */ lbu $a3, 0x5($s0) +/* 32E50 80032250 AFAE0010 */ sw $t6, 0x10($sp) +/* 32E54 80032254 8E0F000C */ lw $t7, 0xC($s0) +/* 32E58 80032258 24180002 */ addiu $t8, $zero, 0x2 +/* 32E5C 8003225C AFB80018 */ sw $t8, 0x18($sp) +/* 32E60 80032260 0C00C810 */ jal func_80032040 +/* 32E64 80032264 AFAF0014 */ sw $t7, 0x14($sp) +/* 32E68 80032268 26310001 */ addiu $s1, $s1, 0x1 +/* 32E6C 8003226C 1632FFF3 */ bne $s1, $s2, .L8003223C +/* 32E70 80032270 26100010 */ addiu $s0, $s0, 0x10 +.L80032274: +/* 32E74 80032274 8FBF0034 */ lw $ra, 0x34($sp) +/* 32E78 80032278 8FB00028 */ lw $s0, 0x28($sp) +/* 32E7C 8003227C 8FB1002C */ lw $s1, 0x2C($sp) +/* 32E80 80032280 8FB20030 */ lw $s2, 0x30($sp) +/* 32E84 80032284 03E00008 */ jr $ra +/* 32E88 80032288 27BD0038 */ addiu $sp, $sp, 0x38 + +glabel func_8003228C +/* 32E8C 8003228C 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 32E90 80032290 AFBF0014 */ sw $ra, 0x14($sp) +/* 32E94 80032294 0C00D0D4 */ jal osWritebackDCacheAll +/* 32E98 80032298 00000000 */ nop +/* 32E9C 8003229C 3C048009 */ lui $a0, %hi(D_80092D28) +/* 32EA0 800322A0 3C058009 */ lui $a1, %hi(D_80092D2C) +/* 32EA4 800322A4 24A52D2C */ addiu $a1, $a1, %lo(D_80092D2C) +/* 32EA8 800322A8 8C842D28 */ lw $a0, %lo(D_80092D28)($a0) +/* 32EAC 800322AC 0C00D008 */ jal osRecvMesg +/* 32EB0 800322B0 24060001 */ addiu $a2, $zero, 0x1 +/* 32EB4 800322B4 3C0E8009 */ lui $t6, %hi(D_80092D1C) +/* 32EB8 800322B8 8DCE2D1C */ lw $t6, %lo(D_80092D1C)($t6) +/* 32EBC 800322BC 3C0F8007 */ lui $t7, %hi(D_8006E4B4) +/* 32EC0 800322C0 51C00017 */ beql $t6, $zero, .L80032320 +/* 32EC4 800322C4 8FBF0014 */ lw $ra, 0x14($sp) +/* 32EC8 800322C8 8DEFE4B4 */ lw $t7, %lo(D_8006E4B4)($t7) +/* 32ECC 800322CC 3C048007 */ lui $a0, %hi(D_8006E4B8) +/* 32ED0 800322D0 31F80001 */ andi $t8, $t7, 0x1 +/* 32ED4 800322D4 0018C880 */ sll $t9, $t8, 2 +/* 32ED8 800322D8 00992021 */ addu $a0, $a0, $t9 +/* 32EDC 800322DC 0C00D1D4 */ jal osViSwapBuffer +/* 32EE0 800322E0 8C84E4B8 */ lw $a0, %lo(D_8006E4B8)($a0) +/* 32EE4 800322E4 3C038007 */ lui $v1, %hi(D_8006E4B4) +/* 32EE8 800322E8 2463E4B4 */ addiu $v1, $v1, %lo(D_8006E4B4) +/* 32EEC 800322EC 8C620000 */ lw $v0, 0x0($v1) +/* 32EF0 800322F0 3C0A8007 */ lui $t2, %hi(D_8006E4B8) +/* 32EF4 800322F4 3C018009 */ lui $at, %hi(D_80092D20) +/* 32EF8 800322F8 24420001 */ addiu $v0, $v0, 0x1 +/* 32EFC 800322FC 30480001 */ andi $t0, $v0, 0x1 +/* 32F00 80032300 00084880 */ sll $t1, $t0, 2 +/* 32F04 80032304 01495021 */ addu $t2, $t2, $t1 +/* 32F08 80032308 AC620000 */ sw $v0, 0x0($v1) +/* 32F0C 8003230C 8D4AE4B8 */ lw $t2, %lo(D_8006E4B8)($t2) +/* 32F10 80032310 AC2A2D20 */ sw $t2, %lo(D_80092D20)($at) +/* 32F14 80032314 3C018009 */ lui $at, %hi(D_80092D1C) +/* 32F18 80032318 AC202D1C */ sw $zero, %lo(D_80092D1C)($at) +/* 32F1C 8003231C 8FBF0014 */ lw $ra, 0x14($sp) +.L80032320: +/* 32F20 80032320 27BD0018 */ addiu $sp, $sp, 0x18 +/* 32F24 80032324 03E00008 */ jr $ra +/* 32F28 80032328 00000000 */ nop + +glabel func_8003232C +/* 32F2C 8003232C 27BDFFD0 */ addiu $sp, $sp, -0x30 +/* 32F30 80032330 AFB00018 */ sw $s0, 0x18($sp) +/* 32F34 80032334 00808025 */ or $s0, $a0, $zero +/* 32F38 80032338 AFBF001C */ sw $ra, 0x1C($sp) +/* 32F3C 8003233C 3C0F8009 */ lui $t7, %hi(D_80092D0A) +/* 32F40 80032340 85EF2D0A */ lh $t7, %lo(D_80092D0A)($t7) +/* 32F44 80032344 240E0041 */ addiu $t6, $zero, 0x41 +/* 32F48 80032348 3C018009 */ lui $at, %hi(D_80092CC0) +/* 32F4C 8003234C 160F000C */ bne $s0, $t7, .L80032380 +/* 32F50 80032350 AC2E2CC0 */ sw $t6, %lo(D_80092CC0)($at) +/* 32F54 80032354 3C028009 */ lui $v0, %hi(D_80092D08) +/* 32F58 80032358 84422D08 */ lh $v0, %lo(D_80092D08)($v0) +/* 32F5C 8003235C 28410002 */ slti $at, $v0, 0x2 +/* 32F60 80032360 14200007 */ bnez $at, .L80032380 +/* 32F64 80032364 28410005 */ slti $at, $v0, 0x5 +/* 32F68 80032368 10200005 */ beqz $at, .L80032380 +/* 32F6C 8003236C 00000000 */ nop +/* 32F70 80032370 0C00C808 */ jal func_80032020 +/* 32F74 80032374 24040003 */ addiu $a0, $zero, 0x3 +/* 32F78 80032378 10000003 */ b .L80032388 +/* 32F7C 8003237C 00000000 */ nop +.L80032380: +/* 32F80 80032380 0C00C808 */ jal func_80032020 +/* 32F84 80032384 24040001 */ addiu $a0, $zero, 0x1 +.L80032388: +/* 32F88 80032388 3C028009 */ lui $v0, %hi(D_80092D0E) +/* 32F8C 8003238C 90422D0E */ lbu $v0, %lo(D_80092D0E)($v0) +/* 32F90 80032390 0010C080 */ sll $t8, $s0, 2 +/* 32F94 80032394 3C098009 */ lui $t1, %hi(D_80092CC8) +/* 32F98 80032398 0002C880 */ sll $t9, $v0, 2 +/* 32F9C 8003239C 03194021 */ addu $t0, $t8, $t9 +/* 32FA0 800323A0 01284821 */ addu $t1, $t1, $t0 +/* 32FA4 800323A4 8D292CC8 */ lw $t1, %lo(D_80092CC8)($t1) +/* 32FA8 800323A8 00102880 */ sll $a1, $s0, 2 +/* 32FAC 800323AC 00B02823 */ subu $a1, $a1, $s0 +/* 32FB0 800323B0 1520003C */ bnez $t1, .L800324A4 +/* 32FB4 800323B4 24040052 */ addiu $a0, $zero, 0x52 +/* 32FB8 800323B8 00052880 */ sll $a1, $a1, 2 +/* 32FBC 800323BC 00B02821 */ addu $a1, $a1, $s0 +/* 32FC0 800323C0 24A50058 */ addiu $a1, $a1, 0x58 +/* 32FC4 800323C4 00055400 */ sll $t2, $a1, 16 +/* 32FC8 800323C8 000A2C03 */ sra $a1, $t2, 16 +/* 32FCC 800323CC 0C00C7C7 */ jal func_80031F1C +/* 32FD0 800323D0 AFA50020 */ sw $a1, 0x20($sp) +/* 32FD4 800323D4 3C0E8009 */ lui $t6, %hi(D_80092D0E) +/* 32FD8 800323D8 91CE2D0E */ lbu $t6, %lo(D_80092D0E)($t6) +/* 32FDC 800323DC 3C0D8009 */ lui $t5, %hi(D_80092AC0) +/* 32FE0 800323E0 25AD2AC0 */ addiu $t5, $t5, %lo(D_80092AC0) +/* 32FE4 800323E4 00106140 */ sll $t4, $s0, 5 +/* 32FE8 800323E8 018D1021 */ addu $v0, $t4, $t5 +/* 32FEC 800323EC 000E7940 */ sll $t7, $t6, 5 +/* 32FF0 800323F0 004F2021 */ addu $a0, $v0, $t7 +/* 32FF4 800323F4 2484000E */ addiu $a0, $a0, 0xE +/* 32FF8 800323F8 AFA20024 */ sw $v0, 0x24($sp) +/* 32FFC 800323FC 0C00C7EF */ jal func_80031FBC +/* 33000 80032400 24050010 */ addiu $a1, $zero, 0x10 +/* 33004 80032404 3C198009 */ lui $t9, %hi(D_80092D0E) +/* 33008 80032408 93392D0E */ lbu $t9, %lo(D_80092D0E)($t9) +/* 3300C 8003240C 8FB80024 */ lw $t8, 0x24($sp) +/* 33010 80032410 00194140 */ sll $t0, $t9, 5 +/* 33014 80032414 03084821 */ addu $t1, $t8, $t0 +/* 33018 80032418 912A000A */ lbu $t2, 0xA($t1) +/* 3301C 8003241C 5140000F */ beql $t2, $zero, .L8003245C +/* 33020 80032420 24040100 */ addiu $a0, $zero, 0x100 +/* 33024 80032424 0C00C775 */ jal func_80031DD4 +/* 33028 80032428 2404003C */ addiu $a0, $zero, 0x3C +/* 3302C 8003242C 3C028009 */ lui $v0, %hi(D_80092D30) +/* 33030 80032430 24422D30 */ addiu $v0, $v0, %lo(D_80092D30) +/* 33034 80032434 8C4B0000 */ lw $t3, 0x0($v0) +/* 33038 80032438 3C0D8009 */ lui $t5, %hi(D_80092D0E) +/* 3303C 8003243C 8FAC0024 */ lw $t4, 0x24($sp) +/* 33040 80032440 AC4B0000 */ sw $t3, 0x0($v0) +/* 33044 80032444 91AD2D0E */ lbu $t5, %lo(D_80092D0E)($t5) +/* 33048 80032448 000D7140 */ sll $t6, $t5, 5 +/* 3304C 8003244C 018E7821 */ addu $t7, $t4, $t6 +/* 33050 80032450 0C00C775 */ jal func_80031DD4 +/* 33054 80032454 91E4000A */ lbu $a0, 0xA($t7) +/* 33058 80032458 24040100 */ addiu $a0, $zero, 0x100 +.L8003245C: +/* 3305C 8003245C 0C00C7C7 */ jal func_80031F1C +/* 33060 80032460 87A50022 */ lh $a1, 0x22($sp) +/* 33064 80032464 3C188009 */ lui $t8, %hi(D_80092D0E) +/* 33068 80032468 93182D0E */ lbu $t8, %lo(D_80092D0E)($t8) +/* 3306C 8003246C 8FB90024 */ lw $t9, 0x24($sp) +/* 33070 80032470 27A5002C */ addiu $a1, $sp, 0x2C +/* 33074 80032474 00184140 */ sll $t0, $t8, 5 +/* 33078 80032478 03284821 */ addu $t1, $t9, $t0 +/* 3307C 8003247C 8D240000 */ lw $a0, 0x0($t1) +/* 33080 80032480 248400FF */ addiu $a0, $a0, 0xFF +/* 33084 80032484 00045202 */ srl $t2, $a0, 8 +/* 33088 80032488 0C00C73C */ jal func_80031CF0 +/* 3308C 8003248C 3144FFFF */ andi $a0, $t2, 0xFFFF +/* 33090 80032490 27A4002C */ addiu $a0, $sp, 0x2C +/* 33094 80032494 0C00C7EF */ jal func_80031FBC +/* 33098 80032498 24050003 */ addiu $a1, $zero, 0x3 +/* 3309C 8003249C 3C028009 */ lui $v0, %hi(D_80092D0E) +/* 330A0 800324A0 90422D0E */ lbu $v0, %lo(D_80092D0E)($v0) +.L800324A4: +/* 330A4 800324A4 00102880 */ sll $a1, $s0, 2 +/* 330A8 800324A8 00B02823 */ subu $a1, $a1, $s0 +/* 330AC 800324AC 00052880 */ sll $a1, $a1, 2 +/* 330B0 800324B0 00B02821 */ addu $a1, $a1, $s0 +/* 330B4 800324B4 24A50058 */ addiu $a1, $a1, 0x58 +/* 330B8 800324B8 00056C00 */ sll $t5, $a1, 16 +/* 330BC 800324BC 00507021 */ addu $t6, $v0, $s0 +/* 330C0 800324C0 29C10009 */ slti $at, $t6, 0x9 +/* 330C4 800324C4 000D6403 */ sra $t4, $t5, 16 +/* 330C8 800324C8 1020000B */ beqz $at, .L800324F8 +/* 330CC 800324CC 01802825 */ or $a1, $t4, $zero +/* 330D0 800324D0 2404003C */ addiu $a0, $zero, 0x3C +/* 330D4 800324D4 0C00C7C7 */ jal func_80031F1C +/* 330D8 800324D8 AFAC0020 */ sw $t4, 0x20($sp) +/* 330DC 800324DC 3C0F8009 */ lui $t7, %hi(D_80092D0E) +/* 330E0 800324E0 91EF2D0E */ lbu $t7, %lo(D_80092D0E)($t7) +/* 330E4 800324E4 01F02021 */ addu $a0, $t7, $s0 +/* 330E8 800324E8 0C00C775 */ jal func_80031DD4 +/* 330EC 800324EC 24840011 */ addiu $a0, $a0, 0x11 +/* 330F0 800324F0 1000000F */ b .L80032530 +/* 330F4 800324F4 24040043 */ addiu $a0, $zero, 0x43 +.L800324F8: +/* 330F8 800324F8 24040037 */ addiu $a0, $zero, 0x37 +/* 330FC 800324FC 0C00C7C7 */ jal func_80031F1C +/* 33100 80032500 AFA50020 */ sw $a1, 0x20($sp) +/* 33104 80032504 0C00C775 */ jal func_80031DD4 +/* 33108 80032508 24040011 */ addiu $a0, $zero, 0x11 +/* 3310C 8003250C 2404003D */ addiu $a0, $zero, 0x3D +/* 33110 80032510 0C00C7C7 */ jal func_80031F1C +/* 33114 80032514 87A50022 */ lh $a1, 0x22($sp) +/* 33118 80032518 3C188009 */ lui $t8, %hi(D_80092D0E) +/* 3311C 8003251C 93182D0E */ lbu $t8, %lo(D_80092D0E)($t8) +/* 33120 80032520 03102021 */ addu $a0, $t8, $s0 +/* 33124 80032524 0C00C775 */ jal func_80031DD4 +/* 33128 80032528 24840007 */ addiu $a0, $a0, 0x7 +/* 3312C 8003252C 24040043 */ addiu $a0, $zero, 0x43 +.L80032530: +/* 33130 80032530 0C00C7C7 */ jal func_80031F1C +/* 33134 80032534 87A50022 */ lh $a1, 0x22($sp) +/* 33138 80032538 0C00C775 */ jal func_80031DD4 +/* 3313C 8003253C 2404003E */ addiu $a0, $zero, 0x3E +/* 33140 80032540 2419005B */ addiu $t9, $zero, 0x5B +/* 33144 80032544 3C018009 */ lui $at, %hi(D_80092CC0) +/* 33148 80032548 AC392CC0 */ sw $t9, %lo(D_80092CC0)($at) +/* 3314C 8003254C 8FBF001C */ lw $ra, 0x1C($sp) +/* 33150 80032550 8FB00018 */ lw $s0, 0x18($sp) +/* 33154 80032554 27BD0030 */ addiu $sp, $sp, 0x30 +/* 33158 80032558 03E00008 */ jr $ra +/* 3315C 8003255C 00000000 */ nop + +glabel func_80032560 +/* 33160 80032560 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 33164 80032564 AFBF0014 */ sw $ra, 0x14($sp) +/* 33168 80032568 AFA40020 */ sw $a0, 0x20($sp) +/* 3316C 8003256C 0C00C808 */ jal func_80032020 +/* 33170 80032570 24040001 */ addiu $a0, $zero, 0x1 +/* 33174 80032574 97A40022 */ lhu $a0, 0x22($sp) +/* 33178 80032578 0C00C73C */ jal func_80031CF0 +/* 3317C 8003257C 27A5001C */ addiu $a1, $sp, 0x1C +/* 33180 80032580 240400C8 */ addiu $a0, $zero, 0xC8 +/* 33184 80032584 0C00C7C7 */ jal func_80031F1C +/* 33188 80032588 240500AD */ addiu $a1, $zero, 0xAD +/* 3318C 8003258C 27A4001C */ addiu $a0, $sp, 0x1C +/* 33190 80032590 0C00C7EF */ jal func_80031FBC +/* 33194 80032594 24050003 */ addiu $a1, $zero, 0x3 +/* 33198 80032598 8FBF0014 */ lw $ra, 0x14($sp) +/* 3319C 8003259C 27BD0020 */ addiu $sp, $sp, 0x20 +/* 331A0 800325A0 03E00008 */ jr $ra +/* 331A4 800325A4 00000000 */ nop + +glabel func_800325A8 +/* 331A8 800325A8 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 331AC 800325AC AFBF0024 */ sw $ra, 0x24($sp) +/* 331B0 800325B0 3C0E8007 */ lui $t6, %hi(D_8006AC90) +/* 331B4 800325B4 3C0F8007 */ lui $t7, %hi(D_8006AC70) +/* 331B8 800325B8 25EFAC70 */ addiu $t7, $t7, %lo(D_8006AC70) +/* 331BC 800325BC 25CEAC90 */ addiu $t6, $t6, %lo(D_8006AC90) +/* 331C0 800325C0 3C048009 */ lui $a0, %hi(D_80092D10) +/* 331C4 800325C4 3C058009 */ lui $a1, %hi(D_80092D12) +/* 331C8 800325C8 24180002 */ addiu $t8, $zero, 0x2 +/* 331CC 800325CC AFB80018 */ sw $t8, 0x18($sp) +/* 331D0 800325D0 84A52D12 */ lh $a1, %lo(D_80092D12)($a1) +/* 331D4 800325D4 84842D10 */ lh $a0, %lo(D_80092D10)($a0) +/* 331D8 800325D8 AFAE0010 */ sw $t6, 0x10($sp) +/* 331DC 800325DC AFAF0014 */ sw $t7, 0x14($sp) +/* 331E0 800325E0 24060010 */ addiu $a2, $zero, 0x10 +/* 331E4 800325E4 0C00C810 */ jal func_80032040 +/* 331E8 800325E8 2407000E */ addiu $a3, $zero, 0xE +/* 331EC 800325EC 8FBF0024 */ lw $ra, 0x24($sp) +/* 331F0 800325F0 27BD0028 */ addiu $sp, $sp, 0x28 +/* 331F4 800325F4 03E00008 */ jr $ra +/* 331F8 800325F8 00000000 */ nop + +glabel func_800325FC +/* 331FC 800325FC 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 33200 80032600 AFBF0014 */ sw $ra, 0x14($sp) +/* 33204 80032604 AFA40018 */ sw $a0, 0x18($sp) +/* 33208 80032608 0C00C997 */ jal func_8003265C +/* 3320C 8003260C 00000000 */ nop +/* 33210 80032610 3C048007 */ lui $a0, %hi(D_8006DB88) +/* 33214 80032614 2484DB88 */ addiu $a0, $a0, %lo(D_8006DB88) +/* 33218 80032618 0C00C886 */ jal func_80032218 +/* 3321C 8003261C 2405005A */ addiu $a1, $zero, 0x5A +/* 33220 80032620 3C048007 */ lui $a0, %hi(D_8006E128) +/* 33224 80032624 2484E128 */ addiu $a0, $a0, %lo(D_8006E128) +/* 33228 80032628 0C00C886 */ jal func_80032218 +/* 3322C 8003262C 24050016 */ addiu $a1, $zero, 0x16 +/* 33230 80032630 24040036 */ addiu $a0, $zero, 0x36 +/* 33234 80032634 0C00C7C7 */ jal func_80031F1C +/* 33238 80032638 24050053 */ addiu $a1, $zero, 0x53 +/* 3323C 8003263C 0C00C808 */ jal func_80032020 +/* 33240 80032640 24040001 */ addiu $a0, $zero, 0x1 +/* 33244 80032644 0C00C7DD */ jal func_80031F74 +/* 33248 80032648 8FA40018 */ lw $a0, 0x18($sp) +/* 3324C 8003264C 8FBF0014 */ lw $ra, 0x14($sp) +/* 33250 80032650 27BD0018 */ addiu $sp, $sp, 0x18 +/* 33254 80032654 03E00008 */ jr $ra +/* 33258 80032658 00000000 */ nop + +glabel func_8003265C +/* 3325C 8003265C 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 33260 80032660 AFBF001C */ sw $ra, 0x1C($sp) +/* 33264 80032664 AFB10018 */ sw $s1, 0x18($sp) +/* 33268 80032668 AFB00014 */ sw $s0, 0x14($sp) +/* 3326C 8003266C 3C048007 */ lui $a0, %hi(D_8006CC88) +/* 33270 80032670 2484CC88 */ addiu $a0, $a0, %lo(D_8006CC88) +/* 33274 80032674 0C00C886 */ jal func_80032218 +/* 33278 80032678 240500F0 */ addiu $a1, $zero, 0xF0 +/* 3327C 8003267C 3C048009 */ lui $a0, %hi(D_80092D1A) +/* 33280 80032680 0C00C958 */ jal func_80032560 +/* 33284 80032684 94842D1A */ lhu $a0, %lo(D_80092D1A)($a0) +/* 33288 80032688 3C028009 */ lui $v0, %hi(D_80092D0E) +/* 3328C 8003268C 90422D0E */ lbu $v0, %lo(D_80092D0E)($v0) +/* 33290 80032690 3C048007 */ lui $a0, %hi(D_8006E288) +/* 33294 80032694 2484E288 */ addiu $a0, $a0, %lo(D_8006E288) +/* 33298 80032698 50400006 */ beql $v0, $zero, .L800326B4 +/* 3329C 8003269C 2841000A */ slti $at, $v0, 0xA +/* 332A0 800326A0 0C00C886 */ jal func_80032218 +/* 332A4 800326A4 24050001 */ addiu $a1, $zero, 0x1 +/* 332A8 800326A8 3C028009 */ lui $v0, %hi(D_80092D0E) +/* 332AC 800326AC 90422D0E */ lbu $v0, %lo(D_80092D0E)($v0) +/* 332B0 800326B0 2841000A */ slti $at, $v0, 0xA +.L800326B4: +/* 332B4 800326B4 10200004 */ beqz $at, .L800326C8 +/* 332B8 800326B8 3C048007 */ lui $a0, %hi(D_8006E298) +/* 332BC 800326BC 2484E298 */ addiu $a0, $a0, %lo(D_8006E298) +/* 332C0 800326C0 0C00C886 */ jal func_80032218 +/* 332C4 800326C4 24050001 */ addiu $a1, $zero, 0x1 +.L800326C8: +/* 332C8 800326C8 00008025 */ or $s0, $zero, $zero +/* 332CC 800326CC 24110006 */ addiu $s1, $zero, 0x6 +.L800326D0: +/* 332D0 800326D0 0C00C8CB */ jal func_8003232C +/* 332D4 800326D4 02002025 */ or $a0, $s0, $zero +/* 332D8 800326D8 26100001 */ addiu $s0, $s0, 0x1 +/* 332DC 800326DC 1611FFFC */ bne $s0, $s1, .L800326D0 +/* 332E0 800326E0 00000000 */ nop +/* 332E4 800326E4 240E0001 */ addiu $t6, $zero, 0x1 +/* 332E8 800326E8 3C018009 */ lui $at, %hi(D_80092D1C) +/* 332EC 800326EC AC2E2D1C */ sw $t6, %lo(D_80092D1C)($at) +/* 332F0 800326F0 8FBF001C */ lw $ra, 0x1C($sp) +/* 332F4 800326F4 8FB00014 */ lw $s0, 0x14($sp) +/* 332F8 800326F8 8FB10018 */ lw $s1, 0x18($sp) +/* 332FC 800326FC 03E00008 */ jr $ra +/* 33300 80032700 27BD0020 */ addiu $sp, $sp, 0x20 + +glabel func_80032704 +/* 33304 80032704 27BDFEF0 */ addiu $sp, $sp, -0x110 +/* 33308 80032708 AFBF0044 */ sw $ra, 0x44($sp) +/* 3330C 8003270C AFBE0040 */ sw $fp, 0x40($sp) +/* 33310 80032710 AFB7003C */ sw $s7, 0x3C($sp) +/* 33314 80032714 AFB60038 */ sw $s6, 0x38($sp) +/* 33318 80032718 AFB50034 */ sw $s5, 0x34($sp) +/* 3331C 8003271C AFB40030 */ sw $s4, 0x30($sp) +/* 33320 80032720 AFB3002C */ sw $s3, 0x2C($sp) +/* 33324 80032724 AFB20028 */ sw $s2, 0x28($sp) +/* 33328 80032728 AFB10024 */ sw $s1, 0x24($sp) +/* 3332C 8003272C AFB00020 */ sw $s0, 0x20($sp) +/* 33330 80032730 3C0E8009 */ lui $t6, %hi(D_80092A88) +/* 33334 80032734 91CE2A88 */ lbu $t6, %lo(D_80092A88)($t6) +/* 33338 80032738 3C018009 */ lui $at, %hi(D_80092D24) +/* 3333C 8003273C AC242D24 */ sw $a0, %lo(D_80092D24)($at) +/* 33340 80032740 3C018009 */ lui $at, %hi(D_80092D28) +/* 33344 80032744 15C00003 */ bnez $t6, .L80032754 +/* 33348 80032748 AC252D28 */ sw $a1, %lo(D_80092D28)($at) +/* 3334C 8003274C 10000434 */ b .L80033820 +/* 33350 80032750 00001025 */ or $v0, $zero, $zero +.L80032754: +/* 33354 80032754 0C00EB04 */ jal osContStartReadData +/* 33358 80032758 AFA40110 */ sw $a0, 0x110($sp) +/* 3335C 8003275C 3C058009 */ lui $a1, %hi(D_80092D2C) +/* 33360 80032760 24A52D2C */ addiu $a1, $a1, %lo(D_80092D2C) +/* 33364 80032764 8FA40110 */ lw $a0, 0x110($sp) +/* 33368 80032768 0C00D008 */ jal osRecvMesg +/* 3336C 8003276C 24060001 */ addiu $a2, $zero, 0x1 +/* 33370 80032770 0C00EB27 */ jal osContGetReadData +/* 33374 80032774 27A400F8 */ addiu $a0, $sp, 0xF8 +/* 33378 80032778 3C068009 */ lui $a2, %hi(D_80092870) +/* 3337C 8003277C 80C62870 */ lb $a2, %lo(D_80092870)($a2) +/* 33380 80032780 3C188009 */ lui $t8, %hi(D_80092A92) +/* 33384 80032784 27BE007C */ addiu $fp, $sp, 0x7C +/* 33388 80032788 00067880 */ sll $t7, $a2, 2 +/* 3338C 8003278C 030FC021 */ addu $t8, $t8, $t7 +/* 33390 80032790 93182A92 */ lbu $t8, %lo(D_80092A92)($t8) +/* 33394 80032794 8FA40110 */ lw $a0, 0x110($sp) +/* 33398 80032798 33190001 */ andi $t9, $t8, 0x1 +/* 3339C 8003279C 17200003 */ bnez $t9, .L800327AC +/* 333A0 800327A0 00000000 */ nop +/* 333A4 800327A4 1000041E */ b .L80033820 +/* 333A8 800327A8 00001025 */ or $v0, $zero, $zero +.L800327AC: +/* 333AC 800327AC 0C00E764 */ jal osPfsInitPak +/* 333B0 800327B0 03C02825 */ or $a1, $fp, $zero +/* 333B4 800327B4 2401000A */ addiu $at, $zero, 0xA +/* 333B8 800327B8 14410008 */ bne $v0, $at, .L800327DC +/* 333BC 800327BC 00408025 */ or $s0, $v0, $zero +/* 333C0 800327C0 3C068009 */ lui $a2, %hi(D_80092870) +/* 333C4 800327C4 80C62870 */ lb $a2, %lo(D_80092870)($a2) +/* 333C8 800327C8 8FA40110 */ lw $a0, 0x110($sp) +/* 333CC 800327CC 0C00E92F */ jal osMotorInit +/* 333D0 800327D0 03C02825 */ or $a1, $fp, $zero +/* 333D4 800327D4 10000002 */ b .L800327E0 +/* 333D8 800327D8 00401825 */ or $v1, $v0, $zero +.L800327DC: +/* 333DC 800327DC 2403000B */ addiu $v1, $zero, 0xB +.L800327E0: +/* 333E0 800327E0 12000005 */ beqz $s0, .L800327F8 +/* 333E4 800327E4 2401000A */ addiu $at, $zero, 0xA +/* 333E8 800327E8 12010003 */ beq $s0, $at, .L800327F8 +/* 333EC 800327EC 00000000 */ nop +/* 333F0 800327F0 1000040B */ b .L80033820 +/* 333F4 800327F4 00001025 */ or $v0, $zero, $zero +.L800327F8: +/* 333F8 800327F8 14600003 */ bnez $v1, .L80032808 +/* 333FC 800327FC 3C0B8009 */ lui $t3, %hi(D_80092870) +/* 33400 80032800 10000407 */ b .L80033820 +/* 33404 80032804 00001025 */ or $v0, $zero, $zero +.L80032808: +/* 33408 80032808 16000005 */ bnez $s0, .L80032820 +/* 3340C 8003280C 3C168009 */ lui $s6, %hi(D_80092D08) +/* 33410 80032810 3C168009 */ lui $s6, %hi(D_80092D08) +/* 33414 80032814 26D62D08 */ addiu $s6, $s6, %lo(D_80092D08) +/* 33418 80032818 10000004 */ b .L8003282C +/* 3341C 8003281C A6C00000 */ sh $zero, 0x0($s6) +.L80032820: +/* 33420 80032820 26D62D08 */ addiu $s6, $s6, %lo(D_80092D08) +/* 33424 80032824 240A0005 */ addiu $t2, $zero, 0x5 +/* 33428 80032828 A6CA0000 */ sh $t2, 0x0($s6) +.L8003282C: +/* 3342C 8003282C 816B2870 */ lb $t3, %lo(D_80092870)($t3) +/* 33430 80032830 3C038014 */ lui $v1, (0x8014B000 >> 16) +/* 33434 80032834 3463B000 */ ori $v1, $v1, (0x8014B000 & 0xFFFF) +/* 33438 80032838 000B6080 */ sll $t4, $t3, 2 +/* 3343C 8003283C 018B6023 */ subu $t4, $t4, $t3 +/* 33440 80032840 000C6040 */ sll $t4, $t4, 1 +/* 33444 80032844 03AC6821 */ addu $t5, $sp, $t4 +/* 33448 80032848 95AD00F8 */ lhu $t5, 0xF8($t5) +/* 3344C 8003284C 3C028010 */ lui $v0, %hi(D_80100010) +/* 33450 80032850 31AE1000 */ andi $t6, $t5, 0x1000 +/* 33454 80032854 15C00007 */ bnez $t6, .L80032874 +/* 33458 80032858 00000000 */ nop +/* 3345C 8003285C 86CF0000 */ lh $t7, 0x0($s6) +/* 33460 80032860 24010005 */ addiu $at, $zero, 0x5 +/* 33464 80032864 11E10003 */ beq $t7, $at, .L80032874 +/* 33468 80032868 00000000 */ nop +/* 3346C 8003286C 100003EC */ b .L80033820 +/* 33470 80032870 24020002 */ addiu $v0, $zero, 0x2 +.L80032874: +/* 33474 80032874 24420010 */ addiu $v0, $v0, %lo(D_80100010) +/* 33478 80032878 AC40FFF4 */ sw $zero, -0xC($v0) +/* 3347C 8003287C AC40FFF8 */ sw $zero, -0x8($v0) +/* 33480 80032880 AC40FFFC */ sw $zero, -0x4($v0) +/* 33484 80032884 1443FFFB */ bne $v0, $v1, .L80032874 +/* 33488 80032888 AC40FFF0 */ sw $zero, -0x10($v0) +/* 3348C 8003288C 0C00D1B8 */ jal osViBlack +/* 33490 80032890 00002025 */ or $a0, $zero, $zero +/* 33494 80032894 24170001 */ addiu $s7, $zero, 0x1 +/* 33498 80032898 3C018009 */ lui $at, %hi(D_80092D1C) +/* 3349C 8003289C 0C00C8A3 */ jal func_8003228C +/* 334A0 800328A0 AC372D1C */ sw $s7, %lo(D_80092D1C)($at) +/* 334A4 800328A4 2418005B */ addiu $t8, $zero, 0x5B +/* 334A8 800328A8 3C018009 */ lui $at, %hi(D_80092CC0) +/* 334AC 800328AC 3C158009 */ lui $s5, %hi(D_80092D10) +/* 334B0 800328B0 3C148009 */ lui $s4, %hi(D_80092D14) +/* 334B4 800328B4 AC382CC0 */ sw $t8, %lo(D_80092CC0)($at) +/* 334B8 800328B8 A7A000EC */ sh $zero, 0xEC($sp) +/* 334BC 800328BC 00004825 */ or $t1, $zero, $zero +/* 334C0 800328C0 24070400 */ addiu $a3, $zero, 0x400 +/* 334C4 800328C4 A7A000EA */ sh $zero, 0xEA($sp) +/* 334C8 800328C8 00009825 */ or $s3, $zero, $zero +/* 334CC 800328CC 26942D14 */ addiu $s4, $s4, %lo(D_80092D14) +/* 334D0 800328D0 26B52D10 */ addiu $s5, $s5, %lo(D_80092D10) +/* 334D4 800328D4 2412FFFF */ addiu $s2, $zero, -0x1 +.L800328D8: +/* 334D8 800328D8 86C50000 */ lh $a1, 0x0($s6) +/* 334DC 800328DC 3C038009 */ lui $v1, %hi(D_80092D0E) +/* 334E0 800328E0 90632D0E */ lbu $v1, %lo(D_80092D0E)($v1) +/* 334E4 800328E4 3C028009 */ lui $v0, %hi(D_80092D0A) +/* 334E8 800328E8 84422D0A */ lh $v0, %lo(D_80092D0A)($v0) +/* 334EC 800328EC 2CA1000B */ sltiu $at, $a1, 0xB +/* 334F0 800328F0 00603025 */ or $a2, $v1, $zero +/* 334F4 800328F4 10200356 */ beqz $at, .L80033650 +/* 334F8 800328F8 00438821 */ addu $s1, $v0, $v1 +/* 334FC 800328FC 0005C880 */ sll $t9, $a1, 2 +/* 33500 80032900 3C018007 */ lui $at, %hi(jtbl_80071A80) +/* 33504 80032904 00390821 */ addu $at, $at, $t9 +/* 33508 80032908 8C391A80 */ lw $t9, %lo(jtbl_80071A80)($at) +/* 3350C 8003290C 03200008 */ jr $t9 +/* 33510 80032910 00000000 */ nop +glabel .L80032914 +/* 33514 80032914 16600034 */ bnez $s3, .L800329E8 +/* 33518 80032918 03C02025 */ or $a0, $fp, $zero +/* 3351C 8003291C AFA00078 */ sw $zero, 0x78($sp) +/* 33520 80032920 27A50074 */ addiu $a1, $sp, 0x74 +/* 33524 80032924 0C00F1E4 */ jal osPfsNumFiles +/* 33528 80032928 27A60078 */ addiu $a2, $sp, 0x78 +/* 3352C 8003292C 14400013 */ bnez $v0, .L8003297C +/* 33530 80032930 00008825 */ or $s1, $zero, $zero +/* 33534 80032934 3C108009 */ lui $s0, %hi(D_80092CC8) +/* 33538 80032938 26102CC8 */ addiu $s0, $s0, %lo(D_80092CC8) +.L8003293C: +/* 3353C 8003293C 3C0B8009 */ lui $t3, %hi(D_80092AC0) +/* 33540 80032940 256B2AC0 */ addiu $t3, $t3, %lo(D_80092AC0) +/* 33544 80032944 00115140 */ sll $t2, $s1, 5 +/* 33548 80032948 014B3021 */ addu $a2, $t2, $t3 +/* 3354C 8003294C 03C02025 */ or $a0, $fp, $zero +/* 33550 80032950 0C00EB8C */ jal osPfsFileState +/* 33554 80032954 02202825 */ or $a1, $s1, $zero +/* 33558 80032958 26310001 */ addiu $s1, $s1, 0x1 +/* 3355C 8003295C 24010010 */ addiu $at, $zero, 0x10 +/* 33560 80032960 26100004 */ addiu $s0, $s0, 0x4 +/* 33564 80032964 1621FFF5 */ bne $s1, $at, .L8003293C +/* 33568 80032968 AE02FFFC */ sw $v0, -0x4($s0) +/* 3356C 8003296C 3C058009 */ lui $a1, %hi(D_80092D18) +/* 33570 80032970 24A52D18 */ addiu $a1, $a1, %lo(D_80092D18) +/* 33574 80032974 0C00EC48 */ jal osPfsFreeBlocks +/* 33578 80032978 03C02025 */ or $a0, $fp, $zero +.L8003297C: +/* 3357C 8003297C 10400009 */ beqz $v0, .L800329A4 +/* 33580 80032980 00000000 */ nop +/* 33584 80032984 1057000F */ beq $v0, $s7, .L800329C4 +/* 33588 80032988 24010002 */ addiu $at, $zero, 0x2 +/* 3358C 8003298C 10410010 */ beq $v0, $at, .L800329D0 +/* 33590 80032990 2401000A */ addiu $at, $zero, 0xA +/* 33594 80032994 10410010 */ beq $v0, $at, .L800329D8 +/* 33598 80032998 240F0005 */ addiu $t7, $zero, 0x5 +/* 3359C 8003299C 100003A0 */ b .L80033820 +/* 335A0 800329A0 00001025 */ or $v0, $zero, $zero +.L800329A4: +/* 335A4 800329A4 3C028009 */ lui $v0, %hi(D_80092D18) +/* 335A8 800329A8 24422D18 */ addiu $v0, $v0, %lo(D_80092D18) +/* 335AC 800329AC 8C4C0000 */ lw $t4, 0x0($v0) +/* 335B0 800329B0 A6970000 */ sh $s7, 0x0($s4) +/* 335B4 800329B4 A6D70000 */ sh $s7, 0x0($s6) +/* 335B8 800329B8 000C6A03 */ sra $t5, $t4, 8 +/* 335BC 800329BC 1000000A */ b .L800329E8 +/* 335C0 800329C0 AC4D0000 */ sw $t5, 0x0($v0) +.L800329C4: +/* 335C4 800329C4 240E0008 */ addiu $t6, $zero, 0x8 +/* 335C8 800329C8 10000007 */ b .L800329E8 +/* 335CC 800329CC A6CE0000 */ sh $t6, 0x0($s6) +.L800329D0: +/* 335D0 800329D0 10000005 */ b .L800329E8 +/* 335D4 800329D4 02E09825 */ or $s3, $s7, $zero +.L800329D8: +/* 335D8 800329D8 10000003 */ b .L800329E8 +/* 335DC 800329DC A6CF0000 */ sh $t7, 0x0($s6) +/* 335E0 800329E0 1000038F */ b .L80033820 +/* 335E4 800329E4 00001025 */ or $v0, $zero, $zero +.L800329E8: +/* 335E8 800329E8 12600019 */ beqz $s3, .L80032A50 +/* 335EC 800329EC 8FA40110 */ lw $a0, 0x110($sp) +/* 335F0 800329F0 3C068009 */ lui $a2, %hi(D_80092870) +/* 335F4 800329F4 80C62870 */ lb $a2, %lo(D_80092870)($a2) +/* 335F8 800329F8 0C00E764 */ jal osPfsInitPak +/* 335FC 800329FC 03C02825 */ or $a1, $fp, $zero +/* 33600 80032A00 14400003 */ bnez $v0, .L80032A10 +/* 33604 80032A04 00000000 */ nop +/* 33608 80032A08 10000011 */ b .L80032A50 +/* 3360C 80032A0C A6C00000 */ sh $zero, 0x0($s6) +.L80032A10: +/* 33610 80032A10 14570004 */ bne $v0, $s7, .L80032A24 +/* 33614 80032A14 24010002 */ addiu $at, $zero, 0x2 +/* 33618 80032A18 24180008 */ addiu $t8, $zero, 0x8 +/* 3361C 80032A1C 1000000C */ b .L80032A50 +/* 33620 80032A20 A6D80000 */ sh $t8, 0x0($s6) +.L80032A24: +/* 33624 80032A24 54410004 */ bnel $v0, $at, .L80032A38 +/* 33628 80032A28 2401000A */ addiu $at, $zero, 0xA +/* 3362C 80032A2C 10000008 */ b .L80032A50 +/* 33630 80032A30 A6C00000 */ sh $zero, 0x0($s6) +/* 33634 80032A34 2401000A */ addiu $at, $zero, 0xA +.L80032A38: +/* 33638 80032A38 14410003 */ bne $v0, $at, .L80032A48 +/* 3363C 80032A3C 24190005 */ addiu $t9, $zero, 0x5 +/* 33640 80032A40 10000003 */ b .L80032A50 +/* 33644 80032A44 A6D90000 */ sh $t9, 0x0($s6) +.L80032A48: +/* 33648 80032A48 10000375 */ b .L80033820 +/* 3364C 80032A4C 00001025 */ or $v0, $zero, $zero +.L80032A50: +/* 33650 80032A50 3C018009 */ lui $at, %hi(D_80092D0E) +/* 33654 80032A54 3C028009 */ lui $v0, %hi(D_80092D0F) +/* 33658 80032A58 A0202D0E */ sb $zero, %lo(D_80092D0E)($at) +/* 3365C 80032A5C 24422D0F */ addiu $v0, $v0, %lo(D_80092D0F) +/* 33660 80032A60 A0400000 */ sb $zero, 0x0($v0) +/* 33664 80032A64 3C018009 */ lui $at, %hi(D_80092D0A) +/* 33668 80032A68 300A00FF */ andi $t2, $zero, 0xFF +/* 3366C 80032A6C A42A2D0A */ sh $t2, %lo(D_80092D0A)($at) +/* 33670 80032A70 3C0B8009 */ lui $t3, %hi(D_80092D0A) +/* 33674 80032A74 856B2D0A */ lh $t3, %lo(D_80092D0A)($t3) +/* 33678 80032A78 3C018009 */ lui $at, %hi(D_80092D0C) +/* 3367C 80032A7C 00009825 */ or $s3, $zero, $zero +/* 33680 80032A80 A42B2D0C */ sh $t3, %lo(D_80092D0C)($at) +/* 33684 80032A84 100002F2 */ b .L80033650 +/* 33688 80032A88 86C50000 */ lh $a1, 0x0($s6) +glabel .L80032A8C +/* 3368C 80032A8C 56600017 */ bnel $s3, $zero, .L80032AEC +/* 33690 80032A90 86820000 */ lh $v0, 0x0($s4) +/* 33694 80032A94 8FA30078 */ lw $v1, 0x78($sp) +/* 33698 80032A98 240C0036 */ addiu $t4, $zero, 0x36 +/* 3369C 80032A9C 3C018009 */ lui $at, %hi(D_80092D12) +/* 336A0 80032AA0 26730001 */ addiu $s3, $s3, 0x1 +/* 336A4 80032AA4 14600002 */ bnez $v1, .L80032AB0 +/* 336A8 80032AA8 A42C2D12 */ sh $t4, %lo(D_80092D12)($at) +/* 336AC 80032AAC A6970000 */ sh $s7, 0x0($s4) +.L80032AB0: +/* 336B0 80032AB0 868D0000 */ lh $t5, 0x0($s4) +/* 336B4 80032AB4 240E00B9 */ addiu $t6, $zero, 0xB9 +/* 336B8 80032AB8 240F0046 */ addiu $t7, $zero, 0x46 +/* 336BC 80032ABC 51A00004 */ beql $t5, $zero, .L80032AD0 +/* 336C0 80032AC0 A6AF0000 */ sh $t7, 0x0($s5) +/* 336C4 80032AC4 10000002 */ b .L80032AD0 +/* 336C8 80032AC8 A6AE0000 */ sh $t6, 0x0($s5) +/* 336CC 80032ACC A6AF0000 */ sh $t7, 0x0($s5) +.L80032AD0: +/* 336D0 80032AD0 0C00C997 */ jal func_8003265C +/* 336D4 80032AD4 00000000 */ nop +/* 336D8 80032AD8 0C00C96A */ jal func_800325A8 +/* 336DC 80032ADC 00000000 */ nop +/* 336E0 80032AE0 100002DB */ b .L80033650 +/* 336E4 80032AE4 86C50000 */ lh $a1, 0x0($s6) +/* 336E8 80032AE8 86820000 */ lh $v0, 0x0($s4) +.L80032AEC: +/* 336EC 80032AEC 30F88000 */ andi $t8, $a3, 0x8000 +/* 336F0 80032AF0 30EAC000 */ andi $t2, $a3, 0xC000 +/* 336F4 80032AF4 14400007 */ bnez $v0, .L80032B14 +/* 336F8 80032AF8 00000000 */ nop +/* 336FC 80032AFC 13000005 */ beqz $t8, .L80032B14 +/* 33700 80032B00 24190002 */ addiu $t9, $zero, 0x2 +/* 33704 80032B04 A6D90000 */ sh $t9, 0x0($s6) +/* 33708 80032B08 86C50000 */ lh $a1, 0x0($s6) +/* 3370C 80032B0C 100002D0 */ b .L80033650 +/* 33710 80032B10 00009825 */ or $s3, $zero, $zero +.L80032B14: +/* 33714 80032B14 11400003 */ beqz $t2, .L80032B24 +/* 33718 80032B18 00E02025 */ or $a0, $a3, $zero +/* 3371C 80032B1C 10000340 */ b .L80033820 +/* 33720 80032B20 24020003 */ addiu $v0, $zero, 0x3 +.L80032B24: +/* 33724 80032B24 8FA30078 */ lw $v1, 0x78($sp) +/* 33728 80032B28 106002C9 */ beqz $v1, .L80033650 +/* 3372C 80032B2C 30830002 */ andi $v1, $a0, 0x2 +/* 33730 80032B30 10600003 */ beqz $v1, .L80032B40 +/* 33734 80032B34 308B0001 */ andi $t3, $a0, 0x1 +/* 33738 80032B38 14400005 */ bnez $v0, .L80032B50 +/* 3373C 80032B3C 00000000 */ nop +.L80032B40: +/* 33740 80032B40 116002C3 */ beqz $t3, .L80033650 +/* 33744 80032B44 00000000 */ nop +/* 33748 80032B48 144002C1 */ bnez $v0, .L80033650 +/* 3374C 80032B4C 00000000 */ nop +.L80032B50: +/* 33750 80032B50 10600005 */ beqz $v1, .L80032B68 +/* 33754 80032B54 240D00B9 */ addiu $t5, $zero, 0xB9 +/* 33758 80032B58 240C0046 */ addiu $t4, $zero, 0x46 +/* 3375C 80032B5C A6800000 */ sh $zero, 0x0($s4) +/* 33760 80032B60 10000003 */ b .L80032B70 +/* 33764 80032B64 A6AC0000 */ sh $t4, 0x0($s5) +.L80032B68: +/* 33768 80032B68 A6970000 */ sh $s7, 0x0($s4) +/* 3376C 80032B6C A6AD0000 */ sh $t5, 0x0($s5) +.L80032B70: +/* 33770 80032B70 0C00C997 */ jal func_8003265C +/* 33774 80032B74 00000000 */ nop +/* 33778 80032B78 0C00C96A */ jal func_800325A8 +/* 3377C 80032B7C 00000000 */ nop +/* 33780 80032B80 100002B3 */ b .L80033650 +/* 33784 80032B84 86C50000 */ lh $a1, 0x0($s6) +glabel .L80032B88 +/* 33788 80032B88 16600010 */ bnez $s3, .L80032BCC +/* 3378C 80032B8C 30F94000 */ andi $t9, $a3, 0x4000 +/* 33790 80032B90 00027880 */ sll $t7, $v0, 2 +/* 33794 80032B94 01E27823 */ subu $t7, $t7, $v0 +/* 33798 80032B98 000F7880 */ sll $t7, $t7, 2 +/* 3379C 80032B9C 01E27821 */ addu $t7, $t7, $v0 +/* 337A0 80032BA0 240E0026 */ addiu $t6, $zero, 0x26 +/* 337A4 80032BA4 A6AE0000 */ sh $t6, 0x0($s5) +/* 337A8 80032BA8 25F80058 */ addiu $t8, $t7, 0x58 +/* 337AC 80032BAC 3C018009 */ lui $at, %hi(D_80092D12) +/* 337B0 80032BB0 0C00C997 */ jal func_8003265C +/* 337B4 80032BB4 A4382D12 */ sh $t8, %lo(D_80092D12)($at) +/* 337B8 80032BB8 0C00C96A */ jal func_800325A8 +/* 337BC 80032BBC 00000000 */ nop +/* 337C0 80032BC0 26730001 */ addiu $s3, $s3, 0x1 +/* 337C4 80032BC4 100002A2 */ b .L80033650 +/* 337C8 80032BC8 86C50000 */ lh $a1, 0x0($s6) +.L80032BCC: +/* 337CC 80032BCC 13200006 */ beqz $t9, .L80032BE8 +/* 337D0 80032BD0 00E02025 */ or $a0, $a3, $zero +/* 337D4 80032BD4 A6D70000 */ sh $s7, 0x0($s6) +/* 337D8 80032BD8 00009825 */ or $s3, $zero, $zero +/* 337DC 80032BDC 86C50000 */ lh $a1, 0x0($s6) +/* 337E0 80032BE0 1000029B */ b .L80033650 +/* 337E4 80032BE4 A6800000 */ sh $zero, 0x0($s4) +.L80032BE8: +/* 337E8 80032BE8 308A8000 */ andi $t2, $a0, 0x8000 +/* 337EC 80032BEC 1140000D */ beqz $t2, .L80032C24 +/* 337F0 80032BF0 312E0004 */ andi $t6, $t1, 0x4 +/* 337F4 80032BF4 00115880 */ sll $t3, $s1, 2 +/* 337F8 80032BF8 3C0C8009 */ lui $t4, %hi(D_80092CC8) +/* 337FC 80032BFC 018B6021 */ addu $t4, $t4, $t3 +/* 33800 80032C00 8D8C2CC8 */ lw $t4, %lo(D_80092CC8)($t4) +/* 33804 80032C04 240D0004 */ addiu $t5, $zero, 0x4 +/* 33808 80032C08 15800291 */ bnez $t4, .L80033650 +/* 3380C 80032C0C 00000000 */ nop +/* 33810 80032C10 A6CD0000 */ sh $t5, 0x0($s6) +/* 33814 80032C14 00009825 */ or $s3, $zero, $zero +/* 33818 80032C18 86C50000 */ lh $a1, 0x0($s6) +/* 3381C 80032C1C 1000028C */ b .L80033650 +/* 33820 80032C20 A6970000 */ sh $s7, 0x0($s4) +.L80032C24: +/* 33824 80032C24 11C00014 */ beqz $t6, .L80032C78 +/* 33828 80032C28 01202025 */ or $a0, $t1, $zero +/* 3382C 80032C2C 28410005 */ slti $at, $v0, 0x5 +/* 33830 80032C30 1420000D */ bnez $at, .L80032C68 +/* 33834 80032C34 24590001 */ addiu $t9, $v0, 0x1 +/* 33838 80032C38 28C1000A */ slti $at, $a2, 0xA +/* 3383C 80032C3C 10200006 */ beqz $at, .L80032C58 +/* 33840 80032C40 24180005 */ addiu $t8, $zero, 0x5 +/* 33844 80032C44 246F0001 */ addiu $t7, $v1, 0x1 +/* 33848 80032C48 3C018009 */ lui $at, %hi(D_80092D0E) +/* 3384C 80032C4C A02F2D0E */ sb $t7, %lo(D_80092D0E)($at) +/* 33850 80032C50 3C038009 */ lui $v1, %hi(D_80092D0E) +/* 33854 80032C54 90632D0E */ lbu $v1, %lo(D_80092D0E)($v1) +.L80032C58: +/* 33858 80032C58 3C018009 */ lui $at, %hi(D_80092D0A) +/* 3385C 80032C5C A4382D0A */ sh $t8, %lo(D_80092D0A)($at) +/* 33860 80032C60 10000005 */ b .L80032C78 +/* 33864 80032C64 24020005 */ addiu $v0, $zero, 0x5 +.L80032C68: +/* 33868 80032C68 3C018009 */ lui $at, %hi(D_80092D0A) +/* 3386C 80032C6C A4392D0A */ sh $t9, %lo(D_80092D0A)($at) +/* 33870 80032C70 3C028009 */ lui $v0, %hi(D_80092D0A) +/* 33874 80032C74 84422D0A */ lh $v0, %lo(D_80092D0A)($v0) +.L80032C78: +/* 33878 80032C78 308A0008 */ andi $t2, $a0, 0x8 +/* 3387C 80032C7C 1140000E */ beqz $t2, .L80032CB8 +/* 33880 80032C80 3C0D8009 */ lui $t5, %hi(D_80092D0C) +/* 33884 80032C84 14400008 */ bnez $v0, .L80032CA8 +/* 33888 80032C88 244CFFFF */ addiu $t4, $v0, -0x1 +/* 3388C 80032C8C 1060000A */ beqz $v1, .L80032CB8 +/* 33890 80032C90 246BFFFF */ addiu $t3, $v1, -0x1 +/* 33894 80032C94 3C018009 */ lui $at, %hi(D_80092D0E) +/* 33898 80032C98 A02B2D0E */ sb $t3, %lo(D_80092D0E)($at) +/* 3389C 80032C9C 3C038009 */ lui $v1, %hi(D_80092D0E) +/* 338A0 80032CA0 10000005 */ b .L80032CB8 +/* 338A4 80032CA4 90632D0E */ lbu $v1, %lo(D_80092D0E)($v1) +.L80032CA8: +/* 338A8 80032CA8 3C018009 */ lui $at, %hi(D_80092D0A) +/* 338AC 80032CAC A42C2D0A */ sh $t4, %lo(D_80092D0A)($at) +/* 338B0 80032CB0 3C028009 */ lui $v0, %hi(D_80092D0A) +/* 338B4 80032CB4 84422D0A */ lh $v0, %lo(D_80092D0A)($v0) +.L80032CB8: +/* 338B8 80032CB8 85AD2D0C */ lh $t5, %lo(D_80092D0C)($t5) +/* 338BC 80032CBC 3C0E8009 */ lui $t6, %hi(D_80092D0F) +/* 338C0 80032CC0 3C018009 */ lui $at, %hi(D_80092D0C) +/* 338C4 80032CC4 15A20004 */ bne $t5, $v0, .L80032CD8 +/* 338C8 80032CC8 00000000 */ nop +/* 338CC 80032CCC 91CE2D0F */ lbu $t6, %lo(D_80092D0F)($t6) +/* 338D0 80032CD0 11C3025F */ beq $t6, $v1, .L80033650 +/* 338D4 80032CD4 00000000 */ nop +.L80032CD8: +/* 338D8 80032CD8 A4222D0C */ sh $v0, %lo(D_80092D0C)($at) +/* 338DC 80032CDC 3C018009 */ lui $at, %hi(D_80092D0F) +/* 338E0 80032CE0 0C00C997 */ jal func_8003265C +/* 338E4 80032CE4 A0232D0F */ sb $v1, %lo(D_80092D0F)($at) +/* 338E8 80032CE8 240F0026 */ addiu $t7, $zero, 0x26 +/* 338EC 80032CEC A6AF0000 */ sh $t7, 0x0($s5) +/* 338F0 80032CF0 3C188009 */ lui $t8, %hi(D_80092D0A) +/* 338F4 80032CF4 87182D0A */ lh $t8, %lo(D_80092D0A)($t8) +/* 338F8 80032CF8 3C018009 */ lui $at, %hi(D_80092D12) +/* 338FC 80032CFC 0018C880 */ sll $t9, $t8, 2 +/* 33900 80032D00 0338C823 */ subu $t9, $t9, $t8 +/* 33904 80032D04 0019C880 */ sll $t9, $t9, 2 +/* 33908 80032D08 0338C821 */ addu $t9, $t9, $t8 +/* 3390C 80032D0C 272A0058 */ addiu $t2, $t9, 0x58 +/* 33910 80032D10 0C00C96A */ jal func_800325A8 +/* 33914 80032D14 A42A2D12 */ sh $t2, %lo(D_80092D12)($at) +/* 33918 80032D18 1000024D */ b .L80033650 +/* 3391C 80032D1C 86C50000 */ lh $a1, 0x0($s6) +glabel .L80032D20 +/* 33920 80032D20 16600013 */ bnez $s3, .L80032D70 +/* 33924 80032D24 240B00A0 */ addiu $t3, $zero, 0xA0 +/* 33928 80032D28 3C018009 */ lui $at, %hi(D_80092D12) +/* 3392C 80032D2C A42B2D12 */ sh $t3, %lo(D_80092D12)($at) +/* 33930 80032D30 868C0000 */ lh $t4, 0x0($s4) +/* 33934 80032D34 26730001 */ addiu $s3, $s3, 0x1 +/* 33938 80032D38 240D00A2 */ addiu $t5, $zero, 0xA2 +/* 3393C 80032D3C 11800003 */ beqz $t4, .L80032D4C +/* 33940 80032D40 240E0064 */ addiu $t6, $zero, 0x64 +/* 33944 80032D44 10000002 */ b .L80032D50 +/* 33948 80032D48 A6AD0000 */ sh $t5, 0x0($s5) +.L80032D4C: +/* 3394C 80032D4C A6AE0000 */ sh $t6, 0x0($s5) +.L80032D50: +/* 33950 80032D50 0C00C997 */ jal func_8003265C +/* 33954 80032D54 A7A700F2 */ sh $a3, 0xF2($sp) +/* 33958 80032D58 3C048007 */ lui $a0, %hi(D_8006E2A8) +/* 3395C 80032D5C 0C00C97F */ jal func_800325FC +/* 33960 80032D60 2484E2A8 */ addiu $a0, $a0, %lo(D_8006E2A8) +/* 33964 80032D64 0C00C96A */ jal func_800325A8 +/* 33968 80032D68 00000000 */ nop +/* 3396C 80032D6C 97A700F2 */ lhu $a3, 0xF2($sp) +.L80032D70: +/* 33970 80032D70 86820000 */ lh $v0, 0x0($s4) +/* 33974 80032D74 30EF8000 */ andi $t7, $a3, 0x8000 +/* 33978 80032D78 30EDC000 */ andi $t5, $a3, 0xC000 +/* 3397C 80032D7C 1440002C */ bnez $v0, .L80032E30 +/* 33980 80032D80 00000000 */ nop +/* 33984 80032D84 11E0002A */ beqz $t7, .L80032E30 +/* 33988 80032D88 03C02025 */ or $a0, $fp, $zero +/* 3398C 80032D8C 3C198009 */ lui $t9, %hi(D_80092AC0) +/* 33990 80032D90 27392AC0 */ addiu $t9, $t9, %lo(D_80092AC0) +/* 33994 80032D94 0011C140 */ sll $t8, $s1, 5 +/* 33998 80032D98 03198021 */ addu $s0, $t8, $t9 +/* 3399C 80032D9C 260A000A */ addiu $t2, $s0, 0xA +/* 339A0 80032DA0 AFAA0010 */ sw $t2, 0x10($sp) +/* 339A4 80032DA4 96050008 */ lhu $a1, 0x8($s0) +/* 339A8 80032DA8 8E060004 */ lw $a2, 0x4($s0) +/* 339AC 80032DAC 2607000E */ addiu $a3, $s0, 0xE +/* 339B0 80032DB0 0C00EE88 */ jal osPfsDeleteFile +/* 339B4 80032DB4 00009825 */ or $s3, $zero, $zero +/* 339B8 80032DB8 10400008 */ beqz $v0, .L80032DDC +/* 339BC 80032DBC 8FA30078 */ lw $v1, 0x78($sp) +/* 339C0 80032DC0 14570004 */ bne $v0, $s7, .L80032DD4 +/* 339C4 80032DC4 240C0007 */ addiu $t4, $zero, 0x7 +/* 339C8 80032DC8 240B0008 */ addiu $t3, $zero, 0x8 +/* 339CC 80032DCC 10000037 */ b .L80032EAC +/* 339D0 80032DD0 A6CB0000 */ sh $t3, 0x0($s6) +.L80032DD4: +/* 339D4 80032DD4 10000035 */ b .L80032EAC +/* 339D8 80032DD8 A6CC0000 */ sh $t4, 0x0($s6) +.L80032DDC: +/* 339DC 80032DDC 00116880 */ sll $t5, $s1, 2 +/* 339E0 80032DE0 3C018009 */ lui $at, %hi(D_80092CC8) +/* 339E4 80032DE4 002D0821 */ addu $at, $at, $t5 +/* 339E8 80032DE8 AC322CC8 */ sw $s2, %lo(D_80092CC8)($at) +/* 339EC 80032DEC 8E0F0000 */ lw $t7, 0x0($s0) +/* 339F0 80032DF0 3C0E8009 */ lui $t6, %hi(D_80092D18) +/* 339F4 80032DF4 8DCE2D18 */ lw $t6, %lo(D_80092D18)($t6) +/* 339F8 80032DF8 25F800FF */ addiu $t8, $t7, 0xFF +/* 339FC 80032DFC 0018CA02 */ srl $t9, $t8, 8 +/* 33A00 80032E00 332A00FF */ andi $t2, $t9, 0xFF +/* 33A04 80032E04 3C018009 */ lui $at, %hi(D_80092D18) +/* 33A08 80032E08 2463FFFF */ addiu $v1, $v1, -0x1 +/* 33A0C 80032E0C 01CA5821 */ addu $t3, $t6, $t2 +/* 33A10 80032E10 AC2B2D18 */ sw $t3, %lo(D_80092D18)($at) +/* 33A14 80032E14 10600004 */ beqz $v1, .L80032E28 +/* 33A18 80032E18 AFA30078 */ sw $v1, 0x78($sp) +/* 33A1C 80032E1C 240C0002 */ addiu $t4, $zero, 0x2 +/* 33A20 80032E20 10000022 */ b .L80032EAC +/* 33A24 80032E24 A6CC0000 */ sh $t4, 0x0($s6) +.L80032E28: +/* 33A28 80032E28 10000020 */ b .L80032EAC +/* 33A2C 80032E2C A6D70000 */ sh $s7, 0x0($s6) +.L80032E30: +/* 33A30 80032E30 11A00006 */ beqz $t5, .L80032E4C +/* 33A34 80032E34 00E02025 */ or $a0, $a3, $zero +/* 33A38 80032E38 240F0004 */ addiu $t7, $zero, 0x4 +/* 33A3C 80032E3C A6CF0000 */ sh $t7, 0x0($s6) +/* 33A40 80032E40 00009825 */ or $s3, $zero, $zero +/* 33A44 80032E44 10000019 */ b .L80032EAC +/* 33A48 80032E48 A6800000 */ sh $zero, 0x0($s4) +.L80032E4C: +/* 33A4C 80032E4C 30830002 */ andi $v1, $a0, 0x2 +/* 33A50 80032E50 10600003 */ beqz $v1, .L80032E60 +/* 33A54 80032E54 30980001 */ andi $t8, $a0, 0x1 +/* 33A58 80032E58 14400005 */ bnez $v0, .L80032E70 +/* 33A5C 80032E5C 00000000 */ nop +.L80032E60: +/* 33A60 80032E60 13000012 */ beqz $t8, .L80032EAC +/* 33A64 80032E64 00000000 */ nop +/* 33A68 80032E68 14400010 */ bnez $v0, .L80032EAC +/* 33A6C 80032E6C 00000000 */ nop +.L80032E70: +/* 33A70 80032E70 10600005 */ beqz $v1, .L80032E88 +/* 33A74 80032E74 240E00A2 */ addiu $t6, $zero, 0xA2 +/* 33A78 80032E78 24190064 */ addiu $t9, $zero, 0x64 +/* 33A7C 80032E7C A6800000 */ sh $zero, 0x0($s4) +/* 33A80 80032E80 10000003 */ b .L80032E90 +/* 33A84 80032E84 A6B90000 */ sh $t9, 0x0($s5) +.L80032E88: +/* 33A88 80032E88 A6970000 */ sh $s7, 0x0($s4) +/* 33A8C 80032E8C A6AE0000 */ sh $t6, 0x0($s5) +.L80032E90: +/* 33A90 80032E90 0C00C997 */ jal func_8003265C +/* 33A94 80032E94 00000000 */ nop +/* 33A98 80032E98 3C048007 */ lui $a0, %hi(D_8006E2A8) +/* 33A9C 80032E9C 0C00C97F */ jal func_800325FC +/* 33AA0 80032EA0 2484E2A8 */ addiu $a0, $a0, %lo(D_8006E2A8) +/* 33AA4 80032EA4 0C00C96A */ jal func_800325A8 +/* 33AA8 80032EA8 00000000 */ nop +.L80032EAC: +/* 33AAC 80032EAC 100001E8 */ b .L80033650 +/* 33AB0 80032EB0 86C50000 */ lh $a1, 0x0($s6) +glabel .L80032EB4 +/* 33AB4 80032EB4 16600011 */ bnez $s3, .L80032EFC +/* 33AB8 80032EB8 240A00C1 */ addiu $t2, $zero, 0xC1 +/* 33ABC 80032EBC 3C018009 */ lui $at, %hi(D_80092D12) +/* 33AC0 80032EC0 A42A2D12 */ sh $t2, %lo(D_80092D12)($at) +/* 33AC4 80032EC4 868B0000 */ lh $t3, 0x0($s4) +/* 33AC8 80032EC8 26730001 */ addiu $s3, $s3, 0x1 +/* 33ACC 80032ECC 240C00A0 */ addiu $t4, $zero, 0xA0 +/* 33AD0 80032ED0 11600003 */ beqz $t3, .L80032EE0 +/* 33AD4 80032ED4 240D0052 */ addiu $t5, $zero, 0x52 +/* 33AD8 80032ED8 10000002 */ b .L80032EE4 +/* 33ADC 80032EDC A6AC0000 */ sh $t4, 0x0($s5) +.L80032EE0: +/* 33AE0 80032EE0 A6AD0000 */ sh $t5, 0x0($s5) +.L80032EE4: +/* 33AE4 80032EE4 0C00C997 */ jal func_8003265C +/* 33AE8 80032EE8 00000000 */ nop +/* 33AEC 80032EEC 0C00C96A */ jal func_800325A8 +/* 33AF0 80032EF0 00000000 */ nop +/* 33AF4 80032EF4 100001D6 */ b .L80033650 +/* 33AF8 80032EF8 86C50000 */ lh $a1, 0x0($s6) +.L80032EFC: +/* 33AFC 80032EFC 86820000 */ lh $v0, 0x0($s4) +/* 33B00 80032F00 30EF8000 */ andi $t7, $a3, 0x8000 +/* 33B04 80032F04 30F9C000 */ andi $t9, $a3, 0xC000 +/* 33B08 80032F08 14400008 */ bnez $v0, .L80032F2C +/* 33B0C 80032F0C 00000000 */ nop +/* 33B10 80032F10 11E00006 */ beqz $t7, .L80032F2C +/* 33B14 80032F14 24180003 */ addiu $t8, $zero, 0x3 +/* 33B18 80032F18 A6D80000 */ sh $t8, 0x0($s6) +/* 33B1C 80032F1C 00009825 */ or $s3, $zero, $zero +/* 33B20 80032F20 86C50000 */ lh $a1, 0x0($s6) +/* 33B24 80032F24 100001CA */ b .L80033650 +/* 33B28 80032F28 A6970000 */ sh $s7, 0x0($s4) +.L80032F2C: +/* 33B2C 80032F2C 13200006 */ beqz $t9, .L80032F48 +/* 33B30 80032F30 00E02025 */ or $a0, $a3, $zero +/* 33B34 80032F34 240E0002 */ addiu $t6, $zero, 0x2 +/* 33B38 80032F38 A6CE0000 */ sh $t6, 0x0($s6) +/* 33B3C 80032F3C 86C50000 */ lh $a1, 0x0($s6) +/* 33B40 80032F40 100001C3 */ b .L80033650 +/* 33B44 80032F44 00009825 */ or $s3, $zero, $zero +.L80032F48: +/* 33B48 80032F48 30830002 */ andi $v1, $a0, 0x2 +/* 33B4C 80032F4C 10600003 */ beqz $v1, .L80032F5C +/* 33B50 80032F50 308A0001 */ andi $t2, $a0, 0x1 +/* 33B54 80032F54 14400005 */ bnez $v0, .L80032F6C +/* 33B58 80032F58 00000000 */ nop +.L80032F5C: +/* 33B5C 80032F5C 114001BC */ beqz $t2, .L80033650 +/* 33B60 80032F60 00000000 */ nop +/* 33B64 80032F64 144001BA */ bnez $v0, .L80033650 +/* 33B68 80032F68 00000000 */ nop +.L80032F6C: +/* 33B6C 80032F6C 10600005 */ beqz $v1, .L80032F84 +/* 33B70 80032F70 240C00A0 */ addiu $t4, $zero, 0xA0 +/* 33B74 80032F74 240B0052 */ addiu $t3, $zero, 0x52 +/* 33B78 80032F78 A6800000 */ sh $zero, 0x0($s4) +/* 33B7C 80032F7C 10000003 */ b .L80032F8C +/* 33B80 80032F80 A6AB0000 */ sh $t3, 0x0($s5) +.L80032F84: +/* 33B84 80032F84 A6970000 */ sh $s7, 0x0($s4) +/* 33B88 80032F88 A6AC0000 */ sh $t4, 0x0($s5) +.L80032F8C: +/* 33B8C 80032F8C 0C00C997 */ jal func_8003265C +/* 33B90 80032F90 00000000 */ nop +/* 33B94 80032F94 0C00C96A */ jal func_800325A8 +/* 33B98 80032F98 00000000 */ nop +/* 33B9C 80032F9C 100001AC */ b .L80033650 +/* 33BA0 80032FA0 86C50000 */ lh $a1, 0x0($s6) +glabel .L80032FA4 +/* 33BA4 80032FA4 16600022 */ bnez $s3, .L80033030 +/* 33BA8 80032FA8 30EE8000 */ andi $t6, $a3, 0x8000 +/* 33BAC 80032FAC 3C028009 */ lui $v0, %hi(D_80092D18) +/* 33BB0 80032FB0 24422D18 */ addiu $v0, $v0, %lo(D_80092D18) +/* 33BB4 80032FB4 AC400000 */ sw $zero, 0x0($v0) +/* 33BB8 80032FB8 3C028009 */ lui $v0, %hi(D_80092D08) +/* 33BBC 80032FBC 3C108009 */ lui $s0, %hi(D_80092CC8) +/* 33BC0 80032FC0 26730001 */ addiu $s3, $s3, 0x1 +/* 33BC4 80032FC4 26102CC8 */ addiu $s0, $s0, %lo(D_80092CC8) +/* 33BC8 80032FC8 24422D08 */ addiu $v0, $v0, %lo(D_80092D08) +/* 33BCC 80032FCC AFA00078 */ sw $zero, 0x78($sp) +.L80032FD0: +/* 33BD0 80032FD0 26100010 */ addiu $s0, $s0, 0x10 +/* 33BD4 80032FD4 AE12FFF4 */ sw $s2, -0xC($s0) +/* 33BD8 80032FD8 AE12FFF8 */ sw $s2, -0x8($s0) +/* 33BDC 80032FDC AE12FFFC */ sw $s2, -0x4($s0) +/* 33BE0 80032FE0 1602FFFB */ bne $s0, $v0, .L80032FD0 +/* 33BE4 80032FE4 AE12FFF0 */ sw $s2, -0x10($s0) +/* 33BE8 80032FE8 868D0000 */ lh $t5, 0x0($s4) +/* 33BEC 80032FEC 24180064 */ addiu $t8, $zero, 0x64 +/* 33BF0 80032FF0 241900A0 */ addiu $t9, $zero, 0xA0 +/* 33BF4 80032FF4 11A00004 */ beqz $t5, .L80033008 +/* 33BF8 80032FF8 3C018009 */ lui $at, %hi(D_80092D12) +/* 33BFC 80032FFC 240F00A2 */ addiu $t7, $zero, 0xA2 +/* 33C00 80033000 10000002 */ b .L8003300C +/* 33C04 80033004 A6AF0000 */ sh $t7, 0x0($s5) +.L80033008: +/* 33C08 80033008 A6B80000 */ sh $t8, 0x0($s5) +.L8003300C: +/* 33C0C 8003300C 0C00C997 */ jal func_8003265C +/* 33C10 80033010 A4392D12 */ sh $t9, %lo(D_80092D12)($at) +/* 33C14 80033014 3C048007 */ lui $a0, %hi(D_8006E36C) +/* 33C18 80033018 0C00C97F */ jal func_800325FC +/* 33C1C 8003301C 2484E36C */ addiu $a0, $a0, %lo(D_8006E36C) +/* 33C20 80033020 0C00C96A */ jal func_800325A8 +/* 33C24 80033024 00000000 */ nop +/* 33C28 80033028 10000189 */ b .L80033650 +/* 33C2C 8003302C 86C50000 */ lh $a1, 0x0($s6) +.L80033030: +/* 33C30 80033030 11C0000F */ beqz $t6, .L80033070 +/* 33C34 80033034 00E02025 */ or $a0, $a3, $zero +/* 33C38 80033038 868A0000 */ lh $t2, 0x0($s4) +/* 33C3C 8003303C 00009825 */ or $s3, $zero, $zero +/* 33C40 80033040 240C0009 */ addiu $t4, $zero, 0x9 +/* 33C44 80033044 55400007 */ bnel $t2, $zero, .L80033064 +/* 33C48 80033048 A6CC0000 */ sh $t4, 0x0($s6) +/* 33C4C 8003304C 0C00F14C */ jal func_8003C530 +/* 33C50 80033050 03C02025 */ or $a0, $fp, $zero +/* 33C54 80033054 240B0006 */ addiu $t3, $zero, 0x6 +/* 33C58 80033058 10000003 */ b .L80033068 +/* 33C5C 8003305C A6CB0000 */ sh $t3, 0x0($s6) +/* 33C60 80033060 A6CC0000 */ sh $t4, 0x0($s6) +.L80033064: +/* 33C64 80033064 A6800000 */ sh $zero, 0x0($s4) +.L80033068: +/* 33C68 80033068 10000179 */ b .L80033650 +/* 33C6C 8003306C 86C50000 */ lh $a1, 0x0($s6) +.L80033070: +/* 33C70 80033070 30830002 */ andi $v1, $a0, 0x2 +/* 33C74 80033074 10600004 */ beqz $v1, .L80033088 +/* 33C78 80033078 308F0001 */ andi $t7, $a0, 0x1 +/* 33C7C 8003307C 868D0000 */ lh $t5, 0x0($s4) +/* 33C80 80033080 15A00006 */ bnez $t5, .L8003309C +/* 33C84 80033084 00000000 */ nop +.L80033088: +/* 33C88 80033088 11E00171 */ beqz $t7, .L80033650 +/* 33C8C 8003308C 00000000 */ nop +/* 33C90 80033090 86980000 */ lh $t8, 0x0($s4) +/* 33C94 80033094 1700016E */ bnez $t8, .L80033650 +/* 33C98 80033098 00000000 */ nop +.L8003309C: +/* 33C9C 8003309C 10600005 */ beqz $v1, .L800330B4 +/* 33CA0 800330A0 240E00A0 */ addiu $t6, $zero, 0xA0 +/* 33CA4 800330A4 24190064 */ addiu $t9, $zero, 0x64 +/* 33CA8 800330A8 A6800000 */ sh $zero, 0x0($s4) +/* 33CAC 800330AC 10000003 */ b .L800330BC +/* 33CB0 800330B0 A6B90000 */ sh $t9, 0x0($s5) +.L800330B4: +/* 33CB4 800330B4 A6970000 */ sh $s7, 0x0($s4) +/* 33CB8 800330B8 A6AE0000 */ sh $t6, 0x0($s5) +.L800330BC: +/* 33CBC 800330BC 0C00C997 */ jal func_8003265C +/* 33CC0 800330C0 00000000 */ nop +/* 33CC4 800330C4 3C048007 */ lui $a0, %hi(D_8006E36C) +/* 33CC8 800330C8 0C00C97F */ jal func_800325FC +/* 33CCC 800330CC 2484E36C */ addiu $a0, $a0, %lo(D_8006E36C) +/* 33CD0 800330D0 0C00C96A */ jal func_800325A8 +/* 33CD4 800330D4 00000000 */ nop +/* 33CD8 800330D8 1000015D */ b .L80033650 +/* 33CDC 800330DC 86C50000 */ lh $a1, 0x0($s6) +glabel .L800330E0 +/* 33CE0 800330E0 16600005 */ bnez $s3, .L800330F8 +/* 33CE4 800330E4 8FAA00E4 */ lw $t2, 0xE4($sp) +/* 33CE8 800330E8 26730001 */ addiu $s3, $s3, 0x1 +/* 33CEC 800330EC AFA000E4 */ sw $zero, 0xE4($sp) +/* 33CF0 800330F0 1000002F */ b .L800331B0 +/* 33CF4 800330F4 A7A000EA */ sh $zero, 0xEA($sp) +.L800330F8: +/* 33CF8 800330F8 97AC00EA */ lhu $t4, 0xEA($sp) +/* 33CFC 800330FC 254B0001 */ addiu $t3, $t2, 0x1 +/* 33D00 80033100 AFAB00E4 */ sw $t3, 0xE4($sp) +/* 33D04 80033104 15800015 */ bnez $t4, .L8003315C +/* 33D08 80033108 241900A0 */ addiu $t9, $zero, 0xA0 +/* 33D0C 8003310C 868D0000 */ lh $t5, 0x0($s4) +/* 33D10 80033110 24180064 */ addiu $t8, $zero, 0x64 +/* 33D14 80033114 240F00A2 */ addiu $t7, $zero, 0xA2 +/* 33D18 80033118 11A00003 */ beqz $t5, .L80033128 +/* 33D1C 8003311C 3C018009 */ lui $at, %hi(D_80092D12) +/* 33D20 80033120 10000002 */ b .L8003312C +/* 33D24 80033124 A6AF0000 */ sh $t7, 0x0($s5) +.L80033128: +/* 33D28 80033128 A6B80000 */ sh $t8, 0x0($s5) +.L8003312C: +/* 33D2C 8003312C 0C00C997 */ jal func_8003265C +/* 33D30 80033130 A4392D12 */ sh $t9, %lo(D_80092D12)($at) +/* 33D34 80033134 3C048007 */ lui $a0, %hi(D_8006E36C) +/* 33D38 80033138 0C00C97F */ jal func_800325FC +/* 33D3C 8003313C 2484E36C */ addiu $a0, $a0, %lo(D_8006E36C) +/* 33D40 80033140 3C0E8007 */ lui $t6, %hi(D_8006E4B4) +/* 33D44 80033144 8DCEE4B4 */ lw $t6, %lo(D_8006E4B4)($t6) +/* 33D48 80033148 31CA0001 */ andi $t2, $t6, 0x1 +/* 33D4C 8003314C 11400003 */ beqz $t2, .L8003315C +/* 33D50 80033150 00000000 */ nop +/* 33D54 80033154 0C00C96A */ jal func_800325A8 +/* 33D58 80033158 00000000 */ nop +.L8003315C: +/* 33D5C 8003315C 3C068009 */ lui $a2, %hi(D_80092870) +/* 33D60 80033160 80C62870 */ lb $a2, %lo(D_80092870)($a2) +/* 33D64 80033164 8FA40110 */ lw $a0, 0x110($sp) +/* 33D68 80033168 0C00E764 */ jal osPfsInitPak +/* 33D6C 8003316C 03C02825 */ or $a1, $fp, $zero +/* 33D70 80033170 14400004 */ bnez $v0, .L80033184 +/* 33D74 80033174 00000000 */ nop +/* 33D78 80033178 A6C00000 */ sh $zero, 0x0($s6) +/* 33D7C 8003317C 1000000C */ b .L800331B0 +/* 33D80 80033180 00009825 */ or $s3, $zero, $zero +.L80033184: +/* 33D84 80033184 14570005 */ bne $v0, $s7, .L8003319C +/* 33D88 80033188 8FAC00E4 */ lw $t4, 0xE4($sp) +/* 33D8C 8003318C 240B0008 */ addiu $t3, $zero, 0x8 +/* 33D90 80033190 A6CB0000 */ sh $t3, 0x0($s6) +/* 33D94 80033194 10000006 */ b .L800331B0 +/* 33D98 80033198 00009825 */ or $s3, $zero, $zero +.L8003319C: +/* 33D9C 8003319C 2D8100B5 */ sltiu $at, $t4, 0xB5 +/* 33DA0 800331A0 14200003 */ bnez $at, .L800331B0 +/* 33DA4 800331A4 240D000A */ addiu $t5, $zero, 0xA +/* 33DA8 800331A8 A6CD0000 */ sh $t5, 0x0($s6) +/* 33DAC 800331AC 00009825 */ or $s3, $zero, $zero +.L800331B0: +/* 33DB0 800331B0 10000127 */ b .L80033650 +/* 33DB4 800331B4 86C50000 */ lh $a1, 0x0($s6) +glabel .L800331B8 +/* 33DB8 800331B8 1660000F */ bnez $s3, .L800331F8 +/* 33DBC 800331BC 30F9C000 */ andi $t9, $a3, 0xC000 +/* 33DC0 800331C0 240F00A0 */ addiu $t7, $zero, 0xA0 +/* 33DC4 800331C4 3C018009 */ lui $at, %hi(D_80092D12) +/* 33DC8 800331C8 A42F2D12 */ sh $t7, %lo(D_80092D12)($at) +/* 33DCC 800331CC 24180088 */ addiu $t8, $zero, 0x88 +/* 33DD0 800331D0 26730001 */ addiu $s3, $s3, 0x1 +/* 33DD4 800331D4 0C00C997 */ jal func_8003265C +/* 33DD8 800331D8 A6B80000 */ sh $t8, 0x0($s5) +/* 33DDC 800331DC 3C048007 */ lui $a0, %hi(D_8006E33C) +/* 33DE0 800331E0 0C00C97F */ jal func_800325FC +/* 33DE4 800331E4 2484E33C */ addiu $a0, $a0, %lo(D_8006E33C) +/* 33DE8 800331E8 0C00C96A */ jal func_800325A8 +/* 33DEC 800331EC 00000000 */ nop +/* 33DF0 800331F0 10000117 */ b .L80033650 +/* 33DF4 800331F4 86C50000 */ lh $a1, 0x0($s6) +.L800331F8: +/* 33DF8 800331F8 13200115 */ beqz $t9, .L80033650 +/* 33DFC 800331FC 00000000 */ nop +/* 33E00 80033200 A6C00000 */ sh $zero, 0x0($s6) +/* 33E04 80033204 86C50000 */ lh $a1, 0x0($s6) +/* 33E08 80033208 10000111 */ b .L80033650 +/* 33E0C 8003320C 02E09825 */ or $s3, $s7, $zero +glabel .L80033210 +/* 33E10 80033210 16600021 */ bnez $s3, .L80033298 +/* 33E14 80033214 3C028009 */ lui $v0, %hi(D_80092D18) +/* 33E18 80033218 24422D18 */ addiu $v0, $v0, %lo(D_80092D18) +/* 33E1C 8003321C AC400000 */ sw $zero, 0x0($v0) +/* 33E20 80033220 3C028009 */ lui $v0, %hi(D_80092D08) +/* 33E24 80033224 3C108009 */ lui $s0, %hi(D_80092CC8) +/* 33E28 80033228 26730001 */ addiu $s3, $s3, 0x1 +/* 33E2C 8003322C 26102CC8 */ addiu $s0, $s0, %lo(D_80092CC8) +/* 33E30 80033230 24422D08 */ addiu $v0, $v0, %lo(D_80092D08) +/* 33E34 80033234 AFA00078 */ sw $zero, 0x78($sp) +.L80033238: +/* 33E38 80033238 26100010 */ addiu $s0, $s0, 0x10 +/* 33E3C 8003323C AE12FFF4 */ sw $s2, -0xC($s0) +/* 33E40 80033240 AE12FFF8 */ sw $s2, -0x8($s0) +/* 33E44 80033244 AE12FFFC */ sw $s2, -0x4($s0) +/* 33E48 80033248 1602FFFB */ bne $s0, $v0, .L80033238 +/* 33E4C 8003324C AE12FFF0 */ sw $s2, -0x10($s0) +/* 33E50 80033250 868E0000 */ lh $t6, 0x0($s4) +/* 33E54 80033254 240B0064 */ addiu $t3, $zero, 0x64 +/* 33E58 80033258 240C00A0 */ addiu $t4, $zero, 0xA0 +/* 33E5C 8003325C 11C00004 */ beqz $t6, .L80033270 +/* 33E60 80033260 3C018009 */ lui $at, %hi(D_80092D12) +/* 33E64 80033264 240A00A0 */ addiu $t2, $zero, 0xA0 +/* 33E68 80033268 10000002 */ b .L80033274 +/* 33E6C 8003326C A6AA0000 */ sh $t2, 0x0($s5) +.L80033270: +/* 33E70 80033270 A6AB0000 */ sh $t3, 0x0($s5) +.L80033274: +/* 33E74 80033274 0C00C997 */ jal func_8003265C +/* 33E78 80033278 A42C2D12 */ sh $t4, %lo(D_80092D12)($at) +/* 33E7C 8003327C 3C048007 */ lui $a0, %hi(D_8006E2EC) +/* 33E80 80033280 0C00C97F */ jal func_800325FC +/* 33E84 80033284 2484E2EC */ addiu $a0, $a0, %lo(D_8006E2EC) +/* 33E88 80033288 0C00C96A */ jal func_800325A8 +/* 33E8C 8003328C 00000000 */ nop +/* 33E90 80033290 100000EF */ b .L80033650 +/* 33E94 80033294 86C50000 */ lh $a1, 0x0($s6) +.L80033298: +/* 33E98 80033298 16770023 */ bne $s3, $s7, .L80033328 +/* 33E9C 8003329C 24010002 */ addiu $at, $zero, 0x2 +/* 33EA0 800332A0 30ED8000 */ andi $t5, $a3, 0x8000 +/* 33EA4 800332A4 11A00004 */ beqz $t5, .L800332B8 +/* 33EA8 800332A8 00E02025 */ or $a0, $a3, $zero +/* 33EAC 800332AC 26730001 */ addiu $s3, $s3, 0x1 +/* 33EB0 800332B0 100000E7 */ b .L80033650 +/* 33EB4 800332B4 AFA000E4 */ sw $zero, 0xE4($sp) +.L800332B8: +/* 33EB8 800332B8 30830002 */ andi $v1, $a0, 0x2 +/* 33EBC 800332BC 10600004 */ beqz $v1, .L800332D0 +/* 33EC0 800332C0 30980001 */ andi $t8, $a0, 0x1 +/* 33EC4 800332C4 868F0000 */ lh $t7, 0x0($s4) +/* 33EC8 800332C8 15E00006 */ bnez $t7, .L800332E4 +/* 33ECC 800332CC 00000000 */ nop +.L800332D0: +/* 33ED0 800332D0 130000DF */ beqz $t8, .L80033650 +/* 33ED4 800332D4 00000000 */ nop +/* 33ED8 800332D8 86990000 */ lh $t9, 0x0($s4) +/* 33EDC 800332DC 172000DC */ bnez $t9, .L80033650 +/* 33EE0 800332E0 00000000 */ nop +.L800332E4: +/* 33EE4 800332E4 10600005 */ beqz $v1, .L800332FC +/* 33EE8 800332E8 240A00A0 */ addiu $t2, $zero, 0xA0 +/* 33EEC 800332EC 240E0064 */ addiu $t6, $zero, 0x64 +/* 33EF0 800332F0 A6800000 */ sh $zero, 0x0($s4) +/* 33EF4 800332F4 10000003 */ b .L80033304 +/* 33EF8 800332F8 A6AE0000 */ sh $t6, 0x0($s5) +.L800332FC: +/* 33EFC 800332FC A6970000 */ sh $s7, 0x0($s4) +/* 33F00 80033300 A6AA0000 */ sh $t2, 0x0($s5) +.L80033304: +/* 33F04 80033304 0C00C997 */ jal func_8003265C +/* 33F08 80033308 00000000 */ nop +/* 33F0C 8003330C 3C048007 */ lui $a0, %hi(D_8006E2EC) +/* 33F10 80033310 0C00C97F */ jal func_800325FC +/* 33F14 80033314 2484E2EC */ addiu $a0, $a0, %lo(D_8006E2EC) +/* 33F18 80033318 0C00C96A */ jal func_800325A8 +/* 33F1C 8003331C 00000000 */ nop +/* 33F20 80033320 100000CB */ b .L80033650 +/* 33F24 80033324 86C50000 */ lh $a1, 0x0($s6) +.L80033328: +/* 33F28 80033328 166100C9 */ bne $s3, $at, .L80033650 +/* 33F2C 8003332C 00000000 */ nop +/* 33F30 80033330 868B0000 */ lh $t3, 0x0($s4) +/* 33F34 80033334 97AC00EA */ lhu $t4, 0xEA($sp) +/* 33F38 80033338 15600025 */ bnez $t3, .L800333D0 +/* 33F3C 8003333C 00000000 */ nop +/* 33F40 80033340 1580000D */ bnez $t4, .L80033378 +/* 33F44 80033344 00000000 */ nop +/* 33F48 80033348 0C00C997 */ jal func_8003265C +/* 33F4C 8003334C 00000000 */ nop +/* 33F50 80033350 3C048007 */ lui $a0, %hi(D_8006E2EC) +/* 33F54 80033354 0C00C97F */ jal func_800325FC +/* 33F58 80033358 2484E2EC */ addiu $a0, $a0, %lo(D_8006E2EC) +/* 33F5C 8003335C 3C0D8007 */ lui $t5, %hi(D_8006E4B4) +/* 33F60 80033360 8DADE4B4 */ lw $t5, %lo(D_8006E4B4)($t5) +/* 33F64 80033364 31AF0001 */ andi $t7, $t5, 0x1 +/* 33F68 80033368 11E00003 */ beqz $t7, .L80033378 +/* 33F6C 8003336C 00000000 */ nop +/* 33F70 80033370 0C00C96A */ jal func_800325A8 +/* 33F74 80033374 00000000 */ nop +.L80033378: +/* 33F78 80033378 3C068009 */ lui $a2, %hi(D_80092870) +/* 33F7C 8003337C 80C62870 */ lb $a2, %lo(D_80092870)($a2) +/* 33F80 80033380 8FA40110 */ lw $a0, 0x110($sp) +/* 33F84 80033384 0C00E764 */ jal osPfsInitPak +/* 33F88 80033388 03C02825 */ or $a1, $fp, $zero +/* 33F8C 8003338C 14400004 */ bnez $v0, .L800333A0 +/* 33F90 80033390 2401000A */ addiu $at, $zero, 0xA +/* 33F94 80033394 A6C00000 */ sh $zero, 0x0($s6) +/* 33F98 80033398 10000005 */ b .L800333B0 +/* 33F9C 8003339C 00009825 */ or $s3, $zero, $zero +.L800333A0: +/* 33FA0 800333A0 14410003 */ bne $v0, $at, .L800333B0 +/* 33FA4 800333A4 24180005 */ addiu $t8, $zero, 0x5 +/* 33FA8 800333A8 A6D80000 */ sh $t8, 0x0($s6) +/* 33FAC 800333AC 00009825 */ or $s3, $zero, $zero +.L800333B0: +/* 33FB0 800333B0 8FB900E4 */ lw $t9, 0xE4($sp) +/* 33FB4 800333B4 272E0001 */ addiu $t6, $t9, 0x1 +/* 33FB8 800333B8 2DC100B5 */ sltiu $at, $t6, 0xB5 +/* 33FBC 800333BC 14200002 */ bnez $at, .L800333C8 +/* 33FC0 800333C0 AFAE00E4 */ sw $t6, 0xE4($sp) +/* 33FC4 800333C4 00009825 */ or $s3, $zero, $zero +.L800333C8: +/* 33FC8 800333C8 100000A1 */ b .L80033650 +/* 33FCC 800333CC 86C50000 */ lh $a1, 0x0($s6) +.L800333D0: +/* 33FD0 800333D0 10000113 */ b .L80033820 +/* 33FD4 800333D4 24020003 */ addiu $v0, $zero, 0x3 +glabel .L800333D8 +/* 33FD8 800333D8 16600013 */ bnez $s3, .L80033428 +/* 33FDC 800333DC 240D00A0 */ addiu $t5, $zero, 0xA0 +/* 33FE0 800333E0 868A0000 */ lh $t2, 0x0($s4) +/* 33FE4 800333E4 26730001 */ addiu $s3, $s3, 0x1 +/* 33FE8 800333E8 240C0064 */ addiu $t4, $zero, 0x64 +/* 33FEC 800333EC 11400004 */ beqz $t2, .L80033400 +/* 33FF0 800333F0 3C018009 */ lui $at, %hi(D_80092D12) +/* 33FF4 800333F4 240B00A0 */ addiu $t3, $zero, 0xA0 +/* 33FF8 800333F8 10000002 */ b .L80033404 +/* 33FFC 800333FC A6AB0000 */ sh $t3, 0x0($s5) +.L80033400: +/* 34000 80033400 A6AC0000 */ sh $t4, 0x0($s5) +.L80033404: +/* 34004 80033404 0C00C997 */ jal func_8003265C +/* 34008 80033408 A42D2D12 */ sh $t5, %lo(D_80092D12)($at) +/* 3400C 8003340C 3C048007 */ lui $a0, %hi(D_8006E3F0) +/* 34010 80033410 0C00C97F */ jal func_800325FC +/* 34014 80033414 2484E3F0 */ addiu $a0, $a0, %lo(D_8006E3F0) +/* 34018 80033418 0C00C96A */ jal func_800325A8 +/* 3401C 8003341C 00000000 */ nop +/* 34020 80033420 1000008B */ b .L80033650 +/* 34024 80033424 86C50000 */ lh $a1, 0x0($s6) +.L80033428: +/* 34028 80033428 16770021 */ bne $s3, $s7, .L800334B0 +/* 3402C 8003342C 30EF8000 */ andi $t7, $a3, 0x8000 +/* 34030 80033430 11E00003 */ beqz $t7, .L80033440 +/* 34034 80033434 00E02025 */ or $a0, $a3, $zero +/* 34038 80033438 10000085 */ b .L80033650 +/* 3403C 8003343C 26730001 */ addiu $s3, $s3, 0x1 +.L80033440: +/* 34040 80033440 30830002 */ andi $v1, $a0, 0x2 +/* 34044 80033444 10600004 */ beqz $v1, .L80033458 +/* 34048 80033448 30990001 */ andi $t9, $a0, 0x1 +/* 3404C 8003344C 86980000 */ lh $t8, 0x0($s4) +/* 34050 80033450 17000006 */ bnez $t8, .L8003346C +/* 34054 80033454 00000000 */ nop +.L80033458: +/* 34058 80033458 1320007D */ beqz $t9, .L80033650 +/* 3405C 8003345C 00000000 */ nop +/* 34060 80033460 868E0000 */ lh $t6, 0x0($s4) +/* 34064 80033464 15C0007A */ bnez $t6, .L80033650 +/* 34068 80033468 00000000 */ nop +.L8003346C: +/* 3406C 8003346C 10600005 */ beqz $v1, .L80033484 +/* 34070 80033470 240B00A0 */ addiu $t3, $zero, 0xA0 +/* 34074 80033474 240A0064 */ addiu $t2, $zero, 0x64 +/* 34078 80033478 A6800000 */ sh $zero, 0x0($s4) +/* 3407C 8003347C 10000003 */ b .L8003348C +/* 34080 80033480 A6AA0000 */ sh $t2, 0x0($s5) +.L80033484: +/* 34084 80033484 A6970000 */ sh $s7, 0x0($s4) +/* 34088 80033488 A6AB0000 */ sh $t3, 0x0($s5) +.L8003348C: +/* 3408C 8003348C 0C00C997 */ jal func_8003265C +/* 34090 80033490 00000000 */ nop +/* 34094 80033494 3C048007 */ lui $a0, %hi(D_8006E3F0) +/* 34098 80033498 0C00C97F */ jal func_800325FC +/* 3409C 8003349C 2484E3F0 */ addiu $a0, $a0, %lo(D_8006E3F0) +/* 340A0 800334A0 0C00C96A */ jal func_800325A8 +/* 340A4 800334A4 00000000 */ nop +/* 340A8 800334A8 10000069 */ b .L80033650 +/* 340AC 800334AC 86C50000 */ lh $a1, 0x0($s6) +.L800334B0: +/* 340B0 800334B0 868C0000 */ lh $t4, 0x0($s4) +/* 340B4 800334B4 8FA40110 */ lw $a0, 0x110($sp) +/* 340B8 800334B8 03C02825 */ or $a1, $fp, $zero +/* 340BC 800334BC 15800013 */ bnez $t4, .L8003350C +/* 340C0 800334C0 3C068009 */ lui $a2, %hi(D_80092870) +/* 340C4 800334C4 0C00E764 */ jal osPfsInitPak +/* 340C8 800334C8 80C62870 */ lb $a2, %lo(D_80092870)($a2) +/* 340CC 800334CC 14400004 */ bnez $v0, .L800334E0 +/* 340D0 800334D0 2401000A */ addiu $at, $zero, 0xA +/* 340D4 800334D4 A6C00000 */ sh $zero, 0x0($s6) +/* 340D8 800334D8 1000000A */ b .L80033504 +/* 340DC 800334DC 00009825 */ or $s3, $zero, $zero +.L800334E0: +/* 340E0 800334E0 14410004 */ bne $v0, $at, .L800334F4 +/* 340E4 800334E4 240D0005 */ addiu $t5, $zero, 0x5 +/* 340E8 800334E8 A6CD0000 */ sh $t5, 0x0($s6) +/* 340EC 800334EC 10000005 */ b .L80033504 +/* 340F0 800334F0 00009825 */ or $s3, $zero, $zero +.L800334F4: +/* 340F4 800334F4 14570003 */ bne $v0, $s7, .L80033504 +/* 340F8 800334F8 240F0008 */ addiu $t7, $zero, 0x8 +/* 340FC 800334FC A6CF0000 */ sh $t7, 0x0($s6) +/* 34100 80033500 00009825 */ or $s3, $zero, $zero +.L80033504: +/* 34104 80033504 10000052 */ b .L80033650 +/* 34108 80033508 86C50000 */ lh $a1, 0x0($s6) +.L8003350C: +/* 3410C 8003350C 100000C4 */ b .L80033820 +/* 34110 80033510 24020003 */ addiu $v0, $zero, 0x3 +glabel .L80033514 +/* 34114 80033514 16600013 */ bnez $s3, .L80033564 +/* 34118 80033518 240A00A0 */ addiu $t2, $zero, 0xA0 +/* 3411C 8003351C 86980000 */ lh $t8, 0x0($s4) +/* 34120 80033520 26730001 */ addiu $s3, $s3, 0x1 +/* 34124 80033524 240E0064 */ addiu $t6, $zero, 0x64 +/* 34128 80033528 13000004 */ beqz $t8, .L8003353C +/* 3412C 8003352C 3C018009 */ lui $at, %hi(D_80092D12) +/* 34130 80033530 241900A0 */ addiu $t9, $zero, 0xA0 +/* 34134 80033534 10000002 */ b .L80033540 +/* 34138 80033538 A6B90000 */ sh $t9, 0x0($s5) +.L8003353C: +/* 3413C 8003353C A6AE0000 */ sh $t6, 0x0($s5) +.L80033540: +/* 34140 80033540 0C00C997 */ jal func_8003265C +/* 34144 80033544 A42A2D12 */ sh $t2, %lo(D_80092D12)($at) +/* 34148 80033548 3C048007 */ lui $a0, %hi(D_8006E460) +/* 3414C 8003354C 0C00C97F */ jal func_800325FC +/* 34150 80033550 2484E460 */ addiu $a0, $a0, %lo(D_8006E460) +/* 34154 80033554 0C00C96A */ jal func_800325A8 +/* 34158 80033558 00000000 */ nop +/* 3415C 8003355C 1000003C */ b .L80033650 +/* 34160 80033560 86C50000 */ lh $a1, 0x0($s6) +.L80033564: +/* 34164 80033564 16770021 */ bne $s3, $s7, .L800335EC +/* 34168 80033568 30EB8000 */ andi $t3, $a3, 0x8000 +/* 3416C 8003356C 11600003 */ beqz $t3, .L8003357C +/* 34170 80033570 00E02025 */ or $a0, $a3, $zero +/* 34174 80033574 10000036 */ b .L80033650 +/* 34178 80033578 26730001 */ addiu $s3, $s3, 0x1 +.L8003357C: +/* 3417C 8003357C 30830002 */ andi $v1, $a0, 0x2 +/* 34180 80033580 10600004 */ beqz $v1, .L80033594 +/* 34184 80033584 308D0001 */ andi $t5, $a0, 0x1 +/* 34188 80033588 868C0000 */ lh $t4, 0x0($s4) +/* 3418C 8003358C 15800006 */ bnez $t4, .L800335A8 +/* 34190 80033590 00000000 */ nop +.L80033594: +/* 34194 80033594 11A0002E */ beqz $t5, .L80033650 +/* 34198 80033598 00000000 */ nop +/* 3419C 8003359C 868F0000 */ lh $t7, 0x0($s4) +/* 341A0 800335A0 15E0002B */ bnez $t7, .L80033650 +/* 341A4 800335A4 00000000 */ nop +.L800335A8: +/* 341A8 800335A8 10600005 */ beqz $v1, .L800335C0 +/* 341AC 800335AC 241900A0 */ addiu $t9, $zero, 0xA0 +/* 341B0 800335B0 24180064 */ addiu $t8, $zero, 0x64 +/* 341B4 800335B4 A6800000 */ sh $zero, 0x0($s4) +/* 341B8 800335B8 10000003 */ b .L800335C8 +/* 341BC 800335BC A6B80000 */ sh $t8, 0x0($s5) +.L800335C0: +/* 341C0 800335C0 A6970000 */ sh $s7, 0x0($s4) +/* 341C4 800335C4 A6B90000 */ sh $t9, 0x0($s5) +.L800335C8: +/* 341C8 800335C8 0C00C997 */ jal func_8003265C +/* 341CC 800335CC 00000000 */ nop +/* 341D0 800335D0 3C048007 */ lui $a0, %hi(D_8006E460) +/* 341D4 800335D4 0C00C97F */ jal func_800325FC +/* 341D8 800335D8 2484E460 */ addiu $a0, $a0, %lo(D_8006E460) +/* 341DC 800335DC 0C00C96A */ jal func_800325A8 +/* 341E0 800335E0 00000000 */ nop +/* 341E4 800335E4 1000001A */ b .L80033650 +/* 341E8 800335E8 86C50000 */ lh $a1, 0x0($s6) +.L800335EC: +/* 341EC 800335EC 868E0000 */ lh $t6, 0x0($s4) +/* 341F0 800335F0 8FA40110 */ lw $a0, 0x110($sp) +/* 341F4 800335F4 03C02825 */ or $a1, $fp, $zero +/* 341F8 800335F8 15C00013 */ bnez $t6, .L80033648 +/* 341FC 800335FC 3C068009 */ lui $a2, %hi(D_80092870) +/* 34200 80033600 0C00E764 */ jal osPfsInitPak +/* 34204 80033604 80C62870 */ lb $a2, %lo(D_80092870)($a2) +/* 34208 80033608 14400004 */ bnez $v0, .L8003361C +/* 3420C 8003360C 2401000A */ addiu $at, $zero, 0xA +/* 34210 80033610 A6C00000 */ sh $zero, 0x0($s6) +/* 34214 80033614 1000000A */ b .L80033640 +/* 34218 80033618 00009825 */ or $s3, $zero, $zero +.L8003361C: +/* 3421C 8003361C 14410004 */ bne $v0, $at, .L80033630 +/* 34220 80033620 240A0005 */ addiu $t2, $zero, 0x5 +/* 34224 80033624 A6CA0000 */ sh $t2, 0x0($s6) +/* 34228 80033628 10000005 */ b .L80033640 +/* 3422C 8003362C 00009825 */ or $s3, $zero, $zero +.L80033630: +/* 34230 80033630 14570003 */ bne $v0, $s7, .L80033640 +/* 34234 80033634 240B0008 */ addiu $t3, $zero, 0x8 +/* 34238 80033638 A6CB0000 */ sh $t3, 0x0($s6) +/* 3423C 8003363C 00009825 */ or $s3, $zero, $zero +.L80033640: +/* 34240 80033640 10000003 */ b .L80033650 +/* 34244 80033644 86C50000 */ lh $a1, 0x0($s6) +.L80033648: +/* 34248 80033648 10000075 */ b .L80033820 +/* 3424C 8003364C 24020003 */ addiu $v0, $zero, 0x3 +.L80033650: +/* 34250 80033650 10A00019 */ beqz $a1, .L800336B8 +/* 34254 80033654 28A10005 */ slti $at, $a1, 0x5 +/* 34258 80033658 50200018 */ beql $at, $zero, .L800336BC +/* 3425C 8003365C 97AE00EA */ lhu $t6, 0xEA($sp) +/* 34260 80033660 0C00F238 */ jal osContStartQuery +/* 34264 80033664 8FA40110 */ lw $a0, 0x110($sp) +/* 34268 80033668 3C058009 */ lui $a1, %hi(D_80092D2C) +/* 3426C 8003366C 24A52D2C */ addiu $a1, $a1, %lo(D_80092D2C) +/* 34270 80033670 8FA40110 */ lw $a0, 0x110($sp) +/* 34274 80033674 0C00D008 */ jal osRecvMesg +/* 34278 80033678 02E03025 */ or $a2, $s7, $zero +/* 3427C 8003367C 3C048009 */ lui $a0, %hi(D_80092A90) +/* 34280 80033680 0C00F259 */ jal osContGetQuery +/* 34284 80033684 24842A90 */ addiu $a0, $a0, %lo(D_80092A90) +/* 34288 80033688 3C0C8009 */ lui $t4, %hi(D_80092870) +/* 3428C 8003368C 818C2870 */ lb $t4, %lo(D_80092870)($t4) +/* 34290 80033690 3C0F8009 */ lui $t7, %hi(D_80092A92) +/* 34294 80033694 24190008 */ addiu $t9, $zero, 0x8 +/* 34298 80033698 000C6880 */ sll $t5, $t4, 2 +/* 3429C 8003369C 01ED7821 */ addu $t7, $t7, $t5 +/* 342A0 800336A0 91EF2A92 */ lbu $t7, %lo(D_80092A92)($t7) +/* 342A4 800336A4 31F80002 */ andi $t8, $t7, 0x2 +/* 342A8 800336A8 53000004 */ beql $t8, $zero, .L800336BC +/* 342AC 800336AC 97AE00EA */ lhu $t6, 0xEA($sp) +/* 342B0 800336B0 A6D90000 */ sh $t9, 0x0($s6) +/* 342B4 800336B4 00009825 */ or $s3, $zero, $zero +.L800336B8: +/* 342B8 800336B8 97AE00EA */ lhu $t6, 0xEA($sp) +.L800336BC: +/* 342BC 800336BC 25CA0001 */ addiu $t2, $t6, 0x1 +/* 342C0 800336C0 314BFFFF */ andi $t3, $t2, 0xFFFF +/* 342C4 800336C4 29610014 */ slti $at, $t3, 0x14 +/* 342C8 800336C8 14200002 */ bnez $at, .L800336D4 +/* 342CC 800336CC A7AA00EA */ sh $t2, 0xEA($sp) +/* 342D0 800336D0 A7A000EA */ sh $zero, 0xEA($sp) +.L800336D4: +/* 342D4 800336D4 0C00EB04 */ jal osContStartReadData +/* 342D8 800336D8 8FA40110 */ lw $a0, 0x110($sp) +/* 342DC 800336DC 0C00C8A3 */ jal func_8003228C +/* 342E0 800336E0 00000000 */ nop +/* 342E4 800336E4 3C058009 */ lui $a1, %hi(D_80092D2C) +/* 342E8 800336E8 24A52D2C */ addiu $a1, $a1, %lo(D_80092D2C) +/* 342EC 800336EC 8FA40110 */ lw $a0, 0x110($sp) +/* 342F0 800336F0 0C00D008 */ jal osRecvMesg +/* 342F4 800336F4 02E03025 */ or $a2, $s7, $zero +/* 342F8 800336F8 3C0C8009 */ lui $t4, %hi(D_80092870) +/* 342FC 800336FC 818C2870 */ lb $t4, %lo(D_80092870)($t4) +/* 34300 80033700 27A400F8 */ addiu $a0, $sp, 0xF8 +/* 34304 80033704 000C6880 */ sll $t5, $t4, 2 +/* 34308 80033708 01AC6823 */ subu $t5, $t5, $t4 +/* 3430C 8003370C 000D6840 */ sll $t5, $t5, 1 +/* 34310 80033710 008D8021 */ addu $s0, $a0, $t5 +/* 34314 80033714 82030003 */ lb $v1, 0x3($s0) +/* 34318 80033718 82110002 */ lb $s1, 0x2($s0) +/* 3431C 8003371C 28790021 */ slti $t9, $v1, 0x21 +/* 34320 80033720 3B2E0001 */ xori $t6, $t9, 0x1 +/* 34324 80033724 2A2F0021 */ slti $t7, $s1, 0x21 +/* 34328 80033728 39F80001 */ xori $t8, $t7, 0x1 +/* 3432C 8003372C 000E50C0 */ sll $t2, $t6, 3 +/* 34330 80033730 030A5825 */ or $t3, $t8, $t2 +/* 34334 80033734 286DFFE0 */ slti $t5, $v1, -0x20 +/* 34338 80033738 000D7880 */ sll $t7, $t5, 2 +/* 3433C 8003373C 960D0000 */ lhu $t5, 0x0($s0) +/* 34340 80033740 2A38FFE0 */ slti $t8, $s1, -0x20 +/* 34344 80033744 00185040 */ sll $t2, $t8, 1 +/* 34348 80033748 016FC825 */ or $t9, $t3, $t7 +/* 3434C 8003374C 032A6025 */ or $t4, $t9, $t2 +/* 34350 80033750 01AC5825 */ or $t3, $t5, $t4 +/* 34354 80033754 0C00EB27 */ jal osContGetReadData +/* 34358 80033758 A7AB00F2 */ sh $t3, 0xF2($sp) +/* 3435C 8003375C 3C0F8009 */ lui $t7, %hi(D_80092870) +/* 34360 80033760 81EF2870 */ lb $t7, %lo(D_80092870)($t7) +/* 34364 80033764 27B800F8 */ addiu $t8, $sp, 0xF8 +/* 34368 80033768 97A400F2 */ lhu $a0, 0xF2($sp) +/* 3436C 8003376C 000F7080 */ sll $t6, $t7, 2 +/* 34370 80033770 01CF7023 */ subu $t6, $t6, $t7 +/* 34374 80033774 000E7040 */ sll $t6, $t6, 1 +/* 34378 80033778 01D88021 */ addu $s0, $t6, $t8 +/* 3437C 8003377C 82030003 */ lb $v1, 0x3($s0) +/* 34380 80033780 82110002 */ lb $s1, 0x2($s0) +/* 34384 80033784 286C0021 */ slti $t4, $v1, 0x21 +/* 34388 80033788 398D0001 */ xori $t5, $t4, 0x1 +/* 3438C 8003378C 2A390021 */ slti $t9, $s1, 0x21 +/* 34390 80033790 3B2A0001 */ xori $t2, $t9, 0x1 +/* 34394 80033794 000D58C0 */ sll $t3, $t5, 3 +/* 34398 80033798 014B7825 */ or $t7, $t2, $t3 +/* 3439C 8003379C 2878FFE0 */ slti $t8, $v1, -0x20 +/* 343A0 800337A0 0018C880 */ sll $t9, $t8, 2 +/* 343A4 800337A4 96180000 */ lhu $t8, 0x0($s0) +/* 343A8 800337A8 2A2AFFE0 */ slti $t2, $s1, -0x20 +/* 343AC 800337AC 000A5840 */ sll $t3, $t2, 1 +/* 343B0 800337B0 01F96025 */ or $t4, $t7, $t9 +/* 343B4 800337B4 018B7025 */ or $t6, $t4, $t3 +/* 343B8 800337B8 030E3025 */ or $a2, $t8, $t6 +/* 343BC 800337BC 30C8FFFF */ andi $t0, $a2, 0xFFFF +/* 343C0 800337C0 01041024 */ and $v0, $t0, $a0 +/* 343C4 800337C4 3059FFFF */ andi $t9, $v0, 0xFFFF +/* 343C8 800337C8 1320000C */ beqz $t9, .L800337FC +/* 343CC 800337CC 3049FFFF */ andi $t1, $v0, 0xFFFF +/* 343D0 800337D0 97AD00EC */ lhu $t5, 0xEC($sp) +/* 343D4 800337D4 25AA0001 */ addiu $t2, $t5, 0x1 +/* 343D8 800337D8 3142FFFF */ andi $v0, $t2, 0xFFFF +/* 343DC 800337DC 00026143 */ sra $t4, $v0, 5 +/* 343E0 800337E0 11800004 */ beqz $t4, .L800337F4 +/* 343E4 800337E4 A7AA00EC */ sh $t2, 0xEC($sp) +/* 343E8 800337E8 304B0007 */ andi $t3, $v0, 0x7 +/* 343EC 800337EC 51600005 */ beql $t3, $zero, .L80033804 +/* 343F0 800337F0 01047026 */ xor $t6, $t0, $a0 +.L800337F4: +/* 343F4 800337F4 10000002 */ b .L80033800 +/* 343F8 800337F8 00004825 */ or $t1, $zero, $zero +.L800337FC: +/* 343FC 800337FC A7A000EC */ sh $zero, 0xEC($sp) +.L80033800: +/* 34400 80033800 01047026 */ xor $t6, $t0, $a0 +.L80033804: +/* 34404 80033804 010E3824 */ and $a3, $t0, $t6 +/* 34408 80033808 30F8FFFF */ andi $t8, $a3, 0xFFFF +/* 3440C 8003380C 1300FC32 */ beqz $t8, .L800328D8 +/* 34410 80033810 03003825 */ or $a3, $t8, $zero +/* 34414 80033814 3309FFFF */ andi $t1, $t8, 0xFFFF +/* 34418 80033818 1000FC2F */ b .L800328D8 +/* 3441C 8003381C A7A000EC */ sh $zero, 0xEC($sp) +.L80033820: +/* 34420 80033820 8FBF0044 */ lw $ra, 0x44($sp) +/* 34424 80033824 8FB00020 */ lw $s0, 0x20($sp) +/* 34428 80033828 8FB10024 */ lw $s1, 0x24($sp) +/* 3442C 8003382C 8FB20028 */ lw $s2, 0x28($sp) +/* 34430 80033830 8FB3002C */ lw $s3, 0x2C($sp) +/* 34434 80033834 8FB40030 */ lw $s4, 0x30($sp) +/* 34438 80033838 8FB50034 */ lw $s5, 0x34($sp) +/* 3443C 8003383C 8FB60038 */ lw $s6, 0x38($sp) +/* 34440 80033840 8FB7003C */ lw $s7, 0x3C($sp) +/* 34444 80033844 8FBE0040 */ lw $fp, 0x40($sp) +/* 34448 80033848 03E00008 */ jr $ra +/* 3444C 8003384C 27BD0110 */ addiu $sp, $sp, 0x110 diff --git a/asm/camera.s b/asm/camera.s new file mode 100644 index 0000000..a1b41ea --- /dev/null +++ b/asm/camera.s @@ -0,0 +1,1258 @@ +.include "macro.inc" + +/* assembler directives */ +.set noat /* allow manual use of $at */ +.set noreorder /* don't insert nops after branches */ +.set gp=64 /* allow use of 64-bit general purpose registers */ + +.section .text, "ax" + +/* Generated by spimdisasm 1.11.1 */ + +glabel func_80022FD0 +/* 23BD0 80022FD0 10800012 */ beqz $a0, .L8002301C +/* 23BD4 80022FD4 3C038005 */ lui $v1, %hi(D_8004D748) +/* 23BD8 80022FD8 2463D748 */ addiu $v1, $v1, %lo(D_8004D748) +/* 23BDC 80022FDC 8C6E0000 */ lw $t6, 0x0($v1) +/* 23BE0 80022FE0 3C0141C6 */ lui $at, (0x41C64E6D >> 16) +/* 23BE4 80022FE4 34214E6D */ ori $at, $at, (0x41C64E6D & 0xFFFF) +/* 23BE8 80022FE8 01C10019 */ multu $t6, $at +/* 23BEC 80022FEC 00007812 */ mflo $t7 +/* 23BF0 80022FF0 25F83039 */ addiu $t8, $t7, 0x3039 +/* 23BF4 80022FF4 00184402 */ srl $t0, $t8, 16 +/* 23BF8 80022FF8 0104001B */ divu $zero, $t0, $a0 +/* 23BFC 80022FFC 00001010 */ mfhi $v0 +/* 23C00 80023000 AC780000 */ sw $t8, 0x0($v1) +/* 23C04 80023004 0300C825 */ or $t9, $t8, $zero +/* 23C08 80023008 14800002 */ bnez $a0, .L80023014 +/* 23C0C 8002300C 00000000 */ nop +/* 23C10 80023010 0007000D */ break 7 +.L80023014: +/* 23C14 80023014 03E00008 */ jr $ra +/* 23C18 80023018 00000000 */ nop +.L8002301C: +/* 23C1C 8002301C 00001025 */ or $v0, $zero, $zero +/* 23C20 80023020 03E00008 */ jr $ra +/* 23C24 80023024 00000000 */ nop + +glabel func_80023028 +/* 23C28 80023028 3C013F80 */ lui $at, (0x3F800000 >> 16) +/* 23C2C 8002302C 44817000 */ mtc1 $at, $f14 +/* 23C30 80023030 2403000C */ addiu $v1, $zero, 0xC +/* 23C34 80023034 460C703C */ c.lt.s $f14, $f12 +/* 23C38 80023038 44801000 */ mtc1 $zero, $f2 +/* 23C3C 8002303C 24040019 */ addiu $a0, $zero, 0x19 +/* 23C40 80023040 24060017 */ addiu $a2, $zero, 0x17 +/* 23C44 80023044 45000004 */ bc1f .L80023058 +/* 23C48 80023048 24080015 */ addiu $t0, $zero, 0x15 +/* 23C4C 8002304C 24020001 */ addiu $v0, $zero, 0x1 +/* 23C50 80023050 1000000B */ b .L80023080 +/* 23C54 80023054 460C7303 */ div.s $f12, $f14, $f12 +.L80023058: +/* 23C58 80023058 3C01BF80 */ lui $at, (0xBF800000 >> 16) +/* 23C5C 8002305C 44812000 */ mtc1 $at, $f4 +/* 23C60 80023060 00001025 */ or $v0, $zero, $zero +/* 23C64 80023064 4604603C */ c.lt.s $f12, $f4 +/* 23C68 80023068 00000000 */ nop +/* 23C6C 8002306C 45000004 */ bc1f .L80023080 +/* 23C70 80023070 00000000 */ nop +/* 23C74 80023074 2402FFFF */ addiu $v0, $zero, -0x1 +/* 23C78 80023078 10000001 */ b .L80023080 +/* 23C7C 8002307C 460C7303 */ div.s $f12, $f14, $f12 +.L80023080: +/* 23C80 80023080 240A0013 */ addiu $t2, $zero, 0x13 +.L80023084: +/* 23C84 80023084 00630019 */ multu $v1, $v1 +/* 23C88 80023088 44849000 */ mtc1 $a0, $f18 +/* 23C8C 8002308C 2465FFFF */ addiu $a1, $v1, -0x1 +/* 23C90 80023090 2467FFFE */ addiu $a3, $v1, -0x2 +/* 23C94 80023094 46809120 */ cvt.s.w $f4, $f18 +/* 23C98 80023098 2469FFFD */ addiu $t1, $v1, -0x3 +/* 23C9C 8002309C 2463FFFC */ addiu $v1, $v1, -0x4 +/* 23CA0 800230A0 2484FFF8 */ addiu $a0, $a0, -0x8 +/* 23CA4 800230A4 00007012 */ mflo $t6 +/* 23CA8 800230A8 448E3000 */ mtc1 $t6, $f6 +/* 23CAC 800230AC 00000000 */ nop +/* 23CB0 800230B0 00A50019 */ multu $a1, $a1 +/* 23CB4 800230B4 46803220 */ cvt.s.w $f8, $f6 +/* 23CB8 800230B8 46022180 */ add.s $f6, $f4, $f2 +/* 23CBC 800230BC 460C4282 */ mul.s $f10, $f8, $f12 +/* 23CC0 800230C0 00007812 */ mflo $t7 +/* 23CC4 800230C4 448F4000 */ mtc1 $t7, $f8 +/* 23CC8 800230C8 00000000 */ nop +/* 23CCC 800230CC 00E70019 */ multu $a3, $a3 +/* 23CD0 800230D0 460C5402 */ mul.s $f16, $f10, $f12 +/* 23CD4 800230D4 468042A0 */ cvt.s.w $f10, $f8 +/* 23CD8 800230D8 0000C012 */ mflo $t8 +/* 23CDC 800230DC 46068083 */ div.s $f2, $f16, $f6 +/* 23CE0 800230E0 44868000 */ mtc1 $a2, $f16 +/* 23CE4 800230E4 01290019 */ multu $t1, $t1 +/* 23CE8 800230E8 24C6FFF8 */ addiu $a2, $a2, -0x8 +/* 23CEC 800230EC 460C5482 */ mul.s $f18, $f10, $f12 +/* 23CF0 800230F0 44985000 */ mtc1 $t8, $f10 +/* 23CF4 800230F4 468081A0 */ cvt.s.w $f6, $f16 +/* 23CF8 800230F8 0000C812 */ mflo $t9 +/* 23CFC 800230FC 460C9102 */ mul.s $f4, $f18, $f12 +/* 23D00 80023100 46023200 */ add.s $f8, $f6, $f2 +/* 23D04 80023104 468054A0 */ cvt.s.w $f18, $f10 +/* 23D08 80023108 46082083 */ div.s $f2, $f4, $f8 +/* 23D0C 8002310C 44882000 */ mtc1 $t0, $f4 +/* 23D10 80023110 2508FFF8 */ addiu $t0, $t0, -0x8 +/* 23D14 80023114 460C9402 */ mul.s $f16, $f18, $f12 +/* 23D18 80023118 44999000 */ mtc1 $t9, $f18 +/* 23D1C 8002311C 46802220 */ cvt.s.w $f8, $f4 +/* 23D20 80023120 460C8182 */ mul.s $f6, $f16, $f12 +/* 23D24 80023124 46024280 */ add.s $f10, $f8, $f2 +/* 23D28 80023128 46809420 */ cvt.s.w $f16, $f18 +/* 23D2C 8002312C 460A3083 */ div.s $f2, $f6, $f10 +/* 23D30 80023130 448A3000 */ mtc1 $t2, $f6 +/* 23D34 80023134 254AFFF8 */ addiu $t2, $t2, -0x8 +/* 23D38 80023138 460C8102 */ mul.s $f4, $f16, $f12 +/* 23D3C 8002313C 468032A0 */ cvt.s.w $f10, $f6 +/* 23D40 80023140 460C2202 */ mul.s $f8, $f4, $f12 +/* 23D44 80023144 46025480 */ add.s $f18, $f10, $f2 +/* 23D48 80023148 1460FFCE */ bnez $v1, .L80023084 +/* 23D4C 8002314C 46124083 */ div.s $f2, $f8, $f18 +/* 23D50 80023150 18400009 */ blez $v0, .L80023178 +/* 23D54 80023154 00000000 */ nop +/* 23D58 80023158 46027100 */ add.s $f4, $f14, $f2 +/* 23D5C 8002315C 3C018007 */ lui $at, %hi(D_800716D0) +/* 23D60 80023160 D43016D0 */ ldc1 $f16, %lo(D_800716D0)($at) +/* 23D64 80023164 46046183 */ div.s $f6, $f12, $f4 +/* 23D68 80023168 460032A1 */ cvt.d.s $f10, $f6 +/* 23D6C 8002316C 462A8201 */ sub.d $f8, $f16, $f10 +/* 23D70 80023170 03E00008 */ jr $ra +/* 23D74 80023174 46204020 */ cvt.s.d $f0, $f8 +.L80023178: +/* 23D78 80023178 0443000A */ bgezl $v0, .L800231A4 +/* 23D7C 8002317C 46027200 */ add.s $f8, $f14, $f2 +/* 23D80 80023180 46027100 */ add.s $f4, $f14, $f2 +/* 23D84 80023184 3C018007 */ lui $at, %hi(D_800716D8) +/* 23D88 80023188 D43216D8 */ ldc1 $f18, %lo(D_800716D8)($at) +/* 23D8C 8002318C 46046183 */ div.s $f6, $f12, $f4 +/* 23D90 80023190 46003421 */ cvt.d.s $f16, $f6 +/* 23D94 80023194 46309281 */ sub.d $f10, $f18, $f16 +/* 23D98 80023198 03E00008 */ jr $ra +/* 23D9C 8002319C 46205020 */ cvt.s.d $f0, $f10 +/* 23DA0 800231A0 46027200 */ add.s $f8, $f14, $f2 +.L800231A4: +/* 23DA4 800231A4 46086003 */ div.s $f0, $f12, $f8 +/* 23DA8 800231A8 03E00008 */ jr $ra +/* 23DAC 800231AC 00000000 */ nop + +glabel func_800231B0 +/* 23DB0 800231B0 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 23DB4 800231B4 AFBF0014 */ sw $ra, 0x14($sp) +/* 23DB8 800231B8 C4A00000 */ lwc1 $f0, 0x0($a1) +/* 23DBC 800231BC C4820000 */ lwc1 $f2, 0x0($a0) +/* 23DC0 800231C0 AFA5001C */ sw $a1, 0x1C($sp) +/* 23DC4 800231C4 46000102 */ mul.s $f4, $f0, $f0 +/* 23DC8 800231C8 AFA40018 */ sw $a0, 0x18($sp) +/* 23DCC 800231CC 46021182 */ mul.s $f6, $f2, $f2 +/* 23DD0 800231D0 0C00D3D8 */ jal _nsqrtf +/* 23DD4 800231D4 46062300 */ add.s $f12, $f4, $f6 +/* 23DD8 800231D8 3C013F80 */ lui $at, (0x3F800000 >> 16) +/* 23DDC 800231DC 44814000 */ mtc1 $at, $f8 +/* 23DE0 800231E0 8FA40018 */ lw $a0, 0x18($sp) +/* 23DE4 800231E4 8FA5001C */ lw $a1, 0x1C($sp) +/* 23DE8 800231E8 46004083 */ div.s $f2, $f8, $f0 +/* 23DEC 800231EC C48A0000 */ lwc1 $f10, 0x0($a0) +/* 23DF0 800231F0 46025402 */ mul.s $f16, $f10, $f2 +/* 23DF4 800231F4 E4900000 */ swc1 $f16, 0x0($a0) +/* 23DF8 800231F8 C4B20000 */ lwc1 $f18, 0x0($a1) +/* 23DFC 800231FC 46029102 */ mul.s $f4, $f18, $f2 +/* 23E00 80023200 E4A40000 */ swc1 $f4, 0x0($a1) +/* 23E04 80023204 8FBF0014 */ lw $ra, 0x14($sp) +/* 23E08 80023208 03E00008 */ jr $ra +/* 23E0C 8002320C 27BD0018 */ addiu $sp, $sp, 0x18 + +glabel func_80023210 +/* 23E10 80023210 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 23E14 80023214 F7B40010 */ sdc1 $f20, 0x10($sp) +/* 23E18 80023218 44800000 */ mtc1 $zero, $f0 +/* 23E1C 8002321C 46006506 */ mov.s $f20, $f12 +/* 23E20 80023220 AFBF001C */ sw $ra, 0x1C($sp) +/* 23E24 80023224 46007032 */ c.eq.s $f14, $f0 +/* 23E28 80023228 00000000 */ nop +/* 23E2C 8002322C 4502000D */ bc1fl .L80023264 +/* 23E30 80023230 460E003C */ c.lt.s $f0, $f14 +/* 23E34 80023234 4614003E */ c.le.s $f0, $f20 +/* 23E38 80023238 3C018007 */ lui $at, %hi(D_800716E8) +/* 23E3C 8002323C 45000005 */ bc1f .L80023254 +/* 23E40 80023240 00000000 */ nop +/* 23E44 80023244 3C018007 */ lui $at, %hi(D_800716E0) +/* 23E48 80023248 D42416E0 */ ldc1 $f4, %lo(D_800716E0)($at) +/* 23E4C 8002324C 10000023 */ b .L800232DC +/* 23E50 80023250 462020A0 */ cvt.s.d $f2, $f4 +.L80023254: +/* 23E54 80023254 D42616E8 */ ldc1 $f6, %lo(D_800716E8)($at) +/* 23E58 80023258 10000020 */ b .L800232DC +/* 23E5C 8002325C 462030A0 */ cvt.s.d $f2, $f6 +/* 23E60 80023260 460E003C */ c.lt.s $f0, $f14 +.L80023264: +/* 23E64 80023264 00000000 */ nop +/* 23E68 80023268 45020006 */ bc1fl .L80023284 +/* 23E6C 8002326C 4600703C */ c.lt.s $f14, $f0 +/* 23E70 80023270 0C008C0A */ jal func_80023028 +/* 23E74 80023274 460EA303 */ div.s $f12, $f20, $f14 +/* 23E78 80023278 10000018 */ b .L800232DC +/* 23E7C 8002327C 46000086 */ mov.s $f2, $f0 +/* 23E80 80023280 4600703C */ c.lt.s $f14, $f0 +.L80023284: +/* 23E84 80023284 00000000 */ nop +/* 23E88 80023288 4500000D */ bc1f .L800232C0 +/* 23E8C 8002328C 00000000 */ nop +/* 23E90 80023290 4600A03E */ c.le.s $f20, $f0 +/* 23E94 80023294 00000000 */ nop +/* 23E98 80023298 45000009 */ bc1f .L800232C0 +/* 23E9C 8002329C 00000000 */ nop +/* 23EA0 800232A0 0C008C0A */ jal func_80023028 +/* 23EA4 800232A4 460EA303 */ div.s $f12, $f20, $f14 +/* 23EA8 800232A8 3C018007 */ lui $at, %hi(D_800716F0) +/* 23EAC 800232AC D42A16F0 */ ldc1 $f10, %lo(D_800716F0)($at) +/* 23EB0 800232B0 46000221 */ cvt.d.s $f8, $f0 +/* 23EB4 800232B4 462A4401 */ sub.d $f16, $f8, $f10 +/* 23EB8 800232B8 10000008 */ b .L800232DC +/* 23EBC 800232BC 462080A0 */ cvt.s.d $f2, $f16 +.L800232C0: +/* 23EC0 800232C0 0C008C0A */ jal func_80023028 +/* 23EC4 800232C4 460EA303 */ div.s $f12, $f20, $f14 +/* 23EC8 800232C8 3C018007 */ lui $at, %hi(D_800716F8) +/* 23ECC 800232CC D42416F8 */ ldc1 $f4, %lo(D_800716F8)($at) +/* 23ED0 800232D0 460004A1 */ cvt.d.s $f18, $f0 +/* 23ED4 800232D4 46249180 */ add.d $f6, $f18, $f4 +/* 23ED8 800232D8 462030A0 */ cvt.s.d $f2, $f6 +.L800232DC: +/* 23EDC 800232DC 46001006 */ mov.s $f0, $f2 +/* 23EE0 800232E0 8FBF001C */ lw $ra, 0x1C($sp) +/* 23EE4 800232E4 D7B40010 */ ldc1 $f20, 0x10($sp) +/* 23EE8 800232E8 27BD0020 */ addiu $sp, $sp, 0x20 +/* 23EEC 800232EC 03E00008 */ jr $ra +/* 23EF0 800232F0 00000000 */ nop + +glabel func_800232F4 +/* 23EF4 800232F4 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 23EF8 800232F8 AFBF0014 */ sw $ra, 0x14($sp) +/* 23EFC 800232FC E7AC0020 */ swc1 $f12, 0x20($sp) +/* 23F00 80023300 C7AC0020 */ lwc1 $f12, 0x20($sp) +/* 23F04 80023304 0C00D5A0 */ jal sinf +/* 23F08 80023308 AFA50024 */ sw $a1, 0x24($sp) +/* 23F0C 8002330C C7AC0020 */ lwc1 $f12, 0x20($sp) +/* 23F10 80023310 0C00D87C */ jal cosf +/* 23F14 80023314 E7A0001C */ swc1 $f0, 0x1C($sp) +/* 23F18 80023318 8FA50024 */ lw $a1, 0x24($sp) +/* 23F1C 8002331C C7AE001C */ lwc1 $f14, 0x1C($sp) +/* 23F20 80023320 C4AC0004 */ lwc1 $f12, 0x4($a1) +/* 23F24 80023324 C4A20000 */ lwc1 $f2, 0x0($a1) +/* 23F28 80023328 460E6102 */ mul.s $f4, $f12, $f14 +/* 23F2C 8002332C 00000000 */ nop +/* 23F30 80023330 46001182 */ mul.s $f6, $f2, $f0 +/* 23F34 80023334 00000000 */ nop +/* 23F38 80023338 46006282 */ mul.s $f10, $f12, $f0 +/* 23F3C 8002333C 00000000 */ nop +/* 23F40 80023340 460E1402 */ mul.s $f16, $f2, $f14 +/* 23F44 80023344 46062201 */ sub.s $f8, $f4, $f6 +/* 23F48 80023348 E4A80000 */ swc1 $f8, 0x0($a1) +/* 23F4C 8002334C 46105480 */ add.s $f18, $f10, $f16 +/* 23F50 80023350 E4B20004 */ swc1 $f18, 0x4($a1) +/* 23F54 80023354 8FBF0014 */ lw $ra, 0x14($sp) +/* 23F58 80023358 03E00008 */ jr $ra +/* 23F5C 8002335C 27BD0020 */ addiu $sp, $sp, 0x20 + +glabel func_80023360 +/* 23F60 80023360 27BDFFB0 */ addiu $sp, $sp, -0x50 +/* 23F64 80023364 F7B40018 */ sdc1 $f20, 0x18($sp) +/* 23F68 80023368 AFB00020 */ sw $s0, 0x20($sp) +/* 23F6C 8002336C 4485A000 */ mtc1 $a1, $f20 +/* 23F70 80023370 00808025 */ or $s0, $a0, $zero +/* 23F74 80023374 AFBF0024 */ sw $ra, 0x24($sp) +/* 23F78 80023378 AFA60058 */ sw $a2, 0x58($sp) +/* 23F7C 8002337C AFA7005C */ sw $a3, 0x5C($sp) +/* 23F80 80023380 0C00D5A0 */ jal sinf +/* 23F84 80023384 4600A306 */ mov.s $f12, $f20 +/* 23F88 80023388 E7A0004C */ swc1 $f0, 0x4C($sp) +/* 23F8C 8002338C 0C00D87C */ jal cosf +/* 23F90 80023390 4600A306 */ mov.s $f12, $f20 +/* 23F94 80023394 46000506 */ mov.s $f20, $f0 +/* 23F98 80023398 0C00D5A0 */ jal sinf +/* 23F9C 8002339C C7AC0058 */ lwc1 $f12, 0x58($sp) +/* 23FA0 800233A0 C7AC0058 */ lwc1 $f12, 0x58($sp) +/* 23FA4 800233A4 0C00D87C */ jal cosf +/* 23FA8 800233A8 E7A00048 */ swc1 $f0, 0x48($sp) +/* 23FAC 800233AC C7AC005C */ lwc1 $f12, 0x5C($sp) +/* 23FB0 800233B0 0C00D5A0 */ jal sinf +/* 23FB4 800233B4 E7A0003C */ swc1 $f0, 0x3C($sp) +/* 23FB8 800233B8 C7AC005C */ lwc1 $f12, 0x5C($sp) +/* 23FBC 800233BC 0C00D87C */ jal cosf +/* 23FC0 800233C0 E7A00044 */ swc1 $f0, 0x44($sp) +/* 23FC4 800233C4 C7B20044 */ lwc1 $f18, 0x44($sp) +/* 23FC8 800233C8 C7A4004C */ lwc1 $f4, 0x4C($sp) +/* 23FCC 800233CC C7AE003C */ lwc1 $f14, 0x3C($sp) +/* 23FD0 800233D0 C7B00048 */ lwc1 $f16, 0x48($sp) +/* 23FD4 800233D4 46049302 */ mul.s $f12, $f18, $f4 +/* 23FD8 800233D8 C7A20060 */ lwc1 $f2, 0x60($sp) +/* 23FDC 800233DC 3C013F80 */ lui $at, (0x3F800000 >> 16) +/* 23FE0 800233E0 460E0182 */ mul.s $f6, $f0, $f14 +/* 23FE4 800233E4 00000000 */ nop +/* 23FE8 800233E8 46106202 */ mul.s $f8, $f12, $f16 +/* 23FEC 800233EC 46083280 */ add.s $f10, $f6, $f8 +/* 23FF0 800233F0 46025102 */ mul.s $f4, $f10, $f2 +/* 23FF4 800233F4 46008287 */ neg.s $f10, $f16 +/* 23FF8 800233F8 46149182 */ mul.s $f6, $f18, $f20 +/* 23FFC 800233FC E6040000 */ swc1 $f4, 0x0($s0) +/* 24000 80023400 46023202 */ mul.s $f8, $f6, $f2 +/* 24004 80023404 E6080004 */ swc1 $f8, 0x4($s0) +/* 24008 80023408 E7AA0034 */ swc1 $f10, 0x34($sp) +/* 2400C 8002340C C7A40034 */ lwc1 $f4, 0x34($sp) +/* 24010 80023410 46002182 */ mul.s $f6, $f4, $f0 +/* 24014 80023414 00000000 */ nop +/* 24018 80023418 460E6202 */ mul.s $f8, $f12, $f14 +/* 2401C 8002341C 46083280 */ add.s $f10, $f6, $f8 +/* 24020 80023420 44803000 */ mtc1 $zero, $f6 +/* 24024 80023424 46009207 */ neg.s $f8, $f18 +/* 24028 80023428 46025102 */ mul.s $f4, $f10, $f2 +/* 2402C 8002342C E606000C */ swc1 $f6, 0xC($s0) +/* 24030 80023430 E6040008 */ swc1 $f4, 0x8($s0) +/* 24034 80023434 C7AA004C */ lwc1 $f10, 0x4C($sp) +/* 24038 80023438 E7A80030 */ swc1 $f8, 0x30($sp) +/* 2403C 8002343C C7A60030 */ lwc1 $f6, 0x30($sp) +/* 24040 80023440 460A0102 */ mul.s $f4, $f0, $f10 +/* 24044 80023444 E7A4002C */ swc1 $f4, 0x2C($sp) +/* 24048 80023448 460E3202 */ mul.s $f8, $f6, $f14 +/* 2404C 8002344C C7AA002C */ lwc1 $f10, 0x2C($sp) +/* 24050 80023450 46105102 */ mul.s $f4, $f10, $f16 +/* 24054 80023454 46044180 */ add.s $f6, $f8, $f4 +/* 24058 80023458 46023282 */ mul.s $f10, $f6, $f2 +/* 2405C 8002345C 00000000 */ nop +/* 24060 80023460 46140202 */ mul.s $f8, $f0, $f20 +/* 24064 80023464 E60A0010 */ swc1 $f10, 0x10($s0) +/* 24068 80023468 46024102 */ mul.s $f4, $f8, $f2 +/* 2406C 8002346C E6040014 */ swc1 $f4, 0x14($s0) +/* 24070 80023470 C7AA0034 */ lwc1 $f10, 0x34($sp) +/* 24074 80023474 C7A60030 */ lwc1 $f6, 0x30($sp) +/* 24078 80023478 C7A4002C */ lwc1 $f4, 0x2C($sp) +/* 2407C 8002347C 460A3202 */ mul.s $f8, $f6, $f10 +/* 24080 80023480 00000000 */ nop +/* 24084 80023484 460E2182 */ mul.s $f6, $f4, $f14 +/* 24088 80023488 46064280 */ add.s $f10, $f8, $f6 +/* 2408C 8002348C 44804000 */ mtc1 $zero, $f8 +/* 24090 80023490 46025102 */ mul.s $f4, $f10, $f2 +/* 24094 80023494 E608001C */ swc1 $f8, 0x1C($s0) +/* 24098 80023498 4610A182 */ mul.s $f6, $f20, $f16 +/* 2409C 8002349C E6040018 */ swc1 $f4, 0x18($s0) +/* 240A0 800234A0 46023282 */ mul.s $f10, $f6, $f2 +/* 240A4 800234A4 E60A0020 */ swc1 $f10, 0x20($s0) +/* 240A8 800234A8 C7A4004C */ lwc1 $f4, 0x4C($sp) +/* 240AC 800234AC 46002207 */ neg.s $f8, $f4 +/* 240B0 800234B0 46024182 */ mul.s $f6, $f8, $f2 +/* 240B4 800234B4 44804000 */ mtc1 $zero, $f8 +/* 240B8 800234B8 460EA282 */ mul.s $f10, $f20, $f14 +/* 240BC 800234BC E608002C */ swc1 $f8, 0x2C($s0) +/* 240C0 800234C0 44814000 */ mtc1 $at, $f8 +/* 240C4 800234C4 E6060024 */ swc1 $f6, 0x24($s0) +/* 240C8 800234C8 46025102 */ mul.s $f4, $f10, $f2 +/* 240CC 800234CC E6040028 */ swc1 $f4, 0x28($s0) +/* 240D0 800234D0 C7A60064 */ lwc1 $f6, 0x64($sp) +/* 240D4 800234D4 E6060030 */ swc1 $f6, 0x30($s0) +/* 240D8 800234D8 C7AA0068 */ lwc1 $f10, 0x68($sp) +/* 240DC 800234DC E60A0034 */ swc1 $f10, 0x34($s0) +/* 240E0 800234E0 C7A4006C */ lwc1 $f4, 0x6C($sp) +/* 240E4 800234E4 E608003C */ swc1 $f8, 0x3C($s0) +/* 240E8 800234E8 E6040038 */ swc1 $f4, 0x38($s0) +/* 240EC 800234EC 8FBF0024 */ lw $ra, 0x24($sp) +/* 240F0 800234F0 D7B40018 */ ldc1 $f20, 0x18($sp) +/* 240F4 800234F4 8FB00020 */ lw $s0, 0x20($sp) +/* 240F8 800234F8 03E00008 */ jr $ra +/* 240FC 800234FC 27BD0050 */ addiu $sp, $sp, 0x50 + +glabel func_80023500 +/* 24100 80023500 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 24104 80023504 44856000 */ mtc1 $a1, $f12 +/* 24108 80023508 44867000 */ mtc1 $a2, $f14 +/* 2410C 8002350C AFBF0024 */ sw $ra, 0x24($sp) +/* 24110 80023510 AFA40028 */ sw $a0, 0x28($sp) +/* 24114 80023514 AFA70034 */ sw $a3, 0x34($sp) +/* 24118 80023518 C7A40038 */ lwc1 $f4, 0x38($sp) +/* 2411C 8002351C C7A6003C */ lwc1 $f6, 0x3C($sp) +/* 24120 80023520 C7A80040 */ lwc1 $f8, 0x40($sp) +/* 24124 80023524 C7AA0044 */ lwc1 $f10, 0x44($sp) +/* 24128 80023528 3C048009 */ lui $a0, %hi(D_8008D030) +/* 2412C 8002352C 44056000 */ mfc1 $a1, $f12 +/* 24130 80023530 44067000 */ mfc1 $a2, $f14 +/* 24134 80023534 2484D030 */ addiu $a0, $a0, %lo(D_8008D030) +/* 24138 80023538 8FA70034 */ lw $a3, 0x34($sp) +/* 2413C 8002353C E7A40010 */ swc1 $f4, 0x10($sp) +/* 24140 80023540 E7A60014 */ swc1 $f6, 0x14($sp) +/* 24144 80023544 E7A80018 */ swc1 $f8, 0x18($sp) +/* 24148 80023548 0C008CD8 */ jal func_80023360 +/* 2414C 8002354C E7AA001C */ swc1 $f10, 0x1C($sp) +/* 24150 80023550 3C048009 */ lui $a0, %hi(D_8008D030) +/* 24154 80023554 2484D030 */ addiu $a0, $a0, %lo(D_8008D030) +/* 24158 80023558 0C00D480 */ jal guMtxF2L +/* 2415C 8002355C 8FA50028 */ lw $a1, 0x28($sp) +/* 24160 80023560 8FBF0024 */ lw $ra, 0x24($sp) +/* 24164 80023564 27BD0028 */ addiu $sp, $sp, 0x28 +/* 24168 80023568 03E00008 */ jr $ra +/* 2416C 8002356C 00000000 */ nop + +glabel func_80023570 +/* 24170 80023570 27BDFFB0 */ addiu $sp, $sp, -0x50 +/* 24174 80023574 F7B40018 */ sdc1 $f20, 0x18($sp) +/* 24178 80023578 AFB00020 */ sw $s0, 0x20($sp) +/* 2417C 8002357C 4485A000 */ mtc1 $a1, $f20 +/* 24180 80023580 00808025 */ or $s0, $a0, $zero +/* 24184 80023584 AFBF0024 */ sw $ra, 0x24($sp) +/* 24188 80023588 AFA60058 */ sw $a2, 0x58($sp) +/* 2418C 8002358C AFA7005C */ sw $a3, 0x5C($sp) +/* 24190 80023590 0C00D5A0 */ jal sinf +/* 24194 80023594 4600A306 */ mov.s $f12, $f20 +/* 24198 80023598 E7A0004C */ swc1 $f0, 0x4C($sp) +/* 2419C 8002359C 0C00D87C */ jal cosf +/* 241A0 800235A0 4600A306 */ mov.s $f12, $f20 +/* 241A4 800235A4 46000506 */ mov.s $f20, $f0 +/* 241A8 800235A8 0C00D5A0 */ jal sinf +/* 241AC 800235AC C7AC0058 */ lwc1 $f12, 0x58($sp) +/* 241B0 800235B0 C7AC0058 */ lwc1 $f12, 0x58($sp) +/* 241B4 800235B4 0C00D87C */ jal cosf +/* 241B8 800235B8 E7A00048 */ swc1 $f0, 0x48($sp) +/* 241BC 800235BC C7AC005C */ lwc1 $f12, 0x5C($sp) +/* 241C0 800235C0 0C00D5A0 */ jal sinf +/* 241C4 800235C4 E7A0003C */ swc1 $f0, 0x3C($sp) +/* 241C8 800235C8 C7AC005C */ lwc1 $f12, 0x5C($sp) +/* 241CC 800235CC 0C00D87C */ jal cosf +/* 241D0 800235D0 E7A00044 */ swc1 $f0, 0x44($sp) +/* 241D4 800235D4 C7B20044 */ lwc1 $f18, 0x44($sp) +/* 241D8 800235D8 C7A4004C */ lwc1 $f4, 0x4C($sp) +/* 241DC 800235DC C7A2003C */ lwc1 $f2, 0x3C($sp) +/* 241E0 800235E0 C7AE0048 */ lwc1 $f14, 0x48($sp) +/* 241E4 800235E4 46049302 */ mul.s $f12, $f18, $f4 +/* 241E8 800235E8 44808000 */ mtc1 $zero, $f16 +/* 241EC 800235EC 3C013F80 */ lui $at, (0x3F800000 >> 16) +/* 241F0 800235F0 46020182 */ mul.s $f6, $f0, $f2 +/* 241F4 800235F4 00000000 */ nop +/* 241F8 800235F8 460E6202 */ mul.s $f8, $f12, $f14 +/* 241FC 800235FC 46083280 */ add.s $f10, $f6, $f8 +/* 24200 80023600 46149102 */ mul.s $f4, $f18, $f20 +/* 24204 80023604 46007187 */ neg.s $f6, $f14 +/* 24208 80023608 E60A0000 */ swc1 $f10, 0x0($s0) +/* 2420C 8002360C E6040004 */ swc1 $f4, 0x4($s0) +/* 24210 80023610 E7A60034 */ swc1 $f6, 0x34($sp) +/* 24214 80023614 C7A80034 */ lwc1 $f8, 0x34($sp) +/* 24218 80023618 E610000C */ swc1 $f16, 0xC($s0) +/* 2421C 8002361C 46004282 */ mul.s $f10, $f8, $f0 +/* 24220 80023620 46009207 */ neg.s $f8, $f18 +/* 24224 80023624 46026102 */ mul.s $f4, $f12, $f2 +/* 24228 80023628 46045180 */ add.s $f6, $f10, $f4 +/* 2422C 8002362C E6060008 */ swc1 $f6, 0x8($s0) +/* 24230 80023630 C7AA004C */ lwc1 $f10, 0x4C($sp) +/* 24234 80023634 E7A80030 */ swc1 $f8, 0x30($sp) +/* 24238 80023638 C7A60030 */ lwc1 $f6, 0x30($sp) +/* 2423C 8002363C 460A0102 */ mul.s $f4, $f0, $f10 +/* 24240 80023640 E7A4002C */ swc1 $f4, 0x2C($sp) +/* 24244 80023644 46023202 */ mul.s $f8, $f6, $f2 +/* 24248 80023648 C7AA002C */ lwc1 $f10, 0x2C($sp) +/* 2424C 8002364C 460E5102 */ mul.s $f4, $f10, $f14 +/* 24250 80023650 46044180 */ add.s $f6, $f8, $f4 +/* 24254 80023654 46140282 */ mul.s $f10, $f0, $f20 +/* 24258 80023658 E6060010 */ swc1 $f6, 0x10($s0) +/* 2425C 8002365C E60A0014 */ swc1 $f10, 0x14($s0) +/* 24260 80023660 C7A40034 */ lwc1 $f4, 0x34($sp) +/* 24264 80023664 C7A80030 */ lwc1 $f8, 0x30($sp) +/* 24268 80023668 C7AA002C */ lwc1 $f10, 0x2C($sp) +/* 2426C 8002366C E610001C */ swc1 $f16, 0x1C($s0) +/* 24270 80023670 46044182 */ mul.s $f6, $f8, $f4 +/* 24274 80023674 00000000 */ nop +/* 24278 80023678 46025202 */ mul.s $f8, $f10, $f2 +/* 2427C 8002367C 46083100 */ add.s $f4, $f6, $f8 +/* 24280 80023680 460EA282 */ mul.s $f10, $f20, $f14 +/* 24284 80023684 E6040018 */ swc1 $f4, 0x18($s0) +/* 24288 80023688 4602A102 */ mul.s $f4, $f20, $f2 +/* 2428C 8002368C E60A0020 */ swc1 $f10, 0x20($s0) +/* 24290 80023690 C7A6004C */ lwc1 $f6, 0x4C($sp) +/* 24294 80023694 44815000 */ mtc1 $at, $f10 +/* 24298 80023698 E610002C */ swc1 $f16, 0x2C($s0) +/* 2429C 8002369C 46003207 */ neg.s $f8, $f6 +/* 242A0 800236A0 E6040028 */ swc1 $f4, 0x28($s0) +/* 242A4 800236A4 E6080024 */ swc1 $f8, 0x24($s0) +/* 242A8 800236A8 E6100030 */ swc1 $f16, 0x30($s0) +/* 242AC 800236AC E6100034 */ swc1 $f16, 0x34($s0) +/* 242B0 800236B0 E6100038 */ swc1 $f16, 0x38($s0) +/* 242B4 800236B4 E60A003C */ swc1 $f10, 0x3C($s0) +/* 242B8 800236B8 8FBF0024 */ lw $ra, 0x24($sp) +/* 242BC 800236BC D7B40018 */ ldc1 $f20, 0x18($sp) +/* 242C0 800236C0 8FB00020 */ lw $s0, 0x20($sp) +/* 242C4 800236C4 03E00008 */ jr $ra +/* 242C8 800236C8 27BD0050 */ addiu $sp, $sp, 0x50 + +glabel func_800236CC +/* 242CC 800236CC 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 242D0 800236D0 44856000 */ mtc1 $a1, $f12 +/* 242D4 800236D4 44867000 */ mtc1 $a2, $f14 +/* 242D8 800236D8 AFBF0014 */ sw $ra, 0x14($sp) +/* 242DC 800236DC AFA40018 */ sw $a0, 0x18($sp) +/* 242E0 800236E0 AFA70024 */ sw $a3, 0x24($sp) +/* 242E4 800236E4 3C048009 */ lui $a0, %hi(D_8008D030) +/* 242E8 800236E8 44056000 */ mfc1 $a1, $f12 +/* 242EC 800236EC 44067000 */ mfc1 $a2, $f14 +/* 242F0 800236F0 2484D030 */ addiu $a0, $a0, %lo(D_8008D030) +/* 242F4 800236F4 0C008D5C */ jal func_80023570 +/* 242F8 800236F8 8FA70024 */ lw $a3, 0x24($sp) +/* 242FC 800236FC 3C048009 */ lui $a0, %hi(D_8008D030) +/* 24300 80023700 2484D030 */ addiu $a0, $a0, %lo(D_8008D030) +/* 24304 80023704 0C00D480 */ jal guMtxF2L +/* 24308 80023708 8FA50018 */ lw $a1, 0x18($sp) +/* 2430C 8002370C 8FBF0014 */ lw $ra, 0x14($sp) +/* 24310 80023710 27BD0018 */ addiu $sp, $sp, 0x18 +/* 24314 80023714 03E00008 */ jr $ra +/* 24318 80023718 00000000 */ nop + +glabel func_8002371C +/* 2431C 8002371C 27BDFFB0 */ addiu $sp, $sp, -0x50 +/* 24320 80023720 AFBF001C */ sw $ra, 0x1C($sp) +/* 24324 80023724 F7B40010 */ sdc1 $f20, 0x10($sp) +/* 24328 80023728 AFA50054 */ sw $a1, 0x54($sp) +/* 2432C 8002372C AFA60058 */ sw $a2, 0x58($sp) +/* 24330 80023730 AFA7005C */ sw $a3, 0x5C($sp) +/* 24334 80023734 C7A40060 */ lwc1 $f4, 0x60($sp) +/* 24338 80023738 C7A60054 */ lwc1 $f6, 0x54($sp) +/* 2433C 8002373C C7A80068 */ lwc1 $f8, 0x68($sp) +/* 24340 80023740 C7AA005C */ lwc1 $f10, 0x5C($sp) +/* 24344 80023744 46062081 */ sub.s $f2, $f4, $f6 +/* 24348 80023748 AFA40050 */ sw $a0, 0x50($sp) +/* 2434C 8002374C 460A4401 */ sub.s $f16, $f8, $f10 +/* 24350 80023750 46021102 */ mul.s $f4, $f2, $f2 +/* 24354 80023754 E7A20028 */ swc1 $f2, 0x28($sp) +/* 24358 80023758 46108182 */ mul.s $f6, $f16, $f16 +/* 2435C 8002375C E7B00024 */ swc1 $f16, 0x24($sp) +/* 24360 80023760 0C00D3D8 */ jal _nsqrtf +/* 24364 80023764 46062300 */ add.s $f12, $f4, $f6 +/* 24368 80023768 44807000 */ mtc1 $zero, $f14 +/* 2436C 8002376C 8FA40050 */ lw $a0, 0x50($sp) +/* 24370 80023770 C7A20028 */ lwc1 $f2, 0x28($sp) +/* 24374 80023774 460E0032 */ c.eq.s $f0, $f14 +/* 24378 80023778 C7B00024 */ lwc1 $f16, 0x24($sp) +/* 2437C 8002377C E7A00040 */ swc1 $f0, 0x40($sp) +/* 24380 80023780 C7A80064 */ lwc1 $f8, 0x64($sp) +/* 24384 80023784 45000005 */ bc1f .L8002379C +/* 24388 80023788 C7AA0058 */ lwc1 $f10, 0x58($sp) +/* 2438C 8002378C 3C013F80 */ lui $at, (0x3F800000 >> 16) +/* 24390 80023790 4481A000 */ mtc1 $at, $f20 +/* 24394 80023794 10000003 */ b .L800237A4 +/* 24398 80023798 46007486 */ mov.s $f18, $f14 +.L8002379C: +/* 2439C 8002379C 46001483 */ div.s $f18, $f2, $f0 +/* 243A0 800237A0 46008503 */ div.s $f20, $f16, $f0 +.L800237A4: +/* 243A4 800237A4 C7A40040 */ lwc1 $f4, 0x40($sp) +/* 243A8 800237A8 460A4401 */ sub.s $f16, $f8, $f10 +/* 243AC 800237AC AFA40050 */ sw $a0, 0x50($sp) +/* 243B0 800237B0 46042182 */ mul.s $f6, $f4, $f4 +/* 243B4 800237B4 E7B20034 */ swc1 $f18, 0x34($sp) +/* 243B8 800237B8 E7B00028 */ swc1 $f16, 0x28($sp) +/* 243BC 800237BC 46108202 */ mul.s $f8, $f16, $f16 +/* 243C0 800237C0 0C00D3D8 */ jal _nsqrtf +/* 243C4 800237C4 46083300 */ add.s $f12, $f6, $f8 +/* 243C8 800237C8 44807000 */ mtc1 $zero, $f14 +/* 243CC 800237CC C7B20034 */ lwc1 $f18, 0x34($sp) +/* 243D0 800237D0 8FA40050 */ lw $a0, 0x50($sp) +/* 243D4 800237D4 460E0032 */ c.eq.s $f0, $f14 +/* 243D8 800237D8 C7B00028 */ lwc1 $f16, 0x28($sp) +/* 243DC 800237DC 3C013F80 */ lui $at, (0x3F800000 >> 16) +/* 243E0 800237E0 C7A40040 */ lwc1 $f4, 0x40($sp) +/* 243E4 800237E4 45000004 */ bc1f .L800237F8 +/* 243E8 800237E8 46009187 */ neg.s $f6, $f18 +/* 243EC 800237EC 44816000 */ mtc1 $at, $f12 +/* 243F0 800237F0 10000004 */ b .L80023804 +/* 243F4 800237F4 46007086 */ mov.s $f2, $f14 +.L800237F8: +/* 243F8 800237F8 46008287 */ neg.s $f10, $f16 +/* 243FC 800237FC 46002303 */ div.s $f12, $f4, $f0 +/* 24400 80023800 46005083 */ div.s $f2, $f10, $f0 +.L80023804: +/* 24404 80023804 46121202 */ mul.s $f8, $f2, $f18 +/* 24408 80023808 E4860008 */ swc1 $f6, 0x8($a0) +/* 2440C 8002380C 46001187 */ neg.s $f6, $f2 +/* 24410 80023810 46141282 */ mul.s $f10, $f2, $f20 +/* 24414 80023814 E4940000 */ swc1 $f20, 0x0($a0) +/* 24418 80023818 E48E0004 */ swc1 $f14, 0x4($a0) +/* 2441C 8002381C 46126102 */ mul.s $f4, $f12, $f18 +/* 24420 80023820 E4880010 */ swc1 $f8, 0x10($a0) +/* 24424 80023824 E48E000C */ swc1 $f14, 0xC($a0) +/* 24428 80023828 46146202 */ mul.s $f8, $f12, $f20 +/* 2442C 8002382C E48C0014 */ swc1 $f12, 0x14($a0) +/* 24430 80023830 E48A0018 */ swc1 $f10, 0x18($a0) +/* 24434 80023834 E48E001C */ swc1 $f14, 0x1C($a0) +/* 24438 80023838 E4840020 */ swc1 $f4, 0x20($a0) +/* 2443C 8002383C E4860024 */ swc1 $f6, 0x24($a0) +/* 24440 80023840 E48E002C */ swc1 $f14, 0x2C($a0) +/* 24444 80023844 E4880028 */ swc1 $f8, 0x28($a0) +/* 24448 80023848 C7AA0054 */ lwc1 $f10, 0x54($sp) +/* 2444C 8002384C 3C013F80 */ lui $at, (0x3F800000 >> 16) +/* 24450 80023850 44814000 */ mtc1 $at, $f8 +/* 24454 80023854 E48A0030 */ swc1 $f10, 0x30($a0) +/* 24458 80023858 C7A40058 */ lwc1 $f4, 0x58($sp) +/* 2445C 8002385C E4840034 */ swc1 $f4, 0x34($a0) +/* 24460 80023860 C7A6005C */ lwc1 $f6, 0x5C($sp) +/* 24464 80023864 E488003C */ swc1 $f8, 0x3C($a0) +/* 24468 80023868 E4860038 */ swc1 $f6, 0x38($a0) +/* 2446C 8002386C 8FBF001C */ lw $ra, 0x1C($sp) +/* 24470 80023870 D7B40010 */ ldc1 $f20, 0x10($sp) +/* 24474 80023874 03E00008 */ jr $ra +/* 24478 80023878 27BD0050 */ addiu $sp, $sp, 0x50 + +glabel func_8002387C +/* 2447C 8002387C 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 24480 80023880 44856000 */ mtc1 $a1, $f12 +/* 24484 80023884 44867000 */ mtc1 $a2, $f14 +/* 24488 80023888 AFBF0024 */ sw $ra, 0x24($sp) +/* 2448C 8002388C AFA40028 */ sw $a0, 0x28($sp) +/* 24490 80023890 AFA70034 */ sw $a3, 0x34($sp) +/* 24494 80023894 C7A40038 */ lwc1 $f4, 0x38($sp) +/* 24498 80023898 C7A6003C */ lwc1 $f6, 0x3C($sp) +/* 2449C 8002389C C7A80040 */ lwc1 $f8, 0x40($sp) +/* 244A0 800238A0 3C048009 */ lui $a0, %hi(D_8008D030) +/* 244A4 800238A4 44056000 */ mfc1 $a1, $f12 +/* 244A8 800238A8 44067000 */ mfc1 $a2, $f14 +/* 244AC 800238AC 2484D030 */ addiu $a0, $a0, %lo(D_8008D030) +/* 244B0 800238B0 8FA70034 */ lw $a3, 0x34($sp) +/* 244B4 800238B4 E7A40010 */ swc1 $f4, 0x10($sp) +/* 244B8 800238B8 E7A60014 */ swc1 $f6, 0x14($sp) +/* 244BC 800238BC 0C008DC7 */ jal func_8002371C +/* 244C0 800238C0 E7A80018 */ swc1 $f8, 0x18($sp) +/* 244C4 800238C4 3C048009 */ lui $a0, %hi(D_8008D030) +/* 244C8 800238C8 2484D030 */ addiu $a0, $a0, %lo(D_8008D030) +/* 244CC 800238CC 0C00D480 */ jal guMtxF2L +/* 244D0 800238D0 8FA50028 */ lw $a1, 0x28($sp) +/* 244D4 800238D4 8FBF0024 */ lw $ra, 0x24($sp) +/* 244D8 800238D8 27BD0028 */ addiu $sp, $sp, 0x28 +/* 244DC 800238DC 03E00008 */ jr $ra +/* 244E0 800238E0 00000000 */ nop + +glabel func_800238E4 +/* 244E4 800238E4 44857000 */ mtc1 $a1, $f14 +/* 244E8 800238E8 44876000 */ mtc1 $a3, $f12 +/* 244EC 800238EC AFA60008 */ sw $a2, 0x8($sp) +/* 244F0 800238F0 C4840004 */ lwc1 $f4, 0x4($a0) +/* 244F4 800238F4 C7A60008 */ lwc1 $f6, 0x8($sp) +/* 244F8 800238F8 C48A0000 */ lwc1 $f10, 0x0($a0) +/* 244FC 800238FC 8FAE0010 */ lw $t6, 0x10($sp) +/* 24500 80023900 46062202 */ mul.s $f8, $f4, $f6 +/* 24504 80023904 C4840008 */ lwc1 $f4, 0x8($a0) +/* 24508 80023908 460E5402 */ mul.s $f16, $f10, $f14 +/* 2450C 8002390C 46088480 */ add.s $f18, $f16, $f8 +/* 24510 80023910 460C2282 */ mul.s $f10, $f4, $f12 +/* 24514 80023914 46125400 */ add.s $f16, $f10, $f18 +/* 24518 80023918 E5D00000 */ swc1 $f16, 0x0($t6) +/* 2451C 8002391C C4880014 */ lwc1 $f8, 0x14($a0) +/* 24520 80023920 C48A0010 */ lwc1 $f10, 0x10($a0) +/* 24524 80023924 8FAF0014 */ lw $t7, 0x14($sp) +/* 24528 80023928 46064102 */ mul.s $f4, $f8, $f6 +/* 2452C 8002392C C4880018 */ lwc1 $f8, 0x18($a0) +/* 24530 80023930 460E5482 */ mul.s $f18, $f10, $f14 +/* 24534 80023934 46049400 */ add.s $f16, $f18, $f4 +/* 24538 80023938 460C4282 */ mul.s $f10, $f8, $f12 +/* 2453C 8002393C 46105480 */ add.s $f18, $f10, $f16 +/* 24540 80023940 E5F20000 */ swc1 $f18, 0x0($t7) +/* 24544 80023944 C4840024 */ lwc1 $f4, 0x24($a0) +/* 24548 80023948 C48A0020 */ lwc1 $f10, 0x20($a0) +/* 2454C 8002394C 8FB80018 */ lw $t8, 0x18($sp) +/* 24550 80023950 46062202 */ mul.s $f8, $f4, $f6 +/* 24554 80023954 C4840028 */ lwc1 $f4, 0x28($a0) +/* 24558 80023958 460E5402 */ mul.s $f16, $f10, $f14 +/* 2455C 8002395C 46088480 */ add.s $f18, $f16, $f8 +/* 24560 80023960 460C2182 */ mul.s $f6, $f4, $f12 +/* 24564 80023964 46123280 */ add.s $f10, $f6, $f18 +/* 24568 80023968 E70A0000 */ swc1 $f10, 0x0($t8) +/* 2456C 8002396C 03E00008 */ jr $ra +/* 24570 80023970 00000000 */ nop + +glabel func_80023974 +/* 24574 80023974 44857000 */ mtc1 $a1, $f14 +/* 24578 80023978 44876000 */ mtc1 $a3, $f12 +/* 2457C 8002397C AFA60008 */ sw $a2, 0x8($sp) +/* 24580 80023980 C4840010 */ lwc1 $f4, 0x10($a0) +/* 24584 80023984 C7A60008 */ lwc1 $f6, 0x8($sp) +/* 24588 80023988 C48A0000 */ lwc1 $f10, 0x0($a0) +/* 2458C 8002398C 8FAE0010 */ lw $t6, 0x10($sp) +/* 24590 80023990 46062202 */ mul.s $f8, $f4, $f6 +/* 24594 80023994 C4840020 */ lwc1 $f4, 0x20($a0) +/* 24598 80023998 460E5402 */ mul.s $f16, $f10, $f14 +/* 2459C 8002399C 46088480 */ add.s $f18, $f16, $f8 +/* 245A0 800239A0 460C2282 */ mul.s $f10, $f4, $f12 +/* 245A4 800239A4 46125400 */ add.s $f16, $f10, $f18 +/* 245A8 800239A8 E5D00000 */ swc1 $f16, 0x0($t6) +/* 245AC 800239AC C4880014 */ lwc1 $f8, 0x14($a0) +/* 245B0 800239B0 C48A0004 */ lwc1 $f10, 0x4($a0) +/* 245B4 800239B4 8FAF0014 */ lw $t7, 0x14($sp) +/* 245B8 800239B8 46064102 */ mul.s $f4, $f8, $f6 +/* 245BC 800239BC C4880024 */ lwc1 $f8, 0x24($a0) +/* 245C0 800239C0 460E5482 */ mul.s $f18, $f10, $f14 +/* 245C4 800239C4 46049400 */ add.s $f16, $f18, $f4 +/* 245C8 800239C8 460C4282 */ mul.s $f10, $f8, $f12 +/* 245CC 800239CC 46105480 */ add.s $f18, $f10, $f16 +/* 245D0 800239D0 E5F20000 */ swc1 $f18, 0x0($t7) +/* 245D4 800239D4 C4840018 */ lwc1 $f4, 0x18($a0) +/* 245D8 800239D8 C48A0008 */ lwc1 $f10, 0x8($a0) +/* 245DC 800239DC 8FB80018 */ lw $t8, 0x18($sp) +/* 245E0 800239E0 46062202 */ mul.s $f8, $f4, $f6 +/* 245E4 800239E4 C4840028 */ lwc1 $f4, 0x28($a0) +/* 245E8 800239E8 460E5402 */ mul.s $f16, $f10, $f14 +/* 245EC 800239EC 46088480 */ add.s $f18, $f16, $f8 +/* 245F0 800239F0 460C2182 */ mul.s $f6, $f4, $f12 +/* 245F4 800239F4 46123280 */ add.s $f10, $f6, $f18 +/* 245F8 800239F8 46005407 */ neg.s $f16, $f10 +/* 245FC 800239FC E7100000 */ swc1 $f16, 0x0($t8) +/* 24600 80023A00 03E00008 */ jr $ra +/* 24604 80023A04 00000000 */ nop + +glabel func_80023A08 +/* 24608 80023A08 27BDFFB0 */ addiu $sp, $sp, -0x50 +/* 2460C 80023A0C F7B40010 */ sdc1 $f20, 0x10($sp) +/* 24610 80023A10 4485A000 */ mtc1 $a1, $f20 +/* 24614 80023A14 44877000 */ mtc1 $a3, $f14 +/* 24618 80023A18 AFBF0024 */ sw $ra, 0x24($sp) +/* 2461C 80023A1C F7B60018 */ sdc1 $f22, 0x18($sp) +/* 24620 80023A20 AFA60058 */ sw $a2, 0x58($sp) +/* 24624 80023A24 4614A102 */ mul.s $f4, $f20, $f20 +/* 24628 80023A28 AFA40050 */ sw $a0, 0x50($sp) +/* 2462C 80023A2C E7AE005C */ swc1 $f14, 0x5C($sp) +/* 24630 80023A30 460E7182 */ mul.s $f6, $f14, $f14 +/* 24634 80023A34 0C00D3D8 */ jal _nsqrtf +/* 24638 80023A38 46062300 */ add.s $f12, $f4, $f6 +/* 2463C 80023A3C 44801000 */ mtc1 $zero, $f2 +/* 24640 80023A40 46000406 */ mov.s $f16, $f0 +/* 24644 80023A44 46108182 */ mul.s $f6, $f16, $f16 +/* 24648 80023A48 46020032 */ c.eq.s $f0, $f2 +/* 2464C 80023A4C 8FA40050 */ lw $a0, 0x50($sp) +/* 24650 80023A50 C7AE005C */ lwc1 $f14, 0x5C($sp) +/* 24654 80023A54 C7A80058 */ lwc1 $f8, 0x58($sp) +/* 24658 80023A58 45030005 */ bc1tl .L80023A70 +/* 2465C 80023A5C 4608103E */ c.le.s $f2, $f8 +/* 24660 80023A60 4600A583 */ div.s $f22, $f20, $f0 +/* 24664 80023A64 1000000F */ b .L80023AA4 +/* 24668 80023A68 46007483 */ div.s $f18, $f14, $f0 +/* 2466C 80023A6C 4608103E */ c.le.s $f2, $f8 +.L80023A70: +/* 24670 80023A70 46001586 */ mov.s $f22, $f2 +/* 24674 80023A74 3C01BFF0 */ lui $at, (0xBFF00000 >> 16) +/* 24678 80023A78 45020007 */ bc1fl .L80023A98 +/* 2467C 80023A7C 44812800 */ mtc1 $at, $f5 +/* 24680 80023A80 3C013FF0 */ lui $at, (0x3FF00000 >> 16) +/* 24684 80023A84 44815800 */ mtc1 $at, $f11 +/* 24688 80023A88 44805000 */ mtc1 $zero, $f10 +/* 2468C 80023A8C 10000005 */ b .L80023AA4 +/* 24690 80023A90 462054A0 */ cvt.s.d $f18, $f10 +/* 24694 80023A94 44812800 */ mtc1 $at, $f5 +.L80023A98: +/* 24698 80023A98 44802000 */ mtc1 $zero, $f4 +/* 2469C 80023A9C 00000000 */ nop +/* 246A0 80023AA0 462024A0 */ cvt.s.d $f18, $f4 +.L80023AA4: +/* 246A4 80023AA4 C7A00058 */ lwc1 $f0, 0x58($sp) +/* 246A8 80023AA8 AFA40050 */ sw $a0, 0x50($sp) +/* 246AC 80023AAC E7B00034 */ swc1 $f16, 0x34($sp) +/* 246B0 80023AB0 46000202 */ mul.s $f8, $f0, $f0 +/* 246B4 80023AB4 E7B2003C */ swc1 $f18, 0x3C($sp) +/* 246B8 80023AB8 0C00D3D8 */ jal _nsqrtf +/* 246BC 80023ABC 46083300 */ add.s $f12, $f6, $f8 +/* 246C0 80023AC0 C7AA0034 */ lwc1 $f10, 0x34($sp) +/* 246C4 80023AC4 44801000 */ mtc1 $zero, $f2 +/* 246C8 80023AC8 3C013F80 */ lui $at, (0x3F800000 >> 16) +/* 246CC 80023ACC 46005103 */ div.s $f4, $f10, $f0 +/* 246D0 80023AD0 C7B2003C */ lwc1 $f18, 0x3C($sp) +/* 246D4 80023AD4 44813000 */ mtc1 $at, $f6 +/* 246D8 80023AD8 8FA40050 */ lw $a0, 0x50($sp) +/* 246DC 80023ADC 4600B387 */ neg.s $f14, $f22 +/* 246E0 80023AE0 46041302 */ mul.s $f12, $f2, $f4 +/* 246E4 80023AE4 E7A4002C */ swc1 $f4, 0x2C($sp) +/* 246E8 80023AE8 46123202 */ mul.s $f8, $f6, $f18 +/* 246EC 80023AEC 00000000 */ nop +/* 246F0 80023AF0 46166282 */ mul.s $f10, $f12, $f22 +/* 246F4 80023AF4 460A4100 */ add.s $f4, $f8, $f10 +/* 246F8 80023AF8 44815000 */ mtc1 $at, $f10 +/* 246FC 80023AFC E4840000 */ swc1 $f4, 0x0($a0) +/* 24700 80023B00 C7A60058 */ lwc1 $f6, 0x58($sp) +/* 24704 80023B04 E482000C */ swc1 $f2, 0xC($a0) +/* 24708 80023B08 46003503 */ div.s $f20, $f6, $f0 +/* 2470C 80023B0C 46141202 */ mul.s $f8, $f2, $f20 +/* 24710 80023B10 00000000 */ nop +/* 24714 80023B14 460A7102 */ mul.s $f4, $f14, $f10 +/* 24718 80023B18 44815000 */ mtc1 $at, $f10 +/* 2471C 80023B1C 3C018000 */ lui $at, (0x80000000 >> 16) +/* 24720 80023B20 46126182 */ mul.s $f6, $f12, $f18 +/* 24724 80023B24 E4880004 */ swc1 $f8, 0x4($a0) +/* 24728 80023B28 46062200 */ add.s $f8, $f4, $f6 +/* 2472C 80023B2C 44813000 */ mtc1 $at, $f6 +/* 24730 80023B30 3C013F80 */ lui $at, (0x3F800000 >> 16) +/* 24734 80023B34 E4880008 */ swc1 $f8, 0x8($a0) +/* 24738 80023B38 C7A4002C */ lwc1 $f4, 0x2C($sp) +/* 2473C 80023B3C E482001C */ swc1 $f2, 0x1C($a0) +/* 24740 80023B40 46045402 */ mul.s $f16, $f10, $f4 +/* 24744 80023B44 00000000 */ nop +/* 24748 80023B48 46123202 */ mul.s $f8, $f6, $f18 +/* 2474C 80023B4C 44813000 */ mtc1 $at, $f6 +/* 24750 80023B50 3C018000 */ lui $at, (0x80000000 >> 16) +/* 24754 80023B54 46168282 */ mul.s $f10, $f16, $f22 +/* 24758 80023B58 460A4100 */ add.s $f4, $f8, $f10 +/* 2475C 80023B5C 46143202 */ mul.s $f8, $f6, $f20 +/* 24760 80023B60 44815000 */ mtc1 $at, $f10 +/* 24764 80023B64 3C013F80 */ lui $at, (0x3F800000 >> 16) +/* 24768 80023B68 E4840010 */ swc1 $f4, 0x10($a0) +/* 2476C 80023B6C 460E5102 */ mul.s $f4, $f10, $f14 +/* 24770 80023B70 00000000 */ nop +/* 24774 80023B74 46128182 */ mul.s $f6, $f16, $f18 +/* 24778 80023B78 E4880014 */ swc1 $f8, 0x14($a0) +/* 2477C 80023B7C 4616A282 */ mul.s $f10, $f20, $f22 +/* 24780 80023B80 46062200 */ add.s $f8, $f4, $f6 +/* 24784 80023B84 E48A0020 */ swc1 $f10, 0x20($a0) +/* 24788 80023B88 44815000 */ mtc1 $at, $f10 +/* 2478C 80023B8C E4880018 */ swc1 $f8, 0x18($a0) +/* 24790 80023B90 C7A4002C */ lwc1 $f4, 0x2C($sp) +/* 24794 80023B94 4612A202 */ mul.s $f8, $f20, $f18 +/* 24798 80023B98 E482002C */ swc1 $f2, 0x2C($a0) +/* 2479C 80023B9C 46002187 */ neg.s $f6, $f4 +/* 247A0 80023BA0 E4820030 */ swc1 $f2, 0x30($a0) +/* 247A4 80023BA4 E4860024 */ swc1 $f6, 0x24($a0) +/* 247A8 80023BA8 E4820034 */ swc1 $f2, 0x34($a0) +/* 247AC 80023BAC E4820038 */ swc1 $f2, 0x38($a0) +/* 247B0 80023BB0 E4880028 */ swc1 $f8, 0x28($a0) +/* 247B4 80023BB4 E48A003C */ swc1 $f10, 0x3C($a0) +/* 247B8 80023BB8 8FBF0024 */ lw $ra, 0x24($sp) +/* 247BC 80023BBC D7B40010 */ ldc1 $f20, 0x10($sp) +/* 247C0 80023BC0 D7B60018 */ ldc1 $f22, 0x18($sp) +/* 247C4 80023BC4 03E00008 */ jr $ra +/* 247C8 80023BC8 27BD0050 */ addiu $sp, $sp, 0x50 + +glabel func_80023BCC +/* 247CC 80023BCC 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 247D0 80023BD0 44856000 */ mtc1 $a1, $f12 +/* 247D4 80023BD4 44867000 */ mtc1 $a2, $f14 +/* 247D8 80023BD8 AFBF0014 */ sw $ra, 0x14($sp) +/* 247DC 80023BDC AFA40018 */ sw $a0, 0x18($sp) +/* 247E0 80023BE0 AFA70024 */ sw $a3, 0x24($sp) +/* 247E4 80023BE4 3C048009 */ lui $a0, %hi(D_8008D030) +/* 247E8 80023BE8 44056000 */ mfc1 $a1, $f12 +/* 247EC 80023BEC 44067000 */ mfc1 $a2, $f14 +/* 247F0 80023BF0 2484D030 */ addiu $a0, $a0, %lo(D_8008D030) +/* 247F4 80023BF4 0C008E82 */ jal func_80023A08 +/* 247F8 80023BF8 8FA70024 */ lw $a3, 0x24($sp) +/* 247FC 80023BFC 3C048009 */ lui $a0, %hi(D_8008D030) +/* 24800 80023C00 2484D030 */ addiu $a0, $a0, %lo(D_8008D030) +/* 24804 80023C04 0C00D480 */ jal guMtxF2L +/* 24808 80023C08 8FA50018 */ lw $a1, 0x18($sp) +/* 2480C 80023C0C 8FBF0014 */ lw $ra, 0x14($sp) +/* 24810 80023C10 27BD0018 */ addiu $sp, $sp, 0x18 +/* 24814 80023C14 03E00008 */ jr $ra +/* 24818 80023C18 00000000 */ nop + +glabel func_80023C1C +/* 2481C 80023C1C 27BDFFB0 */ addiu $sp, $sp, -0x50 +/* 24820 80023C20 AFB00020 */ sw $s0, 0x20($sp) +/* 24824 80023C24 F7B40018 */ sdc1 $f20, 0x18($sp) +/* 24828 80023C28 3C018005 */ lui $at, %hi(D_8004D74C) +/* 2482C 80023C2C C420D74C */ lwc1 $f0, %lo(D_8004D74C)($at) +/* 24830 80023C30 C7B40060 */ lwc1 $f20, 0x60($sp) +/* 24834 80023C34 00808025 */ or $s0, $a0, $zero +/* 24838 80023C38 AFBF0024 */ sw $ra, 0x24($sp) +/* 2483C 80023C3C AFA50054 */ sw $a1, 0x54($sp) +/* 24840 80023C40 AFA60058 */ sw $a2, 0x58($sp) +/* 24844 80023C44 AFA7005C */ sw $a3, 0x5C($sp) +/* 24848 80023C48 4600A502 */ mul.s $f20, $f20, $f0 +/* 2484C 80023C4C C7A40064 */ lwc1 $f4, 0x64($sp) +/* 24850 80023C50 C7A80068 */ lwc1 $f8, 0x68($sp) +/* 24854 80023C54 46002182 */ mul.s $f6, $f4, $f0 +/* 24858 80023C58 00000000 */ nop +/* 2485C 80023C5C 46004282 */ mul.s $f10, $f8, $f0 +/* 24860 80023C60 4600A306 */ mov.s $f12, $f20 +/* 24864 80023C64 E7A60064 */ swc1 $f6, 0x64($sp) +/* 24868 80023C68 0C00D5A0 */ jal sinf +/* 2486C 80023C6C E7AA0068 */ swc1 $f10, 0x68($sp) +/* 24870 80023C70 E7A0004C */ swc1 $f0, 0x4C($sp) +/* 24874 80023C74 0C00D87C */ jal cosf +/* 24878 80023C78 4600A306 */ mov.s $f12, $f20 +/* 2487C 80023C7C 46000506 */ mov.s $f20, $f0 +/* 24880 80023C80 0C00D5A0 */ jal sinf +/* 24884 80023C84 C7AC0064 */ lwc1 $f12, 0x64($sp) +/* 24888 80023C88 C7AC0064 */ lwc1 $f12, 0x64($sp) +/* 2488C 80023C8C 0C00D87C */ jal cosf +/* 24890 80023C90 E7A00048 */ swc1 $f0, 0x48($sp) +/* 24894 80023C94 C7AC0068 */ lwc1 $f12, 0x68($sp) +/* 24898 80023C98 0C00D5A0 */ jal sinf +/* 2489C 80023C9C E7A0003C */ swc1 $f0, 0x3C($sp) +/* 248A0 80023CA0 C7AC0068 */ lwc1 $f12, 0x68($sp) +/* 248A4 80023CA4 0C00D87C */ jal cosf +/* 248A8 80023CA8 E7A00044 */ swc1 $f0, 0x44($sp) +/* 248AC 80023CAC C7B00044 */ lwc1 $f16, 0x44($sp) +/* 248B0 80023CB0 C7A4004C */ lwc1 $f4, 0x4C($sp) +/* 248B4 80023CB4 C7A2003C */ lwc1 $f2, 0x3C($sp) +/* 248B8 80023CB8 C7AE0048 */ lwc1 $f14, 0x48($sp) +/* 248BC 80023CBC 46048302 */ mul.s $f12, $f16, $f4 +/* 248C0 80023CC0 C7B2006C */ lwc1 $f18, 0x6C($sp) +/* 248C4 80023CC4 3C013F80 */ lui $at, (0x3F800000 >> 16) +/* 248C8 80023CC8 46020182 */ mul.s $f6, $f0, $f2 +/* 248CC 80023CCC 00000000 */ nop +/* 248D0 80023CD0 460E6202 */ mul.s $f8, $f12, $f14 +/* 248D4 80023CD4 46083280 */ add.s $f10, $f6, $f8 +/* 248D8 80023CD8 46125102 */ mul.s $f4, $f10, $f18 +/* 248DC 80023CDC 46007287 */ neg.s $f10, $f14 +/* 248E0 80023CE0 46148182 */ mul.s $f6, $f16, $f20 +/* 248E4 80023CE4 E6040000 */ swc1 $f4, 0x0($s0) +/* 248E8 80023CE8 46123202 */ mul.s $f8, $f6, $f18 +/* 248EC 80023CEC E6080004 */ swc1 $f8, 0x4($s0) +/* 248F0 80023CF0 E7AA0034 */ swc1 $f10, 0x34($sp) +/* 248F4 80023CF4 C7A40034 */ lwc1 $f4, 0x34($sp) +/* 248F8 80023CF8 46002182 */ mul.s $f6, $f4, $f0 +/* 248FC 80023CFC 00000000 */ nop +/* 24900 80023D00 46026202 */ mul.s $f8, $f12, $f2 +/* 24904 80023D04 46083280 */ add.s $f10, $f6, $f8 +/* 24908 80023D08 44803000 */ mtc1 $zero, $f6 +/* 2490C 80023D0C 46008207 */ neg.s $f8, $f16 +/* 24910 80023D10 46125102 */ mul.s $f4, $f10, $f18 +/* 24914 80023D14 E606000C */ swc1 $f6, 0xC($s0) +/* 24918 80023D18 44809000 */ mtc1 $zero, $f18 +/* 2491C 80023D1C E6040008 */ swc1 $f4, 0x8($s0) +/* 24920 80023D20 C7AA004C */ lwc1 $f10, 0x4C($sp) +/* 24924 80023D24 E7A80030 */ swc1 $f8, 0x30($sp) +/* 24928 80023D28 C7A60030 */ lwc1 $f6, 0x30($sp) +/* 2492C 80023D2C 460A0102 */ mul.s $f4, $f0, $f10 +/* 24930 80023D30 E7A4002C */ swc1 $f4, 0x2C($sp) +/* 24934 80023D34 46023202 */ mul.s $f8, $f6, $f2 +/* 24938 80023D38 C7AA002C */ lwc1 $f10, 0x2C($sp) +/* 2493C 80023D3C 460E5102 */ mul.s $f4, $f10, $f14 +/* 24940 80023D40 C7AA0070 */ lwc1 $f10, 0x70($sp) +/* 24944 80023D44 46044180 */ add.s $f6, $f8, $f4 +/* 24948 80023D48 460A3202 */ mul.s $f8, $f6, $f10 +/* 2494C 80023D4C E6080010 */ swc1 $f8, 0x10($s0) +/* 24950 80023D50 46140102 */ mul.s $f4, $f0, $f20 +/* 24954 80023D54 C7B00070 */ lwc1 $f16, 0x70($sp) +/* 24958 80023D58 C7AC0074 */ lwc1 $f12, 0x74($sp) +/* 2495C 80023D5C 46102182 */ mul.s $f6, $f4, $f16 +/* 24960 80023D60 E6060014 */ swc1 $f6, 0x14($s0) +/* 24964 80023D64 C7A80034 */ lwc1 $f8, 0x34($sp) +/* 24968 80023D68 C7AA0030 */ lwc1 $f10, 0x30($sp) +/* 2496C 80023D6C C7A6002C */ lwc1 $f6, 0x2C($sp) +/* 24970 80023D70 E612001C */ swc1 $f18, 0x1C($s0) +/* 24974 80023D74 46085102 */ mul.s $f4, $f10, $f8 +/* 24978 80023D78 00000000 */ nop +/* 2497C 80023D7C 46023282 */ mul.s $f10, $f6, $f2 +/* 24980 80023D80 460A2200 */ add.s $f8, $f4, $f10 +/* 24984 80023D84 46104182 */ mul.s $f6, $f8, $f16 +/* 24988 80023D88 00000000 */ nop +/* 2498C 80023D8C 460EA102 */ mul.s $f4, $f20, $f14 +/* 24990 80023D90 E6060018 */ swc1 $f6, 0x18($s0) +/* 24994 80023D94 460C2282 */ mul.s $f10, $f4, $f12 +/* 24998 80023D98 E60A0020 */ swc1 $f10, 0x20($s0) +/* 2499C 80023D9C C7A8004C */ lwc1 $f8, 0x4C($sp) +/* 249A0 80023DA0 E612002C */ swc1 $f18, 0x2C($s0) +/* 249A4 80023DA4 46004187 */ neg.s $f6, $f8 +/* 249A8 80023DA8 460C3102 */ mul.s $f4, $f6, $f12 +/* 249AC 80023DAC 00000000 */ nop +/* 249B0 80023DB0 4602A282 */ mul.s $f10, $f20, $f2 +/* 249B4 80023DB4 E6040024 */ swc1 $f4, 0x24($s0) +/* 249B8 80023DB8 460C5202 */ mul.s $f8, $f10, $f12 +/* 249BC 80023DBC E6080028 */ swc1 $f8, 0x28($s0) +/* 249C0 80023DC0 C7A60054 */ lwc1 $f6, 0x54($sp) +/* 249C4 80023DC4 44814000 */ mtc1 $at, $f8 +/* 249C8 80023DC8 E6060030 */ swc1 $f6, 0x30($s0) +/* 249CC 80023DCC C7A40058 */ lwc1 $f4, 0x58($sp) +/* 249D0 80023DD0 E6040034 */ swc1 $f4, 0x34($s0) +/* 249D4 80023DD4 C7AA005C */ lwc1 $f10, 0x5C($sp) +/* 249D8 80023DD8 E608003C */ swc1 $f8, 0x3C($s0) +/* 249DC 80023DDC E60A0038 */ swc1 $f10, 0x38($s0) +/* 249E0 80023DE0 8FBF0024 */ lw $ra, 0x24($sp) +/* 249E4 80023DE4 D7B40018 */ ldc1 $f20, 0x18($sp) +/* 249E8 80023DE8 8FB00020 */ lw $s0, 0x20($sp) +/* 249EC 80023DEC 03E00008 */ jr $ra +/* 249F0 80023DF0 27BD0050 */ addiu $sp, $sp, 0x50 + +glabel func_80023DF4 +/* 249F4 80023DF4 44856000 */ mtc1 $a1, $f12 +/* 249F8 80023DF8 44867000 */ mtc1 $a2, $f14 +/* 249FC 80023DFC AFA7000C */ sw $a3, 0xC($sp) +/* 24A00 80023E00 C4840000 */ lwc1 $f4, 0x0($a0) +/* 24A04 80023E04 C4880004 */ lwc1 $f8, 0x4($a0) +/* 24A08 80023E08 C4900008 */ lwc1 $f16, 0x8($a0) +/* 24A0C 80023E0C 460C2182 */ mul.s $f6, $f4, $f12 +/* 24A10 80023E10 C4840010 */ lwc1 $f4, 0x10($a0) +/* 24A14 80023E14 460C4282 */ mul.s $f10, $f8, $f12 +/* 24A18 80023E18 C4880014 */ lwc1 $f8, 0x14($a0) +/* 24A1C 80023E1C 460C8482 */ mul.s $f18, $f16, $f12 +/* 24A20 80023E20 E4860000 */ swc1 $f6, 0x0($a0) +/* 24A24 80023E24 C4900018 */ lwc1 $f16, 0x18($a0) +/* 24A28 80023E28 460E2182 */ mul.s $f6, $f4, $f14 +/* 24A2C 80023E2C E48A0004 */ swc1 $f10, 0x4($a0) +/* 24A30 80023E30 C4840020 */ lwc1 $f4, 0x20($a0) +/* 24A34 80023E34 460E4282 */ mul.s $f10, $f8, $f14 +/* 24A38 80023E38 E4920008 */ swc1 $f18, 0x8($a0) +/* 24A3C 80023E3C 460E8482 */ mul.s $f18, $f16, $f14 +/* 24A40 80023E40 E4860010 */ swc1 $f6, 0x10($a0) +/* 24A44 80023E44 E48A0014 */ swc1 $f10, 0x14($a0) +/* 24A48 80023E48 C48A0024 */ lwc1 $f10, 0x24($a0) +/* 24A4C 80023E4C E4920018 */ swc1 $f18, 0x18($a0) +/* 24A50 80023E50 C7A6000C */ lwc1 $f6, 0xC($sp) +/* 24A54 80023E54 46062202 */ mul.s $f8, $f4, $f6 +/* 24A58 80023E58 C4840028 */ lwc1 $f4, 0x28($a0) +/* 24A5C 80023E5C E4880020 */ swc1 $f8, 0x20($a0) +/* 24A60 80023E60 C7B0000C */ lwc1 $f16, 0xC($sp) +/* 24A64 80023E64 46105482 */ mul.s $f18, $f10, $f16 +/* 24A68 80023E68 E4920024 */ swc1 $f18, 0x24($a0) +/* 24A6C 80023E6C C7A6000C */ lwc1 $f6, 0xC($sp) +/* 24A70 80023E70 46062202 */ mul.s $f8, $f4, $f6 +/* 24A74 80023E74 E4880028 */ swc1 $f8, 0x28($a0) +/* 24A78 80023E78 03E00008 */ jr $ra +/* 24A7C 80023E7C 00000000 */ nop + +glabel func_80023E80 +/* 24A80 80023E80 27BDFF80 */ addiu $sp, $sp, -0x80 +/* 24A84 80023E84 F7B80018 */ sdc1 $f24, 0x18($sp) +/* 24A88 80023E88 F7B60010 */ sdc1 $f22, 0x10($sp) +/* 24A8C 80023E8C F7B40008 */ sdc1 $f20, 0x8($sp) +/* 24A90 80023E90 C4840030 */ lwc1 $f4, 0x30($a0) +/* 24A94 80023E94 C4800000 */ lwc1 $f0, 0x0($a0) +/* 24A98 80023E98 C4820004 */ lwc1 $f2, 0x4($a0) +/* 24A9C 80023E9C C48C0008 */ lwc1 $f12, 0x8($a0) +/* 24AA0 80023EA0 C48E0010 */ lwc1 $f14, 0x10($a0) +/* 24AA4 80023EA4 C4900014 */ lwc1 $f16, 0x14($a0) +/* 24AA8 80023EA8 C4920018 */ lwc1 $f18, 0x18($a0) +/* 24AAC 80023EAC C4940020 */ lwc1 $f20, 0x20($a0) +/* 24AB0 80023EB0 C4960024 */ lwc1 $f22, 0x24($a0) +/* 24AB4 80023EB4 C4980028 */ lwc1 $f24, 0x28($a0) +/* 24AB8 80023EB8 E7A40058 */ swc1 $f4, 0x58($sp) +/* 24ABC 80023EBC C4860034 */ lwc1 $f6, 0x34($a0) +/* 24AC0 80023EC0 3C013F80 */ lui $at, (0x3F800000 >> 16) +/* 24AC4 80023EC4 E7A60054 */ swc1 $f6, 0x54($sp) +/* 24AC8 80023EC8 C4880038 */ lwc1 $f8, 0x38($a0) +/* 24ACC 80023ECC E7A80050 */ swc1 $f8, 0x50($sp) +/* 24AD0 80023ED0 C4AA0000 */ lwc1 $f10, 0x0($a1) +/* 24AD4 80023ED4 E7AA004C */ swc1 $f10, 0x4C($sp) +/* 24AD8 80023ED8 C4A40004 */ lwc1 $f4, 0x4($a1) +/* 24ADC 80023EDC E7A40048 */ swc1 $f4, 0x48($sp) +/* 24AE0 80023EE0 C4A60008 */ lwc1 $f6, 0x8($a1) +/* 24AE4 80023EE4 E7A60044 */ swc1 $f6, 0x44($sp) +/* 24AE8 80023EE8 C4A80010 */ lwc1 $f8, 0x10($a1) +/* 24AEC 80023EEC E7A80040 */ swc1 $f8, 0x40($sp) +/* 24AF0 80023EF0 C4AA0014 */ lwc1 $f10, 0x14($a1) +/* 24AF4 80023EF4 E7AA003C */ swc1 $f10, 0x3C($sp) +/* 24AF8 80023EF8 C4A40018 */ lwc1 $f4, 0x18($a1) +/* 24AFC 80023EFC E7A40038 */ swc1 $f4, 0x38($sp) +/* 24B00 80023F00 C4A60020 */ lwc1 $f6, 0x20($a1) +/* 24B04 80023F04 E7A60034 */ swc1 $f6, 0x34($sp) +/* 24B08 80023F08 C4A80024 */ lwc1 $f8, 0x24($a1) +/* 24B0C 80023F0C E7A80030 */ swc1 $f8, 0x30($sp) +/* 24B10 80023F10 C4AA0028 */ lwc1 $f10, 0x28($a1) +/* 24B14 80023F14 E7AA002C */ swc1 $f10, 0x2C($sp) +/* 24B18 80023F18 C4A40030 */ lwc1 $f4, 0x30($a1) +/* 24B1C 80023F1C C7AA004C */ lwc1 $f10, 0x4C($sp) +/* 24B20 80023F20 E7A40028 */ swc1 $f4, 0x28($sp) +/* 24B24 80023F24 C4A60034 */ lwc1 $f6, 0x34($a1) +/* 24B28 80023F28 460A0102 */ mul.s $f4, $f0, $f10 +/* 24B2C 80023F2C E7A60024 */ swc1 $f6, 0x24($sp) +/* 24B30 80023F30 C4A80038 */ lwc1 $f8, 0x38($a1) +/* 24B34 80023F34 C7A60048 */ lwc1 $f6, 0x48($sp) +/* 24B38 80023F38 E7A80020 */ swc1 $f8, 0x20($sp) +/* 24B3C 80023F3C 46067202 */ mul.s $f8, $f14, $f6 +/* 24B40 80023F40 C7A60044 */ lwc1 $f6, 0x44($sp) +/* 24B44 80023F44 46082280 */ add.s $f10, $f4, $f8 +/* 24B48 80023F48 4606A102 */ mul.s $f4, $f20, $f6 +/* 24B4C 80023F4C 46045200 */ add.s $f8, $f10, $f4 +/* 24B50 80023F50 E4C80000 */ swc1 $f8, 0x0($a2) +/* 24B54 80023F54 C7A60040 */ lwc1 $f6, 0x40($sp) +/* 24B58 80023F58 C7A4003C */ lwc1 $f4, 0x3C($sp) +/* 24B5C 80023F5C 46060282 */ mul.s $f10, $f0, $f6 +/* 24B60 80023F60 00000000 */ nop +/* 24B64 80023F64 46047202 */ mul.s $f8, $f14, $f4 +/* 24B68 80023F68 C7A40038 */ lwc1 $f4, 0x38($sp) +/* 24B6C 80023F6C 46085180 */ add.s $f6, $f10, $f8 +/* 24B70 80023F70 4604A282 */ mul.s $f10, $f20, $f4 +/* 24B74 80023F74 460A3200 */ add.s $f8, $f6, $f10 +/* 24B78 80023F78 E4C80010 */ swc1 $f8, 0x10($a2) +/* 24B7C 80023F7C C7A40034 */ lwc1 $f4, 0x34($sp) +/* 24B80 80023F80 C7AA0030 */ lwc1 $f10, 0x30($sp) +/* 24B84 80023F84 46040182 */ mul.s $f6, $f0, $f4 +/* 24B88 80023F88 00000000 */ nop +/* 24B8C 80023F8C 460A7202 */ mul.s $f8, $f14, $f10 +/* 24B90 80023F90 C7AA002C */ lwc1 $f10, 0x2C($sp) +/* 24B94 80023F94 46083100 */ add.s $f4, $f6, $f8 +/* 24B98 80023F98 460AA182 */ mul.s $f6, $f20, $f10 +/* 24B9C 80023F9C 46062200 */ add.s $f8, $f4, $f6 +/* 24BA0 80023FA0 E4C80020 */ swc1 $f8, 0x20($a2) +/* 24BA4 80023FA4 C7AA0028 */ lwc1 $f10, 0x28($sp) +/* 24BA8 80023FA8 C7A60024 */ lwc1 $f6, 0x24($sp) +/* 24BAC 80023FAC 460A0102 */ mul.s $f4, $f0, $f10 +/* 24BB0 80023FB0 00000000 */ nop +/* 24BB4 80023FB4 46067202 */ mul.s $f8, $f14, $f6 +/* 24BB8 80023FB8 C7A60020 */ lwc1 $f6, 0x20($sp) +/* 24BBC 80023FBC 46082280 */ add.s $f10, $f4, $f8 +/* 24BC0 80023FC0 4606A102 */ mul.s $f4, $f20, $f6 +/* 24BC4 80023FC4 C7A60058 */ lwc1 $f6, 0x58($sp) +/* 24BC8 80023FC8 46045200 */ add.s $f8, $f10, $f4 +/* 24BCC 80023FCC 46064280 */ add.s $f10, $f8, $f6 +/* 24BD0 80023FD0 E4CA0030 */ swc1 $f10, 0x30($a2) +/* 24BD4 80023FD4 C7A4004C */ lwc1 $f4, 0x4C($sp) +/* 24BD8 80023FD8 C7A60048 */ lwc1 $f6, 0x48($sp) +/* 24BDC 80023FDC 46041202 */ mul.s $f8, $f2, $f4 +/* 24BE0 80023FE0 00000000 */ nop +/* 24BE4 80023FE4 46068282 */ mul.s $f10, $f16, $f6 +/* 24BE8 80023FE8 C7A60044 */ lwc1 $f6, 0x44($sp) +/* 24BEC 80023FEC 460A4100 */ add.s $f4, $f8, $f10 +/* 24BF0 80023FF0 4606B202 */ mul.s $f8, $f22, $f6 +/* 24BF4 80023FF4 46082280 */ add.s $f10, $f4, $f8 +/* 24BF8 80023FF8 E4CA0004 */ swc1 $f10, 0x4($a2) +/* 24BFC 80023FFC C7A60040 */ lwc1 $f6, 0x40($sp) +/* 24C00 80024000 C7A8003C */ lwc1 $f8, 0x3C($sp) +/* 24C04 80024004 46061102 */ mul.s $f4, $f2, $f6 +/* 24C08 80024008 00000000 */ nop +/* 24C0C 8002400C 46088282 */ mul.s $f10, $f16, $f8 +/* 24C10 80024010 C7A80038 */ lwc1 $f8, 0x38($sp) +/* 24C14 80024014 460A2180 */ add.s $f6, $f4, $f10 +/* 24C18 80024018 4608B102 */ mul.s $f4, $f22, $f8 +/* 24C1C 8002401C 46043280 */ add.s $f10, $f6, $f4 +/* 24C20 80024020 E4CA0014 */ swc1 $f10, 0x14($a2) +/* 24C24 80024024 C7A80034 */ lwc1 $f8, 0x34($sp) +/* 24C28 80024028 C7A40030 */ lwc1 $f4, 0x30($sp) +/* 24C2C 8002402C C7A00028 */ lwc1 $f0, 0x28($sp) +/* 24C30 80024030 46081182 */ mul.s $f6, $f2, $f8 +/* 24C34 80024034 C7AE0024 */ lwc1 $f14, 0x24($sp) +/* 24C38 80024038 C7B40020 */ lwc1 $f20, 0x20($sp) +/* 24C3C 8002403C 46048282 */ mul.s $f10, $f16, $f4 +/* 24C40 80024040 C7A4002C */ lwc1 $f4, 0x2C($sp) +/* 24C44 80024044 460A3200 */ add.s $f8, $f6, $f10 +/* 24C48 80024048 4604B182 */ mul.s $f6, $f22, $f4 +/* 24C4C 8002404C 46064280 */ add.s $f10, $f8, $f6 +/* 24C50 80024050 46001102 */ mul.s $f4, $f2, $f0 +/* 24C54 80024054 00000000 */ nop +/* 24C58 80024058 460E8202 */ mul.s $f8, $f16, $f14 +/* 24C5C 8002405C E4CA0024 */ swc1 $f10, 0x24($a2) +/* 24C60 80024060 4614B282 */ mul.s $f10, $f22, $f20 +/* 24C64 80024064 46082180 */ add.s $f6, $f4, $f8 +/* 24C68 80024068 C7A80054 */ lwc1 $f8, 0x54($sp) +/* 24C6C 8002406C 460A3100 */ add.s $f4, $f6, $f10 +/* 24C70 80024070 46082180 */ add.s $f6, $f4, $f8 +/* 24C74 80024074 E4C60034 */ swc1 $f6, 0x34($a2) +/* 24C78 80024078 C7AA004C */ lwc1 $f10, 0x4C($sp) +/* 24C7C 8002407C C7A80048 */ lwc1 $f8, 0x48($sp) +/* 24C80 80024080 460A6102 */ mul.s $f4, $f12, $f10 +/* 24C84 80024084 00000000 */ nop +/* 24C88 80024088 46089182 */ mul.s $f6, $f18, $f8 +/* 24C8C 8002408C C7A80044 */ lwc1 $f8, 0x44($sp) +/* 24C90 80024090 46062280 */ add.s $f10, $f4, $f6 +/* 24C94 80024094 4608C102 */ mul.s $f4, $f24, $f8 +/* 24C98 80024098 46045180 */ add.s $f6, $f10, $f4 +/* 24C9C 8002409C E4C60008 */ swc1 $f6, 0x8($a2) +/* 24CA0 800240A0 C7A80040 */ lwc1 $f8, 0x40($sp) +/* 24CA4 800240A4 C7A4003C */ lwc1 $f4, 0x3C($sp) +/* 24CA8 800240A8 46086282 */ mul.s $f10, $f12, $f8 +/* 24CAC 800240AC 00000000 */ nop +/* 24CB0 800240B0 46049182 */ mul.s $f6, $f18, $f4 +/* 24CB4 800240B4 C7A40038 */ lwc1 $f4, 0x38($sp) +/* 24CB8 800240B8 46065200 */ add.s $f8, $f10, $f6 +/* 24CBC 800240BC 4604C282 */ mul.s $f10, $f24, $f4 +/* 24CC0 800240C0 460A4180 */ add.s $f6, $f8, $f10 +/* 24CC4 800240C4 E4C60018 */ swc1 $f6, 0x18($a2) +/* 24CC8 800240C8 C7A40034 */ lwc1 $f4, 0x34($sp) +/* 24CCC 800240CC C7AA0030 */ lwc1 $f10, 0x30($sp) +/* 24CD0 800240D0 46046202 */ mul.s $f8, $f12, $f4 +/* 24CD4 800240D4 00000000 */ nop +/* 24CD8 800240D8 460A9182 */ mul.s $f6, $f18, $f10 +/* 24CDC 800240DC C7AA002C */ lwc1 $f10, 0x2C($sp) +/* 24CE0 800240E0 46064100 */ add.s $f4, $f8, $f6 +/* 24CE4 800240E4 460AC202 */ mul.s $f8, $f24, $f10 +/* 24CE8 800240E8 46082180 */ add.s $f6, $f4, $f8 +/* 24CEC 800240EC 46006282 */ mul.s $f10, $f12, $f0 +/* 24CF0 800240F0 44800000 */ mtc1 $zero, $f0 +/* 24CF4 800240F4 460E9102 */ mul.s $f4, $f18, $f14 +/* 24CF8 800240F8 E4C60028 */ swc1 $f6, 0x28($a2) +/* 24CFC 800240FC 4614C182 */ mul.s $f6, $f24, $f20 +/* 24D00 80024100 46045200 */ add.s $f8, $f10, $f4 +/* 24D04 80024104 C7A40050 */ lwc1 $f4, 0x50($sp) +/* 24D08 80024108 E4C0000C */ swc1 $f0, 0xC($a2) +/* 24D0C 8002410C E4C0001C */ swc1 $f0, 0x1C($a2) +/* 24D10 80024110 46064280 */ add.s $f10, $f8, $f6 +/* 24D14 80024114 44813000 */ mtc1 $at, $f6 +/* 24D18 80024118 E4C0002C */ swc1 $f0, 0x2C($a2) +/* 24D1C 8002411C 46045200 */ add.s $f8, $f10, $f4 +/* 24D20 80024120 E4C6003C */ swc1 $f6, 0x3C($a2) +/* 24D24 80024124 E4C80038 */ swc1 $f8, 0x38($a2) +/* 24D28 80024128 D7B40008 */ ldc1 $f20, 0x8($sp) +/* 24D2C 8002412C D7B60010 */ ldc1 $f22, 0x10($sp) +/* 24D30 80024130 D7B80018 */ ldc1 $f24, 0x18($sp) +/* 24D34 80024134 03E00008 */ jr $ra +/* 24D38 80024138 27BD0080 */ addiu $sp, $sp, 0x80 + +glabel func_8002413C +/* 24D3C 8002413C 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 24D40 80024140 AFBF0024 */ sw $ra, 0x24($sp) +/* 24D44 80024144 AFA60048 */ sw $a2, 0x48($sp) +/* 24D48 80024148 AFA7004C */ sw $a3, 0x4C($sp) +/* 24D4C 8002414C 3C048008 */ lui $a0, %hi(D_80086E88) +/* 24D50 80024150 44056000 */ mfc1 $a1, $f12 +/* 24D54 80024154 44067000 */ mfc1 $a2, $f14 +/* 24D58 80024158 27AE0038 */ addiu $t6, $sp, 0x38 +/* 24D5C 8002415C 27AF0034 */ addiu $t7, $sp, 0x34 +/* 24D60 80024160 27B80030 */ addiu $t8, $sp, 0x30 +/* 24D64 80024164 AFB80018 */ sw $t8, 0x18($sp) +/* 24D68 80024168 AFAF0014 */ sw $t7, 0x14($sp) +/* 24D6C 8002416C AFAE0010 */ sw $t6, 0x10($sp) +/* 24D70 80024170 24846E88 */ addiu $a0, $a0, %lo(D_80086E88) +/* 24D74 80024174 0C00D51C */ jal guMtxXFMF +/* 24D78 80024178 8FA70048 */ lw $a3, 0x48($sp) +/* 24D7C 8002417C 3C018008 */ lui $at, %hi(D_80086ECC) +/* 24D80 80024180 C4266ECC */ lwc1 $f6, %lo(D_80086ECC)($at) +/* 24D84 80024184 C7A40030 */ lwc1 $f4, 0x30($sp) +/* 24D88 80024188 00001825 */ or $v1, $zero, $zero +/* 24D8C 8002418C 46003207 */ neg.s $f8, $f6 +/* 24D90 80024190 3C018008 */ lui $at, %hi(D_80086ED4) +/* 24D94 80024194 4608203C */ c.lt.s $f4, $f8 +/* 24D98 80024198 C7B00038 */ lwc1 $f16, 0x38($sp) +/* 24D9C 8002419C 45000002 */ bc1f .L800241A8 +/* 24DA0 800241A0 00000000 */ nop +/* 24DA4 800241A4 24030001 */ addiu $v1, $zero, 0x1 +.L800241A8: +/* 24DA8 800241A8 50600026 */ beql $v1, $zero, .L80024244 +/* 24DAC 800241AC 00601025 */ or $v0, $v1, $zero +/* 24DB0 800241B0 C42A6ED4 */ lwc1 $f10, %lo(D_80086ED4)($at) +/* 24DB4 800241B4 3C014064 */ lui $at, (0x40640000 >> 16) +/* 24DB8 800241B8 44814800 */ mtc1 $at, $f9 +/* 24DBC 800241BC 460A2002 */ mul.s $f0, $f4, $f10 +/* 24DC0 800241C0 44804000 */ mtc1 $zero, $f8 +/* 24DC4 800241C4 460084A1 */ cvt.d.s $f18, $f16 +/* 24DC8 800241C8 3C013FE8 */ lui $at, (0x3FE80000 >> 16) +/* 24DCC 800241CC 46289282 */ mul.d $f10, $f18, $f8 +/* 24DD0 800241D0 44804000 */ mtc1 $zero, $f8 +/* 24DD4 800241D4 44814800 */ mtc1 $at, $f9 +/* 24DD8 800241D8 46000421 */ cvt.d.s $f16, $f0 +/* 24DDC 800241DC 8FAB004C */ lw $t3, 0x4C($sp) +/* 24DE0 800241E0 240900A0 */ addiu $t1, $zero, 0xA0 +/* 24DE4 800241E4 3C0142F0 */ lui $at, (0x42F00000 >> 16) +/* 24DE8 800241E8 00001825 */ or $v1, $zero, $zero +/* 24DEC 800241EC 46305483 */ div.d $f18, $f10, $f16 +/* 24DF0 800241F0 46289282 */ mul.d $f10, $f18, $f8 +/* 24DF4 800241F4 44819000 */ mtc1 $at, $f18 +/* 24DF8 800241F8 4620540D */ trunc.w.d $f16, $f10 +/* 24DFC 800241FC 44088000 */ mfc1 $t0, $f16 +/* 24E00 80024200 00000000 */ nop +/* 24E04 80024204 01285023 */ subu $t2, $t1, $t0 +/* 24E08 80024208 AD6A0000 */ sw $t2, 0x0($t3) +/* 24E0C 8002420C C7A80034 */ lwc1 $f8, 0x34($sp) +/* 24E10 80024210 8FAF0050 */ lw $t7, 0x50($sp) +/* 24E14 80024214 46089282 */ mul.s $f10, $f18, $f8 +/* 24E18 80024218 46003207 */ neg.s $f8, $f6 +/* 24E1C 8002421C 4608203C */ c.lt.s $f4, $f8 +/* 24E20 80024220 46005403 */ div.s $f16, $f10, $f0 +/* 24E24 80024224 4600848D */ trunc.w.s $f18, $f16 +/* 24E28 80024228 440D9000 */ mfc1 $t5, $f18 +/* 24E2C 8002422C 00000000 */ nop +/* 24E30 80024230 25AE0078 */ addiu $t6, $t5, 0x78 +/* 24E34 80024234 45000002 */ bc1f .L80024240 +/* 24E38 80024238 ADEE0000 */ sw $t6, 0x0($t7) +/* 24E3C 8002423C 24030001 */ addiu $v1, $zero, 0x1 +.L80024240: +/* 24E40 80024240 00601025 */ or $v0, $v1, $zero +.L80024244: +/* 24E44 80024244 8FBF0024 */ lw $ra, 0x24($sp) +/* 24E48 80024248 27BD0040 */ addiu $sp, $sp, 0x40 +/* 24E4C 8002424C 03E00008 */ jr $ra +/* 24E50 80024250 00000000 */ nop +/* 24E54 80024254 00000000 */ nop +/* 24E58 80024258 00000000 */ nop +/* 24E5C 8002425C 00000000 */ nop diff --git a/asm/cartrominit.s b/asm/cartrominit.s new file mode 100644 index 0000000..fb9a493 --- /dev/null +++ b/asm/cartrominit.s @@ -0,0 +1,78 @@ +.include "macro.inc" + +/* assembler directives */ +.set noat /* allow manual use of $at */ +.set noreorder /* don't insert nops after branches */ +.set gp=64 /* allow use of 64-bit general purpose registers */ + +.section .text, "ax" + +/* Generated by spimdisasm 1.12.1 */ + +glabel osCartRomInit +/* 3E150 8003D550 3C0E8009 */ lui $t6, %hi(D_800954EC) +/* 3E154 8003D554 8DCE54EC */ lw $t6, %lo(D_800954EC)($t6) +/* 3E158 8003D558 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 3E15C 8003D55C 3C01B000 */ lui $at, (0xB0000000 >> 16) +/* 3E160 8003D560 AFBF0014 */ sw $ra, 0x14($sp) +/* 3E164 8003D564 15C10004 */ bne $t6, $at, .L8003D578 +/* 3E168 8003D568 AFA0001C */ sw $zero, 0x1C($sp) +/* 3E16C 8003D56C 3C028009 */ lui $v0, %hi(D_800954E0) +/* 3E170 8003D570 10000030 */ b .L8003D634 +/* 3E174 8003D574 244254E0 */ addiu $v0, $v0, %lo(D_800954E0) +.L8003D578: +/* 3E178 8003D578 3C018009 */ lui $at, %hi(D_800954E4) +/* 3E17C 8003D57C A02054E4 */ sb $zero, %lo(D_800954E4)($at) +/* 3E180 8003D580 3C018009 */ lui $at, %hi(D_800954EC) +/* 3E184 8003D584 3C0FB000 */ lui $t7, (0xB0000000 >> 16) +/* 3E188 8003D588 AC2F54EC */ sw $t7, %lo(D_800954EC)($at) +/* 3E18C 8003D58C 00002025 */ or $a0, $zero, $zero +/* 3E190 8003D590 0C00F4F4 */ jal osPiRawReadIo +/* 3E194 8003D594 27A5001C */ addiu $a1, $sp, 0x1C +/* 3E198 8003D598 8FB8001C */ lw $t8, 0x1C($sp) +/* 3E19C 8003D59C 3C018009 */ lui $at, %hi(D_800954E5) +/* 3E1A0 8003D5A0 3C048009 */ lui $a0, %hi(D_800954E0) +/* 3E1A4 8003D5A4 331900FF */ andi $t9, $t8, 0xFF +/* 3E1A8 8003D5A8 A03954E5 */ sb $t9, %lo(D_800954E5)($at) +/* 3E1AC 8003D5AC 00184202 */ srl $t0, $t8, 8 +/* 3E1B0 8003D5B0 310900FF */ andi $t1, $t0, 0xFF +/* 3E1B4 8003D5B4 3C018009 */ lui $at, %hi(D_800954E8) +/* 3E1B8 8003D5B8 A02954E8 */ sb $t1, %lo(D_800954E8)($at) +/* 3E1BC 8003D5BC 3C018009 */ lui $at, %hi(D_800954E6) +/* 3E1C0 8003D5C0 00185402 */ srl $t2, $t8, 16 +/* 3E1C4 8003D5C4 00186502 */ srl $t4, $t8, 20 +/* 3E1C8 8003D5C8 314B000F */ andi $t3, $t2, 0xF +/* 3E1CC 8003D5CC 318D000F */ andi $t5, $t4, 0xF +/* 3E1D0 8003D5D0 A02B54E6 */ sb $t3, %lo(D_800954E6)($at) +/* 3E1D4 8003D5D4 A02D54E7 */ sb $t5, %lo(D_800954E7)($at) +/* 3E1D8 8003D5D8 3C018009 */ lui $at, %hi(D_800954E9) +/* 3E1DC 8003D5DC A02054E9 */ sb $zero, %lo(D_800954E9)($at) +/* 3E1E0 8003D5E0 3C018009 */ lui $at, %hi(D_800954F0) +/* 3E1E4 8003D5E4 248454E0 */ addiu $a0, $a0, %lo(D_800954E0) +/* 3E1E8 8003D5E8 AC2054F0 */ sw $zero, %lo(D_800954F0)($at) +/* 3E1EC 8003D5EC 24840014 */ addiu $a0, $a0, 0x14 +/* 3E1F0 8003D5F0 0C00F50C */ jal bzero +/* 3E1F4 8003D5F4 24050060 */ addiu $a1, $zero, 0x60 +/* 3E1F8 8003D5F8 0C00F534 */ jal __osDisableInt +/* 3E1FC 8003D5FC 00000000 */ nop +/* 3E200 8003D600 3C0E8007 */ lui $t6, %hi(D_8006F43C) +/* 3E204 8003D604 8DCEF43C */ lw $t6, %lo(D_8006F43C)($t6) +/* 3E208 8003D608 3C018009 */ lui $at, %hi(D_800954E0) +/* 3E20C 8003D60C 3C0F8009 */ lui $t7, %hi(D_800954E0) +/* 3E210 8003D610 AC2E54E0 */ sw $t6, %lo(D_800954E0)($at) +/* 3E214 8003D614 AFA20018 */ sw $v0, 0x18($sp) +/* 3E218 8003D618 3C018007 */ lui $at, %hi(D_8006F43C) +/* 3E21C 8003D61C 25EF54E0 */ addiu $t7, $t7, %lo(D_800954E0) +/* 3E220 8003D620 AC2FF43C */ sw $t7, %lo(D_8006F43C)($at) +/* 3E224 8003D624 0C00F53C */ jal __osRestoreInt +/* 3E228 8003D628 8FA40018 */ lw $a0, 0x18($sp) +/* 3E22C 8003D62C 3C028009 */ lui $v0, %hi(D_800954E0) +/* 3E230 8003D630 244254E0 */ addiu $v0, $v0, %lo(D_800954E0) +.L8003D634: +/* 3E234 8003D634 8FBF0014 */ lw $ra, 0x14($sp) +/* 3E238 8003D638 27BD0020 */ addiu $sp, $sp, 0x20 +/* 3E23C 8003D63C 03E00008 */ jr $ra +/* 3E240 8003D640 00000000 */ nop +/* 3E244 8003D644 00000000 */ nop +/* 3E248 8003D648 00000000 */ nop +/* 3E24C 8003D64C 00000000 */ nop diff --git a/asm/copy.s b/asm/copy.s new file mode 100644 index 0000000..d0aa571 --- /dev/null +++ b/asm/copy.s @@ -0,0 +1,47 @@ +.include "macro.inc" + +/* assembler directives */ +.set noat /* allow manual use of $at */ +.set noreorder /* don't insert nops after branches */ +.set gp=64 /* allow use of 64-bit general purpose registers */ + +.section .text, "ax" + +/* Generated by spimdisasm 1.12.1 */ + +glabel alCopy +/* 49640 80048A40 00801025 */ or $v0, $a0, $zero +/* 49644 80048A44 00A01825 */ or $v1, $a1, $zero +/* 49648 80048A48 18C00018 */ blez $a2, .L80048AAC +/* 4964C 80048A4C 00003825 */ or $a3, $zero, $zero +/* 49650 80048A50 30C50003 */ andi $a1, $a2, 0x3 +/* 49654 80048A54 10A00009 */ beqz $a1, .L80048A7C +/* 49658 80048A58 00A02025 */ or $a0, $a1, $zero +.L80048A5C: +/* 4965C 80048A5C 904E0000 */ lbu $t6, 0x0($v0) +/* 49660 80048A60 24E70001 */ addiu $a3, $a3, 0x1 +/* 49664 80048A64 24630001 */ addiu $v1, $v1, 0x1 +/* 49668 80048A68 24420001 */ addiu $v0, $v0, 0x1 +/* 4966C 80048A6C 1487FFFB */ bne $a0, $a3, .L80048A5C +/* 49670 80048A70 A06EFFFF */ sb $t6, -0x1($v1) +/* 49674 80048A74 10E6000D */ beq $a3, $a2, .L80048AAC +/* 49678 80048A78 00000000 */ nop +.L80048A7C: +/* 4967C 80048A7C 904F0000 */ lbu $t7, 0x0($v0) +/* 49680 80048A80 24E70004 */ addiu $a3, $a3, 0x4 +/* 49684 80048A84 24630004 */ addiu $v1, $v1, 0x4 +/* 49688 80048A88 A06FFFFC */ sb $t7, -0x4($v1) +/* 4968C 80048A8C 90580001 */ lbu $t8, 0x1($v0) +/* 49690 80048A90 24420004 */ addiu $v0, $v0, 0x4 +/* 49694 80048A94 A078FFFD */ sb $t8, -0x3($v1) +/* 49698 80048A98 9059FFFE */ lbu $t9, -0x2($v0) +/* 4969C 80048A9C A079FFFE */ sb $t9, -0x2($v1) +/* 496A0 80048AA0 9048FFFF */ lbu $t0, -0x1($v0) +/* 496A4 80048AA4 14E6FFF5 */ bne $a3, $a2, .L80048A7C +/* 496A8 80048AA8 A068FFFF */ sb $t0, -0x1($v1) +.L80048AAC: +/* 496AC 80048AAC 03E00008 */ jr $ra +/* 496B0 80048AB0 00000000 */ nop +/* 496B4 80048AB4 00000000 */ nop +/* 496B8 80048AB8 00000000 */ nop +/* 496BC 80048ABC 00000000 */ nop diff --git a/asm/createthread.s b/asm/createthread.s new file mode 100644 index 0000000..77d9988 --- /dev/null +++ b/asm/createthread.s @@ -0,0 +1,96 @@ +.include "macro.inc" + +/* assembler directives */ +.set noat /* allow manual use of $at */ +.set noreorder /* don't insert nops after branches */ +.set gp=64 /* allow use of 64-bit general purpose registers */ + +.section .text, "ax" + +/* Generated by spimdisasm 1.11.1 */ + +glabel osCreateThread +/* 346E0 80033AE0 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 346E4 80033AE4 AFA40028 */ sw $a0, 0x28($sp) +/* 346E8 80033AE8 AFA5002C */ sw $a1, 0x2C($sp) +/* 346EC 80033AEC 8FAE002C */ lw $t6, 0x2C($sp) +/* 346F0 80033AF0 8FAF0028 */ lw $t7, 0x28($sp) +/* 346F4 80033AF4 AFBF001C */ sw $ra, 0x1C($sp) +/* 346F8 80033AF8 AFA60030 */ sw $a2, 0x30($sp) +/* 346FC 80033AFC AFA70034 */ sw $a3, 0x34($sp) +/* 34700 80033B00 AFB00018 */ sw $s0, 0x18($sp) +/* 34704 80033B04 ADEE0014 */ sw $t6, 0x14($t7) +/* 34708 80033B08 8FB90028 */ lw $t9, 0x28($sp) +/* 3470C 80033B0C 8FB8003C */ lw $t8, 0x3C($sp) +/* 34710 80033B10 AF380004 */ sw $t8, 0x4($t9) +/* 34714 80033B14 8FA80028 */ lw $t0, 0x28($sp) +/* 34718 80033B18 AD000000 */ sw $zero, 0x0($t0) +/* 3471C 80033B1C 8FA90028 */ lw $t1, 0x28($sp) +/* 34720 80033B20 AD200008 */ sw $zero, 0x8($t1) +/* 34724 80033B24 8FAB0028 */ lw $t3, 0x28($sp) +/* 34728 80033B28 8FAA0030 */ lw $t2, 0x30($sp) +/* 3472C 80033B2C AD6A011C */ sw $t2, 0x11C($t3) +/* 34730 80033B30 8FAC0034 */ lw $t4, 0x34($sp) +/* 34734 80033B34 8FAD0028 */ lw $t5, 0x28($sp) +/* 34738 80033B38 01807825 */ or $t7, $t4, $zero +/* 3473C 80033B3C 000C77C3 */ sra $t6, $t4, 31 +/* 34740 80033B40 ADAE0038 */ sw $t6, 0x38($t5) +/* 34744 80033B44 ADAF003C */ sw $t7, 0x3C($t5) +/* 34748 80033B48 8FB80038 */ lw $t8, 0x38($sp) +/* 3474C 80033B4C 8FB90028 */ lw $t9, 0x28($sp) +/* 34750 80033B50 3C0C8004 */ lui $t4, %hi(D_8003D360) +/* 34754 80033B54 03004825 */ or $t1, $t8, $zero +/* 34758 80033B58 2D210010 */ sltiu $at, $t1, 0x10 +/* 3475C 80033B5C 001847C3 */ sra $t0, $t8, 31 +/* 34760 80033B60 01015023 */ subu $t2, $t0, $at +/* 34764 80033B64 252BFFF0 */ addiu $t3, $t1, -0x10 +/* 34768 80033B68 AF2B00F4 */ sw $t3, 0xF4($t9) +/* 3476C 80033B6C AF2A00F0 */ sw $t2, 0xF0($t9) +/* 34770 80033B70 8FAD0028 */ lw $t5, 0x28($sp) +/* 34774 80033B74 258CD360 */ addiu $t4, $t4, %lo(D_8003D360) +/* 34778 80033B78 01807825 */ or $t7, $t4, $zero +/* 3477C 80033B7C 000C77C3 */ sra $t6, $t4, 31 +/* 34780 80033B80 ADAE0100 */ sw $t6, 0x100($t5) +/* 34784 80033B84 ADAF0104 */ sw $t7, 0x104($t5) +/* 34788 80033B88 8FA90028 */ lw $t1, 0x28($sp) +/* 3478C 80033B8C 3C18003F */ lui $t8, (0x3FFF01 >> 16) +/* 34790 80033B90 3718FF01 */ ori $t8, $t8, (0x3FFF01 & 0xFFFF) +/* 34794 80033B94 AFB80020 */ sw $t8, 0x20($sp) +/* 34798 80033B98 3408FF03 */ ori $t0, $zero, 0xFF03 +/* 3479C 80033B9C AD280118 */ sw $t0, 0x118($t1) +/* 347A0 80033BA0 8FAA0020 */ lw $t2, 0x20($sp) +/* 347A4 80033BA4 8FAC0028 */ lw $t4, 0x28($sp) +/* 347A8 80033BA8 3C01003F */ lui $at, (0x3F0000 >> 16) +/* 347AC 80033BAC 01415824 */ and $t3, $t2, $at +/* 347B0 80033BB0 000BCC02 */ srl $t9, $t3, 16 +/* 347B4 80033BB4 AD990128 */ sw $t9, 0x128($t4) +/* 347B8 80033BB8 8FAF0028 */ lw $t7, 0x28($sp) +/* 347BC 80033BBC 3C0E0100 */ lui $t6, (0x1000800 >> 16) +/* 347C0 80033BC0 35CE0800 */ ori $t6, $t6, (0x1000800 & 0xFFFF) +/* 347C4 80033BC4 ADEE012C */ sw $t6, 0x12C($t7) +/* 347C8 80033BC8 8FAD0028 */ lw $t5, 0x28($sp) +/* 347CC 80033BCC 24180001 */ addiu $t8, $zero, 0x1 +/* 347D0 80033BD0 ADA00018 */ sw $zero, 0x18($t5) +/* 347D4 80033BD4 8FA80028 */ lw $t0, 0x28($sp) +/* 347D8 80033BD8 A5180010 */ sh $t8, 0x10($t0) +/* 347DC 80033BDC 8FA90028 */ lw $t1, 0x28($sp) +/* 347E0 80033BE0 0C00F534 */ jal __osDisableInt +/* 347E4 80033BE4 A5200012 */ sh $zero, 0x12($t1) +/* 347E8 80033BE8 3C0A8007 */ lui $t2, %hi(D_800709FC) +/* 347EC 80033BEC 8D4A09FC */ lw $t2, %lo(D_800709FC)($t2) +/* 347F0 80033BF0 8FAB0028 */ lw $t3, 0x28($sp) +/* 347F4 80033BF4 00408025 */ or $s0, $v0, $zero +/* 347F8 80033BF8 3C018007 */ lui $at, %hi(D_800709FC) +/* 347FC 80033BFC AD6A000C */ sw $t2, 0xC($t3) +/* 34800 80033C00 8FB90028 */ lw $t9, 0x28($sp) +/* 34804 80033C04 02002025 */ or $a0, $s0, $zero +/* 34808 80033C08 0C00F53C */ jal __osRestoreInt +/* 3480C 80033C0C AC3909FC */ sw $t9, %lo(D_800709FC)($at) +/* 34810 80033C10 8FBF001C */ lw $ra, 0x1C($sp) +/* 34814 80033C14 8FB00018 */ lw $s0, 0x18($sp) +/* 34818 80033C18 27BD0028 */ addiu $sp, $sp, 0x28 +/* 3481C 80033C1C 03E00008 */ jr $ra +/* 34820 80033C20 00000000 */ nop +/* 34824 80033C24 00000000 */ nop +/* 34828 80033C28 00000000 */ nop +/* 3482C 80033C2C 00000000 */ nop diff --git a/asm/data/1850.rodata.s b/asm/data/1850.rodata.s new file mode 100644 index 0000000..59db4fe --- /dev/null +++ b/asm/data/1850.rodata.s @@ -0,0 +1,17 @@ +.include "macro.inc" + +.section .rodata + +/* Generated by spimdisasm 1.12.1 */ + +glabel jtbl_80070EF0 +/* 71AF0 80070EF0 80000E54 */ .word .L80000E54 +/* 71AF4 80070EF4 80000E64 */ .word .L80000E64 +/* 71AF8 80070EF8 80000E74 */ .word .L80000E74 +/* 71AFC 80070EFC 80000E84 */ .word .L80000E84 +/* 71B00 80070F00 80000E94 */ .word .L80000E94 + +glabel D_80070F04 +/* 71B04 80070F04 3FC90FDB */ .float 1.570796371 +/* 71B08 80070F08 00000000 */ .float 0 +/* 71B0C 80070F0C 00000000 */ .float 0 diff --git a/asm/data/1BCD0.rodata.s b/asm/data/1BCD0.rodata.s new file mode 100644 index 0000000..dd2c9b8 --- /dev/null +++ b/asm/data/1BCD0.rodata.s @@ -0,0 +1,15 @@ +.include "macro.inc" + +.section .rodata + +/* Generated by spimdisasm 1.10.1 */ + +glabel jtbl_800715F0 +/* 721F0 800715F0 8001B50C */ .word .L8001B50C +/* 721F4 800715F4 8001B70C */ .word .L8001B70C +/* 721F8 800715F8 8001B910 */ .word .L8001B910 +/* 721FC 800715FC 8001BB1C */ .word .L8001BB1C +/* 72200 80071600 8001BD28 */ .word .L8001BD28 +/* 72204 80071604 8001BF2C */ .word .L8001BF2C +/* 72208 80071608 8001C130 */ .word .L8001C130 +/* 7220C 8007160C 8001C338 */ .word .L8001C338 diff --git a/asm/data/2C110.rodata.s b/asm/data/2C110.rodata.s new file mode 100644 index 0000000..c09525c --- /dev/null +++ b/asm/data/2C110.rodata.s @@ -0,0 +1,182 @@ +.include "macro.inc" + +.section .rodata + +/* Generated by spimdisasm 1.10.1 */ + +glabel D_80071750 +/* 72350 80071750 */ .asciz "Repair Info %d %d\n" + .balign 4 + +glabel jtbl_80071764 +/* 72364 80071764 8002B634 */ .word .L8002B634 +/* 72368 80071768 8002B684 */ .word .L8002B684 +/* 7236C 8007176C 8002B65C */ .word .L8002B65C +/* 72370 80071770 8002B670 */ .word .L8002B670 +/* 72374 80071774 8002B648 */ .word .L8002B648 +/* 72378 80071778 8002B620 */ .word .L8002B620 +/* 7237C 8007177C 8002B698 */ .word .L8002B698 + +glabel jtbl_80071780 +/* 72380 80071780 8002BF74 */ .word .L8002BF74 +/* 72384 80071784 8002BF74 */ .word .L8002BF74 +/* 72388 80071788 8002BF74 */ .word .L8002BF74 +/* 7238C 8007178C 8002BF74 */ .word .L8002BF74 +/* 72390 80071790 8002BF74 */ .word .L8002BF74 +/* 72394 80071794 8002BFB0 */ .word .L8002BFB0 +/* 72398 80071798 8002BFB0 */ .word .L8002BFB0 +/* 7239C 8007179C 8002BFB0 */ .word .L8002BFB0 +/* 723A0 800717A0 8002BF74 */ .word .L8002BF74 +/* 723A4 800717A4 8002BFB0 */ .word .L8002BFB0 +/* 723A8 800717A8 8002BFB0 */ .word .L8002BFB0 +/* 723AC 800717AC 8002BFB0 */ .word .L8002BFB0 +/* 723B0 800717B0 8002BF74 */ .word .L8002BF74 +/* 723B4 800717B4 8002BFB0 */ .word .L8002BFB0 +/* 723B8 800717B8 8002BFB0 */ .word .L8002BFB0 +/* 723BC 800717BC 8002BFB0 */ .word .L8002BFB0 +/* 723C0 800717C0 8002BFA8 */ .word .L8002BFA8 + +glabel jtbl_800717C4 +/* 723C4 800717C4 8002C070 */ .word .L8002C070 +/* 723C8 800717C8 8002C070 */ .word .L8002C070 +/* 723CC 800717CC 8002C070 */ .word .L8002C070 +/* 723D0 800717D0 8002C070 */ .word .L8002C070 +/* 723D4 800717D4 8002C174 */ .word .L8002C174 +/* 723D8 800717D8 8002C174 */ .word .L8002C174 +/* 723DC 800717DC 8002C174 */ .word .L8002C174 +/* 723E0 800717E0 8002C174 */ .word .L8002C174 +/* 723E4 800717E4 8002C174 */ .word .L8002C174 +/* 723E8 800717E8 8002C070 */ .word .L8002C070 +/* 723EC 800717EC 8002C070 */ .word .L8002C070 +/* 723F0 800717F0 8002C070 */ .word .L8002C070 +/* 723F4 800717F4 8002C174 */ .word .L8002C174 +/* 723F8 800717F8 8002C034 */ .word .L8002C034 +/* 723FC 800717FC 8002C174 */ .word .L8002C174 +/* 72400 80071800 8002BFE4 */ .word .L8002BFE4 +/* 72404 80071804 8002C174 */ .word .L8002C174 +/* 72408 80071808 8002C070 */ .word .L8002C070 +/* 7240C 8007180C 8002C070 */ .word .L8002C070 +/* 72410 80071810 8002C070 */ .word .L8002C070 + +glabel jtbl_80071814 +/* 72414 80071814 8002C120 */ .word .L8002C120 +/* 72418 80071818 8002C120 */ .word .L8002C120 +/* 7241C 8007181C 8002C120 */ .word .L8002C120 +/* 72420 80071820 8002C120 */ .word .L8002C120 +/* 72424 80071824 8002C174 */ .word .L8002C174 +/* 72428 80071828 8002C174 */ .word .L8002C174 +/* 7242C 8007182C 8002C174 */ .word .L8002C174 +/* 72430 80071830 8002C174 */ .word .L8002C174 +/* 72434 80071834 8002C174 */ .word .L8002C174 +/* 72438 80071838 8002C120 */ .word .L8002C120 +/* 7243C 8007183C 8002C120 */ .word .L8002C120 +/* 72440 80071840 8002C120 */ .word .L8002C120 +/* 72444 80071844 8002C174 */ .word .L8002C174 +/* 72448 80071848 8002C0F8 */ .word .L8002C0F8 +/* 7244C 8007184C 8002C120 */ .word .L8002C120 +/* 72450 80071850 8002C174 */ .word .L8002C174 +/* 72454 80071854 8002C174 */ .word .L8002C174 +/* 72458 80071858 8002C120 */ .word .L8002C120 +/* 7245C 8007185C 8002C120 */ .word .L8002C120 +/* 72460 80071860 8002C120 */ .word .L8002C120 + +glabel jtbl_80071864 +/* 72464 80071864 8002C5D4 */ .word .L8002C5D4 +/* 72468 80071868 8002C5A8 */ .word .L8002C5A8 +/* 7246C 8007186C 8002C604 */ .word .L8002C604 +/* 72470 80071870 8002C690 */ .word .L8002C690 +/* 72474 80071874 8002C79C */ .word .L8002C79C +/* 72478 80071878 8002C79C */ .word .L8002C79C +/* 7247C 8007187C 8002C79C */ .word .L8002C79C +/* 72480 80071880 8002C79C */ .word .L8002C79C +/* 72484 80071884 8002C79C */ .word .L8002C79C +/* 72488 80071888 8002C680 */ .word .L8002C680 +/* 7248C 8007188C 8002C658 */ .word .L8002C658 +/* 72490 80071890 8002C658 */ .word .L8002C658 +/* 72494 80071894 8002C79C */ .word .L8002C79C +/* 72498 80071898 8002C58C */ .word .L8002C58C +/* 7249C 8007189C 8002C658 */ .word .L8002C658 +/* 724A0 800718A0 8002C79C */ .word .L8002C79C +/* 724A4 800718A4 8002C79C */ .word .L8002C79C +/* 724A8 800718A8 8002C634 */ .word .L8002C634 +/* 724AC 800718AC 8002C658 */ .word .L8002C658 +/* 724B0 800718B0 8002C658 */ .word .L8002C658 + +glabel jtbl_800718B4 +/* 724B4 800718B4 8002C740 */ .word .L8002C740 +/* 724B8 800718B8 8002C740 */ .word .L8002C740 +/* 724BC 800718BC 8002C774 */ .word .L8002C774 +/* 724C0 800718C0 8002C740 */ .word .L8002C740 +/* 724C4 800718C4 8002C79C */ .word .L8002C79C +/* 724C8 800718C8 8002C79C */ .word .L8002C79C +/* 724CC 800718CC 8002C79C */ .word .L8002C79C +/* 724D0 800718D0 8002C79C */ .word .L8002C79C +/* 724D4 800718D4 8002C79C */ .word .L8002C79C +/* 724D8 800718D8 8002C6FC */ .word .L8002C6FC +/* 724DC 800718DC 8002C724 */ .word .L8002C724 +/* 724E0 800718E0 8002C6EC */ .word .L8002C6EC +/* 724E4 800718E4 8002C79C */ .word .L8002C79C +/* 724E8 800718E8 8002C6DC */ .word .L8002C6DC +/* 724EC 800718EC 8002C6EC */ .word .L8002C6EC +/* 724F0 800718F0 8002C79C */ .word .L8002C79C +/* 724F4 800718F4 8002C79C */ .word .L8002C79C +/* 724F8 800718F8 8002C724 */ .word .L8002C724 +/* 724FC 800718FC 8002C6EC */ .word .L8002C6EC +/* 72500 80071900 8002C6EC */ .word .L8002C6EC + +glabel jtbl_80071904 +/* 72504 80071904 8002C808 */ .word .L8002C808 +/* 72508 80071908 8002C808 */ .word .L8002C808 +/* 7250C 8007190C 8002C7E0 */ .word .L8002C7E0 +/* 72510 80071910 8002C7E0 */ .word .L8002C7E0 +/* 72514 80071914 8002C7E0 */ .word .L8002C7E0 +/* 72518 80071918 8002C7E0 */ .word .L8002C7E0 +/* 7251C 8007191C 8002C7E0 */ .word .L8002C7E0 +/* 72520 80071920 8002C808 */ .word .L8002C808 +/* 72524 80071924 8002C808 */ .word .L8002C808 +/* 72528 80071928 8002C808 */ .word .L8002C808 +/* 7252C 8007192C 8002C7E0 */ .word .L8002C7E0 +/* 72530 80071930 8002C808 */ .word .L8002C808 +/* 72534 80071934 8002C808 */ .word .L8002C808 +/* 72538 80071938 8002C7E0 */ .word .L8002C7E0 +/* 7253C 8007193C 8002C7E0 */ .word .L8002C7E0 +/* 72540 80071940 8002C808 */ .word .L8002C808 +/* 72544 80071944 8002C808 */ .word .L8002C808 +/* 72548 80071948 8002C808 */ .word .L8002C808 + +glabel jtbl_8007194C +/* 7254C 8007194C 8002CAA8 */ .word .L8002CAA8 +/* 72550 80071950 8002CACC */ .word .L8002CACC +/* 72554 80071954 8002CAF0 */ .word .L8002CAF0 +/* 72558 80071958 8002CAFC */ .word .L8002CAFC +/* 7255C 8007195C 8002CBD0 */ .word .L8002CBD0 +/* 72560 80071960 8002CB20 */ .word .L8002CB20 +/* 72564 80071964 8002CBD0 */ .word .L8002CBD0 +/* 72568 80071968 8002CB2C */ .word .L8002CB2C +/* 7256C 8007196C 8002CB50 */ .word .L8002CB50 +/* 72570 80071970 8002CBD0 */ .word .L8002CBD0 +/* 72574 80071974 8002CBB0 */ .word .L8002CBB0 +/* 72578 80071978 8002CBBC */ .word .L8002CBBC +/* 7257C 8007197C 8002CBD0 */ .word .L8002CBD0 +/* 72580 80071980 8002CBD0 */ .word .L8002CBD0 +/* 72584 80071984 8002CBD0 */ .word .L8002CBD0 +/* 72588 80071988 8002CBC8 */ .word .L8002CBC8 + +glabel jtbl_8007198C +/* 7258C 8007198C 8002CEE0 */ .word .L8002CEE0 +/* 72590 80071990 8002CF00 */ .word .L8002CF00 +/* 72594 80071994 8002CF20 */ .word .L8002CF20 +/* 72598 80071998 8002CF28 */ .word .L8002CF28 +/* 7259C 8007199C 8002CFD4 */ .word .L8002CFD4 +/* 725A0 800719A0 8002CF48 */ .word .L8002CF48 +/* 725A4 800719A4 8002CFD4 */ .word .L8002CFD4 +/* 725A8 800719A8 8002CF50 */ .word .L8002CF50 +/* 725AC 800719AC 8002CF70 */ .word .L8002CF70 +/* 725B0 800719B0 8002CFD4 */ .word .L8002CFD4 +/* 725B4 800719B4 8002CFC0 */ .word .L8002CFC0 +/* 725B8 800719B8 8002CFC8 */ .word .L8002CFC8 +/* 725BC 800719BC 8002CFD4 */ .word .L8002CFD4 +/* 725C0 800719C0 8002CFD4 */ .word .L8002CFD4 +/* 725C4 800719C4 8002CFD4 */ .word .L8002CFD4 +/* 725C8 800719C8 8002CFD0 */ .word .L8002CFD0 +/* 725CC 800719CC 00000000 */ .word 0x00000000 diff --git a/asm/data/8650.rodata.s b/asm/data/8650.rodata.s new file mode 100644 index 0000000..8ae79c4 --- /dev/null +++ b/asm/data/8650.rodata.s @@ -0,0 +1,33 @@ +.include "macro.inc" + +.section .rodata + +/* Generated by spimdisasm 1.11.1 */ + +glabel D_80071110 +/* 71D10 80071110 3FF921FB54442D18 */ .double 1.57079632679489656 + +glabel D_80071118 +/* 71D18 80071118 3FD921FB54442D18 */ .double 0.392699081698724139 + +glabel D_80071120 +/* 71D20 80071120 3ECCCCCD */ .float 0.400000006 + +glabel D_80071124 +/* 71D24 80071124 469C4000 */ .float 20000 + +glabel D_80071128 +/* 71D28 80071128 47AFC800 */ .float 90000 +/* 71D2C 8007112C 00000000 */ .float 0 + +glabel D_80071130 +/* 71D30 80071130 C00921FB54442D18 */ .double -3.14159265358979312 + +glabel D_80071138 +/* 71D38 80071138 401921FB54442D18 */ .double 6.28318530717958623 + +glabel D_80071140 +/* 71D40 80071140 400921FB54442D18 */ .double 3.14159265358979312 + +glabel D_80071148 +/* 71D48 80071148 401921FB54442D18 */ .double 6.28318530717958623 diff --git a/asm/data/97B0.rodata.s b/asm/data/97B0.rodata.s new file mode 100644 index 0000000..c1cb602 --- /dev/null +++ b/asm/data/97B0.rodata.s @@ -0,0 +1,49 @@ +.include "macro.inc" + +.section .rodata + +/* Generated by spimdisasm 1.11.1 */ + +glabel D_80071150 +/* 71D50 80071150 3FD248E8A71DE69B */ .double 0.28570000000000001 + +glabel D_80071158 +/* 71D58 80071158 3ECCCCCD */ .float 0.400000006 +/* 71D5C 8007115C 00000000 */ .float 0 + +glabel D_80071160 +/* 71D60 80071160 400921FB54442D18 */ .double 3.14159265358979312 + +glabel D_80071168 +/* 71D68 80071168 401921FB54442D18 */ .double 6.28318530717958623 + +glabel D_80071170 +/* 71D70 80071170 C00921FB54442D18 */ .double -3.14159265358979312 + +glabel D_80071178 +/* 71D78 80071178 401921FB54442D18 */ .double 6.28318530717958623 + +glabel D_80071180 +/* 71D80 80071180 401921FB54442D18 */ .double 6.28318530717958623 + +glabel D_80071188 +/* 71D88 80071188 3FA999999999999A */ .double 0.0500000000000000028 + +glabel D_80071190 +/* 71D90 80071190 C00921FB54442D18 */ .double -3.14159265358979312 + +glabel jtbl_80071198 +/* 71D98 80071198 8000AD88 */ .word .L8000AD88 +/* 71D9C 8007119C 8000AD88 */ .word .L8000AD88 +/* 71DA0 800711A0 8000ADA4 */ .word .L8000ADA4 +/* 71DA4 800711A4 8000AD88 */ .word .L8000AD88 +/* 71DA8 800711A8 8000AD94 */ .word .L8000AD94 +/* 71DAC 800711AC 8000ADA4 */ .word .L8000ADA4 +/* 71DB0 800711B0 8000ADA4 */ .word .L8000ADA4 +/* 71DB4 800711B4 8000AD88 */ .word .L8000AD88 +/* 71DB8 800711B8 8000ADA4 */ .word .L8000ADA4 +/* 71DBC 800711BC 8000AD94 */ .word .L8000AD94 + +glabel D_800711C0 +/* 71DC0 800711C0 400CCCCCCCCCCCCD */ .double 3.60000000000000009 +/* 71DC8 800711C8 00000000 */ .double 0 diff --git a/asm/data/camera.rodata.s b/asm/data/camera.rodata.s new file mode 100644 index 0000000..a5b1df4 --- /dev/null +++ b/asm/data/camera.rodata.s @@ -0,0 +1,23 @@ +.include "macro.inc" + +.section .rodata + +/* Generated by spimdisasm 1.12.1 */ + +glabel D_800716D0 +/* 722D0 800716D0 3FF921FB54442D18 */ .double 1.57079632679489656 + +glabel D_800716D8 +/* 722D8 800716D8 BFF921FB54442D18 */ .double -1.57079632679489656 + +glabel D_800716E0 +/* 722E0 800716E0 3FF921FB54442D18 */ .double 1.57079632679489656 + +glabel D_800716E8 +/* 722E8 800716E8 BFF921FB54442D18 */ .double -1.57079632679489656 + +glabel D_800716F0 +/* 722F0 800716F0 400921FB54442D18 */ .double 3.14159265358979312 + +glabel D_800716F8 +/* 722F8 800716F8 400921FB54442D18 */ .double 3.14159265358979312 diff --git a/asm/initialize.s b/asm/initialize.s new file mode 100644 index 0000000..b26aac3 --- /dev/null +++ b/asm/initialize.s @@ -0,0 +1,185 @@ +.include "macro.inc" + +/* assembler directives */ +.set noat /* allow manual use of $at */ +.set noreorder /* don't insert nops after branches */ +.set gp=64 /* allow use of 64-bit general purpose registers */ + +.section .text, "ax" + +/* Generated by spimdisasm 1.11.1 */ + +glabel osInitialize +/* 34450 80033850 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 34454 80033854 AFBF001C */ sw $ra, 0x1C($sp) +/* 34458 80033858 240E0001 */ addiu $t6, $zero, 0x1 +/* 3445C 8003385C 3C018009 */ lui $at, %hi(D_80092D40) +/* 34460 80033860 AFB00018 */ sw $s0, 0x18($sp) +/* 34464 80033864 AFA00030 */ sw $zero, 0x30($sp) +/* 34468 80033868 0C00F268 */ jal __osGetSR +/* 3446C 8003386C AC2E2D40 */ sw $t6, %lo(D_80092D40)($at) +/* 34470 80033870 00408025 */ or $s0, $v0, $zero +/* 34474 80033874 3C012000 */ lui $at, (0x20000000 >> 16) +/* 34478 80033878 0C00F264 */ jal __osSetSR +/* 3447C 8003387C 02012025 */ or $a0, $s0, $at +/* 34480 80033880 3C040100 */ lui $a0, (0x1000800 >> 16) +/* 34484 80033884 0C00F26C */ jal __osSetFpcCsr +/* 34488 80033888 34840800 */ ori $a0, $a0, (0x1000800 & 0xFFFF) +/* 3448C 8003388C 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) +/* 34490 80033890 348407FC */ ori $a0, $a0, (0x1FC007FC & 0xFFFF) +/* 34494 80033894 0C00F270 */ jal __osSiRawReadIo +/* 34498 80033898 27A50034 */ addiu $a1, $sp, 0x34 +/* 3449C 8003389C 10400007 */ beqz $v0, .L800338BC +/* 344A0 800338A0 00000000 */ nop +.L800338A4: +/* 344A4 800338A4 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) +/* 344A8 800338A8 348407FC */ ori $a0, $a0, (0x1FC007FC & 0xFFFF) +/* 344AC 800338AC 0C00F270 */ jal __osSiRawReadIo +/* 344B0 800338B0 27A50034 */ addiu $a1, $sp, 0x34 +/* 344B4 800338B4 1440FFFB */ bnez $v0, .L800338A4 +/* 344B8 800338B8 00000000 */ nop +.L800338BC: +/* 344BC 800338BC 8FA50034 */ lw $a1, 0x34($sp) +/* 344C0 800338C0 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) +/* 344C4 800338C4 348407FC */ ori $a0, $a0, (0x1FC007FC & 0xFFFF) +/* 344C8 800338C8 34AF0008 */ ori $t7, $a1, 0x8 +/* 344CC 800338CC 0C00F284 */ jal __osSiRawWriteIo +/* 344D0 800338D0 01E02825 */ or $a1, $t7, $zero +/* 344D4 800338D4 10400009 */ beqz $v0, .L800338FC +/* 344D8 800338D8 00000000 */ nop +.L800338DC: +/* 344DC 800338DC 8FA50034 */ lw $a1, 0x34($sp) +/* 344E0 800338E0 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) +/* 344E4 800338E4 348407FC */ ori $a0, $a0, (0x1FC007FC & 0xFFFF) +/* 344E8 800338E8 34B80008 */ ori $t8, $a1, 0x8 +/* 344EC 800338EC 0C00F284 */ jal __osSiRawWriteIo +/* 344F0 800338F0 03002825 */ or $a1, $t8, $zero +/* 344F4 800338F4 1440FFF9 */ bnez $v0, .L800338DC +/* 344F8 800338F8 00000000 */ nop +.L800338FC: +/* 344FC 800338FC 3C088004 */ lui $t0, %hi(func_8003CA60) +/* 34500 80033900 2508CA60 */ addiu $t0, $t0, %lo(func_8003CA60) +/* 34504 80033904 8D010000 */ lw $at, 0x0($t0) +/* 34508 80033908 3C198000 */ lui $t9, %hi(D_80000000) +/* 3450C 8003390C 3C0D8004 */ lui $t5, %hi(func_8003CA60) +/* 34510 80033910 AF210000 */ sw $at, %lo(D_80000000)($t9) +/* 34514 80033914 8D0B0004 */ lw $t3, 0x4($t0) +/* 34518 80033918 25ADCA60 */ addiu $t5, $t5, %lo(func_8003CA60) +/* 3451C 8003391C 3C0C8000 */ lui $t4, (0x80000080 >> 16) +/* 34520 80033920 AF2B0004 */ sw $t3, %lo(D_80000004)($t9) +/* 34524 80033924 8D010008 */ lw $at, 0x8($t0) +/* 34528 80033928 358C0080 */ ori $t4, $t4, (0x80000080 & 0xFFFF) +/* 3452C 8003392C 3C098004 */ lui $t1, %hi(func_8003CA60) +/* 34530 80033930 AF210008 */ sw $at, %lo(D_80000008)($t9) +/* 34534 80033934 8D0B000C */ lw $t3, 0xC($t0) +/* 34538 80033938 2529CA60 */ addiu $t1, $t1, %lo(func_8003CA60) +/* 3453C 8003393C 3C0A8000 */ lui $t2, (0x80000100 >> 16) +/* 34540 80033940 AF2B000C */ sw $t3, %lo(D_8000000C)($t9) +/* 34544 80033944 8DA10000 */ lw $at, 0x0($t5) +/* 34548 80033948 354A0100 */ ori $t2, $t2, (0x80000100 & 0xFFFF) +/* 3454C 8003394C 3C0E8004 */ lui $t6, %hi(func_8003CA60) +/* 34550 80033950 AD810000 */ sw $at, 0x0($t4) +/* 34554 80033954 8DB80004 */ lw $t8, 0x4($t5) +/* 34558 80033958 25CECA60 */ addiu $t6, $t6, %lo(func_8003CA60) +/* 3455C 8003395C 3C0F8000 */ lui $t7, (0x80000180 >> 16) +/* 34560 80033960 AD980004 */ sw $t8, 0x4($t4) +/* 34564 80033964 8DA10008 */ lw $at, 0x8($t5) +/* 34568 80033968 35EF0180 */ ori $t7, $t7, (0x80000180 & 0xFFFF) +/* 3456C 8003396C 3C048000 */ lui $a0, (0x80000000 >> 16) +/* 34570 80033970 AD810008 */ sw $at, 0x8($t4) +/* 34574 80033974 8DB8000C */ lw $t8, 0xC($t5) +/* 34578 80033978 24050190 */ addiu $a1, $zero, 0x190 +/* 3457C 8003397C AD98000C */ sw $t8, 0xC($t4) +/* 34580 80033980 8D210000 */ lw $at, 0x0($t1) +/* 34584 80033984 AD410000 */ sw $at, 0x0($t2) +/* 34588 80033988 8D2B0004 */ lw $t3, 0x4($t1) +/* 3458C 8003398C AD4B0004 */ sw $t3, 0x4($t2) +/* 34590 80033990 8D210008 */ lw $at, 0x8($t1) +/* 34594 80033994 AD410008 */ sw $at, 0x8($t2) +/* 34598 80033998 8D2B000C */ lw $t3, 0xC($t1) +/* 3459C 8003399C AD4B000C */ sw $t3, 0xC($t2) +/* 345A0 800339A0 8DC10000 */ lw $at, 0x0($t6) +/* 345A4 800339A4 ADE10000 */ sw $at, 0x0($t7) +/* 345A8 800339A8 8DD80004 */ lw $t8, 0x4($t6) +/* 345AC 800339AC ADF80004 */ sw $t8, 0x4($t7) +/* 345B0 800339B0 8DC10008 */ lw $at, 0x8($t6) +/* 345B4 800339B4 ADE10008 */ sw $at, 0x8($t7) +/* 345B8 800339B8 8DD8000C */ lw $t8, 0xC($t6) +/* 345BC 800339BC 0C00D394 */ jal osWritebackDCache +/* 345C0 800339C0 ADF8000C */ sw $t8, 0xC($t7) +/* 345C4 800339C4 3C048000 */ lui $a0, (0x80000000 >> 16) +/* 345C8 800339C8 0C00D8F8 */ jal osInvalICache +/* 345CC 800339CC 24050190 */ addiu $a1, $zero, 0x190 +/* 345D0 800339D0 0C00F4DC */ jal osMapTLBRdb +/* 345D4 800339D4 00000000 */ nop +/* 345D8 800339D8 24040004 */ addiu $a0, $zero, 0x4 +/* 345DC 800339DC 0C00F4F4 */ jal osPiRawReadIo +/* 345E0 800339E0 27A50030 */ addiu $a1, $sp, 0x30 +/* 345E4 800339E4 8FA80030 */ lw $t0, 0x30($sp) +/* 345E8 800339E8 2401FFF0 */ addiu $at, $zero, -0x10 +/* 345EC 800339EC 0101C824 */ and $t9, $t0, $at +/* 345F0 800339F0 13200006 */ beqz $t9, .L80033A0C +/* 345F4 800339F4 AFB90030 */ sw $t9, 0x30($sp) +/* 345F8 800339F8 3C018007 */ lui $at, %hi(D_8006F400) +/* 345FC 800339FC 03205825 */ or $t3, $t9, $zero +/* 34600 80033A00 240A0000 */ addiu $t2, $zero, 0x0 +/* 34604 80033A04 AC2AF400 */ sw $t2, %lo(D_8006F400)($at) +/* 34608 80033A08 AC2BF404 */ sw $t3, %lo(D_8006F404)($at) +.L80033A0C: +/* 3460C 80033A0C 3C048007 */ lui $a0, %hi(D_8006F400) +/* 34610 80033A10 3C058007 */ lui $a1, %hi(D_8006F404) +/* 34614 80033A14 8CA5F404 */ lw $a1, %lo(D_8006F404)($a1) +/* 34618 80033A18 8C84F400 */ lw $a0, %lo(D_8006F400)($a0) +/* 3461C 80033A1C 24060000 */ addiu $a2, $zero, 0x0 +/* 34620 80033A20 0C00E70E */ jal __ll_mul +/* 34624 80033A24 24070003 */ addiu $a3, $zero, 0x3 +/* 34628 80033A28 AFA20020 */ sw $v0, 0x20($sp) +/* 3462C 80033A2C AFA30024 */ sw $v1, 0x24($sp) +/* 34630 80033A30 8FA50024 */ lw $a1, 0x24($sp) +/* 34634 80033A34 8FA40020 */ lw $a0, 0x20($sp) +/* 34638 80033A38 24060000 */ addiu $a2, $zero, 0x0 +/* 3463C 80033A3C 0C00E6CE */ jal __ull_div +/* 34640 80033A40 24070004 */ addiu $a3, $zero, 0x4 +/* 34644 80033A44 3C098000 */ lui $t1, %hi(D_8000030C) +/* 34648 80033A48 8D29030C */ lw $t1, %lo(D_8000030C)($t1) +/* 3464C 80033A4C 3C018007 */ lui $at, %hi(D_8006F400) +/* 34650 80033A50 AC22F400 */ sw $v0, %lo(D_8006F400)($at) +/* 34654 80033A54 15200005 */ bnez $t1, .L80033A6C +/* 34658 80033A58 AC23F404 */ sw $v1, %lo(D_8006F404)($at) +/* 3465C 80033A5C 3C048000 */ lui $a0, %hi(D_8000031C) +/* 34660 80033A60 2484031C */ addiu $a0, $a0, %lo(D_8000031C) +/* 34664 80033A64 0C00F50C */ jal bzero +/* 34668 80033A68 24050040 */ addiu $a1, $zero, 0x40 +.L80033A6C: +/* 3466C 80033A6C 3C0D8000 */ lui $t5, %hi(osTvType) +/* 34670 80033A70 8DAD0300 */ lw $t5, %lo(osTvType)($t5) +/* 34674 80033A74 15A00006 */ bnez $t5, .L80033A90 +/* 34678 80033A78 00000000 */ nop +/* 3467C 80033A7C 3C0C02F5 */ lui $t4, (0x2F5B2D2 >> 16) +/* 34680 80033A80 358CB2D2 */ ori $t4, $t4, (0x2F5B2D2 & 0xFFFF) +/* 34684 80033A84 3C018007 */ lui $at, %hi(osViClock) +/* 34688 80033A88 1000000F */ b .L80033AC8 +/* 3468C 80033A8C AC2CF408 */ sw $t4, %lo(osViClock)($at) +.L80033A90: +/* 34690 80033A90 3C0F8000 */ lui $t7, %hi(osTvType) +/* 34694 80033A94 8DEF0300 */ lw $t7, %lo(osTvType)($t7) +/* 34698 80033A98 24010002 */ addiu $at, $zero, 0x2 +/* 3469C 80033A9C 15E10006 */ bne $t7, $at, .L80033AB8 +/* 346A0 80033AA0 00000000 */ nop +/* 346A4 80033AA4 3C0E02E6 */ lui $t6, (0x2E6025C >> 16) +/* 346A8 80033AA8 35CE025C */ ori $t6, $t6, (0x2E6025C & 0xFFFF) +/* 346AC 80033AAC 3C018007 */ lui $at, %hi(osViClock) +/* 346B0 80033AB0 10000005 */ b .L80033AC8 +/* 346B4 80033AB4 AC2EF408 */ sw $t6, %lo(osViClock)($at) +.L80033AB8: +/* 346B8 80033AB8 3C1802E6 */ lui $t8, (0x2E6D354 >> 16) +/* 346BC 80033ABC 3718D354 */ ori $t8, $t8, (0x2E6D354 & 0xFFFF) +/* 346C0 80033AC0 3C018007 */ lui $at, %hi(osViClock) +/* 346C4 80033AC4 AC38F408 */ sw $t8, %lo(osViClock)($at) +.L80033AC8: +/* 346C8 80033AC8 8FBF001C */ lw $ra, 0x1C($sp) +/* 346CC 80033ACC 8FB00018 */ lw $s0, 0x18($sp) +/* 346D0 80033AD0 27BD0038 */ addiu $sp, $sp, 0x38 +/* 346D4 80033AD4 03E00008 */ jr $ra +/* 346D8 80033AD8 00000000 */ nop +/* 346DC 80033ADC 00000000 */ nop diff --git a/asm/viblack.s b/asm/viblack.s new file mode 100644 index 0000000..b41c011 --- /dev/null +++ b/asm/viblack.s @@ -0,0 +1,42 @@ +.include "macro.inc" + +/* assembler directives */ +.set noat /* allow manual use of $at */ +.set noreorder /* don't insert nops after branches */ +.set gp=64 /* allow use of 64-bit general purpose registers */ + +.section .text, "ax" + +/* Generated by spimdisasm 1.12.1 */ + +glabel osViBlack +/* 352E0 800346E0 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 352E4 800346E4 AFBF001C */ sw $ra, 0x1C($sp) +/* 352E8 800346E8 AFA40028 */ sw $a0, 0x28($sp) +/* 352EC 800346EC 0C00F534 */ jal __osDisableInt +/* 352F0 800346F0 AFB00018 */ sw $s0, 0x18($sp) +/* 352F4 800346F4 93AE002B */ lbu $t6, 0x2B($sp) +/* 352F8 800346F8 00408025 */ or $s0, $v0, $zero +/* 352FC 800346FC 11C00007 */ beqz $t6, .L8003471C +/* 35300 80034700 00000000 */ nop +/* 35304 80034704 3C0F8007 */ lui $t7, %hi(D_80070A84) +/* 35308 80034708 8DEF0A84 */ lw $t7, %lo(D_80070A84)($t7) +/* 3530C 8003470C 95F80000 */ lhu $t8, 0x0($t7) +/* 35310 80034710 37190020 */ ori $t9, $t8, 0x20 +/* 35314 80034714 10000007 */ b .L80034734 +/* 35318 80034718 A5F90000 */ sh $t9, 0x0($t7) +.L8003471C: +/* 3531C 8003471C 3C088007 */ lui $t0, %hi(D_80070A84) +/* 35320 80034720 8D080A84 */ lw $t0, %lo(D_80070A84)($t0) +/* 35324 80034724 2401FFDF */ addiu $at, $zero, -0x21 +/* 35328 80034728 95090000 */ lhu $t1, 0x0($t0) +/* 3532C 8003472C 01215024 */ and $t2, $t1, $at +/* 35330 80034730 A50A0000 */ sh $t2, 0x0($t0) +.L80034734: +/* 35334 80034734 0C00F53C */ jal __osRestoreInt +/* 35338 80034738 02002025 */ or $a0, $s0, $zero +/* 3533C 8003473C 8FBF001C */ lw $ra, 0x1C($sp) +/* 35340 80034740 8FB00018 */ lw $s0, 0x18($sp) +/* 35344 80034744 27BD0028 */ addiu $sp, $sp, 0x28 +/* 35348 80034748 03E00008 */ jr $ra +/* 3534C 8003474C 00000000 */ nop diff --git a/ctx.c b/ctx.c new file mode 100644 index 0000000..61afa44 --- /dev/null +++ b/ctx.c @@ -0,0 +1,4136 @@ +#define SR_CE 0x00020000 +#define SR_CH 0x00040000 +#define gDPSetTextureConvert(pkt,type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTCONV, 3, type) +#define alSeqpGetChannelPriority alSeqpGetChlPriority +#define PI_DMA_BUFFER_SIZE 128 +#define ERR_ALSNDPSETPRIORITY 111 +#define MI_INTR_MASK_CLR_SI 0x0004 +#define gDPLoadMultiBlock_4bS(pkt,timg,tmem,rtile,fmt,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) { gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); gDPLoadSync(pkt); gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1, 0 ); gDPPipeSync(pkt); gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, rtile, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) } +#define PFS_ERR_INCONSISTENT 3 +#define G_AC_THRESHOLD (1 << G_MDSFT_ALPHACOMPARE) +#define gsSPSetGeometryMode(word) { _SHIFTL(G_SETGEOMETRYMODE, 24, 8), (unsigned int)(word) } +#define SR_DE 0x00010000 +#define G_RM_AA_ZB_OPA_DECAL RM_AA_ZB_OPA_DECAL(1) +#define gsSPTextureRectangle(xl,yl,xh,yh,tile,s,t,dsdx,dtdy) (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)), (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)), gsImmp1(G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))), gsImmp1(G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))) +#define AL_PHASE_DECAY 1 +#define IM_RD 0x40 +#define gsSPBranchLessZ(dl,vtx,zval,near,far,flag) gsSPBranchLessZrg(dl, vtx, zval, near, far, flag, 0, G_MAXZ) +#define VI_H_VIDEO_REG VI_H_START_REG +#define G_BRANCH_Z (G_IMMFIRST-15) +#define ERR_OSPISTARTDMA_PIMGR 28 +#define IS_KSEGDM(x) ((u32)(x) >= K0BASE && (u32)(x) < K2BASE) +#define SP_SET_YIELD SP_SET_SIG0 +#define gsDPSetScissor(mode,ulx,uly,lrx,lry) { _SHIFTL(G_SETSCISSOR, 24, 8) | _SHIFTL((int)((float)(ulx)*4.0F), 12, 12) | _SHIFTL((int)((float)(uly)*4.0F), 0, 12), _SHIFTL(mode, 24, 2) | _SHIFTL((int)((float)(lrx)*4.0F), 12, 12) | _SHIFTL((int)((float)(lry)*4.0F), 0, 12) } +#define gSPLight(pkt,l,n) gDma1p(pkt, G_MOVEMEM, l, sizeof(Light),((n)-1)*2+G_MV_L0) +#define OS_VI_GAMMA_DITHER_ON 0x0004 +#define G_RM_AA_ZB_OPA_TERR2 RM_AA_ZB_OPA_TERR(2) +#define RM_AA_ZB_TEX_EDGE(clk) AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | CVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_OPA | TEX_EDGE | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define K0BASE 0x80000000 +#define SR_FR 0x04000000 +#define G_MTX_MUL 0x00 +#define ERR_OSPIRAWSTARTDMA_RANGE 25 +#define G_MWO_CLIP_RPX 0x14 +#define G_MWO_CLIP_RPY 0x1c +#define OS_PFS_VERSION_HI (OS_PFS_VERSION >> 8) +#define gSPTextureRectangle(pkt,xl,yl,xh,yh,tile,s,t,dsdx,dtdy) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)); _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)); gImmp1(pkt, G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))); gImmp1(pkt, G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)));} +#define A_BUTTON CONT_A +#define alCSPGetPan alCSPGetChlPan +#define G_POPMTX (G_IMMFIRST-2) +#define ERR_OSPROFILEINIT_SIZ 65 +#define OS_MESG_PRI_HIGH 1 +#define G_CC_BLENDIA2 ENVIRONMENT, SHADE, COMBINED, SHADE, COMBINED, 0, SHADE, 0 +#define G_RM_AA_TEX_TERR2 RM_AA_TEX_TERR(2) +#define G_RM_AA_OPA_TERR2 RM_AA_OPA_TERR(2) +#define G_IM_SIZ_4b_LOAD_BLOCK G_IM_SIZ_16b +#define RM_AA_SUB_SURF(clk) AA_EN | IM_RD | CVG_DST_FULL | ZMODE_OPA | ALPHA_CVG_SEL | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define SP_STATUS_CPUSIGNAL SP_STATUS_SIG4 +#define GIO_GIO_INTR_REG (GIO_BASE_REG+0x000) +#define RM_RA_ZB_OPA_DECAL(clk) AA_EN | Z_CMP | CVG_DST_WRAP | ALPHA_CVG_SEL | ZMODE_DEC | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define alSeqpGetFXMix alSeqpGetChlFXMix +#define G_RM_ADD2 RM_ADD(2) +#define G_RDPPIPESYNC 0xe7 +#define OS_EVENT_COUNTER 3 +#define RI_COUNT_REG RI_REFRESH_REG +#define gdSPDefLookAt(rightx,righty,rightz,upx,upy,upz) { {{ {{0,0,0},0,{0,0,0},0,{rightx,righty,rightz},0}}, { {{0,0x80,0},0,{0,0x80,0},0,{upx,upy,upz},0}}} } +#define SR_IE 0x00000001 +#define KDM_TO_PHYS(x) ((u32)(x)&0x1FFFFFFF) +#define G_ROTATE_FRAC 16 +#define TLBLO_PFNSHIFT 6 +#define gsDPLoadTextureBlockS(timg,fmt,siz,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) gsDPSetTextureImage(fmt, siz ##_LOAD_BLOCK, 1, timg), gsDPSetTile(fmt, siz ##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, 0 , cmt, maskt,shiftt, cms, masks, shifts), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height) + siz ##_INCR) >> siz ##_SHIFT)-1, 0 ), gsDPPipeSync(), gsDPSetTile(fmt, siz, ((((width) * siz ##_LINE_BYTES)+7)>>3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts), gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define CONT_OVERRUN_ERROR 0x4 +#define RM_AA_SUB_TERR(clk) AA_EN | IM_RD | CVG_DST_FULL | ZMODE_OPA | ALPHA_CVG_SEL | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define ERR_OSPISTARTDMA_DIR 30 +#define OS_VI_MPAL_HPN1 36 +#define OS_VI_MPAL_HPN2 40 +#define ERR_ALSNDPDEALLOCATE 107 +#define TRUE 1 +#define OS_PFS_VERSION_LO (OS_PFS_VERSION & 255) +#define C0_COMPARE 11 +#define SP_SET_HALT 0x00002 +#define SINVALID 0x00000000 +#define SR_KX 0x00000080 +#define OS_VI_DITHER_FILTER_OFF 0x0080 +#define OS_VI_BIT_NONINTERLACE 0x0001 +#define OS_IM_RDBREAD 0x00004401 +#define G_CCMUX_TEXEL0_ALPHA 8 +#define OS_IM_RDBWRITE 0x00002401 +#define G_SETCONVERT 0xec +#define SP_STATUS_DMA_BUSY 0x004 +#define gDPLoadTLUT(pkt,count,tmemaddr,dram) { gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); gDPTileSync(pkt); gDPSetTile(pkt, 0, 0, 0, tmemaddr, G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0); gDPLoadSync(pkt); gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, ((count)-1)); gDPPipeSync(pkt); } +#define EXC_WADE EXC_CODE(5) +#define EXC_II EXC_CODE(10) +#define GAME_APP_DATA_READY 10 +#define SP_SCALE 0x00000010 +#define G_TL_LOD (1 << G_MDSFT_TEXTLOD) +#define RAMROM_MSG_SIZE (RAMROM_BUF_SIZE*6) +#define C0_PRID 15 +#define TLBLO_D 0x4 +#define EXC_FPE EXC_CODE(15) +#define TLBLO_G 0x1 +#define OS_PHYSICAL_TO_K0(x) (void *)(((u32)(x)+0x80000000)) +#define OS_ERROR_FMT "/usr/lib/PR/error.fmt" +#define TLBLO_V 0x2 +#define G_SETCOMBINE 0xfc +#define gsDPFullSync() gsDPNoParam(G_RDPFULLSYNC) +#define Z_CMP 0x10 +#define VI_V_SYNC_REG (VI_BASE_REG+0x18) +#define CONFIG_BE_SHFT 15 +#define C0_READI 0x1 +#define OS_K1_TO_PHYSICAL(x) (u32)(((char *)(x)-0xa0000000)) +#define gsDPSetColor(c,d) { _SHIFTL(c, 24, 8), (unsigned int)(d) } +#define GU_PARSE_STRING_TYPE 6 +#define A_RIGHT 0x00 +#define gDPSetBlendColor(pkt,r,g,b,a) DPRGBColor(pkt, G_SETBLENDCOLOR, r,g,b,a) +#define G_CLEARGEOMETRYMODE (G_IMMFIRST-9) +#define gsSPInsertMatrix(where,num) gsMoveWd(G_MW_MATRIX, where, num) +#define A_MIX 0x10 +#define CVG_DST_CLAMP 0 +#define WATCHLO_VALIDMASK 0xfffffffb +#define PI_RD_LEN_REG (PI_BASE_REG+0x08) +#define G_RM_XLU_SURF2 RM_XLU_SURF(2) +#define G_RM_ZB_XLU_DECAL RM_ZB_XLU_DECAL(1) +#define DPC_STATUS_XBUS_DMEM_DMA 0x001 +#define G_CC_BLENDRGBDECALA TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, 0, 0, 0, TEXEL0 +#define _GBI_H_ +#define PPARITY_MASK 0x0001 +#define OS_PFS_VERSION 0x0200 +#define gSPCullDisplayList(pkt,vstart,vend) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(G_CULLDL, 24, 8) | _SHIFTL((vstart)*2, 0, 16); _g->words.w1 = _SHIFTL((vend)*2, 0, 16); } +#define PFS_READ 0 +#define CONFIG_EC_1_1 0x6 +#define G_CYC_COPY (2 << G_MDSFT_CYCLETYPE) +#define M_VIDTASK 3 +#define SR_RE 0x02000000 +#define A_MIXER 12 +#define SR_RP 0x08000000 +#define OS_IM_COUNTER 0x00008401 +#define DPC_BUFBUSY_REG (DPC_BASE_REG+0x14) +#define G_CCMUX_COMBINED 0 +#define A_SETLOOP 15 +#define G_LIGHTING 0x00020000 +#define VI_ORIGIN_REG (VI_BASE_REG+0x04) +#define EXC_OV EXC_CODE(12) +#define PFS_CREATE 2 +#define SR_SR 0x00100000 +#define GAME_FAULT_SEND 14 +#define SR_SX 0x00000040 +#define gDPSetAlphaDither(pkt,mode) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 2, mode) +#define GAME_PROF_SEND 12 +#define AI_MIN_BIT_RATE 2 +#define G_CC_DECALRGB2 0, 0, 0, COMBINED, 0, 0, 0, SHADE +#define ERR_OSSTARTTHREAD 3 +#define G_CC_DECALRGBA 0, 0, 0, TEXEL0, 0, 0, 0, TEXEL0 +#define SR_TS 0x00200000 +#define gsDPSetFogColor(r,g,b,a) sDPRGBColor(G_SETFOGCOLOR, r,g,b,a) +#define Z_TRIG CONT_G +#define CVG_DST_WRAP 0x100 +#define RI_LATENCY_REG (RI_BASE_REG+0x14) +#define aSegment(pkt,s,b) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = _SHIFTL(A_SEGMENT, 24, 8); _a->words.w1 = _SHIFTL(s, 24, 8) | _SHIFTL(b, 0, 24); } +#define M_PI 3.14159265358979323846 +#define gSPBranchList(pkt,dl) gDma1p(pkt,G_DL,dl,0,G_DL_NOPUSH) +#define OS_TV_MPAL 2 +#define gsDPSetBlendColor(r,g,b,a) sDPRGBColor(G_SETBLENDCOLOR, r,g,b,a) +#define SR_UX 0x00000020 +#define PFS_ONE_PAGE 8 +#define TLBHI_PIDMASK 0xff +#define PADDR_SHIFT 4 +#define gsDPSetAlphaDither(mode) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 2, mode) +#define MI_CLR_EBUS 0x0200 +#define aSaveBuffer(pkt,s) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = _SHIFTL(A_SAVEBUFF, 24, 8); _a->words.w1 = (unsigned int)(s); } +#define ERR_OSRECVMESG 8 +#define CONT_ADDR_CRC_ER 0x04 +#define CONT_CARD_ON 0x01 +#define ERR_OSSETTIME 75 +#define CONT_START 0x1000 +#define gDPLoadTile(pkt,t,uls,ult,lrs,lrt) gDPLoadTileGeneric(pkt, G_LOADTILE, t, uls, ult, lrs, lrt) +#define RI_BASE_REG 0x04700000 +#define MQ_GET_COUNT(mq) ((mq)->validCount) +#define ERR_OSJAMMESG 7 +#define G_IM_SIZ_32b_TILE_BYTES 2 +#define G_TEXRECT 0xe4 +#define CONFIG_COHRNT_EXLWR 0x00000005 +#define gsDPSetDepthSource(src) gsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_ZSRCSEL, 1, src) +#define OS_VI_BIT_NTSC 0x0400 +#define ERR_OSMAPTLB_INDEX 10 +#define gsDPSetOtherMode(mode0,mode1) { _SHIFTL(G_RDPSETOTHERMODE,24,8)|_SHIFTL(mode0,0,24), (unsigned int)(mode1) } +#define CONFIG_SB_SHFT 22 +#define G_RM_ZB_PCL_SURF2 RM_ZB_PCL_SURF(2) +#define AL_BANK_VERSION 0x4231 +#define ERR_ALCSEQZEROVEL 129 +#define G_RM_NOOP RM_NOOP(1) +#define MAXCONTROLLERS 4 +#define G_TF_POINT (0 << G_MDSFT_TEXTFILT) +#define VI_MPAL_CLOCK 48628316 +#define G_MTX_NOPUSH 0x00 +#define _SHIFTL(v,s,w) ((unsigned int) (((unsigned int)(v) & ((0x01 << (w)) - 1)) << (s))) +#define MI_INTR_MASK_SET_AI 0x0020 +#define G_BZ_PERSP 0 +#define __LIB_AUDIO__ +#define G_TX_LOADTILE 7 +#define G_TL_TILE (0 << G_MDSFT_TEXTLOD) +#define MI_CLR_RDRAM 0x1000 +#define ERR_OSCREATEREGION_ALIGN 50 +#define GIO_GIO_SYNC_REG (GIO_BASE_REG+0x400) +#define C0_SR 12 +#define SP_FRACPOS 0x00000100 +#define ERR_OSPROFILEINIT_ALN 63 +#define G_RM_OPA_CI2 RM_OPA_CI(2) +#define G_RM_RA_ZB_OPA_INTER2 RM_RA_ZB_OPA_INTER(2) +#define FTOFRAC8(x) ((int) MIN(((x) * (128.0f)), 127.0f) & 0xff) +#define _VARIABLES_H_ +#define G_IM_SIZ_32b_BYTES 4 +#define DPC_STATUS_FREEZE 0x002 +#define MQ_IS_FULL(mq) (MQ_GET_COUNT(mq) >= (mq)->msgCount) +#define DPS_TBIST_REG (DPS_BASE_REG+0x00) +#define G_RM_CLD_SURF2 RM_CLD_SURF(2) +#define A_SETBUFF 8 +#define G_TC_FILTCONV (5 << G_MDSFT_TEXTCONV) +#define SP_SET_SSTEP 0x00040 +#define MI_INTR_MASK_SET_DP 0x0800 +#define SP_SET_INTR_BREAK 0x00100 +#define G_RM_AA_ZB_XLU_LINE2 RM_AA_ZB_XLU_LINE(2) +#define OS_PRIORITY_PIMGR 150 +#define G_RM_AA_ZB_XLU_SURF RM_AA_ZB_XLU_SURF(1) +#define gSPDisplayList(pkt,dl) gDma1p(pkt,G_DL,dl,0,G_DL_PUSH) +#define CONFIG_EC_3_2 0x7 +#define SP_DMA_FULL_REG (SP_BASE_REG+0x14) +#define VI_CTRL_SERRATE_ON 0x00040 +#define VI_V_VIDEO_REG VI_V_START_REG +#define RCP_IMASKSHIFT 16 +#define G_IMMCMDSIZ 64 +#define G_TX_MIRROR 0x1 +#define ERR_ALSNDP_NO_VOICE 105 +#define G_RM_AA_XLU_LINE2 RM_AA_XLU_LINE(2) +#define ERR_OSPROFILESTOP_FLAG 68 +#define ERR_OSCREATEPIMANAGER 35 +#define PI_DOM2_ADDR2 0x08000000 +#define CVG_DST_SAVE 0x300 +#define AL_PAN_LEFT 0 +#define gsDPSetTextureFilter(type) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTFILT, 2, type) +#define PFS_FILE_EXT_LEN 4 +#define C_HINV 0x10 +#define HOST_PROF_ACK 13 +#define G_MTX_PUSH 0x04 +#define gDPLoadSync(pkt) gDPNoParam(pkt, G_RDPLOADSYNC) +#define GU_PARSEGBI_SHOWDMA 8 +#define A_SPNOOP 0 +#define G_RM_OPA_SURF RM_OPA_SURF(1) +#define ALIGNSZ (sizeof(long long)) +#define C0_RAND 1 +#define gsDPTileSync() gsDPNoParam(G_RDPTILESYNC) +#define FTOFIX32(x) (long)((x) * (float)0x00010000) +#define RM_AA_ZB_XLU_SURF(clk) AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | FORCE_BL | ZMODE_XLU | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define ERR_ALSEQP_NO_SOUND 100 +#define GU_PARSE_GBI_TYPE 1 +#define gDPSetTextureFilter(pkt,type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTFILT, 2, type) +#define G_RDP_TRI_FILL_MASK 0x08 +#define gsSP2Triangles(v00,v01,v02,flag0,v10,v11,v12,flag1) { (_SHIFTL(G_TRI2, 24, 8)| __gsSP1Triangle_w1f(v00, v01, v02, flag0)), __gsSP1Triangle_w1f(v10, v11, v12, flag1) } +#define G_CC_BLENDRGBA TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, 0, 0, 0, SHADE +#define DPC_CLR_XBUS_DMEM_DMA 0x0001 +#define G_VTX 4 +#define OS_TASK_DP_WAIT 0x0002 +#define DPC_CLOCK_REG (DPC_BASE_REG+0x10) +#define SVINDEXMASK 0x00000380 +#define G_SETTILESIZE 0xf2 +#define OS_EVENT_CART 2 +#define gsSPNoOp() gsDma0p(G_SPNOOP, 0, 0) +#define G_TRI_SHADE_ZBUFF 0xcd +#define SP_SET_SIG0 0x00400 +#define SP_SET_SIG1 0x01000 +#define SP_SET_SIG2 0x04000 +#define SP_SET_SIG3 0x10000 +#define SP_SET_SIG4 0x40000 +#define SP_SET_SIG5 0x100000 +#define SP_SET_SIG6 0x400000 +#define SP_SET_SIG7 0x1000000 +#define ERR_OSDPSETNEXTBUFFER_ADDR 17 +#define RM_ZB_OPA_SURF(clk) Z_CMP | Z_UPD | CVG_DST_FULL | ALPHA_CVG_SEL | ZMODE_OPA | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define RDRAM_BASE_REG 0x03F00000 +#define AL_CMIDI_BLOCK_CODE 0xFE +#define NUM_SEGMENTS (16) +#define G_MAXZ 0x03ff +#define G_MWO_MATRIX_YZ_YW_F 0x2c +#define G_CCMUX_NOISE 7 +#define G_MWO_MATRIX_YZ_YW_I 0x0c +#define G_MDSFT_BLENDMASK 0 +#define RM_ZB_OVL_SURF(clk) Z_CMP | IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_DEC | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define AI_MIN_DAC_RATE 132 +#define gDPSetTexturePersp(pkt,type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTPERSP, 1, type) +#define ERR_OSAISETFREQUENCY 14 +#define EEPROM_TYPE_4K 0x01 +#define GAME_LOG_SEND 7 +#define RM_AA_TEX_TERR(clk) AA_EN | IM_RD | CVG_DST_CLAMP | CVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_OPA | TEX_EDGE | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define G_MDSFT_RENDERMODE 3 +#define OS_PM_1M 0x01fe000 +#define PI_DOMAIN1 0 +#define PI_DOMAIN2 1 +#define G_RM_AA_OPA_SURF RM_AA_OPA_SURF(1) +#define SP_CLR_INTR 0x00008 +#define C_CDX 0xc +#define OS_TASK_LOADABLE 0x0004 +#define BOOT_ADDRESS_EMU 0x20010000 +#define ERR_ALSEQPUNMAP 123 +#define AI_DRAM_ADDR_REG (AI_BASE_REG+0x00) +#define gSPPopMatrix(pkt,n) gImmp1(pkt, G_POPMTX, n) +#define RDRAM_REF_INTERVAL_REG (RDRAM_BASE_REG+0x10) +#define PI_BSD_DOM1_LAT_REG (PI_BASE_REG+0x14) +#define gMoveWd(pkt,index,offset,data) gImmp21((pkt), G_MOVEWORD, offset, index, data) +#define _FINALROM 1 +#define G_TRI_SHADE_TXTR_ZBUFF 0xcf +#define MI_INTR_MASK_SET_PI 0x0200 +#define G_CC_REFLECTRGB ENVIRONMENT, 0, TEXEL0, SHADE, 0, 0, 0, SHADE +#define C0_TAGLO 28 +#define aInterleave(pkt,l,r) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = _SHIFTL(A_INTERLEAVE, 24, 8); _a->words.w1 = _SHIFTL(l, 16, 16) | _SHIFTL(r, 0, 16); } +#define gsDPSetKeyR(cR,sR,wR) { _SHIFTL(G_SETKEYR, 24, 8), _SHIFTL(wR, 16, 12) | _SHIFTL(cR, 8, 8) | _SHIFTL(sR, 0, 8) } +#define GIO_BASE_REG 0x18000000 +#define XUT_VEC (K0BASE+0x80) +#define G_IM_SIZ_32b_LOAD_BLOCK G_IM_SIZ_32b +#define OS_PM_4K 0x0000000 +#define PI_BSD_DOM2_PWD_REG (PI_BASE_REG+0x28) +#define OS_PM_4M 0x07fe000 +#define AL_DEFAULT_PRIORITY 5 +#define SP_WR_LEN_REG (SP_BASE_REG+0x0C) +#define OS_PRIORITY_IDLE 0 +#define ERR_OSVISETSPECIAL_VALUE 43 +#define ERR_OSREADHOST_SIZE 71 +#define G_MWO_CLIP_RNX 0x04 +#define TLBCTXT_VPNSHIFT 4 +#define K2SIZE 0x20000000 +#define OS_MESG_TYPE_BASE (10) +#define OS_PM_256K 0x007e000 +#define aLoadADPCM(pkt,c,d) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = _SHIFTL(A_LOADADPCM, 24, 8) | _SHIFTL(c, 0, 24); _a->words.w1 = (unsigned int) d; } +#define ERR_ALSEQPINVALIDPROG 121 +#define VI_CURRENT_REG (VI_BASE_REG+0x10) +#define PFS_ERR_INVALID 5 +#define ERR_ALSEQTIME 117 +#define gDPFullSync(pkt) gDPNoParam(pkt, G_RDPFULLSYNC) +#define AL_SEQBANK_VERSION 'S1' +#define DPC_STATUS_START_VALID 0x400 +#define PFS_INITIALIZED 0x1 +#define GBL_c1(m1a,m1b,m2a,m2b) (m1a) << 30 | (m1b) << 26 | (m2a) << 22 | (m2b) << 18 +#define MI_INTR_MASK_SET_SI 0x0008 +#define MI_INTR_MASK_SET_SP 0x0002 +#define gDPSetColorDither(pkt,mode) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_RGBDITHER, 2, mode) +#define G_CC_TRILERP TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0 +#define ALIGN(s,align) (((u32)(s) + ((align)-1)) & ~((align)-1)) +#define A_NOAUX 0x00 +#define __gsSPLine3D_w1f(v0,v1,wd,flag) (((flag) == 0) ? __gsSPLine3D_w1(v0, v1, wd): __gsSPLine3D_w1(v1, v0, wd)) +#define gSPBranchLessZraw(pkt,dl,vtx,zval) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8); _g->words.w1 = (unsigned int)(dl); _g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_BRANCH_Z,24,8)| _SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12)); _g->words.w1 = (unsigned int)(zval); } +#define GU_PARSERDP_VERBOSE 1 +#define CHNL_ERR_NORESP 0x80 +#define G_RM_AA_ZB_OPA_TERR RM_AA_ZB_OPA_TERR(1) +#define G_TRI_SHADE 0xcc +#define SP_Z 0x00000008 +#define G_MWO_bLIGHT_2 0x24 +#define G_CK_KEY (1 << G_MDSFT_COMBKEY) +#define TLBPGMASK_64K 0x1e000 +#define gDPSetTile(pkt,fmt,siz,line,tmem,tile,palette,cmt,maskt,shiftt,cms,masks,shifts) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(G_SETTILE, 24, 8) | _SHIFTL(fmt, 21, 3) | _SHIFTL(siz, 19, 2) | _SHIFTL(line, 9, 9) | _SHIFTL(tmem, 0, 9); _g->words.w1 = _SHIFTL(tile, 24, 3) | _SHIFTL(palette, 20, 4) | _SHIFTL(cmt, 18, 2) | _SHIFTL(maskt, 14, 4) | _SHIFTL(shiftt, 10, 4) |_SHIFTL(cms, 8, 2) | _SHIFTL(masks, 4, 4) | _SHIFTL(shifts, 0, 4); } +#define AL_PHASE_ATTACK 0 +#define TLBRAND_RANDSHIFT 0 +#define G_IM_SIZ_4b_SHIFT 2 +#define AL_FX_BIGROOM 2 +#define G_MWO_bLIGHT_5 0x84 +#define OS_CYCLES_TO_NSEC(c) (((u64)(c)*(1000000000LL/15625000LL))/(OS_CPU_COUNTER/15625000LL)) +#define G_RM_AA_TEX_EDGE RM_AA_TEX_EDGE(1) +#define G_MWO_bLIGHT_7 0xc4 +#define G_RM_ZB_XLU_SURF RM_ZB_XLU_SURF(1) +#define VI_CTRL_ANTIALIAS_MASK 0x00300 +#define MI_INTR_MASK_SET_VI 0x0080 +#define C0_WRITEI 0x2 +#define RAMROM_RELEASE_OFFSET 0xc +#define C0_WRITER 0x6 +#define EXC_WATCH EXC_CODE(23) +#define aPan(pkt,f,d,s) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = (_SHIFTL(A_PAN, 24, 8) | _SHIFTL(f, 16, 8) | _SHIFTL(d, 0, 16)); _a->words.w1 = (unsigned int)(s); } +#define G_DL_NOPUSH 0x01 +#define _UINTPTR_T +#define alCSPSetPan alCSPSetChlPan +#define GRDPCMD(x) (0xff-(x)) +#define gSP2Triangles(pkt,v00,v01,v02,flag0,v10,v11,v12,flag1) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_TRI2, 24, 8)| __gsSP1Triangle_w1f(v00, v01, v02, flag0)); _g->words.w1 = __gsSP1Triangle_w1f(v10, v11, v12, flag1); } +#define G_CK_NONE (0 << G_MDSFT_COMBKEY) +#define G_RM_AA_ZB_PCL_SURF2 RM_AA_ZB_PCL_SURF(2) +#define gDPSetBlendMask(pkt,mask) gDPNoOp(pkt) +#define RCP_STAT_PRINT rmonPrintf("current=%x start=%x end=%x dpstat=%x spstat=%x\n", IO_READ(DPC_CURRENT_REG), IO_READ(DPC_START_REG), IO_READ(DPC_END_REG), IO_READ(DPC_STATUS_REG), IO_READ(SP_STATUS_REG)) +#define ERR_OSPROFILESTART_TIME 66 +#define G_CC_YUV2RGB TEXEL1, K4, K5, TEXEL1, 0, 0, 0, 0 +#define gsSPLoadUcodeEx(uc_start,uc_dstart,uc_dsize) { _SHIFTL(G_RDPHALF_1,24,8), (unsigned int)(uc_dstart), }, { _SHIFTL(G_LOAD_UCODE,24,8)| _SHIFTL((int)(uc_dsize)-1,0,16), (unsigned int)(uc_start), } +#define SP_STATUS_RSPSIGNAL SP_STATUS_SIG3 +#define gDPSetScissor(pkt,mode,ulx,uly,lrx,lry) { Gfx *_g = (Gfx *)pkt; _g->words.w0 = _SHIFTL(G_SETSCISSOR, 24, 8) | _SHIFTL((int)((float)(ulx)*4.0F), 12, 12) | _SHIFTL((int)((float)(uly)*4.0F), 0, 12); _g->words.w1 = _SHIFTL(mode, 24, 2) | _SHIFTL((int)((float)(lrx)*4.0F), 12, 12) | _SHIFTL((int)((float)(lry)*4.0F), 0, 12); } +#define SP_TEXSHUF 0x00000200 +#define ERR_OSVISETYSCALE_VALUE 41 +#define gsDPLoadMultiBlock_4b(timg,tmem,rtile,fmt,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), gsDPSetTile(fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1, CALC_DXT_4b(width)), gsDPPipeSync(), gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, shifts), gsDPSetTileSize(rtile, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define VI_H_START_REG (VI_BASE_REG+0x24) +#define G_MWO_NUMLIGHT 0x00 +#define _STRUCTS_H_ +#define AI_CONTROL_DMA_ON 0x01 +#define G_IM_FMT_CI 2 +#define OS_TASK_SP_ONLY 0x0008 +#define gsSPMatrix(m,p) gsDma1p(G_MTX, m, sizeof(Mtx), p) +#define ERR_OSPIRAWSTARTDMA_DEVADDR 22 +#define SP_CLR_HALT 0x00001 +#define C0_WATCHHI 19 +#define G_SPRITE2D_DRAW (G_IMMFIRST-2) +#define G_SETBLENDCOLOR 0xf9 +#define ERR_OSPROFILEINIT_STR 61 +#define G_RM_PASS GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) +#define RI_RERROR_REG (RI_BASE_REG+0x18) +#define A_SAVEBUFF 6 +#define CACHERR_PIDX_MASK 0x00000007 +#define VI_INTR_REG (VI_BASE_REG+0x0C) +#define VI_PAL_CLOCK 49656530 +#define AI_DACRATE_REG (AI_BASE_REG+0x10) +#define OS_APP_NMI_BUFSIZE 64 +#define PIF_RAM_END 0x1FC007FF +#define ERR_OSGETTIME 74 +#define RI_CURRENT_LOAD_REG (RI_BASE_REG+0x08) +#define G_CCMUX_ENV_ALPHA 12 +#define NO_SOUND_ERR_MASK 0x01 +#define AL_MAX_PRIORITY 127 +#define gsSPLookAt(la) gsSPLookAtX(la), gsSPLookAtY((char *)(la)+16) +#define OS_IM_CART 0x00000c01 +#define CONT_B 0x4000 +#define MI_INTR_MASK_REG (MI_BASE_REG+0x0C) +#define SI_STATUS_DMA_ERROR 0x0008 +#define TLBCTXT_BASESHIFT 23 +#define E_VEC (K0BASE+0x180) +#define HOST_DATA_ACK 17 +#define SR_CU0 0x10000000 +#define SR_CU1 0x20000000 +#define SR_CU2 0x40000000 +#define SR_CU3 0x80000000 +#define G_RM_RA_OPA_SURF RM_RA_OPA_SURF(1) +#define C0_WATCHLO 18 +#define gSPPerspNormalize(pkt,s) gMoveWd(pkt, G_MW_PERSPNORM, 0, (s)) +#define VI_CTRL_DIVOT_ON 0x00010 +#define HOST_PRINTF_ACK 6 +#define ERR_OSMALLOC 52 +#define G_IM_FMT_IA 3 +#define RM_AA_OPA_TERR(clk) AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define G_CC_MODULATERGBDECALA_PRIM G_CC_MODULATEIDECALA_PRIM +#define GAME_EXIT 16 +#define RM_AA_ZB_SUB_SURF(clk) AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL | ZMODE_OPA | ALPHA_CVG_SEL | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define gsDPSetEnvColor(r,g,b,a) sDPRGBColor(G_SETENVCOLOR, r,g,b,a) +#define gsDPSetConvert(k0,k1,k2,k3,k4,k5) { (_SHIFTL(G_SETCONVERT, 24, 8) | _SHIFTL(k0, 13, 9) | _SHIFTL(k1, 4, 9) | _SHIFTL(k2, 5, 4)), (_SHIFTL(k2, 27, 5) | _SHIFTL(k3, 18, 9) | _SHIFTL(k4, 9, 9) | _SHIFTL(k5, 0, 9)) } +#define TLBLO_UNCACHED 0x10 +#define G_TD_DETAIL (2 << G_MDSFT_TEXTDETAIL) +#define A_LEFT 0x02 +#define OS_PRIORITY_MAX 255 +#define GU_PARSE_ABI_TYPE 5 +#define G_CC_MODULATEIA2 COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0 +#define EEP16K_MAXBLOCKS 256 +#define OS_VI_DIVOT_ON 0x0010 +#define G_TC_FILT (6 << G_MDSFT_TEXTCONV) +#define EXC_CPU EXC_CODE(11) +#define gDPSetCombineMode(pkt,a,b) gDPSetCombineLERP(pkt, a, b) +#define VI_NTSC_CLOCK 48681812 +#define G_MOVEWORD (G_IMMFIRST-3) +#define G_CC_MODULATEIDECALA TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0 +#define gsDPLoadTLUT_pal16(pal,dram) gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram), gsDPTileSync(), gsDPSetTile(0, 0, 0, (256+(((pal)&0xf)*16)), G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0), gsDPLoadSync(), gsDPLoadTLUTCmd(G_TX_LOADTILE, 15), gsDPPipeSync() +#define G_IM_SIZ_4b_INCR 3 +#define gsDPSetCombine(muxs0,muxs1) { _SHIFTL(G_SETCOMBINE, 24, 8) | _SHIFTL(muxs0, 0, 24), (unsigned int)(muxs1) } +#define G_CC_HILITERGBDECALA2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, 0, 0, 0, TEXEL0 +#define SP_FASTCOPY 0x00000020 +#define PI_BSD_DOM1_RLS_REG (PI_BASE_REG+0x20) +#define G_BL_CLR_BL 2 +#define _GU_H_ +#define ERR_ALSYN_NO_UPDATE 106 +#define EXC_SYSCALL EXC_CODE(8) +#define G_CC_BLENDI ENVIRONMENT, SHADE, TEXEL0, SHADE, 0, 0, 0, SHADE +#define G_TRI1 (G_IMMFIRST-0) +#define G_TRI2 (G_IMMFIRST-14) +#define RCP_IMASK 0x003f0000 +#define G_RM_AA_ZB_XLU_DECAL RM_AA_ZB_XLU_DECAL(1) +#define K1SIZE 0x20000000 +#define gDPTextureRectangle(pkt,xl,yl,xh,yh,tile,s,t,dsdx,dtdy) { Gfx *_g = (Gfx *)(pkt); if (pkt); _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)); _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)); _g ++; _g->words.w0 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)); _g->words.w1 = (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)); } +#define gsDPSetKeyGB(cG,sG,wG,cB,sB,wB) { (_SHIFTL(G_SETKEYGB, 24, 8) | _SHIFTL(wG, 12, 12) | _SHIFTL(wB, 0, 12)), (_SHIFTL(cG, 24, 8) | _SHIFTL(sG, 16, 8) | _SHIFTL(cB, 8, 8) | _SHIFTL(sB, 0, 8)) } +#define G_RM_AA_ZB_TEX_TERR2 RM_AA_ZB_TEX_TERR(2) +#define FPCSR_RM_RM 0x00000003 +#define FPCSR_RM_RN 0x00000000 +#define FPCSR_RM_RP 0x00000002 +#define __gsSP1Triangle_w1(v0,v1,v2) (_SHIFTL((v0)*2,16,8)|_SHIFTL((v1)*2,8,8)|_SHIFTL((v2)*2,0,8)) +#define FPCSR_RM_RZ 0x00000001 +#define VI_CTRL_GAMMA_ON 0x00008 +#define GU_PARSEGBI_NONEST 2 +#define EXC_VCED EXC_CODE(31) +#define EXC_VCEI EXC_CODE(14) +#define DPC_STATUS_CMD_BUSY 0x040 +#define NUML(n) (((n)+1)*32 + 0x80000000) +#define G_TX_LDBLK_MAX_TXL 2047 +#define G_RM_RA_ZB_OPA_INTER RM_RA_ZB_OPA_INTER(1) +#define C0_COUNT 9 +#define SADDR_SHIFT 4 +#define OS_CLOCK_RATE 62500000LL +#define SP_IMEM_START 0x04001000 +#define G_TEXTURE (G_IMMFIRST-4) +#define RM_AA_OPA_SURF(clk) AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define ERR_OSCREATEMESGQUEUE 5 +#define gSPSegment(pkt,segment,base) gMoveWd(pkt, G_MW_SEGMENT, (segment)*4, base) +#define PIF_RAM_START 0x1FC007C0 +#define CHNL_ERR_FRAME 0x80 +#define AI_LEN_REG (AI_BASE_REG+0x04) +#define OS_VI_GAMMA_ON 0x0001 +#define ZMODE_XLU 0x800 +#define gDma0p(pkt,c,s,l) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL((c), 24, 8) | _SHIFTL((l), 0, 24); _g->words.w1 = (unsigned int)(s); } +#define _COMMON_H_ +#define RDRAM_DEVICE_MANUF_REG (RDRAM_BASE_REG+0x24) +#define gDPLoadTextureBlockYuvS(pkt,timg,fmt,siz,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) { gDPSetTextureImage(pkt, fmt, siz ##_LOAD_BLOCK, 1, timg); gDPSetTile(pkt, fmt, siz ##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts); gDPLoadSync(pkt); gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width)*(height) + siz ##_INCR) >> siz ##_SHIFT)-1,0); gDPPipeSync(pkt); gDPSetTile(pkt, fmt, siz, (((width) * 1)+7)>>3, 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) } +#define ACMD_SIZE 32 +#define FPCSR_CE 0x00020000 +#define ERR_OSCREATEVIMANAGER 49 +#define FPCSR_CI 0x00001000 +#define G_BL_0 3 +#define G_BL_1 2 +#define FPCSR_CU 0x00002000 +#define FPCSR_CV 0x00010000 +#define alHeapAlloc(hp,elem,size) alHeapDBAlloc(0, 0,(hp),(elem),(size)) +#define FPCSR_CZ 0x00008000 +#define RM_AA_ZB_OPA_DECAL(clk) AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | ALPHA_CVG_SEL | ZMODE_DEC | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define gDma1p(pkt,c,s,l,p) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | _SHIFTL((l), 0, 16)); _g->words.w1 = (unsigned int)(s); } +#define gsDPParam(cmd,param) { _SHIFTL(cmd, 24, 8), (param) } +#define TLBCTXT_VPNMASK 0x7ffff0 +#define OS_ERROR_MAGIC 0x6b617479 +#define gDma2p(pkt,c,adrs,len,idx,ofs) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL((c),24,8)|_SHIFTL((ofs)/8,16,8)| _SHIFTL(((len)-1)/8,8,8)|_SHIFTL((idx),0,8)); _g->words.w1 = (unsigned int)(adrs); } +#define BOOT_ADDRESS_ULTRA 0x80000400 +#define G_LOADTLUT 0xf0 +#define RM_AA_DEC_LINE(clk) AA_EN | IM_RD | CVG_DST_FULL | CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL | ZMODE_OPA | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define EXC_RADE EXC_CODE(4) +#define G_MDSFT_TEXTFILT 12 +#define BUF_CTRL_SIZE ALIGNSZ +#define FPCSR_EI 0x00000080 +#define AA_EN 0x8 +#define FPCSR_EO 0x00000200 +#define gsDPTextureRectangleFlip(xl,yl,xh,yh,tile,s,t,dsdx,dtdy) { (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)), (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)), }, { _SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16), _SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16) } +#define FPCSR_EU 0x00000100 +#define FPCSR_EV 0x00000800 +#define FPCSR_EZ 0x00000400 +#define OS_EVENT_CPU_BREAK 10 +#define IS_KUSEG(x) ((u32)(x) < K0BASE) +#define K0_TO_K1(x) ((u32)(x)|0xA0000000) +#define R_VEC (K1BASE+0x1fc00000) +#define OS_EVENT_SP_BREAK 11 +#define TXL2WORDS(txls,b_txl) MAX(1, ((txls)*(b_txl)/8)) +#define RDRAM_1_END 0x003FFFFF +#define FPCSR_FI 0x00000004 +#define C0_CAUSE 13 +#define PI_DOMAIN2_REG PI_BSD_DOM2_LAT_REG +#define FPCSR_FO 0x00000010 +#define FPCSR_FS 0x01000000 +#define FPCSR_FV 0x00000040 +#define FPCSR_FZ 0x00000020 +#define MI_SET_RDRAM 0x2000 +#define gsImmp21(c,p0,p1,dat) { _SHIFTL((c), 24, 8) | _SHIFTL((p0), 8, 16) | _SHIFTL((p1), 0, 8), (unsigned int) (dat) } +#define _ULTRA64_H_ +#define G_RM_RA_OPA_SURF2 RM_RA_OPA_SURF(2) +#define RM_ZB_OPA_DECAL(clk) Z_CMP | CVG_DST_FULL | ALPHA_CVG_SEL | ZMODE_DEC | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define gsDPSetPrimColor(m,l,r,g,b,a) { (_SHIFTL(G_SETPRIMCOLOR, 24, 8) | _SHIFTL(m, 8, 8) | _SHIFTL(l, 0, 8)), (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8)) } +#define gsDPSetPrimDepth(z,dz) gsDPSetColor(G_SETPRIMDEPTH, _SHIFTL(z, 16, 16) | _SHIFTL(dz, 0, 16)) +#define ERR_ALSEQSYSEX 119 +#define CONT_JOYPORT 0x0004 +#define AI_PAL_MIN_FREQ 3050 +#define G_SETTIMG 0xfd +#define G_RM_AA_PCL_SURF2 RM_AA_PCL_SURF(2) +#define SP_HIDDEN 0x00000004 +#define gSPLine3D(pkt,v0,v1,flag) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(G_LINE3D, 24, 8); _g->words.w1 = __gsSPLine3D_w1f(v0, v1, 0, flag); } +#define SP_STATUS_HALT 0x001 +#define ERR_OSSPTASKLOAD_OUTSIZE 59 +#define VI_CTRL_GAMMA_DITHER_ON 0x00004 +#define OS_MESG_TYPE_LOOPBACK (OS_MESG_TYPE_BASE+0) +#define LEO_BLOCK_MODE 1 +#define gSPModifyVertex(pkt,vtx,where,val) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_MODIFYVTX,24,8)| _SHIFTL((where),16,8)|_SHIFTL((vtx)*2,0,16)); _g->words.w1 = (unsigned int)(val); } +#define RDRAM_MIN_INTERVAL_REG (RDRAM_BASE_REG+0x1c) +#define OS_EVENT_SW1 0 +#define RAMROM_PRINTF_ADDR (RAMROM_MSG_ADDR + (4*RAMROM_BUF_SIZE)) +#define DPC_STATUS_PIPE_BUSY 0x020 +#define ALFailIf(condition,error) if (condition) { return; } +#define SP_CLR_CPUSIGNAL SP_CLR_SIG4 +#define G_TX_DXT_FRAC 11 +#define SP_STATUS_YIELDED SP_STATUS_SIG1 +#define OS_VI_NTSC_LAF1 3 +#define OS_VI_NTSC_LAF2 7 +#define gSPVertex(pkt,v,n,v0) gDma1p(pkt, G_VTX, v, ((n)<<10)|(sizeof(Vtx)*(n)-1), (v0)*2) +#define SP_STATUS_BROKE 0x002 +#define gSPSprite2DBase(pkt,s) gDma1p(pkt, G_SPRITE2D_BASE, s, sizeof(uSprite), 0) +#define gsSPBranchLessZraw(dl,vtx,zval) { _SHIFTL(G_RDPHALF_1,24,8), (unsigned int)(dl), }, { _SHIFTL(G_BRANCH_Z,24,8)|_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12), (unsigned int)(zval), } +#define __log__ +#define OS_VI_BIT_32PIXEL 0x0080 +#define AL_FX_NONE 0 +#define ERR_OSSENDMESG 6 +#define gSP1Quadrangle(pkt,v0,v1,v2,v3,flag) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_TRI2, 24, 8)| __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)); _g->words.w1 = __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag); } +#define gDPLoadMultiTile(pkt,timg,tmem,rtile,fmt,siz,width,height,uls,ult,lrs,lrt,pal,cms,cmt,masks,maskt,shifts,shiftt) { gDPSetTextureImage(pkt, fmt, siz, width, timg); gDPSetTile(pkt, fmt, siz, (((((lrs)-(uls)+1) * siz ##_TILE_BYTES)+7)>>3), tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts); gDPLoadSync(pkt); gDPLoadTile( pkt, G_TX_LOADTILE, (uls)<>3), tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, rtile, (uls)<words.w0 = _SHIFTL(G_SETCOMBINE, 24, 8) | _SHIFTL(muxs0, 0, 24); _g->words.w1 = (unsigned int)(muxs1); } +#define OS_MIN_STACKSIZE 72 +#define SP_SET_RSPSIGNAL SP_SET_SIG3 +#define G_RM_AA_XLU_SURF RM_AA_XLU_SURF(1) +#define OS_TASK_YIELDED 0x0001 +#define CONFIG_IC_SHFT 9 +#define SP_TEXSHIFT 0x00000080 +#define CAUSE_IPSHIFT 8 +#define gDPSetCombineLERP(pkt,a0,b0,c0,d0,Aa0,Ab0,Ac0,Ad0,a1,b1,c1,d1,Aa1,Ab1,Ac1,Ad1) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(G_SETCOMBINE, 24, 8) | _SHIFTL(GCCc0w0(G_CCMUX_ ##a0, G_CCMUX_ ##c0, G_ACMUX_ ##Aa0, G_ACMUX_ ##Ac0) | GCCc1w0(G_CCMUX_ ##a1, G_CCMUX_ ##c1), 0, 24); _g->words.w1 = (unsigned int)(GCCc0w1(G_CCMUX_ ##b0, G_CCMUX_ ##d0, G_ACMUX_ ##Ab0, G_ACMUX_ ##Ad0) | GCCc1w1(G_CCMUX_ ##b1, G_ACMUX_ ##Aa1, G_ACMUX_ ##Ac1, G_CCMUX_ ##d1, G_ACMUX_ ##Ab1, G_ACMUX_ ##Ad1)); } +#define VI_V_START_REG (VI_BASE_REG+0x28) +#define gsSP1Triangle(v0,v1,v2,flag) { _SHIFTL(G_TRI1, 24, 8), __gsSP1Triangle_w1f(v0, v1, v2, flag) } +#define gDPLoadTextureBlockYuv(pkt,timg,fmt,siz,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) { gDPSetTextureImage(pkt, fmt, siz ##_LOAD_BLOCK, 1, timg); gDPSetTile(pkt, fmt, siz ##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts); gDPLoadSync(pkt); gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width)*(height) + siz ##_INCR) >> siz ##_SHIFT) -1, CALC_DXT(width, siz ##_BYTES)); gDPPipeSync(pkt); gDPSetTile(pkt, fmt, siz, (((width) * 1)+7)>>3, 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) } +#define G_RM_AA_ZB_PCL_SURF RM_AA_ZB_PCL_SURF(1) +#define G_ZS_PIXEL (0 << G_MDSFT_ZSRCSEL) +#define G_CC_PRIMITIVE 0, 0, 0, PRIMITIVE, 0, 0, 0, PRIMITIVE +#define G_MWO_POINT_XYSCREEN 0x18 +#define G_MWO_MATRIX_XZ_XW_F 0x24 +#define G_MWO_MATRIX_XZ_XW_I 0x04 +#define OS_YIELD_AUDIO_SIZE 0x400 +#define PI_DOM_PGS_OFS 0x08 +#define gSPFogPosition(pkt,min,max) gMoveWd(pkt, G_MW_FOG, G_MWO_FOG, (_SHIFTL((128000/((max)-(min))),16,16) | _SHIFTL(((500-(min))*256/((max)-(min))),0,16))) +#define G_NOOP 0xc0 +#define PI_DOM1_ADDR2 0x10000000 +#define PI_DOM1_ADDR3 0x1FD00000 +#define _gsDPLoadTextureBlock(timg,tmem,fmt,siz,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) gsDPSetTextureImage(fmt, siz ##_LOAD_BLOCK, 1, timg), gsDPSetTile(fmt, siz ##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height) + siz ##_INCR) >> siz ##_SHIFT)-1, CALC_DXT(width, siz ##_BYTES)), gsDPPipeSync(), gsDPSetTile(fmt, siz, ((((width) * siz ##_LINE_BYTES)+7)>>3), tmem, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts), gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define SP_CLR_SIG0 0x00200 +#define SP_CLR_SIG1 0x00800 +#define SP_CLR_SIG2 0x02000 +#define SP_CLR_SIG3 0x08000 +#define SP_CLR_SIG4 0x20000 +#define SP_CLR_SIG5 0x80000 +#define SP_CLR_SIG6 0x200000 +#define SP_CLR_SIG7 0x800000 +#define G_IM_SIZ_16b_INCR 0 +#define ERR_OSCREATETHREAD_PRI 2 +#define SCLEANEXCL 0x00001000 +#define RMON_DBG_BUF_SIZE 2048 +#define PI_DOM1_ADDR1 0x06000000 +#define NUMLIGHTS_0 1 +#define NUMLIGHTS_1 1 +#define NUMLIGHTS_2 2 +#define NUMLIGHTS_3 3 +#define NUMLIGHTS_4 4 +#define NUMLIGHTS_5 5 +#define NUMLIGHTS_6 6 +#define NUMLIGHTS_7 7 +#define G_MW_PERSPNORM 0x0e +#define R_TRIG CONT_R +#define gsDPLoadTextureBlock(timg,fmt,siz,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) gsDPSetTextureImage(fmt, siz ##_LOAD_BLOCK, 1, timg), gsDPSetTile(fmt, siz ##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height) + siz ##_INCR) >> siz ##_SHIFT)-1, CALC_DXT(width, siz ##_BYTES)), gsDPPipeSync(), gsDPSetTile(fmt, siz, ((((width) * siz ##_LINE_BYTES)+7)>>3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts), gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define G_RDP_TRI_TXTR_MASK 0x02 +#define G_RM_AA_ZB_XLU_LINE RM_AA_ZB_XLU_LINE(1) +#define ERR_OSVISWAPBUFFER_VIMGR 48 +#define gDPSetMaskImage(pkt,i) gDPSetDepthImage(pkt, i) +#define _G_CC_TWOCOLORTEX PRIMITIVE, SHADE, TEXEL0, SHADE, 0, 0, 0, SHADE +#define G_RM_VISCVG2 RM_VISCVG(2) +#define G_RM_AA_SUB_TERR2 RM_AA_SUB_TERR(2) +#define G_RM_AA_ZB_SUB_SURF2 RM_AA_ZB_SUB_SURF(2) +#define AI_MPAL_MIN_FREQ 3000 +#define gDPSetAlphaCompare(pkt,type) gSPSetOtherMode(pkt, G_SETOTHERMODE_L, G_MDSFT_ALPHACOMPARE, 2, type) +#define PFS_MAX_BANKS 62 +#define K0SIZE 0x20000000 +#define G_CC_HILITERGB PRIMITIVE, SHADE, TEXEL0, SHADE, 0, 0, 0, SHADE +#define RM_AA_ZB_PCL_SURF(clk) AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | G_AC_DITHER | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define KUBASE 0 +#define OS_VI_NTSC_LAN1 2 +#define C0_LLADDR 17 +#define G_CCMUX_CENTER 6 +#define G_RDP_ADDR_FIXUP 3 +#define G_RM_AA_SUB_SURF2 RM_AA_SUB_SURF(2) +#define DPC_STATUS_REG (DPC_BASE_REG+0x0C) +#define G_TX_NOMIRROR 0 +#define G_BZ_ORTHO 1 +#define G_MWO_CLIP_RNY 0x0c +#define TXL2WORDS_4b(txls) MAX(1, ((txls)/16)) +#define G_OFF (0) +#define ERR_OSVISETEVENT 46 +#define G_BL_A_FOG 1 +#define G_MDSFT_RGBDITHER 6 +#define G_RDPLOADSYNC 0xe6 +#define MI_INTR_MASK_CLR_AI 0x0010 +#define PSTATEMASK 0x00C0 +#define RDRAM_1_CONFIG 0x00400 +#define OS_VI_MPAL_LAF1 31 +#define OS_VI_MPAL_LAF2 35 +#define G_CV_K0 175 +#define AI_PAL_MAX_FREQ 376000 +#define G_CV_K2 -89 +#define G_CV_K3 222 +#define G_CV_K4 114 +#define G_CV_K5 42 +#define G_AD_NOTPATTERN (1 << G_MDSFT_ALPHADITHER) +#define RM_AA_ZB_XLU_LINE(clk) AA_EN | Z_CMP | IM_RD | CVG_DST_CLAMP | CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL | ZMODE_XLU | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define G_MDSFT_CYCLETYPE 20 +#define gsDPSetHilite2Tile(tile,hilite,width,height) gsDPSetTileSize(tile, (hilite)->h.x2 & 0xfff, (hilite)->h.y2 & 0xfff, ((((width)-1)*4)+(hilite)->h.x2) & 0xfff, ((((height)-1)*4)+(hilite)->h.y2) & 0xfff) +#define ERR_OSWRITEHOST_ADDR 72 +#define __ULTRAERROR_H__ +#define G_CC_MODULATEIA_PRIM TEXEL0, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0 +#define SP_IBIST_REG 0x04080004 +#define A_RATE 0x00 +#define ERR_OSSPTASKLOAD_DRAM 57 +#define G_CC_CHROMA_KEY2 TEXEL0, CENTER, SCALE, 0, 0, 0, 0, 0 +#define _G_CC_BLENDPEDECALA ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, 0, 0, 0, TEXEL0 +#define G_MOVEMEM 3 +#define G_TEXTURE_IMAGE_FRAC 2 +#define MI_INTR_MASK_CLR_DP 0x0400 +#define gsSPClearGeometryMode(word) { _SHIFTL(G_CLEARGEOMETRYMODE, 24, 8), (unsigned int)(word) } +#define gDPWord(pkt,wordhi,wordlo) { Gfx *_g = (Gfx *)(pkt); gImmp1(pkt, G_RDPHALF_1, (unsigned int)(wordhi)); gImmp1(pkt, G_RDPHALF_2, (unsigned int)(wordlo)); } +#define SI_STATUS_DMA_BUSY 0x0001 +#define SEGMENT_ADDR(num,off) (((num) << 24) + (off)) +#define G_CC_DECALRGB 0, 0, 0, TEXEL0, 0, 0, 0, SHADE +#define DPC_CLR_PIPE_CTR 0x0080 +#define VI_DRAM_ADDR_REG VI_ORIGIN_REG +#define G_CC_MODULATEI2 COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE +#define ZMODE_INTER 0x400 +#define CONT_UP 0x0800 +#define C0_IMPSHIFT 8 +#define RDRAM_END RDRAM_1_END +#define BOOT_ADDRESS_COSIM 0x80002000 +#define RDRAM_0_END 0x001FFFFF +#define TLBLO_CACHSHIFT 3 +#define PI_DOMAIN1_REG PI_BSD_DOM1_LAT_REG +#define gsSPLoadUcode(uc_start,uc_dstart) gsSPLoadUcodeEx((uc_start), (uc_dstart), SP_UCODE_DATA_SIZE) +#define G_IM_SIZ_32b 3 +#define G_CCMUX_COMBINED_ALPHA 7 +#define gsSPTextureL(s,t,level,xparam,tile,on) { (_SHIFTL(G_TEXTURE, 24, 8) | _SHIFTL(xparam, 16, 8) | _SHIFTL(level, 11, 3) | _SHIFTL(tile, 8, 3) | _SHIFTL(on, 0, 8)), (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)) } +#define G_CC_MODULATERGBA2 G_CC_MODULATEIA2 +#define gDPLoadMultiBlock_4b(pkt,timg,tmem,rtile,fmt,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) { gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); gDPLoadSync(pkt); gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1, CALC_DXT_4b(width)); gDPPipeSync(pkt); gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, rtile, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) } +#define RM_AA_XLU_SURF(clk) AA_EN | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | FORCE_BL | ZMODE_OPA | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define OS_YIELD_DATA_SIZE 0xc00 +#define G_MWO_MATRIX_ZX_ZY_F 0x30 +#define gsDPSetScissorFrac(mode,ulx,uly,lrx,lry) { _SHIFTL(G_SETSCISSOR, 24, 8) | _SHIFTL((int)((ulx)), 12, 12) | _SHIFTL((int)((uly)), 0, 12), _SHIFTL(mode, 24, 2) | _SHIFTL((int)(lrx), 12, 12) | _SHIFTL((int)(lry), 0, 12) } +#define G_MWO_MATRIX_ZX_ZY_I 0x10 +#define gsDPSetTextureConvert(type) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTCONV, 3, type) +#define G_RM_TEX_EDGE RM_TEX_EDGE(1) +#define G_TX_NOMASK 0 +#define G_RM_PCL_SURF2 RM_PCL_SURF(2) +#define OS_CYCLES_TO_USEC(c) (((u64)(c)*(1000000LL/15625LL))/(OS_CPU_COUNTER/15625LL)) +#define OS_VI_BIT_POINTSAMPLE 0x0020 +#define TLBLO_CACHMASK 0x38 +#define G_RM_AA_ZB_TEX_INTER2 RM_AA_ZB_TEX_INTER(2) +#define RDRAM_REF_ROW_REG (RDRAM_BASE_REG+0x14) +#define RDRAM_1_DEVICE_ID 1 +#define G_RM_RA_ZB_OPA_SURF2 RM_RA_ZB_OPA_SURF(2) +#define GU_BLINKRDP_EXTRACT 2 +#define ERR_OSWRITEHOST_SIZE 73 +#define OS_K0_TO_PHYSICAL(x) (u32)(((char *)(x)-0x80000000)) +#define G_LOAD_UCODE (G_IMMFIRST-16) +#define OS_VI_MPAL_LAN1 30 +#define OS_VI_MPAL_LAN2 34 +#define ECC_VEC (K0BASE+0x100) +#define RDRAM_LENGTH (2*512*2048) +#define ERR_OSVIGETCURRENTMODE 36 +#define G_CCMUX_PRIM_LOD_FRAC 14 +#define gDPLoadTextureTile_4b(pkt,timg,fmt,width,height,uls,ult,lrs,lrt,pal,cms,cmt,masks,maskt,shifts,shiftt) { gDPSetTextureImage(pkt, fmt, G_IM_SIZ_8b, ((width)>>1), timg); gDPSetTile(pkt, fmt, G_IM_SIZ_8b, (((((lrs)-(uls)+1)>>1)+7)>>3), 0, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts); gDPLoadSync(pkt); gDPLoadTile( pkt, G_TX_LOADTILE, (uls)<<(G_TEXTURE_IMAGE_FRAC-1), (ult)<<(G_TEXTURE_IMAGE_FRAC), (lrs)<<(G_TEXTURE_IMAGE_FRAC-1), (lrt)<<(G_TEXTURE_IMAGE_FRAC)); gDPPipeSync(pkt); gDPSetTile(pkt, fmt, G_IM_SIZ_4b, (((((lrs)-(uls)+1)>>1)+7)>>3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, G_TX_RENDERTILE, (uls)<>2)-1,0), gsDPPipeSync(), gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts), gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define AI_MPAL_MAX_FREQ 368000 +#define VI_X_SCALE_REG (VI_BASE_REG+0x30) +#define gDPSetTextureLUT(pkt,type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTLUT, 2, type) +#define G_SETPRIMDEPTH 0xee +#define ERR_OSSETEVENTMESG 9 +#define gDPPipelineMode(pkt,mode) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_PIPELINE, 1, mode) +#define G_SETGEOMETRYMODE (G_IMMFIRST-8) +#define G_MW_MATRIX 0x00 +#define G_BL_CLR_MEM 1 +#define DCACHE_LINEMASK (DCACHE_LINESIZE-1) +#define G_RM_ZB_PCL_SURF RM_ZB_PCL_SURF(1) +#define RAMROM_SIZE (0x1000000) +#define OS_MESG_TYPE_VRETRACE (OS_MESG_TYPE_BASE+3) +#define WATCHLO_WTRAP 0x00000001 +#define G_IM_SIZ_16b 2 +#define C0_CACHE_ERR 27 +#define TLBHI_VPN2SHIFT 13 +#define _RAMROM_H +#define RDRAM_ADDR_SELECT_REG (RDRAM_BASE_REG+0x20) +#define RAMROM_FONTDATA_SIZE 1152 +#define gDPSetCycleType(pkt,type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_CYCLETYPE, 2, type) +#define AL_HEAP_INIT 0 +#define SP_STATUS_SIG0 0x080 +#define SP_STATUS_SIG1 0x100 +#define SP_STATUS_SIG2 0x200 +#define SP_STATUS_SIG3 0x400 +#define SP_STATUS_SIG4 0x800 +#define SP_STATUS_SIG5 0x1000 +#define SP_STATUS_SIG7 0x4000 +#define CONT_EEP16K 0x4000 +#define gsSPBranchLessZrg(dl,vtx,zval,near,far,flag,zmin,zmax) { _SHIFTL(G_RDPHALF_1,24,8), (unsigned int)(dl), }, { _SHIFTL(G_BRANCH_Z,24,8)|_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12), G_DEPTOZSrg(zval, near, far, flag, zmin, zmax), } +#define gsSPSegment(segment,base) gsMoveWd( G_MW_SEGMENT, (segment)*4, base) +#define gsDPSetTextureImage(f,s,w,i) gsSetImage(G_SETTIMG, f, s, w, i) +#define AI_STATUS_DMA_BUSY 0x40000000 +#define PFS_ERR_NOPACK 1 +#define gSPEndDisplayList(pkt) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(G_ENDDL, 24, 8); _g->words.w1 = 0; } +#define SP_UCODE_SIZE 4096 +#define OS_IM_SW1 0x00000501 +#define WATCHLO_ADDRMASK 0xfffffff8 +#define SEGMENT_NUMBER(a) (((unsigned int)(a) << 4) >> 28) +#define GU_PARSEGBI_FLTMTX 4 +#define AL_FRAME_INIT -1 +#define RAMROM_BOOTADDR_OFFSET 0x8 +#define osSpTaskStart(tp) { osSpTaskLoad((tp)); osSpTaskStartGo((tp)); } +#define G_TEXRECTFLIP 0xe5 +#define gsSPLight(l,n) gsDma1p( G_MOVEMEM, l, sizeof(Light),((n)-1)*2+G_MV_L0) +#define NOTE_OFF_ERR_MASK 0x02 +#define MI_INTR_MASK_CLR_PI 0x0100 +#define RAMROM_MSG_HDR_SIZE (3*sizeof(long)) +#define G_MV_MATRIX_1 0x9e +#define G_MV_MATRIX_3 0x9a +#define G_MV_MATRIX_4 0x9c +#define aSetVolume(pkt,f,v,t,r) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = (_SHIFTL(A_SETVOL, 24, 8) | _SHIFTL(f, 16, 16) | _SHIFTL(v, 0, 16)); _a->words.w1 = _SHIFTL(t, 16, 16) | _SHIFTL(r, 0, 16); } +#define ERR_OSPISTARTDMA_SIZE 33 +#define ERR_OSCREATEREGION_SIZE 51 +#define G_TT_NONE (0 << G_MDSFT_TEXTLUT) +#define G_DEPTOZS(zval,near,far,flag) G_DEPTOZSrg(zval, near, far, flag, 0, G_MAXZ) +#define AL_DEFAULT_VOICE 0 +#define AL_STOPPED 0 +#define _UCODE_H_ +#define RAND(x) (guRandom()%x) +#define ADPCMVSIZE 8 +#define OS_VI_NTSC_LPF1 1 +#define RDRAM_CONFIG_REG (RDRAM_BASE_REG+0x00) +#define MI_MODE_INIT 0x0080 +#define G_CD_NOISE (2 << G_MDSFT_RGBDITHER) +#define IS_RDRAM(x) ((unsigned)(x) >= RDRAM_START && (unsigned)(x) < RDRAM_END) +#define ERR_ALHEAPCORRUPT 126 +#define gSPTexture(pkt,s,t,level,tile,on) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_TEXTURE, 24, 8) | _SHIFTL(BOWTIE_VAL, 16, 8) | _SHIFTL(level, 11, 3) | _SHIFTL(tile, 8, 3) | _SHIFTL(on, 0, 8)); _g->words.w1 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)); } +#define OS_VI_GAMMA_OFF 0x0002 +#define CAUSE_SW1 0x00000100 +#define CAUSE_SW2 0x00000200 +#define MI_INTR_MASK_CLR_SP 0x0001 +#define aMix(pkt,f,g,i,o) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = (_SHIFTL(A_MIXER, 24, 8) | _SHIFTL(f, 16, 8) | _SHIFTL(g, 0, 16)); _a->words.w1 = _SHIFTL(i,16, 16) | _SHIFTL(o, 0, 16); } +#define NO_VOICE_ERR_MASK 0x04 +#define PI_STATUS_CLR_INTR 0x02 +#define VI_Y_SCALE_REG (VI_BASE_REG+0x34) +#define C_FILL 0x14 +#define gDPSetPrimDepth(pkt,z,dz) gDPSetColor(pkt, G_SETPRIMDEPTH, _SHIFTL(z, 16, 16) | _SHIFTL(dz, 0, 16)) +#define gsDPSetHilite1Tile(tile,hilite,width,height) gsDPSetTileSize(tile, (hilite)->h.x1 & 0xfff, (hilite)->h.y1 & 0xfff, ((((width)-1)*4)+(hilite)->h.x1) & 0xfff, ((((height)-1)*4)+(hilite)->h.y1) & 0xfff) +#define OS_IM_ALL 0x003fff01 +#define OS_RG_ALIGN_16B 16 +#define AL_CMIDI_CNTRL_LOOPEND 103 +#define ERR_OSSETTIMER 76 +#define AL_USEC_PER_FRAME 16000 +#define CONT_ABSOLUTE 0x0001 +#define G_MWO_bLIGHT_1 0x04 +#define G_MWO_bLIGHT_3 0x44 +#define G_MWO_bLIGHT_4 0x64 +#define G_MWO_bLIGHT_6 0xa4 +#define G_MWO_bLIGHT_8 0xe4 +#define ERR_OSFREE_REGION 53 +#define gsDPSetRenderMode(c0,c1) gsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_RENDERMODE, 29, (c0) | (c1)) +#define G_LINE3D (G_IMMFIRST-10) +#define gdSPDefLights6(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4,r5,g5,b5,x5,y5,z5,r6,g6,b6,x6,y6,z6) { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}, {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}, {{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}}, {{ {r5,g5,b5},0,{r5,g5,b5},0,{x5,y5,z5},0}}, {{ {r6,g6,b6},0,{r6,g6,b6},0,{x6,y6,z6},0}}} } +#define gDPSetTileSize(pkt,t,uls,ult,lrs,lrt) gDPLoadTileGeneric(pkt, G_SETTILESIZE, t, uls, ult, lrs, lrt) +#define G_MWO_FOG 0x00 +#define gsSP1Quadrangle(v0,v1,v2,v3,flag) { (_SHIFTL(G_TRI2, 24, 8)| __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)), __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag) } +#define MI_INTR_MASK_CLR_VI 0x0040 +#define UT_VEC K0BASE +#define gDPTextureRectangleFlip(pkt,xl,yl,xh,yh,tile,s,t,dsdx,dtdy) { Gfx *_g = (Gfx *)(pkt); if (pkt); _g->words.w0 = (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)); _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)); _g ++; _g->words.w0 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)); _g->words.w1 = (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)); } +#define gsSPBranchList(dl) gsDma1p( G_DL,dl,0,G_DL_NOPUSH) +#define G_MW_SEGMENT 0x06 +#define G_MDSFT_ZSRCSEL 2 +#define PDIRTYEXCL 0x00C0 +#define RM_CLD_SURF(clk) IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_OPA | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define SI_STATUS_INTERRUPT 0x1000 +#define OS_TASK_USR0 0x0010 +#define LIGHT_1 1 +#define LIGHT_2 2 +#define LIGHT_3 3 +#define LIGHT_4 4 +#define LIGHT_6 6 +#define LIGHT_7 7 +#define G_MDSFT_TEXTDETAIL 17 +#define MAX_BUFCOUNT 0x8000 +#define __gsSP1Quadrangle_w2f(v0,v1,v2,v3,flag) (((flag) == 0) ? __gsSP1Triangle_w1(v0, v2, v3): ((flag) == 1) ? __gsSP1Triangle_w1(v1, v3, v0): ((flag) == 2) ? __gsSP1Triangle_w1(v2, v0, v1): __gsSP1Triangle_w1(v3, v1, v2)) +#define gsDPSetTile(fmt,siz,line,tmem,tile,palette,cmt,maskt,shiftt,cms,masks,shifts) { (_SHIFTL(G_SETTILE, 24, 8) | _SHIFTL(fmt, 21, 3) | _SHIFTL(siz, 19, 2) | _SHIFTL(line, 9, 9) | _SHIFTL(tmem, 0, 9)), (_SHIFTL(tile, 24, 3) | _SHIFTL(palette, 20, 4) | _SHIFTL(cmt, 18, 2) | _SHIFTL(maskt, 14, 4) | _SHIFTL(shiftt, 10, 4) | _SHIFTL(cms, 8, 2) | _SHIFTL(masks, 4, 4) | _SHIFTL(shifts, 0, 4)) } +#define AL_CMIDI_CNTRL_LOOPSTART 102 +#define PI_BSD_DOM1_PWD_REG (PI_BASE_REG+0x18) +#define gsDPLoadMultiBlockS(timg,tmem,rtile,fmt,siz,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) gsDPSetTextureImage(fmt, siz ##_LOAD_BLOCK, 1, timg), gsDPSetTile(fmt, siz ##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0 , cmt, maskt,shiftt, cms, masks, shifts), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height) + siz ##_INCR) >> siz ##_SHIFT)-1, 0 ), gsDPPipeSync(), gsDPSetTile(fmt, siz, ((((width) * siz ##_LINE_BYTES)+7)>>3), tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, shifts), gsDPSetTileSize(rtile, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define GIO_CART_INTR_REG (GIO_BASE_REG+0x800) +#define G_RM_AA_ZB_OPA_DECAL2 RM_AA_ZB_OPA_DECAL(2) +#define gsDPLoadTextureTile_4b(timg,fmt,width,height,uls,ult,lrs,lrt,pal,cms,cmt,masks,maskt,shifts,shiftt) gsDPSetTextureImage(fmt, G_IM_SIZ_8b, ((width)>>1), timg), gsDPSetTile(fmt, G_IM_SIZ_8b, (((((lrs)-(uls)+1)>>1)+7)>>3), 0, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts), gsDPLoadSync(), gsDPLoadTile( G_TX_LOADTILE, (uls)<<(G_TEXTURE_IMAGE_FRAC-1), (ult)<<(G_TEXTURE_IMAGE_FRAC), (lrs)<<(G_TEXTURE_IMAGE_FRAC-1), (lrt)<<(G_TEXTURE_IMAGE_FRAC)), gsDPPipeSync(), gsDPSetTile(fmt, G_IM_SIZ_4b, (((((lrs)-(uls)+1)>>1)+7)>>3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts), gsDPSetTileSize(G_TX_RENDERTILE, (uls)<> siz ##_SHIFT)-1, CALC_DXT(width, siz ##_BYTES)); gDPPipeSync(pkt); gDPSetTile(pkt, fmt, siz, (((width) * siz ##_LINE_BYTES)+7)>>3, tmem, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) } +#define LIGHT_8 8 +#define G_TF_AVERAGE (3 << G_MDSFT_TEXTFILT) +#define G_SPNOOP 0 +#define G_MDSFT_PIPELINE 23 +#define DPC_END_REG (DPC_BASE_REG+0x04) +#define gDPLoadTileGeneric(pkt,c,tile,uls,ult,lrs,lrt) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(c, 24, 8) | _SHIFTL(uls, 12, 12) | _SHIFTL(ult, 0, 12); _g->words.w1 = _SHIFTL(tile, 24, 3) | _SHIFTL(lrs, 12, 12) | _SHIFTL(lrt, 0, 12); } +#define G_SC_ODD_INTERLACE 3 +#define GU_PARSEGBI_DUMPONLY 32 +#define gSP1Triangle(pkt,v0,v1,v2,flag) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(G_TRI1, 24, 8); _g->words.w1 = __gsSP1Triangle_w1f(v0, v1, v2, flag); } +#define SP_IBIST_DONE 0x04 +#define RDRAM_0_START 0x00000000 +#define gSPNoOp(pkt) gDma0p(pkt, G_SPNOOP, 0, 0) +#define C0_CONFIG 16 +#define gImmp1(pkt,c,p0) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL((c), 24, 8); _g->words.w1 = (unsigned int)(p0); } +#define gImmp2(pkt,c,p0,p1) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL((c), 24, 8); _g->words.w1 = _SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8); } +#define gImmp3(pkt,c,p0,p1,p2) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL((c), 24, 8); _g->words.w1 = (_SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8) | _SHIFTL((p2), 0, 8)); } +#define G_AC_NONE (0 << G_MDSFT_ALPHACOMPARE) +#define OS_VI_PAL_HAF1 25 +#define OS_VI_MPAL_LPF1 29 +#define OS_VI_MPAL_LPF2 33 +#define G_CCMUX_SHADE 4 +#define gDPSetTextureImage(pkt,f,s,w,i) gSetImage(pkt, G_SETTIMG, f, s, w, i) +#define BOWTIE_VAL 0 +#define _gsDPLoadTextureBlockTile(timg,tmem,rtile,fmt,siz,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) gsDPSetTextureImage(fmt, siz ##_LOAD_BLOCK, 1, timg), gsDPSetTile(fmt, siz ##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height) + siz ##_INCR) >> siz ##_SHIFT)-1, CALC_DXT(width, siz ##_BYTES)), gsDPPipeSync(), gsDPSetTile(fmt, siz, ((((width) * siz ##_LINE_BYTES)+7)>>3), tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, shifts), gsDPSetTileSize(rtile, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define G_RM_AA_ZB_OPA_INTER2 RM_AA_ZB_OPA_INTER(2) +#define SP_RD_LEN_REG (SP_BASE_REG+0x08) +#define CACHERR_SIDX_MASK 0x003ffff8 +#define SADDRMASK 0xFFFFE000 +#define AI_BITRATE_REG (AI_BASE_REG+0x14) +#define G_RDP_TRI_SHADE_MASK 0x04 +#define OS_READ 0 +#define WATCHHI_VALIDMASK 0x0000000f +#define SP_OVERLAP 0x00000040 +#define ERR_OSCREATETHREAD_SP 1 +#define RI_REFRESH_REG (RI_BASE_REG+0x10) +#define gsImmp1(c,p0) { _SHIFTL((c), 24, 8), (unsigned int)(p0) } +#define U_JPAD CONT_UP +#define SP_CLR_RSPSIGNAL SP_CLR_SIG3 +#define gSPSetGeometryMode(pkt,word) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(G_SETGEOMETRYMODE, 24, 8); _g->words.w1 = (unsigned int)(word); } +#define SP_STATUS_DMA_FULL 0x008 +#define DPC_STATUS_CBUF_READY 0x080 +#define RM_OPA_SURF(clk) CVG_DST_CLAMP | FORCE_BL | ZMODE_OPA | GBL_c ##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) +#define G_IM_SIZ_8b_SHIFT 1 +#define EXC_DBE EXC_CODE(7) +#define G_CCMUX_TEXEL0 1 +#define G_CCMUX_TEXEL1 2 +#define A_INTERLEAVE 13 +#define G_ACMUX_ENVIRONMENT 5 +#define G_MWO_MATRIX_WZ_WW_F 0x3c +#define G_MWO_MATRIX_WZ_WW_I 0x1c +#define G_BL_A_MEM 1 +#define G_CCMUX_LOD_FRACTION 13 +#define RM_AA_ZB_SUB_TERR(clk) AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL | ZMODE_OPA | ALPHA_CVG_SEL | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define Z_UPD 0x20 +#define AL_CMIDI_LOOPEND_CODE 0x2D +#define G_TRI_TXTR_ZBUFF 0xcb +#define RDRAM_GLOBAL_CONFIG 0x80000 +#define SI_DRAM_ADDR_REG (SI_BASE_REG+0x00) +#define U_CBUTTONS CONT_E +#define MI_INTR_AI 0x04 +#define G_RM_XLU_SURF RM_XLU_SURF(1) +#define gSPScisTextureRectangle(pkt,xl,yl,xh,yh,tile,s,t,dsdx,dtdy) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(MAX((s16)(xh),0), 12, 12) | _SHIFTL(MAX((s16)(yh),0), 0, 12)); _g->words.w1 = (_SHIFTL((tile), 24, 3) | _SHIFTL(MAX((s16)(xl),0), 12, 12) | _SHIFTL(MAX((s16)(yl),0), 0, 12)); gImmp1(pkt, G_RDPHALF_1, (_SHIFTL(((s) - (((s16)(xl) < 0) ? (((s16)(dsdx) < 0) ? (MAX((((s16)(xl)*(s16)(dsdx))>>7),0)) : (MIN((((s16)(xl)*(s16)(dsdx))>>7),0))) : 0)), 16, 16) | _SHIFTL(((t) - (((yl) < 0) ? (((s16)(dtdy) < 0) ? (MAX((((s16)(yl)*(s16)(dtdy))>>7),0)) : (MIN((((s16)(yl)*(s16)(dtdy))>>7),0))) : 0)), 0, 16))); gImmp1(pkt, G_RDPHALF_2, (_SHIFTL((dsdx), 16, 16) | _SHIFTL((dtdy), 0, 16))); } +#define ICACHE_LINEMASK (ICACHE_LINESIZE-1) +#define gSPForceMatrix(pkt,mptr) { gDma1p(pkt, G_MOVEMEM, mptr, 16, G_MV_MATRIX_1); gDma1p(pkt, G_MOVEMEM, (char *)(mptr)+16, 16, G_MV_MATRIX_2); gDma1p(pkt, G_MOVEMEM, (char *)(mptr)+32, 16, G_MV_MATRIX_3); gDma1p(pkt, G_MOVEMEM, (char *)(mptr)+48, 16, G_MV_MATRIX_4); } +#define ERR_OSPISTARTDMA_DEVADDR 31 +#define ERR_OSFREE_ADDR 54 +#define G_CYC_2CYCLE (1 << G_MDSFT_CYCLETYPE) +#define SP_DRAM_STACK_SIZE8 (1024) +#define gsDPLoadTLUT(count,tmemaddr,dram) gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram), gsDPTileSync(), gsDPSetTile(0, 0, 0, tmemaddr, G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0), gsDPLoadSync(), gsDPLoadTLUTCmd(G_TX_LOADTILE, ((count)-1)), gsDPPipeSync() +#define C0_MAJREVMASK 0xf0 +#define aEnvMixer(pkt,f,s) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = _SHIFTL(A_ENVMIXER, 24, 8) | _SHIFTL(f, 16, 8); _a->words.w1 = (unsigned int)(s); } +#define GU_PARSERDP_DUMPONLY 32 +#define OS_EVENT_SW2 1 +#define OS_VI_PAL_HAN1 24 +#define OS_VI_MPAL_LPN1 28 +#define OS_VI_MPAL_LPN2 32 +#define CACHERR_ED 0x20000000 +#define G_SC_EVEN_INTERLACE 2 +#define MI_INTR_DP 0x20 +#define G_MWO_aLIGHT_1 0x00 +#define gSPSetOtherMode(pkt,cmd,sft,len,data) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(cmd, 24, 8) | _SHIFTL(sft, 8, 8) | _SHIFTL(len, 0, 8)); _g->words.w1 = (unsigned int)(data); } +#define G_SETFILLCOLOR 0xf7 +#define G_CC_BLENDI2 ENVIRONMENT, SHADE, COMBINED, SHADE, 0, 0, 0, SHADE +#define OS_IM_PRENMI 0x00001401 +#define gsDPLoadMultiTile(timg,tmem,rtile,fmt,siz,width,height,uls,ult,lrs,lrt,pal,cms,cmt,masks,maskt,shifts,shiftt) gsDPSetTextureImage(fmt, siz, width, timg), gsDPSetTile(fmt, siz, (((((lrs)-(uls)+1) * siz ##_TILE_BYTES)+7)>>3), tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts), gsDPLoadSync(), gsDPLoadTile( G_TX_LOADTILE, (uls)<>3), tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, shifts), gsDPSetTileSize(rtile, (uls)<> siz ##_SHIFT)-1, CALC_DXT(width, siz ##_BYTES)), gsDPPipeSync(), gsDPSetTile(fmt, siz, ((((width) * siz ##_LINE_BYTES)+7)>>3), tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, shifts), gsDPSetTileSize(rtile, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define gSPSetLights1(pkt,name) { gSPNumLights(pkt,NUMLIGHTS_1); gSPLight(pkt,&name.l[0],1); gSPLight(pkt,&name.a,2); } +#define gsDPPipeSync() gsDPNoParam(G_RDPPIPESYNC) +#define G_CC_ADDRGB 1, 0, TEXEL0, SHADE, 0, 0, 0, SHADE +#define FILTER_WRAP 0 +#define gSPClearGeometryMode(pkt,word) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(G_CLEARGEOMETRYMODE, 24, 8); _g->words.w1 = (unsigned int)(word); } +#define G_MW_CLIP 0x04 +#define C_IINV 0x0 +#define G_CYC_FILL (3 << G_MDSFT_CYCLETYPE) +#define SP_DMA_IMEM 0x1000 +#define RI_MODE_REG (RI_BASE_REG+0x00) +#define CACH_PD 0x1 +#define CACH_PI 0x0 +#define gDPLoadTextureBlock(pkt,timg,fmt,siz,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) { gDPSetTextureImage(pkt, fmt, siz ##_LOAD_BLOCK, 1, timg); gDPSetTile(pkt, fmt, siz ##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts); gDPLoadSync(pkt); gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width)*(height) + siz ##_INCR) >> siz ##_SHIFT) -1, CALC_DXT(width, siz ##_BYTES)); gDPPipeSync(pkt); gDPSetTile(pkt, fmt, siz, (((width) * siz ##_LINE_BYTES)+7)>>3, 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) } +#define C0_BADVADDR 8 +#define MI_BASE_REG 0x04300000 +#define RM_AA_ZB_XLU_DECAL(clk) AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | FORCE_BL | ZMODE_DEC | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define TLBHI_PIDSHIFT 0 +#define G_SETKEYR 0xeb +#define SP_CLR_BROKE 0x00004 +#define G_CULL_BOTH 0x00003000 +#define CONFIG_BE 0x00008000 +#define G_RM_AA_XLU_LINE RM_AA_XLU_LINE(1) +#define gsSPSetLights3(name) gsSPNumLights(NUMLIGHTS_3), gsSPLight(&name.l[0],1), gsSPLight(&name.l[1],2), gsSPLight(&name.l[2],3), gsSPLight(&name.a,4) +#define SR_IMASKSHIFT 8 +#define RI_SELECT_REG (RI_BASE_REG+0x0C) +#define G_BL_CLR_FOG 3 +#define CONFIG_CM 0x80000000 +#define RM_RA_ZB_OPA_INTER(clk) AA_EN | Z_CMP | Z_UPD | CVG_DST_CLAMP | ALPHA_CVG_SEL | ZMODE_INTER | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define G_CC_BLENDPEDECALA PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0 +#define CONFIG_CU 0x00000008 +#define G_CYC_1CYCLE (0 << G_MDSFT_CYCLETYPE) +#define ERR_ALBNKFNEW 113 +#define START_BUTTON CONT_START +#define RDRAM_0_BASE_ADDRESS (RDRAM_0_DEVICE_ID*RDRAM_LENGTH) +#define CACH_SD 0x3 +#define ERR_ALSNDPPLAY 109 +#define CACH_SI 0x2 +#define G_RM_FOG_SHADE_A GBL_c1(G_BL_CLR_FOG, G_BL_A_SHADE, G_BL_CLR_IN, G_BL_1MA) +#define CONFIG_DB 0x00000010 +#define CONFIG_DC 0x000001c0 +#define G_CC_PASS2 0, 0, 0, COMBINED, 0, 0, 0, COMBINED +#define SI_PIF_ADDR_RD64B_REG (SI_BASE_REG+0x04) +#define OS_FLAG_FAULT 2 +#define RM_ZB_XLU_DECAL(clk) Z_CMP | IM_RD | CVG_DST_FULL | FORCE_BL | ZMODE_DEC | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define gDPSetCombineKey(pkt,type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_COMBKEY, 1, type) +#define MI_INTR_MASK_VI 0x08 +#define CONFIG_EB 0x00002000 +#define CONFIG_EC 0x70000000 +#define SP_STATUS_TASKDONE SP_STATUS_SIG2 +#define ERR_OSPISTARTDMA_ADDR 32 +#define G_CC_BLENDPE PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, SHADE, 0 +#define CONFIG_EM 0x00004000 +#define G_MWO_MATRIX_YX_YY_I 0x08 +#define CONFIG_EP 0x0f000000 +#define CONFIG_EW 0x000c0000 +#define C0_IMPMASK 0xff00 +#define DPRGBColor(pkt,cmd,r,g,b,a) gDPSetColor(pkt, cmd, (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8))) +#define AL_PLAYING 1 +#define FPCSR_CO 0x00004000 +#define OS_NUM_EVENTS 15 +#define A_MAIN 0x00 +#define G_CC_SHADEDECALA 0, 0, 0, SHADE, 0, 0, 0, TEXEL0 +#define OS_LOG_VERSION 1 +#define _gDPLoadTextureBlock_4b(pkt,timg,tmem,fmt,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) { gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); gDPLoadSync(pkt); gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1, CALC_DXT_4b(width)); gDPPipeSync(pkt); gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) } +#define G_IM_SIZ_4b_BYTES 0 +#define gsDPLoadTile(t,uls,ult,lrs,lrt) gsDPLoadTileGeneric(G_LOADTILE, t, uls, ult, lrs, lrt) +#define G_IM_SIZ_8b_LINE_BYTES G_IM_SIZ_8b_BYTES +#define gDPSetFillColor(pkt,d) gDPSetColor(pkt, G_SETFILLCOLOR, (d)) +#define _SIZE_T_DEF +#define gDPLoadTextureBlock_4bS(pkt,timg,fmt,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) { gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); gDPLoadSync(pkt); gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1, 0 ); gDPPipeSync(pkt); gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) } +#define gsSPDisplayList(dl) gsDma1p( G_DL,dl,0,G_DL_PUSH) +#define RDRAM_0_CONFIG 0x00000 +#define PFS_ERR_ID_FATAL 10 +#define EEPROM_TYPE_16K 0x02 +#define gsSPSetLights0(name) gsSPNumLights(NUMLIGHTS_0), gsSPLight(&name.l[0],1), gsSPLight(&name.a,2) +#define alCSPGetProgram alCSPGetChlProgram +#define gDPParam(pkt,cmd,param) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(cmd, 24, 8); _g->words.w1 = (param); } +#define gsSPSetLights1(name) gsSPNumLights(NUMLIGHTS_1), gsSPLight(&name.l[0],1), gsSPLight(&name.a,2) +#define ERR_OSPIREADIO 26 +#define G_FILLRECT 0xf6 +#define FR_NEG_FRUSTRATIO_1 0x00000001 +#define FR_NEG_FRUSTRATIO_2 0x00000002 +#define FR_NEG_FRUSTRATIO_3 0x00000003 +#define FR_NEG_FRUSTRATIO_4 0x00000004 +#define FR_NEG_FRUSTRATIO_5 0x00000005 +#define FR_NEG_FRUSTRATIO_6 0x00000006 +#define GU_PARSEGBI_ROWMAJOR 1 +#define RM_RA_OPA_SURF(clk) AA_EN | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define G_CC_HILITERGB2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, 0, 0, 0, SHADE +#define PI_STATUS_RESET 0x01 +#define gDPNoParam(pkt,cmd) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(cmd, 24, 8); _g->words.w1 = 0; } +#define G_CC_HILITERGBA PRIMITIVE, SHADE, TEXEL0, SHADE, PRIMITIVE, SHADE, TEXEL0, SHADE +#define gsSPSetLights5(name) gsSPNumLights(NUMLIGHTS_5), gsSPLight(&name.l[0],1), gsSPLight(&name.l[1],2), gsSPLight(&name.l[2],3), gsSPLight(&name.l[3],4), gsSPLight(&name.l[4],5), gsSPLight(&name.a,6) +#define RI_WERROR_REG (RI_BASE_REG+0x1C) +#define ERR_ALEVENTNOFREE 124 +#define CONFIG_IB 0x00000020 +#define CONFIG_IC 0x00000e00 +#define G_CD_ENABLE G_CD_NOISE +#define ERR_ALSEQP_OFF_VOICE 103 +#define PI_BSD_DOM2_PGS_REG (PI_BASE_REG+0x2C) +#define G_BL_A_IN 0 +#define G_DMACMDSIZ 128 +#define _RMON_H_ +#define DPC_START_REG (DPC_BASE_REG+0x00) +#define MI_INTR_PI 0x10 +#define G_TC_CONV (0 << G_MDSFT_TEXTCONV) +#define gsDma0p(c,s,l) { _SHIFTL((c), 24, 8) | _SHIFTL((l), 0, 24), (unsigned int)(s) } +#define CONT_EEPROM 0x8000 +#define OS_VI_NTSC_LPN1 0 +#define gDPFillRectangle(pkt,ulx,uly,lrx,lry) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_FILLRECT, 24, 8) | _SHIFTL((lrx), 14, 10) | _SHIFTL((lry), 2, 10)); _g->words.w1 = (_SHIFTL((ulx), 14, 10) | _SHIFTL((uly), 2, 10));} +#define CONT_A 0x8000 +#define C0_CONTEXT 4 +#define CONT_C 0x0002 +#define CONT_D 0x0004 +#define CONT_E 0x0008 +#define CONT_F 0x0001 +#define CONT_G 0x2000 +#define G_CC_HILITERGBDECALA PRIMITIVE, SHADE, TEXEL0, SHADE, 0, 0, 0, TEXEL0 +#define CONT_L 0x0020 +#define CONT_R 0x0010 +#define gDPSetColorImage(pkt,f,s,w,i) gSetImage(pkt, G_SETCIMG, f, s, w, i) +#define gsSPTexture(s,t,level,tile,on) { (_SHIFTL(G_TEXTURE, 24, 8) | _SHIFTL(BOWTIE_VAL, 16, 8) | _SHIFTL(level, 11, 3) | _SHIFTL(tile, 8, 3) | _SHIFTL(on, 0, 8)), (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)) } +#define gsDPSetCombineKey(type) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_COMBKEY, 1, type) +#define G_RM_RA_ZB_OPA_DECAL2 RM_RA_ZB_OPA_DECAL(2) +#define gsDma1p(c,s,l,p) { (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | _SHIFTL((l), 0, 16)), (unsigned int)(s) } +#define CONFIG_K0 0x00000007 +#define RDRAM_RESET_MODE 0 +#define G_TRI_FILL 0xc8 +#define EXC_WMISS EXC_CODE(3) +#define FR_POS_FRUSTRATIO_1 0x0000ffff +#define FR_POS_FRUSTRATIO_2 0x0000fffe +#define FR_POS_FRUSTRATIO_3 0x0000fffd +#define FR_POS_FRUSTRATIO_4 0x0000fffc +#define FR_POS_FRUSTRATIO_5 0x0000fffb +#define FR_POS_FRUSTRATIO_6 0x0000fffa +#define gsDma2p(c,adrs,len,idx,ofs) { (_SHIFTL((c),24,8)|_SHIFTL((ofs)/8,16,8)| _SHIFTL(((len)-1)/8,8,8)|_SHIFTL((idx),0,8)), (unsigned int)(adrs) } +#define gsDPLoadTLUT_pal256(dram) gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram), gsDPTileSync(), gsDPSetTile(0, 0, 0, 256, G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0), gsDPLoadSync(), gsDPLoadTLUTCmd(G_TX_LOADTILE, 255), gsDPPipeSync() +#define AL_SUSTAIN 63 +#define ERR_ALSEQTRACKHDR 118 +#define G_ACMUX_PRIMITIVE 3 +#define gsDPLoadBlock(tile,uls,ult,lrs,dxt) { (_SHIFTL(G_LOADBLOCK, 24, 8) | _SHIFTL(uls, 12, 12) | _SHIFTL(ult, 0, 12)), (_SHIFTL(tile, 24, 3) | _SHIFTL((MIN(lrs,G_TX_LDBLK_MAX_TXL)), 12, 12) | _SHIFTL(dxt, 0, 12)) } +#define MI_INTR_SI 0x02 +#define SI_STATUS_REG (SI_BASE_REG+0x18) +#define G_TD_SHARPEN (1 << G_MDSFT_TEXTDETAIL) +#define MI_INTR_SP 0x01 +#define DPS_TBIST_GO 0x02 +#define G_CCMUX_SHADE_ALPHA 11 +#define G_CC_MODULATERGBDECALA G_CC_MODULATEIDECALA +#define RAMROM_APP_WRITE_ADDR (RAMROM_MSG_ADDR + (1*RAMROM_BUF_SIZE)) +#define gsDPSetBlendMask(mask) gsDPNoOp() +#define aResample(pkt,f,p,s) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = (_SHIFTL(A_RESAMPLE, 24, 8) | _SHIFTL(f, 16, 8) | _SHIFTL(p, 0, 16)); _a->words.w1 = (unsigned int)(s); } +#define gDPSetKeyR(pkt,cR,sR,wR) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(G_SETKEYR, 24, 8); _g->words.w1 = (_SHIFTL(wR, 16, 12) | _SHIFTL(cR, 8, 8) | _SHIFTL(sR, 0, 8)); } +#define VI_V_CURRENT_LINE_REG VI_CURRENT_REG +#define G_CCMUX_1 6 +#define gsSPSetLights2(name) gsSPNumLights(NUMLIGHTS_2), gsSPLight(&name.l[0],1), gsSPLight(&name.l[1],2), gsSPLight(&name.a,3) +#define gsSPSetLights4(name) gsSPNumLights(NUMLIGHTS_4), gsSPLight(&name.l[0],1), gsSPLight(&name.l[1],2), gsSPLight(&name.l[2],3), gsSPLight(&name.l[3],4), gsSPLight(&name.a,5) +#define G_CCMUX_TEXEL1_ALPHA 9 +#define gsSPSetLights6(name) gsSPNumLights(NUMLIGHTS_6), gsSPLight(&name.l[0],1), gsSPLight(&name.l[1],2), gsSPLight(&name.l[2],3), gsSPLight(&name.l[3],4), gsSPLight(&name.l[4],5), gsSPLight(&name.l[5],6), gsSPLight(&name.a,7) +#define gsSPSetLights7(name) gsSPNumLights(NUMLIGHTS_7), gsSPLight(&name.l[0],1), gsSPLight(&name.l[1],2), gsSPLight(&name.l[2],3), gsSPLight(&name.l[3],4), gsSPLight(&name.l[4],5), gsSPLight(&name.l[5],6), gsSPLight(&name.l[6],7), gsSPLight(&name.a,8) +#define G_PM_NPRIMITIVE (0 << G_MDSFT_PIPELINE) +#define gsDPSetAlphaCompare(type) gsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_ALPHACOMPARE, 2, type) +#define G_RM_AA_ZB_TEX_INTER RM_AA_ZB_TEX_INTER(1) +#define RDRAM_MODE_REG (RDRAM_BASE_REG+0x0c) +#define G_RM_AA_ZB_OPA_INTER RM_AA_ZB_OPA_INTER(1) +#define SP_SET_TASKDONE SP_SET_SIG2 +#define AI_NTSC_MIN_FREQ 3000 +#define gSetImage(pkt,cmd,fmt,siz,width,i) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(cmd, 24, 8) | _SHIFTL(fmt, 21, 3) | _SHIFTL(siz, 19, 2) | _SHIFTL((width)-1, 0, 12); _g->words.w1 = (unsigned int)(i); } +#define G_RM_AA_ZB_XLU_DECAL2 RM_AA_ZB_XLU_DECAL(2) +#define G_CC_MODULATERGBA_PRIM2 G_CC_MODULATEIA_PRIM2 +#define OS_WRITE 1 +#define RDRAM_1_BASE_ADDRESS (RDRAM_1_DEVICE_ID*RDRAM_LENGTH) +#define aADPCMdec(pkt,f,s) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = _SHIFTL(A_ADPCM, 24, 8) | _SHIFTL(f, 16, 8); _a->words.w1 = (unsigned int)(s); } +#define gsDPFillRectangle(ulx,uly,lrx,lry) { (_SHIFTL(G_FILLRECT, 24, 8) | _SHIFTL((lrx), 14, 10) | _SHIFTL((lry), 2, 10)), (_SHIFTL((ulx), 14, 10) | _SHIFTL((uly), 2, 10)) } +#define MI_INTR_VI 0x08 +#define OS_VI_NTSC_LAN2 6 +#define OS_VI_PAL_HPF1 23 +#define OS_VI_PAL_HPF2 27 +#define ALFlagFailIf(condition,flag,error) if (condition) { return; } +#define G_IM_SIZ_16b_LINE_BYTES G_IM_SIZ_16b_BYTES +#define DPS_TBIST_CHECK 0x01 +#define DPC_TMEM_REG (DPC_BASE_REG+0x1C) +#define gDPSetDepthSource(pkt,src) gSPSetOtherMode(pkt, G_SETOTHERMODE_L, G_MDSFT_ZSRCSEL, 1, src) +#define OS_USEC_TO_CYCLES(n) (((u64)(n)*(OS_CPU_COUNTER/15625LL))/(1000000LL/15625LL)) +#define G_CLIPPING 0x00800000 +#define CVG_X_ALPHA 0x1000 +#define G_PM_1PRIMITIVE (1 << G_MDSFT_PIPELINE) +#define SP_DRAM_STACK_SIZE64 (SP_DRAM_STACK_SIZE8 >> 3) +#define G_CCMUX_ENVIRONMENT 5 +#define G_RM_CLD_SURF RM_CLD_SURF(1) +#define A_VOL 0x04 +#define CAUSE_BD 0x80000000 +#define OS_LOG_MAGIC 0x20736a73 +#define AL_CMIDI_CNTRL_LOOPCOUNT_SM 104 +#define VI_LEAP_REG (VI_BASE_REG+0x20) +#define gsSPPerspNormalize(s) gsMoveWd( G_MW_PERSPNORM, 0, (s)) +#define CONFIG_SB 0x00c00000 +#define CONFIG_SC 0x00020000 +#define gDPSetTextureLOD(pkt,type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTLOD, 1, type) +#define CONFIG_SM 0x00010000 +#define G_RM_AA_ZB_XLU_INTER2 RM_AA_ZB_XLU_INTER(2) +#define CONFIG_SS 0x00200000 +#define CONFIG_SW 0x00100000 +#define GCCc0w0(saRGB0,mRGB0,saA0,mA0) (_SHIFTL((saRGB0), 20, 4) | _SHIFTL((mRGB0), 15, 5) | _SHIFTL((saA0), 12, 3) | _SHIFTL((mA0), 9, 3)) +#define GCCc0w1(sbRGB0,aRGB0,sbA0,aA0) (_SHIFTL((sbRGB0), 28, 4) | _SHIFTL((aRGB0), 15, 3) | _SHIFTL((sbA0), 12, 3) | _SHIFTL((aA0), 9, 3)) +#define ERR_OSAISETNEXTBUFFER_ENDADDR 132 +#define ADPCMFSIZE 16 +#define gImmp21(pkt,c,p0,p1,dat) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p0), 8, 16) | _SHIFTL((p1), 0, 8)); _g->words.w1 = (unsigned int) (dat); } +#define RM_OPA_CI(clk) CVG_DST_CLAMP | ZMODE_OPA | GBL_c ##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) +#define G_IM_SIZ_16b_SHIFT 0 +#define PIF_ROM_END 0x1FC007BF +#define gsSPTextureRectangleFlip(xl,yl,xh,yh,tile,s,t,dsdx,dtdy) (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)), (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)), gsImmp1(G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))), gsImmp1(G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))) +#define OS_MESG_BLOCK 1 +#define DL_SPRITE_OVERHEAD (24) +#define G_RM_AA_ZB_SUB_TERR RM_AA_ZB_SUB_TERR(1) +#define gsSPLightColor(n,col) gsMoveWd(G_MW_LIGHTCOL, G_MWO_a ##n, col), gsMoveWd(G_MW_LIGHTCOL, G_MWO_b ##n, col) +#define ERR_OSPIWRITEIO 27 +#define RAMROM_FONTDATA_OFFSET 0xb70 +#define ERR_OSAISETNEXTBUFFER_SIZE 16 +#define PI_DRAM_ADDR_REG (PI_BASE_REG+0x00) +#define L_JPAD CONT_LEFT +#define SP_DMA_BUSY_REG (SP_BASE_REG+0x18) +#define G_RM_AA_ZB_SUB_TERR2 RM_AA_ZB_SUB_TERR(2) +#define ERR_OSPIRAWREADIO 19 +#define GDMACMD(x) (x) +#define _SP_H_ +#define G_CC_HILITERGBPASSA2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, 0, 0, 0, COMBINED +#define gsSPClipRatio(r) gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RNX, FR_NEG_ ##r), gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RNY, FR_NEG_ ##r), gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RPX, FR_POS_ ##r), gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RPY, FR_POS_ ##r) +#define OS_VI_PAL_HPN1 22 +#define OS_VI_PAL_HPN2 26 +#define OS_EVENT_FAULT 12 +#define ERR_ALSEQP_NO_VOICE 101 +#define G_MDSFT_COMBKEY 8 +#define OS_LOG_MAX_ARGS 16 +#define G_TEXTURE_ENABLE 0x00000002 +#define GU_PARSE_MEM_BLOCK 4 +#define gsDPSetTextureLOD(type) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTLOD, 1, type) +#define G_CULL_BACK 0x00002000 +#define RDRAM_DEVICE_TYPE_REG (RDRAM_BASE_REG+0x00) +#define OS_MESG_NOBLOCK 0 +#define gSPSprite2DDraw(pkt,px,py) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_SPRITE2D_DRAW, 24, 8)); _g->words.w1 = (_SHIFTL((px), 16, 16) | _SHIFTL((py), 0, 16)); } +#define gDPLoadTLUTCmd(pkt,tile,count) { Gfx *_g = (Gfx *)pkt; _g->words.w0 = _SHIFTL(G_LOADTLUT, 24, 8); _g->words.w1 = _SHIFTL((tile), 24, 3) | _SHIFTL((count), 14, 10);} +#define G_RM_ZB_OPA_SURF2 RM_ZB_OPA_SURF(2) +#define SIZE_EXCVEC 0x80 +#define OS_FLAG_CPU_BREAK 1 +#define GIMMCMD(x) (G_IMMFIRST-(x)) +#define SP_DRAM_ADDR_REG (SP_BASE_REG+0x04) +#define G_CC_BLENDIDECALA ENVIRONMENT, SHADE, TEXEL0, SHADE, 0, 0, 0, TEXEL0 +#define C_HSV 0x1c +#define G_RM_AA_ZB_SUB_SURF RM_AA_ZB_SUB_SURF(1) +#define RM_VISCVG(clk) IM_RD | FORCE_BL | GBL_c ##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_BL, G_BL_A_MEM) +#define MAX_RATIO 1.99996 +#define G_MWO_aLIGHT_2 0x20 +#define G_MWO_aLIGHT_3 0x40 +#define G_MWO_aLIGHT_4 0x60 +#define G_MWO_aLIGHT_5 0x80 +#define G_MWO_aLIGHT_6 0xa0 +#define G_MWO_aLIGHT_7 0xc0 +#define G_MWO_aLIGHT_8 0xe0 +#define gSPSetLights2(pkt,name) { gSPNumLights(pkt,NUMLIGHTS_2); gSPLight(pkt,&name.l[0],1); gSPLight(pkt,&name.l[1],2); gSPLight(pkt,&name.a,3); } +#define gSPSetLights3(pkt,name) { gSPNumLights(pkt,NUMLIGHTS_3); gSPLight(pkt,&name.l[0],1); gSPLight(pkt,&name.l[1],2); gSPLight(pkt,&name.l[2],3); gSPLight(pkt,&name.a,4); } +#define gSPSetLights4(pkt,name) { gSPNumLights(pkt,NUMLIGHTS_4); gSPLight(pkt,&name.l[0],1); gSPLight(pkt,&name.l[1],2); gSPLight(pkt,&name.l[2],3); gSPLight(pkt,&name.l[3],4); gSPLight(pkt,&name.a,5); } +#define gSPSetLights5(pkt,name) { gSPNumLights(pkt,NUMLIGHTS_5); gSPLight(pkt,&name.l[0],1); gSPLight(pkt,&name.l[1],2); gSPLight(pkt,&name.l[2],3); gSPLight(pkt,&name.l[3],4); gSPLight(pkt,&name.l[4],5); gSPLight(pkt,&name.a,6); } +#define gSPSetLights6(pkt,name) { gSPNumLights(pkt,NUMLIGHTS_6); gSPLight(pkt,&name.l[0],1); gSPLight(pkt,&name.l[1],2); gSPLight(pkt,&name.l[2],3); gSPLight(pkt,&name.l[3],4); gSPLight(pkt,&name.l[4],5); gSPLight(pkt,&name.l[5],6); gSPLight(pkt,&name.a,7); } +#define gSPSetLights7(pkt,name) { gSPNumLights(pkt,NUMLIGHTS_7); gSPLight(pkt,&name.l[0],1); gSPLight(pkt,&name.l[1],2); gSPLight(pkt,&name.l[2],3); gSPLight(pkt,&name.l[3],4); gSPLight(pkt,&name.l[4],5); gSPLight(pkt,&name.l[5],6); gSPLight(pkt,&name.l[6],7); gSPLight(pkt,&name.a,8); } +#define CONFIG_UNCACHED 0x00000002 +#define AI_NTSC_MAX_FREQ 368000 +#define gsSPLine3D(v0,v1,flag) { _SHIFTL(G_LINE3D, 24, 8), __gsSPLine3D_w1f(v0, v1, 0, flag) } +#define gDPLoadTextureTile(pkt,timg,fmt,siz,width,height,uls,ult,lrs,lrt,pal,cms,cmt,masks,maskt,shifts,shiftt) { gDPSetTextureImage(pkt, fmt, siz, width, timg); gDPSetTile(pkt, fmt, siz, (((((lrs)-(uls)+1) * siz ##_TILE_BYTES)+7)>>3), 0, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts); gDPLoadSync(pkt); gDPLoadTile( pkt, G_TX_LOADTILE, (uls)<>3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, G_TX_RENDERTILE, (uls)<words.w0 = (_SHIFTL(G_SPRITE2D_SCALEFLIP, 24, 8) | _SHIFTL((fx), 8, 8) | _SHIFTL((fy), 0, 8)); _g->words.w1 = (_SHIFTL((sx), 16, 16) | _SHIFTL((sy), 0, 16)); } +#define SP_CLR_INTR_BREAK 0x00080 +#define DPS_TBIST_DONE 0x004 +#define SP_STATUS_YIELD SP_STATUS_SIG0 +#define OS_MESG_TYPE_EDMAWRITE (OS_MESG_TYPE_BASE+6) +#define DPC_STATUS_END_VALID 0x200 +#define G_RESERVED0 2 +#define G_RESERVED1 5 +#define G_RESERVED2 7 +#define MI_CLR_DP_INTR 0x0800 +#define ERR_ALMODDELAYOVERFLOW 133 +#define RM_RA_ZB_OPA_SURF(clk) AA_EN | Z_CMP | Z_UPD | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define G_TEXTURE_GEN_LINEAR 0x00080000 +#define gsSPModifyVertex(vtx,where,val) { _SHIFTL(G_MODIFYVTX,24,8)| _SHIFTL((where),16,8)|_SHIFTL((vtx)*2,0,16), (unsigned int)(val) } +#define OS_VI_DITHER_FILTER_ON 0x0040 +#define gSPLightColor(pkt,n,col) { gMoveWd(pkt, G_MW_LIGHTCOL, G_MWO_a ##n, col); gMoveWd(pkt, G_MW_LIGHTCOL, G_MWO_b ##n, col); } +#define DEVICE_TYPE_CART 0 +#define __gsSPLine3D_w1(v0,v1,wd) (_SHIFTL((v0)*2,16,8)|_SHIFT((v1)*2,8,8)|_SHIFT((wd),0,8)) +#define ERR_OSDPSETNEXTBUFFER_SIZE 18 +#define EXC_TRAP EXC_CODE(13) +#define gSPBranchLessZ(pkt,dl,vtx,zval,near,far,flag) gSPBranchLessZrg(pkt, dl, vtx, zval, near, far, flag, 0, G_MAXZ) +#define DPC_PIPEBUSY_REG (DPC_BASE_REG+0x18) +#define RAMROM_CLOCKRATE_OFFSET 0x4 +#define gsDPLoadMultiBlock_4bS(timg,tmem,rtile,fmt,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), gsDPSetTile(fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1,0), gsDPPipeSync(), gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, shifts), gsDPSetTileSize(rtile, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define G_TX_CLAMP 0x2 +#define gsSPSprite2DBase(s) gsDma1p(G_SPRITE2D_BASE, s, sizeof(uSprite), 0) +#define RDRAM_STANDBY_MODE 2 +#define CAUSE_IP3 0x00000400 +#define CAUSE_IP4 0x00000800 +#define CAUSE_IP5 0x00001000 +#define CAUSE_IP6 0x00002000 +#define CAUSE_IP7 0x00004000 +#define CAUSE_IP8 0x00008000 +#define PFS_WRITE 1 +#define G_CC_MODULATERGBA_PRIM G_CC_MODULATEIA_PRIM +#define SR_IBIT1 0x00000100 +#define SR_IBIT2 0x00000200 +#define SR_IBIT3 0x00000400 +#define SR_IBIT4 0x00000800 +#define SR_IBIT5 0x00001000 +#define SR_IBIT6 0x00002000 +#define SR_IBIT7 0x00004000 +#define SR_IBIT8 0x00008000 +#define G_CC_MODULATEI_PRIM TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE +#define C0_RFE 0x10 +#define GU_PARSERDP_PRAREA 2 +#define ERR_ALSEQNOTMIDI 114 +#define G_CC_ADDRGBDECALA 1, 0, TEXEL0, SHADE, 0, 0, 0, TEXEL0 +#define G_RM_RA_ZB_OPA_SURF RM_RA_ZB_OPA_SURF(1) +#define AL_STOPPING 2 +#define DPS_TBIST_FAILED 0x7F8 +#define G_SETOTHERMODE_L (G_IMMFIRST-6) +#define RDRAM_0_DEVICE_ID 0 +#define G_MDSFT_TEXTPERSP 19 +#define TLBCTXT_BASEMASK 0xff800000 +#define C0_ECC 26 +#define gsSPCullDisplayList(vstart,vend) { _SHIFTL(G_CULLDL, 24, 8) | _SHIFTL((vstart)*2, 0, 16), _SHIFTL((vend)*2, 0, 16) } +#define K1_TO_PHYS(x) ((u32)(x)&0x1FFFFFFF) +#define gsDPLoadTextureBlock_4b(timg,fmt,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), gsDPSetTile(fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1, CALC_DXT_4b(width)), gsDPPipeSync(), gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts), gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define A_INIT 0x01 +#define RAMROM_USER_DATA_SIZE (RAMROM_MSG_SIZE-RAMROM_MSG_HDR_SIZE) +#define OS_STATE_WAITING 8 +#define VI_STATUS_REG (VI_BASE_REG+0x00) +#define __gsSP1Quadrangle_w1f(v0,v1,v2,v3,flag) (((flag) == 0) ? __gsSP1Triangle_w1(v0, v1, v2): ((flag) == 1) ? __gsSP1Triangle_w1(v1, v2, v3): ((flag) == 2) ? __gsSP1Triangle_w1(v2, v3, v0): __gsSP1Triangle_w1(v3, v0, v1)) +#define PFS_ERR_NEW_PACK 2 +#define G_IM_FMT_I 4 +#define gsDPNoParam(cmd) { _SHIFTL(cmd, 24, 8), 0 } +#define OS_LOG_FLOAT(x) (*(int *) &(x)) +#define G_MV_L5 0x90 +#define A_SEGMENT 7 +#define G_RM_PCL_SURF RM_PCL_SURF(1) +#define G_ACMUX_LOD_FRACTION 0 +#define gdSPDefLights0(ar,ag,ab) { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, {{{ { 0, 0, 0},0,{ 0, 0, 0},0,{ 0, 0, 0},0}}} } +#define gdSPDefLights1(ar,ag,ab,r1,g1,b1,x1,y1,z1) { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}} } +#define gdSPDefLights2(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2) { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}} } +#define gdSPDefLights3(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3) { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}, {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}} } +#define gdSPDefLights4(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4) { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}, {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}, {{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}}} } +#define gdSPDefLights5(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4,r5,g5,b5,x5,y5,z5) { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}, {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}, {{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}}, {{ {r5,g5,b5},0,{r5,g5,b5},0,{x5,y5,z5},0}}} } +#define G_AD_PATTERN (0 << G_MDSFT_ALPHADITHER) +#define gdSPDefLights7(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4,r5,g5,b5,x5,y5,z5,r6,g6,b6,x6,y6,z6,r7,g7,b7,x7,y7,z7) { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}, {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}, {{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}}, {{ {r5,g5,b5},0,{r5,g5,b5},0,{x5,y5,z5},0}}, {{ {r6,g6,b6},0,{r6,g6,b6},0,{x6,y6,z6},0}}, {{ {r7,g7,b7},0,{r7,g7,b7},0,{x7,y7,z7},0}}} } +#define OS_TASK_USR1 0x0020 +#define OS_TASK_USR2 0x0040 +#define OS_TASK_USR3 0x0080 +#define gDPSetColor(pkt,c,d) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(c, 24, 8); _g->words.w1 = (unsigned int)(d); } +#define G_IM_SIZ_8b_INCR 1 +#define G_TT_IA16 (3 << G_MDSFT_TEXTLUT) +#define PI_BASE_REG 0x04600000 +#define gSPLoadUcodeL(pkt,ucode) gSPLoadUcode((pkt), OS_K0_TO_PHYSICAL(& ##ucode ##TextStart), OS_K0_TO_PHYSICAL(& ##ucode ##DataStart)) +#define C_HWBINV 0x14 +#define R_JPAD CONT_RIGHT +#define G_BL_A_SHADE 2 +#define G_SETFOGCOLOR 0xf8 +#define GAME_DBG_DATA_SEND 3 +#define gSPLookAtX(pkt,l) gDma1p(pkt, G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATX) +#define gSPLookAtY(pkt,l) gDma1p(pkt, G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATY) +#define alSeqpGetProgram alSeqpGetChlProgram +#define DPS_TEST_MODE_REG (DPS_BASE_REG+0x04) +#define gsDPWord(wordhi,wordlo) gsImmp1(G_RDPHALF_1, (unsigned int)(wordhi)), gsImmp1(G_RDPHALF_2, (unsigned int)(wordlo)) +#define gDPScisFillRectangle(pkt,ulx,uly,lrx,lry) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_FILLRECT, 24, 8) | _SHIFTL(MAX((lrx),0), 14, 10) | _SHIFTL(MAX((lry),0), 2, 10)); _g->words.w1 = (_SHIFTL(MAX((ulx),0), 14, 10) | _SHIFTL(MAX((uly),0), 2, 10)); } +#define ERR_OSPIRAWSTARTDMA_SIZE 24 +#define G_TF_BILERP (2 << G_MDSFT_TEXTFILT) +#define G_MWO_MATRIX_XX_XY_I 0x00 +#define G_MW_POINTS 0x0c +#define gsDPSetMaskImage(i) gsDPSetDepthImage(i) +#define G_DL_PUSH 0x00 +#define gsDPLoadSync() gsDPNoParam(G_RDPLOADSYNC) +#define gsDPSetColorImage(f,s,w,i) gsSetImage(G_SETCIMG, f, s, w, i) +#define TLBLO_EXLWR 0x28 +#define PI_CART_ADDR_REG (PI_BASE_REG+0x04) +#define VI_H_SYNC_LEAP_REG VI_LEAP_REG +#define SI_PIF_ADDR_WR64B_REG (SI_BASE_REG+0x10) +#define RM_ZB_PCL_SURF(clk) Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | G_AC_DITHER | GBL_c ##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) +#define G_RM_AA_OPA_SURF2 RM_AA_OPA_SURF(2) +#define AL_FX_FLANGE 4 +#define A_OUT 0x02 +#define _SHIFTR(v,s,w) ((unsigned int)(((unsigned int)(v) >> (s)) & ((0x01 << (w)) - 1))) +#define ERR_OSPROFILEINIT_CNT 62 +#define C0_ENTRYHI 10 +#define TLBLO_NONCOHRNT 0x18 +#define OS_PRIORITY_APPMAX 127 +#define PFS_FILE_NAME_LEN 16 +#define gDPLoadBlock(pkt,tile,uls,ult,lrs,dxt) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_LOADBLOCK, 24, 8) | _SHIFTL(uls, 12, 12) | _SHIFTL(ult, 0, 12)); _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL((MIN(lrs,G_TX_LDBLK_MAX_TXL)), 12, 12) | _SHIFTL(dxt, 0, 12)); } +#define G_TRI_TXTR 0xca +#define SP_STATUS_IO_FULL 0x010 +#define G_SPRITE2D_SCALEFLIP (G_IMMFIRST-1) +#define G_BL_CLR_IN 0 +#define RM_ZB_CLD_SURF(clk) Z_CMP | IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_XLU | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define ERR_ALSNDPSETPAR 112 +#define _RCP_H_ +#define G_MTX 1 +#define gSPFogFactor(pkt,fm,fo) gMoveWd(pkt, G_MW_FOG, G_MWO_FOG, (_SHIFTL(fm,16,16) | _SHIFTL(fo,0,16))) +#define RM_TEX_EDGE(clk) CVG_DST_CLAMP | CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL | ZMODE_OPA | TEX_EDGE | AA_EN | GBL_c ##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) +#define gDPLoadTextureBlock_4b(pkt,timg,fmt,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) { gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); gDPLoadSync(pkt); gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1, CALC_DXT_4b(width)); gDPPipeSync(pkt); gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) } +#define HOST_APP_CMD_READY 9 +#define OS_PRIORITY_VIMGR 254 +#define G_SETCIMG 0xff +#define OS_PRIORITY_RMONSPIN 200 +#define G_RDPHALF_1 (G_IMMFIRST-11) +#define G_RDPHALF_2 (G_IMMFIRST-12) +#define G_CC_REFLECTRGBDECALA ENVIRONMENT, 0, TEXEL0, SHADE, 0, 0, 0, TEXEL0 +#define C0_PROBE 0x8 +#define BUF_FREE_WO_NEXT 0x8000 +#define EXC_BREAK EXC_CODE(9) +#define OS_PIM_STACKSIZE 4096 +#define TLBRAND_RANDMASK 0x3f +#define alSeqpSetProgram alSeqpSetChlProgram +#define OS_VI_BIT_DEFLICKINTERLACE 0x0008 +#define IO_WRITE(addr,data) (*(vu32 *)PHYS_TO_K1(addr)=(u32)(data)) +#define CAUSE_IPMASK 0x0000FF00 +#define G_RM_AA_ZB_TEX_TERR RM_AA_ZB_TEX_TERR(1) +#define _SHIFT _SHIFTL +#define M_DTOR (3.14159265358979323846/180.0) +#define SP_CLR_TASKDONE SP_CLR_SIG2 +#define G_CCMUX_SCALE 6 +#define NULL 0 +#define OS_VI_BIT_LORES 0x0100 +#define ERR_OSSETTLBASID 13 +#define AL_PHASE_SUSTAIN 2 +#define gImmp0(pkt,c) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL((c), 24, 8); } +#define OS_IM_SW2 0x00000601 +#define ERR_OSAISETNEXTBUFFER_ADDR 15 +#define GU_PARSE_READY 3 +#define OS_NSEC_TO_CYCLES(n) (((u64)(n)*(OS_CPU_COUNTER/15625000LL))/(1000000000LL/15625000LL)) +#define AL_MAX_CHANNELS 16 +#define DPS_BASE_REG 0x04200000 +#define PI_DOM_LAT_OFS 0x00 +#define gsDPNoOp() gsDPNoParam(G_NOOP) +#define C0_MINREVMASK 0xf +#define GU_PARSEGBI_ALLMTX 16 +#define GPACK_ZDZ(z,dz) ((z) << 2 | (dz)) +#define aDMEMMove(pkt,i,o,c) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = _SHIFTL(A_DMEMMOVE, 24, 8) | _SHIFTL(i, 0, 24); _a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); } +#define BOOT_ADDRESS_INDY 0x88100000 +#define C0_EPC 14 +#define gDPSetFogColor(pkt,r,g,b,a) DPRGBColor(pkt, G_SETFOGCOLOR, r,g,b,a) +#define G_RM_NOOP2 RM_NOOP(2) +#define gDPSetDepthImage(pkt,i) gSetImage(pkt, G_SETZIMG, 0, 0, 1, i) +#define CONT_RELATIVE 0x0002 +#define PIF_ROM_START 0x1FC00000 +#define ERR_OSVISWAPBUFFER_ADDR 47 +#define gDPLoadTLUT_pal16(pkt,pal,dram) { gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); gDPTileSync(pkt); gDPSetTile(pkt, 0, 0, 0, (256+(((pal)&0xf)*16)), G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0); gDPLoadSync(pkt); gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 15); gDPPipeSync(pkt) } +#define AI_CONTROL_DMA_OFF 0x00 +#define SR_KSU_USR 0x00000010 +#define SP_SET_CPUSIGNAL SP_SET_SIG4 +#define RP(x) rp->r_ ##x +#define UNITY_PITCH 0x8000 +#define G_RM_AA_ZB_DEC_LINE2 RM_AA_ZB_DEC_LINE(2) +#define NUM_DL(nb) ((nb)*DL_BM_OVERHEAD +DL_SPRITE_OVERHEAD) +#define OS_VI_BIT_16PIXEL 0x0040 +#define gsSPFogPosition(min,max) gsMoveWd(G_MW_FOG, G_MWO_FOG, (_SHIFTL((128000/((max)-(min))),16,16) | _SHIFTL(((500-(min))*256/((max)-(min))),0,16))) +#define G_RM_AA_ZB_TEX_EDGE2 RM_AA_ZB_TEX_EDGE(2) +#define MakeTexRect(xh,yh,flip,tile,xl,yl,s,t,dsdx,dtdy) G_TEXRECT, xh, yh, 0, flip, 0, tile, xl, yl, s, t, dsdx, dtdy +#define ERR_ALSEQP_POLY_VOICE 104 +#define C0_REVMASK 0xff +#define SP_DMA_DMEM 0x0000 +#define G_IM_SIZ_4b_LINE_BYTES G_IM_SIZ_4b_BYTES +#define gsDPLoadMultiTile_4b(timg,tmem,rtile,fmt,width,height,uls,ult,lrs,lrt,pal,cms,cmt,masks,maskt,shifts,shiftt) gsDPSetTextureImage(fmt, G_IM_SIZ_8b, ((width)>>1), timg), gsDPSetTile(fmt, G_IM_SIZ_8b, (((((lrs)-(uls)+1)>>1)+7)>>3), tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts), gsDPLoadSync(), gsDPLoadTile( G_TX_LOADTILE, (uls)<<(G_TEXTURE_IMAGE_FRAC-1), (ult)<<(G_TEXTURE_IMAGE_FRAC), (lrs)<<(G_TEXTURE_IMAGE_FRAC-1), (lrt)<<(G_TEXTURE_IMAGE_FRAC)), gsDPPipeSync(), gsDPSetTile(fmt, G_IM_SIZ_4b, (((((lrs)-(uls)+1)>>1)+7)>>3), tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, shifts), gsDPSetTileSize(rtile, (uls)<> siz ##_SHIFT)-1,0); gDPPipeSync(pkt); gDPSetTile(pkt, fmt, siz, (((width) * siz ##_LINE_BYTES)+7)>>3, 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) } +#define SP_IBIST_GO 0x02 +#define G_RM_AA_TEX_EDGE2 RM_AA_TEX_EDGE(2) +#define BLOCKSIZE 32 +#define ALIGNOFFST (ALIGNSZ-1) +#define G_RM_ZB_CLD_SURF RM_ZB_CLD_SURF(1) +#define G_CD_DISABLE (3 << G_MDSFT_RGBDITHER) +#define OS_OTHERS 2 +#define gDPSetScissorFrac(pkt,mode,ulx,uly,lrx,lry) { Gfx *_g = (Gfx *)pkt; _g->words.w0 = _SHIFTL(G_SETSCISSOR, 24, 8) | _SHIFTL((int)((ulx)), 12, 12) | _SHIFTL((int)((uly)), 0, 12); _g->words.w1 = _SHIFTL(mode, 24, 2) | _SHIFTL((int)((lrx)), 12, 12) | _SHIFTL((int)((lry)), 0, 12); } +#define SP_STATUS_SSTEP 0x020 +#define OS_RG_ALIGN_2B 2 +#define OS_MESG_PRI_NORMAL 0 +#define A_POLEF 14 +#define gDPLoadMultiTile_4b(pkt,timg,tmem,rtile,fmt,width,height,uls,ult,lrs,lrt,pal,cms,cmt,masks,maskt,shifts,shiftt) { gDPSetTextureImage(pkt, fmt, G_IM_SIZ_8b, ((width)>>1), timg); gDPSetTile(pkt, fmt, G_IM_SIZ_8b, (((((lrs)-(uls)+1)>>1)+7)>>3), tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts); gDPLoadSync(pkt); gDPLoadTile( pkt, G_TX_LOADTILE, (uls)<<(G_TEXTURE_IMAGE_FRAC-1), (ult)<<(G_TEXTURE_IMAGE_FRAC), (lrs)<<(G_TEXTURE_IMAGE_FRAC-1), (lrt)<<(G_TEXTURE_IMAGE_FRAC)); gDPPipeSync(pkt); gDPSetTile(pkt, fmt, G_IM_SIZ_4b, (((((lrs)-(uls)+1)>>1)+7)>>3), tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, rtile, (uls)<words.w0 = (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)); _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)); gImmp1(pkt, G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))); gImmp1(pkt, G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))); } +#define gSPClipRatio(pkt,r) { gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RNX, FR_NEG_ ##r); gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RNY, FR_NEG_ ##r); gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RPX, FR_POS_ ##r); gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RPY, FR_POS_ ##r); } +#define gsDPSetDepthImage(i) gsSetImage(G_SETZIMG, 0, 0, 1, i) +#define IS_KPTESEG(x) ((u32)(x) >= KPTE_SHDUBASE) +#define OS_RG_ALIGN_4B 4 +#define gDPTileSync(pkt) gDPNoParam(pkt, G_RDPTILESYNC) +#define gsDPSetTexturePersp(type) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTPERSP, 1, type) +#define OS_STATE_STOPPED 1 +#define ERR_OSPROFILESTOP_TIMER 69 +#define MI_INTR_REG (MI_BASE_REG+0x08) +#define gsDPSetCycleType(type) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_CYCLETYPE, 2, type) +#define G_LOADTILE 0xf4 +#define DPC_CLR_FREEZE 0x0004 +#define gsDPSetColorDither(mode) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_RGBDITHER, 2, mode) +#define CONT_NO_RESPONSE_ERROR 0x8 +#define ERR_ALSEQMETA 120 +#define PCLEANEXCL 0x0080 +#define TLBPGMASK_4K 0x0 +#define G_CC_MODULATERGB G_CC_MODULATEI +#define DEVICE_TYPE_BULK 1 +#define PI_STATUS_IO_BUSY 0x02 +#define gDPNoOpTag(pkt,tag) gDPParam(pkt, G_NOOP, tag) +#define L_CBUTTONS CONT_C +#define IS_KSEG0(x) ((u32)(x) >= K0BASE && (u32)(x) < K1BASE) +#define IS_KSEG1(x) ((u32)(x) >= K1BASE && (u32)(x) < K2BASE) +#define IS_KSEG2(x) ((u32)(x) >= K2BASE && (u32)(x) < KPTE_SHDUBASE) +#define G_CC_MODULATERGB_PRIM G_CC_MODULATEI_PRIM +#define L_TRIG CONT_L +#define MI_MODE_EBUS 0x0100 +#define aSetBuffer(pkt,f,i,o,c) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = (_SHIFTL(A_SETBUFF, 24, 8) | _SHIFTL(f, 16, 8) | _SHIFTL(i, 0, 16)); _a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); } +#define G_RM_ZB_OPA_DECAL2 RM_ZB_OPA_DECAL(2) +#define G_RM_RA_ZB_OPA_DECAL RM_RA_ZB_OPA_DECAL(1) +#define VI_H_WIDTH_REG VI_WIDTH_REG +#define RDRAM_DEVICE_ID_REG (RDRAM_BASE_REG+0x04) +#define alSeqpGetPan alSeqpGetChlPan +#define G_TRI_SHADE_TXTR 0xce +#define FPCSR_FU 0x00000008 +#define RDRAM_DELAY_REG (RDRAM_BASE_REG+0x08) +#define OS_IM_AI 0x00040401 +#define OS_RG_ALIGN_8B 8 +#define G_FOG 0x00010000 +#define CONT_TYPE_MASK 0x1f07 +#define DCACHE_LINESIZE 16 +#define SEGMENT_OFFSET(a) ((unsigned int)(a) & 0x00ffffff) +#define __gsSP1Triangle_w1f(v0,v1,v2,flag) (((flag) == 0) ? __gsSP1Triangle_w1(v0, v1, v2): ((flag) == 1) ? __gsSP1Triangle_w1(v1, v2, v0): __gsSP1Triangle_w1(v2, v0, v1)) +#define G_CV_K1 -43 +#define AL_PHASE_SUSTREL 4 +#define WATCHLO_RTRAP 0x00000002 +#define G_AC_DITHER (3 << G_MDSFT_ALPHACOMPARE) +#define gsSPViewport(v) gsDma1p( G_MOVEMEM,(v),sizeof(Vp),G_MV_VIEWPORT) +#define VI_CTRL_DITHER_FILTER_ON 0x10000 +#define gsSPLineW3D(v0,v1,wd,flag) { _SHIFTL(G_LINE3D, 24, 8), __gsSPLine3D_w1f(v0, v1, wd, flag) } +#define G_RM_ADD RM_ADD(1) +#define TLBHI_NPID 255 +#define G_SETTILE 0xf5 +#define ERR_OSSPTASKLOAD_OUT 58 +#define OS_IM_DP 0x00200401 +#define G_LOADBLOCK 0xf3 +#define EXC_CODE(x) ((x)<<2) +#define CHNL_ERR_OVERRUN 0x40 +#define ZMODE_DEC 0xc00 +#define FORCE_BL 0x4000 +#define F3DEX_GBI 1 +#define C_IWBINV 0x0 +#define FILTER_CLAMP 1 +#define G_ZS_PRIM (1 << G_MDSFT_ZSRCSEL) +#define SP_STATUS_INTR_BREAK 0x040 +#define G_RM_AA_SUB_TERR RM_AA_SUB_TERR(1) +#define gDPSetOtherMode(pkt,mode0,mode1) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(G_RDPSETOTHERMODE,24,8)|_SHIFTL(mode0,0,24); _g->words.w1 = (unsigned int)(mode1); } +#define FALSE 0 +#define ERR_OSVISETYSCALE_VIMGR 42 +#define G_MDSFT_BLENDER 16 +#define G_MWO_SEGMENT_0 0x00 +#define IO_READ(addr) (*(vu32 *)PHYS_TO_K1(addr)) +#define ERR_OSSETTHREADPRI 4 +#define PFS_ERR_CONTRFAIL CONT_OVERRUN_ERROR +#define MI_CLR_INIT 0x0080 +#define HOST_DBG_CMD_READY 2 +#define gDPSetKeyGB(pkt,cG,sG,wG,cB,sB,wB) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_SETKEYGB, 24, 8) | _SHIFTL(wG, 12, 12) | _SHIFTL(wB, 0, 12)); _g->words.w1 = (_SHIFTL(cG, 24, 8) | _SHIFTL(sG, 16, 8) | _SHIFTL(cB, 8, 8) | _SHIFTL(sB, 0, 8)); } +#define RAMROM_GAME_OFFSET 0x1000 +#define G_TRI_FILL_ZBUFF 0xc9 +#define ERR_OSUNMAPTLB 12 +#define G_ACMUX_PRIM_LOD_FRAC 6 +#define K1_TO_K0(x) ((u32)(x)&0x9FFFFFFF) +#define SR_ERL 0x00000004 +#define DPC_CLR_CMD_CTR 0x0100 +#define G_TX_WRAP 0 +#define _MBI_H_ +#define G_MWO_SEGMENT_6 0x06 +#define G_AD_NOISE (2 << G_MDSFT_ALPHADITHER) +#define MQ_IS_EMPTY(mq) (MQ_GET_COUNT(mq) == 0) +#define G_RM_AA_ZB_OPA_SURF2 RM_AA_ZB_OPA_SURF(2) +#define gSPLineW3D(pkt,v0,v1,wd,flag) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(G_LINE3D, 24, 8); _g->words.w1 = __gsSPLine3D_w1f(v0, v1, wd, flag); } +#define AL_FX_ECHO 5 +#define A_CONTINUE 0x00 +#define VI_CTRL_TYPE_16 0x00002 +#define G_RM_AA_ZB_XLU_INTER RM_AA_ZB_XLU_INTER(1) +#define G_IM_SIZ_8b_TILE_BYTES G_IM_SIZ_8b_BYTES +#define PI_DOM_RLS_OFS 0x0C +#define G_RDPSETOTHERMODE 0xef +#define G_RM_OPA_CI RM_OPA_CI(1) +#define RM_AA_PCL_SURF(clk) AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | G_AC_DITHER | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define G_CCMUX_0 31 +#define G_CC_TEMPLERP TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0 +#define DPS_BUFTEST_DATA_REG (DPS_BASE_REG+0x0C) +#define VI_CTRL_TYPE_32 0x00003 +#define DPC_STATUS_DMA_BUSY 0x100 +#define PI_BSD_DOM1_PGS_REG (PI_BASE_REG+0x1C) +#define G_IM_SIZ_8b_BYTES 1 +#define RM_AA_ZB_OPA_TERR(clk) AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define RDRAM_START RDRAM_0_START +#define G_RM_TEX_EDGE2 RM_TEX_EDGE(2) +#define G_RM_AA_SUB_SURF RM_AA_SUB_SURF(1) +#define gDPSetRenderMode(pkt,c0,c1) gSPSetOtherMode(pkt, G_SETOTHERMODE_L, G_MDSFT_RENDERMODE, 29, (c0) | (c1)) +#define SR_IMASK0 0x0000ff00 +#define SR_IMASK1 0x0000fe00 +#define SR_IMASK2 0x0000fc00 +#define SR_IMASK3 0x0000f800 +#define SR_IMASK4 0x0000f000 +#define SR_IMASK5 0x0000e000 +#define SR_IMASK6 0x0000c000 +#define SR_IMASK7 0x00008000 +#define SR_IMASK8 0x00000000 +#define C0_INX 0 +#define RM_AA_XLU_LINE(clk) AA_EN | IM_RD | CVG_DST_CLAMP | CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL | ZMODE_OPA | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define GU_PARSE_RDP_TYPE 2 +#define DPC_CLR_FLUSH 0x0010 +#define WIN32 1 +#define RM_AA_ZB_TEX_INTER(clk) AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | CVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_INTER | TEX_EDGE | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define gsDPSetCombineMode(a,b) gsDPSetCombineLERP(a, b) +#define RM_XLU_SURF(clk) IM_RD | CVG_DST_FULL | FORCE_BL | ZMODE_OPA | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define A_LOADBUFF 4 +#define RM_AA_ZB_OPA_INTER(clk) AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ALPHA_CVG_SEL | ZMODE_INTER | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) +#define G_RM_AA_ZB_OPA_SURF RM_AA_ZB_OPA_SURF(1) +#define SR_EXL 0x00000002 +#define C0_WIRED 6 +#define OS_SIM_STACKSIZE 4096 +#define gDPSetHilite2Tile(pkt,tile,hilite,width,height) gDPSetTileSize(pkt, tile, (hilite)->h.x2 & 0xfff, (hilite)->h.y2 & 0xfff, ((((width)-1)*4)+(hilite)->h.x2) & 0xfff, ((((height)-1)*4)+(hilite)->h.y2) & 0xfff) +#define G_CC_SHADE 0, 0, 0, SHADE, 0, 0, 0, SHADE +#define G_IM_SIZ_32b_SHIFT 0 +#define AI_BASE_REG 0x04500000 +#define G_ACMUX_1 6 +#define G_CC_MODULATERGB2 G_CC_MODULATEI2 +#define G_RM_VISCVG RM_VISCVG(1) +#define SI_STATUS_RD_BUSY 0x0002 +#define G_CC_MODULATERGBA G_CC_MODULATEIA +#define HOST_PROF_REQ 11 +#define TEX_EDGE 0x0000 +#define OS_IM_PI 0x00100401 +#define PI_DOM2_ADDR1 0x05000000 +#define PI_WR_LEN_REG (PI_BASE_REG+0x0C) +#define G_RM_AA_ZB_DEC_LINE RM_AA_ZB_DEC_LINE(1) +#define G_SETENVCOLOR 0xfb +#define alCSPSetFXMix alCSPSetChlFXMix +#define ERR_ALSEQOVERRUN 131 +#define SP_STATUS_REG (SP_BASE_REG+0x10) +#define D_JPAD CONT_DOWN +#define GBL_c2(m1a,m1b,m2a,m2b) (m1a) << 28 | (m1b) << 24 | (m2a) << 20 | (m2b) << 16 +#define gsDPLoadTextureTile(timg,fmt,siz,width,height,uls,ult,lrs,lrt,pal,cms,cmt,masks,maskt,shifts,shiftt) gsDPSetTextureImage(fmt, siz, width, timg), gsDPSetTile(fmt, siz, (((((lrs)-(uls)+1) * siz ##_TILE_BYTES)+7)>>3), 0, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts), gsDPLoadSync(), gsDPLoadTile( G_TX_LOADTILE, (uls)<>3), 0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts), gsDPSetTileSize(G_TX_RENDERTILE, (uls)<words.w0 = _SHIFTL(G_RDPHALF_1,24,8); _g->words.w1 = (unsigned int)(uc_dstart); _g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_LOAD_UCODE,24,8)| _SHIFTL((int)(uc_dsize)-1,0,16)); _g->words.w1 = (unsigned int)(uc_start); } +#define OS_STATE_RUNNING 4 +#define RAMROM_PIF2BOOTSTRAP_OFFSET 0x1000 +#define AI_STATUS_FIFO_FULL 0x80000000 +#define gsDPSetTileSize(t,uls,ult,lrs,lrt) gsDPLoadTileGeneric(G_SETTILESIZE, t, uls, ult, lrs, lrt) +#define G_TD_CLAMP (0 << G_MDSFT_TEXTDETAIL) +#define AL_FX_BUFFER_SIZE 8192 +#define G_ACMUX_TEXEL0 1 +#define G_ACMUX_TEXEL1 2 +#define ZMODE_OPA 0 +#define G_IM_SIZ_16b_TILE_BYTES G_IM_SIZ_16b_BYTES +#define OS_IM_SI 0x00020401 +#define RI_CONFIG_REG (RI_BASE_REG+0x04) +#define OS_IM_SP 0x00010401 +#define G_TX_NOLOD 0 +#define AL_KEY_MAX 127 +#define gsSPNumLights(n) gsMoveWd( G_MW_NUMLIGHT, G_MWO_NUMLIGHT, NUML(n)) +#define G_MWO_MATRIX_WX_WY_F 0x38 +#define G_MWO_MATRIX_WX_WY_I 0x18 +#define AL_GAIN_CHANGE_TIME 1000 +#define TLBINX_INXMASK 0x3f +#define G_MTX_PROJECTION 0x01 +#define SP_UCODE_DATA_SIZE 2048 +#define G_RM_ZB_XLU_SURF2 RM_ZB_XLU_SURF(2) +#define CACHERR_EB 0x02000000 +#define CACHERR_EC 0x40000000 +#define CACHERR_EE 0x04000000 +#define SI_BASE_REG 0x04800000 +#define NTLBENTRIES 31 +#define CACHERR_EI 0x01000000 +#define LEO_TRACK_MODE 2 +#define FIX32TOF(x) ((float)(x) * (1.0f / (float)0x00010000)) +#define CACHERR_ER 0x80000000 +#define CACHERR_ES 0x08000000 +#define CACHERR_ET 0x10000000 +#define G_MTX_MODELVIEW 0x00 +#define RM_AA_ZB_DEC_LINE(clk) AA_EN | Z_CMP | IM_RD | CVG_DST_SAVE | CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL | ZMODE_DEC | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define gsSPSetOtherMode(cmd,sft,len,data) { _SHIFTL(cmd, 24, 8) | _SHIFTL(sft, 8, 8) | _SHIFTL(len, 0, 8), (unsigned int)(data) } +#define C0_ERROR_EPC 30 +#define AL_FX_CHORUS 3 +#define AL_FX_CUSTOM 6 +#define OS_IM_VI 0x00080401 +#define G_MAXFBZ 0x3fff +#define PFS_ERR_BAD_DATA 6 +#define TLBPGMASK_16K 0x6000 +#define G_MV_MATRIX_2 0x98 +#define AL_CMIDI_LOOPSTART_CODE 0x2E +#define DPC_STATUS_START_GCLK 0x008 +#define DCACHE_SIZE 0x2000 +#define EXC_IBE EXC_CODE(6) +#define CLR_ON_CVG 0x80 +#define G_MV_VIEWPORT 0x80 +#define RAMROM_RMON_WRITE_ADDR (RAMROM_MSG_ADDR + (3*RAMROM_BUF_SIZE)) +#define ICACHE_LINESIZE 32 +#define SP_IBIST_FAILED 0x78 +#define A_AUX 0x08 +#define G_SC_NON_INTERLACE 0 +#define aLoadBuffer(pkt,s) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = _SHIFTL(A_LOADBUFF, 24, 8); _a->words.w1 = (unsigned int)(s); } +#define GU_PARSERDP_PRHISTO 4 +#define DL_BM_OVERHEAD (12) +#define RAMROM_MSG_ADDR (RAMROM_SIZE - RAMROM_MSG_SIZE) +#define D_CBUTTONS CONT_D +#define gsSPLookAtX(l) gsDma1p( G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATX) +#define G_IM_SIZ_32b_LINE_BYTES 2 +#define OS_VI_GAMMA_DITHER_OFF 0x0008 +#define GCCc1w0(saRGB1,mRGB1) (_SHIFTL((saRGB1), 5, 4) | _SHIFTL((mRGB1), 0, 5)) +#define GCCc1w1(sbRGB1,saA1,mA1,aRGB1,sbA1,aA1) (_SHIFTL((sbRGB1), 24, 4) | _SHIFTL((saA1), 21, 3) | _SHIFTL((mA1), 18, 3) | _SHIFTL((aRGB1), 6, 3) | _SHIFTL((sbA1), 3, 3) | _SHIFTL((aA1), 0, 3)) +#define FPCSR_C 0x00800000 +#define OS_VI_BIT_NORMALINTERLACE 0x0004 +#define C_ILT 0x4 +#define OS_VI_BIT_HIRES 0x0200 +#define ERR_OSGETREGIONBUFSIZE 56 +#define G_IM_SIZ_4b 0 +#define G_CCMUX_PRIMITIVE_ALPHA 10 +#define ERR_OSVISETSPECIAL_VIMGR 44 +#define alSeqpSetFXMix alSeqpSetChlFXMix +#define G_MV_LOOKATX 0x84 +#define G_MV_LOOKATY 0x82 +#define PFS_DIR_FULL 8 +#define AL_KEY_MIN 0 +#define FPCSR_RM_MASK 0x00000003 +#define MI_INTR_MASK_AI 0x04 +#define G_IM_SIZ_8b_LOAD_BLOCK G_IM_SIZ_16b +#define G_MDSFT_ALPHADITHER 4 +#define G_SETSCISSOR 0xed +#define G_RDPFULLSYNC 0xe9 +#define G_RM_OPA_SURF2 RM_OPA_SURF(2) +#define G_RM_ZB_OPA_DECAL RM_ZB_OPA_DECAL(1) +#define gsDPSetCombineLERP(a0,b0,c0,d0,Aa0,Ab0,Ac0,Ad0,a1,b1,c1,d1,Aa1,Ab1,Ac1,Ad1) { _SHIFTL(G_SETCOMBINE, 24, 8) | _SHIFTL(GCCc0w0(G_CCMUX_ ##a0, G_CCMUX_ ##c0, G_ACMUX_ ##Aa0, G_ACMUX_ ##Ac0) | GCCc1w0(G_CCMUX_ ##a1, G_CCMUX_ ##c1), 0, 24), (unsigned int)(GCCc0w1(G_CCMUX_ ##b0, G_CCMUX_ ##d0, G_ACMUX_ ##Ab0, G_ACMUX_ ##Ad0) | GCCc1w1(G_CCMUX_ ##b1, G_ACMUX_ ##Aa1, G_ACMUX_ ##Ac1, G_CCMUX_ ##d1, G_ACMUX_ ##Ab1, G_ACMUX_ ##Ad1)) } +#define CONFIG_EC_2_1 0x0 +#define AL_PHASE_RELEASE 3 +#define ERR_ALSEQP_MAP_VOICE 102 +#define SP_BASE_REG 0x04040000 +#define B_BUTTON CONT_B +#define DPC_CURRENT_REG (DPC_BASE_REG+0x08) +#define OS_PHYSICAL_TO_K1(x) (void *)(((u32)(x)+0xa0000000)) +#define AL_EVTQ_END 0x7fffffff +#define CONFIG_DC_SHFT 6 +#define G_RM_ZB_XLU_DECAL2 RM_ZB_XLU_DECAL(2) +#define TLBHI_VPN2MASK 0xffffe000 +#define G_MDSFT_TEXTCONV 9 +#define alCSPSetProgram alCSPSetChlProgram +#define CAUSE_EXCSHIFT 2 +#define gsDPNoOpTag(tag) gsDPParam(G_NOOP, tag) +#define A_CLEARBUFF 2 +#define gsDPSetFillColor(d) gsDPSetColor(G_SETFILLCOLOR, (d)) +#define MI_INIT_MODE_REG (MI_BASE_REG+0x00) +#define MI_INTR_MASK_DP 0x20 +#define G_IM_SIZ_8b 1 +#define SP_CLR_YIELD SP_CLR_SIG0 +#define G_CC_HILITERGBA2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, ENVIRONMENT, COMBINED, TEXEL0, COMBINED +#define G_RM_ZB_OPA_SURF RM_ZB_OPA_SURF(1) +#define gsSPForceMatrix(mptr) gsDma1p( G_MOVEMEM, mptr, 16, G_MV_MATRIX_1), gsDma1p( G_MOVEMEM, (char *)(mptr)+16, 16, G_MV_MATRIX_2), gsDma1p( G_MOVEMEM, (char *)(mptr)+32, 16, G_MV_MATRIX_3), gsDma1p( G_MOVEMEM, (char *)(mptr)+48, 16, G_MV_MATRIX_4) +#define G_DEPTOZSrg(zval,near,far,flag,zmin,zmax) (((unsigned int)FTOFIX32(((flag) == G_BZ_PERSP ? (1.0f-(float)(near)/(float)(zval)) / (1.0f-(float)(near)/(float)(far )) : ((float)(zval) - (float)(near)) / ((float)(far ) - (float)(near))))) * (((int)((zmax) - (zmin)))&~1) + (int)FTOFIX32(zmin)) +#define gsSPFogFactor(fm,fo) gsMoveWd(G_MW_FOG, G_MWO_FOG, (_SHIFTL(fm,16,16) | _SHIFTL(fo,0,16))) +#define OS_VI_NTSC_HAF1 11 +#define ERR_ALSEQNUMTRACKS 116 +#define gDPLoadMultiBlockS(pkt,timg,tmem,rtile,fmt,siz,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) { gDPSetTextureImage(pkt, fmt, siz ##_LOAD_BLOCK, 1, timg); gDPSetTile(pkt, fmt, siz ##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts); gDPLoadSync(pkt); gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width)*(height) + siz ##_INCR) >> siz ##_SHIFT)-1,0); gDPPipeSync(pkt); gDPSetTile(pkt, fmt, siz, (((width) * siz ##_LINE_BYTES)+7)>>3, tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, rtile, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) } +#define gsSetImage(cmd,fmt,siz,width,i) { _SHIFTL(cmd, 24, 8) | _SHIFTL(fmt, 21, 3) | _SHIFTL(siz, 19, 2) | _SHIFTL((width)-1, 0, 12), (unsigned int)(i) } +#define G_CCMUX_K4 7 +#define G_CCMUX_K5 15 +#define G_RM_ZB_CLD_SURF2 RM_ZB_CLD_SURF(2) +#define RMON_STACKSIZE 0x1000 +#define HOST_FAULT_ACK 15 +#define gDPSetHilite1Tile(pkt,tile,hilite,width,height) gDPSetTileSize(pkt, tile, (hilite)->h.x1 & 0xfff, (hilite)->h.y1 & 0xfff, ((((width)-1)*4)+(hilite)->h.x1) & 0xfff, ((((height)-1)*4)+(hilite)->h.y1) & 0xfff) +#define G_RM_ZB_OVL_SURF RM_ZB_OVL_SURF(1) +#define RAMROM_LOG_ADDR (RAMROM_MSG_ADDR + (5*RAMROM_BUF_SIZE)) +#define OS_PRIORITY_RMON 250 +#define CALC_DXT(width,b_txl) (((1 << G_TX_DXT_FRAC) + TXL2WORDS(width, b_txl) - 1) / TXL2WORDS(width, b_txl)) +#define G_RM_AA_TEX_TERR RM_AA_TEX_TERR(1) +#define _G_CC_BLENDPE ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, TEXEL0, 0, SHADE, 0 +#define G_SETOTHERMODE_H (G_IMMFIRST-5) +#define alCSPSetChannelPriority alCSPSetChlPriority +#define OS_VI_BIT_ANTIALIAS 0x0010 +#define C_IST 0x8 +#define ALPHA_CVG_SEL 0x2000 +#define SR_ITS 0x01000000 +#define OS_MESG_TYPE_COUNTER (OS_MESG_TYPE_BASE+4) +#define OS_VI_PAL_LAF1 17 +#define OS_VI_PAL_LAF2 21 +#define CONFIG_NONCOHRNT 0x00000003 +#define aSetLoop(pkt,a) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = _SHIFTL(A_SETLOOP, 24, 8); _a->words.w1 = (unsigned int)(a); } +#define ERR_OSPIRAWWRITEIO 20 +#define GU_BLINKRDP_HILITE 1 +#define CONT_DOWN 0x0400 +#define gsMoveWd(index,offset,data) gsImmp21( G_MOVEWORD, offset, index, data) +#define ERR_OSSTOPTIMER 77 +#define OS_MESG_TYPE_DMAWRITE (OS_MESG_TYPE_BASE+2) +#define sDPRGBColor(cmd,r,g,b,a) gsDPSetColor(cmd, (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8))) +#define _SIZE_T +#define A_ENVMIXER 3 +#define EXC_INT EXC_CODE(0) +#define G_IMMFIRST -65 +#define GAME_PRINTF_SEND 5 +#define RAMROM_BUF_SIZE (4096) +#define G_MW_NUMLIGHT 0x02 +#define ERR_OSVISETXSCALE_VALUE 39 +#define PI_STATUS_ERROR 0x04 +#define G_SETKEYGB 0xea +#define G_MDSFT_TEXTLOD 16 +#define CONT_CARD_PULL 0x02 +#define G_MWO_MATRIX_YX_YY_F 0x28 +#define OS_TV_PAL 0 +#define SP_SEMAPHORE_REG (SP_BASE_REG+0x1C) +#define G_RM_ZB_OVL_SURF2 RM_ZB_OVL_SURF(2) +#define OS_MESG_TYPE_EDMAREAD (OS_MESG_TYPE_BASE+5) +#define MI_MODE_REG MI_INIT_MODE_REG +#define K2BASE 0xC0000000 +#define gDPPipeSync(pkt) gDPNoParam(pkt, G_RDPPIPESYNC) +#define G_CC_INTERFERENCE TEXEL0, 0, TEXEL1, 0, TEXEL0, 0, TEXEL1, 0 +#define gSPInsertMatrix(pkt,where,num) gMoveWd(pkt, G_MW_MATRIX, where, num) +#define G_IM_SIZ_16b_LOAD_BLOCK G_IM_SIZ_16b +#define OS_DCACHE_ROUNDUP_SIZE(x) (u32)(((((u32)(x)+0xf)/0x10)*0x10)) +#define ERR_ALHEAPNOFREE 125 +#define gsDPSetTextureDetail(type) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTDETAIL, 2, type) +#define RAMROM_RMON_READ_ADDR (RAMROM_MSG_ADDR + (2*RAMROM_BUF_SIZE)) +#define G_CC_MODULATEI TEXEL0, 0, SHADE, 0, 0, 0, 0, SHADE +#define _gDPLoadTextureBlockTile(pkt,timg,tmem,rtile,fmt,siz,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) { gDPSetTextureImage(pkt, fmt, siz ##_LOAD_BLOCK, 1, timg); gDPSetTile(pkt, fmt, siz ##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); gDPLoadSync(pkt); gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width)*(height) + siz ##_INCR) >> siz ##_SHIFT)-1, CALC_DXT(width, siz ##_BYTES)); gDPPipeSync(pkt); gDPSetTile(pkt, fmt, siz, (((width) * siz ##_LINE_BYTES)+7)>>3, tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, rtile, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) } +#define gsSPPopMatrix(n) gsImmp1( G_POPMTX, n) +#define OS_EVENT_AI 6 +#define G_IM_SIZ_16b_BYTES 2 +#define gDPSetEnvColor(pkt,r,g,b,a) DPRGBColor(pkt, G_SETENVCOLOR, r,g,b,a) +#define _SPTASK_H_ +#define gSPLoadUcode(pkt,uc_start,uc_dstart) gSPLoadUcodeEx((pkt), (uc_start), (uc_dstart), SP_UCODE_DATA_SIZE) +#define SR_BEV 0x00400000 +#define VI_V_BURST_REG (VI_BASE_REG+0x2C) +#define CONT_TYPE_NORMAL 0x0005 +#define OS_VI_NTSC_HAN1 10 +#define SP_DMEM_END 0x04000FFF +#define gSPMatrix(pkt,m,p) gDma1p(pkt, G_MTX, m, sizeof(Mtx), p) +#define G_SETZIMG 0xfe +#define alSeqpSetChannelPriority alSeqpSetChlPriority +#define _G_CC_SPARSEST PRIMITIVE, TEXEL0, LOD_FRACTION, TEXEL0, PRIMITIVE, TEXEL0, LOD_FRACTION, TEXEL0 +#define RAMROM_APP_READ_ADDR (RAMROM_MSG_ADDR + (0*RAMROM_BUF_SIZE)) +#define OS_VIM_STACKSIZE 4096 +#define gsSPLookAtY(l) gsDma1p( G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATY) +#define EXC_RMISS EXC_CODE(2) +#define alSeqpSetPan alSeqpSetChlPan +#define PI_SET_RESET PI_STATUS_RESET +#define G_DL 6 +#define AI_STATUS_REG (AI_BASE_REG+0x0C) +#define ERR_OSMAPTLB_ASID 11 +#define K0_TO_PHYS(x) ((u32)(x)&0x1FFFFFFF) +#define G_MODIFYVTX (G_IMMFIRST-13) +#define R_CBUTTONS CONT_F +#define OS_PRIORITY_SIMGR 140 +#define G_SETPRIMCOLOR 0xfa +#define OS_EVENT_DP 9 +#define SP_IBIST_CLEAR 0x04 +#define SR_KSU_KER 0x00000000 +#define AL_DEFAULT_FXMIX 0 +#define G_CC_MODULATERGB_PRIM2 G_CC_MODULATEI_PRIM2 +#define OS_VI_PAL_LAN1 16 +#define OS_VI_PAL_LAN2 20 +#define OS_VI_MPAL_HAF1 39 +#define G_ENDDL (G_IMMFIRST-7) +#define gSPLookAt(pkt,la) { gSPLookAtX(pkt,la) gSPLookAtY(pkt,(char *)(la)+16) } +#define gDPSetTextureDetail(pkt,type) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTDETAIL, 2, type) +#define MI_INTR_MASK_PI 0x10 +#define G_MDSFT_TEXTLUT 14 +#define A_SETVOL 9 +#define DPC_BASE_REG 0x04100000 +#define TLBCTXT_BASEBITS 9 +#define ERR_ALHEAPFIRSTBLOCK 127 +#define GPACK_RGBA5551(r,g,b,a) ((((r)<<8) & 0xf800) | (((g)<<3) & 0x7c0) | (((b)>>2) & 0x3e) | ((a) & 0x1)) +#define CAUSE_CEMASK 0x30000000 +#define C0_MAJREVSHIFT 4 +#define PI_BSD_DOM2_LAT_REG (PI_BASE_REG+0x24) +#define OS_STATE_RUNNABLE 2 +#define OS_SC_SWAPBUFFER 0x40 +#define G_SPRITE2D_BASE 9 +#define A_LOADADPCM 11 +#define CONT_EEPROM_BUSY 0x80 +#define CHNL_ERR_COLLISION 0x40 +#define AL_PAN_CENTER 64 +#define PHYS_TO_K0(x) ((u32)(x)|0x80000000) +#define PHYS_TO_K1(x) ((u32)(x)|0xA0000000) +#define G_MWO_POINT_ST 0x14 +#define G_SHADE 0x00000004 +#define G_MWO_SEGMENT_4 0x04 +#define ERR_ALSNDPDELETE 108 +#define AL_PAN_RIGHT 127 +#define SSTATEMASK 0x00001c00 +#define gSPViewport(pkt,v) gDma1p(pkt,G_MOVEMEM,(v),sizeof(Vp),G_MV_VIEWPORT) +#define G_TP_PERSP (1 << G_MDSFT_TEXTPERSP) +#define RDRAM_RAS_INTERVAL_REG (RDRAM_BASE_REG+0x18) +#define _ULTRATYPES_H_ +#define MI_INTR_MASK_SI 0x02 +#define OS_VI_DIVOT_OFF 0x0020 +#define MI_INTR_MASK_SP 0x01 +#define G_MWO_POINT_RGBA 0x10 +#define DPC_STATUS_TMEM_BUSY 0x010 +#define CONT_LEFT 0x0200 +#define G_RDPTILESYNC 0xe8 +#define DPC_CLR_TMEM_CTR 0x0040 +#define MI_MODE_RDRAM 0x0200 +#define G_IM_FMT_YUV 1 +#define G_BL_1MA 0 +#define PFS_DATA_FULL 7 +#define TLBINX_PROBE 0x80000000 +#define gsDPTextureRectangle(xl,yl,xh,yh,tile,s,t,dsdx,dtdy) { (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)), (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)), }, { _SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16), _SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16) } +#define VI_WIDTH_REG (VI_BASE_REG+0x08) +#define _gsDPLoadTextureBlock_4b(timg,tmem,fmt,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), gsDPSetTile(fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, shifts), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1, CALC_DXT_4b(width)), gsDPPipeSync(), gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts), gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) +#define CVG_DST_FULL 0x200 +#define ERR_OSVIGETNEXTFRAMEBUFFER 38 +#define G_RESERVED3 8 +#define G_CC_MODULATEIDECALA_PRIM TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, TEXEL0 +#define RDRAM_1_START 0x00200000 +#define gsSPEndDisplayList() { _SHIFTL(G_ENDDL, 24, 8), 0 } +#define AI_MAX_BIT_RATE 16 +#define _PLAYER_H_ +#define OS_CPU_COUNTER (OS_CLOCK_RATE*3/4) +#define OS_MESG_TYPE_DMAREAD (OS_MESG_TYPE_BASE+1) +#define MI_SET_EBUS 0x0400 +#define DEVICE_TYPE_SRAM 3 +#define HOST_PIACCESS_REQ 1 +#define CAUSE_EXCMASK 0x0000007C +#define gsSPSprite2DDraw(px,py) { (_SHIFTL(G_SPRITE2D_DRAW, 24, 8)), (_SHIFTL((px), 16, 16) | _SHIFTL((py), 0, 16)) } +#define DPC_SET_FREEZE 0x0008 +#define G_RM_FOG_PRIM_A GBL_c1(G_BL_CLR_FOG, G_BL_A_FOG, G_BL_CLR_IN, G_BL_1MA) +#define _LANGUAGE_C 1 +#define gSPTextureL(pkt,s,t,level,xparam,tile,on) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_TEXTURE, 24, 8) | _SHIFTL(xparam, 16, 8) | _SHIFTL(level, 11, 3) | _SHIFTL(tile, 8, 3) | _SHIFTL(on, 0, 8)); _g->words.w1 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)); } +#define SECC_MASK 0x0000007f +#define SP_EXTERN 0x00000400 +#define OS_VI_MPAL_HAN1 38 +#define gDPSetPrimColor(pkt,m,l,r,g,b,a) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_SETPRIMCOLOR, 24, 8) | _SHIFTL(m, 8, 8) | _SHIFTL(l, 0, 8)); _g->words.w1 = (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8)); } +#define gDPSetConvert(pkt,k0,k1,k2,k3,k4,k5) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_SETCONVERT, 24, 8) | _SHIFTL(k0, 13, 9) | _SHIFTL(k1, 4, 9) | _SHIFTR(k2, 5, 4)); _g->words.w1 = (_SHIFTL(k2, 27, 5) | _SHIFTL(k3, 18, 9) | _SHIFTL(k4, 9, 9) | _SHIFTL(k5, 0, 9)); } +#define VI_TIMING_REG VI_BURST_REG +#define G_RDPCMDSIZ 64 +#define G_CULLDL (G_IMMFIRST-1) +#define OS_EVENT_THREADSTATUS 13 +#define TLBINX_INXSHIFT 0 +#define OS_VI_NTSC_LPF2 5 +#define gDPLoadMultiBlock(pkt,timg,tmem,rtile,fmt,siz,width,height,pal,cms,cmt,masks,maskt,shifts,shiftt) { gDPSetTextureImage(pkt, fmt, siz ##_LOAD_BLOCK, 1, timg); gDPSetTile(pkt, fmt, siz ##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, masks, shifts); gDPLoadSync(pkt); gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, (((width)*(height) + siz ##_INCR) >> siz ##_SHIFT)-1, CALC_DXT(width, siz ##_BYTES)); gDPPipeSync(pkt); gDPSetTile(pkt, fmt, siz, (((width) * siz ##_LINE_BYTES)+7)>>3, tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, shifts); gDPSetTileSize(pkt, rtile, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, ((height)-1) << G_TEXTURE_IMAGE_FRAC) } +#define G_MV_TXTATT 0x96 +#define G_MW_LIGHTCOL 0x0a +#define OS_EVENT_PRENMI 14 +#define CONFIG_EC_3_1 0x1 +#define A_RESAMPLE 5 +#define G_RM_AA_OPA_TERR RM_AA_OPA_TERR(1) +#define G_MDSFT_COLORDITHER 22 +#define G_ON (1) +#define _OS_H_ +#define G_MW_FOG 0x08 +#define G_IM_FMT_RGBA 0 +#define gSPNumLights(pkt,n) gMoveWd(pkt, G_MW_NUMLIGHT, G_MWO_NUMLIGHT, NUML(n)) +#define CONT_RIGHT 0x0100 +#define LEO_SECTOR_MODE 3 +#define SP_DMEM_START 0x04000000 +#define OS_EVENT_PI 8 +#define TLBWIRED_WIREDMASK 0x3f +#define SP_CLR_SSTEP 0x00020 +#define EEPROM_MAXBLOCKS 64 +#define G_MDSFT_ALPHACOMPARE 0 +#define A_DMEMMOVE 10 +#define DPC_SET_FLUSH 0x0020 +#define MAX(a,b) ((a) > (b) ? (a) : (b)) +#define M_AUDTASK 2 +#define G_TEXTURE_GEN 0x00040000 +#define ERR_OSVISETXSCALE_VIMGR 40 +#define PI_DOM_PWD_OFS 0x04 +#define gsSPSprite2DScaleFlip(sx,sy,fx,fy) { (_SHIFTL(G_SPRITE2D_SCALEFLIP, 24, 8) | _SHIFTL((fx), 8, 8) | _SHIFTL((fy), 0, 8)), (_SHIFTL((sx), 16, 16) | _SHIFTL((sy), 0, 16)) } +#define K1BASE 0xA0000000 +#define ERR_ALCSEQZEROSTATUS 128 +#define AL_PHASE_NOTEON 0 +#define C0_ENTRYLO0 2 +#define C0_ENTRYLO1 3 +#define ERR_ALSNDPSETSOUND 110 +#define RAMROM_CLOCKRATE_MASK 0xfffffff0 +#define ERR_OSVIGETCURRENTFRAMEBUFFER 37 +#define MI_NOOP_REG MI_VERSION_REG +#define ERR_OSGETREGIONBUFCOUNT 55 +#define OS_RG_ALIGN_DEFAULT OS_RG_ALIGN_8B +#define AL_HEAP_DEBUG 1 +#define AL_VOL_FULL 127 +#define OS_EVENT_SI 5 +#define G_IM_SIZ_4b_TILE_BYTES G_IM_SIZ_4b_BYTES +#define OS_EVENT_SP 4 +#define G_ZBUFFER 0x00000001 +#define AL_CMIDI_CNTRL_LOOPCOUNT_BIG 105 +#define G_TEXTURE_SCALE_FRAC 16 +#define CHNL_ERR_MASK 0xC0 +#define G_CC_1CYUV2RGB TEXEL0, K4, K5, TEXEL0, 0, 0, 0, SHADE +#define HOST_LOG_ACK 8 +#define AL_HEAP_MAGIC 0x20736a73 +#define OS_IM_NONE 0x00000001 +#define gDPLoadTLUT_pal256(pkt,dram) { gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); gDPTileSync(pkt); gDPSetTile(pkt, 0, 0, 0, 256, G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0); gDPLoadSync(pkt); gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 255); gDPPipeSync(pkt) } +#define PI_CLR_INTR PI_STATUS_CLR_INTR +#define ERR_OSREADHOST_ADDR 70 +#define G_MWO_POINT_ZSCREEN 0x1c +#define __R4300_H__ +#define RDRAM_ACTIVE_MODE 1 +#define RM_PCL_SURF(clk) CVG_DST_FULL | FORCE_BL | ZMODE_OPA | G_AC_DITHER | GBL_c ##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) +#define OS_VI_NTSC_HPF1 9 +#define OS_VI_NTSC_HPF2 13 +#define DPC_STATUS_FLUSH 0x004 +#define A_ADPCM 1 +#define ERR_OSPROFILEINIT_ORD 64 +#define PADDRMASK 0xFFFFFF00 +#define ERR_OSPROFILESTART_FLAG 67 +#define DPS_TBIST_CLEAR 0x04 +#define G_CCMUX_PRIMITIVE 3 +#define OS_EVENT_VI 7 +#define EXC_MOD EXC_CODE(1) +#define OS_IM_CPU 0x0000ff01 +#define PFS_ERR_EXIST 9 +#define MI_VERSION_REG (MI_BASE_REG+0x04) +#define ERR_OSSPTASKLOAD_YIELD 60 +#define M_GFXTASK 1 +#define OS_PM_64K 0x001e000 +#define CONT_TYPE_MOUSE 0x0002 +#define SP_IMEM_END 0x04001FFF +#define SP_MEM_ADDR_REG (SP_BASE_REG+0x00) +#define SP_TRANSPARENT 0x00000001 +#define OS_VI_PAL_LPF1 15 +#define OS_VI_PAL_LPF2 19 +#define G_RM_AA_DEC_LINE RM_AA_DEC_LINE(1) +#define TLBLO_PFNMASK 0x3fffffc0 +#define VI_BASE_REG 0x04400000 +#define G_TX_RENDERTILE 0 +#define ERR_OSVISETMODE 45 +#define G_MTX_LOAD 0x02 +#define VI_BURST_REG (VI_BASE_REG+0x14) +#define gsDPLoadTLUTCmd(tile,count) { _SHIFTL(G_LOADTLUT, 24, 8), _SHIFTL((tile), 24, 3) | _SHIFTL((count), 14, 10) } +#define G_ACMUX_COMBINED 0 +#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#define G_AD_DISABLE (3 << G_MDSFT_ALPHADITHER) +#define G_IM_SIZ_32b_INCR 0 +#define gDPNoOp(pkt) gDPNoParam(pkt, G_NOOP) +#define PI_BSD_DOM2_RLS_REG (PI_BASE_REG+0x30) +#define C0_PAGEMASK 5 +#define VI_V_INTR_REG VI_INTR_REG +#define G_TT_RGBA16 (2 << G_MDSFT_TEXTLUT) +#define alCSPGetChannelPriority alCSPGetChlPriority +#define G_RM_AA_ZB_XLU_SURF2 RM_AA_ZB_XLU_SURF(2) +#define AL_FX_SMALLROOM 1 +#define OS_DCACHE_ROUNDUP_ADDR(x) (void *)(((((u32)(x)+0xf)/0x10)*0x10)) +#define aClearBuffer(pkt,d,c) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = _SHIFTL(A_CLEARBUFF, 24, 8) | _SHIFTL(d, 0, 24); _a->words.w1 = (unsigned int)(c); } +#define alCSPGetFXMix alCSPGetChlFXMix +#define G_SHADING_SMOOTH 0x00000200 +#define G_RM_AA_XLU_SURF2 RM_AA_XLU_SURF(2) +#define DPS_BUFTEST_ADDR_REG (DPS_BASE_REG+0x08) +#define DPC_SET_XBUS_DMEM_DMA 0x0002 +#define AI_MAX_DAC_RATE 16384 +#define G_MWO_MATRIX_ZZ_ZW_F 0x34 +#define G_ACMUX_SHADE 4 +#define G_MWO_MATRIX_ZZ_ZW_I 0x14 +#define G_SCALE_FRAC 8 +#define _REGION_H_ +#define aPoleFilter(pkt,f,g,s) { Acmd *_a = (Acmd *)pkt; _a->words.w0 = (_SHIFTL(A_POLEF, 24, 8) | _SHIFTL(f, 16, 8) | _SHIFTL(g, 0, 16)); _a->words.w1 = (unsigned int)(s); } +#define SP_SET_INTR 0x00010 +#define G_CC_MODULATEIA TEXEL0, 0, SHADE, 0, TEXEL0, 0, SHADE, 0 +#define VI_H_SYNC_REG (VI_BASE_REG+0x1C) +#define OS_VI_NTSC_HPN1 8 +#define OS_VI_NTSC_HPN2 12 +#define SR_CUMASK 0xf0000000 +#define SR_KSU_MASK 0x00000018 +#define gsDPLoadTileGeneric(c,tile,uls,ult,lrs,lrt) { _SHIFTL(c, 24, 8) | _SHIFTL(uls, 12, 12) | _SHIFTL(ult, 0, 12), _SHIFTL(tile, 24, 3) | _SHIFTL(lrs, 12, 12) | _SHIFTL(lrt, 0, 12)} +#define OS_VI_BIT_INTERLACE 0x0002 +#define G_TP_NONE (0 << G_MDSFT_TEXTPERSP) +#define SDIRTYEXCL 0x00001400 +#define ERR_ALCSPVNOTFREE 130 +#define DPC_CLR_CLOCK_CTR 0x0200 +#define G_RM_AA_ZB_TEX_EDGE RM_AA_ZB_TEX_EDGE(1) +#define gSPBranchLessZrg(pkt,dl,vtx,zval,near,far,flag,zmin,zmax) { Gfx *_g = (Gfx *)(pkt); _g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8); _g->words.w1 = (unsigned int)(dl); _g = (Gfx *)(pkt); _g->words.w0 = (_SHIFTL(G_BRANCH_Z,24,8)| _SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12)); _g->words.w1 = G_DEPTOZSrg(zval, near, far, flag, zmin, zmax); } +#define OS_VI_PAL_LPN1 14 +#define OS_VI_PAL_LPN2 18 +#define A_LOOP 0x02 +#define RM_AA_ZB_XLU_INTER(clk) AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | FORCE_BL | ZMODE_INTER | GBL_c ##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) +#define OS_VI_MPAL_HPF1 37 +#define OS_VI_MPAL_HPF2 41 +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned long u32; +typedef unsigned long long u64; +typedef signed char s8; +typedef short s16; +typedef long s32; +typedef long long s64; +typedef volatile unsigned char vu8; +typedef volatile unsigned short vu16; +typedef volatile unsigned long vu32; +typedef volatile unsigned long long vu64; +typedef volatile signed char vs8; +typedef volatile short vs16; +typedef volatile long vs32; +typedef volatile long long vs64; +typedef float f32; +typedef double f64; +typedef s32 OSPri; +typedef s32 OSId; +typedef union { struct { f32 f_odd; f32 f_even; } f; f64 d; } __OSfp; +typedef struct { + u64 at, v0, v1, a0, a1, a2, a3; + u64 t0, t1, t2, t3, t4, t5, t6, t7; + u64 s0, s1, s2, s3, s4, s5, s6, s7; + u64 t8, t9, gp, sp, s8, ra; + u64 lo, hi; + u32 sr, pc, cause, badvaddr, rcp; + u32 fpcsr; + __OSfp fp0, fp2, fp4, fp6, fp8, fp10, fp12, fp14; + __OSfp fp16, fp18, fp20, fp22, fp24, fp26, fp28, fp30; +} __OSThreadContext; +typedef struct OSThread_s { + struct OSThread_s *next; + OSPri priority; + struct OSThread_s **queue; + struct OSThread_s *tlnext; + u16 state; + u16 flags; + OSId id; + int fp; + __OSThreadContext context; +} OSThread; +typedef u32 OSEvent; +typedef u32 OSIntMask; +typedef u32 OSPageMask; +typedef u32 OSHWIntr; +typedef void * OSMesg; +typedef struct OSMesgQueue_s { + OSThread *mtqueue; + OSThread *fullqueue; + s32 validCount; + s32 first; + s32 msgCount; + OSMesg *msg; +} OSMesgQueue; +typedef struct { + u32 errStatus; + void *dramAddr; + void *C2Addr; + u32 sectorSize; + u32 C1ErrNum; + u32 C1ErrSector[4]; +} __OSBlockInfo; +typedef struct { + u32 cmdType; + u16 transferMode; + u16 blockNum; + s32 sectorNum; + u32 devAddr; + u32 bmCtlShadow; + u32 seqCtlShadow; + __OSBlockInfo block[2]; +} __OSTranxInfo; +typedef struct OSPiHandle_s { + struct OSPiHandle_s *next; + u8 type; + u8 latency; + u8 pageSize; + u8 relDuration; + u8 pulse; + u8 domain; + u32 baseAddress; + u32 speed; + __OSTranxInfo transferInfo; +} OSPiHandle; +typedef struct { + u8 type; + u32 address; +} OSPiInfo; +typedef struct { + u16 type; + u8 pri; + u8 status; + OSMesgQueue *retQueue; +} OSIoMesgHdr; +typedef struct { + OSIoMesgHdr hdr; + void * dramAddr; + u32 devAddr; + u32 size; + OSPiHandle *piHandle; +} OSIoMesg; +typedef struct { + s32 active; + OSThread *thread; + OSMesgQueue *cmdQueue; + OSMesgQueue *evtQueue; + OSMesgQueue *acsQueue; + s32 (*dma)(s32, u32, void *, u32); + s32 (*edma)(OSPiHandle *, s32, u32, void *, u32); +} OSDevMgr; +typedef struct { + u32 ctrl; + u32 width; + u32 burst; + u32 vSync; + u32 hSync; + u32 leap; + u32 hStart; + u32 xScale; + u32 vCurrent; +} OSViCommonRegs; +typedef struct { + u32 origin; + u32 yScale; + u32 vStart; + u32 vBurst; + u32 vIntr; +} OSViFieldRegs; +typedef struct { + u8 type; + OSViCommonRegs comRegs; + OSViFieldRegs fldRegs[2]; +} OSViMode; +typedef u64 OSTime; +typedef struct OSTimer_s { + struct OSTimer_s *next; + struct OSTimer_s *prev; + OSTime interval; + OSTime value; + OSMesgQueue *mq; + OSMesg msg; +} OSTimer; +typedef struct { + u16 type; + u8 status; + u8 errno; +}OSContStatus; +typedef struct { + u16 button; + s8 stick_x; + s8 stick_y; + u8 errno; +} OSContPad; +typedef struct { + void *address; + u8 databuffer[32]; + u8 addressCrc; + u8 dataCrc; + u8 errno; +} OSContRamIo; +typedef struct { + int status; + OSMesgQueue *queue; + int channel; + u8 id[32]; + u8 label[32]; + int version; + int dir_size; + int inode_table; + int minode_table; + int dir_table; + int inode_start_page; + u8 banks; + u8 activebank; +} OSPfs; +typedef struct { + u32 file_size; + u32 game_code; + u16 company_code; + char ext_name[4]; + char game_name[16]; +} OSPfsState; +typedef struct { + u16 *histo_base; + u32 histo_size; + u32 *text_start; + u32 *text_end; +} OSProf; +extern u64 osClockRate; +extern OSViMode osViModeTable[]; +extern OSViMode osViModeNtscLpn1; +extern OSViMode osViModeNtscLpf1; +extern OSViMode osViModeNtscLan1; +extern OSViMode osViModeNtscLaf1; +extern OSViMode osViModeNtscLpn2; +extern OSViMode osViModeNtscLpf2; +extern OSViMode osViModeNtscLan2; +extern OSViMode osViModeNtscLaf2; +extern OSViMode osViModeNtscHpn1; +extern OSViMode osViModeNtscHpf1; +extern OSViMode osViModeNtscHan1; +extern OSViMode osViModeNtscHaf1; +extern OSViMode osViModeNtscHpn2; +extern OSViMode osViModeNtscHpf2; +extern OSViMode osViModePalLpn1; +extern OSViMode osViModePalLpf1; +extern OSViMode osViModePalLan1; +extern OSViMode osViModePalLaf1; +extern OSViMode osViModePalLpn2; +extern OSViMode osViModePalLpf2; +extern OSViMode osViModePalLan2; +extern OSViMode osViModePalLaf2; +extern OSViMode osViModePalHpn1; +extern OSViMode osViModePalHpf1; +extern OSViMode osViModePalHan1; +extern OSViMode osViModePalHaf1; +extern OSViMode osViModePalHpn2; +extern OSViMode osViModePalHpf2; +extern OSViMode osViModeMpalLpn1; +extern OSViMode osViModeMpalLpf1; +extern OSViMode osViModeMpalLan1; +extern OSViMode osViModeMpalLaf1; +extern OSViMode osViModeMpalLpn2; +extern OSViMode osViModeMpalLpf2; +extern OSViMode osViModeMpalLan2; +extern OSViMode osViModeMpalLaf2; +extern OSViMode osViModeMpalHpn1; +extern OSViMode osViModeMpalHpf1; +extern OSViMode osViModeMpalHan1; +extern OSViMode osViModeMpalHaf1; +extern OSViMode osViModeMpalHpn2; +extern OSViMode osViModeMpalHpf2; +extern s32 osRomType; +extern void *osRomBase; +extern s32 osTvType; +extern s32 osResetType; +extern s32 osCicId; +extern s32 osVersion; +extern u32 osMemSize; +extern s32 osAppNMIBuffer[]; +extern OSIntMask __OSGlobalIntMask; +extern OSPiHandle *__osPiTable; +extern OSPiHandle *__osDiskHandle; +extern void osCreateThread(OSThread *, OSId, void (*)(void *), + void *, void *, OSPri); +extern void osDestroyThread(OSThread *); +extern void osYieldThread(void); +extern void osStartThread(OSThread *); +extern void osStopThread(OSThread *); +extern OSId osGetThreadId(OSThread *); +extern void osSetThreadPri(OSThread *, OSPri); +extern OSPri osGetThreadPri(OSThread *); +extern void osCreateMesgQueue(OSMesgQueue *, OSMesg *, s32); +extern s32 osSendMesg(OSMesgQueue *, OSMesg, s32); +extern s32 osJamMesg(OSMesgQueue *, OSMesg, s32); +extern s32 osRecvMesg(OSMesgQueue *, OSMesg *, s32); +extern void osSetEventMesg(OSEvent, OSMesgQueue *, OSMesg); +extern OSIntMask osGetIntMask(void); +extern OSIntMask osSetIntMask(OSIntMask); +extern void osInitRdb(u8 *sendBuf, u32 sendSize); +extern void osInvalDCache(void *, s32); +extern void osInvalICache(void *, s32); +extern void osWritebackDCache(void *, s32); +extern void osWritebackDCacheAll(void); +extern void osMapTLB(s32, OSPageMask, void *, u32, u32, s32); +extern void osMapTLBRdb(void); +extern void osUnmapTLB(s32); +extern void osUnmapTLBAll(void); +extern void osSetTLBASID(s32); +extern u32 osVirtualToPhysical(void *); +extern void * osPhysicalToVirtual(u32); +extern u32 osAiGetStatus(void); +extern u32 osAiGetLength(void); +extern s32 osAiSetFrequency(u32); +extern s32 osAiSetNextBuffer(void *, u32); +extern u32 osDpGetStatus(void); +extern void osDpSetStatus(u32); +extern void osDpGetCounters(u32 *); +extern s32 osDpSetNextBuffer(void *, u64); +extern u32 osPiGetStatus(void); +extern s32 osPiGetDeviceType(void); +extern s32 osPiRawWriteIo(u32, u32); +extern s32 osPiRawReadIo(u32, u32 *); +extern s32 osPiRawStartDma(s32, u32, void *, u32); +extern s32 osPiWriteIo(u32, u32); +extern s32 osPiReadIo(u32, u32 *); +extern s32 osPiStartDma(OSIoMesg *, s32, s32, u32, void *, u32, + OSMesgQueue *); +extern void osCreatePiManager(OSPri, OSMesgQueue *, OSMesg *, s32); +extern u32 osViGetStatus(void); +extern u32 osViGetCurrentMode(void); +extern u32 osViGetCurrentLine(void); +extern u32 osViGetCurrentField(void); +extern void *osViGetCurrentFramebuffer(void); +extern void *osViGetNextFramebuffer(void); +extern void osViSetXScale(f32); +extern void osViSetYScale(f32); +extern void osViSetSpecialFeatures(u32); +extern void osViSetMode(OSViMode *); +extern void osViSetEvent(OSMesgQueue *, OSMesg, u32); +extern void osViSwapBuffer(void *); +extern void osViBlack(u8); +extern void osViFade(u8, u16); +extern void osViBlack(u8); +extern void osCreateViManager(OSPri); +extern OSTime osGetTime(void); +extern void osSetTime(OSTime); +extern int osSetTimer(OSTimer *, OSTime, OSTime, + OSMesgQueue *, OSMesg); +extern int osStopTimer(OSTimer *); +extern s32 osContInit(OSMesgQueue *, u8 *, OSContStatus *); +extern s32 osContReset(OSMesgQueue *, OSContStatus *); +extern s32 osContStartQuery(OSMesgQueue *); +extern s32 osContStartReadData(OSMesgQueue *); +extern s32 osContSetCh(u8); +extern void osContGetQuery(OSContStatus *); +extern void osContGetReadData(OSContPad *); +extern s32 osPfsInitPak(OSMesgQueue *, OSPfs *, int); +extern s32 osPfsRepairId(OSPfs *); +extern s32 osPfsInit(OSMesgQueue *, OSPfs *, int); +extern s32 osPfsReFormat(OSPfs *, OSMesgQueue *, int); +extern s32 osPfsChecker(OSPfs *); +extern s32 osPfsAllocateFile(OSPfs *, u16, u32, u8 *, u8 *, int, s32 *); +extern s32 osPfsFindFile(OSPfs *, u16, u32, u8 *, u8 *, s32 *); +extern s32 osPfsDeleteFile(OSPfs *, u16, u32, u8 *, u8 *); +extern s32 osPfsReadWriteFile(OSPfs *, s32, u8, int, int, u8 *); +extern s32 osPfsFileState(OSPfs *, s32, OSPfsState *); +extern s32 osPfsGetLabel(OSPfs *, u8 *, int *); +extern s32 osPfsSetLabel(OSPfs *, u8 *); +extern s32 osPfsIsPlug(OSMesgQueue *, u8 *); +extern s32 osPfsFreeBlocks(OSPfs *, s32 *); +extern s32 osPfsNumFiles(OSPfs *, s32 *, s32 *); +extern s32 osEepromProbe(OSMesgQueue *); +extern s32 osEepromRead(OSMesgQueue *, u8, u8 *); +extern s32 osEepromWrite(OSMesgQueue *, u8, u8 *); +extern s32 osEepromLongRead(OSMesgQueue *, u8, u8 *, int); +extern s32 osEepromLongWrite(OSMesgQueue *, u8, u8 *, int); +extern s32 osMotorInit(OSMesgQueue *, OSPfs *, int); +extern s32 osMotorStop(OSPfs *); +extern s32 osMotorStart(OSPfs *); +extern OSPiHandle *osCartRomInit(void); +extern OSPiHandle *osLeoDiskInit(void); +extern OSPiHandle *osDriveRomInit(void); +extern s32 osEPiDeviceType(OSPiHandle *, OSPiInfo *); +extern s32 osEPiRawWriteIo(OSPiHandle *, u32 , u32); +extern s32 osEPiRawReadIo(OSPiHandle *, u32 , u32 *); +extern s32 osEPiRawStartDma(OSPiHandle *, s32 , u32 , void *, u32 ); +extern s32 osEPiWriteIo(OSPiHandle *, u32 , u32 ); +extern s32 osEPiReadIo(OSPiHandle *, u32 , u32 *); +extern s32 osEPiStartDma(OSPiHandle *, OSIoMesg *, s32); +extern s32 osEPiLinkHandle(OSPiHandle *); +extern void osProfileInit(OSProf *, u32 profcnt); +extern void osProfileStart(u32); +extern void osProfileFlush(void); +extern void osProfileStop(void); +extern s32 osTestHost(void); +extern void osReadHost(void *, u32); +extern void osWriteHost(void *, u32); +extern void osAckRamromRead(void); +extern void osAckRamromWrite(void); +extern void bcopy(const void *, void *, int); +extern int bcmp(const void *, const void *, int); +extern void bzero(void *, int); +extern void osInitialize(void); +extern u32 osGetCount(void); +extern void osExit(void); +extern u32 osGetMemSize(void); +extern int sprintf(char *s, const char *fmt, ...); +extern void osSyncPrintf(const char *fmt, ...); +extern void osAsyncPrintf(const char *fmt, ...); +extern int osSyncGetChars(char *buf); +extern int osAsyncGetChars(char *buf); +typedef struct _Region_s { + u8 *r_startBufferAddress; + u8 *r_endAddress; + s32 r_bufferSize; + s32 r_bufferCount; + u16 r_freeList; + u16 r_alignSize; +} OSRegion; +extern void *osCreateRegion(void *, u32, u32, u32); +extern void *osMalloc(void *); +extern void osFree(void *, void *); +extern s32 osGetRegionBufCount(void *); +extern s32 osGetRegionBufSize(void *); +extern void rmonMain( void * ); +extern void rmonPrintf( const char *, ... ); +typedef struct { + u32 type; + u32 flags; + u64 *ucode_boot; + u32 ucode_boot_size; + u64 *ucode; + u32 ucode_size; + u64 *ucode_data; + u32 ucode_data_size; + u64 *dram_stack; + u32 dram_stack_size; + u64 *output_buff; + u64 *output_buff_size; + u64 *data_ptr; + u32 data_size; + u64 *yield_data_ptr; + u32 yield_data_size; +} OSTask_t; +typedef union { + OSTask_t t; + long long int force_structure_alignment; +} OSTask; +typedef u32 OSYieldResult; +extern void osSpTaskLoad(OSTask *tp); +extern void osSpTaskStartGo(OSTask *tp); +extern void osSpTaskYield(void); +extern OSYieldResult osSpTaskYielded(OSTask *tp); +typedef struct { + short ob[3]; + unsigned short flag; + short tc[2]; + unsigned char cn[4]; +} Vtx_t; +typedef struct { + short ob[3]; + unsigned short flag; + short tc[2]; + signed char n[3]; + unsigned char a; +} Vtx_tn; +typedef union { + Vtx_t v; + Vtx_tn n; + long long int force_structure_alignment; +} Vtx; +typedef struct { + void *SourceImagePointer; + void *TlutPointer; + short Stride; + short SubImageWidth; + short SubImageHeight; + char SourceImageType; + char SourceImageBitSize; + short SourceImageOffsetS; + short SourceImageOffsetT; + char dummy[4]; +} uSprite_t; +typedef union { + uSprite_t s; + long long int force_structure_allignment[3]; +} uSprite; +typedef struct { + unsigned char flag; + unsigned char v[3]; +} Tri; +typedef long Mtx_t[4][4]; +typedef union { + Mtx_t m; + long long int force_structure_alignment; +} Mtx; +typedef struct { + short vscale[4]; + short vtrans[4]; +} Vp_t; +typedef union { + Vp_t vp; + long long int force_structure_alignment; +} Vp; +typedef struct { + unsigned char col[3]; + char pad1; + unsigned char colc[3]; + char pad2; + signed char dir[3]; + char pad3; +} Light_t; +typedef struct { + unsigned char col[3]; + char pad1; + unsigned char colc[3]; + char pad2; +} Ambient_t; +typedef struct { + int x1,y1,x2,y2; +} Hilite_t; +typedef union { + Light_t l; + long long int force_structure_alignment[2]; +} Light; +typedef union { + Ambient_t l; + long long int force_structure_alignment[1]; +} Ambient; +typedef struct { + Ambient a; + Light l[7]; +} Lightsn; +typedef struct { + Ambient a; + Light l[1]; +} Lights0; +typedef struct { + Ambient a; + Light l[1]; +} Lights1; +typedef struct { + Ambient a; + Light l[2]; +} Lights2; +typedef struct { + Ambient a; + Light l[3]; +} Lights3; +typedef struct { + Ambient a; + Light l[4]; +} Lights4; +typedef struct { + Ambient a; + Light l[5]; +} Lights5; +typedef struct { + Ambient a; + Light l[6]; +} Lights6; +typedef struct { + Ambient a; + Light l[7]; +} Lights7; +typedef struct { + Light l[2]; +} LookAt; +typedef union { + Hilite_t h; + long int force_structure_alignment[4]; +} Hilite; +typedef struct { + int cmd:8; + unsigned int par:8; + unsigned int len:16; + unsigned int addr; +} Gdma; +typedef struct { + int cmd:8; + int pad:24; + Tri tri; +} Gtri; +typedef struct { + int cmd:8; + int pad1:24; + int pad2:24; + unsigned char param:8; +} Gpopmtx; +typedef struct { + int cmd:8; + int pad0:8; + int mw_index:8; + int number:8; + int pad1:8; + int base:24; +} Gsegment; +typedef struct { + int cmd:8; + int pad0:8; + int sft:8; + int len:8; + unsigned int data:32; +} GsetothermodeL; +typedef struct { + int cmd:8; + int pad0:8; + int sft:8; + int len:8; + unsigned int data:32; +} GsetothermodeH; +typedef struct { + unsigned char cmd; + unsigned char lodscale; + unsigned char tile; + unsigned char on; + unsigned short s; + unsigned short t; +} Gtexture; +typedef struct { + int cmd:8; + int pad:24; + Tri line; +} Gline3D; +typedef struct { + int cmd:8; + int pad1:24; + short int pad2; + short int scale; +} Gperspnorm; +typedef struct { + int cmd:8; + unsigned int fmt:3; + unsigned int siz:2; + unsigned int pad:7; + unsigned int wd:12; + unsigned int dram; +} Gsetimg; +typedef struct { + int cmd:8; + unsigned int muxs0:24; + unsigned int muxs1:32; +} Gsetcombine; +typedef struct { + int cmd:8; + unsigned char pad; + unsigned char prim_min_level; + unsigned char prim_level; + unsigned long color; +} Gsetcolor; +typedef struct { + int cmd:8; + int x0:10; + int x0frac:2; + int y0:10; + int y0frac:2; + unsigned int pad:8; + int x1:10; + int x1frac:2; + int y1:10; + int y1frac:2; +} Gfillrect; +typedef struct { + int cmd:8; + unsigned int fmt:3; + unsigned int siz:2; + unsigned int pad0:1; + unsigned int line:9; + unsigned int tmem:9; + unsigned int pad1:5; + unsigned int tile:3; + unsigned int palette:4; + unsigned int ct:1; + unsigned int mt:1; + unsigned int maskt:4; + unsigned int shiftt:4; + unsigned int cs:1; + unsigned int ms:1; + unsigned int masks:4; + unsigned int shifts:4; +} Gsettile; +typedef struct { + int cmd:8; + unsigned int sl:12; + unsigned int tl:12; + int pad:5; + unsigned int tile:3; + unsigned int sh:12; + unsigned int th:12; +} Gloadtile; +typedef Gloadtile Gloadblock; +typedef Gloadtile Gsettilesize; +typedef Gloadtile Gloadtlut; +typedef struct { + unsigned int cmd:8; + unsigned int xl:12; + unsigned int yl:12; + unsigned int pad1:5; + unsigned int tile:3; + unsigned int xh:12; + unsigned int yh:12; + unsigned int s:16; + unsigned int t:16; + unsigned int dsdx:16; + unsigned int dtdy:16; +} Gtexrect; +typedef struct { + unsigned long w0; + unsigned long w1; + unsigned long w2; + unsigned long w3; +} TexRect; +typedef struct { + unsigned int w0; + unsigned int w1; +} Gwords; +typedef union { + Gwords words; + Gdma dma; + Gtri tri; + Gline3D line; + Gpopmtx popmtx; + Gsegment segment; + GsetothermodeH setothermodeH; + GsetothermodeL setothermodeL; + Gtexture texture; + Gperspnorm perspnorm; + Gsetimg setimg; + Gsetcombine setcombine; + Gsetcolor setcolor; + Gfillrect fillrect; + Gsettile settile; + Gloadtile loadtile; + Gsettilesize settilesize; + Gloadtlut loadtlut; + long long int force_structure_alignment; +} Gfx; +typedef struct { + unsigned int cmd:8; + unsigned int flags:8; + unsigned int gain:16; + unsigned int addr; +} Aadpcm; +typedef struct { + unsigned int cmd:8; + unsigned int flags:8; + unsigned int gain:16; + unsigned int addr; +} Apolef; +typedef struct { + unsigned int cmd:8; + unsigned int flags:8; + unsigned int pad1:16; + unsigned int addr; +} Aenvelope; +typedef struct { + unsigned int cmd:8; + unsigned int pad1:8; + unsigned int dmem:16; + unsigned int pad2:16; + unsigned int count:16; +} Aclearbuff; +typedef struct { + unsigned int cmd:8; + unsigned int pad1:8; + unsigned int pad2:16; + unsigned int inL:16; + unsigned int inR:16; +} Ainterleave; +typedef struct { + unsigned int cmd:8; + unsigned int pad1:24; + unsigned int addr; +} Aloadbuff; +typedef struct { + unsigned int cmd:8; + unsigned int flags:8; + unsigned int pad1:16; + unsigned int addr; +} Aenvmixer; +typedef struct { + unsigned int cmd:8; + unsigned int flags:8; + unsigned int gain:16; + unsigned int dmemi:16; + unsigned int dmemo:16; +} Amixer; +typedef struct { + unsigned int cmd:8; + unsigned int flags:8; + unsigned int dmem2:16; + unsigned int addr; +} Apan; +typedef struct { + unsigned int cmd:8; + unsigned int flags:8; + unsigned int pitch:16; + unsigned int addr; +} Aresample; +typedef struct { + unsigned int cmd:8; + unsigned int flags:8; + unsigned int pad1:16; + unsigned int addr; +} Areverb; +typedef struct { + unsigned int cmd:8; + unsigned int pad1:24; + unsigned int addr; +} Asavebuff; +typedef struct { + unsigned int cmd:8; + unsigned int pad1:24; + unsigned int pad2:2; + unsigned int number:4; + unsigned int base:24; +} Asegment; +typedef struct { + unsigned int cmd:8; + unsigned int flags:8; + unsigned int dmemin:16; + unsigned int dmemout:16; + unsigned int count:16; +} Asetbuff; +typedef struct { + unsigned int cmd:8; + unsigned int flags:8; + unsigned int vol:16; + unsigned int voltgt:16; + unsigned int volrate:16; +} Asetvol; +typedef struct { + unsigned int cmd:8; + unsigned int pad1:8; + unsigned int dmemin:16; + unsigned int dmemout:16; + unsigned int count:16; +} Admemmove; +typedef struct { + unsigned int cmd:8; + unsigned int pad1:8; + unsigned int count:16; + unsigned int addr; +} Aloadadpcm; +typedef struct { + unsigned int cmd:8; + unsigned int pad1:8; + unsigned int pad2:16; + unsigned int addr; +} Asetloop; +typedef struct { + unsigned int w0; + unsigned int w1; +} Awords; +typedef union { + Awords words; + Aadpcm adpcm; + Apolef polef; + Aclearbuff clearbuff; + Aenvelope envelope; + Ainterleave interleave; + Aloadbuff loadbuff; + Aenvmixer envmixer; + Aresample resample; + Areverb reverb; + Asavebuff savebuff; + Asegment segment; + Asetbuff setbuff; + Asetvol setvol; + Admemmove dmemmove; + Aloadadpcm loadadpcm; + Amixer mixer; + Asetloop setloop; + long long int force_union_align; +} Acmd; +typedef short ADPCM_STATE[16]; +typedef short POLEF_STATE[4]; +typedef short RESAMPLE_STATE[16]; +typedef short ENVMIX_STATE[40]; +typedef s32 ALMicroTime; +typedef u8 ALPan; +typedef struct ALLink_s { + struct ALLink_s *next; + struct ALLink_s *prev; +} ALLink; +void alUnlink(ALLink *element); +void alLink(ALLink *element, ALLink *after); +typedef s32 (*ALDMAproc)(s32 addr, s32 len, void *state); +typedef ALDMAproc (*ALDMANew)(void *state); +void alCopy(void *src, void *dest, s32 len); +typedef struct { + u8 *base; + u8 *cur; + s32 len; + s32 count; +} ALHeap; +void alHeapInit(ALHeap *hp, u8 *base, s32 len); +void *alHeapDBAlloc(u8 *file, s32 line, ALHeap *hp, s32 num, s32 size); +s32 alHeapCheck(ALHeap *hp); +typedef u8 ALFxId; +typedef void *ALFxRef; +enum {AL_ADPCM_WAVE = 0, + AL_RAW16_WAVE}; +typedef struct { + s32 order; + s32 npredictors; + s16 book[1]; +} ALADPCMBook; +typedef struct { + u32 start; + u32 end; + u32 count; + ADPCM_STATE state; +} ALADPCMloop; +typedef struct { + u32 start; + u32 end; + u32 count; +} ALRawLoop; +typedef struct { + ALMicroTime attackTime; + ALMicroTime decayTime; + ALMicroTime releaseTime; + u8 attackVolume; + u8 decayVolume; +} ALEnvelope; +typedef struct { + u8 velocityMin; + u8 velocityMax; + u8 keyMin; + u8 keyMax; + u8 keyBase; + s8 detune; +} ALKeyMap; +typedef struct { + ALADPCMloop *loop; + ALADPCMBook *book; +} ALADPCMWaveInfo; +typedef struct { + ALRawLoop *loop; +} ALRAWWaveInfo; +typedef struct ALWaveTable_s { + u8 *base; + s32 len; + u8 type; + u8 flags; + union { + ALADPCMWaveInfo adpcmWave; + ALRAWWaveInfo rawWave; + } waveInfo; +} ALWaveTable; +typedef struct ALSound_s { + ALEnvelope *envelope; + ALKeyMap *keyMap; + ALWaveTable *wavetable; + ALPan samplePan; + u8 sampleVolume; + u8 flags; +} ALSound; +typedef struct { + u8 volume; + ALPan pan; + u8 priority; + u8 flags; + u8 tremType; + u8 tremRate; + u8 tremDepth; + u8 tremDelay; + u8 vibType; + u8 vibRate; + u8 vibDepth; + u8 vibDelay; + s16 bendRange; + s16 soundCount; + ALSound *soundArray[1]; +} ALInstrument; +typedef struct ALBank_s { + s16 instCount; + u8 flags; + u8 pad; + s32 sampleRate; + ALInstrument *percussion; + ALInstrument *instArray[1]; +} ALBank; +typedef struct { + s16 revision; + s16 bankCount; + ALBank *bankArray[1]; +} ALBankFile; +void alBnkfNew(ALBankFile *f, u8 *table); +typedef struct { + u8 *offset; + s32 len; +} ALSeqData; +typedef struct { + s16 revision; + s16 seqCount; + ALSeqData seqArray[1]; +} ALSeqFile; +void alSeqFileNew(ALSeqFile *f, u8 *base); +typedef ALMicroTime (*ALVoiceHandler)(void *); +typedef struct { + s32 maxVVoices; + s32 maxPVoices; + s32 maxUpdates; + s32 maxFXbusses; + void *dmaproc; + ALHeap *heap; + s32 outputRate; + ALFxId fxType; + s32 *params; +} ALSynConfig; +typedef struct ALPlayer_s { + struct ALPlayer_s *next; + void *clientData; + ALVoiceHandler handler; + ALMicroTime callTime; + s32 samplesLeft; +} ALPlayer; +typedef struct ALVoice_s { + ALLink node; + struct PVoice_s *pvoice; + ALWaveTable *table; + void *clientPrivate; + s16 state; + s16 priority; + s16 fxBus; + s16 unityPitch; +} ALVoice; +typedef struct ALVoiceConfig_s { + s16 priority; + s16 fxBus; + u8 unityPitch; +} ALVoiceConfig; +typedef struct { + ALPlayer *head; + ALLink pFreeList; + ALLink pAllocList; + ALLink pLameList; + s32 paramSamples; + s32 curSamples; + ALDMANew dma; + ALHeap *heap; + struct ALParam_s *paramList; + struct ALMainBus_s *mainBus; + struct ALAuxBus_s *auxBus; + struct ALFilter_s *outputFilter; + s32 numPVoices; + s32 maxAuxBusses; + s32 outputRate; + s32 maxOutSamples; +} ALSynth; +void alSynNew(ALSynth *s, ALSynConfig *config); +void alSynDelete(ALSynth *s); +void alSynAddPlayer(ALSynth *s, ALPlayer *client); +void alSynRemovePlayer(ALSynth *s, ALPlayer *client); +s32 alSynAllocVoice(ALSynth *s, ALVoice *v, ALVoiceConfig *vc); +void alSynFreeVoice(ALSynth *s, ALVoice *voice); +void alSynStartVoice(ALSynth *s, ALVoice *voice, ALWaveTable *w); +void alSynStartVoiceParams(ALSynth *s, ALVoice *voice, ALWaveTable *w, + f32 pitch, s16 vol, ALPan pan, u8 fxmix, + ALMicroTime t); +void alSynStopVoice(ALSynth *s, ALVoice *voice); +void alSynSetVol(ALSynth *s, ALVoice *v, s16 vol, ALMicroTime delta); +void alSynSetPitch(ALSynth *s, ALVoice *voice, f32 ratio); +void alSynSetPan(ALSynth *s, ALVoice *voice, ALPan pan); +void alSynSetFXMix(ALSynth *s, ALVoice *voice, u8 fxmix); +void alSynSetPriority(ALSynth *s, ALVoice *voice, s16 priority); +s16 alSynGetPriority(ALSynth *s, ALVoice *voice); +ALFxRef *alSynAllocFX(ALSynth *s, s16 bus, ALSynConfig *c, ALHeap *hp); +ALFxRef alSynGetFXRef(ALSynth *s, s16 bus, s16 index); +void alSynFreeFX(ALSynth *s, ALFxRef *fx); +void alSynSetFXParam(ALSynth *s, ALFxRef fx, s16 paramID, void *param); +typedef struct { + ALSynth drvr; +} ALGlobals; +extern ALGlobals *alGlobals; +void alInit(ALGlobals *glob, ALSynConfig *c); +void alClose(ALGlobals *glob); +Acmd *alAudioFrame(Acmd *cmdList, s32 *cmdLen, s16 *outBuf, s32 outLen); +enum ALMsg { + AL_SEQ_REF_EVT, + AL_SEQ_MIDI_EVT, + AL_SEQP_MIDI_EVT, + AL_TEMPO_EVT, + AL_SEQ_END_EVT, + AL_NOTE_END_EVT, + AL_SEQP_ENV_EVT, + AL_SEQP_META_EVT, + AL_SEQP_PROG_EVT, + AL_SEQP_API_EVT, + AL_SEQP_VOL_EVT, + AL_SEQP_LOOP_EVT, + AL_SEQP_PRIORITY_EVT, + AL_SEQP_SEQ_EVT, + AL_SEQP_BANK_EVT, + AL_SEQP_PLAY_EVT, + AL_SEQP_STOP_EVT, + AL_SEQP_STOPPING_EVT, + AL_TRACK_END, + AL_CSP_LOOPSTART, + AL_CSP_LOOPEND, + AL_CSP_NOTEOFF_EVT, + AL_TREM_OSC_EVT, + AL_VIB_OSC_EVT +}; +enum AL_MIDIstatus { + AL_MIDI_ChannelMask = 0x0F, + AL_MIDI_StatusMask = 0xF0, + AL_MIDI_ChannelVoice = 0x80, + AL_MIDI_NoteOff = 0x80, + AL_MIDI_NoteOn = 0x90, + AL_MIDI_PolyKeyPressure = 0xA0, + AL_MIDI_ControlChange = 0xB0, + AL_MIDI_ChannelModeSelect = 0xB0, + AL_MIDI_ProgramChange = 0xC0, + AL_MIDI_ChannelPressure = 0xD0, + AL_MIDI_PitchBendChange = 0xE0, + AL_MIDI_SysEx = 0xF0, + AL_MIDI_SystemCommon = 0xF1, + AL_MIDI_TimeCodeQuarterFrame = 0xF1, + AL_MIDI_SongPositionPointer = 0xF2, + AL_MIDI_SongSelect = 0xF3, + AL_MIDI_Undefined1 = 0xF4, + AL_MIDI_Undefined2 = 0xF5, + AL_MIDI_TuneRequest = 0xF6, + AL_MIDI_EOX = 0xF7, + AL_MIDI_SystemRealTime = 0xF8, + AL_MIDI_TimingClock = 0xF8, + AL_MIDI_Undefined3 = 0xF9, + AL_MIDI_Start = 0xFA, + AL_MIDI_Continue = 0xFB, + AL_MIDI_Stop = 0xFC, + AL_MIDI_Undefined4 = 0xFD, + AL_MIDI_ActiveSensing = 0xFE, + AL_MIDI_SystemReset = 0xFF, + AL_MIDI_Meta = 0xFF +}; +enum AL_MIDIctrl { + AL_MIDI_VOLUME_CTRL = 0x07, + AL_MIDI_PAN_CTRL = 0x0A, + AL_MIDI_PRIORITY_CTRL = 0x10, + AL_MIDI_FX_CTRL_0 = 0x14, + AL_MIDI_FX_CTRL_1 = 0x15, + AL_MIDI_FX_CTRL_2 = 0x16, + AL_MIDI_FX_CTRL_3 = 0x17, + AL_MIDI_FX_CTRL_4 = 0x18, + AL_MIDI_FX_CTRL_5 = 0x19, + AL_MIDI_FX_CTRL_6 = 0x1A, + AL_MIDI_FX_CTRL_7 = 0x1B, + AL_MIDI_FX_CTRL_8 = 0x1C, + AL_MIDI_FX_CTRL_9 = 0x1D, + AL_MIDI_SUSTAIN_CTRL = 0x40, + AL_MIDI_FX1_CTRL = 0x5B, + AL_MIDI_FX3_CTRL = 0x5D +}; +enum AL_MIDImeta { + AL_MIDI_META_TEMPO = 0x51, + AL_MIDI_META_EOT = 0x2f +}; +typedef struct { + u8 *curPtr; + s32 lastTicks; + s32 curTicks; + s16 lastStatus; +} ALSeqMarker; +typedef struct { + s32 ticks; + u8 status; + u8 byte1; + u8 byte2; + u32 duration; +} ALMIDIEvent; +typedef struct { + s32 ticks; + u8 status; + u8 type; + u8 len; + u8 byte1; + u8 byte2; + u8 byte3; +} ALTempoEvent; +typedef struct { + s32 ticks; + u8 status; + u8 type; + u8 len; +} ALEndEvent; +typedef struct { + struct ALVoice_s *voice; +} ALNoteEvent; +typedef struct { + struct ALVoice_s *voice; + ALMicroTime delta; + u8 vol; +} ALVolumeEvent; +typedef struct { + s16 vol; +} ALSeqpVolEvent; +typedef struct { + ALSeqMarker *start; + ALSeqMarker *end; + s32 count; +} ALSeqpLoopEvent; +typedef struct { + u8 chan; + u8 priority; +} ALSeqpPriorityEvent; +typedef struct { + void *seq; +} ALSeqpSeqEvent; +typedef struct { + ALBank *bank; +} ALSeqpBankEvent; +typedef struct { + struct ALVoiceState_s *vs; + void *oscState; + u8 chan; +} ALOscEvent; +typedef struct { + s16 type; + union { + ALMIDIEvent midi; + ALTempoEvent tempo; + ALEndEvent end; + ALNoteEvent note; + ALVolumeEvent vol; + ALSeqpLoopEvent loop; + ALSeqpVolEvent spvol; + ALSeqpPriorityEvent sppriority; + ALSeqpSeqEvent spseq; + ALSeqpBankEvent spbank; + ALOscEvent osc; + } msg; +} ALEvent; +typedef struct { + ALLink node; + ALMicroTime delta; + ALEvent evt; +} ALEventListItem; +typedef struct { + ALLink freeList; + ALLink allocList; + s32 eventCount; +} ALEventQueue; +void alEvtqNew(ALEventQueue *evtq, ALEventListItem *items, + s32 itemCount); +ALMicroTime alEvtqNextEvent(ALEventQueue *evtq, ALEvent *evt); +void alEvtqPostEvent(ALEventQueue *evtq, ALEvent *evt, + ALMicroTime delta); +void alEvtqFlush(ALEventQueue *evtq); +void alEvtqFlushType(ALEventQueue *evtq, s16 type); +typedef struct ALVoiceState_s { + struct ALVoiceState_s *next; + ALVoice voice; + ALSound *sound; + ALMicroTime envEndTime; + f32 pitch; + f32 vibrato; + u8 envGain; + u8 channel; + u8 key; + u8 velocity; + u8 envPhase; + u8 phase; + u8 tremelo; + u8 flags; +} ALVoiceState; +typedef struct { + ALInstrument *instrument; + s16 bendRange; + ALFxId fxId; + ALPan pan; + u8 priority; + u8 vol; + u8 fxmix; + u8 sustain; + f32 pitchBend; +} ALChanState; +typedef struct ALSeq_s { + u8 *base; + u8 *trackStart; + u8 *curPtr; + s32 lastTicks; + s32 len; + f32 qnpt; + s16 division; + s16 lastStatus; +} ALSeq; +typedef struct { + u32 trackOffset[16]; + u32 division; +} ALCMidiHdr; +typedef struct ALCSeq_s { + ALCMidiHdr *base; + u32 validTracks; + f32 qnpt; + u32 lastTicks; + u32 lastDeltaTicks; + u32 deltaFlag; + u8 *curLoc[16]; + u8 *curBUPtr[16]; + u8 curBULen[16]; + u8 lastStatus[16]; + u32 evtDeltaTicks[16]; +} ALCSeq; +typedef struct { + u32 validTracks; + s32 lastTicks; + u32 lastDeltaTicks; + u8 *curLoc[16]; + u8 *curBUPtr[16]; + u8 curBULen[16]; + u8 lastStatus[16]; + u32 evtDeltaTicks[16]; +} ALCSeqMarker; +typedef struct { + s32 maxVoices; + s32 maxEvents; + u8 maxChannels; + u8 debugFlags; + ALHeap *heap; + void *initOsc; + void *updateOsc; + void *stopOsc; +} ALSeqpConfig; +typedef ALMicroTime (*ALOscInit)(void **oscState,f32 *initVal, u8 oscType, + u8 oscRate, u8 oscDepth, u8 oscDelay); +typedef ALMicroTime (*ALOscUpdate)(void *oscState, f32 *updateVal); +typedef void (*ALOscStop)(void *oscState); +typedef struct { + ALPlayer node; + ALSynth *drvr; + ALSeq *target; + ALMicroTime curTime; + ALBank *bank; + s32 uspt; + s32 nextDelta; + s32 state; + u16 chanMask; + s16 vol; + u8 maxChannels; + u8 debugFlags; + ALEvent nextEvent; + ALEventQueue evtq; + ALMicroTime frameTime; + ALChanState *chanState; + ALVoiceState *vAllocHead; + ALVoiceState *vAllocTail; + ALVoiceState *vFreeList; + ALOscInit initOsc; + ALOscUpdate updateOsc; + ALOscStop stopOsc; + ALSeqMarker *loopStart; + ALSeqMarker *loopEnd; + s32 loopCount; +} ALSeqPlayer; +typedef struct { + ALPlayer node; + ALSynth *drvr; + ALCSeq *target; + ALMicroTime curTime; + ALBank *bank; + s32 uspt; + s32 nextDelta; + s32 state; + u16 chanMask; + s16 vol; + u8 maxChannels; + u8 debugFlags; + ALEvent nextEvent; + ALEventQueue evtq; + ALMicroTime frameTime; + ALChanState *chanState; + ALVoiceState *vAllocHead; + ALVoiceState *vAllocTail; + ALVoiceState *vFreeList; + ALOscInit initOsc; + ALOscUpdate updateOsc; + ALOscStop stopOsc; +} ALCSPlayer; +void alSeqNew(ALSeq *seq, u8 *ptr, s32 len); +void alSeqNextEvent(ALSeq *seq, ALEvent *event); +s32 alSeqGetTicks(ALSeq *seq); +f32 alSeqTicksToSec(ALSeq *seq, s32 ticks, u32 tempo); +u32 alSeqSecToTicks(ALSeq *seq, f32 sec, u32 tempo); +void alSeqNewMarker(ALSeq *seq, ALSeqMarker *m, u32 ticks); +void alSeqSetLoc(ALSeq *seq, ALSeqMarker *marker); +void alSeqGetLoc(ALSeq *seq, ALSeqMarker *marker); +void alCSeqNew(ALCSeq *seq, u8 *ptr); +void alCSeqNextEvent(ALCSeq *seq,ALEvent *evt); +s32 alCSeqGetTicks(ALCSeq *seq); +f32 alCSeqTicksToSec(ALCSeq *seq, s32 ticks, u32 tempo); +u32 alCSeqSecToTicks(ALCSeq *seq, f32 sec, u32 tempo); +void alCSeqNewMarker(ALCSeq *seq, ALCSeqMarker *m, u32 ticks); +void alCSeqSetLoc(ALCSeq *seq, ALCSeqMarker *marker); +void alCSeqGetLoc(ALCSeq *seq, ALCSeqMarker *marker); +f32 alCents2Ratio(s32 cents); +void alSeqpNew(ALSeqPlayer *seqp, ALSeqpConfig *config); +void alSeqpDelete(ALSeqPlayer *seqp); +void alSeqpSetSeq(ALSeqPlayer *seqp, ALSeq *seq); +ALSeq *alSeqpGetSeq(ALSeqPlayer *seqp); +void alSeqpPlay(ALSeqPlayer *seqp); +void alSeqpStop(ALSeqPlayer *seqp); +s32 alSeqpGetState(ALSeqPlayer *seqp); +void alSeqpSetBank(ALSeqPlayer *seqp, ALBank *b); +void alSeqpSetTempo(ALSeqPlayer *seqp, s32 tempo); +s32 alSeqpGetTempo(ALSeqPlayer *seqp); +s16 alSeqpGetVol(ALSeqPlayer *seqp); +void alSeqpSetVol(ALSeqPlayer *seqp, s16 vol); +void alSeqpLoop(ALSeqPlayer *seqp, ALSeqMarker *start, ALSeqMarker *end, s32 count); +void alSeqpSetChlProgram(ALSeqPlayer *seqp, u8 chan, u8 prog); +s32 alSeqpGetChlProgram(ALSeqPlayer *seqp, u8 chan); +void alSeqpSetChlFXMix(ALSeqPlayer *seqp, u8 chan, u8 fxmix); +u8 alSeqpGetChlFXMix(ALSeqPlayer *seqp, u8 chan); +void alSeqpSetChlVol(ALSeqPlayer *seqp, u8 chan, u8 vol); +u8 alSeqpGetChlVol(ALSeqPlayer *seqp, u8 chan); +void alSeqpSetChlPan(ALSeqPlayer *seqp, u8 chan, ALPan pan); +ALPan alSeqpGetChlPan(ALSeqPlayer *seqp, u8 chan); +void alSeqpSetChlPriority(ALSeqPlayer *seqp, u8 chan, u8 priority); +u8 alSeqpGetChlPriority(ALSeqPlayer *seqp, u8 chan); +void alSeqpSendMidi(ALSeqPlayer *seqp, s32 ticks, u8 status, u8 byte1, u8 byte2); +void alCSPNew(ALCSPlayer *seqp, ALSeqpConfig *config); +void alCSPDelete(ALCSPlayer *seqp); +void alCSPSetSeq(ALCSPlayer *seqp, ALCSeq *seq); +ALCSeq *alCSPGetSeq(ALCSPlayer *seqp); +void alCSPPlay(ALCSPlayer *seqp); +void alCSPStop(ALCSPlayer *seqp); +s32 alCSPGetState(ALCSPlayer *seqp); +void alCSPSetBank(ALCSPlayer *seqp, ALBank *b); +void alCSPSetTempo(ALCSPlayer *seqp, s32 tempo); +s32 alCSPGetTempo(ALCSPlayer *seqp); +s16 alCSPGetVol(ALCSPlayer *seqp); +void alCSPSetVol(ALCSPlayer *seqp, s16 vol); +void alCSPSetChlProgram(ALCSPlayer *seqp, u8 chan, u8 prog); +s32 alCSPGetChlProgram(ALCSPlayer *seqp, u8 chan); +void alCSPSetChlFXMix(ALCSPlayer *seqp, u8 chan, u8 fxmix); +u8 alCSPGetChlFXMix(ALCSPlayer *seqp, u8 chan); +void alCSPSetChlPan(ALCSPlayer *seqp, u8 chan, ALPan pan); +ALPan alCSPGetChlPan(ALCSPlayer *seqp, u8 chan); +void alCSPSetChlVol(ALCSPlayer *seqp, u8 chan, u8 vol); +u8 alCSPGetChlVol(ALCSPlayer *seqp, u8 chan); +void alCSPSetChlPriority(ALCSPlayer *seqp, u8 chan, u8 priority); +u8 alCSPGetChlPriority(ALCSPlayer *seqp, u8 chan); +void alCSPSendMidi(ALCSPlayer *seqp, s32 ticks, u8 status, + u8 byte1, u8 byte2); +typedef struct { + s32 maxSounds; + s32 maxEvents; + ALHeap *heap; +} ALSndpConfig; +typedef struct { + ALPlayer node; + ALEventQueue evtq; + ALEvent nextEvent; + ALSynth *drvr; + s32 target; + void *sndState; + s32 maxSounds; + ALMicroTime frameTime; + ALMicroTime nextDelta; + ALMicroTime curTime; +} ALSndPlayer; +typedef s16 ALSndId; +void alSndpNew(ALSndPlayer *sndp, ALSndpConfig *c); +void alSndpDelete(ALSndPlayer *sndp); +ALSndId alSndpAllocate(ALSndPlayer *sndp, ALSound *sound); +void alSndpDeallocate(ALSndPlayer *sndp, ALSndId id); +void alSndpSetSound(ALSndPlayer *sndp, ALSndId id); +ALSndId alSndpGetSound(ALSndPlayer *sndp); +void alSndpPlay(ALSndPlayer *sndp); +void alSndpPlayAt(ALSndPlayer *sndp, ALMicroTime delta); +void alSndpStop(ALSndPlayer *sndp); +void alSndpSetVol(ALSndPlayer *sndp, s16 vol); +void alSndpSetPitch(ALSndPlayer *sndp, f32 pitch); +void alSndpSetPan(ALSndPlayer *sndp, ALPan pan); +void alSndpSetPriority(ALSndPlayer *sndp, ALSndId id, u8 priority); +void alSndpSetFXMix(ALSndPlayer *sndp, u8 mix); +s32 alSndpGetState(ALSndPlayer *sndp); +typedef struct { + unsigned char *base; + int fmt, siz; + int xsize, ysize; + int lsize; + int addr; + int w, h; + int s, t; +} Image; +typedef struct { + float col[3]; + float pos[3]; + float a1, a2; +} PositionalLight; +extern int guLoadTextureBlockMipMap(Gfx **glist, unsigned char *tbuf, Image *im, + unsigned char startTile, unsigned char pal, unsigned char cms, + unsigned char cmt, unsigned char masks, unsigned char maskt, + unsigned char shifts, unsigned char shiftt, unsigned char cfs, + unsigned char cft); +extern int guGetDPLoadTextureTileSz (int ult, int lrt); +extern void guDPLoadTextureTile (Gfx *glistp, void *timg, + int texl_fmt, int texl_size, + int img_width, int img_height, + int uls, int ult, int lrs, int lrt, + int palette, + int cms, int cmt, + int masks, int maskt, + int shifts, int shiftt); +extern void guMtxIdent(Mtx *m); +extern void guMtxIdentF(float mf[4][4]); +extern void guOrtho(Mtx *m, float l, float r, float b, float t, + float n, float f, float scale); +extern void guOrthoF(float mf[4][4], float l, float r, float b, float t, + float n, float f, float scale); +extern void guFrustum(Mtx *m, float l, float r, float b, float t, + float n, float f, float scale); +extern void guFrustumF(float mf[4][4], float l, float r, float b, float t, + float n, float f, float scale); +extern void guPerspective(Mtx *m, u16 *perspNorm, float fovy, + float aspect, float near, float far, float scale); +extern void guPerspectiveF(float mf[4][4], u16 *perspNorm, float fovy, + float aspect, float near, float far, float scale); +extern void guLookAt(Mtx *m, + float xEye, float yEye, float zEye, + float xAt, float yAt, float zAt, + float xUp, float yUp, float zUp); +extern void guLookAtF(float mf[4][4], float xEye, float yEye, float zEye, + float xAt, float yAt, float zAt, + float xUp, float yUp, float zUp); +extern void guLookAtReflect(Mtx *m, LookAt *l, + float xEye, float yEye, float zEye, + float xAt, float yAt, float zAt, + float xUp, float yUp, float zUp); +extern void guLookAtReflectF(float mf[4][4], LookAt *l, + float xEye, float yEye, float zEye, + float xAt, float yAt, float zAt, + float xUp, float yUp, float zUp); +extern void guLookAtHilite(Mtx *m, LookAt *l, Hilite *h, + float xEye, float yEye, float zEye, + float xAt, float yAt, float zAt, + float xUp, float yUp, float zUp, + float xl1, float yl1, float zl1, + float xl2, float yl2, float zl2, + int twidth, int theight); +extern void guLookAtHiliteF(float mf[4][4], LookAt *l, Hilite *h, + float xEye, float yEye, float zEye, + float xAt, float yAt, float zAt, + float xUp, float yUp, float zUp, + float xl1, float yl1, float zl1, + float xl2, float yl2, float zl2, + int twidth, int theight); +extern void guLookAtStereo(Mtx *m, + float xEye, float yEye, float zEye, + float xAt, float yAt, float zAt, + float xUp, float yUp, float zUp, + float eyedist); +extern void guLookAtStereoF(float mf[4][4], + float xEye, float yEye, float zEye, + float xAt, float yAt, float zAt, + float xUp, float yUp, float zUp, + float eyedist); +extern void guRotate(Mtx *m, float a, float x, float y, float z); +extern void guRotateF(float mf[4][4], float a, float x, float y, float z); +extern void guRotateRPY(Mtx *m, float r, float p, float y); +extern void guRotateRPYF(float mf[4][4], float r, float p, float h); +extern void guAlign(Mtx *m, float a, float x, float y, float z); +extern void guAlignF(float mf[4][4], float a, float x, float y, float z); +extern void guScale(Mtx *m, float x, float y, float z); +extern void guScaleF(float mf[4][4], float x, float y, float z); +extern void guTranslate(Mtx *m, float x, float y, float z); +extern void guTranslateF(float mf[4][4], float x, float y, float z); +extern void guPosition(Mtx *m, float r, float p, float h, float s, + float x, float y, float z); +extern void guPositionF(float mf[4][4], float r, float p, float h, float s, + float x, float y, float z); +extern void guMtxF2L(float mf[4][4], Mtx *m); +extern void guMtxL2F(float mf[4][4], Mtx *m); +extern void guMtxCatF(float m[4][4], float n[4][4], float r[4][4]); +extern void guMtxCatL(Mtx *m, Mtx *n, Mtx *res); +extern void guMtxXFMF(float mf[4][4], float x, float y, float z, + float *ox, float *oy, float *oz); +extern void guMtxXFML(Mtx *m, float x, float y, float z, + float *ox, float *oy, float *oz); +extern void guNormalize(float *x, float *y, float *z); +void guPosLight(PositionalLight *pl, Light *l, + float xOb, float yOb, float zOb); +void guPosLightHilite(PositionalLight *pl1, PositionalLight *pl2, + Light *l1, Light *l2, + LookAt *l, Hilite *h, + float xEye, float yEye, float zEye, + float xOb, float yOb, float zOb, + float xUp, float yUp, float zUp, + int twidth, int theight); +extern int guRandom(void); +extern float sinf(float angle); +extern float cosf(float angle); +extern signed short sins (unsigned short angle); +extern signed short coss (unsigned short angle); +extern float sqrtf(float value); +extern void guParseRdpDL(u64 *rdp_dl, u64 nbytes, u8 flags); +extern void guParseString(char *StringPointer, u64 nbytes); +extern void +guBlinkRdpDL(u64 *rdp_dl_in, u64 nbytes_in, + u64 *rdp_dl_out, u64 *nbytes_out, + u32 x, u32 y, u32 radius, + u8 red, u8 green, u8 blue, + u8 flags); +extern void guParseGbiDL(u64 *gbi_dl, u32 nbytes, u8 flags); +extern void guDumpGbiDL(OSTask *tp,u8 flags); +typedef struct { + int dataSize; + int dlType; + int flags; + u32 paddr; +} guDLPrintCB; +void guSprite2DInit(uSprite *SpritePointer, + void *SourceImagePointer, + void *TlutPointer, + int Stride, + int SubImageWidth, + int SubImageHeight, + int SourceImageType, + int SourceImageBitSize, + int SourceImageOffsetS, + int SourceImageOffsetT); +typedef struct { + long type; + long length; + long magic; + char userdata[(((4096)*6)-(3*sizeof(long)))]; +} RamRomBuffer; +struct bitmap { + s16 width; + s16 width_img; + s16 s; + s16 t; + void *buf; + s16 actualHeight; + s16 LUToffset; +}; +typedef struct bitmap Bitmap; +struct sprite { + s16 x,y; + s16 width, height; + f32 scalex, scaley; + s16 expx, expy; + u16 attr; + s16 zdepth; + u8 red; + u8 green; + u8 blue; + u8 alpha; + s16 startTLUT; + s16 nTLUT; + int *LUT; + s16 istart; + s16 istep; + s16 nbitmaps; + s16 ndisplist; + s16 bmheight; + s16 bmHreal; + u8 bmfmt; + u8 bmsiz; + Bitmap *bitmap; + Gfx *rsp_dl; + Gfx *rsp_dl_next; + s16 frac_s, + frac_t; +}; +typedef struct sprite Sprite; +void spSetAttribute (Sprite *sp, s32 attr); +void spClearAttribute (Sprite *sp, s32 attr); +void spMove (Sprite *sp, s32 x, s32 y); +void spScale (Sprite *sp, f32 sx, f32 sy); +void spSetZ (Sprite *sp, s32 z ); +void spColor (Sprite *sp, u8 red, u8 green, u8 blue, u8 alpha); +Gfx *spDraw (Sprite *sp); +void spInit( Gfx **glistp ); +void spScissor( s32 xmin, s32 xmax, s32 ymin, s32 ymax ); +void spFinish( Gfx **glistp ); +extern long long int rspbootTextStart[], rspbootTextEnd[]; +extern long long int gspFast3DTextStart[], gspFast3DTextEnd[]; +extern long long int gspFast3DDataStart[], gspFast3DDataEnd[]; +extern long long int gspFast3D_dramTextStart[], gspFast3D_dramTextEnd[]; +extern long long int gspFast3D_dramDataStart[], gspFast3D_dramDataEnd[]; +extern long long int gspFast3D_fifoTextStart[], gspFast3D_fifoTextEnd[]; +extern long long int gspFast3D_fifoDataStart[], gspFast3D_fifoDataEnd[]; +extern long long int gspF3DNoNTextStart[], gspF3DNoNTextEnd[]; +extern long long int gspF3DNoNDataStart[], gspF3DNoNDataEnd[]; +extern long long int gspF3DNoN_dramTextStart[]; +extern long long int gspF3DNoN_dramTextEnd[]; +extern long long int gspF3DNoN_dramDataStart[]; +extern long long int gspF3DNoN_dramDataEnd[]; +extern long long int gspF3DNoN_fifoTextStart[]; +extern long long int gspF3DNoN_fifoTextEnd[]; +extern long long int gspF3DNoN_fifoDataStart[]; +extern long long int gspF3DNoN_fifoDataEnd[]; +extern long long int gspLine3DTextStart[], gspLine3DTextEnd[]; +extern long long int gspLine3DDataStart[], gspLine3DDataEnd[]; +extern long long int gspLine3D_dramTextStart[], gspLine3D_dramTextEnd[]; +extern long long int gspLine3D_dramDataStart[], gspLine3D_dramDataEnd[]; +extern long long int gspLine3D_fifoTextStart[], gspLine3D_fifoTextEnd[]; +extern long long int gspLine3D_fifoDataStart[], gspLine3D_fifoDataEnd[]; +extern long long int gspSprite2DTextStart[], gspSprite2DTextEnd[]; +extern long long int gspSprite2DDataStart[], gspSprite2DDataEnd[]; +extern long long int gspSprite2D_dramTextStart[], gspSprite2D_dramTextEnd[]; +extern long long int gspSprite2D_dramDataStart[], gspSprite2D_dramDataEnd[]; +extern long long int gspSprite2D_fifoTextStart[], gspSprite2D_fifoTextEnd[]; +extern long long int gspSprite2D_fifoDataStart[], gspSprite2D_fifoDataEnd[]; +extern long long int aspMainTextStart[], aspMainTextEnd[]; +extern long long int aspMainDataStart[], aspMainDataEnd[]; +extern long long int gspF3DEX_fifoTextStart[], gspF3DEX_fifoTextEnd[]; +extern long long int gspF3DEX_fifoDataStart[], gspF3DEX_fifoDataEnd[]; +extern long long int gspF3DEX_NoN_fifoTextStart[], gspF3DEX_NoN_fifoTextEnd[]; +extern long long int gspF3DEX_NoN_fifoDataStart[], gspF3DEX_NoN_fifoDataEnd[]; +extern long long int gspF3DLX_fifoTextStart[], gspF3DLX_fifoTextEnd[]; +extern long long int gspF3DLX_fifoDataStart[], gspF3DLX_fifoDataEnd[]; +extern long long int gspF3DLX_NoN_fifoTextStart[], gspF3DLX_NoN_fifoTextEnd[]; +extern long long int gspF3DLX_NoN_fifoDataStart[], gspF3DLX_NoN_fifoDataEnd[]; +extern long long int gspF3DLX_Rej_fifoTextStart[], gspF3DLX_Rej_fifoTextEnd[]; +extern long long int gspF3DLX_Rej_fifoDataStart[], gspF3DLX_Rej_fifoDataEnd[]; +extern long long int gspF3DLP_Rej_fifoTextStart[], gspF3DLP_Rej_fifoTextEnd[]; +extern long long int gspF3DLP_Rej_fifoDataStart[], gspF3DLP_Rej_fifoDataEnd[]; +extern long long int gspL3DEX_fifoTextStart[], gspL3DEX_fifoTextEnd[]; +extern long long int gspL3DEX_fifoDataStart[], gspL3DEX_fifoDataEnd[]; +extern long long int gspF3DEX2_fifoTextStart[], gspF3DEX2_fifoTextEnd[]; +extern long long int gspF3DEX2_fifoDataStart[], gspF3DEX2_fifoDataEnd[]; +extern long long int gspF3DEX2_NoN_fifoTextStart[],gspF3DEX2_NoN_fifoTextEnd[]; +extern long long int gspF3DEX2_NoN_fifoDataStart[],gspF3DEX2_NoN_fifoDataEnd[]; +extern long long int gspF3DLX2_fifoTextStart[], gspF3DLX2_fifoTextEnd[]; +extern long long int gspF3DLX2_fifoDataStart[], gspF3DLX2_fifoDataEnd[]; +extern long long int gspF3DLX2_NoN_fifoTextStart[],gspF3DLX2_NoN_fifoTextEnd[]; +extern long long int gspF3DLX2_NoN_fifoDataStart[],gspF3DLX2_NoN_fifoDataEnd[]; +extern long long int gspF3DLX2_Rej_fifoTextStart[],gspF3DLX2_Rej_fifoTextEnd[]; +extern long long int gspF3DLX2_Rej_fifoDataStart[],gspF3DLX2_Rej_fifoDataEnd[]; +extern long long int gspF3DLP2_Rej_fifoTextStart[],gspF3DLP2_Rej_fifoTextEnd[]; +extern long long int gspF3DLP2_Rej_fifoDataStart[],gspF3DLP2_Rej_fifoDataEnd[]; +extern long long int gspL3DEX2_fifoTextStart[], gspL3DEX2_fifoTextEnd[]; +extern long long int gspL3DEX2_fifoDataStart[], gspL3DEX2_fifoDataEnd[]; +typedef void (*OSErrorHandler)(s16, s16, ...); +OSErrorHandler osSetErrorHandler(OSErrorHandler); +typedef struct { + u32 magic; + u32 len; + u32 *base; + s32 startCount; + s32 writeOffset; +} OSLog; +typedef struct { + u32 magic; + u32 timeStamp; + u16 argCount; + u16 eventID; +} OSLogItem; +typedef struct { + u32 magic; + u32 version; +} OSLogFileHdr; +void osCreateLog(OSLog *log, u32 *base, s32 len); +void osLogEvent(OSLog *log, s16 code, s16 numArgs, ...); +void osFlushLog(OSLog *log); +u32 osLogFloat(f32); +extern void osDelay(int count); +typedef struct Vec3f { + union { + struct { + f32 x; + f32 y; + f32 z; + }; + f32 f[3]; + }; +} Vec3f; +typedef float MtxF_t[4][4]; +typedef union { + MtxF_t mf; + struct { + float xx, yx, zx, wx, + xy, yy, zy, wy, + xz, yz, zz, wz, + xw, yw, zw, ww; + }; +} MtxF; +typedef struct { +Vec3f pos; +Vec3f rot; +} PosRot; +typedef struct map_data_s{ + char unk0[0x30]; + s32 unk30; + s32 unk34; +}sMapData; +typedef struct +{ + u8 red; + u8 green; + u8 blue; + u8 alpha; +}Color_RGBA8; +typedef struct unk_232f4_s{ + f32 unk0; + f32 unk4; +}unk232f4s; +typedef struct unk_1d924_s +{ + s32 unk0; + s16 unk4; + s16 unk6; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; +}unk1d924s; +typedef struct unk_D_80086DC0_s +{ + s32 unk0; + s32 unk4; + u16 unk8; + s16 unkA; + f32 unkC; + f32 unk10; + f32 unk14; + char unk18[0x3C]; + f32 unk54; +}unkD80086DC0s; +typedef struct { + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + f32 unk10; + u16 unk14; + char unk16[0xE]; +}unkfde0s; +typedef struct { + s32 unk0; + unkfde0s* unk4; + s32 unk8; + char unkC[0x6]; + u16 unk12; + u16 unk14; +}unk84f1cs; +typedef struct { + u16 unk0; + s16 unk2; + u16 currHP; + u16 maxHP; + u16 currMP; + u16 maxMP; + u16 agi; + u16 def; + s32 exp; + s32 unk14; + f32 colissionSize; + f32 unk1C; + f32 unk20; + u8 fireSpirits; + u8 earthSpirits; + u8 waterSpirits; + u8 windSpirits; + u16 HPXP; + u16 MPXP; + u16 agiXP; + u16 defXP; + u8 HPLevel; + u8 MPLevel; + u8 agiLevel; + u8 defLevel; + u8 spiritLevel; + u8 unk35; + u8 unk36; + u8 unk37; + u16 unk38; + s16 unk3A; + s16 unk3C; + s16 unk3E; + u16 unk40; + s16 unk42; + char unk44[0x4]; + void* brianData; +}BrianData1; +typedef struct { + f32 x; + f32 y; + f32 z; + f32 xrot; + f32 yrot; + f32 zrot; + f32 xspeed; + f32 yspeed; + f32 zspeed; + f32 scale; + f32 shadowScale; + f32 shadowXRot; + f32 shadowYRot; + f32 shadowZRot; + f32 unkDoor38; + f32 unkDoor3C; + f32 unkDoor40; + f32 unkDoor44; + f32 unkDoor48; + f32 unkDoor4C; + s16 unk50; + s16 animID; + s16 animFrame; + u16 totalAnimFrames; + u16 animeFramerate; + s16 unk5A; + s16 unk5C; + s16 unk5E; + u16 unk60; + u16 unk62; + BrianData1* brianData1; +}BrianData2; +typedef struct player_Action_s +{ + s16 unk0; + s16 unk2; + s16 dustTimer; + s16 doorSide; + u16 unk8; + s16 unkA; + s32 unkC; + void* unk10; + f32 xpos; + f32 ypos; + f32 zpos; + char unk20[0x18]; + f32 unk38; + char unk3C[0x3C]; + BrianData1* unk78; +}sPlayerAction; +extern BrianData2 D_8007BACC; +extern Mtx D_2000000[]; +extern Mtx D_2000040[]; +extern s32 D_8007B2F8; +extern s32 D_8007B2E4; +extern s16 D_8007B2E8; +extern s32 D_80084EE4; +extern s16 gGameMode; +extern u16 D_8008C592; +extern s8 D_80092870; +extern u64 D_803232A0[]; +extern s32 gNextSubmap; +extern u16 gAllowBattles; +extern sMapData* gMapData; +extern f32 D_80086E88[4]; +extern f32 D_80086ECC; +extern f32 D_80086ED4; +extern s8 D_80092871; +extern s8 D_80092872; +extern Gfx* gMasterGfxPos; +extern unkD80086DC0s D_80086DC0; +extern u16 D_80092876; +extern u8 D_8004D740[]; +extern u8 D_80086AE8[]; +extern u8 D_800869D8[]; +extern unk84f1cs* D_80084F1C; +extern s32 gCurrentTime; +extern s32 gDayLength; +extern u16 gCurrentDay; +u8 func_80026554(u8); +s32 func_8003195C(s8, u8); +s32 func_80031BB0(s32); +s32 osContInit(OSMesgQueue*, u8*, OSContStatus*); +void func_80024260(u8* arg0, void* arg1, u32 arg2); +s32 func_80024330(s32 arg0, u8* arg1, u16 arg2); +float _nsqrtf(float value); +u32 func_80022FD0(u32 arg0); +s32 func_80031ACC(s32 arg0, s32 arg1); +void func_800232F4(f32 arg0, unk232f4s* arg1); +void func_80006720(BrianData2* arg0); +void func_8001D924(BrianData2* arg0, unk1d924s* arg1, f32 arg2); +void func_80023570(MtxF *arg0, f32 arg1, f32 arg2, f32 arg3); +s32 func_8000FF54(f32); +void func_80023A08(f32 arg0[4][4], f32 arg1, f32 arg2, f32 arg3); +void func_80023DF4(f32 arg0[4][4], f32 arg1, f32 arg2, f32 arg3); +f32 func_80023210(f32, f32); + typedef unsigned uintptr_t; +typedef struct OSScTask_s { + struct OSScTask_s *next; + u32 state; + u32 flags; + void *framebuffer; + OSTask list; + OSMesgQueue *msgQ; + OSMesg msg; +} OSScTask; +typedef struct { + OSScTask task; + char unk58[0xD0F0]; + OSMesg unkD148; + void *unkD14C; +}unk111Cs; +extern u64 D_80049EF0[]; +extern u64 D_80049FC0[]; +extern u64 D_80049FC0_2[]; +extern u64 D_800723D0[]; +extern OSMesgQueue D_8007B9E8; +extern u64 D_80300000[]; +extern u64 D_80300400[]; +extern u64 D_8031B2A0[]; +extern u64 D_803232A0[]; +extern f32 D_80070F04; +extern s16 D_8007B2F0; +extern s8 D_8007B344; +extern s8 D_8007B345; +extern f32 D_8007BA40; +extern f32 D_8007BA44; +extern f32 D_8007BA48; +extern s32 D_8007BA4C; +extern s16 D_8007BA60; +extern u16 D_8007BA62; +extern s16 D_8007BA64; +extern s16 D_8007BABE; +extern u32 D_80084EEC; +extern s32 D_80084EF0; +extern s32 D_80084EF8; +extern s32 D_80084F04; +extern u16 D_80084F14; +extern s32 D_80085370; +extern s16 D_800859E2; +extern f32 D_80086E44; +#pragma GLOBAL_ASM("asm/nonmatchings/1850/func_80000C50.s") +void func_80000EEC(void) { + D_8007B2E4 = 0x160; + gGameMode = 4; + D_80084EE4 = -1; + D_80084EF8 = -1; + D_80084F04 = -1; + D_80084F14 = 0xFFFF; + D_80086E44 = 0.0f; + D_800859E2 = 0; + D_80084EEC = 0xD; + D_80084EF0 = 0x11; + D_80085370 = -1; + D_8007BA60 = 0xD; + D_8007BA62 = 0x11; + D_8007BA64 = 0; + D_8007BA40 = -26.0f; + D_8007BA44 = 0.0f; + D_8007BA48 = D_80070F04; + D_8007BA4C = 0x108; + D_8007BABE = 0; + D_8007B2E8 = 1; + D_8007B2F0 = 0; + D_8007B344 = 0; + D_8007B345 = 0; +} +#pragma GLOBAL_ASM("asm/nonmatchings/1850/func_80000FE8.s") +void func_8000111C(unk111Cs* arg0) { + arg0->task.list.t.type = 1; + arg0->task.list.t.flags = 0; + arg0->task.list.t.ucode_boot = D_80049EF0; + arg0->task.list.t.ucode_boot_size = (uintptr_t)D_80049FC0 - (uintptr_t)D_80049EF0; + arg0->task.list.t.ucode = D_80049FC0_2; + arg0->task.list.t.ucode_data = D_800723D0; + arg0->task.list.t.ucode_data_size = 2048; + arg0->task.list.t.dram_stack = D_80300000; + arg0->task.list.t.dram_stack_size = (1024); + arg0->task.list.t.output_buff = D_8031B2A0; + arg0->task.list.t.output_buff_size = D_803232A0; + arg0->task.list.t.yield_data_ptr = D_80300400; + arg0->task.list.t.yield_data_size = 0xc00; + arg0->task.next = 0; + arg0->task.flags = 0x40; + arg0->task.msgQ = &D_8007B9E8; + arg0->task.msg = &arg0->unkD148; + arg0->task.framebuffer = arg0->unkD14C; +} +#pragma GLOBAL_ASM("asm/nonmatchings/1850/func_800011DC.s") +#pragma GLOBAL_ASM("asm/nonmatchings/1850/func_80001800.s") +#pragma GLOBAL_ASM("asm/nonmatchings/1850/func_800020B4.s") +#pragma GLOBAL_ASM("asm/nonmatchings/1850/func_8000227C.s") +#pragma GLOBAL_ASM("asm/nonmatchings/1850/func_80002428.s") +#pragma GLOBAL_ASM("asm/nonmatchings/1850/func_800025E8.s") diff --git a/include/monsters.h b/include/monsters.h new file mode 100644 index 0000000..dedae04 --- /dev/null +++ b/include/monsters.h @@ -0,0 +1,90 @@ +#ifndef _MONSTERS_H_ +#define _MONSTERS_H_ + +typedef struct { + u8 unk0[0x18]; +}AIScript; + +typedef struct { + /* 0x00 */ u16 monsterType; //Ground, Flying, or Mammon (doesn't render a shadow) + /* 0x02 */ u16 monsterID; + /* 0x04 */ u16 currHP; + /* 0x06 */ u16 maxHP; + /* 0x08 */ f32 unk8; //possibly monster MP which would be unused since monsters don't USE MP + /* 0x0C */ u16 agi; + /* 0x0E */ u16 def; + /* 0x10 */ s32 expValue; + /* 0x14 */ s32 unk14; + /* 0x18 */ f32 hitboxHeight; + /* 0x1C */ f32 hitboxWidth; + /* 0x20 */ f32 modelScale; + /* 0x24 */ u16 unk24; //type may be wrong + /* 0x26 */ u16 element; //type may be wrong + /* 0x28 */ u16 unk28; + /* 0x2A */ u16 atk; //spell id or actual attack power? + /* 0x2C */ u16 aiScriptNumber; + /* 0x2E */ u16 unk2E; + /* 0x30 */ AIScript* AIScript; + /* 0x34 */ u8 itemDrop; + /* 0x35 */ u8 unk35; + /* 0x36 */ u16 unk36; +} MonsterBaseData; // size 0x38 + +typedef struct { + u8 pad[0x86]; + u16 unk86; + char unk88[0xC]; + f32 unk94; +} UnknownMonsterData2; + +typedef struct { + /* 0x00 */ Vec3f pos; + /* 0x0C */ f32 xrot; + /* 0x10 */ f32 yrot; + /* 0x14 */ f32 zrot; + /* 0x18 */ f32 unk18; + /* 0x1C */ f32 unk1C; + /* 0x20 */ f32 unk20; + /* 0x24 */ f32 scale; + /* 0x28 */ f32 collisionScale; + /* 0x2C */ f32 shadowXRot; + /* 0x30 */ f32 shadowYRot; + /* 0x34 */ f32 shadowZRot; + /* 0x38 */ f32 unk38; + /* 0x3C */ f32 unk3C; + /* 0x40 */ f32 unk40; + /* 0x44 */ f32 unk44; + /* 0x48 */ f32 unk48; + /* 0x4C */ f32 unk4C; + /* 0x50 */ s16 modelID; + /* 0x52 */ s16 animID; + /* 0x54 */ u16 animFrame; + /* 0x56 */ u16 totalFrameCnt; + /* 0x58 */ u16 animSpeed; + /* 0x5A */ u16 nextAnimID; //may be incorrect + /* 0x5C */ s16 unk5C; + /* 0x5E */ s16 unk5E; + /* 0x60 */ u16 unk60; + /* 0x62 */ u16 unk62; + /* 0x64 */ MonsterBaseData *unk64; + /* 0x68 */ UnknownMonsterData2 *unk68; + /* 0x6C */ UnknownMonsterData2 unk6C; +} MonsterBattleData; // size 0x104 + +typedef struct { + /* 0x0 */ u16 actionID; + /* 0x2 */ u16 actionTimer; + /* 0x4 */ u16 unk4; + /* 0x6 */ u16 unk6; + /* 0x8 */ u16 unk8; + /* 0xA */ u16 currHP; + /* 0xC */ u16 maxHP; + /* 0XE */ u16 unkE; + /* 0x10 */ f32 movementBoundSize; + /* 0x14 */ u8 pad[0x8]; + /* 0x1C */ AIScript* AIScript; + /* 0x20 */ MonsterBaseData* monBaseData; + /* 0x24 */ MonsterBattleData battleData; +} EnemyAction; // size 0x128 + +#endif diff --git a/include/nnsched.h b/include/nnsched.h new file mode 100644 index 0000000..c9d6951 --- /dev/null +++ b/include/nnsched.h @@ -0,0 +1,111 @@ +/*============================================================================ + NINTENDO64 TECHNICAL SUPPORT CENTER + + NINTENDO64 SAMPLE PROGRAM 1 + Copyright (C) 1997, NINTENDO Co., Ltd. +============================================================================*/ +#ifndef _NN_SCHED_ +#define _NN_SCHED_ +#include +#define NN_SC_STACKSIZE 0x2000 /* thread stack size */ +#define NN_SC_SWAPBUFFER 0x0040 /* frame buffer swap */ +#define NN_SC_RETRACE_MSG 1 /* retrace message */ +#define NN_SC_DONE_MSG 2 /* task end message */ +#define NN_SC_PRE_NMI_MSG 3 /* NMI message */ +#define NN_SC_GTASKEND_MSG 4 /* task end message (in the case of a + graphic task, task end only */ +#define NN_SC_MAX_MESGS 8 /* message buffer size */ +/* define thread priority */ +#define NN_SC_PRI 120 /* scheduler */ +#define NN_SC_AUDIO_PRI 110 /* audio */ +#define NN_SC_GRAPHICS_PRI 100 /* graphics */ +/* define event message */ +#define VIDEO_MSG 666 /* retrace message */ +#define RSP_DONE_MSG 667 /* RSP task done */ +#define RDP_DONE_MSG 668 /* RDP draw done */ +#define PRE_NMI_MSG 669 /* NMI message */ +/* + For performance check. + Please define NN_SC_PERF in order to check PCP performance. + */ +#define NN_SC_PERF +#define NN_SC_PERF_NUM 4 +#define NN_SC_GTASK_NUM 8 /* graphic task maximum number */ +#define NN_SC_AUTASK_NUM 4 /* audio task maximum number */ +/*===========================================================================*/ +typedef short NNScMsg; /* scheduler message type */ +typedef struct SCClient_s { /* client list structure */ + struct SCClient_s *next; /* pointer to next client */ + OSMesgQueue *msgQ; /* message sent to client */ +} NNScClient; +typedef struct SCTask_s { /* task structure */ + struct SCTask_s *next; /* Note: usually stationed at start of structure */ + u32 state; + u32 flags; + void *framebuffer; /* for graphic task use */ + OSTask list; + OSMesgQueue *msgQ; + OSMesg msg; +} NNScTask; +typedef struct { /* define scheduler structure */ + /* message */ + NNScMsg retraceMsg; + NNScMsg prenmiMsg; + /* define task request */ + OSMesgQueue audioRequestMQ; + OSMesg audioRequestBuf[NN_SC_MAX_MESGS]; + OSMesgQueue graphicsRequestMQ; + OSMesg graphicsRequestBuf[NN_SC_MAX_MESGS]; + /* define message queue */ + OSMesgQueue retraceMQ; + OSMesg retraceMsgBuf[NN_SC_MAX_MESGS]; + OSMesgQueue rspMQ; + OSMesg rspMsgBuf[NN_SC_MAX_MESGS]; + OSMesgQueue rdpMQ; + OSMesg rdpMsgBuf[NN_SC_MAX_MESGS]; + /* used for waiting for next retrace signal */ + OSMesgQueue waitMQ; + OSMesg waitMsgBuf[NN_SC_MAX_MESGS]; + /* define thread */ + OSThread schedulerThread; /* main thread */ + OSThread audioThread; /* audio */ + OSThread graphicsThread; /* graphics */ + /* client list */ + NNScClient *clientList; + /* executing graphic task */ + NNScTask *curGraphicsTask; + NNScTask *curAudioTask; + NNScTask *graphicsTaskSuspended; + + /* misc. */ + u32 firstTime; /* flag for control of screen blackout */ +} NNSched; +/* performance check structure */ +typedef struct { + u32 gtask_cnt; /* graphic task counter */ + u32 autask_cnt; /* audio task counter */ + u64 retrace_time; /* graphic creation time */ + u64 gtask_stime[NN_SC_GTASK_NUM]; /* task start time */ + u64 rdp_etime[NN_SC_GTASK_NUM]; /* RDP end time */ + u64 rsp_etime[NN_SC_GTASK_NUM]; /* RSP end time */ + u64 autask_stime[NN_SC_AUTASK_NUM]; /* audio task start time */ + u64 autask_etime[NN_SC_AUTASK_NUM]; /* audio task end time */ + u32 endflag; +} NNScPerf; + +#ifdef NN_SC_PERF +extern NNScPerf* nnsc_perf_ptr; +#endif /* NN_SC_PERF */ +/* function prototype declarations */ +void nnScCreateScheduler(NNSched * sc, u8 numFields); +extern void nnScAddClient(NNSched *sc, NNScClient *, OSMesgQueue *mq); +extern void nnScRemoveClient(NNSched *sc, NNScClient +*client); +extern void nnScEventHandler(NNSched *sc); +extern void nnScEventBroadcast(NNSched *sc, NNScMsg *msg); +extern void nnScExecuteAudio(NNSched *sc); +extern void nnScExecuteGraphics(NNSched *sc); +extern void nnScWaitTaskReady(NNSched *sc, NNScTask *task); +extern OSMesgQueue * nnScGetGfxMQ(NNSched *sc); +extern OSMesgQueue * nnScGetAudioMQ(NNSched *sc); +#endif diff --git a/include/npc.h b/include/npc.h new file mode 100644 index 0000000..15554e5 --- /dev/null +++ b/include/npc.h @@ -0,0 +1,50 @@ +#ifndef _NPC_H_ +#define _NPC_H_ + +typedef struct { + char unk0[0x2]; + s16 unk2; + char unk4[0xA]; + s16 unkE; + +}NPCData3; + +typedef struct { + char unk0[0x4]; + u8 unk4; + char unk5[0xB]; + NPCData3* unk10; + char unk14[4]; + u16 unk18; +}NPCData2; + +typedef struct { +/*0x00*/u16 action; +/*0x02*/u16 actionTimer; +/*0x04*/f32 xWanderOrigin; //xpos of a point a wandering NPC can't stray too far from. +/*0x08*/f32 zWanderOrigin; //zpos of a point a wandering NPC can't stray too far from. +/*0x0C*/f32 yRotReturn; //yRotation to return to when done speaking. +/*0x10*/f32 unk10; //changes based on where Brian speaks to the NPC from. Current purpose unknown. +/*0x14*/PosRot PosRot; +/*0x2C*/f32 unk2C; +/*0x30*/f32 unk30; +/*0x34*/f32 unk34; +/*0x38*/f32 scale; +/*0x3C*/f32 collisionSize; +/*0x40*/Vec3f shadowRot; +/*0x4C*/char unk4C[0x14]; +/*0x60*/u16 unk60; +/*0x62*/char unk62[4]; +/*0x66*/s16 animID; + u16 animFrames; + u16 totalFrames; + u16 animSpeed; + s16 unkAnimID; //may be nextAnimID, but doesn't seem to be. Research needed. + s16 unk70; + char unk72[0x2]; + u16 unk74; + char unk76[0xA]; + NPCData2* unk80; +}NPCData; + +#endif diff --git a/include/player.h b/include/player.h new file mode 100644 index 0000000..30c1f8e --- /dev/null +++ b/include/player.h @@ -0,0 +1,110 @@ +#ifndef _PLAYER_H_ +#define _PLAYER_H_ + + +typedef struct { + /*0x00*/ u16 unk0; + /*0x02*/ s16 unk2; + /*0x04*/ u16 currHP; + /*0x06*/ u16 maxHP; + /*0x08*/ u16 currMP; + /*0x0A*/ u16 maxMP; + /*0x0C*/ u16 agi; + /*0x0E*/ u16 def; + /*0x10*/ s32 exp; + /*0x14*/ s32 unk14; + /*0x18*/ f32 colissionSize; + /*0x1C*/ f32 unk1C; + /*0x20*/ f32 unk20; //also affects colission size. May be zColissionSize and the above are X and Y. + /*0x24*/ u8 fireSpirits; + /*0x25*/ u8 earthSpirits; + /*0x26*/ u8 waterSpirits; + /*0x27*/ u8 windSpirits; + /*0x28*/ u16 HPXP; + /*0x2A*/ u16 MPXP; + /*0x2C*/ u16 agiXP; + /*0x2E*/ u16 defXP; + /*0x30*/ u8 HPLevel; + /*0x31*/ u8 MPLevel; + /*0x32*/ u8 agiLevel; + /*0x33*/ u8 defLevel; + /*0x34*/ u8 spiritLevel; + /*0x35*/ u8 unk35; + /*0x36*/ u8 unk36; + /*0x37*/ u8 unk37; + /*0x38*/ u16 unk38; + /*0x3A*/ s16 unk3A; + /*0x3C*/ s16 unk3C; //animation related + /*0x3E*/ s16 unk3E; //side of door entered? + /*0x40*/ u16 unk40; + /*0x42*/ s16 unk42; + /*0x44*/ char unk44[0x4]; + /*0x48*/ void* brianData; //points to the beginning of BrianData1 struct again. +}BrianData1; + +typedef struct { + /*0x00*/ f32 x; + /*0x04*/ f32 y; + /*0x08*/ f32 z; + /*0x0C*/ f32 xrot; + /*0x10*/ f32 yrot; + /*0x14*/ f32 zrot; + /*0x18*/ f32 xspeed; + /*0x1C*/ f32 yspeed; + /*0x20*/ f32 zspeed; + /*0x24*/ f32 scale; + /*0x28*/ f32 shadowScale; + /*0x2C*/ f32 shadowXRot; + /*0x30*/ f32 shadowYRot; + /*0x34*/ f32 shadowZRot; + + /*these are only written to when going through a door + freezing the values zips you to strange parts of the map. + may be the coordinates to load you into when going through a door.*/ + /*0x38*/ f32 unkDoor38; + /*0x3C*/ f32 unkDoor3C; + /*0x40*/ f32 unkDoor40; + + //only written to when using a door. Unknown what they actually do. + //NOTE: Freezing them makes brian unsuccessfully exit the door on the other side. + /*0x44*/ f32 unkDoor44; + /*0x48*/ f32 unkDoor48; + /*0x4C*/ f32 unkDoor4C; + /*0x50*/ s16 unk50; + /*0x52*/ s16 animID; + /*0x54*/ s16 animFrame; + /*0x56*/ u16 totalAnimFrames; + /*0x58*/ u16 animeFramerate; + /*0x5A*/ s16 unk5A; + /*0x5C*/ s16 unk5C; + /*0x5E*/ s16 unk5E; //possibly padding + /*0x60*/ u16 unk60; + /*0x62*/ u16 unk62; + /*0x64*/ BrianData1* brianData1; + +}BrianData2; + +typedef struct player_Action_s +{ + s16 unk0; + s16 unk2; + s16 dustTimer; + s16 doorSide; + u16 unk8; + s16 unkA; + s32 unkC; + void* unk10; + f32 xpos; + f32 ypos; + f32 zpos; + char unk20[0x18]; + f32 unk38; // + char unk3C[0x3C]; + BrianData1* unk78; +}sPlayerAction; + + +extern BrianData2 D_8007BACC; + + +#endif diff --git a/progress.py b/progress.py new file mode 100644 index 0000000..92e87db --- /dev/null +++ b/progress.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 + +from dataclasses import dataclass +import shutil +import glob +import os + +@dataclass +class Function(): + name: str + size: int + + def __lt__(self, other): + return self.size < other.size + +def get_size(path): + f = open(path, 'r') + lines = f.readlines() + f.close() + name = os.path.basename(file).split('.')[0] + inst = 0 + for line in lines: + if ('glabel ' + name) in line: + inst = 0 + if line.startswith('/*'): + inst += 1 + return inst + +dirs = glob.glob("nonmatchings/src/code0/*") +dirs += glob.glob("nonmatchings/src/code1/*") +dirs += glob.glob("nonmatchings/gen/code0/*") + +shutil.rmtree('stats', ignore_errors=True) +os.mkdir('stats') +os.mkdir('stats/code0') +os.mkdir('stats/code1') + +all_func = [] +for dir in dirs: + func = [] + asm_files = [y for x in os.walk(dir) for y in glob.glob(os.path.join(x[0], '*.s'))] + for file in asm_files: + name = os.path.basename(file).split('.')[0] + if name.startswith('D_'): + continue + func.append(Function(name, get_size(file))) + + all_func += func + func.sort() + + parent1 = os.path.split(dir) + parent2 = os.path.split(parent1[0]) + path = os.path.join('stats', parent2[1], parent1[1]) + '.csv' + + f = open(path, 'w') + for fu in func: + f.write(fu.name+';'+str(fu.size)+'\n') + f.close() + +all_func.sort() +f = open(os.path.join('stats', 'all.csv'), 'w') +for fu in all_func: + f.write(fu.name+';'+str(fu.size)+'\n') +f.close() \ No newline at end of file diff --git a/src/31A10.c b/src/31A10.c index 61566f9..cb42d64 100644 --- a/src/31A10.c +++ b/src/31A10.c @@ -2,7 +2,7 @@ extern void* gTextPalettes; extern u8 D_D3E240[]; -extern u8 gTexTextPhys[]; +extern u8 gTexAlphabetPhys[]; //#pragma GLOBAL_ASM("asm/nonmatchings/31A10/func_80030E10.s") void func_80030E10(u8 *arg0, u8 *arg1) @@ -18,7 +18,7 @@ void func_80030E10(u8 *arg0, u8 *arg1) //#pragma GLOBAL_ASM("asm/nonmatchings/31A10/func_80030E58.s") void func_80030E58(void) { func_80024260(D_D3E240, &gTextPalettes, 0x80); //text palettes - func_80024260(gTexTextPhys, &D_803232A0, 0xE790); //text gfx + func_80024260(gTexAlphabetPhys, &D_803232A0, 0xE790); //text gfx } #pragma GLOBAL_ASM("asm/nonmatchings/31A10/func_80030EA0.s") diff --git a/src/createthread.c b/src/createthread.c new file mode 100644 index 0000000..f388c3b --- /dev/null +++ b/src/createthread.c @@ -0,0 +1,28 @@ +#include +#include +void __osCleanupThread(void); +extern OSThread *__osActiveQueue; +void osCreateThread(OSThread *t, OSId id, void (*entry)(void *), void *arg, void *sp, OSPri p) +{ + register u32 saveMask; + OSIntMask mask; + t->id = id; + t->priority = p; + t->next = NULL; + t->queue = NULL; + t->context.pc = (u32)entry; + t->context.a0 = (u64)arg; + t->context.sp = (u64)sp - 16; + t->context.ra = (u64)__osCleanupThread; + mask = OS_IM_ALL; + t->context.sr = SR_IMASK | SR_EXL | SR_IE; + t->context.rcp = (mask & RCP_IMASK) >> RCP_IMASKSHIFT; + t->context.fpcsr = (u32)(FPCSR_FS | FPCSR_EV); + t->fp = 0; + t->state = OS_STATE_STOPPED; + t->flags = 0; + saveMask = __osDisableInt(); + t->tlnext = __osActiveQueue; + __osActiveQueue = t; + __osRestoreInt(saveMask); +} \ No newline at end of file diff --git a/src/csplayer.c b/src/csplayer.c new file mode 100644 index 0000000..856ef21 --- /dev/null +++ b/src/csplayer.c @@ -0,0 +1,19 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/nonmatchings/csplayer/__CSPPostNextSeqEvent.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/csplayer/func_80037140.s") + +void func_80037174(void) { +} + +#pragma GLOBAL_ASM("asm/nonmatchings/csplayer/func_8003717C.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/csplayer/func_8003734C.s") + +void func_80037B74(void) { +} + +#pragma GLOBAL_ASM("asm/nonmatchings/csplayer/func_80037B7C.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/csplayer/alCSPNew.s") diff --git a/src/nnsched.c b/src/nnsched.c new file mode 100644 index 0000000..1d44dc4 --- /dev/null +++ b/src/nnsched.c @@ -0,0 +1,211 @@ +/*Adapted from nnsched.h from NINTENDO64 SAMPLE PROGRAM 1 + from the Nintendo 64 Technical Support Center for + use with Quest 64 */ + +#include "common.h" +#include "nnsched.h" + +extern u16 D_8007B2D0; //named framecont in nnsched.c +extern u64 D_800792D0; +extern u64 D_8007A2D0; + +void nnScCreateScheduler(NNSched * sc, u8 numFields) { + + sc->curGraphicsTask = 0; + sc->curAudioTask = 0; + sc->graphicsTaskSuspended = 0; + sc->clientList = 0; + sc->firstTime = 1; + sc->retraceMsg = NN_SC_RETRACE_MSG; + sc->prenmiMsg = NN_SC_PRE_NMI_MSG; + + osCreateMesgQueue(&sc->retraceMQ, sc->retraceMsgBuf, NN_SC_MAX_MESGS); + osCreateMesgQueue(&sc->rspMQ, sc->rspMsgBuf, NN_SC_MAX_MESGS); + osCreateMesgQueue(&sc->rdpMQ, sc->rdpMsgBuf, NN_SC_MAX_MESGS); + osCreateMesgQueue(&sc->graphicsRequestMQ, sc->graphicsRequestBuf, NN_SC_MAX_MESGS); + osCreateMesgQueue(&sc->audioRequestMQ, sc->audioRequestBuf, NN_SC_MAX_MESGS); + osCreateMesgQueue(&sc->waitMQ, sc->waitMsgBuf, NN_SC_MAX_MESGS); + + osViSetEvent(&sc->retraceMQ, (OSMesg)VIDEO_MSG, numFields); + osSetEventMesg(OS_EVENT_SP, &sc->rspMQ, (OSMesg)RSP_DONE_MSG); + osSetEventMesg(OS_EVENT_DP, &sc->rdpMQ, (OSMesg)RDP_DONE_MSG); + osSetEventMesg(OS_EVENT_PRENMI, &sc->retraceMQ, (OSMesg)PRE_NMI_MSG); +} + +void nnScStartScheduler(NNSched* sc) { + + osCreateThread(&sc->schedulerThread, 0x13, (void (*)(void*)) nnScEventHandler, sc, &D_800792D0, NN_SC_PRI); + osStartThread(&sc->schedulerThread); + osCreateThread(&sc->audioThread, 0x12, (void (*)(void*)) nnScExecuteAudio, sc, &D_8007A2D0, NN_SC_AUDIO_PRI); + osStartThread(&sc->audioThread); + osCreateThread(&sc->graphicsThread, 0x11, (void (*)(void*)) nnScExecuteGraphics, sc, &D_8007B2D0, NN_SC_GRAPHICS_PRI); + osStartThread(&sc->graphicsThread); +} + +OSMesgQueue* nnScGetAudioMQ(NNSched* sc) { + return &sc->audioRequestMQ; +} + +OSMesgQueue* nnScGetGfxMQ(NNSched* sc) { + return &sc->graphicsRequestMQ; +} + +void nnScEventHandler(NNSched* sc) { + + OSMesg msg = (OSMesg)0; + +while(1){ + osRecvMesg(&sc->retraceMQ, &msg, OS_MESG_BLOCK); + D_8007B2D0++; + + switch ( (int)msg ) { + case VIDEO_MSG: + nnScEventBroadcast(sc, &sc->retraceMsg); + break; + case PRE_NMI_MSG: + nnScEventBroadcast(sc, &sc->prenmiMsg); + break; + } + } +} + +void nnScAddClient(NNSched *sc, NNScClient *c, OSMesgQueue *msgQ) +{ + OSIntMask mask; + mask = osSetIntMask(OS_IM_NONE); + c->msgQ = msgQ; + c->next = sc->clientList; + sc->clientList = c; + osSetIntMask(mask); +} + +void nnScRemoveClient(NNSched *sc, NNScClient *c) +{ + NNScClient *client = sc->clientList; + NNScClient *prev = 0; + OSIntMask mask; + mask = osSetIntMask(OS_IM_NONE); + + while (client != 0) { + if (client == c) { + if(prev) + prev->next = c->next; + else + sc->clientList = c->next; + break; + } + prev = client; + client = client->next; + } + osSetIntMask(mask); +} + +void nnScEventBroadcast(NNSched *sc, NNScMsg *msg) +{ + NNScClient *client; + + /* inform necessary clients of retrace message */ + for (client = sc->clientList; client != 0; client = client->next) { + osSendMesg(client->msgQ, (OSMesg *)msg, OS_MESG_NOBLOCK); + } +} + +void nnScExecuteAudio(NNSched *sc) +{ + OSMesg msg = (OSMesg)0; + NNScTask *task = (NNScTask *)0; + NNScTask *gfxTask = (NNScTask *)0; + u32 yieldFlag; + + while(1) { + /* wait for audio execution request */ + osRecvMesg(&sc->audioRequestMQ, (OSMesg *)&task, OS_MESG_BLOCK); + osWritebackDCacheAll(); /* flash cache */ + /* Inspect current RSP stack */ + yieldFlag = 0; + gfxTask = sc->curGraphicsTask; + if( gfxTask ) { + /* wait for graphic task to end (yield) */ + osSpTaskYield(); /* task yield */ + osRecvMesg(&sc->rspMQ, &msg, OS_MESG_BLOCK); + /* verify that task has actually yielded */ + if (osSpTaskYielded(&gfxTask->list)){ + yieldFlag =1; + } else { + yieldFlag =2; + } + } + + sc->curAudioTask = task; + osSpTaskStart(&task->list); /* execute task */ + /* wait for end of RSP task */ + osRecvMesg(&sc->rspMQ, &msg, OS_MESG_BLOCK); + sc->curAudioTask = (NNScTask *)0; + + if( sc->graphicsTaskSuspended ) + osSendMesg( &sc->waitMQ, &msg, OS_MESG_BLOCK ); + /* restart graphic task that yielded */ + if( yieldFlag == 1 ) { + osSpTaskStart(&gfxTask->list); + } else if ( yieldFlag == 2 ) { + osSendMesg(&sc->rspMQ, &msg, OS_MESG_BLOCK); + } + /* inform thread started by audio task that task has ended */ + osSendMesg(task->msgQ, task->msg, OS_MESG_BLOCK); + } +} + +void nnScExecuteGraphics(NNSched *sc) +{ + OSMesg msg = (OSMesg)0; + NNScTask *task; + + while(1) { + /* wait for graphic task execution request */ + osRecvMesg(&sc->graphicsRequestMQ, (OSMesg *)&task, OS_MESG_BLOCK); + /* wait for frame buffer to become available for use */ + nnScWaitTaskReady(sc, task); + if( sc->curAudioTask ) { + sc->graphicsTaskSuspended = task; + osRecvMesg( &sc->waitMQ, &msg, OS_MESG_BLOCK ); + sc->graphicsTaskSuspended = (NNScTask *)0; + } + + sc->curGraphicsTask = task; + osSpTaskStart(&task->list); /* execute task */ + /* wait for end of RSP task */ + osRecvMesg(&sc->rspMQ, &msg, OS_MESG_BLOCK); + sc->curGraphicsTask = (NNScTask *)0; + + /* wait for end of RDP task */ + osRecvMesg(&sc->rdpMQ, &msg, OS_MESG_BLOCK); + + /* invalidate video blackout first time only */ + if (sc->firstTime) { + osViBlack(FALSE); //!WARNING webSym thought this was osViRepeatLine. + sc->firstTime = 0; + } + /* specify next frame buffer to display */ + if ( task->flags & NN_SC_SWAPBUFFER ){ + osViSwapBuffer(task->framebuffer); + + } + /* inform thread started by graphic task that task has ended */ + osSendMesg(task->msgQ, task->msg, OS_MESG_BLOCK); + } +} + +void nnScWaitTaskReady(NNSched* sc, NNScTask* task) { + + OSMesg msg = (OSMesg)0; + NNScClient client; + + void* fb = task->framebuffer; + if (osViGetCurrentFramebuffer() == fb) { + do { + nnScAddClient(sc, &client, &sc->waitMQ); + osRecvMesg(&sc->waitMQ, &msg, OS_MESG_BLOCK); + nnScRemoveClient(sc, &client); + } while (osViGetCurrentFramebuffer() == fb); + } +} diff --git a/src/pimgr.c b/src/pimgr.c new file mode 100644 index 0000000..1ee34ea --- /dev/null +++ b/src/pimgr.c @@ -0,0 +1,5 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/nonmatchings/pimgr/osCreatePiManager.s") + +/*MIGRATE .bss*/ \ No newline at end of file diff --git a/src/setintmask.c b/src/setintmask.c new file mode 100644 index 0000000..131aa7a --- /dev/null +++ b/src/setintmask.c @@ -0,0 +1,3 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/nonmatchings/setintmask/osSetIntMask.s") diff --git a/src/startthread.c b/src/startthread.c new file mode 100644 index 0000000..f1bbed5 --- /dev/null +++ b/src/startthread.c @@ -0,0 +1,43 @@ +#include +//#include "osint.h" + +extern OSThread *__osRunQueue; +extern OSThread *__osRunningThread; + +void osStartThread(OSThread *t) +{ + register u32 saveMask = __osDisableInt(); + switch (t->state) + { + case OS_STATE_WAITING: + t->state = OS_STATE_RUNNABLE; + __osEnqueueThread(&__osRunQueue, t); + break; + case OS_STATE_STOPPED: + if (t->queue == NULL || t->queue == &__osRunQueue) + { + t->state = OS_STATE_RUNNABLE; + __osEnqueueThread(&__osRunQueue, t); + } + else + { + t->state = OS_STATE_WAITING; + __osEnqueueThread(t->queue, t); + __osEnqueueThread(&__osRunQueue, __osPopThread(t->queue)); + } + break; + } + if (__osRunningThread == NULL) + { + __osDispatchThread(); + } + else + { + if (__osRunningThread->priority < __osRunQueue->priority) + { + __osRunningThread->state = OS_STATE_RUNNABLE; + __osEnqueueAndYield(&__osRunQueue); + } + } + __osRestoreInt(saveMask); +} \ No newline at end of file