Merge branch 'master' into pokeball-doc

This commit is contained in:
hondew
2020-08-30 14:14:38 -04:00
1455 changed files with 29665 additions and 29517 deletions

View File

@@ -124,22 +124,22 @@ struct ProtectStruct
u32 flinchImmobility:1;
u32 notFirstStrike:1;
u32 palaceUnableToUseMove:1;
u32 physicalDmg;
u32 specialDmg;
s32 physicalDmg;
s32 specialDmg;
u8 physicalBattlerId;
u8 specialBattlerId;
};
struct SpecialStatus
{
u8 statLowered:1;
u8 lightningRodRedirected:1;
u8 restoredBattlerSprite: 1;
u8 intimidatedMon:1;
u8 traced:1;
u8 ppNotAffectedByPressure:1;
u8 flag40:1;
u8 focusBanded:1;
u32 statLowered:1;
u32 lightningRodRedirected:1;
u32 restoredBattlerSprite: 1;
u32 intimidatedMon:1;
u32 traced:1;
u32 ppNotAffectedByPressure:1;
u32 flag40:1;
u32 focusBanded:1;
s32 dmg;
s32 physicalDmg;
s32 specialDmg;
@@ -254,7 +254,7 @@ struct BattleResults
u16 playerMon2Species; // 0x26
u16 caughtMonSpecies; // 0x28
u8 caughtMonNick[POKEMON_NAME_LENGTH + 1]; // 0x2A
u8 filler35[1]; // 0x35
u8 filler35; // 0x35
u8 catchAttempts[11]; // 0x36
};

View File

@@ -274,7 +274,7 @@ extern const u8 gText_PkmnGettingPumped[];
extern const u8 gText_PkmnShroudedInMist[];
extern const u8 gText_PkmnsXPreventsSwitching[];
extern const u8 gText_TheGreatNewHope[];
extern const u8 gText_WillChampinshipDreamComeTrue[];
extern const u8 gText_WillChampionshipDreamComeTrue[];
extern const u8 gText_AFormerChampion[];
extern const u8 gText_ThePreviousChampion[];
extern const u8 gText_TheUnbeatenChampion[];

View File

@@ -9,7 +9,7 @@ bool8 FldEff_Pokeball(void);
void TransitionPhase1_Task_RunFuncs(u8 taskId);
void GetBg0TilesDst(u16 **tilemap, u16 **tileset);
extern const struct SpritePalette gFieldEffectObjectPaletteInfo10;
extern const struct SpritePalette gSpritePalette_Pokeball;
enum // TRANSITION_MUGSHOT
{

View File

@@ -52,8 +52,8 @@ void CancelMultiTurnMoves(u8 battlerId);
bool8 WasUnableToUseMove(u8 battlerId);
void PrepareStringBattle(u16 stringId, u8 battlerId);
void ResetSentPokesToOpponentValue(void);
void sub_803F9EC(u8 battlerId);
void sub_803FA70(u8 battlerId);
void OpponentSwitchInResetSentPokesToOpponentValue(u8 battlerId);
void UpdateSentPokesToOpponentValue(u8 battlerId);
void BattleScriptPush(const u8* bsPtr);
void BattleScriptPushCursor(void);
void BattleScriptPop(void);

View File

@@ -186,7 +186,7 @@
#define HITMARKER_x4000000 (1 << 26)
#define HITMARKER_CHARGING (1 << 27)
#define HITMARKER_FAINTED(battler) (gBitTable[battler] << 28)
#define HITMARKER_FAINTED2(battler) (1 << (28 + battler))
#define HITMARKER_FAINTED2(battler) ((1 << 28) << battler)
// Per-side statuses that affect an entire party
#define SIDE_STATUS_REFLECT (1 << 0)

View File

@@ -2,5 +2,6 @@
#define GUARD_CONSTANTS_COINS_H
#define MAX_COINS 9999
#define MAX_COIN_DIGITS 4
#endif // GUARD_CONSTANTS_COINS_H

View File

@@ -1,9 +1,9 @@
#ifndef GUARD_CONSTANTS_CONTEST_H
#define GUARD_CONSTANTS_CONTEST_H
#define CONTESTANT_COUNT 4
#define APPLAUSE_METER_SIZE 5
#define CONTEST_TURN_COUNT 5
#define CONTEST_NUM_APPEALS 5
#define CONTEST_LAST_APPEAL (CONTEST_NUM_APPEALS - 1)
#define LINK_CONTEST_FLAG_IS_LINK (1 << 0)
#define LINK_CONTEST_FLAG_IS_WIRELESS (1 << 1)
@@ -22,13 +22,6 @@
#define CONTEST_TYPE_NPC_MASTER (CONTEST_RANK_MASTER + 1)
#define CONTEST_TYPE_LINK (CONTEST_RANK_LINK + 1)
#define CONTEST_CATEGORY_COOL 0
#define CONTEST_CATEGORY_BEAUTY 1
#define CONTEST_CATEGORY_CUTE 2
#define CONTEST_CATEGORY_SMART 3
#define CONTEST_CATEGORY_TOUGH 4
#define CONTEST_CATEGORIES_COUNT 5
#define CONTEST_WINNER_ARTIST 0 // Winner shown by the artist, painting not necessarily saved
#define CONTEST_WINNER_HALL_1 1
#define CONTEST_WINNER_HALL_2 2
@@ -52,4 +45,165 @@
#define CANT_ENTER_CONTEST_EGG 3
#define CANT_ENTER_CONTEST_FAINTED 4
#define CONTEST_AI_CHECK_BAD_MOVE (1 << 0)
#define CONTEST_AI_CHECK_COMBO (1 << 1)
#define CONTEST_AI_CHECK_BORING (1 << 2)
#define CONTEST_AI_CHECK_EXCITEMENT (1 << 3)
#define CONTEST_AI_CHECK_ORDER (1 << 4)
#define CONTEST_AI_CHECK_GOOD_MOVE (1 << 5)
#define CONTEST_AI_ERRATIC (1 << 6)
#define CONTEST_AI_DUMMY_1 (1 << 7)
#define CONTEST_AI_DUMMY_2 (1 << 8)
#define CONTEST_AI_DUMMY_3 (1 << 9)
#define CONTEST_AI_DUMMY_4 (1 << 10)
#define CONTEST_AI_DUMMY_5 (1 << 11)
#define CONTEST_AI_DUMMY_6 (1 << 12)
#define CONTEST_AI_DUMMY_7 (1 << 13)
#define CONTEST_AI_DUMMY_8 (1 << 14)
#define CONTEST_AI_DUMMY_9 (1 << 15)
#define CONTEST_AI_DUMMY_10 (1 << 16)
#define CONTEST_AI_DUMMY_11 (1 << 17)
#define CONTEST_AI_DUMMY_12 (1 << 18)
#define CONTEST_AI_DUMMY_13 (1 << 19)
#define CONTEST_AI_DUMMY_14 (1 << 20)
#define CONTEST_AI_DUMMY_15 (1 << 21)
#define CONTEST_AI_DUMMY_16 (1 << 22)
#define CONTEST_AI_DUMMY_17 (1 << 23)
#define CONTEST_AI_DUMMY_18 (1 << 24)
#define CONTEST_AI_DUMMY_19 (1 << 25)
#define CONTEST_AI_DUMMY_20 (1 << 26)
#define CONTEST_AI_DUMMY_21 (1 << 27)
#define CONTEST_AI_DUMMY_22 (1 << 28)
#define CONTEST_AI_DUMMY_23 (1 << 29)
#define CONTEST_AI_DUMMY_24 (1 << 30)
#define CONTEST_AI_DUMMY_25 (1 << 31)
// The below scripts are used by every AI contest opponent
// It includes every non-dummy script
#define CONTEST_AI_COMMON (CONTEST_AI_CHECK_BAD_MOVE | CONTEST_AI_CHECK_COMBO | CONTEST_AI_CHECK_BORING | \
CONTEST_AI_CHECK_EXCITEMENT | CONTEST_AI_CHECK_ORDER | CONTEST_AI_CHECK_GOOD_MOVE | CONTEST_AI_ERRATIC | \
CONTEST_AI_DUMMY_1 | CONTEST_AI_DUMMY_2 | CONTEST_AI_DUMMY_3 | CONTEST_AI_DUMMY_4 | CONTEST_AI_DUMMY_5)
#define CONTEST_EFFECT_HIGHLY_APPEALING 0
#define CONTEST_EFFECT_USER_MORE_EASILY_STARTLED 1
#define CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES 2
#define CONTEST_EFFECT_REPETITION_NOT_BORING 3
#define CONTEST_EFFECT_AVOID_STARTLE_ONCE 4
#define CONTEST_EFFECT_AVOID_STARTLE 5
#define CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY 6
#define CONTEST_EFFECT_USER_LESS_EASILY_STARTLED 7
#define CONTEST_EFFECT_STARTLE_FRONT_MON 8
#define CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS 9
#define CONTEST_EFFECT_STARTLE_PREV_MON 10
#define CONTEST_EFFECT_STARTLE_PREV_MONS 11
#define CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON 12
#define CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS 13
#define CONTEST_EFFECT_STARTLE_PREV_MON_2 14
#define CONTEST_EFFECT_STARTLE_PREV_MONS_2 15
#define CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION 16
#define CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION 17
#define CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN 18
#define CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL 19
#define CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL 20
#define CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL 21
#define CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL 22
#define CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL 23
#define CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL 24
#define CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS 25
#define CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS 26
#define CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS 27
#define CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION 28
#define CONTEST_EFFECT_BETTER_IF_FIRST 29
#define CONTEST_EFFECT_BETTER_IF_LAST 30
#define CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES 31
#define CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE 32
#define CONTEST_EFFECT_BETTER_WHEN_LATER 33
#define CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING 34
#define CONTEST_EFFECT_BETTER_IF_SAME_TYPE 35
#define CONTEST_EFFECT_BETTER_IF_DIFF_TYPE 36
#define CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL 37
#define CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS 38
#define CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION 39
#define CONTEST_EFFECT_NEXT_APPEAL_EARLIER 40
#define CONTEST_EFFECT_NEXT_APPEAL_LATER 41
#define CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER 42
#define CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER 43
#define CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST 44
#define CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS 45
#define CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED 46
#define CONTEST_EFFECT_DONT_EXCITE_AUDIENCE 47
// Each of the above effects is grouped into one of these effect type categories
// Only a few of these get checked by the AI, the rest go unused
#define CONTEST_EFFECT_TYPE_APPEAL 0
#define CONTEST_EFFECT_TYPE_AVOID_STARTLE 1
#define CONTEST_EFFECT_TYPE_STARTLE_MON 2
#define CONTEST_EFFECT_TYPE_STARTLE_MONS 3
#define CONTEST_EFFECT_TYPE_WORSEN 4
#define CONTEST_EFFECT_TYPE_SPECIAL_APPEAL 5
#define CONTEST_EFFECT_TYPE_TURN_ORDER 6
#define COMBO_STARTER_RAIN_DANCE 1
#define COMBO_STARTER_RAGE 2
#define COMBO_STARTER_FOCUS_ENERGY 3
#define COMBO_STARTER_HYPNOSIS 4
#define COMBO_STARTER_ENDURE 5
#define COMBO_STARTER_HORN_ATTACK 6
#define COMBO_STARTER_SWORDS_DANCE 7
#define COMBO_STARTER_STOCKPILE 8
#define COMBO_STARTER_SUNNY_DAY 9
#define COMBO_STARTER_REST 10
#define COMBO_STARTER_VICE_GRIP 11
#define COMBO_STARTER_DEFENSE_CURL 12
#define COMBO_STARTER_CHARGE 13
#define COMBO_STARTER_ROCK_THROW 14
#define COMBO_STARTER_YAWN 15
#define COMBO_STARTER_SCARY_FACE 16
#define COMBO_STARTER_POWDER_SNOW 17
#define COMBO_STARTER_LOCK_ON 18
#define COMBO_STARTER_SOFT_BOILED 19
#define COMBO_STARTER_MEAN_LOOK 20
#define COMBO_STARTER_SCRATCH 21
#define COMBO_STARTER_GROWTH 22
#define COMBO_STARTER_HAIL 23
#define COMBO_STARTER_SANDSTORM 24
#define COMBO_STARTER_BELLY_DRUM 25
#define COMBO_STARTER_MIND_READER 26
#define COMBO_STARTER_DRAGON_BREATH 27
#define COMBO_STARTER_DRAGON_RAGE 28
#define COMBO_STARTER_DRAGON_DANCE 29
#define COMBO_STARTER_SURF 30
#define COMBO_STARTER_DIVE 31
#define COMBO_STARTER_STRING_SHOT 32
#define COMBO_STARTER_LEER 33
#define COMBO_STARTER_TAUNT 34
#define COMBO_STARTER_CHARM 35
#define COMBO_STARTER_HARDEN 36
#define COMBO_STARTER_SING 37
#define COMBO_STARTER_EARTHQUAKE 38
#define COMBO_STARTER_DOUBLE_TEAM 39
#define COMBO_STARTER_CURSE 40
#define COMBO_STARTER_SWEET_SCENT 41
#define COMBO_STARTER_SLUDGE 42
#define COMBO_STARTER_SLUDGE_BOMB 43
#define COMBO_STARTER_THUNDER_PUNCH 44
#define COMBO_STARTER_FIRE_PUNCH 45
#define COMBO_STARTER_ICE_PUNCH 46
#define COMBO_STARTER_PECK 47
#define COMBO_STARTER_METAL_SOUND 48
#define COMBO_STARTER_MUD_SPORT 49
#define COMBO_STARTER_WATER_SPORT 50
#define COMBO_STARTER_BONE_CLUB 51
#define COMBO_STARTER_BONEMERANG 52
#define COMBO_STARTER_BONE_RUSH 53
#define COMBO_STARTER_SAND_ATTACK 54
#define COMBO_STARTER_MUD_SLAP 55
#define COMBO_STARTER_FAKE_OUT 56
#define COMBO_STARTER_PSYCHIC 57
#define COMBO_STARTER_KINESIS 58
#define COMBO_STARTER_CONFUSION 59
#define COMBO_STARTER_POUND 60
#define COMBO_STARTER_SMOG 61
#define COMBO_STARTER_CALM_MIND 62
#endif // GUARD_CONSTANTS_CONTEST_H

View File

@@ -22,6 +22,6 @@
// Array buffers
#define EGG_MOVES_ARRAY_COUNT 10
#define EGG_LVL_UP_MOVES_ARRAY_COUNT 50
#define EGG_LVL_UP_MOVES_ARRAY_COUNT (MAX_LEVEL_UP_MOVES > 50 ? MAX_LEVEL_UP_MOVES : 50)
#endif //GUARD_DAYCARE_CONSTANTS_H

View File

