Files
mazegame/engine/script/js/setup_target.js
T

476 lines
13 KiB
JavaScript

// ____________________________
// ██▀▀█▀▀██▀▀▀▀▀▀▀█▀▀█ │ ▄▄▄ ▄ ▄▄ ▄▄ ▄▄▄▄ ▄▄
// ██ ▀ █▄ ▀██▄ ▀ ▄█ ▄▀▀ █ │ ██▄▀ ██ █ ▄ ██ ▄██ ██ ▄█▀▄ ▄█▀▄ ██
// █ █ █ ▀▀ ▄█ █ █ ▀▄█ █▄ │ ██▄▀ ▀█▄█ ██ ▀█▄ ▀▄██ ██ ▀█▄▀ ▀█▄▀ ▀█▄
// ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀────────┘
// by Guillaume 'Aoineko' Blanchard under CC BY-SA license
//─────────────────────────────────────────────────────────────────────────────
// Configure alias
if (Target === "BIN") Target = "BIN_DISK";
if (Target === "BAS") Target = "BIN_DISK";
if (Target === "USR") Target = "BIN_USR";
if (Target === "DOS") Target = "DOS1";
if (Target === "BOOT") Target = "DOS0";
if (Target === "ROM") Target = "ROM_32K";
if (Target === "ROM_K4") Target = "ROM_KONAMI";
if (Target === "ROM_K5") Target = "ROM_KONAMI_SCC";
if (Target === "DRIVER") Target = "RAW";
//*****************************************************************************
// SPECIAL
//*****************************************************************************
//-----------------------------------------------------------------------------
if (Target === "RAW")
{
Ext = "bin";
Crt0 = "crt0_raw";
StartAddr = ForceCodeAddr;
CodeAddr = ForceCodeAddr;
RamAddr = ForceRamAddr;
FillSize = 0;
TargetDesc = "RAW binary program (driver)";
}
//-----------------------------------------------------------------------------
else if (Target === "LIB")
{
Ext = "lib";
TargetDesc = "C library (.lib)";
}
//*****************************************************************************
// BASIC
//*****************************************************************************
//-----------------------------------------------------------------------------
else if ((Target === "BIN_DISK") || (Target === "BIN_TAPE"))
{
Ext = "bin";
Crt0 = "crt0_basic";
StartAddr = 0x8000;
CodeAddr = 0x8000;
RamAddr = 0; // Right after the code
FillSize = 0;
TargetDesc = "BASIC binary program (8000h~)";
if (Target === "BIN_TAPE")
TargetDesc += " on tape";
else
TargetDesc += " on disk";
}
//-----------------------------------------------------------------------------
else if (Target === "BIN_USR")
{
Ext = "bin";
Crt0 = "crt0_basic_usr";
StartAddr = ForceCodeAddr;
CodeAddr = ForceCodeAddr;
RamAddr = 0; // Right after the code
FillSize = 0;
TargetDesc = "BASIC USR binary driver (C000h~)";
}
//*****************************************************************************
// PLAIN ROM
//*****************************************************************************
//-----------------------------------------------------------------------------
else if (Target === "ROM_8K")
{
Ext = "rom";
Crt0 = "crt0_rom16";
StartAddr = 0x4000;
CodeAddr = 0x4000;
RamAddr = 0x8000;
FillSize = 8*1024;
ROMFirstPage = 1;
ROMLastPage = 1;
ROMSignature = "ROM_16P1";
TargetDesc = "8KB ROM in page 1 (4000h ~ 5FFFh)";
}
//-----------------------------------------------------------------------------
else if (Target === "ROM_8K_P2")
{
Ext = "rom";
Crt0 = "crt0_rom16";
StartAddr = 0x8000;
CodeAddr = 0x8000;
RamAddr = 0xC000;
FillSize = 8*1024;
ROMFirstPage = 2;
ROMLastPage = 2;
ROMSignature = "ROM_16P2";
TargetDesc = "8KB ROM in page 2 (8000h ~ 9FFFh)";
}
//-----------------------------------------------------------------------------
else if (Target === "ROM_16K")
{
Ext = "rom";
Crt0 = "crt0_rom16";
StartAddr = 0x4000;
CodeAddr = 0x4000;
RamAddr = 0x8000;
FillSize = 16*1024;
ROMFirstPage = 1;
ROMLastPage = 1;
ROMSignature = "ROM_16P1";
TargetDesc = "16KB ROM in page 1 (4000h ~ 7FFFh)";
}
//-----------------------------------------------------------------------------
else if (Target === "ROM_16K_P2")
{
Ext = "rom";
Crt0 = "crt0_rom16";
StartAddr = 0x8000;
CodeAddr = 0x8000;
RamAddr = 0xC000;
FillSize = 16*1024;
ROMFirstPage = 2;
ROMLastPage = 2;
ROMSignature = "ROM_16P2";
TargetDesc = "16KB ROM in page 2 (8000h ~ BFFFh)";
}
//-----------------------------------------------------------------------------
else if (Target === "ROM_32K")
{
Ext = "rom";
Crt0 = "crt0_rom32";
StartAddr = 0x4000;
CodeAddr = 0x4000;
RamAddr = 0xC000;
FillSize = 32*1024;
ROMFirstPage = 1;
ROMLastPage = 2;
ROMSignature = "ROM_32P1";
TargetDesc = "32KB ROM in page 1&2 (4000h ~ BFFFh)";
}
//-----------------------------------------------------------------------------
else if (Target === "ROM_48K")
{
Ext = "rom";
Crt0 = "crt0_rom48";
StartAddr = 0x0000;
CodeAddr = 0x4000;
RamAddr = 0xC000;
FillSize = 48*1024;
ROMFirstPage = 0;
ROMLastPage = 2;
ROMSignature = "ROM_48P0";
TargetDesc = "48KB ROM in page 0-2 (0000h ~ BFFFh)";
}
//-----------------------------------------------------------------------------
else if (Target === "ROM_48K_ISR")
{
Ext = "rom"
Crt0 = "crt0_rom48_isr";
StartAddr = 0x0000;
CodeAddr = 0x4000;
RamAddr = 0xC000;
FillSize = 48*1024;
ROMFirstPage = 0;
ROMLastPage = 2;
ROMWithISR = true;
ROMSignature = "ROM_48P0";
TargetDesc = "48KB ROM in page 0-2 (0000h ~ BFFFh) with ISR replacement";
}
//-----------------------------------------------------------------------------
else if (Target === "ROM_64K")
{
Ext = "rom";
Crt0 = "crt0_rom48";
StartAddr = 0x0000;
CodeAddr = 0x4000;
RamAddr = 0xC000;
FillSize = 64*1024;
ROMFirstPage = 0;
ROMLastPage = 3;
ROMSignature = "ROM_64P0";
TargetDesc = "64KB ROM in page 0-3 (0000h ~ FFFFh)";
}
//-----------------------------------------------------------------------------
else if (Target === "ROM_64K_ISR")
{
Ext = "rom";
Crt0 = "crt0_rom48_isr";
StartAddr = 0x0000;
CodeAddr = 0x4000;
RamAddr = 0xC000;
FillSize = 64*1024;
ROMFirstPage = 0;
ROMLastPage = 3;
ROMWithISR = true;
ROMSignature = "ROM_64P0";
TargetDesc = "64KB ROM in page 0-3 (0000h ~ FFFFh) with ISR replacement";
}
//*****************************************************************************
// MAPPED ROM
//*****************************************************************************
//-----------------------------------------------------------------------------
else if (Target === "ROM_ASCII8")
{
if(!ROMMainSegments)
ROMMainSegments = 4;
Mapper = "ROM_ASCII8";
// Target = `ROM_ASCII8_${ROMSize}K`;
Ext = "rom";
Crt0 = "crt0_rom_mapper";
StartAddr = 0x4000;
CodeAddr = 0x4000;
RamAddr = 0xC000;
MapperSize = ROMSize*1024;
SegSize = 8*1024;
FillSize = ROMMainSegments * SegSize;
Bank0Addr = 0x4000;
Bank1Addr = 0x6000;
Bank2Addr = 0x8000;
Bank3Addr = 0xA000;
ROMSignature = "ROM_ASC8";
TargetDesc = `${ROMSize}KB ROM using ASCII-8 mapper (starting at 4000h)`;
}
//-----------------------------------------------------------------------------
else if (Target === "ROM_ASCII16")
{
if(!ROMMainSegments)
ROMMainSegments = 2;
Mapper = "ROM_ASCII16";
// Target = `ROM_ASCII16_${ROMSize}K`;
Ext = "rom";
Crt0 = "crt0_rom_mapper";
StartAddr = 0x4000;
CodeAddr = 0x4000;
RamAddr = 0xC000;
MapperSize = ROMSize*1024;
SegSize = 16*1024;
FillSize = ROMMainSegments * SegSize;
Bank0Addr = 0x4000;
Bank1Addr = 0x8000;
ROMSignature = "ROM_AS16";
TargetDesc = `${ROMSize}KB ROM using ASCII-16 mapper (starting at 4000h)`;
}
//-----------------------------------------------------------------------------
else if (Target === "ROM_KONAMI")
{
if(!ROMMainSegments)
ROMMainSegments = 4;
Mapper = "ROM_KONAMI";
// Target = `ROM_KONAMI_${ROMSize}K`;
Ext = "rom";
Crt0 = "crt0_rom_mapper";
StartAddr = 0x4000;
CodeAddr = 0x4000;
RamAddr = 0xC000;
MapperSize = ROMSize*1024;
SegSize = 8*1024;
FillSize = ROMMainSegments * SegSize;
Bank1Addr = 0x6000;
Bank2Addr = 0x8000;
Bank3Addr = 0xA000;
ROMSignature = "ROM_KON4";
TargetDesc = `${ROMSize}KB ROM using KONAMI mapper (starting at 4000h)`;
}
//-----------------------------------------------------------------------------
else if (Target === "ROM_KONAMI_SCC")
{
if(!ROMMainSegments)
ROMMainSegments = 4;
Mapper = "ROM_KONAMI_SCC";
// Target = `ROM_KONAMI_SCC_${ROMSize}K`;
Ext = "rom";
Crt0 = "crt0_rom_mapper";
StartAddr = 0x4000;
CodeAddr = 0x4000;
RamAddr = 0xC000;
MapperSize = ROMSize*1024;
SegSize = 8*1024;
FillSize = ROMMainSegments * SegSize;
Bank0Addr = 0x4000;
Bank1Addr = 0x6000;
Bank2Addr = 0x8000;
Bank3Addr = 0xA000;
ROMSignature = "ROM_KON5";
TargetDesc = `${ROMSize}KB ROM using KONAMI SCC mapper (starting at 4000h)`;
}
//-----------------------------------------------------------------------------
else if (Target === "ROM_NEO8")
{
if(!ROMMainSegments)
ROMMainSegments = 4;
Mapper = "ROM_NEO8";
// Target = (ROMSize >= 1024) ? `ROM_NEO8_${ROMSize/1024}M` : `ROM_NEO8_${ROMSize}K`;
Ext = "rom";
Crt0 = "crt0_rom_neo";
StartAddr = 0x4000;
CodeAddr = 0x4000;
RamAddr = 0xC000;
MapperSize = ROMSize*1024;
SegSize = 8*1024;
FillSize = ROMMainSegments * SegSize;
Bank0Addr = 0x0000;
Bank1Addr = 0x2000;
Bank2Addr = 0x4000;
Bank3Addr = 0x6000;
Bank4Addr = 0x8000;
Bank5Addr = 0xA000;
ROMSignature = "ROM_NEO8";
AddROMSignature = true; // Force adding signature
TargetDesc = `${ROMSize/1024}MB ROM using NEO-8 mapper (starting at 4000h)`;
}
//-----------------------------------------------------------------------------
else if (Target === "ROM_NEO16")
{
if(!ROMMainSegments)
ROMMainSegments = 2;
Mapper = "ROM_NEO16";
// Target = (ROMSize >= 1024) ? `ROM_NEO16_${ROMSize/1024}M` : `ROM_NEO16_${ROMSize}K`;
Ext = "rom";
Crt0 = "crt0_rom_neo";
StartAddr = 0x4000;
CodeAddr = 0x4000;
RamAddr = 0xC000;
MapperSize = ROMSize*1024;
SegSize = 16*1024;
FillSize = ROMMainSegments * SegSize;
Bank0Addr = 0x0000;
Bank1Addr = 0x4000;
Bank2Addr = 0x8000;
ROMSignature = "ROM_NE16";
AddROMSignature = true; // Force adding signature
TargetDesc = `${ROMSize/1024}MB ROM using NEO-16 mapper (starting at 4000h)`;
}
//-----------------------------------------------------------------------------
else if (Target === "ROM_YAMANOOTO")
{
if(!ROMMainSegments)
ROMMainSegments = 4;
Mapper = "ROM_YAMANOOTO";
// Target = `ROM_YAMANOOTO_${ROMSize/1024}M`;
Ext = "rom";
Crt0 = "crt0_rom_mapper";
StartAddr = 0x4000;
CodeAddr = 0x4000;
RamAddr = 0xC000;
MapperSize = ROMSize*1024;
SegSize = 8*1024;
FillSize = ROMMainSegments * SegSize;
Bank0Addr = 0x4000;
Bank1Addr = 0x6000;
Bank2Addr = 0x8000;
Bank3Addr = 0xA000;
ROMSignature = "ROM_YAM8";
TargetDesc = `${ROMSize/1024}MB ROM using Yamanooto-8 mapper (starting at 4000h)`;
}
//-----------------------------------------------------------------------------
else if (Target === "ROM_ASCII16X")
{
if(!ROMMainSegments)
ROMMainSegments = 2;
Mapper = "ROM_ASCII16X";
// Target = `ROM_ASCII16X_${ROMSize/1024}M`;
Ext = "rom";
Crt0 = "crt0_rom_mapper";
StartAddr = 0x4000;
CodeAddr = 0x4000;
RamAddr = 0xC000;
MapperSize = ROMSize*1024;
SegSize = 16*1024;
FillSize = ROMMainSegments * SegSize;
Bank0Addr = 0x4000;
Bank1Addr = 0x8000;
ROMSignature = "ASCII16X";
AddROMSignature = true; // Force adding signature
TargetDesc = `${ROMSize}KB ROM using ASCII16-X mapper (starting at 4000h)`;
}
//*****************************************************************************
// MSX-DOS
//*****************************************************************************
//-----------------------------------------------------------------------------
else if (Target === "DOS0")
{
DOS = 0;
Ext = "com";
Crt0 = "crt0_dos";
StartAddr = 0x0100;
CodeAddr = 0x0100;
RamAddr = 0; // Right after the code
FillSize = 0;
TargetDesc = "Direct disk program using custom boot sector (starting at 0100h)";
}
//-----------------------------------------------------------------------------
else if (Target === "DOS1")
{
DOS = 1;
Ext = "com";
Crt0 = "crt0_dos";
StartAddr = 0x0100;
CodeAddr = 0x0100;
RamAddr = 0; // Right after the code
FillSize = 0;
TargetDesc = "MSX-DOS 1 program (starting at 0100h)";
}
//-----------------------------------------------------------------------------
else if (Target === "DOS2")
{
DOS = 2;
Ext = "com";
Crt0 = "crt0_dos";
StartAddr = 0x0100;
CodeAddr = 0x0100;
RamAddr = 0; // Right after the code
FillSize = 0;
TargetDesc = "MSX-DOS 2 program (starting at 0100h)";
}
//-----------------------------------------------------------------------------
else if (Target === "DOS2_MAPPER")
{
if(!ROMMainSegments)
ROMMainSegments = 2;
Mapper = "ROM_ASCII16";
Ext = "rom";
Crt0 = "crt0_rom_mapper";
StartAddr = 0x4000;
CodeAddr = 0x4000;
RamAddr = 0xC000;
MapperSize = ROMSize*1024;
SegSize = 16*1024;
FillSize = ROMMainSegments * SegSize;
Bank0Addr = 0x4000;
Bank1Addr = 0x8000;
TargetDesc = "MSX-DOS 2 launcher to RAM mapper (program starting at 4000h)";
}
//-----------------------------------------------------------------------------
else
{
console.log(`${ColorRed} Error: Unknow target ${Target}!${ColorReset}`);
process.exit(1);
}