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 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};
}

View File

@ -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);
}

View File

@ -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;

View File

@ -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; }],

View File

@ -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 = {

View File

@ -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

View File

@ -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();
});