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

amoeba

SMART 1.7

* Some basic linting of BTS tiling errors
* A new Quickmet coded from scratch. IT's lighter weight than what you are probably used to.
** Right click to load!
* Editing of saves directly in the level editor.
** Right click a save to load the game using the save's parameters.
** No more guessing about where saves will line up.
* Some minor usability improvements.


amoeba

SMART 1.8

Features:
* Right click for tile info
** Click the tile description to select the tile in the tilemap
** Descriptions of detected tiling errors
* Open room editors for adjacent rooms from the context menu
** Click on any door, special FX1, or door tile
* Bank usage visualizer separates data that needs to be in a bank vs data that was just put there anyway.
** Red for data that can't be moved to another bank
** Orange for data that can be moved to make space for data that needs to be in the bank
* Option for auto copy on select in for level data to reduce the number of commands needed to copy/paste

Bug fixes:
* Don't crash on loading corrupt room names from ROM
* Quickmet loads from the correct location when zoomed in
* Copying rooms also copies bgdata
* Use fallbacks if the Data folder was deleted
* Fix drawing issue with transparent tiles when zoomed in
* Don't crash the room editor when adding new entities to the room
* Correctly update the level editor when the room is resized without closing and reopening the editor

Oi27

Is there a SMART guide on the way? The software seems really useful, but I haven't been able to make progress with actually using it. :p

albert v.

I'll suggest to the creators or someone who already knows well how to use it, make a video tutorial for it so more members can start getting used to it, cause honestly is kinda of confusing and a bit tricky to make the first steps, it's my humble opinion..

dewhi100

Since you are cranking out the updates, just thought I'd make sure you know about versioning. It goes X.Y.Z, where X is major version (saves/projects are not backwards compatible with previous major version), Y is minor version (new features, but backwards compatible within that major version), and Z is a version released to fix bugs. Numbering this way makes it more clear to people if their saved work will break at just a glance.

You are a dynamo. Thanks and keep up the good work.

amoeba

To those asking for a guide. I took a stab at it, but it's not really much more than the basics of what the controls do. It would be useful to have a proper wiki for it.

As for versioning, the versioning system is whatever. It's actually using X.Y.Z.W, but I'm only posting X.Y here. I'll be bumping Y on every release, Z.W are more about identifying builds - especially if I forget to bump the revision. In general, updates should not break previous versions, but you might need to do a little extra work when SMART picks up a new type of data to repoint.

amoeba

SMART 1.9

Features:
* Edit Scroll PLMs in the level editor. Right click the scroll PLM in the left pane.
* Enabled editing of room scroll data when it's set to use a constant value by automatically converting it to custom scroll data.
* BG parallax can be selected by % instead of modifying the bits directly. Supports the full range of allowed values.

Bug fixes:
* Update "Restore Defaults" button in the config to a more recent copy of SMILE RF's MDB and level_data.
* Better compatibility by preserving both Layer 2 and BG pointer data in the same room.
** You should never do this.
* Fix bug where rooms using the reload CRE flag would fail to find the CRE without multiCRE.
* Room scroll data now correctly shows on all rows instead of showing only the first row.
* Brush now correctly modifies Layer2 instead of always modifying Layer1.

amoeba

SMART 1.10

Features:
* BG parallax % is now editable as a percentage in editor. Also split out in the XML export.
* Tileset editor can set all priority bits or all palettes at the same time for a 16x16 tile
* Hflip and Vflip are now toggleable tools and work on tiles instead of just floating layers.

Bug Fixes:
* If a save room is isolated with no doors, create a door so the save can still be setup correctly instead of crashing.
* Fix bug where brush always reads from layer1 of clipboard instead of reading from layer2 when the options are changed

amoeba

SMART 1.11

Features:
* Dockable windows and tabs.
* Removed unnecessary scroll data padding
* Get/Set palette colors in SNES format
* Get/Set palette colors from an RGB8 color picker. (Colors will be reduced to RGB5)
* Scratch palette buffer. Use it to:
** Transfer palettes between tilesets more easily
** Reorder palettes
** Save a temporary copy of colors you want to experiment with
** Rearrange colors
* Scratch palette autosaves to a file so you can resume where you left off
* Gradient generator
** Create gradients between colors from various sources
** Create gradients between entire palettes
* Embedded Lunar Compress, so you don't need to keep track of a separate dll now.

Bug Fixes:
* Doors not being recognized as duplicates
* Door asm not being recognized as duplicates
* Properly flip non-rectangular floating layers
* Added the SMART brain icon to a number of windows that were missing it

amoeba

SMART 1.12

Bug Fixes:
* Fix extra default states and default FX1 being added to copied rooms.
* Fix crash when copying rooms with bg pointers.
* Fix level data not actually getting padded with the requested amount in the config.

