Merge remote-tracking branch 'upstream/main' into comm_command

This commit is contained in:
Adrienn Tindall
2026-06-16 18:06:38 -04:00
659 changed files with 11857 additions and 10658 deletions

View File

@@ -352,14 +352,14 @@
.short \unused
.endm
.macro FrontierScrCmd_3D destVar, value
.short FRSCRCMD_3D
.macro SetSystemVar destVar, value
.short FRSCRCMD_SETSYSTEMVAR
.short \destVar
.short \value
.endm
.macro FrontierScrCmd_3E srcVar, destVar
.short FRSCRCMD_3E
.macro GetSystemVar srcVar, destVar
.short FRSCRCMD_GETSYSTEMVAR
.short \srcVar
.short \destVar
.endm
@@ -758,12 +758,12 @@
.short \arg1
.endm
.macro FrontierScrCmd_8B arg0, arg1, arg2, arg3
.short FRSCRCMD_8B
.short \arg0
.short \arg1
.short \arg2
.short \arg3
.macro InitBattleHall resumingFromSave, challengeType, partySlot1, partySlot2
.short FRSCRCMD_INITBATTLEHALL
.short \resumingFromSave
.short \challengeType
.short \partySlot1
.short \partySlot2
.endm
.macro FrontierScrCmd_8C arg0
@@ -771,8 +771,8 @@
.short \arg0
.endm
.macro FrontierScrCmd_8D
.short FRSCRCMD_8D
.macro FreeBattleHall
.short FRSCRCMD_FREEBATTLEHALL
.endm
.macro OpenBattleHallApp

View File

@@ -26,7 +26,6 @@
#include "generated/sdat.h"
#include "generated/signpost_commands.h"
#include "generated/signpost_types.h"
#include "generated/string_padding_mode.h"
#include "generated/time_of_day.h"
#include "generated/trainer_score_events.h"
#include "generated/trainers.h"
@@ -55,9 +54,11 @@
#include "constants/savedata/vars_flags.h"
#include "constants/scrcmd.h"
#include "constants/sound_volume.h"
#include "constants/string.h"
#include "constants/tv_broadcast.h"
#include "constants/union_room_message_types.h"
#include "constants/villa_visitors.h"
#include "constants/vs_seeker.h"
#include "data/scripts/scrcmd.h"
#include "macros/movement.inc"
@@ -1245,9 +1246,9 @@
.short SCRCMD_0C4
.endm
.macro ScrCmd_0C5 arg0
.short SCRCMD_0C5
.short \arg0
.macro PlayHMCutIn slot
.short SCRCMD_PLAYHMCUTIN
.short \slot
.endm
.macro ChangeIntoContestAttire
@@ -2673,26 +2674,26 @@
.short SCRCMD_UNUSED_1CE
.endm
.macro Strength mode, checkDestVarID=0
.short SCRCMD_STRENGTH
.byte \mode
.if \mode == 2
.macro DoStrengthFunc func, checkDestVarID=0
.short SCRCMD_DOSTRENGTHFUNC
.byte \func
.if \func == FIELD_MOVE_FUNC_CHECK_ACTIVE
.short \checkDestVarID
.endif
.endm
.macro Flash mode, checkDestVarID=0
.short SCRCMD_FLASH
.byte \mode
.if \mode == 2
.macro DoFlashFunc func, checkDestVarID=0
.short SCRCMD_DOFLASHFUNC
.byte \func
.if \func == FIELD_MOVE_FUNC_CHECK_ACTIVE
.short \checkDestVarID
.endif
.endm
.macro Defog mode, checkDestVarID=0
.short SCRCMD_DEFOG
.byte \mode
.if \mode == 2
.macro DoDefogFunc func, checkDestVarID=0
.short SCRCMD_DODEFOGFUNC
.byte \func
.if \func == FIELD_MOVE_FUNC_CHECK_ACTIVE
.short \checkDestVarID
.endif
.endm
@@ -2984,13 +2985,13 @@
StartEndSafariGame SAFARI_GAME_INACTIVE
.endm
.macro ScrCmd_203 arg0, arg1, arg2, arg3, arg4
.short SCRCMD_203
.short \arg0
.short \arg1
.short \arg2
.short \arg3
.short \arg4
.macro WarpToColosseum mapID, warpID, x, z, dir
.short SCRCMD_WARPTOCOLOSSEUM
.short \mapID
.short \warpID
.short \x
.short \z
.short \dir
.endm
.macro ScrCmd_204
@@ -3020,9 +3021,9 @@
.short SCRCMD_REMOVEPOKEMONPREVIEW
.endm
.macro ScrCmd_20A arg0
.short SCRCMD_20A
.short \arg0
.macro StartVsSeeker destVar
.short SCRCMD_STARTVSSEEKER
.short \destVar
.endm
.macro SetMoveCodeForFacingDirection
@@ -3351,9 +3352,9 @@
.short \destVar
.endm
.macro ScrCmd_239 arg0
.short SCRCMD_239
.short \arg0
.macro OpenBattleRegulationMenu destVar
.short SCRCMD_OPENBATTLEREGULATIONMENU
.short \destVar
.endm
.macro GetPartyMonFootprintType hasPrintVar, printTypeVar, partySlot
@@ -3816,10 +3817,10 @@
.short \arg1
.endm
.macro ScrCmd_27D arg0, arg1
.short SCRCMD_27D
.short \arg0
.short \arg1
.macro TryBufferAndUnlockRandomToughWord destVar, index
.short SCRCMD_TRYBUFFERANDUNLOCKRANDOMTOUGHWORD
.short \destVar
.short \index
.endm
/* Returns TRUE in destVarID if the player has bought at least 5 items at the Veilstone Department Store */
@@ -3828,9 +3829,9 @@
.short \destVarID
.endm
.macro ScrCmd_27F arg0
.short SCRCMD_27F
.short \arg0
.macro CheckAllToughWordsUnlocked destVar
.short SCRCMD_CHECKALLTOUGHWORDSUNLOCKED
.short \destVar
.endm
.macro BufferVarPaddingDigits templateArg, varID, paddingMode, maxDigits
@@ -4004,10 +4005,10 @@
.short \entryIndex
.endm
.macro ScrCmd_29E arg0, arg1
.short SCRCMD_29E
.short \arg0
.short \arg1
.macro StartDestroyObstacleAnimation obstacle, destVar
.short SCRCMD_STARTDESTROYOBSTACLEANIMATION
.short \obstacle
.short \destVar
.endm
.macro ScrCmd_29F arg0
@@ -4034,14 +4035,14 @@
.short \item
.endm
.macro ScrCmd_2A3 arg0
.short SCRCMD_2A3
.short \arg0
.macro CheckHasWiFiListValidLogin destVar
.short SCRCMD_CHECKHASWIFILISTVALIDLOGIN
.short \destVar
.endm
.macro ScrCmd_2A4 arg0
.short SCRCMD_2A4
.short \arg0
.macro GetWiFListValidFriendsCount destVar
.short SCRCMD_GETWIFLISTVALIDFRIENDSCOUNT
.short \destVar
.endm
.macro OpenPartyMenuForTrade
@@ -4743,9 +4744,9 @@
.short \species
.endm
.macro ScrCmd_31D arg0
.short SCRCMD_31D
.short \arg0
.macro TryRevertPartyPokemonForms destVar
.short SCRCMD_TRYREVERTPARTYPOKEMONFORMS
.short \destVar
.endm
.macro TryRevertPokemonForm partySlot, destVar
@@ -4771,9 +4772,9 @@
.short SCRCMD_FINISHDISTORTIONWORLDGIRATINASHADOWEVENT
.endm
.macro ScrCmd_323 arg0
.short SCRCMD_323
.short \arg0
.macro CheckNoWiFiPlazaCooldown destVar
.short SCRCMD_CHECKNOWIFIPLAZACOOLDOWN
.short \destVar
.endm
.macro GetBattleHallRecordKeeperStats curStreakIdx, passedMilestoneIdx, nextMilestoneIdx, earnedBPIdx, nextMilestone, response

View File

