Skip to content

Commit d8b1fee

Browse files
committed
Updated the Player struct in mario.h to accommodate for JP
1 parent b528e94 commit d8b1fee

File tree

4 files changed

+28
-30
lines changed

4 files changed

+28
-30
lines changed

ttyd-tools/rel/include/ttyd/mario.h

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
namespace ttyd::mario {
66

7+
// The Player struct was defined using the US version, but has been adjusted to work with the JP version as well
8+
// The Player struct is also 100% identical between US and EU
79
struct Player
810
{
911
uint32_t flags1;
@@ -24,7 +26,7 @@ struct Player
2426
uint32_t wMapTime;
2527
uint8_t unk_38;
2628
int8_t wKey;
27-
uint8_t unk_3a[2];
29+
uint16_t unk_3a;
2830
int8_t characterId;
2931
int8_t colorId;
3032
uint8_t unk_3e;
@@ -66,15 +68,17 @@ struct Player
6668
float unk_184;
6769
float unk_188;
6870
float wPlayerEffectiveSpeed;
71+
#ifndef TTYD_JP
6972
float unk_190;
73+
#endif
7074
float wControlStickSensitivity;
7175
float wControlStickAngle;
7276
float unk_19c;
73-
float unk_1a0;
77+
float wPlayerAngleCurrent;
7478
float wPlayerAngle;
7579
float unk_1a8;
80+
float wPlayerDirectionCurrent;
7681
float wPlayerDirection;
77-
float unk_1b0;
7882
uint32_t unk_1b4;
7983
float wPlayerCollisionBox[3];
8084
float wPlayerCollisionRelated[3];
@@ -96,17 +100,24 @@ struct Player
96100
uint8_t prevFollowerId[2];
97101
uint8_t unk_249;
98102
uint16_t wPauseButtonBuffer;
99-
uint32_t unk_24c;
103+
uint16_t unk_24c;
104+
uint16_t unk_24e;
100105
uint16_t unk_250;
101106
uint8_t wStickDir1;
102107
uint8_t wStickDir2;
103108
uint8_t wSubStickDir1;
104109
uint8_t wSubStickDir2;
105110
uint8_t wPauseLeftTrigger;
106111
uint8_t wPauseRightTrigger;
107-
uint32_t unk_258;
112+
uint8_t unk_258;
113+
uint8_t unk_259;
114+
uint16_t unk_25a;
108115
uint32_t unk_25c;
116+
#ifdef TTYD_JP
117+
uint8_t gap_260[68];
118+
#else
109119
uint8_t gap_260[88];
120+
#endif
110121
float wMultiVal1;
111122
float wYoshiHoverHeight;
112123
float wCamVal1;
@@ -117,7 +128,11 @@ struct Player
117128
uint32_t unk_2f4;
118129
} __attribute__((__packed__));
119130

131+
#ifdef TTYD_JP
132+
static_assert(sizeof(Player) == 0x2E0);
133+
#else
120134
static_assert(sizeof(Player) == 0x2F8);
135+
#endif
121136

122137
extern "C" {
123138

ttyd-tools/rel/source/codes.cpp

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ void saveMarioAndPartnerPositions()
192192
MarioPartnerPositions.MarioPosition[0] = player->playerPosition[0]; // Mario Coordinate X
193193
MarioPartnerPositions.MarioPosition[1] = player->playerPosition[1]; // Mario Coordinate Y
194194
MarioPartnerPositions.MarioPosition[2] = player->playerPosition[2]; // Mario Coordinate Z
195-
MarioPartnerPositions.MarioPosition[3] = player->unk_1a0;
195+
MarioPartnerPositions.MarioPosition[3] = player->wPlayerAngleCurrent;
196196

197197
uint32_t PartnerPointer = reinterpret_cast<uint32_t>(getPartnerPointer());
198198
if (PartnerPointer != 0)
@@ -218,10 +218,10 @@ void loadMarioAndPartnerPositions()
218218

219219
ttyd::mario::Player *player = ttyd::mario::marioGetPtr();
220220

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->unk_1a0 = MarioPartnerPositions.MarioPosition[3];
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];
225225

226226
uint32_t PartnerPointer = reinterpret_cast<uint32_t>(getPartnerPointer());
227227
if (PartnerPointer != 0)
@@ -585,14 +585,8 @@ void bobberyEarly()
585585
player->playerPosition[0] = -1;
586586
player->playerPosition[1] = 59;
587587
player->playerPosition[2] = RopePosZ + 10;
588-
589-
#ifdef TTYD_JP
590-
player->unk_19c = 180;
588+
player->wPlayerAngleCurrent = 180;
591589
player->wPlayerDirection = 180;
592-
#else
593-
player->unk_1a0 = 180;
594-
player->unk_1b0 = 180;
595-
#endif
596590
}
597591

598592
if (!Cheat[BOBBERY_EARLY].Active)

ttyd-tools/rel/source/main.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -203,13 +203,8 @@ void *fixEvtMapBlendSetFlagCrash(void *partnerPtr)
203203
// Bring out a partner if no partner is currently out
204204
if (!partnerPtr)
205205
{
206-
#ifdef TTYD_JP
207-
uint32_t tempMarioPtr = reinterpret_cast<uint32_t>(ttyd::mario::marioGetPtr());
208-
uint8_t PreviousPartnerOut = *reinterpret_cast<uint8_t *>(tempMarioPtr + 0x243);
209-
#else
210206
ttyd::mario::Player *player = ttyd::mario::marioGetPtr();
211207
uint8_t PreviousPartnerOut = player->prevFollowerId[0];
212-
#endif
213208

214209
// Check if a partner was previously out
215210
if (PreviousPartnerOut != 0)

ttyd-tools/rel/source/menufunctions.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1751,15 +1751,9 @@ uint32_t followersOptionsButtonControls()
17511751
// Set specific bytes
17521752
if (ReturnCode >= 0)
17531753
{
1754-
#ifdef TTYD_JP
1755-
uint32_t MarioPtr = reinterpret_cast<uint32_t>(ttyd::mario::marioGetPtr());
1756-
*reinterpret_cast<uint8_t *>(MarioPtr + 0x242) = ReturnCode;
1757-
*reinterpret_cast<uint8_t *>(MarioPtr + 0x244) = NewFollower;
1758-
#else
17591754
ttyd::mario::Player *player = ttyd::mario::marioGetPtr();
1760-
player->wFollowerFlags[1] = ReturnCode; // 0x246
1761-
player->prevFollowerId[1] = NewFollower; // 0x248
1762-
#endif
1755+
player->wFollowerFlags[1] = ReturnCode;
1756+
player->prevFollowerId[1] = NewFollower;
17631757
}
17641758

17651759
closeSecondaryMenu();

0 commit comments

Comments
 (0)