From bf584674ab47becf8af288fb500ef3eb7c7ddd7e Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Wed, 29 Aug 2018 13:43:46 -0400 Subject: [PATCH] fixed tests, printFlags, debug info --- doc/notes.txt | 3 ++- src/baseplatform.ts | 14 +++----------- src/platform/astrocade.ts | 15 ++++++++++++++- src/platform/nes.ts | 6 ++---- src/util.ts | 12 ++++++++++++ test/cli/testworker.js | 6 +++--- 6 files changed, 36 insertions(+), 20 deletions(-) diff --git a/doc/notes.txt b/doc/notes.txt index fbf0caa0..384518a6 100644 --- a/doc/notes.txt +++ b/doc/notes.txt @@ -62,7 +62,8 @@ TODO: - figure out folders for projects for real - verilog download rom - why loadState() on verilog kill perf? - +- click to break on raster position +- restructure folders WEB WORKER FORMAT diff --git a/src/baseplatform.ts b/src/baseplatform.ts index e3eabb7b..3093ee85 100644 --- a/src/baseplatform.ts +++ b/src/baseplatform.ts @@ -1,6 +1,6 @@ import { RAM, RasterVideo, dumpRAM, lookupSymbol } from "./emu"; -import { hex } from "./util"; +import { hex, printFlags } from "./util"; import { CodeAnalyzer } from "./analysis"; import { disassemble6502 } from "./cpu/disasm6502"; import { disassembleZ80 } from "./cpu/disasmz80"; @@ -362,11 +362,7 @@ export function getOpcodeMetadata_6502(opcode, address) { export function cpuStateToLongString_Z80(c) { function decodeFlags(flags) { - var flagspec = "SZ-H-VNC"; - var s = ""; - for (var i=0; i<8; i++) - s += (flags & (128>>i)) ? flagspec.slice(i,i+1) : "-"; - return s; // TODO + return printFlags(flags, ["S","Z",,"H",,"V","N","C"], true); } return "PC " + hex(c.PC,4) + " " + decodeFlags(c.AF) + "\n" + "SP " + hex(c.SP,4) + " IR " + hex(c.IR,4) + "\n" @@ -553,11 +549,7 @@ export function getToolForFilename_z80(fn) { export function cpuStateToLongString_6809(c) { function decodeFlags(flags) { - var flagspec = "EFHINZVC"; - var s = ""; - for (var i=0; i<8; i++) - s += (flags & (128>>i)) ? flagspec.slice(i,i+1) : "-"; - return s; // TODO + return printFlags(flags, ["E","F","H","I", "N","Z","V","C"], true); } return "PC " + hex(c.PC,4) + " " + decodeFlags(c.CC) + "\n" + "SP " + hex(c.SP,4) + "\n" diff --git a/src/platform/astrocade.ts b/src/platform/astrocade.ts index e8d54b4e..ba9b4906 100644 --- a/src/platform/astrocade.ts +++ b/src/platform/astrocade.ts @@ -11,7 +11,7 @@ const ASTROCADE_PRESETS = [ {id:'03-horcbpal.asm', name:'Paddle Demo'}, ]; -// TODO: fix keys, more controllers, paddles, vibrato/noise, border color, full refresh +// TODO: fix keys, more controllers, paddles, vibrato/noise, border color, full refresh, debug info const ASTROCADE_KEYCODE_MAP = makeKeycodeMap([ // player 1 @@ -79,6 +79,8 @@ const _BallyAstrocadePlatform = function(mainElement) { // default palette for (var i=0; i<8; i++) palette[i] = ASTROCADE_PALETTE[i]; + + var refreshlines = 0; function ramwrite(a:number, v:number) { ram.mem[a] = v; @@ -90,6 +92,12 @@ const _BallyAstrocadePlatform = function(mainElement) { } } + function refreshline(y:number) { + var ofs = y*swidth/4; + for (var i=0; i0) { + refreshline(sl); + refreshlines--; + } } if (!novideo) { video.updateFrame(0, 0, 0, 0, swidth, verbl+2); diff --git a/src/platform/nes.ts b/src/platform/nes.ts index 8ba93532..b51a0be9 100644 --- a/src/platform/nes.ts +++ b/src/platform/nes.ts @@ -225,14 +225,12 @@ const _JSNESPlatform = function(mainElement) { } getDebugCategories() { - return ['CPU','ZPRAM','Stack','PPU']; + return super.getDebugCategories().concat(['PPU']); } getDebugInfo(category, state) { switch (category) { - case 'CPU': return cpuStateToLongString_6502(state.c); - case 'ZPRAM': return dumpRAM(state.b, 0x0, 0x100); - case 'Stack': return dumpStackToString(this, state.b, 0x100, 0x1ff, 0x100+state.c.SP, 0x20); case 'PPU': return this.ppuStateToLongString(state.ppu, state.b); + default: return super.getDebugInfo(category, state); } } ppuStateToLongString(ppu, mem) { diff --git a/src/util.ts b/src/util.ts index 54a1f333..0bbe060c 100644 --- a/src/util.ts +++ b/src/util.ts @@ -360,3 +360,15 @@ export function safe_extend(deep, dest, src) { return dest; } +export function printFlags(val:number, names:string[], r2l:boolean) { + var s = ''; + for (var i=0; i 0) s += " "; + s += (val & (1<