Current Progress & Future PLans

A project log for TeensyBoy

The goal of this project is to advance my understanding of emulation whilst seeing how far I can push the new Teensy 3.6 and the Arduino IDE

ChaosChrisChaosChris 03/28/2017 at 12:480 Comments

So whilst I am awaiting the first real PCB revision from OSH Park I thought I would take the time to elaborate a little on how the project is going & speculate on what features the end result might have...

How's it going?

Not to bad really, emulation speed now peaks at about 5.5 FPS this was achieved by switching out the digitalWriteFast calls with direct port manipulation this has allowed ~1us random read and write SRAM operations and ~800ns sequential reads and writes. The SRAM is capable of much fast though at ~20ns for both reads and writes. The limiting factor seems to be the number of port operations that need to be done to to achieve either a read or a write. I'm hoping to reduce this number by shuffling the pins around to allow more of the address and data lines to share common ports.

ROM's now start and play correctly, well that's a bit of an exaggeration I've only actually testing Mario Kart successfully I have also tried Pokemon emerald but that ROM gets the emulated CPU stuck in a loop for some reason? Randomly reading bytes from a file on an SD card is proving painfully slow and is crippling emulation speed so some sort of flash buffer seems to be in order something along the lines of:

1) Select the game.

2) Copy game to flash

3) Start emulation from the flash not the SD Card.

User buttons are now implemented and working correctly I was able to navigate the menus in Mario Kart without issue. Unfortunately I cant continue the sound implementation until the new PCB's turn up.

Future features:

I would really like add gameboy colour compatibility as in my mind part for what makes a gameboy advance a gameboy advance is the backward compatibility with the gameboy color games.

I suspect I will run out of IO before hand but I would like add a cartridge connector so the emulator can play games directly from original cartridges this also has the nice benefit of allowing the emulator to copy original cartridges to the SD Cart to play later.

Cheat menu in the on screen display maybe?

If anyone has any suggestions on features please feel free to leave a comment.