View Single Post
Old 06 May 2011, 01:51   #52
Registered User
NovaCoder's Avatar
Join Date: Sep 2007
Location: Melbourne/Australia
Posts: 3,450
Originally Posted by Samurai_Crow View Post
How sad. The Amiga chipsets (that had sufficient Chip RAM) could always do hardware scrolling instead of blitter scrolling when written in native code. I suppose the Chip RAM limitation is rearing its ugly head again.


I'm not really using the custom chipset, only the copper is being used to flip the screens, it basically does everything on the CPU side in fastram and then blits the result straight to the screen (which is the same as all recent demos). I did look at using the blitter but found it to be very slow.

If you really want to know why full screen updates (eg scrolling) is slow it because the code has to do the following each frame:

· Write 64,000 8 bit palette index values into a hidden back chunky buffer
· Convert 64,000 8 bit palette index values to their 6 bit equivalents
· Convert 64,000 chunky pixels to their planar equivalents
· Flip the screen to show what we have done.

If the palette has also been updated, it has to perform the additional step of generating a new optimized 64 color palette from the original palette in real-time!

Considering all the little 030 is doing, I think it's doing an amazing job

It might be possible to make it faster with a half blitter/half CPU C2P conversion but that might cause other issues (eg audio contention due to CHIPRAM bandwidth limitations) and in any case the main performance bottleneck is the 8 bit to 6 bit conversion (which is already using hand coded assembler BTW) and not the C2P conversion.

Another possibility is to create a C2P routine that does the palette index conversion and the planar conversion at the same time but this is apparently not very practical (the speed of the planar conversion would be severely compromised as it does 32 bit writes).

Of course if we used the Indivision ECS’s directly chunky mode we could skip both the palette conversion and the C2P conversion so that’s probably the way to go as I can’t really do anything else with it.
NovaCoder is offline  
Page generated in 0.04003 seconds with 10 queries