# 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" glabel func_80281C40 /* 125280 80281C40 27BDFFD8 */ addiu $sp, $sp, -0x28 /* 125284 80281C44 AFB20020 */ sw $s2, 0x20($sp) /* 125288 80281C48 3C128028 */ lui $s2, %hi(D_802874FC) # $s2, 0x8028 /* 12528C 80281C4C 265274FC */ addiu $s2, %lo(D_802874FC) # addiu $s2, $s2, 0x74fc /* 125290 80281C50 8E4E0000 */ lw $t6, ($s2) /* 125294 80281C54 AFB1001C */ sw $s1, 0x1c($sp) /* 125298 80281C58 AFBF0024 */ sw $ra, 0x24($sp) /* 12529C 80281C5C AFB00018 */ sw $s0, 0x18($sp) /* 1252A0 80281C60 19C0000E */ blez $t6, .L80281C9C /* 1252A4 80281C64 00008825 */ move $s1, $zero /* 1252A8 80281C68 3C108028 */ lui $s0, %hi(D_80287560) # $s0, 0x8028 /* 1252AC 80281C6C 26107560 */ addiu $s0, %lo(D_80287560) # addiu $s0, $s0, 0x7560 /* 1252B0 80281C70 86040000 */ lh $a0, ($s0) .L80281C74: /* 1252B4 80281C74 86050002 */ lh $a1, 2($s0) /* 1252B8 80281C78 8E060008 */ lw $a2, 8($s0) /* 1252BC 80281C7C 0C015E7E */ jal func_800579F8 /* 1252C0 80281C80 8E070004 */ lw $a3, 4($s0) /* 1252C4 80281C84 8E4F0000 */ lw $t7, ($s2) /* 1252C8 80281C88 26310001 */ addiu $s1, $s1, 1 /* 1252CC 80281C8C 2610000C */ addiu $s0, $s0, 0xc /* 1252D0 80281C90 022F082A */ slt $at, $s1, $t7 /* 1252D4 80281C94 5420FFF7 */ bnel $at, $zero, .L80281C74 /* 1252D8 80281C98 86040000 */ lh $a0, ($s0) .L80281C9C: /* 1252DC 80281C9C 8FBF0024 */ lw $ra, 0x24($sp) /* 1252E0 80281CA0 8FB00018 */ lw $s0, 0x18($sp) /* 1252E4 80281CA4 8FB1001C */ lw $s1, 0x1c($sp) /* 1252E8 80281CA8 8FB20020 */ lw $s2, 0x20($sp) /* 1252EC 80281CAC 03E00008 */ jr $ra /* 1252F0 80281CB0 27BD0028 */ addiu $sp, $sp, 0x28 glabel func_80281CB4 /* 1252F4 80281CB4 3C088028 */ lui $t0, %hi(D_802874FC) # $t0, 0x8028 /* 1252F8 80281CB8 250874FC */ addiu $t0, %lo(D_802874FC) # addiu $t0, $t0, 0x74fc /* 1252FC 80281CBC 8D020000 */ lw $v0, ($t0) /* 125300 80281CC0 3C0F8028 */ lui $t7, %hi(D_80287560) # $t7, 0x8028 /* 125304 80281CC4 25EF7560 */ addiu $t7, %lo(D_80287560) # addiu $t7, $t7, 0x7560 /* 125308 80281CC8 2841001E */ slti $at, $v0, 0x1e /* 12530C 80281CCC 1020000A */ beqz $at, .L80281CF8 /* 125310 80281CD0 00027080 */ sll $t6, $v0, 2 /* 125314 80281CD4 01C27023 */ subu $t6, $t6, $v0 /* 125318 80281CD8 000E7080 */ sll $t6, $t6, 2 /* 12531C 80281CDC 01CF1821 */ addu $v1, $t6, $t7 /* 125320 80281CE0 24580001 */ addiu $t8, $v0, 1 /* 125324 80281CE4 A4640000 */ sh $a0, ($v1) /* 125328 80281CE8 A4650002 */ sh $a1, 2($v1) /* 12532C 80281CEC AC670004 */ sw $a3, 4($v1) /* 125330 80281CF0 AC660008 */ sw $a2, 8($v1) /* 125334 80281CF4 AD180000 */ sw $t8, ($t0) .L80281CF8: /* 125338 80281CF8 03E00008 */ jr $ra /* 12533C 80281CFC 00000000 */ nop glabel func_80281D00 /* 125340 80281D00 27BDFF48 */ addiu $sp, $sp, -0xb8 /* 125344 80281D04 AFBF0034 */ sw $ra, 0x34($sp) /* 125348 80281D08 AFB10030 */ sw $s1, 0x30($sp) /* 12534C 80281D0C 0C0A94E9 */ jal func_802A53A4 /* 125350 80281D10 AFB0002C */ sw $s0, 0x2c($sp) /* 125354 80281D14 0C0A8F8F */ jal func_802A3E3C /* 125358 80281D18 00000000 */ nop /* 12535C 80281D1C 3C108028 */ lui $s0, %hi(D_80287550) # $s0, 0x8028 /* 125360 80281D20 26107550 */ addiu $s0, %lo(D_80287550) # addiu $s0, $s0, 0x7550 /* 125364 80281D24 8E0E0000 */ lw $t6, ($s0) /* 125368 80281D28 3401FFFF */ li $at, 65535 /* 12536C 80281D2C 11C10010 */ beq $t6, $at, .L80281D70 /* 125370 80281D30 00000000 */ nop /* 125374 80281D34 0C00034F */ jal func_80000D3C /* 125378 80281D38 00002025 */ move $a0, $zero /* 12537C 80281D3C 3C038028 */ lui $v1, %hi(D_80287554) # $v1, 0x8028 /* 125380 80281D40 24637554 */ addiu $v1, %lo(D_80287554) # addiu $v1, $v1, 0x7554 /* 125384 80281D44 8C620000 */ lw $v0, ($v1) /* 125388 80281D48 28410004 */ slti $at, $v0, 4 /* 12538C 80281D4C 14200006 */ bnez $at, .L80281D68 /* 125390 80281D50 24580001 */ addiu $t8, $v0, 1 /* 125394 80281D54 3C01800E */ lui $at, %hi(D_800DC5C0) # $at, 0x800e /* 125398 80281D58 A420C5C0 */ sh $zero, %lo(D_800DC5C0)($at) /* 12539C 80281D5C 8E0F0000 */ lw $t7, ($s0) /* 1253A0 80281D60 3C01800E */ lui $at, %hi(D_800DC524) # $at, 0x800e /* 1253A4 80281D64 AC2FC524 */ sw $t7, %lo(D_800DC524)($at) .L80281D68: /* 1253A8 80281D68 10000085 */ b .L80281F80 /* 1253AC 80281D6C AC780000 */ sw $t8, ($v1) .L80281D70: /* 1253B0 80281D70 0C0A0543 */ jal func_8028150C /* 1253B4 80281D74 00000000 */ nop /* 1253B8 80281D78 3C118015 */ lui $s1, %hi(gDisplayListHead) # $s1, 0x8015 /* 1253BC 80281D7C 26310298 */ addiu $s1, %lo(gDisplayListHead) # addiu $s1, $s1, 0x298 /* 1253C0 80281D80 8E300000 */ lw $s0, ($s1) /* 1253C4 80281D84 3C09B700 */ lui $t1, 0xb700 /* 1253C8 80281D88 240A2205 */ li $t2, 8709 /* 1253CC 80281D8C 26190008 */ addiu $t9, $s0, 8 /* 1253D0 80281D90 AE390000 */ sw $t9, ($s1) /* 1253D4 80281D94 3C018015 */ lui $at, %hi(D_80150150) # $at, 0x8015 /* 1253D8 80281D98 AE0A0004 */ sw $t2, 4($s0) /* 1253DC 80281D9C AE090000 */ sw $t1, ($s0) /* 1253E0 80281DA0 C4240150 */ lwc1 $f4, %lo(D_80150150)($at) /* 1253E4 80281DA4 3C018015 */ lui $at, %hi(D_8015014C) # $at, 0x8015 /* 1253E8 80281DA8 C426014C */ lwc1 $f6, %lo(D_8015014C)($at) /* 1253EC 80281DAC 3C013F80 */ li $at, 0x3F800000 # 1.000000 /* 1253F0 80281DB0 3C048015 */ lui $a0, %hi(gGfxPool) # $a0, 0x8015 /* 1253F4 80281DB4 8C84EF40 */ lw $a0, %lo(gGfxPool)($a0) /* 1253F8 80281DB8 44814000 */ mtc1 $at, $f8 /* 1253FC 80281DBC 3C068015 */ lui $a2, %hi(D_80150130) # $a2, 0x8015 /* 125400 80281DC0 3C078015 */ lui $a3, %hi(D_80150148) # $a3, 0x8015 /* 125404 80281DC4 8CE70148 */ lw $a3, %lo(D_80150148)($a3) /* 125408 80281DC8 8CC60130 */ lw $a2, %lo(D_80150130)($a2) /* 12540C 80281DCC 27A500A6 */ addiu $a1, $sp, 0xa6 /* 125410 80281DD0 E7A40010 */ swc1 $f4, 0x10($sp) /* 125414 80281DD4 E7A60014 */ swc1 $f6, 0x14($sp) /* 125418 80281DD8 24840040 */ addiu $a0, $a0, 0x40 /* 12541C 80281DDC 0C033CCC */ jal guPerspective /* 125420 80281DE0 E7A80018 */ swc1 $f8, 0x18($sp) /* 125424 80281DE4 8E300000 */ lw $s0, ($s1) /* 125428 80281DE8 3C0CB400 */ lui $t4, 0xb400 /* 12542C 80281DEC 3C0F0103 */ lui $t7, (0x01030040 >> 16) # lui $t7, 0x103 /* 125430 80281DF0 260B0008 */ addiu $t3, $s0, 8 /* 125434 80281DF4 AE2B0000 */ sw $t3, ($s1) /* 125438 80281DF8 AE0C0000 */ sw $t4, ($s0) /* 12543C 80281DFC 97AD00A6 */ lhu $t5, 0xa6($sp) /* 125440 80281E00 3C088015 */ lui $t0, %hi(gGfxPool) # $t0, 0x8015 /* 125444 80281E04 35EF0040 */ ori $t7, (0x01030040 & 0xFFFF) # ori $t7, $t7, 0x40 /* 125448 80281E08 AE0D0004 */ sw $t5, 4($s0) /* 12544C 80281E0C 8E300000 */ lw $s0, ($s1) /* 125450 80281E10 2508EF40 */ addiu $t0, %lo(gGfxPool) # addiu $t0, $t0, -0x10c0 /* 125454 80281E14 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff /* 125458 80281E18 260E0008 */ addiu $t6, $s0, 8 /* 12545C 80281E1C AE2E0000 */ sw $t6, ($s1) /* 125460 80281E20 AE0F0000 */ sw $t7, ($s0) /* 125464 80281E24 8D180000 */ lw $t8, ($t0) /* 125468 80281E28 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff /* 12546C 80281E2C 3C058016 */ lui $a1, %hi(D_801646F0) # $a1, 0x8016 /* 125470 80281E30 27190040 */ addiu $t9, $t8, 0x40 /* 125474 80281E34 03214824 */ and $t1, $t9, $at /* 125478 80281E38 AE090004 */ sw $t1, 4($s0) /* 12547C 80281E3C 3C018016 */ lui $at, %hi(D_801646FC) # $at, 0x8016 /* 125480 80281E40 C42A46FC */ lwc1 $f10, %lo(D_801646FC)($at) /* 125484 80281E44 3C018016 */ lui $at, %hi(D_80164700) # $at, 0x8016 /* 125488 80281E48 C4304700 */ lwc1 $f16, %lo(D_80164700)($at) /* 12548C 80281E4C 3C018016 */ lui $at, %hi(D_80164704) # $at, 0x8016 /* 125490 80281E50 C4324704 */ lwc1 $f18, %lo(D_80164704)($at) /* 125494 80281E54 3C018016 */ lui $at, %hi(D_80164708) # $at, 0x8016 /* 125498 80281E58 C4244708 */ lwc1 $f4, %lo(D_80164708)($at) /* 12549C 80281E5C 3C018016 */ lui $at, %hi(D_8016470C) # $at, 0x8016 /* 1254A0 80281E60 C426470C */ lwc1 $f6, %lo(D_8016470C)($at) /* 1254A4 80281E64 3C018016 */ lui $at, %hi(D_80164710) # $at, 0x8016 /* 1254A8 80281E68 C4284710 */ lwc1 $f8, %lo(D_80164710)($at) /* 1254AC 80281E6C 8D040000 */ lw $a0, ($t0) /* 1254B0 80281E70 3C068016 */ lui $a2, %hi(D_801646F4) # $a2, 0x8016 /* 1254B4 80281E74 3C078016 */ lui $a3, %hi(D_801646F8) # $a3, 0x8016 /* 1254B8 80281E78 8CE746F8 */ lw $a3, %lo(D_801646F8)($a3) /* 1254BC 80281E7C 8CC646F4 */ lw $a2, %lo(D_801646F4)($a2) /* 1254C0 80281E80 8CA546F0 */ lw $a1, %lo(D_801646F0)($a1) /* 1254C4 80281E84 E7AA0010 */ swc1 $f10, 0x10($sp) /* 1254C8 80281E88 E7B00014 */ swc1 $f16, 0x14($sp) /* 1254CC 80281E8C E7B20018 */ swc1 $f18, 0x18($sp) /* 1254D0 80281E90 E7A4001C */ swc1 $f4, 0x1c($sp) /* 1254D4 80281E94 E7A60020 */ swc1 $f6, 0x20($sp) /* 1254D8 80281E98 E7A80024 */ swc1 $f8, 0x24($sp) /* 1254DC 80281E9C 0C033D92 */ jal guLookAt /* 1254E0 80281EA0 248401C0 */ addiu $a0, $a0, 0x1c0 /* 1254E4 80281EA4 8E300000 */ lw $s0, ($s1) /* 1254E8 80281EA8 3C0B0101 */ lui $t3, (0x01010040 >> 16) # lui $t3, 0x101 /* 1254EC 80281EAC 356B0040 */ ori $t3, (0x01010040 & 0xFFFF) # ori $t3, $t3, 0x40 /* 1254F0 80281EB0 260A0008 */ addiu $t2, $s0, 8 /* 1254F4 80281EB4 AE2A0000 */ sw $t2, ($s1) /* 1254F8 80281EB8 3C0C8015 */ lui $t4, %hi(gGfxPool) # $t4, 0x8015 /* 1254FC 80281EBC AE0B0000 */ sw $t3, ($s0) /* 125500 80281EC0 8D8CEF40 */ lw $t4, %lo(gGfxPool)($t4) /* 125504 80281EC4 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff /* 125508 80281EC8 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff /* 12550C 80281ECC 258D01C0 */ addiu $t5, $t4, 0x1c0 /* 125510 80281ED0 01A17024 */ and $t6, $t5, $at /* 125514 80281ED4 27A40064 */ addiu $a0, $sp, 0x64 /* 125518 80281ED8 0C0AD4F2 */ jal func_802B53C8 /* 12551C 80281EDC AE0E0004 */ sw $t6, 4($s0) /* 125520 80281EE0 27A40064 */ addiu $a0, $sp, 0x64 /* 125524 80281EE4 0C0AD3FE */ jal func_802B4FF8 /* 125528 80281EE8 00002825 */ move $a1, $zero /* 12552C 80281EEC 8E300000 */ lw $s0, ($s1) /* 125530 80281EF0 3C190028 */ lui $t9, %hi(D_00284F70) # $t9, 0x28 /* 125534 80281EF4 27394F70 */ addiu $t9, %lo(D_00284F70) # addiu $t9, $t9, 0x4f70 /* 125538 80281EF8 260F0008 */ addiu $t7, $s0, 8 /* 12553C 80281EFC AE2F0000 */ sw $t7, ($s1) /* 125540 80281F00 3C180600 */ lui $t8, 0x600 /* 125544 80281F04 AE180000 */ sw $t8, ($s0) /* 125548 80281F08 0C0084AD */ jal func_800212B4 /* 12554C 80281F0C AE190004 */ sw $t9, 4($s0) /* 125550 80281F10 8E300000 */ lw $s0, ($s1) /* 125554 80281F14 3C030028 */ lui $v1, %hi(D_00284EE0) # $v1, 0x28 /* 125558 80281F18 24634EE0 */ addiu $v1, %lo(D_00284EE0) # addiu $v1, $v1, 0x4ee0 /* 12555C 80281F1C 26090008 */ addiu $t1, $s0, 8 /* 125560 80281F20 AE290000 */ sw $t1, ($s1) /* 125564 80281F24 3C0A0600 */ lui $t2, 0x600 /* 125568 80281F28 AE0A0000 */ sw $t2, ($s0) /* 12556C 80281F2C AE030004 */ sw $v1, 4($s0) /* 125570 80281F30 0C0A050E */ jal func_80281438 /* 125574 80281F34 AFA30038 */ sw $v1, 0x38($sp) /* 125578 80281F38 0C016024 */ jal func_80058090 /* 12557C 80281F3C 00002025 */ move $a0, $zero /* 125580 80281F40 0C0086C3 */ jal func_80021B0C /* 125584 80281F44 00000000 */ nop /* 125588 80281F48 8E300000 */ lw $s0, ($s1) /* 12558C 80281F4C 3C0C0600 */ lui $t4, 0x600 /* 125590 80281F50 260B0008 */ addiu $t3, $s0, 8 /* 125594 80281F54 AE2B0000 */ sw $t3, ($s1) /* 125598 80281F58 AE0C0000 */ sw $t4, ($s0) /* 12559C 80281F5C 8FAD0038 */ lw $t5, 0x38($sp) /* 1255A0 80281F60 0C024FC4 */ jal func_80093F10 /* 1255A4 80281F64 AE0D0004 */ sw $t5, 4($s0) /* 1255A8 80281F68 0C0A1330 */ jal func_80284CC0 /* 1255AC 80281F6C 00000000 */ nop /* 1255B0 80281F70 0C0A0710 */ jal func_80281C40 /* 1255B4 80281F74 00000000 */ nop /* 1255B8 80281F78 0C0A8F8F */ jal func_802A3E3C /* 1255BC 80281F7C 00000000 */ nop .L80281F80: /* 1255C0 80281F80 8FBF0034 */ lw $ra, 0x34($sp) /* 1255C4 80281F84 8FB0002C */ lw $s0, 0x2c($sp) /* 1255C8 80281F88 8FB10030 */ lw $s1, 0x30($sp) /* 1255CC 80281F8C 03E00008 */ jr $ra /* 1255D0 80281F90 27BD00B8 */ addiu $sp, $sp, 0xb8 /* 1255D4 80281F94 00000000 */ nop /* 1255D8 80281F98 00000000 */ nop /* 1255DC 80281F9C 00000000 */ nop