Bugs to fix: * render: figure out why fx-CG dclear() now takes 4.1 ms instead of 2.6 ms Extensions on existing code: * clock: mono support * usb: and interrupt pipes * fs: support RAM files * fs: support USB streams as generic file descriptors * fugue: support glob() to abstract away BFile entirely * fugue/fs: offer a primitive to remove recursively, which is native in Fugue * bfile: implement the optimization-restart as realized by Kbd2 * kernel: better restore to userspace before panic (ensure BL=0 IMASK=0) * project: add license file * kernel: group linker script symbols in a single header file * r61524: brightness control and clean the file * core: review forgotten globals and MPU addresses not in * core: run destructors when a task-switch results in leaving the app * fs: support read-only files backed with GetBlockAddress() on fx-CG * kernel: SH4- or G-III-specific linker scripts? * render: Properly document bopti fx. Also make it faster maybe? Future directions: * Audio playback using TSWilliamson's libsnd method * Serial communication * Make fx9860g projects work out of the box on fxcg50 * Base for Yatis' threads library Bits that need to abstract out into APIs: - display: Toggle backlight (or set level) -> Have a backlight property with min/max values @ getkey @ justui jscene - os: OS interface to access OS info, like in fxos @ usb/setup.c set_strings @ usb/classes/ff-bulk.c identify command - render: current video mode @ usb/classes/ff-bulk.c capture_vram - gray: make gray engine a subset of t6k11 which then supports two modes Video formats: - i1msb - 2i1msb - rgb565 T6K11: mode 0 : i1msb 128x64 @64 Hz mode 1 : 2i1msb 128x64 @64 Hz R61524: mode 0 : rgb565 396x224 @? Hz mode 1 : i3??? 396x224 @? Hz mode 2 : i1msb 128x64 @? Hz # <- for g1a emulation :) mode 3 : 2i1msb 128x64 @? Hz # <- for g1a emulation :) enum { /* Indexed 1-bit, 0 is white, 1 is black. Row-major, left-to-right, each row a set of 4-byte values with leftmost pixel on the MSB. */ IMAGE_FORMAT_I1MSB, /* Indexed 2-bit: white, light gray, dark gray, black. Represented as a pair of I1MSB buffers, the first being bit #0, the second bit #1. */ IMAGE_FORMAT_2I1MSB, }; fx-CP port progress. Vibe: can write simple programs, advanced features coming DONE: - load: stage-2 to VRAM backup (unused memory uses gint arena), no MMU - kernel basics: malloc, interrupts, exceptions - r61523 driver (no DMA), rendering (no DMA), keyboard driver, timer driver IN-PROGRESS: - unification of the image/video interface - porting the GUIs in gintctl, many of which are hardcoded for 396x224 - figure out why the DMA doesn't work (should make dclear/dupdate faster) MEDIUM TERM: - touch driver, cpg driver (w/ potential overclock, given settings), rtc driver - benchmark memory and display performance - (details: hardware info, quit handler, poweroff) LONGER TERM: - port azur's rendering pipeline (might work out of the box) - port libraries - filesystem, remote debugging, usb, (serial once added)