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.
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.