Page 1 of 1

short and sweet Sound bank designer

Posted: Mon Aug 10, 2009 3:27 pm
by Twilighte
I wrote this handy little utility after getting fed up with the rather limited PLAY and SOUND command in Oric BASIC.
It allows one to set up a bank of register values, send them to the AY and Save/Load them from Disk (16 bytes).
It took about an hour to write but will prove very useful to me and perhaps others.

It requires Sedoric to run since it uses Sedorics USER command to call the ROM routine passing X and Y parameters (address of sound bank).
The program is totally in BASIC and if enough people want it, i can write a special version that doesn't require SEDORIC 8)

The utility is called SDES (Sound bank DESigner) and looks like this..

Image

As you'll see all instructions on screen.
and the tap is below..

http://www.defence-force.org/ftp/forum/ ... s/sdes.tap

From the Oric bible (AUG) the following Oric sounds can be made using this utility. Just enter the bank data for each below..

Ping

Code: Select all

18
00
00
00
00
00
00
7E
10
00
00
00
0F
00
Shoot

Code: Select all

00
00
00
00
00
00
0F
47
10
10
10
00
08
00
Explode

Code: Select all

00
00
00
00
00
00
1F
47
10
10
10
00
18
00
For a more detailed explanation of the registers available please refer to the sound section of the defence-force wiki.. :twisted:

http://wiki.defence-force.org/doku.php?id=oric:main

Happy Oricing :D

Posted: Mon Aug 10, 2009 10:44 pm
by ibisum
This is awesome .. you've basically opened up the AY chip for full-synthesis .. cooooool!

Posted: Tue Aug 11, 2009 8:58 am
by Twilighte
Through sedoric it is very easy to call the ROM routine with parameters from BASIC :)
For example..

just place the following towards the start of your program.

Code: Select all

USER 1,DEF #FA86
And then treat #BFE0 - #BFED as the AY registers.
You actually don't need to worry too much about the initial register values (The ROM routine protects against anything too unpleasent) 8)

Everytime you want to make the change..

Code: Select all

USER 1,X#E0,Y#BF
This will send the memory range to the AY registers :)

The ROM routine sits at $FA86 and if passed the address in X and Y registers will dump 14 bytes from the address to the AY registers.

Posted: Tue Aug 11, 2009 3:16 pm
by waskol
Awsome !!!

Oh yes ! Without Sedoric ! Pleeeeeeeeeeaaaaaaaaaaaaseeeeee.... :lol:

Posted: Thu Aug 13, 2009 9:15 am
by Twilighte
I'm at work atm..
hmm, i wonder if i can tell you how to do it without being at home..

CLOAD the program, and enter these lines..

Remove the line or text..

Code: Select all

USER 1,DEF #FA86
Replace this text..

Code: Select all

USER 1,X#E0,Y#BF
with

Code: Select all

CALL #BFF0
Then enter these new lines

Code: Select all

1 DOKE #BFF0,#E0A2
2 DOKE #BFF2,#BFA0
3 POKE #BFF4,#4C
4 DOKE #BFF5,#FA86
Now save the program and it should (fingers crossed) work!

And just for information the actual mc was..

Code: Select all

ldx #E0
ldy #BF
jmp $FA86

Posted: Tue Nov 10, 2009 10:26 pm
by Twilighte
Some interesting rythms can be had by mixing eg repeting sawtooth or triangle with chip channels as the following example demonstrates nicely.

D5,3,EB,3,0,0,0,7C,10,10,0,1D,0,8

This should work on both emu and real oric in same way but difficult to know for sure without trying it.