** Sega Genesis 3D Engine Update 8 **
Significant improvements all round as you can see and hear from the last update !!
Foremost - A huge thanks to @TonimanGalvez who has joined the project to create a bit of 16bit low poly magic. Toni's an Amiga fan but also crazy about game dev in general, he's worked on GBC, GBA, PC, MD, PSP, C64, CPC, MSX... and others. Gaming titles include War Times, Metal Gear, Rocketman, Tintin & Asterix to name a few.
He's provided the great new ship model you see on screen - new striped buildings, all the backgrounds / palettes etc. There's a lot of models he's given me which need to be added, also he will be planning a lot of the level design. Very happy to have him help me turn this into something more than a tech demo as I have my hands tied pushing the MD as far as it can go haha - there is no cpu cycle to be spared.
Also many thanks to my good friend @laurent_crouzet for the Music for this showing , I wanted to have the music load occurring so we have a realistic benchmark for performance and he was only too obliging. If you're into MD chiptunes check him out !!
Since last update :
New player model , substantially more detailed than the Arwing. Last update had a 23 triangle Arwing , this update has a 39 triangle custom model from Toni. We had several to choose from , others will be used for enemies .
3D Buffer size increased 25% to 256x160. This was quite tricky as I'm close to the DMA limit even with an extended vblank . Spent a few days thinking of how to do this as like anything retro every solution has a drawback, finally got a workable solution. It makes a big difference to have a bit more vertical height .
Z Rotation added ( the screen tilting left to right ) , small hit to vertex transform on cpu thanks to look up tables doing the heavy lifting, saving 4 multiplies per vertex.
Multiple speed ups in rendering code. Onscreen paths with no range checking used until Z is close enough to cause clipping , partial onscreen drawing pathes that need to check boundaries, quad rendering completely rewritten - was very very painfull to get right . I found out the hard way that things are great when they are not rotating in the Z axis haha .
Partial buffer draw optimisations - which have helped with the massive dma load , sending up to a 20kb buffer in a single frame needs a lot of optimisation. Min / Max tile lines are analysed and only sent if dirtied , reducing most buffer swaps substantially. Still some issues to sort out , at times you can see the flicker near top of screen when frames are near full height . I need to optimise that a bit.
Due to the onscreen buffer system a full Sprite background had to be implemented almost Neo Geo style. This flips the usual MD rendering system on its head as it uses both foreground and background layers for a foreground 3d plane and sprites for the background. This presents a few issues, one is to get a tilt effect on the background by using narrow sprites (16x32) we run out of sprites when trying to cover the screen. Thankfully the MD is not limited to 80 sprites, to fix this a 114 sprite multiplexor is used to draw the background, its completely made up of 16x32 sprites !
Why do things this way ? speed . Its the interleaved foreground/background layers that allow a double buffered ram system writing to write to vram using dma in a completely linear fashion - virtually no tile translation needed. The negative is you have no planes for the background, that's where the sprites come in . Thanks to H40 mode we still have a few sprites we can use for effects in the forground also . Thankfully we can implement a fairly good tilt still for the background using sprites, in future updates this will be able to move horizontally also and a bit of vertical movement.
XGM1 music driver in use to simulate music cpu load, XGM2 unfortunately with the massive DMA needed to shift the 3d buffers would slow down at times rendering it unusable, XGM1 plays at full speed - albiet with a bit more of a cpu hit.
Together with the sprite multiplexor and the music driver active theres a 10 % hit to cpu so I've had to play around with draw distances / object heights and other optimisations to offset that. Not to mention the larger buffer takes more cpu to fill also.
Everything is placeholder so will be changed with proper stage design. We are averaging 20 FPS in the current video, I'll push for more as always !!
Progress continues on my other projects , updates soon on those - retirement can't come quick enough .
#SGDK #SegaGenesis #SegaMegadrive
Found the issue which caused slight lag spikes when you land a hit... it fired a multi trace that hit everything on the map twice over😅
Now combat is truly smooth! 🥊So enjoy some buttered up game-play! 🎮
#indiegame#gamedev#fgc#indiedev#ShowMeSunday
One of my favourite "Japanese Artists drawing stuff from Western Media" moments is Capcom's rendition of The Punisher in their Arcade game - a unique moment because Haruki Suetsugu doesn't usually draw like this as the norm when you look at his portfolio
(Bonus Nick Fury)
This is how I like to do attacks if they don't hit anyone. The full combo doesn't play. Instead I make a few "aircombos" and each attack can branch into the main combo. This keeps the exciting attacks hidden until you connect, and also make variation for the eye since the 1st attack is either left or right. I prefer this but always curious if others have unique ways they handle combo starts. I first doing this when I was messing around with Bully's old fight system back in the day.
#gamedev #indiegame #bully #gaming