From 0bcd828670b608e1de5a5fa76001ee878b2451b6 Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Mon, 26 Aug 2019 13:44:06 -0400 Subject: [PATCH] added key handler to base machine --- src/devices.ts | 5 ++++- src/machine/astrocade.ts | 5 ----- src/machine/atari7800.ts | 5 ----- src/machine/mw8080bw.ts | 5 ----- src/machine/vdp_z80.ts | 5 ----- src/machine/vicdual.ts | 5 ----- src/ui.ts | 16 ++++++++-------- 7 files changed, 12 insertions(+), 34 deletions(-) diff --git a/src/devices.ts b/src/devices.ts index e84026cb..4472543c 100644 --- a/src/devices.ts +++ b/src/devices.ts @@ -237,12 +237,12 @@ export abstract class BasicMachine implements HasCPU, Bus, SampledAudioSource, A abstract cpu : CPU; abstract ram : Uint8Array; - // TODO? abstract handler; // keyboard handler rom : Uint8Array; pixels : Uint32Array; audio : SampledAudioSink; inputs : Uint8Array = new Uint8Array(32); + handler : (key,code,flags) => void; // keyboard handler scanline : number; frameCycles : number; @@ -253,6 +253,9 @@ export abstract class BasicMachine implements HasCPU, Bus, SampledAudioSource, A abstract read(a:number) : number; abstract write(a:number, v:number) : void; + setKeyInput(key:number, code:number, flags:number) : void { + this.handler && this.handler(key,code,flags); + } getAudioParams() : SampledAudioParams { return {sampleRate:this.sampleRate, stereo:false}; } diff --git a/src/machine/astrocade.ts b/src/machine/astrocade.ts index 25f056b1..130eb381 100644 --- a/src/machine/astrocade.ts +++ b/src/machine/astrocade.ts @@ -443,7 +443,6 @@ export class BallyAstrocade extends BasicScanlineMachine implements AcceptsPaddl cpu : Z80; m; // _BallyAstrocade - handler; psg: AstrocadeAudio; audioadapter; 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); } - setKeyInput(key:number, code:number, flags:number) : void { - this.handler(key,code,flags); - } - read(a:number) : number { return this.m.membus.read(a); } diff --git a/src/machine/atari7800.ts b/src/machine/atari7800.ts index 04f5daf7..9cb73c8a 100644 --- a/src/machine/atari7800.ts +++ b/src/machine/atari7800.ts @@ -316,7 +316,6 @@ export class Atari7800 extends BasicMachine { pokey1; //TODO: type audioadapter; - handler; // TODO: type, or use ControllerPoller lastFrameCycles = 0; read : (a:number) => number; @@ -371,10 +370,6 @@ export class Atari7800 extends BasicMachine { //TODO this.bios = new Uint8Array(0x1000); // TODO: TIA access wastes a cycle - setKeyInput(key:number, code:number, flags:number) : void { - this.handler(key,code,flags); - } - advanceFrame(maxClocks, trap) : number { var idata = this.pixels; var iofs = 0; diff --git a/src/machine/mw8080bw.ts b/src/machine/mw8080bw.ts index 3b5c9174..1383cb21 100644 --- a/src/machine/mw8080bw.ts +++ b/src/machine/mw8080bw.ts @@ -45,7 +45,6 @@ export class Midway8080 extends BasicScanlineMachine { cpu: Z80 = new Z80(); ram = new Uint8Array(0x2000); - handler; constructor() { super(); @@ -53,10 +52,6 @@ export class Midway8080 extends BasicScanlineMachine { this.connectCPUIOBus(this.newIOBus()); this.handler = newKeyboardHandler(this.inputs, SPACEINV_KEYCODE_MAP); } - - setKeyInput(key:number, code:number, flags:number) : void { - this.handler(key,code,flags); - } read = newAddressDecoder([ [0x0000, 0x1fff, 0x1fff, (a) => { return this.rom ? this.rom[a] : 0; }], diff --git a/src/machine/vdp_z80.ts b/src/machine/vdp_z80.ts index 37eefac4..845be07b 100644 --- a/src/machine/vdp_z80.ts +++ b/src/machine/vdp_z80.ts @@ -20,7 +20,6 @@ export abstract class BaseZ80VDPBasedMachine extends BasicScanlineMachine { cpu: Z80 = new Z80(); vdp: TMS9918A; psg; - handler; audioadapter; abstract vdpInterrupt(); @@ -35,10 +34,6 @@ export abstract class BaseZ80VDPBasedMachine extends BasicScanlineMachine { 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) { super.connectVideo(pixels); var cru = { diff --git a/src/machine/vicdual.ts b/src/machine/vicdual.ts index 62fd6dc8..160253f7 100644 --- a/src/machine/vicdual.ts +++ b/src/machine/vicdual.ts @@ -45,7 +45,6 @@ export class VicDual extends BasicScanlineMachine { ram = new Uint8Array(0x1000); psg: AY38910_Audio; display: VicDualDisplay; - handler; audioadapter; constructor() { @@ -59,10 +58,6 @@ export class VicDual extends BasicScanlineMachine { this.audioadapter = new TssChannelAdapter(this.psg.psg, audioOversample, this.sampleRate); } - setKeyInput(key:number, code:number, flags:number) : void { - this.handler(key,code,flags); - } - getKeyboardFunction() { return (o) => { // reset when coin inserted diff --git a/src/ui.ts b/src/ui.ts index 1ab8d700..1d01d26d 100644 --- a/src/ui.ts +++ b/src/ui.ts @@ -239,19 +239,14 @@ function refreshWindowList() { return new Views.MemoryView(); }); } - if (platform.readVRAMAddress) { - addWindowItem("#memvram", "VRAM Browser", () => { - return new Views.VRAMMemoryView(); - }); - } if (current_project.segments) { addWindowItem("#memmap", "Memory Map", () => { return new Views.MemoryMapView(); }); } - if (platform.getRasterScanline && platform.setBreakpoint && platform.getCPUState) { // TODO: use profiler class to determine compat - addWindowItem("#profiler", "Profiler", () => { - return new Views.ProfileView(); + if (platform.readVRAMAddress) { + addWindowItem("#memvram", "VRAM Browser", () => { + return new Views.VRAMMemoryView(); }); } if (platform.startProbing) { @@ -266,6 +261,11 @@ function refreshWindowList() { 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', () => { return new Views.AssetEditorView(); });