From cd7c3476d51379a622210973be817ab783eabfa0 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Mon, 23 Oct 2017 00:34:55 -0500 Subject: Rename script commands again --- src/battle_2.c | 10 +----- src/scrcmd.c | 102 ++++++++++++++++++++++++++++----------------------------- 2 files changed, 52 insertions(+), 60 deletions(-) (limited to 'src') diff --git a/src/battle_2.c b/src/battle_2.c index aeba69213..cee845c75 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -43,6 +43,7 @@ #include "tv.h" #include "safari_zone.h" #include "battle_string_ids.h" +#include "data2.h" struct UnknownStruct6 { @@ -2481,15 +2482,6 @@ static void sub_80398D0(struct Sprite *sprite) } } -// to get rid of once the struct is declared in a header -struct MonCoords -{ - // This would use a bitfield, but sub_8079F44 - // uses it as a u8 and casting won't match. - u8 coords; // u8 x:4, y:4; - u8 y_offset; -}; - extern const struct MonCoords gMonFrontPicCoords[]; extern const struct MonCoords gCastformFrontSpriteCoords[]; diff --git a/src/scrcmd.c b/src/scrcmd.c index af314609c..219dfebd0 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -495,7 +495,7 @@ bool8 ScrCmd_random(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_additem(struct ScriptContext *ctx) +bool8 ScrCmd_giveitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -504,7 +504,7 @@ bool8 ScrCmd_additem(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_removeitem(struct ScriptContext *ctx) +bool8 ScrCmd_takeitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -539,7 +539,7 @@ bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_addpcitem(struct ScriptContext *ctx) +bool8 ScrCmd_givepcitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -557,7 +557,7 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_adddecor(struct ScriptContext *ctx) +bool8 ScrCmd_givedecoration(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -565,7 +565,7 @@ bool8 ScrCmd_adddecor(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_removedecor(struct ScriptContext *ctx) +bool8 ScrCmd_takedecoration(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -573,7 +573,7 @@ bool8 ScrCmd_removedecor(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) +bool8 ScrCmd_checkdecorspace(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -581,7 +581,7 @@ bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_hasdecor(struct ScriptContext *ctx) +bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -613,14 +613,14 @@ bool8 ScrCmd_incrementgamestat(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_animdarklevel(struct ScriptContext *ctx) +bool8 ScrCmd_animateflash(struct ScriptContext *ctx) { sub_80B009C(ScriptReadByte(ctx)); ScriptContext1_Stop(); return TRUE; } -bool8 ScrCmd_setdarklevel(struct ScriptContext *ctx) +bool8 ScrCmd_setflashradius(struct ScriptContext *ctx) { u16 flashLevel = VarGet(ScriptReadHalfword(ctx)); @@ -643,12 +643,12 @@ bool8 ScrCmd_fadescreen(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx) +bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx) { u8 mode = ScriptReadByte(ctx); - u8 delay = ScriptReadByte(ctx); + u8 speed = ScriptReadByte(ctx); - fade_screen(mode, delay); + fade_screen(mode, speed); SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; } @@ -736,7 +736,7 @@ bool8 ScrCmd_doweather(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_tileeffect(struct ScriptContext *ctx) +bool8 ScrCmd_setstepcallback(struct ScriptContext *ctx) { ActivatePerStepCallback(ScriptReadByte(ctx)); return FALSE; @@ -907,7 +907,7 @@ bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_countpokemon(struct ScriptContext *ctx) +bool8 ScrCmd_getpartysize(struct ScriptContext *ctx) { gScriptResult = CalculatePlayerPartyCount(); return FALSE; @@ -1121,7 +1121,7 @@ bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_showobject(struct ScriptContext *ctx) +bool8 ScrCmd_showobject_at(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -1131,7 +1131,7 @@ bool8 ScrCmd_showobject(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_hideobject(struct ScriptContext *ctx) +bool8 ScrCmd_hideobject_at(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -1339,7 +1339,7 @@ static bool8 WaitForAorBPress(void) return FALSE; } -bool8 ScrCmd_waitbutton(struct ScriptContext *ctx) +bool8 ScrCmd_waitbuttonpress(struct ScriptContext *ctx) { SetupNativeScript(ctx, WaitForAorBPress); return TRUE; @@ -1454,7 +1454,7 @@ bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_drawpokepic(struct ScriptContext *ctx) +bool8 ScrCmd_showmonpic(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u8 x = ScriptReadByte(ctx); @@ -1464,7 +1464,7 @@ bool8 ScrCmd_drawpokepic(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_erasepokepic(struct ScriptContext *ctx) +bool8 ScrCmd_hidemonpic(struct ScriptContext *ctx) { bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc(); @@ -1474,7 +1474,7 @@ bool8 ScrCmd_erasepokepic(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_drawcontestwinner(struct ScriptContext *ctx) +bool8 ScrCmd_showcontestwinner(struct ScriptContext *ctx) { u8 v1 = ScriptReadByte(ctx); @@ -1694,7 +1694,7 @@ bool8 ScrCmd_vmessage(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getspeciesname(struct ScriptContext *ctx) +bool8 ScrCmd_bufferspeciesname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 species = VarGet(ScriptReadHalfword(ctx)); @@ -1703,7 +1703,7 @@ bool8 ScrCmd_getspeciesname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getfirstpartypokename(struct ScriptContext *ctx) +bool8 ScrCmd_bufferleadmonspeciesname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); @@ -1714,7 +1714,7 @@ bool8 ScrCmd_getfirstpartypokename(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getpartypokename(struct ScriptContext *ctx) +bool8 ScrCmd_bufferpartymonnick(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); @@ -1724,7 +1724,7 @@ bool8 ScrCmd_getpartypokename(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getitemname(struct ScriptContext *ctx) +bool8 ScrCmd_bufferitemname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 itemId = VarGet(ScriptReadHalfword(ctx)); @@ -1733,7 +1733,7 @@ bool8 ScrCmd_getitemname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getitemnameplural(struct ScriptContext *ctx) +bool8 ScrCmd_bufferitemnameplural(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 itemId = VarGet(ScriptReadHalfword(ctx)); @@ -1743,7 +1743,7 @@ bool8 ScrCmd_getitemnameplural(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getdecorname(struct ScriptContext *ctx) +bool8 ScrCmd_bufferdecorationname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -1752,7 +1752,7 @@ bool8 ScrCmd_getdecorname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getmovename(struct ScriptContext *ctx) +bool8 ScrCmd_buffermovename(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 moveId = VarGet(ScriptReadHalfword(ctx)); @@ -1761,7 +1761,7 @@ bool8 ScrCmd_getmovename(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getnumberstring(struct ScriptContext *ctx) +bool8 ScrCmd_buffernumberstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 v1 = VarGet(ScriptReadHalfword(ctx)); @@ -1771,7 +1771,7 @@ bool8 ScrCmd_getnumberstring(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getstdstring(struct ScriptContext *ctx) +bool8 ScrCmd_bufferstdstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); @@ -1780,7 +1780,7 @@ bool8 ScrCmd_getstdstring(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getcontesttype(struct ScriptContext *ctx) +bool8 ScrCmd_buffercontesttype(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); @@ -1789,7 +1789,7 @@ bool8 ScrCmd_getcontesttype(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getstring(struct ScriptContext *ctx) +bool8 ScrCmd_bufferstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); const u8 *text = (u8 *)ScriptReadWord(ctx); @@ -1806,7 +1806,7 @@ bool8 ScrCmd_vloadword(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_vgetstring(struct ScriptContext *ctx) +bool8 ScrCmd_vbufferstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u32 addr = ScriptReadWord(ctx); @@ -1817,7 +1817,7 @@ bool8 ScrCmd_vgetstring(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getboxname(struct ScriptContext *ctx) +bool8 ScrCmd_bufferboxname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 boxId = VarGet(ScriptReadHalfword(ctx)); @@ -1826,7 +1826,7 @@ bool8 ScrCmd_getboxname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_givepoke(struct ScriptContext *ctx) +bool8 ScrCmd_givemon(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u8 level = ScriptReadByte(ctx); @@ -1847,7 +1847,7 @@ bool8 ScrCmd_giveegg(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_setpokemove(struct ScriptContext *ctx) +bool8 ScrCmd_setmonmove(struct ScriptContext *ctx) { u8 partyIndex = ScriptReadByte(ctx); u8 slot = ScriptReadByte(ctx); @@ -1857,7 +1857,7 @@ bool8 ScrCmd_setpokemove(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_checkpokemove(struct ScriptContext *ctx) +bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx) { u8 i; u16 moveId = ScriptReadHalfword(ctx); @@ -1973,7 +1973,7 @@ bool8 ScrCmd_trainerbattle(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_battlebegin(struct ScriptContext *ctx) +bool8 ScrCmd_dotrainerbattle(struct ScriptContext *ctx) { BattleSetup_StartTrainerBattle(); return TRUE; @@ -2041,7 +2041,7 @@ bool8 ScrCmd_pokemart(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx) +bool8 ScrCmd_pokemartdecoration(struct ScriptContext *ctx) { const void *ptr = (void *)ScriptReadWord(ctx); @@ -2050,7 +2050,7 @@ bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_pokemartbp(struct ScriptContext *ctx) +bool8 ScrCmd_pokemartdecoration2(struct ScriptContext *ctx) { const void *ptr = (void *)ScriptReadWord(ctx); @@ -2068,7 +2068,7 @@ bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_plantberrytree(struct ScriptContext *ctx) +bool8 ScrCmd_setberrytree(struct ScriptContext *ctx) { u8 treeId = ScriptReadByte(ctx); u8 berry = ScriptReadByte(ctx); @@ -2127,7 +2127,7 @@ bool8 ScrCmd_dofieldeffect(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_setfieldeffect(struct ScriptContext *ctx) +bool8 ScrCmd_setfieldeffectarg(struct ScriptContext *ctx) { u8 argNum = ScriptReadByte(ctx); @@ -2150,7 +2150,7 @@ bool8 ScrCmd_waitfieldeffect(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_sethealplace(struct ScriptContext *ctx) +bool8 ScrCmd_setrespawn(struct ScriptContext *ctx) { u16 healLocationId = VarGet(ScriptReadHalfword(ctx)); @@ -2164,7 +2164,7 @@ bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_playpokecry(struct ScriptContext *ctx) +bool8 ScrCmd_playmoncry(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u16 mode = VarGet(ScriptReadHalfword(ctx)); @@ -2173,13 +2173,13 @@ bool8 ScrCmd_playpokecry(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_waitpokecry(struct ScriptContext *ctx) +bool8 ScrCmd_waitmoncry(struct ScriptContext *ctx) { SetupNativeScript(ctx, IsCryFinished); return TRUE; } -bool8 ScrCmd_setmaptile(struct ScriptContext *ctx) +bool8 ScrCmd_setmetatile(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); @@ -2353,8 +2353,8 @@ bool8 ScrCmd_cmdD9(struct ScriptContext *ctx) } } -// This command will force the Pokémon to be obedient, you don't get to choose which value to set its obedience to -bool8 ScrCmd_setpokeobedient(struct ScriptContext *ctx) +// This command will force the Pokémon to be obedient, you don't get to make it disobedient +bool8 ScrCmd_setmonobedient(struct ScriptContext *ctx) { bool8 obedient = TRUE; u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); @@ -2363,7 +2363,7 @@ bool8 ScrCmd_setpokeobedient(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_checkpokeobedience(struct ScriptContext *ctx) +bool8 ScrCmd_checkmonobedience(struct ScriptContext *ctx) { u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); @@ -2398,7 +2398,7 @@ bool8 ScrCmd_warpD1(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_setpokemetlocation(struct ScriptContext *ctx) +bool8 ScrCmd_setmonmetlocation(struct ScriptContext *ctx) { u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); u8 location = ScriptReadByte(ctx); @@ -2414,7 +2414,7 @@ void sub_809BDB4(void) RemoveWindow(gUnknown_03000F30); } -bool8 ScrCmd_gettrainerclass(struct ScriptContext *ctx) +bool8 ScrCmd_buffertrainerclassname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 trainerClassId = VarGet(ScriptReadHalfword(ctx)); @@ -2423,7 +2423,7 @@ bool8 ScrCmd_gettrainerclass(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_gettrainername(struct ScriptContext *ctx) +bool8 ScrCmd_buffertrainername(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 trainerClassId = VarGet(ScriptReadHalfword(ctx)); -- cgit v1.2.3 From 6fcde15bb671db34dd1f17406ee20f319595b6a5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Oct 2017 20:43:33 -0400 Subject: Decompile heal location data --- src/heal_location.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/heal_location.c (limited to 'src') diff --git a/src/heal_location.c b/src/heal_location.c new file mode 100644 index 000000000..39d9a423d --- /dev/null +++ b/src/heal_location.c @@ -0,0 +1,53 @@ + +// Includes +#include "global.h" +#include "map_constants.h" +#include "sprite.h" +#include "heal_location.h" + +#define HEAL_LOCATION(map, x, y) {MAP_GROUP_##map, MAP_ID_##map, x, y} + +// Static type declarations + +// Static RAM declarations + +// Static ROM declarations + +// .rodata + +const struct { + const union AffineAnimCmd *const *const affineAnims; + void (* callback)(struct Sprite *sprite); +} gUnknown_0859F534 = { + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +const struct HealLocation gUnknown_0859F53C[] = { + HEAL_LOCATION(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, 4, 2), + HEAL_LOCATION(LITTLEROOT_TOWN_MAYS_HOUSE_2F, 4, 2), + HEAL_LOCATION(PETALBURG_CITY, 20, 17), + HEAL_LOCATION(SLATEPORT_CITY, 19, 20), + HEAL_LOCATION(MAUVILLE_CITY, 22, 6), + HEAL_LOCATION(RUSTBORO_CITY, 16, 39), + HEAL_LOCATION(FORTREE_CITY, 5, 7), + HEAL_LOCATION(LILYCOVE_CITY, 24, 15), + HEAL_LOCATION(MOSSDEEP_CITY, 28, 17), + HEAL_LOCATION(SOOTOPOLIS_CITY, 43, 32), + HEAL_LOCATION(EVER_GRANDE_CITY, 27, 49), + HEAL_LOCATION(LITTLEROOT_TOWN, 5, 9), + HEAL_LOCATION(LITTLEROOT_TOWN, 14, 9), + HEAL_LOCATION(OLDALE_TOWN, 6, 17), + HEAL_LOCATION(DEWFORD_TOWN, 2, 11), + HEAL_LOCATION(LAVARIDGE_TOWN, 9, 7), + HEAL_LOCATION(FALLARBOR_TOWN, 14, 8), + HEAL_LOCATION(VERDANTURF_TOWN, 16, 4), + HEAL_LOCATION(PACIFIDLOG_TOWN, 8, 16), + HEAL_LOCATION(EVER_GRANDE_CITY, 18, 6), + HEAL_LOCATION(SOUTHERN_ISLAND_EXTERIOR, 15, 20), + HEAL_LOCATION(BATTLE_FRONTIER_OUTSIDE_EAST, 3, 52) +}; + +const u16 gUnknown_0859F5EC[] = INCBIN_U16("graphics/unknown/unk_859f5ec.gbapal"); + +// .text -- cgit v1.2.3 From 00f4bba6d8b5fac98fd62143743b70e774edda6a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Oct 2017 20:55:01 -0400 Subject: Decompile heal location functions --- src/heal_location.c | 49 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/heal_location.c b/src/heal_location.c index 39d9a423d..206acaf99 100644 --- a/src/heal_location.c +++ b/src/heal_location.c @@ -15,14 +15,6 @@ // .rodata -const struct { - const union AffineAnimCmd *const *const affineAnims; - void (* callback)(struct Sprite *sprite); -} gUnknown_0859F534 = { - gDummySpriteAffineAnimTable, - SpriteCallbackDummy -}; - const struct HealLocation gUnknown_0859F53C[] = { HEAL_LOCATION(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, 4, 2), HEAL_LOCATION(LITTLEROOT_TOWN_MAYS_HOUSE_2F, 4, 2), @@ -48,6 +40,45 @@ const struct HealLocation gUnknown_0859F53C[] = { HEAL_LOCATION(BATTLE_FRONTIER_OUTSIDE_EAST, 3, 52) }; -const u16 gUnknown_0859F5EC[] = INCBIN_U16("graphics/unknown/unk_859f5ec.gbapal"); +#define NUM_HEAL_LOCATIONS (ARRAY_COUNT(gUnknown_0859F53C)) // .text + +u32 sub_8122C5C(u16 mapGroup, u16 mapNum) +{ + u32 i; + + for (i = 0; i < NUM_HEAL_LOCATIONS; i ++) + { + if (gUnknown_0859F53C[i].group == mapGroup && gUnknown_0859F53C[i].map == mapNum) + { + return i + 1; + } + } + return 0; +} + +const struct HealLocation *sub_8122C94(u16 mapGroup, u16 mapNum) +{ + u32 loc; + + loc = sub_8122C5C(mapGroup, mapNum); + if (loc == 0) + { + return NULL; + } + return &gUnknown_0859F53C[loc - 1]; +} + +const struct HealLocation *sub_8122CBC(u32 loc) +{ + if (loc == 0) + { + return NULL; + } + if (loc > NUM_HEAL_LOCATIONS) + { + return NULL; + } + return &gUnknown_0859F53C[loc - 1]; +} -- cgit v1.2.3 From bbda7125f6286ea2fd47180018dbbe1a451fbf72 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Oct 2017 21:43:06 -0400 Subject: Rename functions --- src/heal_location.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/heal_location.c b/src/heal_location.c index 206acaf99..b2f50c1f9 100644 --- a/src/heal_location.c +++ b/src/heal_location.c @@ -15,7 +15,7 @@ // .rodata -const struct HealLocation gUnknown_0859F53C[] = { +static const struct HealLocation sSpawnLocations[] = { HEAL_LOCATION(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, 4, 2), HEAL_LOCATION(LITTLEROOT_TOWN_MAYS_HOUSE_2F, 4, 2), HEAL_LOCATION(PETALBURG_CITY, 20, 17), @@ -40,17 +40,17 @@ const struct HealLocation gUnknown_0859F53C[] = { HEAL_LOCATION(BATTLE_FRONTIER_OUTSIDE_EAST, 3, 52) }; -#define NUM_HEAL_LOCATIONS (ARRAY_COUNT(gUnknown_0859F53C)) +#define NUM_HEAL_LOCATIONS (ARRAY_COUNT(sSpawnLocations)) // .text -u32 sub_8122C5C(u16 mapGroup, u16 mapNum) +static u32 GetHealLocationIndexFromMapGroupAndNum(u16 mapGroup, u16 mapNum) { u32 i; for (i = 0; i < NUM_HEAL_LOCATIONS; i ++) { - if (gUnknown_0859F53C[i].group == mapGroup && gUnknown_0859F53C[i].map == mapNum) + if (sSpawnLocations[i].group == mapGroup && sSpawnLocations[i].map == mapNum) { return i + 1; } @@ -58,19 +58,19 @@ u32 sub_8122C5C(u16 mapGroup, u16 mapNum) return 0; } -const struct HealLocation *sub_8122C94(u16 mapGroup, u16 mapNum) +const struct HealLocation *GetHealLocationPointerFromMapGroupAndNum(u16 mapGroup, u16 mapNum) { u32 loc; - loc = sub_8122C5C(mapGroup, mapNum); + loc = GetHealLocationIndexFromMapGroupAndNum(mapGroup, mapNum); if (loc == 0) { return NULL; } - return &gUnknown_0859F53C[loc - 1]; + return &sSpawnLocations[loc - 1]; } -const struct HealLocation *sub_8122CBC(u32 loc) +const struct HealLocation *GetHealLocationPointer(u32 loc) { if (loc == 0) { @@ -80,5 +80,5 @@ const struct HealLocation *sub_8122CBC(u32 loc) { return NULL; } - return &gUnknown_0859F53C[loc - 1]; + return &sSpawnLocations[loc - 1]; } -- cgit v1.2.3 From 27cee8bcf1e0215dd9480a83af752d849e644cf1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Oct 2017 21:44:52 -0400 Subject: Remove unnecessary include --- src/heal_location.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/heal_location.c b/src/heal_location.c index b2f50c1f9..e31a30fb4 100644 --- a/src/heal_location.c +++ b/src/heal_location.c @@ -2,7 +2,6 @@ // Includes #include "global.h" #include "map_constants.h" -#include "sprite.h" #include "heal_location.h" #define HEAL_LOCATION(map, x, y) {MAP_GROUP_##map, MAP_ID_##map, x, y} @@ -15,7 +14,7 @@ // .rodata -static const struct HealLocation sSpawnLocations[] = { +static const struct HealLocation sHealLocations[] = { HEAL_LOCATION(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, 4, 2), HEAL_LOCATION(LITTLEROOT_TOWN_MAYS_HOUSE_2F, 4, 2), HEAL_LOCATION(PETALBURG_CITY, 20, 17), @@ -40,7 +39,7 @@ static const struct HealLocation sSpawnLocations[] = { HEAL_LOCATION(BATTLE_FRONTIER_OUTSIDE_EAST, 3, 52) }; -#define NUM_HEAL_LOCATIONS (ARRAY_COUNT(sSpawnLocations)) +#define NUM_HEAL_LOCATIONS (ARRAY_COUNT(sHealLocations)) // .text @@ -50,7 +49,7 @@ static u32 GetHealLocationIndexFromMapGroupAndNum(u16 mapGroup, u16 mapNum) for (i = 0; i < NUM_HEAL_LOCATIONS; i ++) { - if (sSpawnLocations[i].group == mapGroup && sSpawnLocations[i].map == mapNum) + if (sHealLocations[i].group == mapGroup && sHealLocations[i].map == mapNum) { return i + 1; } @@ -67,7 +66,7 @@ const struct HealLocation *GetHealLocationPointerFromMapGroupAndNum(u16 mapGroup { return NULL; } - return &sSpawnLocations[loc - 1]; + return &sHealLocations[loc - 1]; } const struct HealLocation *GetHealLocationPointer(u32 loc) @@ -80,5 +79,5 @@ const struct HealLocation *GetHealLocationPointer(u32 loc) { return NULL; } - return &sSpawnLocations[loc - 1]; + return &sHealLocations[loc - 1]; } -- cgit v1.2.3 From 4049ed7e2c6bef50f2551cc846e0b428fdf51bd1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Oct 2017 22:03:33 -0400 Subject: Rename REGION_MAP constants to adopt MAPSEC names from Ruby --- src/decoration.c | 4 ++-- src/tv.c | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/decoration.c b/src/decoration.c index 0179d36a1..b435c3db5 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1603,7 +1603,7 @@ void sub_81289F0(u8 taskId) ScriptContext1_SetupScript(gUnknown_08275D1F); } gSprites[sDecor_CameraSpriteObjectIdx1].pos1.y += 2; - if (gMapHeader.regionMapSectionId == REGION_MAP_SECRET_BASE) + if (gMapHeader.regionMapSectionId == MAPSEC_SECRET_BASE) { TV_PutSecretBaseVisitOnTheAir(); } @@ -2222,7 +2222,7 @@ void sub_81298EC(u8 taskId) { StringExpandPlaceholders(gStringVar4, gText_DecorationReturnedToPC); DisplayItemMessageOnField(taskId, gStringVar4, sub_8129D64); - if (gMapHeader.regionMapSectionId == REGION_MAP_SECRET_BASE) + if (gMapHeader.regionMapSectionId == MAPSEC_SECRET_BASE) { TV_PutSecretBaseVisitOnTheAir(); } diff --git a/src/tv.c b/src/tv.c index 3c822b394..305bfeda9 100644 --- a/src/tv.c +++ b/src/tv.c @@ -6432,10 +6432,10 @@ void DoTVShowTodaysRivalTrainer(void) default: sTVShowState = 7; break; - case REGION_MAP_SECRET_BASE: + case MAPSEC_SECRET_BASE: sTVShowState = 8; break; - case REGION_MAP_NONE: + case MAPSEC_NONE: switch (show->rivalTrainer.mapDataId) { case 0x115 ... 0x117: @@ -6633,7 +6633,7 @@ void DoTVShowHoennTreasureInvestigators(void) { case 0: StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name); - if (show->treasureInvestigators.location == REGION_MAP_NONE) + if (show->treasureInvestigators.location == MAPSEC_NONE) { switch (show->treasureInvestigators.mapDataId) { -- cgit v1.2.3 From 0a060ae254c48f7cbee99974b1c7bffd378d9c38 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 29 Oct 2017 10:38:25 -0400 Subject: Start decompiling field_region_map --- src/field_region_map.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/field_region_map.c (limited to 'src') diff --git a/src/field_region_map.c b/src/field_region_map.c new file mode 100644 index 000000000..4923f2069 --- /dev/null +++ b/src/field_region_map.c @@ -0,0 +1,84 @@ + +// Includes +#include "global.h" +#include "main.h" +#include "malloc.h" +#include "gpu_regs.h" +#include "bg.h" +#include "text.h" +#include "window.h" +#include "text_window.h" +#include "palette.h" +#include "menu.h" + +// Static type declarations + +// Static RAM declarations + +EWRAM_DATA struct { + MainCallback callback; + u8 filler_004[0x888]; + u16 unk_88c; +} *gUnknown_0203BCD0 = NULL; + +// Static ROM declarations + +static void sub_81701C4(void); +static void sub_8170260(void); +static void sub_8170274(void); +void sub_8170290(void); + +// .rodata + +extern const struct BgTemplate gUnknown_085E5068[]; +extern const struct WindowTemplate gUnknown_085E5070[]; + +// .text + +void sub_817018C(MainCallback callback) +{ + SetVBlankCallback(NULL); + gUnknown_0203BCD0 = malloc(sizeof(*gUnknown_0203BCD0)); + gUnknown_0203BCD0->unk_88c = 0; + gUnknown_0203BCD0->callback = callback; + SetMainCallback2(sub_81701C4); +} + +static void sub_81701C4(void) +{ + SetGpuReg(REG_OFFSET_DISPCNT, 0); + SetGpuReg(REG_OFFSET_BG0HOFS, 0); + SetGpuReg(REG_OFFSET_BG0VOFS, 0); + SetGpuReg(REG_OFFSET_BG1HOFS, 0); + SetGpuReg(REG_OFFSET_BG1VOFS, 0); + SetGpuReg(REG_OFFSET_BG2HOFS, 0); + SetGpuReg(REG_OFFSET_BG2VOFS, 0); + SetGpuReg(REG_OFFSET_BG3HOFS, 0); + SetGpuReg(REG_OFFSET_BG3VOFS, 0); + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(1, gUnknown_085E5068, 2); + InitWindows(gUnknown_085E5070); + DeactivateAllTextPrinters(); + sub_809882C(0, 0x27, 0xd0); + clear_scheduled_bg_copies_to_vram(); + SetMainCallback2(sub_8170274); + SetVBlankCallback(sub_8170260); +} + +static void sub_8170260(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void sub_8170274(void) +{ + sub_8170290(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + do_scheduled_bg_tilemap_copies_to_vram(); +} -- cgit v1.2.3 From 929638f572ceba01ffd528eb024a2f124ca4224e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 29 Oct 2017 10:58:33 -0400 Subject: sub_8170290 --- src/field_region_map.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 75 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/field_region_map.c b/src/field_region_map.c index 4923f2069..399ae9070 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -10,6 +10,9 @@ #include "text_window.h" #include "palette.h" #include "menu.h" +#include "strings.h" +#include "international_string_util.h" +#include "region_map.h" // Static type declarations @@ -17,8 +20,9 @@ EWRAM_DATA struct { MainCallback callback; - u8 filler_004[0x888]; - u16 unk_88c; + u8 filler_004[0x4]; + u8 filler_008[0x884]; + u16 state; } *gUnknown_0203BCD0 = NULL; // Static ROM declarations @@ -26,7 +30,8 @@ EWRAM_DATA struct { static void sub_81701C4(void); static void sub_8170260(void); static void sub_8170274(void); -void sub_8170290(void); +static void sub_8170290(void); +void sub_8170428(void); // .rodata @@ -39,7 +44,7 @@ void sub_817018C(MainCallback callback) { SetVBlankCallback(NULL); gUnknown_0203BCD0 = malloc(sizeof(*gUnknown_0203BCD0)); - gUnknown_0203BCD0->unk_88c = 0; + gUnknown_0203BCD0->state = 0; gUnknown_0203BCD0->callback = callback; SetMainCallback2(sub_81701C4); } @@ -82,3 +87,69 @@ static void sub_8170274(void) UpdatePaletteFade(); do_scheduled_bg_tilemap_copies_to_vram(); } + +void sub_8170290(void) +{ + u8 offset; + + switch (gUnknown_0203BCD0->state) + { + case 0: + sub_8122CDC(gUnknown_0203BCD0->filler_008, 0); + sub_8124288(0, 0); + sub_81240D4(1, 1); + gUnknown_0203BCD0->state ++; + break; + case 1: + SetWindowBorderStyle(1, 0, 0x27, 0xd); + offset = GetStringCenterAlignXOffset(1, gText_Hoenn, 0x38); + PrintTextOnWindow(1, 1, gText_Hoenn, offset, 1, 0, 0); + schedule_bg_copy_tilemap_to_vram(0); + SetWindowBorderStyle(0, 0, 0x27, 0xd); + sub_8170428(); + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gUnknown_0203BCD0->state ++; + break; + case 2: + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + ShowBg(0); + ShowBg(2); + gUnknown_0203BCD0->state ++; + break; + case 3: + if (!gPaletteFade.active) + { + gUnknown_0203BCD0->state ++; + } + break; + case 4: + switch (sub_81230AC()) + { + case 3: + sub_8170428(); + break; + case 4: + case 5: + gUnknown_0203BCD0->state ++; + break; + } + break; + case 5: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_0203BCD0->state ++; + break; + case 6: + if (!gPaletteFade.active) + { + sub_812305C(); + SetMainCallback2(gUnknown_0203BCD0->callback); + if (gUnknown_0203BCD0 != NULL) + { + free(gUnknown_0203BCD0); + gUnknown_0203BCD0 = NULL; + } + FreeAllWindowBuffers(); + } + break; + } +} -- cgit v1.2.3 From 6e10e8caad9d6920c6a1451c0ec63edf529ce17a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 29 Oct 2017 11:05:42 -0400 Subject: sub_8170428 --- src/field_region_map.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/field_region_map.c b/src/field_region_map.c index 399ae9070..f78268018 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -20,8 +20,8 @@ EWRAM_DATA struct { MainCallback callback; - u8 filler_004[0x4]; - u8 filler_008[0x884]; + u32 filler_004; + struct RegionMap regionMap; u16 state; } *gUnknown_0203BCD0 = NULL; @@ -31,7 +31,7 @@ static void sub_81701C4(void); static void sub_8170260(void); static void sub_8170274(void); static void sub_8170290(void); -void sub_8170428(void); +static void sub_8170428(void); // .rodata @@ -95,7 +95,7 @@ void sub_8170290(void) switch (gUnknown_0203BCD0->state) { case 0: - sub_8122CDC(gUnknown_0203BCD0->filler_008, 0); + sub_8122CDC(&gUnknown_0203BCD0->regionMap, 0); sub_8124288(0, 0); sub_81240D4(1, 1); gUnknown_0203BCD0->state ++; @@ -103,7 +103,7 @@ void sub_8170290(void) case 1: SetWindowBorderStyle(1, 0, 0x27, 0xd); offset = GetStringCenterAlignXOffset(1, gText_Hoenn, 0x38); - PrintTextOnWindow(1, 1, gText_Hoenn, offset, 1, 0, 0); + PrintTextOnWindow(1, 1, gText_Hoenn, offset, 1, 0, NULL); schedule_bg_copy_tilemap_to_vram(0); SetWindowBorderStyle(0, 0, 0x27, 0xd); sub_8170428(); @@ -153,3 +153,18 @@ void sub_8170290(void) break; } } + +static void sub_8170428(void) +{ + if (gUnknown_0203BCD0->regionMap.unk_02) + { + FillWindowPixelBuffer(0, 0x11); + PrintTextOnWindow(0, 1, gUnknown_0203BCD0->regionMap.mapSecName, 0, 1, 0, NULL); + schedule_bg_copy_tilemap_to_vram(0); + } + else + { + FillWindowPixelBuffer(0, 0x11); + CopyWindowToVram(0, 3); + } +} -- cgit v1.2.3 From c0a229f10834785a709c40035dab6da03b8a30ff Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 29 Oct 2017 11:12:28 -0400 Subject: Decompile field region map bg and window templates --- src/field_region_map.c | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/field_region_map.c b/src/field_region_map.c index f78268018..c2a14d04e 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -18,7 +18,7 @@ // Static RAM declarations -EWRAM_DATA struct { +static EWRAM_DATA struct { MainCallback callback; u32 filler_004; struct RegionMap regionMap; @@ -35,8 +35,33 @@ static void sub_8170428(void); // .rodata -extern const struct BgTemplate gUnknown_085E5068[]; -extern const struct WindowTemplate gUnknown_085E5070[]; +static const struct BgTemplate gUnknown_085E5068[] = { + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 28, + .screenSize = 2, + .paletteMode = 1, + .priority = 2, + .baseTile = 0 + } +}; + +static const struct WindowTemplate gUnknown_085E5070[] = { + { + 0, 17, 17, 12, 2, 15, 0x0001 + }, { + 0, 22, 1, 7, 2, 15, 0x0019 + }, DUMMY_WIN_TEMPLATE +}; // .text -- cgit v1.2.3 From 76bb397e83ca5d8b4f7a501f2517e83e4a9eccec Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 29 Oct 2017 19:33:53 -0400 Subject: region_map.c through sub_8122CF8 --- src/field_region_map.c | 2 +- src/region_map.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 src/region_map.c (limited to 'src') diff --git a/src/field_region_map.c b/src/field_region_map.c index c2a14d04e..e8c52de77 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -120,7 +120,7 @@ void sub_8170290(void) switch (gUnknown_0203BCD0->state) { case 0: - sub_8122CDC(&gUnknown_0203BCD0->regionMap, 0); + sub_8122CDC(&gUnknown_0203BCD0->regionMap, FALSE); sub_8124288(0, 0); sub_81240D4(1, 1); gUnknown_0203BCD0->state ++; diff --git a/src/region_map.c b/src/region_map.c new file mode 100644 index 000000000..1f54108d6 --- /dev/null +++ b/src/region_map.c @@ -0,0 +1,54 @@ + +// Includes +#include "global.h" +#include "region_map.h" + +// Static type declarations + +struct UnkStruct_0203A148 { + u8 filler_000[0xa74]; +}; + +// Static RAM declarations + +EWRAM_DATA struct RegionMap *gUnknown_0203A144 = NULL; +EWRAM_DATA struct UnkStruct_0203A148 *gUnknown_0203A148 = NULL; + +// Static ROM declarations + +void sub_8122CF8(struct RegionMap *regionMap, struct UnkStruct_8122CF8 *arg1, bool8 arg2); +bool8 sub_8122DB0(void); +u8 sub_8123254(void); +u8 sub_81230C4(void); + +// .rodata + +// .text + +void sub_8122CDC(struct RegionMap *regionMap, bool8 argument) +{ + sub_8122CF8(regionMap, NULL, argument); + while (sub_8122DB0()); +} + +void sub_8122CF8(struct RegionMap *regionMap, struct UnkStruct_8122CF8 *arg1, bool8 arg2) +{ + gUnknown_0203A144 = regionMap; + gUnknown_0203A144->unk_079 = 0; + gUnknown_0203A144->unk_078 = arg2; + gUnknown_0203A144->inputCallback = arg2 == TRUE ? sub_8123254 : sub_81230C4; + if (arg1 != NULL) + { + gUnknown_0203A144->unk_080 = arg1->unk_0_0; + gUnknown_0203A144->unk_081 = arg1->unk_0_2; + gUnknown_0203A144->unk_082 = arg1->unk_0_4; + gUnknown_0203A144->unk_083 = TRUE; + } + else + { + gUnknown_0203A144->unk_080 = 2; + gUnknown_0203A144->unk_081 = 2; + gUnknown_0203A144->unk_082 = 28; + gUnknown_0203A144->unk_083 = FALSE; + } +} -- cgit v1.2.3 From 6f68e5af95295d10b8dc956d6c621999002377de Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 29 Oct 2017 20:49:49 -0400 Subject: sub_8122DB0 --- src/field_region_map.c | 4 +- src/region_map.c | 112 ++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 112 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/field_region_map.c b/src/field_region_map.c index e8c52de77..74b62bbc7 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -120,7 +120,7 @@ void sub_8170290(void) switch (gUnknown_0203BCD0->state) { case 0: - sub_8122CDC(&gUnknown_0203BCD0->regionMap, FALSE); + sub_8122CDC(&gUnknown_0203BCD0->regionMap, 0); sub_8124288(0, 0); sub_81240D4(1, 1); gUnknown_0203BCD0->state ++; @@ -181,7 +181,7 @@ void sub_8170290(void) static void sub_8170428(void) { - if (gUnknown_0203BCD0->regionMap.unk_02) + if (gUnknown_0203BCD0->regionMap.unk_002 != 0) { FillWindowPixelBuffer(0, 0x11); PrintTextOnWindow(0, 1, gUnknown_0203BCD0->regionMap.mapSecName, 0, 1, 0, NULL); diff --git a/src/region_map.c b/src/region_map.c index 1f54108d6..dc53f1ec6 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -2,6 +2,9 @@ // Includes #include "global.h" #include "region_map.h" +#include "menu.h" +#include "palette.h" +#include "bg.h" // Static type declarations @@ -20,18 +23,30 @@ void sub_8122CF8(struct RegionMap *regionMap, struct UnkStruct_8122CF8 *arg1, bo bool8 sub_8122DB0(void); u8 sub_8123254(void); u8 sub_81230C4(void); +void sub_81238AC(void); +u16 sub_8123EB4(u16 mapSecId); +u8 get_flagnr_blue_points(u16 mapSecId); +void sub_81236C4(s32 a0, s32 a1, s32 a2, s32 a3, u16 a4, u16 a5, u16 a6); +void sub_8123FB0(void); +void sub_81237B4(void); // .rodata +extern const u8 gUnknown_0859F77C[]; +extern const u8 gUnknown_085A04E0[]; +extern const u16 gUnknown_0859F73C[]; +extern const u8 gUnknown_0859F60C[]; +extern const u8 gUnknown_0859F650[]; + // .text -void sub_8122CDC(struct RegionMap *regionMap, bool8 argument) +void sub_8122CDC(struct RegionMap *regionMap, u8 argument) { sub_8122CF8(regionMap, NULL, argument); while (sub_8122DB0()); } -void sub_8122CF8(struct RegionMap *regionMap, struct UnkStruct_8122CF8 *arg1, bool8 arg2) +void sub_8122CF8(struct RegionMap *regionMap, struct UnkStruct_8122CF8 *arg1, u8 arg2) { gUnknown_0203A144 = regionMap; gUnknown_0203A144->unk_079 = 0; @@ -52,3 +67,96 @@ void sub_8122CF8(struct RegionMap *regionMap, struct UnkStruct_8122CF8 *arg1, bo gUnknown_0203A144->unk_083 = FALSE; } } + +void sub_8122D88(struct RegionMap *regionMap) +{ + gUnknown_0203A144 = regionMap; + sub_81238AC(); + gUnknown_0203A144->unk_074 = gUnknown_0203A144->unk_054; + gUnknown_0203A144->unk_076 = gUnknown_0203A144->unk_056; +} + +bool8 sub_8122DB0(void) +{ + switch (gUnknown_0203A144->unk_079) + { + case 0: + if (gUnknown_0203A144->unk_083) + { + decompress_and_copy_tile_data_to_vram(gUnknown_0203A144->unk_080, gUnknown_0859F77C, 0, 0, 0); + } + else + { + LZ77UnCompVram(gUnknown_0859F77C, (u16 *)BG_SCREEN_ADDR(16)); + } + break; + case 1: + if (gUnknown_0203A144->unk_083) + { + if (!free_temp_tile_data_buffers_if_possible()) + { + decompress_and_copy_tile_data_to_vram(gUnknown_0203A144->unk_080, gUnknown_085A04E0, 0, 0, 1); + } + } + else + { + LZ77UnCompVram(gUnknown_085A04E0, (u16 *)BG_SCREEN_ADDR(28)); + } + break; + case 2: + if (!free_temp_tile_data_buffers_if_possible()) + { + LoadPalette(gUnknown_0859F73C, 0x70, 0x60); + } + break; + case 3: + LZ77UnCompWram(gUnknown_0859F60C, gUnknown_0203A144->unk_184); + break; + case 4: + LZ77UnCompWram(gUnknown_0859F650, gUnknown_0203A144->unk_284); + break; + case 5: + sub_81238AC(); + gUnknown_0203A144->unk_074 = gUnknown_0203A144->unk_054; + gUnknown_0203A144->unk_076 = gUnknown_0203A144->unk_056; + gUnknown_0203A144->mapSecId = sub_8123EB4(gUnknown_0203A144->mapSecId); + gUnknown_0203A144->unk_002 = get_flagnr_blue_points(gUnknown_0203A144->mapSecId); + GetMapName(gUnknown_0203A144->mapSecName, gUnknown_0203A144->mapSecId, 16); + break; + case 6: + if (gUnknown_0203A144->unk_078 == 0) + { + sub_81236C4(0, 0, 0, 0, 0x100, 0x100, 0); + } + else + { + gUnknown_0203A144->unk_05c = gUnknown_0203A144->unk_054 * 8 - 0x34; + gUnknown_0203A144->unk_05e = gUnknown_0203A144->unk_056 * 8 - 0x44; + gUnknown_0203A144->unk_064 = gUnknown_0203A144->unk_054; + gUnknown_0203A144->unk_066 = gUnknown_0203A144->unk_056; + sub_81236C4(gUnknown_0203A144->unk_05c, gUnknown_0203A144->unk_05e, 0x38, 0x48, 0x80, 0x80, 0); + } + break; + case 7: + sub_8123FB0(); + sub_81237B4(); + gUnknown_0203A144->unk_01c = 0; + gUnknown_0203A144->unk_020 = 0; + gUnknown_0203A144->unk_07a = 0; + gUnknown_0203A144->unk_07e = 0; + if (gUnknown_0203A144->unk_083) + { + SetBgAttribute(gUnknown_0203A144->unk_080, BG_CTRL_ATTR_MAPBASEINDEX, 2); + SetBgAttribute(gUnknown_0203A144->unk_080, BG_CTRL_ATTR_VISIBLE, gUnknown_0203A144->unk_081); + SetBgAttribute(gUnknown_0203A144->unk_080, BG_CTRL_ATTR_CHARBASEINDEX, gUnknown_0203A144->unk_082); + SetBgAttribute(gUnknown_0203A144->unk_080, BG_CTRL_ATTR_PRIORITY, 1); + SetBgAttribute(gUnknown_0203A144->unk_080, BG_CTRL_ATTR_SCREENSIZE, 1); + } + gUnknown_0203A144->unk_079 ++; + return FALSE; + default: + return FALSE; + } + gUnknown_0203A144->unk_079 ++; + return TRUE; +} -- cgit v1.2.3 From a9afb8b13082fbc8090a6f8c14a6e6489d317998 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 29 Oct 2017 20:58:53 -0400 Subject: through sub_81230AC --- src/region_map.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index dc53f1ec6..714aa51ee 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -140,8 +140,8 @@ bool8 sub_8122DB0(void) case 7: sub_8123FB0(); sub_81237B4(); - gUnknown_0203A144->unk_01c = 0; - gUnknown_0203A144->unk_020 = 0; + gUnknown_0203A144->unk_01c = NULL; + gUnknown_0203A144->unk_020 = NULL; gUnknown_0203A144->unk_07a = 0; gUnknown_0203A144->unk_07e = 0; if (gUnknown_0203A144->unk_083) @@ -160,3 +160,30 @@ bool8 sub_8122DB0(void) gUnknown_0203A144->unk_079 ++; return TRUE; } + +void sub_8123030(u16 a0, u32 a1) +{ + BlendPalettes(0x380, a1, a0); + CpuCopy16(gPlttBufferFaded + 0x70, gPlttBufferUnfaded + 0x70, 0x60); +} + +void sub_812305C(void) +{ + if (gUnknown_0203A144->unk_01c != NULL) + { + DestroySprite(gUnknown_0203A144->unk_01c); + FreeSpriteTilesByTag(gUnknown_0203A144->unk_058); + FreeSpritePaletteByTag(gUnknown_0203A144->unk_05a); + } + if (gUnknown_0203A144->unk_020 != NULL) + { + DestroySprite(gUnknown_0203A144->unk_020); + FreeSpriteTilesByTag(gUnknown_0203A144->unk_070); + FreeSpritePaletteByTag(gUnknown_0203A144->unk_072); + } +} + +u8 sub_81230AC(void) +{ + return gUnknown_0203A144->inputCallback(); +} -- cgit v1.2.3 From f07307dc73ef7e7a04c9c7091428a73303f8714c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 29 Oct 2017 21:14:53 -0400 Subject: sub_81230C4 --- src/region_map.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 60 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 714aa51ee..7d3db9c8b 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -1,6 +1,7 @@ // Includes #include "global.h" +#include "main.h" #include "region_map.h" #include "menu.h" #include "palette.h" @@ -12,6 +13,17 @@ struct UnkStruct_0203A148 { u8 filler_000[0xa74]; }; +enum +{ + INPUT_EVENT_NONE, + INPUT_EVENT_DPAD, + INPUT_EVENT_2, + INPUT_EVENT_3, + INPUT_EVENT_A_BUTTON, + INPUT_EVENT_B_BUTTON, +}; + + // Static RAM declarations EWRAM_DATA struct RegionMap *gUnknown_0203A144 = NULL; @@ -19,16 +31,15 @@ EWRAM_DATA struct UnkStruct_0203A148 *gUnknown_0203A148 = NULL; // Static ROM declarations -void sub_8122CF8(struct RegionMap *regionMap, struct UnkStruct_8122CF8 *arg1, bool8 arg2); -bool8 sub_8122DB0(void); -u8 sub_8123254(void); u8 sub_81230C4(void); +u8 sub_8123254(void); +void sub_81236C4(s32 a0, s32 a1, s32 a2, s32 a3, u16 a4, u16 a5, u16 a6); +void sub_81237B4(void); void sub_81238AC(void); -u16 sub_8123EB4(u16 mapSecId); u8 get_flagnr_blue_points(u16 mapSecId); -void sub_81236C4(s32 a0, s32 a1, s32 a2, s32 a3, u16 a4, u16 a5, u16 a6); +u16 sub_8123EB4(u16 mapSecId); void sub_8123FB0(void); -void sub_81237B4(void); +u8 _swiopen(void); // .rodata @@ -187,3 +198,46 @@ u8 sub_81230AC(void) { return gUnknown_0203A144->inputCallback(); } + +u8 sub_81230C4(void) +{ + u8 input; + + input = INPUT_EVENT_NONE; + gUnknown_0203A144->unk_07b = 0; + gUnknown_0203A144->unk_07c = 0; + if (gMain.heldKeys & DPAD_UP && gUnknown_0203A144->unk_056 > 2) + { + gUnknown_0203A144->unk_07c = -1; + input = INPUT_EVENT_DPAD; + } + if (gMain.heldKeys & DPAD_DOWN && gUnknown_0203A144->unk_056 < 16) + { + gUnknown_0203A144->unk_07c = +1; + input = INPUT_EVENT_DPAD; + } + if (gMain.heldKeys & DPAD_LEFT && gUnknown_0203A144->unk_054 > 1) + { + gUnknown_0203A144->unk_07b = -1; + input = INPUT_EVENT_DPAD; + } + if (gMain.heldKeys & DPAD_RIGHT && gUnknown_0203A144->unk_054 < 28) + { + gUnknown_0203A144->unk_07b = +1; + input = INPUT_EVENT_DPAD; + } + if (gMain.newKeys & A_BUTTON) + { + input = INPUT_EVENT_A_BUTTON; + } + else if (gMain.newKeys & B_BUTTON) + { + input = INPUT_EVENT_B_BUTTON; + } + if (input == INPUT_EVENT_DPAD) + { + gUnknown_0203A144->unk_07a = 4; + gUnknown_0203A144->inputCallback = _swiopen; + } + return input; +} -- cgit v1.2.3 From 8d35bf1c9e93c11f0e8d6e4d7933e3b1761072a6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 29 Oct 2017 21:31:38 -0400 Subject: _swiopen --- src/field_region_map.c | 6 +++--- src/region_map.c | 58 ++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 45 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/field_region_map.c b/src/field_region_map.c index 74b62bbc7..2f73179d9 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -150,11 +150,11 @@ void sub_8170290(void) case 4: switch (sub_81230AC()) { - case 3: + case INPUT_EVENT_MOVE_END: sub_8170428(); break; - case 4: - case 5: + case INPUT_EVENT_A_BUTTON: + case INPUT_EVENT_B_BUTTON: gUnknown_0203BCD0->state ++; break; } diff --git a/src/region_map.c b/src/region_map.c index 7d3db9c8b..894937c6d 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -13,17 +13,6 @@ struct UnkStruct_0203A148 { u8 filler_000[0xa74]; }; -enum -{ - INPUT_EVENT_NONE, - INPUT_EVENT_DPAD, - INPUT_EVENT_2, - INPUT_EVENT_3, - INPUT_EVENT_A_BUTTON, - INPUT_EVENT_B_BUTTON, -}; - - // Static RAM declarations EWRAM_DATA struct RegionMap *gUnknown_0203A144 = NULL; @@ -40,6 +29,7 @@ u8 get_flagnr_blue_points(u16 mapSecId); u16 sub_8123EB4(u16 mapSecId); void sub_8123FB0(void); u8 _swiopen(void); +u16 sub_812386C(u16 x, u16 y); // .rodata @@ -209,22 +199,22 @@ u8 sub_81230C4(void) if (gMain.heldKeys & DPAD_UP && gUnknown_0203A144->unk_056 > 2) { gUnknown_0203A144->unk_07c = -1; - input = INPUT_EVENT_DPAD; + input = INPUT_EVENT_MOVE_START; } if (gMain.heldKeys & DPAD_DOWN && gUnknown_0203A144->unk_056 < 16) { gUnknown_0203A144->unk_07c = +1; - input = INPUT_EVENT_DPAD; + input = INPUT_EVENT_MOVE_START; } if (gMain.heldKeys & DPAD_LEFT && gUnknown_0203A144->unk_054 > 1) { gUnknown_0203A144->unk_07b = -1; - input = INPUT_EVENT_DPAD; + input = INPUT_EVENT_MOVE_START; } if (gMain.heldKeys & DPAD_RIGHT && gUnknown_0203A144->unk_054 < 28) { gUnknown_0203A144->unk_07b = +1; - input = INPUT_EVENT_DPAD; + input = INPUT_EVENT_MOVE_START; } if (gMain.newKeys & A_BUTTON) { @@ -234,10 +224,46 @@ u8 sub_81230C4(void) { input = INPUT_EVENT_B_BUTTON; } - if (input == INPUT_EVENT_DPAD) + if (input == INPUT_EVENT_MOVE_START) { gUnknown_0203A144->unk_07a = 4; gUnknown_0203A144->inputCallback = _swiopen; } return input; } + +u8 _swiopen(void) +{ + u16 mapSecId; + + if (gUnknown_0203A144->unk_07a != 0) + { + return INPUT_EVENT_MOVE_CONT; + } + if (gUnknown_0203A144->unk_07b > 0) + { + gUnknown_0203A144->unk_054 ++; + } + if (gUnknown_0203A144->unk_07b < 0) + { + gUnknown_0203A144->unk_054 --; + } + if (gUnknown_0203A144->unk_07c > 0) + { + gUnknown_0203A144->unk_056 ++; + } + if (gUnknown_0203A144->unk_07c < 0) + { + gUnknown_0203A144->unk_056 --; + } + mapSecId = sub_812386C(gUnknown_0203A144->unk_054, gUnknown_0203A144->unk_056); + gUnknown_0203A144->unk_002 = get_flagnr_blue_points(mapSecId); + if (mapSecId != gUnknown_0203A144->mapSecId) + { + gUnknown_0203A144->mapSecId = mapSecId; + GetMapName(gUnknown_0203A144->mapSecName, gUnknown_0203A144->mapSecId, 16); + } + sub_8123FB0(); + gUnknown_0203A144->inputCallback = sub_81230C4; + return INPUT_EVENT_MOVE_END; +} -- cgit v1.2.3 From 16c5a58f352f8daaf59e19e0dda93a3651a71ed2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 29 Oct 2017 21:38:45 -0400 Subject: sub_8123254 --- src/region_map.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 894937c6d..a75d68854 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -29,6 +29,7 @@ u8 get_flagnr_blue_points(u16 mapSecId); u16 sub_8123EB4(u16 mapSecId); void sub_8123FB0(void); u8 _swiopen(void); +u8 sub_8123334(void); u16 sub_812386C(u16 x, u16 y); // .rodata @@ -267,3 +268,46 @@ u8 _swiopen(void) gUnknown_0203A144->inputCallback = sub_81230C4; return INPUT_EVENT_MOVE_END; } + +u8 sub_8123254(void) +{ + u8 input; + + input = INPUT_EVENT_NONE; + gUnknown_0203A144->unk_06a = 0; + gUnknown_0203A144->unk_068 = 0; + if (gMain.heldKeys & DPAD_UP && gUnknown_0203A144->unk_05e > -0x34) + { + gUnknown_0203A144->unk_068 = -1; + input = INPUT_EVENT_MOVE_START; + } + if (gMain.heldKeys & DPAD_DOWN && gUnknown_0203A144->unk_05e < 0x3c) + { + gUnknown_0203A144->unk_068 = +1; + input = INPUT_EVENT_MOVE_START; + } + if (gMain.heldKeys & DPAD_LEFT && gUnknown_0203A144->unk_05c > -0x2c) + { + gUnknown_0203A144->unk_06a = -1; + input = INPUT_EVENT_MOVE_START; + } + if (gMain.heldKeys & DPAD_RIGHT && gUnknown_0203A144->unk_05c < 0xac) + { + gUnknown_0203A144->unk_06a = +1; + input = INPUT_EVENT_MOVE_START; + } + if (gMain.newKeys & A_BUTTON) + { + input = INPUT_EVENT_A_BUTTON; + } + if (gMain.newKeys & B_BUTTON) + { + input = INPUT_EVENT_B_BUTTON; + } + if (input == INPUT_EVENT_MOVE_START) + { + gUnknown_0203A144->inputCallback = sub_8123334; + gUnknown_0203A144->unk_06c = 0; + } + return input; +} -- cgit v1.2.3 From 159728469472464c1aaaf0c8e154dcab36acbac5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 29 Oct 2017 22:05:15 -0400 Subject: sub_8123334 --- src/region_map.c | 178 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 108 insertions(+), 70 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index a75d68854..caf6b32a1 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -31,6 +31,7 @@ void sub_8123FB0(void); u8 _swiopen(void); u8 sub_8123334(void); u16 sub_812386C(u16 x, u16 y); +void sub_812378C(s16 x, s16 y); // .rodata @@ -51,19 +52,19 @@ void sub_8122CDC(struct RegionMap *regionMap, u8 argument) void sub_8122CF8(struct RegionMap *regionMap, struct UnkStruct_8122CF8 *arg1, u8 arg2) { gUnknown_0203A144 = regionMap; - gUnknown_0203A144->unk_079 = 0; - gUnknown_0203A144->unk_078 = arg2; + gUnknown_0203A144->initStep = 0; + gUnknown_0203A144->zoomed = arg2; gUnknown_0203A144->inputCallback = arg2 == TRUE ? sub_8123254 : sub_81230C4; if (arg1 != NULL) { - gUnknown_0203A144->unk_080 = arg1->unk_0_0; + gUnknown_0203A144->bgNum = arg1->unk_0_0; gUnknown_0203A144->unk_081 = arg1->unk_0_2; gUnknown_0203A144->unk_082 = arg1->unk_0_4; gUnknown_0203A144->unk_083 = TRUE; } else { - gUnknown_0203A144->unk_080 = 2; + gUnknown_0203A144->bgNum = 2; gUnknown_0203A144->unk_081 = 2; gUnknown_0203A144->unk_082 = 28; gUnknown_0203A144->unk_083 = FALSE; @@ -74,18 +75,18 @@ void sub_8122D88(struct RegionMap *regionMap) { gUnknown_0203A144 = regionMap; sub_81238AC(); - gUnknown_0203A144->unk_074 = gUnknown_0203A144->unk_054; - gUnknown_0203A144->unk_076 = gUnknown_0203A144->unk_056; + gUnknown_0203A144->unk_074 = gUnknown_0203A144->cursorPosX; + gUnknown_0203A144->unk_076 = gUnknown_0203A144->cursorPosY; } bool8 sub_8122DB0(void) { - switch (gUnknown_0203A144->unk_079) + switch (gUnknown_0203A144->initStep) { case 0: if (gUnknown_0203A144->unk_083) { - decompress_and_copy_tile_data_to_vram(gUnknown_0203A144->unk_080, gUnknown_0859F77C, 0, 0, 0); + decompress_and_copy_tile_data_to_vram(gUnknown_0203A144->bgNum, gUnknown_0859F77C, 0, 0, 0); } else { @@ -97,7 +98,7 @@ bool8 sub_8122DB0(void) { if (!free_temp_tile_data_buffers_if_possible()) { - decompress_and_copy_tile_data_to_vram(gUnknown_0203A144->unk_080, gUnknown_085A04E0, 0, 0, 1); + decompress_and_copy_tile_data_to_vram(gUnknown_0203A144->bgNum, gUnknown_085A04E0, 0, 0, 1); } } else @@ -112,54 +113,54 @@ bool8 sub_8122DB0(void) } break; case 3: - LZ77UnCompWram(gUnknown_0859F60C, gUnknown_0203A144->unk_184); + LZ77UnCompWram(gUnknown_0859F60C, gUnknown_0203A144->cursorSmallImage); break; case 4: - LZ77UnCompWram(gUnknown_0859F650, gUnknown_0203A144->unk_284); + LZ77UnCompWram(gUnknown_0859F650, gUnknown_0203A144->cursorLargeImage); break; case 5: sub_81238AC(); - gUnknown_0203A144->unk_074 = gUnknown_0203A144->unk_054; - gUnknown_0203A144->unk_076 = gUnknown_0203A144->unk_056; + gUnknown_0203A144->unk_074 = gUnknown_0203A144->cursorPosX; + gUnknown_0203A144->unk_076 = gUnknown_0203A144->cursorPosY; gUnknown_0203A144->mapSecId = sub_8123EB4(gUnknown_0203A144->mapSecId); gUnknown_0203A144->unk_002 = get_flagnr_blue_points(gUnknown_0203A144->mapSecId); GetMapName(gUnknown_0203A144->mapSecName, gUnknown_0203A144->mapSecId, 16); break; case 6: - if (gUnknown_0203A144->unk_078 == 0) + if (gUnknown_0203A144->zoomed == FALSE) { sub_81236C4(0, 0, 0, 0, 0x100, 0x100, 0); } else { - gUnknown_0203A144->unk_05c = gUnknown_0203A144->unk_054 * 8 - 0x34; - gUnknown_0203A144->unk_05e = gUnknown_0203A144->unk_056 * 8 - 0x44; - gUnknown_0203A144->unk_064 = gUnknown_0203A144->unk_054; - gUnknown_0203A144->unk_066 = gUnknown_0203A144->unk_056; - sub_81236C4(gUnknown_0203A144->unk_05c, gUnknown_0203A144->unk_05e, 0x38, 0x48, 0x80, 0x80, 0); + gUnknown_0203A144->scrollX = gUnknown_0203A144->cursorPosX * 8 - 0x34; + gUnknown_0203A144->scrollY = gUnknown_0203A144->cursorPosY * 8 - 0x44; + gUnknown_0203A144->unk_064 = gUnknown_0203A144->cursorPosX; + gUnknown_0203A144->unk_066 = gUnknown_0203A144->cursorPosY; + sub_81236C4(gUnknown_0203A144->scrollX, gUnknown_0203A144->scrollY, 0x38, 0x48, 0x80, 0x80, 0); } break; case 7: sub_8123FB0(); sub_81237B4(); - gUnknown_0203A144->unk_01c = NULL; - gUnknown_0203A144->unk_020 = NULL; - gUnknown_0203A144->unk_07a = 0; - gUnknown_0203A144->unk_07e = 0; + gUnknown_0203A144->cursorSprite = NULL; + gUnknown_0203A144->playerIconSprite = NULL; + gUnknown_0203A144->cursorMovementFrameCounter = 0; + gUnknown_0203A144->blinkPlayerIcon = FALSE; if (gUnknown_0203A144->unk_083) { - SetBgAttribute(gUnknown_0203A144->unk_080, BG_CTRL_ATTR_MAPBASEINDEX, 2); - SetBgAttribute(gUnknown_0203A144->unk_080, BG_CTRL_ATTR_VISIBLE, gUnknown_0203A144->unk_081); - SetBgAttribute(gUnknown_0203A144->unk_080, BG_CTRL_ATTR_CHARBASEINDEX, gUnknown_0203A144->unk_082); - SetBgAttribute(gUnknown_0203A144->unk_080, BG_CTRL_ATTR_PRIORITY, 1); - SetBgAttribute(gUnknown_0203A144->unk_080, BG_CTRL_ATTR_SCREENSIZE, 1); + SetBgAttribute(gUnknown_0203A144->bgNum, BG_CTRL_ATTR_MAPBASEINDEX, 2); + SetBgAttribute(gUnknown_0203A144->bgNum, BG_CTRL_ATTR_VISIBLE, gUnknown_0203A144->unk_081); + SetBgAttribute(gUnknown_0203A144->bgNum, BG_CTRL_ATTR_CHARBASEINDEX, gUnknown_0203A144->unk_082); + SetBgAttribute(gUnknown_0203A144->bgNum, BG_CTRL_ATTR_PRIORITY, 1); + SetBgAttribute(gUnknown_0203A144->bgNum, BG_CTRL_ATTR_SCREENSIZE, 1); } - gUnknown_0203A144->unk_079 ++; + gUnknown_0203A144->initStep ++; return FALSE; default: return FALSE; } - gUnknown_0203A144->unk_079 ++; + gUnknown_0203A144->initStep ++; return TRUE; } @@ -171,17 +172,17 @@ void sub_8123030(u16 a0, u32 a1) void sub_812305C(void) { - if (gUnknown_0203A144->unk_01c != NULL) + if (gUnknown_0203A144->cursorSprite != NULL) { - DestroySprite(gUnknown_0203A144->unk_01c); - FreeSpriteTilesByTag(gUnknown_0203A144->unk_058); - FreeSpritePaletteByTag(gUnknown_0203A144->unk_05a); + DestroySprite(gUnknown_0203A144->cursorSprite); + FreeSpriteTilesByTag(gUnknown_0203A144->cursorTileTag); + FreeSpritePaletteByTag(gUnknown_0203A144->cursorPaletteTag); } - if (gUnknown_0203A144->unk_020 != NULL) + if (gUnknown_0203A144->playerIconSprite != NULL) { - DestroySprite(gUnknown_0203A144->unk_020); - FreeSpriteTilesByTag(gUnknown_0203A144->unk_070); - FreeSpritePaletteByTag(gUnknown_0203A144->unk_072); + DestroySprite(gUnknown_0203A144->playerIconSprite); + FreeSpriteTilesByTag(gUnknown_0203A144->playerIconTileTag); + FreeSpritePaletteByTag(gUnknown_0203A144->playerIconPaletteTag); } } @@ -195,26 +196,26 @@ u8 sub_81230C4(void) u8 input; input = INPUT_EVENT_NONE; - gUnknown_0203A144->unk_07b = 0; - gUnknown_0203A144->unk_07c = 0; - if (gMain.heldKeys & DPAD_UP && gUnknown_0203A144->unk_056 > 2) + gUnknown_0203A144->cursorDeltaX = 0; + gUnknown_0203A144->cursorDeltaY = 0; + if (gMain.heldKeys & DPAD_UP && gUnknown_0203A144->cursorPosY > 2) { - gUnknown_0203A144->unk_07c = -1; + gUnknown_0203A144->cursorDeltaY = -1; input = INPUT_EVENT_MOVE_START; } - if (gMain.heldKeys & DPAD_DOWN && gUnknown_0203A144->unk_056 < 16) + if (gMain.heldKeys & DPAD_DOWN && gUnknown_0203A144->cursorPosY < 16) { - gUnknown_0203A144->unk_07c = +1; + gUnknown_0203A144->cursorDeltaY = +1; input = INPUT_EVENT_MOVE_START; } - if (gMain.heldKeys & DPAD_LEFT && gUnknown_0203A144->unk_054 > 1) + if (gMain.heldKeys & DPAD_LEFT && gUnknown_0203A144->cursorPosX > 1) { - gUnknown_0203A144->unk_07b = -1; + gUnknown_0203A144->cursorDeltaX = -1; input = INPUT_EVENT_MOVE_START; } - if (gMain.heldKeys & DPAD_RIGHT && gUnknown_0203A144->unk_054 < 28) + if (gMain.heldKeys & DPAD_RIGHT && gUnknown_0203A144->cursorPosX < 28) { - gUnknown_0203A144->unk_07b = +1; + gUnknown_0203A144->cursorDeltaX = +1; input = INPUT_EVENT_MOVE_START; } if (gMain.newKeys & A_BUTTON) @@ -227,7 +228,7 @@ u8 sub_81230C4(void) } if (input == INPUT_EVENT_MOVE_START) { - gUnknown_0203A144->unk_07a = 4; + gUnknown_0203A144->cursorMovementFrameCounter = 4; gUnknown_0203A144->inputCallback = _swiopen; } return input; @@ -237,27 +238,27 @@ u8 _swiopen(void) { u16 mapSecId; - if (gUnknown_0203A144->unk_07a != 0) + if (gUnknown_0203A144->cursorMovementFrameCounter != 0) { return INPUT_EVENT_MOVE_CONT; } - if (gUnknown_0203A144->unk_07b > 0) + if (gUnknown_0203A144->cursorDeltaX > 0) { - gUnknown_0203A144->unk_054 ++; + gUnknown_0203A144->cursorPosX ++; } - if (gUnknown_0203A144->unk_07b < 0) + if (gUnknown_0203A144->cursorDeltaX < 0) { - gUnknown_0203A144->unk_054 --; + gUnknown_0203A144->cursorPosX --; } - if (gUnknown_0203A144->unk_07c > 0) + if (gUnknown_0203A144->cursorDeltaY > 0) { - gUnknown_0203A144->unk_056 ++; + gUnknown_0203A144->cursorPosY ++; } - if (gUnknown_0203A144->unk_07c < 0) + if (gUnknown_0203A144->cursorDeltaY < 0) { - gUnknown_0203A144->unk_056 --; + gUnknown_0203A144->cursorPosY --; } - mapSecId = sub_812386C(gUnknown_0203A144->unk_054, gUnknown_0203A144->unk_056); + mapSecId = sub_812386C(gUnknown_0203A144->cursorPosX, gUnknown_0203A144->cursorPosY); gUnknown_0203A144->unk_002 = get_flagnr_blue_points(mapSecId); if (mapSecId != gUnknown_0203A144->mapSecId) { @@ -274,26 +275,26 @@ u8 sub_8123254(void) u8 input; input = INPUT_EVENT_NONE; - gUnknown_0203A144->unk_06a = 0; - gUnknown_0203A144->unk_068 = 0; - if (gMain.heldKeys & DPAD_UP && gUnknown_0203A144->unk_05e > -0x34) + gUnknown_0203A144->zoomedCursorDeltaX = 0; + gUnknown_0203A144->zoomedCursorDeltaY = 0; + if (gMain.heldKeys & DPAD_UP && gUnknown_0203A144->scrollY > -0x34) { - gUnknown_0203A144->unk_068 = -1; + gUnknown_0203A144->zoomedCursorDeltaY = -1; input = INPUT_EVENT_MOVE_START; } - if (gMain.heldKeys & DPAD_DOWN && gUnknown_0203A144->unk_05e < 0x3c) + if (gMain.heldKeys & DPAD_DOWN && gUnknown_0203A144->scrollY < 0x3c) { - gUnknown_0203A144->unk_068 = +1; + gUnknown_0203A144->zoomedCursorDeltaY = +1; input = INPUT_EVENT_MOVE_START; } - if (gMain.heldKeys & DPAD_LEFT && gUnknown_0203A144->unk_05c > -0x2c) + if (gMain.heldKeys & DPAD_LEFT && gUnknown_0203A144->scrollX > -0x2c) { - gUnknown_0203A144->unk_06a = -1; + gUnknown_0203A144->zoomedCursorDeltaX = -1; input = INPUT_EVENT_MOVE_START; } - if (gMain.heldKeys & DPAD_RIGHT && gUnknown_0203A144->unk_05c < 0xac) + if (gMain.heldKeys & DPAD_RIGHT && gUnknown_0203A144->scrollX < 0xac) { - gUnknown_0203A144->unk_06a = +1; + gUnknown_0203A144->zoomedCursorDeltaX = +1; input = INPUT_EVENT_MOVE_START; } if (gMain.newKeys & A_BUTTON) @@ -307,7 +308,44 @@ u8 sub_8123254(void) if (input == INPUT_EVENT_MOVE_START) { gUnknown_0203A144->inputCallback = sub_8123334; - gUnknown_0203A144->unk_06c = 0; + gUnknown_0203A144->zoomedCursorMovementFrameCounter = 0; } return input; } + +u8 sub_8123334(void) +{ + u16 x; + u16 y; + u16 mapSecId; + + gUnknown_0203A144->scrollY += gUnknown_0203A144->zoomedCursorDeltaY; + gUnknown_0203A144->scrollX += gUnknown_0203A144->zoomedCursorDeltaX; + sub_812378C(gUnknown_0203A144->scrollX, gUnknown_0203A144->scrollY); + gUnknown_0203A144->zoomedCursorMovementFrameCounter ++; + if (gUnknown_0203A144->zoomedCursorMovementFrameCounter == 8) + { + x = (gUnknown_0203A144->scrollX + 0x2c) / 8 + 1; + y = (gUnknown_0203A144->scrollY + 0x34) / 8 + 2; + if (x != gUnknown_0203A144->unk_064 || y != gUnknown_0203A144->unk_066) + { + gUnknown_0203A144->unk_064 = x; + gUnknown_0203A144->unk_066 = y; + mapSecId = sub_812386C(x, y); + gUnknown_0203A144->unk_002 = get_flagnr_blue_points(mapSecId); + if (mapSecId != gUnknown_0203A144->mapSecId) + { + gUnknown_0203A144->mapSecId = mapSecId; + GetMapName(gUnknown_0203A144->mapSecName, gUnknown_0203A144->mapSecId, 16); + } + sub_8123FB0(); + } + gUnknown_0203A144->zoomedCursorMovementFrameCounter = 0; + gUnknown_0203A144->inputCallback = sub_8123254; + return INPUT_EVENT_MOVE_END; + } + else + { + return INPUT_EVENT_MOVE_CONT; + } +} -- cgit v1.2.3 From 35a6d2046a65cfa9532d5c303c1b1b33c39e1687 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 29 Oct 2017 23:08:06 -0400 Subject: sub_8123418 --- src/region_map.c | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index caf6b32a1..9da4d7586 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -32,6 +32,8 @@ u8 _swiopen(void); u8 sub_8123334(void); u16 sub_812386C(u16 x, u16 y); void sub_812378C(s16 x, s16 y); +void sub_8124238(void); +void sub_81243B0(void); // .rodata @@ -344,8 +346,40 @@ u8 sub_8123334(void) gUnknown_0203A144->inputCallback = sub_8123254; return INPUT_EVENT_MOVE_END; } + return INPUT_EVENT_MOVE_CONT; +} + +void sub_8123418(void) +{ + if (gUnknown_0203A144->zoomed == FALSE) + { + gUnknown_0203A144->scrollY = 0; + gUnknown_0203A144->scrollX = 0; + gUnknown_0203A144->unk_040 = 0; + gUnknown_0203A144->unk_03c = 0; + gUnknown_0203A144->unk_060 = gUnknown_0203A144->cursorPosX * 8 - 0x34; + gUnknown_0203A144->unk_062 = gUnknown_0203A144->cursorPosY * 8 - 0x44; + gUnknown_0203A144->unk_044 = (gUnknown_0203A144->unk_060 << 8) / 16; + gUnknown_0203A144->unk_048 = (gUnknown_0203A144->unk_062 << 8) / 16; + gUnknown_0203A144->unk_064 = gUnknown_0203A144->cursorPosX; + gUnknown_0203A144->unk_066 = gUnknown_0203A144->cursorPosY; + gUnknown_0203A144->unk_04c = 0x10000; + gUnknown_0203A144->unk_050 = -0x800; + } else { - return INPUT_EVENT_MOVE_CONT; + gUnknown_0203A144->unk_03c = gUnknown_0203A144->scrollX * 256; + gUnknown_0203A144->unk_040 = gUnknown_0203A144->scrollY * 256; + gUnknown_0203A144->unk_060 = 0; + gUnknown_0203A144->unk_062 = 0; + gUnknown_0203A144->unk_044 = -(gUnknown_0203A144->unk_03c / 16); + gUnknown_0203A144->unk_048 = -(gUnknown_0203A144->unk_040 / 16); + gUnknown_0203A144->cursorPosX = gUnknown_0203A144->unk_064; + gUnknown_0203A144->cursorPosY = gUnknown_0203A144->unk_066; + gUnknown_0203A144->unk_04c = 0x8000; + gUnknown_0203A144->unk_050 = 0x800; } + gUnknown_0203A144->unk_06e = 0; + sub_8124238(); + sub_81243B0(); } -- cgit v1.2.3 From 474df271368917b79071ab101c36857fcab72c4b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Oct 2017 08:39:39 -0400 Subject: through CalcZoomScrollParams --- src/field_region_map.c | 6 +- src/region_map.c | 387 ++++++++++++++++++++++++++++++------------------- 2 files changed, 239 insertions(+), 154 deletions(-) (limited to 'src') diff --git a/src/field_region_map.c b/src/field_region_map.c index 2f73179d9..d70d44d58 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -120,9 +120,9 @@ void sub_8170290(void) switch (gUnknown_0203BCD0->state) { case 0: - sub_8122CDC(&gUnknown_0203BCD0->regionMap, 0); + InitRegionMap(&gUnknown_0203BCD0->regionMap, 0); sub_8124288(0, 0); - sub_81240D4(1, 1); + CreateRegionMapCursor(1, 1); gUnknown_0203BCD0->state ++; break; case 1: @@ -166,7 +166,7 @@ void sub_8170290(void) case 6: if (!gPaletteFade.active) { - sub_812305C(); + FreeRegionMapIconResources(); SetMainCallback2(gUnknown_0203BCD0->callback); if (gUnknown_0203BCD0 != NULL) { diff --git a/src/region_map.c b/src/region_map.c index 9da4d7586..c4d15a8ac 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -2,10 +2,10 @@ // Includes #include "global.h" #include "main.h" -#include "region_map.h" #include "menu.h" #include "palette.h" -#include "bg.h" +#include "trig.h" +#include "region_map.h" // Static type declarations @@ -15,25 +15,26 @@ struct UnkStruct_0203A148 { // Static RAM declarations -EWRAM_DATA struct RegionMap *gUnknown_0203A144 = NULL; +EWRAM_DATA struct RegionMap *gRegionMap = NULL; EWRAM_DATA struct UnkStruct_0203A148 *gUnknown_0203A148 = NULL; // Static ROM declarations -u8 sub_81230C4(void); -u8 sub_8123254(void); -void sub_81236C4(s32 a0, s32 a1, s32 a2, s32 a3, u16 a4, u16 a5, u16 a6); +static u8 ProcessRegionMapInput_Full(void); +static u8 MoveRegionMapCursor_Full(void); +static u8 ProcessRegionMapInput_Zoomed(void); +static u8 MoveRegionMapCursor_Zoomed(void); +void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation); void sub_81237B4(void); void sub_81238AC(void); u8 get_flagnr_blue_points(u16 mapSecId); u16 sub_8123EB4(u16 mapSecId); void sub_8123FB0(void); -u8 _swiopen(void); -u8 sub_8123334(void); u16 sub_812386C(u16 x, u16 y); void sub_812378C(s16 x, s16 y); void sub_8124238(void); void sub_81243B0(void); +void sub_81243DC(void); // .rodata @@ -45,50 +46,50 @@ extern const u8 gUnknown_0859F650[]; // .text -void sub_8122CDC(struct RegionMap *regionMap, u8 argument) +void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed) { - sub_8122CF8(regionMap, NULL, argument); + sub_8122CF8(regionMap, NULL, zoomed); while (sub_8122DB0()); } -void sub_8122CF8(struct RegionMap *regionMap, struct UnkStruct_8122CF8 *arg1, u8 arg2) +void sub_8122CF8(struct RegionMap *regionMap, struct BgTemplate *template, bool8 zoomed) { - gUnknown_0203A144 = regionMap; - gUnknown_0203A144->initStep = 0; - gUnknown_0203A144->zoomed = arg2; - gUnknown_0203A144->inputCallback = arg2 == TRUE ? sub_8123254 : sub_81230C4; - if (arg1 != NULL) + gRegionMap = regionMap; + gRegionMap->initStep = 0; + gRegionMap->zoomed = zoomed; + gRegionMap->inputCallback = zoomed == TRUE ? ProcessRegionMapInput_Zoomed : ProcessRegionMapInput_Full; + if (template != NULL) { - gUnknown_0203A144->bgNum = arg1->unk_0_0; - gUnknown_0203A144->unk_081 = arg1->unk_0_2; - gUnknown_0203A144->unk_082 = arg1->unk_0_4; - gUnknown_0203A144->unk_083 = TRUE; + gRegionMap->bgNum = template->bg; + gRegionMap->charBaseIdx = template->charBaseIndex; + gRegionMap->mapBaseIdx = template->mapBaseIndex; + gRegionMap->bgManaged = TRUE; } else { - gUnknown_0203A144->bgNum = 2; - gUnknown_0203A144->unk_081 = 2; - gUnknown_0203A144->unk_082 = 28; - gUnknown_0203A144->unk_083 = FALSE; + gRegionMap->bgNum = 2; + gRegionMap->charBaseIdx = 2; + gRegionMap->mapBaseIdx = 28; + gRegionMap->bgManaged = FALSE; } } void sub_8122D88(struct RegionMap *regionMap) { - gUnknown_0203A144 = regionMap; + gRegionMap = regionMap; sub_81238AC(); - gUnknown_0203A144->unk_074 = gUnknown_0203A144->cursorPosX; - gUnknown_0203A144->unk_076 = gUnknown_0203A144->cursorPosY; + gRegionMap->unk_074 = gRegionMap->cursorPosX; + gRegionMap->unk_076 = gRegionMap->cursorPosY; } bool8 sub_8122DB0(void) { - switch (gUnknown_0203A144->initStep) + switch (gRegionMap->initStep) { case 0: - if (gUnknown_0203A144->unk_083) + if (gRegionMap->bgManaged) { - decompress_and_copy_tile_data_to_vram(gUnknown_0203A144->bgNum, gUnknown_0859F77C, 0, 0, 0); + decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, gUnknown_0859F77C, 0, 0, 0); } else { @@ -96,11 +97,11 @@ bool8 sub_8122DB0(void) } break; case 1: - if (gUnknown_0203A144->unk_083) + if (gRegionMap->bgManaged) { if (!free_temp_tile_data_buffers_if_possible()) { - decompress_and_copy_tile_data_to_vram(gUnknown_0203A144->bgNum, gUnknown_085A04E0, 0, 0, 1); + decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, gUnknown_085A04E0, 0, 0, 1); } } else @@ -115,54 +116,54 @@ bool8 sub_8122DB0(void) } break; case 3: - LZ77UnCompWram(gUnknown_0859F60C, gUnknown_0203A144->cursorSmallImage); + LZ77UnCompWram(gUnknown_0859F60C, gRegionMap->cursorSmallImage); break; case 4: - LZ77UnCompWram(gUnknown_0859F650, gUnknown_0203A144->cursorLargeImage); + LZ77UnCompWram(gUnknown_0859F650, gRegionMap->cursorLargeImage); break; case 5: sub_81238AC(); - gUnknown_0203A144->unk_074 = gUnknown_0203A144->cursorPosX; - gUnknown_0203A144->unk_076 = gUnknown_0203A144->cursorPosY; - gUnknown_0203A144->mapSecId = sub_8123EB4(gUnknown_0203A144->mapSecId); - gUnknown_0203A144->unk_002 = get_flagnr_blue_points(gUnknown_0203A144->mapSecId); - GetMapName(gUnknown_0203A144->mapSecName, gUnknown_0203A144->mapSecId, 16); + gRegionMap->unk_074 = gRegionMap->cursorPosX; + gRegionMap->unk_076 = gRegionMap->cursorPosY; + gRegionMap->mapSecId = sub_8123EB4(gRegionMap->mapSecId); + gRegionMap->unk_002 = get_flagnr_blue_points(gRegionMap->mapSecId); + GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); break; case 6: - if (gUnknown_0203A144->zoomed == FALSE) + if (gRegionMap->zoomed == FALSE) { - sub_81236C4(0, 0, 0, 0, 0x100, 0x100, 0); + CalcZoomScrollParams(0, 0, 0, 0, 0x100, 0x100, 0); } else { - gUnknown_0203A144->scrollX = gUnknown_0203A144->cursorPosX * 8 - 0x34; - gUnknown_0203A144->scrollY = gUnknown_0203A144->cursorPosY * 8 - 0x44; - gUnknown_0203A144->unk_064 = gUnknown_0203A144->cursorPosX; - gUnknown_0203A144->unk_066 = gUnknown_0203A144->cursorPosY; - sub_81236C4(gUnknown_0203A144->scrollX, gUnknown_0203A144->scrollY, 0x38, 0x48, 0x80, 0x80, 0); + gRegionMap->scrollX = gRegionMap->cursorPosX * 8 - 0x34; + gRegionMap->scrollY = gRegionMap->cursorPosY * 8 - 0x44; + gRegionMap->unk_064 = gRegionMap->cursorPosX; + gRegionMap->unk_066 = gRegionMap->cursorPosY; + CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0); } break; case 7: sub_8123FB0(); sub_81237B4(); - gUnknown_0203A144->cursorSprite = NULL; - gUnknown_0203A144->playerIconSprite = NULL; - gUnknown_0203A144->cursorMovementFrameCounter = 0; - gUnknown_0203A144->blinkPlayerIcon = FALSE; - if (gUnknown_0203A144->unk_083) + gRegionMap->cursorSprite = NULL; + gRegionMap->playerIconSprite = NULL; + gRegionMap->cursorMovementFrameCounter = 0; + gRegionMap->blinkPlayerIcon = FALSE; + if (gRegionMap->bgManaged) { - SetBgAttribute(gUnknown_0203A144->bgNum, BG_CTRL_ATTR_MAPBASEINDEX, 2); - SetBgAttribute(gUnknown_0203A144->bgNum, BG_CTRL_ATTR_VISIBLE, gUnknown_0203A144->unk_081); - SetBgAttribute(gUnknown_0203A144->bgNum, BG_CTRL_ATTR_CHARBASEINDEX, gUnknown_0203A144->unk_082); - SetBgAttribute(gUnknown_0203A144->bgNum, BG_CTRL_ATTR_PRIORITY, 1); - SetBgAttribute(gUnknown_0203A144->bgNum, BG_CTRL_ATTR_SCREENSIZE, 1); + SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_MAPBASEINDEX, 2); + SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_VISIBLE, gRegionMap->charBaseIdx); + SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_CHARBASEINDEX, gRegionMap->mapBaseIdx); + SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_PRIORITY, 1); + SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_SCREENSIZE, 1); } - gUnknown_0203A144->initStep ++; + gRegionMap->initStep ++; return FALSE; default: return FALSE; } - gUnknown_0203A144->initStep ++; + gRegionMap->initStep ++; return TRUE; } @@ -172,52 +173,52 @@ void sub_8123030(u16 a0, u32 a1) CpuCopy16(gPlttBufferFaded + 0x70, gPlttBufferUnfaded + 0x70, 0x60); } -void sub_812305C(void) +void FreeRegionMapIconResources(void) { - if (gUnknown_0203A144->cursorSprite != NULL) + if (gRegionMap->cursorSprite != NULL) { - DestroySprite(gUnknown_0203A144->cursorSprite); - FreeSpriteTilesByTag(gUnknown_0203A144->cursorTileTag); - FreeSpritePaletteByTag(gUnknown_0203A144->cursorPaletteTag); + DestroySprite(gRegionMap->cursorSprite); + FreeSpriteTilesByTag(gRegionMap->cursorTileTag); + FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag); } - if (gUnknown_0203A144->playerIconSprite != NULL) + if (gRegionMap->playerIconSprite != NULL) { - DestroySprite(gUnknown_0203A144->playerIconSprite); - FreeSpriteTilesByTag(gUnknown_0203A144->playerIconTileTag); - FreeSpritePaletteByTag(gUnknown_0203A144->playerIconPaletteTag); + DestroySprite(gRegionMap->playerIconSprite); + FreeSpriteTilesByTag(gRegionMap->playerIconTileTag); + FreeSpritePaletteByTag(gRegionMap->playerIconPaletteTag); } } u8 sub_81230AC(void) { - return gUnknown_0203A144->inputCallback(); + return gRegionMap->inputCallback(); } -u8 sub_81230C4(void) +static u8 ProcessRegionMapInput_Full(void) { u8 input; input = INPUT_EVENT_NONE; - gUnknown_0203A144->cursorDeltaX = 0; - gUnknown_0203A144->cursorDeltaY = 0; - if (gMain.heldKeys & DPAD_UP && gUnknown_0203A144->cursorPosY > 2) + gRegionMap->cursorDeltaX = 0; + gRegionMap->cursorDeltaY = 0; + if (gMain.heldKeys & DPAD_UP && gRegionMap->cursorPosY > 2) { - gUnknown_0203A144->cursorDeltaY = -1; + gRegionMap->cursorDeltaY = -1; input = INPUT_EVENT_MOVE_START; } - if (gMain.heldKeys & DPAD_DOWN && gUnknown_0203A144->cursorPosY < 16) + if (gMain.heldKeys & DPAD_DOWN && gRegionMap->cursorPosY < 16) { - gUnknown_0203A144->cursorDeltaY = +1; + gRegionMap->cursorDeltaY = +1; input = INPUT_EVENT_MOVE_START; } - if (gMain.heldKeys & DPAD_LEFT && gUnknown_0203A144->cursorPosX > 1) + if (gMain.heldKeys & DPAD_LEFT && gRegionMap->cursorPosX > 1) { - gUnknown_0203A144->cursorDeltaX = -1; + gRegionMap->cursorDeltaX = -1; input = INPUT_EVENT_MOVE_START; } - if (gMain.heldKeys & DPAD_RIGHT && gUnknown_0203A144->cursorPosX < 28) + if (gMain.heldKeys & DPAD_RIGHT && gRegionMap->cursorPosX < 28) { - gUnknown_0203A144->cursorDeltaX = +1; + gRegionMap->cursorDeltaX = +1; input = INPUT_EVENT_MOVE_START; } if (gMain.newKeys & A_BUTTON) @@ -230,73 +231,73 @@ u8 sub_81230C4(void) } if (input == INPUT_EVENT_MOVE_START) { - gUnknown_0203A144->cursorMovementFrameCounter = 4; - gUnknown_0203A144->inputCallback = _swiopen; + gRegionMap->cursorMovementFrameCounter = 4; + gRegionMap->inputCallback = MoveRegionMapCursor_Full; } return input; } -u8 _swiopen(void) +static u8 MoveRegionMapCursor_Full(void) { u16 mapSecId; - if (gUnknown_0203A144->cursorMovementFrameCounter != 0) + if (gRegionMap->cursorMovementFrameCounter != 0) { return INPUT_EVENT_MOVE_CONT; } - if (gUnknown_0203A144->cursorDeltaX > 0) + if (gRegionMap->cursorDeltaX > 0) { - gUnknown_0203A144->cursorPosX ++; + gRegionMap->cursorPosX ++; } - if (gUnknown_0203A144->cursorDeltaX < 0) + if (gRegionMap->cursorDeltaX < 0) { - gUnknown_0203A144->cursorPosX --; + gRegionMap->cursorPosX --; } - if (gUnknown_0203A144->cursorDeltaY > 0) + if (gRegionMap->cursorDeltaY > 0) { - gUnknown_0203A144->cursorPosY ++; + gRegionMap->cursorPosY ++; } - if (gUnknown_0203A144->cursorDeltaY < 0) + if (gRegionMap->cursorDeltaY < 0) { - gUnknown_0203A144->cursorPosY --; + gRegionMap->cursorPosY --; } - mapSecId = sub_812386C(gUnknown_0203A144->cursorPosX, gUnknown_0203A144->cursorPosY); - gUnknown_0203A144->unk_002 = get_flagnr_blue_points(mapSecId); - if (mapSecId != gUnknown_0203A144->mapSecId) + mapSecId = sub_812386C(gRegionMap->cursorPosX, gRegionMap->cursorPosY); + gRegionMap->unk_002 = get_flagnr_blue_points(mapSecId); + if (mapSecId != gRegionMap->mapSecId) { - gUnknown_0203A144->mapSecId = mapSecId; - GetMapName(gUnknown_0203A144->mapSecName, gUnknown_0203A144->mapSecId, 16); + gRegionMap->mapSecId = mapSecId; + GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); } sub_8123FB0(); - gUnknown_0203A144->inputCallback = sub_81230C4; + gRegionMap->inputCallback = ProcessRegionMapInput_Full; return INPUT_EVENT_MOVE_END; } -u8 sub_8123254(void) +static u8 ProcessRegionMapInput_Zoomed(void) { u8 input; input = INPUT_EVENT_NONE; - gUnknown_0203A144->zoomedCursorDeltaX = 0; - gUnknown_0203A144->zoomedCursorDeltaY = 0; - if (gMain.heldKeys & DPAD_UP && gUnknown_0203A144->scrollY > -0x34) + gRegionMap->zoomedCursorDeltaX = 0; + gRegionMap->zoomedCursorDeltaY = 0; + if (gMain.heldKeys & DPAD_UP && gRegionMap->scrollY > -0x34) { - gUnknown_0203A144->zoomedCursorDeltaY = -1; + gRegionMap->zoomedCursorDeltaY = -1; input = INPUT_EVENT_MOVE_START; } - if (gMain.heldKeys & DPAD_DOWN && gUnknown_0203A144->scrollY < 0x3c) + if (gMain.heldKeys & DPAD_DOWN && gRegionMap->scrollY < 0x3c) { - gUnknown_0203A144->zoomedCursorDeltaY = +1; + gRegionMap->zoomedCursorDeltaY = +1; input = INPUT_EVENT_MOVE_START; } - if (gMain.heldKeys & DPAD_LEFT && gUnknown_0203A144->scrollX > -0x2c) + if (gMain.heldKeys & DPAD_LEFT && gRegionMap->scrollX > -0x2c) { - gUnknown_0203A144->zoomedCursorDeltaX = -1; + gRegionMap->zoomedCursorDeltaX = -1; input = INPUT_EVENT_MOVE_START; } - if (gMain.heldKeys & DPAD_RIGHT && gUnknown_0203A144->scrollX < 0xac) + if (gMain.heldKeys & DPAD_RIGHT && gRegionMap->scrollX < 0xac) { - gUnknown_0203A144->zoomedCursorDeltaX = +1; + gRegionMap->zoomedCursorDeltaX = +1; input = INPUT_EVENT_MOVE_START; } if (gMain.newKeys & A_BUTTON) @@ -309,41 +310,41 @@ u8 sub_8123254(void) } if (input == INPUT_EVENT_MOVE_START) { - gUnknown_0203A144->inputCallback = sub_8123334; - gUnknown_0203A144->zoomedCursorMovementFrameCounter = 0; + gRegionMap->inputCallback = MoveRegionMapCursor_Zoomed; + gRegionMap->zoomedCursorMovementFrameCounter = 0; } return input; } -u8 sub_8123334(void) +static u8 MoveRegionMapCursor_Zoomed(void) { u16 x; u16 y; u16 mapSecId; - gUnknown_0203A144->scrollY += gUnknown_0203A144->zoomedCursorDeltaY; - gUnknown_0203A144->scrollX += gUnknown_0203A144->zoomedCursorDeltaX; - sub_812378C(gUnknown_0203A144->scrollX, gUnknown_0203A144->scrollY); - gUnknown_0203A144->zoomedCursorMovementFrameCounter ++; - if (gUnknown_0203A144->zoomedCursorMovementFrameCounter == 8) + gRegionMap->scrollY += gRegionMap->zoomedCursorDeltaY; + gRegionMap->scrollX += gRegionMap->zoomedCursorDeltaX; + sub_812378C(gRegionMap->scrollX, gRegionMap->scrollY); + gRegionMap->zoomedCursorMovementFrameCounter ++; + if (gRegionMap->zoomedCursorMovementFrameCounter == 8) { - x = (gUnknown_0203A144->scrollX + 0x2c) / 8 + 1; - y = (gUnknown_0203A144->scrollY + 0x34) / 8 + 2; - if (x != gUnknown_0203A144->unk_064 || y != gUnknown_0203A144->unk_066) + x = (gRegionMap->scrollX + 0x2c) / 8 + 1; + y = (gRegionMap->scrollY + 0x34) / 8 + 2; + if (x != gRegionMap->unk_064 || y != gRegionMap->unk_066) { - gUnknown_0203A144->unk_064 = x; - gUnknown_0203A144->unk_066 = y; + gRegionMap->unk_064 = x; + gRegionMap->unk_066 = y; mapSecId = sub_812386C(x, y); - gUnknown_0203A144->unk_002 = get_flagnr_blue_points(mapSecId); - if (mapSecId != gUnknown_0203A144->mapSecId) + gRegionMap->unk_002 = get_flagnr_blue_points(mapSecId); + if (mapSecId != gRegionMap->mapSecId) { - gUnknown_0203A144->mapSecId = mapSecId; - GetMapName(gUnknown_0203A144->mapSecName, gUnknown_0203A144->mapSecId, 16); + gRegionMap->mapSecId = mapSecId; + GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); } sub_8123FB0(); } - gUnknown_0203A144->zoomedCursorMovementFrameCounter = 0; - gUnknown_0203A144->inputCallback = sub_8123254; + gRegionMap->zoomedCursorMovementFrameCounter = 0; + gRegionMap->inputCallback = ProcessRegionMapInput_Zoomed; return INPUT_EVENT_MOVE_END; } return INPUT_EVENT_MOVE_CONT; @@ -351,35 +352,119 @@ u8 sub_8123334(void) void sub_8123418(void) { - if (gUnknown_0203A144->zoomed == FALSE) + if (gRegionMap->zoomed == FALSE) { - gUnknown_0203A144->scrollY = 0; - gUnknown_0203A144->scrollX = 0; - gUnknown_0203A144->unk_040 = 0; - gUnknown_0203A144->unk_03c = 0; - gUnknown_0203A144->unk_060 = gUnknown_0203A144->cursorPosX * 8 - 0x34; - gUnknown_0203A144->unk_062 = gUnknown_0203A144->cursorPosY * 8 - 0x44; - gUnknown_0203A144->unk_044 = (gUnknown_0203A144->unk_060 << 8) / 16; - gUnknown_0203A144->unk_048 = (gUnknown_0203A144->unk_062 << 8) / 16; - gUnknown_0203A144->unk_064 = gUnknown_0203A144->cursorPosX; - gUnknown_0203A144->unk_066 = gUnknown_0203A144->cursorPosY; - gUnknown_0203A144->unk_04c = 0x10000; - gUnknown_0203A144->unk_050 = -0x800; + gRegionMap->scrollY = 0; + gRegionMap->scrollX = 0; + gRegionMap->unk_040 = 0; + gRegionMap->unk_03c = 0; + gRegionMap->unk_060 = gRegionMap->cursorPosX * 8 - 0x34; + gRegionMap->unk_062 = gRegionMap->cursorPosY * 8 - 0x44; + gRegionMap->unk_044 = (gRegionMap->unk_060 << 8) / 16; + gRegionMap->unk_048 = (gRegionMap->unk_062 << 8) / 16; + gRegionMap->unk_064 = gRegionMap->cursorPosX; + gRegionMap->unk_066 = gRegionMap->cursorPosY; + gRegionMap->unk_04c = 0x10000; + gRegionMap->unk_050 = -0x800; } else { - gUnknown_0203A144->unk_03c = gUnknown_0203A144->scrollX * 256; - gUnknown_0203A144->unk_040 = gUnknown_0203A144->scrollY * 256; - gUnknown_0203A144->unk_060 = 0; - gUnknown_0203A144->unk_062 = 0; - gUnknown_0203A144->unk_044 = -(gUnknown_0203A144->unk_03c / 16); - gUnknown_0203A144->unk_048 = -(gUnknown_0203A144->unk_040 / 16); - gUnknown_0203A144->cursorPosX = gUnknown_0203A144->unk_064; - gUnknown_0203A144->cursorPosY = gUnknown_0203A144->unk_066; - gUnknown_0203A144->unk_04c = 0x8000; - gUnknown_0203A144->unk_050 = 0x800; + gRegionMap->unk_03c = gRegionMap->scrollX * 256; + gRegionMap->unk_040 = gRegionMap->scrollY * 256; + gRegionMap->unk_060 = 0; + gRegionMap->unk_062 = 0; + gRegionMap->unk_044 = -(gRegionMap->unk_03c / 16); + gRegionMap->unk_048 = -(gRegionMap->unk_040 / 16); + gRegionMap->cursorPosX = gRegionMap->unk_064; + gRegionMap->cursorPosY = gRegionMap->unk_066; + gRegionMap->unk_04c = 0x8000; + gRegionMap->unk_050 = 0x800; } - gUnknown_0203A144->unk_06e = 0; + gRegionMap->unk_06e = 0; sub_8124238(); sub_81243B0(); } + +u8 sub_8123514(void) +{ + u8 r4; + + if (gRegionMap->unk_06e >= 16) + return 0; + gRegionMap->unk_06e ++; + if (gRegionMap->unk_06e == 16) + { + gRegionMap->unk_044 = 0; + gRegionMap->unk_048 = 0; + gRegionMap->scrollX = gRegionMap->unk_060; + gRegionMap->scrollY = gRegionMap->unk_062; + gRegionMap->unk_04c = (gRegionMap->zoomed == FALSE) ? (128 << 8) : (256 << 8); + gRegionMap->zoomed = !gRegionMap->zoomed; + gRegionMap->inputCallback = (gRegionMap->zoomed == FALSE) ? ProcessRegionMapInput_Full : ProcessRegionMapInput_Zoomed; + CreateRegionMapCursor(gRegionMap->cursorTileTag, gRegionMap->cursorPaletteTag); + sub_81243DC(); + r4 = 0; + } + else + { + gRegionMap->unk_03c += gRegionMap->unk_044; + gRegionMap->unk_040 += gRegionMap->unk_048; + gRegionMap->scrollX = gRegionMap->unk_03c >> 8; + gRegionMap->scrollY = gRegionMap->unk_040 >> 8; + gRegionMap->unk_04c += gRegionMap->unk_050; + if ((gRegionMap->unk_044 < 0 && gRegionMap->scrollX < gRegionMap->unk_060) + || (gRegionMap->unk_044 > 0 && gRegionMap->scrollX > gRegionMap->unk_060)) + { + gRegionMap->scrollX = gRegionMap->unk_060; + gRegionMap->unk_044 = 0; + } + if ((gRegionMap->unk_048 < 0 && gRegionMap->scrollY < gRegionMap->unk_062) + || (gRegionMap->unk_048 > 0 && gRegionMap->scrollY > gRegionMap->unk_062)) + { + gRegionMap->scrollY = gRegionMap->unk_062; + gRegionMap->unk_048 = 0; + } + if (gRegionMap->zoomed == FALSE) + { + if (gRegionMap->unk_04c < (128 << 8)) + { + gRegionMap->unk_04c = (128 << 8); + gRegionMap->unk_050 = 0; + } + } + else + { + if (gRegionMap->unk_04c > (256 << 8)) + { + gRegionMap->unk_04c = (256 << 8); + gRegionMap->unk_050 = 0; + } + } + r4 = 1; + } + CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, gRegionMap->unk_04c >> 8, gRegionMap->unk_04c >> 8, 0); + return r4; +} + +void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation) +{ + s32 var1; + s32 var2; + s32 var3; + s32 var4; + + gRegionMap->bg2pa = e * gSineTable[rotation + 64] >> 8; + gRegionMap->bg2pb = e * -gSineTable[rotation] >> 8; + gRegionMap->bg2pc = f * gSineTable[rotation] >> 8; + gRegionMap->bg2pd = f * gSineTable[rotation + 64] >> 8; + + var1 = (scrollX << 8) + (c << 8); + var2 = d * gRegionMap->bg2pc + gRegionMap->bg2pa * c; + gRegionMap->bg2x = var1 - var2; + + var3 = (scrollY << 8) + (d << 8); + var4 = gRegionMap->bg2pd * d + gRegionMap->bg2pb * c; + gRegionMap->bg2y = var3 - var4; + + gRegionMap->needUpdateVideoRegs = TRUE; +} -- cgit v1.2.3 From f6a55433a2d93898b03e3ee3a65a2061ceda6a9a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Oct 2017 08:46:36 -0400 Subject: through sub_81237B4 --- src/region_map.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index c4d15a8ac..0a2da354a 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -3,6 +3,7 @@ #include "global.h" #include "main.h" #include "menu.h" +#include "gpu_regs.h" #include "palette.h" #include "trig.h" #include "region_map.h" @@ -454,17 +455,40 @@ void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, s32 var4; gRegionMap->bg2pa = e * gSineTable[rotation + 64] >> 8; - gRegionMap->bg2pb = e * -gSineTable[rotation] >> 8; - gRegionMap->bg2pc = f * gSineTable[rotation] >> 8; + gRegionMap->bg2pc = e * -gSineTable[rotation] >> 8; + gRegionMap->bg2pb = f * gSineTable[rotation] >> 8; gRegionMap->bg2pd = f * gSineTable[rotation + 64] >> 8; var1 = (scrollX << 8) + (c << 8); - var2 = d * gRegionMap->bg2pc + gRegionMap->bg2pa * c; + var2 = d * gRegionMap->bg2pb + gRegionMap->bg2pa * c; gRegionMap->bg2x = var1 - var2; var3 = (scrollY << 8) + (d << 8); - var4 = gRegionMap->bg2pd * d + gRegionMap->bg2pb * c; + var4 = gRegionMap->bg2pd * d + gRegionMap->bg2pc * c; gRegionMap->bg2y = var3 - var4; gRegionMap->needUpdateVideoRegs = TRUE; } + +void sub_812378C(s16 x, s16 y) +{ + gRegionMap->bg2x = (x << 8) + 0x1c00; + gRegionMap->bg2y = (y << 8) + 0x2400; + gRegionMap->needUpdateVideoRegs = TRUE; +} + +void sub_81237B4(void) +{ + if (gRegionMap->needUpdateVideoRegs) + { + SetGpuReg(REG_OFFSET_BG2PA, gRegionMap->bg2pa); + SetGpuReg(REG_OFFSET_BG2PB, gRegionMap->bg2pb); + SetGpuReg(REG_OFFSET_BG2PC, gRegionMap->bg2pc); + SetGpuReg(REG_OFFSET_BG2PD, gRegionMap->bg2pd); + SetGpuReg(REG_OFFSET_BG2X_L, gRegionMap->bg2x); + SetGpuReg(REG_OFFSET_BG2X_H, gRegionMap->bg2x >> 16); + SetGpuReg(REG_OFFSET_BG2Y_L, gRegionMap->bg2y); + SetGpuReg(REG_OFFSET_BG2Y_H, gRegionMap->bg2y >> 16); + gRegionMap->needUpdateVideoRegs = FALSE; + } +} -- cgit v1.2.3 From c324722987e48fa43fd4bad81555b22439e3e932 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Oct 2017 08:58:43 -0400 Subject: through GetRegionMapSectionIdAt --- src/region_map.c | 56 +++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 43 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 0a2da354a..b771d7028 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -8,6 +8,13 @@ #include "trig.h" #include "region_map.h" +#define MAP_WIDTH 28 +#define MAP_HEIGHT 15 +#define MAPCURSOR_X_MIN 1 +#define MAPCURSOR_Y_MIN 2 +#define MAPCURSOR_X_MAX (MAPCURSOR_X_MIN + MAP_WIDTH - 1) +#define MAPCURSOR_Y_MAX (MAPCURSOR_Y_MIN + MAP_HEIGHT - 1) + // Static type declarations struct UnkStruct_0203A148 { @@ -26,12 +33,12 @@ static u8 MoveRegionMapCursor_Full(void); static u8 ProcessRegionMapInput_Zoomed(void); static u8 MoveRegionMapCursor_Zoomed(void); void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation); -void sub_81237B4(void); +void UpdateRegionMapVideoRegs(void); void sub_81238AC(void); u8 get_flagnr_blue_points(u16 mapSecId); u16 sub_8123EB4(u16 mapSecId); void sub_8123FB0(void); -u16 sub_812386C(u16 x, u16 y); +u16 GetRegionMapSectionIdAt(u16 x, u16 y); void sub_812378C(s16 x, s16 y); void sub_8124238(void); void sub_81243B0(void); @@ -39,11 +46,12 @@ void sub_81243DC(void); // .rodata -extern const u8 gUnknown_0859F77C[]; -extern const u8 gUnknown_085A04E0[]; -extern const u16 gUnknown_0859F73C[]; extern const u8 gUnknown_0859F60C[]; extern const u8 gUnknown_0859F650[]; +extern const u16 gUnknown_0859F73C[]; +extern const u8 gUnknown_0859F77C[]; +extern const u8 gUnknown_085A04E0[]; +extern const u8 gUnknown_085A096C[]; // .text @@ -146,7 +154,7 @@ bool8 sub_8122DB0(void) break; case 7: sub_8123FB0(); - sub_81237B4(); + UpdateRegionMapVideoRegs(); gRegionMap->cursorSprite = NULL; gRegionMap->playerIconSprite = NULL; gRegionMap->cursorMovementFrameCounter = 0; @@ -202,22 +210,22 @@ static u8 ProcessRegionMapInput_Full(void) input = INPUT_EVENT_NONE; gRegionMap->cursorDeltaX = 0; gRegionMap->cursorDeltaY = 0; - if (gMain.heldKeys & DPAD_UP && gRegionMap->cursorPosY > 2) + if (gMain.heldKeys & DPAD_UP && gRegionMap->cursorPosY > MAPCURSOR_Y_MIN) { gRegionMap->cursorDeltaY = -1; input = INPUT_EVENT_MOVE_START; } - if (gMain.heldKeys & DPAD_DOWN && gRegionMap->cursorPosY < 16) + if (gMain.heldKeys & DPAD_DOWN && gRegionMap->cursorPosY < MAPCURSOR_Y_MAX) { gRegionMap->cursorDeltaY = +1; input = INPUT_EVENT_MOVE_START; } - if (gMain.heldKeys & DPAD_LEFT && gRegionMap->cursorPosX > 1) + if (gMain.heldKeys & DPAD_LEFT && gRegionMap->cursorPosX > MAPCURSOR_X_MIN) { gRegionMap->cursorDeltaX = -1; input = INPUT_EVENT_MOVE_START; } - if (gMain.heldKeys & DPAD_RIGHT && gRegionMap->cursorPosX < 28) + if (gMain.heldKeys & DPAD_RIGHT && gRegionMap->cursorPosX < MAPCURSOR_X_MAX) { gRegionMap->cursorDeltaX = +1; input = INPUT_EVENT_MOVE_START; @@ -262,7 +270,7 @@ static u8 MoveRegionMapCursor_Full(void) { gRegionMap->cursorPosY --; } - mapSecId = sub_812386C(gRegionMap->cursorPosX, gRegionMap->cursorPosY); + mapSecId = GetRegionMapSectionIdAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY); gRegionMap->unk_002 = get_flagnr_blue_points(mapSecId); if (mapSecId != gRegionMap->mapSecId) { @@ -335,7 +343,7 @@ static u8 MoveRegionMapCursor_Zoomed(void) { gRegionMap->unk_064 = x; gRegionMap->unk_066 = y; - mapSecId = sub_812386C(x, y); + mapSecId = GetRegionMapSectionIdAt(x, y); gRegionMap->unk_002 = get_flagnr_blue_points(mapSecId); if (mapSecId != gRegionMap->mapSecId) { @@ -477,7 +485,7 @@ void sub_812378C(s16 x, s16 y) gRegionMap->needUpdateVideoRegs = TRUE; } -void sub_81237B4(void) +void UpdateRegionMapVideoRegs(void) { if (gRegionMap->needUpdateVideoRegs) { @@ -492,3 +500,25 @@ void sub_81237B4(void) gRegionMap->needUpdateVideoRegs = FALSE; } } + +void sub_8123824(s16 x, s16 y) +{ + CalcZoomScrollParams(x, y, 0x38, 0x48, 0x100, 0x100, 0); + UpdateRegionMapVideoRegs(); + if (gRegionMap->playerIconSprite != NULL) + { + gRegionMap->playerIconSprite->pos2.x = -x; + gRegionMap->playerIconSprite->pos2.y = -y; + } +} + +u16 GetRegionMapSectionIdAt(u16 x, u16 y) +{ + if (y < MAPCURSOR_Y_MIN || y > MAPCURSOR_Y_MAX || x < MAPCURSOR_X_MIN || x > MAPCURSOR_X_MAX) + { + return MAPSEC_NONE2; + } + y -= MAPCURSOR_Y_MIN; + x -= MAPCURSOR_X_MIN; + return gUnknown_085A096C[x + y * MAP_WIDTH]; +} -- cgit v1.2.3 From 525b17a110ee0099391eb91d9c99b4a6b88e46d8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Oct 2017 21:08:28 -0400 Subject: sub_81238AC --- src/region_map.c | 202 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 195 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index b771d7028..30d5bc087 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -6,6 +6,8 @@ #include "gpu_regs.h" #include "palette.h" #include "trig.h" +#include "map_constants.h" +#include "overworld.h" #include "region_map.h" #define MAP_WIDTH 28 @@ -21,6 +23,13 @@ struct UnkStruct_0203A148 { u8 filler_000[0xa74]; }; +struct RegionMapLocation +{ + u8 x, y; + u8 width, height; + const u8 *regionMapSectionId; +}; + // Static RAM declarations EWRAM_DATA struct RegionMap *gRegionMap = NULL; @@ -34,12 +43,15 @@ static u8 ProcessRegionMapInput_Zoomed(void); static u8 MoveRegionMapCursor_Zoomed(void); void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation); void UpdateRegionMapVideoRegs(void); -void sub_81238AC(void); +u16 GetRegionMapSectionIdAt(u16 x, u16 y); +void sub_812378C(s16 x, s16 y); +static void sub_81238AC(void); u8 get_flagnr_blue_points(u16 mapSecId); u16 sub_8123EB4(u16 mapSecId); +void sub_8123F30(u16 *x, u16 *y); void sub_8123FB0(void); -u16 GetRegionMapSectionIdAt(u16 x, u16 y); -void sub_812378C(s16 x, s16 y); +void sub_8123C00(void); +bool32 sub_8123F74(u8 mapSecId); void sub_8124238(void); void sub_81243B0(void); void sub_81243DC(void); @@ -52,6 +64,7 @@ extern const u16 gUnknown_0859F73C[]; extern const u8 gUnknown_0859F77C[]; extern const u8 gUnknown_085A04E0[]; extern const u8 gUnknown_085A096C[]; +extern const struct RegionMapLocation gRegionMapEntries[]; // .text @@ -399,7 +412,9 @@ u8 sub_8123514(void) u8 r4; if (gRegionMap->unk_06e >= 16) + { return 0; + } gRegionMap->unk_06e ++; if (gRegionMap->unk_06e == 16) { @@ -421,14 +436,12 @@ u8 sub_8123514(void) gRegionMap->scrollX = gRegionMap->unk_03c >> 8; gRegionMap->scrollY = gRegionMap->unk_040 >> 8; gRegionMap->unk_04c += gRegionMap->unk_050; - if ((gRegionMap->unk_044 < 0 && gRegionMap->scrollX < gRegionMap->unk_060) - || (gRegionMap->unk_044 > 0 && gRegionMap->scrollX > gRegionMap->unk_060)) + if ((gRegionMap->unk_044 < 0 && gRegionMap->scrollX < gRegionMap->unk_060) || (gRegionMap->unk_044 > 0 && gRegionMap->scrollX > gRegionMap->unk_060)) { gRegionMap->scrollX = gRegionMap->unk_060; gRegionMap->unk_044 = 0; } - if ((gRegionMap->unk_048 < 0 && gRegionMap->scrollY < gRegionMap->unk_062) - || (gRegionMap->unk_048 > 0 && gRegionMap->scrollY > gRegionMap->unk_062)) + if ((gRegionMap->unk_048 < 0 && gRegionMap->scrollY < gRegionMap->unk_062) || (gRegionMap->unk_048 > 0 && gRegionMap->scrollY > gRegionMap->unk_062)) { gRegionMap->scrollY = gRegionMap->unk_062; gRegionMap->unk_048 = 0; @@ -522,3 +535,178 @@ u16 GetRegionMapSectionIdAt(u16 x, u16 y) x -= MAPCURSOR_X_MIN; return gUnknown_085A096C[x + y * MAP_WIDTH]; } + +static void sub_81238AC(void) +{ + const struct MapHeader *mapHeader; + u16 mapWidth; + u16 mapHeight; + u16 x; + u16 y; + u16 r1; + u16 r9; + struct WarpData *r4; + + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SS_TIDAL_CORRIDOR + && (gSaveBlock1Ptr->location.mapNum == MAP_ID_SS_TIDAL_CORRIDOR + || gSaveBlock1Ptr->location.mapNum == MAP_ID_SS_TIDAL_LOWER_DECK + || gSaveBlock1Ptr->location.mapNum == MAP_ID_SS_TIDAL_ROOMS)) + { + sub_8123C00(); + return; + } + + switch (get_map_light_level_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)) + { + default: + case 1: + case 2: + case 3: + case 5: + case 6: + gRegionMap->mapSecId = gMapHeader.regionMapSectionId; + gRegionMap->playerIsInCave = FALSE; + mapWidth = gMapHeader.mapData->width; + mapHeight = gMapHeader.mapData->height; + x = gSaveBlock1Ptr->pos.x; + y = gSaveBlock1Ptr->pos.y; + if (gRegionMap->mapSecId == MAPSEC_UNDERWATER || gRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE) + { + gRegionMap->playerIsInCave = TRUE; + } + break; + case 4: + case 7: + if (gMapHeader.flags & 0x02) + { + mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1Ptr->warp4.mapGroup, gSaveBlock1Ptr->warp4.mapNum); + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + gRegionMap->playerIsInCave = TRUE; + mapWidth = mapHeader->mapData->width; + mapHeight = mapHeader->mapData->height; + x = gSaveBlock1Ptr->warp4.x; + y = gSaveBlock1Ptr->warp4.y; + } + else + { + gRegionMap->mapSecId = gMapHeader.regionMapSectionId; + gRegionMap->playerIsInCave = TRUE; + mapWidth = 1; + mapHeight = 1; + x = 1; + y = 1; + } + break; + case 9: + mapHeader = get_mapheader_by_bank_and_number((u16)gSaveBlock1Ptr->warp2.mapGroup, (u16)gSaveBlock1Ptr->warp2.mapNum); + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + gRegionMap->playerIsInCave = TRUE; + mapWidth = mapHeader->mapData->width; + mapHeight = mapHeader->mapData->height; + x = gSaveBlock1Ptr->warp2.x; + y = gSaveBlock1Ptr->warp2.y; + break; + case 8: + + gRegionMap->mapSecId = gMapHeader.regionMapSectionId; + if (gRegionMap->mapSecId != MAPSEC_NONE) + { + r4 = &gSaveBlock1Ptr->warp4; + mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum); + } + else + { + r4 = &gSaveBlock1Ptr->warp2; + mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum); + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + } + if (sub_8123F74(gRegionMap->mapSecId)) + { + gRegionMap->playerIsInCave = TRUE; + } + else + { + gRegionMap->playerIsInCave = FALSE; + } + mapWidth = mapHeader->mapData->width; + mapHeight = mapHeader->mapData->height; + x = r4->x; + y = r4->y; + break; + } + + r9 = x; + + r1 = mapWidth / gRegionMapEntries[gRegionMap->mapSecId].width; + if (r1 == 0) + { + r1 = 1; + } + x /= r1; + if (x >= gRegionMapEntries[gRegionMap->mapSecId].width) + { + x = gRegionMapEntries[gRegionMap->mapSecId].width - 1; + } + + r1 = mapHeight / gRegionMapEntries[gRegionMap->mapSecId].height; + if (r1 == 0) + { + r1 = 1; + } + y /= r1; + if (y >= gRegionMapEntries[gRegionMap->mapSecId].height) + { + y = gRegionMapEntries[gRegionMap->mapSecId].height - 1; + } + + switch (gRegionMap->mapSecId) + { + case MAPSEC_ROUTE_114: + if (y != 0) + { + x = 0; + } + break; + case MAPSEC_ROUTE_126: + case MAPSEC_UNDERWATER_125: + x = 0; + if (gSaveBlock1Ptr->pos.x > 32) + { + x = 1; + } + if (gSaveBlock1Ptr->pos.x > 0x33) + { + x++; + } + y = 0; + if (gSaveBlock1Ptr->pos.y > 0x25) + { + y = 1; + } + if (gSaveBlock1Ptr->pos.y > 0x38) + { + y++; + } + break; + case MAPSEC_ROUTE_121: + x = 0; + if (r9 > 14) + { + x = 1; + } + if (r9 > 0x1C) + { + x++; + } + if (r9 > 0x36) + { + x++; + } + break; + case MAPSEC_UNDERWATER_MARINE_CAVE: + sub_8123F30(&gRegionMap->cursorPosX, &gRegionMap->cursorPosY); + return; + } + gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; + gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; +} -- cgit v1.2.3 From cd9022f929525eca670bc17cca884f927d232be4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Oct 2017 21:14:52 -0400 Subject: sub_8123C00 --- src/region_map.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 30d5bc087..dd3654bee 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -8,6 +8,7 @@ #include "trig.h" #include "map_constants.h" #include "overworld.h" +#include "rom6.h" #include "region_map.h" #define MAP_WIDTH 28 @@ -46,11 +47,11 @@ void UpdateRegionMapVideoRegs(void); u16 GetRegionMapSectionIdAt(u16 x, u16 y); void sub_812378C(s16 x, s16 y); static void sub_81238AC(void); +static void sub_8123C00(void); u8 get_flagnr_blue_points(u16 mapSecId); u16 sub_8123EB4(u16 mapSecId); void sub_8123F30(u16 *x, u16 *y); void sub_8123FB0(void); -void sub_8123C00(void); bool32 sub_8123F74(u8 mapSecId); void sub_8124238(void); void sub_81243B0(void); @@ -710,3 +711,55 @@ static void sub_81238AC(void) gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; } + +static void sub_8123C00(void) +{ + u16 y; + u16 x; + u8 mapGroup; + u8 mapNum; + u16 r1; + s16 sp2; + s16 sp4; + const struct MapHeader *mapHeader; + + y = 0; + x = 0; + switch (GetSSTidalLocation(&mapGroup, &mapNum, &sp2, &sp4)) + { + case 1: + gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY; + break; + case 2: + gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY; + break; + case 3: + gRegionMap->mapSecId = MAPSEC_ROUTE_124; + break; + case 4: + gRegionMap->mapSecId = MAPSEC_ROUTE_131; + break; + default: + case 0: + mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum); + + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + r1 = mapHeader->mapData->width / gRegionMapEntries[gRegionMap->mapSecId].width; + if (r1 == 0) + r1 = 1; + x = sp2 / r1; + if (x >= gRegionMapEntries[gRegionMap->mapSecId].width) + x = gRegionMapEntries[gRegionMap->mapSecId].width - 1; + + r1 = mapHeader->mapData->height / gRegionMapEntries[gRegionMap->mapSecId].height; + if (r1 == 0) + r1 = 1; + y = sp4 / r1; + if (y >= gRegionMapEntries[gRegionMap->mapSecId].height) + y = gRegionMapEntries[gRegionMap->mapSecId].height - 1; + break; + } + gRegionMap->playerIsInCave = FALSE; + gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; + gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; +} -- cgit v1.2.3 From f0c71c7e3fb13a4f909fed419cfa7935ebea2c4d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Oct 2017 21:20:31 -0400 Subject: get_flagnr_blue_points --- src/region_map.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index dd3654bee..dd708266b 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -8,6 +8,8 @@ #include "trig.h" #include "map_constants.h" #include "overworld.h" +#include "flags.h" +#include "event_data.h" #include "rom6.h" #include "region_map.h" @@ -48,7 +50,7 @@ u16 GetRegionMapSectionIdAt(u16 x, u16 y); void sub_812378C(s16 x, s16 y); static void sub_81238AC(void); static void sub_8123C00(void); -u8 get_flagnr_blue_points(u16 mapSecId); +static u8 get_flagnr_blue_points(u16 mapSecId); u16 sub_8123EB4(u16 mapSecId); void sub_8123F30(u16 *x, u16 *y); void sub_8123FB0(void); @@ -763,3 +765,50 @@ static void sub_8123C00(void) gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; } + +static u8 get_flagnr_blue_points(u16 mapSecId) +{ + switch (mapSecId) + { + case MAPSEC_NONE2: + return 0; + case MAPSEC_LITTLEROOT_TOWN: + return FlagGet(FLAG_VISITED_LITTLEROOT_TOWN) ? 2 : 3; + case MAPSEC_OLDALE_TOWN: + return FlagGet(FLAG_VISITED_OLDALE_TOWN) ? 2 : 3; + case MAPSEC_DEWFORD_TOWN: + return FlagGet(FLAG_VISITED_DEWFORD_TOWN) ? 2 : 3; + case MAPSEC_LAVARIDGE_TOWN: + return FlagGet(FLAG_VISITED_LAVARIDGE_TOWN) ? 2 : 3; + case MAPSEC_FALLARBOR_TOWN: + return FlagGet(FLAG_VISITED_FALLARBOR_TOWN) ? 2 : 3; + case MAPSEC_VERDANTURF_TOWN: + return FlagGet(FLAG_VISITED_VERDANTURF_TOWN) ? 2 : 3; + case MAPSEC_PACIFIDLOG_TOWN: + return FlagGet(FLAG_VISITED_PACIFIDLOG_TOWN) ? 2 : 3; + case MAPSEC_PETALBURG_CITY: + return FlagGet(FLAG_VISITED_PETALBURG_CITY) ? 2 : 3; + case MAPSEC_SLATEPORT_CITY: + return FlagGet(FLAG_VISITED_SLATEPORT_CITY) ? 2 : 3; + case MAPSEC_MAUVILLE_CITY: + return FlagGet(FLAG_VISITED_MAUVILLE_CITY) ? 2 : 3; + case MAPSEC_RUSTBORO_CITY: + return FlagGet(FLAG_VISITED_RUSTBORO_CITY) ? 2 : 3; + case MAPSEC_FORTREE_CITY: + return FlagGet(FLAG_VISITED_FORTREE_CITY) ? 2 : 3; + case MAPSEC_LILYCOVE_CITY: + return FlagGet(FLAG_VISITED_LILYCOVE_CITY) ? 2 : 3; + case MAPSEC_MOSSDEEP_CITY: + return FlagGet(FLAG_VISITED_MOSSDEEP_CITY) ? 2 : 3; + case MAPSEC_SOOTOPOLIS_CITY: + return FlagGet(FLAG_VISITED_SOOTOPOLIS_CITY) ? 2 : 3; + case MAPSEC_EVER_GRANDE_CITY: + return FlagGet(FLAG_VISITED_EVER_GRANDE_CITY) ? 2 : 3; + case MAPSEC_BATTLE_FRONTIER: + return FlagGet(FLAG_UNLOCK_BATTLE_FRONTIER) ? 4 : 0; + case MAPSEC_SOUTHERN_ISLAND: + return FlagGet(FLAG_UNLOCK_SOUTHERN_ISLAND) ? 1 : 0; + default: + return 1; + } +} -- cgit v1.2.3 From 7b6792230a770dd67c94a3b34aecba87ad9a05db Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Oct 2017 21:34:19 -0400 Subject: sub_8123EB4 --- src/field_region_map.c | 2 +- src/region_map.c | 75 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 53 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/field_region_map.c b/src/field_region_map.c index d70d44d58..6c483c6b6 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -181,7 +181,7 @@ void sub_8170290(void) static void sub_8170428(void) { - if (gUnknown_0203BCD0->regionMap.unk_002 != 0) + if (gUnknown_0203BCD0->regionMap.iconDrawType != 0) { FillWindowPixelBuffer(0, 0x11); PrintTextOnWindow(0, 1, gUnknown_0203BCD0->regionMap.mapSecName, 0, 1, 0, NULL); diff --git a/src/region_map.c b/src/region_map.c index dd708266b..9b333779e 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -52,6 +52,7 @@ static void sub_81238AC(void); static void sub_8123C00(void); static u8 get_flagnr_blue_points(u16 mapSecId); u16 sub_8123EB4(u16 mapSecId); +u16 sub_8123F04(void); void sub_8123F30(u16 *x, u16 *y); void sub_8123FB0(void); bool32 sub_8123F74(u8 mapSecId); @@ -68,6 +69,8 @@ extern const u8 gUnknown_0859F77C[]; extern const u8 gUnknown_085A04E0[]; extern const u8 gUnknown_085A096C[]; extern const struct RegionMapLocation gRegionMapEntries[]; +extern const u16 gUnknown_085A1B84[]; +extern const u16 gUnknown_085A1B24[][2]; // .text @@ -151,7 +154,7 @@ bool8 sub_8122DB0(void) gRegionMap->unk_074 = gRegionMap->cursorPosX; gRegionMap->unk_076 = gRegionMap->cursorPosY; gRegionMap->mapSecId = sub_8123EB4(gRegionMap->mapSecId); - gRegionMap->unk_002 = get_flagnr_blue_points(gRegionMap->mapSecId); + gRegionMap->iconDrawType = get_flagnr_blue_points(gRegionMap->mapSecId); GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); break; case 6: @@ -287,7 +290,7 @@ static u8 MoveRegionMapCursor_Full(void) gRegionMap->cursorPosY --; } mapSecId = GetRegionMapSectionIdAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY); - gRegionMap->unk_002 = get_flagnr_blue_points(mapSecId); + gRegionMap->iconDrawType = get_flagnr_blue_points(mapSecId); if (mapSecId != gRegionMap->mapSecId) { gRegionMap->mapSecId = mapSecId; @@ -360,7 +363,7 @@ static u8 MoveRegionMapCursor_Zoomed(void) gRegionMap->unk_064 = x; gRegionMap->unk_066 = y; mapSecId = GetRegionMapSectionIdAt(x, y); - gRegionMap->unk_002 = get_flagnr_blue_points(mapSecId); + gRegionMap->iconDrawType = get_flagnr_blue_points(mapSecId); if (mapSecId != gRegionMap->mapSecId) { gRegionMap->mapSecId = mapSecId; @@ -771,44 +774,70 @@ static u8 get_flagnr_blue_points(u16 mapSecId) switch (mapSecId) { case MAPSEC_NONE2: - return 0; + return MAPSECTYPE_NONE; case MAPSEC_LITTLEROOT_TOWN: - return FlagGet(FLAG_VISITED_LITTLEROOT_TOWN) ? 2 : 3; + return FlagGet(FLAG_VISITED_LITTLEROOT_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_OLDALE_TOWN: - return FlagGet(FLAG_VISITED_OLDALE_TOWN) ? 2 : 3; + return FlagGet(FLAG_VISITED_OLDALE_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_DEWFORD_TOWN: - return FlagGet(FLAG_VISITED_DEWFORD_TOWN) ? 2 : 3; + return FlagGet(FLAG_VISITED_DEWFORD_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_LAVARIDGE_TOWN: - return FlagGet(FLAG_VISITED_LAVARIDGE_TOWN) ? 2 : 3; + return FlagGet(FLAG_VISITED_LAVARIDGE_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_FALLARBOR_TOWN: - return FlagGet(FLAG_VISITED_FALLARBOR_TOWN) ? 2 : 3; + return FlagGet(FLAG_VISITED_FALLARBOR_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_VERDANTURF_TOWN: - return FlagGet(FLAG_VISITED_VERDANTURF_TOWN) ? 2 : 3; + return FlagGet(FLAG_VISITED_VERDANTURF_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_PACIFIDLOG_TOWN: - return FlagGet(FLAG_VISITED_PACIFIDLOG_TOWN) ? 2 : 3; + return FlagGet(FLAG_VISITED_PACIFIDLOG_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_PETALBURG_CITY: - return FlagGet(FLAG_VISITED_PETALBURG_CITY) ? 2 : 3; + return FlagGet(FLAG_VISITED_PETALBURG_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_SLATEPORT_CITY: - return FlagGet(FLAG_VISITED_SLATEPORT_CITY) ? 2 : 3; + return FlagGet(FLAG_VISITED_SLATEPORT_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_MAUVILLE_CITY: - return FlagGet(FLAG_VISITED_MAUVILLE_CITY) ? 2 : 3; + return FlagGet(FLAG_VISITED_MAUVILLE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_RUSTBORO_CITY: - return FlagGet(FLAG_VISITED_RUSTBORO_CITY) ? 2 : 3; + return FlagGet(FLAG_VISITED_RUSTBORO_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_FORTREE_CITY: - return FlagGet(FLAG_VISITED_FORTREE_CITY) ? 2 : 3; + return FlagGet(FLAG_VISITED_FORTREE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_LILYCOVE_CITY: - return FlagGet(FLAG_VISITED_LILYCOVE_CITY) ? 2 : 3; + return FlagGet(FLAG_VISITED_LILYCOVE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_MOSSDEEP_CITY: - return FlagGet(FLAG_VISITED_MOSSDEEP_CITY) ? 2 : 3; + return FlagGet(FLAG_VISITED_MOSSDEEP_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_SOOTOPOLIS_CITY: - return FlagGet(FLAG_VISITED_SOOTOPOLIS_CITY) ? 2 : 3; + return FlagGet(FLAG_VISITED_SOOTOPOLIS_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_EVER_GRANDE_CITY: - return FlagGet(FLAG_VISITED_EVER_GRANDE_CITY) ? 2 : 3; + return FlagGet(FLAG_VISITED_EVER_GRANDE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; case MAPSEC_BATTLE_FRONTIER: - return FlagGet(FLAG_UNLOCK_BATTLE_FRONTIER) ? 4 : 0; + return FlagGet(FLAG_UNLOCK_BATTLE_FRONTIER) ? MAPSECTYPE_BATTLE_FRONTIER : MAPSECTYPE_NONE; case MAPSEC_SOUTHERN_ISLAND: - return FlagGet(FLAG_UNLOCK_SOUTHERN_ISLAND) ? 1 : 0; + return FlagGet(FLAG_UNLOCK_SOUTHERN_ISLAND) ? MAPSECTYPE_PLAIN : MAPSECTYPE_NONE; default: - return 1; + return MAPSECTYPE_PLAIN; } } + +u16 sub_8123E9C(u16 x, u16 y) +{ + return GetRegionMapSectionIdAt(x, y); +} + +u16 sub_8123EB4(u16 mapSecId) +{ + u32 i; + + for (i = 0; i < 3; i ++) + { + if (gUnknown_085A1B84[i] == mapSecId) + { + return sub_8123F04(); + } + } + for (i = 0; gUnknown_085A1B24[i][0] != MAPSEC_NONE2; i ++) + { + if (gUnknown_085A1B24[i][0] == mapSecId) + { + return gUnknown_085A1B24[i][1]; + } + } + return mapSecId; +} -- cgit v1.2.3 From ccbeaccc9ba3d33848f4c276a65661948b41624e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Oct 2017 21:47:37 -0400 Subject: sub_8123F30 --- src/region_map.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 9b333779e..db41284af 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -69,8 +69,10 @@ extern const u8 gUnknown_0859F77C[]; extern const u8 gUnknown_085A04E0[]; extern const u8 gUnknown_085A096C[]; extern const struct RegionMapLocation gRegionMapEntries[]; -extern const u16 gUnknown_085A1B84[]; extern const u16 gUnknown_085A1B24[][2]; +extern const u16 gUnknown_085A1B84[]; +extern const u16 gUnknown_085A1B8A[]; +extern const struct UCoords16 gUnknown_085A1BAC[]; // .text @@ -841,3 +843,29 @@ u16 sub_8123EB4(u16 mapSecId) } return mapSecId; } + +u16 sub_8123F04(void) +{ + s16 idx; + + idx = VarGet(VAR_0x4037) - 1; + if (idx < 0 || idx > 15) + { + idx = 0; + } + return gUnknown_085A1B8A[idx]; +} + +void sub_8123F30(u16 *x, u16 *y) +{ + u16 idx; + + idx = VarGet(VAR_0x4037); + if (idx < 9 || idx > 16) + { + idx = 9; + } + idx -= 9; + *x = gUnknown_085A1BAC[idx].x + MAPCURSOR_X_MIN; + *y = gUnknown_085A1BAC[idx].y + MAPCURSOR_Y_MIN; +} -- cgit v1.2.3 From 4db83e00971029fe97282496f76432e3c88d1ba7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Oct 2017 22:20:09 -0400 Subject: through sub_8123F9C --- src/region_map.c | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index db41284af..a5a84a187 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -44,16 +44,15 @@ static u8 ProcessRegionMapInput_Full(void); static u8 MoveRegionMapCursor_Full(void); static u8 ProcessRegionMapInput_Zoomed(void); static u8 MoveRegionMapCursor_Zoomed(void); -void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation); -void UpdateRegionMapVideoRegs(void); +static void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation); u16 GetRegionMapSectionIdAt(u16 x, u16 y); -void sub_812378C(s16 x, s16 y); +static void sub_812378C(s16 x, s16 y); static void sub_81238AC(void); static void sub_8123C00(void); static u8 get_flagnr_blue_points(u16 mapSecId); u16 sub_8123EB4(u16 mapSecId); -u16 sub_8123F04(void); -void sub_8123F30(u16 *x, u16 *y); +static u16 sub_8123F04(void); +static void sub_8123F30(u16 *x, u16 *y); void sub_8123FB0(void); bool32 sub_8123F74(u8 mapSecId); void sub_8124238(void); @@ -73,6 +72,7 @@ extern const u16 gUnknown_085A1B24[][2]; extern const u16 gUnknown_085A1B84[]; extern const u16 gUnknown_085A1B8A[]; extern const struct UCoords16 gUnknown_085A1BAC[]; +extern const u8 gUnknown_085A1BCC[]; // .text @@ -476,7 +476,7 @@ u8 sub_8123514(void) return r4; } -void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation) +static void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation) { s32 var1; s32 var2; @@ -499,7 +499,7 @@ void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, gRegionMap->needUpdateVideoRegs = TRUE; } -void sub_812378C(s16 x, s16 y) +static void sub_812378C(s16 x, s16 y) { gRegionMap->bg2x = (x << 8) + 0x1c00; gRegionMap->bg2y = (y << 8) + 0x2400; @@ -844,7 +844,7 @@ u16 sub_8123EB4(u16 mapSecId) return mapSecId; } -u16 sub_8123F04(void) +static u16 sub_8123F04(void) { s16 idx; @@ -856,7 +856,7 @@ u16 sub_8123F04(void) return gUnknown_085A1B8A[idx]; } -void sub_8123F30(u16 *x, u16 *y) +static void sub_8123F30(u16 *x, u16 *y) { u16 idx; @@ -869,3 +869,22 @@ void sub_8123F30(u16 *x, u16 *y) *x = gUnknown_085A1BAC[idx].x + MAPCURSOR_X_MIN; *y = gUnknown_085A1BAC[idx].y + MAPCURSOR_Y_MIN; } + +bool32 sub_8123F74(u8 mapSecId) +{ + int i; + + for (i = 0; i == 0; i ++) + { + if (gUnknown_085A1BCC[i] == mapSecId) + { + return TRUE; + } + } + return FALSE; +} + +u16 sub_8123F9C(u16 mapSecId) +{ + return sub_8123EB4(mapSecId); +} -- cgit v1.2.3 From 853ced668731a5107be87bbe69aa8d1891504865 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Oct 2017 22:35:28 -0400 Subject: sub_8123FB0 --- src/region_map.c | 81 +++++++++++++++++++++++++++++++++++++++++++++----------- src/tv.c | 4 +-- 2 files changed, 67 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index a5a84a187..8e31168d6 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -53,8 +53,9 @@ static u8 get_flagnr_blue_points(u16 mapSecId); u16 sub_8123EB4(u16 mapSecId); static u16 sub_8123F04(void); static void sub_8123F30(u16 *x, u16 *y); -void sub_8123FB0(void); -bool32 sub_8123F74(u8 mapSecId); +static bool32 sub_8123F74(u8 mapSecId); +static void sub_8123FB0(void); +bool8 sub_8124038(u16 y); void sub_8124238(void); void sub_81243B0(void); void sub_81243DC(void); @@ -168,8 +169,8 @@ bool8 sub_8122DB0(void) { gRegionMap->scrollX = gRegionMap->cursorPosX * 8 - 0x34; gRegionMap->scrollY = gRegionMap->cursorPosY * 8 - 0x44; - gRegionMap->unk_064 = gRegionMap->cursorPosX; - gRegionMap->unk_066 = gRegionMap->cursorPosY; + gRegionMap->zoomedCursorPosX = gRegionMap->cursorPosX; + gRegionMap->zoomedCursorPosY = gRegionMap->cursorPosY; CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0); } break; @@ -360,10 +361,10 @@ static u8 MoveRegionMapCursor_Zoomed(void) { x = (gRegionMap->scrollX + 0x2c) / 8 + 1; y = (gRegionMap->scrollY + 0x34) / 8 + 2; - if (x != gRegionMap->unk_064 || y != gRegionMap->unk_066) + if (x != gRegionMap->zoomedCursorPosX || y != gRegionMap->zoomedCursorPosY) { - gRegionMap->unk_064 = x; - gRegionMap->unk_066 = y; + gRegionMap->zoomedCursorPosX = x; + gRegionMap->zoomedCursorPosY = y; mapSecId = GetRegionMapSectionIdAt(x, y); gRegionMap->iconDrawType = get_flagnr_blue_points(mapSecId); if (mapSecId != gRegionMap->mapSecId) @@ -392,8 +393,8 @@ void sub_8123418(void) gRegionMap->unk_062 = gRegionMap->cursorPosY * 8 - 0x44; gRegionMap->unk_044 = (gRegionMap->unk_060 << 8) / 16; gRegionMap->unk_048 = (gRegionMap->unk_062 << 8) / 16; - gRegionMap->unk_064 = gRegionMap->cursorPosX; - gRegionMap->unk_066 = gRegionMap->cursorPosY; + gRegionMap->zoomedCursorPosX = gRegionMap->cursorPosX; + gRegionMap->zoomedCursorPosY = gRegionMap->cursorPosY; gRegionMap->unk_04c = 0x10000; gRegionMap->unk_050 = -0x800; } @@ -405,8 +406,8 @@ void sub_8123418(void) gRegionMap->unk_062 = 0; gRegionMap->unk_044 = -(gRegionMap->unk_03c / 16); gRegionMap->unk_048 = -(gRegionMap->unk_040 / 16); - gRegionMap->cursorPosX = gRegionMap->unk_064; - gRegionMap->cursorPosY = gRegionMap->unk_066; + gRegionMap->cursorPosX = gRegionMap->zoomedCursorPosX; + gRegionMap->cursorPosY = gRegionMap->zoomedCursorPosY; gRegionMap->unk_04c = 0x8000; gRegionMap->unk_050 = 0x800; } @@ -537,7 +538,7 @@ u16 GetRegionMapSectionIdAt(u16 x, u16 y) { if (y < MAPCURSOR_Y_MIN || y > MAPCURSOR_Y_MAX || x < MAPCURSOR_X_MIN || x > MAPCURSOR_X_MAX) { - return MAPSEC_NONE2; + return MAPSEC_NONE; } y -= MAPCURSOR_Y_MIN; x -= MAPCURSOR_X_MIN; @@ -617,7 +618,7 @@ static void sub_81238AC(void) case 8: gRegionMap->mapSecId = gMapHeader.regionMapSectionId; - if (gRegionMap->mapSecId != MAPSEC_NONE) + if (gRegionMap->mapSecId != MAPSEC_UNK_0x57) { r4 = &gSaveBlock1Ptr->warp4; mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum); @@ -775,7 +776,7 @@ static u8 get_flagnr_blue_points(u16 mapSecId) { switch (mapSecId) { - case MAPSEC_NONE2: + case MAPSEC_NONE: return MAPSECTYPE_NONE; case MAPSEC_LITTLEROOT_TOWN: return FlagGet(FLAG_VISITED_LITTLEROOT_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY; @@ -834,7 +835,7 @@ u16 sub_8123EB4(u16 mapSecId) return sub_8123F04(); } } - for (i = 0; gUnknown_085A1B24[i][0] != MAPSEC_NONE2; i ++) + for (i = 0; gUnknown_085A1B24[i][0] != MAPSEC_NONE; i ++) { if (gUnknown_085A1B24[i][0] == mapSecId) { @@ -870,7 +871,7 @@ static void sub_8123F30(u16 *x, u16 *y) *y = gUnknown_085A1BAC[idx].y + MAPCURSOR_Y_MIN; } -bool32 sub_8123F74(u8 mapSecId) +static bool32 sub_8123F74(u8 mapSecId) { int i; @@ -888,3 +889,51 @@ u16 sub_8123F9C(u16 mapSecId) { return sub_8123EB4(mapSecId); } + +static void sub_8123FB0(void) +{ + u16 x; + u16 y; + u16 unk_003; + + if (gRegionMap->mapSecId == MAPSEC_NONE) + { + gRegionMap->unk_003 = 0; + return; + } + if (!gRegionMap->zoomed) + { + x = gRegionMap->cursorPosX; + y = gRegionMap->cursorPosY; + } + else + { + x = gRegionMap->zoomedCursorPosX; + y = gRegionMap->zoomedCursorPosY; + } + unk_003 = 0; + while (1) + { + if (x <= MAPCURSOR_X_MIN) + { + if (sub_8124038(y)) + { + y --; + x = MAPCURSOR_X_MAX + 1; + } + else + { + break; + } + } + else + { + x --; + if (GetRegionMapSectionIdAt(x, y) == gRegionMap->mapSecId) + { + unk_003 ++; + } + } + } + gRegionMap->unk_003 = unk_003; +} diff --git a/src/tv.c b/src/tv.c index 305bfeda9..87aa6e01a 100644 --- a/src/tv.c +++ b/src/tv.c @@ -6435,7 +6435,7 @@ void DoTVShowTodaysRivalTrainer(void) case MAPSEC_SECRET_BASE: sTVShowState = 8; break; - case MAPSEC_NONE: + case MAPSEC_UNK_0x57: switch (show->rivalTrainer.mapDataId) { case 0x115 ... 0x117: @@ -6633,7 +6633,7 @@ void DoTVShowHoennTreasureInvestigators(void) { case 0: StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name); - if (show->treasureInvestigators.location == MAPSEC_NONE) + if (show->treasureInvestigators.location == MAPSEC_UNK_0x57) { switch (show->treasureInvestigators.mapDataId) { -- cgit v1.2.3 From 6cd0086bf95f570b2876961fdd71537a915ce897 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 31 Oct 2017 08:38:17 -0400 Subject: through CreateRegionMapCursor --- src/region_map.c | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 8e31168d6..3c1731332 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -55,7 +55,7 @@ static u16 sub_8123F04(void); static void sub_8123F30(u16 *x, u16 *y); static bool32 sub_8123F74(u8 mapSecId); static void sub_8123FB0(void); -bool8 sub_8124038(u16 y); +static bool8 sub_8124038(u16 y); void sub_8124238(void); void sub_81243B0(void); void sub_81243DC(void); @@ -74,6 +74,8 @@ extern const u16 gUnknown_085A1B84[]; extern const u16 gUnknown_085A1B8A[]; extern const struct UCoords16 gUnknown_085A1BAC[]; extern const u8 gUnknown_085A1BCC[]; +extern const struct SpritePalette gUnknown_085A1C00; +extern const struct SpriteTemplate gUnknown_085A1C08; // .text @@ -937,3 +939,88 @@ static void sub_8123FB0(void) } gRegionMap->unk_003 = unk_003; } + +static bool8 sub_8124038(u16 y) +{ + u16 x; + + if (y -- == 0) + { + return 0; + } + for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x ++) + { + if (GetRegionMapSectionIdAt(x, y) == gRegionMap->mapSecId) + { + return TRUE; + } + } + return FALSE; +} + +static void sub_8124088(struct Sprite *sprite) +{ + if (gRegionMap->cursorMovementFrameCounter != 0) + { + sprite->pos1.x += 2 * gRegionMap->cursorDeltaX; + sprite->pos1.y += 2 * gRegionMap->cursorDeltaY; + gRegionMap->cursorMovementFrameCounter --; + } +} + +static void TaskDummy8(struct Sprite *sprite) +{ + +} + +void CreateRegionMapCursor(u16 tileTag, u16 paletteTag) +{ + u8 spriteId; + struct SpriteTemplate template; + struct SpritePalette palette; + struct SpriteSheet sheet; + + palette = gUnknown_085A1C00; + template = gUnknown_085A1C08; + sheet.tag = tileTag; + template.tileTag = tileTag; + gRegionMap->cursorTileTag = tileTag; + palette.tag = paletteTag; + template.paletteTag = paletteTag; + gRegionMap->cursorPaletteTag = paletteTag; + if (!gRegionMap->zoomed) + { + sheet.data = gRegionMap->cursorSmallImage; + sheet.size = sizeof(gRegionMap->cursorSmallImage); + template.callback = sub_8124088; + } + else + { + sheet.data = gRegionMap->cursorLargeImage; + sheet.size = sizeof(gRegionMap->cursorLargeImage); + template.callback = TaskDummy8; + } + LoadSpriteSheet(&sheet); + LoadSpritePalette(&palette); + spriteId = CreateSprite(&template, 0x38, 0x48, 0); + if (spriteId != MAX_SPRITES) + { + gRegionMap->cursorSprite = &gSprites[spriteId]; + if (gRegionMap->zoomed == TRUE) + { + gRegionMap->cursorSprite->oam.size = 2; + gRegionMap->cursorSprite->pos1.x -= 8; + gRegionMap->cursorSprite->pos1.y -= 8; + StartSpriteAnim(gRegionMap->cursorSprite, 1); + } + else + { + gRegionMap->cursorSprite->oam.size = 1; + gRegionMap->cursorSprite->pos1.x = 8 * gRegionMap->cursorPosX + 4; + gRegionMap->cursorSprite->pos1.y = 8 * gRegionMap->cursorPosY + 4; + } + gRegionMap->cursorSprite->data1 = 2; + gRegionMap->cursorSprite->data2 = (IndexOfSpritePaletteTag(paletteTag) << 4) + 0x101; + gRegionMap->cursorSprite->data3 = 1; + } +} -- cgit v1.2.3 From 9f03434a132cb47a1edde9d7df243c1875461a53 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 31 Oct 2017 08:44:03 -0400 Subject: through sub_8124278 --- src/region_map.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 3c1731332..5ebffc21f 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -56,7 +56,7 @@ static void sub_8123F30(u16 *x, u16 *y); static bool32 sub_8123F74(u8 mapSecId); static void sub_8123FB0(void); static bool8 sub_8124038(u16 y); -void sub_8124238(void); +static void sub_8124238(void); void sub_81243B0(void); void sub_81243DC(void); @@ -1021,6 +1021,26 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag) } gRegionMap->cursorSprite->data1 = 2; gRegionMap->cursorSprite->data2 = (IndexOfSpritePaletteTag(paletteTag) << 4) + 0x101; - gRegionMap->cursorSprite->data3 = 1; + gRegionMap->cursorSprite->data3 = TRUE; } } + +static void sub_8124238(void) +{ + if (gRegionMap->cursorSprite != NULL) + { + DestroySprite(gRegionMap->cursorSprite); + FreeSpriteTilesByTag(gRegionMap->cursorTileTag); + FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag); + } +} + +void sub_8124268(void) +{ + gRegionMap->cursorSprite->data3 = TRUE; +} + +void sub_8124278(void) +{ + gRegionMap->cursorSprite->data3 = FALSE; +} -- cgit v1.2.3 From 7d7c8e8ba67801381e6bc49026f97231777b22f5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 31 Oct 2017 19:40:35 -0400 Subject: sub_8124288 --- src/region_map.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 5ebffc21f..241cb1b15 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -59,6 +59,8 @@ static bool8 sub_8124038(u16 y); static void sub_8124238(void); void sub_81243B0(void); void sub_81243DC(void); +void sub_812445C(struct Sprite *sprite); +void sub_81244EC(struct Sprite *sprite); // .rodata @@ -69,6 +71,10 @@ extern const u8 gUnknown_0859F77C[]; extern const u8 gUnknown_085A04E0[]; extern const u8 gUnknown_085A096C[]; extern const struct RegionMapLocation gRegionMapEntries[]; +extern const u8 gUnknown_085A084C[]; +extern const u16 gUnknown_085A082C[]; +extern const u16 gUnknown_085A08CC[]; +extern const u8 gUnknown_085A08EC[]; extern const u16 gUnknown_085A1B24[][2]; extern const u16 gUnknown_085A1B84[]; extern const u16 gUnknown_085A1B8A[]; @@ -76,6 +82,8 @@ extern const struct UCoords16 gUnknown_085A1BAC[]; extern const u8 gUnknown_085A1BCC[]; extern const struct SpritePalette gUnknown_085A1C00; extern const struct SpriteTemplate gUnknown_085A1C08; +extern const struct OamData gUnknown_085A1C20; +extern const union AnimCmd *const gUnknown_085A1C30[]; // .text @@ -111,8 +119,8 @@ void sub_8122D88(struct RegionMap *regionMap) { gRegionMap = regionMap; sub_81238AC(); - gRegionMap->unk_074 = gRegionMap->cursorPosX; - gRegionMap->unk_076 = gRegionMap->cursorPosY; + gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX; + gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY; } bool8 sub_8122DB0(void) @@ -156,8 +164,8 @@ bool8 sub_8122DB0(void) break; case 5: sub_81238AC(); - gRegionMap->unk_074 = gRegionMap->cursorPosX; - gRegionMap->unk_076 = gRegionMap->cursorPosY; + gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX; + gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY; gRegionMap->mapSecId = sub_8123EB4(gRegionMap->mapSecId); gRegionMap->iconDrawType = get_flagnr_blue_points(gRegionMap->mapSecId); GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); @@ -1044,3 +1052,38 @@ void sub_8124278(void) { gRegionMap->cursorSprite->data3 = FALSE; } + +void sub_8124288(u16 tileTag, u16 paletteTag) +{ + u8 spriteId; + struct SpriteSheet sheet = {gUnknown_085A084C, 0x80, tileTag}; + struct SpritePalette palette = {gUnknown_085A082C, paletteTag}; + struct SpriteTemplate template = {tileTag, paletteTag, &gUnknown_085A1C20, gUnknown_085A1C30, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; + + if (sub_8124668(gMapHeader.regionMapSectionId)) + { + gRegionMap->playerIconSprite = NULL; + return; + } + if (gSaveBlock2Ptr->playerGender == FEMALE) + { + sheet.data = gUnknown_085A08EC; + palette.data = gUnknown_085A08CC; + } + LoadSpriteSheet(&sheet); + LoadSpritePalette(&palette); + spriteId = CreateSprite(&template, 0, 0, 1); + gRegionMap->playerIconSprite = &gSprites[spriteId]; + if (!gRegionMap->zoomed) + { + gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 8 + 4; + gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 8 + 4; + gRegionMap->playerIconSprite->callback = sub_81244EC; + } + else + { + gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 16 - 0x30; + gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 16 - 0x42; + gRegionMap->playerIconSprite->callback = sub_812445C; + } +} -- cgit v1.2.3 From 968ff8c3c8d6b5ee4b5af4b60489d8bf42bfd56f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 31 Oct 2017 20:58:47 -0400 Subject: through UnhideRegionMapPlayerIcon --- src/field_region_map.c | 70 +++++++++++----------- src/region_map.c | 158 +++++++++++++++++++++++++++++-------------------- 2 files changed, 130 insertions(+), 98 deletions(-) (limited to 'src') diff --git a/src/field_region_map.c b/src/field_region_map.c index 6c483c6b6..776ca6934 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -23,15 +23,15 @@ static EWRAM_DATA struct { u32 filler_004; struct RegionMap regionMap; u16 state; -} *gUnknown_0203BCD0 = NULL; +} *sFieldRegionMapHandler = NULL; // Static ROM declarations -static void sub_81701C4(void); -static void sub_8170260(void); -static void sub_8170274(void); -static void sub_8170290(void); -static void sub_8170428(void); +static void MCB2_InitRegionMapRegisters(void); +static void VBCB_FieldUpdateRegionMap(void); +static void MCB2_FieldUpdateRegionMap(void); +static void FieldUpdateRegionMap(void); +static void PrintRegionMapSecName(void); // .rodata @@ -68,13 +68,13 @@ static const struct WindowTemplate gUnknown_085E5070[] = { void sub_817018C(MainCallback callback) { SetVBlankCallback(NULL); - gUnknown_0203BCD0 = malloc(sizeof(*gUnknown_0203BCD0)); - gUnknown_0203BCD0->state = 0; - gUnknown_0203BCD0->callback = callback; - SetMainCallback2(sub_81701C4); + sFieldRegionMapHandler = malloc(sizeof(*sFieldRegionMapHandler)); + sFieldRegionMapHandler->state = 0; + sFieldRegionMapHandler->callback = callback; + SetMainCallback2(MCB2_InitRegionMapRegisters); } -static void sub_81701C4(void) +static void MCB2_InitRegionMapRegisters(void) { SetGpuReg(REG_OFFSET_DISPCNT, 0); SetGpuReg(REG_OFFSET_BG0HOFS, 0); @@ -93,37 +93,37 @@ static void sub_81701C4(void) DeactivateAllTextPrinters(); sub_809882C(0, 0x27, 0xd0); clear_scheduled_bg_copies_to_vram(); - SetMainCallback2(sub_8170274); - SetVBlankCallback(sub_8170260); + SetMainCallback2(MCB2_FieldUpdateRegionMap); + SetVBlankCallback(VBCB_FieldUpdateRegionMap); } -static void sub_8170260(void) +static void VBCB_FieldUpdateRegionMap(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -static void sub_8170274(void) +static void MCB2_FieldUpdateRegionMap(void) { - sub_8170290(); + FieldUpdateRegionMap(); AnimateSprites(); BuildOamBuffer(); UpdatePaletteFade(); do_scheduled_bg_tilemap_copies_to_vram(); } -void sub_8170290(void) +static void FieldUpdateRegionMap(void) { u8 offset; - switch (gUnknown_0203BCD0->state) + switch (sFieldRegionMapHandler->state) { case 0: - InitRegionMap(&gUnknown_0203BCD0->regionMap, 0); - sub_8124288(0, 0); + InitRegionMap(&sFieldRegionMapHandler->regionMap, 0); + CreateRegionMapPlayerIcon(0, 0); CreateRegionMapCursor(1, 1); - gUnknown_0203BCD0->state ++; + sFieldRegionMapHandler->state ++; break; case 1: SetWindowBorderStyle(1, 0, 0x27, 0xd); @@ -131,47 +131,47 @@ void sub_8170290(void) PrintTextOnWindow(1, 1, gText_Hoenn, offset, 1, 0, NULL); schedule_bg_copy_tilemap_to_vram(0); SetWindowBorderStyle(0, 0, 0x27, 0xd); - sub_8170428(); + PrintRegionMapSecName(); BeginNormalPaletteFade(-1, 0, 16, 0, 0); - gUnknown_0203BCD0->state ++; + sFieldRegionMapHandler->state ++; break; case 2: SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); ShowBg(0); ShowBg(2); - gUnknown_0203BCD0->state ++; + sFieldRegionMapHandler->state ++; break; case 3: if (!gPaletteFade.active) { - gUnknown_0203BCD0->state ++; + sFieldRegionMapHandler->state ++; } break; case 4: switch (sub_81230AC()) { case INPUT_EVENT_MOVE_END: - sub_8170428(); + PrintRegionMapSecName(); break; case INPUT_EVENT_A_BUTTON: case INPUT_EVENT_B_BUTTON: - gUnknown_0203BCD0->state ++; + sFieldRegionMapHandler->state ++; break; } break; case 5: BeginNormalPaletteFade(-1, 0, 0, 16, 0); - gUnknown_0203BCD0->state ++; + sFieldRegionMapHandler->state ++; break; case 6: if (!gPaletteFade.active) { FreeRegionMapIconResources(); - SetMainCallback2(gUnknown_0203BCD0->callback); - if (gUnknown_0203BCD0 != NULL) + SetMainCallback2(sFieldRegionMapHandler->callback); + if (sFieldRegionMapHandler != NULL) { - free(gUnknown_0203BCD0); - gUnknown_0203BCD0 = NULL; + free(sFieldRegionMapHandler); + sFieldRegionMapHandler = NULL; } FreeAllWindowBuffers(); } @@ -179,12 +179,12 @@ void sub_8170290(void) } } -static void sub_8170428(void) +static void PrintRegionMapSecName(void) { - if (gUnknown_0203BCD0->regionMap.iconDrawType != 0) + if (sFieldRegionMapHandler->regionMap.iconDrawType != MAPSECTYPE_NONE) { FillWindowPixelBuffer(0, 0x11); - PrintTextOnWindow(0, 1, gUnknown_0203BCD0->regionMap.mapSecName, 0, 1, 0, NULL); + PrintTextOnWindow(0, 1, sFieldRegionMapHandler->regionMap.mapSecName, 0, 1, 0, NULL); schedule_bg_copy_tilemap_to_vram(0); } else diff --git a/src/region_map.c b/src/region_map.c index 241cb1b15..78bcfb563 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -45,20 +45,20 @@ static u8 MoveRegionMapCursor_Full(void); static u8 ProcessRegionMapInput_Zoomed(void); static u8 MoveRegionMapCursor_Zoomed(void); static void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation); -u16 GetRegionMapSectionIdAt(u16 x, u16 y); -static void sub_812378C(s16 x, s16 y); -static void sub_81238AC(void); -static void sub_8123C00(void); +static u16 GetRegionMapSectionIdAt_Internal(u16 x, u16 y); +static void RegionMap_SetBG2XAndBG2Y(s16 x, s16 y); +static void RegionMap_InitializeStateBasedOnPlayerLocation(void); +static void RegionMap_InitializeStateBasedOnSSTidalLocation(void); static u8 get_flagnr_blue_points(u16 mapSecId); -u16 sub_8123EB4(u16 mapSecId); -static u16 sub_8123F04(void); -static void sub_8123F30(u16 *x, u16 *y); -static bool32 sub_8123F74(u8 mapSecId); -static void sub_8123FB0(void); -static bool8 sub_8124038(u16 y); -static void sub_8124238(void); -void sub_81243B0(void); -void sub_81243DC(void); +static u16 CorrectSpecialMapSecId_Internal(u16 mapSecId); +static u16 RegionMap_GetTerraCaveMapSecId(void); +static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y); +static bool32 RegionMap_IsPlayerInCave(u8 mapSecId); +static void RegionMap_GetPositionOfCursorWithinMapSection(void); +static bool8 RegionMap_IsMapSecIdInNextRow(u16 y); +static void FreeRegionMapCursorSprite(void); +static void HideRegionMapPlayerIcon(void); +static void UnhideRegionMapPlayerIcon(void); void sub_812445C(struct Sprite *sprite); void sub_81244EC(struct Sprite *sprite); @@ -118,7 +118,7 @@ void sub_8122CF8(struct RegionMap *regionMap, struct BgTemplate *template, bool8 void sub_8122D88(struct RegionMap *regionMap) { gRegionMap = regionMap; - sub_81238AC(); + RegionMap_InitializeStateBasedOnPlayerLocation(); gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX; gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY; } @@ -163,10 +163,10 @@ bool8 sub_8122DB0(void) LZ77UnCompWram(gUnknown_0859F650, gRegionMap->cursorLargeImage); break; case 5: - sub_81238AC(); + RegionMap_InitializeStateBasedOnPlayerLocation(); gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX; gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY; - gRegionMap->mapSecId = sub_8123EB4(gRegionMap->mapSecId); + gRegionMap->mapSecId = CorrectSpecialMapSecId_Internal(gRegionMap->mapSecId); gRegionMap->iconDrawType = get_flagnr_blue_points(gRegionMap->mapSecId); GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); break; @@ -185,7 +185,7 @@ bool8 sub_8122DB0(void) } break; case 7: - sub_8123FB0(); + RegionMap_GetPositionOfCursorWithinMapSection(); UpdateRegionMapVideoRegs(); gRegionMap->cursorSprite = NULL; gRegionMap->playerIconSprite = NULL; @@ -302,14 +302,14 @@ static u8 MoveRegionMapCursor_Full(void) { gRegionMap->cursorPosY --; } - mapSecId = GetRegionMapSectionIdAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY); + mapSecId = GetRegionMapSectionIdAt_Internal(gRegionMap->cursorPosX, gRegionMap->cursorPosY); gRegionMap->iconDrawType = get_flagnr_blue_points(mapSecId); if (mapSecId != gRegionMap->mapSecId) { gRegionMap->mapSecId = mapSecId; GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); } - sub_8123FB0(); + RegionMap_GetPositionOfCursorWithinMapSection(); gRegionMap->inputCallback = ProcessRegionMapInput_Full; return INPUT_EVENT_MOVE_END; } @@ -365,7 +365,7 @@ static u8 MoveRegionMapCursor_Zoomed(void) gRegionMap->scrollY += gRegionMap->zoomedCursorDeltaY; gRegionMap->scrollX += gRegionMap->zoomedCursorDeltaX; - sub_812378C(gRegionMap->scrollX, gRegionMap->scrollY); + RegionMap_SetBG2XAndBG2Y(gRegionMap->scrollX, gRegionMap->scrollY); gRegionMap->zoomedCursorMovementFrameCounter ++; if (gRegionMap->zoomedCursorMovementFrameCounter == 8) { @@ -375,14 +375,14 @@ static u8 MoveRegionMapCursor_Zoomed(void) { gRegionMap->zoomedCursorPosX = x; gRegionMap->zoomedCursorPosY = y; - mapSecId = GetRegionMapSectionIdAt(x, y); + mapSecId = GetRegionMapSectionIdAt_Internal(x, y); gRegionMap->iconDrawType = get_flagnr_blue_points(mapSecId); if (mapSecId != gRegionMap->mapSecId) { gRegionMap->mapSecId = mapSecId; GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); } - sub_8123FB0(); + RegionMap_GetPositionOfCursorWithinMapSection(); } gRegionMap->zoomedCursorMovementFrameCounter = 0; gRegionMap->inputCallback = ProcessRegionMapInput_Zoomed; @@ -422,13 +422,13 @@ void sub_8123418(void) gRegionMap->unk_050 = 0x800; } gRegionMap->unk_06e = 0; - sub_8124238(); - sub_81243B0(); + FreeRegionMapCursorSprite(); + HideRegionMapPlayerIcon(); } -u8 sub_8123514(void) +bool8 sub_8123514(void) { - u8 r4; + bool8 r4; if (gRegionMap->unk_06e >= 16) { @@ -445,8 +445,8 @@ u8 sub_8123514(void) gRegionMap->zoomed = !gRegionMap->zoomed; gRegionMap->inputCallback = (gRegionMap->zoomed == FALSE) ? ProcessRegionMapInput_Full : ProcessRegionMapInput_Zoomed; CreateRegionMapCursor(gRegionMap->cursorTileTag, gRegionMap->cursorPaletteTag); - sub_81243DC(); - r4 = 0; + UnhideRegionMapPlayerIcon(); + r4 = FALSE; } else { @@ -481,7 +481,7 @@ u8 sub_8123514(void) gRegionMap->unk_050 = 0; } } - r4 = 1; + r4 = TRUE; } CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, gRegionMap->unk_04c >> 8, gRegionMap->unk_04c >> 8, 0); return r4; @@ -510,7 +510,7 @@ static void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, gRegionMap->needUpdateVideoRegs = TRUE; } -static void sub_812378C(s16 x, s16 y) +static void RegionMap_SetBG2XAndBG2Y(s16 x, s16 y) { gRegionMap->bg2x = (x << 8) + 0x1c00; gRegionMap->bg2y = (y << 8) + 0x2400; @@ -533,7 +533,7 @@ void UpdateRegionMapVideoRegs(void) } } -void sub_8123824(s16 x, s16 y) +void PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(s16 x, s16 y) { CalcZoomScrollParams(x, y, 0x38, 0x48, 0x100, 0x100, 0); UpdateRegionMapVideoRegs(); @@ -544,7 +544,7 @@ void sub_8123824(s16 x, s16 y) } } -u16 GetRegionMapSectionIdAt(u16 x, u16 y) +static u16 GetRegionMapSectionIdAt_Internal(u16 x, u16 y) { if (y < MAPCURSOR_Y_MIN || y > MAPCURSOR_Y_MAX || x < MAPCURSOR_X_MIN || x > MAPCURSOR_X_MAX) { @@ -555,7 +555,7 @@ u16 GetRegionMapSectionIdAt(u16 x, u16 y) return gUnknown_085A096C[x + y * MAP_WIDTH]; } -static void sub_81238AC(void) +static void RegionMap_InitializeStateBasedOnPlayerLocation(void) { const struct MapHeader *mapHeader; u16 mapWidth; @@ -571,7 +571,7 @@ static void sub_81238AC(void) || gSaveBlock1Ptr->location.mapNum == MAP_ID_SS_TIDAL_LOWER_DECK || gSaveBlock1Ptr->location.mapNum == MAP_ID_SS_TIDAL_ROOMS)) { - sub_8123C00(); + RegionMap_InitializeStateBasedOnSSTidalLocation(); return; } @@ -639,7 +639,7 @@ static void sub_81238AC(void) mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum); gRegionMap->mapSecId = mapHeader->regionMapSectionId; } - if (sub_8123F74(gRegionMap->mapSecId)) + if (RegionMap_IsPlayerInCave(gRegionMap->mapSecId)) { gRegionMap->playerIsInCave = TRUE; } @@ -723,14 +723,14 @@ static void sub_81238AC(void) } break; case MAPSEC_UNDERWATER_MARINE_CAVE: - sub_8123F30(&gRegionMap->cursorPosX, &gRegionMap->cursorPosY); + RegionMap_GetMarineCaveCoords(&gRegionMap->cursorPosX, &gRegionMap->cursorPosY); return; } gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; } -static void sub_8123C00(void) +static void RegionMap_InitializeStateBasedOnSSTidalLocation(void) { u16 y; u16 x; @@ -829,12 +829,12 @@ static u8 get_flagnr_blue_points(u16 mapSecId) } } -u16 sub_8123E9C(u16 x, u16 y) +u16 GetRegionMapSectionIdAt(u16 x, u16 y) { - return GetRegionMapSectionIdAt(x, y); + return GetRegionMapSectionIdAt_Internal(x, y); } -u16 sub_8123EB4(u16 mapSecId) +static u16 CorrectSpecialMapSecId_Internal(u16 mapSecId) { u32 i; @@ -842,7 +842,7 @@ u16 sub_8123EB4(u16 mapSecId) { if (gUnknown_085A1B84[i] == mapSecId) { - return sub_8123F04(); + return RegionMap_GetTerraCaveMapSecId(); } } for (i = 0; gUnknown_085A1B24[i][0] != MAPSEC_NONE; i ++) @@ -855,7 +855,7 @@ u16 sub_8123EB4(u16 mapSecId) return mapSecId; } -static u16 sub_8123F04(void) +static u16 RegionMap_GetTerraCaveMapSecId(void) { s16 idx; @@ -867,7 +867,7 @@ static u16 sub_8123F04(void) return gUnknown_085A1B8A[idx]; } -static void sub_8123F30(u16 *x, u16 *y) +static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y) { u16 idx; @@ -881,7 +881,7 @@ static void sub_8123F30(u16 *x, u16 *y) *y = gUnknown_085A1BAC[idx].y + MAPCURSOR_Y_MIN; } -static bool32 sub_8123F74(u8 mapSecId) +static bool32 RegionMap_IsPlayerInCave(u8 mapSecId) { int i; @@ -895,20 +895,20 @@ static bool32 sub_8123F74(u8 mapSecId) return FALSE; } -u16 sub_8123F9C(u16 mapSecId) +u16 CorrectSpecialMapSecId(u16 mapSecId) { - return sub_8123EB4(mapSecId); + return CorrectSpecialMapSecId_Internal(mapSecId); } -static void sub_8123FB0(void) +static void RegionMap_GetPositionOfCursorWithinMapSection(void) { u16 x; u16 y; - u16 unk_003; + u16 posWithinMapSec; if (gRegionMap->mapSecId == MAPSEC_NONE) { - gRegionMap->unk_003 = 0; + gRegionMap->posWithinMapSec = 0; return; } if (!gRegionMap->zoomed) @@ -921,12 +921,12 @@ static void sub_8123FB0(void) x = gRegionMap->zoomedCursorPosX; y = gRegionMap->zoomedCursorPosY; } - unk_003 = 0; + posWithinMapSec = 0; while (1) { if (x <= MAPCURSOR_X_MIN) { - if (sub_8124038(y)) + if (RegionMap_IsMapSecIdInNextRow(y)) { y --; x = MAPCURSOR_X_MAX + 1; @@ -939,26 +939,26 @@ static void sub_8123FB0(void) else { x --; - if (GetRegionMapSectionIdAt(x, y) == gRegionMap->mapSecId) + if (GetRegionMapSectionIdAt_Internal(x, y) == gRegionMap->mapSecId) { - unk_003 ++; + posWithinMapSec ++; } } } - gRegionMap->unk_003 = unk_003; + gRegionMap->posWithinMapSec = posWithinMapSec; } -static bool8 sub_8124038(u16 y) +static bool8 RegionMap_IsMapSecIdInNextRow(u16 y) { u16 x; if (y -- == 0) { - return 0; + return FALSE; } for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x ++) { - if (GetRegionMapSectionIdAt(x, y) == gRegionMap->mapSecId) + if (GetRegionMapSectionIdAt_Internal(x, y) == gRegionMap->mapSecId) { return TRUE; } @@ -966,7 +966,7 @@ static bool8 sub_8124038(u16 y) return FALSE; } -static void sub_8124088(struct Sprite *sprite) +static void SpriteCallback_CursorFull(struct Sprite *sprite) { if (gRegionMap->cursorMovementFrameCounter != 0) { @@ -976,7 +976,7 @@ static void sub_8124088(struct Sprite *sprite) } } -static void TaskDummy8(struct Sprite *sprite) +static void SpriteCallback_CursorZoomed(struct Sprite *sprite) { } @@ -1000,13 +1000,13 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag) { sheet.data = gRegionMap->cursorSmallImage; sheet.size = sizeof(gRegionMap->cursorSmallImage); - template.callback = sub_8124088; + template.callback = SpriteCallback_CursorFull; } else { sheet.data = gRegionMap->cursorLargeImage; sheet.size = sizeof(gRegionMap->cursorLargeImage); - template.callback = TaskDummy8; + template.callback = SpriteCallback_CursorZoomed; } LoadSpriteSheet(&sheet); LoadSpritePalette(&palette); @@ -1033,7 +1033,7 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag) } } -static void sub_8124238(void) +static void FreeRegionMapCursorSprite(void) { if (gRegionMap->cursorSprite != NULL) { @@ -1053,7 +1053,7 @@ void sub_8124278(void) gRegionMap->cursorSprite->data3 = FALSE; } -void sub_8124288(u16 tileTag, u16 paletteTag) +void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) { u8 spriteId; struct SpriteSheet sheet = {gUnknown_085A084C, 0x80, tileTag}; @@ -1087,3 +1087,35 @@ void sub_8124288(u16 tileTag, u16 paletteTag) gRegionMap->playerIconSprite->callback = sub_812445C; } } + +static void HideRegionMapPlayerIcon(void) +{ + if (gRegionMap->playerIconSprite != NULL) + { + gRegionMap->playerIconSprite->invisible = TRUE; + gRegionMap->playerIconSprite->callback = SpriteCallbackDummy; + } +} + +static void UnhideRegionMapPlayerIcon(void) +{ + if (gRegionMap->playerIconSprite != NULL) + { + if (gRegionMap->zoomed == TRUE) + { + gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 16 - 0x30; + gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 16 - 0x42; + gRegionMap->playerIconSprite->callback = sub_812445C; + gRegionMap->playerIconSprite->invisible = FALSE; + } + else + { + gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 8 + 4; + gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 8 + 4; + gRegionMap->playerIconSprite->pos2.x = 0; + gRegionMap->playerIconSprite->pos2.y = 0; + gRegionMap->playerIconSprite->callback = sub_81244EC; + gRegionMap->playerIconSprite->invisible = FALSE; + } + } +} -- cgit v1.2.3 From 2f1325416b4d9d67767c35e710e6b6102ade3cd1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 31 Oct 2017 21:32:25 -0400 Subject: through RegionMapPlayerIconSpriteCallback --- src/region_map.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 52 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 78bcfb563..9e76b43c1 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -59,8 +59,9 @@ static bool8 RegionMap_IsMapSecIdInNextRow(u16 y); static void FreeRegionMapCursorSprite(void); static void HideRegionMapPlayerIcon(void); static void UnhideRegionMapPlayerIcon(void); -void sub_812445C(struct Sprite *sprite); -void sub_81244EC(struct Sprite *sprite); +static void RegionMapPlayerIconSpriteCallback_Zoomed(struct Sprite *sprite); +static void RegionMapPlayerIconSpriteCallback_Full(struct Sprite *sprite); +static void RegionMapPlayerIconSpriteCallback(struct Sprite *sprite); // .rodata @@ -1078,13 +1079,13 @@ void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) { gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 8 + 4; gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 8 + 4; - gRegionMap->playerIconSprite->callback = sub_81244EC; + gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Full; } else { gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 16 - 0x30; gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 16 - 0x42; - gRegionMap->playerIconSprite->callback = sub_812445C; + gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Zoomed; } } @@ -1105,7 +1106,7 @@ static void UnhideRegionMapPlayerIcon(void) { gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 16 - 0x30; gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 16 - 0x42; - gRegionMap->playerIconSprite->callback = sub_812445C; + gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Zoomed; gRegionMap->playerIconSprite->invisible = FALSE; } else @@ -1114,8 +1115,53 @@ static void UnhideRegionMapPlayerIcon(void) gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 8 + 4; gRegionMap->playerIconSprite->pos2.x = 0; gRegionMap->playerIconSprite->pos2.y = 0; - gRegionMap->playerIconSprite->callback = sub_81244EC; + gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Full; gRegionMap->playerIconSprite->invisible = FALSE; } } } + +static void RegionMapPlayerIconSpriteCallback_Zoomed(struct Sprite *sprite) +{ + sprite->pos2.x = -2 * gRegionMap->scrollX; + sprite->pos2.y = -2 * gRegionMap->scrollY; + sprite->data0 = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY; + sprite->data1 = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX; + if (sprite->data0 < -8 || sprite->data0 > 0xa8 || sprite->data1 < -8 || sprite->data1 > 0xf8) + { + sprite->data2 = FALSE; + } + else + { + sprite->data2 = TRUE; + } + if (sprite->data2 == TRUE) + { + RegionMapPlayerIconSpriteCallback(sprite); + } + else + { + sprite->invisible = TRUE; + } +} + +static void RegionMapPlayerIconSpriteCallback_Full(struct Sprite *sprite) +{ + RegionMapPlayerIconSpriteCallback(sprite); +} + +static void RegionMapPlayerIconSpriteCallback(struct Sprite *sprite) +{ + if (gRegionMap->blinkPlayerIcon) + { + if (++ sprite->data7 > 16) + { + sprite->data7 = 0; + sprite->invisible = sprite->invisible ? FALSE : TRUE; + } + } + else + { + sprite->invisible = FALSE; + } +} -- cgit v1.2.3 From ef535b98b5e1384ce5f663a4ab4dfcb003fbe1c7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 31 Oct 2017 21:51:11 -0400 Subject: through GetMapName --- src/region_map.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 9e76b43c1..5284922cc 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -11,6 +11,9 @@ #include "flags.h" #include "event_data.h" #include "rom6.h" +#include "secret_base.h" +#include "string_util.h" +#include "text.h" #include "region_map.h" #define MAP_WIDTH 28 @@ -30,7 +33,7 @@ struct RegionMapLocation { u8 x, y; u8 width, height; - const u8 *regionMapSectionId; + const u8 *name; }; // Static RAM declarations @@ -1165,3 +1168,43 @@ static void RegionMapPlayerIconSpriteCallback(struct Sprite *sprite) sprite->invisible = FALSE; } } + +void sub_812454C(void) +{ + if (gRegionMap->playerIsInCave) + { + gRegionMap->blinkPlayerIcon = TRUE; + } +} + +u8 *GetMapName(u8 *dest, u16 regionMapId, u16 padLength) +{ + u8 *str; + u16 i; + + if (regionMapId == MAPSEC_SECRET_BASE) + { + str = GetSecretBaseMapName(dest); + } + else if (regionMapId < MAPSEC_NONE) + { + str = StringCopy(dest, gRegionMapEntries[regionMapId].name); + } + else + { + if (padLength == 0) + { + padLength = 18; + } + return StringFill(dest, CHAR_SPACE, padLength); + } + if (padLength != 0) + { + for (i = str - dest; i < padLength; i ++) + { + *str++ = CHAR_SPACE; + } + *str = EOS; + } + return str; +} -- cgit v1.2.3 From c3c08bf0379e172b8d7dd1b233947ebca83a3c3c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 31 Oct 2017 21:55:57 -0400 Subject: through sub_8124610 --- src/region_map.c | 28 +++++++++++++++++++++++++++- src/tv.c | 4 ++-- 2 files changed, 29 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 5284922cc..cd0f0b87c 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -13,6 +13,7 @@ #include "rom6.h" #include "secret_base.h" #include "string_util.h" +#include "strings.h" #include "text.h" #include "region_map.h" @@ -632,7 +633,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void) case 8: gRegionMap->mapSecId = gMapHeader.regionMapSectionId; - if (gRegionMap->mapSecId != MAPSEC_UNK_0x57) + if (gRegionMap->mapSecId != MAPSEC_SS_TIDAL) { r4 = &gSaveBlock1Ptr->warp4; mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum); @@ -1208,3 +1209,28 @@ u8 *GetMapName(u8 *dest, u16 regionMapId, u16 padLength) } return str; } + +u8 *sub_81245DC(u8 *dest, u16 mapSecId) +{ + switch (mapSecId) + { + case MAPSEC_SS_TIDAL: + return StringCopy(dest, gText_Ferry); + case MAPSEC_SECRET_BASE: + return StringCopy(dest, gText_SecretBase); + default: + return GetMapName(dest, mapSecId, 0); + } +} + +u8 *sub_8124610(u8 *dest, u16 mapSecId) +{ + if (mapSecId == MAPSEC_AQUA_HIDEOUT_OLD) + { + return StringCopy(dest, gText_Hideout); + } + else + { + return sub_81245DC(dest, mapSecId); + } +} diff --git a/src/tv.c b/src/tv.c index 87aa6e01a..933b9c0b8 100644 --- a/src/tv.c +++ b/src/tv.c @@ -6435,7 +6435,7 @@ void DoTVShowTodaysRivalTrainer(void) case MAPSEC_SECRET_BASE: sTVShowState = 8; break; - case MAPSEC_UNK_0x57: + case MAPSEC_SS_TIDAL: switch (show->rivalTrainer.mapDataId) { case 0x115 ... 0x117: @@ -6633,7 +6633,7 @@ void DoTVShowHoennTreasureInvestigators(void) { case 0: StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name); - if (show->treasureInvestigators.location == MAPSEC_UNK_0x57) + if (show->treasureInvestigators.location == MAPSEC_SS_TIDAL) { switch (show->treasureInvestigators.mapDataId) { -- cgit v1.2.3 From f6d1e5a96506b5d370180682105e5ae2d5aed083 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 31 Oct 2017 22:05:23 -0400 Subject: through sub_8124668 --- src/region_map.c | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index cd0f0b87c..38419180d 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -32,8 +32,10 @@ struct UnkStruct_0203A148 { struct RegionMapLocation { - u8 x, y; - u8 width, height; + u8 x; + u8 y; + u8 width; + u8 height; const u8 *name; }; @@ -89,6 +91,7 @@ extern const struct SpritePalette gUnknown_085A1C00; extern const struct SpriteTemplate gUnknown_085A1C08; extern const struct OamData gUnknown_085A1C20; extern const union AnimCmd *const gUnknown_085A1C30[]; +extern const u8 gUnknown_085A1C34[]; // .text @@ -1234,3 +1237,30 @@ u8 *sub_8124610(u8 *dest, u16 mapSecId) return sub_81245DC(dest, mapSecId); } } + +void sub_8124630(u16 mapSecId, u16 *x, u16 *y, u16 *width, u16 *height) +{ + *x = gRegionMapEntries[mapSecId].x; + *y = gRegionMapEntries[mapSecId].y; + *width = gRegionMapEntries[mapSecId].width; + *height = gRegionMapEntries[mapSecId].height; +} + +bool8 sub_8124658(void) +{ + return gRegionMap->zoomed; +} + +bool32 sub_8124668(u8 mapSecId) +{ + u32 i; + + for (i = 0; i < 3; i ++) + { + if (mapSecId == gUnknown_085A1C34[i]) + { + return TRUE; + } + } + return FALSE; +} -- cgit v1.2.3 From f61822535bb2e1cf060d9c3e0a472f5a01b23681 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 31 Oct 2017 22:34:12 -0400 Subject: MCB2_FlyMap --- src/region_map.c | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 115 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 38419180d..14bf9a6b0 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -3,6 +3,7 @@ #include "global.h" #include "main.h" #include "menu.h" +#include "malloc.h" #include "gpu_regs.h" #include "palette.h" #include "trig.h" @@ -15,6 +16,7 @@ #include "string_util.h" #include "strings.h" #include "text.h" +#include "text_window.h" #include "region_map.h" #define MAP_WIDTH 28 @@ -26,10 +28,6 @@ // Static type declarations -struct UnkStruct_0203A148 { - u8 filler_000[0xa74]; -}; - struct RegionMapLocation { u8 x; @@ -42,7 +40,15 @@ struct RegionMapLocation // Static RAM declarations EWRAM_DATA struct RegionMap *gRegionMap = NULL; -EWRAM_DATA struct UnkStruct_0203A148 *gUnknown_0203A148 = NULL; +EWRAM_DATA struct { + /*0x000*/ u8 filler_000[0x6]; + /*0x006*/ u16 mapSecId; + /*0x008*/ struct RegionMap regionMap; + /*0x88c*/ u8 filler_88c[0x1c0]; + /*0xa4c*/ u8 unk_a4c[0x28]; +} *gUnknown_0203A148 = NULL; // a74 + +IWRAM_DATA bool32 gUnknown_03001180; // Static ROM declarations @@ -68,6 +74,12 @@ static void UnhideRegionMapPlayerIcon(void); static void RegionMapPlayerIconSpriteCallback_Zoomed(struct Sprite *sprite); static void RegionMapPlayerIconSpriteCallback_Full(struct Sprite *sprite); static void RegionMapPlayerIconSpriteCallback(struct Sprite *sprite); +void sub_81248C0(void); +void sub_81248D4(void); +void sub_81248F4(void func(void)); +void sub_8124904(void); +void sub_8124A70(void); +void sub_8124D14(void); // .rodata @@ -92,6 +104,11 @@ extern const struct SpriteTemplate gUnknown_085A1C08; extern const struct OamData gUnknown_085A1C20; extern const union AnimCmd *const gUnknown_085A1C30[]; extern const u8 gUnknown_085A1C34[]; +extern const struct BgTemplate gUnknown_085A1EE4[]; +extern const struct WindowTemplate gUnknown_085A1EF0[]; +extern const u8 gUnknown_085A1C58[]; +extern const u8 gUnknown_085A1C90[]; +extern const u16 gUnknown_085A1C38[]; // .text @@ -142,7 +159,7 @@ bool8 sub_8122DB0(void) } else { - LZ77UnCompVram(gUnknown_0859F77C, (u16 *)BG_SCREEN_ADDR(16)); + LZ77UnCompVram(gUnknown_0859F77C, (u16 *)BG_CHAR_ADDR(2)); } break; case 1: @@ -1264,3 +1281,95 @@ bool32 sub_8124668(u8 mapSecId) } return FALSE; } + +void MCB2_FlyMap(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + SetGpuReg(REG_OFFSET_DISPCNT, 0); + SetGpuReg(REG_OFFSET_BG0HOFS, 0); + SetGpuReg(REG_OFFSET_BG0VOFS, 0); + SetGpuReg(REG_OFFSET_BG1HOFS, 0); + SetGpuReg(REG_OFFSET_BG1VOFS, 0); + SetGpuReg(REG_OFFSET_BG2VOFS, 0); + SetGpuReg(REG_OFFSET_BG2HOFS, 0); + SetGpuReg(REG_OFFSET_BG3HOFS, 0); + SetGpuReg(REG_OFFSET_BG3VOFS, 0); + gUnknown_0203A148 = malloc(sizeof(*gUnknown_0203A148)); + if (gUnknown_0203A148 == NULL) + { + SetMainCallback2(sub_8086194); + } + else + { + ResetPaletteFade(); + ResetSpriteData(); + FreeSpriteTileRanges(); + FreeAllSpritePalettes(); + gMain.state ++; + } + break; + case 1: + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(1, gUnknown_085A1EE4, 3); + gMain.state ++; + break; + case 2: + InitWindows(gUnknown_085A1EF0); + DeactivateAllTextPrinters(); + gMain.state ++; + break; + case 3: + sub_809882C(0, 0x65, 0xd0); + clear_scheduled_bg_copies_to_vram(); + gMain.state ++; + break; + case 4: + InitRegionMap(&gUnknown_0203A148->regionMap, FALSE); + CreateRegionMapCursor(0, 0); + CreateRegionMapPlayerIcon(1, 1); + gUnknown_0203A148->mapSecId = gUnknown_0203A148->regionMap.mapSecId; + StringFill(gUnknown_0203A148->unk_a4c, CHAR_SPACE, 16); + gUnknown_03001180 = TRUE; + sub_8124904(); + gMain.state ++; + break; + case 5: + LZ77UnCompVram(gUnknown_085A1C58, (u16 *)BG_CHAR_ADDR(3)); + gMain.state ++; + break; + case 6: + LZ77UnCompVram(gUnknown_085A1C90, (u16 *)BG_SCREEN_ADDR(30)); + gMain.state ++; + break; + case 7: + LoadPalette(gUnknown_085A1C38, 0x10, 0x20); + PutWindowTilemap(2); + FillWindowPixelBuffer(2, 0x00); + PrintTextOnWindow(2, 1, gText_FlyToWhere, 0, 1, 0, NULL); + schedule_bg_copy_tilemap_to_vram(0); + gMain.state ++; + break; + case 8: + sub_8124A70(); + gMain.state ++; + break; + case 9: + BlendPalettes(-1, 16, 0); + SetVBlankCallback(sub_81248C0); + gMain.state ++; + break; + case 10: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + ShowBg(0); + ShowBg(1); + ShowBg(2); + sub_81248F4(sub_8124D14); + SetMainCallback2(sub_81248D4); + gMain.state ++; + break; + } +} -- cgit v1.2.3 From 01c4b3bd35b914aa2da547d1c92cafb7849a75cb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 31 Oct 2017 22:37:28 -0400 Subject: through sub_81248F4 --- src/region_map.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 14bf9a6b0..15de369b9 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -41,7 +41,8 @@ struct RegionMapLocation EWRAM_DATA struct RegionMap *gRegionMap = NULL; EWRAM_DATA struct { - /*0x000*/ u8 filler_000[0x6]; + /*0x000*/ void (*unk_000)(void); + /*0x004*/ u16 unk_004; /*0x006*/ u16 mapSecId; /*0x008*/ struct RegionMap regionMap; /*0x88c*/ u8 filler_88c[0x1c0]; @@ -1373,3 +1374,24 @@ void MCB2_FlyMap(void) break; } } + +void sub_81248C0(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_81248D4(void) +{ + gUnknown_0203A148->unk_000(); + AnimateSprites(); + BuildOamBuffer(); + do_scheduled_bg_tilemap_copies_to_vram(); +} + +void sub_81248F4(void callback(void)) +{ + gUnknown_0203A148->unk_000 = callback; + gUnknown_0203A148->unk_004 = 0; +} -- cgit v1.2.3 From 8c73c1450f67e4a0ee41583b1d2c8ccca6eb6925 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 31 Oct 2017 23:11:48 -0400 Subject: sub_8124904 --- src/region_map.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 15de369b9..b2cb25a59 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -14,6 +14,7 @@ #include "rom6.h" #include "secret_base.h" #include "string_util.h" +#include "international_string_util.h" #include "strings.h" #include "text.h" #include "text_window.h" @@ -110,6 +111,11 @@ extern const struct WindowTemplate gUnknown_085A1EF0[]; extern const u8 gUnknown_085A1C58[]; extern const u8 gUnknown_085A1C90[]; extern const u16 gUnknown_085A1C38[]; +extern const struct { + const u8 *const *name; + u16 mapSecId; + u16 flag; +} gUnknown_085A1EDC[]; // .text @@ -1395,3 +1401,61 @@ void sub_81248F4(void callback(void)) gUnknown_0203A148->unk_000 = callback; gUnknown_0203A148->unk_004 = 0; } + +void sub_8124904(void) +{ + u16 i; + bool32 flag; + const u8 *name; + + if (gUnknown_0203A148->regionMap.iconDrawType > MAPSECTYPE_NONE && gUnknown_0203A148->regionMap.iconDrawType <= MAPSECTYPE_BATTLE_FRONTIER) + { + flag = FALSE; + for (i = 0; i < 1; i ++) + { + if (gUnknown_0203A148->regionMap.mapSecId == gUnknown_085A1EDC[i].mapSecId) + { + if (FlagGet(gUnknown_085A1EDC[i].flag)) + { + StringLength(gUnknown_085A1EDC[i].name[gUnknown_0203A148->regionMap.posWithinMapSec]); + flag = TRUE; + sub_8198070(0, FALSE); + SetWindowBorderStyle(1, FALSE, 0x65, 0x0d); + PrintTextOnWindow(1, 1, gUnknown_0203A148->regionMap.mapSecName, 0, 1, 0, NULL); + name = gUnknown_085A1EDC[i].name[gUnknown_0203A148->regionMap.posWithinMapSec]; + PrintTextOnWindow(1, 1, name, GetStringRightAlignXOffset(1, name, 0x60), 0x11, 0, NULL); + schedule_bg_copy_tilemap_to_vram(0); + gUnknown_03001180 = TRUE; + } + break; + } + } + if (!flag) + { + if (gUnknown_03001180 == TRUE) + { + sub_8198070(1, FALSE); + SetWindowBorderStyle(0, FALSE, 0x65, 0x0d); + } + else + { + FillWindowPixelBuffer(0, 0x11); + } + PrintTextOnWindow(0, 1, gUnknown_0203A148->regionMap.mapSecName, 0, 1, 0, NULL); + schedule_bg_copy_tilemap_to_vram(0); + gUnknown_03001180 = FALSE; + } + } + else + { + if (gUnknown_03001180 == TRUE) + { + sub_8198070(1, FALSE); + SetWindowBorderStyle(0, FALSE, 0x65, 0x0d); + } + FillWindowPixelBuffer(0, 0x11); + CopyWindowToVram(0, 2); + schedule_bg_copy_tilemap_to_vram(0); + gUnknown_03001180 = FALSE; + } +} -- cgit v1.2.3 From 3d2571b0c5bb35d0fb21b555e139653e800ededa Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 31 Oct 2017 23:18:56 -0400 Subject: sub_8124A70 --- src/region_map.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index b2cb25a59..07ddd7477 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -46,7 +46,7 @@ EWRAM_DATA struct { /*0x004*/ u16 unk_004; /*0x006*/ u16 mapSecId; /*0x008*/ struct RegionMap regionMap; - /*0x88c*/ u8 filler_88c[0x1c0]; + /*0x88c*/ u8 unk_88c[0x1c0]; /*0xa4c*/ u8 unk_a4c[0x28]; } *gUnknown_0203A148 = NULL; // a74 @@ -81,6 +81,8 @@ void sub_81248D4(void); void sub_81248F4(void func(void)); void sub_8124904(void); void sub_8124A70(void); +void sub_8124AD4(void); +void sub_8124BE4(void); void sub_8124D14(void); // .rodata @@ -106,16 +108,18 @@ extern const struct SpriteTemplate gUnknown_085A1C08; extern const struct OamData gUnknown_085A1C20; extern const union AnimCmd *const gUnknown_085A1C30[]; extern const u8 gUnknown_085A1C34[]; -extern const struct BgTemplate gUnknown_085A1EE4[]; -extern const struct WindowTemplate gUnknown_085A1EF0[]; +extern const u16 gUnknown_085A1C38[]; extern const u8 gUnknown_085A1C58[]; extern const u8 gUnknown_085A1C90[]; -extern const u16 gUnknown_085A1C38[]; +extern const u8 gUnknown_085A1D68[]; +extern const struct BgTemplate gUnknown_085A1EE4[]; +extern const struct WindowTemplate gUnknown_085A1EF0[]; extern const struct { const u8 *const *name; u16 mapSecId; u16 flag; } gUnknown_085A1EDC[]; +extern const struct SpritePalette gUnknown_085A1F10; // .text @@ -1459,3 +1463,18 @@ void sub_8124904(void) gUnknown_03001180 = FALSE; } } + + +void sub_8124A70(void) +{ + struct SpriteSheet sheet; + + LZ77UnCompWram(gUnknown_085A1D68, gUnknown_0203A148->unk_88c); + sheet.data = gUnknown_0203A148->unk_88c; + sheet.size = 0x1c0; + sheet.tag = 2; + LoadSpriteSheet(&sheet); + LoadSpritePalette(&gUnknown_085A1F10); + sub_8124AD4(); + sub_8124BE4(); +} -- cgit v1.2.3 From 9f5f134476f5c74339709b70adf47d2471aee6c0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 31 Oct 2017 23:39:09 -0400 Subject: sub_8124AD4 --- src/region_map.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 58 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 07ddd7477..484f60347 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -76,13 +76,14 @@ static void UnhideRegionMapPlayerIcon(void); static void RegionMapPlayerIconSpriteCallback_Zoomed(struct Sprite *sprite); static void RegionMapPlayerIconSpriteCallback_Full(struct Sprite *sprite); static void RegionMapPlayerIconSpriteCallback(struct Sprite *sprite); -void sub_81248C0(void); -void sub_81248D4(void); -void sub_81248F4(void func(void)); +static void sub_81248C0(void); +static void sub_81248D4(void); +void sub_81248F4(void callback(void)); void sub_8124904(void); -void sub_8124A70(void); -void sub_8124AD4(void); +static void sub_8124A70(void); +static void sub_8124AD4(void); void sub_8124BE4(void); +void sub_8124CBC(struct Sprite *sprite); void sub_8124D14(void); // .rodata @@ -120,6 +121,7 @@ extern const struct { u16 flag; } gUnknown_085A1EDC[]; extern const struct SpritePalette gUnknown_085A1F10; +extern const struct SpriteTemplate gUnknown_085A1F7C; // .text @@ -1385,14 +1387,14 @@ void MCB2_FlyMap(void) } } -void sub_81248C0(void) +static void sub_81248C0(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_81248D4(void) +static void sub_81248D4(void) { gUnknown_0203A148->unk_000(); AnimateSprites(); @@ -1465,7 +1467,7 @@ void sub_8124904(void) } -void sub_8124A70(void) +static void sub_8124A70(void) { struct SpriteSheet sheet; @@ -1478,3 +1480,51 @@ void sub_8124A70(void) sub_8124AD4(); sub_8124BE4(); } + +static void sub_8124AD4(void) +{ + u16 canFlyFlag; + u16 i; + u16 x; + u16 y; + u16 width; + u16 height; + u16 shape; + u8 spriteId; + + canFlyFlag = FLAG_VISITED_LITTLEROOT_TOWN; + for (i = 0; i < 16; i ++) + { + sub_8124630(i, &x, &y, &width, &height); + x = (x + 1) * 8 + 4; + y = (y + 2) * 8 + 4; + if (width == 2) + { + shape = ST_OAM_H_RECTANGLE; + } + else if (height == 2) + { + shape = ST_OAM_V_RECTANGLE; + } + else + { + shape = ST_OAM_SQUARE; + } + spriteId = CreateSprite(&gUnknown_085A1F7C, x, y, 10); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.shape = shape; + if (FlagGet(canFlyFlag)) + { + gSprites[spriteId].callback = sub_8124CBC; + } + else + { + shape += 3; + } + StartSpriteAnim(&gSprites[spriteId], shape); + gSprites[spriteId].data0 = i; + } + canFlyFlag ++; + } +} -- cgit v1.2.3 From ee60ae7da9e8d24e645d09dc99f6b82f48909e16 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 1 Nov 2017 00:01:17 -0400 Subject: sub_8124BE4 --- src/region_map.c | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 484f60347..b4d51889f 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -82,7 +82,7 @@ void sub_81248F4(void callback(void)); void sub_8124904(void); static void sub_8124A70(void); static void sub_8124AD4(void); -void sub_8124BE4(void); +static void sub_8124BE4(void); void sub_8124CBC(struct Sprite *sprite); void sub_8124D14(void); @@ -121,6 +121,7 @@ extern const struct { u16 flag; } gUnknown_085A1EDC[]; extern const struct SpritePalette gUnknown_085A1F10; +extern const u16 gUnknown_085A1F18[][2]; extern const struct SpriteTemplate gUnknown_085A1F7C; // .text @@ -1496,8 +1497,8 @@ static void sub_8124AD4(void) for (i = 0; i < 16; i ++) { sub_8124630(i, &x, &y, &width, &height); - x = (x + 1) * 8 + 4; - y = (y + 2) * 8 + 4; + x = (x + MAPCURSOR_X_MIN) * 8 + 4; + y = (y + MAPCURSOR_Y_MIN) * 8 + 4; if (width == 2) { shape = ST_OAM_H_RECTANGLE; @@ -1528,3 +1529,33 @@ static void sub_8124AD4(void) canFlyFlag ++; } } + +static void sub_8124BE4(void) +{ + u16 i; + u16 x; + u16 y; + u16 width; + u16 height; + u16 mapSecId; + u8 spriteId; + + for (i = 0; gUnknown_085A1F18[i][1] != MAPSEC_NONE; i ++) + { + if (FlagGet(gUnknown_085A1F18[i][0])) + { + mapSecId = gUnknown_085A1F18[i][1]; + sub_8124630(mapSecId, &x, &y, &width, &height); + x = (x + MAPCURSOR_X_MIN) * 8; + y = (y + MAPCURSOR_Y_MIN) * 8; + spriteId = CreateSprite(&gUnknown_085A1F7C, x, y, 10); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.size = 1; + gSprites[spriteId].callback = sub_8124CBC; + StartSpriteAnim(&gSprites[spriteId], 6); + gSprites[spriteId].data0 = mapSecId; + } + } + } +} -- cgit v1.2.3 From e3005e88c7f738b893bcdb26eac2037aa0ec9a10 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 1 Nov 2017 00:34:57 -0400 Subject: Decompile remaining functions in region_map --- src/region_map.c | 134 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 131 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index b4d51889f..919b82d1a 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -6,6 +6,7 @@ #include "malloc.h" #include "gpu_regs.h" #include "palette.h" +#include "party_menu.h" #include "trig.h" #include "map_constants.h" #include "overworld.h" @@ -18,6 +19,9 @@ #include "strings.h" #include "text.h" #include "text_window.h" +#include "songs.h" +#include "m4a.h" +#include "field_effect.h" #include "region_map.h" #define MAP_WIDTH 28 @@ -47,7 +51,8 @@ EWRAM_DATA struct { /*0x006*/ u16 mapSecId; /*0x008*/ struct RegionMap regionMap; /*0x88c*/ u8 unk_88c[0x1c0]; - /*0xa4c*/ u8 unk_a4c[0x28]; + /*0xa4c*/ u8 unk_a4c[0x26]; + /*0xa72*/ bool8 unk_a72; } *gUnknown_0203A148 = NULL; // a74 IWRAM_DATA bool32 gUnknown_03001180; @@ -83,8 +88,10 @@ void sub_8124904(void); static void sub_8124A70(void); static void sub_8124AD4(void); static void sub_8124BE4(void); -void sub_8124CBC(struct Sprite *sprite); -void sub_8124D14(void); +static void sub_8124CBC(struct Sprite *sprite); +static void sub_8124D14(void); +static void sub_8124D64(void); +static void sub_8124E0C(void); // .rodata @@ -123,6 +130,7 @@ extern const struct { extern const struct SpritePalette gUnknown_085A1F10; extern const u16 gUnknown_085A1F18[][2]; extern const struct SpriteTemplate gUnknown_085A1F7C; +extern const u8 gUnknown_085A1E3C[][3]; // .text @@ -1559,3 +1567,123 @@ static void sub_8124BE4(void) } } } + +static void sub_8124CBC(struct Sprite *sprite) +{ + if (gUnknown_0203A148->regionMap.mapSecId == sprite->data0) + { + if (++ sprite->data1 > 16) + { + sprite->data1 = 0; + sprite->invisible = sprite->invisible ? FALSE : TRUE; + } + } + else + { + sprite->data1 = 16; + sprite->invisible = FALSE; + } +} + +static void sub_8124D14(void) +{ + switch (gUnknown_0203A148->unk_004) + { + case 0: + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gUnknown_0203A148->unk_004 ++; + break; + case 1: + if (!UpdatePaletteFade()) + { + sub_81248F4(sub_8124D64); + } + break; + } +} + +static void sub_8124D64(void) +{ + if (gUnknown_0203A148->unk_004 == 0) + { + switch (sub_81230AC()) + { + case INPUT_EVENT_NONE: + case INPUT_EVENT_MOVE_START: + case INPUT_EVENT_MOVE_CONT: + break; + case INPUT_EVENT_MOVE_END: + sub_8124904(); + break; + case INPUT_EVENT_A_BUTTON: + if (gUnknown_0203A148->regionMap.iconDrawType == MAPSECTYPE_CITY_CANFLY || gUnknown_0203A148->regionMap.iconDrawType == MAPSECTYPE_BATTLE_FRONTIER) + { + m4aSongNumStart(SE_SELECT); + gUnknown_0203A148->unk_a72 = TRUE; + sub_81248F4(sub_8124E0C); + } + break; + case INPUT_EVENT_B_BUTTON: + m4aSongNumStart(SE_SELECT); + gUnknown_0203A148->unk_a72 = FALSE; + sub_81248F4(sub_8124E0C); + break; + } + } +} + +static void sub_8124E0C(void) +{ + switch (gUnknown_0203A148->unk_004) + { + case 0: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_0203A148->unk_004 ++; + break; + case 1: + if (!UpdatePaletteFade()) + { + FreeRegionMapIconResources(); + if (gUnknown_0203A148->unk_a72) + { + switch (gUnknown_0203A148->regionMap.mapSecId) + { + case MAPSEC_SOUTHERN_ISLAND: + sub_8084CCC(0x15); + break; + case MAPSEC_BATTLE_FRONTIER: + sub_8084CCC(0x16); + break; + case MAPSEC_LITTLEROOT_TOWN: + sub_8084CCC(gSaveBlock2Ptr->playerGender == MALE ? 0x0C : 0x0D); + break; + case MAPSEC_EVER_GRANDE_CITY: + sub_8084CCC(FlagGet(SYS_POKEMON_LEAGUE_FLY) && gUnknown_0203A148->regionMap.posWithinMapSec == 0 ? 0x14 : 0x0B); + break; + default: + if (gUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][2] != 0) + { + sub_8084CCC(gUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][2]); + } + else + { + warp1_set_2(gUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][0], gUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][1], -1); + } + break; + } + sub_80B69DC(); + } + else + { + SetMainCallback2(sub_81B58A8); + } + if (gUnknown_0203A148 != NULL) + { + free(gUnknown_0203A148); + gUnknown_0203A148 = NULL; + } + FreeAllWindowBuffers(); + } + break; + } +} -- cgit v1.2.3 From 7eacb24cf7a889121e654c678bd4026aecd301b1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 1 Nov 2017 21:10:47 -0400 Subject: Start ripping graphics/data for region_map --- src/region_map.c | 56 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 919b82d1a..92f902fe1 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -83,8 +83,8 @@ static void RegionMapPlayerIconSpriteCallback_Full(struct Sprite *sprite); static void RegionMapPlayerIconSpriteCallback(struct Sprite *sprite); static void sub_81248C0(void); static void sub_81248D4(void); -void sub_81248F4(void callback(void)); -void sub_8124904(void); +static void sub_81248F4(void callback(void)); +static void sub_8124904(void); static void sub_8124A70(void); static void sub_8124AD4(void); static void sub_8124BE4(void); @@ -95,17 +95,19 @@ static void sub_8124E0C(void); // .rodata -extern const u8 gUnknown_0859F60C[]; -extern const u8 gUnknown_0859F650[]; -extern const u16 gUnknown_0859F73C[]; -extern const u8 gUnknown_0859F77C[]; -extern const u8 gUnknown_085A04E0[]; +static const u16 sRegionMapCursorPal[] = INCBIN_U16("graphics/pokenav/cursor.gbapal"); +static const u8 sRegionMapCursorSmallGfxLZ[] = INCBIN_U8("graphics/pokenav/cursor_small.4bpp.lz"); +static const u8 sRegionMapCursorLargeGfxLZ[] = INCBIN_U8("graphics/pokenav/cursor_large.4bpp.lz"); +static const u16 sRegionMapBkgnd_Pal[] = INCBIN_U16("graphics/pokenav/region_map.gbapal"); +static const u8 sRegionMapBkgnd_GfxLZ[] = INCBIN_U8("graphics/pokenav/region_map.8bpp.lz"); +static const u8 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U8("graphics/pokenav/region_map_map.bin.lz"); +static const u16 sRegionMapPlayerIcon_BrendanPal[] = INCBIN_U16("graphics/pokenav/brendan_icon.gbapal"); +static const u8 sRegionMapPlayerIcon_BrendanGfx[] = INCBIN_U8("graphics/pokenav/brendan_icon.4bpp"); +static const u16 sRegionMapPlayerIcon_MayPal[] = INCBIN_U16("graphics/pokenav/may_icon.gbapal"); +static const u8 sRegionMapPlayerIcon_MayGfx[] = INCBIN_U8("graphics/pokenav/may_icon.4bpp"); + extern const u8 gUnknown_085A096C[]; extern const struct RegionMapLocation gRegionMapEntries[]; -extern const u8 gUnknown_085A084C[]; -extern const u16 gUnknown_085A082C[]; -extern const u16 gUnknown_085A08CC[]; -extern const u8 gUnknown_085A08EC[]; extern const u16 gUnknown_085A1B24[][2]; extern const u16 gUnknown_085A1B84[]; extern const u16 gUnknown_085A1B8A[]; @@ -120,17 +122,17 @@ extern const u16 gUnknown_085A1C38[]; extern const u8 gUnknown_085A1C58[]; extern const u8 gUnknown_085A1C90[]; extern const u8 gUnknown_085A1D68[]; -extern const struct BgTemplate gUnknown_085A1EE4[]; -extern const struct WindowTemplate gUnknown_085A1EF0[]; +extern const u8 gUnknown_085A1E3C[][3]; extern const struct { const u8 *const *name; u16 mapSecId; u16 flag; } gUnknown_085A1EDC[]; +extern const struct BgTemplate gUnknown_085A1EE4[]; +extern const struct WindowTemplate gUnknown_085A1EF0[]; extern const struct SpritePalette gUnknown_085A1F10; extern const u16 gUnknown_085A1F18[][2]; extern const struct SpriteTemplate gUnknown_085A1F7C; -extern const u8 gUnknown_085A1E3C[][3]; // .text @@ -177,11 +179,11 @@ bool8 sub_8122DB0(void) case 0: if (gRegionMap->bgManaged) { - decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, gUnknown_0859F77C, 0, 0, 0); + decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, sRegionMapBkgnd_GfxLZ, 0, 0, 0); } else { - LZ77UnCompVram(gUnknown_0859F77C, (u16 *)BG_CHAR_ADDR(2)); + LZ77UnCompVram(sRegionMapBkgnd_GfxLZ, (u16 *)BG_CHAR_ADDR(2)); } break; case 1: @@ -189,25 +191,25 @@ bool8 sub_8122DB0(void) { if (!free_temp_tile_data_buffers_if_possible()) { - decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, gUnknown_085A04E0, 0, 0, 1); + decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, sRegionMapBkgnd_TilemapLZ, 0, 0, 1); } } else { - LZ77UnCompVram(gUnknown_085A04E0, (u16 *)BG_SCREEN_ADDR(28)); + LZ77UnCompVram(sRegionMapBkgnd_TilemapLZ, (u16 *)BG_SCREEN_ADDR(28)); } break; case 2: if (!free_temp_tile_data_buffers_if_possible()) { - LoadPalette(gUnknown_0859F73C, 0x70, 0x60); + LoadPalette(sRegionMapBkgnd_Pal, 0x70, 0x60); } break; case 3: - LZ77UnCompWram(gUnknown_0859F60C, gRegionMap->cursorSmallImage); + LZ77UnCompWram(sRegionMapCursorSmallGfxLZ, gRegionMap->cursorSmallImage); break; case 4: - LZ77UnCompWram(gUnknown_0859F650, gRegionMap->cursorLargeImage); + LZ77UnCompWram(sRegionMapCursorLargeGfxLZ, gRegionMap->cursorLargeImage); break; case 5: RegionMap_InitializeStateBasedOnPlayerLocation(); @@ -1103,8 +1105,8 @@ void sub_8124278(void) void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) { u8 spriteId; - struct SpriteSheet sheet = {gUnknown_085A084C, 0x80, tileTag}; - struct SpritePalette palette = {gUnknown_085A082C, paletteTag}; + struct SpriteSheet sheet = {sRegionMapPlayerIcon_BrendanGfx, 0x80, tileTag}; + struct SpritePalette palette = {sRegionMapPlayerIcon_BrendanPal, paletteTag}; struct SpriteTemplate template = {tileTag, paletteTag, &gUnknown_085A1C20, gUnknown_085A1C30, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; if (sub_8124668(gMapHeader.regionMapSectionId)) @@ -1114,8 +1116,8 @@ void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) } if (gSaveBlock2Ptr->playerGender == FEMALE) { - sheet.data = gUnknown_085A08EC; - palette.data = gUnknown_085A08CC; + sheet.data = sRegionMapPlayerIcon_MayGfx; + palette.data = sRegionMapPlayerIcon_MayPal; } LoadSpriteSheet(&sheet); LoadSpritePalette(&palette); @@ -1411,13 +1413,13 @@ static void sub_81248D4(void) do_scheduled_bg_tilemap_copies_to_vram(); } -void sub_81248F4(void callback(void)) +static void sub_81248F4(void callback(void)) { gUnknown_0203A148->unk_000 = callback; gUnknown_0203A148->unk_004 = 0; } -void sub_8124904(void) +static void sub_8124904(void) { u16 i; bool32 flag; -- cgit v1.2.3 From 50efd7b68d4a6952ccb0613892733a852deffc38 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 1 Nov 2017 21:51:59 -0400 Subject: Decompile region map entry structs --- src/region_map.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 92f902fe1..bc7e78c6b 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -106,8 +106,26 @@ static const u8 sRegionMapPlayerIcon_BrendanGfx[] = INCBIN_U8("graphics/pokenav/ static const u16 sRegionMapPlayerIcon_MayPal[] = INCBIN_U16("graphics/pokenav/may_icon.gbapal"); static const u8 sRegionMapPlayerIcon_MayGfx[] = INCBIN_U8("graphics/pokenav/may_icon.4bpp"); -extern const u8 gUnknown_085A096C[]; -extern const struct RegionMapLocation gRegionMapEntries[]; +static const u8 sRegionMap_MapSectionLayout[] = { + MAPSEC_NONE, MAPSEC_ROUTE_114, MAPSEC_ROUTE_114, MAPSEC_FALLARBOR_TOWN, MAPSEC_ROUTE_113, MAPSEC_ROUTE_113, MAPSEC_ROUTE_113, MAPSEC_ROUTE_113, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_FORTREE_CITY, MAPSEC_ROUTE_120, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_NONE, MAPSEC_ROUTE_114, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_CHIMNEY, MAPSEC_MT_CHIMNEY, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_NONE, MAPSEC_ROUTE_120, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_ROUTE_115, MAPSEC_ROUTE_114, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_CHIMNEY, MAPSEC_MT_CHIMNEY, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_NONE, MAPSEC_ROUTE_120, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SAFARI_ZONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_ROUTE_115, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_LAVARIDGE_TOWN, MAPSEC_ROUTE_112, MAPSEC_ROUTE_112, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_NONE, MAPSEC_ROUTE_120, MAPSEC_ROUTE_121, MAPSEC_ROUTE_121, MAPSEC_ROUTE_121, MAPSEC_ROUTE_121, MAPSEC_LILYCOVE_CITY, MAPSEC_LILYCOVE_CITY, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_125, MAPSEC_ROUTE_125, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_ROUTE_115, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_122, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_125, MAPSEC_ROUTE_125, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_RUSTBORO_CITY, MAPSEC_ROUTE_116, MAPSEC_ROUTE_116, MAPSEC_ROUTE_116, MAPSEC_ROUTE_116, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_122, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_MOSSDEEP_CITY, MAPSEC_MOSSDEEP_CITY, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_RUSTBORO_CITY, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_VERDANTURF_TOWN, MAPSEC_ROUTE_117, MAPSEC_ROUTE_117, MAPSEC_ROUTE_117, MAPSEC_MAUVILLE_CITY, MAPSEC_MAUVILLE_CITY, MAPSEC_ROUTE_118, MAPSEC_ROUTE_118, MAPSEC_ROUTE_123, MAPSEC_ROUTE_123, MAPSEC_ROUTE_123, MAPSEC_ROUTE_123, MAPSEC_ROUTE_123, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_126, MAPSEC_ROUTE_126, MAPSEC_ROUTE_126, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_ROUTE_104, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_110, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_126, MAPSEC_SOOTOPOLIS_CITY, MAPSEC_ROUTE_126, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_ROUTE_104, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_103, MAPSEC_ROUTE_103, MAPSEC_ROUTE_103, MAPSEC_ROUTE_103, MAPSEC_ROUTE_110, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_126, MAPSEC_ROUTE_126, MAPSEC_ROUTE_126, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_NONE, MAPSEC_EVER_GRANDE_CITY, + MAPSEC_ROUTE_104, MAPSEC_PETALBURG_CITY, MAPSEC_ROUTE_102, MAPSEC_ROUTE_102, MAPSEC_OLDALE_TOWN, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_110, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_128, MAPSEC_ROUTE_128, MAPSEC_ROUTE_128, MAPSEC_ROUTE_128, MAPSEC_EVER_GRANDE_CITY, + MAPSEC_ROUTE_105, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_101, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SLATEPORT_CITY, MAPSEC_ROUTE_134, MAPSEC_ROUTE_134, MAPSEC_ROUTE_134, MAPSEC_ROUTE_133, MAPSEC_ROUTE_133, MAPSEC_ROUTE_133, MAPSEC_ROUTE_132, MAPSEC_ROUTE_132, MAPSEC_PACIFIDLOG_TOWN, MAPSEC_ROUTE_131, MAPSEC_ROUTE_131, MAPSEC_ROUTE_131, MAPSEC_ROUTE_130, MAPSEC_ROUTE_130, MAPSEC_ROUTE_130, MAPSEC_ROUTE_129, MAPSEC_ROUTE_129, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_ROUTE_105, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_LITTLEROOT_TOWN, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SLATEPORT_CITY, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_ROUTE_105, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_109, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BATTLE_FRONTIER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_ROUTE_106, MAPSEC_ROUTE_106, MAPSEC_ROUTE_106, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_109, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, + MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DEWFORD_TOWN, MAPSEC_ROUTE_107, MAPSEC_ROUTE_107, MAPSEC_ROUTE_107, MAPSEC_ROUTE_108, MAPSEC_ROUTE_108, MAPSEC_ROUTE_109, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SOUTHERN_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE +}; + +#include "data/region_map/region_map_entries.h" + extern const u16 gUnknown_085A1B24[][2]; extern const u16 gUnknown_085A1B84[]; extern const u16 gUnknown_085A1B8A[]; @@ -601,7 +619,7 @@ static u16 GetRegionMapSectionIdAt_Internal(u16 x, u16 y) } y -= MAPCURSOR_Y_MIN; x -= MAPCURSOR_X_MIN; - return gUnknown_085A096C[x + y * MAP_WIDTH]; + return sRegionMap_MapSectionLayout[x + y * MAP_WIDTH]; } static void RegionMap_InitializeStateBasedOnPlayerLocation(void) -- cgit v1.2.3 From 4ff03f85a97f7048d46b1200f1daeea9ecedcc68 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 1 Nov 2017 22:07:30 -0400 Subject: Decompile data related to Emerald-specific areas --- src/region_map.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 71 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index bc7e78c6b..9fbb8cc47 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -126,10 +126,69 @@ static const u8 sRegionMap_MapSectionLayout[] = { #include "data/region_map/region_map_entries.h" -extern const u16 gUnknown_085A1B24[][2]; -extern const u16 gUnknown_085A1B84[]; -extern const u16 gUnknown_085A1B8A[]; -extern const struct UCoords16 gUnknown_085A1BAC[]; +static const u16 sRegionMap_SpecialPlaceLocations[][2] = { + {MAPSEC_UNDERWATER_TERRA_CAVE, MAPSEC_ROUTE_105}, + {MAPSEC_UNDERWATER_124, MAPSEC_ROUTE_124}, + {MAPSEC_UNDERWATER_UNK1, MAPSEC_ROUTE_129}, + {MAPSEC_UNDERWATER_125, MAPSEC_ROUTE_126}, + {MAPSEC_UNDERWATER_126, MAPSEC_ROUTE_127}, + {MAPSEC_UNDERWATER_127, MAPSEC_ROUTE_128}, + {MAPSEC_UNDERWATER_129, MAPSEC_ROUTE_129}, + {MAPSEC_UNDERWATER_SOOTOPOLIS, MAPSEC_SOOTOPOLIS_CITY}, + {MAPSEC_UNDERWATER_128, MAPSEC_ROUTE_128}, + {MAPSEC_AQUA_HIDEOUT, MAPSEC_LILYCOVE_CITY}, + {MAPSEC_AQUA_HIDEOUT_OLD, MAPSEC_LILYCOVE_CITY}, + {MAPSEC_MAGMA_HIDEOUT, MAPSEC_ROUTE_112}, + {MAPSEC_UNDERWATER_SEALED_CHAMBER, MAPSEC_ROUTE_134}, + {MAPSEC_PETALBURG_WOODS, MAPSEC_ROUTE_104}, + {MAPSEC_JAGGED_PASS, MAPSEC_ROUTE_112}, + {MAPSEC_MT_PYRE, MAPSEC_ROUTE_122}, + {MAPSEC_SKY_PILLAR, MAPSEC_ROUTE_131}, + {MAPSEC_MIRAGE_TOWER, MAPSEC_ROUTE_111}, + {MAPSEC_TRAINER_HILL, MAPSEC_ROUTE_111}, + {MAPSEC_DESERT_UNDERPASS, MAPSEC_ROUTE_114}, + {MAPSEC_ALTERING_CAVE_2, MAPSEC_ROUTE_103}, + {MAPSEC_ARTISAN_CAVE, MAPSEC_ROUTE_103}, + {MAPSEC_ABANDONED_SHIP, MAPSEC_ROUTE_108}, + {MAPSEC_NONE, MAPSEC_NONE} +}; + +static const u16 sRegionMap_MarineCaveMapSecIds[] = { + MAPSEC_MARINE_CAVE, + MAPSEC_UNDERWATER_MARINE_CAVE, + MAPSEC_UNDERWATER_MARINE_CAVE +}; + +static const u16 sTerraCaveMapSectionIds[] = { + MAPSEC_ROUTE_114, + MAPSEC_ROUTE_114, + MAPSEC_ROUTE_115, + MAPSEC_ROUTE_115, + MAPSEC_ROUTE_116, + MAPSEC_ROUTE_116, + MAPSEC_ROUTE_118, + MAPSEC_ROUTE_118, + MAPSEC_ROUTE_105, + MAPSEC_ROUTE_105, + MAPSEC_ROUTE_125, + MAPSEC_ROUTE_125, + MAPSEC_ROUTE_127, + MAPSEC_ROUTE_127, + MAPSEC_ROUTE_129, + MAPSEC_ROUTE_129 +}; + +static const struct UCoords16 sTerraCaveLocationCoords[] = { + {0x00, 0x0a}, + {0x00, 0x0c}, + {0x18, 0x03}, + {0x19, 0x04}, + {0x19, 0x06}, + {0x19, 0x07}, + {0x18, 0x0a}, + {0x18, 0x0a} +}; + extern const u8 gUnknown_085A1BCC[]; extern const struct SpritePalette gUnknown_085A1C00; extern const struct SpriteTemplate gUnknown_085A1C08; @@ -656,7 +715,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void) mapHeight = gMapHeader.mapData->height; x = gSaveBlock1Ptr->pos.x; y = gSaveBlock1Ptr->pos.y; - if (gRegionMap->mapSecId == MAPSEC_UNDERWATER || gRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE) + if (gRegionMap->mapSecId == MAPSEC_UNDERWATER_128 || gRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE) { gRegionMap->playerIsInCave = TRUE; } @@ -907,16 +966,16 @@ static u16 CorrectSpecialMapSecId_Internal(u16 mapSecId) for (i = 0; i < 3; i ++) { - if (gUnknown_085A1B84[i] == mapSecId) + if (sRegionMap_MarineCaveMapSecIds[i] == mapSecId) { return RegionMap_GetTerraCaveMapSecId(); } } - for (i = 0; gUnknown_085A1B24[i][0] != MAPSEC_NONE; i ++) + for (i = 0; sRegionMap_SpecialPlaceLocations[i][0] != MAPSEC_NONE; i ++) { - if (gUnknown_085A1B24[i][0] == mapSecId) + if (sRegionMap_SpecialPlaceLocations[i][0] == mapSecId) { - return gUnknown_085A1B24[i][1]; + return sRegionMap_SpecialPlaceLocations[i][1]; } } return mapSecId; @@ -931,7 +990,7 @@ static u16 RegionMap_GetTerraCaveMapSecId(void) { idx = 0; } - return gUnknown_085A1B8A[idx]; + return sTerraCaveMapSectionIds[idx]; } static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y) @@ -944,8 +1003,8 @@ static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y) idx = 9; } idx -= 9; - *x = gUnknown_085A1BAC[idx].x + MAPCURSOR_X_MIN; - *y = gUnknown_085A1BAC[idx].y + MAPCURSOR_Y_MIN; + *x = sTerraCaveLocationCoords[idx].x + MAPCURSOR_X_MIN; + *y = sTerraCaveLocationCoords[idx].y + MAPCURSOR_Y_MIN; } static bool32 RegionMap_IsPlayerInCave(u8 mapSecId) -- cgit v1.2.3 From 2e0b1700f42769e0aa2df2b45c4015056b36c806 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 1 Nov 2017 22:12:18 -0400 Subject: sRegionMap_MapSecAquaHideoutOld --- src/region_map.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 9fbb8cc47..195694988 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -189,7 +189,10 @@ static const struct UCoords16 sTerraCaveLocationCoords[] = { {0x18, 0x0a} }; -extern const u8 gUnknown_085A1BCC[]; +static const u8 sRegionMap_MapSecAquaHideoutOld[] = { + MAPSEC_AQUA_HIDEOUT_OLD +}; + extern const struct SpritePalette gUnknown_085A1C00; extern const struct SpriteTemplate gUnknown_085A1C08; extern const struct OamData gUnknown_085A1C20; @@ -1009,11 +1012,11 @@ static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y) static bool32 RegionMap_IsPlayerInCave(u8 mapSecId) { - int i; + u32 i; - for (i = 0; i == 0; i ++) + for (i = 0; i < 1; i ++) { - if (gUnknown_085A1BCC[i] == mapSecId) + if (sRegionMap_MapSecAquaHideoutOld[i] == mapSecId) { return TRUE; } -- cgit v1.2.3 From 30d68db0dceaaef385e2a00a749ea365b5cb658a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 1 Nov 2017 22:26:54 -0400 Subject: sRegionMapCursorSpriteTemplate --- src/region_map.c | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 195694988..a8bf2dcfb 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -75,6 +75,7 @@ static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y); static bool32 RegionMap_IsPlayerInCave(u8 mapSecId); static void RegionMap_GetPositionOfCursorWithinMapSection(void); static bool8 RegionMap_IsMapSecIdInNextRow(u16 y); +static void SpriteCallback_CursorFull(struct Sprite *sprite); static void FreeRegionMapCursorSprite(void); static void HideRegionMapPlayerIcon(void); static void UnhideRegionMapPlayerIcon(void); @@ -193,8 +194,41 @@ static const u8 sRegionMap_MapSecAquaHideoutOld[] = { MAPSEC_AQUA_HIDEOUT_OLD }; -extern const struct SpritePalette gUnknown_085A1C00; -extern const struct SpriteTemplate gUnknown_085A1C08; +static const struct OamData sRegionMapCursorOam = { + .size = 1, .priority = 1 +}; + +static const union AnimCmd sRegionMapCursorAnim1[] = { + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(4, 20), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sRegionMapCursorAnim2[] = { + ANIMCMD_FRAME( 0, 10), + ANIMCMD_FRAME(16, 10), + ANIMCMD_FRAME(32, 10), + ANIMCMD_FRAME(16, 10), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const sRegionMapCursorAnimTable[] = { + sRegionMapCursorAnim1, + sRegionMapCursorAnim2 +}; + +static const struct SpritePalette sRegionMapCursorSpritePalette = { sRegionMapCursorPal, 0 }; + +static const struct SpriteTemplate sRegionMapCursorSpriteTemplate = { + 0, + 0, + &sRegionMapCursorOam, + sRegionMapCursorAnimTable, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallback_CursorFull +}; + extern const struct OamData gUnknown_085A1C20; extern const union AnimCmd *const gUnknown_085A1C30[]; extern const u8 gUnknown_085A1C34[]; @@ -1117,8 +1151,8 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag) struct SpritePalette palette; struct SpriteSheet sheet; - palette = gUnknown_085A1C00; - template = gUnknown_085A1C08; + palette = sRegionMapCursorSpritePalette; + template = sRegionMapCursorSpriteTemplate; sheet.tag = tileTag; template.tileTag = tileTag; gRegionMap->cursorTileTag = tileTag; -- cgit v1.2.3 From c99a08d448dd6d58d4a52924d5ad17483055194d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 1 Nov 2017 23:00:22 -0400 Subject: More data decomp in region_map --- src/region_map.c | 114 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 99 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index a8bf2dcfb..e0273b7bb 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -229,19 +229,103 @@ static const struct SpriteTemplate sRegionMapCursorSpriteTemplate = { SpriteCallback_CursorFull }; -extern const struct OamData gUnknown_085A1C20; -extern const union AnimCmd *const gUnknown_085A1C30[]; -extern const u8 gUnknown_085A1C34[]; -extern const u16 gUnknown_085A1C38[]; -extern const u8 gUnknown_085A1C58[]; -extern const u8 gUnknown_085A1C90[]; -extern const u8 gUnknown_085A1D68[]; -extern const u8 gUnknown_085A1E3C[][3]; -extern const struct { +static const struct OamData sRegionMapPlayerIconOam = { + .size = 1, .priority = 2 +}; + +static const union AnimCmd sRegionMapPlayerIconAnim1[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const sRegionMapPlayerIconAnimTable[] = { + sRegionMapPlayerIconAnim1 +}; + +static const u8 sRegionMapEventSectionIds[] = { + MAPSEC_BIRTH_ISLAND_2, + MAPSEC_FARAWAY_ISLAND, + MAPSEC_NAVEL_ROCK2 +}; + +static const u16 sRegionMapFramePal[] = INCBIN_U16("graphics/pokenav/map_frame.gbapal"); + +static const u8 sRegionMapFrameGfxLZ[] = INCBIN_U8("graphics/pokenav/map_frame.4bpp.lz"); + +static const u8 sRegionMapFrameTilemapLZ[] = INCBIN_U8("graphics/pokenav/map_frame.bin.lz"); + +static const u16 Unknown_085A1D48[] = INCBIN_U16("graphics/pokenav/fly_target_icons.gbapal"); + +static const u8 gUnknown_085A1D68[] = INCBIN_U8("graphics/pokenav/fly_target_icons.4bpp.lz"); + +static const u8 gUnknown_085A1E3C[][3] = { + {MAP_GROUP_LITTLEROOT_TOWN, MAP_ID_LITTLEROOT_TOWN, 1}, + {MAP_GROUP_OLDALE_TOWN, MAP_ID_OLDALE_TOWN, 14}, + {MAP_GROUP_DEWFORD_TOWN, MAP_ID_DEWFORD_TOWN, 15}, + {MAP_GROUP_LAVARIDGE_TOWN, MAP_ID_LAVARIDGE_TOWN, 16}, + {MAP_GROUP_FALLARBOR_TOWN, MAP_ID_FALLARBOR_TOWN, 17}, + {MAP_GROUP_VERDANTURF_TOWN, MAP_ID_VERDANTURF_TOWN, 18}, + {MAP_GROUP_PACIFIDLOG_TOWN, MAP_ID_PACIFIDLOG_TOWN, 19}, + {MAP_GROUP_PETALBURG_CITY, MAP_ID_PETALBURG_CITY, 3}, + {MAP_GROUP_SLATEPORT_CITY, MAP_ID_SLATEPORT_CITY, 4}, + {MAP_GROUP_MAUVILLE_CITY, MAP_ID_MAUVILLE_CITY, 5}, + {MAP_GROUP_RUSTBORO_CITY, MAP_ID_RUSTBORO_CITY, 6}, + {MAP_GROUP_FORTREE_CITY, MAP_ID_FORTREE_CITY, 7}, + {MAP_GROUP_LILYCOVE_CITY, MAP_ID_LILYCOVE_CITY, 8}, + {MAP_GROUP_MOSSDEEP_CITY, MAP_ID_MOSSDEEP_CITY, 9}, + {MAP_GROUP_SOOTOPOLIS_CITY, MAP_ID_SOOTOPOLIS_CITY, 10}, + {MAP_GROUP_EVER_GRANDE_CITY, MAP_ID_EVER_GRANDE_CITY, 11}, + {MAP_GROUP_ROUTE101, MAP_ID_ROUTE101, 0}, + {MAP_GROUP_ROUTE102, MAP_ID_ROUTE102, 0}, + {MAP_GROUP_ROUTE103, MAP_ID_ROUTE103, 0}, + {MAP_GROUP_ROUTE104, MAP_ID_ROUTE104, 0}, + {MAP_GROUP_ROUTE105, MAP_ID_ROUTE105, 0}, + {MAP_GROUP_ROUTE106, MAP_ID_ROUTE106, 0}, + {MAP_GROUP_ROUTE107, MAP_ID_ROUTE107, 0}, + {MAP_GROUP_ROUTE108, MAP_ID_ROUTE108, 0}, + {MAP_GROUP_ROUTE109, MAP_ID_ROUTE109, 0}, + {MAP_GROUP_ROUTE110, MAP_ID_ROUTE110, 0}, + {MAP_GROUP_ROUTE111, MAP_ID_ROUTE111, 0}, + {MAP_GROUP_ROUTE112, MAP_ID_ROUTE112, 0}, + {MAP_GROUP_ROUTE113, MAP_ID_ROUTE113, 0}, + {MAP_GROUP_ROUTE114, MAP_ID_ROUTE114, 0}, + {MAP_GROUP_ROUTE115, MAP_ID_ROUTE115, 0}, + {MAP_GROUP_ROUTE116, MAP_ID_ROUTE116, 0}, + {MAP_GROUP_ROUTE117, MAP_ID_ROUTE117, 0}, + {MAP_GROUP_ROUTE118, MAP_ID_ROUTE118, 0}, + {MAP_GROUP_ROUTE119, MAP_ID_ROUTE119, 0}, + {MAP_GROUP_ROUTE120, MAP_ID_ROUTE120, 0}, + {MAP_GROUP_ROUTE121, MAP_ID_ROUTE121, 0}, + {MAP_GROUP_ROUTE122, MAP_ID_ROUTE122, 0}, + {MAP_GROUP_ROUTE123, MAP_ID_ROUTE123, 0}, + {MAP_GROUP_ROUTE124, MAP_ID_ROUTE124, 0}, + {MAP_GROUP_ROUTE125, MAP_ID_ROUTE125, 0}, + {MAP_GROUP_ROUTE126, MAP_ID_ROUTE126, 0}, + {MAP_GROUP_ROUTE127, MAP_ID_ROUTE127, 0}, + {MAP_GROUP_ROUTE128, MAP_ID_ROUTE128, 0}, + {MAP_GROUP_ROUTE129, MAP_ID_ROUTE129, 0}, + {MAP_GROUP_ROUTE130, MAP_ID_ROUTE130, 0}, + {MAP_GROUP_ROUTE131, MAP_ID_ROUTE131, 0}, + {MAP_GROUP_ROUTE132, MAP_ID_ROUTE132, 0}, + {MAP_GROUP_ROUTE133, MAP_ID_ROUTE133, 0}, + {MAP_GROUP_ROUTE134, MAP_ID_ROUTE134, 0} +}; + +static const u8 *const gUnknown_085A1ED4[] = { + gUnknown_085EC782, + gUnknown_085EC791 +}; + +static const struct { const u8 *const *name; u16 mapSecId; u16 flag; -} gUnknown_085A1EDC[]; +} gUnknown_085A1EDC[] = { + gUnknown_085A1ED4, + MAPSEC_EVER_GRANDE_CITY, + SYS_POKEMON_LEAGUE_FLY +}; + extern const struct BgTemplate gUnknown_085A1EE4[]; extern const struct WindowTemplate gUnknown_085A1EF0[]; extern const struct SpritePalette gUnknown_085A1F10; @@ -1221,7 +1305,7 @@ void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) u8 spriteId; struct SpriteSheet sheet = {sRegionMapPlayerIcon_BrendanGfx, 0x80, tileTag}; struct SpritePalette palette = {sRegionMapPlayerIcon_BrendanPal, paletteTag}; - struct SpriteTemplate template = {tileTag, paletteTag, &gUnknown_085A1C20, gUnknown_085A1C30, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; + struct SpriteTemplate template = {tileTag, paletteTag, &sRegionMapPlayerIconOam, sRegionMapPlayerIconAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; if (sub_8124668(gMapHeader.regionMapSectionId)) { @@ -1412,7 +1496,7 @@ bool32 sub_8124668(u8 mapSecId) for (i = 0; i < 3; i ++) { - if (mapSecId == gUnknown_085A1C34[i]) + if (mapSecId == sRegionMapEventSectionIds[i]) { return TRUE; } @@ -1475,15 +1559,15 @@ void MCB2_FlyMap(void) gMain.state ++; break; case 5: - LZ77UnCompVram(gUnknown_085A1C58, (u16 *)BG_CHAR_ADDR(3)); + LZ77UnCompVram(sRegionMapFrameGfxLZ, (u16 *)BG_CHAR_ADDR(3)); gMain.state ++; break; case 6: - LZ77UnCompVram(gUnknown_085A1C90, (u16 *)BG_SCREEN_ADDR(30)); + LZ77UnCompVram(sRegionMapFrameTilemapLZ, (u16 *)BG_SCREEN_ADDR(30)); gMain.state ++; break; case 7: - LoadPalette(gUnknown_085A1C38, 0x10, 0x20); + LoadPalette(sRegionMapFramePal, 0x10, 0x20); PutWindowTilemap(2); FillWindowPixelBuffer(2, 0x00); PrintTextOnWindow(2, 1, gText_FlyToWhere, 0, 1, 0, NULL); -- cgit v1.2.3 From 22f65174237cb16d69aedaf8bff54057ed966e8c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 1 Nov 2017 23:21:07 -0400 Subject: Decompile remaining region map data --- src/region_map.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 80 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index e0273b7bb..0f0fb1dca 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -326,11 +326,86 @@ static const struct { SYS_POKEMON_LEAGUE_FLY }; -extern const struct BgTemplate gUnknown_085A1EE4[]; -extern const struct WindowTemplate gUnknown_085A1EF0[]; -extern const struct SpritePalette gUnknown_085A1F10; -extern const u16 gUnknown_085A1F18[][2]; -extern const struct SpriteTemplate gUnknown_085A1F7C; +static const struct BgTemplate gUnknown_085A1EE4[] = { + { .bg = 0, .charBaseIndex = 0, .mapBaseIndex = 31, .screenSize = 0, .paletteMode = 0, .priority = 0 }, + { .bg = 1, .charBaseIndex = 3, .mapBaseIndex = 30, .screenSize = 0, .paletteMode = 0, .priority = 1 }, + { .bg = 2, .charBaseIndex = 2, .mapBaseIndex = 28, .screenSize = 2, .paletteMode = 1, .priority = 2 } +}; + +static const struct WindowTemplate gUnknown_085A1EF0[] = { + { 0, 17, 17, 12, 2, 15, 0x01 }, + { 0, 17, 15, 12, 4, 15, 0x19 }, + { 0, 1, 18, 14, 2, 15, 0x49 }, + DUMMY_WIN_TEMPLATE +}; + +static const struct SpritePalette gUnknown_085A1F10 = { + Unknown_085A1D48, 2 +}; + +static const u16 gUnknown_085A1F18[][2] = { + {FLAG_UNLOCK_BATTLE_FRONTIER, MAPSEC_BATTLE_FRONTIER}, + {-1, MAPSEC_NONE} +}; + +static const struct OamData gOamData_085A1F20 = { + .priority = 2 +}; + +static const union AnimCmd gUnknown_085A1F28[] = { + ANIMCMD_FRAME( 0, 5), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_085A1F30[] = { + ANIMCMD_FRAME( 1, 5), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_085A1F38[] = { + ANIMCMD_FRAME( 3, 5), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_085A1F40[] = { + ANIMCMD_FRAME( 5, 5), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_085A1F48[] = { + ANIMCMD_FRAME( 6, 5), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_085A1F50[] = { + ANIMCMD_FRAME( 8, 5), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_085A1F58[] = { + ANIMCMD_FRAME(10, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const gUnknown_085A1F60[] = { + gUnknown_085A1F28, + gUnknown_085A1F30, + gUnknown_085A1F38, + gUnknown_085A1F40, + gUnknown_085A1F48, + gUnknown_085A1F50, + gUnknown_085A1F58 +}; + +static const struct SpriteTemplate gUnknown_085A1F7C = { + 2, + 2, + &gOamData_085A1F20, + gUnknown_085A1F60, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; // .text -- cgit v1.2.3 From 1b499670bd8a428f9b0d5506c334aa88bf4272a3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 1 Nov 2017 23:29:02 -0400 Subject: IWRAM and EWRAM symbols in region_map --- src/region_map.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 0f0fb1dca..5481606e9 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -44,8 +44,8 @@ struct RegionMapLocation // Static RAM declarations -EWRAM_DATA struct RegionMap *gRegionMap = NULL; -EWRAM_DATA struct { +static EWRAM_DATA struct RegionMap *gRegionMap = NULL; +static EWRAM_DATA struct { /*0x000*/ void (*unk_000)(void); /*0x004*/ u16 unk_004; /*0x006*/ u16 mapSecId; @@ -55,7 +55,8 @@ EWRAM_DATA struct { /*0xa72*/ bool8 unk_a72; } *gUnknown_0203A148 = NULL; // a74 -IWRAM_DATA bool32 gUnknown_03001180; +static bool32 gUnknown_03001180; +static bool32 gUnknown_03001184; // Static ROM declarations -- cgit v1.2.3 From 5243285ab2cbf895f28e9866e3f5671326422348 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 2 Nov 2017 18:19:49 +0100 Subject: start working on battle 7 --- src/battle_7.c | 284 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 284 insertions(+) create mode 100644 src/battle_7.c (limited to 'src') diff --git a/src/battle_7.c b/src/battle_7.c new file mode 100644 index 000000000..8e21f9df5 --- /dev/null +++ b/src/battle_7.c @@ -0,0 +1,284 @@ +#include "global.h" +#include "battle.h" +#include "battle_controllers.h" +#include "battle_ai_script_commands.h" +#include "malloc.h" +#include "rng.h" +#include "util.h" +#include "pokemon.h" +#include "moves.h" + +extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; +extern u8 gActiveBank; +extern u16 gUnknown_020243FC; +extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; + +extern const struct BattleMove gBattleMoves[]; +extern const u8 gUnknown_0831C604[]; + +// this file's functions +u8 sub_805D4A8(u16 move); +u16 BattlePalaceGetTargetRetValue(void); +void sub_805D7EC(struct Sprite *sprite); + +void AllocateBattleSpritesData(void) +{ + gBattleSpritesDataPtr = AllocZeroed(sizeof(struct BattleSpriteData)); + gBattleSpritesDataPtr->bankData = AllocZeroed(sizeof(struct BattleSpriteInfo) * BATTLE_BANKS_COUNT); + gBattleSpritesDataPtr->healthBoxesData = AllocZeroed(sizeof(struct BattleHealthboxInfo) * BATTLE_BANKS_COUNT); + gBattleSpritesDataPtr->animationData = AllocZeroed(sizeof(struct BattleAnimationInfo)); + gBattleSpritesDataPtr->battleBars = AllocZeroed(sizeof(struct BattleBarInfo) * BATTLE_BANKS_COUNT); +} + +void FreeBattleSpritesData(void) +{ + if (gBattleSpritesDataPtr == NULL) + return; + + FREE_AND_SET_NULL(gBattleSpritesDataPtr->battleBars); + FREE_AND_SET_NULL(gBattleSpritesDataPtr->animationData); + FREE_AND_SET_NULL(gBattleSpritesDataPtr->healthBoxesData); + FREE_AND_SET_NULL(gBattleSpritesDataPtr->bankData); + FREE_AND_SET_NULL(gBattleSpritesDataPtr); +} + +u16 ChooseMoveAndTargetInBattlePalace(void) +{ + s32 i, var1, var2; + s32 chosenMoveId = -1; + struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]); + u8 unusableMovesBits = CheckMoveLimitations(gActiveBank, 0, 0xFF); + s32 percent = Random() % 100; + + i = (gBattleStruct->field_92 & gBitTable[gActiveBank]) ? 2 : 0; + var2 = i; + var1 = i + 2; + + for (; i < var1; i++) + { + if (gUnknown_0831C494[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)][i] > percent) + break; + } + + percent = i - var2; + if (i == var1) + percent = 2; + + for (var2 = 0, i = 0; i < 4; i++) + { + if (moveInfo->moves[i] == MOVE_NONE) + break; + if (percent == sub_805D4A8(moveInfo->moves[i]) && moveInfo->currentPp[i] != 0) + var2 |= gBitTable[i]; + } + + if (var2 != 0) + { + gBattleStruct->field_92 &= 0xF; + gBattleStruct->field_92 |= (var2 << 4); + BattleAI_SetupAIData(var2); + chosenMoveId = BattleAI_ChooseMoveOrAction(); + } + + if (chosenMoveId == -1) + { + if (unusableMovesBits != 0xF) + { + var1 = 0, var2 = 0; + + for (i = 0; i < 4; i++) + { + if (sub_805D4A8(moveInfo->moves[i]) == 0 && !(gBitTable[i] & unusableMovesBits)) + var1 += 0x1; + if (sub_805D4A8(moveInfo->moves[i]) == 1 && !(gBitTable[i] & unusableMovesBits)) + var1 += 0x10; + if (sub_805D4A8(moveInfo->moves[i]) == 2 && !(gBitTable[i] & unusableMovesBits)) + var1 += 0x100; + } + + if ((var1 & 0xF) > 1) + var2++; + if ((var1 & 0xF0) > 0x1F) + var2++; + if ((var1 & 0xF0) > 0x1FF) + var2++; + + if (var2 > 1 || var2 == 0) + { + do + { + i = Random() % 4; + if (!(gBitTable[i] & unusableMovesBits)) + chosenMoveId = i; + } while (chosenMoveId == -1); + } + else + { + if ((var1 & 0xF) > 1) + var2 = 0; + if ((var1 & 0xF0) > 0x1F) + var2 = 1; + if ((var1 & 0xF0) > 0x1FF) + var2 = 2; + + do + { + i = Random() % 4; + if (!(gBitTable[i] & unusableMovesBits) && var2 == sub_805D4A8(moveInfo->moves[i])) + chosenMoveId = i; + } while (chosenMoveId == -1); + } + + if (Random() % 100 > 49) + { + gProtectStructs[gActiveBank].flag_x10 = 1; + return 0; + } + } + else + { + gProtectStructs[gActiveBank].flag_x10 = 1; + return 0; + } + } + + if (moveInfo->moves[chosenMoveId] == MOVE_CURSE) + { + if (moveInfo->monType1 != TYPE_GHOST && moveInfo->monType2 != TYPE_GHOST) + var1 = MOVE_TARGET_x10; + else + var1 = MOVE_TARGET_SELECTED; + } + else + { + var1 = gBattleMoves[moveInfo->moves[chosenMoveId]].target; + } + + if (var1 & MOVE_TARGET_x10) + chosenMoveId |= (gActiveBank << 8); + else if (var1 == MOVE_TARGET_SELECTED) + chosenMoveId |= (BattlePalaceGetTargetRetValue()); + else + chosenMoveId |= (GetBankByIdentity((GetBankIdentity(gActiveBank) & BIT_SIDE) ^ BIT_SIDE) << 8); + + return chosenMoveId; +} + +u8 sub_805D4A8(u16 move) +{ + switch (gBattleMoves[move].target) + { + case MOVE_TARGET_SELECTED: + case MOVE_TARGET_USER: + case MOVE_TARGET_RANDOM: + case MOVE_TARGET_BOTH: + case MOVE_TARGET_FOES_AND_ALLY: + if (gBattleMoves[move].power == 0) + return 2; + else + return 0; + break; + case MOVE_TARGET_DEPENDS: + case MOVE_TARGET_OPPONENTS_FIELD: + return 2; + case MOVE_TARGET_x10: + return 1; + default: + return 0; + } +} + +u16 BattlePalaceGetTargetRetValue(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + u8 opposing1, opposing2; + + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + { + opposing1 = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + opposing2 = GetBankByIdentity(IDENTITY_OPPONENT_MON2); + } + else + { + opposing1 = GetBankByIdentity(IDENTITY_PLAYER_MON1); + opposing2 = GetBankByIdentity(IDENTITY_PLAYER_MON2); + } + + if (gBattleMons[opposing1].hp == gBattleMons[opposing2].hp) + return (((gActiveBank & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8; + + switch (gUnknown_0831C604[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)]) + { + case 0: + if (gBattleMons[opposing1].hp > gBattleMons[opposing2].hp) + return opposing1 << 8; + else + return opposing2 << 8; + case 1: + if (gBattleMons[opposing1].hp < gBattleMons[opposing2].hp) + return opposing1 << 8; + else + return opposing2 << 8; + case 2: + return (((gActiveBank & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8; + } + } + + return (gActiveBank ^ BIT_SIDE) << 8; +} + +void sub_805D714(struct Sprite *sprite) +{ + u8 spriteId = sprite->data1; + + if (!gSprites[spriteId].affineAnimEnded) + return; + if (gSprites[spriteId].invisible) + return; + + if (gSprites[spriteId].animPaused) + { + gSprites[spriteId].animPaused = 0; + } + else + { + if (gSprites[spriteId].animEnded) + sprite->callback = SpriteCallbackDummy; + } +} + +void sub_805D770(struct Sprite *sprite, bool8 arg1) +{ + sprite->animPaused = 1; + sprite->callback = SpriteCallbackDummy; + + if (!arg1) + StartSpriteAffineAnim(sprite, 1); + else + StartSpriteAffineAnim(sprite, 1); + + AnimateSprite(sprite); +} + +void sub_805D7AC(struct Sprite *sprite) +{ + if (!(gUnknown_020243FC & 1)) + { + sprite->pos2.x += sprite->data0; + if (sprite->pos2.x == 0) + { + if (sprite->pos2.y != 0) + sprite->callback = sub_805D7EC; + else + sprite->callback = SpriteCallbackDummy; + } + } +} + +void sub_805D7EC(struct Sprite *sprite) +{ + sprite->pos2.y -= 2; + if (sprite->pos2.y == 0) + sprite->callback = SpriteCallbackDummy; +} -- cgit v1.2.3 From 6c8155074b67cce4dd5a6aa01d83bc6830b9d1c8 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 4 Nov 2017 16:11:13 +0100 Subject: battle 7 is decompiled --- src/battle_2.c | 4 +- src/battle_7.c | 284 ------- src/battle_controller_link_opponent.c | 28 +- src/battle_controller_link_partner.c | 32 +- src/battle_controller_opponent.c | 28 +- src/battle_controller_player.c | 42 +- src/battle_controller_player_partner.c | 34 +- src/battle_controller_recorded_opponent.c | 28 +- src/battle_controller_recorded_player.c | 36 +- src/battle_controller_safari.c | 8 +- src/battle_controller_wally.c | 24 +- src/battle_dome_cards.c | 4 +- src/battle_gfx_sfx_util.c | 1299 +++++++++++++++++++++++++++++ src/battle_interface.c | 10 +- src/battle_script_commands.c | 47 +- src/pokemon_3.c | 6 +- src/reshow_battle_screen.c | 14 +- 17 files changed, 1477 insertions(+), 451 deletions(-) delete mode 100644 src/battle_7.c create mode 100644 src/battle_gfx_sfx_util.c (limited to 'src') diff --git a/src/battle_2.c b/src/battle_2.c index 24b43bdbd..e4ee624fb 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -4767,7 +4767,7 @@ static void HandleEndTurn_BattleWon(void) else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000 | BATTLE_TYPE_EREADER_TRAINER)) { - BattleMusicStop(); + BattleStopLowHpSound(); gBattlescriptCurrInstr = BattleScript_FrontierTrainerBattleWon; if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_3FE) @@ -4777,7 +4777,7 @@ static void HandleEndTurn_BattleWon(void) } else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & BATTLE_TYPE_LINK)) { - BattleMusicStop(); + BattleStopLowHpSound(); gBattlescriptCurrInstr = BattleScript_LocalTrainerBattleWon; switch (gTrainers[gTrainerBattleOpponent_A].trainerClass) diff --git a/src/battle_7.c b/src/battle_7.c deleted file mode 100644 index 8e21f9df5..000000000 --- a/src/battle_7.c +++ /dev/null @@ -1,284 +0,0 @@ -#include "global.h" -#include "battle.h" -#include "battle_controllers.h" -#include "battle_ai_script_commands.h" -#include "malloc.h" -#include "rng.h" -#include "util.h" -#include "pokemon.h" -#include "moves.h" - -extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; -extern u8 gActiveBank; -extern u16 gUnknown_020243FC; -extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; - -extern const struct BattleMove gBattleMoves[]; -extern const u8 gUnknown_0831C604[]; - -// this file's functions -u8 sub_805D4A8(u16 move); -u16 BattlePalaceGetTargetRetValue(void); -void sub_805D7EC(struct Sprite *sprite); - -void AllocateBattleSpritesData(void) -{ - gBattleSpritesDataPtr = AllocZeroed(sizeof(struct BattleSpriteData)); - gBattleSpritesDataPtr->bankData = AllocZeroed(sizeof(struct BattleSpriteInfo) * BATTLE_BANKS_COUNT); - gBattleSpritesDataPtr->healthBoxesData = AllocZeroed(sizeof(struct BattleHealthboxInfo) * BATTLE_BANKS_COUNT); - gBattleSpritesDataPtr->animationData = AllocZeroed(sizeof(struct BattleAnimationInfo)); - gBattleSpritesDataPtr->battleBars = AllocZeroed(sizeof(struct BattleBarInfo) * BATTLE_BANKS_COUNT); -} - -void FreeBattleSpritesData(void) -{ - if (gBattleSpritesDataPtr == NULL) - return; - - FREE_AND_SET_NULL(gBattleSpritesDataPtr->battleBars); - FREE_AND_SET_NULL(gBattleSpritesDataPtr->animationData); - FREE_AND_SET_NULL(gBattleSpritesDataPtr->healthBoxesData); - FREE_AND_SET_NULL(gBattleSpritesDataPtr->bankData); - FREE_AND_SET_NULL(gBattleSpritesDataPtr); -} - -u16 ChooseMoveAndTargetInBattlePalace(void) -{ - s32 i, var1, var2; - s32 chosenMoveId = -1; - struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]); - u8 unusableMovesBits = CheckMoveLimitations(gActiveBank, 0, 0xFF); - s32 percent = Random() % 100; - - i = (gBattleStruct->field_92 & gBitTable[gActiveBank]) ? 2 : 0; - var2 = i; - var1 = i + 2; - - for (; i < var1; i++) - { - if (gUnknown_0831C494[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)][i] > percent) - break; - } - - percent = i - var2; - if (i == var1) - percent = 2; - - for (var2 = 0, i = 0; i < 4; i++) - { - if (moveInfo->moves[i] == MOVE_NONE) - break; - if (percent == sub_805D4A8(moveInfo->moves[i]) && moveInfo->currentPp[i] != 0) - var2 |= gBitTable[i]; - } - - if (var2 != 0) - { - gBattleStruct->field_92 &= 0xF; - gBattleStruct->field_92 |= (var2 << 4); - BattleAI_SetupAIData(var2); - chosenMoveId = BattleAI_ChooseMoveOrAction(); - } - - if (chosenMoveId == -1) - { - if (unusableMovesBits != 0xF) - { - var1 = 0, var2 = 0; - - for (i = 0; i < 4; i++) - { - if (sub_805D4A8(moveInfo->moves[i]) == 0 && !(gBitTable[i] & unusableMovesBits)) - var1 += 0x1; - if (sub_805D4A8(moveInfo->moves[i]) == 1 && !(gBitTable[i] & unusableMovesBits)) - var1 += 0x10; - if (sub_805D4A8(moveInfo->moves[i]) == 2 && !(gBitTable[i] & unusableMovesBits)) - var1 += 0x100; - } - - if ((var1 & 0xF) > 1) - var2++; - if ((var1 & 0xF0) > 0x1F) - var2++; - if ((var1 & 0xF0) > 0x1FF) - var2++; - - if (var2 > 1 || var2 == 0) - { - do - { - i = Random() % 4; - if (!(gBitTable[i] & unusableMovesBits)) - chosenMoveId = i; - } while (chosenMoveId == -1); - } - else - { - if ((var1 & 0xF) > 1) - var2 = 0; - if ((var1 & 0xF0) > 0x1F) - var2 = 1; - if ((var1 & 0xF0) > 0x1FF) - var2 = 2; - - do - { - i = Random() % 4; - if (!(gBitTable[i] & unusableMovesBits) && var2 == sub_805D4A8(moveInfo->moves[i])) - chosenMoveId = i; - } while (chosenMoveId == -1); - } - - if (Random() % 100 > 49) - { - gProtectStructs[gActiveBank].flag_x10 = 1; - return 0; - } - } - else - { - gProtectStructs[gActiveBank].flag_x10 = 1; - return 0; - } - } - - if (moveInfo->moves[chosenMoveId] == MOVE_CURSE) - { - if (moveInfo->monType1 != TYPE_GHOST && moveInfo->monType2 != TYPE_GHOST) - var1 = MOVE_TARGET_x10; - else - var1 = MOVE_TARGET_SELECTED; - } - else - { - var1 = gBattleMoves[moveInfo->moves[chosenMoveId]].target; - } - - if (var1 & MOVE_TARGET_x10) - chosenMoveId |= (gActiveBank << 8); - else if (var1 == MOVE_TARGET_SELECTED) - chosenMoveId |= (BattlePalaceGetTargetRetValue()); - else - chosenMoveId |= (GetBankByIdentity((GetBankIdentity(gActiveBank) & BIT_SIDE) ^ BIT_SIDE) << 8); - - return chosenMoveId; -} - -u8 sub_805D4A8(u16 move) -{ - switch (gBattleMoves[move].target) - { - case MOVE_TARGET_SELECTED: - case MOVE_TARGET_USER: - case MOVE_TARGET_RANDOM: - case MOVE_TARGET_BOTH: - case MOVE_TARGET_FOES_AND_ALLY: - if (gBattleMoves[move].power == 0) - return 2; - else - return 0; - break; - case MOVE_TARGET_DEPENDS: - case MOVE_TARGET_OPPONENTS_FIELD: - return 2; - case MOVE_TARGET_x10: - return 1; - default: - return 0; - } -} - -u16 BattlePalaceGetTargetRetValue(void) -{ - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - { - u8 opposing1, opposing2; - - if (GetBankSide(gActiveBank) == SIDE_PLAYER) - { - opposing1 = GetBankByIdentity(IDENTITY_OPPONENT_MON1); - opposing2 = GetBankByIdentity(IDENTITY_OPPONENT_MON2); - } - else - { - opposing1 = GetBankByIdentity(IDENTITY_PLAYER_MON1); - opposing2 = GetBankByIdentity(IDENTITY_PLAYER_MON2); - } - - if (gBattleMons[opposing1].hp == gBattleMons[opposing2].hp) - return (((gActiveBank & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8; - - switch (gUnknown_0831C604[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)]) - { - case 0: - if (gBattleMons[opposing1].hp > gBattleMons[opposing2].hp) - return opposing1 << 8; - else - return opposing2 << 8; - case 1: - if (gBattleMons[opposing1].hp < gBattleMons[opposing2].hp) - return opposing1 << 8; - else - return opposing2 << 8; - case 2: - return (((gActiveBank & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8; - } - } - - return (gActiveBank ^ BIT_SIDE) << 8; -} - -void sub_805D714(struct Sprite *sprite) -{ - u8 spriteId = sprite->data1; - - if (!gSprites[spriteId].affineAnimEnded) - return; - if (gSprites[spriteId].invisible) - return; - - if (gSprites[spriteId].animPaused) - { - gSprites[spriteId].animPaused = 0; - } - else - { - if (gSprites[spriteId].animEnded) - sprite->callback = SpriteCallbackDummy; - } -} - -void sub_805D770(struct Sprite *sprite, bool8 arg1) -{ - sprite->animPaused = 1; - sprite->callback = SpriteCallbackDummy; - - if (!arg1) - StartSpriteAffineAnim(sprite, 1); - else - StartSpriteAffineAnim(sprite, 1); - - AnimateSprite(sprite); -} - -void sub_805D7AC(struct Sprite *sprite) -{ - if (!(gUnknown_020243FC & 1)) - { - sprite->pos2.x += sprite->data0; - if (sprite->pos2.x == 0) - { - if (sprite->pos2.y != 0) - sprite->callback = sub_805D7EC; - else - sprite->callback = SpriteCallbackDummy; - } - } -} - -void sub_805D7EC(struct Sprite *sprite) -{ - sprite->pos2.y -= 2; - if (sprite->pos2.y == 0) - sprite->callback = SpriteCallbackDummy; -} diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 968f6d49f..cb2ca0a4c 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -449,7 +449,7 @@ static void sub_8064C58(void) { FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); - sub_805EEE0(gActiveBank); + EnemyShadowCallbackToSetInvisible(gActiveBank); SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]); LinkOpponentBufferExecCompleted(); } @@ -485,7 +485,7 @@ static void sub_8064D60(void) if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy) { if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); gBattleBankFunc[gActiveBank] = sub_8064DD0; } @@ -1164,7 +1164,7 @@ static void LinkOpponentHandleLoadMonSprite(void) gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(gActiveBank, 2), - sub_80A6138(gActiveBank), + GetBankSpriteDefault_Y(gActiveBank), sub_80A82E4(gActiveBank)); gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240; @@ -1198,7 +1198,7 @@ static void sub_8066494(u8 bank, bool8 dontClearSubstituteBit) gBankSpriteIds[bank] = CreateSprite( &gUnknown_0202499C, sub_80A5C6C(bank, 2), - sub_80A6138(bank), + GetBankSpriteDefault_Y(bank), sub_80A82E4(bank)); gSprites[gUnknown_03005D7C[bank]].data1 = gBankSpriteIds[bank]; @@ -1227,7 +1227,7 @@ static void LinkOpponentHandleReturnMonToBall(void) { FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); - sub_805EEE0(gActiveBank); + EnemyShadowCallbackToSetInvisible(gActiveBank); SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]); LinkOpponentBufferExecCompleted(); } @@ -1239,7 +1239,7 @@ static void DoSwitchOutAnimation(void) { case 0: if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1; break; @@ -1247,7 +1247,7 @@ static void DoSwitchOutAnimation(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_OPPONENT_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_OPPONENT_MON); gBattleBankFunc[gActiveBank] = sub_8064C58; } break; @@ -1382,7 +1382,7 @@ static void LinkOpponentHandleFaintAnimation(void) if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState == 0) { if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState++; } else @@ -1455,7 +1455,7 @@ static void LinkOpponentDoMoveAnimation(void) && !gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8) { gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 1; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1; break; @@ -1474,7 +1474,7 @@ static void LinkOpponentDoMoveAnimation(void) sub_805EB9C(1); if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute && multihit < 2) { - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 0; } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3; @@ -1483,7 +1483,7 @@ static void LinkOpponentDoMoveAnimation(void) case 3: if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { - sub_805E394(); + CopyAllBattleSpritesInvisibilities(); TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; LinkOpponentBufferExecCompleted(); @@ -1586,7 +1586,7 @@ static void LinkOpponentHandleStatusAnimation(void) { if (!mplay_80342A4(gActiveBank)) { - DoStatusAnimation(gBattleBufferA[gActiveBank][1], + InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24)); gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation; } @@ -1698,7 +1698,7 @@ static void LinkOpponentHandlePlayFanfareOrBGM(void) { if (gBattleBufferA[gActiveBank][3]) { - BattleMusicStop(); + BattleStopLowHpSound(); PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); } else @@ -1850,7 +1850,7 @@ static void LinkOpponentHandleBattleAnimation(void) u8 animationId = gBattleBufferA[gActiveBank][1]; u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - if (DoBattleAnimationFromTable(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) + if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) LinkOpponentBufferExecCompleted(); else gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation; diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index 4a70a4dc1..79776c15d 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -312,7 +312,7 @@ static void CompleteOnHealthbarDone(void) } else { - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); LinkPartnerBufferExecCompleted(); } } @@ -373,7 +373,7 @@ static void sub_814B4E0(void) { CopyBattleSpriteInvisibility(gActiveBank); if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); gBattleBankFunc[gActiveBank] = sub_814B554; } @@ -399,7 +399,7 @@ static void sub_814B5A8(void) FreeSpritePaletteByTag(0x27F9); CreateTask(c3_0802FDF4, 10); - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0); UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL); sub_8076918(gActiveBank); @@ -1026,7 +1026,7 @@ static void SetLinkPartnerMonData(u8 monId) break; } - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); } static void LinkPartnerHandleSetRawMonData(void) @@ -1050,7 +1050,7 @@ static void LinkPartnerHandleLoadMonSprite(void) gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(gActiveBank, 2), - sub_80A6138(gActiveBank), + GetBankSpriteDefault_Y(gActiveBank), sub_80A82E4(gActiveBank)); gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240; gSprites[gBankSpriteIds[gActiveBank]].data0 = gActiveBank; @@ -1081,7 +1081,7 @@ static void sub_814CC98(u8 bank, bool8 dontClearSubstituteBit) gBankSpriteIds[bank] = CreateSprite( &gUnknown_0202499C, sub_80A5C6C(bank, 2), - sub_80A6138(bank), + GetBankSpriteDefault_Y(bank), sub_80A82E4(bank)); gSprites[gUnknown_03005D7C[bank]].data1 = gBankSpriteIds[bank]; @@ -1121,7 +1121,7 @@ static void DoSwitchOutAnimation(void) { case 0: if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1; break; @@ -1129,7 +1129,7 @@ static void DoSwitchOutAnimation(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_PLAYER_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_PLAYER_MON); gBattleBankFunc[gActiveBank] = sub_814B3DC; } break; @@ -1201,7 +1201,7 @@ static void LinkPartnerHandleFaintAnimation(void) if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState == 0) { if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState++; } else @@ -1209,7 +1209,7 @@ static void LinkPartnerHandleFaintAnimation(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_PLAYER); gSprites[gBankSpriteIds[gActiveBank]].data1 = 0; gSprites[gBankSpriteIds[gActiveBank]].data2 = 5; @@ -1277,7 +1277,7 @@ static void LinkPartnerDoMoveAnimation(void) && !gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8) { gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 1; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1; break; @@ -1296,7 +1296,7 @@ static void LinkPartnerDoMoveAnimation(void) sub_805EB9C(1); if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute && multihit < 2) { - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 0; } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3; @@ -1305,7 +1305,7 @@ static void LinkPartnerDoMoveAnimation(void) case 3: if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { - sub_805E394(); + CopyAllBattleSpritesInvisibilities(); TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; LinkPartnerBufferExecCompleted(); @@ -1408,7 +1408,7 @@ static void LinkPartnerHandleStatusAnimation(void) { if (!mplay_80342A4(gActiveBank)) { - DoStatusAnimation(gBattleBufferA[gActiveBank][1], + InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24)); gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation; } @@ -1520,7 +1520,7 @@ static void LinkPartnerHandlePlayFanfareOrBGM(void) { if (gBattleBufferA[gActiveBank][3]) { - BattleMusicStop(); + BattleStopLowHpSound(); PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); } else @@ -1683,7 +1683,7 @@ static void LinkPartnerHandleBattleAnimation(void) u8 animationId = gBattleBufferA[gActiveBank][1]; u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - if (DoBattleAnimationFromTable(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) + if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) LinkPartnerBufferExecCompleted(); else gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation; diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 7ffd9d64b..831f434b0 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -437,7 +437,7 @@ static void sub_805FB08(void) { FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); - sub_805EEE0(gActiveBank); + EnemyShadowCallbackToSetInvisible(gActiveBank); SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]); OpponentBufferExecCompleted(); } @@ -473,7 +473,7 @@ static void sub_805FC10(void) if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy) { if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); gBattleBankFunc[gActiveBank] = sub_805FC80; } } @@ -1152,7 +1152,7 @@ static void OpponentHandleLoadMonSprite(void) gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(gActiveBank, 2), - sub_80A6138(gActiveBank), + GetBankSpriteDefault_Y(gActiveBank), sub_80A82E4(gActiveBank)); gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240; @@ -1187,7 +1187,7 @@ static void sub_80613DC(u8 bank, bool8 dontClearSubstituteBit) gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(bank, 2), - sub_80A6138(bank), + GetBankSpriteDefault_Y(bank), sub_80A82E4(bank)); gSprites[gBankSpriteIds[bank]].data0 = bank; @@ -1217,7 +1217,7 @@ static void OpponentHandleReturnMonToBall(void) { FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); - sub_805EEE0(gActiveBank); + EnemyShadowCallbackToSetInvisible(gActiveBank); SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]); OpponentBufferExecCompleted(); } @@ -1229,7 +1229,7 @@ static void DoSwitchOutAnimation(void) { case 0: if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1; break; @@ -1237,7 +1237,7 @@ static void DoSwitchOutAnimation(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_OPPONENT_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_OPPONENT_MON); gBattleBankFunc[gActiveBank] = sub_805FB08; } break; @@ -1415,7 +1415,7 @@ static void OpponentHandleFaintAnimation(void) if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState == 0) { if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState++; } else @@ -1487,7 +1487,7 @@ static void OpponentDoMoveAnimation(void) && !gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8) { gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 1; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1; break; @@ -1506,7 +1506,7 @@ static void OpponentDoMoveAnimation(void) sub_805EB9C(1); if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute && multihit < 2) { - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 0; } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3; @@ -1515,7 +1515,7 @@ static void OpponentDoMoveAnimation(void) case 3: if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { - sub_805E394(); + CopyAllBattleSpritesInvisibilities(); TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; OpponentBufferExecCompleted(); @@ -1731,7 +1731,7 @@ static void OpponentHandleStatusAnimation(void) { if (!mplay_80342A4(gActiveBank)) { - DoStatusAnimation(gBattleBufferA[gActiveBank][1], + InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24)); gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation; } @@ -1843,7 +1843,7 @@ static void OpponentHandlePlayFanfareOrBGM(void) { if (gBattleBufferA[gActiveBank][3]) { - BattleMusicStop(); + BattleStopLowHpSound(); PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); } else @@ -2000,7 +2000,7 @@ static void OpponentHandleBattleAnimation(void) u8 animationId = gBattleBufferA[gActiveBank][1]; u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - if (DoBattleAnimationFromTable(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) + if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) OpponentBufferExecCompleted(); else gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation; diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 10d361cb9..91d3d55eb 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1008,10 +1008,10 @@ static void sub_805896C(void) FreeSpriteTilesByTag(0x27F9); FreeSpritePaletteByTag(0x27F9); - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); if (IsDoubleBattle()) - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]], gActiveBank ^ BIT_MON); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]], gActiveBank ^ BIT_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 3; gBattleBankFunc[gActiveBank] = sub_8058924; @@ -1107,7 +1107,7 @@ static void sub_8058EDC(void) FreeSpritePaletteByTag(0x27F9); if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); gBattleBankFunc[gActiveBank] = sub_8058FC0; } @@ -1119,7 +1119,7 @@ static void sub_8058FC0(void) && !IsCryPlayingOrClearCrySongs()) { m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); PlayerBufferExecCompleted(); } } @@ -1164,7 +1164,7 @@ static void CompleteOnHealthbarDone(void) } else { - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); PlayerBufferExecCompleted(); } } @@ -1305,7 +1305,7 @@ static void sub_8059544(u8 taskId) if (IsDoubleBattle() == TRUE && monIndex == gBattlePartyID[bank ^ BIT_MON]) bank ^= BIT_MON; - DoSpecialBattleAnimation(bank, bank, bank, B_ANIM_LVL_UP); + InitAndLaunchSpecialAnimation(bank, bank, bank, B_ANIM_LVL_UP); gTasks[taskId].func = sub_80595A4; } @@ -2193,7 +2193,7 @@ static void SetPlayerMonData(u8 monId) break; } - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); } static void PlayerHandleSetRawMonData(void) @@ -2238,7 +2238,7 @@ static void sub_805B258(u8 bank, bool8 dontClearSubstituteBit) gBankSpriteIds[bank] = CreateSprite( &gUnknown_0202499C, sub_80A5C6C(bank, 2), - sub_80A6138(bank), + GetBankSpriteDefault_Y(bank), sub_80A82E4(bank)); gSprites[gUnknown_03005D7C[bank]].data1 = gBankSpriteIds[bank]; @@ -2278,7 +2278,7 @@ static void DoSwitchOutAnimation(void) { case 0: if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1; break; @@ -2286,7 +2286,7 @@ static void DoSwitchOutAnimation(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_PLAYER_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_PLAYER_MON); gBattleBankFunc[gActiveBank] = sub_8059744; } break; @@ -2434,7 +2434,7 @@ static void PlayerHandleFaintAnimation(void) if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState == 0) { if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState++; } else @@ -2442,7 +2442,7 @@ static void PlayerHandleFaintAnimation(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_PLAYER); gSprites[gBankSpriteIds[gActiveBank]].data1 = 0; gSprites[gBankSpriteIds[gActiveBank]].data2 = 5; @@ -2462,7 +2462,7 @@ static void PlayerHandleSuccessBallThrowAnim(void) { gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS; gDoingBattleAnim = TRUE; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_BALL_THROW); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_BALL_THROW); gBattleBankFunc[gActiveBank] = CompleteOnSpecialAnimDone; } @@ -2472,7 +2472,7 @@ static void PlayerHandleBallThrowAnim(void) gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId; gDoingBattleAnim = TRUE; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_BALL_THROW); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_BALL_THROW); gBattleBankFunc[gActiveBank] = CompleteOnSpecialAnimDone; } @@ -2525,7 +2525,7 @@ static void PlayerDoMoveAnimation(void) && !gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8) { gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 1; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1; break; @@ -2544,7 +2544,7 @@ static void PlayerDoMoveAnimation(void) sub_805EB9C(1); if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute && multihit < 2) { - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 0; } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3; @@ -2553,7 +2553,7 @@ static void PlayerDoMoveAnimation(void) case 3: if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { - sub_805E394(); + CopyAllBattleSpritesInvisibilities(); TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; PlayerBufferExecCompleted(); @@ -2709,7 +2709,7 @@ static void PlayerHandleChoosePokemon(void) static void PlayerHandleCmd23(void) { - BattleMusicStop(); + BattleStopLowHpSound(); BeginNormalPaletteFade(-1, 2, 0, 16, 0); PlayerBufferExecCompleted(); } @@ -2788,7 +2788,7 @@ static void PlayerHandleStatusAnimation(void) { if (!mplay_80342A4(gActiveBank)) { - DoStatusAnimation(gBattleBufferA[gActiveBank][1], + InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24)); gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation; } @@ -2930,7 +2930,7 @@ static void PlayerHandlePlayFanfareOrBGM(void) { if (gBattleBufferA[gActiveBank][3]) { - BattleMusicStop(); + BattleStopLowHpSound(); PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); } else @@ -3088,7 +3088,7 @@ static void PlayerHandleBattleAnimation(void) u8 animationId = gBattleBufferA[gActiveBank][1]; u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - if (DoBattleAnimationFromTable(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) + if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) PlayerBufferExecCompleted(); else gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation; diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 34fd8a3eb..6ace9121c 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -327,7 +327,7 @@ static void CompleteOnHealthbarDone(void) } else { - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); PlayerPartnerBufferExecCompleted(); } } @@ -469,7 +469,7 @@ static void sub_81BB628(u8 taskId) if (IsDoubleBattle() == TRUE && monIndex == gBattlePartyID[bank ^ BIT_MON]) bank ^= BIT_MON; - DoSpecialBattleAnimation(bank, bank, bank, B_ANIM_LVL_UP); + InitAndLaunchSpecialAnimation(bank, bank, bank, B_ANIM_LVL_UP); gTasks[taskId].func = sub_81BB688; } @@ -560,7 +560,7 @@ static void sub_81BB92C(void) { CopyBattleSpriteInvisibility(gActiveBank); if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); gBattleBankFunc[gActiveBank] = sub_81BB9A0; } @@ -586,7 +586,7 @@ static void sub_81BB9F4(void) FreeSpritePaletteByTag(0x27F9); CreateTask(c3_0802FDF4, 10); - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0); UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL); sub_8076918(gActiveBank); @@ -1213,7 +1213,7 @@ static void SetPlayerPartnerMonData(u8 monId) break; } - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); } static void PlayerPartnerHandleSetRawMonData(void) @@ -1237,7 +1237,7 @@ static void PlayerPartnerHandleLoadMonSprite(void) gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(gActiveBank, 2), - sub_80A6138(gActiveBank), + GetBankSpriteDefault_Y(gActiveBank), sub_80A82E4(gActiveBank)); gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240; gSprites[gBankSpriteIds[gActiveBank]].data0 = gActiveBank; @@ -1268,7 +1268,7 @@ static void sub_81BD0E4(u8 bank, bool8 dontClearSubstituteBit) gBankSpriteIds[bank] = CreateSprite( &gUnknown_0202499C, sub_80A5C6C(bank, 2), - sub_80A6138(bank), + GetBankSpriteDefault_Y(bank), sub_80A82E4(bank)); gSprites[gUnknown_03005D7C[bank]].data1 = gBankSpriteIds[bank]; @@ -1308,7 +1308,7 @@ static void DoSwitchOutAnimation(void) { case 0: if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1; break; @@ -1316,7 +1316,7 @@ static void DoSwitchOutAnimation(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_PLAYER_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_PLAYER_MON); gBattleBankFunc[gActiveBank] = sub_81BB828; } break; @@ -1395,7 +1395,7 @@ static void PlayerPartnerHandleFaintAnimation(void) if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState == 0) { if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState++; } else @@ -1403,7 +1403,7 @@ static void PlayerPartnerHandleFaintAnimation(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_PLAYER); gSprites[gBankSpriteIds[gActiveBank]].data1 = 0; gSprites[gBankSpriteIds[gActiveBank]].data2 = 5; @@ -1470,7 +1470,7 @@ static void PlayerPartnerDoMoveAnimation(void) && !gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8) { gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 1; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1; break; @@ -1489,7 +1489,7 @@ static void PlayerPartnerDoMoveAnimation(void) sub_805EB9C(1); if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute && multihit < 2) { - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 0; } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3; @@ -1498,7 +1498,7 @@ static void PlayerPartnerDoMoveAnimation(void) case 3: if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { - sub_805E394(); + CopyAllBattleSpritesInvisibilities(); TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; PlayerPartnerBufferExecCompleted(); @@ -1661,7 +1661,7 @@ static void PlayerPartnerHandleStatusAnimation(void) { if (!mplay_80342A4(gActiveBank)) { - DoStatusAnimation(gBattleBufferA[gActiveBank][1], + InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24)); gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation; } @@ -1773,7 +1773,7 @@ static void PlayerPartnerHandlePlayFanfareOrBGM(void) { if (gBattleBufferA[gActiveBank][3]) { - BattleMusicStop(); + BattleStopLowHpSound(); PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); } else @@ -1929,7 +1929,7 @@ static void PlayerPartnerHandleBattleAnimation(void) u8 animationId = gBattleBufferA[gActiveBank][1]; u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - if (DoBattleAnimationFromTable(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) + if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) PlayerPartnerBufferExecCompleted(); else gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation; diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index 0dc7631ce..914ad9c43 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -433,7 +433,7 @@ static void sub_8186D9C(void) { FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); - sub_805EEE0(gActiveBank); + EnemyShadowCallbackToSetInvisible(gActiveBank); SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]); RecordedOpponentBufferExecCompleted(); } @@ -469,7 +469,7 @@ static void sub_8186EA4(void) if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy) { if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); gBattleBankFunc[gActiveBank] = sub_8186F14; } @@ -1149,7 +1149,7 @@ static void RecordedOpponentHandleLoadMonSprite(void) gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(gActiveBank, 2), - sub_80A6138(gActiveBank), + GetBankSpriteDefault_Y(gActiveBank), sub_80A82E4(gActiveBank)); @@ -1184,7 +1184,7 @@ static void sub_81885D8(u8 bank, bool8 dontClearSubstituteBit) gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(bank, 2), - sub_80A6138(bank), + GetBankSpriteDefault_Y(bank), sub_80A82E4(bank)); gSprites[gUnknown_03005D7C[bank]].data1 = gBankSpriteIds[bank]; @@ -1213,7 +1213,7 @@ static void RecordedOpponentHandleReturnMonToBall(void) { FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]); DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]); - sub_805EEE0(gActiveBank); + EnemyShadowCallbackToSetInvisible(gActiveBank); SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]); RecordedOpponentBufferExecCompleted(); } @@ -1225,7 +1225,7 @@ static void DoSwitchOutAnimation(void) { case 0: if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1; break; @@ -1233,7 +1233,7 @@ static void DoSwitchOutAnimation(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_OPPONENT_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_OPPONENT_MON); gBattleBankFunc[gActiveBank] = sub_8186D9C; } break; @@ -1314,7 +1314,7 @@ static void RecordedOpponentHandleFaintAnimation(void) if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState == 0) { if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState++; } else @@ -1386,7 +1386,7 @@ static void RecordedOpponentDoMoveAnimation(void) && !gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8) { gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 1; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1; break; @@ -1405,7 +1405,7 @@ static void RecordedOpponentDoMoveAnimation(void) sub_805EB9C(1); if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute && multihit < 2) { - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 0; } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3; @@ -1414,7 +1414,7 @@ static void RecordedOpponentDoMoveAnimation(void) case 3: if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { - sub_805E394(); + CopyAllBattleSpritesInvisibilities(); TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; RecordedOpponentBufferExecCompleted(); @@ -1530,7 +1530,7 @@ static void RecordedOpponentHandleStatusAnimation(void) { if (!mplay_80342A4(gActiveBank)) { - DoStatusAnimation(gBattleBufferA[gActiveBank][1], + InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24)); gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation; } @@ -1642,7 +1642,7 @@ static void RecordedOpponentHandlePlayFanfareOrBGM(void) { if (gBattleBufferA[gActiveBank][3]) { - BattleMusicStop(); + BattleStopLowHpSound(); PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); } else @@ -1794,7 +1794,7 @@ static void RecordedOpponentHandleBattleAnimation(void) u8 animationId = gBattleBufferA[gActiveBank][1]; u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - if (DoBattleAnimationFromTable(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) + if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) RecordedOpponentBufferExecCompleted(); else gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation; diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index a3343a391..8db7b5626 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -272,9 +272,9 @@ static void sub_8189AA0(void) FreeSpriteTilesByTag(0x27F9); FreeSpritePaletteByTag(0x27F9); - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); if (IsDoubleBattle()) - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]], gActiveBank ^ BIT_MON); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]], gActiveBank ^ BIT_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 3; gBattleBankFunc[gActiveBank] = sub_8189A58; @@ -397,7 +397,7 @@ static void CompleteOnHealthbarDone(void) } else { - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); RecordedPlayerBufferExecCompleted(); } } @@ -458,7 +458,7 @@ static void sub_818A2B4(void) { CopyBattleSpriteInvisibility(gActiveBank); if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); gBattleBankFunc[gActiveBank] = sub_818A328; } @@ -484,7 +484,7 @@ static void sub_818A37C(void) FreeSpritePaletteByTag(0x27F9); CreateTask(c3_0802FDF4, 10); - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0); UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL); sub_8076918(gActiveBank); @@ -1111,7 +1111,7 @@ static void SetRecordedPlayerMonData(u8 monId) break; } - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); } static void RecordedPlayerHandleSetRawMonData(void) @@ -1135,7 +1135,7 @@ static void RecordedPlayerHandleLoadMonSprite(void) gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(gActiveBank, 2), - sub_80A6138(gActiveBank), + GetBankSpriteDefault_Y(gActiveBank), sub_80A82E4(gActiveBank)); gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240; gSprites[gBankSpriteIds[gActiveBank]].data0 = gActiveBank; @@ -1166,7 +1166,7 @@ static void sub_818BA6C(u8 bank, bool8 dontClearSubstituteBit) gBankSpriteIds[bank] = CreateSprite( &gUnknown_0202499C, sub_80A5C6C(bank, 2), - sub_80A6138(bank), + GetBankSpriteDefault_Y(bank), sub_80A82E4(bank)); gSprites[gUnknown_03005D7C[bank]].data1 = gBankSpriteIds[bank]; @@ -1206,7 +1206,7 @@ static void DoSwitchOutAnimation(void) { case 0: if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1; break; @@ -1214,7 +1214,7 @@ static void DoSwitchOutAnimation(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_PLAYER_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_PLAYER_MON); gBattleBankFunc[gActiveBank] = sub_818A1B0; } break; @@ -1313,7 +1313,7 @@ static void RecordedPlayerHandleFaintAnimation(void) if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState == 0) { if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState++; } else @@ -1321,7 +1321,7 @@ static void RecordedPlayerHandleFaintAnimation(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); PlaySE12WithPanning(SE_POKE_DEAD, -64); gSprites[gBankSpriteIds[gActiveBank]].data1 = 0; gSprites[gBankSpriteIds[gActiveBank]].data2 = 5; @@ -1388,7 +1388,7 @@ static void RecordedPlayerDoMoveAnimation(void) && !gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8) { gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 1; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1; break; @@ -1407,7 +1407,7 @@ static void RecordedPlayerDoMoveAnimation(void) sub_805EB9C(1); if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute && multihit < 2) { - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 0; } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3; @@ -1416,7 +1416,7 @@ static void RecordedPlayerDoMoveAnimation(void) case 3: if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { - sub_805E394(); + CopyAllBattleSpritesInvisibilities(); TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; RecordedPlayerBufferExecCompleted(); @@ -1549,7 +1549,7 @@ static void RecordedPlayerHandleStatusAnimation(void) { if (!mplay_80342A4(gActiveBank)) { - DoStatusAnimation(gBattleBufferA[gActiveBank][1], + InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24)); gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation; } @@ -1661,7 +1661,7 @@ static void RecordedPlayerHandlePlayFanfareOrBGM(void) { if (gBattleBufferA[gActiveBank][3]) { - BattleMusicStop(); + BattleStopLowHpSound(); PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); } else @@ -1813,7 +1813,7 @@ static void RecordedPlayerHandleBattleAnimation(void) u8 animationId = gBattleBufferA[gActiveBank][1]; u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - if (DoBattleAnimationFromTable(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) + if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) RecordedPlayerBufferExecCompleted(); else gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation; diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 0c5b698cf..468a92610 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -413,7 +413,7 @@ static void SafariHandleSuccessBallThrowAnim(void) { gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS; gDoingBattleAnim = TRUE; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_SAFARI_BALL_THROW); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_SAFARI_BALL_THROW); gBattleBankFunc[gActiveBank] = CompleteOnSpecialAnimDone; } @@ -423,7 +423,7 @@ static void SafariHandleBallThrowAnim(void) gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId; gDoingBattleAnim = TRUE; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_SAFARI_BALL_THROW); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_SAFARI_BALL_THROW); gBattleBankFunc[gActiveBank] = CompleteOnSpecialAnimDone; } @@ -624,7 +624,7 @@ static void SafariHandlePlayFanfareOrBGM(void) { if (gBattleBufferA[gActiveBank][3]) { - BattleMusicStop(); + BattleStopLowHpSound(); PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); } else @@ -683,7 +683,7 @@ static void SafariHandleBattleAnimation(void) u8 animationId = gBattleBufferA[gActiveBank][1]; u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - if (DoBattleAnimationFromTable(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) + if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) SafariBufferExecCompleted(); else gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation; diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index c2addd30c..ec052555a 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -369,7 +369,7 @@ static void sub_8168818(void) FreeSpritePaletteByTag(0x27F9); CreateTask(c3_0802FDF4, 10); - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); WallyBufferExecCompleted(); } @@ -387,7 +387,7 @@ static void CompleteOnHealthbarDone(void) } else { - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); WallyBufferExecCompleted(); } } @@ -1029,7 +1029,7 @@ static void SetWallyMonData(u8 monId) break; } - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); } static void WallyHandleSetRawMonData(void) @@ -1051,7 +1051,7 @@ static void WallyHandleReturnMonToBall(void) { if (gBattleBufferA[gActiveBank][1] == 0) { - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_PLAYER_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_PLAYER_MON); gBattleBankFunc[gActiveBank] = sub_8168A20; } else @@ -1112,7 +1112,7 @@ static void WallyHandleSuccessBallThrowAnim(void) { gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS; gDoingBattleAnim = TRUE; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_SAFARI_BALL_THROW); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_SAFARI_BALL_THROW); gBattleBankFunc[gActiveBank] = CompleteOnFinishedAnimation; } @@ -1122,7 +1122,7 @@ static void WallyHandleBallThrowAnim(void) gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId; gDoingBattleAnim = TRUE; - DoSpecialBattleAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_SAFARI_BALL_THROW); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_SAFARI_BALL_THROW); gBattleBankFunc[gActiveBank] = CompleteOnFinishedAnimation; } @@ -1163,7 +1163,7 @@ static void WallyDoMoveAnimation(void) case 0: if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) { - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON); } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1; break; @@ -1182,7 +1182,7 @@ static void WallyDoMoveAnimation(void) sub_805EB9C(1); if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute) { - DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); + InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE); } gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3; } @@ -1190,7 +1190,7 @@ static void WallyDoMoveAnimation(void) case 3: if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive) { - sub_805E394(); + CopyAllBattleSpritesInvisibilities(); TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0; WallyBufferExecCompleted(); @@ -1429,7 +1429,7 @@ static void WallyHandlePlayFanfareOrBGM(void) { if (gBattleBufferA[gActiveBank][3]) { - BattleMusicStop(); + BattleStopLowHpSound(); PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); } else @@ -1496,7 +1496,7 @@ static void sub_816AA80(u8 bank) sub_806A068(species, GetBankIdentity(bank)); gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(bank, 2), - sub_80A6138(bank), + GetBankSpriteDefault_Y(bank), sub_80A82E4(bank)); gSprites[gUnknown_03005D7C[bank]].data1 = gBankSpriteIds[bank]; @@ -1565,7 +1565,7 @@ static void WallyHandleBattleAnimation(void) u8 animationId = gBattleBufferA[gActiveBank][1]; u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - if (DoBattleAnimationFromTable(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) + if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument)) WallyBufferExecCompleted(); else gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation; diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c index e6c67b20e..9385417b4 100644 --- a/src/battle_dome_cards.c +++ b/src/battle_dome_cards.c @@ -119,7 +119,7 @@ static void sub_818D0C4(u16 species, u32 otId, u32 personality, u8 paletteSlot, if (paletteTag == 0xFFFF) { gUnknown_0203CCEC.paletteTag |= 0xFFFF; - LoadCompressedPalette(species_and_otid_get_pal(species, otId, personality), 0x100 + paletteSlot * 0x10, 0x20); + LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x100 + paletteSlot * 0x10, 0x20); } else { @@ -146,7 +146,7 @@ static void sub_818D180(u16 species, u32 otId, u32 personality, u8 paletteSlot, { if (!isTrainer) { - LoadCompressedPalette(species_and_otid_get_pal(species, otId, personality), paletteSlot * 0x10, 0x20); + LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), paletteSlot * 0x10, 0x20); } else { diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c new file mode 100644 index 000000000..99a82f3ca --- /dev/null +++ b/src/battle_gfx_sfx_util.c @@ -0,0 +1,1299 @@ +#include "global.h" +#include "battle.h" +#include "battle_controllers.h" +#include "battle_ai_script_commands.h" +#include "battle_anim.h" +#include "battle_interface.h" +#include "main.h" +#include "malloc.h" +#include "rng.h" +#include "util.h" +#include "pokemon.h" +#include "moves.h" +#include "task.h" +#include "sprite.h" +#include "sound.h" +#include "m4a.h" +#include "species.h" +#include "decompress.h" +#include "data2.h" +#include "palette.h" +#include "blend_palette.h" +#include "contest.h" +#include "songs.h" + +extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; +extern u8 gActiveBank; +extern u8 gNoOfAllBanks; +extern u16 gUnknown_020243FC; +extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; +extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; +extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT]; +extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT]; +extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; +extern u8 gBattleMonForms[BATTLE_BANKS_COUNT]; +extern u32 gTransformedPersonalities[BATTLE_BANKS_COUNT]; +extern struct MusicPlayerInfo gMPlay_SE1; +extern struct MusicPlayerInfo gMPlay_SE2; +extern struct MusicPlayerInfo gMPlay_BGM; + +extern const struct BattleMove gBattleMoves[]; +extern const u8 gUnknown_0831C604[]; +extern const u8 * const gUnknown_082C9320[]; +extern const u8 * const gUnknown_082C937C[]; +extern const struct CompressedSpriteSheet gMonFrontPicTable[]; +extern const struct CompressedSpriteSheet gMonBackPicTable[]; +extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; +extern const struct CompressedSpriteSheet gTrainerBackPicTable[]; +extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; +extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; +extern const union AnimCmd* const * const gMonAnimationsSpriteAnimsPtrTable[]; +extern const struct SpriteTemplate gUnknown_08329D98[4]; +extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow; +extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow; +extern const u8 gEnemyMonElevation[]; + +// graphics +extern const u32 gUnknown_08C093F0[]; +extern const u32 gSubstituteDollTilemap[]; +extern const u32 gSubstituteDollGfx[]; +extern const u16 gSubstituteDollPal[]; +extern const u8 gUnknown_08C1F1C8[]; +extern const u8 gUnknown_08C1F46C[]; +extern const u8 gUnknown_08C1F5E8[]; +extern const u8 gUnknown_08C1F76C[]; +extern const u8 gUnknown_08C1F8E8[]; +extern const u8 gUnknown_08C0237C[]; +extern const u16 gBattleInterface_BallStatusBarPal[]; +extern const u16 gBattleInterface_BallDisplayPal[]; + +extern u8 sub_80688F8(u8, u8 bank); +extern u8 pokemon_order_func(u8); // party menu +extern void sub_81B8C68(void); + +// this file's functions +static u8 sub_805D4A8(u16 move); +static u16 BattlePalaceGetTargetRetValue(void); +static void sub_805D7EC(struct Sprite *sprite); +static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId); +static void Task_ClearBitWhenBattleTableAnimDone(u8 taskId); +static void Task_ClearBitWhenSpecialAnimDone(u8 taskId); +static void ClearSpritesBankHealthboxAnimData(void); + +// const rom data +static const struct CompressedSpriteSheet gUnknown_0832C0D0 = +{ + gUnknown_08C1F1C8, 0x1000, TAG_HEALTHBOX_PLAYER1_TILE +}; + +static const struct CompressedSpriteSheet gUnknown_0832C0D8 = +{ + gUnknown_08C1F46C, 0x1000, TAG_HEALTHBOX_OPPONENT1_TILE +}; + +static const struct CompressedSpriteSheet gUnknown_0832C0E0[2] = +{ + {gUnknown_08C1F5E8, 0x800, TAG_HEALTHBOX_PLAYER1_TILE}, + {gUnknown_08C1F5E8, 0x800, TAG_HEALTHBOX_PLAYER2_TILE} +}; + +static const struct CompressedSpriteSheet gUnknown_0832C0F0[2] = +{ + {gUnknown_08C1F76C, 0x800, TAG_HEALTHBOX_OPPONENT1_TILE}, + {gUnknown_08C1F76C, 0x800, TAG_HEALTHBOX_OPPONENT2_TILE} +}; + +static const struct CompressedSpriteSheet gUnknown_0832C100 = +{ + gUnknown_08C1F8E8, 0x1000, TAG_HEALTHBOX_SAFARI_TILE +}; + +static const struct CompressedSpriteSheet gUnknown_0832C108[BATTLE_BANKS_COUNT] = +{ + {gUnknown_08C0237C, 0x0100, 0xd704}, + {gUnknown_08C0237C, 0x0120, 0xd705}, + {gUnknown_08C0237C, 0x0100, 0xd706}, + {gUnknown_08C0237C, 0x0120, 0xd707} +}; + +static const struct SpritePalette gUnknown_0832C128[2] = +{ + {gBattleInterface_BallStatusBarPal, TAG_HEALTHBOX_PAL}, + {gBattleInterface_BallDisplayPal, 0xd704} +}; + +// code +void AllocateBattleSpritesData(void) +{ + gBattleSpritesDataPtr = AllocZeroed(sizeof(struct BattleSpriteData)); + gBattleSpritesDataPtr->bankData = AllocZeroed(sizeof(struct BattleSpriteInfo) * BATTLE_BANKS_COUNT); + gBattleSpritesDataPtr->healthBoxesData = AllocZeroed(sizeof(struct BattleHealthboxInfo) * BATTLE_BANKS_COUNT); + gBattleSpritesDataPtr->animationData = AllocZeroed(sizeof(struct BattleAnimationInfo)); + gBattleSpritesDataPtr->battleBars = AllocZeroed(sizeof(struct BattleBarInfo) * BATTLE_BANKS_COUNT); +} + +void FreeBattleSpritesData(void) +{ + if (gBattleSpritesDataPtr == NULL) + return; + + FREE_AND_SET_NULL(gBattleSpritesDataPtr->battleBars); + FREE_AND_SET_NULL(gBattleSpritesDataPtr->animationData); + FREE_AND_SET_NULL(gBattleSpritesDataPtr->healthBoxesData); + FREE_AND_SET_NULL(gBattleSpritesDataPtr->bankData); + FREE_AND_SET_NULL(gBattleSpritesDataPtr); +} + +u16 ChooseMoveAndTargetInBattlePalace(void) +{ + s32 i, var1, var2; + s32 chosenMoveId = -1; + struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]); + u8 unusableMovesBits = CheckMoveLimitations(gActiveBank, 0, 0xFF); + s32 percent = Random() % 100; + + i = (gBattleStruct->field_92 & gBitTable[gActiveBank]) ? 2 : 0; + var2 = i; + var1 = i + 2; + + for (; i < var1; i++) + { + if (gUnknown_0831C494[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)][i] > percent) + break; + } + + percent = i - var2; + if (i == var1) + percent = 2; + + for (var2 = 0, i = 0; i < 4; i++) + { + if (moveInfo->moves[i] == MOVE_NONE) + break; + if (percent == sub_805D4A8(moveInfo->moves[i]) && moveInfo->currentPp[i] != 0) + var2 |= gBitTable[i]; + } + + if (var2 != 0) + { + gBattleStruct->field_92 &= 0xF; + gBattleStruct->field_92 |= (var2 << 4); + BattleAI_SetupAIData(var2); + chosenMoveId = BattleAI_ChooseMoveOrAction(); + } + + if (chosenMoveId == -1) + { + if (unusableMovesBits != 0xF) + { + var1 = 0, var2 = 0; + + for (i = 0; i < 4; i++) + { + if (sub_805D4A8(moveInfo->moves[i]) == 0 && !(gBitTable[i] & unusableMovesBits)) + var1 += 0x1; + if (sub_805D4A8(moveInfo->moves[i]) == 1 && !(gBitTable[i] & unusableMovesBits)) + var1 += 0x10; + if (sub_805D4A8(moveInfo->moves[i]) == 2 && !(gBitTable[i] & unusableMovesBits)) + var1 += 0x100; + } + + if ((var1 & 0xF) > 1) + var2++; + if ((var1 & 0xF0) > 0x1F) + var2++; + if ((var1 & 0xF0) > 0x1FF) + var2++; + + if (var2 > 1 || var2 == 0) + { + do + { + i = Random() % 4; + if (!(gBitTable[i] & unusableMovesBits)) + chosenMoveId = i; + } while (chosenMoveId == -1); + } + else + { + if ((var1 & 0xF) > 1) + var2 = 0; + if ((var1 & 0xF0) > 0x1F) + var2 = 1; + if ((var1 & 0xF0) > 0x1FF) + var2 = 2; + + do + { + i = Random() % 4; + if (!(gBitTable[i] & unusableMovesBits) && var2 == sub_805D4A8(moveInfo->moves[i])) + chosenMoveId = i; + } while (chosenMoveId == -1); + } + + if (Random() % 100 > 49) + { + gProtectStructs[gActiveBank].flag_x10 = 1; + return 0; + } + } + else + { + gProtectStructs[gActiveBank].flag_x10 = 1; + return 0; + } + } + + if (moveInfo->moves[chosenMoveId] == MOVE_CURSE) + { + if (moveInfo->monType1 != TYPE_GHOST && moveInfo->monType2 != TYPE_GHOST) + var1 = MOVE_TARGET_x10; + else + var1 = MOVE_TARGET_SELECTED; + } + else + { + var1 = gBattleMoves[moveInfo->moves[chosenMoveId]].target; + } + + if (var1 & MOVE_TARGET_x10) + chosenMoveId |= (gActiveBank << 8); + else if (var1 == MOVE_TARGET_SELECTED) + chosenMoveId |= (BattlePalaceGetTargetRetValue()); + else + chosenMoveId |= (GetBankByIdentity((GetBankIdentity(gActiveBank) & BIT_SIDE) ^ BIT_SIDE) << 8); + + return chosenMoveId; +} + +static u8 sub_805D4A8(u16 move) +{ + switch (gBattleMoves[move].target) + { + case MOVE_TARGET_SELECTED: + case MOVE_TARGET_USER: + case MOVE_TARGET_RANDOM: + case MOVE_TARGET_BOTH: + case MOVE_TARGET_FOES_AND_ALLY: + if (gBattleMoves[move].power == 0) + return 2; + else + return 0; + break; + case MOVE_TARGET_DEPENDS: + case MOVE_TARGET_OPPONENTS_FIELD: + return 2; + case MOVE_TARGET_x10: + return 1; + default: + return 0; + } +} + +static u16 BattlePalaceGetTargetRetValue(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + u8 opposing1, opposing2; + + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + { + opposing1 = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + opposing2 = GetBankByIdentity(IDENTITY_OPPONENT_MON2); + } + else + { + opposing1 = GetBankByIdentity(IDENTITY_PLAYER_MON1); + opposing2 = GetBankByIdentity(IDENTITY_PLAYER_MON2); + } + + if (gBattleMons[opposing1].hp == gBattleMons[opposing2].hp) + return (((gActiveBank & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8; + + switch (gUnknown_0831C604[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)]) + { + case 0: + if (gBattleMons[opposing1].hp > gBattleMons[opposing2].hp) + return opposing1 << 8; + else + return opposing2 << 8; + case 1: + if (gBattleMons[opposing1].hp < gBattleMons[opposing2].hp) + return opposing1 << 8; + else + return opposing2 << 8; + case 2: + return (((gActiveBank & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8; + } + } + + return (gActiveBank ^ BIT_SIDE) << 8; +} + +void sub_805D714(struct Sprite *sprite) +{ + u8 spriteId = sprite->data1; + + if (!gSprites[spriteId].affineAnimEnded) + return; + if (gSprites[spriteId].invisible) + return; + + if (gSprites[spriteId].animPaused) + { + gSprites[spriteId].animPaused = 0; + } + else + { + if (gSprites[spriteId].animEnded) + sprite->callback = SpriteCallbackDummy; + } +} + +void sub_805D770(struct Sprite *sprite, bool8 arg1) +{ + sprite->animPaused = 1; + sprite->callback = SpriteCallbackDummy; + + if (!arg1) + StartSpriteAffineAnim(sprite, 1); + else + StartSpriteAffineAnim(sprite, 1); + + AnimateSprite(sprite); +} + +void sub_805D7AC(struct Sprite *sprite) +{ + if (!(gUnknown_020243FC & 1)) + { + sprite->pos2.x += sprite->data0; + if (sprite->pos2.x == 0) + { + if (sprite->pos2.y != 0) + sprite->callback = sub_805D7EC; + else + sprite->callback = SpriteCallbackDummy; + } + } +} + +static void sub_805D7EC(struct Sprite *sprite) +{ + sprite->pos2.y -= 2; + if (sprite->pos2.y == 0) + sprite->callback = SpriteCallbackDummy; +} + +void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status) +{ + gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive = 1; + if (!isStatus2) + { + if (status == STATUS_FREEZE) + LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_FRZ); + else if (status == STATUS_POISON || status & STATUS_TOXIC_POISON) + LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_PSN); + else if (status == STATUS_BURN) + LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_BRN); + else if (status & STATUS_SLEEP) + LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_SLP); + else if (status == STATUS_PARALYSIS) + LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_PRZ); + else // no animation + gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive = 0; + } + else + { + if (status & STATUS2_INFATUATION) + LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_INFATUATION); + else if (status & STATUS2_CONFUSION) + LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_CONFUSION); + else if (status & STATUS2_CURSED) + LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_CURSED); + else if (status & STATUS2_NIGHTMARE) + LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_NIGHTMARE); + else if (status & STATUS2_WRAPPED) + LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_WRAPPED); + else // no animation + gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive = 0; + } +} + +#define tBank data[0] + +bool8 TryHandleLaunchBattleTableAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId, u16 argument) +{ + u8 taskId; + + if (tableId == B_ANIM_CASTFORM_CHANGE && (argument & 0x80)) + { + gBattleMonForms[activeBank] = (argument & ~(0x80)); + return TRUE; + } + if (gBattleSpritesDataPtr->bankData[activeBank].behindSubstitute + && !ShouldAnimBeDoneRegardlessOfSubsitute(tableId)) + { + return TRUE; + } + if (gBattleSpritesDataPtr->bankData[activeBank].behindSubstitute + && tableId == B_ANIM_SUBSTITUTE_FADE + && gSprites[gBankSpriteIds[activeBank]].invisible) + { + LoadBattleMonGfxAndAnimate(activeBank, TRUE, gBankSpriteIds[activeBank]); + ClearBehindSubstituteBit(activeBank); + return TRUE; + } + + gAnimBankAttacker = atkBank; + gAnimBankTarget = defBank; + gBattleSpritesDataPtr->animationData->animArg = argument; + LaunchBattleAnimation(gUnknown_082C9320, tableId, FALSE); + taskId = CreateTask(Task_ClearBitWhenBattleTableAnimDone, 10); + gTasks[taskId].tBank = activeBank; + gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].animFromTableActive = 1; + + return FALSE; +} + +static void Task_ClearBitWhenBattleTableAnimDone(u8 taskId) +{ + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].animFromTableActive = 0; + DestroyTask(taskId); + } +} + +#undef tBank + +static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId) +{ + switch (animId) + { + case B_ANIM_SUBSTITUTE_FADE: + case B_ANIM_RAIN_CONTINUES: + case B_ANIM_SUN_CONTINUES: + case B_ANIM_SANDSTORM_CONTINUES: + case B_ANIM_HAIL_CONTINUES: + case B_ANIM_SNATCH_MOVE: + return TRUE; + default: + return FALSE; + } +} + +#define tBank data[0] + +void InitAndLaunchSpecialAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId) +{ + u8 taskId; + + gAnimBankAttacker = atkBank; + gAnimBankTarget = defBank; + LaunchBattleAnimation(gUnknown_082C937C, tableId, FALSE); + taskId = CreateTask(Task_ClearBitWhenSpecialAnimDone, 10); + gTasks[taskId].tBank = activeBank; + gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].specialAnimActive = 1; +} + +static void Task_ClearBitWhenSpecialAnimDone(u8 taskId) +{ + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].specialAnimActive = 0; + DestroyTask(taskId); + } +} + +#undef tBank + +// great function to include newly added moves that don't have animation yet +bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn) +{ + return FALSE; +} + +bool8 mplay_80342A4(u8 bank) +{ + u8 zero = 0; + + if (IsSEPlaying()) + { + gBattleSpritesDataPtr->healthBoxesData[bank].field_8++; + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_8 < 30) + return TRUE; + + m4aMPlayStop(&gMPlay_SE1); + m4aMPlayStop(&gMPlay_SE2); + } + if (zero == 0) + { + gBattleSpritesDataPtr->healthBoxesData[bank].field_8 = 0; + return FALSE; + } + + return TRUE; +} + +void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank) +{ + u32 monsPersonality, currentPersonality, otId; + u16 species; + u8 identity; + u16 paletteOffset; + const void *lzPaletteData; + + monsPersonality = GetMonData(mon, MON_DATA_PERSONALITY); + + if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_NONE) + { + species = GetMonData(mon, MON_DATA_SPECIES); + currentPersonality = monsPersonality; + } + else + { + species = gBattleSpritesDataPtr->bankData[bank].transformSpecies; + currentPersonality = gTransformedPersonalities[bank]; + } + + otId = GetMonData(mon, MON_DATA_OT_ID); + identity = GetBankIdentity(bank); + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], + gMonSpritesGfxPtr->sprites[identity], + species, currentPersonality); + + paletteOffset = 0x100 + bank * 16; + + if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_NONE) + lzPaletteData = GetMonFrontSpritePal(mon); + else + lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality); + + LZDecompressWram(lzPaletteData, gDecompressionBuffer); + LoadPalette(gDecompressionBuffer, paletteOffset, 0x20); + LoadPalette(gDecompressionBuffer, 0x80 + bank * 16, 0x20); + + if (species == SPECIES_CASTFORM) + { + paletteOffset = 0x100 + bank * 16; + LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]); + LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[bank]], paletteOffset, 0x20); + } + + // transform's pink color + if (gBattleSpritesDataPtr->bankData[bank].transformSpecies != SPECIES_NONE) + { + BlendPalette(paletteOffset, 16, 6, 0x7FFF); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + } +} + +void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank) +{ + u32 monsPersonality, currentPersonality, otId; + u16 species; + u8 identity; + u16 paletteOffset; + const void *lzPaletteData; + + monsPersonality = GetMonData(mon, MON_DATA_PERSONALITY); + + if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_NONE) + { + species = GetMonData(mon, MON_DATA_SPECIES); + currentPersonality = monsPersonality; + } + else + { + species = gBattleSpritesDataPtr->bankData[bank].transformSpecies; + currentPersonality = gTransformedPersonalities[bank]; + } + + otId = GetMonData(mon, MON_DATA_OT_ID); + identity = GetBankIdentity(bank); + + if (sub_80688F8(1, bank) == 1 || gBattleSpritesDataPtr->bankData[bank].transformSpecies != SPECIES_NONE) + { + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], + gMonSpritesGfxPtr->sprites[identity], + species, currentPersonality); + } + else + { + HandleLoadSpecialPokePic(&gMonBackPicTable[species], + gMonSpritesGfxPtr->sprites[identity], + species, currentPersonality); + } + + paletteOffset = 0x100 + bank * 16; + + if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_NONE) + lzPaletteData = GetMonFrontSpritePal(mon); + else + lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality); + + LZDecompressWram(lzPaletteData, gDecompressionBuffer); + LoadPalette(gDecompressionBuffer, paletteOffset, 0x20); + LoadPalette(gDecompressionBuffer, 0x80 + bank * 16, 0x20); + + if (species == SPECIES_CASTFORM) + { + paletteOffset = 0x100 + bank * 16; + LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]); + LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[bank]], paletteOffset, 0x20); + } + + // transform's pink color + if (gBattleSpritesDataPtr->bankData[bank].transformSpecies != SPECIES_NONE) + { + BlendPalette(paletteOffset, 16, 6, 0x7FFF); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + } +} + +void nullsub_23(void) +{ +} + +void nullsub_24(u16 species) +{ +} + +void DecompressTrainerFrontPic(u16 frontPicId, u8 bank) +{ + u8 identity = GetBankIdentity(bank); + DecompressPicFromTable_2(&gTrainerFrontPicTable[frontPicId], + gMonSpritesGfxPtr->sprites[identity], + SPECIES_NONE); + LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[frontPicId]); +} + +void DecompressTrainerBackPic(u16 backPicId, u8 bank) +{ + u8 identity = GetBankIdentity(bank); + DecompressPicFromTable_2(&gTrainerBackPicTable[backPicId], + gMonSpritesGfxPtr->sprites[identity], + SPECIES_NONE); + LoadCompressedPalette(gTrainerBackPicPaletteTable[backPicId].data, + 0x100 + 16 * bank, 0x20); +} + +void nullsub_25(u8 arg0) +{ +} + +void FreeTrainerFrontPicPalette(u16 frontPicId) +{ + FreeSpritePaletteByTag(gTrainerFrontPicPaletteTable[frontPicId].tag); +} + +void sub_805DFFC(void) +{ + u8 numberOfBanks = 0; + u8 i; + + LoadSpritePalette(&gUnknown_0832C128[0]); + LoadSpritePalette(&gUnknown_0832C128[1]); + if (!IsDoubleBattle()) + { + LoadCompressedObjectPic(&gUnknown_0832C0D0); + LoadCompressedObjectPic(&gUnknown_0832C0D8); + numberOfBanks = 2; + } + else + { + LoadCompressedObjectPic(&gUnknown_0832C0E0[0]); + LoadCompressedObjectPic(&gUnknown_0832C0E0[1]); + LoadCompressedObjectPic(&gUnknown_0832C0F0[0]); + LoadCompressedObjectPic(&gUnknown_0832C0F0[1]); + numberOfBanks = 4; + } + for (i = 0; i < numberOfBanks; i++) + LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[i]]); +} + +bool8 BattleLoadAllHealthBoxesGfx(u8 state) +{ + bool8 retVal = FALSE; + + if (state != 0) + { + if (state == 1) + { + LoadSpritePalette(&gUnknown_0832C128[0]); + LoadSpritePalette(&gUnknown_0832C128[1]); + } + else if (!IsDoubleBattle()) + { + if (state == 2) + { + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + LoadCompressedObjectPic(&gUnknown_0832C100); + else + LoadCompressedObjectPic(&gUnknown_0832C0D0); + } + else if (state == 3) + LoadCompressedObjectPic(&gUnknown_0832C0D8); + else if (state == 4) + LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[0]]); + else if (state == 5) + LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[1]]); + else + retVal = TRUE; + } + else + { + if (state == 2) + LoadCompressedObjectPic(&gUnknown_0832C0E0[0]); + else if (state == 3) + LoadCompressedObjectPic(&gUnknown_0832C0E0[1]); + else if (state == 4) + LoadCompressedObjectPic(&gUnknown_0832C0F0[0]); + else if (state == 5) + LoadCompressedObjectPic(&gUnknown_0832C0F0[1]); + else if (state == 6) + LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[0]]); + else if (state == 7) + LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[1]]); + else if (state == 8) + LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[2]]); + else if (state == 9) + LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[3]]); + else + retVal = TRUE; + } + } + + return retVal; +} + +void LoadBattleBarGfx(u8 arg0) +{ + LZDecompressWram(gUnknown_08C093F0, gMonSpritesGfxPtr->barFontGfx); +} + +bool8 BattleInitAllSprites(u8 *state1, u8 *bank) +{ + bool8 retVal = FALSE; + + switch (*state1) + { + case 0: + ClearSpritesBankHealthboxAnimData(); + (*state1)++; + break; + case 1: + if (!BattleLoadAllHealthBoxesGfx(*bank)) + { + (*bank)++; + } + else + { + *bank = 0; + (*state1)++; + } + break; + case 2: + (*state1)++; + break; + case 3: + if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) && *bank == 0) + gHealthBoxesIds[*bank] = CreateSafariPlayerHealthboxSprites(); + else + gHealthBoxesIds[*bank] = CreateBankHealthboxSprites(*bank); + + (*bank)++; + if (*bank == gNoOfAllBanks) + { + *bank = 0; + (*state1)++; + } + break; + case 4: + SetBankHealthboxSpritePos(*bank); + if (gBanksByIdentity[*bank] <= 1) + DummyBattleInterfaceFunc(gHealthBoxesIds[*bank], FALSE); + else + DummyBattleInterfaceFunc(gHealthBoxesIds[*bank], TRUE); + + (*bank)++; + if (*bank == gNoOfAllBanks) + { + *bank = 0; + (*state1)++; + } + break; + case 5: + if (GetBankSide(*bank) == SIDE_PLAYER) + { + if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) + UpdateHealthboxAttribute(gHealthBoxesIds[*bank], &gPlayerParty[gBattlePartyID[*bank]], HEALTHBOX_ALL); + } + else + { + UpdateHealthboxAttribute(gHealthBoxesIds[*bank], &gEnemyParty[gBattlePartyID[*bank]], HEALTHBOX_ALL); + } + SetHealthboxSpriteInvisible(gHealthBoxesIds[*bank]); + (*bank)++; + if (*bank == gNoOfAllBanks) + { + *bank = 0; + (*state1)++; + } + break; + case 6: + LoadAndCreateEnemyShadowSprites(); + sub_81B8C68(); + retVal = TRUE; + break; + } + + return retVal; +} + +void ClearSpritesHealthboxAnimData(void) +{ + memset(gBattleSpritesDataPtr->healthBoxesData, 0, sizeof(struct BattleHealthboxInfo) * BATTLE_BANKS_COUNT); + memset(gBattleSpritesDataPtr->animationData, 0, sizeof(struct BattleAnimationInfo)); +} + +static void ClearSpritesBankHealthboxAnimData(void) +{ + ClearSpritesHealthboxAnimData(); + memset(gBattleSpritesDataPtr->bankData, 0, sizeof(struct BattleSpriteInfo) * BATTLE_BANKS_COUNT); +} + +void CopyAllBattleSpritesInvisibilities(void) +{ + s32 i; + + for (i = 0; i < gNoOfAllBanks; i++) + gBattleSpritesDataPtr->bankData[i].invisible = gSprites[gBankSpriteIds[i]].invisible; +} + +void CopyBattleSpriteInvisibility(u8 bank) +{ + gBattleSpritesDataPtr->bankData[bank].invisible = gSprites[gBankSpriteIds[bank]].invisible; +} + +void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform) +{ + u16 paletteOffset; + u32 personalityValue; + u32 otId; + u8 identity; + const u8 *lzPaletteData; + + if (notTransform) + { + StartSpriteAnim(&gSprites[gBankSpriteIds[bankAtk]], gBattleSpritesDataPtr->animationData->animArg); + paletteOffset = 0x100 + bankAtk * 16; + LoadPalette(gBattleStruct->castformPalette[gBattleSpritesDataPtr->animationData->animArg], paletteOffset, 32); + gBattleMonForms[bankAtk] = gBattleSpritesDataPtr->animationData->animArg; + if (gBattleSpritesDataPtr->bankData[bankAtk].transformSpecies != SPECIES_NONE) + { + BlendPalette(paletteOffset, 16, 6, 0x7FFF); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + } + gSprites[gBankSpriteIds[bankAtk]].pos1.y = GetBankSpriteDefault_Y(bankAtk); + } + else + { + const void *src; + void *dst; + u16 targetSpecies; + + if (IsContest()) + { + identity = 0; + targetSpecies = gContestResources->field_18->field_2; + personalityValue = gContestResources->field_18->field_8; + otId = gContestResources->field_18->field_C; + + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[targetSpecies], + gMonSpritesGfxPtr->sprites[0], + targetSpecies, + gContestResources->field_18->field_10); + } + else + { + identity = GetBankIdentity(bankAtk); + + if (GetBankSide(bankDef) == SIDE_OPPONENT) + targetSpecies = GetMonData(&gEnemyParty[gBattlePartyID[bankDef]], MON_DATA_SPECIES); + else + targetSpecies = GetMonData(&gPlayerParty[gBattlePartyID[bankDef]], MON_DATA_SPECIES); + + if (GetBankSide(bankAtk) == SIDE_PLAYER) + { + personalityValue = GetMonData(&gPlayerParty[gBattlePartyID[bankAtk]], MON_DATA_PERSONALITY); + otId = GetMonData(&gPlayerParty[gBattlePartyID[bankAtk]], MON_DATA_OT_ID); + + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[targetSpecies], + gMonSpritesGfxPtr->sprites[identity], + targetSpecies, + gTransformedPersonalities[bankAtk]); + } + else + { + personalityValue = GetMonData(&gEnemyParty[gBattlePartyID[bankAtk]], MON_DATA_PERSONALITY); + otId = GetMonData(&gEnemyParty[gBattlePartyID[bankAtk]], MON_DATA_OT_ID); + + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[targetSpecies], + gMonSpritesGfxPtr->sprites[identity], + targetSpecies, + gTransformedPersonalities[bankAtk]); + } + } + + src = gMonSpritesGfxPtr->sprites[identity]; + dst = (void *)(VRAM + 0x10000 + gSprites[gBankSpriteIds[bankAtk]].oam.tileNum * 32); + DmaCopy32(3, src, dst, 0x800); + paletteOffset = 0x100 + bankAtk * 16; + lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue); + LZDecompressWram(lzPaletteData, gDecompressionBuffer); + LoadPalette(gDecompressionBuffer, paletteOffset, 32); + + if (targetSpecies == SPECIES_CASTFORM) + { + gSprites[gBankSpriteIds[bankAtk]].anims = gMonAnimationsSpriteAnimsPtrTable[targetSpecies]; + LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]); + LoadPalette(gBattleStruct->castformPalette[0] + gBattleMonForms[bankDef] * 16, paletteOffset, 32); + } + + BlendPalette(paletteOffset, 16, 6, 0x7FFF); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + + if (!IsContest()) + { + gBattleSpritesDataPtr->bankData[bankAtk].transformSpecies = targetSpecies; + gBattleMonForms[bankAtk] = gBattleMonForms[bankDef]; + } + + gSprites[gBankSpriteIds[bankAtk]].pos1.y = GetBankSpriteDefault_Y(bankAtk); + StartSpriteAnim(&gSprites[gBankSpriteIds[bankAtk]], gBattleMonForms[bankAtk]); + } +} + +void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite) +{ + u8 identity; + s32 i; + u32 var; + const void *substitutePal; + + if (!loadMonSprite) + { + if (IsContest()) + identity = 0; + else + identity = GetBankIdentity(bank); + + if (IsContest()) + LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[identity]); + else if (GetBankSide(bank) != SIDE_PLAYER) + LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites[identity]); + else + LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[identity]); + + i = 1; + var = bank * 16; + substitutePal = gSubstituteDollPal; + for (; i < 4; i++) + { + register void *dmaSrc asm("r0") = gMonSpritesGfxPtr->sprites[identity]; + void *dmaDst = (i * 0x800) + dmaSrc; + u32 dmaSize = 0x800; + DmaCopy32(3, dmaSrc, dmaDst, dmaSize); + i++;i--; + } + + LoadCompressedPalette(substitutePal, 0x100 + var, 32); + } + else + { + if (!IsContest()) + { + if (GetBankSide(bank) != SIDE_PLAYER) + BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlePartyID[bank]], bank); + else + BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[bank]], bank); + } + } +} + +void LoadBattleMonGfxAndAnimate(u8 bank, bool8 loadMonSprite, u8 spriteId) +{ + BattleLoadSubstituteOrMonSpriteGfx(bank, loadMonSprite); + StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[bank]); + + if (!loadMonSprite) + gSprites[spriteId].pos1.y = GetSubstituteSpriteDefault_Y(bank); + else + gSprites[spriteId].pos1.y = GetBankSpriteDefault_Y(bank); +} + +void TrySetBehindSubstituteSpriteBit(u8 bank, u16 move) +{ + if (move == MOVE_SUBSTITUTE) + gBattleSpritesDataPtr->bankData[bank].behindSubstitute = 1; +} + +void ClearBehindSubstituteBit(u8 bank) +{ + gBattleSpritesDataPtr->bankData[bank].behindSubstitute = 0; +} + +void HandleLowHpMusicChange(struct Pokemon *mon, u8 bank) +{ + u16 hp = GetMonData(mon, MON_DATA_HP); + u16 maxHP = GetMonData(mon, MON_DATA_MAX_HP); + + if (GetHPBarLevel(hp, maxHP) == HP_BAR_RED) + { + if (!gBattleSpritesDataPtr->bankData[bank].lowHpSong) + { + if (!gBattleSpritesDataPtr->bankData[bank ^ BIT_MON].lowHpSong) + PlaySE(SE_HINSI); + gBattleSpritesDataPtr->bankData[bank].lowHpSong = 1; + } + } + else + { + gBattleSpritesDataPtr->bankData[bank].lowHpSong = 0; + if (!IsDoubleBattle()) + { + m4aSongNumStop(SE_HINSI); + return; + } + if (IsDoubleBattle() && !gBattleSpritesDataPtr->bankData[bank ^ BIT_MON].lowHpSong) + { + m4aSongNumStop(SE_HINSI); + return; + } + } +} + +void BattleStopLowHpSound(void) +{ + u8 playerBank = GetBankByIdentity(IDENTITY_PLAYER_MON1); + + gBattleSpritesDataPtr->bankData[playerBank].lowHpSong = 0; + if (IsDoubleBattle()) + gBattleSpritesDataPtr->bankData[playerBank ^ BIT_MON].lowHpSong = 0; + + m4aSongNumStop(SE_HINSI); +} + +u8 GetMonHPBarLevel(struct Pokemon *mon) +{ + u16 hp = GetMonData(mon, MON_DATA_HP); + u16 maxHP = GetMonData(mon, MON_DATA_MAX_HP); + + return GetHPBarLevel(hp, maxHP); +} + +void sub_805EAE8(void) +{ + if (gMain.inBattle) + { + u8 playerBank1 = GetBankByIdentity(IDENTITY_PLAYER_MON1); + u8 playerBank2 = GetBankByIdentity(IDENTITY_PLAYER_MON2); + u8 bank1PartyId = pokemon_order_func(gBattlePartyID[playerBank1]); + u8 bank2PartyId = pokemon_order_func(gBattlePartyID[playerBank2]); + + if (GetMonData(&gPlayerParty[bank1PartyId], MON_DATA_HP) != 0) + HandleLowHpMusicChange(&gPlayerParty[bank1PartyId], playerBank1); + if (IsDoubleBattle() && GetMonData(&gPlayerParty[bank2PartyId], MON_DATA_HP) != 0) + HandleLowHpMusicChange(&gPlayerParty[bank2PartyId], playerBank2); + } +} + +void sub_805EB9C(u8 affineMode) +{ + s32 i; + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (IsBankSpritePresent(i)) + { + gSprites[gBankSpriteIds[i]].oam.affineMode = affineMode; + if (affineMode == 0) + { + gBattleSpritesDataPtr->healthBoxesData[i].field_6 = gSprites[gBankSpriteIds[i]].oam.matrixNum; + gSprites[gBankSpriteIds[i]].oam.matrixNum = 0; + } + else + { + gSprites[gBankSpriteIds[i]].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[i].field_6; + } + } + } +} + +#define tBank data0 + +void LoadAndCreateEnemyShadowSprites(void) +{ + u8 bank; + + LoadCompressedObjectPic(&gSpriteSheet_EnemyShadow); + + bank = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, sub_80A5C6C(bank, 0), sub_80A5C6C(bank, 1) + 29, 0xC8); + gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].data0 = bank; + + if (IsDoubleBattle()) + { + bank = GetBankByIdentity(IDENTITY_OPPONENT_MON2); + gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, sub_80A5C6C(bank, 0), sub_80A5C6C(bank, 1) + 29, 0xC8); + gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].data0 = bank; + } +} + +void SpriteCB_EnemyShadow(struct Sprite *shadowSprite) +{ + bool8 invisible = FALSE; + u8 bank = shadowSprite->tBank; + struct Sprite *bankSprite = &gSprites[gBankSpriteIds[bank]]; + + if (!bankSprite->inUse || !IsBankSpritePresent(bank)) + { + shadowSprite->callback = SpriteCB_SetInvisible; + return; + } + if (gAnimScriptActive || bankSprite->invisible) + invisible = TRUE; + else if (gBattleSpritesDataPtr->bankData[bank].transformSpecies != SPECIES_NONE + && gEnemyMonElevation[gBattleSpritesDataPtr->bankData[bank].transformSpecies] == 0) + invisible = TRUE; + + if (gBattleSpritesDataPtr->bankData[bank].behindSubstitute) + invisible = TRUE; + + shadowSprite->pos1.x = bankSprite->pos1.x; + shadowSprite->pos2.x = bankSprite->pos2.x; + shadowSprite->invisible = invisible; +} + +#undef tBank + +void SpriteCB_SetInvisible(struct Sprite *sprite) +{ + sprite->invisible = 1; +} + +void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species) +{ + if (GetBankSide(bank) == SIDE_PLAYER) + return; + + if (gBattleSpritesDataPtr->bankData[bank].transformSpecies != SPECIES_NONE) + species = gBattleSpritesDataPtr->bankData[bank].transformSpecies; + + if (gEnemyMonElevation[species] != 0) + gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].callback = SpriteCB_EnemyShadow; + else + gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].callback = SpriteCB_SetInvisible; +} + +void EnemyShadowCallbackToSetInvisible(u8 bank) +{ + gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].callback = SpriteCB_SetInvisible; +} + +void sub_805EF14(void) +{ + u16 *vramPtr = (u16*)(VRAM + 0x240); + s32 i; + s32 j; + + for (i = 0; i < 9; i++) + { + for (j = 0; j < 16; j++) + { + if (!(*vramPtr & 0xF000)) + *vramPtr |= 0xF000; + if (!(*vramPtr & 0x0F00)) + *vramPtr |= 0x0F00; + if (!(*vramPtr & 0x00F0)) + *vramPtr |= 0x00F0; + if (!(*vramPtr & 0x000F)) + *vramPtr |= 0x000F; + vramPtr++; + } + } +} + +void ClearTemporarySpeciesSpriteData(u8 bank, bool8 dontClearSubstitute) +{ + gBattleSpritesDataPtr->bankData[bank].transformSpecies = SPECIES_NONE; + gBattleMonForms[bank] = 0; + if (!dontClearSubstitute) + ClearBehindSubstituteBit(bank); +} + +void AllocateMonSpritesGfx(void) +{ + u8 i = 0, j; + + gMonSpritesGfxPtr = NULL; + gMonSpritesGfxPtr = AllocZeroed(sizeof(*gMonSpritesGfxPtr)); + gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(0x8000); + + for (i = 0; i < BATTLE_BANKS_COUNT; i++) + { + gMonSpritesGfxPtr->sprites[i] = gMonSpritesGfxPtr->firstDecompressed + (i * 0x2000); + *(gMonSpritesGfxPtr->templates + i) = gUnknown_08329D98[i]; + + for (j = 0; j < 4; j++) + { + gMonSpritesGfxPtr->field_74[i][j].data = gMonSpritesGfxPtr->sprites[i] + (j * 0x800); + gMonSpritesGfxPtr->field_74[i][j].size = 0x800; + } + + gMonSpritesGfxPtr->templates[i].images = gMonSpritesGfxPtr->field_74[i]; + } + + gMonSpritesGfxPtr->barFontGfx = AllocZeroed(0x1000); +} + +void FreeMonSpritesGfx(void) +{ + if (gMonSpritesGfxPtr == NULL) + return; + + if (gMonSpritesGfxPtr->field_17C != NULL) + FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C); + if (gMonSpritesGfxPtr->field_178 != NULL) + FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_178); + + FREE_AND_SET_NULL(gMonSpritesGfxPtr->barFontGfx); + FREE_AND_SET_NULL(gMonSpritesGfxPtr->firstDecompressed); + gMonSpritesGfxPtr->sprites[0] = NULL; + gMonSpritesGfxPtr->sprites[1] = NULL; + gMonSpritesGfxPtr->sprites[2] = NULL; + gMonSpritesGfxPtr->sprites[3] = NULL; + FREE_AND_SET_NULL(gMonSpritesGfxPtr); +} + +bool32 ShouldPlayNormalPokeCry(struct Pokemon *mon) +{ + s16 hp, maxHP; + s32 barLevel; + + if (GetMonData(mon, MON_DATA_STATUS) & (STATUS_ANY | STATUS_TOXIC_COUNTER)) + return FALSE; + + hp = GetMonData(mon, MON_DATA_HP); + maxHP = GetMonData(mon, MON_DATA_MAX_HP); + + barLevel = GetHPBarLevel(hp, maxHP); + if (barLevel <= HP_BAR_YELLOW) + return FALSE; + + return TRUE; +} diff --git a/src/battle_interface.c b/src/battle_interface.c index 5f582a366..811751ca3 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -2545,19 +2545,19 @@ u8 GetHPBarLevel(s16 hp, s16 maxhp) if (hp == maxhp) { - result = 4; + result = HP_BAR_FULL; } else { u8 fraction = GetScaledHPFraction(hp, maxhp, 48); if (fraction > 24) - result = 3; + result = HP_BAR_GREEN; else if (fraction > 9) - result = 2; + result = HP_BAR_YELLOW; else if (fraction > 0) - result = 1; + result = HP_BAR_RED; else - result = 0; + result = HP_BAR_EMPTY; } return result; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index c6cec7f0d..91be4fd9d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1068,22 +1068,33 @@ static const u8 sBallCatchBonuses[] = 20, 15, 10, 15 // Ultra, Great, Poke, Safari }; -// could be a 2d array or a struct -const ALIGNED(4) u8 gUnknown_0831C494[] = -{ - 0x3d, 0x44, 0x3d, 0x44, 0x14, 0x2d, 0x54, 0x5c, - 0x46, 0x55, 0x20, 0x5c, 0x26, 0x45, 0x46, 0x55, - 0x14, 0x5a, 0x46, 0x5c, 0x1e, 0x32, 0x20, 0x5a, - 0x38, 0x4e, 0x38, 0x4e, 0x19, 0x28, 0x4b, 0x5a, - 0x45, 0x4b, 0x1c, 0x53, 0x23, 0x2d, 0x1d, 0x23, - 0x3e, 0x48, 0x1e, 0x32, 0x3a, 0x5f, 0x58, 0x5e, - 0x22, 0x2d, 0x1d, 0x28, 0x23, 0x28, 0x23, 0x5f, - 0x38, 0x4e, 0x38, 0x4e, 0x23, 0x50, 0x22, 0x5e, - 0x2c, 0x5e, 0x22, 0x28, 0x38, 0x4e, 0x38, 0x4e, - 0x1e, 0x58, 0x1e, 0x58, 0x1e, 0x2b, 0x1b, 0x21, - 0x28, 0x5a, 0x19, 0x57, 0x12, 0x58, 0x5a, 0x5f, - 0x58, 0x5e, 0x16, 0x2a, 0x2a, 0x5c, 0x2a, 0x2f, - 0x38, 0x4e, 0x38, 0x4e +const ALIGNED(4) u8 gUnknown_0831C494[][4] = +{ + {0x3d, 0x44, 0x3d, 0x44}, + {0x14, 0x2d, 0x54, 0x5c}, + {0x46, 0x55, 0x20, 0x5c}, + {0x26, 0x45, 0x46, 0x55}, + {0x14, 0x5a, 0x46, 0x5c}, + {0x1e, 0x32, 0x20, 0x5a}, + {0x38, 0x4e, 0x38, 0x4e}, + {0x19, 0x28, 0x4b, 0x5a}, + {0x45, 0x4b, 0x1c, 0x53}, + {0x23, 0x2d, 0x1d, 0x23}, + {0x3e, 0x48, 0x1e, 0x32}, + {0x3a, 0x5f, 0x58, 0x5e}, + {0x22, 0x2d, 0x1d, 0x28}, + {0x23, 0x28, 0x23, 0x5f}, + {0x38, 0x4e, 0x38, 0x4e}, + {0x23, 0x50, 0x22, 0x5e}, + {0x2c, 0x5e, 0x22, 0x28}, + {0x38, 0x4e, 0x38, 0x4e}, + {0x1e, 0x58, 0x1e, 0x58}, + {0x1e, 0x2b, 0x1b, 0x21}, + {0x28, 0x5a, 0x19, 0x57}, + {0x12, 0x58, 0x5a, 0x5f}, + {0x58, 0x5e, 0x16, 0x2a}, + {0x2a, 0x5c, 0x2a, 0x2f}, + {0x38, 0x4e, 0x38, 0x4e} }; static const u8 sUnknown_0831C4F8[] = @@ -3533,7 +3544,7 @@ static void atk23_getexp(void) // music change in wild battle after fainting a poke if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) && gBattleMons[0].hp && !gBattleStruct->wildVictorySong) { - BattleMusicStop(); + BattleStopLowHpSound(); PlayBGM(0x161); gBattleStruct->wildVictorySong++; } @@ -3628,7 +3639,7 @@ static void atk23_getexp(void) if (gBattleBufferB[gActiveBank][0] == CONTROLLER_TWORETURNVALUES && gBattleBufferB[gActiveBank][1] == RET_VALUE_LEVELLED_UP) { if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId) - sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBank, gBattleStruct->expGetterId) diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 27da8b18e..01dfc954a 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -1234,12 +1234,12 @@ static void sub_806E6CC(u8 taskId) DestroyTask(taskId); } -const u8 *pokemon_get_pal(struct Pokemon *mon) +const u8 *GetMonFrontSpritePal(struct Pokemon *mon) { u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); - return species_and_otid_get_pal(species, otId, personality); + return GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality); } // Extracts the upper 16 bits of a 32-bit number @@ -1248,7 +1248,7 @@ const u8 *pokemon_get_pal(struct Pokemon *mon) // Extracts the lower 16 bits of a 32-bit number #define LOHALF(n) ((n) & 0xFFFF) -const u8 *species_and_otid_get_pal(u16 species, u32 otId, u32 personality) +const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality) { u32 shinyValue; diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c index 002f4f069..3177a8946 100644 --- a/src/reshow_battle_screen.c +++ b/src/reshow_battle_screen.c @@ -37,8 +37,8 @@ extern const union AnimCmd * const * const gMonAnimationsSpriteAnimsPtrTable[]; extern void dp12_8087EA4(void); extern void trs_config(void); extern bool8 IsDoubleBattle(void); -extern u8 sub_80A614C(u8 bank); -extern u8 sub_80A6138(u8 bank); +extern u8 GetSubstituteSpriteDefault_Y(u8 bank); +extern u8 GetBankSpriteDefault_Y(u8 bank); extern u8 sub_80A82E4(u8 bank); extern void sub_806A068(u16 species, u8 bankIdentity); extern void sub_806A12C(u16 backPicId, u8 bankIdentity); @@ -104,7 +104,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void) gReservedSpritePaletteCount = 4; break; case 5: - sub_805E350(); + ClearSpritesHealthboxAnimData(); break; case 6: if (BattleLoadAllHealthBoxesGfx(gBattleScripting.reshowHelperState)) @@ -217,7 +217,7 @@ static bool8 LoadBankSpriteGfx(u8 bank) if (!gBattleSpritesDataPtr->bankData[bank].behindSubstitute) BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlePartyID[bank]], bank); else - BattleLoadSubstituteSpriteGfx(bank, FALSE); + BattleLoadSubstituteOrMonSpriteGfx(bank, FALSE); } else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0) DecompressTrainerBackPic(gSaveBlock2Ptr->playerGender, bank); @@ -226,7 +226,7 @@ static bool8 LoadBankSpriteGfx(u8 bank) else if (!gBattleSpritesDataPtr->bankData[bank].behindSubstitute) BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[bank]], bank); else - BattleLoadSubstituteSpriteGfx(bank, FALSE); + BattleLoadSubstituteOrMonSpriteGfx(bank, FALSE); gBattleScripting.reshowHelperState = 0; } @@ -250,9 +250,9 @@ static void CreateBankSprite(u8 bank) u8 posY; if (gBattleSpritesDataPtr->bankData[bank].behindSubstitute) - posY = sub_80A614C(bank); + posY = GetSubstituteSpriteDefault_Y(bank); else - posY = sub_80A6138(bank); + posY = GetBankSpriteDefault_Y(bank); if (GetBankSide(bank) != SIDE_PLAYER) { -- cgit v1.2.3 From 32c7d4f252acf8cc9dc42d50da046c4b3f0beb16 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 4 Nov 2017 16:25:19 +0100 Subject: make it compile --- src/battle_interface.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/battle_interface.c b/src/battle_interface.c index 811751ca3..240c64862 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -1239,11 +1239,11 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) } ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3); - RenderTextFont9(gMonSpritesGfxPtr->fontPixels, 9, text); + RenderTextFont9(gMonSpritesGfxPtr->barFontGfx, 9, text); for (i = 0; i < 3; i++) { - CpuCopy32(&gMonSpritesGfxPtr->fontPixels[i * 64 + 32], + CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[i * 64 + 32], (void*)((OBJ_VRAM0) + 32 * (gSprites[healthboxSpriteId].oam.tileNum + var + i)), 0x20); } @@ -1308,19 +1308,19 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 txtPtr = ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3); if (!maxOrCurrent) StringCopy(txtPtr, gText_Slash); - RenderTextFont9(gMonSpritesGfxPtr->fontPixels, 9, text); + RenderTextFont9(gMonSpritesGfxPtr->barFontGfx, 9, text); for (i = var; i < var + 3; i++) { if (i < 3) { - CpuCopy32(&gMonSpritesGfxPtr->fontPixels[((i - var) * 64) + 32], + CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[((i - var) * 64) + 32], (void*)((OBJ_VRAM0) + 32 * (1 + gSprites[r7].oam.tileNum + i)), 0x20); } else { - CpuCopy32(&gMonSpritesGfxPtr->fontPixels[((i - var) * 64) + 32], + CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[((i - var) * 64) + 32], (void*)((OBJ_VRAM0 + 0x20) + 32 * (i + gSprites[r7].oam.tileNum)), 0x20); } @@ -1328,7 +1328,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 if (maxOrCurrent == HP_CURRENT) { - CpuCopy32(&gMonSpritesGfxPtr->fontPixels[224], + CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[224], (void*)((OBJ_VRAM0) + ((gSprites[r7].oam.tileNum + 4) * 32)), 0x20); CpuFill32(0, (void*)((OBJ_VRAM0) + (gSprites[r7].oam.tileNum * 32)), 0x20); @@ -1350,15 +1350,15 @@ static void sub_80730D4(u8 healthboxSpriteId, struct Pokemon *mon) { u8 text[20]; s32 j, var2; - u8 *fontPixels; + u8 *barFontGfx; u8 i, var, nature, healthboxSpriteId_2; memcpy(text, sUnknown_0832C3C4, sizeof(sUnknown_0832C3C4)); - fontPixels = &gMonSpritesGfxPtr->fontPixels[0x520 + (GetBankIdentity(gSprites[healthboxSpriteId].data6) * 384)]; + barFontGfx = &gMonSpritesGfxPtr->barFontGfx[0x520 + (GetBankIdentity(gSprites[healthboxSpriteId].data6) * 384)]; var = 5; nature = GetNature(mon); StringCopy(text + 6, gNatureNamePointers[nature]); - RenderTextFont9(fontPixels, 9, text); + RenderTextFont9(barFontGfx, 9, text); for (j = 6, i = 0; i < var; i++, j++) { @@ -1371,18 +1371,18 @@ static void sub_80730D4(u8 healthboxSpriteId, struct Pokemon *mon) else elementId = 43; - CpuCopy32(GetHealthboxElementGfxPtr(elementId), fontPixels + (i * 64), 0x20); + CpuCopy32(GetHealthboxElementGfxPtr(elementId), barFontGfx + (i * 64), 0x20); } for (j = 1; j < var + 1; j++) { var2 = (gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * 32; - CpuCopy32(fontPixels, (void*)(OBJ_VRAM0) + (var2), 0x20); - fontPixels += 0x20; + CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (var2), 0x20); + barFontGfx += 0x20; var2 = (8 + gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * 32; - CpuCopy32(fontPixels, (void*)(OBJ_VRAM0) + (var2), 0x20); - fontPixels += 0x20; + CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (var2), 0x20); + barFontGfx += 0x20; } healthboxSpriteId_2 = gSprites[healthboxSpriteId].data5; @@ -1390,20 +1390,20 @@ static void sub_80730D4(u8 healthboxSpriteId, struct Pokemon *mon) ConvertIntToDecimalStringN(text + 9, gBattleStruct->field_7B, STR_CONV_MODE_RIGHT_ALIGN, 2); text[5] = CHAR_SPACE; text[8] = CHAR_SLASH; - RenderTextFont9(gMonSpritesGfxPtr->fontPixels, 9, text); + RenderTextFont9(gMonSpritesGfxPtr->barFontGfx, 9, text); j = healthboxSpriteId_2; // needed to match for some reason for (j = 0; j < 5; j++) { if (j <= 1) { - CpuCopy32(&gMonSpritesGfxPtr->fontPixels[0x40 * j + 0x20], + CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[0x40 * j + 0x20], (void*)(OBJ_VRAM0) + (gSprites[healthboxSpriteId_2].oam.tileNum + 2 + j) * 32, 32); } else { - CpuCopy32(&gMonSpritesGfxPtr->fontPixels[0x40 * j + 0x20], + CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[0x40 * j + 0x20], (void*)(OBJ_VRAM0 + 0xC0) + (j + gSprites[healthboxSpriteId_2].oam.tileNum) * 32, 32); } -- cgit v1.2.3 From 4d4d642285342bef6bafe4b932e3fd8eabeb7133 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 4 Nov 2017 22:40:36 +0100 Subject: dump berry blender and script menu --- src/berry_blender.c | 585 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 582 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/berry_blender.c b/src/berry_blender.c index db50fe4c4..9d98f3fa7 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -1,6 +1,8 @@ - -// Includes #include "global.h" +#include "bg.h" +#include "window.h" +#include "task.h" +#include "sprite.h" // Static type declarations @@ -11,8 +13,585 @@ IWRAM_DATA s16 gUnknown_03000DF8[6]; IWRAM_DATA s16 gUnknown_03000E04; IWRAM_DATA s16 gUnknown_03000E06; -// Static ROM declarations +// graphics +extern const u8 gBerryBlenderArrowTiles[]; +extern const u8 gBerryBlenderStartTiles[]; +extern const u8 gBerryBlenderMarubatsuTiles[]; +extern const u8 gBerryBlenderParticlesTiles[]; +extern const u8 gBerryBlenderCountdownNumbersTiles[]; +extern const u16 gBerryBlenderMiscPalette[]; +extern const u16 gBerryBlenderArrowPalette[]; + +void sub_8080EA4(u8 taskId); +void sub_8080FD0(u8 taskId); +void sub_80810F8(u8 taskId); +void sub_80833F8(struct Sprite *sprite); +void sub_8082F68(struct Sprite *sprite); +void sub_8083010(struct Sprite *sprite); +void sub_80830C0(struct Sprite *sprite); // .rodata +// TODO: make those static once the file is decompiled +const u16 sBlenderCenterPal[] = INCBIN_U16("graphics/berry_blender/center.gbapal"); +const u8 sBlenderCenterMap[] = INCBIN_U8("graphics/berry_blender/center_map.bin"); +const u16 sBlenderOuterPal[] = INCBIN_U16("graphics/berry_blender/outer.gbapal"); + +// unreferenced pals? +static const u16 sUnknownPal_0[] = INCBIN_U16("graphics/unknown/8339514.gbapal"); +static const u16 sUnknownArray_1[224] = {0}; + +// unused text? +static const u8 sUnusedText_YesNo[] = _("YES\nNO"); +static const u8 sUnusedText_2[] = _("▶"); +static const u8 sUnusedText_Space[] = _(" "); +static const u8 sUnusedText_Terminating[] = _("Terminating."); +static const u8 sUnusedText_LinkPartnerNotFound[] = _("Link partner(s) not found.\nPlease try again.\p"); + +const u8 gText_BerryBlenderStart[] = _("Starting up the BERRY BLENDER.\pPlease select a BERRY from your BAG\nto put in the BERRY BLENDER.\p"); +const u8 gText_NewParagraph[] = _("\p"); +const u8 gText_wasMade[] = _(" was made!"); +static const u8 sText_Mister[] = _("MISTER"); +static const u8 sText_Laddie[] = _("LADDIE"); +static const u8 sText_Lassie[] = _("LASSIE"); +static const u8 sText_Master[] = _("MASTER"); +static const u8 sText_Dude[] = _("DUDE"); +static const u8 sText_Miss[] = _("MISS"); + +const u8* const sBlenderOpponentsNames[] = +{ + sText_Mister, + sText_Laddie, + sText_Lassie, + sText_Master, + sText_Dude, + sText_Miss +}; + +static const u8 sText_PressA_ToStart[] = _("Press the A Button to start."); +static const u8 sText_PleaseWaitAWhile[] = _("Please wait a while."); +const u8 sText_CommunicationStandby[] = _("Communication standby…"); +const u8 sText_WouldLikeToBlendAnotherBerry[] = _("Would you like to blend another BERRY?"); +const u8 sText_RunOutOfBerriesForBlending[] = _("You’ve run out of BERRIES for\nblending in the BERRY BLENDER.\p"); +const u8 sText_YourPokeblockCaseIsFull[] = _("Your {POKEBLOCK} CASE is full.\p"); +const u8 sText_hasNoBerriesToPut[] = _(" has no BERRIES to put in\nthe BERRY BLENDER."); +const u8 sText_someonesPokeblockCaseIsFull[] = _("’s {POKEBLOCK} CASE is full.\p"); +const u8 sText_BlendingResults[] = _("RESULTS OF BLENDING"); +static const u8 sText_BerryUsed[] = _("BERRY USED"); +const u8 sText_SpaceBerry[] = _(" BERRY"); +const u8 sText_Time[] = _("Time:"); +const u8 sText_Min[] = _(" min. "); +const u8 sText_Sec[] = _(" sec."); +const u8 sText_MaximumSpeed[] = _("MAXIMUM SPEED"); +const u8 sText_RPM[] = _(" RPM"); +const u8 sText_Dot[] = _("."); +const u8 sText_NewLine[] = _("\n"); +static const u8 sText_Space[] = _(" "); +const u8 sText_Ranking[] = _("RANKING"); +const u8 sText_TheLevelIs[] = _("The level is "); +const u8 sText_TheFeelIs[] = _(", and the feel is "); +const u8 sText_Dot2[] = _("."); + +const struct BgTemplate gUnknown_08339974[3] = +{ + { + .bg = 0, + .charBaseIndex = 3, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0, + }, + { + .bg = 1, + .charBaseIndex = 2, + .mapBaseIndex = 12, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0, + }, + { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 8, + .screenSize = 1, + .paletteMode = 1, + .priority = 0, + .baseTile = 0, + } +}; + +const struct WindowTemplate gUnknown_08339980[] = +{ + {0, 1, 6, 7, 2, 0xE, 0x28}, + {0, 0x16, 6, 7, 2, 0xE, 0x36}, + {0, 1, 0xC, 7, 2, 0xE, 0x44}, + {0, 0x16, 0xC, 7, 2, 0xE, 0x52}, + {0, 2, 0xF, 0x1B, 4, 0xE, 0x60}, + {0, 5, 3, 0x15, 0xE, 0xE, 0x60}, + DUMMY_WIN_TEMPLATE +}; + +const struct WindowTemplate gUnknown_083399B8 = +{ + 0, 0x15, 9, 5, 4, 0xE, 0xCC +}; + +const s8 gUnknown_083399C0[][2] = +{ + {-1, -1}, {1, -1}, {-1, 1}, {1, 1} +}; + +const u8 sBlenderSyncArrowsPos[][2] = +{ + {72, 32}, {168, 32}, {72, 128}, {168, 128} +}; + +const u8 gUnknown_083399D0[3][4] = +{ + {-1, 0, 1, -1}, {-1, 0, 1, 2}, {0, 1, 2, 3} +}; + +const u16 gUnknown_083399DC[] = {0, 0xC000, 0x4000, 0x8000}; +const u8 gUnknown_083399E4[] = {1, 1, 0}; +const u8 gUnknown_083399E7[] = {32, 224, 96, 160, 0}; + +const TaskFunc gUnknown_083399EC[] = +{ + sub_8080EA4, sub_8080FD0, sub_80810F8 +}; + +static const struct OamData sOamData_8216314 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_821631C[] = +{ + ANIMCMD_FRAME(16, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216324[] = +{ + ANIMCMD_FRAME(16, 5, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821632C[] = +{ + ANIMCMD_FRAME(16, 5, .hFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216334[] = +{ + ANIMCMD_FRAME(16, 5, 0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821633C[] = +{ + ANIMCMD_FRAME(48, 2, 1, 1), + ANIMCMD_FRAME(32, 5, 1, 1), + ANIMCMD_FRAME(48, 3, 1, 1), + ANIMCMD_FRAME(16, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216350[] = +{ + ANIMCMD_FRAME(48, 2, .vFlip = TRUE), + ANIMCMD_FRAME(32, 5, .vFlip = TRUE), + ANIMCMD_FRAME(48, 3, .vFlip = TRUE), + ANIMCMD_FRAME(16, 5, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216364[] = +{ + ANIMCMD_FRAME(48, 2, .hFlip = TRUE), + ANIMCMD_FRAME(32, 5, .hFlip = TRUE), + ANIMCMD_FRAME(48, 3, .hFlip = TRUE), + ANIMCMD_FRAME(16, 5, .hFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216378[] = +{ + ANIMCMD_FRAME(48, 2, 0, 0), + ANIMCMD_FRAME(32, 5, 0, 0), + ANIMCMD_FRAME(48, 3, 0, 0), + ANIMCMD_FRAME(16, 5, 0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821638C[] = +{ + ANIMCMD_FRAME(0, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216394[] = +{ + ANIMCMD_FRAME(0, 5, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821639C[] = +{ + ANIMCMD_FRAME(0, 5, .hFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82163A4[] = +{ + ANIMCMD_FRAME(0, 5, 0, 0), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_82163AC[] = +{ + sSpriteAnim_821631C, + sSpriteAnim_8216324, + sSpriteAnim_821632C, + sSpriteAnim_8216334, + sSpriteAnim_821633C, + sSpriteAnim_8216350, + sSpriteAnim_8216364, + sSpriteAnim_8216378, + sSpriteAnim_821638C, + sSpriteAnim_8216394, + sSpriteAnim_821639C, + sSpriteAnim_82163A4 +}; + +const struct SpriteSheet sSpriteSheet_BlenderArrow = +{ + gBerryBlenderArrowTiles, 0x800, 46545 +}; + +const struct SpritePalette sSpritePal_BlenderMisc = +{ + gBerryBlenderMiscPalette, 46546 +}; + +const struct SpritePalette sSpritePal_BlenderArrow = +{ + gBerryBlenderArrowPalette, 12312 +}; + +const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate = +{ + .tileTag = 46545, + .paletteTag = 12312, + .oam = &sOamData_8216314, + .anims = sSpriteAnimTable_82163AC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80833F8 +}; + +static const struct OamData sOamData_821640C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_8216414[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821641C[] = +{ + ANIMCMD_FRAME(4, 20, 1, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216424[] = +{ + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(12, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(12, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821643C[] = +{ + ANIMCMD_FRAME(8, 4), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_8216444[] = +{ + sSpriteAnim_8216414, + sSpriteAnim_821641C, + sSpriteAnim_8216424, + sSpriteAnim_821643C, +}; + +const struct SpriteSheet gUnknown_08339B38 = +{ + gBerryBlenderMarubatsuTiles, 0x200, 48888 +}; + +const struct SpriteTemplate gUnknown_08339B40 = +{ + .tileTag = 48888, + .paletteTag = 46546, + .oam = &sOamData_821640C, + .anims = sSpriteAnimTable_8216444, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8082F68 +}; + +static const struct OamData sOamData_8216474 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_821647C[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(3, 5), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216494[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82164AC[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(3, 3), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82164D0[] = +{ + ANIMCMD_FRAME(5, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_82164D8[] = +{ + ANIMCMD_FRAME(6, 5, 1, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_82164E0[] = +{ + sSpriteAnim_821647C, + sSpriteAnim_8216494, + sSpriteAnim_82164AC, + sSpriteAnim_82164D0, + sSpriteAnim_82164D8, +}; + +const struct SpriteSheet gUnknown_08339BD8 = +{ + gBerryBlenderParticlesTiles, 0xE0, 23456 +}; + +const struct SpriteTemplate gUnknown_08339BE0 = +{ + .tileTag = 23456, + .paletteTag = 46546, + .oam = &sOamData_8216474, + .anims = sSpriteAnimTable_82164E0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +static const struct OamData sOamData_8216514 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_821651C[] = +{ + ANIMCMD_FRAME(32, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_8216524[] = +{ + ANIMCMD_FRAME(16, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_821652C[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_8216534[] = +{ + sSpriteAnim_821651C, + sSpriteAnim_8216524, + sSpriteAnim_821652C, +}; + +const struct SpriteSheet gUnknown_08339C24 = +{ + gBerryBlenderCountdownNumbersTiles, 0x600, 12345 +}; + +const struct SpriteTemplate gUnknown_08339C2C = +{ + .tileTag = 12345, + .paletteTag = 46546, + .oam = &sOamData_8216514, + .anims = sSpriteAnimTable_8216534, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8083010 +}; + +static const struct OamData sOamData_8216560 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_8216568[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_8216570[] = +{ + sSpriteAnim_8216568, +}; + +const struct SpriteSheet gUnknown_08339C58 = +{ + gBerryBlenderStartTiles, 0x400, 12346 +}; + +const struct SpriteTemplate gUnknown_08339C60 = +{ + .tileTag = 12346, + .paletteTag = 46546, + .oam = &sOamData_8216560, + .anims = sSpriteAnimTable_8216570, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80830C0 +}; + +const s16 gUnknown_08339C78[][5] = +{ + {-10, 20, 10, 2, 1}, + {250, 20, 10, -2, 1}, + {-10, 140, 10, 2, -1}, + {250, 140, 10, -2, -1}, +}; + +const u8 gUnknown_08339CA0[][3] = +{ + {4, 3, 2}, {0, 4, 3}, {1, 0, 4}, {2, 1, 0}, {3, 2, 1}, {0, 2, 3}, {1, 3, 4}, {2, 4, 0}, {3, 0, 1}, {4, 1, 2}, +}; + +const u8 gUnknown_08339CBE[] = {30, 31, 32, 33, 34}; + +const u8 gUnknown_08339CC3[] = {1, 1, 2, 3, 4}; + +const u8 gUnknown_08339CC8[] = {0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15}; + +static const u8 gUnknown_08339CD2[] = +{ + 0xfe, 0x02, 0x02, 0xce, 0xd0, 0x37, 0x44, 0x07, 0x1f, 0x0c, 0x10, + 0x00, 0xff, 0xfe, 0x91, 0x72, 0xce, 0xd0, 0x37, 0x44, 0x07, 0x1f, + 0x0c, 0x10, 0x00, 0xff, 0x06, 0x27, 0x02, 0xff, 0x00, 0x0c, 0x48, + 0x02, 0xff, 0x00, 0x01, 0x1f, 0x02, 0xff, 0x00, 0x16, 0x37, 0x02, + 0xff, 0x00, 0x0d, 0x50, 0x4b, 0x02, 0xff, 0x06, 0x06, 0x06, 0x06, + 0x05, 0x03, 0x03, 0x03, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x02 +}; + +const struct WindowTemplate gUnknown_08339D14[] = {0, 6, 4, 0x12, 0xB, 0xF, 8}; // .text -- cgit v1.2.3 From bd56bb073f87eeca6e71b14ab1ec0a11ea1ee3a4 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 5 Nov 2017 12:05:07 +0100 Subject: start working on hall of fame --- src/hall_of_fame.c | 319 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 319 insertions(+) (limited to 'src') diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index d9fd40b84..d63efe21e 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -1,4 +1,323 @@ #include "global.h" #include "hall_of_fame.h" +#include "task.h" +#include "palette.h" +#include "sprite.h" +#include "pokemon.h" +#include "text.h" +#include "malloc.h" +#include "gpu_regs.h" +#include "main.h" +#include "sound.h" +#include "songs.h" +#include "decompress.h" +#include "save.h" +#include "window.h" +#include "bg.h" +#include "species.h" +struct HallofFameMon +{ + u32 tid; + u32 personality; + u16 species : 9; + u16 lvl : 7; + u8 nick[10]; +}; +struct HallofFameMons +{ + struct HallofFameMon mons[6]; +}; + +extern struct HallofFameMons *gHofMonsPtr; + +struct HofGfx +{ + u16 field_0; + u8 field_2[0x2010]; +}; + +extern struct HofGfx *gUnknown_0203BCDC; + +extern u32 gUnknown_0203BCD4; +extern bool8 HasHallOfFameRecords; +extern u8 gDecompressionBuffer[]; + +#define HALL_OF_FAME_MAX_TEAMS 50 + +// strings +extern const u8 gText_SavingDontTurnOffPower[]; + +extern void sub_81973C4(u8, u8); +extern u16 AddTextPrinterParametrized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor); + +// this file's functions +void sub_8174EC4(void); +void sub_8174F70(void); +void sub_8174FAC(void); +bool8 sub_8175024(void); +void sub_817371C(u8 taskId); +void sub_81738BC(u8 taskId); +void sub_8173A8C(u8 taskId); +void sub_81739C4(u8 taskId); +void sub_8173A5C(u8 taskId); +void sub_8173AA8(u8 taskId); +void sub_8173BC0(u8 taskId); +void sub_8175120(struct Sprite *sprite); + +void VBlankCB_HallOfFame(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void CB2_HallOfFame(void) +{ + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +bool8 sub_817357C(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + sub_8174EC4(); + gUnknown_0203BCDC = AllocZeroed(sizeof(*gUnknown_0203BCDC)); + gMain.state = 1; + break; + case 1: + sub_8174F70(); + gMain.state++; + break; + case 2: + SetGpuReg(REG_OFFSET_BLDCNT, 0x3F42); + SetGpuReg(REG_OFFSET_BLDALPHA, 0x710); + SetGpuReg(REG_OFFSET_BLDY, 0); + sub_8174FAC(); + gUnknown_0203BCDC->field_0 = 0; + gMain.state++; + break; + case 3: + if (!sub_8175024()) + { + SetVBlankCallback(VBlankCB_HallOfFame); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gMain.state++; + } + break; + case 4: + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_HallOfFame); + PlayBGM(BGM_DENDOU); + return FALSE; + } + break; + } + return TRUE; +} + +#define tData0 data[0] +#define tDisplayedPoke data[1] +#define tPokesNumber data[2] +#define tFrameCount data[3] +#define tPlayerSpriteID data[4] +#define tMonSpriteID(i) data[i + 5] + +void sub_8173694(void) +{ + if (!sub_817357C()) + { + u8 taskId = CreateTask(sub_817371C, 0); + gTasks[taskId].tData0 = 0; + gHofMonsPtr = AllocZeroed(sizeof(*gHofMonsPtr)); + } +} + +void sub_81736D8(void) +{ + if (!sub_817357C()) + { + u8 taskId = CreateTask(sub_817371C, 0); + gTasks[taskId].tData0 = 1; + gHofMonsPtr = AllocZeroed(sizeof(*gHofMonsPtr)); + } +} + +void sub_817371C(u8 taskId) +{ + u16 i, j; + + gTasks[taskId].tPokesNumber = 0; // valid pokes + + for (i = 0; i < 6; i++) + { + u8 nick[POKEMON_NAME_LENGTH + 2]; + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) + { + gHofMonsPtr->mons[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + gHofMonsPtr->mons[i].tid = GetMonData(&gPlayerParty[i], MON_DATA_OT_ID); + gHofMonsPtr->mons[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); + gHofMonsPtr->mons[i].lvl = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nick); + for (j = 0; j < POKEMON_NAME_LENGTH; j++) + { + gHofMonsPtr->mons[i].nick[j] = nick[j]; + } + gTasks[taskId].tPokesNumber++; + } + else + { + gHofMonsPtr->mons[i].species = 0; + gHofMonsPtr->mons[i].tid = 0; + gHofMonsPtr->mons[i].personality = 0; + gHofMonsPtr->mons[i].lvl = 0; + gHofMonsPtr->mons[i].nick[0] = EOS; + } + } + + gUnknown_0203BCD4 = 0; + gTasks[taskId].tDisplayedPoke = 0; + gTasks[taskId].tPlayerSpriteID = 0xFF; + + for (i = 0; i < 6; i++) + { + gTasks[taskId].tMonSpriteID(i) = 0xFF; + } + + if (gTasks[taskId].tData0) + gTasks[taskId].func = sub_8173A8C; + else + gTasks[taskId].func = sub_81738BC; +} + +void sub_81738BC(u8 taskId) +{ + u16 i; + struct HallofFameMons* lastSavedTeam = (struct HallofFameMons*)(gDecompressionBuffer); + + if (!HasHallOfFameRecords) + { + memset(gDecompressionBuffer, 0, 0x2000); + } + else + { + if (sub_81534D0(3) != TRUE) + memset(gDecompressionBuffer, 0, 0x2000); + } + + for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, lastSavedTeam++) + { + if (lastSavedTeam->mons[0].species == 0) + break; + } + if (i >= HALL_OF_FAME_MAX_TEAMS) + { + struct HallofFameMons *afterTeam = (struct HallofFameMons*)(gDecompressionBuffer); + struct HallofFameMons *beforeTeam = (struct HallofFameMons*)(gDecompressionBuffer); + afterTeam++; + for (i = 0; i < HALL_OF_FAME_MAX_TEAMS - 1; i++, beforeTeam++, afterTeam++) + { + *beforeTeam = *afterTeam; + } + lastSavedTeam--; + } + *lastSavedTeam = *gHofMonsPtr; + + sub_81973C4(0, 0); + AddTextPrinterParametrized(0, 1, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3); + CopyWindowToVram(0, 3); + gTasks[taskId].func = sub_81739C4; +} + +extern u8 TrySavingData(u8); +extern MainCallback gGameContinueCallback; +extern u32 gDamagedSaveSectors; + +void sub_81739C4(u8 taskId) +{ + gGameContinueCallback = sub_81736D8; + if (TrySavingData(3) == 0xFF && gDamagedSaveSectors != 0) + { + UnsetBgTilemapBuffer(1); + UnsetBgTilemapBuffer(3); + FreeAllWindowBuffers(); + + if (gUnknown_0203BCDC != NULL) + FREE_AND_SET_NULL(gUnknown_0203BCDC); + if (gHofMonsPtr != NULL) + FREE_AND_SET_NULL(gHofMonsPtr); + + DestroyTask(taskId); + } + else + { + PlaySE(SE_SAVE); + gTasks[taskId].func = sub_8173A5C; + gTasks[taskId].tFrameCount = 32; + } +} + +void sub_8173A5C(u8 taskId) +{ + if (gTasks[taskId].tFrameCount) + gTasks[taskId].tFrameCount--; + else + gTasks[taskId].func = sub_8173A8C; +} + +void sub_8173A8C(u8 taskId) +{ + gTasks[taskId].func = sub_8173AA8; +} + +extern const s16 sHallOfFame_MonsFullTeamPositions[][4]; +extern const s16 sHallOfFame_MonsHalfTeamPositions[][4]; + +extern u8 sub_818D3E4(u16 species, u32 trainerId, u32 personality, u8 flags, s16 x, s16 y, u8, u16); +extern void sub_8197434(u8, u8); + +void sub_8173AA8(u8 taskId) +{ + u8 spriteId; + s16 xPos, yPos, field4, field6; + + u16 currPokeID = gTasks[taskId].tDisplayedPoke; + struct HallofFameMon* currMon = &gHofMonsPtr->mons[currPokeID]; + + if (gTasks[taskId].tPokesNumber > 3) + { + xPos = sHallOfFame_MonsFullTeamPositions[currPokeID][0]; + yPos = sHallOfFame_MonsFullTeamPositions[currPokeID][1]; + field4 = sHallOfFame_MonsFullTeamPositions[currPokeID][2]; + field6 = sHallOfFame_MonsFullTeamPositions[currPokeID][3]; + } + else + { + xPos = sHallOfFame_MonsHalfTeamPositions[currPokeID][0]; + yPos = sHallOfFame_MonsHalfTeamPositions[currPokeID][1]; + field4 = sHallOfFame_MonsHalfTeamPositions[currPokeID][2]; + field6 = sHallOfFame_MonsHalfTeamPositions[currPokeID][3]; + } + + if (currMon->species == SPECIES_EGG) + field6 += 10; + + spriteId = sub_818D3E4(currMon->species, currMon->tid, currMon->personality, 1, xPos, yPos, currPokeID, 0xFFFF); + gSprites[spriteId].data1 = field4; + gSprites[spriteId].data2 = field6; + gSprites[spriteId].data0 = 0; + gSprites[spriteId].data7 = currMon->species; + gSprites[spriteId].callback = sub_8175120; + gTasks[taskId].tMonSpriteID(currPokeID) = spriteId; + sub_8197434(0, 1); + gTasks[taskId].func = sub_8173BC0; +} -- cgit v1.2.3 From 0f723f7677d52075b4798d9ec6bb4b60d752906f Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 5 Nov 2017 14:55:13 +0100 Subject: halfway through hall of fame --- src/hall_of_fame.c | 668 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 615 insertions(+), 53 deletions(-) (limited to 'src') diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index d63efe21e..35509b53a 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -15,6 +15,10 @@ #include "window.h" #include "bg.h" #include "species.h" +#include "game_stat.h" +#include "blend_palette.h" +#include "string_util.h" +#include "m4a.h" struct HallofFameMon { @@ -43,28 +47,79 @@ extern struct HofGfx *gUnknown_0203BCDC; extern u32 gUnknown_0203BCD4; extern bool8 HasHallOfFameRecords; extern u8 gDecompressionBuffer[]; +extern struct MusicPlayerInfo gMPlay_BGM; +extern MainCallback gGameContinueCallback; +extern u32 gDamagedSaveSectors; #define HALL_OF_FAME_MAX_TEAMS 50 // strings extern const u8 gText_SavingDontTurnOffPower[]; +extern const u8 gText_LeagueChamp[]; +extern const u8 gText_HOFNumber[]; +extern const u8 gText_PickNextCancel[]; +extern const u8 gText_PickCancel[]; +extern const u8 gText_UnkCtrlF800Exit[]; +extern const u8 gText_HOFCorrupted[]; extern void sub_81973C4(u8, u8); extern u16 AddTextPrinterParametrized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor); +extern void sub_8175620(void); +extern u8 TrySavingData(u8); +extern u8 sub_818D3E4(u16 species, u32 trainerId, u32 personality, u8 flags, s16 x, s16 y, u8, u16); +extern void sub_8197434(u8, u8); +extern u16 sub_818D97C(u8 playerGender, u8); +extern u16 sub_818D8AC(u16, u8, s16, s16, u8, u16); +extern const void* stdpal_get(u8); +extern void sub_80987D4(u8, u8, u16, u8); +extern u16 sub_818D820(u16); +extern u16 sub_818D8F0(u16); +extern u16 sub_818D7D8(u16 species, u32 trainerId, u32 personality, u8 arg3, s16 sp0, s16 sp1, u8 sp2, u16 sp3); +extern void sub_8198204(u8 *dst, const u8 *src, u8, u8, u8); +extern bool8 sub_80F9C30(void); +extern void sub_8198314(void); +extern void sub_8137C3C(void); +extern void sub_8198180(const u8 *src, u8, u8); +extern void sub_80F9BF4(u16, u16, u8); +extern void sub_81980F0(u8, u8, u8, u8, u16); +extern void sub_80F9BCC(u16, u16, u8); +extern bool8 sub_80F9C1C(void); // this file's functions void sub_8174EC4(void); void sub_8174F70(void); void sub_8174FAC(void); +void sub_81751FC(void); +static void SetCallback2AfterHallOfFameDisplay(void); bool8 sub_8175024(void); -void sub_817371C(u8 taskId); -void sub_81738BC(u8 taskId); -void sub_8173A8C(u8 taskId); -void sub_81739C4(u8 taskId); -void sub_8173A5C(u8 taskId); -void sub_8173AA8(u8 taskId); -void sub_8173BC0(u8 taskId); +static void Task_Hof_InitMonData(u8 taskId); +static void Task_Hof_InitTeamSaveData(u8 taskId); +static void Task_Hof_SetMonDisplayTask(u8 taskId); +static void Task_Hof_TrySaveData(u8 taskId); +static void Task_Hof_WaitForFrames(u8 taskId); +static void Task_Hof_DisplayMon(u8 taskId); +static void Task_Hof_PrintMonInfoAfterAnimating(u8 taskId); +static void Task_Hof_TryDisplayAnotherMon(u8 taskId); +static void Task_Hof_PaletteFadeAndPrintWelcomeText(u8 taskId); +static void sub_8173DC0(u8 taskId); +static void sub_8173EA4(u8 taskId); +static void sub_8173EE4(u8 taskId); +static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId); +static void Task_Hof_ExitOnKeyPressed(u8 taskId); +static void Task_Hof_HandlePaletteOnExit(u8 taskId); +static void Task_Hof_HandleExit(u8 taskId); +static void Task_HofPC_CopySaveData(u8 taskId); +static void Task_HofPC_PrintDataIsCorrupted(u8 taskId); +static void Task_HofPC_DrawSpritesPrintText(u8 taskId); +static void Task_HofPC_PrintMonInfo(u8 taskId); +static void Task_HofPC_HandleInput(u8 taskId); +static void Task_HofPC_HandlePaletteOnExit(u8 taskId); +static void Task_HofPC_HandleExit(u8 taskId); +static void Task_HofPC_ExitOnButtonPress(u8 taskId); void sub_8175120(struct Sprite *sprite); +void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2); +void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 arg1); +void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2); void VBlankCB_HallOfFame(void) { @@ -82,7 +137,7 @@ void CB2_HallOfFame(void) UpdatePaletteFade(); } -bool8 sub_817357C(void) +static bool8 InitHallOfFameScreen(void) { switch (gMain.state) { @@ -125,34 +180,34 @@ bool8 sub_817357C(void) return TRUE; } -#define tData0 data[0] -#define tDisplayedPoke data[1] +#define tDontSaveData data[0] +#define tDisplayedMonId data[1] #define tPokesNumber data[2] #define tFrameCount data[3] #define tPlayerSpriteID data[4] #define tMonSpriteID(i) data[i + 5] -void sub_8173694(void) +void CB2_DoHallOfFameScreen(void) { - if (!sub_817357C()) + if (!InitHallOfFameScreen()) { - u8 taskId = CreateTask(sub_817371C, 0); - gTasks[taskId].tData0 = 0; + u8 taskId = CreateTask(Task_Hof_InitMonData, 0); + gTasks[taskId].tDontSaveData = FALSE; gHofMonsPtr = AllocZeroed(sizeof(*gHofMonsPtr)); } } -void sub_81736D8(void) +void CB2_DoHallOfFameScreenDontSaveData(void) { - if (!sub_817357C()) + if (!InitHallOfFameScreen()) { - u8 taskId = CreateTask(sub_817371C, 0); - gTasks[taskId].tData0 = 1; + u8 taskId = CreateTask(Task_Hof_InitMonData, 0); + gTasks[taskId].tDontSaveData = TRUE; gHofMonsPtr = AllocZeroed(sizeof(*gHofMonsPtr)); } } -void sub_817371C(u8 taskId) +static void Task_Hof_InitMonData(u8 taskId) { u16 i, j; @@ -185,7 +240,7 @@ void sub_817371C(u8 taskId) } gUnknown_0203BCD4 = 0; - gTasks[taskId].tDisplayedPoke = 0; + gTasks[taskId].tDisplayedMonId = 0; gTasks[taskId].tPlayerSpriteID = 0xFF; for (i = 0; i < 6; i++) @@ -193,13 +248,13 @@ void sub_817371C(u8 taskId) gTasks[taskId].tMonSpriteID(i) = 0xFF; } - if (gTasks[taskId].tData0) - gTasks[taskId].func = sub_8173A8C; + if (gTasks[taskId].tDontSaveData) + gTasks[taskId].func = Task_Hof_SetMonDisplayTask; else - gTasks[taskId].func = sub_81738BC; + gTasks[taskId].func = Task_Hof_InitTeamSaveData; } -void sub_81738BC(u8 taskId) +static void Task_Hof_InitTeamSaveData(u8 taskId) { u16 i; struct HallofFameMons* lastSavedTeam = (struct HallofFameMons*)(gDecompressionBuffer); @@ -235,16 +290,12 @@ void sub_81738BC(u8 taskId) sub_81973C4(0, 0); AddTextPrinterParametrized(0, 1, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3); CopyWindowToVram(0, 3); - gTasks[taskId].func = sub_81739C4; + gTasks[taskId].func = Task_Hof_TrySaveData; } -extern u8 TrySavingData(u8); -extern MainCallback gGameContinueCallback; -extern u32 gDamagedSaveSectors; - -void sub_81739C4(u8 taskId) +static void Task_Hof_TrySaveData(u8 taskId) { - gGameContinueCallback = sub_81736D8; + gGameContinueCallback = CB2_DoHallOfFameScreenDontSaveData; if (TrySavingData(3) == 0xFF && gDamagedSaveSectors != 0) { UnsetBgTilemapBuffer(1); @@ -261,63 +312,574 @@ void sub_81739C4(u8 taskId) else { PlaySE(SE_SAVE); - gTasks[taskId].func = sub_8173A5C; + gTasks[taskId].func = Task_Hof_WaitForFrames; gTasks[taskId].tFrameCount = 32; } } -void sub_8173A5C(u8 taskId) +static void Task_Hof_WaitForFrames(u8 taskId) { if (gTasks[taskId].tFrameCount) gTasks[taskId].tFrameCount--; else - gTasks[taskId].func = sub_8173A8C; + gTasks[taskId].func = Task_Hof_SetMonDisplayTask; } -void sub_8173A8C(u8 taskId) +static void Task_Hof_SetMonDisplayTask(u8 taskId) { - gTasks[taskId].func = sub_8173AA8; + gTasks[taskId].func = Task_Hof_DisplayMon; } extern const s16 sHallOfFame_MonsFullTeamPositions[][4]; extern const s16 sHallOfFame_MonsHalfTeamPositions[][4]; -extern u8 sub_818D3E4(u16 species, u32 trainerId, u32 personality, u8 flags, s16 x, s16 y, u8, u16); -extern void sub_8197434(u8, u8); - -void sub_8173AA8(u8 taskId) +static void Task_Hof_DisplayMon(u8 taskId) { u8 spriteId; s16 xPos, yPos, field4, field6; - u16 currPokeID = gTasks[taskId].tDisplayedPoke; - struct HallofFameMon* currMon = &gHofMonsPtr->mons[currPokeID]; + u16 currMonId = gTasks[taskId].tDisplayedMonId; + struct HallofFameMon* currMon = &gHofMonsPtr->mons[currMonId]; if (gTasks[taskId].tPokesNumber > 3) { - xPos = sHallOfFame_MonsFullTeamPositions[currPokeID][0]; - yPos = sHallOfFame_MonsFullTeamPositions[currPokeID][1]; - field4 = sHallOfFame_MonsFullTeamPositions[currPokeID][2]; - field6 = sHallOfFame_MonsFullTeamPositions[currPokeID][3]; + xPos = sHallOfFame_MonsFullTeamPositions[currMonId][0]; + yPos = sHallOfFame_MonsFullTeamPositions[currMonId][1]; + field4 = sHallOfFame_MonsFullTeamPositions[currMonId][2]; + field6 = sHallOfFame_MonsFullTeamPositions[currMonId][3]; } else { - xPos = sHallOfFame_MonsHalfTeamPositions[currPokeID][0]; - yPos = sHallOfFame_MonsHalfTeamPositions[currPokeID][1]; - field4 = sHallOfFame_MonsHalfTeamPositions[currPokeID][2]; - field6 = sHallOfFame_MonsHalfTeamPositions[currPokeID][3]; + xPos = sHallOfFame_MonsHalfTeamPositions[currMonId][0]; + yPos = sHallOfFame_MonsHalfTeamPositions[currMonId][1]; + field4 = sHallOfFame_MonsHalfTeamPositions[currMonId][2]; + field6 = sHallOfFame_MonsHalfTeamPositions[currMonId][3]; } if (currMon->species == SPECIES_EGG) field6 += 10; - spriteId = sub_818D3E4(currMon->species, currMon->tid, currMon->personality, 1, xPos, yPos, currPokeID, 0xFFFF); + spriteId = sub_818D3E4(currMon->species, currMon->tid, currMon->personality, 1, xPos, yPos, currMonId, 0xFFFF); gSprites[spriteId].data1 = field4; gSprites[spriteId].data2 = field6; gSprites[spriteId].data0 = 0; gSprites[spriteId].data7 = currMon->species; gSprites[spriteId].callback = sub_8175120; - gTasks[taskId].tMonSpriteID(currPokeID) = spriteId; + gTasks[taskId].tMonSpriteID(currMonId) = spriteId; sub_8197434(0, 1); - gTasks[taskId].func = sub_8173BC0; + gTasks[taskId].func = Task_Hof_PrintMonInfoAfterAnimating; +} + +static void Task_Hof_PrintMonInfoAfterAnimating(u8 taskId) +{ + u16 currMonId = gTasks[taskId].tDisplayedMonId; + struct HallofFameMon* currMon = &gHofMonsPtr->mons[currMonId]; + struct Sprite *monSprite = &gSprites[gTasks[taskId].tMonSpriteID(currMonId)]; + + if (monSprite->callback == SpriteCallbackDummy) + { + monSprite->oam.affineMode = 0; + HallOfFame_PrintMonInfo(currMon, 0, 14); + gTasks[taskId].tFrameCount = 120; + gTasks[taskId].func = Task_Hof_TryDisplayAnotherMon; + } +} + +static void Task_Hof_TryDisplayAnotherMon(u8 taskId) +{ + u16 currPokeID = gTasks[taskId].tDisplayedMonId; + struct HallofFameMon* currMon = &gHofMonsPtr->mons[currPokeID]; + + if (gTasks[taskId].tFrameCount != 0) + { + gTasks[taskId].tFrameCount--; + } + else + { + gUnknown_0203BCD4 |= (0x10000 << gSprites[gTasks[taskId].tMonSpriteID(currPokeID)].oam.paletteNum); + if (gTasks[taskId].tDisplayedMonId <= 4 && currMon[1].species != SPECIES_NONE) // there is another pokemon to display + { + gTasks[taskId].tDisplayedMonId++; + BeginNormalPaletteFade(gUnknown_0203BCD4, 0, 12, 12, 0x63B0); + gSprites[gTasks[taskId].tMonSpriteID(currPokeID)].oam.priority = 1; + gTasks[taskId].func = Task_Hof_DisplayMon; + } + else + { + gTasks[taskId].func = Task_Hof_PaletteFadeAndPrintWelcomeText; + } + } +} + +static void Task_Hof_PaletteFadeAndPrintWelcomeText(u8 taskID) +{ + u16 i; + + BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0, 0); + for (i = 0; i < 6; i++) + { + if (gTasks[taskID].tMonSpriteID(i) != 0xFF) + gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 0; + } + + HallOfFame_PrintWelcomeText(0, 15); + PlaySE(SE_DENDOU); + gTasks[taskID].tFrameCount = 400; + gTasks[taskID].func = sub_8173DC0; +} + +static void sub_8173DC0(u8 taskID) +{ + if (gTasks[taskID].tFrameCount != 0) + { + gTasks[taskID].tFrameCount--; + if ((gTasks[taskID].tFrameCount & 3) == 0 && gTasks[taskID].tFrameCount > 110) + sub_81751FC(); + } + else + { + u16 i; + for (i = 0; i < 6; i++) + { + if (gTasks[taskID].tMonSpriteID(i) != 0xFF) + gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 1; + } + BeginNormalPaletteFade(gUnknown_0203BCD4, 0, 12, 12, 0x63B0); + FillWindowPixelBuffer(0, 0); + CopyWindowToVram(0, 3); + gTasks[taskID].tFrameCount = 7; + gTasks[taskID].func = sub_8173EA4; + } +} + +static void sub_8173EA4(u8 taskID) +{ + if (gTasks[taskID].tFrameCount >= 16) + { + gTasks[taskID].func = sub_8173EE4; + } + else + { + gTasks[taskID].tFrameCount++; + SetGpuReg(REG_OFFSET_BLDALPHA, gTasks[taskID].tFrameCount * 256); + } +} + +extern const struct WindowTemplate gUnknown_085E5380; + +static void sub_8173EE4(u8 taskID) +{ + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + ShowBg(0); + ShowBg(1); + ShowBg(3); + gTasks[taskID].tPlayerSpriteID = sub_818D8AC(sub_818D97C(gSaveBlock2Ptr->playerGender, 1), 1, 120, 72, 6, 0xFFFF); + AddWindow(&gUnknown_085E5380); + sub_80987D4(1, gSaveBlock2Ptr->optionsWindowFrameType, 0x21D, 0xD0); + LoadPalette(stdpal_get(1), 0xE0, 0x20); + gTasks[taskID].tFrameCount = 120; + gTasks[taskID].func = Task_Hof_WaitAndPrintPlayerInfo; +} + +static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskID) +{ + if (gTasks[taskID].tFrameCount != 0) + { + gTasks[taskID].tFrameCount--; + } + else if (gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x != 192) + { + gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x++; + } + else + { + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); + HallOfFame_PrintPlayerInfo(1, 2); + sub_81973C4(0, 0); + AddTextPrinterParametrized(0, 1, gText_LeagueChamp, 0, NULL, 2, 1, 3); + CopyWindowToVram(0, 3); + gTasks[taskID].func = Task_Hof_ExitOnKeyPressed; + } +} + +static void Task_Hof_ExitOnKeyPressed(u8 taskID) +{ + if (gMain.newKeys & A_BUTTON) + { + FadeOutBGM(4); + gTasks[taskID].func = Task_Hof_HandlePaletteOnExit; + } +} + +static void Task_Hof_HandlePaletteOnExit(u8 taskID) +{ + CpuCopy16(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); + BeginNormalPaletteFade(-1, 8, 0, 0x10, 0); + gTasks[taskID].func = Task_Hof_HandleExit; } + +static void Task_Hof_HandleExit(u8 taskID) +{ + if (!gPaletteFade.active) + { + s32 i; + + for (i = 0; i < 6; i++) + { + u8 spriteId = gTasks[taskID].tMonSpriteID(i); + if (spriteId != 0xFF) + { + FreeOamMatrix(gSprites[spriteId].oam.matrixNum); + sub_818D820(spriteId); + } + } + + sub_818D8F0(gTasks[taskID].tPlayerSpriteID); + HideBg(0); + HideBg(1); + HideBg(3); + FreeAllWindowBuffers(); + UnsetBgTilemapBuffer(1); + UnsetBgTilemapBuffer(3); + ResetBgsAndClearDma3BusyFlags(0); + DestroyTask(taskID); + + if (gUnknown_0203BCDC != NULL) + FREE_AND_SET_NULL(gUnknown_0203BCDC); + if (gHofMonsPtr != NULL) + FREE_AND_SET_NULL(gHofMonsPtr); + + SetCallback2AfterHallOfFameDisplay(); + } +} + +static void SetCallback2AfterHallOfFameDisplay(void) +{ + SetMainCallback2(sub_8175620); +} + +#undef tDontSaveData +#undef tDisplayedPoke +#undef tPokesNumber +#undef tFrameCount +#undef tPlayerSpriteID +#undef tMonSpriteID + +#define tCurrTeamNo data[0] +#define tCurrPageNo data[1] +#define tCurrPokeID data[2] +#define tPokesNo data[4] +#define tMonSpriteID(i) data[i + 5] + +extern const struct HallofFameMon sDummyFameMon; + +void CB2_DoHallOfFamePC(void) +{ + switch (gMain.state) + { + case 0: + default: + SetVBlankCallback(NULL); + sub_8174EC4(); + gUnknown_0203BCDC = AllocZeroed(sizeof(*gUnknown_0203BCDC)); + gMain.state = 1; + break; + case 1: + sub_8174F70(); + gMain.state++; + break; + case 2: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + sub_8174FAC(); + gMain.state++; + break; + case 3: + if (!sub_8175024()) + { + struct HallofFameMons *fameMons = (struct HallofFameMons*)(gDecompressionBuffer); + fameMons->mons[0] = sDummyFameMon; + sub_80F9BCC(0, 0, 0); + SetVBlankCallback(VBlankCB_HallOfFame); + gMain.state++; + } + break; + case 4: + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + if (!sub_80F9C1C()) + gMain.state++; + break; + case 5: + { + u8 taskId, i; + + SetGpuReg(REG_OFFSET_BLDCNT, 0x3F42); + SetGpuReg(REG_OFFSET_BLDALPHA, 0x710); + SetGpuReg(REG_OFFSET_BLDY, 0); + taskId = CreateTask(Task_HofPC_CopySaveData, 0); + + for (i = 0; i < 6; i++) + { + gTasks[taskId].tMonSpriteID(i) = 0xFF; + } + + gHofMonsPtr = AllocZeroed(0x2000); + SetMainCallback2(CB2_HallOfFame); + } + break; + } +} + +static void Task_HofPC_CopySaveData(u8 taskID) +{ + sub_81980F0(0, 0x1E, 0, 0xC, 0x226); + if (sub_81534D0(3) != 1) + { + gTasks[taskID].func = Task_HofPC_PrintDataIsCorrupted; + } + else + { + u16 i; + struct HallofFameMons* savedTeams; + + CpuCopy16(gDecompressionBuffer, gHofMonsPtr, 0x2000); + savedTeams = gHofMonsPtr; + for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, savedTeams++) + { + if (savedTeams->mons[0].species == SPECIES_NONE) + break; + } + + if (i < HALL_OF_FAME_MAX_TEAMS) + gTasks[taskID].tCurrTeamNo = i - 1; + else + gTasks[taskID].tCurrTeamNo = HALL_OF_FAME_MAX_TEAMS - 1; + + gTasks[taskID].tCurrPageNo = GetGameStat(GAME_STAT_ENTERED_HOF); + + gTasks[taskID].func = Task_HofPC_DrawSpritesPrintText; + } +} + +static void Task_HofPC_DrawSpritesPrintText(u8 taskID) +{ + struct HallofFameMons* savedTeams = gHofMonsPtr; + struct HallofFameMon* currMon; + u16 i; + + for (i = 0; i < gTasks[taskID].tCurrTeamNo; i++) + savedTeams++; + + currMon = &savedTeams->mons[0]; + gUnknown_0203BCD4 = 0; + gTasks[taskID].tCurrPokeID = 0; + gTasks[taskID].tPokesNo = 0; + + for (i = 0; i < 6; i++, currMon++) + { + if (currMon->species != 0) + gTasks[taskID].tPokesNo++; + } + + currMon = &savedTeams->mons[0]; + + for (i = 0; i < 6; i++, currMon++) + { + if (currMon->species != 0) + { + u16 spriteID; + s16 posX, posY; + + if (gTasks[taskID].tPokesNo > 3) + { + posX = sHallOfFame_MonsFullTeamPositions[i][2]; + posY = sHallOfFame_MonsFullTeamPositions[i][3]; + } + else + { + posX = sHallOfFame_MonsHalfTeamPositions[i][2]; + posY = sHallOfFame_MonsHalfTeamPositions[i][3]; + } + + if (currMon->species == SPECIES_EGG) + posY += 10; + + spriteID = sub_818D7D8(currMon->species, currMon->tid, currMon->personality, 1, posX, posY, i, 0xFFFF); + gSprites[spriteID].oam.priority = 1; + gTasks[taskID].tMonSpriteID(i) = spriteID; + } + else + { + gTasks[taskID].tMonSpriteID(i) = 0xFF; + } + } + + BlendPalettes(0xFFFF0000, 0xC, 0x63B0); + + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskID].tCurrPageNo, STR_CONV_MODE_RIGHT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gText_HOFNumber); + + if (gTasks[taskID].tCurrTeamNo <= 0) + sub_8198204(gStringVar4, gText_PickCancel, 0, 0, 1); + else + sub_8198204(gStringVar4, gText_PickNextCancel, 0, 0, 1); + + gTasks[taskID].func = Task_HofPC_PrintMonInfo; +} + +static void Task_HofPC_PrintMonInfo(u8 taskID) +{ + struct HallofFameMons* savedTeams = gHofMonsPtr; + struct HallofFameMon* currMon; + u16 i; + u16 currMonID; + + for (i = 0; i < gTasks[taskID].tCurrTeamNo; i++) + savedTeams++; + + for (i = 0; i < 6; i++) + { + u16 spriteID = gTasks[taskID].tMonSpriteID(i); + if (spriteID != 0xFF) + gSprites[spriteID].oam.priority = 1; + } + + currMonID = gTasks[taskID].tMonSpriteID(gTasks[taskID].tCurrPokeID); + gSprites[currMonID].oam.priority = 0; + gUnknown_0203BCD4 = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000; + BlendPalettesUnfaded(gUnknown_0203BCD4, 0xC, 0x63B0); + + currMon = &savedTeams->mons[gTasks[taskID].tCurrPokeID]; + if (currMon->species != SPECIES_EGG) + { + StopCryAndClearCrySongs(); + PlayCry1(currMon->species, 0); + } + HallOfFame_PrintMonInfo(currMon, 0, 14); + + gTasks[taskID].func = Task_HofPC_HandleInput; +} + +static void Task_HofPC_HandleInput(u8 taskID) +{ + u16 i; + + if (gMain.newKeys & A_BUTTON) + { + if (gTasks[taskID].tCurrTeamNo != 0) // prepare another team to view + { + gTasks[taskID].tCurrTeamNo--; + for (i = 0; i < 6; i++) + { + u8 spriteID = gTasks[taskID].tMonSpriteID(i); + if (spriteID != 0xFF) + { + sub_818D820(spriteID); + gTasks[taskID].tMonSpriteID(i) = 0xFF; + } + } + if (gTasks[taskID].tCurrPageNo != 0) + gTasks[taskID].tCurrPageNo--; + gTasks[taskID].func = Task_HofPC_DrawSpritesPrintText; + } + else // no more teams to view, turn off hall of fame PC + { + if (IsCryPlayingOrClearCrySongs()) + { + StopCryAndClearCrySongs(); + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); + } + gTasks[taskID].func = Task_HofPC_HandlePaletteOnExit; + } + } + else if (gMain.newKeys & B_BUTTON) // turn off hall of fame PC + { + if (IsCryPlayingOrClearCrySongs()) + { + StopCryAndClearCrySongs(); + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); + } + gTasks[taskID].func = Task_HofPC_HandlePaletteOnExit; + } + else if (gMain.newKeys & DPAD_UP && gTasks[taskID].tCurrPokeID != 0) // change mon -1 + { + gTasks[taskID].tCurrPokeID--; + gTasks[taskID].func = Task_HofPC_PrintMonInfo; + } + else if (gMain.newKeys & DPAD_DOWN && gTasks[taskID].tCurrPokeID < gTasks[taskID].tPokesNo - 1) // change mon +1 + { + gTasks[taskID].tCurrPokeID++; + gTasks[taskID].func = Task_HofPC_PrintMonInfo; + } +} + +static void Task_HofPC_HandlePaletteOnExit(u8 taskID) +{ + struct HallofFameMons* fameMons; + + CpuCopy16(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); + fameMons = (struct HallofFameMons*)(gDecompressionBuffer); + fameMons->mons[0] = sDummyFameMon; + sub_80F9BF4(0, 0, 0); + gTasks[taskID].func = Task_HofPC_HandleExit; +} + +static void Task_HofPC_HandleExit(u8 taskID) +{ + if (!sub_80F9C30()) + { + u8 i; + + for (i = 0; i < 6; i++) + { + u16 spriteId = gTasks[taskID].tMonSpriteID(i); + if (spriteId != 0xFF) + { + sub_818D820(spriteId); + gTasks[taskID].tMonSpriteID(i) = 0xFF; + } + } + + HideBg(0); + HideBg(1); + HideBg(3); + sub_8198314(); + FreeAllWindowBuffers(); + UnsetBgTilemapBuffer(1); + UnsetBgTilemapBuffer(3); + ResetBgsAndClearDma3BusyFlags(0); + DestroyTask(taskID); + + if (gUnknown_0203BCDC != NULL) + FREE_AND_SET_NULL(gUnknown_0203BCDC); + if (gHofMonsPtr != NULL) + FREE_AND_SET_NULL(gHofMonsPtr); + + sub_8137C3C(); + } +} + +static void Task_HofPC_PrintDataIsCorrupted(u8 taskId) +{ + sub_8198180(gText_UnkCtrlF800Exit, 8, 1); + sub_81973C4(0, 0); + AddTextPrinterParametrized(0, 1, gText_HOFCorrupted, 0, NULL, 2, 1, 3); + CopyWindowToVram(0, 3); + gTasks[taskId].func = Task_HofPC_ExitOnButtonPress; +} + +static void Task_HofPC_ExitOnButtonPress(u8 taskID) +{ + if (gMain.newKeys & A_BUTTON) + gTasks[taskID].func = Task_HofPC_HandlePaletteOnExit; +} + +#undef tCurrTeamNo +#undef tCurrPageNo +#undef tCurrPokeID +#undef tPokesNo +#undef tMonSpriteID -- cgit v1.2.3 From a2263207bf64439c9ad35ad5b8f0d5c5ea289d30 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 6 Nov 2017 17:27:39 +0100 Subject: hall of fame is decompiled --- src/hall_of_fame.c | 718 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 597 insertions(+), 121 deletions(-) (limited to 'src') diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 35509b53a..6e9cac28b 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -19,6 +19,11 @@ #include "blend_palette.h" #include "string_util.h" #include "m4a.h" +#include "international_string_util.h" +#include "unknown_task.h" +#include "trig.h" +#include "rng.h" +#include "event_data.h" struct HallofFameMon { @@ -38,8 +43,25 @@ extern struct HallofFameMons *gHofMonsPtr; struct HofGfx { - u16 field_0; - u8 field_2[0x2010]; + u16 state; + u8 field_2; + u8 field_3; + u8 field_4; + u8 field_5; + u8 field_6; + u8 field_7; + u8 field_8; + u8 field_9; + u8 field_A; + u8 field_B; + u8 field_C; + u8 field_D; + u8 field_E; + u8 field_F; + u8 field_10; + u8 field_11; + u8 tilemap1[0x1000]; + u8 tilemap2[0x1000]; }; extern struct HofGfx *gUnknown_0203BCDC; @@ -50,9 +72,24 @@ extern u8 gDecompressionBuffer[]; extern struct MusicPlayerInfo gMPlay_BGM; extern MainCallback gGameContinueCallback; extern u32 gDamagedSaveSectors; +extern u8 gReservedSpritePaletteCount; #define HALL_OF_FAME_MAX_TEAMS 50 +extern const u8 gUnknown_085E53FC[]; +extern const struct SpriteTemplate gUnknown_085E54D0; +extern const struct BgTemplate gUnknown_085E5374[3]; +extern const struct CompressedSpriteSheet sHallOfFame_ConfettiSpriteSheet; +extern const struct CompressedSpritePalette sHallOfFame_ConfettiSpritePalette; +extern const u16 gHallOfFame_Pal[]; +extern const u8 gUnknown_085E5388[]; +extern const u8 gUnknown_085E538C[]; +extern const struct HallofFameMon sDummyFameMon; +extern const struct WindowTemplate gUnknown_085E5380; +extern const s16 sHallOfFame_MonsFullTeamPositions[][4]; +extern const s16 sHallOfFame_MonsHalfTeamPositions[][4]; +extern const u32 gUnknown_085E5508[]; + // strings extern const u8 gText_SavingDontTurnOffPower[]; extern const u8 gText_LeagueChamp[]; @@ -61,6 +98,12 @@ extern const u8 gText_PickNextCancel[]; extern const u8 gText_PickCancel[]; extern const u8 gText_UnkCtrlF800Exit[]; extern const u8 gText_HOFCorrupted[]; +extern const u8 gText_WelcomeToHOF[]; +extern const u8 gText_Number[]; +extern const u8 gText_Level[]; +extern const u8 gText_IDNumber[]; +extern const u8 gText_Name[]; +extern const u8 gText_MainMenuTime[]; extern void sub_81973C4(u8, u8); extern u16 AddTextPrinterParametrized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor); @@ -84,12 +127,23 @@ extern void sub_80F9BF4(u16, u16, u8); extern void sub_81980F0(u8, u8, u8, u8, u16); extern void sub_80F9BCC(u16, u16, u8); extern bool8 sub_80F9C1C(void); +extern u16 SpeciesToPokedexNum(u16 species); +extern void dp13_810BB8C(void); +extern void sub_81971D0(void); +extern void sub_8197200(void); +extern void sub_8152254(void); +extern void sub_81525D0(u8); +extern void sub_8152438(u8, void*); +extern void sub_8152474(u8, u8, u8); +extern void sub_81522D4(void); +extern bool32 sub_81521C0(u8); +extern u8 sub_81524C4(const void *arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, u8 arg5, s16 arg6); // this file's functions -void sub_8174EC4(void); +void ClearVramOamPltt_LoadHofPal(void); void sub_8174F70(void); void sub_8174FAC(void); -void sub_81751FC(void); +bool8 sub_81751FC(void); static void SetCallback2AfterHallOfFameDisplay(void); bool8 sub_8175024(void); static void Task_Hof_InitMonData(u8 taskId); @@ -116,10 +170,11 @@ static void Task_HofPC_HandleInput(u8 taskId); static void Task_HofPC_HandlePaletteOnExit(u8 taskId); static void Task_HofPC_HandleExit(u8 taskId); static void Task_HofPC_ExitOnButtonPress(u8 taskId); -void sub_8175120(struct Sprite *sprite); +void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite); void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2); -void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 arg1); +void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2); void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2); +void sub_8175364(u8 taskId); void VBlankCB_HallOfFame(void) { @@ -143,7 +198,7 @@ static bool8 InitHallOfFameScreen(void) { case 0: SetVBlankCallback(NULL); - sub_8174EC4(); + ClearVramOamPltt_LoadHofPal(); gUnknown_0203BCDC = AllocZeroed(sizeof(*gUnknown_0203BCDC)); gMain.state = 1; break; @@ -156,7 +211,7 @@ static bool8 InitHallOfFameScreen(void) SetGpuReg(REG_OFFSET_BLDALPHA, 0x710); SetGpuReg(REG_OFFSET_BLDY, 0); sub_8174FAC(); - gUnknown_0203BCDC->field_0 = 0; + gUnknown_0203BCDC->state = 0; gMain.state++; break; case 3: @@ -185,7 +240,7 @@ static bool8 InitHallOfFameScreen(void) #define tPokesNumber data[2] #define tFrameCount data[3] #define tPlayerSpriteID data[4] -#define tMonSpriteID(i) data[i + 5] +#define tMonSpriteId(i) data[i + 5] void CB2_DoHallOfFameScreen(void) { @@ -245,7 +300,7 @@ static void Task_Hof_InitMonData(u8 taskId) for (i = 0; i < 6; i++) { - gTasks[taskId].tMonSpriteID(i) = 0xFF; + gTasks[taskId].tMonSpriteId(i) = 0xFF; } if (gTasks[taskId].tDontSaveData) @@ -330,8 +385,9 @@ static void Task_Hof_SetMonDisplayTask(u8 taskId) gTasks[taskId].func = Task_Hof_DisplayMon; } -extern const s16 sHallOfFame_MonsFullTeamPositions[][4]; -extern const s16 sHallOfFame_MonsHalfTeamPositions[][4]; +#define tDestinationX data1 +#define tDestinationY data2 +#define tSpecies data7 static void Task_Hof_DisplayMon(u8 taskId) { @@ -360,12 +416,12 @@ static void Task_Hof_DisplayMon(u8 taskId) field6 += 10; spriteId = sub_818D3E4(currMon->species, currMon->tid, currMon->personality, 1, xPos, yPos, currMonId, 0xFFFF); - gSprites[spriteId].data1 = field4; - gSprites[spriteId].data2 = field6; + gSprites[spriteId].tDestinationX = field4; + gSprites[spriteId].tDestinationY = field6; gSprites[spriteId].data0 = 0; - gSprites[spriteId].data7 = currMon->species; - gSprites[spriteId].callback = sub_8175120; - gTasks[taskId].tMonSpriteID(currMonId) = spriteId; + gSprites[spriteId].tSpecies = currMon->species; + gSprites[spriteId].callback = SpriteCB_GetOnScreenAndAnimate; + gTasks[taskId].tMonSpriteId(currMonId) = spriteId; sub_8197434(0, 1); gTasks[taskId].func = Task_Hof_PrintMonInfoAfterAnimating; } @@ -374,7 +430,7 @@ static void Task_Hof_PrintMonInfoAfterAnimating(u8 taskId) { u16 currMonId = gTasks[taskId].tDisplayedMonId; struct HallofFameMon* currMon = &gHofMonsPtr->mons[currMonId]; - struct Sprite *monSprite = &gSprites[gTasks[taskId].tMonSpriteID(currMonId)]; + struct Sprite *monSprite = &gSprites[gTasks[taskId].tMonSpriteId(currMonId)]; if (monSprite->callback == SpriteCallbackDummy) { @@ -396,12 +452,12 @@ static void Task_Hof_TryDisplayAnotherMon(u8 taskId) } else { - gUnknown_0203BCD4 |= (0x10000 << gSprites[gTasks[taskId].tMonSpriteID(currPokeID)].oam.paletteNum); + gUnknown_0203BCD4 |= (0x10000 << gSprites[gTasks[taskId].tMonSpriteId(currPokeID)].oam.paletteNum); if (gTasks[taskId].tDisplayedMonId <= 4 && currMon[1].species != SPECIES_NONE) // there is another pokemon to display { gTasks[taskId].tDisplayedMonId++; BeginNormalPaletteFade(gUnknown_0203BCD4, 0, 12, 12, 0x63B0); - gSprites[gTasks[taskId].tMonSpriteID(currPokeID)].oam.priority = 1; + gSprites[gTasks[taskId].tMonSpriteId(currPokeID)].oam.priority = 1; gTasks[taskId].func = Task_Hof_DisplayMon; } else @@ -411,29 +467,29 @@ static void Task_Hof_TryDisplayAnotherMon(u8 taskId) } } -static void Task_Hof_PaletteFadeAndPrintWelcomeText(u8 taskID) +static void Task_Hof_PaletteFadeAndPrintWelcomeText(u8 taskId) { u16 i; BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0, 0); for (i = 0; i < 6; i++) { - if (gTasks[taskID].tMonSpriteID(i) != 0xFF) - gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 0; + if (gTasks[taskId].tMonSpriteId(i) != 0xFF) + gSprites[gTasks[taskId].tMonSpriteId(i)].oam.priority = 0; } HallOfFame_PrintWelcomeText(0, 15); PlaySE(SE_DENDOU); - gTasks[taskID].tFrameCount = 400; - gTasks[taskID].func = sub_8173DC0; + gTasks[taskId].tFrameCount = 400; + gTasks[taskId].func = sub_8173DC0; } -static void sub_8173DC0(u8 taskID) +static void sub_8173DC0(u8 taskId) { - if (gTasks[taskID].tFrameCount != 0) + if (gTasks[taskId].tFrameCount != 0) { - gTasks[taskID].tFrameCount--; - if ((gTasks[taskID].tFrameCount & 3) == 0 && gTasks[taskID].tFrameCount > 110) + gTasks[taskId].tFrameCount--; + if ((gTasks[taskId].tFrameCount & 3) == 0 && gTasks[taskId].tFrameCount > 110) sub_81751FC(); } else @@ -441,55 +497,53 @@ static void sub_8173DC0(u8 taskID) u16 i; for (i = 0; i < 6; i++) { - if (gTasks[taskID].tMonSpriteID(i) != 0xFF) - gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 1; + if (gTasks[taskId].tMonSpriteId(i) != 0xFF) + gSprites[gTasks[taskId].tMonSpriteId(i)].oam.priority = 1; } BeginNormalPaletteFade(gUnknown_0203BCD4, 0, 12, 12, 0x63B0); FillWindowPixelBuffer(0, 0); CopyWindowToVram(0, 3); - gTasks[taskID].tFrameCount = 7; - gTasks[taskID].func = sub_8173EA4; + gTasks[taskId].tFrameCount = 7; + gTasks[taskId].func = sub_8173EA4; } } -static void sub_8173EA4(u8 taskID) +static void sub_8173EA4(u8 taskId) { - if (gTasks[taskID].tFrameCount >= 16) + if (gTasks[taskId].tFrameCount >= 16) { - gTasks[taskID].func = sub_8173EE4; + gTasks[taskId].func = sub_8173EE4; } else { - gTasks[taskID].tFrameCount++; - SetGpuReg(REG_OFFSET_BLDALPHA, gTasks[taskID].tFrameCount * 256); + gTasks[taskId].tFrameCount++; + SetGpuReg(REG_OFFSET_BLDALPHA, gTasks[taskId].tFrameCount * 256); } } -extern const struct WindowTemplate gUnknown_085E5380; - -static void sub_8173EE4(u8 taskID) +static void sub_8173EE4(u8 taskId) { SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); ShowBg(0); ShowBg(1); ShowBg(3); - gTasks[taskID].tPlayerSpriteID = sub_818D8AC(sub_818D97C(gSaveBlock2Ptr->playerGender, 1), 1, 120, 72, 6, 0xFFFF); + gTasks[taskId].tPlayerSpriteID = sub_818D8AC(sub_818D97C(gSaveBlock2Ptr->playerGender, 1), 1, 120, 72, 6, 0xFFFF); AddWindow(&gUnknown_085E5380); sub_80987D4(1, gSaveBlock2Ptr->optionsWindowFrameType, 0x21D, 0xD0); LoadPalette(stdpal_get(1), 0xE0, 0x20); - gTasks[taskID].tFrameCount = 120; - gTasks[taskID].func = Task_Hof_WaitAndPrintPlayerInfo; + gTasks[taskId].tFrameCount = 120; + gTasks[taskId].func = Task_Hof_WaitAndPrintPlayerInfo; } -static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskID) +static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId) { - if (gTasks[taskID].tFrameCount != 0) + if (gTasks[taskId].tFrameCount != 0) { - gTasks[taskID].tFrameCount--; + gTasks[taskId].tFrameCount--; } - else if (gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x != 192) + else if (gSprites[gTasks[taskId].tPlayerSpriteID].pos1.x != 192) { - gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x++; + gSprites[gTasks[taskId].tPlayerSpriteID].pos1.x++; } else { @@ -498,27 +552,27 @@ static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskID) sub_81973C4(0, 0); AddTextPrinterParametrized(0, 1, gText_LeagueChamp, 0, NULL, 2, 1, 3); CopyWindowToVram(0, 3); - gTasks[taskID].func = Task_Hof_ExitOnKeyPressed; + gTasks[taskId].func = Task_Hof_ExitOnKeyPressed; } } -static void Task_Hof_ExitOnKeyPressed(u8 taskID) +static void Task_Hof_ExitOnKeyPressed(u8 taskId) { if (gMain.newKeys & A_BUTTON) { FadeOutBGM(4); - gTasks[taskID].func = Task_Hof_HandlePaletteOnExit; + gTasks[taskId].func = Task_Hof_HandlePaletteOnExit; } } -static void Task_Hof_HandlePaletteOnExit(u8 taskID) +static void Task_Hof_HandlePaletteOnExit(u8 taskId) { CpuCopy16(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); BeginNormalPaletteFade(-1, 8, 0, 0x10, 0); - gTasks[taskID].func = Task_Hof_HandleExit; + gTasks[taskId].func = Task_Hof_HandleExit; } -static void Task_Hof_HandleExit(u8 taskID) +static void Task_Hof_HandleExit(u8 taskId) { if (!gPaletteFade.active) { @@ -526,7 +580,7 @@ static void Task_Hof_HandleExit(u8 taskID) for (i = 0; i < 6; i++) { - u8 spriteId = gTasks[taskID].tMonSpriteID(i); + u8 spriteId = gTasks[taskId].tMonSpriteId(i); if (spriteId != 0xFF) { FreeOamMatrix(gSprites[spriteId].oam.matrixNum); @@ -534,7 +588,7 @@ static void Task_Hof_HandleExit(u8 taskID) } } - sub_818D8F0(gTasks[taskID].tPlayerSpriteID); + sub_818D8F0(gTasks[taskId].tPlayerSpriteID); HideBg(0); HideBg(1); HideBg(3); @@ -542,7 +596,7 @@ static void Task_Hof_HandleExit(u8 taskID) UnsetBgTilemapBuffer(1); UnsetBgTilemapBuffer(3); ResetBgsAndClearDma3BusyFlags(0); - DestroyTask(taskID); + DestroyTask(taskId); if (gUnknown_0203BCDC != NULL) FREE_AND_SET_NULL(gUnknown_0203BCDC); @@ -563,15 +617,13 @@ static void SetCallback2AfterHallOfFameDisplay(void) #undef tPokesNumber #undef tFrameCount #undef tPlayerSpriteID -#undef tMonSpriteID +#undef tMonSpriteId #define tCurrTeamNo data[0] #define tCurrPageNo data[1] -#define tCurrPokeID data[2] +#define tCurrPokeId data[2] #define tPokesNo data[4] -#define tMonSpriteID(i) data[i + 5] - -extern const struct HallofFameMon sDummyFameMon; +#define tMonSpriteId(i) data[i + 5] void CB2_DoHallOfFamePC(void) { @@ -580,7 +632,7 @@ void CB2_DoHallOfFamePC(void) case 0: default: SetVBlankCallback(NULL); - sub_8174EC4(); + ClearVramOamPltt_LoadHofPal(); gUnknown_0203BCDC = AllocZeroed(sizeof(*gUnknown_0203BCDC)); gMain.state = 1; break; @@ -624,7 +676,7 @@ void CB2_DoHallOfFamePC(void) for (i = 0; i < 6; i++) { - gTasks[taskId].tMonSpriteID(i) = 0xFF; + gTasks[taskId].tMonSpriteId(i) = 0xFF; } gHofMonsPtr = AllocZeroed(0x2000); @@ -634,12 +686,12 @@ void CB2_DoHallOfFamePC(void) } } -static void Task_HofPC_CopySaveData(u8 taskID) +static void Task_HofPC_CopySaveData(u8 taskId) { sub_81980F0(0, 0x1E, 0, 0xC, 0x226); if (sub_81534D0(3) != 1) { - gTasks[taskID].func = Task_HofPC_PrintDataIsCorrupted; + gTasks[taskId].func = Task_HofPC_PrintDataIsCorrupted; } else { @@ -655,34 +707,34 @@ static void Task_HofPC_CopySaveData(u8 taskID) } if (i < HALL_OF_FAME_MAX_TEAMS) - gTasks[taskID].tCurrTeamNo = i - 1; + gTasks[taskId].tCurrTeamNo = i - 1; else - gTasks[taskID].tCurrTeamNo = HALL_OF_FAME_MAX_TEAMS - 1; + gTasks[taskId].tCurrTeamNo = HALL_OF_FAME_MAX_TEAMS - 1; - gTasks[taskID].tCurrPageNo = GetGameStat(GAME_STAT_ENTERED_HOF); + gTasks[taskId].tCurrPageNo = GetGameStat(GAME_STAT_ENTERED_HOF); - gTasks[taskID].func = Task_HofPC_DrawSpritesPrintText; + gTasks[taskId].func = Task_HofPC_DrawSpritesPrintText; } } -static void Task_HofPC_DrawSpritesPrintText(u8 taskID) +static void Task_HofPC_DrawSpritesPrintText(u8 taskId) { struct HallofFameMons* savedTeams = gHofMonsPtr; struct HallofFameMon* currMon; u16 i; - for (i = 0; i < gTasks[taskID].tCurrTeamNo; i++) + for (i = 0; i < gTasks[taskId].tCurrTeamNo; i++) savedTeams++; currMon = &savedTeams->mons[0]; gUnknown_0203BCD4 = 0; - gTasks[taskID].tCurrPokeID = 0; - gTasks[taskID].tPokesNo = 0; + gTasks[taskId].tCurrPokeId = 0; + gTasks[taskId].tPokesNo = 0; for (i = 0; i < 6; i++, currMon++) { if (currMon->species != 0) - gTasks[taskID].tPokesNo++; + gTasks[taskId].tPokesNo++; } currMon = &savedTeams->mons[0]; @@ -691,10 +743,10 @@ static void Task_HofPC_DrawSpritesPrintText(u8 taskID) { if (currMon->species != 0) { - u16 spriteID; + u16 spriteId; s16 posX, posY; - if (gTasks[taskID].tPokesNo > 3) + if (gTasks[taskId].tPokesNo > 3) { posX = sHallOfFame_MonsFullTeamPositions[i][2]; posY = sHallOfFame_MonsFullTeamPositions[i][3]; @@ -708,52 +760,52 @@ static void Task_HofPC_DrawSpritesPrintText(u8 taskID) if (currMon->species == SPECIES_EGG) posY += 10; - spriteID = sub_818D7D8(currMon->species, currMon->tid, currMon->personality, 1, posX, posY, i, 0xFFFF); - gSprites[spriteID].oam.priority = 1; - gTasks[taskID].tMonSpriteID(i) = spriteID; + spriteId = sub_818D7D8(currMon->species, currMon->tid, currMon->personality, 1, posX, posY, i, 0xFFFF); + gSprites[spriteId].oam.priority = 1; + gTasks[taskId].tMonSpriteId(i) = spriteId; } else { - gTasks[taskID].tMonSpriteID(i) = 0xFF; + gTasks[taskId].tMonSpriteId(i) = 0xFF; } } BlendPalettes(0xFFFF0000, 0xC, 0x63B0); - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskID].tCurrPageNo, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tCurrPageNo, STR_CONV_MODE_RIGHT_ALIGN, 3); StringExpandPlaceholders(gStringVar4, gText_HOFNumber); - if (gTasks[taskID].tCurrTeamNo <= 0) + if (gTasks[taskId].tCurrTeamNo <= 0) sub_8198204(gStringVar4, gText_PickCancel, 0, 0, 1); else sub_8198204(gStringVar4, gText_PickNextCancel, 0, 0, 1); - gTasks[taskID].func = Task_HofPC_PrintMonInfo; + gTasks[taskId].func = Task_HofPC_PrintMonInfo; } -static void Task_HofPC_PrintMonInfo(u8 taskID) +static void Task_HofPC_PrintMonInfo(u8 taskId) { struct HallofFameMons* savedTeams = gHofMonsPtr; struct HallofFameMon* currMon; u16 i; u16 currMonID; - for (i = 0; i < gTasks[taskID].tCurrTeamNo; i++) + for (i = 0; i < gTasks[taskId].tCurrTeamNo; i++) savedTeams++; for (i = 0; i < 6; i++) { - u16 spriteID = gTasks[taskID].tMonSpriteID(i); - if (spriteID != 0xFF) - gSprites[spriteID].oam.priority = 1; + u16 spriteId = gTasks[taskId].tMonSpriteId(i); + if (spriteId != 0xFF) + gSprites[spriteId].oam.priority = 1; } - currMonID = gTasks[taskID].tMonSpriteID(gTasks[taskID].tCurrPokeID); + currMonID = gTasks[taskId].tMonSpriteId(gTasks[taskId].tCurrPokeId); gSprites[currMonID].oam.priority = 0; gUnknown_0203BCD4 = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000; BlendPalettesUnfaded(gUnknown_0203BCD4, 0xC, 0x63B0); - currMon = &savedTeams->mons[gTasks[taskID].tCurrPokeID]; + currMon = &savedTeams->mons[gTasks[taskId].tCurrPokeId]; if (currMon->species != SPECIES_EGG) { StopCryAndClearCrySongs(); @@ -761,30 +813,30 @@ static void Task_HofPC_PrintMonInfo(u8 taskID) } HallOfFame_PrintMonInfo(currMon, 0, 14); - gTasks[taskID].func = Task_HofPC_HandleInput; + gTasks[taskId].func = Task_HofPC_HandleInput; } -static void Task_HofPC_HandleInput(u8 taskID) +static void Task_HofPC_HandleInput(u8 taskId) { u16 i; if (gMain.newKeys & A_BUTTON) { - if (gTasks[taskID].tCurrTeamNo != 0) // prepare another team to view + if (gTasks[taskId].tCurrTeamNo != 0) // prepare another team to view { - gTasks[taskID].tCurrTeamNo--; + gTasks[taskId].tCurrTeamNo--; for (i = 0; i < 6; i++) { - u8 spriteID = gTasks[taskID].tMonSpriteID(i); - if (spriteID != 0xFF) + u8 spriteId = gTasks[taskId].tMonSpriteId(i); + if (spriteId != 0xFF) { - sub_818D820(spriteID); - gTasks[taskID].tMonSpriteID(i) = 0xFF; + sub_818D820(spriteId); + gTasks[taskId].tMonSpriteId(i) = 0xFF; } } - if (gTasks[taskID].tCurrPageNo != 0) - gTasks[taskID].tCurrPageNo--; - gTasks[taskID].func = Task_HofPC_DrawSpritesPrintText; + if (gTasks[taskId].tCurrPageNo != 0) + gTasks[taskId].tCurrPageNo--; + gTasks[taskId].func = Task_HofPC_DrawSpritesPrintText; } else // no more teams to view, turn off hall of fame PC { @@ -793,7 +845,7 @@ static void Task_HofPC_HandleInput(u8 taskID) StopCryAndClearCrySongs(); m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); } - gTasks[taskID].func = Task_HofPC_HandlePaletteOnExit; + gTasks[taskId].func = Task_HofPC_HandlePaletteOnExit; } } else if (gMain.newKeys & B_BUTTON) // turn off hall of fame PC @@ -803,21 +855,21 @@ static void Task_HofPC_HandleInput(u8 taskID) StopCryAndClearCrySongs(); m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); } - gTasks[taskID].func = Task_HofPC_HandlePaletteOnExit; + gTasks[taskId].func = Task_HofPC_HandlePaletteOnExit; } - else if (gMain.newKeys & DPAD_UP && gTasks[taskID].tCurrPokeID != 0) // change mon -1 + else if (gMain.newKeys & DPAD_UP && gTasks[taskId].tCurrPokeId != 0) // change mon -1 { - gTasks[taskID].tCurrPokeID--; - gTasks[taskID].func = Task_HofPC_PrintMonInfo; + gTasks[taskId].tCurrPokeId--; + gTasks[taskId].func = Task_HofPC_PrintMonInfo; } - else if (gMain.newKeys & DPAD_DOWN && gTasks[taskID].tCurrPokeID < gTasks[taskID].tPokesNo - 1) // change mon +1 + else if (gMain.newKeys & DPAD_DOWN && gTasks[taskId].tCurrPokeId < gTasks[taskId].tPokesNo - 1) // change mon +1 { - gTasks[taskID].tCurrPokeID++; - gTasks[taskID].func = Task_HofPC_PrintMonInfo; + gTasks[taskId].tCurrPokeId++; + gTasks[taskId].func = Task_HofPC_PrintMonInfo; } } -static void Task_HofPC_HandlePaletteOnExit(u8 taskID) +static void Task_HofPC_HandlePaletteOnExit(u8 taskId) { struct HallofFameMons* fameMons; @@ -825,10 +877,10 @@ static void Task_HofPC_HandlePaletteOnExit(u8 taskID) fameMons = (struct HallofFameMons*)(gDecompressionBuffer); fameMons->mons[0] = sDummyFameMon; sub_80F9BF4(0, 0, 0); - gTasks[taskID].func = Task_HofPC_HandleExit; + gTasks[taskId].func = Task_HofPC_HandleExit; } -static void Task_HofPC_HandleExit(u8 taskID) +static void Task_HofPC_HandleExit(u8 taskId) { if (!sub_80F9C30()) { @@ -836,11 +888,11 @@ static void Task_HofPC_HandleExit(u8 taskID) for (i = 0; i < 6; i++) { - u16 spriteId = gTasks[taskID].tMonSpriteID(i); + u16 spriteId = gTasks[taskId].tMonSpriteId(i); if (spriteId != 0xFF) { sub_818D820(spriteId); - gTasks[taskID].tMonSpriteID(i) = 0xFF; + gTasks[taskId].tMonSpriteId(i) = 0xFF; } } @@ -852,7 +904,7 @@ static void Task_HofPC_HandleExit(u8 taskID) UnsetBgTilemapBuffer(1); UnsetBgTilemapBuffer(3); ResetBgsAndClearDma3BusyFlags(0); - DestroyTask(taskID); + DestroyTask(taskId); if (gUnknown_0203BCDC != NULL) FREE_AND_SET_NULL(gUnknown_0203BCDC); @@ -872,14 +924,438 @@ static void Task_HofPC_PrintDataIsCorrupted(u8 taskId) gTasks[taskId].func = Task_HofPC_ExitOnButtonPress; } -static void Task_HofPC_ExitOnButtonPress(u8 taskID) +static void Task_HofPC_ExitOnButtonPress(u8 taskId) { if (gMain.newKeys & A_BUTTON) - gTasks[taskID].func = Task_HofPC_HandlePaletteOnExit; + gTasks[taskId].func = Task_HofPC_HandlePaletteOnExit; } #undef tCurrTeamNo #undef tCurrPageNo -#undef tCurrPokeID +#undef tCurrPokeId #undef tPokesNo -#undef tMonSpriteID +#undef tMonSpriteId + +void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2) +{ + FillWindowPixelBuffer(0, 0); + PutWindowTilemap(0); + box_print(0, 1, GetStringCenterAlignXOffset(1, gText_WelcomeToHOF, 0xD0), 1, gUnknown_085E5388, 0, gText_WelcomeToHOF); + CopyWindowToVram(0, 3); +} + +void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2) +{ + u8 text[30]; + u8 *stringPtr; + s32 dexNumber; + s32 width; + + FillWindowPixelBuffer(0, 0); + PutWindowTilemap(0); + + // dex number + if (currMon->species != SPECIES_EGG) + { + stringPtr = StringCopy(text, gText_Number); + dexNumber = SpeciesToPokedexNum(currMon->species); + if (dexNumber != 0xFFFF) + { + stringPtr[0] = (dexNumber / 100) + CHAR_0; + stringPtr++; + dexNumber %= 100; + stringPtr[0] = (dexNumber / 10) + CHAR_0; + stringPtr++; + stringPtr[0] = (dexNumber % 10) + CHAR_0; + stringPtr++; + } + else + { + *(stringPtr)++ = CHAR_QUESTION_MARK; + *(stringPtr)++ = CHAR_QUESTION_MARK; + *(stringPtr)++ = CHAR_QUESTION_MARK; + } + stringPtr[0] = EOS; + box_print(0, 1, 0x10, 1, gUnknown_085E5388, -1, text); + } + + // nick, species names, gender and level + memcpy(text, currMon->nick, POKEMON_NAME_LENGTH); + text[POKEMON_NAME_LENGTH] = EOS; + if (currMon->species == SPECIES_EGG) + { + width = GetStringCenterAlignXOffset(1, text, 0xD0); + box_print(0, 1, width, 1, gUnknown_085E5388, -1, text); + CopyWindowToVram(0, 3); + } + else + { + width = GetStringRightAlignXOffset(1, text, 0x80); + box_print(0, 1, width, 1, gUnknown_085E5388, -1, text); + + text[0] = CHAR_SLASH; + stringPtr = StringCopy(text + 1, gSpeciesNames[currMon->species]); + + if (currMon->species != SPECIES_NIDORAN_M && currMon->species != SPECIES_NIDORAN_F) + { + switch (GetGenderFromSpeciesAndPersonality(currMon->species, currMon->personality)) + { + case MON_MALE: + stringPtr[0] = CHAR_MALE; + stringPtr++; + break; + case MON_FEMALE: + stringPtr[0] = CHAR_FEMALE; + stringPtr++; + break; + } + } + + stringPtr[0] = EOS; + box_print(0, 1, 0x80, 1, gUnknown_085E5388, -1, text); + + stringPtr = StringCopy(text, gText_Level); + ConvertIntToDecimalStringN(stringPtr, currMon->lvl, STR_CONV_MODE_LEFT_ALIGN, 3); + box_print(0, 1, 0x24, 0x11, gUnknown_085E5388, -1, text); + + stringPtr = StringCopy(text, gText_IDNumber); + ConvertIntToDecimalStringN(stringPtr, (u16)(currMon->tid), STR_CONV_MODE_LEADING_ZEROS, 5); + box_print(0, 1, 0x68, 0x11, gUnknown_085E5388, -1, text); + + CopyWindowToVram(0, 3); + } +} + +void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2) +{ + u8 text[20]; + u32 width; + u16 trainerId; + + FillWindowPixelBuffer(1, 0x11); + PutWindowTilemap(1); + SetWindowBorderStyle(1, FALSE, 0x21D, 0xD); + box_print(1, 1, 0, 1, gUnknown_085E538C, -1, gText_Name); + + width = GetStringRightAlignXOffset(1, gSaveBlock2Ptr->playerName, 0x70); + box_print(1, 1, width, 1, gUnknown_085E538C, -1, gSaveBlock2Ptr->playerName); + + trainerId = (gSaveBlock2Ptr->playerTrainerId[0]) | (gSaveBlock2Ptr->playerTrainerId[1] << 8); + box_print(1, 1, 0, 0x11, gUnknown_085E538C, 0, gText_IDNumber); + text[0] = (trainerId % 100000) / 10000 + CHAR_0; + text[1] = (trainerId % 10000) / 1000 + CHAR_0; + text[2] = (trainerId % 1000) / 100 + CHAR_0; + text[3] = (trainerId % 100) / 10 + CHAR_0; + text[4] = (trainerId % 10) / 1 + CHAR_0; + text[5] = EOS; + width = GetStringRightAlignXOffset(1, text, 0x70); + box_print(1, 1, width, 0x11, gUnknown_085E538C, -1, text); + + box_print(1, 1, 0, 0x21, gUnknown_085E538C, -1, gText_MainMenuTime); + text[0] = (gSaveBlock2Ptr->playTimeHours / 100) + CHAR_0; + text[1] = (gSaveBlock2Ptr->playTimeHours % 100) / 10 + CHAR_0; + text[2] = (gSaveBlock2Ptr->playTimeHours % 10) + CHAR_0; + + if (text[0] == CHAR_0) + text[0] = CHAR_SPACE; + if (text[0] == CHAR_SPACE && text[1] == CHAR_0) + text[8] = CHAR_SPACE; + + text[3] = CHAR_COLON; + text[4] = (gSaveBlock2Ptr->playTimeMinutes % 100) / 10 + CHAR_0; + text[5] = (gSaveBlock2Ptr->playTimeMinutes % 10) + CHAR_0; + text[6] = EOS; + + width = GetStringRightAlignXOffset(1, text, 0x70); + box_print(1, 1, width, 0x21, gUnknown_085E538C, -1, text); + + CopyWindowToVram(1, 3); +} + +void ClearVramOamPltt_LoadHofPal(void) +{ + u32 vramOffset, oamOffset, plttOffset; + u32 vramSize, oamSize, plttSize; + + vramOffset = (VRAM); + vramSize = VRAM_SIZE; + while (TRUE) + { + DmaFill16(3, 0, vramOffset, 0x1000); + vramOffset += 0x1000; + vramSize -= 0x1000; + if (vramSize <= 0x1000) + { + DmaFill16(3, 0, vramOffset, vramSize); + break; + } + } + + oamOffset = OAM; + oamSize = OAM_SIZE; + DmaFill32(3, 0, oamOffset, oamSize); + + plttOffset = PLTT; + plttSize = PLTT_SIZE; + DmaFill16(3, 0, plttOffset, plttSize); + + ResetPaletteFade(); + LoadPalette(gHallOfFame_Pal, 0, 0x20); +} + +void sub_8174F70(void) +{ + remove_some_task(); + ResetTasks(); + ResetSpriteData(); + reset_temp_tile_data_buffers(); + dp13_810BB8C(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + LoadCompressedObjectPic(&sHallOfFame_ConfettiSpriteSheet); + LoadCompressedObjectPalette(&sHallOfFame_ConfettiSpritePalette); +} + +void sub_8174FAC(void) +{ + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_085E5374, ARRAY_COUNT(gUnknown_085E5374)); + SetBgTilemapBuffer(1, gUnknown_0203BCDC->tilemap1); + SetBgTilemapBuffer(3, gUnknown_0203BCDC->tilemap2); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); +} + +bool8 sub_8175024(void) +{ + switch (gUnknown_0203BCDC->state) + { + case 0: + decompress_and_copy_tile_data_to_vram(1, gUnknown_085E5508, 0, 0, 0); + break; + case 1: + if (free_temp_tile_data_buffers_if_possible()) + return TRUE; + break; + case 2: + FillBgTilemapBufferRect_Palette0(1, 1, 0, 0, 0x20, 2); + FillBgTilemapBufferRect_Palette0(1, 0, 0, 3, 0x20, 0xB); + FillBgTilemapBufferRect_Palette0(1, 1, 0, 0xE, 0x20, 6); + FillBgTilemapBufferRect_Palette0(3, 2, 0, 0, 0x20, 0x20); + + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(3); + break; + case 3: + sub_81971D0(); + sub_8197200(); + break; + case 4: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + ShowBg(0); + ShowBg(1); + ShowBg(3); + gUnknown_0203BCDC->state = 0; + return FALSE; + } + + gUnknown_0203BCDC->state++; + return TRUE; +} + +void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite) +{ + if (sprite->pos1.x != sprite->tDestinationX + || sprite->pos1.y != sprite->tDestinationY) + { + if (sprite->pos1.x < sprite->tDestinationX) + sprite->pos1.x += 15; + if (sprite->pos1.x > sprite->tDestinationX) + sprite->pos1.x -= 15; + + if (sprite->pos1.y < sprite->tDestinationY) + sprite->pos1.y += 10; + if (sprite->pos1.y > sprite->tDestinationY) + sprite->pos1.y -= 10; + } + else + { + s16 species = sprite->tSpecies; + + if (species == SPECIES_EGG) + DoMonFrontSpriteAnimation(sprite, species, TRUE, 3); + else + DoMonFrontSpriteAnimation(sprite, species, FALSE, 3); + } +} + +#undef tDestinationX +#undef tDestinationY +#undef tSpecies + +static void sub_81751A4(struct Sprite* sprite) +{ + if (sprite->pos2.y > 120) + { + DestroySprite(sprite); + } + else + { + u16 rand; + u8 tableID; + + sprite->pos2.y++; + sprite->pos2.y += sprite->data1; + + tableID = sprite->data0; + rand = (Random() % 4) + 8; + sprite->pos2.x = rand * gSineTable[tableID] / 256; + + sprite->data0 += 4; + } +} + +bool8 sub_81751FC(void) +{ + u8 spriteID; + struct Sprite* sprite; + + s16 posX = Random() % 240; + s16 posY = -(Random() % 8); + + spriteID = CreateSprite(&gUnknown_085E54D0, posX, posY, 0); + sprite = &gSprites[spriteID]; + + StartSpriteAnim(sprite, Random() % 17); + + if (Random() & 3) + sprite->data1 = 0; + else + sprite->data1 = 1; + + return FALSE; +} + +void sub_8175280(void) +{ + u8 taskId; + + gSpecialVar_0x8004 = 180; + taskId = CreateTask(sub_8175364, 0); + if (taskId != 0xFF) + { + gTasks[taskId].data[1] = gSpecialVar_0x8004; + gSpecialVar_0x8005 = taskId; + } +} + +void sub_81752C0(void) +{ + u8 taskId; + + if ((taskId = FindTaskIdByFunc(sub_8175364)) != 0xFF) + DestroyTask(taskId); + + sub_8152254(); + FreeSpriteTilesByTag(0x3E9); + FreeSpritePaletteByTag(0x3E9); +} + +struct UnknownStruct912B4 +{ + s16 field_0; + s16 field_2; + s16 field_4; + s16 field_6; + s16 field_8; + s16 field_A; + s16 field_C; + s16 field_E; + s16 field_10; + s16 field_12; + s16 field_14; + s16 field_16; + s16 field_18; + s16 field_1A; + s16 field_1C; + s16 field_1E; + s16 field_20; + s16 field_22; + s16 field_24; + s16 field_26; + s16 field_28; +}; + +void sub_81752F4(struct UnknownStruct912B4 *unkStruct) +{ + if (unkStruct->field_E > 110) + { + gTasks[unkStruct->field_28].data[15]--; + sub_81525D0(unkStruct->field_16); + } + else + { + u8 var; + s32 rand; + + unkStruct->field_E++; + unkStruct->field_E += unkStruct->field_1C; + + var = unkStruct->field_1A; + rand = Random(); + rand &= 3; + rand += 8; + unkStruct->field_C = (rand) * ((gSineTable[var])) / 256; + + unkStruct->field_1A += 4; + } +} + +void sub_8175364(u8 taskId) +{ + u32 var = 0; + u16 *data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + if (!sub_81521C0(0x40)) + { + DestroyTask(taskId); + gSpecialVar_0x8004 = var; + gSpecialVar_0x8005 = 0xFFFF; + } + LoadCompressedObjectPic(&sHallOfFame_ConfettiSpriteSheet); + LoadCompressedObjectPalette(&sHallOfFame_ConfettiSpritePalette); + data[0]++; + break; + case 1: + if (data[1] != 0 && data[1] % 3 == 0) + { + var = sub_81524C4(gUnknown_085E53FC, 0x3E9, 0x3E9, Random() % 240, -(Random() % 8), Random() % 0x11, var); + if (var != 0xFF) + { + sub_8152438(var, sub_81752F4); + if ((Random() & 3) == 0) + sub_8152474(var, 1, 1); + sub_8152474(var, 7, taskId); + data[15]++; + } + } + sub_81522D4(); + if (data[1] != 0) + data[1]--; + else if (data[15] == 0) + data[0] = 0xFF; + break; + case 0xFF: + sub_81752C0(); + gSpecialVar_0x8004 = var; + gSpecialVar_0x8005 = 0xFFFF; + break; + } +} -- cgit v1.2.3 From a729e9838e88a982b590aafbd6330fc80c1f32e2 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 6 Nov 2017 18:41:32 +0100 Subject: move data to hall of fame c file --- src/hall_of_fame.c | 423 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 378 insertions(+), 45 deletions(-) (limited to 'src') diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 6e9cac28b..50538dd49 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -76,20 +76,6 @@ extern u8 gReservedSpritePaletteCount; #define HALL_OF_FAME_MAX_TEAMS 50 -extern const u8 gUnknown_085E53FC[]; -extern const struct SpriteTemplate gUnknown_085E54D0; -extern const struct BgTemplate gUnknown_085E5374[3]; -extern const struct CompressedSpriteSheet sHallOfFame_ConfettiSpriteSheet; -extern const struct CompressedSpritePalette sHallOfFame_ConfettiSpritePalette; -extern const u16 gHallOfFame_Pal[]; -extern const u8 gUnknown_085E5388[]; -extern const u8 gUnknown_085E538C[]; -extern const struct HallofFameMon sDummyFameMon; -extern const struct WindowTemplate gUnknown_085E5380; -extern const s16 sHallOfFame_MonsFullTeamPositions[][4]; -extern const s16 sHallOfFame_MonsHalfTeamPositions[][4]; -extern const u32 gUnknown_085E5508[]; - // strings extern const u8 gText_SavingDontTurnOffPower[]; extern const u8 gText_LeagueChamp[]; @@ -105,6 +91,10 @@ extern const u8 gText_IDNumber[]; extern const u8 gText_Name[]; extern const u8 gText_MainMenuTime[]; +// graphics +extern const u8 gContestConfetti_Gfx[]; +extern const u8 gContestConfetti_Pal[]; + extern void sub_81973C4(u8, u8); extern u16 AddTextPrinterParametrized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor); extern void sub_8175620(void); @@ -137,15 +127,15 @@ extern void sub_8152438(u8, void*); extern void sub_8152474(u8, u8, u8); extern void sub_81522D4(void); extern bool32 sub_81521C0(u8); -extern u8 sub_81524C4(const void *arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, u8 arg5, s16 arg6); +extern u8 sub_81524C4(const struct OamData *arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, u8 arg5, s16 arg6); // this file's functions -void ClearVramOamPltt_LoadHofPal(void); -void sub_8174F70(void); -void sub_8174FAC(void); -bool8 sub_81751FC(void); +static void ClearVramOamPltt_LoadHofPal(void); +static void sub_8174F70(void); +static void sub_8174FAC(void); +static bool8 sub_81751FC(void); static void SetCallback2AfterHallOfFameDisplay(void); -bool8 sub_8175024(void); +static bool8 sub_8175024(void); static void Task_Hof_InitMonData(u8 taskId); static void Task_Hof_InitTeamSaveData(u8 taskId); static void Task_Hof_SetMonDisplayTask(u8 taskId); @@ -170,20 +160,363 @@ static void Task_HofPC_HandleInput(u8 taskId); static void Task_HofPC_HandlePaletteOnExit(u8 taskId); static void Task_HofPC_HandleExit(u8 taskId); static void Task_HofPC_ExitOnButtonPress(u8 taskId); -void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite); -void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2); -void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2); -void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2); -void sub_8175364(u8 taskId); +static void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite); +static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2); +static void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2); +static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2); +static void sub_8175364(u8 taskId); +static void sub_81751A4(struct Sprite* sprite); + +// const rom data +static const struct BgTemplate sHof_BgTemplates[] = +{ + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + }, + { + .bg = 3, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0 + }, +}; + +static const struct WindowTemplate sHof_WindowTemplate = {0, 2, 2, 0xE, 6, 0xE, 1}; + +static const u8 gUnknown_085E5388[] = {0, 1, 2, 0}; + +static const u8 gUnknown_085E538C[] = {0, 2, 3, 0, 4, 5, 0, 0}; + +static const struct CompressedSpriteSheet sHallOfFame_ConfettiSpriteSheet = +{ + gContestConfetti_Gfx, 0x220, 1001 +}; + +static const u8 sUnused0[8] = {}; + +static const struct CompressedSpritePalette sHallOfFame_ConfettiSpritePalette = +{ + gContestConfetti_Pal, 1001 +}; + +static const u8 sUnused1[8] = {}; + +static const s16 sHallOfFame_MonsFullTeamPositions[6][4] = +{ + {120, 210, 120, 40}, + {326, 220, 56, 40}, + {-86, 220, 184, 40}, + {120, -62, 120, 88}, + {-70, -92, 200, 88}, + {310, -92, 40, 88} +}; + +static const s16 sHallOfFame_MonsHalfTeamPositions[3][4] = +{ + {120, 234, 120, 64}, + {326, 244, 56, 64}, + {-86, 244, 184, 64} +}; + +static const struct OamData sOamData_85E53FC = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_85E5404[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E540C[] = +{ + ANIMCMD_FRAME(1, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E5414[] = +{ + ANIMCMD_FRAME(2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E541C[] = +{ + ANIMCMD_FRAME(3, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E5424[] = +{ + ANIMCMD_FRAME(4, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E542C[] = +{ + ANIMCMD_FRAME(5, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E5434[] = +{ + ANIMCMD_FRAME(6, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E543C[] = +{ + ANIMCMD_FRAME(7, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E5444[] = +{ + ANIMCMD_FRAME(8, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E544C[] = +{ + ANIMCMD_FRAME(9, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E5454[] = +{ + ANIMCMD_FRAME(10, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E545C[] = +{ + ANIMCMD_FRAME(11, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E5464[] = +{ + ANIMCMD_FRAME(12, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E546C[] = +{ + ANIMCMD_FRAME(13, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E5474[] = +{ + ANIMCMD_FRAME(14, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E547C[] = +{ + ANIMCMD_FRAME(15, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_85E5484[] = +{ + ANIMCMD_FRAME(16, 30), + ANIMCMD_END +}; + +static const union AnimCmd * const sSpriteAnimTable_85E548C[] = +{ + sSpriteAnim_85E5404, sSpriteAnim_85E540C, sSpriteAnim_85E5414, sSpriteAnim_85E541C, + sSpriteAnim_85E5424, sSpriteAnim_85E542C, sSpriteAnim_85E5434, sSpriteAnim_85E543C, + sSpriteAnim_85E5444, sSpriteAnim_85E544C, sSpriteAnim_85E5454, sSpriteAnim_85E545C, + sSpriteAnim_85E5464, sSpriteAnim_85E546C, sSpriteAnim_85E5474, sSpriteAnim_85E547C, + sSpriteAnim_85E5484 +}; + +static const struct SpriteTemplate sSpriteTemplate_85E54D0 = +{ + .tileTag = 1001, + .paletteTag = 1001, + .oam = &sOamData_85E53FC, + .anims = sSpriteAnimTable_85E548C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_81751A4 +}; + +// todo: dump actual graphics +static const u32 sHallOfFame_Pal[] = +{ + 0, 0x109F63B0, 0x5B6E, 0, 0, 0, 0, 0x7FFF2108 +}; + +// todo: dump actual graphics +static const u32 sHallOfFame_Gfx[] = +{ + 0x3A010, + 0xF0000033, + 0x11019001, + 0x9001F011, + 0x22220001, + 0x44442222, + 0xF0E04444, + 0x70073007, + 0x11113329, + 0x13033331, + 0x33333311, + 0xF0030031, + 0x1108049, + 0x1111FFFF, + 0x4913EEEE, + 0xE10700F1, + 0x110B00EE, + 0x1D90EF, + 0x1EFFF11E, + 0x1EEEE11E, + 0x1500EF4A, + 0xB00EFEE, + 0xF11F90FF, + 0xFFF1FE01, + 0xEEE1EEE1, + 0xF1211200, + 0x1E0300EE, + 0x10E1EF11, + 0x3B40D029, + 0x1E7C00, + 0xF3331178, + 0x331100EF, + 0x3331FEEF, + 0x10E8F3EF, + 0x105F9003, + 0x7C003394, + 0x3AE1133E, + 0xC003EEE, + 0x1800310, + 0xEF8F10F1, + 0xFEA30081, + 0xE1FEEE1E, + 0x33A300EF, + 0x6800EEEF, + 0x1EFE0130, + 0x3009300, + 0xF11EFF0A, + 0xFFA1101E, + 0x17EF0300, + 0x80FEEEFE, + 0x11313F, + 0xD7006100, + 0xEF332F, + 0x8F00FF0A, + 0x7B209F60, + 0xEF440400, + 0x3EFE2201, + 0x33070013, + 0xC0FE50F1, + 0x110EF80, + 0xFEF1EEF1, + 0xF1EFFF00, + 0xF1FEEEFF, + 0x921EBF1, + 0x111120A0, + 0xF12601EE, + 0x1107D00, + 0x819100EB, + 0xFE2D005D, + 0x10FFB100, + 0xFE3910AB, + 0x9810B410, + 0x3108F11, + 0x89209F11, + 0xA0EFF6A0, + 0x1FE8D00, + 0xE111F153, + 0xF1AFE11E, + 0x641011B3, + 0x19110EF, + 0x406FA07C, + 0xA400CBB3, + 0xEEFF0300, + 0x611E2D01, + 0x6314612F, + 0x11470133, + 0xE3EE3387, + 0x23318810, + 0x210170F7, + 0x950087, + 0xA00FF03, + 0x1123FE0, + 0xCC00F141, + 0xFFFE1EEF, + 0x8F3402EE, + 0xF1EE1ED0, + 0x10B7201E, + 0x23CF0EE, + 0x8301EF17, + 0x1A011002, + 0x20CC0133, + 0x70A7017B, + 0xF35701, + 0x7C00EF80, + 0xF1BA22EE, + 0xDCED011D, + 0x1009621, + 0xE16000FE, + 0xF1F9001F, + 0xB42A5FE, + 0x113FF1EE, + 0xFEA702FF, + 0xE04101, + 0xD03F22BC, + 1 +}; + +static const struct HallofFameMon sDummyFameMon = +{ + 0x3EA03EA, 0, 0, 0, {0} +}; + +static const u8 sUnused2[6] = {2, 1, 3, 6, 4, 5}; -void VBlankCB_HallOfFame(void) +// code +static void VBlankCB_HallOfFame(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void CB2_HallOfFame(void) +static void CB2_HallOfFame(void) { RunTasks(); RunTextPrinters(); @@ -528,7 +861,7 @@ static void sub_8173EE4(u8 taskId) ShowBg(1); ShowBg(3); gTasks[taskId].tPlayerSpriteID = sub_818D8AC(sub_818D97C(gSaveBlock2Ptr->playerGender, 1), 1, 120, 72, 6, 0xFFFF); - AddWindow(&gUnknown_085E5380); + AddWindow(&sHof_WindowTemplate); sub_80987D4(1, gSaveBlock2Ptr->optionsWindowFrameType, 0x21D, 0xD0); LoadPalette(stdpal_get(1), 0xE0, 0x20); gTasks[taskId].tFrameCount = 120; @@ -936,7 +1269,7 @@ static void Task_HofPC_ExitOnButtonPress(u8 taskId) #undef tPokesNo #undef tMonSpriteId -void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2) +static void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2) { FillWindowPixelBuffer(0, 0); PutWindowTilemap(0); @@ -944,7 +1277,7 @@ void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2) CopyWindowToVram(0, 3); } -void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2) +static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2) { u8 text[30]; u8 *stringPtr; @@ -1026,7 +1359,7 @@ void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unuse } } -void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2) +static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2) { u8 text[20]; u32 width; @@ -1072,7 +1405,7 @@ void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2) CopyWindowToVram(1, 3); } -void ClearVramOamPltt_LoadHofPal(void) +static void ClearVramOamPltt_LoadHofPal(void) { u32 vramOffset, oamOffset, plttOffset; u32 vramSize, oamSize, plttSize; @@ -1100,10 +1433,10 @@ void ClearVramOamPltt_LoadHofPal(void) DmaFill16(3, 0, plttOffset, plttSize); ResetPaletteFade(); - LoadPalette(gHallOfFame_Pal, 0, 0x20); + LoadPalette(sHallOfFame_Pal, 0, 0x20); } -void sub_8174F70(void) +static void sub_8174F70(void) { remove_some_task(); ResetTasks(); @@ -1116,10 +1449,10 @@ void sub_8174F70(void) LoadCompressedObjectPalette(&sHallOfFame_ConfettiSpritePalette); } -void sub_8174FAC(void) +static void sub_8174FAC(void) { ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_085E5374, ARRAY_COUNT(gUnknown_085E5374)); + InitBgsFromTemplates(0, sHof_BgTemplates, ARRAY_COUNT(sHof_BgTemplates)); SetBgTilemapBuffer(1, gUnknown_0203BCDC->tilemap1); SetBgTilemapBuffer(3, gUnknown_0203BCDC->tilemap2); ChangeBgX(0, 0, 0); @@ -1130,12 +1463,12 @@ void sub_8174FAC(void) ChangeBgY(3, 0, 0); } -bool8 sub_8175024(void) +static bool8 sub_8175024(void) { switch (gUnknown_0203BCDC->state) { case 0: - decompress_and_copy_tile_data_to_vram(1, gUnknown_085E5508, 0, 0, 0); + decompress_and_copy_tile_data_to_vram(1, sHallOfFame_Gfx, 0, 0, 0); break; case 1: if (free_temp_tile_data_buffers_if_possible()) @@ -1167,7 +1500,7 @@ bool8 sub_8175024(void) return TRUE; } -void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite) +static void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite) { if (sprite->pos1.x != sprite->tDestinationX || sprite->pos1.y != sprite->tDestinationY) @@ -1219,7 +1552,7 @@ static void sub_81751A4(struct Sprite* sprite) } } -bool8 sub_81751FC(void) +static bool8 sub_81751FC(void) { u8 spriteID; struct Sprite* sprite; @@ -1227,7 +1560,7 @@ bool8 sub_81751FC(void) s16 posX = Random() % 240; s16 posY = -(Random() % 8); - spriteID = CreateSprite(&gUnknown_085E54D0, posX, posY, 0); + spriteID = CreateSprite(&sSpriteTemplate_85E54D0, posX, posY, 0); sprite = &gSprites[spriteID]; StartSpriteAnim(sprite, Random() % 17); @@ -1253,7 +1586,7 @@ void sub_8175280(void) } } -void sub_81752C0(void) +static void sub_81752C0(void) { u8 taskId; @@ -1290,7 +1623,7 @@ struct UnknownStruct912B4 s16 field_28; }; -void sub_81752F4(struct UnknownStruct912B4 *unkStruct) +static void sub_81752F4(struct UnknownStruct912B4 *unkStruct) { if (unkStruct->field_E > 110) { @@ -1315,7 +1648,7 @@ void sub_81752F4(struct UnknownStruct912B4 *unkStruct) } } -void sub_8175364(u8 taskId) +static void sub_8175364(u8 taskId) { u32 var = 0; u16 *data = gTasks[taskId].data; @@ -1336,7 +1669,7 @@ void sub_8175364(u8 taskId) case 1: if (data[1] != 0 && data[1] % 3 == 0) { - var = sub_81524C4(gUnknown_085E53FC, 0x3E9, 0x3E9, Random() % 240, -(Random() % 8), Random() % 0x11, var); + var = sub_81524C4(&sOamData_85E53FC, 0x3E9, 0x3E9, Random() % 240, -(Random() % 8), Random() % 0x11, var); if (var != 0xFF) { sub_8152438(var, sub_81752F4); -- cgit v1.2.3 From 19d9cff2ff582d68d5aa76fd9d2068a6407e1466 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 6 Nov 2017 18:57:22 +0100 Subject: static variables to hall of fame c --- src/hall_of_fame.c | 108 +++++++++++++++++++++++------------------------------ 1 file changed, 46 insertions(+), 62 deletions(-) (limited to 'src') diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 50538dd49..2148daddf 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -39,35 +39,19 @@ struct HallofFameMons struct HallofFameMon mons[6]; }; -extern struct HallofFameMons *gHofMonsPtr; - struct HofGfx { u16 state; - u8 field_2; - u8 field_3; - u8 field_4; - u8 field_5; - u8 field_6; - u8 field_7; - u8 field_8; - u8 field_9; - u8 field_A; - u8 field_B; - u8 field_C; - u8 field_D; - u8 field_E; - u8 field_F; - u8 field_10; - u8 field_11; + u8 field_2[16]; u8 tilemap1[0x1000]; u8 tilemap2[0x1000]; }; -extern struct HofGfx *gUnknown_0203BCDC; +static EWRAM_DATA struct HallofFameMons *sHofMonsPtr = NULL; +static EWRAM_DATA struct HofGfx *sHofGfxPtr = NULL; +extern bool8 gHasHallOfFameRecords; extern u32 gUnknown_0203BCD4; -extern bool8 HasHallOfFameRecords; extern u8 gDecompressionBuffer[]; extern struct MusicPlayerInfo gMPlay_BGM; extern MainCallback gGameContinueCallback; @@ -532,7 +516,7 @@ static bool8 InitHallOfFameScreen(void) case 0: SetVBlankCallback(NULL); ClearVramOamPltt_LoadHofPal(); - gUnknown_0203BCDC = AllocZeroed(sizeof(*gUnknown_0203BCDC)); + sHofGfxPtr = AllocZeroed(sizeof(*sHofGfxPtr)); gMain.state = 1; break; case 1: @@ -544,7 +528,7 @@ static bool8 InitHallOfFameScreen(void) SetGpuReg(REG_OFFSET_BLDALPHA, 0x710); SetGpuReg(REG_OFFSET_BLDY, 0); sub_8174FAC(); - gUnknown_0203BCDC->state = 0; + sHofGfxPtr->state = 0; gMain.state++; break; case 3: @@ -581,7 +565,7 @@ void CB2_DoHallOfFameScreen(void) { u8 taskId = CreateTask(Task_Hof_InitMonData, 0); gTasks[taskId].tDontSaveData = FALSE; - gHofMonsPtr = AllocZeroed(sizeof(*gHofMonsPtr)); + sHofMonsPtr = AllocZeroed(sizeof(*sHofMonsPtr)); } } @@ -591,7 +575,7 @@ void CB2_DoHallOfFameScreenDontSaveData(void) { u8 taskId = CreateTask(Task_Hof_InitMonData, 0); gTasks[taskId].tDontSaveData = TRUE; - gHofMonsPtr = AllocZeroed(sizeof(*gHofMonsPtr)); + sHofMonsPtr = AllocZeroed(sizeof(*sHofMonsPtr)); } } @@ -606,24 +590,24 @@ static void Task_Hof_InitMonData(u8 taskId) u8 nick[POKEMON_NAME_LENGTH + 2]; if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) { - gHofMonsPtr->mons[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); - gHofMonsPtr->mons[i].tid = GetMonData(&gPlayerParty[i], MON_DATA_OT_ID); - gHofMonsPtr->mons[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); - gHofMonsPtr->mons[i].lvl = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + sHofMonsPtr->mons[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + sHofMonsPtr->mons[i].tid = GetMonData(&gPlayerParty[i], MON_DATA_OT_ID); + sHofMonsPtr->mons[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); + sHofMonsPtr->mons[i].lvl = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nick); for (j = 0; j < POKEMON_NAME_LENGTH; j++) { - gHofMonsPtr->mons[i].nick[j] = nick[j]; + sHofMonsPtr->mons[i].nick[j] = nick[j]; } gTasks[taskId].tPokesNumber++; } else { - gHofMonsPtr->mons[i].species = 0; - gHofMonsPtr->mons[i].tid = 0; - gHofMonsPtr->mons[i].personality = 0; - gHofMonsPtr->mons[i].lvl = 0; - gHofMonsPtr->mons[i].nick[0] = EOS; + sHofMonsPtr->mons[i].species = 0; + sHofMonsPtr->mons[i].tid = 0; + sHofMonsPtr->mons[i].personality = 0; + sHofMonsPtr->mons[i].lvl = 0; + sHofMonsPtr->mons[i].nick[0] = EOS; } } @@ -647,7 +631,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId) u16 i; struct HallofFameMons* lastSavedTeam = (struct HallofFameMons*)(gDecompressionBuffer); - if (!HasHallOfFameRecords) + if (!gHasHallOfFameRecords) { memset(gDecompressionBuffer, 0, 0x2000); } @@ -673,7 +657,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId) } lastSavedTeam--; } - *lastSavedTeam = *gHofMonsPtr; + *lastSavedTeam = *sHofMonsPtr; sub_81973C4(0, 0); AddTextPrinterParametrized(0, 1, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3); @@ -690,10 +674,10 @@ static void Task_Hof_TrySaveData(u8 taskId) UnsetBgTilemapBuffer(3); FreeAllWindowBuffers(); - if (gUnknown_0203BCDC != NULL) - FREE_AND_SET_NULL(gUnknown_0203BCDC); - if (gHofMonsPtr != NULL) - FREE_AND_SET_NULL(gHofMonsPtr); + if (sHofGfxPtr != NULL) + FREE_AND_SET_NULL(sHofGfxPtr); + if (sHofMonsPtr != NULL) + FREE_AND_SET_NULL(sHofMonsPtr); DestroyTask(taskId); } @@ -728,7 +712,7 @@ static void Task_Hof_DisplayMon(u8 taskId) s16 xPos, yPos, field4, field6; u16 currMonId = gTasks[taskId].tDisplayedMonId; - struct HallofFameMon* currMon = &gHofMonsPtr->mons[currMonId]; + struct HallofFameMon* currMon = &sHofMonsPtr->mons[currMonId]; if (gTasks[taskId].tPokesNumber > 3) { @@ -762,7 +746,7 @@ static void Task_Hof_DisplayMon(u8 taskId) static void Task_Hof_PrintMonInfoAfterAnimating(u8 taskId) { u16 currMonId = gTasks[taskId].tDisplayedMonId; - struct HallofFameMon* currMon = &gHofMonsPtr->mons[currMonId]; + struct HallofFameMon* currMon = &sHofMonsPtr->mons[currMonId]; struct Sprite *monSprite = &gSprites[gTasks[taskId].tMonSpriteId(currMonId)]; if (monSprite->callback == SpriteCallbackDummy) @@ -777,7 +761,7 @@ static void Task_Hof_PrintMonInfoAfterAnimating(u8 taskId) static void Task_Hof_TryDisplayAnotherMon(u8 taskId) { u16 currPokeID = gTasks[taskId].tDisplayedMonId; - struct HallofFameMon* currMon = &gHofMonsPtr->mons[currPokeID]; + struct HallofFameMon* currMon = &sHofMonsPtr->mons[currPokeID]; if (gTasks[taskId].tFrameCount != 0) { @@ -931,10 +915,10 @@ static void Task_Hof_HandleExit(u8 taskId) ResetBgsAndClearDma3BusyFlags(0); DestroyTask(taskId); - if (gUnknown_0203BCDC != NULL) - FREE_AND_SET_NULL(gUnknown_0203BCDC); - if (gHofMonsPtr != NULL) - FREE_AND_SET_NULL(gHofMonsPtr); + if (sHofGfxPtr != NULL) + FREE_AND_SET_NULL(sHofGfxPtr); + if (sHofMonsPtr != NULL) + FREE_AND_SET_NULL(sHofMonsPtr); SetCallback2AfterHallOfFameDisplay(); } @@ -966,7 +950,7 @@ void CB2_DoHallOfFamePC(void) default: SetVBlankCallback(NULL); ClearVramOamPltt_LoadHofPal(); - gUnknown_0203BCDC = AllocZeroed(sizeof(*gUnknown_0203BCDC)); + sHofGfxPtr = AllocZeroed(sizeof(*sHofGfxPtr)); gMain.state = 1; break; case 1: @@ -1012,7 +996,7 @@ void CB2_DoHallOfFamePC(void) gTasks[taskId].tMonSpriteId(i) = 0xFF; } - gHofMonsPtr = AllocZeroed(0x2000); + sHofMonsPtr = AllocZeroed(0x2000); SetMainCallback2(CB2_HallOfFame); } break; @@ -1031,8 +1015,8 @@ static void Task_HofPC_CopySaveData(u8 taskId) u16 i; struct HallofFameMons* savedTeams; - CpuCopy16(gDecompressionBuffer, gHofMonsPtr, 0x2000); - savedTeams = gHofMonsPtr; + CpuCopy16(gDecompressionBuffer, sHofMonsPtr, 0x2000); + savedTeams = sHofMonsPtr; for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, savedTeams++) { if (savedTeams->mons[0].species == SPECIES_NONE) @@ -1052,7 +1036,7 @@ static void Task_HofPC_CopySaveData(u8 taskId) static void Task_HofPC_DrawSpritesPrintText(u8 taskId) { - struct HallofFameMons* savedTeams = gHofMonsPtr; + struct HallofFameMons* savedTeams = sHofMonsPtr; struct HallofFameMon* currMon; u16 i; @@ -1118,7 +1102,7 @@ static void Task_HofPC_DrawSpritesPrintText(u8 taskId) static void Task_HofPC_PrintMonInfo(u8 taskId) { - struct HallofFameMons* savedTeams = gHofMonsPtr; + struct HallofFameMons* savedTeams = sHofMonsPtr; struct HallofFameMon* currMon; u16 i; u16 currMonID; @@ -1239,10 +1223,10 @@ static void Task_HofPC_HandleExit(u8 taskId) ResetBgsAndClearDma3BusyFlags(0); DestroyTask(taskId); - if (gUnknown_0203BCDC != NULL) - FREE_AND_SET_NULL(gUnknown_0203BCDC); - if (gHofMonsPtr != NULL) - FREE_AND_SET_NULL(gHofMonsPtr); + if (sHofGfxPtr != NULL) + FREE_AND_SET_NULL(sHofGfxPtr); + if (sHofMonsPtr != NULL) + FREE_AND_SET_NULL(sHofMonsPtr); sub_8137C3C(); } @@ -1453,8 +1437,8 @@ static void sub_8174FAC(void) { ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, sHof_BgTemplates, ARRAY_COUNT(sHof_BgTemplates)); - SetBgTilemapBuffer(1, gUnknown_0203BCDC->tilemap1); - SetBgTilemapBuffer(3, gUnknown_0203BCDC->tilemap2); + SetBgTilemapBuffer(1, sHofGfxPtr->tilemap1); + SetBgTilemapBuffer(3, sHofGfxPtr->tilemap2); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); @@ -1465,7 +1449,7 @@ static void sub_8174FAC(void) static bool8 sub_8175024(void) { - switch (gUnknown_0203BCDC->state) + switch (sHofGfxPtr->state) { case 0: decompress_and_copy_tile_data_to_vram(1, sHallOfFame_Gfx, 0, 0, 0); @@ -1492,11 +1476,11 @@ static bool8 sub_8175024(void) ShowBg(0); ShowBg(1); ShowBg(3); - gUnknown_0203BCDC->state = 0; + sHofGfxPtr->state = 0; return FALSE; } - gUnknown_0203BCDC->state++; + sHofGfxPtr->state++; return TRUE; } -- cgit v1.2.3 From 61408456e82d3818fb8a7ab0e6b389c43ea47492 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 8 Nov 2017 18:05:47 +0100 Subject: starter choose file is decompiled --- src/mail.c | 2 +- src/starter_choose.c | 391 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/text_window.c | 4 +- 3 files changed, 394 insertions(+), 3 deletions(-) create mode 100644 src/starter_choose.c (limited to 'src') diff --git a/src/mail.c b/src/mail.c index 1060d73bd..1ceb1be1a 100644 --- a/src/mail.c +++ b/src/mail.c @@ -386,7 +386,7 @@ bool8 sub_81215EC(void) CopyBgTilemapBufferToVram(2); break; case 12: - LoadPalette(sub_8098C64(), 240, 32); + LoadPalette(GetOverworldTextboxPalettePtr(), 240, 32); gPlttBufferUnfaded[250] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color10; gPlttBufferFaded[250] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color10; gPlttBufferUnfaded[251] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color12; diff --git a/src/starter_choose.c b/src/starter_choose.c new file mode 100644 index 000000000..c730e0978 --- /dev/null +++ b/src/starter_choose.c @@ -0,0 +1,391 @@ +#include "global.h" +#include "starter_choose.h" +#include "palette.h" +#include "sprite.h" +#include "pokemon.h" +#include "task.h" +#include "bg.h" +#include "gpu_regs.h" +#include "main.h" +#include "window.h" +#include "text.h" +#include "decompress.h" +#include "menu.h" +#include "sound.h" +#include "songs.h" +#include "event_data.h" +#include "pokedex.h" +#include "data2.h" +#include "international_string_util.h" +#include "trig.h" + +#define STARTER_MON_COUNT 3 + +// Position of the sprite of the selected starter Pokemon +#define STARTER_PKMN_POS_X 120 +#define STARTER_PKMN_POS_Y 64 + +extern u16 sStarterChooseWindowId; + +// graphics +extern const u32 gBirchHelpGfx[]; +extern const u32 gBirchBagTilemap[]; +extern const u32 gBirchGrassTilemap[]; +extern const u16 gBirchBagGrassPal[]; + +// text +extern const u8 gText_BirchInTrouble[]; +extern const u8 gText_ConfirmStarterChoice[]; + +extern const u16 sStarterMons[STARTER_MON_COUNT]; +extern const struct BgTemplate gUnknown_085B1E00[3]; +extern const struct WindowTemplate gUnknown_085B1DCC[]; +extern const struct WindowTemplate gUnknown_085B1DDC; +extern const struct CompressedSpriteSheet gUnknown_085B1ED8[]; +extern const struct CompressedSpriteSheet gUnknown_085B1EE8[]; +extern const struct SpritePalette gUnknown_085B1EF8[]; +extern const struct SpriteTemplate sSpriteTemplate_PokeBall; +extern const struct SpriteTemplate sSpriteTemplate_Hand; +extern const struct SpriteTemplate gUnknown_085B1F40; +extern const union AffineAnimCmd *const gUnknown_085B1ED0; +extern const u8 sPokeballCoords[STARTER_MON_COUNT][2]; +extern const struct WindowTemplate gUnknown_085B1DE4; +extern const u8 gStarterChoose_LabelCoords[][2]; +extern const u8 gUnknown_085B1E0C[]; +extern const u8 gUnknown_085B1E28[][2]; + +extern void sub_809882C(u8, u16, u8); +extern void remove_some_task(void); +extern void clear_scheduled_bg_copies_to_vram(void); +extern void dp13_810BB8C(void); +extern void do_scheduled_bg_tilemap_copies_to_vram(void); +extern u16 sub_818D820(u16); +extern const u16 *GetOverworldTextboxPalettePtr(void); +extern u8 sub_818D3E4(u16 species, u32 trainerId, u32 personality, u8 flags, s16 x, s16 y, u8, u16); + +// this file's functions +static void MainCallback2_StarterChoose(void); +static void sub_8134604(void); +static void Task_StarterChoose1(u8 taskId); +static void Task_StarterChoose2(u8 taskId); +static void Task_StarterChoose3(u8 taskId); +static void Task_StarterChoose4(u8 taskId); +static void Task_StarterChoose5(u8 taskId); +static void Task_StarterChoose6(u8 taskId); +static void Task_MoveStarterChooseCursor(u8 taskId); +static void sub_8134668(u8 taskId); +static void CreateStarterPokemonLabel(u8 selection); +static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y); +static void StarterPokemonSpriteCallback(struct Sprite *sprite); + +u16 GetStarterPokemon(u16 chosenStarterId) +{ + if (chosenStarterId > STARTER_MON_COUNT) + chosenStarterId = 0; + return sStarterMons[chosenStarterId]; +} + +static void VblankCB_StarterChoose(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +#define tStarterSelection data[0] +#define tPkmnSpriteId data[1] +#define tCircleSpriteId data[2] + +void CB2_ChooseStarter(void) +{ + u16 savedIme; + u8 taskId; + u8 spriteId; + + SetVBlankCallback(NULL); + + SetGpuReg(REG_OFFSET_DISPCNT, 0); + SetGpuReg(REG_OFFSET_BG3CNT, 0); + SetGpuReg(REG_OFFSET_BG2CNT, 0); + SetGpuReg(REG_OFFSET_BG1CNT, 0); + SetGpuReg(REG_OFFSET_BG0CNT, 0); + + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + + DmaFill16(3, 0, VRAM, VRAM_SIZE); + DmaFill32(3, 0, OAM, OAM_SIZE); + DmaFill16(3, 0, PLTT, PLTT_SIZE); + + LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM); + LZ77UnCompVram(&gBirchBagTilemap, (void *)(VRAM + 0x3000)); + LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800)); + + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_085B1E00, ARRAY_COUNT(gUnknown_085B1E00)); + InitWindows(gUnknown_085B1DCC); + + DeactivateAllTextPrinters(); + sub_809882C(0, 0x2A8, 0xD0); + clear_scheduled_bg_copies_to_vram(); + remove_some_task(); + ResetTasks(); + ResetSpriteData(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + dp13_810BB8C(); + + LoadPalette(GetOverworldTextboxPalettePtr(), 0xE0, 0x20); + LoadPalette(gBirchBagGrassPal, 0, 0x40); + LoadCompressedObjectPic(&gUnknown_085B1ED8[0]); + LoadCompressedObjectPic(&gUnknown_085B1EE8[0]); + LoadSpritePalettes(gUnknown_085B1EF8); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + + EnableInterrupts(DISPSTAT_VBLANK); + SetVBlankCallback(VblankCB_StarterChoose); + SetMainCallback2(MainCallback2_StarterChoose); + + SetGpuReg(REG_OFFSET_WININ, 0x3F); + SetGpuReg(REG_OFFSET_WINOUT, 0x1F); + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_BLDCNT, 0xFE); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 7); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + + ShowBg(0); + ShowBg(2); + ShowBg(3); + + taskId = CreateTask(Task_StarterChoose1, 0); + gTasks[taskId].tStarterSelection = 1; + + // Create hand sprite + spriteId = CreateSprite(&sSpriteTemplate_Hand, 120, 56, 2); + gSprites[spriteId].data0 = taskId; + + // Create three Pokeball sprites + spriteId = CreateSprite(&sSpriteTemplate_PokeBall, sPokeballCoords[0][0], sPokeballCoords[0][1], 2); + gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data1 = 0; + + spriteId = CreateSprite(&sSpriteTemplate_PokeBall, sPokeballCoords[1][0], sPokeballCoords[1][1], 2); + gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data1 = 1; + + spriteId = CreateSprite(&sSpriteTemplate_PokeBall, sPokeballCoords[2][0], sPokeballCoords[2][1], 2); + gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data1 = 2; + + sStarterChooseWindowId = 0xFF; +} + +static void MainCallback2_StarterChoose(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + do_scheduled_bg_tilemap_copies_to_vram(); + UpdatePaletteFade(); +} + +static void Task_StarterChoose1(u8 taskId) +{ + CreateStarterPokemonLabel(gTasks[taskId].tStarterSelection); + SetWindowBorderStyle(0, FALSE, 0x2A8, 0xD); + PrintTextOnWindow(0, 1, gText_BirchInTrouble, 0, 1, 0, NULL); + PutWindowTilemap(0); + schedule_bg_copy_tilemap_to_vram(0); + gTasks[taskId].func = Task_StarterChoose2; +} + +static void Task_StarterChoose2(u8 taskId) +{ + u8 selection = gTasks[taskId].tStarterSelection; + + if (gMain.newKeys & A_BUTTON) + { + u8 spriteId; + + sub_8134604(); + + // Create white circle background + spriteId = CreateSprite(&gUnknown_085B1F40, sPokeballCoords[selection][0], sPokeballCoords[selection][1], 1); + gTasks[taskId].tCircleSpriteId = spriteId; + + // Create Pokemon sprite + spriteId = CreatePokemonFrontSprite(GetStarterPokemon(gTasks[taskId].tStarterSelection), sPokeballCoords[selection][0], sPokeballCoords[selection][1]); + gSprites[spriteId].affineAnims = &gUnknown_085B1ED0; + gSprites[spriteId].callback = StarterPokemonSpriteCallback; + + gTasks[taskId].tPkmnSpriteId = spriteId; + gTasks[taskId].func = Task_StarterChoose3; + } + else if ((gMain.newKeys & DPAD_LEFT) && selection > 0) + { + gTasks[taskId].tStarterSelection--; + gTasks[taskId].func = Task_MoveStarterChooseCursor; + } + else if ((gMain.newKeys & DPAD_RIGHT) && selection < (STARTER_MON_COUNT - 1)) + { + gTasks[taskId].tStarterSelection++; + gTasks[taskId].func = Task_MoveStarterChooseCursor; + } +} + +static void Task_StarterChoose3(u8 taskId) +{ + if (gSprites[gTasks[taskId].tCircleSpriteId].affineAnimEnded && + gSprites[gTasks[taskId].tCircleSpriteId].pos1.x == STARTER_PKMN_POS_X && + gSprites[gTasks[taskId].tCircleSpriteId].pos1.y == STARTER_PKMN_POS_Y) + { + gTasks[taskId].func = Task_StarterChoose4; + } +} + +static void Task_StarterChoose4(u8 taskId) +{ + PlayCry1(GetStarterPokemon(gTasks[taskId].tStarterSelection), 0); + FillWindowPixelBuffer(0, 0x11); + PrintTextOnWindow(0, 1, gText_ConfirmStarterChoice, 0, 1, 0, NULL); + schedule_bg_copy_tilemap_to_vram(0); + CreateYesNoMenu(&gUnknown_085B1DDC, 0x2A8, 0xD, 0); + gTasks[taskId].func = Task_StarterChoose5; +} + +static void Task_StarterChoose5(u8 taskId) +{ + u8 spriteId; + + switch (sub_8198C58()) + { + case 0: // YES + // Return the starter choice and exit. + gScriptResult = gTasks[taskId].tStarterSelection; + dp13_810BB8C(); + SetMainCallback2(gMain.savedCallback); + break; + case 1: // NO + case -1: // B button + PlaySE(SE_SELECT); + spriteId = gTasks[taskId].tPkmnSpriteId; + FreeOamMatrix(gSprites[spriteId].oam.matrixNum); + sub_818D820(spriteId); + + spriteId = gTasks[taskId].tCircleSpriteId; + FreeOamMatrix(gSprites[spriteId].oam.matrixNum); + DestroySprite(&gSprites[spriteId]); + gTasks[taskId].func = Task_StarterChoose6; + break; + } +} + +static void Task_StarterChoose6(u8 taskId) +{ + gTasks[taskId].func = Task_StarterChoose1; +} + +static void CreateStarterPokemonLabel(u8 selection) +{ + u8 text[32]; + struct WindowTemplate winTemplate; + const u8 *speciesName; + s32 width; + u8 labelLeft, labelRight, labelTop, labelBottom; + + u16 species = GetStarterPokemon(selection); + CopyMonCategoryText(SpeciesToNationalPokedexNum(species), text); + speciesName = gSpeciesNames[species]; + + winTemplate = gUnknown_085B1DE4; + winTemplate.tilemapLeft = gStarterChoose_LabelCoords[selection][0]; + winTemplate.tilemapTop = gStarterChoose_LabelCoords[selection][1]; + + sStarterChooseWindowId = AddWindow(&winTemplate); + FillWindowPixelBuffer(sStarterChooseWindowId, 0); + + width = GetStringCenterAlignXOffset(7, text, 0x68); + box_print(sStarterChooseWindowId, 7, width, 1, gUnknown_085B1E0C, 0, text); + + width = GetStringCenterAlignXOffset(1, speciesName, 0x68); + box_print(sStarterChooseWindowId, 1, width, 0x11, gUnknown_085B1E0C, 0, speciesName); + + PutWindowTilemap(sStarterChooseWindowId); + schedule_bg_copy_tilemap_to_vram(0); + + labelLeft = gStarterChoose_LabelCoords[selection][0] * 8 - 4; + labelRight = (gStarterChoose_LabelCoords[selection][0] + 13) * 8 + 4; + labelTop = gStarterChoose_LabelCoords[selection][1] * 8; + labelBottom = (gStarterChoose_LabelCoords[selection][1] + 4) * 8; + SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(labelLeft, labelRight)); + SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(labelTop, labelBottom)); +} + +static void sub_8134604(void) +{ + FillWindowPixelBuffer(sStarterChooseWindowId, 0); + ClearWindowTilemap(sStarterChooseWindowId); + RemoveWindow(sStarterChooseWindowId); + sStarterChooseWindowId = 0xFF; + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + schedule_bg_copy_tilemap_to_vram(0); +} + +static void Task_MoveStarterChooseCursor(u8 taskId) +{ + sub_8134604(); + gTasks[taskId].func = sub_8134668; +} + +static void sub_8134668(u8 taskId) +{ + CreateStarterPokemonLabel(gTasks[taskId].tStarterSelection); + gTasks[taskId].func = Task_StarterChoose2; +} + +static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y) +{ + u8 spriteId; + + spriteId = sub_818D3E4(species, 8, 0, 1, x, y, 0xE, 0xFFFF); + gSprites[spriteId].oam.priority = 0; + return spriteId; +} + +static void sub_81346DC(struct Sprite *sprite) +{ + sprite->pos1.x = gUnknown_085B1E28[gTasks[sprite->data0].tStarterSelection][0]; + sprite->pos1.y = gUnknown_085B1E28[gTasks[sprite->data0].tStarterSelection][1]; + sprite->pos2.y = Sin(sprite->data1, 8); + sprite->data1 = (u8)(sprite->data1) + 4; +} + +static void sub_813473C(struct Sprite *sprite) +{ + if (gTasks[sprite->data0].tStarterSelection == sprite->data1) + StartSpriteAnimIfDifferent(sprite, 1); + else + StartSpriteAnimIfDifferent(sprite, 0); +} + +static void StarterPokemonSpriteCallback(struct Sprite *sprite) +{ + //Move sprite to upper center of screen + if (sprite->pos1.x > STARTER_PKMN_POS_X) + sprite->pos1.x -= 4; + if (sprite->pos1.x < STARTER_PKMN_POS_X) + sprite->pos1.x += 4; + if (sprite->pos1.y > STARTER_PKMN_POS_Y) + sprite->pos1.y -= 2; + if (sprite->pos1.y < STARTER_PKMN_POS_Y) + sprite->pos1.y += 2; +} diff --git a/src/text_window.c b/src/text_window.c index 55aedf688..336536c04 100644 --- a/src/text_window.c +++ b/src/text_window.c @@ -23,7 +23,7 @@ const struct TilesPal* sub_8098758(u8 id) void copy_textbox_border_tile_patterns_to_vram(u8 windowId, u16 destOffset, u8 palOffset) { LoadBgTiles(GetWindowAttribute(windowId, WINDOW_PRIORITY), gUnknown_08DDD748, 0x1C0, destOffset); - LoadPalette(sub_8098C64(), palOffset, 0x20); + LoadPalette(GetOverworldTextboxPalettePtr(), palOffset, 0x20); } void box_border_load_tiles_and_pal(u8 windowId, u16 destOffset, u8 palOffset) @@ -113,7 +113,7 @@ const u16* stdpal_get(u8 id) return &gUnknown_0851017C[id]; } -const u16* sub_8098C64(void) +const u16* GetOverworldTextboxPalettePtr(void) { return gUnknown_08DDD728; } -- cgit v1.2.3 From e6ef86e4b0a66440c3339c8d63c13dcd11521984 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Wed, 8 Nov 2017 15:20:10 -0600 Subject: Update variable and flag names --- src/battle_2.c | 14 ++-- src/battle_message.c | 2 +- src/battle_script_commands.c | 2 +- src/battle_util.c | 8 +-- src/berry.c | 4 +- src/braille_puzzles.c | 24 +++---- src/calculate_base_damage.c | 8 +-- src/decoration.c | 4 +- src/event_data.c | 44 ++++++------ src/field_special_scene.c | 2 +- src/item.c | 4 +- src/lilycove_lady.c | 6 +- src/lottery_corner.c | 6 +- src/pokemon_2.c | 6 +- src/pokemon_size_record.c | 10 +-- src/safari_zone.c | 26 +++---- src/scrcmd.c | 52 +++++++------- src/start_menu.c | 10 +-- src/tv.c | 162 +++++++++++++++++++++---------------------- src/walda_phrase.c | 8 +-- 20 files changed, 201 insertions(+), 201 deletions(-) (limited to 'src') diff --git a/src/battle_2.c b/src/battle_2.c index 6b7c4063e..bd2899aec 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -511,7 +511,7 @@ static void sub_8036A5C(void) gBattleStruct->field_182 = r6; *(&gBattleStruct->field_183) = r6 >> 8; - gBattleStruct->field_183 |= FlagGet(SYS_FRONTIER_PASS) << 7; + gBattleStruct->field_183 |= FlagGet(FLAG_SYS_FRONTIER_PASS) << 7; } static void SetPlayerBerryDataInBattleStruct(void) @@ -1612,7 +1612,7 @@ void BattleMainCB2(void) if (gMain.heldKeys & B_BUTTON && gBattleTypeFlags & BATTLE_TYPE_RECORDED && sub_8186450()) { - gScriptResult = gBattleOutcome = BATTLE_PLAYER_TELEPORTED; + gSpecialVar_ScriptResult = gBattleOutcome = BATTLE_PLAYER_TELEPORTED; ResetPaletteFadeControl(); BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); SetMainCallback2(CB2_QuitRecordedBattle); @@ -2070,7 +2070,7 @@ static void sub_8038F34(void) if (!gSaveBlock2Ptr->field_CA9_b && i == monsCount) { - if (FlagGet(SYS_FRONTIER_PASS)) + if (FlagGet(FLAG_SYS_FRONTIER_PASS)) { FreeAllWindowBuffers(); SetMainCallback2(sub_80392A8); @@ -4428,7 +4428,7 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves) // badge boost if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER)) - && FlagGet(BADGE03_GET) + && FlagGet(FLAG_BADGE03_GET) && GetBankSide(bank1) == SIDE_PLAYER) { speedBank1 = (speedBank1 * 110) / 100; @@ -4462,7 +4462,7 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves) // badge boost if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER)) - && FlagGet(BADGE03_GET) + && FlagGet(FLAG_BADGE03_GET) && GetBankSide(bank2) == SIDE_PLAYER) { speedBank2 = (speedBank2 * 110) / 100; @@ -4751,7 +4751,7 @@ static void HandleEndTurn_BattleWon(void) if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) { - gScriptResult = gBattleOutcome; + gSpecialVar_ScriptResult = gBattleOutcome; gBattleTextBuff1[0] = gBattleOutcome; gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1); gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost; @@ -5013,7 +5013,7 @@ static void ReturnFromBattleToOverworld(void) if (gBattleTypeFlags & BATTLE_TYPE_LINK && gReceivedRemoteLinkPlayers != 0) return; - gScriptResult = gBattleOutcome; + gSpecialVar_ScriptResult = gBattleOutcome; gMain.inBattle = 0; gMain.callback1 = gPreBattleCallback1; diff --git a/src/battle_message.c b/src/battle_message.c index aeff721d6..5797650bc 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1907,7 +1907,7 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst) HANDLE_NICKNAME_STRING_CASE(gBattleScripting.bank, *(&gBattleStruct->field_52)) break; case B_TXT_PC_CREATOR_NAME: // lanette pc - if (FlagGet(SYS_PC_LANETTE)) + if (FlagGet(FLAG_SYS_PC_LANETTE)) toCpy = gText_Lanettes; else toCpy = gText_Someones; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 28357d984..784c2e80d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11160,7 +11160,7 @@ static void atkF0_give_caught_mon(void) gBattleCommunication[MULTISTRING_CHOOSER] = 2; } - if (FlagGet(SYS_PC_LANETTE)) + if (FlagGet(FLAG_SYS_PC_LANETTE)) gBattleCommunication[MULTISTRING_CHOOSER]++; } diff --git a/src/battle_util.c b/src/battle_util.c index 0a0badb33..537bb2793 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -3511,16 +3511,16 @@ u8 IsPokeDisobedient(void) return 0; if (!IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName)) return 0; - if (FlagGet(BADGE08_GET)) + if (FlagGet(FLAG_BADGE08_GET)) return 0; obedienceLevel = 10; - if (FlagGet(BADGE02_GET)) + if (FlagGet(FLAG_BADGE02_GET)) obedienceLevel = 30; - if (FlagGet(BADGE04_GET)) + if (FlagGet(FLAG_BADGE04_GET)) obedienceLevel = 50; - if (FlagGet(BADGE06_GET)) + if (FlagGet(FLAG_BADGE06_GET)) obedienceLevel = 70; } diff --git a/src/berry.c b/src/berry.c index 98cf7d932..2d3efa9c6 100644 --- a/src/berry.c +++ b/src/berry.c @@ -1169,7 +1169,7 @@ void FieldObjectInteractionGetBerryTreeData(void) id = FieldObjectGetBerryTreeId(gSelectedMapObject); berry = GetBerryTypeByBerryTreeId(id); ResetBerryTreeSparkleFlag(id); - unk = gScriptLastTalked; + unk = gSpecialVar_ScriptLastTalked; num = gSaveBlock1Ptr->location.mapNum; group = gSaveBlock1Ptr->location.mapGroup; if (sub_8092E9C(unk, num, group)) @@ -1219,7 +1219,7 @@ void FieldObjectInteractionPickBerryTree(void) void FieldObjectInteractionRemoveBerryTree(void) { RemoveBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject)); - sub_8092EF0(gScriptLastTalked, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + sub_8092EF0(gSpecialVar_ScriptLastTalked, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); } u8 PlayerHasBerries(void) diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 9a6f0371c..c8055470a 100755 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -33,7 +33,7 @@ void sub_8179944(void); bool8 ShouldDoBrailleDigEffect(void) { - if (!FlagGet(SYS_BRAILLE_DIG) + if (!FlagGet(FLAG_SYS_BRAILLE_DIG) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x47)) { @@ -58,7 +58,7 @@ void DoBrailleDigEffect(void) MapGridSetMetatileIdAt(18, 9, 3636); DrawWholeMapView(); PlaySE(SE_BAN); - FlagSet(SYS_BRAILLE_DIG); + FlagSet(FLAG_SYS_BRAILLE_DIG); ScriptContext2_Disable(); } @@ -81,7 +81,7 @@ bool8 CheckRelicanthWailord(void) void ShouldDoBrailleStrengthEffectOld(void) { /* - if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP_DESERT_RUINS && gSaveBlock1.location.mapNum == MAP_ID_DESERT_RUINS)) + if (!FlagGet(FLAG_SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP_DESERT_RUINS && gSaveBlock1.location.mapNum == MAP_ID_DESERT_RUINS)) { if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 23) return TRUE; @@ -105,13 +105,13 @@ void DoBrailleStrengthEffect(void) MapGridSetMetatileIdAt(16, 27, 3636); DrawWholeMapView(); PlaySE(SE_BAN); - FlagSet(SYS_BRAILLE_STRENGTH); + FlagSet(FLAG_SYS_BRAILLE_STRENGTH); ScriptContext2_Disable(); } bool8 ShouldDoBrailleFlyEffect(void) { - if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP_ANCIENT_TOMB && gSaveBlock1.location.mapNum == MAP_ID_ANCIENT_TOMB)) + if (!FlagGet(FLAG_SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP_ANCIENT_TOMB && gSaveBlock1.location.mapNum == MAP_ID_ANCIENT_TOMB)) { if (gSaveBlock1.pos.x == 8 && gSaveBlock1.pos.y == 25) return TRUE; @@ -151,7 +151,7 @@ void UseFlyAncientTomb_Finish(void) MapGridSetMetatileIdAt(16, 27, 3636); DrawWholeMapView(); PlaySE(SE_BAN); - FlagSet(SYS_BRAILLE_FLY); + FlagSet(FLAG_SYS_BRAILLE_FLY); ScriptContext2_Disable(); } */ @@ -205,7 +205,7 @@ void SealedChamberShakingEffect(u8 taskId) // moved later in the function because it was rewritten. bool8 ShouldDoBrailleStrengthEffect(void) { - if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x06)) + if (!FlagGet(FLAG_SYS_BRAILLE_STRENGTH) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x06)) { if (gSaveBlock1Ptr->pos.x == 6 && gSaveBlock1Ptr->pos.y == 23) { gBraillePuzzleCallbackFlag = STRENGTH_PUZZLE; return TRUE; } @@ -240,13 +240,13 @@ void sub_8179860(void) MapGridSetMetatileIdAt(16, 27, 3636); DrawWholeMapView(); PlaySE(SE_BAN); - FlagSet(SYS_BRAILLE_STRENGTH); + FlagSet(FLAG_SYS_BRAILLE_STRENGTH); ScriptContext2_Disable(); } bool8 ShouldDoBrailleFlyEffect(void) { - if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x44)) + if (!FlagGet(FLAG_SYS_BRAILLE_FLY) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x44)) { if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 25) { gBraillePuzzleCallbackFlag = FLY_PUZZLE; return TRUE; } @@ -276,7 +276,7 @@ void sub_8179944(void) MapGridSetMetatileIdAt(16, 27, 3636); DrawWholeMapView(); PlaySE(SE_BAN); - FlagSet(SYS_BRAILLE_FLY); + FlagSet(FLAG_SYS_BRAILLE_FLY); ScriptContext2_Disable(); } @@ -284,7 +284,7 @@ void sub_8179944(void) void DoBrailleWait(void) { /* - if (!FlagGet(SYS_BRAILLE_WAIT)) + if (!FlagGet(FLAG_SYS_BRAILLE_WAIT)) CreateTask(Task_BrailleWait, 0x50); } @@ -387,7 +387,7 @@ bool8 ShouldDoBrailleRegicePuzzle(void) if (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x43) { // _08179A1A - if (FlagGet(SYS_BRAILLE_WAIT) != FALSE) + if (FlagGet(FLAG_SYS_BRAILLE_WAIT) != FALSE) return FALSE; if (FlagGet(2) == FALSE) return FALSE; diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c index 8996059f9..89770b17a 100644 --- a/src/calculate_base_damage.c +++ b/src/calculate_base_damage.c @@ -84,13 +84,13 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de if (attacker->ability == ABILITY_HUGE_POWER || attacker->ability == ABILITY_PURE_POWER) attack *= 2; - if (ShouldGetStatBadgeBoost(BADGE01_GET, bankAtk)) + if (ShouldGetStatBadgeBoost(FLAG_BADGE01_GET, bankAtk)) attack = (110 * attack) / 100; - if (ShouldGetStatBadgeBoost(BADGE05_GET, bankDef)) + if (ShouldGetStatBadgeBoost(FLAG_BADGE05_GET, bankDef)) defense = (110 * defense) / 100; - if (ShouldGetStatBadgeBoost(BADGE07_GET, bankAtk)) + if (ShouldGetStatBadgeBoost(FLAG_BADGE07_GET, bankAtk)) spAttack = (110 * spAttack) / 100; - if (ShouldGetStatBadgeBoost(BADGE07_GET, bankDef)) + if (ShouldGetStatBadgeBoost(FLAG_BADGE07_GET, bankDef)) spDefense = (110 * spDefense) / 100; for (i = 0; i < 17; i++) diff --git a/src/decoration.c b/src/decoration.c index 0179d36a1..5396a125c 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -2133,10 +2133,10 @@ void sub_8129708(void) u16 i; gSpecialVar_0x8005 = 0; - gScriptResult = 0; + gSpecialVar_ScriptResult = 0; if (gSpecialVar_0x8004 == sCurDecorSelectedInRearrangement) { - gScriptResult = 1; + gSpecialVar_ScriptResult = 1; } else if (gDecorations[gUnknown_0203A17C.items[sDecorRearrangementDataBuffer[gSpecialVar_0x8004].idx]].permission == DECORPERM_SOLID_MAT) { diff --git a/src/event_data.c b/src/event_data.c index 19a310db5..88cf4dedc 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -17,11 +17,11 @@ EWRAM_DATA u16 gSpecialVar_0x8008 = 0; EWRAM_DATA u16 gSpecialVar_0x8009 = 0; EWRAM_DATA u16 gSpecialVar_0x800A = 0; EWRAM_DATA u16 gSpecialVar_0x800B = 0; -EWRAM_DATA u16 gScriptResult = 0; -EWRAM_DATA u16 gScriptLastTalked = 0; -EWRAM_DATA u16 gScriptFacing = 0; -EWRAM_DATA u16 gSpecialVar_0x8012 = 0; -EWRAM_DATA u16 gSpecialVar_0x8013 = 0; +EWRAM_DATA u16 gSpecialVar_ScriptResult = 0; +EWRAM_DATA u16 gSpecialVar_ScriptLastTalked = 0; +EWRAM_DATA u16 gSpecialVar_ScriptFacing = 0; +EWRAM_DATA u16 gSpecialVar_MonBoxId = 0; +EWRAM_DATA u16 gSpecialVar_MonBoxPos = 0; EWRAM_DATA u16 gSpecialVar_0x8014 = 0; EWRAM_DATA static u8 gUnknown_020375FC[16] = {0}; @@ -40,11 +40,11 @@ void ClearTempFieldEventData(void) { memset(gSaveBlock1Ptr->flags, 0, TEMP_FLAGS_SIZE); memset(gSaveBlock1Ptr->vars, 0, TEMP_VARS_SIZE); - FlagClear(SYS_ENC_UP_ITEM); - FlagClear(SYS_ENC_DOWN_ITEM); - FlagClear(SYS_USE_STRENGTH); - FlagClear(SYS_CTRL_OBJ_DELETE); - FlagClear(SYS_UNKNOWN_880); + FlagClear(FLAG_SYS_ENC_UP_ITEM); + FlagClear(FLAG_SYS_ENC_DOWN_ITEM); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_CTRL_OBJ_DELETE); + FlagClear(FLAG_SYS_UNKNOWN_880); } // probably had different flag splits at one point. @@ -58,7 +58,7 @@ void DisableNationalPokedex(void) u16 *nationalDexVar = GetVarPointer(VAR_NATIONAL_DEX); gSaveBlock2Ptr->pokedex.nationalMagic = 0; *nationalDexVar = 0; - FlagClear(SYS_NATIONAL_DEX); + FlagClear(FLAG_SYS_NATIONAL_DEX); } void EnableNationalPokedex(void) @@ -66,7 +66,7 @@ void EnableNationalPokedex(void) u16 *nationalDexVar = GetVarPointer(VAR_NATIONAL_DEX); gSaveBlock2Ptr->pokedex.nationalMagic = 0xDA; *nationalDexVar = 0x302; - FlagSet(SYS_NATIONAL_DEX); + FlagSet(FLAG_SYS_NATIONAL_DEX); gSaveBlock2Ptr->pokedex.unknown1 = 1; gSaveBlock2Ptr->pokedex.order = 0; sub_80BB358(); @@ -74,7 +74,7 @@ void EnableNationalPokedex(void) bool32 IsNationalPokedexEnabled(void) { - if (gSaveBlock2Ptr->pokedex.nationalMagic == 0xDA && VarGet(VAR_NATIONAL_DEX) == 0x302 && FlagGet(SYS_NATIONAL_DEX)) + if (gSaveBlock2Ptr->pokedex.nationalMagic == 0xDA && VarGet(VAR_NATIONAL_DEX) == 0x302 && FlagGet(FLAG_SYS_NATIONAL_DEX)) return TRUE; else return FALSE; @@ -82,32 +82,32 @@ bool32 IsNationalPokedexEnabled(void) void DisableMysteryEvent(void) { - FlagClear(SYS_MYSTERY_EVENT_ENABLE); + FlagClear(FLAG_SYS_MYSTERY_EVENT_ENABLE); } void EnableMysteryEvent(void) { - FlagSet(SYS_MYSTERY_EVENT_ENABLE); + FlagSet(FLAG_SYS_MYSTERY_EVENT_ENABLE); } bool32 IsMysteryEventEnabled(void) { - return FlagGet(SYS_MYSTERY_EVENT_ENABLE); + return FlagGet(FLAG_SYS_MYSTERY_EVENT_ENABLE); } void DisableMysteryGift(void) { - FlagClear(SYS_MYSTERY_GIFT_ENABLE); + FlagClear(FLAG_SYS_MYSTERY_GIFT_ENABLE); } void EnableMysteryGift(void) { - FlagSet(SYS_MYSTERY_GIFT_ENABLE); + FlagSet(FLAG_SYS_MYSTERY_GIFT_ENABLE); } bool32 IsMysteryGiftEnabled(void) { - return FlagGet(SYS_MYSTERY_GIFT_ENABLE); + return FlagGet(FLAG_SYS_MYSTERY_GIFT_ENABLE); } void sub_809D4D8(void) @@ -145,18 +145,18 @@ void sub_809D570(void) void DisableResetRTC(void) { VarSet(VAR_RESET_RTC_ENABLE, 0); - FlagClear(SYS_RESET_RTC_ENABLE); + FlagClear(FLAG_SYS_RESET_RTC_ENABLE); } void EnableResetRTC(void) { VarSet(VAR_RESET_RTC_ENABLE, 0x920); - FlagSet(SYS_RESET_RTC_ENABLE); + FlagSet(FLAG_SYS_RESET_RTC_ENABLE); } bool32 CanResetRTC(void) { - if (FlagGet(SYS_RESET_RTC_ENABLE) && VarGet(VAR_RESET_RTC_ENABLE) == 0x920) + if (FlagGet(FLAG_SYS_RESET_RTC_ENABLE) && VarGet(VAR_RESET_RTC_ENABLE) == 0x920) return TRUE; else return FALSE; diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 54c1d8144..f92f342eb 100755 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -354,7 +354,7 @@ void sub_80FB768(void) void sub_80FB7A4(void) { - FlagSet(SYS_CRUISE_MODE); + FlagSet(FLAG_SYS_CRUISE_MODE); FlagSet(0x4001); FlagSet(0x4000); saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1); diff --git a/src/item.c b/src/item.c index 0114676b6..a684ea6f0 100644 --- a/src/item.c +++ b/src/item.c @@ -165,11 +165,11 @@ bool8 HasAtLeastOneBerry(void) { if (CheckBagHasItem(i, 1) == TRUE) { - gScriptResult = 1; + gSpecialVar_ScriptResult = 1; return TRUE; } } - gScriptResult = 0; + gSpecialVar_ScriptResult = 0; return FALSE; } diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c index 3b7ae49f2..f7ec5dbaf 100644 --- a/src/lilycove_lady.c +++ b/src/lilycove_lady.c @@ -242,11 +242,11 @@ void sub_818D9C0(void) { lilycoveLady = &gSaveBlock1Ptr->lilycoveLady; VarSet(VAR_0x4011, gUnknown_0860B074[lilycoveLady->contest.category]); - gScriptResult = TRUE; + gSpecialVar_ScriptResult = TRUE; } else { - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; } } @@ -308,7 +308,7 @@ void SetLilycoveLadyRandomly(void) void sub_818DAEC(void) { - gScriptResult = GetLilycoveLadyId(); + gSpecialVar_ScriptResult = GetLilycoveLadyId(); } static u8 sub_818DB04(const u16 *data) diff --git a/src/lottery_corner.c b/src/lottery_corner.c index 3939f7d7f..7c8c32189 100644 --- a/src/lottery_corner.c +++ b/src/lottery_corner.c @@ -42,7 +42,7 @@ void SetRandomLotteryNumber(u16 i) void RetrieveLotteryNumber(void) { u16 lottoNumber = GetLotteryNumber(); - gScriptResult = lottoNumber; + gSpecialVar_ScriptResult = lottoNumber; } void PickLotteryCornerTicket(void) @@ -66,7 +66,7 @@ void PickLotteryCornerTicket(void) if (!GetMonData(pkmn, MON_DATA_IS_EGG)) { u32 otId = GetMonData(pkmn, MON_DATA_OT_ID); - u8 numMatchingDigits = GetMatchingDigits(gScriptResult, otId); + u8 numMatchingDigits = GetMatchingDigits(gSpecialVar_ScriptResult, otId); if (numMatchingDigits > gSpecialVar_0x8004 && numMatchingDigits > 1) { @@ -90,7 +90,7 @@ void PickLotteryCornerTicket(void) !GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_IS_EGG)) { u32 otId = GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_OT_ID); - u8 numMatchingDigits = GetMatchingDigits(gScriptResult, otId); + u8 numMatchingDigits = GetMatchingDigits(gSpecialVar_ScriptResult, otId); if (numMatchingDigits > gSpecialVar_0x8004 && numMatchingDigits > 1) { diff --git a/src/pokemon_2.c b/src/pokemon_2.c index 587773836..3802cc5eb 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -1086,10 +1086,10 @@ u8 SendMonToPC(struct Pokemon* mon) { MonRestorePP(mon); CopyMon(checkingMon, &mon->box, sizeof(mon->box)); - gSpecialVar_0x8012 = boxNo; - gSpecialVar_0x8013 = boxPos; + gSpecialVar_MonBoxId = boxNo; + gSpecialVar_MonBoxPos = boxPos; if (get_unknown_box_id() != boxNo) - FlagClear(SYS_STORAGE_UNKNOWN_FLAG); + FlagClear(FLAG_SYS_STORAGE_UNKNOWN_FLAG); VarSet(VAR_STORAGE_UNKNOWN, boxNo); return MON_GIVEN_TO_PC; } diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c index 1758fba32..e138b86c8 100644 --- a/src/pokemon_size_record.c +++ b/src/pokemon_size_record.c @@ -109,13 +109,13 @@ static void FormatMonSizeRecord(u8 *string, u32 size) static u8 CompareMonSize(u16 species, u16 *sizeRecord) { - if (gScriptResult == 0xFF) + if (gSpecialVar_ScriptResult == 0xFF) { return 0; } else { - struct Pokemon *pkmn = &gPlayerParty[gScriptResult]; + struct Pokemon *pkmn = &gPlayerParty[gSpecialVar_ScriptResult]; if (GetMonData(pkmn, MON_DATA_IS_EGG) == TRUE || GetMonData(pkmn, MON_DATA_SPECIES) != species) { @@ -173,7 +173,7 @@ void CompareSeedotSize(void) { u16 *sizeRecord = GetVarPointer(VAR_SEEDOT_SIZE_RECORD); - gScriptResult = CompareMonSize(SPECIES_SEEDOT, sizeRecord); + gSpecialVar_ScriptResult = CompareMonSize(SPECIES_SEEDOT, sizeRecord); } void InitLotadSizeRecord(void) @@ -192,7 +192,7 @@ void CompareLotadSize(void) { u16 *sizeRecord = GetVarPointer(VAR_LOTAD_SIZE_RECORD); - gScriptResult = CompareMonSize(SPECIES_LOTAD, sizeRecord); + gSpecialVar_ScriptResult = CompareMonSize(SPECIES_LOTAD, sizeRecord); } void GiveGiftRibbonToParty(u8 index, u8 ribbonId) @@ -217,6 +217,6 @@ void GiveGiftRibbonToParty(u8 index, u8 ribbonId) } } if (gotRibbon) - FlagSet(SYS_RIBBON_GET); + FlagSet(FLAG_SYS_RIBBON_GET); } } diff --git a/src/safari_zone.c b/src/safari_zone.c index 77c6bbd61..a493dd13f 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -50,17 +50,17 @@ static void DecrementFeederStepCounters(void); bool32 GetSafariZoneFlag(void) { - return FlagGet(SYS_SAFARI_MODE); + return FlagGet(FLAG_SYS_SAFARI_MODE); } void SetSafariZoneFlag(void) { - FlagSet(SYS_SAFARI_MODE); + FlagSet(FLAG_SYS_SAFARI_MODE); } void ResetSafariZoneFlag(void) { - FlagClear(SYS_SAFARI_MODE); + FlagClear(FLAG_SYS_SAFARI_MODE); } void EnterSafariMode(void) @@ -152,13 +152,13 @@ void GetPokeblockFeederInFront(void) && sPokeblockFeeders[i].x == x && sPokeblockFeeders[i].y == y) { - gScriptResult = i; + gSpecialVar_ScriptResult = i; StringCopy(gStringVar1, gPokeblockNames[sPokeblockFeeders[i].pokeblock.color]); return; } } - gScriptResult = -1; + gSpecialVar_ScriptResult = -1; } void GetPokeblockFeederWithinRange(void) @@ -181,13 +181,13 @@ void GetPokeblockFeederWithinRange(void) y *= -1; if ((x + y) <= 5) { - gScriptResult = i; + gSpecialVar_ScriptResult = i; return; } } } - gScriptResult = -1; + gSpecialVar_ScriptResult = -1; } // unused @@ -195,20 +195,20 @@ struct Pokeblock *SafariZoneGetPokeblockInFront(void) { GetPokeblockFeederInFront(); - if (gScriptResult == 0xFFFF) + if (gSpecialVar_ScriptResult == 0xFFFF) return NULL; else - return &sPokeblockFeeders[gScriptResult].pokeblock; + return &sPokeblockFeeders[gSpecialVar_ScriptResult].pokeblock; } struct Pokeblock *SafariZoneGetActivePokeblock(void) { GetPokeblockFeederWithinRange(); - if (gScriptResult == 0xFFFF) + if (gSpecialVar_ScriptResult == 0xFFFF) return NULL; else - return &sPokeblockFeeders[gScriptResult].pokeblock; + return &sPokeblockFeeders[gSpecialVar_ScriptResult].pokeblock; } void SafariZoneActivatePokeblockFeeder(u8 pkblId) @@ -255,13 +255,13 @@ bool8 GetInFrontFeederPokeblockAndSteps(void) { GetPokeblockFeederInFront(); - if (gScriptResult == 0xFFFF) + if (gSpecialVar_ScriptResult == 0xFFFF) { return FALSE; } ConvertIntToDecimalStringN(gStringVar2, - sPokeblockFeeders[gScriptResult].stepCounter, + sPokeblockFeeders[gSpecialVar_ScriptResult].stepCounter, STR_CONV_MODE_LEADING_ZEROS, 3); return TRUE; diff --git a/src/scrcmd.c b/src/scrcmd.c index 219dfebd0..4fa88f359 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -69,7 +69,7 @@ extern u16 gSpecialVar_0x8001; extern u16 gSpecialVar_0x8002; extern u16 gSpecialVar_0x8004; -extern u16 gScriptResult; +extern u16 gSpecialVar_ScriptResult; extern u16 gScriptContestCategory; @@ -491,7 +491,7 @@ bool8 ScrCmd_random(struct ScriptContext *ctx) { u16 max = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = Random() % max; + gSpecialVar_ScriptResult = Random() % max; return FALSE; } @@ -500,7 +500,7 @@ bool8 ScrCmd_giveitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = AddBagItem(itemId, (u8)quantity); + gSpecialVar_ScriptResult = AddBagItem(itemId, (u8)quantity); return FALSE; } @@ -509,7 +509,7 @@ bool8 ScrCmd_takeitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = RemoveBagItem(itemId, (u8)quantity); + gSpecialVar_ScriptResult = RemoveBagItem(itemId, (u8)quantity); return FALSE; } @@ -518,7 +518,7 @@ bool8 ScrCmd_checkitemspace(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = CheckBagHasSpace(itemId, (u8)quantity); + gSpecialVar_ScriptResult = CheckBagHasSpace(itemId, (u8)quantity); return FALSE; } @@ -527,7 +527,7 @@ bool8 ScrCmd_checkitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = CheckBagHasItem(itemId, (u8)quantity); + gSpecialVar_ScriptResult = CheckBagHasItem(itemId, (u8)quantity); return FALSE; } @@ -535,7 +535,7 @@ bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = GetPocketByItemId(itemId); + gSpecialVar_ScriptResult = GetPocketByItemId(itemId); return FALSE; } @@ -544,7 +544,7 @@ bool8 ScrCmd_givepcitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = AddPCItem(itemId, quantity); + gSpecialVar_ScriptResult = AddPCItem(itemId, quantity); return FALSE; } @@ -553,7 +553,7 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = CheckPCHasItem(itemId, quantity); + gSpecialVar_ScriptResult = CheckPCHasItem(itemId, quantity); return FALSE; } @@ -561,7 +561,7 @@ bool8 ScrCmd_givedecoration(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = DecorationAdd(decorId); + gSpecialVar_ScriptResult = DecorationAdd(decorId); return FALSE; } @@ -569,7 +569,7 @@ bool8 ScrCmd_takedecoration(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = DecorationRemove(decorId); + gSpecialVar_ScriptResult = DecorationRemove(decorId); return FALSE; } @@ -577,7 +577,7 @@ bool8 ScrCmd_checkdecorspace(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = DecorationCheckSpace(decorId); + gSpecialVar_ScriptResult = DecorationCheckSpace(decorId); return FALSE; } @@ -585,7 +585,7 @@ bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = CheckHasDecoration(decorId); + gSpecialVar_ScriptResult = CheckHasDecoration(decorId); return FALSE; } @@ -909,7 +909,7 @@ bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx) bool8 ScrCmd_getpartysize(struct ScriptContext *ctx) { - gScriptResult = CalculatePlayerPartyCount(); + gSpecialVar_ScriptResult = CalculatePlayerPartyCount(); return FALSE; } @@ -1835,7 +1835,7 @@ bool8 ScrCmd_givemon(struct ScriptContext *ctx) u32 unkParam2 = ScriptReadWord(ctx); u8 unkParam3 = ScriptReadByte(ctx); - gScriptResult = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3); + gSpecialVar_ScriptResult = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3); return FALSE; } @@ -1843,7 +1843,7 @@ bool8 ScrCmd_giveegg(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = ScriptGiveEgg(species); + gSpecialVar_ScriptResult = ScriptGiveEgg(species); return FALSE; } @@ -1862,7 +1862,7 @@ bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx) u8 i; u16 moveId = ScriptReadHalfword(ctx); - gScriptResult = 6; + gSpecialVar_ScriptResult = 6; for (i = 0; i < 6; i++) { u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL); @@ -1871,7 +1871,7 @@ bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx) // UB: GetMonData() arguments don't match function definition if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) && pokemon_has_move(&gPlayerParty[i], moveId) == TRUE) { - gScriptResult = i; + gSpecialVar_ScriptResult = i; gSpecialVar_0x8004 = species; break; } @@ -1905,7 +1905,7 @@ bool8 ScrCmd_checkmoney(struct ScriptContext *ctx) u8 ignore = ScriptReadByte(ctx); if (!ignore) - gScriptResult = IsEnoughMoney(&gSaveBlock1Ptr->money, amount); + gSpecialVar_ScriptResult = IsEnoughMoney(&gSaveBlock1Ptr->money, amount); return FALSE; } @@ -2085,7 +2085,7 @@ bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx) { u16 value = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = GetPriceReduction(value); + gSpecialVar_ScriptResult = GetPriceReduction(value); return FALSE; } @@ -2160,7 +2160,7 @@ bool8 ScrCmd_setrespawn(struct ScriptContext *ctx) bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx) { - gScriptResult = gSaveBlock2Ptr->playerGender; + gSpecialVar_ScriptResult = gSaveBlock2Ptr->playerGender; return FALSE; } @@ -2285,9 +2285,9 @@ bool8 ScrCmd_givecoins(struct ScriptContext *ctx) u16 coins = VarGet(ScriptReadHalfword(ctx)); if (GiveCoins(coins) == TRUE) - gScriptResult = 0; + gSpecialVar_ScriptResult = 0; else - gScriptResult = 1; + gSpecialVar_ScriptResult = 1; return FALSE; } @@ -2296,9 +2296,9 @@ bool8 ScrCmd_takecoins(struct ScriptContext *ctx) u16 coins = VarGet(ScriptReadHalfword(ctx)); if (TakeCoins(coins) == TRUE) - gScriptResult = 0; + gSpecialVar_ScriptResult = 0; else - gScriptResult = 1; + gSpecialVar_ScriptResult = 1; return FALSE; } @@ -2367,7 +2367,7 @@ bool8 ScrCmd_checkmonobedience(struct ScriptContext *ctx) { u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, NULL); + gSpecialVar_ScriptResult = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, NULL); return FALSE; } diff --git a/src/start_menu.c b/src/start_menu.c index 37331a922..f45fd8626 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -74,12 +74,12 @@ void AddStartMenuAction(u8 action) static void BuildStartMenuActions_Normal(void) { - if (FlagGet(SYS_POKEDEX_GET) == TRUE) + if (FlagGet(FLAG_SYS_POKEDEX_GET) == TRUE) AddStartMenuAction(MENU_ACTION_POKEDEX); - if (FlagGet(SYS_POKEMON_GET) == TRUE) + if (FlagGet(FLAG_SYS_POKEMON_GET) == TRUE) AddStartMenuAction(MENU_ACTION_POKEMON); AddStartMenuAction(MENU_ACTION_BAG); - if (FlagGet(SYS_POKENAV_GET) == TRUE) + if (FlagGet(FLAG_SYS_POKENAV_GET) == TRUE) AddStartMenuAction(MENU_ACTION_POKENAV); AddStartMenuAction(MENU_ACTION_PLAYER); AddStartMenuAction(MENU_ACTION_SAVE); @@ -102,7 +102,7 @@ static void BuildStartMenuActions_LinkMode(void) { AddStartMenuAction(MENU_ACTION_POKEMON); AddStartMenuAction(MENU_ACTION_BAG); - if (FlagGet(SYS_POKENAV_GET) == TRUE) + if (FlagGet(FLAG_SYS_POKENAV_GET) == TRUE) AddStartMenuAction(MENU_ACTION_POKENAV); AddStartMenuAction(MENU_ACTION_PLAYER_LINK); AddStartMenuAction(MENU_ACTION_OPTION); @@ -113,7 +113,7 @@ static void BuildStartMenuActions_UnionRoom(void) { AddStartMenuAction(MENU_ACTION_POKEMON); AddStartMenuAction(MENU_ACTION_BAG); - if (FlagGet(SYS_POKENAV_GET) == TRUE) + if (FlagGet(FLAG_SYS_POKENAV_GET) == TRUE) AddStartMenuAction(MENU_ACTION_POKENAV); AddStartMenuAction(MENU_ACTION_PLAYER); AddStartMenuAction(MENU_ACTION_OPTION); diff --git a/src/tv.c b/src/tv.c index 3c822b394..3601f7a10 100644 --- a/src/tv.c +++ b/src/tv.c @@ -214,23 +214,23 @@ const struct { // TODO: Figure out what these are, and define constants in include/flags.h const u16 sGoldSymbolFlags[] = { - SYS_TOWER_GOLD, - SYS_DOME_GOLD, - SYS_PALACE_GOLD, - SYS_ARENA_GOLD, - SYS_FACTORY_GOLD, - SYS_PIKE_GOLD, - SYS_PYRAMID_GOLD + FLAG_SYS_TOWER_GOLD, + FLAG_SYS_DOME_GOLD, + FLAG_SYS_PALACE_GOLD, + FLAG_SYS_ARENA_GOLD, + FLAG_SYS_FACTORY_GOLD, + FLAG_SYS_PIKE_GOLD, + FLAG_SYS_PYRAMID_GOLD }; const u16 sSilverSymbolFlags[] = { - SYS_TOWER_SILVER, - SYS_DOME_SILVER, - SYS_PALACE_SILVER, - SYS_ARENA_SILVER, - SYS_FACTORY_SILVER, - SYS_PIKE_SILVER, - SYS_PYRAMID_SILVER + FLAG_SYS_TOWER_SILVER, + FLAG_SYS_DOME_SILVER, + FLAG_SYS_PALACE_SILVER, + FLAG_SYS_ARENA_SILVER, + FLAG_SYS_FACTORY_SILVER, + FLAG_SYS_PIKE_SILVER, + FLAG_SYS_PYRAMID_SILVER }; // TODO: Figure out what these are, and define constants in include/vars.h @@ -823,7 +823,7 @@ u8 FindAnyTVShowOnTheAir(void) void UpdateTVScreensOnMap(int width, int height) { - FlagSet(SYS_TV_WATCH); + FlagSet(FLAG_SYS_TV_WATCH); switch (CheckForBigMovieOrEmergencyNewsOnTV()) { case 1: @@ -836,9 +836,9 @@ void UpdateTVScreensOnMap(int width, int height) { SetTVMetatilesOnMap(width, height, 0x3); } - else if (FlagGet(SYS_TV_START) && (FindAnyTVShowOnTheAir() != 0xff || FindAnyTVNewsOnTheAir() != 0xff || IsTVShowInSearchOfTrainersAiring())) + else if (FlagGet(FLAG_SYS_TV_START) && (FindAnyTVShowOnTheAir() != 0xff || FindAnyTVNewsOnTheAir() != 0xff || IsTVShowInSearchOfTrainersAiring())) { - FlagClear(SYS_TV_WATCH); + FlagClear(FLAG_SYS_TV_WATCH); SetTVMetatilesOnMap(width, height, 0x3); } break; @@ -1288,7 +1288,7 @@ void PutBattleUpdateOnTheAir(u8 a0, u16 a1, u16 a2, u16 a3) if (sCurTVShowSlot != -1) { FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BATTLE_UPDATE); - if (gScriptResult != 1) + if (gSpecialVar_ScriptResult != 1) { show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; show->battleUpdate.kind = TVSHOW_BATTLE_UPDATE; @@ -1337,7 +1337,7 @@ bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unus return FALSE; } FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_3_CHEERS_FOR_POKEBLOCKS); - if (gScriptResult == 1) + if (gSpecialVar_ScriptResult == 1) { return FALSE; } @@ -1606,7 +1606,7 @@ void PutNameRaterShowOnTheAir(void) TVShow *show; InterviewBefore_NameRater(); - if (gScriptResult != 1) + if (gSpecialVar_ScriptResult != 1) { GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1); if (StringLength(gSaveBlock2Ptr->playerName) > 1 && StringLength(gStringVar1) > 1) @@ -1653,7 +1653,7 @@ void PutLilycoveContestLadyShowOnTheAir(void) TVShow *show; sub_80EFA88(); - if (gScriptResult != TRUE) + if (gSpecialVar_ScriptResult != TRUE) { show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; sub_818E848(&show->contestLiveUpdates2.language); @@ -1731,7 +1731,7 @@ void sub_80ED718(void) u16 outbreakIdx; TVShow *show; - if (FlagGet(SYS_GAME_CLEAR)) + if (FlagGet(FLAG_SYS_GAME_CLEAR)) { for (i = 0; i < 24; i ++) { @@ -1943,7 +1943,7 @@ void sub_80EDB44(void) show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; show->rivalTrainer.kind = TVSHOW_TODAYS_RIVAL_TRAINER; show->rivalTrainer.active = FALSE; - for (i = BADGE01_GET, nBadges = 0; i < BADGE01_GET + 8; i ++) + for (i = FLAG_BADGE01_GET, nBadges = 0; i < FLAG_BADGE01_GET + 8; i ++) { if (FlagGet(i)) { @@ -2613,7 +2613,7 @@ bool8 sub_80EE7C0(void) return TRUE; } FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_SPECIAL); - if (gScriptResult == TRUE) + if (gSpecialVar_ScriptResult == TRUE) { return TRUE; } @@ -2814,7 +2814,7 @@ void sub_80EED88(void) { u8 newsKind; - if (FlagGet(SYS_GAME_CLEAR)) + if (FlagGet(FLAG_SYS_GAME_CLEAR)) { sCurTVShowSlot = sub_80EEE30(gSaveBlock1Ptr->pokeNews); if (sCurTVShowSlot != -1 && rbernoulli(1, 100) != TRUE) @@ -2905,7 +2905,7 @@ void DoPokeNews(void) i = FindAnyTVNewsOnTheAir(); if (i == 0xFF) { - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; } else { @@ -2928,7 +2928,7 @@ void DoPokeNews(void) gSaveBlock1Ptr->pokeNews[i].state = 0; ShowFieldMessage(sPokeNewsTextGroup_Upcoming[gSaveBlock1Ptr->pokeNews[i].kind]); } - gScriptResult = TRUE; + gSpecialVar_ScriptResult = TRUE; } } @@ -2959,7 +2959,7 @@ bool8 IsPriceDiscounted(u8 newsKind) switch (newsKind) { case POKENEWS_SLATEPORT: - if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1Ptr->location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 25) + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1Ptr->location.mapNum == MAP_ID_SLATEPORT_CITY && gSpecialVar_ScriptLastTalked == 25) { return TRUE; } @@ -3005,7 +3005,7 @@ void sub_80EF120(u16 days) } else { - if (gSaveBlock1Ptr->pokeNews[i].state == 0 && FlagGet(SYS_GAME_CLEAR) == TRUE) + if (gSaveBlock1Ptr->pokeNews[i].state == 0 && FlagGet(FLAG_SYS_GAME_CLEAR) == TRUE) { gSaveBlock1Ptr->pokeNews[i].state = 1; } @@ -3189,7 +3189,7 @@ void FindActiveBroadcastByShowType_SetScriptResult(u8 kind) { if (gSaveBlock1Ptr->tvShows[i].common.active == TRUE) { - gScriptResult = TRUE; + gSpecialVar_ScriptResult = TRUE; } else { @@ -3205,7 +3205,7 @@ void FindActiveBroadcastByShowType_SetScriptResult(u8 kind) void InterviewBefore(void) { - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; switch (gSpecialVar_0x8005) { case TVSHOW_FAN_CLUB_LETTER: @@ -3244,7 +3244,7 @@ void InterviewBefore(void) void InterviewBefore_FanClubLetter(void) { FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_LETTER); - if (!gScriptResult) + if (!gSpecialVar_ScriptResult) { StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL)]); InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].fanclubLetter.words, 6); @@ -3254,7 +3254,7 @@ void InterviewBefore_FanClubLetter(void) void InterviewBefore_RecentHappenings(void) { FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_RECENT_HAPPENINGS); - if (!gScriptResult) + if (!gSpecialVar_ScriptResult) { InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].recentHappenings.words, 6); } @@ -3263,7 +3263,7 @@ void InterviewBefore_RecentHappenings(void) void InterviewBefore_PkmnFanClubOpinions(void) { FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_PKMN_FAN_CLUB_OPINIONS); - if (!gScriptResult) + if (!gSpecialVar_ScriptResult) { StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL)]); GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2); @@ -3274,7 +3274,7 @@ void InterviewBefore_PkmnFanClubOpinions(void) void InterviewBefore_Dummy(void) { - gScriptResult = TRUE; + gSpecialVar_ScriptResult = TRUE; } void InterviewBefore_NameRater(void) @@ -3285,7 +3285,7 @@ void InterviewBefore_NameRater(void) void InterviewBefore_BravoTrainerPkmnProfile(void) { FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); - if (!gScriptResult) + if (!gSpecialVar_ScriptResult) { InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].bravoTrainer.words, 2); } @@ -3304,7 +3304,7 @@ void InterviewBefore_3CheersForPokeblocks(void) void InterviewBefore_BravoTrainerBTProfile(void) { FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); - if (!gScriptResult) + if (!gSpecialVar_ScriptResult) { InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].bravoTrainerTower.words, 1); } @@ -3313,7 +3313,7 @@ void InterviewBefore_BravoTrainerBTProfile(void) void InterviewBefore_FanClubSpecial(void) { FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_SPECIAL); - if (!gScriptResult) + if (!gSpecialVar_ScriptResult) { InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].fanClubSpecial.words, 1); } @@ -3429,11 +3429,11 @@ void sub_80EFA88(void) gSpecialVar_0x8006 = sCurTVShowSlot; if (sCurTVShowSlot == -1) { - gScriptResult = TRUE; + gSpecialVar_ScriptResult = TRUE; } else { - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; } } @@ -3636,7 +3636,7 @@ void ChangeBoxPokemonNickname(void) { struct BoxPokemon *boxMon; - boxMon = GetBoxedMonPtr(gSpecialVar_0x8012, gSpecialVar_0x8013); + boxMon = GetBoxedMonPtr(gSpecialVar_MonBoxId, gSpecialVar_MonBoxPos); GetBoxMonData(boxMon, MON_DATA_NICKNAME, gStringVar3); GetBoxMonData(boxMon, MON_DATA_NICKNAME, gStringVar2); DoNamingScreen(3, gStringVar2, GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL), GetBoxMonGender(boxMon), GetBoxMonData(boxMon, MON_DATA_PERSONALITY, NULL), ChangeBoxPokemonNickname_CB); @@ -3644,7 +3644,7 @@ void ChangeBoxPokemonNickname(void) void ChangeBoxPokemonNickname_CB(void) { - SetBoxMonNickFromAnyBox(gSpecialVar_0x8012, gSpecialVar_0x8013, gStringVar2); + SetBoxMonNickFromAnyBox(gSpecialVar_MonBoxId, gSpecialVar_MonBoxPos, gStringVar2); c2_exit_to_overworld_1_continue_scripts_restart_music(); } @@ -3658,11 +3658,11 @@ void TV_CheckMonOTIDEqualsPlayerID(void) { if (GetPlayerIDAsU32() == GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_OT_ID, NULL)) { - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; } else { - gScriptResult = TRUE; + gSpecialVar_ScriptResult = TRUE; } } @@ -3712,11 +3712,11 @@ u8 CheckForBigMovieOrEmergencyNewsOnTV(void) return 0; } } - if (FlagGet(SYS_TV_LATI) == TRUE) + if (FlagGet(FLAG_SYS_TV_LATI) == TRUE) { return 1; } - if (FlagGet(SYS_TV_HOME) == TRUE) + if (FlagGet(FLAG_SYS_TV_HOME) == TRUE) { return 2; } @@ -4561,7 +4561,7 @@ void sub_80F0B64(void) { u16 i; - if (FlagGet(SYS_GAME_CLEAR) != TRUE) + if (FlagGet(FLAG_SYS_GAME_CLEAR) != TRUE) { for (i = 0; i < 24; i ++) { @@ -4736,7 +4736,7 @@ void sub_80F0F24(void) { u8 i; - if (FlagGet(SYS_GAME_CLEAR) != TRUE) + if (FlagGet(FLAG_SYS_GAME_CLEAR) != TRUE) { for (i = 0; i < 16; i ++) { @@ -5108,7 +5108,7 @@ void DoTVShowBravoTrainerPokemonProfile(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -5180,7 +5180,7 @@ void DoTVShowBravoTrainerBattleTower(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch(state) { @@ -5277,7 +5277,7 @@ void DoTVShowTodaysSmartShopper(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch(state) { @@ -5400,7 +5400,7 @@ void DoTVShowTheNameRaterShow(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -5498,7 +5498,7 @@ void DoTVShowPokemonTodaySuccessfulCapture(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -5576,7 +5576,7 @@ void DoTVShowPokemonTodayFailedCapture(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -5630,7 +5630,7 @@ void DoTVShowPokemonFanClubLetter(void) u16 rval; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -5683,7 +5683,7 @@ void DoTVShowRecentHappenings(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -5718,7 +5718,7 @@ void DoTVShowPokemonFanClubOpinions(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -5768,7 +5768,7 @@ void DoTVShowPokemonContestLiveUpdates(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -6115,7 +6115,7 @@ void DoTVShowPokemonBattleUpdate(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -6187,7 +6187,7 @@ void DoTVShow3CheersForPokeblocks(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -6288,7 +6288,7 @@ void DoTVShowInSearchOfTrainers(void) { u8 state; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -6344,7 +6344,7 @@ void DoTVShowInSearchOfTrainers(void) CopyEasyChatWord(gStringVar1, gSaveBlock1Ptr->gabbyAndTyData.quote[0]); StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon1]); StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon2]); - gScriptResult = TRUE; + gSpecialVar_ScriptResult = TRUE; sTVShowState = 0; TakeTVShowInSearchOfTrainersOffTheAir(); break; @@ -6358,7 +6358,7 @@ void DoTVShowPokemonAngler(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; if (show->pokemonAngler.nBites < show->pokemonAngler.nFails) { sTVShowState = 0; @@ -6392,7 +6392,7 @@ void DoTVShowTheWorldOfMasters(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -6422,7 +6422,7 @@ void DoTVShowTodaysRivalTrainer(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -6571,7 +6571,7 @@ void DoTVShowDewfordTrendWatcherNetwork(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -6627,7 +6627,7 @@ void DoTVShowHoennTreasureInvestigators(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -6671,7 +6671,7 @@ void DoTVShowFindThatGamer(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -6745,7 +6745,7 @@ void DoTVShowBreakingNewsTV(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -6848,7 +6848,7 @@ void DoTVShowSecretBaseVisit(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -6944,7 +6944,7 @@ void DoTVShowPokemonLotteryWinnerFlashReport(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; TVShowConvertInternationalString(gStringVar1, show->lottoWinner.playerName, show->lottoWinner.language); if (show->lottoWinner.whichPrize == 0) @@ -6974,7 +6974,7 @@ void DoTVShowThePokemonBattleSeminar(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -7038,7 +7038,7 @@ void DoTVShowTrainerFanClubSpecial(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -7104,7 +7104,7 @@ void DoTVShowTrainerFanClub(void) u32 playerId; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -7191,7 +7191,7 @@ void DoTVShowSpotTheCuties(void) u32 playerId; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -7296,7 +7296,7 @@ void DoTVShowPokemonNewsBattleFrontier(void) u32 playerId; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -7445,7 +7445,7 @@ void DoTVShowWhatsNo1InHoennToday(void) u32 playerId; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -7561,7 +7561,7 @@ void DoTVShowSecretBaseSecrets(void) u16 i; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -7797,7 +7797,7 @@ void DoTVShowSafariFanClub(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -7884,7 +7884,7 @@ void DoTVShowPokemonContestLiveUpdates2(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gScriptResult = FALSE; + gSpecialVar_ScriptResult = FALSE; state = sTVShowState; switch (state) { @@ -7916,7 +7916,7 @@ void DoTVShowPokemonContestLiveUpdates2(void) void TVShowDone(void) { - gScriptResult = TRUE; + gSpecialVar_ScriptResult = TRUE; sTVShowState = 0; gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.active = FALSE; } diff --git a/src/walda_phrase.c b/src/walda_phrase.c index 7e06d1319..c1da86b15 100644 --- a/src/walda_phrase.c +++ b/src/walda_phrase.c @@ -98,17 +98,17 @@ u16 TryGetWallpaperWithWaldaPhrase(void) u16 backgroundClr, foregroundClr; u8 patternId, iconId; u16 trainerId = ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId); - gScriptResult = TryCalculateWallpaper(&backgroundClr, &foregroundClr, &iconId, &patternId, trainerId, GetWaldaPhrasePtr()); + gSpecialVar_ScriptResult = TryCalculateWallpaper(&backgroundClr, &foregroundClr, &iconId, &patternId, trainerId, GetWaldaPhrasePtr()); - if (gScriptResult) + if (gSpecialVar_ScriptResult) { SetWaldaWallpaperPatternId(patternId); SetWaldaWallpaperIconId(iconId); SetWaldaWallpaperColors(backgroundClr, foregroundClr); } - SetWaldaWallpaperLockedOrUnlocked(gScriptResult); - return (bool8)(gScriptResult); + SetWaldaWallpaperLockedOrUnlocked(gSpecialVar_ScriptResult); + return (bool8)(gSpecialVar_ScriptResult); } static u8 GetLetterTableId(u8 letter) -- cgit v1.2.3 From 2e40384fa22725de06a5293454b8962ab4de8f4d Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Fri, 10 Nov 2017 18:12:18 -0600 Subject: Extract baseroms from event_scripts --- src/battle_2.c | 6 +- src/battle_controller_link_opponent.c | 2 +- src/battle_controller_link_partner.c | 2 +- src/battle_controller_player.c | 4 +- src/battle_controller_player_partner.c | 2 +- src/battle_controller_recorded_opponent.c | 2 +- src/battle_controller_recorded_player.c | 2 +- src/battle_controller_safari.c | 4 +- src/battle_controller_wally.c | 4 +- src/berry.c | 8 +-- src/decoration.c | 12 ++-- src/event_data.c | 6 +- src/field_map_obj.c | 4 +- src/item.c | 4 +- src/lilycove_lady.c | 14 ++-- src/lottery_corner.c | 6 +- src/new_game.c | 4 +- src/pokemon_size_record.c | 8 +-- src/safari_zone.c | 36 +++++----- src/scrcmd.c | 56 +++++++-------- src/secret_base.c | 62 ++++++++-------- src/tv.c | 114 +++++++++++++++--------------- src/walda_phrase.c | 8 +-- 23 files changed, 185 insertions(+), 185 deletions(-) (limited to 'src') diff --git a/src/battle_2.c b/src/battle_2.c index 289425ee2..c60b99e13 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -1611,7 +1611,7 @@ void BattleMainCB2(void) if (gMain.heldKeys & B_BUTTON && gBattleTypeFlags & BATTLE_TYPE_RECORDED && sub_8186450()) { - gSpecialVar_ScriptResult = gBattleOutcome = BATTLE_PLAYER_TELEPORTED; + gSpecialVar_Result = gBattleOutcome = BATTLE_PLAYER_TELEPORTED; ResetPaletteFadeControl(); BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); SetMainCallback2(CB2_QuitRecordedBattle); @@ -4750,7 +4750,7 @@ static void HandleEndTurn_BattleWon(void) if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) { - gSpecialVar_ScriptResult = gBattleOutcome; + gSpecialVar_Result = gBattleOutcome; gBattleTextBuff1[0] = gBattleOutcome; gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1); gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost; @@ -5012,7 +5012,7 @@ static void ReturnFromBattleToOverworld(void) if (gBattleTypeFlags & BATTLE_TYPE_LINK && gReceivedRemoteLinkPlayers != 0) return; - gSpecialVar_ScriptResult = gBattleOutcome; + gSpecialVar_Result = gBattleOutcome; gMain.inBattle = 0; gMain.callback1 = gPreBattleCallback1; diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 968f6d49f..17e244500 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -36,7 +36,7 @@ extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern struct SpriteTemplate gUnknown_0202499C; -extern u16 gScriptItemId; +extern u16 gSpecialVar_ItemId; extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; extern u8 gBattleOutcome; extern u16 gBattle_BG0_X; diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index 4a70a4dc1..a831b98cf 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -36,7 +36,7 @@ extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern struct SpriteTemplate gUnknown_0202499C; -extern u16 gScriptItemId; +extern u16 gSpecialVar_ItemId; extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; extern u8 gBattleOutcome; extern u16 gBattle_BG0_X; diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 10d361cb9..4fdc2e4a0 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -46,7 +46,7 @@ extern struct MusicPlayerInfo gMPlay_BGM; extern u16 gPartnerTrainerId; extern struct SpriteTemplate gUnknown_0202499C; extern u8 gBattleMonForms[BATTLE_BANKS_COUNT]; -extern u16 gScriptItemId; +extern u16 gSpecialVar_ItemId; extern u8 gUnknown_0203CEE8; extern u8 gUnknown_0203CEE9; extern u8 gUnknown_0203CF00[]; @@ -1416,7 +1416,7 @@ static void CompleteWhenChoseItem(void) { if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { - EmitOneReturnValue(1, gScriptItemId); + EmitOneReturnValue(1, gSpecialVar_ItemId); PlayerBufferExecCompleted(); } } diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 34fd8a3eb..867bde5e4 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -35,7 +35,7 @@ extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern struct SpriteTemplate gUnknown_0202499C; -extern u16 gScriptItemId; +extern u16 gSpecialVar_ItemId; extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; extern u8 gBattleOutcome; extern u16 gBattle_BG0_X; diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index 0dc7631ce..ab086cc80 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -37,7 +37,7 @@ extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern struct SpriteTemplate gUnknown_0202499C; -extern u16 gScriptItemId; +extern u16 gSpecialVar_ItemId; extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; extern u8 gBattleOutcome; extern u16 gBattle_BG0_X; diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index a3343a391..246379378 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -36,7 +36,7 @@ extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern struct SpriteTemplate gUnknown_0202499C; -extern u16 gScriptItemId; +extern u16 gSpecialVar_ItemId; extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; extern u8 gBattleOutcome; extern u16 gBattle_BG0_X; diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 0c5b698cf..49c98915e 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -33,7 +33,7 @@ extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200]; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern struct SpriteTemplate gUnknown_0202499C; -extern u16 gScriptItemId; +extern u16 gSpecialVar_ItemId; extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; extern u8 gBattleOutcome; extern u16 gBattle_BG0_X; @@ -305,7 +305,7 @@ static void CompleteWhenChosePokeblock(void) { if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { - EmitOneReturnValue(1, gScriptItemId); + EmitOneReturnValue(1, gSpecialVar_ItemId); SafariBufferExecCompleted(); } } diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index c2addd30c..2844c76c4 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -45,7 +45,7 @@ extern struct MusicPlayerInfo gMPlay_BGM; extern u16 gPartnerTrainerId; extern struct SpriteTemplate gUnknown_0202499C; extern u8 gBattleMonForms[BATTLE_BANKS_COUNT]; -extern u16 gScriptItemId; +extern u16 gSpecialVar_ItemId; extern u8 gUnknown_03005D7C[BATTLE_BANKS_COUNT]; extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT]; extern u8 gBattleOutcome; @@ -314,7 +314,7 @@ static void CompleteOnChosenItem(void) { if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { - EmitOneReturnValue(1, gScriptItemId); + EmitOneReturnValue(1, gSpecialVar_ItemId); WallyBufferExecCompleted(); } } diff --git a/src/berry.c b/src/berry.c index 2d3efa9c6..6d1fd17a1 100644 --- a/src/berry.c +++ b/src/berry.c @@ -14,7 +14,7 @@ extern void CB2_ChooseBerry(void); extern const u8* GetFieldObjectScriptPointerForComparison(void); extern bool8 sub_8092E9C(u8, u8, u8); -extern u16 gScriptItemId; +extern u16 gSpecialVar_ItemId; extern const u8 BerryTreeScript[]; @@ -1169,7 +1169,7 @@ void FieldObjectInteractionGetBerryTreeData(void) id = FieldObjectGetBerryTreeId(gSelectedMapObject); berry = GetBerryTypeByBerryTreeId(id); ResetBerryTreeSparkleFlag(id); - unk = gSpecialVar_ScriptLastTalked; + unk = gSpecialVar_LastTalked; num = gSaveBlock1Ptr->location.mapNum; group = gSaveBlock1Ptr->location.mapGroup; if (sub_8092E9C(unk, num, group)) @@ -1202,7 +1202,7 @@ void Bag_ChooseBerry(void) void FieldObjectInteractionPlantBerryTree(void) { - u8 berry = ItemIdToBerryType(gScriptItemId); + u8 berry = ItemIdToBerryType(gSpecialVar_ItemId); PlantBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject), berry, 1, TRUE); FieldObjectInteractionGetBerryTreeData(); @@ -1219,7 +1219,7 @@ void FieldObjectInteractionPickBerryTree(void) void FieldObjectInteractionRemoveBerryTree(void) { RemoveBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject)); - sub_8092EF0(gSpecialVar_ScriptLastTalked, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + sub_8092EF0(gSpecialVar_LastTalked, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); } u8 PlayerHasBerries(void) diff --git a/src/decoration.c b/src/decoration.c index 5396a125c..37cabf652 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1600,7 +1600,7 @@ void sub_81289F0(u8 taskId) { sCurDecorMapX = gTasks[taskId].data[0] - 7; sCurDecorMapY = gTasks[taskId].data[1] - 7; - ScriptContext1_SetupScript(gUnknown_08275D1F); + ScriptContext1_SetupScript(EventScript_275D1F); } gSprites[sDecor_CameraSpriteObjectIdx1].pos1.y += 2; if (gMapHeader.regionMapSectionId == REGION_MAP_SECRET_BASE) @@ -1700,7 +1700,7 @@ void sub_8128C64(u8 taskId) data[2] ++; break; case 1: - ScriptContext1_SetupScript(gUnknown_08275D0C); + ScriptContext1_SetupScript(EventScript_275D0C); data[2] ++; break; case 2: @@ -2133,10 +2133,10 @@ void sub_8129708(void) u16 i; gSpecialVar_0x8005 = 0; - gSpecialVar_ScriptResult = 0; + gSpecialVar_Result = 0; if (gSpecialVar_0x8004 == sCurDecorSelectedInRearrangement) { - gSpecialVar_ScriptResult = 1; + gSpecialVar_Result = 1; } else if (gDecorations[gUnknown_0203A17C.items[sDecorRearrangementDataBuffer[gSpecialVar_0x8004].idx]].permission == DECORPERM_SOLID_MAT) { @@ -2206,7 +2206,7 @@ void sub_81298EC(u8 taskId) case 1: if (!gPaletteFade.active) { DrawWholeMapView(); - ScriptContext1_SetupScript(gUnknown_08275D2E); + ScriptContext1_SetupScript(EventScript_275D2E); sub_8197434(0, 1); gTasks[taskId].data[2] = 2; } @@ -2691,7 +2691,7 @@ void sub_812A2C4(u8 taskId) data[2] ++; break; case 1: - ScriptContext1_SetupScript(gUnknown_08275D0C); + ScriptContext1_SetupScript(EventScript_275D0C); data[2] ++; break; case 2: diff --git a/src/event_data.c b/src/event_data.c index 88cf4dedc..e3742a147 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -17,9 +17,9 @@ EWRAM_DATA u16 gSpecialVar_0x8008 = 0; EWRAM_DATA u16 gSpecialVar_0x8009 = 0; EWRAM_DATA u16 gSpecialVar_0x800A = 0; EWRAM_DATA u16 gSpecialVar_0x800B = 0; -EWRAM_DATA u16 gSpecialVar_ScriptResult = 0; -EWRAM_DATA u16 gSpecialVar_ScriptLastTalked = 0; -EWRAM_DATA u16 gSpecialVar_ScriptFacing = 0; +EWRAM_DATA u16 gSpecialVar_Result = 0; +EWRAM_DATA u16 gSpecialVar_LastTalked = 0; +EWRAM_DATA u16 gSpecialVar_Facing = 0; EWRAM_DATA u16 gSpecialVar_MonBoxId = 0; EWRAM_DATA u16 gSpecialVar_MonBoxPos = 0; EWRAM_DATA u16 gSpecialVar_0x8014 = 0; diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 9932563f2..dfdeb63a3 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1765,10 +1765,10 @@ void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat) switch (decorCat) { case DECORCAT_DOLL: - sub_808F228(&gMapObjects[mapObjectId], gUnknown_082766A2); + sub_808F228(&gMapObjects[mapObjectId], EventScript_2766A2); break; case DECORCAT_CUSHION: - sub_808F228(&gMapObjects[mapObjectId], gUnknown_082766A6); + sub_808F228(&gMapObjects[mapObjectId], EventScript_2766A6); break; } } diff --git a/src/item.c b/src/item.c index a684ea6f0..32347623e 100644 --- a/src/item.c +++ b/src/item.c @@ -165,11 +165,11 @@ bool8 HasAtLeastOneBerry(void) { if (CheckBagHasItem(i, 1) == TRUE) { - gSpecialVar_ScriptResult = 1; + gSpecialVar_Result = 1; return TRUE; } } - gSpecialVar_ScriptResult = 0; + gSpecialVar_Result = 0; return FALSE; } diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c index f7ec5dbaf..62171e475 100644 --- a/src/lilycove_lady.c +++ b/src/lilycove_lady.c @@ -226,7 +226,7 @@ static EWRAM_DATA struct LilycoveLadyFavour *gUnknown_0203CD64 = NULL; static EWRAM_DATA struct LilycoveLadyQuiz *gUnknown_0203CD68 = NULL; static EWRAM_DATA struct LilycoveLadyContest *gUnknown_0203CD6C = NULL; -extern EWRAM_DATA u16 gScriptItemId; +extern EWRAM_DATA u16 gSpecialVar_ItemId; u8 GetLilycoveLadyId(void) { @@ -242,11 +242,11 @@ void sub_818D9C0(void) { lilycoveLady = &gSaveBlock1Ptr->lilycoveLady; VarSet(VAR_0x4011, gUnknown_0860B074[lilycoveLady->contest.category]); - gSpecialVar_ScriptResult = TRUE; + gSpecialVar_Result = TRUE; } else { - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; } } @@ -308,7 +308,7 @@ void SetLilycoveLadyRandomly(void) void sub_818DAEC(void) { - gSpecialVar_ScriptResult = GetLilycoveLadyId(); + gSpecialVar_Result = GetLilycoveLadyId(); } static u8 sub_818DB04(const u16 *data) @@ -459,7 +459,7 @@ static bool8 sub_818DD84(u16 itemId) bool8 sub_818DE44(void) { - return sub_818DD84(gScriptItemId); + return sub_818DD84(gSpecialVar_ItemId); } bool8 sub_818DE5C(void) @@ -845,7 +845,7 @@ void sub_818E47C(void) void sub_818E490(void) { - RemoveBagItem(gScriptItemId, 1); + RemoveBagItem(gSpecialVar_ItemId, 1); } void sub_818E4A4(void) @@ -853,7 +853,7 @@ void sub_818E4A4(void) u8 i; gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz; - gUnknown_0203CD68->itemId = gScriptItemId; + gUnknown_0203CD68->itemId = gSpecialVar_ItemId; for (i = 0; i < 4; i ++) { gUnknown_0203CD68->playerTrainerId[i] = gSaveBlock2Ptr->playerTrainerId[i]; diff --git a/src/lottery_corner.c b/src/lottery_corner.c index 7c8c32189..211b78f19 100644 --- a/src/lottery_corner.c +++ b/src/lottery_corner.c @@ -42,7 +42,7 @@ void SetRandomLotteryNumber(u16 i) void RetrieveLotteryNumber(void) { u16 lottoNumber = GetLotteryNumber(); - gSpecialVar_ScriptResult = lottoNumber; + gSpecialVar_Result = lottoNumber; } void PickLotteryCornerTicket(void) @@ -66,7 +66,7 @@ void PickLotteryCornerTicket(void) if (!GetMonData(pkmn, MON_DATA_IS_EGG)) { u32 otId = GetMonData(pkmn, MON_DATA_OT_ID); - u8 numMatchingDigits = GetMatchingDigits(gSpecialVar_ScriptResult, otId); + u8 numMatchingDigits = GetMatchingDigits(gSpecialVar_Result, otId); if (numMatchingDigits > gSpecialVar_0x8004 && numMatchingDigits > 1) { @@ -90,7 +90,7 @@ void PickLotteryCornerTicket(void) !GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_IS_EGG)) { u32 otId = GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_OT_ID); - u8 numMatchingDigits = GetMatchingDigits(gSpecialVar_ScriptResult, otId); + u8 numMatchingDigits = GetMatchingDigits(gSpecialVar_Result, otId); if (numMatchingDigits > gSpecialVar_0x8004 && numMatchingDigits > 1) { diff --git a/src/new_game.c b/src/new_game.c index d0666dd71..75e80dc8e 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -59,7 +59,7 @@ extern void ResetContestLinkResults(void); extern void ResetPokeJumpResults(void); extern void SetBerryPowder(u32* powder, u32 newValue); -extern u8 gUnknown_082715DE[]; +extern u8 EventScript_2715DE[]; void WriteUnalignedWord(u32 var, u8 *dataPtr) { @@ -198,7 +198,7 @@ void NewGameInitData(void) ResetFanClub(); ResetLotteryCorner(); WarpToTruck(); - ScriptContext2_RunNewScript(gUnknown_082715DE); + ScriptContext2_RunNewScript(EventScript_2715DE); ResetMiniGamesResults(); copy_strings_to_sav1(); SetLilycoveLady(); diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c index e138b86c8..ec0103bc7 100644 --- a/src/pokemon_size_record.c +++ b/src/pokemon_size_record.c @@ -109,13 +109,13 @@ static void FormatMonSizeRecord(u8 *string, u32 size) static u8 CompareMonSize(u16 species, u16 *sizeRecord) { - if (gSpecialVar_ScriptResult == 0xFF) + if (gSpecialVar_Result == 0xFF) { return 0; } else { - struct Pokemon *pkmn = &gPlayerParty[gSpecialVar_ScriptResult]; + struct Pokemon *pkmn = &gPlayerParty[gSpecialVar_Result]; if (GetMonData(pkmn, MON_DATA_IS_EGG) == TRUE || GetMonData(pkmn, MON_DATA_SPECIES) != species) { @@ -173,7 +173,7 @@ void CompareSeedotSize(void) { u16 *sizeRecord = GetVarPointer(VAR_SEEDOT_SIZE_RECORD); - gSpecialVar_ScriptResult = CompareMonSize(SPECIES_SEEDOT, sizeRecord); + gSpecialVar_Result = CompareMonSize(SPECIES_SEEDOT, sizeRecord); } void InitLotadSizeRecord(void) @@ -192,7 +192,7 @@ void CompareLotadSize(void) { u16 *sizeRecord = GetVarPointer(VAR_LOTAD_SIZE_RECORD); - gSpecialVar_ScriptResult = CompareMonSize(SPECIES_LOTAD, sizeRecord); + gSpecialVar_Result = CompareMonSize(SPECIES_LOTAD, sizeRecord); } void GiveGiftRibbonToParty(u8 index, u8 ribbonId) diff --git a/src/safari_zone.c b/src/safari_zone.c index a493dd13f..d3d40af28 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -20,10 +20,10 @@ struct PokeblockFeeder extern u8 gBattleOutcome; extern void* gFieldCallback; -extern u8 gUnknown_082A4B8A[]; -extern u8 gUnknown_082A4B6F[]; -extern u8 gUnknown_082A4B4C[]; -extern u8 gUnknown_082A4B9B[]; +extern u8 EventScript_2A4B8A[]; +extern u8 EventScript_2A4B6F[]; +extern u8 EventScript_2A4B4C[]; +extern u8 EventScript_2A4B9B[]; extern const u8* const gPokeblockNames[]; extern void sub_80EE44C(u8, u8); @@ -94,7 +94,7 @@ bool8 SafariZoneTakeStep(void) sSafariZoneStepCounter--; if (sSafariZoneStepCounter == 0) { - ScriptContext1_SetupScript(gUnknown_082A4B8A); + ScriptContext1_SetupScript(EventScript_2A4B8A); return TRUE; } return FALSE; @@ -102,7 +102,7 @@ bool8 SafariZoneTakeStep(void) void SafariZoneRetirePrompt(void) { - ScriptContext1_SetupScript(gUnknown_082A4B6F); + ScriptContext1_SetupScript(EventScript_2A4B6F); } void sub_80FC190(void) @@ -116,14 +116,14 @@ void sub_80FC190(void) } else if (gBattleOutcome == BATTLE_SAFARI_OUT_OF_BALLS) { - ScriptContext2_RunNewScript(gUnknown_082A4B4C); + ScriptContext2_RunNewScript(EventScript_2A4B4C); warp_in(); gFieldCallback = sub_80AF6F0; SetMainCallback2(c2_load_new_map); } else if (gBattleOutcome == BATTLE_CAUGHT) { - ScriptContext1_SetupScript(gUnknown_082A4B9B); + ScriptContext1_SetupScript(EventScript_2A4B9B); ScriptContext1_Stop(); SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); } @@ -152,13 +152,13 @@ void GetPokeblockFeederInFront(void) && sPokeblockFeeders[i].x == x && sPokeblockFeeders[i].y == y) { - gSpecialVar_ScriptResult = i; + gSpecialVar_Result = i; StringCopy(gStringVar1, gPokeblockNames[sPokeblockFeeders[i].pokeblock.color]); return; } } - gSpecialVar_ScriptResult = -1; + gSpecialVar_Result = -1; } void GetPokeblockFeederWithinRange(void) @@ -181,13 +181,13 @@ void GetPokeblockFeederWithinRange(void) y *= -1; if ((x + y) <= 5) { - gSpecialVar_ScriptResult = i; + gSpecialVar_Result = i; return; } } } - gSpecialVar_ScriptResult = -1; + gSpecialVar_Result = -1; } // unused @@ -195,20 +195,20 @@ struct Pokeblock *SafariZoneGetPokeblockInFront(void) { GetPokeblockFeederInFront(); - if (gSpecialVar_ScriptResult == 0xFFFF) + if (gSpecialVar_Result == 0xFFFF) return NULL; else - return &sPokeblockFeeders[gSpecialVar_ScriptResult].pokeblock; + return &sPokeblockFeeders[gSpecialVar_Result].pokeblock; } struct Pokeblock *SafariZoneGetActivePokeblock(void) { GetPokeblockFeederWithinRange(); - if (gSpecialVar_ScriptResult == 0xFFFF) + if (gSpecialVar_Result == 0xFFFF) return NULL; else - return &sPokeblockFeeders[gSpecialVar_ScriptResult].pokeblock; + return &sPokeblockFeeders[gSpecialVar_Result].pokeblock; } void SafariZoneActivatePokeblockFeeder(u8 pkblId) @@ -255,13 +255,13 @@ bool8 GetInFrontFeederPokeblockAndSteps(void) { GetPokeblockFeederInFront(); - if (gSpecialVar_ScriptResult == 0xFFFF) + if (gSpecialVar_Result == 0xFFFF) { return FALSE; } ConvertIntToDecimalStringN(gStringVar2, - sPokeblockFeeders[gSpecialVar_ScriptResult].stepCounter, + sPokeblockFeeders[gSpecialVar_Result].stepCounter, STR_CONV_MODE_LEADING_ZEROS, 3); return TRUE; diff --git a/src/scrcmd.c b/src/scrcmd.c index 4fa88f359..183b9bab5 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -69,9 +69,9 @@ extern u16 gSpecialVar_0x8001; extern u16 gSpecialVar_0x8002; extern u16 gSpecialVar_0x8004; -extern u16 gSpecialVar_ScriptResult; +extern u16 gSpecialVar_Result; -extern u16 gScriptContestCategory; +extern u16 gSpecialVar_ContestCategory; IWRAM_DATA u8 gUnknown_03000F30; @@ -491,7 +491,7 @@ bool8 ScrCmd_random(struct ScriptContext *ctx) { u16 max = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_ScriptResult = Random() % max; + gSpecialVar_Result = Random() % max; return FALSE; } @@ -500,7 +500,7 @@ bool8 ScrCmd_giveitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_ScriptResult = AddBagItem(itemId, (u8)quantity); + gSpecialVar_Result = AddBagItem(itemId, (u8)quantity); return FALSE; } @@ -509,7 +509,7 @@ bool8 ScrCmd_takeitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_ScriptResult = RemoveBagItem(itemId, (u8)quantity); + gSpecialVar_Result = RemoveBagItem(itemId, (u8)quantity); return FALSE; } @@ -518,7 +518,7 @@ bool8 ScrCmd_checkitemspace(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_ScriptResult = CheckBagHasSpace(itemId, (u8)quantity); + gSpecialVar_Result = CheckBagHasSpace(itemId, (u8)quantity); return FALSE; } @@ -527,7 +527,7 @@ bool8 ScrCmd_checkitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_ScriptResult = CheckBagHasItem(itemId, (u8)quantity); + gSpecialVar_Result = CheckBagHasItem(itemId, (u8)quantity); return FALSE; } @@ -535,7 +535,7 @@ bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_ScriptResult = GetPocketByItemId(itemId); + gSpecialVar_Result = GetPocketByItemId(itemId); return FALSE; } @@ -544,7 +544,7 @@ bool8 ScrCmd_givepcitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_ScriptResult = AddPCItem(itemId, quantity); + gSpecialVar_Result = AddPCItem(itemId, quantity); return FALSE; } @@ -553,7 +553,7 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_ScriptResult = CheckPCHasItem(itemId, quantity); + gSpecialVar_Result = CheckPCHasItem(itemId, quantity); return FALSE; } @@ -561,7 +561,7 @@ bool8 ScrCmd_givedecoration(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_ScriptResult = DecorationAdd(decorId); + gSpecialVar_Result = DecorationAdd(decorId); return FALSE; } @@ -569,7 +569,7 @@ bool8 ScrCmd_takedecoration(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_ScriptResult = DecorationRemove(decorId); + gSpecialVar_Result = DecorationRemove(decorId); return FALSE; } @@ -577,7 +577,7 @@ bool8 ScrCmd_checkdecorspace(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_ScriptResult = DecorationCheckSpace(decorId); + gSpecialVar_Result = DecorationCheckSpace(decorId); return FALSE; } @@ -585,7 +585,7 @@ bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_ScriptResult = CheckHasDecoration(decorId); + gSpecialVar_Result = CheckHasDecoration(decorId); return FALSE; } @@ -909,7 +909,7 @@ bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx) bool8 ScrCmd_getpartysize(struct ScriptContext *ctx) { - gSpecialVar_ScriptResult = CalculatePlayerPartyCount(); + gSpecialVar_Result = CalculatePlayerPartyCount(); return FALSE; } @@ -1835,7 +1835,7 @@ bool8 ScrCmd_givemon(struct ScriptContext *ctx) u32 unkParam2 = ScriptReadWord(ctx); u8 unkParam3 = ScriptReadByte(ctx); - gSpecialVar_ScriptResult = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3); + gSpecialVar_Result = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3); return FALSE; } @@ -1843,7 +1843,7 @@ bool8 ScrCmd_giveegg(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_ScriptResult = ScriptGiveEgg(species); + gSpecialVar_Result = ScriptGiveEgg(species); return FALSE; } @@ -1862,7 +1862,7 @@ bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx) u8 i; u16 moveId = ScriptReadHalfword(ctx); - gSpecialVar_ScriptResult = 6; + gSpecialVar_Result = 6; for (i = 0; i < 6; i++) { u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL); @@ -1871,7 +1871,7 @@ bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx) // UB: GetMonData() arguments don't match function definition if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) && pokemon_has_move(&gPlayerParty[i], moveId) == TRUE) { - gSpecialVar_ScriptResult = i; + gSpecialVar_Result = i; gSpecialVar_0x8004 = species; break; } @@ -1905,7 +1905,7 @@ bool8 ScrCmd_checkmoney(struct ScriptContext *ctx) u8 ignore = ScriptReadByte(ctx); if (!ignore) - gSpecialVar_ScriptResult = IsEnoughMoney(&gSaveBlock1Ptr->money, amount); + gSpecialVar_Result = IsEnoughMoney(&gSaveBlock1Ptr->money, amount); return FALSE; } @@ -2085,7 +2085,7 @@ bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx) { u16 value = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_ScriptResult = GetPriceReduction(value); + gSpecialVar_Result = GetPriceReduction(value); return FALSE; } @@ -2113,7 +2113,7 @@ bool8 ScrCmd_showcontestresults(struct ScriptContext *ctx) bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx) { - sub_80F84C4(gScriptContestCategory); + sub_80F84C4(gSpecialVar_ContestCategory); ScriptContext1_Stop(); return TRUE; } @@ -2160,7 +2160,7 @@ bool8 ScrCmd_setrespawn(struct ScriptContext *ctx) bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx) { - gSpecialVar_ScriptResult = gSaveBlock2Ptr->playerGender; + gSpecialVar_Result = gSaveBlock2Ptr->playerGender; return FALSE; } @@ -2285,9 +2285,9 @@ bool8 ScrCmd_givecoins(struct ScriptContext *ctx) u16 coins = VarGet(ScriptReadHalfword(ctx)); if (GiveCoins(coins) == TRUE) - gSpecialVar_ScriptResult = 0; + gSpecialVar_Result = 0; else - gSpecialVar_ScriptResult = 1; + gSpecialVar_Result = 1; return FALSE; } @@ -2296,9 +2296,9 @@ bool8 ScrCmd_takecoins(struct ScriptContext *ctx) u16 coins = VarGet(ScriptReadHalfword(ctx)); if (TakeCoins(coins) == TRUE) - gSpecialVar_ScriptResult = 0; + gSpecialVar_Result = 0; else - gSpecialVar_ScriptResult = 1; + gSpecialVar_Result = 1; return FALSE; } @@ -2367,7 +2367,7 @@ bool8 ScrCmd_checkmonobedience(struct ScriptContext *ctx) { u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_ScriptResult = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, NULL); + gSpecialVar_Result = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, NULL); return FALSE; } diff --git a/src/secret_base.c b/src/secret_base.c index 7a1a53828..89e276e80 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -175,14 +175,14 @@ void sub_80E8B6C(void) { u16 i; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; for (i = 0; i < 20; i ++) { if (sCurSecretBaseId != gSaveBlock1Ptr->secretBases[i].secretBaseId) { continue; } - gSpecialVar_ScriptResult = TRUE; + gSpecialVar_Result = TRUE; VarSet(VAR_0x4054, i); break; } @@ -192,11 +192,11 @@ void sub_80E8BC8(void) { if (gSaveBlock1Ptr->secretBases[0].secretBaseId != 0) { - gSpecialVar_ScriptResult = TRUE; + gSpecialVar_Result = TRUE; } else { - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; } } @@ -544,22 +544,22 @@ void sub_80E933C(void) metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); if (MetatileBehavior_IsMB_B5(metatile) == TRUE || MetatileBehavior_IsMB_C3(metatile) == TRUE) { - gSpecialVar_ScriptResult = gMapHeader.events->mapObjects[objIdx].graphicsId + VAR_0x3F20; - VarSet(gSpecialVar_ScriptResult, gDecorations[roomDecor[decorIdx]].tiles[0]); - gSpecialVar_ScriptResult = gMapHeader.events->mapObjects[objIdx].localId; + gSpecialVar_Result = gMapHeader.events->mapObjects[objIdx].graphicsId + VAR_0x3F20; + VarSet(gSpecialVar_Result, gDecorations[roomDecor[decorIdx]].tiles[0]); + gSpecialVar_Result = gMapHeader.events->mapObjects[objIdx].localId; FlagClear(gSpecialVar_0x8004 + 0xAE); - show_sprite(gSpecialVar_ScriptResult, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); - sub_808EBA8(gSpecialVar_ScriptResult, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); - sub_808F254(gSpecialVar_ScriptResult, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + show_sprite(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + sub_808EBA8(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); + sub_808F254(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); if (CurrentMapIsSecretBase() == TRUE && VarGet(VAR_0x4054) != 0) { if (category == DECORCAT_DOLL) { - sub_808F28C(gSpecialVar_ScriptResult, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, DECORCAT_DOLL); + sub_808F28C(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, DECORCAT_DOLL); } else if (category == DECORCAT_CUSHION) { - sub_808F28C(gSpecialVar_ScriptResult, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, DECORCAT_CUSHION); + sub_808F28C(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, DECORCAT_CUSHION); } } gSpecialVar_0x8004 ++; @@ -608,14 +608,14 @@ void sub_80E9668(struct Coords16 *coords, struct MapEvents *events) { sub_80E9608(coords, events); sub_80E8B6C(); - ScriptContext1_SetupScript(gUnknown_08275BB7); + ScriptContext1_SetupScript(EventScript_275BB7); } bool8 sub_80E9680(void) { sub_80E8B58(); sub_80E8B6C(); - if (gSpecialVar_ScriptResult == TRUE) + if (gSpecialVar_Result == TRUE) { return FALSE; } @@ -657,11 +657,11 @@ void sub_80E9744(void) { if (gSaveBlock1Ptr->secretBases[0].secretBaseId != sCurSecretBaseId) { - gSpecialVar_ScriptResult = TRUE; + gSpecialVar_Result = TRUE; } else { - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; } } @@ -1016,15 +1016,15 @@ void sub_80E9BDC(void) { if (sub_80E9878(VarGet(VAR_0x4054)) == TRUE) { - gSpecialVar_ScriptResult = 1; + gSpecialVar_Result = 1; } else if (sub_80E9BA8() > 9) { - gSpecialVar_ScriptResult = 2; + gSpecialVar_Result = 2; } else { - gSpecialVar_ScriptResult = 0; + gSpecialVar_Result = 0; } } @@ -1289,41 +1289,41 @@ const u8 *sub_80EA250(void) param = sub_80EA20C(VarGet(VAR_0x4054)); if (param == 0) { - return gUnknown_08274966; + return SecretBase_RedCave1_Text_274966; } if (param == 1) { - return gUnknown_08274D13; + return SecretBase_RedCave1_Text_274D13; } if (param == 2) { - return gUnknown_08274FFE; + return SecretBase_RedCave1_Text_274FFE; } if (param == 3) { - return gUnknown_08275367; + return SecretBase_RedCave1_Text_275367; } if (param == 4) { - return gUnknown_082756C7; + return SecretBase_RedCave1_Text_2756C7; } if (param == 5) { - return gUnknown_08274B24; + return SecretBase_RedCave1_Text_274B24; } if (param == 6) { - return gUnknown_08274E75; + return SecretBase_RedCave1_Text_274E75; } if (param == 7) { - return gUnknown_082751E1; + return SecretBase_RedCave1_Text_2751E1; } if (param == 8) { - return gUnknown_082754F6; + return SecretBase_RedCave1_Text_2754F6; } - return gUnknown_082758CC; + return SecretBase_RedCave1_Text_2758CC; } void sub_80EA2E4(void) @@ -1335,7 +1335,7 @@ void sub_80EA2E4(void) void sub_80EA30C(void) { - gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].sbr_field_1_5 = gSpecialVar_ScriptResult; + gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].sbr_field_1_5 = gSpecialVar_Result; } void sub_80EA354(void) @@ -1353,7 +1353,7 @@ void sub_80EA354(void) FlagSet(0x922); } gSpecialVar_0x8004 = sub_80EA20C(secretBaseRecordId); - gSpecialVar_ScriptResult = gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_5; + gSpecialVar_Result = gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_5; } diff --git a/src/tv.c b/src/tv.c index 3601f7a10..2cb1d4384 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1263,7 +1263,7 @@ void InterviewAfter_ContestLiveUpdates(void) show2->contestLiveUpdates.kind = TVSHOW_CONTEST_LIVE_UPDATES; show2->contestLiveUpdates.active = TRUE; StringCopy(show2->contestLiveUpdates.playerName, gSaveBlock2Ptr->playerName); - show2->contestLiveUpdates.category = gScriptContestCategory; + show2->contestLiveUpdates.category = gSpecialVar_ContestCategory; show2->contestLiveUpdates.species = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_SPECIES, NULL); show2->contestLiveUpdates.winningSpecies = show->contestLiveUpdates.winningSpecies; show2->contestLiveUpdates.appealFlags2 = show->contestLiveUpdates.appealFlags2; @@ -1288,7 +1288,7 @@ void PutBattleUpdateOnTheAir(u8 a0, u16 a1, u16 a2, u16 a3) if (sCurTVShowSlot != -1) { FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BATTLE_UPDATE); - if (gSpecialVar_ScriptResult != 1) + if (gSpecialVar_Result != 1) { show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; show->battleUpdate.kind = TVSHOW_BATTLE_UPDATE; @@ -1337,7 +1337,7 @@ bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unus return FALSE; } FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_3_CHEERS_FOR_POKEBLOCKS); - if (gSpecialVar_ScriptResult == 1) + if (gSpecialVar_Result == 1) { return FALSE; } @@ -1527,8 +1527,8 @@ void BravoTrainerPokemonProfile_BeforeInterview2(u8 a0) if (sCurTVShowSlot != -1) { show->bravoTrainer.contestResult = a0; - show->bravoTrainer.contestCategory = gScriptContestCategory; - show->bravoTrainer.contestRank = gUnknown_02039F2E; + show->bravoTrainer.contestCategory = gSpecialVar_ContestCategory; + show->bravoTrainer.contestRank = gSpecialVar_ContestRank; show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_SPECIES, NULL); GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_NICKNAME, show->bravoTrainer.pokemonNickname); StripExtCtrlCodes(show->bravoTrainer.pokemonNickname); @@ -1606,7 +1606,7 @@ void PutNameRaterShowOnTheAir(void) TVShow *show; InterviewBefore_NameRater(); - if (gSpecialVar_ScriptResult != 1) + if (gSpecialVar_Result != 1) { GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1); if (StringLength(gSaveBlock2Ptr->playerName) > 1 && StringLength(gStringVar1) > 1) @@ -1653,7 +1653,7 @@ void PutLilycoveContestLadyShowOnTheAir(void) TVShow *show; sub_80EFA88(); - if (gSpecialVar_ScriptResult != TRUE) + if (gSpecialVar_Result != TRUE) { show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; sub_818E848(&show->contestLiveUpdates2.language); @@ -2613,7 +2613,7 @@ bool8 sub_80EE7C0(void) return TRUE; } FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_SPECIAL); - if (gSpecialVar_ScriptResult == TRUE) + if (gSpecialVar_Result == TRUE) { return TRUE; } @@ -2905,7 +2905,7 @@ void DoPokeNews(void) i = FindAnyTVNewsOnTheAir(); if (i == 0xFF) { - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; } else { @@ -2928,7 +2928,7 @@ void DoPokeNews(void) gSaveBlock1Ptr->pokeNews[i].state = 0; ShowFieldMessage(sPokeNewsTextGroup_Upcoming[gSaveBlock1Ptr->pokeNews[i].kind]); } - gSpecialVar_ScriptResult = TRUE; + gSpecialVar_Result = TRUE; } } @@ -2959,7 +2959,7 @@ bool8 IsPriceDiscounted(u8 newsKind) switch (newsKind) { case POKENEWS_SLATEPORT: - if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1Ptr->location.mapNum == MAP_ID_SLATEPORT_CITY && gSpecialVar_ScriptLastTalked == 25) + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1Ptr->location.mapNum == MAP_ID_SLATEPORT_CITY && gSpecialVar_LastTalked == 25) { return TRUE; } @@ -3189,7 +3189,7 @@ void FindActiveBroadcastByShowType_SetScriptResult(u8 kind) { if (gSaveBlock1Ptr->tvShows[i].common.active == TRUE) { - gSpecialVar_ScriptResult = TRUE; + gSpecialVar_Result = TRUE; } else { @@ -3205,7 +3205,7 @@ void FindActiveBroadcastByShowType_SetScriptResult(u8 kind) void InterviewBefore(void) { - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; switch (gSpecialVar_0x8005) { case TVSHOW_FAN_CLUB_LETTER: @@ -3244,7 +3244,7 @@ void InterviewBefore(void) void InterviewBefore_FanClubLetter(void) { FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_LETTER); - if (!gSpecialVar_ScriptResult) + if (!gSpecialVar_Result) { StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL)]); InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].fanclubLetter.words, 6); @@ -3254,7 +3254,7 @@ void InterviewBefore_FanClubLetter(void) void InterviewBefore_RecentHappenings(void) { FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_RECENT_HAPPENINGS); - if (!gSpecialVar_ScriptResult) + if (!gSpecialVar_Result) { InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].recentHappenings.words, 6); } @@ -3263,7 +3263,7 @@ void InterviewBefore_RecentHappenings(void) void InterviewBefore_PkmnFanClubOpinions(void) { FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_PKMN_FAN_CLUB_OPINIONS); - if (!gSpecialVar_ScriptResult) + if (!gSpecialVar_Result) { StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL)]); GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2); @@ -3274,7 +3274,7 @@ void InterviewBefore_PkmnFanClubOpinions(void) void InterviewBefore_Dummy(void) { - gSpecialVar_ScriptResult = TRUE; + gSpecialVar_Result = TRUE; } void InterviewBefore_NameRater(void) @@ -3285,7 +3285,7 @@ void InterviewBefore_NameRater(void) void InterviewBefore_BravoTrainerPkmnProfile(void) { FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); - if (!gSpecialVar_ScriptResult) + if (!gSpecialVar_Result) { InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].bravoTrainer.words, 2); } @@ -3304,7 +3304,7 @@ void InterviewBefore_3CheersForPokeblocks(void) void InterviewBefore_BravoTrainerBTProfile(void) { FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); - if (!gSpecialVar_ScriptResult) + if (!gSpecialVar_Result) { InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].bravoTrainerTower.words, 1); } @@ -3313,7 +3313,7 @@ void InterviewBefore_BravoTrainerBTProfile(void) void InterviewBefore_FanClubSpecial(void) { FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_SPECIAL); - if (!gSpecialVar_ScriptResult) + if (!gSpecialVar_Result) { InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].fanClubSpecial.words, 1); } @@ -3429,11 +3429,11 @@ void sub_80EFA88(void) gSpecialVar_0x8006 = sCurTVShowSlot; if (sCurTVShowSlot == -1) { - gSpecialVar_ScriptResult = TRUE; + gSpecialVar_Result = TRUE; } else { - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; } } @@ -3658,11 +3658,11 @@ void TV_CheckMonOTIDEqualsPlayerID(void) { if (GetPlayerIDAsU32() == GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_OT_ID, NULL)) { - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; } else { - gSpecialVar_ScriptResult = TRUE; + gSpecialVar_Result = TRUE; } } @@ -5108,7 +5108,7 @@ void DoTVShowBravoTrainerPokemonProfile(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -5180,7 +5180,7 @@ void DoTVShowBravoTrainerBattleTower(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch(state) { @@ -5277,7 +5277,7 @@ void DoTVShowTodaysSmartShopper(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch(state) { @@ -5400,7 +5400,7 @@ void DoTVShowTheNameRaterShow(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -5498,7 +5498,7 @@ void DoTVShowPokemonTodaySuccessfulCapture(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -5576,7 +5576,7 @@ void DoTVShowPokemonTodayFailedCapture(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -5630,7 +5630,7 @@ void DoTVShowPokemonFanClubLetter(void) u16 rval; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -5683,7 +5683,7 @@ void DoTVShowRecentHappenings(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -5718,7 +5718,7 @@ void DoTVShowPokemonFanClubOpinions(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -5768,7 +5768,7 @@ void DoTVShowPokemonContestLiveUpdates(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -6115,7 +6115,7 @@ void DoTVShowPokemonBattleUpdate(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -6187,7 +6187,7 @@ void DoTVShow3CheersForPokeblocks(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -6288,7 +6288,7 @@ void DoTVShowInSearchOfTrainers(void) { u8 state; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -6344,7 +6344,7 @@ void DoTVShowInSearchOfTrainers(void) CopyEasyChatWord(gStringVar1, gSaveBlock1Ptr->gabbyAndTyData.quote[0]); StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon1]); StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon2]); - gSpecialVar_ScriptResult = TRUE; + gSpecialVar_Result = TRUE; sTVShowState = 0; TakeTVShowInSearchOfTrainersOffTheAir(); break; @@ -6358,7 +6358,7 @@ void DoTVShowPokemonAngler(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; if (show->pokemonAngler.nBites < show->pokemonAngler.nFails) { sTVShowState = 0; @@ -6392,7 +6392,7 @@ void DoTVShowTheWorldOfMasters(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -6422,7 +6422,7 @@ void DoTVShowTodaysRivalTrainer(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -6571,7 +6571,7 @@ void DoTVShowDewfordTrendWatcherNetwork(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -6627,7 +6627,7 @@ void DoTVShowHoennTreasureInvestigators(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -6671,7 +6671,7 @@ void DoTVShowFindThatGamer(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -6745,7 +6745,7 @@ void DoTVShowBreakingNewsTV(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -6848,7 +6848,7 @@ void DoTVShowSecretBaseVisit(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -6944,7 +6944,7 @@ void DoTVShowPokemonLotteryWinnerFlashReport(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; TVShowConvertInternationalString(gStringVar1, show->lottoWinner.playerName, show->lottoWinner.language); if (show->lottoWinner.whichPrize == 0) @@ -6974,7 +6974,7 @@ void DoTVShowThePokemonBattleSeminar(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -7038,7 +7038,7 @@ void DoTVShowTrainerFanClubSpecial(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -7104,7 +7104,7 @@ void DoTVShowTrainerFanClub(void) u32 playerId; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -7191,7 +7191,7 @@ void DoTVShowSpotTheCuties(void) u32 playerId; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -7296,7 +7296,7 @@ void DoTVShowPokemonNewsBattleFrontier(void) u32 playerId; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -7445,7 +7445,7 @@ void DoTVShowWhatsNo1InHoennToday(void) u32 playerId; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -7561,7 +7561,7 @@ void DoTVShowSecretBaseSecrets(void) u16 i; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -7797,7 +7797,7 @@ void DoTVShowSafariFanClub(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -7884,7 +7884,7 @@ void DoTVShowPokemonContestLiveUpdates2(void) u8 state; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; - gSpecialVar_ScriptResult = FALSE; + gSpecialVar_Result = FALSE; state = sTVShowState; switch (state) { @@ -7916,7 +7916,7 @@ void DoTVShowPokemonContestLiveUpdates2(void) void TVShowDone(void) { - gSpecialVar_ScriptResult = TRUE; + gSpecialVar_Result = TRUE; sTVShowState = 0; gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.active = FALSE; } diff --git a/src/walda_phrase.c b/src/walda_phrase.c index c1da86b15..59fd3fedb 100644 --- a/src/walda_phrase.c +++ b/src/walda_phrase.c @@ -98,17 +98,17 @@ u16 TryGetWallpaperWithWaldaPhrase(void) u16 backgroundClr, foregroundClr; u8 patternId, iconId; u16 trainerId = ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId); - gSpecialVar_ScriptResult = TryCalculateWallpaper(&backgroundClr, &foregroundClr, &iconId, &patternId, trainerId, GetWaldaPhrasePtr()); + gSpecialVar_Result = TryCalculateWallpaper(&backgroundClr, &foregroundClr, &iconId, &patternId, trainerId, GetWaldaPhrasePtr()); - if (gSpecialVar_ScriptResult) + if (gSpecialVar_Result) { SetWaldaWallpaperPatternId(patternId); SetWaldaWallpaperIconId(iconId); SetWaldaWallpaperColors(backgroundClr, foregroundClr); } - SetWaldaWallpaperLockedOrUnlocked(gSpecialVar_ScriptResult); - return (bool8)(gSpecialVar_ScriptResult); + SetWaldaWallpaperLockedOrUnlocked(gSpecialVar_Result); + return (bool8)(gSpecialVar_Result); } static u8 GetLetterTableId(u8 letter) -- cgit v1.2.3 From fa3691ca40d431d3f533c6e1bad47c4c4af81ccf Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 11 Nov 2017 14:45:08 +0100 Subject: start pss --- src/egg_hatch.c | 4 +- src/pokemon_storage_system.c | 122 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 116 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 589e8901d..13c088883 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -75,7 +75,7 @@ extern void CreateYesNoMenu(const struct WindowTemplate*, u16, u8, u8); extern void DoNamingScreen(u8, const u8*, u16, u8, u32, MainCallback); extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor* colors, s8 speed, u8 *str); extern u16 sub_80D22D0(void); -extern u8 sub_80C7050(u8); +extern u8 CountPartyAliveNonEggMonsExcept(u8); static void Task_EggHatch(u8 taskID); static void CB2_EggHatch_0(void); @@ -888,6 +888,6 @@ u8 GetEggStepsToSubtract(void) u16 sub_80722E0(void) { u16 value = sub_80D22D0(); - value += sub_80C7050(6); + value += CountPartyAliveNonEggMonsExcept(6); return value; } diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 3e409244c..8eeac96b1 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -1,15 +1,121 @@ - -// Includes #include "global.h" +#include "pokemon_storage_system.h" +#include "pokemon.h" +#include "species.h" +#include "event_data.h" +#include "string_util.h" +#include "text.h" -// Static type declarations +IWRAM_DATA u8 gUnknown_03000F78[0x188]; -// Static RAM declarations +u8 CountMonsInBox(u8 boxId) +{ + u16 i, count; -IWRAM_DATA u8 gUnknown_03000F78[0x188]; + for (i = 0, count = 0; i < IN_BOX_COUNT; i++) + { + if (GetBoxMonDataFromAnyBox(boxId, i, MON_DATA_SPECIES) != SPECIES_NONE) + count++; + } + + return count; +} + +s16 GetFirstFreeBoxSpot(u8 boxId) +{ + u16 i; + + for (i = 0; i < IN_BOX_COUNT; i++) + { + if (GetBoxMonDataFromAnyBox(boxId, i, MON_DATA_SPECIES) == SPECIES_NONE) + return i; + } + + return -1; // all spots are taken +} + +u8 CountPartyNonEggMons(void) +{ + u16 i, count; + + for (i = 0, count = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) + { + count++; + } + } + + return count; +} + +u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore) +{ + u16 i, count; + + for (i = 0, count = 0; i < PARTY_SIZE; i++) + { + if (i != slotToIgnore + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) + && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0) + { + count++; + } + } + + return count; +} + +u16 CountPartyAliveNonEggMons_IgnoreVar0x8004Slot(void) +{ + return CountPartyAliveNonEggMonsExcept(gSpecialVar_0x8004); +} + +u8 CountPartyMons(void) +{ + u16 i, count; + + for (i = 0, count = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE) + { + count++; + } + } + + return count; +} + +static u8 *StringCopyAndFillWithSpaces(u8 *dst, const u8 *src, u16 n) +{ + u8 *str; + + for (str = StringCopy(dst, src); str < dst + n; str++) + *str = CHAR_SPACE; + + *str = EOS; + return str; +} -// Static ROM declarations +static void sub_80C7128(u16 *dst, u16 dstToAdd, u16 dstToMul, const u16 *src, u16 srcToAdd, u16 srcToMul, u32 size, u16 count, u16 srcBy) +{ + u16 i; -// .rodata + size <<= 0x11; + dst += (dstToMul * 32) + dstToAdd; + src += (srcToMul * srcBy) + srcToAdd; -// .text + i = 0; + if (i < count) + { + size >>= 1; + for (i = 0; i < count; i++) + { + CpuSet(src, dst, size >> 0x10); + dst += 0x20; + src += srcBy; + } + } +} -- cgit v1.2.3 From 7472d639cf846172ad2ab911579451e4052f70aa Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 11 Nov 2017 20:01:04 +0100 Subject: match one function in battlescript cmds --- src/battle_script_commands.c | 432 ++++++++++--------------------------------- 1 file changed, 93 insertions(+), 339 deletions(-) (limited to 'src') diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index c6cec7f0d..ee23b629d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -13,6 +13,7 @@ #include "calculate_base_damage.h" #include "rng.h" #include "battle_controllers.h" +#include "battle_interface.h" #include "species.h" #include "songs.h" #include "text.h" @@ -118,7 +119,7 @@ struct TrainerMoney extern const struct BattleMove gBattleMoves[]; extern const struct BaseStats gBaseStats[]; -extern const u8 gTypeEffectiveness[]; +extern const u8 gTypeEffectiveness[336]; extern const u16 gMissStringIds[]; extern const u16 gTrappingMoves[]; extern const struct TrainerMoney gTrainerMoneyTable[]; @@ -139,7 +140,6 @@ extern void sub_81A5BF8(void); // battle frontier 2 extern void sub_81A5D44(void); // battle frontier 2 extern void sub_81B8E80(u8 bank, u8, u8); // party menu extern bool8 sub_81B1250(void); // ? -extern u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); // battle interface extern bool8 InBattlePike(void); extern bool8 InBattlePyramid(void); extern u16 GetBattlePyramidPickupItemId(void); @@ -340,7 +340,7 @@ static void atk48_playstatchangeanimation(void); static void atk49_moveend(void); static void atk4A_typecalc2(void); static void atk4B_return_atk_to_ball(void); -static void atk4C_copy_poke_data(void); +static void atk4C_get_switched_mon_data(void); static void atk4D_switch_data_update(void); static void atk4E_switchin_anim(void); static void atk4F_jump_if_cannot_switch(void); @@ -368,7 +368,7 @@ static void atk64_statusanimation(void); static void atk65_status2animation(void); static void atk66_chosenstatusanimation(void); static void atk67_yesnobox(void); -static void atk68_80246A0(void); +static void atk68_cancel_everyones_actions(void); static void atk69_dmg_adjustment3(void); static void atk6A_removeitem(void); static void atk6B_atknameinbuff1(void); @@ -457,7 +457,7 @@ static void atkBD_copyfoestats(void); static void atkBE_rapidspinfree(void); static void atkBF_set_defense_curl(void); static void atkC0_recoverbasedonsunlight(void); -static void atkC1_hidden_power(void); +static void atkC1_hidden_power_calc(void); static void atkC2_selectnexttarget(void); static void atkC3_setfutureattack(void); static void atkC4_beat_up(void); @@ -592,7 +592,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk49_moveend, atk4A_typecalc2, atk4B_return_atk_to_ball, - atk4C_copy_poke_data, + atk4C_get_switched_mon_data, atk4D_switch_data_update, atk4E_switchin_anim, atk4F_jump_if_cannot_switch, @@ -620,7 +620,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk65_status2animation, atk66_chosenstatusanimation, atk67_yesnobox, - atk68_80246A0, + atk68_cancel_everyones_actions, atk69_dmg_adjustment3, atk6A_removeitem, atk6B_atknameinbuff1, @@ -709,7 +709,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkBE_rapidspinfree, atkBF_set_defense_curl, atkC0_recoverbasedonsunlight, - atkC1_hidden_power, + atkC1_hidden_power_calc, atkC2_selectnexttarget, atkC3_setfutureattack, atkC4_beat_up, @@ -828,7 +828,7 @@ static const u32 sStatusFlagsForMoveEffects[] = 0x00000000, 0x00000000, STATUS2_ESCAPE_PREVENTION, - 0x08000000, + STATUS2_NIGHTMARE, 0x00000000, 0x00000000, 0x00000000, @@ -1233,7 +1233,7 @@ bool8 JumpIfMoveAffectedByProtect(u16 move) return affected; } -bool8 AccuracyCalcHelper(u16 move) +static bool8 AccuracyCalcHelper(u16 move) { if (gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker) { @@ -1532,9 +1532,6 @@ static void ModulateDmgByType(u8 multiplier) } } -#define TYPE_FORESIGHT 0xFE -#define TYPE_ENDTABLE 0xFF - static void atk06_typecalc(void) { s32 i = 0; @@ -1566,24 +1563,24 @@ static void atk06_typecalc(void) } else { - while (gTypeEffectiveness[i] != TYPE_ENDTABLE) + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) { - if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) { if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) break; i += 3; continue; } - else if (gTypeEffectiveness[i] == moveType) + else if (TYPE_EFFECT_ATK_TYPE(i) == moveType) { // check type1 - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1) - ModulateDmgByType(gTypeEffectiveness[i + 2]); + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type1) + ModulateDmgByType(TYPE_EFFECT_MULTIPLIER(i)); // check type2 - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type2 && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2) - ModulateDmgByType(gTypeEffectiveness[i + 2]); + ModulateDmgByType(TYPE_EFFECT_MULTIPLIER(i)); } i += 3; } @@ -1625,45 +1622,46 @@ static void CheckWonderGuardAndLevitate(void) return; } - while (gTypeEffectiveness[i] != TYPE_ENDTABLE) + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) { - if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) { if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) break; i += 3; continue; } - if (gTypeEffectiveness[i] == moveType) + if (TYPE_EFFECT_ATK_TYPE(i) == moveType) { // check no effect - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 0) + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type1 + && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT) { gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; gProtectStructs[gBankAttacker].targetNotAffected = 1; } - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type2 && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 && - gTypeEffectiveness[i + 2] == TYPE_MUL_NO_EFFECT) + TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT) { gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; gProtectStructs[gBankAttacker].targetNotAffected = 1; } // check super effective - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 20) + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type1 && TYPE_EFFECT_MULTIPLIER(i) == 20) flags |= 1; - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type2 && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 - && gTypeEffectiveness[i + 2] == TYPE_MUL_SUPER_EFFECTIVE) + && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) flags |= 1; // check not very effective - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 5) + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type1 && TYPE_EFFECT_MULTIPLIER(i) == 5) flags |= 2; - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type2 && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 - && gTypeEffectiveness[i + 2] == TYPE_MUL_NOT_EFFECTIVE) + && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NOT_EFFECTIVE) flags |= 2; } i += 3; @@ -1738,9 +1736,9 @@ u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef) } else { - while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) { - if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) { if (gBattleMons[bankDef].status2 & STATUS2_FORESIGHT) break; @@ -1748,15 +1746,15 @@ u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef) continue; } - else if (gTypeEffectiveness[i] == moveType) + else if (TYPE_EFFECT_ATK_TYPE(i) == moveType) { // check type1 - if (gTypeEffectiveness[i + 1] == gBattleMons[bankDef].type1) - ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[bankDef].type1) + ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags); // check type2 - if (gTypeEffectiveness[i + 1] == gBattleMons[bankDef].type2 && + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[bankDef].type2 && gBattleMons[bankDef].type1 != gBattleMons[bankDef].type2) - ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags); } i += 3; } @@ -1790,21 +1788,21 @@ u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility) } else { - while (gTypeEffectiveness[i] != TYPE_ENDTABLE) + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) { - if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) { i += 3; continue; } - if (gTypeEffectiveness[i] == moveType) + if (TYPE_EFFECT_ATK_TYPE(i) == moveType) { // check type1 - if (gTypeEffectiveness[i + 1] == type1) - ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + if (TYPE_EFFECT_DEF_TYPE(i) == type1) + ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags); // check type2 - if (gTypeEffectiveness[i + 1] == type2 && type1 != type2) - ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); + if (TYPE_EFFECT_DEF_TYPE(i) == type2 && type1 != type2) + ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags); } i += 3; } @@ -5224,9 +5222,9 @@ static void atk4A_typecalc2(void) } else { - while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) { - if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) { if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) { @@ -5239,43 +5237,43 @@ static void atk4A_typecalc2(void) } } - if (gTypeEffectiveness[i] == moveType) + if (TYPE_EFFECT_ATK_TYPE(i) == moveType) { // check type1 - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1) + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type1) { - if (gTypeEffectiveness[i + 2] == 0) + if (TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT) { gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; break; } - if (gTypeEffectiveness[i + 2] == 5) + if (TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NOT_EFFECTIVE) { flags |= MOVESTATUS_NOTVERYEFFECTIVE; } - if (gTypeEffectiveness[i + 2] == 20) + if (TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) { flags |= MOVESTATUS_SUPEREFFECTIVE; } } // check type2 - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2) + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type2) { if (gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 - && gTypeEffectiveness[i + 2] == 0) + && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT) { gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED; break; } - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type2 && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 - && gTypeEffectiveness[i + 2] == 5) + && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NOT_EFFECTIVE) { flags |= MOVESTATUS_NOTVERYEFFECTIVE; } - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 + if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type2 && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 - && gTypeEffectiveness[i + 2] == 20) + && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) { flags |= MOVESTATUS_SUPEREFFECTIVE; } @@ -5314,7 +5312,7 @@ static void atk4B_return_atk_to_ball(void) gBattlescriptCurrInstr++; } -static void atk4C_copy_poke_data(void) +static void atk4C_get_switched_mon_data(void) { if (gBattleExecBuffer) return; @@ -5323,7 +5321,7 @@ static void atk4C_copy_poke_data(void) gBattlePartyID[gActiveBank] = *(gBattleStruct->field_5C + gActiveBank); - EmitGetMonData(0, 0, gBitTable[gBattlePartyID[gActiveBank]]); + EmitGetMonData(0, REQUEST_ALL_BATTLE, gBitTable[gBattlePartyID[gActiveBank]]); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 2; @@ -5360,7 +5358,7 @@ static void atk4D_switch_data_update(void) if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) { - for (i = 0; i < 8; i++) + for (i = 0; i < BATTLE_STATS_NO; i++) { gBattleMons[gActiveBank].statStages[i] = oldData.statStages[i]; } @@ -5376,11 +5374,8 @@ static void atk4D_switch_data_update(void) } gBattleScripting.bank = gActiveBank; - gBattleTextBuff1[0] = PLACEHOLDER_BEGIN; - gBattleTextBuff1[1] = 7; - gBattleTextBuff1[2] = gActiveBank; - gBattleTextBuff1[3] = gBattlePartyID[gActiveBank]; - gBattleTextBuff1[4] = EOS; + + PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gActiveBank, gBattlePartyID[gActiveBank]); gBattlescriptCurrInstr += 2; } @@ -6565,7 +6560,7 @@ static void atk67_yesnobox(void) } } -static void atk68_80246A0(void) +static void atk68_cancel_everyones_actions(void) { s32 i; @@ -8803,7 +8798,6 @@ static void atkA5_painsplitdmgcalc(void) } } -#ifdef NONMATCHING static void atkA6_settypetorandomresistance(void) // conversion 2 { if (gUnknown_02024250[gBankAttacker] == 0 @@ -8818,298 +8812,58 @@ static void atkA6_settypetorandomresistance(void) // conversion 2 } else { - s32 type = 0, rands = 0; - do + s32 i, j, rands; + + for (rands = 0; rands < 1000; rands++) { - while (((type = (Random() & 0x7F)) > 0x70)); + while (((i = (Random() & 0x7F)) > sizeof(gTypeEffectiveness) / 3)); - type *= 3; + i *= 3; - if (gTypeEffectiveness[type] == gUnknown_02024258[gBankAttacker] - && gTypeEffectiveness[type + 2] <= 5 - && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] - && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1]) + if (TYPE_EFFECT_ATK_TYPE(i) == gUnknown_02024258[gBankAttacker] + && TYPE_EFFECT_MULTIPLIER(i) <= TYPE_MUL_NOT_EFFECTIVE + && gBattleMons[gBankAttacker].type1 != TYPE_EFFECT_DEF_TYPE(i) + && gBattleMons[gBankAttacker].type2 != TYPE_EFFECT_DEF_TYPE(i)) { - gBattleMons[gBankAttacker].type1 = type; - gBattleMons[gBankAttacker].type2 = type; + gBattleMons[gBankAttacker].type1 = TYPE_EFFECT_DEF_TYPE(i); + gBattleMons[gBankAttacker].type2 = TYPE_EFFECT_DEF_TYPE(i); - PREPARE_TYPE_BUFFER(gBattleTextBuff1, type) + PREPARE_TYPE_BUFFER(gBattleTextBuff1, TYPE_EFFECT_DEF_TYPE(i)) gBattlescriptCurrInstr += 5; return; } + } - rands++; - } while (rands <= 999); - - type = 0, rands = 0; - do + for (j = 0, rands = 0; rands < sizeof(gTypeEffectiveness); j += 3, rands += 3) { - s8 var = (s8)(gTypeEffectiveness[type]); - if (var > -1 || var < -2) + switch (TYPE_EFFECT_ATK_TYPE(j)) { - if (gTypeEffectiveness[type] == gUnknown_02024258[gBankAttacker] - && gTypeEffectiveness[type + 2] <= 5 - && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] - && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1]) + case TYPE_ENDTABLE: + case TYPE_FORESIGHT: + break; + default: + if (TYPE_EFFECT_ATK_TYPE(j) == gUnknown_02024258[gBankAttacker] + && TYPE_EFFECT_MULTIPLIER(j) <= 5 + && gBattleMons[gBankAttacker].type1 != TYPE_EFFECT_DEF_TYPE(i) + && gBattleMons[gBankAttacker].type2 != TYPE_EFFECT_DEF_TYPE(i)) { - gBattleMons[gBankAttacker].type1 = gTypeEffectiveness[rands + 1]; - gBattleMons[gBankAttacker].type2 = gTypeEffectiveness[rands + 1]; + gBattleMons[gBankAttacker].type1 = TYPE_EFFECT_DEF_TYPE(rands); + gBattleMons[gBankAttacker].type2 = TYPE_EFFECT_DEF_TYPE(rands); - PREPARE_TYPE_BUFFER(gBattleTextBuff1, gTypeEffectiveness[rands + 1]) + PREPARE_TYPE_BUFFER(gBattleTextBuff1, TYPE_EFFECT_DEF_TYPE(rands)) gBattlescriptCurrInstr += 5; return; } + break; } - type += 3, rands += 3; - } while (rands < 336); + } gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } } -#else -__attribute__((naked)) -static void atkA6_settypetorandomresistance(void) // conversion 2 -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - ldr r1, =gUnknown_02024250\n\ - ldr r4, =gBankAttacker\n\ - ldrb r0, [r4]\n\ - lsls r0, 1\n\ - adds r2, r0, r1\n\ - ldrh r1, [r2]\n\ - cmp r1, 0\n\ - beq _08052B7E\n\ - ldr r0, =0x0000ffff\n\ - cmp r1, r0\n\ - beq _08052B7E\n\ - ldrh r0, [r2]\n\ - bl IsTwoTurnsMove\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _08052C1C\n\ - ldr r1, =gBattleMons\n\ - ldr r2, =gUnknown_02024270\n\ - ldrb r0, [r4]\n\ - adds r0, r2\n\ - ldrb r2, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r1, 0x50\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x80\n\ - lsls r1, 5\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08052C1C\n\ -_08052B7E:\n\ - ldr r3, =gBattlescriptCurrInstr\n\ - ldr r2, [r3]\n\ - ldrb r1, [r2, 0x1]\n\ - ldrb r0, [r2, 0x2]\n\ - lsls r0, 8\n\ - orrs r1, r0\n\ - ldrb r0, [r2, 0x3]\n\ - lsls r0, 16\n\ - orrs r1, r0\n\ - ldrb r0, [r2, 0x4]\n\ - lsls r0, 24\n\ - orrs r1, r0\n\ - str r1, [r3]\n\ - b _08052D08\n\ - .pool\n\ -_08052BB4:\n\ - mov r0, r12\n\ - strb r5, [r0]\n\ - mov r1, r10\n\ - ldrb r0, [r1]\n\ - muls r0, r2\n\ - adds r0, r7\n\ - adds r0, 0x22\n\ - strb r5, [r0]\n\ - ldr r1, =gBattleTextBuff1\n\ - movs r0, 0xFD\n\ - strb r0, [r1]\n\ - movs r0, 0x3\n\ - strb r0, [r1, 0x1]\n\ - strb r5, [r1, 0x2]\n\ - movs r0, 0xFF\n\ - strb r0, [r1, 0x3]\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - b _08052C0A\n\ - .pool\n\ -_08052BE0:\n\ - mov r0, r8\n\ - adds r0, 0x1\n\ - adds r0, r3\n\ - ldrb r2, [r0]\n\ - strb r2, [r4]\n\ - mov r4, r10\n\ - ldrb r0, [r4]\n\ - muls r0, r6\n\ - ldr r7, =gBattleMons\n\ - adds r0, r7\n\ - adds r0, 0x22\n\ - strb r2, [r0]\n\ - ldr r1, =gBattleTextBuff1\n\ - movs r0, 0xFD\n\ - strb r0, [r1]\n\ - movs r0, 0x3\n\ - strb r0, [r1, 0x1]\n\ - strb r2, [r1, 0x2]\n\ - movs r0, 0xFF\n\ - strb r0, [r1, 0x3]\n\ - mov r1, r12\n\ -_08052C0A:\n\ - ldr r0, [r1]\n\ - adds r0, 0x5\n\ - str r0, [r1]\n\ - b _08052D08\n\ - .pool\n\ -_08052C1C:\n\ - movs r4, 0\n\ - mov r8, r4\n\ - movs r7, 0x7F\n\ - mov r9, r7\n\ -_08052C24:\n\ - bl Random\n\ - mov r4, r9\n\ - ands r4, r0\n\ - cmp r4, 0x70\n\ - bhi _08052C24\n\ - lsls r0, r4, 1\n\ - adds r4, r0, r4\n\ - ldr r6, =gTypeEffectiveness\n\ - adds r3, r4, r6\n\ - ldr r1, =gUnknown_02024258\n\ - ldr r2, =gBankAttacker\n\ - ldrb r5, [r2]\n\ - lsls r0, r5, 1\n\ - adds r0, r1\n\ - ldrb r1, [r3]\n\ - mov r10, r2\n\ - ldrh r0, [r0]\n\ - cmp r1, r0\n\ - bne _08052C80\n\ - adds r0, r4, 0x2\n\ - adds r0, r6\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x5\n\ - bhi _08052C80\n\ - ldr r7, =gBattleMons\n\ - movs r2, 0x58\n\ - adds r0, r5, 0\n\ - muls r0, r2\n\ - adds r3, r0, r7\n\ - movs r0, 0x21\n\ - adds r0, r3\n\ - mov r12, r0\n\ - adds r0, r4, 0x1\n\ - adds r0, r6\n\ - ldrb r5, [r0]\n\ - mov r1, r12\n\ - ldrb r0, [r1]\n\ - adds r1, r5, 0\n\ - cmp r0, r1\n\ - beq _08052C80\n\ - adds r0, r3, 0\n\ - adds r0, 0x22\n\ - ldrb r0, [r0]\n\ - cmp r0, r1\n\ - bne _08052BB4\n\ -_08052C80:\n\ - movs r7, 0x1\n\ - add r8, r7\n\ - ldr r0, =0x000003e7\n\ - cmp r8, r0\n\ - ble _08052C24\n\ - movs r0, 0\n\ - mov r8, r0\n\ - ldr r1, =gBattlescriptCurrInstr\n\ - mov r12, r1\n\ - ldr r3, =gTypeEffectiveness\n\ - adds r0, r4, 0x1\n\ - adds r0, r3\n\ - mov r9, r0\n\ - adds r5, r3, 0\n\ -_08052C9C:\n\ - ldrb r1, [r5]\n\ - cmp r1, 0xFF\n\ - bgt _08052CA6\n\ - cmp r1, 0xFE\n\ - bge _08052CE0\n\ -_08052CA6:\n\ - mov r4, r10\n\ - ldrb r2, [r4]\n\ - lsls r0, r2, 1\n\ - ldr r7, =gUnknown_02024258\n\ - adds r0, r7\n\ - ldrh r0, [r0]\n\ - cmp r1, r0\n\ - bne _08052CE0\n\ - ldrb r0, [r5, 0x2]\n\ - cmp r0, 0x5\n\ - bhi _08052CE0\n\ - movs r6, 0x58\n\ - adds r0, r2, 0\n\ - muls r0, r6\n\ - ldr r1, =gBattleMons\n\ - adds r2, r0, r1\n\ - adds r4, r2, 0\n\ - adds r4, 0x21\n\ - ldrb r0, [r4]\n\ - mov r7, r9\n\ - ldrb r1, [r7]\n\ - cmp r0, r1\n\ - beq _08052CE0\n\ - adds r0, r2, 0\n\ - adds r0, 0x22\n\ - ldrb r0, [r0]\n\ - cmp r0, r1\n\ - beq _08052CE0\n\ - b _08052BE0\n\ -_08052CE0:\n\ - adds r5, 0x3\n\ - movs r0, 0x3\n\ - add r8, r0\n\ - ldr r0, =0x0000014f\n\ - cmp r8, r0\n\ - bls _08052C9C\n\ - mov r1, r12\n\ - ldr r2, [r1]\n\ - ldrb r1, [r2, 0x1]\n\ - ldrb r0, [r2, 0x2]\n\ - lsls r0, 8\n\ - orrs r1, r0\n\ - ldrb r0, [r2, 0x3]\n\ - lsls r0, 16\n\ - orrs r1, r0\n\ - ldrb r0, [r2, 0x4]\n\ - lsls r0, 24\n\ - orrs r1, r0\n\ - mov r4, r12\n\ - str r1, [r4]\n\ -_08052D08:\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided"); -} -#endif // NONMATCHING - static void atkA7_setalwayshitflag(void) { gStatuses3[gBankTarget] &= ~(STATUS3_ALWAYS_HITS); @@ -9848,7 +9602,7 @@ static void atkC0_recoverbasedonsunlight(void) } #ifdef NONMATCHING -static void atkC1_hidden_power(void) +static void atkC1_hidden_power_calc(void) { s32 powerBits; s32 typeBits; @@ -9879,7 +9633,7 @@ static void atkC1_hidden_power(void) #else __attribute__((naked)) -static void atkC1_hidden_power(void) +static void atkC1_hidden_power_calc(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ -- cgit v1.2.3 From b1abe40230f2815c58a08b02eabf831317a68f15 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 11 Nov 2017 22:58:23 +0100 Subject: atk9e_metronome matching --- src/battle_script_commands.c | 104 ++++++------------------------------------- 1 file changed, 13 insertions(+), 91 deletions(-) (limited to 'src') diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index ee23b629d..72bef41f1 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -8542,13 +8542,11 @@ static void atk9D_mimicattackcopy(void) } } -#ifdef NONMATCHING static void atk9E_metronome(void) { while (1) { - const u16 *move; - s32 i, j; + s32 i; gCurrentMove = (Random() & 0x1FF) + 1; if (gCurrentMove > LAST_MOVE_INDEX) @@ -8556,102 +8554,26 @@ static void atk9E_metronome(void) for (i = 0; i < 4; i++); // ? - for (move = sMovesForbiddenToCopy; ; move++) + i = -1; + while (1) { - if (*move == gCurrentMove) + i++; + if (sMovesForbiddenToCopy[i] == gCurrentMove) break; - if (*move == METRONOME_FORBIDDEN_END) + if (sMovesForbiddenToCopy[i] == METRONOME_FORBIDDEN_END) break; } - if (*move == METRONOME_FORBIDDEN_END) - break; + if (sMovesForbiddenToCopy[i] == METRONOME_FORBIDDEN_END) + { + gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); + gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; + gBankTarget = GetMoveTarget(gCurrentMove, 0); + return; + } } - - gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); - gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; - gBankTarget = GetMoveTarget(gCurrentMove, 0); -} - -#else -__attribute__((naked)) -static void atk9E_metronome(void) -{ - asm( - "\n\ - .syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - ldr r7, =gCurrentMove\n\ - movs r6, 0xB1\n\ - lsls r6, 1\n\ - ldr r5, =sMovesForbiddenToCopy\n\ - ldr r0, =gBattlescriptCurrInstr\n\ - mov r8, r0\n\ -_080524EE:\n\ - bl Random\n\ - ldr r2, =0x000001ff\n\ - adds r1, r2, 0\n\ - ands r0, r1\n\ - adds r0, 0x1\n\ - strh r0, [r7]\n\ - cmp r0, r6\n\ - bhi _080524EE\n\ - movs r0, 0x3\n\ -_08052502:\n\ - subs r0, 0x1\n\ - cmp r0, 0\n\ - bge _08052502\n\ - ldr r4, =gCurrentMove\n\ - ldrh r2, [r4]\n\ - ldr r3, =0x0000ffff\n\ - subs r0, r5, 0x2\n\ -_08052510:\n\ - adds r0, 0x2\n\ - ldrh r1, [r0]\n\ - cmp r1, r2\n\ - beq _0805251C\n\ - cmp r1, r3\n\ - bne _08052510\n\ -_0805251C:\n\ - ldr r0, =0x0000ffff\n\ - cmp r1, r0\n\ - bne _080524EE\n\ - ldr r2, =gHitMarker\n\ - ldr r0, [r2]\n\ - ldr r1, =0xfffffbff\n\ - ands r0, r1\n\ - str r0, [r2]\n\ - ldr r3, =gBattleScriptsForMoveEffects\n\ - ldr r2, =gBattleMoves\n\ - ldrh r1, [r4]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - ldr r0, [r0]\n\ - mov r1, r8\n\ - str r0, [r1]\n\ - ldrh r0, [r4]\n\ - movs r1, 0\n\ - bl GetMoveTarget\n\ - ldr r1, =gBankTarget\n\ - strb r0, [r1]\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided"); } -#endif // NONMATCHING - static void atk9F_dmgtolevel(void) { gBattleMoveDamage = gBattleMons[gBankAttacker].level; -- cgit v1.2.3 From c3f6f528e865155f359ca2ff10b68ace1cc99edb Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 12 Nov 2017 00:16:46 +0100 Subject: come closer maybe --- src/battle_script_commands.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 72bef41f1..a619ee778 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -9526,22 +9526,22 @@ static void atkC0_recoverbasedonsunlight(void) #ifdef NONMATCHING static void atkC1_hidden_power_calc(void) { - s32 powerBits; - s32 typeBits; - - powerBits = ((gBattleMons[gBankAttacker].hpIV & 2) >> 1) - | ((gBattleMons[gBankAttacker].attackIV & 2) << 0) - | ((gBattleMons[gBankAttacker].defenseIV & 2) << 1) - | ((gBattleMons[gBankAttacker].speedIV & 2) << 2) - | ((gBattleMons[gBankAttacker].spAttackIV & 2) << 3) - | ((gBattleMons[gBankAttacker].spDefenseIV & 2) << 4); - - typeBits = ((gBattleMons[gBankAttacker].hpIV & 1) << 0) - | ((gBattleMons[gBankAttacker].attackIV & 1) << 1) - | ((gBattleMons[gBankAttacker].defenseIV & 1) << 2) - | ((gBattleMons[gBankAttacker].speedIV & 1) << 3) - | ((gBattleMons[gBankAttacker].spAttackIV & 1) << 4) - | ((gBattleMons[gBankAttacker].spDefenseIV & 1) << 5); + u32 powerBits = 0; + u32 typeBits = 0; + + powerBits |= ((gBattleMons[gBankAttacker].hpIV & 2) >> 1); + powerBits |= ((gBattleMons[gBankAttacker].attackIV & 2) << 0); + powerBits |= ((gBattleMons[gBankAttacker].defenseIV & 2) << 1); + powerBits |= ((gBattleMons[gBankAttacker].speedIV & 2) << 2); + powerBits |= ((gBattleMons[gBankAttacker].spAttackIV & 2) << 3); + powerBits |= ((gBattleMons[gBankAttacker].spDefenseIV & 2) << 4); + + typeBits |= ((gBattleMons[gBankAttacker].hpIV & 1) << 0); + typeBits |= ((gBattleMons[gBankAttacker].attackIV & 1) << 1); + typeBits |= ((gBattleMons[gBankAttacker].defenseIV & 1) << 2); + typeBits |= ((gBattleMons[gBankAttacker].speedIV & 1) << 3); + typeBits |= ((gBattleMons[gBankAttacker].spAttackIV & 1) << 4); + typeBits |= ((gBattleMons[gBankAttacker].spDefenseIV & 1) << 5); gDynamicBasePower = (40 * powerBits) / 63 + 30; -- cgit v1.2.3 From 47a8c6c432d377cf21e479ffd2c5dc1e2a800108 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 12 Nov 2017 16:39:21 +0100 Subject: battle5 decompiled and renamed --- src/battle_2.c | 2 +- src/battle_util2.c | 219 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 220 insertions(+), 1 deletion(-) create mode 100644 src/battle_util2.c (limited to 'src') diff --git a/src/battle_2.c b/src/battle_2.c index e4ee624fb..27131adb3 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -353,7 +353,7 @@ static const u8 sUnknown_0831BCF3[] = {4, 4, 4, 4}; void CB2_InitBattle(void) { MoveSaveBlocks_ResetHeap(); - AllocateBattleResrouces(); + AllocateBattleResources(); AllocateBattleSpritesData(); AllocateMonSpritesGfx(); sub_8185F84(); diff --git a/src/battle_util2.c b/src/battle_util2.c new file mode 100644 index 000000000..e119c85d7 --- /dev/null +++ b/src/battle_util2.c @@ -0,0 +1,219 @@ +#include "global.h" +#include "battle.h" +#include "battle_controllers.h" +#include "malloc.h" +#include "pokemon.h" +#include "event_data.h" +#include "abilities.h" +#include "rng.h" + +extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; +extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; +extern u8 gUnknown_0203CF00[]; +extern const u8* gBattlescriptCurrInstr; +extern u8 gBattleCommunication[]; +extern u8 gActiveBank; + +extern const u8 BattleScript_MoveUsedWokeUp[]; +extern const u8 BattleScript_MoveUsedIsFrozen[]; +extern const u8 BattleScript_MoveUsedUnfroze[]; +extern const u8 BattleScript_MoveUsedIsAsleep[]; + +extern void sub_81D55D0(void); +extern void sub_81D5694(void); +extern u8 pokemon_order_func(u8); +extern void sub_81B8FB0(u8, u8); + +void AllocateBattleResources(void) +{ + gBattleResources = gBattleResources; // something dumb needed to match + + if (gBattleTypeFlags & BATTLE_TYPE_x4000000) + sub_81D55D0(); + + gBattleStruct = AllocZeroed(sizeof(*gBattleStruct)); + + gBattleResources = AllocZeroed(sizeof(*gBattleResources)); + gBattleResources->secretBase = AllocZeroed(sizeof(*gBattleResources->secretBase)); + gBattleResources->flags = AllocZeroed(sizeof(*gBattleResources->flags)); + gBattleResources->battleScriptsStack = AllocZeroed(sizeof(*gBattleResources->battleScriptsStack)); + gBattleResources->battleCallbackStack = AllocZeroed(sizeof(*gBattleResources->battleCallbackStack)); + gBattleResources->statsBeforeLvlUp = AllocZeroed(sizeof(*gBattleResources->statsBeforeLvlUp)); + gBattleResources->ai = AllocZeroed(sizeof(*gBattleResources->ai)); + gBattleResources->battleHistory = AllocZeroed(sizeof(*gBattleResources->battleHistory)); + gBattleResources->AI_ScriptsStack = AllocZeroed(sizeof(*gBattleResources->AI_ScriptsStack)); + + gLinkBattleSendBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE); + gLinkBattleRecvBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE); + + gUnknown_0202305C = AllocZeroed(0x2000); + gUnknown_02023060 = AllocZeroed(0x1000); + + if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE) + { + u16 currSecretBaseId = VarGet(VAR_0x4054); + CreateSecretBaseEnemyParty(&gSaveBlock1Ptr->secretBases[currSecretBaseId]); + } +} + +void FreeBattleResources(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_x4000000) + sub_81D5694(); + + if (gBattleResources != NULL) + { + FREE_AND_SET_NULL(gBattleStruct); + + FREE_AND_SET_NULL(gBattleResources->secretBase); + FREE_AND_SET_NULL(gBattleResources->flags); + FREE_AND_SET_NULL(gBattleResources->battleScriptsStack); + FREE_AND_SET_NULL(gBattleResources->battleCallbackStack); + FREE_AND_SET_NULL(gBattleResources->statsBeforeLvlUp); + FREE_AND_SET_NULL(gBattleResources->ai); + FREE_AND_SET_NULL(gBattleResources->battleHistory); + FREE_AND_SET_NULL(gBattleResources->AI_ScriptsStack); + FREE_AND_SET_NULL(gBattleResources); + + FREE_AND_SET_NULL(gLinkBattleSendBuffer); + FREE_AND_SET_NULL(gLinkBattleRecvBuffer); + + FREE_AND_SET_NULL(gUnknown_0202305C); + FREE_AND_SET_NULL(gUnknown_02023060); + } +} + +void AdjustFriendshipOnBattleFaint(u8 bank) +{ + u8 opposingBank; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + u8 opposingBank2; + + opposingBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + opposingBank2 = GetBankByIdentity(IDENTITY_OPPONENT_MON2); + + if (gBattleMons[opposingBank2].level > gBattleMons[opposingBank].level) + opposingBank = opposingBank2; + } + else + { + opposingBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + } + + if (gBattleMons[opposingBank].level > gBattleMons[bank].level) + { + if (gBattleMons[opposingBank].level - gBattleMons[bank].level > 29) + AdjustFriendship(&gPlayerParty[gBattlePartyID[bank]], 8); + else + AdjustFriendship(&gPlayerParty[gBattlePartyID[bank]], 6); + } + else + { + AdjustFriendship(&gPlayerParty[gBattlePartyID[bank]], 6); + } +} + +void sub_80571DC(u8 bank, u8 arg1) +{ + if (GetBankSide(bank) != SIDE_OPPONENT) + { + s32 i; + + // gBattleStruct->field_60[0][i] + + for (i = 0; i < 3; i++) + gUnknown_0203CF00[i] = *(0 * 3 + i + (u8*)(gBattleStruct->field_60)); + + sub_81B8FB0(pokemon_order_func(gBattlePartyID[bank]), pokemon_order_func(arg1)); + + for (i = 0; i < 3; i++) + *(0 * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i]; + } +} + +u32 sub_805725C(u8 bank) +{ + u32 effect = 0; + + do + { + switch (gBattleCommunication[MULTIUSE_STATE]) + { + case 0: + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + if (UproarWakeUpCheck(bank)) + { + gBattleMons[bank].status1 &= ~(STATUS_SLEEP); + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + BattleScriptPushCursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; + effect = 2; + } + else + { + u32 toSub; + + if (gBattleMons[bank].ability == ABILITY_EARLY_BIRD) + toSub = 2; + else + toSub = 1; + + if ((gBattleMons[bank].status1 & STATUS_SLEEP) < toSub) + gBattleMons[bank].status1 &= ~(STATUS_SLEEP); + else + gBattleMons[bank].status1 -= toSub; + + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep; + effect = 2; + } + else + { + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + BattleScriptPushCursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; + effect = 2; + } + } + } + gBattleCommunication[MULTIUSE_STATE]++; + break; + case 1: + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + if (Random() % 5 != 0) + { + gBattlescriptCurrInstr = BattleScript_MoveUsedIsFrozen; + } + else + { + gBattleMons[bank].status1 &= ~(STATUS_FREEZE); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + effect = 2; + } + gBattleCommunication[MULTIUSE_STATE]++; + break; + case 2: + break; + } + + } while (gBattleCommunication[MULTIUSE_STATE] != 2 && effect == 0); + + if (effect == 2) + { + gActiveBank = bank; + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + } + + return effect; +} -- cgit v1.2.3 From 9febe24d9fb41633d3d95b97899ebe1cf60486fc Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 12 Nov 2017 17:06:31 +0100 Subject: label some battle struct fields --- src/battle_2.c | 22 +++++------ src/battle_ai_switch_items.c | 65 +++++++++++++++---------------- src/battle_controller_opponent.c | 10 ++--- src/battle_controller_player_partner.c | 2 +- src/battle_controller_recorded_opponent.c | 4 +- src/battle_controller_recorded_player.c | 4 +- src/battle_script_commands.c | 28 ++++++------- src/battle_util.c | 2 +- 8 files changed, 67 insertions(+), 70 deletions(-) (limited to 'src') diff --git a/src/battle_2.c b/src/battle_2.c index 27131adb3..31c88f6fb 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -2853,9 +2853,9 @@ static void BattleStartClearSetData(void) *(i + 3 * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0; } - for (i = 0; i < 4; i++) + for (i = 0; i < BATTLE_BANKS_COUNT; i++) { - *(gBattleStruct->field_294 + i) = 6; + *(gBattleStruct->AI_monToSwitchIntoId + i) = 6; } gBattleStruct->field_DF = 0; @@ -3682,7 +3682,7 @@ static void TryDoEventsBeforeFirstTurn(void) } for (i = 0; i < BATTLE_BANKS_COUNT; i++) { - *(gBattleStruct->field_5C + i) = 6; + *(gBattleStruct->monToSwitchIntoId + i) = 6; gActionForBanks[i] = ACTION_INIT_VALUE; gChosenMovesByBanks[i] = MOVE_NONE; } @@ -3793,7 +3793,7 @@ void BattleTurnPassed(void) } for (i = 0; i < 4; i++) - *(gBattleStruct->field_5C + i) = 6; + *(gBattleStruct->monToSwitchIntoId + i) = 6; *(&gBattleStruct->field_91) = gAbsentBankFlags; BattleHandleAddTextPrinter(gText_EmptyString3, 0); @@ -3884,7 +3884,7 @@ void sub_803BDA0(u8 bank) gUnknown_0203CF00[i] = *(bank * 3 + i + (u8*)(gBattleStruct->field_60)); r4 = pokemon_order_func(gBattlePartyID[bank]); - r1 = pokemon_order_func(*(gBattleStruct->field_5C + bank)); + r1 = pokemon_order_func(*(gBattleStruct->monToSwitchIntoId + bank)); sub_81B8FB0(r4, r1); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -3932,7 +3932,7 @@ static void HandleTurnActionSelectionState(void) gBattleCommunication[gActiveBank] = STATE_BEFORE_ACTION_CHOSEN; break; case STATE_BEFORE_ACTION_CHOSEN: // choose an action - *(gBattleStruct->field_5C + gActiveBank) = 6; + *(gBattleStruct->monToSwitchIntoId + gActiveBank) = 6; if (gBattleTypeFlags & BATTLE_TYPE_MULTI || !(identity & BIT_MON) || gBattleStruct->field_91 & gBitTable[GetBankByIdentity(identity ^ BIT_MON)] @@ -4050,9 +4050,9 @@ static void HandleTurnActionSelectionState(void) else { if (gActiveBank == 2 && gActionForBanks[0] == ACTION_SWITCH) - EmitChoosePokemon(0, 0, *(gBattleStruct->field_5C + 0), ABILITY_NONE, gBattleStruct->field_60[gActiveBank]); + EmitChoosePokemon(0, 0, *(gBattleStruct->monToSwitchIntoId + 0), ABILITY_NONE, gBattleStruct->field_60[gActiveBank]); else if (gActiveBank == 3 && gActionForBanks[1] == ACTION_SWITCH) - EmitChoosePokemon(0, 0, *(gBattleStruct->field_5C + 1), ABILITY_NONE, gBattleStruct->field_60[gActiveBank]); + EmitChoosePokemon(0, 0, *(gBattleStruct->monToSwitchIntoId + 1), ABILITY_NONE, gBattleStruct->field_60[gActiveBank]); else EmitChoosePokemon(0, 0, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBank]); } @@ -4339,7 +4339,7 @@ static void HandleTurnActionSelectionState(void) for (i = 0; i < gNoOfAllBanks; i++) { if (gActionForBanks[i] == ACTION_SWITCH) - sub_80571DC(i, *(gBattleStruct->field_5C + i)); + sub_80571DC(i, *(gBattleStruct->monToSwitchIntoId + i)); } } } @@ -4363,7 +4363,7 @@ static bool8 sub_803CDB8(void) static void sub_803CDF8(void) { - *(gBattleStruct->field_5C + gActiveBank) = gBattleBufferB[gActiveBank][1]; + *(gBattleStruct->monToSwitchIntoId + gActiveBank) = gBattleBufferB[gActiveBank][1]; RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][1]); if (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI) @@ -5618,7 +5618,7 @@ static void HandleAction_NothingIsFainted(void) static void HandleAction_ActionFinished(void) { - *(gBattleStruct->field_5C + gBanksByTurnOrder[gCurrentTurnActionNumber]) = 6; + *(gBattleStruct->monToSwitchIntoId + gBanksByTurnOrder[gCurrentTurnActionNumber]) = 6; gCurrentTurnActionNumber++; gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; SpecialStatusesClear(); diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index a57df85fb..fcf6895b6 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -38,7 +38,7 @@ static bool8 ShouldSwitchIfPerishSong(void) if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG && gDisableStructs[gActiveBank].perishSong1 == 0) { - *(gBattleStruct->field_294 + gActiveBank) = 6; + *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6; EmitTwoReturnValues(1, ACTION_SWITCH, 0); return TRUE; } @@ -120,7 +120,7 @@ static bool8 ShouldSwitchIfWonderGuard(void) if (moveFlags & MOVESTATUS_SUPEREFFECTIVE && Random() % 3 < 2) { // we found a mon - *(gBattleStruct->field_294 + gActiveBank) = i; + *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = i; EmitTwoReturnValues(1, ACTION_SWITCH, 0); return TRUE; } @@ -206,9 +206,9 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) continue; if (i == gBattlePartyID[bankIn2]) continue; - if (i == *(gBattleStruct->field_5C + bankIn1)) + if (i == *(gBattleStruct->monToSwitchIntoId + bankIn1)) continue; - if (i == *(gBattleStruct->field_5C + bankIn2)) + if (i == *(gBattleStruct->monToSwitchIntoId + bankIn2)) continue; species = GetMonData(&party[i], MON_DATA_SPECIES); @@ -220,7 +220,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) if (absorbingTypeAbility == monAbility && Random() & 1) { // we found a mon - *(gBattleStruct->field_294 + gActiveBank) = i; + *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = i; EmitTwoReturnValues(1, ACTION_SWITCH, 0); return TRUE; } @@ -240,13 +240,13 @@ static bool8 ShouldSwitchIfNaturalCure(void) if ((gUnknown_02024250[gActiveBank] == 0 || gUnknown_02024250[gActiveBank] == 0xFFFF) && Random() & 1) { - *(gBattleStruct->field_294 + gActiveBank) = 6; + *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6; EmitTwoReturnValues(1, ACTION_SWITCH, 0); return TRUE; } else if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0 && Random() & 1) { - *(gBattleStruct->field_294 + gActiveBank) = 6; + *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6; EmitTwoReturnValues(1, ACTION_SWITCH, 0); return TRUE; } @@ -257,7 +257,7 @@ static bool8 ShouldSwitchIfNaturalCure(void) return TRUE; if (Random() & 1) { - *(gBattleStruct->field_294 + gActiveBank) = 6; + *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6; EmitTwoReturnValues(1, ACTION_SWITCH, 0); return TRUE; } @@ -400,9 +400,9 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) continue; if (i == gBattlePartyID[bankIn2]) continue; - if (i == *(gBattleStruct->field_5C + bankIn1)) + if (i == *(gBattleStruct->monToSwitchIntoId + bankIn1)) continue; - if (i == *(gBattleStruct->field_5C + bankIn2)) + if (i == *(gBattleStruct->monToSwitchIntoId + bankIn2)) continue; species = GetMonData(&party[i], MON_DATA_SPECIES); @@ -425,7 +425,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) moveFlags = AI_TypeCalc(move, gBattleMons[bankIn1].species, gBattleMons[bankIn1].ability); if (moveFlags & MOVESTATUS_SUPEREFFECTIVE && Random() % moduloPercent == 0) { - *(gBattleStruct->field_294 + gActiveBank) = i; + *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = i; EmitTwoReturnValues(1, ACTION_SWITCH, 0); return TRUE; } @@ -508,9 +508,9 @@ static bool8 ShouldSwitch(void) continue; if (i == gBattlePartyID[bankIn2]) continue; - if (i == *(gBattleStruct->field_5C + bankIn1)) + if (i == *(gBattleStruct->monToSwitchIntoId + bankIn1)) continue; - if (i == *(gBattleStruct->field_5C + bankIn2)) + if (i == *(gBattleStruct->monToSwitchIntoId + bankIn2)) continue; availableToSwitch++; @@ -554,7 +554,7 @@ void AI_TrySwitchOrUseItem(void) { if (ShouldSwitch()) { - if (*(gBattleStruct->field_294 + gActiveBank) == 6) + if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) == 6) { s32 monToSwitchId = GetMostSuitableMonToSwitchInto(); if (monToSwitchId == 6) @@ -590,19 +590,19 @@ void AI_TrySwitchOrUseItem(void) continue; if (monToSwitchId == gBattlePartyID[bankIn2]) continue; - if (monToSwitchId == *(gBattleStruct->field_5C + bankIn1)) + if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + bankIn1)) continue; - if (monToSwitchId == *(gBattleStruct->field_5C + bankIn2)) + if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + bankIn2)) continue; break; } } - *(gBattleStruct->field_294 + gActiveBank) = monToSwitchId; + *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = monToSwitchId; } - *(gBattleStruct->field_5C + gActiveBank) = *(gBattleStruct->field_294 + gActiveBank); + *(gBattleStruct->monToSwitchIntoId + gActiveBank) = *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank); return; } else if (ShouldUseItem()) @@ -614,28 +614,25 @@ void AI_TrySwitchOrUseItem(void) EmitTwoReturnValues(1, ACTION_USE_MOVE, (gActiveBank ^ BIT_SIDE) << 8); } -#define TYPE_FORESIGHT 0xFE -#define TYPE_ENDTABLE 0xFF - static void ModulateByTypeEffectiveness(u8 atkType, u8 defType1, u8 defType2, u8 *var) { s32 i = 0; - while (gTypeEffectiveness[i] != TYPE_ENDTABLE) + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) { - if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) { i += 3; continue; } - else if (gTypeEffectiveness[i] == atkType) + else if (TYPE_EFFECT_ATK_TYPE(i) == atkType) { // check type1 - if (gTypeEffectiveness[i + 1] == defType1) - *var = (*var * gTypeEffectiveness[i + 2]) / 10; + if (TYPE_EFFECT_DEF_TYPE(i) == defType1) + *var = (*var * TYPE_EFFECT_MULTIPLIER(i)) / 10; // check type2 - if (gTypeEffectiveness[i + 1] == defType2 && defType1 != defType2) - *var = (*var * gTypeEffectiveness[i + 2]) / 10; + if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2) + *var = (*var * TYPE_EFFECT_MULTIPLIER(i)) / 10; } i += 3; } @@ -654,8 +651,8 @@ u8 GetMostSuitableMonToSwitchInto(void) u8 invalidMons; u16 move; - if (*(gBattleStruct->field_5C + gActiveBank) != 6) - return *(gBattleStruct->field_5C + gActiveBank); + if (*(gBattleStruct->monToSwitchIntoId + gActiveBank) != 6) + return *(gBattleStruct->monToSwitchIntoId + gActiveBank); if (gBattleTypeFlags & BATTLE_TYPE_ARENA) return gBattlePartyID[gActiveBank] + 1; @@ -711,8 +708,8 @@ u8 GetMostSuitableMonToSwitchInto(void) && !(gBitTable[i] & invalidMons) && gBattlePartyID[bankIn1] != i && gBattlePartyID[bankIn2] != i - && i != *(gBattleStruct->field_5C + bankIn1) - && i != *(gBattleStruct->field_5C + bankIn2)) + && i != *(gBattleStruct->monToSwitchIntoId + bankIn1) + && i != *(gBattleStruct->monToSwitchIntoId + bankIn2)) { u8 type1 = gBaseStats[species].type1; u8 type2 = gBaseStats[species].type2; @@ -771,9 +768,9 @@ u8 GetMostSuitableMonToSwitchInto(void) continue; if (gBattlePartyID[bankIn2] == i) continue; - if (i == *(gBattleStruct->field_5C + bankIn1)) + if (i == *(gBattleStruct->monToSwitchIntoId + bankIn1)) continue; - if (i == *(gBattleStruct->field_5C + bankIn2)) + if (i == *(gBattleStruct->monToSwitchIntoId + bankIn2)) continue; for (j = 0; j < 4; j++) diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 831f434b0..0aac4cbe4 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1168,7 +1168,7 @@ static void OpponentHandleLoadMonSprite(void) static void OpponentHandleSwitchInAnim(void) { - *(gBattleStruct->field_5C + gActiveBank) = 6; + *(gBattleStruct->monToSwitchIntoId + gActiveBank) = 6; gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; sub_80613DC(gActiveBank, gBattleBufferA[gActiveBank][2]); gBattleBankFunc[gActiveBank] = sub_805FDF0; @@ -1627,7 +1627,7 @@ static void OpponentHandleChoosePokemon(void) { s32 chosenMonId; - if (*(gBattleStruct->field_294 + gActiveBank) == 6) + if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) == 6) { chosenMonId = GetMostSuitableMonToSwitchInto(); @@ -1670,12 +1670,12 @@ static void OpponentHandleChoosePokemon(void) } else { - chosenMonId = *(gBattleStruct->field_294 + gActiveBank); - *(gBattleStruct->field_294 + gActiveBank) = 6; + chosenMonId = *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank); + *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6; } - *(gBattleStruct->field_5C + gActiveBank) = chosenMonId; + *(gBattleStruct->monToSwitchIntoId + gActiveBank) = chosenMonId; EmitChosenMonReturnValue(1, chosenMonId, NULL); OpponentBufferExecCompleted(); } diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 6ace9121c..4d1afbf11 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -1581,7 +1581,7 @@ static void PlayerPartnerHandleChoosePokemon(void) } } - *(gBattleStruct->field_5C + gActiveBank) = chosenMonId; + *(gBattleStruct->monToSwitchIntoId + gActiveBank) = chosenMonId; EmitChosenMonReturnValue(1, chosenMonId, NULL); PlayerPartnerBufferExecCompleted(); } diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index 914ad9c43..096d548a7 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -1474,8 +1474,8 @@ static void RecordedOpponentHandleChooseItem(void) static void RecordedOpponentHandleChoosePokemon(void) { - *(gBattleStruct->field_5C + gActiveBank) = RecordedBattle_ReadBankAction(gActiveBank); - EmitChosenMonReturnValue(1, *(gBattleStruct->field_5C + gActiveBank), NULL); + *(gBattleStruct->monToSwitchIntoId + gActiveBank) = RecordedBattle_ReadBankAction(gActiveBank); + EmitChosenMonReturnValue(1, *(gBattleStruct->monToSwitchIntoId + gActiveBank), NULL); RecordedOpponentBufferExecCompleted(); } diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index 8db7b5626..108200a33 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -1492,8 +1492,8 @@ static void RecordedPlayerHandleChooseItem(void) static void RecordedPlayerHandleChoosePokemon(void) { - *(gBattleStruct->field_5C + gActiveBank) = RecordedBattle_ReadBankAction(gActiveBank); - EmitChosenMonReturnValue(1, *(gBattleStruct->field_5C + gActiveBank), NULL); + *(gBattleStruct->monToSwitchIntoId + gActiveBank) = RecordedBattle_ReadBankAction(gActiveBank); + EmitChosenMonReturnValue(1, *(gBattleStruct->monToSwitchIntoId + gActiveBank), NULL); RecordedPlayerBufferExecCompleted(); } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index dc725136c..b7a38e2f1 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5330,7 +5330,7 @@ static void atk4C_get_switched_mon_data(void) gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); - gBattlePartyID[gActiveBank] = *(gBattleStruct->field_5C + gActiveBank); + gBattlePartyID[gActiveBank] = *(gBattleStruct->monToSwitchIntoId + gActiveBank); EmitGetMonData(0, REQUEST_ALL_BATTLE, gBitTable[gBattlePartyID[gActiveBank]]); MarkBufferBankForExecution(gActiveBank); @@ -5574,7 +5574,7 @@ static void atk4F_jump_if_cannot_switch(void) static void sub_804CF10(u8 arg0) { *(gBattleStruct->field_58 + gActiveBank) = gBattlePartyID[gActiveBank]; - *(gBattleStruct->field_5C + gActiveBank) = 6; + *(gBattleStruct->monToSwitchIntoId + gActiveBank) = 6; gBattleStruct->field_93 &= ~(gBitTable[gActiveBank]); EmitChoosePokemon(0, 1, arg0, 0, gBattleStruct->field_60[gActiveBank]); @@ -5638,7 +5638,7 @@ static void atk50_openpartyscreen(void) } else if (!gSpecialStatuses[gActiveBank].flag40) { - sub_804CF10(gBattleStruct->field_5C[2]); + sub_804CF10(gBattleStruct->monToSwitchIntoId[2]); gSpecialStatuses[gActiveBank].flag40 = 1; } else @@ -5660,7 +5660,7 @@ static void atk50_openpartyscreen(void) } else if (!gSpecialStatuses[gActiveBank].flag40) { - sub_804CF10(gBattleStruct->field_5C[0]); + sub_804CF10(gBattleStruct->monToSwitchIntoId[0]); gSpecialStatuses[gActiveBank].flag40 = 1; } else if (!(flags & 1)) @@ -5681,7 +5681,7 @@ static void atk50_openpartyscreen(void) } else if (!gSpecialStatuses[gActiveBank].flag40) { - sub_804CF10(gBattleStruct->field_5C[3]); + sub_804CF10(gBattleStruct->monToSwitchIntoId[3]); gSpecialStatuses[gActiveBank].flag40 = 1; } else @@ -5703,7 +5703,7 @@ static void atk50_openpartyscreen(void) } else if (!gSpecialStatuses[gActiveBank].flag40) { - sub_804CF10(gBattleStruct->field_5C[1]); + sub_804CF10(gBattleStruct->monToSwitchIntoId[1]); gSpecialStatuses[gActiveBank].flag40 = 1; } else if (!(flags & 2)) @@ -5766,7 +5766,7 @@ static void atk50_openpartyscreen(void) } else if (!gSpecialStatuses[gActiveBank].flag40) { - sub_804CF10(gBattleStruct->field_5C[0]); + sub_804CF10(gBattleStruct->monToSwitchIntoId[0]); gSpecialStatuses[gActiveBank].flag40 = 1; } } @@ -5782,7 +5782,7 @@ static void atk50_openpartyscreen(void) } else if (!gSpecialStatuses[gActiveBank].flag40) { - sub_804CF10(gBattleStruct->field_5C[1]); + sub_804CF10(gBattleStruct->monToSwitchIntoId[1]); gSpecialStatuses[gActiveBank].flag40 = 1; } } @@ -5836,10 +5836,10 @@ static void atk50_openpartyscreen(void) { gActiveBank = bank; *(gBattleStruct->field_58 + gActiveBank) = gBattlePartyID[gActiveBank]; - *(gBattleStruct->field_5C + gActiveBank) = 6; + *(gBattleStruct->monToSwitchIntoId + gActiveBank) = 6; gBattleStruct->field_93 &= ~(gBitTable[gActiveBank]); - EmitChoosePokemon(0, hitmarkerFaintBits, *(gBattleStruct->field_5C + (gActiveBank ^ 2)), 0, gBattleStruct->field_60[gActiveBank]); + EmitChoosePokemon(0, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (gActiveBank ^ 2)), 0, gBattleStruct->field_60[gActiveBank]); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 6; @@ -5886,7 +5886,7 @@ static void atk51_switch_handle_order(void) { if (gBattleBufferB[i][0] == 0x22) { - *(gBattleStruct->field_5C + i) = gBattleBufferB[i][1]; + *(gBattleStruct->monToSwitchIntoId + i) = gBattleBufferB[i][1]; if (!(gBattleStruct->field_93 & gBitTable[i])) { RecordedBattle_SetBankAction(i, gBattleBufferB[i][1]); @@ -5908,7 +5908,7 @@ static void atk51_switch_handle_order(void) // fall through case 3: gBattleCommunication[0] = gBattleBufferB[gActiveBank][1]; - *(gBattleStruct->field_5C + gActiveBank) = gBattleBufferB[gActiveBank][1]; + *(gBattleStruct->monToSwitchIntoId + gActiveBank) = gBattleBufferB[gActiveBank][1]; if (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI) { @@ -5922,7 +5922,7 @@ static void atk51_switch_handle_order(void) } else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) { - sub_80571DC(gActiveBank, *(gBattleStruct->field_5C + gActiveBank)); + sub_80571DC(gActiveBank, *(gBattleStruct->monToSwitchIntoId + gActiveBank)); } else { @@ -8029,7 +8029,7 @@ static void atk8F_forcerandomswitch(void) || GetMonData(&party[i], MON_DATA_IS_EGG) == TRUE || GetMonData(&party[i], MON_DATA_HP) == 0); } - *(gBattleStruct->field_5C + gBankTarget) = i; + *(gBattleStruct->monToSwitchIntoId + gBankTarget) = i; if (!sub_81B1250()) sub_803BDA0(gBankTarget); diff --git a/src/battle_util.c b/src/battle_util.c index 468b2c46d..b9b2f1e1d 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1805,7 +1805,7 @@ bool8 sub_80423F4(u8 bank, u8 r1, u8 r2) && GetMonData(&party[i], MON_DATA_SPECIES2) != 0 && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG // FIXME: Using index[array] instead of array[index] is BAD! - && i != r1 && i != r2 && i != r7[gBattleStruct->field_5C] && i != r6[gBattleStruct->field_5C]) + && i != r1 && i != r2 && i != r7[gBattleStruct->monToSwitchIntoId] && i != r6[gBattleStruct->monToSwitchIntoId]) break; } return (i == 6); -- cgit v1.2.3 From 716590c165791ce33e18bd97c8ee2e26c580e5f8 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 12 Nov 2017 17:11:06 +0100 Subject: one more battle label change --- src/battle_2.c | 4 ++-- src/battle_ai_switch_items.c | 2 +- src/battle_script_commands.c | 6 ++---- src/battle_util.c | 6 +++--- 4 files changed, 8 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/battle_2.c b/src/battle_2.c index 31c88f6fb..703315374 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -2935,8 +2935,8 @@ void SwitchInClearSetData(void) { gDisableStructs[gActiveBank].substituteHP = disableStructCopy.substituteHP; gDisableStructs[gActiveBank].bankWithSureHit = disableStructCopy.bankWithSureHit; - gDisableStructs[gActiveBank].perishSong1 = disableStructCopy.perishSong1; - gDisableStructs[gActiveBank].perishSong2 = disableStructCopy.perishSong2; + gDisableStructs[gActiveBank].perishSongTimer1 = disableStructCopy.perishSongTimer1; + gDisableStructs[gActiveBank].perishSongTimer2 = disableStructCopy.perishSongTimer2; gDisableStructs[gActiveBank].bankPreventingEscape = disableStructCopy.bankPreventingEscape; } diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index fcf6895b6..75d144c3d 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -36,7 +36,7 @@ static bool8 ShouldUseItem(void); static bool8 ShouldSwitchIfPerishSong(void) { if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG - && gDisableStructs[gActiveBank].perishSong1 == 0) + && gDisableStructs[gActiveBank].perishSongTimer1 == 0) { *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6; EmitTwoReturnValues(1, ACTION_SWITCH, 0); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index b7a38e2f1..9dec308bb 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -120,8 +120,6 @@ struct TrainerMoney extern const struct BattleMove gBattleMoves[]; extern const struct BaseStats gBaseStats[]; extern const u8 gTypeEffectiveness[336]; -extern const u16 gMissStringIds[]; -extern const u16 gTrappingMoves[]; extern const struct TrainerMoney gTrainerMoneyTable[]; extern const u8* const gBattleScriptsForMoveEffects[]; @@ -9180,8 +9178,8 @@ static void atkB2_setperishsong(void) else { gStatuses3[i] |= STATUS3_PERISH_SONG; - gDisableStructs[i].perishSong1 = 3; - gDisableStructs[i].perishSong2 = 3; + gDisableStructs[i].perishSongTimer1 = 3; + gDisableStructs[i].perishSongTimer2 = 3; } } diff --git a/src/battle_util.c b/src/battle_util.c index b9b2f1e1d..b5357a0e0 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1292,9 +1292,9 @@ bool8 sub_8041364(void) gBattleTextBuff1[1] = 1; gBattleTextBuff1[2] = 1; gBattleTextBuff1[3] = 1; - gBattleTextBuff1[4] = gDisableStructs[gActiveBank].perishSong1; + gBattleTextBuff1[4] = gDisableStructs[gActiveBank].perishSongTimer1; gBattleTextBuff1[5] = EOS; - if (gDisableStructs[gActiveBank].perishSong1 == 0) + if (gDisableStructs[gActiveBank].perishSongTimer1 == 0) { gStatuses3[gActiveBank] &= ~STATUS3_PERISH_SONG; gBattleMoveDamage = gBattleMons[gActiveBank].hp; @@ -1302,7 +1302,7 @@ bool8 sub_8041364(void) } else { - gDisableStructs[gActiveBank].perishSong1--; + gDisableStructs[gActiveBank].perishSongTimer1--; gBattlescriptCurrInstr = gUnknown_082DAF20; } BattleScriptExecute(gBattlescriptCurrInstr); -- cgit v1.2.3 From c967ba1d5f82c69e75f8a697fee60ceae6ef3218 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 12 Nov 2017 18:41:04 +0100 Subject: dump couple of baseroms review changes --- src/berry_blender.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/berry_blender.c b/src/berry_blender.c index 9d98f3fa7..0705812bf 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -49,7 +49,7 @@ static const u8 sUnusedText_LinkPartnerNotFound[] = _("Link partner(s) not found const u8 gText_BerryBlenderStart[] = _("Starting up the BERRY BLENDER.\pPlease select a BERRY from your BAG\nto put in the BERRY BLENDER.\p"); const u8 gText_NewParagraph[] = _("\p"); -const u8 gText_wasMade[] = _(" was made!"); +const u8 gText_WasMade[] = _(" was made!"); static const u8 sText_Mister[] = _("MISTER"); static const u8 sText_Laddie[] = _("LADDIE"); static const u8 sText_Lassie[] = _("LASSIE"); @@ -67,14 +67,14 @@ const u8* const sBlenderOpponentsNames[] = sText_Miss }; -static const u8 sText_PressA_ToStart[] = _("Press the A Button to start."); +static const u8 sText_PressAToStart[] = _("Press the A Button to start."); static const u8 sText_PleaseWaitAWhile[] = _("Please wait a while."); const u8 sText_CommunicationStandby[] = _("Communication standby…"); const u8 sText_WouldLikeToBlendAnotherBerry[] = _("Would you like to blend another BERRY?"); const u8 sText_RunOutOfBerriesForBlending[] = _("You’ve run out of BERRIES for\nblending in the BERRY BLENDER.\p"); const u8 sText_YourPokeblockCaseIsFull[] = _("Your {POKEBLOCK} CASE is full.\p"); -const u8 sText_hasNoBerriesToPut[] = _(" has no BERRIES to put in\nthe BERRY BLENDER."); -const u8 sText_someonesPokeblockCaseIsFull[] = _("’s {POKEBLOCK} CASE is full.\p"); +const u8 sText_HasNoBerriesToPut[] = _(" has no BERRIES to put in\nthe BERRY BLENDER."); +const u8 ApostropheSPokeblockCaseIsFull[] = _("’s {POKEBLOCK} CASE is full.\p"); const u8 sText_BlendingResults[] = _("RESULTS OF BLENDING"); static const u8 sText_BerryUsed[] = _("BERRY USED"); const u8 sText_SpaceBerry[] = _(" BERRY"); -- cgit v1.2.3 From 8ceea171b34e30ca35f32f1876dcde740ce78936 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 13 Nov 2017 00:15:07 +0100 Subject: leave out pss for now --- src/pokemon_storage_system.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 8eeac96b1..f82a52d38 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -99,6 +99,7 @@ static u8 *StringCopyAndFillWithSpaces(u8 *dst, const u8 *src, u16 n) return str; } +/* can't match static void sub_80C7128(u16 *dst, u16 dstToAdd, u16 dstToMul, const u16 *src, u16 srcToAdd, u16 srcToMul, u32 size, u16 count, u16 srcBy) { u16 i; @@ -118,4 +119,4 @@ static void sub_80C7128(u16 *dst, u16 dstToAdd, u16 dstToMul, const u16 *src, u1 src += srcBy; } } -} +}*/ -- cgit v1.2.3 From 1ca032c6ff72bb52c9b16d4a42ac7913521216f9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 12 Nov 2017 21:13:18 -0500 Subject: Address review items, 1 --- src/field_region_map.c | 8 +-- src/region_map.c | 146 ++++++++++++++++++++++--------------------------- 2 files changed, 68 insertions(+), 86 deletions(-) (limited to 'src') diff --git a/src/field_region_map.c b/src/field_region_map.c index 776ca6934..9d530258d 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -56,11 +56,9 @@ static const struct BgTemplate gUnknown_085E5068[] = { }; static const struct WindowTemplate gUnknown_085E5070[] = { - { - 0, 17, 17, 12, 2, 15, 0x0001 - }, { - 0, 22, 1, 7, 2, 15, 0x0019 - }, DUMMY_WIN_TEMPLATE + { 0, 17, 17, 12, 2, 15, 0x0001 }, + { 0, 22, 1, 7, 2, 15, 0x0019 }, + DUMMY_WIN_TEMPLATE }; // .text diff --git a/src/region_map.c b/src/region_map.c index 5481606e9..1c9c9b8ed 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -108,51 +108,35 @@ static const u8 sRegionMapPlayerIcon_BrendanGfx[] = INCBIN_U8("graphics/pokenav/ static const u16 sRegionMapPlayerIcon_MayPal[] = INCBIN_U16("graphics/pokenav/may_icon.gbapal"); static const u8 sRegionMapPlayerIcon_MayGfx[] = INCBIN_U8("graphics/pokenav/may_icon.4bpp"); -static const u8 sRegionMap_MapSectionLayout[] = { - MAPSEC_NONE, MAPSEC_ROUTE_114, MAPSEC_ROUTE_114, MAPSEC_FALLARBOR_TOWN, MAPSEC_ROUTE_113, MAPSEC_ROUTE_113, MAPSEC_ROUTE_113, MAPSEC_ROUTE_113, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_FORTREE_CITY, MAPSEC_ROUTE_120, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, - MAPSEC_NONE, MAPSEC_ROUTE_114, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_CHIMNEY, MAPSEC_MT_CHIMNEY, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_NONE, MAPSEC_ROUTE_120, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, - MAPSEC_ROUTE_115, MAPSEC_ROUTE_114, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_CHIMNEY, MAPSEC_MT_CHIMNEY, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_NONE, MAPSEC_ROUTE_120, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SAFARI_ZONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, - MAPSEC_ROUTE_115, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_LAVARIDGE_TOWN, MAPSEC_ROUTE_112, MAPSEC_ROUTE_112, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_NONE, MAPSEC_ROUTE_120, MAPSEC_ROUTE_121, MAPSEC_ROUTE_121, MAPSEC_ROUTE_121, MAPSEC_ROUTE_121, MAPSEC_LILYCOVE_CITY, MAPSEC_LILYCOVE_CITY, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_125, MAPSEC_ROUTE_125, MAPSEC_NONE, MAPSEC_NONE, - MAPSEC_ROUTE_115, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_122, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_125, MAPSEC_ROUTE_125, MAPSEC_NONE, MAPSEC_NONE, - MAPSEC_RUSTBORO_CITY, MAPSEC_ROUTE_116, MAPSEC_ROUTE_116, MAPSEC_ROUTE_116, MAPSEC_ROUTE_116, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_111, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_119, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_122, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_ROUTE_124, MAPSEC_MOSSDEEP_CITY, MAPSEC_MOSSDEEP_CITY, MAPSEC_NONE, MAPSEC_NONE, - MAPSEC_RUSTBORO_CITY, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_VERDANTURF_TOWN, MAPSEC_ROUTE_117, MAPSEC_ROUTE_117, MAPSEC_ROUTE_117, MAPSEC_MAUVILLE_CITY, MAPSEC_MAUVILLE_CITY, MAPSEC_ROUTE_118, MAPSEC_ROUTE_118, MAPSEC_ROUTE_123, MAPSEC_ROUTE_123, MAPSEC_ROUTE_123, MAPSEC_ROUTE_123, MAPSEC_ROUTE_123, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_126, MAPSEC_ROUTE_126, MAPSEC_ROUTE_126, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_NONE, MAPSEC_NONE, - MAPSEC_ROUTE_104, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_110, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_126, MAPSEC_SOOTOPOLIS_CITY, MAPSEC_ROUTE_126, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_NONE, MAPSEC_NONE, - MAPSEC_ROUTE_104, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_103, MAPSEC_ROUTE_103, MAPSEC_ROUTE_103, MAPSEC_ROUTE_103, MAPSEC_ROUTE_110, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_126, MAPSEC_ROUTE_126, MAPSEC_ROUTE_126, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_ROUTE_127, MAPSEC_NONE, MAPSEC_EVER_GRANDE_CITY, - MAPSEC_ROUTE_104, MAPSEC_PETALBURG_CITY, MAPSEC_ROUTE_102, MAPSEC_ROUTE_102, MAPSEC_OLDALE_TOWN, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_110, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_128, MAPSEC_ROUTE_128, MAPSEC_ROUTE_128, MAPSEC_ROUTE_128, MAPSEC_EVER_GRANDE_CITY, - MAPSEC_ROUTE_105, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_101, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SLATEPORT_CITY, MAPSEC_ROUTE_134, MAPSEC_ROUTE_134, MAPSEC_ROUTE_134, MAPSEC_ROUTE_133, MAPSEC_ROUTE_133, MAPSEC_ROUTE_133, MAPSEC_ROUTE_132, MAPSEC_ROUTE_132, MAPSEC_PACIFIDLOG_TOWN, MAPSEC_ROUTE_131, MAPSEC_ROUTE_131, MAPSEC_ROUTE_131, MAPSEC_ROUTE_130, MAPSEC_ROUTE_130, MAPSEC_ROUTE_130, MAPSEC_ROUTE_129, MAPSEC_ROUTE_129, MAPSEC_NONE, MAPSEC_NONE, - MAPSEC_ROUTE_105, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_LITTLEROOT_TOWN, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SLATEPORT_CITY, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, - MAPSEC_ROUTE_105, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_109, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BATTLE_FRONTIER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, - MAPSEC_ROUTE_106, MAPSEC_ROUTE_106, MAPSEC_ROUTE_106, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_109, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, - MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DEWFORD_TOWN, MAPSEC_ROUTE_107, MAPSEC_ROUTE_107, MAPSEC_ROUTE_107, MAPSEC_ROUTE_108, MAPSEC_ROUTE_108, MAPSEC_ROUTE_109, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SOUTHERN_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE -}; +static const u8 sRegionMap_MapSectionLayout[] = INCBIN_U8("graphics/pokenav/region_map_section_layout.bin"); #include "data/region_map/region_map_entries.h" static const u16 sRegionMap_SpecialPlaceLocations[][2] = { - {MAPSEC_UNDERWATER_TERRA_CAVE, MAPSEC_ROUTE_105}, - {MAPSEC_UNDERWATER_124, MAPSEC_ROUTE_124}, - {MAPSEC_UNDERWATER_UNK1, MAPSEC_ROUTE_129}, - {MAPSEC_UNDERWATER_125, MAPSEC_ROUTE_126}, - {MAPSEC_UNDERWATER_126, MAPSEC_ROUTE_127}, - {MAPSEC_UNDERWATER_127, MAPSEC_ROUTE_128}, - {MAPSEC_UNDERWATER_129, MAPSEC_ROUTE_129}, - {MAPSEC_UNDERWATER_SOOTOPOLIS, MAPSEC_SOOTOPOLIS_CITY}, - {MAPSEC_UNDERWATER_128, MAPSEC_ROUTE_128}, - {MAPSEC_AQUA_HIDEOUT, MAPSEC_LILYCOVE_CITY}, - {MAPSEC_AQUA_HIDEOUT_OLD, MAPSEC_LILYCOVE_CITY}, - {MAPSEC_MAGMA_HIDEOUT, MAPSEC_ROUTE_112}, + {MAPSEC_UNDERWATER_TERRA_CAVE, MAPSEC_ROUTE_105}, + {MAPSEC_UNDERWATER_124, MAPSEC_ROUTE_124}, + {MAPSEC_UNDERWATER_UNK1, MAPSEC_ROUTE_129}, + {MAPSEC_UNDERWATER_125, MAPSEC_ROUTE_126}, + {MAPSEC_UNDERWATER_126, MAPSEC_ROUTE_127}, + {MAPSEC_UNDERWATER_127, MAPSEC_ROUTE_128}, + {MAPSEC_UNDERWATER_129, MAPSEC_ROUTE_129}, + {MAPSEC_UNDERWATER_SOOTOPOLIS, MAPSEC_SOOTOPOLIS_CITY}, + {MAPSEC_UNDERWATER_128, MAPSEC_ROUTE_128}, + {MAPSEC_AQUA_HIDEOUT, MAPSEC_LILYCOVE_CITY}, + {MAPSEC_AQUA_HIDEOUT_OLD, MAPSEC_LILYCOVE_CITY}, + {MAPSEC_MAGMA_HIDEOUT, MAPSEC_ROUTE_112}, {MAPSEC_UNDERWATER_SEALED_CHAMBER, MAPSEC_ROUTE_134}, - {MAPSEC_PETALBURG_WOODS, MAPSEC_ROUTE_104}, - {MAPSEC_JAGGED_PASS, MAPSEC_ROUTE_112}, - {MAPSEC_MT_PYRE, MAPSEC_ROUTE_122}, - {MAPSEC_SKY_PILLAR, MAPSEC_ROUTE_131}, - {MAPSEC_MIRAGE_TOWER, MAPSEC_ROUTE_111}, - {MAPSEC_TRAINER_HILL, MAPSEC_ROUTE_111}, - {MAPSEC_DESERT_UNDERPASS, MAPSEC_ROUTE_114}, - {MAPSEC_ALTERING_CAVE_2, MAPSEC_ROUTE_103}, - {MAPSEC_ARTISAN_CAVE, MAPSEC_ROUTE_103}, - {MAPSEC_ABANDONED_SHIP, MAPSEC_ROUTE_108}, - {MAPSEC_NONE, MAPSEC_NONE} + {MAPSEC_PETALBURG_WOODS, MAPSEC_ROUTE_104}, + {MAPSEC_JAGGED_PASS, MAPSEC_ROUTE_112}, + {MAPSEC_MT_PYRE, MAPSEC_ROUTE_122}, + {MAPSEC_SKY_PILLAR, MAPSEC_ROUTE_131}, + {MAPSEC_MIRAGE_TOWER, MAPSEC_ROUTE_111}, + {MAPSEC_TRAINER_HILL, MAPSEC_ROUTE_111}, + {MAPSEC_DESERT_UNDERPASS, MAPSEC_ROUTE_114}, + {MAPSEC_ALTERING_CAVE_2, MAPSEC_ROUTE_103}, + {MAPSEC_ARTISAN_CAVE, MAPSEC_ROUTE_103}, + {MAPSEC_ABANDONED_SHIP, MAPSEC_ROUTE_108}, + {MAPSEC_NONE, MAPSEC_NONE} }; static const u16 sRegionMap_MarineCaveMapSecIds[] = { @@ -313,8 +297,8 @@ static const u8 gUnknown_085A1E3C[][3] = { }; static const u8 *const gUnknown_085A1ED4[] = { - gUnknown_085EC782, - gUnknown_085EC791 + gText_PokemonLeague, + gText_PokemonCenter }; static const struct { @@ -733,8 +717,8 @@ void sub_8123418(void) } else { - gRegionMap->unk_03c = gRegionMap->scrollX * 256; - gRegionMap->unk_040 = gRegionMap->scrollY * 256; + gRegionMap->unk_03c = gRegionMap->scrollX * 0x100; + gRegionMap->unk_040 = gRegionMap->scrollY * 0x100; gRegionMap->unk_060 = 0; gRegionMap->unk_062 = 0; gRegionMap->unk_044 = -(gRegionMap->unk_03c / 16); @@ -751,7 +735,7 @@ void sub_8123418(void) bool8 sub_8123514(void) { - bool8 r4; + bool8 retVal; if (gRegionMap->unk_06e >= 16) { @@ -769,7 +753,7 @@ bool8 sub_8123514(void) gRegionMap->inputCallback = (gRegionMap->zoomed == FALSE) ? ProcessRegionMapInput_Full : ProcessRegionMapInput_Zoomed; CreateRegionMapCursor(gRegionMap->cursorTileTag, gRegionMap->cursorPaletteTag); UnhideRegionMapPlayerIcon(); - r4 = FALSE; + retVal = FALSE; } else { @@ -804,10 +788,10 @@ bool8 sub_8123514(void) gRegionMap->unk_050 = 0; } } - r4 = TRUE; + retVal = TRUE; } CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, gRegionMap->unk_04c >> 8, gRegionMap->unk_04c >> 8, 0); - return r4; + return retVal; } static void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation) @@ -885,9 +869,9 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void) u16 mapHeight; u16 x; u16 y; - u16 r1; - u16 r9; - struct WarpData *r4; + u16 dimensionScale; + u16 xOnMap; + struct WarpData *storedWarp; if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SS_TIDAL_CORRIDOR && (gSaveBlock1Ptr->location.mapNum == MAP_ID_SS_TIDAL_CORRIDOR @@ -953,13 +937,13 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void) gRegionMap->mapSecId = gMapHeader.regionMapSectionId; if (gRegionMap->mapSecId != MAPSEC_SS_TIDAL) { - r4 = &gSaveBlock1Ptr->warp4; - mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum); + storedWarp = &gSaveBlock1Ptr->warp4; + mapHeader = get_mapheader_by_bank_and_number(storedWarp->mapGroup, storedWarp->mapNum); } else { - r4 = &gSaveBlock1Ptr->warp2; - mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum); + storedWarp = &gSaveBlock1Ptr->warp2; + mapHeader = get_mapheader_by_bank_and_number(storedWarp->mapGroup, storedWarp->mapNum); gRegionMap->mapSecId = mapHeader->regionMapSectionId; } if (RegionMap_IsPlayerInCave(gRegionMap->mapSecId)) @@ -972,30 +956,30 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void) } mapWidth = mapHeader->mapData->width; mapHeight = mapHeader->mapData->height; - x = r4->x; - y = r4->y; + x = storedWarp->x; + y = storedWarp->y; break; } - r9 = x; + xOnMap = x; - r1 = mapWidth / gRegionMapEntries[gRegionMap->mapSecId].width; - if (r1 == 0) + dimensionScale = mapWidth / gRegionMapEntries[gRegionMap->mapSecId].width; + if (dimensionScale == 0) { - r1 = 1; + dimensionScale = 1; } - x /= r1; + x /= dimensionScale; if (x >= gRegionMapEntries[gRegionMap->mapSecId].width) { x = gRegionMapEntries[gRegionMap->mapSecId].width - 1; } - r1 = mapHeight / gRegionMapEntries[gRegionMap->mapSecId].height; - if (r1 == 0) + dimensionScale = mapHeight / gRegionMapEntries[gRegionMap->mapSecId].height; + if (dimensionScale == 0) { - r1 = 1; + dimensionScale = 1; } - y /= r1; + y /= dimensionScale; if (y >= gRegionMapEntries[gRegionMap->mapSecId].height) { y = gRegionMapEntries[gRegionMap->mapSecId].height - 1; @@ -1032,15 +1016,15 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void) break; case MAPSEC_ROUTE_121: x = 0; - if (r9 > 14) + if (xOnMap > 14) { x = 1; } - if (r9 > 0x1C) + if (xOnMap > 0x1C) { x++; } - if (r9 > 0x36) + if (xOnMap > 0x36) { x++; } @@ -1059,14 +1043,14 @@ static void RegionMap_InitializeStateBasedOnSSTidalLocation(void) u16 x; u8 mapGroup; u8 mapNum; - u16 r1; - s16 sp2; - s16 sp4; + u16 dimensionScale; + s16 xOnMap; + s16 yOnMap; const struct MapHeader *mapHeader; y = 0; x = 0; - switch (GetSSTidalLocation(&mapGroup, &mapNum, &sp2, &sp4)) + switch (GetSSTidalLocation(&mapGroup, &mapNum, &xOnMap, &yOnMap)) { case 1: gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY; @@ -1085,17 +1069,17 @@ static void RegionMap_InitializeStateBasedOnSSTidalLocation(void) mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum); gRegionMap->mapSecId = mapHeader->regionMapSectionId; - r1 = mapHeader->mapData->width / gRegionMapEntries[gRegionMap->mapSecId].width; - if (r1 == 0) - r1 = 1; - x = sp2 / r1; + dimensionScale = mapHeader->mapData->width / gRegionMapEntries[gRegionMap->mapSecId].width; + if (dimensionScale == 0) + dimensionScale = 1; + x = xOnMap / dimensionScale; if (x >= gRegionMapEntries[gRegionMap->mapSecId].width) x = gRegionMapEntries[gRegionMap->mapSecId].width - 1; - r1 = mapHeader->mapData->height / gRegionMapEntries[gRegionMap->mapSecId].height; - if (r1 == 0) - r1 = 1; - y = sp4 / r1; + dimensionScale = mapHeader->mapData->height / gRegionMapEntries[gRegionMap->mapSecId].height; + if (dimensionScale == 0) + dimensionScale = 1; + y = yOnMap / dimensionScale; if (y >= gRegionMapEntries[gRegionMap->mapSecId].height) y = gRegionMapEntries[gRegionMap->mapSecId].height - 1; break; -- cgit v1.2.3 From 79609d52c8d8489b490589a1150b0754c0f61568 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 12 Nov 2017 21:39:44 -0500 Subject: MAPSEC_DYNAMIC --- src/region_map.c | 4 ++-- src/tv.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/region_map.c b/src/region_map.c index 1c9c9b8ed..3ca8f4add 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -935,7 +935,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void) case 8: gRegionMap->mapSecId = gMapHeader.regionMapSectionId; - if (gRegionMap->mapSecId != MAPSEC_SS_TIDAL) + if (gRegionMap->mapSecId != MAPSEC_DYNAMIC) { storedWarp = &gSaveBlock1Ptr->warp4; mapHeader = get_mapheader_by_bank_and_number(storedWarp->mapGroup, storedWarp->mapNum); @@ -1516,7 +1516,7 @@ u8 *sub_81245DC(u8 *dest, u16 mapSecId) { switch (mapSecId) { - case MAPSEC_SS_TIDAL: + case MAPSEC_DYNAMIC: return StringCopy(dest, gText_Ferry); case MAPSEC_SECRET_BASE: return StringCopy(dest, gText_SecretBase); diff --git a/src/tv.c b/src/tv.c index 933b9c0b8..3a4ad6b5f 100644 --- a/src/tv.c +++ b/src/tv.c @@ -6435,7 +6435,7 @@ void DoTVShowTodaysRivalTrainer(void) case MAPSEC_SECRET_BASE: sTVShowState = 8; break; - case MAPSEC_SS_TIDAL: + case MAPSEC_DYNAMIC: switch (show->rivalTrainer.mapDataId) { case 0x115 ... 0x117: @@ -6633,7 +6633,7 @@ void DoTVShowHoennTreasureInvestigators(void) { case 0: StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name); - if (show->treasureInvestigators.location == MAPSEC_SS_TIDAL) + if (show->treasureInvestigators.location == MAPSEC_DYNAMIC) { switch (show->treasureInvestigators.mapDataId) { -- cgit v1.2.3 From ac681878951ff9f2708df8182e7c0cd20fc64f7b Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 13 Nov 2017 18:18:12 +0100 Subject: review changes adding a pal file --- src/berry_blender.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/berry_blender.c b/src/berry_blender.c index 0705812bf..cc56f15f7 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -37,7 +37,7 @@ const u8 sBlenderCenterMap[] = INCBIN_U8("graphics/berry_blender/center_map.bin" const u16 sBlenderOuterPal[] = INCBIN_U16("graphics/berry_blender/outer.gbapal"); // unreferenced pals? -static const u16 sUnknownPal_0[] = INCBIN_U16("graphics/unknown/8339514.gbapal"); +static const u16 sUnknownPal_0[] = INCBIN_U16("graphics/unknown/unknown_339514.gbapal"); static const u16 sUnknownArray_1[224] = {0}; // unused text? -- cgit v1.2.3 From bb9c928330fb91426e2ad0c68e6f30f2a867d611 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 13 Nov 2017 18:30:17 +0100 Subject: starter choose review changes --- src/starter_choose.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/starter_choose.c b/src/starter_choose.c index c730e0978..1f64a5db7 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -25,8 +25,6 @@ #define STARTER_PKMN_POS_X 120 #define STARTER_PKMN_POS_Y 64 -extern u16 sStarterChooseWindowId; - // graphics extern const u32 gBirchHelpGfx[]; extern const u32 gBirchBagTilemap[]; @@ -37,7 +35,7 @@ extern const u16 gBirchBagGrassPal[]; extern const u8 gText_BirchInTrouble[]; extern const u8 gText_ConfirmStarterChoice[]; -extern const u16 sStarterMons[STARTER_MON_COUNT]; +extern const u16 sStarterMon[STARTER_MON_COUNT]; extern const struct BgTemplate gUnknown_085B1E00[3]; extern const struct WindowTemplate gUnknown_085B1DCC[]; extern const struct WindowTemplate gUnknown_085B1DDC; @@ -78,11 +76,13 @@ static void CreateStarterPokemonLabel(u8 selection); static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y); static void StarterPokemonSpriteCallback(struct Sprite *sprite); +static IWRAM_DATA u16 sStarterChooseWindowId; + u16 GetStarterPokemon(u16 chosenStarterId) { if (chosenStarterId > STARTER_MON_COUNT) chosenStarterId = 0; - return sStarterMons[chosenStarterId]; + return sStarterMon[chosenStarterId]; } static void VblankCB_StarterChoose(void) -- cgit v1.2.3 From ea575ee217233655291e3e577f439116b1c50907 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 13 Nov 2017 19:42:03 +0100 Subject: fix typo in a string --- src/berry_blender.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/berry_blender.c b/src/berry_blender.c index cc56f15f7..8e5a51845 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -74,7 +74,7 @@ const u8 sText_WouldLikeToBlendAnotherBerry[] = _("Would you like to blend anoth const u8 sText_RunOutOfBerriesForBlending[] = _("You’ve run out of BERRIES for\nblending in the BERRY BLENDER.\p"); const u8 sText_YourPokeblockCaseIsFull[] = _("Your {POKEBLOCK} CASE is full.\p"); const u8 sText_HasNoBerriesToPut[] = _(" has no BERRIES to put in\nthe BERRY BLENDER."); -const u8 ApostropheSPokeblockCaseIsFull[] = _("’s {POKEBLOCK} CASE is full.\p"); +const u8 sText_ApostropheSPokeblockCaseIsFull[] = _("’s {POKEBLOCK} CASE is full.\p"); const u8 sText_BlendingResults[] = _("RESULTS OF BLENDING"); static const u8 sText_BerryUsed[] = _("BERRY USED"); const u8 sText_SpaceBerry[] = _(" BERRY"); -- cgit v1.2.3 From 5c44c640509f9a80d62ecb9cc5bccee20ca5b2b5 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 13 Nov 2017 21:55:38 +0100 Subject: add hof graphics --- src/hall_of_fame.c | 126 +---------------------------------------------------- 1 file changed, 2 insertions(+), 124 deletions(-) (limited to 'src') diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index e3ad88cfe..bc7177bd7 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -359,131 +359,9 @@ static const struct SpriteTemplate sSpriteTemplate_85E54D0 = .callback = sub_81751A4 }; -// todo: dump actual graphics -static const u32 sHallOfFame_Pal[] = -{ - 0, 0x109F63B0, 0x5B6E, 0, 0, 0, 0, 0x7FFF2108 -}; +static const u16 sHallOfFame_Pal[] = INCBIN_U16("graphics/misc/japanese_hof.gbapal"); -// todo: dump actual graphics -static const u32 sHallOfFame_Gfx[] = -{ - 0x3A010, - 0xF0000033, - 0x11019001, - 0x9001F011, - 0x22220001, - 0x44442222, - 0xF0E04444, - 0x70073007, - 0x11113329, - 0x13033331, - 0x33333311, - 0xF0030031, - 0x1108049, - 0x1111FFFF, - 0x4913EEEE, - 0xE10700F1, - 0x110B00EE, - 0x1D90EF, - 0x1EFFF11E, - 0x1EEEE11E, - 0x1500EF4A, - 0xB00EFEE, - 0xF11F90FF, - 0xFFF1FE01, - 0xEEE1EEE1, - 0xF1211200, - 0x1E0300EE, - 0x10E1EF11, - 0x3B40D029, - 0x1E7C00, - 0xF3331178, - 0x331100EF, - 0x3331FEEF, - 0x10E8F3EF, - 0x105F9003, - 0x7C003394, - 0x3AE1133E, - 0xC003EEE, - 0x1800310, - 0xEF8F10F1, - 0xFEA30081, - 0xE1FEEE1E, - 0x33A300EF, - 0x6800EEEF, - 0x1EFE0130, - 0x3009300, - 0xF11EFF0A, - 0xFFA1101E, - 0x17EF0300, - 0x80FEEEFE, - 0x11313F, - 0xD7006100, - 0xEF332F, - 0x8F00FF0A, - 0x7B209F60, - 0xEF440400, - 0x3EFE2201, - 0x33070013, - 0xC0FE50F1, - 0x110EF80, - 0xFEF1EEF1, - 0xF1EFFF00, - 0xF1FEEEFF, - 0x921EBF1, - 0x111120A0, - 0xF12601EE, - 0x1107D00, - 0x819100EB, - 0xFE2D005D, - 0x10FFB100, - 0xFE3910AB, - 0x9810B410, - 0x3108F11, - 0x89209F11, - 0xA0EFF6A0, - 0x1FE8D00, - 0xE111F153, - 0xF1AFE11E, - 0x641011B3, - 0x19110EF, - 0x406FA07C, - 0xA400CBB3, - 0xEEFF0300, - 0x611E2D01, - 0x6314612F, - 0x11470133, - 0xE3EE3387, - 0x23318810, - 0x210170F7, - 0x950087, - 0xA00FF03, - 0x1123FE0, - 0xCC00F141, - 0xFFFE1EEF, - 0x8F3402EE, - 0xF1EE1ED0, - 0x10B7201E, - 0x23CF0EE, - 0x8301EF17, - 0x1A011002, - 0x20CC0133, - 0x70A7017B, - 0xF35701, - 0x7C00EF80, - 0xF1BA22EE, - 0xDCED011D, - 0x1009621, - 0xE16000FE, - 0xF1F9001F, - 0xB42A5FE, - 0x113FF1EE, - 0xFEA702FF, - 0xE04101, - 0xD03F22BC, - 1 -}; +static const u8 sHallOfFame_Gfx[] = INCBIN_U8("graphics/misc/japanese_hof.4bpp.lz"); static const struct HallofFameMon sDummyFameMon = { -- cgit v1.2.3 From a7f72e7da1aee75e57649e0864c2bcde06cc24c9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 16 Nov 2017 00:01:47 -0500 Subject: Remove spaces between incrementor and incrementee --- src/field_region_map.c | 12 ++++---- src/heal_location.c | 2 +- src/region_map.c | 76 +++++++++++++++++++++++++------------------------- 3 files changed, 45 insertions(+), 45 deletions(-) (limited to 'src') diff --git a/src/field_region_map.c b/src/field_region_map.c index 9d530258d..b7d677c90 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -121,7 +121,7 @@ static void FieldUpdateRegionMap(void) InitRegionMap(&sFieldRegionMapHandler->regionMap, 0); CreateRegionMapPlayerIcon(0, 0); CreateRegionMapCursor(1, 1); - sFieldRegionMapHandler->state ++; + sFieldRegionMapHandler->state++; break; case 1: SetWindowBorderStyle(1, 0, 0x27, 0xd); @@ -131,18 +131,18 @@ static void FieldUpdateRegionMap(void) SetWindowBorderStyle(0, 0, 0x27, 0xd); PrintRegionMapSecName(); BeginNormalPaletteFade(-1, 0, 16, 0, 0); - sFieldRegionMapHandler->state ++; + sFieldRegionMapHandler->state++; break; case 2: SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); ShowBg(0); ShowBg(2); - sFieldRegionMapHandler->state ++; + sFieldRegionMapHandler->state++; break; case 3: if (!gPaletteFade.active) { - sFieldRegionMapHandler->state ++; + sFieldRegionMapHandler->state++; } break; case 4: @@ -153,13 +153,13 @@ static void FieldUpdateRegionMap(void) break; case INPUT_EVENT_A_BUTTON: case INPUT_EVENT_B_BUTTON: - sFieldRegionMapHandler->state ++; + sFieldRegionMapHandler->state++; break; } break; case 5: BeginNormalPaletteFade(-1, 0, 0, 16, 0); - sFieldRegionMapHandler->state ++; + sFieldRegionMapHandler->state++; break; case 6: if (!gPaletteFade.active) diff --git a/src/heal_location.c b/src/heal_location.c index e31a30fb4..efc534170 100644 --- a/src/heal_location.c +++ b/src/heal_location.c @@ -47,7 +47,7 @@ static u32 GetHealLocationIndexFromMapGroupAndNum(u16 mapGroup, u16 mapNum) { u32 i; - for (i = 0; i < NUM_HEAL_LOCATIONS; i ++) + for (i = 0; i < NUM_HEAL_LOCATIONS; i++) { if (sHealLocations[i].group == mapGroup && sHealLocations[i].map == mapNum) { diff --git a/src/region_map.c b/src/region_map.c index d409044c1..da96475c0 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -506,12 +506,12 @@ bool8 sub_8122DB0(void) SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_PRIORITY, 1); SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_SCREENSIZE, 1); } - gRegionMap->initStep ++; + gRegionMap->initStep++; return FALSE; default: return FALSE; } - gRegionMap->initStep ++; + gRegionMap->initStep++; return TRUE; } @@ -595,19 +595,19 @@ static u8 MoveRegionMapCursor_Full(void) } if (gRegionMap->cursorDeltaX > 0) { - gRegionMap->cursorPosX ++; + gRegionMap->cursorPosX++; } if (gRegionMap->cursorDeltaX < 0) { - gRegionMap->cursorPosX --; + gRegionMap->cursorPosX--; } if (gRegionMap->cursorDeltaY > 0) { - gRegionMap->cursorPosY ++; + gRegionMap->cursorPosY++; } if (gRegionMap->cursorDeltaY < 0) { - gRegionMap->cursorPosY --; + gRegionMap->cursorPosY--; } mapSecId = GetRegionMapSectionIdAt_Internal(gRegionMap->cursorPosX, gRegionMap->cursorPosY); gRegionMap->iconDrawType = get_flagnr_blue_points(mapSecId); @@ -673,7 +673,7 @@ static u8 MoveRegionMapCursor_Zoomed(void) gRegionMap->scrollY += gRegionMap->zoomedCursorDeltaY; gRegionMap->scrollX += gRegionMap->zoomedCursorDeltaX; RegionMap_SetBG2XAndBG2Y(gRegionMap->scrollX, gRegionMap->scrollY); - gRegionMap->zoomedCursorMovementFrameCounter ++; + gRegionMap->zoomedCursorMovementFrameCounter++; if (gRegionMap->zoomedCursorMovementFrameCounter == 8) { x = (gRegionMap->scrollX + 0x2c) / 8 + 1; @@ -741,7 +741,7 @@ bool8 sub_8123514(void) { return 0; } - gRegionMap->unk_06e ++; + gRegionMap->unk_06e++; if (gRegionMap->unk_06e == 16) { gRegionMap->unk_044 = 0; @@ -1145,14 +1145,14 @@ static u16 CorrectSpecialMapSecId_Internal(u16 mapSecId) { u32 i; - for (i = 0; i < 3; i ++) + for (i = 0; i < 3; i++) { if (sRegionMap_MarineCaveMapSecIds[i] == mapSecId) { return RegionMap_GetTerraCaveMapSecId(); } } - for (i = 0; sRegionMap_SpecialPlaceLocations[i][0] != MAPSEC_NONE; i ++) + for (i = 0; sRegionMap_SpecialPlaceLocations[i][0] != MAPSEC_NONE; i++) { if (sRegionMap_SpecialPlaceLocations[i][0] == mapSecId) { @@ -1192,7 +1192,7 @@ static bool32 RegionMap_IsPlayerInCave(u8 mapSecId) { u32 i; - for (i = 0; i < 1; i ++) + for (i = 0; i < 1; i++) { if (sRegionMap_MapSecAquaHideoutOld[i] == mapSecId) { @@ -1235,7 +1235,7 @@ static void RegionMap_GetPositionOfCursorWithinMapSection(void) { if (RegionMap_IsMapSecIdInNextRow(y)) { - y --; + y--; x = MAPCURSOR_X_MAX + 1; } else @@ -1245,10 +1245,10 @@ static void RegionMap_GetPositionOfCursorWithinMapSection(void) } else { - x --; + x--; if (GetRegionMapSectionIdAt_Internal(x, y) == gRegionMap->mapSecId) { - posWithinMapSec ++; + posWithinMapSec++; } } } @@ -1259,11 +1259,11 @@ static bool8 RegionMap_IsMapSecIdInNextRow(u16 y) { u16 x; - if (y -- == 0) + if (y-- == 0) { return FALSE; } - for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x ++) + for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x++) { if (GetRegionMapSectionIdAt_Internal(x, y) == gRegionMap->mapSecId) { @@ -1279,7 +1279,7 @@ static void SpriteCallback_CursorFull(struct Sprite *sprite) { sprite->pos1.x += 2 * gRegionMap->cursorDeltaX; sprite->pos1.y += 2 * gRegionMap->cursorDeltaY; - gRegionMap->cursorMovementFrameCounter --; + gRegionMap->cursorMovementFrameCounter--; } } @@ -1460,7 +1460,7 @@ static void RegionMapPlayerIconSpriteCallback(struct Sprite *sprite) { if (gRegionMap->blinkPlayerIcon) { - if (++ sprite->data7 > 16) + if (++sprite->data7 > 16) { sprite->data7 = 0; sprite->invisible = sprite->invisible ? FALSE : TRUE; @@ -1503,7 +1503,7 @@ u8 *GetMapName(u8 *dest, u16 regionMapId, u16 padLength) } if (padLength != 0) { - for (i = str - dest; i < padLength; i ++) + for (i = str - dest; i < padLength; i++) { *str++ = CHAR_SPACE; } @@ -1554,7 +1554,7 @@ bool32 sub_8124668(u8 mapSecId) { u32 i; - for (i = 0; i < 3; i ++) + for (i = 0; i < 3; i++) { if (mapSecId == sRegionMapEventSectionIds[i]) { @@ -1590,23 +1590,23 @@ void MCB2_FlyMap(void) ResetSpriteData(); FreeSpriteTileRanges(); FreeAllSpritePalettes(); - gMain.state ++; + gMain.state++; } break; case 1: ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(1, gUnknown_085A1EE4, 3); - gMain.state ++; + gMain.state++; break; case 2: InitWindows(gUnknown_085A1EF0); DeactivateAllTextPrinters(); - gMain.state ++; + gMain.state++; break; case 3: sub_809882C(0, 0x65, 0xd0); clear_scheduled_bg_copies_to_vram(); - gMain.state ++; + gMain.state++; break; case 4: InitRegionMap(&gUnknown_0203A148->regionMap, FALSE); @@ -1616,15 +1616,15 @@ void MCB2_FlyMap(void) StringFill(gUnknown_0203A148->unk_a4c, CHAR_SPACE, 16); gUnknown_03001180 = TRUE; sub_8124904(); - gMain.state ++; + gMain.state++; break; case 5: LZ77UnCompVram(sRegionMapFrameGfxLZ, (u16 *)BG_CHAR_ADDR(3)); - gMain.state ++; + gMain.state++; break; case 6: LZ77UnCompVram(sRegionMapFrameTilemapLZ, (u16 *)BG_SCREEN_ADDR(30)); - gMain.state ++; + gMain.state++; break; case 7: LoadPalette(sRegionMapFramePal, 0x10, 0x20); @@ -1632,16 +1632,16 @@ void MCB2_FlyMap(void) FillWindowPixelBuffer(2, 0x00); PrintTextOnWindow(2, 1, gText_FlyToWhere, 0, 1, 0, NULL); schedule_bg_copy_tilemap_to_vram(0); - gMain.state ++; + gMain.state++; break; case 8: sub_8124A70(); - gMain.state ++; + gMain.state++; break; case 9: BlendPalettes(-1, 16, 0); SetVBlankCallback(sub_81248C0); - gMain.state ++; + gMain.state++; break; case 10: SetGpuReg(REG_OFFSET_BLDCNT, 0); @@ -1651,7 +1651,7 @@ void MCB2_FlyMap(void) ShowBg(2); sub_81248F4(sub_8124D14); SetMainCallback2(sub_81248D4); - gMain.state ++; + gMain.state++; break; } } @@ -1686,7 +1686,7 @@ static void sub_8124904(void) if (gUnknown_0203A148->regionMap.iconDrawType > MAPSECTYPE_NONE && gUnknown_0203A148->regionMap.iconDrawType <= MAPSECTYPE_BATTLE_FRONTIER) { flag = FALSE; - for (i = 0; i < 1; i ++) + for (i = 0; i < 1; i++) { if (gUnknown_0203A148->regionMap.mapSecId == gUnknown_085A1EDC[i].mapSecId) { @@ -1762,7 +1762,7 @@ static void sub_8124AD4(void) u8 spriteId; canFlyFlag = FLAG_VISITED_LITTLEROOT_TOWN; - for (i = 0; i < 16; i ++) + for (i = 0; i < 16; i++) { sub_8124630(i, &x, &y, &width, &height); x = (x + MAPCURSOR_X_MIN) * 8 + 4; @@ -1794,7 +1794,7 @@ static void sub_8124AD4(void) StartSpriteAnim(&gSprites[spriteId], shape); gSprites[spriteId].data0 = i; } - canFlyFlag ++; + canFlyFlag++; } } @@ -1808,7 +1808,7 @@ static void sub_8124BE4(void) u16 mapSecId; u8 spriteId; - for (i = 0; gUnknown_085A1F18[i][1] != MAPSEC_NONE; i ++) + for (i = 0; gUnknown_085A1F18[i][1] != MAPSEC_NONE; i++) { if (FlagGet(gUnknown_085A1F18[i][0])) { @@ -1832,7 +1832,7 @@ static void sub_8124CBC(struct Sprite *sprite) { if (gUnknown_0203A148->regionMap.mapSecId == sprite->data0) { - if (++ sprite->data1 > 16) + if (++sprite->data1 > 16) { sprite->data1 = 0; sprite->invisible = sprite->invisible ? FALSE : TRUE; @@ -1851,7 +1851,7 @@ static void sub_8124D14(void) { case 0: BeginNormalPaletteFade(-1, 0, 16, 0, 0); - gUnknown_0203A148->unk_004 ++; + gUnknown_0203A148->unk_004++; break; case 1: if (!UpdatePaletteFade()) @@ -1898,7 +1898,7 @@ static void sub_8124E0C(void) { case 0: BeginNormalPaletteFade(-1, 0, 0, 16, 0); - gUnknown_0203A148->unk_004 ++; + gUnknown_0203A148->unk_004++; break; case 1: if (!UpdatePaletteFade()) -- cgit v1.2.3