PyLibMS 5.0.5__tar.gz → 5.0.7__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.
- pylibms-5.0.7/PKG-INFO +136 -0
- pylibms-5.0.7/PyLibMS.egg-info/PKG-INFO +136 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/PyLibMS.egg-info/SOURCES.txt +0 -1
- pylibms-5.0.7/PyLibMS.egg-info/requires.txt +6 -0
- pylibms-5.0.7/README.md +110 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/umsbt.py +2 -2
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/titleconfig/config.py +1 -1
- {pylibms-5.0.5 → pylibms-5.0.7}/pyproject.toml +14 -5
- pylibms-5.0.5/MANIFEST.in +0 -1
- pylibms-5.0.5/PKG-INFO +0 -118
- pylibms-5.0.5/PyLibMS.egg-info/PKG-INFO +0 -118
- pylibms-5.0.5/PyLibMS.egg-info/requires.txt +0 -2
- pylibms-5.0.5/README.md +0 -97
- {pylibms-5.0.5 → pylibms-5.0.7}/LICENSE +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/PyLibMS.egg-info/dependency_links.txt +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/PyLibMS.egg-info/top_level.txt +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/__init__.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/__init__.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/field/__init__.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/field/io.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/field/lms_datatype.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/field/lms_field.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/lms_constants.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/lms_exceptions.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/lms_fileinfo.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/stream/fileinfo.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/stream/hashtable.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/common/stream/section.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/fileio/encoding.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/fileio/endian.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/fileio/io.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/__init__.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/definitions/__init__.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/definitions/lms_nodeexceptions.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/definitions/node.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/definitions/node_type.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/flw3.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/msbf.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/flowchart/msbfio.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/__init__.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/definitions/__init__.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/lms_messagetext.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/msbt.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/msbtentry.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/msbtio.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/section/__init__.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/section/atr1.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/section/nli1.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/section/tsy1.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/section/txt2.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/tag/__init__.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/tag/io/param_io.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/tag/io/tag_io.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/tag/lms_tag.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/tag/lms_tagexceptions.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/message/umsbtio.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/__init__.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/definitions/__init__.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/definitions/attribute.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/definitions/color.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/definitions/style.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/definitions/tag.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/msbp.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/msbpread.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/ali2.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/ati2.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/clr1.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/string.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/syl3.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/tag2.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/tgg2.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/project/section/tgp2.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/py.typed +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/titleconfig/__init__.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/titleconfig/definitions/__init__.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/titleconfig/definitions/attribute.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/titleconfig/definitions/field.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/titleconfig/definitions/nodes.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/lms/titleconfig/definitions/tags.py +0 -0
- {pylibms-5.0.5 → pylibms-5.0.7}/setup.cfg +0 -0
pylibms-5.0.7/PKG-INFO
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: PyLibMS
|
|
3
|
+
Version: 5.0.7
|
|
4
|
+
Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, UMSBT, MSBP, and MSBF.
|
|
5
|
+
Author: AbdyyEee
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Repository, https://github.com/AbdyyEee/PylibMS
|
|
8
|
+
Project-URL: Documentation, https://pylibms.readthedocs.io/en/latest/
|
|
9
|
+
Keywords: nintendo,msbt,umsbt,message text,msbp,message project,msbf,message flowchart,flw3,modding,libmessagestudio
|
|
10
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
17
|
+
Requires-Python: >=3.11
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Requires-Dist: PyYAML>=6.0.3
|
|
21
|
+
Requires-Dist: requests>=2.34.2
|
|
22
|
+
Provides-Extra: docs
|
|
23
|
+
Requires-Dist: sphinx>=8.0.0; extra == "docs"
|
|
24
|
+
Requires-Dist: sphinx-rtd-theme>=2.0; extra == "docs"
|
|
25
|
+
Dynamic: license-file
|
|
26
|
+
|
|
27
|
+
# PyLibMS
|
|
28
|
+
|
|
29
|
+
[](https://pypi.org/project/PyLibMS/)
|
|
30
|
+

|
|
31
|
+
[](https://badge.fury.io/py/PyLibMS)
|
|
32
|
+

|
|
33
|
+
|
|
34
|
+
PyLibMS is a library built in Python 3.11 and above for reading and writing of revision >=3 of the libMessageStudio
|
|
35
|
+
(LMS) proprietary file formats from Nintendo. These include files generated for late **Wii** titles, **Nintendo 3DS**,
|
|
36
|
+
**Wii U**, **Mobile**, **Nintendo Switch** and **Nintendo Switch 2** games.
|
|
37
|
+
|
|
38
|
+
The following is supported:
|
|
39
|
+
|
|
40
|
+
| Format | Read | Write | Support |
|
|
41
|
+
|---------|------|-------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
42
|
+
| `MSBT` | ✅ | ✅ | 1:1 Reading and writing. Support for majority of sections. Full attribute (`ATR1`) decoding with configurations. Tag decoding 1:1 with the official Nintendo `.mstxt` file format. |
|
|
43
|
+
| `UMSBT` | ✅ | ✅ | 1:1 Reading and writing. Accessing, adding, inserting and deleting `MSBT` files within `UMSBT` archives. |
|
|
44
|
+
| `MSBF` | ✅ | ✅ | 1:1 Reading and writing flowcharts (`FLW3`). Support for custom node definitions, attaching names and descriptions to nodes. Altering parameter datatypes for flexibility between games. |
|
|
45
|
+
| `MSBP` | ✅ | ❌ | Viewing all MSBP relevant metadata and generating configuration files for use with `MSBT` files. | |
|
|
46
|
+
|
|
47
|
+
# Documentation
|
|
48
|
+
|
|
49
|
+
PyLibMS documentation is on [readthedocs](https://pylibms.readthedocs.io/en/latest/). A simple preview is below:
|
|
50
|
+
|
|
51
|
+
## Reading
|
|
52
|
+
|
|
53
|
+
```py
|
|
54
|
+
# MSBT
|
|
55
|
+
from lms.message.msbtio import read_msbt_path
|
|
56
|
+
|
|
57
|
+
msbt = read_msbt_path("Text.msbt")
|
|
58
|
+
|
|
59
|
+
# UMSBT
|
|
60
|
+
from lms.message.umsbtio import read_umsbt_path
|
|
61
|
+
|
|
62
|
+
umsbt = read_umsbt_path("TextU.umsbt")
|
|
63
|
+
|
|
64
|
+
# MSBP
|
|
65
|
+
from lms.project.msbpread import read_msbp_path
|
|
66
|
+
|
|
67
|
+
msbp = read_msbp_path("Project.msbp")
|
|
68
|
+
|
|
69
|
+
# MSBF
|
|
70
|
+
from lms.flowchart.msbfio import read_msbf_path
|
|
71
|
+
|
|
72
|
+
msbf = read_msbf_path("Flowchart.msbf")
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Writing
|
|
76
|
+
|
|
77
|
+
```py
|
|
78
|
+
# MSBT
|
|
79
|
+
from lms.message.msbtio import write_msbt_path
|
|
80
|
+
|
|
81
|
+
write_msbt_path("Out_text.msbt")
|
|
82
|
+
|
|
83
|
+
# UMSBT
|
|
84
|
+
from lms.message.umsbtio import write_umsbt_path
|
|
85
|
+
|
|
86
|
+
write_umsbt_path("Out_textu.umsbt")
|
|
87
|
+
|
|
88
|
+
# MSBF
|
|
89
|
+
from lms.flowchart.msbfio import write_msbf_path
|
|
90
|
+
|
|
91
|
+
write_msbf_path("Out_Flowchart.msbf")
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
# Adding/Editing Presets
|
|
95
|
+
|
|
96
|
+
To add or edit Preset, you may create an issue with the relevant `yaml` file and the game it is for.
|
|
97
|
+
|
|
98
|
+
# Installation
|
|
99
|
+
|
|
100
|
+
Python version must be `>=3.11.
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
pip install PyLibMS
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
[Pip Page](https://pypi.org/project/PyLibMS/)
|
|
107
|
+
|
|
108
|
+
# Build Instructions
|
|
109
|
+
|
|
110
|
+
Clone the repository, then run `pip install`.
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
git clone https://github.com/AbdyyEee/PylibMS.git
|
|
114
|
+
cd PyLibMS
|
|
115
|
+
pip install -e .
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
# AI Disclaimer
|
|
119
|
+
|
|
120
|
+
PyLibMS and its code is handwritten, developed and maintained by abdyyeee.
|
|
121
|
+
|
|
122
|
+
AI was occasionally consulted for minor implementation references during the development of MSBT, USMBT and MSBF. No AI
|
|
123
|
+
was utilized for MSBP. Any references were reviewed and tested beforehand, and no code was ever directly pasted from any
|
|
124
|
+
generative source.
|
|
125
|
+
|
|
126
|
+
The development of unit-tests were AI assisted.
|
|
127
|
+
|
|
128
|
+
# Credits & Sources
|
|
129
|
+
|
|
130
|
+
* [SS-Decomp](https://github.com/zeldaret/ss): Referenced some parts of their MSBF decomp when adding the format
|
|
131
|
+
to [Nintendo-File-Formats](https://nintendo-formats.com) and this library.
|
|
132
|
+
* [Nintendo-File-Formats](https://nintendo-formats.com) by Kinnay: For existing information on the MSBT and MSBP file
|
|
133
|
+
formats.
|
|
134
|
+
* [Trippixyz](https://github.com/Trippixyz): For helping me get started general decompilation of the formats and general
|
|
135
|
+
help.
|
|
136
|
+
* [AeonSake](https://github.com/AeonSake): Inspiration for UMSBT implementation and other bits of the library.
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: PyLibMS
|
|
3
|
+
Version: 5.0.7
|
|
4
|
+
Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, UMSBT, MSBP, and MSBF.
|
|
5
|
+
Author: AbdyyEee
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Repository, https://github.com/AbdyyEee/PylibMS
|
|
8
|
+
Project-URL: Documentation, https://pylibms.readthedocs.io/en/latest/
|
|
9
|
+
Keywords: nintendo,msbt,umsbt,message text,msbp,message project,msbf,message flowchart,flw3,modding,libmessagestudio
|
|
10
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
17
|
+
Requires-Python: >=3.11
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Requires-Dist: PyYAML>=6.0.3
|
|
21
|
+
Requires-Dist: requests>=2.34.2
|
|
22
|
+
Provides-Extra: docs
|
|
23
|
+
Requires-Dist: sphinx>=8.0.0; extra == "docs"
|
|
24
|
+
Requires-Dist: sphinx-rtd-theme>=2.0; extra == "docs"
|
|
25
|
+
Dynamic: license-file
|
|
26
|
+
|
|
27
|
+
# PyLibMS
|
|
28
|
+
|
|
29
|
+
[](https://pypi.org/project/PyLibMS/)
|
|
30
|
+

|
|
31
|
+
[](https://badge.fury.io/py/PyLibMS)
|
|
32
|
+

|
|
33
|
+
|
|
34
|
+
PyLibMS is a library built in Python 3.11 and above for reading and writing of revision >=3 of the libMessageStudio
|
|
35
|
+
(LMS) proprietary file formats from Nintendo. These include files generated for late **Wii** titles, **Nintendo 3DS**,
|
|
36
|
+
**Wii U**, **Mobile**, **Nintendo Switch** and **Nintendo Switch 2** games.
|
|
37
|
+
|
|
38
|
+
The following is supported:
|
|
39
|
+
|
|
40
|
+
| Format | Read | Write | Support |
|
|
41
|
+
|---------|------|-------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
42
|
+
| `MSBT` | ✅ | ✅ | 1:1 Reading and writing. Support for majority of sections. Full attribute (`ATR1`) decoding with configurations. Tag decoding 1:1 with the official Nintendo `.mstxt` file format. |
|
|
43
|
+
| `UMSBT` | ✅ | ✅ | 1:1 Reading and writing. Accessing, adding, inserting and deleting `MSBT` files within `UMSBT` archives. |
|
|
44
|
+
| `MSBF` | ✅ | ✅ | 1:1 Reading and writing flowcharts (`FLW3`). Support for custom node definitions, attaching names and descriptions to nodes. Altering parameter datatypes for flexibility between games. |
|
|
45
|
+
| `MSBP` | ✅ | ❌ | Viewing all MSBP relevant metadata and generating configuration files for use with `MSBT` files. | |
|
|
46
|
+
|
|
47
|
+
# Documentation
|
|
48
|
+
|
|
49
|
+
PyLibMS documentation is on [readthedocs](https://pylibms.readthedocs.io/en/latest/). A simple preview is below:
|
|
50
|
+
|
|
51
|
+
## Reading
|
|
52
|
+
|
|
53
|
+
```py
|
|
54
|
+
# MSBT
|
|
55
|
+
from lms.message.msbtio import read_msbt_path
|
|
56
|
+
|
|
57
|
+
msbt = read_msbt_path("Text.msbt")
|
|
58
|
+
|
|
59
|
+
# UMSBT
|
|
60
|
+
from lms.message.umsbtio import read_umsbt_path
|
|
61
|
+
|
|
62
|
+
umsbt = read_umsbt_path("TextU.umsbt")
|
|
63
|
+
|
|
64
|
+
# MSBP
|
|
65
|
+
from lms.project.msbpread import read_msbp_path
|
|
66
|
+
|
|
67
|
+
msbp = read_msbp_path("Project.msbp")
|
|
68
|
+
|
|
69
|
+
# MSBF
|
|
70
|
+
from lms.flowchart.msbfio import read_msbf_path
|
|
71
|
+
|
|
72
|
+
msbf = read_msbf_path("Flowchart.msbf")
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Writing
|
|
76
|
+
|
|
77
|
+
```py
|
|
78
|
+
# MSBT
|
|
79
|
+
from lms.message.msbtio import write_msbt_path
|
|
80
|
+
|
|
81
|
+
write_msbt_path("Out_text.msbt")
|
|
82
|
+
|
|
83
|
+
# UMSBT
|
|
84
|
+
from lms.message.umsbtio import write_umsbt_path
|
|
85
|
+
|
|
86
|
+
write_umsbt_path("Out_textu.umsbt")
|
|
87
|
+
|
|
88
|
+
# MSBF
|
|
89
|
+
from lms.flowchart.msbfio import write_msbf_path
|
|
90
|
+
|
|
91
|
+
write_msbf_path("Out_Flowchart.msbf")
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
# Adding/Editing Presets
|
|
95
|
+
|
|
96
|
+
To add or edit Preset, you may create an issue with the relevant `yaml` file and the game it is for.
|
|
97
|
+
|
|
98
|
+
# Installation
|
|
99
|
+
|
|
100
|
+
Python version must be `>=3.11.
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
pip install PyLibMS
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
[Pip Page](https://pypi.org/project/PyLibMS/)
|
|
107
|
+
|
|
108
|
+
# Build Instructions
|
|
109
|
+
|
|
110
|
+
Clone the repository, then run `pip install`.
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
git clone https://github.com/AbdyyEee/PylibMS.git
|
|
114
|
+
cd PyLibMS
|
|
115
|
+
pip install -e .
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
# AI Disclaimer
|
|
119
|
+
|
|
120
|
+
PyLibMS and its code is handwritten, developed and maintained by abdyyeee.
|
|
121
|
+
|
|
122
|
+
AI was occasionally consulted for minor implementation references during the development of MSBT, USMBT and MSBF. No AI
|
|
123
|
+
was utilized for MSBP. Any references were reviewed and tested beforehand, and no code was ever directly pasted from any
|
|
124
|
+
generative source.
|
|
125
|
+
|
|
126
|
+
The development of unit-tests were AI assisted.
|
|
127
|
+
|
|
128
|
+
# Credits & Sources
|
|
129
|
+
|
|
130
|
+
* [SS-Decomp](https://github.com/zeldaret/ss): Referenced some parts of their MSBF decomp when adding the format
|
|
131
|
+
to [Nintendo-File-Formats](https://nintendo-formats.com) and this library.
|
|
132
|
+
* [Nintendo-File-Formats](https://nintendo-formats.com) by Kinnay: For existing information on the MSBT and MSBP file
|
|
133
|
+
formats.
|
|
134
|
+
* [Trippixyz](https://github.com/Trippixyz): For helping me get started general decompilation of the formats and general
|
|
135
|
+
help.
|
|
136
|
+
* [AeonSake](https://github.com/AeonSake): Inspiration for UMSBT implementation and other bits of the library.
|
pylibms-5.0.7/README.md
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# PyLibMS
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/PyLibMS/)
|
|
4
|
+

|
|
5
|
+
[](https://badge.fury.io/py/PyLibMS)
|
|
6
|
+

|
|
7
|
+
|
|
8
|
+
PyLibMS is a library built in Python 3.11 and above for reading and writing of revision >=3 of the libMessageStudio
|
|
9
|
+
(LMS) proprietary file formats from Nintendo. These include files generated for late **Wii** titles, **Nintendo 3DS**,
|
|
10
|
+
**Wii U**, **Mobile**, **Nintendo Switch** and **Nintendo Switch 2** games.
|
|
11
|
+
|
|
12
|
+
The following is supported:
|
|
13
|
+
|
|
14
|
+
| Format | Read | Write | Support |
|
|
15
|
+
|---------|------|-------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
16
|
+
| `MSBT` | ✅ | ✅ | 1:1 Reading and writing. Support for majority of sections. Full attribute (`ATR1`) decoding with configurations. Tag decoding 1:1 with the official Nintendo `.mstxt` file format. |
|
|
17
|
+
| `UMSBT` | ✅ | ✅ | 1:1 Reading and writing. Accessing, adding, inserting and deleting `MSBT` files within `UMSBT` archives. |
|
|
18
|
+
| `MSBF` | ✅ | ✅ | 1:1 Reading and writing flowcharts (`FLW3`). Support for custom node definitions, attaching names and descriptions to nodes. Altering parameter datatypes for flexibility between games. |
|
|
19
|
+
| `MSBP` | ✅ | ❌ | Viewing all MSBP relevant metadata and generating configuration files for use with `MSBT` files. | |
|
|
20
|
+
|
|
21
|
+
# Documentation
|
|
22
|
+
|
|
23
|
+
PyLibMS documentation is on [readthedocs](https://pylibms.readthedocs.io/en/latest/). A simple preview is below:
|
|
24
|
+
|
|
25
|
+
## Reading
|
|
26
|
+
|
|
27
|
+
```py
|
|
28
|
+
# MSBT
|
|
29
|
+
from lms.message.msbtio import read_msbt_path
|
|
30
|
+
|
|
31
|
+
msbt = read_msbt_path("Text.msbt")
|
|
32
|
+
|
|
33
|
+
# UMSBT
|
|
34
|
+
from lms.message.umsbtio import read_umsbt_path
|
|
35
|
+
|
|
36
|
+
umsbt = read_umsbt_path("TextU.umsbt")
|
|
37
|
+
|
|
38
|
+
# MSBP
|
|
39
|
+
from lms.project.msbpread import read_msbp_path
|
|
40
|
+
|
|
41
|
+
msbp = read_msbp_path("Project.msbp")
|
|
42
|
+
|
|
43
|
+
# MSBF
|
|
44
|
+
from lms.flowchart.msbfio import read_msbf_path
|
|
45
|
+
|
|
46
|
+
msbf = read_msbf_path("Flowchart.msbf")
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Writing
|
|
50
|
+
|
|
51
|
+
```py
|
|
52
|
+
# MSBT
|
|
53
|
+
from lms.message.msbtio import write_msbt_path
|
|
54
|
+
|
|
55
|
+
write_msbt_path("Out_text.msbt")
|
|
56
|
+
|
|
57
|
+
# UMSBT
|
|
58
|
+
from lms.message.umsbtio import write_umsbt_path
|
|
59
|
+
|
|
60
|
+
write_umsbt_path("Out_textu.umsbt")
|
|
61
|
+
|
|
62
|
+
# MSBF
|
|
63
|
+
from lms.flowchart.msbfio import write_msbf_path
|
|
64
|
+
|
|
65
|
+
write_msbf_path("Out_Flowchart.msbf")
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
# Adding/Editing Presets
|
|
69
|
+
|
|
70
|
+
To add or edit Preset, you may create an issue with the relevant `yaml` file and the game it is for.
|
|
71
|
+
|
|
72
|
+
# Installation
|
|
73
|
+
|
|
74
|
+
Python version must be `>=3.11.
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
pip install PyLibMS
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
[Pip Page](https://pypi.org/project/PyLibMS/)
|
|
81
|
+
|
|
82
|
+
# Build Instructions
|
|
83
|
+
|
|
84
|
+
Clone the repository, then run `pip install`.
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
git clone https://github.com/AbdyyEee/PylibMS.git
|
|
88
|
+
cd PyLibMS
|
|
89
|
+
pip install -e .
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
# AI Disclaimer
|
|
93
|
+
|
|
94
|
+
PyLibMS and its code is handwritten, developed and maintained by abdyyeee.
|
|
95
|
+
|
|
96
|
+
AI was occasionally consulted for minor implementation references during the development of MSBT, USMBT and MSBF. No AI
|
|
97
|
+
was utilized for MSBP. Any references were reviewed and tested beforehand, and no code was ever directly pasted from any
|
|
98
|
+
generative source.
|
|
99
|
+
|
|
100
|
+
The development of unit-tests were AI assisted.
|
|
101
|
+
|
|
102
|
+
# Credits & Sources
|
|
103
|
+
|
|
104
|
+
* [SS-Decomp](https://github.com/zeldaret/ss): Referenced some parts of their MSBF decomp when adding the format
|
|
105
|
+
to [Nintendo-File-Formats](https://nintendo-formats.com) and this library.
|
|
106
|
+
* [Nintendo-File-Formats](https://nintendo-formats.com) by Kinnay: For existing information on the MSBT and MSBP file
|
|
107
|
+
formats.
|
|
108
|
+
* [Trippixyz](https://github.com/Trippixyz): For helping me get started general decompilation of the formats and general
|
|
109
|
+
help.
|
|
110
|
+
* [AeonSake](https://github.com/AeonSake): Inspiration for UMSBT implementation and other bits of the library.
|
|
@@ -38,12 +38,12 @@ class UMSBT:
|
|
|
38
38
|
|
|
39
39
|
@property
|
|
40
40
|
def files(self) -> tuple[MSBT, ...]:
|
|
41
|
-
"""
|
|
41
|
+
"""List of files tied to this instance."""
|
|
42
42
|
return tuple(self._files)
|
|
43
43
|
|
|
44
44
|
@property
|
|
45
45
|
def file_map(self) -> Mapping[str, MSBT]:
|
|
46
|
-
"""Maps of
|
|
46
|
+
"""Maps of file to their name tied to this instance."""
|
|
47
47
|
return MappingProxyType({msbt.filename: msbt for msbt in self._files})
|
|
48
48
|
|
|
49
49
|
def add_msbt(self, msbt: MSBT) -> None:
|
|
@@ -196,7 +196,7 @@ class TitleConfig:
|
|
|
196
196
|
attribute_configs[config_obj.name] = config_obj
|
|
197
197
|
|
|
198
198
|
tag_content = parsed_content.get(cls.TAG_KEY, {})
|
|
199
|
-
group_map = tag_content
|
|
199
|
+
group_map = tag_content.get("groups", {})
|
|
200
200
|
tag_config = TagConfig(group_map)
|
|
201
201
|
|
|
202
202
|
for tag_def in tag_content.get("tags", ()):
|
|
@@ -7,14 +7,15 @@ include = ["lms*"]
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "PyLibMS"
|
|
10
|
-
version = "5.0.
|
|
10
|
+
version = "5.0.7"
|
|
11
11
|
requires-python = ">=3.11"
|
|
12
|
-
description = "Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF."
|
|
12
|
+
description = "Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, UMSBT, MSBP, and MSBF."
|
|
13
13
|
readme = "README.md"
|
|
14
14
|
authors = [{ name = "AbdyyEee" }]
|
|
15
15
|
keywords = [
|
|
16
16
|
"nintendo",
|
|
17
17
|
"msbt",
|
|
18
|
+
"umsbt",
|
|
18
19
|
"message text",
|
|
19
20
|
"msbp",
|
|
20
21
|
"message project",
|
|
@@ -26,6 +27,8 @@ keywords = [
|
|
|
26
27
|
license = "MIT"
|
|
27
28
|
license-files = ["LICENSE*"]
|
|
28
29
|
classifiers = [
|
|
30
|
+
"Topic :: Software Development :: Libraries",
|
|
31
|
+
"Operating System :: OS Independent",
|
|
29
32
|
"Programming Language :: Python :: 3.11",
|
|
30
33
|
"Programming Language :: Python :: 3.12",
|
|
31
34
|
"Programming Language :: Python :: 3.13",
|
|
@@ -33,10 +36,16 @@ classifiers = [
|
|
|
33
36
|
"Programming Language :: Python :: 3.15",
|
|
34
37
|
]
|
|
35
38
|
dependencies = [
|
|
36
|
-
"PyYAML>=6.0.
|
|
37
|
-
"requests>=2.34.
|
|
39
|
+
"PyYAML>=6.0.3",
|
|
40
|
+
"requests>=2.34.2"
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
[project.optional-dependencies]
|
|
44
|
+
docs = [
|
|
45
|
+
"sphinx>=8.0.0",
|
|
46
|
+
"sphinx-rtd-theme>=2.0"
|
|
38
47
|
]
|
|
39
48
|
|
|
40
49
|
[project.urls]
|
|
41
50
|
Repository = "https://github.com/AbdyyEee/PylibMS"
|
|
42
|
-
Documentation = "https://
|
|
51
|
+
Documentation = "https://pylibms.readthedocs.io/en/latest/"
|
pylibms-5.0.5/MANIFEST.in
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
include README.md LICENSE
|
pylibms-5.0.5/PKG-INFO
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: PyLibMS
|
|
3
|
-
Version: 5.0.5
|
|
4
|
-
Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF.
|
|
5
|
-
Author: AbdyyEee
|
|
6
|
-
License-Expression: MIT
|
|
7
|
-
Project-URL: Repository, https://github.com/AbdyyEee/PylibMS
|
|
8
|
-
Project-URL: Documentation, https://github.com/AbdyyEee/PylibMS/wiki
|
|
9
|
-
Keywords: nintendo,msbt,message text,msbp,message project,msbf,message flowchart,flw3,modding,libmessagestudio
|
|
10
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.14
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.15
|
|
15
|
-
Requires-Python: >=3.11
|
|
16
|
-
Description-Content-Type: text/markdown
|
|
17
|
-
License-File: LICENSE
|
|
18
|
-
Requires-Dist: PyYAML>=6.0.1
|
|
19
|
-
Requires-Dist: requests>=2.34.0
|
|
20
|
-
Dynamic: license-file
|
|
21
|
-
|
|
22
|
-
# PyLibMS
|
|
23
|
-
|
|
24
|
-
[](https://pypi.org/project/PyLibMS/)
|
|
25
|
-

|
|
26
|
-
[](https://badge.fury.io/py/PyLibMS)
|
|
27
|
-

|
|
28
|
-
|
|
29
|
-
PyLibMS is a library built in Python 3.11 and above for reading and writing of libMessageStudio (LMS) proprietary file
|
|
30
|
-
formats from Nintendo.
|
|
31
|
-
|
|
32
|
-
The following is supported:
|
|
33
|
-
|
|
34
|
-
| Format | Read | Write | Support |
|
|
35
|
-
|--------|------|-------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
36
|
-
| `MSBT` | ✅ | ✅ | 1:1 Reading and writing Support for majority of sections. Full attribute (`ATR1`) decoding with configurations. Tag decoding 1:1 with the official Nintendo `.mstxt` file format. |
|
|
37
|
-
| `MSBF` | ✅ | ✅ | 1:1 Reading and writing flowcharts (`FLW3`). Support for custom node definitions, attaching names and descriptions to nodes. Altering parameter datatypes for flexibility between games. |
|
|
38
|
-
| `MSBP` | ✅ | ❌ | Viewing all MSBP relevant metadata and generating configuration files for use with `MSBT` files. |
|
|
39
|
-
|
|
40
|
-
This library is designed to support LMS revision >=3.0. These include files generated for late **Wii** titles,
|
|
41
|
-
**Nintendo 3DS**, **Wii U**, **Mobile**, **Nintendo Switch** and **Nintendo Switch 2** games.
|
|
42
|
-
|
|
43
|
-
# Features and Usage
|
|
44
|
-
|
|
45
|
-
Simple preview of the library is below. See [the wiki](https://github.com/AbdyyEee/PylibMS/wiki) for more explanations
|
|
46
|
-
and examples.
|
|
47
|
-
|
|
48
|
-
## Reading
|
|
49
|
-
|
|
50
|
-
```py
|
|
51
|
-
# MSBT
|
|
52
|
-
from lms.message.msbtio import read_msbt_path
|
|
53
|
-
|
|
54
|
-
msbt = read_msbt_path("Text.msbt")
|
|
55
|
-
|
|
56
|
-
# MSBP
|
|
57
|
-
from lms.project.msbpread import read_msbp_path
|
|
58
|
-
|
|
59
|
-
msbp = read_msbp_path("Project.msbp")
|
|
60
|
-
|
|
61
|
-
# MSBF
|
|
62
|
-
from lms.flowchart.msbfio import read_msbf_path
|
|
63
|
-
|
|
64
|
-
msbf = read_msbf_path("Flowchart.msbf")
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Writing
|
|
68
|
-
|
|
69
|
-
```py
|
|
70
|
-
# MSBT
|
|
71
|
-
from lms.message.msbtio import write_msbt_path
|
|
72
|
-
|
|
73
|
-
write_msbt_path("Out_text.msbt")
|
|
74
|
-
|
|
75
|
-
# MSBF
|
|
76
|
-
from lms.flowchart.msbfio import write_msbf_path
|
|
77
|
-
|
|
78
|
-
write_msbf_path("Out_Flowchart.msbf")
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
# Adding/Editing Presets
|
|
82
|
-
|
|
83
|
-
To add or edit Preset, you may create an issue with the relevant `yaml` file and the game it is for.
|
|
84
|
-
|
|
85
|
-
# Installation
|
|
86
|
-
|
|
87
|
-
```
|
|
88
|
-
pip install PyLibMS
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
[Pip Page](https://pypi.org/project/PyLibMS/)
|
|
92
|
-
|
|
93
|
-
# Build Instructions
|
|
94
|
-
|
|
95
|
-
Python version must be `3.11` or higher.
|
|
96
|
-
|
|
97
|
-
Clone the repository, then run `pip install` (venv recommended)
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
git clone https://github.com/AbdyyEee/PylibMS.git
|
|
101
|
-
cd PyLibMS
|
|
102
|
-
pip install -e .
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
# AI Disclaimer
|
|
106
|
-
|
|
107
|
-
Code in this library was written by me. AI was utilized occasionally when developing MSBT (specifically tag string importing) , MSBF and assisting in creating unit tests.
|
|
108
|
-
|
|
109
|
-
# Credits & Sources
|
|
110
|
-
|
|
111
|
-
* [SS-Decomp](https://github.com/zeldaret/ss): Referenced some parts of their MSBF decomp when adding the format
|
|
112
|
-
to [Nintendo-File-Formats](https://nintendo-formats.com) and this library.
|
|
113
|
-
* [Nintendo-File-Formats](https://nintendo-formats.com) by Kinnay: For existing information on the MSBT and MSBP file
|
|
114
|
-
formats.
|
|
115
|
-
* [Trippixyz](https://github.com/Trippixyz): For helping me get started general decompilation of the formats and general
|
|
116
|
-
help.
|
|
117
|
-
* [AeonSake](https://github.com/AeonSake): Inspiration for some the implementation of the library and a bit of general
|
|
118
|
-
help.
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: PyLibMS
|
|
3
|
-
Version: 5.0.5
|
|
4
|
-
Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF.
|
|
5
|
-
Author: AbdyyEee
|
|
6
|
-
License-Expression: MIT
|
|
7
|
-
Project-URL: Repository, https://github.com/AbdyyEee/PylibMS
|
|
8
|
-
Project-URL: Documentation, https://github.com/AbdyyEee/PylibMS/wiki
|
|
9
|
-
Keywords: nintendo,msbt,message text,msbp,message project,msbf,message flowchart,flw3,modding,libmessagestudio
|
|
10
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.14
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.15
|
|
15
|
-
Requires-Python: >=3.11
|
|
16
|
-
Description-Content-Type: text/markdown
|
|
17
|
-
License-File: LICENSE
|
|
18
|
-
Requires-Dist: PyYAML>=6.0.1
|
|
19
|
-
Requires-Dist: requests>=2.34.0
|
|
20
|
-
Dynamic: license-file
|
|
21
|
-
|
|
22
|
-
# PyLibMS
|
|
23
|
-
|
|
24
|
-
[](https://pypi.org/project/PyLibMS/)
|
|
25
|
-

|
|
26
|
-
[](https://badge.fury.io/py/PyLibMS)
|
|
27
|
-

|
|
28
|
-
|
|
29
|
-
PyLibMS is a library built in Python 3.11 and above for reading and writing of libMessageStudio (LMS) proprietary file
|
|
30
|
-
formats from Nintendo.
|
|
31
|
-
|
|
32
|
-
The following is supported:
|
|
33
|
-
|
|
34
|
-
| Format | Read | Write | Support |
|
|
35
|
-
|--------|------|-------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
36
|
-
| `MSBT` | ✅ | ✅ | 1:1 Reading and writing Support for majority of sections. Full attribute (`ATR1`) decoding with configurations. Tag decoding 1:1 with the official Nintendo `.mstxt` file format. |
|
|
37
|
-
| `MSBF` | ✅ | ✅ | 1:1 Reading and writing flowcharts (`FLW3`). Support for custom node definitions, attaching names and descriptions to nodes. Altering parameter datatypes for flexibility between games. |
|
|
38
|
-
| `MSBP` | ✅ | ❌ | Viewing all MSBP relevant metadata and generating configuration files for use with `MSBT` files. |
|
|
39
|
-
|
|
40
|
-
This library is designed to support LMS revision >=3.0. These include files generated for late **Wii** titles,
|
|
41
|
-
**Nintendo 3DS**, **Wii U**, **Mobile**, **Nintendo Switch** and **Nintendo Switch 2** games.
|
|
42
|
-
|
|
43
|
-
# Features and Usage
|
|
44
|
-
|
|
45
|
-
Simple preview of the library is below. See [the wiki](https://github.com/AbdyyEee/PylibMS/wiki) for more explanations
|
|
46
|
-
and examples.
|
|
47
|
-
|
|
48
|
-
## Reading
|
|
49
|
-
|
|
50
|
-
```py
|
|
51
|
-
# MSBT
|
|
52
|
-
from lms.message.msbtio import read_msbt_path
|
|
53
|
-
|
|
54
|
-
msbt = read_msbt_path("Text.msbt")
|
|
55
|
-
|
|
56
|
-
# MSBP
|
|
57
|
-
from lms.project.msbpread import read_msbp_path
|
|
58
|
-
|
|
59
|
-
msbp = read_msbp_path("Project.msbp")
|
|
60
|
-
|
|
61
|
-
# MSBF
|
|
62
|
-
from lms.flowchart.msbfio import read_msbf_path
|
|
63
|
-
|
|
64
|
-
msbf = read_msbf_path("Flowchart.msbf")
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Writing
|
|
68
|
-
|
|
69
|
-
```py
|
|
70
|
-
# MSBT
|
|
71
|
-
from lms.message.msbtio import write_msbt_path
|
|
72
|
-
|
|
73
|
-
write_msbt_path("Out_text.msbt")
|
|
74
|
-
|
|
75
|
-
# MSBF
|
|
76
|
-
from lms.flowchart.msbfio import write_msbf_path
|
|
77
|
-
|
|
78
|
-
write_msbf_path("Out_Flowchart.msbf")
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
# Adding/Editing Presets
|
|
82
|
-
|
|
83
|
-
To add or edit Preset, you may create an issue with the relevant `yaml` file and the game it is for.
|
|
84
|
-
|
|
85
|
-
# Installation
|
|
86
|
-
|
|
87
|
-
```
|
|
88
|
-
pip install PyLibMS
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
[Pip Page](https://pypi.org/project/PyLibMS/)
|
|
92
|
-
|
|
93
|
-
# Build Instructions
|
|
94
|
-
|
|
95
|
-
Python version must be `3.11` or higher.
|
|
96
|
-
|
|
97
|
-
Clone the repository, then run `pip install` (venv recommended)
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
git clone https://github.com/AbdyyEee/PylibMS.git
|
|
101
|
-
cd PyLibMS
|
|
102
|
-
pip install -e .
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
# AI Disclaimer
|
|
106
|
-
|
|
107
|
-
Code in this library was written by me. AI was utilized occasionally when developing MSBT (specifically tag string importing) , MSBF and assisting in creating unit tests.
|
|
108
|
-
|
|
109
|
-
# Credits & Sources
|
|
110
|
-
|
|
111
|
-
* [SS-Decomp](https://github.com/zeldaret/ss): Referenced some parts of their MSBF decomp when adding the format
|
|
112
|
-
to [Nintendo-File-Formats](https://nintendo-formats.com) and this library.
|
|
113
|
-
* [Nintendo-File-Formats](https://nintendo-formats.com) by Kinnay: For existing information on the MSBT and MSBP file
|
|
114
|
-
formats.
|
|
115
|
-
* [Trippixyz](https://github.com/Trippixyz): For helping me get started general decompilation of the formats and general
|
|
116
|
-
help.
|
|
117
|
-
* [AeonSake](https://github.com/AeonSake): Inspiration for some the implementation of the library and a bit of general
|
|
118
|
-
help.
|
pylibms-5.0.5/README.md
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
# PyLibMS
|
|
2
|
-
|
|
3
|
-
[](https://pypi.org/project/PyLibMS/)
|
|
4
|
-

|
|
5
|
-
[](https://badge.fury.io/py/PyLibMS)
|
|
6
|
-

|
|
7
|
-
|
|
8
|
-
PyLibMS is a library built in Python 3.11 and above for reading and writing of libMessageStudio (LMS) proprietary file
|
|
9
|
-
formats from Nintendo.
|
|
10
|
-
|
|
11
|
-
The following is supported:
|
|
12
|
-
|
|
13
|
-
| Format | Read | Write | Support |
|
|
14
|
-
|--------|------|-------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
15
|
-
| `MSBT` | ✅ | ✅ | 1:1 Reading and writing Support for majority of sections. Full attribute (`ATR1`) decoding with configurations. Tag decoding 1:1 with the official Nintendo `.mstxt` file format. |
|
|
16
|
-
| `MSBF` | ✅ | ✅ | 1:1 Reading and writing flowcharts (`FLW3`). Support for custom node definitions, attaching names and descriptions to nodes. Altering parameter datatypes for flexibility between games. |
|
|
17
|
-
| `MSBP` | ✅ | ❌ | Viewing all MSBP relevant metadata and generating configuration files for use with `MSBT` files. |
|
|
18
|
-
|
|
19
|
-
This library is designed to support LMS revision >=3.0. These include files generated for late **Wii** titles,
|
|
20
|
-
**Nintendo 3DS**, **Wii U**, **Mobile**, **Nintendo Switch** and **Nintendo Switch 2** games.
|
|
21
|
-
|
|
22
|
-
# Features and Usage
|
|
23
|
-
|
|
24
|
-
Simple preview of the library is below. See [the wiki](https://github.com/AbdyyEee/PylibMS/wiki) for more explanations
|
|
25
|
-
and examples.
|
|
26
|
-
|
|
27
|
-
## Reading
|
|
28
|
-
|
|
29
|
-
```py
|
|
30
|
-
# MSBT
|
|
31
|
-
from lms.message.msbtio import read_msbt_path
|
|
32
|
-
|
|
33
|
-
msbt = read_msbt_path("Text.msbt")
|
|
34
|
-
|
|
35
|
-
# MSBP
|
|
36
|
-
from lms.project.msbpread import read_msbp_path
|
|
37
|
-
|
|
38
|
-
msbp = read_msbp_path("Project.msbp")
|
|
39
|
-
|
|
40
|
-
# MSBF
|
|
41
|
-
from lms.flowchart.msbfio import read_msbf_path
|
|
42
|
-
|
|
43
|
-
msbf = read_msbf_path("Flowchart.msbf")
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Writing
|
|
47
|
-
|
|
48
|
-
```py
|
|
49
|
-
# MSBT
|
|
50
|
-
from lms.message.msbtio import write_msbt_path
|
|
51
|
-
|
|
52
|
-
write_msbt_path("Out_text.msbt")
|
|
53
|
-
|
|
54
|
-
# MSBF
|
|
55
|
-
from lms.flowchart.msbfio import write_msbf_path
|
|
56
|
-
|
|
57
|
-
write_msbf_path("Out_Flowchart.msbf")
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
# Adding/Editing Presets
|
|
61
|
-
|
|
62
|
-
To add or edit Preset, you may create an issue with the relevant `yaml` file and the game it is for.
|
|
63
|
-
|
|
64
|
-
# Installation
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
pip install PyLibMS
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
[Pip Page](https://pypi.org/project/PyLibMS/)
|
|
71
|
-
|
|
72
|
-
# Build Instructions
|
|
73
|
-
|
|
74
|
-
Python version must be `3.11` or higher.
|
|
75
|
-
|
|
76
|
-
Clone the repository, then run `pip install` (venv recommended)
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
git clone https://github.com/AbdyyEee/PylibMS.git
|
|
80
|
-
cd PyLibMS
|
|
81
|
-
pip install -e .
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
# AI Disclaimer
|
|
85
|
-
|
|
86
|
-
Code in this library was written by me. AI was utilized occasionally when developing MSBT (specifically tag string importing) , MSBF and assisting in creating unit tests.
|
|
87
|
-
|
|
88
|
-
# Credits & Sources
|
|
89
|
-
|
|
90
|
-
* [SS-Decomp](https://github.com/zeldaret/ss): Referenced some parts of their MSBF decomp when adding the format
|
|
91
|
-
to [Nintendo-File-Formats](https://nintendo-formats.com) and this library.
|
|
92
|
-
* [Nintendo-File-Formats](https://nintendo-formats.com) by Kinnay: For existing information on the MSBT and MSBP file
|
|
93
|
-
formats.
|
|
94
|
-
* [Trippixyz](https://github.com/Trippixyz): For helping me get started general decompilation of the formats and general
|
|
95
|
-
help.
|
|
96
|
-
* [AeonSake](https://github.com/AeonSake): Inspiration for some the implementation of the library and a bit of general
|
|
97
|
-
help.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|