Kuribo64
Views: 19,987,662 Home | Forums | Uploader | Wiki | Object databases | IRC
Rules/FAQ | Memberlist | Calendar | Stats | Online users | Last posts | Search
04-18-24 08:24 AM
Guest:

0 users reading Super Mario Sunshine BLO Editor | 1 bot

Main - Misc. ROM hacking - Super Mario Sunshine BLO Editor Hide post layouts | New reply


shibboleet
Posted on 11-26-16 12:11 AM (rev. 3 of 11-26-16 01:24 AM) Link | #79962

Current Version: v0.1 ALPHA


Github (download): here



[thumbnail]
[thumbnail]

Color Key:
Picture box
Panel
Textbox
Text in text boxes are not rendered, nor are windows rendered yet. That will come in later versions.



What is it?



The Super Mario Sunshine BLO editor is an editor written in Python and PyQt that can only currently view the layouts in the game, such as the HUD (Heads up display), Pause Menu, Save screen, Shine selection menu, and more. It can move around elements and edit only the X position (for testing), but cannot save. It can also delete and duplicate entries, but adding only pertains to panels.

Some of the the renders might not look very good, such as this one:

[thumbnail]

This occurs when there's a lot of content to display on the screen. Shines overlap because they're assigned to their positions when the animation occurs when opening up an area, so they overlap each other. This output was expected and cannot be altered or prevented easily without heavy hardcoding nonsense that I don't want to do.

That's cool and all, but how does it work?


Think of the BLO format as a tree view, with parent and child nodes. If you parse an entire BLO, you'd probably get something like this:

BLO1
{
INF1
{
}
BGN1
{
PAN1
{
PIC1
{
}
WIN1
{
}
}
}
END1
{
}
EXT1
{
}
}

Even though it may look confusing to some people, it actually makes a lot of sense. Here's it broken down:

BLO1 is the header of the file, aka what defines a lot of the traits of the file, AKA section counts, and file size.

INF1 (Information) is currently unknown in it's purpose.

PAN1 (Panel) is a area where PIC1s offset from. Think of it as a base for elements inside of it.

PIC1 (Picture) A picture rendered. It's position is calculated like this:

PAN1 XOffset + PIC1XOffset = X
PAN1 YOffset + PIC1YOffset = Y

And those are the X and Y positions, and they are relative to what the PAN1's X and Y are.

WIN1 (Window) is currently unknown. I'm not sure about what this would contain, and how it differs from PAN1. It probably has a image it fills in.

TBX1 (Textbox) is a text box, surprisingly. This doesn't load what text is stored into it, that is held by the separate BMG (text storage) file outside of the BLO. This textbox defines what font the box will use and it's position.

BGN1 (Begin) is the start of a set of elements.

END1 (End) is the end of the set of elements.

EXT1 (Exit) is the last thing to be parsed at the end of the file. Once this is read, the file is done being read by the program.

Niiiice. How do I use this program?



First, you need Python 3.5 (or anything within Python 3, but I always recommend having the latest.) Next, you have to install PyQt5. This can be done by cd'ing into your "Scripts" folder on your system and typing this in:

pip3.5.exe install pyqt5

and it should install on your system. And to run it, simply do:

python blo.py file.blo

and you're done! I hope you enjoy, and happy hacking, as usual! :)
-Shibboleet

____________________
a


Main - Misc. ROM hacking - Super Mario Sunshine BLO Editor Hide post layouts | New reply

Page rendered in 0.036 seconds. (2048KB of memory used)
MySQL - queries: 26, rows: 192/192, time: 0.015 seconds.
[powered by Acmlm] Acmlmboard 2.064 (2018-07-20)
© 2005-2008 Acmlm, Xkeeper, blackhole89 et al.