Porymap Versions Save

Map editor for pokeemerald, pokefirered, and pokeruby

5.4.1

1 month ago

Fixed

  • Fix object event sprites not loading for some struct data formats.

5.4.0

3 months ago

Added

  • Add a Check for Updates option to show new releases (Windows and macOS only).

Changed

  • If Wild Encounters fail to load they are now only disabled for that session, and the settings remain unchanged.
  • Defaults are used if project constants are missing, rather than failing to open the project or changing settings.
  • Selector images now center on the selection when eyedropping or zooming.

Fixed

  • Fix some minor visual issues with the various zoom sliders.
  • Smooth out scrolling when mouse is over tile/metatile images.
  • Fix the Tileset Editor selectors getting extra white space when changing tilesets.
  • Fix a crash when adding disabled events with the Pencil tool.
  • Fix error log about failing to find the scripts file when a new map is created.

5.3.0

4 months ago

Added

  • Add zoom sliders to the Tileset Editor.
  • Add getMetatileBehaviorName and setMetatileBehaviorName to the API.
  • Add metatile_behaviors, num_primary_palettes, and num_secondary_palettes to constants in the API.

Changed

  • Metatile ID strings are now padded to their current max, not the overall max.
  • Non-existent directories are now removed from the Open Recent Project menu.
  • Hovering on the layer view in the Tileset Editor now displays the tile ID.
  • Labels in the Script dropdown are now sorted alphabetically.
  • The name of the Heal Locations table is no longer enforced.
  • The API functions addImage and createImage now support project-relative paths.

Fixed

  • Fix the metatile selector rectangle jumping when selecting up or left of the origin.
  • Fix the event group tabs sometimes showing an event from the wrong group.
  • Fix the clear buttons in the Shortcuts Editor not actually removing shortcuts.
  • Fix slow speed for the script label autcomplete.
  • Fix deleted script labels still appearing in the autocomplete after project reload.
  • Fix the map search bar stealing focus on startup.
  • Fix border metatiles view not resizing properly.
  • Fix Open Recent Project not clearing the API overlay
  • Fix API error reporting.

5.2.0

4 months ago

Added

  • Add an editor window under Options -> Project Settings... to customize the project-specific settings in porymap.project.cfg and porymap.user.cfg.
  • Add an editor window under Options -> Custom Scripts... for Porymap's API scripts.
  • Add an Open Recent Project menu
  • Add a warning to warp events if they're on an incompatible metatile behavior.
  • Add settings for custom images, including the collision graphics, default event icons, and pokémon icons.
  • Add settings to override any symbol or macro names Porymap expects to find.
  • Add a zoom slider to the Collision tab.
  • Add toggleable grids to the Tileset Editor.
  • Support for custom metatile ID, collision, and elevation data sizes.
  • Support for 8bpp tileset tile images.

Changed

  • Script dropdowns now include scripts from the current map's scripts file.
  • Encounter Rate now defaults to the most commonly used value, rather than 0.
  • The Collision tab now allows selection of any valid elevation/collision value.
  • The Palette Editor now remembers the Bit Depth setting.
  • The min/max levels on the Wild Pokémon tab will now adjust automatically if they invalidate each other.
  • If the recent project directory doesn't exist Porymap will open an empty project instead of failing with a misleading error message.
  • Settings under Options were relocated either to the Preferences window or Options -> Project Settings.
  • Secret Base and Weather Trigger events are automatically disabled if their respective constants files fail to parse, instead of not opening the project.
  • If a Pokémon icon fails to load Porymap will attempt to predict its filepath. If this also fails it will appear with a placeholder icon, and won't disappear when edited.
  • The bits in metatile attribute masks are now allowed to be non-contiguous.
  • Porymap will now attempt to read metatile attribute masks from the project.

Fixed

  • Fix text boxes in the Palette Editor calculating color incorrectly.
  • Fix metatile labels being sorted incorrectly for tileset names with multiple underscores.
  • Fix default object sprites retaining dimensions and transparency of the previous sprite.
  • Fix connections not being deleted when the map name text box is cleared.
  • Fix the map border not updating when a tileset is changed.
  • Improve the poor speed of the API functions setMetatileTile and setMetatileTiles.
  • Stop the Tileset Editor from scrolling to the initially selected metatile when saving.
  • Fix 0x0/NULL appearing more than once in the scripts dropdown.
  • Fix the selection outline sticking in single-tile mode on the Prefab tab.
  • Fix heal location data being cleared if certain spaces aren't used in the table.
  • Fix bad URL color contrast on dark themes.
  • Fix some issues when too few/many pokémon are specified for a wild encounter group.
  • Fix Porymap reporting errors for macros it doesn't use.
  • Fix painting on the Collision tab with the opacity slider at 0 painting metatiles.
  • Fix crashes when File->Reload Project fails.
  • Fix overworld sprite facing directions if spritesheet has vertical layout.
  • Stop reporting Error: Interrupted for custom scripts during project reopen

