Cerca articoli...
Mini gallery
  • Varie/miscellanea
  • Eventi/viretro2014
  • Eventi/brusaporto 2013
  • Eventi/viretro2014
  • Eventi/brusaporto 2013
  • Eventi/brusaporto 2012
  • Eventi/brusaporto 2013
  • Eventi/brusaporto 2013
  • Eventi/brusaporto 2013
  • Eventi/brusaporto 2013
Articoli piu' letti
Storico articoli
Mailing list
Nome
Email
Iscrizione
Cancellazione
YouTube Channel
Facebook
VGM2XB - Un VGM song converter per TI-BASIC and Extended Basic

VGM2XB - UN VGM SONG CONVERTER PER TI-BASIC AND EXTENDED BASIC

 Venerdì, 06 Maggio, 2022 00:00

Per il TI99, già da qualche anno e grazie soprattutto a Mike 'Tursi' Brent (famoso per essere il programmatore dell'emulatore del Classic99 ma anche di un sacco di altra bellissima roba tra cui ad esempio Dragon's Lair su cartuccia), è approdata sul TI-99/4A la possibilità di poter usare le musiche in formato VGM, già molto noto per i giochi di computer e console degli anni'80.
Rasmus Moustgaard, ad esempio, ha sfruttato molto questa nuova possibilità implementandola nei suoi giochi per il TI-99 in assembler. Mancava però, almeno fino a oggi, la possibilità di poter fruire in qualche modo di questo formato in TI-BASIC o Extended BASIC.
Ecco quindi che arriva uno sviluppatore Italiano, Fabrizio Zavagli (appassionato del TI-99/4A sin da bambino), che ha prodotto un utile strumento di conversione!

Chi è Fabrizio Zavagli?

Il suo primo computer, quando era bambino, è stato il TI-99/4A. Questo lo ha aiutato a fare i primi esperimenti di programmazione nei quali ha riscontrato che, effettivamente, creare giochi poteva essere divertente almeno quanto giocarci. Dopo poco, venne in possesso del Commodore 64 ma era ancora troppo giovane per comprendere appieno l'assembler 6502. Fu poi con il passaggio all'Amiga, con la CPU Motorola 68000, che Fabrizio iniziò ad utilizzare l'assembler in modo proficuo. Il tanto tempo passato a studiare e sviluppare codice, lo aiutò a comprendere bene il funzionamento di hardware interno del computer e il suo software (qualcosa che si sta perdendo man mano che emergono sempre più generazioni di linguaggi di programmazione ndFZ). In quello stesso periodo riuscì anche a realizzare delle demo che furono poi rilasciate nel mondo demoscene Amiga.
Al giorno d'oggi, anche se il suo lavoro quotidiano non è legato ai giochi o alla programmazione, Fabrizio Zavagli continua a sviluppare in ASM per divertimento e per esercizio mentale, su molte piattaforme "retro": TI99, Commodore 64, Atari 2600, Vectrex ed altre, realizzando giochi e demo.

Il formato VGM

VGM (Video Game Music) è un formato di file audio per più piattaforme di videogiochi, come Sega Master System, Game Gear, Mega Drive/Genesis, MSX, Neo Geo, IBM PC AT (Adlib/SoundBlaster), e si è espanso ad una varietà di schede di sistemi arcade dal suo rilascio.

WinAMP (by Radionomy) supporta i file .VGM grazie all'aggiunta di un plug-in dedicato ed è un programma molto utilizzato per gestire tali file. (trovate il pacchetto qui)

Il convertitore VGM2XB

VGM2XB funziona in Windows in finestra DOS linea di comando (CMD) e può convertire le musiche VGM (con alcune limitazioni descritte di seguito, ndr) per essere usate in TI-BASIC o in Extended BASIC compilato sull'home computer TI-99/4A della Texas Instruments. Questo può convertire songs/moduli dal formato .VGM in un amichevole e molto compatto formato Ti99 BASIC o Extended BASIC (XB).

