Capacités du Commodore 64

Ce que les trois puces spécialisées du C64 pouvaient faire, et ce que les programmeurs en ont tiré

Capacités du Commodore 64 : un matériel en avance sur son temps

Trois puces spécialisées. Un prix auquel elles n'auraient pas dû exister. Et ce que les programmeurs en ont fait.

En 1982, la plupart des ordinateurs familiaux reposaient sur une seule puce généraliste et les circuits les plus basiques que le fabricant pouvait se permettre. Le Commodore 64, vendu 595 dollars à son lancement avant de descendre rapidement sous 200 dollars, adopta une approche différente. Trois puces spécialisées formaient le cœur de la machine : le processeur MOS 6510, la puce graphique VIC-II et la puce sonore SID. Ensemble, elles donnaient au C64 des capacités que les concurrents ont mis des années à égaler.

Le 6510 tournait à tout juste moins de 1 MHz, un chiffre qui paraît modeste aujourd'hui mais qui était compétitif en 1982. Plus important que la fréquence d'horloge était ce qui l'accompagnait. Le VIC-II gérait les graphismes entièrement indépendamment du CPU, libérant le processeur pour exécuter la logique du jeu pendant que les sprites traversaient l'écran sans la moindre intervention du processeur. La puce SID produisait simultanément trois voix synthétisées indépendantes. Aucun ordinateur familial à un prix comparable n'approchait cette combinaison.

The Commodore 64 breadbin model from 1982, the machine whose three custom chips defined home computing for a decade

Acheter sur Amazon

Trouve du matériel Commodore, des jeux, des livres et des accessoires. Tout le catalogue sur Amazon.

Parcourir sur Amazon

Interactive Memory Map

Les 64 Ko complets de l espace d adressage du C64, de $0000 à $FFFF. Clique sur une région pour en savoir plus.

MODE
$0000$4000$8000$C000$FFFF
Commodore 64 PAL motherboard showing the MOS 6569 VIC-II graphics chip alongside the SID and CPU

La puce VIC-II du C64 : 8 sprites et un raster contrôlable

La puce Video Interface Chip II (MOS 6569 en PAL, 6567 en NTSC) dotait le C64 de capacités graphiques qui demandaient une véritable maîtrise pour être pleinement exploitées. Sa sortie de base était un écran de 320x200 pixels en mode haute résolution, ou 160x200 en mode multicouleur où chaque pixel pouvait appartenir à l'une de quatre couleurs plutôt que deux. Une palette fixe de 16 couleurs était disponible en permanence. Ce qui distinguait le C64 de ses contemporains n'était pas la résolution ou le nombre de couleurs, mais ce que la puce pouvait faire avec ces ressources.

Les huit sprites matériels constituaient la caractéristique la plus importante du VIC-II pour les développeurs de jeux. Chaque sprite était un objet de 24x21 pixels pouvant être positionné indépendamment n'importe où sur l'écran, doté d'une couleur propre, mis à double taille et testé pour les collisions matérielles avec d'autres sprites ou le fond. Le CPU déplaçait les sprites en écrivant dans une poignée de registres mappés en mémoire. Comme les sprites étaient des objets matériels, animer et positionner les huit simultanément ne coûtait aucun cycle CPU pour le dessin.

Ce qui distinguait vraiment les programmeurs C64 expérimentés des autres était la maîtrise du système d'interruption raster. Le VIC-II pouvait déclencher une interruption CPU à n'importe quelle ligne de trame horizontale spécifiée, permettant à du code de s'exécuter à un instant précis de l'image. Les registres de couleur pouvaient être modifiés en milieu d'écran, produisant des effets de dégradé et des séparations de couleur impossibles dans une seule image statique. Les programmeurs utilisaient cette technique pour afficher plus de couleurs que le matériel ne le supportait officiellement et pour créer les barres de couleur caractéristiques qui devinrent la signature de la culture démo C64.

Capacités du Commodore 64 : spécifications techniques

CPUMOS 6510 @ 0,985 MHz (PAL) / 1,023 MHz (NTSC)
RAM64 Ko (commutation de banques avec ROM)
ROM20 Ko (BASIC v2, KERNAL, jeu de caractères)
Puce graphiqueMOS 6569 VIC-II (PAL) / 6567 (NTSC)
Modes d'affichage320x200 haute résolution / 160x200 multicouleur
Couleurs16 couleurs fixes ; davantage via astuces raster
Sprites matériels8 (24x21 px, positionnables indépendamment)
Puce sonoreMOS 6581 / 8580 SID
Voix SID3 oscillateurs indépendants
Formes d'onde SIDTriangle, Dent de scie, Impulsion, Bruit
Filtre SIDPasse-bas, Passe-haut, Passe-bande avec résonance
Extras SIDModulation en anneau, sync oscillateur, ADSR par voix