5.1.1

1 year ago

Added

  • Add registerToggleAction to the scripting API

Changed

  • Change encounter tab copy and paste behavior.
  • A warning will appear if a custom script fails to load or an action fails to run.

Fixed

  • Fix null characters being unpredictably written to some JSON files.
  • Fix tilesets that share part of their name loading incorrectly.
  • Fix events being hidden behind connecting maps.
  • Metatile labels with values defined outside their tileset are no longer deleted.
  • Fix the Tileset Editor retaining edit history after changing tilesets.
  • Fix some minor visual issues on the Connections tab.
  • Fix bug which caused encounter configurator to crash if slots in fields containing groups were deleted.
  • Fix bug which caused encounter configurator to crash if last field was deleted.
  • Fix map render when collision view was active while map changed.
  • Fix the updated pokefirered region map graphics appearing in grayscale.
  • Fix the API function registerAction not correctly handling actions with the same name.

qt-static-6.0.1-windows

1 year ago

Pre-compiled static QT 6.0.1 Windows artifacts used for CI pipeline.

5.1.0

1 year ago

Added

  • Add new config options for reorganizing metatile attributes.
  • Add setScale to the scripting API.
  • Add option to turn off the checkerboard fill for new tilesets.
  • Add option to copy wild encounters from another encounters tab.

Changed

  • Double-clicking on a connecting map on the Map or Events tabs will now open that map.
  • Hovering on border metatiles with the mouse will now display their information in the bottom bar.
  • The last-used directory is now preserved in import/export file dialogs.
  • Encounter editing has been slightly modified in favor of a more performant ui.
  • Pokémon icons in the encounter editor have their transparency set.

Fixed

  • Fix the Region Map Editor being opened by the Shortcuts Editor.
  • Fix New Map settings being preserved when switching projects.
  • Fix scripting API callback onMapResized not triggering.
  • Fix crash when importing AdvanceMap metatiles while enable_triple_layer_metatiles is enabled.
  • Fix File -> Open Project not resolving folder shortcuts.
  • Fix bug where "Requires Itemfinder" checkbox is being checked by wrong data.
  • Fix the map border not immediately reflecting Tileset Editor changes.
  • Fix pasting metatiles in the Tileset Editor not triggering the unsaved changes warning.

5.0.0

1 year ago

Breaking Changes

  • Proper support for pokefirered's clone objects was added, which requires the changes made in pokefirered/#484.
  • Warp IDs are now treated as strings, which requires the change to mapjson made in pokeemerald/#1755. Additionally MAP_NONE was renamed to MAP_DYNAMIC. Both changes also apply to pokefirered and pokeruby.
  • Many API functions which were previously accessible via the map object are now accessible via one of the new objects overlay, utility, or constants. Some functions were renamed accordingly. See porymap/#460 for a full list of API function name changes.
  • Arguments for the API function createImage have changed: xflip and yflip have been replaced with hScale and vScale, and offset has been replaced with xOffset and yOffset.
  • The API function addFilledRect has been removed; it's been replaced by new arguments in addRect: color has been replaced with borderColor and fillColor, and a new rounding argument allows ellipses to be drawn.

Added

  • Add prefab support
  • Add Cut/Copy/Paste for metatiles in the Tileset Editor.
  • Add button to copy the full metatile label to the clipboard in the Tileset Editor.
  • Add ability to export an image of the primary or secondary tileset's metatiles.
  • Add new config options for customizing how new maps are filled, setting default tilesets, and whether the most recent project should be opened on launch.
  • Add color picker to palette editor for taking colors from the screen.
  • Add new features to the scripting API, including the ability to display messages and user input windows, set the overlay's opacity, rotation, scale, and clipping, interact with map header properties and the map border, read tile pixel data, and more.

Changed

  • Overhauled the region map editor, adding support for tilemaps, and significant customization. Also now supports pokefirered.
  • Previous settings will be remembered in the New Map Options window.
  • The Custom Attributes table for map headers and events now supports types other than strings.
  • If an object event is inanimate, it will always render using its first frame.
  • Unused metatile attribute bits are preserved instead of being cleared.
  • The wild encounter editor is automatically disabled if the encounter JSON data cannot be read
  • Metatiles are always rendered accurately with 3 layers, and the unused layer is not assumed to be transparent.
  • object_event_graphics_info.h can now be parsed correctly if it uses structs with attributes.
  • Tileset data in headers, graphics, and metatiles can now be parsed if written in C.
  • The amount of time it takes to render the event panel has been reduced, which is most noticeable when selecting multiple events at once.
  • The selection is no longer reset when pasting events. The newly pasted events are selected instead.
  • The currently selected event for each event group will persist between tabs.
  • An object event's sprite will now render if a number is specified instead of a graphics constant.
  • Palette editor ui is updated a bit to allow hex and rgb value input.
  • Heal location constants will no longer be deleted if they're not used in the data tables.
  • The heal location prefixes SPAWN_ and HEAL_LOCATION_ may now be used interchangeably.
  • The number and order of entries in the heal location data tables can now be changed arbitrarily, and independently of each other.
  • The metatile behavior is now displayed in the bottom bar mouseover text.
  • Number values are now allowed in the Tileset Editor's Metatile Behavior field.
  • Removed some unnecessary error logs from the scripting API and added new useful ones.
  • If any JSON data is the incorrect type Porymap will now attempt to convert it.

