Document fade bg script func

This commit is contained in:
Fexty12573
2025-07-25 22:34:29 +02:00
parent 9faf532741
commit 555d64d23a
5 changed files with 59 additions and 37 deletions

View File

@@ -49,7 +49,10 @@
#define BATTLE_BG_PRIORITY_BASE 1
#define BATTLE_BG_PRIORITY_EFFECT 3
#define BATTLE_BG_PALETTE_EFFECT (1 << 9)
#define BATTLE_BG_PALETTE_EFFECT 9
#define BATTLE_BG_PALETTE_MON_SPRITE 8
#define BATTLE_BG_PALETTE_FLAG_EFFECT (1 << BATTLE_BG_PALETTE_EFFECT)
#define BATTLE_BG_PALETTE_FLAG_MON_SPRITE (1 << BATTLE_BG_PALETTE_MON_SPRITE)
#define BATTLE_BG_ANIM_REVERSE_NEVER 0 //< Don't reverse BG anims
#define BATTLE_BG_ANIM_REVERSE_ENEMY_ONLY 1 //< Reverse BG anims only for enemy attacking player
@@ -80,5 +83,9 @@
#define FLAIL_MODE_ATTACKER 0
#define FLAIL_MODE_DEFENDER 1
#define FADE_BG_TYPE_BASE 0
#define FADE_BG_TYPE_MON_SPRITE 1
#define FADE_BG_TYPE_EFFECT 2
// clang-format on
#endif // POKEPLATINUM_CONSTANTS_BATTLE_ANIM_H

View File

@@ -11,7 +11,7 @@ void ov12_022271D8(BattleAnimSystem *param0);
void BattleAnimScriptFunc_RotateMon(BattleAnimSystem *param0);
void BattleAnimScriptFunc_Submission(BattleAnimSystem *param0);
void ov12_0222777C(BattleAnimSystem *param0, SpriteSystem *param1, SpriteManager *param2, ManagedSprite *param3);
void ov12_02227828(BattleAnimSystem *param0);
void BattleAnimScriptFunc_FadeBg(BattleAnimSystem *param0);
void ov12_0222797C(BattleAnimSystem *param0);
void ov12_02227CBC(BattleAnimSystem *param0);
void ov12_02227F30(BattleAnimSystem *param0);

View File

