From 51cda640911297d41c368487f48a2c96d1efff38 Mon Sep 17 00:00:00 2001 From: Rachel Date: Fri, 27 Feb 2026 19:49:14 -0800 Subject: [PATCH] Unpack pl_batt_obj (#980) --- platinum.us/filesys.csv | 2 +- platinum.us/filesys.sha1 | 2 +- res/graphics/battle/ball_throws/bait.png | Bin 0 -> 327 bytes .../battle/ball_throws/bait_anim.json | 52 + .../battle/ball_throws/cherish_ball.png | Bin 0 -> 601 bytes res/graphics/battle/ball_throws/dive_ball.png | Bin 0 -> 700 bytes res/graphics/battle/ball_throws/dusk_ball.png | Bin 0 -> 771 bytes .../battle/ball_throws/great_ball.png | Bin 0 -> 676 bytes res/graphics/battle/ball_throws/heal_ball.png | Bin 0 -> 738 bytes .../battle/ball_throws/luxury_ball.png | Bin 0 -> 579 bytes .../battle/ball_throws/master_ball.png | Bin 0 -> 684 bytes res/graphics/battle/ball_throws/meson.build | 61 + res/graphics/battle/ball_throws/mud.png | Bin 0 -> 410 bytes res/graphics/battle/ball_throws/mud_anim.json | 70 + res/graphics/battle/ball_throws/mud_cell.json | 250 ++++ res/graphics/battle/ball_throws/nest_ball.png | Bin 0 -> 709 bytes res/graphics/battle/ball_throws/net_ball.png | Bin 0 -> 726 bytes res/graphics/battle/ball_throws/park_ball.png | Bin 0 -> 592 bytes res/graphics/battle/ball_throws/poke_ball.png | Bin 0 -> 570 bytes .../battle/ball_throws/premier_ball.png | Bin 0 -> 525 bytes .../battle/ball_throws/quick_ball.png | Bin 0 -> 723 bytes .../ball_throws/quick_dusk_heal_anim.json | 88 ++ .../battle/ball_throws/repeat_ball.png | Bin 0 -> 699 bytes .../battle/ball_throws/safari_ball.png | Bin 0 -> 736 bytes .../battle/ball_throws/shared_anim.json | 88 ++ .../battle/ball_throws/shared_cell.json | 352 +++++ .../battle/ball_throws/timer_ball.png | Bin 0 -> 649 bytes .../battle/ball_throws/ultra_ball.png | Bin 0 -> 582 bytes .../battle/ball_throws/unused_poke_ball.png | Bin 0 -> 530 bytes .../ball_throws/unused_poke_ball_anim.json | 88 ++ res/graphics/battle/healthbox/arrows_thin.png | Bin 0 -> 209 bytes .../battle/healthbox/arrows_thin_anim.json | 48 + .../battle/healthbox/arrows_thin_cell.json | 212 ++++ res/graphics/battle/healthbox/arrows_wide.png | Bin 0 -> 221 bytes .../battle/healthbox/arrows_wide_anim.json | 54 + .../battle/healthbox/arrows_wide_cell.json | 256 ++++ res/graphics/battle/healthbox/enemy.png | Bin 0 -> 294 bytes .../{ => healthbox}/healthbar_parts.png | Bin res/graphics/battle/healthbox/meson.build | 103 ++ .../battle/healthbox/player_doubles.png | Bin 0 -> 295 bytes .../battle/healthbox/player_singles.png | Bin 0 -> 318 bytes res/graphics/battle/healthbox/safari.png | Bin 0 -> 281 bytes .../battle/healthbox/safari_cell.json | 62 + res/graphics/battle/healthbox/short_cell.json | 66 + res/graphics/battle/healthbox/tall_cell.json | 66 + res/graphics/battle/interface/cursor.png | Bin 0 -> 149 bytes .../battle/interface/cursor_anim.json | 147 +++ .../battle/interface/cursor_cell.json | 148 +++ res/graphics/battle/interface/level_up.pal | 35 + res/graphics/battle/interface/level_up.png | Bin 0 -> 228 bytes .../battle/interface/level_up_cell.json | 66 + res/graphics/battle/interface/meson.build | 56 + res/graphics/battle/interface/shared.pal | 147 +++ res/graphics/battle/interface/stock_anim.json | 63 + res/graphics/battle/interface/stock_enemy.png | Bin 0 -> 285 bytes .../battle/interface/stock_enemy_cell.json | 148 +++ .../battle/interface/stock_player.png | Bin 0 -> 519 bytes .../battle/interface/stock_player_cell.json | 148 +++ res/graphics/battle/interface/top_stock.png | Bin 0 -> 1122 bytes .../battle/interface/top_stock_anim.json | 308 +++++ .../battle/interface/top_stock_cell.json | 1130 +++++++++++++++++ res/graphics/battle/meson.build | 35 +- res/graphics/battle/misc/debug.pal | 259 ++++ res/graphics/battle/misc/debug_frame.pal | 19 + res/graphics/battle/misc/debug_frame_1.png | Bin 0 -> 290 bytes .../battle/misc/debug_frame_1_cell.json | 382 ++++++ res/graphics/battle/misc/debug_frame_2.png | Bin 0 -> 246 bytes .../battle/misc/debug_frame_2_cell.json | 202 +++ res/graphics/battle/misc/debug_frame_3.png | Bin 0 -> 252 bytes .../battle/misc/debug_frame_3_cell.json | 262 ++++ res/graphics/battle/misc/meson.build | 69 + res/graphics/battle/misc/pokesprite_1.png | Bin 0 -> 845 bytes .../battle/misc/pokesprite_1_cell.json | 146 +++ res/graphics/battle/misc/pokesprite_2.pal | 19 + res/graphics/battle/misc/pokesprite_2.png | Bin 0 -> 1552 bytes .../battle/misc/pokesprite_2_cell.json | 146 +++ .../battle/misc/single_frame_anim.json | 24 + res/graphics/battle/misc/unk_117.png | Bin 0 -> 622 bytes res/graphics/battle/misc/unk_117_cell.json | 102 ++ res/graphics/battle/misc/unk_120.png | Bin 0 -> 320 bytes res/graphics/battle/misc/unk_120_cell.json | 62 + res/graphics/battle/misc/unk_121_124.png | Bin 0 -> 270 bytes .../battle/misc/unk_121_124_cell.json | 82 ++ res/graphics/battle/misc/unk_179.png | Bin 0 -> 129 bytes res/graphics/battle/misc/unk_179_cell.json | 42 + res/graphics/battle/sprites.order | 343 +++++ .../battle/terrain/battle_arcade/all.pal | 259 ++++ .../battle/terrain/battle_arcade/enemy.png | Bin 0 -> 445 bytes .../battle/terrain/battle_arcade/meson.build | 23 + .../battle/terrain/battle_arcade/player.png | Bin 0 -> 391 bytes .../battle/terrain/battle_castle/all.pal | 259 ++++ .../battle/terrain/battle_castle/enemy.png | Bin 0 -> 445 bytes .../battle/terrain/battle_castle/meson.build | 23 + .../battle/terrain/battle_castle/player.png | Bin 0 -> 391 bytes .../battle/terrain/battle_factory/all.pal | 259 ++++ .../battle/terrain/battle_factory/enemy.png | Bin 0 -> 445 bytes .../battle/terrain/battle_factory/meson.build | 23 + .../battle/terrain/battle_factory/player.png | Bin 0 -> 391 bytes .../battle/terrain/battle_hall/all.pal | 259 ++++ .../battle/terrain/battle_hall/enemy.png | Bin 0 -> 445 bytes .../battle/terrain/battle_hall/meson.build | 22 + .../battle/terrain/battle_hall/player.png | Bin 0 -> 391 bytes .../battle/terrain/battle_tower/all.pal | 259 ++++ .../battle/terrain/battle_tower/enemy.png | Bin 0 -> 445 bytes .../battle/terrain/battle_tower/meson.build | 23 + .../battle/terrain/battle_tower/player.png | Bin 0 -> 391 bytes res/graphics/battle/terrain/cave/all.pal | 19 + res/graphics/battle/terrain/cave/enemy.png | Bin 0 -> 892 bytes res/graphics/battle/terrain/cave/meson.build | 23 + res/graphics/battle/terrain/cave/player.png | Bin 0 -> 870 bytes .../battle/terrain/distortion_world/all.pal | 19 + .../battle/terrain/distortion_world/enemy.png | Bin 0 -> 671 bytes .../terrain/distortion_world/meson.build | 23 + .../terrain/distortion_world/player.png | Bin 0 -> 674 bytes res/graphics/battle/terrain/enemy_anim.json | 24 + res/graphics/battle/terrain/enemy_cell.json | 66 + res/graphics/battle/terrain/giratina/all.pal | 19 + .../battle/terrain/giratina/enemy.png | Bin 0 -> 144 bytes .../battle/terrain/giratina/meson.build | 23 + .../battle/terrain/giratina/player.png | Bin 0 -> 674 bytes res/graphics/battle/terrain/grass/day.pal | 19 + res/graphics/battle/terrain/grass/enemy.png | Bin 0 -> 802 bytes res/graphics/battle/terrain/grass/evening.pal | 19 + res/graphics/battle/terrain/grass/meson.build | 23 + res/graphics/battle/terrain/grass/night.pal | 19 + res/graphics/battle/terrain/grass/player.png | Bin 0 -> 897 bytes res/graphics/battle/terrain/ice/day.pal | 19 + res/graphics/battle/terrain/ice/enemy.png | Bin 0 -> 621 bytes res/graphics/battle/terrain/ice/evening.pal | 19 + res/graphics/battle/terrain/ice/meson.build | 23 + res/graphics/battle/terrain/ice/night.pal | 19 + res/graphics/battle/terrain/ice/player.png | Bin 0 -> 585 bytes res/graphics/battle/terrain/indoors/all.pal | 19 + res/graphics/battle/terrain/indoors/enemy.png | Bin 0 -> 441 bytes .../battle/terrain/indoors/meson.build | 23 + .../battle/terrain/indoors/player.png | Bin 0 -> 372 bytes .../battle/terrain/league_aaron/all.pal | 19 + .../battle/terrain/league_aaron/enemy.png | Bin 0 -> 614 bytes .../battle/terrain/league_aaron/meson.build | 23 + .../battle/terrain/league_aaron/player.png | Bin 0 -> 498 bytes .../battle/terrain/league_bertha/all.pal | 19 + .../battle/terrain/league_bertha/enemy.png | Bin 0 -> 614 bytes .../battle/terrain/league_bertha/meson.build | 23 + .../battle/terrain/league_bertha/player.png | Bin 0 -> 498 bytes .../battle/terrain/league_cynthia/all.pal | 19 + .../battle/terrain/league_cynthia/enemy.png | Bin 0 -> 650 bytes .../battle/terrain/league_cynthia/meson.build | 23 + .../battle/terrain/league_cynthia/player.png | Bin 0 -> 514 bytes .../battle/terrain/league_flint/all.pal | 19 + .../battle/terrain/league_flint/enemy.png | Bin 0 -> 614 bytes .../battle/terrain/league_flint/meson.build | 23 + .../battle/terrain/league_flint/player.png | Bin 0 -> 498 bytes .../battle/terrain/league_lucian/all.pal | 19 + .../battle/terrain/league_lucian/enemy.png | Bin 0 -> 614 bytes .../battle/terrain/league_lucian/meson.build | 23 + .../battle/terrain/league_lucian/player.png | Bin 0 -> 498 bytes res/graphics/battle/terrain/meson.build | 38 + res/graphics/battle/terrain/mud/day.pal | 19 + res/graphics/battle/terrain/mud/enemy.png | Bin 0 -> 516 bytes res/graphics/battle/terrain/mud/evening.pal | 19 + res/graphics/battle/terrain/mud/meson.build | 23 + res/graphics/battle/terrain/mud/night.pal | 19 + res/graphics/battle/terrain/mud/player.png | Bin 0 -> 467 bytes res/graphics/battle/terrain/path/day.pal | 19 + res/graphics/battle/terrain/path/enemy.png | Bin 0 -> 678 bytes res/graphics/battle/terrain/path/evening.pal | 19 + res/graphics/battle/terrain/path/meson.build | 23 + res/graphics/battle/terrain/path/night.pal | 19 + res/graphics/battle/terrain/path/player.png | Bin 0 -> 673 bytes .../battle/terrain/path_puddles/day.pal | 19 + .../battle/terrain/path_puddles/enemy.png | Bin 0 -> 695 bytes .../battle/terrain/path_puddles/evening.pal | 19 + .../battle/terrain/path_puddles/meson.build | 23 + .../battle/terrain/path_puddles/night.pal | 19 + .../battle/terrain/path_puddles/player.png | Bin 0 -> 745 bytes res/graphics/battle/terrain/player_anim.json | 24 + res/graphics/battle/terrain/player_cell.json | 106 ++ res/graphics/battle/terrain/rocky/day.pal | 19 + res/graphics/battle/terrain/rocky/enemy.png | Bin 0 -> 868 bytes res/graphics/battle/terrain/rocky/evening.pal | 19 + res/graphics/battle/terrain/rocky/meson.build | 23 + res/graphics/battle/terrain/rocky/night.pal | 19 + res/graphics/battle/terrain/rocky/player.png | Bin 0 -> 846 bytes res/graphics/battle/terrain/sand/day.pal | 19 + res/graphics/battle/terrain/sand/enemy.png | Bin 0 -> 463 bytes res/graphics/battle/terrain/sand/evening.pal | 19 + res/graphics/battle/terrain/sand/meson.build | 23 + res/graphics/battle/terrain/sand/night.pal | 19 + res/graphics/battle/terrain/sand/player.png | Bin 0 -> 443 bytes res/graphics/battle/terrain/snow/day.pal | 19 + res/graphics/battle/terrain/snow/enemy.png | Bin 0 -> 580 bytes res/graphics/battle/terrain/snow/evening.pal | 19 + res/graphics/battle/terrain/snow/meson.build | 23 + res/graphics/battle/terrain/snow/night.pal | 19 + res/graphics/battle/terrain/snow/player.png | Bin 0 -> 496 bytes res/graphics/battle/terrain/water/day.pal | 19 + res/graphics/battle/terrain/water/enemy.png | Bin 0 -> 542 bytes res/graphics/battle/terrain/water/evening.pal | 19 + res/graphics/battle/terrain/water/meson.build | 23 + res/graphics/battle/terrain/water/night.pal | 19 + res/graphics/battle/terrain/water/player.png | Bin 0 -> 494 bytes .../battle/trainer_backs/barry_dp.png | Bin 0 -> 3011 bytes res/graphics/battle/trainer_backs/buck.png | Bin 0 -> 2538 bytes res/graphics/battle/trainer_backs/cheryl.png | Bin 0 -> 3537 bytes res/graphics/battle/trainer_backs/dawn_dp.png | Bin 0 -> 3333 bytes .../battle/trainer_backs/lucas_dp.png | Bin 0 -> 3384 bytes res/graphics/battle/trainer_backs/marley.png | Bin 0 -> 3003 bytes res/graphics/battle/trainer_backs/meson.build | 39 + res/graphics/battle/trainer_backs/mira.png | Bin 0 -> 2791 bytes res/graphics/battle/trainer_backs/riley.png | Bin 0 -> 3225 bytes .../battle/trainer_backs/shared_anim.json | 48 + .../battle/trainer_backs/shared_cell.json | 699 ++++++++++ res/graphics/battle/type_icons/beauty.png | Bin 0 -> 223 bytes res/graphics/battle/type_icons/bug.png | Bin 0 -> 212 bytes res/graphics/battle/type_icons/cell.json | 42 + res/graphics/battle/type_icons/cool.png | Bin 0 -> 204 bytes res/graphics/battle/type_icons/cute.png | Bin 0 -> 215 bytes res/graphics/battle/type_icons/dark.png | Bin 0 -> 214 bytes res/graphics/battle/type_icons/dragon.png | Bin 0 -> 229 bytes res/graphics/battle/type_icons/electric.png | Bin 0 -> 229 bytes res/graphics/battle/type_icons/fighting.png | Bin 0 -> 226 bytes res/graphics/battle/type_icons/fire.png | Bin 0 -> 223 bytes res/graphics/battle/type_icons/flying.png | Bin 0 -> 228 bytes res/graphics/battle/type_icons/ghost.png | Bin 0 -> 228 bytes res/graphics/battle/type_icons/grass.png | Bin 0 -> 229 bytes res/graphics/battle/type_icons/ground.png | Bin 0 -> 230 bytes res/graphics/battle/type_icons/ice.png | Bin 0 -> 214 bytes res/graphics/battle/type_icons/meson.build | 49 + res/graphics/battle/type_icons/mystery.png | Bin 0 -> 205 bytes res/graphics/battle/type_icons/normal.png | Bin 0 -> 227 bytes res/graphics/battle/type_icons/physical.png | Bin 0 -> 224 bytes res/graphics/battle/type_icons/poison.png | Bin 0 -> 230 bytes res/graphics/battle/type_icons/psychic.png | Bin 0 -> 228 bytes res/graphics/battle/type_icons/rock.png | Bin 0 -> 218 bytes res/graphics/battle/type_icons/shared.pal | 51 + res/graphics/battle/type_icons/smart.png | Bin 0 -> 228 bytes res/graphics/battle/type_icons/special.png | Bin 0 -> 227 bytes res/graphics/battle/type_icons/status.png | Bin 0 -> 218 bytes res/graphics/battle/type_icons/steel.png | Bin 0 -> 221 bytes res/graphics/battle/type_icons/tough.png | Bin 0 -> 209 bytes res/graphics/battle/type_icons/water.png | Bin 0 -> 218 bytes res/prebuilt/battle/graphic/meson.build | 1 - res/prebuilt/battle/graphic/pl_batt_obj.narc | Bin 169112 -> 0 bytes src/battle/healthbar.c | 92 +- src/battle/ov16_02268520.c | 285 ++--- src/battle_anim/ov12_02235E94.c | 48 +- src/type_icon.c | 123 +- tools/nitroarc/doc/nitroarc.1.adoc | 2 + tools/nitroarc/src/opmode_create.c | 37 +- 249 files changed, 10474 insertions(+), 317 deletions(-) create mode 100644 res/graphics/battle/ball_throws/bait.png create mode 100644 res/graphics/battle/ball_throws/bait_anim.json create mode 100644 res/graphics/battle/ball_throws/cherish_ball.png create mode 100644 res/graphics/battle/ball_throws/dive_ball.png create mode 100644 res/graphics/battle/ball_throws/dusk_ball.png create mode 100644 res/graphics/battle/ball_throws/great_ball.png create mode 100644 res/graphics/battle/ball_throws/heal_ball.png create mode 100644 res/graphics/battle/ball_throws/luxury_ball.png create mode 100644 res/graphics/battle/ball_throws/master_ball.png create mode 100644 res/graphics/battle/ball_throws/meson.build create mode 100644 res/graphics/battle/ball_throws/mud.png create mode 100644 res/graphics/battle/ball_throws/mud_anim.json create mode 100644 res/graphics/battle/ball_throws/mud_cell.json create mode 100644 res/graphics/battle/ball_throws/nest_ball.png create mode 100644 res/graphics/battle/ball_throws/net_ball.png create mode 100644 res/graphics/battle/ball_throws/park_ball.png create mode 100644 res/graphics/battle/ball_throws/poke_ball.png create mode 100644 res/graphics/battle/ball_throws/premier_ball.png create mode 100644 res/graphics/battle/ball_throws/quick_ball.png create mode 100644 res/graphics/battle/ball_throws/quick_dusk_heal_anim.json create mode 100644 res/graphics/battle/ball_throws/repeat_ball.png create mode 100644 res/graphics/battle/ball_throws/safari_ball.png create mode 100644 res/graphics/battle/ball_throws/shared_anim.json create mode 100644 res/graphics/battle/ball_throws/shared_cell.json create mode 100644 res/graphics/battle/ball_throws/timer_ball.png create mode 100644 res/graphics/battle/ball_throws/ultra_ball.png create mode 100644 res/graphics/battle/ball_throws/unused_poke_ball.png create mode 100644 res/graphics/battle/ball_throws/unused_poke_ball_anim.json create mode 100644 res/graphics/battle/healthbox/arrows_thin.png create mode 100644 res/graphics/battle/healthbox/arrows_thin_anim.json create mode 100644 res/graphics/battle/healthbox/arrows_thin_cell.json create mode 100644 res/graphics/battle/healthbox/arrows_wide.png create mode 100644 res/graphics/battle/healthbox/arrows_wide_anim.json create mode 100644 res/graphics/battle/healthbox/arrows_wide_cell.json create mode 100644 res/graphics/battle/healthbox/enemy.png rename res/graphics/battle/{ => healthbox}/healthbar_parts.png (100%) create mode 100644 res/graphics/battle/healthbox/meson.build create mode 100644 res/graphics/battle/healthbox/player_doubles.png create mode 100644 res/graphics/battle/healthbox/player_singles.png create mode 100644 res/graphics/battle/healthbox/safari.png create mode 100644 res/graphics/battle/healthbox/safari_cell.json create mode 100644 res/graphics/battle/healthbox/short_cell.json create mode 100644 res/graphics/battle/healthbox/tall_cell.json create mode 100644 res/graphics/battle/interface/cursor.png create mode 100644 res/graphics/battle/interface/cursor_anim.json create mode 100644 res/graphics/battle/interface/cursor_cell.json create mode 100644 res/graphics/battle/interface/level_up.pal create mode 100644 res/graphics/battle/interface/level_up.png create mode 100644 res/graphics/battle/interface/level_up_cell.json create mode 100644 res/graphics/battle/interface/meson.build create mode 100644 res/graphics/battle/interface/shared.pal create mode 100644 res/graphics/battle/interface/stock_anim.json create mode 100644 res/graphics/battle/interface/stock_enemy.png create mode 100644 res/graphics/battle/interface/stock_enemy_cell.json create mode 100644 res/graphics/battle/interface/stock_player.png create mode 100644 res/graphics/battle/interface/stock_player_cell.json create mode 100644 res/graphics/battle/interface/top_stock.png create mode 100644 res/graphics/battle/interface/top_stock_anim.json create mode 100644 res/graphics/battle/interface/top_stock_cell.json create mode 100644 res/graphics/battle/misc/debug.pal create mode 100644 res/graphics/battle/misc/debug_frame.pal create mode 100644 res/graphics/battle/misc/debug_frame_1.png create mode 100644 res/graphics/battle/misc/debug_frame_1_cell.json create mode 100644 res/graphics/battle/misc/debug_frame_2.png create mode 100644 res/graphics/battle/misc/debug_frame_2_cell.json create mode 100644 res/graphics/battle/misc/debug_frame_3.png create mode 100644 res/graphics/battle/misc/debug_frame_3_cell.json create mode 100644 res/graphics/battle/misc/meson.build create mode 100644 res/graphics/battle/misc/pokesprite_1.png create mode 100644 res/graphics/battle/misc/pokesprite_1_cell.json create mode 100644 res/graphics/battle/misc/pokesprite_2.pal create mode 100644 res/graphics/battle/misc/pokesprite_2.png create mode 100644 res/graphics/battle/misc/pokesprite_2_cell.json create mode 100644 res/graphics/battle/misc/single_frame_anim.json create mode 100644 res/graphics/battle/misc/unk_117.png create mode 100644 res/graphics/battle/misc/unk_117_cell.json create mode 100644 res/graphics/battle/misc/unk_120.png create mode 100644 res/graphics/battle/misc/unk_120_cell.json create mode 100644 res/graphics/battle/misc/unk_121_124.png create mode 100644 res/graphics/battle/misc/unk_121_124_cell.json create mode 100644 res/graphics/battle/misc/unk_179.png create mode 100644 res/graphics/battle/misc/unk_179_cell.json create mode 100644 res/graphics/battle/sprites.order create mode 100644 res/graphics/battle/terrain/battle_arcade/all.pal create mode 100644 res/graphics/battle/terrain/battle_arcade/enemy.png create mode 100644 res/graphics/battle/terrain/battle_arcade/meson.build create mode 100644 res/graphics/battle/terrain/battle_arcade/player.png create mode 100644 res/graphics/battle/terrain/battle_castle/all.pal create mode 100644 res/graphics/battle/terrain/battle_castle/enemy.png create mode 100644 res/graphics/battle/terrain/battle_castle/meson.build create mode 100644 res/graphics/battle/terrain/battle_castle/player.png create mode 100644 res/graphics/battle/terrain/battle_factory/all.pal create mode 100644 res/graphics/battle/terrain/battle_factory/enemy.png create mode 100644 res/graphics/battle/terrain/battle_factory/meson.build create mode 100644 res/graphics/battle/terrain/battle_factory/player.png create mode 100644 res/graphics/battle/terrain/battle_hall/all.pal create mode 100644 res/graphics/battle/terrain/battle_hall/enemy.png create mode 100644 res/graphics/battle/terrain/battle_hall/meson.build create mode 100644 res/graphics/battle/terrain/battle_hall/player.png create mode 100644 res/graphics/battle/terrain/battle_tower/all.pal create mode 100644 res/graphics/battle/terrain/battle_tower/enemy.png create mode 100644 res/graphics/battle/terrain/battle_tower/meson.build create mode 100644 res/graphics/battle/terrain/battle_tower/player.png create mode 100644 res/graphics/battle/terrain/cave/all.pal create mode 100644 res/graphics/battle/terrain/cave/enemy.png create mode 100644 res/graphics/battle/terrain/cave/meson.build create mode 100644 res/graphics/battle/terrain/cave/player.png create mode 100644 res/graphics/battle/terrain/distortion_world/all.pal create mode 100644 res/graphics/battle/terrain/distortion_world/enemy.png create mode 100644 res/graphics/battle/terrain/distortion_world/meson.build create mode 100644 res/graphics/battle/terrain/distortion_world/player.png create mode 100644 res/graphics/battle/terrain/enemy_anim.json create mode 100644 res/graphics/battle/terrain/enemy_cell.json create mode 100644 res/graphics/battle/terrain/giratina/all.pal create mode 100644 res/graphics/battle/terrain/giratina/enemy.png create mode 100644 res/graphics/battle/terrain/giratina/meson.build create mode 100644 res/graphics/battle/terrain/giratina/player.png create mode 100644 res/graphics/battle/terrain/grass/day.pal create mode 100644 res/graphics/battle/terrain/grass/enemy.png create mode 100644 res/graphics/battle/terrain/grass/evening.pal create mode 100644 res/graphics/battle/terrain/grass/meson.build create mode 100644 res/graphics/battle/terrain/grass/night.pal create mode 100644 res/graphics/battle/terrain/grass/player.png create mode 100644 res/graphics/battle/terrain/ice/day.pal create mode 100644 res/graphics/battle/terrain/ice/enemy.png create mode 100644 res/graphics/battle/terrain/ice/evening.pal create mode 100644 res/graphics/battle/terrain/ice/meson.build create mode 100644 res/graphics/battle/terrain/ice/night.pal create mode 100644 res/graphics/battle/terrain/ice/player.png create mode 100644 res/graphics/battle/terrain/indoors/all.pal create mode 100644 res/graphics/battle/terrain/indoors/enemy.png create mode 100644 res/graphics/battle/terrain/indoors/meson.build create mode 100644 res/graphics/battle/terrain/indoors/player.png create mode 100644 res/graphics/battle/terrain/league_aaron/all.pal create mode 100644 res/graphics/battle/terrain/league_aaron/enemy.png create mode 100644 res/graphics/battle/terrain/league_aaron/meson.build create mode 100644 res/graphics/battle/terrain/league_aaron/player.png create mode 100644 res/graphics/battle/terrain/league_bertha/all.pal create mode 100644 res/graphics/battle/terrain/league_bertha/enemy.png create mode 100644 res/graphics/battle/terrain/league_bertha/meson.build create mode 100644 res/graphics/battle/terrain/league_bertha/player.png create mode 100644 res/graphics/battle/terrain/league_cynthia/all.pal create mode 100644 res/graphics/battle/terrain/league_cynthia/enemy.png create mode 100644 res/graphics/battle/terrain/league_cynthia/meson.build create mode 100644 res/graphics/battle/terrain/league_cynthia/player.png create mode 100644 res/graphics/battle/terrain/league_flint/all.pal create mode 100644 res/graphics/battle/terrain/league_flint/enemy.png create mode 100644 res/graphics/battle/terrain/league_flint/meson.build create mode 100644 res/graphics/battle/terrain/league_flint/player.png create mode 100644 res/graphics/battle/terrain/league_lucian/all.pal create mode 100644 res/graphics/battle/terrain/league_lucian/enemy.png create mode 100644 res/graphics/battle/terrain/league_lucian/meson.build create mode 100644 res/graphics/battle/terrain/league_lucian/player.png create mode 100644 res/graphics/battle/terrain/meson.build create mode 100644 res/graphics/battle/terrain/mud/day.pal create mode 100644 res/graphics/battle/terrain/mud/enemy.png create mode 100644 res/graphics/battle/terrain/mud/evening.pal create mode 100644 res/graphics/battle/terrain/mud/meson.build create mode 100644 res/graphics/battle/terrain/mud/night.pal create mode 100644 res/graphics/battle/terrain/mud/player.png create mode 100644 res/graphics/battle/terrain/path/day.pal create mode 100644 res/graphics/battle/terrain/path/enemy.png create mode 100644 res/graphics/battle/terrain/path/evening.pal create mode 100644 res/graphics/battle/terrain/path/meson.build create mode 100644 res/graphics/battle/terrain/path/night.pal create mode 100644 res/graphics/battle/terrain/path/player.png create mode 100644 res/graphics/battle/terrain/path_puddles/day.pal create mode 100644 res/graphics/battle/terrain/path_puddles/enemy.png create mode 100644 res/graphics/battle/terrain/path_puddles/evening.pal create mode 100644 res/graphics/battle/terrain/path_puddles/meson.build create mode 100644 res/graphics/battle/terrain/path_puddles/night.pal create mode 100644 res/graphics/battle/terrain/path_puddles/player.png create mode 100644 res/graphics/battle/terrain/player_anim.json create mode 100644 res/graphics/battle/terrain/player_cell.json create mode 100644 res/graphics/battle/terrain/rocky/day.pal create mode 100644 res/graphics/battle/terrain/rocky/enemy.png create mode 100644 res/graphics/battle/terrain/rocky/evening.pal create mode 100644 res/graphics/battle/terrain/rocky/meson.build create mode 100644 res/graphics/battle/terrain/rocky/night.pal create mode 100644 res/graphics/battle/terrain/rocky/player.png create mode 100644 res/graphics/battle/terrain/sand/day.pal create mode 100644 res/graphics/battle/terrain/sand/enemy.png create mode 100644 res/graphics/battle/terrain/sand/evening.pal create mode 100644 res/graphics/battle/terrain/sand/meson.build create mode 100644 res/graphics/battle/terrain/sand/night.pal create mode 100644 res/graphics/battle/terrain/sand/player.png create mode 100644 res/graphics/battle/terrain/snow/day.pal create mode 100644 res/graphics/battle/terrain/snow/enemy.png create mode 100644 res/graphics/battle/terrain/snow/evening.pal create mode 100644 res/graphics/battle/terrain/snow/meson.build create mode 100644 res/graphics/battle/terrain/snow/night.pal create mode 100644 res/graphics/battle/terrain/snow/player.png create mode 100644 res/graphics/battle/terrain/water/day.pal create mode 100644 res/graphics/battle/terrain/water/enemy.png create mode 100644 res/graphics/battle/terrain/water/evening.pal create mode 100644 res/graphics/battle/terrain/water/meson.build create mode 100644 res/graphics/battle/terrain/water/night.pal create mode 100644 res/graphics/battle/terrain/water/player.png create mode 100644 res/graphics/battle/trainer_backs/barry_dp.png create mode 100644 res/graphics/battle/trainer_backs/buck.png create mode 100644 res/graphics/battle/trainer_backs/cheryl.png create mode 100644 res/graphics/battle/trainer_backs/dawn_dp.png create mode 100644 res/graphics/battle/trainer_backs/lucas_dp.png create mode 100644 res/graphics/battle/trainer_backs/marley.png create mode 100644 res/graphics/battle/trainer_backs/meson.build create mode 100644 res/graphics/battle/trainer_backs/mira.png create mode 100644 res/graphics/battle/trainer_backs/riley.png create mode 100644 res/graphics/battle/trainer_backs/shared_anim.json create mode 100644 res/graphics/battle/trainer_backs/shared_cell.json create mode 100644 res/graphics/battle/type_icons/beauty.png create mode 100644 res/graphics/battle/type_icons/bug.png create mode 100644 res/graphics/battle/type_icons/cell.json create mode 100644 res/graphics/battle/type_icons/cool.png create mode 100644 res/graphics/battle/type_icons/cute.png create mode 100644 res/graphics/battle/type_icons/dark.png create mode 100644 res/graphics/battle/type_icons/dragon.png create mode 100644 res/graphics/battle/type_icons/electric.png create mode 100644 res/graphics/battle/type_icons/fighting.png create mode 100644 res/graphics/battle/type_icons/fire.png create mode 100644 res/graphics/battle/type_icons/flying.png create mode 100644 res/graphics/battle/type_icons/ghost.png create mode 100644 res/graphics/battle/type_icons/grass.png create mode 100644 res/graphics/battle/type_icons/ground.png create mode 100644 res/graphics/battle/type_icons/ice.png create mode 100644 res/graphics/battle/type_icons/meson.build create mode 100644 res/graphics/battle/type_icons/mystery.png create mode 100644 res/graphics/battle/type_icons/normal.png create mode 100644 res/graphics/battle/type_icons/physical.png create mode 100644 res/graphics/battle/type_icons/poison.png create mode 100644 res/graphics/battle/type_icons/psychic.png create mode 100644 res/graphics/battle/type_icons/rock.png create mode 100644 res/graphics/battle/type_icons/shared.pal create mode 100644 res/graphics/battle/type_icons/smart.png create mode 100644 res/graphics/battle/type_icons/special.png create mode 100644 res/graphics/battle/type_icons/status.png create mode 100644 res/graphics/battle/type_icons/steel.png create mode 100644 res/graphics/battle/type_icons/tough.png create mode 100644 res/graphics/battle/type_icons/water.png delete mode 100644 res/prebuilt/battle/graphic/pl_batt_obj.narc diff --git a/platinum.us/filesys.csv b/platinum.us/filesys.csv index 483db5ae68..6c3347db88 100644 --- a/platinum.us/filesys.csv +++ b/platinum.us/filesys.csv @@ -173,7 +173,7 @@ res/prebuilt/battle/graphic/batt_bg.narc,/battle/graphic/batt_bg.narc res/prebuilt/battle/graphic/batt_obj.narc,/battle/graphic/batt_obj.narc res/prebuilt/battle/graphic/pl_b_plist_gra.narc,/battle/graphic/pl_b_plist_gra.narc res/prebuilt/battle/graphic/pl_batt_bg.narc,/battle/graphic/pl_batt_bg.narc -res/prebuilt/battle/graphic/pl_batt_obj.narc,/battle/graphic/pl_batt_obj.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/battle/scripts/common_anims/anim_subscripts.narc,/wazaeffect/we_sub.narc diff --git a/platinum.us/filesys.sha1 b/platinum.us/filesys.sha1 index c313d2e346..b750194641 100644 --- a/platinum.us/filesys.sha1 +++ b/platinum.us/filesys.sha1 @@ -172,7 +172,7 @@ d672202157109fb1bb293070b5d35787b2b2b6d3 *res/prebuilt/battle/graphic/batt_bg.na c9baf056c8646bc0bc826bbc98f5cbd439643f3d *res/prebuilt/battle/graphic/batt_obj.narc 036b81fe61c6347100c73b2c23d28da5abc7626c *res/prebuilt/battle/graphic/pl_b_plist_gra.narc 2fafdda86f7f740e2843c95382f08dfac35fa64f *res/prebuilt/battle/graphic/pl_batt_bg.narc -db5906303178da70f6b6c852990df560fb4dfeba *res/prebuilt/battle/graphic/pl_batt_obj.narc +db5906303178da70f6b6c852990df560fb4dfeba *res/graphics/battle/sprites.narc 955ce80b532be2184c62c36a6cb9d6b68c4669dd *res/prebuilt/battle/graphic/vs_demo_gra.narc c7e601f3c145dd3c36c6f1deee1f63d526be3c37 *res/battle/moves/anim_scripts.narc 30bb77e76c27874bc8ff923b33492595f1a377e2 *res/battle/scripts/common_anims/anim_subscripts.narc diff --git a/res/graphics/battle/ball_throws/bait.png b/res/graphics/battle/ball_throws/bait.png new file mode 100644 index 0000000000000000000000000000000000000000..ba39174ae36c8d364f0eb1535826e970039c91da GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^3P8M*g&9chwpH)}QU(D&A+AAt=L7{MJ-fR1-Mzhr zhK6U4uKCujxp&DF!{TpKrYu>LrTHHSinjojLqLq;;e9~XB~KT}5Rc<;FB@_lHsEPZ zO?cUQJbgWh0P7=%N?RQwx|6E|&%;}tpEfTc?u1Rtw zTxKZ;IX>Lsv=T{(U|!0>bKw#9!D|XJjJs3ncXoE&`FwPehy9MLmqot!YoD9n&6&^G z$j)TJ6jbVvaIRTs1(%2c`x4U$p$;dRJ%8~{c-hW->&t~rLDSgVezDoAeRSBnM0r68 z*MuP3jk_FwzFIt!JxKT5@q3v9?7WjQwHkhv91{Nhd;z2B0=6p+bwVqAXZKbz8m*mM Ub@}b9UXVXMUHx3vIVCg!0Ok;b+yDRo literal 0 HcmV?d00001 diff --git a/res/graphics/battle/ball_throws/bait_anim.json b/res/graphics/battle/ball_throws/bait_anim.json new file mode 100644 index 0000000000..e4266320ed --- /dev/null +++ b/res/graphics/battle/ball_throws/bait_anim.json @@ -0,0 +1,52 @@ +{ + "labelEnabled": true, + "uaatEnabled": false, + "sequenceCount": 2, + "frameCount": 5, + "sequences": [{ + "frameCount": 4, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 2, + "resultId": 0 + }, { + "frameDelay": 2, + "resultId": 1 + }, { + "frameDelay": 2, + "resultId": 2 + }, { + "frameDelay": 2, + "resultId": 3 + }] + }, { + "frameCount": 1, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 60, + "resultId": 0 + }] + }], + "animationResults": [{ + "resultType": 0, + "index": 0 + }, { + "resultType": 0, + "index": 1 + }, { + "resultType": 0, + "index": 2 + }, { + "resultType": 0, + "index": 3 + }], + "resultCount": 4, + "labels": ["CellAnime0", "CellAnime1"], + "labelCount": 2 +} \ No newline at end of file diff --git a/res/graphics/battle/ball_throws/cherish_ball.png b/res/graphics/battle/ball_throws/cherish_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..8b268dafa9e13951634b4f5b952095dd39acdb3d GIT binary patch literal 601 zcmV-f0;c_mP)zx;XaE#xeEEGh5CYmZ_jl3kzAkr`cLY4FZJ|N=C=?o5LqS=`0JNaMgRr|Y#`WN zbAV4ns>p&vGu{SpA$KZy3_u@M>7KU0TRFc^_s`%di7FFyhm9$v=8@C-d@i~-*Vz73 zqr8s^x~UvN@ky1+0KjVRKFv!IH0y0F=Nz`rj35S}XFv`>?Mk_&BJ@F3dJXVB1dUn= z%3BEvnh6TJ64U~_X1w)N1%3VzYXyc8$uUxzQQ;AbH5I;wgeLIcDyZ#a##mqDjJ_s@ z2`b3PPfgG@a|MN3GZZwUJm?;5zfYGCn*o@aMD+o1bHs{2d&K_lp!W)DT}rJ4#l{ET zK{0OtpC3Fl1XZIi5cDeWg@_zugDgwCjQLr%=J<$fL4gIeAPbTr+^NRAv@>{7rM$2+ z{99fo#Zn_f&^eWcLXT4q&Bw~Vb=3{nxmiXfZ}$FW`G z$5W~RKxn|Y19?3q1P^XN!z1Iq0Je*D^NQUN5CtgP%g#jFac`N{WeM->>13INN n7fz@3amP*<$K4@~@%O7|99l}WZrrk+00000NkvXXu0mjfP>uwA literal 0 HcmV?d00001 diff --git a/res/graphics/battle/ball_throws/dive_ball.png b/res/graphics/battle/ball_throws/dive_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..777c3e315c388ca94b3beb99292c6eff5104f040 GIT binary patch literal 700 zcmV;t0z>_YP)19rKboIOI{;57_|a5;#yaBB~WwT z^5CkxQ*Kr^_CIn?7YIp?yWcLX&zjZjuicq-oP(YZvcHKWpfDr^Zm9Aw0uWm;6@Uf6 z&Fvj3IsqMO{sOqvMWXKjT$gcBUYvlFRkM21!BbMxWoC_uZCH^=eY2tQ$qlCeJdpD$ zgR~wPR3y?M6$d#QlvJ}|Qh-5sW}TW#n7(i4(gN67upI$TY61Fj20qQ8oqURGjLajo zK%~Ci3D9TGF>e9?yFq6wC}Xniz#!s>7=owF$ryUX#7d%48dR45ib4K{V{p$s_{OwX zV9@-5=nDOqmn>n>O<69ZvGVz02ALh^kr^U`8B^HF^}ZOZLSIgHq%0MF_!FNEG-OTNrTuiG-z&t zSV1;KZZVaA$`(6o^Me=l!n>7ypCcHA(MaE4@&5`9nlDwZ9_w;s|JeFrp(!zk6}ueOp5vv*#e$ z=XP7!*0|BFqp{RqYf$eiXuo$)IvjmYigg_5DS(7#H5Cw1OzK6IoMPOs4eJYli3QaN zaP}dXhu1V-Br^3pnfu-XxL!0(jbvd5t>K2I*H~gLlgfudvextb4hH2uW%$qvqwbF! im}!6H5M*%u_vsg2d{Ld8wW2}*00006hYk%c|y?W?KF~tin9no&2%+ELH#Me;P{gk(V_`}l(mWgT(Z+o zDCkP51N6~jA8Xv$#@eM6WbHEu(r*T`gW@)w;Xd9MKpi7!yjBQYDq6_L<39kG48VtL z8CVpw^&=rDWI@?J2&#@4Pn75&7UT&*!~YdD<(caPIQ5C58xZtiL$v&Y9b~LEvV)A- z3qkQHQnG_$Rp}sA5yZzw9}yql$C+b*GnXes$s7drZj3oaA3biE^&Vu9R!RzbQSG31 zl90%tWH3lF%%C%(SC~Pcl^>~>7}6X$A92KZg&Z*=F;S%;T`y>}+=mhC@rbQO2Nk!N z?4Y8=h@B{PEi#CK$e@#}gKH_MsQt{K%f~Y4;Wgh8q2y9mDX%_*7+?m?i+fJxAn1rM zz6_ey_-&pl<6=6;yhK(rqhV-`D3JO+@@ z9A`X-FA0Aq$&Ui0-68-002ovPDHLkV1l@Y BSfBs^ literal 0 HcmV?d00001 diff --git a/res/graphics/battle/ball_throws/great_ball.png b/res/graphics/battle/ball_throws/great_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..51011ea4fb3d8a51fa9b1db3c8175a5088869440 GIT binary patch literal 676 zcmV;V0$crwP)FS5YDY?wRlfr z@ZP^KxhEUzcQRaQpv06uJorAWyZ646-<{)Z<9QqMoyY`q!Gz!_%b0Hf%zkBDtN@%p zUU2cy0+-jUKM{Z?0Gx21@Fjqu8U?D?0w=EGdJw=Wv0qPo1g@_mGE(<_vKQAW|G5*+ zYXrHEUy}m!IL}4_gAXUE;$V=2pv#~2`KF)_cr!s^ zXbO^AFprUdj~388p`WpU|APKhP%MH15JXZw!78bgUt(g4NST6^`d0+){paRC!tg^M z1f_GLKKhs`9k-a+ol^IQDTv4vPs{~&?Rx=tAZRS*qmS{P zAOUY7sN1CVDYiD6w47oOwo|N-YM-F|D*@kaU@>D}UE>=xRceZFP%1vk0~N&PDW-u{ z(7q2j_YEIY<|+7aQ+er1>_JjK_MlkGH=8t3r%CsQe?ic1f!kTd{h}4xjJaz8tG3!? zCdO9z4x}4n=aGd2)3F zV9fgJa|2YLa>Un1F8wD_)ESEKs ziA-9<50*{X5*un#^wExBC|D?^7l%)Um)#j9})y1T}z5jE2-T(jq>(ZSq0007Q zNkle=a}XsE2muXUnhZj5 zGiJyYolGf_@KgjXbStH}wqGH=$2QS_u0bh*Hp!WMKV zBCvyi$N|u*H^Zb4pnamjX$kBkCJGY=0O>+7p#z`J0gQjmii2qhtj@=7@p}Zn(oscM zA+R&0Qb%k(OWo?`jP|dMvhF0PzUPOI@G&ds6v4b(%u&#s20qQJ1YNPhA%OfU4u?4k z%Cj^Vf^uC#5CbVF&+kK!nV@zfpil@piH!s$8i)if3I*|63exLpK^zz%Na>P-l=>fn zHWMR3b=@2KU?2r;CWaux$C|OHI#bDe0MpMzZ^t0$Ik*1`1$jz&Qjq687D3Hh6Qq5J z8N^2nXV9lNL_c3+f-=ubs}qzfmEVV;W@rcsND2zR&*co7^+?R1a~?SpF_U$nkF_y= z#ZHGPh=|e_91G)(@}#06*uf Urg3Uj&j0`b07*qoM6N<$g5h6Lt^fc4 literal 0 HcmV?d00001 diff --git a/res/graphics/battle/ball_throws/luxury_ball.png b/res/graphics/battle/ball_throws/luxury_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..22f1564827efed61f5f0051b5ba4a2d428b9b769 GIT binary patch literal 579 zcmV-J0=)f+P)KMj0GuFF)mmDVl%)3N0N%6!_U6sBDJlQ|%>V!ZhCowN0005b zNkl8u6I~s>@smDu&5CZ7|6KFy4QP?yFL~XYy4M3G(K>+|j zGXr{53AF)r-|g$ZFm!_89qV4QWM09psyp{H|TT1Xum-<0Q7S{aFrkc@JDRogM4`K zf^NyvGLP7uzs2IKgpEtk26*if^eo^P;Km8M1y1vVmXe_N!i^L3LC!~r)w}IWkJvPH zfg|wA3(EPg2znM2WaEszO*r{TO$EvOh-X3N&p~_sV>EmRT<7kX4>TELl{kCPT^pN@ z{;Pt>;OZQjrz*5tp)nw$9Z*`p_CN!Qvf8aue0rvcl2jT{Nm7~t;rxi51CpELa!=VM zq+3v|q@5)zN!r=HNs`PQdr9gHX!lY#m>*#~j)U!cc{gs1$sm&jKd`>M`Ud%p;*j^G R!NmXo002ovPDHLkV1hjx2d4l4 literal 0 HcmV?d00001 diff --git a/res/graphics/battle/ball_throws/master_ball.png b/res/graphics/battle/ball_throws/master_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..5476cff82ce3e81ab7e44f9e7f302754aba1e883 GIT binary patch literal 684 zcmV;d0#p5oP)Fv){XYPD#~ z)}gCOO4T)6|EKhwWbE&gLHz-xrt~K3gWuELN7B7>oOL{`Lw*z4fTm0c9^Gd=y8-a& zTgLSl1Yf5XP_tX+*=@K5+ysC_&SO3UFxC@a54OOGil`j6CcUozj#QIM36f)aUy z>`%=xd5x0X;z5z))7%ew|hI*Ok1#Lhyb|=0&@Zp@3IjHxXQ-=6qU+OY}K@NSJVDQ0jWd=Uz;WkNDnym}##wr^6)8gjq zuY~Yvi2R+|Qe@_yCEO&8;(?2O(~&t#K3T-rid}J^@VS92|{TJ*)*pChYr%)Pm7@x3iu!h#y zmUb|hc+wNk&#AGt9+uKKbQ?4!+M%$Sax1jxF&f5 zB*=e3r}oO)W+VZoLgpgMuYmn&d|yP!8t*W=9Wb&99|wEoD1+)%3jhEB07*qoM6N<$ Ef~+a3UjP6A literal 0 HcmV?d00001 diff --git a/res/graphics/battle/ball_throws/mud_anim.json b/res/graphics/battle/ball_throws/mud_anim.json new file mode 100644 index 0000000000..a218a9b012 --- /dev/null +++ b/res/graphics/battle/ball_throws/mud_anim.json @@ -0,0 +1,70 @@ +{ + "labelEnabled": true, + "uaatEnabled": false, + "sequenceCount": 2, + "frameCount": 8, + "sequences": [{ + "frameCount": 4, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 2, + "resultId": 0 + }, { + "frameDelay": 2, + "resultId": 1 + }, { + "frameDelay": 2, + "resultId": 2 + }, { + "frameDelay": 2, + "resultId": 3 + }] + }, { + "frameCount": 4, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 1, + "frameData": [{ + "frameDelay": 6, + "resultId": 0 + }, { + "frameDelay": 6, + "resultId": 4 + }, { + "frameDelay": 6, + "resultId": 5 + }, { + "frameDelay": 50, + "resultId": 6 + }] + }], + "animationResults": [{ + "resultType": 0, + "index": 0 + }, { + "resultType": 0, + "index": 1 + }, { + "resultType": 0, + "index": 2 + }, { + "resultType": 0, + "index": 3 + }, { + "resultType": 0, + "index": 4 + }, { + "resultType": 0, + "index": 5 + }, { + "resultType": 0, + "index": 6 + }], + "resultCount": 7, + "labels": ["CellAnime0", "CellAnime1"], + "labelCount": 2 +} \ No newline at end of file diff --git a/res/graphics/battle/ball_throws/mud_cell.json b/res/graphics/battle/ball_throws/mud_cell.json new file mode 100644 index 0000000000..1520a243d1 --- /dev/null +++ b/res/graphics/battle/ball_throws/mud_cell.json @@ -0,0 +1,250 @@ +{ + "labelEnabled": true, + "dontPadKbec": true, + "extended": true, + "vramTransferEnabled": false, + "ucatEnabled": false, + "cellCount": 7, + "mappingType": 1, + "cells": [{ + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 2, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 4, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 6, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 8, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 10, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 12, + "Priority": 0, + "Palette": 0 + } + }] + }], + "labels": ["CellAnime0", "CellAnime1"], + "labelCount": 2 +} \ No newline at end of file diff --git a/res/graphics/battle/ball_throws/nest_ball.png b/res/graphics/battle/ball_throws/nest_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..609e708c1102404ca3a6a69c0176d45dbdeb572a GIT binary patch literal 709 zcmV;$0y_PPP)jSa!cvc8 z>MyQS{(UFBKN2)~nM)?|$``2^mLTZzLsdLGhVqX_HckLMb>I|0Y{_Yif?WAr zPzM}L&}hU3xmqxf%z?8WuvuZ(^nm|@epgWH1PKsCu6%;Gj9vNHn3yKgT#(lPilFTh z0N0kBjX}_OMl?VlV{L;8YHe^q>-pmlM8pM=l!Ss#-bwl92z#_M&8 zE%u<)mCu_rQKw0V(O(esQ{WRN%-D+?wPeO7-FuKbbl@YmC(2%o%01W~sXd^9S)Q92 zJ%BVCWMUQym~-wP)H~;VOGMI_`mYMwc!i*eWW-}MMs#xUv zHU9J3#uETT2NpfR+b+R8g1Qb8mT3_1+_wtgdr{XFlEQ6T!2|Us`VxyQS%k1j8U;Zp rVAI`y1G{do9GL0m%E3tI`{Rr6X0ae)xnB3)00000NkvXXu0mjfDd9bD literal 0 HcmV?d00001 diff --git a/res/graphics/battle/ball_throws/net_ball.png b/res/graphics/battle/ball_throws/net_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..fdcaefaab711949e122e8e43d2978ad491aac058 GIT binary patch literal 726 zcmV;{0xA88P)wI;i&+9Lc#9xtyX5F5nZpp833<-O=b0PnU4ti8!EI5CTuPN~Zwm^Y?>K090|@ zk-PzKz0mp)r8gj?)NfQgwUW_$yqtj?M+fxBdJQ^W|o*hb1yk7F7xu2=q3 zFGkN2w9;JAqf`;*F<;J-;|4*UB_RN>``Q#AP|%yHjrRcFIdBgkw&XrWL9To*s0aR< zpy`wgaTToV)TXOiU07F36aFMbJ<0T=``> zy$e849un2)LkSxa6AO$fU#B1Jt;r2AlE^TT4p1x4LU2O9M-I&NbmU;9_xtt54`Wi_bhi5l?*IS*07*qo IM6N<$g5q#J4*&oF literal 0 HcmV?d00001 diff --git a/res/graphics/battle/ball_throws/park_ball.png b/res/graphics/battle/ball_throws/park_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..9e42cf20c25cefa3090ae27f342f709a0cb9c4ff GIT binary patch literal 592 zcmV-W0|8uke0000000000_@B}~0005o zNkli{Ad^hfa#SpGa%j(hMFKOD9~1a_$7lGeje6mKrK{ar5B&jhW#oS>jj1<7D3 zQIJ%FmXfgjTcz^>K&1ijXzC3L(quyg>70cirSfl(-U@)O0qX+rb^E8mMNqL1JM#g8 z+GhI$cuG@-VN%7$m`oTI#MplkG%@uSKtn2(Jb|EQB}r=NqserrAf59RBqbFjIhQDC zYew>f%w(NL(bTS(x<&-)`aA{w#aHYi=;UWU_e!Opjx)#z!WraC#u755qvxBL3c7y( z1wki)Erd&qbywWU4W*nQ1Hgxu333jgnSts7v|re;&F%&V;76linZ&*0qIzVv^jE9s zv!+SUEo%L{f>N&#p*SJ7a?H`^7>}n%9{?g)3IMiKo^__)@gDnOp>qYGY{0YtSlKPu zN10xrJ1v!H@0kLqJB!5(NyjWYg9{dEppUVs=Kvy2-eOq9kED!yu;~83fmO332X>ks eIS9$s=a)~~T|91Zczg{20000%A_P)v-iLN{30 z!^D`-48TV@3Th6Z8U<|*fM#Y>nKd1NN~n+&NjT^D9^^gege5ZfmHtsdgI5U6wL`?b z;j7Ovr5>(607!KNKs0ezx8-q-xbJPw0mKYi4+zF3SV!3RVeV8KhHmYn0(h?bzC%*; zrX75tAL1)4v80V)6P1KvBw^G2Zv(rIR}QRnxNh?+;|xz1#}JR>Z>Md{Yc>#QldNbonR=Lx~6Q~$yxts&hCEWBZa#xN*u38 z6)#wNg(D_YnMpvH!_8rGVzHZp;%S#Qh8p2&wfBvSzpc7e^+DTfN~gmEE@?sSSPt8J zcNY9TtT1OjXO$mYQ&K;-(JCX26F0s&Grv85^1O0GHB&ajp-EdE9Ix1kn=njQe!(ML zB5D#kLCH~$!)wJ~A=XrjD}JEGjr%n%iF31&H} z%h9Kh=~&6KYr^|-qbu$U{+$2$O85H%Yjrbj!(VfYbw4iJcxk`(ijQ0u`F!QqtqHO= zsV%9mWylE4WXRjF=2GmP=R5qj_C_;!Gwl|9uthWC_@w&@+H=oVyj{x_vAi@^(KGWh zSKf-*4OZK>+++Trd-M5*&QHB3ZEtL;HrtS0eP`pPXFH6IBI4s}7+;B<_skBq4gp1* Mr>mdKI;Vst0HadY-v9sr literal 0 HcmV?d00001 diff --git a/res/graphics/battle/ball_throws/quick_ball.png b/res/graphics/battle/ball_throws/quick_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..698d921aa7ab82bc8cbc5a389f6dc8c1fe572fbe GIT binary patch literal 723 zcmV;^0xbQBP)%N> z$btn1%byAm@C8T(B0xX_C=5Ds5vd6RkLzJSzc>PK%mx|Tpk2o0DlRbawTXbFUKYIh zaL)0cobcWxXeX(l`fmh8P(AEpA6_^e^k)eYG=W6~9d!I2n7}@^pd{QNP_32BD1pNal=x#3+&LgxS!C<+QkdO)zf>w|V{#ft}fzpEFy@HDJGX%LU zR^JLzL7@dyP%5Y(sidMU<^rLlz+fu?1S%F{ z6NOs~ZipZ=l!zePQJXf*ppzkeu7V=lVpx#014RW5;AALmEoc^G3+7A(wY9~TsXL_2 zH>!CComP;!2)ug+b-sOoptHc|JRrs{Q<31ruFS=VRM1tOl5f;lK)wdCIf8=^1bENh z4Cef};*kye>|%qyb9xnP{GA)ydk`@em&Gb*O8u>Z4qj34higK7osCR)ALH_R*ndb6 z2>Br62>3}i8?o^Cj{kjT;tK*@3o;i>(Kauy;5@o?fytCHn){0a^gJS)c;4u+Em|-; zL_;3_#BSR`e-i#?>?=Ngtc5UF4s6T-nyC=3W#_ql@eGN$oT7Id5BC57002ovPDHLk FV1mNlJ-Yw^ literal 0 HcmV?d00001 diff --git a/res/graphics/battle/ball_throws/quick_dusk_heal_anim.json b/res/graphics/battle/ball_throws/quick_dusk_heal_anim.json new file mode 100644 index 0000000000..2aed258e0b --- /dev/null +++ b/res/graphics/battle/ball_throws/quick_dusk_heal_anim.json @@ -0,0 +1,88 @@ +{ + "labelEnabled": true, + "uaatEnabled": false, + "sequenceCount": 2, + "frameCount": 11, + "sequences": [{ + "frameCount": 8, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 2, + "resultId": 0 + }, { + "frameDelay": 2, + "resultId": 1 + }, { + "frameDelay": 2, + "resultId": 2 + }, { + "frameDelay": 2, + "resultId": 3 + }, { + "frameDelay": 2, + "resultId": 4 + }, { + "frameDelay": 2, + "resultId": 5 + }, { + "frameDelay": 2, + "resultId": 6 + }, { + "frameDelay": 2, + "resultId": 7 + }] + }, { + "frameCount": 3, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 1, + "frameData": [{ + "frameDelay": 10, + "resultId": 0 + }, { + "frameDelay": 10, + "resultId": 8 + }, { + "frameDelay": 50, + "resultId": 9 + }] + }], + "animationResults": [{ + "resultType": 0, + "index": 0 + }, { + "resultType": 0, + "index": 1 + }, { + "resultType": 0, + "index": 2 + }, { + "resultType": 0, + "index": 3 + }, { + "resultType": 0, + "index": 4 + }, { + "resultType": 0, + "index": 5 + }, { + "resultType": 0, + "index": 6 + }, { + "resultType": 0, + "index": 7 + }, { + "resultType": 0, + "index": 8 + }, { + "resultType": 0, + "index": 9 + }], + "resultCount": 10, + "labels": ["CellAnime0", "CellAnime1"], + "labelCount": 2 +} \ No newline at end of file diff --git a/res/graphics/battle/ball_throws/repeat_ball.png b/res/graphics/battle/ball_throws/repeat_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..7ea7b3c0b67598381a829c833046684759e84978 GIT binary patch literal 699 zcmV;s0!00ZP)BjE6vs8(7dWSc7*AGj@tC+vHdneB$?d94UIOkB{4D~;hi$K`_-C0aMdema72(RTK)r;q-cxUjXPXe6eZmf#W4!+7|E>&rL%Y0dq}YVvclO z*<4(${D)dNFA*f~3i1>-{x!;pps_Egpu`hx6m;<;4NniD{DZ!UV*np5I04`qa^j*O zTRs(318*j%-=~6XEtrRI!KVgLtuSjEz<)un735h#0t880zJ#X)w)`0;7E2jZL2>-A z2zqknu9p3N?+641eA(mZBZxVVsUQZEw}^_ z+a)myip!Gt2o~$kh6q}4zM+EFoxdUITv0($q-s;l0MewtofE)R6-`rYZs!~k^j+(p zRM5IZ1=Wo)Ym5rw{7nSa#{Aj1KIX@-9`jEG1@?8AVGpw9V-ND|0isP>%370db^m~% zX91IPK#ZN;6%#u5R~Z##je(D$Qmf3oWIGV3X<6oKwgd8Lar0$!C3nENFkX|YQut_@&li_|1`>aiT0MND| zX#mdS63l~Z%`uPdA;McK1#lf|ogxYCrYYQ@t7uBBYe>?9O}sAWEdiTu{~Or#@sk5H htv)#jsa?On_zeMg3uXV$dME$@002ovPDHLkV1i1wGr9l( literal 0 HcmV?d00001 diff --git a/res/graphics/battle/ball_throws/safari_ball.png b/res/graphics/battle/ball_throws/safari_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d8d83f31d6635aa59cc58412797de6fd5884c6 GIT binary patch literal 736 zcmV<60w4W}P){(<69Iw$+XyPEm5p4nP$9rx=npNVWheI^7V zia7HDgm=*}nmm@Y4&O@Mb*Z|zQu+6#sQrelq;{|}{ z25bXxHQ9DikSX65R010l)N0v+Of8s4+kl-4uw0?nRDl12epgUn1bHBcO!)*)**E2% zVPZLvv;|4|uLyeZpF7-bwYGX7s5d7%MjySol+qHUzQ~dw^+*H}*@B3fP|!}!JZeMv zJq>sO;85;|2DhJU8b7nlxQYvYRwfsY%zHe?ibsfgtiNV|#s`Vq$yd zri6mxyS_dkMYWw+oy3Y41Aya3RlARz!^&`7$IuvjB@Qyp6X8U{=%Ky9@I^KjDC@vTf9$IgAF z0KRwAG(plen`HdFHbDng-ClJ(VB8#2w;Cu){45Xl@zm6|x2n6kjRw(F!e2DTHK>6y4!FK@1 zJ<)oDJxK4@R`#H#4|>q%7%Z{P@iPR4+x%{#l@K&dL_$zL2%t_~;N#R~T_yyXtTQOc z^2tE-AO_fjEO!_k??Gwt7X-Zv6o1H=SUb>K?EBwdx-51MY77I@Bj8woOZi|_xZl7Q zRBK8#>~nk$itcmD6J5np|EQqZE5vzKEuqZV`c<{W<>&*z+0g+|eLl8Bvy4&u$;TQ% z&R~dum!e>MdaBGkPvDp~Y5}*PoD0l{-K!EW8+9W6x1J%&UAwPpm zkJ^@!yhYcxuPG3WLYfLv6wSSC~T_k9PNRU-bP`~LU6V#7dmQ2u#?H_3Si^gX~ zz+C`q0%}jzH5C-v=Yk^eV}hE73kto^I=TSv6JQ$Q$0WeNplb!`AV?BH7}`hj77XoE zAO^&N3qt%Wg5Le-FmIX)sh}xTQ1J0f1dYH2IRK!7R$)(Gq&8_413UoinV{GQ4nACv z4;K`^@B^E)gXk1<5S?Pi3DxFyIz;ai74A4J#h;KljE=H1^bKxG8Jm-Wb zvQ3qKsi4U#2|8dz7~A_rb56hSO4j$=Ti_+1~4W-b{azK0Oz1( zl>)DHRzRM6=PWBdOlrv&+>}&dl_z6PCeal@F3F_xZ$oB1T{&o_)0Kmf==t{Y3U4sl Uc^lhd1ONa407*qoM6N<$f~9Ek_5c6? literal 0 HcmV?d00001 diff --git a/res/graphics/battle/ball_throws/unused_poke_ball.png b/res/graphics/battle/ball_throws/unused_poke_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8a4f3668108325d1e89f6da58b9ac14d71d4e0 GIT binary patch literal 530 zcmV+t0`2{YP)4qH5QaVE52zsZ=yoqXYP|FoHbY46)w^I9|3)FmUTt&PUu$=w;5#d% zl@=|`XJ(aEnn*r4S@4R3=(iin_x^@%K@kulSarmm(6BYbj`F^cV%LKAP%z1o4My zs40L)1~ULEkeNb39A65Gz|91usT9Onu#cRJ%FIHZ<;>(C|w<1LQp6v$hn&c3R$F}TuVWm1qDsF zb-5XenH&md@|M8{fD2^fP!PwLf+BD;LD%>dy9>HhP|1R7oIxBPXOQ9ea!3=YE6kv; z!H*UG&L5*I{ts%mL6NnBwEbrQ3QH6c10e4SK(h9siqoE?V$gH}-xgeRSb=>+3qq&i zTG4t!Bo^>B4U+iKvul&FZz{h7F!8ze131L+kkxSL@nONKhlhoowhv2?==0yJPa==} U;M1&07*qoM6N<$g2GeZ>i_@% literal 0 HcmV?d00001 diff --git a/res/graphics/battle/ball_throws/unused_poke_ball_anim.json b/res/graphics/battle/ball_throws/unused_poke_ball_anim.json new file mode 100644 index 0000000000..d25c104313 --- /dev/null +++ b/res/graphics/battle/ball_throws/unused_poke_ball_anim.json @@ -0,0 +1,88 @@ +{ + "labelEnabled": true, + "uaatEnabled": false, + "sequenceCount": 2, + "frameCount": 11, + "sequences": [{ + "frameCount": 8, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 2, + "resultId": 0 + }, { + "frameDelay": 2, + "resultId": 1 + }, { + "frameDelay": 6, + "resultId": 2 + }, { + "frameDelay": 2, + "resultId": 3 + }, { + "frameDelay": 2, + "resultId": 4 + }, { + "frameDelay": 2, + "resultId": 5 + }, { + "frameDelay": 6, + "resultId": 6 + }, { + "frameDelay": 2, + "resultId": 7 + }] + }, { + "frameCount": 3, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 10, + "resultId": 0 + }, { + "frameDelay": 10, + "resultId": 8 + }, { + "frameDelay": 50, + "resultId": 9 + }] + }], + "animationResults": [{ + "resultType": 0, + "index": 0 + }, { + "resultType": 0, + "index": 1 + }, { + "resultType": 0, + "index": 2 + }, { + "resultType": 0, + "index": 3 + }, { + "resultType": 0, + "index": 4 + }, { + "resultType": 0, + "index": 5 + }, { + "resultType": 0, + "index": 6 + }, { + "resultType": 0, + "index": 7 + }, { + "resultType": 0, + "index": 8 + }, { + "resultType": 0, + "index": 9 + }], + "resultCount": 10, + "labels": ["CellAnime0", "CellAnime1"], + "labelCount": 2 +} \ No newline at end of file diff --git a/res/graphics/battle/healthbox/arrows_thin.png b/res/graphics/battle/healthbox/arrows_thin.png new file mode 100644 index 0000000000000000000000000000000000000000..9c4da542d68e06f45d8e41b1032be6d0a0305120 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^1whQf!VDxY?@zk|qznRlLR{x;dADZG6iq|TBrnT* z_wE6OC5|fWEoOMPhGC7Nz<);piKM-bQ=Z*(Jp2Fu|E%ID{T=J}02Re}x;TbNgfE@w z&2_+lgH_&_Psqmc0QZiH4ZLGFlS6?@;J~QXpqrBzk zJ*v8liYD1U@XmhjGWXW&O`6^&;y+biX`aeA+?Msj;$pc?sZQ}u#`zoMfc7wWy85}S Ib4q9e0G5+d$^ZZW literal 0 HcmV?d00001 diff --git a/res/graphics/battle/healthbox/arrows_thin_anim.json b/res/graphics/battle/healthbox/arrows_thin_anim.json new file mode 100644 index 0000000000..deb41d10b3 --- /dev/null +++ b/res/graphics/battle/healthbox/arrows_thin_anim.json @@ -0,0 +1,48 @@ +{ + "labelEnabled": true, + "uaatEnabled": false, + "sequenceCount": 1, + "frameCount": 5, + "sequences": [{ + "frameCount": 5, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 16, + "resultId": 0 + }, { + "frameDelay": 4, + "resultId": 1 + }, { + "frameDelay": 6, + "resultId": 2 + }, { + "frameDelay": 6, + "resultId": 3 + }, { + "frameDelay": 6, + "resultId": 4 + }] + }], + "animationResults": [{ + "resultType": 0, + "index": 0 + }, { + "resultType": 0, + "index": 1 + }, { + "resultType": 0, + "index": 2 + }, { + "resultType": 0, + "index": 3 + }, { + "resultType": 0, + "index": 4 + }], + "resultCount": 5, + "labels": ["CellAnime0"], + "labelCount": 1 +} \ No newline at end of file diff --git a/res/graphics/battle/healthbox/arrows_thin_cell.json b/res/graphics/battle/healthbox/arrows_thin_cell.json new file mode 100644 index 0000000000..2febc86963 --- /dev/null +++ b/res/graphics/battle/healthbox/arrows_thin_cell.json @@ -0,0 +1,212 @@ +{ + "labelEnabled": true, + "dontPadKbec": true, + "extended": false, + "vramTransferEnabled": false, + "ucatEnabled": false, + "cellCount": 6, + "mappingType": 1, + "cells": [{ + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": false, + "boundingSphereRadius": 0 + }, + "oamCount": 0, + "OAM": [] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": false, + "boundingSphereRadius": 3 + }, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": false, + "boundingSphereRadius": 3 + }, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 1, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": false, + "boundingSphereRadius": 3 + }, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 2, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": false, + "boundingSphereRadius": 5 + }, + "oamCount": 2, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 3, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 8, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 4, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": false, + "boundingSphereRadius": 5 + }, + "oamCount": 2, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 5, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 8, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 6, + "Priority": 0, + "Palette": 0 + } + }] + }], + "labels": ["CellAnime0"], + "labelCount": 1 +} \ No newline at end of file diff --git a/res/graphics/battle/healthbox/arrows_wide.png b/res/graphics/battle/healthbox/arrows_wide.png new file mode 100644 index 0000000000000000000000000000000000000000..cfdfa4d495ce0affd238b355b5a431ec11f57375 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^5quo4>%b3cQ7&CbCO)mx^$ObY`ux< zHf8r4%lLKA_&$!wlW=EvP%GeYAX+1N>w=K$OS|Ws5Y)2zxUh9+W{vXq@26u!`5y{? Ty>|3E&`t(VS3j3^P60oneEP);L6qj+LCydF|7vquFSxF}00027 zNkl#eFFo6kvNdTo_;Gh!V&Yp-^MQ8|aS&~R< zwdLi!vL~u8%(Fr=U2pi>aZ7{=f523}^9i9k4mGXMYp07*qoM6N<$g7go23jhEB literal 0 HcmV?d00001 diff --git a/res/graphics/battle/healthbar_parts.png b/res/graphics/battle/healthbox/healthbar_parts.png similarity index 100% rename from res/graphics/battle/healthbar_parts.png rename to res/graphics/battle/healthbox/healthbar_parts.png diff --git a/res/graphics/battle/healthbox/meson.build b/res/graphics/battle/healthbox/meson.build new file mode 100644 index 0000000000..ca522ae56d --- /dev/null +++ b/res/graphics/battle/healthbox/meson.build @@ -0,0 +1,103 @@ +healthbox_nclr = custom_target( + 'primary.NCLR', + output: 'primary.NCLR', + input: files('player_singles.png'), + command: [ + nitrogfx_exe, '@INPUT@', '@OUTPUT@', + '-bitdepth', '4', + '-nopad', + '-invertsize', + '-pcmp', + ], +) + +healthbox_safari_nclr = custom_target( + 'safari.NCLR', + output: 'safari.NCLR', + input: files('safari.png'), + command: [ + nitrogfx_exe, '@INPUT@', '@OUTPUT@', + '-bitdepth', '4', + '-nopad', + '-invertsize', + '-pcmp', + ], +) + +short_cell = files('short_cell.json') +tall_cell = files('tall_cell.json') + +battle_sprites += [ + copy_gen.process( + healthbox_nclr, + healthbox_safari_nclr, + preserve_path_from: base_build_directory, + ), + + ncgr_lz_gen.process( + files('arrows_thin.png'), + preserve_path_from: base_directory, + extra_args: [ '-bitdepth', '4', '-clobbersize', '-mappingtype', '64' ], + ), + + ncgr_cell_lz_gen.process( + files('arrows_wide.png'), + preserve_path_from: base_directory, + extra_args: [ '-bitdepth', '4', '-clobbersize', '-mappingtype', '64' ], + ), + + ncgr_lz_gen.process( + files('player_doubles.png', 'enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-version101', '-cell', short_cell[0].full_path(), + ], + ), + + ncgr_lz_gen.process( + files('player_singles.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-version101', '-cell', tall_cell[0].full_path(), + ], + ), + + ncgr_cell_lz_gen.process( + files('safari.png'), + preserve_path_from: base_directory, + extra_args: [ '-bitdepth', '4', '-clobbersize', '-mappingtype', '64' ], + ), + + ncer_lz_gen.process( + files( + 'short_cell.json', + 'tall_cell.json', + 'safari_cell.json', + 'arrows_thin_cell.json', + 'arrows_wide_cell.json', + ), + preserve_path_from: base_directory, + ), + + nanr_lz_gen.process( + files( + 'arrows_thin_anim.json', + 'arrows_wide_anim.json', + ), + preserve_path_from: base_directory, + ) +] + +healthbar_parts_embed = custom_target( + 'healthbar_parts.4bpp.h', + output: [ + 'healthbar_parts.4bpp', + 'healthbar_parts.4bpp.h', + ], + input: files('healthbar_parts.png'), + command: [ nitrogfx_exe, '@INPUT@', '@OUTPUT0@', '-embed', 'sHealthbarPartsBitmap' ], +) + +embed_headers += healthbar_parts_embed[1] diff --git a/res/graphics/battle/healthbox/player_doubles.png b/res/graphics/battle/healthbox/player_doubles.png new file mode 100644 index 0000000000000000000000000000000000000000..9141b88c69e52f8c0cc106b3d0137de21fdf7b61 GIT binary patch literal 295 zcmV+?0oeYDP);L6qj+LCydF|7vquFSxF}00028 zNklu?_+u3_uz90l&bA&YIY})m)@Evs_pHp0$H<*X8h*Yc8P<#`G-=ZC`+d z7UvAZSn$|L72qQ@@f>DBYO4>ID!3nZO@u|Tf3;u&6PVz;0#ph-3_3xCP9^Z5!np{? z)yS=IX3kP!sR9qz^@e$7&V{qoPs_Zz1VY9MaYEb{L}`!Rh|@^hM@UjePecU06sFG| tAR_+4TTo6W^=wp6XZ8QUFbv}_cmt|+m~gZ4p2z?I002ovPDHLkV1n@Ue5(Ke literal 0 HcmV?d00001 diff --git a/res/graphics/battle/healthbox/player_singles.png b/res/graphics/battle/healthbox/player_singles.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d14e8ad3dd4b7d411a5288eae216924cc64e85 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!VDx8ekAz-DT4r?5Z5_d-mO_PMbl6-$;LZ(-XqzjGw;N52dihD?7ps%X61h|mXm Oiow&>&t;ucLK6U4Tz5ScQwmy97b*=i`b{UC3M;^M1*?*RK{`C(dm(RbC#v7Fr PLEiCn^>bP0l+XkKToGq4+IPh?_PJr z163<{x;Tb#L?>6Uv+?loy#LR9(B7%1-r%T$-b9`bu}2IHeLg0kflOjqAd@{^{an^L HB{Ts5{o)`T literal 0 HcmV?d00001 diff --git a/res/graphics/battle/interface/cursor_anim.json b/res/graphics/battle/interface/cursor_anim.json new file mode 100644 index 0000000000..0f6909472a --- /dev/null +++ b/res/graphics/battle/interface/cursor_anim.json @@ -0,0 +1,147 @@ +{ + "labelEnabled": true, + "uaatEnabled": false, + "sequenceCount": 4, + "frameCount": 16, + "sequences": [{ + "frameCount": 4, + "loopStartFrame": 0, + "animationElement": 2, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 6, + "resultId": 0 + }, { + "frameDelay": 6, + "resultId": 1 + }, { + "frameDelay": 6, + "resultId": 2 + }, { + "frameDelay": 6, + "resultId": 1 + }] + }, { + "frameCount": 4, + "loopStartFrame": 0, + "animationElement": 2, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 6, + "resultId": 3 + }, { + "frameDelay": 6, + "resultId": 4 + }, { + "frameDelay": 6, + "resultId": 5 + }, { + "frameDelay": 6, + "resultId": 4 + }] + }, { + "frameCount": 4, + "loopStartFrame": 0, + "animationElement": 2, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 6, + "resultId": 6 + }, { + "frameDelay": 6, + "resultId": 7 + }, { + "frameDelay": 6, + "resultId": 8 + }, { + "frameDelay": 6, + "resultId": 7 + }] + }, { + "frameCount": 4, + "loopStartFrame": 0, + "animationElement": 2, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 6, + "resultId": 9 + }, { + "frameDelay": 6, + "resultId": 10 + }, { + "frameDelay": 6, + "resultId": 11 + }, { + "frameDelay": 6, + "resultId": 10 + }] + }], + "animationResults": [{ + "resultType": 2, + "index": 0, + "positionX": 0, + "positionY": 0 + }, { + "resultType": 2, + "index": 0, + "positionX": -1, + "positionY": -1 + }, { + "resultType": 2, + "index": 0, + "positionX": -2, + "positionY": -2 + }, { + "resultType": 2, + "index": 1, + "positionX": 0, + "positionY": 0 + }, { + "resultType": 2, + "index": 1, + "positionX": 1, + "positionY": -1 + }, { + "resultType": 2, + "index": 1, + "positionX": 2, + "positionY": -2 + }, { + "resultType": 2, + "index": 2, + "positionX": 0, + "positionY": 0 + }, { + "resultType": 2, + "index": 2, + "positionX": -1, + "positionY": 1 + }, { + "resultType": 2, + "index": 2, + "positionX": -2, + "positionY": 2 + }, { + "resultType": 2, + "index": 3, + "positionX": 0, + "positionY": 0 + }, { + "resultType": 2, + "index": 3, + "positionX": 1, + "positionY": 1 + }, { + "resultType": 2, + "index": 3, + "positionX": 2, + "positionY": 2 + }], + "resultCount": 12, + "labels": ["CellAnime0", "CellAnime1", "CellAnime2", "CellAnime3"], + "labelCount": 4 +} \ No newline at end of file diff --git a/res/graphics/battle/interface/cursor_cell.json b/res/graphics/battle/interface/cursor_cell.json new file mode 100644 index 0000000000..d74af4085c --- /dev/null +++ b/res/graphics/battle/interface/cursor_cell.json @@ -0,0 +1,148 @@ +{ + "labelEnabled": true, + "dontPadKbec": false, + "extended": true, + "vramTransferEnabled": false, + "ucatEnabled": false, + "cellCount": 4, + "mappingType": 0, + "cells": [{ + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": true, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 8, + "Size": 1 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": true, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 16, + "Size": 1 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": true, + "vFlip": true, + "hvFlip": true, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 24, + "Size": 1 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }] + }], + "labels": ["CellAnime0", "CellAnime1", "CellAnime2", "CellAnime3"], + "labelCount": 4 +} \ No newline at end of file diff --git a/res/graphics/battle/interface/level_up.pal b/res/graphics/battle/interface/level_up.pal new file mode 100644 index 0000000000..91d166e45a --- /dev/null +++ b/res/graphics/battle/interface/level_up.pal @@ -0,0 +1,35 @@ +JASC-PAL +0100 +32 +123 156 115 +74 74 98 +90 98 115 +255 255 255 +156 197 246 +131 180 246 +90 131 213 +65 106 156 +230 205 197 +98 255 98 +24 197 32 +197 172 148 +139 98 74 +74 49 0 +255 222 0 +238 172 0 +0 0 0 +255 255 255 +90 98 115 +90 131 213 +156 197 246 +255 49 49 +255 115 115 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/res/graphics/battle/interface/level_up.png b/res/graphics/battle/interface/level_up.png new file mode 100644 index 0000000000000000000000000000000000000000..fad1528765657acf604d30950d24e6b313c6d8d8 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!VDx8ekAz-DT4r?5ZCHC#a>=XQAx%B|NozJ z^jq_mZ&A%x9kb>Oeqce5?zcJ7}%#UGzuLsYOYIeWM$zHPzYeZ!GDRLq2O8Fa=ql9 bsV`V9_nd#4zfCwBXf=bUtDnm{r-UW|i5*t^ literal 0 HcmV?d00001 diff --git a/res/graphics/battle/interface/level_up_cell.json b/res/graphics/battle/interface/level_up_cell.json new file mode 100644 index 0000000000..0b10801e85 --- /dev/null +++ b/res/graphics/battle/interface/level_up_cell.json @@ -0,0 +1,66 @@ +{ + "labelEnabled": true, + "dontPadKbec": false, + "extended": true, + "vramTransferEnabled": false, + "ucatEnabled": false, + "cellCount": 1, + "mappingType": 1, + "cells": [{ + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 36 + }, + "maxX": 128, + "maxY": 64, + "minX": 0, + "minY": 0, + "oamCount": 2, + "OAM": [{ + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 0, + "RotationScaling": 0, + "Size": 3 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 64, + "RotationScaling": 0, + "Size": 3 + }, + "Attr2": { + "CharName": 32, + "Priority": 0, + "Palette": 0 + } + }] + }], + "labels": ["CellAnime0"], + "labelCount": 1 +} \ No newline at end of file diff --git a/res/graphics/battle/interface/meson.build b/res/graphics/battle/interface/meson.build new file mode 100644 index 0000000000..8eaeba1ced --- /dev/null +++ b/res/graphics/battle/interface/meson.build @@ -0,0 +1,56 @@ +battle_sprites += [ + nclr_gen.process( + files('shared.pal'), + preserve_path_from: base_directory, + extra_args: [ + '-nopad', '-invertsize', '-pcmp', '-bitdepth', '4', + '-num_colors', '112', + ], + ), + + nclr_gen.process( + files( + 'cursor.png', + 'level_up.pal', + 'top_stock.png', + ), + preserve_path_from: base_directory, + extra_args: [ '-nopad', '-invertsize', '-pcmp', '-bitdepth', '4' ], + ), + + ncgr_cell_lz_gen.process( + files( + 'stock_enemy.png', + 'stock_player.png', + 'cursor.png', + ), + preserve_path_from: base_directory, + extra_args: [ '-bitdepth', '4', '-clobbersize' ], + ), + + ncgr_cell_lz_gen.process( + files('level_up.png', 'top_stock.png'), + preserve_path_from: base_directory, + extra_args: [ '-bitdepth', '4', '-clobbersize', '-mappingtype', '64' ], + ), + + ncer_lz_gen.process( + files( + 'stock_enemy_cell.json', + 'stock_player_cell.json', + 'cursor_cell.json', + 'level_up_cell.json', + 'top_stock_cell.json', + ), + preserve_path_from: base_directory, + ), + + nanr_lz_gen.process( + files( + 'stock_anim.json', + 'cursor_anim.json', + 'top_stock_anim.json', + ), + preserve_path_from: base_directory, + ), +] diff --git a/res/graphics/battle/interface/shared.pal b/res/graphics/battle/interface/shared.pal new file mode 100644 index 0000000000..a41fa1656a --- /dev/null +++ b/res/graphics/battle/interface/shared.pal @@ -0,0 +1,147 @@ +JASC-PAL +0100 +144 +123 131 255 +139 139 148 +172 172 189 +255 255 255 +57 49 49 +255 148 131 +255 82 57 +164 65 123 +205 205 213 +82 82 82 +222 139 164 +189 82 98 +131 74 74 +0 0 0 +139 139 139 +123 123 123 +123 131 255 +139 139 148 +213 213 222 +255 255 255 +49 49 49 +246 139 139 +255 106 106 +115 115 115 +164 65 82 +189 106 123 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +131 131 131 +106 106 106 +98 98 205 +255 255 255 +238 213 213 +90 32 32 +255 255 255 +238 230 189 +98 65 0 +255 255 255 +213 238 213 +32 74 24 +255 255 255 +205 205 230 +16 32 90 +0 0 0 +0 0 0 +172 230 189 +98 98 205 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +148 148 131 +115 115 106 +32 32 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +123 131 255 +57 65 57 +115 139 115 +139 106 16 +255 230 8 +180 65 0 +255 131 0 +148 0 32 +255 106 106 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +139 82 98 +255 255 255 +255 255 255 +205 205 205 +0 0 0 +172 172 172 +148 148 148 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +123 131 255 +255 255 255 +238 213 213 +90 32 32 +255 255 255 +205 205 230 +16 32 90 +0 57 255 +106 205 255 +255 0 32 +255 156 156 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +131 82 156 +24 16 164 +246 0 0 +0 0 0 +57 0 0 +123 189 123 +65 0 0 +0 0 0 +0 0 0 +8 0 0 +16 0 0 +24 0 0 +32 0 0 +41 0 0 +49 0 0 +0 0 0 +8 123 246 +8 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/res/graphics/battle/interface/stock_anim.json b/res/graphics/battle/interface/stock_anim.json new file mode 100644 index 0000000000..84d25877c8 --- /dev/null +++ b/res/graphics/battle/interface/stock_anim.json @@ -0,0 +1,63 @@ +{ + "labelEnabled": true, + "uaatEnabled": false, + "sequenceCount": 4, + "frameCount": 4, + "sequences": [{ + "frameCount": 1, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 4, + "resultId": 0 + }] + }, { + "frameCount": 1, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 4, + "resultId": 1 + }] + }, { + "frameCount": 1, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 4, + "resultId": 2 + }] + }, { + "frameCount": 1, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 4, + "resultId": 3 + }] + }], + "animationResults": [{ + "resultType": 0, + "index": 0 + }, { + "resultType": 0, + "index": 1 + }, { + "resultType": 0, + "index": 2 + }, { + "resultType": 0, + "index": 3 + }], + "resultCount": 4, + "labels": ["CellAnime0", "CellAnime1", "CellAnime2", "CellAnime3"], + "labelCount": 4 +} \ No newline at end of file diff --git a/res/graphics/battle/interface/stock_enemy.png b/res/graphics/battle/interface/stock_enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..b42388296c6704c1fb06d325363276ba9dbcee5a GIT binary patch literal 285 zcmV+&0pk9NP)K?;K~5JmqDLLfJZ7Z3;0RW2bpiHjV-O)lBaV%D85q7oHp3;mmUe1^{h zzKhZAsvbf0sSE)6daSTD*XMobHoE46hEO5tBQXHe#~4Em5+{li147ggF(AGn-!Nc0 z?|nc8kj@hymd~ociVdlV4JoBigQS_#d=SeE<%Iz==9~j6fQb;@5TtP9DvCo9N)C!pM#lpntU!us$qN$m0pbUwqQvg5r#f0!K1x^d zUr1gMXU`J1XImml5han>?nX1avwPEO{kJNL_u9LPTxg&;1r)`{p`s~@!{P0_K&{8u zV;fGJyZp&>SL=7(H~>(8R}g?OSi#65JU;}85MjDl1VKO)2uol!GK$~{CBfrSpP0cCO0W8^G5cb8KQH z`5s_SW3;XL-VThPfv?aUG2|8*a!Y|pcYx*+GIlQ$NTnT^R7#mt0+Y(@9GDa33L)z6 z3L=EZI$~oHu3s1;M2OdG#u!nAR|1`lQLr17u)$H|My#x^0b<&i0(?STtDFBXS+eHp)qDT{ z|F<+W)C|&8C{_@dBEhjmfZ-}fb949qtgL&MmRF0r_eN#SNlJQkcfte)2IjY(E{-7; zx8B}0EV|_&a_pmS3FC%UC5*BMIxQMlyT<4N8(Lj8RY_@b!~Td&@}fBWw;g_a2(iY?+9KuSo`;ntecW2_!qqSnf>vdyr0 zS;NY9Aw@U0tImi%XFKpSoPi|Ep8=J(^OPm(XDPKHY{pyyT`dp)6GWoaU z%#(lOTHY^P&&>USsXw9M9{agjY|9rMv|M=5ar^73ziws-eCBy!>T!-+YL0Moasf}@ zmU9UOau;2^)%@RtB^KOb;QK53u(Bb2(?LTE!7Hv6sqNR7u`O49u;6*hpC$eGLnUOI zg;^~=+%>KH-S?gU2Or11!v}WO2V~+oZ3|7_bC$g4+Su6dt}Fh!`DF4L z;|13hG|y!gn6VvyAR(jKEYJId`P3cS4MfL2ZfS($zH_NLBCwl7jDPk}-gfnm_BZ2Dnw zW7Y2E2NUC0O3o2$aISZ)kb5vQr+~+grBpEP=EJQk4`y;&ys(tCfBAdrtb?7*b5f5s zU4B_|Vg5EvyNo-E2Q{@aJ)1UPaSjbJ{68%!od2o;D>F~^yDs~6bD|hH6&z#b^}7ysOsFQ0Uzb``P))*iuI9^Z1uxcf zoM*O~%-eUcbAjF=ZR1Y1Q^VM8B{$2}cW+#)(k9Si0YmfhCuVH6-|L{Sq z#;*Rha;A@Q%YXsO_FQz%6t;Aq=FLk$DR17d$ce{nn5%dvB>{y@EP(02L-S9@g6X9h z1vkR8*p{qse2Y(7P-0^khP*majz<-_Lf7b__1I9NW{NaBPu()38hM~l~HUX!;-p01&iY>p* zkKMhSR9J02|NfmbY1gk`etC83J^Qxh`RqIXZ;a5{cmDb3{LMGtye_f&yJ&xR!#M}3 k#_S2tE9ceoefhz=@*2ww?@7h8frSPGFsr$&b4q9e0CVXCu>b%7 literal 0 HcmV?d00001 diff --git a/res/graphics/battle/interface/top_stock_anim.json b/res/graphics/battle/interface/top_stock_anim.json new file mode 100644 index 0000000000..2219edad6b --- /dev/null +++ b/res/graphics/battle/interface/top_stock_anim.json @@ -0,0 +1,308 @@ +{ + "labelEnabled": true, + "uaatEnabled": false, + "sequenceCount": 9, + "frameCount": 51, + "sequences": [{ + "frameCount": 8, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 1, + "resultId": 0 + }, { + "frameDelay": 1, + "resultId": 1 + }, { + "frameDelay": 1, + "resultId": 2 + }, { + "frameDelay": 1, + "resultId": 3 + }, { + "frameDelay": 1, + "resultId": 4 + }, { + "frameDelay": 1, + "resultId": 5 + }, { + "frameDelay": 1, + "resultId": 6 + }, { + "frameDelay": 1, + "resultId": 7 + }] + }, { + "frameCount": 8, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 1, + "resultId": 8 + }, { + "frameDelay": 1, + "resultId": 9 + }, { + "frameDelay": 1, + "resultId": 10 + }, { + "frameDelay": 1, + "resultId": 11 + }, { + "frameDelay": 1, + "resultId": 12 + }, { + "frameDelay": 1, + "resultId": 13 + }, { + "frameDelay": 1, + "resultId": 14 + }, { + "frameDelay": 1, + "resultId": 15 + }] + }, { + "frameCount": 8, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 1, + "resultId": 16 + }, { + "frameDelay": 1, + "resultId": 17 + }, { + "frameDelay": 1, + "resultId": 18 + }, { + "frameDelay": 1, + "resultId": 19 + }, { + "frameDelay": 1, + "resultId": 20 + }, { + "frameDelay": 1, + "resultId": 21 + }, { + "frameDelay": 1, + "resultId": 22 + }, { + "frameDelay": 1, + "resultId": 23 + }] + }, { + "frameCount": 8, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 1, + "resultId": 0 + }, { + "frameDelay": 1, + "resultId": 7 + }, { + "frameDelay": 1, + "resultId": 6 + }, { + "frameDelay": 1, + "resultId": 5 + }, { + "frameDelay": 1, + "resultId": 4 + }, { + "frameDelay": 1, + "resultId": 3 + }, { + "frameDelay": 1, + "resultId": 2 + }, { + "frameDelay": 1, + "resultId": 1 + }] + }, { + "frameCount": 8, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 1, + "resultId": 8 + }, { + "frameDelay": 1, + "resultId": 15 + }, { + "frameDelay": 1, + "resultId": 14 + }, { + "frameDelay": 1, + "resultId": 13 + }, { + "frameDelay": 1, + "resultId": 12 + }, { + "frameDelay": 1, + "resultId": 11 + }, { + "frameDelay": 1, + "resultId": 10 + }, { + "frameDelay": 1, + "resultId": 9 + }] + }, { + "frameCount": 8, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 1, + "resultId": 16 + }, { + "frameDelay": 1, + "resultId": 23 + }, { + "frameDelay": 1, + "resultId": 22 + }, { + "frameDelay": 1, + "resultId": 21 + }, { + "frameDelay": 1, + "resultId": 20 + }, { + "frameDelay": 1, + "resultId": 19 + }, { + "frameDelay": 1, + "resultId": 18 + }, { + "frameDelay": 1, + "resultId": 17 + }] + }, { + "frameCount": 1, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 4, + "resultId": 24 + }] + }, { + "frameCount": 1, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 4, + "resultId": 25 + }] + }, { + "frameCount": 1, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 4, + "resultId": 26 + }] + }], + "animationResults": [{ + "resultType": 0, + "index": 0 + }, { + "resultType": 0, + "index": 7 + }, { + "resultType": 0, + "index": 6 + }, { + "resultType": 0, + "index": 5 + }, { + "resultType": 0, + "index": 4 + }, { + "resultType": 0, + "index": 3 + }, { + "resultType": 0, + "index": 2 + }, { + "resultType": 0, + "index": 1 + }, { + "resultType": 0, + "index": 8 + }, { + "resultType": 0, + "index": 15 + }, { + "resultType": 0, + "index": 14 + }, { + "resultType": 0, + "index": 13 + }, { + "resultType": 0, + "index": 12 + }, { + "resultType": 0, + "index": 11 + }, { + "resultType": 0, + "index": 10 + }, { + "resultType": 0, + "index": 9 + }, { + "resultType": 0, + "index": 16 + }, { + "resultType": 0, + "index": 23 + }, { + "resultType": 0, + "index": 22 + }, { + "resultType": 0, + "index": 21 + }, { + "resultType": 0, + "index": 20 + }, { + "resultType": 0, + "index": 19 + }, { + "resultType": 0, + "index": 18 + }, { + "resultType": 0, + "index": 17 + }, { + "resultType": 0, + "index": 24 + }, { + "resultType": 0, + "index": 25 + }, { + "resultType": 0, + "index": 26 + }], + "resultCount": 27, + "labels": ["CellAnime8", "CellAnime7", "CellAnime6", "CellAnime0", "CellAnime1", "CellAnime2", "CellAnime3", "CellAnime4", "CellAnime5"], + "labelCount": 9 +} \ No newline at end of file diff --git a/res/graphics/battle/interface/top_stock_cell.json b/res/graphics/battle/interface/top_stock_cell.json new file mode 100644 index 0000000000..e9adf7b730 --- /dev/null +++ b/res/graphics/battle/interface/top_stock_cell.json @@ -0,0 +1,1130 @@ +{ + "labelEnabled": true, + "dontPadKbec": true, + "extended": true, + "vramTransferEnabled": false, + "ucatEnabled": false, + "cellCount": 27, + "mappingType": 1, + "cells": [{ + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 2, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 4, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 6, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 8, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 10, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 12, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 14, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 16, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 18, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 20, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 22, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 24, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 26, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 28, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 30, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 32, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 34, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 36, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 38, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 40, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 42, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 44, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 46, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 3 + }, + "maxX": 8, + "maxY": 8, + "minX": -8, + "minY": -8, + "oamCount": 1, + "OAM": [{ + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 48, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": true, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 24 + }, + "maxX": 96, + "maxY": 8, + "minX": -96, + "minY": 0, + "oamCount": 6, + "OAM": [{ + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 64, + "RotationScaling": 8, + "Size": 1 + }, + "Attr2": { + "CharName": 50, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 32, + "RotationScaling": 8, + "Size": 1 + }, + "Attr2": { + "CharName": 52, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 0, + "RotationScaling": 8, + "Size": 1 + }, + "Attr2": { + "CharName": 54, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -32, + "RotationScaling": 8, + "Size": 1 + }, + "Attr2": { + "CharName": 56, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -64, + "RotationScaling": 8, + "Size": 1 + }, + "Attr2": { + "CharName": 58, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -96, + "RotationScaling": 8, + "Size": 1 + }, + "Attr2": { + "CharName": 60, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 24 + }, + "maxX": 96, + "maxY": 8, + "minX": -96, + "minY": 0, + "oamCount": 6, + "OAM": [{ + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -96, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 50, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -64, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 52, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -32, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 54, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 0, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 56, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 32, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 58, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 64, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 60, + "Priority": 0, + "Palette": 0 + } + }] + }], + "labels": ["CellAnime8", "CellAnime7", "CellAnime6", "CellAnime0", "CellAnime1", "CellAnime2", "CellAnime3", "CellAnime4", "CellAnime5"], + "labelCount": 9 +} \ No newline at end of file diff --git a/res/graphics/battle/meson.build b/res/graphics/battle/meson.build index 2b17663a9d..a68dfaef83 100644 --- a/res/graphics/battle/meson.build +++ b/res/graphics/battle/meson.build @@ -1,12 +1,31 @@ subdir('moves') -healthbar_parts_embed = custom_target('healthbar_parts.4bpp.h', - output: [ - 'healthbar_parts.4bpp', - 'healthbar_parts.4bpp.h', - ], - input: files('healthbar_parts.png'), - command: [ nitrogfx_exe, '@INPUT@', '@OUTPUT0@', '-embed', 'sHealthbarPartsBitmap' ], +battle_sprites = [] +base_directory = meson.current_source_dir() +base_build_directory = meson.current_build_dir() + +subdir('ball_throws') +subdir('healthbox') +subdir('interface') +subdir('misc') +subdir('terrain') +subdir('trainer_backs') +subdir('type_icons') + +battle_sprites_narc = custom_target( + 'sprites.narc', + output: [ 'sprites.narc', 'sprites.naix' ], + input: battle_sprites, + + command: [ + nitroarc_exe, + '--create', + '--index', + '--files-from', files('sprites.order'), + '--file', '@OUTPUT0@', + '@PRIVATE_DIR@', + ], ) -embed_headers += healthbar_parts_embed[1] +nitrofs_files += battle_sprites_narc +naix_headers += battle_sprites_narc[1] diff --git a/res/graphics/battle/misc/debug.pal b/res/graphics/battle/misc/debug.pal new file mode 100644 index 0000000000..b7fe064cef --- /dev/null +++ b/res/graphics/battle/misc/debug.pal @@ -0,0 +1,259 @@ +JASC-PAL +0100 +256 +106 213 49 +65 65 65 +255 255 255 +205 205 205 +148 148 123 +82 123 189 +16 65 131 +41 49 65 +82 98 139 +255 213 82 +255 180 65 +230 98 115 +16 238 238 +32 156 164 +246 246 246 +0 0 0 +0 255 0 +0 0 0 +57 74 65 +222 106 90 +123 148 131 +255 255 222 +32 57 0 +197 189 115 +255 230 0 +90 213 131 +222 213 180 +82 106 98 +255 255 255 +115 255 172 +255 172 123 +74 65 90 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/res/graphics/battle/misc/debug_frame.pal b/res/graphics/battle/misc/debug_frame.pal new file mode 100644 index 0000000000..ec2916a9e5 --- /dev/null +++ b/res/graphics/battle/misc/debug_frame.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 0 0 +222 0 0 +98 41 246 +139 8 41 +197 0 0 +0 0 0 +255 197 180 +255 131 131 +197 106 98 +156 74 65 +148 139 205 +0 0 0 +106 90 156 +106 74 82 +49 41 57 diff --git a/res/graphics/battle/misc/debug_frame_1.png b/res/graphics/battle/misc/debug_frame_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a0d6025f466312ba320c3df11dfa07383051866c GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^8-O^0g&9ctFMsL;qznRlLR|j?0RzK528JZfZ`~Z4 zM}guD4F8XA`QO}pG%IP2m*bS~vp|uos5x0)L57-^H9MPPf&8_eE{-7?_uk&J=4x=@ zX?f_Nw`Icb`M%f1*K~^=@=^Q~yyOqZ#@mLE6i-hHaOJqJYaBD*XhWpej$04R?rO5V z-M06^vFX#7{;PO?>ar}$hmBeDyDg5dt3C0s_9>U`o`o+Pqf?3xWVW1UzFwBbEOP)W z(BJU-=aJfq{hR5_`adfj_}3Tm+W#*3 Rp%(}8o2RRv%Q~loCIIN7gy;YO literal 0 HcmV?d00001 diff --git a/res/graphics/battle/misc/debug_frame_1_cell.json b/res/graphics/battle/misc/debug_frame_1_cell.json new file mode 100644 index 0000000000..5ca637e89c --- /dev/null +++ b/res/graphics/battle/misc/debug_frame_1_cell.json @@ -0,0 +1,382 @@ +{ + "labelEnabled": true, + "dontPadKbec": false, + "extended": false, + "vramTransferEnabled": false, + "ucatEnabled": false, + "cellCount": 1, + "mappingType": 0, + "cells": [{ + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": false, + "boundingSphereRadius": 25 + }, + "oamCount": 18, + "OAM": [{ + "Attr0": { + "YCoordinate": -16, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 80, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -16, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": -88, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 4, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": 40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 48, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 8, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": 40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 16, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 12, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": 40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 0, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 16, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": 40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -16, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 18, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -48, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 0, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 20, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -48, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 16, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 22, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -48, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 48, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 26, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -48, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -16, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 30, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": 16, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 80, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 32, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -48, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 80, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 36, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": 40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -48, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 12, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -48, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -48, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 22, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -48, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -80, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 40, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": 40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -80, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 44, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": 16, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": -88, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 48, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -48, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": -88, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 52, + "Priority": 0, + "Palette": 1 + } + }] + }], + "labels": ["CellAnime0"], + "labelCount": 1 +} \ No newline at end of file diff --git a/res/graphics/battle/misc/debug_frame_2.png b/res/graphics/battle/misc/debug_frame_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d8787b46a311c67e22af33602becdc0a99d9d04f GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0YGfQ!VDy5%t%@ZqznRlLR|j?0RzK528JZfZ`~Z4 zM}guD4F8XA`QO}pG%IP2m*bS~vp|uos5x0)L57-^H9MPPf&4~K7sn8f<8P-OgcLIl1!X1XEjZF_4GBzA!tLNP1`LV|1=FbfEb@LyVX*;Yr quy)g%XPb6k$PeGWKJh=pzKdL4Qd$A`w@dB^x!2Rx&t;ucLK6VB$75yy literal 0 HcmV?d00001 diff --git a/res/graphics/battle/misc/debug_frame_2_cell.json b/res/graphics/battle/misc/debug_frame_2_cell.json new file mode 100644 index 0000000000..193e88ebbf --- /dev/null +++ b/res/graphics/battle/misc/debug_frame_2_cell.json @@ -0,0 +1,202 @@ +{ + "labelEnabled": true, + "dontPadKbec": true, + "extended": false, + "vramTransferEnabled": false, + "ucatEnabled": false, + "cellCount": 1, + "mappingType": 0, + "cells": [{ + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": false, + "boundingSphereRadius": 13 + }, + "oamCount": 9, + "OAM": [{ + "Attr0": { + "YCoordinate": 16, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 0, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": 16, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -32, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 4, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 32, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 8, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": 8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 32, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 12, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": 8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": -40, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 14, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -32, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 16, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -32, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 8, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 18, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": -40, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 22, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -32, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -40, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 26, + "Priority": 0, + "Palette": 1 + } + }] + }], + "labels": ["CellAnime0"], + "labelCount": 1 +} \ No newline at end of file diff --git a/res/graphics/battle/misc/debug_frame_3.png b/res/graphics/battle/misc/debug_frame_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c0e1ddb0fb0d2ae2ee274d4d6b626dc25569560d GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^1wibezw@W4Q10gx+dvvDco~ai!n}$>++2SCRbzD>R+F?Z_d6ivCp-i*a!V( zOTArr_lV`Wq?ZK(3=5q<+_>J*8ptPOu3+mSz~_<{9 literal 0 HcmV?d00001 diff --git a/res/graphics/battle/misc/debug_frame_3_cell.json b/res/graphics/battle/misc/debug_frame_3_cell.json new file mode 100644 index 0000000000..c0235e30e0 --- /dev/null +++ b/res/graphics/battle/misc/debug_frame_3_cell.json @@ -0,0 +1,262 @@ +{ + "labelEnabled": true, + "dontPadKbec": false, + "extended": false, + "vramTransferEnabled": false, + "ucatEnabled": false, + "cellCount": 1, + "mappingType": 0, + "cells": [{ + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": false, + "boundingSphereRadius": 17 + }, + "oamCount": 12, + "OAM": [{ + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -16, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 16, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 4, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 48, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 8, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 48, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 9, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 16, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 13, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -16, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 17, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 48, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 21, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -48, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 25, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -56, + "RotationScaling": 0, + "Size": 0 + }, + "Attr2": { + "CharName": 29, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": 0, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": -56, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 30, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": -56, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 34, + "Priority": 0, + "Palette": 1 + } + }, { + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -48, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 38, + "Priority": 0, + "Palette": 1 + } + }] + }], + "labels": ["CellAnime0"], + "labelCount": 1 +} \ No newline at end of file diff --git a/res/graphics/battle/misc/meson.build b/res/graphics/battle/misc/meson.build new file mode 100644 index 0000000000..bd73548fcd --- /dev/null +++ b/res/graphics/battle/misc/meson.build @@ -0,0 +1,69 @@ +battle_sprites += [ + nclr_gen.process( + files('debug.pal', 'unk_179.png'), + extra_args: [ '-bitdepth', '4' ], + preserve_path_from: base_directory, + ), + + nclr_gen.process( + files('debug_frame.pal', 'pokesprite_1.png', 'pokesprite_2.pal'), + preserve_path_from: base_directory, + extra_args: [ '-nopad', '-invertsize', '-pcmp', '-bitdepth', '4' ], + ), + + ncgr_lz_gen.process( + files('unk_117.png'), + preserve_path_from: base_directory, + extra_args: [ '-bitdepth', '4', '-clobbersize', '-mappingtype', '64' ], + ), + + ncgr_cell_gen.process( + files('pokesprite_1.png'), + preserve_path_from: base_directory, + extra_args: [ '-bitdepth', '4', '-clobbersize', '-mappingtype', '64' ], + ), + + ncgr_cell_lz_gen.process( + files('unk_120.png', 'unk_121_124.png'), + preserve_path_from: base_directory, + extra_args: [ '-bitdepth', '4', '-clobbersize', '-mappingtype', '64' ], + ), + + ncgr_cell_gen.process( + files('pokesprite_2.png'), + preserve_path_from: base_directory, + extra_args: [ '-convertTo4Bpp', '-clobbersize', '-mappingtype', '128' ], + ), + + ncgr_cell_lz_gen.process( + files( + 'unk_179.png', + 'debug_frame_1.png', + 'debug_frame_2.png', + 'debug_frame_3.png', + ), + preserve_path_from: base_directory, + extra_args: [ '-bitdepth', '4', '-clobbersize' ], + ), + + ncer_gen.process( + files('pokesprite_1_cell.json', 'pokesprite_2_cell.json'), + preserve_path_from: base_directory, + ), + + ncer_lz_gen.process( + files( + 'unk_117_cell.json', + 'unk_120_cell.json', + 'unk_121_124_cell.json', + 'unk_179_cell.json', + 'debug_frame_1_cell.json', + 'debug_frame_2_cell.json', + 'debug_frame_3_cell.json', + ), + preserve_path_from: base_directory, + ), + + nanr_gen.process(files('single_frame_anim.json'), preserve_path_from: base_directory), + nanr_lz_gen.process(files('single_frame_anim.json'), preserve_path_from: base_directory), +] diff --git a/res/graphics/battle/misc/pokesprite_1.png b/res/graphics/battle/misc/pokesprite_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d58d26c2cdea94bc2ceea88cf8b27c9c140f2a7e GIT binary patch literal 845 zcmV-T1G4;yP)BjE6aZj(5V&;FVI)L`w8&)hR6(ae{z5KrAy6Z#p@-X{{RuN9~~`;uY9KxZA5hvK56~FGHuhTjYL#B#Jm6RN#U0>Z$_Kg`AgDdv^%C%Tj6@ z@rc`;2kS}*NiJf?>6JD^w?ZDiA9D^xNP^*$i^+lGl!YnrxZU859b{MivNO2>^*eW2k1O$LtT!G9Mzl$KjgX5!{V@QR$SrO>KYIxfm^42h zLNrYQx$pcq!+hXd+}}9HBmSjSBL>t6K?kCS)*22gkdiiJOF%I6I>^{Q=G9sfVoQTU z4nI{PqZ&?(J<04;YdP5dJ$BT_h~8I(IRuv@353fiFOP=@s3FOYRMa%1MA#1f?9Hs;XE;HeVY z@_uhXA5yax66y9bnEql4Nbxe5%<61HT@44gYc63b;lN;O$OZI;OYh}%)0NQ5An)v@ z2<4R5!&pqu3xuhdAG;pT@d*JDA?*N9z7CFNv4{l3&~PkluuUbL!f2*bIbynOD?p%v z_Vk?G>WmbyRR^cj3G;Lhj5f&csT|-~3CH-ny#etB%2VT~Q~_@hdh_#}e5$e9yOZw< z_(s3OXEHg@r{DWInr*8flkZo_B=3oLxqTUHDwwTRaU9;5CCc0LXz6Uf87!?Q_>bWq XMQ2sb^#L;N00000NkvXXu0mjf^&W)> literal 0 HcmV?d00001 diff --git a/res/graphics/battle/misc/pokesprite_1_cell.json b/res/graphics/battle/misc/pokesprite_1_cell.json new file mode 100644 index 0000000000..9d8c1b6235 --- /dev/null +++ b/res/graphics/battle/misc/pokesprite_1_cell.json @@ -0,0 +1,146 @@ +{ + "labelEnabled": true, + "dontPadKbec": false, + "extended": true, + "vramTransferEnabled": false, + "ucatEnabled": false, + "cellCount": 1, + "mappingType": 1, + "cells": [{ + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 14 + }, + "maxX": 40, + "maxY": 40, + "minX": -40, + "minY": -40, + "oamCount": 6, + "OAM": [{ + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -40, + "RotationScaling": 0, + "Size": 3 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 24, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 32, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 24, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 36, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -40, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 40, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 44, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 24, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 48, + "Priority": 0, + "Palette": 0 + } + }] + }], + "labels": ["CellAnime0"], + "labelCount": 1 +} \ No newline at end of file diff --git a/res/graphics/battle/misc/pokesprite_2.pal b/res/graphics/battle/misc/pokesprite_2.pal new file mode 100644 index 0000000000..30e24af8e2 --- /dev/null +++ b/res/graphics/battle/misc/pokesprite_2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 197 106 +82 82 90 +164 164 172 +238 32 16 +255 172 189 +0 115 255 +123 189 238 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +255 255 255 +255 189 197 +222 222 222 +148 213 255 +255 255 255 diff --git a/res/graphics/battle/misc/pokesprite_2.png b/res/graphics/battle/misc/pokesprite_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c43722d086fa8f47f71da9d918004e9b16d72675 GIT binary patch literal 1552 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPVEzz|0Wf6XH7OXjV{A)RHA@-YE$D zU$d8?_RS34tY3z|tHH4Apz99pOr`F*w$I11cK@ zqaiRjLqKfBqId=drqiA-jv*0;-`+U6?uh~qYe2lfwbTip|JUE^LavShq`GDC*RH_lO= zW59K7?H_0(KWxY$@SJg^=6f`GdB0UouYH_R(W)f*mvD~Mwyn|mHOwHy*{ocw)pL; ze8a;@+Y}ZjnE$dkwP?%q^>rMR1P*yt?2msAOqMb={}}WNnl^u3_t^rJ;XGaaT-G@y GGywo#gM2Ok literal 0 HcmV?d00001 diff --git a/res/graphics/battle/misc/pokesprite_2_cell.json b/res/graphics/battle/misc/pokesprite_2_cell.json new file mode 100644 index 0000000000..0387510b82 --- /dev/null +++ b/res/graphics/battle/misc/pokesprite_2_cell.json @@ -0,0 +1,146 @@ +{ + "labelEnabled": true, + "dontPadKbec": false, + "extended": true, + "vramTransferEnabled": false, + "ucatEnabled": false, + "cellCount": 1, + "mappingType": 2, + "cells": [{ + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 14 + }, + "maxX": 40, + "maxY": 40, + "minX": -40, + "minY": -40, + "oamCount": 6, + "OAM": [{ + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -40, + "RotationScaling": 0, + "Size": 3 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 24, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 16, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 24, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 18, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -40, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 20, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 22, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 24, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 24, + "Priority": 0, + "Palette": 0 + } + }] + }], + "labels": ["CellAnime0"], + "labelCount": 1 +} \ No newline at end of file diff --git a/res/graphics/battle/misc/single_frame_anim.json b/res/graphics/battle/misc/single_frame_anim.json new file mode 100644 index 0000000000..80d6408641 --- /dev/null +++ b/res/graphics/battle/misc/single_frame_anim.json @@ -0,0 +1,24 @@ +{ + "labelEnabled": true, + "uaatEnabled": false, + "sequenceCount": 1, + "frameCount": 1, + "sequences": [{ + "frameCount": 1, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 4, + "resultId": 0 + }] + }], + "animationResults": [{ + "resultType": 0, + "index": 0 + }], + "resultCount": 1, + "labels": ["CellAnime0"], + "labelCount": 1 +} \ No newline at end of file diff --git a/res/graphics/battle/misc/unk_117.png b/res/graphics/battle/misc/unk_117.png new file mode 100644 index 0000000000000000000000000000000000000000..e2bcd7ca6fa10a4c599f09f9a5e15c520130c735 GIT binary patch literal 622 zcmV-!0+IcRP)78$~0000mP)t-sYSl48 zK|%lj|IN+Kl$3i?d%X}rgDEjVQeun$)l&boLFQs}5bo|EoTT>l_5c6?T@U~n0005` zNklE`(>Ef3TMLn0r-XEfk7~(yyFgX;M^cmj z=ze^kTur?kMod!z*=7tlgO;8{sc*~iE_}T#t9qXildT4)mh#gpgTC{Kl)^UAfA+bI z2Odnx_mU+!DxlOWz?@1AR0@uB$)F?P0nB856N&CX0ZAaZ5&9NLF3q#jfHEX2JD>vn zG9)W|bf<(MN1wr8jlO(1MWPnUW6XK5Aox#wG$4e0o=$ms2RWhL=cE;V!sc4!I3?!~ zE+Mk3RAmKRMmL40M`ew1i-5=D0T7dXlpN9YA&D*=2zW>Uw_`$riRs&FGd~J$2!~BN z^6ZbS--Xp~pCLl5uC>*EPuQ*2K(_U-`iYn7aJ_Z8z+AK5j9ls0b3z{oU95QAG_VAR zl$8#)*0%wl1M`8R@@w9=D8>x6eZ44FYlga7Ke40xTLeGv7Iqju<6Y$wEsV-5`fCO% z`*6*CAtNea_dSPU2(gMIz$mKmg?s^(ZvEY;?l_5c6?T@U~n0002X zNkl1VR{fjOhz8mYSPXDVs#--PSgy1Iivin8Lx~1uSPWoMB3^&! zGAssgr&DS`)?hXuNR?6pv?w+pD2P%QXi;W>lIl{*Vqw)PIz?j?k-2#(E(2EYd$(`j zyLY?K5CFSy8L%5{z`i~I34qgh40s1bdkA>}rva-s8*kohyqmBW$|wy)r7bwh10svG z@a)}~g(9~S@kOGVHkNXkq(T|!4NNC^?l_5c6?T@U~n0001) zNkl*OG!$Gy5{URK+7S^E50>b6==Ns5 z=$2v=(;~JI&cXz_b4jlT@`SPzY$x^$TJ!~~6kvlrur#0;&@;6`Be|XU0&SBC1`vsG z-2u3Y%u0b%b*f<1P_QPH)V}99HCw5*jX{p<^o&6cbw-BHC^j!}+=j^UM3M;RCxJv?0;Ln02poq900*+8Q8K3mRB zXYqvARj-&LY{OMkm_9J%R%&nu%wTxP==4u6XCezD z9S@f!zvnI#6g1?2>U~ypRh^}Z)YDBCXM$cB9y#;kT3kVXP|PtEC$>qc|2}SMeC{(j z=jpqTDyMz7oxY&5zP*EOlh5Q>4c~3gUOhjVx5@CK)3Q$Xt~ZPdt7aaH(+Fd8IP(6+ zy7=J$+`A~v!XJnJ^MVYK*s`Fj0R&I1SZ?>CrlV^FHv&z$+j^xu!4?$x~#FQyl$ zMDNf)ss7NToWUV$lh5~;UX!o>aQ8l2E9mw48vByReH=?YH|@;M49`gYXW*QAYwE2n z!q(w?jw(h@629G`GJ9s!RKq5n?wY7&Ghe5yK7B}TZU3QCsj%rwqc_iPf1FZY_)aBs lf35sm2R}m&7N$nie+<0)4}H)Q3v>g;fTydU%Q~loCIH$C#4i8< literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/battle_arcade/meson.build b/res/graphics/battle/terrain/battle_arcade/meson.build new file mode 100644 index 0000000000..6477420ac1 --- /dev/null +++ b/res/graphics/battle/terrain/battle_arcade/meson.build @@ -0,0 +1,23 @@ +battle_sprites += [ + nclr_gen.process( + files('all.pal'), + preserve_path_from: base_directory, + extra_args: [ '-bitdepth', '4' ], + ), + ncgr_lz_gen.process( + files('player.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', player_cell.full_path(), + ], + ), + ncgr_lz_gen.process( + files('enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', enemy_cell.full_path(), + ], + ), +] diff --git a/res/graphics/battle/terrain/battle_arcade/player.png b/res/graphics/battle/terrain/battle_arcade/player.png new file mode 100644 index 0000000000000000000000000000000000000000..be0e9277eef9585c9e4d01d5c3adb12c3ba5af4b GIT binary patch literal 391 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K56j+#nB!Bzv>p;pNz$e7@|Ns9W2_*1;$=Ux` z|NnpX|Nq`+|EC89pL;@jQiHzLg)4! z50@ps=Pnc!G~|EkeO7c;ou!J@(@hp( z>AR0Ar+v4bzM!(cy@PF&&*WGQ-)+xcJwKVZ$?&1mvQGA{H;f9aW*&>v2xD_N^8Uu; zaw&%9_l%DsHnJ8x>o&JxwD^4adi_(*0|)f)H<)i@P^#L`ocYG|-;bZ})x8ogrWdG0 z@6bP~{?MbG!69pt&-a&Jldt}8_dZ)I==J#;`;y0f97{bn?aa;$&q)1e;GBAE>a8up z*5P}ODn?EczTKfRduG&B!zP{Xny6(nU#F}-eMoL?|DjT;u<1*qH_vW=oKjx+P9=1I kt^8XDKSK@{rbg3$47~dfeb5pMbOXhJr>mdKI;Vst0ATyS$^ZZW literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/battle_castle/meson.build b/res/graphics/battle/terrain/battle_castle/meson.build new file mode 100644 index 0000000000..6477420ac1 --- /dev/null +++ b/res/graphics/battle/terrain/battle_castle/meson.build @@ -0,0 +1,23 @@ +battle_sprites += [ + nclr_gen.process( + files('all.pal'), + preserve_path_from: base_directory, + extra_args: [ '-bitdepth', '4' ], + ), + ncgr_lz_gen.process( + files('player.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', player_cell.full_path(), + ], + ), + ncgr_lz_gen.process( + files('enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', enemy_cell.full_path(), + ], + ), +] diff --git a/res/graphics/battle/terrain/battle_castle/player.png b/res/graphics/battle/terrain/battle_castle/player.png new file mode 100644 index 0000000000000000000000000000000000000000..1cfe4f7d3ff536c2bd29a9111012784df8773b5c GIT binary patch literal 391 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K56j+#nB!Bzv>p;pNz$e7@|Ns9W2_#T_bWQWU zEzQsNR-au{yk$<-obIUV;-I7?FRvg+Lr2bcY4t$EggjjwLn02popPJE$w0*6=7Q|| zR*Yp#+&&I78ESMA3K)BN79?>T71Ip*rC|8*&tc2&+cE{#tXcC%c|}-|Zd%>k?_7N4 z>t!?Uta-I!&gs%S@uE|Wf7|SoNxW~cMZCvV@GhT1;E@QkoDEm*Kl#6LN}BG6V_i*16Bio_k(!f%-zZ4V;uuwMRnwoQIr;xnOLA9KG39a^LM z;bZKJr7fGT#noHa$u%h#T+(xVFCh?b&)P0f$0No1;$_93dqR3sm)WyEKN7`y$NwO+ z%i;xJ#T6?U(}P*p+Oy}Y?C0L|dpXyi-@BV8e$QvL*ALj&`Qp|c`wxD_!u_k9D@-!2 g|1-`$R{SgDe!`u9{aIhEcY=b_)78&qol`;+03c?fR{#J2 literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/battle_factory/all.pal b/res/graphics/battle/terrain/battle_factory/all.pal new file mode 100644 index 0000000000..c9d3ae1502 --- /dev/null +++ b/res/graphics/battle/terrain/battle_factory/all.pal @@ -0,0 +1,259 @@ +JASC-PAL +0100 +256 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +90 164 172 +98 189 197 +106 197 205 +98 180 189 +98 156 164 +90 131 148 +82 115 123 +74 90 106 +74 65 82 +65 49 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/res/graphics/battle/terrain/battle_factory/enemy.png b/res/graphics/battle/terrain/battle_factory/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf403383f2a182a71142e298d882eafaab45f38 GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!VDx8ekAz-DT4r?5ZC|z{{xxGAZp2)q`gP8 zj-E~0vNvhYlBnh>LB-WxQCVJ&L5_xwv)zQO85kHnJY5_^A`ZWudN8-yK%(_NTh2{q z@r2e@ub3ii!&Ot5J}~4~YH$b4V0g&r^iM8lA`2tq{HhP-|K;4;zBf212>iHzLg)4! z50@ps=Pnc!G~|EkeO7c;ou!J@(@hp( z>AR0Ar+v4bzM!(cy@PF&&*WGQ-)+xcJwKVZ$?&1mvQGA{H;f9aW*&>v2xD_N^8Uu; zaw&%9_l%DsHnJ8x>o&JxwD^4adi_(*0|)f)H<)i@P^#L`ocYG|-;bZ})x8ogrWdG0 z@6bP~{?MbG!69pt&-a&Jldt}8_dZ)I==J#;`;y0f97{bn?aa;$&q)1e;GBAE>a8up z*5P}ODn?EczTKfRduG&B!zP{Xny6(nU#F}-eMoL?|DjT;u<1*qH_vW=oKjx+P9=1I kt^8XDKSK@{rbg3$47~dfeb5pMbOXhJr>mdKI;Vst0N*CQ3;+NC literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/battle_factory/meson.build b/res/graphics/battle/terrain/battle_factory/meson.build new file mode 100644 index 0000000000..6477420ac1 --- /dev/null +++ b/res/graphics/battle/terrain/battle_factory/meson.build @@ -0,0 +1,23 @@ +battle_sprites += [ + nclr_gen.process( + files('all.pal'), + preserve_path_from: base_directory, + extra_args: [ '-bitdepth', '4' ], + ), + ncgr_lz_gen.process( + files('player.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', player_cell.full_path(), + ], + ), + ncgr_lz_gen.process( + files('enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', enemy_cell.full_path(), + ], + ), +] diff --git a/res/graphics/battle/terrain/battle_factory/player.png b/res/graphics/battle/terrain/battle_factory/player.png new file mode 100644 index 0000000000000000000000000000000000000000..8886064b7d66310b781d9959b82355cf3ea6bcd7 GIT binary patch literal 391 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K56j+#nB!Bzv>p;pNz$e7@|Ns9W2_z7;WKGiE zqghAKCT-c9G-pXv^OT_CYOkm)FUKH9L&w=}Le@aTggjjwLn02popPJE$w0*6=7Q|| zR*Yp#+&&I78ESMA3K)BN79?>T71Ip*rC|8*&tc2&+cE{#tXcC%c|}-|Zd%>k?_7N4 z>t!?Uta-I!&gs%S@uE|Wf7|SoNxW~cMZCvV@GhT1;E@QkoDEm*Kl#6LN}BG6V_i*16Bio_k(!f%-zZ4V;uuwMRnwoQIr;xnOLA9KG39a^LM z;bZKJr7fGT#noHa$u%h#T+(xVFCh?b&)P0f$0No1;$_93dqR3sm)WyEKN7`y$NwO+ z%i;xJ#T6?U(}P*p+Oy}Y?C0L|dpXyi-@BV8e$QvL*ALj&`Qp|c`wxD_!u_k9D@-!2 g|1-`$R{SgDe!`u9{aIhEcY=b_)78&qol`;+0Q{w(nE(I) literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/battle_hall/all.pal b/res/graphics/battle/terrain/battle_hall/all.pal new file mode 100644 index 0000000000..86264c385b --- /dev/null +++ b/res/graphics/battle/terrain/battle_hall/all.pal @@ -0,0 +1,259 @@ +JASC-PAL +0100 +256 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +230 255 246 +246 255 255 +255 255 255 +238 255 255 +213 255 246 +189 255 238 +164 246 230 +131 180 180 +98 115 123 +65 49 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/res/graphics/battle/terrain/battle_hall/enemy.png b/res/graphics/battle/terrain/battle_hall/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..bd1b08ca2dd36e49307f0df3c3ed50e68054c161 GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!VDx8ekAz-DT4r?5ZC|z{{xxG;MxCg-+-e3 z|G)eH|LXs5d;h;%^6gpkmMuxe)sBXackzuQ^7QKAL>5NI`Bfjv|I4|xeQ$735cqNbgwE|d z9xh9M&s``eXvqK6`>g1yI!hI)r<*L!1idgka^}UgxPttkm}4qVY?D&|ecaOc+-Gvm z({~?LPWx^!WgG1IPpYJcdCSU#G?tQja(ChOx_9c(|IF@>D+L@gho{{>`z&Z8S)LUDG zt;6>mRg9b@e7i$s_ROfMhD|!%HBrlEzD`+v`jFh({zIiwVbhmJZ=T)$IHkPsol5Bb kTKTsQeuf+@OpT`h7p;pNz$e7@|Ns9W2_*3B|F>^I z(f|M7{r`XU|F^yW-!1v}ta;0pq~dBvL&rP$YCD0333<9WhD02GJLNWSlYxlC%>~)_ ztr*LgxP2UEGSuiK6fpMkEJ)%wDyA9qOTqBrpTm~lw`B^fS+nMk@`|t^-L$&7-?{k8 z*UM(yS@UYeoYSRu;zg$#|F+pFlX%}?i+GQ#;9Wk2z#|c6IUBCrfAW9hlr{rKHN(mK zHFbqjY8O6y7n*X7)8hp<7uy6M6^T2nh2Jtc+8#vQVZHqEY@7VL#AiagKIVQ6ItS;lWS5gxTNR!UP2(=p0!<|jz^01#mkC6_k{GOF0*HSek6+Zj{iYs zm&FUdiYrzyrU$dGwP(*)+0VV__j0a3zjrrH{GQKfuOG0l^Tn+@_8P{e(OJ`m?@R14D;_!PC{xWt~$(69B}js^I_t literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/battle_tower/all.pal b/res/graphics/battle/terrain/battle_tower/all.pal new file mode 100644 index 0000000000..78df4a812c --- /dev/null +++ b/res/graphics/battle/terrain/battle_tower/all.pal @@ -0,0 +1,259 @@ +JASC-PAL +0100 +256 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +222 213 131 +238 230 139 +246 238 139 +222 213 131 +197 189 115 +172 156 106 +148 131 98 +115 106 90 +90 74 74 +65 49 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/res/graphics/battle/terrain/battle_tower/enemy.png b/res/graphics/battle/terrain/battle_tower/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..2cd4873bdbbc481458e317b514c4d222b51daa47 GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!VDx8ekAz-DT4r?5ZC|z{{xxG;NI2dch9=N zz3T=tj_xg9Gbd|Gb5e0uRFs#OqoL!}f8RDRFfe*}x;TbJ9DY0XU~aR4MC*OFoSV+# z39YMMF-6#htEMo0V92f1;0~C<@Q~5zpIpvF7DmSTRUgX#%el3EZ*Wi$_;LS)&h0xM zE=zvTT_`AM$p6&)tmvvbOBJc7n=H-*y)Zm-=Eb$Rg8ZPEV=7K;lT!bE+|u~mXL8Qd zcOO+w`))gZL1le=2iqo}$*~%~+n&98ell;9;X|ioo$Ot27!_8{JQk-B#^!M3{f)`x zQVh-S86QP#WG#5sZEnM8@%i%g`lp-+4(Q)+FyF?YRJETu^Ns1hA3xozdnH~>FHniz zp?^~Sp+`A`L)Ipr?=QV3U;W|keYRH6>+?1CC6D_!mU?d5nVlJ)k^0ZTIrY}mTU&&! z!}lCjjGQEVyF+F6%&4h`O*-8*QOjn&PFa2Wklfn-L#0w-)0akXp56X9rM&Q+O6dMt j`L_;!h8!$Rji&z?c=sRrpd}XQ28sbsS3j3^P6p;pNz$e7@|Ns9W2_$guYV*5i z-QV7I0~ts67O$C;HKjSJI4dg3%gfQwaq7Qs8-RuhdAc};L>zuQ;o)aWD>F!u5+Na8purWy20!SLaq!MM)1`OfMW-77w%I9@c;8@)c#o^#T|R}tBN1jf8?M}c@_*x$HUmaA!^!(K zb%j!D7e0I!nsSZP;{`Vt+XNpKi94)?-!eJc9z@(>z5MZPoBX=OXF|I^=6(%2v_|#A z$JiH3TQ*&btGBL`Yf>(_r04ivLLlCrwOyc&M~d~u%Zfkug!HB^vuAyNB#QNp|3PM# z#S6ZQD^@V32eYoVXU|vJ&%NjOa;`tWcQ;M^p3i8nAF!|U#jQK`AN-1i`&T(vm}FZ2 fXPkYk_*cgLgggKGv%XmG1O=t1tDnm{r-UW|3t**) literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/cave/all.pal b/res/graphics/battle/terrain/cave/all.pal new file mode 100644 index 0000000000..6a487c1fff --- /dev/null +++ b/res/graphics/battle/terrain/cave/all.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +74 65 82 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +98 90 148 +98 98 148 +82 82 148 +82 74 123 +82 74 98 +74 74 82 +57 57 74 +41 49 65 +16 32 49 diff --git a/res/graphics/battle/terrain/cave/enemy.png b/res/graphics/battle/terrain/cave/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..40a110d4af6d49152e98504abc2149f3f988aed6 GIT binary patch literal 892 zcmV-?1B3jDP)OHbQC5XbWkEN*qx?-}?6OoS@rQ!{=P^=Ol*>d`o;;+QZF;)cNvXHYAA z1Vq@*tnIuAiBYfqONn-~ncqBicI{THQKLp5ky8I>Z*)8PM@^PoJ_G#xkU^{U2#YSC z0FJig@r3zu%y2k^D&==Oc5a|6|55q+B*n#i*+6je5~=`4h&`SPK*8ZU0>`M!WCR!N zSgB{k=pn@4JXBrixI}dEg2amerK`69N%18h^_mhT=ujLvV>UcPj(`cVK-5zg;9yM% z{JRsOQdB5L4H%4zvF)R$0YoNtA$kii#9)YCTG*fTWqy7$I5!a!L>C!AUkU)PJgC*) zVt~s4=aeY&5i#UX6!PpBiWqV!J8*P4hO#GR&vAi*KmaB>SVQg*j~4+Q%tk?Q9EB0q zmmMNeUN$k>*8=bt*4w+Vr2Y1ixtAqeb-L9hxJINt15S#yZ*6#2?Y$Ck1>U3=XR&VH zk?+!})Ih9vVT<;KVe!CC6Vy3ODWK5)yd(ABYOWE8CO1C);m9S27YZV@e}KjQp_cZz zIl*B7>3v{8fWZ}X%zA)qB7o{}=@fVm`;0uTmBLq-?mW)6I5d)iK_mcXCUuH+^aJ88=%1lFg0uNdR0loMoUxpmY9Z$dP#%ulB50 zF=coOVtF6*vv~k~oSDG4M99TW7_pNr0TTE=8@gv50gUfcVw-q&qcCA8Q3$}z(7mfH zm}Pb0pqyuN3~g~e*8Uf6Bvo8xXMM>8u>x>!P3{l|#hf$jjf&!}+B4y`x(x*omjqMu zc;l;kfXMHa_P1*F$@aHG^W`=!bJjPlTTN}6X|m?=q~-{sn-kt@YbX_yPlERGV9{K? z^A1oYQfNMj7k-Z)HauhHq4t+Hh<&Sk>$}KmBy-QT-%})#H_DqAy+(~1ZPY)+a9&xJ SG7TdD0000&raJw5XN}}KQ8nMm=_PB_YZT_GF@9mKGQ5)Db!8#>Ie{6Vox%=sZ>&PxO6j1YUe0mG|se6J36#MrH;gI2wh)xhWSCDN!aI z)Zo*t8K4w3^p%|qhOBjTK`Ik*ld{e#X{-@Y3!NLIr0$9rc2;qWmn;x@{0T7kZ zW5omPUJ$-?ZNcZRG(!~c6#9rpzUB#h=r{vP0AB#`(Pu#65g;y_%rXCR7@*@;(UehlT{P5=^<*B|^3@)prz zzAchPk}h4AJ$O=VUKih#SfDZ3Y4vr2_K0MDnc4todpX>tK67ce!cWN31M>kkRs1d+ z=Zm9>Q~yj1s0CncnSKc{ujTX7(A87Nd8gDcjHuB9K(~hXM3Zv7TvleU6V8EqKQNcd z9aUTF(vxX(&znU62YMmeL75r^o^k*u(3kGsAd(w6Ffh^+W`va9cSU&^Cz$0~8{mk*JCB6V6z{|>u`)vZ~%j}ESPJJ1J!gLJG zDgx1Wvu8&BfHsQ57XxesL7{)s)LWCENAQz32?~9g_8XhO1fe8Yasw3lTTTD92|}=N wCVKK8UbqAOmmbJeUQ~oXyVHM7@O(A?1L-b@D?u4T2><{907*qoM6N<$f=w!ge*gdg literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/distortion_world/all.pal b/res/graphics/battle/terrain/distortion_world/all.pal new file mode 100644 index 0000000000..b3fe91eb30 --- /dev/null +++ b/res/graphics/battle/terrain/distortion_world/all.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +197 139 148 +213 156 156 +222 164 164 +205 148 148 +180 131 139 +156 115 123 +131 98 106 +106 82 90 +90 65 82 +65 49 65 diff --git a/res/graphics/battle/terrain/distortion_world/enemy.png b/res/graphics/battle/terrain/distortion_world/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..8cf6bb936c49371f9262fe504b86f717b20b6e58 GIT binary patch literal 671 zcmV;Q0$}}#P)l$5lCi=1>*09-1*~B$AQiH-M1)@<%3@3_g?>-?Gzyp6;KY*1vnHGjJ*$-KGqTeM>nZN=- z)=Us0i7|-^!*6seFza@N!DR!wHI`-yqL)I6{c+@5u_+9uQvv9}$~wZPrl|1hoc8Jp zVlZ)v--@px6=;=nFPy;6=^DYoalAHgUwar^r?~DQn=7}a6e{WDe=x_b7 zG;bt~Pi-X*EO2r^QLXEA6WqT)1b@1ggx-W#A@i@ig~~aklcp#%HsK@^L|@Sm^&KA~ zUgJ}6@rRe^EhkEudxHu)_~EY+_Yf2s|N2(>z8iUsu#N|zJ)d{LDTsox1vlt2VY!Y; zkstE6@)(94Jtp)x%SUr^oAj8r@kNsYN{pv7#mA4RPxOS33I{G_<*hICGYtWl?)t1s zOF`S%?AnXtRCEZ6>k$>TvL+s+@Iu!H{<=)4199pn%IXj$s4mk#4)W6c7|s1VP3BTl z7+b^H&T=@%?k_ec-xsGc;imM#{^%QIiA#}Z%$V`N<1e&T>$NW%v&#Sg002ovPDHLk FV1gN4FJb@y literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/distortion_world/meson.build b/res/graphics/battle/terrain/distortion_world/meson.build new file mode 100644 index 0000000000..1891a6f665 --- /dev/null +++ b/res/graphics/battle/terrain/distortion_world/meson.build @@ -0,0 +1,23 @@ +battle_sprites += [ + nclr_gen.process( + files('all.pal'), + preserve_path_from: base_directory, + extra_args: [ '-nopad', '-invertsize', '-pcmp', '-bitdepth', '4' ], + ), + ncgr_lz_gen.process( + files('player.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', player_cell.full_path(), + ], + ), + ncgr_lz_gen.process( + files('enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', enemy_cell.full_path(), + ], + ), +] diff --git a/res/graphics/battle/terrain/distortion_world/player.png b/res/graphics/battle/terrain/distortion_world/player.png new file mode 100644 index 0000000000000000000000000000000000000000..b8b57687e093936db1befb1e928cb232c817742d GIT binary patch literal 674 zcmV;T0$u%yP)l$5lCi=1M42H9T)&`jcWM}~q@BlHP2_m*#pw}+YUOhnDV@6ldRoZn6TGVv1P zc80b3C_>~8RS=OwB9URuaHIV9@;vdb1w%wF)PebyL6-7AUv5AsDDUu=Hzvu%#;~-c2v(Ubr^>v9{Z= zkfINdlrarU_9NMFp$RGdkw_e@%w0$4b7fGfCY=y2GGR)8bbwS!8WwSyKCq|s$gCJ? zm`vDhe@y?mjRPk0i6}y<0al!$=)BUTVh~HK8;~lbc|=bDCYtc|yi?!TYmO-Dw^r?eZmyBqq;vuR;9Ufh zex=fp15Eo@TSG=pGptttF{Xn%2%`Sj)}vqA@uOXHD9|4wC zwk07c4p>fC$F~VoeN(SK_6Mx%j8YO>#RAKcM)_?5RiCBq_r6{=hU?KZiUpQMQspAS z#{N_EVe##WZksu2WO0V8ua&;4=I%X)5Q4fBn{Oe6aW&yo|9nd8Hramy=qg6+0k(Gq zzz{9sr2t1OT>Lk5&hmEwCYk@M)HP1+nZcRBfanc>n+a07*qo IM6N<$f}XuHaR2}S literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/enemy_anim.json b/res/graphics/battle/terrain/enemy_anim.json new file mode 100644 index 0000000000..1c1c988a64 --- /dev/null +++ b/res/graphics/battle/terrain/enemy_anim.json @@ -0,0 +1,24 @@ +{ + "labelEnabled": true, + "uaatEnabled": false, + "sequenceCount": 1, + "frameCount": 1, + "sequences": [{ + "frameCount": 1, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 4, + "resultId": 0 + }] + }], + "animationResults": [{ + "resultType": 0, + "index": 0 + }], + "resultCount": 1, + "labels": ["CellAnime2"], + "labelCount": 1 +} \ No newline at end of file diff --git a/res/graphics/battle/terrain/enemy_cell.json b/res/graphics/battle/terrain/enemy_cell.json new file mode 100644 index 0000000000..20fd666bdc --- /dev/null +++ b/res/graphics/battle/terrain/enemy_cell.json @@ -0,0 +1,66 @@ +{ + "labelEnabled": true, + "dontPadKbec": false, + "extended": true, + "vramTransferEnabled": false, + "ucatEnabled": false, + "cellCount": 1, + "mappingType": 1, + "cells": [{ + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 18 + }, + "maxX": 64, + "maxY": 32, + "minX": -64, + "minY": -32, + "oamCount": 2, + "OAM": [{ + "Attr0": { + "YCoordinate": -32, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -64, + "RotationScaling": 0, + "Size": 3 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -32, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 0, + "RotationScaling": 0, + "Size": 3 + }, + "Attr2": { + "CharName": 32, + "Priority": 0, + "Palette": 0 + } + }] + }], + "labels": ["CellAnime2"], + "labelCount": 1 +} \ No newline at end of file diff --git a/res/graphics/battle/terrain/giratina/all.pal b/res/graphics/battle/terrain/giratina/all.pal new file mode 100644 index 0000000000..b3fe91eb30 --- /dev/null +++ b/res/graphics/battle/terrain/giratina/all.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +197 139 148 +213 156 156 +222 164 164 +205 148 148 +180 131 139 +156 115 123 +131 98 106 +106 82 90 +90 65 82 +65 49 65 diff --git a/res/graphics/battle/terrain/giratina/enemy.png b/res/graphics/battle/terrain/giratina/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..5ea10dce2c3abbaedb4b0ba93789b0973956019a GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!VDx8ekAz-DT4r?5ZC|z{{xxG;Ar=ht8?bu zTe9Trlqp-9yXO>FHz#Ff1w}YI8z0jievba4!kkbHZv5v29-g5SaX51Fol a*nJEF4h)QeQ(k@p@jPAqT-G@yGywpWz$s(^ literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/giratina/meson.build b/res/graphics/battle/terrain/giratina/meson.build new file mode 100644 index 0000000000..1891a6f665 --- /dev/null +++ b/res/graphics/battle/terrain/giratina/meson.build @@ -0,0 +1,23 @@ +battle_sprites += [ + nclr_gen.process( + files('all.pal'), + preserve_path_from: base_directory, + extra_args: [ '-nopad', '-invertsize', '-pcmp', '-bitdepth', '4' ], + ), + ncgr_lz_gen.process( + files('player.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', player_cell.full_path(), + ], + ), + ncgr_lz_gen.process( + files('enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', enemy_cell.full_path(), + ], + ), +] diff --git a/res/graphics/battle/terrain/giratina/player.png b/res/graphics/battle/terrain/giratina/player.png new file mode 100644 index 0000000000000000000000000000000000000000..b8b57687e093936db1befb1e928cb232c817742d GIT binary patch literal 674 zcmV;T0$u%yP)l$5lCi=1M42H9T)&`jcWM}~q@BlHP2_m*#pw}+YUOhnDV@6ldRoZn6TGVv1P zc80b3C_>~8RS=OwB9URuaHIV9@;vdb1w%wF)PebyL6-7AUv5AsDDUu=Hzvu%#;~-c2v(Ubr^>v9{Z= zkfINdlrarU_9NMFp$RGdkw_e@%w0$4b7fGfCY=y2GGR)8bbwS!8WwSyKCq|s$gCJ? zm`vDhe@y?mjRPk0i6}y<0al!$=)BUTVh~HK8;~lbc|=bDCYtc|yi?!TYmO-Dw^r?eZmyBqq;vuR;9Ufh zex=fp15Eo@TSG=pGptttF{Xn%2%`Sj)}vqA@uOXHD9|4wC zwk07c4p>fC$F~VoeN(SK_6Mx%j8YO>#RAKcM)_?5RiCBq_r6{=hU?KZiUpQMQspAS z#{N_EVe##WZksu2WO0V8ua&;4=I%X)5Q4fBn{Oe6aW&yo|9nd8Hramy=qg6+0k(Gq zzz{9sr2t1OT>Lk5&hmEwCYk@M)HP1+nZcRBfanc>n+a07*qo IM6N<$f}XuHaR2}S literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/grass/day.pal b/res/graphics/battle/terrain/grass/day.pal new file mode 100644 index 0000000000..53641c6ae7 --- /dev/null +++ b/res/graphics/battle/terrain/grass/day.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +189 197 255 +90 74 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +164 213 82 +139 230 172 +123 222 156 +98 213 131 +74 189 106 +32 164 65 +0 0 0 +230 197 98 +197 164 74 +148 123 49 diff --git a/res/graphics/battle/terrain/grass/enemy.png b/res/graphics/battle/terrain/grass/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..8f74f6aa4b209144e2de622f5927dd87774acc95 GIT binary patch literal 802 zcmV+-1Ks?IP)apJC^}||`}9sA2^~5arm&Iyb_ zbC94PNy(xk$MGJ0c$N+Fec$^dNwCYe^GST4&UB*QD|j0;$@-85Ch%FnM6%@FdbDYjJX{S1Oy(zgSKB z;QT&ZO2qbeERkkvVKsu6AF%@pq`|gR<7}2MVoNUkW;wb=7+3wTQWsVp53N*rqYXB4 zw^w;@7?)!M3hf08zwI51n%i9Ud`!%%Z&rPoM20X$CLw`^-!!i( zF@VN~O)cJZjrI$MfE;39d2mH6+Ev^hUFb>*a7mTfJ#I2z<4JsK5#- zsxv616z>>Puzyg&UZ|*C(~uG&t~n>*_DS4{@g&)0N!q&Bqq!m6mvs=> zy0}Q3Sw{yE{9P9=BZ{zpk1sv?v95eie9hGsbsxVfZb9n$>*y5*iT*z0LJ5<>>q%+? zyQdGg-O&$xr?8JCe&*i>4aUdS9N6FU9}#`m#qT8bYCUcufeC`ZeeisG^IB9PiAgu! z;I?<#b!z%nK1kSjDsk8CNI&_^?rx@6#xJL07*qoM6N<$f)Ao@H~;_u literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/grass/evening.pal b/res/graphics/battle/terrain/grass/evening.pal new file mode 100644 index 0000000000..334193b6ad --- /dev/null +++ b/res/graphics/battle/terrain/grass/evening.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +205 156 180 +123 57 24 +49 0 0 +49 0 0 +49 0 0 +49 0 0 +180 164 57 +164 180 123 +148 172 106 +131 164 90 +106 148 74 +74 131 41 +49 0 0 +238 156 65 +213 131 49 +172 98 32 diff --git a/res/graphics/battle/terrain/grass/meson.build b/res/graphics/battle/terrain/grass/meson.build new file mode 100644 index 0000000000..0ac0a3c06f --- /dev/null +++ b/res/graphics/battle/terrain/grass/meson.build @@ -0,0 +1,23 @@ +battle_sprites += [ + nclr_gen.process( + files('day.pal', 'evening.pal', 'night.pal'), + preserve_path_from: base_directory, + extra_args: [ '-nopad', '-invertsize', '-pcmp', '-bitdepth', '4' ], + ), + ncgr_lz_gen.process( + files('player.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', player_cell.full_path(), + ], + ), + ncgr_lz_gen.process( + files('enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', enemy_cell.full_path(), + ], + ), +] diff --git a/res/graphics/battle/terrain/grass/night.pal b/res/graphics/battle/terrain/grass/night.pal new file mode 100644 index 0000000000..f55e48f4c3 --- /dev/null +++ b/res/graphics/battle/terrain/grass/night.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +106 131 255 +49 49 74 +0 0 41 +0 0 41 +0 0 41 +0 0 41 +98 139 115 +82 156 189 +65 148 172 +57 139 156 +41 123 131 +16 106 98 +0 0 41 +131 131 131 +115 106 106 +82 82 82 diff --git a/res/graphics/battle/terrain/grass/player.png b/res/graphics/battle/terrain/grass/player.png new file mode 100644 index 0000000000000000000000000000000000000000..d0acdc213055d9e2bac19e435fa8f26a8671ee18 GIT binary patch literal 897 zcmV-{1AhF8P)~QP5&(dA5Z7%VHl_FFvi=DCvZC~)&v&Q z#}b&uUVM=}jUplo5xKgR8PhmzzqzbYWlnlG48t(W0s^^-=sjC+KeV@qXc5nHD{?2( zMw^SfZoCr_xoHlE^#~`_3GEu}8qxZ)x%OufkqrU4)X;}fLLvxH zt!rH>)LSsZA4H~MkjofkT#DR8cxpYhk{p0$BY*@TC1e1s$^T5yTzYCfYs9n2@|{Ag z<3xUZX}$G~*3ldeAR#5ZL`DXXpdH$gT5tWYKSXx!IRl?$7(~1|v}*^{pg4#MIMCK% zCNd0*hcgK*lE^B&Re&IV?)nWV46v^8B!Y8yVnk}up&dv#q4;JdXpR;=r!xu2wL@D+ z;?YGD^Zs9EwC>Qyb6hyeiVj#kv2o*z2&;hl-*Sow<1`F|+(gu}&GU8nZP(_@cbb3Y zjR?#D?w9L`1fZbB^9dr1cf%m7h^WQqTKCJ(d*wZY83d8wU`~WV2^jK@@h&85L_Eo` zxkV3qZ;}<+!c%@dV*t#|N`h6ZDpPfuGFx?J;zo*%0_&BCPCm(a>=m)NTZO~;%O%&s zLaoM1TBT{VT4>IaS;!3T&0|Jkg~roDk0k&`|CPZtTTP`DtLvwfQaHbAv07N%s`~3~ z0Du<6ktd>5r1m<4!-&Gdx$f^^EHsc%Anhrk>=|~H6UP++^|WgpO3=4G9|o%_VGi@1 z4;Sn{k}J{0005_ zNkl-Uk_OZ?fCsSvumThd$cP0PUCrd((aC!wdk4qy zM<8#R3Ez|8e&79e4~|Z!RjXF5{@DZnag4Y zbiH<9!|Z98h7>arcj6uNg&v$0-rTYU_~Le)f*HNs>Z0qVt9hj)!V4l;cx8_8|B2vu z*Jo;6mAjvlhM;c2+NRhP!nj}wB93I+*@P^D&;%Hx+*2?0F9kXCP%ae?N68dfiZDzO zOflX#0r`D4mb`Nm%Sj>N@9{t)Sp5-m0M6v^9$@Cm!I>-w!_dzKfRJ4u_K|!UI3{doH3%Uoy`Cb{o+qy(C16A)0=*@3U$bj|Oc3XZiYP;{JvC`z zhok1lgsVIbWkxB2zBnFg=ZqgG$<Sn{k}J{0005h zNkl#oXcMw=WhxEDA);Qfj$F87L7SNX7{16}w z5s7rBGoD8cIp=|&u-quTS<|h&HXg< zdI_+U2C*Sv>7bz-|P3`ZHTz$?k|l!@!dMPuRU|Hh|siuZgWt3YUPuZ~8DI?Fg8vF7zEg;}_`=1hjd+2?0D7B)uS% z<7Z(xjSc|~5SkH$UK!ye2x5G&N3+0yfPQ`if$z!)ht3HKHvTRGd$>%8V9por8e?28 zCM?KIhk)(plGSlvoZ_D$w2*U31ajG#0yy`C6fI^70+5H2?g_X*iF`3o1A$_80|!H- zQ-vU)J(-|o*95}9*0=_Ori~T>|E5}mIEJgnT@yI+%`Y40St7W?cl=GA(ga7g(fO=i zy&Qojr|FG=5K#o0;KiKai#n$~!7aD1rs<1dMIQNXumo?$0#IXjDiF9{a~fL&V}$6v z#gPKQ-~vIUPGgIJH_=c7T7U;QIIaHypAi8hSkW4^0$|*!hC(2Um>U4_bAus(1PX#5 X(sl!8Hfn_400000NkvXXu0mjfDSiYV literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/indoors/all.pal b/res/graphics/battle/terrain/indoors/all.pal new file mode 100644 index 0000000000..65e133bd11 --- /dev/null +++ b/res/graphics/battle/terrain/indoors/all.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +189 197 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +213 205 213 +230 222 230 +238 230 238 +222 213 222 +205 197 205 +189 172 189 +172 156 164 +139 123 131 +98 82 98 +65 49 65 diff --git a/res/graphics/battle/terrain/indoors/enemy.png b/res/graphics/battle/terrain/indoors/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..385cda15f72675ca420f04786435e48f331d3d2a GIT binary patch literal 441 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!VDx8ekAz-DT4r?5ZAp&{{xxG;Og0{&+a{Y z_w3!htM|?xJ-c_!-ZgWUbXPYg1tmEeItI=S=3ro8bn$d?42d}WcB-Raa{z>7XdGy=2(erSvD(LM8+{Y1}}O`A4-+Hcr= z=Csu@iQpRk36jY^rN%X0GZi$CtNMxe9scgvv|@4y^G7w?NqaYJ>07-$jJc(JGY7+_ z)4>*O9rxd*70WZGrWa&&)Rqgzu~c4t?p$u@m~PSdKI(y^rl()m{*8x}SE^Xnr~ABIR(=^3*~-c-DW@HS&bF_8&>1s{c^lJ;S?7PGPQPzDKhU(SP46mEqx@3Wv)Y`=wT{b*{g5SW)wAsk&J1 z=eEW5&&)F3pJdCr`i1Mp|J=*9^`_F2Gou$@@IU-ylSuH(H_t3gcUzQ9S~6#U|5=B) e;LKDY=#mdMI$%CKc5xH*w literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/indoors/meson.build b/res/graphics/battle/terrain/indoors/meson.build new file mode 100644 index 0000000000..1891a6f665 --- /dev/null +++ b/res/graphics/battle/terrain/indoors/meson.build @@ -0,0 +1,23 @@ +battle_sprites += [ + nclr_gen.process( + files('all.pal'), + preserve_path_from: base_directory, + extra_args: [ '-nopad', '-invertsize', '-pcmp', '-bitdepth', '4' ], + ), + ncgr_lz_gen.process( + files('player.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', player_cell.full_path(), + ], + ), + ncgr_lz_gen.process( + files('enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', enemy_cell.full_path(), + ], + ), +] diff --git a/res/graphics/battle/terrain/indoors/player.png b/res/graphics/battle/terrain/indoors/player.png new file mode 100644 index 0000000000000000000000000000000000000000..576bcf043b791fdd1f11cd0074319cb1d026dff5 GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K56j+#nB!Bzv>p;pNz$e6Y@6rDt2_$g!?A2%Y zp1pha?%vgVXOEuUyJqj2IZL{$o0Ec)91R@<=LT~C7612iaSVw#{B}w=Z?l4c!`+6h z=lv39E^tvd@LRAo_P`C+TT>W+aSMt{t>KvCDSV&lePOv`mzkN_KfzCChr*5b&syC0 ztM8WMva`$h9OnE| z7jQj)fN_3+sRZ@A8+vS|Jn!BS&!LIj5+$3(dvws+rl PP`G)z`njxgN@xNARk5N! literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/league_aaron/all.pal b/res/graphics/battle/terrain/league_aaron/all.pal new file mode 100644 index 0000000000..71f0870d48 --- /dev/null +++ b/res/graphics/battle/terrain/league_aaron/all.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +197 230 213 +213 238 230 +230 246 238 +205 230 222 +189 222 205 +156 205 189 +131 189 197 +90 164 172 +57 115 98 +32 74 57 diff --git a/res/graphics/battle/terrain/league_aaron/enemy.png b/res/graphics/battle/terrain/league_aaron/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..3944b0d7f94d39149623bdc5e93e23f02ab607a2 GIT binary patch literal 614 zcmV-s0-61ZP)gT2LCq^vn}VjxO6nH!A&0005; zNklR6#=t`--d@_Jwaq^zJR3xLM=l9Gh} zQARrGok8CHa`TcVj13wzXwd(bY*at5N2M8WP)Z})ljdR#9ZK?ch-b`;dDy7=r-9TN zUg>V}I+T)8LC8JL9KT%j&}BqPHu7kCviEYA3_{ot9!|fQ`e!LX#Aa*#@$oP&wWcsU zu89nx0C1<*ZEDusg#-Y(3b2Oh)j`+BeY}_D4ie+l6bFz{1P{K=Ur{;F)W5CC56Wz@ zDSrk6>}`M>YUX3zYjsD>d$SQXjE#2gB0sv^T2F5Ma>ddeOb%oB{Sv$%evM(7v2+h# zW;`m}*VY5o%Gmt%02>740Jds;dKV_P8lcD+&)4wdhU`8E?gD3!6r7C&9z>Tw5I>Bn z2Qd!)N_S>>6vc{-QjAa~^bz`#B3m)WgZvRoKN7eQ(je#*#nsC+vS$hH zQV8z&v6C1=oO%?r=vEgv{i<@Wb3)Lwk#)K0bt=ftSzVkKLOGg~s7Fas1#h(Lg{T}l zNlgWf(5qPuUt{Pbb*Z6Fx3ic=_3;iGH0ZDN3;5=cxiPNNMF0Q*07*qoM6N<$g20m) A%K!iX literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/league_aaron/meson.build b/res/graphics/battle/terrain/league_aaron/meson.build new file mode 100644 index 0000000000..1891a6f665 --- /dev/null +++ b/res/graphics/battle/terrain/league_aaron/meson.build @@ -0,0 +1,23 @@ +battle_sprites += [ + nclr_gen.process( + files('all.pal'), + preserve_path_from: base_directory, + extra_args: [ '-nopad', '-invertsize', '-pcmp', '-bitdepth', '4' ], + ), + ncgr_lz_gen.process( + files('player.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', player_cell.full_path(), + ], + ), + ncgr_lz_gen.process( + files('enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', enemy_cell.full_path(), + ], + ), +] diff --git a/res/graphics/battle/terrain/league_aaron/player.png b/res/graphics/battle/terrain/league_aaron/player.png new file mode 100644 index 0000000000000000000000000000000000000000..c04aedf170915f9b81201a5738bf1ef8518d917a GIT binary patch literal 498 zcmVgT2LCq^vn}VjxO6nH!A&0004f zNkl=6;7bv)Roxt`iRIviFc->SP;mRsxyahY^wyrWmg?$UT z<>wVYZNtJQ4CR;N9fd_rFy%+_j78RMTu;X470#FB_V?wV>hNhp3_KNqaAD}NZ$jD_ zh-tr9J_Wh#3`+1MxEVu&0r{Sm&y`zX3k{1b24x(C+ahm*rU`FdBENNaNsWgP*zHHh zU_6D|-C&VqVEERZ%b}%g$R6#=t`--d@_Jwaq^zJR3xLM=l9Gh} zQARrGok8CHa`TcVj13wzXwd(bY*at5N2M8WP)Z})ljdR#9ZK?ch-b`;dDy7=r-9TN zUg>V}I+T)8LC8JL9KT%j&}BqPHu7kCviEYA3_{ot9!|fQ`e!LX#Aa*#@$oP&wWcsU zu89nx0C1<*ZEDusg#-Y(3b2Oh)j`+BeY}_D4ie+l6bFz{1P{K=Ur{;F)W5CC56Wz@ zDSrk6>}`M>YUX3zYjsD>d$SQXjE#2gB0sv^T2F5Ma>ddeOb%oB{Sv$%evM(7v2+h# zW;`m}*VY5o%Gmt%02>740Jds;dKV_P8lcD+&)4wdhU`8E?gD3!6r7C&9z>Tw5I>Bn z2Qd!)N_S>>6vc{-QjAa~^bz`#B3m)WgZvRoKN7eQ(je#*#nsC+vS$hH zQV8z&v6C1=oO%?r=vEgv{i<@Wb3)Lwk#)K0bt=ftSzVkKLOGg~s7Fas1#h(Lg{T}l zNlgWf(5qPuUt{Pbb*Z6Fx3ic=_3;iGH0ZDN3;5=cxiPNNMF0Q*07*qoM6N<$g6pXm A-~a#s literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/league_bertha/meson.build b/res/graphics/battle/terrain/league_bertha/meson.build new file mode 100644 index 0000000000..1891a6f665 --- /dev/null +++ b/res/graphics/battle/terrain/league_bertha/meson.build @@ -0,0 +1,23 @@ +battle_sprites += [ + nclr_gen.process( + files('all.pal'), + preserve_path_from: base_directory, + extra_args: [ '-nopad', '-invertsize', '-pcmp', '-bitdepth', '4' ], + ), + ncgr_lz_gen.process( + files('player.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', player_cell.full_path(), + ], + ), + ncgr_lz_gen.process( + files('enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', enemy_cell.full_path(), + ], + ), +] diff --git a/res/graphics/battle/terrain/league_bertha/player.png b/res/graphics/battle/terrain/league_bertha/player.png new file mode 100644 index 0000000000000000000000000000000000000000..6791ebd9f1c2cfbdb6788bafa514e560453787ae GIT binary patch literal 498 zcmV=6;7bv)Roxt`iRIviFc->SP;mRsxyahY^wyrWmg?$UT z<>wVYZNtJQ4CR;N9fd_rFy%+_j78RMTu;X470#FB_V?wV>hNhp3_KNqaAD}NZ$jD_ zh-tr9J_Wh#3`+1MxEVu&0r{Sm&y`zX3k{1b24x(C+ahm*rU`FdBENNaNsWgP*zHHh zU_6D|-C&VqVEERZ%b}%g$xwsh|JI@a>^9oO*$7$ zcpBFkJhm=i$p?s6ytlEm8~wA~ks19u>%H&WZ{MyZ#u^$L8vbwMLh5N-)VlBrm{Dc9 zQ7mq~3VuZ8CM^#TzW) zYPk-O!3y3c55C~S=coM&js_UzAnE@Mb2PZqH~Fi-k?(r{gfZg|&XU@f8XhbE0Ie$50{6}eEC2ui07*qoM6N<$f`>;p;{X5v literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/league_cynthia/meson.build b/res/graphics/battle/terrain/league_cynthia/meson.build new file mode 100644 index 0000000000..1891a6f665 --- /dev/null +++ b/res/graphics/battle/terrain/league_cynthia/meson.build @@ -0,0 +1,23 @@ +battle_sprites += [ + nclr_gen.process( + files('all.pal'), + preserve_path_from: base_directory, + extra_args: [ '-nopad', '-invertsize', '-pcmp', '-bitdepth', '4' ], + ), + ncgr_lz_gen.process( + files('player.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', player_cell.full_path(), + ], + ), + ncgr_lz_gen.process( + files('enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', enemy_cell.full_path(), + ], + ), +] diff --git a/res/graphics/battle/terrain/league_cynthia/player.png b/res/graphics/battle/terrain/league_cynthia/player.png new file mode 100644 index 0000000000000000000000000000000000000000..a88b8465217f73743fe4edc1e7181043ea14874a GIT binary patch literal 514 zcmV+d0{#7oP)|6d)|Xp=u!~c*d+oT z)J1sjBKfU7OMF~}6wlv#OvhCy>6-FPT0(w2akG8>S5uUsQ0Dh_qFt zOJ@!vK4+l#2iW_ZRpfqPKW*Uho3%D!8)*RfvS7LRLBTXt8C=+ZfPV*PAtz)d?}0&Z zCl(*F;uc@*%9UcvEd$w;=TH;ArP}Tqd}y$hoR<;%3!SMxp^aqN$p8QV07*qoM6N<$ Eg5mP%+W-In literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/league_flint/all.pal b/res/graphics/battle/terrain/league_flint/all.pal new file mode 100644 index 0000000000..a1485fed8d --- /dev/null +++ b/res/graphics/battle/terrain/league_flint/all.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +222 197 205 +238 213 222 +246 230 230 +230 205 213 +222 180 197 +205 156 172 +197 139 131 +172 106 90 +115 57 74 +74 32 41 diff --git a/res/graphics/battle/terrain/league_flint/enemy.png b/res/graphics/battle/terrain/league_flint/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..ad859f7aa45d62c5685c4a74a268218ff85b554e GIT binary patch literal 614 zcmV-s0-61ZP)_&FR6#=t`--d@_Jwaq^zJR3xLM=l9Gh} zQARrGok8CHa`TcVj13wzXwd(bY*at5N2M8WP)Z})ljdR#9ZK?ch-b`;dDy7=r-9TN zUg>V}I+T)8LC8JL9KT%j&}BqPHu7kCviEYA3_{ot9!|fQ`e!LX#Aa*#@$oP&wWcsU zu89nx0C1<*ZEDusg#-Y(3b2Oh)j`+BeY}_D4ie+l6bFz{1P{K=Ur{;F)W5CC56Wz@ zDSrk6>}`M>YUX3zYjsD>d$SQXjE#2gB0sv^T2F5Ma>ddeOb%oB{Sv$%evM(7v2+h# zW;`m}*VY5o%Gmt%02>740Jds;dKV_P8lcD+&)4wdhU`8E?gD3!6r7C&9z>Tw5I>Bn z2Qd!)N_S>>6vc{-QjAa~^bz`#B3m)WgZvRoKN7eQ(je#*#nsC+vS$hH zQV8z&v6C1=oO%?r=vEgv{i<@Wb3)Lwk#)K0bt=ftSzVkKLOGg~s7Fas1#h(Lg{T}l zNlgWf(5qPuUt{Pbb*Z6Fx3ic=_3;iGH0ZDN3;5=cxiPNNMF0Q*07*qoM6N<$f;kHr A3jhEB literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/league_flint/meson.build b/res/graphics/battle/terrain/league_flint/meson.build new file mode 100644 index 0000000000..1891a6f665 --- /dev/null +++ b/res/graphics/battle/terrain/league_flint/meson.build @@ -0,0 +1,23 @@ +battle_sprites += [ + nclr_gen.process( + files('all.pal'), + preserve_path_from: base_directory, + extra_args: [ '-nopad', '-invertsize', '-pcmp', '-bitdepth', '4' ], + ), + ncgr_lz_gen.process( + files('player.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', player_cell.full_path(), + ], + ), + ncgr_lz_gen.process( + files('enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', enemy_cell.full_path(), + ], + ), +] diff --git a/res/graphics/battle/terrain/league_flint/player.png b/res/graphics/battle/terrain/league_flint/player.png new file mode 100644 index 0000000000000000000000000000000000000000..91741df80101b0ea41b2e0ef33500c6981e0f021 GIT binary patch literal 498 zcmV_&F=6;7bv)Roxt`iRIviFc->SP;mRsxyahY^wyrWmg?$UT z<>wVYZNtJQ4CR;N9fd_rFy%+_j78RMTu;X470#FB_V?wV>hNhp3_KNqaAD}NZ$jD_ zh-tr9J_Wh#3`+1MxEVu&0r{Sm&y`zX3k{1b24x(C+ahm*rU`FdBENNaNsWgP*zHHh zU_6D|-C&VqVEERZ%b}%g$R6#=t`--d@_Jwaq^zJR3xLM=l9Gh} zQARrGok8CHa`TcVj13wzXwd(bY*at5N2M8WP)Z})ljdR#9ZK?ch-b`;dDy7=r-9TN zUg>V}I+T)8LC8JL9KT%j&}BqPHu7kCviEYA3_{ot9!|fQ`e!LX#Aa*#@$oP&wWcsU zu89nx0C1<*ZEDusg#-Y(3b2Oh)j`+BeY}_D4ie+l6bFz{1P{K=Ur{;F)W5CC56Wz@ zDSrk6>}`M>YUX3zYjsD>d$SQXjE#2gB0sv^T2F5Ma>ddeOb%oB{Sv$%evM(7v2+h# zW;`m}*VY5o%Gmt%02>740Jds;dKV_P8lcD+&)4wdhU`8E?gD3!6r7C&9z>Tw5I>Bn z2Qd!)N_S>>6vc{-QjAa~^bz`#B3m)WgZvRoKN7eQ(je#*#nsC+vS$hH zQV8z&v6C1=oO%?r=vEgv{i<@Wb3)Lwk#)K0bt=ftSzVkKLOGg~s7Fas1#h(Lg{T}l zNlgWf(5qPuUt{Pbb*Z6Fx3ic=_3;iGH0ZDN3;5=cxiPNNMF0Q*07*qoM6N<$f^66r AEC2ui literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/league_lucian/meson.build b/res/graphics/battle/terrain/league_lucian/meson.build new file mode 100644 index 0000000000..1891a6f665 --- /dev/null +++ b/res/graphics/battle/terrain/league_lucian/meson.build @@ -0,0 +1,23 @@ +battle_sprites += [ + nclr_gen.process( + files('all.pal'), + preserve_path_from: base_directory, + extra_args: [ '-nopad', '-invertsize', '-pcmp', '-bitdepth', '4' ], + ), + ncgr_lz_gen.process( + files('player.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', player_cell.full_path(), + ], + ), + ncgr_lz_gen.process( + files('enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', enemy_cell.full_path(), + ], + ), +] diff --git a/res/graphics/battle/terrain/league_lucian/player.png b/res/graphics/battle/terrain/league_lucian/player.png new file mode 100644 index 0000000000000000000000000000000000000000..2fe280d72fd9e2e8dda77c79d8186b34d577d353 GIT binary patch literal 498 zcmV=6;7bv)Roxt`iRIviFc->SP;mRsxyahY^wyrWmg?$UT z<>wVYZNtJQ4CR;N9fd_rFy%+_j78RMTu;X470#FB_V?wV>hNhp3_KNqaAD}NZ$jD_ zh-tr9J_Wh#3`+1MxEVu&0r{Sm&y`zX3k{1b24x(C+ahm*rU`FdBENNaNsWgP*zHHh zU_6D|-C&VqVEERZ%b}%g$NK8H$`k@hr*$4m7w*yMTEYKcMa%$UB0G{-m*?tvYrS4BJkHv|$K|tS zeaB;bwgx!nrGCX25s)vM@I*UY0G5nR2%(gaJO0d!KjJP#0eg6}lqx=hEib``jb-tg zzXCTXAez{;ufjt(qQNgj%=`drJcMs$pp0#8o`gXG8~frVe->Nt0qol+Ify3WF@E9i z7d#ic!@U2H$B27Chrs$CpkC|%OZY(t`+I=;o%$HA=#a&B_h5k^(@tjsceq)Y93bQJ ziXI(giheSqdyuG%ttFC*!&@2s#f!y7s5LWDM>z&tPy1w;wE|5Klgc#6-dkALCPdFX z8XgK|st-<<(~$ZwI-KNO?5aczCBykB2V@hu=iuPrFoZuQ444}LE7HUO0000Yx!s{A){_4SEpTMU|m=*d`)GC16XeU_pOMz@2@A^bDo z^yC%M2G8J$KdRvPj@G(~xNv{32FX1lDERCJNQ?nf?-_ea{UZ1q)y~6yU@)( zTbtLe`rEYI1?TdU<<(yk@A0#ZTNB#ylVyF1IFNE#`(_eWO=!xm@r+SA{XK6^U40WF zKN+|GAZEYvMK}Ih?844$45WhceVZ?PXhKmM^Xu|O4X*2V<`=190^ondjIqe>()IW^ zqXfWz4~ho=V2}X#E8m8re!A#Q(DDPWpX~b*2!8e);O=X@SVe7us(bl^qrr>cq0qd4 zoc}mT^IJdT3D7r@@b_;W4X}Q)=XBxy>o+$L1I!EnL%dF0006p zNkl;>7KQE;*%S@mtVN*Sum z8JbIxU`4IUOx64V(#O3wcKjK~?SzESkmvZ_bM86s`8~^O(4awse;YebOR)O@?z11A z0$$&2SJ_FpUBt7(5UK2LWUt6l+{MvoeAaoz1AggrLmuQM#v(+J4J69?S7ss{$$(xr79=t!YtPOCD9xs-_-)+C=}w9 z=z5Xx&++rY!I*z|F676}kRrx=JXtH;6ZOMrPP8$sA;1p-(VZIjO>~h=ZxcvxN^~g} zT6BTOZUj#v`0jRmcWf=(}Uqf|jUAQ=dFfL7e993cFdx;G%U7Z!+=Dz1- z_^fctFQ7kN+sF&V5w!U{04~2W=^M%1{}fX+>$x8EHyj2p0N))tTKM%Y!5*nij+nHsIdU11hVBxy>o+$L1I!EnL%dF0006k zNklO>V+45QTe#9H!fL2NDN>D_9VEjH;SsUt~By6as4&5xYuVKxh};R&aq< zaDW!-8QUQNLw=x@D)BaipX7ZrZ)|gQb}?&zAb>BsC>$N5OM`U$oc>s zMbb_&oM``fvn^@V0tX2g+B%|S4kSkuPnQh+IdrxJ(bN0{gtUDWH32J+eM$F?MlF6L zNU#&|ki4rjf~D;--Z4!a>?;MJHBh%vV1!U&7B=g5Spg>P;H*zQ$SE`qMWb8^9!0a| zrg-_fg%h1Pdo)#R5=J4XVyK@|unBSb6ur|6f}1?mFPgCg-o5GM+sE@UOzcUM&Z}pBa^6RAe~{) z≫ef6F{admcye()1OviB+JJk%ICM{rx#A24Fg}glew(_p~^$|LHT#Fh@lqI1B*# zfHdxj)(0JZ+_;iXm5hM)MkIJKh44l5$9L!G+;V6VUt`-J*!uguA9$BN00000NkvXX Hu0mjf6~!{u literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/path_puddles/day.pal b/res/graphics/battle/terrain/path_puddles/day.pal new file mode 100644 index 0000000000..141d0d9667 --- /dev/null +++ b/res/graphics/battle/terrain/path_puddles/day.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +189 197 255 +139 205 255 +115 197 255 +82 180 246 +238 213 180 +238 222 189 +213 156 131 +189 205 213 +230 205 164 +222 197 164 +213 180 156 +205 205 164 +189 230 164 +156 189 115 +131 139 65 +98 82 24 diff --git a/res/graphics/battle/terrain/path_puddles/enemy.png b/res/graphics/battle/terrain/path_puddles/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..726fe2044265482c4ee976a41ed704d19aea0993 GIT binary patch literal 695 zcmV;o0!aOdP)Bxy>o+$L1I!E7jMlA0006) zNkl^KTX)_y6XxuU4y3qehM1x2&i{n}6`W{KkTQ zKG##M)Eg=_FARpVIp~hfJULWS4(IqtgPLM^M+1LUJIJQQo`e=csaw$}f+AxwD5W&U zF!m79HcpfzjQX-ndJ0okQ7*iW{vfhCme<|xmr}~T&LU01+Q!jua{y5W7@DGV7OPF_ ze^9m%Cyw1dahx;T07^AfdhpeKLU=)RC+r{q`HAobfRy6^@mVME2k}u3Vp9fiENe7H zeBu-=T5YNJm+=|@{3TeL1w}jR|NQr3j>hys?L9vi{arf z4Y({$=vPNK>S(|gXBYJI`kYq%b7kGBpE^a2I_l{XEW{bOR7CgC#w+;Syi^_Np>85C zBekI(kjb4h@X#z{i_ei;U&1#N+fEvQx`H@`1;AZp{Wt1|^C<gqj0N@C~ZhJXD5!Unp+|m)icFxYj>r02tD?;PYxoHvw>e1_8_wc=2`k;Bxy>o+$L1I!E7jMlA0007X zNklc#16wM6;W(krl$O&3qAq8@P>Ht}YSniUo2Pjffn-@dYW)u)?C9?;^ zbB9Q2FHj^GXiy!XY06KLG%1miYNrJX_$`ucNbmjs-v9L8-VQtL@IS(PwxaxJ%)h=B z7To>#t2#V4vrR|&;^cPjCC1lI73GVu*U3|i!xg*cIE-nE`7M0c6tTSqgMA@*2ZSW7 z@*K|yL&Ov;@tlycP%<<$Y)Sv9m9!WT3JNgLvdVExI4CQg-(uj8$#|$ebiaiJlfEb} z2vn|kIX(oznfkz#KqttR@z|ykJV_7su6W`QdQWOF1V~(q$GBl!!UkDT-sgCV4k7D# ziU17_O#tzdH7dd@m4!{qFN#}WJ!Da7oDU;d()x&^eSFp&bJ8*hTQk$h{Hf;InQgq&z!1&TkLDFJlY zPeH{Gs}H;ByT(xKK(dY`7AI({0#ScDhaCC!K*mr z)A~Wxc#XetZ%W&#CYY$p8V`HSm0+MeGW8_JXT bRnh(i%s6H{-T8-m00000NkvXXu0mjf68B#| literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/player_anim.json b/res/graphics/battle/terrain/player_anim.json new file mode 100644 index 0000000000..80d6408641 --- /dev/null +++ b/res/graphics/battle/terrain/player_anim.json @@ -0,0 +1,24 @@ +{ + "labelEnabled": true, + "uaatEnabled": false, + "sequenceCount": 1, + "frameCount": 1, + "sequences": [{ + "frameCount": 1, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 2, + "frameData": [{ + "frameDelay": 4, + "resultId": 0 + }] + }], + "animationResults": [{ + "resultType": 0, + "index": 0 + }], + "resultCount": 1, + "labels": ["CellAnime0"], + "labelCount": 1 +} \ No newline at end of file diff --git a/res/graphics/battle/terrain/player_cell.json b/res/graphics/battle/terrain/player_cell.json new file mode 100644 index 0000000000..fa96c9a7e0 --- /dev/null +++ b/res/graphics/battle/terrain/player_cell.json @@ -0,0 +1,106 @@ +{ + "labelEnabled": true, + "dontPadKbec": false, + "extended": true, + "vramTransferEnabled": false, + "ucatEnabled": false, + "cellCount": 1, + "mappingType": 1, + "cells": [{ + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 32 + }, + "maxX": 128, + "maxY": 16, + "minX": -128, + "minY": -16, + "oamCount": 4, + "OAM": [{ + "Attr0": { + "YCoordinate": -16, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -128, + "RotationScaling": 0, + "Size": 3 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -16, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -64, + "RotationScaling": 0, + "Size": 3 + }, + "Attr2": { + "CharName": 16, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -16, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 0, + "RotationScaling": 0, + "Size": 3 + }, + "Attr2": { + "CharName": 32, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -16, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 64, + "RotationScaling": 0, + "Size": 3 + }, + "Attr2": { + "CharName": 48, + "Priority": 0, + "Palette": 0 + } + }] + }], + "labels": ["CellAnime0"], + "labelCount": 1 +} \ No newline at end of file diff --git a/res/graphics/battle/terrain/rocky/day.pal b/res/graphics/battle/terrain/rocky/day.pal new file mode 100644 index 0000000000..b6e2b848b4 --- /dev/null +++ b/res/graphics/battle/terrain/rocky/day.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +189 197 255 +131 106 32 +180 156 139 +148 139 148 +131 123 131 +90 82 65 +131 131 123 +106 106 98 +98 90 82 +197 164 148 +172 148 115 +148 123 82 +131 106 57 +115 98 32 +82 74 32 +49 32 16 diff --git a/res/graphics/battle/terrain/rocky/enemy.png b/res/graphics/battle/terrain/rocky/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..23555d1ebded599bd262e9f2225a30651371e808 GIT binary patch literal 868 zcmV-q1DpJbP)wgq?D|bbCi2hgK9Z*VjxmVATb~iJ9V1N0008- zNkl0EVy5piiN#Mnz&y0zx@$6cND(pE5X&vdfi=kfD?*q6&?$dDn!^|%#9 z|0eLWT0Q(rYNSxDR^LVzZtOdXzB+*Cwd!NyI|=T~ox^L%$8r2ttyX(t3n+}DNQjfm z)Vz>vL!R5?2vycVfDqsPhz$5}SMJ`y_>GuOCx6-yM+sMB?dci_EZ};gpj8$yZny<; zJ|S?5u|Mz3?bx9uRH_l5VE?7Pii%_jH|e}nuoDqWpz3chGzG>yLfd{%pUpXVsd$7C zN?(E7f=Kut0RiH=fey43ye4fgGcK{g7@V*T{3fM~Xb2KULHr^FlQvkZOTG+b+6-rG zovyMA1gJz92y_PEW!EU=k8VrRHleuQ5M_(xAU$o1puUOMfZ4`fk`+IWCnL>46+D8B{mb61U^6x`SAOT zSfD*%+TskTMrxE*uRe!Lpd`s1^o4e|<0NMxNcieg2^@!rNj{7XTW^^Gx<-I=ol!V~ zHk^guklHD+UMsD8kiQMsPD4v^8l#=k6^v+(hkts11OH zGx*$74eHX>U`t(>maH`A+~yZyU5<(xvmuZU%#BtGN&@Ow>8ktM>Ra}M_$h!{+fL{S z9~5L3VfaHO(p~OC;Glm|!64}grON!i3Ljf9N?shRHE9E0B0@WTtAai2g)xUi{idE) zp-o61J19OhwvY_)r~No;EOJxGUq~c1wJnr~*7i8?}v{7 literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/rocky/evening.pal b/res/graphics/battle/terrain/rocky/evening.pal new file mode 100644 index 0000000000..288aea2c10 --- /dev/null +++ b/res/graphics/battle/terrain/rocky/evening.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +189 197 255 +139 65 16 +189 123 82 +156 115 82 +139 98 74 +98 57 32 +139 106 65 +115 82 57 +106 65 49 +205 131 82 +180 115 65 +156 90 49 +139 74 32 +123 65 16 +98 49 16 +65 16 8 diff --git a/res/graphics/battle/terrain/rocky/meson.build b/res/graphics/battle/terrain/rocky/meson.build new file mode 100644 index 0000000000..0ac0a3c06f --- /dev/null +++ b/res/graphics/battle/terrain/rocky/meson.build @@ -0,0 +1,23 @@ +battle_sprites += [ + nclr_gen.process( + files('day.pal', 'evening.pal', 'night.pal'), + preserve_path_from: base_directory, + extra_args: [ '-nopad', '-invertsize', '-pcmp', '-bitdepth', '4' ], + ), + ncgr_lz_gen.process( + files('player.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', player_cell.full_path(), + ], + ), + ncgr_lz_gen.process( + files('enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', enemy_cell.full_path(), + ], + ), +] diff --git a/res/graphics/battle/terrain/rocky/night.pal b/res/graphics/battle/terrain/rocky/night.pal new file mode 100644 index 0000000000..1660ad2c10 --- /dev/null +++ b/res/graphics/battle/terrain/rocky/night.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +189 197 255 +16 49 115 +82 90 156 +82 90 131 +74 82 115 +32 49 82 +65 82 115 +57 65 98 +49 49 82 +82 98 172 +65 82 148 +49 65 131 +32 57 115 +16 49 106 +16 32 82 +8 16 49 diff --git a/res/graphics/battle/terrain/rocky/player.png b/res/graphics/battle/terrain/rocky/player.png new file mode 100644 index 0000000000000000000000000000000000000000..b3989ae4348777ad77490f974f47f3ea18a01f01 GIT binary patch literal 846 zcmV-U1F`&xP)wgq?D|bbCi2hgK9Z*VjxmVATb~iJ9V1N0008n zNklMHqTgcuaXlarh(2<{9m^- zr8VuTM@x=gB#Dqi(}VeO(vw-=o1NXAO*g+2a_NH5NfpiOquR;;L0tB5QB<754M1@tI}v!oMk9Lx4Hvyk-u!V41~YXF`S@m=>YCQvVYjSs+w zOH%I1Sy;OKdYrCC_fJnaes`qaQmTY~7%owMyWa`(aQ<2uu8Din z09_6U()uQ>1*1K+5DVyspR~KQFVoy1BPb!w~rwu>=d0=@_2ONh%lK$_72txhl7lLEYD%nasB?jOL z{8i6aaBn!2*}G`A zK(|1QgWaYqx;S8+EO{}_*hb?Y>dUVgr*vP|R6~GMKNCQ8L>mj;86lLuBOj6A*K~rB zsvq$=-Ba0Wlugpt1jRLHU~i829{l*rut!KRm^uL1ColHYT_A+;uMzp07*qoM6N<$f@!FW&;S4c literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/sand/day.pal b/res/graphics/battle/terrain/sand/day.pal new file mode 100644 index 0000000000..4e9d466a43 --- /dev/null +++ b/res/graphics/battle/terrain/sand/day.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +189 197 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +213 189 123 +222 197 123 +230 205 123 +238 213 139 +246 222 156 +246 230 172 +197 180 123 +139 123 82 +90 65 32 diff --git a/res/graphics/battle/terrain/sand/enemy.png b/res/graphics/battle/terrain/sand/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..a1b399f8ddb6b2ac3472a9bff309d273d97013f5 GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!VDx8ekAz-DT4r?5ZAp&{{xw5;OgG$dq=CE zovnU%wfoz>Ip3bGIl85~yE-V!QQ@FQ)?x+*#wbr0$B>A_Z$rKP4jTx3D%w>)uiI(1fHKwm#94O$N0$JvSbe;%k`HJI$}_LnBk{I)`p1 z_lncHiOs4Z3_II7DmorX9p96^mdKI;Vst0G$%k AAOHXW literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/sand/evening.pal b/res/graphics/battle/terrain/sand/evening.pal new file mode 100644 index 0000000000..e073edec07 --- /dev/null +++ b/res/graphics/battle/terrain/sand/evening.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +205 156 255 +57 0 0 +57 0 0 +57 0 0 +57 0 0 +57 0 0 +57 0 0 +222 148 123 +230 156 123 +238 164 123 +246 164 139 +255 172 156 +255 180 172 +213 139 123 +164 98 82 +123 49 32 diff --git a/res/graphics/battle/terrain/sand/meson.build b/res/graphics/battle/terrain/sand/meson.build new file mode 100644 index 0000000000..0ac0a3c06f --- /dev/null +++ b/res/graphics/battle/terrain/sand/meson.build @@ -0,0 +1,23 @@ +battle_sprites += [ + nclr_gen.process( + files('day.pal', 'evening.pal', 'night.pal'), + preserve_path_from: base_directory, + extra_args: [ '-nopad', '-invertsize', '-pcmp', '-bitdepth', '4' ], + ), + ncgr_lz_gen.process( + files('player.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', player_cell.full_path(), + ], + ), + ncgr_lz_gen.process( + files('enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', enemy_cell.full_path(), + ], + ), +] diff --git a/res/graphics/battle/terrain/sand/night.pal b/res/graphics/battle/terrain/sand/night.pal new file mode 100644 index 0000000000..4ab0710b2c --- /dev/null +++ b/res/graphics/battle/terrain/sand/night.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +139 98 255 +32 0 65 +32 0 65 +32 0 65 +32 0 65 +32 0 65 +32 0 65 +148 90 156 +156 98 156 +164 98 156 +164 106 172 +172 106 180 +172 115 197 +139 90 156 +115 57 123 +82 32 90 diff --git a/res/graphics/battle/terrain/sand/player.png b/res/graphics/battle/terrain/sand/player.png new file mode 100644 index 0000000000000000000000000000000000000000..102bf673fb9de89ee144361fb9efa47b3b062c74 GIT binary patch literal 443 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K56j+#nB!Bzv>p;pNz$e6Y@6rDt2~==(Z}q*S z)z8jWzq{J~?cSVk&(<8>Qr%r06y>OJP$O$G&@eYo7srr@!*8d&%{^ow(022{<6RpV z7I6n$W(>&sr|dd&K}|{HD&dAh45IQI^^Z8Z7unsOs`d2Wp8b!Wf4qBi@x=gV-mmiB zF&C`?;UYy2H5qxx7c_9YulqoaU)P`9Y^5 z!?(HCF^NR|@LjfSn#0NKN->TWKVrhz!>51oc&lMhws7X(x9^HA&D5)(Ey^fsto?gu zjz+wQzUg|-@2{QT=O?EwPcvD#uTG9BFX+0j!uJ0G=k59&_HtL>k~nfx(ysa&Kc}w- zC))!AEDr>3P!FJ$(%AfDHJC!6E>V0cJ)_j_q!0;#adGz^np6eMu81J?Zvrp5j z;?cRkF8;{h;!FSf{dsljEt~m+R3sk!>3+DJ(L9sqf_dPK@A}@Cs?^WQz1gVv=g>dZ hh<#yF&FihdaV}ld&TE&yBQTI zR`{SWK?=F}Bs<*pkRTzkh=5tWiy13$hgbD|P2YfZC_qxGu!gHxL@3;5u|*@4s#M%D z@r44lzrltBt0i9vbi9FcM}eEzd2G`{%;&o%D|EG-zhMcv5PthQJ}DoXtfK|C@|VC( zl*c%l>R0*LWE*vc_SvA0G1HA$Qbs`6P1bpbGU!Hv6vXI9Tpk|1)0RK!%W&W0U39@? zo3ERU-p9#$0xD<;wkDvOj9ll5c#5_oX(;7t0)e4ONAVoZnCX^3L2J!5iP=dL~JT7ro?4!FzC5-e#Ab$FyZcN^9d*0U#9DvB_t#yJi;%R9}og8 Sxu;$L0000p;pNz$e6Y@6rDt2@LS<-M9b$ z|G#_o?%vgVXZN1nyJqj4?m1D8Q8PRBbAg6cd%8G=L>zuQB{r|wK%k|VdH(%xoCo$Y z818kryySi0NzR~F=8!E3`ajgmA~poC6#C8JB=##U{rcwHxm&M>{oi=Pf5R<%%l^L5aPCu9{_)_Z7ms&}U#KW_fG4gi)&=>a+yvl7kPcyam z*V9P~2M@}3SqI(US{M57WMzfHhP<^bNe`Rn@|QSjF88TWkJ%r0{Jws6*}*e*7j`dP z@vJqy@n1?&{OsD8yLCBld;&v0`|MKxa58nRSW+)%@bBX2@Gh-=J)4^5#^fBj@$b*2 z=|)-$<~QsVyT!8Q?{)Xh<+EL4eU_C!Y>{SuDR!qar;&5J*xC8FrW?Kc)WjtGOqAh& z?w`UN8S|VOYaKNi>Ym1x%}eExS;+9CRa~=E%poP%Z1sb_^T$*DAH6=|rg5R>^|xM4 z<)?}VE3N0gZs*!{;%&OoK}PLOy-gnfH0uoVxMoGDZJOGYpf+i>_5U@gO3`l*YMQjX iSO4_(L>QNy+8h0h$(gH;_s;7A#hIt8pUXO@geCx#?cq)U literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/water/day.pal b/res/graphics/battle/terrain/water/day.pal new file mode 100644 index 0000000000..c306c38a11 --- /dev/null +++ b/res/graphics/battle/terrain/water/day.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +222 106 255 +0 0 0 +0 0 0 +148 205 255 +123 189 255 +90 172 255 +90 156 255 +82 148 238 +74 131 213 +57 115 205 +32 115 189 +16 106 172 +0 106 148 +0 90 123 +0 65 106 +0 49 82 diff --git a/res/graphics/battle/terrain/water/enemy.png b/res/graphics/battle/terrain/water/enemy.png new file mode 100644 index 0000000000000000000000000000000000000000..77561d1447e86fbd678273d84e864ecba9c3a646 GIT binary patch literal 542 zcmV+(0^$9MP)MKnWKho$3XedI5<& zfVj@?_6JJcwuA>0_j_o*Wcz(Hv%53fXlQ6?X#8y$tN>9B?FI_)UhZOK+QmZ-ZsrpG zs+Qu#Y&;xZ(HPs@aTAlMK)#V;uCWoZYLAax>5;P#@)sih925Sdio3#MCwu^KZxLb+ z5f(A~153>>0sJfp1H-ROO08bkv~B$MDIJvYCrl#B^ph@6ve#^NI_+jP?xYS}-#X=s z*X<^vD(4O&fdKWU+-D0{t8)i@o`L}@yPur&z^=pZAQBbK=z(xV4PQVH2D}}^086+b zHA0xj=wfZ38qxd2AQ@;Q#;t literal 0 HcmV?d00001 diff --git a/res/graphics/battle/terrain/water/evening.pal b/res/graphics/battle/terrain/water/evening.pal new file mode 100644 index 0000000000..d3d7e5a23c --- /dev/null +++ b/res/graphics/battle/terrain/water/evening.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +222 106 255 +0 0 0 +0 0 0 +255 164 148 +255 139 115 +255 115 74 +238 106 82 +230 106 74 +213 98 65 +205 90 49 +189 74 49 +164 49 49 +148 32 57 +123 24 32 +98 8 16 +74 0 0 diff --git a/res/graphics/battle/terrain/water/meson.build b/res/graphics/battle/terrain/water/meson.build new file mode 100644 index 0000000000..0ac0a3c06f --- /dev/null +++ b/res/graphics/battle/terrain/water/meson.build @@ -0,0 +1,23 @@ +battle_sprites += [ + nclr_gen.process( + files('day.pal', 'evening.pal', 'night.pal'), + preserve_path_from: base_directory, + extra_args: [ '-nopad', '-invertsize', '-pcmp', '-bitdepth', '4' ], + ), + ncgr_lz_gen.process( + files('player.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', player_cell.full_path(), + ], + ), + ncgr_lz_gen.process( + files('enemy.png'), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-cell', enemy_cell.full_path(), + ], + ), +] diff --git a/res/graphics/battle/terrain/water/night.pal b/res/graphics/battle/terrain/water/night.pal new file mode 100644 index 0000000000..ada6f1c36e --- /dev/null +++ b/res/graphics/battle/terrain/water/night.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +222 106 255 +0 0 0 +0 0 0 +115 115 205 +98 98 197 +82 82 197 +57 57 189 +65 57 189 +57 49 172 +57 41 164 +41 41 148 +32 49 131 +24 57 115 +16 41 90 +8 24 74 +0 8 57 diff --git a/res/graphics/battle/terrain/water/player.png b/res/graphics/battle/terrain/water/player.png new file mode 100644 index 0000000000000000000000000000000000000000..4e210d7bde99225e7e7f8e0f2b0e2e1303f18a3d GIT binary patch literal 494 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 A_5c6? literal 0 HcmV?d00001 diff --git a/res/graphics/battle/trainer_backs/cheryl.png b/res/graphics/battle/trainer_backs/cheryl.png new file mode 100644 index 0000000000000000000000000000000000000000..c1095c14f1932a6a62b0b0d28e2291a22eb576a2 GIT binary patch literal 3537 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 literal 0 HcmV?d00001 diff --git a/res/graphics/battle/trainer_backs/lucas_dp.png b/res/graphics/battle/trainer_backs/lucas_dp.png new file mode 100644 index 0000000000000000000000000000000000000000..853a987a2678f648b30864914d2292e110afc781 GIT binary patch literal 3384 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 literal 0 HcmV?d00001 diff --git a/res/graphics/battle/trainer_backs/marley.png b/res/graphics/battle/trainer_backs/marley.png new file mode 100644 index 0000000000000000000000000000000000000000..acef576262319217500f2ec9e8b77fbc9d057e72 GIT binary patch literal 3003 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 literal 0 HcmV?d00001 diff --git a/res/graphics/battle/trainer_backs/meson.build b/res/graphics/battle/trainer_backs/meson.build new file mode 100644 index 0000000000..09907eea57 --- /dev/null +++ b/res/graphics/battle/trainer_backs/meson.build @@ -0,0 +1,39 @@ +shared_cell = files('shared_cell.json') + +battle_sprites += [ + nclr_gen.process( + files( + 'lucas_dp.png', + 'dawn_dp.png', + 'barry_dp.png', + 'cheryl.png', + 'riley.png', + 'marley.png', + 'buck.png', + 'mira.png', + ), + preserve_path_from: base_directory, + extra_args: [ '-bitdepth', '4' ], + ), + + ncgr_lz_gen.process( + files( + 'lucas_dp.png', + 'dawn_dp.png', + 'barry_dp.png', + 'cheryl.png', + 'riley.png', + 'marley.png', + 'buck.png', + 'mira.png', + ), + preserve_path_from: base_directory, + extra_args: [ + '-bitdepth', '4', '-clobbersize', '-mappingtype', '64', + '-vram', '-cell', shared_cell[0].full_path(), + ], + ), + + ncer_lz_gen.process(shared_cell, preserve_path_from: base_directory), + nanr_lz_gen.process(files('shared_anim.json'), preserve_path_from: base_directory), +] diff --git a/res/graphics/battle/trainer_backs/mira.png b/res/graphics/battle/trainer_backs/mira.png new file mode 100644 index 0000000000000000000000000000000000000000..ab116c69378f3849864e3b32e9d15d319138a560 GIT binary patch literal 2791 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 LNkvXXu0mjfxSSJK literal 0 HcmV?d00001 diff --git a/res/graphics/battle/trainer_backs/shared_anim.json b/res/graphics/battle/trainer_backs/shared_anim.json new file mode 100644 index 0000000000..09fc30d3c7 --- /dev/null +++ b/res/graphics/battle/trainer_backs/shared_anim.json @@ -0,0 +1,48 @@ +{ + "labelEnabled": true, + "uaatEnabled": false, + "sequenceCount": 1, + "frameCount": 5, + "sequences": [{ + "frameCount": 5, + "loopStartFrame": 0, + "animationElement": 0, + "animationType": 1, + "playbackMode": 1, + "frameData": [{ + "frameDelay": 1, + "resultId": 0 + }, { + "frameDelay": 9, + "resultId": 1 + }, { + "frameDelay": 4, + "resultId": 2 + }, { + "frameDelay": 4, + "resultId": 3 + }, { + "frameDelay": 30, + "resultId": 4 + }] + }], + "animationResults": [{ + "resultType": 0, + "index": 0 + }, { + "resultType": 0, + "index": 1 + }, { + "resultType": 0, + "index": 2 + }, { + "resultType": 0, + "index": 3 + }, { + "resultType": 0, + "index": 4 + }], + "resultCount": 5, + "labels": ["CellAnime0"], + "labelCount": 1 +} \ No newline at end of file diff --git a/res/graphics/battle/trainer_backs/shared_cell.json b/res/graphics/battle/trainer_backs/shared_cell.json new file mode 100644 index 0000000000..07f762acda --- /dev/null +++ b/res/graphics/battle/trainer_backs/shared_cell.json @@ -0,0 +1,699 @@ +{ + "labelEnabled": true, + "dontPadKbec": false, + "extended": true, + "vramTransferEnabled": true, + "ucatEnabled": false, + "cellCount": 5, + "mappingType": 1, + "cells": [{ + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 14 + }, + "maxX": 40, + "maxY": 40, + "minX": -40, + "minY": -40, + "oamCount": 6, + "OAM": [{ + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -40, + "RotationScaling": 0, + "Size": 3 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 24, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 32, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 24, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 36, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -40, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 40, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 44, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 24, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 48, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 14 + }, + "maxX": 40, + "maxY": 40, + "minX": -40, + "minY": -40, + "oamCount": 6, + "OAM": [{ + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -40, + "RotationScaling": 0, + "Size": 3 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 24, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 32, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 24, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 36, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -40, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 40, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 44, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 24, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 48, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 14 + }, + "maxX": 40, + "maxY": 40, + "minX": -40, + "minY": -40, + "oamCount": 6, + "OAM": [{ + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -40, + "RotationScaling": 0, + "Size": 3 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 24, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 32, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 24, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 36, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -40, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 40, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -8, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 44, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 24, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 48, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 17 + }, + "maxX": 56, + "maxY": 40, + "minX": -24, + "minY": -40, + "oamCount": 6, + "OAM": [{ + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -24, + "RotationScaling": 0, + "Size": 3 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 40, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 32, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 40, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 36, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -24, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 40, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 8, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 44, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 40, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 48, + "Priority": 0, + "Palette": 0 + } + }] + }, { + "cellAttrs": { + "hFlip": false, + "vFlip": false, + "hvFlip": false, + "boundingRect": true, + "boundingSphereRadius": 17 + }, + "maxX": 56, + "maxY": 40, + "minX": -24, + "minY": -40, + "oamCount": 6, + "OAM": [{ + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": -24, + "RotationScaling": 0, + "Size": 3 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -40, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 40, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 32, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": -8, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 2 + }, + "Attr1": { + "XCoordinate": 40, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 36, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": -24, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 40, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 1 + }, + "Attr1": { + "XCoordinate": 8, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 44, + "Priority": 0, + "Palette": 0 + } + }, { + "Attr0": { + "YCoordinate": 24, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 40, + "RotationScaling": 0, + "Size": 1 + }, + "Attr2": { + "CharName": 48, + "Priority": 0, + "Palette": 0 + } + }] + }], + "labels": ["CellAnime0"], + "labelCount": 1, + "vramTransferMaxSize": 3200, + "transferData": [{ + "offset": 0, + "size": 3200 + }, { + "offset": 3200, + "size": 3200 + }, { + "offset": 6400, + "size": 3200 + }, { + "offset": 9600, + "size": 3200 + }, { + "offset": 12800, + "size": 3200 + }] +} \ No newline at end of file diff --git a/res/graphics/battle/type_icons/beauty.png b/res/graphics/battle/type_icons/beauty.png new file mode 100644 index 0000000000000000000000000000000000000000..c63d2533dbbaa7728b6f58370a5ca297f34dee49 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1mjd-VUBDc_2t=44Iz zHs{{GtN-75SqA-&>i&Op%ao*~C5}t(HSe7=Wl3{&@&Et-cbFcu1?tK2ba4!k2v6-- zH XYV*^X{hl{~wla9S`njxgN@xNA*RovY literal 0 HcmV?d00001 diff --git a/res/graphics/battle/type_icons/bug.png b/res/graphics/battle/type_icons/bug.png new file mode 100644 index 0000000000000000000000000000000000000000..4a97d5e081e079d6c15eb652125acd87f9c72f27 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1mj`ah}qY*19QW3lCb zFUu)=m;7I|SK;0>!|EvlSxcrApWUL6l>}7QTwVPC|9^8=`D;Ky_}KKDEd-z+Yu#gp~(xJ88Vb(I*$oFD_AU;N&7Dst`Ia==Bdljgxxw`oO|NqXPrl$Zo;hrvzArj%O{Tq23 z0ytRb7c!PIZ~QNDw_cJhfn`I*tP|Tm6!BhXa5!%uuBH1boFyt=akR{0E5g+ A)&Kwi literal 0 HcmV?d00001 diff --git a/res/graphics/battle/type_icons/cute.png b/res/graphics/battle/type_icons/cute.png new file mode 100644 index 0000000000000000000000000000000000000000..c0a96c8fab24e8280b9db5c177c518e4a5099a69 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1mjd-VUBDc_2t=44Iz zHs{{GtN-75SqA-&>i&Op%ao*~C5}t(HSe7=Wl3{&@&Et-cbFcu1?oxiba4!k2v6t-JNPG zGEFyFsuDPATD=4h&7W}R(iGjjs@oRues}59eY!#Wy7rm!M}KPV8Qgj%{;K-Lv>0d` NgQu&X%Q~loCICU;N&7Dst`Ia==Bdljgxxw`oO|NqXPrl$ZoiJmTwArj%K{f2xE z1{|)EzI(PT{;0w>`OzBlU(9srKU!ypd=dT0fBo80!=)NrCWmbFzdiZx`g-<`<*)63{a=!)^fDXdUItHB KKbLh*2~7a_>{gNh literal 0 HcmV?d00001 diff --git a/res/graphics/battle/type_icons/dragon.png b/res/graphics/battle/type_icons/dragon.png new file mode 100644 index 0000000000000000000000000000000000000000..4fd67a5221bce481590b21aa244ccd3a88451d00 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1mj`ah}qY*19QW3lCb zFUu)=m;7I|SK;0>!|EvlSxcrApWUL6l>}7QTwVPC|9^8=`D;K_GO8@Ks2Up*F{b2ny&r*@FEAvG!u9Dlp{zfru z>jK>yVjEYvW;p5yg>t`W(Ct{o`pqF)AT&LL+gNhVt;IJN-`woBIrQ}sxz`WErawQp b_uRhfiuS4du6~&cw41@x)z4*}Q$iB}E%98a literal 0 HcmV?d00001 diff --git a/res/graphics/battle/type_icons/electric.png b/res/graphics/battle/type_icons/electric.png new file mode 100644 index 0000000000000000000000000000000000000000..61741ae8f5ea7bf7d52d6113dc4e97bc21e3960c GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1o(f7S3?kl_?V&1Xlm z_AasP&NBS}zk1D@>U;N&7Dst`Ia==Bdljgxxw`oO|NqXPrl$Zo1)eUBArg|Q2Nw!D zIf^hJkYJNN_`t(k;RUnE*JX|6vML-`YRf)8|8sNChiA{YU;N&7Dst`Ia==Bdljgxxw`oO|NqXPrl$Zoxt=bLArj%S{f1mk zfjrIKtEUU>ZIo?&cB*Od@ss!NDU?=x%D%t-X|qGpw&GoUdS#yv-c2hrFW(X+u;QA~ zOpnmOsoobHT>~F%cM6ED?NC{<%7#T&U;N&7Dst`Ia==Bdljgxxw`oO|NqXPrl$ZoS)MMAArg|Q2M-D! z3gB^eG&Er-Iq>-3S%?2;S1>GRo*5%t_Vsy@{f?Ih4+hWS$O?MQY0TzWy53^;Wj04i zr&EdQD-074u?U3Bo-l!pC6(i*Oj(nWsbA$Wg^0AR)jMx1_i&Op%ao*~C5}t(HSe7=Wl3{&@&Et-cbFcu1?tK7ba4!kkW4-3 zD9Gf%!+gL%f$pE%o}*_{p798dl3i~Y0nj=8zbj>;zXf@Qj^m&>*$tkPY5$@5l% z#`>1PNvQ=&o6lxUGMq6<)A-dA-ZrCDx49=0R&=g;>2*AzFjRNF)^)8W_L?1)4}aa= bQ}~OqVnJe0pWaWP%?u2lu6{1-oD!Mi&Op%ao*~C5}t(HSe7=Wl3{&@&Et-cbFcu1?tK7ba4!k2#-C# zk(bGV$N6GMo2fuf1NW}eULGPmKtm2Jw1^d~o35@Jr1Wq19rx`O3150FnHiUCp5qoS z&2b>;rjTx4gqC&anOhgKtZ$Y&ESl>oe`0SF^QKcqzwboE9Ch7rtu3B%?O;6#C!y3HG`+CpUXO@geCw@n_vq7 literal 0 HcmV?d00001 diff --git a/res/graphics/battle/type_icons/grass.png b/res/graphics/battle/type_icons/grass.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc93d9444cc33f6aed8bafc990fb2f403c228fe GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1mj`ah}qY*19QW3lCb zFUu)=m;7I|SK;0>!|EvlSxcrApWUL6l>}7QTwVPC|9^8=`D;KU;N&7Dst`Ia==Bdljgxxw`oO|NqXPrl$Zog`O^sArj%K=M{wx zJMcIMF8-1K(7~cOrrQ23L`-yAH;<>!jAC$RW zoR%>?hdXeAw}rE!SDyHrAo<2`k|iuRF2zguiqGEk!c2*iPoSAu<+I%z+xzDu>?U7- a`&<5+e4AKE`Qaj<i&Op%ao*~C5}t(HSe7=Wl3{&@&Et-cbFcu1?oxkba4!k2v6!|EvlSxcrApWUL6l>}7QTwVPC|9^8=`D;K_8Y BPdWeq literal 0 HcmV?d00001 diff --git a/res/graphics/battle/type_icons/normal.png b/res/graphics/battle/type_icons/normal.png new file mode 100644 index 0000000000000000000000000000000000000000..8ff583e432af3fe13e8840fb8d6938fc13c61647 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1o(f7S3?kl_?V&1Xlm z_AasP&NBS}zk1D@>U;N&7Dst`Ia==Bdljgxxw`oO|NqXPrl$Zod7dtgArj%K=M{yR z9C=(WMp*o8nBmss95hEqtF~GGOkUvT-!c0*Y8y61O$m7ZGn#BB=ZhMUvQu8|7eyy{$g?X{nB*WW*?{q>Li Y=d?vfe8ty$18rvTboFyt=akR{0Dvx8NdN!< literal 0 HcmV?d00001 diff --git a/res/graphics/battle/type_icons/physical.png b/res/graphics/battle/type_icons/physical.png new file mode 100644 index 0000000000000000000000000000000000000000..dccd216a4c1d0f57437bf8285c81825ee609b1d8 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1o(f7S3?kl_?V&1Xlm z_AasP&NBS}zk1D@>U;N&7Dst`Ia==Bdljgxxw`oO|NqXPrl$Zo*`6+rArezl`x^xt z6gXU8Mky39B{a7DE%){?eqFu%p7le;1Lo3tmJKS0ulaY#`c7!^z9Vd)CFWM&kW#sk z)55{di&Op%ao*~C5}t(HSe7=Wl3{&@&Et-cbFcu1?nmEba4!kkW4+e zP>{(%fcbz0&(TK$B5fR>+uQw&ieD-! z+b2>pHByp$PK2iA(lZ=B(}SY6O%jxt7UUIql7r{^mm@DE8%Y6?1?>m5&GkCiCxvXi&Op%ao*~C5}t(HSe7=Wl3{&@&Et-cbFcu1?tK7ba4!kkW4+O zD8^*K<8m;T-W;-$MO9a{trg*_Iy>9$65^|GXitBWSO>UN!Qt|=<+e_j5$ b?=t^E`MEnTWYmTNt!D6a^>bP0l+XkK?66*H literal 0 HcmV?d00001 diff --git a/res/graphics/battle/type_icons/rock.png b/res/graphics/battle/type_icons/rock.png new file mode 100644 index 0000000000000000000000000000000000000000..73c2d2180d1f53fcaa243b6ccbe5779262d0fcde GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1o(f7S3?kl_?V&1Xlm z_AasP&NBS}zk1D@>U;N&7Dst`Ia==Bdljgxxw`oO|NqXPrl$Zosh%#5Arj%S{f@FuIg$^hDMrOR~%x`yU!jWKRx@O&7KR>^Je7w_RR)b O$l&Sf=d#Wzp$Py|^HQ<^ literal 0 HcmV?d00001 diff --git a/res/graphics/battle/type_icons/shared.pal b/res/graphics/battle/type_icons/shared.pal new file mode 100644 index 0000000000..dbf9700302 --- /dev/null +++ b/res/graphics/battle/type_icons/shared.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +0 0 0 +255 213 49 +246 82 49 +148 49 41 +230 197 106 +189 164 57 +139 106 49 +255 255 123 +172 172 123 +222 222 197 +115 90 74 +74 65 57 +189 189 213 +0 0 0 +131 123 115 +255 255 255 +0 0 0 +205 197 255 +172 148 246 +115 90 156 +106 148 246 +156 222 222 +213 255 238 +74 57 82 +255 90 139 +255 197 180 +148 98 98 +164 65 164 +222 131 189 +148 148 164 +131 123 115 +255 255 255 +0 0 0 +197 255 98 +123 205 82 +90 131 65 +115 57 255 +74 57 148 +189 164 255 +172 189 32 +222 230 49 +123 148 16 +106 164 148 +115 205 180 +32 106 98 +0 0 0 +131 123 115 +255 255 255 diff --git a/res/graphics/battle/type_icons/smart.png b/res/graphics/battle/type_icons/smart.png new file mode 100644 index 0000000000000000000000000000000000000000..ecf631ff403d563c3f162bf94a289443627a2573 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1mj`ah}qY*19QW3lCb zFUu)=m;7I|SK;0>!|EvlSxcrApWUL6l>}7QTwVPC|9^8=`D;KJ&We=M@OyRm;Ocevo6G0^ ZWe{nLyDaCpV-L`322WQ%mvv4FO#u4FS~may literal 0 HcmV?d00001 diff --git a/res/graphics/battle/type_icons/special.png b/res/graphics/battle/type_icons/special.png new file mode 100644 index 0000000000000000000000000000000000000000..f89f0a0e68eb6eb4449be1c73900f0e35586ffd9 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1mjd-VUBDc_2t=44Iz zHs{{GtN-75SqA-&>i&Op%ao*~C5}t(HSe7=Wl3{&@&Et-cbFcu1?tK3ba4!k2v0q4 z$j5BR;S#9ryH2o|yK32ks6dT>UxO?5uJ)~Cu3{BR{`2j^+Uqm+O-=UojJnOl_@ar0 z^HGb#f?r=4Jts|GapS_xt93`}Qk{Ng8B$is@}{%OxNghk?w%mB<*k%|-roQF a{xfCmH=84*IDazGW(H4JKbLh*2~7aMh+Mt^ literal 0 HcmV?d00001 diff --git a/res/graphics/battle/type_icons/status.png b/res/graphics/battle/type_icons/status.png new file mode 100644 index 0000000000000000000000000000000000000000..7b228f54de086a2d447c45913d52150a7c32c05e GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1o(f7S3?kl_?V&1Xlm z_AasP&NBS}zk1D@>U;N&7Dst`Ia==Bdljgxxw`oO|NqXPrl$Zosh%#5Arj%K=MDK9 z6nI!Ktkat(E&gi7_TrSR@MU#^i&+0~F057bRh+eXj&qsSp$WaW&N}3UGMfpW<;&?z z%;M8zFlY~Y==sVaz2jE%G~v?|_$5k(<)iK&UgES$DPKNgs^azc-_1J~%vieL<=G#g Og$$mqelF{r5}E)c%~Mza literal 0 HcmV?d00001 diff --git a/res/graphics/battle/type_icons/steel.png b/res/graphics/battle/type_icons/steel.png new file mode 100644 index 0000000000000000000000000000000000000000..1cde2e35940176a2b98d059840faae2c9278c985 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1o(f7S3?kl_?V&1Xlm z_AasP&NBS}zk1D@>U;N&7Dst`Ia==Bdljgxxw`oO|NqXPrl$Zo8J;eVArj%K=QnaP zJMy>$F7=DqeVN%jMIuZ$hB4{N!Jg)?lHb0i{!*Br^iJ;hBhh>vyT;iJK`*zxStofV zWbz~Xo*=Q7KdoX@^j>o<_C6`Je!-nEugsgdXGNQug*V8Dy|#ID^61Xm|E#>6yPnLu SFEbZtCxfS}pUXO@geCwadstBb literal 0 HcmV?d00001 diff --git a/res/graphics/battle/type_icons/tough.png b/res/graphics/battle/type_icons/tough.png new file mode 100644 index 0000000000000000000000000000000000000000..80fcdf32a0a2e9ad3496335578c942389ca45d79 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1o(f7S3?kl_?V&1Xlm z_AasP&NBS}zk1D@>U;N&7Dst`Ia==Bdljgxxw`oO|NqXPrl$ZoF`h1tArj%a=Qr{; zFmSj8N+q9V+AyiN`i7-GcY(BwSQgKb_<%hvEG}uUZ(6yy*9VkT-Ej^LnaI+_BKKi| zvd8Rz6?_h5AM#nxczs~y_CC8|%ZdMo*>tM2XP-aK>MAkZELPgg&ebxsLQ E0MMgNApigX literal 0 HcmV?d00001 diff --git a/res/graphics/battle/type_icons/water.png b/res/graphics/battle/type_icons/water.png new file mode 100644 index 0000000000000000000000000000000000000000..279b8f97a022a22cd5cbcf146da8f91f410637b5 GIT binary patch literal 218 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 z%0AX2AZ_upmc>5W;$tntk+ux7mhqgnTxKoPIBf~AmQqezuCSKR`PD+|XD!;3oVKXl z>i$|zTd+H#T?5T2TSi_OuG zsn?oZKy*2AJ$_VXEuGjJkdz{o;lR;cl(^lTxXcDKv^sSXD3n`(DVJ21~B;fKZzpszwx7pKlYi2 zAd+`E_VEWlf!GIw9}U`^&N$>W0ZIeD=m#lHFmjqfN&{Ky591%i7RzA#vs^$x)9?SzsCpyW}O<(4O2v`EXLWT{-Mq>*K9 zI@H_aoKWwfN}9fQeKN8kg>e$Ik1CFLB&w7=;692hMr4_eW+-t3U1rxweJUq1ejd~8 zBQka*Q|nbEG65bFHyBcBpkPR)IEcHr_|}RxjKb385aQ6+I)#$8x%IFEBdQ<_sW^o} z22<^WA@gMS(!6@$K^1bC?e7PID%n%(d93sqTVU#C4ZrcVTSx z*Cpijo)s8d?Ku>Pt-vkAPIo@&mO}*?d&&CiSXD;K-1#KRjXUsh4JJJ`#HYaozz8Z{ zPvT(o?~$6?TG}@aPVB{XvNeE3ieH66i3hS@p9$IOOr$&8j`*+$xDdk`&AxyT!x>Eo z7h(d8Ce|m!1Q^ZJej&!kXrA*6F@uceEB}>2Mw8El7{jl_?D7dQ1sscz_!^=JWzv~-c&87$q)RUk5rj|=5`pZ=g=6y43J8FgS@aXBio~7k)l_4_vvN8nuSCkrJibvj!dv87lzXS93N)pqF zJW9239;G6WG9#)Kl%Z6505^@&3p#MFsj5sm62TTwkb%P&N3ZHZE@kda1V5J=q99N4 zbE!g#SP3I+P%+4+61hM$ng?aNLOVEyRp$Em6k=G%|4|IPonx4~TjPAH*@t0ypsDgy za1I4A@XN^!ngC`Dy+|F@)DEgd8pP+JA=(Dc#c_iw5k4eGw-Iw<=hHqIQ?(p%Qx-aI zI&3mY#GS0k0ab^JL?{EZ%?zZXs6c$X<92#L%+gh;lw&$_!Dbe0(21~@=%uyU>^F}< zg{v3?qlP6UMk^zV&1rs=#i7(5yk5;k0q+gux3!$(*6DFX6?GfbtMw=r#o)m!tnPNk zDX>{rtu-Yvf5~B17a(}rt-yRs4pHtw1{Okk_+>4s99=(T(gW1w}DXR z%med!4dy|GOq}Lrq#mCRw7fb$b8=hq>J!))#r}=1Fy?kGcxz2{4O?Cw5 zX#tw%@du4slMW--5aUxqBe&aj!Q zkuQN8DW01r$WU@ZH6<6a$_KM#M*fYYLn+9_`&%$kCS*^_@uAytD3jgpM47Z-?{=fa z)k;t@cK-}(i8HW#%ap?hJwDQ~OBL?0S3|1gD?173~?>#Cmi(*!h zDR10O^;x>e%5(9CR1PH=WiFG(PLU?pV@J1~6ns~rVX!T73l;Lii!c!zlt zy+84Ir+Vjl%m4H**D&kHgIPSTd<{dH*I*%Z-qAx03|xGfyMV@pG0cHVOsE+;&b$K# zuD%B<5xWfV>s;ya|H#cMjF|tBo7K`{p1E7_kC{6pf!POsJefOnY+e@6@FOkdh(-GP zn#I|hSJE8Wno|#cz;fncK|`MmCkI#q1uc;357J550mH}3EINjz>nF$tR-?#7$L79H z(a_<%yIcLGi%{)}yl|wO1?6K0< zR}j%SP)Q6OU-W|1BHb%Fq#DU_pwb{d_438a1H^VhYSXX;E?uzC<>|e7wDQ0vsV!)h z?CjG7J2I{zs+dTQt-v&_#EK(|D-4~B^D;Pof%&~?+>u?Dax3IC%yJq9=}~n%j?A{9CBl=^}!@vk`@Q zH*zo7jhN!rWf68S&joA}vKyA`vK!4xDAw;pee6YKQGR{wDzUy5mZMm|2`x%ji}g@t zNoq!4&mM%$nK(m{zxka?K|T*cA$3EG+`61=_B6Wz{B|X)70p3@m2BK)yOPx^`0Yxl zlD&p@CFBwQyx(V6>`GR-{jyz&^RMslTfh_KQ^{_}DOvAR>=!xRm+eZZl07uUu7n~P z`0PsR4G>?CrLCCM*Nl~ehNVYU0Rv17zA$E6Y;Y)3xo8jEwS**9Z#~XafB;M{fB&?5e$_CVQYy!uo1Q|Mzfi)}|Mt+rBiQ&67VvFRV6DvlKGLAbm4nyX@jt~YWO zOhQMLqRYDlQ@y^^K%9E9ApOy+G%)!-EbY56nVvpREk2r-n zMV|_G8K>?+oRYZ_;eV>&V;Jq4@IK}eT~}#fnJ(4#K4ub;WySieQ2`G^tgsK?UR^CJW^d#$YJEh9H>EH%2K(7 za@h=6uo&-c$tssE2un5D4LPvgvaJlz1Aw3u6mTP;839kRfQRxnzjnWm!k4Jq|A`~g zR{R||Px?fAcG-sT1JVBG`gF{_b$9u!ldoXnTK|ErD(6BzcA(rd-Gifk3bPc4n} z9?&XQvZyvem(}!K&=h9UWXSc>1{RP0%WW!|q^e}1t}1Vwq3Q%|tN`V*s^SW;tQIn^ zH{+J~+2&_ORw1&xB^=_3Oa*nltlI9DZDHxzfC1w5_;tj~a_BY}WZ@zrH^dV?253y# zZ@1x73b!CaNxE!_DO0GmjHFw0%cY-{L%L+2z*1`G(HIO#Ct0)K!`EinDa`L|SSL)~ z9uF12LE7}LbjGL4+hnQC%9`a-x!7qtTnXRxYPV7D(n2&plG zjM9n?&<|zdhA5JtHV|k@*bU~6-Pq*a+yF#V3Y3Yp$|Q(aTja(TNRXRQZH~7s(vWgk zMp}~2P!~|r0MlD{lh%ZWE?Ce^;}PB(&0vEjY$zY!lARB@GC(sg)&|(lx19DMkkD$@DcH@}4S=bJ@V0ueixuGfH*8=iNAdR_ z+zZUZCNPzBx=#ue&;w=v7++5fcNfTpNYnv3z;FcmLHj(O+|we`Bj}%IZcU`K+)$t< zOh6#f#I`!6M#C2OH(-)OG%S#_V!ivE>S7b3FtBm;=_r8gdq%uxx9=Bv@ zBSm_G&{wIFvFJF^Sp;p|4*DC3F8F!0wB#I>9LLefS##FvsH4JIOanMH<6|!qs5SkWHvnz;5Q;XtJ=AkaTD&6S|sN@h~YAr3aDQT$xXr0FH-$~y#+>fTFG^!$ANcl}h zffg@aDt81l>-xkQm_~qBG&!}R$th(9k=nS&si>)FyPTLWHx-DQL=xrce8sSHcNNGFqG9Ss3LvHa*?Y&Dn#3cIQu(-9gdl zj66H=wKvq8aKSsy`!jE$_ipd%YkcI##7DSRZ3SH1&+^3`K>!Jb)p|Qp5ndj_0RX00 z^T;|Z;ehlWreu zFsxHtB6Y~AZK4F}inJzGJbD~4K$NU_z*euX6odC5U!{X|1qv|!DeL?DzS=Cp3$u7#)*ZgWtnpZwg>_l&mkYCaT^5o(UYHdOxrp0+T%MuMLV@McfzG-S|tnBmHW@G@-UYoKCKg%T*~J6wsi0DU`ot|kOyd?^zjZ@ecT z=?paOf@eQ_@^vVj7J3+;#!>?gp$7j<2fdP1=@|6G zVFONRJwQIQED{`q=|Y?So-7#M8uVzhz-5;qgc}L}0u1emC4cqM36gLTTX3S8dgL4x zY7VOc|INi}hVL{{Hq_(tWVKtkD6qGHde~xCtI~exY>Fo_5gi68!$^f55EwCV-R~#> zBk^4uQ!}cBj1!`SY~!N|8Bx+Kd`f8mMc@hau1!FL;)KM=u`?3G@fRueAclZ z^|ah0I8M(*ocfH{ifK(N|a?Ljkm zg+~A7!Z9Ci4XMxA?XS+^Ywb%G)&a91vZ6f+%I3c0U5x z@|YTs_r}=ey>?W94}F1CtzW(w`Z<6RY6f}}*?~=P!Q66+h&z|>BnchW)aFzQWZVXb z?oF@(EZ@0Y))QL*Q#YzXDpmB>c8*fvEYwUPFXNndWKu)b1=JD_$m+*RjW8RGFA(s2 z2XTQjY#Qs@CAC+)GpNw%(OeQ%jd)TKv;8#ProK>u}cIjAUpl)770gATbZg`WMr| zFxh7VvZFfYx(O%03m9C4k{BqdW1~=P%Djl%TaSX0GJInRWjbkhuZJ33H_i$*M;Jay z3tATs$@Vp$sx<)8- zsn}-lw*zc3&3n0wst@2Bl=YWVYP3`e!CtH|Ih(@nxkoG!*k1;yI$LBXq9n28UX}d? z?-{jEVEqG3VD}!7KOTOsA@{2n2iP`Rd2|9xqiCrx4=|OTl4z=Ao6E$uLsCZTHryw{ zF42}#`;pLD)OKlXJ{+=ZXQW%aY;`a}7M4ZI&FI8wi0@21A#rOEmcwRAs+y-tB^?@? zCtDNH%HO%keTsbXQ={GLILpy4m3BbEa=j&gulvQIfihidtQBK4!&2%7l%bkagXx10 zbj##f=Vt`|`s+W!u`k{O;h0ec1S!jGau_jgz4LRq3O;*Vu6lVUya&ciFuG;vKFcu< z^GTmV%^yK%?SGH-JD2rRSieh#DrY{7sOry$lKxD(2m9jp?AeH<3`+!}kpyuqmD4hO z{Ws-ZZ}!M?H`1~m3-Ypx9xlGLA_Kp9qZyq_isbHP&RseA7PgCflSTm@hyEq%#=pKu zj5EBjG!wU}e^YjEB@}zTG315DaSw{QJAhfCRgrGFd52P?IObBf&;qMkVNO1g+_K^z zPlMY@-u{&nDz=0D7vG3b{5t85rTF4_@hg6_+Qr6A8KV_T^YT&F!NW~}%N znzr>!MtYj@_&%4N_a?tC>&ituAmn4Ibg@IgYxX{9{bTS3@;O$mVrBlW6Hy4T{Q`61 zmoxuak$#RL;T|F5*uO{g&EweQv1DT}AZ$G=w4FUJ1uRHq+=YqFqT{oyH3rj>VJFY`q1tk*^oAL&y+oZ%vF;e$o*uQ)bt*-YVQ%q z!{wG&pCtHdXr;s|si_KZ@0rKAt?_E$I^?VE4}_LO%i#752`y&?U9N)r^Jl!QzoFqt z__XpdR~#Ix+*Z1z6g#5|vg@7$XeTi*VAfLf3H^28d#~b6^=5f<&v@s1mp`!PpMqWQ zUhDhuPwD%Cri|AXLJ`K6*!N=zy3_7S$8Skc%nRYL!d%Mboj-IP9+OF<{vI*lkt%52 zxCrV+%q0v^T)@8fWoT_jKW5?!s4x$(YStmJINY*`t4wu>8i*YD1YY*tIqF4?30;pUgPSG$ zb>=#e)t!{yuG-Ib;5!nT4K_NM01gE%oi8&ihI6p^zGp$HUWi~Tb z@YlyRyl1Y9tNIxkDV$Anpf#t!ik|GM_`1Alb#dt9jysO#o>?%eZ&pBW;;v^PD?We< zwTjou7F|^=WN~=$R{czIOJeoAfKo_#hN3K zhn*Er^aw~&F(Lz2wO!6@-!JE`ff70YiD|I9SeORI#WEBtRlOV>3IMwRWjTck;xwj{ z4%o7*7ByxxLeqRym0>kH=um*c%(a6QJ=H0^om$OmEf?kD;^|Oq z7f^Lh#fd*a&-+Vb751V)QQgMMtci9M%&SuY^F3SXCfTsVWZ9m^6ZL2Ooq^CL?6m%b zY!c~|RTvUE#nf~wx&o~)axuCswQZu4$ z(`)67`q8O*MGvnjsgS;%ZgmuKuki%zxKy9IYI?rC#5!#?O45#LK7=^w+3sk{@pS~M zAm9_Fkvu3!9?tp%X%Q7^zaV|_O79IHAhZPf0rAEgSVG|!cCH46A&F)bq-){Rho5jk z(Zf!EjtK?nUzA{lZ^;!w`ohqTK+1lE>QzEc7giZ$?H8t`0>cM3 z&{u_9=F+ia$$o(vA3@0(mThwg^LTzarOh#cW@JoFd1M3H#7;v+J!vk**oEh+XWp9jkwD)G_ zo$0;HTkT!v-R|A#ebM_S^PcwhpM!Hz=hDwjI+u6uPIhj^xrfeeJ@@pv&U3GyJ9+MN zcJ9*o;pZ*qC!W{N-*JA~Z@$Iz>JLNDX@2AKIla|)PKO5i->n&PPVbAv-giUK=~I`_ z>0n3>Z6_gNB+>+Qq9s{bP$0p3`vHk+TGRt>f@Cuk$Yv*g4KttLy@W zceK0Q@0s859}o7rI|Sj_EAeeD+E zjO2ao>U@3e1XEz*?Zt`r)(1BsEuI^=*g}wNrz}L$T?!4j~ z6%EO^X5n%GVe(i!lT(q;8W@TDPU9K`P{Wvx%L%&P$6|vdQghIpN@`$oI^424b=ZCk z=E17r2`xhE{#Cv+8u%&A&*xTIG(O^ z64BBrW5~aHGlZl=C(LP1mX+i&m|&AMVM8ixB1s2R_bUwBd#|%=dz1~DD3OVh@=a>$ zZ{Ycw>B@%b*m-Iox-hwLgJ80+n*NXmBfSrMANTI|8uw4vW@{Fzb>f;?_J^rP7erN~&sNzNIrOu| z8&`j}L;4in5by*e9~MCaO*>390}RsHt!bSzYav1#qiNbitqWPnNSKLC!H^3yIA*|@ z!y3r>oipWZO+zbu$`~!nrV$}4S|b_?($lLaTIMJva9@5_Hs-b_XtLRgU1zL08f3$C zWsW83T^?E(U34a(vg|$z_~`7c9NE$a&rL`3Ezu_UA?mqIhE>`H9?WAa2bEW_3duvU zU~4jFJ*RUH@sx*Y6O~u+ZiFKbecpnB!y5xslhw)U)KB?U^!HiSH`I4h-p7c+!_6c3 z$bFa(iW>iI)a0nC{Lj$scZAw@3iQ}I+F7uQ;sM;I9p+Ezr4w1U_)1L6++MKnEZ@Yg-Zv)tzpC;3aBqvh;NAX(Pu{o~*o9)3Xe7yK@eLr-(&NJC^BbaeR0W=Pc_H5}}sUl^(i4;bXLgA7KhV_6u|hE6vA#PaeGDA0zy`p<{G`P1RC{j?q$e z=or28cYKx9RR0*^ey#kRipQrI9HXzJruxSy^#~qDD-Mx)aEKCoL-Z}Z86(nHvM&!& zwttAeXMm27MWky-ecij??Gp)~d_h#UKdaVk?x7O6R+dR!%Io;z;& zhs-_h*O?$@gNPGayE7+gjn!13#HEGTWNk4yvaD9qmc=5BvLv&Gxk{ub881`uQtBzi z!}mOemsjxe5nfmqhWyEzR#c>Ey#Hy)z*MWXxL8`Uq`3GF9dDL`)vD_cJfQ2DOYL|Y zCz;(YZP;M9uW{ndr|{QK=Mzsjotclg@b)WKtINfzg@KQ*yrzd<;;-tZ{55+&Qhv_Y zq`^HA_zk{B`uf2>D*_0Kz!yo}6ya5nYbC+IND zscTE|tzA!LcRiQa^~&t7cZ!R;KDx8(%f($xKN4BI;z;tUBjeW`nflO?IYsqHN;e+4 zZ)+V526No7$Aq@ULId{N!dHz9JyaWc0mfXgWd@0saM_{;e{P8tj_^e{&1AV@xZ5&b zvD_GCxy5X;#keig<1DihEc22qKOg0`lv*rHQZ1F~mX+7LE%wot2gg_(<1CN-^i|6i z;T1v(Cqj@Vy)X;Hp-?zN&ZN#ow%s-NW*FJ5%@vN4W<1ZkY>z5wXYdLTCCx(c8zHyi zQa{2rb4zwhxVSe)?6@OEd|{mUyUF59>fdKIi?7WW|J6qTg7{VqQ>w!zSC1&3RBg$u z9y_6W(!^?8p|yHuR&~jZ{vNkcm!hr8c>Wm-_WkBJ{GS2F0`>SAz%X10_-AnEF3iIL zHVY25gbB-`FluWg=}NBc8sGJD?^K~{DsDs?RXw#U()oN>^4838u=&fEm8X@EMY7+q z@|>@eFgE=5IabKjC^CJKnaqhHC90&9CXl7YN#wp!#BL!pm24W;T>NMJ|a_0lLcCsMM9r=wFynSQY80qqWlv8$NVWtB;c?BD>{V6aqC?%3B5qP| pnJjKA$`&7=B{t0$pSnTresources[SPRITE_RESOURCE_CHAR], TRUE, NNS_G2D_VRAM_TYPE_2DMAIN, template->resources[SPRITE_RESOURCE_CHAR]); - SpriteSystem_LoadPaletteBufferFromOpenNarc(palette, PLTTBUF_MAIN_OBJ, spriteSys, spriteMan, narc, 71, FALSE, 1, NNS_G2D_VRAM_TYPE_2DMAIN, HEALTHBAR_MAIN_PALETTE_RESID); + SpriteSystem_LoadPaletteBufferFromOpenNarc(palette, PLTTBUF_MAIN_OBJ, spriteSys, spriteMan, narc, healthbox_primary_NCLR, FALSE, 1, NNS_G2D_VRAM_TYPE_2DMAIN, HEALTHBAR_MAIN_PALETTE_RESID); SpriteSystem_LoadCellResObjFromOpenNarc(spriteSys, spriteMan, narc, template->resources[SPRITE_RESOURCE_CELL], TRUE, template->resources[SPRITE_RESOURCE_CELL]); SpriteSystem_LoadAnimResObjFromOpenNarc(spriteSys, spriteMan, narc, template->resources[SPRITE_RESOURCE_ANIM], TRUE, template->resources[SPRITE_RESOURCE_ANIM]); - SpriteSystem_LoadPaletteBufferFromOpenNarc(palette, PLTTBUF_MAIN_OBJ, spriteSys, spriteMan, narc, 71, FALSE, 1, NNS_G2D_VRAM_TYPE_2DMAIN, HEALTHBAR_EFFECTS_PALETTE_RESID); + SpriteSystem_LoadPaletteBufferFromOpenNarc(palette, PLTTBUF_MAIN_OBJ, spriteSys, spriteMan, narc, healthbox_primary_NCLR, FALSE, 1, NNS_G2D_VRAM_TYPE_2DMAIN, HEALTHBAR_EFFECTS_PALETTE_RESID); if (healthbarType == HEALTHBAR_TYPE_SAFARI_ZONE || healthbarType == HEALTHBAR_TYPE_PAL_PARK) { - SpriteSystem_LoadPaletteBufferFromOpenNarc(palette, PLTTBUF_MAIN_OBJ, spriteSys, spriteMan, narc, 81, 0, 1, NNS_G2D_VRAM_TYPE_2DMAIN, HEALTHBAR_SAFARI_PALETTE_RESID); + SpriteSystem_LoadPaletteBufferFromOpenNarc(palette, PLTTBUF_MAIN_OBJ, spriteSys, spriteMan, narc, healthbox_safari_NCLR, 0, 1, NNS_G2D_VRAM_TYPE_2DMAIN, HEALTHBAR_SAFARI_PALETTE_RESID); } } @@ -628,7 +598,7 @@ static void Healthbar_LoadMainPalette(SpriteSystem *spriteSys, SpriteManager *ha if (template != NULL) { SpriteSystem_LoadCharResObjFromOpenNarc(spriteSys, handler, narc, template->resources[SPRITE_RESOURCE_CHAR], TRUE, NNS_G2D_VRAM_TYPE_2DMAIN, template->resources[SPRITE_RESOURCE_CHAR]); - SpriteSystem_LoadPaletteBufferFromOpenNarc(palette, PLTTBUF_MAIN_OBJ, spriteSys, handler, narc, 71, FALSE, 1, NNS_G2D_VRAM_TYPE_2DMAIN, HEALTHBAR_MAIN_PALETTE_RESID); + SpriteSystem_LoadPaletteBufferFromOpenNarc(palette, PLTTBUF_MAIN_OBJ, spriteSys, handler, narc, healthbox_primary_NCLR, FALSE, 1, NNS_G2D_VRAM_TYPE_2DMAIN, HEALTHBAR_MAIN_PALETTE_RESID); SpriteSystem_LoadCellResObjFromOpenNarc(spriteSys, handler, narc, template->resources[SPRITE_RESOURCE_CELL], TRUE, template->resources[SPRITE_RESOURCE_CELL]); SpriteSystem_LoadAnimResObjFromOpenNarc(spriteSys, handler, narc, template->resources[SPRITE_RESOURCE_ANIM], TRUE, template->resources[SPRITE_RESOURCE_ANIM]); } diff --git a/src/battle/ov16_02268520.c b/src/battle/ov16_02268520.c index 7780c2e586..9275ded446 100644 --- a/src/battle/ov16_02268520.c +++ b/src/battle/ov16_02268520.c @@ -1,7 +1,6 @@ #include "battle/ov16_02268520.h" -#include -#include +#include "generated/battle_terrains.h" #include "struct_decls/battle_system.h" @@ -12,161 +11,131 @@ #include "palette.h" #include "sprite_system.h" -static const SpriteTemplate Unk_ov16_022700CC[] = { +#include "res/graphics/battle/sprites.naix" + +static const SpriteTemplate sTerrainSpriteTemplates[] = { { - 0x150, - 0x88, - 0x0, - 0x0, - 0x3E8, - 0x0, - NNS_G2D_VRAM_TYPE_2DMAIN, - { 0x4E2D, 0x4E29, 0x4E25, 0x4E25, 0xFFFFFFFF, 0xFFFFFFFF }, - 0x3, - 0x0, + .x = 336, + .y = 136, + .z = 0, + .animIdx = 0, + .priority = 1000, + .plttIdx = 0, + .vramType = NNS_G2D_VRAM_TYPE_2DMAIN, + .resources = { + 0x4E2D, + 0x4E29, + 0x4E25, + 0x4E25, + 0xFFFFFFFF, + 0xFFFFFFFF, + }, + .bgPriority = 3, + .vramTransfer = FALSE, }, { - 0xFFFFFFFFFFFFFFB0, - 0x58, - 0x0, - 0x0, - 0x3E8, - 0x0, - NNS_G2D_VRAM_TYPE_2DMAIN, - { 0x4E2E, 0x4E29, 0x4E26, 0x4E26, 0xFFFFFFFF, 0xFFFFFFFF }, - 0x3, - 0x0, + .x = -80, + .y = 88, + .z = 0, + .animIdx = 0, + .priority = 1000, + .plttIdx = 0, + .vramType = NNS_G2D_VRAM_TYPE_2DMAIN, + .resources = { + 0x4E2E, + 0x4E29, + 0x4E26, + 0x4E26, + 0xFFFFFFFF, + 0xFFFFFFFF, + }, + .bgPriority = 3, + .vramTransfer = FALSE, }, }; -__attribute__((aligned(4))) static const u16 Unk_ov16_0227009C[] = { - 0x87, - 0x91, - 0x7F, - 0x97, - 0x8B, - 0x95, - 0x8D, - 0x85, - 0x89, - 0x8F, - 0x93, - 0x97, - 0x99, - 0x9B, - 0x9D, - 0x9F, - 0xA1, - 0xA3, - 0xA5, - 0xA7, - 0xA9, - 0xAB, - 0xAD, - 0xAF +// clang-format off +ALIGN_4 static const u16 sTerrainSpriteSource_PlayerSide[TERRAIN_MAX] = { + [TERRAIN_PLAIN] = terrain_path_player_NCGR_lz, + [TERRAIN_SAND] = terrain_sand_player_NCGR_lz, + [TERRAIN_GRASS] = terrain_grass_player_NCGR_lz, + [TERRAIN_PUDDLE] = terrain_path_puddles_player_NCGR_lz, + [TERRAIN_MOUNTAIN] = terrain_rocky_player_NCGR_lz, + [TERRAIN_CAVE] = terrain_cave_player_NCGR_lz, + [TERRAIN_SNOW] = terrain_snow_player_NCGR_lz, + [TERRAIN_WATER] = terrain_water_player_NCGR_lz, + [TERRAIN_ICE] = terrain_ice_player_NCGR_lz, + [TERRAIN_BUILDING] = terrain_indoors_player_NCGR_lz, + [TERRAIN_GREAT_MARSH] = terrain_mud_player_NCGR_lz, + [TERRAIN_BRIDGE] = terrain_path_puddles_player_NCGR_lz, + [TERRAIN_AARON] = terrain_league_aaron_player_NCGR_lz, + [TERRAIN_BERTHA] = terrain_league_bertha_player_NCGR_lz, + [TERRAIN_FLINT] = terrain_league_flint_player_NCGR_lz, + [TERRAIN_LUCIAN] = terrain_league_lucian_player_NCGR_lz, + [TERRAIN_CYNTHIA] = terrain_league_cynthia_player_NCGR_lz, + [TERRAIN_DISTORTION_WORLD] = terrain_distortion_world_player_NCGR_lz, + [TERRAIN_BATTLE_TOWER] = terrain_battle_tower_player_NCGR_lz, + [TERRAIN_BATTLE_FACTORY] = terrain_battle_factory_player_NCGR_lz, + [TERRAIN_BATTLE_ARCADE] = terrain_battle_arcade_player_NCGR_lz, + [TERRAIN_BATTLE_CASTLE] = terrain_battle_castle_player_NCGR_lz, + [TERRAIN_BATTLE_HALL] = terrain_battle_hall_player_NCGR_lz, + [TERRAIN_GIRATINA] = terrain_giratina_player_NCGR_lz, }; -__attribute__((aligned(4))) static const u16 Unk_ov16_0227006C[] = { - 0x88, - 0x92, - 0x82, - 0x98, - 0x8C, - 0x96, - 0x8E, - 0x86, - 0x8A, - 0x90, - 0x94, - 0x94, - 0x9A, - 0x9C, - 0x9E, - 0xA0, - 0xA2, - 0xA4, - 0xA6, - 0xA8, - 0xAA, - 0xAC, - 0xAE, - 0xB0 +ALIGN_4 static const u16 sTerrainSpriteSource_EnemySide[TERRAIN_MAX] = { + [TERRAIN_PLAIN] = terrain_path_enemy_NCGR_lz, + [TERRAIN_SAND] = terrain_sand_enemy_NCGR_lz, + [TERRAIN_GRASS] = terrain_grass_enemy_NCGR_lz, + [TERRAIN_PUDDLE] = terrain_path_puddles_enemy_NCGR_lz, + [TERRAIN_MOUNTAIN] = terrain_rocky_enemy_NCGR_lz, + [TERRAIN_CAVE] = terrain_cave_enemy_NCGR_lz, + [TERRAIN_SNOW] = terrain_snow_enemy_NCGR_lz, + [TERRAIN_WATER] = terrain_water_enemy_NCGR_lz, + [TERRAIN_ICE] = terrain_ice_enemy_NCGR_lz, + [TERRAIN_BUILDING] = terrain_indoors_enemy_NCGR_lz, + [TERRAIN_GREAT_MARSH] = terrain_mud_enemy_NCGR_lz, + [TERRAIN_BRIDGE] = terrain_mud_enemy_NCGR_lz, + [TERRAIN_AARON] = terrain_league_aaron_enemy_NCGR_lz, + [TERRAIN_BERTHA] = terrain_league_bertha_enemy_NCGR_lz, + [TERRAIN_FLINT] = terrain_league_flint_enemy_NCGR_lz, + [TERRAIN_LUCIAN] = terrain_league_lucian_enemy_NCGR_lz, + [TERRAIN_CYNTHIA] = terrain_league_cynthia_enemy_NCGR_lz, + [TERRAIN_DISTORTION_WORLD] = terrain_distortion_world_enemy_NCGR_lz, + [TERRAIN_BATTLE_TOWER] = terrain_battle_tower_enemy_NCGR_lz, + [TERRAIN_BATTLE_FACTORY] = terrain_battle_factory_enemy_NCGR_lz, + [TERRAIN_BATTLE_ARCADE] = terrain_battle_arcade_enemy_NCGR_lz, + [TERRAIN_BATTLE_CASTLE] = terrain_battle_castle_enemy_NCGR_lz, + [TERRAIN_BATTLE_HALL] = terrain_battle_hall_enemy_NCGR_lz, + [TERRAIN_GIRATINA] = terrain_giratina_enemy_NCGR_lz, }; -__attribute__((aligned(4))) static const u16 Unk_ov16_02270134[][3] = { - 0x7, - 0x8, - 0x9, - 0x16, - 0x17, - 0x18, - 0x1, - 0x2, - 0x3, - 0x1F, - 0x20, - 0x21, - 0xD, - 0xE, - 0xF, - 0x1C, - 0x1D, - 0x1E, - 0x10, - 0x11, - 0x12, - 0x4, - 0x5, - 0x6, - 0xA, - 0xB, - 0xC, - 0x13, - 0x14, - 0x15, - 0x19, - 0x1A, - 0x1B, - 0x19, - 0x1A, - 0x1B, - 0x22, - 0x23, - 0x24, - 0x25, - 0x26, - 0x27, - 0x28, - 0x29, - 0x2A, - 0x2B, - 0x2C, - 0x2D, - 0x2E, - 0x2F, - 0x30, - 0x31, - 0x32, - 0x33, - 0x34, - 0x35, - 0x36, - 0x37, - 0x38, - 0x39, - 0x3A, - 0x3B, - 0x3C, - 0x3D, - 0x3E, - 0x3F, - 0x40, - 0x41, - 0x42, - 0x43, - 0x44, - 0x45 +ALIGN_4 static const u16 sTerrainPaletteSource[TERRAIN_MAX][3] = { + [TERRAIN_PLAIN] = { terrain_path_day_NCLR, terrain_path_evening_NCLR, terrain_path_night_NCLR }, + [TERRAIN_SAND] = { terrain_sand_day_NCLR, terrain_sand_evening_NCLR, terrain_sand_night_NCLR }, + [TERRAIN_GRASS] = { terrain_grass_day_NCLR, terrain_grass_evening_NCLR, terrain_grass_night_NCLR }, + [TERRAIN_PUDDLE] = { terrain_path_puddles_day_NCLR, terrain_path_puddles_evening_NCLR, terrain_path_puddles_night_NCLR }, + [TERRAIN_MOUNTAIN] = { terrain_rocky_day_NCLR, terrain_rocky_evening_NCLR, terrain_rocky_night_NCLR }, + [TERRAIN_CAVE] = { terrain_cave_all_NCLR, terrain_cave_all_NCLR_1, terrain_cave_all_NCLR_2 }, + [TERRAIN_SNOW] = { terrain_snow_day_NCLR, terrain_snow_evening_NCLR, terrain_snow_night_NCLR }, + [TERRAIN_WATER] = { terrain_water_day_NCLR, terrain_water_evening_NCLR, terrain_water_night_NCLR }, + [TERRAIN_ICE] = { terrain_ice_day_NCLR, terrain_ice_evening_NCLR, terrain_ice_night_NCLR }, + [TERRAIN_BUILDING] = { terrain_indoors_all_NCLR, terrain_indoors_all_NCLR_1, terrain_indoors_all_NCLR_2 }, + [TERRAIN_GREAT_MARSH] = { terrain_mud_day_NCLR, terrain_mud_evening_NCLR, terrain_mud_night_NCLR }, + [TERRAIN_BRIDGE] = { terrain_mud_day_NCLR, terrain_mud_evening_NCLR, terrain_mud_night_NCLR }, + [TERRAIN_AARON] = { terrain_league_aaron_all_NCLR, terrain_league_aaron_all_NCLR_1, terrain_league_aaron_all_NCLR_2 }, + [TERRAIN_BERTHA] = { terrain_league_bertha_all_NCLR, terrain_league_bertha_all_NCLR_1, terrain_league_bertha_all_NCLR_2 }, + [TERRAIN_FLINT] = { terrain_league_flint_all_NCLR, terrain_league_flint_all_NCLR_1, terrain_league_flint_all_NCLR_2 }, + [TERRAIN_LUCIAN] = { terrain_league_lucian_all_NCLR, terrain_league_lucian_all_NCLR_1, terrain_league_lucian_all_NCLR_2 }, + [TERRAIN_CYNTHIA] = { terrain_league_cynthia_all_NCLR, terrain_league_cynthia_all_NCLR_1, terrain_league_cynthia_all_NCLR_2 }, + [TERRAIN_DISTORTION_WORLD] = { terrain_distortion_world_all_NCLR, terrain_distortion_world_all_NCLR_1, terrain_distortion_world_all_NCLR_2 }, + [TERRAIN_BATTLE_TOWER] = { terrain_battle_tower_all_NCLR, terrain_battle_tower_all_NCLR_1, terrain_battle_tower_all_NCLR_2 }, + [TERRAIN_BATTLE_FACTORY] = { terrain_battle_factory_all_NCLR, terrain_battle_factory_all_NCLR_1, terrain_battle_factory_all_NCLR_2 }, + [TERRAIN_BATTLE_ARCADE] = { terrain_battle_arcade_all_NCLR, terrain_battle_arcade_all_NCLR_1, terrain_battle_arcade_all_NCLR_2 }, + [TERRAIN_BATTLE_CASTLE] = { terrain_battle_castle_all_NCLR, terrain_battle_castle_all_NCLR_1, terrain_battle_castle_all_NCLR_2 }, + [TERRAIN_BATTLE_HALL] = { terrain_battle_hall_all_NCLR, terrain_battle_hall_all_NCLR_1, terrain_battle_hall_all_NCLR_2 }, + [TERRAIN_GIRATINA] = { terrain_giratina_all_NCLR, terrain_giratina_all_NCLR_1, terrain_giratina_all_NCLR_2 }, }; +// clang-format on void ov16_02268520(UnkStruct_ov16_02268520 *param0) { @@ -179,27 +148,27 @@ void ov16_02268520(UnkStruct_ov16_02268520 *param0) v0 = BattleSystem_GetSpriteSystem(param0->unk_04); v1 = BattleSystem_GetSpriteManager(param0->unk_04); v9 = BattleSystem_GetBackgroundTimeOffset(param0->unk_04); - v2 = &Unk_ov16_022700CC[param0->unk_08]; + v2 = &sTerrainSpriteTemplates[param0->unk_08]; if (param0->unk_08 == 0) { - v3 = Unk_ov16_0227009C[param0->unk_09]; + v3 = sTerrainSpriteSource_PlayerSide[param0->unk_09]; v4 = 20013; - v5 = 128; + v5 = terrain_player_cell_NCER_lz; v6 = 20005; - v7 = 129; + v7 = terrain_player_anim_NANR_lz; v8 = 20005; } else { - v3 = Unk_ov16_0227006C[param0->unk_09]; + v3 = sTerrainSpriteSource_EnemySide[param0->unk_09]; v4 = 20014; - v5 = 131; + v5 = terrain_enemy_cell_NCER_lz; v6 = 20006; - v7 = 132; + v7 = terrain_enemy_anim_NANR_lz; v8 = 20006; } SpriteSystem_LoadCharResObjFromOpenNarc(v0, v1, v10, v3, TRUE, NNS_G2D_VRAM_TYPE_2DMAIN, v4); - SpriteSystem_LoadPaletteBufferFromOpenNarc(BattleSystem_GetPaletteData(param0->unk_04), PLTTBUF_MAIN_OBJ, v0, v1, v10, Unk_ov16_02270134[param0->unk_09][v9], FALSE, 1, NNS_G2D_VRAM_TYPE_2DMAIN, 20009); - PaletteData_LoadBufferFromFileStart(BattleSystem_GetPaletteData(param0->unk_04), NARC_INDEX_BATTLE__GRAPHIC__PL_BATT_OBJ, Unk_ov16_02270134[param0->unk_09][v9], 5, PLTTBUF_MAIN_BG, 0x20, 0x7 * 0x10); + SpriteSystem_LoadPaletteBufferFromOpenNarc(BattleSystem_GetPaletteData(param0->unk_04), PLTTBUF_MAIN_OBJ, v0, v1, v10, sTerrainPaletteSource[param0->unk_09][v9], FALSE, 1, NNS_G2D_VRAM_TYPE_2DMAIN, 20009); + PaletteData_LoadBufferFromFileStart(BattleSystem_GetPaletteData(param0->unk_04), NARC_INDEX_BATTLE__GRAPHIC__PL_BATT_OBJ, sTerrainPaletteSource[param0->unk_09][v9], 5, PLTTBUF_MAIN_BG, 0x20, 0x7 * 0x10); SpriteSystem_LoadCellResObjFromOpenNarc(v0, v1, v10, v5, TRUE, v6); SpriteSystem_LoadAnimResObjFromOpenNarc(v0, v1, v10, v7, TRUE, v8); NARC_dtor(v10); @@ -213,7 +182,7 @@ void ov16_0226862C(UnkStruct_ov16_02268520 *param0) v0 = BattleSystem_GetSpriteSystem(param0->unk_04); v1 = BattleSystem_GetSpriteManager(param0->unk_04); - v2 = &Unk_ov16_022700CC[param0->unk_08]; + v2 = &sTerrainSpriteTemplates[param0->unk_08]; param0->unk_00 = SpriteSystem_NewSprite(v0, v1, v2); Sprite_TickFrame(param0->unk_00->sprite); @@ -269,8 +238,8 @@ void ov16_022686CC(UnkStruct_ov16_02268520 *param0, BattleSystem *battleSys, u16 param0->unk_08 = param2; param0->unk_09 = param3; - if (param3 >= 24) { - GF_ASSERT(0); + if (param3 >= TERRAIN_MAX) { + GF_ASSERT(FALSE); param0->unk_09 = 0; } diff --git a/src/battle_anim/ov12_02235E94.c b/src/battle_anim/ov12_02235E94.c index c0d0581a2b..dbb3a68a31 100644 --- a/src/battle_anim/ov12_02235E94.c +++ b/src/battle_anim/ov12_02235E94.c @@ -31,6 +31,8 @@ #include "unk_0202C9F4.h" #include "unk_02097B18.h" +#include "res/graphics/battle/sprites.naix" + typedef struct { int unk_00; int unk_04; @@ -119,28 +121,30 @@ static BOOL ov12_02236F10(BallRotation *param0); static BOOL ov12_02237694(BallRotation *param0); static BOOL ov12_02237474(BallRotation *param0); -static const int Unk_ov12_0223AF00[][4] = { - { 0x120, 0x5C, 0x11F, 0x11E }, - { 0x123, 0x5D, 0x122, 0x121 }, - { 0x126, 0x5E, 0x125, 0x124 }, - { 0x11D, 0x5B, 0x11C, 0x11B }, - { 0x129, 0x5F, 0x128, 0x127 }, - { 0x12C, 0x60, 0x12B, 0x12A }, - { 0x12F, 0x61, 0x12E, 0x12D }, - { 0x132, 0x62, 0x131, 0x130 }, - { 0x135, 0x63, 0x134, 0x133 }, - { 0x138, 0x64, 0x137, 0x136 }, - { 0x13B, 0x65, 0x13A, 0x139 }, - { 0x13E, 0x66, 0x13D, 0x13C }, - { 0x144, 0x68, 0x143, 0x142 }, - { 0x147, 0x69, 0x146, 0x145 }, - { 0x141, 0x67, 0x140, 0x13F }, - { 0x14A, 0x6A, 0x149, 0x148 }, - { 0x14D, 0x6B, 0x14C, 0x14B }, - { 0x153, 0x6D, 0x152, 0x151 }, - { 0x150, 0x6C, 0x14F, 0x14E }, - { 0x150, 0x6C, 0x14F, 0x14E } +// clang-format off +static const int sBallThrowGraphics[][4] = { + { ball_throws_master_ball_NCGR_lz, ball_throws_master_ball_NCLR, ball_throws_shared_cell_NCER_lz_2, ball_throws_shared_anim_NANR_lz_1 }, + { ball_throws_ultra_ball_NCGR_lz, ball_throws_ultra_ball_NCLR, ball_throws_shared_cell_NCER_lz_3, ball_throws_shared_anim_NANR_lz_2 }, + { ball_throws_great_ball_NCGR_lz, ball_throws_great_ball_NCLR, ball_throws_shared_cell_NCER_lz_4, ball_throws_shared_anim_NANR_lz_3 }, + { ball_throws_poke_ball_NCGR_lz, ball_throws_poke_ball_NCLR, ball_throws_shared_cell_NCER_lz_1, ball_throws_shared_anim_NANR_lz }, + { ball_throws_safari_ball_NCGR_lz, ball_throws_safari_ball_NCLR, ball_throws_shared_cell_NCER_lz_5, ball_throws_shared_anim_NANR_lz_4 }, + { ball_throws_net_ball_NCGR_lz, ball_throws_net_ball_NCLR, ball_throws_shared_cell_NCER_lz_6, ball_throws_shared_anim_NANR_lz_5 }, + { ball_throws_dive_ball_NCGR_lz, ball_throws_dive_ball_NCLR, ball_throws_shared_cell_NCER_lz_7, ball_throws_shared_anim_NANR_lz_6 }, + { ball_throws_nest_ball_NCGR_lz, ball_throws_nest_ball_NCLR, ball_throws_shared_cell_NCER_lz_8, ball_throws_shared_anim_NANR_lz_7 }, + { ball_throws_repeat_ball_NCGR_lz, ball_throws_repeat_ball_NCLR, ball_throws_shared_cell_NCER_lz_9, ball_throws_shared_anim_NANR_lz_8 }, + { ball_throws_timer_ball_NCGR_lz, ball_throws_timer_ball_NCLR, ball_throws_shared_cell_NCER_lz_10, ball_throws_shared_anim_NANR_lz_9 }, + { ball_throws_luxury_ball_NCGR_lz, ball_throws_luxury_ball_NCLR, ball_throws_shared_cell_NCER_lz_11, ball_throws_shared_anim_NANR_lz_10 }, + { ball_throws_premier_ball_NCGR_lz, ball_throws_premier_ball_NCLR, ball_throws_shared_cell_NCER_lz_12, ball_throws_shared_anim_NANR_lz_11 }, + { ball_throws_dusk_ball_NCGR_lz, ball_throws_dusk_ball_NCLR, ball_throws_shared_cell_NCER_lz_14, ball_throws_quick_dusk_heal_anim_NANR_lz_1 }, + { ball_throws_heal_ball_NCGR_lz, ball_throws_heal_ball_NCLR, ball_throws_shared_cell_NCER_lz_15, ball_throws_quick_dusk_heal_anim_NANR_lz_2 }, + { ball_throws_quick_ball_NCGR_lz, ball_throws_quick_ball_NCLR, ball_throws_shared_cell_NCER_lz_13, ball_throws_quick_dusk_heal_anim_NANR_lz }, + { ball_throws_cherish_ball_NCGR_lz, ball_throws_cherish_ball_NCLR, ball_throws_shared_cell_NCER_lz_16, ball_throws_shared_anim_NANR_lz_12 }, + { ball_throws_park_ball_NCGR_lz, ball_throws_park_ball_NCLR, ball_throws_shared_cell_NCER_lz_17, ball_throws_shared_anim_NANR_lz_13 }, + { ball_throws_mud_NCGR_lz, ball_throws_mud_NCLR, ball_throws_mud_cell_NCER_lz, ball_throws_mud_anim_NANR_lz }, + { ball_throws_bait_NCGR_lz, ball_throws_bait_NCLR, ball_throws_shared_cell_NCER_lz_18, ball_throws_bait_anim_NANR_lz }, + { ball_throws_bait_NCGR_lz, ball_throws_bait_NCLR, ball_throws_shared_cell_NCER_lz_18, ball_throws_bait_anim_NANR_lz }, }; +// clang-format on static const int Unk_ov12_0223AD70[][2] = { { 0x1, 0x5 }, @@ -319,7 +323,7 @@ static int ov12_02235FB4(int param0) static int ov12_02235FC8(int param0, int param1) { int v0 = ov12_02235E94(param0); - return Unk_ov12_0223AF00[v0][param1]; + return sBallThrowGraphics[v0][param1]; } UnkStruct_ov12_02235FE0 *ov12_02235FE0(enum HeapID heapID) diff --git a/src/type_icon.c b/src/type_icon.c index 5d98d40993..3e44668303 100644 --- a/src/type_icon.c +++ b/src/type_icon.c @@ -1,79 +1,82 @@ #include "type_icon.h" -#include -#include - #include "constants/narc.h" #include "generated/move_classes.h" - -#include "pch/global_pch.h" +#include "generated/pokemon_contest_types.h" +#include "generated/pokemon_types.h" #include "palette.h" #include "sprite_system.h" +#include "res/graphics/battle/sprites.naix" + +// clang-format off ALIGN_4 static const u32 sMoveTypeIconIndex[] = { - 0xEA, // 0 to 17 are pokemon types - 0xE1, - 0xE3, - 0xEB, - 0xE5, - 0xED, - 0xE7, - 0xE4, - 0xEE, - 0xEC, - 0xE2, - 0xF1, - 0xE9, - 0xDE, - 0xDF, - 0xE6, - 0xDD, - 0xE0, - 0xF0, // 18 to 22 are contest types - 0xDB, - 0xDC, - 0xE8, - 0xEF + [TYPE_NORMAL] = type_icons_normal_NCGR_lz, + [TYPE_FIGHTING] = type_icons_fighting_NCGR_lz, + [TYPE_FLYING] = type_icons_flying_NCGR_lz, + [TYPE_POISON] = type_icons_poison_NCGR_lz, + [TYPE_GROUND] = type_icons_ground_NCGR_lz, + [TYPE_ROCK] = type_icons_rock_NCGR_lz, + [TYPE_BUG] = type_icons_bug_NCGR_lz, + [TYPE_GHOST] = type_icons_ghost_NCGR_lz, + [TYPE_STEEL] = type_icons_steel_NCGR_lz, + [TYPE_MYSTERY] = type_icons_mystery_NCGR_lz, + [TYPE_FIRE] = type_icons_fire_NCGR_lz, + [TYPE_WATER] = type_icons_water_NCGR_lz, + [TYPE_GRASS] = type_icons_grass_NCGR_lz, + [TYPE_ELECTRIC] = type_icons_electric_NCGR_lz, + [TYPE_PSYCHIC] = type_icons_psychic_NCGR_lz, + [TYPE_ICE] = type_icons_ice_NCGR_lz, + [TYPE_DRAGON] = type_icons_dragon_NCGR_lz, + [TYPE_DARK] = type_icons_dark_NCGR_lz, + + [NUM_POKEMON_TYPES + CONTEST_TYPE_COOL] = type_icons_cool_NCGR_lz, + [NUM_POKEMON_TYPES + CONTEST_TYPE_BEAUTY] = type_icons_beauty_NCGR_lz, + [NUM_POKEMON_TYPES + CONTEST_TYPE_CUTE] = type_icons_cute_NCGR_lz, + [NUM_POKEMON_TYPES + CONTEST_TYPE_SMART] = type_icons_smart_NCGR_lz, + [NUM_POKEMON_TYPES + CONTEST_TYPE_TOUGH] = type_icons_tough_NCGR_lz, }; ALIGN_4 static const u8 sMoveTypeIconPaletteIndex[] = { - 0x0, // 0 to 17 are pokemon types - 0x0, - 0x1, - 0x1, - 0x0, - 0x0, - 0x2, - 0x1, - 0x0, - 0x2, - 0x0, - 0x1, - 0x2, - 0x0, - 0x1, - 0x1, - 0x2, - 0x0, - 0x0, // 18 to 22 are contest types - 0x1, - 0x1, - 0x2, - 0x0 + [TYPE_NORMAL] = 0, + [TYPE_FIGHTING] = 0, + [TYPE_FLYING] = 1, + [TYPE_POISON] = 1, + [TYPE_GROUND] = 0, + [TYPE_ROCK] = 0, + [TYPE_BUG] = 2, + [TYPE_GHOST] = 1, + [TYPE_STEEL] = 0, + [TYPE_MYSTERY] = 2, + [TYPE_FIRE] = 0, + [TYPE_WATER] = 1, + [TYPE_GRASS] = 2, + [TYPE_ELECTRIC] = 0, + [TYPE_PSYCHIC] = 1, + [TYPE_ICE] = 1, + [TYPE_DRAGON] = 2, + [TYPE_DARK] = 0, + + [NUM_POKEMON_TYPES + CONTEST_TYPE_COOL] = 0, + [NUM_POKEMON_TYPES + CONTEST_TYPE_BEAUTY] = 1, + [NUM_POKEMON_TYPES + CONTEST_TYPE_CUTE] = 1, + [NUM_POKEMON_TYPES + CONTEST_TYPE_SMART] = 2, + [NUM_POKEMON_TYPES + CONTEST_TYPE_TOUGH] = 0, }; ALIGN_4 static const u32 sMoveCategoryIconIndex[] = { - 0xF4, - 0xF6, - 0xF5 + [CLASS_PHYSICAL] = type_icons_physical_NCGR_lz, + [CLASS_SPECIAL] = type_icons_special_NCGR_lz, + [CLASS_STATUS] = type_icons_status_NCGR_lz, }; ALIGN_4 static const u8 sMoveCategoryIconPaletteIndex[] = { - 0x0, - 0x1, - 0x0 + [CLASS_PHYSICAL] = 0, + [CLASS_SPECIAL] = 1, + [CLASS_STATUS] = 0, }; +// clang-format on u32 TypeIcon_GetChar(enum PokemonType moveType) { @@ -83,17 +86,17 @@ u32 TypeIcon_GetChar(enum PokemonType moveType) u32 TypeIcon_GetPlttSrc(void) { - return 74; + return type_icons_shared_NCLR; } u32 TypeIcon_GetCell(void) { - return 242; + return type_icons_cell_NCER_lz; } u32 TypeIcon_GetAnim(void) { - return 243; + return misc_single_frame_anim_NANR_lz_14; } u8 TypeIcon_GetPltt(enum PokemonType moveType) diff --git a/tools/nitroarc/doc/nitroarc.1.adoc b/tools/nitroarc/doc/nitroarc.1.adoc index f2c6280d09..bfd4cf511b 100644 --- a/tools/nitroarc/doc/nitroarc.1.adoc +++ b/tools/nitroarc/doc/nitroarc.1.adoc @@ -102,6 +102,8 @@ evaluated. be replaced by an ASCII underscore in the respective preprocessor token. e.g., a member file located at “/path/to/file” will write “#define path_to_file”, followed by a single ASCII space (‘ ’) and its member index on the same line. + If a member file is included in the archive multiple times, then occurrences + past the first will be suffixed with the number of previous occurrences. *-N, --named*:: Mirror the local filesystem from _DIRECTORY_ in _ARCHIVE_, with _DIRECTORY_ diff --git a/tools/nitroarc/src/opmode_create.c b/tools/nitroarc/src/opmode_create.c index 564895b2b6..5a7979ca5e 100644 --- a/tools/nitroarc/src/opmode_create.c +++ b/tools/nitroarc/src/opmode_create.c @@ -118,10 +118,11 @@ extern int tool_create(const options_t *opts) { return errc; } -static bool strvec_has(const strvec_t *vec, char *s); -static int strvec_grow(strvec_t *vec); -static int strvec_push(strvec_t *vec, char *s); -static int lexicsort(const void *_lhs, const void *_rhs); +static size_t strvec_nhits(const strvec_t *vec, char *s, size_t max_i); +static bool strvec_has(const strvec_t *vec, char *s); +static int strvec_grow(strvec_t *vec); +static int strvec_push(strvec_t *vec, char *s); +static int lexicsort(const void *_lhs, const void *_rhs); #define is_hspace(c) ((c) == ' ' || (c) == '\t' || (c) == '\r') @@ -473,6 +474,22 @@ static char* guardify(const char *name, size_t size) { return guard; } +static char* guardify_nhits(const char *name, size_t size, size_t nhits) { + assert(name); + char *base = guardify(name, size); + if (base == NULL || nhits == 0) return base; + + size = snprintf(NULL, 0, "%s_%zu", base, nhits); + char *suffixed = malloc(size + 1); + + if (suffixed != NULL) { + snprintf(suffixed, size + 1, "%s_%zu", base, nhits); + } + + free(base); + return suffixed; +} + static int write_index(const char *fname, bool index, const strvec_t *files) { assert(fname); assert(files); @@ -505,7 +522,8 @@ static int write_index(const char *fname, bool index, const strvec_t *files) { fprintf(fnaix, "\n"); for (size_t i = 0; i < files->size; i++) { - char *defn = guardify(files->data[i], strlen(files->data[i])); + size_t nhits = strvec_nhits(files, files->data[i], i); + char *defn = guardify_nhits(files->data[i], strlen(files->data[i]), nhits); if (defn == NULL) { free(defn); goto erralloc; } fprintf(fnaix, "#define %s %zu\n", defn, i); @@ -530,6 +548,15 @@ cleanup: return errc; } +static size_t strvec_nhits(const strvec_t *vec, char *s, size_t max_i) { + size_t count = 0; + for (size_t i = 0; i < max_i; i++) { + if (strcmp(vec->data[i], s) == 0) count++; + } + + return count; +} + static bool strvec_has(const strvec_t *vec, char *s) { for (size_t i = 0; i < vec->size; i++) { if (strcmp(vec->data[i], s) == 0) return true;