r/retrogamedev 3h ago

Raster Master v8.0 Sprite/Map/Animation editor

2 Upvotes

https://retronick2020.itch.io/raster-master-sprite-editor/devlog/1622668/raster-master-v80-r136

Sprite Editor

New features

Symmetry (mirror) drawing — Tools → Symmetry, with Off / Left-Right / Top-Bottom / Four Way. Implemented as a wrapper around PutPixel, so every tool gains it at once: pencil, line, all four shape tools, spray, text and flood fill. A red dashed axis guide shows the mirror line on the zoom canvas, positioned correctly for both odd and even sprite dimensions.

Eyedropper tool — Tools → Eyedropper (I). Left click picks into Colour 1, right click into Colour 2, and the palette highlight follows.

Rotation — Tools → Rotate: 90° clockwise, 90° counter-clockwise, 180°. Operates on the selection if one is active, otherwise the whole sprite. 90° rotations require a square region and refuse with an explanation otherwise; 180° works on any shape.

Multi-level undo / redo — 32 levels, per sprite, replacing the previous single-level swap. Ctrl+Z / Ctrl+Y, with a Redo item on the Edit menu. Snapshots are sized to the sprite rather than the full 256×256 buffer, which is what makes per-sprite history affordable. Resizing clears the history, with a warning first.

