diff --git a/python_scripts/loop_test.py b/python_scripts/loop_test.py index bcd42ac4..0db80867 100644 --- a/python_scripts/loop_test.py +++ b/python_scripts/loop_test.py @@ -1,5 +1,5 @@ import emu while True: - print("PY: Frame") + print(f"PY: Frame {emu.framecount()}") emu.frameadvance() diff --git a/src/python-engine.cpp b/src/python-engine.cpp index 3307b25b..730c8057 100644 --- a/src/python-engine.cpp +++ b/src/python-engine.cpp @@ -3,13 +3,14 @@ #include #include #include -#include #include namespace py = pybind11; #include "fceupython.h" +#include "movie.h" + // Are we running any code right now? static char* pythonScriptName = NULL; bool pythonRunning = false; @@ -24,11 +25,6 @@ std::mutex mtx; std::condition_variable cv; -typedef struct pythonL_Reg { - const char* name; - void (*func)(); -} pythonL_Reg; - static void emu_frameadvance() { // Can't call if a frameAdvance is already waiting @@ -46,15 +42,15 @@ static void emu_frameadvance() cv.wait(lock, [] { return bool(inFrameBoundry); }); } -static const struct pythonL_Reg emulib [] = { - {"frameadvance", &emu_frameadvance} -}; +static int emu_framecount() +{ + return FCEUMOV_GetFrame(); +} PYBIND11_EMBEDDED_MODULE(emu, m) { - for (pythonL_Reg libReg : emulib) { - m.def(libReg.name, libReg.func); - } + m.def("frameadvance", emu_frameadvance); + m.def("framecount", emu_framecount); } void FCEU_PythonFrameBoundary()