From 4cbc128c16277eca1707bc09e508aeda700b1891 Mon Sep 17 00:00:00 2001 From: easyaspi314 <6258309+easyaspi314@users.noreply.github.com> Date: Wed, 18 Feb 2026 16:28:18 -0500 Subject: [PATCH] Improve movement data storage Instead of each macro being a ternary (which can't be constant folded), the values are now stored sequentially. Additionally, I use byte instead of int and made the tables static -1300 bytes. --- include/mystery_gift_builder.h | 387 ++++++++++++++++---------------- include/script_var.h | 6 +- source/mystery_gift_builder.cpp | 29 +-- source/script_var.cpp | 9 +- 4 files changed, 218 insertions(+), 213 deletions(-) diff --git a/include/mystery_gift_builder.h b/include/mystery_gift_builder.h index 65f051d..42a7ebc 100644 --- a/include/mystery_gift_builder.h +++ b/include/mystery_gift_builder.h @@ -55,199 +55,200 @@ #define rlist_r7 0b010000001 #define rlist_lr 0b100000000 -#define MOVEMENT_ACTION_FACE_DOWN curr_GBA_rom.is_hoenn() ? 0x0 : 0x0 -#define MOVEMENT_ACTION_FACE_UP curr_GBA_rom.is_hoenn() ? 0x1 : 0x1 -#define MOVEMENT_ACTION_FACE_LEFT curr_GBA_rom.is_hoenn() ? 0x2 : 0x2 -#define MOVEMENT_ACTION_FACE_RIGHT curr_GBA_rom.is_hoenn() ? 0x3 : 0x3 -#define MOVEMENT_ACTION_WALK_SLOW_DOWN curr_GBA_rom.is_hoenn() ? 0x4 : 0xC -#define MOVEMENT_ACTION_WALK_SLOW_UP curr_GBA_rom.is_hoenn() ? 0x5 : 0xD -#define MOVEMENT_ACTION_WALK_SLOW_LEFT curr_GBA_rom.is_hoenn() ? 0x6 : 0xE -#define MOVEMENT_ACTION_WALK_SLOW_RIGHT curr_GBA_rom.is_hoenn() ? 0x7 : 0xF -#define MOVEMENT_ACTION_WALK_NORMAL_DOWN curr_GBA_rom.is_hoenn() ? 0x8 : 0x10 -#define MOVEMENT_ACTION_WALK_NORMAL_UP curr_GBA_rom.is_hoenn() ? 0x9 : 0x11 -#define MOVEMENT_ACTION_WALK_NORMAL_LEFT curr_GBA_rom.is_hoenn() ? 0xA : 0x12 -#define MOVEMENT_ACTION_WALK_NORMAL_RIGHT curr_GBA_rom.is_hoenn() ? 0xB : 0x13 -#define MOVEMENT_ACTION_JUMP_2_DOWN curr_GBA_rom.is_hoenn() ? 0xC : 0x14 -#define MOVEMENT_ACTION_JUMP_2_UP curr_GBA_rom.is_hoenn() ? 0xD : 0x15 -#define MOVEMENT_ACTION_JUMP_2_LEFT curr_GBA_rom.is_hoenn() ? 0xE : 0x16 -#define MOVEMENT_ACTION_JUMP_2_RIGHT curr_GBA_rom.is_hoenn() ? 0xF : 0x17 -#define MOVEMENT_ACTION_DELAY_1 curr_GBA_rom.is_hoenn() ? 0x10 : 0x18 -#define MOVEMENT_ACTION_DELAY_2 curr_GBA_rom.is_hoenn() ? 0x11 : 0x19 -#define MOVEMENT_ACTION_DELAY_4 curr_GBA_rom.is_hoenn() ? 0x12 : 0x1A -#define MOVEMENT_ACTION_DELAY_8 curr_GBA_rom.is_hoenn() ? 0x13 : 0x1B -#define MOVEMENT_ACTION_DELAY_16 curr_GBA_rom.is_hoenn() ? 0x14 : 0x1C -#define MOVEMENT_ACTION_WALK_FAST_DOWN curr_GBA_rom.is_hoenn() ? 0x15 : 0x1D -#define MOVEMENT_ACTION_WALK_FAST_UP curr_GBA_rom.is_hoenn() ? 0x16 : 0x1E -#define MOVEMENT_ACTION_WALK_FAST_LEFT curr_GBA_rom.is_hoenn() ? 0x17 : 0x1F -#define MOVEMENT_ACTION_WALK_FAST_RIGHT curr_GBA_rom.is_hoenn() ? 0x18 : 0x20 -#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN curr_GBA_rom.is_hoenn() ? 0x19 : 0x21 -#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP curr_GBA_rom.is_hoenn() ? 0x1A : 0x22 -#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_LEFT curr_GBA_rom.is_hoenn() ? 0x1B : 0x23 -#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT curr_GBA_rom.is_hoenn() ? 0x1C : 0x24 -#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN curr_GBA_rom.is_hoenn() ? 0x1D : 0x25 -#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP curr_GBA_rom.is_hoenn() ? 0x1E : 0x26 -#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT curr_GBA_rom.is_hoenn() ? 0x1F : 0x27 -#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT curr_GBA_rom.is_hoenn() ? 0x20 : 0x28 -#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN curr_GBA_rom.is_hoenn() ? 0x21 : 0x29 -#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP curr_GBA_rom.is_hoenn() ? 0x22 : 0x2A -#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT curr_GBA_rom.is_hoenn() ? 0x23 : 0x2B -#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT curr_GBA_rom.is_hoenn() ? 0x24 : 0x2C -#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_DOWN curr_GBA_rom.is_hoenn() ? 0x25 : 0x2D -#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_UP curr_GBA_rom.is_hoenn() ? 0x26 : 0x2E -#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_LEFT curr_GBA_rom.is_hoenn() ? 0x27 : 0x2F -#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_RIGHT curr_GBA_rom.is_hoenn() ? 0x28 : 0x30 -#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN curr_GBA_rom.is_hoenn() ? 0x29 : 0x31 -#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP curr_GBA_rom.is_hoenn() ? 0x2A : 0x32 -#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT curr_GBA_rom.is_hoenn() ? 0x2B : 0x33 -#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT curr_GBA_rom.is_hoenn() ? 0x2C : 0x34 -#define MOVEMENT_ACTION_WALK_FASTER_DOWN curr_GBA_rom.is_hoenn() ? 0x2D : 0x35 -#define MOVEMENT_ACTION_WALK_FASTER_UP curr_GBA_rom.is_hoenn() ? 0x2E : 0x36 -#define MOVEMENT_ACTION_WALK_FASTER_LEFT curr_GBA_rom.is_hoenn() ? 0x2F : 0x37 -#define MOVEMENT_ACTION_WALK_FASTER_RIGHT curr_GBA_rom.is_hoenn() ? 0x30 : 0x38 -#define MOVEMENT_ACTION_SLIDE_DOWN curr_GBA_rom.is_hoenn() ? 0x31 : 0x39 -#define MOVEMENT_ACTION_SLIDE_UP curr_GBA_rom.is_hoenn() ? 0x32 : 0x3A -#define MOVEMENT_ACTION_SLIDE_LEFT curr_GBA_rom.is_hoenn() ? 0x33 : 0x3B -#define MOVEMENT_ACTION_SLIDE_RIGHT curr_GBA_rom.is_hoenn() ? 0x34 : 0x3C -#define MOVEMENT_ACTION_PLAYER_RUN_DOWN curr_GBA_rom.is_hoenn() ? 0x35 : 0x3D -#define MOVEMENT_ACTION_PLAYER_RUN_UP curr_GBA_rom.is_hoenn() ? 0x36 : 0x3E -#define MOVEMENT_ACTION_PLAYER_RUN_LEFT curr_GBA_rom.is_hoenn() ? 0x37 : 0x3F -#define MOVEMENT_ACTION_PLAYER_RUN_RIGHT curr_GBA_rom.is_hoenn() ? 0x38 : 0x40 -#define MOVEMENT_ACTION_START_ANIM_IN_DIRECTION curr_GBA_rom.is_hoenn() ? 0x39 : 0x45 -#define MOVEMENT_ACTION_JUMP_SPECIAL_DOWN curr_GBA_rom.is_hoenn() ? 0x3A : 0x46 -#define MOVEMENT_ACTION_JUMP_SPECIAL_UP curr_GBA_rom.is_hoenn() ? 0x3B : 0x47 -#define MOVEMENT_ACTION_JUMP_SPECIAL_LEFT curr_GBA_rom.is_hoenn() ? 0x3C : 0x48 -#define MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT curr_GBA_rom.is_hoenn() ? 0x3D : 0x49 -#define MOVEMENT_ACTION_FACE_PLAYER curr_GBA_rom.is_hoenn() ? 0x3E : 0x4A -#define MOVEMENT_ACTION_FACE_AWAY_PLAYER curr_GBA_rom.is_hoenn() ? 0x3F : 0x4B -#define MOVEMENT_ACTION_LOCK_FACING_DIRECTION curr_GBA_rom.is_hoenn() ? 0x40 : 0x4C -#define MOVEMENT_ACTION_UNLOCK_FACING_DIRECTION curr_GBA_rom.is_hoenn() ? 0x41 : 0x4D -#define MOVEMENT_ACTION_JUMP_DOWN curr_GBA_rom.is_hoenn() ? 0x42 : 0x4E -#define MOVEMENT_ACTION_JUMP_UP curr_GBA_rom.is_hoenn() ? 0x43 : 0x4F -#define MOVEMENT_ACTION_JUMP_LEFT curr_GBA_rom.is_hoenn() ? 0x44 : 0x50 -#define MOVEMENT_ACTION_JUMP_RIGHT curr_GBA_rom.is_hoenn() ? 0x45 : 0x51 -#define MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN curr_GBA_rom.is_hoenn() ? 0x46 : 0x52 -#define MOVEMENT_ACTION_JUMP_IN_PLACE_UP curr_GBA_rom.is_hoenn() ? 0x47 : 0x53 -#define MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT curr_GBA_rom.is_hoenn() ? 0x48 : 0x54 -#define MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT curr_GBA_rom.is_hoenn() ? 0x49 : 0x55 -#define MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP curr_GBA_rom.is_hoenn() ? 0x4A : 0x56 -#define MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN curr_GBA_rom.is_hoenn() ? 0x4B : 0x57 -#define MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT curr_GBA_rom.is_hoenn() ? 0x4C : 0x58 -#define MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT curr_GBA_rom.is_hoenn() ? 0x4D : 0x59 -#define MOVEMENT_ACTION_FACE_ORIGINAL_DIRECTION curr_GBA_rom.is_hoenn() ? 0x4E : 0x5A -#define MOVEMENT_ACTION_NURSE_JOY_BOW_DOWN curr_GBA_rom.is_hoenn() ? 0x4F : 0x5B -#define MOVEMENT_ACTION_ENABLE_JUMP_LANDING_GROUND_EFFECT curr_GBA_rom.is_hoenn() ? 0x50 : 0x5C -#define MOVEMENT_ACTION_DISABLE_JUMP_LANDING_GROUND_EFFECT curr_GBA_rom.is_hoenn() ? 0x51 : 0x5D -#define MOVEMENT_ACTION_DISABLE_ANIMATION curr_GBA_rom.is_hoenn() ? 0x52 : 0x5E -#define MOVEMENT_ACTION_RESTORE_ANIMATION curr_GBA_rom.is_hoenn() ? 0x53 : 0x5F -#define MOVEMENT_ACTION_SET_INVISIBLE curr_GBA_rom.is_hoenn() ? 0x54 : 0x60 -#define MOVEMENT_ACTION_SET_VISIBLE curr_GBA_rom.is_hoenn() ? 0x55 : 0x61 -#define MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK curr_GBA_rom.is_hoenn() ? 0x56 : 0x62 -#define MOVEMENT_ACTION_EMOTE_QUESTION_MARK curr_GBA_rom.is_hoenn() ? 0x57 : 0x63 -#define MOVEMENT_ACTION_EMOTE_HEART curr_GBA_rom.is_hoenn() ? 0x58 : 0xFF -#define MOVEMENT_ACTION_REVEAL_TRAINER curr_GBA_rom.is_hoenn() ? 0x59 : 0x67 -#define MOVEMENT_ACTION_ROCK_SMASH_BREAK curr_GBA_rom.is_hoenn() ? 0x5A : 0x68 -#define MOVEMENT_ACTION_CUT_TREE curr_GBA_rom.is_hoenn() ? 0x5B : 0x69 -#define MOVEMENT_ACTION_SET_FIXED_PRIORITY curr_GBA_rom.is_hoenn() ? 0x5C : 0x6A -#define MOVEMENT_ACTION_CLEAR_FIXED_PRIORITY curr_GBA_rom.is_hoenn() ? 0x5D : 0x6B -#define MOVEMENT_ACTION_INIT_AFFINE_ANIM curr_GBA_rom.is_hoenn() ? 0x5E : 0x6C -#define MOVEMENT_ACTION_CLEAR_AFFINE_ANIM curr_GBA_rom.is_hoenn() ? 0x5F : 0x6D -#define MOVEMENT_ACTION_HIDE_REFLECTION curr_GBA_rom.is_hoenn() ? 0x60 : 0xFF -#define MOVEMENT_ACTION_SHOW_REFLECTION curr_GBA_rom.is_hoenn() ? 0x61 : 0xFF -#define MOVEMENT_ACTION_WALK_DOWN_START_AFFINE curr_GBA_rom.is_hoenn() ? 0x62 : 0x6E -#define MOVEMENT_ACTION_WALK_DOWN_AFFINE curr_GBA_rom.is_hoenn() ? 0x63 : 0x6F -#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN curr_GBA_rom.is_hoenn() ? 0x64 : 0x70 -#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_UP curr_GBA_rom.is_hoenn() ? 0x65 : 0x71 -#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_LEFT curr_GBA_rom.is_hoenn() ? 0x66 : 0x72 -#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT curr_GBA_rom.is_hoenn() ? 0x67 : 0x73 -#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN curr_GBA_rom.is_hoenn() ? 0x68 : 0x74 -#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_UP curr_GBA_rom.is_hoenn() ? 0x69 : 0x75 -#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_LEFT curr_GBA_rom.is_hoenn() ? 0x6A : 0x76 -#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT curr_GBA_rom.is_hoenn() ? 0x6B : 0x77 -#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN curr_GBA_rom.is_hoenn() ? 0x6C : 0x78 -#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_UP curr_GBA_rom.is_hoenn() ? 0x6D : 0x79 -#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_LEFT curr_GBA_rom.is_hoenn() ? 0x6E : 0x7A -#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT curr_GBA_rom.is_hoenn() ? 0x6F : 0x7B -#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN curr_GBA_rom.is_hoenn() ? 0x70 : 0x7C -#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_UP curr_GBA_rom.is_hoenn() ? 0x71 : 0x7D -#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_LEFT curr_GBA_rom.is_hoenn() ? 0x72 : 0x7E -#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT curr_GBA_rom.is_hoenn() ? 0x73 : 0x7F -#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN curr_GBA_rom.is_hoenn() ? 0x74 : 0x80 -#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_UP curr_GBA_rom.is_hoenn() ? 0x75 : 0x81 -#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_LEFT curr_GBA_rom.is_hoenn() ? 0x76 : 0x82 -#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT curr_GBA_rom.is_hoenn() ? 0x77 : 0x83 -#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN curr_GBA_rom.is_hoenn() ? 0x78 : 0x84 -#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_UP curr_GBA_rom.is_hoenn() ? 0x79 : 0x85 -#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_LEFT curr_GBA_rom.is_hoenn() ? 0x7A : 0x86 -#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT curr_GBA_rom.is_hoenn() ? 0x7B : 0x87 -#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN curr_GBA_rom.is_hoenn() ? 0x7C : 0x88 -#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_UP curr_GBA_rom.is_hoenn() ? 0x7D : 0x89 -#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_LEFT curr_GBA_rom.is_hoenn() ? 0x7E : 0x8A -#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT curr_GBA_rom.is_hoenn() ? 0x7F : 0x8B -#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN curr_GBA_rom.is_hoenn() ? 0x80 : 0x8C -#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_UP curr_GBA_rom.is_hoenn() ? 0x81 : 0x8D -#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_LEFT curr_GBA_rom.is_hoenn() ? 0x82 : 0x8E -#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT curr_GBA_rom.is_hoenn() ? 0x83 : 0x8F -#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN curr_GBA_rom.is_hoenn() ? 0x84 : 0x90 -#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP curr_GBA_rom.is_hoenn() ? 0x85 : 0x91 -#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT curr_GBA_rom.is_hoenn() ? 0x86 : 0x92 -#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT curr_GBA_rom.is_hoenn() ? 0x87 : 0x93 -#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN curr_GBA_rom.is_hoenn() ? 0x88 : 0xFF -#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP curr_GBA_rom.is_hoenn() ? 0x89 : 0xFF -#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT curr_GBA_rom.is_hoenn() ? 0x8A : 0xFF -#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT curr_GBA_rom.is_hoenn() ? 0x8B : 0xFF -#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_UP_LEFT curr_GBA_rom.is_hoenn() ? 0x8C : 0xFF -#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_UP_RIGHT curr_GBA_rom.is_hoenn() ? 0x8D : 0xFF -#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_DOWN_LEFT curr_GBA_rom.is_hoenn() ? 0x8E : 0xFF -#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_DOWN_RIGHT curr_GBA_rom.is_hoenn() ? 0x8F : 0xFF -#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_LEFT curr_GBA_rom.is_hoenn() ? 0x90 : 0xFF -#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_RIGHT curr_GBA_rom.is_hoenn() ? 0x91 : 0xFF -#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT curr_GBA_rom.is_hoenn() ? 0x92 : 0xFF -#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT curr_GBA_rom.is_hoenn() ? 0x93 : 0xFF -#define MOVEMENT_ACTION_LOCK_ANIM curr_GBA_rom.is_hoenn() ? 0x94 : 0xFF -#define MOVEMENT_ACTION_UNLOCK_ANIM curr_GBA_rom.is_hoenn() ? 0x95 : 0xFF -#define MOVEMENT_ACTION_WALK_LEFT_AFFINE curr_GBA_rom.is_hoenn() ? 0x96 : 0xFF -#define MOVEMENT_ACTION_WALK_RIGHT_AFFINE curr_GBA_rom.is_hoenn() ? 0x97 : 0xFF -#define MOVEMENT_ACTION_LEVITATE curr_GBA_rom.is_hoenn() ? 0x98 : 0xFF -#define MOVEMENT_ACTION_STOP_LEVITATE curr_GBA_rom.is_hoenn() ? 0x99 : 0xFF -#define MOVEMENT_ACTION_STOP_LEVITATE_AT_TOP curr_GBA_rom.is_hoenn() ? 0x9A : 0xFF -#define MOVEMENT_ACTION_FIGURE_8 curr_GBA_rom.is_hoenn() ? 0x9B : 0xFF -#define MOVEMENT_ACTION_FLY_UP curr_GBA_rom.is_hoenn() ? 0x9C : 0xA4 -#define MOVEMENT_ACTION_FLY_DOWN curr_GBA_rom.is_hoenn() ? 0x9D : 0xA5 -#define MOVEMENT_ACTION_FACE_DOWN_FAST curr_GBA_rom.is_hoenn() ? 0xFF : 0x4 -#define MOVEMENT_ACTION_FACE_UP_FAST curr_GBA_rom.is_hoenn() ? 0xFF : 0x5 -#define MOVEMENT_ACTION_FACE_LEFT_FAST curr_GBA_rom.is_hoenn() ? 0xFF : 0x6 -#define MOVEMENT_ACTION_FACE_RIGHT_FAST curr_GBA_rom.is_hoenn() ? 0xFF : 0x7 -#define MOVEMENT_ACTION_WALK_SLOWER_DOWN curr_GBA_rom.is_hoenn() ? 0xFF : 0x8 -#define MOVEMENT_ACTION_WALK_SLOWER_UP curr_GBA_rom.is_hoenn() ? 0xFF : 0x9 -#define MOVEMENT_ACTION_WALK_SLOWER_LEFT curr_GBA_rom.is_hoenn() ? 0xFF : 0xA -#define MOVEMENT_ACTION_WALK_SLOWER_RIGHT curr_GBA_rom.is_hoenn() ? 0xFF : 0xB -#define MOVEMENT_ACTION_PLAYER_RUN_DOWN_SLOW curr_GBA_rom.is_hoenn() ? 0xFF : 0x41 -#define MOVEMENT_ACTION_PLAYER_RUN_UP_SLOW curr_GBA_rom.is_hoenn() ? 0xFF : 0x42 -#define MOVEMENT_ACTION_PLAYER_RUN_LEFT_SLOW curr_GBA_rom.is_hoenn() ? 0xFF : 0x43 -#define MOVEMENT_ACTION_PLAYER_RUN_RIGHT_SLOW curr_GBA_rom.is_hoenn() ? 0xFF : 0x44 -#define MOVEMENT_ACTION_EMOTE_X curr_GBA_rom.is_hoenn() ? 0xFF : 0x64 -#define MOVEMENT_ACTION_EMOTE_DOUBLE_EXCL_MARK curr_GBA_rom.is_hoenn() ? 0xFF : 0x65 -#define MOVEMENT_ACTION_EMOTE_SMILE curr_GBA_rom.is_hoenn() ? 0xFF : 0x66 -#define MOVEMENT_ACTION_SPIN_DOWN curr_GBA_rom.is_hoenn() ? 0xFF : 0x94 -#define MOVEMENT_ACTION_SPIN_UP curr_GBA_rom.is_hoenn() ? 0xFF : 0x95 -#define MOVEMENT_ACTION_SPIN_LEFT curr_GBA_rom.is_hoenn() ? 0xFF : 0x96 -#define MOVEMENT_ACTION_SPIN_RIGHT curr_GBA_rom.is_hoenn() ? 0xFF : 0x97 -#define MOVEMENT_ACTION_RAISE_HAND_AND_STOP curr_GBA_rom.is_hoenn() ? 0xFF : 0x98 -#define MOVEMENT_ACTION_RAISE_HAND_AND_JUMP curr_GBA_rom.is_hoenn() ? 0xFF : 0x99 -#define MOVEMENT_ACTION_RAISE_HAND_AND_SWIM curr_GBA_rom.is_hoenn() ? 0xFF : 0x9A -#define MOVEMENT_ACTION_WALK_SLOWEST_DOWN curr_GBA_rom.is_hoenn() ? 0xFF : 0x9B -#define MOVEMENT_ACTION_WALK_SLOWEST_UP curr_GBA_rom.is_hoenn() ? 0xFF : 0x9C -#define MOVEMENT_ACTION_WALK_SLOWEST_LEFT curr_GBA_rom.is_hoenn() ? 0xFF : 0x9D -#define MOVEMENT_ACTION_WALK_SLOWEST_RIGHT curr_GBA_rom.is_hoenn() ? 0xFF : 0x9E -#define MOVEMENT_ACTION_SHAKE_HEAD_OR_WALK_IN_PLACE curr_GBA_rom.is_hoenn() ? 0xFF : 0x9F -#define MOVEMENT_ACTION_GLIDE_DOWN curr_GBA_rom.is_hoenn() ? 0xFF : 0xA0 -#define MOVEMENT_ACTION_GLIDE_UP curr_GBA_rom.is_hoenn() ? 0xFF : 0xA1 -#define MOVEMENT_ACTION_GLIDE_LEFT curr_GBA_rom.is_hoenn() ? 0xFF : 0xA2 -#define MOVEMENT_ACTION_GLIDE_RIGHT curr_GBA_rom.is_hoenn() ? 0xFF : 0xA3 -#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_DOWN curr_GBA_rom.is_hoenn() ? 0xFF : 0xA6 -#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_UP curr_GBA_rom.is_hoenn() ? 0xFF : 0xA7 -#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_LEFT curr_GBA_rom.is_hoenn() ? 0xFF : 0xA8 -#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_RIGHT curr_GBA_rom.is_hoenn() ? 0xFF : 0xA9 +// Each is two bytes, first is Hoenn, second is FRLG +#define MOVEMENT_ACTION_FACE_DOWN 0x0, 0x0 +#define MOVEMENT_ACTION_FACE_UP 0x1, 0x1 +#define MOVEMENT_ACTION_FACE_LEFT 0x2, 0x2 +#define MOVEMENT_ACTION_FACE_RIGHT 0x3, 0x3 +#define MOVEMENT_ACTION_WALK_SLOW_DOWN 0x4, 0xC +#define MOVEMENT_ACTION_WALK_SLOW_UP 0x5, 0xD +#define MOVEMENT_ACTION_WALK_SLOW_LEFT 0x6, 0xE +#define MOVEMENT_ACTION_WALK_SLOW_RIGHT 0x7, 0xF +#define MOVEMENT_ACTION_WALK_NORMAL_DOWN 0x8, 0x10 +#define MOVEMENT_ACTION_WALK_NORMAL_UP 0x9, 0x11 +#define MOVEMENT_ACTION_WALK_NORMAL_LEFT 0xA, 0x12 +#define MOVEMENT_ACTION_WALK_NORMAL_RIGHT 0xB, 0x13 +#define MOVEMENT_ACTION_JUMP_2_DOWN 0xC, 0x14 +#define MOVEMENT_ACTION_JUMP_2_UP 0xD, 0x15 +#define MOVEMENT_ACTION_JUMP_2_LEFT 0xE, 0x16 +#define MOVEMENT_ACTION_JUMP_2_RIGHT 0xF, 0x17 +#define MOVEMENT_ACTION_DELAY_1 0x10, 0x18 +#define MOVEMENT_ACTION_DELAY_2 0x11, 0x19 +#define MOVEMENT_ACTION_DELAY_4 0x12, 0x1A +#define MOVEMENT_ACTION_DELAY_8 0x13, 0x1B +#define MOVEMENT_ACTION_DELAY_16 0x14, 0x1C +#define MOVEMENT_ACTION_WALK_FAST_DOWN 0x15, 0x1D +#define MOVEMENT_ACTION_WALK_FAST_UP 0x16, 0x1E +#define MOVEMENT_ACTION_WALK_FAST_LEFT 0x17, 0x1F +#define MOVEMENT_ACTION_WALK_FAST_RIGHT 0x18, 0x20 +#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN 0x19, 0x21 +#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP 0x1A, 0x22 +#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_LEFT 0x1B, 0x23 +#define MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT 0x1C, 0x24 +#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN 0x1D, 0x25 +#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP 0x1E, 0x26 +#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT 0x1F, 0x27 +#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT 0x20, 0x28 +#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN 0x21, 0x29 +#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP 0x22, 0x2A +#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT 0x23, 0x2B +#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT 0x24, 0x2C +#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_DOWN 0x25, 0x2D +#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_UP 0x26, 0x2E +#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_LEFT 0x27, 0x2F +#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_RIGHT 0x28, 0x30 +#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN 0x29, 0x31 +#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP 0x2A, 0x32 +#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT 0x2B, 0x33 +#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT 0x2C, 0x34 +#define MOVEMENT_ACTION_WALK_FASTER_DOWN 0x2D, 0x35 +#define MOVEMENT_ACTION_WALK_FASTER_UP 0x2E, 0x36 +#define MOVEMENT_ACTION_WALK_FASTER_LEFT 0x2F, 0x37 +#define MOVEMENT_ACTION_WALK_FASTER_RIGHT 0x30, 0x38 +#define MOVEMENT_ACTION_SLIDE_DOWN 0x31, 0x39 +#define MOVEMENT_ACTION_SLIDE_UP 0x32, 0x3A +#define MOVEMENT_ACTION_SLIDE_LEFT 0x33, 0x3B +#define MOVEMENT_ACTION_SLIDE_RIGHT 0x34, 0x3C +#define MOVEMENT_ACTION_PLAYER_RUN_DOWN 0x35, 0x3D +#define MOVEMENT_ACTION_PLAYER_RUN_UP 0x36, 0x3E +#define MOVEMENT_ACTION_PLAYER_RUN_LEFT 0x37, 0x3F +#define MOVEMENT_ACTION_PLAYER_RUN_RIGHT 0x38, 0x40 +#define MOVEMENT_ACTION_START_ANIM_IN_DIRECTION 0x39, 0x45 +#define MOVEMENT_ACTION_JUMP_SPECIAL_DOWN 0x3A, 0x46 +#define MOVEMENT_ACTION_JUMP_SPECIAL_UP 0x3B, 0x47 +#define MOVEMENT_ACTION_JUMP_SPECIAL_LEFT 0x3C, 0x48 +#define MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT 0x3D, 0x49 +#define MOVEMENT_ACTION_FACE_PLAYER 0x3E, 0x4A +#define MOVEMENT_ACTION_FACE_AWAY_PLAYER 0x3F, 0x4B +#define MOVEMENT_ACTION_LOCK_FACING_DIRECTION 0x40, 0x4C +#define MOVEMENT_ACTION_UNLOCK_FACING_DIRECTION 0x41, 0x4D +#define MOVEMENT_ACTION_JUMP_DOWN 0x42, 0x4E +#define MOVEMENT_ACTION_JUMP_UP 0x43, 0x4F +#define MOVEMENT_ACTION_JUMP_LEFT 0x44, 0x50 +#define MOVEMENT_ACTION_JUMP_RIGHT 0x45, 0x51 +#define MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN 0x46, 0x52 +#define MOVEMENT_ACTION_JUMP_IN_PLACE_UP 0x47, 0x53 +#define MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT 0x48, 0x54 +#define MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT 0x49, 0x55 +#define MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP 0x4A, 0x56 +#define MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN 0x4B, 0x57 +#define MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT 0x4C, 0x58 +#define MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT 0x4D, 0x59 +#define MOVEMENT_ACTION_FACE_ORIGINAL_DIRECTION 0x4E, 0x5A +#define MOVEMENT_ACTION_NURSE_JOY_BOW_DOWN 0x4F, 0x5B +#define MOVEMENT_ACTION_ENABLE_JUMP_LANDING_GROUND_EFFECT 0x50, 0x5C +#define MOVEMENT_ACTION_DISABLE_JUMP_LANDING_GROUND_EFFECT 0x51, 0x5D +#define MOVEMENT_ACTION_DISABLE_ANIMATION 0x52, 0x5E +#define MOVEMENT_ACTION_RESTORE_ANIMATION 0x53, 0x5F +#define MOVEMENT_ACTION_SET_INVISIBLE 0x54, 0x60 +#define MOVEMENT_ACTION_SET_VISIBLE 0x55, 0x61 +#define MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK 0x56, 0x62 +#define MOVEMENT_ACTION_EMOTE_QUESTION_MARK 0x57, 0x63 +#define MOVEMENT_ACTION_EMOTE_HEART 0x58, 0xFF +#define MOVEMENT_ACTION_REVEAL_TRAINER 0x59, 0x67 +#define MOVEMENT_ACTION_ROCK_SMASH_BREAK 0x5A, 0x68 +#define MOVEMENT_ACTION_CUT_TREE 0x5B, 0x69 +#define MOVEMENT_ACTION_SET_FIXED_PRIORITY 0x5C, 0x6A +#define MOVEMENT_ACTION_CLEAR_FIXED_PRIORITY 0x5D, 0x6B +#define MOVEMENT_ACTION_INIT_AFFINE_ANIM 0x5E, 0x6C +#define MOVEMENT_ACTION_CLEAR_AFFINE_ANIM 0x5F, 0x6D +#define MOVEMENT_ACTION_HIDE_REFLECTION 0x60, 0xFF +#define MOVEMENT_ACTION_SHOW_REFLECTION 0x61, 0xFF +#define MOVEMENT_ACTION_WALK_DOWN_START_AFFINE 0x62, 0x6E +#define MOVEMENT_ACTION_WALK_DOWN_AFFINE 0x63, 0x6F +#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN 0x64, 0x70 +#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_UP 0x65, 0x71 +#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_LEFT 0x66, 0x72 +#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT 0x67, 0x73 +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN 0x68, 0x74 +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_UP 0x69, 0x75 +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_LEFT 0x6A, 0x76 +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT 0x6B, 0x77 +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN 0x6C, 0x78 +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_UP 0x6D, 0x79 +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_LEFT 0x6E, 0x7A +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT 0x6F, 0x7B +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN 0x70, 0x7C +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_UP 0x71, 0x7D +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_LEFT 0x72, 0x7E +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT 0x73, 0x7F +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN 0x74, 0x80 +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_UP 0x75, 0x81 +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_LEFT 0x76, 0x82 +#define MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT 0x77, 0x83 +#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN 0x78, 0x84 +#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_UP 0x79, 0x85 +#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_LEFT 0x7A, 0x86 +#define MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT 0x7B, 0x87 +#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN 0x7C, 0x88 +#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_UP 0x7D, 0x89 +#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_LEFT 0x7E, 0x8A +#define MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT 0x7F, 0x8B +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN 0x80, 0x8C +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_UP 0x81, 0x8D +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_LEFT 0x82, 0x8E +#define MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT 0x83, 0x8F +#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN 0x84, 0x90 +#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP 0x85, 0x91 +#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT 0x86, 0x92 +#define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT 0x87, 0x93 +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN 0x88, 0xFF +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP 0x89, 0xFF +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT 0x8A, 0xFF +#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT 0x8B, 0xFF +#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_UP_LEFT 0x8C, 0xFF +#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_UP_RIGHT 0x8D, 0xFF +#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_DOWN_LEFT 0x8E, 0xFF +#define MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_DOWN_RIGHT 0x8F, 0xFF +#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_LEFT 0x90, 0xFF +#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_RIGHT 0x91, 0xFF +#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT 0x92, 0xFF +#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT 0x93, 0xFF +#define MOVEMENT_ACTION_LOCK_ANIM 0x94, 0xFF +#define MOVEMENT_ACTION_UNLOCK_ANIM 0x95, 0xFF +#define MOVEMENT_ACTION_WALK_LEFT_AFFINE 0x96, 0xFF +#define MOVEMENT_ACTION_WALK_RIGHT_AFFINE 0x97, 0xFF +#define MOVEMENT_ACTION_LEVITATE 0x98, 0xFF +#define MOVEMENT_ACTION_STOP_LEVITATE 0x99, 0xFF +#define MOVEMENT_ACTION_STOP_LEVITATE_AT_TOP 0x9A, 0xFF +#define MOVEMENT_ACTION_FIGURE_8 0x9B, 0xFF +#define MOVEMENT_ACTION_FLY_UP 0x9C, 0xA4 +#define MOVEMENT_ACTION_FLY_DOWN 0x9D, 0xA5 +#define MOVEMENT_ACTION_FACE_DOWN_FAST 0xFF, 0x4 +#define MOVEMENT_ACTION_FACE_UP_FAST 0xFF, 0x5 +#define MOVEMENT_ACTION_FACE_LEFT_FAST 0xFF, 0x6 +#define MOVEMENT_ACTION_FACE_RIGHT_FAST 0xFF, 0x7 +#define MOVEMENT_ACTION_WALK_SLOWER_DOWN 0xFF, 0x8 +#define MOVEMENT_ACTION_WALK_SLOWER_UP 0xFF, 0x9 +#define MOVEMENT_ACTION_WALK_SLOWER_LEFT 0xFF, 0xA +#define MOVEMENT_ACTION_WALK_SLOWER_RIGHT 0xFF, 0xB +#define MOVEMENT_ACTION_PLAYER_RUN_DOWN_SLOW 0xFF, 0x41 +#define MOVEMENT_ACTION_PLAYER_RUN_UP_SLOW 0xFF, 0x42 +#define MOVEMENT_ACTION_PLAYER_RUN_LEFT_SLOW 0xFF, 0x43 +#define MOVEMENT_ACTION_PLAYER_RUN_RIGHT_SLOW 0xFF, 0x44 +#define MOVEMENT_ACTION_EMOTE_X 0xFF, 0x64 +#define MOVEMENT_ACTION_EMOTE_DOUBLE_EXCL_MARK 0xFF, 0x65 +#define MOVEMENT_ACTION_EMOTE_SMILE 0xFF, 0x66 +#define MOVEMENT_ACTION_SPIN_DOWN 0xFF, 0x94 +#define MOVEMENT_ACTION_SPIN_UP 0xFF, 0x95 +#define MOVEMENT_ACTION_SPIN_LEFT 0xFF, 0x96 +#define MOVEMENT_ACTION_SPIN_RIGHT 0xFF, 0x97 +#define MOVEMENT_ACTION_RAISE_HAND_AND_STOP 0xFF, 0x98 +#define MOVEMENT_ACTION_RAISE_HAND_AND_JUMP 0xFF, 0x99 +#define MOVEMENT_ACTION_RAISE_HAND_AND_SWIM 0xFF, 0x9A +#define MOVEMENT_ACTION_WALK_SLOWEST_DOWN 0xFF, 0x9B +#define MOVEMENT_ACTION_WALK_SLOWEST_UP 0xFF, 0x9C +#define MOVEMENT_ACTION_WALK_SLOWEST_LEFT 0xFF, 0x9D +#define MOVEMENT_ACTION_WALK_SLOWEST_RIGHT 0xFF, 0x9E +#define MOVEMENT_ACTION_SHAKE_HEAD_OR_WALK_IN_PLACE 0xFF, 0x9F +#define MOVEMENT_ACTION_GLIDE_DOWN 0xFF, 0xA0 +#define MOVEMENT_ACTION_GLIDE_UP 0xFF, 0xA1 +#define MOVEMENT_ACTION_GLIDE_LEFT 0xFF, 0xA2 +#define MOVEMENT_ACTION_GLIDE_RIGHT 0xFF, 0xA3 +#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_DOWN 0xFF, 0xA6 +#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_UP 0xFF, 0xA7 +#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_LEFT 0xFF, 0xA8 +#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_RIGHT 0xFF, 0xA9 #define CPU_SET_16BIT 0x00000000 #define CPU_SET_32BIT 0x04000000 diff --git a/include/script_var.h b/include/script_var.h index 14bf3ec..b0745a2 100644 --- a/include/script_var.h +++ b/include/script_var.h @@ -59,10 +59,10 @@ class movement_var : public xse_var { public: using xse_var::xse_var; - void set_movement(const int movement[], unsigned int nSize); + void set_movement(const byte movement[], unsigned int nSize); void insert_movement(u8 mg_array[]); void set_start(); - const int *movement; + const byte *movement; unsigned int size; }; @@ -84,4 +84,4 @@ public: int numTracks; ptgb::vector trackPointers; ptgb::vector> trackArrays; -}; \ No newline at end of file +}; diff --git a/source/mystery_gift_builder.cpp b/source/mystery_gift_builder.cpp index 5683e6a..7e88000 100644 --- a/source/mystery_gift_builder.cpp +++ b/source/mystery_gift_builder.cpp @@ -179,7 +179,8 @@ void mystery_gift_script::build_script(PokeBox *box) } } - const int movementSlowSpinArray[16] = { + // Note that each MOVEMENT macro contains TWO bytes, one for Hoenn and one for FRLG. + static const byte movementSlowSpinArray[32] = { MOVEMENT_ACTION_FACE_LEFT, MOVEMENT_ACTION_DELAY_8, MOVEMENT_ACTION_FACE_UP, @@ -199,7 +200,7 @@ void mystery_gift_script::build_script(PokeBox *box) }; movementSlowSpin.set_movement(movementSlowSpinArray, 16); - const int movementFastSpinArray[30] = { + static const byte movementFastSpinArray[60] = { MOVEMENT_ACTION_FACE_LEFT, MOVEMENT_ACTION_DELAY_4, MOVEMENT_ACTION_FACE_UP, @@ -233,16 +234,16 @@ void mystery_gift_script::build_script(PokeBox *box) }; movementFastSpin.set_movement(movementFastSpinArray, 30); - const int movementExclaimArray[1] = {MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK}; + static const byte movementExclaimArray[2] = {MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK}; movementExclaim.set_movement(movementExclaimArray, 1); - const int movementToBoxesArrayRS[4] = {MOVEMENT_ACTION_WALK_FAST_UP, MOVEMENT_ACTION_WALK_FAST_LEFT, MOVEMENT_ACTION_WALK_FAST_UP, MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK}; - const int movementToBoxesArrayFRLG[3] = {MOVEMENT_ACTION_WALK_FAST_UP, MOVEMENT_ACTION_WALK_FAST_UP, MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK}; - const int movementToBoxesArrayE[6] = {MOVEMENT_ACTION_WALK_FAST_UP, MOVEMENT_ACTION_WALK_FAST_LEFT, MOVEMENT_ACTION_WALK_FAST_LEFT, MOVEMENT_ACTION_WALK_FAST_LEFT, MOVEMENT_ACTION_FACE_UP, MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK}; + static const byte movementToBoxesArrayRS[8] = {MOVEMENT_ACTION_WALK_FAST_UP, MOVEMENT_ACTION_WALK_FAST_LEFT, MOVEMENT_ACTION_WALK_FAST_UP, MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK}; + static const byte movementToBoxesArrayFRLG[6] = {MOVEMENT_ACTION_WALK_FAST_UP, MOVEMENT_ACTION_WALK_FAST_UP, MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK}; + static const byte movementToBoxesArrayE[12] = {MOVEMENT_ACTION_WALK_FAST_UP, MOVEMENT_ACTION_WALK_FAST_LEFT, MOVEMENT_ACTION_WALK_FAST_LEFT, MOVEMENT_ACTION_WALK_FAST_LEFT, MOVEMENT_ACTION_FACE_UP, MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK}; - const int movementWalkBackArrayRS[3] = {MOVEMENT_ACTION_WALK_FAST_DOWN, MOVEMENT_ACTION_WALK_FAST_RIGHT, MOVEMENT_ACTION_WALK_FAST_DOWN}; - const int movementWalkBackArrayFRLG[2] = {MOVEMENT_ACTION_WALK_FAST_DOWN, MOVEMENT_ACTION_WALK_FAST_DOWN}; - const int movementWalkBackArrayE[4] = {MOVEMENT_ACTION_WALK_FAST_RIGHT, MOVEMENT_ACTION_WALK_FAST_RIGHT, MOVEMENT_ACTION_WALK_FAST_RIGHT, MOVEMENT_ACTION_WALK_FAST_DOWN}; + static const byte movementWalkBackArrayRS[6] = {MOVEMENT_ACTION_WALK_FAST_DOWN, MOVEMENT_ACTION_WALK_FAST_RIGHT, MOVEMENT_ACTION_WALK_FAST_DOWN}; + static const byte movementWalkBackArrayFRLG[4] = {MOVEMENT_ACTION_WALK_FAST_DOWN, MOVEMENT_ACTION_WALK_FAST_DOWN}; + static const byte movementWalkBackArrayE[8] = {MOVEMENT_ACTION_WALK_FAST_RIGHT, MOVEMENT_ACTION_WALK_FAST_RIGHT, MOVEMENT_ACTION_WALK_FAST_RIGHT, MOVEMENT_ACTION_WALK_FAST_DOWN}; switch (curr_GBA_rom.gamecode) { @@ -262,19 +263,19 @@ void mystery_gift_script::build_script(PokeBox *box) break; } - const int movementLookDownArray[1] = {MOVEMENT_ACTION_FACE_DOWN}; + static const byte movementLookDownArray[2] = {MOVEMENT_ACTION_FACE_DOWN}; movementLookDown.set_movement(movementLookDownArray, 1); - const int movementOutOfWayArray[2] = {MOVEMENT_ACTION_WALK_FAST_RIGHT, MOVEMENT_ACTION_FACE_LEFT}; + static const byte movementOutOfWayArray[4] = {MOVEMENT_ACTION_WALK_FAST_RIGHT, MOVEMENT_ACTION_FACE_LEFT}; movementOutOfWay.set_movement(movementOutOfWayArray, 2); - const int movementInWayArray[2] = {MOVEMENT_ACTION_WALK_FAST_LEFT, MOVEMENT_ACTION_FACE_DOWN}; + static const byte movementInWayArray[4] = {MOVEMENT_ACTION_WALK_FAST_LEFT, MOVEMENT_ACTION_FACE_DOWN}; movementInWay.set_movement(movementInWayArray, 2); - const int movementGoUpArray[1] = {MOVEMENT_ACTION_WALK_FAST_UP}; + static const byte movementGoUpArray[2] = {MOVEMENT_ACTION_WALK_FAST_UP}; movementGoUp.set_movement(movementGoUpArray, 1); - const int movementGoDownArray[2] = {MOVEMENT_ACTION_WALK_FAST_DOWN, MOVEMENT_ACTION_FACE_UP}; + static const byte movementGoDownArray[4] = {MOVEMENT_ACTION_WALK_FAST_DOWN, MOVEMENT_ACTION_FACE_UP}; movementGoDown.set_movement(movementGoDownArray, 2); // const byte track_1[] = {0xBC, 0x00, 0xBB, 0x38, 0xBD, 0x38, 0xC4, 0x00, 0xBE, 0x60, 0xBF, 0x3D, 0xC0, 0x40, 0xD4, 0x51, 0x70, 0x86, 0xD4, 0x8C, 0x53, 0x86, 0xD4, 0x8C, 0x54, 0x86, 0xD4, 0x92, 0xE8, 0x55, 0x92, 0xBE, 0x64, 0x82, 0x6C, 0x84, 0x74, 0x85, 0xB1}; diff --git a/source/script_var.cpp b/source/script_var.cpp index 3b8d802..f33d73b 100644 --- a/source/script_var.cpp +++ b/source/script_var.cpp @@ -182,7 +182,7 @@ void textbox_var::insert_text(const u16 *charset, u8 mg_array[], bool should_set // MOVEMENT VAR -void movement_var::set_movement(const int nMovement[], unsigned int nSize) +void movement_var::set_movement(const byte nMovement[], unsigned int nSize) { movement = nMovement; size = nSize; @@ -196,9 +196,12 @@ void movement_var::set_start() void movement_var::insert_movement(u8 mg_array[]) { set_start(); + // movement data is { hoenn, frlg, hoenn, frlg, ...} + int offset = curr_GBA_rom.is_hoenn() ? 0 : 1; + for (unsigned int parser = 0; parser < size; parser++) { - mg_array[*curr_loc_ptr] = movement[parser]; + mg_array[*curr_loc_ptr] = movement[parser * 2 + offset]; (*curr_loc_ptr)++; } mg_array[*curr_loc_ptr] = 0xFE; // End list @@ -283,4 +286,4 @@ void music_var::insert_music_data(u8 mg_array[], u8 blockCount, u8 priority, u8 mg_array[(*curr_loc_ptr)++] = trackPointers[i] >> 16; mg_array[(*curr_loc_ptr)++] = trackPointers[i] >> 24; } -} \ No newline at end of file +}