Texas Instruments SN76489 and VGM player
digimorf
Posts: 74
Hi to everybody, just to refresh the memory. Can you remember this VGM music player I have done ?
Now you can find it in the OBEX! I have included it in the archive of the Texas Instruments SN76489 driver I've uploaded. Of course the player has been udated to use the serial terminal as a virtual keyboard so that you can control the player. This is a basic version of the player. The songs are loaded from the SD card following a static platylist, and the lenght of each song is limited to 32k. A more advanced version has been coded for the C3 Synapse that is able to store longer songs.
http://obex.parallax.com/objects/891/
This version of the SN76489 driver is entirely written in asm and it's "ZiCOG/zq80 ready" since it has the IO interface embedded. Basically you have only to start the driver from the main COG by passing the pointer to the io_command long.
This is what the main cog for the SEGA SC-3000 emulator looks like, each emulated chip has it's own io interface embedded.
The SN76489 driver is lightweight and it takes only 142 longs of program memory and 16 longs of shared memory for register handling. Many fixes have been applied to the tone generators and the noise generator for a better accuracy on sound emulation.
I hope you will enjoy it.
Now you can find it in the OBEX! I have included it in the archive of the Texas Instruments SN76489 driver I've uploaded. Of course the player has been udated to use the serial terminal as a virtual keyboard so that you can control the player. This is a basic version of the player. The songs are loaded from the SD card following a static platylist, and the lenght of each song is limited to 32k. A more advanced version has been coded for the C3 Synapse that is able to store longer songs.
http://obex.parallax.com/objects/891/
This version of the SN76489 driver is entirely written in asm and it's "ZiCOG/zq80 ready" since it has the IO interface embedded. Basically you have only to start the driver from the main COG by passing the pointer to the io_command long.
CON _xinfreq = 5_000_000 ' Quartz is 5MHz _clkmode = xtal1 + pll16x ' System clock is 80MHz/96MHz VAR long io_command OBJ [B]psg : "PSG_SN76489_031"[/B] qz80 : "qz80" vdp : "TMS9928_VDP_ASM_007" PUB start | irqptr vdp.start ( @io_command ) qz80.start( @io_command ) [B]psg.start( @io_command )[/B]
This is what the main cog for the SEGA SC-3000 emulator looks like, each emulated chip has it's own io interface embedded.
The SN76489 driver is lightweight and it takes only 142 longs of program memory and 16 longs of shared memory for register handling. Many fixes have been applied to the tone generators and the noise generator for a better accuracy on sound emulation.
I hope you will enjoy it.