Date : Wed, 14 Aug 2002 18:05:47 +1200
From : Michael Foot <mjfoot@...>
Subject: Firetrack emulation again
With my emulator I am still having problems with FireTrack, although I appear
to be very close.
My CRTC and video emulation can handle pretty much everything including Rich's
scrolling demo program, Uridium and Revs, but I still cannot get FireTrack
correct unless I fudge things. There are 2 main issues that I have.
1) FireTrack is setting the CRTC display enabled register (R8 bits 4,5) to
completely disable output to the screen for all but 90 lines. This means
I'm only getting the top half of the screen displayed.
The following trace was output during the gameplay in FireTrack. The first
number is my internal line counter. This is zero after the vsync flyback.
The other numbers are the CRTC registers from 0 - 13. The number in brackets
indicated which register is currently being written to.
All values are hexidecimal. VS indicates when a vertical sync has finished
its flyback and VC=0 indicates when the vertical character counter+scanline
counter = vertical total+adjust. ie. it's reset. I did not output what line
it was reset on.
VS
0000 007F 000E 0062 0028 0025 (0000) 001A 001F 00F0 0007 0020 0008 000E 00F0
0023 007F 000E 0062 0028 0025 0000 001A 001F (00C0) 0007 0020 0008 000E 00F0
VC=0
007D 007F 000E 0062 0028 0025 0000 001A 001F 00C0 (000F) 0020 0008 000E 00F0
007F 007F 000E 0062 0028 0025 0000 001A 001F (00F0) 000F 0020 0008 000E 00F0
007F 007F 000E 0062 0028 0025 0000 001A 001F 00F0 (000F) 0020 0008 000E 00F0
0085 007F 000E 0062 0028 0025 0000 001A 001F 00F0 (0007) 0020 0008 000E 00F0
VS
0000 007F 000E 0062 0028 0025 (0001) 001A 001F 00F0 0007 0020 0008 000E 00F0
0023 007F 000E 0062 0028 0025 0001 001A 001F (00C0) 0007 0020 0008 000E 00F0
VC=0
007D 007F 000E 0062 0028 0025 0001 001A 001F 00C0 (000E) 0020 0008 000E 00F0
007F 007F 000E 0062 0028 0025 0001 001A 001F (00F0) 000E 0020 0008 000E 00F0
007F 007F 000E 0062 0028 0025 0001 001A 001F 00F0 (000E) 0020 0008 000E 00F0
0085 007F 000E 0062 0028 0025 0001 001A 001F 00F0 (0007) 0020 0008 000E 00F0
VS
As you see, the display enable (R8) is toggled on at line 23h (value C0h)
and off at line 7Dh (value F0h).
2) At lines 7Dh - 85h the scan lines per charcter row register (R9) is being
set to 15. The problem this is causing is that my internal line counter
keeps incrementing for all lines, but only the first 8 in each character
row is drawn and the rest are blanked out. If I only increment the line counter
for the first 8 scanlines in each character, I get FireTrack looking correct,
but then modes 3 and 6 don't draw their gap lines.
Any ideas? Has anyone else experienced these values or problems?
Thanks,
Mike.
--
Michael Foot <mjfoot(at)paradise(dot)net(dot)nz> *
http://homepages.paradise.net.nz/mjfoot/
* Replace letters between () with @ and . when replying