mirror of https://github.com/n64decomp/mk64.git
280 lines
13 KiB
ArmAsm
280 lines
13 KiB
ArmAsm
glabel load_surface_map
|
|
/* 0FA3BC 80290DAC 00047602 */ srl $t6, $a0, 0x18
|
|
/* 0FA3C0 80290DB0 000E7880 */ sll $t7, $t6, 2
|
|
/* 0FA3C4 80290DB4 3C188015 */ lui $t8, %hi(gSegmentTable)
|
|
/* 0FA3C8 80290DB8 030FC021 */ addu $t8, $t8, $t7
|
|
/* 0FA3CC 80290DBC 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
|
|
/* 0FA3D0 80290DC0 8F180258 */ lw $t8, %lo(gSegmentTable)($t8)
|
|
/* 0FA3D4 80290DC4 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
|
|
/* 0FA3D8 80290DC8 27BDFFC8 */ addiu $sp, $sp, -0x38
|
|
/* 0FA3DC 80290DCC 0081C824 */ and $t9, $a0, $at
|
|
/* 0FA3E0 80290DD0 3C0C800E */ lui $t4, %hi(gIsMirrorMode) # $t4, 0x800e
|
|
/* 0FA3E4 80290DD4 8D8CC604 */ lw $t4, %lo(gIsMirrorMode)($t4)
|
|
/* 0FA3E8 80290DD8 AFBF0014 */ sw $ra, 0x14($sp)
|
|
/* 0FA3EC 80290DDC 3C018000 */ lui $at, 0x8000
|
|
/* 0FA3F0 80290DE0 03195021 */ addu $t2, $t8, $t9
|
|
/* 0FA3F4 80290DE4 8CA90008 */ lw $t1, 8($a1)
|
|
/* 0FA3F8 80290DE8 8CA60004 */ lw $a2, 4($a1)
|
|
/* 0FA3FC 80290DEC 01415821 */ addu $t3, $t2, $at
|
|
/* 0FA400 80290DF0 1180001A */ beqz $t4, .L80290E5C
|
|
/* 0FA404 80290DF4 AFAB0024 */ sw $t3, 0x24($sp)
|
|
/* 0FA408 80290DF8 94C20026 */ lhu $v0, 0x26($a2)
|
|
/* 0FA40C 80290DFC 28412000 */ slti $at, $v0, 0x2000
|
|
/* 0FA410 80290E00 50200004 */ beql $at, $zero, .L80290E14
|
|
/* 0FA414 80290E04 28416000 */ slti $at, $v0, 0x6000
|
|
/* 0FA418 80290E08 1000002B */ b .L80290EB8
|
|
/* 0FA41C 80290E0C 24070002 */ li $a3, 2
|
|
/* 0FA420 80290E10 28416000 */ slti $at, $v0, 0x6000
|
|
.L80290E14:
|
|
/* 0FA424 80290E14 50200004 */ beql $at, $zero, .L80290E28
|
|
/* 0FA428 80290E18 3401A000 */ li $at, 40960
|
|
/* 0FA42C 80290E1C 10000026 */ b .L80290EB8
|
|
/* 0FA430 80290E20 24070003 */ li $a3, 3
|
|
/* 0FA434 80290E24 3401A000 */ li $at, 40960
|
|
.L80290E28:
|
|
/* 0FA438 80290E28 0041082A */ slt $at, $v0, $at
|
|
/* 0FA43C 80290E2C 50200004 */ beql $at, $zero, .L80290E40
|
|
/* 0FA440 80290E30 3401E000 */ li $at, 57344
|
|
/* 0FA444 80290E34 10000020 */ b .L80290EB8
|
|
/* 0FA448 80290E38 00003825 */ move $a3, $zero
|
|
/* 0FA44C 80290E3C 3401E000 */ li $at, 57344
|
|
.L80290E40:
|
|
/* 0FA450 80290E40 0041082A */ slt $at, $v0, $at
|
|
/* 0FA454 80290E44 10200003 */ beqz $at, .L80290E54
|
|
/* 0FA458 80290E48 00000000 */ nop
|
|
/* 0FA45C 80290E4C 1000001A */ b .L80290EB8
|
|
/* 0FA460 80290E50 24070001 */ li $a3, 1
|
|
.L80290E54:
|
|
/* 0FA464 80290E54 10000018 */ b .L80290EB8
|
|
/* 0FA468 80290E58 24070002 */ li $a3, 2
|
|
.L80290E5C:
|
|
/* 0FA46C 80290E5C 94C20026 */ lhu $v0, 0x26($a2)
|
|
/* 0FA470 80290E60 28412000 */ slti $at, $v0, 0x2000
|
|
/* 0FA474 80290E64 50200004 */ beql $at, $zero, .L80290E78
|
|
/* 0FA478 80290E68 28416000 */ slti $at, $v0, 0x6000
|
|
/* 0FA47C 80290E6C 10000012 */ b .L80290EB8
|
|
/* 0FA480 80290E70 24070002 */ li $a3, 2
|
|
/* 0FA484 80290E74 28416000 */ slti $at, $v0, 0x6000
|
|
.L80290E78:
|
|
/* 0FA488 80290E78 50200004 */ beql $at, $zero, .L80290E8C
|
|
/* 0FA48C 80290E7C 3401A000 */ li $at, 40960
|
|
/* 0FA490 80290E80 1000000D */ b .L80290EB8
|
|
/* 0FA494 80290E84 24070001 */ li $a3, 1
|
|
/* 0FA498 80290E88 3401A000 */ li $at, 40960
|
|
.L80290E8C:
|
|
/* 0FA49C 80290E8C 0041082A */ slt $at, $v0, $at
|
|
/* 0FA4A0 80290E90 50200004 */ beql $at, $zero, .L80290EA4
|
|
/* 0FA4A4 80290E94 3401E000 */ li $at, 57344
|
|
/* 0FA4A8 80290E98 10000007 */ b .L80290EB8
|
|
/* 0FA4AC 80290E9C 00003825 */ move $a3, $zero
|
|
/* 0FA4B0 80290EA0 3401E000 */ li $at, 57344
|
|
.L80290EA4:
|
|
/* 0FA4B4 80290EA4 0041082A */ slt $at, $v0, $at
|
|
/* 0FA4B8 80290EA8 10200003 */ beqz $at, .L80290EB8
|
|
/* 0FA4BC 80290EAC 24070002 */ li $a3, 2
|
|
/* 0FA4C0 80290EB0 10000001 */ b .L80290EB8
|
|
/* 0FA4C4 80290EB4 24070003 */ li $a3, 3
|
|
.L80290EB8:
|
|
/* 0FA4C8 80290EB8 A4A70036 */ sh $a3, 0x36($a1)
|
|
/* 0FA4CC 80290EBC 3C0D800E */ lui $t5, %hi(camera1) # $t5, 0x800e
|
|
/* 0FA4D0 80290EC0 8DADDB40 */ lw $t5, %lo(camera1)($t5)
|
|
/* 0FA4D4 80290EC4 240100B8 */ li $at, 184
|
|
/* 0FA4D8 80290EC8 3C198015 */ lui $t9, %hi(D_80152300)
|
|
/* 0FA4DC 80290ECC 00CD7023 */ subu $t6, $a2, $t5
|
|
/* 0FA4E0 80290ED0 01C1001A */ div $zero, $t6, $at
|
|
/* 0FA4E4 80290ED4 00007812 */ mflo $t7
|
|
/* 0FA4E8 80290ED8 000FC040 */ sll $t8, $t7, 1
|
|
/* 0FA4EC 80290EDC 0338C821 */ addu $t9, $t9, $t8
|
|
/* 0FA4F0 80290EE0 97392300 */ lhu $t9, %lo(D_80152300)($t9)
|
|
/* 0FA4F4 80290EE4 24010001 */ li $at, 1
|
|
/* 0FA4F8 80290EE8 57210080 */ bnel $t9, $at, .L802910EC
|
|
/* 0FA4FC 80290EEC 94C4005E */ lhu $a0, 0x5e($a2)
|
|
/* 0FA500 80290EF0 94C4005E */ lhu $a0, 0x5e($a2)
|
|
/* 0FA504 80290EF4 AFA90034 */ sw $t1, 0x34($sp)
|
|
/* 0FA508 80290EF8 A7A70022 */ sh $a3, 0x22($sp)
|
|
/* 0FA50C 80290EFC AFA60030 */ sw $a2, 0x30($sp)
|
|
/* 0FA510 80290F00 0C0AAF50 */ jal func_802ABD40
|
|
/* 0FA514 80290F04 AFA5003C */ sw $a1, 0x3c($sp)
|
|
/* 0FA518 80290F08 8FA90034 */ lw $t1, 0x34($sp)
|
|
/* 0FA51C 80290F0C 9524011A */ lhu $a0, 0x11a($t1)
|
|
/* 0FA520 80290F10 0C0AAF50 */ jal func_802ABD40
|
|
/* 0FA524 80290F14 A7A2001E */ sh $v0, 0x1e($sp)
|
|
/* 0FA528 80290F18 87A5001E */ lh $a1, 0x1e($sp)
|
|
/* 0FA52C 80290F1C 8FA60030 */ lw $a2, 0x30($sp)
|
|
/* 0FA530 80290F20 87A70022 */ lh $a3, 0x22($sp)
|
|
/* 0FA534 80290F24 00A21823 */ subu $v1, $a1, $v0
|
|
/* 0FA538 80290F28 00035C00 */ sll $t3, $v1, 0x10
|
|
/* 0FA53C 80290F2C 000B6403 */ sra $t4, $t3, 0x10
|
|
/* 0FA540 80290F30 29810002 */ slti $at, $t4, 2
|
|
/* 0FA544 80290F34 8FA8003C */ lw $t0, 0x3c($sp)
|
|
/* 0FA548 80290F38 10200022 */ beqz $at, .L80290FC4
|
|
/* 0FA54C 80290F3C 8FA90034 */ lw $t1, 0x34($sp)
|
|
/* 0FA550 80290F40 2981FFFF */ slti $at, $t4, -1
|
|
/* 0FA554 80290F44 1420001F */ bnez $at, .L80290FC4
|
|
/* 0FA558 80290F48 240300FF */ li $v1, 255
|
|
/* 0FA55C 80290F4C 14A30011 */ bne $a1, $v1, .L80290F94
|
|
/* 0FA560 80290F50 3C0141F0 */ li $at, 0x41F00000 # 30.000000
|
|
/* 0FA564 80290F54 14430003 */ bne $v0, $v1, .L80290F64
|
|
/* 0FA568 80290F58 3C0141F0 */ li $at, 0x41F00000 # 30.000000
|
|
/* 0FA56C 80290F5C 10000078 */ b .L80291140
|
|
/* 0FA570 80290F60 85040038 */ lh $a0, 0x38($t0)
|
|
.L80290F64:
|
|
/* 0FA574 80290F64 44812000 */ mtc1 $at, $f4
|
|
/* 0FA578 80290F68 C5260124 */ lwc1 $f6, 0x124($t1)
|
|
/* 0FA57C 80290F6C 00022400 */ sll $a0, $v0, 0x10
|
|
/* 0FA580 80290F70 00046C03 */ sra $t5, $a0, 0x10
|
|
/* 0FA584 80290F74 4606203C */ c.lt.s $f4, $f6
|
|
/* 0FA588 80290F78 00000000 */ nop
|
|
/* 0FA58C 80290F7C 45000003 */ bc1f .L80290F8C
|
|
/* 0FA590 80290F80 00000000 */ nop
|
|
/* 0FA594 80290F84 1000006E */ b .L80291140
|
|
/* 0FA598 80290F88 85040038 */ lh $a0, 0x38($t0)
|
|
.L80290F8C:
|
|
/* 0FA59C 80290F8C 1000006C */ b .L80291140
|
|
/* 0FA5A0 80290F90 01A02025 */ move $a0, $t5
|
|
.L80290F94:
|
|
/* 0FA5A4 80290F94 44814000 */ mtc1 $at, $f8
|
|
/* 0FA5A8 80290F98 C4CA0068 */ lwc1 $f10, 0x68($a2)
|
|
/* 0FA5AC 80290F9C 00052400 */ sll $a0, $a1, 0x10
|
|
/* 0FA5B0 80290FA0 00047403 */ sra $t6, $a0, 0x10
|
|
/* 0FA5B4 80290FA4 460A403C */ c.lt.s $f8, $f10
|
|
/* 0FA5B8 80290FA8 00000000 */ nop
|
|
/* 0FA5BC 80290FAC 45000003 */ bc1f .L80290FBC
|
|
/* 0FA5C0 80290FB0 00000000 */ nop
|
|
/* 0FA5C4 80290FB4 10000062 */ b .L80291140
|
|
/* 0FA5C8 80290FB8 85040038 */ lh $a0, 0x38($t0)
|
|
.L80290FBC:
|
|
/* 0FA5CC 80290FBC 10000060 */ b .L80291140
|
|
/* 0FA5D0 80290FC0 01C02025 */ move $a0, $t6
|
|
.L80290FC4:
|
|
/* 0FA5D4 80290FC4 3C03800E */ lui $v1, %hi(gCurrentCourseId) # $v1, 0x800e
|
|
/* 0FA5D8 80290FC8 8463C5A0 */ lh $v1, %lo(gCurrentCourseId)($v1)
|
|
/* 0FA5DC 80290FCC 24010001 */ li $at, 1
|
|
/* 0FA5E0 80290FD0 1061001B */ beq $v1, $at, .L80291040
|
|
/* 0FA5E4 80290FD4 24010002 */ li $at, 2
|
|
/* 0FA5E8 80290FD8 14610032 */ bne $v1, $at, .L802910A4
|
|
/* 0FA5EC 80290FDC 28410011 */ slti $at, $v0, 0x11
|
|
/* 0FA5F0 80290FE0 14200007 */ bnez $at, .L80291000
|
|
/* 0FA5F4 80290FE4 240300FF */ li $v1, 255
|
|
/* 0FA5F8 80290FE8 28410018 */ slti $at, $v0, 0x18
|
|
/* 0FA5FC 80290FEC 10200004 */ beqz $at, .L80291000
|
|
/* 0FA600 80290FF0 00022400 */ sll $a0, $v0, 0x10
|
|
/* 0FA604 80290FF4 00047C03 */ sra $t7, $a0, 0x10
|
|
/* 0FA608 80290FF8 10000051 */ b .L80291140
|
|
/* 0FA60C 80290FFC 01E02025 */ move $a0, $t7
|
|
.L80291000:
|
|
/* 0FA610 80291000 14430006 */ bne $v0, $v1, .L8029101C
|
|
/* 0FA614 80291004 00000000 */ nop
|
|
/* 0FA618 80291008 10A30004 */ beq $a1, $v1, .L8029101C
|
|
/* 0FA61C 8029100C 00052400 */ sll $a0, $a1, 0x10
|
|
/* 0FA620 80291010 0004C403 */ sra $t8, $a0, 0x10
|
|
/* 0FA624 80291014 1000004A */ b .L80291140
|
|
/* 0FA628 80291018 03002025 */ move $a0, $t8
|
|
.L8029101C:
|
|
/* 0FA62C 8029101C 10430006 */ beq $v0, $v1, .L80291038
|
|
/* 0FA630 80291020 00000000 */ nop
|
|
/* 0FA634 80291024 14A30004 */ bne $a1, $v1, .L80291038
|
|
/* 0FA638 80291028 00022400 */ sll $a0, $v0, 0x10
|
|
/* 0FA63C 8029102C 0004CC03 */ sra $t9, $a0, 0x10
|
|
/* 0FA640 80291030 10000043 */ b .L80291140
|
|
/* 0FA644 80291034 03202025 */ move $a0, $t9
|
|
.L80291038:
|
|
/* 0FA648 80291038 10000041 */ b .L80291140
|
|
/* 0FA64C 8029103C 85040038 */ lh $a0, 0x38($t0)
|
|
.L80291040:
|
|
/* 0FA650 80291040 2841000E */ slti $at, $v0, 0xe
|
|
/* 0FA654 80291044 14200007 */ bnez $at, .L80291064
|
|
/* 0FA658 80291048 240300FF */ li $v1, 255
|
|
/* 0FA65C 8029104C 28410016 */ slti $at, $v0, 0x16
|
|
/* 0FA660 80291050 10200004 */ beqz $at, .L80291064
|
|
/* 0FA664 80291054 00022400 */ sll $a0, $v0, 0x10
|
|
/* 0FA668 80291058 00045403 */ sra $t2, $a0, 0x10
|
|
/* 0FA66C 8029105C 10000038 */ b .L80291140
|
|
/* 0FA670 80291060 01402025 */ move $a0, $t2
|
|
.L80291064:
|
|
/* 0FA674 80291064 14430006 */ bne $v0, $v1, .L80291080
|
|
/* 0FA678 80291068 00000000 */ nop
|
|
/* 0FA67C 8029106C 10A30004 */ beq $a1, $v1, .L80291080
|
|
/* 0FA680 80291070 00052400 */ sll $a0, $a1, 0x10
|
|
/* 0FA684 80291074 00045C03 */ sra $t3, $a0, 0x10
|
|
/* 0FA688 80291078 10000031 */ b .L80291140
|
|
/* 0FA68C 8029107C 01602025 */ move $a0, $t3
|
|
.L80291080:
|
|
/* 0FA690 80291080 10430006 */ beq $v0, $v1, .L8029109C
|
|
/* 0FA694 80291084 00000000 */ nop
|
|
/* 0FA698 80291088 14A30004 */ bne $a1, $v1, .L8029109C
|
|
/* 0FA69C 8029108C 00022400 */ sll $a0, $v0, 0x10
|
|
/* 0FA6A0 80291090 00046403 */ sra $t4, $a0, 0x10
|
|
/* 0FA6A4 80291094 1000002A */ b .L80291140
|
|
/* 0FA6A8 80291098 01802025 */ move $a0, $t4
|
|
.L8029109C:
|
|
/* 0FA6AC 8029109C 10000028 */ b .L80291140
|
|
/* 0FA6B0 802910A0 85040038 */ lh $a0, 0x38($t0)
|
|
.L802910A4:
|
|
/* 0FA6B4 802910A4 240300FF */ li $v1, 255
|
|
/* 0FA6B8 802910A8 14430003 */ bne $v0, $v1, .L802910B8
|
|
/* 0FA6BC 802910AC 3C0141F0 */ li $at, 0x41F00000 # 30.000000
|
|
/* 0FA6C0 802910B0 10000023 */ b .L80291140
|
|
/* 0FA6C4 802910B4 85040038 */ lh $a0, 0x38($t0)
|
|
.L802910B8:
|
|
/* 0FA6C8 802910B8 44818000 */ mtc1 $at, $f16
|
|
/* 0FA6CC 802910BC C5320124 */ lwc1 $f18, 0x124($t1)
|
|
/* 0FA6D0 802910C0 00022400 */ sll $a0, $v0, 0x10
|
|
/* 0FA6D4 802910C4 00046C03 */ sra $t5, $a0, 0x10
|
|
/* 0FA6D8 802910C8 4612803C */ c.lt.s $f16, $f18
|
|
/* 0FA6DC 802910CC 00000000 */ nop
|
|
/* 0FA6E0 802910D0 45000003 */ bc1f .L802910E0
|
|
/* 0FA6E4 802910D4 00000000 */ nop
|
|
/* 0FA6E8 802910D8 10000019 */ b .L80291140
|
|
/* 0FA6EC 802910DC 85040038 */ lh $a0, 0x38($t0)
|
|
.L802910E0:
|
|
/* 0FA6F0 802910E0 10000017 */ b .L80291140
|
|
/* 0FA6F4 802910E4 01A02025 */ move $a0, $t5
|
|
/* 0FA6F8 802910E8 94C4005E */ lhu $a0, 0x5e($a2)
|
|
.L802910EC:
|
|
/* 0FA6FC 802910EC A7A70022 */ sh $a3, 0x22($sp)
|
|
/* 0FA700 802910F0 AFA60030 */ sw $a2, 0x30($sp)
|
|
/* 0FA704 802910F4 0C0AAF50 */ jal func_802ABD40
|
|
/* 0FA708 802910F8 AFA5003C */ sw $a1, 0x3c($sp)
|
|
/* 0FA70C 802910FC 8FA60030 */ lw $a2, 0x30($sp)
|
|
/* 0FA710 80291100 3C0141F0 */ li $at, 0x41F00000 # 30.000000
|
|
/* 0FA714 80291104 44812000 */ mtc1 $at, $f4
|
|
/* 0FA718 80291108 C4C60068 */ lwc1 $f6, 0x68($a2)
|
|
/* 0FA71C 8029110C 00022400 */ sll $a0, $v0, 0x10
|
|
/* 0FA720 80291110 00047403 */ sra $t6, $a0, 0x10
|
|
/* 0FA724 80291114 4606203C */ c.lt.s $f4, $f6
|
|
/* 0FA728 80291118 01C02025 */ move $a0, $t6
|
|
/* 0FA72C 8029111C 87A70022 */ lh $a3, 0x22($sp)
|
|
/* 0FA730 80291120 8FA8003C */ lw $t0, 0x3c($sp)
|
|
/* 0FA734 80291124 45000003 */ bc1f .L80291134
|
|
/* 0FA738 80291128 240300FF */ li $v1, 255
|
|
/* 0FA73C 8029112C 10000004 */ b .L80291140
|
|
/* 0FA740 80291130 85040038 */ lh $a0, 0x38($t0)
|
|
.L80291134:
|
|
/* 0FA744 80291134 14430002 */ bne $v0, $v1, .L80291140
|
|
/* 0FA748 80291138 00000000 */ nop
|
|
/* 0FA74C 8029113C 85040038 */ lh $a0, 0x38($t0)
|
|
.L80291140:
|
|
/* 0FA750 80291140 3C058015 */ lui $a1, %hi(gDisplayListHead) # $a1, 0x8015
|
|
/* 0FA754 80291144 24A50298 */ addiu $a1, %lo(gDisplayListHead) # addiu $a1, $a1, 0x298
|
|
/* 0FA758 80291148 A5040038 */ sh $a0, 0x38($t0)
|
|
/* 0FA75C 8029114C 8CA30000 */ lw $v1, ($a1)
|
|
/* 0FA760 80291150 00047880 */ sll $t7, $a0, 2
|
|
/* 0FA764 80291154 01E72021 */ addu $a0, $t7, $a3
|
|
/* 0FA768 80291158 246A0008 */ addiu $t2, $v1, 8
|
|
/* 0FA76C 8029115C ACAA0000 */ sw $t2, ($a1)
|
|
/* 0FA770 80291160 3C0B0600 */ lui $t3, 0x600
|
|
/* 0FA774 80291164 2484FFFC */ addiu $a0, $a0, -4
|
|
/* 0FA778 80291168 AC6B0000 */ sw $t3, ($v1)
|
|
/* 0FA77C 8029116C 8FAC0024 */ lw $t4, 0x24($sp)
|
|
/* 0FA780 80291170 0004C400 */ sll $t8, $a0, 0x10
|
|
/* 0FA784 80291174 0018CC03 */ sra $t9, $t8, 0x10
|
|
/* 0FA788 80291178 00196880 */ sll $t5, $t9, 2
|
|
/* 0FA78C 8029117C 018D7021 */ addu $t6, $t4, $t5
|
|
/* 0FA790 80291180 8DCF0000 */ lw $t7, ($t6)
|
|
/* 0FA794 80291184 AC6F0004 */ sw $t7, 4($v1)
|
|
/* 0FA798 80291188 8FBF0014 */ lw $ra, 0x14($sp)
|
|
/* 0FA79C 8029118C 27BD0038 */ addiu $sp, $sp, 0x38
|
|
/* 0FA7A0 80291190 03E00008 */ jr $ra
|
|
/* 0FA7A4 80291194 00000000 */ nop
|