GRG16: Update

Progress on the GRG16!

I decided the next project waypoint for me was going to be an emulator which loads a boot/BIOS rom which will display a 'No cart inserted' message on screen.  This seemed like a good target because it would mean integrating some kind of programming, defining graphics data and enough of the emulator machine itself to display it.

So far, progress has been slow but steady.  I have implemented a rudimentary assembler in Python which can also include raw hex.  The current version can parse/assemble asm code and also extract pixels and/or palettes from images (using the Pillow Python library).  I'm sure there are plenty of bugs still to find in it, but the file it produces passes the quick-scan-in-a-hex-editor test.

I've also made some progress on the emulator side.  In addition to the VPD I worked on previously, the CPU is pretty much implemented, and I've just implemented a BusController to move data between boot/BIOS rom, cartridge, RAM, etc.  It operates in its own little thread, controlled by setting 'registers'.  The part of the CPU which is missing is how to access those registers (and VPD registers) via address maps ($F000 and up).

I strongly suspect I'm going to have to redesign/rewrite a bunch of this stuff as I discover more flaws and bugs.  It will definitely need a bunch more rigorous testing before I do a proper release of it (if it ever gets that far).

At the minute, I see the possibility of making a separate opcode for reading/writing registers on other components, rather than just a memory map.  That should make the emulation quicker as well as increasing the available RAM.  I don't want to suffer from premature optimisation though. :)

So anyway, it seems to be going pretty well, at least as far as producing some kind of tech demo goes. 

Comments

Popular posts from this blog

Micro:Bit and SPI display

DCS World with TrackIR under Ubuntu

Cardboard Mock-up of USB Joystick