Part 3: Tweaking the VDP implementation
In the second part of this series, I increased the throughput of the Megadrive core’s SDRAM controller, which gave nearly but not quite enough extra bandwidth to solve the sprite display problems. To improve things yet further I need to look at the VDP implementation itself…
Following the SDRAM-related improvements to the Megadrive / Genesis core that I’ve covered in my last couple of posts, here’s an updated snapshot for both the Chameleon and MIST boards:
While it’s still not perfect, the glitches should be much less noticeable, and hopefully there will no more missing platforms or missiles making games unplayable!
Part 2: Saving cycles
In the first part of this series I covered some basic tidy-ups to the code to make it easier to maintain. Now I’ll look at how we can speed things up.
The Megadrive/Genesis core has been plagued from the start with graphical issues that result from the SDRAM controller not responding quickly enough. Over the last few days I’ve finally put some time into understanding the SDRAM controller used by the project and spent some time improving its throughput.
I’ve just made available an updated version of the Sega Megadrive / Genesis core for the Turbo Chameleon 64. The only change is to the joystick handling – I’ve untangled the joystick directions and remapped the buttons slightly.
There’s still not a lot of point in using a traditional 1-button C64 joystick with this, but I’ve also fixed a bug in my previous attempt which prevented the CDTV infra-red controller from working. This does now work, and the buttons are mapped as follows:
Play / Pause => Megadrive Start
Volume Up => Megadrive A
A => Megadrive B
B => Megadrive C
I’ve mapped Volume UP to button A simply because it physically feels in the right place. The CDTV pad isn’t super-responsive, so trying to use for serious gameplay is an exercise in frustration, but it does work, and the controllers are readily available from AmigaKit.
The new core can be found here: fpgagen_chameleon_20180305.zip
Well it’s been nearly a year since my last post, and in the break between Christmas and New Year I once again have a few spare hours to tinker with projects. I’ve used a few of these to get the MIST Sega Genesis / Megadrive core working, at last, on the Chameleon 64.
In the Christmas break I’ve finally found a little bit of time to tinker with FPGAs again. Not enough to tackle anything major, but I’ve done a little bit of bug fixing on the OneChipMSX core.
Or so I thought. Continue reading
…or, perhaps I should say eventually.
In case you wondered why things are so quiet here at the moment, it’s because a week and a half a go I finally took possession of my new home. It’s going to be several weeks before I have internet access, and no doubt several more before I can turn my attention from decorating to geekiness!
Rest assured that I will eventually get back to tinkering with FPGAs and all things retro.
880 Gamer Issue 7 is out!
Another beautifully produced edition of the PDF Magazine 880 Gamer is out now, complete with coverdisk in ADF format!
This and previous issues can be found at: http://www.users.on.net/~stanners/
One of the challenges I’ve faced in the ZPUDemos project is keeping the various targets up to date. When I add a peripheral to – for example – the SDBootstrap SOC, I have to modify each and every target’s project file to match, and it’s very easy to lose track of which ones have been updated and which ones haven’t.
ZPUDemos currently supports no fewer than eight different target boards, and contains eleven different projects – that’s a lot of project files!
In an attempt to make this more manageable, I’ve written some scripts to generate project files automatically, from a list of RTL files, and a board-specific template file. I’ve taken the opportunity to clean up the whole project, too, so the directory structure is more logical. Continue reading