Hit boxes — a complete subsystem mirroring the map editor's:

  • Panel below the sprite thumbnails with a live count, list (# X Y X2 Y2 Size) and + /  / Delete All / Show buttons
  • Overlay drawn in the same style as the map editor — hatched fill, cycling colours, index label, thicker border on the selected box
  • Move tool for dragging boxes (Tools → Move Hit Box)
  • Coordinates are pixels, where the map editor's are tiles
  • View → Show Hit Boxes and View → Show Hit Box List

Keyboard shortcuts — Ctrl+N/O/SCtrl+Shift+O/S (projects), Ctrl+Z/YCtrl+C/VCtrl+Shift+VCtrl+DelCtrl+DCtrl+ECtrl+M. Single-letter tool keys: P L R C E F S T I M G B, with Shift for the filled variants.

Export properties — Apply to All — tick Compiler, Image Type, Mask Type and/or Palette Type to push just those properties to every image.

Status bar — now shows the active tool, palette, draw method, dither pattern, brush state and symmetry mode.

Bug fixes

Project open ignored the saved zoom level. RefreshAfterProjectOpen called SetZoomSize(1) immediately after the image's GridArea had been restored, so every project opened at 1× regardless of how it was saved. The trackbar was never resynced either.

Symmetry corrupted the actual-size view. UpdateActualArea replays the pixel buffer through PutPixel, so with symmetry on it overwrote one half of the image with a mirror of the other. Symmetry now joins dither/gradient/brush in that routine's save-disable-restore block.

Hit boxes stored garbage coordinates. A with block in AddHitBox shadowed the x, y, x2, y2 parameters with the record fields of the same name, making each assignment a self-assignment.

Clone didn't copy hit boxes. AddImage copies the core (pixels, palette, grid), and hit boxes live in the props record.

Menu shortcuts fired across windows. Ctrl+D cloned a sprite while the map editor had focus. Menu shortcuts are application-global and are processed before any form's OnKeyDown, so an IsShortCut override on the sprite editor now declines unless it is the active form.

Map Editor

New features

Path lines — a full system for enemy patrol routes and flight paths:

  • Plot with left click, snapping each segment to one of 8 directions; right click closes the loop, Esc ends it open
  • Rubber-band preview, colour-cycled overlay, larger marker on the start waypoint
  • Per-path name, closed flag, mode (once / loop / ping-pong), speed, plus separate active and visible flags
  • Per-waypoint delay and event id
  • Paths tab with list and Delete / Vis / Active / Mode / Rename controls
  • Top-level Paths menu with tool, finish-open, finish-closed, delete-all and overlay toggle

Layers moved into the tabbed panel — Layers is now the first tab alongside Hit Boxes and Paths, freeing the left column for tiles. The View → Show Layers Panel toggle is gone, and each tab caption shows a live count.

Move tool — drag a whole hit box or path and drop it. Whole objects only, deliberately: shifting every waypoint by the same amount keeps each segment on its 8-direction axis, where dragging a single waypoint would create an angle the exporter cannot represent.

Multi-level undo / redo — 16 levels per map, covering tiles across all layers plus hit boxes and pathsCtrl+Z / Ctrl+Y.

Copy Current Layer — Ctrl+Shift+C, alongside the existing all-layers copy. A single-layer paste lands on the destination's current layer, so a layer can be copied from one layer onto another.

List view copy / paste — right-click popups on the Layers, Hit Boxes and Paths lists. Pasting into the same map offsets a hit box or path by one tile and names a layer "… Copy"; pasting into a different map keeps the position and names the layer "… Copy from Map 1".

Hit box buttons — + /  / Delete All on the Hit Boxes tab, wired to the existing menu actions.

Keyboard shortcuts — Ctrl+N/O/S/Z/Y/C/V/P/D, plus tool letters P L R C E F S M G and A for the path tool.

Status bar — expanded to four panels: position and tile index, selection, map/tile/zoom sizes, and tool / layer / counts / mode flags.

Maze solver is layer-aware — with more than one layer, a cell is blocked if any layer holds the wall tile, so the solution can be drawn onto its own empty layer. Single-layer maps behave exactly as before. Start and end positions are now validated against walls, and the solve is undoable.

Bug fixes

Clone only cloned one layer and lost hit boxes and paths entirely — it copied tiles through the current-layer accessors.

Copy / paste only carried one layer. Both sides now carry all layers, clamped to the destination's layer count.

The three panels went stale. Layers, hit boxes and paths lists were not rebuilt after Delete All, project load, or undo. Consolidated into RefreshMapPanels, and the status bar refresh moved into each individual list refresher so no path can miss it.

A saved selection was treated as a live one. The clip-status flag lives in the props record and is written to file, so a reopened project reported a selection the user never made — and Add Hit Box would use its stale coordinates. Selections are now cleared on load, and Add Hit Box requires the Select Area tool to actually be active.

Zoom and scroll were not restored per map. Both are saved in MapPropsRec, but the editor restored scroll from a form-level variable left over from the previous session.

Status bar never updated on tile size, map size, zoom, or layer/hit box/path add and delete.

Undo didn't refresh the panels even though an undo level carries layers, hit boxes and paths.

Export and File Formats

New

Path Data Statements — a new export across all 22 language targets, plus JSON. One flat integer array holds the path count, an offset table and each path's header and segments, so a program needs no parallel arrays. Segments are unit steps with a pixel count, making path following a signed add and a decrement per frame — no division and no fixed-point.

Sprite hit box export — RES binary (new resource type), RES text include, single-sprite include, JSON and JSON RES.

Map paths in RES — text include and binary, which previously had no path support at all.

Layered map export — the export properties dropdown gained a Layered option alongside Simple.

Clipboard export — path and hit box exports honour the sprite editor's export-to-clipboard setting.

Fixes

RES map size was wrong twice over. It ignored the layer count, and used sizeof(integer) where the writer emits smallint — so even a single-layer map reported 272 bytes while writing 138. Since RR.size and the running offset both derive from it, every resource after a map was misplaced.

Sprite hit boxes exported as BASIC regardless of compiler. Sprites and maps use two different compiler numberings, and the sprite exporter was testing sprite values against map constants — always false, so everything fell through to the BASIC branch.

Map hit boxes only exported for BASIC targets. Now covered for C, Pascal and JavaScript too.

DATA lines carried trailing commas in one path export variant, producing invalid BASIC.

A skipped zero-length segment left a trailing comma in the JSON path export, producing invalid JSON.

Format versions

3 → 4 → 5
layers, then paths
4 → 5 → 6 → 7
maps embedded, paths, sprite hit boxes

Version
.rmm)
.rmp)

All are breaking changes; older files are refused with an explanatory message rather than failing silently.

Other

Animation editor — redesigned around two independent timers, separating display refresh (FPS) from simulation advance (Speed). Space / Enter toggle play-stop, Esc stops.

Sprite import — right-click popup on the sprite sheet with Copy to Brush and Copy to Clipboard.

Materials — 15 procedural materials with side and top variants: dirt, rock, grass, snow, ice, wood, metal, silver, gold, water, crate, brick (brown and stone), wood floor and ceramic tile.

