Sounds in Assembler

Moderator: Rockford

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Sounds in Assembler

Beitrag von Dr. Irata »

Ich muss jetzt für mein Projekt langsam mal an den Sound denken... das war aber immer so eine Sache - auch damals - wo ich echt relativ unbeleckt bin.
Sound in Basic ... geht... da gibt es ja auch einige Vorlagen, aber wie bringe ich das vernünftig in Assembler???

Ich wollte eigentlich definierte Soundeffekte reinbringen - also z.B. eine Explosion, die dann abläuft wenn eine Explosion stattfindet. Läuft das im Interrupt???
Außerdem sollte ständig eine dezente Hintergrundmusik (ähnlich wie bei The Tail of Beta Lyrae ) ablaufen... das geht sicherlich nur im Interrupt.

Daher habe ich hier einen Extrabereich eröffnet, wo ich gerne mit professioneller Hilfe die Soundfrage entwickeln möchte - gleichzeitig kann man dann hier für nachfolgende Projekte alles nachlesen...

Erstes Problem: Die Explosion der Items.... hat jemand da eine gute Idee wie ich da am besten anfange??

Liebe Grüße
Peter

Benutzeravatar
pps
Beiträge: 511
Registriert: 18.06.2021 23:05
Has thanked: 112 times
Been thanked: 204 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von pps »

Sehr einfach geht das mit dem RMT. Man kann Instrumente als Effekt abspielen. Das habe ich. B. bei "go lucky" genutzt. Allerdings benötigt die Abspielroutine Rechenzeit. Aber man kann super Musik spielen und Soundeffekte einstreuen.

Man kann natürlich auch selber Effekte abspielen. Im RMT Assembler source findet man da ein Beispiel im simple Ordner. Diese Routine spielt halt die Noten hintereinander ab. Das kann man für eigene Dinge anpassen. Bei "runfast" habe ich da auch ähnlich gehandelt.
PP´s of STARSOFTBerlin__________github|meine Webseite

Benutzeravatar
Irgendwer
Beiträge: 67
Registriert: 25.08.2021 19:05
Has thanked: 15 times
Been thanked: 30 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Irgendwer »

Für Soundeffekte sehr brauchbar und schlanker was Rechenzeit und Speicherbedarf angeht, ist die SFX-Engine von XXL:

https://atariage.com/forums/topic/320982-sfx-engine/
(Englisch)

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

zunächst lieben Dank für die beiden Antworten.
Über den RMT bin ich schon gestossen ... leider geht der nur auf Windows und nicht auf Mac. Ich werde den mal über mein Parallels installieren und schauen, wie der funktioniert. Die SFX Engine kannte ich noch nicht... bindet man die direkt in den eigenen Code ein?
Ich werde ja auf jeden Fall eine Art Abspielengine brauchen, die in meinem Programm (ich denk mal im VBI) die Sounds und Töne dann geregelt abspielt. Ob das mein schon recht voller VBI überhaupt noch hergibt??
In dem Buch Hexenküche habe ich da auch einen ganz interessanten längeren Artikel über Sounds gefunden... auch hier ist eine Art Abspielengine beschrieben und gelistet, die man in den VBI einbindet... vielleicht fange ich damit an um es genau zu verstehen und selber manipulieren zu können...

Benutzeravatar
Irgendwer
Beiträge: 67
Registriert: 25.08.2021 19:05
Has thanked: 15 times
Been thanked: 30 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Irgendwer »

Prodehl hat geschrieben:
12.01.2022 13:30
Die SFX Engine kannte ich noch nicht... bindet man die direkt in den eigenen Code ein?
Ja, die gibt es in verschiedenen Ausbaustufen hier:
https://xxl.atari.pl/sfx-engine/

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

... ich bin gerade beim stöbern im Internet auf die sehr interessante Software "chipsound" gestossen. Damit kann man tatsächlich 8-Bit Musik für den Atari generieren. Hat jemand damit Erfahrung und die große Frage ist natürlich: Wenn ich so ein schönes Tool habe (läuft auch auf Mac), wie bekomme ich dann die Sounds in den Atari rein?? Also in welcher Form wird das abgespeichert und mit welcher Engine wird das dann im Atariprogramm abgespielt???
Gruß
Peter

Benutzeravatar
pps
Beiträge: 511
Registriert: 18.06.2021 23:05
Has thanked: 112 times
Been thanked: 204 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von pps »

Ich habe mir das nur mal kurz auf der Webseite angeschaut. Dort steht nur, dass man mit dieser Software die, die alten Chips emuliert, am modernen Rechner halt in alte Zeiten zurück schweben kann und so neue Musik auf moderner Hardware, aber halt wie Früher klingend machen kann. Die schreiben nirgends, dass man dann die erstellte Musik auch auf echter alter Hardware abspielen kann. Oder ich bin blind. Da die sogar noch Geld damit verdienen wollen, werde ich da definitiv nicht näher reinschauen...
PP´s of STARSOFTBerlin__________github|meine Webseite

