1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2025-02-28 05:29:43 +00:00

added key handler to base machine

This commit is contained in:
Steven Hugg 2019-08-26 13:44:06 -04:00
parent 33a0e9ed57
commit 0bcd828670
7 changed files with 12 additions and 34 deletions

View File

@ -237,12 +237,12 @@ export abstract class BasicMachine implements HasCPU, Bus, SampledAudioSource, A
abstract cpu : CPU; abstract cpu : CPU;
abstract ram : Uint8Array; abstract ram : Uint8Array;
// TODO? abstract handler; // keyboard handler
rom : Uint8Array; rom : Uint8Array;
pixels : Uint32Array; pixels : Uint32Array;
audio : SampledAudioSink; audio : SampledAudioSink;
inputs : Uint8Array = new Uint8Array(32); inputs : Uint8Array = new Uint8Array(32);
handler : (key,code,flags) => void; // keyboard handler
scanline : number; scanline : number;
frameCycles : number; frameCycles : number;
@ -253,6 +253,9 @@ export abstract class BasicMachine implements HasCPU, Bus, SampledAudioSource, A
abstract read(a:number) : number; abstract read(a:number) : number;
abstract write(a:number, v:number) : void; abstract write(a:number, v:number) : void;
setKeyInput(key:number, code:number, flags:number) : void {
this.handler && this.handler(key,code,flags);
}
getAudioParams() : SampledAudioParams { getAudioParams() : SampledAudioParams {
return {sampleRate:this.sampleRate, stereo:false}; return {sampleRate:this.sampleRate, stereo:false};
} }

View File

@ -443,7 +443,6 @@ export class BallyAstrocade extends BasicScanlineMachine implements AcceptsPaddl
cpu : Z80; cpu : Z80;
m; // _BallyAstrocade m; // _BallyAstrocade
handler;
psg: AstrocadeAudio; psg: AstrocadeAudio;
audioadapter; audioadapter;
backbuffer : Uint32Array; backbuffer : Uint32Array;
@ -466,10 +465,6 @@ export class BallyAstrocade extends BasicScanlineMachine implements AcceptsPaddl
this.m.init(this, this.cpu, this.ram, this.inputs, this.psg); this.m.init(this, this.cpu, this.ram, this.inputs, this.psg);
} }
setKeyInput(key:number, code:number, flags:number) : void {
this.handler(key,code,flags);
}
read(a:number) : number { read(a:number) : number {
return this.m.membus.read(a); return this.m.membus.read(a);
} }

View File

