papermario/asm/nonmatchings/code_f270_len_1190/func_80034C3C.s
2020-11-29 02:13:07 -05:00

252 lines
13 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80034C3C
/* 1003C 80034C3C 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 10040 80034C40 AFB00018 */ sw $s0, 0x18($sp)
/* 10044 80034C44 3C10800A */ lui $s0, %hi(D_800A0921)
/* 10048 80034C48 26100921 */ addiu $s0, $s0, %lo(D_800A0921)
/* 1004C 80034C4C AFBF0024 */ sw $ra, 0x24($sp)
/* 10050 80034C50 AFB20020 */ sw $s2, 0x20($sp)
/* 10054 80034C54 AFB1001C */ sw $s1, 0x1c($sp)
/* 10058 80034C58 82030000 */ lb $v1, ($s0)
/* 1005C 80034C5C 24020003 */ addiu $v0, $zero, 3
/* 10060 80034C60 106200B8 */ beq $v1, $v0, .L80034F44
/* 10064 80034C64 28620004 */ slti $v0, $v1, 4
/* 10068 80034C68 14400006 */ bnez $v0, .L80034C84
/* 1006C 80034C6C 28620002 */ slti $v0, $v1, 2
/* 10070 80034C70 24020004 */ addiu $v0, $zero, 4
/* 10074 80034C74 106200CA */ beq $v1, $v0, .L80034FA0
/* 10078 80034C78 00000000 */ nop
/* 1007C 80034C7C 0800D3F6 */ j .L80034FD8
/* 10080 80034C80 00000000 */ nop
.L80034C84:
/* 10084 80034C84 104000D4 */ beqz $v0, .L80034FD8
/* 10088 80034C88 00000000 */ nop
/* 1008C 80034C8C 046000D2 */ bltz $v1, .L80034FD8
/* 10090 80034C90 24020004 */ addiu $v0, $zero, 4
/* 10094 80034C94 3C06800A */ lui $a2, %hi(D_800A0920)
/* 10098 80034C98 24C60920 */ addiu $a2, $a2, %lo(D_800A0920)
/* 1009C 80034C9C 80C30000 */ lb $v1, ($a2)
/* 100A0 80034CA0 14620007 */ bne $v1, $v0, .L80034CC0
/* 100A4 80034CA4 00000000 */ nop
/* 100A8 80034CA8 3C03800A */ lui $v1, %hi(D_8009A650)
/* 100AC 80034CAC 2463A650 */ addiu $v1, $v1, %lo(D_8009A650)
/* 100B0 80034CB0 8C620000 */ lw $v0, ($v1)
/* 100B4 80034CB4 34420008 */ ori $v0, $v0, 8
/* 100B8 80034CB8 AC620000 */ sw $v0, ($v1)
/* 100BC 80034CBC 80C30000 */ lb $v1, ($a2)
.L80034CC0:
/* 100C0 80034CC0 046000C5 */ bltz $v1, .L80034FD8
/* 100C4 80034CC4 90C20000 */ lbu $v0, ($a2)
/* 100C8 80034CC8 10600005 */ beqz $v1, .L80034CE0
/* 100CC 80034CCC 2442FFFF */ addiu $v0, $v0, -1
/* 100D0 80034CD0 A0C20000 */ sb $v0, ($a2)
/* 100D4 80034CD4 00021600 */ sll $v0, $v0, 0x18
/* 100D8 80034CD8 144000BF */ bnez $v0, .L80034FD8
/* 100DC 80034CDC 00000000 */ nop
.L80034CE0:
/* 100E0 80034CE0 3C048007 */ lui $a0, %hi(D_80077950)
/* 100E4 80034CE4 24847950 */ addiu $a0, $a0, %lo(D_80077950)
/* 100E8 80034CE8 24050003 */ addiu $a1, $zero, 3
/* 100EC 80034CEC 2402FFFF */ addiu $v0, $zero, -1
/* 100F0 80034CF0 0C017CBC */ jal nuGfxSetCfb
/* 100F4 80034CF4 A0C20000 */ sb $v0, ($a2)
/* 100F8 80034CF8 0C0911C2 */ jal pause_cleanup
/* 100FC 80034CFC 00000000 */ nop
/* 10100 80034D00 3C04800A */ lui $a0, %hi(D_8009A650)
/* 10104 80034D04 2484A650 */ addiu $a0, $a0, %lo(D_8009A650)
/* 10108 80034D08 8C820000 */ lw $v0, ($a0)
/* 1010C 80034D0C 2403FFF7 */ addiu $v1, $zero, -9
/* 10110 80034D10 00431024 */ and $v0, $v0, $v1
/* 10114 80034D14 0C016AFA */ jal get_current_map_header
/* 10118 80034D18 AC820000 */ sw $v0, ($a0)
/* 1011C 80034D1C 3C108007 */ lui $s0, %hi(gGameStatusPtr)
/* 10120 80034D20 2610419C */ addiu $s0, $s0, %lo(gGameStatusPtr)
/* 10124 80034D24 8E040000 */ lw $a0, ($s0)
/* 10128 80034D28 84830086 */ lh $v1, 0x86($a0)
/* 1012C 80034D2C 00031900 */ sll $v1, $v1, 4
/* 10130 80034D30 3C068009 */ lui $a2, %hi(D_800934F4)
/* 10134 80034D34 00C33021 */ addu $a2, $a2, $v1
/* 10138 80034D38 8CC634F4 */ lw $a2, %lo(D_800934F4)($a2)
/* 1013C 80034D3C 0040902D */ daddu $s2, $v0, $zero
/* 10140 80034D40 A0800070 */ sb $zero, 0x70($a0)
/* 10144 80034D44 8484008C */ lh $a0, 0x8c($a0)
/* 10148 80034D48 8E050000 */ lw $a1, ($s0)
/* 1014C 80034D4C 00042140 */ sll $a0, $a0, 5
/* 10150 80034D50 94A30148 */ lhu $v1, 0x148($a1)
/* 10154 80034D54 00C48821 */ addu $s1, $a2, $a0
/* 10158 80034D58 3063FF0F */ andi $v1, $v1, 0xff0f
/* 1015C 80034D5C 0C016BE1 */ jal func_8005AF84
/* 10160 80034D60 A4A30148 */ sh $v1, 0x148($a1)
/* 10164 80034D64 0C00AB37 */ jal func_8002ACDC
/* 10168 80034D68 00000000 */ nop
/* 1016C 80034D6C 0C018030 */ jal nuContRmbForceStopEnd
/* 10170 80034D70 00000000 */ nop
/* 10174 80034D74 0C05259C */ jal func_80149670
/* 10178 80034D78 24040001 */ addiu $a0, $zero, 1
/* 1017C 80034D7C 8E020000 */ lw $v0, ($s0)
/* 10180 80034D80 0C0B763E */ jal func_802DD8F8
/* 10184 80034D84 80440084 */ lb $a0, 0x84($v0)
/* 10188 80034D88 0C0457FA */ jal init_model_data
/* 1018C 80034D8C 00000000 */ nop
/* 10190 80034D90 0C05203C */ jal func_801480F0
/* 10194 80034D94 00000000 */ nop
/* 10198 80034D98 0C048316 */ jal init_virtual_models
/* 1019C 80034D9C 00000000 */ nop
/* 101A0 80034DA0 0C0478C4 */ jal func_8011E310
/* 101A4 80034DA4 00000000 */ nop
/* 101A8 80034DA8 0C048C45 */ jal init_dynamic_entity_list
/* 101AC 80034DAC 00000000 */ nop
/* 101B0 80034DB0 0000202D */ daddu $a0, $zero, $zero
/* 101B4 80034DB4 0C0514BA */ jal func_801452E8
/* 101B8 80034DB8 0080282D */ daddu $a1, $a0, $zero
/* 101BC 80034DBC 0C0504C0 */ jal init_menu_icon_list
/* 101C0 80034DC0 00000000 */ nop
/* 101C4 80034DC4 0C04C433 */ jal init_item_entity_list
/* 101C8 80034DC8 00000000 */ nop
/* 101CC 80034DCC 0C0B0CBB */ jal init_script_list
/* 101D0 80034DD0 00000000 */ nop
/* 101D4 80034DD4 0C00E14B */ jal init_npc_list
/* 101D8 80034DD8 00000000 */ nop
/* 101DC 80034DDC 0C044396 */ jal func_80110E58
/* 101E0 80034DE0 00000000 */ nop
/* 101E4 80034DE4 0C0515CA */ jal init_trigger_list
/* 101E8 80034DE8 00000000 */ nop
/* 101EC 80034DEC 3C04800A */ lui $a0, %hi(D_800A0924)
/* 101F0 80034DF0 8C840924 */ lw $a0, %lo(D_800A0924)($a0)
/* 101F4 80034DF4 0C0525FF */ jal func_801497FC
/* 101F8 80034DF8 00000000 */ nop
/* 101FC 80034DFC 0C052B1C */ jal func_8014AC70
/* 10200 80034E00 00000000 */ nop
/* 10204 80034E04 0C0169B0 */ jal load_world_script_api
/* 10208 80034E08 00000000 */ nop
/* 1020C 80034E0C 3C04800E */ lui $a0, %hi(D_800D9230)
/* 10210 80034E10 24849230 */ addiu $a0, $a0, %lo(D_800D9230)
/* 10214 80034E14 0C016B3A */ jal load_asset_by_name
/* 10218 80034E18 27A50010 */ addiu $a1, $sp, 0x10
/* 1021C 80034E1C 0040802D */ daddu $s0, $v0, $zero
/* 10220 80034E20 3C058021 */ lui $a1, %hi(D_80210000)
/* 10224 80034E24 24A50000 */ addiu $a1, $a1, %lo(D_80210000)
/* 10228 80034E28 0C01BB7C */ jal decode_yay0
/* 1022C 80034E2C 0200202D */ daddu $a0, $s0, $zero
/* 10230 80034E30 0C00AB1E */ jal general_heap_free
/* 10234 80034E34 0200202D */ daddu $a0, $s0, $zero
/* 10238 80034E38 0C016BE5 */ jal initialize_collision
/* 1023C 80034E3C 00000000 */ nop
/* 10240 80034E40 0C016C16 */ jal load_collision
/* 10244 80034E44 00000000 */ nop
/* 10248 80034E48 8E240008 */ lw $a0, 8($s1)
/* 1024C 80034E4C 10800004 */ beqz $a0, .L80034E60
/* 10250 80034E50 00000000 */ nop
/* 10254 80034E54 8E25000C */ lw $a1, 0xc($s1)
/* 10258 80034E58 0C00A5CF */ jal dma_copy
/* 1025C 80034E5C 8E260010 */ lw $a2, 0x10($s1)
.L80034E60:
/* 10260 80034E60 0C05175C */ jal load_map_bg
/* 10264 80034E64 8E240014 */ lw $a0, 0x14($s1)
/* 10268 80034E68 8E440038 */ lw $a0, 0x38($s2)
/* 1026C 80034E6C 50800005 */ beql $a0, $zero, .L80034E84
/* 10270 80034E70 24040128 */ addiu $a0, $zero, 0x128
/* 10274 80034E74 0C05178A */ jal read_background_size
/* 10278 80034E78 00000000 */ nop
/* 1027C 80034E7C 0800D3A5 */ j .L80034E94
/* 10280 80034E80 00000000 */ nop
.L80034E84:
/* 10284 80034E84 240500C8 */ addiu $a1, $zero, 0xc8
/* 10288 80034E88 2406000C */ addiu $a2, $zero, 0xc
/* 1028C 80034E8C 0C05179C */ jal set_background_size
/* 10290 80034E90 24070014 */ addiu $a3, $zero, 0x14
.L80034E94:
/* 10294 80034E94 3C038007 */ lui $v1, %hi(gGameStatusPtr)
/* 10298 80034E98 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1)
/* 1029C 80034E9C 9462015E */ lhu $v0, 0x15e($v1)
/* 102A0 80034EA0 0C04584B */ jal calculate_model_sizes
/* 102A4 80034EA4 A462015C */ sh $v0, 0x15c($v1)
/* 102A8 80034EA8 0C00EC6C */ jal func_8003B1B0
/* 102AC 80034EAC 00000000 */ nop
/* 102B0 80034EB0 0C051FB1 */ jal func_80147EC4
/* 102B4 80034EB4 0000202D */ daddu $a0, $zero, $zero
/* 102B8 80034EB8 0C03A631 */ jal func_800E98C4
/* 102BC 80034EBC 00000000 */ nop
/* 102C0 80034EC0 0C009C22 */ jal func_80027088
/* 102C4 80034EC4 24040001 */ addiu $a0, $zero, 1
/* 102C8 80034EC8 24020003 */ addiu $v0, $zero, 3
/* 102CC 80034ECC 3C048011 */ lui $a0, %hi(gPlayerStatus)
/* 102D0 80034ED0 2484EFC8 */ addiu $a0, $a0, %lo(gPlayerStatus)
/* 102D4 80034ED4 3C01800A */ lui $at, %hi(D_800A0921)
/* 102D8 80034ED8 A0220921 */ sb $v0, %lo(D_800A0921)($at)
/* 102DC 80034EDC 9082000E */ lbu $v0, 0xe($a0)
/* 102E0 80034EE0 3C03802E */ lui $v1, %hi(D_802D9D70)
/* 102E4 80034EE4 90639D70 */ lbu $v1, %lo(D_802D9D70)($v1)
/* 102E8 80034EE8 2442FFFF */ addiu $v0, $v0, -1
/* 102EC 80034EEC 24630001 */ addiu $v1, $v1, 1
/* 102F0 80034EF0 A082000F */ sb $v0, 0xf($a0)
/* 102F4 80034EF4 3C01802E */ lui $at, %hi(D_802D9D71)
/* 102F8 80034EF8 A0239D71 */ sb $v1, %lo(D_802D9D71)($at)
/* 102FC 80034EFC 0C00F949 */ jal func_8003E524
/* 10300 80034F00 00000000 */ nop
/* 10304 80034F04 0C00E64C */ jal update_npcs
/* 10308 80034F08 00000000 */ nop
/* 1030C 80034F0C 0C037DD0 */ jal update_player
/* 10310 80034F10 00000000 */ nop
/* 10314 80034F14 0C016754 */ jal func_80059D50
/* 10318 80034F18 00000000 */ nop
/* 1031C 80034F1C 3C03800A */ lui $v1, %hi(D_800A0922)
/* 10320 80034F20 24630922 */ addiu $v1, $v1, %lo(D_800A0922)
/* 10324 80034F24 94620000 */ lhu $v0, ($v1)
/* 10328 80034F28 2442FFEC */ addiu $v0, $v0, -0x14
/* 1032C 80034F2C A4620000 */ sh $v0, ($v1)
/* 10330 80034F30 00021400 */ sll $v0, $v0, 0x10
/* 10334 80034F34 04420028 */ bltzl $v0, .L80034FD8
/* 10338 80034F38 A4600000 */ sh $zero, ($v1)
/* 1033C 80034F3C 0800D3F6 */ j .L80034FD8
/* 10340 80034F40 00000000 */ nop
.L80034F44:
/* 10344 80034F44 0C00F949 */ jal func_8003E524
/* 10348 80034F48 00000000 */ nop
/* 1034C 80034F4C 0C00E64C */ jal update_npcs
/* 10350 80034F50 00000000 */ nop
/* 10354 80034F54 0C037DD0 */ jal update_player
/* 10358 80034F58 00000000 */ nop
/* 1035C 80034F5C 0C016754 */ jal func_80059D50
/* 10360 80034F60 00000000 */ nop
/* 10364 80034F64 3C04800A */ lui $a0, %hi(D_800A0922)
/* 10368 80034F68 24840922 */ addiu $a0, $a0, %lo(D_800A0922)
/* 1036C 80034F6C 84820000 */ lh $v0, ($a0)
/* 10370 80034F70 94830000 */ lhu $v1, ($a0)
/* 10374 80034F74 14400004 */ bnez $v0, .L80034F88
/* 10378 80034F78 2462FFEC */ addiu $v0, $v1, -0x14
/* 1037C 80034F7C 24020004 */ addiu $v0, $zero, 4
/* 10380 80034F80 0800D3F6 */ j .L80034FD8
/* 10384 80034F84 A2020000 */ sb $v0, ($s0)
.L80034F88:
/* 10388 80034F88 A4820000 */ sh $v0, ($a0)
/* 1038C 80034F8C 00021400 */ sll $v0, $v0, 0x10
/* 10390 80034F90 04420011 */ bltzl $v0, .L80034FD8
/* 10394 80034F94 A4800000 */ sh $zero, ($a0)
/* 10398 80034F98 0800D3F6 */ j .L80034FD8
/* 1039C 80034F9C 00000000 */ nop
.L80034FA0:
/* 103A0 80034FA0 0C009C22 */ jal func_80027088
/* 103A4 80034FA4 0000202D */ daddu $a0, $zero, $zero
/* 103A8 80034FA8 0C00F949 */ jal func_8003E524
/* 103AC 80034FAC 00000000 */ nop
/* 103B0 80034FB0 0C00E64C */ jal update_npcs
/* 103B4 80034FB4 00000000 */ nop
/* 103B8 80034FB8 0C037DD0 */ jal update_player
/* 103BC 80034FBC 00000000 */ nop
/* 103C0 80034FC0 0C016754 */ jal func_80059D50
/* 103C4 80034FC4 00000000 */ nop
/* 103C8 80034FC8 0C038069 */ jal enable_player_input
/* 103CC 80034FCC 00000000 */ nop
/* 103D0 80034FD0 0C00CD3C */ jal set_game_mode
/* 103D4 80034FD4 24040004 */ addiu $a0, $zero, 4
.L80034FD8:
/* 103D8 80034FD8 8FBF0024 */ lw $ra, 0x24($sp)
/* 103DC 80034FDC 8FB20020 */ lw $s2, 0x20($sp)
/* 103E0 80034FE0 8FB1001C */ lw $s1, 0x1c($sp)
/* 103E4 80034FE4 8FB00018 */ lw $s0, 0x18($sp)
/* 103E8 80034FE8 03E00008 */ jr $ra
/* 103EC 80034FEC 27BD0028 */ addiu $sp, $sp, 0x28