
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
- case sensisitvity looking for mismatch variables
- remove pulldown when no preset?
- can't step after reset (or when funky frame; TIA frame is out of sync)
- break on BRK/illegal opcode?
- multiple breakpoints, expression breakpoints
- watchpoints
- debug inspector for variables
- MAME single step (?)
- step over (line, instruction)
- slowdown beam for all platforms?
- PC x86 support
- show errors in list (maybe window list?)
- can't see 1st line in editor sometimes (when scrolling cursor past bottom of screen)
- 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
- compile stuck when errors unchanged
- sound mute?
- $error updates source editor
- go to error in include files
- online tools for music etc
- text log debugging script
- NES crt should mark raster pos when debugging
- intro/help text for each platform
- vscode/atom extension?
- VCS asm library
- better VCS single stepping, maybe also listings
- VCS skips step on lsr/lsr after run to line
- links to external tools in ide
- error msg when #link doesn't work
- figure out folders for projects for real
- 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
- astrocade: run to cursor in hello world messes up emulation
- 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
- error showing replay div before rom starts
- compiler flags for final ROM build
- workermain: split build functions, better msg types
- vcs: INPTx needs to be added to control state
- sdcc: can't link asm files before c files (e.g. acheader.s must be last)
- what if >1 file with same name? (local/nonlocal/directory)
- what if .c and .s names collide?
- 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)
- use alternate confirm/prompt dialogs
- https://github.com/jvilk/BrowserFS
- what if error in include file you can't edit b/c it never appears?
- markdown, verilog: can't share
- https://www.crowdsupply.com/tinyfpga/tinyfpga-bx
- HTTPS warning
- 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
- vcs: break on # of lines changed (maybe using getRasterPosition?)
- profiler restarts when paused
- 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, navigator.getGamepads
- better undo/diff for mistakes?
- ide bug/feature visualizer for sponsors
- optimization flags for sdcc (oldralloc)
- global undo/redo at checkpoints (when rom changes)
- pulldown shows wrong file if preset not present
- landscape mode for arcade ports
- pixel editor
  - persist palette/tilemap selections
  - more tools for editing
  - map editor
  - metasprites
  - throw errors when bad/no refs
  - per-View keyboard shortcuts
  - parse labels
  - parse .incbin directives?
  - can't replace in hex directives
- 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?
- replay doesn't work for nes (force background tile redraw)
- running profiler while replaying? grand unified replay?
- click on profiler to step to position
  - breakpoints stop profiler from running
- 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?
- single-stepping vector games makes screen fade
- break on stack overflow, bad op, bad access, etc
- PPU/TIA register write visualization
- nes debug view toolbar
- vcs sound continues when paused
- upload multiple files/zip file to subdirectory
  - allow "include graphics.asm" instead of "include project/graphics.asm"
- chrome looks blurry on vcs
- don't have to include bootstrap-tourist each time?
- don't have to include firebase always?
- Github
  - write/read metadata w/ main file
  - push/pull changes
  - gh-pages branch with embedded 


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:<rom>
	sources:{
		<path>:{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
