Skip to content

Releases: mchlnix/SMB3-Foundry

nightly: +39 commits

17 May 12:57
Compare
Choose a tag to compare
nightly: +39 commits Pre-release
Pre-release
CAUTION: Nightlies are untested alpha releases. Most users should use '1.3.1'!

Michael Nix: don't hide level loading error, making things break later #189 (825e299)
Michael Nix: adds method to draw screen coordinates for screens (2d6ba14)
Michael Nix: make coordinates togglable #188 (564fc8c)
Michael Nix: update dev requirements (1baacfd)
Michael Nix: update sources based on updated static checkers (b224037)
Michael Nix: switch flake8 with ruff for linting (78cc4d0)
Michael Nix: update qt darkstyle import to support pyside6 (43ca743)
Michael Nix: adds option to draw potential mario positions in level (3532c5f)
Michael Nix: add helper functions for mario start positions (72b45e9)
Michael Nix: make mario start position draggable if visible (136045d)
Michael Nix: introduce props to LevelView (e20d8fd)
Michael Nix: offset cursor when moving mario by half a block (5f18129)
Michael Nix: lessen opacity of potential marios when dragging him around, fixes #187 (79a63da)
Michael Nix: show nightly commits from old to new (80551b4)
Michael Nix: adds command line option to skip auto save recovery (c2aff05)
Michael Nix: make error dialog work when start of foundry fails (3b1d2aa)
Michael Nix: adds load-m3l command line argument (2d490b2)
Michael Nix: fix a situation when two applications were started on error (a3cc892)
Michael Nix: make desert boxes resizable, fixes #182 (851ae95)
Michael Nix: add clamp util function (e8d65d5)
Michael Nix: remove mirroring from blocks and tiles. why was that a thing? (35839a1)
Michael Nix: documenting and cleaning Block and Tile classes a bit (d6e9714)
Michael Nix: some palettegroup cleanup (71c47e0)
Michael Nix: rename the border tiles for the world map view (6f88142)
Michael Nix: scroll items into LevelView, when selected from the ObjectList fixes #194 (931fafb)
Michael Nix: adds support to change global offsets using FNS files, fixes #196 (2276b1e)
Michael Nix: adds reset_global_offset function to clean up on rom load (4b52909)
Michael Nix: fixes missing FNS import icon (bdf05d5)
Michael Nix: fix FNS file not being able to be opened (3741c72)
Michael Nix: adds command line option to load a level directly (1784346)
Michael Nix: make offset constants changable by loading new addresses (cd02fae)
Michael Nix: fix crash when not loading a ROM on startup (979c163)
Michael Nix: adds custom fns and smb3.asm loading dialog (a6dfa72)
Michael Nix: make fns labels absolute in editor (d8f3e30)
Michael Nix: add fns and smb3.asm paths to ROM (5507af2)
Michael Nix: show automatic level management dialog centered (bb9669a)
Michael Nix: round out fns dialog behaviour and save fns and asm path (bc20ee8)
Michael Nix: give hints, if fns and asm files are not valid (adff756)

1.3.1: Bugfix Release

26 Aug 07:21
Compare
Choose a tag to compare

Foundry

Fixes:

  • Let user select but not open Mushroom and Spade Levels #172
  • Don't show Super Mario Allstar Objects in Object Toolbar #174
  • When opening a level from Found Level List, remember which world the
    level came from
  • Fix Jump Destination not being setable in Headereditor
  • Restore Cut Object shortcut Ctrl + X #181
  • Fix Autosave Dialog Buttons doing the opposite, because of GUI
    Framework weirdness
  • Adds a timeout on level parsing, when using the emulated parser;
    corrupted levels would parse infinitely
  • Fix gui elements being enabled/disabled when no level or no rom is
    present
  • Fix selection via Object List #159
  • Make pyramid object rendering more stable #168
  • Fix Save As not actually saving

Features:

  • When level testing, skip world info box to speed up time to level
  • Set white mushroom house coin limit in Other Level Settings

Scribe

Fixes:

  • Changed Overworld music resetting after first death #176
  • Attribute error, when changing worlds in Scribe

