diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 9c20ef6b4..3bf04500e 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -185,7 +185,6 @@ Static arm9 Object event_data.o Object task.o Object encounter.o - Object encounter_asm.o Object unk_02047500.o Object unk_020476CC.o Object unk_02048120.o diff --git a/arm9/asm/encounter_asm.s b/arm9/asm/encounter_asm.s deleted file mode 100644 index fc4d2f844..000000000 --- a/arm9/asm/encounter_asm.s +++ /dev/null @@ -1,360 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern Encounter_New - .extern sub_02046758 - .extern sub_020467FC - - .text - - thumb_func_start sub_02047220 -sub_02047220: ; 0x02047220 - push {r3-r7, lr} - add r5, r0, #0x0 - bl TaskManager_GetFieldSystem - add r6, r0, #0x0 - add r0, r5, #0x0 - bl TaskManager_GetEnvironment - add r7, r0, #0x0 - add r0, r5, #0x0 - bl TaskManager_GetStatePtr - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - beq _02047246 - cmp r0, #0x1 - beq _02047258 - b _02047262 -_02047246: - ldr r1, _02047268 ; =sub_02046758 - add r0, r5, #0x0 - add r2, r7, #0x0 - bl TaskManager_Call - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - b _02047262 -_02047258: - add r0, r6, #0x0 - bl sub_0204FF5C - mov r0, #0x1 - pop {r3-r7, pc} -_02047262: - mov r0, #0x0 - pop {r3-r7, pc} - nop -_02047268: .word sub_02046758 - - thumb_func_start sub_0204726C -sub_0204726C: ; 0x0204726C - push {r4-r6, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - mov r0, #0xb - add r1, r2, #0x0 - bl BattleSetup_New - add r4, r0, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl sub_02047F1C - 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 r1, _020472AC ; =sub_02047220 - add r0, r5, #0x0 - bl FieldSystem_CreateTask - pop {r4-r6, pc} - nop -_020472AC: .word sub_02047220 - - thumb_func_start sub_020472B0 -sub_020472B0: ; 0x020472B0 - push {r4-r6, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - mov r0, #0xb - add r1, r2, #0x0 - bl BattleSetup_New - add r4, r0, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - mov r3, #0x0 - bl sub_02047D48 - 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 r1, _020472F0 ; =sub_02047220 - add r0, r5, #0x0 - bl FieldSystem_CreateTask - pop {r4-r6, pc} - .balign 4 -_020472F0: .word sub_02047220 - - thumb_func_start sub_020472F4 -sub_020472F4: ; 0x020472F4 - push {r3-r5, lr} - add r4, r0, #0x0 - ldr r0, [r1, #0x0] - mov r3, #0x4 - ldr r2, [r1, #0x14] - tst r3, r0 - bne _020473C8 - mov r3, #0x80 - add r5, r0, #0x0 - tst r5, r3 - bne _020473C8 - cmp r0, #0x0 - beq _02047318 - add r3, #0x80 - cmp r0, r3 - beq _02047318 - cmp r0, #0x4a - bne _02047364 -_02047318: - cmp r2, #0x1 - bne _0204732A - ldr r0, [r4, #0xc] - bl Save_GameStats_Get - mov r1, #0x8 - bl GameStats_AddSpecial - pop {r3-r5, pc} -_0204732A: - cmp r2, #0x4 - bne _020473C8 - ldr r0, [r1, #0x8] - mov r1, #0x0 - bl GetPartyMonByIndex - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - add r1, r0, #0x0 - mov r0, #0x0 - bl sub_0206BB48 - cmp r0, #0x0 - ldr r0, [r4, #0xc] - beq _02047358 - bl Save_GameStats_Get - mov r1, #0x9 - bl GameStats_AddSpecial - pop {r3-r5, pc} -_02047358: - bl Save_GameStats_Get - mov r1, #0xa - bl GameStats_AddSpecial - pop {r3-r5, pc} -_02047364: - mov r3, #0x1 - tst r3, r0 - bne _02047370 - mov r3, #0x10 - tst r3, r0 - beq _02047382 -_02047370: - cmp r2, #0x1 - bne _020473C8 - ldr r0, [r4, #0xc] - bl Save_GameStats_Get - mov r1, #0xb - bl GameStats_AddSpecial - pop {r3-r5, pc} -_02047382: - mov r3, #0x20 - add r5, r0, #0x0 - tst r5, r3 - bne _02047390 - lsl r3, r3, #0x4 - tst r0, r3 - beq _020473C8 -_02047390: - cmp r2, #0x4 - bne _020473C8 - ldr r0, [r1, #0x8] - mov r1, #0x0 - bl GetPartyMonByIndex - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - add r1, r0, #0x0 - mov r0, #0x0 - bl sub_0206BB48 - cmp r0, #0x0 - ldr r0, [r4, #0xc] - beq _020473BE - bl Save_GameStats_Get - mov r1, #0x9 - bl GameStats_AddSpecial - pop {r3-r5, pc} -_020473BE: - bl Save_GameStats_Get - mov r1, #0xa - bl GameStats_AddSpecial -_020473C8: - pop {r3-r5, pc} - .balign 4 - - thumb_func_start sub_020473CC -sub_020473CC: ; 0x020473CC - push {r4-r7, lr} - sub sp, #0xc - add r4, r1, #0x0 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - mov r2, #0x4 - ldr r1, [r4, #0x14] - tst r2, r0 - bne _020473EC - mov r3, #0x80 - add r2, r0, #0x0 - tst r2, r3 - bne _020473EC - lsl r2, r3, #0x2 - tst r2, r0 - beq _020473EE -_020473EC: - b _020474FC -_020473EE: - cmp r0, #0x0 - beq _02047400 - add r3, #0x80 - cmp r0, r3 - beq _02047400 - cmp r0, #0x4a - beq _02047400 - cmp r0, #0x20 - bne _020474D2 -_02047400: - cmp r1, #0x1 - bne _02047470 - add r0, r5, #0x0 - add r0, #0x76 - ldrh r0, [r0, #0x0] - add r1, r0, #0x1 - add r0, r5, #0x0 - add r0, #0x76 - strh r1, [r0, #0x0] - add r0, r5, #0x0 - add r0, #0x76 - ldrh r0, [r0, #0x0] - cmp r0, #0x5 - blo _020474FC - ldr r0, [r4, #0x8] - mov r1, #0x0 - bl GetPartyMonByIndex - add r6, r0, #0x0 - ldr r0, [r5, #0xc] - bl Save_PlayerData_GetIGTAddr - str r0, [sp, #0x4] - add r0, r6, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - add r7, r0, #0x0 - add r0, r6, #0x0 - mov r1, #0x6f - mov r2, #0x0 - bl GetMonData - add r2, r0, #0x0 - mov r3, #0xb - str r3, [sp, #0x0] - lsl r3, r3, #0x5 - ldr r3, [r4, r3] - lsl r1, r7, #0x10 - lsl r2, r2, #0x18 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x4] - lsr r1, r1, #0x10 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - bl sub_0202920C - add r5, #0x98 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - mov r2, #0x2 - bl sub_02028AD4 - add sp, #0xc - pop {r4-r7, pc} -_02047470: - cmp r1, #0x4 - bne _020474FC - mov r0, #0x17 - lsl r0, r0, #0x4 - ldr r0, [r4, r0] - mov r1, #0x0 - lsl r0, r0, #0x2 - add r0, r4, r0 - ldr r0, [r0, #0x4] - bl GetPartyMonByIndex - add r6, r0, #0x0 - ldr r0, [r5, #0xc] - bl Save_PlayerData_GetIGTAddr - str r0, [sp, #0x8] - add r0, r6, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - add r7, r0, #0x0 - add r0, r6, #0x0 - mov r1, #0x6f - mov r2, #0x0 - bl GetMonData - add r2, r0, #0x0 - mov r3, #0xb - str r3, [sp, #0x0] - lsl r3, r3, #0x5 - ldr r3, [r4, r3] - lsl r1, r7, #0x10 - lsl r2, r2, #0x18 - lsl r3, r3, #0x18 - ldr r0, [sp, #0x8] - lsr r1, r1, #0x10 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - bl sub_0202918C - add r5, #0x98 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - mov r2, #0x2 - bl sub_02028AD4 - add sp, #0xc - pop {r4-r7, pc} -_020474D2: - mov r2, #0x1 - tst r2, r0 - bne _020474DE - mov r2, #0x10 - tst r0, r2 - beq _020474FC -_020474DE: - cmp r1, #0x1 - bne _020474FC - ldr r1, [r5, #0x1c] - add r0, r5, #0x0 - ldr r1, [r1, #0x0] - ldr r2, [r4, #0x1c] - add r0, #0x98 - lsl r1, r1, #0x10 - lsl r2, r2, #0x10 - ldr r0, [r0, #0x0] - lsr r1, r1, #0x10 - lsr r2, r2, #0x10 - mov r3, #0xb - bl sub_020299DC -_020474FC: - add sp, #0xc - pop {r4-r7, pc} diff --git a/arm9/asm/unk_0207D5BC.s b/arm9/asm/unk_0207D5BC.s index b15b66e19..57a53e10e 100644 --- a/arm9/asm/unk_0207D5BC.s +++ b/arm9/asm/unk_0207D5BC.s @@ -1188,7 +1188,7 @@ sub_0207DE3C: ; 0x0207DE3C add r1, #0x10 ldrh r1, [r4, r1] ldr r0, [r0, #0x1c] - bl sub_0206BB48 + bl Pokedex_ConvertToCurrentDexNo add r2, r0, #0x0 beq _0207DEFE mov r0, #0x2 diff --git a/arm9/global.inc b/arm9/global.inc index 52cc038ff..ca612999a 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4893,7 +4893,7 @@ .extern SaveArray_Party_Get .extern SaveArray_IsNatDexEnabled .extern Pokedex_IsNatDexEnabled -.extern sub_0206BB48 +.extern Pokedex_ConvertToCurrentDexNo .extern sub_0206BB5C .extern sub_0206BB74 .extern sub_0206BB84 diff --git a/arm9/overlays/14/asm/overlay_14.s b/arm9/overlays/14/asm/overlay_14.s index 1730c48cf..0ca9e6a5e 100644 --- a/arm9/overlays/14/asm/overlay_14.s +++ b/arm9/overlays/14/asm/overlay_14.s @@ -9207,7 +9207,7 @@ ov14_021DBEAC: ; 0x021DBEAC ldr r0, [r6, r0] bl SaveArray_IsNatDexEnabled ldrh r1, [r4, #4] - bl sub_0206BB48 + bl Pokedex_ConvertToCurrentDexNo strh r0, [r4, #8] add r0, r5, #0 mov r1, #0xac diff --git a/arm9/src/encounter.c b/arm9/src/encounter.c index b32d98d5f..6932d644f 100644 --- a/arm9/src/encounter.c +++ b/arm9/src/encounter.c @@ -4,6 +4,7 @@ #include "constants/game_stats.h" #include "event_data.h" #include "field_system.h" +#include "igt.h" #include "task.h" #include "unk_020040F4.h" #include "unk_02022504.h" @@ -50,21 +51,24 @@ extern void StartScriptFromMenu(TaskManager *taskManager, u16 script, LocalMapOb 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); +extern void sub_0204FF5C(FieldSystem *fieldSystem); +extern void sub_02047D48(BattleSetup *setup, FieldSystem *fieldSystem, Party *party, void *param3); +extern void *sub_0202920C(IGT *igt, u16 species, u8 gender, u8 param3, HeapID heapId); +extern void *sub_0202918C(IGT *igt, u16 species, u8 gender, u8 param3, HeapID heapId); +extern void sub_02028AD4(u32 *param0, void *param1, u32 param2); +extern void sub_020299DC(u32 *param0, u16 mapId, u16 trainerId, HeapID heapId); static BOOL sub_0204653C(TaskManager *taskManager); static void sub_02046584(TaskManager *taskManager, BattleSetup *setup); -/*static*/ Encounter *Encounter_New(BattleSetup *setup, s32 effect, s32 bgm, u32 *winFlag); +static Encounter *Encounter_New(BattleSetup *setup, s32 effect, s32 bgm, u32 *winFlag); static void Encounter_Delete(Encounter *encounter); static BOOL GetEncounterResult(Encounter *encounter); static void sub_020465E4(BattleSetup *setup, FieldSystem *fieldSystem); static BOOL Task_StartEncounter(TaskManager *taskManager); static void CallTask_StartEncounter(TaskManager *taskManager, BattleSetup *setup, s32 effect, s32 bgm, u32 *winFlag); static void sub_0204671C(s32 flag, FieldSystem *fieldSystem); -/*static*/ BOOL sub_02046758(TaskManager *taskManager); -/*static*/ BOOL sub_020467FC(TaskManager *taskManager); +static BOOL sub_02046758(TaskManager *taskManager); +static BOOL sub_020467FC(TaskManager *taskManager); static BOOL sub_02046878(TaskManager *taskManager); static void sub_02046928(TaskManager *taskManager, BattleSetup *battleSetup, s32 effect, s32 bgm, u32 *winFlag); static WildEncounter *WildEncounter_New(BattleSetup *setup, s32 effect, s32 bgm, u32 *winFlag); @@ -73,6 +77,9 @@ static BOOL Task_WildEncounter(TaskManager *taskManager); static BOOL Task_SafariEncounter(TaskManager *taskManager); static BOOL Task_PalParkEncounter(TaskManager *taskManager); static BOOL Task_TutorialBattle(TaskManager *taskManager); +static BOOL sub_02047220(TaskManager *taskManager); +static void sub_020472F4(FieldSystem *fieldSystem, BattleSetup *setup); +static void sub_020473CC(FieldSystem *fieldSystem, BattleSetup *setup); static BOOL sub_0204653C(TaskManager *taskManager) { //Task_StartBattle FieldSystem *fieldSystem = TaskManager_GetFieldSystem(taskManager); @@ -98,7 +105,7 @@ static void sub_02046584(TaskManager *taskManager, BattleSetup *setup) { //CallT TaskManager_Call(taskManager, sub_0204653C, setup); } -/*static*/ Encounter *Encounter_New(BattleSetup *setup, s32 effect, s32 bgm, u32 *winFlag) { +static Encounter *Encounter_New(BattleSetup *setup, s32 effect, s32 bgm, u32 *winFlag) { Encounter *encounter = AllocFromHeapAtEnd(HEAP_ID_FIELD, sizeof(Encounter)); encounter->winFlag = winFlag; if (winFlag != NULL) { @@ -199,7 +206,7 @@ static void sub_0204671C(s32 flag, FieldSystem *fieldSystem) { } } -/*static*/ BOOL sub_02046758(TaskManager *taskManager) { //Task_02046758 +static BOOL sub_02046758(TaskManager *taskManager) { //Task_02046758 FieldSystem *fieldSystem = TaskManager_GetFieldSystem(taskManager); Encounter *encounter = TaskManager_GetEnvironment(taskManager); u32 *state = TaskManager_GetStatePtr(taskManager); @@ -231,7 +238,7 @@ static void sub_0204671C(s32 flag, FieldSystem *fieldSystem) { return FALSE; } -/*static*/ BOOL sub_020467FC(TaskManager *taskManager) { +static BOOL sub_020467FC(TaskManager *taskManager) { FieldSystem *fieldSystem = TaskManager_GetFieldSystem(taskManager); Encounter *encounter = TaskManager_GetEnvironment(taskManager); u32 *state = TaskManager_GetStatePtr(taskManager); @@ -699,3 +706,103 @@ void sub_020471C0(TaskManager *taskManager, s32 target, s32 maxLevel, u32 flag) TaskManager_Call(taskManager, sub_020467FC, encounter); } + +static BOOL sub_02047220(TaskManager *taskManager) { + FieldSystem *fieldSystem = TaskManager_GetFieldSystem(taskManager); + Encounter *encounter = TaskManager_GetEnvironment(taskManager); + u32 *state = TaskManager_GetStatePtr(taskManager); + + switch (*state) { + case 0: + TaskManager_Call(taskManager, sub_02046758, encounter); + (*state)++; + break; + case 1: + sub_0204FF5C(fieldSystem); + return TRUE; + } + return FALSE; +} + +void sub_0204726C(FieldSystem *fieldSystem, void *param1, s32 battleType) { + Encounter *encounter; + BattleSetup *setup = BattleSetup_New(HEAP_ID_FIELD, battleType); + + sub_02047F1C(setup, fieldSystem, param1); + + encounter = Encounter_New(setup, sub_020475A0(setup), sub_020475B0(setup), NULL); + + FieldSystem_CreateTask(fieldSystem, sub_02047220, encounter); +} + +void sub_020472B0(FieldSystem *fieldSystem, Party *party, s32 battleType) { + Encounter *encounter; + BattleSetup *setup = BattleSetup_New(HEAP_ID_FIELD, battleType); + + sub_02047D48(setup, fieldSystem, party, NULL); + + encounter = Encounter_New(setup, sub_020475A0(setup), sub_020475B0(setup), NULL); + + FieldSystem_CreateTask(fieldSystem, sub_02047220, encounter); +} + +static void sub_020472F4(FieldSystem *fieldSystem, BattleSetup *setup) { + Pokemon *mon; + u32 battleType = setup->flags; + u32 winFlag = setup->winFlag; + + if (battleType & BATTLE_TYPE_LINK || battleType & BATTLE_TYPE_TOWER) { + return; + } + + if (battleType == BATTLE_TYPE_NONE || battleType == BATTLE_TYPE_8 || battleType == (BATTLE_TYPE_DOUBLES | BATTLE_TYPE_MULTI | BATTLE_TYPE_6)) { + if (winFlag == 1) { + GameStats_AddSpecial(Save_GameStats_Get(fieldSystem->saveData), GAME_STAT_UNK8); + } else if (winFlag == 4) { + mon = GetPartyMonByIndex(setup->party[BATTLER_ENEMY], 0); + if (Pokedex_ConvertToCurrentDexNo(FALSE, GetMonData(mon, MON_DATA_SPECIES, NULL)) != 0) { + GameStats_AddSpecial(Save_GameStats_Get(fieldSystem->saveData), GAME_STAT_UNK9); + } else { + GameStats_AddSpecial(Save_GameStats_Get(fieldSystem->saveData), GAME_STAT_UNK10); + } + } + } else if ((battleType & BATTLE_TYPE_TRAINER) || (battleType & BATTLE_TYPE_INGAME_PARTNER)) { + if (winFlag == 1) { + GameStats_AddSpecial(Save_GameStats_Get(fieldSystem->saveData), GAME_STAT_UNK11); + } + } else if ((battleType & BATTLE_TYPE_SAFARI || battleType & BATTLE_TYPE_PAL_PARK) && winFlag == 4) { + mon = GetPartyMonByIndex(setup->party[BATTLER_ENEMY], 0); + if (Pokedex_ConvertToCurrentDexNo(FALSE, GetMonData(mon, MON_DATA_SPECIES, NULL)) != 0) { + GameStats_AddSpecial(Save_GameStats_Get(fieldSystem->saveData), GAME_STAT_UNK9); + } else { + GameStats_AddSpecial(Save_GameStats_Get(fieldSystem->saveData), GAME_STAT_UNK10); + } + } +} + +static void sub_020473CC(FieldSystem *fieldSystem, BattleSetup *setup) { + Pokemon *mon; + u32 battleType = setup->flags; + u32 winFlag = setup->winFlag; + + if (battleType & BATTLE_TYPE_LINK || battleType & BATTLE_TYPE_TOWER || battleType & BATTLE_TYPE_PAL_PARK) { + return; + } + if (battleType == BATTLE_TYPE_NONE || battleType == BATTLE_TYPE_8 || battleType == (BATTLE_TYPE_DOUBLES | BATTLE_TYPE_MULTI | BATTLE_TYPE_6) || battleType == BATTLE_TYPE_SAFARI) { + if (winFlag == 1) { + fieldSystem->unk76++; + if (fieldSystem->unk76 < 5) { + return; + } + mon = GetPartyMonByIndex(setup->party[BATTLER_ENEMY], 0); + sub_02028AD4(fieldSystem->unk98, sub_0202920C(Save_PlayerData_GetIGTAddr(fieldSystem->saveData), GetMonData(mon, MON_DATA_SPECIES, NULL), GetMonData(mon, MON_DATA_GENDER, NULL), setup->unk160, HEAP_ID_FIELD), 2); + } else if (winFlag == 4) { + mon = GetPartyMonByIndex(setup->party[setup->unk170], 0); + sub_02028AD4(fieldSystem->unk98, sub_0202918C(Save_PlayerData_GetIGTAddr(fieldSystem->saveData), GetMonData(mon, MON_DATA_SPECIES, NULL), GetMonData(mon, MON_DATA_GENDER, NULL), setup->unk160, HEAP_ID_FIELD), 2); + } + } else if ((battleType & BATTLE_TYPE_TRAINER) || (battleType & BATTLE_TYPE_INGAME_PARTNER)) { + if (winFlag == 1) { + sub_020299DC(fieldSystem->unk98, fieldSystem->location->mapId, setup->trainerId[BATTLER_ENEMY], HEAP_ID_FIELD); + } + } +} diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 37eae2fc8..3ddf4012c 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -134,7 +134,7 @@ extern void *sub_02037C00(u32 param0, FieldSystem *fieldSystem, u16 param2); extern u16 sub_02037A78(void *runningAppData); extern u16 ov05_021E1858(FieldSystem *fieldSystem, LocalMapObject *event, u16 param2); extern void *sub_02029048(u32 param0); -extern void sub_02028AD4(u32 *param0, void *param1, BOOL param2); +extern void sub_02028AD4(u32 *param0, void *param1, u32 param2); extern SaveFashionData *Save_FashionData_Get(SaveData *save); extern BOOL CheckPortraitSlotFull(SaveFashionData *fashionData, u32 portraitSlot); extern BOOL CheckContestPortraitSlotFull(SaveFashionData *fashionData, u32 portraitSlot); @@ -2123,7 +2123,7 @@ static BOOL sub_0203BBBC(ScriptContext *ctx) { return FALSE; } if (pcBoxData->unk08 == TRUE) { - sub_02028AD4(fieldSystem->unk98, sub_02029048(11), TRUE); + sub_02028AD4(fieldSystem->unk98, sub_02029048(11), 1); } FreeToHeap(*pcBoxDataPtr); *pcBoxDataPtr = NULL; @@ -3636,18 +3636,18 @@ BOOL ScrCmd_Unk01CD(ScriptContext *ctx) { //01CD u16 unk3 = ScriptGetVar(ctx); u16 unk4 = ScriptGetVar(ctx); void **miscDataPtr = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_MISC_DATA_PTR); //todo: identify this - BOOL unk5; //this will literally always be true... GF why? + u32 unk5; //this will literally always be 1... GF why? switch ((unk0 - 16)) { case 0: - unk5 = TRUE; + unk5 = 1; *miscDataPtr = sub_02029120(4); break; case 1: - unk5 = TRUE; + unk5 = 1; *miscDataPtr = sub_0202912C(4); break; case 2: - unk5 = TRUE; + unk5 = 1; *miscDataPtr = sub_02029138(unk1, 4); break; case 3: @@ -3657,7 +3657,7 @@ BOOL ScrCmd_Unk01CD(ScriptContext *ctx) { //01CD case 8: case 9: case 10: - unk5 = TRUE; + unk5 = 1; *miscDataPtr = sub_0202914C(unk0 - 19, unk1, 4); break; default: @@ -3814,7 +3814,7 @@ BOOL ScrCmd_EnableDisableSafariZone(ScriptContext *ctx) { //0202 case 1: //disable Save_VarsFlags_ClearSafariSysFlag(varsFlags); sub_02061574(ctx->fieldSystem); - sub_02028AD4(ctx->fieldSystem->unk98, sub_0202912C(4), TRUE); + sub_02028AD4(ctx->fieldSystem->unk98, sub_0202912C(4), 1); *safariBalls = 0; *safariSteps = 0; break; diff --git a/arm9/src/unk_0206BB28.c b/arm9/src/unk_0206BB28.c index 8a37db592..f64b3b624 100644 --- a/arm9/src/unk_0206BB28.c +++ b/arm9/src/unk_0206BB28.c @@ -14,7 +14,7 @@ BOOL Pokedex_IsNatDexEnabled(struct Pokedex * pokedex) return Pokedex_GetNatDexFlag(pokedex) == TRUE; } -u32 sub_0206BB48(BOOL isNationalDex, u32 species) +u32 Pokedex_ConvertToCurrentDexNo(BOOL isNationalDex, u32 species) { if (!isNationalDex) species = SpeciesToSinnohDexNo((u16)species); diff --git a/include/battle_setup.h b/include/battle_setup.h index c3c9dbcf7..53dee0a29 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -23,7 +23,11 @@ struct BattleSetup { u8 padding2[0xC]; u32 unk150; u32 unk154; - u8 padding3[0x34]; + u8 padding3[0x8]; + u32 unk160; + u8 padding4[0xC]; + u32 unk170; + u8 padding5[0x18]; u32 unk18C; }; diff --git a/include/constants/game_stats.h b/include/constants/game_stats.h index ff65a3b9f..099ecd160 100644 --- a/include/constants/game_stats.h +++ b/include/constants/game_stats.h @@ -3,6 +3,9 @@ #define GAME_STAT_UNK7 7 #define GAME_STAT_UNK8 8 +#define GAME_STAT_UNK9 9 +#define GAME_STAT_UNK10 10 +#define GAME_STAT_UNK11 11 #define GAME_STAT_UNK21 21 #endif //POKEDIAMOND_CONSTANTS_GAME_STATS_H \ No newline at end of file diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index e71bafbfe..944b245e6 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -225,7 +225,7 @@ #define MON_DATA_HOENN_WORLD_RIBBON 109 #define MON_DATA_FATEFUL_ENCOUNTER 110 #define MON_DATA_GENDER 111 -#define MON_DATA_FORM 112 +#define MON_DATA_FORM 112 #define MON_DATA_RESERVED_113 113 // HGSS #define MON_DATA_RESERVED_114 114 // Plat #define MON_DATA_UNUSED_115 115 diff --git a/include/encounter.h b/include/encounter.h index 5fa1bb3c9..4d2a3c08a 100644 --- a/include/encounter.h +++ b/include/encounter.h @@ -33,5 +33,7 @@ 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); +void sub_0204726C(FieldSystem *fieldSystem, void *param1, s32 battleType); +void sub_020472B0(FieldSystem *fieldSystem, Party *party, s32 battleType); #endif //POKEDIAMOND_ENCOUNTER_H \ No newline at end of file diff --git a/include/field_system.h b/include/field_system.h index 3858a563c..60304057e 100644 --- a/include/field_system.h +++ b/include/field_system.h @@ -57,7 +57,8 @@ typedef struct FieldSystem PlayerAvatar *playerAvatar; u8 padding4[0x24]; u32 unk60; - u8 padding5[0x14]; + u8 padding5[0x12]; + u16 unk76; u32 unk78; u32 unk7C; u8 padding6[0x10]; diff --git a/include/igt.h b/include/igt.h index bf5e5a63b..4d88d2095 100644 --- a/include/igt.h +++ b/include/igt.h @@ -1,12 +1,12 @@ #ifndef POKEDIAMOND_IGT_H #define POKEDIAMOND_IGT_H -struct IGT +typedef struct IGT { u16 hours; u8 minutes; u8 seconds; -}; +} IGT; void InitIGT(struct IGT * igt); void AddIGTSeconds(struct IGT * igt, u32 seconds); diff --git a/include/unk_0206BB28.h b/include/unk_0206BB28.h index 3c28c2727..3a3c6bef0 100644 --- a/include/unk_0206BB28.h +++ b/include/unk_0206BB28.h @@ -7,6 +7,6 @@ BOOL SaveArray_IsNatDexEnabled(struct SaveData * save); BOOL Pokedex_IsNatDexEnabled(struct Pokedex * pokedex); -u32 sub_0206BB48(BOOL isNationalDex, u32 species); +u32 Pokedex_ConvertToCurrentDexNo(BOOL isNationalDex, u32 species); #endif //POKEDIAMOND_UNK_0206BB28_H