Di cosa si avrà bisogno per seguire questo tutorial?

  • Un PC con Windows;
  • files audio (musiche) in formato .VGM;
    (Un VGM di esempio è contenuto nell’archivio stesso del VGM2XB).
  • Un “tracker” (opzionale) per poter comporre musiche personalizzate (es. Mod2PSG2);
  • Convertitore VGM2XB;
  • Emulatore Ti99/4A (Classic99);

Come utilizzare il convertitore

Prima di tutto decomprimere l’archivio VGM2XB.zip in una cartella del vostro PC, all'interno troveremo i seguenti files:

VGM2XB.exe Il programma principale eseguibile per Windows;
vgmcomp.x VGM compressor by Tursi, è utilizzato da VGM2XB;
demotune.vgm Demo tune by MAT64;
readme.txt File di testo contenente le info in Inglese;

La sintassi del convertitore VGM2XB.exe è la seguente:

VGM2XB.exe <input.vgm> <output.txt> [opzioni]

le opzioni possibili sono le seguenti:

-p: PROGRAMMA BASIC completo (default);*
-d: Istruzioni DATA;*
-x: Istruzioni SOUND non compilate;*
Per programma XB completo, si intende un listato in Extended BASIC eseguibile completo di DATA e della routine di riproduzione. Le opzioni "Istruzioni DATA" e "XB SOUND", invece, generano solamente la parte dei DATA o dei CALL SOUND (queste ultime utilizzabili anche in TI BASIC)
-n: Include il canale del rumore, sperimentale;**
** Questa opzione permette d'includere il quarto canale "rumore" delle musiche VGM. In ogni caso, a causa delle limitazioni del BASIC, non è raccomandato farlo in quanto potrebbe provocare l'interruzione del suono, a meno che non siano soddisfatte certe condizioni (maggiori dettagli in seguito)
-r:
Imposta il timing per l'esecuzione come:
  • Hardware Reale, se si vuole inserire il codice in un programma XB che dovrà essere compilato (default)
-e:

Imposta il timing per l'esecuzione come:

  • Emulazione Classic99 e necessita di attivare la modalità CPU overdrive;