@@ -20,10 +20,10 @@
#define FLDEFF_JUMP_SMALL_SPLASH 16
#define FLDEFF_LONG_GRASS 17
#define FLDEFF_JUMP_LONG_GRASS 18
#define FLDEFF_UNKNOWN_19 19
#define FLDEFF_UNKNOWN_20 20
#define FLDEFF_UNKNOWN_21 21
#define FLDEFF_UNKNOWN_22 22
#define FLDEFF_UNUSED_GRASS 19
#define FLDEFF_UNUSED_GRASS_2 20
#define FLDEFF_UNUSED_SAND 21
#define FLDEFF_WATER_SURFACING 22
#define FLDEFF_BERRY_TREE_GROWTH_SPARKLE 23
#define FLDEFF_DEEP_SAND_FOOTPRINTS 24
#define FLDEFF_POKECENTER_HEAL 25
@@ -50,8 +50,8 @@
#define FLDEFF_HEART_ICON 46
#define FLDEFF_NOP_47 47
#define FLDEFF_NOP_48 48
#define FLDEFF_POP_OUT_OF_ASH 49
#define FLDEFF_LAVARIDGE_GYM_WARP 50
#define FLDEFF_ASH_PUFF 49
#define FLDEFF_ASH_LAUNCH 50
#define FLDEFF_SWEET_SCENT 51
#define FLDEFF_SAND_PILLAR 52
#define FLDEFF_BUBBLES 53
@@ -65,8 +65,59 @@
#define FLDEFF_PCTURN_ON 61
#define FLDEFF_HALL_OF_FAME_RECORD 62
#define FLDEFF_USE_TELEPORT 63
#define FLDEFF_RAYQUAZA 64
#define FLDEFF_65 65
#define FLDEFF_RAYQUAZA_SPOTLIGHT 64
#define FLDEFF_DESTROY_DEOXYS_ROCK 65
#define FLDEFF_MOVE_DEOXYS_ROCK 66
#endif
#define FLDEFFOBJ_SHADOW_S 0
#define FLDEFFOBJ_SHADOW_M 1
#define FLDEFFOBJ_SHADOW_L 2
#define FLDEFFOBJ_SHADOW_XL 3
#define FLDEFFOBJ_TALL_GRASS 4
#define FLDEFFOBJ_RIPPLE 5
#define FLDEFFOBJ_ASH 6
#define FLDEFFOBJ_SURF_BLOB 7
#define FLDEFFOBJ_ARROW 8
#define FLDEFFOBJ_GROUND_IMPACT_DUST 9
#define FLDEFFOBJ_JUMP_TALL_GRASS 10
#define FLDEFFOBJ_SAND_FOOTPRINTS 11
#define FLDEFFOBJ_JUMP_BIG_SPLASH 12
#define FLDEFFOBJ_SPLASH 13
#define FLDEFFOBJ_JUMP_SMALL_SPLASH 14
#define FLDEFFOBJ_LONG_GRASS 15
#define FLDEFFOBJ_JUMP_LONG_GRASS 16
#define FLDEFFOBJ_UNUSED_GRASS 17
#define FLDEFFOBJ_UNUSED_GRASS_2 18
#define FLDEFFOBJ_UNUSED_SAND 19
#define FLDEFFOBJ_WATER_SURFACING 20
#define FLDEFFOBJ_REFLECTION_DISTORTION 21
#define FLDEFFOBJ_SPARKLE 22
#define FLDEFFOBJ_DEEP_SAND_FOOTPRINTS 23
#define FLDEFFOBJ_TREE_DISGUISE 24
#define FLDEFFOBJ_MOUNTAIN_DISGUISE 25
#define FLDEFFOBJ_BIRD 26
#define FLDEFFOBJ_BIKE_TIRE_TRACKS 27
#define FLDEFFOBJ_SAND_DISGUISE 28
#define FLDEFFOBJ_SAND_PILE 29
#define FLDEFFOBJ_SHORT_GRASS 30
#define FLDEFFOBJ_HOT_SPRINGS_WATER 31
#define FLDEFFOBJ_ASH_PUFF 32
#define FLDEFFOBJ_ASH_LAUNCH 33
#define FLDEFFOBJ_BUBBLES 34
#define FLDEFFOBJ_SMALL_SPARKLE 35
#define FLDEFFOBJ_RAYQUAZA 36
#define FLDEFF_PAL_TAG_CUT_GRASS 0x1000
#define FLDEFF_PAL_TAG_SECRET_POWER_TREE 0x1003
#define FLDEFF_PAL_TAG_GENERAL_0 0x1004
#define FLDEFF_PAL_TAG_GENERAL_1 0x1005
#define FLDEFF_PAL_TAG_POKEBALL_GLOW 0x1007
#define FLDEFF_PAL_TAG_SECRET_POWER_PLANT 0x1008
#define FLDEFF_PAL_TAG_POKEBALL 0x1009
#define FLDEFF_PAL_TAG_ASH 0x100D
#define FLDEFF_PAL_TAG_SAND_PILLAR 0x100E
#define FLDEFF_PAL_TAG_SMALL_SPARKLE 0x100F
#define FLDEFF_PAL_TAG_HOF_MONITOR 0x1010
#define FLDEFF_PAL_TAG_UNKNOWN 0x1011
#endif // GUARD_FIELD_EFFECT_CONSTANTS_H

View File

@@ -768,7 +768,7 @@
#define FLAG_HIDE_PETALBURG_WOODS_AQUA_GRUNT 0x2D5
#define FLAG_HIDE_PETALBURG_CITY_WALLY 0x2D6
#define FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_INVISIBLE_NINJA_BOY 0x2D7
#define FLAG_HIDE_PETALBURG_CITY_WALLYS_AUNT 0x2D8
#define FLAG_HIDE_PETALBURG_CITY_WALLYS_MOM 0x2D8
#define FLAG_UNUSED_0x2D9 0x2D9 // Unused Flag
@@ -866,13 +866,13 @@
#define FLAG_HIDE_AQUA_HIDEOUT_1F_GRUNT_1_BLOCKING_ENTRANCE 0x335
#define FLAG_HIDE_AQUA_HIDEOUT_1F_GRUNT_2_BLOCKING_ENTRANCE 0x336
#define FLAG_HIDE_MOSSDEEP_CITY_TEAM_MAGMA 0x337
#define FLAG_HIDE_PETALBURG_GYM_WALLYS_UNCLE 0x338
#define FLAG_HIDE_PETALBURG_GYM_WALLYS_DAD 0x338
#define FLAG_HIDE_LEGEND_MON_CAVE_OF_ORIGIN 0x339 // Unused, leftover from R/S
#define FLAG_HIDE_SOOTOPOLIS_CITY_ARCHIE 0x33A
#define FLAG_HIDE_SOOTOPOLIS_CITY_MAXIE 0x33B
#define FLAG_HIDE_SEAFLOOR_CAVERN_ROOM_9_ARCHIE 0x33C
#define FLAG_HIDE_SEAFLOOR_CAVERN_ROOM_9_MAXIE 0x33D
#define FLAG_HIDE_PETALBURG_CITY_WALLYS_UNCLE 0x33E
#define FLAG_HIDE_PETALBURG_CITY_WALLYS_DAD 0x33E
#define FLAG_HIDE_SEAFLOOR_CAVERN_ROOM_9_MAGMA_GRUNTS 0x33F
#define FLAG_HIDE_LILYCOVE_CONTEST_HALL_BLEND_MASTER 0x340
#define FLAG_HIDE_GRANITE_CAVE_STEVEN 0x341

View File

@@ -60,6 +60,14 @@
#define MAX_MON_MOVES 4
#define NUM_STATS 6
#define CONTESTANT_COUNT 4
#define CONTEST_CATEGORY_COOL 0
#define CONTEST_CATEGORY_BEAUTY 1
#define CONTEST_CATEGORY_CUTE 2
#define CONTEST_CATEGORY_SMART 3
#define CONTEST_CATEGORY_TOUGH 4
#define CONTEST_CATEGORIES_COUNT 5
// party sizes
#define PARTY_SIZE 6
#define MULTI_PARTY_SIZE PARTY_SIZE / 2

View File

@@ -497,6 +497,11 @@
#define MAX_PC_ITEM_CAPACITY 999
#define MAX_BERRY_CAPACITY 999
// Secondary IDs for rods
#define OLD_ROD 0
#define GOOD_ROD 1
#define SUPER_ROD 2
// Check if the item is one that can be used on a Pokemon.
#define ITEM_HAS_EFFECT(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2)

View File

@@ -1,6 +1,10 @@
#ifndef GUARD_CONSTANTS_LAYOUTS_H
#define GUARD_CONSTANTS_LAYOUTS_H
//
// DO NOT MODIFY THIS FILE! It is auto-generated from data/layouts/layouts.json
//
#define LAYOUT_PETALBURG_CITY 1
#define LAYOUT_SLATEPORT_CITY 2
#define LAYOUT_MAUVILLE_CITY 3

View File

@@ -1,6 +1,10 @@
#ifndef GUARD_CONSTANTS_MAP_GROUPS_H
#define GUARD_CONSTANTS_MAP_GROUPS_H
//
// DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json
//
// Map Group 0
#define MAP_PETALBURG_CITY (0 | (0 << 8))
#define MAP_SLATEPORT_CITY (1 | (0 << 8))

View File

@@ -1,6 +1,41 @@
#ifndef GUARD_CONSTANTS_MAP_SCRIPTS_H
#define GUARD_CONSTANTS_MAP_SCRIPTS_H
/*
IDs for special scripts that can be run for a particular map.
For the functions that handle when they are run, see these constants' uses in src/script.c
Below describes when a script of this kind will be called, and what it typically does.
They are numbered in the order that they will be called when entering a map (from a warp or camera transition).
NOTE: These descriptions are just of what they generally do, not what they always or have to do
3. ON_LOAD: Run after the layout is loaded (but not drawn yet).
Almost exclusively used to set metatiles on the map before it's first drawn
6. ON_FRAME_TABLE: Run every frame after the map has faded in, before player input is processed.
This is a table of scripts that each run if their condition is satisfied.
Used to trigger an event, such as the player exiting the cable car or the SS Tidal sailor announcing progress
2. ON_TRANSITION: Run during the transition to the map
Used to set map-specific flags/vars, update object positions/movement types, set weather, etc
5. ON_WARP_INTO_MAP_TABLE: Run after the map's objects are loaded.
This is a table of scripts that each run if their condition is satisfied.
Used to add objects to the scene or update something about the player as they warp in (e.g. their facing dir or visibility)
Note that ON_TRANSITION may also handle object visibility, but would do so by modifying a flag or var
4. ON_RESUME: Run at the end of map load, and again any time upon returning to field (e.g. exiting the Bag menu, or finishing a battle)
Used to hide defeated static pokemon, or maintain some map state (e.g. the Trainer Hill timer, or the cycling road challenge)
In some maps this takes the metatile setting job of ON_LOAD
1. ON_DIVE_WARP: Run after the player chooses to dive/emerge.
Only used once, to determine whether or not the player should emerge in the Sealed Chamber
x. ON_RETURN_TO_FIELD: Run exlusively upon returning to the field, shortly after ON_RESUME (as opposed to ON_RESUME, which also runs once on entering the map)
Used rarely, when something must only happen on reload (e.g. making sure Mew is above the grass after battling it on Faraway Island)
*/
#define MAP_SCRIPT_ON_LOAD 1
#define MAP_SCRIPT_ON_FRAME_TABLE 2
#define MAP_SCRIPT_ON_TRANSITION 3

View File

@@ -289,31 +289,31 @@
#define METATILE_EverGrande_Door_PokemonLeague 0x21D
// gTileset_PokemonCenter
#define METATILE_PokemonCenter_Elevator1F_Tile0_Frame0 0x280
#define METATILE_PokemonCenter_Elevator1F_Tile0_Frame1 0x282
#define METATILE_PokemonCenter_Elevator1F_Tile0_Frame2 0x284
#define METATILE_PokemonCenter_Elevator1F_Tile1_Frame0 0x281
#define METATILE_PokemonCenter_Elevator1F_Tile1_Frame1 0x283
#define METATILE_PokemonCenter_Elevator1F_Tile1_Frame2 0x285
#define METATILE_PokemonCenter_Elevator1F_Tile2_Frame0 0x288
#define METATILE_PokemonCenter_Elevator1F_Tile2_Frame1 0x28A
#define METATILE_PokemonCenter_Elevator1F_Tile2_Frame2 0x28C
#define METATILE_PokemonCenter_Elevator1F_Tile3_Frame0 0x289
#define METATILE_PokemonCenter_Elevator1F_Tile3_Frame1 0x28B
#define METATILE_PokemonCenter_Elevator1F_Tile3_Frame2 0x28D
#define METATILE_PokemonCenter_Elevator2F_Tile0_Frame0 0x2A0
#define METATILE_PokemonCenter_Elevator2F_Tile0_Frame1 0x2A2
#define METATILE_PokemonCenter_Elevator2F_Tile0_Frame2 0x2A4
#define METATILE_PokemonCenter_Elevator2F_Tile1_Frame0 0x2A1
#define METATILE_PokemonCenter_Elevator2F_Tile1_Frame1 0x2A3
#define METATILE_PokemonCenter_Elevator2F_Tile1_Frame2 0x2A5
#define METATILE_PokemonCenter_Elevator2F_Tile2_Frame0 0x2A8
#define METATILE_PokemonCenter_Elevator2F_Tile2_Frame1 0x2AA
#define METATILE_PokemonCenter_Elevator2F_Tile2_Frame2 0x2AC
#define METATILE_PokemonCenter_Floor_ShadowTop_Alt 0x2DC
#define METATILE_PokemonCenter_Floor_Plain_Alt 0x2E4
#define METATILE_PokemonCenter_Floor_ShadowTop 0x21E
#define METATILE_PokemonCenter_CounterBarrier 0x25D
#define METATILE_PokemonCenter_Escalator1F_Tile0_Frame0 0x280
#define METATILE_PokemonCenter_Escalator1F_Tile0_Frame1 0x282
#define METATILE_PokemonCenter_Escalator1F_Tile0_Frame2 0x284
#define METATILE_PokemonCenter_Escalator1F_Tile1_Frame0 0x281
#define METATILE_PokemonCenter_Escalator1F_Tile1_Frame1 0x283
#define METATILE_PokemonCenter_Escalator1F_Tile1_Frame2 0x285
#define METATILE_PokemonCenter_Escalator1F_Tile2_Frame0 0x288
#define METATILE_PokemonCenter_Escalator1F_Tile2_Frame1 0x28A
#define METATILE_PokemonCenter_Escalator1F_Tile2_Frame2 0x28C
#define METATILE_PokemonCenter_Escalator1F_Tile3_Frame0 0x289
#define METATILE_PokemonCenter_Escalator1F_Tile3_Frame1 0x28B
#define METATILE_PokemonCenter_Escalator1F_Tile3_Frame2 0x28D
#define METATILE_PokemonCenter_Escalator2F_Tile0_Frame0 0x2A0
#define METATILE_PokemonCenter_Escalator2F_Tile0_Frame1 0x2A2
#define METATILE_PokemonCenter_Escalator2F_Tile0_Frame2 0x2A4
#define METATILE_PokemonCenter_Escalator2F_Tile1_Frame0 0x2A1
#define METATILE_PokemonCenter_Escalator2F_Tile1_Frame1 0x2A3
#define METATILE_PokemonCenter_Escalator2F_Tile1_Frame2 0x2A5
#define METATILE_PokemonCenter_Escalator2F_Tile2_Frame0 0x2A8
#define METATILE_PokemonCenter_Escalator2F_Tile2_Frame1 0x2AA
#define METATILE_PokemonCenter_Escalator2F_Tile2_Frame2 0x2AC
#define METATILE_PokemonCenter_Floor_ShadowTop_Alt 0x2DC
#define METATILE_PokemonCenter_Floor_Plain_Alt 0x2E4
#define METATILE_PokemonCenter_Floor_ShadowTop 0x21E
#define METATILE_PokemonCenter_CounterBarrier 0x25D
// gTileset_InsideOfTruck
#define METATILE_InsideOfTruck_ExitLight_Top 0x208

View File

@@ -84,6 +84,10 @@
#define NUM_NATURE_STATS NUM_STATS - 1 // excludes HP
#define NUM_BATTLE_STATS NUM_STATS + 2 // includes Accuracy and Evasion
#define MIN_STAT_STAGE 0
#define DEFAULT_STAT_STAGE 6
#define MAX_STAT_STAGE 12
// Shiny odds
#define SHINY_ODDS 8 // Actual probability is SHINY_ODDS/65536
@@ -200,6 +204,8 @@
#define LEVEL_UP_MOVE_LV 0xFE00
#define LEVEL_UP_END 0xFFFF
#define MAX_LEVEL_UP_MOVES 20
#define MON_MALE 0x00
#define MON_FEMALE 0xFE
#define MON_GENDERLESS 0xFF
@@ -226,6 +232,7 @@
#define STATUS_PRIMARY_POKERUS 6
#define STATUS_PRIMARY_FAINTED 7
#define MAX_PER_STAT_EVS 255
#define MAX_TOTAL_EVS 510
#define EV_ITEM_RAISE_LIMIT 100

