smrpgpatchbuilder 6.2.12__tar.gz → 7.0.0__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.
Files changed (253) hide show
  1. {smrpgpatchbuilder-6.2.12/src/smrpgpatchbuilder.egg-info → smrpgpatchbuilder-7.0.0}/PKG-INFO +1 -1
  2. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/pyproject.toml +1 -1
  3. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/levels/classes.py +81 -164
  4. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/levels/room_collection.py +14 -38
  5. smrpgpatchbuilder-7.0.0/src/smrpgpatchbuilder/datatypes/minecart/__init__.py +28 -0
  6. smrpgpatchbuilder-7.0.0/src/smrpgpatchbuilder/datatypes/minecart/_vanilla_block.py +480 -0
  7. smrpgpatchbuilder-7.0.0/src/smrpgpatchbuilder/datatypes/minecart/classes.py +166 -0
  8. smrpgpatchbuilder-7.0.0/src/smrpgpatchbuilder/datatypes/minecart/constants.py +74 -0
  9. smrpgpatchbuilder-7.0.0/src/smrpgpatchbuilder/datatypes/minecart/lz3.py +192 -0
  10. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/commands.py +29 -8
  11. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/npcmodeldisassembler.py +4 -10
  12. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/roomconverter.py +6 -18
  13. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/roomdisassembler.py +6 -15
  14. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0/src/smrpgpatchbuilder.egg-info}/PKG-INFO +1 -1
  15. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder.egg-info/SOURCES.txt +6 -0
  16. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder.egg-info/dependency_links.txt +0 -0
  17. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder.egg-info/requires.txt +0 -0
  18. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder.egg-info/top_level.txt +0 -0
  19. smrpgpatchbuilder-7.0.0/src/tests/minecart/test_minecart.py +88 -0
  20. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/LICENSE +0 -0
  21. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/MANIFEST.in +0 -0
  22. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/README.md +0 -0
  23. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/setup.cfg +0 -0
  24. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/__init__.py +0 -0
  25. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/__init__.py +0 -0
  26. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/allies/__init__.py +0 -0
  27. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/allies/ally.py +0 -0
  28. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/allies/ally_collection.py +0 -0
  29. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/__init__.py +0 -0
  30. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/__init__.py +0 -0
  31. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/battle_targets.py +0 -0
  32. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/bonus_messages.py +0 -0
  33. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/flash_colours.py +0 -0
  34. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/layer_priority_type.py +0 -0
  35. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/mask_effects.py +0 -0
  36. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/message_type.py +0 -0
  37. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/origins.py +0 -0
  38. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/pause_until.py +0 -0
  39. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/shift_type.py +0 -0
  40. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/types/__init__.py +0 -0
  41. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/types/classes.py +0 -0
  42. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/wave_effect.py +0 -0
  43. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/__init__.py +0 -0
  44. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/commands.py +0 -0
  45. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/types/__init__.py +0 -0
  46. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/types/classes.py +0 -0
  47. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/ids/__init__.py +0 -0
  48. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/ids/monster_entrances.py +0 -0
  49. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/types.py +0 -0
  50. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battles/__init__.py +0 -0
  51. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battles/battle_dialog_collection.py +0 -0
  52. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battles/enums.py +0 -0
  53. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battles/formations_packs/types/__init__.py +0 -0
  54. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battles/formations_packs/types/classes.py +0 -0
  55. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battles/ids/__init__.py +0 -0
  56. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battles/ids/misc.py +0 -0
  57. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battles/music.py +0 -0
  58. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battles/types/__init__.py +0 -0
  59. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/battles/types/classes.py +0 -0
  60. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/characters/__init__.py +0 -0
  61. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/characters/classes.py +0 -0
  62. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/characters/constants.py +0 -0
  63. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/characters/enums.py +0 -0
  64. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/dialogs/__init__.py +0 -0
  65. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/dialogs/classes.py +0 -0
  66. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/dialogs/formatter.py +0 -0
  67. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/dialogs/ids/__init__.py +0 -0
  68. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/dialogs/ids/dialog_bank_ids.py +0 -0
  69. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/dialogs/ids/misc.py +0 -0
  70. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/dialogs/ids/types/__init__.py +0 -0
  71. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/dialogs/ids/types/classes.py +0 -0
  72. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/dialogs/utils.py +0 -0
  73. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/enemies/__init__.py +0 -0
  74. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/enemies/classes.py +0 -0
  75. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/enemies/constants.py +0 -0
  76. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/enemies/enums.py +0 -0
  77. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/enemy_attacks/__init__.py +0 -0
  78. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/enemy_attacks/classes.py +0 -0
  79. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/enemy_attacks/constants.py +0 -0
  80. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/graphics/__init__.py +0 -0
  81. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/graphics/classes.py +0 -0
  82. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/items/__init__.py +0 -0
  83. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/items/classes.py +0 -0
  84. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/items/constants.py +0 -0
  85. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/items/encoding.py +0 -0
  86. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/items/enums.py +0 -0
  87. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/__init__.py +0 -0
  88. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/__init__.py +0 -0
  89. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/command_types.py +0 -0
  90. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/targets.py +0 -0
  91. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/types/__init__.py +0 -0
  92. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/types/classes.py +0 -0
  93. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/__init__.py +0 -0
  94. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/commands.py +0 -0
  95. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/types/__init__.py +0 -0
  96. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/types/classes.py +0 -0
  97. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/ids/__init__.py +0 -0
  98. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/ids/misc.py +0 -0
  99. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/types.py +0 -0
  100. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/numbers/__init__.py +0 -0
  101. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/numbers/classes.py +0 -0
  102. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/__init__.py +0 -0
  103. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/__init__.py +0 -0
  104. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/__init__.py +0 -0
  105. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/sequence_speeds.py +0 -0
  106. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/types/__init__.py +0 -0
  107. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/types/classes.py +0 -0
  108. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/vram_priority.py +0 -0
  109. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/classes.py +0 -0
  110. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/__init__.py +0 -0
  111. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/types/__init__.py +0 -0
  112. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/types/classes.py +0 -0
  113. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/ids/__init__.py +0 -0
  114. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/ids/misc.py +0 -0
  115. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/__init__.py +0 -0
  116. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/area_objects.py +0 -0
  117. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/colours.py +0 -0
  118. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/controller_inputs.py +0 -0
  119. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/coords.py +0 -0
  120. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/directions.py +0 -0
  121. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/intro_title_text.py +0 -0
  122. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/layers.py +0 -0
  123. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/palette_rows.py +0 -0
  124. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/palette_types.py +0 -0
  125. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/scenes.py +0 -0
  126. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/tutorials.py +0 -0
  127. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/__init__.py +0 -0
  128. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/area_object.py +0 -0
  129. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/battlefield.py +0 -0
  130. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/byte_var.py +0 -0
  131. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/colour.py +0 -0
  132. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/controller_input.py +0 -0
  133. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/coord.py +0 -0
  134. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/direction.py +0 -0
  135. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/flag.py +0 -0
  136. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/intro_title_text.py +0 -0
  137. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/layer.py +0 -0
  138. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/packet.py +0 -0
  139. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/palette_row.py +0 -0
  140. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/palette_type.py +0 -0
  141. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/party_character.py +0 -0
  142. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/scene.py +0 -0
  143. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/short_var.py +0 -0
  144. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/tutorial.py +0 -0
  145. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/__init__.py +0 -0
  146. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/classes.py +0 -0
  147. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/__init__.py +0 -0
  148. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/commands.py +0 -0
  149. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/types/__init__.py +0 -0
  150. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/types/classes.py +0 -0
  151. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/ids/__init__.py +0 -0
  152. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/ids/misc.py +0 -0
  153. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/ids/__init__.py +0 -0
  154. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/ids/misc.py +0 -0
  155. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/scripts_common/__init__.py +0 -0
  156. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/scripts_common/classes.py +0 -0
  157. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/shops/__init__.py +0 -0
  158. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/shops/classes.py +0 -0
  159. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/spells/__init__.py +0 -0
  160. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/spells/arguments/__init__.py +0 -0
  161. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/spells/arguments/damage_modifiers.py +0 -0
  162. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/spells/arguments/timing_properties.py +0 -0
  163. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/spells/arguments/types/__init__.py +0 -0
  164. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/spells/arguments/types/classes.py +0 -0
  165. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/spells/classes.py +0 -0
  166. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/spells/enums.py +0 -0
  167. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/spells/ids/__init__.py +0 -0
  168. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/spells/ids/misc.py +0 -0
  169. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/sprites/__init__.py +0 -0
  170. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/sprites/ally_palettes.py +0 -0
  171. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/sprites/collection.py +0 -0
  172. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/sprites/disassembler.py +0 -0
  173. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/sprites/exceptions.py +0 -0
  174. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/sprites/ids/__init__.py +0 -0
  175. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/sprites/ids/event_palettes.py +0 -0
  176. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/sprites/ids/misc.py +0 -0
  177. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/sprites/ids/sprite_palettes.py +0 -0
  178. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/sprites/palette.py +0 -0
  179. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/sprites/sprite.py +0 -0
  180. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/world_map_locations/__init__.py +0 -0
  181. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/datatypes/world_map_locations/classes.py +0 -0
  182. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/manage.py +0 -0
  183. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/allyassembler.py +0 -0
  184. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/allydisassembler.py +0 -0
  185. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/animationassembler.py +0 -0
  186. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/animationdisassembler.py +0 -0
  187. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/battleassembler.py +0 -0
  188. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/battledialogassembler.py +0 -0
  189. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/battledialogdisassembler.py +0 -0
  190. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/battledisassembler.py +0 -0
  191. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/bowser_tile_rearranger.py +0 -0
  192. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/comboassembler.py +0 -0
  193. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/combodisassembler.py +0 -0
  194. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/dialogassembler.py +0 -0
  195. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/dialogdisassembler.py +0 -0
  196. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/enemyassembler.py +0 -0
  197. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/enemyattackassembler.py +0 -0
  198. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/enemyattackdisassembler.py +0 -0
  199. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/enemydisassembler.py +0 -0
  200. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/eventassembler.py +0 -0
  201. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/eventconverter.py +0 -0
  202. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/eventidentifieraudit.py +0 -0
  203. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/eventpalettedisassembler.py +0 -0
  204. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/generatesample.py +0 -0
  205. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/graphicsassembler.py +0 -0
  206. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/graphicsdisassembler.py +0 -0
  207. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/input_file_parser.py +0 -0
  208. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/itemassembler.py +0 -0
  209. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/itemdisassembler.py +0 -0
  210. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/legacy/__init__.py +0 -0
  211. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/legacy/docstrings.py +0 -0
  212. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/legacy/eventdisassembler.py +0 -0
  213. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/legacy/eventtables.py +0 -0
  214. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/legacy/objectsequenceassembler.py +0 -0
  215. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/legacy/objectsequencedisassembler.py +0 -0
  216. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/legacy/objectsequencetables.py +0 -0
  217. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/make_seed.py +0 -0
  218. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/move_spell_gfx.py +0 -0
  219. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/npcmodelassembler.py +0 -0
  220. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/objectassembler.py +0 -0
  221. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/objectdisassembler.py +0 -0
  222. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/packassembler.py +0 -0
  223. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/packdisassembler.py +0 -0
  224. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/packetassembler.py +0 -0
  225. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/packetdisassembler.py +0 -0
  226. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/palettebytes.py +0 -0
  227. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/partitionanalyzer.py +0 -0
  228. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/roomassembler.py +0 -0
  229. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/shopassembler.py +0 -0
  230. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/shopdisassembler.py +0 -0
  231. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/space_reassigner.py +0 -0
  232. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/spellassembler.py +0 -0
  233. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/spelldisassembler.py +0 -0
  234. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/spritepalettedisassembler.py +0 -0
  235. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/unused_gfx_finder.py +0 -0
  236. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/unused_gfx_remover old.py +0 -0
  237. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/unused_gfx_remover.py +0 -0
  238. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/variableparser.py +0 -0
  239. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/worldmaplocationassembler.py +0 -0
  240. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/commands/worldmaplocationdisassembler.py +0 -0
  241. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/management/django/settings.py +0 -0
  242. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/utils/disassembler_common.py +0 -0
  243. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/utils/npcs.py +0 -0
  244. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/utils/number.py +0 -0
  245. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/smrpgpatchbuilder/utils/strings.py +0 -0
  246. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/tests/animations/test_animationscripts.py +0 -0
  247. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/tests/dialogs/__init__.py +0 -0
  248. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/tests/dialogs/test_formatter.py +0 -0
  249. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/tests/levels/__init__.py +0 -0
  250. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/tests/levels/test_room_collection.py +0 -0
  251. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/tests/monsters/test_ai.py +0 -0
  252. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/tests/overworld/test_actionscripts.py +0 -0
  253. {smrpgpatchbuilder-6.2.12 → smrpgpatchbuilder-7.0.0}/src/tests/overworld/test_eventscripts.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smrpgpatchbuilder