amoeba

SMART 1.13 (see top post for dl links)

Features:
* Major improvements to collision layer linting.
** Much fewer false positives.
** Better categorization of issues by severity by potential to cause issues.
** Helps you clean up unnecessary slopes
** Linter issue counts shown on the room editor status bar
* New tilesets can be created without having all the parts ready. Blank parts or cloned parts can be used instead.
* Button to reapply the last graphics color swap on the current tile
* Fill tool now expanded to allow filling the selection with random tiles from the brush or tiling as before.

Bug Fixes:
* Editing the brush tool options would deselect the brush tool instead of selecting it/1.12
* Fall back on using the allocated room address as a room name if a room is missing a name in the name table.
* Fix selection list for doors for door specific FX1
* Creating a new FX1 will place it before the default FX1
* Can now correctly set ammo and health counts to 0 in the quickment config.
* Fix issue with area map tile lookup
* New states added to a room are correctly sized for the room
* Fix issue where swap/transpose operation would not correctly redraw both tiles (graphical bug)
* Set all priority bit control now updates when switching tiles
* Tiletable tile editor updates properly instead of just graphics when the currently displayed tile is pasted over.
* Don't delete the last tile of a the existing graphics when expanding the size.
* Correct some memory leaks.

amoeba

SMART 1.14 (see top post for dl links)

Features:
* PLMs and enemies now have user configurable properties
** Use the matching XML files to control what to show
** Give bit flags names
** Create a list of named valid values for a slice of bits
** PLMs and enemies can now be selected by and show meaningful names in the UI instead of a hex id
* HFlip and VFlip tools work on on collision layer alone when that layer is selected
* Collision selector supports multi select
* Collision favorites - persists a set of favorite collision tiles for quick access
* Reorganized quickmet settings
* Map editor
** Open the map editor from the ROM tab by selecting an area and clicking the Edit button
*** Preview the area map when the area is selected
** Control which tiles are relieved by the map station
** Add/Remove map icons
** Copy tiles between maps
** Advanced selection tools
** Show room screen scroll overlays while using the map editor to position rooms
** Open rooms by right clicking the map editor
* Map Screen/HUD graphics editor
** Edit graphics and palettes
** Copy tiles between the map and tilesets
** Transpose tiles to keep your maps updated while rearranging
* Can now copy Graphics on the tileset editor between ROMs
* Default zoom level for room editors settable in the config

Bug Fixes:
* Undo now works for the fill tool
* Pasted FX1 is placed before the default FX1
* Fix some incorrect tiles in the collision selector
* Xray and grapple now show on quickmet config
* Properly allocate space for the elevator platform doors instead of hardcoding it to the end of the bank
* Bad scroll PLM data is truncated to fit into the room instead of crashing
* bg scroll x% and bg scroll y% were flipped
* Close and reopen editors that are invalidated by a load action

amoeba

SMART 1.15 (see top post for dl links)

Features:
* Tileset Editor has full clipboard support - now you can copy stuff between ROMs
* Activate multiselect in the tileset editor to arrange multiple tiles at once

Bug fixes:
* Map graphics editor updates correctly on swap/transpose
* Left click can be correctly bound to operations other than select in the map graphics editor.

FPzero

#38
I tried downloading this to see what it can do, because it sounds really great for easy hacking, but when I try starting the program I get an error saying "The parameter is incorrect." or saying that I "may not have permission to access the item." It switches between these two errors randomly. I'm on Windows 10 build 1909 and attempting to open SMART 1.15.

Edit: At the suggestion of some people on Discord, I checked if it was my antivirus and it turns out it was blocking the program from starting up. No more problems here for now.

TestRunner

SMART 1.16 (see top post for dl links)

Features:
* Experiemental: ExLorom support
* Enemy Property Descriptor framework
* Set Song and Songset seperatly

Bug Fixes:
* Palette is properly undated when editted
* Tileset graphics multiselect button no longer collapses into the overflow menu
* Moving rooms in the map editor downwards moves the correct amount

dewhi100

Loving this tool. Just imported a new tileset like it was nothing. New rooms are now a snap as well. Looking forward to playing with the music editor.

amoeba

SMART 1.17 (see top post for dl links)

Features:
* Reworked how free space is setup
** New auto detection methods to populate free space when loading from ROM
** Option to automatically update freespace and used space
** Can also manually specify free space
* Area save lists are now repointed. The new max cap for saves per area is 32 (this was chosen as a safe upper limit)
* Better handling of bad data in rooms.
** Attempt to load other states in a room even is one fails
** Attempt to follow door links even if no states load correctly
* A few enemy config files for custom UI. Submissions for more are welcome!
* Tool for applying ASMs in the ASM folder from the GUI.
* Reworked door ASM in XML so it doesn't store offsets unless needed to work through branches
** Automatic detection of door ASM that only modifies scroll values with more user friendly format
* Edit door scroll update ASM directly in the level editor
* Edit incoming doors from other rooms in the room editor
* Better optimization of room scroll data to always store it using a constant when possible