Online
Benutzeravatar
andymanone
Beiträge: 2445
Registriert: 17.08.2021 12:34
Wohnort: Berlin - Suburban
Has thanked: 480 times
Been thanked: 765 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von andymanone »

Prodehl hat geschrieben:
15.01.2022 10:10
... ich bin gerade beim stöbern im Internet auf die sehr interessante Software "chipsound" gestossen. Damit kann man tatsächlich 8-Bit Musik für den Atari generieren.
Blöde Frage:
Du meinst nicht zufällig das VST PlugIn von Plogue, oder?

Gtx.,
andY
Ressortleiter Hardware - Save the past and use the future!© andYManOne / Demozoo / Youtube

Benutzeravatar
Mathy
Beiträge: 1112
Registriert: 18.06.2021 11:13
Wohnort: Heerlen, NL
Has thanked: 444 times
Been thanked: 252 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Mathy »

.
Hallo Peter, Leute

Prodehl hat geschrieben:
12.01.2022 13:30
Über den RMT bin ich schon gestossen ... leider geht der nur auf Windows und nicht auf Mac.
Sobald Ich glaube, Vinscool hat RMT 1.31 auf einen Level wo man es als Fertig deklarieren könnte, werde Ich probieren jemand zu finden der uns RMT auf den Mac kompilieren kann. Wie immer könnte es sein das im Code etwas genutzt wird das Windows-spezifisch ist. Derjenige der das machen will sollte sich also schon auskennen mit den Unterschieden zwischen Windows und Mac und kleinere Problemchen lösen können. Aber wer sich gerufen fühlt, kann sich schon mal bei mir melden per PN oder besser noch Mail.

Tschüß

Mathy
Wer oder was hat denn da geblitzt?

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

ja Plogue

Benutzeravatar
pps
Beiträge: 511
Registriert: 18.06.2021 23:05
Has thanked: 112 times
Been thanked: 204 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von pps »

Mathy hat geschrieben:
15.01.2022 19:03
.
Hallo Peter, Leute

Prodehl hat geschrieben:
12.01.2022 13:30
Über den RMT bin ich schon gestossen ... leider geht der nur auf Windows und nicht auf Mac.
Sobald Ich glaube, Vinscool hat RMT 1.31 auf einen Level wo man es als Fertig deklarieren könnte, werde Ich probieren jemand zu finden der uns RMT auf den Mac kompilieren kann. Wie immer könnte es sein das im Code etwas genutzt wird das Windows-spezifisch ist. Derjenige der das machen will sollte sich also schon auskennen mit den Unterschieden zwischen Windows und Mac und kleinere Problemchen lösen können. Aber wer sich gerufen fühlt, kann sich schon mal bei mir melden per PN oder besser noch Mail.

Tschüß

Mathy
Das ist wohl kaum zu schaffen. Die Oberfläche nutzt doch sehr deutlich spezifische Windows API. Das programmiert sicher keiner mal eben um. Aber über wine soll der doch ganz gut laufen.
PP´s of STARSOFTBerlin__________github|meine Webseite

Online
Benutzeravatar
andymanone
Beiträge: 2445
Registriert: 17.08.2021 12:34
Wohnort: Berlin - Suburban
Has thanked: 480 times
Been thanked: 765 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von andymanone »

Prodehl hat geschrieben:
15.01.2022 19:03
ja Plogue
Ahh ja, das kenne ich natürlich ;).
Das ist ein typisches DAW Plugin (Logic, Cubase, whatever), damit kriegst Du den kreierten Sound/Song leider NICHT auf die ATARI-Hardware portiert.

Gtx.,
andY
Ressortleiter Hardware - Save the past and use the future!© andYManOne / Demozoo / Youtube

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

schade

Online
Benutzeravatar
andymanone
Beiträge: 2445
Registriert: 17.08.2021 12:34
Wohnort: Berlin - Suburban
Has thanked: 480 times
Been thanked: 765 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von andymanone »

Ich weiß das jetzt nicht,
aber falls Du ein bisschen "musikalisch" bist ;), wäre eventuell auch die MIDIJoy Lösung von Frederik (ich stehe mit ihm in gutem Kontakt) für Dich eine Option.

Frederik hat ein Modul für den Joystick-Port entwickelt, bei dem Du per externer MIDI-Quelle (Midi-Player, Sequenzer-Software, MIDI-Keyboard, etc.) eigene Songs (oder (bereits vorhandene) MIDI-Files)
auf dem POKEY "live" einspielen und abspeichern kannst.

Den abgespeicherten Song kannst Du dann später in Deinem Game oder Deiner Demo wieder einbinden und direkt verwenden.

-> MidiJoy

Damals hatte ich Frederik mit einem alten Bekannten von mir aus der Gamepark Zeit (Mark Watson - Entwickler des PokeyMax (= 1:1 POKEY "Ersatz" auf FPGA Basis))
bekannt gemacht und beide "motiviert" 8-) zusammen zuarbeiten ;).

