mirror of
https://github.com/pret/pokediamond.git
synced 2026-08-06 10:43:24 -05:00
Decompile scrcmd_8
This commit is contained in:
parent
244d7c0ef3
commit
5cdb95f4e0
|
|
@ -1,234 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start FUN_02041C38
|
||||
FUN_02041C38: ; 0x02041C38
|
||||
push {r4-r7, lr}
|
||||
sub sp, #0xc
|
||||
add r4, r0, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r1, #0xf
|
||||
bl FUN_02039438
|
||||
add r6, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
ldr r0, [r0, #0xc]
|
||||
bl FUN_0202881C
|
||||
add r5, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
ldr r7, [r0, #0xc]
|
||||
add r0, r4, #0x0
|
||||
bl ScriptReadHalfword
|
||||
cmp r0, #0x6
|
||||
bls _02041C6C
|
||||
b _02041E38
|
||||
_02041C6C:
|
||||
add r0, r0, r0
|
||||
add r0, pc
|
||||
ldrh r0, [r0, #0x6]
|
||||
lsl r0, r0, #0x10
|
||||
asr r0, r0, #0x10
|
||||
add pc, r0
|
||||
_02041C78: ; jump table (using 16-bit offset)
|
||||
.short _02041C86 - _02041C78 - 2; case 0
|
||||
.short _02041CBC - _02041C78 - 2; case 1
|
||||
.short _02041CF2 - _02041C78 - 2; case 2
|
||||
.short _02041D28 - _02041C78 - 2; case 3
|
||||
.short _02041D5E - _02041C78 - 2; case 4
|
||||
.short _02041D94 - _02041C78 - 2; case 5
|
||||
.short _02041DCE - _02041C78 - 2; case 6
|
||||
_02041C86:
|
||||
add r0, r4, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
bl VarGet
|
||||
add r6, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r4, #0x80
|
||||
add r1, r0, #0x0
|
||||
ldr r0, [r4, #0x0]
|
||||
bl GetVarPointer
|
||||
add r4, r0, #0x0
|
||||
add r0, r5, #0x0
|
||||
add r1, r6, #0x0
|
||||
bl FUN_02028828
|
||||
strh r0, [r4, #0x0]
|
||||
add sp, #0xc
|
||||
mov r0, #0x0
|
||||
pop {r4-r7, pc}
|
||||
_02041CBC:
|
||||
add r0, r4, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
bl VarGet
|
||||
add r6, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r4, #0x80
|
||||
add r1, r0, #0x0
|
||||
ldr r0, [r4, #0x0]
|
||||
bl GetVarPointer
|
||||
add r4, r0, #0x0
|
||||
add r0, r5, #0x0
|
||||
add r1, r6, #0x0
|
||||
bl FUN_02028840
|
||||
strh r0, [r4, #0x0]
|
||||
add sp, #0xc
|
||||
mov r0, #0x0
|
||||
pop {r4-r7, pc}
|
||||
_02041CF2:
|
||||
add r0, r4, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
bl VarGet
|
||||
add r5, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r4, #0x80
|
||||
add r1, r0, #0x0
|
||||
ldr r0, [r4, #0x0]
|
||||
bl VarGet
|
||||
add r3, r0, #0x0
|
||||
mov r0, #0x0
|
||||
str r0, [sp, #0x0]
|
||||
ldr r0, [r6, #0x0]
|
||||
add r1, r7, #0x0
|
||||
add r2, r5, #0x0
|
||||
bl BufferEasyChatWord
|
||||
b _02041E38
|
||||
_02041D28:
|
||||
add r0, r4, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
bl VarGet
|
||||
add r5, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r4, #0x80
|
||||
add r1, r0, #0x0
|
||||
ldr r0, [r4, #0x0]
|
||||
bl VarGet
|
||||
add r3, r0, #0x0
|
||||
mov r0, #0x1
|
||||
str r0, [sp, #0x0]
|
||||
ldr r0, [r6, #0x0]
|
||||
add r1, r7, #0x0
|
||||
add r2, r5, #0x0
|
||||
bl BufferEasyChatWord
|
||||
b _02041E38
|
||||
_02041D5E:
|
||||
mov r1, #0x0
|
||||
add r0, r5, #0x0
|
||||
add r2, r1, #0x0
|
||||
bl FUN_020287A8
|
||||
add r5, r0, #0x0
|
||||
add r0, r4, #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 r5, [sp, #0x4]
|
||||
str r0, [sp, #0x8]
|
||||
ldr r0, [r4, #0x74]
|
||||
mov r1, #0x5
|
||||
mov r3, #0x7
|
||||
bl FUN_020385CC
|
||||
add sp, #0xc
|
||||
mov r0, #0x1
|
||||
pop {r4-r7, pc}
|
||||
_02041D94:
|
||||
add r0, r4, #0x0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
bl VarGet
|
||||
add r7, r0, #0x0
|
||||
add r0, r5, #0x0
|
||||
mov r1, #0x1
|
||||
bl FUN_02028828
|
||||
add r6, r0, #0x0
|
||||
add r0, r5, #0x0
|
||||
add r1, r7, #0x0
|
||||
mov r2, #0x1
|
||||
bl FUN_02028700
|
||||
cmp r6, #0x0
|
||||
beq _02041DC8
|
||||
add r4, #0x80
|
||||
ldr r0, [r4, #0x0]
|
||||
bl FUN_020612F8
|
||||
_02041DC8:
|
||||
add sp, #0xc
|
||||
mov r0, #0x0
|
||||
pop {r4-r7, pc}
|
||||
_02041DCE:
|
||||
mov r0, #0x40
|
||||
mov r1, #0x20
|
||||
bl String_ctor
|
||||
add r6, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0, #0x0]
|
||||
ldr r0, [r0, #0xc]
|
||||
bl Sav2_PlayerData_GetProfileAddr
|
||||
add r1, r6, #0x0
|
||||
add r7, r0, #0x0
|
||||
bl PlayerName_FlatToString
|
||||
add r0, r5, #0x0
|
||||
mov r1, #0x0
|
||||
mov r2, #0x1
|
||||
add r3, r6, #0x0
|
||||
bl FUN_020287C0
|
||||
add r0, r7, #0x0
|
||||
bl PlayerProfile_GetTrainerGender
|
||||
add r2, r0, #0x0
|
||||
add r0, r5, #0x0
|
||||
mov r1, #0x0
|
||||
bl FUN_020287EC
|
||||
add r0, r5, #0x0
|
||||
mov r1, #0x0
|
||||
mov r2, #0x2
|
||||
bl FUN_02028810
|
||||
bl MTRandom
|
||||
add r2, r0, #0x0
|
||||
add r0, r5, #0x0
|
||||
mov r1, #0x0
|
||||
bl FUN_02028788
|
||||
add r0, r6, #0x0
|
||||
bl String_dtor
|
||||
add r0, r5, #0x0
|
||||
mov r1, #0x0
|
||||
mov r2, #0x1
|
||||
bl FUN_02028700
|
||||
add r4, #0x80
|
||||
ldr r0, [r4, #0x0]
|
||||
bl FUN_020612EC
|
||||
_02041E38:
|
||||
mov r0, #0x0
|
||||
add sp, #0xc
|
||||
pop {r4-r7, pc}
|
||||
.balign 4
|
||||
|
|
@ -690,7 +690,7 @@ gScriptCmdTable: ; 0x020F355C
|
|||
.word FUN_0203E81C
|
||||
.word FUN_0203E848
|
||||
.word FUN_0203E858
|
||||
.word FUN_02041C38
|
||||
.word ScrCmd_Unk021D
|
||||
.word FUN_02045E1C
|
||||
.word FUN_02045E20
|
||||
.word FUN_02045EE0
|
||||
|
|
|
|||
|
|
@ -3238,7 +3238,7 @@
|
|||
.extern FUN_02041B9C
|
||||
.extern FUN_02041BC4
|
||||
.extern FUN_02041BF0
|
||||
.extern FUN_02041C38
|
||||
.extern ScrCmd_Unk021D
|
||||
.extern FUN_02041E40
|
||||
.extern FUN_02041FDC
|
||||
.extern FUN_02042000
|
||||
|
|
|
|||
87
arm9/src/scrcmd_8.c
Normal file
87
arm9/src/scrcmd_8.c
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
#include "scrcmd.h"
|
||||
#include "math_util.h"
|
||||
#include "unk_020286F8.h"
|
||||
|
||||
extern void* FUN_02039438(struct UnkSavStruct80*, u8 idx);
|
||||
|
||||
extern void FUN_020385CC(struct UnkStruct_0204639C*, u32, u32, u32, u32, u16*, u16* ret_ptr);
|
||||
extern BOOL FUN_020612EC(struct UnkSavStruct80*);
|
||||
extern BOOL FUN_020612F8(struct UnkSavStruct80*);
|
||||
|
||||
THUMB_FUNC BOOL ScrCmd_Unk021D(struct ScriptContext* ctx)
|
||||
{
|
||||
struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15);
|
||||
struct UnkSaveStruct_020286F8* unk_sav_ptr = FUN_0202881C(ctx->unk80->saveBlock2);
|
||||
struct SaveBlock2* sav2 = ctx->unk80->saveBlock2;
|
||||
|
||||
u16 unk = ScriptReadHalfword(ctx);
|
||||
switch (unk)
|
||||
{
|
||||
case 0: {
|
||||
u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
|
||||
*ret_ptr = (u16)FUN_02028828(unk_sav_ptr, unk_var);
|
||||
return FALSE;
|
||||
}
|
||||
case 1: {
|
||||
u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
|
||||
*ret_ptr = (u16)FUN_02028840(unk_sav_ptr, unk_var);
|
||||
return FALSE;
|
||||
}
|
||||
case 2: {
|
||||
u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
|
||||
BufferEasyChatWord(*mgr, sav2, unk_var, idx, 0);
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
|
||||
BufferEasyChatWord(*mgr, sav2, unk_var, idx, 1);
|
||||
break;
|
||||
}
|
||||
case 4: {
|
||||
u16* unk_str_ptr = FUN_020287A8(unk_sav_ptr, 0, 0);
|
||||
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
|
||||
FUN_020385CC(ctx->unk74, 5, 0, 7, 0, unk_str_ptr, ret_ptr);
|
||||
return TRUE;
|
||||
}
|
||||
case 5: {
|
||||
u16 src_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
|
||||
BOOL unk_bool = FUN_02028828(unk_sav_ptr, 1);
|
||||
|
||||
FUN_02028700(unk_sav_ptr, src_idx, 1);
|
||||
if (unk_bool != FALSE)
|
||||
{
|
||||
FUN_020612F8(ctx->unk80);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
case 6: {
|
||||
struct String* player_name = String_ctor(64, 32);
|
||||
struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2);
|
||||
|
||||
PlayerName_FlatToString(player, player_name);
|
||||
FUN_020287C0(unk_sav_ptr, 0, 1, player_name);
|
||||
FUN_020287EC(unk_sav_ptr, 0, PlayerProfile_GetTrainerGender(player));
|
||||
FUN_02028810(unk_sav_ptr, 0, 2);
|
||||
FUN_02028788(unk_sav_ptr, 0, MTRandom());
|
||||
|
||||
String_dtor(player_name);
|
||||
|
||||
FUN_02028700(unk_sav_ptr, 0, 1);
|
||||
FUN_020612EC(ctx->unk80);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -75,9 +75,9 @@ void FUN_020287C0(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j, struct Stri
|
|||
CopyStringToU16Array(k, ptr[i].unk_10, 8);
|
||||
}
|
||||
|
||||
void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j)
|
||||
void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j)
|
||||
{
|
||||
ptr[i].unk_20 = j;
|
||||
ptr[i].unk_20 = (u8)j;
|
||||
}
|
||||
|
||||
u8 FUN_020287F8(struct UnkSaveStruct_020286F8 * ptr, u32 i)
|
||||
|
|
@ -90,10 +90,9 @@ u8 FUN_02028804(struct UnkSaveStruct_020286F8 * ptr, u32 i)
|
|||
return ptr[i].unk_21;
|
||||
}
|
||||
|
||||
|
||||
void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j)
|
||||
void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j)
|
||||
{
|
||||
ptr[i].unk_21 = j;
|
||||
ptr[i].unk_21 = (u8)j;
|
||||
}
|
||||
|
||||
struct UnkSaveStruct_020286F8 * FUN_0202881C(struct SaveBlock2 * sav2)
|
||||
|
|
|
|||
|
|
@ -150,6 +150,9 @@ BOOL ScrCmd_Unk02CC(struct ScriptContext* ctx);
|
|||
BOOL ScrCmd_GetSealNamePlural(struct ScriptContext* ctx);
|
||||
BOOL ScrCmd_CapitalizeFirstChar(struct ScriptContext* ctx);
|
||||
|
||||
//scrcmd_8.c
|
||||
BOOL ScrCmd_Unk021D(struct ScriptContext* ctx);
|
||||
|
||||
//scrcmd_11.c
|
||||
BOOL ScrCmd_Unk017D(struct ScriptContext* ctx);
|
||||
BOOL ScrCmd_Unk017E(struct ScriptContext* ctx);
|
||||
|
|
|
|||
|
|
@ -21,10 +21,10 @@ void FUN_02028788(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j);
|
|||
u32 FUN_020287A4(struct UnkSaveStruct_020286F8 * ptr);
|
||||
u16 * FUN_020287A8(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j);
|
||||
void FUN_020287C0(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j, struct String * k);
|
||||
void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j);
|
||||
void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j);
|
||||
u8 FUN_020287F8(struct UnkSaveStruct_020286F8 * ptr, u32 i);
|
||||
u8 FUN_02028804(struct UnkSaveStruct_020286F8 * ptr, u32 i);
|
||||
void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j);
|
||||
void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j);
|
||||
struct UnkSaveStruct_020286F8 * FUN_0202881C(struct SaveBlock2 * sav2);
|
||||
BOOL FUN_02028828(struct UnkSaveStruct_020286F8 * ptr, u32 i);
|
||||
BOOL FUN_02028840(struct UnkSaveStruct_020286F8 * ptr, int i);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user