@@ -74,7 +74,7 @@ This is all that needs to be done in terms of setup, now the model is ready to d
### Drawing the Model
Before drawing there's a few things that should be configured on the object, one of them being the position of the model obviously. For simplicity's sake I will just set the models position to the player's position.
```c
const VecFx32 *pos = PlayerAvatar_PosVector(fieldSystem->playerAvatar);
const VecFx32 *pos = PlayerAvatar_GetPos(fieldSystem->playerAvatar);
Easy3DObject_SetPosition(&giratinaObj, pos->x, pos->y, pos->z);
// Make sure the model actually gets rendered

View File

@@ -0,0 +1,63 @@
# In-Game Trade Data File Format
This document describes the file format for in-game trade data consumed by the
`npctradeproc` build tool. Each NPC trade in the ROM is represented by a JSON
file `res/npc_trades/<name>.json`, which contains metadata for the in-game trade
event and the received Pokémon. The fields from each of these files are mapped
onto the `NPCTradeMon` struct from `include/overlay006/npc_trade.h`.
## Schema
| Field | Type | Description |
| -------------------- | ------------------------- | --------------------------------------------------------------- |
| `name` | `string` | The Pokémon's nickname after the trade. |
| `otName` | `string` | The Original Trainer's name (max 7 characters). |
| `species` | `enum Species` | The species of the Pokémon being offered. |
| `hpIV` | `u8` (031) | HP Individual Value (stored in 5 bits). |
| `atkIV` | `u8` (031) | Attack Individual Value (stored in 5 bits). |
| `defIV` | `u8` (031) | Defense Individual Value (stored in 5 bits). |
| `speedIV` | `u8` (031) | Speed Individual Value (stored in 5 bits). |
| `spAtkIV` | `u8` (031) | Special Attack Individual Value (stored in 5 bits). |
| `spDefIV` | `u8` (031) | Special Defense Individual Value (stored in 5 bits). |
| `unused1` | `u32` | Unused field. Present in the retail ROM. |
| `otID` | `u32` | The Original Trainer's ID number. |
| `cool` | `u32` | Cool contest condition value. |
| `beauty` | `u32` | Beauty contest condition value. |
| `cute` | `u32` | Cute contest condition value. |
| `smart` | `u32` | Smart contest condition value. |
| `tough` | `u32` | Tough contest condition value. |
| `personality` | `u32` | Personality value, which determines gender, ability, and nature.|
| `heldItem` | `enum Item` | The item held by the Pokémon. |
| `otGender` | `enum Gender` | The gender of the Original Trainer. |
| `unused2` | `u32` | Unused field. Present in the retail ROM. |
| `language` | `enum Language` | The language of the Original Trainer. |
| `requestedSpecies` | `enum Species` | The species required in exchange for the trade. |
## Example
```json
{
"name": "Kazza",
"otName": "Hilary",
"species": "SPECIES_ABRA",
"hpIV": 15,
"atkIV": 15,
"defIV": 15,
"speedIV": 20,
"spAtkIV": 25,
"spDefIV": 25,
"unused1": 28,
"otID": 25643,
"cool": 0,
"beauty": 0,
"cute": 0,
"smart": 0,
"tough": 0,
"personality": 142,
"heldItem": "ITEM_ORAN_BERRY",
"otGender": "GENDER_FEMALE",
"unused2": 0,
"language": "LANGUAGE_ENGLISH",
"requestedSpecies": "SPECIES_MACHOP"
}
```

166
docs/datafiles/items.md Normal file
View File

@@ -0,0 +1,166 @@
# Item Data File Format
This document describes the file format for item data consumed by the `itemproc`
build tool. Each item in the ROM is represented by a JSON file
`res/items/data/<name>.json`. Fields from each of these files are mapped onto
the `ItemData` struct from `include/item.h` and the `BerryData` struct from
`include/berry_data.h`.
Bogus items in the retail ROM—those with the `ITEM_UNUSED_` prefix—do not have
corresponding JSON files. They are assigned placeholder text in the output, but
they do not produce a data entry.
## Schema
| Field | Type | Description |
| -------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------- |
| `name` | `string` | The item's display name (singular). |
| `plural` | `string` | The item's display name (plural). |
| `article` | `string` | Indefinite article (e.g. "a", "an") for in-game text. |
| `description` | `string[]` | The item's description, as an array of lines. |
| `icon` | `object` | References to the item's icon graphics. See below. |
| `gbaID` | `string` | The corresponding Gen-III item identifier, or `GBA_ITEM_NONE` for Gen-IV items. |
| `price` | `u16` | Base price in Pokédollars paid when purchasing from a shop. `0` means the item cannot be sold. |
| `effectParam` | `u8` | Generic parameter; semantics vary by item type (e.g., heal amount). |
| `holdEffect` | `enum ItemHoldEffect` | Effect when held by a Pokémon. |
| `pluckEffect` | `define PLUCK_EFFECT` | Effect when consumed by Bug Bite / Pluck. |
| `flingEffect` | `define FLING_EFFECT` | Effect when used with Fling. |
| `flingPower` | `u8` | Base power of Fling when this item is flung. |
| `naturalGiftPower` | `u8` | Base power of Natural Gift when this item is held. 0 if not a berry. |
| `naturalGiftType` | `enum PokemonType` or `null` | Type of Natural Gift when this item is held. `null` if not a berry. |
| `preventToss` | `bool` | If `true`, then the item cannot be tossed or sold. |
| `canRegister` | `bool` | If `true`, then the item can be registered to the `Y` button. |
| `fieldPocket` | `define POCKET` | The Bag pocket the item belongs to (Items, Medicine, etc.). |
| `battlePocket` | `define BATTLE_POCKET_MASK` | The battle pocket mask for use during battle. |
| `fieldUseFunc` | `define ITEM_USE_FUNC` | The field-use function invoked from the overworld. |
| `battleUseFunc` | `u8` | The battle-use function invoked from the battle menu. |
| `itemUseParams` | `object` or `null` | Detailed usage parameters. See below. |
| `teachesMove` | `enum Move` | The move taught by this TM or HM (only for TMs/HMs). |
| `berryData` | `object` | Berry growth and flavor data (only for berries). See below. |
### The `icon` Object
| Field | Type | Description |
| --------- | -------- | ---------------------------------------------------- |
| `sprite` | `string` | Name of the NCGR sprite resource for the item icon. |
| `palette` | `string` | Name of the NCLR palette resource for the item icon. |
These fields map to the in-game files produced from the inputs in
`res/items/icons`.
### The `itemUseParams` Object
This object defines the parameters for items that act on a Pokémon in the party
or in battle. All fields are optional and default to `0` or `false`.
| Field | Type | Description |
| ------------------- | ------- | ---------------------------------------------------------------- |
| `healSleep` | `bool` | Cures sleep. |
| `healPoison` | `bool` | Cures poison. |
| `healBurn` | `bool` | Cures burn. |
| `healFreeze` | `bool` | Cures freeze. |
| `healParalysis` | `bool` | Cures paralysis. |
| `healConfusion` | `bool` | Cures confusion. |
| `healAttract` | `bool` | Cures infatuation. |
| `guardSpec` | `bool` | Temporarily protects from stat reduction. |
| `revive` | `bool` | Revives a fainted Pokémon. |
| `reviveAll` | `bool` | Revives all fainted Pokémon. |
| `levelUp` | `bool` | Increases the Pokémon's level by one. |
| `ppUp` | `bool` | Increases a move's PP. |
| `ppMax` | `bool` | Maximizes a move's PP. |
| `restorePPAllMoves` | `bool` | Restores PP to all moves. |
| `atkStages` | `u8` | Attack stage change (04). |
| `defStages` | `u8` | Defense stage change (04). |
| `spatkStages` | `u8` | Special Attack stage change (04). |
| `spdefStages` | `u8` | Special Defense stage change (04). |
| `speedStages` | `u8` | Speed stage change (04). |
| `accStages` | `u8` | Accuracy stage change (04). |
| `critStages` | `u8` | Critical-hit ratio stage change (02). |
| `hpRestored` | `s8` | HP restored. Use `-1` for 100%, `-2` for 50%, or `-3` for 25%. |
| `ppRestored` | `s8` | PP restored. Use `-1` for 100%. |
| `hpEVs` | `s8` | HP EVs gained. |
| `atkEVs` | `s8` | Attack EVs gained. |
| `defEVs` | `s8` | Defense EVs gained. |
| `speedEVs` | `s8` | Speed EVs gained. |
| `spatkEVs` | `s8` | Special Attack EVs gained. |
| `spdefEVs` | `s8` | Special Defense EVs gained. |
| `friendshipLow` | `s8` | Friendship change when friendship < 100. |
| `friendshipMed` | `s8` | Friendship change when 100 friendship < 200. |
| `friendshipHigh` | `s8` | Friendship change when friendship 200. |
When `fieldUseFunc` is set to `ITEM_USE_FUNC_BERRY`, `ITEM_USE_FUNC_EVO_STONE`,
`ITEM_USE_FUNC_HEALING`, or any other use function that acts on a party Pokémon,
this object is optional but will be used if present.
### The `berryData` Object
| Field | Type | Description |
| ------------------- | ---------------------- | ------------------------------------------------------ |
| `size` | `u16` | Size of the berry in millimeters. |
| `firmness` | `define FIRMNESS` | Firmness category (Very Soft through Super Hard). |
| `baseYield` | `u8` | Base yield per plant. |
| `stageDuration` | `u8` | Number of stages to grow. |
| `moistureDrainRate` | `u8` | How quickly moisture drains. |
| `spiciness` | `u8` | Spicy flavor value. |
| `dryness` | `u8` | Dry flavor value. |
| `sweetness` | `u8` | Sweet flavor value. |
| `bitterness` | `u8` | Bitter flavor value. |
| `sourness` | `u8` | Sour flavor value. |
| `smoothness` | `u8` | Smoothness for Poffin cooking. |
This field is only recognized when `fieldUseFunc` is `ITEM_USE_FUNC_BERRY`.
## Outputs
The tool produces the following outputs:
| Output | Description |
| ------------------------------- | -------------------------------------------------------------------- |
| `pl_item_data.narc` | `ItemData` entries for every item, packed by index ID. |
| `item_id_map.h` | Maps item IDs to data index, icon resource, palette, and Gen-III ID. |
| `item_tm_move_map.h` | Maps TM indices to the move they teach. |
| `item_berry_list.h` | Lists all berry items by their berry index. |
| `item_mail_list.h` | Lists all mail items by their mail type index. |
| `item_names.json` | Text bank for singular item names. |
| `item_names_plural.json` | Text bank for plural item names. |
| `item_names_with_articles.json` | Text bank for item names with their indefinite article. |
| `item_descriptions.json` | Text bank for item descriptions. |
| `hidden_item_scripts.h` | Generated header mapping hidden item script IDs to script entries. |
| `nuts_data.narc` | `BerryData` entries for each in-game berry. |
## Example
```json
{
"name": "Potion",
"plural": "Potions",
"article": "a",
"description": [
"A spray-type medicine for wounds.\n",
"It restores the HP of one Pokémon by\n",
"just 20 points."
],
"icon": {
"sprite": "potion_NCGR",
"palette": "potion_NCLR"
},
"gbaID": "GBA_ITEM_POTION",
"price": 300,
"effectParam": 20,
"holdEffect": "HOLD_EFFECT_NONE",
"pluckEffect": "PLUCK_EFFECT_NONE",
"flingEffect": "FLING_EFFECT_NONE",
"flingPower": 30,
"naturalGiftPower": 0,
"naturalGiftType": null,
"preventToss": false,
"canRegister": false,
"fieldPocket": "POCKET_MEDICINE",
"battlePocket": "BATTLE_POCKET_MASK_RECOVER_HP",
"fieldUseFunc": "ITEM_USE_FUNC_HEALING",
"battleUseFunc": 2,
"itemUseParams": {
"hpRestored": 20
}
}
```

361
docs/datafiles/pokemon.md Normal file
View File

@@ -0,0 +1,361 @@
# Pokémon Data File Format
This document describes the file format for Pokémon species data consumed by the
`speciesproc` build tool. Each species in the ROM is represented by a directory
`res/pokemon/<species>` which must contain the following files:
| File | Purpose |
| ------------------ | -------------------------------------------------------------- |
| `data.json` | Internal metadata (stats, types, learnsets, evolutions, etc.) |
| `sprite_data.json` | Sprite offset, shadow, and animation data (National Dex only) |
Some alternate forms have their own input data due to differing base stats,
types, or abilities. In the retail ROM, this includes forms for:
1. Deoxys
2. Wormadam
3. Shaymin
4. Giratina
5. Rotom
Each such form has a corresponding subdirectory under their species parent, e.g.
`giratina/forms/origin`. These forms have a similar `data.json` file, but they
do not have a `sprite_data.json` file.
## `data.json` — Internal Metadata
The JSON fields from this file map onto the `SpeciesData`, `SpeciesEvolution`,
`SpeciesLearnset`, and `SpeciesPalPark` structs from
`include/struct_defs/species.h`.
### Schema
| Field | Type | Description |
| ------------------- | -------------------- | ----------------------------------------------------------------------------------------------- |
| `base_stats` | `object` | Base stat values (HP, Attack, Defense, Speed, Sp. Atk, Sp. Def). |
| `types` | `enum PokemonType[]` | The species' primary and secondary types (2 elements). |
| `catch_rate` | `u8` | Catch rate (0255). |
| `base_exp_reward` | `u8` | Base experience yield on defeat. |
| `ev_yields` | `object` | EV yield values (2-bit each) for each stat. |
| `held_items.common` | `enum Item` | The common wild held item (20%). |
| `held_items.rare` | `enum Item` | The rare wild held item (5%). |
| `gender_ratio` | `enum GenderRatio` | Gender ratio of the species. |
| `hatch_cycles` | `u8` | Number of hatch cycles (255 x cycle length). |
| `base_friendship` | `u8` | Base friendship level. |
| `exp_rate` | `enum ExpRate` | Level-up experience curve. |
| `egg_groups` | `enum EggGroup[]` | Egg groups for breeding (2 elements). |
| `abilities` | `enum Ability[]` | Slot 1 and slot 2 abilities (2 elements). |
| `safari_flee_rate` | `u8` | Safari Zone flee rate. |
| `body_color` | `enum PokemonColor` | Pokédex body color. |
| `flip_sprite` | `bool` | Whether the in-battle sprite should be flipped horizontally in menus (like the summary screen). |
| `icon_palette` | `u8` or `array` | Icon palette index; array of `[form_name, index]` tuples for species with per-form palettes. |
| `learnset` | `object` | Learnset data (level-up, TM/HM, tutor, egg moves). See below. |
| `evolutions` | `array` | Evolution methods and targets. |
| `offspring` | `enum Species` | The species produced when breeding (usually self). |
| `footprint` | `object` | Footprint data for the Pokédex. |
| `pokedex_data` | `object` | Pokédex entry text, height, weight, body shape, and sprite scales/positions. |
| `catching_show` | `object` | Pal Park encounter data. |
#### The `learnset` Object
| Field | Type | Description |
| ---------- | ------------- | ------------------------------------------------------------------------- |
| `by_level` | `array` | Level-up learnset: array of `[level, move]` tuples. |
| `by_tm` | `string[]` | TM/HM compatibility: array of TM or HM markers (e.g. `"TM01"`, `"HM04"`). |
| `by_tutor` | `enum Move[]` | Moves teachable by move tutors. |
| `egg_moves`| `enum Move[]` | Moves available as egg moves (optional). |
If a move listed in the `by_tutor` array is not teachable by any move tutor in
the game, then a warning will be emitted, and that move will be skipped.
No validation is performed against `egg_moves` due to the potential cost of
analyzing every other member of each egg group.
#### The `evolutions` Array
Each element is a tuple describing one evolution path:
| Index | Type | Description |
| ----- | ---------------------- | ---------------------------------------------------------------------- |
| 0 | `enum EvolutionMethod` | The evolution method (level, trade, item, etc.) |
| 1 | varies | The parameter for the method (level, item, move, species, or nothing). |
| 2 | `enum Species` | The target species to evolve into. |
The parameter type depends on the method:
- For `EVO_LEVEL`, `EVO_LEVEL_ATK_GT_DEF`, etc., it is the level at which the
evolution should trigger.
- For `EVO_USE_ITEM`, `EVO_TRADE_WITH_HELD_ITEM`, etc., it is the `enum Item`
required to be held or used to trigger the evolution.
- For `EVO_LEVEL_KNOW_MOVE`, it is an `enum Move` which must be known for the
next level-up to trigger the evolution.
- For `EVO_LEVEL_SPECIES_IN_PARTY`, it is an `enum Species` which must be
present in the party for the next level-up to trigger the evolution.
- For `EVO_NONE`, `EVO_LEVEL_HAPPINESS`, `EVO_TRADE`, there is no listed
parameter, and the evolution only has two elements: `[method, species]`.
#### The `footprint` Object
| Field | Type | Description |
| ------ | ----------------------- | --------------------------------------------------- |
| `has` | `bool` | Whether the species has a footprint in the Pokédex. |
| `size` | `enum FootprintSize` | The relative size of the footprint. |
| `type` | `define FOOTPRINT_TYPE` | The footprint type (e.g. Cute, Scary, etc.). |
#### The `pokedex_data` Object
Height and weight may be specified in either metric or imperial units, but not
both.
| Field | Type | Description |
| ------------------ | ----------------------- | -------------------------------------------------------- |
| `height_meters` | `float` | Height in meters (alternative to `height_inches`). |
| `height_inches` | `u32` | Height in inches (alternative to `height_meters`). |
| `weight_kilograms` | `float` | Weight in kilograms (alternative to `weight_pounds`). |
| `weight_pounds` | `float` | Weight in pounds (alternative to `weight_kilograms`). |
| `body_shape` | `enum PokemonBodyShape` | Pokédex body shape category. |
| `trainer_scale_f` | `u16` | Trainer back-sprite scale (female). |
| `pokemon_scale_f` | `u16` | Pokémon front-sprite scale (female). |
| `trainer_scale_m` | `u16` | Trainer back-sprite scale (male). |
| `pokemon_scale_m` | `u16` | Pokémon front-sprite scale (male). |
| `trainer_pos_f` | `u16` | Trainer back-sprite Y-position offset (female). |
| `pokemon_pos_f` | `u16` | Pokémon front-sprite Y-position offset (female). |
| `trainer_pos_m` | `u16` | Trainer back-sprite Y-position offset (male). |
| `pokemon_pos_m` | `u16` | Pokémon front-sprite Y-position offset (male). |
| `origin_forme` | `object` | Alternate-forme Pokédex data (Giratina only). See below. |
| `en`, `fr`, `etc.` | `object` | Localized Pokédex data. See below. |
The `origin_forme` sub-object uses the same schema as the top-level
`pokedex_data` (height, weight, body shape, scales, and positions) and is only
present for Giratina to support its Origin Forme.
Each language sub-object has the following fields:
| Field | Type | Description |
| ------------ | ---------- | --------------------------------------------- |
| `name` | `string` | The species name in that language. |
| `category` | `string` | The species category (e.g. "Lizard Pokémon"). |
| `entry_text` | `string[]` | The Pokédex entry text, as an array of lines. |
#### The `catching_show` Object
| Field | Type | Description |
| --------------------- | ----------------------- | ---------------------------------------- |
| `pal_park_land_area` | `enum PalParkLandArea` | Pal Park land area assignment. |
| `pal_park_water_area` | `enum PalParkWaterArea` | Pal Park water area assignment. |
| `catching_points` | `u8` | Catching show points awarded. |
| `rarity` | `u8` | Rarity score for the catching show. |
| `unused` | `u16` | Unused field. Present in the retail ROM. |
## `sprite_data.json` — Sprite Offsets and Animation Data
This file is only processed for species present in the National Pokédex (that
is, those with an ID less than `SPECIES_EGG`) and defines the battle sprite
layout and some animation parameters.
| Field | Type | Description |
| -------- | -------- | ---------------------------------------------- |
| `front` | `object` | Front-face sprite animation and Y-offset data. |
| `back` | `object` | Back-face sprite animation and Y-offset data. |
| `shadow` | `object` | Shadow sprite position and size. |
### The `front` and `back` Objects
| Field | Type | Description |
| --------------- | ---------- | -------------------------------------------------------- |
| `y_offset` | `object` | Per-gender Y-offsets for the sprite (`male` / `female`). |
| `addl_y_offset` | `s8` | Additional Y-offset (front only). |
| `animation` | `u8` | Pre-programmed animation sequence ID. |
| `cry_delay` | `u8` | Frames to wait before playing the cry. |
| `start_delay` | `u8` | Frames to wait before starting the animation. |
| `frames` | `object[]` | Array of animation frame definitions (up to 10 frames). |
#### The `frame` Objects
| Field | Type | Description |
| -------------- | ---- | ------------------------------------- |
| `sprite_frame` | `s8` | Sprite frame index (`-1` = no frame). |
| `frame_delay` | `u8` | Duration of this frame in ticks. |
| `x_shift` | `s8` | Horizontal shift for this frame. |
| `y_shift` | `s8` | Vertical shift for this frame. |
### The `shadow` Object
| Field | Type | Description |
| ---------- | ----------------- | --------------------------------------- |
| `x_offset` | `s8` | Horizontal offset of the shadow sprite. |
| `size` | `enum ShadowSize` | Size category of the shadow sprite. |
### Outputs
The tool produces the following outputs:
| Output | Description |
| ---------------------------------------- | ----------------------------------------------------------------- |
| `pl_personal.narc` | `SpeciesData` entries for every species and alternate form. |
| `evo.narc` | `SpeciesEvolution` entries. |
| `wotbl.narc` | Level-up learnset entries for every species. |
| `height.narc` | Per-gender sprite Y-offsets (4 files per National Dex species). |
| `pl_poke_data.narc` | `SpeciesSpriteData` for all National Dex species. |
| `ppark.narc` | `SpeciesPalPark` data for all National Dex species. |
| `pms.narc` | Offspring species map (breeding species resolution). |
| `zukan_data(_gira).narc` | Data for the sorted Pokédex indices (by height, by weight, etc.). |
| `tutorable_moves.h` | Move tutor definitions and costs. |
| `species_learnsets_by_tutor.h` | Bitmask of tutorable moves per species. |
| `species_egg_moves.h` | Egg move lists per species. |
| `species_footprint_sizes.h` | Footprint size per species. |
| `species_footprint_types.h` | Footprint type per species. |
| `species_icon_palettes.h` | Icon palette index per species. |
| `species_name.json` | Text bank for species names. |
| `species_name_with_articles.json` | Text bank for species names with indefinite articles. |
| `species_pokedex_entry_*.json` | Text banks for Pokédex entries in 6 languages. |
| `species_name_with_natdex_number_*.json` | Text banks for species names with National Dex numbers. |
| `species_category*.json` | Text banks for species categories. |
| `species_weight*.json` | Text banks for Pokédex weight display. |
| `species_height*.json` | Text banks for Pokédex height display. |
### Example
```json
{
"base_stats": {
"hp": 39,
"attack": 52,
"defense": 43,
"speed": 65,
"special_attack": 60,
"special_defense": 50
},
"types": [ "TYPE_FIRE", "TYPE_FIRE" ],
"catch_rate": 45,
"base_exp_reward": 65,
"ev_yields": {
"hp": 0,
"attack": 0,
"defense": 0,
"speed": 1,
"special_attack": 0,
"special_defense": 0
},
"held_items": {
"common": "ITEM_NONE",
"rare": "ITEM_NONE"
},
"gender_ratio": "GENDER_RATIO_FEMALE_12_5",
"hatch_cycles": 20,
"base_friendship": 70,
"exp_rate": "EXP_RATE_MEDIUM_SLOW",
"egg_groups": [ "EGG_GROUP_MONSTER", "EGG_GROUP_DRAGON" ],
"abilities": [ "ABILITY_BLAZE", "ABILITY_NONE" ],
"safari_flee_rate": 0,
"body_color": "MON_COLOR_RED",
"flip_sprite": false,
"icon_palette": 0,
"learnset": {
"by_level": [
[ 1, "MOVE_SCRATCH" ],
[ 1, "MOVE_GROWL" ],
[ 7, "MOVE_EMBER" ],
[ 10, "MOVE_SMOKE_SCREEN" ],
[ 16, "MOVE_DRAGON_RAGE" ]
],
"by_tm": [
"TM01", "TM02", "TM06", "TM10",
"HM01", "HM04", "HM06"
],
"by_tutor": [
"MOVE_MUD_SLAP",
"MOVE_FIRE_PUNCH",
"MOVE_SNORE"
],
"egg_moves": [
"MOVE_BELLY_DRUM",
"MOVE_OUTRAGE",
"MOVE_DRAGON_DANCE"
]
},
"evolutions": [
[ "EVO_LEVEL", 16, "SPECIES_CHARMELEON" ]
],
"offspring": "SPECIES_CHARMANDER",
"footprint": {
"has": true,
"size": "FOOTPRINT_MEDIUM",
"type": "FOOTPRINT_TYPE_CUTE"
},
"pokedex_data": {
"height_inches": 24,
"weight_pounds": 18.7,
"body_shape": "SHAPE_BIPEDAL_TAILED",
"trainer_scale_f": 272,
"pokemon_scale_f": 384,
"trainer_scale_m": 256,
"pokemon_scale_m": 384,
"trainer_pos_f": 8,
"pokemon_pos_f": 23,
"trainer_pos_m": 9,
"pokemon_pos_m": 23,
"en": {
"name": "CHARMANDER",
"category": "Lizard Pokémon",
"entry_text": [
"The fire on the tip of its tail is a\n",
"measure of its life. If healthy,\n",
"its tail burns intensely."
]
},
"fr": {
"name": "SALAMECHE",
"category": "Pokémon Lézard",
"entry_text": [
"La flamme de sa queue symbolise sa\n",
"vitalité. Elle est intense quand il\n",
"est en bonne santé."
]
},
"de": {
"name": "GLUMANDA",
"category": "Echse",
"entry_text": [
"Lodert die Flamme auf seiner\n",
"Schweifspitze hell, ist GLUMANDA\n",
"gesund."
]
},
"it": {
"name": "CHARMANDER",
"category": "Pokémon Lucertola",
"entry_text": [
"La fiamma sulla punta della coda\n",
"indica la sua vitalità. Se sta bene,\n",
"la fiamma è più ardente."
]
},
"es": {
"name": "CHARMANDER",
"category": "Pokémon Lagartija",
"entry_text": [
"La llama de la punta de su cola\n",
"indica su salud. Si CHARMANDER\n",
"está sano, arderá con más fuerza."
]
},
"jp": {
"name": "ヒトカゲ",
"category": "とかげポケモン",
"entry_text": [
"ヒトカゲの しっぽの ほのおは\n",
"いのちの ともしび。げんきな ときは\n",
"ほのおも ちからづよく もえあがる。"
]
}
},
"catching_show": {
"pal_park_land_area": "PAL_PARK_AREA_LAND_SOUTH_WEST",
"pal_park_water_area": "PAL_PARK_AREA_WATER_NONE",
"catching_points": 50,
"rarity": 30,
"unused": 514
}
}
```

231
docs/datafiles/trainers.md Normal file
View File

@@ -0,0 +1,231 @@
# Trainer Data File Format
This document describes the file format for trainer data consumed by the
`trainerproc` build tool. Each trainer in the ROM is represented by a JSON file
`res/trainers/data/<name>.json`, which contains metadata for the trainer and
their party. The fields from each of these files are mapped onto the structs
defined in `include/struct_defs/trainer_data.h`.
## Top-Level Schema
| Field | Type | Description |
| --------------- | ----------------------------- | ---------------------------------------------------------------- |
| `name` | `string` | The trainer's display name. |
| `class` | `enum TrainerClass` | The trainer class, e.g. Youngster, Ace Trainer, Gym Leader. |
| `items` | `enum Item[]` | Items usable by the trainer in battle (up to 4). May be empty. |
| `ai_flags` | `enum AIFlag[]` | AI behavior flags for battle scripts. May be empty. |
| `double_battle` | `bool` | Whether this is a double battle. |
| `party` | `object[]` | The trainer's party of Pokémon. See below for the member schema. |
| `messages` | `object[]` | Dialogue messages. See the Messages section below. |
## Party Member Schema
Each element of the `party` array represents a Pokémon owned by the trainer.
| Field | Type | Description |
| ------------ | ----------------------- | ----------------------------------------------------------------- |
| `species` | `enum Species` | The species of the Pokémon. |
| `form` | `u8` | Form index, packed into the high bits of the species field. |
| `level` | `u16` | The level of the Pokémon. |
| `item` | `enum Item` or `null` | The held item, or `null` for none. |
| `moves` | `enum Move[]` or `null` | Known moves (up to 4), or `null` for default level-up moves. |
| `iv_scale` | `u16` | IV scaling factor (0255). |
| `ball_seal` | `u16` | Ball seal / capsule decoration index. |
The presence of the `item` and `moves` fields determines the exact structure of
the output data, which affects the trainer's party in-game. If any Pokémon in
the party specifies that it can have a held item or a custom move-set, then all
other Pokémon in the party must *also* specify as much.
To illustrate, this party is valid:
```json
{
"party": [
{
"species": "SPECIES_STARLY",
"form": 0,
"level": 7,
"item": null,
"moves": [
"MOVE_QUICK_ATTACK",
"MOVE_GROWL"
],
"iv_scale": 30,
"ball_seal": 0
},
{
"species": "SPECIES_CHIMCHAR",
"form": 0,
"level": 9,
"item": null,
"moves": [
"MOVE_SCRATCH",
"MOVE_LEER"
],
"iv_scale": 30,
"ball_seal": 0
}
]
}
```
However, this party is *not* valid, as Chimchar specifies that it has data for
its held-item, while Starly does not:
```json
{
"party": [
{
"species": "SPECIES_STARLY",
"form": 0,
"level": 7,
"item": null,
"moves": [
"MOVE_QUICK_ATTACK",
"MOVE_GROWL"
],
"iv_scale": 30,
"ball_seal": 0
},
{
"species": "SPECIES_CHIMCHAR",
"form": 0,
"level": 9,
"item": "ITEM_ORAN_BERRY",
"moves": [
"MOVE_SCRATCH",
"MOVE_LEER"
],
"iv_scale": 30,
"ball_seal": 0
}
],
}
```
Similarly, this party would also be invalid, as Starly declares that it should
derive its move-set from the moves that it learns by level-up, while Chimchar
declares that it has a custom move-set:
```json
{
"party": [
{
"species": "SPECIES_STARLY",
"form": 0,
"level": 7,
"item": null,
"moves": null,
"iv_scale": 30,
"ball_seal": 0
},
{
"species": "SPECIES_CHIMCHAR",
"form": 0,
"level": 9,
"item": null,
"moves": [
"MOVE_SCRATCH",
"MOVE_LEER"
],
"iv_scale": 30,
"ball_seal": 0
}
],
}
```
## Messages
The `messages` array defines dialogue that the trainer may speak at various
points during a battle. Each entry has a `type` field drawn from
`enum TrainerMessageType` (e.g. `TRMSG_PRE_BATTLE`, `TRMSG_DEFEAT`,
`TRMSG_POST_BATTLE`, `TRMSG_REMATCH`) and an `en_US` field containing the
message text. As with the text-files stored in `res/text`, the content may be
a single string or an array of strings as a convenience for multi-line messages.
Entries with the `garbage` key in place of `en_US` represent padding present in
the retail ROM.
## Outputs
The tool produces the following outputs:
| Output | Description |
| --------------------------- | -------------------------------------------------------------- |
| `trdata.narc` | `TrainerHeader` entries for every trainer, packed by index ID. |
| `trpoke.narc` | Party data for every trainer, packed by index ID. |
| `trainer_scripts.h` | Generated header mapping trainer IDs to `ScriptEntry` macros. |
| `npc_trainer_names.json` | Text bank for trainer display names. |
| `npc_trainer_messages.json` | Text bank for in-battle trainer dialogue. |
| `trtbl.narc` | Message lookup table mapping `(trainerID, messageType)` pairs. |
| `trtblofs.narc` | Offset table into `trtbl.narc` for each trainer index. |
## Example
```json
{
"name": "Catherine",
"class": "TRAINER_CLASS_ACE_TRAINER_FEMALE",
"items": [],
"ai_flags": [
"AI_FLAG_BASIC",
"AI_FLAG_EVAL_ATTACK",
"AI_FLAG_EXPERT"
],
"double_battle": false,
"party": [
{
"species": "SPECIES_HAUNTER",
"form": 0,
"level": 23,
"item": null,
"moves": [
"MOVE_NIGHT_SHADE",
"MOVE_CONFUSE_RAY",
"MOVE_SUCKER_PUNCH",
"MOVE_CURSE"
],
"iv_scale": 60,
"ball_seal": 0
},
{
"species": "SPECIES_MISDREAVUS",
"form": 0,
"level": 24,
"item": null,
"moves": [
"MOVE_PSYBEAM",
"MOVE_PAIN_SPLIT",
"MOVE_CONFUSE_RAY",
"MOVE_SPITE"
],
"iv_scale": 60,
"ball_seal": 0
}
],
"messages": [
{
"type": "TRMSG_PRE_BATTLE",
"en_US": [
"What does it feel like, taking one step\n",
"after another into darkness?\r"
]
},
{
"type": "TRMSG_DEFEAT",
"en_US": [
"Youre the kind of person who can keep\n",
"going forward even into the unknown.\n"
]
},
{
"type": "TRMSG_POST_BATTLE",
"en_US": [
"I think, sometimes, one has to make\n",
"mistakes to learn what is right.\n"
]
}
]
}
```

View File

@@ -15,6 +15,10 @@ For more detailed information about the project as a whole, please refer to its
## Working with Files for Various Data Types
- [Overview of the Processing Tools](datafiles/overview.md)
- [Pokémon Species](datafiles/pokemon.md)
- [In-Game Trainers](datafiles/trainers.md)
- [In-Game Trades](datafiles/trainers.md)
- [Items](datafiles/items.md)
- [Moves](datafiles/moves.md)
## Subsystems

View File

@@ -3,7 +3,7 @@ MAP_HEADER_NOTHING
MAP_HEADER_UNDERGROUND
MAP_HEADER_JUBILIFE_CITY
MAP_HEADER_JUBILIFE_CITY_MART
MAP_HEADER_JUBILIFE_CITY_UNKNOWN_HOUSE_1
MAP_HEADER_UNUSED_JUBILIFE_CITY_HOUSE_1
MAP_HEADER_JUBILIFE_CITY_POKECENTER_1F
MAP_HEADER_JUBILIFE_CITY_POKECENTER_2F
MAP_HEADER_POKETCH_CO_1F
@@ -21,7 +21,7 @@ MAP_HEADER_JUBILIFE_CITY_SOUTH_HOUSE_1F
MAP_HEADER_JUBILIFE_CITY_SOUTH_HOUSE_2F
MAP_HEADER_JUBILIFE_CITY_SOUTH_HOUSE_3F
MAP_HEADER_JUBILIFE_CITY_SOUTH_HOUSE_4F
MAP_HEADER_JUBILIFE_CITY_UNKNOWN_HOUSE_2
MAP_HEADER_UNUSED_JUBILIFE_CITY_HOUSE_2
MAP_HEADER_JUBILIFE_CITY_CONDOMINIUMS_1F
MAP_HEADER_JUBILIFE_CITY_CONDOMINIUMS_2F
MAP_HEADER_JUBILIFE_CITY_CONDOMINIUMS_3F
@@ -29,8 +29,8 @@ MAP_HEADER_JUBILIFE_CITY_CONDOMINIUMS_4F
MAP_HEADER_GLOBAL_TERMINAL_1F
MAP_HEADER_TRAINERS_SCHOOL
MAP_HEADER_JUBILIFE_CITY_SOUTHWEST_HOUSE_1F
MAP_HEADER_JUBILIFE_CITY_UNKNOWN_HOUSE_3
MAP_HEADER_JUBILIFE_CITY_UNKNOWN_HOUSE_4
MAP_HEADER_UNUSED_JUBILIFE_CITY_HOUSE_3
MAP_HEADER_UNUSED_JUBILIFE_CITY_HOUSE_4
MAP_HEADER_CANALAVE_CITY
MAP_HEADER_CANALAVE_CITY_MART
MAP_HEADER_CANALAVE_CITY_GYM
@@ -83,7 +83,7 @@ MAP_HEADER_ETERNA_CITY_HERB_SHOP
MAP_HEADER_ETERNA_CITY_SOUTH_HOUSE
MAP_HEADER_ETERNA_CITY_EAST_HOUSE
MAP_HEADER_ETERNA_CITY_UNDERGROUND_MAN_HOUSE
MAP_HEADER_ETERNA_CITY_UNKNOWN_HOUSE
MAP_HEADER_UNUSED_ETERNA_CITY_HOUSE
MAP_HEADER_HEARTHOME_CITY
MAP_HEADER_HEARTHOME_CITY_MART
MAP_HEADER_HEARTHOME_CITY_GYM_ENTRANCE_ROOM
@@ -159,8 +159,8 @@ MAP_HEADER_SUNYSHORE_MARKET
MAP_HEADER_SUNYSHORE_CITY_NORTHEAST_HOUSE
MAP_HEADER_SUNYSHORE_CITY_WEST_HOUSE
MAP_HEADER_SUNYSHORE_CITY_NORTHWEST_HOUSE
MAP_HEADER_SUNYSHORE_CITY_UNKNOWN_HOUSE_1
MAP_HEADER_SUNYSHORE_CITY_UNKNOWN_HOUSE_2
MAP_HEADER_UNUSED_SUNYSHORE_CITY_HOUSE_1
MAP_HEADER_UNUSED_SUNYSHORE_CITY_HOUSE_2
MAP_HEADER_SUNYSHORE_CITY_EAST_HOUSE
MAP_HEADER_VISTA_LIGHTHOUSE
MAP_HEADER_SNOWPOINT_CITY
@@ -194,7 +194,7 @@ MAP_HEADER_UNUSED_BATTLE_PARK_GATE_TO_FIGHT_AREA
MAP_HEADER_ROUTE_225_GATE_TO_FIGHT_AREA
MAP_HEADER_FIGHT_AREA_MIDDLE_HOUSE
MAP_HEADER_FIGHT_AREA_SOUTH_HOUSE
MAP_HEADER_FIGHT_AREA_UNKNOWN_HOUSE
MAP_HEADER_UNUSED_FIGHT_AREA_HOUSE
MAP_HEADER_UNKNOWN_197
MAP_HEADER_OREBURGH_MINE_B1F
MAP_HEADER_OREBURGH_MINE_B2F
@@ -333,7 +333,7 @@ MAP_HEADER_BATTLE_TOWER_MULTI_BATTLE_ROOM
MAP_HEADER_COMMUNICATION_CLUB_COLOSSEUM_2P
MAP_HEADER_COMMUNICATION_CLUB_COLOSSEUM_4P
MAP_HEADER_VERITY_LAKEFRONT
MAP_HEADER_VERITY_LAKEFRONT_UNKNOWN_HOUSE
MAP_HEADER_UNUSED_VERITY_LAKEFRONT_HOUSE
MAP_HEADER_VALOR_LAKEFRONT
MAP_HEADER_RESTAURANT
MAP_HEADER_GRAND_LAKE_VALOR_LAKEFRONT_EAST_HOUSE

View File

@@ -102,7 +102,6 @@ metang_generators = {
'species': { 'type': 'enum', 'tag': 'Species' },
'species_data_params': { 'type': 'enum', 'tag': 'SpeciesDataParam' },
'sphere_types': { 'type': 'enum', 'tag': 'SphereType' },
'string_padding_mode': { 'type': 'enum', 'tag': 'PaddingMode' },
'text_banks': { 'type': 'enum', 'tag': 'TextBank' },
'time_of_day': { 'type': 'enum', 'tag': 'TimeOfDay' },
'town_map_description_flag_types': { 'type': 'enum', 'tag': 'TownMapDescriptionFlagType' },

View File

@@ -1,5 +1,5 @@
MOVEMENT_TYPE_NONE
MOVEMENT_TYPE_DUMMY
MOVEMENT_TYPE_PLAYER
MOVEMENT_TYPE_LOOK_AROUND
MOVEMENT_TYPE_WANDER_AROUND
MOVEMENT_TYPE_WANDER_NORTH_AND_SOUTH

View File

@@ -1,4 +0,0 @@
# Control codes for how to pad numeric strings.
PADDING_MODE_NONE # Do not pad the string. Effectively left-justification.
PADDING_MODE_SPACES # Right-justify the string, padding with spaces.
PADDING_MODE_ZEROES # Right-justify the string, padding with zeroes.

View File

@@ -23,7 +23,7 @@ TEXT_BANK_FRONTIER_TRAINER_NAMES
TEXT_BANK_UNK_0022
TEXT_BANK_JUBILIFE_CITY
TEXT_BANK_JUBILIFE_CITY_MART
TEXT_BANK_JUBILIFE_CITY_UNKNOWN_HOUSE_1
TEXT_BANK_UNUSED_JUBILIFE_CITY_HOUSE_1
TEXT_BANK_JUBILIFE_CITY_POKECENTER_1F
TEXT_BANK_POKETCH_CO_1F
TEXT_BANK_POKETCH_CO_2F
@@ -39,7 +39,7 @@ TEXT_BANK_JUBILIFE_TV_ELEVATOR
TEXT_BANK_JUBILIFE_CITY_SOUTH_HOUSE_1F
TEXT_BANK_JUBILIFE_CITY_SOUTH_HOUSE_2F
TEXT_BANK_JUBILIFE_CITY_SOUTH_HOUSE_3F
TEXT_BANK_JUBILIFE_CITY_UNKNOWN_HOUSE_2
TEXT_BANK_UNUSED_JUBILIFE_CITY_HOUSE_2
TEXT_BANK_JUBILIFE_CITY_CONDOMINIUMS_1F
TEXT_BANK_JUBILIFE_CITY_CONDOMINIUMS_2F
TEXT_BANK_JUBILIFE_CITY_CONDOMINIUMS_3F
@@ -50,8 +50,8 @@ TEXT_BANK_GLOBAL_TERMINAL_3F
TEXT_BANK_TRAINERS_SCHOOL
TEXT_BANK_JUBILIFE_CITY_SOUTHWEST_HOUSE_1F
TEXT_BANK_JUBILIFE_CITY_SOUTHWEST_HOUSE_2F
TEXT_BANK_JUBILIFE_CITY_UNKNOWN_HOUSE_3
TEXT_BANK_JUBILIFE_CITY_UNKNOWN_HOUSE_4
TEXT_BANK_UNUSED_JUBILIFE_CITY_HOUSE_3
TEXT_BANK_UNUSED_JUBILIFE_CITY_HOUSE_4
TEXT_BANK_CANALAVE_CITY
TEXT_BANK_CANALAVE_CITY_MART
TEXT_BANK_CANALAVE_CITY_GYM
@@ -169,8 +169,8 @@ TEXT_BANK_SUNYSHORE_MARKET
TEXT_BANK_SUNYSHORE_CITY_NORTHEAST_HOUSE
TEXT_BANK_SUNYSHORE_CITY_WEST_HOUSE
TEXT_BANK_SUNYSHORE_CITY_NORTHWEST_HOUSE
TEXT_BANK_SUNYSHORE_CITY_UNKNOWN_HOUSE_1
TEXT_BANK_SUNYSHORE_CITY_UNKNOWN_HOUSE_2
TEXT_BANK_UNUSED_SUNYSHORE_CITY_HOUSE_1
TEXT_BANK_UNUSED_SUNYSHORE_CITY_HOUSE_2
TEXT_BANK_SUNYSHORE_CITY_EAST_HOUSE
TEXT_BANK_VISTA_LIGHTHOUSE
TEXT_BANK_SUNYSHORE_CITY_EAST_HOUSE_UNUSED
@@ -219,7 +219,7 @@ TEXT_BANK_CONTEST_COMMON
TEXT_BANK_CONTEST_RESULTS
TEXT_BANK_STATUS_CONDITION_NAMES
TEXT_BANK_OPTIONS_MENU
TEXT_BANK_POKEMON_CENTER_2F_ATTENDANTS
TEXT_BANK_POKEMON_CENTER_2F_COMMON
TEXT_BANK_OREBURGH_MINE_B1F
TEXT_BANK_OREBURGH_MINE_B2F
TEXT_BANK_VALLEY_WINDWORKS_OUTSIDE
@@ -398,7 +398,7 @@ TEXT_BANK_BAG_POCKET_NAMES_WITH_ICONS
TEXT_BANK_BERRY_TREES
TEXT_BANK_BERRY_TAGS
TEXT_BANK_VERITY_LAKEFRONT
TEXT_BANK_VERITY_LAKEFRONT_UNKNOWN_HOUSE
TEXT_BANK_UNUSED_VERITY_LAKEFRONT_HOUSE
TEXT_BANK_VALOR_LAKEFRONT
TEXT_BANK_RESTAURANT
TEXT_BANK_GRAND_LAKE_VALOR_LAKEFRONT_EAST_HOUSE
@@ -428,7 +428,7 @@ TEXT_BANK_DUMMY_0426
TEXT_BANK_GENERIC_NAMES
TEXT_BANK_UNK_0428
TEXT_BANK_FOLLOWER_PARTNERS
TEXT_BANK_POKEMON_CENTER_B1F_ATTENDANTS
TEXT_BANK_POKEMON_CENTER_B1F_COMMON
TEXT_BANK_RECORD_CHATOT_CRY
TEXT_BANK_POFFIN_COMMON
TEXT_BANK_LOCATION_NAMES
@@ -437,18 +437,18 @@ TEXT_BANK_SPECIAL_MET_LOCATION_NAMES
TEXT_BANK_EASY_CHAT_GROUPS
TEXT_BANK_EASY_CHAT
TEXT_BANK_UNK_0438
TEXT_BANK_UNK_0439
TEXT_BANK_UNK_0440
TEXT_BANK_UNK_0441
TEXT_BANK_UNK_0442
TEXT_BANK_UNK_0443
TEXT_BANK_UNK_0444
TEXT_BANK_UNK_0445
TEXT_BANK_UNK_0446
TEXT_BANK_UNK_0447
TEXT_BANK_UNK_0448
TEXT_BANK_UNK_0449
TEXT_BANK_UNK_0450
TEXT_BANK_TRAINER_WORDS
TEXT_BANK_PEOPLE_WORDS
TEXT_BANK_GREETINGS
TEXT_BANK_LIFESTYLE_WORDS
TEXT_BANK_FEELINGS
TEXT_BANK_TOUGH_WORDS
TEXT_BANK_UNION_WORDS
TEXT_BANK_LOSS_SENTENCES
TEXT_BANK_GENERAL_SENTENCES
TEXT_BANK_PRE_BATTLE_SENTENCES
TEXT_BANK_UNION_ROOM_SENTENCES
TEXT_BANK_WIN_SENTENCES
TEXT_BANK_UNK_0451
TEXT_BANK_UNK_0452
TEXT_BANK_PARTY_MENU

View File

@@ -112,7 +112,7 @@ FLAG_UNK_0x006E
FLAG_UNK_0x006F
FLAG_CHOSE_UNION_ROOM_APPEARANCE
FLAG_UNK_0x0071
FLAG_UNK_0x0072
FLAG_TALKED_TO_SCRATCH_OFF_CARDS_ATTENDANT
FLAG_DUMMY_0x0073
FLAG_OBTAINED_GARDENIA_TM86
FLAG_OBTAINED_ROARK_TM76
@@ -506,7 +506,7 @@ FLAG_HIDE_ROUTE_205_SOUTH_LITTLE_GIRL
FLAG_HIDE_VALLEY_WINDWORKS_BUILDING_LITTLE_GIRL
FLAG_HIDE_VALLEY_WINDWORKS_OUTSIDE_LOOKER
FLAG_HIDE_PASTORIA_CITY_CRASHER_WAKE
FLAG_UNK_0x01FC
FLAG_HIDE_ETERNA_FOREST_GARDENIA
FLAG_HIDE_ETERNA_CITY_GALACTIC_GRUNTS
FLAG_HIDE_ETERNA_CITY_POKECENTER_1F_BUNEARY
FLAG_HIDE_TEAM_GALACTIC_ETERNA_BUILDING_4F_HOSTAGES
@@ -4192,7 +4192,7 @@ VAR_ROAMING_MESPRIT_STATE
VAR_RESORT_VILLA_VISITOR_MESSAGE_NUM
VAR_DISTORTION_WORLD_CYRUS_APPEARANCE
VAR_WIFI_PLAZA_RETURN_WARP_ID
VAR_UNK_0x405D
VAR_WIFI_PLAZA_ATTENDANT_ID
VAR_ROAMING_MOLTRES_STATE
VAR_ROAMING_ZAPDOS_STATE
VAR_ROAMING_ARTICUNO_STATE
@@ -4227,7 +4227,7 @@ VAR_PASTORIA_STATE
VAR_VEILSTONE_WAREHOUSE_GUARDS_FIGHTABLE
VAR_SUNYSHORE_STATE
VAR_SNOWPOINT_CITY_STATE
VAR_UNK_0x4080
VAR_ENTERED_WIFI_PLAZA
VAR_FIGHT_AREA_STATE
VAR_UNK_0x4082
VAR_UNK_0x4083
@@ -4311,8 +4311,8 @@ VAR_HAS_SEEN_UNDERGROUND_ROARK_INTRO
VAR_HAS_ENTERED_HEARTHOME_GYM_BEFORE
VAR_UNK_0x40D2
VAR_LAKE_ACUITY_STATE
VAR_UNK_0x40D4
VAR_UNK_0x40D5
VAR_VISITED_POKEMON_CENTER_B1F
VAR_COMMUNICATION_LOAD_ACTION
VAR_GALACTIC_HQ_4F_STATE
VAR_PASTORIA_CITY_OBSERVATORY_GATE_1F_STATE
VAR_BATTLE_TOWER_LOBBY_LOAD_ACTION

View File

@@ -1,8 +1,6 @@
#ifndef POKEPLATINUM_EASY_CHAT_DEFS_H
#define POKEPLATINUM_EASY_CHAT_DEFS_H
#define WORD_NONE 0xFFFF
enum EasyChatType {
EASY_CHAT_TYPE_ONE_WORD = 0,
EASY_CHAT_TYPE_TWO_WORDS,

View File

@@ -1,12 +1,11 @@
#ifndef POKEPLATINUM_APPLICATIONS_EASY_CHAT_MAIN_H
#define POKEPLATINUM_APPLICATIONS_EASY_CHAT_MAIN_H
#include "struct_defs/sentence.h"
#include "applications/easy_chat/defs.h"
#include "applications/easy_chat/struct_ov20_021D2128_decl.h"
#include "easy_chat_args.h"
#include "easy_chat_sentence.h"
#include "overlay_manager.h"
#include "string_gf.h"
#include "touch_screen_actions.h"
@@ -40,7 +39,7 @@ typedef struct {
typedef struct EasyChatApp {
EasyChatArgs *args;
u32 type;
Sentence sentence;
EasyChatSentence sentence;
u16 words[MAX_EASY_CHAT_WORDS];
UnkStruct_ov20_021D2128 *unk_14;
UnkStruct_020998EC *unk_18;

View File

@@ -1,8 +1,7 @@
#ifndef POKEPLATINUM_APPLICATIONS_MAIL_H
#define POKEPLATINUM_APPLICATIONS_MAIL_H
#include "struct_defs/sentence.h"
#include "easy_chat_sentence.h"
#include "game_options.h"
#include "mail.h"
#include "pokemon.h"
@@ -37,7 +36,7 @@ typedef struct MailViewerAppArgs {
u8 mailType;
String *trainerName;
MailIconData iconData[MAIL_MAX_ICONS];
Sentence sentences[MAIL_MAX_SENTENCES];
EasyChatSentence sentences[MAIL_MAX_SENTENCES];
} MailViewerAppArgs;
MailAppArgs *MailAppArgs_New_Write(SaveData *saveData, enum MailContext context, u8 partySlot, u8 mailType, enum HeapID heapID);

View File

@@ -0,0 +1,42 @@
#ifndef POKEPLATINUM_BATTLE_HALL_SAVE_H
#define POKEPLATINUM_BATTLE_HALL_SAVE_H
#include "savedata.h"
#define HALL_SAVE_CHALLENGE_TYPE 0
#define HALL_SAVE_UNK_1 1
#define HALL_SAVE_TRAINER_IDS 2
#define HALL_SAVE_PARTY_SLOTS 3
#define HALL_SAVE_UNK_4 4
#define HALL_SAVE_STREAK_FLAGS 5
typedef struct BattleHallSave {
u8 challengeType : 3;
u8 didSave : 1;
u8 unk_00_4 : 4;
u8 unk_01;
u8 partySlots[2];
u16 trainerIDs[20];
u16 unk_2C[20];
} BattleHallSave;
typedef struct BattleHallStreakFlags {
u8 streakActiveFlags;
u8 unused[3];
} BattleHallStreakFlags;
void BattleHallSave_Init(BattleHallSave *challenge);
BattleHallSave *BattleHallSave_Get(SaveData *saveData);
BOOL BattleHallSave_HasSaved(BattleHallSave *save);
void BattleHallSave_RecordSave(BattleHallSave *save, BOOL didSave);
void BattleHallSave_SetMember(BattleHallSave *save, u8 field, u8 index, u8 unused, void *value);
u32 BattleHallSave_GetMember(BattleHallSave *save, u8 field, u8 index, u8 unused, void *unused2);
u8 BattleHall_GetRankOfType(u8 idx, u8 *typeRanks);
void BattleHall_SetRankOfType(u8 pokemonType, u8 *typeRanks, u8 value);
void BattleHall_ResetRankOfAllTypes(u8 *typeRanks);
void BattleHallStreakFlags_Init(BattleHallStreakFlags *flags);
BattleHallStreakFlags *BattleHallStreakFlags_Get(SaveData *saveData);
void BattleHallStreakFlags_SetFlag(BattleHallStreakFlags *flags, u8 field, u8 challengeType, u8 unused, u8 *value);
u32 BattleHallStreakFlags_GetFlag(BattleHallStreakFlags *flags, u8 field, u8 challengeType, u8 unused, void *unused2);
#endif // POKEPLATINUM_BATTLE_HALL_SAVE_H

View File

@@ -13,8 +13,8 @@ typedef struct BattleRegulation {
u8 maxLevel;
s8 heightRestriction;
s8 weightRestriction;
u8 speciesRestriction : 1;
u8 itemRestriction : 1;
u8 evolutionRestriction : 1;
u8 specialSpeciesRestriction : 1;
u8 speciesUniqueness : 1;
u8 itemUniqueness : 1;
u8 moveRestrictions : 1;
@@ -28,14 +28,14 @@ enum BattleRegulationRule {
BATTLE_REGULATION_RULE_TEAM_SIZE = 1,
BATTLE_REGULATION_RULE_MAX_LEVEL,
BATTLE_REGULATION_RULE_MAX_TOTAL_LEVEL,
BATTLE_REGULATION_RULE_SPECIES_RESTRICT,
BATTLE_REGULATION_RULE_EVOLUTION_RESTRICT,
BATTLE_REGULATION_RULE_HEIGHT_RESTRICT,
BATTLE_REGULATION_RULE_HEIGHT_TYPE,
BATTLE_REGULATION_RULE_WEIGHT_RESTRICT,
BATTLE_REGULATION_RULE_WEIGHT_TYPE,
BATTLE_REGULATION_RULE_ITEM_UNIQUE,
BATTLE_REGULATION_RULE_SPECIES_UNIQUE,
BATTLE_REGULATION_RULE_ITEM_RESTRICT,
BATTLE_REGULATION_RULE_SPECIAL_SPECIES_RESTRICT,
BATTLE_REGULATION_RULE_MOVE_RESTRICTIONS,
};

View File

@@ -6,17 +6,17 @@
#include "pokedex_heightweight.h"
#include "pokemon.h"
enum BattleRegulationValidationError {
BATTLE_REGULATION_VALIDATION_SUCCESS = 0,
BATTLE_REGULATION_VALIDATION_ERROR_TOTAL_LEVEL_EXCEEDED = 1,
BATTLE_REGULATION_VALIDATION_ERROR_DUPLICATE_SPECIES = 2,
BATTLE_REGULATION_VALIDATION_ERROR_DUPLICATE_ITEMS = 3,
BATTLE_REGULATION_VALIDATION_ERROR_INVALID_TEAM_SIZE = 4,
BATTLE_REGULATION_VALIDATION_ERROR_INVALID_POKEMON = 5,
enum BattleRegulationValidationResult {
BATTLE_REGULATION_VALIDATION_RESULT_SUCCESS = 0,
BATTLE_REGULATION_VALIDATION_RESULT_TOTAL_LEVEL_EXCEEDED,
BATTLE_REGULATION_VALIDATION_RESULT_DUPLICATE_SPECIES,
BATTLE_REGULATION_VALIDATION_RESULT_DUPLICATE_ITEMS,
BATTLE_REGULATION_VALIDATION_RESULT_INVALID_TEAM_SIZE,
BATTLE_REGULATION_VALIDATION_RESULT_INVALID_POKEMON,
};
BOOL BattleRegulation_ValidatePokemon(const BattleRegulation *regulation, Pokemon *mon, const HeightWeightData *heightWeightData);
enum BattleRegulationValidationError BattleRegulation_ValidatePartySelection(const BattleRegulation *regulation, Party *party, const HeightWeightData *heightWeightData, u8 *selectedSlots);
enum BattleRegulationValidationError BattleRegulation_SelectValidPokemon(const BattleRegulation *regulation, Party *party, const HeightWeightData *heightWeightData);
enum BattleRegulationValidationResult BattleRegulation_ValidatePartySelection(const BattleRegulation *regulation, Party *party, const HeightWeightData *heightWeightData, u8 *selectedSlots);
enum BattleRegulationValidationResult BattleRegulation_SelectValidPokemon(const BattleRegulation *regulation, Party *party, const HeightWeightData *heightWeightData);
#endif // POKEPLATINUM_BATTLE_REGULATION_VALIDATION_H

View File

@@ -36,16 +36,17 @@
#define BATTLE_TYPE_CATCH_TUTORIAL (1 << 10)
#define BATTLE_TYPE_DEBUG (1 << 31)
#define BATTLE_TYPE_TRAINER_SINGLES (BATTLE_TYPE_SINGLES | BATTLE_TYPE_TRAINER)
#define BATTLE_TYPE_TRAINER_DOUBLES (BATTLE_TYPE_DOUBLES | BATTLE_TYPE_TRAINER)
#define BATTLE_TYPE_LINK_DOUBLES (BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER_DOUBLES)
#define BATTLE_TYPE_FRONTIER_SINGLES (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_TRAINER_SINGLES)
#define BATTLE_TYPE_FRONTIER_DOUBLES (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_TRAINER_DOUBLES)
#define BATTLE_TYPE_FRONTIER_LINK (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER)
#define BATTLE_TYPE_TAG_DOUBLES (BATTLE_TYPE_TAG | BATTLE_TYPE_TRAINER_DOUBLES)
#define BATTLE_TYPE_NO_ITEMS (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER)
#define BATTLE_TYPE_AI_PARTNER (BATTLE_TYPE_DOUBLES | BATTLE_TYPE_2vs2 | BATTLE_TYPE_AI)
#define BATTLE_TYPE_TRAINER_WITH_AI_PARTNER (BATTLE_TYPE_TRAINER | BATTLE_TYPE_AI_PARTNER)
#define BATTLE_TYPE_FRONTIER_WITH_AI_PARTNER (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_TRAINER_WITH_AI_PARTNER)
#define BATTLE_TYPE_SPECIAL_WILD (BATTLE_TYPE_SAFARI | BATTLE_TYPE_ROAMER | BATTLE_TYPE_PAL_PARK | BATTLE_TYPE_CATCH_TUTORIAL)
#define BATTLE_TYPE_NO_OBEDIENCE_CHECK (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER)
#define BATTLE_TYPE_FORCED_SET_MODE (BATTLE_TYPE_DOUBLES | BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER)
#define BATTLE_TYPE_NO_AI_ITEMS (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_SAFARI | BATTLE_TYPE_AI | BATTLE_TYPE_PAL_PARK)
#define BATTLE_TYPE_NO_MOVES (BATTLE_TYPE_SAFARI | BATTLE_TYPE_PAL_PARK)
@@ -53,8 +54,6 @@
#define BATTLE_TYPE_NO_ABILITIES (BATTLE_TYPE_SAFARI | BATTLE_TYPE_PAL_PARK)
#define BATTLE_TYPE_2vs2_TAG (BATTLE_TYPE_2vs2 | BATTLE_TYPE_TAG)
#define BATTLE_TYPE_ALWAYS_CATCH (BATTLE_TYPE_PAL_PARK | BATTLE_TYPE_CATCH_TUTORIAL)
#define BATTLE_TYPE_RESTORE_ITEMS_AFTER (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER)
#define BATTLE_TYPE_NO_TRAINER_MESSAGES (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER)
#define MAX_LINK_BATTLERS 4
#define MAX_BATTLERS 4

View File

@@ -12,6 +12,8 @@
#define FRONTIER_RECORDS_APP_HALL 5
#define FRONTIER_RECORDS_APP_ARCADE 6
#define BATTLES_PER_ROUND_HALL 10
#define BATTLES_PER_ROUND_ARCADE 7
#define ARCADE_PARTY_SIZE_SOLO 3

View File

@@ -36,42 +36,42 @@ enum BattleFrontierStatsIndex {
STAT_FACTORY_LATEST_STREAK_OPEN_MULTI,
STAT_FACTORY_RECORD_TRADE_COUNT_OPEN_MULTI,
STAT_FACTORY_LATEST_TRADE_COUNT_OPEN_MULTI,
STAT_HALL_UNK_34,
STAT_HALL_CURRENT_STREAK_SINGLE,
STAT_HALL_LATEST_STREAK_SINGLE,
STAT_HALL_LATEST_SPECIES_SINGLE,
STAT_HALL_UNK_37,
STAT_HALL_UNK_38,
STAT_HALL_UNK_39,
STAT_HALL_UNK_40,
STAT_HALL_UNK_41,
STAT_HALL_UNK_42,
STAT_HALL_UNK_43,
STAT_HALL_UNK_44,
STAT_HALL_UNK_45,
STAT_HALL_UNK_46,
STAT_HALL_CURRENT_RANKS_NORMAL_FIGHTING_SINGLE,
STAT_HALL_CURRENT_RANKS_FLYING_POISON_SINGLE,
STAT_HALL_CURRENT_RANKS_GROUND_ROCK_SINGLE,
STAT_HALL_CURRENT_RANKS_BUG_GHOST_SINGLE,
STAT_HALL_CURRENT_RANKS_STEEL_MYSTERY_SINGLE,
STAT_HALL_CURRENT_RANKS_FIRE_WATER_SINGLE,
STAT_HALL_CURRENT_RANKS_GRASS_ELECTRIC_SINGLE,
STAT_HALL_CURRENT_RANKS_PSYCHIC_ICE_SINGLE,
STAT_HALL_CURRENT_RANKS_DRAGON_DARK_SINGLE,
STAT_HALL_CURRENT_STREAK_DOUBLE,
STAT_HALL_LATEST_STREAK_DOUBLE,
STAT_HALL_LATEST_SPECIES_DOUBLE,
STAT_HALL_UNK_49,
STAT_HALL_UNK_50,
STAT_HALL_UNK_51,
STAT_HALL_UNK_52,
STAT_HALL_UNK_53,
STAT_HALL_UNK_54,
STAT_HALL_UNK_55,
STAT_HALL_UNK_56,
STAT_HALL_UNK_57,
STAT_HALL_UNK_58,
STAT_HALL_CURRENT_RANKS_NORMAL_FIGHTING_DOUBLE,
STAT_HALL_CURRENT_RANKS_FLYING_POISON_DOUBLE,
STAT_HALL_CURRENT_RANKS_GROUND_ROCK_DOUBLE,
STAT_HALL_CURRENT_RANKS_BUG_GHOST_DOUBLE,
STAT_HALL_CURRENT_RANKS_STEEL_MYSTERY_DOUBLE,
STAT_HALL_CURRENT_RANKS_FIRE_WATER_DOUBLE,
STAT_HALL_CURRENT_RANKS_GRASS_ELECTRIC_DOUBLE,
STAT_HALL_CURRENT_RANKS_PSYCHIC_ICE_DOUBLE,
STAT_HALL_CURRENT_RANKS_DRAGON_DARK_DOUBLE,
STAT_HALL_CURRENT_STREAK_MULTI,
STAT_HALL_LATEST_STREAK_MULTI,
STAT_HALL_LATEST_SPECIES_MULTI,
STAT_HALL_UNK_61,
STAT_HALL_UNK_62,
STAT_HALL_UNK_63,
STAT_HALL_UNK_64,
STAT_HALL_UNK_65,
STAT_HALL_UNK_66,
STAT_HALL_UNK_67,
STAT_HALL_UNK_68,
STAT_HALL_UNK_69,
STAT_HALL_CURRENT_RANKS_NORMAL_FIGHTING_MULTI,
STAT_HALL_CURRENT_RANKS_FLYING_POISON_MULTI,
STAT_HALL_CURRENT_RANKS_GROUND_ROCK_MULTI,
STAT_HALL_CURRENT_RANKS_BUG_GHOST_MULTI,
STAT_HALL_CURRENT_RANKS_STEEL_MYSTERY_MULTI,
STAT_HALL_CURRENT_RANKS_FIRE_WATER_MULTI,
STAT_HALL_CURRENT_RANKS_GRASS_ELECTRIC_MULTI,
STAT_HALL_CURRENT_RANKS_PSYCHIC_ICE_MULTI,
STAT_HALL_CURRENT_RANKS_DRAGON_DARK_MULTI,
STAT_CASTLE_RECORD_STREAK_SINGLE,
STAT_CASTLE_LATEST_STREAK_SINGLE,
STAT_CASTLE_LATEST_CP_SINGLE,
@@ -132,18 +132,18 @@ enum BattleFrontierStatsIndex {
STAT_FACTORY_LATEST_STREAK_OPEN_MULTI_WFC,
STAT_FACTORY_RECORD_TRADE_COUNT_OPEN_MULTI_WFC,
STAT_FACTORY_LATEST_TRADE_COUNT_OPEN_MULTI_WFC,
STAT_HALL_UNK_122,
STAT_HALL_CURRENT_STREAK_MULTI_WFC,
STAT_HALL_LATEST_STREAK_MULTI_WFC,
STAT_HALL_LATEST_SPECIES_MULTI_WFC,
STAT_HALL_UNK_125,
STAT_HALL_UNK_126,
STAT_HALL_UNK_127,
STAT_HALL_UNK_128,
STAT_HALL_UNK_129,
STAT_HALL_UNK_130,
STAT_HALL_UNK_131,
STAT_HALL_UNK_132,
STAT_HALL_UNK_133,
STAT_HALL_CURRENT_RANKS_NORMAL_FIGHTING_MULTI_WFC,
STAT_HALL_CURRENT_RANKS_FLYING_POISON_MULTI_WFC,
STAT_HALL_CURRENT_RANKS_GROUND_ROCK_MULTI_WFC,
STAT_HALL_CURRENT_RANKS_BUG_GHOST_MULTI_WFC,
STAT_HALL_CURRENT_RANKS_STEEL_MYSTERY_MULTI_WFC,
STAT_HALL_CURRENT_RANKS_FIRE_WATER_MULTI_WFC,
STAT_HALL_CURRENT_RANKS_GRASS_ELECTRIC_MULTI_WFC,
STAT_HALL_CURRENT_RANKS_PSYCHIC_ICE_MULTI_WFC,
STAT_HALL_CURRENT_RANKS_DRAGON_DARK_MULTI_WFC,
STAT_CASTLE_RECORD_STREAK_MULTI_WFC,
STAT_CASTLE_LATEST_STREAK_MULTI_WFC,
STAT_CASTLE_LATEST_CP_MULTI_WFC,

View File

@@ -12,7 +12,7 @@ enum BattleHallFunction {
BH_FUNC_RESET_SYSTEM,
BH_FUNC_UNK_8,
BH_FUNC_UNK_9,
BH_FUNC_UNK_10,
BH_FUNC_QUICKSAVE,
BH_FUNC_UNK_11,
BH_FUNC_UNK_12,
BH_FUNC_UNK_13,
@@ -29,7 +29,7 @@ enum BattleHallFunction {
BH_FUNC_UNK_24,
BH_FUNC_UNK_25,
BH_FUNC_UNK_26,
BH_FUNC_UPDATE_HELD_ITEMS,
BH_FUNC_RESTORE_HELD_ITEMS,
BH_FUNC_UNK_28,
BH_FUNC_UNK_29,
BH_FUNC_IS_MULTIPLAYER_CHALLENGE,

View File

@@ -33,7 +33,7 @@ enum FieldEffectRendererType {
FIELD_EFFECT_RENDERER_BERRY_PATCH_EFFECT_COUNTER,
FIELD_EFFECT_RENDERER_1D,
FIELD_EFFECT_RENDERER_1E,
FIELD_EFFECT_RENDERER_1F,
FIELD_EFFECT_RENDERER_VEILSTONE_GYM_OBJECTS,
FIELD_EFFECT_RENDERER_20,
FIELD_EFFECT_RENDERER_DISTORTION_WORLD_SURF_MOUNT,
FIELD_EFFECT_RENDERER_COUNT,

View File

@@ -97,7 +97,7 @@ enum TileBehavior {
TILE_BEHAVIOR_PASTORIA_GYM_H_GROUND,
TILE_BEHAVIOR_PASTORIA_GYM_M_GROUND,
TILE_BEHAVIOR_PASTORIA_GYM_L_GROUND,
TILE_BEHAVIOR_PASTORIA_GYM_WATER,
TILE_BEHAVIOR_DYNAMIC_HEIGHT_COLLISION,
TILE_BEHAVIOR_JUMP_NORTH_TWICE,
TILE_BEHAVIOR_JUMP_SOUTH_TWICE,
TILE_BEHAVIOR_JUMP_WEST_TWICE,

View File

@@ -4,9 +4,27 @@
#include "generated/player_transitions.h";
// Player State
#define PLAYER_STATE_WALKING 0
#define PLAYER_STATE_CYCLING 1
#define PLAYER_STATE_SURFING 2
enum PlayerAvatarState {
PLAYER_AVATAR_WALKING = 0,
PLAYER_AVATAR_CYCLING,
PLAYER_AVATAR_SURFING,
PLAYER_AVATAR_USE_FIELD_MOVE = 16,
PLAYER_AVATAR_SPRAYDUCK,
PLAYER_AVATAR_CONTEST,
PLAYER_AVATAR_FISHING,
PLAYER_AVATAR_POKETCH,
PLAYER_AVATAR_SAVE,
PLAYER_AVATAR_HEAL,
PLAYER_AVATAR_VS_SEEKER,
PLAYER_AVATAR_DISTORTION_WORLD,
PLAYER_AVATAR_DISTORTION_WORLD_SURF,
PLAYER_AVATAR_26,
PLAYER_AVATAR_27,
PLAYER_AVATAR_HEARTHOME_GYM,
PLAYER_AVATAR_29,
PLAYER_AVATAR_30,
};
#define PLAYER_EVENT_NONE 0
#define PLAYER_EVENT_USED_STRENGTH (1 << 0)
@@ -36,4 +54,14 @@ enum AvatarDistortionState {
AVATAR_DISTORTION_STATE_MAX,
};
enum PlayerMovementActionSpeed {
PLAYER_ACTION_SPEED_NONE,
PLAYER_ACTION_SPEED_NOT_MOVING,
PLAYER_ACTION_SPEED_SLOWER,
PLAYER_ACTION_SPEED_SLOW,
PLAYER_ACTION_SPEED_NORMAL,
PLAYER_ACTION_SPEED_FAST,
PLAYER_ACTION_SPEED_FASTER
};
#endif // POKEPLATINUM_CONSTANTS_PLAYER_AVATAR_H

View File

@@ -43,7 +43,7 @@ enum SaveTableEntryID {
SAVE_TABLE_ENTRY_MYSTERY_GIFT,
SAVE_TABLE_ENTRY_PAL_PARK_TRANSFER,
SAVE_TABLE_ENTRY_LINK_CONTEST_RECORDS,
SAVE_TABLE_ENTRY_SENTENCE,
SAVE_TABLE_ENTRY_UNLOCKED_EASY_CHAT_WORDS,
SAVE_TABLE_ENTRY_EMAIL,
SAVE_TABLE_ENTRY_WIFI_QUESTIONS,
SAVE_TABLE_ENTRY_PC_BOXES,

View File

@@ -25,4 +25,8 @@
#define SAFARI_GAME_ACTIVE 0
#define SAFARI_GAME_INACTIVE 1
#define FIELD_MOVE_FUNC_CLEAR_ACTIVE 0
#define FIELD_MOVE_FUNC_SET_ACTIVE 1
#define FIELD_MOVE_FUNC_CHECK_ACTIVE 2
#endif // POKEPLATINUM_CONSTANTS_SCRCMD_H

View File

@@ -8,4 +8,11 @@
#define UNION_GROUP_NAME_LEN 7
#define BOX_NAME_LEN 8
// Control codes for how to pad numeric strings.
enum PaddingMode {
PADDING_MODE_NONE = 0, // Do not pad the string. Effectively left-justification.
PADDING_MODE_SPACES, // Right-justify the string, padding with spaces.
PADDING_MODE_ZEROES, // Right-justify the string, padding with zeroes.
};
#endif

View File

@@ -36,13 +36,18 @@
#define TV_PROGRAM_TYPE_VARIETY_HOUR_NUM_SEGMENTS 8
// Interview Segments
#define TV_PROGRAM_SEGMENT_INTERVIEW_UNUSED_01 1
#define TV_PROGRAM_SEGMENT_BATTLE_TOWER_CORNER 2
#define TV_PROGRAM_SEGMENT_INTERVIEW_UNUSED_03 3
#define TV_PROGRAM_SEGMENT_YOUR_POKEMON_CORNER 4
#define TV_PROGRAM_SEGMENT_INTERVIEW_UNUSED_05 5
#define TV_PROGRAM_SEGMENT_THE_POKETCH_WATCH 6
#define TV_PROGRAM_SEGMENT_CONTEST_HALL 7
#define TV_PROGRAM_SEGMENT_INTERVIEW_UNUSED_08 8
#define TV_PROGRAM_SEGMENT_RIGHT_ON_PHOTO_CORNER 9
#define TV_PROGRAM_SEGMENT_STREET_CORNER_PERSONALITY_CHECKUP 10
#define TV_PROGRAM_SEGMENT_THREE_CHEERS_FOR_POFFIN_CORNER 11
#define TV_PROGRAM_SEGMENT_INTERVIEW_UNUSED_12 12
#define TV_PROGRAM_SEGMENT_AMITY_SQUARE_WATCH 13
#define TV_PROGRAM_SEGMENT_BATTLE_FRONTIER_FRONTLINE_NEWS_SINGLE 14
#define TV_PROGRAM_SEGMENT_IN_YOUR_FACE_INTERVIEW_QUESTION_1 15

View File

@@ -0,0 +1,9 @@
#ifndef POKEPLATIUM_CONSTANTS_VS_SEEKER_H
#define POKEPLATIUM_CONSTANTS_VS_SEEKER_H
#define VS_SEEKER_USE_RESULT_OK 0
#define VS_SEEKER_USE_RESULT_NO_BATTERY 1
#define VS_SEEKER_USE_RESULT_NO_TRAINERS 2
#define VS_SEEKER_USE_RESULT_NO_TRAINERS_PICKED 3 // No trainers were picked for a rematch (e.g. all the random chances failed)
#endif // POKEPLATIUM_CONSTANTS_VS_SEEKER_H

View File

@@ -141,17 +141,17 @@ static const MapHeader sMapHeaders[] = {
.isEscapeRopeAllowed = FALSE,
.isFlyAllowed = FALSE,
},
[MAP_HEADER_JUBILIFE_CITY_UNKNOWN_HOUSE_1] = {
[MAP_HEADER_UNUSED_JUBILIFE_CITY_HOUSE_1] = {
.areaDataArchiveID = area_data_020,
.unk_01 = 0x14,
.mapMatrixID = map_matrix_123,
.scriptsArchiveID = scripts_jubilife_city_unknown_house_1,
.initScriptsArchiveID = scripts_init_jubilife_city_unknown_house_1,
.msgArchiveID = TEXT_BANK_JUBILIFE_CITY_UNKNOWN_HOUSE_1,
.scriptsArchiveID = scripts_unused_jubilife_city_house_1,
.initScriptsArchiveID = scripts_init_unused_jubilife_city_house_1,
.msgArchiveID = TEXT_BANK_UNUSED_JUBILIFE_CITY_HOUSE_1,
.dayMusicID = SEQ_GYM,
.nightMusicID = SEQ_GYM,
.wildEncountersArchiveID = ENCOUNTERS_NONE,
.eventsArchiveID = events_jubilife_city_unknown_house_1,
.eventsArchiveID = events_unused_jubilife_city_house_1,
.mapLabelTextID = LocationNames_Text_JubilifeCity,
.mapLabelWindowID = MAP_LABEL_WINDOW_WATER,
.weather = OVERWORLD_WEATHER_CLEAR,
@@ -537,17 +537,17 @@ static const MapHeader sMapHeaders[] = {
.isEscapeRopeAllowed = FALSE,
.isFlyAllowed = FALSE,
},
[MAP_HEADER_JUBILIFE_CITY_UNKNOWN_HOUSE_2] = {
[MAP_HEADER_UNUSED_JUBILIFE_CITY_HOUSE_2] = {
.areaDataArchiveID = area_data_020,
.unk_01 = 0x14,
.mapMatrixID = map_matrix_125,
.scriptsArchiveID = scripts_jubilife_city_unknown_house_2,
.initScriptsArchiveID = scripts_init_jubilife_city_unknown_house_2,
.msgArchiveID = TEXT_BANK_JUBILIFE_CITY_UNKNOWN_HOUSE_2,
.scriptsArchiveID = scripts_unused_jubilife_city_house_2,
.initScriptsArchiveID = scripts_init_unused_jubilife_city_house_2,
.msgArchiveID = TEXT_BANK_UNUSED_JUBILIFE_CITY_HOUSE_2,
.dayMusicID = SEQ_DUMMY,
.nightMusicID = SEQ_DUMMY,
.wildEncountersArchiveID = ENCOUNTERS_NONE,
.eventsArchiveID = events_jubilife_city_unknown_house_2,
.eventsArchiveID = events_unused_jubilife_city_house_2,
.mapLabelTextID = LocationNames_Text_JubilifeCity,
.mapLabelWindowID = MAP_LABEL_WINDOW_WATER,
.weather = OVERWORLD_WEATHER_CLEAR,
@@ -713,17 +713,17 @@ static const MapHeader sMapHeaders[] = {
.isEscapeRopeAllowed = FALSE,
.isFlyAllowed = FALSE,
},
[MAP_HEADER_JUBILIFE_CITY_UNKNOWN_HOUSE_3] = {
[MAP_HEADER_UNUSED_JUBILIFE_CITY_HOUSE_3] = {
.areaDataArchiveID = area_data_020,
.unk_01 = 0x14,
.mapMatrixID = map_matrix_125,
.scriptsArchiveID = scripts_jubilife_city_unknown_house_3,
.initScriptsArchiveID = scripts_init_jubilife_city_unknown_house_3,
.msgArchiveID = TEXT_BANK_JUBILIFE_CITY_UNKNOWN_HOUSE_3,
.scriptsArchiveID = scripts_unused_jubilife_city_house_3,
.initScriptsArchiveID = scripts_init_unused_jubilife_city_house_3,
.msgArchiveID = TEXT_BANK_UNUSED_JUBILIFE_CITY_HOUSE_3,
.dayMusicID = SEQ_DUMMY,
.nightMusicID = SEQ_DUMMY,
.wildEncountersArchiveID = ENCOUNTERS_NONE,
.eventsArchiveID = events_jubilife_city_unknown_house_3,
.eventsArchiveID = events_unused_jubilife_city_house_3,
.mapLabelTextID = LocationNames_Text_JubilifeCity,
.mapLabelWindowID = MAP_LABEL_WINDOW_WATER,
.weather = OVERWORLD_WEATHER_CLEAR,
@@ -735,17 +735,17 @@ static const MapHeader sMapHeaders[] = {
.isEscapeRopeAllowed = FALSE,
.isFlyAllowed = FALSE,
},
[MAP_HEADER_JUBILIFE_CITY_UNKNOWN_HOUSE_4] = {
[MAP_HEADER_UNUSED_JUBILIFE_CITY_HOUSE_4] = {
.areaDataArchiveID = area_data_020,
.unk_01 = 0x14,
.mapMatrixID = map_matrix_125,
.scriptsArchiveID = scripts_jubilife_city_unknown_house_4,
.initScriptsArchiveID = scripts_init_jubilife_city_unknown_house_4,
.msgArchiveID = TEXT_BANK_JUBILIFE_CITY_UNKNOWN_HOUSE_4,
.scriptsArchiveID = scripts_unused_jubilife_city_house_4,
.initScriptsArchiveID = scripts_init_unused_jubilife_city_house_4,
.msgArchiveID = TEXT_BANK_UNUSED_JUBILIFE_CITY_HOUSE_4,
.dayMusicID = SEQ_DUMMY,
.nightMusicID = SEQ_DUMMY,
.wildEncountersArchiveID = ENCOUNTERS_NONE,
.eventsArchiveID = events_jubilife_city_unknown_house_4,
.eventsArchiveID = events_unused_jubilife_city_house_4,
.mapLabelTextID = LocationNames_Text_JubilifeCity,
.mapLabelWindowID = MAP_LABEL_WINDOW_WATER,
.weather = OVERWORLD_WEATHER_CLEAR,
@@ -1901,7 +1901,7 @@ static const MapHeader sMapHeaders[] = {
.isEscapeRopeAllowed = FALSE,
.isFlyAllowed = FALSE,
},
[MAP_HEADER_ETERNA_CITY_UNKNOWN_HOUSE] = {
[MAP_HEADER_UNUSED_ETERNA_CITY_HOUSE] = {
.areaDataArchiveID = area_data_020,
.unk_01 = 0x14,
.mapMatrixID = map_matrix_123,
@@ -1911,7 +1911,7 @@ static const MapHeader sMapHeaders[] = {
.dayMusicID = SEQ_DUMMY,
.nightMusicID = SEQ_DUMMY,
.wildEncountersArchiveID = ENCOUNTERS_NONE,
.eventsArchiveID = events_eterna_city_unknown_house,
.eventsArchiveID = events_unused_eterna_city_house,
.mapLabelTextID = LocationNames_Text_EternaCity,
.mapLabelWindowID = MAP_LABEL_WINDOW_WATER,
.weather = OVERWORLD_WEATHER_CLEAR,
@@ -3573,17 +3573,17 @@ static const MapHeader sMapHeaders[] = {
.isEscapeRopeAllowed = FALSE,
.isFlyAllowed = FALSE,
},
[MAP_HEADER_SUNYSHORE_CITY_UNKNOWN_HOUSE_1] = {
[MAP_HEADER_UNUSED_SUNYSHORE_CITY_HOUSE_1] = {
.areaDataArchiveID = area_data_020,
.unk_01 = 0xF,
.mapMatrixID = map_matrix_243,
.scriptsArchiveID = scripts_sunyshore_city_unknown_house_1,
.initScriptsArchiveID = scripts_init_sunyshore_city_unknown_house_1,
.msgArchiveID = TEXT_BANK_SUNYSHORE_CITY_UNKNOWN_HOUSE_1,
.scriptsArchiveID = scripts_unused_sunyshore_city_house_1,
.initScriptsArchiveID = scripts_init_unused_sunyshore_city_house_1,
.msgArchiveID = TEXT_BANK_UNUSED_SUNYSHORE_CITY_HOUSE_1,
.dayMusicID = SEQ_CITY08_D,
.nightMusicID = SEQ_CITY08_N,
.wildEncountersArchiveID = ENCOUNTERS_NONE,
.eventsArchiveID = events_sunyshore_city_unknown_house_1,
.eventsArchiveID = events_unused_sunyshore_city_house_1,
.mapLabelTextID = LocationNames_Text_SunyshoreCity,
.mapLabelWindowID = MAP_LABEL_WINDOW_WATER,
.weather = OVERWORLD_WEATHER_CLEAR,
@@ -3595,17 +3595,17 @@ static const MapHeader sMapHeaders[] = {
.isEscapeRopeAllowed = FALSE,
.isFlyAllowed = FALSE,
},
[MAP_HEADER_SUNYSHORE_CITY_UNKNOWN_HOUSE_2] = {
[MAP_HEADER_UNUSED_SUNYSHORE_CITY_HOUSE_2] = {
.areaDataArchiveID = area_data_020,
.unk_01 = 0xF,
.mapMatrixID = map_matrix_243,
.scriptsArchiveID = scripts_sunyshore_city_unknown_house_2,
.initScriptsArchiveID = scripts_init_sunyshore_city_unknown_house_2,
.msgArchiveID = TEXT_BANK_SUNYSHORE_CITY_UNKNOWN_HOUSE_2,
.scriptsArchiveID = scripts_unused_sunyshore_city_house_2,
.initScriptsArchiveID = scripts_init_unused_sunyshore_city_house_2,
.msgArchiveID = TEXT_BANK_UNUSED_SUNYSHORE_CITY_HOUSE_2,
.dayMusicID = SEQ_CITY08_D,
.nightMusicID = SEQ_CITY08_N,
.wildEncountersArchiveID = ENCOUNTERS_NONE,
.eventsArchiveID = events_sunyshore_city_unknown_house_2,
.eventsArchiveID = events_unused_sunyshore_city_house_2,
.mapLabelTextID = LocationNames_Text_SunyshoreCity,
.mapLabelWindowID = MAP_LABEL_WINDOW_WATER,
.weather = OVERWORLD_WEATHER_CLEAR,
@@ -4343,7 +4343,7 @@ static const MapHeader sMapHeaders[] = {
.isEscapeRopeAllowed = FALSE,
.isFlyAllowed = FALSE,
},
[MAP_HEADER_FIGHT_AREA_UNKNOWN_HOUSE] = {
[MAP_HEADER_UNUSED_FIGHT_AREA_HOUSE] = {
.areaDataArchiveID = area_data_020,
.unk_01 = 0xF,
.mapMatrixID = map_matrix_123,
@@ -7401,17 +7401,17 @@ static const MapHeader sMapHeaders[] = {
.isEscapeRopeAllowed = FALSE,
.isFlyAllowed = TRUE,
},
[MAP_HEADER_VERITY_LAKEFRONT_UNKNOWN_HOUSE] = {
[MAP_HEADER_UNUSED_VERITY_LAKEFRONT_HOUSE] = {
.areaDataArchiveID = area_data_020,
.unk_01 = 0x14,
.mapMatrixID = map_matrix_123,
.scriptsArchiveID = scripts_verity_lakefront_unknown_house,
.initScriptsArchiveID = scripts_init_verity_lakefront_unknown_house,
.msgArchiveID = TEXT_BANK_VERITY_LAKEFRONT_UNKNOWN_HOUSE,
.scriptsArchiveID = scripts_unused_verity_lakefront_house,
.initScriptsArchiveID = scripts_init_unused_verity_lakefront_house,
.msgArchiveID = TEXT_BANK_UNUSED_VERITY_LAKEFRONT_HOUSE,
.dayMusicID = SEQ_ROAD_A_D,
.nightMusicID = SEQ_ROAD_A_N,
.wildEncountersArchiveID = ENCOUNTERS_NONE,
.eventsArchiveID = events_verity_lakefront_unknown_house,
.eventsArchiveID = events_unused_verity_lakefront_house,
.mapLabelTextID = LocationNames_Text_VerityLakefront,
.mapLabelWindowID = MAP_LABEL_WINDOW_WATER,
.weather = OVERWORLD_WEATHER_CLEAR,

View File

@@ -66,8 +66,8 @@ ScriptCommand(FRSCRCMD_HEALPARTY, FrontierScrCmd_HealPart
ScriptCommand(FRSCRCMD_WAITABPRESS, FrontierScrCmd_WaitABPress)
ScriptCommand(FRSCRCMD_WAITABPRESSTIME, FrontierScrCmd_WaitABPressTime)
ScriptCommand(FRSCRCMD_DUMMY3C, FrontierScrCmd_Dummy3C)
ScriptCommand(FRSCRCMD_3D, FrontierScrCmd_3D)
ScriptCommand(FRSCRCMD_3E, FrontierScrCmd_3E)
ScriptCommand(FRSCRCMD_SETSYSTEMVAR, FrontierScrCmd_SetSystemVar)
ScriptCommand(FRSCRCMD_GETSYSTEMVAR, FrontierScrCmd_GetSystemVar)
ScriptCommand(FRSCRCMD_3F, FrontierScrCmd_3F)
ScriptCommand(FRSCRCMD_GETPLAYEROBJEVENTGFX, FrontierScrCmd_GetPlayerObjEventGfx)
ScriptCommand(FRSCRCMD_INITPARTICLESYSTEM, FrontierScrCmd_InitParticleSystem)
@@ -144,9 +144,9 @@ ScriptCommand(FRSCRCMD_BATTLETOWER_STARTBATTLE, FrontierScrCmd_BattleTo
ScriptCommand(FRSCRCMD_BATTLETOWER_CHECKWONBATTLE, FrontierScrCmd_BattleTower_CheckWonBattle)
ScriptCommand(FRSCRCMD_89, FrontierScrCmd_89)
ScriptCommand(FRSCRCMD_8A, FrontierScrCmd_8A)
ScriptCommand(FRSCRCMD_8B, FrontierScrCmd_8B)
ScriptCommand(FRSCRCMD_INITBATTLEHALL, FrontierScrCmd_InitBattleHall)
ScriptCommand(FRSCRCMD_8C, FrontierScrCmd_8C)
ScriptCommand(FRSCRCMD_8D, FrontierScrCmd_8D)
ScriptCommand(FRSCRCMD_FREEBATTLEHALL, FrontierScrCmd_FreeBattleHall)
ScriptCommand(FRSCRCMD_OPENBATTLEHALLAPP, FrontierScrCmd_OpenBattleHallApp)
ScriptCommand(FRSCRCMD_BATTLEHALL_CLEANUPBATTLE, FrontierScrCmd_BattleHall_CleanupBattle)
ScriptCommand(FRSCRCMD_BATTLEHALL_STARTBATTLE, FrontierScrCmd_BattleHall_StartBattle)

View File

@@ -202,7 +202,7 @@ ScriptCommand(SCRCMD_USEWATERFALL, ScrCm
ScriptCommand(SCRCMD_USEFLY, ScrCmd_UseFly)
ScriptCommand(SCRCMD_0C3, ScrCmd_0C3)
ScriptCommand(SCRCMD_0C4, ScrCmd_0C4)
ScriptCommand(SCRCMD_0C5, ScrCmd_0C5)
ScriptCommand(SCRCMD_PLAYHMCUTIN, ScrCmd_PlayHMCutIn)
ScriptCommand(SCRCMD_CHANGEINTOCONTESTATTIRE, ScrCmd_ChangeIntoContestAttire)
ScriptCommand(SCRCMD_CHECKPLAYERONBIKE, ScrCmd_CheckPlayerOnBike)
ScriptCommand(SCRCMD_SETPLAYERBIKE, ScrCmd_SetPlayerBike)
@@ -468,9 +468,9 @@ ScriptCommand(SCRCMD_BUFFERPARTYMOVENAME, ScrCm
ScriptCommand(SCRCMD_GIVEJOURNAL, ScrCmd_GiveJournal)
ScriptCommand(SCRCMD_CREATEJOURNALEVENT, ScrCmd_CreateJournalEvent)
ScriptCommand(SCRCMD_UNUSED_1CE, ScrCmd_Unused_1CE)
ScriptCommand(SCRCMD_STRENGTH, ScrCmd_Strength)
ScriptCommand(SCRCMD_FLASH, ScrCmd_Flash)
ScriptCommand(SCRCMD_DEFOG, ScrCmd_Defog)
ScriptCommand(SCRCMD_DOSTRENGTHFUNC, ScrCmd_DoStrengthFunc)
ScriptCommand(SCRCMD_DOFLASHFUNC, ScrCmd_DoFlashFunc)
ScriptCommand(SCRCMD_DODEFOGFUNC, ScrCmd_DoDefogFunc)
ScriptCommand(SCRCMD_ADDACCESSORY, ScrCmd_AddAccessory)
ScriptCommand(SCRCMD_CANFITACCESSORY, ScrCmd_CanFitAccessory)
ScriptCommand(SCRCMD_UNUSED_1D4, ScrCmd_Unused_1D4)
@@ -520,14 +520,14 @@ ScriptCommand(SCRCMD_MESSAGESEENBANLISTSPECIES, ScrCm
ScriptCommand(SCRCMD_GETPREVIOUSMAPID, ScrCmd_GetPreviousMapID)
ScriptCommand(SCRCMD_GETCURRENTMAPID, ScrCmd_GetCurrentMapID)
ScriptCommand(SCRCMD_STARTENDSAFARIGAME, ScrCmd_StartEndSafariGame)
ScriptCommand(SCRCMD_203, ScrCmd_203)
ScriptCommand(SCRCMD_WARPTOCOLOSSEUM, ScrCmd_WarpToColosseum)
ScriptCommand(SCRCMD_204, ScrCmd_204)
ScriptCommand(SCRCMD_205, ScrCmd_205)
ScriptCommand(SCRCMD_STARTGREATMARSHLOOKOUT, ScrCmd_StartGreatMarshLookout)
ScriptCommand(SCRCMD_GETCURNETID, ScrCmd_GetCurNetID)
ScriptCommand(SCRCMD_DRAWPOKEMONPREVIEW, ScrCmd_DrawPokemonPreview)
ScriptCommand(SCRCMD_REMOVEPOKEMONPREVIEW, ScrCmd_RemovePokemonPreview)
ScriptCommand(SCRCMD_20A, ScrCmd_20A)
ScriptCommand(SCRCMD_STARTVSSEEKER, ScrCmd_StartVsSeeker)
ScriptCommand(SCRCMD_SETMOVECODEFORFACINGDIRECTION, ScrCmd_SetMoveCodeForFacingDirection)
ScriptCommand(SCRCMD_MESSAGEFROMTRAINERTYPE, ScrCmd_MessageFromTrainerType)
ScriptCommand(SCRCMD_20D, ScrCmd_20D)
@@ -574,7 +574,7 @@ ScriptCommand(SCRCMD_CALLTVBROADCAST, ScrCm
ScriptCommand(SCRCMD_SAVETVSEGMENTHIDDENITEM, ScrCmd_SaveTVSegmentHiddenItem)
ScriptCommand(SCRCMD_CALLTVINTERVIEW, ScrCmd_CallTVInterview)
ScriptCommand(SCRCMD_CHECKTVINTERVIEWELIGIBLE, ScrCmd_CheckTVInterviewEligible)
ScriptCommand(SCRCMD_239, ScrCmd_239)
ScriptCommand(SCRCMD_OPENBATTLEREGULATIONMENU, ScrCmd_OpenBattleRegulationMenu)
ScriptCommand(SCRCMD_GETPARTYMONFOOTPRINTTYPE, ScrCmd_GetPartyMonFootprintType)
ScriptCommand(SCRCMD_PLAYPOKECENTERHEALINGANIMATION, ScrCmd_PlayPokecenterHealingAnimation)
ScriptCommand(SCRCMD_PLAYELEVATORANIMATION, ScrCmd_PlayElevatorAnimation)
@@ -642,9 +642,9 @@ ScriptCommand(SCRCMD_REMOVEACCESSORY, ScrCm
ScriptCommand(SCRCMD_USEVISTALIGHTHOUSEBINOCULARS, ScrCmd_UseVistaLighthouseBinoculars)
ScriptCommand(SCRCMD_INITDAILYRANDOMLEVEL, ScrCmd_InitDailyRandomLevel)
ScriptCommand(SCRCMD_27C, ScrCmd_27C)
ScriptCommand(SCRCMD_27D, ScrCmd_27D)
ScriptCommand(SCRCMD_TRYBUFFERANDUNLOCKRANDOMTOUGHWORD, ScrCmd_TryBufferAndUnlockRandomToughWord)
ScriptCommand(SCRCMD_CHECKISDEPARTMENTSTOREREGULAR, ScrCmd_CheckIsDepartmentStoreRegular)
ScriptCommand(SCRCMD_27F, ScrCmd_27F)
ScriptCommand(SCRCMD_CHECKALLTOUGHWORDSUNLOCKED, ScrCmd_CheckAllToughWordsUnlocked)
ScriptCommand(SCRCMD_BUFFERVARPADDINGDIGITS, ScrCmd_BufferVarPaddingDigits)
ScriptCommand(SCRCMD_GETPARTYMONCONTESTSTAT, ScrCmd_GetPartyMonContestStat)
ScriptCommand(SCRCMD_CHECKISTODAYPLAYERBIRTHDAY, ScrCmd_CheckIsTodayPlayerBirthday)
@@ -675,13 +675,13 @@ ScriptCommand(SCRCMD_CHECKBATTLEPOINTS, ScrCm
ScriptCommand(SCRCMD_GetExchangeServiceCornerItemAndCost, ScrCmd_GetExchangeServiceCornerItemAndCost)
ScriptCommand(SCRCMD_CALCULATETRAINERINFOAPPEARANCE, ScrCmd_CalculateTrainerInfoAppearance)
ScriptCommand(SCRCMD_ADDMENUENTRY, ScrCmd_AddMenuEntry)
ScriptCommand(SCRCMD_29E, ScrCmd_29E)
ScriptCommand(SCRCMD_STARTDESTROYOBSTACLEANIMATION, ScrCmd_StartDestroyObstacleAnimation)
ScriptCommand(SCRCMD_29F, ScrCmd_29F)
ScriptCommand(SCRCMD_STARTTAGBATTLE, ScrCmd_StartTagBattle)
ScriptCommand(SCRCMD_UNUSED_2A1, ScrCmd_Unused_2A1)
ScriptCommand(SCRCMD_TRYSETUNUSEDCOLLECTEDORBFLAG, ScrCmd_TrySetUnusedCollectedOrbFlag)
ScriptCommand(SCRCMD_2A3, ScrCmd_2A3)
ScriptCommand(SCRCMD_2A4, ScrCmd_2A4)
ScriptCommand(SCRCMD_CHECKHASWIFILISTVALIDLOGIN, ScrCmd_CheckHasWiFiListValidLogin)
ScriptCommand(SCRCMD_GETWIFLISTVALIDFRIENDSCOUNT, ScrCmd_GetWiFListValidFriendsCount)
ScriptCommand(SCRCMD_OPENPARTYMENUFORTRADE, ScrCmd_OpenPartyMenuForTrade)
ScriptCommand(SCRCMD_GETGAMECORNERPRIZEDATA, ScrCmd_GetGameCornerPrizeData)
ScriptCommand(SCRCMD_CHECKITEMISPLATE, ScrCmd_CheckItemIsPlate)
@@ -802,13 +802,13 @@ ScriptCommand(SCRCMD_STARTGIRATINAORIGINBATTLE, ScrCm
ScriptCommand(SCRCMD_SETSPECIESSEEN, ScrCmd_SetSpeciesSeen)
ScriptCommand(SCRCMD_GETCURRENTSAFARIGAMECAUGHTNUM, ScrCmd_GetCurrentSafariGameCaughtNum)
ScriptCommand(SCRCMD_FINDPARTYSLOTWITHFATEFULENCOUNTERSPECIES, ScrCmd_FindPartySlotWithFatefulEncounterSpecies)
ScriptCommand(SCRCMD_31D, ScrCmd_31D)
ScriptCommand(SCRCMD_TRYREVERTPARTYPOKEMONFORMS, ScrCmd_TryRevertPartyPokemonForms)
ScriptCommand(SCRCMD_TRYREVERTPOKEMONFORM, ScrCmd_TryRevertPokemonForm)
ScriptCommand(SCRCMD_RESETDISTORTIONWORLDPERSISTEDCAMERAANGLES, ScrCmd_ResetDistortionWorldPersistedCameraAngles)
ScriptCommand(SCRCMD_DODWWARP, ScrCmd_DoDWWarp)
ScriptCommand(SCRCMD_STARTDISTORTIONWORLDGIRATINASHADOWEVENT, ScrCmd_StartDistortionWorldGiratinaShadowEvent)
ScriptCommand(SCRCMD_FINISHDISTORTIONWORLDGIRATINASHADOWEVENT, ScrCmd_FinishDistortionWorldGiratinaShadowEvent)
ScriptCommand(SCRCMD_323, ScrCmd_323)
ScriptCommand(SCRCMD_CHECKNOWIFIPLAZACOOLDOWN, ScrCmd_CheckNoWiFiPlazaCooldown)
ScriptCommand(SCRCMD_GETBATTLEHALLRECORDKEEPERSTATS, ScrCmd_GetBattleHallRecordKeeperStats)
ScriptCommand(SCRCMD_GETNUMSPECIESWITHBATTLEHALLRECORDS, ScrCmd_GetNumSpeciesWithBattleHallRecords)
ScriptCommand(SCRCMD_GETBATTLEHALLTOTALSINGLESRECORD, ScrCmd_GetBattleHallTotalSinglesRecord)

View File

@@ -1,11 +1,10 @@
#ifndef POKEPLATINUM_EASY_CHAT_ARGS_H
#define POKEPLATINUM_EASY_CHAT_ARGS_H
#include "struct_decls/struct_02014EC4_decl.h"
#include "struct_defs/sentence.h"
#include "applications/easy_chat/defs.h"
#include "easy_chat_sentence.h"
#include "easy_chat_words.h"
#include "pokedex.h"
#include "savedata.h"
@@ -18,8 +17,8 @@ typedef struct EasyChatArgs {
u8 unk_05;
int frame;
const Pokedex *pokedex;
const UnkStruct_02014EC4 *unk_10;
Sentence sentence;
const UnlockedEasyChatWords *unlockedWords;
EasyChatSentence sentence;
u16 words[MAX_EASY_CHAT_WORDS];
u8 padding[4];
} EasyChatArgs;
@@ -28,23 +27,23 @@ EasyChatArgs *EasyChatArgs_New(u32 type, u32 param1, SaveData *saveData, enum He
void EasyChatArgs_Free(EasyChatArgs *args);
void EasyChatArgs_SetOneWord(EasyChatArgs *args, u16 word);
void EasyChatArgs_SetTwoWords(EasyChatArgs *args, u16 word1, u16 word2);
void EasyChatArgs_SetSentence(EasyChatArgs *args, const Sentence *sentence);
void EasyChatArgs_SetSentence(EasyChatArgs *args, const EasyChatSentence *sentence);
void EasyChatArgs_FlagAsUnmodified(EasyChatArgs *args);
void sub_02097520(EasyChatArgs *args);
BOOL EasyChatArgs_IsUnmodified(const EasyChatArgs *args);
BOOL EasyChatArgs_WasUpdated(const EasyChatArgs *args);
u16 EasyChatArgs_GetOneWord(const EasyChatArgs *args);
void EasyChatArgs_CopyTwoWordsTo(const EasyChatArgs *args, u16 *dest);
void EasyChatArgs_CopySentenceTo(const EasyChatArgs *args, Sentence *dest);
void EasyChatArgs_CopySentenceTo(const EasyChatArgs *args, EasyChatSentence *dest);
u32 EasyChatArgs_GetType(const EasyChatArgs *args);
u32 EasyChatArgs_GetInstructionBankEntry(const EasyChatArgs *args);
int EasyChatArgs_GetFrame(const EasyChatArgs *args);
const Pokedex *EasyChatArgs_GetPokedex(const EasyChatArgs *args);
const UnkStruct_02014EC4 *sub_02097560(const EasyChatArgs *args);
const UnlockedEasyChatWords *EasyChatArgs_GetUnlockedWords(const EasyChatArgs *args);
BOOL EasyChatArgs_IsGameCompleted(const EasyChatArgs *args);
BOOL sub_02097568(const EasyChatArgs *args);
void EasyChatArgs_GetContent(const EasyChatArgs *args, u16 *outWords, Sentence *outSentence);
BOOL EasyChatArgs_Compare(const EasyChatArgs *args, const u16 *words, const Sentence *sentence);
void EasyChatArgs_UpdateContent(EasyChatArgs *args, const u16 *param1, const Sentence *param2);
void EasyChatArgs_GetContent(const EasyChatArgs *args, u16 *outWords, EasyChatSentence *outSentence);
BOOL EasyChatArgs_Compare(const EasyChatArgs *args, const u16 *words, const EasyChatSentence *sentence);
void EasyChatArgs_UpdateContent(EasyChatArgs *args, const u16 *param1, const EasyChatSentence *param2);
#endif // POKEPLATINUM_EASY_CHAT_ARGS_H

View File

@@ -0,0 +1,46 @@
#ifndef POKEPLATINUM_EASY_CHAT_SENTENCE_H
#define POKEPLATINUM_EASY_CHAT_SENTENCE_H
#include "constants/heap.h"
#include "string_gf.h"
#define MAX_EASY_CHAT_SENTENCE_WORD_SLOTS 2
#define FRONTIER_EASY_CHAT_SENTENCE_TYPE_NO_1 3
typedef struct EasyChatSentence {
u16 type;
u16 id;
u16 words[MAX_EASY_CHAT_SENTENCE_WORD_SLOTS];
} EasyChatSentence;
enum EasyChatSentenceType {
EASY_CHAT_SENTENCE_TYPE_NONE = 0xFFFF,
EASY_CHAT_SENTENCE_TYPE_PRE_BATTLE = 0,
EASY_CHAT_SENTENCE_TYPE_WIN,
EASY_CHAT_SENTENCE_TYPE_LOSS,
EASY_CHAT_SENTENCE_TYPE_GENERAL,
EASY_CHAT_SENTENCE_TYPE_UNION_ROOM,
EASY_CHAT_SENTENCE_TYPE_COUNT,
};
void EasyChatSentence_Init(EasyChatSentence *sentence);
void EasyChatSentence_InitWithType(EasyChatSentence *sentence, u32 type);
void EasyChatSentence_InitWithEnteredUnionRoom(EasyChatSentence *sentence);
void EasyChatSentence_SetDefaultFrontierFields(EasyChatSentence *sentence, int type);
String *EasyChatSentence_ToString(const EasyChatSentence *sentence, enum HeapID heapID);
String *EasyChatSentence_GetTemplateString(const EasyChatSentence *sentence, enum HeapID heapID);
BOOL EasyChatSentence_IsValid(const EasyChatSentence *sentence);
BOOL EasyChatSentence_IsComplete(const EasyChatSentence *sentence);
u16 EasyChatSentence_GetWord(const EasyChatSentence *sentence, int slot);
u32 EasyChatSentence_GetType(const EasyChatSentence *sentence);
u32 EasyChatSentence_GetID(const EasyChatSentence *sentence);
BOOL EasyChatSentence_Compare(const EasyChatSentence *sentence1, const EasyChatSentence *sentence2);
void EasyChatSentence_Copy(EasyChatSentence *dest, const EasyChatSentence *src);
u32 EasyChatSentence_GetBankEntryCountForType(u32 type);
void EasyChatSentence_SetTypeAndID(EasyChatSentence *sentence, u32 type, u32 id);
void EasyChatSentence_SetWord(EasyChatSentence *sentence, u32 index, u16 word);
void EasyChatSentence_ClearUnusedWords(EasyChatSentence *sentence);
#endif // POKEPLATINUM_EASY_CHAT_SENTENCE_H

61
include/easy_chat_words.h Normal file
View File

@@ -0,0 +1,61 @@
#ifndef POKEPLATINUM_EASY_CHAT_WORDS_H
#define POKEPLATINUM_EASY_CHAT_WORDS_H
#include "message.h"
#include "savedata.h"
#include "string_gf.h"
#define WORD_NONE 0xFFFF
enum EasyChatWordTextBank {
EASY_CHAT_WORD_TEXT_BANK_SPECIES_NAME = 0,
EASY_CHAT_WORD_TEXT_BANK_MOVE_NAMES_UPPERCASE,
EASY_CHAT_WORD_TEXT_BANK_POKEMON_TYPE_NAMES,
EASY_CHAT_WORD_TEXT_BANK_ABILITY_NAMES_UPPERCASE,
EASY_CHAT_WORD_TEXT_BANK_TRAINER_WORDS,
EASY_CHAT_WORD_TEXT_BANK_PEOPLE_WORDS,
EASY_CHAT_WORD_TEXT_BANK_GREETINGS,
EASY_CHAT_WORD_TEXT_BANK_LIFESTYLE_WORDS,
EASY_CHAT_WORD_TEXT_BANK_FEELINGS,
EASY_CHAT_WORD_TEXT_BANK_TOUGH_WORDS,
EASY_CHAT_WORD_TEXT_BANK_UNION_WORDS,
EASY_CHAT_WORD_TEXT_BANK_COUNT,
};
typedef struct UnlockedEasyChatWords {
u32 unlockedGreetingBits;
u32 unlockedToughWordBits;
} UnlockedEasyChatWords;
typedef struct EasyChatWordLoader {
enum HeapID heapID;
MessageLoader *loaders[EASY_CHAT_WORD_TEXT_BANK_COUNT];
} EasyChatWordLoader;
typedef struct UnkStruct_02014FB0 {
u32 unk_00;
u32 *unk_04;
} UnkStruct_02014FB0;
EasyChatWordLoader *EasyChatWordLoader_New(enum HeapID heapID);
void EasyChatWordLoader_Free(EasyChatWordLoader *wordLoader);
void EasyChatWordLoader_GetString(EasyChatWordLoader *wordLoader, u16 word, String *out);
void EasyChatWord_ToString(u16 word, String *out);
u16 EasyChatWord_FromBankAndEntry(u32 bankID, u32 bankEntry);
BOOL EasyChatWord_GetLoaderIndexAndEntry(u16 word, u32 *outLoaderIndex, u32 *outBankEntry);
u32 UnlockedEasyChatWords_SaveSize(void);
void UnlockedEasyChatWords_Init(UnlockedEasyChatWords *unlockedWords);
UnlockedEasyChatWords *SaveData_GetUnlockedEasyChatWords(SaveData *saveData);
BOOL EasyChatWords_IsToughWordUnlocked(const UnlockedEasyChatWords *unlockedWords, u32 bankEntry);
u32 EasyChatWords_TryUnlockRandomToughWord(UnlockedEasyChatWords *unlockedWords);
BOOL EasyChatWords_AreAllToughWordsUnlocked(UnlockedEasyChatWords *unlockedWords);
u16 EasyChatWords_GetToughWordFromBankEntry(u32 bankEntry);
BOOL EasyChatWords_IsGreetingUnlocked(const UnlockedEasyChatWords *unlockedWords, int bankEntry);
void EasyChatWords_UnlockGreeting(UnlockedEasyChatWords *unlockedWords, int bankEntry);
UnkStruct_02014FB0 *sub_02014FB0(enum HeapID heapID);
void sub_02014FF0(UnkStruct_02014FB0 *param0);
u32 sub_02015004(const UnkStruct_02014FB0 *param0);
u16 sub_02015008(const UnkStruct_02014FB0 *param0, u32 param1);
s16 sub_02015030(const UnkStruct_02014FB0 *param0, u16 param1);
#endif // POKEPLATINUM_EASY_CHAT_WORDS_H

View File

@@ -3,9 +3,8 @@
#include "constants/string.h"
#include "struct_defs/sentence.h"
#include "charcode.h"
#include "easy_chat_sentence.h"
#include "savedata.h"
#define MAIL_TYPE_NONE 0xFFFF
@@ -47,7 +46,7 @@ typedef struct Mail {
charcode_t trainerName[TRAINER_NAME_LEN + 1];
MailIconData iconData[MAIL_MAX_ICONS];
u16 platExclusiveFormIcons;
Sentence sentences[MAIL_MAX_SENTENCES];
EasyChatSentence sentences[MAIL_MAX_SENTENCES];
} Mail;
typedef struct Mailbox {
@@ -68,8 +67,8 @@ u8 Mail_GetLanguage(const Mail *mail);
u8 Mail_GetGameVersion(const Mail *mail);
u16 Mail_GetIconData(const Mail *mail, u8 index, enum MailIconDataType type, u16 platExclusiveFormIcons);
u16 Mail_GetPlatExclusiveFormIcons(const Mail *mail);
Sentence *Mail_GetSentence(Mail *mail, u8 index);
void Mail_SetSentence(Mail *mail, Sentence *sentence, u8 index);
EasyChatSentence *Mail_GetSentence(Mail *mail, u8 index);
void Mail_SetSentence(Mail *mail, EasyChatSentence *sentence, u8 index);
Mailbox *SaveData_GetMailbox(SaveData *saveData);
int Mailbox_SaveSize(void);
void Mailbox_Init(Mailbox *mailbox);

View File

@@ -29,7 +29,7 @@ BOOL TileBehavior_IsTownMap(u8 behavior);
BOOL TileBehavior_IsPastoriaGymHighGround(u8 behavior);
BOOL TileBehavior_IsPastoriaGymMiddleGround(u8 behavior);
BOOL TileBehavior_IsPastoriaGymLowGround(u8 behavior);
BOOL TileBehavior_IsPastoriaGymWater(u8 behavior);
BOOL TileBehavior_HasDynamicHeightCollision(u8 behavior);
BOOL TileBehavior_IsEscalatorFlipFace(u8 behavior);
BOOL TileBehavior_IsEscalator(u8 behavior);
BOOL TileBehavior_IsWarpStairsEast(u8 behavior);

View File

@@ -1,20 +0,0 @@
#ifndef POKEPLATINUM_OV5_021F428C_H
#define POKEPLATINUM_OV5_021F428C_H
#include "field/field_system_decl.h"
#include "overlay005/field_effect_manager.h"
#include "overworld_anim_manager.h"
void *ov5_021F428C(FieldEffectManager *param0);
void ov5_021F42A8(void *param0);
void ov5_021F42D8(FieldEffectManager *param0, int param1, int param2);
OverworldAnimManager *ov5_021F4474(FieldSystem *fieldSystem, int param1, int param2, fx32 param3);
void ov5_021F44A4(OverworldAnimManager *param0);
BOOL ov5_021F453C(OverworldAnimManager *param0);
OverworldAnimManager *ov5_021F4668(FieldSystem *fieldSystem, int param1, int param2, fx32 param3);
void ov5_021F4698(OverworldAnimManager *param0, int param1, BOOL param2);
void ov5_021F4714(OverworldAnimManager *param0, fx32 param1);
BOOL ov5_021F4720(OverworldAnimManager *param0);
#endif // POKEPLATINUM_OV5_021F428C_H

View File

@@ -5,7 +5,7 @@
BOOL ScrCmd_ShowBattleHallRecordMonSelectionMenu(ScriptContext *ctx);
BOOL ScrCmd_JudgeStats(ScriptContext *ctx);
BOOL ScrCmd_31D(ScriptContext *param0);
BOOL ScrCmd_TryRevertPartyPokemonForms(ScriptContext *ctx);
BOOL ScrCmd_TryRevertPokemonForm(ScriptContext *param0);
BOOL ScrCmd_2F1(ScriptContext *param0);
BOOL ScrCmd_GetPartyRotomCountAndFirst(ScriptContext *ctx);

View File

@@ -0,0 +1,22 @@
#ifndef POKEPLATINUM_VEILSTONE_GYM_OBJECT_RENDERER_H
#define POKEPLATINUM_VEILSTONE_GYM_OBJECT_RENDERER_H
#include "field/field_system_decl.h"
#include "overlay005/field_effect_manager.h"
#include "overworld_anim_manager.h"
void *VeilstoneGymObjectRenderer_New(FieldEffectManager *fieldEffMan);
void VeilstoneGymObjectRenderer_Free(void *context);
void VeilstoneGymObjectRenderer_InitContext(FieldEffectManager *fieldEffMan, int numTireStacks, int numPunchingBags);
OverworldAnimManager *VeilstoneGymObjectRenderer_InitTireStackRenderer(FieldSystem *fieldSystem, int x, int z, fx32 yOffset);
void VeilstoneGymObjectRenderer_PlayToppleTireStackAnim(OverworldAnimManager *animManager);
BOOL VeilstoneGymObjectRenderer_IsTireStackAnimationFinished(OverworldAnimManager *animManager);
OverworldAnimManager *VeilstoneGymObjectRenderer_InitPunchingBagRenderer(FieldSystem *fieldSystem, int x, int z, fx32 yOffset);
void VeilstoneGymObjectRenderer_StartPunchingBagAnimation(OverworldAnimManager *animManager, int animId, BOOL isMoving);
void VeilstoneGymObjectRenderer_UpdateBagFrameDelta(OverworldAnimManager *animManager, fx32 frameDelta);
BOOL VeilstoneGymObjectRenderer_IsPunchingBagAnimFinished(OverworldAnimManager *animManager);
#endif // POKEPLATINUM_VEILSTONE_GYM_OBJECT_RENDERER_H

View File

@@ -0,0 +1,8 @@
#ifndef POKEPLATINUM_BATTLE_REGULATION_MENU_H
#define POKEPLATINUM_BATTLE_REGULATION_MENU_H
#include "field_task.h"
void OpenBattleRegulationMenu(FieldTask *task, u16 *result);
#endif // POKEPLATINUM_BATTLE_REGULATION_MENU_H

View File

@@ -1,8 +0,0 @@
#ifndef POKEPLATINUM_OV7_0224B4E8_H
#define POKEPLATINUM_OV7_0224B4E8_H
#include "field_task.h"
void ov7_0224BE7C(FieldTask *param0, u16 *param1);
#endif // POKEPLATINUM_OV7_0224B4E8_H

View File

@@ -1,5 +1,5 @@
#ifndef POKEPLATINUM_OV8_02249960_H
#define POKEPLATINUM_OV8_02249960_H
#ifndef POKEPLATINUM_GYM_FEATURES_H
#define POKEPLATINUM_GYM_FEATURES_H
#include "struct_decls/map_object.h"
@@ -39,6 +39,10 @@ typedef struct EternaGymClockPersistedFeature {
u32 state;
} EternaGymClockPersistedFeature;
typedef struct VeilstoneGymPersistedFeature {
int initialized;
} VeilstoneGymPersistedFeature;
typedef struct PastoriaGymPersistedFeature {
u8 pressedButton;
} PastoriaGymPersistedFeature;
@@ -63,31 +67,36 @@ typedef struct SunyshoreGymPersistedFeatures {
int roomID;
} SunyshoreGymPersistedFeatures;
void PastoriaGym_PressButton(FieldSystem *fieldSystem);
BOOL PastoriaGym_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *isColliding);
void PastoriaGym_DynamicMapFeaturesInit(FieldSystem *fieldSystem);
void HearthomeGym_MoveLift(FieldSystem *fieldSystem);
void CanalaveGym_DynamicMapFeaturesInit(FieldSystem *fieldSystem);
BOOL CanalaveGym_CheckIfPlayerOnPlatform(FieldSystem *fieldSystem);
void CanalaveGym_DynamicMapFeaturesFree(FieldSystem *fieldSystem);
BOOL CanalaveGym_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *isColliding);
void SunyshoreGym_DynamicMapFeaturesInit(FieldSystem *fieldSystem);
void SunyshoreGym_DynamicMapFeaturesFree(FieldSystem *fieldSystem);
BOOL SunyshoreGym_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *isColliding);
void SunyshoreGym_PressButton(FieldSystem *fieldSystem, const u8 buttonType);
void EternaGym_DynamicMapFeaturesInit(FieldSystem *fieldSystem);
void EternaGym_DynamicMapFeaturesFree(FieldSystem *fieldSystem);
BOOL EternaGym_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *outIsColliding);
BOOL EternaGym_AdvanceClockState(FieldSystem *fieldSystem, Window *window, MessageLoader *msgLoader, String *msgBuf);
BOOL EternaGym_IsHourHandJumpTile(FieldSystem *fieldSystem, int tileX, int tileZ, int direction);
void VeilstoneGym_DynamicMapFeaturesInit(FieldSystem *fieldSystem);
void VeilstoneGym_DynamicMapFeaturesFree(FieldSystem *fieldSystem);
BOOL VeilstoneGym_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *isColliding);
BOOL ov8_0224BF4C(FieldSystem *fieldSystem);
BOOL VeilstoneGym_HitPunchingBag(FieldSystem *fieldSystem);
void PastoriaGym_DynamicMapFeaturesInit(FieldSystem *fieldSystem);
BOOL PastoriaGym_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *isColliding);
void PastoriaGym_PressButton(FieldSystem *fieldSystem);
void HearthomeGym_DynamicMapFeaturesInit(FieldSystem *fieldSystem);
void HearthomeGym_DynamicMapFeaturesFree(FieldSystem *fieldSystem);
void HearthomeGym_MoveLift(FieldSystem *fieldSystem);
BOOL HearthomeGym_CheckIfPlayerSeesTrainer(FieldSystem *fieldSystem);
BOOL HearthomeGym_SetTrainerPostBattleMovement(FieldSystem *fieldSystem, MapObject *trainerObj);
BOOL HearthomeGym_CheckIfEnteredIncorrectDoor(FieldSystem *fieldSystem, int playerX, int playerZ, int *transitionDir);
#endif // POKEPLATINUM_OV8_02249960_H
void CanalaveGym_DynamicMapFeaturesInit(FieldSystem *fieldSystem);
void CanalaveGym_DynamicMapFeaturesFree(FieldSystem *fieldSystem);
BOOL CanalaveGym_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *isColliding);
BOOL CanalaveGym_CheckIfPlayerOnPlatform(FieldSystem *fieldSystem);
void SunyshoreGym_DynamicMapFeaturesInit(FieldSystem *fieldSystem);
void SunyshoreGym_DynamicMapFeaturesFree(FieldSystem *fieldSystem);
BOOL SunyshoreGym_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *isColliding);
void SunyshoreGym_PressButton(FieldSystem *fieldSystem, const u8 buttonType);
#endif // POKEPLATINUM_GYM_FEATURES_H

View File

@@ -89,9 +89,9 @@ int DistWorld_GetMapObjectRotatorAnimFrame(FieldSystem *fieldSystem, MapObject *
void DistWorld_BindMapObjectRotator(FieldSystem *fieldSystem, Billboard *billboard, int initialAngle);
void DistWorld_UnbindMapObjectRotator(FieldSystem *fieldSystem, const Billboard *billboard);
BOOL DistWorld_HandlePlayerMoved(FieldSystem *fieldSystem, enum FaceDirection playerDir);
BOOL ov9_0224A67C(FieldSystem *fieldSystem, int param1);
BOOL ov9_0224A71C(FieldSystem *fieldSystem);
BOOL ov9_0224A800(FieldSystem *fieldSystem, int param1);
BOOL DistWorld_HandlePlayerMovementEnd(FieldSystem *fieldSystem, enum FaceDirection playerDir);
BOOL DistWorld_HandlePlayerPositionChanged(FieldSystem *fieldSystem);
BOOL DistWorld_CheckMapTransition(FieldSystem *fieldSystem, enum FaceDirection transitionDir);
void DistWorld_RenderInactiveFloor(FieldSystem *fieldSystem);
void DistWorld_TickInactiveFloor(FieldSystem *fieldSystem);
void DistWorld_StartGiratinaShadowEvent(FieldSystem *fieldSystem, u16 eventIndex);
@@ -103,13 +103,13 @@ BOOL DistWorld_IsBoulderAtFallLocation(const MapObject *boulderMapObj);
DistWorldFallingBoulder *DistWorldFallingBoulder_New(FieldSystem *fieldSystem, FieldTask *boulderFieldTask, MapObject *boulderMapObj);
BOOL DistWorldFallingBoulder_Tick(DistWorldFallingBoulder *boulder);
void DistWorld_ApplyGiratinaSpritePalette(FieldSystem *fieldSystem);
BOOL ov9_02250F74(FieldSystem *fieldSystem);
BOOL DistWorld_ArePersistedFeaturesInit(FieldSystem *fieldSystem);
BOOL DistWorld_CheckCollisionOnCurrentFloatingPlatform(FieldSystem *fieldSystem, int tileX, int tileY, int tileZ);
BOOL DistWorld_IsValidTileOnCurrentFloatingPlatform(FieldSystem *fieldSystem, int tileX, int tileY, int tileZ);
BOOL ov9_02250FD8(FieldSystem *fieldSystem, int param1, int param2, int param3);
void ov9_02251000(FieldSystem *fieldSystem, int param1, int param2, int param3);
BOOL DistWorld_AreCoordsValidOnCurrentFloatingPlatformKind(FieldSystem *fieldSystem, int tileX, int tileY, int tileZ);
void DistWorld_FindAndPrepareNewCurrentFloatingPlatform(FieldSystem *fieldSystem, int tileX, int tileY, int tileZ);
BOOL DistWorld_GetTileBehaviorOnCurrentFloatingPlatform(FieldSystem *fieldSystem, int tileX, int tileY, int tileZ, u32 *tileBehavior);
void DistWorld_LoadFloorOffsets(int mapHeaderID, int *offsetTileX, int *offsetAltitude, int *offsetTileZ);
BOOL ov9_022511A0(FieldSystem *fieldSystem, int param1, int param2, int param3);
BOOL DistWorld_IsBlockedByCynthia(FieldSystem *fieldSystem, int tileX, int tileZ, int tileY);
#endif // POKEPLATINUM_OV9_02249960_H

View File

@@ -1,17 +1,17 @@
#ifndef POKEPLATINUM_STRUCT_OV61_0222AE80_H
#define POKEPLATINUM_STRUCT_OV61_0222AE80_H
#include "struct_defs/sentence.h"
#include "overlay061/struct_ov61_0222AE80_sub1.h"
#include "overlay061/struct_ov61_0222AE80_sub2.h"
#include "overlay062/struct_ov62_02239DA4_sub1.h"
#include "easy_chat_sentence.h"
typedef struct {
u32 integrity;
UnkStruct_ov61_0222AE80_sub1 unk_04;
u32 unk_24;
Sentence title;
EasyChatSentence title;
UnkStruct_ov61_0222AE80_sub2 unk_30[10];
u8 unk_58;
u8 language;

View File

@@ -1,10 +1,10 @@
#ifndef POKEPLATINUM_STRUCT_OV61_0222AFC0_H
#define POKEPLATINUM_STRUCT_OV61_0222AFC0_H
#include "struct_defs/sentence.h"
#include "overlay062/struct_ov62_02239DA4_sub1.h"
#include "easy_chat_sentence.h"
typedef struct {
u16 unk_00[8];
u32 unk_10;
@@ -21,7 +21,7 @@ typedef struct {
u8 unk_1E;
u8 unk_1F;
union {
Sentence unk_20_val1;
EasyChatSentence unk_20_val1;
u16 unk_20_val2[40];
};
u8 unk_70[12];

View File

@@ -1,7 +1,7 @@
#ifndef POKEPLATINUM_STRUCT_OV61_0222BED8_SUB2_SUB1_SUB1_H
#define POKEPLATINUM_STRUCT_OV61_0222BED8_SUB2_SUB1_SUB1_H
#include "struct_defs/sentence.h"
#include "easy_chat_sentence.h"
typedef struct {
u8 unk_00;
@@ -12,8 +12,8 @@ typedef struct {
u32 unk_0C;
u32 unk_10;
u16 unk_14[8];
Sentence unk_24;
Sentence unk_2C;
EasyChatSentence unk_24;
EasyChatSentence unk_2C;
} UnkStruct_ov61_0222BED8_sub2_sub1_sub1;
#endif // POKEPLATINUM_STRUCT_OV61_0222BED8_SUB2_SUB1_SUB1_H

View File

@@ -10,9 +10,9 @@ typedef struct FrontierTrainerDataDTO {
u16 trainerType;
u16 unk_06;
u16 trainerName[TRAINER_NAME_LEN + 1];
u16 unk_18[4];
u16 unk_20[4];
u16 unk_28[4];
u16 introMsg[4];
u16 winMsg[4];
u16 loseMsg[4];
} FrontierTrainerDataDTO;
typedef struct FrontierPokemonDataDTO {

View File

@@ -3,14 +3,14 @@
#include "overlay104/defs.h"
BOOL FrontierScrCmd_8B(FrontierScriptContext *param0);
BOOL FrontierScrCmd_InitBattleHall(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_8C(FrontierScriptContext *param0);
BOOL FrontierScrCmd_8D(FrontierScriptContext *param0);
BOOL FrontierScrCmd_FreeBattleHall(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_OpenBattleHallApp(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleHall_CleanupBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleHall_StartBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_CallBattleHallFunction(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleHall_CheckWonBattle(FrontierScriptContext *param0);
BOOL FrontierScrCmd_BattleHall_CheckWonBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_93(FrontierScriptContext *param0);
BOOL FrontierScrCmd_94(FrontierScriptContext *param0);
BOOL FrontierScrCmd_95(FrontierScriptContext *param0);

View File

@@ -16,11 +16,11 @@
#include "string_template.h"
#include "trainer_info.h"
BattleFrontierTrainerData *BattleTower_GetTrainerDataFromTrainerIDAndNarcID(u16 battleTowerTrainerID, enum HeapID heapID, enum NarcID narcID);
BattleFrontierTrainerData *BattleFrontier_GetTrainerDataFromTrainerIDAndNarcID(u16 battleTowerTrainerID, enum HeapID heapID, enum NarcID narcID);
void BattleTower_GetMonDataFromSetIDAndNarcID(BattleFrontierPokemonData *monData, int setID, enum NarcID narcID);
BattleFrontierTrainerData *BattleTower_GetTrainerData(FrontierTrainerDataDTO *trDataDTO, int battleTowerTrainerID, enum HeapID heapID, enum NarcID narcID);
BattleFrontierTrainerData *BattleFrontier_GetTrainerData(FrontierTrainerDataDTO *trDataDTO, int battleTowerTrainerID, enum HeapID heapID, enum NarcID narcID);
u32 ov104_0222DD6C(FrontierPokemonDataDTO *param0, u16 param1, u32 param2, u32 param3, u8 param4, u8 param5, BOOL param6, int param7, enum NarcID narcID);
void ov104_0222DF40(const FrontierPokemonDataDTO *param0, Pokemon *param1, u8 param2);
void FrontierPokemonDataDTO_InitPokemon(const FrontierPokemonDataDTO *pokemonDTO, Pokemon *mon, u8 param2);
u16 BattleTower_GetObjectIDFromTrainerClass(u8 trainerClass);
void ov104_0222E134(SaveData *saveData, Pokemon *param1);
void ov104_0222E1C0(SaveData *saveData, Party *party, Pokemon *param2);
@@ -28,7 +28,7 @@ void BattleCastle_UpdateMonSpriteAnimID(Sprite *sprite, u8 animID);
void BattleCastle_UpdateMonSpritePosition(Sprite *sprite, s16 x, s16 y, u8 isSelected);
u8 BattleCastle_GetPokeIconAnimID(u16 hp, u16 maxHp);
void ov104_0222E278(FrontierDataDTO *param0, u16 param1, enum HeapID heapID, int param3);
void ov104_0222E284(FieldBattleDTO *param0, FrontierTrainerDataDTO *param1, int param2, int battlerId, enum HeapID heapID);
void FieldBattleDTO_InitFrontierTrainer(FieldBattleDTO *battleDTO, FrontierTrainerDataDTO *trDataDTO, int unused, int battlerId, enum HeapID heapID);
u32 ov104_0222E2F0(FrontierPokemonDataDTO *param0, u16 param1, int param2, u8 param3, u32 param4, int param5, int param6);
void ov104_0222E330(FrontierPokemonDataDTO *param0, u16 param1[], u8 param2[], u32 param3[], u32 param4[], int param5, int param6, int param7);
u8 ov104_0222E3A8(u16 param0);
@@ -36,6 +36,6 @@ BOOL ov104_0222E3E4(BattleFrontierTrainerData *param0, const u16 param1[], const
void ov104_0222E4BC(u8 param0, u16 param1, u16 param2, u16 *param3, FrontierPokemonDataDTO *param4, u8 *param5, u32 *param6, u8 param7);
void BattleFrontier_SetPartnerInStrTemplate(StringTemplate *template, u32 idx);
enum ObjectEventGfx BattleFrontier_GetPlayerObjEventGfx(const TrainerInfo *param0);
void ov104_0222E630(SaveData *saveData);
void BattleFrontier_FlagGeonetLinkInfo(SaveData *saveData);
#endif // POKEPLATINUM_OV104_0222DCE0_H

View File

@@ -5,12 +5,12 @@
#include "savedata.h"
BattleHall *ov104_02234DB4(SaveData *saveData, u16 param1, u8 param2, u8 param3, u8 param4);
BattleHall *BattleHall_Init(SaveData *saveData, u16 resumingFromSave, u8 challengeType, u8 partySlot1, u8 partySlot2);
void ov104_022350B0(BattleHall *param0, u16 param1);
void ov104_02235190(BattleHall *param0);
void BattleHall_Free(BattleHall *battleHall);
void BattleHall_GetTypeSelectionAppResult(BattleHall *battleHall, void *args);
void BattleHall_UpdateWinRecordForCurrentMon(BattleHall *battleHall, u16 *updated);
void ov104_0223526C(BattleHall *param0, u8 param1);
void BattleHall_Save(BattleHall *battleHall, u8 saveType);
u16 ov104_022354B0(BattleHall *param0);
u16 ov104_022354BC(BattleHall *param0);
u16 ov104_022354C0(BattleHall *param0, u8 param1);

View File

@@ -11,8 +11,8 @@
#include "savedata.h"
BOOL BattleTower_CreateTrainerParty(BattleTower *battleTower, FrontierDataDTO *opponentDataDTO, u16 battleTowerTrainerID, int partySize, u16 *species, u16 *items, UnkStruct_0204B404 *param6, enum HeapID heapID);
void ov104_0223A30C(SaveData *saveData, FrontierDataDTO *param1, const u8 param2);
FieldBattleDTO *ov104_0223A580(BattleTower *battleTower, UnkStruct_ov104_02230BE4 *param1);
void BattleTower_CreateWiFiTrainerParty(SaveData *saveData, FrontierDataDTO *dto, const u8 opponentID);
FieldBattleDTO *FieldBattleDTO_NewBattleTower(BattleTower *battleTower, UnkStruct_ov104_02230BE4 *param1);
void ov104_0223A734(BattleTower *battleTower, u16 param1);
u16 ov104_0223A750(BattleTower *battleTower, const u16 *param1);
int BattleTower_GetTrainerMessagesBankID(u8 challengeMode);

View File

@@ -11,15 +11,15 @@
void ov104_0223A860(u8 param0, int param1, u16 param2[], u8 param3);
const UnkStruct_ov104_0224028C *ov104_0223A8A8(int param0, int param1);
BOOL ov104_0223A918(const u16 param0[], const u16 param1[], int param2, int param3, u16 param4[], int param5, const UnkStruct_ov104_0224028C *param6, u16 param7, u8 param8[]);
u8 BattleFactory_GetPartySize(u8 param0);
u8 ov104_0223AA74(u8 param0, BOOL param1);
u8 BattleFactory_GetPlayerPartySize(u8 challengeType);
u8 BattleFactory_GetOpponentPartySize(u8 challengeType, BOOL param1);
void ov104_0223AAA0(u16 param0, u8 param1, u16 *param2, FrontierPokemonDataDTO *param3, u8 *param4, u32 *param5, u16 param6, u16 *param7, u16 *param8);
void ov104_0223AB0C(u8 param0, u16 param1, u8 param2, FrontierPokemonDataDTO *param3, u16 *param4, FrontierPokemonDataDTO *param5, u8 *param6, u32 *param7, int param8);
FieldBattleDTO *ov104_0223ABA0(BattleFactory *param0, UnkStruct_ov104_02230BE4 *param1);
u8 ov104_0223ADA0(BattleFactory *param0);
void ov104_0223ADB0(BattleFactory *param0);
void ov104_0223AE30(BattleFactory *param0);
FieldBattleDTO *FieldBattleDTO_NewBattleFactory(BattleFactory *battleFactory, UnkStruct_ov104_02230BE4 *param1);
u8 BattleFactory_GetPokemonLevel(BattleFactory *battleFactory);
void ov104_0223ADB0(BattleFactory *battleFactory);
void ov104_0223AE30(BattleFactory *battleFactory);
BOOL BattleFactory_IsMultiplayerChallenge(u8 challengeType);
u16 ov104_0223AF34(BattleFactory *param0);
u16 ov104_0223AF34(BattleFactory *battleFactory);
#endif // POKEPLATINUM_OV104_0223A7F4_H

View File

@@ -11,13 +11,13 @@
void ov104_0223AF58(u8 param0, u8 param1, u8 param2, u8 param3, u16 param4[]);
void ov104_0223AFB4(u8 param0, u8 param1, int param2, u8 param3, u8 param4, u16 param5[]);
void ov104_0223B0C8(u8 param0, u8 param1, u8 param2, u8 param3, u16 param4, u16 param5[], u8 param6);
FieldBattleDTO *ov104_0223B250(BattleHall *param0, UnkStruct_ov104_02230BE4 *param1);
u8 BattleHall_GetPartySize(u8 param0);
u8 ov104_0223B50C(u8 param0);
FieldBattleDTO *FieldBattleDTO_NewBattleHall(BattleHall *battleHall, UnkStruct_ov104_02230BE4 *param1);
u8 BattleHall_GetPlayerPartySize(u8 challengeType);
u8 BattleHall_GetOpponentPartySize(u8 challengeType);
u8 BattleHall_CursorPosToType(u8 cursorPos);
BOOL BattleHall_IsMultiPlayerChallenge(u8 challengeType);
u8 ov104_0223B5C0(BattleHall *param0);
u16 BattleHall_GetHighestLevelInParty(BattleHall *param0);
fx32 BattleHall_GetLevelSquareRoot(u32 param0);
u8 ov104_0223B5C0(BattleHall *battleHall);
u16 BattleHall_GetHighestLevelInParty(BattleHall *battleHall);
fx32 BattleHall_GetLevelSquareRoot(u32 level);
#endif // POKEPLATINUM_OV104_0223AF58_H

View File

@@ -12,17 +12,17 @@
#include "pokemon.h"
void ov104_0223B760(u8 param0, int param1, u16 param2[], u8 param3);
u8 BattleCastle_GetPartySize(u8 challengeType, BOOL includePartnersMons);
u8 ov104_0223B7DC(u8 param0, BOOL param1);
FieldBattleDTO *ov104_0223B810(BattleCastle *param0, UnkStruct_ov104_02230BE4 *param1);
u8 ov104_0223BA10(BattleCastle *param0);
u8 BattleCastle_GetPlayerPartySize(u8 challengeType, BOOL includePartnersMons);
u8 BattleCastle_GetOpponentPartySize(u8 challengeType, BOOL param1);
FieldBattleDTO *FieldBattleDTO_NewBattleCastle(BattleCastle *battleCastle, UnkStruct_ov104_02230BE4 *param1);
u8 BattleCastle_GetOpponentLevel(BattleCastle *battleCastle);
BOOL BattleCastle_IsMultiPlayerChallenge(u8 challengeType);
void ov104_0223BA24(Party *param0);
void ov104_0223BA7C(BattleCastle *param0, Pokemon *param1);
void ov104_0223BAA0(BattleCastle *param0, Party *param1, Pokemon *param2);
void ov104_0223BAB8(BattleCastle *param0);
u16 ov104_0223BB60(BattleCastle *param0);
void ov104_0223BB84(BgConfig *param0, BattleCastle *param1, u32 param2);
void ov104_0223BA7C(BattleCastle *battleCastle, Pokemon *param1);
void ov104_0223BAA0(BattleCastle *battleCastle, Party *param1, Pokemon *param2);
void ov104_0223BAB8(BattleCastle *battleCastle);
u16 ov104_0223BB60(BattleCastle *battleCastle);
void ov104_0223BB84(BgConfig *param0, BattleCastle *battleCastle, u32 param2);
u16 ov104_0223BC24(u16 param0);
void ov104_0223BC2C(BattleFrontier *frontier, u8 challengeType, int castlePoints);

View File

@@ -9,16 +9,16 @@
#include "pokemon.h"
void ov104_0223BD28(u8 param0, int param1, u16 param2[], u8 param3);
u8 BattleArcade_GetPartySize(u8 challengeType, BOOL includePartnerMons);
u8 BattleArcade_GetPlayerPartySize(u8 challengeType, BOOL includePartnerMons);
u8 BattleArcade_GetOpponentPartySize(u8 challengeType, BOOL includeBothOpponents);
FieldBattleDTO *ov104_0223BDD8(BattleArcade *param0, UnkStruct_ov104_02230BE4 *param1);
u8 ov104_0223BFFC(BattleArcade *param0);
FieldBattleDTO *FieldBattleDTO_NewBattleArcade(BattleArcade *battleArcade, UnkStruct_ov104_02230BE4 *param1);
u8 BattleArcade_GetPokemonLevel(BattleArcade *battleArcade);
BOOL BattleArcade_IsMultiPlayerChallenge(u8 challengeType);
void ov104_0223C010(BattleArcade *param0, Pokemon *param1);
void ov104_0223C034(BattleArcade *param0, Party *param1, Pokemon *param2);
void ov104_0223C04C(BattleArcade *param0);
u16 ov104_0223C0BC(BattleArcade *param0, u8 param1);
u16 ov104_0223C124(BattleArcade *param0);
void ov104_0223C010(BattleArcade *battleArcade, Pokemon *param1);
void ov104_0223C034(BattleArcade *battleArcade, Party *param1, Pokemon *param2);
void ov104_0223C04C(BattleArcade *battleArcade);
u16 ov104_0223C0BC(BattleArcade *battleArcade, u8 param1);
u16 ov104_0223C124(BattleArcade *battleArcade);
u8 BattleArcade_GetCategoryFromEffect(u8 effect);
#endif // POKEPLATINUM_OV104_0223BCBC_H

View File

@@ -5,6 +5,7 @@
#include "overlay104/frontier_data_transfer.h"
#include "field_battle_data_transfer.h"
#include "party.h"
#include "savedata.h"
#include "sprite.h"
@@ -13,12 +14,12 @@ typedef struct BattleArcade {
int unk_00;
SaveData *saveData;
UnkStruct_020304A0 *unk_08;
void *dto;
FieldBattleDTO *dto;
u8 challengeType;
u8 unk_11;
u8 unk_12;
u8 activeEffect;
int unk_14;
int weather;
u16 currentStreak;
u16 unk_1A;
u8 unk_1C;
@@ -35,9 +36,9 @@ typedef struct BattleArcade {
ManagedSprite *unk_40[4];
ManagedSprite *unk_50[4];
ManagedSprite *unk_60[4];
Party *unk_70;
Party *unk_74;
u16 unk_78[14];
Party *playersParty;
Party *opponentsParty;
u16 trainerIDs[14];
u32 monHP[4];
u32 monAtk[4];
u32 monDef[4];

View File

@@ -5,6 +5,7 @@
#include "overlay104/frontier_data_transfer.h"
#include "field_battle_data_transfer.h"
#include "party.h"
#include "savedata.h"
@@ -12,7 +13,7 @@ typedef struct BattleCastle {
int unk_00;
SaveData *saveData;
UnkStruct_020302DC *unk_08;
void *unk_0C;
FieldBattleDTO *dto;
u8 challengeType;
u8 unk_11;
u8 unk_12;
@@ -25,9 +26,9 @@ typedef struct BattleCastle {
u16 unk_22;
u8 unk_24[3];
u8 unk_27;
Party *unk_28;
Party *unk_2C;
u16 unk_30[14];
Party *playersParty;
Party *opponentsParty;
u16 trainerIDs[14];
FrontierDataDTO unk_4C[2];
u16 unk_26C[4];
u8 unk_274[4];

View File

@@ -5,6 +5,7 @@
#include "overlay104/frontier_data_transfer.h"
#include "field_battle_data_transfer.h"
#include "party.h"
#include "savedata.h"
#include "sys_task_manager.h"
@@ -22,7 +23,7 @@ typedef struct BattleFactory {
u16 unk_0E;
u32 unk_10;
int wonBattle;
u16 unk_18[14];
u16 trainerIDs[14];
FrontierDataDTO unk_34[2];
u16 unk_254[6];
u8 unk_260[6];
@@ -34,13 +35,13 @@ typedef struct BattleFactory {
u32 unk_3E0[4];
FrontierPokemonDataDTO unk_3F0[4];
u16 unk_4D0;
Party *unk_4D4;
Party *unk_4D8;
Party *playersParty;
Party *opponentsParty;
u16 unk_4DC[6];
u16 unk_4E8[6];
UnkStruct_0202FF58 *unk_4F4;
SaveData *saveData;
void *unk_4FC;
FieldBattleDTO *dto;
SysTask *unk_500;
u16 unk_504[60];
u8 unk_57C;

View File

@@ -1,47 +1,49 @@
#ifndef POKEPLATINUM_STRUCT_BATTLE_HALL_H
#define POKEPLATINUM_STRUCT_BATTLE_HALL_H
#include "struct_decls/struct_02030114_decl.h"
#include "constants/battle_frontier.h"
#include "struct_defs/pokemon.h"
#include "overlay104/frontier_data_transfer.h"
#include "battle_hall_save.h"
#include "field_battle_data_transfer.h"
#include "party.h"
#include "pokemon.h"
#include "savedata.h"
typedef struct BattleHall {
int unk_00;
int unused;
u8 challengeType;
u8 unk_05;
u8 unk_06;
u8 streakActive;
u8 unk_07;
u16 currentStreak;
u16 unk_0A;
u16 currentRound;
fx32 playerLevelSqrt;
u32 unk_10;
int wonBattle;
u16 unk_18[20];
u16 trainerIDs[BATTLES_PER_ROUND_HALL * 2];
FrontierDataDTO unk_40[2];
u8 unk_260[2];
Party *unk_264;
u8 partySlots[2];
Party *party;
u16 unk_268[20];
FrontierPokemonDataDTO unk_290[20];
u16 unk_6F0;
u16 selectedTypeIdx2;
u8 selectedType;
u8 selectedTypeIdx;
UnkStruct_02030114 *unk_6F8;
BattleHallSave *hallSave;
SaveData *saveData;
FieldBattleDTO *unk_700;
u8 unk_704[4][9];
u16 unk_728[2];
FieldBattleDTO *dto;
u8 typeRanks[4][9];
u16 heldItems[2];
u16 unk_72C[44];
u8 unk_784[512];
u8 unk_984[2][512];
u16 unk_D84[2];
u8 unk_D88;
Pokemon *unk_D8C;
Pokemon *partnersMon;
u8 unk_D90;
u32 unk_D94;
} BattleHall;

View File

@@ -16,8 +16,8 @@ typedef struct {
BagCursor *bagCursor;
int unk_14;
int unk_18;
int unk_1C;
u8 *unk_20;
int mapHeaderID;
u8 *subscreenCursorOn;
u8 sceneID;
FieldSystem *fieldSystem;
} UnkStruct_ov104_02230BE4;

View File

@@ -14,37 +14,31 @@
#include "location.h"
#include "overworld_anim_manager.h"
enum PlayerAvatarForm {
PLAYER_AVATAR_WALKING = 0,
PLAYER_AVATAR_BIKING,
PLAYER_AVATAR_SURFING,
};
enum PlayerAvatarFlagUnk00 {
UNK_00_0 = (1 << 0),
UNK_00_1 = (1 << 1),
UNK_00_2 = (1 << 2),
UNK_00_ON_CYCLING_ROAD = (1 << 3),
UNK_00_ESCAPED_FROM_DEEP_MUD = (1 << 4),
UNK_00_5 = (1 << 5),
UNK_00_6 = (1 << 6),
UNK_00_7 = (1 << 7),
UNK_00_8 = (1 << 8),
UNK_00_9 = (1 << 9),
UNK_00_10 = (1 << 10),
UNK_00_11 = (1 << 11),
UNK_00_12 = (1 << 12)
enum PlayerAvatarMovementFlag {
AVATAR_MOVE_FORCED = (1 << 0),
AVATAR_MOVE_IGNORE_TILE_BEHAVIOR = (1 << 1),
AVATAR_MOVE_BIKE_BRAKE = (1 << 2),
AVATAR_MOVE_ON_CYCLING_ROAD = (1 << 3),
AVATAR_MOVE_ESCAPED_FROM_DEEP_MUD = (1 << 4),
AVATAR_MOVE_MOVE_THROUGH_MUD = (1 << 5),
AVATAR_MOVE_STEP = (1 << 6),
AVATAR_MOVE_FORCED_RETAIN_SPEED = (1 << 7),
AVATAR_MOVE_DISTORTION_ACTIVE = (1 << 8),
AVATAR_MOVE_DISTORTION_FLOOR = (1 << 9),
AVATAR_MOVE_DISTORTION_WEST_WALL = (1 << 10),
AVATAR_MOVE_DISTORTION_EAST_WALL = (1 << 11),
AVATAR_MOVE_DISTORTION_CEILING = (1 << 12)
};
typedef struct PlayerAvatar {
u32 unk_00;
u32 unk_04;
u32 unk_08;
int unk_0C;
u32 movementFlag;
u32 requestStateFlag;
u32 movementAction;
int movementActionSpeed;
u32 unk_10;
int unk_14;
int unk_18;
int unk_1C;
int moveState;
int playerMoveState;
int playerAvatarState;
int gender;
int speed;
enum FaceDirection faceLeftOrRight;
@@ -55,38 +49,37 @@ typedef struct PlayerAvatar {
const PlayerData *playerConst;
} PlayerAvatar;
PlayerAvatar *PlayerAvatar_Init(const MapObjectManager *param0, int param1, int param2, int param3, int param4, int param5, int param6, PlayerData *param7);
PlayerAvatar *sub_0205E820(const MapObjectManager *param0, PlayerData *param1, int gender);
void PlayerAvatar_InitDraw(PlayerAvatar *playerAvatar, int dynamicMapFeaturesID);
void Player_Delete(PlayerAvatar *playerAvatar);
void Player_DeleteAll(PlayerAvatar *playerAvatar);
MapObject *sub_0205EA24(const MapObjectManager *param0);
int PlayerAvatar_GetDir(PlayerAvatar *const playerAvatar);
void Player_SetDir(PlayerAvatar *playerAvatar, int param1);
int PlayerAvatar_GetMoveDir(PlayerAvatar *const playerAvatar);
PlayerAvatar *PlayerAvatar_New(const MapObjectManager *param0, int param1, int param2, int param3, int param4, int param5, int param6, PlayerData *param7);
PlayerAvatar *PlayerAvatar_NewLoad(const MapObjectManager *param0, PlayerData *param1, int gender);
void PlayerAvatar_InitMapFeatures(PlayerAvatar *playerAvatar, int dynamicMapFeaturesID);
void PlayerAvatar_Free(PlayerAvatar *playerAvatar);
void PlayerAvatar_Delete(PlayerAvatar *playerAvatar);
MapObject *MapObjectMan_GetPlayerMapObject(const MapObjectManager *param0);
int PlayerAvatar_GetFacingDir(PlayerAvatar *const playerAvatar);
void PlayerAvatar_TryFace(PlayerAvatar *playerAvatar, int param1);
int PlayerAvatar_GetMovingDir(PlayerAvatar *const playerAvatar);
int PlayerAvatar_GetDistortionDir(PlayerAvatar *const playerAvatar);
int Player_GetXPos(PlayerAvatar *const playerAvatar);
int Player_GetZPos(PlayerAvatar *const playerAvatar);
int PlayerAvatar_GetXPos(PlayerAvatar *const playerAvatar);
int PlayerAvatar_GetZPos(PlayerAvatar *const playerAvatar);
int PlayerAvatar_XPosPrev(PlayerAvatar *const playerAvatar);
int PlayerAvatar_ZPosPrev(PlayerAvatar *const playerAvatar);
void PlayerAvatar_PosVectorOut(PlayerAvatar *const playerAvatar, VecFx32 *param1);
const VecFx32 *PlayerAvatar_PosVector(PlayerAvatar *const playerAvatar);
void sub_0205EB08(PlayerAvatar *playerAvatar, int param1);
int PlayerAvatar_MoveState(const PlayerAvatar *playerAvatar);
void sub_0205EB10(PlayerAvatar *playerAvatar, int param1);
int Player_MoveState(const PlayerAvatar *playerAvatar);
void PlayerAvatar_GetPosPtr(PlayerAvatar *const playerAvatar, VecFx32 *param1);
const VecFx32 *PlayerAvatar_GetPos(PlayerAvatar *const playerAvatar);
void PlayerAvatar_SetMoveState(PlayerAvatar *playerAvatar, int param1);
int PlayerAvatar_GetPlayerMoveState(const PlayerAvatar *playerAvatar);
void PlayerAvatar_SetPlayerMoveState(PlayerAvatar *playerAvatar, int param1);
void PlayerAvatar_SetVisible(PlayerAvatar *playerAvatar, BOOL visible);
void PlayerAvatar_SetMapObject(PlayerAvatar *playerAvatar, MapObject *param1);
MapObject *Player_MapObject(PlayerAvatar *playerAvatar);
const MapObject *PlayerAvatar_ConstMapObject(const PlayerAvatar *playerAvatar);
MapObject *PlayerAvatar_GetMapObject(PlayerAvatar *playerAvatar);
const MapObject *PlayerAvatar_GetConstMapObject(const PlayerAvatar *playerAvatar);
void PlayerAvatar_SetPlayerState(PlayerAvatar *playerAvatar, int param1);
int PlayerAvatar_GetPlayerState(PlayerAvatar *playerAvatar);
void PlayerAvatar_TurnOnRequestStateBit(PlayerAvatar *playerAvatar, u32 param1);
void PlayerAvatar_SetRequestStateFlag(PlayerAvatar *playerAvatar, u32 param1);
u32 PlayerAvatar_RequestStateFlag(PlayerAvatar *playerAvatar);
u32 PlayerAvatar_GetRequestStateFlag(PlayerAvatar *playerAvatar);
void PlayerAvatar_SetGender(PlayerAvatar *playerAvatar, int param1);
int PlayerAvatar_Gender(PlayerAvatar *playerAvatar);
int PlayerAvatar_Speed(PlayerAvatar *playerAvatar);
int PlayerAvatar_GetGender(PlayerAvatar *playerAvatar);
int PlayerAvatar_GetSpeed(PlayerAvatar *playerAvatar);
void PlayerAvatar_SetSpeed(PlayerAvatar *playerAvatar, int param1);
void PlayerAvatar_ClearSpeed(PlayerAvatar *playerAvatar);
int PlayerAvatar_AddMoveSpeed(PlayerAvatar *playerAvatar, int param1, int param2);
@@ -98,43 +91,43 @@ void PlayerAvatar_SetFaceDirection(PlayerAvatar *playerAvatar, enum FaceDirectio
void PlayerAvatar_SetSurfMountAnimManager(PlayerAvatar *playerAvatar, OverworldAnimManager *surfMountAnimMan);
OverworldAnimManager *PlayerAvatar_GetSurfMountAnimManager(PlayerAvatar *playerAvatar);
PlayerData *PlayerAvatar_PlayerData(PlayerAvatar *playerAvatar);
void sub_0205EC10(PlayerAvatar *playerAvatar, u32 param1);
u32 sub_0205EC14(PlayerAvatar *playerAvatar);
void sub_0205EC18(PlayerAvatar *playerAvatar, int param1);
int sub_0205EC1C(PlayerAvatar *playerAvatar);
void sub_0205EC20(PlayerAvatar *playerAvatar, u32 param1, int param2);
void PlayerAvatar_SetMovementAction(PlayerAvatar *playerAvatar, u32 param1);
u32 PlayerAvatar_GetMovementAction(PlayerAvatar *playerAvatar);
void PlayerAvatar_SetMovementActionSpeed(PlayerAvatar *playerAvatar, int param1);
int PlayerAvatar_GetMovementActionSpeed(PlayerAvatar *playerAvatar);
void PlayerAvatar_SetMovementActionAndSpeed(PlayerAvatar *playerAvatar, u32 param1, int param2);
void PlayerData_Init(PlayerData *param0);
int PlayerData_HasRunningShoes(PlayerData *param0);
void PlayerData_SetRunningShoes(PlayerData *param0, int param1);
int PlayerData_CyclingGear(PlayerData *param0);
int PlayerData_GetCyclingGear(PlayerData *param0);
void PlayerData_SetCyclingGear(PlayerData *param0, int param1);
void PlayerAvatar_SetCyclingGear(PlayerAvatar *playerAvatar, int param1);
int PlayerAvatar_CyclingGear(PlayerAvatar *playerAvatar);
void sub_0205ECB8(PlayerAvatar *playerAvatar, const VecFx32 *param1, int param2);
void sub_0205ECE0(PlayerAvatar *playerAvatar, int x, int z, int dir);
int PlayerAvatar_GetCyclingGear(PlayerAvatar *playerAvatar);
void PlayerAvatar_SetPosDirFromVec(PlayerAvatar *playerAvatar, const VecFx32 *param1, int param2);
void PlayerAvatar_SetPosDirFromCoords(PlayerAvatar *playerAvatar, int x, int z, int dir);
void Player_SetYPos(PlayerAvatar *playerAvatar, fx32 y);
void PlayerAvatar_SetHeightCalculationEnabled(PlayerAvatar *playerAvatar, BOOL heightCalculationEnabled);
void PlayerAvatar_SetHeightCalculationEnabledAndUpdate(PlayerAvatar *playerAvatar, BOOL heightCalculationEnabled);
int Player_MoveStateFromGender(int param0, int param1);
int Player_GetSpriteFromStateAndGender(int param0, int param1);
u32 Player_ConvertStateToTransition(int param0);
PlayerAvatar *FieldSystem_GetPlayerAvatar(FieldSystem *fieldSystem);
void sub_0205EF40(PlayerAvatar *playerAvatar, int param1);
BOOL sub_0205EF58(PlayerAvatar *playerAvatar);
void sub_0205EF6C(PlayerAvatar *playerAvatar, int param1);
BOOL sub_0205EF84(PlayerAvatar *playerAvatar);
void sub_0205EF98(PlayerAvatar *playerAvatar, int param1);
BOOL sub_0205EFB0(PlayerAvatar *playerAvatar);
void PlayerAvatar_SetForceMovement(PlayerAvatar *playerAvatar, int param1);
BOOL PlayerAvatar_CheckForcedMovement(PlayerAvatar *playerAvatar);
void PlayerAvatar_SetIgnoreTileBehavior(PlayerAvatar *playerAvatar, int param1);
BOOL PlayerAvatar_CheckIgnoreTileBehavior(PlayerAvatar *playerAvatar);
void PlayerAvatar_SetBikeBrake(PlayerAvatar *playerAvatar, int param1);
BOOL PlayerAvatar_CheckBikeBrake(PlayerAvatar *playerAvatar);
void PlayerAvatar_SetOnCyclingRoad(PlayerAvatar *playerAvatar, BOOL flag);
BOOL PlayerAvatar_IsOnCyclingRoad(PlayerAvatar *playerAvatar);
void PlayerAvatar_SetEscapedFromDeepMud(PlayerAvatar *playerAvatar, BOOL flag);
BOOL PlayerAvatar_CheckEscapedFromDeepMud(PlayerAvatar *playerAvatar);
void sub_0205F01C(PlayerAvatar *playerAvatar, BOOL param1);
BOOL sub_0205F034(PlayerAvatar *playerAvatar);
void sub_0205F048(PlayerAvatar *playerAvatar);
void sub_0205F054(PlayerAvatar *playerAvatar);
BOOL sub_0205F060(PlayerAvatar *playerAvatar);
void sub_0205F074(PlayerAvatar *playerAvatar, BOOL param1);
int sub_0205F08C(PlayerAvatar *playerAvatar);
void PlayerAvatar_SetMoveThroughMudFlag(PlayerAvatar *playerAvatar, BOOL param1);
BOOL PlayerAvatar_CheckMoveThroughMudFlag(PlayerAvatar *playerAvatar);
void PlayerAvatar_StartStep(PlayerAvatar *playerAvatar);
void PlayerAvatar_EndStep(PlayerAvatar *playerAvatar);
BOOL PlayerAvatar_CheckStep(PlayerAvatar *playerAvatar);
void PlayerAvatar_SetForceMovementRetainSpeed(PlayerAvatar *playerAvatar, BOOL param1);
int PlayerAvatar_CheckForcedMovementRetainSpeed(PlayerAvatar *playerAvatar);
void PlayerAvatar_SetDistortionState(PlayerAvatar *playerAvatar, enum AvatarDistortionState state);
enum AvatarDistortionState PlayerAvatar_MapDistortionState(PlayerAvatar *const playerAvatar);
BOOL PlayerAvatar_DistortionGravityChanged(PlayerAvatar *const playerAvatar);

View File

@@ -4,9 +4,8 @@
#include "constants/savedata/save_table.h"
#include "constants/string.h"
#include "struct_defs/sentence.h"
#include "berry_patches.h"
#include "easy_chat_sentence.h"
#include "persisted_map_features.h"
#include "savedata.h"
#include "string_gf.h"
@@ -30,7 +29,7 @@ typedef struct MiscSaveBlock {
u8 vsRecorderColor : 4;
u8 padding : 3;
u32 unused;
Sentence introMsg;
EasyChatSentence introMsg;
ExtraSaveKey extraKey;
} MiscSaveBlock;
@@ -48,8 +47,8 @@ void MiscSaveBlock_SetInitFlag(MiscSaveBlock *miscSave);
u32 MiscSaveBlock_InitFlag(const MiscSaveBlock *miscSave);
void MiscSaveBlock_SetFavoriteMon(MiscSaveBlock *miscSave, int species, int form, int isEgg);
void MiscSaveBlock_GetFavoriteMon(const MiscSaveBlock *miscSave, int *species, int *form, int *isEgg);
void MiscSaveBlock_IntroMsg(const MiscSaveBlock *miscSave, Sentence *message);
void MiscSaveBlock_SetIntroMsg(MiscSaveBlock *miscSave, const Sentence *message);
void MiscSaveBlock_IntroMsg(const MiscSaveBlock *miscSave, EasyChatSentence *message);
void MiscSaveBlock_SetIntroMsg(MiscSaveBlock *miscSave, const EasyChatSentence *message);
void MiscSaveBlock_VsRecorderColor(const MiscSaveBlock *miscSave, u8 *color);
void MiscSaveBlock_SetVsRecorderColor(MiscSaveBlock *miscSave, u8 color);
void MiscSaveBlock_ExtraSaveKey(const MiscSaveBlock *miscSave, int saveTableID, u32 *currKey, u32 *oldKey, u8 *keyFlag);

View File

@@ -20,8 +20,8 @@ BOOL ScrCmd_SetStepFlag(ScriptContext *ctx);
BOOL ScrCmd_ClearStepFlag(ScriptContext *ctx);
BOOL ScrCmd_CheckGameCompleted(ScriptContext *ctx);
BOOL ScrCmd_SetGameCompleted(ScriptContext *ctx);
BOOL ScrCmd_Strength(ScriptContext *ctx);
BOOL ScrCmd_Flash(ScriptContext *ctx);
BOOL ScrCmd_Defog(ScriptContext *ctx);
BOOL ScrCmd_DoStrengthFunc(ScriptContext *ctx);
BOOL ScrCmd_DoFlashFunc(ScriptContext *ctx);
BOOL ScrCmd_DoDefogFunc(ScriptContext *ctx);
#endif // POKEPLATINUM_SCRCMD_SYSTEM_FLAGS_H

View File

@@ -98,9 +98,9 @@ enum ScriptContextType {
#define SCRIPT_ID_OFFSET_RECORD_CHATOT_CRY 8900
#define SCRIPT_ID_OFFSET_VS_SEEKER 8950
#define SCRIPT_ID_OFFSET_POKE_RADAR 8970
#define SCRIPT_ID_OFFSET_POKEMON_CENTER_2F_ATTENDANTS 9000
#define SCRIPT_ID_OFFSET_POKEMON_CENTER_2F_COMMON 9000
#define SCRIPT_ID_OFFSET_COMMUNICATION_CLUB 9100
#define SCRIPT_ID_OFFSET_POKEMON_CENTER_B1F_ATTENDANTS 9200
#define SCRIPT_ID_OFFSET_POKEMON_CENTER_B1F_COMMON 9200
#define SCRIPT_ID_OFFSET_GROUP_CONNECTION 9300
#define SCRIPT_ID_OFFSET_POFFIN_COMMON 9400
#define SCRIPT_ID_OFFSET_DAY_CARE_COMMON 9500

View File

@@ -1,6 +1,8 @@
#ifndef POKEPLATINUM_STRING_H
#define POKEPLATINUM_STRING_H
#include "constants/string.h"
#include "charcode.h"
/**
@@ -24,8 +26,6 @@ typedef struct String {
charcode_t data[1];
} String;
#include "generated/string_padding_mode.h"
/**
* Control codes for which charset to use when formatting a string.
*/

View File

@@ -86,7 +86,7 @@ void StringTemplate_SetGymName(StringTemplate *template, u32 idx, u32 gym);
void StringTemplate_SetTimeOfDay(StringTemplate *template, u32 idx, u32 timeOfDay);
void StringTemplate_SetCountryName(StringTemplate *template, u32 idx, u32 country);
void StringTemplate_SetCityName(StringTemplate *template, u32 idx, u32 country, u32 city);
void StringTemplate_SetCustomMessageWord(StringTemplate *template, u32 idx, u16 customMessageWord);
void StringTemplate_SetEasyChatWord(StringTemplate *template, u32 idx, u16 word);
void StringTemplate_SetBallSealName(StringTemplate *template, u32 idx, u32 ballSeal);
void StringTemplate_SetBallSealNamePlural(StringTemplate *template, u32 idx, u32 ballSeal);
void StringTemplate_SetMetLocationName(StringTemplate *template, u32 idx, u32 location);

View File

@@ -1,6 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_02014D38_DECL_H
#define POKEPLATINUM_STRUCT_02014D38_DECL_H
typedef struct UnkStruct_02014D38_t UnkStruct_02014D38;
#endif // POKEPLATINUM_STRUCT_02014D38_DECL_H

View File

@@ -1,6 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_02014EC4_DECL_H
#define POKEPLATINUM_STRUCT_02014EC4_DECL_H
typedef struct UnkStruct_02014EC4_t UnkStruct_02014EC4;
#endif // POKEPLATINUM_STRUCT_02014EC4_DECL_H

View File

@@ -1,6 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_02014FB0_DECL_H
#define POKEPLATINUM_STRUCT_02014FB0_DECL_H
typedef struct UnkStruct_02014FB0_t UnkStruct_02014FB0;
#endif // POKEPLATINUM_STRUCT_02014FB0_DECL_H

View File

@@ -1,6 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_02030114_DECL_H
#define POKEPLATINUM_STRUCT_02030114_DECL_H
typedef struct UnkStruct_02030114_t UnkStruct_02030114;
#endif // POKEPLATINUM_STRUCT_02030114_DECL_H

View File

@@ -1,6 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_0203026C_DECL_H
#define POKEPLATINUM_STRUCT_0203026C_DECL_H
typedef struct UnkStruct_0203026C_t UnkStruct_0203026C;
#endif // POKEPLATINUM_STRUCT_0203026C_DECL_H

View File

@@ -9,13 +9,12 @@
#include "struct_defs/struct_0202D764.h"
#include "struct_defs/struct_0202FF58.h"
#include "struct_defs/struct_020300F4.h"
#include "struct_defs/struct_02030114.h"
#include "struct_defs/struct_0203026C.h"
#include "struct_defs/struct_020302DC.h"
#include "struct_defs/struct_0203041C.h"
#include "struct_defs/struct_020304A0.h"
#include "struct_defs/struct_020305B8.h"
#include "battle_hall_save.h"
#include "wifi_list.h"
typedef struct BattleFrontierStats {
@@ -28,7 +27,7 @@ typedef struct BattleFrontier {
union {
UnkStruct_0202D060 unk_8E0_val1;
UnkStruct_0202FF58 unk_8E0_val2;
UnkStruct_02030114 unk_8E0_val3;
BattleHallSave hallSave;
UnkStruct_020302DC unk_8E0_val4;
UnkStruct_020304A0 unk_8E0_val5;
};
@@ -41,8 +40,8 @@ typedef struct BattleFrontier {
UnkStruct_020300F4 unk_00;
} unk_1614;
struct {
UnkStruct_0203026C unk_00;
} unk_1618;
BattleHallStreakFlags streakFlags;
} hall;
struct {
UnkStruct_0203041C unk_00;
} unk_161C;

View File

@@ -9,6 +9,7 @@
#include "overlay104/frontier_data_transfer.h"
#include "field_battle_data_transfer.h"
#include "location.h"
typedef struct BattleTower {
@@ -48,7 +49,7 @@ typedef struct BattleTower {
u16 unk_83E[35];
u16 unk_884[35];
int wonBattle;
void *unk_8D0;
FieldBattleDTO *dto;
u8 unk_8D4;
u8 unk_8D5;
u8 unk_8D6;

View File

@@ -3,7 +3,8 @@
#include "struct_defs/photo_accessory.h"
#include "struct_defs/photo_pokemon.h"
#include "struct_defs/sentence.h"
#include "easy_chat_sentence.h"
#define PHOTO_ACCESSORY_COUNT 10
@@ -11,7 +12,7 @@ typedef struct DressUpPhoto {
u32 integrity;
PhotoPokemon photoMon;
u32 unk_3C;
Sentence title;
EasyChatSentence title;
PhotoAccessory accessories[PHOTO_ACCESSORY_COUNT];
u8 unk_70;
u8 language;

View File

@@ -4,7 +4,7 @@
typedef struct PlayerData {
u16 cyclingGear;
u16 runningShoes;
u32 form;
u32 playerState;
} PlayerData;
#endif // POKEPLATINUM_STRUCT_DEF_PLAYER_DATA_H

View File

@@ -1,10 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_SENTENCE_H
#define POKEPLATINUM_STRUCT_SENTENCE_H
typedef struct Sentence {
u16 type;
u16 id;
u16 words[2];
} Sentence;
#endif // POKEPLATINUM_STRUCT_SENTENCE_H

View File

@@ -1,10 +1,10 @@
#ifndef POKEPLATINUM_STRUCT_0202D080_H
#define POKEPLATINUM_STRUCT_0202D080_H
#include "struct_defs/sentence.h"
#include "easy_chat_sentence.h"
typedef struct UnkStruct_0202D080_t {
Sentence unk_00[4];
EasyChatSentence unk_00[4];
} UnkStruct_0202D080;
#endif // POKEPLATINUM_STRUCT_0202D080_H

View File

@@ -1,11 +1,13 @@
#ifndef POKEPLATINUM_STRUCT_0202D63C_H
#define POKEPLATINUM_STRUCT_0202D63C_H
#include "constants/string.h"
#include "overlay104/frontier_data_transfer.h"
typedef struct UnkStruct_0202D63C_t {
FrontierPokemonDataDTO unk_00[3];
u16 unk_A8[8];
FrontierPokemonDataDTO monDataDTO[3];
u16 trainerName[TRAINER_NAME_LEN + 1];
u8 unk_B8;
u8 unk_B9;
u8 unk_BA;
@@ -20,10 +22,10 @@ typedef struct UnkStruct_0202D63C_t {
};
u8 unk_C8_val2;
};
u8 unk_C9;
u16 unk_CA[4];
u16 unk_D2[4];
u16 unk_DA[4];
u8 trainerType;
u16 introMsg[4];
u16 winMsg[4];
u16 loseMsg[4];
u16 unk_E2;
} UnkStruct_0202D63C;

View File

@@ -1,14 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_02030114_H
#define POKEPLATINUM_STRUCT_02030114_H
typedef struct UnkStruct_02030114_t {
u8 unk_00_0 : 3;
u8 unk_00_3 : 1;
u8 unk_00_4 : 4;
u8 unk_01;
u8 unk_02[2];
u16 unk_04[20];
u16 unk_2C[20];
} UnkStruct_02030114;
#endif // POKEPLATINUM_STRUCT_02030114_H

View File

@@ -1,10 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_0203026C_H
#define POKEPLATINUM_STRUCT_0203026C_H
typedef struct UnkStruct_0203026C_t {
u8 unk_00;
u8 unk_01;
u16 unk_02;
} UnkStruct_0203026C;
#endif // POKEPLATINUM_STRUCT_0203026C_H

View File

@@ -1,9 +1,10 @@
#ifndef POKEPLATINUM_STRUCT_02030A80_H
#define POKEPLATINUM_STRUCT_02030A80_H
#include "struct_defs/sentence.h"
#include "struct_defs/struct_0202F298_sub1.h"
#include "easy_chat_sentence.h"
typedef struct UnkStruct_02030A80_t {
u16 unk_00[8];
u32 id;
@@ -20,7 +21,7 @@ typedef struct UnkStruct_02030A80_t {
u8 unk_1E;
u8 unk_1F;
union {
Sentence unk_20_val1;
EasyChatSentence unk_20_val1;
u16 unk_20_val2[40];
};
u8 unk_70[12];

View File

@@ -1,7 +1,7 @@
#ifndef POKEPLATINUM_STRUCT_0203330C_H
#define POKEPLATINUM_STRUCT_0203330C_H
#include "struct_defs/sentence.h"
#include "easy_chat_sentence.h"
typedef struct {
u32 unk_00;
@@ -9,7 +9,7 @@ typedef struct {
u8 unk_05;
u8 unk_06;
u8 unk_07;
Sentence unk_08;
EasyChatSentence unk_08;
u8 unk_10[32];
u8 unk_30[32];
u32 padding_50;

View File

@@ -1,8 +1,7 @@
#ifndef POKEPLATINUM_STRUCT_0205C924_H
#define POKEPLATINUM_STRUCT_0205C924_H
#include "struct_defs/sentence.h"
#include "easy_chat_sentence.h"
#include "string_gf.h"
typedef struct {
@@ -11,7 +10,7 @@ typedef struct {
String *unk_08;
u32 unk_0C;
int unk_10;
Sentence unk_14;
EasyChatSentence unk_14;
} UnkStruct_0205C924;
#endif // POKEPLATINUM_STRUCT_0205C924_H

View File

@@ -1,8 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_02071BF8_H
#define POKEPLATINUM_STRUCT_02071BF8_H
typedef struct {
int unk_00;
} UnkStruct_02071BF8;
#endif // POKEPLATINUM_STRUCT_02071BF8_H

View File

@@ -3,17 +3,16 @@
#include "constants/string.h"
#include "struct_defs/sentence.h"
#include "struct_defs/trainer_data.h"
#include "charcode.h"
#include "easy_chat_sentence.h"
typedef struct Trainer {
TrainerHeader header;
charcode_t name[TRAINER_NAME_LEN + 1];
Sentence winMsg;
Sentence loseMsg;
EasyChatSentence winMsg;
EasyChatSentence loseMsg;
} Trainer;
#endif // POKEPLATINUM_STRUCT_TRAINER_H

View File

@@ -1,28 +0,0 @@
#ifndef POKEPLATINUM_UNK_02014A84_H
#define POKEPLATINUM_UNK_02014A84_H
#include "constants/heap.h"
#include "struct_defs/sentence.h"
#include "string_gf.h"
void Sentence_Init(Sentence *sentence);
void Sentence_InitWithType(Sentence *sentence, u32 type);
void sub_02014AB4(Sentence *sentence);
void sub_02014AC4(Sentence *sentence, int param1);
String *Sentence_AsString(const Sentence *sentence, enum HeapID heapID);
String *Sentence_GetTemplateString(const Sentence *sentence, u32 param1);
BOOL Sentence_IsValid(const Sentence *sentence);
BOOL Sentence_IsComplete(const Sentence *sentence);
u16 Sentence_GetWord(const Sentence *sentence, int slot);
u32 Sentence_GetType(const Sentence *sentence);
u32 Sentence_GetID(const Sentence *sentence);
BOOL sub_02014C88(const Sentence *param0, const Sentence *param1);
void Sentence_Copy(Sentence *dest, const Sentence *src);
u32 sub_02014CD4(u32 param0);
void sub_02014CE0(Sentence *sentence, u32 param1, u32 param2);
void Sentence_SetWord(Sentence *sentence, u32 index, u16 word);
void Sentence_ClearUnusedWords(Sentence *sentence);
#endif // POKEPLATINUM_UNK_02014A84_H

View File

@@ -1,32 +0,0 @@
#ifndef POKEPLATINUM_UNK_02014D38_H
#define POKEPLATINUM_UNK_02014D38_H
#include "struct_decls/struct_02014D38_decl.h"
#include "struct_decls/struct_02014EC4_decl.h"
#include "struct_decls/struct_02014FB0_decl.h"
#include "savedata.h"
#include "string_gf.h"
UnkStruct_02014D38 *sub_02014D38(enum HeapID heapID);
void sub_02014D70(UnkStruct_02014D38 *param0);
void sub_02014D90(UnkStruct_02014D38 *param0, u16 param1, String *param2);
void sub_02014DB8(u16 param0, String *param1);
u16 sub_02014DFC(u32 param0, u32 param1);
BOOL sub_02014E4C(u16 param0, u32 *param1, u32 *param2);
u32 Sentence_SaveSize(void);
void SentenceSaveData_Init(void *param0);
UnkStruct_02014EC4 *sub_02014EC4(SaveData *saveData);
BOOL sub_02014ED8(const UnkStruct_02014EC4 *param0, u32 param1);
u32 sub_02014EE4(UnkStruct_02014EC4 *param0);
BOOL sub_02014F48(UnkStruct_02014EC4 *param0);
u16 sub_02014F64(u32 param0);
BOOL sub_02014F8C(const UnkStruct_02014EC4 *param0, int param1);
void sub_02014F98(UnkStruct_02014EC4 *param0, int param1);
UnkStruct_02014FB0 *sub_02014FB0(enum HeapID heapID);
void sub_02014FF0(UnkStruct_02014FB0 *param0);
u32 sub_02015004(const UnkStruct_02014FB0 *param0);
u16 sub_02015008(const UnkStruct_02014FB0 *param0, u32 param1);
s16 sub_02015030(const UnkStruct_02014FB0 *param0, u16 param1);
#endif // POKEPLATINUM_UNK_02014D38_H

View File

@@ -7,7 +7,6 @@
#include "struct_decls/struct_0202D080_decl.h"
#include "struct_decls/struct_0202D750_decl.h"
#include "struct_decls/struct_0202D764_decl.h"
#include "struct_defs/sentence.h"
#include "struct_defs/struct_0202D314.h"
#include "struct_defs/struct_02049A68.h"
@@ -16,6 +15,7 @@
#include "overlay096/struct_ov96_0223B450_sub2.h"
#include "overlay104/frontier_data_transfer.h"
#include "easy_chat_sentence.h"
#include "savedata.h"
#define BATTLE_POINTS_FUNC_NONE 0
@@ -46,8 +46,8 @@ u16 sub_0202D3FC(UnkStruct_0202D750 *param0, u16 param1, u16 param2);
BOOL sub_0202D414(UnkStruct_0202D750 *param0, u16 param1, int param2);
void sub_0202D470(UnkStruct_0202D750 *param0, u32 param1);
u32 sub_0202D474(UnkStruct_0202D750 *param0);
void sub_0202D478(SaveData *saveData, int param1, Sentence *param2);
Sentence *sub_0202D498(SaveData *saveData, int param1);
void sub_0202D478(SaveData *saveData, int param1, EasyChatSentence *param2);
EasyChatSentence *sub_0202D498(SaveData *saveData, int param1);
void sub_0202D4B0(UnkStruct_0202D764 *param0, u8 param1, u8 param2, RTCDate *param3);
void sub_0202D514(UnkStruct_0202D764 *param0);
BOOL sub_0202D558(UnkStruct_0202D764 *param0, u8 param1, u8 param2, RTCDate *param3);

View File

@@ -1,23 +0,0 @@
#ifndef POKEPLATINUM_UNK_02030108_H
#define POKEPLATINUM_UNK_02030108_H
#include "struct_decls/struct_02030114_decl.h"
#include "struct_decls/struct_0203026C_decl.h"
#include "savedata.h"
void sub_02030108(UnkStruct_02030114 *param0);
UnkStruct_02030114 *sub_02030114(SaveData *saveData);
BOOL sub_02030124(UnkStruct_02030114 *param0);
void sub_0203012C(UnkStruct_02030114 *param0, BOOL param1);
void sub_02030140(UnkStruct_02030114 *param0, u8 param1, u8 param2, u8 param3, const void *param4);
u32 sub_02030198(UnkStruct_02030114 *param0, u8 param1, u8 param2, u8 param3, void *param4);
u8 BattleHall_GetRankOfType(u8 idx, u8 *typeRanks);
void sub_02030204(u8 param0, u8 *param1, u8 param2);
void sub_02030244(u8 *param0);
void sub_02030260(UnkStruct_0203026C *param0);
UnkStruct_0203026C *sub_0203026C(SaveData *saveData);
void sub_02030280(UnkStruct_0203026C *param0, u8 param1, u8 param2, u8 param3, const void *param4);
u32 sub_020302B4(UnkStruct_0203026C *param0, u8 param1, u8 param2, u8 param3, void *param4);
#endif // POKEPLATINUM_UNK_02030108_H

View File

@@ -2,8 +2,8 @@
#define POKEPLATINUM_UNK_02030A80_H
#include "struct_decls/struct_02030A80_decl.h"
#include "struct_defs/sentence.h"
#include "easy_chat_sentence.h"
#include "savedata.h"
#include "string_gf.h"
@@ -17,7 +17,7 @@ int sub_02030BCC(const UnkStruct_02030A80 *param0);
int sub_02030BEC(const UnkStruct_02030A80 *param0);
int sub_02030BFC(const UnkStruct_02030A80 *param0);
int sub_02030C08(const UnkStruct_02030A80 *param0);
String *sub_02030C28(const UnkStruct_02030A80 *param0, Sentence *param1, enum HeapID heapID);
String *sub_02030C28(const UnkStruct_02030A80 *param0, EasyChatSentence *param1, enum HeapID heapID);
int sub_02030CCC(const UnkStruct_02030A80 *param0);
int sub_02030CDC(const UnkStruct_02030A80 *param0);

View File

@@ -3,9 +3,9 @@
#include <nitro/wm.h>
#include "struct_defs/sentence.h"
#include "struct_defs/struct_0203330C.h"
#include "easy_chat_sentence.h"
#include "trainer_info.h"
void CommServerClient_Init(TrainerInfo *param0, BOOL param1);
@@ -46,7 +46,7 @@ TrainerInfo *sub_02033FB0(int param0);
void sub_02033FDC(u8 *param0, int param1);
BOOL sub_0203406C(void);
void sub_0203408C(void);
void sub_020340A8(Sentence *param0);
void sub_020340A8(EasyChatSentence *param0);
void sub_020340C4(void *param0);
void *sub_020340E8(void);
void sub_020340FC(void);

View File

@@ -1,7 +1,7 @@
#ifndef POKEPLATINUM_UNK_0204FA34_H
#define POKEPLATINUM_UNK_0204FA34_H
#include "struct_decls/struct_0203026C_decl.h"
#include "struct_defs/battle_frontier.h"
#include "savedata.h"
@@ -15,6 +15,6 @@ typedef struct BattleHallSameSpeciesCheck {
} BattleHallSameSpeciesCheck;
void CommCmd_BattleHallSelectedSpeciesMsg(int netID, int unused, void *data, void *context);
void sub_0204FA50(SaveData *saveData, UnkStruct_0203026C *param1, u8 param2);
void sub_0204FA50(SaveData *saveData, BattleHallStreakFlags *param1, u8 param2);
#endif // POKEPLATINUM_UNK_0204FA34_H

View File

@@ -3,12 +3,12 @@
#include <nitro/wm.h>
#include "struct_decls/struct_02014EC4_decl.h"
#include "struct_decls/struct_0205B43C_decl.h"
#include "struct_defs/sentence.h"
#include "field/field_system_decl.h"
#include "easy_chat_sentence.h"
#include "easy_chat_words.h"
#include "string_template.h"
#include "sys_task_manager.h"
#include "trainer_info.h"
@@ -42,10 +42,10 @@ int UnionRoom_GetMessage(UnkStruct_0205B43C *param0, int param1, int msgType, St
u8 UnionRoom_GetCommInfoGameCode(void);
void sub_0205BEA8(int param0);
int UnionRoom_GetTealaMessage(UnkStruct_0205B43C *param0, StringTemplate *strTemplate);
void sub_0205C010(UnkStruct_0205B43C *param0, Sentence *param1);
Sentence *sub_0205C028(UnkStruct_0205B43C *param0);
void UnionRoom_DoGreeting(StringTemplate *strTemplate, int param1, int param2, TrainerInfo *playerTrainerInfo, UnkStruct_02014EC4 *param4);
void sub_0205C12C(Sentence *param0);
void sub_0205C010(UnkStruct_0205B43C *param0, EasyChatSentence *param1);
EasyChatSentence *sub_0205C028(UnkStruct_0205B43C *param0);
void UnionRoom_DoGreeting(StringTemplate *strTemplate, int param1, int param2, TrainerInfo *playerTrainerInfo, UnlockedEasyChatWords *unlockedWords);
void sub_0205C12C(EasyChatSentence *param0);
void sub_0205C154(UnkStruct_0205B43C *param0);
void *UnionRoom_GetTrainerCase(UnkStruct_0205B43C *param0);
void sub_0205C1F0(UnkStruct_0205B43C *param0);

View File

@@ -20,9 +20,9 @@ enum BattleFrontierStatsIndex BattleFrontierStats_GetFactoryLatestStreakIdx(u8 i
enum BattleFrontierStatsIndex BattleFrontierStats_GetFactoryRecordStreakIdx(u8 isOpenLevel, u8 challengeType);
enum BattleFrontierStatsIndex BattleFrontierStats_GetFactoryLatestTradeCountIndex(u8 isOpenLevel, u8 challengeType);
enum BattleFrontierStatsIndex BattleFrontierStats_GetFactoryRecordTradeCountIndex(u8 isOpenLevel, u8 challengeType);
enum BattleFrontierStatsIndex sub_0205E4E0(u8 param0, u8 param1);
enum BattleFrontierStatsIndex BattleFrontierStats_GetHallCurrentTypeRanksIndex(u8 challengeType, u8 pokemonType);
enum BattleFrontierStatsIndex BattleFrontierStats_GetHallLatestStreakIndex(u8 challengeType);
enum BattleFrontierStatsIndex sub_0205E534(u8 param0);
enum BattleFrontierStatsIndex BattleFrontierStats_GetHallCurrentStreakIndex(u8 challengeType);
enum BattleFrontierStatsIndex BattleFrontierStats_GetHallLatestSpeciesIndex(u8 challengeType);
enum BattleFrontierStatsIndex BattleFrontierStats_GetHallRecordStreakIndex(u8 challengeType);
enum BattleFrontierStatsIndex BattleFrontierStats_GetCastleRankIndex(u8 challengeType, u8 rankType);

View File

@@ -20,8 +20,8 @@ u16 *sub_0202AEF0(WiFiList *wiFiList, int param1);
void sub_0202AF0C(WiFiList *wiFiList, int param1, String *param2);
u16 *sub_0202AF34(WiFiList *wiFiList, int param1);
void sub_0202AF50(WiFiList *wiFiList, int param1, String *param2);
BOOL sub_0202AF78(WiFiList *wiFiList, int param1);
int sub_0202AF94(WiFiList *wiFiList);
BOOL WiFiList_IsValidFriendData(WiFiList *wiFiList, int param1);
int WiFiList_GetValidFriendsCount(WiFiList *wiFiList);
int sub_0202AFB4(WiFiList *wiFiList);
void sub_0202AFD4(WiFiList *wiFiList, int param1);
void sub_0202B0F8(WiFiList *wiFiList);

Some files were not shown because too many files have changed in this diff Show More