3
- Version: 6.2.12
3
+ Version: 7.0.0
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "smrpgpatchbuilder"
7
- version = "6.2.12"
7
+ version = "7.0.0"
8
8
  authors = [
9
9
  { name="pidgezero_one", email="s.kischak@gmail.com" },
10
10
  ]
@@ -826,11 +826,8 @@ class NPC:
826
826
  _min_vram_size: int = 0
827
827
  _cannot_clone: bool = False
828
828
 
829
- _byte2_bit0: bool = False
830
- _byte2_bit1: bool = False
831
- _byte2_bit2: bool = False
832
- _byte2_bit3: bool = False
833
- _byte2_bit4: bool = False
829
+ _extra_palette_source_offset: int = 0
830
+ _extra_palette_row_count: int = 0
834
831
  _byte5_bit6: bool = False
835
832
  _byte5_bit7: bool = False
836
833
  _byte6_bit2: bool = False
@@ -889,43 +886,41 @@ class NPC:
889
886
  return self._show_shadow
890
887
 
891
888
  @property
892
- def byte2_bit0(self) -> bool:
893
- """(unknown)"""
894
- return self._byte2_bit0
895
-
896
- @property
897
- def byte2_bit1(self) -> bool:
898
- """(unknown)"""
899
- return self._byte2_bit1
889
+ def extra_palette_source_offset(self) -> int:
890
+ """Palette-load source offset M (0-7). When extra palette rows are loaded (see
891
+ extra_palette_row_count), the first extra CGRAM row is sourced from this sprite's
892
+ base palette ID + M. Pair a nonzero offset with a nonzero row count so
893
+ A_IncPaletteRowBy / A_SetPaletteRow recolors to the NEXT palette, not a duplicate
894
+ of the base. Packed into NPC mold byte 2 bits 0-2; read by the overworld
895
+ sprite-palette loader at $C0:9DB6. (Formerly byte2_bit0/1/2.)"""
896
+ return self._extra_palette_source_offset
900
897
 
