I have the basics down - the program will load, load the WAD file, render the player views. Controls are crude, but I was able to map some of the keyboard commands to the analog joystick and pushbuttons to get things tested. I have a Doom on FPGA video up on Youtube.
Some next steps:
- Improve performance. We're getting only about 1 FPS right now, and most of that is due to memory operations being so expensive. I will work on more advanced things like cache memory in the core and pipelining, but for now I think I'm going to look at ways to speed up the CPU clock. Right now it's running at 50 MHz, and with some tuning I should be able to improve that substantially.
- Add sound. I believe that the raw sound in the WAD files is actually MIDI, which is ideal. I can either push that out a serial port to a MIDI interface, or I can build a peripheral that will interface MIDI with an external codec.
- Add keyboard. I have a PS/2 keyboard IP core I can add, I just need to integrate it into the FPGA design and decide how I want to pass events to the CPU. This will allow me to drop the hack I currently have for IO.
- Add network. This might be a bit of a stretch. I'd like to get the integrated ethernet PHY working on the DE2i-150 board, but for this project I might be better off using one of the WizNet chips and offload the majority of the TCP stack work. Making newlib library stubs for the TCP stack stuff could work, but will likely require more work on the library and hardware side. Specifically, I think it will require at minimum that I implement a working timer system as well as interrupt handler. With those two, I have the basics that would allow me to handle external events without a polling loop explicitly in the Doom code.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.