1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-07-27 08:29:06 +00:00
8bitworkshop/gen/atari8-5TSJIAYK.js.map

8 lines
15 KiB
Plaintext

{
"version": 3,
"sources": ["../src/machine/atari8.ts", "../src/platform/atari8.ts"],
"sourcesContent": ["import { Machine } from \"../common/baseplatform\";\nimport { AcceptsKeyInput, AcceptsPaddleInput, AcceptsROM, FrameBased, Probeable, RasterFrameBased, TrapCondition, VideoSource } from \"../common/devices\";\nimport { KeyFlags } from \"../common/emu\";\nimport { hex } from \"../common/util\";\nimport { BaseWASIMachine } from \"../common/wasmplatform\";\n\nexport class Atari8_WASMMachine extends BaseWASIMachine\n implements Machine, Probeable, VideoSource, AcceptsROM, FrameBased, AcceptsKeyInput, AcceptsPaddleInput {\n\n numTotalScanlines = 312;\n cpuCyclesPerLine = 63;\n\n prgstart: number;\n joymask0 = 0;\n joymask1 = 0;\n\n loadROM(rom: Uint8Array) {\n super.loadROM(rom);\n this.reloadROM();\n }\n reloadROM() {\n if (this.sys) {\n var result = this.exports.machine_load_rom(this.sys, this.romptr, this.romlen);\n console.log('machine_load_rom', result);\n //console.log(this.wasmFs.fs.existsSync('atari8.img'), result);\n }\n }\n loadBIOS(srcArray: Uint8Array) {\n super.loadBIOS(srcArray);\n }\n reset() {\n super.reset();\n this.reloadROM();\n }\n advanceFrame(trap: TrapCondition): number {\n // TODO\n this.exports.machine_start_frame(this.sys);\n if (trap) {\n this.advanceFrameClock(trap, 999999); // TODO?\n } else {\n this.exports.machine_advance_frame(this.sys);\n }\n this.syncVideo();\n this.syncAudio();\n return 1;\n }\n getCPUState() {\n this.exports.machine_save_cpu_state(this.sys, this.stateptr);\n var s = this.statearr;\n var pc = s[6] + (s[7]<<8);\n return {\n PC:pc,\n SP:s[2],\n A:s[0],\n X:s[3],\n Y:s[4],\n C:s[1] & 1,\n Z:s[1] & 2,\n I:s[1] & 4,\n D:s[1] & 8,\n V:s[1] & 64,\n N:s[1] & 128,\n o:this.readConst(pc),\n }\n }\n saveState() {\n var cpu = this.getCPUState();\n this.exports.machine_save_state(this.sys, this.stateptr);\n return {\n c: cpu,\n state: this.statearr.slice(0),\n //ram:this.statearr.slice(18640, 18640+0x200), // ZP and stack\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: 384, height: 240, overscan: true, videoFrequency: 60 };\n }\n pollControls() {\n }\n setKeyInput(key: number, code: number, flags: number): void {\n // modifier flags\n if (flags & KeyFlags.Shift) key |= 0x100;\n if (flags & KeyFlags.Ctrl) key |= 0x200;\n // keyboard -> joystick\n var mask = 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 = 0x100; } // FIRE\n // set machine inputs\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 this.setJoyInput(0, this.joymask0);\n this.setJoyInput(1, this.joymask1);\n }\n setJoyInput(joy: number, mask: number) {\n this.exports.machine_joy_set(this.sys, joy, mask);\n }\n setPaddleInput(controller: number, value: number): void {\n this.exports.machine_paddle_set(this.sys, controller, value);\n }\n\n}\n", "\nimport { Platform, getOpcodeMetadata_6502, getToolForFilename_6502, Base6502MachinePlatform } from \"../common/baseplatform\";\nimport { PLATFORMS, Keys, makeKeycodeMap } from \"../common/emu\";\nimport { BaseMAME6502Platform } from \"../common/mameplatform\";\nimport { Atari8_WASMMachine } from \"../machine/atari8\";\n\ndeclare var jt; // for 6502\n\nvar Atari8_PRESETS = [\n {id:'hello.dasm', name:'Hello World (ASM)'},\n {id:'hellopm.dasm', name:'Hello Sprites (ASM)'},\n {id:'helloconio.c', name:'Text Mode (C)'},\n {id:'siegegame.c', name:'Siege Game (C)'},\n {id:'hellodlist.c', name:'Display List (C)'},\n];\n\nvar Atari800_PRESETS = Atari8_PRESETS.concat([\n {id:'sieve.bas', name:'Benchmark (FastBasic)'},\n {id:'pmtest.bas', name:'Sprites Test (FastBasic)'},\n {id:'dli.bas', name:'DLI Test (FastBasic)'},\n {id:'joyas.bas', name:'Match-3 Game (FastBasic)'},\n]);\n\nconst ATARI8_KEYCODE_MAP = makeKeycodeMap([\n [Keys.VK_SPACE, 0, 0],\n [Keys.VK_ENTER, 0, 0],\n]);\n\nconst Atari800_MemoryMap = { main:[\n {name:'RAM',start:0x0,size:0x10000,type:'ram'},\n {name:'Left Cartridge ROM',start:0xa000,size:0x2000,type:'rom'},\n {name:'GTIA',start:0xd000,size:0x20,type:'io'},\n {name:'POKEY',start:0xd200,size:0x10,type:'io'},\n {name:'PIA',start:0xd300,size:0x04,type:'io'},\n {name:'ANTIC',start:0xd400,size:0x10,type:'io'},\n {name:'Cartridge Control Line',start:0xd600,size:0x100,type:'io'},\n {name:'ROM',start:0xd800,size:0x800,type:'rom'},\n {name:'ATARI Character Set',start:0xe000,size:0x400,type:'rom'},\n {name:'ROM',start:0xe400,size:0x1c00,type:'rom'},\n] }\n\nfunction getToolForFilename_Atari8(fn:string) {\n if (fn.endsWith(\".bas\") || fn.endsWith(\".fb\") || fn.endsWith(\".fbi\")) return \"fastbasic\";\n else return getToolForFilename_6502(fn);\n}\n\n/// MAME support\n\nabstract class Atari8MAMEPlatform extends BaseMAME6502Platform {\n getPresets() { return Atari8_PRESETS; }\n getToolForFilename = getToolForFilename_Atari8;\n getOpcodeMetadata = getOpcodeMetadata_6502;\n getDefaultExtension() { return \".asm\"; };\n showHelp(tool:string, ident:string) {\n if (tool == 'fastbasic')\n window.open(\"https://github.com/dmsc/fastbasic/blob/master/manual.md\", \"_help\");\n else\n window.open(\"https://atariwiki.org/wiki/Wiki.jsp?page=Assembler\", \"_help\"); // TODO\n }\n}\n\nabstract class Atari8WASIMAMEPlatform extends BaseMAME6502Platform {\n getPresets() { return Atari8_PRESETS; }\n getToolForFilename = getToolForFilename_Atari8;\n getOpcodeMetadata = getOpcodeMetadata_6502;\n getDefaultExtension() { return \".asm\"; };\n showHelp(tool:string, ident:string) {\n if (tool == 'fastbasic')\n window.open(\"https://github.com/dmsc/fastbasic/blob/master/manual.md\", \"_help\");\n else\n window.open(\"https://atariwiki.org/wiki/Wiki.jsp?page=Assembler\", \"_help\"); // TODO\n }\n}\n\nclass Atari800MAMEPlatform extends Atari8MAMEPlatform implements Platform {\n getPresets() { return Atari800_PRESETS; }\n loadROM(title, data) {\n if (!this.started) {\n this.startModule(this.mainElement, {\n jsfile:'mame8bitws.js',\n biosfile:'a800xl.zip',\n cfgfile:'a800xl.cfg',\n driver:'a800xl',\n width:336*2,\n height:225*2,\n romfn:'/emulator/cart.rom',\n romdata:new Uint8Array(data),\n romsize:0x2000,\n preInit:function(_self) {\n },\n });\n } else {\n this.loadROMFile(data);\n this.loadRegion(\":cartleft:cart:rom\", data);\n }\n }\n start() {\n }\n getMemoryMap = function() { return Atari800_MemoryMap };\n}\n\nclass Atari5200MAMEPlatform extends Atari8MAMEPlatform implements Platform {\n loadROM(title, data) {\n if (!this.started) {\n this.startModule(this.mainElement, {\n jsfile:'mame8bitws.js',\n biosfile:'a5200/5200.rom',\n cfgfile:'a5200.cfg',\n driver:'a5200',\n width:336*2,\n height:225*2,\n romfn:'/emulator/cart.rom',\n romdata:new Uint8Array(data),\n romsize:0x8000,\n preInit:function(_self) {\n },\n });\n } else {\n this.loadROMFile(data);\n this.loadRegion(\":cartleft:cart:rom\", data);\n }\n }\n start() {\n }\n getMemoryMap = function() { return { main:[\n {name:'RAM',start:0x0,size:0x4000,type:'ram'},\n {name:'Cartridge ROM',start:0x4000,size:0x8000,type:'rom'},\n {name:'GTIA',start:0xc000,size:0x20,type:'io'},\n {name:'ANTIC',start:0xd400,size:0x10,type:'io'},\n {name:'POKEY',start:0xe800,size:0x10,type:'io'},\n {name:'ATARI Character Set',start:0xf800,size:0x400,type:'rom'},\n {name:'ROM',start:0xfc00,size:0x400,type:'rom'},\n ] } };\n}\n\n///\n\n// Altirra Superkernel ROM (http://www.virtualdub.org/altirra.html) compiled with MADS\nconst ALTIRRA_SUPERKERNEL_LZG = `\nTFpHAAAIAAAABJGU01hQARcZHSUAACUFGCUBABgAAGZmZh2IZv9mJUEAGD5gPAZ8HVBsGDBmRgAcNhw4\nb2Y7HagdoA4cGBgcDgAAcDgYGDhwHSA8/zwdehgYfhkFGh1EMCWhfhkGYx0IAAAGDBgwYEAAADxmbnZm\nPB0MHTgYHRs8Zh0RJeF+DBgMHVAMHDxsfgwdCGB8Bh1IPGB8ZiXifh15MB1oPB2IPGY+Bgw4GQRVGQNx\nJeMwHV4YDAYZBHclQWAdBhgwYBkEYBkC6Dxmbm5gPh0nHT9+ZgAAfGZ8ZmZ8HVBgYBkCUHhsZmZseBkD\neGBgHXwl4h04PmBgbmYdMB1uGSIrfhkiOR0YBiUBHXAdLR0zAAAdJR2wY3d/a2NjHRB2fn5uHRA8HS4d\nYBkCZhkCSB1IbDYdyB1wPGA8BgYdGBkDUBkkkGZmfiXkPB0IY2Nrf3cZAkhmPB0zJeMdoH4ZAtcdIB4d\nbx4AAEAZAuoGAAB4HUh4AAAIHDYdLiUF/wAANn9/PhwIGSLHHx8lgQMlBR0D+PgZRA/4+Bkk5CXjAwcO\nHDhw4MDA4HA4HA4HAwEDBw8fP3//HRgADyUBgMDg8Pj8/v8dRB1M8CUBJeL/HZolBh3GHZQcHHd3CBwd\nRxkDeBkGFR0D//8diDx+fn48GQUu///AJQUdhxkjEx0gGQVEJQIZA8AdCHhgeGB+GQL4GDwZIjoZA0l+\nGSIwGDB+MBlDFwx+DCXjPH4dkAA8Bj4ZIshgGUJYfB1IYGBgPBkiyD5mHVAAPGZ+HUgOGD4ZBJ8dTwZ8\nHehmAAAYADgYGB1oGSP6PB0QbBkj+B0OHZAAZn9/axkich1nHRAZI+kdUBkm+RkDSAYdSBlDWAAZY3EA\nABliPxgOHXglARkCgBkl+ABja38+Nh1IPBgZY2kdVwwZQqEZZDgZAtAYPBljzyUCAH54fG5mBgAIGDh4\nOBgIABAYHB4cGBAAbAACSKkgLA7o0A1FAI0O6KUlgmwQAjAPqYAZCQkMAnAPqUAZCQkIAmodLfAZCi0S\nAmokAPASGQ5EFAKpARkODBYCKhkOCxgZEAsaAopIur0BASkQ0ANsDgJoqmhA////aKgdQUiKSJhI5gLQ\nCOYBpQQwAuYEpQPQ5aUFjQLUpQaNA9SlB40A1KAAJAQQAqQBogiYVQidEsDKEPeiB70A6JURyhD4jQvo\nbAQC////GQJBrQnoSikPqr0T/WwKAv8LAAoOCQgHDQYFBAwDAgEsD9SND9QQA2wGAmwCAnjYov+arf2/\nyf/QA2z+v6IAqQCVAJ0AwJ0A1J0A6OjQ8qn4jQnUogu9lf6dAAIZAmtPvc39nQAQHUMTvei/nVAdQ6kQ\nhQypD4UNqQCFDiVhDyVhEKkEjRvAogq9wh0nIB1cIoUHqcCNDtQdFQWpIIUGqQKND+ipwIUZIhapeMUC\n0Pxs/r9wcHBCABCCB0HC/SFsdGlycmEAFRIQEAAyLy0AK2VybmVsGWpyJQMub3cAcGxheWluZxoZDxUZ\na58lHiUcJQkD/Lj8svyh/gL9svxI5gzQBBkiJhkj9SUfJR8lHiUBI/0x/QD8`;\n\n\n/// WASM Atari8 platform\nclass Atari8WASMPlatform extends Base6502MachinePlatform<Atari8_WASMMachine> implements Platform {\n\n newMachine() { return new Atari8_WASMMachine('atari8'); }\n getPresets() { return Atari800_PRESETS; }\n getDefaultExtension() { return \".c\"; };\n getToolForFilename = getToolForFilename_Atari8;\n readAddress(a) { return this.machine.readConst(a); }\n getMemoryMap() { return Atari800_MemoryMap; }\n showHelp() {\n // TODO\n }\n getROMExtension(rom:Uint8Array) { \n // TODO\n if (rom && rom[0] == 0x01 && rom[1] == 0x08) return \".prg\";\n else return \".bin\";\n }\n}\n\nclass Atari800WASMPlatform extends Atari8WASMPlatform {\n \n}\n\n///\n\nPLATFORMS['atari8-800xl.mame'] = Atari800MAMEPlatform\nPLATFORMS['atari8-5200.mame'] = Atari5200MAMEPlatform\nPLATFORMS['atari8-800xl'] = Atari800WASMPlatform\n"],
"mappings": "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",
"names": []
}