@@ -99,13 +99,15 @@ static inline void MaskPaletteWithUnderwaterColor_inline(u32 *dst, u32 *src, u32
9999 }
100100}
101101
102+ #if (GAME == GAME_SA1 )
102103void sub_804C40C (void )
103104{
104105 Water * water = & gWater ;
105106
106107 MaskPaletteWithUnderwaterColor_inline ((u32 * )& sPaletteBuffer [0 ], (u32 * )& gObjPalette [0 ], water -> mask , 16 * 16 );
107108 MaskPaletteWithUnderwaterColor_inline ((u32 * )& sPaletteBuffer [16 * 16 ], (u32 * )& gBgPalette [0 ], water -> mask , 16 * 16 );
108109}
110+ #endif
109111
110112#if (GAME == GAME_SA2 )
111113void InitWaterPalettes (void )
@@ -209,21 +211,12 @@ void CreateStageWaterTask(s32 waterLevel, u32 p1, u32 mask)
209211 }
210212}
211213
212- // (91.10%) https://decomp.me/scratch/zSeoc
213- NONMATCH ("asm/non_matching/game/shared/stage/water_effects__Task_StageWaterTask.inc" , void Task_StageWaterTask (void ))
214+ void Task_StageWaterTask (void )
214215{
215216 Water * water = & gWater ;
216217 struct Camera * cam = & gCamera ;
217218 bool32 active ;
218219 Sprite * s ;
219- u8 unk1 ;
220- #ifndef NON_MATCHING
221- register u8 unk2_0 asm("r0" );
222- register u8 unk2_2 asm("r2" );
223- #else
224- u8 unk2_0 ;
225- u8 unk2_2 ;
226- #endif
227220
228221#if (HAS_RUN_ON_WATER )
229222 if ((gCurrentLevel == LEVEL_INDEX (ZONE_1 , ACT_1 )) && (I (gPlayer .qWorldX ) > 6665 ) && (I (gPlayer .qWorldX ) <= 10650 )) {
@@ -258,8 +251,7 @@ NONMATCH("asm/non_matching/game/shared/stage/water_effects__Task_StageWaterTask.
258251 gVBlankCallbacks [gNumVBlankCallbacks ++ ] = SA2_LABEL (sub_8011A4C );
259252 gFlags |= FLAGS_EXECUTE_VBLANK_CALLBACKS ;
260253
261- unk1 = water -> SA2_LABEL (unk1 ) - 1 ;
262- if (unk1 < DISPLAY_HEIGHT - 1 ) {
254+ if (water -> SA2_LABEL (unk1 ) > 0 && water -> SA2_LABEL (unk1 ) < DISPLAY_HEIGHT ) {
263255 s = & water -> s ;
264256 s -> x = - ((cam -> x + ((gStageTime + 1 ) >> 2 )) & 15 );
265257 s -> y = water -> SA2_LABEL (unk2 ) + 1 ;
@@ -278,35 +270,31 @@ NONMATCH("asm/non_matching/game/shared/stage/water_effects__Task_StageWaterTask.
278270 }
279271 }
280272
281- unk2_0 = (water -> SA2_LABEL (unk2 ));
282- if ((unk2_2 = unk2_0 - 1 ) < DISPLAY_HEIGHT - 1 ) {
273+ if (water -> SA2_LABEL (unk2 ) > 0 && water -> SA2_LABEL (unk2 ) < DISPLAY_HEIGHT ) {
283274 gIntrTable [INTR_INDEX_VCOUNT ] = SA2_LABEL (VCountIntr_8011ACC );
284- gVCountSetting = unk2_0 - 1 ;
275+ gVCountSetting = water -> SA2_LABEL ( unk2 ) - 1 ;
285276 gFlags |= FLAGS_40 ;
286277 } else {
287278 gIntrTable [INTR_INDEX_VCOUNT ] = gIntrTableTemplate [INTR_INDEX_VCOUNT ];
288279 gFlags &= ~FLAGS_40 ;
289280 }
290281
291282#if (GAME == GAME_SA1 )
292- if (unk2_0 >= DISPLAY_HEIGHT ) {
283+ if (water -> SA2_LABEL ( unk2 ) >= DISPLAY_HEIGHT ) {
293284 gFlags &= ~FLAGS_EXECUTE_HBLANK_COPY ;
294285 } else {
295- s32 r3 = gStageTime * 4 ;
296- u32 r5 ;
297- s32 adder ;
298- void * ptr ;
299- r3 += (gBgScrollRegs [3 ][1 ] + water -> SA2_LABEL (unk2 ) % 32u ) << 6 ;
300- r3 %= 1024u ;
286+ #ifndef NON_MATCHING
287+ UNUSED u32 _ ;
288+ #endif
289+ u32 r5 , i ;
290+ s32 r3 = CLAMP_SIN_PERIOD (((gStageTime * 4 ) + (((gBgScrollRegs [3 ][1 ] + water -> SA2_LABEL (unk2 )) % 32u ) << 6 )));
301291
302292 SA2_LABEL (sub_8007738 )
303293 (3 , 0 , 32 , r3 , 2 , 64 , (((gStageTime * 2 + (((gBgScrollRegs [3 ][1 ] + water -> SA2_LABEL (unk2 )) % 32u ) << 5 ))) + 0x100 ) & ONE_CYCLE , 10 ,
304294 32 , gBgScrollRegs [3 ][0 ], gBgScrollRegs [3 ][1 ]);
305295
306- for (r5 = 32 , ptr = gBgOffsetsHBlankPrimary + (adder = (gHBlankCopySize << 5 )); r5 < DISPLAY_HEIGHT ;) {
307- DmaCopy32 (3 , gBgOffsetsHBlankPrimary , ptr , (gHBlankCopySize << 5 ));
308- ptr += adder ;
309- r5 += 0x20 ;
296+ for (r5 = 32 , i = 1 ; r5 < DISPLAY_HEIGHT ; i ++ , r5 += 32 ) {
297+ DmaCopy32 (3 , gBgOffsetsHBlankPrimary , gBgOffsetsHBlankPrimary + ((gHBlankCopySize << 5 ) * i ), (gHBlankCopySize << 5 ));
310298 }
311299
312300 if (water -> SA2_LABEL (unk2 )) {
@@ -315,7 +303,6 @@ NONMATCH("asm/non_matching/game/shared/stage/water_effects__Task_StageWaterTask.
315303 }
316304#endif
317305}
318- END_NONMATCH
319306
320307#if (HAS_RUN_ON_WATER )
321308void CreateRunOnWaterEffect (void )
0 commit comments