Autore Topic: Wav-prg 3.4, Audiotap 1.4  (Letto 2865 volte)

fab

  • Utente
  • **
  • Post: 493
    • http://wav-prg.sourceforge.net/
  • Gioco Preferito: Tetris, Turrican, Impossible Mission
Wav-prg 3.4, Audiotap 1.4
« il: 26 Maggio 2008, 13:47:58 »
 Dopo oltre tre anni, una nuova versione.

Alcuni dei fattori che hanno ritardato l'uscita sono:
- l'indisponibilita' di cassette nei negozi
- l'assenza di un registratore allineato
- il fatto che Audacity, quando la CPU e' carica, a volte si mangia alcuni pezzi del file WAV che sta registrando, naturalmente senza avvertire l'utente

Il primo e' stato risolto grazie a un negozietto di elettronica che aveva qualche cassetta in fondo al magazzino. Il secondo, con un cacciavite e scaricando Azimuth 3000 da zophar.net, e ripulendolo un po' con Tapclean e un po' con un programma scritto da me appositamente.

La maggior parte delle novita' e' "sotto il cofano", ma qualcosa e' visibile.

libtap: la parte che effettua le conversioni audio<->TAP (cosa disapprovata da alcuni, specialmente in direzione audio->TAP). La parte audio->TAP e' stata in gran parte riscritta, e fornisce risultati migliori di Tape64 (giudizio assolutamente non obiettivo, prendetelo con le molle). Adesso, quando arriva un'onda, per determinare se si tratta di segnale o disturbo, la si confronta con l'altezza dell'onda precedente, invece che con un'altezza prefissata costante. Questo migliora il risultato nel caso di "buchi", cioe' punti della cassetta in cui il volume si abbassa.

libaudiotap: adesso usa Portaudio v19, il che significa che pablio.dll non serve piu'.

audiotap: tratta meglio i TAP versione 0 in caso di pause, e le pause lunghe. Nell'interfaccia grafica Windows, i nomi dei file appaiono senza il percorso

wavprg: prg2wav (linea di comando) ha un parametro -u, che implementa un'idea di iAN CooG: se usata, e il file di partenza e' e' .prg, al momento del FOUND appare il nome del file, invece di una stringa vuota. I file TAP generati sono ora riconosciuti dal selettore di VICE. Il plug-in turbotape.dll adesso riconosce alcuni programmi prima non visti, come quelli di http://perso.numericable.fr/ckckck/C64.html

Si possono scaricare, come sempre, da http://wav-prg.sourceforge.net .
Problemi noti: i binari Linux ancora sono quelli vecchi, i file -source.zip mancano di alcuni Makefile. Saranno risolti a breve.
Un giapponese sa recitare a memoria tutti i numeri di pi greco fino all'83431º decimale. Sa a memoria anche l'unico numero telefonico che è nella sua agendina - Daniele Luttazzi

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Wav-prg 3.4, Audiotap 1.4
« Risposta #1 il: 26 Maggio 2008, 20:51:02 »
 
Citazione
Dopo oltre tre anni, una nuova versione.
\o/

Citazione
wavprg: prg2wav (linea di comando) ha un parametro -u, che implementa un'idea di iAN CooG: se usata, e il file di partenza e' e' .prg, al momento del

yay! :)
Pero' io non riesco a ricompilare da me la versione commandline, mi mancano
htmlhelp.a e .h
libdl.a
libgen.h
e chissa' quant'altro. E' anche vero che uso mingw/msys e non mi sono mai preoccupato di scaricare una marea di libs aggiuntive.
Vedro' di scaricare il necessario se avro' tempo, in ufficio, ma se tu includessi gia' i binari precompilati anche per le versioni cmdline faresti cosa gradita.

Citazione
Il plug-in turbotape.dll adesso riconosce alcuni programmi prima non visti, come quelli di http://perso.numericable.fr/ckckck/C64.html

Bello, una variante di TT250. Ha giusto un byte 0x61 anziche' 0x01/0x02 dopo la sync sequence, basta una if(byt==0x61) byt=1; per implementarlo in tapclean =)
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

