TODO: - NaN in cycle count for macros - debugging of scan line overflow - confuse code/data in listing - show memory locations hovering over lines - don't check against ROM signatures - support 6502 test cases - DASM: macro forward refs - asm: support macro expansion - support narrow screens - multiple breakpoints, expression breakpoints - watchpoints - debug inspector for variables - MAME single step (?) - step over (line, instruction) - slowdown beam for all platforms? - PC x86 support - https://bellard.org/tcc/ - show errors in list (maybe window list?) - click to go to error - what if error in include file you can't edit b/c it never appears? - online help - show self-modifying code insns left of editor - facade/kbd shortcuts for emulators, focus - update Javatari version? (and others?) - unify versioning - disassembler for uploaded ROMs - sound mute? - $error updates source editor - online tools for music etc - text log debugging script - intro/help text for each platform - vscode/atom extension? - click to break on raster position - restructure src/ folders - debug bankswitching for funky formats - spaces in filename don't parse code listing (DASM, maybe more) - 'undefined' for bitmap replacer - requestInterrupt needs to be disabled after breakpoint? - C/asm formatter - fix WebAudio (https://news.ycombinator.com/item?id=18066474) - allow download of JSASM output - update bootstrap to 4.0 - batariBasic: proper line numbers, debugging - granular control over time scrubbing, show CPU state - compiler flags for final ROM build - workermain: split build functions, better msg types - builds: - what if >1 file with same name? (local/nonlocal/directory) - what if .c and .s names collide? - maybe put stuff in examples/ dir? - error msg when #link doesn't work - warning when ROM too big - sdcc: - can't link asm files before c files (e.g. acheader.s must be last) - figure out area names ordering - debug inline asm - live coding URL - resize memory browser when vertical div resize - preroll the emulator so optimizer does its thing before loading rom - wasm dynamic linking of emulators (https://github.com/WebAssembly/tool-conventions/blob/master/DynamicLinking.md) - https://github.com/jvilk/BrowserFS - markdown, verilog: can't share - https://www.crowdsupply.com/tinyfpga/tinyfpga-bx - stego shareable images (http://pico-8.wikia.com/wiki/P8PNGFileFormat) - https://makecode.com/language? - open ROM from URL? - game starts even if switched away before first load - it's pretty easy to add a new file named like a library file (bcd.c) - or have neslib.h in a subdirectory... - put globals into view/controller objects - upload binary files doesn't do what's expected, changing pulldown and whatnot - chrome autostart audio: https://github.com/processing/p5.js-sound/issues/249 - firefox autostart audio: https://support.mozilla.org/en-US/kb/block-autoplay - show player controls for each platform, allow touch support - better undo/diff for mistakes? - ide bug/feature visualizer for sponsors - global undo/redo at checkpoints (when rom changes) - landscape mode for arcade ports - symmetric load/save state types - pixel editor - persist palette/tilemap selections - more tools for editing - map editor - arbitrary nametable editing - metasprites - throw errors when bad/no refs - per-View keyboard shortcuts - parse labels - parse .incbin directives? - can't replace in hex directives - should maybe use same single-canvas editor for map + char editor - undo doesn't refresh editor - editing sometimes messes up cursor movement (CURBS) - crt0.s compiled each time? - debug highlight doesn't go away when debugging -> running - show breakpoint of PC or highest address on stack - can we highlight line instead of select? - profiler - profiler restarts emulator when paused - running profiler while replaying? grand unified replay? - click on profiler to step to position - breakpoints stop profiler from running - single-screen profiler - hide labels that aren't available, like BIOS addrs - show interrupts, other events - sometimes interleaves two different PCs? like two profilers running simultaneously? - ah, symbols persist across builds - https://remotestoragejs.readthedocs.io/en/latest/getting-started/how-to-add.html ? - Verilog - larger scope range, better scrolling - make scope data wrap around range - remove FPS and play controls when Verilog scope paused - when paused scope doesn't work - Safari: scope doesn't show while CRT in use (sometimes Firefox too) - verilog debugging/reloading makes it slow - why loadState() on verilog kill perf? - quantify verilog "graph iterations" - toolbar overlaps scope - CPU debugging - use $readmem for inline asm programs? - can't add control instructions b/c of split - single-stepping vector games makes screen fade - break on stack overflow, illegal op, bad access, BRK, etc - nes - replay doesn't work for nes (force background tile redraw) - nes debug view toolbar - support NES_HEADER_16K? - PPU/TIA register write visualization - NES crt should mark raster pos when debugging - vcs - need Chapter 8 example? - vcs sound continues when paused - vcs: INPTx needs to be added to control state - vcs: break on # of lines changed (maybe using getRasterPosition?) - chrome looks blurry on vcs - VCS asm library - VCS skips step on lsr/lsr after run to line - better VCS single stepping, maybe also listings - upload multiple files/zip file to subdirectory - allow "include graphics.asm" instead of "include project/graphics.asm" - convert more stuff to Promises - target ES6 - don't have to include bootstrap-tourist each time? - don't have to include firebase always? - squelch error msgs? - test offline? (if window.firebase) - Github - gh-pages branch with embedded - handle overwrite logic - what to do about included files? - can published files retain path? - what if import interrupted and partial files? - CORS for some blobs? - don't import useless files - support projects with subdirectories, file list? - emulator needs reset shortcut for nes - switching platform of a repo? - make sure to flatten subdirs - astrocade - ctrl+alt+l on ubuntu locks screen - cookie - list of stuff for policy - popup - convert binary to hex stmts WEB WORKER FORMAT {code,platform,tool,dependencies} {preload} new: {updates,buildsteps} [{filepath,platform,tool}] implicit rules - push/shift build steps - preprocessor, compile, assemble, link - access to intermediate files only build files that have changed build options BUILD PROJECT local/foo.project/*.* build all files in project send update for dependencies at startup (single file version) should be able to change file w/o reloading (Not platform tho) pulldown selects file in project, or goes back to parent gotta preserve editor windows for each one - window list make source/disasm window visible when debugging gutter info/errors in all files UI REFACTOR editor debugger disasm view memory profile errors separate into files window methods: - set - mode - get - changes - cursorActivity (inspect) - gutters (setCompileOutput) - current line / gutter marker (setCurrentLine / clearCurrentLine) - source map - global symbols - pixel editor / find comment (openBitmapEditorAtCursor) - update debug window (200 ms) - inspect variable file store mirrors that on worker worker result: { output: sources:{ :{lines, asmlines, listing} } } add file to errors http://www.playvectrex.com/designit/chrissalo/vectordisplay.htm http://oldies.malban.de/secondvectrex/index.htm PIXEL EDITOR everything is an editor back/forward propogation encoded <-> raw + spec + palette(s) <-> full tilemap <-> selected tile/sprite/metasprite need references panes: source code, metadata tree, graphics panes decoded info: - CHR tiles - palettes - maps/rooms - metasprites - metatiles - sprite data (williams etc) store in intermediate single file or embed in C/ASM? we'd then have to generate C/ASM probably automatically intermediate file could still be edited switch between hex/graphic editor? (palettes should edit via hex) final display types: number, color, sprite, etc CHR editor has palette selector, obj selector individual objects in single file or multiple files? RLE compression Types - byte - RGBA color - structured object - metasprite - metatile - level actor - bitmap - array of stuff, array can have a shape (width,height) like numpy Mappers can refer to multiple objs Slice (window) of array for selections AssetEditorView - scan files for assets - build hierarchical view of assets - expand/collapse - create editor upon expansion - double-click to source file Assets come from: - chr files - bitmap data in files - structured data (palette, sprites, metasprites, levels, etc) - think about new comment format, platform-specific types Github Support Import Export Login Pull Push Git metadata kept in local storage Converting from NESASM to DASM - subroutine keyword on labels - [zp],y to (zp),y - asl a -> asl - LOW(x) and HIGH(x) to <() and >() - .db to .byte, .dw to .word - use NES_HEADER macros - no .bank