Danthrax (Sega Saturn SHIRO!)

Saturn Homebrew Update: Flashback, Frogs and More

We’re still a few months away from the next annual SegaXtreme Saturn homebrew competition, but that doesn’t mean talented members of the community aren’t already showing off progress on their original projects. Let’s take a look at five of them that have been updated recently.

Lost Days 0: Queen’s Dream

Sansigolo released a trailer for his latest visual novel Lost Days 0: Queen’s Dream today, telling SHIRO! that he’s planning on a November launch.

Back on Sept. 7, he announced that he’s halfway through writing Lost Days 0 and that it’ll now be a duology because of the game’s size. The first entry in that duology will be Queen’s Dream.

Sansigolo first announced Lost Days 0 in June. It will be the fourth homebrew game that Sansigolo and his Neuromage Studios team have made for the Saturn after Red Moon: Lost Days in 2023, The Case of the City Botucaiba in 2022 and The Lighthouse of São Bento do Oeste in 2020.

Untitled Frog Game

A new homebrew developer on the scene is toying with a 3D platformer. Tails of Saturn uploaded a YouTube video Sept. 5 showing off an untitled frog game that they’re developing with JoEngine.

The game can be downloaded from Tails of Saturn’s Github by clicking the green Code button, then downloading the ZIP file.

Tails of Saturn began experimenting with JoEngine in April just this year, first trying to make a 3D setting for an RPG.

The frog platformer is a pretty simple piece of software for now — there are some environmental features to jump the frog on like a house, some barrels and a bit of elevated terrain. There’s also an animated person walking around that’s held over from the RPG experimentation. There’s no objective yet, either — it’s essentially a tech demo — but perhaps that will change as Tails of Saturn spends more time working with it.

Flashback: The Quest for Identity

Longtime Saturn homebrewer VBT is continuing to work on porting classic sidescrolling adventure title Flashback: The Quest for Identity, posting a new build to the SegaXtreme Discord server as recently as Sept. 2.

He said the new version adds sound effects. A couple weeks prior, he’d reported that he was trying to complete the game without crashing, with a problem cropping up in one level.

VBT entered an early version of the port in the SegaXtreme Saturn 29th Anniversary Game Competition early this year.

He said there’s still lots of work to do to improve the game, including optimizing it to achieve 60 frames per second, remapping the controls, using real sprites and using pixel priority.

X-Men Arcade

Homebrew developer hotrodx is back with a new version of their Sega Saturn recreation of X-Men, the 1992 Konami arcade brawler, and it adds a new playable character, Nightcrawler, as well as a new stage, new boss and new enemies.

Version 0.3 is being distributed via a Mega.nz link in a YouTube video uploaded Tuesday. It’s a ZIP file that contains bin and cue files — easily droppable onto an SD card to play on real hardware via optical drive emulator or to burn to a disc for those using a PseudoSaturn Kai cartridge — as well as a changelog.

The changelog lists everything new in this version:

  • Added NightCrawler as playable character
  • Added third stage (Island M)
  • Added second boss (Wendigo)
  • Added enemy type mutant lizard
  • Added enemy type cryptid
  • Implemented fist projectiles for Sentinels
  • Implemented doors where enemies can spawn from
  • Implemented sound effects prioritization
  • Fixed issue with CD music not playing
  • Replaced placeholder sound effects
  • Optimizations to CPU load
  • Implemented background shake
  • Tweaks to enemy behavior
  • Tweaks to player movement speed
  • Tweaks to hitboxes
  • Tweaks to Storm’s hitting down animations
  • Tweaks to general hitting down range
  • Smaller enemy health in first stage
  • Pause game

This is the first update since March when three-player co-op and playable character Storm were added to the game.

Hotrodx uploaded their first iteration of X-Men in January when it consisted of just one level and two playable characters, Cyclops and Wolverine.

At the time, they said this isn’t a port but rather an attempt to recreate Konami’s hit arcade game. “No source code from the original game was involved, so a lot of guesswork and approximations were implemented,” hotrodx said. “It’s also very buggy.”

They’re likely making the game with Jo Engine considering Jo Engine’s creator, Johannes Fetz, is listed under the game’s special thanks.

The game itself credits several people with helping hotrodx — jin315, AFruitaday!, Superjustinbros and George S ripped images; Magma Dragoon, Dcat and sc00pj0hn ripped audio; Riza and Uge are testers; and there’s a special thanks to Nobuhiro Fujii, Johannes Fetz, Javidx9 and Erwin Esteban.

