1010#include " kernel/fileBundle.h"
1111#include " mainMenuDebugTasks.h"
1212#include " audio/soundDriver.h"
13+ #include " town/townCamera.h"
14+
15+ // https://youtu.be/Txks9hG21qs?t=2980
1316
1417void setupVdp1Proj (fixedPoint fov); // TODO: cleanup
1518
@@ -31,27 +34,6 @@ struct TWN_E011_data : public sTownOverlay
3134 sTownObject * createObjectTaskFromEA_subTaskWithEAArg (npcFileDeleter* parent, sSaturnPtr definitionEA, s32 size, sSaturnPtr arg) override ;
3235};
3336
34- // TODO: shared in EPKs
35- void e011_cameraUpdate (sCameraTask * pThis)
36- {
37- if ((npcData0.mFC & 1 ) == 0 )
38- {
39- pThis->m4 ++;
40- if (pThis->m4 > 5400 )
41- {
42- pThis->m4 = 5400 ;
43- }
44- }
45- }
46-
47- // TODO: shared in EPKs
48- void e011_cameraDraw (sCameraTask * pThis)
49- {
50- sVec3_FP stack16;
51- transformVecByCurrentMatrix (pThis->m14 , stack16);
52- setupLight (stack16[0 ], stack16[1 ], stack16[2 ], pThis->m10 .toU32 ());
53- }
54-
5537u32 modulateColor (sSaturnPtr r4, u32 r5)
5638{
5739 FunctionUnimplemented ();
@@ -64,67 +46,6 @@ u32 modulateColorByEvent(sCameraTask* cameraTaskPtr, s32 r5)
6446 return 0 ;
6547}
6648
67- // TODO: that's generic right?
68- s32 e011_scriptFunction_0605ce38 (int iParm1)
69-
70- {
71- u32 unaff_r12;
72-
73- switch (cameraTaskPtr->m0 )
74- {
75- case 0 :
76- case 2 :
77- unaff_r12 = modulateColor (cameraTaskPtr->m8 , cameraTaskPtr->m30 );
78- break ;
79- case 1 :
80- unaff_r12 = modulateColorByEvent (cameraTaskPtr, cameraTaskPtr->m4 + iParm1);
81- break ;
82- default :
83- assert (0 );
84- break ;
85- }
86-
87- fadePalette (&g_fadeControls.m0_fade0 , convertColorToU32ForFade (g_fadeControls.m0_fade0 .m0_color ), 0xc210 , iParm1);
88- fadePalette (&g_fadeControls.m24_fade1 , convertColorToU32ForFade (g_fadeControls.m24_fade1 .m0_color ), unaff_r12, iParm1);
89- cameraTaskPtr->m1 = 1 ;
90- return 1 ;
91- }
92-
93- s32 scriptFunction_605cbd0 (s32 r4, s32 r5)
94- {
95- sVec3_FP r4Value = readSaturnVec3 (sSaturnPtr::createFromRaw (r4, gTWN_E011 )); // todo: that could be a vec2
96- sSaturnPtr r5Ptr = sSaturnPtr::createFromRaw (r5, gTWN_E011 );
97- cameraTaskPtr->m8 = r5Ptr;
98-
99- sMatrix4x3 var4;
100- initMatrixToIdentity (&var4);
101- rotateMatrixShiftedY (r4Value[1 ], &var4);
102- rotateMatrixShiftedX (r4Value[0 ], &var4);
103-
104- cameraTaskPtr->m14 [0 ] = var4.matrix [3 ];
105- cameraTaskPtr->m14 [1 ] = var4.matrix [7 ];
106- cameraTaskPtr->m14 [2 ] = var4.matrix [11 ];
107-
108- cameraTaskPtr->m10 = readSaturnRGB8 (r5Ptr);
109- cameraTaskPtr->m30 = 0x8000 ;
110-
111- generateLightFalloffMap (readSaturnRGB8 (r5Ptr + 3 ).toU32 (), readSaturnRGB8 (r5Ptr + 6 ).toU32 (), readSaturnRGB8 (r5Ptr + 9 ).toU32 ());
112-
113- cameraTaskPtr->m_UpdateMethod = e011_cameraUpdate;
114- cameraTaskPtr->m_DrawMethod = e011_cameraDraw;
115-
116- if (g_fadeControls.m_4C <= g_fadeControls.m_4D )
117- {
118- vdp2Controls.m20_registers [0 ].m112_CLOFSL = 0x10 ;
119- vdp2Controls.m20_registers [1 ].m112_CLOFSL = 0x10 ;
120- }
121-
122- resetProjectVector ();
123- cameraTaskPtr->m2 = 0 ;
124- cameraTaskPtr->m0 = 0 ;
125- return 0 ;
126- }
127-
12849struct sE011Task1 : public s_workAreaTemplate <sE011Task1 >
12950{
13051 static TypedTaskDefinition* getTypedTaskDefinition ()
@@ -201,13 +122,13 @@ TWN_E011_data::TWN_E011_data() : sTownOverlay("TWN_E011.PRG")
201122 overlayScriptFunctions.m_zeroArg [0x60584a6 ] = &e006_scriptFunction_605861eSub0;
202123
203124 overlayScriptFunctions.m_oneArg [0x605ceb0 ] = &TwnFadeOut;
125+ overlayScriptFunctions.m_oneArg [0x605ce38 ] = &TwnFadeIn;
204126 overlayScriptFunctions.m_oneArg [0x605845c ] = &createEPKPlayer;
205127 overlayScriptFunctions.m_oneArg [0x6059af0 ] = &e011_scriptFunction_6059af0;
206128 overlayScriptFunctions.m_oneArg [0x60596ca ] = &setupDragonEntityForCutscene;
207- overlayScriptFunctions.m_oneArg [0x605ce38 ] = &e011_scriptFunction_0605ce38;
208129 overlayScriptFunctions.m_oneArg [0x6059b7a ] = &e011_scriptFunction_06059b7a;
209130
210- overlayScriptFunctions.m_twoArg [0x605cbd0 ] = &scriptFunction_605cbd0 ;
131+ overlayScriptFunctions.m_twoArg [0x605cbd0 ] = &townCamera_setup ;
211132
212133 mTownSetups .push_back (readTownSetup (getSaturnPtr (0x0605ef14 ), 1 ));
213134 mTownSetups .push_back (readTownSetup (getSaturnPtr (0x0605ef20 ), 1 ));
0 commit comments