View File

@@ -0,0 +1,7 @@
#ifndef GUARD_CONSTANTS_ROULETTE_H
#define GUARD_CONSTANTS_ROULETTE_H
// Flag set in gSpecialVar_0x8004 when playing Roulette on a Game Corner service day
#define ROULETTE_SPECIAL_RATE (1 << 7)
#endif // GUARD_CONSTANTS_ROULETTE_H

View File

@@ -1,42 +1,6 @@
#ifndef GUARD_CONSTANTS_SLOT_MACHINE_H
#define GUARD_CONSTANTS_SLOT_MACHINE_H
#define NUM_REELS 3
#define REEL_NUM_TAGS 21
#define REEL_TAG_HEIGHT 24
#define SLOT_MACHINE_COUNT 12
// Lucky Flags
#define LUCKY_BIAS_REPLAY (1 << 0)
#define LUCKY_BIAS_CHERRY (1 << 1)
#define LUCKY_BIAS_LOTAD (1 << 2)
#define LUCKY_BIAS_AZURILL (1 << 3)
#define LUCKY_BIAS_POWER (1 << 4)
#define LUCKY_BIAS_REELTIME (1 << 5)
#define LUCKY_BIAS_MIXED_777 (1 << 6)
#define LUCKY_BIAS_777 (1 << 7)
#define SLOT_MACHINE_TAG_7_RED 0
#define SLOT_MACHINE_TAG_7_BLUE 1
#define SLOT_MACHINE_TAG_AZURILL 2
#define SLOT_MACHINE_TAG_LOTAD 3
#define SLOT_MACHINE_TAG_CHERRY 4
#define SLOT_MACHINE_TAG_POWER 5
#define SLOT_MACHINE_TAG_REPLAY 6
#define SLOT_MACHINE_MATCHED_1CHERRY 0
#define SLOT_MACHINE_MATCHED_2CHERRY 1
#define SLOT_MACHINE_MATCHED_REPLAY 2
#define SLOT_MACHINE_MATCHED_LOTAD 3
#define SLOT_MACHINE_MATCHED_AZURILL 4
#define SLOT_MACHINE_MATCHED_POWER 5
#define SLOT_MACHINE_MATCHED_777_MIXED 6
#define SLOT_MACHINE_MATCHED_777_RED 7
#define SLOT_MACHINE_MATCHED_777_BLUE 8
#define SLOT_MACHINE_MATCHED_NONE 9
#define LEFT_REEL 0
#define MIDDLE_REEL 1
#define RIGHT_REEL 2
#endif // GUARD_CONSTANTS_SLOT_MACHINE_H
#endif // GUARD_CONSTANTS_SLOT_MACHINE_H

File diff suppressed because it is too large Load Diff

View File

@@ -22,7 +22,7 @@
#define TRAINER_HILL_FUNC_GET_CHALLENGE_STATUS 6
#define TRAINER_HILL_FUNC_GET_CHALLENGE_TIME 7
#define TRAINER_HILL_FUNC_GET_ALL_FLOORS_USED 8
#define TRAINER_HILL_FUNC_CLEAR_RESULT 9
#define TRAINER_HILL_FUNC_GET_IN_EREADER_MODE 9
#define TRAINER_HILL_FUNC_IN_CHALLENGE 10
#define TRAINER_HILL_FUNC_POST_BATTLE_TEXT 11
#define TRAINER_HILL_FUNC_SET_ALL_TRAINER_FLAGS 12

View File

@@ -133,5 +133,59 @@
#define NUM_SECRET_BASE_FLAGS 32 // by definition, bitfield of 2 u16s
// TV Show states for Pokemon Contest Live Updates
#define CONTESTLIVE_STATE_INTRO 0
#define CONTESTLIVE_STATE_WON_BOTH_ROUNDS 1
#define CONTESTLIVE_STATE_BETTER_ROUND2 2
#define CONTESTLIVE_STATE_EQUAL_ROUNDS 3
#define CONTESTLIVE_STATE_BETTER_ROUND1 4
#define CONTESTLIVE_STATE_GOT_NERVOUS 5
#define CONTESTLIVE_STATE_STARTLED_OTHER 6
#define CONTESTLIVE_STATE_USED_COMBO 7
#define CONTESTLIVE_STATE_EXCITING_APPEAL 8
#define CONTESTLIVE_STATE_COOL 9
#define CONTESTLIVE_STATE_BEAUTIFUL 10
#define CONTESTLIVE_STATE_CUTE 11
#define CONTESTLIVE_STATE_SMART 12
#define CONTESTLIVE_STATE_TOUGH 13
#define CONTESTLIVE_STATE_VERY_EXCITING_APPEAL 14
#define CONTESTLIVE_STATE_VERY_COOL 15
#define CONTESTLIVE_STATE_VERY_BEAUTIFUL 16
#define CONTESTLIVE_STATE_VERY_CUTE 17
#define CONTESTLIVE_STATE_VERY_SMART 18
#define CONTESTLIVE_STATE_VERY_TOUGH 19
#define CONTESTLIVE_STATE_TOOK_BREAK 20
#define CONTESTLIVE_STATE_GOT_STARTLED 21
#define CONTESTLIVE_STATE_USED_MOVE 22
#define CONTESTLIVE_STATE_TALK_ABOUT_LOSER 23
#define CONTESTLIVE_STATE_NO_APPEALS 24
#define CONTESTLIVE_STATE_LAST_BOTH 25
#define CONTESTLIVE_STATE_NOT_EXCITING_ENOUGH 26
#define CONTESTLIVE_STATE_LOST_AFTER_ROUND1_WIN 27
#define CONTESTLIVE_STATE_NO_EXCITING_APPEALS 28
#define CONTESTLIVE_STATE_LOST_SMALL_MARGIN 29
#define CONTESTLIVE_STATE_REPEATED_APPEALS 30
#define CONTESTLIVE_STATE_LOST 31
#define CONTESTLIVE_STATE_OUTRO 32
// Flags used to comment on winner
#define CONTESTLIVE_FLAG_EXCITING_APPEAL (1 << 0)
#define CONTESTLIVE_FLAG_GOT_NERVOUS (1 << 1)
#define CONTESTLIVE_FLAG_MAXED_EXCITEMENT (1 << 2)
#define CONTESTLIVE_FLAG_USED_COMBO (1 << 3)
#define CONTESTLIVE_FLAG_STARTLED_OTHER (1 << 4)
#define CONTESTLIVE_FLAG_SKIPPED_TURN (1 << 5)
#define CONTESTLIVE_FLAG_GOT_STARTLED (1 << 6)
#define CONTESTLIVE_FLAG_MADE_APPEAL (1 << 7)
// Flags used to comment on loser
#define CONTESTLIVE_FLAG_LOST (1 << 0)
#define CONTESTLIVE_FLAG_REPEATED_MOVE (1 << 1)
#define CONTESTLIVE_FLAG_LOST_SMALL_MARGIN (1 << 2)
#define CONTESTLIVE_FLAG_NO_EXCITEMENT (1 << 3)
#define CONTESTLIVE_FLAG_BLEW_LEAD (1 << 4)
#define CONTESTLIVE_FLAG_MISSED_EXCITEMENT (1 << 5)
#define CONTESTLIVE_FLAG_LAST_BOTH_ROUNDS (1 << 6)
#define CONTESTLIVE_FLAG_NO_APPEALS (1 << 7)
#endif //GUARD_CONSTANTS_TV_H

View File

