diff --git a/bin/buildfx.js b/bin/buildfx.js index cdae99f81..3391a244e 100644 --- a/bin/buildfx.js +++ b/bin/buildfx.js @@ -1,4 +1,7 @@ a = new ActiveXObject("scripting.filesystemobject") +x = new ActiveXObject("wscript.shell") +x.run('cmd /c bin\\buildfxful.bat ' + WScript.Arguments(0) + ' ' + WScript.Arguments(2) + ' ' + WScript.Arguments(3), 0, 1) + b = a.opentextfile(WScript.Arguments(0)) entries = [] @@ -31,22 +34,20 @@ while (!b.atendofstream) } } -y = "build\\FX\\" - fx_off = 0 groups = "*=0\n" + "!le16 " + entries.length.toString() + ", 0\n" for (i = 0; i < entries.length; i++) { groups += "!byte " + (1 + 1 + entries[i].length + 5).toString() + "\n" + "!byte " + entries[i].length.toString() + "\n" + "!text \"" + entries[i] + "\"\n" + "!be24 " + fx_off.toString() + "\n" - size = a.getfile(y + entries[i]).size + size = a.getfile(WScript.Arguments(3) + "\\" + entries[i]).size // if offset+size does not cross a block boundary, use the size // otherwise adjust size until it ends at the next block boundary to avoid a partial copy on the last block groups += "!le16 " + ((Math.floor(fx_off / 512) == Math.floor((fx_off + size) / 512)) ? size : (((fx_off + size + 511) & -512) - fx_off)).toString() + "\n" fx_off += size } -f = a.createtextfile(WScript.Arguments(1)) +f = a.createtextfile("build\\fx.tmp") f.write(groups) f.close() -new ActiveXObject("wscript.shell").run('cmd /c %acme% -o ' + WScript.Arguments(2) + " " + WScript.Arguments(1), 0, 1) +x.run('cmd /c %acme% -o ' + WScript.Arguments(1) + ' build\\fx.tmp', 0, 1) diff --git a/bin/buildfxful.bat b/bin/buildfxful.bat index 196ff7299..7b017d6ae 100644 --- a/bin/buildfxful.bat +++ b/bin/buildfxful.bat @@ -5,7 +5,7 @@ for /f "tokens=*" %%a in (%1) do ( set f=0 call :x %%a if !f!==2 goto:eof -if !f!==0 1>nul copy /b /y %2+build\FX\%%a %2 +if !f!==0 1>nul copy /b /y %2+%3\%%a %2 ) goto:eof diff --git a/bin/buildpre.js b/bin/buildpre.js index 15fc9ab6d..f26af25a2 100644 --- a/bin/buildpre.js +++ b/bin/buildpre.js @@ -55,7 +55,9 @@ for (i = 0; i < entries.length; i++) groups += "!byte " + (1 + 1 + entries[i].length + 5).toString() + "\n" + "!byte " + entries[i].length.toString() + "\n" + "!text \"" + entries[i] + "\"\n" + "!be24 " + c + "\n" + "!le16 " + size + "\n" } -f = a.createtextfile(WScript.Arguments(1)) +f = a.createtextfile("build\\pre.tmp") f.write(groups) f.close() -new ActiveXObject("wscript.shell").run('cmd /c %acme% -o ' + WScript.Arguments(2) + " " + WScript.Arguments(1), 0, 1) +x = new ActiveXObject("wscript.shell") +x.run('cmd /c %acme% -o ' + WScript.Arguments(1) + ' build\\pre.tmp', 0, 1) +x.run('cmd /c bin\\buildpreall.bat ' + WScript.Arguments(0) + ' ' + WScript.Arguments(2) + ' ' + WScript.Arguments(3), 0, 1) diff --git a/bin/buildss.js b/bin/buildss.js index b154448bd..7111f5917 100644 --- a/bin/buildss.js +++ b/bin/buildss.js @@ -22,7 +22,9 @@ for (i = 0; i < entries.length; i++) ss_off += size } -f = a.createtextfile(WScript.Arguments(1)) +f = a.createtextfile("build\\ss.tmp") f.write(groups) f.close() -new ActiveXObject("wscript.shell").run('cmd /c %acme% -o ' + WScript.Arguments(2) + " " + WScript.Arguments(1), 0, 1) +x = new ActiveXObject("wscript.shell") +x.run('cmd /c %acme% -o ' + WScript.Arguments(1) + ' build\\ss.tmp', 0, 1) +x.run('cmd /c bin\\buildpreall.bat ' + WScript.Arguments(0) + ' ' + WScript.Arguments(2) + ' ' + WScript.Arguments(3), 0, 1) diff --git a/bin/rsync.js b/bin/rsync.js deleted file mode 100644 index aec73f0ae..000000000 --- a/bin/rsync.js +++ /dev/null @@ -1,19 +0,0 @@ -a = new ActiveXObject("scripting.filesystemobject") -b = WScript.Arguments(0).lastIndexOf('\\') + 1 -c = WScript.Arguments(0).substr(0, b) -d = WScript.Arguments(0).substr(b) -if (d.substr(0, 2) == '*.') -{ - d = d.substr(2) -} -for (b = new Enumerator(a.GetFolder(c).files); !b.atEnd(); b.moveNext()) -{ - if ((d == '*') || (d == b.item().name) || (d == a.getextensionname(b.item().name))) - { - e = WScript.Arguments(1) + "\\" + b.item().Name - if (!a.fileexists(e) || (a.getfile(e).datelastmodified < b.item().datelastmodified)) - { - new ActiveXObject("wscript.shell").run('cmd /c copy "' + c + b.item().name + '" ' + WScript.Arguments(1)+"\\"+b.item().name.toUpperCase(), 0, 1) - } - } -} diff --git a/src/constants.a b/src/constants.a index 0be7aad73..ff5debe05 100644 --- a/src/constants.a +++ b/src/constants.a @@ -7,7 +7,7 @@ ; ; LC RAM BANK 1 ; D000..E789 - persistent data structures (gGlobalPrefsStore, gGamesListStore) -; E976..FFF1 - main program code +; E973..FFF1 - main program code ; FFF2..FFF9 - API functions and global constants available for main program ; code, prelaunchers, transition effects, &c. ; (Wait/UnwaitForVBL, MockingboardStuff, MachineStatus) diff --git a/winmake.bat b/winmake.bat index fdee1d355..8b8cd1841 100644 --- a/winmake.bat +++ b/winmake.bat @@ -25,6 +25,7 @@ set GIT=git if "%1" equ "asm" ( :asm call :md +1>nul copy nul build\log call :asmlauncher call :asmfx call :asmprelaunch @@ -42,43 +43,41 @@ if "%1" equ "dsk" ( :dsk call :asm call :compress -2>nul del build\log 1>nul copy /y res\blank.hdv "build\%DISK%" >>build\log 1>nul copy /y res\_FileInformation.txt build\ >>build\log %CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\LAUNCHER.SYSTEM" >>build\log -cscript /nologo bin\rsync.js "res\PREFS.CONF" "build\" >>build\log +1>nul copy /y "res\PREFS.CONF" "build" >>build\log cscript /nologo bin\padto.js 512 build\PREFS.CONF -cscript /nologo bin\buildokvs.js "res\ATTRACT.CONF" "build\ATTRACT.IDX" >>build\log -call bin\buildfxful.bat res\FX.CONF build\FX.ALL >>build\log -call bin\buildfxful.bat res\DFX.CONF build\DFX.ALL >>build\log -cscript /nologo bin\buildfx.js "res\FX.CONF" "build\fx.inc" "build\FX.IDX" >>build\log -cscript /nologo bin\buildfx.js "res\DFX.CONF" "build\dfx.inc" "build\DFX.IDX" >>build\log -for %%q in (res\GAMEHELP\*) do cscript /nologo bin\subst.js %%q "build\GAMEHELP\%%~nxq" >>build\log -cscript /nologo bin\buildpre.js "build\GAMEHELP" "build\help.inc" "build\GAMEHELP.IDX" >>build\log -call bin\buildpreall.bat build\GAMEHELP build\GAMEHELP.ALL build\GAMEHELP\STANDARD >>build\log +rem +rem precompute OKVS data structure for mega-attract mode configuration file +rem +cscript /nologo bin\buildokvs.js res\ATTRACT.CONF build\ATTRACT.IDX >>build\log +rem +rem precompute FX and DFX indexes and merged data files containing multiple +rem graphic effects in a single file (loaded at runtime by LoadIndexedFile()) +rem +cscript /nologo bin\buildfx.js res\FX.CONF build\FX.IDX build\FX.ALL build\FX.INDEXED >>build\log +cscript /nologo bin\buildfx.js res\DFX.CONF build\DFX.IDX build\DFX.ALL build\FX.INDEXED >>build\log +rem +rem substitute special characters in help text and other pages that will be +rem drawn with DrawPage() +rem +cscript /nologo bin\subst.js res\HELPTEXT build\HELPTEXT >>build\log +cscript /nologo bin\subst.js res\CREDITS build\CREDITS >>build\log +for %%q in (res\GAMEHELP\*) do cscript /nologo bin\subst.js %%q build\GAMEHELP\%%~nxq >>build\log +rem +rem precompute indexed files for game help, slideshow configuration, +rem mini-attract mode configuration, and prelaunch files +rem +cscript /nologo bin\buildpre.js build\GAMEHELP build\GAMEHELP.IDX build\GAMEHELP.ALL build\GAMEHELP\STANDARD >>build\log for %%q in (res\SS\*) do cscript /nologo bin\buildokvs.js "%%q" "build\SS\%%~nxq" >>build\log -cscript /nologo bin\buildss.js "build\SS" "build\ss.inc" "build\SLIDESHOW.IDX" >>build\log -call bin\buildpreall.bat build\SS build\SLIDESHOW.ALL nul >>build\log +cscript /nologo bin\buildss.js build\SS build\SLIDESHOW.IDX build\SLIDESHOW.ALL nul >>build\log for %%q in (res\ATTRACT\*) do cscript /nologo bin\buildokvs.js "%%q" "build\ATTRACT\%%~nxq" >>build\log -cscript /nologo bin\buildss.js "build\ATTRACT" "build\attract.inc" "build\MINIATTRACT.IDX" >>build\log -call bin\buildpreall.bat build\ATTRACT build\MINIATTRACT.ALL nul >>build\log -cscript /nologo bin\buildpre.js "build\PRELAUNCH" "build\prelaunch.inc" "build\PRELAUNCH.IDX" >>build\log -call bin\buildpreall.bat build\PRELAUNCH build\PRELAUNCH.ALL build\PRELAUNCH\STANDARD >>build\log -%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\TITLE" >>build\log -%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\COVER" >>build\log -%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\HELP" >>build\log -%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\GAMES.CONF" >>build\log -%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\PREFS.CONF" >>build\log -cscript /nologo bin\subst.js "res\CREDITS" "build\CREDITS" >>build\log -%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\CREDITS" >>build\log -cscript /nologo bin\subst.js "res\HELPTEXT" "build\HELPTEXT" >>build\log -%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\HELPTEXT" >>build\log -for %%q in (build\*.IDX) do %CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "%%q" >>build\log -for %%q in (build\*.ALL) do %CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "%%q" >>build\log -%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\DECRUNCH" >>build\log -%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\JOYSTICK" >>build\log -%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\Finder.Data" >>build\log -%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\Finder.Root" >>build\log +cscript /nologo bin\buildss.js build\ATTRACT build\MINIATTRACT.IDX build\MINIATTRACT.ALL nul >>build\log +cscript /nologo bin\buildpre.js build\PRELAUNCH.INDEXED build\PRELAUNCH.IDX build\PRELAUNCH.ALL build\PRELAUNCH.INDEXED\STANDARD >>build\log +rem +rem create _FileInformation.txt files for subdirectories +rem cscript /nologo bin\buildfileinfo.js res\TITLE.HGR "06" "4000" >>build/log cscript /nologo bin\buildfileinfo.js res\TITLE.DHGR "06" "4000" >>build/log cscript /nologo bin\buildfileinfo.js res\ACTION.HGR "06" "3FF8" >>build/log @@ -86,6 +85,35 @@ cscript /nologo bin\buildfileinfo.js res\ACTION.DHGR "06" "3FF8" >>build/log cscript /nologo bin\buildfileinfo.js res\ACTION.GR "06" "6000" >>build/log cscript /nologo bin\buildfileinfo.js res\ARTWORK.SHR "06" "1FF8" >>build/log cscript /nologo bin\buildfileinfo.js res\ICONS "CA" "0000" >>build/log +cscript /nologo bin\buildfileinfo.js build\FX "06" "6000" >>build/log +cscript /nologo bin\buildfileinfo.js build\PRELAUNCH "06" "0106" >>build/log +rem +rem add everything to the disk +rem +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\TITLE" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\COVER" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\HELP" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\GAMES.CONF" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\PREFS.CONF" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\CREDITS" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\HELPTEXT" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\ATTRACT.IDX" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\FX.IDX" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\FX.ALL" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\DFX.IDX" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\DFX.ALL" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\GAMEHELP.IDX" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\GAMEHELP.ALL" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\SLIDESHOW.IDX" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\SLIDESHOW.ALL" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\MINIATTRACT.IDX" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\MINIATTRACT.ALL" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\PRELAUNCH.IDX" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\PRELAUNCH.ALL" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\DECRUNCH" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\JOYSTICK" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\Finder.Data" >>build\log +%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\Finder.Root" >>build\log %CADIUS% ADDFOLDER "build\%DISK%" "/%VOLUME%/TITLE.HGR" "res\TITLE.HGR" >>build\log %CADIUS% ADDFOLDER "build\%DISK%" "/%VOLUME%/TITLE.DHGR" "res\TITLE.DHGR" >>build\log %CADIUS% ADDFOLDER "build\%DISK%" "/%VOLUME%/ACTION.HGR" "res\ACTION.HGR" >>build\log @@ -95,22 +123,18 @@ cscript /nologo bin\buildfileinfo.js res\ICONS "CA" "0000" >>build/log %CADIUS% ADDFOLDER "build\%DISK%" "/%VOLUME%/DEMO" "res\DEMO" >>build\log %CADIUS% ADDFOLDER "build\%DISK%" "/%VOLUME%/TITLE.ANIMATED" "res\TITLE.ANIMATED" >>build\log %CADIUS% ADDFOLDER "build\%DISK%" "/%VOLUME%/ICONS" "res\ICONS" >>build\log +%CADIUS% ADDFOLDER "build\%DISK%" "/%VOLUME%/FX/" "build\FX" >>build\log +%CADIUS% ADDFOLDER "build\%DISK%" "/%VOLUME%/PRELAUNCH/" "build\PRELAUNCH" >>build\log %CADIUS% RENAMEFILE "build\%DISK%" "/%VOLUME%/DEMO/SPCARTOON.11" "SPCARTOON.1." >>build\log %CADIUS% RENAMEFILE "build\%DISK%" "/%VOLUME%/DEMO/SPCARTOON.22" "SPCARTOON.2." >>build\log %CADIUS% RENAMEFILE "build\%DISK%" "/%VOLUME%/DEMO/SPCARTOON.33" "SPCARTOON.3." >>build\log %CADIUS% RENAMEFILE "build\%DISK%" "/%VOLUME%/DEMO/SPCARTOON.44" "SPCARTOON.4." >>build\log %CADIUS% RENAMEFILE "build\%DISK%" "/%VOLUME%/DEMO/SPCARTOON.55" "SPCARTOON.5." >>build\log %CADIUS% RENAMEFILE "build\%DISK%" "/%VOLUME%/DEMO/SPCARTOON.66" "SPCARTOON.6." >>build\log -for %%q in (build\FX\*.DATA) do %CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/FX" "%%q" >>build\log -%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/FX/" "build\FX\COVERFADE" >>build\log -%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/FX/" "build\FX\GR.FIZZLE" >>build\log -%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/FX/" "build\FX\SHR.FIZZLE" >>build\log for %%q in (res\dsk\*.po) do %CADIUS% EXTRACTVOLUME "%%q" build\X\ >>build\log 1>nul 2>nul del /s build\X\.DS_Store build\X\PRODOS build\X\LOADER.SYSTEM %CADIUS% CREATEFOLDER "build\%DISK%" "/%VOLUME%/X/" >>build\log %CADIUS% ADDFOLDER "build\%DISK%" "/%VOLUME%/X" "build\X" >>build\log -%CADIUS% CREATEFOLDER "build\%DISK%" "/%VOLUME%/PRELAUNCH/" >>build\log -for %%q in (build\PRELAUNCH\*.MB) do %CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/PRELAUNCH" "%%q" >>build\log cscript /nologo bin\changebootloader.js "build\%DISK%" build\proboothd goto :EOF ) @@ -126,11 +150,13 @@ goto :EOF :md 2>nul md build 2>nul md build\X +2>nul md build\FX.INDEXED 2>nul md build\FX +2>nul md build\PRELAUNCH.INDEXED +2>nul md build\PRELAUNCH +2>nul md build\ATTRACT 2>nul md build\SS 2>nul md build\GAMEHELP -2>nul md build\ATTRACT -2>nul md build\PRELAUNCH goto :EOF :asmlauncher @@ -147,7 +173,6 @@ for %%q in (src\fx\*.a) do ( set _to=!_to:~0,1! if !_to!==t %ACME% %%q ) -cscript /nologo bin\buildfileinfo.js build\FX "06" "6000" goto :EOF :asmprelaunch