CPCWiki forum

Deutsches CPC-Forum => Programmierung => Topic started by: oobdoo on 11:32, 08 February 15

Title: Sound Programmierung
Post by: oobdoo on 11:32, 08 February 15
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?  :(

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.  :(   
Title: Re: Sound Programmierung
Post by: BSC on 13:41, 08 February 15
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)
Title: Re: Sound Programmierung
Post by: oobdoo on 14:02, 08 February 15
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.
Title: Re: Sound Programmierung
Post by: oobdoo on 14: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
Title: Re: Sound Programmierung
Post by: oobdoo on 15:31, 08 February 15
 ;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
Title: Re: Sound Programmierung
Post by: oobdoo on 21:03, 10 February 15
Quote from: oobdoo on 14: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.  :(
Title: Re: Sound Programmierung
Post by: AMSDOS on 08:24, 11 February 15
Quote from: oobdoo on 21: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



??
Title: Re: Sound Programmierung
Post by: oobdoo on 12:22, 11 February 15
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.
Title: Re: Sound Programmierung
Post by: Prodatron on 15:07, 11 February 15
Quote from: oobdoo on 12: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.
Title: Re: Sound Programmierung
Post by: oobdoo on 19:57, 11 February 15
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.
Title: Re: Sound Programmierung
Post by: Prodatron on 21:06, 11 February 15
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
Title: Re: Sound Programmierung
Post by: oobdoo on 22:39, 11 February 15
Danke. Funktioniert.  :D

Hatte wohl immer irgendwo einen Zahlendreher drin.
Title: Re: Sound Programmierung
Post by: oobdoo on 21:25, 13 February 15
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.  :)

Title: Re: Sound Programmierung
Post by: AMSDOS on 22:55, 13 February 15
Ton-Periode, Gröβe in Bit = 15 (0..4095)
Title: Re: Sound Programmierung
Post by: Shining on 23:07, 13 February 15
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....
Title: Re: Sound Programmierung
Post by: oobdoo on 23:33, 13 February 15
Quote from: AMSDOS on 22: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.
Title: Re: Sound Programmierung
Post by: BadCPC on 21:38, 03 August 20
Hi hab da mal eine Frage zu.Wie stehen die werte dann im Speicher ab.
&B61A CPC464&B2B6 CPC6128
Powered by SMFPacks Menu Editor Mod