struct AttackType u1 is_blue_magic u1 is_white_magic u1 is_black_magic u1 is_dimension_magic u1 is_summon u1 is_sound u1 is_longrange u1 is_physical struct AttackProperties u2 action_delay u1 roulette u1 target_enemy_by_default u1 can_target_either_side u1 can_select_target u1 always_target_all u1 can_target_all struct WeaponData AttackProperties attack_properties AttackType attack_type u6 item_type u1 is_unthrowable u1 byte_2_leftover EquipStatBonus bonus u6 description u1 can_double_grip u1 only_double_grip u1 is_wonder_rod u1 is_action_on_use u1 can_magic_sword u1 is_action_on_hit u1 is_5.4 u1 is_initiative u1 is_knife_parry u1 is_sword_parry u7 spell_cast u1 is_break_after_use u8 attack_power u7 attack_effect u1 byte_8_leftover u8 param0 # accuracy_percent for sub-100 weapons, crit rate on katanas, element on Flametongue/Icebrand/Excalibur/AirKnife/Trident/WindSpear u8 param1 # on_hit_effect_percent for weapons that cast actions on hit, also Rune weapons bonus attack power u8 param2 # action_on_hit for weapons that cast actions on hit, Also Rune weapons 5 mana cost on attack, also element of attack for rods struct ArmorData u8 slot # b0 - 0x01 acc, 0x02 body, 0x04 head, 0x08 shield, 0xF0 unused u8 weight # b1 u6 item_type u1 is_unthrowable u1 byte_2_leftover EquipStatBonus bonus # b3 u6 description # b4 u2 byte_4_leftovers u1 is_improve_catch # b5 u1 is_become_undead u1 is_improve_dance u1 is_halve_mp_cost u1 is_improve_steal u1 is_improve_brawl u1 is_elf_cape_dodge u1 is_block_all_magic # b5 u8 evasion # b6 u8 defense u8 m_evasion u8 m_def # b9 u8 elem_effect # b10 - 01 ½ lightning, 02 ½ all, 03 immune poison damage, 04 absorb fire+immune ice+weak water, 05 absorb water+immune fire+weak lightning, 06 Bone Mail (absorb poison, halve ice, weak fire/holy), 07 absorb fire, 08 absorb ice u8 status_effect # b11 - 01 auto-regen, 02 auto-doom, 03 auto-haste + immune slow/stop/paralyse/sleep, 04 immune petrify, 05 Ribbon, 06 immune confuse, 07 immune silence, 08 immune blind, 09 immune poison, 0A bone mail, 0B auto-reflect, 0C immune mini, 0D immune old/zombie, 0E auto-sap + immune sleep, 0F auto-blink, 10 immune mini/paralyse, 11 immune confuse/mini, 12 immune confuse/toad, 13 immune toad/paralyse struct ItemData AttackProperties attack_properties u8 attack_type u1 unk0 u1 is_unmixable u1 unk1 u1 is_magic_lamp u1 is_undrinkable u1 is_unusable_in_battle u1 is_unthrowable u1 unk2 u6 description # b3 u2 byte_3_leftovers u7 attack_formula u1 is_unavoidable u8 param_0 u8 param_1 u8 param_2 struct MagicData AttackProperties attack_properties u8 attack_type u4 meteo_extra_hits u2 unk u1 is_learnable u1 is_monster_bit u7 mp_cost u1 is_unreflectable u7 attack_formula u1 is_unavoidable u8 param_0 u8 param_1 u8 param_2 struct ElemDef u8 absorb u8 evade u8 immune u8 half u8 weak struct StatusEffect 4 of u8 initial 3 of u8 immune struct EnemySpriteData u7 tileset_offset_hi # combined with lo, << 3, + 0x150000 u1 is_3bpp u8 tileset_offset_lo u2 palette_offset_hi # combined with lo, << 4, + 0x0ED000 u4 unk u1 is_separate_shadow u1 is_large_layout u8 palette_offset_lo u8 layout_id # Small? <<3, + 0x10D004, take 8 bytes. Large? <<5, + 0x10D334, take 32 bytes. struct BattleBackgroundData u8 tileset_id 2 of u8 palette_ids u8 tilemap_id u8 tilemap_flips_id u8 tilemap_v_flips_id # Unused, all 0xFF = no flips u8 tilecycle_id u8 palcycle_id struct EnemyStats u8 speed u8 attack_power u8 attack_multiplier u8 evasion u8 defense u8 magic_power u8 magic_defense u8 magic_evasion u16 max_hp u16 max_mp u16 reward_exp u16 reward_gil u8 attack_graphics u8 elements_immune u24 status_immune u8 elements_absorb AttackType attack_type u8 elements_weak u8 monster_type u8 flags_25 u16 status_26 u16 status_28 u8 30 u8 level # 31 struct EventPlace u8 x u8 y u16 event_id struct ZoneExit u8 x u8 y u16 dest_map_id u8 dest_x u8 dest_y struct ZoneData u16 npc_layer u8 name_id u8 shadow_flags # Maybe make a type for this later u8 graphic_maps # MSb animation-related, 6 LSbs are ID for table in 0x005BB8 which writes to $2131-$2133 (Color Math Designation, Subscreen BG color) u8 tile_properties u8 flags_6 u8 7 u8 blockset_id 4 of u6 tileset_ids 3 of u10 blockmap_ids u2 _ u8 16 u8 17 u8 18 u8 19 u8 20 u8 21 u8 palette_id u8 23 u8 24 u8 music_id struct WorldMapEventReplacement u8 y u8 x u8 num_bytes u8 event_flag # Add 0x1D0 to this for actual event flag u16 ptr_bytes # Read num_bytes from this address (0xC0 bank implied, so just from the start of the ROM) struct WorldMapBlockProperties u1 is_pathable_foot u1 is_pathable_chocobo u1 is_pathable_black_chocobo u1 is_pathable_hiryuu u1 is_pathable_submarine u1 is_pathable_ship u1 is_pathable_airship u1 is_surfaceable u1 unk0_east # ship related? mostly seaside edges=0 but sometimes not u1 unk0_west # ship related? mostly seaside edges=0 but sometimes not u1 unk0_south # ship related? mostly seaside edges=0 but sometimes not u1 unk0_north # ship related? mostly seaside edges=0 but sometimes not u1 isnt_landable_chocobo u1 isnt_landable_black_chocobo u1 isnt_landable_hiryuu u1 isnt_landable_airship u4 unk1 # Maybe battle bg? 0=plains/other, 1=forest, 2=desert, 3=sea, 5=swamp, no others spotted for these 4 bits u1 unk21 # Mountains and Exdeath's Castle =1 u1 unk22 # Forests have this =1, except the southernmost tiles of them u1 unk23 # Most rivers have this u1 unk24 # Most walkable/boatable tiles have this - possibly random encounters enabled?