901
898
  @property
902
- def byte2_bit2(self) -> bool:
903
- """(unknown)"""
904
- return self._byte2_bit2
905
-
906
- @property
907
- def byte2_bit3(self) -> bool:
908
- """(unknown)"""
909
- return self._byte2_bit3
910
-
911
- @property
912
- def byte2_bit4(self) -> bool:
913
- """(unknown)"""
914
- return self._byte2_bit4
899
+ def extra_palette_row_count(self) -> int:
900
+ """Number of extra palette rows N (0-3) loaded into CGRAM after the sprite's base
901
+ palette. N=0 loads only the base palette (no recolor -- an A_IncPaletteRowBy would
902
+ spill into the next sprite's palette row). Packed into NPC mold byte 2 bits 3-4;
903
+ read by the sprite-palette loader at $C0:9DA8. (Formerly byte2_bit3/4.)"""
904
+ return self._extra_palette_row_count
915
905
 
916
906
  @property
917
907
  def byte5_bit6(self) -> bool:
918
- """(unknown)"""
908
+ """Physical-field default. Loaded into object RAM $0E bit 4 by the NPC loader at
909
+ $C0:8D45. Part of the sprite's background-layer overlap / collision ("physical
910
+ field") data; precise runtime effect is undocumented."""
919
911
  return self._byte5_bit6
