This ROM was made for educational purposes. I made it to find out whether adapting Sonic Mania to the 32X was possible. It is not a direct port of RSDK; instead, scripts have been adapted and tools have been developed to read the game’s assets. I have also consulted other tutorials about implementing Sonic-style physics and rendering a tilemap with the Mega Drive while using the 32X for sprites.
Why does it run slowly? Is it because it was written in C?
Someone experienced in assembly could probably achieve something incredible. I am only a beginner. However, the use of C is not the main reason it runs slowly. The current tilemap and streaming systems are still very basic. When the camera crosses certain boundaries, the Mega Drive has to read new map blocks from the cartridge, decompress or combine layers, upload new graphics patterns to VRAM, write new columns to the level plane, update the parallax background rows, and coordinate all those changes with the 32X, which draws Sonic, rings, Badniks, and 3D graphics.
The stuttering mainly occurs when the camera enters a section containing terrain graphics that are not currently cached. That frame has to process and load much more data than the previous frames. Direction also matters: when the player goes back, some older blocks may already have been removed from the cache and must be loaded again.
I hope I can turn this into something more polished in the future.
Why didn’t you use a Genesis Sonic game as the base?
Because the idea was to learn and find out whether I could adapt Mania using my own approach. I had used C before, but never for anything like this. It was a personal challenge.
Will you publish the repository?
Yes, I would like to publish it. Before doing so, however, I want to clean up the code. There is a lot of duplicated code, and I would like to improve the game properly, achieve at least a stable frame rate, and document everything clearly.
Please bear in mind that I am just a fan doing this to learn, so please do not make demands. I am sharing it simply because I want to.
Test:
Tilemap System
Sonic Rotation
Sprites on 32X
3D on 32X
Scaling on 32X