smrpgpatchbuilder 7.1.13__tar.gz → 7.1.16__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-7.1.13 → smrpgpatchbuilder-7.1.16}/MANIFEST.in +1 -0
- {smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder.egg-info → smrpgpatchbuilder-7.1.16}/PKG-INFO +41 -40
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/README.md +38 -38
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/pyproject.toml +8 -4
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/graphics/classes.py +0 -1
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/items/classes.py +20 -3
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/items/enums.py +9 -1
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16/src/smrpgpatchbuilder.egg-info}/PKG-INFO +41 -40
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder.egg-info/SOURCES.txt +1 -77
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder.egg-info/requires.txt +2 -0
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/manage.py +0 -15
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/allyassembler.py +0 -126
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/allydisassembler.py +0 -381
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/animationassembler.py +0 -71
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/animationdisassembler.py +0 -3623
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/battleassembler.py +0 -73
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/battledialogassembler.py +0 -73
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/battledialogdisassembler.py +0 -134
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/battledisassembler.py +0 -727
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/bowser_tile_rearranger.py +0 -308
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/comboassembler.py +0 -220
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/combodisassembler.py +0 -209
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/dialogassembler.py +0 -66
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/dialogdisassembler.py +0 -261
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/enemyassembler.py +0 -134
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/enemyattackassembler.py +0 -71
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/enemyattackdisassembler.py +0 -203
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/enemydisassembler.py +0 -592
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/eventassembler.py +0 -83
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/eventconverter.py +0 -2183
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/eventidentifieraudit.py +0 -8
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/eventpalettedisassembler.py +0 -132
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/generatesample.py +0 -142
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/graphicsassembler.py +0 -71
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/graphicsdisassembler.py +0 -566
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/input_file_parser.py +0 -519
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/itemassembler.py +0 -124
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/itemdisassembler.py +0 -612
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/legacy/__init__.py +0 -0
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/legacy/docstrings.py +0 -202
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/legacy/eventdisassembler.py +0 -2011
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/legacy/eventtables.py +0 -1261
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/legacy/objectsequenceassembler.py +0 -13
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/legacy/objectsequencedisassembler.py +0 -1353
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/legacy/objectsequencetables.py +0 -61
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/make_seed.py +0 -78
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/move_spell_gfx.py +0 -157
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/npcmodelassembler.py +0 -16
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/npcmodeldisassembler.py +0 -99
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/objectassembler.py +0 -34
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/objectdisassembler.py +0 -759
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/packassembler.py +0 -184
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/packdisassembler.py +0 -365
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/packetassembler.py +0 -71
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/packetdisassembler.py +0 -169
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/palettebytes.py +0 -542
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/partitionanalyzer.py +0 -93
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/roomassembler.py +0 -140
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/roomconverter.py +0 -550
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/roomdisassembler.py +0 -1060
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/shopassembler.py +0 -171
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/shopdisassembler.py +0 -181
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/space_reassigner.py +0 -240
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/spellassembler.py +0 -71
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/spelldisassembler.py +0 -380
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/spritepalettedisassembler.py +0 -127
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/unused_gfx_finder.py +0 -64
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/unused_gfx_remover old.py +0 -261
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/unused_gfx_remover.py +0 -267
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/variableparser.py +0 -54
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/worldmaplocationassembler.py +0 -171
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/worldmaplocationdisassembler.py +0 -349
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/django/settings.py +0 -17
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/utils/disassembler_common.py +0 -264
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/utils/npcs.py +0 -7
- smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/utils/strings.py +0 -7
- smrpgpatchbuilder-7.1.13/src/tests/animations/test_animationscripts.py +0 -1893
- smrpgpatchbuilder-7.1.13/src/tests/dialogs/__init__.py +0 -0
- smrpgpatchbuilder-7.1.13/src/tests/dialogs/test_formatter.py +0 -346
- smrpgpatchbuilder-7.1.13/src/tests/levels/__init__.py +0 -0
- smrpgpatchbuilder-7.1.13/src/tests/levels/test_room_collection.py +0 -87
- smrpgpatchbuilder-7.1.13/src/tests/minecart/test_minecart.py +0 -88
- smrpgpatchbuilder-7.1.13/src/tests/monsters/test_ai.py +0 -385
- smrpgpatchbuilder-7.1.13/src/tests/overworld/test_actionscripts.py +0 -1928
- smrpgpatchbuilder-7.1.13/src/tests/overworld/test_eventscripts.py +0 -2387
- smrpgpatchbuilder-7.1.13/src/tests/scripts_common/test_script_helpers.py +0 -45
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/LICENSE +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/setup.cfg +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/allies/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/allies/ally.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/allies/ally_collection.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/battle_targets.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/bonus_messages.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/flash_colours.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/layer_priority_type.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/mask_effects.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/message_type.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/origins.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/pause_until.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/shift_type.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/types/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/types/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/wave_effect.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/commands.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/types/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/types/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/ids/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/ids/monster_entrances.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/types.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/battle_dialog_collection.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/enums.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/formations_packs/types/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/formations_packs/types/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/ids/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/ids/misc.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/music.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/types/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/types/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/characters/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/characters/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/characters/constants.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/characters/enums.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/formatter.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/ids/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/ids/dialog_bank_ids.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/ids/misc.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/ids/types/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/ids/types/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/utils.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/enemies/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/enemies/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/enemies/constants.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/enemies/enums.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/enemy_attacks/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/enemy_attacks/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/enemy_attacks/constants.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/graphics/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/items/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/items/constants.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/items/encoding.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/levels/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/levels/room_collection.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/minecart/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/minecart/_vanilla_block.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/minecart/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/minecart/constants.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/minecart/lz3.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/command_types.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/targets.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/types/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/types/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/commands.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/types/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/types/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/ids/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/ids/misc.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/types.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/numbers/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/numbers/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/sequence_speeds.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/types/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/types/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/vram_priority.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/commands.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/types/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/types/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/ids/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/ids/misc.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/area_objects.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/colours.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/controller_inputs.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/coords.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/directions.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/intro_title_text.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/layers.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/palette_rows.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/palette_types.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/scenes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/tutorials.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/area_object.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/battlefield.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/byte_var.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/colour.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/controller_input.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/coord.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/direction.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/flag.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/intro_title_text.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/layer.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/packet.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/palette_row.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/palette_type.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/party_character.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/scene.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/short_var.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/tutorial.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/commands.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/types/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/types/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/ids/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/ids/misc.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/ids/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/ids/misc.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/scripts_common/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/scripts_common/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/shops/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/shops/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/arguments/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/arguments/damage_modifiers.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/arguments/timing_properties.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/arguments/types/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/arguments/types/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/enums.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/ids/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/ids/misc.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/ally_palettes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/collection.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/disassembler.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/exceptions.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/ids/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/ids/event_palettes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/ids/misc.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/ids/sprite_palettes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/palette.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/sprite.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/world_map_locations/__init__.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/world_map_locations/classes.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/utils/number.py +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder.egg-info/dependency_links.txt +0 -0
- {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder.egg-info/top_level.txt +0 -0
{smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder.egg-info → smrpgpatchbuilder-7.1.16}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: smrpgpatchbuilder
|
|
3
|
-
Version: 7.1.
|
|
3
|
+
Version: 7.1.16
|
|
4
4
|
Summary: Patchable base class support for some SMRPG concepts similar to their definitions in Lazy Shell
|
|
5
5
|
Author-email: pidgezero_one <s.kischak@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -11,7 +11,8 @@ Classifier: Operating System :: OS Independent
|
|
|
11
11
|
Requires-Python: >=3.12
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
License-File: LICENSE
|
|
14
|
-
|
|
14
|
+
Provides-Extra: cli
|
|
15
|
+
Requires-Dist: Django>=5.1; extra == "cli"
|
|
15
16
|
Dynamic: license-file
|
|
16
17
|
|
|
17
18
|
# SMRPG Patch Builder
|
|
@@ -100,7 +101,7 @@ Make sure that even if you don't rename any variables, **do not delete any lines
|
|
|
100
101
|
|
|
101
102
|
Run
|
|
102
103
|
```bash
|
|
103
|
-
PYTHONPATH=src python
|
|
104
|
+
PYTHONPATH=src python manage.py variableparser
|
|
104
105
|
```
|
|
105
106
|
in the root folder of this repo. It will create files in `./src/disassembler_output/variables` that define Python variables according to the names you gave in Step 1. Everything else you disassemble will be using these.
|
|
106
107
|
|
|
@@ -108,10 +109,10 @@ in the root folder of this repo. It will create files in `./src/disassembler_out
|
|
|
108
109
|
|
|
109
110
|
Disassemble items, spells, monster attacks, and packets by running:
|
|
110
111
|
```bash
|
|
111
|
-
PYTHONPATH=src python
|
|
112
|
-
PYTHONPATH=src python
|
|
113
|
-
PYTHONPATH=src python
|
|
114
|
-
PYTHONPATH=src python
|
|
112
|
+
PYTHONPATH=src python manage.py itemdisassembler --rom "/path/to/your/smrpg/rom"
|
|
113
|
+
PYTHONPATH=src python manage.py enemyattackdisassembler --rom "/path/to/your/smrpg/rom"
|
|
114
|
+
PYTHONPATH=src python manage.py spelldisassembler --rom "/path/to/your/smrpg/rom"
|
|
115
|
+
PYTHONPATH=src python manage.py packetdisassembler --rom "/path/to/your/smrpg/rom"
|
|
115
116
|
```
|
|
116
117
|
|
|
117
118
|
These will produce:
|
|
@@ -126,7 +127,7 @@ It is important to do these next because other things will use these. Event scri
|
|
|
126
127
|
|
|
127
128
|
Disassemble monsters:
|
|
128
129
|
```bash
|
|
129
|
-
PYTHONPATH=src python
|
|
130
|
+
PYTHONPATH=src python manage.py enemydisassembler --rom "/path/to/your/smrpg/rom"
|
|
130
131
|
```
|
|
131
132
|
|
|
132
133
|
These will produce `./src/disassembler_output/enemies/enemies.py`. It is important to do this now because other data types (battle animations, monster AI, battle packs) depend on this data.
|
|
@@ -141,11 +142,11 @@ Now you can disassemble whatever else you want. There are no more dependencies.
|
|
|
141
142
|
|
|
142
143
|
Disassemble:
|
|
143
144
|
```bash
|
|
144
|
-
PYTHONPATH=src python
|
|
145
|
+
PYTHONPATH=src python manage.py eventconverter --rom "path/to/your/smrpg/rom" # be warned, this will probably take a few hours
|
|
145
146
|
```
|
|
146
147
|
Assemble:
|
|
147
148
|
```bash
|
|
148
|
-
PYTHONPATH=src python
|
|
149
|
+
PYTHONPATH=src python manage.py eventassembler -r path/to/your/smrpg/rom -t -b
|
|
149
150
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
150
151
|
```
|
|
151
152
|
Writes to:
|
|
@@ -261,11 +262,11 @@ Notes:
|
|
|
261
262
|
|
|
262
263
|
Disassemble:
|
|
263
264
|
```bash
|
|
264
|
-
PYTHONPATH=src python
|
|
265
|
+
PYTHONPATH=src python manage.py animationdisassembler --rom "path/to/your/smrpg/rom"
|
|
265
266
|
```
|
|
266
267
|
Assemble:
|
|
267
268
|
```bash
|
|
268
|
-
PYTHONPATH=src python
|
|
269
|
+
PYTHONPATH=src python manage.py animationassembler -r path/to/your/smrpg/rom -t -b
|
|
269
270
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
270
271
|
```
|
|
271
272
|
Writes to:
|
|
@@ -330,11 +331,11 @@ This is still easily the most volatile part of the game that this repo lets you
|
|
|
330
331
|
|
|
331
332
|
Disassemble:
|
|
332
333
|
```bash
|
|
333
|
-
PYTHONPATH=src python
|
|
334
|
+
PYTHONPATH=src python manage.py enemydisassembler --rom "path/to/your/smrpg/rom"
|
|
334
335
|
```
|
|
335
336
|
Assemble:
|
|
336
337
|
```bash
|
|
337
|
-
PYTHONPATH=src python
|
|
338
|
+
PYTHONPATH=src python manage.py enemyassembler -r path/to/your/smrpg/rom -t -b
|
|
338
339
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
339
340
|
```
|
|
340
341
|
Writes to:
|
|
@@ -404,11 +405,11 @@ This was based off of the battle disassembler that patcdr made in smrpg randomiz
|
|
|
404
405
|
|
|
405
406
|
Disassemble:
|
|
406
407
|
```bash
|
|
407
|
-
PYTHONPATH=src python
|
|
408
|
+
PYTHONPATH=src python manage.py battledisassembler --rom "path/to/your/smrpg/rom"
|
|
408
409
|
```
|
|
409
410
|
Assemble:
|
|
410
411
|
```bash
|
|
411
|
-
PYTHONPATH=src python
|
|
412
|
+
PYTHONPATH=src python manage.py battleassembler -r path/to/your/smrpg/rom -t -b
|
|
412
413
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
413
414
|
```
|
|
414
415
|
Writes to:
|
|
@@ -462,11 +463,11 @@ You can Ctrl+F the name of a command in Lazy Shell in src/smrpgpatchbuilder/data
|
|
|
462
463
|
|
|
463
464
|
Disassemble:
|
|
464
465
|
```bash
|
|
465
|
-
PYTHONPATH=src python
|
|
466
|
+
PYTHONPATH=src python manage.py enemyattackdisassembler --rom "path/to/your/smrpg/rom"
|
|
466
467
|
```
|
|
467
468
|
Assemble:
|
|
468
469
|
```bash
|
|
469
|
-
PYTHONPATH=src python
|
|
470
|
+
PYTHONPATH=src python manage.py enemyattackassembler -r path/to/your/smrpg/rom -t -b
|
|
470
471
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
471
472
|
```
|
|
472
473
|
Writes to:
|
|
@@ -482,11 +483,11 @@ The disassembler creates an `EnemyAttackCollection` (in the same file) that inst
|
|
|
482
483
|
|
|
483
484
|
Disassemble:
|
|
484
485
|
```bash
|
|
485
|
-
PYTHONPATH=src python
|
|
486
|
+
PYTHONPATH=src python manage.py spelldisassembler --rom "path/to/your/smrpg/rom"
|
|
486
487
|
```
|
|
487
488
|
Assemble:
|
|
488
489
|
```bash
|
|
489
|
-
PYTHONPATH=src python
|
|
490
|
+
PYTHONPATH=src python manage.py spellassembler -r path/to/your/smrpg/rom -t -b
|
|
490
491
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
491
492
|
```
|
|
492
493
|
Writes to:
|
|
@@ -502,11 +503,11 @@ The disassembler creates a `SpellCollection` (in the same file) that instantiate
|
|
|
502
503
|
|
|
503
504
|
Disassemble:
|
|
504
505
|
```bash
|
|
505
|
-
PYTHONPATH=src python
|
|
506
|
+
PYTHONPATH=src python manage.py spelldisassembler --rom "path/to/your/smrpg/rom"
|
|
506
507
|
```
|
|
507
508
|
Assemble:
|
|
508
509
|
```bash
|
|
509
|
-
PYTHONPATH=src python
|
|
510
|
+
PYTHONPATH=src python manage.py spellassembler -r path/to/your/smrpg/rom -t -b
|
|
510
511
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
511
512
|
```
|
|
512
513
|
Writes to:
|
|
@@ -577,11 +578,11 @@ The assembler can rename your characters, but be aware that it will not change t
|
|
|
577
578
|
|
|
578
579
|
Disassemble:
|
|
579
580
|
```bash
|
|
580
|
-
PYTHONPATH=src python
|
|
581
|
+
PYTHONPATH=src python manage.py itemdisassembler --rom "path/to/your/smrpg/rom"
|
|
581
582
|
```
|
|
582
583
|
Assemble:
|
|
583
584
|
```bash
|
|
584
|
-
PYTHONPATH=src python
|
|
585
|
+
PYTHONPATH=src python manage.py itemassembler -r path/to/your/smrpg/rom -t -b
|
|
585
586
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
586
587
|
```
|
|
587
588
|
Writes to:
|
|
@@ -662,11 +663,11 @@ The disassembler creates an `ItemCollection` (in the same file) that instantiate
|
|
|
662
663
|
|
|
663
664
|
Disassemble:
|
|
664
665
|
```bash
|
|
665
|
-
PYTHONPATH=src python
|
|
666
|
+
PYTHONPATH=src python manage.py graphicsdisassembler --rom "path/to/your/smrpg/rom"
|
|
666
667
|
```
|
|
667
668
|
Assemble:
|
|
668
669
|
```bash
|
|
669
|
-
PYTHONPATH=src python
|
|
670
|
+
PYTHONPATH=src python manage.py graphicsassembler -r path/to/your/smrpg/rom -t -b
|
|
670
671
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
671
672
|
```
|
|
672
673
|
Writes to:
|
|
@@ -722,11 +723,11 @@ Disassembly will produce a `SpriteCollection`. If you want to import your sprite
|
|
|
722
723
|
|
|
723
724
|
Disassemble:
|
|
724
725
|
```bash
|
|
725
|
-
PYTHONPATH=src python
|
|
726
|
+
PYTHONPATH=src python manage.py shopdisassembler --rom "path/to/your/smrpg/rom"
|
|
726
727
|
```
|
|
727
728
|
Assemble:
|
|
728
729
|
```bash
|
|
729
|
-
PYTHONPATH=src python
|
|
730
|
+
PYTHONPATH=src python manage.py shopassembler -r path/to/your/smrpg/rom -t -b
|
|
730
731
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
731
732
|
```
|
|
732
733
|
Writes to:
|
|
@@ -758,11 +759,11 @@ shops[SH06_FROG_COIN_EMPORIUM] = Shop(
|
|
|
758
759
|
|
|
759
760
|
Disassemble:
|
|
760
761
|
```bash
|
|
761
|
-
PYTHONPATH=src python
|
|
762
|
+
PYTHONPATH=src python manage.py dialogdisassembler --rom "path/to/your/smrpg/rom"
|
|
762
763
|
```
|
|
763
764
|
Assemble:
|
|
764
765
|
```bash
|
|
765
|
-
PYTHONPATH=src python
|
|
766
|
+
PYTHONPATH=src python manage.py dialogassembler -r path/to/your/smrpg/rom -t -b
|
|
766
767
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
767
768
|
```
|
|
768
769
|
Writes to:
|
|
@@ -809,11 +810,11 @@ Your ROM also uses a customizable compression table which gets written to `disas
|
|
|
809
810
|
|
|
810
811
|
Disassemble:
|
|
811
812
|
```bash
|
|
812
|
-
PYTHONPATH=src python
|
|
813
|
+
PYTHONPATH=src python manage.py battledialogdisassembler --rom "path/to/your/smrpg/rom"
|
|
813
814
|
```
|
|
814
815
|
Assemble:
|
|
815
816
|
```bash
|
|
816
|
-
PYTHONPATH=src python
|
|
817
|
+
PYTHONPATH=src python manage.py battledialogassembler -r path/to/your/smrpg/rom -t -b
|
|
817
818
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
818
819
|
```
|
|
819
820
|
Writes to:
|
|
@@ -831,11 +832,11 @@ The disassembler creates a `BattleDialogCollection` (in the same file). If you w
|
|
|
831
832
|
|
|
832
833
|
Disassemble:
|
|
833
834
|
```bash
|
|
834
|
-
PYTHONPATH=src python
|
|
835
|
+
PYTHONPATH=src python manage.py packdisassembler --rom "path/to/your/smrpg/rom"
|
|
835
836
|
```
|
|
836
837
|
Assemble:
|
|
837
838
|
```bash
|
|
838
|
-
PYTHONPATH=src python
|
|
839
|
+
PYTHONPATH=src python manage.py packassembler -r path/to/your/smrpg/rom -t -b
|
|
839
840
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
840
841
|
```
|
|
841
842
|
Writes to:
|
|
@@ -902,14 +903,14 @@ The room disassembler handles loading events, loading music, event tiles, exit f
|
|
|
902
903
|
|
|
903
904
|
Disassemble:
|
|
904
905
|
```bash
|
|
905
|
-
PYTHONPATH=src python
|
|
906
|
+
PYTHONPATH=src python manage.py roomdisassembler --rom "path/to/your/smrpg/rom" --large-partition-table
|
|
906
907
|
# The --large-partition-table argument can be included or omitted.
|
|
907
908
|
# If included, it will try to read partitions from 0x1DEBE0 instead of 0x1DDE00.
|
|
908
909
|
# You should only use this if you've already assembled your rooms before such that the partitions have moved here.
|
|
909
910
|
```
|
|
910
911
|
Assemble:
|
|
911
912
|
```bash
|
|
912
|
-
PYTHONPATH=src python
|
|
913
|
+
PYTHONPATH=src python manage.py roomassembler -r path/to/your/smrpg/rom -t -b --large-partition-table
|
|
913
914
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
914
915
|
# The --large-partition-table argument can be included or omitted.
|
|
915
916
|
# If included, it will write partitions from 0x1DEBE0 instead of 0x1DDE00.
|
|
@@ -1160,11 +1161,11 @@ Here are some things to be aware of:
|
|
|
1160
1161
|
|
|
1161
1162
|
Disassemble:
|
|
1162
1163
|
```bash
|
|
1163
|
-
PYTHONPATH=src python
|
|
1164
|
+
PYTHONPATH=src python manage.py packetdisassembler --rom "path/to/your/smrpg/rom"
|
|
1164
1165
|
```
|
|
1165
1166
|
Assemble:
|
|
1166
1167
|
```bash
|
|
1167
|
-
PYTHONPATH=src python
|
|
1168
|
+
PYTHONPATH=src python manage.py packetassembler -r path/to/your/smrpg/rom -t -b
|
|
1168
1169
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
1169
1170
|
```
|
|
1170
1171
|
Writes to:
|
|
@@ -1192,11 +1193,11 @@ The disassembler produces a list of 255 packet definitions and a PacketCollectio
|
|
|
1192
1193
|
|
|
1193
1194
|
Disassemble:
|
|
1194
1195
|
```bash
|
|
1195
|
-
PYTHONPATH=src python
|
|
1196
|
+
PYTHONPATH=src python manage.py worldmaplocationdisassembler --rom "path/to/your/smrpg/rom"
|
|
1196
1197
|
```
|
|
1197
1198
|
Assemble:
|
|
1198
1199
|
```bash
|
|
1199
|
-
PYTHONPATH=src python
|
|
1200
|
+
PYTHONPATH=src python manage.py worldmaplocationassembler -r path/to/your/smrpg/rom -t -b
|
|
1200
1201
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
1201
1202
|
```
|
|
1202
1203
|
Writes to:
|
|
@@ -84,7 +84,7 @@ Make sure that even if you don't rename any variables, **do not delete any lines
|
|
|
84
84
|
|
|
85
85
|
Run
|
|
86
86
|
```bash
|
|
87
|
-
PYTHONPATH=src python
|
|
87
|
+
PYTHONPATH=src python manage.py variableparser
|
|
88
88
|
```
|
|
89
89
|
in the root folder of this repo. It will create files in `./src/disassembler_output/variables` that define Python variables according to the names you gave in Step 1. Everything else you disassemble will be using these.
|
|
90
90
|
|
|
@@ -92,10 +92,10 @@ in the root folder of this repo. It will create files in `./src/disassembler_out
|
|
|
92
92
|
|
|
93
93
|
Disassemble items, spells, monster attacks, and packets by running:
|
|
94
94
|
```bash
|
|
95
|
-
PYTHONPATH=src python
|
|
96
|
-
PYTHONPATH=src python
|
|
97
|
-
PYTHONPATH=src python
|
|
98
|
-
PYTHONPATH=src python
|
|
95
|
+
PYTHONPATH=src python manage.py itemdisassembler --rom "/path/to/your/smrpg/rom"
|
|
96
|
+
PYTHONPATH=src python manage.py enemyattackdisassembler --rom "/path/to/your/smrpg/rom"
|
|
97
|
+
PYTHONPATH=src python manage.py spelldisassembler --rom "/path/to/your/smrpg/rom"
|
|
98
|
+
PYTHONPATH=src python manage.py packetdisassembler --rom "/path/to/your/smrpg/rom"
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
These will produce:
|
|
@@ -110,7 +110,7 @@ It is important to do these next because other things will use these. Event scri
|
|
|
110
110
|
|
|
111
111
|
Disassemble monsters:
|
|
112
112
|
```bash
|
|
113
|
-
PYTHONPATH=src python
|
|
113
|
+
PYTHONPATH=src python manage.py enemydisassembler --rom "/path/to/your/smrpg/rom"
|
|
114
114
|
```
|
|
115
115
|
|
|
116
116
|
These will produce `./src/disassembler_output/enemies/enemies.py`. It is important to do this now because other data types (battle animations, monster AI, battle packs) depend on this data.
|
|
@@ -125,11 +125,11 @@ Now you can disassemble whatever else you want. There are no more dependencies.
|
|
|
125
125
|
|
|
126
126
|
Disassemble:
|
|
127
127
|
```bash
|
|
128
|
-
PYTHONPATH=src python
|
|
128
|
+
PYTHONPATH=src python manage.py eventconverter --rom "path/to/your/smrpg/rom" # be warned, this will probably take a few hours
|
|
129
129
|
```
|
|
130
130
|
Assemble:
|
|
131
131
|
```bash
|
|
132
|
-
PYTHONPATH=src python
|
|
132
|
+
PYTHONPATH=src python manage.py eventassembler -r path/to/your/smrpg/rom -t -b
|
|
133
133
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
134
134
|
```
|
|
135
135
|
Writes to:
|
|
@@ -245,11 +245,11 @@ Notes:
|
|
|
245
245
|
|
|
246
246
|
Disassemble:
|
|
247
247
|
```bash
|
|
248
|
-
PYTHONPATH=src python
|
|
248
|
+
PYTHONPATH=src python manage.py animationdisassembler --rom "path/to/your/smrpg/rom"
|
|
249
249
|
```
|
|
250
250
|
Assemble:
|
|
251
251
|
```bash
|
|
252
|
-
PYTHONPATH=src python
|
|
252
|
+
PYTHONPATH=src python manage.py animationassembler -r path/to/your/smrpg/rom -t -b
|
|
253
253
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
254
254
|
```
|
|
255
255
|
Writes to:
|
|
@@ -314,11 +314,11 @@ This is still easily the most volatile part of the game that this repo lets you
|
|
|
314
314
|
|
|
315
315
|
Disassemble:
|
|
316
316
|
```bash
|
|
317
|
-
PYTHONPATH=src python
|
|
317
|
+
PYTHONPATH=src python manage.py enemydisassembler --rom "path/to/your/smrpg/rom"
|
|
318
318
|
```
|
|
319
319
|
Assemble:
|
|
320
320
|
```bash
|
|
321
|
-
PYTHONPATH=src python
|
|
321
|
+
PYTHONPATH=src python manage.py enemyassembler -r path/to/your/smrpg/rom -t -b
|
|
322
322
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
323
323
|
```
|
|
324
324
|
Writes to:
|
|
@@ -388,11 +388,11 @@ This was based off of the battle disassembler that patcdr made in smrpg randomiz
|
|
|
388
388
|
|
|
389
389
|
Disassemble:
|
|
390
390
|
```bash
|
|
391
|
-
PYTHONPATH=src python
|
|
391
|
+
PYTHONPATH=src python manage.py battledisassembler --rom "path/to/your/smrpg/rom"
|
|
392
392
|
```
|
|
393
393
|
Assemble:
|
|
394
394
|
```bash
|
|
395
|
-
PYTHONPATH=src python
|
|
395
|
+
PYTHONPATH=src python manage.py battleassembler -r path/to/your/smrpg/rom -t -b
|
|
396
396
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
397
397
|
```
|
|
398
398
|
Writes to:
|
|
@@ -446,11 +446,11 @@ You can Ctrl+F the name of a command in Lazy Shell in src/smrpgpatchbuilder/data
|
|
|
446
446
|
|
|
447
447
|
Disassemble:
|
|
448
448
|
```bash
|
|
449
|
-
PYTHONPATH=src python
|
|
449
|
+
PYTHONPATH=src python manage.py enemyattackdisassembler --rom "path/to/your/smrpg/rom"
|
|
450
450
|
```
|
|
451
451
|
Assemble:
|
|
452
452
|
```bash
|
|
453
|
-
PYTHONPATH=src python
|
|
453
|
+
PYTHONPATH=src python manage.py enemyattackassembler -r path/to/your/smrpg/rom -t -b
|
|
454
454
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
455
455
|
```
|
|
456
456
|
Writes to:
|
|
@@ -466,11 +466,11 @@ The disassembler creates an `EnemyAttackCollection` (in the same file) that inst
|
|
|
466
466
|
|
|
467
467
|
Disassemble:
|
|
468
468
|
```bash
|
|
469
|
-
PYTHONPATH=src python
|
|
469
|
+
PYTHONPATH=src python manage.py spelldisassembler --rom "path/to/your/smrpg/rom"
|
|
470
470
|
```
|
|
471
471
|
Assemble:
|
|
472
472
|
```bash
|
|
473
|
-
PYTHONPATH=src python
|
|
473
|
+
PYTHONPATH=src python manage.py spellassembler -r path/to/your/smrpg/rom -t -b
|
|
474
474
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
475
475
|
```
|
|
476
476
|
Writes to:
|
|
@@ -486,11 +486,11 @@ The disassembler creates a `SpellCollection` (in the same file) that instantiate
|
|
|
486
486
|
|
|
487
487
|
Disassemble:
|
|
488
488
|
```bash
|
|
489
|
-
PYTHONPATH=src python
|
|
489
|
+
PYTHONPATH=src python manage.py spelldisassembler --rom "path/to/your/smrpg/rom"
|
|
490
490
|
```
|
|
491
491
|
Assemble:
|
|
492
492
|
```bash
|
|
493
|
-
PYTHONPATH=src python
|
|
493
|
+
PYTHONPATH=src python manage.py spellassembler -r path/to/your/smrpg/rom -t -b
|
|
494
494
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
495
495
|
```
|
|
496
496
|
Writes to:
|
|
@@ -561,11 +561,11 @@ The assembler can rename your characters, but be aware that it will not change t
|
|
|
561
561
|
|
|
562
562
|
Disassemble:
|
|
563
563
|
```bash
|
|
564
|
-
PYTHONPATH=src python
|
|
564
|
+
PYTHONPATH=src python manage.py itemdisassembler --rom "path/to/your/smrpg/rom"
|
|
565
565
|
```
|
|
566
566
|
Assemble:
|
|
567
567
|
```bash
|
|
568
|
-
PYTHONPATH=src python
|
|
568
|
+
PYTHONPATH=src python manage.py itemassembler -r path/to/your/smrpg/rom -t -b
|
|
569
569
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
570
570
|
```
|
|
571
571
|
Writes to:
|
|
@@ -646,11 +646,11 @@ The disassembler creates an `ItemCollection` (in the same file) that instantiate
|
|
|
646
646
|
|
|
647
647
|
Disassemble:
|
|
648
648
|
```bash
|
|
649
|
-
PYTHONPATH=src python
|
|
649
|
+
PYTHONPATH=src python manage.py graphicsdisassembler --rom "path/to/your/smrpg/rom"
|
|
650
650
|
```
|
|
651
651
|
Assemble:
|
|
652
652
|
```bash
|
|
653
|
-
PYTHONPATH=src python
|
|
653
|
+
PYTHONPATH=src python manage.py graphicsassembler -r path/to/your/smrpg/rom -t -b
|
|
654
654
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
655
655
|
```
|
|
656
656
|
Writes to:
|
|
@@ -706,11 +706,11 @@ Disassembly will produce a `SpriteCollection`. If you want to import your sprite
|
|
|
706
706
|
|
|
707
707
|
Disassemble:
|
|
708
708
|
```bash
|
|
709
|
-
PYTHONPATH=src python
|
|
709
|
+
PYTHONPATH=src python manage.py shopdisassembler --rom "path/to/your/smrpg/rom"
|
|
710
710
|
```
|
|
711
711
|
Assemble:
|
|
712
712
|
```bash
|
|
713
|
-
PYTHONPATH=src python
|
|
713
|
+
PYTHONPATH=src python manage.py shopassembler -r path/to/your/smrpg/rom -t -b
|
|
714
714
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
715
715
|
```
|
|
716
716
|
Writes to:
|
|
@@ -742,11 +742,11 @@ shops[SH06_FROG_COIN_EMPORIUM] = Shop(
|
|
|
742
742
|
|
|
743
743
|
Disassemble:
|
|
744
744
|
```bash
|
|
745
|
-
PYTHONPATH=src python
|
|
745
|
+
PYTHONPATH=src python manage.py dialogdisassembler --rom "path/to/your/smrpg/rom"
|
|
746
746
|
```
|
|
747
747
|
Assemble:
|
|
748
748
|
```bash
|
|
749
|
-
PYTHONPATH=src python
|
|
749
|
+
PYTHONPATH=src python manage.py dialogassembler -r path/to/your/smrpg/rom -t -b
|
|
750
750
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
751
751
|
```
|
|
752
752
|
Writes to:
|
|
@@ -793,11 +793,11 @@ Your ROM also uses a customizable compression table which gets written to `disas
|
|
|
793
793
|
|
|
794
794
|
Disassemble:
|
|
795
795
|
```bash
|
|
796
|
-
PYTHONPATH=src python
|
|
796
|
+
PYTHONPATH=src python manage.py battledialogdisassembler --rom "path/to/your/smrpg/rom"
|
|
797
797
|
```
|
|
798
798
|
Assemble:
|
|
799
799
|
```bash
|
|
800
|
-
PYTHONPATH=src python
|
|
800
|
+
PYTHONPATH=src python manage.py battledialogassembler -r path/to/your/smrpg/rom -t -b
|
|
801
801
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
802
802
|
```
|
|
803
803
|
Writes to:
|
|
@@ -815,11 +815,11 @@ The disassembler creates a `BattleDialogCollection` (in the same file). If you w
|
|
|
815
815
|
|
|
816
816
|
Disassemble:
|
|
817
817
|
```bash
|
|
818
|
-
PYTHONPATH=src python
|
|
818
|
+
PYTHONPATH=src python manage.py packdisassembler --rom "path/to/your/smrpg/rom"
|
|
819
819
|
```
|
|
820
820
|
Assemble:
|
|
821
821
|
```bash
|
|
822
|
-
PYTHONPATH=src python
|
|
822
|
+
PYTHONPATH=src python manage.py packassembler -r path/to/your/smrpg/rom -t -b
|
|
823
823
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
824
824
|
```
|
|
825
825
|
Writes to:
|
|
@@ -886,14 +886,14 @@ The room disassembler handles loading events, loading music, event tiles, exit f
|
|
|
886
886
|
|
|
887
887
|
Disassemble:
|
|
888
888
|
```bash
|
|
889
|
-
PYTHONPATH=src python
|
|
889
|
+
PYTHONPATH=src python manage.py roomdisassembler --rom "path/to/your/smrpg/rom" --large-partition-table
|
|
890
890
|
# The --large-partition-table argument can be included or omitted.
|
|
891
891
|
# If included, it will try to read partitions from 0x1DEBE0 instead of 0x1DDE00.
|
|
892
892
|
# You should only use this if you've already assembled your rooms before such that the partitions have moved here.
|
|
893
893
|
```
|
|
894
894
|
Assemble:
|
|
895
895
|
```bash
|
|
896
|
-
PYTHONPATH=src python
|
|
896
|
+
PYTHONPATH=src python manage.py roomassembler -r path/to/your/smrpg/rom -t -b --large-partition-table
|
|
897
897
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
898
898
|
# The --large-partition-table argument can be included or omitted.
|
|
899
899
|
# If included, it will write partitions from 0x1DEBE0 instead of 0x1DDE00.
|
|
@@ -1144,11 +1144,11 @@ Here are some things to be aware of:
|
|
|
1144
1144
|
|
|
1145
1145
|
Disassemble:
|
|
1146
1146
|
```bash
|
|
1147
|
-
PYTHONPATH=src python
|
|
1147
|
+
PYTHONPATH=src python manage.py packetdisassembler --rom "path/to/your/smrpg/rom"
|
|
1148
1148
|
```
|
|
1149
1149
|
Assemble:
|
|
1150
1150
|
```bash
|
|
1151
|
-
PYTHONPATH=src python
|
|
1151
|
+
PYTHONPATH=src python manage.py packetassembler -r path/to/your/smrpg/rom -t -b
|
|
1152
1152
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
1153
1153
|
```
|
|
1154
1154
|
Writes to:
|
|
@@ -1176,11 +1176,11 @@ The disassembler produces a list of 255 packet definitions and a PacketCollectio
|
|
|
1176
1176
|
|
|
1177
1177
|
Disassemble:
|
|
1178
1178
|
```bash
|
|
1179
|
-
PYTHONPATH=src python
|
|
1179
|
+
PYTHONPATH=src python manage.py worldmaplocationdisassembler --rom "path/to/your/smrpg/rom"
|
|
1180
1180
|
```
|
|
1181
1181
|
Assemble:
|
|
1182
1182
|
```bash
|
|
1183
|
-
PYTHONPATH=src python
|
|
1183
|
+
PYTHONPATH=src python manage.py worldmaplocationassembler -r path/to/your/smrpg/rom -t -b
|
|
1184
1184
|
# -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
|
|
1185
1185
|
```
|
|
1186
1186
|
Writes to:
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "smrpgpatchbuilder"
|
|
7
|
-
version = "7.1.
|
|
7
|
+
version = "7.1.16"
|
|
8
8
|
authors = [
|
|
9
9
|
{ name="pidgezero_one", email="s.kischak@gmail.com" },
|
|
10
10
|
]
|
|
@@ -17,9 +17,11 @@ classifiers = [
|
|
|
17
17
|
]
|
|
18
18
|
license = "MIT"
|
|
19
19
|
license-files = ["LICEN[CS]E*"]
|
|
20
|
-
dependencies=[
|
|
21
|
-
|
|
22
|
-
]
|
|
20
|
+
dependencies=[]
|
|
21
|
+
|
|
22
|
+
[project.optional-dependencies]
|
|
23
|
+
# Only the dis/assembler CLIs (run from a repo checkout) need Django.
|
|
24
|
+
cli = ["Django>=5.1"]
|
|
23
25
|
|
|
24
26
|
[project.urls]
|
|
25
27
|
Homepage = "https://github.com/pidgezero-one/smrpgpatchbuilder"
|
|
@@ -28,6 +30,8 @@ Issues = "https://github.com/pidgezero-one/smrpgpatchbuilder/issues"
|
|
|
28
30
|
[tool.setuptools.packages.find]
|
|
29
31
|
where = ["src"]
|
|
30
32
|
include = ["smrpgpatchbuilder*"]
|
|
33
|
+
# CLI dis/assemblers are a repo-checkout workflow, not part of the importable API.
|
|
34
|
+
exclude = ["smrpgpatchbuilder.management*"]
|
|
31
35
|
|
|
32
36
|
[tool.pytest.ini_options]
|
|
33
37
|
addopts = "-v -s"
|
|
@@ -212,6 +212,10 @@ class Item:
|
|
|
212
212
|
"""Update the effect type"""
|
|
213
213
|
self._effect_type = effect_type
|
|
214
214
|
|
|
215
|
+
def _effect_type_byte(self) -> int:
|
|
216
|
+
"""The value of item stat byte 1's effect type bits."""
|
|
217
|
+
return int(self._effect_type or 0)
|
|
218
|
+
|
|
215
219
|
@property
|
|
216
220
|
def inflict_type(self) -> InflictFunction | None:
|
|
217
221
|
"""The function that determines infliction logic"""
|
|
@@ -466,9 +470,7 @@ class Item:
|
|
|
466
470
|
val |= 1 << 7
|
|
467
471
|
data += ByteField(val).as_bytes()
|
|
468
472
|
|
|
469
|
-
val =
|
|
470
|
-
if self.effect_type is not None:
|
|
471
|
-
val = self.effect_type
|
|
473
|
+
val = self._effect_type_byte()
|
|
472
474
|
if self.overworld_menu_behaviour == OverworldMenuBehaviour.LEAD_TO_FP:
|
|
473
475
|
val |= 1 << 5
|
|
474
476
|
if self.overworld_menu_fill_hp:
|
|
@@ -533,6 +535,21 @@ ItemT = TypeVar("ItemT", bound=Item)
|
|
|
533
535
|
class Equipment(Item):
|
|
534
536
|
"""Base class for weapons, armor, and accessories."""
|
|
535
537
|
|
|
538
|
+
def _effect_type_byte(self) -> int:
|
|
539
|
+
"""Always both, for every equip.
|
|
540
|
+
|
|
541
|
+
The equip routine at $C2:BAE8 ORs byte 7 into the status immunity byte
|
|
542
|
+
when PROTECTION is set and ORs byte 8 into the enhancement byte when
|
|
543
|
+
INFLICTION is set, as two independent BIT tests. Either bit with an empty
|
|
544
|
+
source byte ORs in zero, so enabling both unconditionally costs nothing
|
|
545
|
+
and removes the failure mode entirely: any code that later adds a status
|
|
546
|
+
immunity or a temp buff to an equip just works, with nothing to remember.
|
|
547
|
+
|
|
548
|
+
NULLIFICATION is not representable here because it is never tested on the
|
|
549
|
+
equip path.
|
|
550
|
+
"""
|
|
551
|
+
return int(EffectType.PROTECTION | EffectType.INFLICTION)
|
|
552
|
+
|
|
536
553
|
def set_speed(self, speed: int) -> None:
|
|
537
554
|
"""Modify the base speed increase for this equip."""
|
|
538
555
|
assert -128 <= speed <= 127
|
{smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/items/enums.py
RENAMED
|
@@ -30,7 +30,15 @@ class ItemTypeValue(enum.IntEnum):
|
|
|
30
30
|
ACCESSORY = 0b10
|
|
31
31
|
ITEM = 0b11
|
|
32
32
|
|
|
33
|
-
class EffectType(enum.
|
|
33
|
+
class EffectType(enum.IntFlag):
|
|
34
|
+
"""Item stat byte 1. This is a bitfield, not a set of mutually exclusive
|
|
35
|
+
choices: the equip routine at $C2:BAE8 tests PROTECTION and INFLICTION with
|
|
36
|
+
two independent BIT instructions, so PROTECTION | INFLICTION grants both
|
|
37
|
+
status immunity (item byte 7) and permanent stat buffs (item byte 8).
|
|
38
|
+
|
|
39
|
+
NULLIFICATION is never tested on the equip path; it only applies to
|
|
40
|
+
consumables."""
|
|
41
|
+
|
|
34
42
|
INFLICTION = 0x02
|
|
35
43
|
PROTECTION = 0x01
|
|
36
44
|
NULLIFICATION = 0x04
|