Daraus entstand dann der "enhanced" PokeyMax mit Quad-POKEY, sowie SID-, YM-, Covox- etc. Engines "onboard" und Frederik hat die MIDIJoy-Software dann dafür passend erweitert,
sodass man per MIDIJoy die Audio-Cores alle direkt ansprechen kann...
Und das alles auf einem klassischen ATARI 8-Bit ;).

Das nur mal so zur Info...

Sag Bescheid, falls Dich das genauer interessiert...

Gtx.,
andY
Ressortleiter Hardware - Save the past and use the future!© andYManOne / Demozoo / Youtube

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

Guten Morgen Andy,
vielen Dank für Deinen Post... ja, das hört sich sehr interessant für mich an!
Darüber würde ich gerne mehr erfahren und könnte die beste Lösung für mich sein!!
Gruß
Peter

Online
Benutzeravatar
andymanone
Beiträge: 2445
Registriert: 17.08.2021 12:34
Wohnort: Berlin - Suburban
Has thanked: 480 times
Been thanked: 765 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von andymanone »

Prodehl hat geschrieben:
16.01.2022 11:03
Guten Morgen Andy,
vielen Dank für Deinen Post... ja, das hört sich sehr interessant für mich an!
Darüber würde ich gerne mehr erfahren und könnte die beste Lösung für mich sein!!
Gruß
Peter
Hallo Peter, alles klar.

Bin heute noch unterwegs, melde mich aber morgen dazu nochmal.

Gtx.,
andY
Ressortleiter Hardware - Save the past and use the future!© andYManOne / Demozoo / Youtube

Online
Benutzeravatar
andymanone
Beiträge: 2445
Registriert: 17.08.2021 12:34
Wohnort: Berlin - Suburban
Has thanked: 480 times
Been thanked: 765 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von andymanone »

Hallo Peter,

wie versprochen nochmal zurück zum Thema MIDIJoy.

Wie gesagt Du brauchst dafür:

1. das MIDIJoy-Modul
2. die MIDIJoy ATARI-Software
3. Ein MIDI-Keyboard oder (irgendeine) MIDI-Sequencersoftware mit MIDI-Out (DIN-5 oder USB-MIDI), kommerziell oder Freeware
4. einen "Stock" ATARI XL/XE (wie gesagt, MIDIJoy läuft auf einem ganz normalen POKEY,
nutzt aber - bei Vorhandensein - die erweiterten Features (Kanäle & Cores) vom PokeyMax, kleines Manko:
man kann (derzeit) nur die POKEY-Daten aufzeichnen und später in anderen Anwendungen weiterverwenden)

Das fertige Modul sieht dann am Ende so aus:

1586284097942.JPEG
1586284098275.JPEG

Ich hatte mal 6 Stück davon gebaut (und die Teensy´s geflasht),
aber vier davon sind an ABBUC´iner damals weggegangen ;), sodass
ich nur noch zwei davon hier habe, die ich ungern weggeben würde ;)

Wenn Du Dir das Modul selber basteln möchtest findest Du hier alle Infos auf GITHUB:

MidiJoy - Using your Atari as a Chiptune-instrument

Die BOM für die Hardware, die Gerber Files für das PCB, die Arduino-Software zum Flashen des Teensy,
sowie die ATARI-Software zum Ansteuern und Auswerten des Moduls.

(Wenn´s schnell gehen muss, kannst Du Dir das Ganze natürlich auch einfach fix auf einem Breadboard zusammenstecken.
Dann musst Du nur halt noch den Teensy mit dem Arduino-Code flashen (da könnte ich Dich ggf. auch unterstützen,
falls Du da Hilfe benötigen solltest)

Joo, und dann kannst Du im Prinzip loslegen :)!

In Github beschreibt Frederik detailliert den Aufbau der Hardware und die einzelnen Features der Software, also auch,
wie Du einen Song aufnimmst und ihn dann abspeicherst, um ihn später in eigenen ATARI-Programmen einzubinden.

Hier noch zwei Videos von ihm dazu:

MidiJoy - Chiptune-Music with the 8-Bit ATARI english version 1.0 (Recording playback/procedure)

und:

Hier noch ein kleines Video in Deutsch zur Version 2.0

Ich hoffe, dass hilft Dir erstmal ein bisschen weiter!

Wenn Du noch Fragen haben solltest, sag Bescheid...

Frederik hatte mit dem MIDIJoy 2.0 damals auch den ABBUC Hardwarewettbewerb 2020 gewonnen, aber leider sind die Infos dazu hier im neuen Forum (noch) nicht hinterlegt (?)....
(Der Software Wettbewerb geht chronologisch bis 2020, der Hardware-Wettbewerb endet leider bei 2018 ?)
Na vielleicht wird das ja noch nachgepflegt....

EDIT:
Ich muss mich korrigieren :roll: : Ich habe gerade in meiner Bastelkiste gekramt und festgestellt, dass ich zusätzlich noch zwei komplette unbestückte MIDIJoy-"Bausätze"
(PCB, alle Bauteile, sowie noch zwei ungeflashte Teensy 2.0) habe....

