mirror of
https://github.com/zeldaret/ss
synced 2026-06-14 06:14:12 -04:00
Merge pull request #161 from robojumper/d_emitter
d_emitter 78% (EffectsStruct)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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"),
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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(); }
|
||||
|
||||
@@ -143,7 +143,7 @@ public:
|
||||
rot_copy = rotation;
|
||||
}
|
||||
|
||||
mVec3_c &GetPostion() {
|
||||
mVec3_c &GetPosition() {
|
||||
return position;
|
||||
}
|
||||
mAng3_c &GetRotation() {
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
/******************************************************************************
|
||||
|
||||
@@ -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 ';
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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]
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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++;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user