One day, I was thinking about SonLVL and wondering if I could use it to recreate the backgrounds from Sonic levels, complete with scrolling and animations. As it turns out, I could. So I decided to make a screensaver out of it, because it seemed like the best thing to do, I guess. And then, since I had the SMPS music player for Sonic & Knuckles Collection set up so it could be used by other programs, I decided to throw that in too.
When first running the screensaver, you will have to configure it by right clicking and choosing the "Configure" option (or using the /c argument on the command line). You can choose whether or not to play music, the volume of the music (in percent, 0 to 1000, default 100), the number of frames per second (1 to 60, default 30), the speed to scroll at (-64 to 64, default 8), which levels to show and what order to show them in, and the amount of time to display each level for (hours:minutes:seconds:centiseconds, default 5 minutes).
It is important to not install the screensaver by copying it into the system32 folder as is common practice, instead you should right click the file and select "Install".
When running the screensaver, there are a few keyboard commands that will perform actions other than closing the screensaver: W toggles water when applicable, M toggles music, N jumps to the next level, up/down shift the camera up or down, and left/right increase or decrease the scroll speed.
Here is the main part: Download
.NET 3.5 is required, and MSVC 2010 redist if you want music. The screensaver will run on Linux, but without music.
And the levels available so far are:
The source code is on Sonic Retro's GitHub if you want to see how it works or contribute to development. Tech Members have access by default, anyone else may contact me for access.
Before you all start requesting levels, keep in mind that I have to port all these by hand. I'm mostly familiar with Sonic 2, Sonic 1 I can barely understand the disassembly, Sonic CD has no disassembly (also music), Sonic 3 & Knuckles not only is poorly documented in the scrolling area, but it also has a lot of fancy tricks used to create the illusion of more layers, I could try to make them into actual layers, but I'd need some way to get full images for all the different "layers" (a similar thing applies to HTZ). Some levels have lots of animated tiles and I'm not sure how to handle that yet, I've got some ideas, I might have to try Metropolis Zone and see what works best. Levels from other games or different things entirely are possible, but I'm not likely to do it myself.
If you look at the source code for each level, you can see that S2HPZ is closely emulating the original 68000 instructions, while LZ and EHZ are more high level but still producing identical results.
About the framerate, I chose 30fps as the default because that's what works on my computer with minimal stuttering, and a graphics card isn't much help here, all the rendering is done in software, using a combination of my own 8bpp bitmap code from SonLVL and GDI+. If anyone has ideas for optimization, that would help a lot, possibly with SonLVL too.
When first running the screensaver, you will have to configure it by right clicking and choosing the "Configure" option (or using the /c argument on the command line). You can choose whether or not to play music, the volume of the music (in percent, 0 to 1000, default 100), the number of frames per second (1 to 60, default 30), the speed to scroll at (-64 to 64, default 8), which levels to show and what order to show them in, and the amount of time to display each level for (hours:minutes:seconds:centiseconds, default 5 minutes).
It is important to not install the screensaver by copying it into the system32 folder as is common practice, instead you should right click the file and select "Install".
When running the screensaver, there are a few keyboard commands that will perform actions other than closing the screensaver: W toggles water when applicable, M toggles music, N jumps to the next level, up/down shift the camera up or down, and left/right increase or decrease the scroll speed.
Here is the main part: Download
.NET 3.5 is required, and MSVC 2010 redist if you want music. The screensaver will run on Linux, but without music.
And the levels available so far are:
- Download All
- Green Hill Zone (with Title Screen alternate)
- Marble Zone
- Spring Yard Zone
- Labyrinth Zone (with Scrap Brain Zone Act 3 alternate)
- Star Light Zone
- Scrap Brain Zone Act 1
- Scrap Brain Zone Act 2
- Emerald Hill Zone
- Chemical Plant Zone
- Aquatic Ruin Zone
- Casino Night Zone
- Mystic Cave Zone
- Oil Ocean Zone (two variations)
- Death Egg Zone (Sonic 2)
- Hidden Palace Zone (Sonic 2)
- Mushroom Hill Zone (four variations)
The source code is on Sonic Retro's GitHub if you want to see how it works or contribute to development. Tech Members have access by default, anyone else may contact me for access.
Before you all start requesting levels, keep in mind that I have to port all these by hand. I'm mostly familiar with Sonic 2, Sonic 1 I can barely understand the disassembly, Sonic CD has no disassembly (also music), Sonic 3 & Knuckles not only is poorly documented in the scrolling area, but it also has a lot of fancy tricks used to create the illusion of more layers, I could try to make them into actual layers, but I'd need some way to get full images for all the different "layers" (a similar thing applies to HTZ). Some levels have lots of animated tiles and I'm not sure how to handle that yet, I've got some ideas, I might have to try Metropolis Zone and see what works best. Levels from other games or different things entirely are possible, but I'm not likely to do it myself.
If you look at the source code for each level, you can see that S2HPZ is closely emulating the original 68000 instructions, while LZ and EHZ are more high level but still producing identical results.
About the framerate, I chose 30fps as the default because that's what works on my computer with minimal stuttering, and a graphics card isn't much help here, all the rendering is done in software, using a combination of my own 8bpp bitmap code from SonLVL and GDI+. If anyone has ideas for optimization, that would help a lot, possibly with SonLVL too.
This post has been edited by MainMemory: 10 June 2015 - 04:03 PM


02