Gtx.,
andY
Ressortleiter Hardware - Save the past and use the future!© andYManOne / Demozoo / Youtube

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

Hallo Andy,
vielen Dank für deine umfangreiche und sehr interessante Antwort.
An den Bausätzen bin ich natürlich sehr interessiert... falls du noch einen Bausatz erübrigen kannst, sag mir einfach was du dafür haben möchtest.
Aktuell entwickelte ich meine Programme mit Eclipse/Atari Emulator... hast du noch eine gute Idee, wie ich auf meinem Mac-System mit dem Atari-Emulator und Eclipse die Sounds implementieren kann?
Liebe Grüße
Peter

Online
Benutzeravatar
andymanone
Beiträge: 2445
Registriert: 17.08.2021 12:34
Wohnort: Berlin - Suburban
Has thanked: 480 times
Been thanked: 765 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von andymanone »

Prodehl hat geschrieben:
17.01.2022 23:46
Hallo Andy,
vielen Dank für deine umfangreiche und sehr interessante Antwort.
An den Bausätzen bin ich natürlich sehr interessiert... falls du noch einen Bausatz erübrigen kannst, sag mir einfach was du dafür haben möchtest.
Aktuell entwickelte ich meine Programme mit Eclipse/Atari Emulator... hast du noch eine gute Idee, wie ich auf meinem Mac-System mit dem Atari-Emulator und Eclipse die Sounds implementieren kann?
Liebe Grüße
Peter
Hallo Peter,
sorry für die späte Rückmeldung!

@Bausatz:
Ja, einen kriegen wir hin. Wenn Du noch Interesse hast, würde ich mal 25€ + Versand in den Raum werfen.
Du müsstest Dir dann nur noch die beiden D-Sub 9 Adapterkabel besorgen (oder, statt die Buchsen direkt aufzulöten, diese als "Kabelpeitsche"
rausführen) und halt den Teensy mit dem Arduino-Code flashen.

Wichtig dabei ist noch, Folgendes zu beachten:
Wenn Du nur den "klassischen" DIN-5 MIDI-Anschluß verwendest, passt es genau wie auf dem Bestückungsplan und das Interface bekommt seine Versorgungsspannung direkt aus dem ATARI-Joystickport.
Solltest Du allerdings das USB-Interface als MIDI-Schnittstelle verwenden wollen, musst Du die Schottky-Diode (1N 5817) weglassen, da das Interface dann "USB-Powered" ist und es sonst zu Schäden am ATARI kommen könnte.
(Wenn Du beide Möglichkeiten nutzen möchtest, müsstest Du Dir dann halt ein USB-Kabel basteln, bei dem die +5V "gekappt" sind ;) )

Beste Grüße,
andY
Ressortleiter Hardware - Save the past and use the future!© andYManOne / Demozoo / Youtube

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

Hallo Andy,
vielen Dank... mal sehen ob ich mich da durchwurschteln kann... morgen wird mein eigener kleiner Atari-Raum fertig, wo ich solche Basteldinge auch machen kann... bist du vielleicht ganz zufällig auch auf der NOMAD??
Ich werde noch viele Fragen haben...
LG Peter

Online
Benutzeravatar
Kveldulfur
Beiträge: 620
Registriert: 17.08.2021 02:32
Has thanked: 233 times
Been thanked: 160 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Kveldulfur »

Hallo!

Die SFX Engine ist genial für Soundeffekte. Klein und leicht anzuwenden.
RMT ist besser um Musik umzusetzen, wenn man unterschiedliche Instrumente nachahmt.

Was ich mich allerdings frage: Darf ich diese SFX-Engine und RMT-Engine einfach in ein eigenes Programm einbinden und dann z.B. am Softwarewettbewerb damit teilnehmen? Ein Teil des Codes ist ja dann nicht mein eigen?

Grüße
Janko

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

Hallo Janko,
danke für den Tipp - ich werde mir auch mal die SFX Engine anschauen.
Deine Frage ist sicherlich berechtigt und sollte vielleicht mal von "oben" beantwortet werden. Prinzipiell ist ja speziell beim Sound nicht unbedingt der Abspielcode sondern der Sound selber die entscheidende Eigenleistung. Aber kann man natürlich auch anders sehen...
Liebe Grüße Peter

Benutzeravatar
pps
Beiträge: 511
Registriert: 18.06.2021 23:05
Has thanked: 112 times
Been thanked: 204 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von pps »

Kveldulfur hat geschrieben:
21.01.2022 09:43
Hallo!

Die SFX Engine ist genial für Soundeffekte. Klein und leicht anzuwenden.
RMT ist besser um Musik umzusetzen, wenn man unterschiedliche Instrumente nachahmt.

Was ich mich allerdings frage: Darf ich diese SFX-Engine und RMT-Engine einfach in ein eigenes Programm einbinden und dann z.B. am Softwarewettbewerb damit teilnehmen? Ein Teil des Codes ist ja dann nicht mein eigen?