@@ -4,135 +4,6 @@
#include "palette.h"
#include "constants/contest.h"
enum
{
CONTEST_DEBUG_MODE_OFF,
// Prints the totalPoints value for each contestant.
CONTEST_DEBUG_MODE_PRINT_POINT_TOTAL,
// Prints the ContestResourcesField1C::unk_C value as a bitstring for each contestant.
CONTEST_DEBUG_MODE_PRINT_UNK_C,
// Prints the ContestResourcesField1C::unk_D value as a bitstring for each contestant.
CONTEST_DEBUG_MODE_PRINT_UNK_D
};
enum
{
CONTEST_EFFECT_HIGHLY_APPEALING,
CONTEST_EFFECT_USER_MORE_EASILY_STARTLED,
CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES,
CONTEST_EFFECT_REPETITION_NOT_BORING,
CONTEST_EFFECT_AVOID_STARTLE_ONCE,
CONTEST_EFFECT_AVOID_STARTLE,
CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY,
CONTEST_EFFECT_USER_LESS_EASILY_STARTLED,
CONTEST_EFFECT_STARTLE_FRONT_MON,
CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS,
CONTEST_EFFECT_STARTLE_PREV_MON,
CONTEST_EFFECT_STARTLE_PREV_MONS,
CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON,
CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS,
CONTEST_EFFECT_STARTLE_PREV_MON_2,
CONTEST_EFFECT_STARTLE_PREV_MONS_2,
CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION,
CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION,
CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN,
CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL,
CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL,
CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL,
CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL,
CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL,
CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL,
CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS,
CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS,
CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS,
CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION,
CONTEST_EFFECT_BETTER_IF_FIRST,
CONTEST_EFFECT_BETTER_IF_LAST,
CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES,
CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE,
CONTEST_EFFECT_BETTER_WHEN_LATER,
CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING,
CONTEST_EFFECT_BETTER_IF_SAME_TYPE,
CONTEST_EFFECT_BETTER_IF_DIFF_TYPE,
CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL,
CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS,
CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION,
CONTEST_EFFECT_NEXT_APPEAL_EARLIER,
CONTEST_EFFECT_NEXT_APPEAL_LATER,
CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER,
CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER,
CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST,
CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS,
CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED,
CONTEST_EFFECT_DONT_EXCITE_AUDIENCE
};
enum
{
COMBO_STARTER_RAIN_DANCE = 1,
COMBO_STARTER_RAGE,
COMBO_STARTER_FOCUS_ENERGY,
COMBO_STARTER_HYPNOSIS,
COMBO_STARTER_ENDURE,
COMBO_STARTER_HORN_ATTACK,
COMBO_STARTER_SWORDS_DANCE,
COMBO_STARTER_STOCKPILE,
COMBO_STARTER_SUNNY_DAY,
COMBO_STARTER_REST,
COMBO_STARTER_VICE_GRIP,
COMBO_STARTER_DEFENSE_CURL,
COMBO_STARTER_CHARGE,
COMBO_STARTER_ROCK_THROW,
COMBO_STARTER_YAWN,
COMBO_STARTER_SCARY_FACE,
COMBO_STARTER_POWDER_SNOW,
COMBO_STARTER_LOCK_ON,
COMBO_STARTER_SOFT_BOILED,
COMBO_STARTER_MEAN_LOOK,
COMBO_STARTER_SCRATCH,
COMBO_STARTER_GROWTH,
COMBO_STARTER_HAIL,
COMBO_STARTER_SANDSTORM,
COMBO_STARTER_BELLY_DRUM,
COMBO_STARTER_MIND_READER,
COMBO_STARTER_DRAGON_BREATH,
COMBO_STARTER_DRAGON_RAGE,
COMBO_STARTER_DRAGON_DANCE,
COMBO_STARTER_SURF,
COMBO_STARTER_DIVE,
COMBO_STARTER_STRING_SHOT,
COMBO_STARTER_LEER,
COMBO_STARTER_TAUNT,
COMBO_STARTER_CHARM,
COMBO_STARTER_HARDEN,
COMBO_STARTER_SING,
COMBO_STARTER_EARTHQUAKE,
COMBO_STARTER_DOUBLE_TEAM,
COMBO_STARTER_CURSE,
COMBO_STARTER_SWEET_SCENT,
COMBO_STARTER_SLUDGE,
COMBO_STARTER_SLUDGE_BOMB,
COMBO_STARTER_THUNDER_PUNCH,
COMBO_STARTER_FIRE_PUNCH,
COMBO_STARTER_ICE_PUNCH,
COMBO_STARTER_PECK,
COMBO_STARTER_METAL_SOUND,
COMBO_STARTER_MUD_SPORT,
COMBO_STARTER_WATER_SPORT,
COMBO_STARTER_BONE_CLUB,
COMBO_STARTER_BONEMERANG,
COMBO_STARTER_BONE_RUSH,
COMBO_STARTER_SAND_ATTACK,
COMBO_STARTER_MUD_SLAP,
COMBO_STARTER_FAKE_OUT,
COMBO_STARTER_PSYCHIC,
COMBO_STARTER_KINESIS,
COMBO_STARTER_CONFUSION,
COMBO_STARTER_POUND,
COMBO_STARTER_SMOG,
COMBO_STARTER_CALM_MIND
};
enum
{
CONTEST_STRING_MORE_CONSCIOUS,
@@ -206,29 +77,38 @@ enum {
CONTEST_FILTER_ONLY_POSTGAME
};
// Constants for changing in-contest Condition (the stars that appear during appeals)
enum {
CONDITION_NO_CHANGE,
CONDITION_GAIN,
CONDITION_LOSE,
};
struct ContestPokemon
{
/*0x00*/ u16 species;
/*0x02*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
/*0x0D*/ u8 trainerName[PLAYER_NAME_LENGTH + 1];
/*0x15*/ u8 trainerGfxId;
/*0x18*/ u32 aiChecks;
/*0x1C*/ u8 whichRank:2; // 0x1 0x2
u8 aiPool_Cool:1; // 0x4
u8 aiPool_Beauty:1; // 0x8
u8 aiPool_Cute:1; // 0x10
u8 aiPool_Smart:1; // 0x20
u8 aiPool_Tough:1; // 0x40
/*0x1E*/ u16 moves[MAX_MON_MOVES]; // moves
/*0x26*/ u8 cool; // cool
/*0x27*/ u8 beauty; // beauty
/*0x28*/ u8 cute; // cute
/*0x29*/ u8 smart; // smart
/*0x2A*/ u8 tough; // tough
/*0x2B*/ u8 sheen; // sheen
/*0x2C*/ u8 unk2C[12];
/*0x38*/ u32 personality; // personality
/*0x3C*/ u32 otId; // otId
u16 species;
u8 nickname[POKEMON_NAME_LENGTH + 1];
u8 trainerName[PLAYER_NAME_LENGTH + 1];
u8 trainerGfxId;
u32 aiFlags;
u8 whichRank:2;
u8 aiPool_Cool:1;
u8 aiPool_Beauty:1;
u8 aiPool_Cute:1;
u8 aiPool_Smart:1;
u8 aiPool_Tough:1;
u16 moves[MAX_MON_MOVES];
u8 cool;
u8 beauty;
u8 cute;
u8 smart;
u8 tough;
u8 sheen;
u8 highestRank;
bool8 gameCleared;
u8 unused[10];
u32 personality;
u32 otId;
};
struct Shared1A004
@@ -239,101 +119,101 @@ struct Shared1A004
u8 savedJunk[0x800];
};
struct ContestStruct_field_18
struct ContestMoveAnimData
{
u16 species;
u16 unk2;
u8 unk4_0:1;
u8 unk5;
u32 unk8;
u32 unkC;
u32 unk10;
u16 targetSpecies;
bool8 hasTargetAnim:1;
u8 contestant;
u32 personality;
u32 otId;
u32 targetPersonality;
};
struct Contest
{
/*0x0*/ u8 playerMoveChoice;
/*0x1*/ u8 turnNumber;
/*0x2*/ u8 unused2[CONTESTANT_COUNT];
/*0x6*/ u16 unk1920A_0:1; // Task active flags?
u16 unk1920A_1:1;
u16 unk1920A_2:1;
u16 unk1920A_3:1;
u16 unk1920A_4:1;
u16 isShowingApplauseMeter:1;
u16 applauseMeterIsMoving:1;
u16 unk1920A_7:1;
/*0x7*/ u16 unk1920B_0:1;
u16 unk1920B_1:1;
u16 unk1920B_2:1;
/*0x8*/ u8 mainTaskId;
/*0x9*/ u8 unk1920D[4];
/*0xD*/ u8 unk19211;
/*0xE*/ u8 unk19212;
/*0xF*/ u8 filler19213;
/*0x10*/ u8 unk19214;
/*0x11*/ u8 unk19215;
/*0x12*/ u8 unk19216; // sprite ID
/*0x13*/ s8 applauseLevel;
/*0x19218*/ u8 prevTurnOrder[CONTESTANT_COUNT];
/*0x1921C*/ u32 unk1921C; // saved RNG value?
u16 moveHistory[CONTEST_TURN_COUNT][CONTESTANT_COUNT];
u8 excitementHistory[CONTEST_TURN_COUNT][CONTESTANT_COUNT];
u8 playerMoveChoice;
u8 appealNumber;
u8 unk[CONTESTANT_COUNT]; // never read
bool16 unused1:1;
bool16 unused2:1;
bool16 unused3:1;
bool16 unused4:1;
bool16 waitForJudgeSpeechBubble:1;
bool16 isShowingApplauseMeter:1;
bool16 applauseMeterIsMoving:1;
bool16 animatingAudience:1;
bool16 waitForAudienceBlend:1;
bool16 sliderHeartsAnimating:1; // When the slider heart is appearing/disappearing
bool16 waitForLink:1;
u8 mainTaskId;
u8 filler1[4];
u8 judgeAttentionTaskId;
u8 blendTaskId;
u8 filler2;
u8 turnNumber;
u8 currentContestant;
u8 judgeSpeechBubbleSpriteId;
s8 applauseLevel;
u8 prevTurnOrder[CONTESTANT_COUNT];
u32 unusedRng;
u16 moveHistory[CONTEST_NUM_APPEALS][CONTESTANT_COUNT];
u8 excitementHistory[CONTEST_NUM_APPEALS][CONTESTANT_COUNT];
u8 applauseMeterSpriteId;
/*0x1925D*/ u8 contestSetupState;
/*0x1925E*/ u8 unk1925E;
u8 contestSetupState;
u8 moveAnimTurnCount;
};
struct ContestantStatus
{
/*0x00*/ s16 appeal1; // move appeal?
/*0x02*/ s16 appeal2; // final appeal after end of turn, maybe?
/*0x04*/ s16 pointTotal;
/*0x06*/ u16 currMove;
/*0x08*/ u16 prevMove;
/*0x0A*/ u8 moveCategory;
/*0x0B*/ u8 ranking:2;
u8 unkB_2:2;
s16 baseAppeal;
s16 appeal;
s16 pointTotal;
u16 currMove;
u16 prevMove;
u8 moveCategory;
u8 ranking:2;
u8 unused1:2;
u8 moveRepeatCount:3;
u8 noMoreTurns:1; // used a one-time move?
/*0x0C*/ u8 nervous:1;
bool8 noMoreTurns:1; // used a one-time move?
bool8 nervous:1;
u8 numTurnsSkipped:2;
/*0x0D*/ s8 condition;
/*0x0E*/ u8 jam;
/*0x0F*/ u8 jamReduction;
s8 condition;
u8 jam;
u8 jamReduction;
// Flags set by move effect
/*0x10*/ u8 resistant:1;
u8 immune:1;
u8 moreEasilyStartled:1;
u8 usedRepeatableMove:1;
bool8 resistant:1;
bool8 immune:1;
bool8 moreEasilyStartled:1;
bool8 usedRepeatableMove:1;
u8 conditionMod:2; // 1: just raised condition; 2: appeal greatly improved by condition
u8 turnOrderMod:2; // 1: defined; 2: random
/*0x11*/ u8 turnOrderModAction:2; // 1: made first; 2: made last; 3: made random
u8 turnSkipped:1;
u8 exploded:1;
u8 overrideCategoryExcitementMod:1;
u8 appealTripleCondition:1;
u8 turnOrderModAction:2; // 1: made first; 2: made last; 3: made random
bool8 turnSkipped:1;
bool8 exploded:1;
bool8 overrideCategoryExcitementMod:1;
bool8 appealTripleCondition:1;
/*0x12*/ u8 jamSafetyCount;
/*0x13*/ u8 effectStringId; // status action?
/*0x14*/ u8 effectStringId2;
/*0x15*/ u8 disappointedRepeat:1;
u8 unk15_1:1;
u8 unk15_2:1;
u8 unk15_3:1;
u8 hasJudgesAttention:1;
u8 judgesAttentionWasRemoved:1;
u8 unk15_6:1;
/*0x16*/ u8 unk16;
/*0x17*/ u8 unk17;
/*0x18*/ u8 unk18;
/*0x19*/ u8 nextTurnOrder; // turn position
/*0x1A*/ u8 attentionLevel; // How much the Pokemon "stood out"
/*0x1B*/ u8 unk1B;
u8 jamSafetyCount;
u8 effectStringId; // status action?
u8 effectStringId2;
bool8 repeatedMove:1;
bool8 unused2:1;
bool8 repeatedPrevMove:1; // never read
bool8 completedComboFlag:1;
bool8 hasJudgesAttention:1;
bool8 judgesAttentionWasRemoved:1;
bool8 usedComboMove:1;
bool8 completedCombo;
u8 comboAppealBonus;
u8 repeatJam;
u8 nextTurnOrder; // turn position
u8 attentionLevel; // How much the Pokemon "stood out"
u8 contestantAnimTarget;
};
struct UnknownContestStruct7
struct ContestAppealMoveResults
{
u8 turnOrder[CONTESTANT_COUNT];
s16 jam;
@@ -348,97 +228,97 @@ struct ContestAIInfo
/*0x00*/ u8 aiState;
/*0x02*/ u16 nextMove;
/*0x04*/ u8 nextMoveIndex;
/*0x05*/ u8 unk5[4];
/*0x05*/ u8 moveScores[MAX_MON_MOVES];
/*0x09*/ u8 aiAction;
/*0x0A*/ u8 fillerA[0x6]; // TODO: don't know what's here
/*0x10*/ u8 currentAICheck;
/*0x14*/ u32 aiChecks;
/*0x0A*/ u8 filler[6];
/*0x10*/ u8 currentAIFlag;
/*0x14*/ u32 aiFlags;
/*0x18*/ s16 scriptResult;
/*0x1A*/ s16 scriptArr[3];
/*0x1A*/ s16 vars[3];
/*0x20*/ const u8 *stack[8];
/*0x40*/ u8 stackSize;
/*0x41*/ u8 contestantId;
};
struct UnknownContestStruct5
struct ContestExcitement
{
s8 bits_0; // current move excitement?
u8 excitementFrozen:1;
u8 excitementFreezer:3;
s8 unk2;
s8 moveExcitement;
u8 frozen:1;
u8 freezer:3;
s8 excitementAppealBonus;
};
struct UnknownContestStruct4
struct ContestGraphicsState
{
u8 unk0; // sprite ID
u8 unk1; // sprite ID
u8 unk2_0:1;
u8 unk2_1:1;
u8 unk2_2:1;
u8 sliderHeartSpriteId;
u8 nextTurnSpriteId;
bool8 sliderUpdating:1;
bool8 boxBlinking:1;
bool8 updatingAppealHearts:1;
};
struct UnknownContestStruct6
struct ContestFinalStandings
{
s32 unk0;
s32 unk4;
s32 unk8;
s32 unkC;
s32 totalPoints;
s32 round1Points;
s32 random;
s32 contestant;
};
struct ContestResourcesField1C
struct ContestTV
{
u16 unk0[5];
s16 unkA;
u8 unkC;
u8 unkD;
u8 unkE_1:1;
u8 unkE_2:1;
u16 appeals[CONTEST_NUM_APPEALS];
s16 move;
u8 winnerFlags;
u8 loserFlags;
bool8 madeAppeal:1;
bool8 madeExcitingAppeal:1;
};
struct ContestResourcesField20
struct ContestUnused
{
u8 filler_00[0x0C];
u8 filler[12];
};
struct ContestResources
{
struct Contest *contest;
struct ContestantStatus *status;
struct UnknownContestStruct7 *field_8;
struct ContestAppealMoveResults *appealResults;
struct ContestAIInfo *aiData;
struct UnknownContestStruct5 *field_10;
struct UnknownContestStruct4 *field_14;
struct ContestStruct_field_18 *field_18;
struct ContestResourcesField1C * field_1c;
struct ContestResourcesField20 * field_20;
struct ContestExcitement *excitement;
struct ContestGraphicsState *gfxState;
struct ContestMoveAnimData *moveAnim;
struct ContestTV *tv;
struct ContestUnused * unused;
u8 * contestBgTilemaps[CONTESTANT_COUNT];
void * field_34;
void * field_38;
void * boxBlinkTiles1;
void * boxBlinkTiles2;
void * field_3c;
};
#define eContest (*gContestResources->contest)
#define eContestantStatus (gContestResources->status)
#define eContestResources8 (*gContestResources->field_8)
#define eContestAppealResults (*gContestResources->appealResults)
#define eContestAI (*gContestResources->aiData)
#define eContestResources10 (*gContestResources->field_10)
#define eContestResources14 (*gContestResources->field_14)
#define eUnzippedContestAudienceGfx (gHeap + 0x18000)
#define eUnknownHeap19000 (gHeap + 0x19000)
#define eContestExcitement (*gContestResources->excitement)
#define eContestGfxState (gContestResources->gfxState)
#define eUnzippedContestAudience_Gfx (gHeap + 0x18000)
#define eContestAudienceFrame2_Gfx (gHeap + 0x19000)
#define eContestDebugMode (gHeap[0x1a000])
#define eUnknownHeap1A004 (*(struct Shared1A004 *)(gHeap + 0x1a004))
extern struct ContestPokemon gContestMons[CONTESTANT_COUNT];
extern s16 gContestMonConditions[CONTESTANT_COUNT];
extern s16 gContestMonRound1Points[CONTESTANT_COUNT];
extern s16 gContestMonTotalPoints[CONTESTANT_COUNT];
extern s16 gUnknown_02039F10[CONTESTANT_COUNT];
extern s16 gContestMonAppealPointTotals[CONTESTANT_COUNT];
extern s16 gContestMonRound2Points[CONTESTANT_COUNT];
extern u8 gContestFinalStandings[CONTESTANT_COUNT];
extern u8 gContestMonPartyIndex;
extern u8 gContestPlayerMonIndex;
extern u8 gContestantTurnOrder[CONTESTANT_COUNT];
extern u8 gLinkContestFlags;
extern u8 gUnknown_02039F2B;
extern u8 gContestLinkLeaderIndex;
extern u16 gSpecialVar_ContestCategory;
extern u16 gSpecialVar_ContestRank;
extern u8 gNumLinkContestPlayers;
@@ -454,11 +334,11 @@ extern u32 gContestRngValue;
void ResetLinkContestBoolean(void);
void LoadContestBgAfterMoveAnim(void);
void CB2_StartContest(void);
void sub_80DA8C8(u8 partyIndex);
void sub_80DAB8C(u8 contestType, u8 rank);
void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame);
void CreateContestMonFromParty(u8 partyIndex);
void SetContestants(u8 contestType, u8 rank);
void SetLinkAIContestants(u8 contestType, u8 rank, bool32 isPostgame);
u8 GetContestEntryEligibility(struct Pokemon *pkmn);
void sub_80DB09C(u8 contestCategory);
void CalculateRound1Points(u8 contestCategory);
bool8 IsSpeciesNotUnown(u16 species);
bool8 Contest_IsMonsTurnDisabled(u8 a);
void SaveLinkContestResults(void);
@@ -468,24 +348,12 @@ void SetContestantEffectStringID2(u8 a, u8 b);
void SetStartledString(u8 contestant, u8 jam);
void MakeContestantNervous(u8 p);
s8 Contest_GetMoveExcitement(u16 move);
bool8 sub_80DE1E8(u8 a);
bool8 IsContestantAllowedToCombo(u8 contestant);
void Contest_PrintTextToBg0WindowAt(u32 windowId, u8 *currChar, s32 x, s32 y, s32 fontId);
void ResetContestLinkResults(void);
bool8 sub_80DEDA8(u8 a);
u8 sub_80DEFA8(u8 a, u8 b);
void ClearContestWinnerPicsInContestHall(void);
void sub_80DFA08(struct ContestPokemon *mon, s32 language);
// contest link
void sub_81D9DE4(u8 taskId);
void sub_80FCF40(u8);
void sub_80FCFD0(u8);
void sub_80F8714(u8);
bool32 sub_80FC670(s16 *);
bool32 sub_80FC4F4(void *, u16);
bool8 sub_80FC55C(void);
bool8 sub_80FC530(u8);
u8 sub_80F86E0(u8 *);
void sub_80FC9F8(u8 taskId);
void StripPlayerAndMonNamesForLinkContest(struct ContestPokemon *mon, s32 language);
#endif //GUARD_CONTEST_H

View File

@@ -1,13 +1,23 @@
#ifndef GUARD_CONTEST_LINK_H
#define GUARD_CONTEST_LINK_H
void sub_80FCC88(u8);
void sub_80FCC88(u8);
void sub_80FCACC(u8);
void sub_80FC580(u8);
void sub_80FC6BC(u8);
void sub_80FC804(u8);
void sub_80FCE48(u8);
void sub_80FC894(u8);
void Task_LinkContest_CommunicateAppealsState(u8);
void Task_LinkContest_CommunicateFinalStandings(u8);
void Task_LinkContest_Init(u8);
void Task_LinkContest_CommunicateMonsRS(u8);
void Task_LinkContest_CommunicateRngRS(u8);
void Task_LinkContest_CommunicateLeaderIdsRS(u8);
void Task_LinkContest_CommunicateCategoryRS(u8);
void Task_LinkContest_CommunicateMonIdxs(u8);
void Task_LinkContest_StartCommunicationEm(u8);
void Task_LinkContest_CommunicateRound1Points(u8);
void Task_LinkContest_CommunicateTurnOrder(u8);
void Task_LinkContest_FinalizeConnection(u8);
void Task_LinkContest_CommunicateMoveSelections(u8);
bool32 LinkContest_TryLinkStandby(s16 *);
bool32 LinkContest_SendBlock(void *, u16);
bool8 LinkContest_GetBlockReceivedFromAllPlayers(void);
bool8 LinkContest_GetBlockReceived(u8);
u8 LinkContest_GetLeaderIndex(u8 *);
#endif //GUARD_CONTEST_LINK_H

View File

@@ -7,6 +7,8 @@ void StartContest(void);
void BufferContestantMonSpecies(void);
void ShowContestResults(void);
void ContestLinkTransfer(u8);
void sub_80FC998(u8 taskId);
void ShowContestWinnerPainting(void);
u16 GetContestRand(void);
u8 CountPlayerContestPaintings(void);
#endif // GUARD_CONTEST_UTIL_H

View File

@@ -16,11 +16,7 @@ enum SpinnerRunnerFollowPatterns
RUNFOLLOW_SOUTH_EAST_WEST
};
struct UnkStruct_085094AC
{
const union AnimCmd *const *anims;
u8 animPos[4];
};
#define FIGURE_8_LENGTH 72
#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_SPAWN (1 << 0)
#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE (1 << 1)
@@ -43,6 +39,12 @@ struct UnkStruct_085094AC
#define GROUND_EFFECT_FLAG_HOT_SPRINGS (1 << 18)
#define GROUND_EFFECT_FLAG_SEAWEED (1 << 19)
struct UnkStruct_085094AC
{
const union AnimCmd *const *anims;
u8 animPos[4];
};
struct PairedPalettes
{
u16 tag;
@@ -98,7 +100,7 @@ void ObjectEventTurnByLocalIdAndMap(u8, u8, u8, u8);
const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId);
void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8);
void FreeAndReserveObjectSpritePalettes(void);
void sub_808E82C(u8, u8, u8, s16, s16);
void SetObjectEventSpritePosByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y);
void sub_808E7E4(u8, u8, u8);
void sub_808E78C(u8, u8, u8, u8);
void sub_808E75C(s16, s16);
@@ -174,8 +176,6 @@ u8 sub_809785C(struct Sprite *);
u8 sub_80978E4(struct Sprite *);
void SetAndStartSpriteAnim(struct Sprite *, u8, u8);
bool8 SpriteAnimEnded(struct Sprite *);
void sub_8097750(struct Sprite *);
bool8 sub_8097758(struct Sprite *);
void CreateLevitateMovementTask(struct ObjectEvent *);
void DestroyExtraMovementTask(u8);
void UnfreezeObjectEvents(void);
@@ -191,8 +191,8 @@ u8 GetLedgeJumpDirection(s16, s16, u8);
void CameraObjectSetFollowedObjectId(u8 objectId);
u16 GetObjectPaletteTag(u8 palSlot);
void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible);
s16 sub_809773C(s16 a1);
s16 sub_8097728(s16 a1);
s16 GetFigure8XOffset(s16 idx);
s16 GetFigure8YOffset(s16 idx);
void CameraObjectReset2(void);
u8 GetObjectEventBerryTreeId(u8 objectEventId);
void sub_8092EF0(u8 mapId, u8 mapNumber, u8 mapGroup);

