Skip to content
Open
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
64 changes: 32 additions & 32 deletions data/file_list.yml
Original file line number Diff line number Diff line change
Expand Up @@ -145611,97 +145611,97 @@ Sequence/HakoniwaStateDemoEnding.o:
label:
- _ZN23HakoniwaStateDemoEndingC1EP16HakoniwaSequencePN2al10WipeHolderEPNS2_21ScreenCaptureExecutorEP24HakoniwaStateDeleteSceneP19WorldResourceLoaderP14GameDataHolder
- _ZN23HakoniwaStateDemoEndingC2EP16HakoniwaSequencePN2al10WipeHolderEPNS2_21ScreenCaptureExecutorEP24HakoniwaStateDeleteSceneP19WorldResourceLoaderP14GameDataHolder
status: NotDecompiled
status: Matching
- offset: 0x511c58
size: 92
label:
- _ZN23HakoniwaStateDemoEndingD1Ev
- _ZN23HakoniwaStateDemoEndingD2Ev
status: NotDecompiled
status: Matching
- offset: 0x511cb4
size: 100
label: _ZN23HakoniwaStateDemoEndingD0Ev
status: NotDecompiled
status: Matching
- offset: 0x511d18
size: 92
label: _ZN23HakoniwaStateDemoEnding4initEv
status: NotDecompiled
status: Matching
- offset: 0x511d74
size: 92
label: _ZN23HakoniwaStateDemoEnding6appearEv
status: NotDecompiled
status: Matching
- offset: 0x511dd0
size: 44
label: _ZN23HakoniwaStateDemoEnding4killEv
status: NotDecompiled
status: Matching
- offset: 0x511dfc
size: 96
label: _ZN23HakoniwaStateDemoEnding20exeLoadWorldResourceEv
status: NotDecompiled
status: Matching
- offset: 0x511e5c
size: 92
label: _ZN23HakoniwaStateDemoEnding26exeLoadWorldResourceSecondEv
status: NotDecompiled
status: Matching
- offset: 0x511eb8
size: 376
label: _ZN23HakoniwaStateDemoEnding7exeLoadEv
status: NotDecompiled
status: Matching
- offset: 0x512030
size: 92
label: _ZN23HakoniwaStateDemoEnding13exeDemoEndingEv
status: NotDecompiled
status: Matching
- offset: 0x51208c
size: 152
label: _ZN23HakoniwaStateDemoEnding12exeEndEndingEv
status: NotDecompiled
status: Matching
- offset: 0x512124
size: 412
label: _ZN23HakoniwaStateDemoEnding16exeLoadStaffRollEv
status: NotDecompiled
status: Matching
- offset: 0x5122c0
size: 120
label: _ZN23HakoniwaStateDemoEnding16exeDemoStaffRollEv
status: NotDecompiled
status: Matching
- offset: 0x512338
size: 108
label: _ZN23HakoniwaStateDemoEnding6exeEndEv
status: NotDecompiled
status: Matching
- offset: 0x5123a4
size: 8
label: ''
status: NotDecompiled
label: _ZNK12_GLOBAL__N_130HakoniwaStateDemoEndingNrvLoad7executeEPN2al11NerveKeeperE
status: Matching
- offset: 0x5123ac
size: 8
label: ''
status: NotDecompiled
label: _ZNK12_GLOBAL__N_135HakoniwaStateDemoEndingNrvEndEnding7executeEPN2al11NerveKeeperE
status: Matching
- offset: 0x5123b4
size: 112
label: ''
status: NotDecompiled
label: _ZNK12_GLOBAL__N_129HakoniwaStateDemoEndingNrvEnd7executeEPN2al11NerveKeeperE
status: Matching
- offset: 0x512424
size: 100
label: ''
status: NotDecompiled
label: _ZNK12_GLOBAL__N_143HakoniwaStateDemoEndingNrvLoadWorldResource7executeEPN2al11NerveKeeperE
status: Matching
- offset: 0x512488
size: 96
label: ''
status: NotDecompiled
label: _ZNK12_GLOBAL__N_149HakoniwaStateDemoEndingNrvLoadWorldResourceSecond7executeEPN2al11NerveKeeperE
status: Matching
- offset: 0x5124e8
size: 92
label: ''
status: NotDecompiled
label: _ZNK12_GLOBAL__N_136HakoniwaStateDemoEndingNrvDemoEnding7executeEPN2al11NerveKeeperE
status: Matching
- offset: 0x512544
size: 8
label: ''
status: NotDecompiled
label: _ZNK12_GLOBAL__N_139HakoniwaStateDemoEndingNrvLoadStaffRoll7executeEPN2al11NerveKeeperE
status: Matching
- offset: 0x51254c
size: 120
label: ''
status: NotDecompiled
label: _ZNK12_GLOBAL__N_139HakoniwaStateDemoEndingNrvDemoStaffRoll7executeEPN2al11NerveKeeperE
status: Matching
- offset: 0x5125c4
size: 32
label: ''
status: NotDecompiled
label: _GLOBAL__sub_I_HakoniwaStateDemoEnding.cpp
status: Matching
Sequence/HakoniwaStateDemoOpening.o:
'.text':
- offset: 0x5125e4
Expand Down
3 changes: 3 additions & 0 deletions lib/al/Library/Nerve/NerveStateBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ class HostStateBase : public NerveStateBase {

T* getHost() const { return mHost; }

protected:
T** getHostPtr() { return &mHost; }

private:
T* mHost;
};
Expand Down
11 changes: 9 additions & 2 deletions lib/al/Library/Play/Layout/WipeHolder.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,19 @@ class WipeHolder {
bool isOpenEnd() const;
bool isCloseWipe(const char* name) const;

bool isClose() const { return mIsClose; }

private:
s32 mMaxWipeCount;
s32 mWipeCount;
void* _8;
s32 mCurrentWipeIndex;
u32 _c;
WipeSimple** mWipes;
void* filler[4];
bool mIsClose;
u8 _19[7];
void* _20;
void* _28;
s32 _30;
};
} // namespace al