@ -316,7 +316,6 @@ export class Atari7800 extends BasicMachine {
pokey1; //TODO: type pokey1; //TODO: type
audioadapter; audioadapter;
handler; // TODO: type, or use ControllerPoller
lastFrameCycles = 0; lastFrameCycles = 0;
read : (a:number) => number; read : (a:number) => number;
@ -371,10 +370,6 @@ export class Atari7800 extends BasicMachine {
//TODO this.bios = new Uint8Array(0x1000); //TODO this.bios = new Uint8Array(0x1000);
// TODO: TIA access wastes a cycle // TODO: TIA access wastes a cycle
setKeyInput(key:number, code:number, flags:number) : void {
this.handler(key,code,flags);
}
advanceFrame(maxClocks, trap) : number { advanceFrame(maxClocks, trap) : number {
var idata = this.pixels; var idata = this.pixels;
var iofs = 0; var iofs = 0;

View File

@ -45,7 +45,6 @@ export class Midway8080 extends BasicScanlineMachine {
cpu: Z80 = new Z80(); cpu: Z80 = new Z80();
ram = new Uint8Array(0x2000); ram = new Uint8Array(0x2000);
handler;
constructor() { constructor() {
super(); super();
@ -54,10 +53,6 @@ export class Midway8080 extends BasicScanlineMachine {
this.handler = newKeyboardHandler(this.inputs, SPACEINV_KEYCODE_MAP); this.handler = newKeyboardHandler(this.inputs, SPACEINV_KEYCODE_MAP);
} }
setKeyInput(key:number, code:number, flags:number) : void {
this.handler(key,code,flags);
}
read = newAddressDecoder([ read = newAddressDecoder([
[0x0000, 0x1fff, 0x1fff, (a) => { return this.rom ? this.rom[a] : 0; }], [0x0000, 0x1fff, 0x1fff, (a) => { return this.rom ? this.rom[a] : 0; }],
[0x2000, 0x3fff, 0x1fff, (a) => { return this.ram[a]; }], [0x2000, 0x3fff, 0x1fff, (a) => { return this.ram[a]; }],

View File

@ -20,7 +20,6 @@ export abstract class BaseZ80VDPBasedMachine extends BasicScanlineMachine {
cpu: Z80 = new Z80(); cpu: Z80 = new Z80();
vdp: TMS9918A; vdp: TMS9918A;
psg; psg;
handler;
audioadapter; audioadapter;
abstract vdpInterrupt(); abstract vdpInterrupt();
@ -35,10 +34,6 @@ export abstract class BaseZ80VDPBasedMachine extends BasicScanlineMachine {
this.audioadapter = psg && new TssChannelAdapter(psg.psg, audioOversample, this.sampleRate); this.audioadapter = psg && new TssChannelAdapter(psg.psg, audioOversample, this.sampleRate);
} }
setKeyInput(key:number, code:number, flags:number) : void {
this.handler(key,code,flags);
}
connectVideo(pixels) { connectVideo(pixels) {
super.connectVideo(pixels); super.connectVideo(pixels);
var cru = { var cru = {

View File

@ -45,7 +45,6 @@ export class VicDual extends BasicScanlineMachine {
ram = new Uint8Array(0x1000); ram = new Uint8Array(0x1000);
psg: AY38910_Audio; psg: AY38910_Audio;
display: VicDualDisplay; display: VicDualDisplay;
handler;
audioadapter; audioadapter;
constructor() { constructor() {
@ -59,10 +58,6 @@ export class VicDual extends BasicScanlineMachine {
this.audioadapter = new TssChannelAdapter(this.psg.psg, audioOversample, this.sampleRate); this.audioadapter = new TssChannelAdapter(this.psg.psg, audioOversample, this.sampleRate);
} }
setKeyInput(key:number, code:number, flags:number) : void {
this.handler(key,code,flags);
}
getKeyboardFunction() { getKeyboardFunction() {
return (o) => { return (o) => {
// reset when coin inserted // reset when coin inserted

View File

@ -239,19 +239,14 @@ function refreshWindowList() {
return new Views.MemoryView(); return new Views.MemoryView();
}); });
} }
if (platform.readVRAMAddress) {
addWindowItem("#memvram", "VRAM Browser", () => {
return new Views.VRAMMemoryView();
});
}
if (current_project.segments) { if (current_project.segments) {
addWindowItem("#memmap", "Memory Map", () => { addWindowItem("#memmap", "Memory Map", () => {
return new Views.MemoryMapView(); return new Views.MemoryMapView();
}); });
} }
if (platform.getRasterScanline && platform.setBreakpoint && platform.getCPUState) { // TODO: use profiler class to determine compat if (platform.readVRAMAddress) {
addWindowItem("#profiler", "Profiler", () => { addWindowItem("#memvram", "VRAM Browser", () => {
return new Views.ProfileView(); return new Views.VRAMMemoryView();
}); });
} }
if (platform.startProbing) { if (platform.startProbing) {
@ -266,6 +261,11 @@ function refreshWindowList() {
return new Views.RasterPCHeatMapView(); return new Views.RasterPCHeatMapView();
}); });
} }
else if (platform.getRasterScanline && platform.setBreakpoint && platform.getCPUState) { // TODO: use profiler class to determine compat
addWindowItem("#profiler", "Profiler", () => {
return new Views.ProfileView();
});
}
addWindowItem('#asseteditor', 'Asset Editor', () => { addWindowItem('#asseteditor', 'Asset Editor', () => {
return new Views.AssetEditorView(); return new Views.AssetEditorView();
}); });