オリジナルの修正箇所:

config.h (VC でビルド出来るように)

options.c::FILEINFO option(int argc,char *argv[]) 
コマンドライン文字列の 64バイト制限 => 2048 バイトまでに

readfile.c::readFile2 / z.c::main()
stdin/stdout のモードを VC でもバイナリモードに設定するように

sync.c::do_sync(UBYTE *MTrk[],DWORD syncs, SYNCDAT *sync,
		SYNCDAT **wsync,DWORD midc_all[])
64bit ビルドで発生する不具合の修正

z.c:;main

DWORD i;  => int i; に修正( for(i = XXX; i >= 0; i--) で無限ループ)

for(i = WAVMAX; i >= 0; i--) => for(i = WAVMAX-1; i >= 0; i--)(メモリアクセス違反)

config.h

    #ifndef _MSC_VER /* added by Kobarin */
    #ifndef __STDC__
        #define void
        #define const
    #endif
    #endif /* by Kobarin */
    ...
    /* set variable types as ...
     *  sizeof(DWORD) = 4
     *  sizeof(WORD)  = 2
     *  sizeof(BYTE)  = 1
     */
    #ifdef _MSC_VER                     /* for VC (added by Kobarin) */
        #define DOS68_TIMESTAMP         /* to use DOS call for changing timestamp. */
        #define NOUSE68LIB              /* use libc's strlwr/stricmp */
        typedef long int        DWORD;
        typedef short           WORD;
        typedef char            BYTE;
        typedef unsigned int    UDWORD;
        typedef unsigned short  UWORD;
        typedef unsigned char   UBYTE;  
    #endif                              /* for VC ここまで */

options.c::FILEINFO option(int argc,char *argv[])

    for (x = 1; x < argc; x++) {
//    char opt[65]; 
//   if ( strlen(argv[x]) > 64 ) { //deleted by Kobarin
     char opt[2048]; // added by Kobarin 
    if ( strlen(argv[x]) > sizeof(opt)-1 ) {//added by Kobarin

sync.c::

//table = (DWORD**)emalloc(sizeof(DWORD) * syncs, "table");//修正 by Kobarin(64bitビルドで不具合発生)
table = (DWORD**)emalloc(sizeof(DWORD*) * syncs, "table");//修正 by Kobarin(64bitビルドで不具合発生)

