match obj_init_racer

This commit is contained in:
Fazana
2022-04-28 13:54:27 +01:00
parent 0bc89603f2
commit f499f0d0ba
4 changed files with 175 additions and 307 deletions
-234
View File
@@ -1,234 +0,0 @@
glabel obj_init_racer
/* 04E6B0 8004DAB0 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 04E6B4 8004DAB4 44811000 */ mtc1 $at, $f2
/* 04E6B8 8004DAB8 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 04E6BC 8004DABC 3C018012 */ lui $at, %hi(D_8011D53C) # $at, 0x8012
/* 04E6C0 8004DAC0 AFBF001C */ sw $ra, 0x1c($sp)
/* 04E6C4 8004DAC4 AFB00018 */ sw $s0, 0x18($sp)
/* 04E6C8 8004DAC8 AC20D53C */ sw $zero, %lo(D_8011D53C)($at)
/* 04E6CC 8004DACC 84AE000C */ lh $t6, 0xc($a1)
/* 04E6D0 8004DAD0 8C900064 */ lw $s0, 0x64($a0)
/* 04E6D4 8004DAD4 A48E0000 */ sh $t6, ($a0)
/* 04E6D8 8004DAD8 84AF000A */ lh $t7, 0xa($a1)
/* 04E6DC 8004DADC 00803825 */ move $a3, $a0
/* 04E6E0 8004DAE0 A48F0002 */ sh $t7, 2($a0)
/* 04E6E4 8004DAE4 84B80008 */ lh $t8, 8($a1)
/* 04E6E8 8004DAE8 2409FFFF */ li $t1, -1
/* 04E6EC 8004DAEC A4980004 */ sh $t8, 4($a0)
/* 04E6F0 8004DAF0 84A6000E */ lh $a2, 0xe($a1)
/* 04E6F4 8004DAF4 A2000194 */ sb $zero, 0x194($s0)
/* 04E6F8 8004DAF8 E602008C */ swc1 $f2, 0x8c($s0)
/* 04E6FC 8004DAFC 04C00010 */ bltz $a2, .L8004DB40
/* 04E700 8004DB00 E6020090 */ swc1 $f2, 0x90($s0)
/* 04E704 8004DB04 28C10004 */ slti $at, $a2, 4
/* 04E708 8004DB08 1020000D */ beqz $at, .L8004DB40
/* 04E70C 8004DB0C 00000000 */ nop
/* 04E710 8004DB10 AFA60028 */ sw $a2, 0x28($sp)
/* 04E714 8004DB14 0C003856 */ jal func_8000E158
/* 04E718 8004DB18 AFA40030 */ sw $a0, 0x30($sp)
/* 04E71C 8004DB1C 8FA60028 */ lw $a2, 0x28($sp)
/* 04E720 8004DB20 8FA70030 */ lw $a3, 0x30($sp)
/* 04E724 8004DB24 10400003 */ beqz $v0, .L8004DB34
/* 04E728 8004DB28 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 04E72C 8004DB2C 24190001 */ li $t9, 1
/* 04E730 8004DB30 03263023 */ subu $a2, $t9, $a2
.L8004DB34:
/* 04E734 8004DB34 44811000 */ mtc1 $at, $f2
/* 04E738 8004DB38 10000002 */ b .L8004DB44
/* 04E73C 8004DB3C A6060000 */ sh $a2, ($s0)
.L8004DB40:
/* 04E740 8004DB40 A6090000 */ sh $t1, ($s0)
.L8004DB44:
/* 04E744 8004DB44 84EA0000 */ lh $t2, ($a3)
/* 04E748 8004DB48 3C013F00 */ li $at, 0x3F000000 # 0.500000
/* 04E74C 8004DB4C A60A01A0 */ sh $t2, 0x1a0($s0)
/* 04E750 8004DB50 84EB0004 */ lh $t3, 4($a3)
/* 04E754 8004DB54 44812000 */ mtc1 $at, $f4
/* 04E758 8004DB58 860C01A0 */ lh $t4, 0x1a0($s0)
/* 04E75C 8004DB5C A60B01A4 */ sh $t3, 0x1a4($s0)
/* 04E760 8004DB60 E60400C4 */ swc1 $f4, 0xc4($s0)
/* 04E764 8004DB64 A60C0196 */ sh $t4, 0x196($s0)
/* 04E768 8004DB68 C4E6000C */ lwc1 $f6, 0xc($a3)
/* 04E76C 8004DB6C 3C0141F0 */ li $at, 0x41F00000 # 30.000000
/* 04E770 8004DB70 E60600D8 */ swc1 $f6, 0xd8($s0)
/* 04E774 8004DB74 44810000 */ mtc1 $at, $f0
/* 04E778 8004DB78 C4E80010 */ lwc1 $f8, 0x10($a3)
/* 04E77C 8004DB7C 24180003 */ li $t8, 3
/* 04E780 8004DB80 46004280 */ add.s $f10, $f8, $f0
/* 04E784 8004DB84 24190001 */ li $t9, 1
/* 04E788 8004DB88 E60A00DC */ swc1 $f10, 0xdc($s0)
/* 04E78C 8004DB8C C4F00014 */ lwc1 $f16, 0x14($a3)
/* 04E790 8004DB90 24090001 */ li $t1, 1
/* 04E794 8004DB94 E61000E0 */ swc1 $f16, 0xe0($s0)
/* 04E798 8004DB98 C4F2000C */ lwc1 $f18, 0xc($a3)
/* 04E79C 8004DB9C 2401FFFF */ li $at, -1
/* 04E7A0 8004DBA0 E61200E4 */ swc1 $f18, 0xe4($s0)
/* 04E7A4 8004DBA4 C4E40010 */ lwc1 $f4, 0x10($a3)
/* 04E7A8 8004DBA8 00000000 */ nop
/* 04E7AC 8004DBAC 46002180 */ add.s $f6, $f4, $f0
/* 04E7B0 8004DBB0 E60600E8 */ swc1 $f6, 0xe8($s0)
/* 04E7B4 8004DBB4 C4E80014 */ lwc1 $f8, 0x14($a3)
/* 04E7B8 8004DBB8 00000000 */ nop
/* 04E7BC 8004DBBC E60800EC */ swc1 $f8, 0xec($s0)
/* 04E7C0 8004DBC0 C4EA000C */ lwc1 $f10, 0xc($a3)
/* 04E7C4 8004DBC4 00000000 */ nop
/* 04E7C8 8004DBC8 E60A00F0 */ swc1 $f10, 0xf0($s0)
/* 04E7CC 8004DBCC C4F00010 */ lwc1 $f16, 0x10($a3)
/* 04E7D0 8004DBD0 00000000 */ nop
/* 04E7D4 8004DBD4 46008480 */ add.s $f18, $f16, $f0
/* 04E7D8 8004DBD8 E61200F4 */ swc1 $f18, 0xf4($s0)
/* 04E7DC 8004DBDC C4E40014 */ lwc1 $f4, 0x14($a3)
/* 04E7E0 8004DBE0 00000000 */ nop
/* 04E7E4 8004DBE4 E60400F8 */ swc1 $f4, 0xf8($s0)
/* 04E7E8 8004DBE8 C4E6000C */ lwc1 $f6, 0xc($a3)
/* 04E7EC 8004DBEC 00000000 */ nop
/* 04E7F0 8004DBF0 E60600FC */ swc1 $f6, 0xfc($s0)
/* 04E7F4 8004DBF4 C4E80010 */ lwc1 $f8, 0x10($a3)
/* 04E7F8 8004DBF8 00000000 */ nop
/* 04E7FC 8004DBFC 46004280 */ add.s $f10, $f8, $f0
/* 04E800 8004DC00 E60A0100 */ swc1 $f10, 0x100($s0)
/* 04E804 8004DC04 C4F00014 */ lwc1 $f16, 0x14($a3)
/* 04E808 8004DC08 00000000 */ nop
/* 04E80C 8004DC0C E6100104 */ swc1 $f16, 0x104($s0)
/* 04E810 8004DC10 C4F2000C */ lwc1 $f18, 0xc($a3)
/* 04E814 8004DC14 00000000 */ nop
/* 04E818 8004DC18 E612005C */ swc1 $f18, 0x5c($s0)
/* 04E81C 8004DC1C C4E40010 */ lwc1 $f4, 0x10($a3)
/* 04E820 8004DC20 00000000 */ nop
/* 04E824 8004DC24 E6040060 */ swc1 $f4, 0x60($s0)
/* 04E828 8004DC28 C4E60014 */ lwc1 $f6, 0x14($a3)
/* 04E82C 8004DC2C 00000000 */ nop
/* 04E830 8004DC30 E6060064 */ swc1 $f6, 0x64($s0)
/* 04E834 8004DC34 8CED004C */ lw $t5, 0x4c($a3)
/* 04E838 8004DC38 C4E8000C */ lwc1 $f8, 0xc($a3)
/* 04E83C 8004DC3C 00000000 */ nop
/* 04E840 8004DC40 E5A80004 */ swc1 $f8, 4($t5)
/* 04E844 8004DC44 8CEE004C */ lw $t6, 0x4c($a3)
/* 04E848 8004DC48 C4EA0010 */ lwc1 $f10, 0x10($a3)
/* 04E84C 8004DC4C 00000000 */ nop
/* 04E850 8004DC50 E5CA0008 */ swc1 $f10, 8($t6)
/* 04E854 8004DC54 8CEF004C */ lw $t7, 0x4c($a3)
/* 04E858 8004DC58 C4F00014 */ lwc1 $f16, 0x14($a3)
/* 04E85C 8004DC5C 00000000 */ nop
/* 04E860 8004DC60 E5F0000C */ swc1 $f16, 0xc($t7)
/* 04E864 8004DC64 86020000 */ lh $v0, ($s0)
/* 04E868 8004DC68 A21801E2 */ sb $t8, 0x1e2($s0)
/* 04E86C 8004DC6C 00025080 */ sll $t2, $v0, 2
/* 04E870 8004DC70 01425021 */ addu $t2, $t2, $v0
/* 04E874 8004DC74 A61901AA */ sh $t9, 0x1aa($s0)
/* 04E878 8004DC78 A60901AE */ sh $t1, 0x1ae($s0)
/* 04E87C 8004DC7C A20A01E7 */ sb $t2, 0x1e7($s0)
/* 04E880 8004DC80 E60200A8 */ swc1 $f2, 0xa8($s0)
/* 04E884 8004DC84 A20001FD */ sb $zero, 0x1fd($s0)
/* 04E888 8004DC88 AE000178 */ sw $zero, 0x178($s0)
/* 04E88C 8004DC8C AE00017C */ sw $zero, 0x17c($s0)
/* 04E890 8004DC90 AE000180 */ sw $zero, 0x180($s0)
/* 04E894 8004DC94 AE000218 */ sw $zero, 0x218($s0)
/* 04E898 8004DC98 AE000220 */ sw $zero, 0x220($s0)
/* 04E89C 8004DC9C 1041002B */ beq $v0, $at, .L8004DD4C
/* 04E8A0 8004DCA0 AE00021C */ sw $zero, 0x21c($s0)
/* 04E8A4 8004DCA4 3C028012 */ lui $v0, %hi(D_8011D582) # $v0, 0x8012
/* 04E8A8 8004DCA8 2442D582 */ addiu $v0, %lo(D_8011D582) # addiu $v0, $v0, -0x2a7e
/* 04E8AC 8004DCAC 804B0000 */ lb $t3, ($v0)
/* 04E8B0 8004DCB0 00C02025 */ move $a0, $a2
/* 04E8B4 8004DCB4 15600025 */ bnez $t3, .L8004DD4C
/* 04E8B8 8004DCB8 00000000 */ nop
/* 04E8BC 8004DCBC 0C01997A */ jal func_800665E8
/* 04E8C0 8004DCC0 AFA70030 */ sw $a3, 0x30($sp)
/* 04E8C4 8004DCC4 0C01A73F */ jal func_80069CFC
/* 04E8C8 8004DCC8 00000000 */ nop
/* 04E8CC 8004DCCC 3C038012 */ lui $v1, %hi(gCameraObject) # $v1, 0x8012
/* 04E8D0 8004DCD0 2463D508 */ addiu $v1, %lo(gCameraObject) # addiu $v1, $v1, -0x2af8
/* 04E8D4 8004DCD4 AC620000 */ sw $v0, ($v1)
/* 04E8D8 8004DCD8 8FA40030 */ lw $a0, 0x30($sp)
/* 04E8DC 8004DCDC A4400004 */ sh $zero, 4($v0)
/* 04E8E0 8004DCE0 8C6E0000 */ lw $t6, ($v1)
/* 04E8E4 8004DCE4 240D0400 */ li $t5, 1024
/* 04E8E8 8004DCE8 A5CD0002 */ sh $t5, 2($t6)
/* 04E8EC 8004DCEC 8C780000 */ lw $t8, ($v1)
/* 04E8F0 8004DCF0 860F0196 */ lh $t7, 0x196($s0)
/* 04E8F4 8004DCF4 240800FF */ li $t0, 255
/* 04E8F8 8004DCF8 A70F0000 */ sh $t7, ($t8)
/* 04E8FC 8004DCFC 8C790000 */ lw $t9, ($v1)
/* 04E900 8004DD00 44809000 */ mtc1 $zero, $f18
/* 04E904 8004DD04 A7200036 */ sh $zero, 0x36($t9)
/* 04E908 8004DD08 8C690000 */ lw $t1, ($v1)
/* 04E90C 8004DD0C 02002825 */ move $a1, $s0
/* 04E910 8004DD10 A128003C */ sb $t0, 0x3c($t1)
/* 04E914 8004DD14 8C6A0000 */ lw $t2, ($v1)
/* 04E918 8004DD18 3C063F80 */ lui $a2, 0x3f80
/* 04E91C 8004DD1C A148003D */ sb $t0, 0x3d($t2)
/* 04E920 8004DD20 8C6B0000 */ lw $t3, ($v1)
/* 04E924 8004DD24 00000000 */ nop
/* 04E928 8004DD28 A168003E */ sb $t0, 0x3e($t3)
/* 04E92C 8004DD2C 8C6C0000 */ lw $t4, ($v1)
/* 04E930 8004DD30 00000000 */ nop
/* 04E934 8004DD34 A188003F */ sb $t0, 0x3f($t4)
/* 04E938 8004DD38 8C6D0000 */ lw $t5, ($v1)
/* 04E93C 8004DD3C 0C015E90 */ jal func_80057A40
/* 04E940 8004DD40 E5B20018 */ swc1 $f18, 0x18($t5)
/* 04E944 8004DD44 8FA70030 */ lw $a3, 0x30($sp)
/* 04E948 8004DD48 00000000 */ nop
.L8004DD4C:
/* 04E94C 8004DD4C 3C028012 */ lui $v0, %hi(D_8011D582) # $v0, 0x8012
/* 04E950 8004DD50 2442D582 */ addiu $v0, %lo(D_8011D582) # addiu $v0, $v0, -0x2a7e
/* 04E954 8004DD54 804E0000 */ lb $t6, ($v0)
/* 04E958 8004DD58 240800FF */ li $t0, 255
/* 04E95C 8004DD5C 15C00007 */ bnez $t6, .L8004DD7C
/* 04E960 8004DD60 00002025 */ move $a0, $zero
/* 04E964 8004DD64 3C018012 */ lui $at, %hi(D_8011D583) # $at, 0x8012
/* 04E968 8004DD68 A020D583 */ sb $zero, %lo(D_8011D583)($at)
/* 04E96C 8004DD6C 3C018012 */ lui $at, %hi(D_8011D586) # $at, 0x8012
/* 04E970 8004DD70 A420D586 */ sh $zero, %lo(D_8011D586)($at)
/* 04E974 8004DD74 3C018012 */ lui $at, %hi(D_8011D584) # $at, 0x8012
/* 04E978 8004DD78 A020D584 */ sb $zero, %lo(D_8011D584)($at)
.L8004DD7C:
/* 04E97C 8004DD7C 8CF8004C */ lw $t8, 0x4c($a3)
/* 04E980 8004DD80 240F0005 */ li $t7, 5
/* 04E984 8004DD84 A70F0014 */ sh $t7, 0x14($t8)
/* 04E988 8004DD88 8CF9004C */ lw $t9, 0x4c($a3)
/* 04E98C 8004DD8C 2409000F */ li $t1, 15
/* 04E990 8004DD90 A3200011 */ sb $zero, 0x11($t9)
/* 04E994 8004DD94 8CEA004C */ lw $t2, 0x4c($a3)
/* 04E998 8004DD98 240B0014 */ li $t3, 20
/* 04E99C 8004DD9C A1490010 */ sb $t1, 0x10($t2)
/* 04E9A0 8004DDA0 8CEC004C */ lw $t4, 0x4c($a3)
/* 04E9A4 8004DDA4 3C018012 */ lui $at, %hi(D_8011D560) # $at, 0x8012
/* 04E9A8 8004DDA8 A18B0012 */ sb $t3, 0x12($t4)
/* 04E9AC 8004DDAC A20001EE */ sb $zero, 0x1ee($s0)
/* 04E9B0 8004DDB0 804D0000 */ lb $t5, ($v0)
/* 04E9B4 8004DDB4 240E0006 */ li $t6, 6
/* 04E9B8 8004DDB8 15A00002 */ bnez $t5, .L8004DDC4
/* 04E9BC 8004DDBC 240F0064 */ li $t7, 100
/* 04E9C0 8004DDC0 A20801F7 */ sb $t0, 0x1f7($s0)
.L8004DDC4:
/* 04E9C4 8004DDC4 A420D560 */ sh $zero, %lo(D_8011D560)($at)
/* 04E9C8 8004DDC8 3C014396 */ li $at, 0x43960000 # 300.000000
/* 04E9CC 8004DDCC 44812000 */ mtc1 $at, $f4
/* 04E9D0 8004DDD0 3C018012 */ lui $at, %hi(D_8011D544) # $at, 0x8012
/* 04E9D4 8004DDD4 E424D544 */ swc1 $f4, %lo(D_8011D544)($at)
/* 04E9D8 8004DDD8 A20E01C9 */ sb $t6, 0x1c9($s0)
/* 04E9DC 8004DDDC A60F01C6 */ sh $t7, 0x1c6($s0)
/* 04E9E0 8004DDE0 3C018012 */ lui $at, %hi(D_8011D580) # $at, 0x8012
/* 04E9E4 8004DDE4 A020D580 */ sb $zero, %lo(D_8011D580)($at)
/* 04E9E8 8004DDE8 3C018012 */ lui $at, %hi(D_8011D58F) # $at, 0x8012
/* 04E9EC 8004DDEC 24020004 */ li $v0, 4
/* 04E9F0 8004DDF0 A020D58C */ sb $zero, %lo(D_8011D58C)($at)
/* 04E9F4 8004DDF4 A020D58D */ sb $zero, %lo(D_8011D58D)($at)
/* 04E9F8 8004DDF8 A020D58E */ sb $zero, %lo(D_8011D58E)($at)
/* 04E9FC 8004DDFC A020D58F */ sb $zero, %lo(D_8011D58F)($at)
/* 04EA00 8004DE00 AFA20024 */ sw $v0, 0x24($sp)
/* 04EA04 8004DE04 00002825 */ move $a1, $zero
/* 04EA08 8004DE08 0C010FB3 */ jal func_80043ECC
/* 04EA0C 8004DE0C 00003025 */ move $a2, $zero
/* 04EA10 8004DE10 8FA20024 */ lw $v0, 0x24($sp)
/* 04EA14 8004DE14 3C018012 */ lui $at, %hi(D_8011D583) # $at, 0x8012
/* 04EA18 8004DE18 A022D583 */ sb $v0, %lo(D_8011D583)($at)
/* 04EA1C 8004DE1C 3C018012 */ lui $at, %hi(D_8011D585) # $at, 0x8012
/* 04EA20 8004DE20 A020D585 */ sb $zero, %lo(D_8011D585)($at)
/* 04EA24 8004DE24 A200020A */ sb $zero, 0x20a($s0)
/* 04EA28 8004DE28 8FBF001C */ lw $ra, 0x1c($sp)
/* 04EA2C 8004DE2C 8FB00018 */ lw $s0, 0x18($sp)
/* 04EA30 8004DE30 03E00008 */ jr $ra
/* 04EA34 8004DE34 27BD0030 */ addiu $sp, $sp, 0x30
+44 -42
View File
@@ -530,7 +530,9 @@ typedef struct Object_44 {
typedef struct Object_4C {
void *unk0;
u8 pad4[0xC];
f32 x_position;
f32 y_position;
f32 z_position;
u8 unk10;
u8 unk11;
u8 unk12;
@@ -1211,54 +1213,54 @@ typedef struct ObjectTransform {
/* Size: 0x44 bytes */
typedef struct ObjectSegment {
ObjectTransform trans;
union {
struct {
s16 upper;
s16 lower;
} half;
f32 word;
} unk18;
f32 x_velocity;
f32 y_velocity;
f32 z_velocity;
f32 unk28;
union {
struct {
s16 upper;
s16 lower;
} half;
f32 word;
} unk2C;
f32 unk30;
union {
f32 unk34;
s16 levelSegmentIndex;
struct h {
s16 h0;
s16 h1;
ObjectTransform trans;
union {
struct {
s16 upper;
s16 lower;
} half;
f32 word;
} unk18;
f32 x_velocity;
f32 y_velocity;
f32 z_velocity;
f32 unk28;
union {
struct {
s16 upper;
s16 lower;
} half;
f32 word;
} unk2C;
f32 unk30;
union {
f32 unk34;
s16 levelSegmentIndex;
struct h {
s16 h0;
s16 h1;
} h;
} unk34_a;
union {
struct {
u8 upper;
u8 lower;
} half;
s16 word;
} unk38;
s8 unk3A;
s8 unk3B;
union {
Object_3C* unk3C;
f32 unk3C_f;
} unk34_a;
union {
struct {
u8 upper;
u8 lower;
} half;
s16 word;
} unk38;
s8 unk3A;
s8 unk3B;
union {
Object_3C* unk3C;
f32 unk3C_f;
struct {
u8 b0;
u8 b1;
u8 b2;
u8 b3;
} byte;
} unk3C_a;
ObjectHeader *header;
} unk3C_a;
ObjectHeader *header;
} ObjectSegment;
/* Size: 0x0630 bytes */
+114 -16
View File
@@ -155,7 +155,8 @@ s8 D_8011D553;
s32 gCurrentCarSteerVel; // Related to rotational velocity of the car.
s32 D_8011D558;
s32 D_8011D55C;
s32 D_8011D560;
s16 D_8011D560;
s16 D_8011D562;
s32 D_8011D564;
s32 D_8011D568;
s32 D_8011D56C;
@@ -169,16 +170,13 @@ s8 D_8011D582;
s8 D_8011D583;
s8 D_8011D584;
s8 D_8011D585;
s8 D_8011D586;
s8 D_8011D587;
s16 D_8011D586;
s8 D_8011D588;
s8 D_8011D589;
s8 D_8011D58A;
s8 D_8011D58B;
s8 D_8011D58C;
s8 D_8011D58D;
s8 D_8011D58E;
s8 D_8011D58F;
s8 D_8011D58B;
s8 D_8011D58C[4];
GhostHeader *gGhostData[3];
s8 D_8011D59C;
s8 D_8011D59D;
@@ -490,7 +488,107 @@ void func_8004D95C(s32 arg0, s32 arg1, Object *obj, Object_Racer *obj64) {
}
}
GLOBAL_ASM("asm/non_matchings/racer/obj_init_racer.s")
void obj_init_racer(Object* obj, LevelObjectEntry_CharacterFlag* arg1) {
Object_Racer* tempObj;
s32 player;
s32 i;
D_8011D53C = 0;
tempObj = (struct Object_Racer *) obj->unk64;
obj->segment.trans.y_rotation = arg1->unkC;
obj->segment.trans.x_rotation = arg1->unkA;
obj->segment.trans.z_rotation = arg1->unk8;
player = arg1->unkE;
tempObj->unk194 = 0;
tempObj->stretch_height = 1.0f;
tempObj->stretch_height_cap = 1.0f;
if (player >= 0 && player < 4) {
if (func_8000E158()) {
player = 1 - player;
}
tempObj->playerIndex = player;
} else {
tempObj->playerIndex = -1;
}
tempObj->unk1A0 = obj->segment.trans.y_rotation;
tempObj->unk1A4 = obj->segment.trans.z_rotation;
tempObj->unkC4 = 0.5f;
if (1);
tempObj->unk196 = tempObj->unk1A0;
tempObj->unkD8 = obj->segment.trans.x_position;
tempObj->unkDC = obj->segment.trans.y_position + 30.0f;
tempObj->unkE0 = obj->segment.trans.z_position;
tempObj->unkE4 = obj->segment.trans.x_position;
tempObj->unkE8 = obj->segment.trans.y_position + 30.0f;
tempObj->unkEC = obj->segment.trans.z_position;
tempObj->unkF0 = obj->segment.trans.x_position;
tempObj->unkF4 = obj->segment.trans.y_position + 30.0f;
tempObj->unkF8 = obj->segment.trans.z_position;
tempObj->unkFC = obj->segment.trans.x_position;
tempObj->unk100 = obj->segment.trans.y_position + 30.0f;
tempObj->unk104 = obj->segment.trans.z_position;
tempObj->prev_x_position = obj->segment.trans.x_position;
tempObj->prev_y_position = obj->segment.trans.y_position;
tempObj->prev_z_position = obj->segment.trans.z_position;
obj->unk4C->x_position = obj->segment.trans.x_position;
obj->unk4C->y_position = obj->segment.trans.y_position;
obj->unk4C->z_position = obj->segment.trans.z_position;
tempObj->unk1E2 = 3;
tempObj->unk1AA = 1;
tempObj->unk1AE = 1;
tempObj->unk1E7 = tempObj->playerIndex * 5;
tempObj->checkpoint_distance = 1.0f;
tempObj->unk1FD = 0;
tempObj->unk178 = 0;
tempObj->unk17C = 0;
tempObj->unk180 = 0;
tempObj->unk218 = 0;
tempObj->unk220 = 0;
tempObj->unk21C = 0;
if (tempObj->playerIndex != -1 && !D_8011D582) {
func_800665E8(player);
gCameraObject = func_80069CFC();
gCameraObject->trans.z_rotation = 0;
gCameraObject->trans.x_rotation = 0x400;
gCameraObject->trans.y_rotation = tempObj->unk196;
gCameraObject->unk36 = 0;
gCameraObject->unk3C = 0xFF;
gCameraObject->unk3D = 0xFF;
gCameraObject->unk3E = 0xFF;
gCameraObject->unk3F = 0xFF;
gCameraObject->unk18 = 0.0f;
func_80057A40(obj, tempObj, 1.0f);
}
if (!D_8011D582) {
D_8011D583 = 0;
D_8011D586 = 0;
D_8011D584 = 0;
}
obj->unk4C->unk14 = 5;
obj->unk4C->unk11 = 0;
obj->unk4C->unk10 = 0xF;
obj->unk4C->unk12 = 0x14;
tempObj->unk1EE = 0;
if (!D_8011D582) {
tempObj->transparency = 0xFF;
}
D_8011D560 = 0;
D_8011D544 = 300.0f;
tempObj->unk1C9 = 6;
tempObj->unk1C6 = 100;
D_8011D580 = 0;
for (i = 0; i < 4; i++) { D_8011D58C[i] = 0; }
if (tempObj);
if (tempObj);
if (tempObj);
if (tempObj);
func_80043ECC(0, 0, 0);
D_8011D583 = i;
D_8011D585 = 0;
tempObj->unk20A = 0;
}
GLOBAL_ASM("asm/non_matchings/racer/func_8004DE38.s")
void func_8004F77C(unk8004F77C *arg0) {
@@ -969,15 +1067,15 @@ void func_800580B4(Object *obj, Object_Racer *obj64, s32 arg2, f32 arg3) {
if ((D_8011D55C != -1) && (obj64->unk1D8 != 1)) {
if (arg2 != gCameraObject->unk36) {
func_80057A40(obj, obj64, arg3);
xPos = gCameraObject->x_position;
yPos = gCameraObject->y_position;
zPos = gCameraObject->z_position;
xPos = gCameraObject->trans.x_position;
yPos = gCameraObject->trans.y_position;
zPos = gCameraObject->trans.z_position;
gCameraObject->unk36 = arg2;
func_80057A40(obj, obj64, arg3);
if (D_8011D540 == 0 && D_8011D582 == 0) {
gCameraObject->unk24 = xPos - gCameraObject->x_position;
gCameraObject->unk28 = yPos - (gCameraObject->y_position + gCameraObject->unk30);
gCameraObject->unk2C = zPos - gCameraObject->z_position;
gCameraObject->x_velocity = xPos - gCameraObject->trans.x_position;
gCameraObject->y_velocity = yPos - (gCameraObject->trans.y_position + gCameraObject->unk30);
gCameraObject->z_velocity = zPos - gCameraObject->trans.z_position;
}
}
}
@@ -991,10 +1089,10 @@ GLOBAL_ASM("asm/non_matchings/racer/func_80058D5C.s")
void func_80058F44(f32 arg0, Object *arg1, Object *arg2) {
s32 temp0, temp1;
temp0 = (s32)arg0;
temp1 = func_8007066C(gCameraObject->x_position - arg1->segment.trans.x_position, gCameraObject->z_position - arg1->segment.trans.z_position);
temp1 = func_8007066C(gCameraObject->trans.x_position - arg1->segment.trans.x_position, gCameraObject->trans.z_position - arg1->segment.trans.z_position);
gCameraObject->y_rotation += (((-temp1 - gCameraObject->y_rotation) + 0x8000) * temp0) >> 4;
gCameraObject->z_rotation -= (gCameraObject->z_rotation * temp0) >> 4;
gCameraObject->unk34 = get_level_segment_index_from_position(gCameraObject->x_position, arg2->segment.unk3C_a.unk3C_f, gCameraObject->z_position);
gCameraObject->unk34 = get_level_segment_index_from_position(gCameraObject->trans.x_position, arg2->segment.unk3C_a.unk3C_f, gCameraObject->trans.z_position);
}
#else
GLOBAL_ASM("asm/non_matchings/racer/func_80058F44.s")
+17 -15
View File
@@ -5,21 +5,23 @@
#include "structs.h"
typedef struct ObjectCamera {
/* 0x0000 */ s16 y_rotation;
/* 0x0002 */ s16 x_rotation;
/* 0x0004 */ s16 z_rotation;
/* 0x0006 */ s16 unk6;
/* 0x0008 */ f32 scale;
/* 0x000C */ f32 x_position;
/* 0x0010 */ f32 y_position;
/* 0x0014 */ f32 z_position;
/* 0x0018 */ u8 pad18[0xC];
/* 0x0024 */ f32 unk24;
/* 0x0028 */ f32 unk28;
/* 0x002C */ f32 unk2C;
/* 0x0030 */ f32 unk30;
/* 0x0034 */ s16 unk34;
/* 0x0036 */ s16 unk36;
ObjectTransform trans;
f32 unk18;
f32 unk1C;
f32 unk20;
f32 x_velocity;
f32 y_velocity;
f32 z_velocity;
f32 unk30;
s16 unk34;
s16 unk36;
s16 unk38;
u8 unk3A;
u8 unk3B;
u8 unk3C;
u8 unk3D;
u8 unk3E;
u8 unk3F;
} ObjectCamera;
typedef struct unk8004F77C {