mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-04-26 08:41:27 -05:00
Some checks are pending
build / build (push) Waiting to run
This replaces instances of NARC IDs with type `int` or `u32` to use `enum NarcID` instead, and replaces most instances of a NARC ID to be named `narcID` instead of `narc`, `narcIndex` or `narcIdx`. The name wasn't replaced where the original one was more descriptive.
607 lines
18 KiB
C
607 lines
18 KiB
C
#include "overlay022/ov22_0225A428.h"
|
|
|
|
#include <nitro.h>
|
|
#include <string.h>
|
|
|
|
#include "struct_defs/struct_02095C60.h"
|
|
|
|
#include "overlay022/ov22_022597BC.h"
|
|
#include "overlay022/struct_ov22_02256BAC.h"
|
|
#include "overlay022/struct_ov22_022597BC.h"
|
|
#include "overlay022/struct_ov22_022599A0.h"
|
|
#include "overlay022/struct_ov22_0225A428.h"
|
|
#include "overlay022/struct_ov22_0225A914.h"
|
|
#include "overlay022/struct_ov22_0225AB54.h"
|
|
#include "overlay022/struct_ov22_0225AD68.h"
|
|
#include "overlay022/struct_ov22_0225AE9C.h"
|
|
|
|
#include "bg_window.h"
|
|
#include "font.h"
|
|
#include "game_options.h"
|
|
#include "message.h"
|
|
#include "narc.h"
|
|
#include "render_window.h"
|
|
#include "sound_playback.h"
|
|
#include "sprite.h"
|
|
#include "sprite_resource.h"
|
|
#include "sprite_transfer.h"
|
|
#include "sprite_util.h"
|
|
#include "strbuf.h"
|
|
#include "sys_task.h"
|
|
#include "text.h"
|
|
#include "unk_02095AF0.h"
|
|
|
|
static void ov22_0225A6E0(UnkStruct_ov22_022597BC *param0, BgConfig *param1);
|
|
static void ov22_0225A718(BgConfig *param0, const Options *param1);
|
|
static void ov22_0225A748(Window **param0, BgConfig *param1, int param2, int param3, int param4, int param5, int param6, BOOL param7);
|
|
static void ov22_0225A7B8(UnkStruct_ov22_022597BC *param0);
|
|
static void ov22_0225A7C0(Window *param0);
|
|
static s32 ov22_0225A7CC(Window *param0, int param1, int param2, int param3, int param4, int param5, u32 param6);
|
|
static s32 ov22_0225A814(Window *param0, int param1, int param2, int param3, int param4, int param5, u32 param6, Strbuf **param7);
|
|
static s32 ov22_0225A860(Window *param0, enum NarcID narcID, int param2, int param3, int param4, int param5, TextColor param6, u32 param7);
|
|
static s32 ov22_0225A8B4(Window *param0, enum NarcID narcID, int param2, int param3, int param4, int param5, u32 param6, u32 param7, Strbuf **param8);
|
|
static void ov22_0225A914(UnkStruct_ov22_0225A914 *param0, SpriteList *param1, SpriteResourceCollection **param2, int param3, NARC *param4);
|
|
static void ov22_0225A9C8(UnkStruct_ov22_0225A914 *param0, int param1);
|
|
static void ov22_0225AA10(UnkStruct_ov22_0225A914 *param0, SpriteResourceCollection **param1);
|
|
static void ov22_0225AB54(UnkStruct_ov22_0225AB54 *param0, SpriteList *param1, SpriteResourceCollection **param2, int param3, BgConfig *param4, UnkStruct_02095C60 *param5, NARC *param6);
|
|
static void ov22_0225AC58(UnkStruct_ov22_0225AB54 *param0, SpriteResourceCollection **param1);
|
|
static void ov22_0225AC8C(UnkStruct_ov22_0225AB54 *param0);
|
|
static void ov22_0225AD5C(UnkStruct_ov22_0225AB54 *param0);
|
|
static void ov22_0225ACBC(UnkStruct_ov22_0225AB54 *param0);
|
|
static void ov22_0225ACE4(UnkStruct_ov22_0225AB54 *param0);
|
|
static void ov22_0225ADC0(UnkStruct_ov22_0225AB54 *param0, UnkStruct_ov22_0225AE9C *param1);
|
|
static void ov22_0225AE9C(UnkStruct_ov22_0225AE9C *param0);
|
|
static BOOL ov22_0225AF34(const UnkStruct_ov22_0225AE9C *param0);
|
|
static void ov22_0225AA34(SpriteResource **param0, SpriteResourceCollection **param1, int param2, NARC *param3, int param4, int param5, int param6, int param7, int param8, int param9);
|
|
static void ov22_0225AAC0(SpriteResource **param0, SpriteResourceCollection **param1);
|
|
static void ov22_0225AAF4(SpriteResource **param0, SpriteResourceCollection **param1, SpriteResourcesHeader *param2, int param3);
|
|
static void ov22_0225AD68(UnkStruct_ov22_0225AD68 *param0, fx32 param1, fx32 param2, int param3);
|
|
static BOOL ov22_0225AD78(UnkStruct_ov22_0225AD68 *param0);
|
|
|
|
void ov22_0225A428(UnkStruct_ov22_0225A428 *param0, UnkStruct_ov22_02256BAC *param1, int param2)
|
|
{
|
|
if (param2 & 1) {
|
|
memset(param0, 0, sizeof(UnkStruct_ov22_0225A428));
|
|
}
|
|
|
|
if (param2 & 2) {
|
|
ov22_0225A6E0(¶m0->unk_00, param1->unk_00);
|
|
}
|
|
|
|
if (param2 & 4) {
|
|
ov22_0225A748(¶m0->unk_2C, param1->unk_00, 2, 19, 27, 4, (18 + 12) + 1, 1);
|
|
}
|
|
|
|
if (param2 & 8) {
|
|
ov22_0225A914(¶m0->unk_38, param1->unk_04, param1->unk_08, param1->unk_10, param1->unk_24);
|
|
}
|
|
|
|
if (param2 & 16) {
|
|
ov22_0225AB54(¶m0->unk_A0, param1->unk_04, param1->unk_08, param1->unk_1C, param1->unk_00, param1->unk_20, param1->unk_24);
|
|
}
|
|
|
|
if (param2 & 32) {
|
|
ov22_0225A748(¶m0->unk_134, param1->unk_00, 2, 1, 27, 2, (18 + 12) + (1 + (27 * 4)), 1);
|
|
Window_FillTilemap(param0->unk_134, 15);
|
|
ov22_0225A860(param0->unk_134, 26, param1->unk_14, 6, 0, 0, TEXT_COLOR(1, 2, 15), TEXT_SPEED_NO_TRANSFER);
|
|
ov22_0225A860(param0->unk_134, 26, param1->unk_14, param1->unk_18, 72, 0, TEXT_COLOR(1, 2, 15), TEXT_SPEED_NO_TRANSFER);
|
|
Window_DrawMessageBoxWithScrollCursor(param0->unk_134, 0, 1, 1);
|
|
}
|
|
|
|
param0->unk_30 = param1->unk_04;
|
|
param0->unk_34 = param1->unk_08;
|
|
|
|
ov22_0225A718(param1->unk_00, param1->unk_0C);
|
|
|
|
param0->unk_13C = Options_Frame(param1->unk_0C);
|
|
param0->unk_140 = Options_TextFrameDelay(param1->unk_0C);
|
|
param0->unk_138 |= param2;
|
|
}
|
|
|
|
void ov22_0225A560(UnkStruct_ov22_0225A428 *param0)
|
|
{
|
|
if (param0->unk_138 & 2) {
|
|
ov22_0225A7B8(¶m0->unk_00);
|
|
param0->unk_138 &= ~2;
|
|
}
|
|
|
|
if (param0->unk_138 & 4) {
|
|
ov22_0225A7C0(param0->unk_2C);
|
|
param0->unk_138 &= ~4;
|
|
}
|
|
|
|
if (param0->unk_138 & 8) {
|
|
ov22_0225AA10(¶m0->unk_38, param0->unk_34);
|
|
param0->unk_138 &= ~8;
|
|
}
|
|
|
|
if (param0->unk_138 & 16) {
|
|
ov22_0225AC58(¶m0->unk_A0, param0->unk_34);
|
|
param0->unk_138 &= ~16;
|
|
}
|
|
|
|
if (param0->unk_138 & 32) {
|
|
ov22_0225A7C0(param0->unk_134);
|
|
param0->unk_138 &= ~32;
|
|
}
|
|
|
|
memset(param0, 0, sizeof(UnkStruct_ov22_0225A428));
|
|
}
|
|
|
|
void ov22_0225A610(UnkStruct_ov22_0225A428 *param0)
|
|
{
|
|
if (param0->unk_138 & 16) {
|
|
ov22_0225AC8C(¶m0->unk_A0);
|
|
}
|
|
}
|
|
|
|
void ov22_0225A628(UnkStruct_ov22_0225A428 *param0, int param1, int param2, int param3)
|
|
{
|
|
GF_ASSERT(param0->unk_138 & 4);
|
|
ov22_0225A7CC(param0->unk_2C, param1, param2, param3, 0, 0, TEXT_SPEED_NO_TRANSFER);
|
|
}
|
|
|
|
s32 ov22_0225A660(UnkStruct_ov22_0225A428 *param0, int param1, int param2, int param3)
|
|
{
|
|
GF_ASSERT(param0->unk_138 & 4);
|
|
return ov22_0225A814(param0->unk_2C, param1, param2, param3, 0, 0, param0->unk_140, ¶m0->unk_144);
|
|
}
|
|
|
|
void ov22_0225A6A0(UnkStruct_ov22_0225A428 *param0)
|
|
{
|
|
Strbuf_Free(param0->unk_144);
|
|
param0->unk_144 = NULL;
|
|
}
|
|
|
|
void ov22_0225A6B8(UnkStruct_ov22_0225A428 *param0, int param1)
|
|
{
|
|
ov22_0225A9C8(¶m0->unk_38, param1);
|
|
}
|
|
|
|
int ov22_0225A6C4(const UnkStruct_ov22_0225A428 *param0)
|
|
{
|
|
return param0->unk_A0.unk_1C;
|
|
}
|
|
|
|
void ov22_0225A6CC(UnkStruct_ov22_0225A428 *param0, int param1)
|
|
{
|
|
param0->unk_A0.unk_20 = param1;
|
|
}
|
|
|
|
BOOL ov22_0225A6D4(const UnkStruct_ov22_0225A428 *param0)
|
|
{
|
|
return ov22_0225AF34(¶m0->unk_A0.unk_30);
|
|
}
|
|
|
|
static void ov22_0225A6E0(UnkStruct_ov22_022597BC *param0, BgConfig *param1)
|
|
{
|
|
UnkStruct_ov22_022599A0 v0;
|
|
|
|
v0.unk_00 = param1;
|
|
v0.unk_04 = 25;
|
|
v0.unk_08 = 224;
|
|
v0.unk_0C = 225;
|
|
v0.unk_10 = 226;
|
|
v0.unk_14 = 0;
|
|
v0.unk_18 = 0;
|
|
v0.unk_1C = 4;
|
|
v0.unk_20 = 1;
|
|
v0.unk_24 = 0;
|
|
v0.unk_28 = 0;
|
|
v0.heapID = HEAP_ID_14;
|
|
|
|
ov22_022597BC(param0, &v0);
|
|
}
|
|
|
|
static void ov22_0225A718(BgConfig *param0, const Options *param1)
|
|
{
|
|
int v0 = Options_Frame(param1);
|
|
|
|
LoadMessageBoxGraphics(param0, 5, 1, 1, v0, HEAP_ID_14);
|
|
Font_LoadScreenIndicatorsPalette(4, 2 * 32, HEAP_ID_14);
|
|
}
|
|
|
|
static void ov22_0225A748(Window **param0, BgConfig *param1, int param2, int param3, int param4, int param5, int param6, BOOL param7)
|
|
{
|
|
*param0 = Window_New(HEAP_ID_14, 1);
|
|
|
|
Window_Init(*param0);
|
|
Window_Add(param1, *param0, 5, param2, param3, param4, param5, 2, param6);
|
|
Window_FillTilemap(*param0, 15);
|
|
|
|
if (param7) {
|
|
Window_DrawMessageBoxWithScrollCursor(*param0, 0, 1, 1);
|
|
}
|
|
|
|
Window_CopyToVRAM(*param0);
|
|
}
|
|
|
|
static void ov22_0225A7B8(UnkStruct_ov22_022597BC *param0)
|
|
{
|
|
ov22_02259804(param0);
|
|
}
|
|
|
|
static void ov22_0225A7C0(Window *param0)
|
|
{
|
|
Windows_Delete(param0, 1);
|
|
}
|
|
|
|
static s32 ov22_0225A7CC(Window *param0, int param1, int param2, int param3, int param4, int param5, u32 param6)
|
|
{
|
|
s32 v0;
|
|
|
|
Window_FillTilemap(param0, 15);
|
|
v0 = ov22_0225A860(param0, param1, param2, param3, param4, param5, TEXT_COLOR(1, 2, 15), param6);
|
|
Window_DrawMessageBoxWithScrollCursor(param0, 0, 1, 1);
|
|
|
|
return v0;
|
|
}
|
|
|
|
static s32 ov22_0225A814(Window *param0, int param1, int param2, int param3, int param4, int param5, u32 param6, Strbuf **param7)
|
|
{
|
|
s32 v0;
|
|
|
|
Window_FillTilemap(param0, 15);
|
|
v0 = ov22_0225A8B4(param0, param1, param2, param3, param4, param5, TEXT_COLOR(1, 2, 15), param6, param7);
|
|
Window_DrawMessageBoxWithScrollCursor(param0, 0, 1, 1);
|
|
|
|
return v0;
|
|
}
|
|
|
|
static s32 ov22_0225A860(Window *window, enum NarcID narcID, int bankID, int param3, int param4, int param5, TextColor param6, u32 param7)
|
|
{
|
|
MessageLoader *msgLoader = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, narcID, bankID, HEAP_ID_13);
|
|
GF_ASSERT(msgLoader);
|
|
|
|
Strbuf *v1 = MessageLoader_GetNewStrbuf(msgLoader, param3);
|
|
s32 v2 = Text_AddPrinterWithParamsAndColor(window, FONT_MESSAGE, v1, param4, param5, param7, param6, NULL);
|
|
|
|
Strbuf_Free(v1);
|
|
MessageLoader_Free(msgLoader);
|
|
|
|
return v2;
|
|
}
|
|
|
|
static s32 ov22_0225A8B4(Window *param0, enum NarcID narcID, int bankID, int param3, int param4, int param5, u32 param6, u32 param7, Strbuf **param8)
|
|
{
|
|
GF_ASSERT(*param8 == NULL);
|
|
|
|
MessageLoader *v0 = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, narcID, bankID, HEAP_ID_13);
|
|
GF_ASSERT(v0);
|
|
*param8 = MessageLoader_GetNewStrbuf(v0, param3);
|
|
s32 v1 = Text_AddPrinterWithParamsAndColor(param0, FONT_MESSAGE, *param8, param4, param5, param7, param6, NULL);
|
|
|
|
MessageLoader_Free(v0);
|
|
|
|
return v1;
|
|
}
|
|
|
|
static void ov22_0225A914(UnkStruct_ov22_0225A914 *param0, SpriteList *param1, SpriteResourceCollection **param2, int param3, NARC *param4)
|
|
{
|
|
SpriteResourcesHeader v0;
|
|
SpriteListTemplate v1;
|
|
int v2, v3;
|
|
|
|
ov22_0225AA34(param0->unk_00, param2, 14, param4, 103, 225, 102, 101, 2, 2000);
|
|
ov22_0225AAF4(param0->unk_00, param2, &v0, 0);
|
|
|
|
v1.list = param1;
|
|
v1.resourceData = &v0;
|
|
v1.vramType = NNS_G2D_VRAM_TYPE_2DSUB;
|
|
v1.priority = 0;
|
|
v1.heapID = HEAP_ID_14;
|
|
|
|
for (v2 = 0; v2 < (20 / 10); v2++) {
|
|
v1.position.y = 104 + (18 * v2);
|
|
v1.position.y *= FX32_ONE;
|
|
v1.position.y += (512 * FX32_ONE);
|
|
|
|
for (v3 = 0; v3 < 10; v3++) {
|
|
v1.position.x = 38 + (18 * v3);
|
|
v1.position.x *= FX32_ONE;
|
|
|
|
param0->unk_10[(v2 * 10) + v3] = SpriteList_Add(&v1);
|
|
Sprite_SetAnim(param0->unk_10[(v2 * 10) + v3], 1);
|
|
|
|
if (((v2 * 10) + v3) >= param3) {
|
|
Sprite_SetDrawFlag(param0->unk_10[(v2 * 10) + v3], 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
static void ov22_0225A9C8(UnkStruct_ov22_0225A914 *param0, int param1)
|
|
{
|
|
int v0;
|
|
|
|
if (param0->unk_60 < param1) {
|
|
for (v0 = param0->unk_60; v0 < param1; v0++) {
|
|
Sprite_SetAnim(param0->unk_10[v0], 0);
|
|
}
|
|
} else if (param0->unk_60 > param1) {
|
|
for (v0 = param0->unk_60 - 1; v0 >= param1; v0--) {
|
|
Sprite_SetAnim(param0->unk_10[v0], 1);
|
|
}
|
|
}
|
|
|
|
param0->unk_60 = param1;
|
|
}
|
|
|
|
static void ov22_0225AA10(UnkStruct_ov22_0225A914 *param0, SpriteResourceCollection **param1)
|
|
{
|
|
int v0;
|
|
|
|
for (v0 = 0; v0 < 20; v0++) {
|
|
Sprite_Delete(param0->unk_10[v0]);
|
|
}
|
|
|
|
ov22_0225AAC0(param0->unk_00, param1);
|
|
}
|
|
|
|
static void ov22_0225AA34(SpriteResource **param0, SpriteResourceCollection **param1, int param2, NARC *param3, int param4, int param5, int param6, int param7, int param8, int param9)
|
|
{
|
|
param0[0] = SpriteResourceCollection_AddTilesFrom(param1[0], param3, param4, 0, param9 + param4, NNS_G2D_VRAM_TYPE_2DSUB, param2);
|
|
|
|
SpriteTransfer_RequestCharAtEnd(param0[0]);
|
|
SpriteResource_ReleaseData(param0[0]);
|
|
|
|
param0[1] = SpriteResourceCollection_AddPaletteFrom(param1[1], param3, param5, 0, param9 + param5, NNS_G2D_VRAM_TYPE_2DSUB, param8, param2);
|
|
|
|
SpriteTransfer_RequestPlttFreeSpace(param0[1]);
|
|
SpriteResource_ReleaseData(param0[1]);
|
|
|
|
param0[2] = SpriteResourceCollection_AddFrom(param1[2], param3, param6, 0, param9 + param6, 2, param2);
|
|
param0[3] = SpriteResourceCollection_AddFrom(param1[3], param3, param7, 0, param9 + param7, 3, param2);
|
|
}
|
|
|
|
static void ov22_0225AAC0(SpriteResource **param0, SpriteResourceCollection **param1)
|
|
{
|
|
SpriteTransfer_ResetCharTransfer(param0[0]);
|
|
SpriteTransfer_ResetPlttTransfer(param0[1]);
|
|
SpriteResourceCollection_Remove(param1[0], param0[0]);
|
|
SpriteResourceCollection_Remove(param1[1], param0[1]);
|
|
SpriteResourceCollection_Remove(param1[2], param0[2]);
|
|
SpriteResourceCollection_Remove(param1[3], param0[3]);
|
|
}
|
|
|
|
static void ov22_0225AAF4(SpriteResource **param0, SpriteResourceCollection **param1, SpriteResourcesHeader *param2, int param3)
|
|
{
|
|
SpriteResourcesHeader_Init(param2, SpriteResource_GetID(param0[0]), SpriteResource_GetID(param0[1]), SpriteResource_GetID(param0[2]), SpriteResource_GetID(param0[3]), 0xffffffff, 0xffffffff, 0, param3, param1[0], param1[1], param1[2], param1[3], NULL, NULL);
|
|
}
|
|
|
|
static void ov22_0225AB54(UnkStruct_ov22_0225AB54 *param0, SpriteList *param1, SpriteResourceCollection **param2, int param3, BgConfig *param4, UnkStruct_02095C60 *param5, NARC *param6)
|
|
{
|
|
SpriteResourcesHeader v0;
|
|
SpriteListTemplate v1;
|
|
int v2;
|
|
|
|
ov22_0225AA34(param0->unk_00, param2, 14, param6, 229, 230, 228, 227, 2, 3000);
|
|
ov22_0225AAF4(param0->unk_00, param2, &v0, 0);
|
|
|
|
v1.list = param1;
|
|
v1.resourceData = &v0;
|
|
v1.vramType = NNS_G2D_VRAM_TYPE_2DSUB;
|
|
v1.priority = 0;
|
|
v1.heapID = HEAP_ID_14;
|
|
v1.position.y = 58 * FX32_ONE;
|
|
v1.position.y += (512 * FX32_ONE);
|
|
|
|
for (v2 = 0; v2 < 2; v2++) {
|
|
v1.position.x = 103 + (v2 * 24);
|
|
v1.position.x *= FX32_ONE;
|
|
param0->unk_10[v2] = SpriteList_Add(&v1);
|
|
}
|
|
|
|
param0->unk_1C = param3;
|
|
param0->unk_20 = param3 * 30;
|
|
param0->unk_2C = param5;
|
|
param0->unk_2C->unk_00.unk_00 = param3;
|
|
param0->unk_2C->unk_08.unk_00 = param3;
|
|
param0->unk_90 = 0;
|
|
|
|
ov22_0225ACE4(param0);
|
|
ov22_0225A748(¶m0->unk_18, param4, 10, 8, 14, 4, (18 + 12) + ((1 + (27 * 4)) + (27 * 2)), 0);
|
|
|
|
Window_FillTilemap(param0->unk_18, 0);
|
|
|
|
ov22_0225A860(param0->unk_18, 26, 385, 4, 0, 4, TEXT_COLOR(1, 2, 0), TEXT_SPEED_NO_TRANSFER);
|
|
ov22_0225A860(param0->unk_18, 26, 385, 5, 0 + 72, 4, TEXT_COLOR(1, 2, 0), TEXT_SPEED_NO_TRANSFER);
|
|
|
|
Window_CopyToVRAM(param0->unk_18);
|
|
}
|
|
|
|
static void ov22_0225AC58(UnkStruct_ov22_0225AB54 *param0, SpriteResourceCollection **param1)
|
|
{
|
|
if (param0->unk_24) {
|
|
SysTask_Done(param0->unk_24);
|
|
}
|
|
|
|
if (param0->unk_28) {
|
|
SysTask_Done(param0->unk_28);
|
|
}
|
|
|
|
ov22_0225AAC0(param0->unk_00, param1);
|
|
ov22_0225A7C0(param0->unk_18);
|
|
|
|
memset(param0, 0, sizeof(UnkStruct_ov22_0225AB54));
|
|
}
|
|
|
|
static void ov22_0225AC8C(UnkStruct_ov22_0225AB54 *param0)
|
|
{
|
|
u32 v0;
|
|
|
|
ov22_0225AD5C(param0);
|
|
v0 = param0->unk_20 / 30;
|
|
sub_02095C60(param0->unk_2C, v0);
|
|
|
|
ov22_0225ACBC(param0);
|
|
ov22_0225ACE4(param0);
|
|
ov22_0225AE9C(¶m0->unk_30);
|
|
}
|
|
|
|
static void ov22_0225ACBC(UnkStruct_ov22_0225AB54 *param0)
|
|
{
|
|
if (param0->unk_1C != param0->unk_2C->unk_00.unk_00) {
|
|
param0->unk_1C = param0->unk_2C->unk_00.unk_00;
|
|
|
|
if (param0->unk_1C <= 10) {
|
|
ov22_0225ADC0(param0, ¶m0->unk_30);
|
|
Sound_PlayEffect(SEQ_SE_DP_HYUN2);
|
|
}
|
|
}
|
|
}
|
|
|
|
static void ov22_0225ACE4(UnkStruct_ov22_0225AB54 *param0)
|
|
{
|
|
int v0;
|
|
int v1;
|
|
int v2 = param0->unk_1C;
|
|
int v3 = 1;
|
|
|
|
for (v0 = 1; v0 < 2; v0++) {
|
|
v3 *= 10;
|
|
}
|
|
|
|
for (v0 = 0; v0 < 2; v0++) {
|
|
v1 = v2 / v3;
|
|
|
|
GF_ASSERT(v1 <= 10);
|
|
Sprite_SetAnim(param0->unk_10[v0], 0 + v1);
|
|
|
|
v2 -= v1 * v3;
|
|
v3 /= 10;
|
|
|
|
if (param0->unk_90 == 0) {
|
|
if (param0->unk_1C <= 10) {
|
|
Sprite_SetExplicitPaletteWithOffset(param0->unk_10[v0], 1);
|
|
|
|
if (v0 == 2 - 1) {
|
|
param0->unk_90 = 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
static void ov22_0225AD5C(UnkStruct_ov22_0225AB54 *param0)
|
|
{
|
|
if ((param0->unk_20 - 1) >= 0) {
|
|
param0->unk_20--;
|
|
}
|
|
}
|
|
|
|
static void ov22_0225AD68(UnkStruct_ov22_0225AD68 *param0, fx32 param1, fx32 param2, int param3)
|
|
{
|
|
param0->unk_00 = param1;
|
|
param0->unk_04 = param1;
|
|
param0->unk_08 = param2 - param1;
|
|
param0->unk_10 = param3;
|
|
param0->unk_0C = 0;
|
|
}
|
|
|
|
static BOOL ov22_0225AD78(UnkStruct_ov22_0225AD68 *param0)
|
|
{
|
|
fx32 v0;
|
|
|
|
v0 = FX_Mul(param0->unk_08, param0->unk_0C << FX32_SHIFT);
|
|
v0 = FX_Div(v0, param0->unk_10 << FX32_SHIFT);
|
|
|
|
param0->unk_00 = v0 + param0->unk_04;
|
|
|
|
if ((param0->unk_0C + 1) <= param0->unk_10) {
|
|
param0->unk_0C++;
|
|
return 0;
|
|
}
|
|
|
|
param0->unk_0C = param0->unk_10;
|
|
|
|
return 1;
|
|
}
|
|
|
|
static void ov22_0225ADC0(UnkStruct_ov22_0225AB54 *param0, UnkStruct_ov22_0225AE9C *param1)
|
|
{
|
|
int v0;
|
|
fx32 v1;
|
|
fx32 v2, v3;
|
|
VecFx32 v4;
|
|
int v5;
|
|
|
|
v4.y = 58 * FX32_ONE;
|
|
v4.y += (512 * FX32_ONE);
|
|
|
|
for (v0 = 0; v0 < 2; v0++) {
|
|
param1->unk_04[v0] = param0->unk_10[v0];
|
|
Sprite_SetAffineOverwriteMode(param1->unk_04[v0], 2);
|
|
v4.x = 103 + (v0 * 24);
|
|
v4.x *= FX32_ONE;
|
|
param1->unk_0C[v0] = v4;
|
|
}
|
|
|
|
v5 = 10 - param0->unk_1C;
|
|
|
|
if (v5 > 0) {
|
|
v1 = (FX32_CONST(1.0f)) + FX_Mul(v5 << FX32_SHIFT, (FX32_CONST(0.150f)));
|
|
} else {
|
|
v1 = (FX32_CONST(1.0f));
|
|
}
|
|
|
|
ov22_0225AD68(¶m1->unk_24, v1, (FX32_CONST(1.0f)), 16);
|
|
|
|
v2 = FX_Mul((FX32_CONST(24)), v1);
|
|
v3 = FX_Mul((FX32_CONST(24)), v1);
|
|
v2 = v2 - (FX32_CONST(24));
|
|
v3 = v3 - (FX32_CONST(24));
|
|
|
|
ov22_0225AD68(¶m1->unk_38, v2, 0, 16);
|
|
ov22_0225AD68(¶m1->unk_4C, v3, 0, 16);
|
|
|
|
param1->unk_00 = 1;
|
|
}
|
|
|
|
static void ov22_0225AE9C(UnkStruct_ov22_0225AE9C *param0)
|
|
{
|
|
VecFx32 v0;
|
|
VecFx32 v1;
|
|
BOOL v2;
|
|
|
|
if (param0->unk_00 == 0) {
|
|
return;
|
|
}
|
|
|
|
v2 = ov22_0225AD78(¶m0->unk_24);
|
|
|
|
ov22_0225AD78(¶m0->unk_38);
|
|
ov22_0225AD78(¶m0->unk_4C);
|
|
|
|
v0.x = param0->unk_24.unk_00;
|
|
v0.y = param0->unk_24.unk_00;
|
|
v0.z = param0->unk_24.unk_00;
|
|
|
|
Sprite_SetAffineScale(param0->unk_04[0], &v0);
|
|
Sprite_SetAffineScale(param0->unk_04[1], &v0);
|
|
|
|
v1 = param0->unk_0C[0];
|
|
v1.x -= param0->unk_38.unk_00;
|
|
v1.y -= param0->unk_4C.unk_00;
|
|
|
|
Sprite_SetPosition(param0->unk_04[0], &v1);
|
|
|
|
v1 = param0->unk_0C[1];
|
|
v1.y -= param0->unk_4C.unk_00;
|
|
|
|
Sprite_SetPosition(param0->unk_04[1], &v1);
|
|
|
|
if (v2) {
|
|
param0->unk_00 = 0;
|
|
}
|
|
}
|
|
|
|
static BOOL ov22_0225AF34(const UnkStruct_ov22_0225AE9C *param0)
|
|
{
|
|
if (param0->unk_00 == 1) {
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|