22 October 2019, 21:12 | #21 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,567
|
I don't know exactly how it works but there are lots of limitations because both Denise and Paula is horizontally synced using strobe signal only (first refresh slot).
Setting Agnus horizontal counter only affects Agnus. Denise and Paula won't notice it and CPU write to strobe register is only seen by Denise and Paula, it won't affect Agnus. It is even more difficult with Paula because audio DMA slots are requested by Paula via DMAL line that transfers one bit per cycle (total two bits per disk/audio dma slot), initialized by horizontal strobe. It is also possible Agnus DMA accesses are ignored by Paula if they don't use correct cycles (relative to last strobe) I guess it should be possible to "stretch" horizontal line a bit by moving horizontal counter backwards slightly (one or more times) but it probably is quite tricky without side-effects. Memory refresh is also hardwired to hsync so too long horizontal line can cause random chip memory corruption. (I haven't checked any memory chip specs, don't know when horizontal length becomes too long) Vsync is simple, nothing important depends on it (mainly vblank interrupt and copper restart. Note that vblank is triggered by Paula when it sees matching strobe, it is not generated by Agnus). Almost everything depends on hsync. |
22 October 2019, 23:00 | #22 | ||
Defendit numerus
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 54
Posts: 4,490
|
Quote:
Quote:
BUT an idea that has always occurred to me is to invert the BPL and SPR slots. Better if I explain it with some ASCII art : Code:
|shift| 0-----------------------------------319 $14-$1b $34-$3b $54-$5b $74-$7b $94-$9b $b4-$bb $14($15) $de $e0 $e1 $e2 $0 | $bf/$c1 $c3/$c5 $c7/$c9 $cb/$cd $cf/$d1 $d3/$d5 $d7/$d9 $db/$dd |resync lost oddcopper refresh copper |_ s0 s1 s2 s3 s4 s5 s6 s7 - DDFSTRT=$14, 6x 64bit fetches (384 pixels, 320+full AGA shift) - SPR DMAs totally denied by BPL - at $bc or $be VHPOS reset to $14 - SPR DMAs start (background jingle: "Only Amiga...") and fills SPRxDATx - all 16 DMAs 64 bits satisfied before the end of the video line - at the new $34 reset to right $de value, line end naturally, CCK=227 On next line you have the SPRs at video on x-SPRxPOS. Yes, one line after but you know it And a great x-scrolling game at 320x256x8 with 8x 64px sprites Fantasy Island? Last edited by ross; 23 October 2019 at 08:47. Reason: fixed a cycle |
||
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
B channel DMA enabled during line mode? | mc6809e | Coders. Asm / Hardware | 20 | 14 October 2014 22:29 |
Keep Active control panel "Line Mode" and "Interlaced Line Mode" | Zilog | request.UAE Wishlist | 4 | 02 August 2014 23:08 |
Disable of Scanlines in Interlace mode | Retro-Nerd | request.UAE Wishlist | 5 | 11 December 2012 13:26 |
Stop Interlace in AGA mode | andy_blah | support.WinUAE | 135 | 21 August 2008 19:43 |
Is there a way to "fix" an older g-rex1200 to have 2 DMA slots? | keropi | support.Hardware | 12 | 24 May 2006 18:03 |
|
|