Jump to content

A VGM song/module converter for TI-99/4A in TI-BASIC and Extended Basic

Recommended Posts

Posted (edited)



version 1.1                          by Fabrizio Zavagli

"The only sources of information you can trust on the internet are .txt files" (Cit. Elder0010)


What it is:
VGM2XB is a tool for Windows and can convert VGM songs/modules to a friendly and very compact Ti99 Basic and Extended Basic (XB) format.

The VGM format is a very popular and widely adopted song/module standard across many platforms of 8-bit computers and consoles.
It can be generated using tools like, but not limited to, "Mod2PSG2": https://www.smspower.org/Music/Mod2PSG2

VGM2XB can convert VGM songs (with some limitations described below) to be used in compiled Extended Basic on the Ti99/4A home computer by Texas Instruments.

What is included in the package:


VGM2XB.exe          ->        Main executable file, the one to run (from command line)
vgmcomp.x           ->         VGM converter by TursiLion, keep it in the same folder as the main exe (it's automatically invoked from the converter)
demotune.vgm      ->         Demo tune by Kamicane
readme.txt            ->        This file


How it works:
Execute VGM2XB.exe from the command line using the following syntax:

VGM2XB <input.vgm> <output.txt> [options]

Where <input.vgm> is the source file in VGM format and <output.txt> is the output data generated in the selected format using the following options:

Options are as follows:


-p or -d or -x : select output mode between:
                                  - full BASIC PROGRAM [-p]
                                  - DATA statements [-d]
                                  - non-compiled BASIC SOUND statements [-x]
                                    (default is [-p] PROGRAM)
                           A full Basic program is a runnable Basic and Extended Basic program complete with the DATA and replay routine.
                           The "DATA statements" option, instead, generates just the DATA part.

-n                 : include noise channel, experimental (default is excluded)
                       This option allows you to include the 4th "noise" channel from VGM songs. Anyway, due to the limitations of Extended Basic, it is not recommended

                       to do so as it would likely result in sound breaking up unless certain conditions are met (see below)

-r or -e       : change timing and output type for playing in:
                         - Real hardware (as a compiled XB program) [-r]
                         - in emulated Classic99 CPU Overdrive [-e]
                       (Default is Real hardware. Does not apply to "XB SOUND Statements" output type [-x]).


In order to test your converted song, the best option is to load the Classic99 emulator and set the CPU Throttling option to "Overdrive".
Alternatively, you can generate SOUND statements (-x option) and test it in XB or even vanilla TI BASIC at normal speed (either emulated or real hardware).
Boot up the emulated Ti Basic and copy the contents of the output.txt file and paste it to Classic99 using the "Paste XB" funciton,
and finally RUN the program.

Finally, you will notice that the converter will also create a .spf file. You can ignore or delete it, as it is an "intermediate" conversion format.



Limitations and suggestions:
While VGM2XB will boldly try to convert pretty much any VGM file you throw at it, there are some limitations to be conscious about.


First of all it comes to size: XB memory is limited and, while I can't really give you exact indications on how long a song can be
before you run out of memory (as it is very much dependent on too many factors), you will surely hit some limit sooner or later.


Secondly, while *instruments* effects like volume changes are supported, consider that they could substantially increase the output size.
It is recommended using volume effects in the *tracks* instead, using the Vxx command.


The 4th "noise" channel is supported, but due to limitations of Ti99's Extended Basic using the Noise channel will likely result in
sound breaking up, unless the noise channel's notes happen on the same lines as other notes from channels 1 to 3 and you keep the noise
duration as short as possible.


Also consider that we are capped by the Ti99 speed, so super-speedy modules may not translate well.

If you don't know how to compile XB programs, there are several tutorials around, I suggest looking up on AtariAge forums first.

There are surely other limitations and bugs, so feel free to report them.



Contacts:    www.rasty.com



VGM2XB includes parts of TursiLion's amazing VGM compressor, a great tool you can find at: http://www.harmlesslion.com/cgi-bin/onesoft.cgi?88
Used with permission.

I also thank Ciro Barile of Ti99 IUC fame for all the testing and suggestions. 
The demo tune by Mat64 is an excerpt from my upcoming Ti99 game Space Treat TI.

Thanks a lot to the following people and dogs who have contributed to this project:
Elder0010, Kamicane, Giozzy, Argo, MBR, Freshness, FRK, Jag, Kazzuya, Raoul, Mat64, Jazzcat and the gang at ONS.


\\\\ by Fabrizio Zavagli


hope you will enjoy and use it! :)




- from the dedicated page on TI-99 Italian User Club (you can refer to it for the future updated versions of the VGM2XB)


- here, the direct link for the v1.1: VGM2XB_v1.1 - (by Fabrizio Zavagli).zip





Edited by ti99iuc
  • Like 10
  • Thanks 3

Share this post

Link to post
Share on other sites

For what it's worth, the version of vgmcomp that you are including is no longer supported by me, it's been superceded by a newer and more flexible suite of tools. Your link goes to the new software. :)


  • Like 4

Share this post

Link to post
Share on other sites
3 hours ago, eebuckeye said:

It would great to see a video in action!  Maybe @pixelpedant??  🙂

So many TI-99 topics, so little time.  I'll throw it on the pile.  But if someone gets to it before me, more power to them! :)

  • Like 4

Share this post

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...