Batch to JS conversion guide

From MSX Game Library

Revision as of 18:48, 22 December 2022 by Aoineko (talk | contribs)

Historically, MSXGL was designed on Windows PC, for users of this platform. The Build tool was therefore written in Batch language (.bat).

To open the library to users of other platforms (Linux and macOS) and overcome the limitations of the Batch language, the Build tool has been entirely rewritten in Java Script and executed via Node.js. Everything necessary for the execution of these new scripts being packaged with MSXgl on Windows, the user has no other software to install. For Linux, SDCC and Node.js must be installed separately.

This guide is intended for users who have already created an MSXgl project and who would like to convert their project configuration to benefit from the new version of the Build tool (which I strongly recommend).

Convert Batch project to JS

  1. Rename your build.bat to project_config.js (You can duplicate the file if you want to keep the batch file as a backup)
  2. Open project_config.js an start the Batch to JS converion:
    • Convert comment:
      • Replace any '::' by '//'.
      • Replace any 'REM' by '//'.
    • Remove '@echo off', 'call ..\default_config.cmd %0' and the final 'call %LibDir%\script\build.cmd'.
    • Remove all the 'set ' before the parameter name.
    • Convert parameter value depends on the value type:
      • Number: Nothing to do.
      • Boolean: You can keep '0' and '1' value but for a better readability, it is recommended to use the values 'true' and 'false' instead.
      • String: Enclose the value in parenthesis. For example, 'ProjName=template' become 'ProjName = "template"' (space are not mandatory).
      • Array: The array values must be converted according to their type (number, string, ...) but the array itself must be encapsulated with the '[]' characters. For example, 'LibModules=system,bios,vdp' become 'LibModules = [ "system", "bios", "vdp" ]' (space are not mandatory).

Example

:: ____________________________
:: ██▀▀█▀▀██▀▀▀▀▀▀▀█▀▀█        │   ▄▄▄                ▄▄      
:: ██  ▀  █▄  ▀██▄ ▀ ▄█ ▄▀▀ █  │  ▀█▄  ▄▀██ ▄█▄█ ██▀▄ ██  ▄███
:: █  █ █  ▀▀  ▄█  █  █ ▀▄█ █▄ │  ▄▄█▀ ▀▄██ ██ █ ██▀  ▀█▄ ▀█▄▄
:: ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀────────┘                 ▀▀
::  by Guillaume 'Aoineko' Blanchard under CC BY-SA license
::─────────────────────────────────────────────────────────────────────────────
@echo off

::─────────────────────────────────────────────────────────────────────────────
:: Build Tool configuration
::─────────────────────────────────────────────────────────────────────────────
call ..\default_config.cmd %0

::*****************************************************************************
:: PROJECT SETTINGS
::*****************************************************************************

:: Project name (will be use for output filename)
set ProjName=template
:: Project modules to build (use ProjName if not defined)
set ProjModules=%ProjName%
:: List of modules to link
SET LibModules=system,bios,vdp,print,input,memory

:: MSX machine version:
:: - 1		MSX 1
:: - 2		MSX 2
:: - 12		MSX 1 or 2 (dual support)
:: - 2K		Korean MSX 2 (SC9 support)
:: - 2P		MSX 2+
:: - TR		MSX Turbo-R
:: - 3		MSX 3 (reserved)
set Machine=1
:: Program media target:
:: - BIN			.bin	BASIC binary program (8000h~)
:: - ROM_8K			.rom	8KB ROM in page 1 (4000h ~ 5FFFh)
:: - ROM_8K_P2		.rom	8KB ROM in page 2 (8000h ~ 9FFFh)
:: - ROM_16K		.rom	16KB ROM in page 1 (4000h ~ 7FFFh)
:: - ROM_16K_P2		.rom	16KB ROM in page 2 (8000h ~ BFFFh)
:: - ROM_32K		.rom	32KB ROM in page 1-2 (4000h ~ BFFFh)
:: - ROM_48K		.rom	48KB ROM in page 0-2 (0000h ~ BFFFh). Pages 1-2 visible at start
:: - ROM_48K_ISR	.rom	48KB ROM in page 0-2 (0000h ~ BFFFh). Pages 0-2 visible at start
:: - ROM_64K		.rom	64KB ROM in page 0-3 (0000h ~ FFFFh). Pages 1-2 visible at start
:: - ROM_64K_ISR	.rom	64KB ROM in page 0-3 (0000h ~ FFFFh). Pages 0-2 visible at start
:: - ROM_ASCII8		.rom	128KB ROM using ASCII-8 mapper
:: - ROM_ASCII16	.rom	128KB ROM using ASCII-16 mapper
:: - ROM_KONAMI		.rom	128KB ROM using Konami mapper (8KB segments)
:: - ROM_KONAMI_SCC	.rom	128KB ROM using Konami SCC mapper (8KB segments)
:: - DOS1			.com	MSX-DOS 1 program (0100h~) No direct acces to Main-ROM
:: - DOS2			.com	MSX-DOS 2 program (0100h~) No direct acces to Main-ROM
:: - DOS2_ARG		.com	[WIP] MSX-DOS 2 program (using command line arguments ; 0100h~) No direct acces to Main-ROM. 
set Target=ROM_32K
:: ROM mapper size (from 64 to 4096). Must be a multiple of 8 or 16 depending on the mapper type
set ROMSize=

:: Install BDOS driver for ROM program? (0=false, 1=true)
REM set ROMDelayBoot=0
:: Set RAM in slot 0 and install ISR there (0=false, 1=true)
REM set InstallRAMISR=0
:: Type of custom ISR (for RAM or ROM)
:: - VBLANK		V-blank handler
:: - VHBLANK	V-blank and h-blank handler (V9938 or V9958)
:: - V9990		v-blank, h-blank and command end handler (V9990)
REM set CustomISR=VBLANK
:: Use banked call and trampoline functions (0=false, 1=true)
REM set BankedCall=0
:: Overwrite RAM starting address (e.g. 0xE0000 for 8K RAM machine)
REM set ForceRamAddr=
:: Data to copy to disk (comma separated list)
REM set DiskFiles=

::*******************************************************************************
:: MAKE SETTINGS
::*******************************************************************************

:: Use static MSXgl library (0=false, 1=true)
REM set BuildLibrary=0
:: Set debug flag (0=false, 1=true)
REM set Debug=0
:: Assembler code optimizer
:: - None
:: - PeepHole	SDCC otpimizer
:: - MDL		MDL z80 otpimizer
REM set AsmOptim=None
:: Optim:
:: - Default
:: - Speed
:: - Size
REM set Optim=Speed
:: Additionnal compilation flag
REM set CompileOpt=
:: Skip file if compile data is newer than the (0=false, 1=true)
REM set CompileSkipOld=0
:: Compile verbose mode (0=false, 1=true)
REM set Verbose=0

::*******************************************************************************
:: EMULATOR SETINGS
::*******************************************************************************

:: Emulator options: 0 or 1
REM set EmulMachine=1
REM set Emul60Hz=0
REM set EmulFullScreen=0
REM set EmulMute=0
REM set EmulDebug=0
REM set EmulSCC=0
REM set EmulMSXMusic=0
REM set EmulMSXAudio=0
:: Emulator extra parameters to be add to command-line (emulator sotfware specific)
REM set EmulExtraParam=

::*******************************************************************************
:: BUILD STEPS
::*******************************************************************************

set DoClean=0
set DoCompile=1
set DoMake=1
set DoPackage=1
set DoDeploy=1
set DoRun=0

::*****************************************************************************
:: START BUILD
::*****************************************************************************
call %LibDir%\script\build.cmd
‎