English Amiga Board


Go Back   English Amiga Board > Coders > Coders. Asm / Hardware

 
 
Thread Tools
Old 04 January 2023, 01:31   #1
Sucrerat
Registered User
 
Sucrerat's Avatar
 
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:
Originally Posted by Toni Wilen View Post
"Skipped" instruction is still processed normally (DMA slot usage won't change, no DMA slots saved). Only difference is that if following instruction is MOVE, MOVE's register write becomes dummy write. If following instruction is WAIT or SKIP: it is executed normally.
Sucrerat is offline  
Old 04 January 2023, 03:48   #2
a/b
Registered User
 
Join Date: Jun 2016
Location: europe
Posts: 1,039
Use $01fe (no-op) instead of $0000, e.g. $01fe,$0rgb.
a/b is offline  
Old 04 January 2023, 16:54   #3
Sucrerat
Registered User
 
Sucrerat's Avatar
 
Join Date: Feb 2022
Location: St-Pierre-et-Miquelon (just below Newfoundland, Canada !), France
Posts: 11
Quote:
Originally Posted by a/b View Post
Use $01fe (no-op) instead of $0000, e.g. $01fe,$0rgb.
Thanks a lot a/b

I will try it this evening and see what happens !
Sucrerat is offline  
Old 05 January 2023, 21:25   #4
Rock'n Roll
German Translator
 
Rock'n Roll's Avatar
 
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, ...
Rock'n Roll is offline  
Old 06 January 2023, 00:28   #5
Sucrerat
Registered User
 
Sucrerat's Avatar
 
Join Date: Feb 2022
Location: St-Pierre-et-Miquelon (just below Newfoundland, Canada !), France
Posts: 11
Quote:
Originally Posted by Rock'n Roll View Post
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, ...
Hello Rock'n Roll,

This is an extremely interesting idea ! I'll give a try ! It should work ! I keep you informed with a feedback.
Thanks a lot.
Sucrerat is offline  
Old 07 February 2023, 03:25   #6
Sucrerat
Registered User
 
Sucrerat's Avatar
 
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 !
Sucrerat is offline  
Old 07 February 2023, 09:57   #7
ross
Defendit numerus
 
ross's Avatar
 
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 53
Posts: 4,468
Quote:
Originally Posted by Sucrerat View Post
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, ...
This does not reduce the DMA bandwidth, the data is actually fetched by the Copper.
ross is offline  
Old 12 February 2023, 21:40   #8
Photon
Moderator
 
Photon's Avatar
 
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.
Photon is offline  
 


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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 23:29.

Top

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Page generated in 0.12116 seconds with 15 queries