FPGA Creativision / Tech Docs
Posted: Fri Nov 29, 2013 12:40 am
As it says on the tin, does a comprehensive technical document exist? I did a fairly through search of the forums and the internet in general and cannot find a document about the guts of the system. Be this as it may, I think I have reverse engineered most of how it works from a disassembly of the BIOS I made.
From the BIOS I have deduced how the SN76489 is connected, and how the controllers and keypads are read. I compiled a quickie document on how everything is connected up in the console so I have a base to work from. I can post this if anyone wants to see it.
This is for an FPGA Creativision I am going to attempt to make. I don't expect this to take more than a day or three, since I already have 6502, TMS9918a, and SN76489 cores already from the other systems I have done. Just need to drop in the unique things (6821, controllers) and it should be good to go.
It will be NTSC for now since I'm in the US and don't have an easy way to display PAL video yet; hope the games won't mind. (They should be 20% faster than normal, but otherwise I suspect they will work, since I doubt they used much of any cycle timed code and the '9918a lets you read/write during rendering).
This will be my 15th or 16th system I have implemented on an FPGA, so I am not expecting too much difficulty. I just am a bit unsure around a few minor things, like what bits 4, 5, 6, and 7 do on PORTA (1000h). I know at least a few of these go to the tape player add-on.
The other minor issue I am unsure about is the cartridge mapping. I cheated a bit and looked at the source code to Funnymu to see how the ROMs map into the address space. It doesn't look too complicated but I might have a few questions on how to streamline this maybe.
Checking out the controllers was kind of interesting. I found a few pictures of the PCB on the internet and some internals of the controllers and determined it is similar to the Intellivision in that pressing a button causes 1 or 2 output lines to be pulled low, instead of there being a 1:1 button mapping. Upon inspection this is indeed what's going on. Each key has a unique 2 bit code, while the controllers are just 1 bit per direction (to allow diagonals and the fire button).
As mentioned previously, I disassembled and did some commenting on the BIOS to see how it was interfacing with the 6821. They use the CB1 and CB2 to interface with the sound chip which I thought was rather clever; The keypads/controllers are simply read in the usual way with 4 column outputs and 8 data inputs. IRQ must not be used, since it points to the reset vector, and NMI is connected to the TMS9918a.
I found a memory map which seems to be pretty decent, and from the PCB scan I saw, there's only really three TTL chips on there doing any kind of mapping so it cannot be very complicated.
As for the sound chip, it's clocked from the 2MHz CPU clock, and not the VDP clock I take it.
From the BIOS I have deduced how the SN76489 is connected, and how the controllers and keypads are read. I compiled a quickie document on how everything is connected up in the console so I have a base to work from. I can post this if anyone wants to see it.
This is for an FPGA Creativision I am going to attempt to make. I don't expect this to take more than a day or three, since I already have 6502, TMS9918a, and SN76489 cores already from the other systems I have done. Just need to drop in the unique things (6821, controllers) and it should be good to go.
It will be NTSC for now since I'm in the US and don't have an easy way to display PAL video yet; hope the games won't mind. (They should be 20% faster than normal, but otherwise I suspect they will work, since I doubt they used much of any cycle timed code and the '9918a lets you read/write during rendering).
This will be my 15th or 16th system I have implemented on an FPGA, so I am not expecting too much difficulty. I just am a bit unsure around a few minor things, like what bits 4, 5, 6, and 7 do on PORTA (1000h). I know at least a few of these go to the tape player add-on.
The other minor issue I am unsure about is the cartridge mapping. I cheated a bit and looked at the source code to Funnymu to see how the ROMs map into the address space. It doesn't look too complicated but I might have a few questions on how to streamline this maybe.
Checking out the controllers was kind of interesting. I found a few pictures of the PCB on the internet and some internals of the controllers and determined it is similar to the Intellivision in that pressing a button causes 1 or 2 output lines to be pulled low, instead of there being a 1:1 button mapping. Upon inspection this is indeed what's going on. Each key has a unique 2 bit code, while the controllers are just 1 bit per direction (to allow diagonals and the fire button).
As mentioned previously, I disassembled and did some commenting on the BIOS to see how it was interfacing with the 6821. They use the CB1 and CB2 to interface with the sound chip which I thought was rather clever; The keypads/controllers are simply read in the usual way with 4 column outputs and 8 data inputs. IRQ must not be used, since it points to the reset vector, and NMI is connected to the TMS9918a.
I found a memory map which seems to be pretty decent, and from the PCB scan I saw, there's only really three TTL chips on there doing any kind of mapping so it cannot be very complicated.
As for the sound chip, it's clocked from the 2MHz CPU clock, and not the VDP clock I take it.