finish encounter.c

This commit is contained in:
red031000 2023-08-16 23:51:56 +01:00
parent 764a3db869
commit c6dd0efc8c
No known key found for this signature in database
GPG Key ID: D27E50C050AE0CE1
15 changed files with 144 additions and 388 deletions

View File

@ -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

View File

@ -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}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);
}
}
}

View File

@ -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;

View File

@ -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);

View File

@ -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;
};

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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];

View File

@ -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);

View File

@ -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