8bitworkshop/gen/sound_williams-XXEIJ7OI.js.map

8 lines
5.0 KiB
Plaintext

{
"version": 3,
"sources": ["../src/platform/sound_williams.ts"],
"sourcesContent": ["\nimport { Z80, Z80State } from \"../common/cpu/ZilogZ80\";\nimport { BasicMachine, CPU, Bus } from \"../common/devices\";\nimport { Platform, BaseZ80MachinePlatform } from \"../common/baseplatform\";\nimport { PLATFORMS, RAM, newAddressDecoder, padBytes, noise, setKeyboardFromMap, AnimationTimer, RasterVideo, Keys, makeKeycodeMap } from \"../common/emu\";\nimport { SampleAudio } from \"../common/audio\";\n\nvar WILLIAMS_SOUND_PRESETS = [\n { id: 'swave.c', name: 'Wavetable Synth' },\n];\n\n/****************************************************************************\n\n Midway/Williams Audio Boards\n ----------------------------\n\n 6809 MEMORY MAP\n\n Function Address R/W Data\n ---------------------------------------------------------------\n Program RAM 0000-07FF R/W D0-D7\n\n Music (YM-2151) 2000-2001 R/W D0-D7\n\n 6821 PIA 4000-4003 R/W D0-D7\n\n HC55516 clock low, digit latch 6000 W D0\n HC55516 clock high 6800 W xx\n\n Bank select 7800 W D0-D2\n\n Banked Program ROM 8000-FFFF R D0-D7\n\n****************************************************************************/\n\nclass WilliamsSound extends BasicMachine {\n cpuFrequency = 18432000 / 6; // 3.072 MHz\n cpuCyclesPerFrame = this.cpuFrequency / 60;\n cpuAudioFactor = 32;\n canvasWidth = 256;\n numVisibleScanlines = 256;\n defaultROMSize = 0x4000;\n sampleRate = this.cpuFrequency;\n overscan = true;\n \n cpu : Z80;\n ram = new Uint8Array(0x400);\n iobus : Bus;\n \n command : number = 0;\n dac : number = 0;\n dac_float : number = 0;\n xpos : number = 0;\n\n read = newAddressDecoder([\n [0x0000, 0x3fff, 0x3fff, (a) => { return this.rom && this.rom[a]; }],\n [0x4000, 0x7fff, 0x3ff, (a) => { return this.ram[a]; }]\n ]);\n\n write = newAddressDecoder([\n [0x4000, 0x7fff, 0x3ff, (a, v) => { this.ram[a] = v; }],\n ]);\n \n constructor() {\n super();\n this.cpu = new Z80();\n this.connectCPUMemoryBus(this);\n this.connectCPUIOBus({\n read: (addr) => {\n return this.command & 0xff;\n },\n write: (addr, val) => {\n let dac = this.dac = val & 0xff;\n this.dac_float = ((dac & 0x80) ? -256 + dac : dac) / 128.0;\n }\n });\n }\n \n advanceFrame(trap) : number {\n this.pixels && this.pixels.fill(0); // clear waveform\n let maxCycles = this.cpuCyclesPerFrame;\n var n = 0;\n while (n < maxCycles) {\n if (trap && trap()) {\n break;\n }\n n += this.advanceCPU();\n }\n return n;\n }\n \n advanceCPU() {\n var n = super.advanceCPU();\n this.audio && this.audio.feedSample(this.dac_float, n);\n // draw waveform on screen\n if (this.pixels && !this.cpu.isHalted()) {\n this.pixels[((this.xpos >> 8) & 0xff) + ((255-this.dac) << 8)] = 0xff33ff33;\n this.xpos = (this.xpos + n) & 0xffffff;\n }\n return n;\n }\n\n setKeyInput(key:number, code:number, flags:number) : void {\n var intr = (key - 49);\n if (intr >= 0 && (flags & 1)) {\n this.command = intr & 0xff;\n this.cpu.reset();\n }\n }\n}\n\nexport class WilliamsSoundPlatform extends BaseZ80MachinePlatform<WilliamsSound> {\n\n newMachine() { return new WilliamsSound(); }\n getPresets() { return WILLIAMS_SOUND_PRESETS; }\n getDefaultExtension() { return \".c\"; };\n readAddress(a) { return this.machine.read(a); }\n\n}\n\nPLATFORMS['sound_williams-z80'] = WilliamsSoundPlatform;\n"],
"mappings": "kIAOA,GAAI,GAAyB,CAC3B,CAAE,GAAI,UAAW,KAAM,oBA2BzB,eAA4B,EAAa,CA4BvC,aAAc,CACZ,QA5BF,kBAAe,QAAW,EAC1B,uBAAoB,KAAK,aAAe,GACxC,oBAAiB,GACjB,iBAAc,IACd,yBAAsB,IACtB,oBAAiB,MACjB,gBAAa,KAAK,aAClB,cAAW,GAGX,SAAM,GAAI,YAAW,MAGrB,aAAmB,EACnB,SAAe,EACf,eAAqB,EACrB,UAAgB,EAEhB,UAAO,EAAkB,CACvB,CAAC,EAAQ,MAAQ,MAAQ,AAAC,GAAe,KAAK,KAAO,KAAK,IAAI,IAC9D,CAAC,MAAQ,MAAQ,KAAO,AAAC,GAAe,KAAK,IAAI,MAGnD,WAAQ,EAAkB,CACxB,CAAC,MAAQ,MAAQ,KAAO,CAAC,EAAG,IAAM,CAAE,KAAK,IAAI,GAAK,MAKlD,KAAK,IAAM,GAAI,GACf,KAAK,oBAAoB,MACzB,KAAK,gBAAgB,CACnB,KAAM,AAAC,GACE,KAAK,QAAU,IAExB,MAAO,CAAC,EAAM,IAAQ,CACpB,GAAI,GAAM,KAAK,IAAM,EAAM,IAC3B,KAAK,UAAc,GAAM,IAAQ,KAAO,EAAM,GAAO,OAK3D,aAAa,EAAe,CAC1B,KAAK,QAAU,KAAK,OAAO,KAAK,GAChC,GAAI,GAAY,KAAK,kBAErB,OADI,GAAI,EACD,EAAI,GACL,KAAQ,MAGZ,GAAK,KAAK,aAEZ,MAAO,GAGT,YAAa,CACX,GAAI,GAAI,MAAM,aACd,YAAK,OAAS,KAAK,MAAM,WAAW,KAAK,UAAW,GAEhD,KAAK,QAAU,CAAC,KAAK,IAAI,YAC3B,MAAK,OAAS,MAAK,MAAQ,EAAK,KAAU,KAAI,KAAK,KAAQ,IAAM,WACjE,KAAK,KAAQ,KAAK,KAAO,EAAK,UAEzB,EAGT,YAAY,EAAY,EAAa,EAAqB,CACxD,GAAI,GAAQ,EAAM,GAClB,AAAI,GAAQ,GAAM,EAAQ,GACxB,MAAK,QAAU,EAAO,IACtB,KAAK,IAAI,WAKR,eAAoC,EAAsC,CAE/E,YAAsB,CAAE,MAAO,IAAI,GACnC,YAAsB,CAAE,MAAO,GAC/B,qBAAsB,CAAE,MAAO,KAC/B,YAAY,EAAU,CAAE,MAAO,MAAK,QAAQ,KAAK,KAInD,EAAU,sBAAwB",
"names": []
}