smrpgpatchbuilder 4.1.2__tar.gz → 4.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {smrpgpatchbuilder-4.1.2/src/smrpgpatchbuilder.egg-info → smrpgpatchbuilder-4.1.4}/PKG-INFO +1 -1
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/pyproject.toml +1 -1
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/graphics/classes.py +46 -3
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4/src/smrpgpatchbuilder.egg-info}/PKG-INFO +1 -1
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/LICENSE +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/MANIFEST.in +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/README.md +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/setup.cfg +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/allies/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/allies/ally.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/allies/ally_collection.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/battle_targets.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/bonus_messages.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/flash_colours.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/layer_priority_type.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/mask_effects.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/message_type.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/origins.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/pause_until.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/shift_type.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/types/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/types/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/wave_effect.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/commands.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/types/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/types/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/ids/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/ids/monster_entrances.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/types.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battles/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battles/battle_dialog_collection.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battles/enums.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battles/formations_packs/types/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battles/formations_packs/types/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battles/ids/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battles/ids/misc.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battles/music.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battles/types/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battles/types/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/characters/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/characters/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/characters/constants.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/characters/enums.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/dialogs/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/dialogs/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/dialogs/formatter.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/dialogs/ids/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/dialogs/ids/dialog_bank_ids.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/dialogs/ids/misc.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/dialogs/ids/types/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/dialogs/ids/types/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/dialogs/utils.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/enemies/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/enemies/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/enemies/constants.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/enemies/enums.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/enemy_attacks/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/enemy_attacks/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/enemy_attacks/constants.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/graphics/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/items/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/items/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/items/constants.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/items/encoding.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/items/enums.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/levels/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/levels/room_collection.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/monster_scripts/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/command_types.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/targets.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/types/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/types/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/commands.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/types/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/types/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/monster_scripts/ids/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/monster_scripts/ids/misc.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/monster_scripts/types.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/numbers/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/numbers/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/sequence_speeds.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/types/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/types/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/vram_priority.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/commands.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/types/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/types/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/ids/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/ids/misc.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/area_objects.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/colours.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/controller_inputs.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/coords.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/directions.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/intro_title_text.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/layers.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/palette_rows.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/palette_types.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/scenes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/tutorials.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/area_object.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/battlefield.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/byte_var.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/colour.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/controller_input.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/coord.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/direction.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/flag.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/intro_title_text.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/layer.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/packet.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/palette_row.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/palette_type.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/party_character.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/scene.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/short_var.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/tutorial.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/commands.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/types/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/types/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/ids/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/ids/misc.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/ids/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/overworld_scripts/ids/misc.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/scripts_common/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/scripts_common/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/shops/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/shops/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/spells/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/spells/arguments/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/spells/arguments/damage_modifiers.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/spells/arguments/timing_properties.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/spells/arguments/types/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/spells/arguments/types/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/spells/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/spells/enums.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/spells/ids/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/spells/ids/misc.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/sprites/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/sprites/ally_palettes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/sprites/collection.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/sprites/disassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/sprites/exceptions.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/sprites/ids/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/sprites/ids/event_palettes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/sprites/ids/misc.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/sprites/ids/sprite_palettes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/sprites/palette.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/sprites/sprite.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/world_map_locations/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/world_map_locations/classes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/manage.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/allyassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/allydisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/animationassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/animationdisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/battleassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/battledialogassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/battledialogdisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/battledisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/bowser_tile_rearranger.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/comboassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/combodisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/dialogassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/dialogdisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/enemyassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/enemyattackassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/enemyattackdisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/enemydisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/eventassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/eventconverter.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/eventidentifieraudit.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/eventpalettedisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/generatesample.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/graphicsassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/graphicsdisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/input_file_parser.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/itemassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/itemdisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/legacy/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/legacy/docstrings.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/legacy/eventdisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/legacy/eventtables.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/legacy/objectsequenceassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/legacy/objectsequencedisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/legacy/objectsequencetables.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/make_seed.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/move_spell_gfx.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/npcmodelassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/npcmodeldisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/objectassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/objectdisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/packassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/packdisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/packetassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/packetdisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/palettebytes.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/partitionanalyzer.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/roomassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/roomconverter.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/roomdisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/shopassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/shopdisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/space_reassigner.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/spellassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/spelldisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/spritepalettedisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/unused_gfx_finder.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/unused_gfx_remover old.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/unused_gfx_remover.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/variableparser.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/worldmaplocationassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/commands/worldmaplocationdisassembler.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/management/django/settings.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/utils/disassembler_common.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/utils/npcs.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/utils/number.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/utils/strings.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder.egg-info/SOURCES.txt +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder.egg-info/dependency_links.txt +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder.egg-info/requires.txt +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder.egg-info/top_level.txt +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/tests/animations/test_animationscripts.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/tests/dialogs/__init__.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/tests/dialogs/test_formatter.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/tests/monsters/test_ai.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/tests/overworld/test_actionscripts.py +0 -0
- {smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/tests/overworld/test_eventscripts.py +0 -0
|
@@ -739,7 +739,7 @@ class SpriteCollection:
|
|
|
739
739
|
|
|
740
740
|
return bytearray(sprite_data), bytearray(image_data), bytearray(animation_pointers), anim_tile_ranges, output_tile_ranges
|
|
741
741
|
|
|
742
|
-
def assemble_from_tables(self, sprites: list[CompleteSprite], insert_whitespace=False) -> tuple[bytearray, bytearray, bytearray, list[tuple[int, bytearray]], list[tuple[int, bytearray]]]:
|
|
742
|
+
def assemble_from_tables(self, sprites: list[CompleteSprite], insert_whitespace=False, shared_image_groups: list[list[int]] | None = None) -> tuple[bytearray, bytearray, bytearray, list[tuple[int, bytearray]], list[tuple[int, bytearray]]]:
|
|
743
743
|
# CRITICAL: Reset all banks before assembling to prevent data from previous runs
|
|
744
744
|
for bank in self.uncompressed_tile_banks:
|
|
745
745
|
bank.tiles = bytearray([])
|
|
@@ -900,6 +900,36 @@ class SpriteCollection:
|
|
|
900
900
|
wip_sprite.relative_offset = 0
|
|
901
901
|
wip_sprites.append(wip_sprite)
|
|
902
902
|
|
|
903
|
+
# Force specified sprite groups to share the same tile group
|
|
904
|
+
# (and thus the same image) for SNES engine compatibility
|
|
905
|
+
if shared_image_groups is not None:
|
|
906
|
+
print(f"[SHARED_IMAGE] shared_image_groups={shared_image_groups}")
|
|
907
|
+
for forced_group in shared_image_groups:
|
|
908
|
+
# Collect all unique subtiles from sprites in this forced group
|
|
909
|
+
all_subtiles: list[tuple[int, ...]] = []
|
|
910
|
+
for sprite_idx in forced_group:
|
|
911
|
+
print(f"[SHARED_IMAGE] sprite {sprite_idx}: {len(wip_sprites[sprite_idx].tiles)} unique subtiles, tile_group={wip_sprites[sprite_idx].tile_group}")
|
|
912
|
+
for subtile in wip_sprites[sprite_idx].tiles:
|
|
913
|
+
if subtile not in all_subtiles:
|
|
914
|
+
all_subtiles.append(subtile)
|
|
915
|
+
print(f"[SHARED_IMAGE] combined group {forced_group}: {len(all_subtiles)} unique subtiles total")
|
|
916
|
+
|
|
917
|
+
# Create a new unified tile group
|
|
918
|
+
new_group_id = random_tile_id()
|
|
919
|
+
while new_group_id in tile_groups:
|
|
920
|
+
new_group_id = random_tile_id()
|
|
921
|
+
tile_groups[new_group_id] = TileGroup(
|
|
922
|
+
tiles=all_subtiles, used_by=list(forced_group), extra=[]
|
|
923
|
+
)
|
|
924
|
+
|
|
925
|
+
# Remove forced sprites from their old groups, assign to new
|
|
926
|
+
for sprite_idx in forced_group:
|
|
927
|
+
old_group_id = wip_sprites[sprite_idx].tile_group
|
|
928
|
+
if sprite_idx in tile_groups[old_group_id].used_by:
|
|
929
|
+
tile_groups[old_group_id].used_by.remove(sprite_idx)
|
|
930
|
+
wip_sprites[sprite_idx].tile_group = new_group_id
|
|
931
|
+
print(f"[SHARED_IMAGE] sprite {sprite_idx} moved to group {new_group_id}")
|
|
932
|
+
|
|
903
933
|
# within each tile group, determine which sprites actually use which tiles
|
|
904
934
|
for k in tile_groups:
|
|
905
935
|
# group tiles together by proximity
|
|
@@ -929,9 +959,18 @@ class SpriteCollection:
|
|
|
929
959
|
complete_images: list[ImagePack] = []
|
|
930
960
|
complete_animations: list[AnimationPack] = []
|
|
931
961
|
|
|
962
|
+
# Build set of sprite indices that have forced image sharing
|
|
963
|
+
# (these keep relative_offset = 0 to ensure same graphics_pointer)
|
|
964
|
+
forced_sprite_indices: set[int] = set()
|
|
965
|
+
if shared_image_groups is not None:
|
|
966
|
+
for group in shared_image_groups:
|
|
967
|
+
forced_sprite_indices.update(group)
|
|
968
|
+
|
|
932
969
|
# find sprites which are going to cause problems because os ubtile deltas > 512
|
|
933
970
|
# and duplicate tiles where necessary
|
|
934
971
|
for sprite_index, sprite in enumerate(wip_sprites):
|
|
972
|
+
if sprite_index in forced_sprite_indices:
|
|
973
|
+
continue # Keep relative_offset = 0 for shared image groups
|
|
935
974
|
tile_key = sprite.tile_group
|
|
936
975
|
available_tiles = tile_groups[tile_key].tiles
|
|
937
976
|
if len(sprite.tiles) == 0:
|
|
@@ -1046,12 +1085,16 @@ class SpriteCollection:
|
|
|
1046
1085
|
offset += ((subtile_subtract) * 0x20)
|
|
1047
1086
|
# need to change this to accommodate diff offsets in same tile group
|
|
1048
1087
|
palette_ptr = PALETTE_OFFSET + sprite.sprite_data.palette_id * 30
|
|
1088
|
+
if sprite_index in forced_sprite_indices:
|
|
1089
|
+
print(f"[SHARED_IMAGE] sprite {sprite_index}: tile_group={tile_key}, relative_offset={sprite.relative_offset}, offset=0x{offset:06X}, palette_ptr=0x{palette_ptr:06X}, palette_id={sprite.sprite_data.palette_id}, subtile_subtract={subtile_subtract}, available_tiles={len(available_tiles)}")
|
|
1049
1090
|
image_index_to_use = len(complete_images)
|
|
1050
1091
|
for image_index, image in enumerate(complete_images):
|
|
1051
1092
|
if image.graphics_pointer == offset and image.palette_pointer == palette_ptr:
|
|
1052
1093
|
image_index_to_use = image_index
|
|
1053
1094
|
if image_index_to_use == len(complete_images):
|
|
1054
1095
|
complete_images.append(ImagePack(image_index_to_use, offset, palette_ptr))
|
|
1096
|
+
if sprite_index in forced_sprite_indices:
|
|
1097
|
+
print(f"[SHARED_IMAGE] sprite {sprite_index}: assigned image {image_index_to_use}")
|
|
1055
1098
|
|
|
1056
1099
|
# get animation #, or create new
|
|
1057
1100
|
animation_num_to_use = len(complete_animations)
|
|
@@ -1121,8 +1164,8 @@ class SpriteCollection:
|
|
|
1121
1164
|
|
|
1122
1165
|
return self.assemble_from_tables_(complete_sprites, complete_images, complete_animations, output_tile_ranges)
|
|
1123
1166
|
|
|
1124
|
-
def render(self, whitespace: bool = False) -> list[tuple[int, bytearray]]:
|
|
1125
|
-
sprite_data, image_data, animation_pointers, animation_data, tiles = self.assemble_from_tables(self.sprites, whitespace)
|
|
1167
|
+
def render(self, whitespace: bool = False, shared_image_groups: list[list[int]] | None = None) -> list[tuple[int, bytearray]]:
|
|
1168
|
+
sprite_data, image_data, animation_pointers, animation_data, tiles = self.assemble_from_tables(self.sprites, whitespace, shared_image_groups)
|
|
1126
1169
|
|
|
1127
1170
|
# Zero out all sprite data ranges before writing to prevent leftover data
|
|
1128
1171
|
zero_ranges = []
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/allies/ally.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battles/enums.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/battles/music.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/dialogs/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/enemies/enums.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/items/classes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/items/enums.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/shops/classes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder/datatypes/spells/enums.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder.egg-info/requires.txt
RENAMED
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/smrpgpatchbuilder.egg-info/top_level.txt
RENAMED
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/tests/animations/test_animationscripts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/tests/overworld/test_actionscripts.py
RENAMED
|
File without changes
|
{smrpgpatchbuilder-4.1.2 → smrpgpatchbuilder-4.1.4}/src/tests/overworld/test_eventscripts.py
RENAMED
|
File without changes
|