Poking SID registers

sknipas

Retro Member
Messages
247
Reaction score
403
Points
73
Χαιρετίζω τους φίλους του φόρουμ.
Σήμερα γυριζοντας απο διακοπές και με γεματες μπαταρίες αποφασισα να ξεκινήσω ενα πρότζεκτ που ειχα καιρο στο μυαλο μου.
Αρχικα ηθελα να διαβασω να μπορέσω να διαβασω τους registers που στελνει ο commodore 64 στον sid.
Για τον λογο αυτο ειχα προμηθευτει ένα teensy 3.6 microcontroller.
Ενα πανίσχυρο microcontroller arm στα 180mhz λειτουργία και συμβατό με arduino ide.
Δυστυχώς ομως δεν ειναι τα πινς του 5v tolerant οποτε χρησιμοποιησα ενα level shifter για να κανω δουλεια.
IMG_20180719_133505.jpg
Ετσι σε λιγοτερο απο μια ωριτσα ειχα ενα prototype και διαβαζα τα address lines του sid σωστά.
IMG_20180719_125812.jpg IMG_20180719_125833.jpg
Τωρα ξερω οι περισσότεροι θα σκεφτουν οτι ψαχνομαι για να φτιαξω ενα sid replacement και εν μέρει ειστε σωστοι.
Απλα εγω το κανω σαν ασκηση για να καταλαβω την ροη και τα timings των δεδομένων, πως δουλεύει το bitbanging κτλ κτλ.
Ενηγουεη θα σας ενημερωνω για την πορεία του προτζεκτ.

υ. γ. Ειναι ένα προτζεκτ που δεν ξερω αν θα λειτουργήσει η αν θα ολοκληρωθεί. οποτε for your eyes only.
 

turrican