View File

@@ -294,39 +294,39 @@ extern const u8 gTVSafariFanClubText07[];
extern const u8 gTVSafariFanClubText08[];
extern const u8 gTVSafariFanClubText09[];
extern const u8 gTVSafariFanClubText10[];
extern const u8 gTVContestLiveUpdatesText00[];
extern const u8 gTVContestLiveUpdatesText01[];
extern const u8 gTVContestLiveUpdatesText02[];
extern const u8 gTVContestLiveUpdatesText03[];
extern const u8 gTVContestLiveUpdatesText04[];
extern const u8 gTVContestLiveUpdatesText05[];
extern const u8 gTVContestLiveUpdatesText06[];
extern const u8 gTVContestLiveUpdatesText07[];
extern const u8 gTVContestLiveUpdatesText08[];
extern const u8 gTVContestLiveUpdatesText09[];
extern const u8 gTVContestLiveUpdatesText10[];
extern const u8 gTVContestLiveUpdatesText11[];
extern const u8 gTVContestLiveUpdatesText12[];
extern const u8 gTVContestLiveUpdatesText13[];
extern const u8 gTVContestLiveUpdatesText14[];
extern const u8 gTVContestLiveUpdatesText15[];
extern const u8 gTVContestLiveUpdatesText16[];
extern const u8 gTVContestLiveUpdatesText17[];
extern const u8 gTVContestLiveUpdatesText18[];
extern const u8 gTVContestLiveUpdatesText19[];
extern const u8 gTVContestLiveUpdatesText20[];
extern const u8 gTVContestLiveUpdatesText21[];
extern const u8 gTVContestLiveUpdatesText22[];
extern const u8 gTVContestLiveUpdatesText23[];
extern const u8 gTVContestLiveUpdatesText24[];
extern const u8 gTVContestLiveUpdatesText25[];
extern const u8 gTVContestLiveUpdatesText26[];
extern const u8 gTVContestLiveUpdatesText27[];
extern const u8 gTVContestLiveUpdatesText28[];
extern const u8 gTVContestLiveUpdatesText29[];
extern const u8 gTVContestLiveUpdatesText30[];
extern const u8 gTVContestLiveUpdatesText31[];
extern const u8 gTVContestLiveUpdatesText32[];
extern const u8 ContestLiveUpdates_Text_Intro[];
extern const u8 ContestLiveUpdates_Text_WonBothRounds[];
extern const u8 ContestLiveUpdates_Text_BetterRound2[];
extern const u8 ContestLiveUpdates_Text_EqualRounds[];
extern const u8 ContestLiveUpdates_Text_BetterRound1[];
extern const u8 ContestLiveUpdates_Text_GotNervous[];
extern const u8 ContestLiveUpdates_Text_StartledFoes[];
extern const u8 ContestLiveUpdates_Text_UsedCombo[];
extern const u8 ContestLiveUpdates_Text_ExcitingAppeal[];
extern const u8 ContestLiveUpdates_Text_WasCool[];
extern const u8 ContestLiveUpdates_Text_WasBeautiful[];
extern const u8 ContestLiveUpdates_Text_WasCute[];
extern const u8 ContestLiveUpdates_Text_WasSmart[];
extern const u8 ContestLiveUpdates_Text_WasTough[];
extern const u8 ContestLiveUpdates_Text_VeryExcitingAppeal[];
extern const u8 ContestLiveUpdates_Text_VeryCool[];
extern const u8 ContestLiveUpdates_Text_VeryBeautiful[];
extern const u8 ContestLiveUpdates_Text_VeryCute[];
extern const u8 ContestLiveUpdates_Text_VerySmart[];
extern const u8 ContestLiveUpdates_Text_VeryTough[];
extern const u8 ContestLiveUpdates_Text_TookBreak[];
extern const u8 ContestLiveUpdates_Text_GotStartled[];
extern const u8 ContestLiveUpdates_Text_MoveWonderful[];
extern const u8 ContestLiveUpdates_Text_TalkAboutAnotherMon[];
extern const u8 ContestLiveUpdates_Text_FailedToAppeal[];
extern const u8 ContestLiveUpdates_Text_LastInBothRounds[];
extern const u8 ContestLiveUpdates_Text_NotExcitingEnough[];
extern const u8 ContestLiveUpdates_Text_LostAfterWinningRound1[];
extern const u8 ContestLiveUpdates_Text_NeverExciting[];
extern const u8 ContestLiveUpdates_Text_LostBySmallMargin[];
extern const u8 ContestLiveUpdates_Text_RepeatedAppeals[];
extern const u8 ContestLiveUpdates_Text_ValiantEffortButLost[];
extern const u8 ContestLiveUpdates_Text_Outro[];
extern const u8 gTVPokemonBattleUpdateText00[];
extern const u8 gTVPokemonBattleUpdateText01[];
extern const u8 gTVPokemonBattleUpdateText02[];
@@ -372,10 +372,11 @@ extern const u8 SecretBase_Text_Trainer8Defeated[];
extern const u8 SecretBase_Text_Trainer9Defeated[];
//field effects
extern const u8 EventScript_FldEffStrength[];
extern const u8 EventScript_UseStrength[];
extern const u8 EventScript_FailSweetScent[];
extern const u8 EventScript_FldEffFlash[];
extern const u8 EventScript_FldEffRockSmash[];
extern const u8 EventScript_UseFlash[];
extern const u8 EventScript_UseCut[];
extern const u8 EventScript_UseRockSmash[];
//player pc
extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_TurnOffPlayerPC[];
@@ -587,4 +588,26 @@ extern u8 BerryTree_EventScript_ItemUsePlantBerry[];
extern u8 BerryTree_EventScript_ItemUseWailmerPail[];
extern u8 BattleFrontier_OutsideEast_EventScript_WaterSudowoodo[];
// overworld
extern const u8 EventScript_WhiteOut[];
extern const u8 EventScript_ResetMrBriney[];
extern const u8 EventScript_DoLinkRoomExit[];
extern const u8 CableClub_EventScript_TooBusyToNotice[];
extern const u8 CableClub_EventScript_ReadTrainerCard[];
extern const u8 CableClub_EventScript_ReadTrainerCardColored[];
extern const u8 EventScript_BattleColosseum_4P_PlayerSpot0[];
extern const u8 EventScript_BattleColosseum_4P_PlayerSpot1[];
extern const u8 EventScript_BattleColosseum_4P_PlayerSpot2[];
extern const u8 EventScript_BattleColosseum_4P_PlayerSpot3[];
extern const u8 EventScript_RecordCenter_Spot0[];
extern const u8 EventScript_RecordCenter_Spot1[];
extern const u8 EventScript_RecordCenter_Spot2[];
extern const u8 EventScript_RecordCenter_Spot3[];
extern const u8 EventScript_BattleColosseum_2P_PlayerSpot0[];
extern const u8 EventScript_BattleColosseum_2P_PlayerSpot1[];
extern const u8 EventScript_TradeCenter_Chair1[];
extern const u8 EventScript_TradeCenter_Chair0[];
extern const u8 EventScript_ConfirmLeaveTradeRoom[];
extern const u8 EventScript_TerminateLink[];
#endif // GUARD_EVENT_SCRIPTS_H

View File

@@ -23,7 +23,7 @@ void DrawWholeMapView(void);
void CurrentMapDrawMetatileAt(int x, int y);
void sub_8089C08(s16 *a0, s16 *a1);
void DrawDoorMetatileAt(int x, int y, u16 *arr);
void move_tilemap_camera_to_upper_left_corner(void);
void ResetFieldCamera(void);
void sub_8057A58(void);
void ResetCameraUpdateInfo(void);
u32 InitCameraUpdateCallback(u8 a);

View File

@@ -34,7 +34,7 @@ bool8 sub_8068870(u16 a);
bool8 sub_8068894(void);
bool8 sub_8068A64(struct MapPosition *, u16);
u8 sub_8068F18(void);
bool8 dive_warp(struct MapPosition *position, u16 b);
bool8 TryDoDiveWarp(struct MapPosition *position, u16 b);
int SetCableClubWarp(void);
u8 TrySetDiveWarp(void);
const u8 *GetInteractedLinkPlayerScript(struct MapPosition *position, u8 metatileBehavior, u8 direction);

View File

@@ -16,7 +16,7 @@ void ReturnToFieldFromFlyMapSelect(void);
u8 AddNewGameBirchObject(s16, s16, u8);
void FieldEffectStop(struct Sprite *sprite, u8 id);
u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer);
void CreateTeleportFieldEffectTask(void);
void FldEff_TeleportWarpOut(void);
void FieldEffectActiveListRemove(u8 id);
void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
void FieldEffectActiveListAdd(u8 id);
@@ -39,12 +39,8 @@ void StartEscalatorWarp(u8 metatileBehavior, u8 priority);
void StartLavaridgeGymB1FWarp(u8 priority);
void StartLavaridgeGym1FWarp(u8 priority);
void sub_80B9C28(s16*, u8);
void sub_80B9C54(s16*, u8);
void sub_80B9CDC(s16*, u8);
void SpriteCB_PopOutOfAsh(struct Sprite*);
void SpriteCB_LavaridgeGymWarp(struct Sprite*);
void SpriteCB_AshPuff(struct Sprite*);
void SpriteCB_AshLaunch(struct Sprite*);
void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b);
void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId);

View File

@@ -8,20 +8,22 @@
// Exported ROM declarations
u8 CreateWarpArrowSprite(void);
u8 sub_8155800(u8 oldSpriteId);
void sub_81555AC(u8, u8);
void SetSurfBobState(u8 spriteId, u8 value);
void SetSurfBobWhileFlyingOutState(u8 spriteId, u8 value);
void SetSurfBobWhileFishingState(u8 spriteId, u8 value, s16 data1);
bool8 sub_8155DA0(struct ObjectEvent *);
void sub_8155D78(struct ObjectEvent *);
void StartAshFieldEffect(s16, s16, u16, s16);
void SetUpReflection(struct ObjectEvent*, struct Sprite*, u8);
u32 StartFieldEffectForObjectEvent(u8, struct ObjectEvent*);
u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y);
void sub_8155F80(struct Sprite*);
void UpdateRayquazaSpotlightEffect(struct Sprite*);
void UpdateShadowFieldEffect(struct Sprite*);
void UpdateTallGrassFieldEffect(struct Sprite*);
void WaitFieldEffectSpriteAnim(struct Sprite*);
void UpdateAshFieldEffect(struct Sprite*);
void UpdateSurfBlobFieldEffect(struct Sprite*);
void sub_8156194(struct Sprite*);
void UpdateJumpImpactEffect(struct Sprite*);
void UpdateFootprintsTireTracksFieldEffect(struct Sprite*);
void UpdateSplashFieldEffect(struct Sprite*);
void UpdateLongGrassFieldEffect(struct Sprite*);
@@ -33,7 +35,5 @@ void UpdateBubblesFieldEffect(struct Sprite*);
void UpdateSparkleFieldEffect(struct Sprite*);
void SetSpriteInvisible(u8 spriteId);
void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y);
void sub_8155604(u8 spriteId, u8 value, s16 data1);
void sub_81555D8(u8 spriteId, u8 value);
#endif //GUARD_FIELD_EFFECT_HELPERS_H

View File

@@ -1,7 +1,7 @@
#ifndef GUARD_FIELD_PLAYER_AVATAR_H
#define GUARD_FIELD_PLAYER_AVATAR_H
void player_step(u8 a, u16 b, u16 c);
void PlayerStep(u8 direction, u16 newKeys, u16 heldKeys);
void ClearPlayerAvatarInfo(void);
void SetPlayerAvatarExtraStateTransition(u8, u8);
u8 GetPlayerAvatarGenderByGraphicsId(u8);
@@ -39,7 +39,7 @@ void sub_808BCF4(void);
void sub_808D074(u8);
void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr);
u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8);
void sub_808C114(void);
void SetPlayerAvatarFieldMove(void);
u8 GetPlayerAvatarGraphicsIdByCurrentState(void);
void SetPlayerAvatarStateMask(u8 a);
u8 GetPlayerAvatarGraphicsIdByStateId(u8 a);
@@ -47,9 +47,9 @@ u8 GetJumpSpecialMovementAction(u32);
bool8 PartyHasMonWithSurf(void);
bool8 IsPlayerFacingSurfableFishableWater(void);
bool8 IsPlayerSurfingNorth(void);
void sub_808C228(u8 direction);
void SetPlayerAvatarWatering(u8 direction);
u8 GetPlayerAvatarFlags(void);
void sub_808B578(void);
void UpdatePlayerAvatarTransitionState(void);
u8 GetFRLGAvatarGraphicsIdByGender(u8);
u8 GetRSAvatarGraphicsIdByGender(u8);
void PlayerWheelieInPlace(u8 direction);

View File

@@ -1,6 +1,8 @@
#ifndef GUARD_FIELD_SCREEN_EFFECT_H
#define GUARD_FIELD_SCREEN_EFFECT_H
extern const s32 gMaxFlashLevel;
void WarpFadeInScreen(void);
void WarpFadeOutScreen(void);
void FadeInFromBlack(void);
@@ -26,7 +28,7 @@ void DoFallWarp(void);
void DoEscalatorWarp(u8 metatileBehavior);
void DoLavaridgeGymB1FWarp(void);
void DoLavaridgeGym1FWarp(void);
void DoTeleportWarp(void);
void DoTeleportTileWarp(void);
void DoMossdeepGymWarp(void);
void DoPortholeWarp(void);
void DoCableClubWarp(void);

View File

@@ -30,25 +30,21 @@ struct MapConnection *sub_8088950(u8 direction, int x, int y);
bool8 sub_80889A8(u8 direction, int x, int y, struct MapConnection *connection);
bool8 sub_8088A0C(int x, int src_width, int dest_width, int offset);
void save_serialize_map(void);
void sub_8088B3C(u16 x, u16 y);
void SetCameraFocusCoords(u16 x, u16 y);
void InitMap(void);
void InitMapFromSavedGame(void);
void InitTrainerHillMap(void);
void InitBattlePyramidMap(bool8 setPlayerPosition);
void copy_map_tileset1_tileset2_to_vram(struct MapLayout const *mapLayout);
void apply_map_tileset1_tileset2_palette(struct MapLayout const *mapLayout);
void apply_map_tileset2_palette(struct MapLayout const *mapLayout);
void copy_map_tileset2_to_vram_2(struct MapLayout const *mapLayout);
void copy_map_tileset1_to_vram(const struct MapLayout *);
void copy_map_tileset2_to_vram(const struct MapLayout *);
struct MapHeader const *const mapconnection_get_mapheader(struct MapConnection *connection);
void CopyMapTilesetsToVram(struct MapLayout const *mapLayout);
void LoadMapTilesetPalettes(struct MapLayout const *mapLayout);
void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout);
void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout);
void CopyPrimaryTilesetToVram(const struct MapLayout *);
void CopySecondaryTilesetToVram(const struct MapLayout *);
struct MapHeader const *const GetMapHeaderFromConnection(struct MapConnection *connection);
struct MapConnection *GetConnectionAtCoords(s16 x, s16 y);
void MapGridSetMetatileImpassabilityAt(int x, int y, bool32 impassable);
void SpriteCB_PokeballGlow(struct Sprite *);
void SpriteCB_PokecenterMonitor(struct Sprite *);
void SpriteCB_HallOfFameMonitor(struct Sprite *);
// field_region_map.c
void FieldInitRegionMap(MainCallback callback);

