more scrcmd

This commit is contained in:
red031000
2023-06-12 00:12:26 +01:00
parent a0dbecd2c1
commit 786465b8d7
7 changed files with 46 additions and 119 deletions

View File

@@ -10,117 +10,6 @@
.text
thumb_func_start ScrCmd_Unk00BB
ScrCmd_Unk00BB: ; 0x0203C520
push {r4-r7, lr}
sub sp, #0x34
add r5, r0, #0x0
add r1, r5, #0x0
add r1, #0x80
ldr r4, [r1, #0x0]
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r5, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl VarGet
add r6, r0, #0x0
ldr r0, [r4, #0xc]
bl SaveArray_PlayerParty_Get
add r1, r6, #0x0
bl GetPartyMonByIndex
mov r1, #0x74
add r2, sp, #0xc
add r7, r0, #0x0
bl GetMonData
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, r7, #0x0
mov r1, #0x5
mov r2, #0x0
bl GetMonData
add r2, r0, #0x0
str r6, [sp, #0x0]
add r0, sp, #0xc
str r0, [sp, #0x4]
str r4, [sp, #0x8]
ldr r0, [r5, #0x74]
mov r1, #0x1
mov r3, #0xa
bl CreateNamingScreen
mov r0, #0x1
add sp, #0x34
pop {r4-r7, pc}
thumb_func_start ScrCmd_Unk0271
ScrCmd_Unk0271: ; 0x0203C58C
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 r2, #0x0
str r2, [sp, #0x0]
str r2, [sp, #0x4]
str r0, [sp, #0x8]
ldr r0, [r4, #0x74]
mov r1, #0x6
mov r3, #0xa
bl CreateNamingScreen
mov r0, #0x1
add sp, #0xc
pop {r3-r4, pc}
.balign 4
thumb_func_start ScrCmd_Unk0243
ScrCmd_Unk0243: ; 0x0203C5BC
push {r3-r5, 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 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
bl ScriptReadHalfword
add r1, r0, #0x0
add r0, r5, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
bl GetVarPointer
add r2, r0, #0x0
ldr r0, _0203C610 ; =0x0000FFFF
add r5, #0x80
strh r0, [r2, #0x0]
ldr r0, [r5, #0x0]
add r1, r4, #0x0
ldr r0, [r0, #0x10]
mov r3, #0x0
bl FUN_02037E18
mov r0, #0x1
pop {r3-r5, pc}
nop
_0203C610: .word 0x0000FFFF
thumb_func_start ScrCmd_Unk0244
ScrCmd_Unk0244: ; 0x0203C614
push {r4-r6, lr}

View File

@@ -336,7 +336,7 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_Unk00B8
.word ScrCmd_Unk00B9
.word ScrCmd_NamePlayerScreen
.word ScrCmd_Unk00BB
.word ScrCmd_NamePokemonScreen
.word ScrCmd_Unk00BC
.word ScrCmd_Unk00BD
.word ScrCmd_Unk00BE
@@ -774,7 +774,7 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_Unk026E
.word ScrCmd_Unk026F
.word ScrCmd_Unk0270
.word ScrCmd_Unk0271
.word ScrCmd_WriteWhiteRockInscription
.word ScrCmd_GetWhiteRockInscription
.word ScrCmd_Unk0273
.word ScrCmd_HasEnoughCoinsImmediate

View File

@@ -2865,8 +2865,8 @@
.extern ScrCmd_ShowBagScreen
.extern ScrCmd_GetBagScreenSelection
.extern ScrCmd_NamePlayerScreen
.extern ScrCmd_Unk00BB
.extern ScrCmd_Unk0271
.extern ScrCmd_NamePokemonScreen
.extern ScrCmd_WriteWhiteRockInscription
.extern ScrCmd_Unk0243
.extern ScrCmd_Unk0244
.extern ScrCmd_Unk0245

View File

@@ -147,6 +147,7 @@ extern void FUN_020386A4(FieldSystem *fieldSystem, StarterSelectionData *starter
extern void FUN_0205F378(struct ScriptState *flags, u16 state);
extern BagScreenAppData *FUN_0203789C(FieldSystem *fieldSystem, u8 mode);
extern u16 FUN_020378FC(BagScreenAppData *bagScreenAppData);
extern void FUN_02037E18(TaskManager *taskManager, u16 *param1, u16 *param2, u32 param3);
u8 UNK_021C5A0C[4];
@@ -2342,3 +2343,36 @@ BOOL ScrCmd_NamePlayerScreen(ScriptContext *ctx) { //00BA
CreateNamingScreen(ctx->taskManager, NAMINGSCREEN_PLAYER, 0, PLAYER_NAME_LENGTH, 0, NULL, var);
return TRUE;
}
BOOL ScrCmd_NamePokemonScreen(ScriptContext *ctx) { //00BB
FieldSystem *fieldSystem = ctx->fieldSystem;
u16 partyPos = ScriptGetVar(ctx);
PlayerParty *party = SaveArray_PlayerParty_Get(fieldSystem->saveBlock2);
Pokemon *mon = GetPartyMonByIndex(party, partyPos);
u16 monNick[20];
GetMonData(mon, MON_DATA_NICKNAME, monNick);
u16 *var = ScriptGetVarPointer(ctx);
s32 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
CreateNamingScreen(ctx->taskManager, NAMINGSCREEN_POKEMON, species, POKEMON_NAME_LENGTH, partyPos, monNick, var);
return TRUE;
}
BOOL ScrCmd_WriteWhiteRockInscription(ScriptContext *ctx) { //0271
u16 *var = ScriptGetVarPointer(ctx);
CreateNamingScreen(ctx->taskManager, NAMINGSCREEN_SHAYMIN_ROCK, 0, POKEMON_NAME_LENGTH, 0, NULL, var);
return TRUE;
}
BOOL ScrCmd_Unk0243(ScriptContext *ctx) { //0243
u16 unused = ScriptGetVar(ctx);
u16 *unk1 = ScriptGetVarPointer(ctx);
u16 *unk2 = ScriptGetVarPointer(ctx);
*unk2 = 0xFFFF;
FUN_02037E18(ctx->fieldSystem->taskManager, unk1, unk2, 0);
return TRUE;
}

View File

@@ -147,10 +147,10 @@ struct PartyPokemon
/* 0x0D4 */ u8 sealCoords[8][3]; // seal coords
};
struct Pokemon {
typedef struct Pokemon {
/* 0x000 */ struct BoxPokemon box;
/* 0x088 */ struct PartyPokemon party;
}; // size: 0xEC
} Pokemon; // size: 0xEC
struct SomeDrawPokemonStruct
{
@@ -193,12 +193,12 @@ struct Evolution
#define PARTY_SIZE 6
struct PlayerParty
typedef struct PlayerParty
{
int maxCount;
int curCount;
struct Pokemon mons[PARTY_SIZE];
};
} PlayerParty;
void ZeroMonData(struct Pokemon * pokemon);
void ZeroBoxMonData(struct BoxPokemon * boxmon);

View File

@@ -201,6 +201,9 @@ BOOL ScrCmd_EndStarterSelectionScreen(ScriptContext *ctx);
BOOL ScrCmd_ShowBagScreen(ScriptContext *ctx);
BOOL ScrCmd_GetBagScreenSelection(ScriptContext *ctx);
BOOL ScrCmd_NamePlayerScreen(ScriptContext *ctx);
BOOL ScrCmd_NamePokemonScreen(ScriptContext *ctx);
BOOL ScrCmd_WriteWhiteRockInscription(ScriptContext *ctx);
BOOL ScrCmd_Unk0243(ScriptContext *ctx);
// scrcmd_mart.c
BOOL ScrCmd_NormalMart(struct ScriptContext * ctx);

View File

@@ -37,6 +37,7 @@ enum NamingScreenType {
NAMINGSCREEN_BOX,
NAMINGSCREEN_RIVAL,
NAMINGSCREEN_GROUP = 5,
NAMINGSCREEN_SHAYMIN_ROCK = 6,
};
void CreateNamingScreen(TaskManager *taskManager, enum NamingScreenType type, s32 param2, s32 maxLen, s32 initPos, const u16 *defaultStr, u16 *retVar);