From 85a8c6bd61d0a21c48113d3728c995f891fc0b65 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Sun, 21 Apr 2024 19:08:30 -0600 Subject: [PATCH] Update attempts (#622) --- .../code_80091750/func_80095E10.s | 408 ------ .../code_80091750/func_800963F0.s | 617 -------- src/code_80091750.c | 1258 +++++------------ src/code_80091750.h | 4 +- 4 files changed, 352 insertions(+), 1935 deletions(-) delete mode 100644 asm/non_matchings/code_80091750/func_80095E10.s delete mode 100644 asm/non_matchings/code_80091750/func_800963F0.s diff --git a/asm/non_matchings/code_80091750/func_80095E10.s b/asm/non_matchings/code_80091750/func_80095E10.s deleted file mode 100644 index dcf18894a..000000000 --- a/asm/non_matchings/code_80091750/func_80095E10.s +++ /dev/null @@ -1,408 +0,0 @@ -glabel func_80095E10 -/* 096A10 80095E10 27BDFF78 */ addiu $sp, $sp, -0x88 -/* 096A14 80095E14 8FAE00B4 */ lw $t6, 0xb4($sp) -/* 096A18 80095E18 AFBF002C */ sw $ra, 0x2c($sp) -/* 096A1C 80095E1C AFBE0028 */ sw $fp, 0x28($sp) -/* 096A20 80095E20 2DC10002 */ sltiu $at, $t6, 2 -/* 096A24 80095E24 AFB70024 */ sw $s7, 0x24($sp) -/* 096A28 80095E28 AFB60020 */ sw $s6, 0x20($sp) -/* 096A2C 80095E2C AFB5001C */ sw $s5, 0x1c($sp) -/* 096A30 80095E30 AFB40018 */ sw $s4, 0x18($sp) -/* 096A34 80095E34 AFB30014 */ sw $s3, 0x14($sp) -/* 096A38 80095E38 AFB20010 */ sw $s2, 0x10($sp) -/* 096A3C 80095E3C AFB1000C */ sw $s1, 0xc($sp) -/* 096A40 80095E40 AFB00008 */ sw $s0, 8($sp) -/* 096A44 80095E44 AFA5008C */ sw $a1, 0x8c($sp) -/* 096A48 80095E48 AFA60090 */ sw $a2, 0x90($sp) -/* 096A4C 80095E4C AFA70094 */ sw $a3, 0x94($sp) -/* 096A50 80095E50 24080001 */ li $t0, 1 -/* 096A54 80095E54 AFA00068 */ sw $zero, 0x68($sp) -/* 096A58 80095E58 14200007 */ bnez $at, .L80095E78 -/* 096A5C 80095E5C AFA00064 */ sw $zero, 0x64($sp) -/* 096A60 80095E60 8FB800B4 */ lw $t8, 0xb4($sp) -.L80095E64: -/* 096A64 80095E64 00087840 */ sll $t7, $t0, 1 -/* 096A68 80095E68 01E04025 */ move $t0, $t7 -/* 096A6C 80095E6C 01F8082B */ sltu $at, $t7, $t8 -/* 096A70 80095E70 5420FFFC */ bnel $at, $zero, .L80095E64 -/* 096A74 80095E74 8FB800B4 */ lw $t8, 0xb4($sp) -.L80095E78: -/* 096A78 80095E78 24190400 */ li $t9, 1024 -/* 096A7C 80095E7C 0328001A */ div $zero, $t9, $t0 -/* 096A80 80095E80 00001012 */ mflo $v0 -/* 096A84 80095E84 8FA300B8 */ lw $v1, 0xb8($sp) -/* 096A88 80095E88 15000002 */ bnez $t0, .L80095E94 -/* 096A8C 80095E8C 00000000 */ nop -/* 096A90 80095E90 0007000D */ break 7 -.L80095E94: -/* 096A94 80095E94 2401FFFF */ li $at, -1 -/* 096A98 80095E98 15010004 */ bne $t0, $at, .L80095EAC -/* 096A9C 80095E9C 3C018000 */ lui $at, 0x8000 -/* 096AA0 80095EA0 17210002 */ bne $t9, $at, .L80095EAC -/* 096AA4 80095EA4 00000000 */ nop -/* 096AA8 80095EA8 0006000D */ break 6 -.L80095EAC: -/* 096AAC 80095EAC 00403025 */ move $a2, $v0 -/* 096AB0 80095EB0 04410003 */ bgez $v0, .L80095EC0 -/* 096AB4 80095EB4 00027043 */ sra $t6, $v0, 1 -/* 096AB8 80095EB8 24410001 */ addiu $at, $v0, 1 -/* 096ABC 80095EBC 00017043 */ sra $t6, $at, 1 -.L80095EC0: -/* 096AC0 80095EC0 006E082B */ sltu $at, $v1, $t6 -/* 096AC4 80095EC4 50200010 */ beql $at, $zero, .L80095F08 -/* 096AC8 80095EC8 29010002 */ slti $at, $t0, 2 -/* 096ACC 80095ECC 04C10003 */ bgez $a2, .L80095EDC -/* 096AD0 80095ED0 00061043 */ sra $v0, $a2, 1 -/* 096AD4 80095ED4 24C10001 */ addiu $at, $a2, 1 -/* 096AD8 80095ED8 00011043 */ sra $v0, $at, 1 -.L80095EDC: -/* 096ADC 80095EDC 00402825 */ move $a1, $v0 -.L80095EE0: -/* 096AE0 80095EE0 04A10003 */ bgez $a1, .L80095EF0 -/* 096AE4 80095EE4 00051043 */ sra $v0, $a1, 1 -/* 096AE8 80095EE8 24A10001 */ addiu $at, $a1, 1 -/* 096AEC 80095EEC 00011043 */ sra $v0, $at, 1 -.L80095EF0: -/* 096AF0 80095EF0 0062082B */ sltu $at, $v1, $v0 -/* 096AF4 80095EF4 5420FFFA */ bnel $at, $zero, .L80095EE0 -/* 096AF8 80095EF8 00402825 */ move $a1, $v0 -/* 096AFC 80095EFC AFA5006C */ sw $a1, 0x6c($sp) -/* 096B00 80095F00 00A03025 */ move $a2, $a1 -/* 096B04 80095F04 29010002 */ slti $at, $t0, 2 -.L80095F08: -/* 096B08 80095F08 1420000B */ bnez $at, .L80095F38 -/* 096B0C 80095F0C 01001025 */ move $v0, $t0 -.L80095F10: -/* 096B10 80095F10 8FB80068 */ lw $t8, 0x68($sp) -/* 096B14 80095F14 04410003 */ bgez $v0, .L80095F24 -/* 096B18 80095F18 00027843 */ sra $t7, $v0, 1 -/* 096B1C 80095F1C 24410001 */ addiu $at, $v0, 1 -/* 096B20 80095F20 00017843 */ sra $t7, $at, 1 -.L80095F24: -/* 096B24 80095F24 29E10002 */ slti $at, $t7, 2 -/* 096B28 80095F28 27190001 */ addiu $t9, $t8, 1 -/* 096B2C 80095F2C 01E01025 */ move $v0, $t7 -/* 096B30 80095F30 1020FFF7 */ beqz $at, .L80095F10 -/* 096B34 80095F34 AFB90068 */ sw $t9, 0x68($sp) -.L80095F38: -/* 096B38 80095F38 28C10002 */ slti $at, $a2, 2 -/* 096B3C 80095F3C 1420000B */ bnez $at, .L80095F6C -/* 096B40 80095F40 00C01025 */ move $v0, $a2 -.L80095F44: -/* 096B44 80095F44 8FAF0064 */ lw $t7, 0x64($sp) -/* 096B48 80095F48 04410003 */ bgez $v0, .L80095F58 -/* 096B4C 80095F4C 00027043 */ sra $t6, $v0, 1 -/* 096B50 80095F50 24410001 */ addiu $at, $v0, 1 -/* 096B54 80095F54 00017043 */ sra $t6, $at, 1 -.L80095F58: -/* 096B58 80095F58 29C10002 */ slti $at, $t6, 2 -/* 096B5C 80095F5C 25F80001 */ addiu $t8, $t7, 1 -/* 096B60 80095F60 01C01025 */ move $v0, $t6 -/* 096B64 80095F64 1020FFF7 */ beqz $at, .L80095F44 -/* 096B68 80095F68 AFB80064 */ sw $t8, 0x64($sp) -.L80095F6C: -/* 096B6C 80095F6C 8FA500A8 */ lw $a1, 0xa8($sp) -/* 096B70 80095F70 8FB90098 */ lw $t9, 0x98($sp) -/* 096B74 80095F74 8FA20098 */ lw $v0, 0x98($sp) -/* 096B78 80095F78 04A10005 */ bgez $a1, .L80095F90 -/* 096B7C 80095F7C 8FAF00A0 */ lw $t7, 0xa0($sp) -/* 096B80 80095F80 03257023 */ subu $t6, $t9, $a1 -/* 096B84 80095F84 AFAE0098 */ sw $t6, 0x98($sp) -/* 096B88 80095F88 10000008 */ b .L80095FAC -/* 096B8C 80095F8C 00002825 */ move $a1, $zero -.L80095F90: -/* 096B90 80095F90 01E2C023 */ subu $t8, $t7, $v0 -/* 096B94 80095F94 0305C821 */ addu $t9, $t8, $a1 -/* 096B98 80095F98 2B210141 */ slti $at, $t9, 0x141 -/* 096B9C 80095F9C 14200003 */ bnez $at, .L80095FAC -/* 096BA0 80095FA0 00451823 */ subu $v1, $v0, $a1 -/* 096BA4 80095FA4 24630140 */ addiu $v1, $v1, 0x140 -/* 096BA8 80095FA8 AFA300A0 */ sw $v1, 0xa0($sp) -.L80095FAC: -/* 096BAC 80095FAC 8FBF00AC */ lw $ra, 0xac($sp) -/* 096BB0 80095FB0 8FA300A0 */ lw $v1, 0xa0($sp) -/* 096BB4 80095FB4 8FA2009C */ lw $v0, 0x9c($sp) -/* 096BB8 80095FB8 07E10005 */ bgez $ra, .L80095FD0 -/* 096BBC 80095FBC 8FAE00A4 */ lw $t6, 0xa4($sp) -/* 096BC0 80095FC0 8FA2009C */ lw $v0, 0x9c($sp) -/* 096BC4 80095FC4 005F1023 */ subu $v0, $v0, $ra -/* 096BC8 80095FC8 10000008 */ b .L80095FEC -/* 096BCC 80095FCC 0000F825 */ move $ra, $zero -.L80095FD0: -/* 096BD0 80095FD0 01C27823 */ subu $t7, $t6, $v0 -/* 096BD4 80095FD4 01FFC021 */ addu $t8, $t7, $ra -/* 096BD8 80095FD8 2B0100F1 */ slti $at, $t8, 0xf1 -/* 096BDC 80095FDC 14200003 */ bnez $at, .L80095FEC -/* 096BE0 80095FE0 005FC823 */ subu $t9, $v0, $ra -/* 096BE4 80095FE4 272E00F0 */ addiu $t6, $t9, 0xf0 -/* 096BE8 80095FE8 AFAE00A4 */ sw $t6, 0xa4($sp) -.L80095FEC: -/* 096BEC 80095FEC 8FAF0098 */ lw $t7, 0x98($sp) -/* 096BF0 80095FF0 8FB800A4 */ lw $t8, 0xa4($sp) -/* 096BF4 80095FF4 006F082A */ slt $at, $v1, $t7 -/* 096BF8 80095FF8 50200004 */ beql $at, $zero, .L8009600C -/* 096BFC 80095FFC 0302082A */ slt $at, $t8, $v0 -/* 096C00 80096000 100000EF */ b .L800963C0 -/* 096C04 80096004 00801025 */ move $v0, $a0 -/* 096C08 80096008 0302082A */ slt $at, $t8, $v0 -.L8009600C: -/* 096C0C 8009600C 50200004 */ beql $at, $zero, .L80096020 -/* 096C10 80096010 8FB900A4 */ lw $t9, 0xa4($sp) -/* 096C14 80096014 100000EA */ b .L800963C0 -/* 096C18 80096018 00801025 */ move $v0, $a0 -/* 096C1C 8009601C 8FB900A4 */ lw $t9, 0xa4($sp) -.L80096020: -/* 096C20 80096020 AFA5007C */ sw $a1, 0x7c($sp) -/* 096C24 80096024 00409825 */ move $s3, $v0 -/* 096C28 80096028 0059082B */ sltu $at, $v0, $t9 -/* 096C2C 8009602C 502000E4 */ beql $at, $zero, .L800963C0 -/* 096C30 80096030 00801025 */ move $v0, $a0 -/* 096C34 80096034 AFA500A8 */ sw $a1, 0xa8($sp) -.L80096038: -/* 096C38 80096038 8FAF00A4 */ lw $t7, 0xa4($sp) -/* 096C3C 8009603C 00D37021 */ addu $t6, $a2, $s3 -/* 096C40 80096040 AFAE0034 */ sw $t6, 0x34($sp) -/* 096C44 80096044 01EE082B */ sltu $at, $t7, $t6 -/* 096C48 80096048 10200006 */ beqz $at, .L80096064 -/* 096C4C 8009604C 8FB90098 */ lw $t9, 0x98($sp) -/* 096C50 80096050 01F3A023 */ subu $s4, $t7, $s3 -/* 096C54 80096054 528000DA */ beql $s4, $zero, .L800963C0 -/* 096C58 80096058 00801025 */ move $v0, $a0 -/* 096C5C 8009605C 10000003 */ b .L8009606C -/* 096C60 80096060 8FA50098 */ lw $a1, 0x98($sp) -.L80096064: -/* 096C64 80096064 00C0A025 */ move $s4, $a2 -/* 096C68 80096068 8FA50098 */ lw $a1, 0x98($sp) -.L8009606C: -/* 096C6C 8009606C 0323082B */ sltu $at, $t9, $v1 -/* 096C70 80096070 502000CC */ beql $at, $zero, .L800963A4 -/* 096C74 80096074 8FB30034 */ lw $s3, 0x34($sp) -/* 096C78 80096078 AFA300A0 */ sw $v1, 0xa0($sp) -/* 096C7C 8009607C AFA6006C */ sw $a2, 0x6c($sp) -/* 096C80 80096080 AFA80070 */ sw $t0, 0x70($sp) -.L80096084: -/* 096C84 80096084 8FB80070 */ lw $t8, 0x70($sp) -/* 096C88 80096088 8FA300A0 */ lw $v1, 0xa0($sp) -/* 096C8C 8009608C 8FAE006C */ lw $t6, 0x6c($sp) -/* 096C90 80096090 0305A821 */ addu $s5, $t8, $a1 -/* 096C94 80096094 0075082B */ sltu $at, $v1, $s5 -/* 096C98 80096098 10200035 */ beqz $at, .L80096170 -/* 096C9C 8009609C 8FB20070 */ lw $s2, 0x70($sp) -/* 096CA0 800960A0 00659023 */ subu $s2, $v1, $a1 -/* 096CA4 800960A4 16400004 */ bnez $s2, .L800960B8 -/* 096CA8 800960A8 3C01FD00 */ lui $at, 0xfd00 -/* 096CAC 800960AC 03004025 */ move $t0, $t8 -/* 096CB0 800960B0 100000BB */ b .L800963A0 -/* 096CB4 800960B4 01C03025 */ move $a2, $t6 -.L800960B8: -/* 096CB8 800960B8 83A2008F */ lb $v0, 0x8f($sp) -/* 096CBC 800960BC AFA300A0 */ sw $v1, 0xa0($sp) -/* 096CC0 800960C0 8FA30064 */ lw $v1, 0x64($sp) -/* 096CC4 800960C4 304F0007 */ andi $t7, $v0, 7 -/* 096CC8 800960C8 000F1540 */ sll $v0, $t7, 0x15 -/* 096CCC 800960CC 8FAF00B4 */ lw $t7, 0xb4($sp) -/* 096CD0 800960D0 0041C025 */ or $t8, $v0, $at -/* 096CD4 800960D4 3C010010 */ lui $at, 0x10 -/* 096CD8 800960D8 03017025 */ or $t6, $t8, $at -/* 096CDC 800960DC 25F9FFFF */ addiu $t9, $t7, -1 -/* 096CE0 800960E0 8FA60068 */ lw $a2, 0x68($sp) -/* 096CE4 800960E4 33380FFF */ andi $t8, $t9, 0xfff -/* 096CE8 800960E8 3C01F500 */ lui $at, 0xf500 -/* 096CEC 800960EC 00415025 */ or $t2, $v0, $at -/* 096CF0 800960F0 3C010010 */ lui $at, 0x10 -/* 096CF4 800960F4 01D84825 */ or $t1, $t6, $t8 -/* 096CF8 800960F8 01417825 */ or $t7, $t2, $at -/* 096CFC 800960FC 3079000F */ andi $t9, $v1, 0xf -/* 096D00 80096100 30D8000F */ andi $t8, $a2, 0xf -/* 096D04 80096104 00183100 */ sll $a2, $t8, 4 -/* 096D08 80096108 00191B80 */ sll $v1, $t9, 0xe -/* 096D0C 8009610C 3C010700 */ lui $at, 0x700 -/* 096D10 80096110 02744021 */ addu $t0, $s3, $s4 -/* 096D14 80096114 0008C080 */ sll $t8, $t0, 2 -/* 096D18 80096118 0061C825 */ or $t9, $v1, $at -/* 096D1C 8009611C 03266025 */ or $t4, $t9, $a2 -/* 096D20 80096120 33080FFF */ andi $t0, $t8, 0xfff -/* 096D24 80096124 03F48821 */ addu $s1, $ra, $s4 -/* 096D28 80096128 001FB080 */ sll $s6, $ra, 2 -/* 096D2C 8009612C 32D80FFF */ andi $t8, $s6, 0xfff -/* 096D30 80096130 0011C880 */ sll $t9, $s1, 2 -/* 096D34 80096134 33310FFF */ andi $s1, $t9, 0xfff -/* 096D38 80096138 0300B025 */ move $s6, $t8 -/* 096D3C 8009613C 8FB80090 */ lw $t8, 0x90($sp) -/* 096D40 80096140 8FB90094 */ lw $t9, 0x94($sp) -/* 096D44 80096144 01E05025 */ move $t2, $t7 -/* 096D48 80096148 00133880 */ sll $a3, $s3, 2 -/* 096D4C 8009614C 30EE0FFF */ andi $t6, $a3, 0xfff -/* 096D50 80096150 00137940 */ sll $t7, $s3, 5 -/* 096D54 80096154 31F7FFFF */ andi $s7, $t7, 0xffff -/* 096D58 80096158 01C03825 */ move $a3, $t6 -/* 096D5C 8009615C 00187C00 */ sll $t7, $t8, 0x10 -/* 096D60 80096160 332EFFFF */ andi $t6, $t9, 0xffff -/* 096D64 80096164 01EEF025 */ or $fp, $t7, $t6 -/* 096D68 80096168 1000002E */ b .L80096224 -/* 096D6C 8009616C 00668025 */ or $s0, $v1, $a2 -.L80096170: -/* 096D70 80096170 83A2008F */ lb $v0, 0x8f($sp) -/* 096D74 80096174 3C01FD00 */ lui $at, 0xfd00 -/* 096D78 80096178 8FA30064 */ lw $v1, 0x64($sp) -/* 096D7C 8009617C 30580007 */ andi $t8, $v0, 7 -/* 096D80 80096180 00181540 */ sll $v0, $t8, 0x15 -/* 096D84 80096184 8FB800B4 */ lw $t8, 0xb4($sp) -/* 096D88 80096188 00417825 */ or $t7, $v0, $at -/* 096D8C 8009618C 3C010010 */ lui $at, 0x10 -/* 096D90 80096190 01E17025 */ or $t6, $t7, $at -/* 096D94 80096194 2719FFFF */ addiu $t9, $t8, -1 -/* 096D98 80096198 8FA60068 */ lw $a2, 0x68($sp) -/* 096D9C 8009619C 332F0FFF */ andi $t7, $t9, 0xfff -/* 096DA0 800961A0 3C01F500 */ lui $at, 0xf500 -/* 096DA4 800961A4 00415025 */ or $t2, $v0, $at -/* 096DA8 800961A8 3C010010 */ lui $at, 0x10 -/* 096DAC 800961AC 01CF4825 */ or $t1, $t6, $t7 -/* 096DB0 800961B0 0141C025 */ or $t8, $t2, $at -/* 096DB4 800961B4 3079000F */ andi $t9, $v1, 0xf -/* 096DB8 800961B8 30CF000F */ andi $t7, $a2, 0xf -/* 096DBC 800961BC 000F3100 */ sll $a2, $t7, 4 -/* 096DC0 800961C0 00191B80 */ sll $v1, $t9, 0xe -/* 096DC4 800961C4 3C010700 */ lui $at, 0x700 -/* 096DC8 800961C8 02744021 */ addu $t0, $s3, $s4 -/* 096DCC 800961CC 00087880 */ sll $t7, $t0, 2 -/* 096DD0 800961D0 0061C825 */ or $t9, $v1, $at -/* 096DD4 800961D4 03266025 */ or $t4, $t9, $a2 -/* 096DD8 800961D8 31E80FFF */ andi $t0, $t7, 0xfff -/* 096DDC 800961DC 03F48821 */ addu $s1, $ra, $s4 -/* 096DE0 800961E0 001FB080 */ sll $s6, $ra, 2 -/* 096DE4 800961E4 32CF0FFF */ andi $t7, $s6, 0xfff -/* 096DE8 800961E8 0011C880 */ sll $t9, $s1, 2 -/* 096DEC 800961EC 33310FFF */ andi $s1, $t9, 0xfff -/* 096DF0 800961F0 01E0B025 */ move $s6, $t7 -/* 096DF4 800961F4 8FAF0090 */ lw $t7, 0x90($sp) -/* 096DF8 800961F8 8FB90094 */ lw $t9, 0x94($sp) -/* 096DFC 800961FC 03005025 */ move $t2, $t8 -/* 096E00 80096200 00133880 */ sll $a3, $s3, 2 -/* 096E04 80096204 30EE0FFF */ andi $t6, $a3, 0xfff -/* 096E08 80096208 0013C140 */ sll $t8, $s3, 5 -/* 096E0C 8009620C 3317FFFF */ andi $s7, $t8, 0xffff -/* 096E10 80096210 01C03825 */ move $a3, $t6 -/* 096E14 80096214 000FC400 */ sll $t8, $t7, 0x10 -/* 096E18 80096218 332EFFFF */ andi $t6, $t9, 0xffff -/* 096E1C 8009621C 030EF025 */ or $fp, $t8, $t6 -/* 096E20 80096220 00668025 */ or $s0, $v1, $a2 -.L80096224: -/* 096E24 80096224 00801025 */ move $v0, $a0 -/* 096E28 80096228 AC490000 */ sw $t1, ($v0) -/* 096E2C 8009622C 8FAF00B0 */ lw $t7, 0xb0($sp) -/* 096E30 80096230 00B23021 */ addu $a2, $a1, $s2 -/* 096E34 80096234 00C5C823 */ subu $t9, $a2, $a1 -/* 096E38 80096238 0019C040 */ sll $t8, $t9, 1 -/* 096E3C 8009623C 270E0009 */ addiu $t6, $t8, 9 -/* 096E40 80096240 AC4F0004 */ sw $t7, 4($v0) -/* 096E44 80096244 000E78C2 */ srl $t7, $t6, 3 -/* 096E48 80096248 31F901FF */ andi $t9, $t7, 0x1ff -/* 096E4C 8009624C 24840008 */ addiu $a0, $a0, 8 -/* 096E50 80096250 00801825 */ move $v1, $a0 -/* 096E54 80096254 0019C240 */ sll $t8, $t9, 9 -/* 096E58 80096258 01585825 */ or $t3, $t2, $t8 -/* 096E5C 8009625C 00054880 */ sll $t1, $a1, 2 -/* 096E60 80096260 312F0FFF */ andi $t7, $t1, 0xfff -/* 096E64 80096264 24840008 */ addiu $a0, $a0, 8 -/* 096E68 80096268 00806825 */ move $t5, $a0 -/* 096E6C 8009626C 000F4B00 */ sll $t1, $t7, 0xc -/* 096E70 80096270 AC6B0000 */ sw $t3, ($v1) -/* 096E74 80096274 AC6C0004 */ sw $t4, 4($v1) -/* 096E78 80096278 3C0EE600 */ lui $t6, 0xe600 -/* 096E7C 8009627C 3C01F400 */ lui $at, 0xf400 -/* 096E80 80096280 0121C025 */ or $t8, $t1, $at -/* 096E84 80096284 ADAE0000 */ sw $t6, ($t5) -/* 096E88 80096288 00065080 */ sll $t2, $a2, 2 -/* 096E8C 8009628C 314F0FFF */ andi $t7, $t2, 0xfff -/* 096E90 80096290 03077025 */ or $t6, $t8, $a3 -/* 096E94 80096294 24840008 */ addiu $a0, $a0, 8 -/* 096E98 80096298 00801025 */ move $v0, $a0 -/* 096E9C 8009629C 000F5300 */ sll $t2, $t7, 0xc -/* 096EA0 800962A0 3C010700 */ lui $at, 0x700 -/* 096EA4 800962A4 ADA00004 */ sw $zero, 4($t5) -/* 096EA8 800962A8 AC4E0000 */ sw $t6, ($v0) -/* 096EAC 800962AC 0141C025 */ or $t8, $t2, $at -/* 096EB0 800962B0 03087025 */ or $t6, $t8, $t0 -/* 096EB4 800962B4 24840008 */ addiu $a0, $a0, 8 -/* 096EB8 800962B8 00801825 */ move $v1, $a0 -/* 096EBC 800962BC AC4E0004 */ sw $t6, 4($v0) -/* 096EC0 800962C0 24840008 */ addiu $a0, $a0, 8 -/* 096EC4 800962C4 00806025 */ move $t4, $a0 -/* 096EC8 800962C8 3C0FE700 */ lui $t7, 0xe700 -/* 096ECC 800962CC AC6F0000 */ sw $t7, ($v1) -/* 096ED0 800962D0 AC600004 */ sw $zero, 4($v1) -/* 096ED4 800962D4 24840008 */ addiu $a0, $a0, 8 -/* 096ED8 800962D8 3C01F200 */ lui $at, 0xf200 -/* 096EDC 800962DC 0121C825 */ or $t9, $t1, $at -/* 096EE0 800962E0 00801025 */ move $v0, $a0 -/* 096EE4 800962E4 AD900004 */ sw $s0, 4($t4) -/* 096EE8 800962E8 AD8B0000 */ sw $t3, ($t4) -/* 096EEC 800962EC 0327C025 */ or $t8, $t9, $a3 -/* 096EF0 800962F0 01487025 */ or $t6, $t2, $t0 -/* 096EF4 800962F4 AC4E0004 */ sw $t6, 4($v0) -/* 096EF8 800962F8 AC580000 */ sw $t8, ($v0) -/* 096EFC 800962FC 8FAF00A8 */ lw $t7, 0xa8($sp) -/* 096F00 80096300 3C01E400 */ lui $at, 0xe400 -/* 096F04 80096304 24840008 */ addiu $a0, $a0, 8 -/* 096F08 80096308 01F2C821 */ addu $t9, $t7, $s2 -/* 096F0C 8009630C 0019C080 */ sll $t8, $t9, 2 -/* 096F10 80096310 330E0FFF */ andi $t6, $t8, 0xfff -/* 096F14 80096314 000E7B00 */ sll $t7, $t6, 0xc -/* 096F18 80096318 01E1C825 */ or $t9, $t7, $at -/* 096F1C 8009631C 0331C025 */ or $t8, $t9, $s1 -/* 096F20 80096320 00803025 */ move $a2, $a0 -/* 096F24 80096324 ACD80000 */ sw $t8, ($a2) -/* 096F28 80096328 8FA700A8 */ lw $a3, 0xa8($sp) -/* 096F2C 8009632C 24840008 */ addiu $a0, $a0, 8 -/* 096F30 80096330 00801025 */ move $v0, $a0 -/* 096F34 80096334 00077080 */ sll $t6, $a3, 2 -/* 096F38 80096338 31CF0FFF */ andi $t7, $t6, 0xfff -/* 096F3C 8009633C 000FCB00 */ sll $t9, $t7, 0xc -/* 096F40 80096340 0336C025 */ or $t8, $t9, $s6 -/* 096F44 80096344 ACD80004 */ sw $t8, 4($a2) -/* 096F48 80096348 3C0EB300 */ lui $t6, 0xb300 -/* 096F4C 8009634C AC4E0000 */ sw $t6, ($v0) -/* 096F50 80096350 00A0C025 */ move $t8, $a1 -/* 096F54 80096354 00187540 */ sll $t6, $t8, 0x15 -/* 096F58 80096358 01D77825 */ or $t7, $t6, $s7 -/* 096F5C 8009635C 24840008 */ addiu $a0, $a0, 8 -/* 096F60 80096360 00801825 */ move $v1, $a0 -/* 096F64 80096364 AC4F0004 */ sw $t7, 4($v0) -/* 096F68 80096368 3C19B200 */ lui $t9, 0xb200 -/* 096F6C 8009636C AC790000 */ sw $t9, ($v1) -/* 096F70 80096370 AC7E0004 */ sw $fp, 4($v1) -/* 096F74 80096374 8FAE00A0 */ lw $t6, 0xa0($sp) -/* 096F78 80096378 8FB80070 */ lw $t8, 0x70($sp) -/* 096F7C 8009637C 02A02825 */ move $a1, $s5 -/* 096F80 80096380 02AE082B */ sltu $at, $s5, $t6 -/* 096F84 80096384 00F83821 */ addu $a3, $a3, $t8 -/* 096F88 80096388 AFA700A8 */ sw $a3, 0xa8($sp) -/* 096F8C 8009638C 1420FF3D */ bnez $at, .L80096084 -/* 096F90 80096390 24840008 */ addiu $a0, $a0, 8 -/* 096F94 80096394 03004025 */ move $t0, $t8 -/* 096F98 80096398 8FA6006C */ lw $a2, 0x6c($sp) -/* 096F9C 8009639C 01C01825 */ move $v1, $t6 -.L800963A0: -/* 096FA0 800963A0 8FB30034 */ lw $s3, 0x34($sp) -.L800963A4: -/* 096FA4 800963A4 8FB900A4 */ lw $t9, 0xa4($sp) -/* 096FA8 800963A8 8FAF007C */ lw $t7, 0x7c($sp) -/* 096FAC 800963AC 03E6F821 */ addu $ra, $ra, $a2 -/* 096FB0 800963B0 0279082B */ sltu $at, $s3, $t9 -/* 096FB4 800963B4 1420FF20 */ bnez $at, .L80096038 -/* 096FB8 800963B8 AFAF00A8 */ sw $t7, 0xa8($sp) -/* 096FBC 800963BC 00801025 */ move $v0, $a0 -.L800963C0: -/* 096FC0 800963C0 8FBF002C */ lw $ra, 0x2c($sp) -/* 096FC4 800963C4 8FB00008 */ lw $s0, 8($sp) -/* 096FC8 800963C8 8FB1000C */ lw $s1, 0xc($sp) -/* 096FCC 800963CC 8FB20010 */ lw $s2, 0x10($sp) -/* 096FD0 800963D0 8FB30014 */ lw $s3, 0x14($sp) -/* 096FD4 800963D4 8FB40018 */ lw $s4, 0x18($sp) -/* 096FD8 800963D8 8FB5001C */ lw $s5, 0x1c($sp) -/* 096FDC 800963DC 8FB60020 */ lw $s6, 0x20($sp) -/* 096FE0 800963E0 8FB70024 */ lw $s7, 0x24($sp) -/* 096FE4 800963E4 8FBE0028 */ lw $fp, 0x28($sp) -/* 096FE8 800963E8 03E00008 */ jr $ra -/* 096FEC 800963EC 27BD0088 */ addiu $sp, $sp, 0x88 diff --git a/asm/non_matchings/code_80091750/func_800963F0.s b/asm/non_matchings/code_80091750/func_800963F0.s deleted file mode 100644 index 23d8eec75..000000000 --- a/asm/non_matchings/code_80091750/func_800963F0.s +++ /dev/null @@ -1,617 +0,0 @@ -glabel func_800963F0 -/* 096FF0 800963F0 27BDFF68 */ addiu $sp, $sp, -0x98 -/* 096FF4 800963F4 8FAE00CC */ lw $t6, 0xcc($sp) -/* 096FF8 800963F8 AFBF002C */ sw $ra, 0x2c($sp) -/* 096FFC 800963FC AFBE0028 */ sw $fp, 0x28($sp) -/* 097000 80096400 2DC10002 */ sltiu $at, $t6, 2 -/* 097004 80096404 AFB70024 */ sw $s7, 0x24($sp) -/* 097008 80096408 AFB60020 */ sw $s6, 0x20($sp) -/* 09700C 8009640C AFB5001C */ sw $s5, 0x1c($sp) -/* 097010 80096410 AFB40018 */ sw $s4, 0x18($sp) -/* 097014 80096414 AFB30014 */ sw $s3, 0x14($sp) -/* 097018 80096418 AFB20010 */ sw $s2, 0x10($sp) -/* 09701C 8009641C AFB1000C */ sw $s1, 0xc($sp) -/* 097020 80096420 AFB00008 */ sw $s0, 8($sp) -/* 097024 80096424 AFA5009C */ sw $a1, 0x9c($sp) -/* 097028 80096428 AFA600A0 */ sw $a2, 0xa0($sp) -/* 09702C 8009642C AFA700A4 */ sw $a3, 0xa4($sp) -/* 097030 80096430 24080001 */ li $t0, 1 -/* 097034 80096434 AFA00070 */ sw $zero, 0x70($sp) -/* 097038 80096438 14200007 */ bnez $at, .L80096458 -/* 09703C 8009643C AFA0006C */ sw $zero, 0x6c($sp) -/* 097040 80096440 8FB800CC */ lw $t8, 0xcc($sp) -.L80096444: -/* 097044 80096444 00087840 */ sll $t7, $t0, 1 -/* 097048 80096448 01E04025 */ move $t0, $t7 -/* 09704C 8009644C 01F8082B */ sltu $at, $t7, $t8 -/* 097050 80096450 5420FFFC */ bnel $at, $zero, .L80096444 -/* 097054 80096454 8FB800CC */ lw $t8, 0xcc($sp) -.L80096458: -/* 097058 80096458 24190400 */ li $t9, 1024 -/* 09705C 8009645C 0328001A */ div $zero, $t9, $t0 -/* 097060 80096460 00001012 */ mflo $v0 -/* 097064 80096464 8FA300D0 */ lw $v1, 0xd0($sp) -/* 097068 80096468 15000002 */ bnez $t0, .L80096474 -/* 09706C 8009646C 00000000 */ nop -/* 097070 80096470 0007000D */ break 7 -.L80096474: -/* 097074 80096474 2401FFFF */ li $at, -1 -/* 097078 80096478 15010004 */ bne $t0, $at, .L8009648C -/* 09707C 8009647C 3C018000 */ lui $at, 0x8000 -/* 097080 80096480 17210002 */ bne $t9, $at, .L8009648C -/* 097084 80096484 00000000 */ nop -/* 097088 80096488 0006000D */ break 6 -.L8009648C: -/* 09708C 8009648C 00403825 */ move $a3, $v0 -/* 097090 80096490 04410003 */ bgez $v0, .L800964A0 -/* 097094 80096494 00027043 */ sra $t6, $v0, 1 -/* 097098 80096498 24410001 */ addiu $at, $v0, 1 -/* 09709C 8009649C 00017043 */ sra $t6, $at, 1 -.L800964A0: -/* 0970A0 800964A0 006E082B */ sltu $at, $v1, $t6 -/* 0970A4 800964A4 50200010 */ beql $at, $zero, .L800964E8 -/* 0970A8 800964A8 29010002 */ slti $at, $t0, 2 -/* 0970AC 800964AC 04E10003 */ bgez $a3, .L800964BC -/* 0970B0 800964B0 00071043 */ sra $v0, $a3, 1 -/* 0970B4 800964B4 24E10001 */ addiu $at, $a3, 1 -/* 0970B8 800964B8 00011043 */ sra $v0, $at, 1 -.L800964BC: -/* 0970BC 800964BC 00402825 */ move $a1, $v0 -.L800964C0: -/* 0970C0 800964C0 04A10003 */ bgez $a1, .L800964D0 -/* 0970C4 800964C4 00051043 */ sra $v0, $a1, 1 -/* 0970C8 800964C8 24A10001 */ addiu $at, $a1, 1 -/* 0970CC 800964CC 00011043 */ sra $v0, $at, 1 -.L800964D0: -/* 0970D0 800964D0 0062082B */ sltu $at, $v1, $v0 -/* 0970D4 800964D4 5420FFFA */ bnel $at, $zero, .L800964C0 -/* 0970D8 800964D8 00402825 */ move $a1, $v0 -/* 0970DC 800964DC AFA50074 */ sw $a1, 0x74($sp) -/* 0970E0 800964E0 00A03825 */ move $a3, $a1 -/* 0970E4 800964E4 29010002 */ slti $at, $t0, 2 -.L800964E8: -/* 0970E8 800964E8 1420000B */ bnez $at, .L80096518 -/* 0970EC 800964EC 01001025 */ move $v0, $t0 -.L800964F0: -/* 0970F0 800964F0 8FB80070 */ lw $t8, 0x70($sp) -/* 0970F4 800964F4 04410003 */ bgez $v0, .L80096504 -/* 0970F8 800964F8 00027843 */ sra $t7, $v0, 1 -/* 0970FC 800964FC 24410001 */ addiu $at, $v0, 1 -/* 097100 80096500 00017843 */ sra $t7, $at, 1 -.L80096504: -/* 097104 80096504 29E10002 */ slti $at, $t7, 2 -/* 097108 80096508 27190001 */ addiu $t9, $t8, 1 -/* 09710C 8009650C 01E01025 */ move $v0, $t7 -/* 097110 80096510 1020FFF7 */ beqz $at, .L800964F0 -/* 097114 80096514 AFB90070 */ sw $t9, 0x70($sp) -.L80096518: -/* 097118 80096518 28E10002 */ slti $at, $a3, 2 -/* 09711C 8009651C 1420000B */ bnez $at, .L8009654C -/* 097120 80096520 00E01025 */ move $v0, $a3 -.L80096524: -/* 097124 80096524 8FAF006C */ lw $t7, 0x6c($sp) -/* 097128 80096528 04410003 */ bgez $v0, .L80096538 -/* 09712C 8009652C 00027043 */ sra $t6, $v0, 1 -/* 097130 80096530 24410001 */ addiu $at, $v0, 1 -/* 097134 80096534 00017043 */ sra $t6, $at, 1 -.L80096538: -/* 097138 80096538 29C10002 */ slti $at, $t6, 2 -/* 09713C 8009653C 25F80001 */ addiu $t8, $t7, 1 -/* 097140 80096540 01C01025 */ move $v0, $t6 -/* 097144 80096544 1020FFF7 */ beqz $at, .L80096524 -/* 097148 80096548 AFB8006C */ sw $t8, 0x6c($sp) -.L8009654C: -/* 09714C 8009654C 8FBF00C0 */ lw $ra, 0xc0($sp) -/* 097150 80096550 8FB900B0 */ lw $t9, 0xb0($sp) -/* 097154 80096554 8FAF00B8 */ lw $t7, 0xb8($sp) -/* 097158 80096558 07E10006 */ bgez $ra, .L80096574 -/* 09715C 8009655C 8FB800B0 */ lw $t8, 0xb0($sp) -/* 097160 80096560 033F7023 */ subu $t6, $t9, $ra -/* 097164 80096564 AFAE00B0 */ sw $t6, 0xb0($sp) -/* 097168 80096568 0000F825 */ move $ra, $zero -/* 09716C 8009656C 10000017 */ b .L800965CC -/* 097170 80096570 C7A200A8 */ lwc1 $f2, 0xa8($sp) -.L80096574: -/* 097174 80096574 01F8C823 */ subu $t9, $t7, $t8 -/* 097178 80096578 44992000 */ mtc1 $t9, $f4 -/* 09717C 8009657C C7A200A8 */ lwc1 $f2, 0xa8($sp) -/* 097180 80096580 449F5000 */ mtc1 $ra, $f10 -/* 097184 80096584 468021A0 */ cvt.s.w $f6, $f4 -/* 097188 80096588 3C0143A0 */ li $at, 0x43A00000 # 320.000000 -/* 09718C 8009658C 44816000 */ mtc1 $at, $f12 -/* 097190 80096590 46805120 */ cvt.s.w $f4, $f10 -/* 097194 80096594 46023202 */ mul.s $f8, $f6, $f2 -/* 097198 80096598 46082000 */ add.s $f0, $f4, $f8 -/* 09719C 8009659C 4600603C */ c.lt.s $f12, $f0 -/* 0971A0 800965A0 00000000 */ nop -/* 0971A4 800965A4 4502000A */ bc1fl .L800965D0 -/* 0971A8 800965A8 8FA500C4 */ lw $a1, 0xc4($sp) -/* 0971AC 800965AC 448F3000 */ mtc1 $t7, $f6 -/* 0971B0 800965B0 460C0101 */ sub.s $f4, $f0, $f12 -/* 0971B4 800965B4 468032A0 */ cvt.s.w $f10, $f6 -/* 0971B8 800965B8 46045201 */ sub.s $f8, $f10, $f4 -/* 0971BC 800965BC 4600418D */ trunc.w.s $f6, $f8 -/* 0971C0 800965C0 44183000 */ mfc1 $t8, $f6 -/* 0971C4 800965C4 00000000 */ nop -/* 0971C8 800965C8 AFB800B8 */ sw $t8, 0xb8($sp) -.L800965CC: -/* 0971CC 800965CC 8FA500C4 */ lw $a1, 0xc4($sp) -.L800965D0: -/* 0971D0 800965D0 8FA200B4 */ lw $v0, 0xb4($sp) -/* 0971D4 800965D4 8FB900BC */ lw $t9, 0xbc($sp) -/* 0971D8 800965D8 04A30007 */ bgezl $a1, .L800965F8 -/* 0971DC 800965DC 03227823 */ subu $t7, $t9, $v0 -/* 0971E0 800965E0 8FA200B4 */ lw $v0, 0xb4($sp) -/* 0971E4 800965E4 C7AE00AC */ lwc1 $f14, 0xac($sp) -/* 0971E8 800965E8 00451023 */ subu $v0, $v0, $a1 -/* 0971EC 800965EC 10000017 */ b .L8009664C -/* 0971F0 800965F0 00002825 */ move $a1, $zero -/* 0971F4 800965F4 03227823 */ subu $t7, $t9, $v0 -.L800965F8: -/* 0971F8 800965F8 448F4000 */ mtc1 $t7, $f8 -/* 0971FC 800965FC 44855000 */ mtc1 $a1, $f10 -/* 097200 80096600 C7AE00AC */ lwc1 $f14, 0xac($sp) -/* 097204 80096604 468041A0 */ cvt.s.w $f6, $f8 -/* 097208 80096608 3C014370 */ li $at, 0x43700000 # 240.000000 -/* 09720C 8009660C 44816000 */ mtc1 $at, $f12 -/* 097210 80096610 46805120 */ cvt.s.w $f4, $f10 -/* 097214 80096614 460E3282 */ mul.s $f10, $f6, $f14 -/* 097218 80096618 460A2000 */ add.s $f0, $f4, $f10 -/* 09721C 8009661C 4600603C */ c.lt.s $f12, $f0 -/* 097220 80096620 00000000 */ nop -/* 097224 80096624 4502000A */ bc1fl .L80096650 -/* 097228 80096628 8FA300B8 */ lw $v1, 0xb8($sp) -/* 09722C 8009662C 44994000 */ mtc1 $t9, $f8 -/* 097230 80096630 460C0101 */ sub.s $f4, $f0, $f12 -/* 097234 80096634 468041A0 */ cvt.s.w $f6, $f8 -/* 097238 80096638 46043281 */ sub.s $f10, $f6, $f4 -/* 09723C 8009663C 4600520D */ trunc.w.s $f8, $f10 -/* 097240 80096640 44184000 */ mfc1 $t8, $f8 -/* 097244 80096644 00000000 */ nop -/* 097248 80096648 AFB800BC */ sw $t8, 0xbc($sp) -.L8009664C: -/* 09724C 8009664C 8FA300B8 */ lw $v1, 0xb8($sp) -.L80096650: -/* 097250 80096650 8FAF00B0 */ lw $t7, 0xb0($sp) -/* 097254 80096654 8FA600BC */ lw $a2, 0xbc($sp) -/* 097258 80096658 006F082A */ slt $at, $v1, $t7 -/* 09725C 8009665C 50200004 */ beql $at, $zero, .L80096670 -/* 097260 80096660 00C2082A */ slt $at, $a2, $v0 -/* 097264 80096664 10000190 */ b .L80096CA8 -/* 097268 80096668 00801025 */ move $v0, $a0 -/* 09726C 8009666C 00C2082A */ slt $at, $a2, $v0 -.L80096670: -/* 097270 80096670 10200003 */ beqz $at, .L80096680 -/* 097274 80096674 8FB900A0 */ lw $t9, 0xa0($sp) -/* 097278 80096678 1000018B */ b .L80096CA8 -/* 09727C 8009667C 00801025 */ move $v0, $a0 -.L80096680: -/* 097280 80096680 44993000 */ mtc1 $t9, $f6 -/* 097284 80096684 8FAF00A4 */ lw $t7, 0xa4($sp) -/* 097288 80096688 0046082B */ sltu $at, $v0, $a2 -/* 09728C 8009668C 46803120 */ cvt.s.w $f4, $f6 -/* 097290 80096690 448F3000 */ mtc1 $t7, $f6 -/* 097294 80096694 AFBF008C */ sw $ra, 0x8c($sp) -/* 097298 80096698 00409825 */ move $s3, $v0 -/* 09729C 8009669C 46022283 */ div.s $f10, $f4, $f2 -/* 0972A0 800966A0 46803120 */ cvt.s.w $f4, $f6 -/* 0972A4 800966A4 4600520D */ trunc.w.s $f8, $f10 -/* 0972A8 800966A8 460E2283 */ div.s $f10, $f4, $f14 -/* 0972AC 800966AC 44184000 */ mfc1 $t8, $f8 -/* 0972B0 800966B0 00000000 */ nop -/* 0972B4 800966B4 AFB800A0 */ sw $t8, 0xa0($sp) -/* 0972B8 800966B8 4600520D */ trunc.w.s $f8, $f10 -/* 0972BC 800966BC 440E4000 */ mfc1 $t6, $f8 -/* 0972C0 800966C0 10200178 */ beqz $at, .L80096CA4 -/* 0972C4 800966C4 AFAE00A4 */ sw $t6, 0xa4($sp) -/* 0972C8 800966C8 AFA500C4 */ sw $a1, 0xc4($sp) -.L800966CC: -/* 0972CC 800966CC 00F3C021 */ addu $t8, $a3, $s3 -/* 0972D0 800966D0 00D8082B */ sltu $at, $a2, $t8 -/* 0972D4 800966D4 1020000E */ beqz $at, .L80096710 -/* 0972D8 800966D8 AFB80034 */ sw $t8, 0x34($sp) -/* 0972DC 800966DC 00D3F023 */ subu $fp, $a2, $s3 -/* 0972E0 800966E0 53C00171 */ beql $fp, $zero, .L80096CA8 -/* 0972E4 800966E4 00801025 */ move $v0, $a0 -/* 0972E8 800966E8 44872000 */ mtc1 $a3, $f4 -/* 0972EC 800966EC 8FB900C4 */ lw $t9, 0xc4($sp) -/* 0972F0 800966F0 8FA500B0 */ lw $a1, 0xb0($sp) -/* 0972F4 800966F4 468022A0 */ cvt.s.w $f10, $f4 -/* 0972F8 800966F8 44993000 */ mtc1 $t9, $f6 -/* 0972FC 800966FC 00000000 */ nop -/* 097300 80096700 46803320 */ cvt.s.w $f12, $f6 -/* 097304 80096704 460E5482 */ mul.s $f18, $f10, $f14 -/* 097308 80096708 1000000B */ b .L80096738 -/* 09730C 8009670C 8FB800B0 */ lw $t8, 0xb0($sp) -.L80096710: -/* 097310 80096710 44873000 */ mtc1 $a3, $f6 -/* 097314 80096714 8FAE00C4 */ lw $t6, 0xc4($sp) -/* 097318 80096718 00E0F025 */ move $fp, $a3 -/* 09731C 8009671C 46803120 */ cvt.s.w $f4, $f6 -/* 097320 80096720 448E4000 */ mtc1 $t6, $f8 -/* 097324 80096724 8FA500B0 */ lw $a1, 0xb0($sp) -/* 097328 80096728 46804320 */ cvt.s.w $f12, $f8 -/* 09732C 8009672C 460E2482 */ mul.s $f18, $f4, $f14 -/* 097330 80096730 00000000 */ nop -/* 097334 80096734 8FB800B0 */ lw $t8, 0xb0($sp) -.L80096738: -/* 097338 80096738 0303082B */ sltu $at, $t8, $v1 -/* 09733C 8009673C 50200152 */ beql $at, $zero, .L80096C88 -/* 097340 80096740 46126100 */ add.s $f4, $f12, $f18 -/* 097344 80096744 AFA70074 */ sw $a3, 0x74($sp) -/* 097348 80096748 AFA80078 */ sw $t0, 0x78($sp) -.L8009674C: -/* 09734C 8009674C 8FB90078 */ lw $t9, 0x78($sp) -/* 097350 80096750 8FA300B8 */ lw $v1, 0xb8($sp) -/* 097354 80096754 8FA600BC */ lw $a2, 0xbc($sp) -/* 097358 80096758 0325A021 */ addu $s4, $t9, $a1 -/* 09735C 8009675C 0074082B */ sltu $at, $v1, $s4 -/* 097360 80096760 10200064 */ beqz $at, .L800968F4 -/* 097364 80096764 8FAF0074 */ lw $t7, 0x74($sp) -/* 097368 80096768 00659023 */ subu $s2, $v1, $a1 -/* 09736C 8009676C 16400004 */ bnez $s2, .L80096780 -/* 097370 80096770 8FAB00C4 */ lw $t3, 0xc4($sp) -/* 097374 80096774 03204025 */ move $t0, $t9 -/* 097378 80096778 10000142 */ b .L80096C84 -/* 09737C 8009677C 01E03825 */ move $a3, $t7 -.L80096780: -/* 097380 80096780 83A2009F */ lb $v0, 0x9f($sp) -/* 097384 80096784 3C01FD00 */ lui $at, 0xfd00 -/* 097388 80096788 8FA3006C */ lw $v1, 0x6c($sp) -/* 09738C 8009678C 304E0007 */ andi $t6, $v0, 7 -/* 097390 80096790 000E1540 */ sll $v0, $t6, 0x15 -/* 097394 80096794 8FAE00CC */ lw $t6, 0xcc($sp) -/* 097398 80096798 0041C825 */ or $t9, $v0, $at -/* 09739C 8009679C 3C010010 */ lui $at, 0x10 -/* 0973A0 800967A0 03217825 */ or $t7, $t9, $at -/* 0973A4 800967A4 3C01F500 */ lui $at, 0xf500 -/* 0973A8 800967A8 25D8FFFF */ addiu $t8, $t6, -1 -/* 0973AC 800967AC 8FA60070 */ lw $a2, 0x70($sp) -/* 0973B0 800967B0 33190FFF */ andi $t9, $t8, 0xfff -/* 0973B4 800967B4 00415025 */ or $t2, $v0, $at -/* 0973B8 800967B8 3C010010 */ lui $at, 0x10 -/* 0973BC 800967BC 01417025 */ or $t6, $t2, $at -/* 0973C0 800967C0 01F94825 */ or $t1, $t7, $t9 -/* 0973C4 800967C4 3078000F */ andi $t8, $v1, 0xf -/* 0973C8 800967C8 00181B80 */ sll $v1, $t8, 0xe -/* 0973CC 800967CC 3C010700 */ lui $at, 0x700 -/* 0973D0 800967D0 30D9000F */ andi $t9, $a2, 0xf -/* 0973D4 800967D4 00193100 */ sll $a2, $t9, 4 -/* 0973D8 800967D8 0061C025 */ or $t8, $v1, $at -/* 0973DC 800967DC 03066025 */ or $t4, $t8, $a2 -/* 0973E0 800967E0 000BA880 */ sll $s5, $t3, 2 -/* 0973E4 800967E4 32B80FFF */ andi $t8, $s5, 0xfff -/* 0973E8 800967E8 00133880 */ sll $a3, $s3, 2 -/* 0973EC 800967EC 30EF0FFF */ andi $t7, $a3, 0xfff -/* 0973F0 800967F0 0300A825 */ move $s5, $t8 -/* 0973F4 800967F4 8FB800A0 */ lw $t8, 0xa0($sp) -/* 0973F8 800967F8 01E03825 */ move $a3, $t7 -/* 0973FC 800967FC 00137940 */ sll $t7, $s3, 5 -/* 097400 80096800 31F6FFFF */ andi $s6, $t7, 0xffff -/* 097404 80096804 00187C00 */ sll $t7, $t8, 0x10 -/* 097408 80096808 8FB80078 */ lw $t8, 0x78($sp) -/* 09740C 8009680C 027E4021 */ addu $t0, $s3, $fp -/* 097410 80096810 0008C880 */ sll $t9, $t0, 2 -/* 097414 80096814 44984000 */ mtc1 $t8, $f8 -/* 097418 80096818 33280FFF */ andi $t0, $t9, 0xfff -/* 09741C 8009681C 8FB900A4 */ lw $t9, 0xa4($sp) -/* 097420 80096820 468041A0 */ cvt.s.w $f6, $f8 -/* 097424 80096824 449F5000 */ mtc1 $ra, $f10 -/* 097428 80096828 449E2000 */ mtc1 $fp, $f4 -/* 09742C 8009682C 01C05025 */ move $t2, $t6 -/* 097430 80096830 332EFFFF */ andi $t6, $t9, 0xffff -/* 097434 80096834 46805020 */ cvt.s.w $f0, $f10 -/* 097438 80096838 46023402 */ mul.s $f16, $f6, $f2 -/* 09743C 8009683C 01EEB825 */ or $s7, $t7, $t6 -/* 097440 80096840 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 097444 80096844 00668025 */ or $s0, $v1, $a2 -/* 097448 80096848 07C10004 */ bgez $fp, .L8009685C -/* 09744C 8009684C 468022A0 */ cvt.s.w $f10, $f4 -/* 097450 80096850 44814000 */ mtc1 $at, $f8 -/* 097454 80096854 00000000 */ nop -/* 097458 80096858 46085280 */ add.s $f10, $f10, $f8 -.L8009685C: -/* 09745C 8009685C 460E5182 */ mul.s $f6, $f10, $f14 -/* 097460 80096860 240F0001 */ li $t7, 1 -/* 097464 80096864 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 097468 80096868 4459F800 */ cfc1 $t9, $31 -/* 09746C 8009686C 44CFF800 */ ctc1 $t7, $31 -/* 097470 80096870 00000000 */ nop -/* 097474 80096874 46003124 */ cvt.w.s $f4, $f6 -/* 097478 80096878 444FF800 */ cfc1 $t7, $31 -/* 09747C 8009687C 00000000 */ nop -/* 097480 80096880 31EF0078 */ andi $t7, $t7, 0x78 -/* 097484 80096884 51E00013 */ beql $t7, $zero, .L800968D4 -/* 097488 80096888 440F2000 */ mfc1 $t7, $f4 -/* 09748C 8009688C 44812000 */ mtc1 $at, $f4 -/* 097490 80096890 240F0001 */ li $t7, 1 -/* 097494 80096894 46043101 */ sub.s $f4, $f6, $f4 -/* 097498 80096898 44CFF800 */ ctc1 $t7, $31 -/* 09749C 8009689C 00000000 */ nop -/* 0974A0 800968A0 46002124 */ cvt.w.s $f4, $f4 -/* 0974A4 800968A4 444FF800 */ cfc1 $t7, $31 -/* 0974A8 800968A8 00000000 */ nop -/* 0974AC 800968AC 31EF0078 */ andi $t7, $t7, 0x78 -/* 0974B0 800968B0 15E00005 */ bnez $t7, .L800968C8 -/* 0974B4 800968B4 00000000 */ nop -/* 0974B8 800968B8 440F2000 */ mfc1 $t7, $f4 -/* 0974BC 800968BC 3C018000 */ lui $at, 0x8000 -/* 0974C0 800968C0 10000007 */ b .L800968E0 -/* 0974C4 800968C4 01E17825 */ or $t7, $t7, $at -.L800968C8: -/* 0974C8 800968C8 10000005 */ b .L800968E0 -/* 0974CC 800968CC 240FFFFF */ li $t7, -1 -/* 0974D0 800968D0 440F2000 */ mfc1 $t7, $f4 -.L800968D4: -/* 0974D4 800968D4 00000000 */ nop -/* 0974D8 800968D8 05E0FFFB */ bltz $t7, .L800968C8 -/* 0974DC 800968DC 00000000 */ nop -.L800968E0: -/* 0974E0 800968E0 016F8821 */ addu $s1, $t3, $t7 -/* 0974E4 800968E4 00117080 */ sll $t6, $s1, 2 -/* 0974E8 800968E8 44D9F800 */ ctc1 $t9, $31 -/* 0974EC 800968EC 1000005E */ b .L80096A68 -/* 0974F0 800968F0 31D10FFF */ andi $s1, $t6, 0xfff -.L800968F4: -/* 0974F4 800968F4 83A2009F */ lb $v0, 0x9f($sp) -/* 0974F8 800968F8 8FB20078 */ lw $s2, 0x78($sp) -/* 0974FC 800968FC 8FAB00C4 */ lw $t3, 0xc4($sp) -/* 097500 80096900 8FA3006C */ lw $v1, 0x6c($sp) -/* 097504 80096904 8FA60070 */ lw $a2, 0x70($sp) -/* 097508 80096908 449F4000 */ mtc1 $ra, $f8 -/* 09750C 8009690C 30590007 */ andi $t9, $v0, 7 -/* 097510 80096910 00191540 */ sll $v0, $t9, 0x15 -/* 097514 80096914 46804020 */ cvt.s.w $f0, $f8 -/* 097518 80096918 8FB900CC */ lw $t9, 0xcc($sp) -/* 09751C 8009691C 3C01FD00 */ lui $at, 0xfd00 -/* 097520 80096920 00417025 */ or $t6, $v0, $at -/* 097524 80096924 3C010010 */ lui $at, 0x10 -/* 097528 80096928 44925000 */ mtc1 $s2, $f10 -/* 09752C 8009692C 01C1C025 */ or $t8, $t6, $at -/* 097530 80096930 272FFFFF */ addiu $t7, $t9, -1 -/* 097534 80096934 468052A0 */ cvt.s.w $f10, $f10 -/* 097538 80096938 3C01F500 */ lui $at, 0xf500 -/* 09753C 8009693C 31EE0FFF */ andi $t6, $t7, 0xfff -/* 097540 80096940 00415025 */ or $t2, $v0, $at -/* 097544 80096944 3C010010 */ lui $at, 0x10 -/* 097548 80096948 030E4825 */ or $t1, $t8, $t6 -/* 09754C 8009694C 46025402 */ mul.s $f16, $f10, $f2 -/* 097550 80096950 0141C825 */ or $t9, $t2, $at -/* 097554 80096954 306F000F */ andi $t7, $v1, 0xf -/* 097558 80096958 000F1B80 */ sll $v1, $t7, 0xe -/* 09755C 8009695C 30CE000F */ andi $t6, $a2, 0xf -/* 097560 80096960 3C010700 */ lui $at, 0x700 -/* 097564 80096964 000E3100 */ sll $a2, $t6, 4 -/* 097568 80096968 00617825 */ or $t7, $v1, $at -/* 09756C 8009696C 449E5000 */ mtc1 $fp, $f10 -/* 097570 80096970 01E66025 */ or $t4, $t7, $a2 -/* 097574 80096974 00133880 */ sll $a3, $s3, 2 -/* 097578 80096978 46805220 */ cvt.s.w $f8, $f10 -/* 09757C 8009697C 027E4021 */ addu $t0, $s3, $fp -/* 097580 80096980 00087080 */ sll $t6, $t0, 2 -/* 097584 80096984 000BA880 */ sll $s5, $t3, 2 -/* 097588 80096988 30F80FFF */ andi $t8, $a3, 0xfff -/* 09758C 8009698C 32AF0FFF */ andi $t7, $s5, 0xfff -/* 097590 80096990 31C80FFF */ andi $t0, $t6, 0xfff -/* 097594 80096994 8FAE00A4 */ lw $t6, 0xa4($sp) -/* 097598 80096998 03003825 */ move $a3, $t8 -/* 09759C 8009699C 03205025 */ move $t2, $t9 -/* 0975A0 800969A0 01E0A825 */ move $s5, $t7 -/* 0975A4 800969A4 8FAF00A0 */ lw $t7, 0xa0($sp) -/* 0975A8 800969A8 0013C140 */ sll $t8, $s3, 5 -/* 0975AC 800969AC 3316FFFF */ andi $s6, $t8, 0xffff -/* 0975B0 800969B0 000FC400 */ sll $t8, $t7, 0x10 -/* 0975B4 800969B4 31D9FFFF */ andi $t9, $t6, 0xffff -/* 0975B8 800969B8 00668025 */ or $s0, $v1, $a2 -/* 0975BC 800969BC 07C10005 */ bgez $fp, .L800969D4 -/* 0975C0 800969C0 0319B825 */ or $s7, $t8, $t9 -/* 0975C4 800969C4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 0975C8 800969C8 44815000 */ mtc1 $at, $f10 -/* 0975CC 800969CC 00000000 */ nop -/* 0975D0 800969D0 460A4200 */ add.s $f8, $f8, $f10 -.L800969D4: -/* 0975D4 800969D4 460E4182 */ mul.s $f6, $f8, $f14 -/* 0975D8 800969D8 240E0001 */ li $t6, 1 -/* 0975DC 800969DC 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 0975E0 800969E0 444FF800 */ cfc1 $t7, $31 -/* 0975E4 800969E4 44CEF800 */ ctc1 $t6, $31 -/* 0975E8 800969E8 00000000 */ nop -/* 0975EC 800969EC 46003124 */ cvt.w.s $f4, $f6 -/* 0975F0 800969F0 444EF800 */ cfc1 $t6, $31 -/* 0975F4 800969F4 00000000 */ nop -/* 0975F8 800969F8 31CE0078 */ andi $t6, $t6, 0x78 -/* 0975FC 800969FC 51C00013 */ beql $t6, $zero, .L80096A4C -/* 097600 80096A00 440E2000 */ mfc1 $t6, $f4 -/* 097604 80096A04 44812000 */ mtc1 $at, $f4 -/* 097608 80096A08 240E0001 */ li $t6, 1 -/* 09760C 80096A0C 46043101 */ sub.s $f4, $f6, $f4 -/* 097610 80096A10 44CEF800 */ ctc1 $t6, $31 -/* 097614 80096A14 00000000 */ nop -/* 097618 80096A18 46002124 */ cvt.w.s $f4, $f4 -/* 09761C 80096A1C 444EF800 */ cfc1 $t6, $31 -/* 097620 80096A20 00000000 */ nop -/* 097624 80096A24 31CE0078 */ andi $t6, $t6, 0x78 -/* 097628 80096A28 15C00005 */ bnez $t6, .L80096A40 -/* 09762C 80096A2C 00000000 */ nop -/* 097630 80096A30 440E2000 */ mfc1 $t6, $f4 -/* 097634 80096A34 3C018000 */ lui $at, 0x8000 -/* 097638 80096A38 10000007 */ b .L80096A58 -/* 09763C 80096A3C 01C17025 */ or $t6, $t6, $at -.L80096A40: -/* 097640 80096A40 10000005 */ b .L80096A58 -/* 097644 80096A44 240EFFFF */ li $t6, -1 -/* 097648 80096A48 440E2000 */ mfc1 $t6, $f4 -.L80096A4C: -/* 09764C 80096A4C 00000000 */ nop -/* 097650 80096A50 05C0FFFB */ bltz $t6, .L80096A40 -/* 097654 80096A54 00000000 */ nop -.L80096A58: -/* 097658 80096A58 016E8821 */ addu $s1, $t3, $t6 -/* 09765C 80096A5C 44CFF800 */ ctc1 $t7, $31 -/* 097660 80096A60 0011C080 */ sll $t8, $s1, 2 -/* 097664 80096A64 33110FFF */ andi $s1, $t8, 0xfff -.L80096A68: -/* 097668 80096A68 00801025 */ move $v0, $a0 -/* 09766C 80096A6C AC490000 */ sw $t1, ($v0) -/* 097670 80096A70 8FAF00C8 */ lw $t7, 0xc8($sp) -/* 097674 80096A74 00B23021 */ addu $a2, $a1, $s2 -/* 097678 80096A78 00C57023 */ subu $t6, $a2, $a1 -/* 09767C 80096A7C 000EC040 */ sll $t8, $t6, 1 -/* 097680 80096A80 27190009 */ addiu $t9, $t8, 9 -/* 097684 80096A84 AC4F0004 */ sw $t7, 4($v0) -/* 097688 80096A88 001978C2 */ srl $t7, $t9, 3 -/* 09768C 80096A8C 31EE01FF */ andi $t6, $t7, 0x1ff -/* 097690 80096A90 24840008 */ addiu $a0, $a0, 8 -/* 097694 80096A94 00801825 */ move $v1, $a0 -/* 097698 80096A98 000EC240 */ sll $t8, $t6, 9 -/* 09769C 80096A9C 01585825 */ or $t3, $t2, $t8 -/* 0976A0 80096AA0 00054880 */ sll $t1, $a1, 2 -/* 0976A4 80096AA4 312F0FFF */ andi $t7, $t1, 0xfff -/* 0976A8 80096AA8 24840008 */ addiu $a0, $a0, 8 -/* 0976AC 80096AAC 00806825 */ move $t5, $a0 -/* 0976B0 80096AB0 000F4B00 */ sll $t1, $t7, 0xc -/* 0976B4 80096AB4 AC6B0000 */ sw $t3, ($v1) -/* 0976B8 80096AB8 AC6C0004 */ sw $t4, 4($v1) -/* 0976BC 80096ABC 3C19E600 */ lui $t9, 0xe600 -/* 0976C0 80096AC0 3C01F400 */ lui $at, 0xf400 -/* 0976C4 80096AC4 0121C025 */ or $t8, $t1, $at -/* 0976C8 80096AC8 ADB90000 */ sw $t9, ($t5) -/* 0976CC 80096ACC 00065080 */ sll $t2, $a2, 2 -/* 0976D0 80096AD0 314F0FFF */ andi $t7, $t2, 0xfff -/* 0976D4 80096AD4 0307C825 */ or $t9, $t8, $a3 -/* 0976D8 80096AD8 24840008 */ addiu $a0, $a0, 8 -/* 0976DC 80096ADC 00801025 */ move $v0, $a0 -/* 0976E0 80096AE0 000F5300 */ sll $t2, $t7, 0xc -/* 0976E4 80096AE4 3C010700 */ lui $at, 0x700 -/* 0976E8 80096AE8 ADA00004 */ sw $zero, 4($t5) -/* 0976EC 80096AEC AC590000 */ sw $t9, ($v0) -/* 0976F0 80096AF0 0141C025 */ or $t8, $t2, $at -/* 0976F4 80096AF4 0308C825 */ or $t9, $t8, $t0 -/* 0976F8 80096AF8 24840008 */ addiu $a0, $a0, 8 -/* 0976FC 80096AFC 00801825 */ move $v1, $a0 -/* 097700 80096B00 AC590004 */ sw $t9, 4($v0) -/* 097704 80096B04 24840008 */ addiu $a0, $a0, 8 -/* 097708 80096B08 00806025 */ move $t4, $a0 -/* 09770C 80096B0C 24840008 */ addiu $a0, $a0, 8 -/* 097710 80096B10 3C0FE700 */ lui $t7, 0xe700 -/* 097714 80096B14 AC6F0000 */ sw $t7, ($v1) -/* 097718 80096B18 00801025 */ move $v0, $a0 -/* 09771C 80096B1C AC600004 */ sw $zero, 4($v1) -/* 097720 80096B20 3C01F200 */ lui $at, 0xf200 -/* 097724 80096B24 44925000 */ mtc1 $s2, $f10 -/* 097728 80096B28 01217025 */ or $t6, $t1, $at -/* 09772C 80096B2C 24840008 */ addiu $a0, $a0, 8 -/* 097730 80096B30 01C7C025 */ or $t8, $t6, $a3 -/* 097734 80096B34 AD900004 */ sw $s0, 4($t4) -/* 097738 80096B38 AD8B0000 */ sw $t3, ($t4) -/* 09773C 80096B3C 0148C825 */ or $t9, $t2, $t0 -/* 097740 80096B40 00803025 */ move $a2, $a0 -/* 097744 80096B44 AC590004 */ sw $t9, 4($v0) -/* 097748 80096B48 AC580000 */ sw $t8, ($v0) -/* 09774C 80096B4C 24840008 */ addiu $a0, $a0, 8 -/* 097750 80096B50 06410005 */ bgez $s2, .L80096B68 -/* 097754 80096B54 46805220 */ cvt.s.w $f8, $f10 -/* 097758 80096B58 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 09775C 80096B5C 44813000 */ mtc1 $at, $f6 -/* 097760 80096B60 00000000 */ nop -/* 097764 80096B64 46064200 */ add.s $f8, $f8, $f6 -.L80096B68: -/* 097768 80096B68 46024102 */ mul.s $f4, $f8, $f2 -/* 09776C 80096B6C 240E0001 */ li $t6, 1 -/* 097770 80096B70 00801025 */ move $v0, $a0 -/* 097774 80096B74 24840008 */ addiu $a0, $a0, 8 -/* 097778 80096B78 00801825 */ move $v1, $a0 -/* 09777C 80096B7C 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 097780 80096B80 444FF800 */ cfc1 $t7, $31 -/* 097784 80096B84 44CEF800 */ ctc1 $t6, $31 -/* 097788 80096B88 00000000 */ nop -/* 09778C 80096B8C 460022A4 */ cvt.w.s $f10, $f4 -/* 097790 80096B90 444EF800 */ cfc1 $t6, $31 -/* 097794 80096B94 00000000 */ nop -/* 097798 80096B98 31CE0078 */ andi $t6, $t6, 0x78 -/* 09779C 80096B9C 51C00013 */ beql $t6, $zero, .L80096BEC -/* 0977A0 80096BA0 440E5000 */ mfc1 $t6, $f10 -/* 0977A4 80096BA4 44815000 */ mtc1 $at, $f10 -/* 0977A8 80096BA8 240E0001 */ li $t6, 1 -/* 0977AC 80096BAC 460A2281 */ sub.s $f10, $f4, $f10 -/* 0977B0 80096BB0 44CEF800 */ ctc1 $t6, $31 -/* 0977B4 80096BB4 00000000 */ nop -/* 0977B8 80096BB8 460052A4 */ cvt.w.s $f10, $f10 -/* 0977BC 80096BBC 444EF800 */ cfc1 $t6, $31 -/* 0977C0 80096BC0 00000000 */ nop -/* 0977C4 80096BC4 31CE0078 */ andi $t6, $t6, 0x78 -/* 0977C8 80096BC8 15C00005 */ bnez $t6, .L80096BE0 -/* 0977CC 80096BCC 00000000 */ nop -/* 0977D0 80096BD0 440E5000 */ mfc1 $t6, $f10 -/* 0977D4 80096BD4 3C018000 */ lui $at, 0x8000 -/* 0977D8 80096BD8 10000007 */ b .L80096BF8 -/* 0977DC 80096BDC 01C17025 */ or $t6, $t6, $at -.L80096BE0: -/* 0977E0 80096BE0 10000005 */ b .L80096BF8 -/* 0977E4 80096BE4 240EFFFF */ li $t6, -1 -/* 0977E8 80096BE8 440E5000 */ mfc1 $t6, $f10 -.L80096BEC: -/* 0977EC 80096BEC 00000000 */ nop -/* 0977F0 80096BF0 05C0FFFB */ bltz $t6, .L80096BE0 -/* 0977F4 80096BF4 00000000 */ nop -.L80096BF8: -/* 0977F8 80096BF8 03EEC021 */ addu $t8, $ra, $t6 -/* 0977FC 80096BFC 44CFF800 */ ctc1 $t7, $31 -/* 097800 80096C00 0018C880 */ sll $t9, $t8, 2 -/* 097804 80096C04 332F0FFF */ andi $t7, $t9, 0xfff -/* 097808 80096C08 000F7300 */ sll $t6, $t7, 0xc -/* 09780C 80096C0C 3C01E400 */ lui $at, 0xe400 -/* 097810 80096C10 01C1C025 */ or $t8, $t6, $at -/* 097814 80096C14 0311C825 */ or $t9, $t8, $s1 -/* 097818 80096C18 001F7880 */ sll $t7, $ra, 2 -/* 09781C 80096C1C 31EE0FFF */ andi $t6, $t7, 0xfff -/* 097820 80096C20 000EC300 */ sll $t8, $t6, 0xc -/* 097824 80096C24 ACD90000 */ sw $t9, ($a2) -/* 097828 80096C28 0315C825 */ or $t9, $t8, $s5 -/* 09782C 80096C2C ACD90004 */ sw $t9, 4($a2) -/* 097830 80096C30 3C0FB300 */ lui $t7, 0xb300 -/* 097834 80096C34 AC4F0000 */ sw $t7, ($v0) -/* 097838 80096C38 00A0C825 */ move $t9, $a1 -/* 09783C 80096C3C 46100180 */ add.s $f6, $f0, $f16 -/* 097840 80096C40 00197D40 */ sll $t7, $t9, 0x15 -/* 097844 80096C44 01F67025 */ or $t6, $t7, $s6 -/* 097848 80096C48 AC4E0004 */ sw $t6, 4($v0) -/* 09784C 80096C4C 3C18B200 */ lui $t8, 0xb200 -/* 097850 80096C50 4600320D */ trunc.w.s $f8, $f6 -/* 097854 80096C54 AC780000 */ sw $t8, ($v1) -/* 097858 80096C58 AC770004 */ sw $s7, 4($v1) -/* 09785C 80096C5C 8FAF00B8 */ lw $t7, 0xb8($sp) -/* 097860 80096C60 441F4000 */ mfc1 $ra, $f8 -/* 097864 80096C64 02802825 */ move $a1, $s4 -/* 097868 80096C68 028F082B */ sltu $at, $s4, $t7 -/* 09786C 80096C6C 1420FEB7 */ bnez $at, .L8009674C -/* 097870 80096C70 24840008 */ addiu $a0, $a0, 8 -/* 097874 80096C74 8FA80078 */ lw $t0, 0x78($sp) -/* 097878 80096C78 8FA70074 */ lw $a3, 0x74($sp) -/* 09787C 80096C7C 8FA600BC */ lw $a2, 0xbc($sp) -/* 097880 80096C80 01E01825 */ move $v1, $t7 -.L80096C84: -/* 097884 80096C84 46126100 */ add.s $f4, $f12, $f18 -.L80096C88: -/* 097888 80096C88 8FB30034 */ lw $s3, 0x34($sp) -/* 09788C 80096C8C 8FBF008C */ lw $ra, 0x8c($sp) -/* 097890 80096C90 4600228D */ trunc.w.s $f10, $f4 -/* 097894 80096C94 0266082B */ sltu $at, $s3, $a2 -/* 097898 80096C98 44185000 */ mfc1 $t8, $f10 -/* 09789C 80096C9C 1420FE8B */ bnez $at, .L800966CC -/* 0978A0 80096CA0 AFB800C4 */ sw $t8, 0xc4($sp) -.L80096CA4: -/* 0978A4 80096CA4 00801025 */ move $v0, $a0 -.L80096CA8: -/* 0978A8 80096CA8 8FBF002C */ lw $ra, 0x2c($sp) -/* 0978AC 80096CAC 8FB00008 */ lw $s0, 8($sp) -/* 0978B0 80096CB0 8FB1000C */ lw $s1, 0xc($sp) -/* 0978B4 80096CB4 8FB20010 */ lw $s2, 0x10($sp) -/* 0978B8 80096CB8 8FB30014 */ lw $s3, 0x14($sp) -/* 0978BC 80096CBC 8FB40018 */ lw $s4, 0x18($sp) -/* 0978C0 80096CC0 8FB5001C */ lw $s5, 0x1c($sp) -/* 0978C4 80096CC4 8FB60020 */ lw $s6, 0x20($sp) -/* 0978C8 80096CC8 8FB70024 */ lw $s7, 0x24($sp) -/* 0978CC 80096CCC 8FBE0028 */ lw $fp, 0x28($sp) -/* 0978D0 80096CD0 03E00008 */ jr $ra -/* 0978D4 80096CD4 27BD0098 */ addiu $sp, $sp, 0x98 diff --git a/src/code_80091750.c b/src/code_80091750.c index 34458460a..576ec071f 100644 --- a/src/code_80091750.c +++ b/src/code_80091750.c @@ -1597,81 +1597,55 @@ void func_80092258(void) { } } -#ifdef MIPS_TO_C +#ifdef NON_MATCHING //generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-02-2023 void func_80092290(s32 arg0, s32 *arg1, s32 *arg2) { - Vtx **var_s0; - Vtx *temp_v0; - Vtx *temp_v1; - Vtx *temp_v1_2; - s32 temp_a0; - s32 temp_a1; - s32 temp_s4; - s32 temp_t0; + s32 temp_v1; + s32 i; + s32 idx; s32 temp_t6; s32 temp_t7; - s32 temp_t8; s32 temp_t8_2; s32 temp_t9; - void *temp_a2; - s32 i; + s32 a, b, c, d; + Vtx *vtx; - if ((arg0 >= 4) && (arg0 < 6)) { - temp_t8 = *arg2 + 0x10; - *arg2 = temp_t8; - if (temp_t8 >= 0x100) { - *arg2 = 0; - *arg1 = (s32) (*arg1 + 1) % 3; - } - var_s0 = D_800E84C0; - temp_s4 = (((arg0 * 4) + (((s32) gGlobalTimer % 2) * 2)) - 6) * 0x10; + if ((arg0 < 4) || (arg0 >= 6)) { return; } + + idx = (((arg0 * 4) + ((gGlobalTimer % 2) * 2)) - 6); + + *arg2 += 16; + if (*arg2 >= 256) { + *arg2 = 0; + *arg1 = (s32) (*arg1 + 1) % 3; + } + + for (i = 0; i < 3; i++) { + vtx = (Vtx *) segmented_to_virtual_dupe_2(D_800E84C0[i]); + + temp_v1 = (*arg1 * 2) + 2; + + temp_t6 = (vtx+temp_v1)->v.cn[0] * (256 - *arg2); + temp_t9 = (vtx+temp_v1)->v.cn[1] * (256 - *arg2); + temp_t7 = (vtx+temp_v1)->v.cn[2] * (256 - *arg2); + temp_t8_2 = (vtx+temp_v1)->v.cn[3] * (256 - *arg2); + + temp_v1 = (*arg1 % 6) + 2; + a = (*arg2 * (vtx+temp_v1)->v.cn[0]); + b = (*arg2 * (vtx+temp_v1)->v.cn[1]); + c = (*arg2 * (vtx+temp_v1)->v.cn[2]); + d = (*arg2 * (vtx+temp_v1)->v.cn[3]); - for (i = 0; i < 12; i++) { - temp_v0 = (Vtx *) segmented_to_virtual_dupe_2(D_800E84C0[i]); - temp_a0 = *arg2; - temp_a2 = temp_v0 + temp_s4; - temp_a1 = 0x100 - temp_a0; - var_s0 += 4; - temp_t0 = (*arg1 * 2) + 2; - temp_v1 = &temp_v0[temp_t0]; - temp_v1_2 = &temp_v0[(temp_t0 % 6) + 2]; - temp_t6 = (s32) ((temp_a1 * temp_v1->v.cn[0]) + (temp_a0 * temp_v1_2->v.cn[0])) / 256; - temp_a2->unkC = (s8) temp_t6; - temp_t9 = (s32) ((temp_a1 * temp_v1->v.cn[1]) + (temp_a0 * temp_v1_2->v.cn[1])) / 256; - temp_a2->unkD = (s8) temp_t9; - temp_t7 = (s32) ((temp_a1 * temp_v1->v.cn[2]) + (temp_a0 * temp_v1_2->v.cn[2])) / 256; - temp_a2->unkE = (s8) temp_t7; - temp_t8_2 = (s32) ((temp_a1 * temp_v1->v.cn[3]) + (temp_a0 * temp_v1_2->v.cn[3])) / 256; - temp_a2->unkF = (s8) temp_t8_2; - temp_a2->unk1C = (s8) temp_t6; - temp_a2->unk1D = (s8) temp_t9; - temp_a2->unk1E = (s8) temp_t7; - temp_a2->unk1F = (s8) temp_t8_2; - } + (vtx+idx)->v.cn[0] = (temp_t6 + a) / 256; + (vtx+idx)->v.cn[1] = (temp_t9 + b) / 256; + (vtx+idx)->v.cn[2] = (temp_t7 + c) / 256; + (vtx+idx)->v.cn[3] = (temp_t8_2 + d) / 256; - //do { - // temp_v0 = segmented_to_virtual_dupe_2(*var_s0); - // temp_a0 = *arg2; - // temp_a2 = temp_v0 + temp_s4; - // temp_a1 = 0x100 - temp_a0; - // var_s0 += 4; - // temp_t0 = (*arg1 * 2) + 2; - // temp_v1 = &temp_v0[temp_t0]; - // temp_v1_2 = &temp_v0[(temp_t0 % 6) + 2]; - // temp_t6 = (s32) ((temp_a1 * temp_v1->v.cn[0]) + (temp_a0 * temp_v1_2->v.cn[0])) / 256; - // temp_a2->unkC = (s8) temp_t6; - // temp_t9 = (s32) ((temp_a1 * temp_v1->v.cn[1]) + (temp_a0 * temp_v1_2->v.cn[1])) / 256; - // temp_a2->unkD = (s8) temp_t9; - // temp_t7 = (s32) ((temp_a1 * temp_v1->v.cn[2]) + (temp_a0 * temp_v1_2->v.cn[2])) / 256; - // temp_a2->unkE = (s8) temp_t7; - // temp_t8_2 = (s32) ((temp_a1 * temp_v1->v.cn[3]) + (temp_a0 * temp_v1_2->v.cn[3])) / 256; - // temp_a2->unkF = (s8) temp_t8_2; - // temp_a2->unk1C = (s8) temp_t6; - // temp_a2->unk1D = (s8) temp_t9; - // temp_a2->unk1E = (s8) temp_t7; - // temp_a2->unk1F = (s8) temp_t8_2; - //} while (var_s0 != D_800E84CC); + (vtx+idx+1)->v.cn[0] = (temp_t6 + a) / 256; + (vtx+idx+1)->v.cn[1] = (temp_t9 + b) / 256; + (vtx+idx+1)->v.cn[2] = (temp_t7 + c) / 256; + (vtx+idx+1)->v.cn[3] = (temp_t8_2 + d) / 256; } } #else @@ -2908,937 +2882,405 @@ func_80095BD0_label2: return func_800959F8(displayListHead, var_a1); } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-01-2023 Gfx *func_80095E10(Gfx *displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, u8 *argA, u32 argB, u32 argC) { + u32 var_a1_2 = arg4; + u32 var_s3 = arg5; s32 sp7C; - u32 sp70; - s32 sp6C; - s32 sp68; - s32 sp64; - u32 sp34; - Gfx *temp_a0; - Gfx *temp_a0_2; - Gfx *temp_a0_3; - Gfx *temp_a0_4; - Gfx *temp_a0_5; - Gfx *temp_a0_6; - Gfx *temp_a0_7; - Gfx *temp_a0_8; - Gfx *temp_a0_9; - Gfx *var_a0; - s32 temp_a1; - s32 temp_a2; - s32 temp_at; - s32 temp_at_2; - s32 temp_lo; - s32 temp_t1; - s32 temp_t2; - s32 temp_t6; - s32 temp_t7_2; - s32 temp_v0; - s32 temp_v0_2; - s32 var_a1; - s32 var_a1_2; - s32 var_a2; - s32 var_a2_2; - s32 var_a3; - s32 var_ra; - s32 var_s1; - s32 var_s3; - s32 var_s4; - s32 var_s6; - s32 var_s7; - s32 var_t0_2; - s32 var_t2; - s32 var_v0; - s32 var_v0_3; - s32 var_v0_4; - s32 var_v1; - u32 temp_s5; - u32 temp_t3; - u32 temp_t6_2; - u32 temp_t7; - u32 var_fp; u32 var_s2; - u32 var_t0; - u32 var_t1; - u32 var_t4; - u32 var_v0_2; + u32 var_s4; + s32 var_t0 = 1; + s32 temp_lo; + s32 sp68 = 0; + s32 sp64 = 0; + s32 var_v0_2; - var_a0 = displayListHead; - var_t0 = 1; - sp68 = 0; - sp64 = 0; - if (argB >= 2U) { - do { - temp_t7 = var_t0 * 2; - var_t0 = temp_t7; - } while (temp_t7 < argB); + while (var_t0 < argB) { + var_t0 *= 2; } - temp_lo = 0x400 / (s32) var_t0; - var_a2 = temp_lo; - if (argC < (u32) (temp_lo / 2)) { - var_v0 = var_a2 / 2; - do { - temp_a1 = var_v0; - var_v0 = temp_a1 / 2; - } while (argC < (u32) var_v0); - sp6C = temp_a1; - var_a2 = temp_a1; + + temp_lo = 0x400 / var_t0; + + while((temp_lo / 2) > argC) { + temp_lo /= 2; } + var_v0_2 = var_t0; - if ((s32) var_t0 >= 2) { - do { - temp_t7_2 = (s32) var_v0_2 / 2; - temp_at = temp_t7_2 < 2; - var_v0_2 = (u32) temp_t7_2; - sp68 += 1; - } while (temp_at == 0); + while (var_v0_2 > 1) { + var_v0_2 /= 2; + sp68 += 1; } - var_v0_3 = var_a2; - if (var_a2 >= 2) { - do { - temp_t6 = var_v0_3 / 2; - temp_at_2 = temp_t6 < 2; - var_v0_3 = temp_t6; - sp64 += 1; - } while (temp_at_2 == 0); + var_v0_2 = temp_lo; + + while (var_v0_2 > 1) { + var_v0_2 /= 2; + sp64 += 1; } - var_a1 = arg8; - if (var_a1 < 0) { - arg4 -= var_a1; - var_a1 = 0; - } else if (((arg6 - arg4) + var_a1) >= 0x141) { - arg6 = (arg4 - var_a1) + 0x140; + + if (arg8 < 0) { + arg4 -= arg8; + arg8 = 0; + } else if (((arg6 - arg4) + arg8) > SCREEN_WIDTH) { + arg6 = (arg4 - arg8) + SCREEN_WIDTH; } - var_ra = arg9; - var_v0_4 = arg5; - if (var_ra < 0) { - var_v0_4 = arg5 - var_ra; - var_ra = 0; - } else if (((arg7 - var_v0_4) + var_ra) >= 0xF1) { - arg7 = (var_v0_4 - var_ra) + 0xF0; + + if (arg9 < 0) { + arg5 -= arg9; + arg9 = 0; + } else if (((arg7 - arg5) + arg9) > SCREEN_HEIGHT) { + arg7 = (arg5 - arg9) + SCREEN_HEIGHT; } + if (arg6 < arg4) { + return displayListHead; + } + if (arg7 < arg5) { + return displayListHead; - } else if (arg7 < var_v0_4) { + } + sp7C = arg8; + for (var_s3 = arg5; var_s3 < arg7; var_s3 += temp_lo) { - } else { - sp7C = var_a1; - var_s3 = var_v0_4; - if ((u32) var_v0_4 < (u32) arg7) { - arg8 = var_a1; -loop_24: - temp_t6_2 = var_a2 + var_s3; - sp34 = temp_t6_2; - if ((u32) arg7 < temp_t6_2) { + if (arg7 < temp_lo + var_s3) { var_s4 = arg7 - var_s3; - if (var_s4 != 0) { - goto block_28; + if (!var_s4) { + break; } } else { - var_s4 = var_a2; -block_28: - var_a1_2 = arg4; - if ((u32) arg4 < (u32) arg6) { - sp6C = var_a2; - sp70 = var_t0; -loop_30: - temp_s5 = sp70 + var_a1_2; - var_s2 = sp70; - if ((u32) arg6 < temp_s5) { + var_s4 = temp_lo; + } + + for (var_a1_2 = arg4; var_a1_2 < arg6; var_a1_2 += var_t0) { + + if (arg6 < var_t0 + var_a1_2) { var_s2 = arg6 - var_a1_2; - if (var_s2 == 0) { - var_t0 = sp70; - var_a2 = sp6C; - } else { - temp_v0 = (arg1 & 7) << 0x15; - var_t1 = temp_v0 | 0xFD000000 | 0x100000 | ((argB - 1) & 0xFFF); - var_a2_2 = (sp68 & 0xF) * 0x10; - var_v1 = (sp64 & 0xF) << 0xE; - var_t4 = var_v1 | 0x07000000 | var_a2_2; - var_t0_2 = ((var_s3 + var_s4) * 4) & 0xFFF; - var_s1 = ((var_ra + var_s4) * 4) & 0xFFF; - var_s6 = (var_ra * 4) & 0xFFF; - var_t2 = temp_v0 | 0xF5000000 | 0x100000; - var_s7 = (var_s3 << 5) & 0xFFFF; - var_a3 = (var_s3 * 4) & 0xFFF; - var_fp = (arg2 << 0x10) | (arg3 & 0xFFFF); - goto block_35; + if (!var_s2) { + break; } } else { - temp_v0_2 = (arg1 & 7) << 0x15; - var_t1 = temp_v0_2 | 0xFD000000 | 0x100000 | ((argB - 1) & 0xFFF); - var_a2_2 = (sp68 & 0xF) * 0x10; - var_v1 = (sp64 & 0xF) << 0xE; - var_t4 = var_v1 | 0x07000000 | var_a2_2; - var_t0_2 = ((var_s3 + var_s4) * 4) & 0xFFF; - var_s1 = ((var_ra + var_s4) * 4) & 0xFFF; - var_s6 = (var_ra * 4) & 0xFFF; - var_t2 = temp_v0_2 | 0xF5000000 | 0x100000; - var_s7 = (var_s3 << 5) & 0xFFFF; - var_a3 = (var_s3 * 4) & 0xFFF; - var_fp = (arg2 << 0x10) | (arg3 & 0xFFFF); -block_35: - var_a0->words.w0 = var_t1; - temp_a2 = var_a1_2 + var_s2; - var_a0->words.w1 = (u32) argA; - temp_a0 = var_a0 + 8; - temp_t3 = var_t2 | ((((u32) (((temp_a2 - var_a1_2) * 2) + 9) >> 3) & 0x1FF) << 9); - temp_a0_2 = temp_a0 + 8; - temp_t1 = ((var_a1_2 * 4) & 0xFFF) << 0xC; - temp_a0->words.w0 = temp_t3; - temp_a0->words.w1 = var_t4; - temp_a0_2->words.w0 = 0xE6000000; - temp_a0_3 = temp_a0_2 + 8; - temp_t2 = ((temp_a2 * 4) & 0xFFF) << 0xC; - temp_a0_2->words.w1 = 0; - temp_a0_3->words.w0 = temp_t1 | 0xF4000000 | var_a3; - temp_a0_4 = temp_a0_3 + 8; - temp_a0_3->words.w1 = temp_t2 | 0x07000000 | var_t0_2; - temp_a0_5 = temp_a0_4 + 8; - temp_a0_4->words.w0 = 0xE7000000; - temp_a0_4->words.w1 = 0; - temp_a0_6 = temp_a0_5 + 8; - temp_a0_5->words.w1 = var_v1 | var_a2_2; - temp_a0_5->words.w0 = temp_t3; - temp_a0_6->words.w1 = temp_t2 | var_t0_2; - temp_a0_6->words.w0 = temp_t1 | 0xF2000000 | var_a3; - temp_a0_7 = temp_a0_6 + 8; - temp_a0_7->words.w0 = ((((arg8 + var_s2) * 4) & 0xFFF) << 0xC) | 0xE4000000 | var_s1; - temp_a0_8 = temp_a0_7 + 8; - temp_a0_7->words.w1 = (((arg8 * 4) & 0xFFF) << 0xC) | var_s6; - temp_a0_8->words.w0 = 0xB3000000; - temp_a0_9 = temp_a0_8 + 8; - temp_a0_8->words.w1 = (var_a1_2 << 0x15) | var_s7; - temp_a0_9->words.w0 = 0xB2000000; - temp_a0_9->words.w1 = var_fp; - var_a1_2 = (s32) temp_s5; - arg8 += sp70; - var_a0 = temp_a0_9 + 8; - if (temp_s5 >= (u32) arg6) { - var_t0 = sp70; - var_a2 = sp6C; - } else { - goto loop_30; - } + var_s2 = var_t0; } - } - var_s3 = (s32) sp34; - var_ra += var_a2; - arg8 = sp7C; - if ((u32) var_s3 < (u32) arg7) { - goto loop_24; - } - } - } - /* - Looks something like below, with some continue/break conditions thrown in - for (var_s3 = arg5; var_s3 < arg7; var_s3 += var_a2) { - for (var_a1_2 = arg4; var_a1_2 < arg6; var_a1_2 += sp70) { - gDPLoadTextureTile(displayListHead++, argA, arg1, G_IM_SIZ_16b, argB, 0, + gDPLoadTextureTile(displayListHead++, argA, arg1, G_IM_SIZ_16b, argB, 0, var_a1_2, var_s3, var_a1_2 + var_s2, var_s3 + var_s4, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, sp68, sp64, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(displayListHead++, arg8 * 4, var_ra * 4, (arg8 + var_s2) * 4, (var_ra + var_s4) * 4, 0, - var_a1_2 * 32, var_s3 * 32, arg2, arg3); - } - } - */ - } - return var_a0; + gSPTextureRectangle(displayListHead++, arg8 * 4, arg9 * 4, (arg8 + var_s2) * 4, (arg9 + var_s4) * 4, 0, + (var_a1_2 * 32) & 0xFFFF, (var_s3 * 32) & 0xFFFF, arg2, arg3); + + arg8 += var_t0; + } + + arg8 = sp7C; + arg9 += temp_lo; + } + return displayListHead; } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_80095E10.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-01-2023 Gfx *func_800963F0(Gfx *displayListHead, s8 arg1, s32 arg2, s32 arg3, f32 arg4, f32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, s32 argA, s32 argB, u8 *argC, u32 argD, u32 argE) { - s32 sp8C; - u32 sp78; - s32 sp74; - s32 sp70; - s32 sp6C; - u32 sp34; - Gfx *temp_a0; - Gfx *temp_a0_2; - Gfx *temp_a0_3; - Gfx *temp_a0_4; - Gfx *temp_a0_5; - Gfx *temp_a0_6; - Gfx *temp_a0_7; - Gfx *temp_a0_8; - Gfx *temp_a0_9; - Gfx *var_a0; - f32 temp_f0; - f32 temp_f0_2; - f32 var_f0; - f32 var_f10; - f32 var_f12; - f32 var_f16; - f32 var_f18; - f32 var_f8; - s32 temp_a1; - s32 temp_a2; - s32 temp_a2_2; - s32 temp_a2_3; - s32 temp_at; - s32 temp_at_2; - s32 temp_lo; - s32 temp_t1; - s32 temp_t2; - s32 temp_t6; - s32 temp_t7_2; - s32 temp_v0; - s32 temp_v0_2; - s32 temp_v1; - s32 temp_v1_2; - s32 var_a1; - s32 var_a1_2; - s32 var_a3; - s32 var_a3_2; - s32 var_fp; - s32 var_ra; - s32 var_s1; - s32 var_s3; - s32 var_s5; - s32 var_s6; - s32 var_t0_2; - s32 var_t2; - s32 var_v0; - s32 var_v0_3; - s32 var_v0_4; - u32 temp_s4; - u32 temp_t3; - u32 temp_t7; - u32 temp_t8; - u32 var_s0; + u32 var_a1_2 = arg6; + u32 var_s3 = arg7; + s32 sp7C; u32 var_s2; - u32 var_s7; - u32 var_t0; - u32 var_t1; - u32 var_t4; - u32 var_v0_2; + u32 var_s4; + u32 a; + u32 b; + s32 var_t0 = 1; + s32 temp_lo; + s32 sp68 = 0; + s32 sp64 = 0; + s32 var_v0_2; - var_a0 = displayListHead; - var_t0 = 1; - sp70 = 0; - sp6C = 0; - if (argD >= 2U) { - do { - temp_t7 = var_t0 * 2; - var_t0 = temp_t7; - } while (temp_t7 < argD); + while (var_t0 < argD) { + var_t0 *= 2; } - temp_lo = 0x400 / (s32) var_t0; - var_a3 = temp_lo; - if (argE < (u32) (temp_lo / 2)) { - var_v0 = var_a3 / 2; - do { - temp_a1 = var_v0; - var_v0 = temp_a1 / 2; - } while (argE < (u32) var_v0); - sp74 = temp_a1; - var_a3 = temp_a1; + + temp_lo = 0x400 / var_t0; + + while((temp_lo / 2) > argE) { + temp_lo /= 2; } + var_v0_2 = var_t0; - if ((s32) var_t0 >= 2) { - do { - temp_t7_2 = (s32) var_v0_2 / 2; - temp_at = temp_t7_2 < 2; - var_v0_2 = (u32) temp_t7_2; - sp70 += 1; - } while (temp_at == 0); + while (var_v0_2 > 1) { + var_v0_2 /= 2; + sp68 += 1; } - var_v0_3 = var_a3; - if (var_a3 >= 2) { - do { - temp_t6 = var_v0_3 / 2; - temp_at_2 = temp_t6 < 2; - var_v0_3 = temp_t6; - sp6C += 1; - } while (temp_at_2 == 0); + var_v0_2 = temp_lo; + + while (var_v0_2 > 1) { + var_v0_2 /= 2; + sp64 += 1; } - var_ra = argA; - if (var_ra < 0) { - arg6 -= var_ra; - var_ra = 0; - } else { - temp_f0 = (f32) var_ra + ((f32) (arg8 - arg6) * arg4); - if (temp_f0 > 320.0f) { - arg8 = (s32) ((f32) arg8 - (temp_f0 - 320.0f)); - } + + if (argA < 0) { + arg6 -= argA; + argA = 0; + } else if ((argA + (arg8 - arg6) * arg4) > SCREEN_WIDTH) { + arg8 -= argA + (arg8 - arg6) * arg4 - SCREEN_WIDTH; } - var_a1 = argB; - var_v0_4 = arg7; - if (var_a1 < 0) { - var_v0_4 = arg7 - var_a1; - var_a1 = 0; - } else { - temp_f0_2 = (f32) var_a1 + ((f32) (arg9 - var_v0_4) * arg5); - if (temp_f0_2 > 240.0f) { - arg9 = (s32) ((f32) arg9 - (temp_f0_2 - 240.0f)); - } + + if (argB < 0) { + arg7 -= argB; + argB = 0; + } else if ((argB + (arg9 - arg7) * arg5) > SCREEN_HEIGHT) { + arg9 -= argB + (arg9 - arg7) * arg5 - SCREEN_HEIGHT; } + if (arg8 < arg6) { + return displayListHead; + } + if (arg9 < arg7) { + return displayListHead; + } + arg2 /= arg4; + arg3 /= arg5; - } else if (arg9 < var_v0_4) { + sp7C = argA; + for (var_s3 = arg7; var_s3 < arg9; var_s3 += temp_lo) { - } else { - sp8C = var_ra; - var_s3 = var_v0_4; - arg2 = (s32) ((f32) arg2 / arg4); - arg3 = (s32) ((f32) arg3 / arg5); - if ((u32) var_v0_4 < (u32) arg9) { - argB = var_a1; -loop_24: - temp_t8 = var_a3 + var_s3; - sp34 = temp_t8; - if ((u32) arg9 < temp_t8) { - var_fp = arg9 - var_s3; - if (var_fp != 0) { - var_a1_2 = arg6; - var_f12 = (f32) argB; - var_f18 = (f32) var_a3 * arg5; - goto block_28; + if (arg9 < temp_lo + var_s3) { + var_s4 = arg9 - var_s3; + if (!var_s4) { + break; } } else { - var_fp = var_a3; - var_a1_2 = arg6; - var_f12 = (f32) argB; - var_f18 = (f32) var_a3 * arg5; -block_28: - if ((u32) arg6 < (u32) arg8) { - sp74 = var_a3; - sp78 = var_t0; -loop_30: - temp_s4 = sp78 + var_a1_2; - if ((u32) arg8 < temp_s4) { + var_s4 = temp_lo; + } + b = var_s4 * arg5; + for (var_a1_2 = arg6; var_a1_2 < arg8; var_a1_2 += var_t0) { + + if (arg8 < var_t0 + var_a1_2) { var_s2 = arg8 - var_a1_2; - if (var_s2 == 0) { - var_t0 = sp78; - var_a3 = sp74; - } else { - temp_v0 = (arg1 & 7) << 0x15; - var_t1 = temp_v0 | 0xFD000000 | 0x100000 | ((argD - 1) & 0xFFF); - temp_v1 = (sp6C & 0xF) << 0xE; - temp_a2 = (sp70 & 0xF) * 0x10; - var_t4 = temp_v1 | 0x07000000 | temp_a2; - var_s5 = (argB * 4) & 0xFFF; - var_a3_2 = (var_s3 * 4) & 0xFFF; - var_s6 = (var_s3 << 5) & 0xFFFF; - var_t0_2 = ((var_s3 + var_fp) * 4) & 0xFFF; - var_t2 = temp_v0 | 0xF5000000 | 0x100000; - var_f0 = (f32) var_ra; - var_f16 = (f32) sp78 * arg4; - var_s7 = (arg2 << 0x10) | (arg3 & 0xFFFF); - var_s0 = temp_v1 | temp_a2; - var_f10 = (f32) var_fp; - if (var_fp < 0) { - var_f10 += 4294967296.0f; - } - var_s1 = ((argB + (u32) (var_f10 * arg5)) * 4) & 0xFFF; - goto block_39; + if (!var_s2) { + break; } } else { - var_s2 = sp78; - temp_v0_2 = (arg1 & 7) << 0x15; - var_f0 = (f32) var_ra; - var_t1 = temp_v0_2 | 0xFD000000 | 0x100000 | ((argD - 1) & 0xFFF); - var_f16 = (f32) var_s2 * arg4; - temp_v1_2 = (sp6C & 0xF) << 0xE; - temp_a2_2 = (sp70 & 0xF) * 0x10; - var_t4 = temp_v1_2 | 0x07000000 | temp_a2_2; - var_f8 = (f32) var_fp; - var_t0_2 = ((var_s3 + var_fp) * 4) & 0xFFF; - var_a3_2 = (var_s3 * 4) & 0xFFF; - var_t2 = temp_v0_2 | 0xF5000000 | 0x100000; - var_s5 = (argB * 4) & 0xFFF; - var_s6 = (var_s3 << 5) & 0xFFFF; - var_s0 = temp_v1_2 | temp_a2_2; - var_s7 = (arg2 << 0x10) | (arg3 & 0xFFFF); - if (var_fp < 0) { - var_f8 += 4294967296.0f; - } - var_s1 = ((argB + (u32) (var_f8 * arg5)) * 4) & 0xFFF; -block_39: - var_a0->words.w0 = var_t1; - temp_a2_3 = var_a1_2 + var_s2; - var_a0->words.w1 = (u32) argC; - temp_a0 = var_a0 + 8; - temp_t3 = var_t2 | ((((u32) (((temp_a2_3 - var_a1_2) * 2) + 9) >> 3) & 0x1FF) << 9); - temp_a0_2 = temp_a0 + 8; - temp_t1 = ((var_a1_2 * 4) & 0xFFF) << 0xC; - temp_a0->words.w0 = temp_t3; - temp_a0->words.w1 = var_t4; - temp_a0_2->words.w0 = 0xE6000000; - temp_a0_3 = temp_a0_2 + 8; - temp_t2 = ((temp_a2_3 * 4) & 0xFFF) << 0xC; - temp_a0_2->words.w1 = 0; - temp_a0_3->words.w0 = temp_t1 | 0xF4000000 | var_a3_2; - temp_a0_4 = temp_a0_3 + 8; - temp_a0_3->words.w1 = temp_t2 | 0x07000000 | var_t0_2; - temp_a0_5 = temp_a0_4 + 8; - temp_a0_6 = temp_a0_5 + 8; - temp_a0_4->words.w0 = 0xE7000000; - temp_a0_4->words.w1 = 0; - temp_a0_7 = temp_a0_6 + 8; - temp_a0_5->words.w1 = var_s0; - temp_a0_5->words.w0 = temp_t3; - temp_a0_6->words.w1 = temp_t2 | var_t0_2; - temp_a0_6->words.w0 = temp_t1 | 0xF2000000 | var_a3_2; - temp_a0_8 = temp_a0_7 + 8; - temp_a0_9 = temp_a0_8 + 8; - temp_a0_7->words.w0 = ((((var_ra + (u32) ((f32) var_s2 * arg4)) * 4) & 0xFFF) << 0xC) | 0xE4000000 | var_s1; - temp_a0_7->words.w1 = (((var_ra * 4) & 0xFFF) << 0xC) | var_s5; - temp_a0_8->words.w0 = 0xB3000000; - temp_a0_8->words.w1 = (var_a1_2 << 0x15) | var_s6; - temp_a0_9->words.w0 = 0xB2000000; - temp_a0_9->words.w1 = var_s7; - var_ra = (s32) (var_f0 + var_f16); - var_a1_2 = (s32) temp_s4; - var_a0 = temp_a0_9 + 8; - if (temp_s4 >= (u32) arg8) { - var_t0 = sp78; - var_a3 = sp74; - } else { - goto loop_30; - } + var_s2 = var_t0; } - } - var_s3 = (s32) sp34; - var_ra = sp8C; - argB = (s32) (var_f12 + var_f18); - if ((u32) var_s3 < (u32) arg9) { - goto loop_24; - } - } - } - } - return var_a0; -} -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_800963F0.s") -#endif + a = var_s2 * arg4; + gDPLoadTextureTile(displayListHead++, argC, arg1, G_IM_SIZ_16b, argD, argE, + var_a1_2, var_s3, var_a1_2 + var_s2, var_s3 + var_s4, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, sp68, sp64, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(displayListHead++, argA * 4, argB * 4, (argA + a) * 4, (argB + b) * 4, 0, + (var_a1_2 * 32) & 0xFFFF, (var_s3 * 32) & 0xFFFF, arg2, arg3); + + argA += var_t0 * arg4; + } + + argA = sp7C; + argB += temp_lo * arg5; + } + return displayListHead; +} + +extern u8 D_0B002A00[]; #ifdef NON_MATCHING -// https://decomp.me/scratch/zyWcm -// I think I have the GIB macros right, but everything else is suspect +// https://decomp.me/scratch/xV83r +// Possibly a missed variable rename or just weird diffs. // I don't know what this actually meant to be. Its plausible that its meant to be a reference to `gTextureTitleChocoMountain` // That would be weird though because this function doesn't draw that picture at all. So its plausible that its instead // using it as some form semi-random data for the static pattern? -extern u8 D_0B002A00; // This function is responsible for drawing a near unnoticeable static pattern // over the course images when loading the cup selection screen // Try locking the word at `8018DC80` to see something like 0x20 just before confirming character selection to make it last longer -Gfx *func_80096CD8(Gfx *displayListHead, s32 arg1, s32 arg2, u32 width, u32 arg4) { - s32 spCC; - s32 masks; - s32 maskt; - UNUSED s32 temp_v1_2; - s32 var_fp; - s32 var_s1_2; - s32 var_s1_3; - s32 var_t5; - UNUSED s32 var_v0; - u32 temp_t2; - u32 temp_t6; - UNUSED s32 var_a1; - s32 var_ra; - s32 var_s1; - u32 var_s4_2; - s32 temp_v0; - var_ra = 1; - masks = 0; - maskt = 0; - if (width >= 2U) { - do { - var_ra *= 2; - } while ((u32) var_ra < width); +Gfx *func_80096CD8(Gfx *displayListHead, s32 arg1, s32 arg2, u32 width, u32 arg4) { + u32 var_s1_3; + u32 var_fp; + u32 var_v0; + u32 var_a1; + s32 var_ra = 1; + s32 spCC; + s32 masks = 0; + s32 maskt = 0; + s32 rand; + + while (var_ra < width) { + var_ra *= 2; } + spCC = 0x400 / var_ra; - if (arg4 < (u32) (spCC / 2)) { - do { - spCC /= 2; - } while (arg4 < (u32) spCC); + + while ((spCC / 2) < arg4) { + spCC /= 2; } - var_s1 = var_ra; - while (var_s1 >= 2) { - var_s1 /= 2; + + rand = var_ra; + while (rand > 1) { + rand /= 2; masks += 1; } - var_s1_2 = spCC; - while (var_s1_2 >= 2) { - var_s1_2 /= 2; + rand = spCC; + while (rand > 1) { + rand /= 2; maskt += 1; } + + if (arg1 < 0) { width -= arg1; arg1 = 0; - } else if ((arg1 + width) > 0x140) { - width = 0x140 - arg1; + } else if ((arg1 + width) > SCREEN_WIDTH) { + width = SCREEN_WIDTH - arg1; } if (arg2 < 0) { arg4 -= arg2; arg2 = 0; - } else if ((arg2 + arg4) > 0xF0) { - arg4 = 0xF0 - arg2; + } else if ((arg2 + arg4) > SCREEN_HEIGHT) { + arg4 = SCREEN_HEIGHT - arg2; } - if (width == 0) return displayListHead; - else if (arg4 == 0) return displayListHead; - else { - temp_v0 = random_int(0x0064U); - displayListHead = draw_box(displayListHead, arg1, arg2, arg1 + width, arg2 + arg4, 0, 0, 0, temp_v0); - temp_v0 += 0x96; - gDPPipeSync(displayListHead++); - gDPSetRenderMode(displayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2); - gDPSetPrimColor(displayListHead++, 0, 0, temp_v0, temp_v0, temp_v0, temp_v0); - gDPSetCombineMode(displayListHead++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - for (var_fp = arg2; (u32)var_fp < (arg2 + arg4); var_fp += spCC) { - var_t5 = spCC; - temp_t6 = var_fp + spCC; - if ((arg2 + arg4) < temp_t6) { - var_t5 = (arg2 + arg4) - var_fp; - if (var_t5 == 0) return displayListHead; - } - for (var_s1_3 = arg1; (u32)var_s1_3 < (arg1 + width); var_s1_3 += var_ra) { - var_s4_2 = var_ra; - temp_t2 = var_s1_3 + var_ra; - if ((arg1 + width) < temp_t2) { - var_s4_2 = (arg1 + width) - var_s1_3; - if (var_s4_2 == 0) return displayListHead; - } - gDPLoadTextureTile(displayListHead++, (random_int(0x0080U) * 2) + &D_0B002A00, G_IM_FMT_IA, G_IM_SIZ_16b, width, 0, - var_s1_3, var_fp, var_s1_3 + var_s4_2, var_fp + var_t5, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, masks, maskt, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(displayListHead++, var_s1_3 * 4, var_fp * 4, (var_s1_3 + var_s4_2) * 4, (var_fp + var_t5) * 4, 0, var_s1_3 << 5, var_fp << 5, 1024, 1024); - + if (width == 0) { return displayListHead; } + if (arg4 == 0) { return displayListHead; } + + + rand = random_int(100); + displayListHead = draw_box(displayListHead, arg1, arg2, arg1 + width, arg2 + arg4, 0, 0, 0, rand); + rand += 150; + gDPPipeSync(displayListHead++); + gDPSetRenderMode(displayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gDPSetPrimColor(displayListHead++, 0, 0, rand, rand, rand, rand); + gDPSetCombineMode(displayListHead++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + for (var_fp = arg2; var_fp < (arg2 + arg4); var_fp += spCC) { + if ((var_fp + spCC) > (arg2 + arg4)) { + var_v0 = (arg2 + arg4) - var_fp; + if (var_v0 == 0) { + break; } + } else { + var_v0 = spCC; + } + for (var_s1_3 = arg1; var_s1_3 < (arg1 + width); var_s1_3 += var_ra) { + if ((var_s1_3 + var_ra) > (arg1 + width)) { + var_a1 = (arg1 + width) - var_s1_3; + if (var_a1 == 0) { + break; + } + } else { + var_a1 = var_ra; + } + gDPLoadTextureTile(displayListHead++, D_0B002A00 + (random_int(128) * 2), G_IM_FMT_IA, G_IM_SIZ_16b, width, arg4, + var_s1_3, var_fp, var_s1_3 + var_a1, var_fp + var_v0, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, masks, maskt, G_TX_NOLOD, G_TX_NOLOD); + + gSPTextureRectangle(displayListHead++, var_s1_3 * 4, var_fp * 4, (var_s1_3 + var_a1) * 4, (var_fp + var_v0) * 4, 0, (var_s1_3 * 32) & 0xFFFF, (var_fp * 32) & 0xFFFF, 1024, 1024); + } } + return displayListHead; } #else GLOBAL_ASM("asm/non_matchings/code_80091750/func_80096CD8.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-01-2023 -extern ? D_000FFF00; -extern ? D_0B002A00; - -Gfx *func_80097274(Gfx *arg0, s8 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, u8 * arg9, s32 argA, u32 argB, u32 argC) { - u32 sp108; - s32 sp104; - s32 sp100; - s32 spFC; - s32 spF8; - s32 spF4; - s32 spF0; - s32 spEC; - u32 sp84; - u32 sp80; - u32 sp68; - u32 sp50; - s32 sp4C; - s32 sp48; - s32 sp44; - u32 sp40; - Gfx *temp_a0; - Gfx *temp_s0; - Gfx *temp_s0_10; - Gfx *temp_s0_11; - Gfx *temp_s0_12; - Gfx *temp_s0_13; - Gfx *temp_s0_14; - Gfx *temp_s0_15; - Gfx *temp_s0_16; - Gfx *temp_s0_17; - Gfx *temp_s0_18; - Gfx *temp_s0_19; - Gfx *temp_s0_20; - Gfx *temp_s0_2; - Gfx *temp_s0_3; - Gfx *temp_s0_4; - Gfx *temp_s0_5; - Gfx *temp_s0_6; - Gfx *temp_s0_7; - Gfx *temp_s0_8; - Gfx *temp_s0_9; - Gfx *var_s0; - s32 temp_a0_2; - s32 temp_a0_3; - s32 temp_a0_4; - s32 temp_a3; - s32 temp_at; - s32 temp_at_2; +#ifdef NON_MATCHING +Gfx *func_80097274(Gfx *displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, u16 *argA, u32 argB, u32 argC, s32 argD) { + u32 var_a1_2 = arg4; + u32 var_s3 = arg5; + s32 sp7C; + u32 var_s2; + u32 var_s4; + s32 var_t0 = 1; s32 temp_lo; - s32 temp_s2; - s32 temp_t6; - s32 temp_t6_2; - s32 temp_t8; - s32 temp_t8_2; - s32 temp_v0; - s32 temp_v0_2; - s32 temp_v0_3; - s32 temp_v1; - s32 temp_v1_2; - s32 temp_v1_3; - s32 var_a0; - s32 var_a2; - s32 var_a3; - s32 var_s3; - s32 var_s4; - s32 var_t3; - s32 var_t3_2; - s32 var_t4; - s32 var_t5; - s32 var_v0; - s32 var_v0_3; - s32 var_v0_4; - u32 temp_a1; - u32 temp_s1; - u32 temp_s5; - u32 temp_s6; - u32 temp_s7; - u32 temp_t6_3; - u32 temp_t9; - u32 temp_t9_2; - u32 var_a1; - u32 var_ra; - u32 var_t0; - u32 var_t2; - u32 var_t4_2; - u32 var_v0_2; + s32 sp68 = 0; + s32 sp64 = 0; + s32 var_v0_2; - temp_s0 = arg0 + 8; - arg0->words.w0 = 0xE7000000; - arg0->words.w1 = 0; - temp_s0_2 = temp_s0 + 8; - temp_s0->words.w0 = 0xBA001402; - temp_s0->words.w1 = (u32) &D_000FFF00; - temp_s0_3 = temp_s0_2 + 8; - temp_s0_2->words.w0 = 0xBA001001; - temp_s0_2->words.w1 = 0; - temp_s0_3->words.w0 = 0xFA000000; - temp_s0_4 = temp_s0_3 + 8; - var_t0 = 1; - var_t3 = 0; - var_t4 = 0; - temp_t8 = gGlobalTimer & 0xFF; - if ((gGlobalTimer < 0) && (temp_t8 != 0)) { + gDPPipeSync(displayListHead++); + gDPSetCycleType(displayListHead++, G_CYC_2CYCLE); + gDPSetTextureLOD(displayListHead++, G_TL_TILE); + gDPSetPrimColor(displayListHead++, 0, 0, 0, 0, 0, gGlobalTimer % 256); + gDPSetCombineLERP(displayListHead++, TEXEL1, TEXEL0, PRIMITIVE_ALPHA, TEXEL0, TEXEL1, TEXEL0, PRIMITIVE, TEXEL0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED); + while (var_t0 < argB) { + var_t0 *= 2; } - temp_s0_3->words.w1 = temp_t8 & 0xFF; - temp_s0_4->words.w1 = 0x1FFC9238; - temp_s0_4->words.w0 = 0xFC2527FF; - var_s0 = temp_s0_4 + 8; - if (argB >= 2U) { - do { - temp_t9 = var_t0 * 2; - var_t0 = temp_t9; - } while (temp_t9 < argB); - } - temp_lo = 0x400 / (s32) var_t0; - spF4 = temp_lo; - if (argC < (u32) (temp_lo / 2)) { - var_v0 = temp_lo / 2; - do { - temp_v1 = var_v0; - var_v0 = temp_v1 / 2; - } while (argC < (u32) var_v0); - spF4 = temp_v1; + + temp_lo = 0x400 / var_t0; + + while((temp_lo / 2) > argC) { + temp_lo /= 2; } + var_v0_2 = var_t0; - if ((s32) var_t0 >= 2) { - do { - temp_t6 = (s32) var_v0_2 / 2; - temp_at = temp_t6 < 2; - var_v0_2 = (u32) temp_t6; - var_t3 += 1; - } while (temp_at == 0); + while (var_v0_2 > 1) { + var_v0_2 /= 2; + sp68 += 1; } - var_v0_3 = spF4; - var_a0 = arg8; - if (var_v0_3 >= 2) { - do { - temp_t8_2 = var_v0_3 / 2; - temp_at_2 = temp_t8_2 < 2; - var_v0_3 = temp_t8_2; - var_t4 += 1; - } while (temp_at_2 == 0); - } - if (var_a0 < 0) { - arg4 -= var_a0; - var_a0 = 0; - } else if (((arg6 - arg4) + var_a0) >= 0x141) { - arg6 = (arg4 - var_a0) + 0x140; - } - temp_t6_2 = arg9; - var_v0_4 = arg5; - if (temp_t6_2 < 0) { - arg9 = 0; - var_v0_4 = arg5 - temp_t6_2; - } else if (((arg7 - var_v0_4) + arg9) >= 0xF1) { - arg7 = (var_v0_4 - arg9) + 0xF0; - } - if (arg6 < arg4) { - return var_s0; - } - if (arg7 < var_v0_4) { - return var_s0; - } - sp104 = var_a0; - var_t5 = var_v0_4; - if ((u32) var_v0_4 < (u32) arg7) { - arg8 = var_a0; - spF8 = (s32) var_t0; - spF0 = var_t3; - spEC = var_t4; -loop_27: - temp_t6_3 = spF4 + var_t5; - sp84 = temp_t6_3; - if ((u32) arg7 < temp_t6_3) { - temp_v0 = arg7 - var_t5; - spFC = temp_v0; - if (temp_v0 != 0) { - goto block_31; - } - } else { - spFC = spF4; -block_31: - var_s4 = arg4; - if ((u32) arg4 < (u32) arg6) { -loop_33: - temp_t9_2 = spF8 + var_s4; - sp80 = temp_t9_2; - if ((u32) arg6 < temp_t9_2) { - var_t3_2 = arg6 - var_s4; - if (var_t3_2 != 0) { - temp_a0_2 = (arg1 & 7) << 0x15; - var_a1 = temp_a0_2 | 0xFD000000 | 0x100000 | ((argB - 1) & 0xFFF); - temp_v0_2 = (spEC & 0xF) << 0xE; - temp_v1_2 = (spF0 & 0xF) * 0x10; - var_a2 = (var_t5 * 4) & 0xFFF; - var_s3 = ((var_t5 + spFC) * 4) & 0xFFF; - var_t4_2 = temp_v0_2 | 0x07000000 | temp_v1_2; - var_a3 = temp_a0_2 | 0xF5000000 | 0x100000; - var_ra = temp_v0_2 | 0x01000000 | temp_v1_2; - sp4C = ((arg9 + spFC) * 4) & 0xFFF; - sp44 = (var_t5 << 5) & 0xFFFF; - sp48 = (arg9 * 4) & 0xFFF; - sp40 = (arg2 << 0x10) | (arg3 & 0xFFFF); - var_t2 = temp_v0_2 | temp_v1_2; - goto block_37; - } - } else { - temp_a0_3 = (arg1 & 7) << 0x15; - var_a1 = temp_a0_3 | 0xFD000000 | 0x100000 | ((argB - 1) & 0xFFF); - temp_v0_3 = (spEC & 0xF) << 0xE; - temp_v1_3 = (spF0 & 0xF) * 0x10; - var_a2 = (var_t5 * 4) & 0xFFF; - var_s3 = ((var_t5 + spFC) * 4) & 0xFFF; - var_t4_2 = temp_v0_3 | 0x07000000 | temp_v1_3; - var_a3 = temp_a0_3 | 0xF5000000 | 0x100000; - var_ra = temp_v0_3 | 0x01000000 | temp_v1_3; - sp4C = ((arg9 + spFC) * 4) & 0xFFF; - sp44 = (var_t5 << 5) & 0xFFFF; - sp48 = (arg9 * 4) & 0xFFF; - sp40 = (arg2 << 0x10) | (arg3 & 0xFFFF); - var_t2 = temp_v0_3 | temp_v1_3; - var_t3_2 = spF8; -block_37: - var_s0->words.w0 = var_a1; - temp_a0_4 = var_s4 + var_t3_2; - var_s0->words.w1 = (u32) argA; - temp_s0_5 = var_s0 + 8; - temp_s1 = var_a3 | ((((u32) (((temp_a0_4 - var_s4) * 2) + 9) >> 3) & 0x1FF) << 9); - temp_s0_6 = temp_s0_5 + 8; - temp_s0_5->words.w0 = temp_s1; - temp_s0_5->words.w1 = var_t4_2; - temp_s0_6->words.w0 = 0xE6000000; - temp_a3 = ((var_s4 * 4) & 0xFFF) << 0xC; - temp_s0_7 = temp_s0_6 + 8; - temp_s2 = ((temp_a0_4 * 4) & 0xFFF) << 0xC; - temp_s0_6->words.w1 = 0; - temp_s6 = temp_s2 | 0x07000000 | var_s3; - temp_s0_8 = temp_s0_7 + 8; - temp_s5 = temp_a3 | 0xF4000000 | var_a2; - temp_s0_7->words.w0 = temp_s5; - temp_s0_7->words.w1 = temp_s6; - temp_s0_9 = temp_s0_8 + 8; - temp_s0_8->words.w0 = 0xE7000000; - temp_s0_10 = temp_s0_9 + 8; - temp_s0_8->words.w1 = 0; - temp_s0_9->words.w1 = var_t2; - temp_s0_9->words.w0 = temp_s1; - temp_s7 = temp_a3 | 0xF2000000 | var_a2; - temp_s0_11 = temp_s0_10 + 8; - temp_s0_10->words.w1 = temp_s2 | var_s3; - temp_s0_10->words.w0 = temp_s7; - temp_s0_11->words.w0 = var_a1; - sp50 = var_ra; - sp108 = (u32) var_t5; - sp68 = var_t4_2; - sp100 = var_t3_2; - temp_s0_12 = temp_s0_11 + 8; - temp_s0_11->words.w1 = (u32) ((random_int(0x0080U) * 2) + &D_0B002A00); - temp_s0_13 = temp_s0_12 + 8; - temp_a1 = temp_s1 | 0x100; - temp_s0_12->words.w0 = temp_a1; - temp_s0_12->words.w1 = var_t4_2; - temp_s0_14 = temp_s0_13 + 8; - temp_s0_13->words.w0 = 0xE6000000; - temp_s0_15 = temp_s0_14 + 8; - temp_s0_13->words.w1 = 0; - temp_s0_14->words.w1 = temp_s6; - temp_s0_14->words.w0 = temp_s5; - temp_s0_16 = temp_s0_15 + 8; - temp_s0_15->words.w0 = 0xE7000000; - temp_s0_15->words.w1 = 0; - temp_s0_16->words.w0 = temp_a1; - temp_s0_16->words.w1 = var_ra; - temp_s0_17 = temp_s0_16 + 8; - temp_s0_17->words.w1 = temp_s2 | 0x01000000 | var_s3; - temp_s0_17->words.w0 = temp_s7; - temp_s0_18 = temp_s0_17 + 8; - temp_s0_18->words.w0 = ((((arg8 + var_t3_2) * 4) & 0xFFF) << 0xC) | 0xE4000000 | sp4C; - temp_s0_19 = temp_s0_18 + 8; - temp_s0_18->words.w1 = (((arg8 * 4) & 0xFFF) << 0xC) | sp48; - temp_s0_19->words.w0 = 0xB3000000; - temp_s0_20 = temp_s0_19 + 8; - temp_s0_19->words.w1 = (var_s4 << 0x15) | sp44; - temp_s0_20->words.w0 = 0xB2000000; - var_s0 = temp_s0_20 + 8; - temp_s0_20->words.w1 = sp40; - var_s4 = (s32) sp80; - arg8 += spF8; - if ((u32) var_s4 >= (u32) arg6) { + var_v0_2 = temp_lo; - } else { - goto loop_33; - } - } - } - var_t5 = (s32) sp84; - arg8 = sp104; - arg9 += spF4; - if ((u32) var_t5 < (u32) arg7) { - goto loop_27; - } - } + while (var_v0_2 > 1) { + var_v0_2 /= 2; + sp64 += 1; } - temp_a0 = var_s0 + 8; - var_s0->words.w0 = 0xE7000000; - var_s0->words.w1 = 0; - temp_a0->words.w0 = 0xBA001402; - temp_a0->words.w1 = 0; - return temp_a0 + 8; + + if (arg8 < 0) { + arg4 -= arg8; + arg8 = 0; + } else if (((arg6 - arg4) + arg8) > SCREEN_WIDTH) { + arg6 = (arg4 - arg8) + SCREEN_WIDTH; + } + + if (arg9 < 0) { + arg5 -= arg9; + arg9 = 0; + } else if (((arg7 - arg5) + arg9) > SCREEN_HEIGHT) { + arg7 = (arg5 - arg9) + SCREEN_HEIGHT; + } + + if (arg6 < arg4) { + return displayListHead; + } + if (arg7 < arg5) { + return displayListHead; + + } + sp7C = arg8; + for (var_s3 = arg5; var_s3 < arg7; var_s3 += temp_lo) { + + if (arg7 < temp_lo + var_s3) { + var_s4 = arg7 - var_s3; + if (!var_s4) { + break; + } + } else { + var_s4 = temp_lo; + } + + for (var_a1_2 = arg4; var_a1_2 < arg6; var_a1_2 += var_t0) { + + if (arg6 < var_t0 + var_a1_2) { + var_s2 = arg6 - var_a1_2; + if (!var_s2) { + break; + } + } else { + var_s2 = var_t0; + } + + gDPLoadMultiTile(displayListHead++, arg1, 0, G_TX_RENDERTILE, arg2, G_IM_SIZ_16b, + argB, argC, var_a1_2, var_s3, var_a1_2 + var_s2, var_s3 + var_s4, 0, + G_TX_WRAP, G_TX_WRAP, sp68, sp64, G_TX_NOLOD, G_TX_NOLOD); + + + gDPLoadMultiTile(displayListHead++, D_0B002A00 + random_int(128) * 2, 256, G_TX_RENDERTILE+1, arg2, G_IM_SIZ_16b, + argB, argC, var_a1_2, var_s3, var_a1_2 + var_s2, var_s3 + var_s4, 0, + G_TX_WRAP, G_TX_WRAP, sp68, sp64, G_TX_NOLOD, G_TX_NOLOD); + + gSPTextureRectangle(displayListHead++, arg8 * 4, arg9 * 4, (arg8 + var_s2) * 4, (arg9 + var_s4) * 4, 0, + (var_a1_2 * 32) & 0xFFFF, (var_s3 * 32) & 0xFFFF, arg2, arg3); + + arg8 += var_t0; + } + + arg8 = sp7C; + arg9 += temp_lo; + } + gDPPipeSync(displayListHead++); + gDPSetCycleType(displayListHead++, G_CYC_1CYCLE); + return displayListHead; } #else GLOBAL_ASM("asm/non_matchings/code_80091750/func_80097274.s") @@ -4018,7 +3460,7 @@ Gfx *draw_box_fill(Gfx *displayListHead, s32 ulx, s32 uly, s32 lrx, s32 lry, s32 } // draw a box with a solid outline -Gfx *draw_box(Gfx *displayListHead, s32 ulx, s32 uly, s32 lrx, s32 lry, s32 red, s32 green, s32 blue, s32 alpha) { +Gfx *draw_box(Gfx *displayListHead, s32 ulx, s32 uly, s32 lrx, s32 lry, u32 red, u32 green, u32 blue, u32 alpha) { red &= 0xFF; green &= 0xFF; blue &= 0xFF; diff --git a/src/code_80091750.h b/src/code_80091750.h index 98e145aa4..a0eed9a7c 100644 --- a/src/code_80091750.h +++ b/src/code_80091750.h @@ -159,14 +159,14 @@ Gfx *func_80095BD0(Gfx*, u8*, f32, f32, u32, u32, f32, f32); Gfx *func_80095E10(Gfx*, s8, s32, s32, s32, s32, s32, s32, s32, s32, u8 *, u32, u32); Gfx *func_800963F0(Gfx*, s8, s32, s32, f32, f32, s32, s32, s32, s32, s32, s32, u8 *, u32, u32); Gfx *func_80096CD8(Gfx*, s32, s32, u32, u32); -Gfx *func_80097274(Gfx*, s8, s32, s32, s32, s32, s32, s32, s32, s32, u8 *, u32, u32, u32); +Gfx *func_80097274(Gfx *displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, u16 *argA, u32 argB, u32 argC, s32 argD); Gfx *func_80097A14(Gfx*, s8, s32, s32, s32, s32, s32, s32, u8*, u32, u32); Gfx *func_80097AE4(Gfx*, s8, s32, s32, u8*, s32); Gfx *func_80097E58(Gfx*, s8, s32, s32, s32, s32, s32, s32, u8*, u32, s32, u32); Gfx *func_80098558(Gfx*, u32, u32, u32, u32, u32, u32, s32, s32); Gfx *func_800987D0(Gfx*, u32, u32, u32, u32, s32, s32, u8*, u32, s32); Gfx *draw_box_fill(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32); -Gfx *draw_box(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32); +Gfx *draw_box(Gfx*, s32, s32, s32, s32, u32, u32, u32, u32); Gfx *func_80098FC8(Gfx*, s32, s32, s32, s32); void dma_copy_base_729a30(u64*, size_t, void*); void dma_copy_base_7fa3c0(u64*, size_t, void*);