Well, awhile back I bought this very strange board off of ebay. It's a clone of Vs. SMB. This in and of itself isn't terribly interesting. What is, is that it does not use the conventional CPU/PPU combo! No sir, they recreated the CPU and PPU functionality in TTL logic! There's a stock 6502 now vs. the RP2A03, and the PPU is made up mainly of TTL logic with a small PLD thrown in and a few PALs for the X and Y counting.
It appears to have been designed some time around 1986 when Vs. SMB came out. The chip dates are from 1985 and 1986. The NES audio is done with a Z80 *emulating* the APU registers, and uses two SN76489's. This sounds as amusing as you can imagine it does. The quality of the emulation is very poor and hilarious, but I think it could've been done much better. Pitch sweeps are mainly what's totally hosed. You can hear this in the youtube video (below).
Tile rendering is done very similar to how a real PPU performs it, just with all TTL logic. X scrolling is implemented, but Y scroll isn't. Sprite 0 hit is not implemented either, and goes off after the 4th tile row is rendered, which is used to split the screen for the status/score bar in the game. They even implemented the same attribute system.
Sprites are a giant lol and extremely interesting- They use frame buffers! There's two 256*256 pixel frame buffers. One is loaded with sprites while the other is being displayed. It takes the hardware two scanlines to load a single sprite into the buffer, and they seem to load one every 4 scanlines, so it takes 256 scanlines to render all 64 sprites to the buffer. This means sprites lag tiles 1 frame but this isn't terribly noticeable.
Timing is pretty far off from a real system. It runs at 16MHz and divides this by 3 to get a 5.33MHz pixel clock which is really close to the native 5.36MHz. There's 336 cycles per scanline and 280 scanlines per frame, which gives around a 56Hz frame rate. The CPU runs at 2MHz. Of course this isn't a big deal for this particular game.
When the 6502 writes to an audio register address (4000-400f, 4010-4015 are not implemented) it halts the 6502, the Z80 reads which address and the data written, then starts the 6502 back up. This way it does not miss multiple consecutive audio writes. Also related, sprite DMA is not implemented, and the game as to bang out data into 2004 manually. This might be why vblank is extended so much (18 extra vblank lines).
That's about it, I have produced a complete schematic of the PCB and a video showing the board running and a detailed look at how it works on the schematic. Enjoy!
youtube video:
https://youtu.be/g8gZT1F9UkE
schematic:
http://blog.kevtris.org/blogfiles/vssmbbootleg.PDF
It appears to have been designed some time around 1986 when Vs. SMB came out. The chip dates are from 1985 and 1986. The NES audio is done with a Z80 *emulating* the APU registers, and uses two SN76489's. This sounds as amusing as you can imagine it does. The quality of the emulation is very poor and hilarious, but I think it could've been done much better. Pitch sweeps are mainly what's totally hosed. You can hear this in the youtube video (below).
Tile rendering is done very similar to how a real PPU performs it, just with all TTL logic. X scrolling is implemented, but Y scroll isn't. Sprite 0 hit is not implemented either, and goes off after the 4th tile row is rendered, which is used to split the screen for the status/score bar in the game. They even implemented the same attribute system.
Sprites are a giant lol and extremely interesting- They use frame buffers! There's two 256*256 pixel frame buffers. One is loaded with sprites while the other is being displayed. It takes the hardware two scanlines to load a single sprite into the buffer, and they seem to load one every 4 scanlines, so it takes 256 scanlines to render all 64 sprites to the buffer. This means sprites lag tiles 1 frame but this isn't terribly noticeable.
Timing is pretty far off from a real system. It runs at 16MHz and divides this by 3 to get a 5.33MHz pixel clock which is really close to the native 5.36MHz. There's 336 cycles per scanline and 280 scanlines per frame, which gives around a 56Hz frame rate. The CPU runs at 2MHz. Of course this isn't a big deal for this particular game.
When the 6502 writes to an audio register address (4000-400f, 4010-4015 are not implemented) it halts the 6502, the Z80 reads which address and the data written, then starts the 6502 back up. This way it does not miss multiple consecutive audio writes. Also related, sprite DMA is not implemented, and the game as to bang out data into 2004 manually. This might be why vblank is extended so much (18 extra vblank lines).
That's about it, I have produced a complete schematic of the PCB and a video showing the board running and a detailed look at how it works on the schematic. Enjoy!
youtube video:
https://youtu.be/g8gZT1F9UkE
schematic:
http://blog.kevtris.org/blogfiles/vssmbbootleg.PDF