1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-06-01 05:41:31 +00:00
8bitworkshop/src/platform/astrocade.ts

73 lines
2.6 KiB
TypeScript
Raw Permalink Normal View History

2018-08-28 22:11:22 +00:00
import { BallyAstrocade } from "../machine/astrocade";
import { BaseZ80MachinePlatform } from "../common/baseplatform";
import { Platform } from "../common/baseplatform";
import { PLATFORMS } from "../common/emu";
2018-08-28 22:11:22 +00:00
// http://metopal.com/projects/ballybook/doku.php
2018-08-28 22:11:22 +00:00
const ASTROCADE_PRESETS = [
{ id: '01-helloworlds.asm', name: 'Hello World (ASM)' },
{ id: '02-telephone.asm', name: 'Telephone (ASM)' },
{ id: '03-horcbpal.asm', name: 'Paddle Demo (ASM)' },
{ id: 'hello.c', name: 'Hello Graphics' },
{ id: 'lines.c', name: 'Lines' },
{ id: 'sprites.c', name: 'Sprites' },
{ id: 'vsync.c', name: 'Sprites w/ VSYNC' },
{ id: 'fastsprites.c', name: 'Fast Sprites' },
{ id: 'music.c', name: 'Music' },
{ id: 'rotate.c', name: 'Rotate Op' },
{ id: 'rainbow.c', name: 'Rainbow' },
{ id: 'cosmic.c', name: 'Cosmic Impalas Game' },
{ id: 'racing.c', name: 'Pseudo 3-D Racing Game' },
2018-08-28 22:11:22 +00:00
];
const ASTROCADE_BIOS_PRESETS = [
{ id: 'bios.c', name: 'BIOS' },
];
2023-12-13 21:22:17 +00:00
const ASTROCADE_ARCADE_PRESETS = [
{ id: 'hello.c', name: 'Hello Graphics' },
];
class BallyAstrocadePlatform extends BaseZ80MachinePlatform<BallyAstrocade> implements Platform {
2018-08-28 22:11:22 +00:00
newMachine() { return new BallyAstrocade(false); }
getPresets() { return ASTROCADE_PRESETS; }
getDefaultExtension() { return ".c"; };
readAddress(a) { return this.machine.read(a); }
2019-08-27 16:12:56 +00:00
getMemoryMap = function() { return { main:[
{name:'BIOS',start:0x0,size:0x2000,type:'rom'},
//{name:'Cart ROM',start:0x2000,size:0x2000,type:'rom'},
//{name:'Magic RAM',start:0x0,size:0x4000,type:'ram'},
{name:'Screen RAM',start:0x4000,size:0x1000,type:'ram'},
{name:'BIOS Variables',start:0x4fce,size:0x5000-0x4fce,type:'ram'},
] } };
showHelp() { return "https://8bitworkshop.com/docs/platforms/astrocade/"; }
}
2019-08-27 02:42:14 +00:00
class BallyAstrocadeBIOSPlatform extends BallyAstrocadePlatform implements Platform {
2019-08-27 02:42:14 +00:00
getPresets() { return ASTROCADE_BIOS_PRESETS; }
loadROM(title,rom) { this.machine.loadBIOS(rom); }
}
class BallyArcadePlatform extends BallyAstrocadePlatform implements Platform {
newMachine() { return new BallyAstrocade(true); }
2023-12-13 21:22:17 +00:00
getPresets() { return ASTROCADE_ARCADE_PRESETS; }
2019-08-27 02:42:14 +00:00
2019-08-27 16:12:56 +00:00
getMemoryMap = function() { return { main:[
2023-12-13 21:22:17 +00:00
{name:'ROM',start:0x0,size:0x4000,type:'rom'},
2019-08-27 16:12:56 +00:00
{name:'Magic RAM',start:0x0,size:0x4000,type:'ram'},
{name:'Screen RAM',start:0x4000,size:0x4000,type:'ram'},
2023-12-13 21:22:17 +00:00
{name:'ROM',start:0x8000,size:0x4000,type:'rom'},
2019-08-27 16:12:56 +00:00
] } };
2019-08-27 02:42:14 +00:00
}
2018-08-28 22:11:22 +00:00
PLATFORMS['astrocade'] = BallyAstrocadePlatform;
2019-08-27 02:42:14 +00:00
PLATFORMS['astrocade-bios'] = BallyAstrocadeBIOSPlatform;
PLATFORMS['astrocade-arcade'] = BallyArcadePlatform;