fab

  • Utente
  • **
  • Post: 493
    • http://wav-prg.sourceforge.net/
  • Gioco Preferito: Tetris, Turrican, Impossible Mission
Wav-prg 3.4, Audiotap 1.4
« Risposta #2 il: 26 Maggio 2008, 22:22:02 »
 Hmmm... ho provato a cambiare nome a htmlhelp.h (scaricato dal sito Microsoft da qualche parte). Usando MinGW e MSYS questo è il risultato

Codice: [Seleziona]
C:\Documents and Settings\Fabrizio\Documenti\wavprg\cvs\wavprg>make wavprg.exe
gcc    -c -o audiotap_file.o audiotap_file.c
gcc    -c -o 2prg_api.o 2prg_api.c
gcc    -c -o tapfile_read.o tapfile_read.c
gcc    -c -o wav2prg_core.o wav2prg_core.c
gcc    -c -o create_t64.o create_t64.c
gcc    -c -o t64utils.o t64utils.c
gcc    -c -o tapfile_write.o tapfile_write.c
gcc    -c -o prg2wav_core.o prg2wav_core.c
gcc    -c -o windows_gui/wav2prg_gui.o windows_gui/wav2prg_gui.c
windows_gui/wav2prg_gui.c:23:22: htmlhelp.h: No such file or directory
windows_gui/wav2prg_gui.c: In function `wav2prg_dialog_proc':
windows_gui/wav2prg_gui.c:620: error: `HH_DISPLAY_TOPIC' undeclared (first use i
n this function)
windows_gui/wav2prg_gui.c:620: error: (Each undeclared identifier is reported on
ly once
windows_gui/wav2prg_gui.c:620: error: for each function it appears in.)
make: *** [windows_gui/wav2prg_gui.o] Error 1
C:\Documents and Settings\Fabrizio\Documenti\wavprg\cvs\wavprg>make wav2prg.exe
gcc    -c -o command_line/messages.o command_line/messages.c
gcc    -c -o command_line/progressmeter.o command_line/progressmeter.c
gcc    -c -o command_line/wav2prg.o command_line/wav2prg.c
gcc    -c -o command_line/parse_options.o command_line/parse_options.c
gcc   -Wl,--out-implib=wav2prg.lib -o wav2prg.exe audiotap_file.o 2prg_api.o tap
file_read.o wav2prg_core.o create_t64.o command_line/messages.o command_line/pro
gressmeter.o command_line/wav2prg.o command_line/parse_options.o wav2prg.def
Creating library file: wav2prg.lib

C:\Documents and Settings\Fabrizio\Documenti\wavprg\cvs\wavprg>make prg2wav.exe
gcc    -c -o command_line/prg2wav.o command_line/prg2wav.c
gcc    -c -o command_line/process_input_files.o command_line/process_input_files
.c
gcc  -o prg2wav.exe audiotap_file.o t64utils.o tapfile_write.o prg2wav_core.o co
mmand_line/messages.o command_line/progressmeter.o command_line/prg2wav.o comman
d_line/process_input_files.o

C:\Documents and Settings\Fabrizio\Documenti\wavprg\cvs\wavprg>

In parole povere, la versione GUI non compila e quella a linea di comando sì, come è lecito aspettarsi. Non è che hai scritto make prg2wav invece di make prg2wav.exe? Il primo è per la versione Linux.
Un giapponese sa recitare a memoria tutti i numeri di pi greco fino all'83431º decimale. Sa a memoria anche l'unico numero telefonico che è nella sua agendina - Daniele Luttazzi

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Wav-prg 3.4, Audiotap 1.4
« Risposta #3 il: 26 Maggio 2008, 23:12:36 »
 Considerando che non mi serve a nulla chiamare l'help in htm dalla versione commandline e che la libgen e' usata solo per la funzione basename() si puo' fare a meno di entrambe:
Codice: [Seleziona]
--- Makefile 2008-05-25 15:12:44 +0000
+++ wavprg34_ian\Makefile 2008-05-26 20:31:46 +0000
@@ -10,5 +10,6 @@

 wavprg.exe: $(BASE_OBJECTS) $(WAV2PRG_OBJECTS) $(PRG2WAV_OBJECTS) $(WINDOWS_OBJECTS) $(WINDOWS_DEFS)