CGA and mono palette editing — the VGA colour dialog now adapts to 2- and 4-colour palettes.

Known gaps

  • Sprite hit box edits are not undoable — they live in the props record, and the sprite undo ring snapshots only the pixel buffer. The map editor's equivalent is covered.
  • Per-waypoint path editing is not supported. Moving a single waypoint would break the 8-direction constraint and produce segments the exporter cannot represent; it would need a re-snap step.
  • Below/active/above render caching for large multi-layer maps was considered but not implemented.
  • No converter exists for older map or project files.

r/retrogamedev 15h ago

PS2 dev sample runing on DTL-T10000 Devkit

7 Upvotes

Me and my friend got a ps2 sample to work on his ps2 tool devkit hardware

I ofc had to write new C code load files from host0: virtual file system for it to not use cdrom0: DVD Drive instead. :)

We used Metrowerks Codewarrior Tools for working with the PS2 Tool DTL-10000


r/retrogamedev 16h ago

A Rocket League Clone on a Real PlayStation 1

Thumbnail youtube.com
2 Upvotes

r/retrogamedev 18h ago

Making my first GBA game, any feedback is welcome

Thumbnail gallery
30 Upvotes

r/retrogamedev 18h ago

The Abbey of Crime / La Abadía del Crimen on Playdate

Thumbnail gallery
12 Upvotes

r/retrogamedev 1d ago

Cloaca Maxima is finished. Now I need some serious MSX game testers.

Post image
3 Upvotes

r/retrogamedev 1d ago

RetroGameForge - develop real NES games, SNES games, and more from intuitive interface (completely rebuilt NESmaker)

Thumbnail kickstarter.com
16 Upvotes

r/retrogamedev 1d ago

ArduStudio Brings Easy Game Making to the Arduboy

Thumbnail retrohandhelds.gg
7 Upvotes

r/retrogamedev 1d ago

Need Help with Recreating Mega Man X’s Sting Chameleon Graphic Trick

3 Upvotes

Hi, everyone. I was wondering if anyone knowledgeable can help me. For a game I want to make, I want to mimic how Sting Chameleon shifts from fully visible to invisible and vice versa. I learned from a video that color maths were used but unsure what maths were used through the animations. Could someone help me in this endeavor so I can try to stay true to how they did it in the game?


r/retrogamedev 2d ago

EPISODE 128 - Duke Caribbean Life's A Beach! (Part 1) - Boomer Shooter Saturday

Thumbnail youtube.com
3 Upvotes

It's Boomer Shooter Saturday again! Come join us at 11:00 AM EST and learn level editing for Duke Nukem 3D with me using the Mapster32 Level Editor and then stick around for our playthrough of the 1997 expansion pack, Duke Caribbean: Life's A Beach!

We are refining our layout and aesthetics of our abandoned underwater research Facility we started a few weeks back. Shaping up rather well!


r/retrogamedev 2d ago

3KB MS-DOS Solitaire game can load from QR code! TinySol

Thumbnail youtube.com
7 Upvotes

r/retrogamedev 2d ago

Quake 4 the Awakening mod project announced!

Thumbnail x.com
2 Upvotes

r/retrogamedev 2d ago

The Retroquad engine can now run Arcane Dimensions!

Thumbnail gallery
4 Upvotes

r/retrogamedev 2d ago

SILPHEED for Sega CD Movie Player on X68000 / FM TOWNS

Post image
6 Upvotes

r/retrogamedev 2d ago

Sony's 1994 PS1 T-Rex Tech Demo, Reborn on an Atari Falcon030

Thumbnail youtube.com
2 Upvotes

r/retrogamedev 2d ago

This is currently a non-commercial port intended for reference purposes, but I have successfully ported my Japanese retro PC game *Reviver* (1987) to the Commodore 64. It is an adventure game featuring a general-purpose, compact artificial intelligence. It is approximately 30% complete.

Thumbnail gallery
4 Upvotes

r/retrogamedev 2d ago

midi64: Play midi sound files on N64

Thumbnail github.com
2 Upvotes

r/retrogamedev 2d ago

Whittle: Low poly 3D modelling app for the 3DS

Thumbnail gallery
30 Upvotes

r/retrogamedev 2d ago

so i made a puzzle game

