GameScene: Difference between revisions

no edit summary
imported>Leoetlino
imported>Leoetlino
No edit summary
Line 167: Line 167:
=== postcalc ===
=== postcalc ===
{{empty section}}
{{empty section}}
== Stage generation ==
* Terrain::sInstance->flags |= 0x180u
* Step 0
** Reload Title.pack if the stage that needs to be generated is TitleStage (3)<ref>0x71007AC8A0</ref>.
** StageSelect checks<ref>0x71007AD3AC</ref>
* Step 1
** If a pack was loaded by DungeonPackMgr, wait for DungeonPack loading to finish<ref>DungeonPack読み込み待ち</ref> and switch active pack to the [[dungeon pack]].
* Step 2
** If the stage to load is TitleStage, wait for TitlePack loading to finish<ref>TitlePack読み込み待ち</ref> and switch active pack to the title pack.
* Step 3: start stage generation<ref>ステージ生成開始</ref>
**PlacementMgr
**ActorSystem::sInstance->field_13A = 0
**Update current map flags (e.g. sIsDungeon)
**Clear BaseProcMgr ActorCreate queue{{check}}
**Create uking::Stage::ForBaseProcDual heap (if not already done), which will be used for actors, ActorCreator and BaseProcMgr
**ActorSystem::sInstance->field_139 = 0
**If the [[#State strings|state string]] starts with 初回シーケンス, MainField, GameTestField, GameTestField2, AocField, CDungeon, MainFieldDungeonStage, GameTestDungeon, MonolithTestDungeon, SrdTestDungeon, MarioClubTestDungeon, TestField, 研修用, MonolithTest100enemy, MinimumField, or ActorViewer, call GameScene::startBgProcessing (0x71007B2054)
**If "new save" was selected, initialize PauseMenuDataMgr data
**If the stage to load is TitleStage, load Layout/Title.blarc for ui::LayoutResourceMgr.
**If "new save" was selected and the awakening demo hasn't been played since the game was launched<ref>0x71007ADB3C</ref>, ask [[EventMgr]] to call Demo169_0.
** Some PhysicsMemSys stuff (0x71007ADBE0).
* Step 4
** Wait for completion of Title BG processing '''(20% of the loading bar)'''
** uiManager (0x71007ACD04)
** Initialize StatisticsMgr paths depending on current map type.
** Update aoc2's mapType and mapName fields.
* Step 5
** PhysicsMemSys stuff (0x71007ACDB8, 0x71007ACDC0, 0x71007ACDD0)
** BaseProcMgr: request "PreDelete" actors<ref>0x71007ACDE4</ref>
** BaseProcMgr: stop ActorCreate initializer thread and clean up internal state{{check}}
** agl::lyr::Renderer and Graphics stuff
* Step 6
** Load [[env.genvb]] binary (gsys::ModelSceneEnv::clearImpl + loadBinaryImpl)
** If the stage binder type is 0, 1 or 2 (OpenWorldStage, IndoorStage or MainFieldDungeonStage):
***'''Set loading progress to 40%.'''
***Graphics stuff, again
***OnUiActorMgr
***GameScene::loadTera (on a separate thread)
* Step 7
** If the stage binder type is 0, 1 or 2 (OpenWorldStage, IndoorStage or MainFieldDungeonStage):
***Wait for Tera to load<ref>tera読み込み待ち</ref>
* Step 8
**...
**Wait for Tera to generate collision
**...
* Step 9
* Step 10
* Step 11
* Step 12
* Step 13


<hr>
<hr>
Anonymous user