- $(CC) $(LDFLAGS) -mwindows -Wl,--out-implib=wavprg.lib -o $@ $^ -lcomdlg32 -lhtmlhelp
+ $(CC) $(LDFLAGS) -mwindows -Wl,--out-implib=wavprg.lib -o $@ $^ -lcomdlg32
+#     -lhtmlhelp

 windows_gui/wavprg-resources.o:windows_gui/wavprg.rc
--- windows_gui/prg2wav_gui.c 2008-05-13 21:10:34 +0000
+++ wavprg34_ian/windows_gui/prg2wav_gui.c 2008-05-26 20:31:52 +0000
@@ -24,5 +24,5 @@
 #include <commctrl.h>
 #include <string.h>
-#include <htmlhelp.h>
+//#include <htmlhelp.h>
 #include "resource.h"
 #include "../t64utils.h"
@@ -636,7 +636,7 @@
    return FALSE;
   }
- case WM_HELP:
-  HtmlHelpA(hwndDlg,"docs\\wavprg.chm::/prg2wav_main.htm",HH_DISPLAY_TOPIC,0);
-  return TRUE;
+ //case WM_HELP:
+  //HtmlHelpA(hwndDlg,"docs\\wavprg.chm::/prg2wav_main.htm",HH_DISPLAY_TOPIC,0);
+  //return TRUE;
  default:
   return FALSE;
--- windows_gui/wav2prg_gui.c 2008-05-20 22:01:06 +0000
+++ wavprg34_ian/windows_gui/wav2prg_gui.c 2008-05-26 20:32:00 +0000
@@ -21,5 +21,5 @@
 #include <stdio.h>
 #include <shlobj.h>
-#include <htmlhelp.h>
+//#include <htmlhelp.h>
 #include "resource.h"
 #include "../2prg_api.h"
@@ -617,7 +617,7 @@
   }
   return TRUE;
- case WM_HELP:
-  HtmlHelpA(hwndDlg,"docs\\wavprg.chm::/wav2prg_main.htm",HH_DISPLAY_TOPIC,0);
-  return TRUE;
+ //case WM_HELP:
+  //HtmlHelpA(hwndDlg,"docs\\wavprg.chm::/wav2prg_main.htm",HH_DISPLAY_TOPIC,0);
+  //return TRUE;
  default:
   return FALSE;
--- windows_gui/wavprg_main.c 2008-05-11 23:07:04 +0000
+++ wavprg34_ian/windows_gui/wavprg_main.c 2008-05-26 20:32:04 +0000
@@ -16,5 +16,5 @@

 #include <windows.h>
-#include <htmlhelp.h>
+//#include <htmlhelp.h>
 #if (defined WIN32 && !defined __CYGWIN__)
 #include "../mswin_compatibility.h"
@@ -101,7 +101,7 @@
   }
   return TRUE;
- case WM_HELP:
-  HtmlHelpA(hwnd,"docs\\wavprg.chm",HH_DISPLAY_TOC,0);
-  return TRUE;
+ //case WM_HELP:
+  //HtmlHelpA(hwnd,"docs\\wavprg.chm",HH_DISPLAY_TOC,0);
+  //return TRUE;
  case WM_CLOSE:
   DestroyWindow(hwnd);
--- command_line/process_input_files.c 2008-05-12 21:43:30 +0000
+++ wavprg34_ian/command_line/process_input_files.c 2008-05-26 20:41:12 +0000
@@ -16,5 +16,10 @@
 #include <stdio.h>
 #include <string.h>
-#include <libgen.h>
+//#include <libgen.h>
+#ifdef WIN32
+#define SLASH '\\'
+#else
+#define SLASH '/'
+#endif
 #include <errno.h>

@@ -163,5 +168,10 @@

   /* first, strip off path from filename */
-  stripped = basename(filename);
+  //stripped = basename(filename);
+
+  if( (stripped=strrchr(filename,SLASH))!=NULL)
+   stripped++;
+  else
+   stripped = filename;

   /* then ignore .prg at end if present */