920
912
 
921
913
  @property
922
914
  def byte5_bit7(self) -> bool:
923
- """(unknown)"""
915
+ """Physical-field default. Loaded into object RAM $0E bit 5 by the NPC loader at
916
+ $C0:8D45. See byte5_bit6."""
924
917
  return self._byte5_bit7
925
918
 
926
919
  @property
927
920
  def byte6_bit2(self) -> bool:
928
- """(unknown)"""
921
+ """Physical-field default. Loaded into object RAM $0D bit 2 by the NPC loader at
922
+ $C0:8D70 (that low nibble is also writable at runtime by action opcode 0x11). Part
923
+ of the sprite's "physical field" data; precise runtime effect is undocumented."""
929
924
  return self._byte6_bit2
930
925
 
931
926
  @property
@@ -995,25 +990,15 @@ class NPC:
995
990
  """Set whether a shadow for the NPC when airborne will be loaded to VRAM."""
996
991
  self._show_shadow = show_shadow
997
992
 
998
- def set_byte2_bit0(self, byte2_bit0: bool) -> None:
999
- """(unknown)"""
1000
- self._byte2_bit0 = byte2_bit0
1001
-
1002
- def set_byte2_bit1(self, byte2_bit1: bool) -> None:
1003
- """(unknown)"""
1004
- self._byte2_bit1 = byte2_bit1
993
+ def set_extra_palette_source_offset(self, extra_palette_source_offset: int) -> None:
994
+ """Set the palette-load source offset M (0-7)."""
995
+ assert 0 <= extra_palette_source_offset <= 7
996
+ self._extra_palette_source_offset = extra_palette_source_offset
1005
997
 
1006
- def set_byte2_bit2(self, byte2_bit2: bool) -> None:
1007
- """(unknown)"""
1008
- self._byte2_bit2 = byte2_bit2
1009
-
1010
- def set_byte2_bit3(self, byte2_bit3: bool) -> None:
1011
- """(unknown)"""
1012
- self._byte2_bit3 = byte2_bit3
1013
-
1014
- def set_byte2_bit4(self, byte2_bit4: bool) -> None:
1015
- """(unknown)"""
1016
- self._byte2_bit4 = byte2_bit4
998
+ def set_extra_palette_row_count(self, extra_palette_row_count: int) -> None:
999
+ """Set the number of extra palette rows N (0-3)."""
1000
+ assert 0 <= extra_palette_row_count <= 3
1001
+ self._extra_palette_row_count = extra_palette_row_count
1017
1002
 
1018
1003
  def set_byte5_bit6(self, byte5_bit6: bool) -> None:
1019
1004
  """(unknown)"""
@@ -1066,11 +1051,8 @@ class NPC:
1066
1051
  priority_1: bool = False,
1067
1052
  priority_2: bool = True,
1068
1053
  cannot_clone: bool = False,
1069
- byte2_bit0: bool = False,
1070
- byte2_bit1: bool = False,
1071
- byte2_bit2: bool = False,
1072
- byte2_bit3: bool = False,
1073
- byte2_bit4: bool = False,
1054
+ extra_palette_source_offset: int = 0,
1055
+ extra_palette_row_count: int = 0,
1074
1056
  byte5_bit6: bool = False,
1075
1057
  byte5_bit7: bool = False,
1076
1058
  byte6_bit2: bool = False,
@@ -1088,11 +1070,8 @@ class NPC:
1088
1070
  self._priority_1 = priority_1
1089
1071
  self._priority_2 = priority_2
1090
1072
  self._cannot_clone = cannot_clone
1091
- self._byte2_bit0 = byte2_bit0
1092
- self._byte2_bit1 = byte2_bit1
1093
- self._byte2_bit2 = byte2_bit2
1094
- self._byte2_bit3 = byte2_bit3
1095
- self._byte2_bit4 = byte2_bit4
1073
+ self.set_extra_palette_source_offset(extra_palette_source_offset)
1074
+ self.set_extra_palette_row_count(extra_palette_row_count)
1096
1075
  self._byte5_bit6 = byte5_bit6
1097
1076
  self._byte5_bit7 = byte5_bit7
1098
1077
  self._byte6_bit2 = byte6_bit2
