#pragma once #include "stdafx.h" struct lua_State; class ScriptingContext; class Debugger; class Console; class MemoryDumper; struct ApuSquareState; struct ApuEnvelopeState; struct ApuLengthCounterState; class LuaApi { public: static void SetContext(ScriptingContext *context); static int GetLibrary(lua_State *lua); static int GetLabelAddress(lua_State *lua); static int ReadMemory(lua_State *lua); static int WriteMemory(lua_State *lua); static int ReadMemoryWord(lua_State *lua); static int WriteMemoryWord(lua_State *lua); static int GetPrgRomOffset(lua_State *lua); static int GetChrRomOffset(lua_State *lua); static int RevertPrgChrChanges(lua_State *lua); static int RegisterMemoryCallback(lua_State *lua); static int UnregisterMemoryCallback(lua_State *lua); static int RegisterEventCallback(lua_State *lua); static int UnregisterEventCallback(lua_State *lua); static int DrawString(lua_State *lua); static int DrawLine(lua_State *lua); static int DrawPixel(lua_State *lua); static int DrawRectangle(lua_State *lua); static int ClearScreen(lua_State *lua); static int GetScreenBuffer(lua_State *lua); static int SetScreenBuffer(lua_State *lua); static int GetPixel(lua_State *lua); static int GetMouseState(lua_State *lua); static int Log(lua_State *lua); static int DisplayMessage(lua_State *lua); static int Reset(lua_State *lua); static int Stop(lua_State *lua); static int Break(lua_State *lua); static int Resume(lua_State *lua); static int Execute(lua_State *lua); static int Rewind(lua_State *lua); static int TakeScreenshot(lua_State *lua); static int SaveSavestate(lua_State *lua); static int LoadSavestate(lua_State *lua); static int SaveSavestateAsync(lua_State *lua); static int LoadSavestateAsync(lua_State *lua); static int GetSavestateData(lua_State *lua); static int ClearSavestateData(lua_State *lua); static int IsKeyPressed(lua_State *lua); static int GetInput(lua_State *lua); static int SetInput(lua_State *lua); static int AddCheat(lua_State *lua); static int ClearCheats(lua_State *lua); static int GetScriptDataFolder(lua_State *lua); static int GetRomInfo(lua_State *lua); static int GetLogWindowLog(lua_State *lua); static int SetState(lua_State *lua); static int GetState(lua_State *lua); static int GetAccessCounters(lua_State *lua); static int ResetAccessCounters(lua_State *lua); private: static Console* _console; static Debugger* _debugger; static MemoryDumper* _memoryDumper; static ScriptingContext* _context; static void PushSquareState(lua_State* lua, ApuSquareState &state); static void PushEnvelopeState(lua_State* lua, ApuEnvelopeState &state); static void PushLengthCounterState(lua_State* lua, ApuLengthCounterState &state); };