Jump to content
A 2021 backup has been restored. Forums are closed and work in progress. Join our Discord server for more updates! ×
SoaH City Message Board

---== Sonic Engine To End All Sonic Engines ==---


saxman

Recommended Posts

Actually there are no samples in the Sega Genesis Sonic games... except for percussion. They are tones digitally generated through the YM2612, a varient of the second generation of Yamaha DX synthesizers (more closely related to the DX27 and DX100). I've been planning a YM2612 emulator to be built into the ProSonic engine. It would emulate two YM2612s, giving you twice the number of channels you would normally have under the Genesis. Voices (or 'instruments') could be imported through either YMX files (YMX is a format I created when I did the Sonic QX music editor for S2), or SysEx bank files (and SysEx dumps from DX11, DX21, DX27, DX27S, DX100, and TX81Z).

I'm happy to hear you like the hi-res stuff Aries. I wasn't planning to do hi-res, but I started to see some potential for it and decided to make it an option. I myself won't be making any hi-res games, but I know many people who would if given the chance. But I should mention that a 320x2?? game is not compatible with a 640x4?? game. 320x200 and 320x240 will use 16x16 blocks and come together to form 128x128 tiles. 640x400 and 640x480 games will use 32x32 blocks and come together to form 256x256 tiles. Basically hi-res would serve to keep the basic size of things on screen, but simply allow for everything to have 4X the detail. If I did 128x128 tiles in a 640x480 game, it wouldn't feel like Sonic in my opinion. So the point is, make sure you know what you want to do at the start, because it might not be easy to switch over later.

Link to comment
Share on other sites

Of course, in my sonic game every art planned is totally new, (including Sonic) and for art coherence's sake I don't want to recycle or scretch anything at all :)

ProSonic, as I can guess, it'll be really flexible to do everything. From S123&KCD adaptations to other games.

What is the most near completion feature you have right now? Just curious. ;)

Link to comment
Share on other sites

Correct, also called the DX-FM synthesis. It's hard to emulate if you don't know everything about how it does everything. I know how to modify all the parameters and make my own voices... but actually reconstructing the tones is the tricky part. I might just use existing YM2612 code from the internet in my engine temporarily, because I would like to write my own. It's a hard task, but I'm really interested in doing it.

And ProSonic will be very flexible just in the way you said. The most completed feature of the engine right now I'd say is the level layout. I mean I know that's pretty basic, but it's the one thing where there won't be much change at all in the months ahead. If you're looking for more detailed features, I'd say the most complete one would be.... hmm, I don't know! If you give me a list of choices, I can probably pick easier on that.

Link to comment
Share on other sites

Even with choices, it's hard to choose. They all have some problems, and they all have a lot of good things too. I'd have to say graphics though because that has the fewest problems and works quite well. Some neat graphic effects and tricks have been implented into the engine code such as 320x400 split screen, 320x200 split screen (interlaced), and another neat interlacing mode that draws every other line each frame (for example, frame 1 will have all the even lines drawn, frame 2 will have all odd lines drawn, etc). Graphics filters are beginning to work, and there is much much more on the way for graphics stuff.

I thought of picking game physics, but even though a lot of the algorithms are right and accurate in themselves, they all don't actually 'work' the way they should (when you try to combine them, they produce bugs). So I can't really say game physics. I'd like to because that's very important to giving my engine the true Sonic 'feel', but there are still kinks that need fixing.

Link to comment
Share on other sites

This may have already been answered... I don't know. Will there be an option to mess around with the screen? (E.g. zoom in/zoom out the screen/sprites, rotate the camera so the level is upside down, make backgrounds/sprites 'wobble' and wave, distort the perspective, etc).

Link to comment
Share on other sites

Distort the perspective and making the background wobble is done by the filters I mentioned. Although that's not the only thing filters do. I made a recent blog post on filters and what they can (and eventually will) do.

There will be resizing of sprites as well as rotation. I don't know about the level itself though -- hadn't planned on that, but if enough people think this would be something worth having in the engine, perhaps I'll support this feature.

Thanks for the question!

