News:

Don't forget to visit the main site! There's lots of helpful docs, patches, and more!

Main Menu

Super Metroid Auto Repoint Tool (SMART)

Started by TestRunner, April 26, 2016, 11:42:17 PM

Previous topic - Next topic

TestRunner

SMART is a full level editor that can also export and import rooms and all data associated with the rooms from a Super Metroid ROM. This gives the ability for better version control of a SM project and allows multiple designers to work on the same project at the same time more easily. The other purpose of SMART is to automatically repoint all the room data as the size of the data changes. Adding data such as PLMs, Enemies, States, FX1, LevelData, ScrollData, and Doors are very simple and requires no hex knowledge or advance understanding of the SM ROM.




It's possible that it'll destroy your ROM, so make sure you back everything up! Any and all feedback, bug reports, and requests are extremely useful, as I'd like to make this as stable and universal as possible.

Download SMART Link
SMART Guide

Thanks for checking it out! Happy hacking  ^.^

begrimed

This is going to save so so so much time of my time working on the next version of my hack when I start back up on it (and hacks in general...), which will be almost nothing but moving rooms around and doing things with pointers and states. Thank you so much for this tool. Now in a few years we can give struggling hackers shit because we had to do all of the room pointers manually.

Quietus

Quote from: begrimed on April 27, 2016, 12:03:05 AMNow in a few years we can give struggling hackers shit because we had to do all of the room pointers manually.
While angrily shaking our fists like old people. :^_^:

On topic: I have to admit that while I could easily learn the whole repointing thing, it's the repetitive work involved that's stopped me really cracking on with a hack for so long. I'll keep my fingers crossed that this gets used, abused, broken, fixed, and fully working and reliable, so that I may one day release something. :cheers:

FPzero

Oh hell yes! Lunar Magic for Super Mario World has something like this in its source and I would imagine one of the reasons SMW hacking is so popular is because all the pointing is handled automatically. I don't know if this could have the same effect but I'd venture that not having to worry about all the repointing every time you want to change a thing could contribute to an increase of new hackers that actually complete projects.

Very cool!

Vanya

Damn straight, it would. Myself included.

TestRunner

So I did some more testing and demos do not work with SMART. I'm not really sure how those are handled atm, but I'll mess with it later. I don't think demos are really used much in hacks but it would be nice if they did work.

The other bug is that there is no acid in mother brain's room. Not really sure why since the FX1 is still there in SMILE. I can only assume there some other wacky stuff for that room is interfering?

Steel Sparkle

Seeing from all the reactions this is a very SMART idea you had to make a useful tool.  :^_^:

bjdabomb777

I've given this a spin, and oh yes. This magical tool does wonders!

Just to clarify, door scroll ASM/pointers have to be redone since the data isn't carried over, right? I assume because that data isn't really room-based?

UDtheAesir

Oh man, would be awesome if this could do different kinds of metal doors. Not just the ones that turn blue after something's done. Why not red, green, and even yellow doors underneath the metal doors? That would give meaning to "beefed-up security" for a Super Metroid ROM hack.

Kazuto

Quote from: UDtheAesir on May 07, 2016, 04:11:29 PM
Oh man, would be awesome if this could do different kinds of metal doors. Not just the ones that turn blue after something's done. Why not red, green, and even yellow doors underneath the metal doors? That would give meaning to "beefed-up security" for a Super Metroid ROM hack.
I haven't yet checked out this tool (which sounds awesome), but that seems beyond the scope of what he's intending this to do.  It seems more about moving pointer data around without having to manually re-point it.  Your idea is a custom PLM.  It can totally be made, but the extent to which this would affect it is simply moving the location of the pointer that loads your custom PLM.  If I'm not mistaken on his intent, anyway.

TestRunner

The tool doesn't affect door ASM pointers, but it doesn't overwrite or move the ASM code you had written so there should be no need to repoint them. I've considered adding a ASM disassemble to repoint ASM stuff if you want to expand space for it, but it would be pretty major to implement if your ASM code has branching stuff. If you're doing ASM stuff then you should probably optimize the stuff yourself anyways.

If you added ASM or other stuff in the free space that SMART intends to use (defaults settings are good for vanilla) then SMART will overwrite it. Make sure you update the config file if there's space that you don't want SMART to overwrite. If you adding a custom PLM, then that's in a different memory bank and thus usually has no conflict issues with SMART. Only problem that could arise is if the PLM data has pointers to specific room data stuff, which as far as I know is never done in vanilla.

I should note that this tool DOES automatically move the PLM Scroll pointers and their data. You can easily add or change the scroll data stuff in the XML files.

UDtheAesir

Nice, okay, thanks for the explanations! When this gets ironed out, I'll definitely give this a try.

Dark-SA-X

Quote from: FPzero on April 27, 2016, 11:39:36 AM
Lunar Magic for Super Mario World has something like this in its source and I would imagine one of the reasons SMW hacking is so popular is because all the pointing is handled automatically.

I agree with fp about that as well it makes it easier on users not to worry about that nick pick.
As I am doing my sm hack at the moment, I'm afraid to even touch the pointers.
Because I don't know where the data may end up or screw up somewhere else which is perfectly fine.


TestRunner

