Project Status

From NerdConsole
Jump to navigationJump to search

The NerdConsole project is a monstrously large hobby project being done entirely by one person. That means a lot to do, a lot to learn, and a lot of things to make work together. It also means that at any given time I may be working on any number of different parts of the project. To help make it as straightforward as possible to figure out what's going on, this page presents a high level list of activities.

PPU Software

  • (In Progress) Rewriting the PPU software from scratch. Previously the PPU was written in Java, but I kept running into issues caused by the language design. I'm rewriting it in C++ so I have access to unsigned integer types and proper libraries for graphics and GPIO.
    • Creating unions to allow for bytewise setting of complex register and table types.
    • Writing tests to make sure they work properly.

PCB Work

  • Need to redesign the Video Logic Level board to put the pins in the new order. This was the realization that GPIO pins are not logically ordered in a sane way that lines up with the physical layout and the way I was doing this was going to result in massively inefficient value loading that required a ton of bit shifting and masking.
  • Need to come up with a solution for YM-3812 FM Synthesizer chips being either expensive or fake (or both). My current theory is a software based approach that runs on a RP2040 (Raspberry Pi Pico) and emulates the YM-3812. The hope is that the emulated audio solution is as close to a drop in replacement as possible, but I'm not guessing the standard YM-2014 DAC will work so another solution will probably be required. This change requires spatial changes due to differences in DAC, amplification, and chip size difference between Pi Pico and YM-3812.
  • Need to redesign the Main Board since so many things have changed in the plan since the last time I ordered boards. Prototype 2 is an almost complete redesign.
    • The Raspberry Pi was changed to be a full sized Raspberry Pi 4 instead of the smaller Raspberry Pi 3A+.
    • The cartridge connector was changed for one with a smaller pin pitch (2.54mm instead of 3.96mm) to make inserting and removing cartridges easier. This obviously changed the entire middle of the board.
    • User Port support was removed entirely. This means the removal of the VIA chip and several supporting chips as well as expansion headers and the DB-25 connector.
    • Optional extra controller ports are now supported (to better use the bus lanes available on the controller buffer). This means additional connectors need to be available to support that.

3D Modelling

  • Need to design several case parts. These are fairly self explanatory but also depend on how various PCBs end up looking.
    • Main Case
      • Bottom
      • Top
      • Cartridge Guide
      • Switch and Button Adapters
      • Video Board Supports
    • Cartridge Case
      • Bottom
      • Top
    • Extra Controllers Breakout
      • Bottom
      • Top

Other Software

NerdSembler

  • I hope to one day be able to get my brain around making an assembler for the 65xx family of CPUs. I'd already written the lexer and part of the parser when I ran into difficulties with parsing complex expressions that would be very handy to support.

Graphics Tiles

  • I have written a tool that uses standard .png files to produce binary graphical tile data. This tool will need to be revisited to support other binary representations and to have better documentation.