Skip to content

Commit

Permalink
finish SceneFunction.o
Browse files Browse the repository at this point in the history
  • Loading branch information
shibbo committed Sep 22, 2024
1 parent 895c4cc commit d1f57b3
Show file tree
Hide file tree
Showing 11 changed files with 184 additions and 94 deletions.
22 changes: 11 additions & 11 deletions csv/Scene.csv
Original file line number Diff line number Diff line change
Expand Up @@ -324,15 +324,15 @@ createScene<9GameScene>__26@unnamed@SceneFactory_cpp@Fv_P5Scene,SceneFactory.o,S
createScene<17IntermissionScene>__26@unnamed@SceneFactory_cpp@Fv_P5Scene,SceneFactory.o,Scene.a,false
createScene<9LogoScene>__26@unnamed@SceneFactory_cpp@Fv_P5Scene,SceneFactory.o,Scene.a,false
createScene__2MRFPCc,SceneFactory.o,Scene.a,false
startStageFileLoad__13SceneFunctionFv,SceneFunction.o,Scene.a,false
waitDoneStageFileLoad__13SceneFunctionFv,SceneFunction.o,Scene.a,false
startActorFileLoadCommon__13SceneFunctionFv,SceneFunction.o,Scene.a,false
startActorFileLoadScenario__13SceneFunctionFv,SceneFunction.o,Scene.a,false
startActorPlacement__13SceneFunctionFv,SceneFunction.o,Scene.a,false
initAfterScenarioSelected__13SceneFunctionFv,SceneFunction.o,Scene.a,false
initForNameObj__13SceneFunctionFv,SceneFunction.o,Scene.a,false
initForLiveActor__13SceneFunctionFv,SceneFunction.o,Scene.a,false
initEffectSystem__13SceneFunctionFUlUl,SceneFunction.o,Scene.a,false
startStageFileLoad__13SceneFunctionFv,SceneFunction.o,Scene.a,true
waitDoneStageFileLoad__13SceneFunctionFv,SceneFunction.o,Scene.a,true
startActorFileLoadCommon__13SceneFunctionFv,SceneFunction.o,Scene.a,true
startActorFileLoadScenario__13SceneFunctionFv,SceneFunction.o,Scene.a,true
startActorPlacement__13SceneFunctionFv,SceneFunction.o,Scene.a,true
initAfterScenarioSelected__13SceneFunctionFv,SceneFunction.o,Scene.a,true
initForNameObj__13SceneFunctionFv,SceneFunction.o,Scene.a,true
initForLiveActor__13SceneFunctionFv,SceneFunction.o,Scene.a,true
initEffectSystem__13SceneFunctionFUlUl,SceneFunction.o,Scene.a,true
allocateDrawBufferActorList__13SceneFunctionFv,SceneFunction.o,Scene.a,true
execute__12CategoryListFQ22MR12MovementType,SceneFunction.o,Scene.a,true
execute__12CategoryListFQ22MR12CalcAnimType,SceneFunction.o,Scene.a,true
Expand All @@ -342,8 +342,8 @@ entryDrawBuffer3D__12CategoryListFv,SceneFunction.o,Scene.a,true
entryDrawBufferMirror__12CategoryListFv,SceneFunction.o,Scene.a,true
drawOpa__12CategoryListFQ22MR14DrawBufferType,SceneFunction.o,Scene.a,true
drawXlu__12CategoryListFQ22MR14DrawBufferType,SceneFunction.o,Scene.a,true
requestMovementOn__12CategoryListFQ22MR12MovementType,SceneFunction.o,Scene.a,false
requestMovementOff__12CategoryListFQ22MR12MovementType,SceneFunction.o,Scene.a,false
requestMovementOn__12CategoryListFQ22MR12MovementType,SceneFunction.o,Scene.a,true
requestMovementOff__12CategoryListFQ22MR12MovementType,SceneFunction.o,Scene.a,true
createHioBasicNode__13SceneFunctionFP5Scene,SceneFunction.o,Scene.a,true
__ct__14SceneObjHolderFv,SceneObjHolder.o,Scene.a,true
create__14SceneObjHolderFi,SceneObjHolder.o,Scene.a,true
Expand Down
2 changes: 1 addition & 1 deletion data/Game.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"label": "Game",
"message": "16.547%",
"message": "16.562%",
"color": "blue"
}
2 changes: 1 addition & 1 deletion data/json/Scene.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"label": "Scene",
"message": "18.242%",
"message": "19.62%",
"color": "yellow"
}
2 changes: 1 addition & 1 deletion docs/PROGRESS.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
| [Player](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/Player.md) | 7.8301638397445155% |
| [RhythmLib](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/RhythmLib.md) | 1.2661566868900025% |
| [Ride](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/Ride.md) | 6.181993549748319% |
| [Scene](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/Scene.md) | 18.242740134028296% |
| [Scene](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/Scene.md) | 19.62025316455696% |
| [Screen](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/Screen.md) | 8.406622845419024% |
| [Speaker](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/Speaker.md) | 54.75241889584519% |
| [System](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/System.md) | 14.730098411770436% |
Expand Down
2 changes: 1 addition & 1 deletion docs/lib/Game/Scene.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
| [SceneDataInitializer.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/Scene/SceneDataInitializer.md) | 100.0% | 9 / 9 | 100.0% | :white_check_mark:
| [SceneExecutor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/Scene/SceneExecutor.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [SceneFactory.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/Scene/SceneFactory.md) | 0.0% | 0 / 4 | 0.0% | :x:
| [SceneFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/Scene/SceneFunction.md) | 44.98141263940521% | 10 / 21 | 47.61904761904761% | :eight_pointed_black_star:
| [SceneFunction.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/Scene/SceneFunction.md) | 100.0% | 21 / 21 | 100.0% | :white_check_mark:
| [SceneObjHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/Scene/SceneObjHolder.md) | 5.683060109289618% | 5 / 9 | 55.55555555555556% | :eight_pointed_black_star:
| [ScenePlayingResult.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/Scene/ScenePlayingResult.md) | 0.0% | 0 / 8 | 0.0% | :x:
| [SceneNameObjListExecutor.o](https://github.com/shibbo/Petari/blob/master/docs/lib/Game/Scene/SceneNameObjListExecutor.md) | 100.0% | 5 / 5 | 100.0% | :white_check_mark:
Expand Down
24 changes: 12 additions & 12 deletions docs/lib/Game/Scene/SceneFunction.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@
| :white_check_mark: | Function is completed.


# 10 / 21 Completed -- (47.61904761904761%)
# 21 / 21 Completed -- (100.0%)
# SceneFunction.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `startStageFileLoad__13SceneFunctionFv` | :x: |
| `waitDoneStageFileLoad__13SceneFunctionFv` | :x: |
| `startActorFileLoadCommon__13SceneFunctionFv` | :x: |
| `startActorFileLoadScenario__13SceneFunctionFv` | :x: |
| `startActorPlacement__13SceneFunctionFv` | :x: |
| `initAfterScenarioSelected__13SceneFunctionFv` | :x: |
| `initForNameObj__13SceneFunctionFv` | :x: |
| `initForLiveActor__13SceneFunctionFv` | :x: |
| `initEffectSystem__13SceneFunctionFUlUl` | :x: |
| `startStageFileLoad__13SceneFunctionFv` | :white_check_mark: |
| `waitDoneStageFileLoad__13SceneFunctionFv` | :white_check_mark: |
| `startActorFileLoadCommon__13SceneFunctionFv` | :white_check_mark: |
| `startActorFileLoadScenario__13SceneFunctionFv` | :white_check_mark: |
| `startActorPlacement__13SceneFunctionFv` | :white_check_mark: |
| `initAfterScenarioSelected__13SceneFunctionFv` | :white_check_mark: |
| `initForNameObj__13SceneFunctionFv` | :white_check_mark: |
| `initForLiveActor__13SceneFunctionFv` | :white_check_mark: |
| `initEffectSystem__13SceneFunctionFUlUl` | :white_check_mark: |
| `allocateDrawBufferActorList__13SceneFunctionFv` | :white_check_mark: |
| `execute__12CategoryListFQ22MR12MovementType` | :white_check_mark: |
| `execute__12CategoryListFQ22MR12CalcAnimType` | :white_check_mark: |
Expand All @@ -27,6 +27,6 @@
| `entryDrawBufferMirror__12CategoryListFv` | :white_check_mark: |
| `drawOpa__12CategoryListFQ22MR14DrawBufferType` | :white_check_mark: |
| `drawXlu__12CategoryListFQ22MR14DrawBufferType` | :white_check_mark: |
| `requestMovementOn__12CategoryListFQ22MR12MovementType` | :x: |
| `requestMovementOff__12CategoryListFQ22MR12MovementType` | :x: |
| `requestMovementOn__12CategoryListFQ22MR12MovementType` | :white_check_mark: |
| `requestMovementOff__12CategoryListFQ22MR12MovementType` | :white_check_mark: |
| `createHioBasicNode__13SceneFunctionFP5Scene` | :white_check_mark: |
25 changes: 16 additions & 9 deletions include/Game/Effect/EffectSystem.hpp
Original file line number Diff line number Diff line change
@@ -1,27 +1,34 @@
#pragma once

#include "Game/NameObj/NameObj.hpp"
#include <revolution.h>
#include <JSystem/JParticle/JPAEmitterManager.hpp>
#include <revolution.h>
#include "Game/NameObj/NameObj.hpp"

class AutoEffectGroupHolder;
class ParticleEmitter;
class SingleEmitter;
class ParticleCalcExecutor;
class ParticleDrawExecutor;
class ParticleEmitterHolder;
class ParticleResourceHolder;

class EffectSystem : public NameObj {
public:
EffectSystem(const char *, bool);
EffectSystem(const char*, bool);

ParticleEmitter* createEmitter(u16, u8, u8);
void forceDeleteEmitter(ParticleEmitter *) const;
void forceDeleteSingleEmitter(SingleEmitter *) const;
void forceDeleteEmitter(ParticleEmitter*) const;
void forceDeleteSingleEmitter(SingleEmitter*) const;

void entry(ParticleResourceHolder*, u32, u32);

u32 _C;
ParticleEmitterHolder* mEmitterHolder; // 0x10
ParticleDrawExecutor* mDrawExec; // 0x14
ParticleCalcExecutor* mCalcExec; // 0x18
AutoEffectGroupHolder* mGroupHolder; // 0x1C
ParticleEmitterHolder* mEmitterHolder; // 0x10
ParticleDrawExecutor* mDrawExec; // 0x14
ParticleCalcExecutor* mCalcExec; // 0x18
AutoEffectGroupHolder* mGroupHolder; // 0x1C
};

namespace MR {
EffectSystem* getEffectSystem();
};
4 changes: 3 additions & 1 deletion include/Game/Scene/SceneFunction.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#pragma once

#include <revolution.h>

namespace MR {
/* thanks to https://github.com/magcius/noclip.website/blob/master/src/SuperMarioGalaxy/NameObj.ts */
enum MovementType {
Expand Down Expand Up @@ -200,7 +202,7 @@ class SceneFunction {
static void initAfterScenarioSelected();
static void initForNameObj();
static void initForLiveActor();
static void initEffectSystem();
static void initEffectSystem(u32, u32);
static void allocateDrawBufferActorList();
static void createHioBasicNode(Scene*);
};
Expand Down
101 changes: 52 additions & 49 deletions include/Game/Scene/SceneObjHolder.hpp
Original file line number Diff line number Diff line change
@@ -1,52 +1,55 @@
#pragma once

#define SceneObj_SensorHitChecker 0x0
#define SceneObj_CollisionDirector 0x1
#define SceneObj_ClippingDirector 0x2
#define SceneObj_DemoDirector 0x3
#define SceneObj_EventDirector 0x4
#define SceneObj_EffectSystem 0x5
#define SceneObj_LightDirector 0x6
#define SceneObj_SceneDataInitializer 0x7
#define SceneObj_StageDataHolder 0x8
#define SceneObj_MessageSensorHolder 0x9
#define SceneObj_StageSwitchContainer 0xA
#define SceneObj_SwitchWatcherHolder 0xB
#define SceneObj_SleepControllerHolder 0xC
#define SceneObj_AreaObjContainer 0xD
#define SceneObj_MarioHolder 0x14
#define SceneObj_MirrorCamera 0x16
#define SceneObj_CameraContext 0x17
#define SceneObj_TalkDirector 0x19
#define SceneObj_StopSceneController 0x1B
#define SceneObj_SceneObjMovementCtrl 0x1C
#define SceneObj_PlayerActionGuidance 0x23
#define SceneObj_PlacementStateChecker 0x27
#define SceneObj_NamePosHolder 0x28
#define SceneObj_NPCDirector 0x29
#define SceneObj_AllLiveActorGroup 0x30
#define SceneObj_PlanetGravityManager 0x32
#define SceneObj_PurpleCoinHolder 0x37
#define SceneObj_CoinRotater 0x38
#define SceneObj_AirBubbleHolder 0x39
#define SceneObj_BigFanHolder 0x3A
#define SceneObj_ShadowControllerHolder 0x44
#define SceneObj_ShadowVolumeDrawer 0x45
#define SceneObj_ShadowSurfaceDrawerInit 0x46
#define SceneObj_VolumeModelDrawInit 0x4C
#define SceneObj_SpinDrawerPathDrawInit 0x4D
#define SceneObj_NoteGroup 0x4E
#define SceneObj_ArrowSwitchMultiHolder 0x54
#define SceneObj_NameObjExecuteHolder 0x58
#define SceneObj_QuakeEffectGenerator 0x5B
#define SceneObj_HeatHazeDirector 0x5D
#define SceneObj_EarthenPipeMediator 0x61
#define SceneObj_SensorHitChecker 0x0
#define SceneObj_CollisionDirector 0x1
#define SceneObj_ClippingDirector 0x2
#define SceneObj_DemoDirector 0x3
#define SceneObj_EventDirector 0x4
#define SceneObj_EffectSystem 0x5
#define SceneObj_LightDirector 0x6
#define SceneObj_SceneDataInitializer 0x7
#define SceneObj_StageDataHolder 0x8
#define SceneObj_MessageSensorHolder 0x9
#define SceneObj_StageSwitchContainer 0xA
#define SceneObj_SwitchWatcherHolder 0xB
#define SceneObj_SleepControllerHolder 0xC
#define SceneObj_AreaObjContainer 0xD
#define SceneObj_LiveActorGroupArray 0xE
#define SceneObj_MovementOnOffGroupHolder 0xF
#define SceneObj_CaptureScreenActor 0x10
#define SceneObj_MarioHolder 0x14
#define SceneObj_MirrorCamera 0x16
#define SceneObj_CameraContext 0x17
#define SceneObj_TalkDirector 0x19
#define SceneObj_StopSceneController 0x1B
#define SceneObj_SceneObjMovementCtrl 0x1C
#define SceneObj_PlayerActionGuidance 0x23
#define SceneObj_PlacementStateChecker 0x27
#define SceneObj_NamePosHolder 0x28
#define SceneObj_NPCDirector 0x29
#define SceneObj_AllLiveActorGroup 0x30
#define SceneObj_PlanetGravityManager 0x32
#define SceneObj_PurpleCoinHolder 0x37
#define SceneObj_CoinRotater 0x38
#define SceneObj_AirBubbleHolder 0x39
#define SceneObj_BigFanHolder 0x3A
#define SceneObj_ShadowControllerHolder 0x44
#define SceneObj_ShadowVolumeDrawer 0x45
#define SceneObj_ShadowSurfaceDrawerInit 0x46
#define SceneObj_VolumeModelDrawInit 0x4C
#define SceneObj_SpinDrawerPathDrawInit 0x4D
#define SceneObj_NoteGroup 0x4E
#define SceneObj_ArrowSwitchMultiHolder 0x54
#define SceneObj_NameObjExecuteHolder 0x58
#define SceneObj_QuakeEffectGenerator 0x5B
#define SceneObj_HeatHazeDirector 0x5D
#define SceneObj_EarthenPipeMediator 0x61
#define SceneObj_SkeletalFishBabyRailHolder 0x67
#define SceneObj_SkeletalFishRailHolder 0x68
#define SceneObj_FirePressureBulletHolder 0x6A
#define SceneObj_GalaxyNamePlateDrawer 0x70
#define SceneObj_PlanetMapCreator 0x74
#define SceneObj_PriorDrawAirHolder 0x75
#define SceneObj_SkeletalFishRailHolder 0x68
#define SceneObj_FirePressureBulletHolder 0x6A
#define SceneObj_GalaxyNamePlateDrawer 0x70
#define SceneObj_PlanetMapCreator 0x74
#define SceneObj_PriorDrawAirHolder 0x75

class NameObj;

Expand All @@ -59,16 +62,16 @@ class SceneObjHolder {
bool isExist(int) const;
NameObj* newEachObj(int);

NameObj* mSceneObjs[0x7B]; // 0x0
NameObj* mSceneObjs[0x7B]; // 0x0
};

namespace MR {
NameObj* createSceneObj(int);
SceneObjHolder* getSceneObjHolder();
bool isExistSceneObj(int);

template<class T>
template <class T>
inline T getSceneObj(int objID) {
return reinterpret_cast<T>(MR::getSceneObjHolder()->getObj(objID));
}
};
}; // namespace MR
21 changes: 13 additions & 8 deletions include/Game/Util/SystemUtil.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,21 @@

#include "Game/Util/Functor.hpp"

class ParticleResourceHolder;

namespace MR {
bool isScreen16Per9();

void setLayoutDefaultAllocator();

void startFunctionAsyncExecuteOnMainThread(const FunctorBase &, const char *);
void waitForEndFunctionAsyncExecute(const char *);
bool isEndFunctionAsyncExecute(const char *);
bool tryEndFunctionAsyncExecute(const char *);
void suspendAsyncExecuteThread(const char *);
void resumeAsyncExecuteThread(const char *);
bool isSuspendAsyncExecuteThread(const char *);
};
void startFunctionAsyncExecuteOnMainThread(const FunctorBase&, const char*);
void waitForEndFunctionAsyncExecute(const char*);
bool isEndFunctionAsyncExecute(const char*);
bool tryEndFunctionAsyncExecute(const char*);
void suspendAsyncExecuteThread(const char*);
void resumeAsyncExecuteThread(const char*);
bool isSuspendAsyncExecuteThread(const char*);

ParticleResourceHolder* getParticleResourceHolder();

}; // namespace MR
Loading

0 comments on commit d1f57b3

Please sign in to comment.