Bug Fixes:
* Incorrect handling of PHP in door ASM processing
* Generate the ASM folder if needed instead of throwing an error
* Provide better errors when the assembler isn't configured correctly
* Performance improvements for the memory space viewer
* Enemies would try to open the enemy info files as images



amoeba

SMART 1.18

Features:
* Online update checker
* Moved most interactions with floating layers to the context menu
* Layers list is resizable
* Removed option for JAM scroll fix as this never actually worked
* Collision display options
** Set defaults in the global config
** Show all tiles as before
** Hide solid tiles (more like SMILE)
** Show an outline of the solid + slope for a minimalist idea of where the collision is
** Show the raw hex written out on every tile for last resort debugging
** Additional option to draw tile type 1 (XRAY-Air) as Air
* Rendering options for level data
** Draw tiles with priority bits like the SNES PPU (now default) - Note: layer 1 is always over layer 2
** Draw only high or low priority parts of the level data
** Use an alternate background color so unwanted transparency can be found
* Custom BTS images
** Add a file to the Data/Collision folder with a name X.png for a replacement for an entire tile type X (in hex)
** Add a file to the Data/Collision folder with a name X-YY.png for a replacement for a specific tile type + bts combo (in hex)
* Collision selector now has a recently used section
* Collision defaults for the tilemap selector
** Edit the defaults in the tileset editor
** Vanilla tilesets should be detected and load some default collision values stored in SMART the first time
** Can set a tiule to have "null" collision default so no collision is copied for that tile in the tilemap selector even if enabled
* Hotkeys for a bunch of things
** See the list of controls in the config (read only)
** Switching layers/tools/and other utilities
* Most toolbars have much better icons and most text has been removed
* Multiselect is now default in most editors with the option to turn it off to get at drag+drop operations
* Debug logging writes out allocation stats
* When expanding a ROM, fill the extra space with FF instead of 00
* Detect the PLM spawning function in door ASM (which uses stack relative arguments)
** All vanilla door ASM can now be loaded and repointed by SMART
* Map data is now repointed
** Automatically create map data for area 7 (Debug)
* Rework tileset editor and map/hud graphics editor controls to work a bit more like the room editor and map editor
* Drag clicking will set multiple map station bits
* Separate palette view for the hud tiles
* More enemy docs provided by PJ


Bug Fixes:
* Fix a few missing/incorrect tiles in the collision selector
** Fix ordering of vertical copy blocks to make them easier to copy in a block
* Fix some bugs with flipping door collision
* Map icons weren't updating their position when being dragged around
* Memory usage improvements in handling unmanaged memory
* Restrict the max number of editors open as this could lead to running out of memory in the runtime.
* Descriptions of samusX and samusY were reversed in the demo editor
* Editing map station reveal bits in the map editor was editing bits incorrectly
* Middle click for scrolling now works in a bunch of places where it should have before.
* Fix bug where map icons could be selected while on the room layer
* Editing the map properly invalidates the map preview
* Fix descriptor fix for grey doors to have the open conditions work correctly
* Fix the free space scanner - WARNING the version in 1.17 could potentially mark space that was not free as free and cause corruption
**  Somethings that were bugs in SMART, somethings that are bugs in vanilla
* If the Rooms dir doesn't exist, create it on load from ROM
* Saving ASMs should actually write the ASM's bytes instead of 00
* Project config would always add in the default free space on load even if removed
* Remove invalid screens when editing a door's scroll updates in the room editor
* Fix bug when selecting tiles in the gap between the CRE and SCE
* Fix error cause when reducing the size of the SCE graphics
* Fix harmless error when switching between tilesets with different sized SCE
* Fix editing graphics tiles not invalidating compressed data cache and not saving to ROM
* Cackattack had incorrect values for it's horizontal distance options

EpicSlayer7

the tool works almost perfect, "almost"... it corrupts the map tho... the map shape is ok in the Editor and Game BUT it looks like it is using random or wrong tiles. and it does it using a good SM ROM. (good CRC, SHA and md5)

probably the map gets moved but it's tile set is pointing wrong. tho i am totally new to this, i might be using it wrong or the fact i am using Windows 7 also...

