Skip to content

Commit

Permalink
Document system.c
Browse files Browse the repository at this point in the history
  • Loading branch information
lhearachel committed Feb 8, 2025
1 parent d5476df commit c1d0ee5
Show file tree
Hide file tree
Showing 114 changed files with 757 additions and 758 deletions.
7 changes: 7 additions & 0 deletions include/constants/heap.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,16 @@ enum HeapId {
HEAP_ID_GAME_START = 77,

HEAP_ID_LIBRARY_TV = 120,

HEAP_ID_MAX = 123,
};

enum HeapSize {
HEAP_SIZE_SYSTEM = 0xD200,
HEAP_SIZE_SAVE = 0x20E00,
HEAP_SIZE_DEBUG = 0x10,
HEAP_SIZE_APPLICATION = 0x10D800,

HEAP_SIZE_POKETCH_MAIN = 0xC000,
HEAP_SIZE_POKETCH_APP = 0xC000,

Expand Down
36 changes: 21 additions & 15 deletions include/system.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#ifndef POKEPLATINUM_SYSTEM_H
#define POKEPLATINUM_SYSTEM_H

#include "constants/heap.h"

#include "sys_task_manager.h"

typedef void (*Callback)(void *);
Expand All @@ -13,14 +15,18 @@ enum ButtonMode {
BUTTON_MODE_L_IS_A = 3,
};

enum SleepType {
SLEEP_TYPE_SAVE_DATA = 1,
};

#define PAD_KEY (PAD_KEY_UP | PAD_KEY_DOWN | PAD_KEY_LEFT | PAD_KEY_RIGHT)
#define JOY_NEW(buttons) (gSystem.pressedKeys & (buttons))
#define JOY_HELD(buttons) (gSystem.heldKeys & (buttons))
#define JOY_REPEAT(buttons) (gSystem.pressedKeysRepeatable & (buttons))

typedef struct System {
Callback mainCallback;
void *mainCallbackData;
Callback vblankCallback;
void *vblankCallbackData;
Callback hblankCallback;
void *hblankCallbackData;
UnkCallback dummyCallback_10;
Expand All @@ -29,7 +35,7 @@ typedef struct System {
SysTaskManager *vBlankTaskMgr;
SysTaskManager *postVBlankTaskMgr;
SysTaskManager *printTaskMgr;
u32 *unk_28;
u32 *unused_28;
u32 vblankCounter;
u32 frameCounter;
enum ButtonMode buttonMode;
Expand All @@ -46,8 +52,8 @@ typedef struct System {
u16 touchY;
u16 touchPressed;
u16 touchHeld;
u8 unk_64;
u8 unk_65;
u8 touchAutoSampling;
u8 whichScreenIs3D;
u8 gbaCartridgeVersion;
u8 inhibitSleep;
u8 inhibitReset;
Expand All @@ -58,24 +64,24 @@ typedef struct System {

extern System gSystem;

void sub_02017728(void);
void SetMainCallback(Callback cb, void *data);
void SetDummyVBlankIntr(void);
void SetVBlankCallback(Callback cb, void *data);
void DisableHBlank(void);
BOOL SetHBlankCallback(Callback cb, void *data);
void sub_0201789C(void);
void InitGraphics(void);
void InitSystem(void);
void InitVRAM(void);
void *ReadFileToHeap(int heapID, const char *filename);
void ReadFileToBuffer(const char *filename, void **buf);
void sub_02017ACC(void);
void ClearUnusedSystemCache(void);
void InitKeypadAndTouchpad(void);
void SetGBACartridgeVersion(int version);
void SleepLock(u8 param0);
void SleepUnlock(u8 param0);
void SleepLock(u8 mask);
void SleepUnlock(u8 mask);
void ReadKeypadAndTouchpad(void);
void SetAutorepeat(int rate, int delay);
void ResetLock(u8 param0);
void ResetUnlock(u8 param0);
void InitHeapCanary(int param0);
void ResetLock(u8 mask);
void ResetUnlock(u8 mask);
void InitHeapCanary(enum HeapId param0);
void FreeHeapCanary(void);
BOOL HeapCanaryOK(void);

Expand Down
6 changes: 3 additions & 3 deletions src/applications/journal_display/journal_controller.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ int JournalController_Init(OverlayManager *ovyManager, int *state)
JournalManager *journalManager;
SaveData *saveData;

SetMainCallback(NULL, NULL);
SetVBlankCallback(NULL, NULL);
DisableHBlank();
GXLayers_DisableEngineALayers();
GXLayers_DisableEngineBLayers();
Expand Down Expand Up @@ -102,7 +102,7 @@ int JournalController_Init(OverlayManager *ovyManager, int *state)
JournalPrinter_PrintEntry(journalManager, 0);
ov81_021D1434(journalManager);

SetMainCallback(JournalController_MainCallback, journalManager);
SetVBlankCallback(JournalController_MainCallback, journalManager);
GXLayers_TurnBothDispOn();
sub_02039734();
GXLayers_EngineAToggleLayers(GX_PLANEMASK_OBJ, 1);
Expand Down Expand Up @@ -141,7 +141,7 @@ int JournalController_Exit(OverlayManager *ovyManager, int *state)
{
JournalManager *journalManager = OverlayManager_Data(ovyManager);

SetMainCallback(NULL, NULL);
SetVBlankCallback(NULL, NULL);

JournalPrinter_RemoveWindows(journalManager);
JournalController_TeardownBgs(journalManager->bgConfig);
Expand Down
6 changes: 3 additions & 3 deletions src/applications/options_menu.c
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@ static int SetupMenuVisuals(OptionsMenuData *menuData)
{
switch (menuData->subState) {
case 0:
SetMainCallback(NULL, NULL);
SetVBlankCallback(NULL, NULL);
DisableHBlank();
GXLayers_DisableEngineALayers();
GXLayers_DisableEngineBLayers();
Expand Down Expand Up @@ -380,7 +380,7 @@ static int SetupMenuVisuals(OptionsMenuData *menuData)
VramTransfer_New(32, menuData->heapID);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_OBJ, TRUE);
DrawWifiConnectionIcon();
SetMainCallback(OptionsMenuVBlank, menuData);
SetVBlankCallback(OptionsMenuVBlank, menuData);
menuData->subState = 0;
return TRUE;
}
Expand Down Expand Up @@ -410,7 +410,7 @@ static int TeardownMenuData(OptionsMenuData *menuData)
break;

case 1:
SetMainCallback(NULL, NULL);
SetVBlankCallback(NULL, NULL);
DisableHBlank();
GXLayers_DisableEngineALayers();
GXLayers_DisableEngineBLayers();
Expand Down
6 changes: 3 additions & 3 deletions src/applications/pokemon_summary_screen/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ BOOL PokemonSummaryScreen_ShowContestData(SaveData *saveData)

static int PokemonSummaryScreen_Init(OverlayManager *ovyManager, int *state)
{
SetMainCallback(NULL, NULL);
SetVBlankCallback(NULL, NULL);
DisableHBlank();
GXLayers_DisableEngineALayers();
GXLayers_DisableEngineBLayers();
Expand Down Expand Up @@ -246,7 +246,7 @@ static int PokemonSummaryScreen_Init(OverlayManager *ovyManager, int *state)
SetupInitialPageGfx(summaryScreen);
PokemonSummaryScreen_SetSubscreenType(summaryScreen);
PokemonSummaryScreen_SetupCamera(summaryScreen);
SetMainCallback(PokemonSummaryScreenVBlank, summaryScreen);
SetVBlankCallback(PokemonSummaryScreenVBlank, summaryScreen);
GXLayers_TurnBothDispOn();
sub_02004550(61, 0, 0);
DrawWifiConnectionIcon();
Expand Down Expand Up @@ -338,7 +338,7 @@ static int PokemonSummaryScreen_Exit(OverlayManager *ovyManager, int *state)
{
PokemonSummaryScreen *summaryScreen = OverlayManager_Data(ovyManager);

SetMainCallback(NULL, NULL);
SetVBlankCallback(NULL, NULL);
PokemonSummaryScreen_FreeCameraAndMonSprite(summaryScreen);
PokemonSummaryScreen_FreeSpriteResources(summaryScreen);
PokemonSummaryScreen_RemoveWindows(summaryScreen);
Expand Down
10 changes: 5 additions & 5 deletions src/battle/ov16_0223B140.c
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ void ov16_0223B384(BattleSystem *param0)

void ov16_0223B3E4(BattleSystem *param0)
{
SetMainCallback(NULL, NULL);
SetVBlankCallback(NULL, NULL);
ov16_02268A14(param0->unk_198);
Window_Remove(&param0->windows[0]);

Expand Down Expand Up @@ -466,7 +466,7 @@ void ov16_0223B578(BattleSystem *param0)

GXLayers_EngineAToggleLayers(GX_PLANEMASK_OBJ, 1);
GXLayers_EngineBToggleLayers(GX_PLANEMASK_OBJ, 1);
SetMainCallback(ov16_0223CE68, param0);
SetVBlankCallback(ov16_0223CE68, param0);

param0->unk_23FB_1 = 1;

Expand Down Expand Up @@ -949,7 +949,7 @@ static void ov16_0223C004(BattleSystem *param0, BgConfig *param1)
GXLayers_TurnBothDispOn();
GXLayers_EngineAToggleLayers(GX_PLANEMASK_OBJ, 1);
GXLayers_EngineBToggleLayers(GX_PLANEMASK_OBJ, 1);
SetMainCallback(ov16_0223CE68, param0);
SetVBlankCallback(ov16_0223CE68, param0);
}

static void ov16_0223C210(BattleSystem *param0)
Expand Down Expand Up @@ -1749,7 +1749,7 @@ static void ov16_0223D10C(OverlayManager *param0, FieldBattleDTO *param1)
MessageLoader_Free(v5);
}

SetMainCallback(ov16_0223CF1C, v0);
SetVBlankCallback(ov16_0223CF1C, v0);
PaletteData_StartFade(v0->unk_0C, (0x1 | 0x4), 0xffff, 0, 16, 0, 0x0);

v0->unk_1024 = Window_AddWaitDial(v0->unk_08, 1);
Expand Down Expand Up @@ -1988,7 +1988,7 @@ static void ov16_0223D7B4(OverlayManager *param0)
{
UnkStruct_0207A778 *v0 = OverlayManager_Data(param0);

SetMainCallback(NULL, NULL);
SetVBlankCallback(NULL, NULL);
sub_0200F344(0, 0x0);
PaletteData_FreeBuffer(v0->unk_0C, 0);
PaletteData_Free(v0->unk_0C);
Expand Down
4 changes: 2 additions & 2 deletions src/choose_starter/choose_starter_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ BOOL ChooseStarter_Init(OverlayManager *param0, int *param1)
app->unk_704 = Options_TextFrameDelay(data->options);

VramTransfer_New(8, HEAP_ID_CHOOSE_STARTER_APP);
SetMainCallback(ChooseStarterAppMainCallback, app);
SetVBlankCallback(ChooseStarterAppMainCallback, app);
DisableHBlank();

sub_0201E3D8();
Expand Down Expand Up @@ -439,7 +439,7 @@ BOOL ChooseStarter_Exit(OverlayManager *param0, int *param1)
ChooseStarterData *v1 = OverlayManager_Args(param0);
BOOL v2;

SetMainCallback(NULL, NULL);
SetVBlankCallback(NULL, NULL);

v1->species = GetSelectedSpecies(v0->cursorPosition);

Expand Down
9 changes: 5 additions & 4 deletions src/dw_warp/dw_warp.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include <nitro.h>
#include <string.h>

#include "constants/screen.h"
#include "generated/sdat.h"

#include "struct_defs/struct_0207C690.h"
Expand Down Expand Up @@ -62,7 +63,7 @@ static void DWWarp_CameraMove(DistortionWorldWarp *warp);

BOOL DWWarp_Init(OverlayManager *ovy, int *state)
{
SetMainCallback(NULL, NULL);
SetVBlankCallback(NULL, NULL);
DisableHBlank();
GXLayers_DisableEngineALayers();
GXLayers_DisableEngineBLayers();
Expand All @@ -89,7 +90,7 @@ BOOL DWWarp_Init(OverlayManager *ovy, int *state)
DWWarp_InitCamera(dww);
StartScreenTransition(0, 1, 1, 0x0, 16, 1, HEAP_ID_DISTORTION_WORLD_WARP);

gSystem.unk_65 = 0;
gSystem.whichScreenIs3D = DS_SCREEN_MAIN;

GXLayers_SwapDisplay();
GXLayers_TurnBothDispOn();
Expand All @@ -98,7 +99,7 @@ BOOL DWWarp_Init(OverlayManager *ovy, int *state)
RenderControlFlags_SetSpeedUpOnTouch(0);

dww->task = SysTask_Start(DWWarp_Update, dww, 60000);
SetMainCallback(DWWarp_VBlankIntr, dww);
SetVBlankCallback(DWWarp_VBlankIntr, dww);

return TRUE;
}
Expand Down Expand Up @@ -158,7 +159,7 @@ BOOL DWWarp_Exit(OverlayManager *ovy, int *state)
DWWarp_DeleteCamera(warp);
DWWarp_Exit3D(warp->p3DCallback);

SetMainCallback(NULL, NULL);
SetVBlankCallback(NULL, NULL);
DisableHBlank();
sub_0201E530();
RenderControlFlags_SetCanABSpeedUpPrint(0);
Expand Down
6 changes: 4 additions & 2 deletions src/error_message_reset.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
#include <nitro.h>
#include <string.h>

#include "constants/screen.h"

#include "struct_defs/struct_02099F80.h"

#include "bg_window.h"
Expand Down Expand Up @@ -106,7 +108,7 @@ void ErrorMessageReset_PrintErrorAndReset(void)
OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr);
OS_EnableIrqMask(OS_IE_V_BLANK);

SetMainCallback(NULL, NULL);
SetVBlankCallback(NULL, NULL);
SetHBlankCallback(NULL, NULL);

GXLayers_DisableEngineALayers();
Expand All @@ -116,7 +118,7 @@ void ErrorMessageReset_PrintErrorAndReset(void)
GXS_SetVisiblePlane(0);

SetAutorepeat(4, 8);
gSystem.unk_65 = 0;
gSystem.whichScreenIs3D = DS_SCREEN_MAIN;
GXLayers_SwapDisplay();

G2_BlendNone();
Expand Down
2 changes: 1 addition & 1 deletion src/field_map_change.c
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ static void FieldMapChange_SetNewLocation(FieldSystem *fieldSystem, const Locati
void FieldMapChange_Set3DDisplay(FieldSystem *fieldSystem)
{
GF_ASSERT(fieldSystem->mapLoadType < MAP_LOAD_TYPE_MAX);
gSystem.unk_65 = fieldSystem->mapLoadMode->unk_00_12;
gSystem.whichScreenIs3D = fieldSystem->mapLoadMode->unk_00_12;
}

void FieldMapChange_UpdateGameData(FieldSystem *fieldSystem, BOOL noWarp)
Expand Down
2 changes: 1 addition & 1 deletion src/gx_layers.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ void GXLayers_TurnBothDispOn(void)

void GXLayers_SwapDisplay(void)
{
if (gSystem.unk_65 == 0) {
if (gSystem.whichScreenIs3D == 0) {
GX_SetDispSelect(GX_DISP_SELECT_MAIN_SUB);
} else {
GX_SetDispSelect(GX_DISP_SELECT_SUB_MAIN);
Expand Down
6 changes: 3 additions & 3 deletions src/library_tv/library_tv.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ BOOL LibraryTV_Main(OverlayManager *ovy, int *state)
sub_0200F344(0, 0x0);
sub_0200F344(1, 0x0);

SetMainCallback(NULL, NULL);
SetVBlankCallback(NULL, NULL);
SetHBlankCallback(NULL, NULL);

GXLayers_DisableEngineALayers();
Expand All @@ -86,7 +86,7 @@ BOOL LibraryTV_Main(OverlayManager *ovy, int *state)
LibraryTV_SetVramBank(ltv);
LibraryTV_SetMsgLdr(ltv);

SetMainCallback(LibraryTV_VBlank, (void *)ltv);
SetVBlankCallback(LibraryTV_VBlank, (void *)ltv);
GXLayers_TurnBothDispOn();

ltv->waitTiming = 0;
Expand Down Expand Up @@ -136,7 +136,7 @@ BOOL LibraryTV_Main(OverlayManager *ovy, int *state)
if (IsScreenTransitionDone() == 1) {
LibraryTV_ReleaseMsgLdr(ltv);
LibraryTV_ReleaseVramBank(ltv);
SetMainCallback(NULL, NULL);
SetVBlankCallback(NULL, NULL);
result = TRUE;
}
break;
Expand Down
12 changes: 6 additions & 6 deletions src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ extern const OverlayManagerTemplate gOpeningCutsceneOverlayTemplate;

void NitroMain(void)
{
sub_0201789C();
InitGraphics();
InitSystem();
InitVRAM();
InitKeypadAndTouchpad();

SetGBACartridgeVersion(NULL);
Expand Down Expand Up @@ -156,8 +156,8 @@ void NitroMain(void)
sub_0200ABF0();
sub_0200F27C();

if (gSystem.mainCallback != NULL) {
gSystem.mainCallback(gSystem.mainCallbackData);
if (gSystem.vblankCallback != NULL) {
gSystem.vblankCallback(gSystem.vblankCallbackData);
}

UpdateSound();
Expand Down Expand Up @@ -217,8 +217,8 @@ static void WaitFrame(void)
gSystem.vblankCounter++;
gSystem.frameCounter = 0;

if (gSystem.mainCallback != NULL) {
gSystem.mainCallback(gSystem.mainCallbackData);
if (gSystem.vblankCallback != NULL) {
gSystem.vblankCallback(gSystem.vblankCallbackData);
}
}

Expand Down
Loading

0 comments on commit c1d0ee5

Please sign in to comment.