1
0
mirror of https://github.com/zeldaret/oot.git synced 2024-09-22 05:14:47 +00:00
oot/asm/non_matchings/code/game/GameState_Update.s
krimtonz 44ffb7ec62
Decomp game.c (#129)
* decomp most of game.c

* improve GameState_DrawInputDisplay matching

* fix merge conflicts

* pr suggestions

* remove builtin math functions
2020-05-14 19:11:33 -04:00

267 lines
14 KiB
ArmAsm

.late_rodata
glabel D_801450E8
.float 0.833
.text
glabel GameState_Update
/* B3BC68 800C4AC8 27BDFFE0 */ addiu $sp, $sp, -0x20
/* B3BC6C 800C4ACC AFBF0014 */ sw $ra, 0x14($sp)
/* B3BC70 800C4AD0 AFA40020 */ sw $a0, 0x20($sp)
/* B3BC74 800C4AD4 8C860000 */ lw $a2, ($a0)
/* B3BC78 800C4AD8 00C02025 */ move $a0, $a2
/* B3BC7C 800C4ADC 0C031233 */ jal GameState_SetFrameBuffer
/* B3BC80 800C4AE0 AFA6001C */ sw $a2, 0x1c($sp)
/* B3BC84 800C4AE4 8FA40020 */ lw $a0, 0x20($sp)
/* B3BC88 800C4AE8 8C990004 */ lw $t9, 4($a0)
/* B3BC8C 800C4AEC 0320F809 */ jalr $t9
/* B3BC90 800C4AF0 00000000 */ nop
/* B3BC94 800C4AF4 0C0310D1 */ jal func_800C4344
/* B3BC98 800C4AF8 8FA40020 */ lw $a0, 0x20($sp)
/* B3BC9C 800C4AFC 3C078016 */ lui $a3, %hi(gGameInfo) # $a3, 0x8016
/* B3BCA0 800C4B00 24E7FA90 */ addiu $a3, %lo(gGameInfo) # addiu $a3, $a3, -0x570
/* B3BCA4 800C4B04 8CE20000 */ lw $v0, ($a3)
/* B3BCA8 800C4B08 24040001 */ li $a0, 1
/* B3BCAC 800C4B0C 8FA6001C */ lw $a2, 0x1c($sp)
/* B3BCB0 800C4B10 84430152 */ lh $v1, 0x152($v0)
/* B3BCB4 800C4B14 1483002D */ bne $a0, $v1, .L800C4BCC
/* B3BCB8 800C4B18 28610002 */ slti $at, $v1, 2
/* B3BCBC 800C4B1C 84430134 */ lh $v1, 0x134($v0)
/* B3BCC0 800C4B20 3C0F8001 */ lui $t7, %hi(gViConfigMode) # $t7, 0x8001
/* B3BCC4 800C4B24 25EF3910 */ addiu $t7, %lo(gViConfigMode) # addiu $t7, $t7, 0x3910
/* B3BCC8 800C4B28 04610010 */ bgez $v1, .L800C4B6C
/* B3BCCC 800C4B2C 3C188001 */ lui $t8, %hi(gViConfigFeatures) # $t8, 0x8001
/* B3BCD0 800C4B30 A4400134 */ sh $zero, 0x134($v0)
/* B3BCD4 800C4B34 ACCF0284 */ sw $t7, 0x284($a2)
/* B3BCD8 800C4B38 8F18943C */ lw $t8, %lo(gViConfigFeatures)($t8)
/* B3BCDC 800C4B3C 3C018001 */ lui $at, %hi(gViConfigXScale)
/* B3BCE0 800C4B40 24050002 */ li $a1, 2
/* B3BCE4 800C4B44 ACD802E4 */ sw $t8, 0x2e4($a2)
/* B3BCE8 800C4B48 C4249440 */ lwc1 $f4, %lo(gViConfigXScale)($at)
/* B3BCEC 800C4B4C 3C018001 */ lui $at, %hi(gViConfigYScale)
/* B3BCF0 800C4B50 E4C402F4 */ swc1 $f4, 0x2f4($a2)
/* B3BCF4 800C4B54 C4269444 */ lwc1 $f6, %lo(gViConfigYScale)($at)
/* B3BCF8 800C4B58 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* B3BCFC 800C4B5C 44810000 */ mtc1 $at, $f0
/* B3BD00 800C4B60 E4C602F8 */ swc1 $f6, 0x2f8($a2)
/* B3BD04 800C4B64 1000006D */ b .L800C4D1C
/* B3BD08 800C4B68 8CE20000 */ lw $v0, ($a3)
.L800C4B6C:
/* B3BD0C 800C4B6C 18600013 */ blez $v1, .L800C4BBC
/* B3BD10 800C4B70 3C048016 */ lui $a0, %hi(D_80166528) # $a0, 0x8016
/* B3BD14 800C4B74 8FA50020 */ lw $a1, 0x20($sp)
/* B3BD18 800C4B78 24846528 */ addiu $a0, %lo(D_80166528) # addiu $a0, $a0, 0x6528
/* B3BD1C 800C4B7C AFA6001C */ sw $a2, 0x1c($sp)
/* B3BD20 800C4B80 0C02B2BE */ jal func_800ACAF8
/* B3BD24 800C4B84 24A50014 */ addiu $a1, $a1, 0x14
/* B3BD28 800C4B88 8FA6001C */ lw $a2, 0x1c($sp)
/* B3BD2C 800C4B8C 3C038016 */ lui $v1, %hi(D_80166528) # $v1, 0x8016
/* B3BD30 800C4B90 24636528 */ addiu $v1, %lo(D_80166528) # addiu $v1, $v1, 0x6528
/* B3BD34 800C4B94 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* B3BD38 800C4B98 44810000 */ mtc1 $at, $f0
/* B3BD3C 800C4B9C ACC30284 */ sw $v1, 0x284($a2)
/* B3BD40 800C4BA0 8C690080 */ lw $t1, 0x80($v1)
/* B3BD44 800C4BA4 3C078016 */ lui $a3, %hi(gGameInfo) # $a3, 0x8016
/* B3BD48 800C4BA8 24E7FA90 */ addiu $a3, %lo(gGameInfo) # addiu $a3, $a3, -0x570
/* B3BD4C 800C4BAC E4C002F4 */ swc1 $f0, 0x2f4($a2)
/* B3BD50 800C4BB0 E4C002F8 */ swc1 $f0, 0x2f8($a2)
/* B3BD54 800C4BB4 ACC902E4 */ sw $t1, 0x2e4($a2)
/* B3BD58 800C4BB8 8CE20000 */ lw $v0, ($a3)
.L800C4BBC:
/* B3BD5C 800C4BBC 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* B3BD60 800C4BC0 44810000 */ mtc1 $at, $f0
/* B3BD64 800C4BC4 10000055 */ b .L800C4D1C
/* B3BD68 800C4BC8 24050002 */ li $a1, 2
.L800C4BCC:
/* B3BD6C 800C4BCC 1420004F */ bnez $at, .L800C4D0C
/* B3BD70 800C4BD0 24050002 */ li $a1, 2
/* B3BD74 800C4BD4 3C0A8001 */ lui $t2, %hi(gViConfigMode) # $t2, 0x8001
/* B3BD78 800C4BD8 254A3910 */ addiu $t2, %lo(gViConfigMode) # addiu $t2, $t2, 0x3910
/* B3BD7C 800C4BDC ACCA0284 */ sw $t2, 0x284($a2)
/* B3BD80 800C4BE0 3C0B8001 */ lui $t3, %hi(gViConfigFeatures) # $t3, 0x8001
/* B3BD84 800C4BE4 8D6B943C */ lw $t3, %lo(gViConfigFeatures)($t3)
/* B3BD88 800C4BE8 3C018001 */ lui $at, %hi(gViConfigXScale)
/* B3BD8C 800C4BEC 3C198001 */ lui $t9, %hi(osViModeMpalLan1) # $t9, 0x8001
/* B3BD90 800C4BF0 ACCB02E4 */ sw $t3, 0x2e4($a2)
/* B3BD94 800C4BF4 C4289440 */ lwc1 $f8, %lo(gViConfigXScale)($at)
/* B3BD98 800C4BF8 3C018001 */ lui $at, %hi(gViConfigYScale)
/* B3BD9C 800C4BFC 3C188001 */ lui $t8, %hi(osViModePalLan1) # $t8, 0x8001
/* B3BDA0 800C4C00 E4C802F4 */ swc1 $f8, 0x2f4($a2)
/* B3BDA4 800C4C04 C42A9444 */ lwc1 $f10, %lo(gViConfigYScale)($at)
/* B3BDA8 800C4C08 24010006 */ li $at, 6
/* B3BDAC 800C4C0C 3C0A8001 */ lui $t2, %hi(osViModeFpalLan1) # $t2, 0x8001
/* B3BDB0 800C4C10 E4CA02F8 */ swc1 $f10, 0x2f8($a2)
/* B3BDB4 800C4C14 8CE20000 */ lw $v0, ($a3)
/* B3BDB8 800C4C18 24050002 */ li $a1, 2
/* B3BDBC 800C4C1C 3C0D8001 */ lui $t5, %hi(osViModeNtscLan1) # $t5, 0x8001
/* B3BDC0 800C4C20 84430152 */ lh $v1, 0x152($v0)
/* B3BDC4 800C4C24 2739AE50 */ addiu $t9, %lo(osViModeMpalLan1) # addiu $t9, $t9, -0x51b0
/* B3BDC8 800C4C28 2718ACA0 */ addiu $t8, %lo(osViModePalLan1) # addiu $t8, $t8, -0x5360
/* B3BDCC 800C4C2C 10610006 */ beq $v1, $at, .L800C4C48
/* B3BDD0 800C4C30 254AAF20 */ addiu $t2, %lo(osViModeFpalLan1) # addiu $t2, $t2, -0x50e0
/* B3BDD4 800C4C34 14A3000C */ bne $a1, $v1, .L800C4C68
/* B3BDD8 800C4C38 3C088000 */ lui $t0, %hi(osTvType) # $t0, 0x8000
/* B3BDDC 800C4C3C 25080300 */ addiu $t0, %lo(osTvType) # addiu $t0, $t0, 0x300
/* B3BDE0 800C4C40 8D0C0000 */ lw $t4, ($t0)
/* B3BDE4 800C4C44 148C0008 */ bne $a0, $t4, .L800C4C68
.L800C4C48:
/* B3BDE8 800C4C48 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* B3BDEC 800C4C4C 44810000 */ mtc1 $at, $f0
/* B3BDF0 800C4C50 25ADAE00 */ addiu $t5, %lo(osViModeNtscLan1) # addiu $t5, $t5, -0x5200
/* B3BDF4 800C4C54 ACCD0284 */ sw $t5, 0x284($a2)
/* B3BDF8 800C4C58 E4C002F8 */ swc1 $f0, 0x2f8($a2)
/* B3BDFC 800C4C5C 8CE20000 */ lw $v0, ($a3)
/* B3BE00 800C4C60 24050002 */ li $a1, 2
/* B3BE04 800C4C64 84430152 */ lh $v1, 0x152($v0)
.L800C4C68:
/* B3BE08 800C4C68 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* B3BE0C 800C4C6C 44810000 */ mtc1 $at, $f0
/* B3BE10 800C4C70 3C088000 */ lui $t0, %hi(osTvType) # $t0, 0x8000
/* B3BE14 800C4C74 24010005 */ li $at, 5
/* B3BE18 800C4C78 10610006 */ beq $v1, $at, .L800C4C94
/* B3BE1C 800C4C7C 25080300 */ addiu $t0, %lo(osTvType) # addiu $t0, $t0, 0x300
/* B3BE20 800C4C80 54A30009 */ bnel $a1, $v1, .L800C4CA8
/* B3BE24 800C4C84 24010004 */ li $at, 4
/* B3BE28 800C4C88 8D0E0000 */ lw $t6, ($t0)
/* B3BE2C 800C4C8C 54AE0006 */ bnel $a1, $t6, .L800C4CA8
/* B3BE30 800C4C90 24010004 */ li $at, 4
.L800C4C94:
/* B3BE34 800C4C94 ACD90284 */ sw $t9, 0x284($a2)
/* B3BE38 800C4C98 E4C002F8 */ swc1 $f0, 0x2f8($a2)
/* B3BE3C 800C4C9C 8CE20000 */ lw $v0, ($a3)
/* B3BE40 800C4CA0 84430152 */ lh $v1, 0x152($v0)
/* B3BE44 800C4CA4 24010004 */ li $at, 4
.L800C4CA8:
/* B3BE48 800C4CA8 50610007 */ beql $v1, $at, .L800C4CC8
/* B3BE4C 800C4CAC ACD80284 */ sw $t8, 0x284($a2)
/* B3BE50 800C4CB0 54A30009 */ bnel $a1, $v1, .L800C4CD8
/* B3BE54 800C4CB4 24010003 */ li $at, 3
/* B3BE58 800C4CB8 8D0F0000 */ lw $t7, ($t0)
/* B3BE5C 800C4CBC 55E00006 */ bnezl $t7, .L800C4CD8
/* B3BE60 800C4CC0 24010003 */ li $at, 3
/* B3BE64 800C4CC4 ACD80284 */ sw $t8, 0x284($a2)
.L800C4CC8:
/* B3BE68 800C4CC8 E4C002F8 */ swc1 $f0, 0x2f8($a2)
/* B3BE6C 800C4CCC 8CE20000 */ lw $v0, ($a3)
/* B3BE70 800C4CD0 84430152 */ lh $v1, 0x152($v0)
/* B3BE74 800C4CD4 24010003 */ li $at, 3
.L800C4CD8:
/* B3BE78 800C4CD8 50610007 */ beql $v1, $at, .L800C4CF8
/* B3BE7C 800C4CDC ACCA0284 */ sw $t2, 0x284($a2)
/* B3BE80 800C4CE0 54A3000F */ bnel $a1, $v1, .L800C4D20
/* B3BE84 800C4CE4 844B1074 */ lh $t3, 0x1074($v0)
/* B3BE88 800C4CE8 8D090000 */ lw $t1, ($t0)
/* B3BE8C 800C4CEC 5520000C */ bnezl $t1, .L800C4D20
/* B3BE90 800C4CF0 844B1074 */ lh $t3, 0x1074($v0)
/* B3BE94 800C4CF4 ACCA0284 */ sw $t2, 0x284($a2)
.L800C4CF8:
/* B3BE98 800C4CF8 3C018014 */ lui $at, %hi(D_801450E8)
/* B3BE9C 800C4CFC C43050E8 */ lwc1 $f16, %lo(D_801450E8)($at)
/* B3BEA0 800C4D00 E4D002F8 */ swc1 $f16, 0x2f8($a2)
/* B3BEA4 800C4D04 10000005 */ b .L800C4D1C
/* B3BEA8 800C4D08 8CE20000 */ lw $v0, ($a3)
.L800C4D0C:
/* B3BEAC 800C4D0C 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* B3BEB0 800C4D10 ACC00284 */ sw $zero, 0x284($a2)
/* B3BEB4 800C4D14 44810000 */ mtc1 $at, $f0
/* B3BEB8 800C4D18 8CE20000 */ lw $v0, ($a3)
.L800C4D1C:
/* B3BEBC 800C4D1C 844B1074 */ lh $t3, 0x1074($v0)
.L800C4D20:
/* B3BEC0 800C4D20 24030015 */ li $v1, 21
/* B3BEC4 800C4D24 546B0046 */ bnel $v1, $t3, .L800C4E40
/* B3BEC8 800C4D28 84490190 */ lh $t1, 0x190($v0)
/* B3BECC 800C4D2C 844C1092 */ lh $t4, 0x1092($v0)
/* B3BED0 800C4D30 24090030 */ li $t1, 48
/* B3BED4 800C4D34 506C000F */ beql $v1, $t4, .L800C4D74
/* B3BED8 800C4D38 84431078 */ lh $v1, 0x1078($v0)
/* B3BEDC 800C4D3C A4431092 */ sh $v1, 0x1092($v0)
/* B3BEE0 800C4D40 8CED0000 */ lw $t5, ($a3)
/* B3BEE4 800C4D44 3C048001 */ lui $a0, %hi(gViConfigAdditionalScanLines) # $a0, 0x8001
/* B3BEE8 800C4D48 24849438 */ addiu $a0, %lo(gViConfigAdditionalScanLines) # addiu $a0, $a0, -0x6bc8
/* B3BEEC 800C4D4C A5A01076 */ sh $zero, 0x1076($t5)
/* B3BEF0 800C4D50 8CF90000 */ lw $t9, ($a3)
/* B3BEF4 800C4D54 908E0000 */ lbu $t6, ($a0)
/* B3BEF8 800C4D58 A72E1078 */ sh $t6, 0x1078($t9)
/* B3BEFC 800C4D5C 8CEF0000 */ lw $t7, ($a3)
/* B3BF00 800C4D60 A5E0107A */ sh $zero, 0x107a($t7)
/* B3BF04 800C4D64 8CF80000 */ lw $t8, ($a3)
/* B3BF08 800C4D68 A700107C */ sh $zero, 0x107c($t8)
/* B3BF0C 800C4D6C 8CE20000 */ lw $v0, ($a3)
/* B3BF10 800C4D70 84431078 */ lh $v1, 0x1078($v0)
.L800C4D74:
/* B3BF14 800C4D74 3C048001 */ lui $a0, %hi(gViConfigAdditionalScanLines)
/* B3BF18 800C4D78 24849438 */ addiu $a0, %lo(gViConfigAdditionalScanLines) # addiu $a0, $a0, -0x6bc8
/* B3BF1C 800C4D7C 04630005 */ bgezl $v1, .L800C4D94
/* B3BF20 800C4D80 28610031 */ slti $at, $v1, 0x31
/* B3BF24 800C4D84 A4401078 */ sh $zero, 0x1078($v0)
/* B3BF28 800C4D88 8CE20000 */ lw $v0, ($a3)
/* B3BF2C 800C4D8C 84431078 */ lh $v1, 0x1078($v0)
/* B3BF30 800C4D90 28610031 */ slti $at, $v1, 0x31
.L800C4D94:
/* B3BF34 800C4D94 54200005 */ bnezl $at, .L800C4DAC
/* B3BF38 800C4D98 844A107A */ lh $t2, 0x107a($v0)
/* B3BF3C 800C4D9C A4491078 */ sh $t1, 0x1078($v0)
/* B3BF40 800C4DA0 8CE20000 */ lw $v0, ($a3)
/* B3BF44 800C4DA4 84431078 */ lh $v1, 0x1078($v0)
/* B3BF48 800C4DA8 844A107A */ lh $t2, 0x107a($v0)
.L800C4DAC:
/* B3BF4C 800C4DAC 55430006 */ bnel $t2, $v1, .L800C4DC8
/* B3BF50 800C4DB0 A443107A */ sh $v1, 0x107a($v0)
/* B3BF54 800C4DB4 844B107C */ lh $t3, 0x107c($v0)
/* B3BF58 800C4DB8 844C1076 */ lh $t4, 0x1076($v0)
/* B3BF5C 800C4DBC 516C0020 */ beql $t3, $t4, .L800C4E40
/* B3BF60 800C4DC0 84490190 */ lh $t1, 0x190($v0)
/* B3BF64 800C4DC4 A443107A */ sh $v1, 0x107a($v0)
.L800C4DC8:
/* B3BF68 800C4DC8 8CE20000 */ lw $v0, ($a3)
/* B3BF6C 800C4DCC 3C014370 */ li $at, 0x43700000 # 0.000000
/* B3BF70 800C4DD0 844D1076 */ lh $t5, 0x1076($v0)
/* B3BF74 800C4DD4 A44D107C */ sh $t5, 0x107c($v0)
/* B3BF78 800C4DD8 8CE20000 */ lw $v0, ($a3)
/* B3BF7C 800C4DDC 844E1078 */ lh $t6, 0x1078($v0)
/* B3BF80 800C4DE0 A08E0000 */ sb $t6, ($a0)
/* B3BF84 800C4DE4 84591076 */ lh $t9, 0x1076($v0)
/* B3BF88 800C4DE8 31CF00FF */ andi $t7, $t6, 0xff
/* B3BF8C 800C4DEC 1720000E */ bnez $t9, .L800C4E28
/* B3BF90 800C4DF0 00000000 */ nop
/* B3BF94 800C4DF4 448F9000 */ mtc1 $t7, $f18
/* B3BF98 800C4DF8 44810000 */ mtc1 $at, $f0
/* B3BF9C 800C4DFC 05E10005 */ bgez $t7, .L800C4E14
/* B3BFA0 800C4E00 46809120 */ cvt.s.w $f4, $f18
/* B3BFA4 800C4E04 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B3BFA8 800C4E08 44813000 */ mtc1 $at, $f6
/* B3BFAC 800C4E0C 00000000 */ nop
/* B3BFB0 800C4E10 46062100 */ add.s $f4, $f4, $f6
.L800C4E14:
/* B3BFB4 800C4E14 46002200 */ add.s $f8, $f4, $f0
/* B3BFB8 800C4E18 3C018001 */ lui $at, %hi(gViConfigYScale)
/* B3BFBC 800C4E1C 46080283 */ div.s $f10, $f0, $f8
/* B3BFC0 800C4E20 10000003 */ b .L800C4E30
/* B3BFC4 800C4E24 E42A9444 */ swc1 $f10, %lo(gViConfigYScale)($at)
.L800C4E28:
/* B3BFC8 800C4E28 3C018001 */ lui $at, %hi(gViConfigYScale)
/* B3BFCC 800C4E2C E4209444 */ swc1 $f0, %lo(gViConfigYScale)($at)
.L800C4E30:
/* B3BFD0 800C4E30 24180001 */ li $t8, 1
/* B3BFD4 800C4E34 3C018001 */ lui $at, %hi(D_80009430) # $at, 0x8001
/* B3BFD8 800C4E38 A0389430 */ sb $t8, %lo(D_80009430)($at)
/* B3BFDC 800C4E3C 84490190 */ lh $t1, 0x190($v0)
.L800C4E40:
/* B3BFE0 800C4E40 50A90008 */ beql $a1, $t1, .L800C4E64
/* B3BFE4 800C4E44 8FA20020 */ lw $v0, 0x20($sp)
/* B3BFE8 800C4E48 8FA40020 */ lw $a0, 0x20($sp)
/* B3BFEC 800C4E4C 00C02825 */ move $a1, $a2
/* B3BFF0 800C4E50 0C0311BB */ jal GameState_Draw
/* B3BFF4 800C4E54 AFA6001C */ sw $a2, 0x1c($sp)
/* B3BFF8 800C4E58 0C03127D */ jal func_800C49F4
/* B3BFFC 800C4E5C 8FA4001C */ lw $a0, 0x1c($sp)
/* B3C000 800C4E60 8FA20020 */ lw $v0, 0x20($sp)
.L800C4E64:
/* B3C004 800C4E64 8C4A009C */ lw $t2, 0x9c($v0)
/* B3C008 800C4E68 254B0001 */ addiu $t3, $t2, 1
/* B3C00C 800C4E6C AC4B009C */ sw $t3, 0x9c($v0)
/* B3C010 800C4E70 8FBF0014 */ lw $ra, 0x14($sp)
/* B3C014 800C4E74 27BD0020 */ addiu $sp, $sp, 0x20
/* B3C018 800C4E78 03E00008 */ jr $ra
/* B3C01C 800C4E7C 00000000 */ nop