mirror of
https://github.com/pmret/papermario.git
synced 2024-11-08 12:02:30 +01:00
Merge branch 'master' into audio
This commit is contained in:
commit
ed62a6999b
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -1906,3 +1906,4 @@ gMusicTargetVolume;0x80159AE2
|
||||
gMusicCurrentVolume;0x80159AE6
|
||||
gAreas;0x800934F0
|
||||
gSongArray;0x8014F720
|
||||
D_802D9D50;0x802D9D50
|
||||
|
@ -219,6 +219,8 @@ gWorldDynamicEntityList = 0x801543A0;
|
||||
gBattleDynamicEntityList = 0x801543E0;
|
||||
gCurrentDynamicEntityListPtr = 0x80154420;
|
||||
|
||||
D_802D9D50 = 0x802D9D50;
|
||||
|
||||
gScriptIndexList = 0x802DA898;
|
||||
gScriptIdList = 0x802DAA98;
|
||||
gScriptListCount = 0x802DAC98;
|
||||
|
Loading…
Reference in New Issue
Block a user