View File

@@ -9,22 +9,13 @@ bool8 FldEff_CutGrass(void);
void FixLongGrassMetatilesWindowTop(s16 x, s16 y);
void FixLongGrassMetatilesWindowBottom(s16 x, s16 y);
extern const struct SpritePalette gFieldEffectObjectPaletteInfo6;
extern const struct SpritePalette gSpritePalette_CutGrass;
extern struct MapPosition gPlayerFacingPosition;
// groundshake
bool8 sub_81BE66C(void);
void sub_81BE6AC(void);
void sub_81BE6B8(void);
void sub_81BE72C(void);
void sub_81BE79C(void);
void sub_81BE7F4(void);
void sub_81BE994(void);
// escalator
void sub_80E1558(u8 var);
void sub_80E1570(void);
bool8 sub_80E1584(void);
void StartEscalator(bool8 var);
void StopEscalator(void);
bool8 IsEscalatorMoving(void);
// soft-boiled
bool8 SetUpFieldMove_SoftBoiled(void);
@@ -39,7 +30,7 @@ bool8 GetMapPairFadeFromType(u8 a1, u8 a2);
// strength
bool8 SetUpFieldMove_Strength(void);
bool8 sub_8145E2C(void);
bool8 FldEff_UseStrength(void);
// sweet scent
bool8 SetUpFieldMove_SweetScent(void);
@@ -55,7 +46,7 @@ bool8 FldEff_UseDig(void);
// rock smash
bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId);
u8 oei_task_add(void);
u8 CreateFieldMoveTask(void);
bool8 SetUpFieldMove_RockSmash(void);
bool8 FldEff_UseRockSmash(void);

View File

@@ -1,10 +1,10 @@
#ifndef GUARD_FLDEFF_MISC_H
#define GUARD_FLDEFF_MISC_H
void sub_80F9BCC(u16 a0, u16 a1, u8 a2);
void sub_80F9BF4(u16 a0, u16 a1, u8 a2);
bool8 sub_80F9C1C(void);
bool8 sub_80F9C30(void);
void ComputerScreenOpenEffect(u16 a0, u16 a1, u8 a2);
void ComputerScreenCloseEffect(u16 a0, u16 a1, u8 a2);
bool8 IsComputerScreenOpenEffectActive(void);
bool8 IsComputerScreenCloseEffectActive(void);
bool8 SetUpFieldMove_SecretPower(void);
bool8 FldEff_UseSecretPowerCave(void);
bool8 FldEff_SecretPowerCave(void);
@@ -15,22 +15,22 @@ bool8 FldEff_SecretPowerShrub(void);
bool8 FldEff_SecretBasePCTurnOn(void);
void DoSecretBasePCTurnOffEffect(void);
void PopSecretBaseBalloon(s16 metatileId, s16 x, s16 y);
bool8 FldEff_NopA6FC(void);
bool8 FldEff_NopA700(void);
bool8 FldEff_Nop47(void);
bool8 FldEff_Nop48(void);
void ShatterSecretBaseBreakableDoor(s16 x, s16 y);
void PlaySecretBaseMusicNoteMatSound(s16 metatileId);
void DoSecretBaseGlitterMatSparkle(void);
bool8 FldEff_SandPillar(void);
void InteractWithShieldOrTVDecoration(void);
bool8 sub_80FADE4(u16 arg0, u8 arg1);
bool8 IsLargeBreakableDecoration(u16 arg0, u8 arg1);
void FldEffPoison_Start(void);
bool32 FldEffPoison_IsActive(void);
void DoWateringBerryTreeAnim(void);
u8 CreateRecordMixingSprite(void);
void DestroyRecordMixingSprite(void);
u8 CreateRecordMixingLights(void);
void DestroyRecordMixingLights(void);
extern const struct SpritePalette gFieldEffectObjectPaletteInfo7;
extern const struct SpritePalette gFieldEffectObjectPaletteInfo8;
extern const struct SpritePalette gSpritePalette_SecretPower_Cave;
extern const struct SpritePalette gSpritePalette_SecretPower_Plant;
extern const struct SpritePalette gFieldEffectObjectPaletteInfo9;
extern const u16 gTilesetPalettes_SecretBase[][16];

View File

@@ -247,14 +247,14 @@ enum {
PLAYER_AVATAR_STATE_WATERING,
};
#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << PLAYER_AVATAR_STATE_NORMAL)
#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << PLAYER_AVATAR_STATE_MACH_BIKE)
#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << PLAYER_AVATAR_STATE_ACRO_BIKE)
#define PLAYER_AVATAR_FLAG_SURFING (1 << PLAYER_AVATAR_STATE_SURFING)
#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << PLAYER_AVATAR_STATE_UNDERWATER)
#define PLAYER_AVATAR_FLAG_5 (1 << PLAYER_AVATAR_STATE_FIELD_MOVE)
#define PLAYER_AVATAR_FLAG_6 (1 << PLAYER_AVATAR_STATE_FISHING)
#define PLAYER_AVATAR_FLAG_DASH (1 << PLAYER_AVATAR_STATE_WATERING)
#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0)
#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << 1)
#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2)
#define PLAYER_AVATAR_FLAG_SURFING (1 << 3)
#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4)
#define PLAYER_AVATAR_FLAG_5 (1 << 5)
#define PLAYER_AVATAR_FLAG_FORCED_MOVE (1 << 6)
#define PLAYER_AVATAR_FLAG_DASH (1 << 7)
enum
{

View File

@@ -102,6 +102,7 @@
#define TEST_BUTTON(field, button) ({(field) & (button);})
#define JOY_NEW(button) TEST_BUTTON(gMain.newKeys, button)
#define JOY_HELD(button) TEST_BUTTON(gMain.heldKeys, button)
#define JOY_REPEAT(button) TEST_BUTTON(gMain.newAndRepeatedKeys, button)
#define S16TOPOSFLOAT(val) \
({ \
@@ -479,7 +480,7 @@ struct SaveBlock2
/*0x20C*/ struct BerryPickingResults berryPick;
/*0x21C*/ struct RankingHall1P hallRecords1P[HALL_FACILITIES_COUNT][2][3]; // From record mixing.
/*0x57C*/ struct RankingHall2P hallRecords2P[2][3]; // From record mixing.
/*0x624*/ u16 contestLinkResults[5][4]; // 4 positions for 5 categories.
/*0x624*/ u16 contestLinkResults[CONTEST_CATEGORIES_COUNT][CONTESTANT_COUNT];
/*0x64C*/ struct BattleFrontier frontier;
}; // sizeof=0xF2C
@@ -488,7 +489,7 @@ extern struct SaveBlock2 *gSaveBlock2Ptr;
struct SecretBaseParty
{
u32 personality[PARTY_SIZE];
u16 moves[PARTY_SIZE * 4];
u16 moves[PARTY_SIZE * MAX_MON_MOVES];
u16 species[PARTY_SIZE];
u16 heldItems[PARTY_SIZE];
u8 levels[PARTY_SIZE];

View File

@@ -124,18 +124,18 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u16 winningSpecies;
/*0x04*/ u8 winningTrainerName[8];
/*0x0C*/ u8 appealFlags2;
/*0x0D*/ u8 round1Rank;
/*0x0e*/ u8 round2Rank;
/*0x0f*/ u8 appealFlags1;
/*0x02*/ u16 losingSpecies;
/*0x04*/ u8 losingTrainerName[8];
/*0x0C*/ u8 loserAppealFlag;
/*0x0D*/ u8 round1Placing;
/*0x0e*/ u8 round2Placing;
/*0x0f*/ u8 winnerAppealFlag;
/*0x10*/ u16 move;
/*0x12*/ u16 species;
/*0x14*/ u8 playerName[8];
/*0x12*/ u16 winningSpecies;
/*0x14*/ u8 winningTrainerName[8];
/*0x1C*/ u8 category;
/*0x1D*/ u8 language;
/*0x1E*/ u8 winningTrainerLanguage;
/*0x1D*/ u8 winningTrainerLanguage;
/*0x1E*/ u8 losingTrainerLanguage;
} contestLiveUpdates;
// TVSHOW_3_CHEERS_FOR_POKEBLOCKS

View File

@@ -4069,16 +4069,16 @@ extern const u8 gHealthboxElementsGfxTable[][32];
extern const u16 gNamingScreenMenu_Pal[];
extern const u32 gNamingScreenMenu_Gfx[];
extern const u32 gUnknown_08DD4544[];
extern const u8 gUnknown_08DD4620[];
extern const u8 gUnknown_08DD46E0[];
extern const u8 gUnknown_08DD47A0[];
extern const u32 gNamingScreenBackground_Tilemap[];
extern const u8 gNamingScreenKeyboardUpper_Tilemap[];
extern const u8 gNamingScreenKeyboardLower_Tilemap[];
extern const u8 gNamingScreenKeyboardSymbols_Tilemap[];
extern const u8 gNamingScreenRWindow_Gfx[];
extern const u8 gNamingScreenKeyboardButton_Gfx[];
extern const u8 gNamingScreenPageButton_Gfx[];
extern const u8 gNamingScreenROptions_Gfx[];
extern const u8 gNamingScreenCursor_Gfx[];
extern const u8 gNamingScreenRightPointingTriangleTiles[];
extern const u8 gNamingScreenUnderscoreTiles[];
extern const u8 gNamingScreenInputArrow_Gfx[];
extern const u8 gNamingScreenUnderscore_Gfx[];
extern const u32 gUnknown_08D9BA44[];
@@ -4786,10 +4786,10 @@ extern const u32 gOldContestGfx[];
extern const u32 gOldContestPalette[];
extern const u32 gUnknown_08C17170[];
extern const u32 gUnknown_08C17980[];
extern const u32 gTiles_8C19450[];
extern const u32 gContestSliderHeart_Gfx[];
extern const u32 gContestNextTurnGfx[];
extern const u16 gContestPal[];
extern const u32 gUnknown_08C19168[];
extern const u32 gContestFaces_Gfx[];
extern const u32 gContestApplauseGfx[];
extern const u32 gContestJudgeGfx[];
extern const u32 gContestJudgeSymbolsGfx[];
@@ -4824,7 +4824,7 @@ extern const u32 gUnknown_08D91DB8[];
extern const u32 gUnknown_08D927EC[];
// Slot Machine
extern const u32 gSlotMachineReelTime_Gfx[];
extern const u32 gSlotMachineDigitalDisplay_Gfx[];
extern const u8 gSlotMachineReelTimeNumber0[];
extern const u8 gSlotMachineReelTimeNumber1[];
extern const u8 gSlotMachineReelTimeNumber2[];
@@ -4832,15 +4832,15 @@ extern const u8 gSlotMachineReelTimeNumber3[];
extern const u8 gSlotMachineReelTimeNumber4[];
extern const u8 gSlotMachineReelTimeNumber5[];
extern const u8 gSlotMachineReelTimeShadow[];
extern const u8 gUnknown_08DD1A18[];
extern const u8 gSlotMachineReelTimeLargeBolt0[];
extern const u8 gSlotMachineReelTimeLargeBolt1[];
extern const u8 gSlotMachineReelTimeNumberGap_Gfx[];
extern const u8 gSlotMachineReelTimeBolt0[];
extern const u8 gSlotMachineReelTimeBolt1[];
extern const u8 gSlotMachineReelTimePikaAura[];
extern const u8 gSlotMachineReelTimeExplosion0[];
extern const u8 gSlotMachineReelTimeExplosion1[];
extern const u8 gSlotMachineReelTimeDuck[];
extern const u8 gSlotMachineReelTimeSmoke[];
extern const u8 gSlotMachineReelTimeBolt[];
extern const u8 gSlotMachinePikaPowerBolt[];
extern const u8 gSlotMachineReelSymbol1Tiles[];
extern const u8 gSlotMachineReelSymbol2Tiles[];
extern const u8 gSlotMachineReelSymbol3Tiles[];
@@ -4858,19 +4858,18 @@ extern const u8 gSlotMachineNumber6Tiles[];
extern const u8 gSlotMachineNumber7Tiles[];
extern const u8 gSlotMachineNumber8Tiles[];
extern const u8 gSlotMachineNumber9Tiles[];
extern const u8 gUnknown_08DD19F8[];
extern const u8 gSlotMachineReelBackground_Tilemap[];
extern const u32 gSlotMachineMenu_Gfx[];
extern const u16 gSlotMachineMenu_Tilemap[];
extern const u16 gUnknown_08DCEC70[];
extern const u16 gSlotMachineInfoBox_Tilemap[];
extern const u16 gSlotMachineMenu_Pal[];
extern const u16 gUnknown_08DCF230[];
extern const u16 gUnknown_08DCF170[];
extern const u16 gUnknown_08DCF1B0[];
extern const u16 gSlotMachineReelTime_Pal[];
extern const u16 gUnknown_08DCF1F0[];
extern const u16 gUnknown_08DCF210[];
extern const u16 gUnknown_08DCF230[];
extern const u16 gUnknown_08DCF190[];
extern const u16 gSlotMachineReelSymbols_Pal[];
extern const u16 gSlotMachineReelTimeMisc_Pal[];
extern const u16 gSlotMachineReelTimeMachine_Pal[];
extern const u16 gSlotMachineMisc_Pal[];
extern const u16 gSlotMachineReelTimeExplosion_Pal[];
extern const u16 gSlotMachineDigitalDisplay_Pal[];
extern const u16 gSlotMachineReelTimePikachu_Pal[];
extern const u32 gBattleAnimBgTilemap_Sandstorm[];
extern const u32 gBattleAnimBgImage_Sandstorm[];
@@ -4919,13 +4918,13 @@ extern const u32 gPartyMenuPokeball_Pal[];
extern const u32 gStatusPal_Icons[];
// Roulette
extern const u32 gRouletteMenuTiles[];
extern const u32 gRouletteWheelTiles[];
extern const u32 gRouletteMenu_Gfx[];
extern const u32 gRouletteWheel_Gfx[];
extern const u32 gRouletteCenter_Gfx[];
extern const u32 gRouletteHeadersTiles[];
extern const u32 gRouletteCreditTiles[];
extern const u32 gRouletteNumbersTiles[];
extern const u32 gRouletteMultiplierTiles[];
extern const u32 gRouletteHeaders_Gfx[];
extern const u32 gRouletteCredit_Gfx[];
extern const u32 gRouletteNumbers_Gfx[];
extern const u32 gRouletteMultiplier_Gfx[];
// Contest util
extern const u32 gContestResults_Gfx[];

View File

@@ -49,11 +49,11 @@
(((status) & LINK_STAT_ERRORS) >> LINK_STAT_ERRORS_SHIFT)
#define LINKCMD_SEND_LINK_TYPE 0x2222
#define LINKCMD_0x2FFE 0x2FFE
#define LINKCMD_READY_EXIT_STANDBY 0x2FFE
#define LINKCMD_SEND_HELD_KEYS 0x4444
#define LINKCMD_0x5555 0x5555
#define LINKCMD_0x5566 0x5566
#define LINKCMD_0x5FFF 0x5FFF
#define LINKCMD_READY_CLOSE_LINK 0x5FFF
#define LINKCMD_0x6666 0x6666
#define LINKCMD_0x7777 0x7777
#define LINKCMD_CONT_BLOCK 0x8888
@@ -64,7 +64,7 @@
#define LINKCMD_INIT_BLOCK 0xBBBB
#define LINKCMD_READY_CANCEL_TRADE 0xBBCC
#define LINKCMD_SEND_HELD_KEYS_2 0xCAFE
#define LINKCMD_0xCCCC 0xCCCC
#define LINKCMD_SEND_BLOCK_REQ 0xCCCC
#define LINKCMD_START_TRADE 0xCCDD
#define LINKCMD_CONFIRM_FINISH_TRADE 0xDCBA
#define LINKCMD_SET_MONS_TO_TRADE 0xDDDD
@@ -273,11 +273,11 @@ bool32 InUnionRoom(void);
void LoadWirelessStatusIndicatorSpriteGfx(void);
bool8 IsLinkTaskFinished(void);
void CreateWirelessStatusIndicatorSprite(u8, u8);
void sub_800ADF8(void);
void SetLinkStandbyCallback(void);
void SetWirelessCommType1(void);
void CheckShouldAdvanceLinkState(void);
u8 IsLinkMaster(void);
void sub_800AC34(void);
void SetCloseLinkCallback(void);
bool8 HandleLinkConnection(void);
void SetLinkDebugValues(u32 seed, u32 flags);
void sub_800A418(void);
@@ -305,9 +305,9 @@ extern u16 gLinkHeldKeys;
extern u32 gLinkStatus;
extern u8 gUnknown_030030E4;
extern u8 gUnknown_030030E8;
extern u8 gUnknown_030030EC[MAX_LINK_PLAYERS];
extern u8 gUnknown_030030F0[MAX_LINK_PLAYERS];
extern u16 gUnknown_030030F4;
extern bool8 gReadyToExitStandby[MAX_LINK_PLAYERS];
extern bool8 gReadyToCloseLink[MAX_LINK_PLAYERS];
extern u16 gReadyCloseLinkType;
extern u8 gSuppressLinkErrorMessage;
extern u8 gWirelessCommType;
extern bool8 gSavedLinkPlayerCount;
@@ -334,15 +334,15 @@ bool32 LinkDummy_Return2(void);
void SetLocalLinkPlayerId(u8);
u8 GetSavedPlayerCount(void);
void sub_8009FAC(void);
bool8 sub_800A4D8(u8 a0);
bool8 SendBlockRequest(u8 type);
u8 GetLinkPlayerCountAsBitFlags(void);
u8 sub_800A0C8(s32, s32);
u8 GetSavedLinkPlayerCountAsBitFlags(void);
void sub_800AD10(void);
void SetCloseLinkCallbackHandleJP(void);
void CheckLinkPlayersMatchSaved(void);
void StartSendingKeysToLink(void);
bool8 DoesLinkPlayerCountMatchSaved(void);
void sub_800ABF4(u16 a0);
void SetCloseLinkCallbackAndType(u16 type);
bool32 IsSendingKeysToLink(void);
u32 GetLinkRecvQueueLength(void);

View File

@@ -8,11 +8,11 @@
#define RFU_COMMAND_0x4400 0x4400
#define RFU_COMMAND_0x8800 0x8800
#define RFU_COMMAND_0x8900 0x8900
#define RFU_COMMAND_0xA100 0xA100
#define RFU_COMMAND_SEND_BLOCK_REQ 0xA100
#define RFU_COMMAND_0x7700 0x7700
#define RFU_COMMAND_0x7800 0x7800
#define RFU_COMMAND_0x6600 0x6600
#define RFU_COMMAND_0x5F00 0x5F00
#define RFU_COMMAND_READY_EXIT_STANDBY 0x6600
#define RFU_COMMAND_READY_CLOSE_LINK 0x5F00
#define RFU_COMMAND_0x2F00 0x2F00
#define RFU_COMMAND_0xBE00 0xBE00
#define RFU_COMMAND_0xEE00 0xEE00
@@ -125,7 +125,7 @@ struct GFRfuManager
/* 0x012 */ u16 unk_12;
/* 0x014 */ u8 unk_14[RFU_CHILD_MAX][14];
/* 0x04c */ u8 unk_4c[14];
/* 0x05a */ u8 unk_5a;
/* 0x05a */ u8 blockRequestType;
/* 0x05b */ u8 unk_5b;
/* 0x05c */ bool8 blockReceived[MAX_RFU_PLAYERS];
/* 0x061 */ bool8 numBlocksReceived[MAX_RFU_PLAYERS];
@@ -134,14 +134,14 @@ struct GFRfuManager
/* 0x068 */ u8 filler_68[4];
/* 0x06c */ struct RfuBlockSend sendBlock;
/* 0x080 */ struct RfuBlockSend recvBlock[MAX_RFU_PLAYERS];
/* 0x0e4 */ u8 unk_e4[5];
/* 0x0e9 */ u8 unk_e9[5];
/* 0x0e4 */ bool8 readyCloseLink[MAX_RFU_PLAYERS];
/* 0x0e9 */ bool8 readyExitStandby[MAX_RFU_PLAYERS];
/* 0x0ee */ vu8 errorState;
/* 0x0ef */ bool8 isShuttingDown;
/* 0x0f0 */ u8 linkLossRecoveryState;
/* 0x0f1 */ u8 status;
/* 0x0f2 */ u16 unk_f2[6];
/* 0x0fe */ u16 unk_fe;
/* 0x0fe */ u16 resendExitStandbyTimer;
/* 0x100 */ u16 unk_100;
/* 0x102 */ u8 unk_102;
/* 0x103 */ u8 filler_103[0x10A - 0x103];
@@ -203,11 +203,11 @@ bool32 Rfu_InitBlockSend(const u8 *src, size_t size);
void ClearLinkRfuCallback(void);
u8 Rfu_GetLinkPlayerCount(void);
u8 Rfu_GetMultiplayerId(void);
bool8 sub_8010100(u8 a0);
bool8 Rfu_SendBlockRequest(u8 type);
bool8 IsLinkRfuTaskFinished(void);
bool8 Rfu_IsMaster(void);
void task_add_05_task_del_08FA224_when_no_RfuFunc(void);
void sub_8010434(void);
void Rfu_SetCloseLinkCallback(void);
void Rfu_SetLinkStandbyCallback(void);
void ResetLinkRfuGFLayer(void);
void UpdateWirelessStatusIndicatorSprite(void);
void InitRFU(void);

View File

@@ -8,6 +8,12 @@
#define MENU_NOTHING_CHOSEN -2
#define MENU_B_PRESSED -1
#define MENU_CURSOR_DELTA_NONE 0
#define MENU_CURSOR_DELTA_UP -1
#define MENU_CURSOR_DELTA_DOWN 1
#define MENU_CURSOR_DELTA_LEFT -1
#define MENU_CURSOR_DELTA_RIGHT 1
enum
{
SAVE_MENU_NAME,
@@ -30,7 +36,7 @@ extern const u16 gUnknown_0860F074[];
void FreeAllOverworldWindowBuffers(void);
void InitStandardTextBoxWindows(void);
void sub_8197200(void);
void InitTextBoxGfxAndPrinters(void);
u16 RunTextPrintersAndIsPrinter0Active(void);
void LoadMessageBoxAndBorderGfx(void);
void DrawDialogueFrame(u8 windowId, bool8 copyToVram);
@@ -64,8 +70,8 @@ void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirs
void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
s8 Menu_ProcessInputNoWrapClearOnChoose(void);
s8 ProcessMenuInput_other(void);
void do_scheduled_bg_tilemap_copies_to_vram(void);
void clear_scheduled_bg_copies_to_vram(void);
void DoScheduledBgTilemapCopiesToVram(void);
void ClearScheduledBgCopiesToVram(void);
void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str);
void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 a2, u8 a3);
void sub_81995E4(u8 windowId, u8 optionsNo, const struct MenuAction *actions, const u8 *actionIds);
@@ -77,7 +83,7 @@ void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress);
void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8);
void sub_8198DBC(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 itemCount, u8 itemCount2, const struct MenuAction *strs, const u8 *a8);
u8 sub_8199944(u8 windowId, u8 optionWidth, u8 columns, u8 rows, u8 initialCursorPos);
u8 sub_8199134(s8, s8);
u8 ChangeListMenuCursorPosition(s8 deltaX, s8 deltaY);
u8 GetStartMenuWindowId(void);
void ListMenuLoadStdPalAt(u8, u8);
u8 Menu_MoveCursor(s8 cursorDelta);