1.3 Kawaguchiko

13 Aug 18:22
Compare
Choose a tag to compare

Thanks to to CC, XenoStar54 and especially Dario for the numerous Bug Reports this time around

Foundry

Fixes

  • Off by One error, when selecting jump destination through Level
    Selector
  • Trying to load enemy data, when enemy address is 0x0
  • Stock "Lost Levels" couldn't be played with instaplay
  • Level Selector wasnt sized properly to show the full height of the
    World Map (Windows)
  • Two identical objects on top of each other would always be selected
    together, when clicked on, making them "stuck together"
  • Graphic data would not be reloaded when a new ROM was opened, leading
    to problems when custom graphics are used
  • Dragging an object from the Object Toolbar would not select it as the
    current placable object
  • Object Toolbar resizing after dragging an object sometimes
  • Being able to place an object with middle click, while dragging
    others/selecting others
  • ROM didn't save properly, when jump destination had 0x0 as either address
  • Recent Objects Toolbar not being scrollable, but extending the Main
    Window when full
  • Closing a level would not ask if you wanteed to save
  • 3 items were accessible in the Object Toolbar and Dropdown, that were
    not drawn in the Level View. They change properties, that can be
    changed using the Editor UI

Features

  • Adds tab for parsed Found Levels in Level Selector (thx @withthelove)
  • Makes folder paths more robust under the hood (thx @TomaSajt)
  • Adds Game Property Editor from Workshop, letting users change certain
    ROM values, without patches and adds new values for Big Bertha
  • Adds toolbar button for Level Selector
  • Skip most of the curtian animation and all of the start screen, when
    using instaplay, starting right in the Overworld
  • Adds right click option to "grab" an object in a level, to be able to
    place it with middle-click; like a Pipette
  • Level Viewer shows Levels and gaps as Blocks
  • Level Viewer shows Enemy Address as well now
  • Level Viewer shows Level Preview in Thumbnails
  • Adds indicator for vertical flight path of Red Paratroopas
  • Adds Editor Option to show/hide outlines of Level Pointers in Level
    Selector
  • Toggle additional Starman for instaplay Powerup in Editor Settings
  • Switch from changing addresses to offset in Level Header, which now
    preserves the offset, when changing Object Sets
  • Adds Test Level entry in Level Menu, to make the feature more discoverable
  • Shortcut Ctrl+S to save the ROM (How was that not a thing already?)

Scribe

Fixes

  • World Object Palette would not update/save, when changing it in the
    World Info Dialog
  • Map Objects being able to be moved out of the map area (onto the black border)
  • New Level Pointers spawning outside the world map
  • Level Menu not keeping track of the current world number, if you
    change the order in the World Info dialogue

Features

  • If ROM was parsed and has saved Level Data, mark it as dirty, if
    Scribe moved the Levels around. This causes Foundry to reparse the ROM
    making sure no Levels are lost

1.2 Enoshima

28 Jun 07:29
Compare
Choose a tag to compare

Automatic Level Management

This update changes saving, so be careful and report any bugs, please

Up until now users were choosing vanilla levels and edit them, either being careful to stay within the bounds of the original level and enemy count to not overwrite any other levels in memory, or deliberately overwriting those (helped by Foundries overwrite warning).

Even more hardcore would be to map out the position of levels by themselves and typing in the memory location manually using the "Place a Level" function.

With this update, the editor is now able to parse the Rom for levels, first those accessible from the Overworlds and then any level those ones jump to.

With this knowledge, any gaps of unused data between the levels can be detected and flagged as 'free'.

By remembering how the Rom got to a specific level, it also allows Foundry to move levels around and update all the positions in the Rom that point to those levels.

Therefore, any level can now utilize the entire free space in its Rom bank and is no longer bound by the position of the level, following it
in the Rom.

If a level is larger than it was before, any level following it is simply bumped up in memory, with no data lost. The pointers to that
level, be it in the world map or in other levels through jumps are updated automatically.

This feature is opt-in and still experimental, so please file bug reports, if something fails. Remembering the order of operations that
lead to the error is key..

