Start decompiling haze.c

This commit is contained in:
y.demaisonregne 2023-03-09 01:59:25 +01:00
parent 25878e698c
commit e659c9b011
4 changed files with 70 additions and 2 deletions

8
include/data/haze_data.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef HAZE_DATA_H
#define HAZE_DATA_H
#include "types.h"
extern const u8 sHaze_345ff8[132];
#endif /* HAZE_DATA_H */

View File

@ -26,4 +26,6 @@ extern u8 gUnk_3005729;
extern HazeFunc_T gHazeProcessCodePointer;
extern u8 gCurrentHazeValue;
#endif /* HAZE_STRUCT_H */

View File

@ -5,6 +5,4 @@
extern u8 gMonochromeBgFading;
extern u8 gCurrentHazeValue;
#endif

View File

@ -1,19 +1,79 @@
#include "haze.h"
#include "gba.h"
#include "data/engine_pointers.h"
#include "data/haze_data.h"
#include "constants/haze.h"
#include "structs/haze.h"
#include "structs/room.h"
#define HAZE_SET_INACTIVE() \
do { \
gHazeInfo.flag &= ~HAZE_FLAG_ACTIVE_FLAG;\
} while(0);
void HazeSetBackgroundEffect(void)
{
// https://decomp.me/scratch/MYhgd
HazeResetLoops();
gCurrentHazeValue = sHazeData[gCurrentRoomEntry.visualEffect][0];
if (gCurrentHazeValue)
{
gCurrentRoomEntry.damageEffect = sHazeData[gCurrentRoomEntry.visualEffect][1];
gWaterMovement.moving = sHazeData[gCurrentRoomEntry.visualEffect][2];
}
HazeSetupCode(gCurrentHazeValue);
}
/**
* @brief 5d034 | 98 | Transfers the haze effect and clears it
*
*/
void HazeTransferAndDeactivate(void)
{
vu8 buffer;
if (gHazeInfo.flag & HAZE_FLAG_ACTIVE_FLAG)
{
dma_set(0, EWRAM_BASE + 0x26300, gHazeInfo.pAffected, (DMA_ENABLE | DMA_DEST_RELOAD) << 16 | gHazeInfo.size / 2);
buffer = sHaze_345ff8[0];
buffer = sHaze_345ff8[0];
dma_set(0, EWRAM_BASE + 0x26300, gHazeInfo.pAffected, (DMA_DEST_RELOAD) << 16 | gHazeInfo.size / 2);
gHazeInfo.flag &= ~HAZE_FLAG_ACTIVE_FLAG;
}
}
/**
* @brief 5d09c | 7c | To document
*
*/
void unk_5d09c(void)
{
vu8 buffer;
if (gHazeInfo.flag & HAZE_FLAG_ACTIVE_FLAG)
{
dma_set(0, EWRAM_BASE + 0x26300, gHazeInfo.pAffected, (DMA_ENABLE | DMA_DEST_RELOAD) << 16 | gHazeInfo.size / 2);
buffer = sHaze_345ff8[0];
buffer = sHaze_345ff8[0];
dma_set(0, EWRAM_BASE + 0x26300, gHazeInfo.pAffected, (DMA_DEST_RELOAD) << 16 | gHazeInfo.size / 2);
HAZE_SET_INACTIVE();
gHazeInfo.size = 2;
gHazeInfo.pAffected = EWRAM_BASE + 0x26D00;
gCurrentHazeValue = 0;
}
}
void HazeSetupCode(u8 hazeValue)