kramlat
Moldy Popcorn
got slack?
Posts: 42
|
Post by kramlat on Nov 24, 2009 14:51:12 GMT -5
launch has begun! >> www.filefactory.com/file/a1f3982/n/kramlib_setup.exeJust to let you all know, I will be releasing a developer library called kramlib for BasiEgaXorz (asmx version only) relatively soon. It will be able to: * Play FM sound (Sonic3 SMPS style) * will have drum samples * Can do sine, cosine, tangent, and arctangent * Can do psuedo-random numbers * Has a wait timer * Can do Nemesis, Enigma, and Kosinski compression * It is themable. Place "SMPS Themes" folder into your compiler directory and use inline assembly includes to load the music banks from there. * A Sonic3 theme will be with release, hope others can come up with more choices for our developers. University of Montana will be receiving a copy of kramlib plus demo next week on Wednesday and this community and Sonic Retro will get it on December 1st. I hope people are looking forward to this release and kramGFX next year. ;-)
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Nov 25, 2009 18:57:03 GMT -5
Sounds great
|
|
|
Post by Syniphas on Nov 25, 2009 20:45:31 GMT -5
Might motivate me to write a couple of new games
|
|
|
Post by Tom Maneiro on Nov 25, 2009 21:56:00 GMT -5
Maybe it's time to add some REAL music to CrazyBus and PLACAMASTER Oh, wait - i need to learn how to compose music first! Anyway, i will keep an eye on this... BEX is nice and all, but needs some cool libraries (like we did in the ol' VB6 ages: can't code something? Grab an ActiveX control and you're done).
|
|
|
Post by TheMVRules on Nov 30, 2009 13:41:00 GMT -5
(de)Compression and DAC samples sounds nice to me. Also, you could use TFM music maker to compose music. To get the replayer to work on real hardware, replace the POKEINT's with assembly MOVEs. Just remind that ASM "" doesn't work so you'll have to use ASM...END ASM. You'll need to put an $76 to beginning of Z80 ram at the beginning too.
1st december - that's tomorrow!
|
|
oompa loompa
I AM THE GOVERNATOR
"Git 'Er Dun!"
Posts: 1,301
|
Post by oompa loompa on Dec 1, 2009 0:21:01 GMT -5
cool, a nice sound driver is good i don't remember which driver i got working on real hardware on BEX, i think it was shiru's (i don't remeber the name). it had a pretty cool tracker too, which also used the mame ym2612 module to play sounds while editing. but anyways, if you can't get the thing to work on real hardware, i could aid in getting it to work (99% of the time, i've seen coders write wrong stuff to the z80 control registers on the 68k side, so watch for that )
|
|
|
Post by TheMVRules on Dec 1, 2009 11:01:17 GMT -5
That's the one I meaned.
|
|
kramlat
Moldy Popcorn
got slack?
Posts: 42
|
Post by kramlat on Dec 1, 2009 23:33:34 GMT -5
www.filefactory.com/file/a1f3982/n/kramlib_setup.exehere we have the release I promised. Enjoy! includes demo program and source code. note: tfm music maker voices work with xm4smps which puts your xm (protracker II) module in sonic1 format and you can use music pointer fixer to convert to the format used in kramlib (select sonic1 to sonic3/k). retro's (sonic retro) guide can provide info on the pointers for songs. assume kramlib = sonic3.
|
|
|
Post by Tom Maneiro on Dec 2, 2009 2:34:30 GMT -5
Cool! Galaxian using some REAL sound effects Nice stuff... Have you planned to write some cool documentation for it? Anyway, i will keep an eye on this. Excellent job... Who said that the Genesis/MD scene was dead?
|
|
|
Post by TheMVRules on Dec 2, 2009 11:10:34 GMT -5
Nice I'm going to test this asap. (app 2 weeks)
|
|
kramlat
Moldy Popcorn
got slack?
Posts: 42
|
Post by kramlat on Dec 2, 2009 11:24:51 GMT -5
first off the soundtest in the demo tells you what asm is needed to play a certain sound effect or music (only 2 lines of inline assembly actually, lol) but you need to add this line inside an asm block at the beginning of your app/game to use sound and as for the galaxian, it is only there to be a practical use demo and nothing more though I admit that we have a few bug fixes over devster's version though and improved graphics. but did you know I used compressed data in the soundtest screen?
the palette cycle is kosinski compressed. all the art is nemesis compressed. the mappings for the screen are enigma compressed.
I was hoping to demo the sin, cos, tan, atn, and rnd functions too but no time. btw, kramlib uses long data on its rnd function.
if you need documentation, open slibrary\kramlib.s and smps themes\sonic3\theme.s which both an inline asm block at the end of the program. also you need to define __long_rng_seed somewhere above $FFF000 or symbol problems will occur
|
|
|
Post by Tom Maneiro on Dec 2, 2009 12:29:28 GMT -5
Nemesis compression, eh? Surely i NEED that... time to put my ROMs on diet.
God, i need to research more! Anyway, a couple of ASM lines for playing SFX/BGM are pretty easy to deal with.
|
|
|
Post by Syniphas on Dec 2, 2009 13:47:38 GMT -5
Output File: basic.bin Pass 1 Pass 2 basic.s:21: *** Error: Symbol 'NEMDEC' undefined *** 002E78 4EB9 00000000 jsr NemDec ; Decompress it. basic.s:25: *** Error: Symbol 'NEMDEC' undefined *** 002E8E 4EB9 00000000 jsr NemDec ; Decompress it. basic.s:28: *** Error: Symbol 'NEMDEC' undefined *** 002EA4 4EB9 00000000 jsr NemDec ; Decompress it. basic.s:32: *** Error: Symbol 'ENIDEC' undefined *** 002EBA 4EB9 00000000 jsr EniDec ; Decompress it. basic.s:35: *** Error: Symbol 'KOSDEC' undefined *** 002ECC 4EB9 00000000 jsr KosDec ; Decompress it. basic.s:36: *** Error: Symbol 'LOADSOUNDSYSTEM' undefined *** 002ED2 4EB9 00000000 jsr LoadSoundSystem ; initialize Samplized Music Processing System basic.s:38: *** Error: Symbol 'PLAYMUSIC' undefined *** 002EDC 4EB9 00000000 jsr PlayMusic ; Play the music. basic.s:579: *** Error: Symbol 'PLAYSE' undefined *** 0036C8 4EB9 00000000 Jsr PlaySE basic.s:610: *** Error: Symbol 'PLAYSE' undefined *** 003736 4EB9 00000000 Jsr PlaySE basic.s:646: *** Error: Symbol 'PLAYSE' undefined *** 0037AE 4EB9 00000000 jsr PlaySE basic.s:655: *** Error: Symbol 'PLAYSE' undefined *** 0037D0 4EB9 00000000 jsr PlaySE basic.s:681: *** Error: Symbol 'PLAYSE' undefined *** 003826 4EB9 00000000 jsr PlaySE basic.s:690: *** Error: Symbol 'PLAYSE' undefined *** 003848 4EB9 00000000 jsr PlaySE basic.s:704: *** Error: Symbol 'PLAYSE' undefined *** 003872 4EB9 00000000 jsr PlaySE basic.s:717: *** Error: Symbol 'PLAYSE' undefined *** 00389C 4EB9 00000000 jsr PlaySE basic.s:752: *** Error: Symbol 'PLAYSE' undefined *** 003912 4EB9 00000000 jsr PlaySE basic.s:761: *** Error: Symbol 'PLAYSE' undefined *** 003934 4EB9 00000000 jsr PlaySE basic.s:787: *** Error: Symbol 'PLAYSE' undefined *** 00398A 4EB9 00000000 jsr PlaySE basic.s:796: *** Error: Symbol 'PLAYSE' undefined *** 0039AC 4EB9 00000000 jsr PlaySE basic.s:810: *** Error: Symbol 'PLAYSE' undefined *** 0039D6 4EB9 00000000 jsr PlaySE basic.s:823: *** Error: Symbol 'PLAYSE' undefined *** 003A00 4EB9 00000000 jsr PlaySE basic.s:860: *** Error: Symbol 'PLAYSE' undefined *** 003A78 4EB9 00000000 jsr PlaySE basic.s:869: *** Error: Symbol 'PLAYSE' undefined *** 003A9A 4EB9 00000000 jsr PlaySE basic.s:895: *** Error: Symbol 'PLAYSE' undefined *** 003AF0 4EB9 00000000 jsr PlaySE basic.s:904: *** Error: Symbol 'PLAYSE' undefined *** 003B12 4EB9 00000000 jsr PlaySE basic.s:918: *** Error: Symbol 'CHANGETEMPO' undefined *** 003B3C 4EB9 00000000 jsr ChangeTempo basic.s:920: *** Error: Symbol 'PLAYSE' undefined *** 003B46 4EB9 00000000 jsr PlaySE basic.s:933: *** Error: Symbol 'CHANGETEMPO' undefined *** 003B70 4EB9 00000000 jsr ChangeTempo basic.s:936: *** Error: Symbol 'PLAYSE' undefined *** 003B7A 4EB9 00000000 jsr PlaySE basic.s:961: *** Error: Symbol 'PLAYMUSIC' undefined *** 003BC6 4EB9 00000000 jsr Playmusic basic.s:974: *** Error: Symbol 'PLAYSE' undefined *** 003BF0 4EB9 00000000 jsr PlaySE basic.s:988: *** Error: Symbol 'CHANGETEMPO' undefined *** 003C1A 4EB9 00000000 jsr ChangeTempo basic.s:990: *** Error: Symbol 'PLAYSE' undefined *** 003C24 4EB9 00000000 jsr PlaySE basic.s:1003: *** Error: Symbol 'CHANGETEMPO' undefined *** 003C4E 4EB9 00000000 jsr ChangeTempo basic.s:1005: *** Error: Symbol 'PLAYSE' undefined *** 003C58 4EB9 00000000 jsr PlaySE basic.s:1031: *** Error: Symbol 'PLAYMUSIC' undefined *** 003CA4 4EB9 00000000 jsr Playmusic basic.s:1044: *** Error: Symbol 'PLAYSE' undefined *** 003CCE 4EB9 00000000 jsr PlaySE basic.s:1057: *** Error: Symbol 'CHANGETEMPO' undefined *** 003CF8 4EB9 00000000 jsr ChangeTempo basic.s:1059: *** Error: Symbol 'PLAYSE' undefined *** 003D02 4EB9 00000000 jsr PlaySE basic.s:1072: *** Error: Symbol 'CHANGETEMPO' undefined *** 003D2C 4EB9 00000000 jsr ChangeTempo basic.s:1074: *** Error: Symbol 'PLAYSE' undefined *** 003D36 4EB9 00000000 jsr PlaySE basic.s:1119: *** Error: Symbol 'PLAYSE' undefined *** 003DBA 4EB9 00000000 jsr PlaySE basic.s:1186: *** Error: Symbol 'PLAYSE' undefined *** 003E96 4EB9 00000000 jsr PlaySE basic.s:1412: *** Error: Symbol 'PLAYMUSIC' undefined *** 0041BC 4EB9 00000000 jsr PlayMusic basic.s:1656: *** Error: Symbol 'PLAYMUSIC' undefined *** 004562 4EB9 00000000 jsr PlayMusic basic.s:1956: *** Error: Symbol 'PLAYMUSIC' undefined *** 004A22 4EB9 00000000 jsr PlayMusic basic.s:2141: *** Error: Symbol 'PLAYSE' undefined *** 004CCC 4EB9 00000000 jsr PlaySE basic.s:2599: *** Error: Symbol 'PLAYSE' undefined *** 0052A6 4EB9 00000000 jsr PlaySE basic.s:2653: *** Error: Symbol 'CHANGETEMPO' undefined *** 005380 4EB9 00000000 jsr ChangeTempo basic.s:2839: *** Error: Symbol 'PLAYSE' undefined *** 00560C 4EB9 00000000 jsr PlaySE basic.s:3021: *** Error: Symbol 'CHANGETEMPO' undefined *** 005880 4EB9 00000000 jsr ChangeTempo basic.s:3033: *** Error: Symbol 'PLAYMUSIC' undefined *** 0058AA 4EB9 00000000 jsr PlayMusic basic.s:3054: *** Error: Symbol 'PLAYMUSIC' undefined *** 00590E 4EB9 00000000 jsr PlayMusic basic.s:3080: *** Error: Symbol 'PLAYSE' undefined *** 005984 4EB9 00000000 jsr PlaySE basic.s:3160: *** Error: Symbol 'CHANGETEMPO' undefined *** 005AAA 4EB9 00000000 jsr ChangeTempo basic.s:3162: *** Error: Symbol 'PLAYSE' undefined *** 005AB4 4EB9 00000000 jsr PlaySE basic.s:3199: *** Error: Symbol 'PLAYMUSIC' undefined *** 005B4E 4EB9 00000000 jsr PlayMusic basic.s:3206: *** Error: Symbol 'CHANGETEMPO' undefined *** 005B68 4EB9 00000000 jsr ChangeTempo basic.s:3208: *** Error: Symbol 'PLAYMUSIC' undefined *** 005B72 4EB9 00000000 jsr PlayMusic basic.s:3261: *** Error: Unable to open INCLUDE file 'slibrary\kramlib.s' *** 005BF2 include "slibrary\kramlib.s" ; Include this to use all kramlib functions including math, compression, and sound basic.s:3263: *** Error: Unable to open INCLUDE file 'SMPS Themes\Sonic3\theme.s' *** 005BF2 include "SMPS Themes\Sonic3\theme.s" ; Sonic The Hedgehog 3 theme for kramlib (default)
00061 Total Error(s)
UnSuccessfully Compiled :( ! 61 Asmx errors Have a nice day
Press ESC to close the log window
Oh god what is this i am not good with asm
|
|
kramlat
Moldy Popcorn
got slack?
Posts: 42
|
Post by kramlat on Dec 2, 2009 16:08:11 GMT -5
(sigh) maybe the installer put everything in the wrong place kramlib.s needs to be in (location of basiegaxoz)\slibrary and so does the data folder with sine data and angle data.
I will maybe put 1.1 in a zip instead of an installer.
also SMPS Themes folder countains the music data and theme.s which defines the music data itself that folder too needs to be in the compiler's folder as well.
Sorry for such strict and manditory things, but this needs to be in that location due to limitations of the compiler. NemDec - nemesis decompression to vram, a0 = data label of compressed graphics. vdp register needs to be set to vram write at tile location as 16-bit vram address. format compresses art very efficiently. EniDec - enigma compression to ram, a0 = source, a1 = destination, d0 = offset in data location. you can shuffle your data to where it fits best or expand it directly to where you need it. usually a 0 offset is sufficient. format compresses screen mappings very efficiently. KosDec - kosinski decompression to ram. This is very easy to use. a0 = source, a1 = destination. very flexable compression and not as speciallized as the others. you can compress virtually anything with this. Sonic games usually use this for 128x128 block mappings and sonic 1 uses it for the equivilent (256x256 block mappings) LoadSoundSystem - call this at the beginning of your program. it loads the smps-z80 core no parameters are needed. just call it by itself. PlayMusic - literally that. d0 = index (byte type). look inside theme.s to see what is on the index. values range from 0x01 and 0x32. PlaySE - literally that. plays a sound effect. uses a very similar parameter to that of PlayMusic, just ranges from 0x33 and 0xDF. 0xE0 stops music abruptly. 0xE1 causes music to fade out. 0xFF plays "SEGA!" pcm file which is simply a raw wav-pcm without header. ChangeTempo - checks d0 for either a 0x08 byte or a 0x00 byte to determine if the music is supposed to speed up or slow down. kramlib.s - contains all kramlib subroutines and functions including all the ones listed above. all those errors are due to the library being improperly installed. theme.s - contains music symbol defines such as for the UVB, drumkits, sega pcm, music data, and sound effects. if that was the only missing include the errors would be different.
|
|
|
Post by walker7 on Dec 2, 2009 22:15:01 GMT -5
I think this is a job well done. Now, one interesting thing would be if there would be something that could be used to make your own songs for a game, but using an interface that would be similar to a MIDI file, with up to 6 tracks, as well as a voice bank modifier, all with full editing capabilities. You could also test your songs and voices in the voice bank, as well. The output could be as a .bin file, or in the clipboard (similar to what ImaGenesis does).
|
|