Skip to content

Tags: mchlnix/SMB3-Foundry

Tags

nightly

Toggle nightly's commit message
+6 commits

CAUTION: Nightlies are untested alpha releases. Most users should use '1.4'!

Michael Nix: fix scribe save as not working (0f0e08c)
Michael Nix: adds warning when there is a level end without a goal card (d0d92ef)
Michael Nix: don't log non-set jump destinations as levels (bd0d451)
Michael Nix: fix not adding the enemy delimiter to enemy asm export (f133b26)
Michael Nix: don't add the delimiter manually, when parsing asm to bytes. should be there (04a4ea5)
Michael Nix: fix asm level and enemy importing around missed delimiter at the end (f91ed4e)

1.4

Toggle 1.4's commit message
1.4 Nikko

Features
--------
- View option to show coordinates for screens (Foundry)
- When Mario is visible, you can drag his starting position now (Foundry)
- When selecting an object through the Object Dropdown, the view now scrolls to it (Foundry)
- Initial & experimental support for fns and asm files as a source (Foundry)

Fixes
-----

- Show level loading error immediately, instead of failing silently later
- Better error dialog when starting the editor fails
- Fixes Desert Pipe Box resizeable again
- Fixes Windows Download links in manual
- Fix lower right hill corner sprite (thanks @opsodps)

- Lots of stuff under the hood

1.3.1

Toggle 1.3.1's commit message
1.3.1 Bug Fix Release

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

Toggle 1.3's commit message
1.3 Kawaguchiko

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

Toggle 1.2's commit message
1.2 Enoshima

Automatic Level Management
--------------------------

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

Up until now users where 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

Toggle 1.2_alpha's commit message
1.2_alpha: Automatic Level Management

Automatic Level Management
--------------------------

Up until now users where 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
- Enable changing the overworld theme in Scribe
- 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)

1.1

Toggle 1.1's commit message
1.1: Bunkyo

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

Toggle 1.0's commit message
1.0 Ueno

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

Toggle 1.0_beta24's commit message
Narita

*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

Toggle 1.0_beta23's commit message
Sapporo

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