Link to comment
Share on other sites

This little project of yours sax is bloody awesome! I can't wait to see how it develops! Am I to assume that we can gank those buttons in your sig and add them to our own?

Yes, I made them. Expect for the "We support THE ProSonic engine" one.

Link to comment
Share on other sites

Alrighty, I'm pretty pleased with the results I'm getting with hi-res. I got it working, and I made things flexible enough to where it will run under any resolution. Here are some benchmarks (resolution with fps)

256x192 -- 60 fps

320x200 -- 60 fps

400x300 -- 60 fps

512x384 -- 60 fps

640x400 -- 59 fps

800x600 -- 32 fps

1000x700 -- 22 fps

These were done with the game windowed. The machine I used to test with (the one I'm on) is a Pentium 4HT 2800 with 512MB RAM. It held up great until about 640x400 where the performance had a hint of noticeable decline. From there it was down hill. But that doesn't mean there won't be ways to get the performance up.

I'll take some screen shots and post them on my blog when I get to it.

Link to comment
Share on other sites

I'll go ahead and post one of the screenshots available in my latest blog post:

256x192.png

This is just one example of a resolution I can use with ProSonic. It is 256x192, smaller than the 320x200 it has always been before. It can be bigger or smaller. The size is basically unlimited. If I wanted a screen size of 1337x666, I could do that. If I wanted something insanely small like 100x100, I could do that too. The rendering system will adjust based on the resolution you're using.

Link to comment
Share on other sites

How ever big of a resolution you can get on your computer, that's what ProSonic will support. What your computer can handle is the only limit.

It will also allow the creation of a main menu and title screen. It'll support as much freedom to do what you want with it without programming as possible. One of the main things that made me want to do this engine was the fact that in the ROM hacking scene, people have abbandoned the people who can't program, and as a result all the ROM hacks involve heavy amounts of programming. I don't think that's how you get more people involved, I think that's how you scare people off. So I'm looking out for the people who just want something that's easy to use and very powerful at the same time (best of both worlds).

There will be scaling. Technically, there already is scaling code that's been in the engine for a long time now -- it was used for the 2P split-screen. The split-screen code is mostly broken now because I haven't bothered to keep it up to date with the rest of my engine (too much to worry about right now -- 2P split-screen will be important later in development, but not right now). But that scaling code was optimized specifically for cutting the Y screen size in half. I would likely implent all new code to make a 320x200 screen scale to 640x400 for example. I realize this may be nice for people who still want the basic 320x2## size but want certain things (maybe text or polygons) to look more detailed. I'll work on that.

EDIT: Actually, Allegro does have scaling built into it. I don't use all the Allegro features though because some of them conflict with the way I want to render the graphics. So much of the graphics rendering code is my own.

Link to comment
Share on other sites

I'm confused by what you mean by HD. HD to mean says "high definition"... but I think I'm still missing part of the message here. Isn't simply using a high resolution and allowing for bigger and more detailed tiles able to accomplish what many people are interested in? I guess I'm just a little confused.

Link to comment
Share on other sites

It depends on what you consider far or not. You can move around on the platforms and slopes. Most of the major algorithms are there to replicate the original Sonic engine. Some things such as wall collision are disabled because of conflicts with other code (the wall collision and floor collision don't like each other for some odd reason -- never have... but they do work).

Sonic used to jump too, but I have that disabled right now and have instead used a function that allows him to float when you hold the F8 key. A lot of things are there, but I don't necessarily have them all enabled. The 2P split-screen is another one that is there, but I simply haven't bothered to make it work again lately for the reason I described a couple posts ago.

It's very far... it's just got much further to go. It's not done until it can do every single thing the original games did. And it's definitely getting there, but it'll take some patience.

Link to comment
Share on other sites

HD doesnt necesarrily mean bigger tiles and higher resolution. Using 3D hardware for 2D operations give awesome results. Stuff like scaling and rotation without creating ugly jagged sprites, and incredible performance. And since you can integrate pixel shaders, you can customize how every single pixel is drawn through the use of a shader language (or shader asm)

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...