mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-04-26 00:32:20 -05:00
Document overlay 102 (diploma)
This commit is contained in:
parent
a2ac59a73b
commit
fb260b382d
|
|
@ -2767,11 +2767,11 @@
|
|||
.short \destVar
|
||||
.endm
|
||||
|
||||
.macro ScrCmd_1EA
|
||||
.macro ShowDiplomaSinnoh
|
||||
.short 490
|
||||
.endm
|
||||
|
||||
.macro ScrCmd_1EB
|
||||
.macro ShowDiplomaNationalDex
|
||||
.short 491
|
||||
.endm
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
TEXT_BANK_MOVES_USED_IN_BATTLE
|
||||
TEXT_BANK_UNK_0001
|
||||
TEXT_BANK_DIPLOMA
|
||||
TEXT_BANK_BATTLE_BAG
|
||||
TEXT_BANK_BATTLE_PARTY
|
||||
TEXT_BANK_UNK_0004
|
||||
|
|
|
|||
16
include/applications/diploma.h
Normal file
16
include/applications/diploma.h
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef POKEPLATINUM_APPLICATIONS_DIPLOMA_H
|
||||
#define POKEPLATINUM_APPLICATIONS_DIPLOMA_H
|
||||
|
||||
#include "overlay_manager.h"
|
||||
#include "savedata.h"
|
||||
|
||||
typedef struct DiplomaData {
|
||||
SaveData *saveData;
|
||||
BOOL isNatDex;
|
||||
} DiplomaData;
|
||||
|
||||
BOOL Diploma_Init(ApplicationManager *appMan, int *state);
|
||||
BOOL Diploma_Main(ApplicationManager *appMan, int *state);
|
||||
BOOL Diploma_Exit(ApplicationManager *appMan, int *state);
|
||||
|
||||
#endif // POKEPLATINUM_APPLICATIONS_DIPLOMA_H
|
||||
|
|
@ -86,7 +86,7 @@ enum HeapID {
|
|||
HEAP_ID_MAIN_MENU,
|
||||
HEAP_ID_ROWAN_INTRO,
|
||||
HEAP_ID_ROWAN_INTRO_TV,
|
||||
HEAP_ID_84,
|
||||
HEAP_ID_DIPLOMA,
|
||||
HEAP_ID_85,
|
||||
HEAP_ID_MYSTERY_GIFT_APP,
|
||||
HEAP_ID_WONDER_CARDS_APP,
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
#ifndef POKEPLATINUM_OV102_021D0D80_H
|
||||
#define POKEPLATINUM_OV102_021D0D80_H
|
||||
|
||||
#include "overlay_manager.h"
|
||||
|
||||
int ov102_021D0D80(ApplicationManager *appMan, int *param1);
|
||||
int ov102_021D0E2C(ApplicationManager *appMan, int *param1);
|
||||
int ov102_021D0F50(ApplicationManager *appMan, int *param1);
|
||||
|
||||
#endif // POKEPLATINUM_OV102_021D0D80_H
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
#ifndef POKEPLATINUM_STRUCT_0203E53C_H
|
||||
#define POKEPLATINUM_STRUCT_0203E53C_H
|
||||
|
||||
#include "savedata.h"
|
||||
|
||||
typedef struct {
|
||||
SaveData *saveData;
|
||||
int unk_04;
|
||||
} UnkStruct_0203E53C;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_0203E53C_H
|
||||
|
|
@ -101,7 +101,7 @@ void sub_0203E2FC(FieldSystem *fieldSystem);
|
|||
BOOL sub_0203E348(FieldSystem *fieldSystem, UnkStruct_0203E348 *param1);
|
||||
void sub_0203E414(FieldTask *task, int slotMachineID);
|
||||
void AccessoryShop_Init(FieldTask *task);
|
||||
void *sub_0203E53C(FieldSystem *fieldSystem, int heapID, int param2);
|
||||
void *FieldSystem_ShowDiploma(FieldSystem *fieldSystem, int heapID, BOOL isNatDex);
|
||||
void *sub_0203E564(FieldSystem *fieldSystem, u8 param1, u8 param2, u16 param3, int heapID);
|
||||
void *sub_0203E608(FieldSystem *fieldSystem, int heapID);
|
||||
void *FieldSystem_OpenSummaryScreenTeachMove(int unused, FieldSystem *fieldSystem, u16 partySlot, u16 move);
|
||||
|
|
|
|||
|
|
@ -1525,10 +1525,10 @@ Overlay overlay101
|
|||
Object main.nef.p/src_overlay101_ov101_021D94D8.c.o
|
||||
}
|
||||
|
||||
Overlay overlay102
|
||||
Overlay diploma
|
||||
{
|
||||
After main
|
||||
Object main.nef.p/src_overlay102_ov102_021D0D80.c.o
|
||||
Object main.nef.p/src_applications_diploma.c.o
|
||||
}
|
||||
|
||||
Overlay overlay103
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ af7de8e345ff25de55130069f313b57e85d72a4f *overlay96.sbin
|
|||
e93f9eb3382856feb76c8b0ba400b7d2593db5c5 *overlay99.sbin
|
||||
0033be85ba8a9f1eac53e0d97090911298c7de82 *overlay100.sbin
|
||||
31b95069ac95b7e75df9d29ab410dc72c14ea3b5 *overlay101.sbin
|
||||
20e1299cf7365fe4e84445238d3fd3712279b1a3 *overlay102.sbin
|
||||
20e1299cf7365fe4e84445238d3fd3712279b1a3 *diploma.sbin
|
||||
de8a847bff8c343d69b853a215e6ee775ef2ef96 *overlay103.sbin
|
||||
a3f4dcf6634992ff3367fe5a377825fb913a39f6 *overlay104.sbin
|
||||
0e6e923a1a359b9482646b3dd0a7a2562e140672 *overlay105.sbin
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ _0057:
|
|||
CloseMessage
|
||||
FadeScreenOut
|
||||
WaitFadeScreen
|
||||
ScrCmd_1EA
|
||||
ShowDiplomaSinnoh
|
||||
ReturnToField
|
||||
FadeScreenIn
|
||||
WaitFadeScreen
|
||||
|
|
@ -51,7 +51,7 @@ _0095:
|
|||
CloseMessage
|
||||
FadeScreenOut
|
||||
WaitFadeScreen
|
||||
ScrCmd_1EB
|
||||
ShowDiplomaNationalDex
|
||||
ReturnToField
|
||||
FadeScreenIn
|
||||
WaitFadeScreen
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
"key": 15060,
|
||||
"messages": [
|
||||
{
|
||||
"id": "pl_msg_00000001_00000",
|
||||
"id": "Diploma_Text_Player",
|
||||
"en_US": "PLAYER: {STRVAR_1 3, 0, 0}"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000001_00001",
|
||||
"id": "Diploma_Text_Sinnoh",
|
||||
"en_US": [
|
||||
"This document certifies that\n",
|
||||
"you have made the great\n",
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000001_00002",
|
||||
"id": "Diploma_Text_NationalDex",
|
||||
"en_US": [
|
||||
"This document certifies\n",
|
||||
"that you have successfully\n",
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000001_00003",
|
||||
"id": "Diploma_Text_GameFreak",
|
||||
"en_US": "GAME FREAK"
|
||||
}
|
||||
]
|
||||
407
src/applications/diploma.c
Normal file
407
src/applications/diploma.c
Normal file
|
|
@ -0,0 +1,407 @@
|
|||
#include "applications/diploma.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "struct_defs/struct_02099F80.h"
|
||||
|
||||
#include "bg_window.h"
|
||||
#include "font.h"
|
||||
#include "graphics.h"
|
||||
#include "gx_layers.h"
|
||||
#include "heap.h"
|
||||
#include "message.h"
|
||||
#include "overlay_manager.h"
|
||||
#include "palette.h"
|
||||
#include "save_player.h"
|
||||
#include "savedata.h"
|
||||
#include "screen_fade.h"
|
||||
#include "strbuf.h"
|
||||
#include "string_template.h"
|
||||
#include "system.h"
|
||||
#include "text.h"
|
||||
#include "trainer_info.h"
|
||||
|
||||
#include "res/text/bank/diploma.h"
|
||||
|
||||
typedef struct Diploma {
|
||||
int heapID;
|
||||
BOOL isNatDex;
|
||||
SaveData *saveData;
|
||||
TrainerInfo *trainerInfo;
|
||||
BgConfig *bgConfig;
|
||||
Window mainWindow;
|
||||
Window subWindow;
|
||||
MessageLoader *messageLoader;
|
||||
StringTemplate *stringTemplate;
|
||||
s16 yOffset;
|
||||
int timer;
|
||||
} Diploma;
|
||||
|
||||
static void Diploma_VBlankCallback(void *data);
|
||||
static void Diploma_InitBgs(Diploma *data);
|
||||
static void Diploma_FreeBgs(Diploma *data);
|
||||
static void Diploma_InitWindows(Diploma *data);
|
||||
static void Diploma_Free(Diploma *data);
|
||||
static void Diploma_ResetYOffset(Diploma *data);
|
||||
static void Diploma_UpdateYOffset(Diploma *data);
|
||||
static void Diploma_LoadGraphics(Diploma *data);
|
||||
static void Diploma_LoadText(Diploma *data);
|
||||
|
||||
BOOL Diploma_Init(ApplicationManager *appMan, int *state)
|
||||
{
|
||||
Diploma *data;
|
||||
int heapID = HEAP_ID_DIPLOMA;
|
||||
|
||||
Heap_Create(HEAP_ID_APPLICATION, heapID, 0x20000);
|
||||
|
||||
data = ApplicationManager_NewData(appMan, sizeof(Diploma), heapID);
|
||||
memset(data, 0, sizeof(Diploma));
|
||||
data->heapID = heapID;
|
||||
|
||||
DiplomaData *diplomaData = (DiplomaData *)ApplicationManager_Args(appMan);
|
||||
|
||||
data->saveData = diplomaData->saveData;
|
||||
data->isNatDex = diplomaData->isNatDex;
|
||||
data->trainerInfo = SaveData_GetTrainerInfo(data->saveData);
|
||||
|
||||
SetScreenColorBrightness(DS_SCREEN_MAIN, COLOR_BLACK);
|
||||
SetScreenColorBrightness(DS_SCREEN_SUB, COLOR_BLACK);
|
||||
SetVBlankCallback(NULL, NULL);
|
||||
SetHBlankCallback(NULL, NULL);
|
||||
GXLayers_DisableEngineALayers();
|
||||
GXLayers_DisableEngineBLayers();
|
||||
|
||||
GX_SetVisiblePlane(0);
|
||||
GXS_SetVisiblePlane(0);
|
||||
|
||||
SetAutorepeat(4, 8);
|
||||
|
||||
Diploma_InitBgs(data);
|
||||
Diploma_InitWindows(data);
|
||||
|
||||
SetVBlankCallback(Diploma_VBlankCallback, (void *)data);
|
||||
GXLayers_TurnBothDispOn();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int Diploma_Main(ApplicationManager *appMan, int *state)
|
||||
{
|
||||
Diploma *data = ApplicationManager_Data(appMan);
|
||||
BOOL retVal = FALSE;
|
||||
|
||||
switch (*state) {
|
||||
case 0:
|
||||
Diploma_ResetYOffset(data);
|
||||
Diploma_LoadGraphics(data);
|
||||
Diploma_LoadText(data);
|
||||
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_0, TRUE);
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_1, TRUE);
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_3, TRUE);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_0, TRUE);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_1, TRUE);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_3, TRUE);
|
||||
StartScreenFade(FADE_BOTH_SCREENS, FADE_TYPE_BRIGHTNESS_IN, FADE_TYPE_BRIGHTNESS_IN, COLOR_BLACK, 6, 1, data->heapID);
|
||||
*state = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (IsScreenFadeDone() == TRUE) {
|
||||
data->timer = 0;
|
||||
*state = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (data->timer < 60) {
|
||||
data->timer++;
|
||||
} else {
|
||||
*state = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (data->yOffset > -8 * 24) {
|
||||
data->yOffset -= 4;
|
||||
Diploma_UpdateYOffset(data);
|
||||
} else {
|
||||
data->yOffset = -8 * 24;
|
||||
Diploma_UpdateYOffset(data);
|
||||
*state = 4;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (JOY_NEW_ONLY(PAD_BUTTON_A) || JOY_NEW_ONLY(PAD_BUTTON_B) || gSystem.touchPressed) {
|
||||
StartScreenFade(FADE_BOTH_SCREENS, FADE_TYPE_BRIGHTNESS_OUT, FADE_TYPE_BRIGHTNESS_OUT, COLOR_BLACK, 6, 1, data->heapID);
|
||||
*state = 5;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (IsScreenFadeDone() == TRUE) {
|
||||
retVal = TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
BOOL Diploma_Exit(ApplicationManager *appMan, int *state)
|
||||
{
|
||||
Diploma *data = ApplicationManager_Data(appMan);
|
||||
int heapID = data->heapID;
|
||||
|
||||
Diploma_Free(data);
|
||||
Diploma_FreeBgs(data);
|
||||
|
||||
SetVBlankCallback(NULL, NULL);
|
||||
ApplicationManager_FreeData(appMan);
|
||||
Heap_Destroy(heapID);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void Diploma_VBlankCallback(void *data)
|
||||
{
|
||||
Bg_RunScheduledUpdates(((Diploma *)data)->bgConfig);
|
||||
}
|
||||
|
||||
static void Diploma_InitBgs(Diploma *data)
|
||||
{
|
||||
UnkStruct_02099F80 banks = {
|
||||
GX_VRAM_BG_128_B,
|
||||
GX_VRAM_BGEXTPLTT_NONE,
|
||||
GX_VRAM_SUB_BG_128_C,
|
||||
GX_VRAM_SUB_BGEXTPLTT_NONE,
|
||||
GX_VRAM_OBJ_NONE,
|
||||
GX_VRAM_OBJEXTPLTT_NONE,
|
||||
GX_VRAM_SUB_OBJ_NONE,
|
||||
GX_VRAM_SUB_OBJEXTPLTT_NONE,
|
||||
GX_VRAM_TEX_NONE,
|
||||
GX_VRAM_TEXPLTT_NONE,
|
||||
};
|
||||
|
||||
GXLayers_SetBanks(&banks);
|
||||
|
||||
data->bgConfig = BgConfig_New(data->heapID);
|
||||
|
||||
GraphicsModes graphicsModes = {
|
||||
.displayMode = GX_DISPMODE_GRAPHICS,
|
||||
.mainBgMode = GX_BGMODE_0,
|
||||
.subBgMode = GX_BGMODE_0,
|
||||
.bg0As2DOr3D = GX_BG0_AS_2D,
|
||||
};
|
||||
|
||||
SetAllGraphicsModes(&graphicsModes);
|
||||
|
||||
BgTemplate template = {
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
.bufferSize = 0,
|
||||
.baseTile = 0,
|
||||
.screenSize = BG_SCREEN_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = 0,
|
||||
.charBase = 0,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 0,
|
||||
.areaOver = 0,
|
||||
.mosaic = FALSE,
|
||||
};
|
||||
|
||||
template.screenBase = GX_BG_SCRBASE_0x0000;
|
||||
template.charBase = GX_BG_CHARBASE_0x10000;
|
||||
template.bufferSize = 0x1000;
|
||||
template.screenSize = BG_SCREEN_SIZE_256x512;
|
||||
|
||||
Bg_InitFromTemplate(data->bgConfig, BG_LAYER_MAIN_0, &template, BG_TYPE_STATIC);
|
||||
Bg_ClearTilemap(data->bgConfig, BG_LAYER_MAIN_0);
|
||||
|
||||
template.screenBase = GX_BG_SCRBASE_0x1000;
|
||||
template.charBase = GX_BG_CHARBASE_0x08000;
|
||||
template.bufferSize = 0x1000;
|
||||
template.screenSize = BG_SCREEN_SIZE_256x512;
|
||||
|
||||
Bg_InitFromTemplate(data->bgConfig, BG_LAYER_MAIN_1, &template, BG_TYPE_STATIC);
|
||||
Bg_ClearTilemap(data->bgConfig, BG_LAYER_MAIN_1);
|
||||
|
||||
template.screenBase = GX_BG_SCRBASE_0x2000;
|
||||
template.charBase = GX_BG_CHARBASE_0x04000;
|
||||
template.bufferSize = 0x800;
|
||||
template.screenSize = BG_SCREEN_SIZE_256x256;
|
||||
|
||||
Bg_InitFromTemplate(data->bgConfig, BG_LAYER_MAIN_3, &template, BG_TYPE_STATIC);
|
||||
Bg_ClearTilemap(data->bgConfig, BG_LAYER_MAIN_3);
|
||||
|
||||
template.screenBase = GX_BG_SCRBASE_0x0000;
|
||||
template.charBase = GX_BG_CHARBASE_0x10000;
|
||||
template.bufferSize = 0x1000;
|
||||
template.screenSize = BG_SCREEN_SIZE_256x512;
|
||||
|
||||
Bg_InitFromTemplate(data->bgConfig, BG_LAYER_SUB_0, &template, BG_TYPE_STATIC);
|
||||
Bg_ClearTilemap(data->bgConfig, BG_LAYER_SUB_0);
|
||||
|
||||
template.screenBase = GX_BG_SCRBASE_0x1000;
|
||||
template.charBase = GX_BG_CHARBASE_0x08000;
|
||||
template.bufferSize = 0x1000;
|
||||
template.screenSize = BG_SCREEN_SIZE_256x512;
|
||||
|
||||
Bg_InitFromTemplate(data->bgConfig, BG_LAYER_SUB_1, &template, BG_TYPE_STATIC);
|
||||
Bg_ClearTilemap(data->bgConfig, BG_LAYER_SUB_1);
|
||||
|
||||
template.screenBase = GX_BG_SCRBASE_0x2000;
|
||||
template.charBase = GX_BG_CHARBASE_0x04000;
|
||||
template.bufferSize = 0x800;
|
||||
template.screenSize = BG_SCREEN_SIZE_256x256;
|
||||
|
||||
Bg_InitFromTemplate(data->bgConfig, BG_LAYER_SUB_3, &template, BG_TYPE_STATIC);
|
||||
Bg_ClearTilemap(data->bgConfig, BG_LAYER_SUB_3);
|
||||
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_0, FALSE);
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_1, FALSE);
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_2, FALSE);
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_3, FALSE);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_0, FALSE);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_1, FALSE);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_2, FALSE);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_3, FALSE);
|
||||
}
|
||||
|
||||
static void Diploma_FreeBgs(Diploma *data)
|
||||
{
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_0, FALSE);
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_1, FALSE);
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_2, FALSE);
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_3, FALSE);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_0, FALSE);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_1, FALSE);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_2, FALSE);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_3, FALSE);
|
||||
|
||||
Bg_FreeTilemapBuffer(data->bgConfig, BG_LAYER_MAIN_0);
|
||||
Bg_FreeTilemapBuffer(data->bgConfig, BG_LAYER_MAIN_1);
|
||||
Bg_FreeTilemapBuffer(data->bgConfig, BG_LAYER_MAIN_3);
|
||||
Bg_FreeTilemapBuffer(data->bgConfig, BG_LAYER_SUB_0);
|
||||
Bg_FreeTilemapBuffer(data->bgConfig, BG_LAYER_SUB_1);
|
||||
Bg_FreeTilemapBuffer(data->bgConfig, BG_LAYER_SUB_3);
|
||||
Heap_Free(data->bgConfig);
|
||||
}
|
||||
|
||||
static void Diploma_InitWindows(Diploma *data)
|
||||
{
|
||||
WindowTemplate template = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 0,
|
||||
.tilemapTop = 0,
|
||||
.width = TILES_TO_PIXELS(4),
|
||||
.height = TILES_TO_PIXELS(3),
|
||||
.palette = PLTT_2,
|
||||
.baseTile = 1,
|
||||
};
|
||||
|
||||
Text_ResetAllPrinters();
|
||||
|
||||
data->messageLoader = MessageLoader_Init(MESSAGE_LOADER_NARC_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_DIPLOMA, data->heapID);
|
||||
data->stringTemplate = StringTemplate_Default(data->heapID);
|
||||
|
||||
template.bgLayer = BG_LAYER_MAIN_0;
|
||||
|
||||
Window_AddFromTemplate(data->bgConfig, &data->mainWindow, &template);
|
||||
Window_FillRectWithColor(&data->mainWindow, 0, 0, 0, TILES_TO_PIXELS(32), TILES_TO_PIXELS(24));
|
||||
|
||||
template.bgLayer = BG_LAYER_SUB_0;
|
||||
|
||||
Window_AddFromTemplate(data->bgConfig, &data->subWindow, &template);
|
||||
Window_FillRectWithColor(&data->subWindow, 0, 0, 0, TILES_TO_PIXELS(32), TILES_TO_PIXELS(24));
|
||||
}
|
||||
|
||||
static void Diploma_Free(Diploma *data)
|
||||
{
|
||||
Window_Remove(&data->subWindow);
|
||||
Window_Remove(&data->mainWindow);
|
||||
StringTemplate_Free(data->stringTemplate);
|
||||
MessageLoader_Free(data->messageLoader);
|
||||
}
|
||||
|
||||
static void Diploma_ResetYOffset(Diploma *data)
|
||||
{
|
||||
data->yOffset = 0;
|
||||
Diploma_UpdateYOffset(data);
|
||||
}
|
||||
|
||||
static void Diploma_UpdateYOffset(Diploma *data)
|
||||
{
|
||||
Bg_SetOffset(data->bgConfig, BG_LAYER_MAIN_1, BG_OFFSET_UPDATE_SET_Y, data->yOffset);
|
||||
Bg_SetOffset(data->bgConfig, BG_LAYER_SUB_1, BG_OFFSET_UPDATE_SET_Y, data->yOffset + (8 * 24));
|
||||
Bg_SetOffset(data->bgConfig, BG_LAYER_MAIN_0, BG_OFFSET_UPDATE_SET_Y, data->yOffset);
|
||||
Bg_SetOffset(data->bgConfig, BG_LAYER_SUB_0, BG_OFFSET_UPDATE_SET_Y, data->yOffset + (8 * 24));
|
||||
}
|
||||
|
||||
static void Diploma_LoadGraphics(Diploma *data)
|
||||
{
|
||||
int v0, v1, v2;
|
||||
int v3, v4, v5;
|
||||
|
||||
if (data->isNatDex == FALSE) {
|
||||
v0 = 10;
|
||||
v1 = 2;
|
||||
v2 = 6;
|
||||
|
||||
v3 = 8;
|
||||
v4 = 0;
|
||||
v5 = 4;
|
||||
} else {
|
||||
v0 = 11;
|
||||
v1 = 3;
|
||||
v2 = 7;
|
||||
|
||||
v3 = 9;
|
||||
v4 = 1;
|
||||
v5 = 5;
|
||||
}
|
||||
|
||||
Graphics_LoadTilemapToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v0, data->bgConfig, BG_LAYER_MAIN_3, 0, 0, FALSE, data->heapID);
|
||||
Graphics_LoadTilesToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v1, data->bgConfig, BG_LAYER_MAIN_3, 0, 0, FALSE, data->heapID);
|
||||
Graphics_LoadPalette(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v2, PAL_LOAD_MAIN_BG, PLTT_OFFSET(PLTT_0), PALETTE_SIZE_BYTES, data->heapID);
|
||||
Graphics_LoadTilemapToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v0, data->bgConfig, BG_LAYER_SUB_3, 0, 0, FALSE, data->heapID);
|
||||
Graphics_LoadTilesToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v1, data->bgConfig, BG_LAYER_SUB_3, 0, 0, FALSE, data->heapID);
|
||||
Graphics_LoadPalette(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v2, PAL_LOAD_SUB_BG, PLTT_OFFSET(PLTT_0), PALETTE_SIZE_BYTES, data->heapID);
|
||||
|
||||
Graphics_LoadTilemapToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v3, data->bgConfig, BG_LAYER_MAIN_1, 0, 0, FALSE, data->heapID);
|
||||
Bg_ChangeTilemapRectPalette(data->bgConfig, BG_LAYER_MAIN_1, 0, 0, TILES_TO_PIXELS(4), TILES_TO_PIXELS(3), PLTT_1);
|
||||
Bg_CopyTilemapBufferToVRAM(data->bgConfig, BG_LAYER_MAIN_1);
|
||||
Graphics_LoadTilesToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v4, data->bgConfig, BG_LAYER_MAIN_1, 0, 0, FALSE, data->heapID);
|
||||
Graphics_LoadPalette(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v5, PAL_LOAD_MAIN_BG, PLTT_OFFSET(PLTT_1), PALETTE_SIZE_BYTES, data->heapID);
|
||||
Graphics_LoadTilemapToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v3, data->bgConfig, BG_LAYER_SUB_1, 0, 0, FALSE, data->heapID);
|
||||
Bg_ChangeTilemapRectPalette(data->bgConfig, BG_LAYER_SUB_1, 0, 0, TILES_TO_PIXELS(4), TILES_TO_PIXELS(3), PLTT_1);
|
||||
Bg_CopyTilemapBufferToVRAM(data->bgConfig, BG_LAYER_SUB_1);
|
||||
Graphics_LoadTilesToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v4, data->bgConfig, BG_LAYER_SUB_1, 0, 0, FALSE, data->heapID);
|
||||
Graphics_LoadPalette(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v5, PAL_LOAD_SUB_BG, PLTT_OFFSET(PLTT_1), PALETTE_SIZE_BYTES, data->heapID);
|
||||
|
||||
Bg_ClearTilesRange(BG_LAYER_MAIN_0, 32, 0, data->heapID);
|
||||
Bg_ClearTilesRange(BG_LAYER_SUB_0, 32, 0, data->heapID);
|
||||
Font_LoadTextPalette(PAL_LOAD_MAIN_BG, PLTT_OFFSET(PLTT_2), data->heapID);
|
||||
Font_LoadTextPalette(PAL_LOAD_SUB_BG, PLTT_OFFSET(PLTT_2), data->heapID);
|
||||
}
|
||||
|
||||
static void Diploma_LoadText(Diploma *data)
|
||||
{
|
||||
Strbuf *strbuf = Strbuf_Init(512, data->heapID);
|
||||
Strbuf *formatString = Strbuf_Init(512, data->heapID);
|
||||
|
||||
MessageLoader_GetStrbuf(data->messageLoader, Diploma_Text_Player, formatString);
|
||||
StringTemplate_SetPlayerName(data->stringTemplate, 0, data->trainerInfo);
|
||||
StringTemplate_Format(data->stringTemplate, strbuf, formatString);
|
||||
Text_AddPrinterWithParamsAndColor(&data->mainWindow, FONT_SYSTEM, strbuf, TILES_TO_PIXELS(6), TILES_TO_PIXELS(4), TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
Text_AddPrinterWithParamsAndColor(&data->subWindow, FONT_SYSTEM, strbuf, TILES_TO_PIXELS(6), TILES_TO_PIXELS(4), TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
Strbuf_Free(formatString);
|
||||
|
||||
MessageLoader_GetStrbuf(data->messageLoader, (data->isNatDex == FALSE) ? Diploma_Text_Sinnoh : Diploma_Text_NationalDex, strbuf);
|
||||
Text_AddPrinterWithParamsAndColor(&data->mainWindow, FONT_SYSTEM, strbuf, TILES_TO_PIXELS(8), TILES_TO_PIXELS(8), TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
Text_AddPrinterWithParamsAndColor(&data->subWindow, FONT_SYSTEM, strbuf, TILES_TO_PIXELS(8), TILES_TO_PIXELS(8), TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
|
||||
MessageLoader_GetStrbuf(data->messageLoader, Diploma_Text_GameFreak, strbuf);
|
||||
Text_AddPrinterWithParamsAndColor(&data->mainWindow, FONT_SYSTEM, strbuf, TILES_TO_PIXELS(17.25), TILES_TO_PIXELS(18), TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
Text_AddPrinterWithParamsAndColor(&data->subWindow, FONT_SYSTEM, strbuf, TILES_TO_PIXELS(17.25), TILES_TO_PIXELS(18), TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
|
||||
Strbuf_Free(strbuf);
|
||||
}
|
||||
|
|
@ -922,7 +922,7 @@ pokeplatinum_c = files(
|
|||
'overlay101/ov101_021D59AC.c',
|
||||
'overlay101/ov101_021D7E48.c',
|
||||
'overlay101/ov101_021D94D8.c',
|
||||
'overlay102/ov102_021D0D80.c',
|
||||
'applications/diploma.c',
|
||||
'overlay103/ov103_dummy.c',
|
||||
'overlay104/ov104_0222DCE0.c',
|
||||
'overlay104/ov104_0222E63C.c',
|
||||
|
|
|
|||
|
|
@ -1,427 +0,0 @@
|
|||
#include "overlay102/ov102_021D0D80.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "struct_defs/struct_0203E53C.h"
|
||||
#include "struct_defs/struct_02099F80.h"
|
||||
|
||||
#include "bg_window.h"
|
||||
#include "font.h"
|
||||
#include "graphics.h"
|
||||
#include "gx_layers.h"
|
||||
#include "heap.h"
|
||||
#include "message.h"
|
||||
#include "overlay_manager.h"
|
||||
#include "save_player.h"
|
||||
#include "savedata.h"
|
||||
#include "screen_fade.h"
|
||||
#include "strbuf.h"
|
||||
#include "string_template.h"
|
||||
#include "system.h"
|
||||
#include "text.h"
|
||||
#include "trainer_info.h"
|
||||
|
||||
typedef struct {
|
||||
int heapID;
|
||||
int unk_04;
|
||||
SaveData *saveData;
|
||||
TrainerInfo *unk_0C;
|
||||
BgConfig *unk_10;
|
||||
Window unk_14;
|
||||
Window unk_24;
|
||||
MessageLoader *unk_34;
|
||||
StringTemplate *unk_38;
|
||||
s16 unk_3C;
|
||||
int unk_40;
|
||||
} UnkStruct_ov102_021D0F8C;
|
||||
|
||||
void EnqueueApplication(FSOverlayID param0, const ApplicationManagerTemplate *param1);
|
||||
int ov102_021D0D80(ApplicationManager *appMan, int *param1);
|
||||
int ov102_021D0E2C(ApplicationManager *appMan, int *param1);
|
||||
int ov102_021D0F50(ApplicationManager *appMan, int *param1);
|
||||
static void ov102_021D0F80(void *param0);
|
||||
static void ov102_021D0F8C(UnkStruct_ov102_021D0F8C *param0);
|
||||
static void ov102_021D10F8(UnkStruct_ov102_021D0F8C *param0);
|
||||
static void ov102_021D1174(UnkStruct_ov102_021D0F8C *param0);
|
||||
static void ov102_021D1204(UnkStruct_ov102_021D0F8C *param0);
|
||||
static void ov102_021D1224(UnkStruct_ov102_021D0F8C *param0);
|
||||
static void ov102_021D1230(UnkStruct_ov102_021D0F8C *param0);
|
||||
static void ov102_021D1274(UnkStruct_ov102_021D0F8C *param0);
|
||||
static void ov102_021D1420(UnkStruct_ov102_021D0F8C *param0);
|
||||
|
||||
int ov102_021D0D80(ApplicationManager *appMan, int *param1)
|
||||
{
|
||||
UnkStruct_ov102_021D0F8C *v0;
|
||||
int heapID = HEAP_ID_84;
|
||||
|
||||
Heap_Create(HEAP_ID_APPLICATION, heapID, 0x20000);
|
||||
|
||||
v0 = ApplicationManager_NewData(appMan, sizeof(UnkStruct_ov102_021D0F8C), heapID);
|
||||
memset(v0, 0, sizeof(UnkStruct_ov102_021D0F8C));
|
||||
v0->heapID = heapID;
|
||||
|
||||
{
|
||||
UnkStruct_0203E53C *v2 = (UnkStruct_0203E53C *)ApplicationManager_Args(appMan);
|
||||
|
||||
v0->saveData = v2->saveData;
|
||||
v0->unk_04 = v2->unk_04;
|
||||
v0->unk_0C = SaveData_GetTrainerInfo(v0->saveData);
|
||||
}
|
||||
|
||||
SetScreenColorBrightness(DS_SCREEN_MAIN, COLOR_BLACK);
|
||||
SetScreenColorBrightness(DS_SCREEN_SUB, COLOR_BLACK);
|
||||
SetVBlankCallback(NULL, NULL);
|
||||
SetHBlankCallback(NULL, NULL);
|
||||
GXLayers_DisableEngineALayers();
|
||||
GXLayers_DisableEngineBLayers();
|
||||
|
||||
GX_SetVisiblePlane(0);
|
||||
GXS_SetVisiblePlane(0);
|
||||
|
||||
SetAutorepeat(4, 8);
|
||||
|
||||
ov102_021D0F8C(v0);
|
||||
ov102_021D1174(v0);
|
||||
|
||||
SetVBlankCallback(ov102_021D0F80, (void *)v0);
|
||||
GXLayers_TurnBothDispOn();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ov102_021D0E2C(ApplicationManager *appMan, int *param1)
|
||||
{
|
||||
UnkStruct_ov102_021D0F8C *v0 = ApplicationManager_Data(appMan);
|
||||
int v1 = 0;
|
||||
|
||||
switch (*param1) {
|
||||
case 0:
|
||||
ov102_021D1224(v0);
|
||||
ov102_021D1274(v0);
|
||||
ov102_021D1420(v0);
|
||||
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_0, 1);
|
||||
;
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_1, 1);
|
||||
;
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_3, 1);
|
||||
;
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_0, 1);
|
||||
;
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_1, 1);
|
||||
;
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_3, 1);
|
||||
;
|
||||
StartScreenFade(FADE_BOTH_SCREENS, FADE_TYPE_BRIGHTNESS_IN, FADE_TYPE_BRIGHTNESS_IN, COLOR_BLACK, 6, 1, v0->heapID);
|
||||
*param1 = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (IsScreenFadeDone() == TRUE) {
|
||||
v0->unk_40 = 0;
|
||||
*param1 = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (v0->unk_40 < 60) {
|
||||
v0->unk_40++;
|
||||
} else {
|
||||
*param1 = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (v0->unk_3C > -8 * 24) {
|
||||
v0->unk_3C -= 4;
|
||||
ov102_021D1230(v0);
|
||||
} else {
|
||||
v0->unk_3C = -8 * 24;
|
||||
ov102_021D1230(v0);
|
||||
*param1 = 4;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (((gSystem.pressedKeys & PAD_BUTTON_A) == PAD_BUTTON_A) || ((gSystem.pressedKeys & PAD_BUTTON_B) == PAD_BUTTON_B) || (gSystem.touchPressed)) {
|
||||
StartScreenFade(FADE_BOTH_SCREENS, FADE_TYPE_BRIGHTNESS_OUT, FADE_TYPE_BRIGHTNESS_OUT, COLOR_BLACK, 6, 1, v0->heapID);
|
||||
*param1 = 5;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (IsScreenFadeDone() == TRUE) {
|
||||
v1 = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return v1;
|
||||
}
|
||||
|
||||
int ov102_021D0F50(ApplicationManager *appMan, int *param1)
|
||||
{
|
||||
UnkStruct_ov102_021D0F8C *v0 = ApplicationManager_Data(appMan);
|
||||
int heapID = v0->heapID;
|
||||
|
||||
ov102_021D1204(v0);
|
||||
ov102_021D10F8(v0);
|
||||
|
||||
SetVBlankCallback(NULL, NULL);
|
||||
ApplicationManager_FreeData(appMan);
|
||||
Heap_Destroy(heapID);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void ov102_021D0F80(void *param0)
|
||||
{
|
||||
UnkStruct_ov102_021D0F8C *v0 = param0;
|
||||
|
||||
Bg_RunScheduledUpdates(v0->unk_10);
|
||||
}
|
||||
|
||||
#define BGCONTSET(frame, scr, cgx, scrsiz, bufsiz) \
|
||||
{ \
|
||||
v2.unk_12 = scr; \
|
||||
v2.unk_13 = cgx; \
|
||||
v2.unk_08 = bufsiz; \
|
||||
v2.unk_10 = scrsiz; \
|
||||
Bg_InitFromTemplate(param0->unk_10, frame, &v2, 0); \
|
||||
Bg_ClearTilemap(param0->unk_10, frame); \
|
||||
}
|
||||
|
||||
static void ov102_021D0F8C(UnkStruct_ov102_021D0F8C *param0)
|
||||
{
|
||||
{
|
||||
UnkStruct_02099F80 v0 = {
|
||||
GX_VRAM_BG_128_B, GX_VRAM_BGEXTPLTT_NONE, GX_VRAM_SUB_BG_128_C, GX_VRAM_SUB_BGEXTPLTT_NONE, GX_VRAM_OBJ_NONE, GX_VRAM_OBJEXTPLTT_NONE, GX_VRAM_SUB_OBJ_NONE, GX_VRAM_SUB_OBJEXTPLTT_NONE, GX_VRAM_TEX_NONE, GX_VRAM_TEXPLTT_NONE
|
||||
};
|
||||
|
||||
GXLayers_SetBanks(&v0);
|
||||
}
|
||||
|
||||
{
|
||||
param0->unk_10 = BgConfig_New(param0->heapID);
|
||||
}
|
||||
|
||||
{
|
||||
GraphicsModes v1 = {
|
||||
GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BGMODE_0, GX_BG0_AS_2D
|
||||
};
|
||||
|
||||
SetAllGraphicsModes(&v1);
|
||||
}
|
||||
{
|
||||
BgTemplate v2 = {
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
.bufferSize = 0,
|
||||
.baseTile = 0,
|
||||
.screenSize = BG_SCREEN_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = 0,
|
||||
.charBase = 0,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 0,
|
||||
.areaOver = 0,
|
||||
.mosaic = FALSE,
|
||||
};
|
||||
|
||||
v2.screenBase = GX_BG_SCRBASE_0x0000;
|
||||
v2.charBase = GX_BG_CHARBASE_0x10000;
|
||||
v2.bufferSize = 0x1000;
|
||||
v2.screenSize = 2;
|
||||
|
||||
Bg_InitFromTemplate(param0->unk_10, BG_LAYER_MAIN_0, &v2, 0);
|
||||
Bg_ClearTilemap(param0->unk_10, BG_LAYER_MAIN_0);
|
||||
|
||||
v2.screenBase = GX_BG_SCRBASE_0x1000;
|
||||
v2.charBase = GX_BG_CHARBASE_0x08000;
|
||||
v2.bufferSize = 0x1000;
|
||||
v2.screenSize = 2;
|
||||
|
||||
Bg_InitFromTemplate(param0->unk_10, BG_LAYER_MAIN_1, &v2, 0);
|
||||
Bg_ClearTilemap(param0->unk_10, BG_LAYER_MAIN_1);
|
||||
|
||||
v2.screenBase = GX_BG_SCRBASE_0x2000;
|
||||
v2.charBase = GX_BG_CHARBASE_0x04000;
|
||||
v2.bufferSize = 0x800;
|
||||
v2.screenSize = 1;
|
||||
|
||||
Bg_InitFromTemplate(param0->unk_10, BG_LAYER_MAIN_3, &v2, 0);
|
||||
Bg_ClearTilemap(param0->unk_10, BG_LAYER_MAIN_3);
|
||||
|
||||
v2.screenBase = GX_BG_SCRBASE_0x0000;
|
||||
v2.charBase = GX_BG_CHARBASE_0x10000;
|
||||
v2.bufferSize = 0x1000;
|
||||
v2.screenSize = 2;
|
||||
|
||||
Bg_InitFromTemplate(param0->unk_10, BG_LAYER_SUB_0, &v2, 0);
|
||||
Bg_ClearTilemap(param0->unk_10, BG_LAYER_SUB_0);
|
||||
|
||||
v2.screenBase = GX_BG_SCRBASE_0x1000;
|
||||
v2.charBase = GX_BG_CHARBASE_0x08000;
|
||||
v2.bufferSize = 0x1000;
|
||||
v2.screenSize = 2;
|
||||
|
||||
Bg_InitFromTemplate(param0->unk_10, BG_LAYER_SUB_1, &v2, 0);
|
||||
Bg_ClearTilemap(param0->unk_10, BG_LAYER_SUB_1);
|
||||
|
||||
v2.screenBase = GX_BG_SCRBASE_0x2000;
|
||||
v2.charBase = GX_BG_CHARBASE_0x04000;
|
||||
v2.bufferSize = 0x800;
|
||||
v2.screenSize = 1;
|
||||
|
||||
Bg_InitFromTemplate(param0->unk_10, BG_LAYER_SUB_3, &v2, 0);
|
||||
Bg_ClearTilemap(param0->unk_10, BG_LAYER_SUB_3);
|
||||
}
|
||||
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_0, 0);
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_1, 0);
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_2, 0);
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_3, 0);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_0, 0);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_1, 0);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_2, 0);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_3, 0);
|
||||
}
|
||||
|
||||
static void ov102_021D10F8(UnkStruct_ov102_021D0F8C *param0)
|
||||
{
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_0, 0);
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_1, 0);
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_2, 0);
|
||||
Bg_ToggleLayer(BG_LAYER_MAIN_3, 0);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_0, 0);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_1, 0);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_2, 0);
|
||||
Bg_ToggleLayer(BG_LAYER_SUB_3, 0);
|
||||
|
||||
Bg_FreeTilemapBuffer(param0->unk_10, BG_LAYER_MAIN_0);
|
||||
Bg_FreeTilemapBuffer(param0->unk_10, BG_LAYER_MAIN_1);
|
||||
Bg_FreeTilemapBuffer(param0->unk_10, BG_LAYER_MAIN_3);
|
||||
Bg_FreeTilemapBuffer(param0->unk_10, BG_LAYER_SUB_0);
|
||||
Bg_FreeTilemapBuffer(param0->unk_10, BG_LAYER_SUB_1);
|
||||
Bg_FreeTilemapBuffer(param0->unk_10, BG_LAYER_SUB_3);
|
||||
Heap_Free(param0->unk_10);
|
||||
}
|
||||
|
||||
static void ov102_021D1174(UnkStruct_ov102_021D0F8C *param0)
|
||||
{
|
||||
WindowTemplate v0 = { 0, 0, 0, 32, 24, 2, 1 };
|
||||
|
||||
Text_ResetAllPrinters();
|
||||
|
||||
param0->unk_34 = MessageLoader_Init(MESSAGE_LOADER_NARC_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNK_0001, param0->heapID);
|
||||
param0->unk_38 = StringTemplate_Default(param0->heapID);
|
||||
|
||||
v0.bgLayer = 0;
|
||||
|
||||
Window_AddFromTemplate(param0->unk_10, ¶m0->unk_14, &v0);
|
||||
Window_FillRectWithColor(¶m0->unk_14, 0, 0, 0, 32 * 8, 24 * 8);
|
||||
|
||||
v0.bgLayer = 4;
|
||||
|
||||
Window_AddFromTemplate(param0->unk_10, ¶m0->unk_24, &v0);
|
||||
Window_FillRectWithColor(¶m0->unk_24, 0, 0, 0, 32 * 8, 24 * 8);
|
||||
}
|
||||
|
||||
static void ov102_021D1204(UnkStruct_ov102_021D0F8C *param0)
|
||||
{
|
||||
Window_Remove(¶m0->unk_24);
|
||||
Window_Remove(¶m0->unk_14);
|
||||
StringTemplate_Free(param0->unk_38);
|
||||
MessageLoader_Free(param0->unk_34);
|
||||
}
|
||||
|
||||
static void ov102_021D1224(UnkStruct_ov102_021D0F8C *param0)
|
||||
{
|
||||
param0->unk_3C = 0;
|
||||
ov102_021D1230(param0);
|
||||
}
|
||||
|
||||
static void ov102_021D1230(UnkStruct_ov102_021D0F8C *param0)
|
||||
{
|
||||
Bg_SetOffset(param0->unk_10, BG_LAYER_MAIN_1, 3, param0->unk_3C);
|
||||
Bg_SetOffset(param0->unk_10, BG_LAYER_SUB_1, 3, param0->unk_3C + (8 * 24));
|
||||
Bg_SetOffset(param0->unk_10, BG_LAYER_MAIN_0, 3, param0->unk_3C);
|
||||
Bg_SetOffset(param0->unk_10, BG_LAYER_SUB_0, 3, param0->unk_3C + (8 * 24));
|
||||
}
|
||||
|
||||
static void ov102_021D1274(UnkStruct_ov102_021D0F8C *param0)
|
||||
{
|
||||
int v0, v1, v2;
|
||||
int v3, v4, v5;
|
||||
|
||||
if (param0->unk_04 == 0) {
|
||||
v0 = 10;
|
||||
v1 = 2;
|
||||
v2 = 6;
|
||||
v3 = 8;
|
||||
v4 = 0;
|
||||
v5 = 4;
|
||||
} else {
|
||||
v0 = 11;
|
||||
v1 = 3;
|
||||
v2 = 7;
|
||||
v3 = 9;
|
||||
v4 = 1;
|
||||
v5 = 5;
|
||||
}
|
||||
|
||||
Graphics_LoadTilemapToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v0, param0->unk_10, 3, 0, 0, 0, param0->heapID);
|
||||
Graphics_LoadTilesToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v1, param0->unk_10, 3, 0, 0, 0, param0->heapID);
|
||||
Graphics_LoadPalette(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v2, 0, 0 * (2 * 16), 2 * 16, param0->heapID);
|
||||
Graphics_LoadTilemapToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v0, param0->unk_10, 7, 0, 0, 0, param0->heapID);
|
||||
Graphics_LoadTilesToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v1, param0->unk_10, 7, 0, 0, 0, param0->heapID);
|
||||
Graphics_LoadPalette(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v2, 4, 0 * (2 * 16), 2 * 16, param0->heapID);
|
||||
|
||||
Graphics_LoadTilemapToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v3, param0->unk_10, 1, 0, 0, 0, param0->heapID);
|
||||
Bg_ChangeTilemapRectPalette(param0->unk_10, 1, 0, 0, 32, 24, 1);
|
||||
Bg_CopyTilemapBufferToVRAM(param0->unk_10, 1);
|
||||
Graphics_LoadTilesToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v4, param0->unk_10, 1, 0, 0, 0, param0->heapID);
|
||||
Graphics_LoadPalette(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v5, 0, 1 * (2 * 16), 2 * 16, param0->heapID);
|
||||
Graphics_LoadTilemapToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v3, param0->unk_10, 5, 0, 0, 0, param0->heapID);
|
||||
Bg_ChangeTilemapRectPalette(param0->unk_10, 5, 0, 0, 32, 24, 1);
|
||||
Bg_CopyTilemapBufferToVRAM(param0->unk_10, 5);
|
||||
Graphics_LoadTilesToBgLayer(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v4, param0->unk_10, 5, 0, 0, 0, param0->heapID);
|
||||
Graphics_LoadPalette(NARC_INDEX_DEMO__SYOUJYOU__SYOUJYOU, v5, 4, 1 * (2 * 16), 2 * 16, param0->heapID);
|
||||
|
||||
Bg_ClearTilesRange(BG_LAYER_MAIN_0, 32, 0, param0->heapID);
|
||||
Bg_ClearTilesRange(4, 32, 0, param0->heapID);
|
||||
Font_LoadTextPalette(0, 2 * (2 * 16), param0->heapID);
|
||||
Font_LoadTextPalette(4, 2 * (2 * 16), param0->heapID);
|
||||
}
|
||||
|
||||
static void ov102_021D1420(UnkStruct_ov102_021D0F8C *param0)
|
||||
{
|
||||
Strbuf *v0 = Strbuf_Init(0x200, param0->heapID);
|
||||
|
||||
{
|
||||
Strbuf *v1 = Strbuf_Init(0x200, param0->heapID);
|
||||
|
||||
MessageLoader_GetStrbuf(param0->unk_34, 0, v1);
|
||||
StringTemplate_SetPlayerName(param0->unk_38, 0, param0->unk_0C);
|
||||
StringTemplate_Format(param0->unk_38, v0, v1);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0->unk_14, FONT_SYSTEM, v0, 48, 32, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0->unk_24, FONT_SYSTEM, v0, 48, 32, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
Strbuf_Free(v1);
|
||||
}
|
||||
{
|
||||
int v2;
|
||||
|
||||
if (param0->unk_04 == 0) {
|
||||
v2 = 1;
|
||||
} else {
|
||||
v2 = 2;
|
||||
}
|
||||
|
||||
MessageLoader_GetStrbuf(param0->unk_34, v2, v0);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0->unk_14, FONT_SYSTEM, v0, 64, 64, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0->unk_24, FONT_SYSTEM, v0, 64, 64, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
{
|
||||
MessageLoader_GetStrbuf(param0->unk_34, 3, v0);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0->unk_14, FONT_SYSTEM, v0, 138, 144, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
Text_AddPrinterWithParamsAndColor(¶m0->unk_24, FONT_SYSTEM, v0, 138, 144, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL);
|
||||
}
|
||||
|
||||
Strbuf_Free(v0);
|
||||
}
|
||||
20
src/scrcmd.c
20
src/scrcmd.c
|
|
@ -576,8 +576,8 @@ static BOOL ScrCmd_OpenPartyMenuForContest(ScriptContext *ctx);
|
|||
static BOOL ScrCmd_195(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_CheckLocalDexCompleted(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_CheckNationalDexCompleted(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_1EA(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_1EB(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_ShowDiplomaSinnoh(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_ShowDiplomaNationalDex(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_AddTrophyGardenMon(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_GetTrophyGardenSlot1Species(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_Unused_1EF(ScriptContext *ctx);
|
||||
|
|
@ -1260,8 +1260,8 @@ const ScrCmdFunc Unk_020EAC58[] = {
|
|||
ScrCmd_Unused_1E7,
|
||||
ScrCmd_CheckLocalDexCompleted,
|
||||
ScrCmd_CheckNationalDexCompleted,
|
||||
ScrCmd_1EA,
|
||||
ScrCmd_1EB,
|
||||
ScrCmd_ShowDiplomaSinnoh,
|
||||
ScrCmd_ShowDiplomaNationalDex,
|
||||
ScrCmd_AddTrophyGardenMon,
|
||||
ScrCmd_GetTrophyGardenSlot1Species,
|
||||
ScrCmd_GetPartyMonHeldItem_Unused,
|
||||
|
|
@ -6019,21 +6019,21 @@ static BOOL ScrCmd_CheckNationalDexCompleted(ScriptContext *ctx)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL ScrCmd_1EA(ScriptContext *ctx)
|
||||
static BOOL ScrCmd_ShowDiplomaSinnoh(ScriptContext *ctx)
|
||||
{
|
||||
void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA);
|
||||
void **data = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA);
|
||||
|
||||
*v0 = sub_0203E53C(ctx->fieldSystem, HEAP_ID_FIELD3, 0);
|
||||
*data = FieldSystem_ShowDiploma(ctx->fieldSystem, HEAP_ID_FIELD3, FALSE);
|
||||
ScriptContext_Pause(ctx, sub_02041CC8);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL ScrCmd_1EB(ScriptContext *ctx)
|
||||
static BOOL ScrCmd_ShowDiplomaNationalDex(ScriptContext *ctx)
|
||||
{
|
||||
void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA);
|
||||
void **data = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA);
|
||||
|
||||
*v0 = sub_0203E53C(ctx->fieldSystem, HEAP_ID_FIELD3, 1);
|
||||
*data = FieldSystem_ShowDiploma(ctx->fieldSystem, HEAP_ID_FIELD3, TRUE);
|
||||
ScriptContext_Pause(ctx, sub_02041CC8);
|
||||
|
||||
return TRUE;
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@
|
|||
#include "struct_defs/struct_0203E274.h"
|
||||
#include "struct_defs/struct_0203E2FC.h"
|
||||
#include "struct_defs/struct_0203E348.h"
|
||||
#include "struct_defs/struct_0203E53C.h"
|
||||
#include "struct_defs/struct_0203E564.h"
|
||||
#include "struct_defs/struct_0203E608.h"
|
||||
#include "struct_defs/struct_0203E6C0.h"
|
||||
|
|
@ -31,6 +30,7 @@
|
|||
#include "struct_defs/struct_02097728.h"
|
||||
#include "struct_defs/struct_020997B8.h"
|
||||
|
||||
#include "applications/diploma.h"
|
||||
#include "applications/journal_display/journal_controller.h"
|
||||
#include "applications/naming_screen.h"
|
||||
#include "applications/options_menu.h"
|
||||
|
|
@ -73,7 +73,6 @@
|
|||
#include "overlay096/ov96_0223B6A0.h"
|
||||
#include "overlay099/ov99_021D0D80.h"
|
||||
#include "overlay101/ov101_021D0D80.h"
|
||||
#include "overlay102/ov102_021D0D80.h"
|
||||
#include "overlay110/ov110_021D0D80.h"
|
||||
#include "overlay111/ov111_021D0D80.h"
|
||||
#include "savedata/save_table.h"
|
||||
|
|
@ -171,7 +170,6 @@ FS_EXTERN_OVERLAY(overlay95);
|
|||
FS_EXTERN_OVERLAY(overlay96);
|
||||
FS_EXTERN_OVERLAY(overlay99);
|
||||
FS_EXTERN_OVERLAY(overlay101);
|
||||
FS_EXTERN_OVERLAY(overlay102);
|
||||
FS_EXTERN_OVERLAY(overlay110);
|
||||
FS_EXTERN_OVERLAY(overlay111);
|
||||
FS_EXTERN_OVERLAY(dw_warp);
|
||||
|
|
@ -1657,26 +1655,24 @@ void AccessoryShop_Init(FieldTask *task)
|
|||
FieldTask_InitCall(task, FieldTask_AccessoryShop, shop);
|
||||
}
|
||||
|
||||
void *sub_0203E53C(FieldSystem *fieldSystem, int heapID, int param2)
|
||||
void *FieldSystem_ShowDiploma(FieldSystem *fieldSystem, int heapID, BOOL isNatDex)
|
||||
{
|
||||
FS_EXTERN_OVERLAY(overlay102);
|
||||
FS_EXTERN_OVERLAY(diploma);
|
||||
|
||||
static const ApplicationManagerTemplate v0 = {
|
||||
ov102_021D0D80,
|
||||
ov102_021D0E2C,
|
||||
ov102_021D0F50,
|
||||
FS_OVERLAY_ID(overlay102),
|
||||
static const ApplicationManagerTemplate template = {
|
||||
Diploma_Init,
|
||||
Diploma_Main,
|
||||
Diploma_Exit,
|
||||
FS_OVERLAY_ID(diploma),
|
||||
};
|
||||
UnkStruct_0203E53C *v1 = Heap_Alloc(heapID, sizeof(UnkStruct_0203E53C));
|
||||
DiplomaData *diplomaData = Heap_Alloc(heapID, sizeof(DiplomaData));
|
||||
|
||||
{
|
||||
v1->unk_04 = param2;
|
||||
v1->saveData = fieldSystem->saveData;
|
||||
}
|
||||
diplomaData->isNatDex = isNatDex;
|
||||
diplomaData->saveData = fieldSystem->saveData;
|
||||
|
||||
FieldSystem_StartChildProcess(fieldSystem, &v0, v1);
|
||||
FieldSystem_StartChildProcess(fieldSystem, &template, diplomaData);
|
||||
|
||||
return v1;
|
||||
return diplomaData;
|
||||
}
|
||||
|
||||
void *sub_0203E564(FieldSystem *fieldSystem, u8 param1, u8 param2, u16 param3, int heapID)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user