vsGameSection matched (#120)

* utilityU.h

* Add files via upload

* Add files via upload

* Add files via upload

* More Inlines

* Add files via upload

* member renaming

* 🎉

* Should probably include types.h

* Update Radar.h

* Var Renamed

* Match rest of vsGameSection.cpp

Unlinked, needs some tweaking to link

* corrections

* Update DvdThreadCommand.h

* code works. needs data fixing

* successfully link vsGameSection

GameMessageVsBirthTekiTreasure::actVs has a compiler warning for not always returning a value

* minor edit

* Minor fixes and cleanup

Co-authored-by: HeartPiece <deancsouthwood@gmail.com>
Co-authored-by: EpochFlame <82550703+EpochFlame@users.noreply.github.com>
This commit is contained in:
Drought-Ender 2022-11-30 00:25:17 -06:00 committed by GitHub
parent 818e3197f2
commit fa50644be0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 1440 additions and 14256 deletions

File diff suppressed because it is too large Load Diff

View File

@ -44,7 +44,7 @@ lbl_80483FBC:
.4byte 0x00000000
.section .data, "wa" # 0x8049E220 - 0x804EFC20
.balign 8
.balign 32
.global lbl_804C1780
lbl_804C1780:
.4byte 0x00000000

View File

@ -129,7 +129,7 @@
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/aiRescue.cpp">aiRescue.cpp</a> | 21068 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/gameResultTexMgr.cpp">gameResultTexMgr.cpp</a> | 21289 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/vsGS_Result.cpp">vsGS_Result.cpp</a> | 21310 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/interactNavi.cpp">interactNavi.cpp</a> | 21363 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/gamePlayCommonData.cpp">gamePlayCommonData.cpp</a> | 21622 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/vsStageData.cpp">vsStageData.cpp</a> | 22549 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/singleGS_CaveResult.cpp">singleGS_CaveResult.cpp</a> | 22819 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/aiTeki.cpp">aiTeki.cpp</a> | 23946 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/singleGS_CaveResult.cpp">singleGS_CaveResult.cpp</a> | 22831 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/aiTeki.cpp">aiTeki.cpp</a> | 23946 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/pathfinder.cpp">pathfinder.cpp</a> | 26780 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/aiCrop.cpp">aiCrop.cpp</a> | 26982 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/aiTransport.cpp">aiTransport.cpp</a> | 27315 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/aiBattle.cpp">aiBattle.cpp</a> | 29689 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/singleGS_MainResult.cpp">singleGS_MainResult.cpp</a> | 29765 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/creatureStick.cpp">creatureStick.cpp</a> | 29885 |
@ -141,8 +141,6 @@
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/aiAttack.cpp">aiAttack.cpp</a> | 38730 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/collinfo.cpp">collinfo.cpp</a> | 42495 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/aiFormation.cpp">aiFormation.cpp</a> | 43415 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/gameCPlate.cpp">gameCPlate.cpp</a> | 43833 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/gameSystem.cpp">gameSystem.cpp</a> | 46374 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/gameGeneratorCache.cpp">gameGeneratorCache.cpp</a> | 46655 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/gamePlayDataMemCard.cpp">gamePlayDataMemCard.cpp</a> | 48714 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/gameCaveInfo.cpp">gameCaveInfo.cpp</a> | 49620 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/navi_demoCheck.cpp">navi_demoCheck.cpp</a> | 53983 |
### <section id="plugProjectKonoU">plugProjectKonoU</section>
| File | Size (bytes) | File | Size (bytes) |
@ -165,7 +163,7 @@
### <section id="plugProjectNishimuraU">plugProjectNishimuraU</section>
| File | Size (bytes) | File | Size (bytes) |
| ---- | ---- | ---- | ---- |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/nslibmath.cpp">nslibmath.cpp</a> | 4592 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Tadpole.cpp">Tadpole.cpp</a> | 6529 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/nslibmath.cpp">nslibmath.cpp</a> | 4592 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Tadpole.cpp">Tadpole.cpp</a> | 6532 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/TyreShadow.cpp">TyreShadow.cpp</a> | 9782 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeJointMgr.cpp">SnakeJointMgr.cpp</a> | 10097 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ContRumble.cpp">ContRumble.cpp</a> | 12392 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/QueenShadow.cpp">QueenShadow.cpp</a> | 12549 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/UmimushiShadow.cpp">UmimushiShadow.cpp</a> | 12906 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/BabyState.cpp">BabyState.cpp</a> | 13376 |
@ -175,9 +173,9 @@
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeCrowShadow.cpp">SnakeCrowShadow.cpp</a> | 19417 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/MaroFrog.cpp">MaroFrog.cpp</a> | 20927 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/RumbleMgr.cpp">RumbleMgr.cpp</a> | 21535 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ElecHiba.cpp">ElecHiba.cpp</a> | 21886 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ImomushiState.cpp">ImomushiState.cpp</a> | 22050 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/QueenState.cpp">QueenState.cpp</a> | 22706 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Demon.cpp">Demon.cpp</a> | 24834 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/OtakaraBase.cpp">OtakaraBase.cpp</a> | 28220 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Demon.cpp">Demon.cpp</a> | 24834 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/OtakaraBase.cpp">OtakaraBase.cpp</a> | 28226 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/RandMapMgr.cpp">RandMapMgr.cpp</a> | 28857 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/TankState.cpp">TankState.cpp</a> | 29311 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/IKSystemBase.cpp">IKSystemBase.cpp</a> | 30143 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Fuefuki.cpp">Fuefuki.cpp</a> | 30861 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/IKSystemBase.cpp">IKSystemBase.cpp</a> | 30143 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Fuefuki.cpp">Fuefuki.cpp</a> | 30864 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Hana.cpp">Hana.cpp</a> | 31984 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/TadpoleState.cpp">TadpoleState.cpp</a> | 34258 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeWholeState.cpp">SnakeWholeState.cpp</a> | 35172 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/IKSystemMgr.cpp">IKSystemMgr.cpp</a> | 35787 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/MapNode.cpp">MapNode.cpp</a> | 36411 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Baby.cpp">Baby.cpp</a> | 36633 |

View File

@ -1002,6 +1002,7 @@ typedef void GXDrawDoneCallback(void);
GXDrawDoneCallback* GXSetDrawDoneCallback(GXDrawDoneCallback*);
void GXSetDrawDone();
void GXDrawDone();
void GXCopyDisp(void*, GXBool); // TODO: Confirm types

View File

@ -2,6 +2,7 @@
#define _DVDTHREADCOMMAND_H
#include "JSystem/JSupport/JSUList.h"
#include "Dolphin/os.h"
#include "AppThread.h"
#include "types.h"
@ -11,22 +12,21 @@ struct JKRHeap;
struct DvdThreadCommand {
DvdThreadCommand();
~DvdThreadCommand() { }
~DvdThreadCommand() {};
u32 _00; // _00
u32 m_loadType; // _04
char* m_arcPath; // _08
JKRArchive* m_mountedArchive; // _0C
s32 _10; // _10
u32 m_modeFlags; // _14
s32 m_mode; // _18
char m_os; // _1C
u8 _1D[0x16]; // _1D
JKRHeap* m_heap; // _34
u8 _38[0x8]; // _38
s32* _40; // _40
u8 _44[0x18]; // _44
JSUPtrLink m_link; // _5C
u32 _00; // _00
u32 m_loadType; // _04
char* m_arcPath; // _08
JKRArchive* m_mountedArchive; // _0C
s32 _10; // _10
u32 m_modeFlags; // _14
s32 m_mode; // _18
char m_os; // _1C
u8 _1D[0x16]; // _1D
JKRHeap* m_heap; // _34
OSMessageQueue m_msgQueue; // _38
void* m_msgBuffer; // _58
JSULink<DvdThreadCommand> m_link; // _5C
};
struct DvdThread : public AppThread {

View File

@ -102,10 +102,10 @@ struct BaseGameSection : public BaseHIOSection {
virtual void goMainMap(ItemBigFountain::Item*); // _74 (weak)
virtual u32 getCaveID(); // _78 (weak)
virtual CourseInfo* getCurrentCourseInfo(); // _7C (weak)
virtual void challengeDisablePelplant(); // _80 (weak)
virtual bool challengeDisablePelplant(); // _80 (weak)
virtual char* getCaveFilename(); // _84 (weak)
virtual void getEditorFilename(); // _88 (weak)
virtual void getVsEditNumber(); // _8C (weak)
virtual char* getEditorFilename(); // _88 (weak)
virtual u32 getVsEditNumber(); // _8C (weak)
virtual void openContainerWindow(); // _90 (weak)
virtual void closeContainerWindow(); // _94 (weak)
virtual void playMovie_firstexperience(int, Creature*); // _98 (weak)

View File

@ -113,11 +113,14 @@ struct Item : public WorkItem<Item, FSM, State> {
{ // probably needs things in here, just an initial guess
}
virtual void constructor(); // _2C
virtual void onInit(CreatureInitArg*); // _30
virtual void doSimulation(f32); // _4C
virtual void doDirectDraw(Graphics&); // _50
virtual f32 getFaceDir(); // _64 (weak)
virtual void constructor(); // _2C
virtual void onInit(CreatureInitArg*); // _30
virtual void doSimulation(f32); // _4C
virtual void doDirectDraw(Graphics&); // _50
virtual f32 getFaceDir() // _64 (weak)
{
return m_faceDir;
}
virtual bool sound_culling(); // _104 (weak)
virtual void movieUserCommand(u32 command, MoviePlayer* curPlayer); // _130
virtual char* getCreatureName(); // _1A8 (weak)
@ -138,7 +141,7 @@ struct Item : public WorkItem<Item, FSM, State> {
// _00 = VTBL
// _00-_1EC = WorkItem
f32 _1EC; // _1EC
f32 m_faceDir; // _1EC
f32 _1F0; // _1F0
efx::TGeyserAct* m_efxGeyserAct; // _1F4
efx::TGeyserSet* m_efxGeyserSet; // _1F8

View File

@ -3,6 +3,7 @@
#include "types.h"
#include "Vector3.h"
#include "Game/enemyInfo.h"
namespace Game {
struct BaseGameSection;
@ -14,6 +15,8 @@ struct GameMessage {
virtual bool actCommon(BaseGameSection*); // _08 (weak)
virtual bool actSingle(SingleGameSection*); // _0C (weak)
virtual bool actVs(VsGameSection*); // _10 (weak)
// _00 = VTBL
};
struct GameMessagePelletBorn : public GameMessage {
@ -24,6 +27,7 @@ struct GameMessagePelletBorn : public GameMessage {
virtual bool actVs(VsGameSection*); // _10
// _00 = VTBL
Pellet* m_pellet; // _04
};
@ -35,15 +39,16 @@ struct GameMessagePelletDead : public GameMessage {
virtual bool actVs(VsGameSection*); // _10
// _00 = VTBL
Pellet* m_pellet; // _04
};
struct GameMessageVsAddEnemy : public GameMessage {
virtual bool actVs(VsGameSection*); // _10
// _00 = VTABLE
int _04; // _04
int _08; // _08
// _00 = VTBL
EnemyTypeID::EEnemyTypeID _04; // _04 (enemy ID)
int _08; // _08 (spawn num)
};
struct GameMessageVsBattleFinished : public GameMessage {
@ -56,6 +61,7 @@ struct GameMessageVsBattleFinished : public GameMessage {
struct GameMessageVsBirthTekiTreasure : public GameMessage {
virtual bool actVs(VsGameSection*); // _10
// _00 = VTBL
Vector3f m_position; // _04
int _10; // _10
bool _14; // _14
@ -64,7 +70,7 @@ struct GameMessageVsBirthTekiTreasure : public GameMessage {
struct GameMessageVsGetDoping : public GameMessage {
virtual bool actVs(VsGameSection*); // _10
// _00 = VTABLE
// _00 = VTBL
int _04; // _04, player ID?
int _08; // _08, spray type? 0 = bitter, 1 = spicy, maybe an enum?
};
@ -78,7 +84,7 @@ struct GameMessageVsGetOtakara : public GameMessage {
virtual bool actVs(VsGameSection*); // _10
// _00 = VTABLE
// _00 = VTBL
u32 _04; // _04, onyon type according to ghidra, but that enum is meant to be a short
int _08; // _08
};
@ -91,7 +97,7 @@ struct GameMessageVsGotCard : public GameMessage {
virtual bool actVs(VsGameSection*); // _10
// _00 = VTABLE
// _00 = VTBL
u32 _04; // _04, onyon type according to ghidra, but that enum is meant to be a short
};
@ -102,12 +108,16 @@ struct GameMessageVsPikminDead : public GameMessage {
struct GameMessageVsRedOrSuckStart : public GameMessage {
virtual bool actVs(VsGameSection*); // _10
int _04; // _04
u8 _08; // _08 - unknown
// _00 = VTBL
int _04; // _04
bool _08; // _08 - unknown
};
struct GameMessageVsUseCard : public GameMessage {
virtual bool actVs(VsGameSection*); // _10
// _00 = VTBL
int _04; // _04
};
} // namespace Game

View File

@ -128,7 +128,7 @@ struct ShapeMapMgr : public MapMgr {
MapCollision _38; // _38
};
extern ShapeMapMgr* mapMgr;
extern MapMgr* mapMgr;
} // namespace Game
#endif

View File

@ -73,13 +73,16 @@ typedef enum EMovieUserCommands {
} EMovieUserCommands;
struct PikiInitArg : public CreatureInitArg {
inline PikiInitArg()
inline PikiInitArg(int p1)
: m_leader(nullptr)
, _04(-1)
, _04(p1)
{
}
virtual const char* getName(); // _08 (weak)
virtual const char* getName() // _08 (weak)
{
return "PikiInitArg";
}
// _00 VTBL
int _04; // _04

View File

@ -41,7 +41,7 @@ struct TekiNode : public CNode {
int m_nodeID; // _20
};
class TekiMgr {
struct TekiMgr {
TekiMgr();
void entry(EnemyTypeID::EEnemyTypeID, int);
@ -74,7 +74,7 @@ struct CardMgr {
f32 _0C; // _0C
f32 _10; // _10
f32 _14; // _14
u8 _18[0x4]; // _18, unknown
bool _18; // _18
u32 _1C; // _1C, unknown
int _20; // _20
u8 _24[0x8]; // _24, unknown
@ -88,7 +88,7 @@ struct CardMgr {
u8 _50; // _50, unknown
u8 _51; // _51
f32 _54; // _54
u8 _58[0x4]; // _58, unknown
int _58; // _58
int m_playerIndex; // _5C
CardMgr* _60; // _60
u32 _64; // _64
@ -102,25 +102,25 @@ struct CardMgr {
void update();
void draw(Graphics&);
void stopSlot(int);
void usePlayerCard(int, TekiMgr*);
bool usePlayerCard(int, TekiMgr*);
void gotPlayerCard(int);
void initDraw();
void drawSlot(Graphics&, Vector3f&, SlotMachine&);
u32 _00; // _00, unknown
JUTTexture** _04; // _04, slot textures?
JUTTexture* _08; // _08
JUTTexture* _0C; // _0C
JUTTexture* _10; // _10
JUTTexture* _14; // _14
SlotMachine _18[2]; // _18
int _F8; // _F8
Vector3f* _FC; // _FC, array of 0x100 vectors?
Vector3f* _100; // _100, array of 0x100 vectors?
f32 _104; // _104
LightObj* m_lightObj; // _108
VsGameSection* m_section; // _10C
TekiMgr* m_tekiMgr; // _110
u32 _00; // _00, unknown
JUTTexture** _04; // _04, slot textures?
JUTTexture* _08; // _08
JUTTexture* _0C; // _0C
JUTTexture* _10; // _10
JUTTexture* _14; // _14
SlotMachine m_slotMachines[2]; // _18
int _F8; // _F8
Vector3f* _FC; // _FC, array of 0x100 vectors?
Vector3f* _100; // _100, array of 0x100 vectors?
f32 _104; // _104
LightObj* m_lightObj; // _108
VsGameSection* m_section; // _10C
TekiMgr* m_tekiMgr; // _110
};
struct StageData : public CNode {
@ -156,6 +156,8 @@ struct StageList : public CNode {
struct FSM : public StateMachine<VsGameSection> {
virtual void init(VsGameSection*); // _08
virtual void transit(VsGameSection*, int, StateArg*); // _14
void draw(VsGameSection*, Graphics&);
};
struct State : public FSMState<VsGameSection> {
@ -164,17 +166,20 @@ struct State : public FSMState<VsGameSection> {
{
}
virtual void draw(VsGameSection*, Graphics&); // _20 (weak)
virtual void pre2dDraw(Graphics&, VsGameSection*); // _24 (weak)
virtual void onOrimaDown(VsGameSection*, int); // _28 (weak)
virtual void onMovieStart(VsGameSection*, MovieConfig*, u32, u32); // _2C (weak)
virtual void onMovieDone(VsGameSection*, MovieConfig*, u32, u32); // _30 (weak)
virtual void onNextFloor(VsGameSection*, ItemHole::Item*); // _34 (weak)
virtual void on_section_fadeout(VsGameSection*); // _38 (weak)
virtual void goingToCave(VsGameSection*); // _3C (weak)
virtual void onBattleFinished(VsGameSection*, int, bool); // _40 (weak)
virtual void onRedOrBlueSuckStart(VsGameSection*, int, bool); // _44 (weak)
virtual void isCardUsable(VsGameSection*); // _48 (weak)
virtual void draw(VsGameSection*, Graphics&) { } // _20 (weak)
virtual void pre2dDraw(Graphics&, VsGameSection*) { } // _24 (weak)
virtual void onOrimaDown(VsGameSection*, int) { } // _28 (weak)
virtual void onMovieStart(VsGameSection*, MovieConfig*, u32, u32) { } // _2C (weak)
virtual void onMovieDone(VsGameSection*, MovieConfig*, u32, u32) { } // _30 (weak)
virtual void onNextFloor(VsGameSection*, ItemHole::Item*) { } // _34 (weak)
virtual void on_section_fadeout(VsGameSection*) { } // _38 (weak)
virtual bool goingToCave(VsGameSection*) { return false; } // _3C (weak)
virtual void onBattleFinished(VsGameSection*, int, bool) { } // _40 (weak)
virtual void onRedOrBlueSuckStart(VsGameSection*, int, bool) { } // _44 (weak)
virtual bool isCardUsable(VsGameSection*) { return false; } // _48 (weak)
// _00 = VTBL
// _00-_0C = FSMState
};
struct GameState : public State {
@ -190,10 +195,10 @@ struct GameState : public State {
virtual void onMovieDone(VsGameSection*, MovieConfig*, u32, u32); // _30
virtual void onNextFloor(VsGameSection*, ItemHole::Item*); // _34
virtual void on_section_fadeout(VsGameSection*); // _38 (weak)
virtual void goingToCave(VsGameSection*); // _3C
virtual bool goingToCave(VsGameSection*); // _3C
virtual void onBattleFinished(VsGameSection*, int, bool); // _40
virtual void onRedOrBlueSuckStart(VsGameSection*, int, bool); // _44
virtual void isCardUsable(VsGameSection*); // _48
virtual bool isCardUsable(VsGameSection*); // _48
virtual void drawStatus(Graphics&, VsGameSection*); // _4C
virtual void do_init(VsGameSection*); // _50
@ -203,12 +208,19 @@ struct GameState : public State {
void checkPikminZero(VsGameSection*);
void open_GameChallenge(VsGameSection*, int);
void update_GameChallenge(VsGameSection*);
// _00 = VTBL
// _00-_0C = State
u8 _0C[0x1C]; // _0C, unknown
};
struct VSState : public GameState {
VSState();
virtual void do_init(VsGameSection*); // _50
// _00 = VTBL
// _00-_0C = State
};
struct LoadArg : public StateArg {
@ -227,6 +239,8 @@ struct LoadState : public State {
void dvdLoad();
// _00 = VTBL
// _00-_0C = State
f32 _0C; // _0C
f32 _14; // _10
Controller* m_controller; // _14
@ -251,6 +265,10 @@ struct ResultState : public State {
void prepareMorimuraInfo(VsGameSection*);
void dvdload();
// _00 = VTBL
// _00-_0C = State
u8 _0C[0x30]; // _0C, unknown
};
struct TitleState : public State {
@ -264,6 +282,10 @@ struct TitleState : public State {
void dvdload();
void execChallenge(VsGameSection*);
void execVs(VsGameSection*);
// _00 = VTBL
// _00-_0C = State
u8 _0C[0x38]; // _0C, unknown
};
/////////////////////////////////////////////////////////////////
} // namespace VsGame

View File

@ -5,6 +5,12 @@
#include "Game/BaseGameSection.h"
#include "Game/ChallengeGame.h"
#include "Vector3.h"
#include "VSFifo.h"
#include "Game/VsGameSection.h"
#include "Game/Entities/ItemBigFountain.h"
#include "Game/Entities/ItemHole.h"
struct Controller;
namespace Game {
struct PikiContainer;
@ -22,10 +28,14 @@ namespace VsGame {
struct TekiMgr;
struct CardMgr;
struct StageData;
struct StageList;
struct State;
} // namespace VsGame
struct VsGameSection : public BaseGameSection {
struct DropCardArg {
f32 _00; // _00
f32 _04; // _04
};
VsGameSection(JKRHeap*, bool);
@ -40,10 +50,10 @@ struct VsGameSection : public BaseGameSection {
virtual void startMainBgm(); // _64
virtual void section_fadeout(); // _68
virtual void goNextFloor(ItemHole::Item*); // _6C
virtual void challengeDisablePelplant(); // _80 (weak)
virtual bool challengeDisablePelplant(); // _80 (weak)
virtual char* getCaveFilename(); // _84 (weak)
virtual void getEditorFilename(); // _88 (weak)
virtual void getVsEditNumber(); // _8C (weak)
virtual char* getEditorFilename(); // _88 (weak)
virtual u32 getVsEditNumber(); // _8C (weak)
virtual void onMovieStart(MovieConfig*, u32, u32); // _B0
virtual void onMovieDone(MovieConfig*, u32, u32); // _B4
virtual void gmOrimaDown(int); // _D0
@ -55,7 +65,7 @@ struct VsGameSection : public BaseGameSection {
virtual void postSetupFloatMemory(); // _124
virtual void onSetSoundScene(); // _128
virtual void onClearHeap(); // _130
virtual void player2enabled(); // _134 (weak)
virtual bool player2enabled(); // _134 (weak)
void calcVsScores();
void clearCaveMenus();
@ -66,60 +76,74 @@ struct VsGameSection : public BaseGameSection {
void createVsPikmins();
void createYellowBedamas(int);
void dropCard(DropCardArg&);
u32 getGetCherryCount(int);
void getGetDopeCount(int, int);
u32* getGetCherryCount(int);
u32* getGetDopeCount(int, int);
void initCardGeneration();
void initCardPellets();
void initPlayData();
void loadChallengeStageList();
void loadVsStageList();
void updateCardGeneration();
void updateCaveMenus();
bool updateCaveMenus();
void useCard();
u8 _174[0xA0]; // _174
// probably red and blue 2pbattle onyons
PikiContainer m_container1; // _214
PikiContainer m_container2; // _21C
char m_caveInfoFilename[128]; // _248
char m_editFilename[128]; // _2A4
u32 m_currentFloor; // _324
u32 m_editNUmber; // _328
VsGame::TekiMgr* m_tekiMgr; // _32C
VsGame::CardMgr* m_cardMgr; // _330
ChallengeGame::StageData* m_stageData; // _334
u32 m_stageNum; // _338
VsGame::StageData* m_VsStageData; // _33C
u32 m_VsStageNum; // _340
u32 m_player1Pikis; // _344
u32 m_player2Pikis; // _348
u32 m_vsWinner; // _34C
f32 _350; // _350
f32 m_pikminCountTimer; // _354
f32 _358; // _358
f32 _35C; // _35C
f32 _360; // _360
f32 _364; // _364
f32 _368; // _368
f32 _36C; // _36C
f32 _370; // _370
f32 _374; // _374
f32 _378; // _378
f32 _37C; // _37C
Pellet* m_marbleRed; // _380
Pellet* m_marbleBlue; // _384
Pellet* m_marbleYellow[7]; // _388
u32 m_dopeCounts[2][2]; // _3A4
u32 m_player2Cherries; // _3A8
u32 m_player1Cherries; // _3AC
u32 m_pokoCount; // _3B0
f32 m_timeLimit; // _3B4
u32 m_cardCount; // _3C4
u32 m_maxCherries; // _3B8
Pellet** m_cherryArray; // _3BC
u32 _3C0; // _3C0
u32 _3C4; // _3C4
u32 m_yellowMarbleCounts[2]; // _3C8
Pellet* createCardPellet();
static int mRedWinCount;
static int mBlueWinCount;
static int mDrawCount;
bool m_isVersusMode; // _174
VSFifo* m_vsFifo; // _178
StateMachine<Game::VsGameSection>* m_FSM; // _17C
VsGame::State* m_state; // _180
DvdThreadCommand m_dvdThreadCommand; // _184
f32 _1F0; // _1F0
f32 _1F4; // _1F4
u8 m_menuFlags; // _1F8
struct ItemHole::Item* m_hole; // _1FC
struct ItemBigFountain::Item* m_fountain; // _200
bool m_menuRunning; // _204
bool _205; // _205
int _208; // _208 - pikmin spawn queue
ChallengeGame::StageList* m_challengeStageList; // _20C
VsGame::StageList* m_VsStageList; // _210
PikiContainer m_container1; // _214
PikiContainer m_container2; // _21C
char m_caveInfoFilename[128]; // _248
char m_editFilename[128]; // _2A4
u32 m_currentFloor; // _324
u32 m_editNumber; // _328
VsGame::TekiMgr* m_tekiMgr; // _32C
VsGame::CardMgr* m_cardMgr; // _330
ChallengeGame::StageData* m_challengeStageData; // _334
u32 m_challengeStageNum; // _338
VsGame::StageData* m_VsStageData; // _33C
u32 m_VsStageNum; // _340
u32 m_player1Pikis; // _344
u32 m_player2Pikis; // _348
u32 m_vsWinner; // _34C
f32 m_pikminRatio; // _350
f32 m_pikminCountTimer; // _354
f32 m_redBlueYellowScore[2]; // _358
f32 m_cherryScore[2]; // _360
f32 m_maxCherryScore[2]; // _368
f32 m_yellowScore[2]; // _370
f32 m_redBlueScore[2]; // _378
Pellet* m_marbleRedBlue[2]; // _380
Pellet* m_marbleYellow[7]; // _388
u32 m_dopeCounts[2][2]; // _3A4
u32 m_player2Cherries; // _3B4
u32 m_player1Cherries; // _3B8
u32 m_pokoCount; // _3BC
f32 m_timeLimit; // _3C0
int m_cardCount; // _3C4
f32 m_spawnTimer; // _3C8
int m_maxCherries; // _3CC
Pellet** m_cherryArray; // _3D0
u32 _3D4; // _3D4 (3d8)
u32 _3D8; // _3D8 (3d4)
s32 m_yellowMarbleCounts[2]; // _3DC
};
} // namespace Game

View File

@ -8,9 +8,9 @@
#include "types.h"
#include "stream.h"
namespace Game {
struct Controller;
namespace Game {
struct RumbleData {
RumbleData();

View File

@ -135,6 +135,20 @@ struct JUTException : public JKRThread {
} \
P2ASSERTLINE(line, check##line)
#define JUTASSERTBOUNDSLINE(line, lowerLimitInclusive, var, upperLimitExclusive, ...) \
bool check##line = false; \
if (lowerLimitInclusive <= var && var < upperLimitExclusive) { \
check##line = true; \
} \
JUT_ASSERTLINE(line, check##line, __VA_ARGS__, var)
#define JUTASSERTBOUNDSINCLUSIVELINE(line, lowerLimitInclusive, var, upperLimitInclusive, ...) \
bool check##line = false; \
if (lowerLimitInclusive <= var && var <= upperLimitInclusive) { \
check##line = true; \
} \
JUT_ASSERTLINE(line, check##line, __VA_ARGS__, var)
#define P2ASSERTBOOLLINE(line, var) \
bool check##line = false; \
if (var) { \

View File

@ -10,12 +10,38 @@ namespace PSGame {
* @size{0x38}
*/
struct SceneInfo {
struct FlagDef {
u16 m_flags; // _00
enum FlagDef {
SCENEFLAG_Unk0 = 0,
SCENEFLAG_Unk1 = 1,
};
enum FlagBitShift {
SFBS_0 = 0,
SFBS_1 = 1,
};
enum GameType {
UNKNOWN_1 = 0,
COURSE_TUTORIAL,
COURSE_FOREST,
COURSE_YAKUSHIMA,
COURSE_LAST,
COURSE_TEST,
CHALLENGE_MODE,
TWO_PLAYER_BATTLE,
UNKNOWN_8,
CAVE_RESULTS,
UNKNOWN_10,
WORLD_MAP_11,
WORLD_MAP_12,
OBJECTS,
ENDING_14,
ENDING_15,
TITLE_16, // Seasons, I'm sure of it
TITLE_17,
TITLE_18,
TITLE_19,
UNKOWN_20
};
SceneInfo();
@ -27,7 +53,7 @@ struct SceneInfo {
void setStageCamera() const;
// _00 = VTBL
FlagDef m_stageFlags; // _04
u16 m_stageFlags; // _04
u8 m_gameType; // _06
u8 _07; // _07
Vector3f* _08; // _08
@ -43,6 +69,15 @@ struct SceneInfo {
* @size{0x4C}
*/
struct CaveFloorInfo : public SceneInfo {
inline CaveFloorInfo()
{
m_alphaType = 0;
m_betaType = 0;
_40 = 0;
m_caveID = 0xFFFF;
_48 = 0xFF;
_49 = 0xFF;
}
virtual bool isCaveFloor() { return true; } // _08 (weak)
virtual bool isBossFloor(); // _0C (weak)

View File

@ -110,10 +110,10 @@ struct Game2DMgr : public JKRDisposer {
void open_CaveInMenu(og::Screen::DispMemberAnaDemo&);
void check_CaveInMenu();
void open_KanketuMenu(og::Screen::DispMemberKanketuMenu&);
void open_ChallengeKanketuMenu(og::Screen::DispMemberKanketuMenu&);
void check_KanketuMenu();
void open_CaveMoreMenu(og::Screen::DispMemberCaveMore&);
void check_CaveMoreMenu();
bool open_ChallengeKanketuMenu(og::Screen::DispMemberKanketuMenu&);
int check_KanketuMenu();
bool open_CaveMoreMenu(og::Screen::DispMemberCaveMore&);
int check_CaveMoreMenu();
void open_FinalResult(kh::Screen::DispFinalResult&);
void check_FinalResult() const;
bool open_CaveResult(kh::Screen::DispCaveResult&);

View File

@ -6,18 +6,13 @@
#include "Dolphin/gx.h"
struct VSFifo {
VSFifo(unsigned long);
virtual ~VSFifo(); // _00
virtual void _04() = 0; // _04
virtual void _08() = 0; // _08
virtual void _0C() = 0; // _0C
virtual void _10() = 0; // _10
virtual void _14() = 0; // _14
virtual void _18() = 0; // _18
virtual void _1C() = 0; // _1C
VSFifo(u32);
virtual ~VSFifo(); // _08
void becomeCurrent();
void isGPActive();
static bool isGPActive();
static u8 mGpStatus[5];
@ -25,6 +20,7 @@ struct VSFifo {
GXFifoObj* m_fifo; // _04
void* m_base; // _08
u32 m_size; // _0C
u8 _10[0xC]; // _10, unknown
};
#endif
#endif

View File

@ -307,9 +307,10 @@ inline f32 sqrDistanceXZ(Vector3f& vec1, Vector3f& vec2)
inline f32 _distanceXZ(Vector3f& vec1, Vector3f& vec2)
{
f32 x = vec1.x - vec2.x;
f32 z = vec1.z - vec2.z;
f32 dist = x * x + z * z;
Vector2f vec;
vec.x = vec1.x - vec2.x;
vec.y = vec1.z - vec2.z;
f32 dist = vec.x * vec.x + vec.y * vec.y;
_sqrtf(dist, &dist);
return dist;
}

View File

@ -50,6 +50,19 @@ struct DispMemberBase {
// size 0x24
struct DispMemberAnaDemo : public DispMemberBase {
inline DispMemberAnaDemo()
: _20(0)
, m_caveOtakaraNum(24)
, m_caveOtakaraMax(69)
, _10(1)
, DispMemberBase()
{
_1F = 1;
_14 = 1;
m_caveID = 't_01';
_1C = 0;
_1D = 0;
}
virtual u32 getSize() { return sizeof(DispMemberAnaDemo); } // _08 (weak)
virtual u32 getOwnerID() { return OWNER_OGA; } // _0C (weak)
@ -120,6 +133,16 @@ struct DispMemberCave : public DispMemberBase {
// size 0x28
struct DispMemberCaveMore : public DispMemberAnaDemo {
inline DispMemberCaveMore()
{
_24 = 0;
_25 = 0;
_20 = 0;
m_caveOtakaraNum = 4;
m_caveOtakaraMax = 4;
_10 = 10;
m_caveID = '2p_c';
}
virtual u32 getSize() { return sizeof(DispMemberCaveMore); } // _08 (weak)
virtual u32 getOwnerID() { return OWNER_OGA; } // _0C (weak)
@ -287,6 +310,16 @@ struct DispMemberGround : public DispMemberBase {
// size 0x28
struct DispMemberKanketuMenu : public DispMemberAnaDemo {
inline DispMemberKanketuMenu()
{
_24 = 0;
_25 = 0;
_26 = 0;
_20 = 0;
m_caveOtakaraNum = 4;
m_caveOtakaraMax = 4;
_10 = 10;
}
virtual u32 getSize() { return sizeof(DispMemberKanketuMenu); } // _08 (weak)
virtual u32 getOwnerID() { return OWNER_OGA; } // _0C (weak)

View File

@ -34,4 +34,11 @@ inline f32 qdist3(f32 x1, f32 y1, f32 z1, f32 x2, f32 y2, f32 z2)
return dist;
}
inline float log(float& a, double b)
{
float divisor = log10(b);
float dividend = log10(a);
return dividend / divisor;
}
#endif

77
include/utilityU.h Normal file
View File

@ -0,0 +1,77 @@
#ifndef _UTILITYU_
#define _UTILITYU_
#include "types.h"
#include "PSM/DirectorMgr.h"
#include "PSM/Scene.h"
#include "PSM/WorldMapRocket.h"
#include "PSM/Cluster.h"
#include "PSM/Creature.h"
#include "JSystem/JAI/JAIStream.h"
#include "JSystem/JAI/JAISound.h"
#include "JSystem/JAI/JAISe.h"
#include "Game/EnemyBase.h"
#include "SoundID.h"
// namespace PSM {
// struct DirectorBase;
// f32 sBoss_DistMax = 4000.0f;
// f32 sBoss_ViewDist = 1300.0f;
// f32 sBoss_ViewDistVol = 0.3f;
// f32 sCamFov = 0.25f;
// }
void PSChangeBgm_ChallengeGame();
void PSCancelToPauseOffMainBgm();
PSM::ActorDirector_Battle* PSMGetBattleD();
PSSystem::DirectorBase* PSMGetBattleDirector(u8);
PSM::ActorDirector_TrackOn* PSMGetBeedamaForLugieD();
PSM::ActorDirector_TrackOn* PSMGetBeedamaForOrimerD();
PSM::DamageDirector* PSMGetDamageD();
PSM::ActorDirector_Scaled* PSMGetEventD();
PSM::SceneBase* PSMGetGameSceneA();
PSM::ActorDirector_Scaled* PSMGetGroundD();
PSM::ActorDirector_TrackOn* PSMGetIchouForLugieD();
PSM::ActorDirector_TrackOn* PSMGetIchouForOrimerD();
PSM::ActorDirector_Kehai* PSMGetKehaiD();
PSM::ActorDirector_TempoChange* PSMGetLifeD();
f64 PSMGetNoukouDist(); // { return 300.0; };
PSM::ActorDirector_TrackOn* PSMGetOtakaraEventD();
PSM::TrackOnDirector_Voting* PSMGetPikiBattleD();
PSM::PikminNumberDirector* PSMGetPikminNumD();
PSM::WorldMapRocket* PSMGetWorldMapRocket();
void PSMuteOffSE_on2D();
void PSMuteSE_on2D();
void PSPause_StartMenuOff();
void PSPause_StartMenuOn();
void PSPauseOff();
void PSPauseOn(u8, u8);
void PSPlayCaveHoleSound(::PSM::Creature*);
void PSSetCurCameraNo(u8);
void PSSetLastBeedamaDirection(bool, bool);
void PSStart2DStream(u32);
void PSStartChallengeTimeUpStream();
JAIStream* PSStartEnemyDownSmokeSE(Game::EnemyBase*, f32);
JAIStream* PSStartEnemyDownWatSE(f64, Game::EnemyBase*);
JAISound* PSStartEnemyFatalHitSE(Game::EnemyBase*, f32);
int PSStartEnemyGhostSE(Game::EnemyBase*, f32);
JAISound* PSStartSoundVec(SoundID, Vec*);
JAISe* PSStartTreasureLaderSE(f64);
JAISe* PSStartTreasureLaderNoiseSE(f64, u8, u32, u32, u8);
u8 PSStop2DStream();
// f32 sLaderNoiseFuefukiSensMax = 0.3f;
// f32 sLaderNoiseFuefukiSensMin;
// s16 sLaderNoiseFuefukiTimerCenter = 0x3C;
// s16 sLaderNoiseFuefukiTimerRandam = 0x08;
// f32 sLaderNoiseFuefukiVolumeMax = 0.5f;
// f32 sLaderNoiseFuefukiVolumeMin = 0.25f;
// s16 sLaderNoiseTimer;
// f32 sLaderNoiseVolumeExp = 7.18f;
// s16 sLaderNoiseWait;
// f32 sTreasureLader_DistanceExp = 5.0f;
// f32 sTreasureLader_MinimumVolume = 0.3f;
// f32 sTreasureLader_Pitch = 1.04f;
// f32 sTreasureLader_PitchDistance;
#endif

View File

@ -527,7 +527,7 @@ KANDO:=\
$(BUILD_DIR)/asm/plugProjectKandoU/gameSystem.o\
$(BUILD_DIR)/src/plugProjectKandoU/aiConstants.o\
$(BUILD_DIR)/asm/plugProjectKandoU/gameMapParts.o\
$(BUILD_DIR)/asm/plugProjectKandoU/vsGameSection.o\
$(BUILD_DIR)/src/plugProjectKandoU/vsGameSection.o\
$(BUILD_DIR)/asm/plugProjectKandoU/gamePlatMgr.o\
$(BUILD_DIR)/asm/plugProjectKandoU/itemGate.o\
$(BUILD_DIR)/asm/plugProjectKandoU/itemMgr.o\

View File

@ -7,138 +7,6 @@
const char gameStages[] = "gameStages";
/*
Generated from dpostproc
.section .rodata # 0x804732E0 - 0x8049E220
.global lbl_8047F8A8
lbl_8047F8A8:
.4byte 0x67616D65
.4byte 0x53746167
.4byte 0x65730000
.global lbl_8047F8B4
lbl_8047F8B4:
.4byte 0x6B656967
.4byte 0x6F5F6465
.4byte 0x5F736F78
.4byte 0x2E747874
.4byte 0x00000000
.4byte 0x6162655F
.4byte 0x666F6C64
.4byte 0x65720000
.4byte 0x636F6C6C
.4byte 0x6973696F
.4byte 0x6E000000
.4byte 0x77617465
.4byte 0x72626F78
.4byte 0x00000000
.4byte 0x73746172
.4byte 0x74616E67
.4byte 0x6C650000
.global lbl_8047F8F8
lbl_8047F8F8:
.4byte 0x67616D65
.4byte 0x53746167
.4byte 0x65732E63
.4byte 0x70700000
.global lbl_8047F908
lbl_8047F908:
.asciz "P2Assert"
.skip 3
.global lbl_8047F914
lbl_8047F914:
.4byte 0x75736572
.4byte 0x2F416265
.4byte 0x2F737461
.4byte 0x6765732E
.4byte 0x74787400
.4byte 0x53656C65
.4byte 0x63742043
.4byte 0x6F757273
.4byte 0x65000000
.4byte 0x2573203A
.4byte 0x20256420
.4byte 0x63617665
.4byte 0x730A0000
.4byte 0x5B25735D
.4byte 0x2025642F
.4byte 0x25640000
.4byte 0x00000000
.section .data, "wa" # 0x8049E220 - 0x804EFC20
.global __vt__Q24Game10CourseInfo
__vt__Q24Game10CourseInfo:
.4byte 0
.4byte 0
.4byte __dt__Q24Game10CourseInfoFv
.4byte getChildCount__5CNodeFv
.global __vt__Q24Game8LimitGen
__vt__Q24Game8LimitGen:
.4byte 0
.4byte 0
.4byte __dt__Q24Game8LimitGenFv
.4byte getChildCount__5CNodeFv
.global __vt__Q24Game11CaveOtakara
__vt__Q24Game11CaveOtakara:
.4byte 0
.4byte 0
.4byte __dt__Q24Game11CaveOtakaraFv
.4byte getChildCount__5CNodeFv
.section .sbss # 0x80514D80 - 0x80516360
.global stageList__4Game
stageList__4Game:
.skip 0x8
.section .sdata2, "a" # 0x80516360 - 0x80520E40
.global lbl_805192C8
lbl_805192C8:
.4byte 0x6E6F6E61
.4byte 0x6D650000
.global lbl_805192D0
lbl_805192D0:
.4byte 0x00000000
.global lbl_805192D4
lbl_805192D4:
.4byte 0x6E616D65
.4byte 0x00000000
.global lbl_805192DC
lbl_805192DC:
.4byte 0x666F6C64
.4byte 0x65720000
.global lbl_805192E4
lbl_805192E4:
.4byte 0x6D6F6465
.4byte 0x6C000000
.global lbl_805192EC
lbl_805192EC:
.4byte 0x6D617063
.4byte 0x6F646500
.global lbl_805192F4
lbl_805192F4:
.4byte 0x6661726D
.4byte 0x00000000
.global lbl_805192FC
lbl_805192FC:
.4byte 0x726F7574
.4byte 0x65000000
.global lbl_80519304
lbl_80519304:
.4byte 0x73746172
.4byte 0x74000000
.global lbl_8051930C
lbl_8051930C:
.4byte 0x40490FDB
.global lbl_80519310
lbl_80519310:
.4byte 0x3BB60B61
.global lbl_80519314
lbl_80519314:
.4byte 0x25732F25
.4byte 0x73000000
.4byte 0x00000000
*/
namespace Game {
Stages* stageList;
@ -590,9 +458,9 @@ void Stages::createMapMgr(Game::CourseInfo* info, Game::RouteMgr* routeMgr)
sprintf(routePathTxt, "%s/%s", info->m_abeFolder, info->m_routePath);
}
mapMgr = new ShapeMapMgr;
mapMgr->m_routeMgr = routeMgr;
mapMgr->m_courseInfo = info;
mapMgr = new ShapeMapMgr;
static_cast<ShapeMapMgr*>(mapMgr)->m_routeMgr = routeMgr;
static_cast<ShapeMapMgr*>(mapMgr)->m_courseInfo = info;
ShapeMapMgr::LoadArg loadarg(info->m_modelPath ? modelPathTxt : nullptr, info->m_collisionPath ? collPathTxt : nullptr,
info->m_routePath ? routePathTxt : nullptr);
@ -603,7 +471,7 @@ void Stages::createMapMgr(Game::CourseInfo* info, Game::RouteMgr* routeMgr)
loadarg.m_waterboxPath = info->m_waterboxPath ? wboxPathTxt : nullptr;
loadarg.m_mapcodePath = info->m_mapcodePath ? codePathTxt : nullptr;
mapMgr->load(loadarg);
static_cast<ShapeMapMgr*>(mapMgr)->load(loadarg);
}
} // namespace Game

View File

@ -82,7 +82,7 @@ void LoadState::exec(VsGameSection* section)
floor._08 = section->getCurrFloor() + 1;
ID32 id;
if (gameSystem->isChallengeMode()) {
sprintf(id.getStr(), "c_%02d", section->m_stageData->m_stageIndex);
sprintf(id.getStr(), "c_%02d", section->m_challengeStageData->m_stageIndex);
} else {
sprintf(id.getStr(), "vs%02d", section->m_VsStageData->m_index2D);
}

File diff suppressed because it is too large Load Diff

View File

@ -136,7 +136,7 @@ void Obj::birthChildren(EnemyBirthArg& birthArg)
f32 modifier = 2.5f * i + 17.5f;
Vector3f bulbminPos = Vector3f(modifier * vec.x, 0.0f, modifier * vec.z);
Piki* bulbmin = pikiMgr->birth();
PikiInitArg initArg;
PikiInitArg initArg(-1);
initArg.m_leader = this;
if (bulbmin) {

View File

@ -251,3 +251,5 @@ You have 1047 out of 10000 Pokos and 49 out of 201 treasures.",2022-11-21 23:54:
You have 1054 out of 10000 Pokos and 49 out of 201 treasures.",2022-11-25 21:35:18.777680
1128,525148,0.11287795936334998,50,179985,0.2524843727204372,"
You have 1128 out of 10000 Pokos and 50 out of 201 treasures.",2022-11-28 20:41:36.228368
1162,540984,0.11628182906194544,51,181194,0.25418036742343475,"
You have 1162 out of 10000 Pokos and 51 out of 201 treasures.",2022-11-30 00:10:07.226352

1 code_count_in_pokos code_completion_in_bytes code_completion_in_percentage data_count_in_treasures data_completion_in_bytes data_completion_in_percentage sentence created_at
251
252
253
254
255