Retro Guru
Messages
2,671
Reaction score
2,368
Points
123
Wow!!! Να κάτι ενδιαφέρον!
(δύσκολη η κατάσταση με τα SID αν κρίνω απο τη πληθώρα προσπαθειών ( "επιτυχημένων " και... περισσότερο επιτυχημένων... ) :confused:
 

geoanas

Commodore Vampire
Staff member
Messages
7,056
Reaction score
5,548
Points
223
Έχεις ξεφύγει Peter! :geek: ....Εξαιρετικό project
 

DAT-Alex

Retro Addict
Messages
630
Reaction score
430
Points
73
Πέτρο ενδιαφέρον... (ξέρεις ότι κάτι τέτοια project είναι η αδυναμία μου!)
Τι ακριβώς έχεις στο μυαλο σου?
Προσομείωση SID ή κάτι άλλο?
 

sknipas

Retro Member
Messages
247
Reaction score
403
Points
73
@DAT-Alex
Βασικα αυτο το πρότζεκτ μπορει να οδηγήσει σε πολλά αλλα αν ολοκληρωθει.
Απο οτι καταλαβαίνω ο sid λειτουργει παρόμοια με ενα eeprom με τα addresses και data lines.
Μπορω να εξομοιωσω 8 address και 10 data lines με τα πινς που βγαινουν απο το teensy, και αλλα 2-3 εξτρα πινς που βγαινουν σε pads.
Αρα με τα διαθέσιμα πινς που έχω μπορει να εξομοιωθει αρχικα ενα 27c64.
Δεν ειναι πολλα αλλα προσθέτοντας data lines ισως φτασει στο 27c512 η και παραπανω με page swapping.
Τωρα αυτο το eeprom emulator μπορει να χρησιμοποιηθεί σε πολλα αλλα προτζεκτ νομιζω.
 

DAT-Alex

Retro Addict
Messages
630
Reaction score
430
Points
73
Για την ακρίβεια στο SID χρησιμοποιώντας το address/data bus μπορεις να έχεις πρόσβαση στους καταχωρητές (register) να αλλάξεις τιμές και να διαβάσεις. Στην ουσία κανοντας poke σε συγκεκριμένες θέσεις μνήμης μπορείς να βγαλεις διάφορυς ήχους να παιξεις με το sustain πχ και τα φιλτρα για απλά εφφέ και ήχους. Αν ομως θελήσεις πχ να ακούσεις sid music (απο αρχεία commodore πχ) εκει τα πράγματα αλλάζουν μιας και θα πρεπει να προσομειώσεις και εναν 6510 πχ γιατι το SID για να παιξει μουσικό κομμάτι 'περιμένει΄ εντολές (Opcodes) 6510. Δεν ξέρω αν έγινα κατανοητός και τί ακριβώς θέλεις να κάνεις ,πάντως ενα είναι σίγουρο τέτοια προτζεκτάκια -εμένα προσωπικά- με ΄γεμίζουν΄και εχουν αρκετό ενδιαφέρον τόσο για γνώσεις όσο και για το ότι προσπαθείς να το υλοποποιήσεις στην πράξη.
 

geoanas

Commodore Vampire
Staff member
Messages
7,056
Reaction score
5,548
Points
223
Όλα αυτά μου θυμίζουν Vicious SID


This Video shows the part of the Demo "Vicious Sid" where Music is played back with the VIC-chip (not with the SID-chip - you will hear the sound on a C64 without / with defective SID-chip too). This is a special playback method I have seen the first time in this demo...
https://csdb.dk/release/?id=72678
 

DAT-Alex

Retro Addict
Messages
630
Reaction score
430
Points
73
:thumbup: Geo πόσο δικιο έχεις... τεχνικές γνωστές
επισυνάπτω σχετική παράγραφο απο το link του memory map του SID που αναφέρθηκε ποιο πάνω:

".... For example the volume register design flaw in the original 6581 chip was used to play back samples. Every time the volume register value was altered, an audible click could be heard. By changing the first 4 bits of the register at $D418 fast enough, samples can be played back with rates up to some kHz (depends on the code and what else uses rastertime) with 4 bit resolution. In the later 8580 model this "bug" was fixed and samples were inaudible, but it is possible to revert this by soldering a 470kΩ resistor or, if you want to be able to adjust the level, a 1MΩ pot in series between EXT IN and GND. Even better sample playback can be achieved by altering the pulse width modulation register, which can hold an eight bit value....."
 

sknipas

Retro Member
Messages
247
Reaction score
403
Points
73
Ενα μικρο ντεμο του τι εχω κανει μεχρι τωρα. Ακουγεται σαν χαλασμενο sid γιατι
εχω ακομα καποιο λαθος στους χρονισμούς. Αλλα για κανα 7-8 ωριτσες προγραμματισμου καλα ειναι.


Νομιζω οτι στο βαθος ειναι το bubble bubble.... :D:D
 

sknipas

Retro Member
Messages
247
Reaction score
403
Points
73
και working prototype παλικαρια ετσι για να γουσταρουμε. .

Συνοδευεται με αυτοσχεδιο χορο της ικανοποίησης. :D:rofl::D:rofl::D
 

DAT-Alex

Retro Addict
Messages
630
Reaction score
430
Points
73
Φτιάξε μας....μάστορα! παρακολουθώ με ενδιαφέρον.

Για δώσε infos... μέχρι πιο σημείο έχεις φτάσει?

(άσχετο: τα demos τα φορτώνεις απο raspberry 1541 emulation?)
 

sknipas

Retro Member
Messages
247
Reaction score
403
Points
73
teensy 3.6 + 2 level shift boards.
Εγινε πρόγραμμα στο arduino ide και χρησιμοποιεί το resid σαν sound engine.
Τα timings ειναι λιγο κρισιμα στον χρονισμο τους αλλα με σωστα μαθηματικα τα βρηκα. Δουλευει παντου. Εχει 12 bit resolution ο ηχος γιατι χρησιμοποιώ το dac pin για εξοδο ηχου. ισως με μια εξτρα board ηχου να ακουγεται καλυτερα.
Δοκιμασα κανα 2 ντεμο και το μπουμπλε και παιζει κομπλε.
Τα ντεμο απο rpi 1541 emulator.
Αυτα.
 

geoanas

Commodore Vampire
Staff member
Messages
7,056
Reaction score
5,548
Points
223
Θεός...Έχεις ξεφύγει! :thumbup:
 

sknipas

Retro Member
Messages
247
Reaction score
403
Points
73
Και επειδή τρώγοντας ανοίγει η ορεξη εχουμε και stereo sid. Προς το παρον και τα δυο καναλια παιζουν τις ιδιες νοτες.
Εδω θα χρειαστω λιγη βοηθεια φιλε μου @geoanas.
Απο που παιρνω την διευθυνση για το δευτερο sid.;
Και που μπορω να βρω στερεο sid tunes?
 

geoanas

Commodore Vampire
Staff member
Messages
7,056
Reaction score
5,548
Points
223
@sknipas
ότι και να πω είναι λίγο...Μπράβο σου. Στο ψητό τώρα:

Οι διευθύνσεις έχουν ως εξής:

$d400 Για το main SID ή και για δεύτερο που θα πάιζει ταυτόχρονα το ίδιο tune (θα ακούγεται ως 2Χ mono)

$d420 Για τα περισσότερα stereo SID tunes. Το δεύτερο "χτυπιέται" (ανεξάρτητα από το πρώτο) σε αυτή την διεύθυνση (με το πρώτο να "παίζει" το δικό του μέρος στην $d400)

Υπάρχουν βέβαια και κάποια tunes που θέλουν το δεύτερο SID, σε πιο "εξωτικές" διευθύνσεις όπως τις $D500, $DE00 ...αλλά είναι πολύ λίγα και άνευ σημασίας (θα έλεγα)

Ίσως και αυτό σου φανεί χρήσιμο ;-)
 

geoanas

Commodore Vampire
Staff member
Messages
7,056
Reaction score
5,548
Points
223
Αν γουστάρεις (όπως εγώ! Χε!Χε!Χε!..) εδώ κι εδώ για τριπλό SID!!! Ε, ρε γλέντια καλοκαιριάτικα!!!
 

sknipas

Retro Member
Messages
247
Reaction score
403
Points
73
Ωραια αναγνωσματα. βρηκα πραγματα που δεν τα ηξερα.
Οποτε με ενα 74xx00(and gate) στα πινς 7 απο expansion port και 12 +15 στην cpu ξερω αν η cpu μιλαει στο 2 sid σωστα;
Αν ειναι high ολα τα σηματα η and gate μιυ δινει και αυτη high μετα την πρόσθεση.
καταλαβαινω καλα η όχι ;
 
Top