Pixel Poppy ProductionsShowing what I have been working on the past couple months - always wanted to make a tile-based game! Some of my favorites are of course PC games like Diablo, Civilization, and SimCity, but also earlier games such as ToeJam & Earl (which used random seeds/procedural generation and I think, some form of wave function collapse) and turn based strategy games like Master of Monsters (with fixed maps).
Right now, it's not a game, but more of a tech demo, thus the title.
Project-X - Sega Saturn tilemap game enginePixel Poppy Productions2025-07-02 | Showing what I have been working on the past couple months - always wanted to make a tile-based game! Some of my favorites are of course PC games like Diablo, Civilization, and SimCity, but also earlier games such as ToeJam & Earl (which used random seeds/procedural generation and I think, some form of wave function collapse) and turn based strategy games like Master of Monsters (with fixed maps).
Right now, it's not a game, but more of a tech demo, thus the title.
now there are power ups and the sound effects are much more complete!
Get the updated version here and try it yourself on the Mednafen emulator or a real Sega Saturn: segaxtreme.net/resources/pixel-poppy-pong.282/updatesPixel Poppy Pong - Autodemo!Pixel Poppy Productions2025-04-12 | One of the goals for this project was to have some sort of autodemo/attract mode (like a classic arcade game). This shows the full demo loop, including all 4 background 'times', game credits, and high scores.
(enable RTC in the options, and the background will correspond to the time stored on your Saturn).Pixel Poppy Pong - gameplay!Pixel Poppy Productions2025-04-12 | This build is about 60% complete (version 0.62), and is an entry for the 30th annual Sega Saturn homebrew competition.
There are gameplay features missing, the sound effects are placeholders, and the music is only about 50% done. However, the core mechanics work, and it has support for peripherals like the 3D control pad, the multitap (4 players!) and the backup RAM cart.
There are 3 gameplay modes (Classic, Story, and Battle mode). Classic mode is 1-2 players, Story mode is 1 player, and Battle mode is 1-4 players (AI will take over unselected players). There are also 3 difficulty modes, and several game options to mess with (some are only for emulator support, such as enabling/disabling mosaic effects).
The game also tracks high scores - if you win the game (in any mode), enter your initials, and see if you can top the chart! (to get a better score, every time you touch the ball, your score multiple goes up - but if you are scored on, you lose your score multiple).Pixel Poppy Pong Update!Pixel Poppy Productions2025-01-02 | Coming April 2025! This is a teaser demo showing the intro/logo with day/night cycles implemented and preliminary music.
This uses 2 background layers and VDP2 transparency to effectively do a two pass render (it happens in one pass in reality). This allows for a full color image, but also with normal mapping applied.Sega Saturn Normal Mapping - 3 lights / 6 palettes!Pixel Poppy Productions2024-09-30 | I really wanted to see how far I can push and maintain 60fps. This would never be done in reality, but this demonstrates 6 individual normal maps on multiple surfaces with 3 independent lights.
I probably won't post anymore updates on this until the 30th annual SegaXtreme game competition gets closer and I have something "real" to show..
EDIT: corrected the number of palettes to 7 to 6 (out of 8 possible). I did also do 7 (8 should work too), but I forgot that I deleted one of them when I was cleaning up the demo code.Sega Saturn real-time VDP2 Normal Mapping (real hardware)Pixel Poppy Productions2024-09-17 | This looks similar to the last video, but under the hood a lot of improvements have been made, and this is running on real hardware instead of an emulator.
Since VDP2 is inherently 2D, we only need the Red & Green channels of the normal map to calculate lighting. Blue can then be used for encoding other data, such as hue or maybe specular mapping.
Shout out to Danny Duarte, who wrote a new integer square root function that is about 8x faster. Which is important when you need to iterate through 255 palette entries and maintain 60fps!
Try it on your Saturn! Github: github.com/bimmerlabs/saturn-demos/releases/tag/vdp2_normal_mapSega Saturn real time normal mapping - multiple colorsPixel Poppy Productions2024-09-15 | This focuses more on showing multiple "hues" at the same time. basically you can apply a color mask to the palette indexes, and have more than one "hue" drawn with the same normal map (previous demos have only ever been one "hue"). Technically this is 3 (one for each tile, and black for the grout). 2-20 would be feasible with one 256 color palette. this uses about 1/4 of one 8-bit palette. since you can draw basically any color with shading and lighting, even 3-4 "hues" in one palette would be very powerfulSaturn real time normal mapping - with lighting & VDP2 planesPixel Poppy Productions2024-09-11 | Still some way to go, I haven't implemented the skybox lighting yet, or different colored lighting from the sun/moon cycle.
the lighting is actually fully 3D. when I implement a camera, you will be able to look anywhere and see the "sky" in real-time.Sega Saturn - real-time normal mapping demoPixel Poppy Productions2024-08-29 | Just a quick demo on a static VDP2 background, but this will work on NGB0-3 and RGB0 too.
Basically abusing palettes to convert normal map RGB space to lighting XYZ space. This demo uses only one 8-bit palette.
Any normal map will work with minimal effort, this was one I thought looked cool that I found online to test with. I didn't clean up the edges, it's not important now! :)
Next I will do colored lighting, multiple color images, and at least 8 surfaces in real time (limited mainly by the number of palettes).
It will work on palleted sprites / quads as well, but I see this mainly being useful on backgrounds, and especially RGB0 / mode 7 style infinite planes. Think real time environmental effects.Pixel Poppy Pong Alpha (February 2023 version)Pixel Poppy Productions2024-02-11 | This was the original build for Pixel Poppy Pong when I had just started working on the Saturn, back in February 2023. I just found this on the SD card I use for my Satiator!
I think I actually started working on this in 2022, just after that year's annual homebrew competition. It is pretty bad so I didn't end up submitting it for 2023.
The graphics are super simple in this version since I was just trying to make a game work at all. Unfortunately I had issues with one of my Saturn controllers.
The D-pad stopped working, which I thought was a bug in my programming, so I ended up stopping work on it for months out of frustration. It wasn't until I tried another controller, that I realized one of them was just broken!
Due to the controller issues I was having, up and down inputs are done with the Y and B buttons instead of the D-pad. There's no AI (the 2nd player just does the opposite of player 1), and no other inputs except pressing start resets the game.
It's kind of fun to look back and see how far I came in a year! :)Pixel Poppy Pong RC6!Pixel Poppy Productions2024-01-24 | Watch me get my ass kicked by my own CPU opponent.. seriously!
I played this version vs my kids today, and it was pretty fun. And while Human vs Human is definitely better than Human vs CPU, if it's too hard there is also CPU vs CPU - just leave your controller unplugged, and you will see the ending - eventually!
This game is stupid and goofy, because it's supposed to be. It could even be stupider and goofier! I think I need more quotes, and it definitely needs sound. But not until after the contest is over.
There are still some collision issues, and the initial kickoff might be a little too aggressive. However, if I decrease that, I'm afraid it will make the CPU even more difficult to beat.
The way to beat this game is really to target items, especially hearts, fish bowls, and.. the Walrus. I might have also made bombs too aggressive, because CPU vs CPU battles often resulted in a stalemate. Oops.
Fun fact: the physics are actually completely random. The bounces off the screen edges aren't, but when you touch Poppy, her reaction is not predictable (she's a cat, after all).
However, you can still affect her trajectory based on when you hit her with your paw, and what attack button you press. Try hitting multiple buttons when you have her in your claws, and see what happens.
Poppy's mood is based on her rate of spin, and her mood affects items. Do with that what you will.
@SEGASATURNSHIRO @PandaMoniumReviewsPixel Poppy Pong - Sega Saturn homebrewPixel Poppy Productions2024-01-21 | This isn't the best quality screen cap, but it gives you an idea of what the game looks like - in reality, it runs at 60fps. 352x224 resolution. Works on real hardware and emulators.
Play as Macchiato or Jelly Bean, who are desperately in love with Poppy (or something like that). Battle each other to score goals, avoid bombs, eat fish, gain hearts, and learn the secrets of the universe. If you win, you will earn Poppy's affection forever. But if you lose, press start and try again!
Each player gets 9 lives (hah! get it?). When you lose all 9 lives, the other player wins the match, and gets a star. Whoever gets 3 stars first, wins the game.
The controls are fairly simple: Up/Down - move your paw up and down to block your goal A/B/C - start your attack (note, these might not work exactly right in this version) When blocking your goal, hold down: A - basic attack B - slow attack C - fast attack If you don't hold down a button, you will still block your goal When the round is over, whoever wins gets a star. Press "B" to start the next round. When the battle for Poppy's affection is over, press Start to reset the game. press ABC+Start at any time to reset the game. (not currently working) Start when the game is running pauses the game. Pixel Poppy Pong supports 2 players with standard controllers. If a controller isn't present, the AI will automatically take over - so you can play P1 vs AI, AI vs P2, or AI vs AI (to be clear, calling this AI is a stretch, lol).
Several items can appear on the field. The main 3 are hearts, bombs, and fish. Whoever touched Poppy last, gets the item. The other items, you will have to play to find out - one is super rare ;) Hearts give you an extra heart. Bombs take away a heart. Fish can give you either 3 extra hearts, or bonus points, depending on Poppy's mood. She's a cat, after all. The other ones? You'll have to find out.. Poppy has 12 different moods which affect scoring and what the items do to the player who touched Poppy last. Currently, the scoring system doesn't affect the end result of the game - and I probably won't have time to implement that by the contest deadline. But I plan to incporporate it in the future.
This version is "playable" enough although not completely finished.
It's definitely most fun played with a second person - the AI is probably too hard. It's frantic and goofy with 2 humans. I play tested with my son, it was actually pretty hilarious.