diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index 8f3c0911a..c6d4c2f83 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -10,220 +10,6 @@ .text - thumb_func_start ScrCmd_Unk00B2 -ScrCmd_Unk00B2: ; 0x0203C368 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_0203384C - cmp r0, #0x0 - beq _0203C3BC - mov r0, #0x1 - strh r0, [r4, #0x0] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r6, #0x0 - bl FUN_020386E0 - ldr r1, _0203C3C4 ; =FUN_0203BC04 - add r0, r5, #0x0 - bl SetupNativeScript - b _0203C3C0 -_0203C3BC: - mov r0, #0x0 - strh r0, [r4, #0x0] -_0203C3C0: - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 -_0203C3C4: .word FUN_0203BC04 - - thumb_func_start ScrCmd_Unk00B3 -ScrCmd_Unk00B3: ; 0x0203C3C8 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r1, r0, #0x0 - ldr r0, [r4, #0x74] - bl FUN_0206F3D8 - mov r0, #0x1 - pop {r4, pc} - - thumb_func_start ScrCmd_Unk00B4 -ScrCmd_Unk00B4: ; 0x0203C3E8 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FieldSysGetAttrAddr - add r4, r0, #0x0 - mov r0, #0xb - mov r1, #0x8 - bl AllocFromHeap - str r0, [r4, #0x0] - add r6, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Save_PlayerData_GetOptionsAddr - str r0, [r6, #0x4] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r1, [r4, #0x0] - bl FUN_020386A4 - ldr r1, _0203C42C ; =FUN_0203BC04 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4-r6, pc} - nop -_0203C42C: .word FUN_0203BC04 - - thumb_func_start ScrCmd_Unk00B5 -ScrCmd_Unk00B5: ; 0x0203C430 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FieldSysGetAttrAddr - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SaveArray_Flags_Get - ldr r1, [r4, #0x0] - ldr r1, [r1, #0x0] - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl FUN_0205F378 - ldr r0, [r4, #0x0] - bl FreeToHeap - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_Unk0178 -ScrCmd_Unk0178: ; 0x0203C460 - push {r4-r6, lr} - add r5, r0, #0x0 - ldr r1, [r5, #0x8] - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r0, [r1, #0x0] - cmp r0, #0x0 - beq _0203C474 - mov r0, #0x1 - b _0203C476 -_0203C474: - mov r0, #0x0 -_0203C476: - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FieldSysGetAttrAddr - add r6, r0, #0x0 - ldr r0, [r6, #0x0] - cmp r0, #0x0 - beq _0203C492 - bl GF_AssertFail -_0203C492: - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r4, #0x0 - bl FUN_0203789C - str r0, [r6, #0x0] - ldr r1, _0203C4AC ; =FUN_0203BC04 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 -_0203C4AC: .word FUN_0203BC04 - - thumb_func_start ScrCmd_Unk0179 -ScrCmd_Unk0179: ; 0x0203C4B0 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - mov r1, #0x13 - bl FieldSysGetAttrAddr - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - bne _0203C4DC - bl GF_AssertFail -_0203C4DC: - ldr r0, [r4, #0x0] - bl FUN_020378FC - strh r0, [r5, #0x0] - ldr r0, [r4, #0x0] - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, #0x0] - pop {r3-r5, pc} - - thumb_func_start ScrCmd_Unk00BA -ScrCmd_Unk00BA: ; 0x0203C4F0 - push {r3-r4, lr} - sub sp, #0xc - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - mov r1, #0x0 - str r1, [sp, #0x0] - str r1, [sp, #0x4] - str r0, [sp, #0x8] - ldr r0, [r4, #0x74] - add r2, r1, #0x0 - mov r3, #0x7 - bl FUN_020385CC - mov r0, #0x1 - add sp, #0xc - pop {r3-r4, pc} - .balign 4 - thumb_func_start ScrCmd_Unk00BB ScrCmd_Unk00BB: ; 0x0203C520 push {r4-r7, lr} @@ -267,7 +53,7 @@ ScrCmd_Unk00BB: ; 0x0203C520 ldr r0, [r5, #0x74] mov r1, #0x1 mov r3, #0xa - bl FUN_020385CC + bl CreateNamingScreen mov r0, #0x1 add sp, #0x34 pop {r4-r7, pc} @@ -290,7 +76,7 @@ ScrCmd_Unk0271: ; 0x0203C58C ldr r0, [r4, #0x74] mov r1, #0x6 mov r3, #0xa - bl FUN_020385CC + bl CreateNamingScreen mov r0, #0x1 add sp, #0xc pop {r3-r4, pc} diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s index b2abcab16..6130252e4 100644 --- a/arm9/asm/unk_020377F0.s +++ b/arm9/asm/unk_020377F0.s @@ -1962,8 +1962,8 @@ _020385BC: _020385CA: pop {r3-r5, pc} - thumb_func_start FUN_020385CC -FUN_020385CC: ; 0x020385CC + thumb_func_start CreateNamingScreen +CreateNamingScreen: ; 0x020385CC push {r3-r7, lr} sub sp, #0x10 str r0, [sp, #0x4] diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index c61e0c9df..6f0933813 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -329,13 +329,13 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_InitHallOfFame .word ScrCmd_Unk00B2 .word ScrCmd_Unk00B3 - .word ScrCmd_Unk00B4 - .word ScrCmd_Unk00B5 + .word ScrCmd_StarterSelectionScreen + .word ScrCmd_EndStarterSelectionScreen .word ScrCmd_Unk00B6 .word ScrCmd_Unk00B7 .word ScrCmd_Unk00B8 .word ScrCmd_Unk00B9 - .word ScrCmd_Unk00BA + .word ScrCmd_NamePlayerScreen .word ScrCmd_Unk00BB .word ScrCmd_Unk00BC .word ScrCmd_Unk00BD @@ -525,8 +525,8 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_Unk0175 .word ScrCmd_Unk0176 .word ScrCmd_CountPartyMons - .word ScrCmd_Unk0178 - .word ScrCmd_Unk0179 + .word ScrCmd_ShowBagScreen + .word ScrCmd_GetBagScreenSelection .word ScrCmd_Unk017A .word ScrCmd_GetBerryName .word ScrCmd_GetNatureName diff --git a/arm9/global.inc b/arm9/global.inc index 3ac464d5d..1720a57dc 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2653,7 +2653,7 @@ .extern FUN_020383F8 .extern FUN_0203842C .extern FUN_0203846C -.extern FUN_020385CC +.extern CreateNamingScreen .extern FUN_02038680 .extern FUN_02038690 .extern FUN_020386A4 @@ -2860,11 +2860,11 @@ .extern ScrCmd_InitHallOfFame .extern ScrCmd_Unk00B2 .extern ScrCmd_Unk00B3 -.extern ScrCmd_Unk00B4 -.extern ScrCmd_Unk00B5 -.extern ScrCmd_Unk0178 -.extern ScrCmd_Unk0179 -.extern ScrCmd_Unk00BA +.extern ScrCmd_StarterSelectionScreen +.extern ScrCmd_EndStarterSelectionScreen +.extern ScrCmd_ShowBagScreen +.extern ScrCmd_GetBagScreenSelection +.extern ScrCmd_NamePlayerScreen .extern ScrCmd_Unk00BB .extern ScrCmd_Unk0271 .extern ScrCmd_Unk0243 diff --git a/arm9/src/daycare.c b/arm9/src/daycare.c index 34b3e0944..e2086f39c 100644 --- a/arm9/src/daycare.c +++ b/arm9/src/daycare.c @@ -91,7 +91,7 @@ void DayCareMon_Extras_Init(struct DayCareMail * mail) { int i; - for (i = 0; i < OT_NAME_LENGTH + 1; i++) + for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++) mail->ot_name[i] = 0; for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++) mail->nickname[i] = 0; diff --git a/arm9/src/hall_of_fame.c b/arm9/src/hall_of_fame.c index ae0e6ea49..e575eb24d 100644 --- a/arm9/src/hall_of_fame.c +++ b/arm9/src/hall_of_fame.c @@ -48,7 +48,7 @@ void Save_HOF_RecordParty(struct HallOfFame * hof, struct PlayerParty * party, R GetMonData(mon, MON_DATA_NICKNAME_3, str); CopyStringToU16Array(str, hof_party->party[j].nickname, POKEMON_NAME_LENGTH + 1); GetMonData(mon, MON_DATA_OT_NAME_2, str); - CopyStringToU16Array(str, hof_party->party[j].otname, OT_NAME_LENGTH + 1); + CopyStringToU16Array(str, hof_party->party[j].otname, PLAYER_NAME_LENGTH + 1); } else { diff --git a/arm9/src/player_data.c b/arm9/src/player_data.c index 75acaa6f1..ca7f1d14a 100644 --- a/arm9/src/player_data.c +++ b/arm9/src/player_data.c @@ -68,13 +68,13 @@ void PlayerProfile_Init(struct PlayerData * data) void CopyPlayerName(u16 * dest, struct PlayerData * data) { - GF_ASSERT((s32)StringLength(data->playerName) < OT_NAME_LENGTH + 1); + GF_ASSERT((s32)StringLength(data->playerName) < PLAYER_NAME_LENGTH + 1); CopyU16StringArray(dest, data->playerName); } void PlayerName_StringToFlat(struct PlayerData * data, struct String * str) { - CopyStringToU16Array(str, data->playerName, OT_NAME_LENGTH + 1); + CopyStringToU16Array(str, data->playerName, PLAYER_NAME_LENGTH + 1); } u16 * PlayerProfile_GetNamePtr(struct PlayerData * data) @@ -89,7 +89,7 @@ void PlayerName_FlatToString(struct PlayerData * data, struct String * str) struct String * PlayerProfile_GetPlayerName_NewString(struct PlayerData * data, u32 heap_id) { - struct String * str = String_New(OT_NAME_LENGTH + 1, heap_id); + struct String * str = String_New(PLAYER_NAME_LENGTH + 1, heap_id); PlayerName_FlatToString(data, str); return str; } @@ -226,5 +226,5 @@ BOOL PlayerProfile_GetNatDexFlag(struct PlayerData * data) BOOL PlayerProfile_NameAndOTIDMatchPlayer(struct PlayerData * a, struct PlayerData * b) { - return !StringNotEqualN(a->playerName, b->playerName, OT_NAME_LENGTH) && a->playerId == b->playerId; + return !StringNotEqualN(a->playerName, b->playerName, PLAYER_NAME_LENGTH) && a->playerId == b->playerId; } diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index c38b298c1..987efad22 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -909,7 +909,7 @@ u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest) case MON_DATA_OT_NAME: { u16 * dest16 = (u16 *)dest; - for (ret = 0; ret < OT_NAME_LENGTH; ret++) + for (ret = 0; ret < PLAYER_NAME_LENGTH; ret++) dest16[ret] = blockD->otTrainerName[ret]; dest16[ret] = EOS; } @@ -1366,13 +1366,13 @@ void SetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * value) blockC->sinnohRibbons2 &= -1ull ^ mask; break; case MON_DATA_OT_NAME: - for (i = 0; i < OT_NAME_LENGTH + 1; i++) + for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++) { blockD->otTrainerName[i] = VALUE(u16); value = (void *)((char *)value + 2); } break; case MON_DATA_OT_NAME_2: - CopyStringToU16Array(value, blockD->otTrainerName, OT_NAME_LENGTH + 1); + CopyStringToU16Array(value, blockD->otTrainerName, PLAYER_NAME_LENGTH + 1); break; case MON_DATA_EGG_MET_YEAR: blockD->dateEggReceived[0] = VALUE(u8); @@ -3687,7 +3687,7 @@ BOOL FUN_0206A9AC(struct BoxPokemon * boxmon, struct PlayerData * sb2, u32 heap_ u32 myGender = PlayerProfile_GetTrainerGender(sb2); u32 otGender = GetBoxMonData(boxmon, MON_DATA_MET_GENDER, NULL); struct String * r7 = PlayerProfile_GetPlayerName_NewString(sb2, heap_id); - struct String * r6 = String_New(OT_NAME_LENGTH + 1, heap_id); + struct String * r6 = String_New(PLAYER_NAME_LENGTH + 1, heap_id); BOOL ret = FALSE; GetBoxMonData(boxmon, MON_DATA_OT_NAME_2, r6); if (myId == otId && myGender == otGender && StringCompare(r7, r6) == 0) diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index d00c4ddbd..b8df2a806 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -17,6 +17,8 @@ #include "text.h" #include "text_02054590.h" #include "unk_0200CA44.h" +#include "unk_020337E8.h" +#include "unk_020377F0.h" #include "unk_0204AF24.h" #include "unk_0205EC84.h" #include "unk_0208890C.h" @@ -139,6 +141,12 @@ extern void FUN_020383D8(TaskManager *taskManager); extern void *FUN_0203842C(FieldSystem *fieldSystem); extern void Task_GameClear(TaskManager *taskManager); extern HallOfFame *FUN_02038824(FieldSystem *fieldSystem); +extern void FUN_020386E0(FieldSystem *fieldSystem, u16 param1); +extern void FUN_0206F3D8(TaskManager *taskManager, u16 *param1); +extern void FUN_020386A4(FieldSystem *fieldSystem, StarterSelectionData *starterSelectionData); +extern void FUN_0205F378(struct ScriptState *flags, u16 state); +extern BagScreenAppData *FUN_0203789C(FieldSystem *fieldSystem, u8 mode); +extern u16 FUN_020378FC(BagScreenAppData *bagScreenAppData); u8 UNK_021C5A0C[4]; @@ -2268,3 +2276,69 @@ BOOL ScrCmd_InitHallOfFame(ScriptContext *ctx) { //00B1 SetupNativeScript(ctx, FUN_0203BB90); return TRUE; } + +BOOL ScrCmd_Unk00B2(ScriptContext *ctx) { //00B2 + u16 unk0 = ScriptGetVar(ctx); + u16 *unk1 = ScriptGetVarPointer(ctx); + if (FUN_0203384C(ctx->fieldSystem->saveBlock2)) { + *unk1 = 1; + FUN_020386E0(ctx->fieldSystem, unk0); + SetupNativeScript(ctx, FUN_0203BC04); + } + else { + *unk1 = 0; + } + return TRUE; +} + +BOOL ScrCmd_Unk00B3(ScriptContext *ctx) { //00B3 + u16 *var = ScriptGetVarPointer(ctx); + FUN_0206F3D8(ctx->taskManager, var); + return TRUE; +} + +BOOL ScrCmd_StarterSelectionScreen(ScriptContext *ctx) { //00B4 + StarterSelectionData **starterSelectionPtr = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_MISC_DATA_PTR); + *starterSelectionPtr = AllocFromHeap(11, sizeof(StarterSelectionData)); + StarterSelectionData *starterSelectionData = *starterSelectionPtr; //consider inlining + starterSelectionData->options = Save_PlayerData_GetOptionsAddr(ctx->fieldSystem->saveBlock2); + FUN_020386A4(ctx->fieldSystem, *starterSelectionPtr); + SetupNativeScript(ctx, FUN_0203BC04); + return TRUE; +} + +BOOL ScrCmd_EndStarterSelectionScreen(ScriptContext *ctx) { //00B5 + StarterSelectionData **starterSelectionData = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_MISC_DATA_PTR); + struct ScriptState *flags = SaveArray_Flags_Get(ctx->fieldSystem->saveBlock2); + FUN_0205F378(flags, (*starterSelectionData)->state); + FreeToHeap(*starterSelectionData); + return FALSE; +} + +BOOL ScrCmd_ShowBagScreen(ScriptContext *ctx) { //0178 + BagScreenAppData **bagData; //required for matching + u8 mode = ScriptReadByte(ctx) != 0 ? 1 : 0; + bagData = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_RUNNING_APP_DATA); + + GF_ASSERT(*bagData == NULL); + *bagData = FUN_0203789C(ctx->fieldSystem, mode); //BagData_New? + SetupNativeScript(ctx, FUN_0203BC04); + return TRUE; +} + +BOOL ScrCmd_GetBagScreenSelection(ScriptContext *ctx) { //0179 + u16 *var = ScriptGetVarPointer(ctx); + BagScreenAppData **bagData = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_RUNNING_APP_DATA); + + GF_ASSERT(*bagData != NULL); + *var = FUN_020378FC(*bagData); //BagData_GetSelection? + FreeToHeap(*bagData); + *bagData = NULL; + return FALSE; +} + +BOOL ScrCmd_NamePlayerScreen(ScriptContext *ctx) { //00BA + u16 *var = ScriptGetVarPointer(ctx); + CreateNamingScreen(ctx->taskManager, NAMINGSCREEN_PLAYER, 0, PLAYER_NAME_LENGTH, 0, NULL, var); + return TRUE; +} diff --git a/arm9/src/scrcmd_union.c b/arm9/src/scrcmd_union.c index aa8a39810..723908818 100644 --- a/arm9/src/scrcmd_union.c +++ b/arm9/src/scrcmd_union.c @@ -3,10 +3,10 @@ #include "message_format.h" #include "math_util.h" #include "unk_020286F8.h" +#include "unk_020377F0.h" extern void* FieldSysGetAttrAddr(struct FieldSystem*, u8 idx); -extern void FUN_020385CC(struct TaskManager *, u32, u32, u32, u32, u16*, u16* ret_ptr); extern BOOL FUN_020612EC(struct FieldSystem*); extern BOOL FUN_020612F8(struct FieldSystem*); @@ -51,7 +51,7 @@ BOOL ScrCmd_UnionGroup(struct ScriptContext* ctx) //021D u16* unk_str_ptr = FUN_020287A8(unk_sav_ptr, 0, 0); u16* ret_ptr = ScriptGetVarPointer(ctx); - FUN_020385CC(ctx->taskManager, 5, 0, 7, 0, unk_str_ptr, ret_ptr); + CreateNamingScreen(ctx->taskManager, NAMINGSCREEN_GROUP, 0, PLAYER_NAME_LENGTH, 0, unk_str_ptr, ret_ptr); //should be GROUP_NAME_LENGTH? return TRUE; } case 5: { //enter in group id (whatever this means, needs more investigation) diff --git a/arm9/src/trainer_data.c b/arm9/src/trainer_data.c index b37f61175..f017648f6 100644 --- a/arm9/src/trainer_data.c +++ b/arm9/src/trainer_data.c @@ -32,7 +32,7 @@ void EnemyTrainerSet_Init(struct BattleSetupStruct * enemies, struct SaveBlock2 else { str = NewString_ReadMsgData(msgData, enemies->trainer_idxs[i]); - CopyStringToU16Array(str, enemies->datas[i].name, OT_NAME_LENGTH + 1); + CopyStringToU16Array(str, enemies->datas[i].name, PLAYER_NAME_LENGTH + 1); String_Delete(str); } CreateNPCTrainerParty(enemies, i, heap_id); diff --git a/include/constants/global.h b/include/constants/global.h index 28d4b2069..c506e352b 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -1,7 +1,7 @@ #ifndef POKEDIAMOND_CONSTANTS_GLOBAL_H #define POKEDIAMOND_CONSTANTS_GLOBAL_H -#define POKEMON_NAME_LENGTH 10 -#define OT_NAME_LENGTH 7 +#define POKEMON_NAME_LENGTH 10 +#define PLAYER_NAME_LENGTH 7 #endif //POKEDIAMOND_CONSTANTS_GLOBAL_H diff --git a/include/daycare.h b/include/daycare.h index 9001c491f..5a5b8e533 100644 --- a/include/daycare.h +++ b/include/daycare.h @@ -6,7 +6,7 @@ struct DayCareMail { struct Mail seal; - u16 ot_name[OT_NAME_LENGTH + 1]; + u16 ot_name[PLAYER_NAME_LENGTH + 1]; u16 nickname[POKEMON_NAME_LENGTH + 1]; u8 padding_5E[2]; }; diff --git a/include/event_data.h b/include/event_data.h index bcfc14e4b..92d900f9e 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -3,7 +3,7 @@ #include "save_block_2.h" -struct ScriptState +struct ScriptState //todo this is not a very good name { u16 vars[288]; u8 flags[364]; diff --git a/include/hall_of_fame.h b/include/hall_of_fame.h index 9ad1490c2..7be679003 100644 --- a/include/hall_of_fame.h +++ b/include/hall_of_fame.h @@ -13,7 +13,7 @@ struct HOFMon /* 0x04 */ u32 personality; /* 0x08 */ u32 otid; /* 0x0C */ u16 nickname[POKEMON_NAME_LENGTH + 1]; - /* 0x22 */ u16 otname[OT_NAME_LENGTH + 1]; + /* 0x22 */ u16 otname[PLAYER_NAME_LENGTH + 1]; /* 0x32 */ u16 moves[4]; /* 0x3A */ u8 padding[2]; }; diff --git a/include/mail.h b/include/mail.h index d0334b9b6..12778e673 100644 --- a/include/mail.h +++ b/include/mail.h @@ -20,7 +20,7 @@ struct Mail u8 author_language; // language u8 author_version; // version u8 mail_type; // mail type - u16 author_name[OT_NAME_LENGTH + 1]; // author name + u16 author_name[PLAYER_NAME_LENGTH + 1]; // author name union MailPatternData unk_18[3]; u8 padding_1E[2]; struct MailMessage unk_20[3]; diff --git a/include/player_data.h b/include/player_data.h index 62168e734..33dff5171 100644 --- a/include/player_data.h +++ b/include/player_data.h @@ -17,7 +17,7 @@ typedef enum struct PlayerData { - /* 0x00 */ u16 playerName[OT_NAME_LENGTH + 1]; + /* 0x00 */ u16 playerName[PLAYER_NAME_LENGTH + 1]; /* 0x10 */ u32 playerId; /* 0x14 */ u32 money; /* 0x18 */ u8 gender; diff --git a/include/scrcmd.h b/include/scrcmd.h index 60695bc51..7e9fb09b8 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -194,6 +194,13 @@ BOOL ScrCmd_Unk00AE(ScriptContext *ctx); BOOL ScrCmd_Unk00AF(ScriptContext *ctx); BOOL ScrCmd_ShowEndGameScreen(ScriptContext *ctx); BOOL ScrCmd_InitHallOfFame(ScriptContext *ctx); +BOOL ScrCmd_Unk00B2(ScriptContext *ctx); +BOOL ScrCmd_Unk00B3(ScriptContext *ctx); +BOOL ScrCmd_StarterSelectionScreen(ScriptContext *ctx); +BOOL ScrCmd_EndStarterSelectionScreen(ScriptContext *ctx); +BOOL ScrCmd_ShowBagScreen(ScriptContext *ctx); +BOOL ScrCmd_GetBagScreenSelection(ScriptContext *ctx); +BOOL ScrCmd_NamePlayerScreen(ScriptContext *ctx); // scrcmd_mart.c BOOL ScrCmd_NormalMart(struct ScriptContext * ctx); diff --git a/include/script.h b/include/script.h index ad7818e4a..bb26585de 100644 --- a/include/script.h +++ b/include/script.h @@ -64,6 +64,15 @@ typedef struct ScrCmdUnkStruct01D9 { u16 unk06; } ScrCmdUnkStruct01D9; //todo identify and move to own file +typedef struct StarterSelectionData { + s32 state; + struct Options *options; +} StarterSelectionData; //todo move to own file + +typedef struct BagScreenAppData { + +} BagScreenAppData; //todo fill out and move to own file + typedef struct FieldSystem //todo move to field_system.c { u32 *unk00; diff --git a/include/trainer_data.h b/include/trainer_data.h index 8a63e290a..9aae386af 100644 --- a/include/trainer_data.h +++ b/include/trainer_data.h @@ -65,7 +65,7 @@ struct TrainerData struct TrainerDataLoaded { struct TrainerData data; - u16 name[OT_NAME_LENGTH + 1]; + u16 name[PLAYER_NAME_LENGTH + 1]; u8 padding[16]; }; diff --git a/include/unk_020377F0.h b/include/unk_020377F0.h index 912768893..6e219b1a2 100644 --- a/include/unk_020377F0.h +++ b/include/unk_020377F0.h @@ -1,6 +1,10 @@ #ifndef POKEDIAMOND_UNK_020377F0_H #define POKEDIAMOND_UNK_020377F0_H +#include "task.h" + +// this file likely has to do with scrcmd apps. + struct Options; struct PlayerParty; @@ -27,4 +31,14 @@ struct UnkStruct_02037CF0 BOOL unk2C; }; +enum NamingScreenType { + NAMINGSCREEN_PLAYER, + NAMINGSCREEN_POKEMON, + NAMINGSCREEN_BOX, + NAMINGSCREEN_RIVAL, + NAMINGSCREEN_GROUP = 5, +}; + +void CreateNamingScreen(TaskManager *taskManager, enum NamingScreenType type, s32 param2, s32 maxLen, s32 initPos, const u16 *defaultStr, u16 *retVar); + #endif