View File

@@ -5,6 +5,15 @@
#include "player_pc.h"
#include "list_menu.h"
#include "pokemon.h"
#include "constants/berry.h"
#define TAG_CONDITION_MON 100
#define TAG_CONDITION_BALL 101
#define TAG_CONDITION_CANCEL 102
#define TAG_CONDITION_BALL_PLACEHOLDER 103
#define TAG_CONDITION_SPARKLE 104
#define MAX_CONDITION_SPARKLES 10
struct UnknownSubStruct_81D1ED4
{
@@ -12,12 +21,12 @@ struct UnknownSubStruct_81D1ED4
u16 unk2;
};
struct UnknownStruct_81D1ED4
struct ConditionGraph
{
/*0x000*/ u8 unk0[4][5];
/*0x014*/ struct UnknownSubStruct_81D1ED4 unk14[4][5];
/*0x064*/ struct UnknownSubStruct_81D1ED4 unk64[10][5];
/*0x12C*/ struct UnknownSubStruct_81D1ED4 unk12C[5];
/*0x000*/ u8 unk0[4][FLAVOR_COUNT];
/*0x014*/ struct UnknownSubStruct_81D1ED4 unk14[4][FLAVOR_COUNT];
/*0x064*/ struct UnknownSubStruct_81D1ED4 unk64[10][FLAVOR_COUNT];
/*0x12C*/ struct UnknownSubStruct_81D1ED4 unk12C[FLAVOR_COUNT];
/*0x140*/ u16 unk140[66][2];
/*0x248*/ u16 unk248[66][2];
/*0x350*/ u16 unk350;
@@ -32,35 +41,35 @@ u8 sub_81D1DC0(struct PlayerPCItemPageStruct *page);
void sub_81D1E90(struct PlayerPCItemPageStruct *page);
void sub_81D1EC0(void);
void sub_81D1D04(u8 a0);
void sub_81D1ED4(struct UnknownStruct_81D1ED4 *a0);
void sub_81D2108(struct UnknownStruct_81D1ED4 *arg0);
void sub_81D1ED4(struct ConditionGraph *graph);
void sub_81D2108(struct ConditionGraph *graph);
void sub_81D21DC(u8 bg);
void sub_81D20AC(struct UnknownStruct_81D1ED4 *arg0);
void sub_81D2230(struct UnknownStruct_81D1ED4 *arg0);
bool8 sub_81D20BC(struct UnknownStruct_81D1ED4 *arg0);
bool32 sub_81D2074(struct UnknownStruct_81D1ED4 *a0);
void sub_81D20AC(struct ConditionGraph *graph);
void sub_81D2230(struct ConditionGraph *graph);
bool8 sub_81D20BC(struct ConditionGraph *graph);
bool32 TransitionConditionGraph(struct ConditionGraph *graph);
void sub_81D2754(u8 *arg0, struct UnknownSubStruct_81D1ED4 *arg1);
void sub_81D1F84(struct UnknownStruct_81D1ED4 *arg0, struct UnknownSubStruct_81D1ED4 *arg1, struct UnknownSubStruct_81D1ED4 *arg2);
void sub_81D1F84(struct ConditionGraph *graph, struct UnknownSubStruct_81D1ED4 *arg1, struct UnknownSubStruct_81D1ED4 *arg2);
void MoveRelearnerPrintText(u8 *str);
bool16 MoveRelearnerRunTextPrinters(void);
void MoveRelearnerCreateYesNoMenu(void);
u8 LoadMoveRelearnerMovesList(const struct ListMenuItem *items, u16 numChoices);
void InitMoveRelearnerWindows(bool8 useContextWindow);
s32 GetBoxOrPartyMonData(u16 boxId, u16 monId, s32 request, u8 *dst);
void sub_81D2ED4(u8 *dst, u8 *nameDst, u16 boxId, u16 monId, u16 arg5, u16 arg6, bool8 arg7);
void sub_81D2F78(struct UnknownStruct_81D1ED4 *arg0, u8 *sheen, u16 boxId, u16 monId, u16 arg5, u16 id, u16 arg7, bool8 arg8);
void sub_81D3094(void *tilesDst, void *palDst, u16 boxId, u16 monId, u16 arg5, u16 arg6, bool8 arg7);
bool8 sub_81D312C(s16 *var);
bool8 sub_81D3150(s16 *var);
bool8 sub_81D3178(struct UnknownStruct_81D1ED4 *arg0, s16 *arg1);
bool8 sub_81D31A4(struct UnknownStruct_81D1ED4 *arg0, s16 *arg1);
void sub_81D31D0(struct SpriteSheet *sheet, struct SpriteTemplate *template, struct SpritePalette *pal);
void sub_81D321C(struct SpriteSheet *sheets, struct SpriteTemplate * template, struct SpritePalette *pals);
void sub_81D32B0(struct SpriteSheet *sheet, struct SpritePalette *pal);
void sub_81D3464(struct Sprite **sprites);
void sub_81D3480(struct Sprite **sprites, u8 arg1, u8 arg2);
void sub_81D3520(struct Sprite **sprites);
void sub_81D354C(struct Sprite **sprites);
void GetConditionMenuMonNameAndLocString(u8 *locationDst, u8 *nameDst, u16 boxId, u16 monId, u16 partyId, u16 numMons, bool8 excludesCancel);
void GetConditionMenuMonConditions(struct ConditionGraph *graph, u8 *sheen, u16 boxId, u16 monId, u16 partyId, u16 id, u16 numMons, bool8 excludesCancel);
void GetConditionMenuMonGfx(void *tilesDst, void *palDst, u16 boxId, u16 monId, u16 partyId, u16 numMons, bool8 excludesCancel);
bool8 MoveConditionMonOnscreen(s16 *x);
bool8 MoveConditionMonOffscreen(s16 *x);
bool8 TryUpdateConditionMonTransitionOn(struct ConditionGraph *graph, s16 *x);
bool8 TryUpdateConditionMonTransitionOff(struct ConditionGraph *graph, s16 *x);
void LoadConditionMonPicTemplate(struct SpriteSheet *sheet, struct SpriteTemplate *template, struct SpritePalette *pal);
void LoadConditionSelectionIcons(struct SpriteSheet *sheets, struct SpriteTemplate * template, struct SpritePalette *pals);
void LoadConditionSparkle(struct SpriteSheet *sheet, struct SpritePalette *pal);
void ResetConditionSparkleSprites(struct Sprite **sprites);
void CreateConditionSparkleSprites(struct Sprite **sprites, u8 monSpriteId, u8 count);
void DestroyConditionSparkleSprites(struct Sprite **sprites);
void FreeConditionSparkles(struct Sprite **sprites);
void DrawLevelUpWindowPg1(u16 windowId, u16 *statsBefore, u16 *statsAfter, u8 bgClr, u8 fgClr, u8 shadowClr);
void DrawLevelUpWindowPg2(u16 windowId, u16 *currStats, u8 bgClr, u8 fgClr, u8 shadowClr);
void GetMonLevelUpWindowStats(struct Pokemon *mon, u16 *currStats);

View File

@@ -3,91 +3,14 @@
#include "main.h"
#define KBEVENT_NONE 0
#define KBEVENT_PRESSED_A 5
#define KBEVENT_PRESSED_B 6
#define KBEVENT_PRESSED_SELECT 8
#define KBEVENT_PRESSED_START 9
#define KBROW_COUNT 4
enum
{
KBPAGE_LETTERS_LOWER,
KBPAGE_LETTERS_UPPER,
KBPAGE_SYMBOLS,
KBPAGE_COUNT,
};
enum
{
enum {
NAMING_SCREEN_PLAYER,
NAMING_SCREEN_BOX,
NAMING_SCREEN_CAUGHT_MON,
NAMING_SCREEN_3,
NAMING_SCREEN_NICKNAME,
NAMING_SCREEN_WALDA,
};
struct NamingScreenTemplate
{
u8 copyExistingString;
u8 maxChars;
u8 iconFunction;
u8 addGenderIcon;
u8 initialPage;
u8 unused;
const u8 *title;
};
struct NamingScreenData {
/*0x0*/ u8 tilemapBuffer1[0x800];
/*0x800*/ u8 tilemapBuffer2[0x800];
/*0x800*/ u8 tilemapBuffer3[0x800];
/*0x1800*/ u8 textBuffer[0x10];
/*0x1810*/ u8 tileBuffer[0x600];
/*0x1E10*/ u8 state;
/*0x1E11*/ u8 windows[5];
/*0x1E16*/ u16 inputCharBaseXPos;
/*0x1E18*/ u16 bg1vOffset;
/*0x1E1A*/ u16 bg2vOffset;
/*0x1E1C*/ u16 bg1Priority;
/*0x1E1E*/ u16 bg2Priority;
/*0x1E20*/ u8 bgToReveal;
/*0x1E21*/ u8 bgToHide;
/*0x1E22*/ u8 currentPage;
/*0x1E23*/ u8 cursorSpriteId;
/*0x1E24*/ u8 selectBtnFrameSpriteId;
/*0x1E25*/ u8 keyRepeatStartDelayCopy;
/*0x1E28*/ const struct NamingScreenTemplate *template;
/*0x1E2C*/ u8 templateNum;
/*0x1E30*/ u8 *destBuffer;
/*0x1E34*/ u16 monSpecies;
/*0x1E36*/ u16 monGender;
/*0x1E38*/ u32 monPersonality;
/*0x1E3C*/ MainCallback returnCallback;
};
enum
{
MAIN_STATE_BEGIN_FADE_IN,
MAIN_STATE_WAIT_FADE_IN,
MAIN_STATE_HANDLE_INPUT,
MAIN_STATE_MOVE_TO_OK_BUTTON,
MAIN_STATE_START_PAGE_SWAP,
MAIN_STATE_WAIT_PAGE_SWAP,
MAIN_STATE_6,
MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE,
MAIN_STATE_BEGIN_FADE_OUT,
};
enum
{
INPUT_STATE_DISABLED,
INPUT_STATE_ENABLED,
INPUT_STATE_2,
};
void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGender, u32 monPersonality, MainCallback returnCallback);
#endif // GUARD_NAMING_SCREEN_H

View File

@@ -24,6 +24,8 @@
#define MOVEMENT_MODE_FROZEN 1
#define MOVEMENT_MODE_SCRIPTED 2
#define SKIP_OBJECT_EVENT_LOAD 1
struct InitialPlayerAvatarState
{
u8 transitionFlags;
@@ -99,8 +101,7 @@ void SetDefaultFlashLevel(void);
void Overworld_SetFlashLevel(s32 flashLevel);
u8 Overworld_GetFlashLevel(void);
void SetCurrentMapLayout(u16 mapLayoutId);
void sub_8085540(u8 var);
u8 sub_808554C(void);
void SetObjectEventLoadFlag(u8 var);
u16 GetLocationMusic(struct WarpData *warp);
u16 GetCurrLocationDefaultMusic(void);
u16 GetWarpDestinationMusic(void);
@@ -135,11 +136,9 @@ void SetUnusedCallback(void *a0);
void CB2_NewGame(void);
void CB2_WhiteOut(void);
void CB2_LoadMap(void);
void sub_8086024(void);
void CB2_ReturnToFieldContestHall(void);
void CB2_ReturnToFieldCableClub(void);
void CB2_ReturnToField(void);
void CB2_ReturnToFieldLocal(void);
void CB2_ReturnToFieldLink(void);
void CB2_ReturnToFieldFromMultiplayer(void);
void CB2_ReturnToFieldWithOpenMenu(void);
void CB2_ReturnToFieldContinueScript(void);

83
include/palette_util.h Normal file
View File

@@ -0,0 +1,83 @@
#ifndef GUARD_PALETTE_UTIL_H
#define GUARD_PALETTE_UTIL_H
struct PulseBlendSettings
{
u16 blendColor;
u16 paletteOffset;
u8 numColors;
u8 delay;
u8 numFadeCycles;
s8 maxBlendCoeff:4;
s8 fadeType:2;
s8 restorePaletteOnUnload:1;
s8 unk7_7:1;
};
struct PulseBlendPalette
{
u8 paletteSelector;
u8 blendCoeff:4;
u8 fadeDirection:1;
s8 unk1_5:1;
s8 available:1;
u32 inUse:1;
u8 delayCounter;
u8 fadeCycleCounter;
struct PulseBlendSettings pulseBlendSettings;
};
struct PulseBlend
{
u16 usedPulseBlendPalettes;
struct PulseBlendPalette pulseBlendPalettes[16];
};
#define FLASHUTIL_USE_EXISTING_COLOR (1 << 15)
struct RouletteFlashSettings
{
u16 color;
u16 paletteOffset;
u8 numColors;
u8 delay;
s8 unk6; // Set but never used
s8 numFadeCycles:5;
s8 unk7_5:2; // Set but never used
s8 colorDeltaDir:1;
};
struct RouletteFlashPalette
{
u8 state:7;
bool8 available:1;
u8 delayCounter;
s8 fadeCycleCounter;
s8 colorDelta;
struct RouletteFlashSettings settings;
};
struct RouletteFlashUtil
{
u8 enabled;
u8 unused;
u16 flags;
struct RouletteFlashPalette palettes[16];
};
int InitPulseBlendPaletteSettings(struct PulseBlend *, const struct PulseBlendSettings *);
void InitPulseBlend(struct PulseBlend *);
void MarkUsedPulseBlendPalettes(struct PulseBlend *, u16, u8);
void UnloadUsedPulseBlendPalettes(struct PulseBlend *, u16, u8);
void UnmarkUsedPulseBlendPalettes(struct PulseBlend *, u16, u8);
void UpdatePulseBlend(struct PulseBlend *);
void ClearTilemapRect(u16 *dest, u16 src, u8 left, u8 top, u8 width, u8 height);
void SetTilemapRect(u16 *dest, u16 *src, u8 left, u8 top, u8 width, u8 height);
void RouletteFlash_Run(struct RouletteFlashUtil *r0);
void RouletteFlash_Reset(struct RouletteFlashUtil *r0);
u8 RouletteFlash_Add(struct RouletteFlashUtil *r0, u8 r1, const struct RouletteFlashSettings *r2);
void RouletteFlash_Stop(struct RouletteFlashUtil *r0, u16 r1);
void RouletteFlash_Enable(struct RouletteFlashUtil *r0, u16 r1);
#endif // GUARD_PALETTE_UTIL_H

View File

@@ -254,7 +254,7 @@ extern const u16 *const gLevelUpLearnsets[];
extern const u8 gPPUpGetMask[];
extern const u8 gPPUpSetMask[];
extern const u8 gPPUpAddMask[];
extern const u8 gStatStageRatios[][2];
extern const u8 gStatStageRatios[MAX_STAT_STAGE + 1][2];
extern const u16 gLinkPlayerFacilityClasses[];
extern const struct SpriteTemplate gUnknown_08329D98[];
extern const s8 gNatureStatTable[][5];

View File

@@ -391,7 +391,7 @@ u32 sub_81CD070(void);
void sub_81CD1C0(void);
bool32 sub_81CD3C4(void);
bool32 sub_81CDD5C(void);
struct UnknownStruct_81D1ED4 *sub_81CDC70(void);
struct ConditionGraph *sub_81CDC70(void);
u16 sub_81CDC60(void);
u16 sub_81CDC50(void);
u8 sub_81CDDB0(void);

View File

@@ -1,34 +1,6 @@
#ifndef GUARD_ROULETTE_H
#define GUARD_ROULETTE_H
struct UnkStruct1
{
u16 var00;
u16 var02;
u8 var04;
u8 var05;
u8 var06;
s8 var07_0:5;
s8 var07_5:2;
s8 var07_7:1;
};
struct UnkStruct3
{
u8 var00_0:7;
u8 var00_7:1;
u8 var01;
s8 var02;
s8 var03;
struct UnkStruct1 var04;
};
struct UnkStruct0
{
u8 var00;
u8 var01;
u16 var02; //flag for each UnkStruct3
struct UnkStruct3 var04[0x10];
};
void PlayRoulette(void);
#endif // GUARD_ROULETTE_H

View File

@@ -1,52 +0,0 @@
#ifndef GUARD_ROULETTE_UTIL_H
#define GUARD_ROULETTE_UTIL_H
#include "roulette.h"
struct PulseBlendSettings
{
u16 blendColor;
u16 paletteOffset;
u8 numColors;
u8 delay;
u8 numFadeCycles;
s8 maxBlendCoeff:4;
s8 fadeType:2;
s8 restorePaletteOnUnload:1;
s8 unk7_7:1;
};
struct PulseBlendPalette
{
u8 paletteSelector;
u8 blendCoeff:4;
u8 fadeDirection:1;
s8 unk1_5:1;
s8 available:1;
u32 inUse:1;
u8 delayCounter;
u8 fadeCycleCounter;
struct PulseBlendSettings pulseBlendSettings;
};
struct PulseBlend
{
u16 usedPulseBlendPalettes;
struct PulseBlendPalette pulseBlendPalettes[16];
};
int InitPulseBlendPaletteSettings(struct PulseBlend *, const struct PulseBlendSettings *);
void InitPulseBlend(struct PulseBlend *);
void MarkUsedPulseBlendPalettes(struct PulseBlend *, u16, u8);
void UnloadUsedPulseBlendPalettes(struct PulseBlend *, u16, u8);
void UnmarkUsedPulseBlendPalettes(struct PulseBlend *, u16, u8);
void UpdatePulseBlend(struct PulseBlend *);
void sub_8152008(u16 *dest, u16 src, u8 left, u8 top, u8 width, u8 height);
void sub_8152058(u16 *dest, u16 *src, u8 left, u8 top, u8 width, u8 height);
void task_tutorial_controls_fadein(struct UnkStruct0 *r0);
void sub_8151678(struct UnkStruct0 *r0);
u8 sub_815168C(struct UnkStruct0 *r0, u8 r1, const struct UnkStruct1 *r2);
void sub_8151A9C(struct UnkStruct0 *r0, u16 r1);
void sub_8151A48(struct UnkStruct0 *r0, u16 r1);
#endif // GUARD_ROULETTE_UTIL_H

View File

@@ -1,10 +0,0 @@
#ifndef GUARD_SCRIPTPOKE80F8_H
#define GUARD_SCRIPTPOKE80F8_H
void ShowContestWinner(void);
u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8);
u8 ScriptGiveEgg(u16);
void CreateScriptedWildMon(u16, u8, u16);
void ScriptSetMonMoveSlot(u8, u16, u8);
#endif

View File

@@ -0,0 +1,11 @@
#ifndef GUARD_SCRIPT_POKEMON_UTIL
#define GUARD_SCRIPT_POKEMON_UTIL
u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8);
u8 ScriptGiveEgg(u16);
void CreateScriptedWildMon(u16, u8, u16);
void ScriptSetMonMoveSlot(u8, u16, u8);
void ReducePlayerPartyToSelectedMons(void);
void HealPlayerParty(void);
#endif // GUARD_SCRIPT_POKEMON_UTIL