Expand Down
2 changes: 2 additions & 0 deletions lib/al/Library/Scene/Scene.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,8 @@ class Scene : public NerveExecutor,

DrawSystemInfo* getDrawSystemInfo() const { return mDrawSystemInfo; }

bool isAlive() const { return mIsAlive; }

private:
bool mIsAlive = false;
sead::FixedSafeString<0x40> mName;
Expand Down
36 changes: 36 additions & 0 deletions lib/al/Library/Sequence/Sequence.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,24 @@
#include "Library/Nerve/NerveExecutor.h"
#include "Library/Sequence/IUseSceneCreator.h"

namespace sead {
class Heap;
} // namespace sead

namespace alSceneFunction {
class SceneFactory;
} // namespace alSceneFunction

namespace al {
struct GameSystemInfo;
struct DrawSystemInfo;
struct SequenceInitInfo;
struct AudioSystemInfo;
struct AudioDirectorInitInfo;
class GameDataHolderBase;
class AudioDirector;
class Scene;
class ScreenCaptureExecutor;

class Sequence : public NerveExecutor, public IUseAudioKeeper, public IUseSceneCreator {
public:
Expand Down Expand Up @@ -43,6 +54,10 @@ class Sequence : public NerveExecutor, public IUseAudioKeeper, public IUseSceneC

DrawSystemInfo* getDrawInfo() const { return mDrawSystemInfo; }

AudioDirector* getAudioDirector() const { return mAudioDirector; }

void setNextScene(Scene* scene) { mNextScene = scene; }

private:
sead::FixedSafeString<0x40> mName;
Scene* mCurrentScene = nullptr;
Expand All @@ -53,4 +68,25 @@ class Sequence : public NerveExecutor, public IUseAudioKeeper, public IUseSceneC
DrawSystemInfo* mDrawSystemInfo = nullptr;
bool mIsAlive = true;
};

void initSceneCreator(IUseSceneCreator* sceneCreator, const SequenceInitInfo& initInfo,
GameDataHolderBase* gameDataHolder, AudioDirector* audioDirector,
ScreenCaptureExecutor* screenCaptureExecutor,
alSceneFunction::SceneFactory* sceneFactory);
Scene* createSceneAndInit(IUseSceneCreator* sceneCreator, const char* stageName,
const char* sceneName, s32 scenarioNo, const char* sequenceParam);
void createSceneAndUseInitThread(IUseSceneCreator* sceneCreator, const char* stageName,
s32 priority, const char* sceneName, s32 scenarioNo,
const char* sequenceParam);
void setSceneAndInit(IUseSceneCreator* sceneCreator, Scene* scene, const char* stageName,
s32 scenarioNo, const char* sequenceParam);
void setSceneAndUseInitThread(IUseSceneCreator* sceneCreator, Scene* scene, s32 priority,
const char* stageName, s32 scenarioNo, const char* sequenceParam,
sead::Heap* heap);
bool tryEndSceneInitThread(IUseSceneCreator* sceneCreator);
bool isExistSceneInitThread(const IUseSceneCreator* sceneCreator);
void initAudioDirector(Sequence* sequence, AudioSystemInfo* audioSystemInfo,
AudioDirectorInitInfo& initInfo);
void setSequenceAudioKeeperToSceneSeDirector(Sequence* sequence, Scene* scene);
void setSequenceNameForActorPickTool(Sequence* sequence, Scene* scene);
} // namespace al
56 changes: 56 additions & 0 deletions src/Scene/EndingScene.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#pragma once

#include <basis/seadTypes.h>
#include <prim/seadSafeString.h>

#include "Library/Scene/Scene.h"

namespace al {
struct ActorInitInfo;
class LayoutInitInfo;
struct SceneInitInfo;
class StageInfo;
class WipeHolder;
} // namespace al

