Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 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
8 changes: 5 additions & 3 deletions config/RMCP01/module/splits.txt
Original file line number Diff line number Diff line change
Expand Up @@ -151,18 +151,20 @@ ui/MessageGroup.cpp:
.text start:0x000E8780 end:0x000E89A8
.rodata start:0x00006A28 end:0x00006A38

Page.o:
ui/Page.cpp:
.text start:0x000F15C8 end:0x000F2978
.data start:0x000079F0 end:0x00007A54

Section.o:
ui/Section.o:
.text start:0x00111958 end:0x001142DC

ui/SectionAutogens.cpp:
.text start:0x0011BFF0 end:0x00122058
.data start:0x00009C40 end:0x0000A400

SectionDirector.o:
ui/SectionManager.cpp:
.text start:0x001247CC end:0x00125B04
.bss start:0x00004758 end:0x00004760

net/MiscPacketHandler.cpp:
.text start:0x00142E54 end:0x00145484
Expand Down
34 changes: 17 additions & 17 deletions config/RMCP01/module/symbols.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2817,19 +2817,19 @@ __ct__Q24Kart15KartObjectProxyFv = .text:0x0007FDD8; // type:function size:0x44
setupSingle = .text:0x0007FE1C; // type:function size:0x3C scope:global align:4
getPos__Q24Kart15KartObjectProxyCFv = .text:0x0007FE58; // type:function size:0x18 scope:global align:4
PlayerPointers_getPlayerPhysicsHolderPosition = .text:0x0007FE70; // type:function size:0x14 scope:global align:4
various_stuff_set_player_position = .text:0x0007FE84; // type:function size:0x2C scope:global align:4
PlayerPointers_getMat = .text:0x0007FEB0; // type:function size:0x14 scope:global align:4
fn_1_7FEC4 = .text:0x0007FEC4; // type:function size:0x10
various_stuff_set_player_rotation = .text:0x0007FED4; // type:function size:0x54 scope:global align:4
PlayerPointers_getWheelCount0 = .text:0x0007FF28; // type:function size:0x10 scope:global align:4
PlayerPointers_getWheelCount1 = .text:0x0007FF38; // type:function size:0x10 scope:global align:4
fn_1_7FF48 = .text:0x0007FF48; // type:function size:0x10
fn_1_7FF58 = .text:0x0007FF58; // type:function size:0x10
fn_1_7FF68 = .text:0x0007FF68; // type:function size:0x1C
fn_1_7FF84 = .text:0x0007FF84; // type:function size:0x18
setPos__Q24Kart15KartObjectProxyFPQ23EGG8Vector3f = .text:0x0007FE84; // type:function size:0x2C scope:global align:4
getPose__Q24Kart15KartObjectProxyCFv = .text:0x0007FEB0; // type:function size:0x14 scope:global align:4
getBodyRot__Q24Kart15KartObjectProxyCFv = .text:0x0007FEC4; // type:function size:0x10
setRot__Q24Kart15KartObjectProxyFQ23EGG5Quatf = .text:0x0007FED4; // type:function size:0x54 scope:global align:4
getSuspCount__Q24Kart15KartObjectProxyFv = .text:0x0007FF28; // type:function size:0x10 scope:global align:4
getWheelCount__Q24Kart15KartObjectProxyFv = .text:0x0007FF38; // type:function size:0x10 scope:global align:4
getWheelCountRecip__Q24Kart15KartObjectProxyFv = .text:0x0007FF48; // type:function size:0x10
getWheelCountPlusOneRecip__Q24Kart15KartObjectProxyFv = .text:0x0007FF58; // type:function size:0x10
getWheelPos__Q24Kart15KartObjectProxyFUl = .text:0x0007FF68; // type:function size:0x1C
wheelIdxHasFloorCollision__Q24Kart15KartObjectProxyFUl = .text:0x0007FF84; // type:function size:0x18
fn_1_7FF9C = .text:0x0007FF9C; // type:function size:0x18
fn_1_7FFB4 = .text:0x0007FFB4; // type:function size:0x18
fn_1_7FFCC = .text:0x0007FFCC; // type:function size:0x10
setStartBoostIdx__Q24Kart15KartObjectProxyFl = .text:0x0007FFCC; // type:function size:0x10
fn_1_7FFDC = .text:0x0007FFDC; // type:function size:0x1C
kartPhysics__Q24Kart15KartObjectProxyFv = .text:0x0007FFF8; // type:function size:0x10 scope:global align:4
kartPhysics__Q24Kart15KartObjectProxyCFv = .text:0x00080008; // type:function size:0x10 scope:global align:4
Expand All @@ -2842,20 +2842,20 @@ fn_1_800C4 = .text:0x000800C4; // type:function size:0xF4
fn_1_801B8 = .text:0x000801B8; // type:function size:0x4
fn_1_801BC = .text:0x000801BC; // type:function size:0xDC
fn_1_80298 = .text:0x00080298; // type:function size:0x4
PlayerPointers_isReal = .text:0x0008029C; // type:function size:0x14 scope:global align:4
isLocal__Q24Kart15KartObjectProxyFv = .text:0x0008029C; // type:function size:0x14 scope:global align:4
isCpu__Q24Kart15KartObjectProxyCFv = .text:0x000802B0; // type:function size:0x14 scope:global align:4
PlayerPointers_isGhost = .text:0x000802C4; // type:function size:0x14 scope:global align:4
isGhost__Q24Kart15KartObjectProxyFv = .text:0x000802C4; // type:function size:0x14 scope:global align:4
PlayerModel_isMii = .text:0x000802D8; // type:function size:0x10 scope:global align:4
kartBody__Q24Kart15KartObjectProxyFv = .text:0x000802E8; // type:function size:0xC scope:global align:4
kartBody__Q24Kart15KartObjectProxyCFv = .text:0x000802F4; // type:function size:0xC scope:global align:4
kartSus__Q24Kart15KartObjectProxyFl = .text:0x00080300; // type:function size:0x14 scope:global align:4
kartSus__Q24Kart15KartObjectProxyCFl = .text:0x00080314; // type:function size:0x14 scope:global align:4
kartWheel__Q24Kart15KartObjectProxyFl = .text:0x00080328; // type:function size:0x14 scope:global align:4
kartWheel__Q24Kart15KartObjectProxyCFl = .text:0x0008033C; // type:function size:0x14 scope:global align:4
PlayerPointers_getWheelPhysicsHolder = .text:0x00080350; // type:function size:0x18 scope:global align:4
fn_1_80368 = .text:0x00080368; // type:function size:0x18
PlayerPointers_getWheelPhysics = .text:0x00080380; // type:function size:0x18 scope:global align:4
fn_1_80398 = .text:0x00080398; // type:function size:0x18
kartSusPhysics__Q24Kart15KartObjectProxyFl = .text:0x00080350; // type:function size:0x18 scope:global align:4
kartSusPhysics__Q24Kart15KartObjectProxyCFl = .text:0x00080368; // type:function size:0x18
kartWheelPhysics__Q24Kart15KartObjectProxyFl = .text:0x00080380; // type:function size:0x18 scope:global align:4
kartWheelPhysics__Q24Kart15KartObjectProxyCFl = .text:0x00080398; // type:function size:0x18
kartPhysicsEngine__Q24Kart15KartObjectProxyFv = .text:0x000803B0; // type:function size:0xC scope:global align:4
kartPhysicsEngine__Q24Kart15KartObjectProxyCFv = .text:0x000803BC; // type:function size:0xC scope:global align:4
kartMove__Q24Kart15KartObjectProxyFv = .text:0x000803C8; // type:function size:0xC scope:global align:4
Expand Down
3 changes: 3 additions & 0 deletions configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -778,6 +778,7 @@ def MatchingFor(*versions):
Object(NonMatching, "kart/KartState.cpp"),
Object(NonMatching, "kart/KartSus.cpp"),
Object(NonMatching, "kart/KartWheelPhysics.cpp"),
Object(NonMatching, "kart/KartSusPhysics.cpp"),
Object(NonMatching, "kart/KartPhysics.cpp"),
Object(Matching, "kart/KartPhysicsInstance.cpp"),
Object(NonMatching, "kart/KartDynamics.cpp"),
Expand All @@ -786,6 +787,8 @@ def MatchingFor(*versions):
Object(Matching, "ui/ControlGroup.cpp"),
Object(Matching, "ui/MessageGroup.cpp"),
Object(NonMatching, "ui/SectionAutogens.cpp"),
Object(NonMatching, "ui/SectionManager.cpp"),
Object(NonMatching, "ui/Page.cpp"),

