Found a few minutes today to have a look at the cartridge system. As it was implemented the vic didn’t start the rom when doing a reset. As found in the documentation linked in the previous post the vic expects some magic bytes at a specific address to autostart a cartridge:
1 2 3 4 5 6 7 8 9 10 11 12 |
$A000 Low-byte of a 16-bit "hard start" address (to begin at) $A001 High-byte of the 16-bit "hard start" address $A002 Low-byte of 16-bit "warm start" address (restore key) $A003 High-byte of 16-bit "warm start" address Address______Hex value_____Decimal value____ASCII values $A004 $41 65 Capital "A" $A005 $30 48 Digit "zero" $A006 $C3 195 Reverse "C" character $A007 $C2 194 Reverse "B" character $A008 $CD 205 Reverse "M" character |
It looks like that those dumped roms (.prg) have two extra bytes in the beginning. Shifting the access to those roms two bytes up made it work:
As usual the source code can be found in my github repository.
Update 07.12.2014
Looks like that there’re different dumps available. Found a side with .a0 cartridges which doesn’t need the shift.
With the two extra bytes the rom should actually ve loadable as a prg. These two bytes contain the target address which should be a000 for a cartridge.
Figured that later on. It seems to be that there are cartridge ROMs with load address and without. The current implementation expects .crt ROMs without load address.
I’ll have a look at the TOSEC crt dumps to see what format they are and will adapt the vic to it.