@@ -1129,11 +1108,8 @@ class BaseRoomObject:
1129
1108
  _cannot_clone: bool | None = None
1130
1109
 
1131
1110
  # Unknown bit flags
1132
- _byte2_bit0: bool | None = None
1133
- _byte2_bit1: bool | None = None
1134
- _byte2_bit2: bool | None = None
1135
- _byte2_bit3: bool | None = None
1136
- _byte2_bit4: bool | None = None
1111
+ _extra_palette_source_offset: int | None = None
1112
+ _extra_palette_row_count: int | None = None
1137
1113
  _byte5_bit6: bool | None = None
1138
1114
  _byte5_bit7: bool | None = None
1139
1115
  _byte6_bit2: bool | None = None
@@ -1178,43 +1154,28 @@ class BaseRoomObject:
1178
1154
  return self._show_shadow
1179
1155
 
1180
1156
  @property
1181
- def byte2_bit0(self) -> bool | None:
1182
- """(unknown)"""
1183
- return self._byte2_bit0
1184
-
1185
- @property
1186
- def byte2_bit1(self) -> bool | None:
1187
- """(unknown)"""
1188
- return self._byte2_bit1
1157
+ def extra_palette_source_offset(self) -> int | None:
1158
+ """Optional per-room override of the palette-load source offset M (0-7). See NPC.extra_palette_source_offset."""
1159
+ return self._extra_palette_source_offset
1189
1160
 
1190
1161
  @property
1191
- def byte2_bit2(self) -> bool | None:
1192
- """(unknown)"""
1193
- return self._byte2_bit2
1194
-
1195
- @property
1196
- def byte2_bit3(self) -> bool | None:
1197
- """(unknown)"""
1198
- return self._byte2_bit3
1199
-
1200
- @property
1201
- def byte2_bit4(self) -> bool | None:
1202
- """(unknown)"""
1203
- return self._byte2_bit4
1162
+ def extra_palette_row_count(self) -> int | None:
1163
+ """Optional per-room override of the extra palette row count N (0-3). See NPC.extra_palette_row_count."""
1164
+ return self._extra_palette_row_count
1204
1165
 
1205
1166
  @property
1206
1167
  def byte5_bit6(self) -> bool | None:
1207
- """(unknown)"""
1168
+ """Optional per-room override of the physical-field bit at object RAM $0E bit 4. See NPC.byte5_bit6."""
1208
1169
  return self._byte5_bit6
1209
1170
 
1210
1171
  @property
1211
1172
  def byte5_bit7(self) -> bool | None:
1212
- """(unknown)"""
1173
+ """Optional per-room override of the physical-field bit at object RAM $0E bit 5. See NPC.byte5_bit7."""
1213
1174
  return self._byte5_bit7
1214
1175
 
1215
1176
  @property
1216
1177
  def byte6_bit2(self) -> bool | None:
1217
- """(unknown)"""
1178
+ """Optional per-room override of the physical-field bit at object RAM $0D bit 2. See NPC.byte6_bit2."""
1218
1179
  return self._byte6_bit2
1219
1180
 
1220
1181
  @property
@@ -1292,25 +1253,17 @@ class BaseRoomObject:
1292
1253
  """Set whether a shadow for the NPC when airborne will be loaded to VRAM."""
1293
1254
  self._show_shadow = show_shadow
1294
1255
 
1295
- def set_byte2_bit0(self, byte2_bit0: bool | None) -> None:
1296
- """(unknown)"""
1297
- self._byte2_bit0 = byte2_bit0
1298
-
1299
- def set_byte2_bit1(self, byte2_bit1: bool | None) -> None:
1300
- """(unknown)"""
1301
- self._byte2_bit1 = byte2_bit1
1256
+ def set_extra_palette_source_offset(self, extra_palette_source_offset: int | None) -> None:
1257
+ """Set the palette-load source offset M (0-7), or None to inherit the mold default."""
1258
+ if extra_palette_source_offset is not None:
1259
+ assert 0 <= extra_palette_source_offset <= 7
1260
+ self._extra_palette_source_offset = extra_palette_source_offset
1302
1261
 
1303
- def set_byte2_bit2(self, byte2_bit2: bool | None) -> None:
1304
- """(unknown)"""
1305
- self._byte2_bit2 = byte2_bit2
1306
-
1307
- def set_byte2_bit3(self, byte2_bit3: bool | None) -> None:
1308
- """(unknown)"""
1309
- self._byte2_bit3 = byte2_bit3
1310
-
1311
- def set_byte2_bit4(self, byte2_bit4: bool | None) -> None:
1312
- """(unknown)"""
1313
- self._byte2_bit4 = byte2_bit4
1262
+ def set_extra_palette_row_count(self, extra_palette_row_count: int | None) -> None:
1263
+ """Set the number of extra palette rows N (0-3), or None to inherit the mold default."""
1264
+ if extra_palette_row_count is not None:
1265
+ assert 0 <= extra_palette_row_count <= 3
1266
+ self._extra_palette_row_count = extra_palette_row_count
1314
1267
 
1315
1268
  def set_byte5_bit6(self, byte5_bit6: bool | None) -> None:
1316
1269
  """(unknown)"""