poi una volta creato wav2prg.def copiandolo da wavprg.def si compilano entrambi, prg2wav e wav2prg. questo pero' va rinominato wavprg se no va a donnine allegre il meccanismo dei plugins.
Quindi:
Codice: [Seleziona]
Ian@CHOJIN ~/wavprg34_ian
$ make
gcc    -c -o audiotap_file.o audiotap_file.c
gcc    -c -o 2prg_api.o 2prg_api.c
gcc    -c -o tapfile_read.o tapfile_read.c
gcc    -c -o wav2prg_core.o wav2prg_core.c
gcc    -c -o create_t64.o create_t64.c
gcc    -c -o t64utils.o t64utils.c
gcc    -c -o tapfile_write.o tapfile_write.c
gcc    -c -o prg2wav_core.o prg2wav_core.c
gcc    -c -o windows_gui/wav2prg_gui.o windows_gui/wav2prg_gui.c
gcc    -c -o windows_gui/wavprg_main.o windows_gui/wavprg_main.c
windres --include=windows_gui -o windows_gui/wavprg-resources.o windows_gui/wavprg.rc
gcc    -c -o windows_gui/wavprg_status_window.o windows_gui/wavprg_status_window.c
gcc    -c -o windows_gui/prg2wav_gui.o windows_gui/prg2wav_gui.c
gcc  -mwindows -Wl,--out-implib=wavprg.lib -o wavprg.exe audiotap_file.o 2prg_api.o tapfile_read.o wav2prg_core.o create_t64.o t64utils.o tapfile_write.o prg2wav_core.o windows_gui/wav2prg_gui.o windows_gui/wavprg_main.o windows_gui/wavprg-resources.o windows_gui/wavprg_status_window.o windows_gui/prg2wav_gui.o wavprg.def -lcomdlg32
Creating library file: wavprg.lib

Ian@CHOJIN ~/wavprg34_ian
$ make prg2wav.exe
gcc    -c -o command_line/messages.o command_line/messages.c
gcc    -c -o command_line/progressmeter.o command_line/progressmeter.c
gcc    -c -o command_line/prg2wav.o command_line/prg2wav.c
gcc    -c -o command_line/process_input_files.o command_line/process_input_files.c
gcc  -o prg2wav.exe audiotap_file.o t64utils.o tapfile_write.o prg2wav_core.o command_line/messages.o command_line/progressmeter.o command_line/prg2wav.o command_line/process_input_files.o

Ian@CHOJIN ~/wavprg34_ian
$ make wav2prg.exe
gcc    -c -o command_line/wav2prg.o command_line/wav2prg.c
gcc    -c -o command_line/parse_options.o command_line/parse_options.c
gcc   -Wl,--out-implib=wav2prg.lib -o wav2prg.exe audiotap_file.o 2prg_api.o tapfile_read.o wav2prg_core.o create_t64.o command_line/messages.o command_line/progressmeter.o command_line/wav2prg.o command_line/parse_options.o wav2prg.def
Creating library file: wav2prg.lib

Ian@CHOJIN ~/wavprg34_ian
$ mv wav2prg.exe wavprg.exe

Ian@CHOJIN ~/wavprg34_ian
$ strip *.exe -s

e poi si copiano gli exe dove stanno anche i plugins. Tutto regolare. =)
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

fab

  • Utente
  • **
  • Post: 493
    • http://wav-prg.sourceforge.net/
  • Gioco Preferito: Tetris, Turrican, Impossible Mission
