[demo] SNES Sonic
Moderator: Moderators
[demo] SNES Sonic
Hello everyone!
I made a "sonic" engine for SNES based on the Sega Genesis code but with many things optimized for SNES.
It has several bugs to fix and the sound part
is not ready yet.
Thanks to everyone at SonicRetro for the excellent dissassemblys of the original games and for the guides of the original engine.
Here is a small update:
http://www.mediafire.com/file/kg7544w8i ... M.smc/file
Take a look
I made a "sonic" engine for SNES based on the Sega Genesis code but with many things optimized for SNES.
It has several bugs to fix and the sound part
is not ready yet.
Thanks to everyone at SonicRetro for the excellent dissassemblys of the original games and for the guides of the original engine.
Here is a small update:
http://www.mediafire.com/file/kg7544w8i ... M.smc/file
Take a look
Last edited by TiagoSC on Mon Jan 10, 2022 2:42 pm, edited 6 times in total.
-
- Posts: 266
- Joined: Sat Aug 20, 2016 3:58 am
Re: [demo] SNES Sonic
Oh my god, blast processing xD
It seems to me very similar to the original. Please, tell us all the details you can.
It seems to me very similar to the original. Please, tell us all the details you can.
Re: [demo] SNES Sonic
Haven't checked out the ROM yet, so I don't know how smoothly this is working, but I always knew it could be done.
There's nothing special about the Sonic engine that requires a particularly powerful CPU. The scrolling engine is fairly normal, it just updates more tiles per frame than most other engines, but even the NES can handle these scrolling speeds, really.
As for the physics, Sonic himself is slightly more demanding than the typical video game protagonist, with the 360° ball physics and stuff, but everything else is fairly standard, with very basic movement and barely any physics. Many enemies don't even collide with the level map at all.
There's nothing special about the Sonic engine that requires a particularly powerful CPU. The scrolling engine is fairly normal, it just updates more tiles per frame than most other engines, but even the NES can handle these scrolling speeds, really.
As for the physics, Sonic himself is slightly more demanding than the typical video game protagonist, with the 360° ball physics and stuff, but everything else is fairly standard, with very basic movement and barely any physics. Many enemies don't even collide with the level map at all.
Re: [demo] SNES Sonic
Hi
The game has many things done differently because of the differences in the
sprite engine between snes / genesis, I used sprites 8x8 / 16x16 to be able to put as
many tiles as possible in VRAM, only Sonic, Rings, Invincibility and Shield use dynamic tiles with DMA
the rest need to be directly in VRAM as they appear randomly.
In the genesis game, there are sprites that use parts of the background and this has limited the frames of some enemies.
The cause of the biggest slowdows is the fact that objects are loaded on a border of 128 pixels
around the screen, just like the original, and as I used 8/16 sprites,
the sprite list hits more than 100, it is a part that consumes a lot of cpu.
The sonic physics code uses multiplication in many parts and needs to be 16x16 = 32 signed, in snes I used the hardware multiplier but this was slower than in the 68k.
another detail, in the genesis ASR.l (32bit arithmetic shift right) is used a lot and dynamic shifts using registers, these parts I could not port perfectly.
The game has many things done differently because of the differences in the
sprite engine between snes / genesis, I used sprites 8x8 / 16x16 to be able to put as
many tiles as possible in VRAM, only Sonic, Rings, Invincibility and Shield use dynamic tiles with DMA
the rest need to be directly in VRAM as they appear randomly.
In the genesis game, there are sprites that use parts of the background and this has limited the frames of some enemies.
The cause of the biggest slowdows is the fact that objects are loaded on a border of 128 pixels
around the screen, just like the original, and as I used 8/16 sprites,
the sprite list hits more than 100, it is a part that consumes a lot of cpu.
The sonic physics code uses multiplication in many parts and needs to be 16x16 = 32 signed, in snes I used the hardware multiplier but this was slower than in the 68k.
another detail, in the genesis ASR.l (32bit arithmetic shift right) is used a lot and dynamic shifts using registers, these parts I could not port perfectly.
-
- Posts: 3178
- Joined: Wed May 19, 2010 6:12 pm
Re: [demo] SNES Sonic
Dang, this is impressive. I didn't even notice any slowdown.
Re: [demo] SNES Sonic
I've played it, and it's surprisingly competent for an unfinished fan-made port. I couldn't notice any inaccuracies (other than the fact that you can't die, obviously, and the level being incomplete) myself.
I'm even surprised the game's music is in here.
Tiago! You're a mad genius!
I'm even surprised the game's music is in here.
Tiago! You're a mad genius!
Last edited by Nikku4211 on Fri May 20, 2022 3:10 am, edited 1 time in total.
I have an ASD, so empathy is not natural for me. If I hurt you, I apologise.
- TmEE
- Posts: 1024
- Joined: Wed Feb 13, 2008 9:10 am
- Location: Norway (50 and 60Hz compatible :P)
- Contact:
Re: [demo] SNES Sonic
This is awesome ! I'm gonna have to dig up my SNES and GameDoctor and attempt to run this on the real hardware
Re: [demo] SNES Sonic
WOW!!
Another impressive work!!
Please, keep going with this.
Aren't you the same guy who's porting Megaman X for the Mega Drive?
That's another really great port!
Another impressive work!!
Please, keep going with this.
Aren't you the same guy who's porting Megaman X for the Mega Drive?
That's another really great port!
-
- Posts: 1737
- Joined: Tue Feb 07, 2017 2:03 am
Re: [demo] SNES Sonic
I've been beaten to it.
- rainwarrior
- Posts: 8758
- Joined: Sun Jan 22, 2012 12:03 pm
- Location: Canada
- Contact:
Re: [demo] SNES Sonic
Very cool!
-
- Posts: 724
- Joined: Mon Jan 23, 2006 7:47 am
- Location: Germany
- Contact:
Re: [demo] SNES Sonic
My current setup:
Super Famicom ("2/1/3" SNS-CPU-GPM-02) → SCART → OSSC → StarTech USB3HDCAP → AmaRecTV 3.10
Super Famicom ("2/1/3" SNS-CPU-GPM-02) → SCART → OSSC → StarTech USB3HDCAP → AmaRecTV 3.10
Re: [demo] SNES Sonic
Fantastic work!
As was said above, super speed scrolling doesn't need ''blast processing" marketing blah-blah-blah.
It could be done even on NES - and "Bio Force Ape" is real example of it.
However some time ago I met some holywar-inducing interview with Treasure game company (authors of Gunstar Heroes) from year 1993: https://megadrive.me/2011/11/03/an-inte ... -treasure/
As was said above, super speed scrolling doesn't need ''blast processing" marketing blah-blah-blah.
It could be done even on NES - and "Bio Force Ape" is real example of it.
However some time ago I met some holywar-inducing interview with Treasure game company (authors of Gunstar Heroes) from year 1993: https://megadrive.me/2011/11/03/an-inte ... -treasure/
Well, maybe it's just marketing blah-blah too, but AFAIK Mega Drive also has more suitable for dynamic rendering layout of tiles (non-layered 4bpp). So, maybe rotozoom and so on could be done faster really.Q: Konami is a big 3rd party for Nintendo, so why are you now making games for Sega?
A: I’ve always been fascinated with hardware. People are constantly comparing Mega Drive to SNES, saying that the SNES has more colors etc…
But the Mega Drive has a 68000 processor, which is very easy for programmers to work with. I was a programmer for years, making games for the SNES, and I can tell you, the hardware is a pain in the butt. If consumers look at a still shot, they may think the SNES is better, but actually, if you tried to put Gunstar Heroes onto the SNES there would be no way. See those bosses? On the SNES they would slow down, that movement requries sooo much computation. It could only be done on the Sega hardware.
Q: How many colors do you have on screen in Gunstar?
A: Actually there are 64, but we can make it look like much more by adding shadow and lighting effects etc.… When you look at Sonic or Gunstar you would think that they display more than 64 colors, but they don’t, we just make it look like more. In my opinion the colour looks as good as the SNES. We can also make it appear that 3 to 4 screens are present, although you can supposedly only display two (background and foreground) at once, as I said the hardware is very easy to work with. All things considered, the 68000 is a very good CPU allowing room for experimentation while the SNES hardware limits you to their design standards. Scaling and rotation can be implemented in the Sega software, forget it on the SNES.
Re: [demo] SNES Sonic
Why you'd code a rotozoomer on the SNES in the first place when you have mode 7 is anyone's guess, though!
This whole SNES vs. Genesis argument is so dumb... Both platforms are capable in their own ways, and many areas in which they differ don't even have a clear winner because of the subjective opinions people have of them. For example, lots of people say that SNES music is infinitely superior because the hardware uses samples, but more often than not the samples have such low quality that the music ends up sounding way too muffled, which makes me favor the Genesis music most of the time, which may sound more artificial but is always crisp. I also just happen to like artificial sounds... The same way I don't need all my games to look photorealistic, I don't need their songs to sound like real instruments.
Also, from a coding perspective, it's actually really fun to think of ways to make the hardware do things it wasn't supposed to, so instead of saying "this is impossible on this console" (which a lot of people who aren't even programmers love to say), I find it much more constructive to think of HOW those things could be made possible. Congrats TiagoSC, for being on the cool side of this "war"!
Re: [demo] SNES Sonic
Chinese repros and hacks of this coming in 3..2..1..
Re: [demo] SNES Sonic
I mention it because Masato Maegawa told ''See those bosses? On the SNES they would slow down, that movement requries sooo much computation".
I think he meant bosses built from bunch of dynamically redrawn sprites (like Contra Hardcorps and Gunstar Heroes of course).
We can recall giant rotating boss from Contra: Alien Wars which was really implemented by Mode-7 - and trick was to dynamically draw road markings via sprites to imitate road background.
But again, Masato Maegawa told like he was unable to implement dynamic boss built from sprites in SNES...
Well... these consoles are really 'asymmetric' in many possibilities, but I doubt he is totally correct, but probably Mega Drive has more computational CPU power. It sounds legit for me. (however I think SNES wins in sum of all points a little)