Close

Sprite bugs fixed

A project log for RC2016/99: TI-99/4A clone using TMS99105 CPU

Retrochallenge 2016/10 entry and winner: try to build a TI-99/4A clone using a TMS99105 CPU and an FPGA. In a month...

erik-piehlErik Piehl 11/30/2016 at 18:540 Comments

I did a small update, now the sprite bug should be gone, although that did reveal another potential bug as can be seen in the picture below: the lower right hand corner has a missing block for whatever reason... But at least there are no red sprites in there.

While fixing the VDP, I also added a few more extra read only registers. These are 16-bit registers available in the address space of the CPU. Mostly they are there for convenience to have direct VDP memory pointers, VGA scanning registers actually allow changing of VDP memory synchronised to the scan.

AddressComments
8880High byte returns contents of VDP register 0 (low byte zero)
8882High byte returns contents of VDP register 1 (low byte zero)
8884Pattern memory pointer in VDP memory (based on reg 2)
8886Color table pointer in VDP memory (based on reg 3)
8888Character table base address in VDP memory (based on reg 4)
888ASprite attribute table base in VDP memory (based on reg 5)
888CSprite pattern table base in VDP memory (based on reg 6)
888EHigh byte returns contents of VDP reg 7 (colours), low byte zero
8890Current value of VDP memory pointer
8892VGACol - current VGA scan column
8894VGARow - current VGA scan row
8896MSB: line buffer bank (toggles between 0 and 1, VGA refresh hardware reads from linebuffer indicated by this bit).
LSB: 1=when display blanking active
Bits 14..1: 0 when read

Discussions