[demo] SNES Sonic

Discussion of hardware and software development for Super NES and Super Famicom.

Moderator: Moderators

Forum rules
  • For making cartridges of your Super NES games, see Reproduction.
Post Reply
TiagoSC
Posts: 17
Joined: Sun Feb 26, 2017 3:44 pm

[demo] SNES Sonic

Post by TiagoSC » Thu Aug 06, 2020 2:45 pm

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/dnbe7bfjs ... M.smc/file

Take a look

Image

Image

Image
Last edited by TiagoSC on Sun Nov 15, 2020 7:21 am, edited 5 times in total.

User avatar
Señor Ventura
Posts: 162
Joined: Sat Aug 20, 2016 3:58 am

Re: [demo] SNES Sonic

Post by Señor Ventura » Thu Aug 06, 2020 3:05 pm

Oh my god, blast processing xD

It seems to me very similar to the original. Please, tell us all the details you can.

User avatar
tokumaru
Posts: 11907
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: [demo] SNES Sonic

Post by tokumaru » Thu Aug 06, 2020 3:40 pm

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.

TiagoSC
Posts: 17
Joined: Sun Feb 26, 2017 3:44 pm

Re: [demo] SNES Sonic

Post by TiagoSC » Thu Aug 06, 2020 3:56 pm

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.

psycopathicteen
Posts: 2971
Joined: Wed May 19, 2010 6:12 pm

Re: [demo] SNES Sonic

Post by psycopathicteen » Thu Aug 06, 2020 5:29 pm

Dang, this is impressive. I didn't even notice any slowdown.

User avatar
Nikku4211
Posts: 238
Joined: Sun Dec 15, 2019 1:28 pm
Location: Bronx, New York
Contact:

Re: [demo] SNES Sonic

Post by Nikku4211 » Thu Aug 06, 2020 5:49 pm

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! Tiago! You're a mad geinus!
I have an ASD, so empathy is not natural for me. If I hurt you, I apologise.

User avatar
TmEE
Posts: 764
Joined: Wed Feb 13, 2008 9:10 am
Location: Estonia, Rapla city (50 and 60Hz compatible :P)
Contact:

Re: [demo] SNES Sonic

Post by TmEE » Thu Aug 06, 2020 6:02 pm

This is awesome ! I'm gonna have to dig up my SNES and GameDoctor and attempt to run this on the real hardware

User avatar
Fisher
Posts: 1121
Joined: Sat Jul 04, 2015 9:58 am
Location: -29.794229 -55.795374

Re: [demo] SNES Sonic

Post by Fisher » Thu Aug 06, 2020 7:41 pm

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!

Oziphantom
Posts: 988
Joined: Tue Feb 07, 2017 2:03 am

Re: [demo] SNES Sonic

Post by Oziphantom » Thu Aug 06, 2020 10:19 pm

I've been beaten to it.

User avatar
rainwarrior
Posts: 7893
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: [demo] SNES Sonic

Post by rainwarrior » Thu Aug 06, 2020 10:54 pm

Very cool!

creaothceann
Posts: 270
Joined: Mon Jan 23, 2006 7:47 am
Location: Germany
Contact:

Re: [demo] SNES Sonic

Post by creaothceann » Thu Aug 06, 2020 11:07 pm

Image Nice! :)
My current setup:
Super Famicom ("2/1/3" SNS-CPU-GPM-02) → SCART → OSSC → StarTech USB3HDCAP → AmaRecTV 3.10

User avatar
aa-dav
Posts: 116
Joined: Tue Apr 14, 2020 9:45 pm
Location: Russia

Re: [demo] SNES Sonic

Post by aa-dav » Thu Aug 06, 2020 11:48 pm

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/
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.
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.

User avatar
tokumaru
Posts: 11907
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: [demo] SNES Sonic

Post by tokumaru » Fri Aug 07, 2020 12:20 am

aa-dav wrote:
Thu Aug 06, 2020 11:48 pm
So, maybe rotozoom and so on could be done faster really.
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"!

calima
Posts: 1245
Joined: Tue Oct 06, 2015 10:16 am

Re: [demo] SNES Sonic

Post by calima » Fri Aug 07, 2020 12:23 am

Chinese repros and hacks of this coming in 3..2..1..

User avatar
aa-dav
Posts: 116
Joined: Tue Apr 14, 2020 9:45 pm
Location: Russia

Re: [demo] SNES Sonic

Post by aa-dav » Fri Aug 07, 2020 1:14 am

tokumaru wrote:
Fri Aug 07, 2020 12:20 am
aa-dav wrote:
Thu Aug 06, 2020 11:48 pm
So, maybe rotozoom and so on could be done faster really.
Why you'd code a rotozoomer on the SNES in the first place when you have mode 7 is anyone's guess, though!
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)

Post Reply