but it definitely works perfect for the rest, despite the messed up map, i ignored it and retried on a modded one and same result but it did not break the mod. (Reflection Concept ASM code) i applied it first and then put the mod in SMART and the ASM function was still working. (tho that ASM file needs to be applied with Asar and not Xkas and the integrated ASM apply does not apply it also... but that is probably a quirk of that particular ASM file)

anyways good job on making all the game's ASM bits into modules that can be moved around, expanded or added! i will try an older version for now, but i thought i should point out about the map corruption(tile pointer probably) in case i was alone or not.

amoeba

The map issue was fixed in the current beta. You can get it on the SMART discord. If you can wait for 1.19, there are several fixed bugs.

EpicSlayer7

ah nice well i am kind of a Discord newb, so far i am connected on my friend's Discord but i have no idea how to add, navigate and search for new Discords (unless i missed the search function) since they are labeled as a bunch of numbers usually... (well the link)

anyhow nice to know it has been fixed, i don't know the ETA of 1.19 but at least it is there! i can wait or maybe if you want to put the discord Link. (or maybe it is there... i just looked at a post with big spaces with "video" written in between... i think it is a FireFox issue since everyone is using Chrome... i can't imagine the internet without "noscript" tho... so i don't use Chrome.)

amoeba

SMART 1.19 in now available!
https://edit-sm.art/download/SMART.1.19.7679.42476.zip

Since we have auto version checking, we've gotten a bit lazy with updating versions and have been leaving stuff in perpetual beta. Oops.

Features:
* Allow deleting area maps
* Edit scroll PLM data by rightclicking them in the level editor instead of needing to go to the room data tab
* Image captureing puts PNG first
* Capture an image based on what is currently displayed in the level editor.
* Added image capturing to the map editor
* Create enemies by right clicking enemy types
* Configure multiple emulators in the config instead of being forced to use the system default
* Allocate space from the end of the rom when possible
* Use a faster method of building the SMILE level data entries
* Draw things based on where the mouse if on the level editor and map editor
** Show an outline of the brush
** Show where copy BTS go
* Edit area name tilemap on the map editor
** The area name is a tilemap, so use the map graphics to draw the name
* Custom state conditions
** Configure these in the project config
** Note: the default and the never conditions are needed for SMART to handle some state operations correctly.
* Editor for changing between custom layer 2 and bgpointer layer 2
** Copy for other rooms
** Best effort attempt to convert one to the other
* The tilemap selector copies to both layer 1 and layer 2 for convinience
* Made more o quickmet data repointable so it's less likely to interfeare with ASM
* Grid layer for helping align things in level and map editors
* Freespace scanner is off by default for new projects
* Increase the freespace scanner threshold to 128 bytes - these may still be false positives
* Always apply collision if you have the collision layer selected
* FX editor improvements
** Set bit flag bits individually
** Liquid flags have descriptive names
** Transparency (layer blending) now has descriptive names
** FX types have names
* Add tooltips suggesting the user should click the room/state in the editor to access more properties

Bug Fixes:
* Fix bug where SMART will never ask if you want to check for updates
* Fix version config not loading correctly and choose the correct version
* Fix quickmet not building becuase of debugging hooks
* Added previously missing map tile data pointers
* Remove extra unecessary allocation pass
* Don't ask twice about checking for update
* Fix bugs where some things aren't getting allocated
* Fix mapname allocation and savelist loading
* Change some data to not allow allocation across bank boundries
* Enable some data to allow allocation across bank boundries that should have allowed it
* Force the area name list to be at the start of the room names block so it can be targeted by ASM correctly
* Properly reserve enough space for stack relative args when loading from XML
* Fix allocation usage reporting
* Fix issue where copied doors that have scroll data removed can cause a dedupe error on save
* Door asm was missing from the door equality check
* Fix bug where applying the brush from a specific layer wouldn't apply to a non matching layer
* Fix bug where flipping ts only worked on slopes
* Fix bug where missing grid data throws on start
* Fix issue where expanded space was being added to the hash computation and breaking vanilla rom detection
* Draw an error tile for the minimap layer when a tile is past the end of the hud sheet instead of crashing
* Delete states that use a door arg on door delete
* Generate a door if needed for new saves being added to a room
* Fix bug where the state pointer on non-default states was not being written correctly
* If the doorcode address is null write out 0000 to XML
* Fix bug where quickmet doesn't reserve the space it uses
* Update additional reference to Kraid's tilemap correctly
* Changed close dialog to say yes/no instead of ok/cancel.
* Fix bug in the tileset editor clipboard mask being written to the clipboard wrong

Murphmario

Dunno if I messed something up, but the scrolling Crateria backgrounds don't seem to update properly when entering a room with that option. It only reverts to normal if you scroll the screen up then go back down. Anyone else encounter this?

H A M

How do I use the sample editor in SMART?