Decomped some of code_8008C1D0 (#30)

* Decomped some of code_8008C1D0.s
This commit is contained in:
CoderStig
2021-09-22 01:06:41 -06:00
committed by GitHub
parent 157127d1f1
commit 61ead1dd9c
5 changed files with 575 additions and 618 deletions
@@ -1,620 +1,3 @@
# Mario Kart 64 (U) disassembly and split file
# generated by n64split v0.4a - N64 ROM splitter
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
/* 08CDD0 8008C1D0 03E00008 */ jr $ra
/* 08CDD4 8008C1D4 00000000 */ nop
glabel func_8008C1D8
/* 08CDD8 8008C1D8 03E00008 */ jr $ra
/* 08CDDC 8008C1DC AFA40000 */ sw $a0, ($sp)
glabel func_8008C1E0
/* 08CDE0 8008C1E0 AFA40000 */ sw $a0, ($sp)
/* 08CDE4 8008C1E4 03E00008 */ jr $ra
/* 08CDE8 8008C1E8 AFA50004 */ sw $a1, 4($sp)
/* 08CDEC 8008C1EC 03E00008 */ jr $ra
/* 08CDF0 8008C1F0 AFA40000 */ sw $a0, ($sp)
/* 08CDF4 8008C1F4 03E00008 */ jr $ra
/* 08CDF8 8008C1F8 AFA40000 */ sw $a0, ($sp)
/* 08CDFC 8008C1FC 03E00008 */ jr $ra
/* 08CE00 8008C200 00000000 */ nop
glabel func_8008C204
/* 08CE04 8008C204 03E00008 */ jr $ra
/* 08CE08 8008C208 00000000 */ nop
/* 08CE0C 8008C20C 03E00008 */ jr $ra
/* 08CE10 8008C210 00000000 */ nop
glabel func_8008C214
/* 08CE14 8008C214 03E00008 */ jr $ra
/* 08CE18 8008C218 00000000 */ nop
/* 08CE1C 8008C21C 03E00008 */ jr $ra
/* 08CE20 8008C220 00000000 */ nop
/* 08CE24 8008C224 03E00008 */ jr $ra
/* 08CE28 8008C228 00000000 */ nop
/* 08CE2C 8008C22C 03E00008 */ jr $ra
/* 08CE30 8008C230 00000000 */ nop
/* 08CE34 8008C234 03E00008 */ jr $ra
/* 08CE38 8008C238 00000000 */ nop
glabel func_8008C23C
/* 08CE3C 8008C23C 03E00008 */ jr $ra
/* 08CE40 8008C240 00000000 */ nop
/* 08CE44 8008C244 03E00008 */ jr $ra
/* 08CE48 8008C248 00000000 */ nop
/* 08CE4C 8008C24C 03E00008 */ jr $ra
/* 08CE50 8008C250 00000000 */ nop
/* 08CE54 8008C254 03E00008 */ jr $ra
/* 08CE58 8008C258 00000000 */ nop
/* 08CE5C 8008C25C 03E00008 */ jr $ra
/* 08CE60 8008C260 00000000 */ nop
/* 08CE64 8008C264 03E00008 */ jr $ra
/* 08CE68 8008C268 00000000 */ nop
/* 08CE6C 8008C26C 03E00008 */ jr $ra
/* 08CE70 8008C270 00000000 */ nop
/* 08CE74 8008C274 03E00008 */ jr $ra
/* 08CE78 8008C278 00000000 */ nop
/* 08CE7C 8008C27C 03E00008 */ jr $ra
/* 08CE80 8008C280 00000000 */ nop
/* 08CE84 8008C284 03E00008 */ jr $ra
/* 08CE88 8008C288 00000000 */ nop
/* 08CE8C 8008C28C 03E00008 */ jr $ra
/* 08CE90 8008C290 00000000 */ nop
/* 08CE94 8008C294 03E00008 */ jr $ra
/* 08CE98 8008C298 00000000 */ nop
/* 08CE9C 8008C29C 03E00008 */ jr $ra
/* 08CEA0 8008C2A0 00000000 */ nop
/* 08CEA4 8008C2A4 03E00008 */ jr $ra
/* 08CEA8 8008C2A8 00000000 */ nop
/* 08CEAC 8008C2AC AFA40000 */ sw $a0, ($sp)
/* 08CEB0 8008C2B0 03E00008 */ jr $ra
/* 08CEB4 8008C2B4 AFA50004 */ sw $a1, 4($sp)
/* 08CEB8 8008C2B8 03E00008 */ jr $ra
/* 08CEBC 8008C2BC 00000000 */ nop
/* 08CEC0 8008C2C0 03E00008 */ jr $ra
/* 08CEC4 8008C2C4 00000000 */ nop
/* 08CEC8 8008C2C8 03E00008 */ jr $ra
/* 08CECC 8008C2CC 00000000 */ nop
/* 08CED0 8008C2D0 03E00008 */ jr $ra
/* 08CED4 8008C2D4 00000000 */ nop
/* 08CED8 8008C2D8 03E00008 */ jr $ra
/* 08CEDC 8008C2DC 00000000 */ nop
/* 08CEE0 8008C2E0 03E00008 */ jr $ra
/* 08CEE4 8008C2E4 00000000 */ nop
/* 08CEE8 8008C2E8 03E00008 */ jr $ra
/* 08CEEC 8008C2EC 00000000 */ nop
/* 08CEF0 8008C2F0 03E00008 */ jr $ra
/* 08CEF4 8008C2F4 00000000 */ nop
/* 08CEF8 8008C2F8 03E00008 */ jr $ra
/* 08CEFC 8008C2FC 00000000 */ nop
/* 08CF00 8008C300 03E00008 */ jr $ra
/* 08CF04 8008C304 00000000 */ nop
/* 08CF08 8008C308 03E00008 */ jr $ra
/* 08CF0C 8008C30C 00000000 */ nop
glabel func_8008C310
/* 08CF10 8008C310 8C82000C */ lw $v0, 0xc($a0)
/* 08CF14 8008C314 304E0002 */ andi $t6, $v0, 2
/* 08CF18 8008C318 15C00007 */ bnez $t6, .L8008C338
/* 08CF1C 8008C31C 304F0004 */ andi $t7, $v0, 4
/* 08CF20 8008C320 15E00005 */ bnez $t7, .L8008C338
/* 08CF24 8008C324 0002C240 */ sll $t8, $v0, 9
/* 08CF28 8008C328 07000003 */ bltz $t8, .L8008C338
/* 08CF2C 8008C32C 0002C9C0 */ sll $t9, $v0, 7
/* 08CF30 8008C330 07210004 */ bgez $t9, .L8008C344
/* 08CF34 8008C334 00000000 */ nop
.L8008C338:
/* 08CF38 8008C338 948800B6 */ lhu $t0, 0xb6($a0)
/* 08CF3C 8008C33C 35091000 */ ori $t1, $t0, 0x1000
/* 08CF40 8008C340 A48900B6 */ sh $t1, 0xb6($a0)
.L8008C344:
/* 08CF44 8008C344 03E00008 */ jr $ra
/* 08CF48 8008C348 00000000 */ nop
/* 08CF4C 8008C34C 03E00008 */ jr $ra
/* 08CF50 8008C350 00000000 */ nop
glabel func_8008C354
/* 08CF54 8008C354 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 08CF58 8008C358 AFBF001C */ sw $ra, 0x1c($sp)
/* 08CF5C 8008C35C AFB00018 */ sw $s0, 0x18($sp)
/* 08CF60 8008C360 AFA50024 */ sw $a1, 0x24($sp)
/* 08CF64 8008C364 8C8200BC */ lw $v0, 0xbc($a0)
/* 08CF68 8008C368 24010400 */ li $at, 1024
/* 08CF6C 8008C36C 00808025 */ move $s0, $a0
/* 08CF70 8008C370 304E0400 */ andi $t6, $v0, 0x400
/* 08CF74 8008C374 55C10005 */ bnel $t6, $at, .L8008C38C
/* 08CF78 8008C378 304F0080 */ andi $t7, $v0, 0x80
/* 08CF7C 8008C37C 0C0231B4 */ jal func_8008C6D0
/* 08CF80 8008C380 83A50027 */ lb $a1, 0x27($sp)
/* 08CF84 8008C384 8E0200BC */ lw $v0, 0xbc($s0)
/* 08CF88 8008C388 304F0080 */ andi $t7, $v0, 0x80
.L8008C38C:
/* 08CF8C 8008C38C 24010080 */ li $at, 128
/* 08CF90 8008C390 11E10003 */ beq $t7, $at, .L8008C3A0
/* 08CF94 8008C394 30580040 */ andi $t8, $v0, 0x40
/* 08CF98 8008C398 24010040 */ li $at, 64
/* 08CF9C 8008C39C 17010004 */ bne $t8, $at, .L8008C3B0
.L8008C3A0:
/* 08CFA0 8008C3A0 02002025 */ move $a0, $s0
/* 08CFA4 8008C3A4 0C023231 */ jal func_8008C8C4
/* 08CFA8 8008C3A8 83A50027 */ lb $a1, 0x27($sp)
/* 08CFAC 8008C3AC 8E0200BC */ lw $v0, 0xbc($s0)
.L8008C3B0:
/* 08CFB0 8008C3B0 30590800 */ andi $t9, $v0, 0x800
/* 08CFB4 8008C3B4 24010800 */ li $at, 2048
/* 08CFB8 8008C3B8 17210003 */ bne $t9, $at, .L8008C3C8
/* 08CFBC 8008C3BC 02002025 */ move $a0, $s0
/* 08CFC0 8008C3C0 0C023439 */ jal func_8008D0E4
/* 08CFC4 8008C3C4 83A50027 */ lb $a1, 0x27($sp)
.L8008C3C8:
/* 08CFC8 8008C3C8 86080044 */ lh $t0, 0x44($s0)
/* 08CFCC 8008C3CC 31094000 */ andi $t1, $t0, 0x4000
/* 08CFD0 8008C3D0 11200003 */ beqz $t1, .L8008C3E0
/* 08CFD4 8008C3D4 02002025 */ move $a0, $s0
/* 08CFD8 8008C3D8 0C0234EC */ jal func_8008D3B0
/* 08CFDC 8008C3DC 83A50027 */ lb $a1, 0x27($sp)
.L8008C3E0:
/* 08CFE0 8008C3E0 8E0200BC */ lw $v0, 0xbc($s0)
/* 08CFE4 8008C3E4 24012000 */ li $at, 8192
/* 08CFE8 8008C3E8 304A2000 */ andi $t2, $v0, 0x2000
/* 08CFEC 8008C3EC 55410005 */ bnel $t2, $at, .L8008C404
/* 08CFF0 8008C3F0 3C030008 */ lui $v1, 8
/* 08CFF4 8008C3F4 0C023555 */ jal func_8008D554
/* 08CFF8 8008C3F8 02002025 */ move $a0, $s0
/* 08CFFC 8008C3FC 8E0200BC */ lw $v0, 0xbc($s0)
/* 08D000 8008C400 3C030008 */ lui $v1, 8
.L8008C404:
/* 08D004 8008C404 00435824 */ and $t3, $v0, $v1
/* 08D008 8008C408 546B0005 */ bnel $v1, $t3, .L8008C420
/* 08D00C 8008C40C 3C030080 */ lui $v1, 0x80
/* 08D010 8008C410 0C0235D8 */ jal func_8008D760
/* 08D014 8008C414 02002025 */ move $a0, $s0
/* 08D018 8008C418 8E0200BC */ lw $v0, 0xbc($s0)
/* 08D01C 8008C41C 3C030080 */ lui $v1, 0x80
.L8008C420:
/* 08D020 8008C420 00436024 */ and $t4, $v0, $v1
/* 08D024 8008C424 546C0005 */ bnel $v1, $t4, .L8008C43C
/* 08D028 8008C428 3C030100 */ lui $v1, 0x100
/* 08D02C 8008C42C 0C02365F */ jal func_8008D97C
/* 08D030 8008C430 02002025 */ move $a0, $s0
/* 08D034 8008C434 8E0200BC */ lw $v0, 0xbc($s0)
/* 08D038 8008C438 3C030100 */ lui $v1, 0x100
.L8008C43C:
/* 08D03C 8008C43C 00436824 */ and $t5, $v0, $v1
/* 08D040 8008C440 146D0004 */ bne $v1, $t5, .L8008C454
/* 08D044 8008C444 02002025 */ move $a0, $s0
/* 08D048 8008C448 0C023A21 */ jal func_8008E884
/* 08D04C 8008C44C 83A50027 */ lb $a1, 0x27($sp)
/* 08D050 8008C450 8E0200BC */ lw $v0, 0xbc($s0)
.L8008C454:
/* 08D054 8008C454 3C030200 */ lui $v1, 0x200
/* 08D058 8008C458 00437024 */ and $t6, $v0, $v1
/* 08D05C 8008C45C 146E0004 */ bne $v1, $t6, .L8008C470
/* 08D060 8008C460 02002025 */ move $a0, $s0
/* 08D064 8008C464 0C023B0D */ jal func_8008EC34
/* 08D068 8008C468 83A50027 */ lb $a1, 0x27($sp)
/* 08D06C 8008C46C 8E0200BC */ lw $v0, 0xbc($s0)
.L8008C470:
/* 08D070 8008C470 3C030010 */ lui $v1, 0x10
/* 08D074 8008C474 00437824 */ and $t7, $v0, $v1
/* 08D078 8008C478 546F0005 */ bnel $v1, $t7, .L8008C490
/* 08D07C 8008C47C 30580004 */ andi $t8, $v0, 4
/* 08D080 8008C480 0C023BB1 */ jal func_8008EEC4
/* 08D084 8008C484 02002025 */ move $a0, $s0
/* 08D088 8008C488 8E0200BC */ lw $v0, 0xbc($s0)
/* 08D08C 8008C48C 30580004 */ andi $t8, $v0, 4
.L8008C490:
/* 08D090 8008C490 24010004 */ li $at, 4
/* 08D094 8008C494 57010005 */ bnel $t8, $at, .L8008C4AC
/* 08D098 8008C498 30594000 */ andi $t9, $v0, 0x4000
/* 08D09C 8008C49C 0C023C3A */ jal func_8008F0E8
/* 08D0A0 8008C4A0 02002025 */ move $a0, $s0
/* 08D0A4 8008C4A4 8E0200BC */ lw $v0, 0xbc($s0)
/* 08D0A8 8008C4A8 30594000 */ andi $t9, $v0, 0x4000
.L8008C4AC:
/* 08D0AC 8008C4AC 24014000 */ li $at, 16384
/* 08D0B0 8008C4B0 57210005 */ bnel $t9, $at, .L8008C4C8
/* 08D0B4 8008C4B4 3C030001 */ lui $v1, 1
/* 08D0B8 8008C4B8 0C023CF8 */ jal func_8008F3E0
/* 08D0BC 8008C4BC 02002025 */ move $a0, $s0
/* 08D0C0 8008C4C0 8E0200BC */ lw $v0, 0xbc($s0)
/* 08D0C4 8008C4C4 3C030001 */ lui $v1, 1
.L8008C4C8:
/* 08D0C8 8008C4C8 00434024 */ and $t0, $v0, $v1
/* 08D0CC 8008C4CC 14680004 */ bne $v1, $t0, .L8008C4E0
/* 08D0D0 8008C4D0 02002025 */ move $a0, $s0
/* 08D0D4 8008C4D4 0C023D69 */ jal func_8008F5A4
/* 08D0D8 8008C4D8 83A50027 */ lb $a1, 0x27($sp)
/* 08D0DC 8008C4DC 8E0200BC */ lw $v0, 0xbc($s0)
.L8008C4E0:
/* 08D0E0 8008C4E0 3C031000 */ lui $v1, 0x1000
/* 08D0E4 8008C4E4 00434824 */ and $t1, $v0, $v1
/* 08D0E8 8008C4E8 14690004 */ bne $v1, $t1, .L8008C4FC
/* 08D0EC 8008C4EC 02002025 */ move $a0, $s0
/* 08D0F0 8008C4F0 0C023FB7 */ jal func_8008FEDC
/* 08D0F4 8008C4F4 83A50027 */ lb $a1, 0x27($sp)
/* 08D0F8 8008C4F8 8E0200BC */ lw $v0, 0xbc($s0)
.L8008C4FC:
/* 08D0FC 8008C4FC 860A0044 */ lh $t2, 0x44($s0)
/* 08D100 8008C500 2401FFDF */ li $at, -33
/* 08D104 8008C504 00416024 */ and $t4, $v0, $at
/* 08D108 8008C508 314BFFFE */ andi $t3, $t2, 0xfffe
/* 08D10C 8008C50C A60B0044 */ sh $t3, 0x44($s0)
/* 08D110 8008C510 AE0C00BC */ sw $t4, 0xbc($s0)
/* 08D114 8008C514 8FBF001C */ lw $ra, 0x1c($sp)
/* 08D118 8008C518 8FB00018 */ lw $s0, 0x18($sp)
/* 08D11C 8008C51C 27BD0020 */ addiu $sp, $sp, 0x20
/* 08D120 8008C520 03E00008 */ jr $ra
/* 08D124 8008C524 00000000 */ nop
glabel func_8008C528
/* 08D128 8008C528 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 08D12C 8008C52C AFBF001C */ sw $ra, 0x1c($sp)
/* 08D130 8008C530 AFB00018 */ sw $s0, 0x18($sp)
/* 08D134 8008C534 AFA50034 */ sw $a1, 0x34($sp)
/* 08D138 8008C538 00808025 */ move $s0, $a0
/* 08D13C 8008C53C 0C0230D5 */ jal func_8008C354
/* 08D140 8008C540 83A50037 */ lb $a1, 0x37($sp)
/* 08D144 8008C544 0C0230C4 */ jal func_8008C310
/* 08D148 8008C548 02002025 */ move $a0, $s0
/* 08D14C 8008C54C 96030254 */ lhu $v1, 0x254($s0)
/* 08D150 8008C550 3C01800E */ lui $at, %hi(D_800E37B0)
/* 08D154 8008C554 A60000C2 */ sh $zero, 0xc2($s0)
/* 08D158 8008C558 00031080 */ sll $v0, $v1, 2
/* 08D15C 8008C55C 00220821 */ addu $at, $at, $v0
/* 08D160 8008C560 C42437B0 */ lwc1 $f4, %lo(D_800E37B0)($at)
/* 08D164 8008C564 44803000 */ mtc1 $zero, $f6
/* 08D168 8008C568 3C01800E */ lui $at, %hi(D_800E3790)
/* 08D16C 8008C56C 00220821 */ addu $at, $at, $v0
/* 08D170 8008C570 E60400F0 */ swc1 $f4, 0xf0($s0)
/* 08D174 8008C574 E60600F4 */ swc1 $f6, 0xf4($s0)
/* 08D178 8008C578 C4283790 */ lwc1 $f8, %lo(D_800E3790)($at)
/* 08D17C 8008C57C 8E0E00BC */ lw $t6, 0xbc($s0)
/* 08D180 8008C580 96040000 */ lhu $a0, ($s0)
/* 08D184 8008C584 2401FFEF */ li $at, -17
/* 08D188 8008C588 35CF0400 */ ori $t7, $t6, 0x400
/* 08D18C 8008C58C 01E1C824 */ and $t9, $t7, $at
/* 08D190 8008C590 AE0F00BC */ sw $t7, 0xbc($s0)
/* 08D194 8008C594 24080002 */ li $t0, 2
/* 08D198 8008C598 24014000 */ li $at, 16384
/* 08D19C 8008C59C 30894000 */ andi $t1, $a0, 0x4000
/* 08D1A0 8008C5A0 A60000A8 */ sh $zero, 0xa8($s0)
/* 08D1A4 8008C5A4 AE1900BC */ sw $t9, 0xbc($s0)
/* 08D1A8 8008C5A8 A60000C0 */ sh $zero, 0xc0($s0)
/* 08D1AC 8008C5AC A6080236 */ sh $t0, 0x236($s0)
/* 08D1B0 8008C5B0 A6000042 */ sh $zero, 0x42($s0)
/* 08D1B4 8008C5B4 15210011 */ bne $t1, $at, .L8008C5FC
/* 08D1B8 8008C5B8 E60800EC */ swc1 $f8, 0xec($s0)
/* 08D1BC 8008C5BC 308A0100 */ andi $t2, $a0, 0x100
/* 08D1C0 8008C5C0 24010100 */ li $at, 256
/* 08D1C4 8008C5C4 1141000D */ beq $t2, $at, .L8008C5FC
/* 08D1C8 8008C5C8 93A40037 */ lbu $a0, 0x37($sp)
/* 08D1CC 8008C5CC 3C012900 */ lui $at, (0x29008005 >> 16) # lui $at, 0x2900
/* 08D1D0 8008C5D0 34218005 */ ori $at, (0x29008005 & 0xFFFF) # ori $at, $at, 0x8005
/* 08D1D4 8008C5D4 00032900 */ sll $a1, $v1, 4
/* 08D1D8 8008C5D8 00A12821 */ addu $a1, $a1, $at
/* 08D1DC 8008C5DC 0C03243D */ jal func_800C90F4
/* 08D1E0 8008C5E0 AFA40024 */ sw $a0, 0x24($sp)
/* 08D1E4 8008C5E4 3C051900 */ lui $a1, (0x19009005 >> 16) # lui $a1, 0x1900
/* 08D1E8 8008C5E8 8FA40024 */ lw $a0, 0x24($sp)
/* 08D1EC 8008C5EC 0C032418 */ jal func_800C9060
/* 08D1F0 8008C5F0 34A59005 */ ori $a1, (0x19009005 & 0xFFFF) # ori $a1, $a1, 0x9005
/* 08D1F4 8008C5F4 10000005 */ b .L8008C60C
/* 08D1F8 8008C5F8 8E0B000C */ lw $t3, 0xc($s0)
.L8008C5FC:
/* 08D1FC 8008C5FC 83A40037 */ lb $a0, 0x37($sp)
/* 08D200 8008C600 0C00263F */ jal func_800098FC
/* 08D204 8008C604 02002825 */ move $a1, $s0
/* 08D208 8008C608 8E0B000C */ lw $t3, 0xc($s0)
.L8008C60C:
/* 08D20C 8008C60C 2401FFFB */ li $at, -5
/* 08D210 8008C610 01616024 */ and $t4, $t3, $at
/* 08D214 8008C614 AE0C000C */ sw $t4, 0xc($s0)
/* 08D218 8008C618 8FBF001C */ lw $ra, 0x1c($sp)
/* 08D21C 8008C61C 8FB00018 */ lw $s0, 0x18($sp)
/* 08D220 8008C620 27BD0030 */ addiu $sp, $sp, 0x30
/* 08D224 8008C624 03E00008 */ jr $ra
/* 08D228 8008C628 00000000 */ nop
glabel func_8008C62C
/* 08D22C 8008C62C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 08D230 8008C630 AFBF0014 */ sw $ra, 0x14($sp)
/* 08D234 8008C634 AFA5001C */ sw $a1, 0x1c($sp)
/* 08D238 8008C638 3C0540A0 */ lui $a1, 0x40a0
/* 08D23C 8008C63C 0C00C7D2 */ jal func_80031F48
/* 08D240 8008C640 AFA40018 */ sw $a0, 0x18($sp)
/* 08D244 8008C644 8FA40018 */ lw $a0, 0x18($sp)
/* 08D248 8008C648 848E00A8 */ lh $t6, 0xa8($a0)
/* 08D24C 8008C64C 84980042 */ lh $t8, 0x42($a0)
/* 08D250 8008C650 25CF00A0 */ addiu $t7, $t6, 0xa0
/* 08D254 8008C654 A48F00A8 */ sh $t7, 0xa8($a0)
/* 08D258 8008C658 848800A8 */ lh $t0, 0xa8($a0)
/* 08D25C 8008C65C 2719071C */ addiu $t9, $t8, 0x71c
/* 08D260 8008C660 A4990042 */ sh $t9, 0x42($a0)
/* 08D264 8008C664 29012000 */ slti $at, $t0, 0x2000
/* 08D268 8008C668 54200016 */ bnel $at, $zero, .L8008C6C4
/* 08D26C 8008C66C 8FBF0014 */ lw $ra, 0x14($sp)
/* 08D270 8008C670 84890236 */ lh $t1, 0x236($a0)
/* 08D274 8008C674 A48000A8 */ sh $zero, 0xa8($a0)
/* 08D278 8008C678 240C2000 */ li $t4, 8192
/* 08D27C 8008C67C 252AFFFF */ addiu $t2, $t1, -1
/* 08D280 8008C680 A48A0236 */ sh $t2, 0x236($a0)
/* 08D284 8008C684 848B0236 */ lh $t3, 0x236($a0)
/* 08D288 8008C688 5560000E */ bnel $t3, $zero, .L8008C6C4
/* 08D28C 8008C68C 8FBF0014 */ lw $ra, 0x14($sp)
/* 08D290 8008C690 A48C00A8 */ sh $t4, 0xa8($a0)
/* 08D294 8008C694 AFA40018 */ sw $a0, 0x18($sp)
/* 08D298 8008C698 0C0231B4 */ jal func_8008C6D0
/* 08D29C 8008C69C 83A5001F */ lb $a1, 0x1f($sp)
/* 08D2A0 8008C6A0 3C0D800E */ lui $t5, %hi(gModeSelection) # $t5, 0x800e
/* 08D2A4 8008C6A4 8DADC53C */ lw $t5, %lo(gModeSelection)($t5)
/* 08D2A8 8008C6A8 24010003 */ li $at, 3
/* 08D2AC 8008C6AC 8FA40018 */ lw $a0, 0x18($sp)
/* 08D2B0 8008C6B0 55A10004 */ bnel $t5, $at, .L8008C6C4
/* 08D2B4 8008C6B4 8FBF0014 */ lw $ra, 0x14($sp)
/* 08D2B8 8008C6B8 0C01AE2D */ jal func_8006B8B4
/* 08D2BC 8008C6BC 83A5001F */ lb $a1, 0x1f($sp)
/* 08D2C0 8008C6C0 8FBF0014 */ lw $ra, 0x14($sp)
.L8008C6C4:
/* 08D2C4 8008C6C4 27BD0018 */ addiu $sp, $sp, 0x18
/* 08D2C8 8008C6C8 03E00008 */ jr $ra
/* 08D2CC 8008C6CC 00000000 */ nop
glabel func_8008C6D0
/* 08D2D0 8008C6D0 AFA50004 */ sw $a1, 4($sp)
/* 08D2D4 8008C6D4 8C9800BC */ lw $t8, 0xbc($a0)
/* 08D2D8 8008C6D8 44802000 */ mtc1 $zero, $f4
/* 08D2DC 8008C6DC 00057600 */ sll $t6, $a1, 0x18
/* 08D2E0 8008C6E0 000E7E03 */ sra $t7, $t6, 0x18
/* 08D2E4 8008C6E4 2401FBFF */ li $at, -1025
/* 08D2E8 8008C6E8 3C098016 */ lui $t1, %hi(D_80165190) # $t1, 0x8016
/* 08D2EC 8008C6EC 25295190 */ addiu $t1, %lo(D_80165190) # addiu $t1, $t1, 0x5190
/* 08D2F0 8008C6F0 000F4040 */ sll $t0, $t7, 1
/* 08D2F4 8008C6F4 0301C824 */ and $t9, $t8, $at
/* 08D2F8 8008C6F8 24030001 */ li $v1, 1
/* 08D2FC 8008C6FC A4800206 */ sh $zero, 0x206($a0)
/* 08D300 8008C700 A48000C4 */ sh $zero, 0xc4($a0)
/* 08D304 8008C704 AC9900BC */ sw $t9, 0xbc($a0)
/* 08D308 8008C708 A48000A8 */ sh $zero, 0xa8($a0)
/* 08D30C 8008C70C A48000C0 */ sh $zero, 0xc0($a0)
/* 08D310 8008C710 AC80007C */ sw $zero, 0x7c($a0)
/* 08D314 8008C714 A4800236 */ sh $zero, 0x236($a0)
/* 08D318 8008C718 A4800078 */ sh $zero, 0x78($a0)
/* 08D31C 8008C71C 01091021 */ addu $v0, $t0, $t1
/* 08D320 8008C720 E484009C */ swc1 $f4, 0x9c($a0)
/* 08D324 8008C724 A4430000 */ sh $v1, ($v0)
/* 08D328 8008C728 A4430010 */ sh $v1, 0x10($v0)
/* 08D32C 8008C72C A4430020 */ sh $v1, 0x20($v0)
/* 08D330 8008C730 A4430030 */ sh $v1, 0x30($v0)
/* 08D334 8008C734 03E00008 */ jr $ra
/* 08D338 8008C738 A4800042 */ sh $zero, 0x42($a0)
glabel func_8008C73C
/* 08D33C 8008C73C 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 08D340 8008C740 AFB00018 */ sw $s0, 0x18($sp)
/* 08D344 8008C744 00058600 */ sll $s0, $a1, 0x18
/* 08D348 8008C748 00107603 */ sra $t6, $s0, 0x18
/* 08D34C 8008C74C AFA50024 */ sw $a1, 0x24($sp)
/* 08D350 8008C750 000E2E00 */ sll $a1, $t6, 0x18
/* 08D354 8008C754 AFBF001C */ sw $ra, 0x1c($sp)
/* 08D358 8008C758 00057E03 */ sra $t7, $a1, 0x18
/* 08D35C 8008C75C 01C08025 */ move $s0, $t6
/* 08D360 8008C760 01E02825 */ move $a1, $t7
/* 08D364 8008C764 0C0230D5 */ jal func_8008C354
/* 08D368 8008C768 AFA40020 */ sw $a0, 0x20($sp)
/* 08D36C 8008C76C 8FA60020 */ lw $a2, 0x20($sp)
/* 08D370 8008C770 24010080 */ li $at, 128
/* 08D374 8008C774 8CC200BC */ lw $v0, 0xbc($a2)
/* 08D378 8008C778 30580080 */ andi $t8, $v0, 0x80
/* 08D37C 8008C77C 1301004C */ beq $t8, $at, .L8008C8B0
/* 08D380 8008C780 30590040 */ andi $t9, $v0, 0x40
/* 08D384 8008C784 24010040 */ li $at, 64
/* 08D388 8008C788 13210049 */ beq $t9, $at, .L8008C8B0
/* 08D38C 8008C78C 24050001 */ li $a1, 1
/* 08D390 8008C790 84C900C0 */ lh $t1, 0xc0($a2)
/* 08D394 8008C794 2401FFEF */ li $at, -17
/* 08D398 8008C798 00414024 */ and $t0, $v0, $at
/* 08D39C 8008C79C 240100B6 */ li $at, 182
/* 08D3A0 8008C7A0 0121001A */ div $zero, $t1, $at
/* 08D3A4 8008C7A4 00005012 */ mflo $t2
/* 08D3A8 8008C7A8 ACC800BC */ sw $t0, 0xbc($a2)
/* 08D3AC 8008C7AC 05400004 */ bltz $t2, .L8008C7C0
/* 08D3B0 8008C7B0 00102040 */ sll $a0, $s0, 1
/* 08D3B4 8008C7B4 350C0040 */ ori $t4, $t0, 0x40
/* 08D3B8 8008C7B8 10000004 */ b .L8008C7CC
/* 08D3BC 8008C7BC ACCC00BC */ sw $t4, 0xbc($a2)
.L8008C7C0:
/* 08D3C0 8008C7C0 8CCD00BC */ lw $t5, 0xbc($a2)
/* 08D3C4 8008C7C4 35AE0080 */ ori $t6, $t5, 0x80
/* 08D3C8 8008C7C8 ACCE00BC */ sw $t6, 0xbc($a2)
.L8008C7CC:
/* 08D3CC 8008C7CC 94CF00B6 */ lhu $t7, 0xb6($a2)
/* 08D3D0 8008C7D0 84D9002E */ lh $t9, 0x2e($a2)
/* 08D3D4 8008C7D4 3C098016 */ lui $t1, %hi(D_80165190) # $t1, 0x8016
/* 08D3D8 8008C7D8 24080002 */ li $t0, 2
/* 08D3DC 8008C7DC 25295190 */ addiu $t1, %lo(D_80165190) # addiu $t1, $t1, 0x5190
/* 08D3E0 8008C7E0 35F80080 */ ori $t8, $t7, 0x80
/* 08D3E4 8008C7E4 A4D800B6 */ sh $t8, 0xb6($a2)
/* 08D3E8 8008C7E8 A4C800B2 */ sh $t0, 0xb2($a2)
/* 08D3EC 8008C7EC A4C000C0 */ sh $zero, 0xc0($a2)
/* 08D3F0 8008C7F0 ACC0007C */ sw $zero, 0x7c($a2)
/* 08D3F4 8008C7F4 A4C00078 */ sh $zero, 0x78($a2)
/* 08D3F8 8008C7F8 00891821 */ addu $v1, $a0, $t1
/* 08D3FC 8008C7FC A4D900AE */ sh $t9, 0xae($a2)
/* 08D400 8008C800 A4650000 */ sh $a1, ($v1)
/* 08D404 8008C804 A4650010 */ sh $a1, 0x10($v1)
/* 08D408 8008C808 A4650020 */ sh $a1, 0x20($v1)
/* 08D40C 8008C80C A4650030 */ sh $a1, 0x30($v1)
/* 08D410 8008C810 C4C4009C */ lwc1 $f4, 0x9c($a2)
/* 08D414 8008C814 00101080 */ sll $v0, $s0, 2
/* 08D418 8008C818 3C018016 */ lui $at, %hi(D_80165280)
/* 08D41C 8008C81C 00220821 */ addu $at, $at, $v0
/* 08D420 8008C820 E4245280 */ swc1 $f4, %lo(D_80165280)($at)
/* 08D424 8008C824 3C018016 */ lui $at, %hi(D_80165480) # 0x8016
/* 08D428 8008C828 00220821 */ addu $at, $at, $v0
/* 08D42C 8008C82C AC205480 */ sw $zero, %lo(D_80165480)($at) # 0x5480($at)
/* 08D430 8008C830 3C018016 */ lui $at, %hi(D_80165460) # 0x8016
/* 08D434 8008C834 00220821 */ addu $at, $at, $v0
/* 08D438 8008C838 AC205460 */ sw $zero, %lo(D_80165460)($at) # 0x5460($at)
/* 08D43C 8008C83C 3C018016 */ lui $at, %hi(D_80165440) # 0x8016
/* 08D440 8008C840 00220821 */ addu $at, $at, $v0
/* 08D444 8008C844 AC205440 */ sw $zero, %lo(D_80165440)($at) # 0x5440($at)
/* 08D448 8008C848 3C018016 */ lui $at, %hi(D_80165420) # 0x8016
/* 08D44C 8008C84C 00220821 */ addu $at, $at, $v0
/* 08D450 8008C850 AC205420 */ sw $zero, %lo(D_80165420)($at) # 0x5420($at)
/* 08D454 8008C854 3C018019 */ lui $at, %hi(D_8018D920) # 0x8019
/* 08D458 8008C858 00240821 */ addu $at, $at, $a0
/* 08D45C 8008C85C A420D920 */ sh $zero, %lo(D_8018D920)($at) # -0x26e0($at)
/* 08D460 8008C860 94C70000 */ lhu $a3, ($a2)
/* 08D464 8008C864 24014000 */ li $at, 16384
/* 08D468 8008C868 02002025 */ move $a0, $s0
/* 08D46C 8008C86C 30EA4000 */ andi $t2, $a3, 0x4000
/* 08D470 8008C870 1541000D */ bne $t2, $at, .L8008C8A8
/* 08D474 8008C874 30EB0100 */ andi $t3, $a3, 0x100
/* 08D478 8008C878 24010100 */ li $at, 256
/* 08D47C 8008C87C 1161000A */ beq $t3, $at, .L8008C8A8
/* 08D480 8008C880 00000000 */ nop
/* 08D484 8008C884 94C50254 */ lhu $a1, 0x254($a2)
/* 08D488 8008C888 3C012900 */ lui $at, (0x29008003 >> 16) # lui $at, 0x2900
/* 08D48C 8008C88C 34218003 */ ori $at, (0x29008003 & 0xFFFF) # ori $at, $at, 0x8003
/* 08D490 8008C890 00056100 */ sll $t4, $a1, 4
/* 08D494 8008C894 01812821 */ addu $a1, $t4, $at
/* 08D498 8008C898 0C03243D */ jal func_800C90F4
/* 08D49C 8008C89C 320400FF */ andi $a0, $s0, 0xff
/* 08D4A0 8008C8A0 10000004 */ b .L8008C8B4
/* 08D4A4 8008C8A4 8FBF001C */ lw $ra, 0x1c($sp)
.L8008C8A8:
/* 08D4A8 8008C8A8 0C00263F */ jal func_800098FC
/* 08D4AC 8008C8AC 00C02825 */ move $a1, $a2
.L8008C8B0:
/* 08D4B0 8008C8B0 8FBF001C */ lw $ra, 0x1c($sp)
.L8008C8B4:
/* 08D4B4 8008C8B4 8FB00018 */ lw $s0, 0x18($sp)
/* 08D4B8 8008C8B8 27BD0020 */ addiu $sp, $sp, 0x20
/* 08D4BC 8008C8BC 03E00008 */ jr $ra
/* 08D4C0 8008C8C0 00000000 */ nop
glabel func_8008C8C4
/* 08D4C4 8008C8C4 AFA50004 */ sw $a1, 4($sp)
/* 08D4C8 8008C8C8 8C9800BC */ lw $t8, 0xbc($a0)
/* 08D4CC 8008C8CC 2401FF7F */ li $at, -129
/* 08D4D0 8008C8D0 00057600 */ sll $t6, $a1, 0x18
/* 08D4D4 8008C8D4 0301C824 */ and $t9, $t8, $at
/* 08D4D8 8008C8D8 2401FFBF */ li $at, -65
/* 08D4DC 8008C8DC 03214824 */ and $t1, $t9, $at
/* 08D4E0 8008C8E0 848A00AE */ lh $t2, 0xae($a0)
/* 08D4E4 8008C8E4 000E2E03 */ sra $a1, $t6, 0x18
/* 08D4E8 8008C8E8 AC9900BC */ sw $t9, 0xbc($a0)
/* 08D4EC 8008C8EC 2401F7FF */ li $at, -2049
/* 08D4F0 8008C8F0 3C0E8016 */ lui $t6, %hi(D_80165190) # $t6, 0x8016
/* 08D4F4 8008C8F4 AC8900BC */ sw $t1, 0xbc($a0)
/* 08D4F8 8008C8F8 01216024 */ and $t4, $t1, $at
/* 08D4FC 8008C8FC 25CE5190 */ addiu $t6, %lo(D_80165190) # addiu $t6, $t6, 0x5190
/* 08D500 8008C900 00056840 */ sll $t5, $a1, 1
/* 08D504 8008C904 24060001 */ li $a2, 1
/* 08D508 8008C908 A48000A8 */ sh $zero, 0xa8($a0)
/* 08D50C 8008C90C AC80007C */ sw $zero, 0x7c($a0)
/* 08D510 8008C910 A48000C0 */ sh $zero, 0xc0($a0)
/* 08D514 8008C914 AC8C00BC */ sw $t4, 0xbc($a0)
/* 08D518 8008C918 01AE1021 */ addu $v0, $t5, $t6
/* 08D51C 8008C91C A48A002E */ sh $t2, 0x2e($a0)
/* 08D520 8008C920 A4460000 */ sh $a2, ($v0)
/* 08D524 8008C924 A4460010 */ sh $a2, 0x10($v0)
/* 08D528 8008C928 A4460020 */ sh $a2, 0x20($v0)
/* 08D52C 8008C92C A4460030 */ sh $a2, 0x30($v0)
/* 08D530 8008C930 948F0046 */ lhu $t7, 0x46($a0)
/* 08D534 8008C934 3C198016 */ lui $t9, %hi(D_80165460) # 0x8016
/* 08D538 8008C938 00051880 */ sll $v1, $a1, 2
/* 08D53C 8008C93C 31F8FFBF */ andi $t8, $t7, 0xffbf
/* 08D540 8008C940 A4980046 */ sh $t8, 0x46($a0)
/* 08D544 8008C944 0323C821 */ addu $t9, $t9, $v1
/* 08D548 8008C948 8F395460 */ lw $t9, %lo(D_80165460)($t9) # 0x5460($t9)
/* 08D54C 8008C94C 3C0A800E */ lui $t2, %hi(gModeSelection) # $t2, 0x800e
/* 08D550 8008C950 14D9000A */ bne $a2, $t9, .L8008C97C
/* 08D554 8008C954 00000000 */ nop
/* 08D558 8008C958 94880000 */ lhu $t0, ($a0)
/* 08D55C 8008C95C 24014000 */ li $at, 16384
/* 08D560 8008C960 31094000 */ andi $t1, $t0, 0x4000
/* 08D564 8008C964 15210005 */ bne $t1, $at, .L8008C97C
/* 08D568 8008C968 3C0142C8 */ li $at, 0x42C80000 # 100.000000
/* 08D56C 8008C96C 44813000 */ mtc1 $at, $f6
/* 08D570 8008C970 C484009C */ lwc1 $f4, 0x9c($a0)
/* 08D574 8008C974 46062200 */ add.s $f8, $f4, $f6
/* 08D578 8008C978 E488009C */ swc1 $f8, 0x9c($a0)
.L8008C97C:
/* 08D57C 8008C97C 8D4AC53C */ lw $t2, %lo(gModeSelection)($t2)
/* 08D580 8008C980 24010002 */ li $at, 2
/* 08D584 8008C984 15410017 */ bne $t2, $at, .L8008C9E4
/* 08D588 8008C988 00000000 */ nop
/* 08D58C 8008C98C 948B0000 */ lhu $t3, ($a0)
/* 08D590 8008C990 24011000 */ li $at, 4096
/* 08D594 8008C994 3C0D800E */ lui $t5, %hi(D_800DC51C) # $t5, 0x800e
/* 08D598 8008C998 316C1000 */ andi $t4, $t3, 0x1000
/* 08D59C 8008C99C 15810011 */ bne $t4, $at, .L8008C9E4
/* 08D5A0 8008C9A0 00000000 */ nop
/* 08D5A4 8008C9A4 95ADC51C */ lhu $t5, %lo(D_800DC51C)($t5)
/* 08D5A8 8008C9A8 15A0000E */ bnez $t5, .L8008C9E4
/* 08D5AC 8008C9AC 00000000 */ nop
/* 08D5B0 8008C9B0 848E00CA */ lh $t6, 0xca($a0)
/* 08D5B4 8008C9B4 3C188016 */ lui $t8, %hi(D_801643B8)
/* 08D5B8 8008C9B8 0303C021 */ addu $t8, $t8, $v1
/* 08D5BC 8008C9BC 31CF0002 */ andi $t7, $t6, 2
/* 08D5C0 8008C9C0 15E00008 */ bnez $t7, .L8008C9E4
/* 08D5C4 8008C9C4 00000000 */ nop
/* 08D5C8 8008C9C8 8F1843B8 */ lw $t8, %lo(D_801643B8)($t8)
/* 08D5CC 8008C9CC 13000005 */ beqz $t8, .L8008C9E4
/* 08D5D0 8008C9D0 00000000 */ nop
/* 08D5D4 8008C9D4 8C99000C */ lw $t9, 0xc($a0)
/* 08D5D8 8008C9D8 3C010040 */ lui $at, 0x40
/* 08D5DC 8008C9DC 03214025 */ or $t0, $t9, $at
/* 08D5E0 8008C9E0 AC88000C */ sw $t0, 0xc($a0)
.L8008C9E4:
/* 08D5E4 8008C9E4 03E00008 */ jr $ra
/* 08D5E8 8008C9E8 00000000 */ nop
glabel func_8008C9EC
/* 08D5EC 8008C9EC 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 08D5F0 8008C9F0 3C0F800E */ lui $t7, %hi(D_800E6F60) # $t7, 0x800e
@@ -0,0 +1,104 @@
glabel func_8008C73C
/* 08D33C 8008C73C 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 08D340 8008C740 AFB00018 */ sw $s0, 0x18($sp)
/* 08D344 8008C744 00058600 */ sll $s0, $a1, 0x18
/* 08D348 8008C748 00107603 */ sra $t6, $s0, 0x18
/* 08D34C 8008C74C AFA50024 */ sw $a1, 0x24($sp)
/* 08D350 8008C750 000E2E00 */ sll $a1, $t6, 0x18
/* 08D354 8008C754 AFBF001C */ sw $ra, 0x1c($sp)
/* 08D358 8008C758 00057E03 */ sra $t7, $a1, 0x18
/* 08D35C 8008C75C 01C08025 */ move $s0, $t6
/* 08D360 8008C760 01E02825 */ move $a1, $t7
/* 08D364 8008C764 0C0230D5 */ jal func_8008C354
/* 08D368 8008C768 AFA40020 */ sw $a0, 0x20($sp)
/* 08D36C 8008C76C 8FA60020 */ lw $a2, 0x20($sp)
/* 08D370 8008C770 24010080 */ li $at, 128
/* 08D374 8008C774 8CC200BC */ lw $v0, 0xbc($a2)
/* 08D378 8008C778 30580080 */ andi $t8, $v0, 0x80
/* 08D37C 8008C77C 1301004C */ beq $t8, $at, .L8008C8B0
/* 08D380 8008C780 30590040 */ andi $t9, $v0, 0x40
/* 08D384 8008C784 24010040 */ li $at, 64
/* 08D388 8008C788 13210049 */ beq $t9, $at, .L8008C8B0
/* 08D38C 8008C78C 24050001 */ li $a1, 1
/* 08D390 8008C790 84C900C0 */ lh $t1, 0xc0($a2)
/* 08D394 8008C794 2401FFEF */ li $at, -17
/* 08D398 8008C798 00414024 */ and $t0, $v0, $at
/* 08D39C 8008C79C 240100B6 */ li $at, 182
/* 08D3A0 8008C7A0 0121001A */ div $zero, $t1, $at
/* 08D3A4 8008C7A4 00005012 */ mflo $t2
/* 08D3A8 8008C7A8 ACC800BC */ sw $t0, 0xbc($a2)
/* 08D3AC 8008C7AC 05400004 */ bltz $t2, .L8008C7C0
/* 08D3B0 8008C7B0 00102040 */ sll $a0, $s0, 1
/* 08D3B4 8008C7B4 350C0040 */ ori $t4, $t0, 0x40
/* 08D3B8 8008C7B8 10000004 */ b .L8008C7CC
/* 08D3BC 8008C7BC ACCC00BC */ sw $t4, 0xbc($a2)
.L8008C7C0:
/* 08D3C0 8008C7C0 8CCD00BC */ lw $t5, 0xbc($a2)
/* 08D3C4 8008C7C4 35AE0080 */ ori $t6, $t5, 0x80
/* 08D3C8 8008C7C8 ACCE00BC */ sw $t6, 0xbc($a2)
.L8008C7CC:
/* 08D3CC 8008C7CC 94CF00B6 */ lhu $t7, 0xb6($a2)
/* 08D3D0 8008C7D0 84D9002E */ lh $t9, 0x2e($a2)
/* 08D3D4 8008C7D4 3C098016 */ lui $t1, %hi(D_80165190) # $t1, 0x8016
/* 08D3D8 8008C7D8 24080002 */ li $t0, 2
/* 08D3DC 8008C7DC 25295190 */ addiu $t1, %lo(D_80165190) # addiu $t1, $t1, 0x5190
/* 08D3E0 8008C7E0 35F80080 */ ori $t8, $t7, 0x80
/* 08D3E4 8008C7E4 A4D800B6 */ sh $t8, 0xb6($a2)
/* 08D3E8 8008C7E8 A4C800B2 */ sh $t0, 0xb2($a2)
/* 08D3EC 8008C7EC A4C000C0 */ sh $zero, 0xc0($a2)
/* 08D3F0 8008C7F0 ACC0007C */ sw $zero, 0x7c($a2)
/* 08D3F4 8008C7F4 A4C00078 */ sh $zero, 0x78($a2)
/* 08D3F8 8008C7F8 00891821 */ addu $v1, $a0, $t1
/* 08D3FC 8008C7FC A4D900AE */ sh $t9, 0xae($a2)
/* 08D400 8008C800 A4650000 */ sh $a1, ($v1)
/* 08D404 8008C804 A4650010 */ sh $a1, 0x10($v1)
/* 08D408 8008C808 A4650020 */ sh $a1, 0x20($v1)
/* 08D40C 8008C80C A4650030 */ sh $a1, 0x30($v1)
/* 08D410 8008C810 C4C4009C */ lwc1 $f4, 0x9c($a2)
/* 08D414 8008C814 00101080 */ sll $v0, $s0, 2
/* 08D418 8008C818 3C018016 */ lui $at, %hi(D_80165280)
/* 08D41C 8008C81C 00220821 */ addu $at, $at, $v0
/* 08D420 8008C820 E4245280 */ swc1 $f4, %lo(D_80165280)($at)
/* 08D424 8008C824 3C018016 */ lui $at, %hi(D_80165480) # 0x8016
/* 08D428 8008C828 00220821 */ addu $at, $at, $v0
/* 08D42C 8008C82C AC205480 */ sw $zero, %lo(D_80165480)($at) # 0x5480($at)
/* 08D430 8008C830 3C018016 */ lui $at, %hi(D_80165460) # 0x8016
/* 08D434 8008C834 00220821 */ addu $at, $at, $v0
/* 08D438 8008C838 AC205460 */ sw $zero, %lo(D_80165460)($at) # 0x5460($at)
/* 08D43C 8008C83C 3C018016 */ lui $at, %hi(D_80165440) # 0x8016
/* 08D440 8008C840 00220821 */ addu $at, $at, $v0
/* 08D444 8008C844 AC205440 */ sw $zero, %lo(D_80165440)($at) # 0x5440($at)
/* 08D448 8008C848 3C018016 */ lui $at, %hi(D_80165420) # 0x8016
/* 08D44C 8008C84C 00220821 */ addu $at, $at, $v0
/* 08D450 8008C850 AC205420 */ sw $zero, %lo(D_80165420)($at) # 0x5420($at)
/* 08D454 8008C854 3C018019 */ lui $at, %hi(D_8018D920) # 0x8019
/* 08D458 8008C858 00240821 */ addu $at, $at, $a0
/* 08D45C 8008C85C A420D920 */ sh $zero, %lo(D_8018D920)($at) # -0x26e0($at)
/* 08D460 8008C860 94C70000 */ lhu $a3, ($a2)
/* 08D464 8008C864 24014000 */ li $at, 16384
/* 08D468 8008C868 02002025 */ move $a0, $s0
/* 08D46C 8008C86C 30EA4000 */ andi $t2, $a3, 0x4000
/* 08D470 8008C870 1541000D */ bne $t2, $at, .L8008C8A8
/* 08D474 8008C874 30EB0100 */ andi $t3, $a3, 0x100
/* 08D478 8008C878 24010100 */ li $at, 256
/* 08D47C 8008C87C 1161000A */ beq $t3, $at, .L8008C8A8
/* 08D480 8008C880 00000000 */ nop
/* 08D484 8008C884 94C50254 */ lhu $a1, 0x254($a2)
/* 08D488 8008C888 3C012900 */ lui $at, (0x29008003 >> 16) # lui $at, 0x2900
/* 08D48C 8008C88C 34218003 */ ori $at, (0x29008003 & 0xFFFF) # ori $at, $at, 0x8003
/* 08D490 8008C890 00056100 */ sll $t4, $a1, 4
/* 08D494 8008C894 01812821 */ addu $a1, $t4, $at
/* 08D498 8008C898 0C03243D */ jal func_800C90F4
/* 08D49C 8008C89C 320400FF */ andi $a0, $s0, 0xff
/* 08D4A0 8008C8A0 10000004 */ b .L8008C8B4
/* 08D4A4 8008C8A4 8FBF001C */ lw $ra, 0x1c($sp)
.L8008C8A8:
/* 08D4A8 8008C8A8 0C00263F */ jal func_800098FC
/* 08D4AC 8008C8AC 00C02825 */ move $a1, $a2
.L8008C8B0:
/* 08D4B0 8008C8B0 8FBF001C */ lw $ra, 0x1c($sp)
.L8008C8B4:
/* 08D4B4 8008C8B4 8FB00018 */ lw $s0, 0x18($sp)
/* 08D4B8 8008C8B8 27BD0020 */ addiu $sp, $sp, 0x20
/* 08D4BC 8008C8BC 03E00008 */ jr $ra
/* 08D4C0 8008C8C0 00000000 */ nop
@@ -0,0 +1,77 @@
glabel func_8008C8C4
/* 08D4C4 8008C8C4 AFA50004 */ sw $a1, 4($sp)
/* 08D4C8 8008C8C8 8C9800BC */ lw $t8, 0xbc($a0)
/* 08D4CC 8008C8CC 2401FF7F */ li $at, -129
/* 08D4D0 8008C8D0 00057600 */ sll $t6, $a1, 0x18
/* 08D4D4 8008C8D4 0301C824 */ and $t9, $t8, $at
/* 08D4D8 8008C8D8 2401FFBF */ li $at, -65
/* 08D4DC 8008C8DC 03214824 */ and $t1, $t9, $at
/* 08D4E0 8008C8E0 848A00AE */ lh $t2, 0xae($a0)
/* 08D4E4 8008C8E4 000E2E03 */ sra $a1, $t6, 0x18
/* 08D4E8 8008C8E8 AC9900BC */ sw $t9, 0xbc($a0)
/* 08D4EC 8008C8EC 2401F7FF */ li $at, -2049
/* 08D4F0 8008C8F0 3C0E8016 */ lui $t6, %hi(D_80165190) # $t6, 0x8016
/* 08D4F4 8008C8F4 AC8900BC */ sw $t1, 0xbc($a0)
/* 08D4F8 8008C8F8 01216024 */ and $t4, $t1, $at
/* 08D4FC 8008C8FC 25CE5190 */ addiu $t6, %lo(D_80165190) # addiu $t6, $t6, 0x5190
/* 08D500 8008C900 00056840 */ sll $t5, $a1, 1
/* 08D504 8008C904 24060001 */ li $a2, 1
/* 08D508 8008C908 A48000A8 */ sh $zero, 0xa8($a0)
/* 08D50C 8008C90C AC80007C */ sw $zero, 0x7c($a0)
/* 08D510 8008C910 A48000C0 */ sh $zero, 0xc0($a0)
/* 08D514 8008C914 AC8C00BC */ sw $t4, 0xbc($a0)
/* 08D518 8008C918 01AE1021 */ addu $v0, $t5, $t6
/* 08D51C 8008C91C A48A002E */ sh $t2, 0x2e($a0)
/* 08D520 8008C920 A4460000 */ sh $a2, ($v0)
/* 08D524 8008C924 A4460010 */ sh $a2, 0x10($v0)
/* 08D528 8008C928 A4460020 */ sh $a2, 0x20($v0)
/* 08D52C 8008C92C A4460030 */ sh $a2, 0x30($v0)
/* 08D530 8008C930 948F0046 */ lhu $t7, 0x46($a0)
/* 08D534 8008C934 3C198016 */ lui $t9, %hi(D_80165460) # 0x8016
/* 08D538 8008C938 00051880 */ sll $v1, $a1, 2
/* 08D53C 8008C93C 31F8FFBF */ andi $t8, $t7, 0xffbf
/* 08D540 8008C940 A4980046 */ sh $t8, 0x46($a0)
/* 08D544 8008C944 0323C821 */ addu $t9, $t9, $v1
/* 08D548 8008C948 8F395460 */ lw $t9, %lo(D_80165460)($t9) # 0x5460($t9)
/* 08D54C 8008C94C 3C0A800E */ lui $t2, %hi(gModeSelection) # $t2, 0x800e
/* 08D550 8008C950 14D9000A */ bne $a2, $t9, .L8008C97C
/* 08D554 8008C954 00000000 */ nop
/* 08D558 8008C958 94880000 */ lhu $t0, ($a0)
/* 08D55C 8008C95C 24014000 */ li $at, 16384
/* 08D560 8008C960 31094000 */ andi $t1, $t0, 0x4000
/* 08D564 8008C964 15210005 */ bne $t1, $at, .L8008C97C
/* 08D568 8008C968 3C0142C8 */ li $at, 0x42C80000 # 100.000000
/* 08D56C 8008C96C 44813000 */ mtc1 $at, $f6
/* 08D570 8008C970 C484009C */ lwc1 $f4, 0x9c($a0)
/* 08D574 8008C974 46062200 */ add.s $f8, $f4, $f6
/* 08D578 8008C978 E488009C */ swc1 $f8, 0x9c($a0)
.L8008C97C:
/* 08D57C 8008C97C 8D4AC53C */ lw $t2, %lo(gModeSelection)($t2)
/* 08D580 8008C980 24010002 */ li $at, 2
/* 08D584 8008C984 15410017 */ bne $t2, $at, .L8008C9E4
/* 08D588 8008C988 00000000 */ nop
/* 08D58C 8008C98C 948B0000 */ lhu $t3, ($a0)
/* 08D590 8008C990 24011000 */ li $at, 4096
/* 08D594 8008C994 3C0D800E */ lui $t5, %hi(D_800DC51C) # $t5, 0x800e
/* 08D598 8008C998 316C1000 */ andi $t4, $t3, 0x1000
/* 08D59C 8008C99C 15810011 */ bne $t4, $at, .L8008C9E4
/* 08D5A0 8008C9A0 00000000 */ nop
/* 08D5A4 8008C9A4 95ADC51C */ lhu $t5, %lo(D_800DC51C)($t5)
/* 08D5A8 8008C9A8 15A0000E */ bnez $t5, .L8008C9E4
/* 08D5AC 8008C9AC 00000000 */ nop
/* 08D5B0 8008C9B0 848E00CA */ lh $t6, 0xca($a0)
/* 08D5B4 8008C9B4 3C188016 */ lui $t8, %hi(D_801643B8)
/* 08D5B8 8008C9B8 0303C021 */ addu $t8, $t8, $v1
/* 08D5BC 8008C9BC 31CF0002 */ andi $t7, $t6, 2
/* 08D5C0 8008C9C0 15E00008 */ bnez $t7, .L8008C9E4
/* 08D5C4 8008C9C4 00000000 */ nop
/* 08D5C8 8008C9C8 8F1843B8 */ lw $t8, %lo(D_801643B8)($t8)
/* 08D5CC 8008C9CC 13000005 */ beqz $t8, .L8008C9E4
/* 08D5D0 8008C9D0 00000000 */ nop
/* 08D5D4 8008C9D4 8C99000C */ lw $t9, 0xc($a0)
/* 08D5D8 8008C9D8 3C010040 */ lui $at, 0x40
/* 08D5DC 8008C9DC 03214025 */ or $t0, $t9, $at
/* 08D5E0 8008C9E0 AC88000C */ sw $t0, 0xc($a0)
.L8008C9E4:
/* 08D5E4 8008C9E4 03E00008 */ jr $ra
/* 08D5E8 8008C9E8 00000000 */ nop
+1 -1
View File
@@ -85,7 +85,7 @@ SECTIONS
BUILD_DIR/asm/code_8006E9C0.o(.text);
BUILD_DIR/asm/code_80071F00.o(.text);
BUILD_DIR/asm/code_80086E70.o(.text);
BUILD_DIR/asm/code_8008C1D0.o(.text);
BUILD_DIR/src/code_8008C1D0.o(.text);
BUILD_DIR/asm/code_80091750.o(.text);
BUILD_DIR/src/code_800AF9B0.o(.text);
BUILD_DIR/asm/audio/synthesis.o(.text);
+393
View File
@@ -0,0 +1,393 @@
#include <ultra64.h>
#include <macros.h>
#include "types.h"
#include "common_structs.h"
#include "functions.h"
// external funcs
extern s32 func_80031F48(Player *player, float arg1);
extern s32 func_8006B8B4();
extern s32 gModeSelection;
extern s16 D_80165190[4][8];
extern f32 D_80165280[];
extern s32 D_80165420[];
extern s32 D_80165440[];
extern s32 D_80165460[];
extern s32 D_80165480[];
// unk extern
extern s32 D_8018D920[];
// this file funcs
extern s32 func_8008D0E4(); // static
extern s32 func_8008D3B0(); // static
extern s32 func_8008D554(); // static
extern s32 func_8008D760(); // static
extern s32 func_8008D97C(); // static
extern s32 func_8008E884(); // static
extern s32 func_8008EC34(); // static
extern s32 func_8008EEC4(); // static
extern s32 func_8008F0E8(void *); // static
extern s32 func_8008F3E0(void *); // static
extern s32 func_8008F5A4(void *, s8); // static
extern s32 func_8008FEDC(void *, s8); // static
extern void func_8008C8C4(Player *player, s8 arg1);
extern void func_8008C6D0(Player *player, s8 arg1);
extern void func_800C90F4();
extern void func_800C9060();
extern void func_800098FC();
extern f32 D_800E37B0[];
extern f32 D_800E3790[];
extern u16 D_800DC51C;
// bss
extern s32 D_801643B8[];
UNUSED void func_unnamed(void) {
}
UNUSED void func_8008C1D8(UNUSED s32 arg0) {
}
UNUSED void func_8008C1E0(UNUSED s32 arg0, UNUSED s32 arg1) {
arg1 = 4;
}
UNUSED void func_unnamed1(UNUSED s32 arg0) {
}
UNUSED void func_unnamed2(UNUSED s32 arg0) {
}
UNUSED void func_unnamed3(void) {
}
UNUSED void func_8008C204(void) {
}
UNUSED void func_unnamed4(void) {
}
UNUSED void func_8008C214(void) {
}
UNUSED void func_unnamed5(void) {
}
UNUSED void func_unnamed6(void) {
}
UNUSED void func_unnamed7(void) {
}
UNUSED void func_unnamed8(void) {
}
UNUSED void func_8008C23C(void) {
}
UNUSED void func_unnamed9(void) {
}
UNUSED void func_unnamed10(void) {
}
UNUSED void func_unnamed11(void) {
}
UNUSED void func_unnamed12(void) {
}
UNUSED void func_unnamed13(void) {
}
UNUSED void func_unnamed14(void) {
}
UNUSED void func_unnamed15(void) {
}
UNUSED void func_unnamed16(void) {
}
UNUSED void func_unnamed17(void) {
}
UNUSED void func_unnamed18(void) {
}
UNUSED void func_unnamed19(void) {
}
UNUSED void func_unnamed20(void) {
}
UNUSED void func_unnamed21(void) {
}
UNUSED void func_unnamed22(UNUSED s32 arg0, UNUSED s32 arg1) {
arg1 = 4;
}
UNUSED void func_unnamed23(void) {
}
UNUSED void func_unnamed24(void) {
}
UNUSED void func_unnamed25(void) {
}
UNUSED void func_unnamed26(void) {
}
UNUSED void func_unnamed27(void) {
}
UNUSED void func_unnamed28(void) {
}
UNUSED void func_unnamed29(void) {
}
UNUSED void func_unnamed30(void) {
}
UNUSED void func_unnamed31(void) {
}
UNUSED void func_unnamed32(void) {
}
UNUSED void func_unnamed33(void) {
}
void func_8008C310(Player *player) {
if ((player->unk_00C & 2) || (player->unk_00C & 4) || ((player->unk_00C << 9) < 0) || (player->unk_00C & 0x1000000)) {
player->unk_0B6 = ((u16)player->unk_0B6 | 0x1000);
}
}
UNUSED void func_unnamed34(void) {
}
void func_8008C354(Player *player, s8 arg1) {
if ((player->unk_0BC & 0x400) == 0x400) {
func_8008C6D0(player, arg1);
}
if (((player->unk_0BC & 0x80) == 0x80) || (player->unk_0BC & 0x40) == 0x40) {
func_8008C8C4(player, arg1);
}
if ((player->unk_0BC & 0x800) == 0x800) {
func_8008D0E4(player, arg1);
}
if ((player->unk_044 & 0x4000) != 0) {
func_8008D3B0(player, arg1);
}
if ((player->unk_0BC & 0x2000) == 0x2000) {
func_8008D554(player);
}
if ((player->unk_0BC & 0x80000) == 0x80000) {
func_8008D760(player);
}
if ((player->unk_0BC & 0x800000) == 0x800000) {
func_8008D97C(player);
}
if ((player->unk_0BC & 0x1000000) == 0x1000000) {
func_8008E884(player, arg1);
}
if ((player->unk_0BC & 0x2000000) == 0x2000000) {
func_8008EC34(player, arg1);
}
if ((player->unk_0BC & 0x100000) == 0x100000) {
func_8008EEC4(player);
}
if ((player->unk_0BC & 4) == 4) {
func_8008F0E8(player);
}
if ((player->unk_0BC & 0x4000) == 0x4000) {
func_8008F3E0(player);
}
if ((player->unk_0BC & 0x10000) == 0x10000) {
func_8008F5A4(player, arg1);
}
if ((player->unk_0BC & 0x10000000) == 0x10000000) {
func_8008FEDC(player, arg1);
}
player->unk_044 = (s16) (player->unk_044 & 0xFFFE);
player->unk_0BC = (s32) (player->unk_0BC & ~0x20);
}
void func_8008C528(Player *player, s8 arg1) {
UNUSED s32 sp24;
s32 temp_v1;
func_8008C354(player, arg1);
func_8008C310(player);
temp_v1 = player->unk_254;
player->unk_0C2 = 0;
player->unk_0F0 = D_800E37B0[temp_v1];
player->unk_0F4 = 0.0f;
player->unk_0EC = D_800E3790[temp_v1];
player->unk_0A8 = 0;
player->unk_0BC = player->unk_0BC | 0x400;
player->unk_0BC = player->unk_0BC & ~0x10;
player->unk_0C0 = 0;
player->unk_236 = 2;
player->unk_042 = 0;
if (((player->unk_000 & 0x4000) == 0x4000) && ((player->unk_000 & 0x100) != 0x100)) {
func_800C90F4( (u8) arg1, (temp_v1 * 0x10) + 0x29008005);
func_800C9060( (u8) arg1, 0x19009005);
} else {
func_800098FC(arg1, player);
}
player->unk_00C = (s32) (player->unk_00C & ~4);
}
void func_8008C62C(Player *player, s8 arg1) {
func_80031F48(player, 5.0f);
player->unk_0A8 += (s16)0xA0;
player->unk_042 += (s16)0x71C;
if (player->unk_0A8 >= 0x2000) {
player->unk_0A8 = 0;
player->unk_236 = (s16) (player->unk_236 - 1);
if (player->unk_236 == 0) {
player->unk_0A8 = 0x2000;
func_8008C6D0(player, arg1);
if (gModeSelection == 3) {
func_8006B8B4(player, arg1);
}
}
}
}
void func_8008C6D0(Player *player, s8 arg1) {
player->unk_206 = 0;
player->unk_0C4 = 0;
player->unk_0BC = (s32) (player->unk_0BC & ~0x400);
player->unk_0A8 = 0;
player->unk_0C0 = 0;
player->unk_07C = 0;
player->unk_236 = 0;
player->unk_078 = 0;
player->unk_09C = 0.0f;
D_80165190[0][arg1] = 1;
D_80165190[1][arg1] = 1;
D_80165190[2][arg1] = 1;
D_80165190[3][arg1] = 1;
player->unk_042 = 0;
}
/*
void func_8008C73C(Player *player, s8 arg1, s8 unk3, s8 unk4) {
s32 temp_v0;
func_8008C354(player, arg1);
//temp_v0 = player->unk_0BC;
if (((player->unk_0BC & 0x80) != 0x80) && ((player->unk_0BC & 0x40) != 0x40)) {
player->unk_0BC = player->unk_0BC & ~0x10;
if (((s32) player->unk_0C0 / 182) >= 0) {
player->unk_0BC = (s32) ((player->unk_0BC & ~0x10) | 0x40);
} else {
player->unk_0BC = (s32) (player->unk_0BC | 0x80);
}
player->unk_0B6 = (u16) (player->unk_0B6 | 0x80);
player->unk_0B2 = 2;
player->unk_0C0 = 0;
player->unk_07C = 0;
player->unk_078 = 0;
player->unk_0AE = (s16) player->unk_02E;
D_80165190[0][arg1] = 1;
D_80165190[1][arg1] = 1;
D_80165190[2][arg1] = 1;
D_80165190[3][arg1] = 1;
D_80165280[arg1++] = (f32) player->unk_09C;
D_80165480[arg1++] = 0.0f;
D_80165460[arg1++] = 0.0f;
D_80165440[arg1++] = 0.0f;
D_80165420[arg1++] = 0.0f;
D_8018D920[D_80165190[0][0]] = 0;
if (((player->unk_000 & 0x4000) == 0x4000) && ((player->unk_000 & 0x100) != 0x100)) {
func_800C90F4(arg1 & 0xFF, (player->unk_254 * 0x10) + 0x29008003, player, player->unk_000);
return;
}
func_800098FC(arg1, player, player, player->unk_000);
// Duplicate return node #9. Try simplifying control flow for better match
}
}
*/
GLOBAL_ASM("asm/non_matchings/code_8008C1D0/func_8008C73C.s")
/*
void func_8008C8C4(Player *player, s8 arg1) {
s32 temp_v1;
player->unk_0BC = player->unk_0BC & ~0x80;
player->unk_0BC = player->unk_0BC & ~0x40;
player->unk_02E = player->unk_0AE;
player->unk_0A8 = 0;
player->unk_07C = 0;
player->unk_0C0 = 0;
player->unk_0BC &= ~0x800;
D_80165190[0][arg1] = 1;
D_80165190[1][arg1] = 1;
D_80165190[2][arg1] = 1;
D_80165190[3][arg1] = 1;
player->unk_046 &= 0xFFBF;
temp_v1 = arg1++;
if ((D_80165460[temp_v1] == 1) && (player->unk_000 & 0x4000 == 0x4000)) {
player->unk_09C += 100.0f;
}
if (gModeSelection == 2 && player->unk_000 & 0x1000 == 0x1000 && D_800DC51C == 0 && player->unk_0CA & 2 == 0 && D_801643B8[temp_v1] != 0) {
player->unk_00C |= 0x400000;
}
}
*/
GLOBAL_ASM("asm/non_matchings/code_8008C1D0/func_8008C8C4.s")
GLOBAL_ASM("asm/non_matchings/code_8008C1D0/code_8008C1D0.s")