Merge pull request #161 from robojumper/d_emitter

d_emitter 78% (EffectsStruct)
This commit is contained in:
robojumper
2025-05-10 22:27:08 +02:00
committed by GitHub
63 changed files with 2448 additions and 401 deletions
@@ -9,7 +9,7 @@ __dt__23sFState_c<10dAcOtubo_c>Fv = .text:0x00000280; // type:function size:0x58
__dt__26sFStateFct_c<10dAcOtubo_c>Fv = .text:0x000002E0; // type:function size:0x6C
__dt__79sStateMgr_c<10dAcOtubo_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000350; // type:function size:0xA0
__dt__49sFStateMgr_c<10dAcOtubo_c,20sStateMethodUsr_FI_c>Fv = .text:0x000003F0; // type:function size:0xA4
__dt__17EffectsStruct_ExtFv = .text:0x000004A0; // type:function size:0x5C
__dt__14dWaterEffect_cFv = .text:0x000004A0; // type:function size:0x5C
createHeap__10dAcOtubo_cFv = .text:0x00000500; // type:function size:0x90
actorCreate__10dAcOtubo_cFv = .text:0x00000590; // type:function size:0x2B0
changeState__79sStateMgr_c<10dAcOtubo_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000840; // type:function size:0x10
@@ -102,7 +102,7 @@ __vt__49sFStateMgr_c<10dAcOtubo_c,20sStateMethodUsr_FI_c> = .data:0x00000108; //
__vt__79sStateMgr_c<10dAcOtubo_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x00000138; // type:object size:0x30
__vt__26sFStateFct_c<10dAcOtubo_c> = .data:0x00000168; // type:object size:0x14
__vt__23sFState_c<10dAcOtubo_c> = .data:0x00000180; // type:object size:0x18
__vt__17EffectsStruct_Ext = .data:0x00000198; // type:object size:0xC
__vt__14dWaterEffect_c = .data:0x00000198; // type:object size:0xC
__vt__15dShadowCircle_c = .data:0x000001A4; // type:object size:0xC
__vt__25sFStateID_c<10dAcOtubo_c> = .data:0x000002F0; // type:object size:0x34
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
+7 -1
View File
@@ -88,9 +88,15 @@ toBeSorted/blur_and_palette_manager.cpp:
.sdata2 start:0x80576BA0 end:0x80576C18
.bss start:0x8058F210 end:0x80594FA0
toBeSorted/d_effects_1.cpp:
toBeSorted/d_emitter.cpp:
.text start:0x800268B0 end:0x8002B99C align:16
.ctors start:0x804DB660 end:0x804DB664
.rodata start:0x804DBD18 end:0x804DBE80
.data start:0x80500E98 end:0x805014C0
.sdata start:0x805718A8 end:0x80571920
.sbss start:0x80575070 end:0x80575080
.sdata2 start:0x80576C18 end:0x80576C68
.bss start:0x80594FA0 end:0x80597020
toBeSorted/d_effects_2.cpp:
.text start:0x8002B9A0 end:0x8002C128 align:16
+152 -152
View File
@@ -603,8 +603,8 @@ fn_80019290 = .text:0x80019290; // type:function size:0x5C
fn_800192F0 = .text:0x800192F0; // type:function size:0x6C
doDraw__Q23d3d14EggTextureProcFv = .text:0x80019360; // type:function size:0x204
doRemove__Q23d3d14EggTextureProcFv = .text:0x80019570; // type:function size:0x44
create__Q23d3d14EggTextureProcFiiP12mAllocator_c = .text:0x800195C0; // type:function size:0xAC
createXlu__Q23d3d14EggTextureProcFiP12mAllocator_c = .text:0x80019670; // type:function size:0x74
create__Q23d3d7UnkProcFiiP12mAllocator_c = .text:0x800195C0; // type:function size:0xAC
createXlu__Q23d3d7UnkProcFiP12mAllocator_c = .text:0x80019670; // type:function size:0x74
fn_800196F0 = .text:0x800196F0; // type:function size:0x90
fn_80019780 = .text:0x80019780; // type:function size:0x6C
fn_800197F0 = .text:0x800197F0; // type:function size:0x5C
@@ -693,19 +693,19 @@ fn_8001D950 = .text:0x8001D950; // type:function size:0x22C
fn_8001DB80 = .text:0x8001DB80; // type:function size:0x74
fn_8001DC00 = .text:0x8001DC00; // type:function size:0x764
fn_8001E370 = .text:0x8001E370; // type:function size:0xD4
fn_8001E450 = .text:0x8001E450; // type:function size:0xE0
fn_8001E530 = .text:0x8001E530; // type:function size:0xA0
fn_8001E5D0 = .text:0x8001E5D0; // type:function size:0x110
fn_8001E6E0 = .text:0x8001E6E0; // type:function size:0xC
fn_8001E6F0 = .text:0x8001E6F0; // type:function size:0x2C
fn_8001E720 = .text:0x8001E720; // type:function size:0x14
init__14dShpProcBase_cFQ34nw4r3g3d6ResMatQ34nw4r3g3d6ResShplbPUl = .text:0x8001E450; // type:function size:0xE0
setupLight__14dShpProcBase_cFv = .text:0x8001E530; // type:function size:0xA0
draw__14dShpProcBase_cFP7mVec3_c = .text:0x8001E5D0; // type:function size:0x110
setResMat__14dShpProcBase_cFQ34nw4r3g3d6ResMat = .text:0x8001E6E0; // type:function size:0xC
setAllFlags__14dShpProcBase_cFv = .text:0x8001E6F0; // type:function size:0x2C
doEntry__14dShpProcBase_cFl = .text:0x8001E720; // type:function size:0x14
fn_8001E740 = .text:0x8001E740; // type:function size:0x54
fn_8001E7A0 = .text:0x8001E7A0; // type:function size:0x2C8
fn_8001EA70 = .text:0x8001EA70; // type:function size:0x4
fn_8001EA80 = .text:0x8001EA80; // type:function size:0x1DC
fn_8001EC60 = .text:0x8001EC60; // type:function size:0x4
fn_8001EC70 = .text:0x8001EC70; // type:function size:0x118
fn_8001ED90 = .text:0x8001ED90; // type:function size:0x1F0
__ct__6mMtx_cFv = .text:0x8001EC60; // type:function size:0x4
create__11dShpProc1_cFQ34nw4r3g3d6ResMatQ34nw4r3g3d6ResShplP16mHeapAllocator_cbPUl = .text:0x8001EC70; // type:function size:0x118
draw__11dShpProc1_cFv = .text:0x8001ED90; // type:function size:0x1F0
fn_8001EF80 = .text:0x8001EF80; // type:function size:0x124
fn_8001F0B0 = .text:0x8001F0B0; // type:function size:0x88
fn_8001F140 = .text:0x8001F140; // type:function size:0x1C4
@@ -886,129 +886,129 @@ fn_80026540 = .text:0x80026540; // type:function size:0x40
fn_80026580 = .text:0x80026580; // type:function size:0x188
fn_80026710 = .text:0x80026710; // type:function size:0x4C
fn_80026760 = .text:0x80026760; // type:function size:0x4C
fn_800267B0 = .text:0x800267B0; // type:function size:0x4C
fn_80026800 = .text:0x80026800; // type:function size:0x4C
getLightColor1__21BlurAndPaletteManagerFv = .text:0x800267B0; // type:function size:0x4C
getLightColor2__21BlurAndPaletteManagerFv = .text:0x80026800; // type:function size:0x4C
__sinit_\blur_and_palette_manager_cpp = .text:0x80026850; // type:function size:0x5C scope:local
fn_800268B0 = .text:0x800268B0; // type:function size:0xB4
fn_80026970 = .text:0x80026970; // type:function size:0x88
fn_80026A00 = .text:0x80026A00; // type:function size:0xB4
fn_80026AC0 = .text:0x80026AC0; // type:function size:0x88
fn_80026B50 = .text:0x80026B50; // type:function size:0x98
fn_80026BF0 = .text:0x80026BF0; // type:function size:0x8
fn_80026C00 = .text:0x80026C00; // type:function size:0x144
fn_80026D50 = .text:0x80026D50; // type:function size:0x4
fn_80026D60 = .text:0x80026D60; // type:function size:0x4
fn_80026D70 = .text:0x80026D70; // type:function size:0x3C
fn_80026DB0 = .text:0x80026DB0; // type:function size:0xA0
fn_80026E50 = .text:0x80026E50; // type:function size:0x3C
fn_80026E90 = .text:0x80026E90; // type:function size:0x3C
fn_80026ED0__13EffectsStructFv = .text:0x80026ED0; // type:function size:0x3C
fn_80026F10__13EffectsStructFv = .text:0x80026F10; // type:function size:0x3C
fn_80026F50 = .text:0x80026F50; // type:function size:0xD8
fn_80027030 = .text:0x80027030; // type:function size:0xD8
fn_80027110 = .text:0x80027110; // type:function size:0xC8
fn_800271E0__13EffectsStructFP7mVec3_cP7mAng3_cP7mVec3_c = .text:0x800271E0; // type:function size:0x44
setMtx__13EffectsStructFRC6mMtx_c = .text:0x80027230; // type:function size:0x78
fn_800272B0 = .text:0x800272B0; // type:function size:0x70
fn_80027320__13EffectsStructFUc = .text:0x80027320; // type:function size:0x40
fn_80027360 = .text:0x80027360; // type:function size:0x40
fn_800273A0 = .text:0x800273A0; // type:function size:0x54
fn_80027400 = .text:0x80027400; // type:function size:0x4C
fn_80027450 = .text:0x80027450; // type:function size:0x40
fn_80027490 = .text:0x80027490; // type:function size:0x40
fn_800274D0 = .text:0x800274D0; // type:function size:0x40
fn_80027510 = .text:0x80027510; // type:function size:0x4C
fn_80027560 = .text:0x80027560; // type:function size:0x5C
__dt__18dEmitterCallback_cFv = .text:0x800268B0; // type:function size:0xB4
remove__18dEmitterCallback_cFP14dEmitterBase_c = .text:0x80026970; // type:function size:0x88
__dt__19dParticleCallback_cFv = .text:0x80026A00; // type:function size:0xB4
remove__19dParticleCallback_cFP14dEmitterBase_c = .text:0x80026AC0; // type:function size:0x88
__dt__14dEmitterBase_cFv = .text:0x80026B50; // type:function size:0x98
GetNextEmitter__14dEmitterBase_cFP14JPABaseEmitter = .text:0x80026BF0; // type:function size:0x8
createEmitters__14dEmitterBase_cFUsRC7mVec3_cPC7mAng3_cPC7mVec3_cPC8_GXColorPC8_GXColorll = .text:0x80026C00; // type:function size:0x144
create__18dEmitterCallback_cFP14JPABaseEmitter = .text:0x80026D50; // type:function size:0x4
create__19dParticleCallback_cFP14JPABaseEmitter = .text:0x80026D60; // type:function size:0x4
setImmortal__14dEmitterBase_cFv = .text:0x80026D70; // type:function size:0x3C
deactivateEmitters__14dEmitterBase_cFv = .text:0x80026DB0; // type:function size:0xA0
stopCalcEmitters__14dEmitterBase_cFv = .text:0x80026E50; // type:function size:0x3C
playCalcEmitters__14dEmitterBase_cFv = .text:0x80026E90; // type:function size:0x3C
stopDrawParticles__14dEmitterBase_cFv = .text:0x80026ED0; // type:function size:0x3C
playDrawParticles__14dEmitterBase_cFv = .text:0x80026F10; // type:function size:0x3C
setEmitterCallback__14dEmitterBase_cFP18dEmitterCallback_c = .text:0x80026F50; // type:function size:0xD8
setParticleCallback__14dEmitterBase_cFP19dParticleCallback_c = .text:0x80027030; // type:function size:0xD8
setPosRotScale__14dEmitterBase_cFRC7mVec3_cPC7mAng3_cPC7mVec3_c = .text:0x80027110; // type:function size:0xC8
setPosRotScaleWithScreenScale__14dEmitterBase_cFRC7mVec3_cPC7mAng3_cPC7mVec3_c = .text:0x800271E0; // type:function size:0x44
setTransform__14dEmitterBase_cFRC6mMtx_c = .text:0x80027230; // type:function size:0x78
loadColors__14dEmitterBase_cFPC8_GXColorPC8_GXColorll = .text:0x800272B0; // type:function size:0x70
setGlobalAlpha__14dEmitterBase_cFUc = .text:0x80027320; // type:function size:0x40
setRate__14dEmitterBase_cFf = .text:0x80027360; // type:function size:0x40
setDynamicsScale__14dEmitterBase_cFRC7mVec3_c = .text:0x800273A0; // type:function size:0x54
setParticleScale__14dEmitterBase_cFRC7mVec3_c = .text:0x80027400; // type:function size:0x4C
setAwayFromCenterSpeed__14dEmitterBase_cFf = .text:0x80027450; // type:function size:0x40
setVolumeSize__14dEmitterBase_cFUs = .text:0x80027490; // type:function size:0x40
setLifeTime__14dEmitterBase_cFs = .text:0x800274D0; // type:function size:0x40
attachEmitterCallbackId__14dEmitterBase_cFl = .text:0x80027510; // type:function size:0x4C
bindShpEmitter__14dEmitterBase_cFlb = .text:0x80027560; // type:function size:0x5C
__ct__13EffectsStructFv = .text:0x800275C0; // type:function size:0x44
__ct__13EffectsStructFP7dBase_c = .text:0x80027610; // type:function size:0x44
__dt__13EffectsStructFv = .text:0x80027660; // type:function size:0x78
remove__13EffectsStructFb = .text:0x800276E0; // type:function size:0x84
fn_80027770 = .text:0x80027770; // type:function size:0xE8
fn_80027860 = .text:0x80027860; // type:function size:0xC8
fn_80027930 = .text:0x80027930; // type:function size:0x130
fn_80027A60 = .text:0x80027A60; // type:function size:0x44
fn_80027AB0 = .text:0x80027AB0; // type:function size:0x6C
fn_80027B20 = .text:0x80027B20; // type:function size:0x24
fn_80027B50 = .text:0x80027B50; // type:function size:0x80
fn_80027BD0 = .text:0x80027BD0; // type:function size:0xD8
fn_80027CB0 = .text:0x80027CB0; // type:function size:0x100
fn_80027DB0 = .text:0x80027DB0; // type:function size:0xC
fn_80027DC0 = .text:0x80027DC0; // type:function size:0x250
fn_80028010 = .text:0x80028010; // type:function size:0x6C
fn_80028080 = .text:0x80028080; // type:function size:0x100
fn_80028180 = .text:0x80028180; // type:function size:0x10
fn_80028190 = .text:0x80028190; // type:function size:0x270
fn_80028400 = .text:0x80028400; // type:function size:0x18
fn_80028420 = .text:0x80028420; // type:function size:0x58
fn_80028480 = .text:0x80028480; // type:function size:0x170
fn_800285F0 = .text:0x800285F0; // type:function size:0x19C
fn_80028790 = .text:0x80028790; // type:function size:0x88
fn_80028820 = .text:0x80028820; // type:function size:0x9C
fn_800288C0 = .text:0x800288C0; // type:function size:0x38
fn_80028900 = .text:0x80028900; // type:function size:0x180
fn_80028A80 = .text:0x80028A80; // type:function size:0x434
fn_80028EC0 = .text:0x80028EC0; // type:function size:0xCC
fn_80028F90 = .text:0x80028F90; // type:function size:0xE0
fn_80029070 = .text:0x80029070; // type:function size:0x4
playEffects = .text:0x80029080; // type:function size:0x1A8
fn_80029230 = .text:0x80029230; // type:function size:0xB0
fn_800292E0 = .text:0x800292E0; // type:function size:0x18
fn_80029300 = .text:0x80029300; // type:function size:0x94
fn_800293A0 = .text:0x800293A0; // type:function size:0x1EC
EffectManager__ctor = .text:0x80029590; // type:function size:0xC8
fn_80029660 = .text:0x80029660; // type:function size:0x90
EffectManager__dtor = .text:0x800296F0; // type:function size:0xBC
fn_800297B0 = .text:0x800297B0; // type:function size:0x90
fn_80029840 = .text:0x80029840; // type:function size:0x6C
fn_800298B0 = .text:0x800298B0; // type:function size:0x4
fn_800298C0__13EffectsStructFUsP7mVec3_cPvPvPvPv = .text:0x800298C0; // type:function size:0x4C
fn_80029910 = .text:0x80029910; // type:function size:0x4
fn_80029920 = .text:0x80029920; // type:function size:0x54
fn_80029980__13EffectsStructFUsP7mVec3_cP7mAng3_cP7mVec3_cPvPv = .text:0x80029980; // type:function size:0x64
fn_800299F0__13EffectsStructFUsP6mMtx_cPvPv = .text:0x800299F0; // type:function size:0x20
fn_80029A10__13EffectsStructFUsP7mVec3_cP7mAng3_cP7mVec3_cPvPv = .text:0x80029A10; // type:function size:0x54
fn_80029A70__13EffectsStructFUsP7mVec3_cP7mAng3_cP7mVec3_cPvPv = .text:0x80029A70; // type:function size:0x64
fn_80029AE0 = .text:0x80029AE0; // type:function size:0x20
fn_80029B00 = .text:0x80029B00; // type:function size:0xD8
fn_80029BE0 = .text:0x80029BE0; // type:function size:0x43C
fn_8002A020 = .text:0x8002A020; // type:function size:0xA4
fn_8002A0D0 = .text:0x8002A0D0; // type:function size:0x15C
fn_8002A230 = .text:0x8002A230; // type:function size:0x150
fn_8002A380 = .text:0x8002A380; // type:function size:0xCC
fn_8002A450 = .text:0x8002A450; // type:function size:0x1C0
addToActiveEmittersList__13EffectsStructFUsb = .text:0x80027770; // type:function size:0xE8
areAllEmittersDone__13EffectsStructFv = .text:0x80027860; // type:function size:0xC8
execute__13EffectsStructFv = .text:0x80027930; // type:function size:0x130
getOwnerPolyAttrs__13EffectsStructFPlPl = .text:0x80027A60; // type:function size:0x44
realizeAlpha__13EffectsStructFv = .text:0x80027AB0; // type:function size:0x6C
setFading__13EffectsStructFUc = .text:0x80027B20; // type:function size:0x24
create__18dParticleFogProc_cFUlllP16mHeapAllocator_c = .text:0x80027B50; // type:function size:0x80
doDraw__18dParticleFogProc_cFv = .text:0x80027BD0; // type:function size:0xD8
draw__11dEffect2D_cFv = .text:0x80027CB0; // type:function size:0x100
create__11dEffect2D_cFUlUc = .text:0x80027DB0; // type:function size:0xC
doDraw__15dShpEmitterProcFv = .text:0x80027DC0; // type:function size:0x250
create__13dShpEmitter_cFP16mHeapAllocator_c = .text:0x80028010; // type:function size:0x6C
init__13dShpEmitter_cFPCcPCcb = .text:0x80028080; // type:function size:0x100
clear__13dShpEmitter_cFv = .text:0x80028180; // type:function size:0x10
draw__13dShpEmitter_cFP14JPABaseEmitterP15JPABaseParticle = .text:0x80028190; // type:function size:0x270
draw__21CommonEmitterCallbackFP14JPABaseEmitter = .text:0x80028400; // type:function size:0x18
start__25dMassObjEmitterCallback_cFRC7mVec3_cP12dAcObjBase_c = .text:0x80028420; // type:function size:0x58
executeAfter__25dMassObjEmitterCallback_cFP14JPABaseEmitter = .text:0x80028480; // type:function size:0x170
execute__25dMassObjEmitterCallback_cFv = .text:0x800285F0; // type:function size:0x19C
clear__25dMassObjEmitterCallback_cFv = .text:0x80028790; // type:function size:0x88
create__17dMassObjEmitter_cFUs = .text:0x80028820; // type:function size:0x9C
remove__17dMassObjEmitter_cFv = .text:0x800288C0; // type:function size:0x38
getGroupId__14dJEffManager_cFUs = .text:0x80028900; // type:function size:0x180
setupEffects__14dJEffManager_cFv = .text:0x80028A80; // type:function size:0x434
removeEffManagers__14dJEffManager_cFv = .text:0x80028EC0; // type:function size:0xCC
doCustomSkywardSwordThing__14dJEffManager_cFff = .text:0x80028F90; // type:function size:0xE0
vt_0x20__18dEmitterCallback_cFff = .text:0x80029070; // type:function size:0x4
execute__14dJEffManager_cFv = .text:0x80029080; // type:function size:0x1A8
draw__14dJEffManager_cFv = .text:0x80029230; // type:function size:0xB0
draw__14dJEffManager_cFPC11JPADrawInfoUl = .text:0x800292E0; // type:function size:0x18
shouldBePaused__14dJEffManager_cFP7dBase_c = .text:0x80029300; // type:function size:0x94
createEffManagers__14dJEffManager_cFv = .text:0x800293A0; // type:function size:0x1EC
__ct__17dMassObjEmitter_cFv = .text:0x80029590; // type:function size:0xC8
__dt__25dMassObjEmitterCallback_cFv = .text:0x80029660; // type:function size:0x90
__dt__17dMassObjEmitter_cFv = .text:0x800296F0; // type:function size:0xBC
spawnEffectInternal__14dJEffManager_cFUsRC7mVec3_cPC7mAng3_cPC7mVec3_cPC8_GXColorPC8_GXColorll = .text:0x800297B0; // type:function size:0x90
spawnEffectInternal__14dJEffManager_cFUsRC6mMtx_cPC8_GXColorPC8_GXColorll = .text:0x80029840; // type:function size:0x6C
spawnEffect__14dJEffManager_cFUsRC7mVec3_cPC7mAng3_cPC7mVec3_cPC8_GXColorPC8_GXColorll = .text:0x800298B0; // type:function size:0x4
spawnUIEffect__14dJEffManager_cFUsRC7mVec3_cPC7mAng3_cPC7mVec3_cPC8_GXColorPC8_GXColor = .text:0x800298C0; // type:function size:0x4C
spawnEffect__14dJEffManager_cFUsRC6mMtx_cPC8_GXColorPC8_GXColorll = .text:0x80029910; // type:function size:0x4
createEffect__13EffectsStructFUsRC7mVec3_cPC7mAng3_cPC7mVec3_cPC8_GXColorPC8_GXColor = .text:0x80029920; // type:function size:0x54
createUIEffect__13EffectsStructFUsRC7mVec3_cPC7mAng3_cPC7mVec3_cPC8_GXColorPC8_GXColor = .text:0x80029980; // type:function size:0x64
createEffect__13EffectsStructFUsRC6mMtx_cPC8_GXColorPC8_GXColor = .text:0x800299F0; // type:function size:0x20
createContinuousEffect__13EffectsStructFUsRC7mVec3_cPC7mAng3_cPC7mVec3_cPC8_GXColorPC8_GXColor = .text:0x80029A10; // type:function size:0x54
createContinuousUIEffect__13EffectsStructFUsRC7mVec3_cPC7mAng3_cPC7mVec3_cPC8_GXColorPC8_GXColor = .text:0x80029A70; // type:function size:0x64
createContinuousEffect__13EffectsStructFUsRC6mMtx_cPC8_GXColorPC8_GXColor = .text:0x80029AE0; // type:function size:0x20
createMassObjEffect__14dJEffManager_cFUsRC7mVec3_cP12dAcObjBase_cPC6mColor = .text:0x80029B00; // type:function size:0xD8
loadColors__14dEmitterBase_cFP14JPABaseEmitterPC8_GXColorPC8_GXColorll = .text:0x80029BE0; // type:function size:0x43C
removeFromActiveEmittersList__13EffectsStructFv = .text:0x8002A020; // type:function size:0xA4
createEffect__13EffectsStructFbUsRC7mVec3_cPC7mAng3_cPC7mVec3_cPC8_GXColorPC8_GXColor = .text:0x8002A0D0; // type:function size:0x15C
createEffect__13EffectsStructFbUsRC6mMtx_cPC8_GXColorPC8_GXColor = .text:0x8002A230; // type:function size:0x150
polyAttrsToGroundEffectIdx__14dJEffManager_cFll = .text:0x8002A380; // type:function size:0xCC
spawnGroundEffect__14dJEffManager_cFRC7mVec3_cUcUcRC7mVec3_clff = .text:0x8002A450; // type:function size:0x1C0
fn_8002A610 = .text:0x8002A610; // type:function size:0x678
fn_8002AC90 = .text:0x8002AC90; // type:function size:0x460
fn_8002B0F0 = .text:0x8002B0F0; // type:function size:0x8
init__17EffectsStruct_ExtFP7dBase_cfff = .text:0x8002B100; // type:function size:0x14
fn_8002B120__17EffectsStruct_ExtFff = .text:0x8002B120; // type:function size:0x1F4
fn_8002B320 = .text:0x8002B320; // type:function size:0x4
fn_8002B330 = .text:0x8002B330; // type:function size:0x4
fn_8002B340 = .text:0x8002B340; // type:function size:0x4
fn_8002B350 = .text:0x8002B350; // type:function size:0x4
fn_8002B360 = .text:0x8002B360; // type:function size:0x58
fn_8002B3C0 = .text:0x8002B3C0; // type:function size:0x4
fn_8002B3D0 = .text:0x8002B3D0; // type:function size:0x7C
fn_8002B450 = .text:0x8002B450; // type:function size:0x68
fn_8002B4C0 = .text:0x8002B4C0; // type:function size:0x5C
fn_8002B520 = .text:0x8002B520; // type:function size:0x58
fn_8002B580 = .text:0x8002B580; // type:function size:0x4
fn_8002B590 = .text:0x8002B590; // type:function size:0x4
fn_8002B5A0 = .text:0x8002B5A0; // type:function size:0x58
fn_8002B600 = .text:0x8002B600; // type:function size:0x5C
fn_8002B660 = .text:0x8002B660; // type:function size:0x4
fn_8002B670 = .text:0x8002B670; // type:function size:0x4
fn_8002B680 = .text:0x8002B680; // type:function size:0x4
fn_8002B690 = .text:0x8002B690; // type:function size:0x4
fn_8002B6A0 = .text:0x8002B6A0; // type:function size:0x4
initEffectsThingsMaybe = .text:0x8002B6B0; // type:function size:0x158
fn_8002B810 = .text:0x8002B810; // type:function size:0x18
fn_8002B830 = .text:0x8002B830; // type:function size:0x1C
fn_8002B850 = .text:0x8002B850; // type:function size:0x78
fn_8002B8D0 = .text:0x8002B8D0; // type:function size:0x1C
fn_8002B8F0 = .text:0x8002B8F0; // type:function size:0x44
fn_8002B940 = .text:0x8002B940; // type:function size:0x1C
fn_8002B960 = .text:0x8002B960; // type:function size:0x18
fn_8002B980 = .text:0x8002B980; // type:function size:0x1C
init__14dWaterEffect_cFP12dAcObjBase_cfff = .text:0x8002B100; // type:function size:0x14
execute__14dWaterEffect_cFff = .text:0x8002B120; // type:function size:0x1F4
drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter = .text:0x8002B320; // type:function size:0x4
draw__18JPAEmitterCallBackFP14JPABaseEmitter = .text:0x8002B330; // type:function size:0x4
execute__18JPAEmitterCallBackFP14JPABaseEmitter = .text:0x8002B340; // type:function size:0x4
executeAfter__18JPAEmitterCallBackFP14JPABaseEmitter = .text:0x8002B350; // type:function size:0x4
__dt__21CommonEmitterCallbackFv = .text:0x8002B360; // type:function size:0x58
execute__19JPAParticleCallBackFP14JPABaseEmitterP15JPABaseParticle = .text:0x8002B3C0; // type:function size:0x4
__dt__13dShpEmitter_cFv = .text:0x8002B3D0; // type:function size:0x7C
__dt__15dShpEmitterProcFv = .text:0x8002B450; // type:function size:0x68
__dt__11dShpProc1_cFv = .text:0x8002B4C0; // type:function size:0x5C
__dt__14dShpProcBase_cFv = .text:0x8002B520; // type:function size:0x58
drawXlu__15dShpEmitterProcFv = .text:0x8002B580; // type:function size:0x4
drawOpa__15dShpEmitterProcFv = .text:0x8002B590; // type:function size:0x4
__dt__11dEffect2D_cFv = .text:0x8002B5A0; // type:function size:0x58
__dt__18dParticleFogProc_cFv = .text:0x8002B600; // type:function size:0x5C
drawXlu__18dParticleFogProc_cFv = .text:0x8002B660; // type:function size:0x4
drawOpa__18dParticleFogProc_cFv = .text:0x8002B670; // type:function size:0x4
draw__19JPAParticleCallBackFP14JPABaseEmitterP15JPABaseParticle = .text:0x8002B680; // type:function size:0x4
drawXlu__11dShpProc1_cFv = .text:0x8002B690; // type:function size:0x4
drawOpa__11dShpProc1_cFv = .text:0x8002B6A0; // type:function size:0x4
__sinit_\d_emitter_cpp = .text:0x8002B6B0; // type:function size:0x158 scope:local
__ct__21CommonEmitterCallbackFv = .text:0x8002B810; // type:function size:0x18
__arraydtor$9497 = .text:0x8002B830; // type:function size:0x1C scope:local
__ct__13dShpEmitter_cFv = .text:0x8002B850; // type:function size:0x78
__arraydtor$9499 = .text:0x8002B8D0; // type:function size:0x1C scope:local
__ct__18dParticleFogProc_cFv = .text:0x8002B8F0; // type:function size:0x44
__arraydtor$9502 = .text:0x8002B940; // type:function size:0x1C scope:local
__ct__11dEffect2D_cFv = .text:0x8002B960; // type:function size:0x18
__arraydtor$9504 = .text:0x8002B980; // type:function size:0x1C scope:local
fn_8002B9A0 = .text:0x8002B9A0; // type:function size:0x30
fn_8002B9D0 = .text:0x8002B9D0; // type:function size:0x10C
fn_8002BAE0 = .text:0x8002BAE0; // type:function size:0x228
@@ -10595,7 +10595,7 @@ fn_8019A020 = .text:0x8019A020; // type:function size:0xC
fn_8019A030 = .text:0x8019A030; // type:function size:0x1C
fn_8019A050 = .text:0x8019A050; // type:function size:0x1C
fn_8019A070 = .text:0x8019A070; // type:function size:0x30
fn_8019A0A0 = .text:0x8019A0A0; // type:function size:0x20
getGlobalAlpha__11dStageMgr_cCFv = .text:0x8019A0A0; // type:function size:0x20
fn_8019A0C0 = .text:0x8019A0C0; // type:function size:0x2C8
fn_8019A390 = .text:0x8019A390; // type:function size:0x44
fn_8019A3E0 = .text:0x8019A3E0; // type:function size:0x2C8
@@ -17850,8 +17850,8 @@ ZXYrotM__6mMtx_cFRC4mAngRC4mAngRC4mAng = .text:0x802F1A40; // type:function size
mMtx__XYZrotS = .text:0x802F1AA0; // type:function size:0x60
mMtx__ZYXrotM = .text:0x802F1B00; // type:function size:0x60
toRot__6mMtx_cCFR7mAng3_c = .text:0x802F1B60; // type:function size:0xDC
fn_802F1C40 = .text:0x802F1C40; // type:function size:0x220
mMtx_c__makeRotationFromVecs = .text:0x802F1E60; // type:function size:0x58
fn_802F1C40__6mMtx_cFll = .text:0x802F1C40; // type:function size:0x220
makeRotationFromVecs__6mMtx_cFRC7mVec3_cRC7mVec3_cf = .text:0x802F1E60; // type:function size:0x58
__sinit_\m_mtx_cpp = .text:0x802F1EC0; // type:function size:0x58 scope:local
create__4mPadFv = .text:0x802F1F20; // type:function size:0x30
beginPad__4mPadFv = .text:0x802F1F50; // type:function size:0x1E4
@@ -27773,7 +27773,7 @@ lbl_804DBC38 = .rodata:0x804DBC38; // type:object size:0x40
lbl_804DBC78 = .rodata:0x804DBC78; // type:object size:0x50 data:4byte
GRADIENT_LIGHT_TEXTURE_DEFS = .rodata:0x804DBCC8; // type:object size:0x40 data:4byte
lbl_804DBD08 = .rodata:0x804DBD08; // type:object size:0x10 data:float
lbl_804DBD18 = .rodata:0x804DBD18; // type:object size:0x28
moreInts__14dJEffManager_c = .rodata:0x804DBD18; // type:object size:0x28
lbl_804DBD40 = .rodata:0x804DBD40; // type:object size:0x134
lbl_804DBE74 = .rodata:0x804DBE74; // type:object size:0xC
lbl_804DBE80 = .rodata:0x804DBE80; // type:object size:0xB8
@@ -28364,7 +28364,7 @@ GET_POTION_BOTTLE_DEFS = .rodata:0x804E9610; // type:object size:0x40
ITEM_MODEL_INDEX = .rodata:0x804E9650; // type:object size:0xA8
ITEM_MODEL_DEFS = .rodata:0x804E96F8; // type:object size:0x350
RUPEE_ITEM_TO_TEX_FRAME = .rodata:0x804E9A48; // type:object size:0x38 data:2byte
lbl_804E9A80 = .rodata:0x804E9A80; // type:object size:0x18 data:2byte
sEffectResourceIds = .rodata:0x804E9A80; // type:object size:0x18 data:2byte
lbl_804E9A98 = .rodata:0x804E9A98; // type:object size:0x10
lbl_804E9AA8 = .rodata:0x804E9AA8; // type:object size:0x10
blanMap = .rodata:0x804E9AB8; // type:object size:0x18 scope:local data:4byte
@@ -29904,17 +29904,17 @@ __vt__21BlurAndPaletteManager = .data:0x80500E80; // type:object size:0xC
lbl_80500E8C = .data:0x80500E8C; // type:object size:0xC
lbl_80500E98 = .data:0x80500E98; // type:object size:0x10 data:string
lbl_80500EA8 = .data:0x80500EA8; // type:object size:0x444
lbl_805012EC = .data:0x805012EC; // type:object size:0xC
lbl_805012F8 = .data:0x805012F8; // type:object size:0x24
lbl_8050131C = .data:0x8050131C; // type:object size:0x1C
lbl_80501338 = .data:0x80501338; // type:object size:0x14
lbl_8050134C = .data:0x8050134C; // type:object size:0x2C
lbl_80501378 = .data:0x80501378; // type:object size:0x10
lbl_80501388 = .data:0x80501388; // type:object size:0x30
lbl_805013B8 = .data:0x805013B8; // type:object size:0x18
lbl_805013D0 = .data:0x805013D0; // type:object size:0x24
lbl_805013F4 = .data:0x805013F4; // type:object size:0xC
lbl_80501400 = .data:0x80501400; // type:object size:0xC0
__vt__17dMassObjEmitter_c = .data:0x805012EC; // type:object size:0xC
__vt__25dMassObjEmitterCallback_c = .data:0x805012F8; // type:object size:0x24
__vt__21CommonEmitterCallback = .data:0x8050131C; // type:object size:0x1C
__vt__13dShpEmitter_c = .data:0x80501338; // type:object size:0x14
__vt__15dShpEmitterProc = .data:0x8050134C; // type:object size:0x2C
__vt__11dEffect2D_c = .data:0x80501378; // type:object size:0x10
__vt__18dParticleFogProc_c = .data:0x80501388; // type:object size:0x2C
__vt__19dParticleCallback_c = .data:0x805013B8; // type:object size:0x18
__vt__18dEmitterCallback_c = .data:0x805013D0; // type:object size:0x24
__vt__13EffectsStruct = .data:0x805013F4; // type:object size:0xC
__vt__14dEmitterBase_c = .data:0x80501400; // type:object size:0xC
lbl_805014C0 = .data:0x805014C0; // type:object size:0x28
lbl_805014E8 = .data:0x805014E8; // type:object size:0x18
lbl_80501500 = .data:0x80501500; // type:object size:0x28
@@ -39892,10 +39892,10 @@ lbl_80575058 = .sbss:0x80575058; // type:object size:0x8 data:byte
lbl_80575060 = .sbss:0x80575060; // type:object size:0x1 data:byte
lbl_80575064 = .sbss:0x80575064; // type:object size:0x4 data:4byte
sPInstance__21BlurAndPaletteManager = .sbss:0x80575068; // type:object size:0x8 data:4byte
lbl_80575070 = .sbss:0x80575070; // type:object size:0x4 data:4byte
sMassObjEmitters__14dJEffManager_c = .sbss:0x80575070; // type:object size:0x4 data:4byte
CURRENT_EFFECT_MANAGER_INIT = .sbss:0x80575074; // type:object size:0x4 data:4byte
lbl_80575078 = .sbss:0x80575078; // type:object size:0x4 data:4byte
lbl_8057507C = .sbss:0x8057507C; // type:object size:0x1 data:byte
ms_allocator__14dJEffManager_c = .sbss:0x80575078; // type:object size:0x4 data:4byte
@GUARD@spawnGroundEffect__14dJEffManager_cFRC7mVec3_cUcUcRC7mVec3_clff@sEffArray = .sbss:0x8057507C; // type:object size:0x1 data:byte
lbl_8057507D = .sbss:0x8057507D; // type:object size:0x1 data:byte
s_Create_Position__9dAcBase_c = .sbss:0x80575080; // type:object size:0x4 data:4byte
s_Create_Rotation__9dAcBase_c = .sbss:0x80575084; // type:object size:0x4 data:4byte
@@ -44209,7 +44209,7 @@ PARTICLE_RESOURCE_ID_MAPPING_991_ = .sdata2:0x8057AB6E; // type:object size:0x2
PARTICLE_RESOURCE_ID_MAPPING_992_ = .sdata2:0x8057AB70; // type:object size:0x2 data:2byte
lbl_8057AB72 = .sdata2:0x8057AB72; // type:object size:0x2 data:2byte
lbl_8057AB74 = .sdata2:0x8057AB74; // type:object size:0x2 data:2byte
EffectManager__NumberOfManagers = .sdata2:0x8057AB78; // type:object size:0x8 data:4byte
sNumMassObjEmitters = .sdata2:0x8057AB78; // type:object size:0x8 data:4byte
lbl_8057AB80 = .sdata2:0x8057AB80; // type:object size:0x8 data:byte
lbl_8057AB88 = .sdata2:0x8057AB88; // type:object size:0x4 data:float
lbl_8057AB8C = .sdata2:0x8057AB8C; // type:object size:0x4 data:float
@@ -48465,12 +48465,12 @@ lbl_8058F1F0 = .bss:0x8058F1F0; // type:object size:0x20 data:byte
lbl_8058F210 = .bss:0x8058F210; // type:object size:0x10
sInstance__21BlurAndPaletteManager = .bss:0x8058F220; // type:object size:0x5D70
lbl_80594F90 = .bss:0x80594F90; // type:object size:0x10 data:4byte
lbl_80594FA0 = .bss:0x80594FA0; // type:object size:0x18 data:4byte
lbl_80594FB8 = .bss:0x80594FB8; // type:object size:0x1C
lbl_80594FD4 = .bss:0x80594FD4; // type:object size:0x1E2C
GLOBAL_EFFECT_THING = .bss:0x80596E00; // type:object size:0x30 data:4byte
lbl_80596E30 = .bss:0x80596E30; // type:object size:0x18C
lbl_80596FBC = .bss:0x80596FBC; // type:object size:0x3C
sPlayingEffectsList__14dJEffManager_c = .bss:0x80594FA0; // type:object size:0x18 data:4byte
sCommonEmitterCallbacks__14dJEffManager_c = .bss:0x80594FB8; // type:object size:0x1C
sShpEmitters__14dJEffManager_c = .bss:0x80594FD4; // type:object size:0x1E2C
sEmitter__14dJEffManager_c = .bss:0x80596E00; // type:object size:0x30 data:4byte
sFogProcs__14dJEffManager_c = .bss:0x80596E30; // type:object size:0x18C
s2DEffects__14dJEffManager_c = .bss:0x80596FBC; // type:object size:0x3C
lbl_80596FF8 = .bss:0x80596FF8; // type:object size:0x18 data:2byte
lbl_80597010 = .bss:0x80597010; // type:object size:0x10 data:2byte
lbl_80597020 = .bss:0x80597020; // type:object size:0x10 data:float
+1 -1
View File
@@ -389,7 +389,7 @@ config.libs = [
Object(NonMatching, "toBeSorted/d_unk_mdl_stuff_1.cpp"),
Object(NonMatching, "toBeSorted/d_unk_mdl_stuff_2.cpp"),
Object(NonMatching, "toBeSorted/blur_and_palette_manager.cpp"),
Object(NonMatching, "toBeSorted/d_effects_1.cpp"),
Object(NonMatching, "toBeSorted/d_emitter.cpp"),
Object(NonMatching, "toBeSorted/d_effects_2.cpp"),
Object(NonMatching, "toBeSorted/sound_info.cpp"),
Object(NonMatching, "d/a/d_a_base.cpp"),
+1
View File
@@ -10,6 +10,7 @@
*/
class JPADrawInfo {
public:
JPADrawInfo() {}
JPADrawInfo(Mtx param_0, f32 fovY, f32 aspect) {
MTXCopy(param_0, mCamMtx);
C_MTXLightPerspective(mPrjMtx, fovY, aspect, 0.5f, -0.5f, 0.5f, 0.5f);
+11 -3
View File
@@ -120,6 +120,7 @@ public:
void clearStatus(u32 status) { mStatus &= ~status; }
u32 checkStatus(u32 status) const { return (mStatus & status); }
bool checkFlag(u32 flag) const { return !!(mpRes->getDyn()->getFlag() & flag); }
u32 getDynResUserWork() const { return mpRes->getDyn()->getResUserWork(); }
u8 getResourceManagerID() const { return mResMgrID; }
u8 getGroupID() const { return mGroupID; }
u8 getDrawTimes() const { return mDrawTimes; }
@@ -131,9 +132,8 @@ public:
void setGlobalSRTMatrix(const Mtx m) {
JPASetRMtxSTVecfromMtx(m, mGlobalRot, &mGlobalScl, &mGlobalTrs);
// set is actually used here in debug
mGlobalPScl.x = mGlobalScl.x;
mGlobalPScl.y = mGlobalScl.y;
// "set is used in TP debug"
mGlobalPScl.set(mGlobalScl.x, mGlobalScl.y);
}
void setGlobalTranslation(f32 x, f32 y, f32 z) { mGlobalTrs.set(x, y, z); }
void setGlobalTranslation(const EGG::Vector3f& trs) { mGlobalTrs.set(trs); }
@@ -185,6 +185,14 @@ public:
mLocalScl.set(scale);
}
f32 getGlobalParticleScaleX() const {
return mGlobalPScl.x;
}
f32 getGlobalParticleScaleY() const {
return mGlobalPScl.y;
}
f32 get_r_f() { return mRndm.get_rndm_f(); }
f32 get_r_zp() { return mRndm.get_rndm_zp(); }
f32 get_r_zh() { return mRndm.get_rndm_zh(); }
+1 -1
View File
@@ -143,7 +143,7 @@ public:
rot_copy = rotation;
}
mVec3_c &GetPostion() {
mVec3_c &GetPosition() {
return position;
}
mAng3_c &GetRotation() {
+1 -1
View File
@@ -17,7 +17,7 @@
#include "s/s_State.hpp"
#include "toBeSorted/actor_event.h"
#include "toBeSorted/dowsing_target.h"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
class dAcItem_0xB34 {
public:
+1 -1
View File
@@ -9,7 +9,7 @@
#include "nw4r/g3d/res/g3d_resfile.h"
#include "s/s_State.hpp"
#include "s/s_StateID.hpp"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
class dAcArrow_c : public dAcObjBase_c {
public:
+1 -1
View File
@@ -13,7 +13,7 @@
#include "nw4r/g3d/res/g3d_resfile.h"
#include "s/s_State.hpp"
#include "s/s_StateID.hpp"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
// This may need its own file and could be independent of a bomb
class UnkBombColInfo : public cBgS_PolyInfo {
+1 -1
View File
@@ -13,7 +13,7 @@
#include "toBeSorted/actor_event.h"
#include "toBeSorted/actor_on_rail.h"
#include "toBeSorted/dowsing_target.h"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/time_proc.h"
class dAcODungeonShip_c : public dAcObjBase_c {
+1 -1
View File
@@ -17,7 +17,7 @@
#include "s/s_StateMgr.hpp"
#include "toBeSorted/actor_event.h"
#include "toBeSorted/attention.h"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
class dAcOSeatSword_c : public dAcObjBase_c {
public:
+1 -1
View File
@@ -9,7 +9,7 @@
#include "m/m_vec.h"
#include "nw4r/g3d/res/g3d_resfile.h"
#include "s/s_State.hpp"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
/**
* A callback implementation that controls the button node in the switch model.
+1 -1
View File
@@ -13,7 +13,7 @@
#include "s/s_State.hpp"
#include "s/s_StateMgr.hpp"
#include "toBeSorted/actor_event.h"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
class dAcOTowerHandD101_c : public dAcObjBase_c {
+1 -1
View File
@@ -8,7 +8,7 @@
#include "m/m3d/m_smdl.h"
#include "m/m_angle.h"
#include "nw4r/g3d/res/g3d_resfile.h"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
class dAcOtriforce_c : public dAcObjBase_c {
public:
+2 -2
View File
@@ -15,7 +15,7 @@
#include "m/m_vec.h"
#include "nw4r/g3d/res/g3d_resfile.h"
#include "s/s_State.hpp"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
class dAcOtubo_c : public dAcObjBase_c {
public:
@@ -90,7 +90,7 @@ private:
/* 0x764 */ dCcD_Sph mSph;
/* 0x8B4 */ STATE_MGR_DECLARE(dAcOtubo_c);
/* 0x8F0 */ dAcObjRef_unk mField_0x8F0;
/* 0x91C */ EffectsStruct_Ext mEff_0x91C;
/* 0x91C */ dWaterEffect_c mEff_0x91C;
/* 0x964 */ dAcRef_c<dAcNpcCeLady_c> mCeLady;
/* 0x970 */ dAcRef_c<dAcNpcCeFriend_c> mCeFriend;
/* 0x97C */ mQuat_c mQuat_0x97C;
+4 -4
View File
@@ -27,14 +27,14 @@ public:
/* 800509e0 */ static void initLoader();
/* 80050a00 */ static dBase_c *createBase(ProfileName, dBase_c *, u32, u8);
/* 80050a10 */ static dBase_c *createRoot(ProfileName, u32, u8);
inline bool isBasePropertyFlag(u32 flag) const {
return (baseProperties & flag) != 0;
}
private:
/* 800509c0 */ static int loadAsyncCallback();
/* 800509d0 */ static void unloadCallback();
inline bool isProcControlFlag(u32 flag) const {
return (baseProperties & flag) != 0;
}
public:
/* 805750c0 */ static u32 s_ExecuteControlFlags;
+1 -1
View File
@@ -9,7 +9,7 @@
#include "s/s_FStateID.hpp"
#include "s/s_State.hpp"
#include "s/s_StateID.hpp"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
struct CsGameConfigMaybe {
CsGameConfigMaybe();
+7 -5
View File
@@ -4,9 +4,9 @@
#include "d/col/bg/d_bg_s.h"
#include "d/col/cc/d_cc_s.h"
#include "d/d_base.h"
#include "d/d_bzs_types.h"
#include "d/d_dylink.h"
#include "d/d_fader.h"
#include "d/d_bzs_types.h"
#include "egg/gfx/eggScreen.h"
#include "m/m_allocator.h"
#include "m/m_dvd.h"
@@ -48,6 +48,8 @@ public:
STATE_FUNC_DECLARE(dStageMgr_c, RestartScene);
public:
u8 getGlobalAlpha() const;
bool isAreaTypeNormal() const;
bool isAreaTypeDungeon() const;
bool isAreaTypeSky() const;
@@ -119,7 +121,7 @@ public:
void setStif(const STIF *stif);
s16 getFlagIndex() const;
void setDemoName(const SizedString<16>& name) {
void setDemoName(const SizedString<16> &name) {
mDemoName = name;
}
@@ -169,16 +171,16 @@ private:
/* 0x7814 */ dParticle::tex_c mParticleTex[2];
// ...
/* 0x7930 */ dFader_c mFader;
/* 0x7954 */ u16 mPcamCount;
/* 0x7956 */ u16 mLyseCount;
/* 0x7958 */ u16 mRmplCount;
/* 0x795C */ const PCAM *mpPcam;
/* 0x7960 */ const LYSE *mpLyse;
/* 0x7964 */ const STIF *mpStif;
/* 0x7968 */ const RMPL *mpRmpl;
/* 0x799C */ mDvd_callback_c *mpDvdCallback;
/* 0x79A0 */ mDvd_callback_c *mpDvdCallback2;
@@ -8,7 +8,7 @@
#include "d/lyt/d_window.h"
#include "nw4r/lyt/lyt_pane.h"
#include "s/s_State.hpp"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
class dLytMeterItemSelectIcon_c {
public:
@@ -291,7 +291,7 @@ private:
/* 0x5778 */ f32 mArrowRotation;
/* 0x577C */ f32 mArrowLength;
/* 0x5780 */ f32 field_0x5780;
/* 0x5784 */ f32 field_0x5784;
/* 0x5784 */ f32 mEffectScale;
/* 0x5788 */ s32 field_0x5788;
/* 0x578C */ s32 field_0x578C;
/* 0x5790 */ s32 field_0x5790;
@@ -302,7 +302,7 @@ private:
/* 0x5798 */ u8 field_0x5798;
/* 0x5799 */ u8 field_0x5799;
/* 0x579A */ u8 field_0x579A;
/* 0x579B */ u8 field_0x579B;
/* 0x579B */ u8 mEffectAlpha;
/* 0x579C */ u8 mStoredBowVariant;
/* 0x579C */ u8 mStoredSlingshotVariant;
/* 0x579C */ u8 mStoredBeetleVariant;
+1 -1
View File
@@ -7,7 +7,7 @@
#include "d/lyt/d_window.h"
#include "nw4r/lyt/lyt_pane.h"
#include "s/s_State.hpp"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
// At 0x8, [8], size 0x48
class dLytMeterMinusBtnMenuIcon_c {
+4 -4
View File
@@ -8,12 +8,12 @@ namespace m3d {
class proc_c : public scnLeaf_c {
public:
virtual ~proc_c();
virtual int getType() const override;
/* vt 0x08 */ virtual ~proc_c();
/* vt 0x0C */ virtual int getType() const override;
bool create(mAllocator_c *, u32 *);
virtual void drawOpa();
virtual void drawXlu();
/* vt 0x18 */ virtual void drawOpa();
/* vt 0x1C */ virtual void drawXlu();
};
} // namespace m3d
+5 -4
View File
@@ -18,13 +18,14 @@ public:
UnkClass() {}
};
// Note: Due to multiple inheritance, vtable offsets are shifted by 8
class scnLeaf_c : UnkClass, EGG::Disposer {
public:
scnLeaf_c();
virtual ~scnLeaf_c();
virtual int getType() const = 0;
virtual void remove();
virtual int entry();
/* vt 0x08 */ virtual ~scnLeaf_c();
/* vt 0x0C */ virtual int getType() const = 0;
/* vt 0x10 */ virtual void remove();
/* vt 0x14 */ virtual int entry();
void setOption(u32 flag, u32 set);
void setScale(f32, f32, f32);
+1 -1
View File
@@ -69,7 +69,7 @@ public:
const mQuat_c &GetQuat() const {
return mQuat;
}
const mVec3_c &GetPostion() const {
const mVec3_c &GetPosition() const {
return mPositionMaybe;
}
const f32 GetOffset() const {
+3
View File
@@ -87,6 +87,9 @@ public:
PSMTXMultVec(m, quat.v, quat.v);
}
void fn_802F1C40(s32, s32);
void makeRotationFromVecs(const mVec3_c&, const mVec3_c&, f32);
public:
static mMtx_c Identity;
};
+9
View File
@@ -176,6 +176,15 @@ struct _MTX33 {
struct MTX33 : _MTX33 {
MTX33() {}
// clang-format off
MTX33(f32 f00, f32 f01, f32 f02,
f32 f10, f32 f11, f32 f12,
f32 f20, f32 f21, f32 f22) {
_00 = f00; _01 = f01; _02 = f02;
_10 = f10; _11 = f11; _12 = f12;
_20 = f20; _21 = f21; _22 = f22;
}
// clang-format on
};
/******************************************************************************
+1 -1
View File
@@ -8,7 +8,7 @@
#include "m/m3d/m_anmtexpat.h"
#include "m/m3d/m_smdl.h"
#include "m/m_allocator.h"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/raii_ptr.h"
static const u32 OFF = 'off ';
+45 -1
View File
@@ -152,6 +152,9 @@ struct Bpm1 {
struct Bpm2 {
Bpm2() {}
~Bpm2() {}
// maybe
u8 _0x00[0x14 - 0x00];
};
struct PaletteEAF_smol_entry {
@@ -184,6 +187,7 @@ struct PaletteEAF_big {
PaletteEAF_big_entry field_0x00[8];
};
// Apparently particle color related
struct Bpm3 {
Bpm3() {}
~Bpm3() {}
@@ -201,16 +205,22 @@ struct Bpm4 {
struct Bpm7 {
Bpm7() {}
~Bpm7() {}
u8 _0x00[0x14 - 0x00];
};
struct Bpm8 {
Bpm8() {}
~Bpm8() {}
u8 _0x00[0x14 - 0x00];
};
struct Bpm9 {
Bpm9() {}
~Bpm9() {}
u8 _0x00[0x14 - 0x00];
};
class BlurAndPaletteManager {
@@ -224,6 +234,10 @@ public:
return sInstance;
}
static BlurAndPaletteManager *GetPInstance() {
return sPInstance;
}
void fn_800247D0(mVec3_c, f32);
void fn_80022AF0(f32);
void setField_0x2F20(f32 arg) {
@@ -242,6 +256,29 @@ public:
return field_0x5CE4;
}
const Spf &GetCurrentSph() const {
return currentSpf;
}
const PaletteEAF_smol_entry& getSmallEAF(s32 idx1, s32 idx2) {
return field_0x38E4.field_0x00[idx1].field_0x00[idx2];
}
f32 getfield_0x2F14() const {
return field_0x2F14;
}
f32 getfield_0x2F18() const {
return field_0x2F18;
}
f32 getfield_0x2F1C() const {
return field_0x2F1C;
}
static mColor &getLightColor1();
static mColor &getLightColor2();
private:
mColor combineColors(const mColor &c1, const mColor &c2, f32 ratio);
@@ -267,15 +304,22 @@ private:
/* 0x2F0C */ s16 field_0x2F0C;
/* 0x2F0E */ s16 field_0x2F0E;
/* 0x2F10 */ u8 field_0x2F10;
/* 0x2F11 */ u8 field_0x2F11[0x2F20 - 0x2F11];
/* 0x2F14 */ f32 field_0x2F14;
/* 0x2F18 */ f32 field_0x2F18;
/* 0x2F1C */ f32 field_0x2F1C;
/* 0x2F20 */ f32 field_0x2F20;
/* 0x2F24 */ u8 _0x2F24[0x357C - 0x2F24];
/* 0x357C */ Bpm1 field_0x357C;
/* 0x3594 */ u8 _0x3594[0x35A0 - 0x3594];
/* 0x35A0 */ Bpm2 field_0x35A0;
/* 0x35B4 */ Bpm7 field_0x35B4[8];
/* 0x3654 */ Bpm8 field_0x3654[10];
/* 0x371C */ Bpm9 field_0x371C[20];
/* 0x38AC */ u8 _0x38AC[0x38B4 - 0x38AC];
/* 0x38B4 */ mVec3_c field_0x38B4;
/* 0x38C0 */ u8 _0x38C0[0x38C8 - 0x38C0];
/* 0x38C8 */ mVec3_c field_0x38C8;
/* 0x38D4 */ u8 _0x38D4[0x38E4 - 0x38D4];
/* 0x38E4 */ Bpm3 field_0x38E4;
/* 0x48E4 */ Bpm4 field_0x48E4;
/* 0x5CE4 */ PaletteDefaultMCF field_0x5CE4;
+2 -2
View File
@@ -177,6 +177,8 @@ private:
class UnkProc : public m3d::proc_c {
public:
bool create(int prioOpa, int prioXlu, mAllocator_c *alloc);
bool createXlu(int prioXlu, mAllocator_c *alloc);
private:
};
@@ -188,8 +190,6 @@ public:
}
virtual int entry() override;
bool create(int prioOpa, int prioXlu, mAllocator_c *alloc);
bool createXlu(int prioXlu, mAllocator_c *alloc);
virtual void drawOpa() override {
doDraw();
+507
View File
@@ -0,0 +1,507 @@
#ifndef EFFECTS_STRUCT_H
#define EFFECTS_STRUCT_H
#include "JSystem/JParticle/JPADrawInfo.h"
#include "JSystem/JParticle/JPAEmitter.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "common.h"
#include "d/a/obj/d_a_obj_base.h"
#include "d/d_base.h"
#include "m/m2d.h"
#include "m/m_allocator.h"
#include "m/m_angle.h"
#include "m/m_color.h"
#include "m/m_mtx.h"
#include "m/m_vec.h"
#include "rvl/GX/GXTypes.h"
#include "toBeSorted/d_d3d.h"
#include "toBeSorted/d_unk_mdl_stuff_2.h"
#include "toBeSorted/tlist.h"
#include <cstddef>
class dEmitterBase_c;
class dEmitterCallback_c;
class dParticleCallback_c;
class dEmitterBase_c {
friend class dEmitterCallback_c;
friend class dParticleCallback_c;
public:
dEmitterBase_c() : mpEmitterHead(nullptr), mpEmitterCallback(nullptr), mpParticleCallback(nullptr) {}
bool createEmitters(
u16 effectResourceId, const mVec3_c &position, const mAng3_c *rot, const mVec3_c *scale, const GXColor *c1,
const GXColor *c2, s32 idx1, s32 idx2
);
dEmitterCallback_c *getEmitterCallback() const {
return mpEmitterCallback;
}
protected:
void deactivateEmitters();
void stopCalcEmitters();
void playCalcEmitters();
static void loadColors(JPABaseEmitter *emitter, const GXColor *c1, const GXColor *c2, s32 idx1, s32 idx2);
void setEmitterCallback(dEmitterCallback_c *cb);
void setParticleCallback(dParticleCallback_c *cb);
void setImmortal();
static JPABaseEmitter *GetNextEmitter(JPABaseEmitter *head);
/* 0x00 */ JPABaseEmitter *mpEmitterHead;
/* 0x04 */ dEmitterCallback_c *mpEmitterCallback;
/* 0x08 */ dParticleCallback_c *mpParticleCallback;
/* 0x0C */ TListNode<dEmitterBase_c> mEmitterCallbackNode;
/* 0x14 */ TListNode<dEmitterBase_c> mParticleCallbackNode;
public:
// vtable at 0x1C
virtual ~dEmitterBase_c();
void stopDrawParticles();
void playDrawParticles();
void setPosRotScale(const mVec3_c &position, const mAng3_c *rot, const mVec3_c *scale);
void setPosRotScaleWithScreenScale(const mVec3_c &position, const mAng3_c *rot, const mVec3_c *scale);
void setTransform(const mMtx_c &mtx);
void loadColors(const GXColor *c1, const GXColor *c2, s32 idx1, s32 idx2);
void setGlobalAlpha(u8 alpha);
void setRate(f32 rate);
void setDynamicsScale(const mVec3_c &scale);
void setParticleScale(const mVec3_c &scale);
void setAwayFromCenterSpeed(f32 speed);
void setVolumeSize(u16 size);
void setLifeTime(s16 lifetime);
void attachEmitterCallbackId(s32 id); // corresponds to setup at 80028a80
void bindShpEmitter(s32 id, bool unused); // corresponds to setup at 8002b6b0
};
// Suggested name: dEmitter_c
class EffectsStruct : public dEmitterBase_c {
public:
enum Flags_e {
EMITTER_0x1 = 0x1,
EMITTER_0x2 = 0x2,
EMITTER_0x4 = 0x4,
EMITTER_Fading = 0x8,
EMITTER_0x10 = 0x10,
EMITTER_0x20 = 0x20,
};
// vt at 0x1C
EffectsStruct();
EffectsStruct(dBase_c *);
virtual ~EffectsStruct();
inline void init(dBase_c *owner) {
mpOwner = owner;
}
inline dBase_c *getOwner() const {
return mpOwner;
}
void addToActiveEmittersList(u16 resourceId, bool bFlags);
void removeFromActiveEmittersList();
void execute();
void setFading(u8 lifetime);
void remove(bool bForceDeleteEmitters);
// TODO maybe reconsider the naming here - the observation here is that a "continous" effect
// is typically called every frame, while the others are one-shot calls
bool createContinuousEffect(
u16 resourceId, const mVec3_c &pos, const mAng3_c *rot, const mVec3_c *scale, const GXColor *c1,
const GXColor *c2
);
bool createContinuousUIEffect(
u16 resourceId, const mVec3_c &pos, const mAng3_c *rot, const mVec3_c *scale, const GXColor *c1,
const GXColor *c2
);
bool createContinuousEffect(u16 resourceId, const mMtx_c &transform, const GXColor *c1, const GXColor *c2);
bool createEffect(
u16 resourceId, const mVec3_c &pos, const mAng3_c *rot, const mVec3_c *scale, const GXColor *c1,
const GXColor *c2
);
bool createUIEffect(
u16 resourceId, const mVec3_c &pos, const mAng3_c *rot, const mVec3_c *scale, const GXColor *c1,
const GXColor *c2
);
bool createEffect(u16 resourceId, const mMtx_c &transform, const GXColor *c1, const GXColor *c2);
bool hasEmitters() const {
return mpEmitterHead != 0;
}
u8 getGroupId() const {
return mpEmitterHead->getGroupID();
}
bool checkFlag(u32 flag) const {
return mFlags & flag;
}
void onFlag(u32 flag) {
mFlags |= flag;
}
void offFlag(u32 flag) {
mFlags &= ~flag;
}
void realizeAlpha();
bool areAllEmittersDone();
protected:
bool canReuse(u16 resourceId) const {
return hasEmitters() && !checkFlag(EMITTER_0x2) && mEffect == resourceId;
}
bool createEffect(
bool bFlags, u16 resourceId, const mVec3_c &pos, const mAng3_c *rot, const mVec3_c *scale, const GXColor *c1,
const GXColor *c2
);
bool createEffect(bool bFlags, u16 resourceId, const mMtx_c &transform, const GXColor *c1, const GXColor *c2);
bool getOwnerPolyAttrs(s32 *pOut1, s32 *pOut2);
public:
/* 0x24 */ TListNode<EffectsStruct> mNode;
protected:
/* 0x28 */ dBase_c *mpOwner;
/* 0x2C */ u8 mFadeTimer;
/* 0x2D */ u8 mFadeDuration;
/* 0x2E */ u8 _0x2D[0x30 - 0x2E];
/* 0x30 */ u16 mFlags;
/* 0x32 */ u16 mEffect;
};
class dWaterEffect_c {
private:
/* 0x00 */ bool mIsInWater;
/* 0x01 */ bool mIsSmall;
/* 0x04 */ f32 mHeight;
/* 0x08 */ f32 mDepth;
/* 0x0C */ f32 mScale;
/* 0x10 */ EffectsStruct mEff;
dAcObjBase_c *getActor() const {
return static_cast<dAcObjBase_c *>(mEff.getOwner());
}
f32 getActorGroundPos(dAcObjBase_c *obj) const {
return obj->position.y + mDepth;
}
f32 getActorCeilPos(dAcObjBase_c *obj) const {
return obj->position.y + mHeight;
}
public:
dWaterEffect_c() : mIsInWater(1), mIsSmall(false) {}
virtual ~dWaterEffect_c() {}
void init(dAcObjBase_c *, f32 height, f32 scale, f32 depth);
void execute(f32 water, f32 ground);
void setIsSmall(bool val) {
mIsSmall = val;
}
};
/** An emitter callback can be part of multiple emitters. */
class dEmitterCallback_c : public JPAEmitterCallBack {
friend class dEmitterBase_c;
typedef TList<dEmitterBase_c, offsetof(dEmitterBase_c, mEmitterCallbackNode)> EmitterCallbackList;
public:
virtual ~dEmitterCallback_c();
virtual void create(JPABaseEmitter *) {}
virtual void vt_0x20(f32, f32) {}
void remove(dEmitterBase_c *emitter);
/* 0x04 */ EmitterCallbackList mEmitterList;
};
/** A particle callback can be part of multiple emitters. */
class dParticleCallback_c : public JPAParticleCallBack {
friend class dEmitterBase_c;
typedef TList<dEmitterBase_c, offsetof(dEmitterBase_c, mParticleCallbackNode)> ParticleCallbackList;
public:
virtual ~dParticleCallback_c();
virtual void create(JPABaseEmitter *) {}
void remove(dEmitterBase_c *emitter);
/* 0x04 */ ParticleCallbackList mEmitterList;
};
class dParticleFogProc_c : public d3d::UnkProc {
public:
dParticleFogProc_c() {}
virtual ~dParticleFogProc_c() {}
virtual void drawOpa() override {
doDraw();
}
virtual void drawXlu() override {
doDraw();
}
bool create(u32 idx, s32 prioOpa, s32 prioXlu, mHeapAllocator_c *alloc);
private:
void doDraw();
/* 0x18 */ u32 mIdx;
/* 0x1C */ bool field_0x1C;
};
class dEffect2D_c : public m2d::Base_c {
public:
dEffect2D_c() : m2d::Base_c(0x80) {}
/* vt 0x08 */ virtual ~dEffect2D_c() {}
/* vt 0x0C */ virtual void draw() override;
void create(u32 groupId, u8);
private:
/* 0x10 */ u32 mGroupId;
};
class dShpEmitter_c;
class dShpEmitterProc : public dShpProc1_c {
public:
dShpEmitterProc() : mpOwner(nullptr) {}
virtual ~dShpEmitterProc() {
mpOwner = nullptr;
}
virtual void drawOpa() override {
doDraw();
}
virtual void drawXlu() override {
doDraw();
}
void setOwner(dShpEmitter_c *cb) {
mpOwner = cb;
}
void setAlpha(s32 idx, u8 val) {
mAlpha[idx] = val;
}
private:
void doDraw();
/* 0x34 */ dShpEmitter_c *mpOwner;
// TODO: This is read from JParticle as alpha, but used as the nw4r::g3d lightSetId.
// Is this a creative use of the particle color value, given that particles themselves
// are never drawn?
/* 0x38 */ u8 mAlpha[100];
};
class dShpEmitter_c : public JPAParticleCallBack {
public:
virtual ~dShpEmitter_c() {}
virtual void draw(JPABaseEmitter *, JPABaseParticle *) override;
bool create(mHeapAllocator_c *alloc);
void init(const char *mdlName, const char *arcName, bool priority);
void clear();
void remove();
void draw() {
mProc.entry();
}
private:
/* 0x04 */ dShpEmitterProc mProc;
/* 0xA0 */ s32 field_0xA0;
};
class CommonEmitterCallback : public JPAEmitterCallBack {
public:
CommonEmitterCallback() : field_0x04(0) {}
virtual ~CommonEmitterCallback() {}
virtual void draw(JPABaseEmitter *) override;
void init(s32 v) {
field_0x04 = v;
}
private:
/* 0x04 */ s32 field_0x04;
};
class dMassObjEmitterCallback_c : public dEmitterCallback_c {
public:
virtual ~dMassObjEmitterCallback_c() {}
virtual void executeAfter(JPABaseEmitter *) override;
void execute();
void clear();
bool start(const mVec3_c &v1, dAcObjBase_c *owner);
private:
/* 0x010 */ mVec3_c field_0x010[50];
/* 0x268 */ mVec3_c field_0x268[50];
/* 0x4C0 */ dAcObjBase_c *field_0x4C0[50];
/* 0x588 */ dAcObjBase_c *field_0x588[50];
/* 0x650 */ mColor field_0x650;
/* 0x654 */ u32 field_0x654;
/* 0x658 */ u32 field_0x658;
// TODO unclear structure boundary
};
class dMassObjEmitter_c : public dEmitterBase_c {
public:
dMassObjEmitter_c() {}
virtual ~dMassObjEmitter_c() {
remove();
}
void create(u16 resourceId);
bool start(const mVec3_c &v1, dAcObjBase_c *owner) {
return mCallback.start(v1, owner);
}
void remove();
mColor getField_0x67C() const {
return field_0x67C;
}
void setField_0x67C(GXColor clr) {
field_0x67C.r = clr.r;
field_0x67C.g = clr.g;
field_0x67C.b = clr.b;
field_0x67C.a = clr.a;
}
void setField_0x67C(mColor clr) {
field_0x67C.r = clr.r;
field_0x67C.g = clr.g;
field_0x67C.b = clr.b;
field_0x67C.a = clr.a;
}
void execute() {
mCallback.execute();
}
private:
/* 0x020 */ dMassObjEmitterCallback_c mCallback;
/* 0x67C */ mColor field_0x67C;
};
class dJEffManager_c {
public:
static bool createEffManagers();
static void removeEffManagers();
static void draw(const JPADrawInfo *info, u32 groupId);
static void draw();
static void execute();
static void doCustomSkywardSwordThing(f32 x, f32 y);
static void setupEffects();
static dEmitterBase_c *spawnEffect(
u16 effectResourceId, const mVec3_c &position, const mAng3_c *rot, const mVec3_c *scale, const GXColor *c1,
const GXColor *c2, s32 idx1, s32 idx2
);
static dEmitterBase_c *spawnUIEffect(
u16 effectResourceId, const mVec3_c &position, const mAng3_c *rot, const mVec3_c *scale, const GXColor *c1,
const GXColor *c2
);
static dEmitterBase_c *spawnEffect(
u16 effectResourceId, const mMtx_c &transform, const GXColor *c1, const GXColor *c2, s32 idx1, s32 idx2
);
static dEmitterBase_c *spawnGroundEffect(const mVec3_c &pos, u8 polyAttr0, u8 polyAttr1, const mVec3_c &, s32 unk, f32 scale, f32 groundHeightMaybe);
// "mass obj" = grass, fire
static bool createMassObjEffect(u16 effectResourceId, const mVec3_c &v1, dAcObjBase_c *owner, const mColor *color);
static s32 getGroupId(u16);
static bool shouldBePaused(dBase_c *owner);
enum Fx_e {
TsuboA,
TsuboB,
BRockA,
FruitA,
GrassCoil,
BRockB,
Beehive,
VeraRock,
Pumpkin,
BRockC,
F300BrokenRockWall_00,
F300BrokenRockWall_01,
F300BrokenRockWall_01T,
LotusSeed,
Beamoss,
Cakram,
Dodai,
LegParts,
AsuraFloorBrk,
BreakPillar,
Barrel,
BarrelBomb,
RockMiddle,
BocoBone,
BRockStopA,
BWallD201,
Gunho,
TuboBig,
Amos,
HidokariBoneA,
HidokariBoneB,
Hydra,
Captain,
KibakoHang,
IslTreIRock,
BirdraceTarget,
FlowerA00F,
FlowerA00L,
FlowerB00,
FlowerB01,
GirahimClaymore,
BirdKobunAEgg,
BirdKobunBEgg,
BirdRivalEgg,
BWallAF200,
BWallBF200,
BWallF210,
};
typedef TList<EffectsStruct, offsetof(EffectsStruct, mNode)> EffectsList;
static EffectsList sPlayingEffectsList;
static CommonEmitterCallback sCommonEmitterCallbacks[2];
static dShpEmitter_c sShpEmitters[47];
static dEmitterBase_c sEmitter;
static dParticleFogProc_c sFogProcs[12];
static dEffect2D_c s2DEffects[3];
private:
static dEmitterBase_c *spawnEffectInternal(
u16 effectResourceId, const mVec3_c &position, const mAng3_c *rot, const mVec3_c *scale, const GXColor *c1,
const GXColor *c2, s32 idx1, s32 idx2
);
static dEmitterBase_c *spawnEffectInternal(
u16 effectResourceId, const mMtx_c &transform, const GXColor *c1, const GXColor *c2, s32 idx1, s32 idx2
);
static s32 polyAttrsToGroundEffectIdx(s32 polyAttr0, s32 polyAttr1);
static mHeapAllocator_c *ms_allocator;
static dMassObjEmitter_c *sMassObjEmitters;
static u32 sInts[];
static const u32 moreInts[];
static u32 sInts2[];
};
#endif
+2 -2
View File
@@ -73,8 +73,8 @@ public:
void createResource(EGG::Heap *heap, s32 mgrIndex, void *jpc, void *jpn);
void disposeResource(s32 mgrIndex);
s32 getResUserWork(u16 handle) const;
u16 getJpnData(u16 handle) const;
s32 getResUserWork(u16 particleResId) const;
u16 getJpnData(u16 particleResId) const;
// Invokes the JParticle 11 extension
void doCustomSkywardSwordThing(u8 groupId, f32 x, f32 y);
void calc(u8 groupId);
+72
View File
@@ -0,0 +1,72 @@
#ifndef D_UNK_MDL_STUFF_2_H
#define D_UNK_MDL_STUFF_2_H
#include "common.h"
#include "m/m3d/m_proc.h"
#include "m/m_allocator.h"
#include "m/m_mtx.h"
#include "m/m_vec.h"
#include "nw4r/g3d/res/g3d_resmat.h"
#include "nw4r/g3d/res/g3d_resshp.h"
/** a process for drawing shapes directly */
class dShpProcBase_c : public m3d::proc_c {
public:
dShpProcBase_c(): mLightSetId(1) {}
virtual ~dShpProcBase_c() {}
void setResMat(nw4r::g3d::ResMat mat);
void setResShp(nw4r::g3d::ResShp shp) {
mShp = shp;
}
void setupLight();
void draw(mVec3_c *pos);
void setAllFlags();
void doEntry(s32 lightSetId);
bool init(nw4r::g3d::ResMat mat, nw4r::g3d::ResShp shp, s32 count, bool xlu, u32 *pSize);
bool isDrawDisabled(s32 idx) const {
return mpFlags[idx];
}
void setDrawDisabled(s32 idx, bool val) {
mpFlags[idx] = val;
}
protected:
/* 0x18 */ nw4r::g3d::ResMat mMat;
/* 0x1C */ nw4r::g3d::ResShp mShp;
/* 0x20 */ bool *mpFlags;
/* 0x24 */ s32 mCount;
/* 0x28 */ s32 mLightSetId;
/* 0x2C */ u8 field_0x2C;
};
class dShpProc1_c : public dShpProcBase_c {
public:
virtual ~dShpProc1_c() {}
/* vt 0x18 */ virtual void drawOpa() override {
draw();
}
/* vt 0x1C */ virtual void drawXlu() override {
draw();
};
void clearTransforms() {
mpTransforms = nullptr;
}
bool create(nw4r::g3d::ResMat mat, nw4r::g3d::ResShp shp, s32 count, mHeapAllocator_c *alloc, bool xlu, u32 *pSize);
void draw();
void setTransform(s32 idx, const mMtx_c &transform) {
mpTransforms[idx].copyFrom(transform);
}
protected:
/* 0x30 */ mMtx_c *mpTransforms;
};
#endif
-76
View File
@@ -1,76 +0,0 @@
#ifndef EFFECTS_STRUCT_H
#define EFFECTS_STRUCT_H
#include "common.h"
#include "d/d_base.h"
#include "m/m_angle.h"
#include "m/m_mtx.h"
#include "m/m_vec.h"
class EffectsStruct {
private:
s32 field_0x00;
u8 field_0x04[0x1C - 0x04];
public:
// vt at 0x1C
EffectsStruct();
EffectsStruct(dBase_c *);
virtual ~EffectsStruct();
inline void init(dBase_c *owner) {
mpOwner = owner;
}
void remove(bool);
void fn_80027320(u8);
void fn_800271E0(mVec3_c *pos, mAng3_c *rot, mVec3_c *scale);
void fn_80029920(u16 effect, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, void *, void *);
void fn_80029980(u16 effect, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, void *, void *);
void fn_800299F0(u16 effect, mMtx_c *mtx, void *, void *);
void fn_80029A10(u16 effect, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, void *, void *);
void fn_80029A70(u16 effect, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, void *, void *);
void setMtx(const mMtx_c &);
static void fn_800298C0(u16 effect, mVec3_c *pos, void*, void*, void*, void*);
void fn_80026ED0();
void fn_80026F10();
bool checkField0x00() const {
return field_0x00 != 0;
}
private:
u8 field_0x20[0x28 - 0x20];
/* 0x28 */ dBase_c *mpOwner;
u8 field_0x2C[0x34 - 0x2C];
};
// Not sure if these belongs here, but it uses EffectsStruct
// Related Functions in the 8002B100 area
class EffectsStruct_Ext {
public:
EffectsStruct_Ext() : mField_0x00(1), mField_0x01(0) {}
void init(dBase_c *, f32, f32, f32);
void setField_0x00(u8 val) {
mField_0x00 = val;
}
void setField_0x01(u8 val) {
mField_0x01 = val;
}
void fn_8002B120(f32, f32);
/* 0x00 */ u8 mField_0x00;
/* 0x01 */ u8 mField_0x01;
/* 0x04 */ f32 mField_0x04;
/* 0x08 */ f32 mField_0x08;
/* 0x0C */ f32 mField_0x0C;
/* 0x10 */ EffectsStruct mEff;
virtual ~EffectsStruct_Ext() {}
};
#endif
+10
View File
@@ -18,6 +18,11 @@ inline s32 get_8057511C() {
return lbl_8057511C;
}
extern "C" f32 lbl_80575150;
inline f32 get_80575150() {
return lbl_80575150;
}
extern "C" f32 lbl_8057515C;
inline f32 get_8057515C() {
return lbl_8057515C;
@@ -38,4 +43,9 @@ inline f32 get_80575190() {
return lbl_80575190;
}
extern "C" s32 lbl_80575184;
inline s32 get_80575184() {
return lbl_80575184;
}
#endif
+6
View File
@@ -9,6 +9,12 @@
// * Entirely in headers
// * Swapped node and count members
// Used in DowsingTarget, maybe also in dAcBase_c.soundStuff
//
// The current implementation has various unexplained behaviors
// * Constructor doesn't match if offset != 0 https://decomp.me/scratch/YqOCh
// * Many loops based on these iterators don't match in general, but probably not worth
// messing with until the ctor is fixed
// * -ipa file optimizes things that shouldn't be optimized https://decomp.me/scratch/lqM6i
template <typename T>
class TListNode {
public:
+4 -4
View File
@@ -7,6 +7,7 @@
#include "d/flag/sceneflag_manager.h"
#include "m/m_mtx.h"
#include "m/m_vec.h"
#include "toBeSorted/small_sound_mgr.h"
#include "toBeSorted/time_area_mgr.h"
SPECIAL_ACTOR_PROFILE(BOMBF, dAcBombf_c, fProfile::BOMBF, 0x129, 0, 4099);
@@ -166,7 +167,6 @@ void dAcBombf_c::regrowBomb() {
void dAcBombf_c::initializeState_Wait() {}
extern "C" void fn_800298B0(u16, mVec3_c *, mVec3_c *, u32, u32, u32, u32, u32);
extern "C" u16 lbl_8057A750;
void dAcBombf_c::executeState_Wait() {
@@ -191,11 +191,11 @@ void dAcBombf_c::executeState_Wait() {
if (mTimeAreaStruct.check(roomid, m3, 0, 30.0f, 0.1f) && field_0x3D4 != 1) {
if (mTimeAreaStruct.field_0x04 == 1) {
playSound(0xC0A);
playSound(SE_TIMESLIP_TIMESLIP);
} else {
playSound(0xC0B);
playSound(SE_TIMESLIP_TIMESLIP_REV);
}
fn_800298B0(lbl_8057A750, &position, nullptr, 0, 0, 0, 0, 0);
dJEffManager_c::spawnEffect(lbl_8057A750, position, nullptr, nullptr, nullptr, nullptr, 0, 0);
}
scaleFactor *= mTimeAreaStruct.field_0x00;
+6 -3
View File
@@ -1,6 +1,8 @@
#include "d/a/d_a_t_wood_area.h"
#include "common.h"
#include "d/a/d_a_player.h"
#include "toBeSorted/d_emitter.h"
const f32 dAcTWoodArea_c::scaleX = 100.0f;
const f32 dAcTWoodArea_c::scaleY = 100.0f;
@@ -48,8 +50,7 @@ void dAcTWoodArea_c::executeState_Init() {
}
void dAcTWoodArea_c::finalizeState_Init() {}
extern "C" void fn_800298B0(u16, mVec3_c *, mAng3_c *, u32, u32, u32, u32, u32);
extern u16 PARTICLE_RESOURCE_ID_MAPPING[];
extern const u16 PARTICLE_RESOURCE_ID_MAPPING_8_;
void dAcTWoodArea_c::initializeState_Wait() {}
@@ -63,7 +64,9 @@ void dAcTWoodArea_c::executeState_Wait() {
bool someEffectThing = subtype != 1 ? (params & 0xF) != 0 ? false : true : true;
if (someEffectThing) {
mVec3_c tmp(position.x, position.y + getAttachHeight(), position.z);
fn_800298B0(PARTICLE_RESOURCE_ID_MAPPING[8], &tmp, nullptr, 0, 0, 0, 0, 0);
dJEffManager_c::spawnEffect(
PARTICLE_RESOURCE_ID_MAPPING_8_, tmp, nullptr, nullptr, nullptr, nullptr, 0, 0
);
}
dropItems();
}
+1 -1
View File
@@ -136,7 +136,7 @@ int dAcOChair_c::actorExecute() {
// Calculate the HealCooldown (Heal link if needed)
if (!checkObjectProperty(0x8000)) {
if (!isBench()) {
mCyl.SetC(GetPostion());
mCyl.SetC(GetPosition());
dCcS::GetInstance()->Set(&mCyl);
}
mHealTimer = FIRST_HEAL_COOLDOWN;
+4 -4
View File
@@ -196,16 +196,16 @@ int dAcODungeonShip_c::actorExecute() {
mAnmMatClr.play();
mMdl.calc(false);
if (field_0x8D8) {
mEffects[0].fn_80029A10(PARTICLE_RESOURCE_ID_MAPPING_682_, &position, &rotation, nullptr, nullptr, nullptr);
mEffects[0].createContinuousEffect(PARTICLE_RESOURCE_ID_MAPPING_682_, position, &rotation, nullptr, nullptr, nullptr);
}
if (field_0x8D9) {
mMtx_c tmpMtx;
mMdl.getNodeWorldMtx(0, tmpMtx);
if (mEffects[1].checkField0x00()) {
mEffects[1].setMtx(tmpMtx);
if (mEffects[1].hasEmitters()) {
mEffects[1].setTransform(tmpMtx);
} else if (field_0x8DA == 0) {
mEffects[1].fn_800299F0(PARTICLE_RESOURCE_ID_MAPPING_683_, &tmpMtx, nullptr, nullptr);
mEffects[1].createEffect(PARTICLE_RESOURCE_ID_MAPPING_683_, tmpMtx, nullptr, nullptr);
field_0x8DA = 1;
}
}
+2 -2
View File
@@ -231,8 +231,8 @@ void dAcOSeatSword_c::actorExecuteCommon() {
mEffPos += player->position;
mEffPos.y = position.y;
mEff.fn_80029A10(PARTICLE_RESOURCE_ID_MAPPING_76_, &mEffPos, &rotation, &mScale, nullptr, nullptr);
mEff.fn_80027320(mField_0x7E4);
mEff.createContinuousEffect(PARTICLE_RESOURCE_ID_MAPPING_76_, mEffPos, &rotation, &mScale, nullptr, nullptr);
mEff.setGlobalAlpha(mField_0x7E4);
}
void dAcOSeatSword_c::updateSwordMdl() {
+4 -3
View File
@@ -10,6 +10,7 @@
#include "f/f_profile_name.h"
#include "m/m_vec.h"
#include "nw4r/g3d/res/g3d_resmdl.h"
#include "toBeSorted/small_sound_mgr.h"
SPECIAL_ACTOR_PROFILE(OBJ_TOWER_GEAR_D101, dAcOTowerGearD101_c, fProfile::OBJ_TOWER_GEAR_D101, 0x17E, 0, 7);
@@ -92,9 +93,9 @@ void dAcOTowerGearD101_c::executeState_Wait() {
mAng newRotation = diff * scale5 / 2400.0f;
if (newRotation != mCurrRotation) {
if (mPreviousTurnSpeed == 0) {
playSound(0xBF8);
playSound(SE_TGrD101_ROLL_START);
} else {
playSoundEffect1(0xBF9);
playSoundEffect1(SE_TGrD101_ROLL_LV);
playVisualEffect();
}
}
@@ -128,5 +129,5 @@ void dAcOTowerGearD101_c::initTransform() {
extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_585_;
void dAcOTowerGearD101_c::playVisualEffect() {
mEffects.fn_80029A10(PARTICLE_RESOURCE_ID_MAPPING_585_, &field_0x3F4, &rotation, nullptr, nullptr, nullptr);
mEffects.createContinuousEffect(PARTICLE_RESOURCE_ID_MAPPING_585_, field_0x3F4, &rotation, nullptr, nullptr, nullptr);
}
+5 -5
View File
@@ -248,11 +248,11 @@ int dAcOTowerHandD101_c::actorExecute() {
PSMTXConcat(tmpMtx3, tmpMtx4, tmpMtx3);
mLoc2Mtx.copyFrom(tmpMtx3);
if (mEffects.checkField0x00()) {
if (mEffects.hasEmitters()) {
if (direction == 1) {
tmpMtx3.YrotM(-0x8000);
}
mEffects.setMtx(tmpMtx3);
mEffects.setTransform(tmpMtx3);
}
for (int i = 0; i <= 2; i++) {
dBgW *bgW = nullptr;
@@ -300,11 +300,11 @@ int dAcOTowerHandD101_c::actorExecuteInEvent() {
PSMTXConcat(tmpMtx3, tmpMtx4, tmpMtx3);
mLoc2Mtx.copyFrom(tmpMtx3);
if (mEffects.checkField0x00()) {
if (mEffects.hasEmitters()) {
if (direction == 1) {
tmpMtx3.YrotM(-0x8000);
}
mEffects.setMtx(tmpMtx3);
mEffects.setTransform(tmpMtx3);
}
for (int i = 0; i <= 2; i++) {
dBgW *bgW = nullptr;
@@ -597,7 +597,7 @@ extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_573;
void dAcOTowerHandD101_c::initializeState_Close() {
mMdl.getAnm().setPlayState(m3d::PLAY_MODE_1);
mMdl.setRate(getCloseRate());
mEffects.fn_80029920(PARTICLE_RESOURCE_ID_MAPPING_573, &position, nullptr, nullptr, nullptr, nullptr);
mEffects.createEffect(PARTICLE_RESOURCE_ID_MAPPING_573, position, nullptr, nullptr, nullptr, nullptr);
playSound(0xC0C);
}
void dAcOTowerHandD101_c::executeState_Close() {
+1 -2
View File
@@ -56,7 +56,6 @@ int dAcOtriforce_c::doDelete() {
}
extern const u16 PARTICLE_RESOURCE_ID_MAPPING_967_;
extern "C" void fn_80029AE0(EffectsStruct *, u16, mMtx_c *, void *, void *);
int dAcOtriforce_c::actorExecute() {
int zero = 0;
@@ -73,7 +72,7 @@ int dAcOtriforce_c::actorExecute() {
PSMTXConcat(mWorldMtx.m, m, mWorldMtx.m);
mMdl.setLocalMtx(mWorldMtx);
mAnm.play();
fn_80029AE0(&mEffects, PARTICLE_RESOURCE_ID_MAPPING_967_, &mWorldMtx, nullptr, nullptr);
mEffects.createContinuousEffect(PARTICLE_RESOURCE_ID_MAPPING_967_, mWorldMtx, nullptr, nullptr);
return 1;
}
+24 -21
View File
@@ -30,7 +30,10 @@
#include "rvl/MTX/mtxvec.h"
#include "s/s_Math.h"
#include "toBeSorted/attention.h"
#include "toBeSorted/blur_and_palette_manager.h"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/event_manager.h"
#include "toBeSorted/small_sound_mgr.h"
#include "toBeSorted/special_item_drop_mgr.h"
void float_ordering() {
@@ -71,7 +74,7 @@ int dAcOtubo_c::actorCreate() {
mObjAcch.Set(this, 1, &mAcchCir);
mAcchCir.SetWall(20.f, 30.f);
mEff_0x91C.init(this, 60.f, mScale.x, 0.f);
mEff_0x91C.setField_0x01(1);
mEff_0x91C.setIsSmall(true);
int unkParam = getParams_0x3000();
if (unkParam != 1 && unkParam != 2) {
fn_8002EA30(-60.f, -20.f, 2.f, 1.f, 4.f, &mObjAcch);
@@ -210,24 +213,24 @@ int dAcOtubo_c::draw() {
return SUCCEEDED;
}
extern "C" void fn_8002A450(const mVec3_c &, u8, u8, const mVec3_c &, int, f32, f32);
void dAcOtubo_c::initializeState_Wait() {}
void dAcOtubo_c::executeState_Wait() {
if (mObjAcch.ChkGroundLanding()) {
if (!mbField_0x9EF || !EventManager::isInEvent()) {
if (mField_0x9F6 == 2) {
fn_8002A450(position, polyAttr0, polyAttr1, mField_0x1B4, 0, 1.0f, mField_0x1B0);
dJEffManager_c::spawnGroundEffect(position, polyAttr0, polyAttr1, mField_0x1B4, 0, 1.0f, mField_0x1B0);
}
if (mbField_0x9F3) {
playSound(0xA46);
playSound(SE_Tubo_PUT);
mbField_0x9F3 = false;
}
if (checkOnLava()) {
if (mField_0x9F6 != 2) {
fn_8002A450(position, polyAttr0, polyAttr1, mField_0x1B4, 0, 1.0f, mField_0x1B0);
dJEffManager_c::spawnGroundEffect(
position, polyAttr0, polyAttr1, mField_0x1B4, 0, 1.0f, mField_0x1B0
);
}
playSound(0x9A3);
playSound(SE_O_FALL_LAVA_S);
}
}
} else if (mObjAcch.ChkGndHit()) {
@@ -363,7 +366,7 @@ void dAcOtubo_c::initializeState_Slope() {
}
void dAcOtubo_c::executeState_Slope() {
if (mObjAcch.ChkGroundLanding()) {
fn_8002A450(position, polyAttr0, polyAttr1, mField_0x1B4, 0, 1.0f, mField_0x1B0);
dJEffManager_c::spawnGroundEffect(position, polyAttr0, polyAttr1, mField_0x1B4, 0, 1.0f, mField_0x1B0);
} else if (mObjAcch.ChkGndHit()) {
mField_0x9DC = 0.f;
addPickupTarget();
@@ -446,11 +449,7 @@ void dAcOtubo_c::finalizeState_Rebirth() {
setActorProperty(0x1);
}
extern "C" void fn_80027510(void *, bool);
extern "C" void fn_80027560(void *, bool, int);
extern "C" void *fn_800298B0(u16, mVec3_c *, mVec3_c *, u32, u32, u32, u32, u32);
extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_109_, PARTICLE_RESOURCE_ID_MAPPING_209_;
extern "C" void *ENVIRONMENT;
extern "C" void fn_80022BE0(void *, const mVec3_c &);
void dAcOtubo_c::destroy() {
@@ -462,19 +461,23 @@ void dAcOtubo_c::destroy() {
if (!boolParam) {
return;
}
fn_80022BE0(ENVIRONMENT, position);
fn_80022BE0(BlurAndPaletteManager::GetPInstance(), position);
mActorCarryInfo.fn_80050EA0(this);
void *fx_thing = fn_800298B0(PARTICLE_RESOURCE_ID_MAPPING_209_, &poscopy2, nullptr, 0, 0, 0, 0, 0);
dEmitterBase_c *fx_thing = dJEffManager_c::spawnEffect(
PARTICLE_RESOURCE_ID_MAPPING_209_, poscopy2, nullptr, nullptr, nullptr, nullptr, 0, 0
);
if (fx_thing) {
fn_80027510(fx_thing, mSubtype != 0);
fx_thing->attachEmitterCallbackId(mSubtype != 0 ? dJEffManager_c::TsuboB : dJEffManager_c::TsuboA);
}
fx_thing = fn_800298B0(PARTICLE_RESOURCE_ID_MAPPING_109_, &position, nullptr, 0, 0, 0, 0, 0);
fx_thing = dJEffManager_c::spawnEffect(
PARTICLE_RESOURCE_ID_MAPPING_109_, position, nullptr, nullptr, nullptr, nullptr, 0, 0
);
if (fx_thing) {
fn_80027560(fx_thing, mSubtype != 0, 0);
fx_thing->bindShpEmitter(mSubtype != 0 ? dJEffManager_c::TsuboB : dJEffManager_c::TsuboA, false);
}
playSound(0xA47); // TODO (Sound ID)
playSound(SE_Tubo_BREAK);
if (mSceneflag < 0xFF && !checkSceneflag()) {
SceneflagManager::sInstance->setFlag(roomid, mSceneflag);
@@ -605,7 +608,7 @@ void dAcOtubo_c::fn_272_2670() {
f32 groundH = mObjAcch.GetGroundH();
f32 waterH = mObjAcch.GetWtrGroundH();
bool noSound = mbSubmerged;
mEff_0x91C.fn_8002B120(waterH, groundH);
mEff_0x91C.execute(waterH, groundH);
if (checkSubmerged()) {
forwardAccel = -0.8f;
@@ -614,7 +617,7 @@ void dAcOtubo_c::fn_272_2670() {
cLib::addCalcPosXZ(&velocity, mVec3_c::Zero, 0.05f, 1.0f, 0.2f);
forwardSpeed = EGG::Math<f32>::sqrt(velocity.x * velocity.x + velocity.z * velocity.z);
if (!noSound) {
playSound(0x9A0); // TODO (Sound ID) - Fall Water S
playSound(SE_O_FALL_WATER_S);
}
mbSubmerged = true;
} else {
@@ -860,7 +863,7 @@ void dAcOtubo_c::playRollSound() {
return;
}
FUN_8002d770(0xA48, forwardSpeed);
FUN_8002d770(SE_Tubo_ROLL_LV, forwardSpeed);
}
void float_order() {
+5 -4
View File
@@ -19,6 +19,8 @@
#include "s/s_Math.h"
#include "toBeSorted/blur_and_palette_manager.h"
#include "toBeSorted/dowsing_target.h"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/small_sound_mgr.h"
void float_ordering() {
const f32 arr[] = {5.f, 15.f, 7.f, 0.5f, 0.1f};
@@ -260,12 +262,11 @@ bool dAcOTumbleWeed_c::checkInvalidGround() const {
}
extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_743_;
extern "C" void fn_800298B0(u16, mVec3_c *, mAng3_c *, u32, u32, u32, u32, u32);
void dAcOTumbleWeed_c::doBreak() {
playSound(0xC2D); // TODO(Sound Id)
playSound(SE_TWeed_CUT);
mVec3_c pos = getPosition();
fn_800298B0(PARTICLE_RESOURCE_ID_MAPPING_743_, &pos, nullptr, 0, 0, 0, 0, 0);
dJEffManager_c::spawnEffect(PARTICLE_RESOURCE_ID_MAPPING_743_, pos, nullptr, nullptr, nullptr, nullptr, 0, 0);
deleteRequest();
}
@@ -347,7 +348,7 @@ void dAcOTumbleWeed_c::tumbleBounceMaybe() {
}
void dAcOTumbleWeed_c::adjustTimeScale() {
mTimeArea.check(getRoomId(), GetPostion(), 0, 30.f, 0.1f);
mTimeArea.check(getRoomId(), GetPosition(), 0, 30.f, 0.1f);
if (0.f < mTimeArea.getDistMaybe()) {
sLib::chase(&mScale.y, 0.f, 0.07f);
mScale.z = mScale.y;
+4 -4
View File
@@ -14,14 +14,14 @@
#include "m/m_mtx.h"
#include "m/m_vec.h"
#include "toBeSorted/attention.h"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/small_sound_mgr.h"
extern "C" void fn_800298B0(u16, mVec3_c *, mVec3_c *, u32, u32, u32, u32, u32);
extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_394_;
void dAcOInsect_c::kill() {
// Small Ordering issue between loading particle id and position
fn_800298B0(PARTICLE_RESOURCE_ID_MAPPING_394_, &position, nullptr, 0, 0, 0, 0, 0);
playSound(0x1236); // TODO (Sound ID)
dJEffManager_c::spawnEffect(PARTICLE_RESOURCE_ID_MAPPING_394_, position, nullptr, nullptr, nullptr, nullptr, 0, 0);
playSound(SE_Insect_DISAPPEAR);
deleteRequest();
}
+6 -5
View File
@@ -6,6 +6,8 @@
#include "d/flag/sceneflag_manager.h"
#include "nw4r/g3d/res/g3d_resfile.h"
#include "s/s_Math.h"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/small_sound_mgr.h"
SPECIAL_ACTOR_PROFILE(OBJ_SW, dAcOsw_c, fProfile::OBJ_SW, 0x12B, 0, 0x1002);
@@ -144,7 +146,6 @@ int dAcOsw_c::doDelete() {
}
extern "C" u16 PARTICLE_RESOURCE_ID_MAPPING_754_;
extern "C" void fn_800298B0(u16, mVec3_c *, mAng3_c *, u32, u32, u32, u32, u32);
int dAcOsw_c::actorExecute() {
mStateMgr.executeState();
@@ -153,8 +154,8 @@ int dAcOsw_c::actorExecute() {
if (field_0x5A0.field_0x00 <= 0.0f) {
if (mScale.x >= 1.0f) {
if (!mHidden) {
fn_800298B0(PARTICLE_RESOURCE_ID_MAPPING_754_, &position, &rotation, 0, 0, 0, 0, 0);
playSound(0xC0B);
dJEffManager_c::spawnEffect(PARTICLE_RESOURCE_ID_MAPPING_754_, position, &rotation, nullptr, nullptr, nullptr, 0, 0);
playSound(SE_TIMESLIP_TIMESLIP_REV);
mHidden = true;
}
} else {
@@ -166,8 +167,8 @@ int dAcOsw_c::actorExecute() {
} else {
if (mScale.x <= 0.0f) {
if (!mShown) {
fn_800298B0(PARTICLE_RESOURCE_ID_MAPPING_754_, &position, &rotation, 0, 0, 0, 0, 0);
playSound(0xC0A);
dJEffManager_c::spawnEffect(PARTICLE_RESOURCE_ID_MAPPING_754_, position, &rotation, nullptr, nullptr, nullptr, 0, 0);
playSound(SE_TIMESLIP_TIMESLIP);
mShown = true;
}
} else {
+3 -4
View File
@@ -1933,14 +1933,13 @@ void dAcTbox_c::executeState_LoadArchive() {
}
void dAcTbox_c::finalizeState_LoadArchive() {}
extern "C" void fn_800298B0(u16 effectIndex, mVec3_c *, mAng3_c *, mVec3_c *, void *, void *, void *, void *);
extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_209_;
extern "C" const bool isPouchItem(u16);
extern "C" dAcItem_c *giveItem3(u16 item, s32);
void dAcTbox_c::initializeState_Open() {
mScale.set(1.0f, 1.0f, 1.0f);
playSound(0xA36);
playSound(SE_TBox_OPEN_A);
clearActorProperty(0x100);
if (mVariant == NORMAL) {
mAnmMatClr1.setFrame(mAnmMatClr1.getFrameMax(0), 0);
@@ -1957,7 +1956,7 @@ void dAcTbox_c::initializeState_Open() {
mVec3_c pos;
fn_8026B380(pos);
mVec3_c p2 = fn_8026B3C0();
fn_800298B0(PARTICLE_RESOURCE_ID_MAPPING_209_, &pos, &rotation, &p2, nullptr, nullptr, nullptr, nullptr);
dJEffManager_c::spawnEffect(PARTICLE_RESOURCE_ID_MAPPING_209_, pos, &rotation, &p2, nullptr, nullptr, 0, 0);
}
fn_8026D140();
ITEM_ID itemId = mItemId != 0 ? (ITEM_ID)mItemId : ITEM_GODDESS_HARP;
@@ -2377,7 +2376,7 @@ void dAcTbox_c::unregisterDowsing() {
extern "C" u16 PARTICLE_RESOURCE_ID_MAPPING_208_;
void dAcTbox_c::spawnAppearEffect() {
fn_800298B0(PARTICLE_RESOURCE_ID_MAPPING_208_, &position, &rotation, nullptr, nullptr, nullptr, nullptr, nullptr);
dJEffManager_c::spawnEffect(PARTICLE_RESOURCE_ID_MAPPING_208_, position, &rotation, nullptr, nullptr, nullptr, 0, 0);
}
bool dAcTbox_c::checkIsClear() const {
+2 -2
View File
@@ -9,6 +9,7 @@
#include "nw4r/g3d/res/g3d_resfile.h"
#include "nw4r/g3d/res/g3d_resmdl.h"
#include "s/s_State.hpp"
#include "toBeSorted/d_emitter.h"
SPECIAL_ACTOR_PROFILE(OBJ_WATER_SPOUT, dAcOwaterSpout_c, fProfile::OBJ_WATER_SPOUT, 0x1DA, 0, 6);
@@ -59,14 +60,13 @@ int dAcOwaterSpout_c::draw() {
return SUCCEEDED;
}
extern "C" void fn_800298B0(u16, mVec3_c *, mVec3_c *, mVec3_c *, u32, u32, u32, u32);
extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_213_;
void dAcOwaterSpout_c::initializeState_Wait() {
if (params == 1) {
return;
}
fn_800298B0(PARTICLE_RESOURCE_ID_MAPPING_213_, &position, nullptr, &mScale, 0, 0, 0, 0);
dJEffManager_c::spawnEffect(PARTICLE_RESOURCE_ID_MAPPING_213_, position, nullptr, &mScale, nullptr, nullptr, 0, 0);
}
void dAcOwaterSpout_c::executeState_Wait() {
if (mMdl.getAnm().isStop()) {
+1 -1
View File
@@ -1182,7 +1182,7 @@ void dBgS::SetLightingCode(dAcObjBase_c *pObj, const cBgS_PolyInfo &info) {
f32 dBgS::SetLightingCode(dAcObjBase_c *pObj, f32 height) {
dBgS_ObjGndChk objGndChk;
mVec3_c pos = pObj->GetPostion();
mVec3_c pos = pObj->GetPosition();
pos.y += height;
objGndChk.SetPos(&pos);
f32 gndCross = GroundCross(&objGndChk);
+1 -1
View File
@@ -85,7 +85,7 @@ void dBgS_Acch::Set(dAcObjBase_c *pObj, int tblSize, dBgS_AcchCir *pAcchCir) {
mpAcchCir = pAcchCir;
mpMyObj = pObj;
mActorId = pObj->getID();
mpPos = &pObj->GetPostion();
mpPos = &pObj->GetPosition();
mpOldPos = &pObj->GetOldPosition();
mpSpeed = &pObj->GetVelocity();
if (mpSpeed) {
+1 -1
View File
@@ -176,7 +176,7 @@ u32 dCcMassS_Mng::Chk(mVec3_c *p_xyz, dAcObjBase_c **p_actor, dCcMassS_HitInf *p
if (field_0x3A8 & 0x10) {
mVec3_c vec;
PSVECSubtract((*p_actor)->GetPostion(), *p_xyz, vec);
PSVECSubtract((*p_actor)->GetPosition(), *p_xyz, vec);
vec.y = 0;
f32 vecMag = PSVECMag(vec);
if (cM3d_IsZero(vecMag)) {
+2 -2
View File
@@ -22,7 +22,7 @@ int dBase_c::preExecute() {
if (fBase_c::preExecute() == 0) {
return NOT_READY;
}
if (s_ExecuteControlFlags && !isProcControlFlag(s_ExecuteControlFlags)) {
if (s_ExecuteControlFlags && !isBasePropertyFlag(s_ExecuteControlFlags)) {
return NOT_READY;
}
return SUCCEEDED;
@@ -41,7 +41,7 @@ int dBase_c::preDraw() {
if (fBase_c::preDraw() == NOT_READY) {
return NOT_READY;
}
if (s_DrawControlFlags && !isProcControlFlag(s_DrawControlFlags)) {
if (s_DrawControlFlags && !isBasePropertyFlag(s_DrawControlFlags)) {
return NOT_READY;
}
return SUCCEEDED;
+2 -2
View File
@@ -15,7 +15,7 @@
#include "nw4r/math/math_types.h"
#include "sized_string.h"
#include "toBeSorted/dowsing_target.h"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/file_manager.h"
#include "toBeSorted/small_sound_mgr.h"
@@ -722,7 +722,7 @@ void dLytMeterDowsing_c::executeState_DemoMove() {
idx = i + DOWSING_PANE_ITEM_OFFSET;
nw4r::math::MTX34 mtx = mpPanes[idx]->GetGlobalMtx();
mVec3_c pos(mtx._03, mtx._13, 0.0f);
EffectsStruct::fn_800298C0(PARTICLE_RESOURCE_ID_MAPPING_970_, &pos, nullptr, nullptr, nullptr, nullptr);
dJEffManager_c::spawnUIEffect(PARTICLE_RESOURCE_ID_MAPPING_970_, pos, nullptr, nullptr, nullptr, nullptr);
SmallSoundManager::GetInstance()->playSound(SE_S_DOWSING_ADD);
}
} else if (mDemoFrame == 16) {
+2 -2
View File
@@ -6,7 +6,7 @@
#include "d/lyt/d2d.h"
#include "d/lyt/d_lyt_game_over.h"
#include "nw4r/math/math_types.h"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/event_manager.h"
#include "toBeSorted/file_manager.h"
#include "toBeSorted/small_sound_mgr.h"
@@ -287,7 +287,7 @@ void dLytMeterHeart_c::executeInternal() {
if (mEffectHeartIdx >= 0) {
nw4r::math::MTX34 mtx = mpHeartPanes[mEffectHeartIdx]->GetGlobalMtx();
mVec3_c pos(mtx._03, mtx._13, 0.0f);
EffectsStruct::fn_800298C0(PARTICLE_RESOURCE_ID_MAPPING_972_, &pos, nullptr, nullptr, nullptr, nullptr);
dJEffManager_c::spawnUIEffect(PARTICLE_RESOURCE_ID_MAPPING_972_, pos, nullptr, nullptr, nullptr, nullptr);
SmallSoundManager::GetInstance()->playSound(SE_S_HEART_ADD);
mEffectHeartIdx = -1;
}
+32 -32
View File
@@ -18,7 +18,7 @@
#include "nw4r/math/math_types.h"
#include "s/s_Math.h"
#include "sized_string.h"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/event_manager.h"
#include "toBeSorted/minigame_mgr.h"
#include "toBeSorted/small_sound_mgr.h"
@@ -702,8 +702,8 @@ void dLytMeterItemSelect_c::initializeState_SelectIn() {
if (dAcPy_c::GetLink()->checkFlags0x340(0x400)) {
field_0x57BD = 1;
field_0x5788 = 0;
field_0x579B = 0;
mEffects.fn_80027320(0);
mEffectAlpha = 0;
mEffects.setGlobalAlpha(0);
mpPanes[ITEM_SELECT_PANE_ICON_OFFSET + 2]->SetInfluencedAlpha(true);
mpPanes[ITEM_SELECT_PANE_ICON_OFFSET + 2]->SetAlpha(64);
}
@@ -759,16 +759,16 @@ void dLytMeterItemSelect_c::executeState_SelectIn() {
bAllAnimsSettled = false;
} else {
field_0x57BE = 1;
bool settled0x57BE = true;
bool settled0x5784 = true;
if (field_0x579B != 0xFF) {
settled0x57BE = sLib::chaseUC(&field_0x579B, 0xFF, 0x55);
bool settledAnimAlpha = true;
bool settledAnimScale = true;
if (mEffectAlpha != 0xFF) {
settledAnimAlpha = sLib::chaseUC(&mEffectAlpha, 0xFF, 0x55);
}
if (field_0x5784 != 1.0f) {
settled0x5784 = sLib::chase(&field_0x5784, 1.0f, 0.06666666f);
if (mEffectScale != 1.0f) {
settledAnimScale = sLib::chase(&mEffectScale, 1.0f, 0.06666666f);
}
mEffects.fn_80027320(field_0x579B);
if (!settled0x57BE || !settled0x5784) {
mEffects.setGlobalAlpha(mEffectAlpha);
if (!settledAnimAlpha || !settledAnimScale) {
bAllAnimsSettled = false;
}
}
@@ -840,13 +840,13 @@ void dLytMeterItemSelect_c::executeState_SetIn() {
} else {
bool settled0x57BE = true;
bool settled0x5784 = true;
if (field_0x579B != 0) {
settled0x57BE = sLib::chaseUC(&field_0x579B, 0, 0x55);
if (mEffectAlpha != 0) {
settled0x57BE = sLib::chaseUC(&mEffectAlpha, 0, 0x55);
}
if (field_0x5784 != 0.8f) {
settled0x5784 = sLib::chase(&field_0x5784, 0.8f, 0.06666666f);
if (mEffectScale != 0.8f) {
settled0x5784 = sLib::chase(&mEffectScale, 0.8f, 0.06666666f);
}
mEffects.fn_80027320(field_0x579B);
mEffects.setGlobalAlpha(mEffectAlpha);
if (settled0x57BE && settled0x5784) {
field_0x57BD = 0;
field_0x57BE = 0;
@@ -1058,13 +1058,13 @@ void dLytMeterItemSelect_c::executeState_SelectOut() {
} else {
bool settled0x57BE = true;
bool settled0x5784 = true;
if (field_0x579B != 0) {
settled0x57BE = sLib::chaseUC(&field_0x579B, 0, 0x55);
if (mEffectAlpha != 0) {
settled0x57BE = sLib::chaseUC(&mEffectAlpha, 0, 0x55);
}
if (field_0x5784 != 0.8f) {
settled0x5784 = sLib::chase(&field_0x5784, 0.8f, 0.06666666f);
if (mEffectScale != 0.8f) {
settled0x5784 = sLib::chase(&mEffectScale, 0.8f, 0.06666666f);
}
mEffects.fn_80027320(field_0x579B);
mEffects.setGlobalAlpha(mEffectAlpha);
if (settled0x57BE && settled0x5784) {
field_0x57BD = 0;
field_0x57BE = 0;
@@ -1410,7 +1410,7 @@ void dLytMeterItemSelect_c::executeState_DemoMove() {
nw4r::math::MTX34 mtx = mpPanes[i + ITEM_SELECT_PANE_ICON_OFFSET]->GetGlobalMtx();
mVec3_c pos(mtx._03, mtx._13, 0.0f);
EffectsStruct::fn_800298C0(PARTICLE_RESOURCE_ID_MAPPING_740_, &pos, nullptr, nullptr, nullptr, nullptr);
dJEffManager_c::spawnUIEffect(PARTICLE_RESOURCE_ID_MAPPING_740_, pos, nullptr, nullptr, nullptr, nullptr);
if (mIsBocoburinLocked[i]) {
mIsBocoburinLocked[i] = false;
@@ -1674,9 +1674,9 @@ bool dLytMeterItemSelect_c::build(d2d::ResAccIf_c *resAcc) {
field_0x578C = 0;
field_0x5790 = 0;
field_0x5784 = 0.8f;
mEffectScale = 0.8f;
field_0x5788 = 0;
field_0x579B = 0;
mEffectAlpha = 0;
field_0x57BD = 0;
field_0x57BE = 0;
field_0x57BF = 0;
@@ -1922,9 +1922,9 @@ bool dLytMeterItemSelect_c::execute() {
}
if (field_0x57BD != 0) {
field_0x579B = 0;
field_0x5784 = 0.8f;
mEffects.fn_80027320(0);
mEffectAlpha = 0;
mEffectScale = 0.8f;
mEffects.setGlobalAlpha(0);
field_0x57BD = 0;
field_0x57BE = 0;
mpPanes[ITEM_SELECT_PANE_ICON_OFFSET + 2]->SetAlpha(0xFF);
@@ -2241,18 +2241,18 @@ extern "C" const u16 PARTICLE_RESOURCE_ID_MAPPING_717_;
void dLytMeterItemSelect_c::fn_800EF580() {
nw4r::math::MTX34 mtx = mpPanes[11]->GetGlobalMtx();
mVec3_c pos(mtx._03, mtx._13, 0.0f);
mVec3_c scale(field_0x5784, field_0x5784, field_0x5784);
mEffects.fn_80029A70(PARTICLE_RESOURCE_ID_MAPPING_717_, &pos, nullptr, &scale, nullptr, nullptr);
mVec3_c scale(mEffectScale, mEffectScale, mEffectScale);
mEffects.createContinuousUIEffect(PARTICLE_RESOURCE_ID_MAPPING_717_, pos, nullptr, &scale, nullptr, nullptr);
if (field_0x57C0 != 0) {
mEffects.fn_80026ED0();
mEffects.stopDrawParticles();
field_0x57C0 = 0;
} else {
if (field_0x57BE != field_0x57BF) {
if (field_0x57BE != 0) {
mEffects.fn_80026F10();
mEffects.playDrawParticles();
} else {
mEffects.fn_80026ED0();
mEffects.stopDrawParticles();
}
}
}
+5 -5
View File
@@ -626,8 +626,8 @@ void dLytMeterMinusBtn_c::initializeState_DemoMove() {
nw4r::math::MTX34 mtx = mpPanes[i + MINUS_BTN_PANE_ITEM_OFFSET]->GetGlobalMtx();
mVec3_c pos(mtx._03, mtx._13, 0.0f);
mSlotForEffect[numPlayingEffects] = i;
mEffects[numPlayingEffects].fn_80029980(
PARTICLE_RESOURCE_ID_MAPPING_971_, &pos, &mEffectsRot[numPlayingEffects], nullptr, nullptr, nullptr
mEffects[numPlayingEffects].createUIEffect(
PARTICLE_RESOURCE_ID_MAPPING_971_, pos, &mEffectsRot[numPlayingEffects], nullptr, nullptr, nullptr
);
numPlayingEffects++;
}
@@ -665,8 +665,8 @@ void dLytMeterMinusBtn_c::executeState_DemoMove() {
nw4r::math::MTX34 mtx = getPaneByIndex(mSlotToDemo + MINUS_BTN_PANE_ITEM_OFFSET)->GetGlobalMtx();
mVec3_c pos(mtx._03, mtx._13, 0.0f);
mSlotForEffect[0] = mSlotToDemo;
mEffects[0].fn_80029980(
PARTICLE_RESOURCE_ID_MAPPING_971_, &pos, &mEffectsRot[0], nullptr, nullptr, nullptr
mEffects[0].createUIEffect(
PARTICLE_RESOURCE_ID_MAPPING_971_, pos, &mEffectsRot[0], nullptr, nullptr, nullptr
);
}
} else if (mDemoFrame > 0) {
@@ -676,7 +676,7 @@ void dLytMeterMinusBtn_c::executeState_DemoMove() {
mEffectsRot[i].z += demoRotIncrement;
nw4r::math::MTX34 mtx = getPaneByIndex(slot + MINUS_BTN_PANE_ITEM_OFFSET)->GetGlobalMtx();
mVec3_c pos(mtx._03, mtx._13, 0.0f);
mEffects[i].fn_800271E0(&pos, &mEffectsRot[i], nullptr);
mEffects[i].setPosRotScaleWithScreenScale(pos, &mEffectsRot[i], nullptr);
}
}
}
+11 -11
View File
@@ -14,7 +14,7 @@
#include "m/m_vec.h"
#include "nw4r/lyt/lyt_pane.h"
#include "nw4r/math/math_types.h"
#include "toBeSorted/effects_struct.h"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/event_manager.h"
#include "toBeSorted/small_sound_mgr.h"
@@ -391,16 +391,16 @@ void LytMeterTimerPart1_c::createEffect(s32 fruitIndex) {
pos.x = mtx._03;
pos.y = mtx._13;
pos.z = 0.0f;
EffectsStruct::fn_800298C0(
PARTICLE_RESOURCE_ID_MAPPING_135_, &pos, nullptr, nullptr, &mColors1[TIMER_01_COLOR_00_CIRCLE],
dJEffManager_c::spawnUIEffect(
PARTICLE_RESOURCE_ID_MAPPING_135_, pos, nullptr, nullptr, &mColors1[TIMER_01_COLOR_00_CIRCLE],
&mColors2[TIMER_01_COLOR_01_CIRCLE]
);
EffectsStruct::fn_800298C0(
PARTICLE_RESOURCE_ID_MAPPING_136_, &pos, nullptr, nullptr, &mColors1[TIMER_01_COLOR_00_SHADOW],
dJEffManager_c::spawnUIEffect(
PARTICLE_RESOURCE_ID_MAPPING_136_, pos, nullptr, nullptr, &mColors1[TIMER_01_COLOR_00_SHADOW],
&mColors2[TIMER_01_COLOR_01_SHADOW]
);
EffectsStruct::fn_800298C0(
PARTICLE_RESOURCE_ID_MAPPING_137_, &pos, nullptr, nullptr, &mColors1[TIMER_01_COLOR_00_RAINBOW_CIRCLE],
dJEffManager_c::spawnUIEffect(
PARTICLE_RESOURCE_ID_MAPPING_137_, pos, nullptr, nullptr, &mColors1[TIMER_01_COLOR_00_RAINBOW_CIRCLE],
&mColors2[TIMER_01_COLOR_01_RAINBOW_CIRCLE]
);
}
@@ -1000,8 +1000,8 @@ void LytMeterTimerPart2_c::createSingleFruitEffect() {
pos.x = mtx._03;
pos.y = mtx._13;
pos.z = 0.0f;
EffectsStruct::fn_800298C0(
PARTICLE_RESOURCE_ID_MAPPING_174_, &pos, nullptr, nullptr, &mColors1[TIMER_02_COLOR_00_00],
dJEffManager_c::spawnUIEffect(
PARTICLE_RESOURCE_ID_MAPPING_174_, pos, nullptr, nullptr, &mColors1[TIMER_02_COLOR_00_00],
&mColors2[TIMER_02_COLOR_01_00]
);
}
@@ -1012,8 +1012,8 @@ void LytMeterTimerPart2_c::createFruitCompleteEffect() {
pos.x = mtx._03;
pos.y = mtx._13;
pos.z = 0.0f;
EffectsStruct::fn_800298C0(
PARTICLE_RESOURCE_ID_MAPPING_206_, &pos, nullptr, nullptr, &mColors1[TIMER_02_COLOR_00_01],
dJEffManager_c::spawnUIEffect(
PARTICLE_RESOURCE_ID_MAPPING_206_, pos, nullptr, nullptr, &mColors1[TIMER_02_COLOR_00_01],
&mColors2[TIMER_02_COLOR_01_01]
);
}
+1 -1
View File
@@ -515,7 +515,7 @@ bool mShadowChild_c::setGeom(const GXTexObj *texObj, const mMtx_c &mtx, const mQ
void mShadowChild_c::updateMtx() {
const mQuat_c &q = GetQuat();
const mVec3_c &pos = GetPostion();
const mVec3_c &pos = GetPosition();
Set0x13C(q.w);
+2 -2
View File
@@ -5,7 +5,7 @@
BlurAndPaletteManager BlurAndPaletteManager::sInstance;
BlurAndPaletteManager *BlurAndPaletteManager::sPInstance;
TList<UnkBlurPaletteListNode, offsetof(UnkBlurPaletteListNode, mNode)> sList;
TList<UnkBlurPaletteListNode, offsetof(UnkBlurPaletteListNode, mNode)> sPlayingEffectsList;
mColor BlurAndPaletteManager::combineColors(const mColor &c1, const mColor &c2, f32 ratio) {
mColor result;
@@ -178,7 +178,7 @@ BlurAndPaletteManager::BlurAndPaletteManager() {
}
field_0x5CE4.MA06_kColor3 = mColor(0xff, 0xff, 0xff, 0xff);
field_0x5CE4.MA00_kColor3 = mColor(0xff, 0xff, 0xff, 0xff);
field_0x5CE4.MA01_tevReg1 = mColor(0xff, 0xff, 0xff, 0xff);
field_0x5CE4.MA01_kColor2 = mColor(0xff, 0xff, 0xff, 0xff);
field_0x5CE4.MA02_tevReg1 = mColor(0xff, 0xff, 0xff, 0xff);
+2 -2
View File
@@ -376,7 +376,7 @@ void EggTextureProc::doDraw() {}
void EggTextureProc::doRemove() {}
bool EggTextureProc::create(int prioOpa, int prioXlu, mAllocator_c *alloc) {
bool UnkProc::create(int prioOpa, int prioXlu, mAllocator_c *alloc) {
if (!m3d::proc_c::create(alloc, nullptr)) {
return false;
}
@@ -390,7 +390,7 @@ bool EggTextureProc::create(int prioOpa, int prioXlu, mAllocator_c *alloc) {
return true;
}
bool EggTextureProc::createXlu(int prioXlu, mAllocator_c *alloc) {
bool UnkProc::createXlu(int prioXlu, mAllocator_c *alloc) {
if (!m3d::proc_c::create(alloc, nullptr)) {
return false;
}
File diff suppressed because it is too large Load Diff
+149
View File
@@ -0,0 +1,149 @@
#include "toBeSorted/d_unk_mdl_stuff_2.h"
#include "common.h"
#include "d/col/bg/d_bg_s.h"
#include "egg/gfx/eggLightManager.h"
#include "m/m3d/m3d.h"
#include "m/m3d/m_proc.h"
#include "m/m_mtx.h"
#include "nw4r/g3d/g3d_draw1mat1shp.h"
#include "nw4r/g3d/g3d_scnobj.h"
#include "nw4r/g3d/g3d_state.h"
#include "nw4r/g3d/res/g3d_resmat.h"
#include "nw4r/g3d/res/g3d_resshp.h"
#include "nw4r/math/math_types.h"
#include "rvl/GX/GXLight.h"
#include "rvl/GX/GXTev.h"
#include "rvl/GX/GXTypes.h"
#include "rvl/MTX/mtx.h"
#include "toBeSorted/blur_and_palette_manager.h"
bool dShpProcBase_c::init(nw4r::g3d::ResMat mat, nw4r::g3d::ResShp shp, s32 count, bool xlu, u32 *pSize) {
mCount = count;
mpFlags = new bool[count];
if (mpFlags == nullptr) {
return false;
}
if (pSize != nullptr) {
*pSize += count * sizeof(bool);
}
for (s32 i = 0; i < mCount; i++) {
mpFlags[i] = 0;
}
mMat = mat;
mShp = shp;
if (xlu) {
setOption(nw4r::g3d::ScnObj::OPTION_DISABLE_DRAW_OPA, true);
} else {
setOption(nw4r::g3d::ScnObj::OPTION_DISABLE_DRAW_XLU, true);
}
return true;
}
void dShpProcBase_c::setupLight() {
u32 pDiffColorMask;
u32 pDiffAlphaMask;
u32 pSpecColorMask;
u32 pSpecAlphaMask;
GXColor pColor;
m3d::getLightMgr(0)->LoadLightSet(
mLightSetId, &pDiffColorMask, &pDiffAlphaMask, &pSpecColorMask, &pSpecAlphaMask, &pColor
);
GXSetChanCtrl(GX_COLOR0, GX_TRUE, GX_SRC_REG, GX_SRC_REG, (GXLightID)pDiffColorMask, GX_DF_CLAMP, GX_AF_SPOT);
GXSetChanCtrl(GX_ALPHA0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE);
GXSetChanAmbColor(GX_COLOR0, pColor);
}
void dShpProcBase_c::draw(mVec3_c *pos) {
nw4r::g3d::Draw1Mat1ShpDirectly(
mMat, nw4r::g3d::ResShp(nullptr), mMtx_c::Identity, mMtx_c::Identity, 0, nullptr, nullptr
);
setupLight();
if (!field_0x2C) {
BlurAndPaletteManager &mgr = BlurAndPaletteManager::GetInstance();
u32 code = 0xFF;
if (pos != nullptr) {
pos->y += 100.0f;
code = dBgS::GetInstance()->GetLightingCode(pos);
}
if (code != 0) {
GXSetTevColor(GX_TEVREG0, BlurAndPaletteManager::getLightColor1());
GXSetTevKColor(GX_KCOLOR0, BlurAndPaletteManager::getLightColor2());
} else {
GXSetTevColor(GX_TEVREG0, mgr.GetCurrentSph().white2_ffffff);
GXSetTevKColor(GX_KCOLOR0, mgr.GetCurrentSph().grey2_aaaaaa);
}
}
}
void dShpProcBase_c::setResMat(nw4r::g3d::ResMat mat) {
mMat = mat;
}
void dShpProcBase_c::setAllFlags() {
for (s32 idx = 0; idx < mCount; idx++) {
mpFlags[idx] = 1;
}
}
void dShpProcBase_c::doEntry(s32 lightSetId) {
mLightSetId = lightSetId;
entry();
}
bool dShpProc1_c::create(nw4r::g3d::ResMat mat, nw4r::g3d::ResShp shp, s32 count, mHeapAllocator_c *alloc, bool xlu, u32 *pSize) {
if (!m3d::proc_c::create(alloc, pSize)) {
return false;
}
if (!init(mat, shp, count, xlu, pSize)) {
return false;
}
mpTransforms = new mMtx_c[count];
if (mpTransforms == nullptr) {
return false;
}
if (pSize != nullptr) {
*pSize += count * sizeof(mMtx_c);
}
for (s32 idx = 0; idx < count; idx++) {
MTXIdentity(mpTransforms[idx]);
}
return true;
}
void dShpProc1_c::draw() {
mMtx_c viewMtx;
getViewMtx(viewMtx);
s32 ctrl = 0;
mMtx_c *pTransforms = mpTransforms;
bool *pFlags = mpFlags;
dShpProcBase_c::draw(nullptr);
for (s32 idx = 0; idx < mCount;) {
if (*pFlags == false) {
mMtx_c mtx;
mtx.copyFrom(*pTransforms);
MTXConcat(viewMtx, mtx, mtx);
mMtx_c mtx2;
// Regswaps that can be fixed with a copy inline that uses array indexing...
mtx2.copyFrom(mtx);
mtx2.fn_802F1C40(0, 1);
nw4r::math::MTX33 mtx3;
for (int a = 0; a < 3; a++) {
for (int b = 0; b < 3; b++) {
mtx3.m[a][b] = mtx2.m[a][b];
}
}
nw4r::g3d::G3DState::SetViewPosNrmMtxArray(mtx, &mtx3, nullptr);
nw4r::g3d::Draw1Mat1ShpDirectly(nw4r::g3d::ResMat(nullptr), mShp, mtx, mtx2, ctrl, nullptr, nullptr);
if (ctrl == 0) {
ctrl = 2;
}
}
idx++;
pTransforms++;
pFlags++;
}
}