04 January 2023, 01:31 | #1 | |
Registered User
Join Date: Feb 2022
Location: St-Pierre-et-Miquelon (just below Newfoundland, Canada !), France
Posts: 11
|
Copperlist with dummy moves ?
Hi,
First of all : happy new year coding on amiga ! Well, I've built a copperlist looking like a "plasma" copperlist with a Wait for each line followed by 40 moves to change color 0. There are 200 lines in my copperlist. It works perfectly well. But now, I just want to change colors for about 50% of the 200 lines. The remaining 50% are not used. Of course, the 50% lines used change every vbl. I could built a new copperlist with only the lines i'm interested in... but for a lot of reasons I want to work with my "full" (i.e my 200 lines) copperlist (in fact, think of an "array" of 40 columns and 200 rows. Classic stuff) But I want also save dma cycles and don't waste cycles on lines i'm not modifying. So I tried to initialize my copperlist like this : After the Wait, instead of doing the 40 "move.w #$180, (a0)+, move.w #$0, (a0)+" I did this : "move.w #$0, (a0)+, move.w #$0, (a0)+, ..." (with a0 = copperlist) with the idea for the lines i'm only interesting in (at each vbl) to simply recreate the "usual" flow of 40 moves : "move.w #$180, (a0)+, move.w #$mycolor, (a0)+" But it doesn't work (i only tested on winuae) ! The copper doesn't seem to like dealing with a line having after the Wait, 80 words at $0 and the next line having the Wait followed by "normal" 40 : $180, $mycolor, $180, $mycolor, ... So my question, is there a easy way to deal with this situation ? by easy, i mean avoiding using Skip instruction or jumping to copper subroutines ? Just having kind of dummy moves after the Wait in my "array" ? To illustrate what I would like to do is to initialize my copperlist like this : $2c41, $fffe, $0, $0, $0, $0, $0, $0, ... $2d41, $fffe, $0, $0, $0, $0, $0, $0, ... $2e41, $fffe, $0, $0, $0, $0, $0, $0, ... ... $ffff, $fffe and for example filling only the second line like this : $2c41, $fffe, $0, $0, $0, $0, $0, $0, ... $2d41, $fffe, $180, $fff, $180, $fff, $180, $fff, ... $2e41, $fffe, $0, $0, $0, $0, $0, $0, ... ... $ffff, $fffe to be complete : i would like to "clear" at each vbl the lines I modified in the copperlist by using the dummy moves. And classically initialize 2 copperlists and swap them at each vbl : one displayed, one where lines previously used are cleared before modifying the lines i want to. Thanks in advance for your advices ! I didn't try : A skip followed by a (dummy) move. I'm not sure it could achieve what i want to do ? But i plan to try Quote:
|
|
04 January 2023, 03:48 | #2 |
Registered User
Join Date: Jun 2016
Location: europe
Posts: 1,039
|
Use $01fe (no-op) instead of $0000, e.g. $01fe,$0rgb.
|
04 January 2023, 16:54 | #3 |
Registered User
Join Date: Feb 2022
Location: St-Pierre-et-Miquelon (just below Newfoundland, Canada !), France
Posts: 11
|
|
05 January 2023, 21:25 | #4 |
German Translator
Join Date: Aug 2018
Location: Drübeck / Germany
Age: 49
Posts: 183
|
if you want ignore or clear lines with dummy-moves in your plasma maybe it is also
possible to leave this line as it is and only set the horizontal wait position from this lines outside from your visible screen or on the end of the line like $yye1,$fffe. The wait in the next line will be executed and changes the colors visible. $2ce1, $fffe, $0, $0, $0, $0, $0, $0, ... $2d41, $fffe, $180, $fff, $180, $fff, $180, $fff, ... $2ee1, $fffe, $0, $0, $0, $0, $0, $0, ... |
06 January 2023, 00:28 | #5 | |
Registered User
Join Date: Feb 2022
Location: St-Pierre-et-Miquelon (just below Newfoundland, Canada !), France
Posts: 11
|
Quote:
This is an extremely interesting idea ! I'll give a try ! It should work ! I keep you informed with a feedback. Thanks a lot. |
|
07 February 2023, 03:25 | #6 |
Registered User
Join Date: Feb 2022
Location: St-Pierre-et-Miquelon (just below Newfoundland, Canada !), France
Posts: 11
|
Hi,
Quick feedback : the $01fe (no-op) solution works perfectly ! I just need now to see how copper dma cycles is doing. The goal was to reduce copper dma cycle bandwith by using the no-op $01fe instead of using $180 for example, by substituting something like : $2d41, $fffe, $180, $0, $180, $0, $180, $fff, ... by $2d41, $fffe, $01fe, $0, $01fe, $0, $180, $fff, ... @Rock'n Roll : it didn't work as expected so I kept with the $01fe solution but thanks for your answer ! |
07 February 2023, 09:57 | #7 |
Defendit numerus
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 53
Posts: 4,468
|
This does not reduce the DMA bandwidth, the data is actually fetched by the Copper.
|
12 February 2023, 21:40 | #8 |
Moderator
Join Date: Nov 2004
Location: Eksjö / Sweden
Posts: 5,602
|
Yes, the CNOOP does not access the custom registers at all, but the words themselves must still be fetched.
If you want to keep the structure but save bandwidth, you can start an empty line with a write to COPLCH/L and COPJMP. The wait is not necessary. |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Copperlist explanation | Clydos | Coders. General | 37 | 06 July 2023 20:56 |
FS-UAE for a dummy | alphagemini | support.FS-UAE | 3 | 16 October 2017 20:07 |
Cyberstorm Mk-III 060 - 060, 040 dummy libs | Akiko | support.Apps | 1 | 07 February 2011 20:30 |
Modifying a copperlist | CmdrVimes | Coders. General | 5 | 06 September 2010 12:08 |
Setting up a copperlist | oRBIT | Coders. General | 5 | 08 April 2010 14:18 |
|
|