


          Soundchip-Player


Es ist schon erstaunlich, was es fr tolle Sounds fr diesen Soundchip gibt.
Ein einfache XBIOS-32 - Routine ( Dosound ) bringt natrlich keine gute
Qualitt, sondern nur das typische Soundchip-Gequake (z.B. der Player von
den letzten CM ). Um die Qualitt zu verbessern, sind wieder mal einige
Tricks fllig. Wer sich dafr interessiert, kann das in der TOS 4/92 nach-
lesen, dort werden die Tricks recht gut erklrt.

Der Player spielt Soundchip-Musik von Jochen Hippel (Mad Max) ab (nur reine
Soundchipmusik, keine Digi-Drums ! ). Es knnen auch andere Sounds 
abgespielt werden, dabei mu aber folgendes Format gegeben sein:

sound:    	bra.w init		;MAD MAX Sounddriver
          	bra.w xxx
         	bra.w play

Mit init wird der Sound initialisiert, dabei mu in d0 die gewnschte
Soundnummer stehen ( 0 = aus, 1 = Sound 1, 2 = Sound 2 ......... ).

			moveq #1,d0    ;Sound 1
        	bsr   sound

Ich habe bisher keine sichere Mglichkeit gefunden, die Anzahl der Sounds
in einen Modul festzustellen. Also Vorsicht, wenn eine zu groe Sound-Nummer
gewhlt wird, kann der Player abstrzen !

Die Playroutine mu alle 20 ms aufgerufen werden. Auf den ST wird play
meistens im VBL ausgefhrt, da der VBL alle 20ms (50 Hz) aufgerufen wird.
Besser ist es, ein Timer zu benutzen, um von der VBL-Frequenz unabhnig
zu sein.
 
timer_a:	...				;alle 20 ms
			...
			bsr sound+2*4	;ein bra.w - Befehl ist 4 Bytes lang
			...
			...

Wie der Timer programmiert wird, habe ich schon in einen lteren CM
erklrt ( Word-Bender ). Man kann dort einfach einen beliebigen MAD-MAX-
Sound einbinden, nur die init- & play-Adresse mu gendert werden.
Die VBL-Frequenzunabhnigkeit ist besonders fr den Falcon wichtig, da
diese Frequenz im VGA-Modus 60 Hz betrgt.  
				
Nun zu den verschieden Soundformaten: Ich kenne 3 verschiedene Arten:
TFMX:  Das ist wohl eine lteres Format, alle "Oldies" sind in
	   diesen Format, z.B. Cuddly-Demo-Sounds, Quiz.
	   
COSO/TFMX: Die verbesserte TFMX-Format (neue Datenstrukturen).
COSO/MMME: Der Unterschied zwischen COSO/TFMX und COSO/MMME besteht in
	       der Berechnung der Frequenznderungen ( Vibrato, Bending ).
	       
Die beigefgten Sounds sind von den Mcoder's Screen in der "Bird Mad Girl
Show". Mcoder hat alle TFMX-Sounds in das COSO/TFMX-Format konvertiert und
alle berflssigen Pattern (z.B. Gerusche ) entfernt.

Leider funktioniert die Soundroutine nicht auf den Falcon. Nun ist auch
verstndlich, warum viele Intros & Games nicht funktionieren, es liegt
(unter anderen) an den MAD-MAX-Sounddriver. Das Problem liegt bei der
Adressierung des Soundchips. Die eigentliche Soundchip-Adressen sind
$ffff8800 und $ffff8802. Der ST und STE nehmem die Adresse nicht so
genau, d.h. Adr $ffff8804 entspricht $ffff8800, und $ffff8006 entspricht
$ffff8802 uswusf, die Adressen wiederholen sich noch einige mal.
Also $ffff8800 entspricht $ffff8800+4*n
und  $ffff8802 entspricht $ffff8802+4*n.
Das haben die Programmierer gleich ausgenutzt, um den Soundchip mglichst
schnell zu programmieren. Es wird der movem-Befehl angewendet, man kann
also mit 2 Befehlen den ganzen Soundchip programmieren.

				lea     ym_set,a6
                movem.l (a6),d0-a2      ;Soundchip programmieren
				movem.l d0-a2,$ffff8800.w

ym_set:         dc.l $00                ;diese Werte werden dann in den
                dc.l $01010000          ;Soundchip bertragen
                dc.l $02020000
                dc.l $03030000
                dc.l $04040000
                dc.l $05050000
                dc.l $06060000
ym_7:           dc.l $0707ffff          ;alles aus
                dc.l $08080000
                dc.l $09090000
                dc.l $0a0a0000

Das geht nun beim Falcon nicht mehr, es sind nur noch die 2 Adressen
zulssig ($ffff8800 & $ffff8802). Die nchsten Adressen fhren zu einen
Bus-Error. Die movem-Methode wir auch bei den Soundchip-MOD-Player benutzt,
diese funktionieren demzufolge auch nicht auf den Falcon.

Ich habe die Sounds so modizifiert, da sie nun auf den Falcon 
funktionieren. Der Player spielt auch die unvernderten Sounds ab,
dann allerdings nur auf den ST oder STE !!

Ach ja, der Falcon ist eine Multispektakel- (hm, ich meinte -media)
Maschine. Kein Problem, man nehme den Oszi aus der ST-Computer 11/92
und schaltet den Eingang des ADC auf den Soundchip um ( Zeile 347, 
soundcmd( ADCINPUT, 0x03 ); ). Und schon kann man den Sound audiovisuell
genieen !