Grüße
Janko
Also, wenn Du mal in die letzten Jahre schaust, wirst Du feststellen, dass auch sehr viele Programme am Wettbewerb teilgenommen haben, die auch RMT Musik abgespielt haben. Aber es ist erlaubt zu erwähnen, dass man den genutzt hat 😉
PP´s of STARSOFTBerlin__________github|meine Webseite

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

Hallo nochmal in die Runde,
hat jemand denn einen funktionierenden Code der SFX - Engine für den MADS in Eclipse.
Also so, daß man ihn direkt in den Code des Programmes einbinden kann?
LG
Peter

Online
Benutzeravatar
Kveldulfur
Beiträge: 620
Registriert: 17.08.2021 02:32
Has thanked: 233 times
Been thanked: 160 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Kveldulfur »

Hallo!

Ich habe mal schnell die Routine aus meinem Programm extrahiert.
Im VBI lässt Du die Engine fortwährend laufen und startest die Sounds, wenn Du diese benötigst:

Sfx-Demo.asm:

Code: Alles auswählen

		org $2000
		
		icl 'Systemkonstanten.asm'
		icl 'Sfx-Engine.asm'
		
; ### Konstante definieren#######################
; #

JoyHoch		equ $0e
JoyRunter	equ $0d		
JoyLinks	equ $0b
JoyRechts	equ $07		
		
; ### VBI #######################################
; #
; # Die SFX-Engine wird immer aufgerufen, dass ist kein Problem
; # Ist der Sound am Ende, passiert nichts weiter
;		
		.proc VBI
		
		jsr xSFX.ENGINE
		
		jmp XITVBV
		
		.end		

; ### Unterprogramme #############################
; #
		.proc JoyNull
		
		lda STICK0
		cmp #15
		bne JoyNull
		rts
		
		.end
				
; ### Hauptprogramm ##############################
; #

		.proc main

		ldy #<VBI			; VBI einrichten
		ldx #>VBI
		lda #7 			
		jsr SETVBV 
		
Loop		lda STICK0			; Loop zur Abfrage des Joysticks
		cmp #JoyHoch
		beq Hoch
		cmp #JoyRunter
		beq Runter
		cmp #JoyLinks
		beq Links
		cmp #JoyRechts
		beq Rechts
		jmp Loop
		
Hoch		lda #1				; Sound auswählen
		jmp @+
		              
Runter		lda #2
		jmp @+
		
Links		lda #3
		jmp @+
		
Rechts		lda #4

@               ldx #1          		; Kanal 1 wählen
                sec             		; force
                jsr xSFX.START
                jsr JoyNull
                jmp Loop
	
		.end
		
; ################################################
		run main

Sfx-Engine.asm:

Code: Alles auswählen

;@com.wudsn.ide.asm.mainsourcefile=Sfx-Demo.asm
; ================================================ LEVEL 1
; LEVEL1: Minimalversion, ein Befehl plus Schleifen
; === SFX ENGINE ====
;xSFX_PROCEED     - jump here 1 per frame at least
;
;xSFX_START  in:  A=sfx, X=channel, C=1 (force)
;                 A=sfx, C=0 (find free channel)
;            out: C=1 no free channel
;                 C=0 ok
;
;xSFX_STOP   in:  X=channel - will immediately terminate SFX on the specified channel
; ===
;
; Command:
;
;1. TIME,AUDF,AUDC
;4. LOOP          
;5. RTS  
		.proc xSFX
         
SFXZP           equ $80     		 ; ZPAGE
VPOKEY          equ AUDF1

ENGINE     	jmp xSFX_PROCEED         ; xSFX_ENGINE
START		jmp SFX_INSERT           ; xSFX_ENGINE+3
STOP       	jmp SFX_CHANNEL_OFF      ; xSFX_ENGINE+6


SFX_ENDRTS      iny
                lda (SFXZP),Y
                tay
                dey
                cmp #$ff
                bne SFX_RELOAD
                jsr SFX_CHANNEL_OFF
                jmp SFX_NXTCH

xSFX_PROCEED    ldx #3
SFX_CONTCH      lda SFX_NO,x
                bne SFX_PROCED
SFX_NXTCH       dex
                bpl SFX_CONTCH
                rts

SFX_PROCED      ldy SFX_TIME,x
                bne SFX_CONTTONE
                tay
                lda SFX_ADR_TAB-2,y
                sta SFXZP
                lda SFX_ADR_TAB-1,y
                sta SFXZP+1
                ldy SFX_CNT,x
SFX_RELOAD      iny
                lda (SFXZP),Y
                beq SFX_ENDRTS
                sta SFX_TIME,x
                iny
                lda (SFXZP),Y
                sta SFX_AUDF,x
                iny
                lda (SFXZP),Y
                sta SFX_AUDC,x
                tya
                sta SFX_CNT,x
