PDA

View Full Version : PACE Video Controller


tcdev
17th September 2008, 04:16 PM
Phew! It's taken a bit longer and revealed a lot more subtle bugs in the bitmap and tilemap controllers than I suspected, but I'm fairly confident the new video controller is all-but-complete. :cool:

The guinea pigs have been Space Invaders, Galaxian and TRS-80. The former 2 now display bitmaps and tilemaps (respectively) flawlessly in x1 and x2 scale modes. The TRS-80 I am yet to test in x2 mode, but displays flawlessly (AFAICT) in x1 mode. :)

Turns out that the "crappy" graphics on the TRS-80 and the x1 modes of a lot of the other games wasn't in fact timing-related at all but rather due to the aforementioned subtle bugs in the various bitmap and tilemap controllers. It took a few nights of simulating to weed out the problems - complicated by the fact that modifications to both the video controller and the bit/tile-map controllers, which were both under development, affected one-another. :(

FYI the platform must now specify the pipeline delay introduced by the bit/tile-map controllers as they render the graphics - and each controller in the same project must have the same delay. The delay, incidentally, is independent of the video scaling factor.

I've also tested 1024x768, 800x600, 640x480 VGA modes and 720x288 CVBS mode.

Video scaling is still a compile-time option atm, but I'll be looking to move the constants into registers at some later date.

Right now I'm torn between bringing every project up-to-date with the new video controller, or tackling the sprite problem. There's also the matter of fixing the scrolling starfield in Galaxian etc as well. I'll probably update every project that doesn't use sprites - mostly the micro projects - then start re-designing the sprite engine from scratch.

tcdev
18th September 2008, 08:58 AM
Found a couple of problems with the TRS-80 display... but it's in the tilemap controller.

Fixed the problem with the RH character column.

There's a problem in 1024x768 x2 mode because there's no horizontal borders... will look at that ASAP...


This pipelined video stuff is bloody tricky... :(

tcdev
22nd September 2008, 05:11 PM
Grabbing 20 mins here and there when I can to continue PACE work...

The idea was to update Space Invaders on every target... just DE2 to test (Chris keeps forgetting to bring his board in) and RC-10 has no video for some unknown reason. :confused:

TRS-80 Models I & III look good on the P2, DE1 & DE2 targets. Need to test NB1 but not expecting any problems there. :)

Galaxian was looking good on P2, DE1 & DE2, but the P3M target still has corrupt video. Not sure why at this stage - P3M drives clock-enable to the video subsystem every 2nd clock because the PLL can't synthesize a 5M clock - but Space Invaders looks fine so it's a mystery atm... haven't looked into it in detail just yet.

Tonight I looked at getting my Apple II/II+ implementations running with the new video controller. Text mode looks good (except 1 line too low?) but I can't get the hires graphics mode to show up so it's still WIP atm.

Once Apple is sorted, I'll do Defender and Tutankham - two bitmap-only arcade games - then I'll start on the sprite re-write.

tcdev
23rd September 2008, 10:38 AM
Tested the TRS-80 Models I & III on the DE2 today - all OK.

Converted Tutankham and Defender to the new video controller. Tutankham also needed some clipping on the bitmap which is now done - looks 100%. Defender also looks good but there's a weird problem on the DE2 port (the only one I've tested so far) - slowdowns and "logic glitches" which I can't explain atm. That design was always a little dodgy with the 6809 core running off the negative edge and everything else running off the positive edge of the clock. Had to register the SRAM write signal as well... might leave it for another day atm...

I'm ready to dive into sprites when I next get the opportunity. That should take care of a lot of most of the remaining 'broken' projects in the repository.

Then I can finally look at porting more of the projects to the DE1. For the most part, that will involve reading ROMs from flash.