Hey guys. I've released SMART v1.1! The program looks completely different now and is much more powerful.

Download Link

Change Log:
   New Features:
      -Added a GUI for modifying the XML
         -Can add/copy/remove/modify pretty much any ROM object
      -Added resizing room funtionality (GUI only, don't use the XML)
      -Added a simple ASM disassembler. Will try to repoint simple door code.
      -Added rom usage visualizer
      -Cleaned up a lot of code
   Known Bugs:
      -Mother brain's room FX1 does not work
      -Demo videos do not work

TestRunner

#14
Hi sorry I've been completely MIA. Here's the release of SMART 2.0! SMART 2.0

Tons of major features, it's basically a completely new program. It can do all the old stuff, but it has a full GUI or add/removing/copying/editing all of the room data and properties. Still no tile editor, but it's something I'll figure out eventually. I haven't really worked on this project in over a year, so this release is really long over due and I apologize about that. I do plan to continue working on SMART in the future and it's definitely not a dead project. Amoeba has been helping a lot with the work, but I've haven't really had the time to work on this at all between GDQ and ZOOTR Development. This project has been way bigger than I anticipated when I started, with it now being over 45000 lines of code.

Anyways, happy hacking! Let me know if help is needed setting this up or using it.

New Features:
- A full GUI or add/removing/copying/editing all of the room data and properties
- Can parse and repoint basic ASM and bin code
- A music editor and exportor/importer
- Can export/import tilesets. Can have any number of tilesets. Unfortunately SMILE currently has a hardcoded number of tilesets it reads from, but adding more tilesets works fine in game. Supports multi CRE patches too.
- A tool for auto assigning unique IDs to every door and item so you don't have to worry about sharing IDs.
- A project manager, so you can switch between projects
- Can export/import map data
- A ton of other features and lot of bug fixes

amoeba

Bug reported by wjg999:

I forgot to update the default config file when I added support for repointing music. You'll need to edit your so it knows about the default free space or you will get an error saying that there isn't enough space in the ROM when you try to use SMART.


  <LevelDataSpaceBankAny>
    <Space start="B98000" end="B9A633" />
    <Space start="BAC629" end="C18DA9" />
    <Space start="C1B6F6" end="DED1BF" />
    <Space start="DF8000" end="DFD4DE" />
  </LevelDataSpaceBankAny>

amoeba

SMART 1.3

* Repoints demos and updates them to follow rooms as they are moved.
* More tolerant to bad data in the ROM.
* Configurable automatic patching of quickmet to load the CRE where SMART happens to put it.
* Room names for a vanilla ROM are automatically loaded.
* Tool for reordering SCE tilesets.
* Repair deleted section of a project config by loading defaults for that section.
* Hide debug logging by default and properly label them when enabled.

Vanya

Wait so is the most up to date one 2.0 or 1.3? Are these separate branches of the same project?

amoeba

It's 1.3. TestRunner forgot to update the version number in the source and I forgot to check the thread to see that he intended to do so.

amoeba

#19
SMART 1.4

* Bug fix: handle 0 demos correctly. If you have patched out demos in your rom, set 0x8082A6 to $0000, so SMART knows not to load them.
* Additional debug logging
* Performance improvements for graphics handling
* Drop down previews of room and states. Select the Preview from the right pane with a room or state selected.

amoeba

SMART 1.5

* New Tileset editor.
** Edit the palette, the graphics, and the tilemap directly in SMART.
** Transpose tiles so that you can reorder your tileset without changing the appearance of your rooms.
** Get a list of the rooms using a tileset so you know what to look at.
** Reorder tilesets with/or without updating rooms to match.
** Previews update when editing the tileset.
** Copy/paste tiles and colors between tilesets.
** Zoom in and out.
** Extended tilesets give you an extra $40 graphics tiles. Reclaim that unused space!
** Support for creating tilesets that overwrite the CRE like Kraid's.
** Importing tilesets in the editor instead of using the project directory.

dewhi100

What's with the version numbers? Is the 1.x series a different branch from the 2.0 release?

amoeba

There's only one series. Look up a couple posts in the thread. The one posted as 2.0 was misnumbered. The program itself showed 1.2 in the about box. TR and I are both working on the same branch.

TestRunner

Hey guys, sorry for the longer update. SMART 1.6 is now out! This is a major overhaul as SMART now boast a full level editor. This should make using SMART to create your hacks a lot easier. Right now the editor supports advanced selection and layer manipulations, plus all the previous feature in SMART reworked into the new GUI. You can also edit multiple states simultaneously. There's much more planned to come soon, such as a Layer3, Map, and BG Editors as well as support tools to help find and correct common errors.

Download link is in the OP.

Happy Hacking!

UDtheAesir

Quote from: TestRunner on April 28, 2019, 02:45:14 PM
Hey guys, sorry for the longer update. SMART 1.6 is now out! This is a major overhaul as SMART now boast a full level editor. This should make using SMART to create your hacks a lot easier. Right now the editor supports advanced selection and layer manipulations, plus all the previous feature in SMART reworked into the new GUI. You can also edit multiple states simultaneously. There's much more planned to come soon, such as a Layer3, Map, and BG Editors as well as support tools to help find and correct common errors.

Download link is in the OP.

Happy Hacking!

Sick! Can't wait!