mirror of https://github.com/n64decomp/mk64.git
241 lines
12 KiB
ArmAsm
241 lines
12 KiB
ArmAsm
# 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
|