diff options
Diffstat (limited to 'src/field')
-rw-r--r-- | src/field/choose_party.c | 3 | ||||
-rw-r--r-- | src/field/daycare.c | 2 | ||||
-rw-r--r-- | src/field/field_control_avatar.c | 2 | ||||
-rw-r--r-- | src/field/field_effect.c | 1 | ||||
-rw-r--r-- | src/field/field_poison.c | 47 | ||||
-rw-r--r-- | src/field/fldeff_poison.c | 4 | ||||
-rw-r--r-- | src/field/pc_screen_effect.c | 17 | ||||
-rw-r--r-- | src/field/pokedex_area_screen.c | 20 | ||||
-rw-r--r-- | src/field/pokenav.c | 16 | ||||
-rw-r--r-- | src/field/use_pokeblock.c | 1 |
10 files changed, 71 insertions, 42 deletions
diff --git a/src/field/choose_party.c b/src/field/choose_party.c index 696f7cf4f..7529c4271 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -1,5 +1,5 @@ #include "global.h" -#include "decoration.h" +#include "event_data.h" #include "field_fadetransition.h" #include "main.h" #include "menu.h" @@ -7,6 +7,7 @@ #include "palette.h" #include "party_menu.h" #include "pokemon_menu.h" +#include "field_weather.h" #include "pokemon.h" #include "pokemon_summary_screen.h" #include "overworld.h" diff --git a/src/field/daycare.c b/src/field/daycare.c index 36dd7ec03..2f0c7281e 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -205,7 +205,7 @@ static u16 TakeSelectedPokemonFromDaycare(struct DayCare * daycare, u8 slot) GetBoxMonNick(&daycare->mons[slot], gStringVar1); species = GetBoxMonData(&daycare->mons[slot], MON_DATA_SPECIES); - sub_803B4B4(&daycare->mons[slot], &pokemon); + ExpandBoxMon(&daycare->mons[slot], &pokemon); if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL) { diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index 48eb64dd7..3ae422512 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -589,7 +589,7 @@ static void happiness_algorithm_step(void) { struct Pokemon *pkmn = gPlayerParty; - for (i = 5; i >= 0; i--) + for (i = 0; i < 6; i++) { AdjustFriendship(pkmn, 5); pkmn++; diff --git a/src/field/field_effect.c b/src/field/field_effect.c index ad570cf7f..e1389c378 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -25,6 +25,7 @@ #include "field_map_obj.h" #include "util.h" #include "field_effect_helpers.h" +#include "pokemon_storage_system.h" #define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))} diff --git a/src/field/field_poison.c b/src/field/field_poison.c index 49678f269..8365351f9 100644 --- a/src/field/field_poison.c +++ b/src/field/field_poison.c @@ -43,7 +43,7 @@ void MonFaintFromPoisonOnField(u8 partyMember) u32 val = 0; AdjustFriendship(pkmn, 7); - SetMonData(pkmn, MON_DATA_STATUS, (u8*)&val); + SetMonData(pkmn, MON_DATA_STATUS, &val); GetMonData(pkmn, MON_DATA_NICKNAME, gStringVar1); StringGetEnd10(gStringVar1); } @@ -60,38 +60,36 @@ bool32 CheckMonFaintedFromPoison(u8 partyMember) return FALSE; } -//Task data -enum -{ - TD_STATE, - TD_PARTY_MEMBER, -}; +#define tState data[0] +#define tPartyMember data[1] void Task_WhiteOut(u8 taskId) { - s16 *taskData = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; - switch (taskData[TD_STATE]) + switch (tState) { - case 0: //Check if Pokemon have fainted due to poison - while (taskData[TD_PARTY_MEMBER] < 6) + case 0: + // Check if any Pokemon have fainted due to poison + while (tPartyMember < 6) { - if (CheckMonFaintedFromPoison(taskData[TD_PARTY_MEMBER])) + if (CheckMonFaintedFromPoison(tPartyMember)) { - MonFaintFromPoisonOnField(taskData[TD_PARTY_MEMBER]); + // Show message about fainted mon + MonFaintFromPoisonOnField(tPartyMember); ShowFieldMessage(fieldPoisonText_PokemonFainted); - taskData[TD_STATE]++; + tState++; return; } - taskData[TD_PARTY_MEMBER]++; + tPartyMember++; } - taskData[TD_STATE] = 2; + tState = 2; break; - case 1: //Wait for message box to disappear + case 1: // Wait for message box to disappear if (IsFieldMessageBoxHidden()) - taskData[TD_STATE]--; //Check next party member + tState--; // Go to previous step and check next party member break; - case 2: //Done checking Pokemon + case 2: // done checking all mons if (AllMonsFainted()) gSpecialVar_Result = 1; else @@ -102,6 +100,9 @@ void Task_WhiteOut(u8 taskId) } } +#undef tState +#undef tPartyMember + void ExecuteWhiteOut(void) { CreateTask(Task_WhiteOut, 0x50); @@ -115,26 +116,28 @@ s32 DoPoisonFieldEffect(void) u32 numFainting = 0; int i; + // count the number of mons that are poisoned and fainting from poison, + // and decrement HP of all poisoned mons for (i = 0; i < 6; i++) { u32 hp; - // UB: Too few arguments for function 'GetMonData' if (GetMonData(pkmn, MON_DATA_SANITY_BIT2) != 0 && pokemon_ailments_get_primary(GetMonData(pkmn, MON_DATA_STATUS)) == 1) { + // decrement HP of poisoned mon hp = GetMonData(pkmn, MON_DATA_HP); if (hp != 0) hp--; if (hp == 0) - numFainting++; //Pokemon will now faint due to poison + numFainting++; SetMonData(pkmn, MON_DATA_HP, &hp); numPoisoned++; } pkmn++; } if (numFainting != 0 || numPoisoned != 0) - DoFieldPoisonEffect(); + FldeffPoison_Start(); if (numFainting != 0) return 2; if (numPoisoned != 0) diff --git a/src/field/fldeff_poison.c b/src/field/fldeff_poison.c index b0052d59d..52afc2516 100644 --- a/src/field/fldeff_poison.c +++ b/src/field/fldeff_poison.c @@ -32,13 +32,13 @@ static void Task_FieldPoisonEffect(u8 taskId) REG_MOSAIC = (data[1] << 4) | data[1]; } -void DoFieldPoisonEffect(void) +void FldeffPoison_Start(void) { PlaySE(SE_DOKU); CreateTask(Task_FieldPoisonEffect, 80); } -bool32 FieldPoisonEffectIsRunning(void) +bool32 FldeffPoison_IsActive(void) { return FuncIsActiveTask(Task_FieldPoisonEffect); } diff --git a/src/field/pc_screen_effect.c b/src/field/pc_screen_effect.c index e0853e01d..dcc3bc9c9 100644 --- a/src/field/pc_screen_effect.c +++ b/src/field/pc_screen_effect.c @@ -2,18 +2,7 @@ #include "main.h" #include "palette.h" #include "sprite.h" - -struct UnkStruct -{ - /*0x00*/ u16 tileTag; - /*0x02*/ u16 paletteTag; - /*0x04*/ u16 unk04; - /*0x06*/ u16 unk06; - /*0x08*/ u16 unk08; - /*0x0A*/ u16 unk0A; - /*0x0C*/ s16 unk0C; - /*0x10*/ u32 selectedPalettes; -}; +#include "pc_screen_effect.h" void sub_80C603C(void); void sub_80C6078(void); @@ -30,7 +19,7 @@ extern const u16 gUnknownPal_083D18EC[16]; extern const u8 gUnknownGfx_083D190C[128]; -EWRAM_DATA struct UnkStruct *gUnknown_020387EC = NULL; +EWRAM_DATA struct PCScreenEffectStruct *gUnknown_020387EC = NULL; const struct SpriteSheet gUnknown_083D1898 = { gUnknownGfx_083D190C, sizeof(gUnknownGfx_083D190C), 0 }; @@ -58,7 +47,7 @@ const struct SpriteTemplate gSpriteTemplate_83D18C0 = sub_80C6130, }; -void sub_80C5CD4(struct UnkStruct *unkStruct) +void sub_80C5CD4(struct PCScreenEffectStruct *unkStruct) { u16 i; diff --git a/src/field/pokedex_area_screen.c b/src/field/pokedex_area_screen.c new file mode 100644 index 000000000..67ca276c4 --- /dev/null +++ b/src/field/pokedex_area_screen.c @@ -0,0 +1,20 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +EWRAM_DATA u16 gUnknown_02039260 = 0; +EWRAM_DATA u16 gUnknown_02039262 = 0; +EWRAM_DATA u16 gUnknown_02039264 = 0; +EWRAM_DATA u16 gUnknown_02039266 = 0; +EWRAM_DATA u16 gUnknown_02039268 = 0; +EWRAM_DATA u16 gUnknown_0203926A = 0; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/src/field/pokenav.c b/src/field/pokenav.c new file mode 100644 index 000000000..f57a98df6 --- /dev/null +++ b/src/field/pokenav.c @@ -0,0 +1,16 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +EWRAM_DATA u8 gUnknown_020388B0[4] = {}; +EWRAM_DATA u16 gUnknown_020388B4 = 0; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 42020c49a..8ea93aab8 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -104,7 +104,6 @@ static EWRAM_DATA struct Pokeblock *gUnknown_0203930C = NULL; EWRAM_DATA u8 gPokeblockMonID = 0; EWRAM_DATA s16 gPokeblockGain = 0; -extern u16 gKeyRepeatStartDelay; extern u16 gSpecialVar_ItemId; // FIXME: remove after merge of #349 Pokeblock static void launch_c3_walk_stairs_and_run_once(void (*const)(void)); |