This is pretty rough- the video, keyboard, and build system code all needs a lot of work. But, it runs! Yay!
This will replace the 'sbt86' directory pretty soon. The binary translator itself has been updated to support ARM's memory 
alignment requirements. For all I/O, SDL has been replaced by libnds. Sound still isn't ported over.
Add a fairly optimized software scaler which converts from CGA 320x192 to 16bpp 256x192 in one step.
Cleanups for the lab and game translation scripts, to support the new build system.
Shiny new build system! It builds both ARM7 and ARM9 binaries (We'll need ARM7 for sound), and it is 
now fairly painless to do a pristine build from original Robot Odyssey binaries- just dump a zip file 
from your favorite abandonware site in the 'original' directory, and the build system will SHA1 
everything and pull out the files it needs.
Minor cleanups: Add 'R' to keymap, replace printf with iprintf
Convert all non-SBT sources to C++. Started work on the sound engine. Moved video scaling code to ITCM/DTCM memory, to improve performance.
Remove old ARM7 stub.
Sound emulation works on the DS!
Double-buffered video. Also, instead of using BG3 Mode 5, use Mode 6 to assign VRAM directly to the LCD controller. This is simpler, and might be 
more power-efficient.
Add a TODO list.
Big code reorganization/cleanup. Ported SBT86 to C++, laid the groundwork for supporting multiple emulated processes.
Demo of multiple copies of Robot Odyssey running concurrently, rendering alternate frames.
Lots more cleanup. Split off hardware emulation backends into an abstract base class, a basic DOS/BIOS emulation class, then finally a class which is specific to running the main instance of the game. The current demo runs two instances of the game at once, and lets you switch between interacting with the two.
Some early experimentation with an SBTHardware implementation which renders via the sub engine.
First working dual-screen rendering. Gameplay on top, inside Scanner on the bottom.
Add an ROData class, for manipulating the game's in-memory data. Nearly the whole world file is decoded, and there are accessor 
functions for manipulating the object room linked lists safely. The main program is now a mostly-working proof of concept for the live 
robot icons on the secondary screen.
NDS file icon
More progress toward live robot icons: SBT86 support for identifying data addresses, added per-robot data class.
The sub-screen process suffered from several bugs related to having two game engines poking at the same world data. This patch solves those problems by adding a new SBT86 script to generate a 'renderer' process, which is a stripped down version of GAME.EXE that can only draw, not modify, the world.
More reverse engineering & infrastructure for properly copying robot data to the renderer process.
Sub-screen robot icons now working pretty robustly, with full support for grabbers.

 --This line, and those below, will be ignored--

M    robot-odyssey-ds/source/main.cpp
M    robot-odyssey-ds/source/roData.cpp
M    robot-odyssey-ds/include/roData.h
M    robot-odyssey-ds/include/sbtHardwareCommon.h
M    robot-odyssey-ds/include/sbt86.h
M    robot-odyssey-ds/TODO
M    robot-odyssey-ds/scripts/bt_renderer.py
M    robot-odyssey-ds/scripts/bt_common.py
M    robot-odyssey-ds/notes/robot_odyssey_tutorial.idb