Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 31 additions & 25 deletions config/GALE01/symbols.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20079,6 +20079,7 @@ gm_803B7D74 = .rodata:0x803B7D74; // type:object size:0xC scope:global data:4byt
Ground_803B7DEC = .rodata:0x803B7DEC; // type:object size:0x20 scope:global data:4byte
Ground_803B7E0C = .rodata:0x803B7E0C; // type:object size:0x40 scope:global data:4byte
grFZeroCar_803B7E50 = .rodata:0x803B7E50; // type:object size:0x28 scope:global data:4byte
...rodata.0 = .rodata:0x803B7E50; // type:label scope:local
@260 = .rodata:0x803B7E78; // type:object size:0xC scope:local data:4byte
@261 = .rodata:0x803B7E84; // type:object size:0xC scope:local data:4byte
grCs_803B7E90 = .rodata:0x803B7E90; // type:object size:0xC scope:global data:4byte
Expand Down Expand Up @@ -20730,8 +20731,9 @@ lbl_803BF810 = .data:0x803BF810; // type:object size:0xC scope:global align:4
@1118 = .data:0x803BF81C; // type:object size:0x25 scope:local data:string
efSync_803BF848 = .data:0x803BF848; // type:object size:0x25 scope:global data:string
jumptable_803BF870 = .data:0x803BF870; // type:object size:0x160 scope:local
efAlt_803BF9D0 = .data:0x803BF9D0; // type:object size:0x25 scope:local data:string
jumptable_803BF9F8 = .data:0x803BF9F8; // type:object size:0x104 scope:local
@707 = .data:0x803BF9D0; // type:object size:0x25 scope:local data:string
...data.0 = .data:0x803BF9D0; // type:label scope:local
@711 = .data:0x803BF9F8; // type:object size:0x104 scope:local
efAsync_803BFB00 = .data:0x803BFB00; // type:object size:0x25 scope:global data:string
jumptable_803BFB28 = .data:0x803BFB28; // type:object size:0x240 scope:local
efAsync_803BFD68 = .data:0x803BFD68; // type:object size:0xD scope:global data:string
Expand Down Expand Up @@ -22533,8 +22535,8 @@ Ground_803E06C8 = .data:0x803E06C8; // type:object size:0xC scope:global
lbl_803E06D4 = .data:0x803E06D4; // type:object size:0x1A data:string
lbl_803E06F0 = .data:0x803E06F0; // type:object size:0x1A data:string
lbl_803E070C = .data:0x803E070C; // type:object size:0x24
@209 = .data:0x803E0730; // type:object size:0xC data:string
@260 = .data:0x803E073C; // type:object size:0xE data:string
@209 = .data:0x803E0730; // type:object size:0xC scope:local data:string
@258 = .data:0x803E073C; // type:object size:0xE scope:local data:string
@202 = .data:0x803E0750; // type:object size:0x9 scope:local data:string
...data.0 = .data:0x803E0750; // type:label scope:local
@203 = .data:0x803E075C; // type:object size:0x9 scope:local data:string
Expand All @@ -22560,9 +22562,12 @@ grMaterial_803E0A20 = .data:0x803E0A20; // type:object size:0x160 scope:global
@108 = .data:0x803E0B90; // type:object size:0x15 scope:local data:string
lbl_803E0BA8 = .data:0x803E0BA8; // type:object size:0x12 data:string
lbl_803E0BBC = .data:0x803E0BBC; // type:object size:0x1B data:string
grFZeroCar_803E0BD8 = .data:0x803E0BD8; // type:object size:0x188 scope:global
grIz_803E0D60 = .data:0x803E0D60; // type:object size:0x12 scope:global
grFZeroCar_803E0BD8 = .data:0x803E0BD8; // type:object size:0x168 scope:global
...data.0 = .data:0x803E0BD8; // type:label scope:local
@403 = .data:0x803E0D40; // type:object size:0xD scope:local data:string
@404 = .data:0x803E0D50; // type:object size:0x9 scope:local data:string
...data.0 = .data:0x803E0D60; // type:label scope:local
grIz_803E0D60 = .data:0x803E0D60; // type:object size:0x12 scope:global
grIz_803E0D74 = .data:0x803E0D74; // type:object size:0xDC scope:global
@207 = .data:0x803E0E50; // type:object size:0xA scope:local data:string
grIz_803E0E5C = .data:0x803E0E5C; // type:object size:0x34 scope:global
Expand Down Expand Up @@ -25430,6 +25435,7 @@ mpLib_80458888 = .bss:0x80458888; // type:object size:0x600 scope:global data:4b
mpIsland_80458E88 = .bss:0x80458E88; // type:object size:0x28 scope:global data:4byte
efLib_AllocData = .bss:0x80458EB0; // type:object size:0x2C scope:global data:byte
efLib_AnimQueue = .bss:0x80458EE0; // type:object size:0x80 scope:global
...bss.0 = .bss:0x80458EE0; // type:label scope:local
efLib_ParamTable = .bss:0x80458F60; // type:object size:0x40 scope:global data:4byte
efAsync_AllocData = .bss:0x80458FA0; // type:object size:0x2C scope:global
fighter_alloc_data = .bss:0x80458FD0; // type:object size:0x2C scope:global
Expand Down Expand Up @@ -26072,8 +26078,8 @@ mpIsland_804D3998 = .sdata:0x804D3998; // type:object size:0x6 scope:global data
@1008 = .sdata:0x804D39BC; // type:object size:0x6 scope:local align:4 data:string
efSync_804D39C8 = .sdata:0x804D39C8; // type:object size:0x7 scope:global data:string
efSync_804D39D0 = .sdata:0x804D39D0; // type:object size:0x5 scope:global data:string
efAlt_804D39D8 = .sdata:0x804D39D8; // type:object size:0x7 scope:local data:string
efAlt_804D39E0 = .sdata:0x804D39E0; // type:object size:0x5 scope:local data:string
@705 = .sdata:0x804D39D8; // type:object size:0x7 scope:local data:string
@706 = .sdata:0x804D39E0; // type:object size:0x5 scope:local data:string
efAsync_804D39E8 = .sdata:0x804D39E8; // type:object size:0x7 scope:global data:string
efAsync_804D39F0 = .sdata:0x804D39F0; // type:object size:0x5 scope:global data:string
efAsync_804D39F8 = .sdata:0x804D39F8; // type:object size:0x2 scope:global data:string
Expand Down Expand Up @@ -26458,9 +26464,9 @@ Ground_804D4514 = .sdata:0x804D4514; // type:object size:0x8 scope:global
Ground_804D451C = .sdata:0x804D451C; // type:object size:0x8 scope:global
Ground_804D4524 = .sdata:0x804D4524; // type:object size:0x6 scope:global data:string
Ground_804D452C = .sdata:0x804D452C; // type:object size:0x4 scope:global data:string
@207 = .sdata:0x804D4530; // type:object size:0x7 data:string
@208 = .sdata:0x804D4538; // type:object size:0x5 data:string
@210 = .sdata:0x804D4540; // type:object size:0x5 data:string
@207 = .sdata:0x804D4530; // type:object size:0x7 scope:local data:string
@208 = .sdata:0x804D4538; // type:object size:0x5 scope:local data:string
@210 = .sdata:0x804D4540; // type:object size:0x5 scope:local data:string
@256 = .sdata:0x804D4548; // type:object size:0x2 scope:local data:string
@296 = .sdata:0x804D454C; // type:object size:0x4 scope:local data:string
grAnime_804D4550 = .sdata:0x804D4550; // type:object size:0x8 scope:global data:string
Expand All @@ -26475,9 +26481,9 @@ grMaterial_804D456C = .sdata:0x804D456C; // type:object size:0x4 scope:global
@321 = .sdata:0x804D4584; // type:object size:0x5 scope:local data:string
lbl_804D4590 = .sdata:0x804D4590; // type:object size:0x7 data:string
grFZeroCar_804D4598 = .sdata:0x804D4598; // type:object size:0x8 scope:global data:string
grFZeroCar_804D45A0 = .sdata:0x804D45A0; // type:object size:0x7 scope:global data:string
grFZeroCar_804D45A8 = .sdata:0x804D45A8; // type:object size:0x5 scope:global data:string
grFZeroCar_804D45B0 = .sdata:0x804D45B0; // type:object size:0x2 scope:global data:string
@401 = .sdata:0x804D45A0; // type:object size:0x7 scope:local data:string
@402 = .sdata:0x804D45A8; // type:object size:0x5 scope:local data:string
@405 = .sdata:0x804D45B0; // type:object size:0x2 scope:local data:string
@340 = .sdata:0x804D45B8; // type:object size:0x7 scope:local data:string
@341 = .sdata:0x804D45C0; // type:object size:0x5 scope:local data:string
@605 = .sdata:0x804D45C8; // type:object size:0x2 scope:local data:string
Expand Down Expand Up @@ -29200,12 +29206,12 @@ efSync_804D81BC = .sdata2:0x804D81BC; // type:object size:0x4 scope:global align
efSync_804D81C0 = .sdata2:0x804D81C0; // type:object size:0x8 scope:global align:8 data:double
efSync_804D81C8 = .sdata2:0x804D81C8; // type:object size:0x4 scope:global align:4 data:float
efSync_804D81CC = .sdata2:0x804D81CC; // type:object size:0x4 scope:global align:4 data:float
efAlt_804D81D0 = .sdata2:0x804D81D0; // type:object size:0x4 scope:local align:4 data:float
efAlt_804D81D8 = .sdata2:0x804D81D8; // type:object size:0x8 scope:local align:8 data:double
efAlt_804D81E0 = .sdata2:0x804D81E0; // type:object size:0x8 scope:local align:8 data:double
efAlt_804D81E8 = .sdata2:0x804D81E8; // type:object size:0x4 scope:local align:4 data:float
efAlt_804D81EC = .sdata2:0x804D81EC; // type:object size:0x4 scope:local align:4 data:float
efAlt_804D81F0 = .sdata2:0x804D81F0; // type:object size:0x4 scope:local align:4 data:float
@702 = .sdata2:0x804D81D0; // type:object size:0x4 scope:local align:4 data:float
@703 = .sdata2:0x804D81D8; // type:object size:0x8 scope:local align:8 data:double
@704 = .sdata2:0x804D81E0; // type:object size:0x8 scope:local align:8 data:double
@708 = .sdata2:0x804D81E8; // type:object size:0x4 scope:local align:4 data:float
@709 = .sdata2:0x804D81EC; // type:object size:0x4 scope:local align:4 data:float
@710 = .sdata2:0x804D81F0; // type:object size:0x4 scope:local align:4 data:float
efAsync_804D81F8 = .sdata2:0x804D81F8; // type:object size:0x4 scope:global align:4 data:float
efAsync_804D81FC = .sdata2:0x804D81FC; // type:object size:0x4 scope:global align:4 data:float
efAsync_804D8200 = .sdata2:0x804D8200; // type:object size:0x4 scope:global align:4 data:float
Expand Down Expand Up @@ -31399,11 +31405,11 @@ grMaterial_804DAD80 = .sdata2:0x804DAD80; // type:object size:0x8 scope:global a
lbl_804DADA8 = .sdata2:0x804DADA8; // type:object size:0x4 align:4 data:float
lbl_804DADAC = .sdata2:0x804DADAC; // type:object size:0x4 align:4 data:float
lbl_804DADB0 = .sdata2:0x804DADB0; // type:object size:0x4 align:4 data:float
grFZeroCar_804DADB8 = .sdata2:0x804DADB8; // type:object size:0x4 scope:global align:4 data:float
grFZeroCar_804DADC0 = .sdata2:0x804DADC0; // type:object size:0x8 scope:global align:8 data:double
grFZeroCar_804DADC8 = .sdata2:0x804DADC8; // type:object size:0x4 scope:global align:4 data:float
grFZeroCar_804DADCC = .sdata2:0x804DADCC; // type:object size:0x4 scope:global align:4 data:float
grFZeroCar_804DADD0 = .sdata2:0x804DADD0; // type:object size:0x4 scope:global align:4 data:float
@142 = .sdata2:0x804DADB8; // type:object size:0x4 scope:local align:4 data:float
@143 = .sdata2:0x804DADC0; // type:object size:0x8 scope:local align:8 data:double
@406 = .sdata2:0x804DADC8; // type:object size:0x4 scope:local align:4 data:float
@407 = .sdata2:0x804DADCC; // type:object size:0x4 scope:local align:4 data:float
@408 = .sdata2:0x804DADD0; // type:object size:0x4 scope:local align:4 data:float
@211 = .sdata2:0x804DADD8; // type:object size:0x4 scope:local align:4 data:float
@212 = .sdata2:0x804DADDC; // type:object size:0x4 scope:local align:4 data:float
@530 = .sdata2:0x804DADE0; // type:object size:0x8 scope:local align:8 data:double
Expand Down
2 changes: 1 addition & 1 deletion configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -977,7 +977,7 @@ def MatchingFor(*versions):
Object(Matching, "melee/gr/grdynamicattr.c"),
Object(NonMatching, "melee/gr/grzakogenerator.c"),
# Individual stages
Object(NonMatching, "melee/gr/grfzerocar.c"),
Object(Matching, "melee/gr/grfzerocar.c"),
Object(Matching, "melee/gr/grizumi.c"),
Object(NonMatching, "melee/gr/grcastle.c"),
Object(NonMatching, "melee/gr/grpstadium.c"),
Expand Down
48 changes: 33 additions & 15 deletions src/melee/gr/grfzerocar.c
Original file line number Diff line number Diff line change
@@ -1,20 +1,13 @@
#include "gr/grfzerocar.h"