Object(Equivalent, "enemy/AI.cpp"),
Object(Equivalent, "enemy/AITrickHandler.cpp"),
Expand Down
81 changes: 81 additions & 0 deletions src/kart/KartObjectProxy.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
#include "KartObjectProxy.hpp"
#include "egg/math/eggMatrix.hpp"
#include "host_system/SystemManager.hpp"
#include "kart/KartPart.hpp"
#include "kart/KartPhysics.hpp"
#include "kart/KartState.hpp"
#include "system/KPadController.hpp"
#include "system/RaceManager.hpp"
#include <stddef.h>

#include <kart/KartMove.hpp>
Expand Down Expand Up @@ -30,6 +37,51 @@ KartObjectProxy::KartObjectProxy() : mAccessor(nullptr) {

const EGG::Vector3f& KartObjectProxy::getPos() const { return kartDynamics()->pos; }

const EGG::Vector3f& KartObjectProxy::getPrevPos() const { return kartPhysics()->pos; }

void KartObjectProxy::setPos(const EGG::Vector3f &pos) {
kartDynamics()->pos = pos;
}

const EGG::Matrix34f& KartObjectProxy::getPose() const { return kartPhysics()->pose; }

const EGG::Matrix34f& KartObjectProxy::getBodyRot() const { return kartBody()->pose; }

void KartObjectProxy::setRot(const EGG::Quatf &rot) {
KartDynamics* dynamics =kartDynamics();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

one more indentation hiccup

Copy link
Author

@slock83 slock83 Jul 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should be fixed now

dynamics->fullRot = rot;
dynamics->mainRot = rot;
}

u16 KartObjectProxy::getSuspCount() { return kartSettings()->susCount; }
u16 KartObjectProxy::getWheelCount() { return kartSettings()->wheelCount; }
float KartObjectProxy::getWheelCountRecip() { return kartSettings()->wheelCountRecip; }
float KartObjectProxy::getWheelCountPlusOneRecip() { return kartSettings()->wheelCountPlusOneRecip; }

const EGG::Vector3f& KartObjectProxy::getWheelPos(u32 wheelIdx) {
return kartWheel(wheelIdx)->getPhysics()->wheelPos;
}

bool KartObjectProxy::wheelIdxHasFloorCollision(u32 wheelIdx) {
return kartWheel(wheelIdx)->getPhysics()->hasFloorCollision();
}

void KartObjectProxy::setBodyAngle(f32 angle) {
// TODO
//kartBody()->setAngle(angle);
}

void KartObjectProxy::setStartBoostIdx(s32 idx) {
kartState()->setStartBoostIdx(idx);
}

const EGG::Vector3f& KartObjectProxy::getWheelEdgePos(u32 wheelIdx) {
return kartWheel(wheelIdx)->getPhysics()->wheelEdgePos;
}

KartSettings* KartObjectProxy::kartSettings() { return mAccessor->kartSettings; }

const KartSettings* KartObjectProxy::kartSettings() const { return mAccessor->kartSettings; }
KartPhysics* KartObjectProxy::kartPhysics() { return mAccessor->mBody->getPhysics(); }

const KartPhysics* KartObjectProxy::kartPhysics() const { return mAccessor->mBody->getPhysics(); }
Expand All @@ -38,6 +90,22 @@ KartDynamics* KartObjectProxy::kartDynamics() { return mAccessor->mBody->getPhys

const KartDynamics* KartObjectProxy::kartDynamics() const { return mAccessor->mBody->getPhysics()->mpDynamics; }

System::KPad* KartObjectProxy::getInput() {
return System::RaceManager::spInstance->players[kartSettings()->playerIdx]->kpadPlayer;
}

bool KartObjectProxy::isLocal() {
return kartState()->on(KART_FLAG_LOCAL);
}

bool KartObjectProxy::isCpu() {
return kartState()->on(KART_FLAG_CPU);
}

bool KartObjectProxy::isGhost() {
return kartState()->on(KART_FLAG_GHOST);
}

KartBody* KartObjectProxy::kartBody() { return mAccessor->mBody; }

const KartBody* KartObjectProxy::kartBody() const { return mAccessor->mBody; }
Expand All @@ -54,6 +122,19 @@ const KartWheel* KartObjectProxy::kartWheel(s32 idx) const {
return mAccessor->mWheels[idx];
}

KartSusPhysics* KartObjectProxy::kartSusPhysics(s32 idx) { return kartSus(idx)->getPhysics(); }

const KartSusPhysics* KartObjectProxy::kartSusPhysics(s32 idx) const {
return kartSus(idx)->getPhysics();
}

KartWheelPhysics* KartObjectProxy::kartWheelPhysics(s32 idx) { return mAccessor->mWheels[idx]->getPhysics(); }

const KartWheelPhysics* KartObjectProxy::kartWheelPhysics(s32 idx) const {
return mAccessor->mWheels[idx]->getPhysics();
}


KartPhysicsEngine* KartObjectProxy::kartPhysicsEngine() { return mAccessor->mPhysicsEngine; }

const KartPhysicsEngine* KartObjectProxy::kartPhysicsEngine() const { return mAccessor->mPhysicsEngine; }
Expand Down
31 changes: 31 additions & 0 deletions src/kart/KartObjectProxy.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@

#include "KartSettings.hpp"
#include "KartHitbox.hpp"
#include "egg/math/eggMatrix.hpp"
#include "egg/math/eggQuat.hpp"
#include "kart/KartWheel.hpp"
#include "kart/KartSus.hpp"
#include "system/KPadController.hpp"

namespace Kart {

Expand All @@ -18,6 +23,8 @@ class KartPhysics;
class KartDynamics;
class KartSus;
class KartWheel;
class KartSusPhysics;
class KartWheelPhysics;
class KartPhysicsEngine;
class KartMove;
class KartSnd;
Expand Down Expand Up @@ -77,6 +84,8 @@ class KartObjectProxy {
public:
KartObjectProxy();

KartSettings* kartSettings();
const KartSettings* kartSettings() const;
KartPhysics* kartPhysics();
const KartPhysics* kartPhysics() const;
KartDynamics* kartDynamics();
Expand All @@ -87,6 +96,10 @@ class KartObjectProxy {
const KartSus* kartSus(s32 idx) const;
KartWheel* kartWheel(s32 idx);
const KartWheel* kartWheel(s32 idx) const;
KartSusPhysics* kartSusPhysics(s32 idx);
const KartSusPhysics* kartSusPhysics(s32 idx) const;
KartWheelPhysics* kartWheelPhysics(s32 idx);
const KartWheelPhysics* kartWheelPhysics(s32 idx) const;
KartPhysicsEngine* kartPhysicsEngine();
const KartPhysicsEngine* kartPhysicsEngine() const;
KartMove* kartMove();
Expand Down Expand Up @@ -135,6 +148,24 @@ class KartObjectProxy {
const KartJump* kartJump();

const EGG::Vector3f& getPos() const;
const EGG::Vector3f& getPrevPos() const;
void setPos(const EGG::Vector3f &pos);
const EGG::Matrix34f& getPose() const;
const EGG::Matrix34f& getBodyRot() const;
void setRot(const EGG::Quatf& rot);
u16 getSuspCount();
u16 getWheelCount();
float getWheelCountRecip();
float getWheelCountPlusOneRecip();
const EGG::Vector3f& getWheelPos(u32 wheelIdx);
bool wheelIdxHasFloorCollision(u32 wheelIdx);
void setBodyAngle(f32 angle);
void setStartBoostIdx(s32 idx);
const EGG::Vector3f& getWheelEdgePos(u32 wheelIdx);
System::KPad* getInput();
bool isLocal();
bool isCpu();
bool isGhost();
void getBodyForward(EGG::Vector3f& out);
s32 getHopStickX();
s32 getAppliedHopStickX();
Expand Down
10 changes: 9 additions & 1 deletion src/kart/KartPart.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,20 @@
#pragma once

#include "KartSettings.hpp"
#include "egg/math/eggMatrix.hpp"
#include "egg/math/eggVector.hpp"

namespace Kart {
class KartPart {
u8 todo[0x90];


public:
KartPart(const KartSettings& kartSettings, u32 thing);
const EGG::Matrix34f getPose() const { return pose; };

// TODO : structure is still very wrong
EGG::Vector3f pos;
EGG::Matrix34f pose;
u8 todo[0x90-0x3c];
};
}
1 change: 1 addition & 0 deletions src/kart/KartState.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ class KartState {
void setBoostRampType(s32 type) { mBoostRampType = type; }
void setJumpPadType(s32 type) { mJumpPadType = type; }
void setHalfpipeInvisibilityTimer(s32 timer) { mHalfpipeInvisibilityTimer = timer; }
void setStartBoostIdx(s32 idx) { mStartBoostIdx = idx; }

private:
RKBitField<160> mFlags;
Expand Down
10 changes: 9 additions & 1 deletion src/kart/KartSus.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,17 @@
#include <decomp.h>

#include "KartPart.hpp"
#include "kart/KartObjectProxy.hpp"

namespace Kart {
class KartSus {
class KartSusPhysics;

class KartSus: KartPart {
public:
inline const KartSusPhysics* getPhysics() const { return susPhysics; }
inline KartSusPhysics* getPhysics() { return susPhysics; }

private:
KartSusPhysics* susPhysics;
};
}