mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-09-07 09:15:52 -05:00
Merge remote-tracking branch 'upstream/main' into comm_command
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
63
docs/datafiles/ingame_trades.md
Normal file
63
docs/datafiles/ingame_trades.md
Normal 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` (0–31) | HP Individual Value (stored in 5 bits). |
|
||||
| `atkIV` | `u8` (0–31) | Attack Individual Value (stored in 5 bits). |
|
||||
| `defIV` | `u8` (0–31) | Defense Individual Value (stored in 5 bits). |
|
||||
| `speedIV` | `u8` (0–31) | Speed Individual Value (stored in 5 bits). |
|
||||
| `spAtkIV` | `u8` (0–31) | Special Attack Individual Value (stored in 5 bits). |
|
||||
| `spDefIV` | `u8` (0–31) | 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
166
docs/datafiles/items.md
Normal 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 (0–4). |
|
||||
| `defStages` | `u8` | Defense stage change (0–4). |
|
||||
| `spatkStages` | `u8` | Special Attack stage change (0–4). |
|
||||
| `spdefStages` | `u8` | Special Defense stage change (0–4). |
|
||||
| `speedStages` | `u8` | Speed stage change (0–4). |
|
||||
| `accStages` | `u8` | Accuracy stage change (0–4). |
|
||||
| `critStages` | `u8` | Critical-hit ratio stage change (0–2). |
|
||||
| `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
361
docs/datafiles/pokemon.md
Normal 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 (0–255). |
|
||||
| `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
231
docs/datafiles/trainers.md
Normal 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 (0–255). |
|
||||
| `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": [
|
||||
"You’re 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"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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' },
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
42
include/battle_hall_save.h
Normal file
42
include/battle_hall_save.h
Normal 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
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
9
include/constants/vs_seeker.h
Normal file
9
include/constants/vs_seeker.h
Normal 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
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
46
include/easy_chat_sentence.h
Normal file
46
include/easy_chat_sentence.h
Normal 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
61
include/easy_chat_words.h
Normal 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
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
@@ -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);
|
||||
|
||||
22
include/overlay005/veilstone_gym_object_renderer.h
Normal file
22
include/overlay005/veilstone_gym_object_renderer.h
Normal 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
|
||||
8
include/overlay007/battle_regulation_menu.h
Normal file
8
include/overlay007/battle_regulation_menu.h
Normal 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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
typedef struct PlayerData {
|
||||
u16 cyclingGear;
|
||||
u16 runningShoes;
|
||||
u32 form;
|
||||
u32 playerState;
|
||||
} PlayerData;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_DEF_PLAYER_DATA_H
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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];
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user