few more funcs

This commit is contained in:
red031000 2023-08-16 09:00:05 +01:00
parent 400e6aea2b
commit 764a3db869
No known key found for this signature in database
GPG Key ID: D27E50C050AE0CE1
5 changed files with 42 additions and 83 deletions

View File

@ -7,83 +7,6 @@
.text
thumb_func_start sub_02047174
sub_02047174: ; 0x02047174
push {r3-r7, lr}
add r5, r2, #0x0
add r7, r0, #0x0
add r4, r1, #0x0
bl TaskManager_GetFieldSystem
add r6, r0, #0x0
mov r0, #0xb
add r1, r5, #0x0
bl BattleSetup_New
add r5, r0, #0x0
add r1, r6, #0x0
add r2, r4, #0x0
bl sub_02047F1C
add r0, r5, #0x0
bl sub_020475A0
add r4, r0, #0x0
add r0, r5, #0x0
bl sub_020475B0
add r2, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
mov r3, #0x0
bl Encounter_New
add r2, r0, #0x0
ldr r1, _020471BC ; =sub_02046758
add r0, r7, #0x0
bl TaskManager_Call
pop {r3-r7, pc}
nop
_020471BC: .word sub_02046758
thumb_func_start sub_020471C0
sub_020471C0: ; 0x020471C0
push {r3-r7, lr}
str r0, [sp, #0x0]
add r5, r1, #0x0
add r6, r2, #0x0
add r4, r3, #0x0
bl TaskManager_GetFieldSystem
add r7, r0, #0x0
cmp r4, #0x0
beq _020471DE
mov r0, #0xb
mov r1, #0x5
bl BattleSetup_New
b _020471E6
_020471DE:
mov r0, #0xb
mov r1, #0x7
bl BattleSetup_New
_020471E6:
add r4, r0, #0x0
add r0, r4, #0x0
add r1, r7, #0x0
add r2, r6, #0x0
bl sub_02047BC0
add r0, r4, #0x0
bl sub_020475A0
add r6, r0, #0x0
add r0, r4, #0x0
bl sub_020475B0
add r2, r0, #0x0
add r0, r4, #0x0
add r1, r6, #0x0
mov r3, #0x0
bl Encounter_New
add r2, r0, #0x0
ldr r0, [sp, #0x0]
ldr r1, _0204721C ; =sub_020467FC
str r5, [r2, #0xc]
bl TaskManager_Call
pop {r3-r7, pc}
nop
_0204721C: .word sub_020467FC
thumb_func_start sub_02047220
sub_02047220: ; 0x02047220
push {r3-r7, lr}

View File

@ -48,6 +48,8 @@ extern void sub_0204BAA0(FieldSystem *fieldSystem, BattleSetup *setup);
extern u32 sub_0204BAB0(FieldSystem *fieldSystem);
extern void StartScriptFromMenu(TaskManager *taskManager, u16 script, LocalMapObject *lastInteracted);
extern BattleSetup *sub_02047814(HeapID heapId, FieldSystem *fieldSystem);
extern void sub_02047F1C(BattleSetup *setup, FieldSystem *fieldSystem, void *param2);
extern void sub_02047BC0(BattleSetup *setup, FieldSystem *fieldSystem, s32 maxLevel);
extern void sub_020472F4(FieldSystem *fieldSystem, BattleSetup *setup);
extern void sub_020473CC(FieldSystem *fieldSystem, BattleSetup *setup);
@ -197,7 +199,7 @@ static void sub_0204671C(s32 flag, FieldSystem *fieldSystem) {
}
}
/*static*/ BOOL sub_02046758(TaskManager *taskManager) {
/*static*/ BOOL sub_02046758(TaskManager *taskManager) { //Task_02046758
FieldSystem *fieldSystem = TaskManager_GetFieldSystem(taskManager);
Encounter *encounter = TaskManager_GetEnvironment(taskManager);
u32 *state = TaskManager_GetStatePtr(taskManager);
@ -654,9 +656,9 @@ void SetupAndStartTrainerBattle(TaskManager *taskManager, u32 opponentTrainer1,
setup = BattleSetup_New(HEAP_ID_FIELD, battleType);
BattleSetup_InitFromFieldSystem(setup, fieldSystem);
setup->trainerId[1] = opponentTrainer1;
setup->trainerId[3] = opponentTrainer2;
setup->trainerId[2] = followerTrainerNum;
setup->trainerId[BATTLER_ENEMY] = opponentTrainer1;
setup->trainerId[BATTLER_ENEMY2] = opponentTrainer2;
setup->trainerId[BATTLER_PLAYER2] = followerTrainerNum;
EnemyTrainerSet_Init(setup, fieldSystem->saveData, heapId);
@ -664,3 +666,36 @@ void SetupAndStartTrainerBattle(TaskManager *taskManager, u32 opponentTrainer1,
CallTask_StartEncounter(taskManager, setup, sub_020475A0(setup), sub_020475B0(setup), winFlag);
}
void sub_02047174(TaskManager *taskManager, void *param1, u32 battleType) {
FieldSystem *fieldSystem = TaskManager_GetFieldSystem(taskManager);
Encounter *encounter;
BattleSetup *setup;
setup = BattleSetup_New(HEAP_ID_FIELD, battleType);
sub_02047F1C(setup, fieldSystem, param1);
encounter = Encounter_New(setup, sub_020475A0(setup), sub_020475B0(setup), NULL);
TaskManager_Call(taskManager, sub_02046758, encounter);
}
void sub_020471C0(TaskManager *taskManager, s32 target, s32 maxLevel, u32 flag) {
FieldSystem *fieldSystem = TaskManager_GetFieldSystem(taskManager);
Encounter *encounter;
BattleSetup *setup;
if (flag != 0) {
setup = BattleSetup_New(HEAP_ID_FIELD, (BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER));
} else {
setup = BattleSetup_New(HEAP_ID_FIELD, (BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLES | BATTLE_TYPE_TRAINER));
}
sub_02047BC0(setup, fieldSystem, maxLevel);
encounter = Encounter_New(setup, sub_020475A0(setup), sub_020475B0(setup), NULL);
encounter->unkC = target;
TaskManager_Call(taskManager, sub_020467FC, encounter);
}

View File

@ -206,7 +206,6 @@ extern u32 ov06_022407DC(void);
extern void ov06_02240790(FieldSystem *fieldSystem, u16 param1, u16 param2, u16 param3);
extern void ov06_022407F8(FieldSystem *fieldSystem, u16 param1, u16 param2, u16 param3);
extern u32 ov06_02240844(void);
extern void sub_02047174(TaskManager *taskManager, u32 *param1, u32 param2);
extern void LocalFieldData_SetDynamicWarp(LocalFieldData *localFieldData, Location *warp);
extern void sub_02080C38(TaskManager *taskManager);
extern Location *LocalFieldData_GetDynamicWarp(LocalFieldData *localFieldData);

View File

@ -31,5 +31,7 @@ void sub_02046F70(FieldSystem *fieldSystem, BattleSetup *setup);
void SetupAndStartFirstBattle(TaskManager *taskManager, u16 species, u8 level);
void SetupAndStartTutorialBattle(TaskManager *taskManager);
void SetupAndStartTrainerBattle(TaskManager *taskManager, u32 opponentTrainer1, u32 opponentTrainer2, u32 followerTrainerNum, HeapID heapId, u32 *winFlag);
void sub_02047174(TaskManager *taskManager, void *param1, u32 battleType);
void sub_020471C0(TaskManager *taskManager, s32 target, s32 maxLevel, u32 flag);
#endif //POKEDIAMOND_ENCOUNTER_H

View File

@ -64,7 +64,7 @@ typedef struct BagScreenAppData {
typedef struct ScrCmdUnkStruct00F4 {
u8 padding[0x2C];
u32 unk2C;
void *unk2C;
} ScrCmdUnkStruct00F4; //todo identify and move to own file
typedef struct LocalFieldData {