1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-06-25 15:29:34 +00:00
8bitworkshop/gen/atari8-XLWNQC6T.js.map

8 lines
93 KiB
Plaintext
Raw Normal View History

{
"version": 3,
"sources": ["../src/machine/chips/antic.ts", "../src/machine/chips/gtia.ts", "../src/machine/chips/pokey.ts", "../src/machine/atari8.ts", "../src/platform/atari8.ts"],
"sourcesContent": ["import { dumpRAM } from \"../../common/emu\";\nimport { hex, lpad, safe_extend } from \"../../common/util\";\n\n// ANTIC\n// https://www.atarimax.com/jindroush.atari.org/atanttim.html\n// http://www.virtualdub.org/blog/pivot/entry.php?id=243\n// http://www.beipmu.com/Antic_Timings.txt\n// https://user.xmission.com/~trevin/atari/antic_regs.html\n// https://user.xmission.com/~trevin/atari/antic_insns.html\n// http://www.atarimuseum.com/videogames/consoles/5200/conv_to_5200.html\n// https://www.virtualdub.org/downloads/Altirra%20Hardware%20Reference%20Manual.pdf\n\nconst PF_LEFT = [0, 25, 17, 9];\nconst PF_RIGHT = [0, 25 + 64, 17 + 80, 9 + 96];\n\nconst DMACTL = 0;\nconst CHACTL = 1;\nconst DLISTL = 2;\nconst DLISTH = 3;\nconst HSCROL = 4;\nconst VSCROL = 5;\nconst PMBASE = 7;\nconst CHBASE = 9;\nconst WSYNC = 10;\nconst VCOUNT = 11;\nconst PENH = 12;\nconst PENV = 13;\nconst NMIEN = 14;\nconst NMIRES = 15;\nconst NMIST = 15;\n\nconst PFNONE = 0;\nconst PFNARROW = 1;\nconst PFNORMAL = 2;\nconst PFWIDE = 3;\n\nconst NMIST_CYCLE = 12;\nconst NMI_CYCLE = 24;\nconst WSYNC_CYCLE = 212;\n\nconst ANTIC_LEFT = 17 - 4; // gtia 34, 4 cycle delay\nconst ANTIC_RIGHT = 110 - 4; // gtia 221, 4 cycle delay\nconst LAST_DMA_H = 105; // last DMA cycle\n\nexport const MODE_LINES = [0, 0, 8, 10, 8, 16, 8, 16, 8, 4, 4, 2, 1, 2, 1, 1];\n// how many bits before DMA clock repeats?\nconst MODE_PERIOD = [0, 0, 2, 2, 2, 2, 4, 4, 8, 4, 4, 4, 4, 2, 2, 2];\nconst MODE_YPERIOD = [0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 2, 1, 0, 0, 0, 0];\n//const MODE_BPP = [0, 0, 1, 1, 2, 2, 1, 1, 2, 1, 2, 1, 1, 2, 2, 1];\n// how many color clocks / pixel * 2\nexport const MODE_SHIFT = [0, 0, 1, 1, 2, 2, 2, 2, 8, 4, 4, 2, 2, 2, 2, 1];\n\nexport class ANTIC {\n read: (address: number) => number;\t// bus read function\n nmi: () => void; // generate NMI\n\n regs = new Uint8Array(0x10);\t\t\t\t// registers\n\n left: number;\n right: number;\t\t\t\t\t// left/right clocks for mode\n\n dma_enabled: boolean = false;\n dliop: number = 0; // dli operation\n mode: number = 0;\t\t\t// current mode\n jmp = false; // TODO\n lms = false; // TODO\n dlarg_lo: number = 0;\n dlarg_hi: number = 0;\n period: number = 0;\t\t// current mode period bitmask\n scanaddr: number = 0; // Scan Address (via LMS)\n startaddr: number = 0;\t// Start of line Address\n pfbyte: number = 0;\t\t// playfield byte fetched\n ch: number = 0;\t\t\t\t// char read\n linesleft: number = 0; // # of lines left in mode\n yofs: number = 0;\t\t\t// yofs fine\n isfirstline: boolean = false;\n v: number = 0;\t\t\t\t\t// vertical scanline #\n h: number = 0;\t\t\t\t\t// horizontal color clock\n\n linebuf = new Uint8Array(48);\n dmaclock: number = 0;\n dmaidx: number = 0;\n output: number = 0;\n dramrefresh = false;\n in_vscroll = 0;\n\n constructor(readfn, nmifn) {\n this.read = readfn; // bus read function\n this.nmi = nmifn; // NMI function\n }\n reset() {\n this.regs.fill(0);\n this.regs[NMIEN] = 0x00;\n this.regs[NMIST] = 0x7f;\n this.regs[PENH] = 0x00;\n this.regs[PENV] = 0xff;\n this.setReg(DMACTL, 0x0);\n this.h = this.v = 0;\n this.startaddr = this.scanaddr = 0;\n this.dmaclock = 0;\n }\n saveState() {\n return safe_extend(0, {}, this);\n }\n loadState(s) {\n safe_extend(0, this, s);\n this.setReg(DMACTL, s.regs[DMACTL]);\n }\n static stateToLongString(state): string {\n let s = \"\";\n s += \"H: \" + lpad(state.h, 3) + \" V: \" + lpad(state.v, 3) + \"\\n\";\n s += \"DLIOp: \" + hex(state.dliop, 2) + \" Lines: \" + state.yofs + \"/\" + state.linesleft;\n s += \" DMA \" + (state.dma_enabled ? \"ON \" : \"off\")\n if (state.dma_enabled) s += \" idx \" + state.dmaidx + \" clk \" + hex(state.dmaclock) \n s += \"\\n\"\n s += \"Addr: \" + hex(state.scanaddr, 4) + \"\\n\";\n s += dumpRAM(state.regs, 0, 16).replace('$00', 'Regs');\n retu
"mappings": "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
"names": []
}