Symphony Engine [Put the logo here when it's made] What is this?: Symphony Engine is my game engine for the Sega Mega Drive, specifically aimed for Sonic and other projects of mine. Engine cores are designed to be incredibly modular so it can be used in anything. This project is made just for me to have a solid base and for learning about the Sega Mega Drive's hardware and Motorola 68000 assembly... And just to have fun with this! I have planned to make this open source one day hoping it could be helpful for people for learning. This thread is mainly a dev log for the engine where i'm occasionally going to post what i'm doing instead of clogging up the General Project/Screenshot Thread. As of writing this thread, the engine features level scrolling, object system, sprite rendering and art lists[or PLC as everyone calls them] Screenshots: This is the only one so far.... will add more once there's more done This post will be also expanded later on as more stuff gets made!
Now gonna follow up this post to show off the basic object system, it is still extremely work in progress, it lacks drawing routine with priority basically, object system contains two separate routines, that being update and drawing, as of now sprites are being rendered in update routine just so you can see them. You can also draw sprites separate from objects which means you could do multi segmented objects in one object, for example you can do swings or bridges without creating multiple objects! This object system is based on Crackers and Devon's linked list system.
It's really cool the amount of progress you have made learning to program for the Genesis in like, a month you told me? Can't wait to see more.
Hey nice work! Lookin pretty darn good~ Hope to see it in all its fully glory and action, with some unique objects. Hope they'll be easy to program
Thank you MarkeyJester! They won't be too hard to program considering the fact i have prior experience with gameplay programming in the fangame scene. So programming stuff like the player object and physics are not too hard for me. The biggest challenge was trying to figure out how the hardware works considering this is my first time programming something from scratch for the Mega Drive.
Hello everyone! I have no idea if i should consider this as something major, in my honest opinion i would say this is a minor update, i started implementing some collision functions! It is still incredibly work in progress, as of now you can only detect floor on plane A and does not return angle yet... Floor collision function was pretty simple to implement. Basically i have a function that calculates distance between collision point A and collision point B, and it returns distance from the point that lower than the other point. For example if point A's distance is 2 and point B's distance is 12, the function will return distance from point A. Also you might notice that there's no parallax or palette cycle anymore, that's because i have refactored the entire assembly file for the stage game mode, and i will make custom parallax system and palette cycle system later... But anyways that's it.
Hey nice work! Collision is one of the worst things to have to write, not the act of making or the math behind it, but sheerly from an optimisation point of view, if there's loads of objects which have to collide with the floor, it can get costly. Here's hoping you've come up with a level format that's easy to process for collision, that gif is looking pretty solid
Thanks! Unfortunately, level format is not my own, it's ProjectFM's 64x64 chunk level format with my own stage renderer and collision code. Eventually i do plan on making my own level format and tools for level editing... I just gotta find the time and motivation for it. I think the biggest test for collision's performance is going to be the ringloss object whenever i get to that.
Now you can move on slopes! It kinda looks weird but that's mostly due to some angles on tiles being off and lack of proper slope influence If anyone asks what happened at the end of the GIF, i fucked up my jump code... it's fixed now