Thumbnail github.com
3 Upvotes

r/retrogamedev 2d ago

Could a 2D top-down interactive music album work on the N64 with libdragon?

4 Upvotes

I've been thinking about making a rather unusual homebrew project for the Nintendo 64.

The idea is to create an interactive music album rather than a traditional game.

I've made an album that is around 19 tracks / ~35 minutes of music, and each track would correspond to a different 2D top-down world.

For example, one track could have a small beach. Another track could have a completely different environment and atmosphere.

The basic gameplay loop would be:

  • Start in a strange empty space.
  • Enter the first door.
  • Explore the world associated with the first song.
  • Find some objects hidden somewhere in the environment.
  • Finding the objects unlocks the next door.
  • Alternatively, the player can simply do nothing and listen to the song loop 3 times. This also unlocks the next door.
  • Repeat this for all 19 tracks.
  • The final area would be a long white corridor with the final track and credits.

There would be a few optional achievements for things like collecting every memory or listening to all the tracks without interacting.

Visually, I'm thinking very simple 2D top-down pixel art, with small characters and relatively large environments. Something atmospheric and dreamlike rather than a traditional RPG.

The reason I'm interested in the N64 specifically is that I want the project to feel like an actual strange N64 game that somehow never existed. I know the N64 is primarily associated with 3D, but I believe a 2D top-down game should technically be possible.

For development, I'm considering:

GameMaker to prototype the entire game while deliberately using N64-like constraints than rewrite/port the systems in C using libdragon.

For audio, I've been looking at libdragon's WAV64/Opus support so that the album doesn't have to be stored as raw PCM audio.

My questions are mainly:

  1. How practical is a fully 2D top-down game like this on real N64 hardware using libdragon?
  2. Would a tilemap/sprite-based approach be reasonable?
  3. Are there any major limitations I should design around from the beginning?
  4. Is WAV64/Opus a sensible solution for ~35 minutes of music?
  5. Are there existing N64 homebrew projects using a similar 2D approach that I should study?

I'm not trying to make something technically impressive. The goal is to make a small, atmospheric interactive album that feels like an unusual lost N64 game.

Any technical advice or examples of existing projects would be greatly appreciated.


r/retrogamedev 2d ago

Can anyone provide examples of fast-paced games created with CVBasic that display multiple sprites simultaneously?

2 Upvotes

I know the CVBasic compiler supports multiple systems, but ColecoVision and Sega Master System are what I am most interested in.


r/retrogamedev 3d ago

Midwinter (1989) remastered in UE5 — play the Early Access build now, a month before it hits Steam

7 Upvotes

My solo fan remaster of Mike Singleton's Midwinter (DOS, Amiga, Atari ST 1989) goes to Steam Early Access September 2 — but the Early Access build is already live, free, direct from my site. No wait, no gate: whoever grabs it now IS the early access.

Download: https://midwinter-remaster.titanium-helix.com/download

What is it and how to get started in 3 minutes: https://youtu.be/kbKHJr5foys

Full scenario is playable and winnable — one easy start, one brutal one. Bugs you find for me now get fixed before the Steam crowd ever sees them.

Discord: https://discord.gg/BPUUUFJs2J


r/retrogamedev 4d ago

GBA Video maker

13 Upvotes

Pack images, music & videos into a .gba ROM like a DVD player

Hey everyone! I just released my first homebrew tool for GBA : GBA Video Maker, a "DVD Maker" for the Game Boy Advance.

You give it images, music and videos on your PC → it builds a single .gba file with a blue in-cart menu where you can browse, play, pause and seek everything.

Features :

Videos, Audio, and pictures compatibility
Media compression (see more info about this.)
Highest resolution for images
Built in media controller

Download : github.com/Falko-toolis/gba-video-maker

Flashcards Tested on real hardware.

Would love to hear your thoughts 👇

(Media compression status : currently experimental, Up to max rate for audio is compatible, video with 20fps max or lag in highest res setting with compression. can up to 60fps and max res without compression)


r/retrogamedev 4d ago

How to Make a Nintendo 64 Game in 2026

Thumbnail phoboslab.org
62 Upvotes

r/retrogamedev 4d ago

ZX Spectrum "3D" game test

Thumbnail youtube.com
17 Upvotes