SFX_CONTTONE    txa
                asl @
                tay
                lda SFX_AUDF,x
                sta VPOKEY,y
                lda SFX_AUDC,x
                sta VPOKEY+1,y
                dec SFX_TIME,x
                jmp SFX_NXTCH

SFX_CHANNEL_OFF
                txa
                asl @
                tay
                lda #$ff
                sta SFX_CNT,x
                lda #$00
                sta SFX_NO,x
                sta SFX_TIME,x
                sta VPOKEY,y
                sta VPOKEY+1,y
                rts

SFX_INSERT      bcs SFX_FORCE
                ldx #$03
SFX_FIND        ldy SFX_NO,x
                beq SFX_SETNO
                dex
                bpl SFX_FIND
                sec
                rts
SFX_FORCE       pha
                jsr SFX_CHANNEL_OFF
                pla
SFX_SETNO       asl @
                sta SFX_NO,x
                clc
                rts

SFX_NO     .HE 00 00 00 00
SFX_CNT    .HE FF,FF,FF,FF
SFX_TIME   .HE 00 00 00 00
SFX_AUDC   .HE 00 00 00 00
SFX_AUDF   .HE 00 00 00 00

SFX_ADR_TAB .word sfxSND1, sfxSND2, sfxSND3, sfxSND4
 .HE 01 48 A5
 .HE 01 40 A5
 .HE 01 38 A5
 .HE 01 30 A5
 .HE 01 28 A5
 .HE 01 20 A3
 .HE 01 18 A2
 .HE 00 00


		.end

; =====================
sfxSND1
 .HE 01 24 A7
 .HE 01 20 A7
 .HE 00 FF
 
sfxSND2                ; Donkey Kong
 .HE 02 44 A7          ; 2 Bilder mit AUDF- und AUDC-Werten abspielen
 .HE 01 43 A7
 .HE 01 44 A7
 .HE 01 3C A7
 .HE 01 3D A7
 .HE 01 3C A7
 .HE 01 35 A7
 .HE 02 34 A7
 .HE 01 35 A7
 .HE 01 34 A7
 .HE 01 28 A7
 .HE 01 27 A7
 .HE 01 29 A7
 .HE 01 28 A6
 .HE 01 27 A6
 .HE 02 28 A5
 .HE 01 27 A5
 .HE 01 28 A5
 .HE 01 29 A4
 .HE 01 28 A3
 .HE 04 28 A0
 .HE 04 32 A7
 .HE 01 33 A7
 .HE 03 32 A7
 .HE 01 33 A7
 .HE 03 32 A7
 .HE 01 33 A7
 .HE 04 32 A7
 .HE 01 32 A7
 .HE 01 32 00
 .HE 00 FF
 
sfxSND3                ; local perfect w Gyruss
 .HE 01 54 A2
 .HE 01 54 44
 .HE 01 54 A6
 .HE 01 54 48
 .HE 01 54 A8
 .HE 01 54 4A
 .HE 01 54 AA
 .HE 01 00 4A
 .HE 01 00 AA
 .HE 01 00 4A
 .HE 01 00 AA
 .HE 01 00 48
 .HE 01 00 A8
 .HE 01 00 46
 .HE 01 00 A4
 .HE 01 00 42
 .HE 01 00 A2
 .HE 01 00 42
 .HE 00 FF

sfxSND4
 .HE 01 24 C2
 .HE 01 20 C6
 .HE 01 2C C8
 .HE 01 38 CC
 .HE 01 20 C8
 .HE 01 44 C4
 .HE 01 58 C2
 .HE 01 00 00
 .HE 01 00 00
 .HE 01 00 00
 .HE 01 58 C2
 .HE 01 18 C4
 .HE 01 78 C6
 .HE 01 08 C8
 .HE 01 08 E2
 .HE 00 FF
Mit dem Joysticks kannst Du die Sounds auswählen.
Hoffe es hilft weiter.

Grüße
Janko

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

Guten Morgen Janko,
vielen Dank dafür. Das hilft mir wirklich sehr weiter.
Ich habe die Engine gleich mal eingebaut und es läuft alles wunderbar stabil.
LG
Peter

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

die Syntax für die Sounds sind ja relativ klar zunächst.
Die Sounds werden in einer Hex-Tabelle definiert, wobei hier die Tonlänge, der Ton selber und die Tonlautstärke definiert ist. Vorher wird der Kanal festgelegt.
Länge und Lautstärke ist klar, der Ton selber geht von 00 bis FF - gibt es da eine Zuordnung der Hexa-Werten zu den eigentlichen Tönen?

Online
Benutzeravatar
Kveldulfur
Beiträge: 620
Registriert: 17.08.2021 02:32
Has thanked: 233 times
Been thanked: 160 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Kveldulfur »

Hallo!

Da möchte ich auf dieses Posting hinweisen:
viewtopic.php?p=3328#p3328

Dort wird auf eine Tabelle verlinkt, wo man sämtliche Töne und Werte finden kann.

Grüße
Janko

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

danke Janko, ich sehe du hast diese Probleme auch alle schon mal durchgemacht...

