29 December 2007, 07:28 | #1 |
FPGAmiga rulez!
Join Date: Dec 2007
Location: South of France
Age: 50
Posts: 155
|
Question about AGA display data fetches
Hello,
I am actually working on the ECS/AGA DMA sequencer of Minimig. For OCS/ECS, we all know the relationship between DDFSRT and DIWSTRT register : - For low-res, the fetches must start 8.5 color clock cycles before the display. - For hi-res, the fetches must start 4.5 color clock cycles before the display. This is clearly explained in the HRM. (See the two nice attachements I have made) What about AGA ? Since the hi-res and super hi-res also support 8 bitplanes, the fetches must always start 8.5 cycles before the display. The AGA fetches are not faster, they are just wider (up to 64 bits per fetch). I guess DDFSTRT = $003C with DIWSTRT = $2C81 does not work in hi-res if # of planes > 4, right ? Regards, Frederic |
29 December 2007, 12:33 | #2 | |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,568
|
DIWSTRT/DIWSTOP has nothing to do with display DMA processing.
DDFSTRT can have "illegal" values and display still looks normal except one small detail, in some cases offset gets added to bitplane delays. (search "delayoffset" in uae sources. undocumented feature. Game 'The New Zealand Story' is good example) More undocumented stuff: DDFSTRT 0x18 is real limit but DDFSTOP can be larger than number of clocks per line: OCS = display works normally, ECS/AGA = DDFSTRT is ignored, display dma always starts at 0x18. Quote:
All OCS/ECS mode on AGA hardware have exact same cycle diagrams. (as long as FMODE=0) |
|
29 December 2007, 15:48 | #3 | |||
FPGAmiga rulez!
Join Date: Dec 2007
Location: South of France
Age: 50
Posts: 155
|
Quote:
Quote:
The logic is : IF (ddf_enable AND ddf_limit) = 1 THEN use bitlplane DMAs. Quote:
For example, the DMA bitplane chronogram for FMODE = 3 in lo-res should be: Plane #8 \ Plane #4 | Plane #6 | Plane #2 | 64-pixel fetch Plane #7 | Plane #3 | Plane #5 | Plane #1 / 24 cycles available Plane #8 Plane #4 Plane #6 Plane #2 Plane #7 Plane #3 Plane #5 Plane #1 ... etc To retrieve 320 lo-res pixel you need 5 fetches instead of 20. Regards, Frederic |
|||
29 December 2007, 16:23 | #4 | ||
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,568
|
Quote:
Quote:
"ddf_enable" never gets turned off because hpos == DDFSTOP does not happen and there is another condition that inhibits display DMA cycles unless hpos >= 0x18. OCS probably have "hard stop" at the end of horizontal line that clears "ddf_enable" but it was removed from ECS because it introduced programmable start/stop positions. (same end result anyway) btw, it is possible to set DDFSTRT and DDFSTOP so that display gets totally corrupted. I don't have exact values but DDFSTOP needed to be very close to last cycle and DDFSTRT needed to be "non-aligned". Tested on A1200 PAL mode but probably does the same on ECS too. |
||
29 December 2007, 18:05 | #5 |
Registered User
Join Date: Dec 2007
Location: Dark Kingdom
Posts: 213
|
Many years ago I did many experiments with settings of these registers (in particular I wanted to avoid to set negative values in BPLxMOD when unnecessary). From the equations I derived, it seems to me that:
1) For fmode==0 (or OCS and ECS) is of course as you said, and for SH-res fetches have to start 2.5 cycles before DIWSTRT 2) for fmode==1 or 2, for lo-res and hi-res fetches "delay" is 8.5, for sh-res is 4.5 3) for fmode==3 for all res fetches delay is 8.5 hope this matches your test and is of any help! Last edited by TheDarkCoder; 29 December 2007 at 18:11. Reason: bad english |
29 December 2007, 19:05 | #6 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,568
|
|
30 December 2007, 01:55 | #7 |
FPGAmiga rulez!
Join Date: Dec 2007
Location: South of France
Age: 50
Posts: 155
|
Thank you guys,
this is very useful. Obviously, my DMA bitplane microsequencer will have 5 "programs": - 2-fetch sequence (SHRES FMode = 0) - 4-fetch sequence (HRES FMode = 0, SHRES FMode = 1) - 8-fetch sequence (LRES FMode = 0, HRES FMode = 1, SHRES, FMode = 3) - 8-fetch sequence followed by 8 free cycles (LRES FMode = 1, HRES FMode = 3) - 8-fetch sequence followed by 24 free cycles (LRES FMode = 3) Regards, Frederic |
30 December 2007, 16:40 | #8 |
Registered User
Join Date: Dec 2007
Location: Dark Kingdom
Posts: 213
|
Yep i think those 5 "programs" covers all possible combination fmode/res
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
How to do AGA copperbars in Blitz using display library | Coagulus | Coders. Blitz Basic | 9 | 25 January 2016 15:53 |
Trouble decrunching specific data in Shadow Fighter AGA | MethodGit | Coders. General | 6 | 23 November 2010 03:07 |
Silly OCS/ECS/AGA display question | Fingerlickin_B | support.Hardware | 6 | 11 September 2008 11:35 |
Newbie here, question about cd32 display. | saturndual32 | New to Emulation or Amiga scene | 7 | 26 March 2005 00:29 |
AGA display | Dela | support.WinUAE | 4 | 06 October 2002 21:59 |
|
|