#include <placeholder.h>
#include <platform.h>

#include "gr/granime.h"
#include "gr/grdatfiles.h"
#include "gr/ground.h"
#include "gr/types.h"
#include "lb/lb_00F9.h"
#include "sc/types.h"

#include <dolphin/mtx.h>
#include <baselib/aobj.h>
#include <baselib/gobj.h>
#include <baselib/jobj.h>
#include <baselib/object.h>

typedef struct grFZeroCarEntry {
s16 unk0;
Expand Down Expand Up @@ -52,19 +45,31 @@ grFZeroCarEntry grFZeroCar_803E0BD8[30] = {
{ 0, 28, { 1, -1, -1, -1 } }, { 0, 29, { 1, 3, 2, 4 } },
};

static char grFZeroCar_804D4598[8] = "archive";

// For sdata2 ordering
static void fakeFunc(Vec3);
static void fakeFunc(Vec3 temp)
{
f64 f = 1.0;
temp.x = 0.0f;
temp.y = f;
}

static inline void setup_car_child(HSD_JObj* parent, s16 ext_count, s32 offset,
f32 scale_factor)
{
UnkArchiveStruct* archive;
HSD_JObj* jobj;

archive = grDatFiles_801C6330(ext_count);
HSD_ASSERT(95, archive);
HSD_ASSERTMSG(95, archive, grFZeroCar_804D4598);

jobj = Ground_801C13D0(ext_count, 0);
if (jobj != NULL) {
DynamicModelDesc* entry =
(DynamicModelDesc*) ((u8*) archive->unk4->unk8 + offset);
(DynamicModelDesc*) ((u8*) offset +
(uintptr_t) archive->unk4->unk8);
if (entry->anims != NULL) {
if (entry->matanims != NULL) {
grAnime_801C6C0C(jobj, *entry->anims, *entry->matanims, NULL);
Expand Down Expand Up @@ -96,14 +101,19 @@ void grFZeroCar_801CAFBC(HSD_GObj* gobj, void* data, s32 count, s32 mode)
HSD_JObj* child;
HSD_JObj* tra_jobj;
f32 ground_scale;
s32 offset;
s16* data_ptr;
int i;
Vec3 scl_local;
int i;
s16* data_ptr;
Vec3 trans_local;
Quaternion rot_local;

root = GET_JOBJ(gobj);
u32 pad1;
u32 pad2;
u32 pad3;
u32 pad4;
u32 pad5;
u32 pad6;

root = gobj->hsd_obj;
ground_scale = Ground_801C0498();

scl_local = grFZeroCar_803B7E50.scale;
Expand Down Expand Up @@ -153,7 +163,15 @@ void grFZeroCar_801CAFBC(HSD_GObj* gobj, void* data, s32 count, s32 mode)
rot_local = grFZeroCar_803B7E50.rotate;
HSD_JObjSetTranslate(child, &trans_local);
HSD_JObjSetRotation(child, &rot_local);
multiplyScale(tra_jobj, ground_scale);

{
Vec3 scl;
HSD_JObjGetScale(tra_jobj, &scl);
scl.x *= ground_scale;
scl.y *= ground_scale;
scl.z *= ground_scale;
HSD_JObjSetScale(tra_jobj, &scl);
}

idx = grFZeroCar_803E0BD8[i].children[0];
scale_factor = 1.0f;
Expand Down
Loading