Ich nehme mal an, daß wir bei der Tabelle von Distorsion 10 ausgehen und bei der Spalte 8-Bit sind dann die entsprechenden Töne den Noten zugeordnet?!

note distortion 10

c 14 octave 7
b 15
a# 16
a 17
g# 18
g 19
f# 21
f 22
e 23
d# 25
d 26
c# 28
c 29 octave 6
b 31
a# 33
a 35
g# 37
g 40
f# 42
f 45
e 47
d# 50
d 53
c# 57
c 60 Octave 5
b 64
a# 68
a 72
g# 76
g 81
f# 85
f 91
e 96
d# 102
d 108
c# 114
c 121 Octave 4
b 128
a# 136
a 144
g# 153
g 162
f# 172
f 182
e 193
d# 204
d 217
c# 230
c 243 Octave 3
b 255


stimmt das so??

Online
Benutzeravatar
Kveldulfur
Beiträge: 620
Registriert: 17.08.2021 02:32
Has thanked: 233 times
Been thanked: 160 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Kveldulfur »

Hallo!

Ja, sieht gut aus, auch wenn in der XLS nut von 18 bis 243 die Werte gelistet sind ;-)

Grüße
Janko

Online
Benutzeravatar
Kveldulfur
Beiträge: 620
Registriert: 17.08.2021 02:32
Has thanked: 233 times
Been thanked: 160 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Kveldulfur »

Hallo!

Ich habe den Raster Music Tracker für meine Titelmelodie genutzt, wobei ich dabei natürlich kaum die Fähigkeiten des RMT ausgereizt habe. Dennoch musste ich neben der Sound-Datei auch den kompletten RMT-Player in meinen Code einbinden. Das fand ich sehr unschön, weil viel unnützer Code damit eingebunden wurde.
Heute habe ich es endlich geschafft, dass meine Titelmelodie über einen eigenen Code abgespielt wird. Bis auf, dass die Musik ein wenig schneller läuft, klingt diese tatsächlich identisch. Wieder eine Baustelle abgearbeitet :-)
Nun benötige ich noch Soundeffekte....

Wie weit bist Du mit Deiner Musik bzw. Soundeffekten Peter?

Grüße
Janko

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

Guten Morgen Janko,
ich habe mich in den letzten Tagen um Fehlerbereinigungen gekümmert, dabei den Speicherbedarf angepasst - startet jetzt bei $1000. Für die noch fehlende Landschaft habe ich Platzhalter gesetzt, damit ich den genauen Platz besser überblicken kann.
Ich brauche noch ein neues Item und die Kollision für den Player muss ich noch so programmieren, daß eine Aktion passiert - ein Schiff weniger und Start weiter vorne. Der Score läuft ja schon korrekt, bei bestimmtem Score muss dann ein Schiff dazu... ich brauche auch noch ein Intro und dann weiß ich genau was an Speicher für Sound bleibt.
Ein paar Soundeffekte habe ich ja schon drin - die muss ich noch überarbeiten und dann kommt der große Brocken der Intro-/und Hintergrundmusik. Der Abspielcode ist dank dir ja schon drin... auch den gilt es dann so zu optimieren, daß er schlank wird.
Ich beginne mich mit RMT zu beschäftigen, da ich denke, daß man hier am besten Musik und Sounds generieren kann - wie das dann in den Code eingebunden wird... keine Ahnung. Ich hoffte eigentlich, daß es mit dem Code der SF-Engine geht... da bist du also schon deutlich weiter und vielleicht brauche ich da deine Hilfe erneut.
Und dann ganz am Ende muss das Programm so kompiliert werden, daß es per Diskette auf einem Atari startet und läuft.
Ich bin am 9.4. auf der NOMAM und hoffe, daß ich da noch ein paar gute Inputs bekomme... wäre natürlich cool, wenn du da vorbeikommst!
LG
Peter

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

Mein Problem ist ja noch, daß ich alles auf Mac mache und der RMT läuft nur auf Windows... da habe ich nur einen Mac mit Parallels wo ich das machen könnte. Wine läuft nicht auf BigSure.

Online
Benutzeravatar
Kveldulfur
Beiträge: 620
Registriert: 17.08.2021 02:32
Has thanked: 233 times
Been thanked: 160 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Kveldulfur »

Prodehl hat geschrieben:
19.03.2022 08:44
...da bist du also schon deutlich weiter...
Hallo!

Nein, weiter bin ich nicht. Ich habe nur anders herum angefangen. Bei mir steht der Ladevorgang, das Intro und verschiedene Techniken. Das Spiel selbst ist dafür aber nicht wirklich weit vorangeschritten.
Ich wollte eigentlich erst ein Handheld der 80er Jahre nachprogrammieren. Als die Sounds 100% gleich klangen und man wirklich den Handheld wiedererkennen konnte, bekam ich Magenkneifen, ob das mit dem Urheberrecht passt. Dann habe ich alles verworfen und mit der Technik ein ähnliches Spiel mit anderer Story entworfen. :roll:
Wenn ich Deine ToDo-Liste sehe und meine, denke ich, wir haben beide noch gut zu tun ;)

