Files
oot/asm/non_matchings/code/code_800BB0A0/func_800BB2B4.s
T
krimtonz 77137f5a04 Decompile z_camera data, and some camera WIP (#173)
* cleanup

* name camera action functions

* decompile a few small functions, name a few Camera struct members

* decompile camera data, decompile a few camera functions

* Split ASM for code_800BB0A0

* removing code_800BB0A0.s

* PR Requests, Camera WIP

* remove #define NON_MATCHING from db_camera
2020-06-01 17:54:47 -04:00

189 lines
8.8 KiB
ArmAsm

glabel func_800BB2B4
/* B32454 800BB2B4 27BDFF60 */ addiu $sp, $sp, -0xa0
/* B32458 800BB2B8 8FAF00B0 */ lw $t7, 0xb0($sp)
/* B3245C 800BB2BC AFBF0024 */ sw $ra, 0x24($sp)
/* B32460 800BB2C0 AFA400A0 */ sw $a0, 0xa0($sp)
/* B32464 800BB2C4 AFA500A4 */ sw $a1, 0xa4($sp)
/* B32468 800BB2C8 AFA600A8 */ sw $a2, 0xa8($sp)
/* B3246C 800BB2CC AFA700AC */ sw $a3, 0xac($sp)
/* B32470 800BB2D0 44809000 */ mtc1 $zero, $f18
/* B32474 800BB2D4 85E80000 */ lh $t0, ($t7)
/* B32478 800BB2D8 8FAE00B4 */ lw $t6, 0xb4($sp)
/* B3247C 800BB2DC 00005025 */ move $t2, $zero
/* B32480 800BB2E0 46009386 */ mov.s $f14, $f18
/* B32484 800BB2E4 46009406 */ mov.s $f16, $f18
/* B32488 800BB2E8 05010002 */ bgez $t0, .L800BB2F4
/* B3248C 800BB2EC C5CC0000 */ lwc1 $f12, ($t6)
/* B32490 800BB2F0 46009306 */ mov.s $f12, $f18
.L800BB2F4:
/* B32494 800BB2F4 8FB800AC */ lw $t8, 0xac($sp)
/* B32498 800BB2F8 0008C900 */ sll $t9, $t0, 4
/* B3249C 800BB2FC 2409FFFF */ li $t1, -1
/* B324A0 800BB300 03191021 */ addu $v0, $t8, $t9
/* B324A4 800BB304 804B0000 */ lb $t3, ($v0)
/* B324A8 800BB308 112B0009 */ beq $t1, $t3, .L800BB330
/* B324AC 800BB30C 00000000 */ nop
/* B324B0 800BB310 804C0010 */ lb $t4, 0x10($v0)
/* B324B4 800BB314 112C0006 */ beq $t1, $t4, .L800BB330
/* B324B8 800BB318 00000000 */ nop
/* B324BC 800BB31C 804D0020 */ lb $t5, 0x20($v0)
/* B324C0 800BB320 27A2004C */ addiu $v0, $sp, 0x4c
/* B324C4 800BB324 00002025 */ move $a0, $zero
/* B324C8 800BB328 152D0003 */ bne $t1, $t5, .L800BB338
/* B324CC 800BB32C 8FAE00AC */ lw $t6, 0xac($sp)
.L800BB330:
/* B324D0 800BB330 1000008B */ b .L800BB560
/* B324D4 800BB334 24020001 */ li $v0, 1
.L800BB338:
/* B324D8 800BB338 00087900 */ sll $t7, $t0, 4
/* B324DC 800BB33C 01CF1821 */ addu $v1, $t6, $t7
/* B324E0 800BB340 24050040 */ li $a1, 64
/* B324E4 800BB344 24840010 */ addiu $a0, $a0, 0x10
/* B324E8 800BB348 1085001A */ beq $a0, $a1, .L800BB3B4
/* B324EC 800BB34C 84780008 */ lh $t8, 8($v1)
.L800BB350:
/* B324F0 800BB350 44989000 */ mtc1 $t8, $f18
/* B324F4 800BB354 24840010 */ addiu $a0, $a0, 0x10
/* B324F8 800BB358 24420014 */ addiu $v0, $v0, 0x14
/* B324FC 800BB35C 468094A0 */ cvt.s.w $f18, $f18
/* B32500 800BB360 24630010 */ addiu $v1, $v1, 0x10
/* B32504 800BB364 E452FFEC */ swc1 $f18, -0x14($v0)
/* B32508 800BB368 8479FFFA */ lh $t9, -6($v1)
/* B3250C 800BB36C 44999000 */ mtc1 $t9, $f18
/* B32510 800BB370 00000000 */ nop
/* B32514 800BB374 468094A0 */ cvt.s.w $f18, $f18
/* B32518 800BB378 E452FFF0 */ swc1 $f18, -0x10($v0)
/* B3251C 800BB37C 846BFFFC */ lh $t3, -4($v1)
/* B32520 800BB380 448B9000 */ mtc1 $t3, $f18
/* B32524 800BB384 00000000 */ nop
/* B32528 800BB388 468094A0 */ cvt.s.w $f18, $f18
/* B3252C 800BB38C E452FFF4 */ swc1 $f18, -0xc($v0)
/* B32530 800BB390 806CFFF1 */ lb $t4, -0xf($v1)
/* B32534 800BB394 448C9000 */ mtc1 $t4, $f18
/* B32538 800BB398 00000000 */ nop
/* B3253C 800BB39C 468094A0 */ cvt.s.w $f18, $f18
/* B32540 800BB3A0 E452FFF8 */ swc1 $f18, -8($v0)
/* B32544 800BB3A4 C472FFF4 */ lwc1 $f18, -0xc($v1)
/* B32548 800BB3A8 E452FFFC */ swc1 $f18, -4($v0)
/* B3254C 800BB3AC 1485FFE8 */ bne $a0, $a1, .L800BB350
/* B32550 800BB3B0 84780008 */ lh $t8, 8($v1)
.L800BB3B4:
/* B32554 800BB3B4 44989000 */ mtc1 $t8, $f18
/* B32558 800BB3B8 24420014 */ addiu $v0, $v0, 0x14
/* B3255C 800BB3BC 24630010 */ addiu $v1, $v1, 0x10
/* B32560 800BB3C0 468094A0 */ cvt.s.w $f18, $f18
/* B32564 800BB3C4 E452FFEC */ swc1 $f18, -0x14($v0)
/* B32568 800BB3C8 8479FFFA */ lh $t9, -6($v1)
/* B3256C 800BB3CC 44999000 */ mtc1 $t9, $f18
/* B32570 800BB3D0 00000000 */ nop
/* B32574 800BB3D4 468094A0 */ cvt.s.w $f18, $f18
/* B32578 800BB3D8 E452FFF0 */ swc1 $f18, -0x10($v0)
/* B3257C 800BB3DC 846BFFFC */ lh $t3, -4($v1)
/* B32580 800BB3E0 448B9000 */ mtc1 $t3, $f18
/* B32584 800BB3E4 00000000 */ nop
/* B32588 800BB3E8 468094A0 */ cvt.s.w $f18, $f18
/* B3258C 800BB3EC E452FFF4 */ swc1 $f18, -0xc($v0)
/* B32590 800BB3F0 806CFFF1 */ lb $t4, -0xf($v1)
/* B32594 800BB3F4 448C9000 */ mtc1 $t4, $f18
/* B32598 800BB3F8 00000000 */ nop
/* B3259C 800BB3FC 468094A0 */ cvt.s.w $f18, $f18
/* B325A0 800BB400 E452FFF8 */ swc1 $f18, -8($v0)
/* B325A4 800BB404 C472FFF4 */ lwc1 $f18, -0xc($v1)
/* B325A8 800BB408 E452FFFC */ swc1 $f18, -4($v0)
/* B325AC 800BB40C 27AD004C */ addiu $t5, $sp, 0x4c
/* B325B0 800BB410 27AE0060 */ addiu $t6, $sp, 0x60
/* B325B4 800BB414 27AF0074 */ addiu $t7, $sp, 0x74
/* B325B8 800BB418 27B80088 */ addiu $t8, $sp, 0x88
/* B325BC 800BB41C AFB8001C */ sw $t8, 0x1c($sp)
/* B325C0 800BB420 AFAF0018 */ sw $t7, 0x18($sp)
/* B325C4 800BB424 AFAE0014 */ sw $t6, 0x14($sp)
/* B325C8 800BB428 AFAD0010 */ sw $t5, 0x10($sp)
/* B325CC 800BB42C 8FA500A0 */ lw $a1, 0xa0($sp)
/* B325D0 800BB430 8FA600A4 */ lw $a2, 0xa4($sp)
/* B325D4 800BB434 8FA700A8 */ lw $a3, 0xa8($sp)
/* B325D8 800BB438 AFAA009C */ sw $t2, 0x9c($sp)
/* B325DC 800BB43C E7AE003C */ swc1 $f14, 0x3c($sp)
/* B325E0 800BB440 0C02EC28 */ jal func_800BB0A0
/* B325E4 800BB444 E7B00038 */ swc1 $f16, 0x38($sp)
/* B325E8 800BB448 8FA500B0 */ lw $a1, 0xb0($sp)
/* B325EC 800BB44C 8FA600AC */ lw $a2, 0xac($sp)
/* B325F0 800BB450 44809000 */ mtc1 $zero, $f18
/* B325F4 800BB454 84B90000 */ lh $t9, ($a1)
/* B325F8 800BB458 8FA400B4 */ lw $a0, 0xb4($sp)
/* B325FC 800BB45C 2409FFFF */ li $t1, -1
/* B32600 800BB460 00195900 */ sll $t3, $t9, 4
/* B32604 800BB464 00CB1021 */ addu $v0, $a2, $t3
/* B32608 800BB468 94430012 */ lhu $v1, 0x12($v0)
/* B3260C 800BB46C 8FAA009C */ lw $t2, 0x9c($sp)
/* B32610 800BB470 C7AE003C */ lwc1 $f14, 0x3c($sp)
/* B32614 800BB474 1060000B */ beqz $v1, .L800BB4A4
/* B32618 800BB478 C7B00038 */ lwc1 $f16, 0x38($sp)
/* B3261C 800BB47C 44834000 */ mtc1 $v1, $f8
/* B32620 800BB480 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* B32624 800BB484 44813000 */ mtc1 $at, $f6
/* B32628 800BB488 04610005 */ bgez $v1, .L800BB4A0
/* B3262C 800BB48C 468042A0 */ cvt.s.w $f10, $f8
/* B32630 800BB490 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B32634 800BB494 44812000 */ mtc1 $at, $f4
/* B32638 800BB498 00000000 */ nop
/* B3263C 800BB49C 46045280 */ add.s $f10, $f10, $f4
.L800BB4A0:
/* B32640 800BB4A0 460A3383 */ div.s $f14, $f6, $f10
.L800BB4A4:
/* B32644 800BB4A4 94430022 */ lhu $v1, 0x22($v0)
/* B32648 800BB4A8 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* B3264C 800BB4AC 5060000B */ beql $v1, $zero, .L800BB4DC
/* B32650 800BB4B0 460E8101 */ sub.s $f4, $f16, $f14
/* B32654 800BB4B4 44832000 */ mtc1 $v1, $f4
/* B32658 800BB4B8 44814000 */ mtc1 $at, $f8
/* B3265C 800BB4BC 04610005 */ bgez $v1, .L800BB4D4
/* B32660 800BB4C0 468021A0 */ cvt.s.w $f6, $f4
/* B32664 800BB4C4 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B32668 800BB4C8 44815000 */ mtc1 $at, $f10
/* B3266C 800BB4CC 00000000 */ nop
/* B32670 800BB4D0 460A3180 */ add.s $f6, $f6, $f10
.L800BB4D4:
/* B32674 800BB4D4 46064403 */ div.s $f16, $f8, $f6
/* B32678 800BB4D8 460E8101 */ sub.s $f4, $f16, $f14
.L800BB4DC:
/* B3267C 800BB4DC C4820000 */ lwc1 $f2, ($a0)
/* B32680 800BB4E0 46041282 */ mul.s $f10, $f2, $f4
/* B32684 800BB4E4 460E5000 */ add.s $f0, $f10, $f14
/* B32688 800BB4E8 4612003C */ c.lt.s $f0, $f18
/* B3268C 800BB4EC 00000000 */ nop
/* B32690 800BB4F0 45020004 */ bc1fl .L800BB504
/* B32694 800BB4F4 46001200 */ add.s $f8, $f2, $f0
/* B32698 800BB4F8 44800000 */ mtc1 $zero, $f0
/* B3269C 800BB4FC 00000000 */ nop
/* B326A0 800BB500 46001200 */ add.s $f8, $f2, $f0
.L800BB504:
/* B326A4 800BB504 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* B326A8 800BB508 44816000 */ mtc1 $at, $f12
/* B326AC 800BB50C E4880000 */ swc1 $f8, ($a0)
/* B326B0 800BB510 C4860000 */ lwc1 $f6, ($a0)
/* B326B4 800BB514 4606603E */ c.le.s $f12, $f6
/* B326B8 800BB518 00000000 */ nop
/* B326BC 800BB51C 45020010 */ bc1fl .L800BB560
/* B326C0 800BB520 01401025 */ move $v0, $t2
/* B326C4 800BB524 84AC0000 */ lh $t4, ($a1)
/* B326C8 800BB528 258D0001 */ addiu $t5, $t4, 1
/* B326CC 800BB52C A4AD0000 */ sh $t5, ($a1)
/* B326D0 800BB530 84AE0000 */ lh $t6, ($a1)
/* B326D4 800BB534 000E7900 */ sll $t7, $t6, 4
/* B326D8 800BB538 00CFC021 */ addu $t8, $a2, $t7
/* B326DC 800BB53C 83190030 */ lb $t9, 0x30($t8)
/* B326E0 800BB540 55390004 */ bnel $t1, $t9, .L800BB554
/* B326E4 800BB544 C4840000 */ lwc1 $f4, ($a0)
/* B326E8 800BB548 A4A00000 */ sh $zero, ($a1)
/* B326EC 800BB54C 240A0001 */ li $t2, 1
/* B326F0 800BB550 C4840000 */ lwc1 $f4, ($a0)
.L800BB554:
/* B326F4 800BB554 460C2281 */ sub.s $f10, $f4, $f12
/* B326F8 800BB558 E48A0000 */ swc1 $f10, ($a0)
/* B326FC 800BB55C 01401025 */ move $v0, $t2
.L800BB560:
/* B32700 800BB560 8FBF0024 */ lw $ra, 0x24($sp)
/* B32704 800BB564 27BD00A0 */ addiu $sp, $sp, 0xa0
/* B32708 800BB568 03E00008 */ jr $ra
/* B3270C 800BB56C 00000000 */ nop