From b42fc20cf8280744cbbc8190e8419511e971d27e Mon Sep 17 00:00:00 2001 From: VicSevenT Date: Sun, 23 Aug 2026 22:49:11 -0500 Subject: [PATCH] Document Enable Poketch ScrCmd (#1266) --- asm/macros/scrcmd.inc | 4 +- include/data/scripts/scrcmd.h | 2 +- include/overlay005/enable_poketch_task.h | 8 +++ include/overlay005/ov5_021DDAE4.h | 8 --- platinum.us/main.lsf | 2 +- res/field/scripts/scripts_jubilife_city.s | 2 +- src/meson.build | 2 +- src/overlay005/enable_poketch_task.c | 72 ++++++++++++++++++++++ src/overlay005/ov5_021DDAE4.c | 73 ----------------------- src/scrcmd.c | 8 +-- 10 files changed, 90 insertions(+), 91 deletions(-) create mode 100644 include/overlay005/enable_poketch_task.h delete mode 100644 include/overlay005/ov5_021DDAE4.h create mode 100644 src/overlay005/enable_poketch_task.c delete mode 100644 src/overlay005/ov5_021DDAE4.c diff --git a/asm/macros/scrcmd.inc b/asm/macros/scrcmd.inc index e9b71c1b9a..b8dfc68f44 100644 --- a/asm/macros/scrcmd.inc +++ b/asm/macros/scrcmd.inc @@ -1834,8 +1834,8 @@ .short \word .endm - .macro ScrCmd_131 - .short SCRCMD_131 + .macro EnablePoketch + .short SCRCMD_ENABLEPOKETCH .endm .macro CheckPoketchEnabled destVar diff --git a/include/data/scripts/scrcmd.h b/include/data/scripts/scrcmd.h index c4cc03d55c..421de5ce2e 100644 --- a/include/data/scripts/scrcmd.h +++ b/include/data/scripts/scrcmd.h @@ -310,7 +310,7 @@ ScriptCommand(SCRCMD_TRYSAVEGAME, ScrCm ScriptCommand(SCRCMD_DRESSUPPHOTOHASDATA, ScrCmd_DressUpPhotoHasData) ScriptCommand(SCRCMD_CONTESTPHOTOHASDATA, ScrCmd_ContestPhotoHasData) ScriptCommand(SCRCMD_SETDRESSUPPHOTOTITLE, ScrCmd_SetDressUpPhotoTitle) -ScriptCommand(SCRCMD_131, ScrCmd_131) +ScriptCommand(SCRCMD_ENABLEPOKETCH, ScrCmd_EnablePoketch) ScriptCommand(SCRCMD_CHECKPOKETCHENABLED, ScrCmd_CheckPoketchEnabled) ScriptCommand(SCRCMD_REGISTERPOKETCHAPP, ScrCmd_RegisterPoketchApp) ScriptCommand(SCRCMD_CHECKPOKETCHAPPREGISTERED, ScrCmd_CheckPoketchAppRegistered) diff --git a/include/overlay005/enable_poketch_task.h b/include/overlay005/enable_poketch_task.h new file mode 100644 index 0000000000..a9bca906ea --- /dev/null +++ b/include/overlay005/enable_poketch_task.h @@ -0,0 +1,8 @@ +#ifndef POKEPLATINUM_ENABLE_POKETCH_TASK_H +#define POKEPLATINUM_ENABLE_POKETCH_TASK_H + +#include "field_task.h" + +void FieldSystem_EnablePoketch(FieldTask *task); + +#endif // POKEPLATINUM_ENABLE_POKETCH_TASK_H diff --git a/include/overlay005/ov5_021DDAE4.h b/include/overlay005/ov5_021DDAE4.h deleted file mode 100644 index cfd5ca55b1..0000000000 --- a/include/overlay005/ov5_021DDAE4.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef POKEPLATINUM_OV5_021DDAE4_H -#define POKEPLATINUM_OV5_021DDAE4_H - -#include "field_task.h" - -void ov5_021DDBC8(FieldTask *param0); - -#endif // POKEPLATINUM_OV5_021DDAE4_H diff --git a/platinum.us/main.lsf b/platinum.us/main.lsf index 50b7cc7a54..c50be2a5b4 100644 --- a/platinum.us/main.lsf +++ b/platinum.us/main.lsf @@ -478,7 +478,7 @@ Overlay overlay5 Object main.nef.p/src_overlay005_field_menu.c.o Object main.nef.p/src_overlay005_script_message.c.o Object main.nef.p/src_overlay005_map_name_popup.c.o - Object main.nef.p/src_overlay005_ov5_021DDAE4.c.o + Object main.nef.p/src_overlay005_enable_poketch_task.c.o Object main.nef.p/src_overlay005_encounter_effect.c.o Object main.nef.p/src_overlay005_field_effect_manager.c.o Object main.nef.p/src_overlay005_ov5_021DFB54.c.o diff --git a/res/field/scripts/scripts_jubilife_city.s b/res/field/scripts/scripts_jubilife_city.s index 5b410961c1..bd5aeb87fd 100644 --- a/res/field/scripts/scripts_jubilife_city.s +++ b/res/field/scripts/scripts_jubilife_city.s @@ -1427,7 +1427,7 @@ JubilifeCity_GivePoketch: RemoveItem ITEM_COUPON_1, 1, VAR_RESULT RemoveItem ITEM_COUPON_2, 1, VAR_RESULT RemoveItem ITEM_COUPON_3, 1, VAR_RESULT - ScrCmd_131 + EnablePoketch SetVar VAR_JUBILIFE_CITY_STATE, 2 RegisterPoketchApp POKETCH_APPID_DIGITALWATCH RegisterPoketchApp POKETCH_APPID_CALCULATOR diff --git a/src/meson.build b/src/meson.build index 30c3abfe8b..cc9230c759 100644 --- a/src/meson.build +++ b/src/meson.build @@ -371,7 +371,7 @@ pokeplatinum_c = files( 'overlay005/field_menu.c', 'overlay005/script_message.c', 'overlay005/map_name_popup.c', - 'overlay005/ov5_021DDAE4.c', + 'overlay005/enable_poketch_task.c', 'overlay005/encounter_effect.c', 'overlay005/field_effect_manager.c', 'overlay005/ov5_021DFB54.c', diff --git a/src/overlay005/enable_poketch_task.c b/src/overlay005/enable_poketch_task.c new file mode 100644 index 0000000000..b74d56697f --- /dev/null +++ b/src/overlay005/enable_poketch_task.c @@ -0,0 +1,72 @@ +#include "overlay005/enable_poketch_task.h" + +#include + +#include "applications/poketch/poketch_system.h" +#include "applications/poketch/unavailable/graphics.h" +#include "field/field_system.h" +#include "field/field_system_sub2_t.h" + +#include "brightness_controller.h" +#include "field_task.h" +#include "game_overlay.h" +#include "heap.h" +#include "poketch.h" +#include "render_oam.h" + +FS_EXTERN_OVERLAY(poketch_unavailable); +FS_EXTERN_OVERLAY(poketch); + +typedef struct EnablePoketchTask { + int state; +} EnablePoketchTask; + +static BOOL FieldTask_EnablePoketch(FieldTask *task) +{ + FieldSystem *fieldSystem = FieldTask_GetFieldSystem(task); + EnablePoketchTask *taskData = FieldTask_GetEnv(task); + + switch (taskData->state) { + case 0: + BrightnessController_StartTransition(2, -16, 0, GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BD, BRIGHTNESS_SUB_SCREEN); + taskData->state++; + break; + case 1: + if (BrightnessController_IsTransitionComplete(BRIGHTNESS_SUB_SCREEN)) { + PoketchUnavailableScreen_Exit(fieldSystem->bgConfig); + taskData->state++; + } + break; + case 2: + if (PoketchUnavailableScreen_IsDone(fieldSystem->bgConfig)) { + Poketch *poketch = SaveData_GetPoketch(fieldSystem->saveData); + + Overlay_UnloadByID(FS_OVERLAY_ID(poketch_unavailable)); + Overlay_LoadByID(FS_OVERLAY_ID(poketch), OVERLAY_LOAD_ASYNC); + Poketch_Enable(poketch); + PoketchSystem_Create(fieldSystem, &fieldSystem->unk_04->poketchSys, fieldSystem->saveData, fieldSystem->bgConfig, RenderOam_GetScreenOam(DS_SCREEN_SUB)); + taskData->state++; + } + break; + case 3: + BrightnessController_StartTransition(4, 0, -16, GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BD, BRIGHTNESS_SUB_SCREEN); + taskData->state++; + break; + case 4: + if (BrightnessController_IsTransitionComplete(BRIGHTNESS_SUB_SCREEN)) { + Heap_Free(taskData); + return TRUE; + } + break; + } + + return FALSE; +} + +void FieldSystem_EnablePoketch(FieldTask *task) +{ + EnablePoketchTask *taskState = Heap_AllocAtEnd(HEAP_ID_FIELD2, sizeof(EnablePoketchTask)); + + taskState->state = 0; + FieldTask_InitCall(task, FieldTask_EnablePoketch, taskState); +} diff --git a/src/overlay005/ov5_021DDAE4.c b/src/overlay005/ov5_021DDAE4.c deleted file mode 100644 index 929f097b03..0000000000 --- a/src/overlay005/ov5_021DDAE4.c +++ /dev/null @@ -1,73 +0,0 @@ -#include "overlay005/ov5_021DDAE4.h" - -#include -#include - -#include "applications/poketch/poketch_system.h" -#include "applications/poketch/unavailable/graphics.h" -#include "field/field_system.h" -#include "field/field_system_sub2_t.h" - -#include "brightness_controller.h" -#include "field_task.h" -#include "game_overlay.h" -#include "heap.h" -#include "poketch.h" -#include "render_oam.h" - -FS_EXTERN_OVERLAY(poketch_unavailable); -FS_EXTERN_OVERLAY(poketch); - -typedef struct { - int unk_00; -} UnkStruct_ov5_021DDBC8; - -static BOOL ov5_021DDAE4(FieldTask *param0) -{ - FieldSystem *fieldSystem = FieldTask_GetFieldSystem(param0); - UnkStruct_ov5_021DDBC8 *v1 = FieldTask_GetEnv(param0); - - switch (v1->unk_00) { - case 0: - BrightnessController_StartTransition(2, -16, 0, (GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BD), BRIGHTNESS_SUB_SCREEN); - v1->unk_00++; - break; - case 1: - if (BrightnessController_IsTransitionComplete(BRIGHTNESS_SUB_SCREEN)) { - PoketchUnavailableScreen_Exit(fieldSystem->bgConfig); - v1->unk_00++; - } - break; - case 2: - if (PoketchUnavailableScreen_IsDone(fieldSystem->bgConfig)) { - Poketch *poketch = SaveData_GetPoketch(fieldSystem->saveData); - - Overlay_UnloadByID(FS_OVERLAY_ID(poketch_unavailable)); - Overlay_LoadByID(FS_OVERLAY_ID(poketch), 2); - Poketch_Enable(poketch); - PoketchSystem_Create(fieldSystem, &fieldSystem->unk_04->poketchSys, fieldSystem->saveData, fieldSystem->bgConfig, RenderOam_GetScreenOam(1)); - v1->unk_00++; - } - break; - case 3: - BrightnessController_StartTransition(4, 0, -16, (GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BD), BRIGHTNESS_SUB_SCREEN); - v1->unk_00++; - break; - case 4: - if (BrightnessController_IsTransitionComplete(BRIGHTNESS_SUB_SCREEN)) { - Heap_Free(v1); - return 1; - } - break; - } - - return 0; -} - -void ov5_021DDBC8(FieldTask *param0) -{ - UnkStruct_ov5_021DDBC8 *v0 = Heap_AllocAtEnd(HEAP_ID_FIELD2, sizeof(UnkStruct_ov5_021DDBC8)); - - v0->unk_00 = 0; - FieldTask_InitCall(param0, ov5_021DDAE4, v0); -} diff --git a/src/scrcmd.c b/src/scrcmd.c index faf7808a5d..d922e51e12 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -49,6 +49,7 @@ #include "cutscenes/boat_cutscene.h" #include "field/field_system.h" #include "field/field_system_sub2_t.h" +#include "overlay005/enable_poketch_task.h" #include "overlay005/field_menu.h" #include "overlay005/footprint_type.h" #include "overlay005/honey_tree.h" @@ -56,7 +57,6 @@ #include "overlay005/map_object_anim_cmd.h" #include "overlay005/ov5_021D431C.h" #include "overlay005/ov5_021D5EB8.h" -#include "overlay005/ov5_021DDAE4.h" #include "overlay005/ov5_021DFB54.h" #include "overlay005/ov5_021EA874.h" #include "overlay005/ov5_021ECC20.h" @@ -449,7 +449,7 @@ static BOOL ScrCmd_StopHoneyTreeShaking(ScriptContext *ctx); static BOOL ScrCmd_StartSignatureApp(ScriptContext *ctx); static BOOL ScrCmd_CheckSaveType(ScriptContext *ctx); static BOOL ScrCmd_TrySaveGame(ScriptContext *ctx); -static BOOL ScrCmd_131(ScriptContext *ctx); +static BOOL ScrCmd_EnablePoketch(ScriptContext *ctx); static BOOL ScrCmd_CheckPoketchEnabled(ScriptContext *ctx); static BOOL ScrCmd_RegisterPoketchApp(ScriptContext *ctx); static BOOL ScrCmd_CheckPoketchAppRegistered(ScriptContext *ctx); @@ -4132,9 +4132,9 @@ static BOOL ScrCmd_CheckIsMiscSaveInit(ScriptContext *ctx) return FALSE; } -static BOOL ScrCmd_131(ScriptContext *ctx) +static BOOL ScrCmd_EnablePoketch(ScriptContext *ctx) { - ov5_021DDBC8(ctx->task); + FieldSystem_EnablePoketch(ctx->task); return TRUE; }