In meinem alten BASIC Spiel taucht folgende Befehlsreihenfolge auf:
ENV 1,100,2,2,1,1,1
ENT 1,100,-2,2
SOUND 1,284,200,1,1,1
Wie setzt man sowas in Assembler um? (http://cpc-live.com/forum/Smileys/akyhne/sad.gif)
Ich hab schon auf dem Wiki geschaut, aber die arbeiten nur mit Byte-Werten. Bei mir gibt es aber den Wert 284, also mehr wie acht Bit.
Werd aus dem englischen Zeuchs nicht schlau draus. :(
Hallo oobdoo,
ich weiß ja nicht, in welchem Wiki du nachgesehen hast, aber im CPC Systembuch ist das alles ziemlich gut beschrieben. Schau mal hier:
Das Schneider CPC Systembuch: Die Firmware des Schneider CPC: SOUND MANAGER (http://k1.spdns.de/Vintage/Schneider%20CPC/Das%20Schneider%20CPC%20Systembuch/z163.htm#C)
Weiter unten steht auch, wie man ENV und ENT umsetzt: Mit SOUND AMPL ENVELOPE pzw SOUND TONE ENVELOPE.
Die Werte >255 werden übrigens als 16-Bit-Worte angegeben (siehe z.b. DEFW Periodenlänge im Parameterblock für den Aufruf von SOUND QUEUE - das ist der Link oben)
Ich hatte auf cpcwiki.eu geschaut.
Das Buch kannte ich noch gar nicht. Danke für den Tip. ;D
Mal schauen ob ich damit weiter komme.
org &4000
.sque equ &bcaa
ld hl,sdata
call sque
ret
.sdata defb 1
defb 1
defb 1
defw 284
defb 0
defb 1
defw 200
Macht schonmal das gleiche wie SOUND 1,284,200,1,1,1 :D
;D ;D ;D ;D ;D ;D ;D ;D
Hat geklappt, froi.
Quoteorg &4000
.sque equ &bcaa
ld a,1
ld hl,env
call &bcbc
ld a,1
ld hl,ent
call &bcbf
ld hl,sdata
call sque
ret
.sdata defb 1
defb 1
defb 1
defw 284
defb 0
defb 1
defw 200
.env defb 1,100,2,2,1,1,1
.ent defb 1,100,-2,2
Quote from: oobdoo on 13:47, 08 February 15
org &4000
.sque equ &bcaa
ld hl,sdata
call sque
ret
.sdata defb 1
defb 1
defb 1
defw 284
defb 0
defb 1
defw 200
Macht schonmal das gleiche wie SOUND 1,284,200,1,1,1 :D
Ich versteh die Welt nicht mehr. Oberer Sound wird gemacht BASIC+Z80.
Sound 4,0,1,7,4,0,31 nur in BASIC, nicht Z80 wenn ich die Werte entsprechend einsetze. :(
Quote from: oobdoo on 20:03, 10 February 15
Ich versteh die Welt nicht mehr. Oberer Sound wird gemacht BASIC+Z80.
Sound 4,0,1,7,4,0,31 nur in BASIC, nicht Z80 wenn ich die Werte entsprechend einsetze. :(
.sdata defb 4,4,0,0,0,31,7,1,0
??
Ich fasse es nicht. Jetzt funktioniert es. :o
Und ich hatte mich schon totgesucht. Keine Ahnung wo der Fehler lag.
Danke schööööönnn. ;D
Wobei ich mich frage, warum es mit "nur"DEFB" funktioniert, wenn doch zwei mal DEFW darin auftauchen müßte.
Quote from: oobdoo on 11:22, 11 February 15Wobei ich mich frage, warum es mit "nur"DEFB" funktioniert, wenn doch zwei mal DEFW darin auftauchen müßte.
Ein DEFW x wird in diesem Falle jeweils durch ein DEFB x,0 ersetzt.
Ich komme aber weiterhin ins Schleudern mit den Begriffen.
Sound in BASIC hat die Parameter...
01. Kanalstatus
02. Tonperiode
03. Dauer
04. Lautstärke
05. Lautstärkenhüllkurve
06. Tonhüllkurve
07. Geräuschperiode
Sound in Z80 mit &BCAA laut meinem deutschen Firmwarehandbuch...
Byte 0 Kanalangabe und Rendezvouserfordernisse
Byte 1 Amplituden-Hüllkurve
Byte 2 Ton-Hüllkurve
Byte 3..4 Tin-Periode
Byte 5 Geräuschperiode
Byte 6 Anfangsamplitude
Byte 7..8 Dauer oder Hüllkurven-Wiederholungszähler
Byte 0 würde ich 01. zuordnen.
Byte 5 zu 07.
Byte 7..8 zu 03.
Und der Rest? Irgendwie bringe ich den Begriffe nicht zueinander.
Wahrscheinlich so:
Byte 0 Kanalangabe und Rendezvouserfordernisse 01. Kanalstatus
Byte 1 Amplituden-Hüllkurve 05. Lautstärkenhüllkurve
Byte 2 Ton-Hüllkurve 06. Tonhüllkurve
Byte 3..4 Ton-Periode 02. Tonperiode
Byte 5 Geräuschperiode 07. Geräuschperiode
Byte 6 Anfangsamplitude 04. Lautstärke
Byte 7..8 Dauer oder Hüllkurven-Wiederholungszähler 03. Dauer
Danke. Funktioniert. :D
Hatte wohl immer irgendwo einen Zahlendreher drin.
Da die Reihenfolge bei der Parameterübergabe in Assembler eine andere als in BASIC ist, habe ich mal was in Excel gebastelt.
Vielleicht kann es ja einer auch gebrauchen.
SOUND 2,284,10,2,2,1,10 ergibt
defb 2,2,1
defw 284
defb 10,2
defw 10
Funktioniert soweit alles bei mir. :)
Ton-Periode, Gröβe in Bit = 15 (0..4095)
Zwar ein bisschen Off-Topic. Aber wie oft ich schon in das oben erwähnte Buch geschaut habe.....
Gerade diese Woche habe ich mich auch mit dem Soundteil im Buch beschäftigt, da ich gerade Musik in mein Game-Projekt einbaue, die für den Speccy komponiert wurde. Und da musste ich Tonhöhe, Hüllkurven und Rauschperiode anpassen....
Quote from: AMSDOS on 21:55, 13 February 15
Ton-Periode, Gröβe in Bit = 15 (0..4095)
Ok. 15 Bit. Aber damit muß es doch trotzdem als DEFW geschrieben werden.
Hi hab da mal eine Frage zu.Wie stehen die werte dann im Speicher ab.
&B61A CPC464&B2B6 CPC6128