Skip to content

Commit

Permalink
BandPatchMesh and BandCharacter work (#357)
Browse files Browse the repository at this point in the history
* bandsong matched

* bandpatchmesh is tricky

* some more bandpatchmesh funcs

* bandpatchmesh pre render work

* bandpatchmesh more stuff

* bandpatchmesh got hands

* bandstardisplay work

* bandswatch work

* begin bandchar work

* whoa it's more bandchar work

* why is bandchar so big

* start bandchar handlers

* bandchar retail work

* more bandchar handlers and retail symbols

* to noone's surprise, it's more bandchar work

* updateoverlay

* bandchar stringbase additions

* onsetfilemerger work

* onsetfilemerger tweak

* match onsetfilemerger
  • Loading branch information
rjkiv authored Sep 27, 2024
1 parent 58048f5 commit 3767e23
Show file tree
Hide file tree
Showing 38 changed files with 2,777 additions and 670 deletions.
6 changes: 6 additions & 0 deletions config/SZBE69/objects.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,19 @@
"system/bandobj/ArpeggioShape.cpp": "NonMatching",
"system/bandobj/BandButton.cpp": "NonMatching",
"system/bandobj/BandCamShot.cpp": "NonMatching",
"system/bandobj/BandCharacter.cpp": "NonMatching",
"system/bandobj/BandCharDesc.cpp": "NonMatching",
"system/bandobj/BandConfiguration.cpp": "NonMatching",
"system/bandobj/BandCrowdMeter.cpp": "NonMatching",
"system/bandobj/BandDirector.cpp": "NonMatching",
"system/bandobj/BandHighlight.cpp": "NonMatching",
"system/bandobj/BandLabel.cpp": "NonMatching",
"system/bandobj/BandList.cpp": "NonMatching",
"system/bandobj/BandPatchMesh.cpp": "NonMatching",
"system/bandobj/BandScoreboard.cpp": "NonMatching",
"system/bandobj/BandSong.cpp": "NonMatching",
"system/bandobj/BandStarDisplay.cpp": "NonMatching",
"system/bandobj/BandSwatch.cpp": "NonMatching",
"system/bandobj/ChordShapeGenerator.cpp": "NonMatching",
"system/bandobj/CrowdAudio.cpp": "NonMatching",
"system/bandobj/CrowdMeterIcon.cpp": "NonMatching",
Expand Down
19 changes: 19 additions & 0 deletions config/SZBE69/splits.txt
Original file line number Diff line number Diff line change
Expand Up @@ -982,9 +982,28 @@ system/bandobj/BandLabel.cpp:
system/bandobj/BandList.cpp:
.text start:0x803B364C end:0x803BA73C

system/bandobj/BandPatchMesh.cpp:
.text start:0x803BA73C end:0x803C4DD0

system/bandobj/BandScoreboard.cpp:
.text start:0x803C4DD0 end:0x803C6DC8

system/bandobj/BandSong.cpp:
.text start:0x803C6DC8 end:0x803C711C

system/bandobj/BandStarDisplay.cpp:
.text start:0x803C711C end:0x803CA700

system/bandobj/BandSwatch.cpp:
.text start:0x803CA700 end:0x803CB898

system/bandobj/BandCharacter.cpp:
.text start:0x803CB898 end:0x803D9BAC

system/bandobj/BandCharDesc.cpp:
.text start:0x803D9BAC end:0x803DF620
.ctors start:0x807EFF88 end:0x807EFF8C

system/bandobj/ChordShapeGenerator.cpp:
.text start:0x803EEDD4 end:0x803F4E74
.ctors start:0x807EFF90 end:0x807EFF94
Expand Down
1,142 changes: 571 additions & 571 deletions config/SZBE69/symbols.txt

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion config/SZBE69_B8/objects.json
Original file line number Diff line number Diff line change
Expand Up @@ -817,7 +817,7 @@
"system/bandobj/BandPatchMesh.cpp": "NonMatching",
"system/bandobj/BandRetargetVignette.cpp": "NonMatching",
"system/bandobj/BandScoreboard.cpp": "NonMatching",
"system/bandobj/BandSong.cpp": "NonMatching",
"system/bandobj/BandSong.cpp": "Matching",
"system/bandobj/BandSongPref.cpp": "Matching",
"system/bandobj/BandStarDisplay.cpp": "NonMatching",
"system/bandobj/BandSwatch.cpp": "NonMatching",
Expand Down
10 changes: 4 additions & 6 deletions src/system/bandobj/BandCharDesc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@ void BandCharDesc::Init(){

BandCharDesc::OutfitPiece::OutfitPiece(){
mName = Symbol();
mColor0 = 0;
mColor1 = 0;
mColor2 = 0;
for(int i = 0; i < 3; i++) mColors[i] = 0;
mSaveSizeMethod = &SaveSize;
}

Expand Down Expand Up @@ -61,9 +59,9 @@ END_CUSTOM_PROPSYNC

BEGIN_CUSTOM_PROPSYNC(BandCharDesc::OutfitPiece)
SYNC_PROP_MODIFY(name, o.mName, gBandCharDescMe->SetChanged(1))
SYNC_PROP_MODIFY(color0, o.mColor0, gBandCharDescMe->SetChanged(1))
SYNC_PROP_MODIFY(color1, o.mColor1, gBandCharDescMe->SetChanged(1))
SYNC_PROP_MODIFY(color2, o.mColor2, gBandCharDescMe->SetChanged(1))
SYNC_PROP_MODIFY(color0, o.mColors[0], gBandCharDescMe->SetChanged(1))
SYNC_PROP_MODIFY(color1, o.mColors[1], gBandCharDescMe->SetChanged(1))
SYNC_PROP_MODIFY(color2, o.mColors[2], gBandCharDescMe->SetChanged(1))
END_CUSTOM_PROPSYNC

BEGIN_CUSTOM_PROPSYNC(BandCharDesc::Outfit)
Expand Down
40 changes: 31 additions & 9 deletions src/system/bandobj/BandCharDesc.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,21 @@
#include "obj/Object.h"
#include "meta/FixedSizeSaveable.h"
#include "bandobj/BandPatchMesh.h"
#include "bandobj/BandHeadShaper.h"
#include "rndobj/Tex.h"

class BandCharDesc : public virtual Hmx::Object, public FixedSizeSaveable {
public:

enum CharInstrumentType {
kGuitar,
kBass,
kDrum,
kMic,
kKeyboard,
kNumInstruments
};

class Patch : public FixedSizeSaveable {
public:
Patch();
Expand Down Expand Up @@ -33,9 +44,7 @@ class BandCharDesc : public virtual Hmx::Object, public FixedSizeSaveable {
static int SaveSize(int);

Symbol mName; // 0x8
int mColor0; // 0xc
int mColor1; // 0x10
int mColor2; // 0x14
int mColors[3]; // 0xc
};

class Head : public FixedSizeSaveable {
Expand All @@ -45,6 +54,8 @@ class BandCharDesc : public virtual Hmx::Object, public FixedSizeSaveable {
virtual void SaveFixed(FixedSizeSaveableStream&) const;
virtual void LoadFixed(FixedSizeSaveableStream&, int);

void SetShape(BandHeadShaper&);

static int SaveSize(int);

bool mHide; // 0x8
Expand Down Expand Up @@ -76,6 +87,8 @@ class BandCharDesc : public virtual Hmx::Object, public FixedSizeSaveable {
virtual void SaveFixed(FixedSizeSaveableStream&) const;
virtual void LoadFixed(FixedSizeSaveableStream&, int);

OutfitPiece* GetPiece(Symbol);

static int SaveSize(int);

OutfitPiece mEyebrows; // 0x8
Expand All @@ -99,6 +112,8 @@ class BandCharDesc : public virtual Hmx::Object, public FixedSizeSaveable {
virtual void SaveFixed(FixedSizeSaveableStream&) const;
virtual void LoadFixed(FixedSizeSaveableStream&, int);

OutfitPiece* GetPiece(Symbol);

static int SaveSize(int);

OutfitPiece mGuitar; // 0x8
Expand All @@ -119,12 +134,12 @@ class BandCharDesc : public virtual Hmx::Object, public FixedSizeSaveable {
virtual void Save(BinStream&);
virtual void Copy(const Hmx::Object*, Hmx::Object::CopyType);
virtual void Load(BinStream&);
virtual int GetPatchTex(Patch&);
virtual int GetPatchMesh(Patch&);
virtual int GetBandLogo(){ return 0; }
virtual RndTex* GetPatchTex(Patch&){ return 0; }
virtual RndMesh* GetPatchMesh(Patch&){ return 0; }
virtual RndTex* GetBandLogo(){ return 0; }
virtual void Compress(RndTex*, bool);
virtual int GetPatchDir();
virtual void AddOverlays(BandPatchMesh&);
virtual ObjectDir* GetPatchDir(){ return 0; }
virtual void AddOverlays(BandPatchMesh&){}
virtual void MiloReload(){}

void SetChanged(int);
Expand All @@ -134,9 +149,16 @@ class BandCharDesc : public virtual Hmx::Object, public FixedSizeSaveable {
void SetWeight(float);
void SetMuscle(float);
void SetSkinColor(int);
void MakeInstrumentPath(Symbol, Symbol, FilePath&);
void MakeOutfitPath(Symbol, FilePath&);
void CopyCharDesc(const BandCharDesc*);
void ComputeDeformWeights(float*) const;

DataNode ListOutfits(Symbol);

static CharInstrumentType GetInstrumentFromSym(Symbol);
static Symbol GetAnimInstrument(Symbol);
static Symbol GetInstrumentSym(int);
static class CharClip* GetDeformClip(Symbol);
static ObjectDir* GetPrefabs();
static int SaveSize(int);
Expand All @@ -157,7 +179,7 @@ class BandCharDesc : public virtual Hmx::Object, public FixedSizeSaveable {
float mHeight; // 0x218
float mWeight; // 0x21c
float mMuscle; // 0x220
int unk224; // 0x224
int unk224; // 0x224 - likely a bitfield as seen in BandCharacter methods
std::vector<Patch> mPatches; // 0x228
};

Expand Down
Loading

0 comments on commit 3767e23

Please sign in to comment.