Implement moveproc, restructure move-related assets, and begin documenting the dataproc toolchain (#1176)
Some checks failed
build / build (push) Has been cancelled

This commit is contained in:
scbroede
2026-05-24 18:48:41 -04:00
committed by GitHub
2116 changed files with 4527 additions and 19941 deletions

View File

@@ -1,10 +1,10 @@
#include "generated/sdat.h"
#include "constants/battle/battle_anim.h"
#include "res/battle/particles/battle_particles.naix"
#include "res/graphics/battle/moves/anim_ncer.naix"
#include "res/graphics/battle/moves/anim_nanr.naix"
#include "res/graphics/battle/moves/anim_ncgr.naix"
#include "res/graphics/battle/moves/anim_nclr.naix"
#include "res/graphics/battle/particles/battle_particles.naix"
#include "macros/btlanimfunc.inc"
#include "data/scripts/btlanimcmd.h"

View File

@@ -83,7 +83,7 @@ or Uproar is in effect.
trigger.
</details>
**Fix:** Edit [`res/battle/res/scripts/subscript_pursuit.s`](https://github.com/pret/pokeplatinum/blob/main/res/battle/scripts/subscripts/subscript_pursuit.s)
**Fix:** Edit [`res/battle/scripts/subscripts/subscript_pursuit.s`](https://github.com/pret/pokeplatinum/blob/main/res/battle/scripts/subscripts/subscript_pursuit.s)
```diff
UpdateVar OPCODE_ADD, BTLVAR_FAINTED_MON, BATTLER_ENEMY_1
@@ -167,7 +167,7 @@ as having a score equivalent to 65 rather than 320.
Due to the delays between scale commands being too short, they overlap with
each other, resulting in the sprite permanently moving upward.
**Fix:** Increase the `Delay` values in [`res/battle/moves/facade/anim.s`](https://github.com/pret/pokeplatinum/blob/main/res/battle/moves/facade/anim.s)
**Fix:** Increase the `Delay` values in [`res/moves/facade/anim.s`](https://github.com/pret/pokeplatinum/blob/main/res/moves/facade/anim.s)
```diff
- Delay 8
@@ -186,7 +186,7 @@ Also update the sound effect timings to sync with the new delays:
Due to the delays between shake commands being too short, they overlap with
each other, resulting in the sprite permanently moving left.
**Fix:** Increase the `Delay` value in [`res/battle/moves/dynamic_punch/anim.s`](https://github.com/pret/pokeplatinum/blob/e7c9da4c9ff9e9c70c82fd03714cf9a9674d71cc/res/battle/moves/dynamic_punch/anim.s#L18)
**Fix:** Increase the `Delay` value in [`res/moves/dynamic_punch/anim.s`](https://github.com/pret/pokeplatinum/blob/main/res/moves/dynamic_punch/anim.s#L18)
```diff
- Delay 3
@@ -198,7 +198,7 @@ each other, resulting in the sprite permanently moving left.
Due to the delays between shake commands being too short, they overlap with
each other, resulting in the sprite permanently moving left.
**Fix:** Move the `Delay 1` command into the loop in [`res/battle/moves/helping_hand/anim.s`](https://github.com/pret/pokeplatinum/blob/e7c9da4c9ff9e9c70c82fd03714cf9a9674d71cc/res/battle/moves/helping_hand/anim.s#L19)
**Fix:** Move the `Delay 1` command into the loop in [`res/moves/helping_hand/anim.s`](https://github.com/pret/pokeplatinum/blob/main/res/moves/helping_hand/anim.s#L19)
```diff

215
docs/datafiles/moves.md Normal file
View File

@@ -0,0 +1,215 @@
# Move Data File Format
This document describes the file format for move data consumed by the `moveproc`
build tool. Each move in the ROM is represented by a subdirectory
`res/moves/<name>`, which must contain the following files:
| File | Purpose |
| ----------- | -------------------------------------------------- |
| `data.json` | Internal metadata (stats, type, flags, text, etc.) |
| `anim.s` | Animation script used in battles and contests |
| `script.s` | Execution script used in battles |
## `data.json` - Internal Metadata
Each move's directory contains a single `data.json` file consumed by
`tools/dataproc/src/moveproc.c`. The JSON fields map directly onto the
`MoveTable` struct from `include/move_table.h` and associated text banks.
### Schema
| Field | Type | Description |
| ---------------- | ------------------------- | -------------------------------------------------------------------------- |
| `name` | `string` | The move's display name. |
| `description` | `string[]` | The move's description (e.g., on the summary screen) as an array of lines. |
| `class` | `enum MoveCategory` | The classification of the move: Physical, Special, or Status. |
| `type` | `enum PokemonType` | The type of the move: Fire, Water, etc. |
| `power` | `u8` | Base power of the move. Status moves typically have power 0. |
| `accuracy` | `u8` | Chance to hit, out of 100. A value of 0 never misses. May not exceed 100. |
| `pp` | `u8` | Base PP, before any PP Ups are applied. |
| `effect.type` | `enum MoveBattleEffect` | The primary battle effect. Maps to an effect script. |
| `effect.chance` | `u8` | Chance for the effect to be applied, out of 100. May not exceed 100. |
| `range` | `enum MoveRange` | Targeting range in battle. |
| `priority` | `s8` | Speed priority. May be negative, e.g., Roar, Trick Room. |
| `flags` | `enum MoveFlag[]` | Array of bitmask flags for important behaviors. May be empty. |
| `contest.effect` | `enum MoveContestEffect` | The primary contest effect. Maps to an effect script. |
| `contest.type` | `enum PokemonContestType` | The type of the move in contests: Cool, Cute, Beauty, Smart, Tough. |
The value of `name` is used to construct in-game text entries for:
1. The move's displayed name, e.g., in the Pokémon Summary Screen,
2. The move's displayed name in all uppercase, and
3. The in-battle text displayed when the move is used, of which there are three
variants:
1. When used by the player or an allied partner trainer,
2. When used by a wild Pokémon, and
3. When used by an enemy trainer's Pokémon.
### Example
```json
{
"name": "Ember",
"description": [
"The foe is attacked\n",
"with small flames.\n",
"The target may also\n",
"be left with a burn.\n"
],
"class": "CLASS_SPECIAL",
"type": "TYPE_FIRE",
"power": 40,
"accuracy": 100,
"pp": 25,
"effect": {
"type": "BATTLE_EFFECT_BURN_HIT",
"chance": 10
},
"range": "RANGE_SINGLE_TARGET",
"priority": 0,
"flags": [
"MOVE_FLAG_CAN_PROTECT",
"MOVE_FLAG_CAN_MIRROR_MOVE",
"MOVE_FLAG_HIDES_HP_GAUGES"
],
"contest": {
"effect": "CONTEST_EFFECT_BASIC",
"type": "CONTEST_TYPE_BEAUTY"
}
}
```
## `anim.s` — Animation Script
This script defines the commands executed to play the move's animation when used
in a battle or contest. Commands are defined by `asm/macros/btlanimcmd.inc`, and
some additional functions are available via `asm/macros/btlanimfunc.inc`.
### Example
```asm
#include "macros/btlanimcmd.inc"
L_0:
LoadParticleResource 0, ember_spa
CreateEmitter 0, 0, EMITTER_CB_GENERIC
SetExtraParams 0, 2, 2, 0, 0, 0
Func_FadeBattlerSprite BATTLE_ANIM_DEFENDER, 0, 1, BATTLE_COLOR_RED, 10, 0
Func_Shake 1, 0, 1, 2, BATTLE_ANIM_BATTLER_SPRITE_DEFENDER
PlayLoopedSoundEffectR SEQ_SE_DP_W052, 3, 4
WaitForAllEmitters
UnloadParticleSystem 0
End
```
## `script.s` — Battle Effect Script
This script defines the execution flow for a move when used in a battle. For
most moves, the following script is sufficient:
```asm
#include "macros/btlcmd.inc"
_000:
GoToEffectScript
```
Two-turn charge moves require some additional handling to support the text
displayed on their charge turn. For example, the following script is defined for
Solar Beam:
```asm
#include "macros/btlcmd.inc"
_000:
// {0} absorbed light!
BufferMessage BattleStrings_Text_PokemonAbsorbedLight_Ally, TAG_NICKNAME, BTLSCR_ATTACKER
GoToEffectScript
```
## Details for a Matching ROM
### Incorrect In-Battle Message for U-turn
The retail ROM shipped with in-battle text for the move U-turn that incorrectly
capitalizes it as "U-Turn". This is reflected in the code of
`tools/dataproc/src/moveproc.c`:
```c
char *nameline = strfmt2("%s!", name);
if (i == MOVE_U_TURN) { // MATCH DETAIL: The retail game uses "U-Turn" in battle instead of "U-turn"
nameline[2] = 'T';
}
```
To correct this oversight, remove the edge-case branch:
```diff
char *nameline = strfmt2("%s!", name);
- if (i == MOVE_U_TURN) { // MATCH DETAIL: The retail game uses "U-Turn" in battle instead of "U-turn"
- nameline[2] = 'T';
- }
```
### Bogus Moves
The retail ROM shipped with a set of bogus / unused move entries beyond the
accessible bounds. The animation and execution scripts for these entries are
provided in the `res/moves/.shared` directory, while their metadata is embedded
directly in the `moveproc` build tool. If you are using this project as the base
for a mod, then they can be deleted as follows:
#### `tools/dataproc/src/moveproc.c`
Delete the function definitions for `pack_extra_moves` and `prep_extra_scripts`.
Then, clean up the following references:
```diff
static void prep_scripts(const char *basename);
-static void pack_extra_moves(void);
-static void prep_extra_scripts(void);
static void init_orderfiles(void);
```
```diff
- pack_extra_moves();
- prep_extra_scripts();
return common_done(errc, close_orderfiles);
```
Additionally, remove the following line:
```diff
enum_seq_t moves = common_initenum(
filename, "Move",
.sourcefile = __FILE__,
.depfile = depfile_path,
.outdir = output_dir,
.format = DATAPROC_F_JSON,
.enums = enums,
.archives = archives,
.textbanks = textbanks,
- .extra_files = 3,
.hook_before = init_orderfiles,
);
```
#### `res/moves/meson.build`
Make the following change:
```diff
move_text_banks = move_data_outputs.slice(3, move_data_outputs.length())
-anim_script_srcs = files(
- '.shared/anim_0468_0474.s',
- '.shared/anim_0475_0500.s',
-)
-
-move_script_srcs = files('.shared/script_0468_0500.s')
+anim_script_srcs = []
+move_script_srcs = []
move_script_srcdir = meson.current_source_dir()
```

111
docs/datafiles/overview.md Normal file
View File

@@ -0,0 +1,111 @@
# Overview of Processing Tools for Data Files
The build pipeline uses a suite of custom compiler tools in `tools/dataproc` to
bridge plain-text data files into game-ready binary data. These tools leverage
a common interface for querying any given data markup format defined by
`lib/dataproc.c`. Additionally, this common interface provides validation
routines for common types and rich error reporting.
The driver implementations of these tools (e.g., `src/speciesproc.c`) also make
use of shared infrastructure from `src/common.c` to:
1. Parse C enums and preprocessor definitions from headers into lookup tables,
2. Generate output header files using `.template` files from the `data`
subdirectory,
3. Create output NARC files using `libnitroarc`, and
4. Write dependency files at runtime for correct builds.
## Tools
| Tool | Input | Output |
| -------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| `dexproc` | Regional Pokédex JSON | Mappings of species to their regional and national Pokédex order. |
| `frontierproc` | `res/trainers/frontier/{data,pokemon}/*.json` | Battle Frontier Pokémon pools and trainer definitions. |
| `itemproc` | `res/items/data/*.json` + `include/constants/items.h` | Item metadata, hidden-item script definitions, item-to-icon mappings, TM-to-move mappings. |
| `moveproc` | `res/moves/<name>/data.json` + `include/constants/moves.h` | Move metadata, in-game battle text, and animation scripts. |
| `npctradeproc` | `res/npc_trades/*.json` + `include/constants/npc_trades.h` | Pokémon offered by NPCs for an in-game trade. |
| `resdatproc` | Sprite template JSON + NARC ID maps | Serialized sprite templates to be loaded from the filesystem. |
| `speciesproc` | `res/pokemon/<species>/data.json` | Pokémon base stats, evolutions, learnsets, and sprite positions. |
| `trainerproc` | `res/trainers/data/*.json` | Trainer metadata, including their parties, in-battle messages, and overworld messages. |
## Common Patterns and Conventions
Each tool follows a similar structure. The following static variables are first
defined to provide a base environment:
1. Constants to be loaded into lookup-tables, defined in an array `enums[]`.
These lookup tables enable referencing in-game constants from JSON files from
their identifiers.
2. Any archives to be created which are sized according to the input, defined in
an array `archives[]`. For example, `moveproc` defines `move_data.narc` here,
which is known to contain one entry for each in-game move.
3. Any C headers to be generated, defined in an array `headers[]`. Headers are
instantiated with a header and footer according to a corresponding
`.template` file in `tools/dataproc/data`. For example, `itemproc` produces
`item_tm_move_map.h`, which is constructed using
`tools/dataproc/data/item_tm_move_map.h.template`.
4. Any text banks to be generated, defined in an array `textbanks[]`. For
example, `npctradeproc` produces `npc_trade_names.json`, which contains the
nickname and trainer name applied to each in-game trade.
Then, the processing code executes in the main loop. The following snippet
illustrates the processing code from `moveproc`, with additional comments
annotating the control flow:
```c
int main(int argc, char **argv) {
int errc = EXIT_SUCCESS;
datafile_t df = { 0 };
parse_args(&argc, &argv);
// Instantiate the processing environment. This will load the input filename
// passed as a program argument and look for "enum Move" inside its content.
// This enum provides the base number of files for the output archives.
//
// The init_orderfiles function passed to .hook_before will be executed after
// the base library is instantiated, but before any output files are
// initialized.
enum_seq_t moves = common_initenum(
filename, "Move",
.sourcefile = __FILE__,
.depfile = depfile_path,
.outdir = output_dir,
.format = DATAPROC_F_JSON,
.enums = enums,
.archives = archives,
.textbanks = textbanks,
.extra_files = 3,
.hook_before = init_orderfiles,
);
// Process individual files, using the names from the input enum as an
// authority for subdirectories in the asset tree.
for (size_t i = 0; i < moves.size; i++) {
const char *stem = moves.members[i].name + lengthof("MOVE_");
char *basename = strlower(stem);
char *filepath = pathjoin(base_dir, basename, "data.json");
declare_dep(filepath);
if (dp_load(&df, filepath) == 0) {
proc_move(&df);
proc_text(&df, i, basename);
prep_scripts(basename);
}
// Report any diagnostics found during processing.
if (dp_report(&df) == DIAG_ERROR) errc = EXIT_FAILURE;
free(basename);
free(filepath);
dp_free(&df);
}
// Handle any additional processing tasks before sealing the output files
// and exiting the program.
pack_extra_moves();
prep_extra_scripts();
return common_done(errc, close_orderfiles);
}
```

View File

@@ -12,6 +12,11 @@ For more detailed information about the project as a whole, please refer to its
- [Fixes for Various Bugs and Glitches](bugs_and_glitches.md)
## Working with Files for Various Data Types
- [Overview of the Processing Tools](datafiles/overview.md)
- [Moves](datafiles/moves.md)
## Subsystems
- [2D Graphics](2d_rendering.md)

View File

@@ -25,7 +25,6 @@ metang_generators = {
'battle_context_params': { 'type': 'enum', 'tag': 'BattleContextParam' },
'battle_message_tags': { 'type': 'enum', 'tag': 'BattleMessageTag' },
'battle_mon_params': { 'type': 'enum', 'tag': 'BattleMonParam' },
'battle_move_effects': { 'type': 'enum', 'tag': 'BattleMoveEffect' },
'battle_move_subscript_ptrs': { 'type': 'enum', 'tag': 'BattleMoveSubscriptPtr' },
'battle_script_battlers': { 'type': 'enum', 'tag': 'Battler' },
'battle_script_check_side_condition_ops': { 'type': 'enum', 'tag': 'BattleScriptCheckSideConditionOp' },
@@ -43,7 +42,6 @@ metang_generators = {
'bg_event_dirs': { 'type': 'enum', 'tag': 'BgEventDir' },
'bg_event_types': { 'type': 'enum', 'tag': 'BgEventType' },
'catching_show_points_category': { 'type': 'enum', 'tag': 'CatchingShowPointsCategory' },
'contest_effects': { 'type': 'enum', 'tag': 'ContestEffects' },
'comm_club_ret_codes': { 'type': 'enum', 'tag': 'CommClubRetCode' },
'days_of_week': { 'type': 'enum', 'tag': 'DayOfWeek' },
'distribution_events': { 'type': 'enum', 'tag': 'DistributionEvent' },
@@ -69,7 +67,9 @@ metang_generators = {
'map_headers': { 'type': 'enum', 'tag': 'MapHeader' },
'maps': { 'type': 'enum', 'tag': 'MapID' },
'move_attributes': { 'type': 'enum', 'tag': 'MoveAttribute' },
'move_battle_effects': { 'type': 'enum', 'tag': 'MoveBattleEffect' },
'move_classes': { 'type': 'enum', 'tag': 'MoveClass' },
'move_contest_effects': { 'type': 'enum', 'tag': 'MoveContestEffect' },
'move_flags': { 'type': 'mask', 'tag': 'MoveFlag' },
'move_ranges': { 'type': 'mask', 'tag': 'MoveRange', 'extra': ['--no-auto'] },
'movement_actions': { 'type': 'enum', 'tag': 'MovementAction' },

View File

@@ -14,12 +14,12 @@
#include "generated/battle_context_params.h"
#include "generated/battle_message_tags.h"
#include "generated/battle_mon_params.h"
#include "generated/battle_move_effects.h"
#include "generated/battle_move_subscript_ptrs.h"
#include "generated/battle_side_effect_types.h"
#include "generated/battle_stats.h"
#include "generated/battle_sub_animations.h"
#include "generated/battle_terrains.h"
#include "generated/move_battle_effects.h"
#define BATTLE_TYPE_SINGLES (0 << 0)
#define BATTLE_TYPE_WILD_MON (0 << 0)

View File

@@ -1,7 +1,7 @@
#ifndef POKEPLATINUM_UNK_02094EDC_H
#define POKEPLATINUM_UNK_02094EDC_H
#include "generated/contest_effects.h"
#include "generated/move_contest_effects.h"
#include "generated/pokemon_contest_ranks.h"
#include "generated/pokemon_contest_types.h"
@@ -19,7 +19,7 @@ void sub_02095338(Contest *contest);
void sub_02095380(const UnkStruct_ov6_02248BE8 *param0, Pokemon *param1, enum HeapID heapID);
PokemonSprite *sub_02095484(PokemonSpriteManager *param0, int param1, Pokemon *param2, int param3, PokemonSpriteData *pokemonSpriteData, enum HeapID heapID, int param6, int param7, int param8);
void sub_020954F0(Contest *contest, enum HeapID heapID, int param2, enum PokemonContestType contestType, enum PokemonContestRank contestRank);
s8 sub_02095734(enum ContestEffects contestEffect);
s8 sub_02095734(enum MoveContestEffect contestEffect);
void Contest_LoadTwoLineContestEffectMessages(int moveContestEffectID, u32 *lineOneEffectMessageID, u32 *lineTwoEffectMessageID);
u32 sub_0209577C(int param0);
void sub_02095790(int contestMoveEffect, int param1, u32 *param2, u32 *param3);

View File

@@ -175,7 +175,7 @@ res/prebuilt/battle/graphic/pl_b_plist_gra.narc,/battle/graphic/pl_b_plist_gra.n
res/prebuilt/battle/graphic/pl_batt_bg.narc,/battle/graphic/pl_batt_bg.narc
res/graphics/battle/sprites.narc,/battle/graphic/pl_batt_obj.narc
res/prebuilt/battle/graphic/vs_demo_gra.narc,/battle/graphic/vs_demo_gra.narc
res/battle/moves/anim_scripts.narc,/wazaeffect/we.arc
res/moves/anim_scripts.narc,/wazaeffect/we.arc
res/battle/scripts/common_anims/anim_subscripts.narc,/wazaeffect/we_sub.narc
res/battle/scripts/be_seq.narc,/battle/skill/be_seq.narc
res/battle/scripts/sub_seq.narc,/battle/skill/sub_seq.narc
@@ -184,7 +184,7 @@ res/graphics/battle/moves/anim_ncer.narc,/wazaeffect/effectclact/wecell.narc
res/graphics/battle/moves/anim_nanr.narc,/wazaeffect/effectclact/wecellanm.narc
res/graphics/battle/moves/anim_ncgr.narc,/wazaeffect/effectclact/wechar.narc
res/graphics/battle/moves/anim_nclr.narc,/wazaeffect/effectclact/wepltt.narc
res/battle/moves/pl_waza_tbl.narc,/poketool/waza/pl_waza_tbl.narc
res/moves/move_data.narc,/poketool/waza/pl_waza_tbl.narc
res/prebuilt/poketool/waza/waza_tbl.narc,/poketool/waza/waza_tbl.narc
res/field/scripts/scr_seq.narc,/fielddata/script/scr_seq.narc
res/prebuilt/graphic/bag_gra.narc,/graphic/bag_gra.narc
@@ -254,8 +254,8 @@ res/prebuilt/poketool/icongra/poke_icon.narc,/poketool/icongra/poke_icon.narc
res/pokemon/pokefoot.narc,/poketool/pokefoot/pokefoot.narc
res/prebuilt/data/mmodel/mmodel.narc,/data/mmodel/mmodel.narc
res/prebuilt/data/mmodel/fldeff.narc,/data/mmodel/fldeff.narc
res/battle/particles/pokeballs/ball_particles.narc,/wazaeffect/effectdata/ball_particle.narc
res/battle/particles/battle_particles.narc,/wazaeffect/effectdata/waza_particle.narc
res/graphics/battle/particles/pokeballs/ball_particles.narc,/wazaeffect/effectdata/ball_particle.narc
res/graphics/battle/particles/battle_particles.narc,/wazaeffect/effectdata/waza_particle.narc
res/field/events/zone_event.narc,/fielddata/eventdata/zone_event.narc
res/prebuilt/fielddata/encountdata/d_enc_data.narc,/fielddata/encountdata/d_enc_data.narc
res/prebuilt/fielddata/encountdata/p_enc_data.narc,/fielddata/encountdata/p_enc_data.narc
1 Source File Target File
175 res/prebuilt/battle/graphic/pl_batt_bg.narc /battle/graphic/pl_batt_bg.narc
176 res/graphics/battle/sprites.narc /battle/graphic/pl_batt_obj.narc
177 res/prebuilt/battle/graphic/vs_demo_gra.narc /battle/graphic/vs_demo_gra.narc
178 res/battle/moves/anim_scripts.narc res/moves/anim_scripts.narc /wazaeffect/we.arc
179 res/battle/scripts/common_anims/anim_subscripts.narc /wazaeffect/we_sub.narc
180 res/battle/scripts/be_seq.narc /battle/skill/be_seq.narc
181 res/battle/scripts/sub_seq.narc /battle/skill/sub_seq.narc
184 res/graphics/battle/moves/anim_nanr.narc /wazaeffect/effectclact/wecellanm.narc
185 res/graphics/battle/moves/anim_ncgr.narc /wazaeffect/effectclact/wechar.narc
186 res/graphics/battle/moves/anim_nclr.narc /wazaeffect/effectclact/wepltt.narc
187 res/battle/moves/pl_waza_tbl.narc res/moves/move_data.narc /poketool/waza/pl_waza_tbl.narc
188 res/prebuilt/poketool/waza/waza_tbl.narc /poketool/waza/waza_tbl.narc
189 res/field/scripts/scr_seq.narc /fielddata/script/scr_seq.narc
190 res/prebuilt/graphic/bag_gra.narc /graphic/bag_gra.narc
254 res/pokemon/pokefoot.narc /poketool/pokefoot/pokefoot.narc
255 res/prebuilt/data/mmodel/mmodel.narc /data/mmodel/mmodel.narc
256 res/prebuilt/data/mmodel/fldeff.narc /data/mmodel/fldeff.narc
257 res/battle/particles/pokeballs/ball_particles.narc res/graphics/battle/particles/pokeballs/ball_particles.narc /wazaeffect/effectdata/ball_particle.narc
258 res/battle/particles/battle_particles.narc res/graphics/battle/particles/battle_particles.narc /wazaeffect/effectdata/waza_particle.narc
259 res/field/events/zone_event.narc /fielddata/eventdata/zone_event.narc
260 res/prebuilt/fielddata/encountdata/d_enc_data.narc /fielddata/encountdata/d_enc_data.narc
261 res/prebuilt/fielddata/encountdata/p_enc_data.narc /fielddata/encountdata/p_enc_data.narc

View File

@@ -174,7 +174,7 @@ c9baf056c8646bc0bc826bbc98f5cbd439643f3d *res/prebuilt/battle/graphic/batt_obj.n
2fafdda86f7f740e2843c95382f08dfac35fa64f *res/prebuilt/battle/graphic/pl_batt_bg.narc
db5906303178da70f6b6c852990df560fb4dfeba *res/graphics/battle/sprites.narc
955ce80b532be2184c62c36a6cb9d6b68c4669dd *res/prebuilt/battle/graphic/vs_demo_gra.narc
c7e601f3c145dd3c36c6f1deee1f63d526be3c37 *res/battle/moves/anim_scripts.narc
c7e601f3c145dd3c36c6f1deee1f63d526be3c37 *res/moves/anim_scripts.narc
30bb77e76c27874bc8ff923b33492595f1a377e2 *res/battle/scripts/common_anims/anim_subscripts.narc
20e86a2ef9050edef59a91bfcefcc2869ab29349 *res/battle/scripts/be_seq.narc
b646973b4c92a1d25479c5b08d28ff283274db33 *res/battle/scripts/sub_seq.narc
@@ -183,7 +183,7 @@ abbe7036e7117af7f4fd397cd3619b83f5e1d321 *res/battle/scripts/waza_seq.narc
82101cf2a686e2834dd45fa0a6c11407120b863d *res/graphics/battle/moves/anim_nanr.narc
8aa94ec2f9b21eab75e33d2a21b83a61c55e67b0 *res/graphics/battle/moves/anim_ncgr.narc
e3bb819c8dbab8a8db5e4ddccc788b234424e605 *res/graphics/battle/moves/anim_nclr.narc
42e2b71655a74d6e5bffb9ec75a25df930b20c59 *res/battle/moves/pl_waza_tbl.narc
42e2b71655a74d6e5bffb9ec75a25df930b20c59 *res/moves/move_data.narc
20a2a364629e4eb897f3cf443e15e65b7f1ac957 *res/prebuilt/poketool/waza/waza_tbl.narc
9f4d3587b7032f4f673ccc1b8971685b2199396b *res/field/scripts/scr_seq.narc
86e4a1030a0f3939eff107e94023140dd91acf6a *res/prebuilt/graphic/bag_gra.narc
@@ -253,8 +253,8 @@ a2eca9df316b9cad191ace16d08a90603966e892 *res/prebuilt/graphic/worldtrade.narc
7fb44c0bcde2ac5ae042835146c21b84159f5693 *res/pokemon/pokefoot.narc
21bd9b9e352c828de0a93979589f7ea487c846d6 *res/prebuilt/data/mmodel/mmodel.narc
70d483c69d9f83dc52de91f2451c6cdfba6a046c *res/prebuilt/data/mmodel/fldeff.narc
5de52d02105237dc02fb4c87c9b8378a5da93217 *res/battle/particles/pokeballs/ball_particles.narc
bd80949f0ab84fe4b4963a41063088b2e2d6df92 *res/battle/particles/battle_particles.narc
5de52d02105237dc02fb4c87c9b8378a5da93217 *res/graphics/battle/particles/pokeballs/ball_particles.narc
bd80949f0ab84fe4b4963a41063088b2e2d6df92 *res/graphics/battle/particles/battle_particles.narc
e484a4ea105e16977b9f39b965aaad014a4ec923 *res/field/events/zone_event.narc
bda5c8e66cfa121c2d518d4388bd6f742746cda0 *res/prebuilt/fielddata/encountdata/d_enc_data.narc
4bcbf53d522ed962160b85af588816f7257fb1c3 *res/prebuilt/fielddata/encountdata/p_enc_data.narc

View File

@@ -1,35 +1 @@
# We must walk into this directory first; all other battle-scripts need access
# to the index for the battle particles NARC.
subdir('particles')
# This generator is shared by both move-specific animations (in the `moves`
# directory) and common animations (in the `scripts/common_anims` directory).
battle_anim_script_bin_gen = generator(make_script_bin_sh,
arguments: [
'-i', relative_source_root / 'include',
'-i', relative_source_root / 'asm',
'-i', '.',
'--depfile', '@DEPFILE@',
'--enumproc', enumproc_exe.full_path(),
'--assembler', arm_none_eabi_gcc_exe.full_path(),
'--objcopy', arm_none_eabi_objcopy_exe.full_path(),
'@EXTRA_ARGS@',
'@INPUT@',
],
depends: [
enumproc_exe,
text_banks,
c_consts_generators,
h_headers,
battle_particles_narc[1],
anim_ncer_narc_files[1],
anim_nanr_narc_files[1],
anim_ncgr_narc_files[1],
anim_nclr_narc_files[1],
],
output: '@BASENAME@',
depfile: '@BASENAME@.d',
)
subdir('moves')
subdir('scripts')

View File

@@ -1,23 +0,0 @@
{
"name": "",
"class": "CLASS_SPECIAL",
"type": "TYPE_NORMAL",
"power": 100,
"accuracy": 100,
"pp": 10,
"effect": {
"type": "BATTLE_EFFECT_HIT",
"chance": 0
},
"range": "RANGE_SINGLE_TARGET",
"priority": 0,
"flags": [
"MOVE_FLAG_CAN_PROTECT",
"MOVE_FLAG_CAN_MIRROR_MOVE",
"MOVE_FLAG_TRIGGERS_KINGS_ROCK"
],
"contest": {
"effect": "CONTEST_EFFECT_LOW_VOLTAGE_ADVANTAGE",
"type": "CONTEST_TYPE_BEAUTY"
}
}

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffectR SEQ_SE_DP_030
Delay 60
End

View File

@@ -1,23 +0,0 @@
{
"name": "",
"class": "CLASS_SPECIAL",
"type": "TYPE_NORMAL",
"power": 100,
"accuracy": 100,
"pp": 10,
"effect": {
"type": "BATTLE_EFFECT_HIT",
"chance": 0
},
"range": "RANGE_SINGLE_TARGET",
"priority": 0,
"flags": [
"MOVE_FLAG_CAN_PROTECT",
"MOVE_FLAG_CAN_MIRROR_MOVE",
"MOVE_FLAG_TRIGGERS_KINGS_ROCK"
],
"contest": {
"effect": "CONTEST_EFFECT_FIRST_PERFORMANCE_ADVANTAGE",
"type": "CONTEST_TYPE_CUTE"
}
}

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffectR SEQ_SE_DP_030
Delay 60
End

View File

@@ -1,23 +0,0 @@
{
"name": "",
"class": "CLASS_SPECIAL",
"type": "TYPE_NORMAL",
"power": 100,
"accuracy": 100,
"pp": 10,
"effect": {
"type": "BATTLE_EFFECT_HIT",
"chance": 0
},
"range": "RANGE_SINGLE_TARGET",
"priority": 0,
"flags": [
"MOVE_FLAG_CAN_PROTECT",
"MOVE_FLAG_CAN_MIRROR_MOVE",
"MOVE_FLAG_TRIGGERS_KINGS_ROCK"
],
"contest": {
"effect": "CONTEST_EFFECT_FINAL_PERFORMANCE_ADVANTAGE",
"type": "CONTEST_TYPE_SMART"
}
}

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffectR SEQ_SE_DP_030
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffectR SEQ_SE_DP_030
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffectR SEQ_SE_DP_030
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffectR SEQ_SE_DP_030
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,10 +0,0 @@
#include "macros/btlanimcmd.inc"
L_0:
Func_Nop
Func_AnimExample
Func_SoundExample
Func_GenericExample
PlaySoundEffect SEQ_SE_DP_BASI
Delay 60
End

View File

@@ -1,116 +0,0 @@
fs = import('fs')
pl_waza_tbl_subdirs = [
'0000',
'0468',
'0469',
'0470',
]
anim_script_subdirs = [
'0000',
'0468',
'0469',
'0470',
'0471',
'0472',
'0473',
'0474',
'0475',
'0476',
'0477',
'0478',
'0479',
'0480',
'0481',
'0482',
'0483',
'0484',
'0485',
'0486',
'0487',
'0488',
'0489',
'0490',
'0491',
'0492',
'0493',
'0494',
'0495',
'0496',
'0497',
'0498',
'0499',
'0500',
]
move_consts = fs.read(moves_txt).splitlines()
foreach move : move_consts
if move.startswith('MOVE_') and move != 'MOVE_NONE'
move_name = move.replace('MOVE_', '').to_lower()
pl_waza_tbl_subdirs += move_name
anim_script_subdirs += move_name
endif
endforeach
pl_waza_tbl_data_srcs = []
foreach subdir : pl_waza_tbl_subdirs
pl_waza_tbl_data_srcs += subdir / 'data.json'
endforeach
pl_waza_tbl_narc = custom_target('pl_waza_tbl.narc',
output: 'pl_waza_tbl.narc',
input: pl_waza_tbl_data_srcs,
env: jsoncnv_env,
depends: [ py_consts_generators ],
command: [
movedata_py,
'--narc', nitroarc_exe,
'--source-dir', '@CURRENT_SOURCE_DIR@',
'--private-dir', '@PRIVATE_DIR@',
'--output-dir', '@OUTDIR@',
]
)
anim_script_srcs = []
foreach subdir : anim_script_subdirs
anim_script_srcs += subdir / 'anim.s'
endforeach
relative_build_dir = fs.relative_to(meson.current_build_dir(), meson.project_build_root())
anim_scripts_root = meson.current_source_dir()
anim_scripts_basename = 'anim_scripts'
anim_scripts_narc_name = anim_scripts_basename + '.narc'
anim_scripts_order_name = anim_scripts_basename + '.order'
anim_scripts_private_dir = relative_build_dir / anim_scripts_narc_name + '.p'
anim_scripts_order = custom_target(anim_scripts_order_name,
output: anim_scripts_order_name,
input: [ moves_txt ],
command: [ ordergen_battle_anim_scripts_py, '@INPUT@', meson.current_source_dir(), '@OUTPUT@' ],
)
anim_scripts_narc = custom_target(anim_scripts_narc_name,
output: [
anim_scripts_narc_name,
],
input: battle_anim_script_bin_gen.process(
anim_script_srcs,
extra_args: ['--out-dir', anim_scripts_private_dir, '--parent-dir'],
preserve_path_from: anim_scripts_root,
),
command: [
nitroarc_exe,
'--create',
'--files-from', anim_scripts_order,
'--exclude', '*.d',
'--file', '@OUTPUT0@',
'@PRIVATE_DIR@',
],
)
nitrofs_files += pl_waza_tbl_narc
nitrofs_files += anim_scripts_narc

View File

@@ -1,6 +1,5 @@
subdir('common_anims')
subdir('effects')
subdir('moves')
subdir('subscripts')
relative_build_dir = fs.relative_to(meson.current_build_dir(), meson.project_build_root())
@@ -52,12 +51,17 @@ sub_seq_narc = custom_target(sub_seq_narc_name,
waza_seq_narc = custom_target(waza_seq_target_name,
output: waza_seq_target_name,
input: script_bin_gen.process(
move_script_files,
extra_args: ['--out-dir', waza_seq_private_dir]
move_script_srcs, # comes from `res/moves`
extra_args: [
'--out-dir', waza_seq_private_dir,
'--parent-dir',
],
preserve_path_from: move_script_srcdir,
),
command: [
nitroarc_exe,
'--create',
'--files-from', move_scripts_order,
'--file', '@OUTPUT0@',
'@PRIVATE_DIR@',
],

View File

@@ -1,503 +0,0 @@
move_script_files = files(
'move_script_0000.s',
'move_script_0001.s',
'move_script_0002.s',
'move_script_0003.s',
'move_script_0004.s',
'move_script_0005.s',
'move_script_0006.s',
'move_script_0007.s',
'move_script_0008.s',
'move_script_0009.s',
'move_script_0010.s',
'move_script_0011.s',
'move_script_0012.s',
'move_script_0013.s',
'move_script_0014.s',
'move_script_0015.s',
'move_script_0016.s',
'move_script_0017.s',
'move_script_0018.s',
'move_script_0019.s',
'move_script_0020.s',
'move_script_0021.s',
'move_script_0022.s',
'move_script_0023.s',
'move_script_0024.s',
'move_script_0025.s',
'move_script_0026.s',
'move_script_0027.s',
'move_script_0028.s',
'move_script_0029.s',
'move_script_0030.s',
'move_script_0031.s',
'move_script_0032.s',
'move_script_0033.s',
'move_script_0034.s',
'move_script_0035.s',
'move_script_0036.s',
'move_script_0037.s',
'move_script_0038.s',
'move_script_0039.s',
'move_script_0040.s',
'move_script_0041.s',
'move_script_0042.s',
'move_script_0043.s',
'move_script_0044.s',
'move_script_0045.s',
'move_script_0046.s',
'move_script_0047.s',
'move_script_0048.s',
'move_script_0049.s',
'move_script_0050.s',
'move_script_0051.s',
'move_script_0052.s',
'move_script_0053.s',
'move_script_0054.s',
'move_script_0055.s',
'move_script_0056.s',
'move_script_0057.s',
'move_script_0058.s',
'move_script_0059.s',
'move_script_0060.s',
'move_script_0061.s',
'move_script_0062.s',
'move_script_0063.s',
'move_script_0064.s',
'move_script_0065.s',
'move_script_0066.s',
'move_script_0067.s',
'move_script_0068.s',
'move_script_0069.s',
'move_script_0070.s',
'move_script_0071.s',
'move_script_0072.s',
'move_script_0073.s',
'move_script_0074.s',
'move_script_0075.s',
'move_script_0076.s',
'move_script_0077.s',
'move_script_0078.s',
'move_script_0079.s',
'move_script_0080.s',
'move_script_0081.s',
'move_script_0082.s',
'move_script_0083.s',
'move_script_0084.s',
'move_script_0085.s',
'move_script_0086.s',
'move_script_0087.s',
'move_script_0088.s',
'move_script_0089.s',
'move_script_0090.s',
'move_script_0091.s',
'move_script_0092.s',
'move_script_0093.s',
'move_script_0094.s',
'move_script_0095.s',
'move_script_0096.s',
'move_script_0097.s',
'move_script_0098.s',
'move_script_0099.s',
'move_script_0100.s',
'move_script_0101.s',
'move_script_0102.s',
'move_script_0103.s',
'move_script_0104.s',
'move_script_0105.s',
'move_script_0106.s',
'move_script_0107.s',
'move_script_0108.s',
'move_script_0109.s',
'move_script_0110.s',
'move_script_0111.s',
'move_script_0112.s',
'move_script_0113.s',
'move_script_0114.s',
'move_script_0115.s',
'move_script_0116.s',
'move_script_0117.s',
'move_script_0118.s',
'move_script_0119.s',
'move_script_0120.s',
'move_script_0121.s',
'move_script_0122.s',
'move_script_0123.s',
'move_script_0124.s',
'move_script_0125.s',
'move_script_0126.s',
'move_script_0127.s',
'move_script_0128.s',
'move_script_0129.s',
'move_script_0130.s',
'move_script_0131.s',
'move_script_0132.s',
'move_script_0133.s',
'move_script_0134.s',
'move_script_0135.s',
'move_script_0136.s',
'move_script_0137.s',
'move_script_0138.s',
'move_script_0139.s',
'move_script_0140.s',
'move_script_0141.s',
'move_script_0142.s',
'move_script_0143.s',
'move_script_0144.s',
'move_script_0145.s',
'move_script_0146.s',
'move_script_0147.s',
'move_script_0148.s',
'move_script_0149.s',
'move_script_0150.s',
'move_script_0151.s',
'move_script_0152.s',
'move_script_0153.s',
'move_script_0154.s',
'move_script_0155.s',
'move_script_0156.s',
'move_script_0157.s',
'move_script_0158.s',
'move_script_0159.s',
'move_script_0160.s',
'move_script_0161.s',
'move_script_0162.s',
'move_script_0163.s',
'move_script_0164.s',
'move_script_0165.s',
'move_script_0166.s',
'move_script_0167.s',
'move_script_0168.s',
'move_script_0169.s',
'move_script_0170.s',
'move_script_0171.s',
'move_script_0172.s',
'move_script_0173.s',
'move_script_0174.s',
'move_script_0175.s',
'move_script_0176.s',
'move_script_0177.s',
'move_script_0178.s',
'move_script_0179.s',
'move_script_0180.s',
'move_script_0181.s',
'move_script_0182.s',
'move_script_0183.s',
'move_script_0184.s',
'move_script_0185.s',
'move_script_0186.s',
'move_script_0187.s',
'move_script_0188.s',
'move_script_0189.s',
'move_script_0190.s',
'move_script_0191.s',
'move_script_0192.s',
'move_script_0193.s',
'move_script_0194.s',
'move_script_0195.s',
'move_script_0196.s',
'move_script_0197.s',
'move_script_0198.s',
'move_script_0199.s',
'move_script_0200.s',
'move_script_0201.s',
'move_script_0202.s',
'move_script_0203.s',
'move_script_0204.s',
'move_script_0205.s',
'move_script_0206.s',
'move_script_0207.s',
'move_script_0208.s',
'move_script_0209.s',
'move_script_0210.s',
'move_script_0211.s',
'move_script_0212.s',
'move_script_0213.s',
'move_script_0214.s',
'move_script_0215.s',
'move_script_0216.s',
'move_script_0217.s',
'move_script_0218.s',
'move_script_0219.s',
'move_script_0220.s',
'move_script_0221.s',
'move_script_0222.s',
'move_script_0223.s',
'move_script_0224.s',
'move_script_0225.s',
'move_script_0226.s',
'move_script_0227.s',
'move_script_0228.s',
'move_script_0229.s',
'move_script_0230.s',
'move_script_0231.s',
'move_script_0232.s',
'move_script_0233.s',
'move_script_0234.s',
'move_script_0235.s',
'move_script_0236.s',
'move_script_0237.s',
'move_script_0238.s',
'move_script_0239.s',
'move_script_0240.s',
'move_script_0241.s',
'move_script_0242.s',
'move_script_0243.s',
'move_script_0244.s',
'move_script_0245.s',
'move_script_0246.s',
'move_script_0247.s',
'move_script_0248.s',
'move_script_0249.s',
'move_script_0250.s',
'move_script_0251.s',
'move_script_0252.s',
'move_script_0253.s',
'move_script_0254.s',
'move_script_0255.s',
'move_script_0256.s',
'move_script_0257.s',
'move_script_0258.s',
'move_script_0259.s',
'move_script_0260.s',
'move_script_0261.s',
'move_script_0262.s',
'move_script_0263.s',
'move_script_0264.s',
'move_script_0265.s',
'move_script_0266.s',
'move_script_0267.s',
'move_script_0268.s',
'move_script_0269.s',
'move_script_0270.s',
'move_script_0271.s',
'move_script_0272.s',
'move_script_0273.s',
'move_script_0274.s',
'move_script_0275.s',
'move_script_0276.s',
'move_script_0277.s',
'move_script_0278.s',
'move_script_0279.s',
'move_script_0280.s',
'move_script_0281.s',
'move_script_0282.s',
'move_script_0283.s',
'move_script_0284.s',
'move_script_0285.s',
'move_script_0286.s',
'move_script_0287.s',
'move_script_0288.s',
'move_script_0289.s',
'move_script_0290.s',
'move_script_0291.s',
'move_script_0292.s',
'move_script_0293.s',
'move_script_0294.s',
'move_script_0295.s',
'move_script_0296.s',
'move_script_0297.s',
'move_script_0298.s',
'move_script_0299.s',
'move_script_0300.s',
'move_script_0301.s',
'move_script_0302.s',
'move_script_0303.s',
'move_script_0304.s',
'move_script_0305.s',
'move_script_0306.s',
'move_script_0307.s',
'move_script_0308.s',
'move_script_0309.s',
'move_script_0310.s',
'move_script_0311.s',
'move_script_0312.s',
'move_script_0313.s',
'move_script_0314.s',
'move_script_0315.s',
'move_script_0316.s',
'move_script_0317.s',
'move_script_0318.s',
'move_script_0319.s',
'move_script_0320.s',
'move_script_0321.s',
'move_script_0322.s',
'move_script_0323.s',
'move_script_0324.s',
'move_script_0325.s',
'move_script_0326.s',
'move_script_0327.s',
'move_script_0328.s',
'move_script_0329.s',
'move_script_0330.s',
'move_script_0331.s',
'move_script_0332.s',
'move_script_0333.s',
'move_script_0334.s',
'move_script_0335.s',
'move_script_0336.s',
'move_script_0337.s',
'move_script_0338.s',
'move_script_0339.s',
'move_script_0340.s',
'move_script_0341.s',
'move_script_0342.s',
'move_script_0343.s',
'move_script_0344.s',
'move_script_0345.s',
'move_script_0346.s',
'move_script_0347.s',
'move_script_0348.s',
'move_script_0349.s',
'move_script_0350.s',
'move_script_0351.s',
'move_script_0352.s',
'move_script_0353.s',
'move_script_0354.s',
'move_script_0355.s',
'move_script_0356.s',
'move_script_0357.s',
'move_script_0358.s',
'move_script_0359.s',
'move_script_0360.s',
'move_script_0361.s',
'move_script_0362.s',
'move_script_0363.s',
'move_script_0364.s',
'move_script_0365.s',
'move_script_0366.s',
'move_script_0367.s',
'move_script_0368.s',
'move_script_0369.s',
'move_script_0370.s',
'move_script_0371.s',
'move_script_0372.s',
'move_script_0373.s',
'move_script_0374.s',
'move_script_0375.s',
'move_script_0376.s',
'move_script_0377.s',
'move_script_0378.s',
'move_script_0379.s',
'move_script_0380.s',
'move_script_0381.s',
'move_script_0382.s',
'move_script_0383.s',
'move_script_0384.s',
'move_script_0385.s',
'move_script_0386.s',
'move_script_0387.s',
'move_script_0388.s',
'move_script_0389.s',
'move_script_0390.s',
'move_script_0391.s',
'move_script_0392.s',
'move_script_0393.s',
'move_script_0394.s',
'move_script_0395.s',
'move_script_0396.s',
'move_script_0397.s',
'move_script_0398.s',
'move_script_0399.s',
'move_script_0400.s',
'move_script_0401.s',
'move_script_0402.s',
'move_script_0403.s',
'move_script_0404.s',
'move_script_0405.s',
'move_script_0406.s',
'move_script_0407.s',
'move_script_0408.s',
'move_script_0409.s',
'move_script_0410.s',
'move_script_0411.s',
'move_script_0412.s',
'move_script_0413.s',
'move_script_0414.s',
'move_script_0415.s',
'move_script_0416.s',
'move_script_0417.s',
'move_script_0418.s',
'move_script_0419.s',
'move_script_0420.s',
'move_script_0421.s',
'move_script_0422.s',
'move_script_0423.s',
'move_script_0424.s',
'move_script_0425.s',
'move_script_0426.s',
'move_script_0427.s',
'move_script_0428.s',
'move_script_0429.s',
'move_script_0430.s',
'move_script_0431.s',
'move_script_0432.s',
'move_script_0433.s',
'move_script_0434.s',
'move_script_0435.s',
'move_script_0436.s',
'move_script_0437.s',
'move_script_0438.s',
'move_script_0439.s',
'move_script_0440.s',
'move_script_0441.s',
'move_script_0442.s',
'move_script_0443.s',
'move_script_0444.s',
'move_script_0445.s',
'move_script_0446.s',
'move_script_0447.s',
'move_script_0448.s',
'move_script_0449.s',
'move_script_0450.s',
'move_script_0451.s',
'move_script_0452.s',
'move_script_0453.s',
'move_script_0454.s',
'move_script_0455.s',
'move_script_0456.s',
'move_script_0457.s',
'move_script_0458.s',
'move_script_0459.s',
'move_script_0460.s',
'move_script_0461.s',
'move_script_0462.s',
'move_script_0463.s',
'move_script_0464.s',
'move_script_0465.s',
'move_script_0466.s',
'move_script_0467.s',
'move_script_0468.s',
'move_script_0469.s',
'move_script_0470.s',
'move_script_0471.s',
'move_script_0472.s',
'move_script_0473.s',
'move_script_0474.s',
'move_script_0475.s',
'move_script_0476.s',
'move_script_0477.s',
'move_script_0478.s',
'move_script_0479.s',
'move_script_0480.s',
'move_script_0481.s',
'move_script_0482.s',
'move_script_0483.s',
'move_script_0484.s',
'move_script_0485.s',
'move_script_0486.s',
'move_script_0487.s',
'move_script_0488.s',
'move_script_0489.s',
'move_script_0490.s',
'move_script_0491.s',
'move_script_0492.s',
'move_script_0493.s',
'move_script_0494.s',
'move_script_0495.s',
'move_script_0496.s',
'move_script_0497.s',
'move_script_0498.s',
'move_script_0499.s',
'move_script_0500.s'
)

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,5 +0,0 @@
#include "macros/btlcmd.inc"
_000:
GoToEffectScript

View File

@@ -1,4 +1,5 @@
subdir('moves')
subdir('particles')
battle_sprites = []
base_directory = meson.current_source_dir()

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