Fixed

  • Fix events losing their assigned script when the script autocomplete is used.
  • Fix the unsaved changes indicator not disappearing when saving changes to events.
  • Fix copy and paste for events not including their custom attributes.
  • Fix cursor tile outline not updating at the end of a dragged selection.
  • Fix cursor tile and player view outlines exiting map bounds while painting.
  • Fix cursor tile and player view outlines not updating immediately when toggled in Collision view.
  • Fix selected space not updating while painting in Collision view.
  • Fix collision values of 2 or 3 not rendering properly.
  • Fix the map tree view arrows not displaying for custom themes.
  • Fix the map music dropdown being empty when importing a map from Advance Map.
  • Fix object events added by pasting ignoring the map event limit.
  • Fix a bug where saving the tileset editor would reselect the main editor's first selected metatile.
  • Fix crashes / unexpected behavior if certain scripting API functions are given invalid palette or tile numbers.
  • Fix drawing large amounts of text with the scripting API causing a significant drop in performance.
  • Silence unnecessary error logging when parsing C defines Porymap doesn't use.
  • Fix some windows like the Tileset Editor not raising to the front when reactivated.
  • Fix incorrect limits on Floor Number and Border Width/Height in the New Map Options window.
  • Fix Border Width/Height being set to 0 when creating a new map from an existing layout.
  • Fix certain UI elements not highlighting red on some platforms.
  • Fix Open Config Folder not responding
  • Properly update the minimum offset for a connection when the map is changed.

4.5.0

2 years ago

Added

  • WSL project paths are now supported. (For example, \wsl$\Ubuntu-20.04\home\huderlem\pokeemerald)
  • Add ability to export map timelapse animated GIFs with File -> Export Map Timelapse Image....
  • Add tool to count the times each metatile or tile is used in the tileset editor.
  • Events, current metatile selections, and map images can now be copied and pasted, including between windows.
  • The grid and map border visibility are now saved as config options.
  • Add ~60 new scripting API functions, including new features like reading/writing metatile data, layering, moving, and hiding items in the overlay, creating modified images and tile/metatile images, reading tileset sizes, logging warnings and errors, and more.
  • Add 7 new scripting API callbacks.
  • Porymap is now compatible with Qt6.

Changed

  • New events will be placed in the center of the current view of the map.
  • Scripting API errors are more detailed and logged in more situations.
  • Add new optional arguments to 5 existing API functions.
  • Top-level UI elements now render above the scripting overlay.
  • The onBlockChanged script callback is now called for blocks changed by Undo/Redo.

Fixed

  • Fix % operator in C defines not being evaluated
  • Fix tileset palette editor crash that could occur when switching maps or tilesets with it open.
  • The metatile selection is no longer reset if it becomes invalid by changing the tileset. Invalid metatiles in the selection will be temporarily replaced with metatile 0.
  • Loading wild encounters will now properly preserve the original order, so saving the file will not give huge diffs.
  • Fix bug where the tile selection cursor could be toggld on in the Events tab.

4.4.0

3 years ago

Added

  • Add undoable edit history for Events tab.
  • Add keyboard shortcut for DEL key to delete the currently selected event(s).
  • Disable ui while there is no open project to prevent crashing.
  • Add "Straight Paths" feature for drawing straight lines while holding Ctrl.
  • The New Map dialog now gives an option to specify the "Show Location Name" field.
  • Some new shortcuts were added in porymap/#290.
  • All plain text boxes now have a clear button to delete the text.
  • The window sizes and positions of the tileset editor, palette editor, and region map editor are now stored in porymap.cfg.
  • Add ruler tool for measuring metatile distance in events tab (Right-click to turn on/off, left-click to lock in place).
  • Add delete button to wild pokemon encounters tab.
  • Add shortcut customization via Options -> Edit Shortcuts.
  • Add custom text editor commands in Options -> Edit Preferences, a tool-button next to the Script combo-box, and Tools -> Open Project in Text Editor. The tool-button will open the containing file to the cooresponding script.

Changed

  • Holding shift now toggles "Smart Path" drawing; when the "Smart Paths" checkbox is checked, holding shift will temporarily disable it.

Fixed

  • Fix a bug with the current metatile selection zoom.
  • Fix bug preventing the status bar from updating the current position while dragging events.
  • Fix porymap icon not showing on window or panel on Linux.
  • The main window can now be resized to fit on lower resolution displays.
  • Zooming the map in/out will now focus on the cursor.
  • Fix bug where object event sprites whose name contained a 0 character would display the placeholder "N" picture.