Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > (Ab)use of dummy accesses
2020-03-09 17:04
chatGPZ

Registered: Dec 2001
Posts: 11114
(Ab)use of dummy accesses

For the next release of my "No more Secrets" doc i am preparing a chapter related to the dummy access which happen when the CPU performs an internal operation. Once again i am looking for some examples on how to (ab)use it :) I guess everyone knows "inc $d019" - but i am sure there is more than this. And not only with RMW instructions. So if you have anything in your mind - just drop it here!

here are some related notes which i pasted together. feel free to proofread and point out mistakes :)
 
... 55 posts hidden. Click here to view all posts....
 
2020-03-09 22:07
chatGPZ

Registered: Dec 2001
Posts: 11114
Quote:
The music routine from Fred Gray performs a read and write on IO

thats not abusing the dummy accesses though.... it relies on the floating bus value (what a terrible idea =P)
2020-03-10 09:44
tlr

Registered: Sep 2003
Posts: 1714
Quote: Copyfault: are you talking about the 'x-stretch' effect you get with dysp's when the low-index sprites go too far into the right border?

It refers to the long mysterious $ff glitches usually appearing at the top of sprite #0 when moved far right (it appears for all sprites but most not visible). Those can be controlled by placing the right values on the internal vic-bus in two adjacent cycles.

There's a length discussion in a thread somewhere.
2020-03-10 18:32
chatGPZ

Registered: Dec 2001
Posts: 11114
it would be great if you'd post an actual working example, that would safe a lot of time =)
2020-03-10 18:56
tlr

Registered: Sep 2003
Posts: 1714
Quote: it would be great if you'd post an actual working example, that would safe a lot of time =)

Copyfault implemented that here: Sideborder Sprite Data Fetch TestProg, presumably based on my suggestion in post #12 of this thread: Sprite data fetch in sideborder
2020-03-10 19:37
Copyfault

Registered: Dec 2001
Posts: 466
Sorry for not posting the links.

Thanks a bunch, tlr! And ofcourse, the basic idea for getting the pattern bytes at the right positions of the sprite data pipe was yours!!!
2020-03-10 21:37
Fred

Registered: Feb 2003
Posts: 284
Quote: Quote:
The music routine from Fred Gray performs a read and write on IO

thats not abusing the dummy accesses though.... it relies on the floating bus value (what a terrible idea =P)


The dummy write in the INC instruction is still executed but perhaps in this example has no audible impact on the output of the SID. The dummy access writes the same value to the SID again. I can imagine that when the gate bit was already set and with the INC instruction set again in the first write, that it will have impact on the ADSR state.

Also it will write 2 times to the SID with 1 cycle difference which is not possible with any other instruction. This cycle difference may be abused with any IO register.

Some example of my CIA test routine which makes use of the dummy access:

https://sourceforge.net/p/vice-emu/bugs/740/
2020-03-10 22:31
chatGPZ

Registered: Dec 2001
Posts: 11114
Ah yes, it would indeed introduce a small difference in timing. ok :)
2020-03-13 16:41
chatGPZ

Registered: Dec 2001
Posts: 11114
come on coronapeoples, this cant be all! :)
2020-03-13 17:54
tlr

Registered: Sep 2003
Posts: 1714
You could always use RMW instructions to make double grey dots.
2020-03-14 06:26
ChristopherJam

Registered: Aug 2004
Posts: 1378
Quoting Groepaz
Quote:
The music routine from Fred Gray performs a read and write on IO

thats not abusing the dummy accesses though.... it relies on the floating bus value (what a terrible idea =P)


I though reads from SID were explicitly zero, rather than floating bus value?


I'm fairly sure one of the iterations in developing a stable hard restart used one cycle blips of the gate bit to allow RC to escape at known times, but it didn't turn out to be the most optimal. I'll have a rummage.
Previous - 1 | 2 | 3 | 4 | 5 | 6 | 7 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Board Rider/Commodor..
Laurent
Guests online: 121
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Comaland 100%  (9.6)
6 No Bounds  (9.6)
7 Uncensored  (9.6)
8 Wonderland XIV  (9.6)
9 Bromance  (9.6)
10 Memento Mori  (9.6)
Top onefile Demos
1 It's More Fun to Com..  (9.7)
2 Party Elk 2  (9.7)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.5)
5 TRSAC, Gabber & Pebe..  (9.5)
6 Rainbow Connection  (9.5)
7 Onscreen 5k  (9.5)
8 Wafer Demo  (9.5)
9 Dawnfall V1.1  (9.5)
10 Quadrants  (9.5)
Top Groups
1 Oxyron  (9.3)
2 Nostalgia  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Graphicians
1 Sulevi  (10)
2 Mirage  (9.8)
3 Lobo  (9.7)
4 Mikael  (9.7)
5 Archmage  (9.7)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.069 sec.