Die SFX-Engine ist wirklich interessant wenn mein Effekte und kleinere Sounds machen möchte. Eine längere Hintergrundmusik ist da aber meiner Meinung nach nicht gut untergebracht.

Zur Nomam 2022 komme ich leider nicht.

Grüße
Janko

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

bin mal echt gespannt auf dein Werk, wenn es fertig ist!!

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

Ich habe nochmal eine Frage an die Soundexperten:

Normale Klangerzeugung 8 Bit, 4 Ton-/Frequenzkanäle
Klangerzeugung 16 Bit -> dann nur jeweils 2 Ton-/Frequenzkanäle??

Benutzeravatar
pps
Beiträge: 511
Registriert: 18.06.2021 23:05
Has thanked: 112 times
Been thanked: 204 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von pps »

Prodehl hat geschrieben:
23.03.2022 10:52
Ich habe nochmal eine Frage an die Soundexperten:

Normale Klangerzeugung 8 Bit, 4 Ton-/Frequenzkanäle
Klangerzeugung 16 Bit -> dann nur jeweils 2 Ton-/Frequenzkanäle??
Bin zwar kein Soundexperte 😉, aber solange kein zweiter POKEY eingebaut ist, ist diese Aussage betrachtet auf POKEY Sound korrekt.

Mit der GTIA könnte man wohl noch einen Kanal mehr haben, den aber nur in 8 Bit und direkt zu beschreiben, ala Sample Sound.
PP´s of STARSOFTBerlin__________github|meine Webseite

Benutzeravatar
LarsImNetz
Beiträge: 149
Registriert: 24.08.2021 18:27
Has thanked: 105 times
Been thanked: 79 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von LarsImNetz »

Mein Spiel ist extrem weit ;-) nur noch komplett ohne Sounds. Die Titelmelodie ist einfachst zusammengestrickt, wird vielleicht nochmal überarbeitet. Ich stöppsel mir gerade recht primitiv einen Sound-Editor zusammen. Ist auch ein gutes Training für den eigenen Compiler um zu prüfen, ob es nicht noch das ein oder andere Feature dafür gibt.

Beim Sound gibt es auch noch 2x 8bit und 1x16Bit also 3 Kanäle. Gerade für sauberen tiefen Bass ist der 16Bit Kanal gut geeignet.

Benutzeravatar
Dr. Irata
Beiträge: 890
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 263 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von Dr. Irata »

Hallo Lars, zu welchem Genre gehört denn dein Spiel?
Jeder strickt sich seine Sachen selber zusammen ;-)

Benutzeravatar
LarsImNetz
Beiträge: 149
Registriert: 24.08.2021 18:27
Has thanked: 105 times
Been thanked: 79 times
Kontaktdaten:

Re: Sounds in Assembler

Beitrag von LarsImNetz »

Action maze chase video game ;-)

Mehr will ich noch nicht verraten.
Es ist wesentlich aufwändiger das Umzusetzen, als das Oxygene Be. Die Bewegung der Gegner ist viel komplexer/fummeliger.
Ich hatte es zuerst mit einem Floyd-Warshall-Algorithmus versucht, was super lief, weil das Auffinden der eigenen Spielfigur in O(1) geht, aber der vorberechnete Datensatz frisst pro Level zusätzlich 8kb und soviel wollte ich nicht investieren. Ein Packer könnte das zwar eindampfen auf ca. 3kb nebst Leveldaten, aber bei >20 Leveln reichen die 64kb nicht aus.
Das Berechnen der Floyd-Warschall-Leveldaten im Levelwechsel verbietet sich, weil O(n³) mit n=91 auf einem Atari einfach nicht in < 10s zu machen ist. Eine 3fach geschachtelte leere Schleife die jeweils von 0-90 zählt braucht schon >11s.

Weitere Ansprüche:
* Das Spiel startet von einem normalen DOS ab $1F00
* Es besteht aus einer Datei.
* Das Spiel läuft einigermaßen ruckelfrei und flackert nicht.
* Es läuft auf einem Atari 800 mit 48kb RAM bei 60Hz in NTSC. PAL wäre hier echt entspannter.
* Auf das Nachladen der Leveldaten von Disk im Spiel wird verzichtet.

Es gab ein paar Zeit- und Speicher-Probleme, aber die Herausforderungen sind gelöst.
Es gibt noch ein paar offene Punkte, aber momentan fehlen vor allem die Geräusche.

Was mir ja vorschweben würde, wäre ein Sound-Analyse Programm das per Fast-Fourier-Transformation Töne analysiert und statt es in MP3 umzusetzen dann in Atari Sounds umsetzt. Es würde echt helfen, gibt es aber aktuell nicht. *Mit Zaunpfahl wink*
So etwas, wie es der Rastaconverter mit Bildern macht.

LG
Lars

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast