Merge branch 'master' into audio

This commit is contained in:
alex 2020-10-31 05:57:48 +00:00 committed by GitHub
commit ed62a6999b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 176 additions and 417 deletions

View File

@ -1,122 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel InterpPlayerYaw
/* F62EC 802D193C 27BDFFD0 */ addiu $sp, $sp, -0x30
/* F62F0 802D1940 AFB10014 */ sw $s1, 0x14($sp)
/* F62F4 802D1944 0080882D */ daddu $s1, $a0, $zero
/* F62F8 802D1948 AFB50024 */ sw $s5, 0x24($sp)
/* F62FC 802D194C 3C158011 */ lui $s5, %hi(gPlayerStatus)
/* F6300 802D1950 26B5EFC8 */ addiu $s5, $s5, %lo(gPlayerStatus)
/* F6304 802D1954 AFB60028 */ sw $s6, 0x28($sp)
/* F6308 802D1958 26360074 */ addiu $s6, $s1, 0x74
/* F630C 802D195C AFB40020 */ sw $s4, 0x20($sp)
/* F6310 802D1960 26340078 */ addiu $s4, $s1, 0x78
/* F6314 802D1964 AFB3001C */ sw $s3, 0x1c($sp)
/* F6318 802D1968 AFBF002C */ sw $ra, 0x2c($sp)
/* F631C 802D196C AFB20018 */ sw $s2, 0x18($sp)
/* F6320 802D1970 AFB00010 */ sw $s0, 0x10($sp)
/* F6324 802D1974 8E32000C */ lw $s2, 0xc($s1)
/* F6328 802D1978 10A0002C */ beqz $a1, .L802D1A2C
/* F632C 802D197C 2633007C */ addiu $s3, $s1, 0x7c
/* F6330 802D1980 3C10802E */ lui $s0, %hi(gPlayerNpcPtr)
/* F6334 802D1984 26109D20 */ addiu $s0, $s0, %lo(gPlayerNpcPtr)
/* F6338 802D1988 8E020000 */ lw $v0, ($s0)
/* F633C 802D198C C6A00080 */ lwc1 $f0, 0x80($s5)
/* F6340 802D1990 E440000C */ swc1 $f0, 0xc($v0)
/* F6344 802D1994 E6200074 */ swc1 $f0, 0x74($s1)
/* F6348 802D1998 8E450000 */ lw $a1, ($s2)
/* F634C 802D199C 0C0B210B */ jal get_float_variable
/* F6350 802D19A0 26520004 */ addiu $s2, $s2, 4
/* F6354 802D19A4 C6220074 */ lwc1 $f2, 0x74($s1)
/* F6358 802D19A8 46020001 */ sub.s $f0, $f0, $f2
/* F635C 802D19AC E6200078 */ swc1 $f0, 0x78($s1)
/* F6360 802D19B0 8E450000 */ lw $a1, ($s2)
/* F6364 802D19B4 0C0B1EAF */ jal get_variable
/* F6368 802D19B8 0220202D */ daddu $a0, $s1, $zero
/* F636C 802D19BC AE22007C */ sw $v0, 0x7c($s1)
/* F6370 802D19C0 8E020000 */ lw $v0, ($s0)
/* F6374 802D19C4 3C01C334 */ lui $at, 0xc334
/* F6378 802D19C8 44810000 */ mtc1 $at, $f0
/* F637C 802D19CC A440008E */ sh $zero, 0x8e($v0)
/* F6380 802D19D0 C6220078 */ lwc1 $f2, 0x78($s1)
/* F6384 802D19D4 4600103C */ c.lt.s $f2, $f0
/* F6388 802D19D8 00000000 */ nop
/* F638C 802D19DC 45000007 */ bc1f .L802D19FC
/* F6390 802D19E0 00000000 */ nop
/* F6394 802D19E4 3C0143B4 */ lui $at, 0x43b4
/* F6398 802D19E8 44810000 */ mtc1 $at, $f0
/* F639C 802D19EC 00000000 */ nop
/* F63A0 802D19F0 46001000 */ add.s $f0, $f2, $f0
/* F63A4 802D19F4 E6200078 */ swc1 $f0, 0x78($s1)
/* F63A8 802D19F8 C6220078 */ lwc1 $f2, 0x78($s1)
.L802D19FC:
/* F63AC 802D19FC 3C014334 */ lui $at, 0x4334
/* F63B0 802D1A00 44810000 */ mtc1 $at, $f0
/* F63B4 802D1A04 00000000 */ nop
/* F63B8 802D1A08 4602003C */ c.lt.s $f0, $f2
/* F63BC 802D1A0C 00000000 */ nop
/* F63C0 802D1A10 45000006 */ bc1f .L802D1A2C
/* F63C4 802D1A14 00000000 */ nop
/* F63C8 802D1A18 3C0143B4 */ lui $at, 0x43b4
/* F63CC 802D1A1C 44810000 */ mtc1 $at, $f0
/* F63D0 802D1A20 00000000 */ nop
/* F63D4 802D1A24 46001001 */ sub.s $f0, $f2, $f0
/* F63D8 802D1A28 E6200078 */ swc1 $f0, 0x78($s1)
.L802D1A2C:
/* F63DC 802D1A2C 8E620000 */ lw $v0, ($s3)
/* F63E0 802D1A30 1C40000E */ bgtz $v0, .L802D1A6C
/* F63E4 802D1A34 00000000 */ nop
/* F63E8 802D1A38 3C10802E */ lui $s0, %hi(gPlayerNpcPtr)
/* F63EC 802D1A3C 26109D20 */ addiu $s0, $s0, %lo(gPlayerNpcPtr)
/* F63F0 802D1A40 8E020000 */ lw $v0, ($s0)
/* F63F4 802D1A44 C6800000 */ lwc1 $f0, ($s4)
/* F63F8 802D1A48 C44C000C */ lwc1 $f12, 0xc($v0)
/* F63FC 802D1A4C 46006300 */ add.s $f12, $f12, $f0
/* F6400 802D1A50 0C00A6C9 */ jal clamp_angle
/* F6404 802D1A54 E44C000C */ swc1 $f12, 0xc($v0)
/* F6408 802D1A58 8E030000 */ lw $v1, ($s0)
/* F640C 802D1A5C 24020002 */ addiu $v0, $zero, 2
/* F6410 802D1A60 E460000C */ swc1 $f0, 0xc($v1)
/* F6414 802D1A64 080B46B7 */ j .L802D1ADC
/* F6418 802D1A68 E6A00080 */ swc1 $f0, 0x80($s5)
.L802D1A6C:
/* F641C 802D1A6C 3C10802E */ lui $s0, %hi(gPlayerNpcPtr)
/* F6420 802D1A70 26109D20 */ addiu $s0, $s0, %lo(gPlayerNpcPtr)
/* F6424 802D1A74 8E030000 */ lw $v1, ($s0)
/* F6428 802D1A78 9462008E */ lhu $v0, 0x8e($v1)
/* F642C 802D1A7C 24420001 */ addiu $v0, $v0, 1
/* F6430 802D1A80 A462008E */ sh $v0, 0x8e($v1)
/* F6434 802D1A84 00021400 */ sll $v0, $v0, 0x10
/* F6438 802D1A88 00021403 */ sra $v0, $v0, 0x10
/* F643C 802D1A8C C6800000 */ lwc1 $f0, ($s4)
/* F6440 802D1A90 44821000 */ mtc1 $v0, $f2
/* F6444 802D1A94 00000000 */ nop
/* F6448 802D1A98 468010A0 */ cvt.s.w $f2, $f2
/* F644C 802D1A9C 46020002 */ mul.s $f0, $f0, $f2
/* F6450 802D1AA0 00000000 */ nop
/* F6454 802D1AA4 C6CC0000 */ lwc1 $f12, ($s6)
/* F6458 802D1AA8 C6620000 */ lwc1 $f2, ($s3)
/* F645C 802D1AAC 468010A0 */ cvt.s.w $f2, $f2
/* F6460 802D1AB0 46020003 */ div.s $f0, $f0, $f2
/* F6464 802D1AB4 46006300 */ add.s $f12, $f12, $f0
/* F6468 802D1AB8 0C00A6C9 */ jal clamp_angle
/* F646C 802D1ABC E46C000C */ swc1 $f12, 0xc($v1)
/* F6470 802D1AC0 8E020000 */ lw $v0, ($s0)
/* F6474 802D1AC4 E440000C */ swc1 $f0, 0xc($v0)
/* F6478 802D1AC8 E6A00080 */ swc1 $f0, 0x80($s5)
/* F647C 802D1ACC 8442008E */ lh $v0, 0x8e($v0)
/* F6480 802D1AD0 8E630000 */ lw $v1, ($s3)
/* F6484 802D1AD4 0043102A */ slt $v0, $v0, $v1
/* F6488 802D1AD8 38420001 */ xori $v0, $v0, 1
.L802D1ADC:
/* F648C 802D1ADC 8FBF002C */ lw $ra, 0x2c($sp)
/* F6490 802D1AE0 8FB60028 */ lw $s6, 0x28($sp)
/* F6494 802D1AE4 8FB50024 */ lw $s5, 0x24($sp)
/* F6498 802D1AE8 8FB40020 */ lw $s4, 0x20($sp)
/* F649C 802D1AEC 8FB3001C */ lw $s3, 0x1c($sp)
/* F64A0 802D1AF0 8FB20018 */ lw $s2, 0x18($sp)
/* F64A4 802D1AF4 8FB10014 */ lw $s1, 0x14($sp)
/* F64A8 802D1AF8 8FB00010 */ lw $s0, 0x10($sp)
/* F64AC 802D1AFC 03E00008 */ jr $ra
/* F64B0 802D1B00 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -1,86 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel PlayerMoveTo
/* F5AE4 802D1134 27BDFFD0 */ addiu $sp, $sp, -0x30
/* F5AE8 802D1138 AFB10014 */ sw $s1, 0x14($sp)
/* F5AEC 802D113C 0080882D */ daddu $s1, $a0, $zero
/* F5AF0 802D1140 AFB20018 */ sw $s2, 0x18($sp)
/* F5AF4 802D1144 3C128011 */ lui $s2, %hi(gPlayerStatus)
/* F5AF8 802D1148 2652EFC8 */ addiu $s2, $s2, %lo(gPlayerStatus)
/* F5AFC 802D114C AFBF001C */ sw $ra, 0x1c($sp)
/* F5B00 802D1150 AFB00010 */ sw $s0, 0x10($sp)
/* F5B04 802D1154 F7B60028 */ sdc1 $f22, 0x28($sp)
/* F5B08 802D1158 F7B40020 */ sdc1 $f20, 0x20($sp)
/* F5B0C 802D115C 10A00038 */ beqz $a1, .L802D1240
/* F5B10 802D1160 8E30000C */ lw $s0, 0xc($s1)
/* F5B14 802D1164 8E050000 */ lw $a1, ($s0)
/* F5B18 802D1168 0C0B1EAF */ jal get_variable
/* F5B1C 802D116C 26100004 */ addiu $s0, $s0, 4
/* F5B20 802D1170 8E050000 */ lw $a1, ($s0)
/* F5B24 802D1174 26100004 */ addiu $s0, $s0, 4
/* F5B28 802D1178 4482B000 */ mtc1 $v0, $f22
/* F5B2C 802D117C 00000000 */ nop
/* F5B30 802D1180 4680B5A0 */ cvt.s.w $f22, $f22
/* F5B34 802D1184 0C0B1EAF */ jal get_variable
/* F5B38 802D1188 0220202D */ daddu $a0, $s1, $zero
/* F5B3C 802D118C 8E050000 */ lw $a1, ($s0)
/* F5B40 802D1190 4482A000 */ mtc1 $v0, $f20
/* F5B44 802D1194 00000000 */ nop
/* F5B48 802D1198 4680A520 */ cvt.s.w $f20, $f20
/* F5B4C 802D119C 0C0B1EAF */ jal get_variable
/* F5B50 802D11A0 0220202D */ daddu $a0, $s1, $zero
/* F5B54 802D11A4 AE220070 */ sw $v0, 0x70($s1)
/* F5B58 802D11A8 C64C0028 */ lwc1 $f12, 0x28($s2)
/* F5B5C 802D11AC C64E0030 */ lwc1 $f14, 0x30($s2)
/* F5B60 802D11B0 4406B000 */ mfc1 $a2, $f22
/* F5B64 802D11B4 4407A000 */ mfc1 $a3, $f20
/* F5B68 802D11B8 0C00A720 */ jal atan2
/* F5B6C 802D11BC 00000000 */ nop
/* F5B70 802D11C0 E6400080 */ swc1 $f0, 0x80($s2)
/* F5B74 802D11C4 8E220070 */ lw $v0, 0x70($s1)
/* F5B78 802D11C8 1440000F */ bnez $v0, .L802D1208
/* F5B7C 802D11CC 00000000 */ nop
/* F5B80 802D11D0 C64C0028 */ lwc1 $f12, 0x28($s2)
/* F5B84 802D11D4 C64E0030 */ lwc1 $f14, 0x30($s2)
/* F5B88 802D11D8 4406B000 */ mfc1 $a2, $f22
/* F5B8C 802D11DC 4407A000 */ mfc1 $a3, $f20
/* F5B90 802D11E0 0C00A7B5 */ jal dist2D
/* F5B94 802D11E4 00000000 */ nop
/* F5B98 802D11E8 3C02802E */ lui $v0, %hi(gPlayerNpcPtr)
/* F5B9C 802D11EC 8C429D20 */ lw $v0, %lo(gPlayerNpcPtr)($v0)
/* F5BA0 802D11F0 C4420018 */ lwc1 $f2, 0x18($v0)
/* F5BA4 802D11F4 46020003 */ div.s $f0, $f0, $f2
/* F5BA8 802D11F8 4600010D */ trunc.w.s $f4, $f0
/* F5BAC 802D11FC E6240070 */ swc1 $f4, 0x70($s1)
/* F5BB0 802D1200 080B448B */ j .L802D122C
/* F5BB4 802D1204 C4400018 */ lwc1 $f0, 0x18($v0)
.L802D1208:
/* F5BB8 802D1208 C64C0028 */ lwc1 $f12, 0x28($s2)
/* F5BBC 802D120C C64E0030 */ lwc1 $f14, 0x30($s2)
/* F5BC0 802D1210 4406B000 */ mfc1 $a2, $f22
/* F5BC4 802D1214 4407A000 */ mfc1 $a3, $f20
/* F5BC8 802D1218 0C00A7B5 */ jal dist2D
/* F5BCC 802D121C 00000000 */ nop
/* F5BD0 802D1220 C6220070 */ lwc1 $f2, 0x70($s1)
/* F5BD4 802D1224 468010A0 */ cvt.s.w $f2, $f2
/* F5BD8 802D1228 46020003 */ div.s $f0, $f0, $f2
.L802D122C:
/* F5BDC 802D122C 8E240070 */ lw $a0, 0x70($s1)
/* F5BE0 802D1230 8E450080 */ lw $a1, 0x80($s2)
/* F5BE4 802D1234 44060000 */ mfc1 $a2, $f0
/* F5BE8 802D1238 0C0389DE */ jal move_player
/* F5BEC 802D123C 00000000 */ nop
.L802D1240:
/* F5BF0 802D1240 8E230070 */ lw $v1, 0x70($s1)
/* F5BF4 802D1244 2463FFFF */ addiu $v1, $v1, -1
/* F5BF8 802D1248 AE230070 */ sw $v1, 0x70($s1)
/* F5BFC 802D124C 8FBF001C */ lw $ra, 0x1c($sp)
/* F5C00 802D1250 8FB20018 */ lw $s2, 0x18($sp)
/* F5C04 802D1254 8FB10014 */ lw $s1, 0x14($sp)
/* F5C08 802D1258 8FB00010 */ lw $s0, 0x10($sp)
/* F5C0C 802D125C D7B60028 */ ldc1 $f22, 0x28($sp)
/* F5C10 802D1260 D7B40020 */ ldc1 $f20, 0x20($sp)
/* F5C14 802D1264 000317C2 */ srl $v0, $v1, 0x1f
/* F5C18 802D1268 03E00008 */ jr $ra
/* F5C1C 802D126C 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -1,27 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802D249C
/* F6E4C 802D249C 27BDFFE0 */ addiu $sp, $sp, -0x20
/* F6E50 802D24A0 AFB10014 */ sw $s1, 0x14($sp)
/* F6E54 802D24A4 0080882D */ daddu $s1, $a0, $zero
/* F6E58 802D24A8 3C028016 */ lui $v0, 0x8016
/* F6E5C 802D24AC 8442A552 */ lh $v0, -0x5aae($v0)
/* F6E60 802D24B0 AFBF0018 */ sw $ra, 0x18($sp)
/* F6E64 802D24B4 AFB00010 */ sw $s0, 0x10($sp)
/* F6E68 802D24B8 8E30000C */ lw $s0, 0xc($s1)
/* F6E6C 802D24BC 04400004 */ bltz $v0, .L802D24D0
/* F6E70 802D24C0 0000302D */ daddu $a2, $zero, $zero
/* F6E74 802D24C4 0C0B48FE */ jal func_802D23F8
/* F6E78 802D24C8 00000000 */ nop
/* F6E7C 802D24CC 0002302B */ sltu $a2, $zero, $v0
.L802D24D0:
/* F6E80 802D24D0 8E050000 */ lw $a1, ($s0)
/* F6E84 802D24D4 0C0B2026 */ jal set_variable
/* F6E88 802D24D8 0220202D */ daddu $a0, $s1, $zero
/* F6E8C 802D24DC 8FBF0018 */ lw $ra, 0x18($sp)
/* F6E90 802D24E0 8FB10014 */ lw $s1, 0x14($sp)
/* F6E94 802D24E4 8FB00010 */ lw $s0, 0x10($sp)
/* F6E98 802D24E8 24020002 */ addiu $v0, $zero, 2
/* F6E9C 802D24EC 03E00008 */ jr $ra
/* F6EA0 802D24F0 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,72 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802D7CF8
/* FC6A8 802D7CF8 27BDFFD0 */ addiu $sp, $sp, -0x30
/* FC6AC 802D7CFC AFB10014 */ sw $s1, 0x14($sp)
/* FC6B0 802D7D00 0080882D */ daddu $s1, $a0, $zero
/* FC6B4 802D7D04 AFBF002C */ sw $ra, 0x2c($sp)
/* FC6B8 802D7D08 AFB60028 */ sw $s6, 0x28($sp)
/* FC6BC 802D7D0C AFB50024 */ sw $s5, 0x24($sp)
/* FC6C0 802D7D10 AFB40020 */ sw $s4, 0x20($sp)
/* FC6C4 802D7D14 AFB3001C */ sw $s3, 0x1c($sp)
/* FC6C8 802D7D18 AFB20018 */ sw $s2, 0x18($sp)
/* FC6CC 802D7D1C AFB00010 */ sw $s0, 0x10($sp)
/* FC6D0 802D7D20 8E30000C */ lw $s0, 0xc($s1)
/* FC6D4 802D7D24 8E050000 */ lw $a1, ($s0)
/* FC6D8 802D7D28 0C0B1EAF */ jal get_variable
/* FC6DC 802D7D2C 26100004 */ addiu $s0, $s0, 4
/* FC6E0 802D7D30 8E050000 */ lw $a1, ($s0)
/* FC6E4 802D7D34 26100004 */ addiu $s0, $s0, 4
/* FC6E8 802D7D38 0220202D */ daddu $a0, $s1, $zero
/* FC6EC 802D7D3C 0C0B1EAF */ jal get_variable
/* FC6F0 802D7D40 0040B02D */ daddu $s6, $v0, $zero
/* FC6F4 802D7D44 8E050000 */ lw $a1, ($s0)
/* FC6F8 802D7D48 26100004 */ addiu $s0, $s0, 4
/* FC6FC 802D7D4C 0220202D */ daddu $a0, $s1, $zero
/* FC700 802D7D50 0C0B1EAF */ jal get_variable
/* FC704 802D7D54 0040A82D */ daddu $s5, $v0, $zero
/* FC708 802D7D58 8E050000 */ lw $a1, ($s0)
/* FC70C 802D7D5C 26100004 */ addiu $s0, $s0, 4
/* FC710 802D7D60 0220202D */ daddu $a0, $s1, $zero
/* FC714 802D7D64 0C0B1EAF */ jal get_variable
/* FC718 802D7D68 0040A02D */ daddu $s4, $v0, $zero
/* FC71C 802D7D6C 8E050000 */ lw $a1, ($s0)
/* FC720 802D7D70 26100004 */ addiu $s0, $s0, 4
/* FC724 802D7D74 0220202D */ daddu $a0, $s1, $zero
/* FC728 802D7D78 0C0B1EAF */ jal get_variable
/* FC72C 802D7D7C 0040982D */ daddu $s3, $v0, $zero
/* FC730 802D7D80 8E050000 */ lw $a1, ($s0)
/* FC734 802D7D84 26100004 */ addiu $s0, $s0, 4
/* FC738 802D7D88 0220202D */ daddu $a0, $s1, $zero
/* FC73C 802D7D8C 0C0B1EAF */ jal get_variable
/* FC740 802D7D90 0040902D */ daddu $s2, $v0, $zero
/* FC744 802D7D94 0220202D */ daddu $a0, $s1, $zero
/* FC748 802D7D98 8E050000 */ lw $a1, ($s0)
/* FC74C 802D7D9C 0C0B1EAF */ jal get_variable
/* FC750 802D7DA0 0040882D */ daddu $s1, $v0, $zero
/* FC754 802D7DA4 3C04802E */ lui $a0, 0x802e
/* FC758 802D7DA8 24849D50 */ addiu $a0, $a0, -0x62b0
/* FC75C 802D7DAC 24050001 */ addiu $a1, $zero, 1
/* FC760 802D7DB0 0040802D */ daddu $s0, $v0, $zero
/* FC764 802D7DB4 0C0B0CF8 */ jal start_script
/* FC768 802D7DB8 0000302D */ daddu $a2, $zero, $zero
/* FC76C 802D7DBC 0040182D */ daddu $v1, $v0, $zero
/* FC770 802D7DC0 AC760084 */ sw $s6, 0x84($v1)
/* FC774 802D7DC4 AC750088 */ sw $s5, 0x88($v1)
/* FC778 802D7DC8 AC74008C */ sw $s4, 0x8c($v1)
/* FC77C 802D7DCC AC730090 */ sw $s3, 0x90($v1)
/* FC780 802D7DD0 AC720094 */ sw $s2, 0x94($v1)
/* FC784 802D7DD4 AC710098 */ sw $s1, 0x98($v1)
/* FC788 802D7DD8 AC70009C */ sw $s0, 0x9c($v1)
/* FC78C 802D7DDC 8FBF002C */ lw $ra, 0x2c($sp)
/* FC790 802D7DE0 8FB60028 */ lw $s6, 0x28($sp)
/* FC794 802D7DE4 8FB50024 */ lw $s5, 0x24($sp)
/* FC798 802D7DE8 8FB40020 */ lw $s4, 0x20($sp)
/* FC79C 802D7DEC 8FB3001C */ lw $s3, 0x1c($sp)
/* FC7A0 802D7DF0 8FB20018 */ lw $s2, 0x18($sp)
/* FC7A4 802D7DF4 8FB10014 */ lw $s1, 0x14($sp)
/* FC7A8 802D7DF8 8FB00010 */ lw $s0, 0x10($sp)
/* FC7AC 802D7DFC 24020002 */ addiu $v0, $zero, 2
/* FC7B0 802D7E00 03E00008 */ jr $ra
/* FC7B4 802D7E04 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -1,65 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel LoadPath
/* F9DE0 802D5430 27BDFFD0 */ addiu $sp, $sp, -0x30
/* F9DE4 802D5434 AFB20018 */ sw $s2, 0x18($sp)
/* F9DE8 802D5438 0080902D */ daddu $s2, $a0, $zero
/* F9DEC 802D543C AFBF0028 */ sw $ra, 0x28($sp)
/* F9DF0 802D5440 AFB50024 */ sw $s5, 0x24($sp)
/* F9DF4 802D5444 AFB40020 */ sw $s4, 0x20($sp)
/* F9DF8 802D5448 AFB3001C */ sw $s3, 0x1c($sp)
/* F9DFC 802D544C AFB10014 */ sw $s1, 0x14($sp)
/* F9E00 802D5450 AFB00010 */ sw $s0, 0x10($sp)
/* F9E04 802D5454 8E50000C */ lw $s0, 0xc($s2)
/* F9E08 802D5458 8E050000 */ lw $a1, ($s0)
/* F9E0C 802D545C 0C0B1EAF */ jal get_variable
/* F9E10 802D5460 26100004 */ addiu $s0, $s0, 4
/* F9E14 802D5464 8E050000 */ lw $a1, ($s0)
/* F9E18 802D5468 26100004 */ addiu $s0, $s0, 4
/* F9E1C 802D546C 0240202D */ daddu $a0, $s2, $zero
/* F9E20 802D5470 0C0B1EAF */ jal get_variable
/* F9E24 802D5474 0040982D */ daddu $s3, $v0, $zero
/* F9E28 802D5478 8E050000 */ lw $a1, ($s0)
/* F9E2C 802D547C 26100004 */ addiu $s0, $s0, 4
/* F9E30 802D5480 0240202D */ daddu $a0, $s2, $zero
/* F9E34 802D5484 0C0B1EAF */ jal get_variable
/* F9E38 802D5488 0040A02D */ daddu $s4, $v0, $zero
/* F9E3C 802D548C 0240202D */ daddu $a0, $s2, $zero
/* F9E40 802D5490 8E050000 */ lw $a1, ($s0)
/* F9E44 802D5494 0C0B1EAF */ jal get_variable
/* F9E48 802D5498 0040882D */ daddu $s1, $v0, $zero
/* F9E4C 802D549C 2404001C */ addiu $a0, $zero, 0x1c
/* F9E50 802D54A0 0C00AB39 */ jal heap_malloc
/* F9E54 802D54A4 0040A82D */ daddu $s5, $v0, $zero
/* F9E58 802D54A8 00112080 */ sll $a0, $s1, 2
/* F9E5C 802D54AC 0040802D */ daddu $s0, $v0, $zero
/* F9E60 802D54B0 AE5000C0 */ sw $s0, 0xc0($s2)
/* F9E64 802D54B4 0C00AB39 */ jal heap_malloc
/* F9E68 802D54B8 AE110000 */ sw $s1, ($s0)
/* F9E6C 802D54BC 00112040 */ sll $a0, $s1, 1
/* F9E70 802D54C0 00912021 */ addu $a0, $a0, $s1
/* F9E74 802D54C4 00042080 */ sll $a0, $a0, 2
/* F9E78 802D54C8 AE020004 */ sw $v0, 4($s0)
/* F9E7C 802D54CC 0C00AB39 */ jal heap_malloc
/* F9E80 802D54D0 AE140008 */ sw $s4, 8($s0)
/* F9E84 802D54D4 8E040000 */ lw $a0, ($s0)
/* F9E88 802D54D8 8E050004 */ lw $a1, 4($s0)
/* F9E8C 802D54DC 8E060008 */ lw $a2, 8($s0)
/* F9E90 802D54E0 0040382D */ daddu $a3, $v0, $zero
/* F9E94 802D54E4 0C0B536B */ jal setup_path_data
/* F9E98 802D54E8 AE02000C */ sw $v0, 0xc($s0)
/* F9E9C 802D54EC 2673FFFF */ addiu $s3, $s3, -1
/* F9EA0 802D54F0 AE000010 */ sw $zero, 0x10($s0)
/* F9EA4 802D54F4 AE130014 */ sw $s3, 0x14($s0)
/* F9EA8 802D54F8 AE150018 */ sw $s5, 0x18($s0)
/* F9EAC 802D54FC 8FBF0028 */ lw $ra, 0x28($sp)
/* F9EB0 802D5500 8FB50024 */ lw $s5, 0x24($sp)
/* F9EB4 802D5504 8FB40020 */ lw $s4, 0x20($sp)
/* F9EB8 802D5508 8FB3001C */ lw $s3, 0x1c($sp)
/* F9EBC 802D550C 8FB20018 */ lw $s2, 0x18($sp)
/* F9EC0 802D5510 8FB10014 */ lw $s1, 0x14($sp)
/* F9EC4 802D5514 8FB00010 */ lw $s0, 0x10($sp)
/* F9EC8 802D5518 24020002 */ addiu $v0, $zero, 2
/* F9ECC 802D551C 03E00008 */ jr $ra
/* F9ED0 802D5520 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -49,7 +49,7 @@ typedef struct CamPosSettings {
/* 0x04 */ f32 boomLength;
/* 0x08 */ f32 boomPitch;
/* 0x0C */ f32 viewPitch;
/* 0x10 */ struct Vec3f position;
/* 0x10 */ Vec3f position;
} CamPosSettings; // size = 0x1C
typedef struct PartnerData {
@ -90,12 +90,12 @@ typedef struct Npc {
/* 0x02C */ char unk_2C[4];
/* 0x030 */ f32 animationSpeed;
/* 0x034 */ char unk_34[4];
/* 0x038 */ struct Vec3f pos;
/* 0x044 */ struct Vec3f rotation;
/* 0x038 */ Vec3f pos;
/* 0x044 */ Vec3f rotation;
/* 0x050 */ f32 unk_50;
/* 0x054 */ struct Vec3f scale;
/* 0x060 */ struct Vec3f moveToPos;
/* 0x06C */ struct Vec3f colliderPos; /* used during collision with player */
/* 0x054 */ Vec3f scale;
/* 0x060 */ Vec3f moveToPos;
/* 0x06C */ Vec3f colliderPos; /* used during collision with player */
/* 0x078 */ s32 shadowIndex;
/* 0x07C */ f32 shadowScale;
/* 0x080 */ s32 unk_80;
@ -435,7 +435,7 @@ typedef struct Camera {
/* 0x054 */ f32 unk_54;
/* 0x058 */ f32 unk_58;
/* 0x05C */ f32 unk_5C;
/* 0x060 */ struct Vec3f targetPos;
/* 0x060 */ Vec3f targetPos;
/* 0x06C */ f32 currentYaw;
/* 0x070 */ char unk_70[4];
/* 0x074 */ f32 currentBoomYaw;
@ -462,13 +462,13 @@ typedef struct Camera {
/* 0x48C */ f32 linearInterpScale; /* 3.0? */
/* 0x490 */ f32 moveSpeed;
/* 0x494 */ char unk_494[28];
/* 0x4B0 */ struct Vec3f movePos;
/* 0x4B0 */ Vec3f movePos;
/* 0x4BC */ char unk_4BC[28];
/* 0x4D8 */ s32 controllerType;
/* 0x4DC */ f32 controllerBoomLen;
/* 0x4E0 */ f32 controllerBoomPitch;
/* 0x4E4 */ struct Vec3f posA;
/* 0x4F0 */ struct Vec3f posB;
/* 0x4E4 */ Vec3f posA;
/* 0x4F0 */ Vec3f posB;
/* 0x4FC */ f32 controllerViewPitch;
/* 0x500 */ s32 unk_500;
/* 0x504 */ s16 boolTargetPlayer;
@ -771,7 +771,7 @@ typedef struct ItemEntity {
/* 0x00 */ s32 flags;
/* 0x04 */ s16 boundVar; /* see make_item_entity */
/* 0x06 */ char unk_06[2];
/* 0x08 */ struct Vec3f position;
/* 0x08 */ Vec3f position;
/* 0x14 */ struct ItemEntityPhysicsData* physicsData;
/* 0x18 */ s16 itemID; /* into item table, also worldIconID */
/* 0x1A */ u8 state;
@ -810,10 +810,10 @@ typedef struct SpriteComponent {
/* 0x10 */ s32 loopCounter;
/* 0x14 */ s32 currentRaster;
/* 0x18 */ s32 currentPalette;
/* 0x1C */ struct Vec3f posOffset;
/* 0x28 */ struct Vec3f compPos;
/* 0x34 */ struct Vec3f rotation;
/* 0x40 */ struct Vec3f scale;
/* 0x1C */ Vec3f posOffset;
/* 0x28 */ Vec3f compPos;
/* 0x34 */ Vec3f rotation;
/* 0x40 */ Vec3f scale;
/* 0x4C */ char unk_4C[4];
} SpriteComponent; // size = 0x50
@ -901,7 +901,7 @@ typedef struct GameStatus {
/* 0x08E */ s16 entryID;
/* 0x090 */ char unk_90[4];
/* 0x094 */ f32 exitAngle;
/* 0x098 */ struct Vec3f playerPos;
/* 0x098 */ Vec3f playerPos;
/* 0x0A4 */ f32 playerYaw;
/* 0x0A8 */ s8 unk_A8;
/* 0x0A9 */ s8 unk_A9;
@ -946,8 +946,8 @@ typedef struct PartnerAnimations {
typedef struct Shadow {
/* 0x00 */ s32 flags;
/* 0x04 */ char unk_04[12];
/* 0x10 */ struct Vec3f position;
/* 0x1C */ struct Vec3f scale;
/* 0x10 */ Vec3f position;
/* 0x1C */ Vec3f scale;
/* 0x28 */ char unk_28[80];
} Shadow; // size = 0x78
@ -1009,13 +1009,13 @@ typedef struct ActorPart {
/* 0x10 */ struct ActorPartMovement* movement;
/* 0x14 */ s16 partOffset[3];
/* 0x1A */ s16 visualOffset[3];
/* 0x20 */ struct Vec3f partOffsetFloat;
/* 0x2C */ struct Vec3f absolutePosition;
/* 0x38 */ struct Vec3f rotation;
/* 0x20 */ Vec3f partOffsetFloat;
/* 0x2C */ Vec3f absolutePosition;
/* 0x38 */ Vec3f rotation;
/* 0x44 */ s16 rotationPivotOffset[3];
/* 0x4A */ char unk_4A[2];
/* 0x4C */ f32 scale[3];
/* 0x58 */ struct Vec3f currentPos;
/* 0x58 */ Vec3f currentPos;
/* 0x64 */ f32 yaw;
/* 0x68 */ s16 unkOffset[2];
/* 0x6C */ s16 targetOffset[2];
@ -1146,14 +1146,14 @@ typedef struct Encounter {
typedef struct PlayerPathElement {
/* 0x00 */ char unk_00[4];
/* 0x04 */ struct Vec3f pos;
/* 0x04 */ Vec3f pos;
} PlayerPathElement; // size = 0x10
typedef struct AnimatedModel {
/* 0x00 */ s32 animModelID;
/* 0x04 */ struct Vec3f pos; /* Created by retype action */
/* 0x10 */ struct Vec3f rot;
/* 0x1C */ struct Vec3f scale;
/* 0x04 */ Vec3f pos; /* Created by retype action */
/* 0x10 */ Vec3f rot;
/* 0x1C */ Vec3f scale;
/* 0x28 */ struct Matrix4s* mtx;
/* 0x2C */ char unk_2C[60];
/* 0x68 */ u32 currentAnimData;
@ -1186,9 +1186,9 @@ typedef struct Actor {
/* 0x000 */ s32 flags;
/* 0x004 */ char unk_04[4];
/* 0x008 */ struct StaticActorData* staticActorData;
/* 0x00C */ struct Vec3f moveCurrentPos;
/* 0x018 */ struct Vec3f moveGoalPos;
/* 0x024 */ struct Vec3f moveEndPos; /* where other actors should target this one at. saved before partner switching */
/* 0x00C */ Vec3f moveCurrentPos;
/* 0x018 */ Vec3f moveGoalPos;
/* 0x024 */ Vec3f moveEndPos; /* where other actors should target this one at. saved before partner switching */
/* 0x030 */ char unk_30[24];
/* 0x048 */ f32 jumpAccel;
/* 0x04C */ f32 moveSpeed;
@ -1206,9 +1206,9 @@ typedef struct Actor {
/* 0x077 */ u8 jumpPartIndex;
/* 0x078 */ char unk_78[16];
/* 0x088 */ s32 varTable[16];
/* 0x0C8 */ struct Vec3f flyCurrentPos;
/* 0x0D4 */ struct Vec3f flyGoalPos;
/* 0x0E0 */ struct Vec3f flyTempPos; /* used for start in fly functions, end in flyrun functions */
/* 0x0C8 */ Vec3f flyCurrentPos;
/* 0x0D4 */ Vec3f flyGoalPos;
/* 0x0E0 */ Vec3f flyTempPos; /* used for start in fly functions, end in flyrun functions */
/* 0x0EC */ char unk_EC[24];
/* 0x104 */ f32 flyJumpAccel;
/* 0x108 */ f32 flySpeed;
@ -1223,8 +1223,8 @@ typedef struct Actor {
/* 0x135 */ u8 footStepCounter;
/* 0x136 */ u8 actorType;
/* 0x137 */ char unk_137;
/* 0x138 */ struct Vec3f homePos;
/* 0x144 */ struct Vec3f currentPos;
/* 0x138 */ Vec3f homePos;
/* 0x144 */ Vec3f currentPos;
/* 0x150 */ Vec3s headOffset;
/* 0x156 */ s16 healthBarPosition[3];
/* 0x15C */ f32 rotation[3];
@ -1386,8 +1386,8 @@ typedef struct PlayerStatus {
/* 0x014 */ s8 enableCollisionOverlapsCheck;
/* 0x015 */ s8 statusMenuCounterinputEnabledCounter; /* whether the C-up menu can appear */
/* 0x016 */ Vec3s lastGoodPosition;
/* 0x01C */ struct Vec3f extraVelocity;
/* 0x028 */ struct Vec3f position;
/* 0x01C */ Vec3f extraVelocity;
/* 0x028 */ Vec3f position;
/* 0x034 */ char unk_34[16];
/* 0x044 */ f32 decorationPos[2];
/* 0x04C */ char unk_4C[4];
@ -1505,4 +1505,14 @@ typedef struct SaveData {
/* 0x1304 */ char unk_1304[0x7C];
} SaveData; // size = 0x1380
typedef struct {
/* 0x00 */ s32 numVectors;
/* 0x04 */ s32 unk_04;
/* 0x08 */ Vec3f* staticVectorList;
/* 0x0C */ Vec3f* vectors;
/* 0x10 */ s32 timeElapsed;
/* 0x14 */ s32 timeLeft;
/* 0x18 */ s32 easingType;
} Path; // size = 0x1C
#endif

View File

@ -102,6 +102,7 @@ s32 make_item_entity_nodelay(s32 itemID, f32 x, f32 y, f32 z, ItemSpawnMode item
void set_cam_viewport(s16 id, s16 x, s16 y, s16 width, s16 height);
void disable_player_shadow(void);
void move_player(s32 duration, f32 heading, f32 speed);
Npc* get_npc_safe(NpcId npcId);
Npc* get_npc_unsafe(NpcId npcId);

View File

@ -162,6 +162,7 @@ extern s32 mapScriptLibVram;
extern Bytecode* SCRIPT_NpcDefeat;
extern Bytecode* ShakeCam1;
extern Bytecode* ShakeCamX;
extern Bytecode* D_802D9D50;
extern s16 gMusicUnkVolume;
extern s16 gMusicUnkVolume2;

View File

@ -4,7 +4,7 @@
if command -v apt &> /dev/null; then
echo "Installing packages for Ubuntu (apt)"
sudo apt install -y git python3 python3-pip build-essential binutils-mips-linux-gnu zlib1g-dev libyaml-dev || exit 1
sudo apt install -y git python3 python3-pip python3-setuptools build-essential binutils-mips-linux-gnu zlib1g-dev libyaml-dev || exit 1
python3 -m pip install -U -r requirements.txt
if [[ $1 == "--extra" ]]; then
@ -25,7 +25,7 @@ if command -v pacman &> /dev/null; then
sudo pacman -Syu || exit 1
# Install dependencies
sudo pacman -S --noconfirm --needed git python python-pip base-devel zlib libyaml || exit 1
sudo pacman -S --noconfirm --needed git python python-pip python-setuptools base-devel zlib libyaml || exit 1
python3 -m pip install -U -r requirements.txt
# Install binutils if required
@ -62,7 +62,7 @@ fi
if command -v zypper &> /dev/null; then
echo "Installing packages for openSUSE (zypper)"
sudo zypper -n install git python3 python3-devel python3-pip gcc gcc-c++ glibc-devel make cross-mips-binutils zlib-devel libyaml-devel
sudo zypper -n install git python3 python3-devel python3-pip python3-setuptools gcc gcc-c++ glibc-devel make cross-mips-binutils zlib-devel libyaml-devel
# Link the openSUSE locations for binutils tools to their usual GNU locations
sudo ln -s /usr/bin/mips-suse-linux-addr2line /usr/bin/mips-linux-gnu-addr2line

View File

@ -10,7 +10,7 @@ INCLUDE_ASM(s32, "code_7bb60_len_41b0", func_800E26C4);
void set_action_state(s32 actionState);
void move_player(s16 duration, f32 heading, f32 speed) {
void move_player(s32 duration, f32 heading, f32 speed) {
PlayerStatus* playerStatus = &gPlayerStatus;
playerStatus->flags |= 0x4000;

View File

@ -122,7 +122,32 @@ ApiStatus SetPlayerAnimationSpeed(ScriptInstance* script, s32 isInitialCall) {
return ApiStatus_DONE2;
}
INCLUDE_ASM(s32, "code_F5750", PlayerMoveTo, ScriptInstance* script, s32 isInitialCall);
ApiStatus PlayerMoveTo(ScriptInstance* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
PlayerStatus* playerStatus = PLAYER_STATUS;
if (isInitialCall) {
f32 targetX = get_variable(script, *args++);
f32 targetZ = get_variable(script, *args++);
f32 moveSpeed;
script->functionTemp[0].s = get_variable(script, *args++);
playerStatus->targetYaw = atan2(playerStatus->position.x, playerStatus->position.z, targetX, targetZ);
if (script->functionTemp[0].s == 0) {
script->functionTemp[0].s = dist2D(playerStatus->position.x, playerStatus->position.z, targetX,
targetZ) / gPlayerNpcPtr->moveSpeed;
moveSpeed = gPlayerNpcPtr->moveSpeed;
} else {
moveSpeed = dist2D(playerStatus->position.x, playerStatus->position.z, targetX, targetZ) / script->functionTemp[0].s;
}
move_player(script->functionTemp[0].s, playerStatus->targetYaw, moveSpeed);
}
// functionTemp 0 is the time left
script->functionTemp[0].s--;
return script->functionTemp[0].s < 0;
}
INCLUDE_ASM(s32, "code_F5750", func_802D1270);
@ -142,7 +167,49 @@ void PlayerJump2(ScriptInstance* script, s32 isInitialCall) {
player_jump(script, isInitialCall, 2);
}
INCLUDE_ASM(s32, "code_F5750", InterpPlayerYaw, ScriptInstance* script, s32 isInitialCall);
ApiStatus InterpPlayerYaw(ScriptInstance* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
PlayerStatus* playerStatus = PLAYER_STATUS;
f32* initialYaw = &script->functionTemp[1].f;
f32* deltaYaw = &script->functionTemp[2].f;
s32* time = &script->functionTemp[3].s;
if (isInitialCall) {
Npc** player = &gPlayerNpcPtr;
(*player)->yaw = playerStatus->targetYaw;
*initialYaw = (*player)->yaw;
*deltaYaw = get_float_variable(script, *args++) - *initialYaw;
*time = get_variable(script, *args++);
(*player)->duration = 0;
if (*deltaYaw < -180.0f) {
*deltaYaw += 360.0f;
}
if (*deltaYaw > 180.0f) {
*deltaYaw -= 360.0f;
}
}
if (*time > 0) {
Npc** player = &gPlayerNpcPtr;
(*player)->duration++;
(*player)->yaw = *initialYaw + ((*deltaYaw * (*player)->duration) / *time);
(*player)->yaw = clamp_angle((*player)->yaw);
playerStatus->targetYaw = (*player)->yaw;
return !((*player)->duration < *time);
} else {
Npc** player = &gPlayerNpcPtr;
(*player)->yaw += *deltaYaw;
(*player)->yaw = clamp_angle((*player)->yaw);
playerStatus->targetYaw = (*player)->yaw;
return ApiStatus_DONE2;
}
}
INCLUDE_ASM(s32, "code_F5750", PlayerFaceNpc, ScriptInstance* script, s32 isInitialCall);
@ -236,7 +303,16 @@ INCLUDE_ASM(s32, "code_F5750", func_802D244C);
INCLUDE_ASM(s32, "code_F5750", func_802D2484);
INCLUDE_ASM(s32, "code_F5750", func_802D249C);
ApiStatus func_802D249C(ScriptInstance* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32 val = 0;
if (gCollisionStatus.currentFloor >= 0) {
val = func_802D23F8() != 0;
}
set_variable(script, *args, val);
return ApiStatus_DONE2;
}
ApiStatus func_802D24F4(ScriptInstance* script, s32 isInitialCall) {
return (gPlayerStatus.moveFrames == 0) * ApiStatus_DONE2;

View File

@ -67,7 +67,27 @@ ApiStatus func_802D7B74(ScriptInstance* script, s32 isInitialCall) {
INCLUDE_ASM(s32, "code_FBE10", func_802D7BA4);
INCLUDE_ASM(s32, "code_FBE10", func_802D7CF8);
ApiStatus Spawn802D9D50(ScriptInstance* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32 var0 = get_variable(script, *args++);
s32 var1 = get_variable(script, *args++);
s32 var2 = get_variable(script, *args++);
s32 var3 = get_variable(script, *args++);
s32 var4 = get_variable(script, *args++);
s32 var5 = get_variable(script, *args++);
s32 var6 = get_variable(script, *args++);
ScriptInstance* newScript = start_script(&D_802D9D50, 1, 0);
newScript->varTable[0] = var0;
newScript->varTable[1] = var1;
newScript->varTable[2] = var2;
newScript->varTable[3] = var3;
newScript->varTable[4] = var4;
newScript->varTable[5] = var5;
newScript->varTable[6] = var6;
return ApiStatus_DONE2;
}
INCLUDE_ASM(s32, "code_FBE10", func_802D7E08);

View File

@ -351,7 +351,27 @@ INCLUDE_ASM(s32, "code_f8f60_len_1560", setup_path_data);
INCLUDE_ASM(s32, "code_f8f60_len_1560", func_802D5270);
INCLUDE_ASM(s32, "code_f8f60_len_1560", LoadPath, ScriptInstance* script, s32 isInitialCall);
s32 LoadPath(ScriptInstance* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32 time = get_variable(script, *args++);
s32 vectorList = get_variable(script, *args++);
s32 numVectors = get_variable(script, *args++);
s32 easingType = get_variable(script, *args++);
Path* path = heap_malloc(sizeof(Path));
script->varTable[15] = path;
path->numVectors = numVectors;
path->unk_04 = heap_malloc(numVectors * sizeof(f32));
path->staticVectorList = vectorList;
path->vectors = heap_malloc(numVectors * sizeof(Vec3f));
setup_path_data(path->numVectors, path->unk_04, path->staticVectorList, path->vectors);
path->timeElapsed = 0;
path->timeLeft = time - 1;
path->easingType = easingType;
return ApiStatus_DONE2;
}
INCLUDE_ASM(s32, "code_f8f60_len_1560", GetNextPathPos, ScriptInstance* script, s32 isInitialCall);

View File

@ -1906,3 +1906,4 @@ gMusicTargetVolume;0x80159AE2
gMusicCurrentVolume;0x80159AE6
gAreas;0x800934F0
gSongArray;0x8014F720
D_802D9D50;0x802D9D50

View File

@ -219,6 +219,8 @@ gWorldDynamicEntityList = 0x801543A0;
gBattleDynamicEntityList = 0x801543E0;
gCurrentDynamicEntityListPtr = 0x80154420;
D_802D9D50 = 0x802D9D50;
gScriptIndexList = 0x802DA898;
gScriptIdList = 0x802DAA98;
gScriptListCount = 0x802DAC98;