mirror of
https://github.com/pret/pokediamond.git
synced 2024-10-07 03:03:25 +00:00
finish encounter.c
This commit is contained in:
parent
764a3db869
commit
c6dd0efc8c
@ -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
|
||||
|
@ -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}
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -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
|
@ -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];
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user