This repository contains a python script reads an UNCOMPRESSED Music World pxo file and attempts to dump sprites from it. The tool is not 100% correct, but I think it rips everything out correctly...
I had to make some assumptions about the data itself (specifically SPRITE_MAXW/H
) because of the fact that data is not packed how I think it is. There's some stray bytes that I haven't been able to figure out what they are yet, probably because I haven't correctly figured out the sprite headers. This might be fixed in a future date.
First, you need to have Python 3 installed, there's online guides for doing that if you don't know how.
If your version of Python does not come with PIL or numpy bundled, you will need to get them manually. This can be done either via pip or other manual means. Instructions for installing separate modules can be found here.
Next, you'll need a copy of the Music World PXO. You can either rip this from your own phone, or find one online. I won't provide those for you.
Finally, you will need to uncompress the PXO. This can be done using a tool such as LGUI.
Once you have all of those steps done, you can start ripping out sprites.
The program has three modes of operation:
This will rip all sprites that it finds from an uncompressed Music World PXO. The ripped sprites will be dumped to a folder called "Ripped", which will contain the sprite headers and the sprites themselves in the proprietary format used by Music World.
python mwsripper.py <Uncompressed PXO>
This mode will take a single sprite and its header and convert it to a PNG. The PNG will be dumped to a folder called "Converted", and the PNG itself will have the same name as the data file.
python mwsripper.py <Sprite Header> <Sprite Data>
This mode will read an entire folder of sprite rips and convert them to PNG. The outputted PNGs will be dumped to a folder called "Converted". This mode does no error checking, it assumes everything inside a folder is a sprite+header file combo. This is best used with a folder that was ripped using the Rip from PXO mode.
python mwsripper.py <Folder with sprite data and headers>
Besides what was outlined in the very top of the README, I am not aware of any major bugs with the script. If any arise, please open an issue.
Currently this script only rips sprites. It can probably be extended in the future to rip out music MIDI's, WAVs, and possibly any other data which can be found (which I have already ripped out manually since they weren't in any proprietary format). Maybe I could potentially expand it to also decompress a given PXO.