@@ -1704,11 +1657,8 @@ class BattlePackNPC(RoomObject):
1704
1657
  directions: VramStore | None = None,
1705
1658
  vram_size: int | None = None,
1706
1659
  cannot_clone: bool | None = None,
1707
- byte2_bit0: bool | None = None,
1708
- byte2_bit1: bool | None = None,
1709
- byte2_bit2: bool | None = None,
1710
- byte2_bit3: bool | None = None,
1711
- byte2_bit4: bool | None = None,
1660
+ extra_palette_source_offset: int | None = None,
1661
+ extra_palette_row_count: int | None = None,
1712
1662
  byte5_bit6: bool | None = None,
1713
1663
  byte5_bit7: bool | None = None,
1714
1664
  byte6_bit2: bool | None = None,
@@ -1755,11 +1705,8 @@ class BattlePackNPC(RoomObject):
1755
1705
  super().set_directions(directions)
1756
1706
  super().set_min_vram_size(vram_size)
1757
1707
  super().set_cannot_clone(cannot_clone)
1758
- super().set_byte2_bit0(byte2_bit0)
1759
- super().set_byte2_bit1(byte2_bit1)
1760
- super().set_byte2_bit2(byte2_bit2)
1761
- super().set_byte2_bit3(byte2_bit3)
1762
- super().set_byte2_bit4(byte2_bit4)
1708
+ super().set_extra_palette_source_offset(extra_palette_source_offset)
1709
+ super().set_extra_palette_row_count(extra_palette_row_count)
1763
1710
  super().set_byte5_bit6(byte5_bit6)
1764
1711
  super().set_byte5_bit7(byte5_bit7)
1765
1712
  super().set_byte6_bit2(byte6_bit2)
@@ -1823,11 +1770,8 @@ class RegularNPC(RoomObject):
1823
1770
  directions: VramStore | None = None,
1824
1771
  vram_size: int | None = None,
1825
1772
  cannot_clone: bool | None = None,
1826
- byte2_bit0: bool | None = None,
1827
- byte2_bit1: bool | None = None,
1828
- byte2_bit2: bool | None = None,
1829
- byte2_bit3: bool | None = None,
1830
- byte2_bit4: bool | None = None,
1773
+ extra_palette_source_offset: int | None = None,
1774
+ extra_palette_row_count: int | None = None,
1831
1775
  byte5_bit6: bool | None = None,
1832
1776
  byte5_bit7: bool | None = None,
1833
1777
  byte6_bit2: bool | None = None,
@@ -1873,11 +1817,8 @@ class RegularNPC(RoomObject):
1873
1817
  super().set_directions(directions)
1874
1818
  super().set_min_vram_size(vram_size)
1875
1819
  super().set_cannot_clone(cannot_clone)
1876
- super().set_byte2_bit0(byte2_bit0)
1877
- super().set_byte2_bit1(byte2_bit1)
1878
- super().set_byte2_bit2(byte2_bit2)
1879
- super().set_byte2_bit3(byte2_bit3)
1880
- super().set_byte2_bit4(byte2_bit4)
1820
+ super().set_extra_palette_source_offset(extra_palette_source_offset)
1821
+ super().set_extra_palette_row_count(extra_palette_row_count)
1881
1822
  super().set_byte5_bit6(byte5_bit6)
1882
1823
  super().set_byte5_bit7(byte5_bit7)
1883
1824
  super().set_byte6_bit2(byte6_bit2)
@@ -1966,11 +1907,8 @@ class ChestNPC(RoomObject):
1966
1907
  directions: VramStore | None = None,
1967
1908
  vram_size: int | None = None,
1968
1909
  cannot_clone: bool | None = None,
1969
- byte2_bit0: bool | None = None,
1970
- byte2_bit1: bool | None = None,
1971
- byte2_bit2: bool | None = None,
1972
- byte2_bit3: bool | None = None,
1973
- byte2_bit4: bool | None = None,
1910
+ extra_palette_source_offset: int | None = None,
1911
+ extra_palette_row_count: int | None = None,
1974
1912
  byte5_bit6: bool | None = None,
1975
1913
  byte5_bit7: bool | None = None,
1976
1914
  byte6_bit2: bool | None = None,
@@ -2018,11 +1956,8 @@ class ChestNPC(RoomObject):
2018
1956
  super().set_directions(directions)
2019
1957
  super().set_min_vram_size(vram_size)
2020
1958
  super().set_cannot_clone(cannot_clone)
2021
- super().set_byte2_bit0(byte2_bit0)
2022
- super().set_byte2_bit1(byte2_bit1)
2023
- super().set_byte2_bit2(byte2_bit2)
2024
- super().set_byte2_bit3(byte2_bit3)
2025
- super().set_byte2_bit4(byte2_bit4)
1959
+ super().set_extra_palette_source_offset(extra_palette_source_offset)
1960
+ super().set_extra_palette_row_count(extra_palette_row_count)
2026
1961
  super().set_byte5_bit6(byte5_bit6)
2027
1962
  super().set_byte5_bit7(byte5_bit7)
2028
1963
  super().set_byte6_bit2(byte6_bit2)
@@ -2067,11 +2002,8 @@ class BattlePackClone(Clone):
2067
2002
  directions: VramStore | None = None,