Normal mapping demo

Hassmaschine, maker of homebrew game Pixel Poppy Pong, has been working over the last couple months to implement normal mapping on the Saturn.

He uploaded a YouTube video Monday showing off his work.

“I think I am done messing with this demo for a while,” he said on SegaXtreme’s Discord server. “I have it working pretty much how I want, now I need to actually make something with it!”

The video shows what appears to be a grid-filled ceiling with grooves between each panel above ground covered in mounds of dirt with a bunch of colorful flowers floating between them. The ceiling and ground slowly spin with the flowers floating between them as unseen light sources move around them independently, causing what appear to be three-dimensional details in the flowers, ceiling and ground to be visible.

The thing is, none of the three-dimensional details are really there — the ceiling and ground are 2D infinite planes rendered by VDP2, and while the flowers are 3D objects rendered by VDP1, the side of the flowers facing the camera is flat without polygonal ridges as the normal mapping effect implies.

In the video description, Hassmaschine said, “I really wanted to see how far I can push and maintain 60 [frames per second]. This would never be done in reality, but this demonstrates seven individual normal maps on multiple surfaces with three independent lights.”

A normal map is a two-dimensional texture whose color data gives information about how light would bounce off of it from different angles as if it were a three-dimensional object. Typically, this requires a computer to run light simulations on an actual 3D object to determine those values and “bake” the data into the normal map texture.

These images from video game artist Carlos Lemos’ blog illustrate this process.

The normal map uses red, green and blue channels to indicate how a 3D object — which is being faked by the 2D normal map — would look when lit from the right, from above and from the front, respectively. A game’s programming then interprets these values based on where the light in a scene is coming from and blends them together to create the illusion of three-dimensionality.

Normal mapping is a modern technique in video game graphics that was just a little after Saturn’s time as far as retail games go — the first game to use normal maps was Evolva, a PC action game released in May 2000. Few computers were capable of the calculations required to bake normal maps in the mid-’90s.

So applying the technique to Saturn development is a novel concept that couldn’t have been used in the ’90s. It can be particularly helpful on a console that’s severely limited in how many polygons it can put on screen.

Using normal maps on the Saturn was theorized as early as 2019 by XL2, developer of HellSlave and Irréal, two of the console’s most technially impressive homebrew games.

The first person to get normal maps working to some extent on the Saturn seems to be Drspod, who in 2022 made a bump mapping demo. “Yes it’s updating the [color lookup tables] so the normal maps are quantized to just 16 possible values, but it seems to be enough for a nice effect on simple textures,” Drspod said at the time.

Then earlier this year, 7shades — developer of Cubecat — got normal mapping working on 3D models, posting a playable demo to the SegaXtreme Discord server on March 29.

“I’m currently testing it with Gouraud shading using a version of XL2’s image in CRAM trick,” 7shades said at the time. “Not viable for Cubecat since I’m already short on CRAM, and stylistically it wouldn’t mesh anyways, but I thought it would be cool to see it in action.”

Hassmaschine commented on that demo five months later on Aug. 11, saying, “It’s probably not useful in a full game (maybe in a title screen, menu or specific cut scenes or something) — but doing any sort of normal mapping on Saturn is pretty impressive. … It’s based on how XL2 did reflection mapping using the gouruad shading tables. … I was thinking, you could do that effect on Saturn in color, if you rendered it off screen, and then basically overwrote the bump map on a flat shaded polygon using one of the VDP2 background layers and one of the VPD2 color calc modes (probably CC_ADD).”

By the end of the month, Hassmaschine had whipped up his own normal mapping demo showing a movable light changing how the shadows change on a large coin.

“The normal map is stored in HWRAM (table of RGB values),” he said. “The actual palette is drawn based on the color calculation.”

He also described the calculations to make the effect work as “stupid simple.”

“X-R, Y-G, square the differences, then take the square root. That is your luminance. Keeping in mind you need to do this for every palette entry you’re applying lights to, it needs to be.”

He said he’s taking a shortcut to make the effect even faster on Saturn: “There is no UV mapping, and I am not calculating the ‘normal’ vector of the planes or sprites at all. So I can ignore the blue channel, and only use the red and green colors.

“I can also do it using the blue channel, it’s just not necessary when used on 2D objects, since the normal vector is always pointing at the screen.”

A version of this story appeared on Sega Saturn SHIRO!