Wav-prg 3.4, Audiotap 1.4
« Risposta #4 il: 26 Maggio 2008, 23:39:24 »
 Le modifiche ai file windows_gui/* non hanno effetto sui tool a linea di comando, e quindi non sono necessari se ti servono solo quelli (però servono se vuoi compilare la versione GUI. In effetti un'#ifdef ci potrebbe stare bene).

C'è un trucchetto: invece di rinominare wav2prg.exe, si ricompilano i plug-in con

make .dll EXE_NAME=wav2prg

(richiede che wav2prg.lib esista).

Ah, in effetti avevo dimenticato wav2prg.def e wavprg-plugins.def. Ho riuploadato il file src.zip, con i file mancanti.
Un giapponese sa recitare a memoria tutti i numeri di pi greco fino all'83431º decimale. Sa a memoria anche l'unico numero telefonico che è nella sua agendina - Daniele Luttazzi

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Wav-prg 3.4, Audiotap 1.4
« Risposta #5 il: 26 Maggio 2008, 23:49:31 »
 ah ecco :)
Sarebbe bene se includessi un piccolo howto nei sorgenti, stavo appunto cercando di venire a capo dei problemi di compilazione dei plugins.
Intanto riscarico i sorgenti e vediamo.

edit: ti sei dimenticato ancora wavprg-plugins.def, lo prendo dalla 3.3

kernalloader mi segna una strana dipendenza mancante:
Codice: [Seleziona]
Ian@CHOJIN ~/wavprg34_ian/plugins
$ make kernelloader.dll
gcc -nostdlib -O2  -I.. -shared -o kernelloader.dll kernelloader.c wavprg-plugins.def ../wavprg.lib
C:/TEMP/cccwJPfb.o:kernelloader.c:(.text+0x9c): undefined reference to `_alloca'
collect2: ld returned 1 exit status
make: *** [kernelloader.dll] Error 1
gli altri 2 invece ora compilano.
alloca() mi sa tanto di roba stravecchia, non capisco da dove arrivi pero', non la trovo in alcun sorgente
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

fab

  • Utente
  • **
  • Post: 493
    • http://wav-prg.sourceforge.net/
  • Gioco Preferito: Tetris, Turrican, Impossible Mission
Wav-prg 3.4, Audiotap 1.4
« Risposta #6 il: 27 Maggio 2008, 08:38:31 »
 
Citazione da: "iAN CooG/HF"
Sarebbe bene se includessi un piccolo howto nei sorgenti, stavo appunto cercando di venire a capo dei problemi di compilazione dei plugins.

Buona idea. Lo farò (un giorno).
Citazione da: "iAN CooG/HF"
$ make kernelloader.dll
gcc -nostdlib -O2  -I.. -shared -o kernelloader.dll kernelloader.c wavprg-plugins.def ../wavprg.lib
C:/TEMP/cccwJPfb.o:kernelloader.c:(.text+0x9c): undefined reference to `_alloca'
collect2: ld returned 1 exit status
make: *** [kernelloader.dll] Error 1
[/CODE]
gli altri 2 invece ora compilano.
alloca() mi sa tanto di roba stravecchia, non capisco da dove arrivi pero', non la trovo in alcun sorgente
Risolvere quel problema, all'epoca, mi costò la salute mentale. E' una cosa furba che gcc per Windows fa quando ci sono troppe variabili nello stack. Compilerebbe senza -nostdlib, e per farlo compilare serve

make kernelloader.dll EXTRA_LIBS=-lgcc
Un giapponese sa recitare a memoria tutti i numeri di pi greco fino all'83431º decimale. Sa a memoria anche l'unico numero telefonico che è nella sua agendina - Daniele Luttazzi

fab

  • Utente
  • **
  • Post: 493
    • http://wav-prg.sourceforge.net/
  • Gioco Preferito: Tetris, Turrican, Impossible Mission
Wav-prg 3.4, Audiotap 1.4
« Risposta #7 il: 27 Maggio 2008, 10:14:28 »
 
Citazione da: "iAN CooG/HF"
ti sei dimenticato ancora wavprg-plugins.def
Uploadato. Per la terza volta. Speriamo che sia quella buona.

(il tempo per editare e' scaduto, quindi nuovo messaggio)  
Un giapponese sa recitare a memoria tutti i numeri di pi greco fino all'83431º decimale. Sa a memoria anche l'unico numero telefonico che è nella sua agendina - Daniele Luttazzi

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Wav-prg 3.4, Audiotap 1.4
« Risposta #8 il: 27 Maggio 2008, 10:42:14 »
Citazione da: "fab"
make kernelloader.dll EXTRA_LIBS=-lgcc
Perfetto, l'ho incluso direttamente nel makefile.
Non solo compila, se ricompilo tutte le dll cosi' anche novaload.dll non viene piu', ingiustamente, riconosciuta come trojan, ho appena mandato la dll su virustotal e nessun AV segnala falsi allarmi. Ora mi prendo i src da sourceforge delle altre e le ricompilo.
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -