Sound Programmierung

Started by oobdoo, 11:32, 08 February 15

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

oobdoo

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.  :(   

BSC

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

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)

oobdoo

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.

oobdoo

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

oobdoo

 ;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

oobdoo

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.  :(

AMSDOS

#6
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



??

* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

oobdoo

#7
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.

Prodatron

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.

GRAPHICAL Z80 MULTITASKING OPERATING SYSTEM

oobdoo

#9
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.

Prodatron

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

GRAPHICAL Z80 MULTITASKING OPERATING SYSTEM

oobdoo

Danke. Funktioniert.  :D

Hatte wohl immer irgendwo einen Zahlendreher drin.

oobdoo

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.  :)


AMSDOS

Ton-Periode, Gröβe in Bit = 15 (0..4095)

* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

Shining

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....
TGS is back

Download my productions at:
cpc.scifinet.org

oobdoo

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.

BadCPC

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