papermario/asm/nonmatchings/code_111f0_len_860/func_8003646C.s
Ethan Roseman 51c076bd8e symbols!
2020-09-27 21:13:56 -04:00

132 lines
6.5 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8003646C
/* 1186C 8003646C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 11870 80036470 AFB00010 */ sw $s0, 0x10($sp)
/* 11874 80036474 3C10800A */ lui $s0, %hi(D_800A0944)
/* 11878 80036478 26100944 */ addiu $s0, $s0, %lo(D_800A0944)
/* 1187C 8003647C 24020002 */ addiu $v0, $zero, 2
/* 11880 80036480 AFBF0014 */ sw $ra, 0x14($sp)
/* 11884 80036484 86030000 */ lh $v1, ($s0)
/* 11888 80036488 96070000 */ lhu $a3, ($s0)
/* 1188C 8003648C 1062001A */ beq $v1, $v0, .L800364F8
/* 11890 80036490 28620003 */ slti $v0, $v1, 3
/* 11894 80036494 10400005 */ beqz $v0, .L800364AC
/* 11898 80036498 24020001 */ addiu $v0, $zero, 1
/* 1189C 8003649C 1062000A */ beq $v1, $v0, .L800364C8
/* 118A0 800364A0 00000000 */ nop
/* 118A4 800364A4 0800D984 */ j .L80036610
/* 118A8 800364A8 00000000 */ nop
.L800364AC:
/* 118AC 800364AC 24020003 */ addiu $v0, $zero, 3
/* 118B0 800364B0 1062002A */ beq $v1, $v0, .L8003655C
/* 118B4 800364B4 24020004 */ addiu $v0, $zero, 4
/* 118B8 800364B8 1062003C */ beq $v1, $v0, .L800365AC
/* 118BC 800364BC 00000000 */ nop
/* 118C0 800364C0 0800D984 */ j .L80036610
/* 118C4 800364C4 00000000 */ nop
.L800364C8:
/* 118C8 800364C8 3C03800A */ lui $v1, %hi(D_8009A650)
/* 118CC 800364CC 2463A650 */ addiu $v1, $v1, %lo(D_8009A650)
/* 118D0 800364D0 8C620000 */ lw $v0, ($v1)
/* 118D4 800364D4 34420008 */ ori $v0, $v0, 8
/* 118D8 800364D8 0C018028 */ jal nuContRmbForceStop
/* 118DC 800364DC AC620000 */ sw $v0, ($v1)
/* 118E0 800364E0 96020000 */ lhu $v0, ($s0)
/* 118E4 800364E4 24030004 */ addiu $v1, $zero, 4
/* 118E8 800364E8 3C01800A */ lui $at, 0x800a
/* 118EC 800364EC A4230946 */ sh $v1, 0x946($at)
/* 118F0 800364F0 0800D955 */ j .L80036554
/* 118F4 800364F4 24420001 */ addiu $v0, $v0, 1
.L800364F8:
/* 118F8 800364F8 3C04800A */ lui $a0, 0x800a
/* 118FC 800364FC 24840946 */ addiu $a0, $a0, 0x946
/* 11900 80036500 84820000 */ lh $v0, ($a0)
/* 11904 80036504 94830000 */ lhu $v1, ($a0)
/* 11908 80036508 10400003 */ beqz $v0, .L80036518
/* 1190C 8003650C 2462FFFF */ addiu $v0, $v1, -1
/* 11910 80036510 0800D984 */ j .L80036610
/* 11914 80036514 A4820000 */ sh $v0, ($a0)
.L80036518:
/* 11918 80036518 3C038007 */ lui $v1, %hi(gGameStatusPtr)
/* 1191C 8003651C 2463419C */ addiu $v1, $v1, %lo(gGameStatusPtr)
/* 11920 80036520 8C620000 */ lw $v0, ($v1)
/* 11924 80036524 A0400070 */ sb $zero, 0x70($v0)
/* 11928 80036528 8C620000 */ lw $v0, ($v1)
/* 1192C 8003652C A0400078 */ sb $zero, 0x78($v0)
/* 11930 80036530 8C620000 */ lw $v0, ($v1)
/* 11934 80036534 84440086 */ lh $a0, 0x86($v0)
/* 11938 80036538 8445008C */ lh $a1, 0x8c($v0)
/* 1193C 8003653C 0C0169BD */ jal load_map_by_IDs
/* 11940 80036540 0000302D */ daddu $a2, $zero, $zero
/* 11944 80036544 0C018030 */ jal nuContRmbForceStopEnd
/* 11948 80036548 00000000 */ nop
/* 1194C 8003654C 96020000 */ lhu $v0, ($s0)
/* 11950 80036550 24420001 */ addiu $v0, $v0, 1
.L80036554:
/* 11954 80036554 0800D984 */ j .L80036610
/* 11958 80036558 A6020000 */ sh $v0, ($s0)
.L8003655C:
/* 1195C 8003655C 0C00F949 */ jal func_8003E524
/* 11960 80036560 00000000 */ nop
/* 11964 80036564 0C00E64C */ jal update_npcs
/* 11968 80036568 00000000 */ nop
/* 1196C 8003656C 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* 11970 80036570 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)
/* 11974 80036574 0C0B1059 */ jal does_script_exist
/* 11978 80036578 8C44006C */ lw $a0, 0x6c($v0)
/* 1197C 8003657C 1440002C */ bnez $v0, .L80036630
/* 11980 80036580 00000000 */ nop
/* 11984 80036584 3C05800A */ lui $a1, %hi(D_8009A650)
/* 11988 80036588 24A5A650 */ addiu $a1, $a1, %lo(D_8009A650)
/* 1198C 8003658C 2404FFF7 */ addiu $a0, $zero, -9
/* 11990 80036590 8CA20000 */ lw $v0, ($a1)
/* 11994 80036594 96030000 */ lhu $v1, ($s0)
/* 11998 80036598 00441024 */ and $v0, $v0, $a0
/* 1199C 8003659C 24630001 */ addiu $v1, $v1, 1
/* 119A0 800365A0 ACA20000 */ sw $v0, ($a1)
/* 119A4 800365A4 0800D984 */ j .L80036610
/* 119A8 800365A8 A6030000 */ sh $v1, ($s0)
.L800365AC:
/* 119AC 800365AC 3C06800A */ lui $a2, %hi(D_800A0940)
/* 119B0 800365B0 24C60940 */ addiu $a2, $a2, %lo(D_800A0940)
/* 119B4 800365B4 94C20000 */ lhu $v0, ($a2)
/* 119B8 800365B8 3C03800A */ lui $v1, %hi(D_800A0942)
/* 119BC 800365BC 94630942 */ lhu $v1, %lo(D_800A0942)($v1)
/* 119C0 800365C0 00431023 */ subu $v0, $v0, $v1
/* 119C4 800365C4 A4C20000 */ sh $v0, ($a2)
/* 119C8 800365C8 00021400 */ sll $v0, $v0, 0x10
/* 119CC 800365CC 04410008 */ bgez $v0, .L800365F0
/* 119D0 800365D0 240400FF */ addiu $a0, $zero, 0xff
/* 119D4 800365D4 3C05BF80 */ lui $a1, 0xbf80
/* 119D8 800365D8 24E20001 */ addiu $v0, $a3, 1
/* 119DC 800365DC A4C00000 */ sh $zero, ($a2)
/* 119E0 800365E0 0C04DF62 */ jal func_80137D88
/* 119E4 800365E4 A6020000 */ sh $v0, ($s0)
/* 119E8 800365E8 0C00CD3C */ jal set_game_mode
/* 119EC 800365EC 24040004 */ addiu $a0, $zero, 4
.L800365F0:
/* 119F0 800365F0 0C00E64C */ jal update_npcs
/* 119F4 800365F4 00000000 */ nop
/* 119F8 800365F8 0C037DD0 */ jal update_player
/* 119FC 800365FC 00000000 */ nop
/* 11A00 80036600 0C016754 */ jal func_80059D50
/* 11A04 80036604 00000000 */ nop
/* 11A08 80036608 0C00B500 */ jal update_cameras
/* 11A0C 8003660C 00000000 */ nop
.L80036610:
/* 11A10 80036610 3C02800A */ lui $v0, %hi(D_800A0940)
/* 11A14 80036614 84420940 */ lh $v0, %lo(D_800A0940)($v0)
/* 11A18 80036618 44820000 */ mtc1 $v0, $f0
/* 11A1C 8003661C 00000000 */ nop
/* 11A20 80036620 46800020 */ cvt.s.w $f0, $f0
/* 11A24 80036624 44050000 */ mfc1 $a1, $f0
/* 11A28 80036628 0C04DF62 */ jal func_80137D88
/* 11A2C 8003662C 0000202D */ daddu $a0, $zero, $zero
.L80036630:
/* 11A30 80036630 8FBF0014 */ lw $ra, 0x14($sp)
/* 11A34 80036634 8FB00010 */ lw $s0, 0x10($sp)
/* 11A38 80036638 03E00008 */ jr $ra
/* 11A3C 8003663C 27BD0018 */ addiu $sp, $sp, 0x18