(Non si applica se usata l'opzione "istruzioni XB SOUND" [-x]).

Per fare un esempio concreto, seguiranno due esempi. Il primo mostrerà la procedura e relativo output della conversione del file di esempio DEMOTUNE.VGM al fine di ottenere un programma XB che possa essere utilizzato per un gioco compilato e che sia eseguibile nell’emulatore Classic99 (con modalità CPU Overdrive attivata). Nel secondo esempio invece, lo stesso file ma convertito in istruzioni CALL SOUND per poter essere eseguito in standard BASIC (o anche Extended BASIC) su macchina reale oppure emulatore, ma senza necessità di attivare CPU OVERDERIVE.

ESEMPIO XB OVERDRIVE CLASSIC99

Dal PC Windows si dovrà entrare in ambiente DOS (linea di comando: CMD) e quindi, dalla cartella del programma, digitare la seguente sintassi:

VGM2XB.exe demotune.vgm demotune.txt

Premendo invio al comando impostato, si avvierà il processo e verranno visualizzati tutti i passaggi di conversione.

A conclusione di tutto, se tutto sarà andato per il verso giusto senza errori si leggerà chiaramente la scritta 'Done' e il file nome del file di Output.

NB: Si noterà anche la presenza di un ulteriore file con estensione .SPF, questo può essere ignorato o cancellato; È solo un formato intermedio creato per arrivare al .TXT finale.

(N.B.: Le opzioni -p e -r sono quelle di default, quindi non è stato necessario digitarle. Al contrario, se si fosse voluto creare un file di istruzioni CALL SOUND, per un programma TI-BASIC (oppure Extended BASIC) che non doveva essere compilato, avremmo dovuto aggiungere l'opzione: -x
Nel caso di opzione -x, le CALL SOUND create non necessitano dell'attivazione CPU Overdrive perché non predisposte per la compilazione e possono essere suonate alla normale velocità del TI-99/4A).

A questo punto, nella cartella scelta, si potrà vedere il nuovo file appena creato con nome: demotune.txt, sarà a tutti gli effetti un programma completo in Extended BASIC e il listato si presenterà così:

Esempio per la procedura in Classic99 e test
Si potrà, quindi, andare ad ascoltare la musica convertita usando l'emulatore Classic99 (ricordandoci che in questo caso bisogna CPU Overdrive). Si potrà ascoltare la nostra musica semplicemente copiando il listato e incollandolo nell'emulatore tramite la voce di menu: Edit → Paste XB, e quindi RUN ed ENTER. (come visibile nel video qui di fianco)
ESEMPIO BASIC/XB CLASSIC99 (NO OVERDRIVE)

Utilizzando i seguenti parametri invece (con la stessa procedura vista nell'esempio precedente):

VGM2XB.exe demotune.vgm demotune.txt -x -r
1000 CALL SOUND(104,262,0,110,30,110,30)
1001 CALL SOUND(90,262,10,131,0,110,30)
1002 CALL SOUND(90,196,0,131,10,110,30)
1003 CALL SOUND(90,262,14,131,0,523,10)
1004 CALL SOUND(90,262,10,131,0,523,10)
1005 CALL SOUND(90,262,18,131,0,523,10)
1006 CALL SOUND(90,330,0,131,10,523,10)
1007 CALL SOUND(90,330,10,131,18,523,18)
1008 CALL SOUND(90,294,0,110,30,466,10)
1009 CALL SOUND(90,294,10,110,30,466,10)
1010 CALL SOUND(90,233,0,110,30,466,18)
1011 CALL SOUND(180,294,14,110,30,587,10)
1012 CALL SOUND(90,233,0,110,30,466,10)
1013 CALL SOUND(90,440,0,110,30,466,10)
1014 CALL SOUND(90,349,0,110,30,466,10)
1015 CALL SOUND(270,392,0,131,0,659,10)
1016 CALL SOUND(90,392,10,131,10,659,10)
1017 CALL SOUND(90,110,30,110,30,110,30)
1018 CALL SOUND(90,392,0,392,0,392,0)
1019 CALL SOUND(90,196,0,196,0,196,0)
1020 CALL SOUND(90,392,0,262,0,784,0)
1021 CALL SOUND(180,523,0,392,0,262,0)
Le le linee di CALL SOUND che che sono state ottenute, possono essere utilizzate su macchina reale o sugli emulatori, come anche Classic99 ma senza necessità d'impostare CPU Overdrive.
Esempio per la procedura in Classic99 e test
Si potrà, quindi, andare ad ascoltare la musica convertita usando l'emulatore Classic99 (ma anche su macchina reale), in BASIC o XB standard senza usare l'opzione CPU OVERDRIVE. Si potrà ascoltare la musica semplicemente copiando il listato e incollandolo nell'emulatore tramite la voce di menu: Edit → Paste XB, e quindi RUN ed ENTER. (come visibile nel video qui di fianco)

Ecco, avete fatto la vostra prima conversione di un file .VGM in Extended BASIC!
Ora vi potrete sbizzarrire nel comporre vostre melodie con un tracker, e poi convertirle semplicemente e includerle nei vostri programmi in TI-BASIC o Extended BASIC. In caso lo facciate, non dimenticate di menzionare e ringraziare Fabrizio Zavagli, che sarà sicuramente felice di sapere che è stato apprezzato il suo convertitoresmiley.

Comporre musiche originali in formato VGM

Per chi fosse interessato a cimentarsi nella realizzarne di brani originali propri, componendoli nota dopo nota, avrà bisogno di un “Tracker”.
Il più semplice e immediato (nonché gratuito) è: Mod2PSG2.

Il convertitore VGM2XB supporta la maggior parte dei comandi e degli effetti che fanno parte di Mod2PSG2, in particolare:

  • Polifonia con 3 canali PSG (da Channel0 a Channel2) - il Channel3 è il canale del “rumore” e, al momento su VGM2XB è solo sperimentale;
  • Effetti di volume e distorsione;
  • Strumenti personalizzati;

Ricordate di salvare la vostra musica in formato VGM per poter essere convertita (File → Export module → VGM).

Limitazioni e Suggerimenti

Di certo non si può pretendere molto dal TI-BASIC o dall'Extended BASIC nel poter eseguire qualsiasi musica, molte di quelle più famose esistenti, sono talmente veloci e con effetti particolari che, se convertite "as-is" e provate sul TI99, potrebbero deludere le aspettative. Il VGM2XB si impegnerà comunque (coraggiosamente), nel tentativo di convertire qualsiasi file .VGM gli verrà sottoposto. Ecco un elenco di massima delle limitazioni riscontrate:

  • La Dimensione: La memoria in XB è limitata e, purtroppo, non si è riusciti ad avere delle indicazioni precise su quanto può essere lunga una musica prima di avere un messaggio di "Memory Full", questo può dipendere da troppi fattori che riguardano come la musica è stata composta;
  • Gli effetti *strumentali* come i cambi di volume, sono supportati. Considerate però che usandoli andranno ad aumentare sostanzialmente la dimensione del file di output;
  • Si raccomanda di usare dettagli di volume nelle *tracce* che si vanno a comporre, usando il comando Vxx;
  • Il quarto canale "noise" è supportato, ma a causa delle limitazioni dell'Extended BASIC del Ti99. L'uso di questo canale probabilmente provocherà un'interruzione dei suoni degli altri canali, a meno che le note del canale "noise" non si vadano a sovrapporre sulle stesse linee di altre note dei canali da 1 a 3, facendo attenzione a tenere sotto controllo la durata del rumore almeno fino l'inizio della prima nota eseguita sugli altri canali. Magari impostare dei rumori brevi aiuterebbe;
  • Si deve sempre tenere presente quindi si sta lavorando pur sempre con programmi BASIC, quindi ci si potrà imbattere in limiti di velocità nella riproduzione dei VGM più complesse, molto più sicuro creare le proprie musiche usando una velocità bassa sul tracker (ad esempio a 6) e quindi salvarli in VGM e poi convertirli.

Lo sviluppatore non esclude che si possano scovare altre limitazioni o bug, gratitudine a chi vorrà segnalarli.

Altre Info:

  • Chi volesse contattare lo sviluppatore Fabrizio Zavagli, può raggiungere il suo sito: www.rasty.com
  • VGM2XB include parti dell'incredibile VGM Compressor di Tursi (Usato con permesso);
  • Il brano demo di Mat64 è un estratto dal prossimo WIP di Fabrizio Zavagli: Space Treat Ti;
  • Un particolare ringraziamento a Ciro Barile per tutti i test, i suggerimenti e l'amicizia;
  • Un ringraziamento speciale va anche alle persone e cani che hanno contribuito a questo progetto: Elder0010, Kamicane, Giozzy, Argo, MBR, Freshness, FRK, Jag, Kazzuya, Raoul, Mat64, Jazzcat e la banda di ONS.
   

Potete scaricare di seguito la versione aggiornata del VGM2XB converter:

- VGM2XB Converter v1.1 -


Vuoi commentare l'articolo?
 Nome
 Email
Il tuo commento
Verifica

I vostri commenti ...

stefano 2022-08-04 23:37:14 
Grandioso... W i pionieri del TI-99/4A come Fabrizio Zavagli! :-) <
> Grazie Ciro di tessere contatti continui e di recensire i prodotti dell'ingegno in ambito TI-99.<
> Ste

1

Google Translate

Don't understand Italian? Choose your language!

Materiale TI99?

Vuoi aiutarmi preservare la storia del TI-99 ?

Se possiedi Materiale Italiano e non che riguarda il TI-99 e che vorresti condividere nella nostra Community... contattami e potermo inserirlo nel nostro Database Globale

Donazione

Se desideri sostenere questo sito puoi inviare una donazione.

Hot Links

TI-99 RELEATED

RETROCOMPUTING altro...

Copyright © 2009-2024 by TI99 I.U.C. - Tutti i diritti riservati - All rights reserved - Loghi e marchi sono di proprieta' dei rispettivi proprietari.
E' vietata la riproduzione integrale o parziale di contenuti o documenti previa autorizzazione.
Copyright   |    Privacy