Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
 Welcome to our latest new user Harvey ! (Registered 2024-11-25) You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > How do I reliably detect 6581/8580 sid?
2006-08-22 14:18
tlr

Registered: Sep 2003
Posts: 1787
How do I reliably detect 6581/8580 sid?

There was an article in C=Hacking, but that does not work very well in VICE for example.
Maybe VICE's emulation is borked though.

I remember seeing a detailed analysis of the waveforms somewhere, but I can't seem to find it now.
 
... 47 posts hidden. Click here to view all posts....
 
2006-08-22 16:22
tlr

Registered: Sep 2003
Posts: 1787
Quote: Concerning my slave-testing of 8580's - it's clear that the waveform $05 differs from 8580 to 8580. It's also pretty clear that different SID's made at different production-runs at different factories produce slightly different results. The interesting part is that you probably can spot the factory and the time of making just by checking the combined waveform. One or two similar values, ok, that might be a coincidence. But here we have pretty much an 1:1 correlation?

@Twoflower: Do you mean $05 as in sync+ringmod+gate?
2006-08-22 19:14
McMeatLoaf

Registered: Jan 2005
Posts: 108
$05 as in ringmod+gate, I think.
2006-08-22 20:38
tlr

Registered: Sep 2003
Posts: 1787
Quote: $05 as in ringmod+gate, I think.

Doh! I knew that...

But what happens when you just set ringmod + gate with no selected waveform?
If you are unlucky you'll feed the ringmod xor-gate with High-Z which could result in process/temperature dependent behaviour (which is what seems to happen).
Also ringmod on voice 3 will surely depend on what voice 2 is setup to.

@Twoflower: could you please give some more details on your tests?
2006-08-22 21:10
Hein

Registered: Apr 2004
Posts: 945
I think combining 2 methods, real SID, and reSID check should work fine. Haven't tried the real sid method though (courtesy of Soundemon and Dag Lem), could be that Soundemon found the wrong code from the top of his head:

real sid (1 cycle delay):

lda #$ff
sta $d412
sta $d40e
sta $d40f
lda #$20
sta $d412
lda $d41b <- different value for 6581 & 8580 because of 1 cycle delay in one of the two sids. I dunno the different values, though.

This method doesnt work in VICE, since Dag Lem didnt implement the cycle delay in reSID.

in case of VICE you can use the mixed waveform $71 (not reliable for real sid)

lda #$ff ;frequency ch3 up
sta $d40e
sta $d40f
lda #$00 ;pulsewidth ch3 down
sta $d410
sta $d411
lda #$71
sta $d412

read $d41b 128 times, INX whenever $d41b doesnt hit a zero. Both sids should output a different value. (in my test, X<$7c, sid=8580)
2006-08-22 21:43
tlr

Registered: Sep 2003
Posts: 1787
Hein, those sound quite interesting, especially the cycle delay method.
2006-08-23 07:54
Frantic

Registered: Mar 2003
Posts: 1647
@tlr: About the tests me and twoflower did.. We're not talking about $05, but of $50.... that is.. simply the combined waveforms.. Pulse+Tri. Nothing new, apart from the fact mentioned that 8580 machines seem to differ (and that 6581s aren't 100% reliable under all possible prior register settings, but that doesn't really matter, as I already said).

I don't really understand the 8580 chip difference though. I mean.. I thought the oscillator reading stuff was done on values strictly internal to the SID, but either the 8580 chips are different or the surroundings of the chip really have an influence on what is read from osc3 output... Too bad I'm not very good at electronics to have an educated standpoint in that matter..
2006-08-23 08:26
tlr

Registered: Sep 2003
Posts: 1787
@frantic: I think the unreliable values have to do with that the combined waveforms are unintended features, much like the undocumented opcodes of the 6510, many of which are unstable.

In the original NMOS 6581 they are wire and:s (or:s) of the selected waveforms. I assume they are just open-drain outputs driving the DAC.

In the 8580 which I believe is CMOS (correct me if I'm wrong) I would have expected it to be stable. But it could have been done in the same (open-drain) way with CMOS transistors.

If the above is the source of the behaviour, the unstability comes from inputs to the DAC/$d41b having voltages not clearly defined as '1' or '0'. Note here that there is no guarantee that the DAC sees the same bit-state as $d41b if this is the case.
(i.e $d41b could be unreliable even though the DAC output is stable and vice versa.)

The threshold voltages for the NMOS and CMOS processes are definately different, and will vary with temperature and batch. Different processes will vary to different degrees.


SID patent:
http://stud1.tuwien.ac.at/~e9426444/patent.html

Interview with Yannes about the SID (concerns only the 6581):
http://stud1.tuwien.ac.at/~e9426444/yannes.html


2006-08-23 08:28
Necronomfive
Account closed

Registered: Dec 2004
Posts: 20
From what I have heard so far, the combined waveforms are a result of "short circuiting" the digital waveform outputs, and thus can produce different results among different SID chips. This is also an explanation why they sound different on an 8580, since the 8580 was done in a new process (HMOS-II), creating a different pattern than the NMOS process.
2006-08-23 08:43
Frantic

Registered: Mar 2003
Posts: 1647
If someone feels like it, then please go ahead and code a simple tool similar to the one used for waveform investigations on the 6581 SID homepage, that cylces through different waveform settings one at a time, captures it with REU, and saves the results on disk. Then I could bring this program and my 512kb REU to some party sometime and run it on a lot of machines to collect some data for closer analysis, together with some notes on what kind of SID were in the machine.

Have been thinking of coding it myself, since it's obviously very simple, but I realized that I don't care enough about this issue to do it. (Since it doesn't really matter a whole lot for (ordinary) music making anyway..)

If temperature has something to do with it, perhaps a testing program should also run for a while on a certain machine and thus comparing the output of the waveform with itself from 10 minutes earlier or so?
2006-08-23 09:05
Necronomfive
Account closed

Registered: Dec 2004
Posts: 20
It would be, in general, interesting to make a new attempt in characterizing the combined waveforms. Is the waveform created by them truly periodic? And if so, what formula can be applied to get the same results as the real chips? If not, what other factors can influence the variation of the result?

Unfortunately, I think this can only really be explored by sampling VERY huge chunks of the waveforms.

My bet is that every time you will sample it, you get different results, which sound kind of same to the human ear, but vary a lot in the digital domain. The changes in the waveform could be as small as one SID cycle, thus hardly noticeable by the human ear.
Previous - 1 | 2 | 3 | 4 | 5 | 6 - 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
Skylab/The Movers
Mike
zscs
Holy Moses/Role
Alakran_64
Oxbow/Xenon
MWR/Visdom
iceout/Avatar/HF
McMeatLoaf
t0m3000/hf^boom!^ibx
Guests online: 93
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Mojo  (9.6)
6 The Demo Coder  (9.6)
7 What Is The Matrix 2  (9.6)
8 Uncensored  (9.6)
9 Wonderland XIV  (9.6)
10 Comaland 100%  (9.6)
Top onefile Demos
1 Layers  (9.6)
2 Party Elk 2  (9.6)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.6)
5 Libertongo  (9.5)
6 Rainbow Connection  (9.5)
7 Onscreen 5k  (9.5)
8 Morph  (9.5)
9 Dawnfall V1.1  (9.5)
10 It's More Fun to Com..  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Nostalgia  (9.3)
5 Triad  (9.2)
Top Logo Graphicians
1 t0m3000  (10)
2 Sander  (9.8)
3 Mermaid  (9.5)
4 Facet  (9.4)
5 Shine  (9.4)

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