Bitmap – Somewhat unsure on how to progress on this
Stream – This is back, but this time here's the idea– java.io based streams are badly implemented– Sequential Transducer Maps, and Tapes as abstraction classes will take the guesswork out of writing nested stream processors. Will heavily rely on the flow package.
OpenGL ES 2.0 based – Definitely on the list– this is the best choice for 3D; but would abstracting it better be the way to progress, or is it better to implement it as is? How do we handle different backends (software, opengl, directx, ps2, gba, ds) properly? And do we cater to non OpenGL 2.0 compliant folk somehow? Also, we can definitely implement uniform shaders (non standard), and on some platforms (ps2 for instance) we lack fragment shaders (and some other HW), but have geometry shaders (non standard), so what's the interface?
EGL based – The pain in the ass that OpenGL ES depends on; where does it fit?
Windowing – So the big question here is, which order– windowing then 3d? 3d then windowing? Can't really progress on this without a solid gameplan– a lesson learned from KempoAPI. Should support both for(;;){idle();} type processing as well as event-based.
Input – argh. Not even sure how to begin on PC… DirectInput?
Sound – argh. Two interfaces – raw sound(for emulation and other purposes), and native sound playing.
FMV – Probably not so rough, this has to be high level, and video files will more than likely be platform-specific.
CPU (or Sim) – Everything is kind of building up to CPU emulation. Once there are some fundamental components(graphics and windowing) working, work on this can start. Will make heavy use of MoreTypes as well as Stream (possibly.) Graphics interfaces will be shader based (cool cool), but platform-specific.