mirror of https://github.com/n64decomp/mk64.git
539 lines
26 KiB
ArmAsm
539 lines
26 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_80004740
|
|
/* 005340 80004740 3C014780 */ li $at, 0x47800000 # 65536.000000
|
|
/* 005344 80004744 27BDFFE8 */ addiu $sp, $sp, -0x18
|
|
/* 005348 80004748 00801025 */ move $v0, $a0
|
|
/* 00534C 8000474C 24830020 */ addiu $v1, $a0, 0x20
|
|
/* 005350 80004750 00A03025 */ move $a2, $a1
|
|
/* 005354 80004754 44810000 */ mtc1 $at, $f0
|
|
/* 005358 80004758 24050010 */ li $a1, 16
|
|
/* 00535C 8000475C 27A40014 */ addiu $a0, $sp, 0x14
|
|
/* 005360 80004760 00003825 */ move $a3, $zero
|
|
/* 005364 80004764 C4D00000 */ lwc1 $f16, ($a2)
|
|
/* 005368 80004768 24E70004 */ addiu $a3, $a3, 4
|
|
/* 00536C 8000476C 46008482 */ mul.s $f18, $f16, $f0
|
|
/* 005370 80004770 50E5002F */ beql $a3, $a1, .L80004830
|
|
/* 005374 80004774 4600940D */ trunc.w.s $f16, $f18
|
|
/* 005378 80004778 4600940D */ trunc.w.s $f16, $f18
|
|
.L8000477C:
|
|
/* 00537C 8000477C 24E70004 */ addiu $a3, $a3, 4
|
|
/* 005380 80004780 24C60010 */ addiu $a2, $a2, 0x10
|
|
/* 005384 80004784 24420008 */ addiu $v0, $v0, 8
|
|
/* 005388 80004788 440F8000 */ mfc1 $t7, $f16
|
|
/* 00538C 8000478C 24630008 */ addiu $v1, $v1, 8
|
|
/* 005390 80004790 AFAF0014 */ sw $t7, 0x14($sp)
|
|
/* 005394 80004794 84980000 */ lh $t8, ($a0)
|
|
/* 005398 80004798 A458FFF8 */ sh $t8, -8($v0)
|
|
/* 00539C 8000479C 84990002 */ lh $t9, 2($a0)
|
|
/* 0053A0 800047A0 A479FFF8 */ sh $t9, -8($v1)
|
|
/* 0053A4 800047A4 C4D0FFF4 */ lwc1 $f16, -0xc($a2)
|
|
/* 0053A8 800047A8 46008402 */ mul.s $f16, $f16, $f0
|
|
/* 0053AC 800047AC 4600840D */ trunc.w.s $f16, $f16
|
|
/* 0053B0 800047B0 44098000 */ mfc1 $t1, $f16
|
|
/* 0053B4 800047B4 00000000 */ nop
|
|
/* 0053B8 800047B8 AFA90014 */ sw $t1, 0x14($sp)
|
|
/* 0053BC 800047BC 848A0000 */ lh $t2, ($a0)
|
|
/* 0053C0 800047C0 A44AFFFA */ sh $t2, -6($v0)
|
|
/* 0053C4 800047C4 848B0002 */ lh $t3, 2($a0)
|
|
/* 0053C8 800047C8 A46BFFFA */ sh $t3, -6($v1)
|
|
/* 0053CC 800047CC C4D0FFF8 */ lwc1 $f16, -8($a2)
|
|
/* 0053D0 800047D0 46008402 */ mul.s $f16, $f16, $f0
|
|
/* 0053D4 800047D4 4600840D */ trunc.w.s $f16, $f16
|
|
/* 0053D8 800047D8 440D8000 */ mfc1 $t5, $f16
|
|
/* 0053DC 800047DC 00000000 */ nop
|
|
/* 0053E0 800047E0 AFAD0014 */ sw $t5, 0x14($sp)
|
|
/* 0053E4 800047E4 848E0000 */ lh $t6, ($a0)
|
|
/* 0053E8 800047E8 A44EFFFC */ sh $t6, -4($v0)
|
|
/* 0053EC 800047EC 848F0002 */ lh $t7, 2($a0)
|
|
/* 0053F0 800047F0 A46FFFFC */ sh $t7, -4($v1)
|
|
/* 0053F4 800047F4 C4D0FFFC */ lwc1 $f16, -4($a2)
|
|
/* 0053F8 800047F8 46008402 */ mul.s $f16, $f16, $f0
|
|
/* 0053FC 800047FC 4600840D */ trunc.w.s $f16, $f16
|
|
/* 005400 80004800 44198000 */ mfc1 $t9, $f16
|
|
/* 005404 80004804 00000000 */ nop
|
|
/* 005408 80004808 AFB90014 */ sw $t9, 0x14($sp)
|
|
/* 00540C 8000480C 84880000 */ lh $t0, ($a0)
|
|
/* 005410 80004810 A448FFFE */ sh $t0, -2($v0)
|
|
/* 005414 80004814 84890002 */ lh $t1, 2($a0)
|
|
/* 005418 80004818 A469FFFE */ sh $t1, -2($v1)
|
|
/* 00541C 8000481C C4D00000 */ lwc1 $f16, ($a2)
|
|
/* 005420 80004820 46008482 */ mul.s $f18, $f16, $f0
|
|
/* 005424 80004824 54E5FFD5 */ bnel $a3, $a1, .L8000477C
|
|
/* 005428 80004828 4600940D */ trunc.w.s $f16, $f18
|
|
/* 00542C 8000482C 4600940D */ trunc.w.s $f16, $f18
|
|
.L80004830:
|
|
/* 005430 80004830 24C60010 */ addiu $a2, $a2, 0x10
|
|
/* 005434 80004834 24420008 */ addiu $v0, $v0, 8
|
|
/* 005438 80004838 24630008 */ addiu $v1, $v1, 8
|
|
/* 00543C 8000483C 440F8000 */ mfc1 $t7, $f16
|
|
/* 005440 80004840 00000000 */ nop
|
|
/* 005444 80004844 AFAF0014 */ sw $t7, 0x14($sp)
|
|
/* 005448 80004848 84980000 */ lh $t8, ($a0)
|
|
/* 00544C 8000484C A458FFF8 */ sh $t8, -8($v0)
|
|
/* 005450 80004850 84990002 */ lh $t9, 2($a0)
|
|
/* 005454 80004854 A479FFF8 */ sh $t9, -8($v1)
|
|
/* 005458 80004858 C4D0FFF4 */ lwc1 $f16, -0xc($a2)
|
|
/* 00545C 8000485C 46008402 */ mul.s $f16, $f16, $f0
|
|
/* 005460 80004860 4600840D */ trunc.w.s $f16, $f16
|
|
/* 005464 80004864 44098000 */ mfc1 $t1, $f16
|
|
/* 005468 80004868 00000000 */ nop
|
|
/* 00546C 8000486C AFA90014 */ sw $t1, 0x14($sp)
|
|
/* 005470 80004870 848A0000 */ lh $t2, ($a0)
|
|
/* 005474 80004874 A44AFFFA */ sh $t2, -6($v0)
|
|
/* 005478 80004878 848B0002 */ lh $t3, 2($a0)
|
|
/* 00547C 8000487C A46BFFFA */ sh $t3, -6($v1)
|
|
/* 005480 80004880 C4D0FFF8 */ lwc1 $f16, -8($a2)
|
|
/* 005484 80004884 46008402 */ mul.s $f16, $f16, $f0
|
|
/* 005488 80004888 4600840D */ trunc.w.s $f16, $f16
|
|
/* 00548C 8000488C 440D8000 */ mfc1 $t5, $f16
|
|
/* 005490 80004890 00000000 */ nop
|
|
/* 005494 80004894 AFAD0014 */ sw $t5, 0x14($sp)
|
|
/* 005498 80004898 848E0000 */ lh $t6, ($a0)
|
|
/* 00549C 8000489C A44EFFFC */ sh $t6, -4($v0)
|
|
/* 0054A0 800048A0 848F0002 */ lh $t7, 2($a0)
|
|
/* 0054A4 800048A4 A46FFFFC */ sh $t7, -4($v1)
|
|
/* 0054A8 800048A8 C4D0FFFC */ lwc1 $f16, -4($a2)
|
|
/* 0054AC 800048AC 46008402 */ mul.s $f16, $f16, $f0
|
|
/* 0054B0 800048B0 4600840D */ trunc.w.s $f16, $f16
|
|
/* 0054B4 800048B4 44198000 */ mfc1 $t9, $f16
|
|
/* 0054B8 800048B8 00000000 */ nop
|
|
/* 0054BC 800048BC AFB90014 */ sw $t9, 0x14($sp)
|
|
/* 0054C0 800048C0 84880000 */ lh $t0, ($a0)
|
|
/* 0054C4 800048C4 A448FFFE */ sh $t0, -2($v0)
|
|
/* 0054C8 800048C8 84890002 */ lh $t1, 2($a0)
|
|
/* 0054CC 800048CC A469FFFE */ sh $t1, -2($v1)
|
|
/* 0054D0 800048D0 03E00008 */ jr $ra
|
|
/* 0054D4 800048D4 27BD0018 */ addiu $sp, $sp, 0x18
|
|
|
|
glabel func_800048D8
|
|
/* 0054D8 800048D8 27BDFFB8 */ addiu $sp, $sp, -0x48
|
|
/* 0054DC 800048DC AFB00024 */ sw $s0, 0x24($sp)
|
|
/* 0054E0 800048E0 00808025 */ move $s0, $a0
|
|
/* 0054E4 800048E4 AFBF002C */ sw $ra, 0x2c($sp)
|
|
/* 0054E8 800048E8 AFB10028 */ sw $s1, 0x28($sp)
|
|
/* 0054EC 800048EC F7B60018 */ sdc1 $f22, 0x18($sp)
|
|
/* 0054F0 800048F0 F7B40010 */ sdc1 $f20, 0x10($sp)
|
|
/* 0054F4 800048F4 AFA5004C */ sw $a1, 0x4c($sp)
|
|
/* 0054F8 800048F8 00C08825 */ move $s1, $a2
|
|
/* 0054FC 800048FC 0C0AE006 */ jal func_802B8018
|
|
/* 005500 80004900 94C40000 */ lhu $a0, ($a2)
|
|
/* 005504 80004904 46000506 */ mov.s $f20, $f0
|
|
/* 005508 80004908 0C0AE00E */ jal func_802B8038
|
|
/* 00550C 8000490C 96240000 */ lhu $a0, ($s1)
|
|
/* 005510 80004910 46000586 */ mov.s $f22, $f0
|
|
/* 005514 80004914 0C0AE006 */ jal func_802B8018
|
|
/* 005518 80004918 96240002 */ lhu $a0, 2($s1)
|
|
/* 00551C 8000491C E7A0003C */ swc1 $f0, 0x3c($sp)
|
|
/* 005520 80004920 0C0AE00E */ jal func_802B8038
|
|
/* 005524 80004924 96240002 */ lhu $a0, 2($s1)
|
|
/* 005528 80004928 96240004 */ lhu $a0, 4($s1)
|
|
/* 00552C 8000492C 0C0AE006 */ jal func_802B8018
|
|
/* 005530 80004930 E7A00038 */ swc1 $f0, 0x38($sp)
|
|
/* 005534 80004934 96240004 */ lhu $a0, 4($s1)
|
|
/* 005538 80004938 0C0AE00E */ jal func_802B8038
|
|
/* 00553C 8000493C E7A00034 */ swc1 $f0, 0x34($sp)
|
|
/* 005540 80004940 C7AE0038 */ lwc1 $f14, 0x38($sp)
|
|
/* 005544 80004944 C7A20034 */ lwc1 $f2, 0x34($sp)
|
|
/* 005548 80004948 C7B2003C */ lwc1 $f18, 0x3c($sp)
|
|
/* 00554C 8000494C 46007102 */ mul.s $f4, $f14, $f0
|
|
/* 005550 80004950 44808000 */ mtc1 $zero, $f16
|
|
/* 005554 80004954 46009207 */ neg.s $f8, $f18
|
|
/* 005558 80004958 46027182 */ mul.s $f6, $f14, $f2
|
|
/* 00555C 8000495C E6080008 */ swc1 $f8, 8($s0)
|
|
/* 005560 80004960 E610000C */ swc1 $f16, 0xc($s0)
|
|
/* 005564 80004964 4612A302 */ mul.s $f12, $f20, $f18
|
|
/* 005568 80004968 E6040000 */ swc1 $f4, ($s0)
|
|
/* 00556C 8000496C 3C013F80 */ li $at, 0x3F800000 # 1.000000
|
|
/* 005570 80004970 E6060004 */ swc1 $f6, 4($s0)
|
|
/* 005574 80004974 46006282 */ mul.s $f10, $f12, $f0
|
|
/* 005578 80004978 00000000 */ nop
|
|
/* 00557C 8000497C 4602B102 */ mul.s $f4, $f22, $f2
|
|
/* 005580 80004980 46045181 */ sub.s $f6, $f10, $f4
|
|
/* 005584 80004984 46026202 */ mul.s $f8, $f12, $f2
|
|
/* 005588 80004988 00000000 */ nop
|
|
/* 00558C 8000498C 4600B282 */ mul.s $f10, $f22, $f0
|
|
/* 005590 80004990 E6060010 */ swc1 $f6, 0x10($s0)
|
|
/* 005594 80004994 460EA182 */ mul.s $f6, $f20, $f14
|
|
/* 005598 80004998 00000000 */ nop
|
|
/* 00559C 8000499C 4612B302 */ mul.s $f12, $f22, $f18
|
|
/* 0055A0 800049A0 460A4100 */ add.s $f4, $f8, $f10
|
|
/* 0055A4 800049A4 E6060018 */ swc1 $f6, 0x18($s0)
|
|
/* 0055A8 800049A8 E6040014 */ swc1 $f4, 0x14($s0)
|
|
/* 0055AC 800049AC 46006202 */ mul.s $f8, $f12, $f0
|
|
/* 0055B0 800049B0 8FA2004C */ lw $v0, 0x4c($sp)
|
|
/* 0055B4 800049B4 E610001C */ swc1 $f16, 0x1c($s0)
|
|
/* 0055B8 800049B8 4602A282 */ mul.s $f10, $f20, $f2
|
|
/* 0055BC 800049BC E610002C */ swc1 $f16, 0x2c($s0)
|
|
/* 0055C0 800049C0 46026182 */ mul.s $f6, $f12, $f2
|
|
/* 0055C4 800049C4 460A4100 */ add.s $f4, $f8, $f10
|
|
/* 0055C8 800049C8 4600A202 */ mul.s $f8, $f20, $f0
|
|
/* 0055CC 800049CC E6040020 */ swc1 $f4, 0x20($s0)
|
|
/* 0055D0 800049D0 460EB102 */ mul.s $f4, $f22, $f14
|
|
/* 0055D4 800049D4 46083281 */ sub.s $f10, $f6, $f8
|
|
/* 0055D8 800049D8 E6040028 */ swc1 $f4, 0x28($s0)
|
|
/* 0055DC 800049DC 44812000 */ mtc1 $at, $f4
|
|
/* 0055E0 800049E0 E60A0024 */ swc1 $f10, 0x24($s0)
|
|
/* 0055E4 800049E4 C4460000 */ lwc1 $f6, ($v0)
|
|
/* 0055E8 800049E8 E6060030 */ swc1 $f6, 0x30($s0)
|
|
/* 0055EC 800049EC C4480004 */ lwc1 $f8, 4($v0)
|
|
/* 0055F0 800049F0 E6080034 */ swc1 $f8, 0x34($s0)
|
|
/* 0055F4 800049F4 C44A0008 */ lwc1 $f10, 8($v0)
|
|
/* 0055F8 800049F8 E604003C */ swc1 $f4, 0x3c($s0)
|
|
/* 0055FC 800049FC E60A0038 */ swc1 $f10, 0x38($s0)
|
|
/* 005600 80004A00 8FBF002C */ lw $ra, 0x2c($sp)
|
|
/* 005604 80004A04 8FB10028 */ lw $s1, 0x28($sp)
|
|
/* 005608 80004A08 8FB00024 */ lw $s0, 0x24($sp)
|
|
/* 00560C 80004A0C D7B60018 */ ldc1 $f22, 0x18($sp)
|
|
/* 005610 80004A10 D7B40010 */ ldc1 $f20, 0x10($sp)
|
|
/* 005614 80004A14 03E00008 */ jr $ra
|
|
/* 005618 80004A18 27BD0048 */ addiu $sp, $sp, 0x48
|
|
|
|
glabel func_80004A1C
|
|
/* 00561C 80004A1C 27BDFF60 */ addiu $sp, $sp, -0xa0
|
|
/* 005620 80004A20 3C098016 */ lui $t1, %hi(D_80162D76) # $t1, 0x8016
|
|
/* 005624 80004A24 25292D76 */ addiu $t1, %lo(D_80162D76) # addiu $t1, $t1, 0x2d76
|
|
/* 005628 80004A28 85280000 */ lh $t0, ($t1)
|
|
/* 00562C 80004A2C AFBF001C */ sw $ra, 0x1c($sp)
|
|
/* 005630 80004A30 AFB00018 */ sw $s0, 0x18($sp)
|
|
/* 005634 80004A34 AFA400A0 */ sw $a0, 0xa0($sp)
|
|
/* 005638 80004A38 8C8F000C */ lw $t7, 0xc($a0)
|
|
/* 00563C 80004A3C 00A08025 */ move $s0, $a1
|
|
/* 005640 80004A40 1500001E */ bnez $t0, .L80004ABC
|
|
/* 005644 80004A44 AFAF003C */ sw $t7, 0x3c($sp)
|
|
/* 005648 80004A48 00801825 */ move $v1, $a0
|
|
/* 00564C 80004A4C 3C048016 */ lui $a0, %hi(D_80162D70) # $a0, 0x8016
|
|
/* 005650 80004A50 3C058016 */ lui $a1, %hi(D_80162D76) # $a1, 0x8016
|
|
/* 005654 80004A54 24A52D76 */ addiu $a1, %lo(D_80162D76) # addiu $a1, $a1, 0x2d76
|
|
/* 005658 80004A58 24842D70 */ addiu $a0, %lo(D_80162D70) # addiu $a0, $a0, 0x2d70
|
|
/* 00565C 80004A5C 27A20094 */ addiu $v0, $sp, 0x94
|
|
/* 005660 80004A60 24840002 */ addiu $a0, $a0, 2
|
|
/* 005664 80004A64 8499FFFE */ lh $t9, -2($a0)
|
|
/* 005668 80004A68 1085000B */ beq $a0, $a1, .L80004A98
|
|
/* 00566C 80004A6C 8C780010 */ lw $t8, 0x10($v1)
|
|
.L80004A70:
|
|
/* 005670 80004A70 03195021 */ addu $t2, $t8, $t9
|
|
/* 005674 80004A74 448A9000 */ mtc1 $t2, $f18
|
|
/* 005678 80004A78 24840002 */ addiu $a0, $a0, 2
|
|
/* 00567C 80004A7C 24420004 */ addiu $v0, $v0, 4
|
|
/* 005680 80004A80 468094A0 */ cvt.s.w $f18, $f18
|
|
/* 005684 80004A84 24630004 */ addiu $v1, $v1, 4
|
|
/* 005688 80004A88 8499FFFE */ lh $t9, -2($a0)
|
|
/* 00568C 80004A8C E452FFFC */ swc1 $f18, -4($v0)
|
|
/* 005690 80004A90 1485FFF7 */ bne $a0, $a1, .L80004A70
|
|
/* 005694 80004A94 8C780010 */ lw $t8, 0x10($v1)
|
|
.L80004A98:
|
|
/* 005698 80004A98 03195021 */ addu $t2, $t8, $t9
|
|
/* 00569C 80004A9C 448A9000 */ mtc1 $t2, $f18
|
|
/* 0056A0 80004AA0 24420004 */ addiu $v0, $v0, 4
|
|
/* 0056A4 80004AA4 24630004 */ addiu $v1, $v1, 4
|
|
/* 0056A8 80004AA8 468094A0 */ cvt.s.w $f18, $f18
|
|
/* 0056AC 80004AAC E452FFFC */ swc1 $f18, -4($v0)
|
|
/* 0056B0 80004AB0 250B0001 */ addiu $t3, $t0, 1
|
|
/* 0056B4 80004AB4 10000012 */ b .L80004B00
|
|
/* 0056B8 80004AB8 A52B0000 */ sh $t3, ($t1)
|
|
.L80004ABC:
|
|
/* 0056BC 80004ABC 27A20094 */ addiu $v0, $sp, 0x94
|
|
/* 0056C0 80004AC0 8FA300A0 */ lw $v1, 0xa0($sp)
|
|
/* 0056C4 80004AC4 27A400A0 */ addiu $a0, $sp, 0xa0
|
|
/* 0056C8 80004AC8 24420004 */ addiu $v0, $v0, 4
|
|
/* 0056CC 80004ACC 10440008 */ beq $v0, $a0, .L80004AF0
|
|
/* 0056D0 80004AD0 8C6C0010 */ lw $t4, 0x10($v1)
|
|
.L80004AD4:
|
|
/* 0056D4 80004AD4 448C9000 */ mtc1 $t4, $f18
|
|
/* 0056D8 80004AD8 24420004 */ addiu $v0, $v0, 4
|
|
/* 0056DC 80004ADC 24630004 */ addiu $v1, $v1, 4
|
|
/* 0056E0 80004AE0 468094A0 */ cvt.s.w $f18, $f18
|
|
/* 0056E4 80004AE4 E452FFF8 */ swc1 $f18, -8($v0)
|
|
/* 0056E8 80004AE8 1444FFFA */ bne $v0, $a0, .L80004AD4
|
|
/* 0056EC 80004AEC 8C6C0010 */ lw $t4, 0x10($v1)
|
|
.L80004AF0:
|
|
/* 0056F0 80004AF0 448C9000 */ mtc1 $t4, $f18
|
|
/* 0056F4 80004AF4 24630004 */ addiu $v1, $v1, 4
|
|
/* 0056F8 80004AF8 468094A0 */ cvt.s.w $f18, $f18
|
|
/* 0056FC 80004AFC E452FFFC */ swc1 $f18, -4($v0)
|
|
.L80004B00:
|
|
/* 005700 80004B00 00C01025 */ move $v0, $a2
|
|
/* 005704 80004B04 27A3008C */ addiu $v1, $sp, 0x8c
|
|
/* 005708 80004B08 27A50092 */ addiu $a1, $sp, 0x92
|
|
.L80004B0C:
|
|
/* 00570C 80004B0C 944D0000 */ lhu $t5, ($v0)
|
|
/* 005710 80004B10 00002025 */ move $a0, $zero
|
|
/* 005714 80004B14 00ED082A */ slt $at, $a3, $t5
|
|
/* 005718 80004B18 10200003 */ beqz $at, .L80004B28
|
|
/* 00571C 80004B1C 00000000 */ nop
|
|
/* 005720 80004B20 10000001 */ b .L80004B28
|
|
/* 005724 80004B24 00E02025 */ move $a0, $a3
|
|
.L80004B28:
|
|
/* 005728 80004B28 944F0002 */ lhu $t7, 2($v0)
|
|
/* 00572C 80004B2C 0004C840 */ sll $t9, $a0, 1
|
|
/* 005730 80004B30 24630002 */ addiu $v1, $v1, 2
|
|
/* 005734 80004B34 000F7040 */ sll $t6, $t7, 1
|
|
/* 005738 80004B38 020EC021 */ addu $t8, $s0, $t6
|
|
/* 00573C 80004B3C 03195021 */ addu $t2, $t8, $t9
|
|
/* 005740 80004B40 854B0000 */ lh $t3, ($t2)
|
|
/* 005744 80004B44 24420004 */ addiu $v0, $v0, 4
|
|
/* 005748 80004B48 1465FFF0 */ bne $v1, $a1, .L80004B0C
|
|
/* 00574C 80004B4C A46BFFFE */ sh $t3, -2($v1)
|
|
/* 005750 80004B50 27A4004C */ addiu $a0, $sp, 0x4c
|
|
/* 005754 80004B54 27A50094 */ addiu $a1, $sp, 0x94
|
|
/* 005758 80004B58 0C001236 */ jal func_800048D8
|
|
/* 00575C 80004B5C 27A6008C */ addiu $a2, $sp, 0x8c
|
|
/* 005760 80004B60 3C108019 */ lui $s0, %hi(D_8018D120) # $s0, 0x8019
|
|
/* 005764 80004B64 2610D120 */ addiu $s0, %lo(D_8018D120) # addiu $s0, $s0, -0x2ee0
|
|
/* 005768 80004B68 8E0D0000 */ lw $t5, ($s0)
|
|
/* 00576C 80004B6C 3C0C8015 */ lui $t4, %hi(gGfxPool) # $t4, 0x8015
|
|
/* 005770 80004B70 8D8CEF40 */ lw $t4, %lo(gGfxPool)($t4)
|
|
/* 005774 80004B74 000D7980 */ sll $t7, $t5, 6
|
|
/* 005778 80004B78 27A5004C */ addiu $a1, $sp, 0x4c
|
|
/* 00577C 80004B7C 018F2021 */ addu $a0, $t4, $t7
|
|
/* 005780 80004B80 0C0011D0 */ jal func_80004740
|
|
/* 005784 80004B84 248402C0 */ addiu $a0, $a0, 0x2c0
|
|
/* 005788 80004B88 3C048016 */ lui $a0, %hi(D_80162D7A) # $a0, 0x8016
|
|
/* 00578C 80004B8C 3C058015 */ lui $a1, %hi(gDisplayListHead) # $a1, 0x8015
|
|
/* 005790 80004B90 24A50298 */ addiu $a1, %lo(gDisplayListHead) # addiu $a1, $a1, 0x298
|
|
/* 005794 80004B94 24842D7A */ addiu $a0, %lo(D_80162D7A) # addiu $a0, $a0, 0x2d7a
|
|
/* 005798 80004B98 848E0000 */ lh $t6, ($a0)
|
|
/* 00579C 80004B9C 8CA30000 */ lw $v1, ($a1)
|
|
/* 0057A0 80004BA0 3C0A0104 */ lui $t2, (0x01040040 >> 16) # lui $t2, 0x104
|
|
/* 0057A4 80004BA4 25D80001 */ addiu $t8, $t6, 1
|
|
/* 0057A8 80004BA8 24790008 */ addiu $t9, $v1, 8
|
|
/* 0057AC 80004BAC 8FA6003C */ lw $a2, 0x3c($sp)
|
|
/* 0057B0 80004BB0 A4980000 */ sh $t8, ($a0)
|
|
/* 0057B4 80004BB4 ACB90000 */ sw $t9, ($a1)
|
|
/* 0057B8 80004BB8 354A0040 */ ori $t2, (0x01040040 & 0xFFFF) # ori $t2, $t2, 0x40
|
|
/* 0057BC 80004BBC AC6A0000 */ sw $t2, ($v1)
|
|
/* 0057C0 80004BC0 8E0D0000 */ lw $t5, ($s0)
|
|
/* 0057C4 80004BC4 3C0B8015 */ lui $t3, %hi(gGfxPool) # $t3, 0x8015
|
|
/* 0057C8 80004BC8 8D6BEF40 */ lw $t3, %lo(gGfxPool)($t3)
|
|
/* 0057CC 80004BCC 3C018000 */ lui $at, (0x800002C0 >> 16) # lui $at, 0x8000
|
|
/* 0057D0 80004BD0 000D6180 */ sll $t4, $t5, 6
|
|
/* 0057D4 80004BD4 342102C0 */ ori $at, (0x800002C0 & 0xFFFF) # ori $at, $at, 0x2c0
|
|
/* 0057D8 80004BD8 016C7821 */ addu $t7, $t3, $t4
|
|
/* 0057DC 80004BDC 01E17021 */ addu $t6, $t7, $at
|
|
/* 0057E0 80004BE0 AC6E0004 */ sw $t6, 4($v1)
|
|
/* 0057E4 80004BE4 8E180000 */ lw $t8, ($s0)
|
|
/* 0057E8 80004BE8 27190001 */ addiu $t9, $t8, 1
|
|
/* 0057EC 80004BEC 10C0000B */ beqz $a2, .L80004C1C
|
|
/* 0057F0 80004BF0 AE190000 */ sw $t9, ($s0)
|
|
/* 0057F4 80004BF4 0C0A9EF5 */ jal lookup_item
|
|
/* 0057F8 80004BF8 00C02025 */ move $a0, $a2
|
|
/* 0057FC 80004BFC 3C058015 */ lui $a1, %hi(gDisplayListHead) # $a1, 0x8015
|
|
/* 005800 80004C00 24A50298 */ addiu $a1, %lo(gDisplayListHead) # addiu $a1, $a1, 0x298
|
|
/* 005804 80004C04 8CA30000 */ lw $v1, ($a1)
|
|
/* 005808 80004C08 3C0D0600 */ lui $t5, 0x600
|
|
/* 00580C 80004C0C 246A0008 */ addiu $t2, $v1, 8
|
|
/* 005810 80004C10 ACAA0000 */ sw $t2, ($a1)
|
|
/* 005814 80004C14 AC620004 */ sw $v0, 4($v1)
|
|
/* 005818 80004C18 AC6D0000 */ sw $t5, ($v1)
|
|
.L80004C1C:
|
|
/* 00581C 80004C1C 8FBF001C */ lw $ra, 0x1c($sp)
|
|
/* 005820 80004C20 8FB00018 */ lw $s0, 0x18($sp)
|
|
/* 005824 80004C24 27BD00A0 */ addiu $sp, $sp, 0xa0
|
|
/* 005828 80004C28 03E00008 */ jr $ra
|
|
/* 00582C 80004C2C 00000000 */ nop
|
|
|
|
glabel func_80004C30
|
|
/* 005830 80004C30 27BDFFB8 */ addiu $sp, $sp, -0x48
|
|
/* 005834 80004C34 AFB20020 */ sw $s2, 0x20($sp)
|
|
/* 005838 80004C38 00809025 */ move $s2, $a0
|
|
/* 00583C 80004C3C AFBF003C */ sw $ra, 0x3c($sp)
|
|
/* 005840 80004C40 AFBE0038 */ sw $fp, 0x38($sp)
|
|
/* 005844 80004C44 AFB70034 */ sw $s7, 0x34($sp)
|
|
/* 005848 80004C48 AFB60030 */ sw $s6, 0x30($sp)
|
|
/* 00584C 80004C4C AFB5002C */ sw $s5, 0x2c($sp)
|
|
/* 005850 80004C50 AFB40028 */ sw $s4, 0x28($sp)
|
|
/* 005854 80004C54 AFB30024 */ sw $s3, 0x24($sp)
|
|
/* 005858 80004C58 AFB1001C */ sw $s1, 0x1c($sp)
|
|
/* 00585C 80004C5C AFB00018 */ sw $s0, 0x18($sp)
|
|
/* 005860 80004C60 AFA60050 */ sw $a2, 0x50($sp)
|
|
/* 005864 80004C64 8CA4000C */ lw $a0, 0xc($a1)
|
|
/* 005868 80004C68 00A08025 */ move $s0, $a1
|
|
/* 00586C 80004C6C 0C0A9EF5 */ jal lookup_item
|
|
/* 005870 80004C70 A7A60052 */ sh $a2, 0x52($sp)
|
|
/* 005874 80004C74 AFA20040 */ sw $v0, 0x40($sp)
|
|
/* 005878 80004C78 0C0A9EF5 */ jal lookup_item
|
|
/* 00587C 80004C7C 8E040010 */ lw $a0, 0x10($s0)
|
|
/* 005880 80004C80 3C138016 */ lui $s3, %hi(D_80162D7A) # $s3, 0x8016
|
|
/* 005884 80004C84 26732D7A */ addiu $s3, %lo(D_80162D7A) # addiu $s3, $s3, 0x2d7a
|
|
/* 005888 80004C88 A6600000 */ sh $zero, ($s3)
|
|
/* 00588C 80004C8C 3C018016 */ lui $at, %hi(D_80162D76) # $at, 0x8016
|
|
/* 005890 80004C90 3C038016 */ lui $v1, %hi(D_80162D70) # $v1, 0x8016
|
|
/* 005894 80004C94 3C068016 */ lui $a2, %hi(D_80162D76) # $a2, 0x8016
|
|
/* 005898 80004C98 87A70052 */ lh $a3, 0x52($sp)
|
|
/* 00589C 80004C9C A4202D76 */ sh $zero, %lo(D_80162D76)($at)
|
|
/* 0058A0 80004CA0 24C62D76 */ addiu $a2, %lo(D_80162D76) # addiu $a2, $a2, 0x2d76
|
|
/* 0058A4 80004CA4 24632D70 */ addiu $v1, %lo(D_80162D70) # addiu $v1, $v1, 0x2d70
|
|
/* 0058A8 80004CA8 00402025 */ move $a0, $v0
|
|
/* 0058AC 80004CAC 8FA80040 */ lw $t0, 0x40($sp)
|
|
.L80004CB0:
|
|
/* 0058B0 80004CB0 948F0000 */ lhu $t7, ($a0)
|
|
/* 0058B4 80004CB4 00002825 */ move $a1, $zero
|
|
/* 0058B8 80004CB8 00EF082A */ slt $at, $a3, $t7
|
|
/* 0058BC 80004CBC 10200003 */ beqz $at, .L80004CCC
|
|
/* 0058C0 80004CC0 00000000 */ nop
|
|
/* 0058C4 80004CC4 10000001 */ b .L80004CCC
|
|
/* 0058C8 80004CC8 00E02825 */ move $a1, $a3
|
|
.L80004CCC:
|
|
/* 0058CC 80004CCC 94980002 */ lhu $t8, 2($a0)
|
|
/* 0058D0 80004CD0 00055040 */ sll $t2, $a1, 1
|
|
/* 0058D4 80004CD4 24630002 */ addiu $v1, $v1, 2
|
|
/* 0058D8 80004CD8 0018C840 */ sll $t9, $t8, 1
|
|
/* 0058DC 80004CDC 01194821 */ addu $t1, $t0, $t9
|
|
/* 0058E0 80004CE0 012A5821 */ addu $t3, $t1, $t2
|
|
/* 0058E4 80004CE4 856C0000 */ lh $t4, ($t3)
|
|
/* 0058E8 80004CE8 24840004 */ addiu $a0, $a0, 4
|
|
/* 0058EC 80004CEC 1466FFF0 */ bne $v1, $a2, .L80004CB0
|
|
/* 0058F0 80004CF0 A46CFFFE */ sh $t4, -2($v1)
|
|
/* 0058F4 80004CF4 3C158016 */ lui $s5, %hi(D_80162D78) # $s5, 0x8016
|
|
/* 0058F8 80004CF8 26B52D78 */ addiu $s5, %lo(D_80162D78) # addiu $s5, $s5, 0x2d78
|
|
/* 0058FC 80004CFC 3C118015 */ lui $s1, %hi(gDisplayListHead) # $s1, 0x8015
|
|
/* 005900 80004D00 2454000C */ addiu $s4, $v0, 0xc
|
|
/* 005904 80004D04 A6A00000 */ sh $zero, ($s5)
|
|
/* 005908 80004D08 26310298 */ addiu $s1, %lo(gDisplayListHead) # addiu $s1, $s1, 0x298
|
|
/* 00590C 80004D0C 3C1EBD00 */ lui $fp, 0xbd00
|
|
/* 005910 80004D10 24170003 */ li $s7, 3
|
|
/* 005914 80004D14 24160001 */ li $s6, 1
|
|
.L80004D18:
|
|
/* 005918 80004D18 8E500000 */ lw $s0, ($s2)
|
|
/* 00591C 80004D1C 02402025 */ move $a0, $s2
|
|
/* 005920 80004D20 02803025 */ move $a2, $s4
|
|
/* 005924 80004D24 52000015 */ beql $s0, $zero, .L80004D7C
|
|
/* 005928 80004D28 86B80000 */ lh $t8, ($s5)
|
|
/* 00592C 80004D2C 12160007 */ beq $s0, $s6, .L80004D4C
|
|
/* 005930 80004D30 24010002 */ li $at, 2
|
|
/* 005934 80004D34 52010008 */ beql $s0, $at, .L80004D58
|
|
/* 005938 80004D38 8E230000 */ lw $v1, ($s1)
|
|
/* 00593C 80004D3C 52170020 */ beql $s0, $s7, .L80004DC0
|
|
/* 005940 80004D40 8E4B0004 */ lw $t3, 4($s2)
|
|
/* 005944 80004D44 1000001E */ b .L80004DC0
|
|
/* 005948 80004D48 8E4B0004 */ lw $t3, 4($s2)
|
|
.L80004D4C:
|
|
/* 00594C 80004D4C 1000001B */ b .L80004DBC
|
|
/* 005950 80004D50 A6B60000 */ sh $s6, ($s5)
|
|
/* 005954 80004D54 8E230000 */ lw $v1, ($s1)
|
|
.L80004D58:
|
|
/* 005958 80004D58 246D0008 */ addiu $t5, $v1, 8
|
|
/* 00595C 80004D5C AE2D0000 */ sw $t5, ($s1)
|
|
/* 005960 80004D60 AC600004 */ sw $zero, 4($v1)
|
|
/* 005964 80004D64 AC7E0000 */ sw $fp, ($v1)
|
|
/* 005968 80004D68 866E0000 */ lh $t6, ($s3)
|
|
/* 00596C 80004D6C 25CFFFFF */ addiu $t7, $t6, -1
|
|
/* 005970 80004D70 10000012 */ b .L80004DBC
|
|
/* 005974 80004D74 A66F0000 */ sh $t7, ($s3)
|
|
/* 005978 80004D78 86B80000 */ lh $t8, ($s5)
|
|
.L80004D7C:
|
|
/* 00597C 80004D7C 5700000A */ bnel $t8, $zero, .L80004DA8
|
|
/* 005980 80004D80 8FA50040 */ lw $a1, 0x40($sp)
|
|
/* 005984 80004D84 8E230000 */ lw $v1, ($s1)
|
|
/* 005988 80004D88 24790008 */ addiu $t9, $v1, 8
|
|
/* 00598C 80004D8C AE390000 */ sw $t9, ($s1)
|
|
/* 005990 80004D90 AC600004 */ sw $zero, 4($v1)
|
|
/* 005994 80004D94 AC7E0000 */ sw $fp, ($v1)
|
|
/* 005998 80004D98 86690000 */ lh $t1, ($s3)
|
|
/* 00599C 80004D9C 252AFFFF */ addiu $t2, $t1, -1
|
|
/* 0059A0 80004DA0 A66A0000 */ sh $t2, ($s3)
|
|
/* 0059A4 80004DA4 8FA50040 */ lw $a1, 0x40($sp)
|
|
.L80004DA8:
|
|
/* 0059A8 80004DA8 0C001287 */ jal func_80004A1C
|
|
/* 0059AC 80004DAC A7A70052 */ sh $a3, 0x52($sp)
|
|
/* 0059B0 80004DB0 87A70052 */ lh $a3, 0x52($sp)
|
|
/* 0059B4 80004DB4 A6A00000 */ sh $zero, ($s5)
|
|
/* 0059B8 80004DB8 2694000C */ addiu $s4, $s4, 0xc
|
|
.L80004DBC:
|
|
/* 0059BC 80004DBC 8E4B0004 */ lw $t3, 4($s2)
|
|
.L80004DC0:
|
|
/* 0059C0 80004DC0 000B6080 */ sll $t4, $t3, 2
|
|
/* 0059C4 80004DC4 1617FFD4 */ bne $s0, $s7, .L80004D18
|
|
/* 0059C8 80004DC8 024C9021 */ addu $s2, $s2, $t4
|
|
/* 0059CC 80004DCC 8FBF003C */ lw $ra, 0x3c($sp)
|
|
/* 0059D0 80004DD0 8FB00018 */ lw $s0, 0x18($sp)
|
|
/* 0059D4 80004DD4 8FB1001C */ lw $s1, 0x1c($sp)
|
|
/* 0059D8 80004DD8 8FB20020 */ lw $s2, 0x20($sp)
|
|
/* 0059DC 80004DDC 8FB30024 */ lw $s3, 0x24($sp)
|
|
/* 0059E0 80004DE0 8FB40028 */ lw $s4, 0x28($sp)
|
|
/* 0059E4 80004DE4 8FB5002C */ lw $s5, 0x2c($sp)
|
|
/* 0059E8 80004DE8 8FB60030 */ lw $s6, 0x30($sp)
|
|
/* 0059EC 80004DEC 8FB70034 */ lw $s7, 0x34($sp)
|
|
/* 0059F0 80004DF0 8FBE0038 */ lw $fp, 0x38($sp)
|
|
/* 0059F4 80004DF4 03E00008 */ jr $ra
|
|
/* 0059F8 80004DF8 27BD0048 */ addiu $sp, $sp, 0x48
|
|
|
|
glabel func_80004DFC
|
|
/* 0059FC 80004DFC 27BDFFD8 */ addiu $sp, $sp, -0x28
|
|
/* 005A00 80004E00 AFB00018 */ sw $s0, 0x18($sp)
|
|
/* 005A04 80004E04 00078400 */ sll $s0, $a3, 0x10
|
|
/* 005A08 80004E08 00107403 */ sra $t6, $s0, 0x10
|
|
/* 005A0C 80004E0C AFBF001C */ sw $ra, 0x1c($sp)
|
|
/* 005A10 80004E10 01C08025 */ move $s0, $t6
|
|
/* 005A14 80004E14 AFA5002C */ sw $a1, 0x2c($sp)
|
|
/* 005A18 80004E18 AFA60030 */ sw $a2, 0x30($sp)
|
|
/* 005A1C 80004E1C 0C0A9EF5 */ jal lookup_item
|
|
/* 005A20 80004E20 AFA70034 */ sw $a3, 0x34($sp)
|
|
/* 005A24 80004E24 AFA20024 */ sw $v0, 0x24($sp)
|
|
/* 005A28 80004E28 0C0A9EF5 */ jal lookup_item
|
|
/* 005A2C 80004E2C 8FA4002C */ lw $a0, 0x2c($sp)
|
|
/* 005A30 80004E30 87AF0032 */ lh $t7, 0x32($sp)
|
|
/* 005A34 80004E34 000FC080 */ sll $t8, $t7, 2
|
|
/* 005A38 80004E38 0058C821 */ addu $t9, $v0, $t8
|
|
/* 005A3C 80004E3C 0C0A9EF5 */ jal lookup_item
|
|
/* 005A40 80004E40 8F240000 */ lw $a0, ($t9)
|
|
/* 005A44 80004E44 84480008 */ lh $t0, 8($v0)
|
|
/* 005A48 80004E48 00402825 */ move $a1, $v0
|
|
/* 005A4C 80004E4C 8FA40024 */ lw $a0, 0x24($sp)
|
|
/* 005A50 80004E50 0208082A */ slt $at, $s0, $t0
|
|
/* 005A54 80004E54 54200003 */ bnel $at, $zero, .L80004E64
|
|
/* 005A58 80004E58 00103400 */ sll $a2, $s0, 0x10
|
|
/* 005A5C 80004E5C 00008025 */ move $s0, $zero
|
|
/* 005A60 80004E60 00103400 */ sll $a2, $s0, 0x10
|
|
.L80004E64:
|
|
/* 005A64 80004E64 00064C03 */ sra $t1, $a2, 0x10
|
|
/* 005A68 80004E68 01203025 */ move $a2, $t1
|
|
/* 005A6C 80004E6C 0C00130C */ jal func_80004C30
|
|
/* 005A70 80004E70 AFA50020 */ sw $a1, 0x20($sp)
|
|
/* 005A74 80004E74 8FA50020 */ lw $a1, 0x20($sp)
|
|
/* 005A78 80004E78 26100001 */ addiu $s0, $s0, 1
|
|
/* 005A7C 80004E7C 00105400 */ sll $t2, $s0, 0x10
|
|
/* 005A80 80004E80 84AC0008 */ lh $t4, 8($a1)
|
|
/* 005A84 80004E84 000A8403 */ sra $s0, $t2, 0x10
|
|
/* 005A88 80004E88 8FBF001C */ lw $ra, 0x1c($sp)
|
|
/* 005A8C 80004E8C 020C082A */ slt $at, $s0, $t4
|
|
/* 005A90 80004E90 54200003 */ bnel $at, $zero, .L80004EA0
|
|
/* 005A94 80004E94 02001025 */ move $v0, $s0
|
|
/* 005A98 80004E98 00008025 */ move $s0, $zero
|
|
/* 005A9C 80004E9C 02001025 */ move $v0, $s0
|
|
.L80004EA0:
|
|
/* 005AA0 80004EA0 8FB00018 */ lw $s0, 0x18($sp)
|
|
/* 005AA4 80004EA4 03E00008 */ jr $ra
|
|
/* 005AA8 80004EA8 27BD0028 */ addiu $sp, $sp, 0x28
|
|
|
|
glabel func_80004EAC
|
|
/* 005AAC 80004EAC 27BDFFE8 */ addiu $sp, $sp, -0x18
|
|
/* 005AB0 80004EB0 AFBF0014 */ sw $ra, 0x14($sp)
|
|
/* 005AB4 80004EB4 0C0A9EF5 */ jal lookup_item
|
|
/* 005AB8 80004EB8 AFA5001C */ sw $a1, 0x1c($sp)
|
|
/* 005ABC 80004EBC 87AE001E */ lh $t6, 0x1e($sp)
|
|
/* 005AC0 80004EC0 000E7880 */ sll $t7, $t6, 2
|
|
/* 005AC4 80004EC4 004FC021 */ addu $t8, $v0, $t7
|
|
/* 005AC8 80004EC8 0C0A9EF5 */ jal lookup_item
|
|
/* 005ACC 80004ECC 8F040000 */ lw $a0, ($t8)
|
|
/* 005AD0 80004ED0 84420008 */ lh $v0, 8($v0)
|
|
/* 005AD4 80004ED4 8FBF0014 */ lw $ra, 0x14($sp)
|
|
/* 005AD8 80004ED8 27BD0018 */ addiu $sp, $sp, 0x18
|
|
/* 005ADC 80004EDC 2442FFFF */ addiu $v0, $v0, -1
|
|
/* 005AE0 80004EE0 0002CC00 */ sll $t9, $v0, 0x10
|
|
/* 005AE4 80004EE4 03E00008 */ jr $ra
|
|
/* 005AE8 80004EE8 00191403 */ sra $v0, $t9, 0x10
|
|
|
|
/* 005AEC 80004EEC 00000000 */ nop
|