Other new features

  • Further Extended Rom support, by streamlining normalized and raw
    addresses under the hood
  • Started adding support for Japanese ROMs by trying to find Palette Data at their location, too
  • Enable changing the overworld theme in Scribe
  • Adds button to close level directly
  • Now closes old level when opening a new ROM
  • Button to ignore update messages for a major version
  • Updated to Python 3.11 in prebuilds for a big speed boost

Fixes

  • animated tiles in world viewer kept wrong palette, when switching
    world
  • Fix wrong enemy address being parsed out for world specific levels
    (eg Coinship)
  • fixed instaplay not saving enemy data correctly (bug might not have
    reached users)

1.2_alpha

11 Mar 17:35
Compare
Choose a tag to compare

1.1: Bunkyo

29 Nov 20:35
Compare
Choose a tag to compare

Foundry

  • Adds option to show animated Level Objects (e.g. coins spin) !
  • Adds LevelViewer, that lets you see Level Data positions in the Rom (very early stage)
  • Enables automatic check for updates on startup (no nightlies, asks first)
  • Rename "Object" menu to "Rom" Menu, to better reflect its options
  • Scroll to beginning of level, when opening a new one
  • Determine Spade and Mushroom levels by object set, rather than tile in LevelSelector
  • Fix level header byte label not updating when changing Jump Destination

Scribe

  • Enables automatic check for updates on startup (no nightlies, asks first)
  • Fix opening a new Rom not reloading graphics data
  • Fix being able to choose invalid Lock Index
  • Fix Scribe closing, when wanting to open a new Rom, but cancelling
  • Fix Save Icon in the Toolbar only updating, when opening the File menu
  • Fix world order and screen count not being saved (probably only a bug in nightlies)

