Skip to content

Extending the VGM specification with an Atari Lynx chip

Technical discussion about the VGM format, and all the software you need to handle VGM files.

Moderator: Staff

  • laoong Offline
  • Posts: 3
  • Joined: 2022-02-11, 13:28:34

Extending the VGM specification with an Atari Lynx chip

Post by laoong »

Hi!
I'm developing Atari Lynx emulator and recently I've started working on extending Furnace tracker with Atari Lynx support. Adding support to a new chip means also making it to be supported in file formats. One of those formats I need a support from is VGM.
I would like to ask then, what are the rules of extending VGM to new chips?
I'm thinking about something like a green light from community to make it more official.
Technically it seems to be simple. Firstly there can be used an empty field at offset 0xE4 to store Mikey's (The Atari Lynx' chip) frequency. It's 16 MHz. Secondly there need to be reserved a two operand command code. 0x4E? There does not need to be a support to duap-chip, as Lynx is an not-extendable handheld.
What I can do: I can write support to libvgm, as I have already a working emulator (github.com/laoo/Felix). A can extend my emulator to dump its audio as VGMs. Last but not least I can add support for VGM export in Furnace when it's done.
  • Quantam Offline
  • Posts: 24
  • Joined: 2020-03-05, 9:25:23

Post by Quantam »

Looking at the tech specs for the Lynx, is it really necessary at all? If I understand correctly it's mostly just digital audio. Or do many games use it in PSG mode?
  • laoong Offline
  • Posts: 3
  • Joined: 2022-02-11, 13:28:34

Post by laoong »

There are indeed four 8 bit DACs, but not many games did use it for music. The music and effects are mostly generated using 12 bit LFSR with 9 bits of tap selector (9 outputs of the 12 bit shift register are individually selectable as inputs to a large exclusive or gate) with optional integration (which produces triangle wave instead of square).
I already have implemented VGM writer in my emulator and now I'm extending libVGM. I'll attach sample proof of concept when ready.
  • laoong Offline
  • Posts: 3
  • Joined: 2022-02-11, 13:28:34

Post by laoong »

I've done simple Proof of Concept adding Atari Lynx implementation to a fork of libVGM.

https://github.com/laoo/libvgm

Attaching three example vgm files.

The source compiles using visual studio solution. I have some problems with cmake project - I really never learned how to use it properly. :roll:
Attachments
FunkyXmas.vgm
(257.13 KiB) Downloaded 125 times
Acidjazzed_Evening_1.vgm
(351.21 KiB) Downloaded 111 times
2048.vgm
(82.2 KiB) Downloaded 138 times
  • miker Offline
  • Posts: 1
  • Joined: 2022-02-11, 11:37:38

Post by miker »

Hi guys!

Here's another one made using forked version of Furnace Tracker (cover from rather known game Tyrian).

Enjoy!
Attachments
Camanis.vgm
(152.13 KiB) Downloaded 148 times
Post Reply