Version V15 is up on my site. Nothing revolutionary (this time), but game players will appreciate the rearranged menu that allows four repeated presses of CD / SELECTMODE to start up BreakOut.
However, in the source code, I've dumped some comments describing my proposal for tying in userland applications to the menu. Here's what it says:
+// Near-future plans: Implement a new virtual device (or piggyback existing)
+// for a userland app to open/mmap/ioctl to/from for userland menus, apps,
+// etc.. to be able to use the hijack capability to run while player is running.
+// We hijack the screen, and MOST buttons, leaving just a few buttons under
+// control of the player itself (most likely just the four on the front panel).
+//
+// Basic userland interface would be like this:
+// vdev = open("/dev/hijack") // access the hijack virtual device
+// mmap(vdev,displaybuf,2048) // get ptr to kernel's displaybuf
+// fork(); // create an extra thread
+// ioctl(vdev, HIJACK_WAIT_MENU, "GPS") // thread1: create a menu entry,
+// // and wait for it to be selected
+// top:
+// ioctl(vdev, HIJACK_WAIT_MENU, "TETRIS") // thread2: another menu entry
+// ...
+// ## user selected "TETRIS" menu item
+// ## kernel unblocks thread2 only.
+// ## thread2 now has *exclusive* control of screen and (most) buttons
+// ...
+// while (playing_tetris) { // thread2
+// ioctl(vdev, HIJACK_IR_POLL) // thread2: poll for input from IR buttons
+// write stuff to displaybuf // thread2
+// ioctl(vdev, HIJACK_UPDATE_DISPLAY) // thread2: force another screen update
+// }
+// ...
+// ioctl(vdev, HIJACK_UPDATE_DISPLAY) // thread2: force another screen update
+// goto top; // thread2
+// ...
+// ioctl(vdev, HIJACK_REMOVE_MENU, "TETRIS") // optional
+// close("/dev/hijack") // optional
+//
+// Well, that's the idea, anyway.
+// So if you want to port/develop an application for this,
+// then at least you've now got the basic structure to build around.
+// I hope to implement this (smaller than it looks) by early Nov/2001.
Edited by mlord on 23/10/01 10:13 PM.