Match 4 functions in math_util, do some tidying up of imports for math_util (#144)

* Match func_802B5450, func_802B5F00, func_802B71CC

* Match func_802B4FF8

Also do some import fixing

Signed-off-by: Taggerung <tyler.taggerung@gmail.com>
This commit is contained in:
Tyler McGavran 2022-01-18 07:46:58 -05:00 committed by GitHub
parent 5e577b8999
commit e413e2ec00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 118 additions and 647 deletions

View File

@ -1,132 +0,0 @@
glabel func_802B4FF8
/* 11E608 802B4FF8 3C068015 */ lui $a2, %hi(D_80150112) # $a2, 0x8015
/* 11E60C 802B4FFC 24C60112 */ addiu $a2, %lo(D_80150112) # addiu $a2, $a2, 0x112
/* 11E610 802B5000 94C20000 */ lhu $v0, ($a2)
/* 11E614 802B5004 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 11E618 802B5008 AFBF0014 */ sw $ra, 0x14($sp)
/* 11E61C 802B500C 28410080 */ slti $at, $v0, 0x80
/* 11E620 802B5010 AFA40018 */ sw $a0, 0x18($sp)
/* 11E624 802B5014 14200003 */ bnez $at, .L802B5024
/* 11E628 802B5018 00A03825 */ move $a3, $a1
/* 11E62C 802B501C 1000006E */ b .L802B51D8
/* 11E630 802B5020 00001025 */ move $v0, $zero
.L802B5024:
/* 11E634 802B5024 3C088015 */ lui $t0, %hi(gGfxPool) # $t0, 0x8015
/* 11E638 802B5028 2508EF40 */ addiu $t0, %lo(gGfxPool) # addiu $t0, $t0, -0x10c0
/* 11E63C 802B502C 8D0E0000 */ lw $t6, ($t0)
/* 11E640 802B5030 00027980 */ sll $t7, $v0, 6
/* 11E644 802B5034 3409CAC0 */ li $t1, 51904
/* 11E648 802B5038 01CFC021 */ addu $t8, $t6, $t7
/* 11E64C 802B503C 03092021 */ addu $a0, $t8, $t1
/* 11E650 802B5040 8FA50018 */ lw $a1, 0x18($sp)
/* 11E654 802B5044 0C0ADD7E */ jal func_802B75F8
/* 11E658 802B5048 AFA7001C */ sw $a3, 0x1c($sp)
/* 11E65C 802B504C 8FA7001C */ lw $a3, 0x1c($sp)
/* 11E660 802B5050 3C068015 */ lui $a2, %hi(D_80150112) # $a2, 0x8015
/* 11E664 802B5054 3C088015 */ lui $t0, %hi(gGfxPool) # $t0, 0x8015
/* 11E668 802B5058 2508EF40 */ addiu $t0, %lo(gGfxPool) # addiu $t0, $t0, -0x10c0
/* 11E66C 802B505C 24C60112 */ addiu $a2, %lo(D_80150112) # addiu $a2, $a2, 0x112
/* 11E670 802B5060 10E0000C */ beqz $a3, .L802B5094
/* 11E674 802B5064 3409CAC0 */ li $t1, 51904
/* 11E678 802B5068 24010001 */ li $at, 1
/* 11E67C 802B506C 10E1001E */ beq $a3, $at, .L802B50E8
/* 11E680 802B5070 3C048015 */ lui $a0, %hi(gDisplayListHead) # 0x8015
/* 11E684 802B5074 24010002 */ li $at, 2
/* 11E688 802B5078 10E10043 */ beq $a3, $at, .L802B5188
/* 11E68C 802B507C 3C048015 */ lui $a0, %hi(gDisplayListHead) # 0x8015
/* 11E690 802B5080 24010003 */ li $at, 3
/* 11E694 802B5084 10E1002C */ beq $a3, $at, .L802B5138
/* 11E698 802B5088 3C048015 */ lui $a0, %hi(gDisplayListHead) # 0x8015
/* 11E69C 802B508C 10000052 */ b .L802B51D8
/* 11E6A0 802B5090 24020001 */ li $v0, 1
.L802B5094:
/* 11E6A4 802B5094 3C048015 */ lui $a0, %hi(gDisplayListHead) # $a0, 0x8015
/* 11E6A8 802B5098 24840298 */ addiu $a0, %lo(gDisplayListHead) # addiu $a0, $a0, 0x298
/* 11E6AC 802B509C 8C820000 */ lw $v0, ($a0)
/* 11E6B0 802B50A0 3C0A0102 */ lui $t2, (0x01020040 >> 16) # lui $t2, 0x102
/* 11E6B4 802B50A4 354A0040 */ ori $t2, (0x01020040 & 0xFFFF) # ori $t2, $t2, 0x40
/* 11E6B8 802B50A8 24590008 */ addiu $t9, $v0, 8
/* 11E6BC 802B50AC AC990000 */ sw $t9, ($a0)
/* 11E6C0 802B50B0 AC4A0000 */ sw $t2, ($v0)
/* 11E6C4 802B50B4 94CC0000 */ lhu $t4, ($a2)
/* 11E6C8 802B50B8 8D0B0000 */ lw $t3, ($t0)
/* 11E6CC 802B50BC 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff
/* 11E6D0 802B50C0 000C6980 */ sll $t5, $t4, 6
/* 11E6D4 802B50C4 016D7021 */ addu $t6, $t3, $t5
/* 11E6D8 802B50C8 01C97821 */ addu $t7, $t6, $t1
/* 11E6DC 802B50CC 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 11E6E0 802B50D0 01E1C024 */ and $t8, $t7, $at
/* 11E6E4 802B50D4 AC580004 */ sw $t8, 4($v0)
/* 11E6E8 802B50D8 94D90000 */ lhu $t9, ($a2)
/* 11E6EC 802B50DC 272A0001 */ addiu $t2, $t9, 1
/* 11E6F0 802B50E0 1000003C */ b .L802B51D4
/* 11E6F4 802B50E4 A4CA0000 */ sh $t2, ($a2)
.L802B50E8:
/* 11E6F8 802B50E8 24840298 */ addiu $a0, $a0, %lo(gDisplayListHead) # 0x298
/* 11E6FC 802B50EC 8C820000 */ lw $v0, ($a0)
/* 11E700 802B50F0 3C0B0106 */ lui $t3, (0x01060040 >> 16) # lui $t3, 0x106
/* 11E704 802B50F4 356B0040 */ ori $t3, (0x01060040 & 0xFFFF) # ori $t3, $t3, 0x40
/* 11E708 802B50F8 244C0008 */ addiu $t4, $v0, 8
/* 11E70C 802B50FC AC8C0000 */ sw $t4, ($a0)
/* 11E710 802B5100 AC4B0000 */ sw $t3, ($v0)
/* 11E714 802B5104 94CE0000 */ lhu $t6, ($a2)
/* 11E718 802B5108 8D0D0000 */ lw $t5, ($t0)
/* 11E71C 802B510C 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff
/* 11E720 802B5110 000E7980 */ sll $t7, $t6, 6
/* 11E724 802B5114 01AFC021 */ addu $t8, $t5, $t7
/* 11E728 802B5118 0309C821 */ addu $t9, $t8, $t1
/* 11E72C 802B511C 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 11E730 802B5120 03215024 */ and $t2, $t9, $at
/* 11E734 802B5124 AC4A0004 */ sw $t2, 4($v0)
/* 11E738 802B5128 94CC0000 */ lhu $t4, ($a2)
/* 11E73C 802B512C 258B0001 */ addiu $t3, $t4, 1
/* 11E740 802B5130 10000028 */ b .L802B51D4
/* 11E744 802B5134 A4CB0000 */ sh $t3, ($a2)
.L802B5138:
/* 11E748 802B5138 24840298 */ addiu $a0, $a0, %lo(gDisplayListHead) # 0x298
/* 11E74C 802B513C 8C820000 */ lw $v0, ($a0)
/* 11E750 802B5140 3C0D0104 */ lui $t5, (0x01040040 >> 16) # lui $t5, 0x104
/* 11E754 802B5144 35AD0040 */ ori $t5, (0x01040040 & 0xFFFF) # ori $t5, $t5, 0x40
/* 11E758 802B5148 244E0008 */ addiu $t6, $v0, 8
/* 11E75C 802B514C AC8E0000 */ sw $t6, ($a0)
/* 11E760 802B5150 AC4D0000 */ sw $t5, ($v0)
/* 11E764 802B5154 94D80000 */ lhu $t8, ($a2)
/* 11E768 802B5158 8D0F0000 */ lw $t7, ($t0)
/* 11E76C 802B515C 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff
/* 11E770 802B5160 0018C980 */ sll $t9, $t8, 6
/* 11E774 802B5164 01F95021 */ addu $t2, $t7, $t9
/* 11E778 802B5168 01496021 */ addu $t4, $t2, $t1
/* 11E77C 802B516C 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 11E780 802B5170 01815824 */ and $t3, $t4, $at
/* 11E784 802B5174 AC4B0004 */ sw $t3, 4($v0)
/* 11E788 802B5178 94CE0000 */ lhu $t6, ($a2)
/* 11E78C 802B517C 25CD0001 */ addiu $t5, $t6, 1
/* 11E790 802B5180 10000014 */ b .L802B51D4
/* 11E794 802B5184 A4CD0000 */ sh $t5, ($a2)
.L802B5188:
/* 11E798 802B5188 24840298 */ addiu $a0, $a0, %lo(gDisplayListHead) # 0x298
/* 11E79C 802B518C 8C820000 */ lw $v0, ($a0)
/* 11E7A0 802B5190 3C0F0100 */ lui $t7, (0x01000040 >> 16) # lui $t7, 0x100
/* 11E7A4 802B5194 35EF0040 */ ori $t7, (0x01000040 & 0xFFFF) # ori $t7, $t7, 0x40
/* 11E7A8 802B5198 24580008 */ addiu $t8, $v0, 8
/* 11E7AC 802B519C AC980000 */ sw $t8, ($a0)
/* 11E7B0 802B51A0 AC4F0000 */ sw $t7, ($v0)
/* 11E7B4 802B51A4 94CA0000 */ lhu $t2, ($a2)
/* 11E7B8 802B51A8 8D190000 */ lw $t9, ($t0)
/* 11E7BC 802B51AC 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff
/* 11E7C0 802B51B0 000A6180 */ sll $t4, $t2, 6
/* 11E7C4 802B51B4 032C5821 */ addu $t3, $t9, $t4
/* 11E7C8 802B51B8 01697021 */ addu $t6, $t3, $t1
/* 11E7CC 802B51BC 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 11E7D0 802B51C0 01C16824 */ and $t5, $t6, $at
/* 11E7D4 802B51C4 AC4D0004 */ sw $t5, 4($v0)
/* 11E7D8 802B51C8 94D80000 */ lhu $t8, ($a2)
/* 11E7DC 802B51CC 270F0001 */ addiu $t7, $t8, 1
/* 11E7E0 802B51D0 A4CF0000 */ sh $t7, ($a2)
.L802B51D4:
/* 11E7E4 802B51D4 24020001 */ li $v0, 1
.L802B51D8:
/* 11E7E8 802B51D8 8FBF0014 */ lw $ra, 0x14($sp)
/* 11E7EC 802B51DC 27BD0018 */ addiu $sp, $sp, 0x18
/* 11E7F0 802B51E0 03E00008 */ jr $ra
/* 11E7F4 802B51E4 00000000 */ nop

View File

@ -1,54 +0,0 @@
glabel func_802B5450
/* 11EA60 802B5450 C4C40000 */ lwc1 $f4, ($a2)
/* 11EA64 802B5454 C4860030 */ lwc1 $f6, 0x30($a0)
/* 11EA68 802B5458 46062200 */ add.s $f8, $f4, $f6
/* 11EA6C 802B545C E4A80030 */ swc1 $f8, 0x30($a1)
/* 11EA70 802B5460 C4900034 */ lwc1 $f16, 0x34($a0)
/* 11EA74 802B5464 C4CA0004 */ lwc1 $f10, 4($a2)
/* 11EA78 802B5468 46105480 */ add.s $f18, $f10, $f16
/* 11EA7C 802B546C E4B20034 */ swc1 $f18, 0x34($a1)
/* 11EA80 802B5470 C4860038 */ lwc1 $f6, 0x38($a0)
/* 11EA84 802B5474 C4C40008 */ lwc1 $f4, 8($a2)
/* 11EA88 802B5478 46062200 */ add.s $f8, $f4, $f6
/* 11EA8C 802B547C E4A80038 */ swc1 $f8, 0x38($a1)
/* 11EA90 802B5480 C48A003C */ lwc1 $f10, 0x3c($a0)
/* 11EA94 802B5484 E4AA003C */ swc1 $f10, 0x3c($a1)
/* 11EA98 802B5488 C4900000 */ lwc1 $f16, ($a0)
/* 11EA9C 802B548C E4B00000 */ swc1 $f16, ($a1)
/* 11EAA0 802B5490 C4920004 */ lwc1 $f18, 4($a0)
/* 11EAA4 802B5494 E4B20004 */ swc1 $f18, 4($a1)
/* 11EAA8 802B5498 C4840008 */ lwc1 $f4, 8($a0)
/* 11EAAC 802B549C E4A40008 */ swc1 $f4, 8($a1)
/* 11EAB0 802B54A0 C486000C */ lwc1 $f6, 0xc($a0)
/* 11EAB4 802B54A4 E4A6000C */ swc1 $f6, 0xc($a1)
/* 11EAB8 802B54A8 C4880010 */ lwc1 $f8, 0x10($a0)
/* 11EABC 802B54AC E4A80010 */ swc1 $f8, 0x10($a1)
/* 11EAC0 802B54B0 C48A0014 */ lwc1 $f10, 0x14($a0)
/* 11EAC4 802B54B4 E4AA0014 */ swc1 $f10, 0x14($a1)
/* 11EAC8 802B54B8 C4900018 */ lwc1 $f16, 0x18($a0)
/* 11EACC 802B54BC E4B00018 */ swc1 $f16, 0x18($a1)
/* 11EAD0 802B54C0 C492001C */ lwc1 $f18, 0x1c($a0)
/* 11EAD4 802B54C4 E4B2001C */ swc1 $f18, 0x1c($a1)
/* 11EAD8 802B54C8 C4840020 */ lwc1 $f4, 0x20($a0)
/* 11EADC 802B54CC E4A40020 */ swc1 $f4, 0x20($a1)
/* 11EAE0 802B54D0 C4860024 */ lwc1 $f6, 0x24($a0)
/* 11EAE4 802B54D4 E4A60024 */ swc1 $f6, 0x24($a1)
/* 11EAE8 802B54D8 C4880028 */ lwc1 $f8, 0x28($a0)
/* 11EAEC 802B54DC E4A80028 */ swc1 $f8, 0x28($a1)
/* 11EAF0 802B54E0 C48A002C */ lwc1 $f10, 0x2c($a0)
/* 11EAF4 802B54E4 03E00008 */ jr $ra
/* 11EAF8 802B54E8 E4AA002C */ swc1 $f10, 0x2c($a1)
/* 11EAFC 802B54EC C4C40000 */ lwc1 $f4, ($a2)
/* 11EB00 802B54F0 C4860030 */ lwc1 $f6, 0x30($a0)
/* 11EB04 802B54F4 46062200 */ add.s $f8, $f4, $f6
/* 11EB08 802B54F8 E4A80030 */ swc1 $f8, 0x30($a1)
/* 11EB0C 802B54FC C4900034 */ lwc1 $f16, 0x34($a0)
/* 11EB10 802B5500 C4CA0004 */ lwc1 $f10, 4($a2)
/* 11EB14 802B5504 46105480 */ add.s $f18, $f10, $f16
/* 11EB18 802B5508 E4B20034 */ swc1 $f18, 0x34($a1)
/* 11EB1C 802B550C C4860038 */ lwc1 $f6, 0x38($a0)
/* 11EB20 802B5510 C4C40008 */ lwc1 $f4, 8($a2)
/* 11EB24 802B5514 46062200 */ add.s $f8, $f4, $f6
/* 11EB28 802B5518 03E00008 */ jr $ra
/* 11EB2C 802B551C E4A80038 */ swc1 $f8, 0x38($a1)

View File

@ -1,30 +0,0 @@
glabel func_802B5F00
/* 11F510 802B5F00 44856000 */ mtc1 $a1, $f12
/* 11F514 802B5F04 C4840000 */ lwc1 $f4, ($a0)
/* 11F518 802B5F08 C4880010 */ lwc1 $f8, 0x10($a0)
/* 11F51C 802B5F0C C4900020 */ lwc1 $f16, 0x20($a0)
/* 11F520 802B5F10 460C2182 */ mul.s $f6, $f4, $f12
/* 11F524 802B5F14 C4840004 */ lwc1 $f4, 4($a0)
/* 11F528 802B5F18 460C4282 */ mul.s $f10, $f8, $f12
/* 11F52C 802B5F1C C4880014 */ lwc1 $f8, 0x14($a0)
/* 11F530 802B5F20 460C8482 */ mul.s $f18, $f16, $f12
/* 11F534 802B5F24 E4860000 */ swc1 $f6, ($a0)
/* 11F538 802B5F28 C4900024 */ lwc1 $f16, 0x24($a0)
/* 11F53C 802B5F2C 460C2182 */ mul.s $f6, $f4, $f12
/* 11F540 802B5F30 E48A0010 */ swc1 $f10, 0x10($a0)
/* 11F544 802B5F34 C4840008 */ lwc1 $f4, 8($a0)
/* 11F548 802B5F38 460C4282 */ mul.s $f10, $f8, $f12
/* 11F54C 802B5F3C E4920020 */ swc1 $f18, 0x20($a0)
/* 11F550 802B5F40 C4880018 */ lwc1 $f8, 0x18($a0)
/* 11F554 802B5F44 460C8482 */ mul.s $f18, $f16, $f12
/* 11F558 802B5F48 E4860004 */ swc1 $f6, 4($a0)
/* 11F55C 802B5F4C C4900028 */ lwc1 $f16, 0x28($a0)
/* 11F560 802B5F50 460C2182 */ mul.s $f6, $f4, $f12
/* 11F564 802B5F54 E48A0014 */ swc1 $f10, 0x14($a0)
/* 11F568 802B5F58 460C4282 */ mul.s $f10, $f8, $f12
/* 11F56C 802B5F5C E4920024 */ swc1 $f18, 0x24($a0)
/* 11F570 802B5F60 460C8482 */ mul.s $f18, $f16, $f12
/* 11F574 802B5F64 E4860008 */ swc1 $f6, 8($a0)
/* 11F578 802B5F68 E48A0018 */ swc1 $f10, 0x18($a0)
/* 11F57C 802B5F6C 03E00008 */ jr $ra
/* 11F580 802B5F70 E4920028 */ swc1 $f18, 0x28($a0)

View File

@ -1,268 +0,0 @@
glabel func_802B71CC
/* 1207DC 802B71CC 27BDFFA0 */ addiu $sp, $sp, -0x60
/* 1207E0 802B71D0 AFBF001C */ sw $ra, 0x1c($sp)
/* 1207E4 802B71D4 AFB00018 */ sw $s0, 0x18($sp)
/* 1207E8 802B71D8 C4C60000 */ lwc1 $f6, ($a2)
/* 1207EC 802B71DC C4A40000 */ lwc1 $f4, ($a1)
/* 1207F0 802B71E0 C4D00010 */ lwc1 $f16, 0x10($a2)
/* 1207F4 802B71E4 C4AA0004 */ lwc1 $f10, 4($a1)
/* 1207F8 802B71E8 46062202 */ mul.s $f8, $f4, $f6
/* 1207FC 802B71EC C4A60008 */ lwc1 $f6, 8($a1)
/* 120800 802B71F0 46105482 */ mul.s $f18, $f10, $f16
/* 120804 802B71F4 C4CA0020 */ lwc1 $f10, 0x20($a2)
/* 120808 802B71F8 460A3402 */ mul.s $f16, $f6, $f10
/* 12080C 802B71FC C4A6000C */ lwc1 $f6, 0xc($a1)
/* 120810 802B7200 46124100 */ add.s $f4, $f8, $f18
/* 120814 802B7204 C4D20030 */ lwc1 $f18, 0x30($a2)
/* 120818 802B7208 46069282 */ mul.s $f10, $f18, $f6
/* 12081C 802B720C 46102200 */ add.s $f8, $f4, $f16
/* 120820 802B7210 46085100 */ add.s $f4, $f10, $f8
/* 120824 802B7214 E7A40020 */ swc1 $f4, 0x20($sp)
/* 120828 802B7218 C4D20004 */ lwc1 $f18, 4($a2)
/* 12082C 802B721C C4B00000 */ lwc1 $f16, ($a1)
/* 120830 802B7220 C4C80014 */ lwc1 $f8, 0x14($a2)
/* 120834 802B7224 C4AA0004 */ lwc1 $f10, 4($a1)
/* 120838 802B7228 46128182 */ mul.s $f6, $f16, $f18
/* 12083C 802B722C C4B20008 */ lwc1 $f18, 8($a1)
/* 120840 802B7230 46085102 */ mul.s $f4, $f10, $f8
/* 120844 802B7234 C4CA0024 */ lwc1 $f10, 0x24($a2)
/* 120848 802B7238 460A9202 */ mul.s $f8, $f18, $f10
/* 12084C 802B723C C4B2000C */ lwc1 $f18, 0xc($a1)
/* 120850 802B7240 46043400 */ add.s $f16, $f6, $f4
/* 120854 802B7244 C4C40034 */ lwc1 $f4, 0x34($a2)
/* 120858 802B7248 46122282 */ mul.s $f10, $f4, $f18
/* 12085C 802B724C 46088180 */ add.s $f6, $f16, $f8
/* 120860 802B7250 46065400 */ add.s $f16, $f10, $f6
/* 120864 802B7254 E7B00024 */ swc1 $f16, 0x24($sp)
/* 120868 802B7258 C4C40008 */ lwc1 $f4, 8($a2)
/* 12086C 802B725C C4A80000 */ lwc1 $f8, ($a1)
/* 120870 802B7260 C4C60018 */ lwc1 $f6, 0x18($a2)
/* 120874 802B7264 C4AA0004 */ lwc1 $f10, 4($a1)
/* 120878 802B7268 46044482 */ mul.s $f18, $f8, $f4
/* 12087C 802B726C C4A40008 */ lwc1 $f4, 8($a1)
/* 120880 802B7270 46065402 */ mul.s $f16, $f10, $f6
/* 120884 802B7274 C4CA0028 */ lwc1 $f10, 0x28($a2)
/* 120888 802B7278 460A2182 */ mul.s $f6, $f4, $f10
/* 12088C 802B727C C4A4000C */ lwc1 $f4, 0xc($a1)
/* 120890 802B7280 46109200 */ add.s $f8, $f18, $f16
/* 120894 802B7284 C4D00038 */ lwc1 $f16, 0x38($a2)
/* 120898 802B7288 46048282 */ mul.s $f10, $f16, $f4
/* 12089C 802B728C 46064480 */ add.s $f18, $f8, $f6
/* 1208A0 802B7290 46125200 */ add.s $f8, $f10, $f18
/* 1208A4 802B7294 E7A80028 */ swc1 $f8, 0x28($sp)
/* 1208A8 802B7298 C4D0000C */ lwc1 $f16, 0xc($a2)
/* 1208AC 802B729C C4A60000 */ lwc1 $f6, ($a1)
/* 1208B0 802B72A0 C4D2001C */ lwc1 $f18, 0x1c($a2)
/* 1208B4 802B72A4 C4AA0004 */ lwc1 $f10, 4($a1)
/* 1208B8 802B72A8 46103102 */ mul.s $f4, $f6, $f16
/* 1208BC 802B72AC C4B00008 */ lwc1 $f16, 8($a1)
/* 1208C0 802B72B0 46125202 */ mul.s $f8, $f10, $f18
/* 1208C4 802B72B4 C4CA002C */ lwc1 $f10, 0x2c($a2)
/* 1208C8 802B72B8 460A8482 */ mul.s $f18, $f16, $f10
/* 1208CC 802B72BC C4B0000C */ lwc1 $f16, 0xc($a1)
/* 1208D0 802B72C0 46082180 */ add.s $f6, $f4, $f8
/* 1208D4 802B72C4 C4C8003C */ lwc1 $f8, 0x3c($a2)
/* 1208D8 802B72C8 46104282 */ mul.s $f10, $f8, $f16
/* 1208DC 802B72CC 46123100 */ add.s $f4, $f6, $f18
/* 1208E0 802B72D0 46045180 */ add.s $f6, $f10, $f4
/* 1208E4 802B72D4 E7A6002C */ swc1 $f6, 0x2c($sp)
/* 1208E8 802B72D8 C4C80000 */ lwc1 $f8, ($a2)
/* 1208EC 802B72DC C4B20010 */ lwc1 $f18, 0x10($a1)
/* 1208F0 802B72E0 C4C40010 */ lwc1 $f4, 0x10($a2)
/* 1208F4 802B72E4 C4AA0014 */ lwc1 $f10, 0x14($a1)
/* 1208F8 802B72E8 46089402 */ mul.s $f16, $f18, $f8
/* 1208FC 802B72EC C4A80018 */ lwc1 $f8, 0x18($a1)
/* 120900 802B72F0 46045182 */ mul.s $f6, $f10, $f4
/* 120904 802B72F4 C4CA0020 */ lwc1 $f10, 0x20($a2)
/* 120908 802B72F8 460A4102 */ mul.s $f4, $f8, $f10
/* 12090C 802B72FC C4A8001C */ lwc1 $f8, 0x1c($a1)
/* 120910 802B7300 46068480 */ add.s $f18, $f16, $f6
/* 120914 802B7304 C4C60030 */ lwc1 $f6, 0x30($a2)
/* 120918 802B7308 46083282 */ mul.s $f10, $f6, $f8
/* 12091C 802B730C 46049400 */ add.s $f16, $f18, $f4
/* 120920 802B7310 46105480 */ add.s $f18, $f10, $f16
/* 120924 802B7314 E7B20030 */ swc1 $f18, 0x30($sp)
/* 120928 802B7318 C4C60004 */ lwc1 $f6, 4($a2)
/* 12092C 802B731C C4A40010 */ lwc1 $f4, 0x10($a1)
/* 120930 802B7320 C4D00014 */ lwc1 $f16, 0x14($a2)
/* 120934 802B7324 C4AA0014 */ lwc1 $f10, 0x14($a1)
/* 120938 802B7328 46062202 */ mul.s $f8, $f4, $f6
/* 12093C 802B732C C4A60018 */ lwc1 $f6, 0x18($a1)
/* 120940 802B7330 46105482 */ mul.s $f18, $f10, $f16
/* 120944 802B7334 C4CA0024 */ lwc1 $f10, 0x24($a2)
/* 120948 802B7338 460A3402 */ mul.s $f16, $f6, $f10
/* 12094C 802B733C C4A6001C */ lwc1 $f6, 0x1c($a1)
/* 120950 802B7340 46124100 */ add.s $f4, $f8, $f18
/* 120954 802B7344 C4D20034 */ lwc1 $f18, 0x34($a2)
/* 120958 802B7348 46069282 */ mul.s $f10, $f18, $f6
/* 12095C 802B734C 46102200 */ add.s $f8, $f4, $f16
/* 120960 802B7350 46085100 */ add.s $f4, $f10, $f8
/* 120964 802B7354 E7A40034 */ swc1 $f4, 0x34($sp)
/* 120968 802B7358 C4D20008 */ lwc1 $f18, 8($a2)
/* 12096C 802B735C C4B00010 */ lwc1 $f16, 0x10($a1)
/* 120970 802B7360 C4C80018 */ lwc1 $f8, 0x18($a2)
/* 120974 802B7364 C4AA0014 */ lwc1 $f10, 0x14($a1)
/* 120978 802B7368 46128182 */ mul.s $f6, $f16, $f18
/* 12097C 802B736C C4B20018 */ lwc1 $f18, 0x18($a1)
/* 120980 802B7370 46085102 */ mul.s $f4, $f10, $f8
/* 120984 802B7374 C4CA0028 */ lwc1 $f10, 0x28($a2)
/* 120988 802B7378 460A9202 */ mul.s $f8, $f18, $f10
/* 12098C 802B737C C4B2001C */ lwc1 $f18, 0x1c($a1)
/* 120990 802B7380 46043400 */ add.s $f16, $f6, $f4
/* 120994 802B7384 C4C40038 */ lwc1 $f4, 0x38($a2)
/* 120998 802B7388 46122282 */ mul.s $f10, $f4, $f18
/* 12099C 802B738C 46088180 */ add.s $f6, $f16, $f8
/* 1209A0 802B7390 46065400 */ add.s $f16, $f10, $f6
/* 1209A4 802B7394 E7B00038 */ swc1 $f16, 0x38($sp)
/* 1209A8 802B7398 C4C4000C */ lwc1 $f4, 0xc($a2)
/* 1209AC 802B739C C4A80010 */ lwc1 $f8, 0x10($a1)
/* 1209B0 802B73A0 C4C6001C */ lwc1 $f6, 0x1c($a2)
/* 1209B4 802B73A4 C4AA0014 */ lwc1 $f10, 0x14($a1)
/* 1209B8 802B73A8 46044482 */ mul.s $f18, $f8, $f4
/* 1209BC 802B73AC C4A40018 */ lwc1 $f4, 0x18($a1)
/* 1209C0 802B73B0 46065402 */ mul.s $f16, $f10, $f6
/* 1209C4 802B73B4 C4CA002C */ lwc1 $f10, 0x2c($a2)
/* 1209C8 802B73B8 460A2182 */ mul.s $f6, $f4, $f10
/* 1209CC 802B73BC C4A4001C */ lwc1 $f4, 0x1c($a1)
/* 1209D0 802B73C0 46109200 */ add.s $f8, $f18, $f16
/* 1209D4 802B73C4 C4D0003C */ lwc1 $f16, 0x3c($a2)
/* 1209D8 802B73C8 46048282 */ mul.s $f10, $f16, $f4
/* 1209DC 802B73CC 46064480 */ add.s $f18, $f8, $f6
/* 1209E0 802B73D0 46125200 */ add.s $f8, $f10, $f18
/* 1209E4 802B73D4 E7A8003C */ swc1 $f8, 0x3c($sp)
/* 1209E8 802B73D8 C4D00000 */ lwc1 $f16, ($a2)
/* 1209EC 802B73DC C4A60020 */ lwc1 $f6, 0x20($a1)
/* 1209F0 802B73E0 C4D20010 */ lwc1 $f18, 0x10($a2)
/* 1209F4 802B73E4 C4AA0024 */ lwc1 $f10, 0x24($a1)
/* 1209F8 802B73E8 46103102 */ mul.s $f4, $f6, $f16
/* 1209FC 802B73EC C4B00028 */ lwc1 $f16, 0x28($a1)
/* 120A00 802B73F0 46125202 */ mul.s $f8, $f10, $f18
/* 120A04 802B73F4 C4CA0020 */ lwc1 $f10, 0x20($a2)
/* 120A08 802B73F8 460A8482 */ mul.s $f18, $f16, $f10
/* 120A0C 802B73FC C4B0002C */ lwc1 $f16, 0x2c($a1)
/* 120A10 802B7400 46082180 */ add.s $f6, $f4, $f8
/* 120A14 802B7404 C4C80030 */ lwc1 $f8, 0x30($a2)
/* 120A18 802B7408 46104282 */ mul.s $f10, $f8, $f16
/* 120A1C 802B740C 46123100 */ add.s $f4, $f6, $f18
/* 120A20 802B7410 46045180 */ add.s $f6, $f10, $f4
/* 120A24 802B7414 E7A60040 */ swc1 $f6, 0x40($sp)
/* 120A28 802B7418 C4C80004 */ lwc1 $f8, 4($a2)
/* 120A2C 802B741C C4B20020 */ lwc1 $f18, 0x20($a1)
/* 120A30 802B7420 C4C40014 */ lwc1 $f4, 0x14($a2)
/* 120A34 802B7424 C4AA0024 */ lwc1 $f10, 0x24($a1)
/* 120A38 802B7428 46089402 */ mul.s $f16, $f18, $f8
/* 120A3C 802B742C C4A80028 */ lwc1 $f8, 0x28($a1)
/* 120A40 802B7430 46045182 */ mul.s $f6, $f10, $f4
/* 120A44 802B7434 C4CA0024 */ lwc1 $f10, 0x24($a2)
/* 120A48 802B7438 460A4102 */ mul.s $f4, $f8, $f10
/* 120A4C 802B743C C4A8002C */ lwc1 $f8, 0x2c($a1)
/* 120A50 802B7440 46068480 */ add.s $f18, $f16, $f6
/* 120A54 802B7444 C4C60034 */ lwc1 $f6, 0x34($a2)
/* 120A58 802B7448 46083282 */ mul.s $f10, $f6, $f8
/* 120A5C 802B744C 46049400 */ add.s $f16, $f18, $f4
/* 120A60 802B7450 46105480 */ add.s $f18, $f10, $f16
/* 120A64 802B7454 E7B20044 */ swc1 $f18, 0x44($sp)
/* 120A68 802B7458 C4C60008 */ lwc1 $f6, 8($a2)
/* 120A6C 802B745C C4A40020 */ lwc1 $f4, 0x20($a1)
/* 120A70 802B7460 C4D00018 */ lwc1 $f16, 0x18($a2)
/* 120A74 802B7464 C4AA0024 */ lwc1 $f10, 0x24($a1)
/* 120A78 802B7468 46062202 */ mul.s $f8, $f4, $f6
/* 120A7C 802B746C C4A60028 */ lwc1 $f6, 0x28($a1)
/* 120A80 802B7470 46105482 */ mul.s $f18, $f10, $f16
/* 120A84 802B7474 C4CA0028 */ lwc1 $f10, 0x28($a2)
/* 120A88 802B7478 460A3402 */ mul.s $f16, $f6, $f10
/* 120A8C 802B747C C4A6002C */ lwc1 $f6, 0x2c($a1)
/* 120A90 802B7480 46124100 */ add.s $f4, $f8, $f18
/* 120A94 802B7484 C4D20038 */ lwc1 $f18, 0x38($a2)
/* 120A98 802B7488 46069282 */ mul.s $f10, $f18, $f6
/* 120A9C 802B748C 46102200 */ add.s $f8, $f4, $f16
/* 120AA0 802B7490 46085100 */ add.s $f4, $f10, $f8
/* 120AA4 802B7494 E7A40048 */ swc1 $f4, 0x48($sp)
/* 120AA8 802B7498 C4D2000C */ lwc1 $f18, 0xc($a2)
/* 120AAC 802B749C C4B00020 */ lwc1 $f16, 0x20($a1)
/* 120AB0 802B74A0 C4C8001C */ lwc1 $f8, 0x1c($a2)
/* 120AB4 802B74A4 C4AA0024 */ lwc1 $f10, 0x24($a1)
/* 120AB8 802B74A8 46128182 */ mul.s $f6, $f16, $f18
/* 120ABC 802B74AC C4B20028 */ lwc1 $f18, 0x28($a1)
/* 120AC0 802B74B0 46085102 */ mul.s $f4, $f10, $f8
/* 120AC4 802B74B4 C4CA002C */ lwc1 $f10, 0x2c($a2)
/* 120AC8 802B74B8 460A9202 */ mul.s $f8, $f18, $f10
/* 120ACC 802B74BC C4B2002C */ lwc1 $f18, 0x2c($a1)
/* 120AD0 802B74C0 46043400 */ add.s $f16, $f6, $f4
/* 120AD4 802B74C4 C4C4003C */ lwc1 $f4, 0x3c($a2)
/* 120AD8 802B74C8 46122282 */ mul.s $f10, $f4, $f18
/* 120ADC 802B74CC 46088180 */ add.s $f6, $f16, $f8
/* 120AE0 802B74D0 46065400 */ add.s $f16, $f10, $f6
/* 120AE4 802B74D4 E7B0004C */ swc1 $f16, 0x4c($sp)
/* 120AE8 802B74D8 C4A80030 */ lwc1 $f8, 0x30($a1)
/* 120AEC 802B74DC C4C40000 */ lwc1 $f4, ($a2)
/* 120AF0 802B74E0 C4AA0034 */ lwc1 $f10, 0x34($a1)
/* 120AF4 802B74E4 C4C60010 */ lwc1 $f6, 0x10($a2)
/* 120AF8 802B74E8 46044482 */ mul.s $f18, $f8, $f4
/* 120AFC 802B74EC C4A40038 */ lwc1 $f4, 0x38($a1)
/* 120B00 802B74F0 46065402 */ mul.s $f16, $f10, $f6
/* 120B04 802B74F4 C4CA0020 */ lwc1 $f10, 0x20($a2)
/* 120B08 802B74F8 460A2182 */ mul.s $f6, $f4, $f10
/* 120B0C 802B74FC C4A4003C */ lwc1 $f4, 0x3c($a1)
/* 120B10 802B7500 46109200 */ add.s $f8, $f18, $f16
/* 120B14 802B7504 C4D00030 */ lwc1 $f16, 0x30($a2)
/* 120B18 802B7508 46048282 */ mul.s $f10, $f16, $f4
/* 120B1C 802B750C 46064480 */ add.s $f18, $f8, $f6
/* 120B20 802B7510 46125200 */ add.s $f8, $f10, $f18
/* 120B24 802B7514 E7A80050 */ swc1 $f8, 0x50($sp)
/* 120B28 802B7518 C4A60030 */ lwc1 $f6, 0x30($a1)
/* 120B2C 802B751C C4D00004 */ lwc1 $f16, 4($a2)
/* 120B30 802B7520 C4AA0034 */ lwc1 $f10, 0x34($a1)
/* 120B34 802B7524 C4D20014 */ lwc1 $f18, 0x14($a2)
/* 120B38 802B7528 46103102 */ mul.s $f4, $f6, $f16
/* 120B3C 802B752C C4B00038 */ lwc1 $f16, 0x38($a1)
/* 120B40 802B7530 46125202 */ mul.s $f8, $f10, $f18
/* 120B44 802B7534 C4CA0024 */ lwc1 $f10, 0x24($a2)
/* 120B48 802B7538 460A8482 */ mul.s $f18, $f16, $f10
/* 120B4C 802B753C C4B0003C */ lwc1 $f16, 0x3c($a1)
/* 120B50 802B7540 46082180 */ add.s $f6, $f4, $f8
/* 120B54 802B7544 C4C80034 */ lwc1 $f8, 0x34($a2)
/* 120B58 802B7548 46104282 */ mul.s $f10, $f8, $f16
/* 120B5C 802B754C 46123100 */ add.s $f4, $f6, $f18
/* 120B60 802B7550 46045180 */ add.s $f6, $f10, $f4
/* 120B64 802B7554 E7A60054 */ swc1 $f6, 0x54($sp)
/* 120B68 802B7558 C4B20030 */ lwc1 $f18, 0x30($a1)
/* 120B6C 802B755C C4C80008 */ lwc1 $f8, 8($a2)
/* 120B70 802B7560 C4AA0034 */ lwc1 $f10, 0x34($a1)
/* 120B74 802B7564 C4C40018 */ lwc1 $f4, 0x18($a2)
/* 120B78 802B7568 46089402 */ mul.s $f16, $f18, $f8
/* 120B7C 802B756C C4A80038 */ lwc1 $f8, 0x38($a1)
/* 120B80 802B7570 46045182 */ mul.s $f6, $f10, $f4
/* 120B84 802B7574 C4CA0028 */ lwc1 $f10, 0x28($a2)
/* 120B88 802B7578 460A4102 */ mul.s $f4, $f8, $f10
/* 120B8C 802B757C C4A8003C */ lwc1 $f8, 0x3c($a1)
/* 120B90 802B7580 46068480 */ add.s $f18, $f16, $f6
/* 120B94 802B7584 C4C60038 */ lwc1 $f6, 0x38($a2)
/* 120B98 802B7588 46083282 */ mul.s $f10, $f6, $f8
/* 120B9C 802B758C 46049400 */ add.s $f16, $f18, $f4
/* 120BA0 802B7590 46105480 */ add.s $f18, $f10, $f16
/* 120BA4 802B7594 E7B20058 */ swc1 $f18, 0x58($sp)
/* 120BA8 802B7598 C4C6000C */ lwc1 $f6, 0xc($a2)
/* 120BAC 802B759C C4A40030 */ lwc1 $f4, 0x30($a1)
/* 120BB0 802B75A0 C4D0001C */ lwc1 $f16, 0x1c($a2)
/* 120BB4 802B75A4 C4AA0034 */ lwc1 $f10, 0x34($a1)
/* 120BB8 802B75A8 46062202 */ mul.s $f8, $f4, $f6
/* 120BBC 802B75AC C4A60038 */ lwc1 $f6, 0x38($a1)
/* 120BC0 802B75B0 46105482 */ mul.s $f18, $f10, $f16
/* 120BC4 802B75B4 C4CA002C */ lwc1 $f10, 0x2c($a2)
/* 120BC8 802B75B8 460A3402 */ mul.s $f16, $f6, $f10
/* 120BCC 802B75BC C4A6003C */ lwc1 $f6, 0x3c($a1)
/* 120BD0 802B75C0 27A50020 */ addiu $a1, $sp, 0x20
/* 120BD4 802B75C4 46124100 */ add.s $f4, $f8, $f18
/* 120BD8 802B75C8 C4D2003C */ lwc1 $f18, 0x3c($a2)
/* 120BDC 802B75CC 24060010 */ li $a2, 16
/* 120BE0 802B75D0 46069282 */ mul.s $f10, $f18, $f6
/* 120BE4 802B75D4 46102200 */ add.s $f8, $f4, $f16
/* 120BE8 802B75D8 46085100 */ add.s $f4, $f10, $f8
/* 120BEC 802B75DC 0C0AD4E6 */ jal func_802B5398
/* 120BF0 802B75E0 E7A4005C */ swc1 $f4, 0x5c($sp)
/* 120BF4 802B75E4 8FBF001C */ lw $ra, 0x1c($sp)
/* 120BF8 802B75E8 8FB00018 */ lw $s0, 0x18($sp)
/* 120BFC 802B75EC 27BD0060 */ addiu $sp, $sp, 0x60
/* 120C00 802B75F0 03E00008 */ jr $ra
/* 120C04 802B75F4 00000000 */ nop

25
include/trig_tables.h Normal file
View File

@ -0,0 +1,25 @@
#ifndef TRIG_TABLES_H
#define TRIG_TABLES_H
/*
* The sine and cosine tables overlap, but "#define gCosineTable (gSineTable +
* 0x400)" doesn't give expected codegen; gSineTable and gCosineTable need to
* be different symbols for code to match. Most likely the tables were placed
* adjacent to each other, and gSineTable cut short, such that reads overflow
* into gCosineTable.
*
* These kinds of out of bounds reads are undefined behavior, and break on
* e.g. GCC (which doesn't place the tables next to each other, and probably
* exploits array sizes for range analysis-based optimizations as well).
* Thus, for non-IDO compilers we use the standard-compliant version.
*/
extern f32 gSineTable[];
#ifdef AVOID_UB
#define gCosineTable (gSineTable + 0x400)
#else
extern f32 gCosineTable[];
#endif
extern s16 gArctanTable[];
#endif

View File

@ -108,6 +108,8 @@ extern s32 gActiveScreenMode; // D_800DC52C
extern s32 D_800DC540;
extern u16 D_800DC5FC;
extern u16 D_80150112;
extern u16 D_8015F890;
extern u16 D_80162DD4[];

View File

@ -2,7 +2,7 @@
#include <macros.h>
#include <types.h>
#include <mk64.h>
#include "math_util.h"
#include "trig_tables.h"
//#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307

View File

@ -1,20 +1,14 @@
#include <ultra64.h>
#include <macros.h>
#include <types.h>
#include <common_structs.h>
#include <math_util.h>
#include <variables.h>
#include <main.h>
// Location based from sm64.
// This may need to be moved before framebuffers.c
// If math_util has data that does not line-up with trig_tables.
#include "trig_tables.inc.c"
f32 func_802B4F60(s32 arg0, f32 arg2, f32 arg3); // static
f32 func_802B6434(f32, f32, f32 *, f32 *); // static
s16 func_802B7830(f32 y, f32 x);
extern f32 gSineTable[];
extern f32 gCosineTable[];
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_802B4F60(s32 arg0, ? arg2, ? arg3) {
@ -38,65 +32,31 @@ extern f32 gCosineTable[];
GLOBAL_ASM("asm/non_matchings/math_util/func_802B4F60.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_802B75F8(void *, s32, u16 *, s32); // extern
extern u16 D_80150112;
extern void *gDisplayListHead;
? func_802B4FF8(Mat4 arg0, s32 arg1) {
s32 temp_a3;
u16 temp_v0;
void *temp_v0_2;
void *temp_v0_3;
void *temp_v0_4;
void *temp_v0_5;
temp_v0 = D_80150112;
temp_a3 = arg1;
if (temp_v0 >= 0x80) {
s32 func_802B4FF8(Mat4 arg0, s32 arg1) {
if (D_80150112 >= 0x80) {
return 0;
}
arg1 = temp_a3;
func_802B75F8(gGfxPool + (temp_v0 << 6) + 0xCAC0, arg0, &D_80150112, temp_a3);
if (arg1 != 0) {
if (arg1 != 1) {
if (arg1 != 2) {
if (arg1 != 3) {
} else {
temp_v0_2 = gDisplayListHead;
gDisplayListHead = temp_v0_2 + 8;
temp_v0_2->unk0 = 0x1040040;
temp_v0_2->unk4 = (gGfxPool + (D_80150112 << 6) + 0xCAC0) & 0x1FFFFFFF;
D_80150112 = D_80150112 + 1;
}
} else {
temp_v0_3 = gDisplayListHead;
gDisplayListHead = temp_v0_3 + 8;
temp_v0_3->unk0 = 0x1000040;
temp_v0_3->unk4 = (gGfxPool + (D_80150112 << 6) + 0xCAC0) & 0x1FFFFFFF;
D_80150112 = D_80150112 + 1;
}
} else {
temp_v0_4 = gDisplayListHead;
gDisplayListHead = temp_v0_4 + 8;
temp_v0_4->unk0 = 0x1060040;
temp_v0_4->unk4 = (gGfxPool + (D_80150112 << 6) + 0xCAC0) & 0x1FFFFFFF;
D_80150112 = D_80150112 + 1;
}
} else {
temp_v0_5 = gDisplayListHead;
gDisplayListHead = temp_v0_5 + 8;
temp_v0_5->unk0 = 0x1020040;
temp_v0_5->unk4 = (gGfxPool + (D_80150112 << 6) + 0xCAC0) & 0x1FFFFFFF;
D_80150112 = D_80150112 + 1;
func_802B75F8(&gGfxPool->mtxPool[D_80150112 + 0x32B], arg0);
switch (arg1) { /* irregular */
case 0:
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[D_80150112 + 0x32B]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
D_80150112 += 1;
break;
case 1:
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[D_80150112 + 0x32B]), G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
D_80150112 += 1;
break;
case 3:
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[D_80150112 + 0x32B]), G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
D_80150112 += 1;
break;
case 2:
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[D_80150112 + 0x32B]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
D_80150112 += 1;
break;
}
return 1;
}
#else
GLOBAL_ASM("asm/non_matchings/math_util/func_802B4FF8.s")
#endif
f32 func_802B51E8(struct UnkStruct_802B51E8 *arg0, struct UnkStruct_802B51E8 *arg1) {
f32 temp_f12;
@ -237,30 +197,31 @@ void mtxf_identity(Mat4 mtx) {
}
}
#ifdef MIPS_TO_C
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
void func_802B5450(void *arg0, void *arg1, void *arg2) {
arg1->unk30 = arg2->unk0 + arg0->unk30;
arg1->unk34 = arg2->unk4 + arg0->unk34;
arg1->unk38 = arg2->unk8 + arg0->unk38;
arg1->unk3C = arg0->unk3C;
arg1->unk0 = arg0->unk0;
arg1->unk4 = arg0->unk4;
arg1->unk8 = arg0->unk8;
arg1->unkC = arg0->unkC;
arg1->unk10 = arg0->unk10;
arg1->unk14 = arg0->unk14;
arg1->unk18 = arg0->unk18;
arg1->unk1C = arg0->unk1C;
arg1->unk20 = arg0->unk20;
arg1->unk24 = arg0->unk24;
arg1->unk28 = arg0->unk28;
arg1->unk2C = arg0->unk2C;
void func_802B5450(Mat4 arg0, Mat4 arg1, Mat4 arg2) {
arg1[3][0] = arg0[3][0] + arg2[0][0];
arg1[3][1] = arg0[3][1] + arg2[0][1];
arg1[3][2] = arg0[3][2] + arg2[0][2];
arg1[3][3] = arg0[3][3];
arg1[0][0] = arg0[0][0];
arg1[0][1] = arg0[0][1];
arg1[0][2] = arg0[0][2];
arg1[0][3] = arg0[0][3];
arg1[1][0] = arg0[1][0];
arg1[1][1] = arg0[1][1];
arg1[1][2] = arg0[1][2];
arg1[1][3] = arg0[1][3];
arg1[2][0] = arg0[2][0];
arg1[2][1] = arg0[2][1];
arg1[2][2] = arg0[2][2];
arg1[2][3] = arg0[2][3];
}
#else
GLOBAL_ASM("asm/non_matchings/math_util/func_802B5450.s")
#endif
/* extern */
UNUSED void func_802B54EC(Mat4 arg0, Mat4 arg1, Mat4 arg2) {
arg1[3][0] = arg0[3][0] + arg2[0][0];
arg1[3][1] = arg0[3][1] + arg2[0][1];
arg1[3][2] = arg0[3][2] + arg2[0][2];
}
void mtxf_translate(Mat4 dest, Vec3f b) {
mtxf_identity(dest);
dest[3][0] = b[0];
@ -729,22 +690,17 @@ loop_4:
GLOBAL_ASM("asm/non_matchings/math_util/func_802B5D64.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
void func_802B5F00(void *arg0, f32 arg1) {
arg0->unk0 = arg0->unk0 * arg1;
arg0->unk10 = arg0->unk10 * arg1;
arg0->unk20 = arg0->unk20 * arg1;
arg0->unk4 = arg0->unk4 * arg1;
arg0->unk14 = arg0->unk14 * arg1;
arg0->unk24 = arg0->unk24 * arg1;
arg0->unk8 = arg0->unk8 * arg1;
arg0->unk18 = arg0->unk18 * arg1;
arg0->unk28 = arg0->unk28 * arg1;
void func_802B5F00(Mat4 arg0, f32 arg1) {
arg0[0][0] *= arg1;
arg0[1][0] *= arg1;
arg0[2][0] *= arg1;
arg0[0][1] *= arg1;
arg0[1][1] *= arg1;
arg0[2][1] *= arg1;
arg0[0][2] *= arg1;
arg0[1][2] *= arg1;
arg0[2][2] *= arg1;
}
#else
GLOBAL_ASM("asm/non_matchings/math_util/func_802B5F00.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
@ -1374,49 +1330,26 @@ void func_802B6D58(void *arg0, void *arg1, void *arg2) {
GLOBAL_ASM("asm/non_matchings/math_util/func_802B6D58.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
? func_802B5398(f32 *, ?); /* extern */
void func_802B71CC(void *arg1, void *arg2) {
f32 sp5C;
f32 sp58;
f32 sp54;
f32 sp50;
f32 sp4C;
f32 sp48;
f32 sp44;
f32 sp40;
f32 sp3C;
f32 sp38;
f32 sp34;
f32 sp30;
f32 sp2C;
f32 sp28;
f32 sp24;
f32 sp20;
sp20 = (arg2->unk30 * arg1->unkC) + ((arg1->unk0 * arg2->unk0) + (arg1->unk4 * arg2->unk10) + (arg1->unk8 * arg2->unk20));
sp24 = (arg2->unk34 * arg1->unkC) + ((arg1->unk0 * arg2->unk4) + (arg1->unk4 * arg2->unk14) + (arg1->unk8 * arg2->unk24));
sp28 = (arg2->unk38 * arg1->unkC) + ((arg1->unk0 * arg2->unk8) + (arg1->unk4 * arg2->unk18) + (arg1->unk8 * arg2->unk28));
sp2C = (arg2->unk3C * arg1->unkC) + ((arg1->unk0 * arg2->unkC) + (arg1->unk4 * arg2->unk1C) + (arg1->unk8 * arg2->unk2C));
sp30 = (arg2->unk30 * arg1->unk1C) + ((arg1->unk10 * arg2->unk0) + (arg1->unk14 * arg2->unk10) + (arg1->unk18 * arg2->unk20));
sp34 = (arg2->unk34 * arg1->unk1C) + ((arg1->unk10 * arg2->unk4) + (arg1->unk14 * arg2->unk14) + (arg1->unk18 * arg2->unk24));
sp38 = (arg2->unk38 * arg1->unk1C) + ((arg1->unk10 * arg2->unk8) + (arg1->unk14 * arg2->unk18) + (arg1->unk18 * arg2->unk28));
sp3C = (arg2->unk3C * arg1->unk1C) + ((arg1->unk10 * arg2->unkC) + (arg1->unk14 * arg2->unk1C) + (arg1->unk18 * arg2->unk2C));
sp40 = (arg2->unk30 * arg1->unk2C) + ((arg1->unk20 * arg2->unk0) + (arg1->unk24 * arg2->unk10) + (arg1->unk28 * arg2->unk20));
sp44 = (arg2->unk34 * arg1->unk2C) + ((arg1->unk20 * arg2->unk4) + (arg1->unk24 * arg2->unk14) + (arg1->unk28 * arg2->unk24));
sp48 = (arg2->unk38 * arg1->unk2C) + ((arg1->unk20 * arg2->unk8) + (arg1->unk24 * arg2->unk18) + (arg1->unk28 * arg2->unk28));
sp4C = (arg2->unk3C * arg1->unk2C) + ((arg1->unk20 * arg2->unkC) + (arg1->unk24 * arg2->unk1C) + (arg1->unk28 * arg2->unk2C));
sp50 = (arg2->unk30 * arg1->unk3C) + ((arg1->unk30 * arg2->unk0) + (arg1->unk34 * arg2->unk10) + (arg1->unk38 * arg2->unk20));
sp54 = (arg2->unk34 * arg1->unk3C) + ((arg1->unk30 * arg2->unk4) + (arg1->unk34 * arg2->unk14) + (arg1->unk38 * arg2->unk24));
sp58 = (arg2->unk38 * arg1->unk3C) + ((arg1->unk30 * arg2->unk8) + (arg1->unk34 * arg2->unk18) + (arg1->unk38 * arg2->unk28));
sp5C = (arg2->unk3C * arg1->unk3C) + ((arg1->unk30 * arg2->unkC) + (arg1->unk34 * arg2->unk1C) + (arg1->unk38 * arg2->unk2C));
func_802B5398(&sp20, 0x10);
void func_802B71CC(Mat4 arg0, Mat4 arg1, Mat4 arg2) {
Mat4 product;
product[0][0] = (arg1[0][0] * arg2[0][0]) + (arg1[0][1] * arg2[1][0]) + (arg1[0][2] * arg2[2][0]) + (arg1[0][3] * arg2[3][0]);
product[0][1] = (arg1[0][0] * arg2[0][1]) + (arg1[0][1] * arg2[1][1]) + (arg1[0][2] * arg2[2][1]) + (arg1[0][3] * arg2[3][1]);
product[0][2] = (arg1[0][0] * arg2[0][2]) + (arg1[0][1] * arg2[1][2]) + (arg1[0][2] * arg2[2][2]) + (arg1[0][3] * arg2[3][2]);
product[0][3] = (arg1[0][0] * arg2[0][3]) + (arg1[0][1] * arg2[1][3]) + (arg1[0][2] * arg2[2][3]) + (arg1[0][3] * arg2[3][3]);
product[1][0] = (arg1[1][0] * arg2[0][0]) + (arg1[1][1] * arg2[1][0]) + (arg1[1][2] * arg2[2][0]) + (arg1[1][3] * arg2[3][0]);
product[1][1] = (arg1[1][0] * arg2[0][1]) + (arg1[1][1] * arg2[1][1]) + (arg1[1][2] * arg2[2][1]) + (arg1[1][3] * arg2[3][1]);
product[1][2] = (arg1[1][0] * arg2[0][2]) + (arg1[1][1] * arg2[1][2]) + (arg1[1][2] * arg2[2][2]) + (arg1[1][3] * arg2[3][2]);
product[1][3] = (arg1[1][0] * arg2[0][3]) + (arg1[1][1] * arg2[1][3]) + (arg1[1][2] * arg2[2][3]) + (arg1[1][3] * arg2[3][3]);
product[2][0] = (arg1[2][0] * arg2[0][0]) + (arg1[2][1] * arg2[1][0]) + (arg1[2][2] * arg2[2][0]) + (arg1[2][3] * arg2[3][0]);
product[2][1] = (arg1[2][0] * arg2[0][1]) + (arg1[2][1] * arg2[1][1]) + (arg1[2][2] * arg2[2][1]) + (arg1[2][3] * arg2[3][1]);
product[2][2] = (arg1[2][0] * arg2[0][2]) + (arg1[2][1] * arg2[1][2]) + (arg1[2][2] * arg2[2][2]) + (arg1[2][3] * arg2[3][2]);
product[2][3] = (arg1[2][0] * arg2[0][3]) + (arg1[2][1] * arg2[1][3]) + (arg1[2][2] * arg2[2][3]) + (arg1[2][3] * arg2[3][3]);
product[3][0] = (arg1[3][0] * arg2[0][0]) + (arg1[3][1] * arg2[1][0]) + (arg1[3][2] * arg2[2][0]) + (arg1[3][3] * arg2[3][0]);
product[3][1] = (arg1[3][0] * arg2[0][1]) + (arg1[3][1] * arg2[1][1]) + (arg1[3][2] * arg2[2][1]) + (arg1[3][3] * arg2[3][1]);
product[3][2] = (arg1[3][0] * arg2[0][2]) + (arg1[3][1] * arg2[1][2]) + (arg1[3][2] * arg2[2][2]) + (arg1[3][3] * arg2[3][2]);
product[3][3] = (arg1[3][0] * arg2[0][3]) + (arg1[3][1] * arg2[1][3]) + (arg1[3][2] * arg2[2][3]) + (arg1[3][3] * arg2[3][3]);
func_802B5398(arg0, product, 0x10);
}
#else
GLOBAL_ASM("asm/non_matchings/math_util/func_802B71CC.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909

View File

@ -4,25 +4,7 @@
#include <PR/ultratypes.h>
#include "types.h"
/*
* The sine and cosine tables overlap, but "#define gCosineTable (gSineTable +
* 0x400)" doesn't give expected codegen; gSineTable and gCosineTable need to
* be different symbols for code to match. Most likely the tables were placed
* adjacent to each other, and gSineTable cut short, such that reads overflow
* into gCosineTable.
*
* These kinds of out of bounds reads are undefined behavior, and break on
* e.g. GCC (which doesn't place the tables next to each other, and probably
* exploits array sizes for range analysis-based optimizations as well).
* Thus, for non-IDO compilers we use the standard-compliant version.
*/
extern f32 gSineTable[];
#ifdef AVOID_UB
#define gCosineTable (gSineTable + 0x400)
#else
extern f32 gCosineTable[];
#endif
#include "trig_tables.h"
//#define sins(x) gSineTable[(u16) (x) >> 4]
//#define coss(x) gCosineTable[(u16) (x) >> 4]
@ -32,4 +14,17 @@ extern f32 gCosineTable[];
#define sqr(x) ((x) * (x))
s32 func_802B4FF8(Mat4, s32);
void mtxf_identity(Mat4);
void func_802B5398(Mat4, Mat4, s32);
void func_802B5450(Mat4, Mat4, Mat4);
void func_802B54EC(Mat4, Mat4, Mat4);
void mtxf_translate(Mat4, Vec3f);
void func_802B5F00(Mat4, f32);
void func_802B71CC(Mat4, Mat4, Mat4);
void func_802B75F8(Mtx*, Mat4);
u32 func_802B7830(f32, f32);
f32 sins(u16);
f32 coss(u16);
#endif // MATH_UTIL_H