8bitworkshop/gen/cpc-Y7H77AJC.js.map

8 lines
9.8 KiB
Plaintext

{
"version": 3,
"sources": ["../src/machine/cpc.ts", "../src/platform/cpc.ts"],
"sourcesContent": ["\n//// WASM Machine\n\nimport { KeyFlags } from \"../common/emu\";\nimport { Machine } from \"../common/baseplatform\";\nimport { TrapCondition } from \"../common/devices\";\nimport { BaseWASMMachine } from \"../common/wasmplatform\";\n\nconst BIN_HEADER = [\n 0,\n 0,0,0,0,0,0,0,0,\n 0,0,0,\n 0,0,0,0,0,0,\n 1,\n 0,0,\n 0x0, 0x40, // load addr\n 0,\n 0x0, 0x0, // length\n 0x0, 0x40, // start addr\n 0,0,0,0,\n 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, \n 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, \n 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, \n 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, \n 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, \n 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, \n];\n\nexport class CPC_WASMMachine extends BaseWASMMachine implements Machine {\n\n numTotalScanlines = 312;\n cpuCyclesPerLine = 224;\n\n joymask0 = 0;\n runaddr = 0x4000;\n\n loadROM(rom: Uint8Array) {\n let combined = new Uint8Array(rom.length + BIN_HEADER.length);\n combined.set(BIN_HEADER, 0);\n combined[24] = rom.length & 0xff;\n combined[25] = rom.length >> 8;\n combined[26] = this.runaddr & 0xff;\n combined[27] = this.runaddr >> 8;\n combined.set(rom, BIN_HEADER.length);\n super.loadROM(combined);\n }\n reset() {\n super.reset();\n // advance bios\n this.exports.machine_exec(this.sys, 1000000); // TODO?\n // load rom (SNA or BIN)\n if (this.romptr && this.romlen) {\n this.exports.machine_load_rom(this.sys, this.romptr, this.romlen);\n // advance clock until program starts\n for (var i=0; i<100000 && this.getPC() != this.runaddr; i++) {\n this.exports.machine_tick(this.sys);\n }\n }\n }\n advanceFrame(trap: TrapCondition) : number {\n var scanline = this.getRasterY();\n var clocks = Math.floor((this.numTotalScanlines - scanline) * (4000000/50) / this.numTotalScanlines);\n var probing = this.probe != null;\n if (probing) this.exports.machine_reset_probe_buffer();\n clocks = super.advanceFrameClock(trap, clocks);\n if (probing) this.copyProbeData();\n return clocks;\n }\n getRasterY() {\n return this.exports.machine_get_raster_line(this.sys);\n }\n getRasterCanvasPosition() {\n return {\n x: -1, // TODO?\n y: this.getRasterY() - 14,\n }\n }\n /*\n z80_tick_t tick_cb; // 0\n uint64_t bc_de_hl_fa; // 8\n uint64_t bc_de_hl_fa_; // 16\n uint64_t wz_ix_iy_sp; // 24\n uint64_t im_ir_pc_bits; // 32\n uint64_t pins; // 48\n void* user_data;\n z80_trap_t trap_cb;\n void* trap_user_data;\n int trap_id; \n */\n getCPUState() {\n this.exports.machine_save_cpu_state(this.sys, this.cpustateptr);\n var s = this.cpustatearr;\n var af = s[9] + (s[8]<<8); // not FA\n var hl = s[10] + (s[11]<<8);\n var de = s[12] + (s[13]<<8);\n var bc = s[14] + (s[15]<<8);\n var sp = s[24] + (s[25]<<8);\n var iy = s[26] + (s[27]<<8);\n var ix = s[28] + (s[29]<<8);\n var pc = s[34] + (s[35]<<8);\n var ir = s[36] + (s[37]<<8);\n return {\n PC:pc,\n SP:sp,\n AF:af,\n BC:bc,\n DE:de,\n HL:hl,\n IX:ix,\n IY:iy,\n IR:ir,\n o:this.readConst(pc),\n }\n }\n saveState() {\n this.exports.machine_save_state(this.sys, this.stateptr);\n return {\n c:this.getCPUState(),\n state:this.statearr.slice(0),\n };\n }\n loadState(state) : void {\n this.statearr.set(state.state);\n this.exports.machine_load_state(this.sys, this.stateptr);\n }\n getVideoParams() {\n return {width:768, height:272, overscan:true, videoFrequency:50, aspect:1.3};\n }\n setKeyInput(key: number, code: number, flags: number): void {\n // TODO: handle shifted keys\n if (key == 16 || key == 17 || key == 18 || key == 224) return; // meta keys\n //console.log(key, code, flags);\n //if (flags & KeyFlags.Shift) { key += 64; }\n var mask = 0;\n var mask2 = 0;\n if (key == 37) { key = 0x8; mask = 0x4; } // LEFT\n if (key == 38) { key = 0xb; mask = 0x1; } // UP\n if (key == 39) { key = 0x9; mask = 0x8; } // RIGHT\n if (key == 40) { key = 0xa; mask = 0x2; } // DOWN\n if (key == 32) { mask = 0x10; } // FIRE\n if (key == 65) { key = 65; mask2 = 0x4; } // LEFT\n if (key == 87) { key = 87; mask2 = 0x1; } // UP\n if (key == 68) { key = 68; mask2 = 0x8; } // RIGHT\n if (key == 83) { key = 83; mask2 = 0x2; } // DOWN\n if (key == 69) { mask2 = 0x10; } // FIRE\n if (key == 113) { key = 0xf1; } // F2\n if (key == 115) { key = 0xf3; } // F4\n if (key == 119) { key = 0xf5; } // F8\n if (key == 121) { key = 0xf7; } // F10\n if (flags & KeyFlags.KeyDown) {\n this.exports.machine_key_down(this.sys, key);\n this.joymask0 |= mask;\n } else if (flags & KeyFlags.KeyUp) {\n this.exports.machine_key_up(this.sys, key);\n this.joymask0 &= ~mask;\n }\n // TODO: this.exports.cpc_joystick(this.sys, this.joymask0, 0);\n }\n}\n", "\nimport { CPC_WASMMachine } from \"../machine/cpc\";\nimport { Platform, BaseZ80MachinePlatform } from \"../common/baseplatform\";\nimport { PLATFORMS } from \"../common/emu\";\n\nconst CPC_PRESETS = [\n {id:'hello.asm', name:'Hello World (ASM)'},\n {id:'easy_stdio_boxes.c', name:'Standard I/O (C)'},\n {id:'easy_mode_strings.c', name:'Video Modes (C)'},\n {id:'easy_random.c', name:'Random Numbers (C)'},\n {id:'easy_sprites.c', name:'Keyboard + Sprites (C)'},\n {id:'medium_scrolling.c', name:'Scrolling Text (C)'},\n {id:'siegegame.c', name:'Siege Game (C)'},\n {id:'music.c', name:'Music Player (C)'},\n //{id:'sprite_demo.c', name:'Sprite Demo (C)'},\n //{id:'keyboard_redefine.c', name:'Keyboard Redefine (C)'},\n];\n\nconst CPC_MEMORY_MAP = { main:[\n {name:'BIOS', start:0x0000, size:0x4000, type:'rom'},\n {name:'Screen RAM', start:0xc000, size:0x4000, type:'ram'},\n] }\n\n// WASM CPC platform\nclass CPCWASMPlatform extends BaseZ80MachinePlatform<CPC_WASMMachine> implements Platform {\n\n newMachine() { return new CPC_WASMMachine('cpc'); }\n\n getPresets() { return CPC_PRESETS; }\n getDefaultExtension() { return \".asm\"; };\n readAddress(a) { return this.machine.readConst(a); }\n getMemoryMap() { return CPC_MEMORY_MAP; }\n showHelp() {\n return \"http://lronaldo.github.io/cpctelera/files/readme-txt.html\"; // TODO\n }\n}\n\n// TODO: make different cpc_init() types for different platforms\nPLATFORMS['cpc.6128'] = CPCWASMPlatform;\nPLATFORMS['cpc.464'] = CPCWASMPlatform;\nPLATFORMS['cpc.kcc'] = CPCWASMPlatform;\n"],
"mappings": "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",
"names": []
}