mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-21 19:45:10 +00:00
Fix DynOS vertex offset writing
This commit is contained in:
parent
e037e3b65e
commit
cdb1bbe92a
7 changed files with 8 additions and 11 deletions
|
@ -670,14 +670,10 @@ DataNode<Collision>* DynOS_Col_LoadFromBinary(const SysPath &aPackFolder, const
|
|||
SysPath _Filename = fstring("%s/%s.col", aPackFolder.begin(), aCollisionName);
|
||||
FILE *_File = fopen(_Filename.c_str(), "rb");
|
||||
if (_File) {
|
||||
// backwards compatibility
|
||||
//long prevPos = ftell(_File);
|
||||
u8 type = ReadBytes<u8>(_File);
|
||||
//if (type != DATA_TYPE_COLLISION) { fseek(_File, prevPos, SEEK_SET); }
|
||||
if (type == DATA_TYPE_COLLISION) {
|
||||
collisionNode = DynOS_Col_Load(_File, NULL);
|
||||
}
|
||||
// DO NOT COMMIT - figure out wtf is going on
|
||||
fclose(_File);
|
||||
}
|
||||
|
||||
|
|
|
@ -394,7 +394,7 @@ static s64 ParseGfxSymbolArg(GfxData* aGfxData, DataNode<Gfx>* aNode, u64* pToke
|
|||
for (auto& _Node : aGfxData->mVertices) {
|
||||
if (_Arg == _Node->mName) {
|
||||
auto base = DynOS_Vtx_Parse(aGfxData, _Node)->mData;
|
||||
auto data = base + _Offset;
|
||||
auto data = (u8*)base + _Offset;
|
||||
if (_Offset != 0) {
|
||||
aGfxData->mPointerOffsetList.Add({ (const void*)data, (const void*)base });
|
||||
}
|
||||
|
|
|
@ -1402,7 +1402,7 @@ static LevelScript ParseLevelScriptSymbolArgInternal(GfxData* aGfxData, DataNode
|
|||
for (auto& _Node : aGfxData->mLevelScripts) {
|
||||
if (_Arg == _Node->mName) {
|
||||
auto base = DynOS_Lvl_Parse(aGfxData, _Node, false)->mData;
|
||||
auto data = base + _Offset;
|
||||
auto data = (u8*)base + _Offset;
|
||||
if (_Offset != 0) {
|
||||
aGfxData->mPointerOffsetList.Add({ data, base });
|
||||
}
|
||||
|
|
|
@ -16,6 +16,11 @@ extern "C" {
|
|||
static Movtex* ParseMovtexQCSymbolArg(GfxData* aGfxData, DataNode<MovtexQC>* aNode, u64 aTokenIndex) {
|
||||
const String& _Arg = aNode->mTokens[aTokenIndex];
|
||||
|
||||
// Other constants
|
||||
if (_Arg == "NULL") {
|
||||
return (s64)0;
|
||||
}
|
||||
|
||||
// Movtexs
|
||||
for (auto& _Node : aGfxData->mMovtexs) {
|
||||
if (_Arg == _Node->mName) {
|
||||
|
|
|
@ -154,7 +154,7 @@ static PointerData GetDataFromPointer(const void* aPtr, GfxData* aGfxData) {
|
|||
s32 _Offset = 0;
|
||||
for (auto& pair : aGfxData->mPointerOffsetList) {
|
||||
if (pair.first == aPtr) {
|
||||
_Offset = (s32)((const LevelScript*)pair.first - (const LevelScript*)pair.second);
|
||||
_Offset = (s32)((u8*)pair.first - (u8*)pair.second);
|
||||
aPtr = pair.second;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -347,6 +347,5 @@ s64 DynOS_RecursiveDescent_Parse(const char* expr, bool* success, RDConstantFunc
|
|||
s64 value = ParseExpression();
|
||||
sRdString = NULL;
|
||||
*success = !sRdError;
|
||||
//Print(">>> PARSING %s == %d :: %u", expr, value, *success);
|
||||
return value;
|
||||
}
|
||||
|
|
|
@ -515,9 +515,6 @@ void update_character_anim_offset(struct MarioState* m) {
|
|||
if (m->curAnimOffset > 40) { m->curAnimOffset = 40; }
|
||||
if (m->curAnimOffset < -40) { m->curAnimOffset = -40; }
|
||||
|
||||
//s32 animID = marioObj->header.gfx.animInfo.animID;
|
||||
//LOG_INFO(">>> [%d] : %d :: %f, %f", animID, sAnimTypes[animID], m->curAnimOffset, m->minimumBoneY);
|
||||
|
||||
marioObj->header.gfx.pos[1] = m->pos[1] + m->curAnimOffset;
|
||||
marioObj->header.gfx.node.flags |= GRAPH_RENDER_PLAYER;
|
||||
}
|
Loading…
Reference in a new issue