PyLibMS 4.0.0__tar.gz → 4.0.2__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 (84) hide show
  1. {pylibms-4.0.0 → pylibms-4.0.2}/PKG-INFO +7 -14
  2. {pylibms-4.0.0 → pylibms-4.0.2}/PyLibMS.egg-info/PKG-INFO +7 -14
  3. {pylibms-4.0.0 → pylibms-4.0.2}/README.md +6 -13
  4. {pylibms-4.0.0 → pylibms-4.0.2}/lms/flowchart/flw3.py +1 -2
  5. {pylibms-4.0.0 → pylibms-4.0.2}/lms/flowchart/msbf.py +0 -1
  6. {pylibms-4.0.0 → pylibms-4.0.2}/lms/flowchart/msbfio.py +0 -2
  7. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/definitions/nodes.py +1 -1
  8. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/presets/Tomodachi Life NA-EU.yaml +7 -0
  9. {pylibms-4.0.0 → pylibms-4.0.2}/pyproject.toml +1 -1
  10. {pylibms-4.0.0 → pylibms-4.0.2}/LICENSE +0 -0
  11. {pylibms-4.0.0 → pylibms-4.0.2}/MANIFEST.in +0 -0
  12. {pylibms-4.0.0 → pylibms-4.0.2}/PyLibMS.egg-info/SOURCES.txt +0 -0
  13. {pylibms-4.0.0 → pylibms-4.0.2}/PyLibMS.egg-info/dependency_links.txt +0 -0
  14. {pylibms-4.0.0 → pylibms-4.0.2}/PyLibMS.egg-info/requires.txt +0 -0
  15. {pylibms-4.0.0 → pylibms-4.0.2}/PyLibMS.egg-info/top_level.txt +0 -0
  16. {pylibms-4.0.0 → pylibms-4.0.2}/lms/__init__.py +0 -0
  17. {pylibms-4.0.0 → pylibms-4.0.2}/lms/common/__init__.py +0 -0
  18. {pylibms-4.0.0 → pylibms-4.0.2}/lms/common/field/__init__.py +0 -0
  19. {pylibms-4.0.0 → pylibms-4.0.2}/lms/common/field/io.py +0 -0
  20. {pylibms-4.0.0 → pylibms-4.0.2}/lms/common/field/lms_datatype.py +0 -0
  21. {pylibms-4.0.0 → pylibms-4.0.2}/lms/common/field/lms_field.py +0 -0
  22. {pylibms-4.0.0 → pylibms-4.0.2}/lms/common/lms_constants.py +0 -0
  23. {pylibms-4.0.0 → pylibms-4.0.2}/lms/common/lms_exceptions.py +0 -0
  24. {pylibms-4.0.0 → pylibms-4.0.2}/lms/common/lms_fileinfo.py +0 -0
  25. {pylibms-4.0.0 → pylibms-4.0.2}/lms/common/stream/fileinfo.py +0 -0
  26. {pylibms-4.0.0 → pylibms-4.0.2}/lms/common/stream/hashtable.py +0 -0
  27. {pylibms-4.0.0 → pylibms-4.0.2}/lms/common/stream/section.py +0 -0
  28. {pylibms-4.0.0 → pylibms-4.0.2}/lms/fileio/encoding.py +0 -0
  29. {pylibms-4.0.0 → pylibms-4.0.2}/lms/fileio/io.py +0 -0
  30. {pylibms-4.0.0 → pylibms-4.0.2}/lms/flowchart/__init__.py +0 -0
  31. {pylibms-4.0.0 → pylibms-4.0.2}/lms/flowchart/definitions/__init__.py +0 -0
  32. {pylibms-4.0.0 → pylibms-4.0.2}/lms/flowchart/definitions/flowchart.py +0 -0
  33. {pylibms-4.0.0 → pylibms-4.0.2}/lms/flowchart/definitions/lms_nodeexceptions.py +0 -0
  34. {pylibms-4.0.0 → pylibms-4.0.2}/lms/flowchart/definitions/node.py +0 -0
  35. {pylibms-4.0.0 → pylibms-4.0.2}/lms/flowchart/definitions/node_type.py +0 -0
  36. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/__init__.py +0 -0
  37. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/definitions/__init__.py +0 -0
  38. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/definitions/field/__init__.py +0 -0
  39. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/lms_messagetext.py +0 -0
  40. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/msbt.py +0 -0
  41. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/msbtentry.py +0 -0
  42. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/msbtio.py +0 -0
  43. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/section/__init__.py +0 -0
  44. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/section/atr1.py +0 -0
  45. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/section/nli1.py +0 -0
  46. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/section/tsy1.py +0 -0
  47. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/section/txt2.py +0 -0
  48. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/tag/__init__.py +0 -0
  49. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/tag/io/param_io.py +0 -0
  50. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/tag/io/tag_io.py +0 -0
  51. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/tag/lms_tag.py +0 -0
  52. {pylibms-4.0.0 → pylibms-4.0.2}/lms/message/tag/lms_tagexceptions.py +0 -0
  53. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/__init__.py +0 -0
  54. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/definitions/__init__.py +0 -0
  55. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/definitions/attribute.py +0 -0
  56. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/definitions/color.py +0 -0
  57. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/definitions/style.py +0 -0
  58. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/definitions/tag.py +0 -0
  59. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/msbp.py +0 -0
  60. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/msbpread.py +0 -0
  61. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/section/ali2.py +0 -0
  62. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/section/ati2.py +0 -0
  63. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/section/clr1.py +0 -0
  64. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/section/string.py +0 -0
  65. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/section/syl3.py +0 -0
  66. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/section/tag2.py +0 -0
  67. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/section/tgg2.py +0 -0
  68. {pylibms-4.0.0 → pylibms-4.0.2}/lms/project/section/tgp2.py +0 -0
  69. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/__init__.py +0 -0
  70. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/config.py +0 -0
  71. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/definitions/__init__.py +0 -0
  72. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/definitions/attribute.py +0 -0
  73. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/definitions/tags.py +0 -0
  74. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/definitions/value.py +0 -0
  75. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/presets/Badge Arcade.yaml +0 -0
  76. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/presets/Brain Age Concentration Training.yaml +0 -0
  77. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/presets/Kirby Planet Robobot.yaml +0 -0
  78. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/presets/Super Mario 3D Land.yaml +0 -0
  79. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/presets/Super Mario 3D World + Bowsers Fury.yaml +0 -0
  80. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/presets/Super Mario Odyssey.yaml +0 -0
  81. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/presets/The Legend of Zelda Echos of Wisdom.yaml +0 -0
  82. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/presets/The Legend of Zelda a Link Between Worlds.yaml +0 -0
  83. {pylibms-4.0.0 → pylibms-4.0.2}/lms/titleconfig/presets/Tomodachi Life Living The Dream.yaml +0 -0
  84. {pylibms-4.0.0 → pylibms-4.0.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyLibMS
3
- Version: 4.0.0
3
+ Version: 4.0.2
4
4
  Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF.
5
5
  Author: AbdyyEee
6
6
  License-Expression: MIT
@@ -18,20 +18,13 @@ Dynamic: license-file
18
18
  PylibMS is a library built in Python 3.12+ for the libMessageStudio (LMS) proprietary file formats (`msbt`, `msbp`,
19
19
  `msbf`) from Nintendo. It supports the following:
20
20
 
21
- | File Format | Read | Write | Configuration Support |
21
+ | Format | Read | Write | Configuration Support |
22
22
  |-------------|------|-------|-------------------------------------------------------------------------------------------|
23
- | MSBT | ✅ | ✅ | Complete attribute decoding + tag decoding down to official `mstxt` Nintendo tool syntax. | |
24
- | MSBF | ✅ | ✅ | Flexible node + parameter decoding through configuration definitions.
25
- | MSBP | ✅ | ❌ | N/A |
26
-
27
- This library is designed to support LMS revision 3.0 and above, with the associated file formats used across the
28
- following Nintendo platforms:
29
-
30
- * Wii (Specific titles only)
31
- * Nintendo 3DS
32
- * Wii U
33
- * Mobile (Specific titles only)
34
- * Nintendo Switch
23
+ | MSBT | ✅ | ✅ | Complete attribute decoding + tag decoding down to official `mstxt` Nintendo tool syntax. |
24
+ | MSBF | ✅ | ✅ | Flexible node + parameter decoding through configuration definitions. |
25
+ | MSBP | ✅ | ❌ | N/A |
26
+
27
+ This library is designed to support LMS revision 3.0+ from most Nintendo consoles. However, MSBF files that use `FLW1` and `FLW2` are not supported.
35
28
 
36
29
  # Features and Usage
37
30
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyLibMS
3
- Version: 4.0.0
3
+ Version: 4.0.2
4
4
  Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF.
5
5
  Author: AbdyyEee
6
6
  License-Expression: MIT
@@ -18,20 +18,13 @@ Dynamic: license-file
18
18
  PylibMS is a library built in Python 3.12+ for the libMessageStudio (LMS) proprietary file formats (`msbt`, `msbp`,
19
19
  `msbf`) from Nintendo. It supports the following:
20
20
 
21
- | File Format | Read | Write | Configuration Support |
21
+ | Format | Read | Write | Configuration Support |
22
22
  |-------------|------|-------|-------------------------------------------------------------------------------------------|
23
- | MSBT | ✅ | ✅ | Complete attribute decoding + tag decoding down to official `mstxt` Nintendo tool syntax. | |
24
- | MSBF | ✅ | ✅ | Flexible node + parameter decoding through configuration definitions.
25
- | MSBP | ✅ | ❌ | N/A |
26
-
27
- This library is designed to support LMS revision 3.0 and above, with the associated file formats used across the
28
- following Nintendo platforms:
29
-
30
- * Wii (Specific titles only)
31
- * Nintendo 3DS
32
- * Wii U
33
- * Mobile (Specific titles only)
34
- * Nintendo Switch
23
+ | MSBT | ✅ | ✅ | Complete attribute decoding + tag decoding down to official `mstxt` Nintendo tool syntax. |
24
+ | MSBF | ✅ | ✅ | Flexible node + parameter decoding through configuration definitions. |
25
+ | MSBP | ✅ | ❌ | N/A |
26
+
27
+ This library is designed to support LMS revision 3.0+ from most Nintendo consoles. However, MSBF files that use `FLW1` and `FLW2` are not supported.
35
28
 
36
29
  # Features and Usage
37
30
 
@@ -3,20 +3,13 @@
3
3
  PylibMS is a library built in Python 3.12+ for the libMessageStudio (LMS) proprietary file formats (`msbt`, `msbp`,
4
4
  `msbf`) from Nintendo. It supports the following:
5
5
 
6
- | File Format | Read | Write | Configuration Support |
6
+ | Format | Read | Write | Configuration Support |
7
7
  |-------------|------|-------|-------------------------------------------------------------------------------------------|
8
- | MSBT | ✅ | ✅ | Complete attribute decoding + tag decoding down to official `mstxt` Nintendo tool syntax. | |
9
- | MSBF | ✅ | ✅ | Flexible node + parameter decoding through configuration definitions.
10
- | MSBP | ✅ | ❌ | N/A |
11
-
12
- This library is designed to support LMS revision 3.0 and above, with the associated file formats used across the
13
- following Nintendo platforms:
14
-
15
- * Wii (Specific titles only)
16
- * Nintendo 3DS
17
- * Wii U
18
- * Mobile (Specific titles only)
19
- * Nintendo Switch
8
+ | MSBT | ✅ | ✅ | Complete attribute decoding + tag decoding down to official `mstxt` Nintendo tool syntax. |
9
+ | MSBF | ✅ | ✅ | Flexible node + parameter decoding through configuration definitions. |
10
+ | MSBP | ✅ | ❌ | N/A |
11
+
12
+ This library is designed to support LMS revision 3.0+ from most Nintendo consoles. However, MSBF files that use `FLW1` and `FLW2` are not supported.
20
13
 
21
14
  # Features and Usage
22
15
 
@@ -148,7 +148,6 @@ def evaluate_node_parameter(reader: FileReader,
148
148
  result = {}
149
149
 
150
150
  if parameter_type is LMS_NodeParameterType.STRING:
151
- print(definition, definition.parameter_type, parameter_type)
152
151
  param_definition = definition.parameter_definitions[0]
153
152
  value = reader.read_string_offset(section_start)
154
153
 
@@ -202,7 +201,7 @@ def write_flw3(writer: FileWriter, nodes: list[LMS_BaseNode], stream_ids: dict[L
202
201
  writer.write_bytes(b"\x00" * 2)
203
202
  writer.write_bytes(b"\x00" * 4)
204
203
 
205
- write_next_node_id(writer, stream_ids[node.next_node])
204
+ write_next_node_id(writer, None if node.next_node is None else stream_ids[node.next_node])
206
205
 
207
206
  writer.write_uint16(node.msbt_index)
208
207
  writer.write_uint16(node.label_index)
@@ -73,7 +73,6 @@ class MSBF:
73
73
  if entry_point is None:
74
74
  entry_point = LMS_EntryNode(self.generate_next_id(), flowchart_name=flowchart_name)
75
75
 
76
- print(entry_point.id)
77
76
  flowchart = LMS_Flowchart(entry_point, self.generate_next_id)
78
77
  self._flowcharts[flowchart_name] = flowchart
79
78
  return flowchart
@@ -132,9 +132,7 @@ def write_msbf(file: MSBF) -> bytes:
132
132
  for flowchart in file
133
133
  }
134
134
 
135
- print(index_map)
136
135
  write_section(writer, "FLW3", write_flw3, nodes, stream_ids)
137
-
138
136
  write_section(writer, "FEN1", write_labels, list(file.flowcharts.keys()), MSBF.DEFAULT_SLOT_COUNT, index_map)
139
137
  write_file_size(writer)
140
138
  return writer.get_data()
@@ -93,7 +93,7 @@ class NodeDefinition:
93
93
  return NodeDefinition(
94
94
  name=data["name"],
95
95
  id=id,
96
- description=data["description"],
96
+ description=data.get("description", ""),
97
97
  type=node_type,
98
98
  parameter_type=parameter_type,
99
99
  parameter_definitions=converted_parameters,
@@ -29,6 +29,13 @@ node_definitions:
29
29
  parameters:
30
30
  - name: pos
31
31
  description: ''
32
+ - id: 48
33
+ name: SetupMessage
34
+ description: ''
35
+ parameter_type: p16_16
36
+ parameters:
37
+ - name: val1
38
+ - name: val2
32
39
  - id: 58
33
40
  name: SetupButtonPrompt
34
41
  description: ''
@@ -7,7 +7,7 @@ include = ["lms*"]
7
7
 
8
8
  [project]
9
9
  name = "PyLibMS"
10
- version = "4.0.0"
10
+ version = "4.0.2"
11
11
  requires-python = ">=3.12"
12
12
  description = "Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF."
13
13
  readme = "README.md"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes