Skip to content

Commit fb6fd12

Browse files
committed
Adjusted the Save and Load Coordinates codes to properly save and load Mario's and the partner's angles and directions
1 parent d8b1fee commit fb6fd12

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

ttyd-tools/rel/include/global.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -493,8 +493,8 @@ struct CheatsManageFlags
493493

494494
struct MarioPartnerPositionsStruct
495495
{
496-
float MarioPosition[4];
497-
float PartnerPosition[4];
496+
float MarioPosition[7];
497+
float PartnerPosition[7];
498498
};
499499

500500
struct SaveAnywhereStruct

ttyd-tools/rel/source/codes.cpp

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -193,14 +193,20 @@ void saveMarioAndPartnerPositions()
193193
MarioPartnerPositions.MarioPosition[1] = player->playerPosition[1]; // Mario Coordinate Y
194194
MarioPartnerPositions.MarioPosition[2] = player->playerPosition[2]; // Mario Coordinate Z
195195
MarioPartnerPositions.MarioPosition[3] = player->wPlayerAngleCurrent;
196+
MarioPartnerPositions.MarioPosition[4] = player->wPlayerAngle;
197+
MarioPartnerPositions.MarioPosition[5] = player->wPlayerDirectionCurrent;
198+
MarioPartnerPositions.MarioPosition[6] = player->wPlayerDirection;
196199

197200
uint32_t PartnerPointer = reinterpret_cast<uint32_t>(getPartnerPointer());
198-
if (PartnerPointer != 0)
201+
if (PartnerPointer)
199202
{
200203
MarioPartnerPositions.PartnerPosition[0] = *reinterpret_cast<float *>(PartnerPointer + 0x58); // Partner Coordinate X
201204
MarioPartnerPositions.PartnerPosition[1] = *reinterpret_cast<float *>(PartnerPointer + 0x5C); // Partner Coordinate Y
202205
MarioPartnerPositions.PartnerPosition[2] = *reinterpret_cast<float *>(PartnerPointer + 0x60); // Partner Coordinate Z
203-
MarioPartnerPositions.PartnerPosition[3] = *reinterpret_cast<float *>(PartnerPointer + 0x100);
206+
MarioPartnerPositions.PartnerPosition[3] = *reinterpret_cast<float *>(PartnerPointer + 0xFC); // Partner Angle Current
207+
MarioPartnerPositions.PartnerPosition[4] = *reinterpret_cast<float *>(PartnerPointer + 0x100); // Partner Angle
208+
MarioPartnerPositions.PartnerPosition[5] = *reinterpret_cast<float *>(PartnerPointer + 0x10C); // Partner Direction Current
209+
MarioPartnerPositions.PartnerPosition[6] = *reinterpret_cast<float *>(PartnerPointer + 0x110); // Partner Direction
204210
}
205211
}
206212

@@ -218,18 +224,24 @@ void loadMarioAndPartnerPositions()
218224

219225
ttyd::mario::Player *player = ttyd::mario::marioGetPtr();
220226

221-
player->playerPosition[0] = MarioPartnerPositions.MarioPosition[0]; // Mario Coordinate X
222-
player->playerPosition[1] = MarioPartnerPositions.MarioPosition[1]; // Mario Coordinate Y
223-
player->playerPosition[2] = MarioPartnerPositions.MarioPosition[2]; // Mario Coordinate Z
224-
player->wPlayerAngleCurrent = MarioPartnerPositions.MarioPosition[3];
227+
player->playerPosition[0] = MarioPartnerPositions.MarioPosition[0]; // Mario Coordinate X
228+
player->playerPosition[1] = MarioPartnerPositions.MarioPosition[1]; // Mario Coordinate Y
229+
player->playerPosition[2] = MarioPartnerPositions.MarioPosition[2]; // Mario Coordinate Z
230+
player->wPlayerAngleCurrent = MarioPartnerPositions.MarioPosition[3];
231+
player->wPlayerAngle = MarioPartnerPositions.MarioPosition[4];
232+
player->wPlayerDirectionCurrent = MarioPartnerPositions.MarioPosition[5];
233+
player->wPlayerDirection = MarioPartnerPositions.MarioPosition[6];
225234

226235
uint32_t PartnerPointer = reinterpret_cast<uint32_t>(getPartnerPointer());
227-
if (PartnerPointer != 0)
236+
if (PartnerPointer)
228237
{
229238
*reinterpret_cast<float *>(PartnerPointer + 0x58) = MarioPartnerPositions.PartnerPosition[0]; // Partner Coordinate X
230239
*reinterpret_cast<float *>(PartnerPointer + 0x5C) = MarioPartnerPositions.PartnerPosition[1]; // Partner Coordinate Y
231240
*reinterpret_cast<float *>(PartnerPointer + 0x60) = MarioPartnerPositions.PartnerPosition[2]; // Partner Coordinate Z
232-
*reinterpret_cast<float *>(PartnerPointer + 0x100) = MarioPartnerPositions.PartnerPosition[3];
241+
*reinterpret_cast<float *>(PartnerPointer + 0xFC) = MarioPartnerPositions.PartnerPosition[3]; // Partner Angle Current
242+
*reinterpret_cast<float *>(PartnerPointer + 0x100) = MarioPartnerPositions.PartnerPosition[4]; // Partner Angle
243+
*reinterpret_cast<float *>(PartnerPointer + 0x10C) = MarioPartnerPositions.PartnerPosition[5]; // Partner Direction Current
244+
*reinterpret_cast<float *>(PartnerPointer + 0x110) = MarioPartnerPositions.PartnerPosition[6]; // Partner Direction
233245
}
234246
}
235247

@@ -586,6 +598,8 @@ void bobberyEarly()
586598
player->playerPosition[1] = 59;
587599
player->playerPosition[2] = RopePosZ + 10;
588600
player->wPlayerAngleCurrent = 180;
601+
player->wPlayerAngle = 180;
602+
player->wPlayerDirectionCurrent = 180;
589603
player->wPlayerDirection = 180;
590604
}
591605

0 commit comments

Comments
 (0)