class EndingScene : public al::Scene {
public:
explicit EndingScene(al::WipeHolder* wipeHolder);

void init(const al::SceneInitInfo& initInfo) override;
void appear() override;
void kill() override;
void control() override;
void drawMain() const override;

void exePlay();
bool isLoadEnd() const;
void exeSkipProc();
void initLayout(const al::LayoutInitInfo& layoutInitInfo);
void initPlacement(const al::ActorInitInfo& actorInitInfo);
void initPlacementSky(const al::StageInfo* stageInfo, const al::ActorInitInfo& actorInitInfo);
void initPlacementDemo(const al::StageInfo* stageInfo, const al::ActorInitInfo& actorInitInfo);
void initPlacementObject(const al::StageInfo* stageInfo, const al::ActorInitInfo& actorInitInfo,
const char* placementKey);

void setLoadEnd(bool isLoadEnd) { mIsLoadEnd = isLoadEnd; }

private:
sead::FixedSafeString<64> mStageName;
u8 _130[0x10];
bool mIsLoadEnd = false;
u8 _141[7];
void* _148 = nullptr;
s32 _150 = 1;
u8 _154[4];
void* _158 = nullptr;
s32 _160 = 0;
u8 _164[4];
void* _168 = nullptr;
void* _170 = nullptr;
void* _178 = nullptr;
void* _180 = nullptr;
al::WipeHolder* mWipeHolder = nullptr;
};

static_assert(sizeof(EndingScene) == 0x190, "EndingScene size");
62 changes: 62 additions & 0 deletions src/Scene/StaffRollScene.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#pragma once

#include <basis/seadTypes.h>

#include "Library/Message/IUseMessageSystem.h"
#include "Library/Scene/Scene.h"

namespace al {
struct ActorInitInfo;
class LayoutInitInfo;
class MessageSystem;
class Nerve;
struct SceneInitInfo;
class StageInfo;
class WipeHolder;
} // namespace al

class StaffRollScene : public al::Scene, public al::IUseMessageSystem {
public:
explicit StaffRollScene(al::WipeHolder* wipeHolder);

void init(const al::SceneInitInfo& initInfo) override;
void appear() override;
void kill() override;
void control() override;
void drawMain() const override;
const al::MessageSystem* getMessageSystem() const override;

void initRollLineData();
void exeTitleLogo();
void exeRollLine();
void initCurrentRollLines();
void initSlideShowFrame();
void updateRollLine();
void updateSlideShow();
void tryChangeToSkipConfirm(const al::Nerve* nextNerve);
void exeThank();
void dropAllRollLine();
void exeShowPicture();
void exeRight();
void exeConfirm();
void exeSkipProc();
void exeSkipWipe();
void killRollLine();
s32 getMyNerveStep() const;
void initLayout(const al::LayoutInitInfo& layoutInitInfo);
f32 calcNameRollTimeRate(f32 rate);
void dropCurrentToStock();
void initPlacement(const al::ActorInitInfo& actorInitInfo);
void initPlacementSky(const al::StageInfo* stageInfo, const al::ActorInitInfo& actorInitInfo);
void initPlacementObject(const al::StageInfo* stageInfo, const al::ActorInitInfo& actorInitInfo,
const char* placementKey);
void initPlacementDemo(const al::StageInfo* stageInfo, const al::ActorInitInfo& actorInitInfo);
bool isCanSkip();

private:
const al::MessageSystem* mMessageSystem = nullptr;
al::WipeHolder* mWipeHolder = nullptr;
u8 _f0[0x6160];
};

static_assert(sizeof(StaffRollScene) == 0x6250, "StaffRollScene size");
37 changes: 37 additions & 0 deletions src/Sequence/HakoniwaStateDeleteScene.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#pragma once

#include <basis/seadTypes.h>

#include "Library/Nerve/NerveStateBase.h"
#include "Library/Sequence/Sequence.h"

class WorldResourceLoader;

namespace al {
class AsyncFunctorThread;
class Scene;
} // namespace al

class HakoniwaStateDeleteScene : public al::HostStateBase<al::Sequence> {
public:
HakoniwaStateDeleteScene(al::Sequence* sequence, WorldResourceLoader* resourceLoader);

void appear() override;
void kill() override;

void deleteScene();
void start(al::Scene* scene, bool destroyResource, bool finalizeAudio, s32 stopSeFrame);
void exePrepare();
void exeFinalizeAudio();
void exeDeleteScene();

private:
al::Scene* mScene = nullptr;
al::AsyncFunctorThread* mDeleteSceneThread = nullptr;
bool mIsDestroyResource = false;
bool mIsFinalizeAudio = false;
s32 mStopSeFrame = 0;
WorldResourceLoader* mResourceLoader = nullptr;
};

static_assert(sizeof(HakoniwaStateDeleteScene) == 0x40, "HakoniwaStateDeleteScene size");
Loading
Loading