2068
2003
  vram_size: int | None = None,
2069
2004
  cannot_clone: bool | None = None,
2070
- byte2_bit0: bool | None = None,
2071
- byte2_bit1: bool | None = None,
2072
- byte2_bit2: bool | None = None,
2073
- byte2_bit3: bool | None = None,
2074
- byte2_bit4: bool | None = None,
2005
+ extra_palette_source_offset: int | None = None,
2006
+ extra_palette_row_count: int | None = None,
2075
2007
  byte5_bit6: bool | None = None,
2076
2008
  byte5_bit7: bool | None = None,
2077
2009
  byte6_bit2: bool | None = None,
@@ -2099,11 +2031,8 @@ class BattlePackClone(Clone):
2099
2031
  super().set_directions(directions)
2100
2032
  super().set_min_vram_size(vram_size)
2101
2033
  super().set_cannot_clone(cannot_clone)
2102
- super().set_byte2_bit0(byte2_bit0)
2103
- super().set_byte2_bit1(byte2_bit1)
2104
- super().set_byte2_bit2(byte2_bit2)
2105
- super().set_byte2_bit3(byte2_bit3)
2106
- super().set_byte2_bit4(byte2_bit4)
2034
+ super().set_extra_palette_source_offset(extra_palette_source_offset)
2035
+ super().set_extra_palette_row_count(extra_palette_row_count)
2107
2036
  super().set_byte5_bit6(byte5_bit6)
2108
2037
  super().set_byte5_bit7(byte5_bit7)
2109
2038
  super().set_byte6_bit2(byte6_bit2)
@@ -2148,11 +2077,8 @@ class RegularClone(Clone):
2148
2077
  directions: VramStore | None = None,
2149
2078
  vram_size: int | None = None,
2150
2079
  cannot_clone: bool | None = None,
2151
- byte2_bit0: bool | None = None,
2152
- byte2_bit1: bool | None = None,
2153
- byte2_bit2: bool | None = None,
2154
- byte2_bit3: bool | None = None,
2155
- byte2_bit4: bool | None = None,
2080
+ extra_palette_source_offset: int | None = None,
2081
+ extra_palette_row_count: int | None = None,
2156
2082
  byte5_bit6: bool | None = None,
2157
2083
  byte5_bit7: bool | None = None,
2158
2084
  byte6_bit2: bool | None = None,
@@ -2180,11 +2106,8 @@ class RegularClone(Clone):
2180
2106
  super().set_directions(directions)
2181
2107
  super().set_min_vram_size(vram_size)
2182
2108
  super().set_cannot_clone(cannot_clone)
2183
- super().set_byte2_bit0(byte2_bit0)
2184
- super().set_byte2_bit1(byte2_bit1)
2185
- super().set_byte2_bit2(byte2_bit2)
2186
- super().set_byte2_bit3(byte2_bit3)
2187
- super().set_byte2_bit4(byte2_bit4)
2109
+ super().set_extra_palette_source_offset(extra_palette_source_offset)
2110
+ super().set_extra_palette_row_count(extra_palette_row_count)
2188
2111
  super().set_byte5_bit6(byte5_bit6)
2189
2112
  super().set_byte5_bit7(byte5_bit7)
2190
2113
  super().set_byte6_bit2(byte6_bit2)
@@ -2240,11 +2163,8 @@ class ChestClone(Clone):
2240
2163
  directions: VramStore | None = None,
2241
2164
  vram_size: int | None = None,
2242
2165
  cannot_clone: bool | None = None,
2243
- byte2_bit0: bool | None = None,
2244
- byte2_bit1: bool | None = None,
2245
- byte2_bit2: bool | None = None,
2246
- byte2_bit3: bool | None = None,
2247
- byte2_bit4: bool | None = None,
2166
+ extra_palette_source_offset: int | None = None,
2167
+ extra_palette_row_count: int | None = None,
2248
2168
  byte5_bit6: bool | None = None,
2249
2169
  byte5_bit7: bool | None = None,
2250
2170
  byte6_bit2: bool | None = None,
@@ -2272,11 +2192,8 @@ class ChestClone(Clone):
2272
2192
  super().set_directions(directions)
2273
2193
  super().set_min_vram_size(vram_size)
2274
2194
  super().set_cannot_clone(cannot_clone)
2275
- super().set_byte2_bit0(byte2_bit0)
2276
- super().set_byte2_bit1(byte2_bit1)
2277
- super().set_byte2_bit2(byte2_bit2)
2278
- super().set_byte2_bit3(byte2_bit3)
2279
- super().set_byte2_bit4(byte2_bit4)
2195
+ super().set_extra_palette_source_offset(extra_palette_source_offset)
2196
+ super().set_extra_palette_row_count(extra_palette_row_count)
2280
2197
  super().set_byte5_bit6(byte5_bit6)
2281
2198
  super().set_byte5_bit7(byte5_bit7)
2282
2199
  super().set_byte6_bit2(byte6_bit2)
@@ -71,11 +71,8 @@ class RoomCollection:
71
71
  npc.priority_1,
72
72
  npc.priority_2,
73
73
  npc.cannot_clone,