@@ -1812,7 +1812,7 @@ static void BattleAnimScriptCmd_LoadPokemonSpriteIntoBg(BattleAnimSystem *system
system->heapID,
PLTTBUF_MAIN_BG,
0,
PLTT_DEST(8));
PLTT_DEST(BATTLE_BG_PALETTE_MON_SPRITE));
Graphics_LoadTilemapToBgLayerFromOpenNARC(
system->arcs[BATTLE_ANIM_SYSTEM_ARC_BATT_BG],
@@ -2305,7 +2305,7 @@ static void BattleBgSwitch_SetBg(BattleBgSwitch *bgSwitch, BattleAnimSystem *sys
system->heapID,
0,
PALETTE_SIZE_BYTES,
PLTT_DEST(9));
PLTT_DEST(BATTLE_BG_PALETTE_EFFECT));
Bg_ClearTilemap(system->bgConfig, bgLayer);
@@ -2582,10 +2582,10 @@ static BOOL BattleBgSwitch_Fade(SysTask *task, BattleBgSwitch *bgSwitch)
// set effect BG palette to black/white immediately
if (bgSwitch->fadeType == BATTLE_BG_FADE_TO_BLACK) {
PaletteData_StartFade(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG_F, bgSwitch->battleAnimSystem->baseBgPalettes, 0, 0, 16, GX_RGBA(0, 0, 0, 0));
PaletteData_BlendMulti(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG, BATTLE_BG_PALETTE_EFFECT, 16, GX_RGBA(0, 0, 0, 0));
PaletteData_BlendMulti(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG, BATTLE_BG_PALETTE_FLAG_EFFECT, 16, GX_RGBA(0, 0, 0, 0));
} else {
PaletteData_StartFade(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG_F, bgSwitch->battleAnimSystem->baseBgPalettes, 0, 0, 16, GX_RGBA(31, 31, 31, 1));
PaletteData_BlendMulti(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG, BATTLE_BG_PALETTE_EFFECT, 16, GX_RGBA(31, 31, 31, 1));
PaletteData_BlendMulti(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG, BATTLE_BG_PALETTE_FLAG_EFFECT, 16, GX_RGBA(31, 31, 31, 1));
}
bgSwitch->state++;
@@ -2603,9 +2603,9 @@ static BOOL BattleBgSwitch_Fade(SysTask *task, BattleBgSwitch *bgSwitch)
// Fade effect BG palette back to normal
if (bgSwitch->fadeType == BATTLE_BG_FADE_TO_BLACK) {
PaletteData_StartFade(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG_F, BATTLE_BG_PALETTE_EFFECT, 0, 16, 0, GX_RGBA(0, 0, 0, 0));
PaletteData_StartFade(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG_F, BATTLE_BG_PALETTE_FLAG_EFFECT, 0, 16, 0, GX_RGBA(0, 0, 0, 0));
} else {
PaletteData_StartFade(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG_F, BATTLE_BG_PALETTE_EFFECT, 0, 16, 0, GX_RGBA(31, 31, 31, 1));
PaletteData_StartFade(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG_F, BATTLE_BG_PALETTE_FLAG_EFFECT, 0, 16, 0, GX_RGBA(31, 31, 31, 1));
}
BattleBgSwitch_ApplyFlags(bgSwitch);
@@ -2638,10 +2638,10 @@ static BOOL BattleBgRestore_Fade(SysTask *task, BattleBgSwitch *bgSwitch)
// Fade effect BG palette to black/white and
// set normal battle/contest BG palettes to black/white
if (bgSwitch->fadeType == BATTLE_BG_FADE_TO_BLACK) {
PaletteData_StartFade(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG_F, BATTLE_BG_PALETTE_EFFECT, 0, 0, 16, GX_RGBA(0, 0, 0, 0));
PaletteData_StartFade(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG_F, BATTLE_BG_PALETTE_FLAG_EFFECT, 0, 0, 16, GX_RGBA(0, 0, 0, 0));
PaletteData_BlendMulti(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG, bgSwitch->battleAnimSystem->baseBgPalettes, 16, GX_RGBA(0, 0, 0, 0));
} else {
PaletteData_StartFade(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG_F, BATTLE_BG_PALETTE_EFFECT, 0, 0, 16, GX_RGBA(31, 31, 31, 1));
PaletteData_StartFade(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG_F, BATTLE_BG_PALETTE_FLAG_EFFECT, 0, 0, 16, GX_RGBA(31, 31, 31, 1));
PaletteData_BlendMulti(bgSwitch->battleAnimSystem->paletteData, PLTTBUF_MAIN_BG, bgSwitch->battleAnimSystem->baseBgPalettes, 16, GX_RGBA(31, 31, 31, 1));
}

View File

