#include #include #include #include #include "controller_api.h" static FILE *fout; static int counter; #define OFFSET 0x400 #define fname "rec.m64" static void tas_recorder_close(void) { fclose(fout); } static void tas_recorder_init(void) { if (fname == NULL) { fout = NULL; return; } unlink(fname); printf("[tas_recorder] writing output to %s\n", fname); fout = fopen(fname, "wb"); assert(fout != NULL); uint8_t buf[OFFSET]; memset(buf, 0, sizeof(buf)); fwrite(buf, 1, sizeof(buf), fout); atexit(tas_recorder_close); } static void tas_recorder_read(OSContPad *pad) { if (fout == NULL) { return; } uint8_t bytes[4] = {0}; int button1 = pad->button; int button2 = pad->button; bytes[0] = button1 >> 8; bytes[1] = button2 & 0x00FF; bytes[2] = pad->stick_x; bytes[3] = pad->stick_y; fwrite(bytes, 1, 4, fout); } struct ControllerAPI controller_tas_recorder = { tas_recorder_init, tas_recorder_read };