View File

@@ -1,9 +0,0 @@
#ifndef GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H
#define GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H
u16 GetContestRand(void);
void ReducePlayerPartyToSelectedMons(void);
void HealPlayerParty(void);
u8 CountPlayerContestPaintings(void);
#endif // GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H

View File

@@ -84,10 +84,29 @@ extern const u8 gText_SoSo[];
extern const u8 gText_Bad[];
extern const u8 gText_TheWorst[];
extern const u8 Roulette_Text_ControlsInstruction[];
extern const u8 Roulette_Text_KeepPlaying[];
extern const u8 Roulette_Text_Jackpot[];
extern const u8 Roulette_Text_ItsAHit[];
extern const u8 Roulette_Text_NothingDoing[];
extern const u8 Roulette_Text_YouveWonXCoins[];
extern const u8 Roulette_Text_BoardWillBeCleared[];
extern const u8 Roulette_Text_CoinCaseIsFull[];
extern const u8 Roulette_Text_NoCoinsLeft[];
extern const u8 Roulette_Text_PlayMinimumWagerIsX[];
extern const u8 Roulette_Text_SpecialRateTable[];
extern const u8 Roulette_Text_NotEnoughCoins[];
extern const u8 gText_Slots[];
extern const u8 gText_Roulette[];
extern const u8 gText_Jackpot[];
extern const u8 gText_YouDontHaveThreeCoins[];
extern const u8 gText_QuitTheGame[];
extern const u8 gText_YouveGot9999Coins[];
extern const u8 gText_YouveRunOutOfCoins[];
extern const u8 gText_ReelTimeHelp[];
extern const u8 gText_First[];
extern const u8 gText_Second[];
extern const u8 gText_Third[];

View File

@@ -20,7 +20,7 @@ void LoadUserWindowBorderGfx_(u8 windowId, u16 destOffset, u8 palOffset);
void DrawTextBorderOuter(u8 windowId, u16 tileNum, u8 palNum);
void DrawTextBorderInner(u8 windowId, u16 tileNum, u8 palNum);
void rbox_fill_rectangle(u8 windowId);
const u16 *stdpal_get(u8 id);
const u16 *GetTextWindowPalette(u8 id);
const u16 *GetOverworldTextboxPalettePtr(void);
void sub_8098C6C(u8 bg, u16 destOffset, u8 palOffset);

View File

@@ -75,7 +75,7 @@ void FillHillTrainerParty(void);
void FillHillTrainersParties(void);
u8 GetTrainerEncounterMusicIdInTrainerHill(u16 trainerId);
u8 GetNumFloorsInTrainerHillChallenge(void);
void sub_81D64C0(void);
bool32 sub_81D6534(void);
void TryLoadTrainerHillEReaderPalette(void);
bool32 OnTrainerHillEReaderChallengeFloor(void);
#endif // GUARD_TRAINER_HILL_H

View File

@@ -30,12 +30,12 @@ void AlertTVThatPlayerPlayedSlotMachine(u16 nCoinsSpent);
void AlertTVThatPlayerPlayedRoulette(u16 nCoinsSpent);
void AlertTVOfNewCoinTotal(u16 nCoinsPaidOut);
void TryPutSecretBaseSecretsOnAir(void);
void sub_80EDB44(void);
void TryPutTodaysRivalTrainerOnAir(void);
void sub_80EDC60(const u16 *words);
void sub_80EDA80(void);
void ReceivePokeNewsData(void *src, u32 size, u8 masterIdx);
void sub_80F0BB8(void);
void sub_80ED950(bool8 flag);
void RecordFishingAttemptForTV(bool8 caughtFish);
void IncrementDailySlotsUses(void);
void IncrementDailyRouletteUses(void);
void IncrementDailyWildBattles(void);
@@ -59,11 +59,11 @@ void SaveRecordedItemPurchasesForTVShow(void);
bool8 ShouldAirFrontierTVShow(void);
void sub_80EE8C8(u16 winStreak, u8 facilityAndMode);
void BravoTrainerPokemonProfile_BeforeInterview2(u8 contestStandingPlace);
void ContestLiveUpdates_BeforeInterview_1(u8 a0);
void ContestLiveUpdates_BeforeInterview_2(u8 a0);
void ContestLiveUpdates_BeforeInterview_3(u8 a0);
void ContestLiveUpdates_BeforeInterview_4(u16 a0);
void ContestLiveUpdates_BeforeInterview_5(u8 a0, u8 a1);
void ContestLiveUpdates_Init(u8 round1Placing);
void ContestLiveUpdates_SetRound2Placing(u8 round2Placing);
void ContestLiveUpdates_SetWinnerAppealFlag(u8 flag);
void ContestLiveUpdates_SetWinnerMoveUsed(u16 move);
void ContestLiveUpdates_SetLoserData(u8 flag, u8 loser);
void ResetGabbyAndTy(void);
#endif //GUARD_TV_H