@@ -50,7 +50,7 @@ static const BattleAnimScriptFunc sBattleAnimScriptFuncs[] = {
BattleAnimScriptFunc_VitalThrow,
BattleAnimScriptFunc_Swagger,
BattleAnimScriptFunc_Memento,
ov12_02227828,
BattleAnimScriptFunc_FadeBg,
ov12_0222797C,
ov12_02227CBC,
ov12_02226CB0,

View File

@@ -93,10 +93,19 @@ typedef struct {
s16 unk_4E;
} UnkStruct_ov12_02227620;
typedef struct {
BattleAnimSystem *unk_00;
PaletteData *unk_04;
} UnkStruct_ov12_02227808;
// -------------------------------------------------------------------
// Fade BG
// -------------------------------------------------------------------
typedef struct FadeBgContext {
BattleAnimSystem *battleAnimSys;
PaletteData *paletteData;
} FadeBgContext;
#define FADE_BG_VAR_BG_TYPE 0
#define FADE_BG_VAR_DELAY 1
#define FADE_BG_VAR_START_VALUE 2
#define FADE_BG_VAR_END_VALUE 3
#define FADE_BG_VAR_COLOR 4
typedef struct {
BattleAnimSystem *unk_00;
@@ -1046,43 +1055,49 @@ void ov12_0222777C(BattleAnimSystem *param0, SpriteSystem *param1, SpriteManager
BattleAnimSystem_StartAnimTask(v0->unk_00, ov12_02227738, v0);
}
static void ov12_02227808(SysTask *param0, void *param1)
static void BattleAnimTask_FadeBg(SysTask *task, void *param)
{
UnkStruct_ov12_02227808 *v0 = param1;
FadeBgContext *ctx = param;
if (PaletteData_GetSelectedBuffersMask(v0->unk_04) == 0) {
Heap_Free(v0);
BattleAnimSystem_EndAnimTask(v0->unk_00, param0);
if (PaletteData_GetSelectedBuffersMask(ctx->paletteData) == 0) {
Heap_Free(ctx);
BattleAnimSystem_EndAnimTask(ctx->battleAnimSys, task);
}
}
void ov12_02227828(BattleAnimSystem *param0)
void BattleAnimScriptFunc_FadeBg(BattleAnimSystem *system)
{
UnkStruct_ov12_02227808 *v0;
u16 v1;
FadeBgContext *ctx = BattleAnimUtil_Alloc(system, sizeof(FadeBgContext));
v0 = BattleAnimUtil_Alloc(param0, sizeof(UnkStruct_ov12_02227808));
ctx->battleAnimSys = system;
ctx->paletteData = BattleAnimSystem_GetPaletteData(ctx->battleAnimSys);
v0->unk_00 = param0;
v0->unk_04 = BattleAnimSystem_GetPaletteData(v0->unk_00);
switch (BattleAnimSystem_GetScriptVar(param0, 0)) {
case 0:
v1 = BattleAnimSystem_GetBaseBgPalettes(param0);
u16 paletteToFade;
switch (BattleAnimSystem_GetScriptVar(system, FADE_BG_VAR_BG_TYPE)) {
case FADE_BG_TYPE_BASE:
paletteToFade = BattleAnimSystem_GetBaseBgPalettes(system);
break;
case 1:
v1 = (1 << 8);
case FADE_BG_TYPE_MON_SPRITE:
paletteToFade = BATTLE_BG_PALETTE_FLAG_MON_SPRITE;
break;
case 2:
v1 = (1 << 9);
case FADE_BG_TYPE_EFFECT:
paletteToFade = BATTLE_BG_PALETTE_FLAG_EFFECT;
break;
default:
GF_ASSERT(0);
GF_ASSERT(FALSE);
break;
}
PaletteData_StartFade(v0->unk_04, 0x1, v1, BattleAnimSystem_GetScriptVar(param0, 1), BattleAnimSystem_GetScriptVar(param0, 2), BattleAnimSystem_GetScriptVar(param0, 3), BattleAnimSystem_GetScriptVar(param0, 4));
BattleAnimSystem_StartAnimTask(v0->unk_00, ov12_02227808, v0);
PaletteData_StartFade(
ctx->paletteData,
PLTTBUF_MAIN_BG_F,
paletteToFade,
BattleAnimSystem_GetScriptVar(system, FADE_BG_VAR_DELAY),
BattleAnimSystem_GetScriptVar(system, FADE_BG_VAR_START_VALUE),
BattleAnimSystem_GetScriptVar(system, FADE_BG_VAR_END_VALUE),
BattleAnimSystem_GetScriptVar(system, FADE_BG_VAR_COLOR));
BattleAnimSystem_StartAnimTask(ctx->battleAnimSys, BattleAnimTask_FadeBg, ctx);
}
static void ov12_022278D0(SysTask *param0, void *param1)