smb3parse

  • Adds Parser, that emulates the NES' CPU to parse levels using the Rom itself !
  • Adds code that goes through the Rom and find all accessible Levels
  • Better support for expanded Roms (#142 & #143), thanks @fortenbt
  • Adds Generic Exit, Coin Ship and other special level data to WorldMap data point
  • Lots of documentation to all Datapoint classes
  • Remove all Foundry imports, making the package standalone

Under the Hood

  • Fixes some wrong stock level addresses in levels.dat
  • Updated README a bit, with direct download links
  • Adds dependency "py65"

1.0: Ueno

10 Oct 19:51
Compare
Choose a tag to compare

Might as well, right?

Foundry

  • Allows editing Pipe Exits in the Level Settings Dialog, by clicking on
    a position in the world map
  • The Macros from Southbirds Disassembly are now parsed, when loading
    one of his ASM Level Files
  • recolors Warning icon in Toolbar to red, when Warnings exist

Scribe

  • When the Grid is active, if the Map doesn't scroll between two Screens, the color of the divider line is different

Under the Hood

  • Removing Win32 support, GUI framework doesn't support it anymore
  • Builds manuals automatically in GitHub CI
  • When choosing not to save the current level, the whole rom is reloaded
    from file

1.0_beta24: Narita

13 Aug 20:44
Compare
Choose a tag to compare
1.0_beta24: Narita Pre-release
Pre-release

There will be bugs

Scribe

New Overworld Editor, built from scratch.

Visuals:

  • Select Tiles from a Tool Window, Cursor changes to that tile (Put mode)
  • Click to place or click and drag to "draw" that tile across the Map
  • Middle click a tile to enter Put mode (like a pipette)
  • Shift-Click to fill/replace sections of the same tile with the one selected (in Put Mode)
  • Ctrl-Click to select multiple Tiles and move/copy/paste them around
  • Show accurate Border around World Map
  • Show animated World Tiles
  • Can show level preview in tooltip, when hovering over level pointer

World Settings:

  • Change how many screens the overworld has
  • Change if a world map scrolls between screens where possible
  • Change how many levels the overworld can have
  • Change World order (e. g. turn World 5 into World 1)
  • Change the animation speed of World Tiles where possible (or turn animations off)
  • Change the color palette the world uses
  • Change the Tile used for the bottom of the Border

Overworld Objects:

  • Change the object set, addresses and position of level pointers
  • Change the Sprite, Item and position of Map Objects, like Hammer Bros
  • Change Index, Position and replacement tile of Locks/Bridges after clearing a Fortress
  • Change the Paths the Airship travels independently from each other
  • Move Marios Starting Position
  • (Selecting Pipe exits is done in Foundry on a level per level basis)

Foundry

General:

  • When using instaplay, put the level into the correct Worldmap, if known
  • Adds "New Level" function, letting you start with a blank slate
  • Feature to let you place your level anywhere on a Worldmap, like you had to do for M3L files
  • Placing a level onto an existing one on a World Map no longer has to have the same object set

Rom Interaction:

  • Parse iNES header of a Rom to handle PRG Sizes correctly, enabling Expanded Rom support (thanks @fortenbt)
  • Export Level and Enemy Data as ASM files and open/import those ASM files (can't parse Macros from Southbird Disassembly)
  • Set a default folder in the Settings, to point Open and Save Dialogs there
  • Suggests a rom name in Save As dialog

Level Settings:

  • Renamed "Edit Autoscroll" to Other Level Settings and add additional settings to be set additionally
  • Select which Lock/Bridge a BoomBoom clears through Level Settings, instead of moving it in the level (far past the level bounds)
  • Select which Pipe Exits Pair (if any) is used in this level, e.g. Pipe Levels, Sky Tower etc. Editing the positions tbd
  • Allow setting "chest ends level" and the item you get through level settings

Level View:

  • Additive/Subtractive Selection using Ctrl + Click added
  • Cache Tiles and Blocks for rendering speedup
  • Show items over blocks and invisible items (like coins) in the left object toolbar
  • Special background tiles (like Dungeon) can be toggled in the View Menu
  • Don't show autoscroll or pipe exit special objects in level view anymore, configure them through Level Settings
  • You can move BoomBooms in levels, like you would normally (above y=16 causes a Warning, though)

Level Selector:

  • Now always opens on a world map
  • When the current level has a world set (from M3L, or loaded from a World Map), this world map is shown
  • When cursor is over a level, tooltip shows a preview of what the level looks like
  • Shows Border and animated Tiles
  • Single click now fills level data into input fields, double click goes right to level
  • Fixes some World Maps not using their correct color palette (e.g. World 5)

Palette Editor:

  • Adds preliminary Palette Editor (double click a palette color on the right)
  • Updates immediately, asks you separately, if you want to save it

Miscellaneous:

  • Give instaplay Rom the .nes extension, instead of .rom
  • More Warnings for problematic objects
  • Preserve World Number when loading M3L file
  • Fixes Centering on some Enemies/Items
  • Fixes Downward Piranha Sprites
  • Fixes enemies being able to be resized
  • Fixes object dropdown sometimes not appearing
  • Reworks Undo-Framework and Settings system under the hood

smb3parse

  • Parse basically everything world map related; levels, sprites, locks, pipes...

1.0_beta23: Sapporo

25 Jan 00:05
Compare
Choose a tag to compare
1.0_beta23: Sapporo Pre-release
Pre-release
Fixes:
 - Saving an m3l file sometimes damaging the first few bytes of a rom,
 making it unreadable
 - restored auto save level length not being set correctly
 - rendering of vertical vine and pole when next to another block
 (thanks @PiJoKra)

Added:
 - Scroll to and select objects/enemies, when hovering over a warning
 - Dark theme (thanks @fortenbt)
 - Option to show object/enemy name and position tooltip on mouse over

1.0_beta22: Tokyo

30 Dec 21:27
Compare
Choose a tag to compare
1.0_beta22: Tokyo Pre-release
Pre-release
Fixed:

- Typos in manual
- cursor was not reset to arrow, when version check failed
- use python3.8 in windows and linux build stages

Added:

- Enemy Compatibility warnings, based on Spinzig's work
- Auto save and restore session, when editor is not closed normally
- Buttons under Jump list for easier use
- use Ctrl + L to get into object dropdown text box
- Jump indicators on Note blocks
- focus OK button in level selector
- Installation steps in manual