After ordering the wrong buffer chip for my Logic Cube I started poking around and managed to get a commercial rom to run. It seems my issues are a result of timing problems with my new memory mapping module. The attempt shown below locked up at the title screen but I have since managed to start the demo video that follows. Unfortunately since I haven’t implemented sprites its less of a video and more of a static background. Assuming the chip that came in today is the correct version I hope to be running on 32 channels and make more progress this weekend.
It’s been a little while since I’ve posted any progress on any of my projects. I’ve been recently employed as a full time design engineer and have finally transitioned back into a schedule that allows me to work on some of my own interests again. I’ve started up working on my NES emulator and had my first success loading a cartridge from an SD Card. I’m stuck again as the emulator locks up when after it’s partially rendered the screen. Debugging has gotten more difficult as time goes on as it now takes 15-20 minutes to compile the design and only having 16 channels on my logic analyzer means recompiling more frequently to figure out what’s gone wrong. I have parts on order to perform an upgrade to 32 channels but until then I expect progress will be a bit slow. I’m hoping to have the parts installed and be able to read the entire address and data buses along with any status bits I need by the end of the week.
I’ve managed to get the nestest rom to run on my emulator. I’m still nowhere near complete but this is a good first step. Video is working, at least without sprites. Control input works, although there’s a bug floating around in there somewhere I’m currently working on getting the APU ( Audio Processing Unit) up and running. Below is a video of my emulator passing all standard opcode tests.
There’s an amazing project known as Visual 6502. They have created a transistor level net-list of the 6502 processor which can in turn be converted into synthesizable VHDL. As nice as this is, I’ve decided that would be far too easy and am going to go ahead and emulate the 6502 core before I fool around with a proper simulation. I’ve already poured through the available documents and laid out a framework for my emulation. The capture below is the first result from that process. That is the emulator executing the opcode 0x01 (Inderect X indexed OR with the accumulator) The A register isn’t actually visable but the processor is successfully loading the data from my simulated ROM and jumping to the correct memory locations based on the code I’ve provided. There is still a long way to go before the process is complete, but it is well on its way.
I was hoping that going back to school would free up some time to continue working on projects and add to the site, however that has not been the case. Things have gotten actually gotten more hectic. I’ve got my normal school workload with senior design thrown on top. Speaking of which, my senior design project is creating an entry to AUVSI’s Student Unmanned Ariel Systems competition (SUAS). I am a part of the communications team which is working to create multiple communication channels between the base station and aircraft so that it is capable of flying autonomously and reporting back image data. The details of this project will be updated on a sub-domain linked below.
Since I haven’t had time to fully invest into new projects I’m going to start posting some details about a previous project of mine; a Gameboy emulator. This is an software emulator of the Gameboy system written in java for the android platform. This was the precursor to the FPGA NES that I hope to start working on again sometime soon. For now though, the Gameboy emulator (which I’m tentatively calling GameDroid) is in a fairly stable, fully working state. It has been able to play most games I’ve thrown at it with full controls, save functionality, and sound. There are some performance and timing issues that need to be fixed and I’m intending to rewrite most of the engine to work those out.