diff --git a/config/RSBE01_02/config.yml b/config/RSBE01_02/config.yml index d71ae91..05d7f5e 100644 --- a/config/RSBE01_02/config.yml +++ b/config/RSBE01_02/config.yml @@ -386,7 +386,7 @@ modules: hash: d19a1281ccc2b68b0e7f5c1df7c79c13aa50c4c6 splits: config/RSBE01_02/rels/st_dxshrine/splits.txt symbols: config/RSBE01_02/rels/st_dxshrine/symbols.txt - force_active: [HomeBtnIcon] + force_active: [create__10stDxShrineFv, HomeBtnIcon] - object: files/module/st_dxyorster.rel hash: 8cfb4ca5c1c7a0eb83237eb0edb893cbd3b83532 splits: config/RSBE01_02/rels/st_dxyorster/splits.txt diff --git a/config/RSBE01_02/rels/st_dxshrine/splits.txt b/config/RSBE01_02/rels/st_dxshrine/splits.txt index fd81926..096cc5b 100644 --- a/config/RSBE01_02/rels/st_dxshrine/splits.txt +++ b/config/RSBE01_02/rels/st_dxshrine/splits.txt @@ -11,6 +11,17 @@ global_destructor_chain.c: .dtors start:0x00000000 end:0x00000008 .bss start:0x00000000 end:0x00000004 +mo_stage/st_dxshrine/st_dxshrine.cpp: + .text start:0x00000070 end:0x00000578 + .ctors start:0x00000000 end:0x00000004 + .rodata start:0x00000000 end:0x00000008 + .data start:0x00000000 end:0x00000388 + .bss start:0x00000008 end:0x00000018 + +mo_stage/st_dxshrine/gr_dxshrine.cpp: + .text start:0x00000578 end:0x00000728 + .data start:0x00000388 end:0x00000600 + mo_stage/mo_stage.cpp: .text start:0x00000728 end:0x000007C4 .data start:0x00000600 end:0x0000060D diff --git a/config/RSBE01_02/rels/st_dxshrine/symbols.txt b/config/RSBE01_02/rels/st_dxshrine/symbols.txt index 2c7bca1..e27c8bb 100644 --- a/config/RSBE01_02/rels/st_dxshrine/symbols.txt +++ b/config/RSBE01_02/rels/st_dxshrine/symbols.txt @@ -1,64 +1,64 @@ __register_global_object = .text:0x00000000; // type:function size:0x1C scope:global __destroy_global_chain = .text:0x0000001C; // type:function size:0x54 scope:global -fn_75_70 = .text:0x00000070; // type:function size:0x70 -fn_75_E0 = .text:0x000000E0; // type:function size:0x6C -fn_75_14C = .text:0x0000014C; // type:function size:0x8 -fn_75_154 = .text:0x00000154; // type:function size:0x1A0 -fn_75_2F4 = .text:0x000002F4; // type:function size:0x8 -fn_75_2FC = .text:0x000002FC; // type:function size:0x4 -fn_75_300 = .text:0x00000300; // type:function size:0x10 -fn_75_310 = .text:0x00000310; // type:function size:0x4 -fn_75_314 = .text:0x00000314; // type:function size:0x8 -fn_75_31C = .text:0x0000031C; // type:function size:0x8 -fn_75_324 = .text:0x00000324; // type:function size:0x8 -fn_75_32C = .text:0x0000032C; // type:function size:0x8 -fn_75_334 = .text:0x00000334; // type:function size:0x8 -fn_75_33C = .text:0x0000033C; // type:function size:0x4 -fn_75_340 = .text:0x00000340; // type:function size:0x8 -fn_75_348 = .text:0x00000348; // type:function size:0x8 -fn_75_350 = .text:0x00000350; // type:function size:0x8 -fn_75_358 = .text:0x00000358; // type:function size:0xC -fn_75_364 = .text:0x00000364; // type:function size:0xC -fn_75_370 = .text:0x00000370; // type:function size:0x10 -fn_75_380 = .text:0x00000380; // type:function size:0x14 -fn_75_394 = .text:0x00000394; // type:function size:0x8 -fn_75_39C = .text:0x0000039C; // type:function size:0x8 -fn_75_3A4 = .text:0x000003A4; // type:function size:0x8 -fn_75_3AC = .text:0x000003AC; // type:function size:0x8 -fn_75_3B4 = .text:0x000003B4; // type:function size:0x8 -fn_75_3BC = .text:0x000003BC; // type:function size:0x4 -fn_75_3C0 = .text:0x000003C0; // type:function size:0x1C -fn_75_3DC = .text:0x000003DC; // type:function size:0x8 -fn_75_3E4 = .text:0x000003E4; // type:function size:0x8 -fn_75_3EC = .text:0x000003EC; // type:function size:0x8 -fn_75_3F4 = .text:0x000003F4; // type:function size:0x8 -fn_75_3FC = .text:0x000003FC; // type:function size:0xC -fn_75_408 = .text:0x00000408; // type:function size:0x4 -fn_75_40C = .text:0x0000040C; // type:function size:0x8 -fn_75_414 = .text:0x00000414; // type:function size:0x8 -fn_75_41C = .text:0x0000041C; // type:function size:0x8 -fn_75_424 = .text:0x00000424; // type:function size:0x8 -fn_75_42C = .text:0x0000042C; // type:function size:0x64 -fn_75_490 = .text:0x00000490; // type:function size:0x74 -fn_75_504 = .text:0x00000504; // type:function size:0x70 -fn_75_574 = .text:0x00000574; // type:function size:0x4 -fn_75_578 = .text:0x00000578; // type:function size:0xC4 -fn_75_63C = .text:0x0000063C; // type:function size:0x8 -fn_75_644 = .text:0x00000644; // type:function size:0x58 -fn_75_69C = .text:0x0000069C; // type:function size:0x8 -fn_75_6A4 = .text:0x000006A4; // type:function size:0x8 -fn_75_6AC = .text:0x000006AC; // type:function size:0x4 -fn_75_6B0 = .text:0x000006B0; // type:function size:0x4 -fn_75_6B4 = .text:0x000006B4; // type:function size:0x10 -fn_75_6C4 = .text:0x000006C4; // type:function size:0x10 -fn_75_6D4 = .text:0x000006D4; // type:function size:0xC -fn_75_6E0 = .text:0x000006E0; // type:function size:0x8 -fn_75_6E8 = .text:0x000006E8; // type:function size:0x4 -fn_75_6EC = .text:0x000006EC; // type:function size:0x8 -fn_75_6F4 = .text:0x000006F4; // type:function size:0x1C -fn_75_710 = .text:0x00000710; // type:function size:0x8 -fn_75_718 = .text:0x00000718; // type:function size:0x8 -fn_75_720 = .text:0x00000720; // type:function size:0x8 +create__10stDxShrineFv = .text:0x00000070; // type:function size:0x70 scope:global +__dt__10stDxShrineFv = .text:0x000000E0; // type:function size:0x6C scope:global +loading__10stDxShrineFv = .text:0x0000014C; // type:function size:0x8 scope:global +createObj__10stDxShrineFv = .text:0x00000154; // type:function size:0x1A0 scope:global +setStageData__6GroundFPv = .text:0x000002F4; // type:function size:0x8 scope:weak +update__10stDxShrineFf = .text:0x000002FC; // type:function size:0x4 scope:global +initStageData__10stDxShrineFv = .text:0x00000300; // type:function size:0x10 scope:global +startFighterEvent__5StageFv = .text:0x00000310; // type:function size:0x4 scope:weak +initializeFighterAttackRatio__5StageFv = .text:0x00000314; // type:function size:0x8 scope:weak +helperStarWarp__5StageFv = .text:0x0000031C; // type:function size:0x8 scope:weak +isSimpleBossBattleMode__5StageFv = .text:0x00000324; // type:function size:0x8 scope:weak +isBossBattleMode__5StageFv = .text:0x0000032C; // type:function size:0x8 scope:weak +isCameraLocked__5StageFv = .text:0x00000334; // type:function size:0x8 scope:weak +notifyTimmingGameStart__5StageFv = .text:0x0000033C; // type:function size:0x4 scope:weak +getFrameRuleTime__5StageFv = .text:0x00000340; // type:function size:0x8 scope:weak +setFrameRuleTime__5StageFf = .text:0x00000348; // type:function size:0x8 scope:weak +isNextStepBgmEqualNowStepBgmFromFlag__5StageFv = .text:0x00000350; // type:function size:0x8 scope:weak +getBgmPlayOffsetFrame__5StageFv = .text:0x00000358; // type:function size:0xC scope:weak +getBgmVolume__5StageFv = .text:0x00000364; // type:function size:0xC scope:weak +setBgmChange__5StageFfbUl = .text:0x00000370; // type:function size:0x10 scope:weak +getBgmChangeID__5StageFPUlPf = .text:0x00000380; // type:function size:0x14 scope:weak +isBgmChange__5StageFv = .text:0x00000394; // type:function size:0x8 scope:weak +getBgmOptionID__5StageFv = .text:0x0000039C; // type:function size:0x8 scope:weak +getNowStepBgmID__5StageFv = .text:0x000003A4; // type:function size:0x8 scope:weak +getBgmID__5StageFv = .text:0x000003AC; // type:function size:0x8 scope:weak +getBgmID__5StageCFv = .text:0x000003B4; // type:function size:0x8 scope:weak +appearanceFighterLocal__5StageFv = .text:0x000003BC; // type:function size:0x4 scope:weak +getScrollDir__5StageFP5Vec3f = .text:0x000003C0; // type:function size:0x1C scope:weak +getDefaultLightSetIndex__5StageFv = .text:0x000003DC; // type:function size:0x8 scope:weak +getAIRange__5StageFv = .text:0x000003E4; // type:function size:0x8 scope:weak +isAdventureStage__5StageFv = .text:0x000003EC; // type:function size:0x8 scope:weak +getPokeTrainerDrawLayer__5StageFv = .text:0x000003F4; // type:function size:0x8 scope:weak +getPokeTrainerPositionZ__5StageFv = .text:0x000003FC; // type:function size:0xC scope:weak +getPokeTrainerPointData__5StageFPii = .text:0x00000408; // type:function size:0x4 scope:weak +getPokeTrainerPointNum__5StageFv = .text:0x0000040C; // type:function size:0x8 scope:weak +isReStartSamePoint__7stMeleeFv = .text:0x00000414; // type:function size:0x8 scope:weak +getWind2ndOnlyData__7stMeleeFv = .text:0x0000041C; // type:function size:0x8 scope:weak +isBamperVector__10stDxShrineFv = .text:0x00000424; // type:function size:0x8 scope:weak +__sinit_\st_dxshrine_cpp = .text:0x0000042C; // type:function size:0x64 scope:local +__dt__32stClassInfoImpl<41,10stDxShrine>Fv = .text:0x00000490; // type:function size:0x74 scope:weak +create__32stClassInfoImpl<41,10stDxShrine>Fv = .text:0x00000504; // type:function size:0x70 scope:weak +preload__32stClassInfoImpl<41,10stDxShrine>Fv = .text:0x00000574; // type:function size:0x4 scope:weak +create__10grDxShrineFiPCcPCc = .text:0x00000578; // type:function size:0xC4 scope:global +setMdlIndex__6GroundFi = .text:0x0000063C; // type:function size:0x8 scope:weak +__dt__10grDxShrineFv = .text:0x00000644; // type:function size:0x58 scope:global +adventureEventGetItem__6GroundFiP13stTriggerData = .text:0x0000069C; // type:function size:0x8 scope:weak +getInitializeInfo__6GroundFi = .text:0x000006A4; // type:function size:0x8 scope:weak +setInitializeInfo__6GroundFi = .text:0x000006AC; // type:function size:0x4 scope:weak +setInitializeFlag__6GroundFv = .text:0x000006B0; // type:function size:0x4 scope:weak +disableCalcCollision__6GroundFv = .text:0x000006B4; // type:function size:0x10 scope:weak +enableCalcCollision__6GroundFv = .text:0x000006C4; // type:function size:0x10 scope:weak +isEnableCalcCollision__6GroundFv = .text:0x000006D4; // type:function size:0xC scope:weak +getMdlIndex__6GroundFv = .text:0x000006E0; // type:function size:0x8 scope:weak +initStageData__6GroundFv = .text:0x000006E8; // type:function size:0x4 scope:weak +getStageData__6GroundFv = .text:0x000006EC; // type:function size:0x8 scope:weak +getModelCount__6GroundFv = .text:0x000006F4; // type:function size:0x1C scope:weak +getTransparencyFlag__9grGimmickFv = .text:0x00000710; // type:function size:0x8 scope:weak +getGimmickData__9grGimmickFv = .text:0x00000718; // type:function size:0x8 scope:weak +setGimmickData__9grGimmickFPv = .text:0x00000720; // type:function size:0x8 scope:weak _prolog = .text:0x00000728; // type:function size:0x48 scope:global _epilog = .text:0x00000770; // type:function size:0x48 scope:global _unresolved = .text:0x000007B8; // type:function size:0xC scope:global @@ -66,45 +66,48 @@ _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte __destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 scope:global __destroy_global_chain_reference = .dtors:0x00000004; // type:object size:0x4 scope:global -lbl_75_rodata_0 = .rodata:0x00000000; // type:object size:0x4 data:float -lbl_75_rodata_4 = .rodata:0x00000004; // type:object size:0x4 align:4 data:float -lbl_75_data_0 = .data:0x00000000; // type:object size:0x38 -lbl_75_data_38 = .data:0x00000038; // type:object size:0x220 -lbl_75_data_258 = .data:0x00000258; // type:object size:0xC -lbl_75_data_264 = .data:0x00000264; // type:object size:0x24 -lbl_75_data_288 = .data:0x00000288; // type:object size:0x8 -lbl_75_data_290 = .data:0x00000290; // type:object size:0x8 data:string -lbl_75_data_298 = .data:0x00000298; // type:object size:0x20 -lbl_75_data_2B8 = .data:0x000002B8; // type:object size:0x8 -lbl_75_data_2C0 = .data:0x000002C0; // type:object size:0x10 data:string -lbl_75_data_2D0 = .data:0x000002D0; // type:object size:0x18 -lbl_75_data_2E8 = .data:0x000002E8; // type:object size:0x8 -lbl_75_data_2F0 = .data:0x000002F0; // type:object size:0x8 -lbl_75_data_2F8 = .data:0x000002F8; // type:object size:0x10 -lbl_75_data_308 = .data:0x00000308; // type:object size:0x8 -lbl_75_data_310 = .data:0x00000310; // type:object size:0x8 -lbl_75_data_318 = .data:0x00000318; // type:object size:0x8 -lbl_75_data_320 = .data:0x00000320; // type:object size:0x18 -lbl_75_data_338 = .data:0x00000338; // type:object size:0x20 data:string -lbl_75_data_358 = .data:0x00000358; // type:object size:0x10 -lbl_75_data_368 = .data:0x00000368; // type:object size:0x8 -lbl_75_data_370 = .data:0x00000370; // type:object size:0x10 -lbl_75_data_380 = .data:0x00000380; // type:object size:0x8 -lbl_75_data_388 = .data:0x00000388; // type:object size:0x1C8 -lbl_75_data_550 = .data:0x00000550; // type:object size:0xC -lbl_75_data_55C = .data:0x0000055C; // type:object size:0x24 -lbl_75_data_580 = .data:0x00000580; // type:object size:0x8 -lbl_75_data_588 = .data:0x00000588; // type:object size:0xC -lbl_75_data_594 = .data:0x00000594; // type:object size:0x1C -lbl_75_data_5B0 = .data:0x000005B0; // type:object size:0x8 -lbl_75_data_5B8 = .data:0x000005B8; // type:object size:0xC -lbl_75_data_5C4 = .data:0x000005C4; // type:object size:0x14 -lbl_75_data_5D8 = .data:0x000005D8; // type:object size:0x8 -lbl_75_data_5E0 = .data:0x000005E0; // type:object size:0x8 -lbl_75_data_5E8 = .data:0x000005E8; // type:object size:0x10 -lbl_75_data_5F8 = .data:0x000005F8; // type:object size:0x8 -lbl_75_data_600 = .data:0x00000600; // type:object size:0xD scope:local align:4 data:string +@8112 = .rodata:0x00000000; // type:object size:0x4 scope:local data:float +@8114 = .rodata:0x00000004; // type:object size:0x4 scope:local align:4 data:float +@8069 = .data:0x00000000; // type:object size:0xB scope:local data:string +@8089 = .data:0x0000000C; // type:object size:0x1 scope:local +@8090 = .data:0x00000010; // type:object size:0x11 scope:local data:string +@8091 = .data:0x00000024; // type:object size:0xE scope:local data:string +__vt__10stDxShrine = .data:0x00000038; // type:object size:0x220 +@7907 = .data:0x00000258; // type:object size:0xB scope:local data:string +@7908 = .data:0x00000264; // type:object size:0x24 scope:local +__RTTI__10stDxShrine = .data:0x00000288; // type:object size:0x8 scope:weak +@7909 = .data:0x00000290; // type:object size:0x8 scope:local data:string +@7910 = .data:0x00000298; // type:object size:0x1C scope:local +__RTTI__7stMelee = .data:0x000002B8; // type:object size:0x8 scope:weak +@7911 = .data:0x000002C0; // type:object size:0x10 scope:local data:string +@7912 = .data:0x000002D0; // type:object size:0x14 scope:local +__RTTI__15stCommonGimmick = .data:0x000002E8; // type:object size:0x8 scope:weak +@7913 = .data:0x000002F0; // type:object size:0x6 scope:local data:string +@7914 = .data:0x000002F8; // type:object size:0xC scope:local +__RTTI__5Stage = .data:0x00000308; // type:object size:0x8 scope:weak +@7949 = .data:0x00000310; // type:object size:0x7 scope:local data:string +__RTTI__6gfTask = .data:0x00000318; // type:object size:0x8 scope:weak +__vt__32stClassInfoImpl<41,10stDxShrine> = .data:0x00000320; // type:object size:0x14 scope:weak +@8028 = .data:0x00000338; // type:object size:0x20 scope:local data:string +@8029 = .data:0x00000358; // type:object size:0xC scope:local +__RTTI__32stClassInfoImpl<41,10stDxShrine> = .data:0x00000368; // type:object size:0x8 scope:weak +@8030 = .data:0x00000370; // type:object size:0xC scope:local data:string +__RTTI__11stClassInfo = .data:0x00000380; // type:object size:0x8 scope:weak +grDxShrine::__vtable = .data:0x00000388; // type:object size:0x1C8 scope:global +@7011 = .data:0x00000550; // type:object size:0xB scope:local data:string +@7012 = .data:0x0000055C; // type:object size:0x24 scope:local +__RTTI__10grDxShrine = .data:0x00000580; // type:object size:0x8 scope:weak +@7013 = .data:0x00000588; // type:object size:0xB scope:local data:string +@7014 = .data:0x00000594; // type:object size:0x1C scope:local +__RTTI__10grYakumono = .data:0x000005B0; // type:object size:0x8 scope:weak +@7015 = .data:0x000005B8; // type:object size:0xA scope:local data:string +@7016 = .data:0x000005C4; // type:object size:0x14 scope:local +__RTTI__9grGimmick = .data:0x000005D8; // type:object size:0x8 scope:weak +@7017 = .data:0x000005E0; // type:object size:0x7 scope:local data:string +@7018 = .data:0x000005E8; // type:object size:0xC scope:local +__RTTI__6Ground = .data:0x000005F8; // type:object size:0x8 scope:weak +@50 = .data:0x00000600; // type:object size:0xD scope:local align:4 data:string HomeBtnIcon = .data:0x00000620; // type:object size:0x18C0 scope:global align:32 __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global -lbl_75_bss_8 = .bss:0x00000008; // type:object size:0xC -lbl_75_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte +@7862 = .bss:0x00000008; // type:object size:0xC +stDxShrine::bss_loc_14 = .bss:0x00000014; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index ff73534..896705e 100755 --- a/configure.py +++ b/configure.py @@ -1076,7 +1076,10 @@ def MatchingFor(*versions): "mw_version": config.linker_version, "cflags": cflags_rel, "host": False, - "objects": [], + "objects": [ + Object(Matching, "mo_stage/st_dxshrine/st_dxshrine.cpp"), + Object(Matching, "mo_stage/st_dxshrine/gr_dxshrine.cpp"), + ], }, { "lib": "st_dxyorster", diff --git a/include/st_dxshrine/gr_dxshrine.h b/include/st_dxshrine/gr_dxshrine.h new file mode 100644 index 0000000..2abe989 --- /dev/null +++ b/include/st_dxshrine/gr_dxshrine.h @@ -0,0 +1,11 @@ +#pragma once + +#include +#include + +class grDxShrine : public grYakumono { + public: + grDxShrine(const char* taskName); + static grDxShrine* create(int mdlIndex, const char *tgtNodeName, const char *taskName); + virtual ~grDxShrine(); +}; \ No newline at end of file diff --git a/include/st_dxshrine/st_dxshrine.h b/include/st_dxshrine/st_dxshrine.h new file mode 100644 index 0000000..0a87a2e --- /dev/null +++ b/include/st_dxshrine/st_dxshrine.h @@ -0,0 +1,44 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +template +class stClassInfoImpl : public stClassInfo { +public: + stClassInfoImpl() : stClassInfo() { + setClassInfo(Stages::DxShrine, this); + }; + + virtual ~stClassInfoImpl() { + setClassInfo(Stages::DxShrine, 0); + } + + virtual T* create() { + return T::create(); + } + + virtual void preload() { } +}; + +class stDxShrine : public stMelee { + void* m_shrineStageData; + // TODO: float array? + + public: + stDxShrine(); + virtual ~stDxShrine(); + virtual void createObj(); + virtual bool loading(); + virtual void update(float deltaFrame); + virtual void initStageData(); + virtual bool isBamperVector() { return true; } + + static stDxShrine* create(); + static stClassInfoImpl bss_loc_14; +}; +//static_assert(sizeof(stCrayon) == 0x200, "Class is wrong size!"); diff --git a/src/mo_stage/st_dxshrine/gr_dxshrine.cpp b/src/mo_stage/st_dxshrine/gr_dxshrine.cpp new file mode 100644 index 0000000..cade17d --- /dev/null +++ b/src/mo_stage/st_dxshrine/gr_dxshrine.cpp @@ -0,0 +1,26 @@ + +#include +#include +#include + +inline grDxShrine::grDxShrine(const char* taskName): grYakumono(taskName) { + setupMelee(); +} + + +grDxShrine* grDxShrine::create(int mdlIndex, const char *tgtNodeName, const char *taskName) {//: grPictchat(taskname) { + grDxShrine *bg = new (Heaps::StageInstance) grDxShrine(taskName); + if (bg != 0) { + + //bg->setupMelee(); + bg->setMdlIndex(mdlIndex); + //bg->m_heapType = Heaps::StageInstance; + //bg->makeCalcuCallback(1, Heaps::StageInstance); + //bg->setCalcuCallbackRoot(7); + bg->setTgtNode(tgtNodeName); + } + return bg; +} + + +grDxShrine::~grDxShrine() { } \ No newline at end of file diff --git a/src/mo_stage/st_dxshrine/st_dxshrine.cpp b/src/mo_stage/st_dxshrine/st_dxshrine.cpp new file mode 100644 index 0000000..ec83937 --- /dev/null +++ b/src/mo_stage/st_dxshrine/st_dxshrine.cpp @@ -0,0 +1,64 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +stClassInfoImpl stDxShrine::bss_loc_14; + +stDxShrine::stDxShrine() : stMelee("stDxShrine", Stages::DxShrine) { + initStageData(); +} + +stDxShrine* stDxShrine::create() { + return new (Heaps::StageInstance) stDxShrine; +} + +stDxShrine::~stDxShrine() { + releaseArchive(); +} + +bool stDxShrine::loading() { + return true; +} + +void stDxShrine::createObj() { + grDxShrine *ground = grDxShrine::create(0,"", "grDxShrineMainBg"); + if (ground) { + addGround(ground); + ground->startup(this->m_fileData,0,0); + ground->setStageData(&this->m_shrineStageData); + } + createCollision(m_fileData, 2, 0); + testStageParamInit(m_fileData, 0xA); + initCameraParam(); + nw4r::g3d::ResFile posData(m_fileData->getData(Data_Type_Model, 0x64, 0xFFFE)); + if (posData.ptr()) { + nw4r::g3d::ResFile copyPosData = posData; + createStagePositions(©PosData); + } else { + createStagePositions(); + } + createWind2ndOnly(); + loadStageAttrParam(m_fileData, 0x1E); + registScnAnim(static_cast(m_fileData->getData(Data_Type_Scene, 0, 0xFFFE)), 0); + initPosPokeTrainer(1, 0); + createObjPokeTrainer(m_fileData, 0x65, "PokeTrainer00", m_pokeTrainerPos, 0); +} + +void stDxShrine::update(float deltaFrame) { +} + +void stDxShrine::initStageData() { + memset(&this->m_shrineStageData,0,1); +}