Capacités audio du Commodore 64 : la puce SID

La puce MOS 6581 SID (Sound Interface Device) n'était pas un générateur d'effets sonores ni un simple beeper. C'était un synthétiseur complet à trois voix avec circuits analogiques, filtres programmables et la plage expressive d'un instrument matériel. Chacune des trois voix pouvait produire quatre formes d'onde indépendamment : triangle (douce et chaude), dent de scie (brillante et bourdonnante), impulsion (dont le timbre variait avec la largeur d'impulsion) et bruit (pour la percussion et les effets atmosphériques). Chaque voix disposait de sa propre enveloppe ADSR (Attaque, Déclin, Sustain, Relâchement), donnant aux compositeurs un contrôle précis sur la croissance, le pic et la décroissance de chaque note.

Le filtre était la caractéristique la plus distinctive du SID. Un filtre résonant unique, applicable à n'importe quelle combinaison de voix, pouvait être configuré en passe-bas (réduction chaleureuse des hautes fréquences), passe-haut (réduction des basses pour la présence) ou passe-bande (passage d'une plage étroite pour les effets téléphoniques et nasaux). La fréquence de coupure et la résonance étaient entièrement programmables, permettant aux compositeurs de balayer le filtre en temps réel pour des effets wah.

Deux caractéristiques supplémentaires poussaient le SID encore plus loin. La modulation en anneau entre oscillateurs produisait des sons métalliques aux accents de cloche qu'aucun oscillateur seul ne pouvait générer. La synchronisation d'oscillateur verrouillait deux voix ensemble, créant des formes d'onde complexes pour les leads agressifs et les sons de basse. La conception analogique du SID signifiait que les puces 6581 et 8580 sonnaient subtilement différemment : le filtre du 6581 avait une légère caractéristique de distorsion que de nombreux compositeurs intégraient à leurs arrangements. Cette imprécision analogique est devenue une partie définissante de la voix du C64.

MOS 6581 and MOS 8580 SID chips side by side: the two versions of the Commodore 64 sound synthesiser

Le BASIC du C64, PEEK et POKE : ce que les programmeurs ont découvert

Le Commodore 64 était fourni avec BASIC v2 en ROM, et taper RUN suffisait pour commencer. Pour un débutant en 1982, l'invite BASIC était une invitation. Deux commandes devenaient vite essentielles : PEEK et POKE. PEEK lisait une valeur depuis n'importe quelle adresse mémoire. POKE en écrivait une. Comme les registres matériels du C64 pour le VIC-II, le SID et les puces CIA apparaissaient tous comme des adresses mémoire ordinaires, PEEK et POKE donnaient aux programmeurs BASIC un contrôle direct sur la puce graphique, la puce sonore et tout le reste. POKE 53280,0 mettait la bordure de l'écran en noir. Du matériel qui nécessitait de l'assembleur sur d'autres machines était accessible en BASIC sur le C64.

Le langage assembleur ouvrait la machine entièrement. Un programmeur 6510 expérimenté pouvait écrire du code s'exécutant environ cent fois plus vite que l'équivalent BASIC. La commutation de banques mémoire permettait de superposer différentes combinaisons de RAM et de ROM sur l'espace d'adressage de 64 Ko, donnant accès à plus de mémoire que la puce n'en adressait nominalement. La page zéro (les 256 premiers octets de RAM) pouvait être accédée avec des instructions plus courtes et plus rapides que le reste de la mémoire.

La scène démo a documenté ce dont le C64 était réellement capable. Les programmeurs ont découvert qu'un timing soigneux des interruptions raster pouvait étendre la zone d'affichage au-delà de ses limites prévues. Les routines de multiplexage de sprites repositionnaient les huit sprites matériels plusieurs fois par image, affichant des dizaines d'objets en mouvement simultané bien au-delà de la limite officielle. Des techniques pour reproduire des échantillons audio numérisés via le SID ont été trouvées et perfectionnées. Chaque limite imposée par le matériel a finalement été contournée. Le C64 récompensait les programmeurs qui le comprenaient profondément.

Commodore 64 at a desk: the machine that programmers pushed far beyond its designed limits through assembly, PEEK, POKE and demoscene techniques

**** FREQUENTLY ASKED QUESTIONS ****

READY.

En savoir plus sur le Commodore 64

Découvre tous les modèles C64, l'histoire et la légendaire puce SID.