From 7eed32b345de27e32aa838034dce96a8b5dcfb6f Mon Sep 17 00:00:00 2001 From: MarkMcCaskey Date: Wed, 21 Mar 2018 20:21:38 -0700 Subject: [PATCH] rm old todo.org; update README for 0.1.1 --- README.md | 56 ++++++++++++++++++++------- src/todo.org | 106 --------------------------------------------------- 2 files changed, 43 insertions(+), 119 deletions(-) delete mode 100644 src/todo.org diff --git a/README.md b/README.md index 756686b..3184c43 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,63 @@ # rusty-boy [![Build Status](https://travis-ci.org/MarkMcCaskey/rusty-boy.svg?branch=master)](https://travis-ci.org/MarkMcCaskey/rusty-boy) -A Gameboy emulator and related tools in Rust (with possible rendering also in C). +A Gameboy emulator and related tools in Rust -Making this live on twitch.tv/maoeurk +It's currently in a very unstable state. +Made live on twitch.tv/maoeurk +(Unfortunately I'm not currently streaming, but I'd like to resume in the near future) -*Note*: This is under active development and is currently not in the -most usable state. +## WARNING -Feel free to submit issues and pull requests. +V0.1.1 introduces a lot of instability and has many regressions + +Don't expect it to work outside of a development context at this stage. + +Contributions welcome! ## About Project done for fun and learning about Rust and project management. -This project includes a simple assembler, disassembler, -interpretation-based emulator, an ncurses debugger, and a suite of -memory visualizations. - Memory visualization inspired by [ICU64 / Frodo Redpill v0.1](https://icu64.blogspot.com/2009/09/first-public-release-of-icu64frodo.html) -Prerelease image of memory visualization of Tetris. +V0.1.0: image of memory visualization of Tetris. ![tetris v0.1.0](images/tetris.0.1.0.png) -Game, _Popup_, running with the ncurses debugger. +V0.1.0: Game, _Popup_, running with the ncurses debugger. ![popup debugger v0.1.0](images/popup-debugger.0.1.0.png) +## State of the project + +Things came up and I stopped developing this and streaming. The primary reason being that the change from 0.1.0 to 0.2.0 was too large and became unmanageable. + +Current goals: + +- [ ] Reduce scope of project + +- [ ] Rewrite rendering and visualization to be GPU based (Vulkan or OpenGL) + +- [ ] Finish rendering (sprite flipping, textboxes) + +- [ ] Rewrite sound (properly and with visualizations) + +- [ ] Refactor CPU, memory management, and IO (basically the entire project) + +- [ ] Optimize CPU execution (high level JIT? no machine code generation, just recompiled to a more performant bytecode) if it's a performance bottleneck + +- [ ] Fix usability bugs (rebindable keys, some kind of more complete controller support) + +- [ ] Fix regressions introduced in 0.1.1 (Tetris crashes now ;_;) + + +Non goals: + +- Fancy compilers, assemblers, and debug/dev tools (I'll add support for these in a decoupled way if I actually finish the tasks above) + +- Full support for extra features (like the camera) += Be a better product than existing emulators (I'm sure there are much nicer emulators for playing games. Usability is not a primary goal at this time) ## Building @@ -58,7 +88,7 @@ To run with the TUI debugger, run: cargo run --release --features=debugger -- /path/to/rom -d ``` -To run with the assembler and debugger, run: +To run with the debugger, run: ``` -cargo run --release --features="debugger asm" -- /path/to/rom -d +cargo run --release --features="debugger" -- /path/to/rom -d ``` diff --git a/src/todo.org b/src/todo.org deleted file mode 100644 index 7c71038..0000000 --- a/src/todo.org +++ /dev/null @@ -1,106 +0,0 @@ -customize zone (m-x find-variable zone-programs) Kappa - -* TODO CPU[100%] -** DONE Dispatch -*** DONE Prefixed -*** DONE Unprefixed -*** KNOWNCAUSE DMA - Currently it's 'instanteous', should take 140ns or whatever the - doc says it should -** DONE Interrupts -*** DONE Throw -*** DONE Handle -** DONE Opcodes[100%] - (Note review serial IO) -*** DONE Loads -*** DONE Refactor opcodes -**** DONE Flag setting -*** DONE Add timing -*** DONE ALU -**** DONE 8bit -**** DONE 16bit -*** DONE Control flow -** DONE Tests! -*** DONE opcodes -** DONE Split CPU into multiple files -** DONE Special Registers!![100%] -*** DONE Sound -*** DONE Video -*** DONE Timer -* TODO Graphics[0%] -** TODO Gameboy screen itself[66%] -*** DONE Window -*** DONE Interrupts on pixel draw -*** DONE Vblank and cpu interrupt -*** DONE Background -*** TODO Window -*** TODO Sprites -** TODO Memory visualization[33%] -*** DONE Draw memory in real time -*** TODO Query memory[25%] -**** DONE Print opcode -**** TODO Adjustable window -**** TODO Zooming -**** TODO In line information -* TODO Input[0%] -** TODO Controller input[33%] -*** DONE SNES -**** DONE Buttons -**** DONE Dpad -*** TODO General handling -*** TODO Remapping -** TODO Keyboard -*** DONE General handling -*** TODO Remapping -* TODO Tools[33%] -** TODO Assembler[80%] -*** DONE Instruction translation -*** CANCELED Pseudo-instructions? -*** CANCELED Automate or use default values to make it easier -*** TODO Address resolution -*** CANCELED Name substitution -** DONE Disassembler[100%] -*** DONE Generate text -*** DONE Resolve relative jumps -*** CANCELED Needs to trace through program - - Debugger cannot statically decompile file because of variable - byte-length and the fact that ROMs store all data together, even - non-instructions with no distinction - -** TODO Debugger[55%] -*** DONE Graphics -**** DONE Watch instructions execute, monitor registers -**** DONE Colorize output for easier reading -*** CANCELED Persistence -**** CANCELED Time travel (unexecute instructions) -*** DONE Arithmetic -**** DONE Numbers -*** TODO Bindable names -*** DONE Breakpoint -*** DONE Watchpoints -*** TODO Print registers -*** TODO Query -**** TODO Patterns - Certain structures such as functions or loops can be treated - differently and at a higher level -**** TODO Values - Search memory (possibly through time if persistence is done) to - report information about the manner in which the ROM is executing -* DONE Improve code quality[100%] -** DONE Fix all warnings -** DONE Type annotate literals -** DONE abstract logic in main - -* TODO Refactor -** TODO CPU -*** TODO Cartridge -**** TODO Memory visualization -**** TODO Special registers -**** TODO Normal registers -** TODO IO -*** TODO Sound -*** TODO Drawing -**** TODO optimize! -**** TODO Sprite flipping -*** TODO Related tools