void khalt() { dump_framebuffer(fake_framebuffer); exit(0); }
static bool maybe_handle_command(uint8 command, uint32 option, voot_packet *packet) { switch(command) { case VOOT_COMMAND_TYPE_DEBUG: { static char key[] = "vrcust.bin"; voot_debug("Module: '%s'", (const char *) VOOT_MODULE_NAME); grep_memory(key, sizeof(key)); break; } case VOOT_COMMAND_TYPE_TIME: voot_debug("%u", time()); break; case VOOT_COMMAND_TYPE_VERSION: { uint32 freesize, max_freesize; malloc_stat(&freesize, &max_freesize); voot_debug("Netplay VOOT Extensions, BETA [%u/%u]", freesize, max_freesize); break; } case VOOT_COMMAND_TYPE_DUMPON: { dump_start(option); voot_debug("Processed DUMPON command. (%x)", option); break; } case VOOT_COMMAND_TYPE_DUMPOFF: { uint32 bytes; bytes = dump_stop(); voot_debug("Processed DUMPOFF command. (%u)", bytes); break; } /* TODO: After taking a certain number of screenshots, it appears to crash the system. Maybe the dump_framebuffer() call should be moved into the heartbeat logic and some simple IPC be implemented? */ case VOOT_COMMAND_TYPE_SCREEN: dump_framebuffer(); break; case VOOT_COMMAND_TYPE_DUMPMEM: voot_dump_buffer((const uint8 *) SYS_MEM_START, SYS_MEM_END - SYS_MEM_START); break; case VOOT_COMMAND_TYPE_DUMPGAME: voot_dump_buffer((const uint8 *) VOOT_MEM_START, VOOT_MEM_END - VOOT_MEM_START); break; case VOOT_COMMAND_TYPE_DUMPSELECT: voot_dump_buffer((const uint8 *) option, 1024); break; default: break; } return FALSE; }