Skip to content
Merged
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
2 changes: 1 addition & 1 deletion configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -1079,7 +1079,7 @@ def MatchingFor(*versions):
[],
[
Object(Matching, "Kameda/Motor.cpp"),
Object(NonMatching, "Kameda/MotorManager.cpp"),
Object(Matching, "Kameda/MotorManager.cpp"),
Object(Matching, "Kameda/J2DManager.cpp"),
Object(Matching, "Kameda/Task.cpp"),
Object(NonMatching, "Kameda/Goal2D.cpp"),
Expand Down
41 changes: 25 additions & 16 deletions include/Kameda/MotorManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@
#define MOTORMANAGER_H

#include "JSystem/JKernel/JKRDisposer.h"

#include "Kameda/Motor.h"
#include "types.h"

class MotorManager : JKRDisposer
{ // Autogenerated
{
public:
// Global
enum MotorType
{
MotorType_0,
Expand All @@ -33,24 +32,34 @@ class MotorManager : JKRDisposer
MotorType_19,
MotorType_20,
MotorType_21,
MotorType_22
MotorType_22,
MotorType_23,
MotorType_24,
MotorType_MAX,
};

MotorManager(JKRHeap *); // 0x80130e58
virtual ~MotorManager(); // 0x80130ee0
void reset(); // 0x80130f48
void exec(); // 0x80130fc0
void setMotor(MotorType, int); // 0x8013103c
void setAwardMotor(MotorType); // 0x80131218
void setPowerMotor(int, f32, u8, u8); // 0x801312e8
MotorManager(JKRHeap *heap); // 0x80130e58
virtual ~MotorManager(); // 0x80130ee0

static MotorManager *getManager() { return mThis; };
void reset(); // 0x80130f48
void exec(); // 0x80130fc0

static void setMotor(MotorType motorType, int kart); // 0x8013103c
static void setAwardMotor(MotorType motorType); // 0x80131218
static void setPowerMotor(int kart,
f32 strength,
u8 phase1Duration,
u8 phase2Duration); // 0x801312e8

static int mCountFrame[0x19]; // 0x803fb640
static MotorManager *mThis; // 0x80416280
static MotorManager *getManager() { return mThis; };

private:
u8 _0[8];
static int mCountFrame[8][MotorType_MAX]; // 0x803fb640

static MotorManager *mThis; // 0x80416280

Motor *mMotor; // 0x18
int mKartNumber; // 0x1c
};

#endif
#endif // MOTORMANAGER_H
6 changes: 5 additions & 1 deletion include/Kameda/SequenceInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,11 @@ class SequenceInfo
KartGamePad *_18; // 18
// Size: 0x1c
} _318[2]; // 318
int _350; //

public:
int _350; // 350 (number of [human] players?)

private:
int _354; //
ERaceLevel mLevel; //
u8 _35c; //
Expand Down
115 changes: 105 additions & 10 deletions src/Kameda/MotorManager.cpp
Original file line number Diff line number Diff line change
@@ -1,21 +1,116 @@
#include "Kameda/MotorManager.h"
#include "mathHelper.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "Kameda/SequenceInfo.h"
#include "Kaneshige/RaceMgr.h"
#include "Osako/kartPad.h"
#include "mathHelper.h" // For unused data

int MotorManager::mCountFrame[8][MotorManager::MotorType_MAX];

int MotorManager::mCountFrame[0x19];
MotorManager *MotorManager::mThis;

MotorManager::MotorManager(JKRHeap *) {}
MotorManager::MotorManager(JKRHeap *heap)
{
if (!heap)
{
heap = JKRHeap::getCurrentHeap();
}

mThis = this;

mMotor = new (heap, 0) Motor(heap);
mKartNumber = RaceMgr::getManager()->getKartNumber();
}

MotorManager::~MotorManager()
{
delete mMotor;
}

void MotorManager::reset()
{
mMotor->init();

for (s32 i = 0; i < mKartNumber; ++i)
{
for (s32 j = 0; j < MotorType_MAX; ++j)
{
mCountFrame[i][j] = 0;
}
}
}

void MotorManager::exec()
{
mMotor->exec();

for (s32 i = 0; i < mKartNumber; ++i)
{
for (s32 j = 0; j < MotorType_MAX; ++j)
{
mCountFrame[i][j] += 1;
}
}
}

void MotorManager::setMotor(MotorManager::MotorType motorType, int kart)
{
#line 117
JUT_MINMAX_ASSERT(0, motorType, MotorType_MAX);
JUT_MINMAX_ASSERT(0, kart, 8);

RaceMgr *raceMgr = RaceMgr::getManager();
if (!raceMgr->isRaceEnd() && !raceMgr->getKartChecker(kart)->isDead())
{
if (mCountFrame[kart][motorType] >= 10)
{
mCountFrame[kart][motorType] = 0;

KartGamePad *kartGamePad = KartCtrl::getKartCtrl()->getPad(kart);
KartGamePad *kartGamePadCo = KartCtrl::getKartCtrl()->getCoPad(kart);

s32 patternIndex = motorType + 1;
mThis->mMotor->triggerWave(kartGamePad, patternIndex);

if ((KartCtrl::getKartCtrl()->GetGameStatus(kart) & 1) != 0)
{
mThis->mMotor->triggerWave(kartGamePadCo, patternIndex);
}
}
}
}

MotorManager::~MotorManager() {}
void MotorManager::setAwardMotor(MotorManager::MotorType motorType)
{
#line 157
JUT_MINMAX_ASSERT(0, motorType, MotorType_MAX);

void MotorManager::reset() {}
s32 patternIndex = motorType + 1;
for (s32 i = 0; i < gSequenceInfo._350; ++i)
{
mThis->mMotor->triggerWave(gpaKartPad[i], patternIndex);
}
}

void MotorManager::exec() {}
void MotorManager::setPowerMotor(int kart, f32 strength, u8 phase1Duration, u8 phase2Duration)
{
#line 176
JUT_MINMAX_ASSERT(0, kart, 8);

void MotorManager::setMotor(MotorManager::MotorType, int) {}
RaceMgr *raceMgr = RaceMgr::getManager();
if (!raceMgr->isRaceEnd() && !raceMgr->getKartChecker(kart)->isDead())
{
KartGamePad *kartGamePad = KartCtrl::getKartCtrl()->getPad(kart);
KartGamePad *kartGamePadCo = KartCtrl::getKartCtrl()->getCoPad(kart);

void MotorManager::setAwardMotor(MotorManager::MotorType) {}
mThis->mMotor->powerWave(kartGamePad, strength, phase1Duration, phase2Duration);

void MotorManager::setPowerMotor(int, f32, u8, u8) {}
if ((KartCtrl::getKartCtrl()->GetGameStatus(kart) & 1) != 0)
{
mThis->mMotor->powerWave(kartGamePadCo, strength, phase1Duration, phase2Duration);
}
}
}

#include "JSystem/JAudio/JASFakeMatch2.h"
#include "JSystem/JAudio/JASFakeMatch2.h" // For static initializer
Loading