mirror of
https://github.com/zeldaret/oot
synced 2026-09-02 01:52:35 -04:00
8fa6cb6ff9
* Darkmeiro decompilation Bg_Gnd_Darkmeiro decompiled, matched, and documented. * give this a shot * fix conflict * one more try * could be useful * whoops * ZAP2 stuff * ZAP why * ZAP again * maths * Factoriali -> Factorial * soon, soon * renames * rand * docs * merged * formatting * little more cleanup * asm crept back in * changes to MathF * smooth criminal * functions.h
216 lines
10 KiB
ArmAsm
216 lines
10 KiB
ArmAsm
.late_rodata
|
|
glabel D_8013C7F8
|
|
.float 0.1
|
|
|
|
glabel D_8013C7FC
|
|
.float 2.9
|
|
|
|
.text
|
|
glabel func_800750C0
|
|
/* AEC260 800750C0 27BDFFE0 */ addiu $sp, $sp, -0x20
|
|
/* AEC264 800750C4 3C010001 */ lui $at, 1
|
|
/* AEC268 800750C8 AFBF001C */ sw $ra, 0x1c($sp)
|
|
/* AEC26C 800750CC AFA40020 */ sw $a0, 0x20($sp)
|
|
/* AEC270 800750D0 00811021 */ addu $v0, $a0, $at
|
|
/* AEC274 800750D4 904E0B03 */ lbu $t6, 0xb03($v0)
|
|
/* AEC278 800750D8 3C038016 */ lui $v1, %hi(D_8015FD70) # $v1, 0x8016
|
|
/* AEC27C 800750DC 2463FD70 */ addiu $v1, %lo(D_8015FD70) # addiu $v1, $v1, -0x290
|
|
/* AEC280 800750E0 11C000A6 */ beqz $t6, .L8007537C
|
|
/* AEC284 800750E4 00000000 */ nop
|
|
/* AEC288 800750E8 90640000 */ lbu $a0, ($v1)
|
|
/* AEC28C 800750EC 24010001 */ li $at, 1
|
|
/* AEC290 800750F0 10800008 */ beqz $a0, .L80075114
|
|
/* AEC294 800750F4 00000000 */ nop
|
|
/* AEC298 800750F8 1081005E */ beq $a0, $at, .L80075274
|
|
/* AEC29C 800750FC 3C088016 */ lui $t0, %hi(D_8015FD7C)
|
|
/* AEC2A0 80075100 24050002 */ li $a1, 2
|
|
/* AEC2A4 80075104 5085007E */ beql $a0, $a1, .L80075300
|
|
/* AEC2A8 80075108 84440AB0 */ lh $a0, 0xab0($v0)
|
|
/* AEC2AC 8007510C 1000009B */ b .L8007537C
|
|
/* AEC2B0 80075110 00000000 */ nop
|
|
.L80075114:
|
|
/* AEC2B4 80075114 0C03F66B */ jal Rand_ZeroOne
|
|
/* AEC2B8 80075118 00000000 */ nop
|
|
/* AEC2BC 8007511C 3C018014 */ lui $at, %hi(D_8013C7F8)
|
|
/* AEC2C0 80075120 C424C7F8 */ lwc1 $f4, %lo(D_8013C7F8)($at)
|
|
/* AEC2C4 80075124 3C038016 */ lui $v1, %hi(D_8015FD70) # $v1, 0x8016
|
|
/* AEC2C8 80075128 2463FD70 */ addiu $v1, %lo(D_8015FD70) # addiu $v1, $v1, -0x290
|
|
/* AEC2CC 8007512C 4604003C */ c.lt.s $f0, $f4
|
|
/* AEC2D0 80075130 3C014248 */ li $at, 0x42480000 # 0.000000
|
|
/* AEC2D4 80075134 45000006 */ bc1f .L80075150
|
|
/* AEC2D8 80075138 00000000 */ nop
|
|
/* AEC2DC 8007513C C4660008 */ lwc1 $f6, 8($v1)
|
|
/* AEC2E0 80075140 44814000 */ mtc1 $at, $f8
|
|
/* AEC2E4 80075144 00000000 */ nop
|
|
/* AEC2E8 80075148 46083280 */ add.s $f10, $f6, $f8
|
|
/* AEC2EC 8007514C E46A0008 */ swc1 $f10, 8($v1)
|
|
.L80075150:
|
|
/* AEC2F0 80075150 0C03F66B */ jal Rand_ZeroOne
|
|
/* AEC2F4 80075154 00000000 */ nop
|
|
/* AEC2F8 80075158 3C038016 */ lui $v1, %hi(D_8015FD70)
|
|
/* AEC2FC 8007515C 2463FD70 */ addiu $v1, %lo(D_8015FD70) # addiu $v1, $v1, -0x290
|
|
/* AEC300 80075160 C4700008 */ lwc1 $f16, 8($v1)
|
|
/* AEC304 80075164 3C0143FA */ li $at, 0x43FA0000 # 0.000000
|
|
/* AEC308 80075168 44812000 */ mtc1 $at, $f4
|
|
/* AEC30C 8007516C 46008480 */ add.s $f18, $f16, $f0
|
|
/* AEC310 80075170 240400C8 */ li $a0, 200
|
|
/* AEC314 80075174 240F00FF */ li $t7, 255
|
|
/* AEC318 80075178 E4720008 */ swc1 $f18, 8($v1)
|
|
/* AEC31C 8007517C C4660008 */ lwc1 $f6, 8($v1)
|
|
/* AEC320 80075180 4606203C */ c.lt.s $f4, $f6
|
|
/* AEC324 80075184 00000000 */ nop
|
|
/* AEC328 80075188 45000038 */ bc1f .L8007526C
|
|
/* AEC32C 8007518C 00000000 */ nop
|
|
/* AEC330 80075190 44804000 */ mtc1 $zero, $f8
|
|
/* AEC334 80075194 A0640001 */ sb $a0, 1($v1)
|
|
/* AEC338 80075198 A0640002 */ sb $a0, 2($v1)
|
|
/* AEC33C 8007519C A06F0003 */ sb $t7, 3($v1)
|
|
/* AEC340 800751A0 A0640004 */ sb $a0, 4($v1)
|
|
/* AEC344 800751A4 0C03F66B */ jal Rand_ZeroOne
|
|
/* AEC348 800751A8 E4680008 */ swc1 $f8, 8($v1)
|
|
/* AEC34C 800751AC 3C018014 */ lui $at, %hi(D_8013C7FC)
|
|
/* AEC350 800751B0 C42AC7FC */ lwc1 $f10, %lo(D_8013C7FC)($at)
|
|
/* AEC354 800751B4 24050001 */ li $a1, 1
|
|
/* AEC358 800751B8 3C014F00 */ li $at, 0x4F000000 # 0.000000
|
|
/* AEC35C 800751BC 460A0402 */ mul.s $f16, $f0, $f10
|
|
/* AEC360 800751C0 8FA40020 */ lw $a0, 0x20($sp)
|
|
/* AEC364 800751C4 4458F800 */ cfc1 $t8, $31
|
|
/* AEC368 800751C8 44C5F800 */ ctc1 $a1, $31
|
|
/* AEC36C 800751CC 00000000 */ nop
|
|
/* AEC370 800751D0 460084A4 */ cvt.w.s $f18, $f16
|
|
/* AEC374 800751D4 4445F800 */ cfc1 $a1, $31
|
|
/* AEC378 800751D8 00000000 */ nop
|
|
/* AEC37C 800751DC 30A50078 */ andi $a1, $a1, 0x78
|
|
/* AEC380 800751E0 50A00013 */ beql $a1, $zero, .L80075230
|
|
/* AEC384 800751E4 44059000 */ mfc1 $a1, $f18
|
|
/* AEC388 800751E8 44819000 */ mtc1 $at, $f18
|
|
/* AEC38C 800751EC 24050001 */ li $a1, 1
|
|
/* AEC390 800751F0 46128481 */ sub.s $f18, $f16, $f18
|
|
/* AEC394 800751F4 44C5F800 */ ctc1 $a1, $31
|
|
/* AEC398 800751F8 00000000 */ nop
|
|
/* AEC39C 800751FC 460094A4 */ cvt.w.s $f18, $f18
|
|
/* AEC3A0 80075200 4445F800 */ cfc1 $a1, $31
|
|
/* AEC3A4 80075204 00000000 */ nop
|
|
/* AEC3A8 80075208 30A50078 */ andi $a1, $a1, 0x78
|
|
/* AEC3AC 8007520C 14A00005 */ bnez $a1, .L80075224
|
|
/* AEC3B0 80075210 00000000 */ nop
|
|
/* AEC3B4 80075214 44059000 */ mfc1 $a1, $f18
|
|
/* AEC3B8 80075218 3C018000 */ lui $at, 0x8000
|
|
/* AEC3BC 8007521C 10000007 */ b .L8007523C
|
|
/* AEC3C0 80075220 00A12825 */ or $a1, $a1, $at
|
|
.L80075224:
|
|
/* AEC3C4 80075224 10000005 */ b .L8007523C
|
|
/* AEC3C8 80075228 2405FFFF */ li $a1, -1
|
|
/* AEC3CC 8007522C 44059000 */ mfc1 $a1, $f18
|
|
.L80075230:
|
|
/* AEC3D0 80075230 00000000 */ nop
|
|
/* AEC3D4 80075234 04A0FFFB */ bltz $a1, .L80075224
|
|
/* AEC3D8 80075238 00000000 */ nop
|
|
.L8007523C:
|
|
/* AEC3DC 8007523C 44D8F800 */ ctc1 $t8, $31
|
|
/* AEC3E0 80075240 24A50001 */ addiu $a1, $a1, 1
|
|
/* AEC3E4 80075244 0C01D4F1 */ jal func_800753C4
|
|
/* AEC3E8 80075248 30A500FF */ andi $a1, $a1, 0xff
|
|
/* AEC3EC 8007524C 3C038016 */ lui $v1, %hi(D_8015FD70) # $v1, 0x8016
|
|
/* AEC3F0 80075250 2463FD70 */ addiu $v1, %lo(D_8015FD70) # addiu $v1, $v1, -0x290
|
|
/* AEC3F4 80075254 90790000 */ lbu $t9, ($v1)
|
|
/* AEC3F8 80075258 3C088016 */ lui $t0, %hi(D_8015FD7C) # $t0, 0x8016
|
|
/* AEC3FC 8007525C 2508FD7C */ addiu $t0, %lo(D_8015FD7C) # addiu $t0, $t0, -0x284
|
|
/* AEC400 80075260 27290001 */ addiu $t1, $t9, 1
|
|
/* AEC404 80075264 A5000000 */ sh $zero, ($t0)
|
|
/* AEC408 80075268 A0690000 */ sb $t1, ($v1)
|
|
.L8007526C:
|
|
/* AEC40C 8007526C 10000043 */ b .L8007537C
|
|
/* AEC410 80075270 00000000 */ nop
|
|
.L80075274:
|
|
/* AEC414 80075274 240400C8 */ li $a0, 200
|
|
/* AEC418 80075278 240A00FF */ li $t2, 255
|
|
/* AEC41C 8007527C A0640001 */ sb $a0, 1($v1)
|
|
/* AEC420 80075280 A0640002 */ sb $a0, 2($v1)
|
|
/* AEC424 80075284 A06A0003 */ sb $t2, 3($v1)
|
|
/* AEC428 80075288 844B0AB0 */ lh $t3, 0xab0($v0)
|
|
/* AEC42C 8007528C 844D0AB2 */ lh $t5, 0xab2($v0)
|
|
/* AEC430 80075290 844F0AB4 */ lh $t7, 0xab4($v0)
|
|
/* AEC434 80075294 256C0050 */ addiu $t4, $t3, 0x50
|
|
/* AEC438 80075298 25AE0050 */ addiu $t6, $t5, 0x50
|
|
/* AEC43C 8007529C 25F80064 */ addiu $t8, $t7, 0x64
|
|
/* AEC440 800752A0 2508FD7C */ addiu $t0, %lo(D_8015FD7C)
|
|
/* AEC444 800752A4 A44C0AB0 */ sh $t4, 0xab0($v0)
|
|
/* AEC448 800752A8 A44E0AB2 */ sh $t6, 0xab2($v0)
|
|
/* AEC44C 800752AC A4580AB4 */ sh $t8, 0xab4($v0)
|
|
/* AEC450 800752B0 85190000 */ lh $t9, ($t0)
|
|
/* AEC454 800752B4 906B0004 */ lbu $t3, 4($v1)
|
|
/* AEC458 800752B8 2404000F */ li $a0, 15
|
|
/* AEC45C 800752BC 27290064 */ addiu $t1, $t9, 0x64
|
|
/* AEC460 800752C0 A5090000 */ sh $t1, ($t0)
|
|
/* AEC464 800752C4 850A0000 */ lh $t2, ($t0)
|
|
/* AEC468 800752C8 00002825 */ move $a1, $zero
|
|
/* AEC46C 800752CC 014B082A */ slt $at, $t2, $t3
|
|
/* AEC470 800752D0 1420002A */ bnez $at, .L8007537C
|
|
/* AEC474 800752D4 00000000 */ nop
|
|
/* AEC478 800752D8 0C03DB56 */ jal func_800F6D58
|
|
/* AEC47C 800752DC 00003025 */ move $a2, $zero
|
|
/* AEC480 800752E0 3C038016 */ lui $v1, %hi(D_8015FD70) # $v1, 0x8016
|
|
/* AEC484 800752E4 2463FD70 */ addiu $v1, %lo(D_8015FD70) # addiu $v1, $v1, -0x290
|
|
/* AEC488 800752E8 906C0000 */ lbu $t4, ($v1)
|
|
/* AEC48C 800752EC A0600004 */ sb $zero, 4($v1)
|
|
/* AEC490 800752F0 258D0001 */ addiu $t5, $t4, 1
|
|
/* AEC494 800752F4 10000021 */ b .L8007537C
|
|
/* AEC498 800752F8 A06D0000 */ sb $t5, ($v1)
|
|
/* AEC49C 800752FC 84440AB0 */ lh $a0, 0xab0($v0)
|
|
.L80075300:
|
|
/* AEC4A0 80075300 3C088016 */ lui $t0, %hi(D_8015FD7C) # $t0, 0x8016
|
|
/* AEC4A4 80075304 2508FD7C */ addiu $t0, %lo(D_8015FD7C) # addiu $t0, $t0, -0x284
|
|
/* AEC4A8 80075308 58800007 */ blezl $a0, .L80075328
|
|
/* AEC4AC 8007530C 84440AB4 */ lh $a0, 0xab4($v0)
|
|
/* AEC4B0 80075310 844F0AB2 */ lh $t7, 0xab2($v0)
|
|
/* AEC4B4 80075314 248EFFF6 */ addiu $t6, $a0, -0xa
|
|
/* AEC4B8 80075318 A44E0AB0 */ sh $t6, 0xab0($v0)
|
|
/* AEC4BC 8007531C 25F8FFF6 */ addiu $t8, $t7, -0xa
|
|
/* AEC4C0 80075320 A4580AB2 */ sh $t8, 0xab2($v0)
|
|
/* AEC4C4 80075324 84440AB4 */ lh $a0, 0xab4($v0)
|
|
.L80075328:
|
|
/* AEC4C8 80075328 18800002 */ blez $a0, .L80075334
|
|
/* AEC4CC 8007532C 2499FFF6 */ addiu $t9, $a0, -0xa
|
|
/* AEC4D0 80075330 A4590AB4 */ sh $t9, 0xab4($v0)
|
|
.L80075334:
|
|
/* AEC4D4 80075334 85090000 */ lh $t1, ($t0)
|
|
/* AEC4D8 80075338 906B0004 */ lbu $t3, 4($v1)
|
|
/* AEC4DC 8007533C 252AFFF6 */ addiu $t2, $t1, -0xa
|
|
/* AEC4E0 80075340 A50A0000 */ sh $t2, ($t0)
|
|
/* AEC4E4 80075344 850C0000 */ lh $t4, ($t0)
|
|
/* AEC4E8 80075348 016C082A */ slt $at, $t3, $t4
|
|
/* AEC4EC 8007534C 1420000B */ bnez $at, .L8007537C
|
|
/* AEC4F0 80075350 00000000 */ nop
|
|
/* AEC4F4 80075354 A4400AB0 */ sh $zero, 0xab0($v0)
|
|
/* AEC4F8 80075358 A4400AB2 */ sh $zero, 0xab2($v0)
|
|
/* AEC4FC 8007535C A4400AB4 */ sh $zero, 0xab4($v0)
|
|
/* AEC500 80075360 A0600000 */ sb $zero, ($v1)
|
|
/* AEC504 80075364 904D0B03 */ lbu $t5, 0xb03($v0)
|
|
/* AEC508 80075368 8FAE0020 */ lw $t6, 0x20($sp)
|
|
/* AEC50C 8007536C 3C010001 */ lui $at, 1
|
|
/* AEC510 80075370 14AD0002 */ bne $a1, $t5, .L8007537C
|
|
/* AEC514 80075374 002E0821 */ addu $at, $at, $t6
|
|
/* AEC518 80075378 A0200B03 */ sb $zero, 0xb03($at)
|
|
.L8007537C:
|
|
/* AEC51C 8007537C 3C038016 */ lui $v1, %hi(D_8015FD70) # $v1, 0x8016
|
|
/* AEC520 80075380 2463FD70 */ addiu $v1, %lo(D_8015FD70) # addiu $v1, $v1, -0x290
|
|
/* AEC524 80075384 906F0000 */ lbu $t7, ($v1)
|
|
/* AEC528 80075388 3C088016 */ lui $t0, %hi(D_8015FD7C) # $t0, 0x8016
|
|
/* AEC52C 8007538C 2508FD7C */ addiu $t0, %lo(D_8015FD7C) # addiu $t0, $t0, -0x284
|
|
/* AEC530 80075390 51E00009 */ beql $t7, $zero, .L800753B8
|
|
/* AEC534 80075394 8FBF001C */ lw $ra, 0x1c($sp)
|
|
/* AEC538 80075398 85180000 */ lh $t8, ($t0)
|
|
/* AEC53C 8007539C 8FA40020 */ lw $a0, 0x20($sp)
|
|
/* AEC540 800753A0 90650001 */ lbu $a1, 1($v1)
|
|
/* AEC544 800753A4 90660002 */ lbu $a2, 2($v1)
|
|
/* AEC548 800753A8 90670003 */ lbu $a3, 3($v1)
|
|
/* AEC54C 800753AC 0C01D3FD */ jal func_80074FF4
|
|
/* AEC550 800753B0 AFB80010 */ sw $t8, 0x10($sp)
|
|
/* AEC554 800753B4 8FBF001C */ lw $ra, 0x1c($sp)
|
|
.L800753B8:
|
|
/* AEC558 800753B8 27BD0020 */ addiu $sp, $sp, 0x20
|
|
/* AEC55C 800753BC 03E00008 */ jr $ra
|
|
/* AEC560 800753C0 00000000 */ nop
|
|
|