74
- npc.byte2_bit0,
75
- npc.byte2_bit1,
76
- npc.byte2_bit2,
77
- npc.byte2_bit3,
78
- npc.byte2_bit4,
74
+ npc.extra_palette_source_offset,
75
+ npc.extra_palette_row_count,
79
76
  npc.byte5_bit6,
80
77
  npc.byte5_bit7,
81
78
  npc.byte6_bit2,
@@ -105,11 +102,8 @@ class RoomCollection:
105
102
  if room_obj.cannot_clone is not None
106
103
  else None
107
104
  ),
108
- room_obj.byte2_bit0 if room_obj.byte2_bit0 is not None else None,
109
- room_obj.byte2_bit1 if room_obj.byte2_bit1 is not None else None,
110
- room_obj.byte2_bit2 if room_obj.byte2_bit2 is not None else None,
111
- room_obj.byte2_bit3 if room_obj.byte2_bit3 is not None else None,
112
- room_obj.byte2_bit4 if room_obj.byte2_bit4 is not None else None,
105
+ room_obj.extra_palette_source_offset if room_obj.extra_palette_source_offset is not None else None,
106
+ room_obj.extra_palette_row_count if room_obj.extra_palette_row_count is not None else None,
113
107
  room_obj.byte5_bit6 if room_obj.byte5_bit6 is not None else None,
114
108
  room_obj.byte5_bit7 if room_obj.byte5_bit7 is not None else None,
115
109
  room_obj.byte6_bit2 if room_obj.byte6_bit2 is not None else None,
@@ -455,30 +449,15 @@ class RoomCollection:
455
449
  if room_obj.cannot_clone is not None
456
450
  else base_npc.cannot_clone
457
451
  ),
458
- byte2_bit0=(
459
- room_obj.byte2_bit0
460
- if room_obj.byte2_bit0 is not None
461
- else base_npc.byte2_bit0
452
+ extra_palette_source_offset=(
453
+ room_obj.extra_palette_source_offset
454
+ if room_obj.extra_palette_source_offset is not None
455
+ else base_npc.extra_palette_source_offset
462
456
  ),
463
- byte2_bit1=(
464
- room_obj.byte2_bit1
465
- if room_obj.byte2_bit1 is not None
466
- else base_npc.byte2_bit1
467
- ),
468
- byte2_bit2=(
469
- room_obj.byte2_bit2
470
- if room_obj.byte2_bit2 is not None
471
- else base_npc.byte2_bit2
472
- ),
473
- byte2_bit3=(
474
- room_obj.byte2_bit3
475
- if room_obj.byte2_bit3 is not None
476
- else base_npc.byte2_bit3
477
- ),
478
- byte2_bit4=(
479
- room_obj.byte2_bit4
480
- if room_obj.byte2_bit4 is not None
481
- else base_npc.byte2_bit4
457
+ extra_palette_row_count=(
458
+ room_obj.extra_palette_row_count
459
+ if room_obj.extra_palette_row_count is not None
460
+ else base_npc.extra_palette_row_count
482
461
  ),
483
462
  byte5_bit6=(
484
463
  room_obj.byte5_bit6
@@ -673,11 +652,8 @@ class RoomCollection:
673
652
 
674
653
  # Byte 2: priority and misc bits
675
654
  data[2] = (
676
- (1 if npc.byte2_bit0 else 0)
677
- | ((1 if npc.byte2_bit1 else 0) << 1)
678
- | ((1 if npc.byte2_bit2 else 0) << 2)
679
- | ((1 if npc.byte2_bit3 else 0) << 3)
680
- | ((1 if npc.byte2_bit4 else 0) << 4)
655
+ ((npc.extra_palette_source_offset or 0) & 0x07)
656
+ | (((npc.extra_palette_row_count or 0) & 0x03) << 3)
681
657
  | ((1 if npc.priority_0 else 0) << 5)
682
658
  | ((1 if npc.priority_1 else 0) << 6)
683
659
  | ((1 if npc.priority_2 else 0) << 7)
@@ -0,0 +1,28 @@
1
+ """Moleville Mountain Mode7 minecart track patch-building primitives.
2
+
3
+ The randomizer generates a track procedurally and feeds it through these types
4
+ to produce a ROM patch. See :mod:`.classes` for the entry points.
5
+ """
6
+
7
+ from .constants import (
8
+ MAP_H, MAP_W, M7_OBJECTS_PER_MAP, TrackColor, TrackType, background_tile,
9
+ tile_index,
10
+ )
11
+ from .classes import (
12
+ EAST, NORTH, SOUTH, WEST, MinecartTrack, build_minecart_patch, track_type_for,
13
+ )
14
+ from .lz3 import compress, decompress
15
+
16
+ __all__ = [
17
+ "MinecartTrack",
18
+ "build_minecart_patch",
19
+ "track_type_for",
20
+ "TrackType",
21
+ "TrackColor",
22
+ "tile_index",
23
+ "background_tile",
24
+ "compress",
25
+ "decompress",
26
+ "NORTH", "SOUTH", "EAST", "WEST",
27
+ "MAP_W", "MAP_H", "M7_OBJECTS_PER_MAP",
28
+ ]