English Amiga Board

English Amiga Board (http://eab.abime.net/index.php)
-   Coders. Asm / Hardware (http://eab.abime.net/forumdisplay.php?f=112)
-   -   Interlace mode: More line, more dma slots? (http://eab.abime.net/showthread.php?t=99167)

Toni Wilen 22 October 2019 21:12

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.

ross 22 October 2019 23:00

Quote:

Originally Posted by Toni Wilen (Post 1353418)
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)

Ok, better not touch audio DMA slots.

Quote:

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)
Ok, no stretching..


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

- Chipset AGA, FMODE=x4, lowres
- 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 :D

Fantasy Island?


All times are GMT +2. The time now is 12:47.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2020, vBulletin Solutions Inc.

Page generated in 0.06510 seconds with 11 queries