Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Basic Lua Scripting Support #1671

Open
wants to merge 39 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
2f19ab8
Next Attempt (2024)!
NPO-197 Sep 25, 2024
8d0de89
New Class "LuaBundle"
NPO-197 Sep 27, 2024
5eccaae
Update CMakeLists.txt find lua package...
NPO-197 Sep 28, 2024
11909c3
Update build-ubuntu.yml
NPO-197 Sep 28, 2024
fbfbf51
Update vcpkg.json
NPO-197 Sep 28, 2024
226053b
Update CMakeLists.txt
NPO-197 Sep 28, 2024
5c00b0b
Update CMakeLists.txt
NPO-197 Sep 28, 2024
0a1e420
Update flake.nix
NPO-197 Sep 28, 2024
e7e15a6
Update CMakeLists.txt
NPO-197 Sep 28, 2024
1cdf447
Update CMakeLists.txt
NPO-197 Sep 28, 2024
f144f75
Using `lua_getextraspace(` instead of redefining lua_State
NPO-197 Sep 29, 2024
487b80c
Update CMakeLists.txt & build-ubuntu.yml
NPO-197 Oct 15, 2024
7283efc
Fixed some broken functions, added Lua test script to tools
NPO-197 Oct 16, 2024
4f1b1d1
fixed LuaSaveState
NPO-197 Oct 17, 2024
4f4619d
Update LuaScriptTest.lua
NPO-197 Oct 17, 2024
ba82d93
Fixing qpainter font to work on MacOS
NPO-197 Oct 18, 2024
92fc1f9
Update LuaMain.cpp
NPO-197 Oct 18, 2024
5376f5a
Update LuaMain.cpp
NPO-197 Oct 18, 2024
3ee3abf
Update LuaMain.cpp
NPO-197 Oct 18, 2024
bc40d89
Update LuaMain.cpp
NPO-197 Oct 18, 2024
d92fb25
replaced QString with const char* while passing args
NPO-197 Oct 19, 2024
f16fe76
Create Lua_Docs.md
NPO-197 Oct 22, 2024
b828181
Update Lua_Docs.md
NPO-197 Oct 22, 2024
db78366
Code Clean Up
NPO-197 Oct 23, 2024
cc8b7f0
Merge branch 'master' of https://github.com/NPO-197/melonDS-lua
NPO-197 Oct 23, 2024
c1921f9
Clean LuaMain
NPO-197 Oct 23, 2024
a6dd236
Code Clean Up
NPO-197 Oct 23, 2024
b16912a
Changed MelonPrint to print,
NPO-197 Oct 27, 2024
a312d4d
Update Lua_Docs.md
NPO-197 Oct 28, 2024
c21d794
Running Lua Script on the main GUI thread
NPO-197 Oct 28, 2024
5196151
Merge branch 'master' into master
NPO-197 Oct 28, 2024
e3e31b8
Code Cleanup
NPO-197 Nov 1, 2024
e7e5ccb
Merge branch 'master' into master
NPO-197 Nov 1, 2024
359fbfb
Merge branch 'melonDS-emu:master' into master
NPO-197 Nov 5, 2024
839f733
Revised Keyboard input, currentDir
NPO-197 Nov 5, 2024
9180d4f
Merge branch 'master' of https://github.com/NPO-197/melonDS-lua
NPO-197 Nov 5, 2024
ecd943d
Merge branch 'melonDS-emu:master' into master
NPO-197 Nov 5, 2024
c43feca
Merge branch 'master' into master
NPO-197 Nov 17, 2024
36a54cb
Merge branch 'melonDS-emu:master' into master
NPO-197 Nov 21, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/build-ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
sudo rm -f /etc/apt/sources.list.d/dotnetdev.list /etc/apt/sources.list.d/microsoft-prod.list
sudo apt update
sudo apt install --allow-downgrades cmake ninja-build extra-cmake-modules libpcap0.8-dev libsdl2-dev libenet-dev \
qt6-{base,base-private,multimedia}-dev libqt6svg6-dev libarchive-dev libzstd-dev libfuse2
qt6-{base,base-private,multimedia}-dev libqt6svg6-dev libarchive-dev libzstd-dev libfuse2 liblua5.4-dev
- name: Configure
run: cmake -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/usr -DMELONDS_EMBED_BUILD_INFO=ON
- name: Build
Expand Down Expand Up @@ -69,8 +69,8 @@ jobs:
apt update
apt -y full-upgrade
apt -y install git {gcc-12,g++-12}-aarch64-linux-gnu cmake ninja-build extra-cmake-modules \
{libsdl2,qt6-{base,base-private,multimedia},libqt6svg6,libarchive,libzstd,libenet}-dev:arm64 \
pkg-config dpkg-dev
{libsdl2,qt6-{base,base-private,multimedia},libqt6svg6,libarchive,libzstd,libenet,liblua5.4}-dev:arm64 \
pkg-config dpkg-dev
- name: Check out source
uses: actions/checkout@v4
- name: Configure
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
build*/
debug*/
bin
obj
*.depend
Expand Down
1 change: 1 addition & 0 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
qt6.qtbase
qt6.qtmultimedia
SDL2
lua
zstd
libarchive
libGL
Expand Down
7 changes: 6 additions & 1 deletion src/frontend/qt_sdl/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ set(SOURCES_QT_SDL

LANDialog.cpp
NetplayDialog.cpp

LuaMain.cpp
)

option(USE_QT6 "Use Qt 6 instead of Qt 5" ON)
Expand All @@ -75,6 +77,7 @@ set(CMAKE_AUTORCC ON)

find_package(Threads REQUIRED)
find_package(PkgConfig REQUIRED)
find_package(Lua REQUIRED)

if (BUILD_STATIC)
list(APPEND PKG_CONFIG_EXECUTABLE "--static")
Expand All @@ -83,6 +86,7 @@ endif()
pkg_check_modules(SDL2 REQUIRED IMPORTED_TARGET sdl2)
pkg_check_modules(LibArchive REQUIRED IMPORTED_TARGET libarchive)
pkg_check_modules(Zstd REQUIRED IMPORTED_TARGET libzstd)
## pkg_search_module(Lua REQUIRED IMPORTED_TARGET lua)

fix_interface_includes(PkgConfig::SDL2 PkgConfig::LibArchive)

Expand Down Expand Up @@ -173,14 +177,15 @@ endif()
target_include_directories(melonDS PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/..")
target_include_directories(melonDS PRIVATE ${LUA_INCLUDE_DIR})

if (USE_QT6)
target_include_directories(melonDS PUBLIC ${Qt6Gui_PRIVATE_INCLUDE_DIRS})
else()
target_include_directories(melonDS PUBLIC ${Qt5Gui_PRIVATE_INCLUDE_DIRS})
endif()
target_link_libraries(melonDS PRIVATE core)
target_link_libraries(melonDS PRIVATE PkgConfig::SDL2 PkgConfig::LibArchive PkgConfig::Zstd)
target_link_libraries(melonDS PRIVATE PkgConfig::SDL2 PkgConfig::LibArchive PkgConfig::Zstd ${LUA_LIBRARIES})
target_link_libraries(melonDS PRIVATE ${QT_LINK_LIBS} ${CMAKE_DL_LIBS})

if (WIN32)
Expand Down
4 changes: 4 additions & 0 deletions src/frontend/qt_sdl/EmuInstance.h
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,8 @@ class EmuInstance
void setJoystick(int id);
int getJoystickID() { return joystickID; }
SDL_Joystick* getJoystick() { return joystick; }
std::vector<int> heldKeys;
std::vector<int> keyStrokes;

void touchScreen(int x, int y);
void releaseScreen();
Expand Down Expand Up @@ -285,6 +287,8 @@ class EmuInstance
bool fastForwardToggled;
bool slowmoToggled;
bool doAudioSync;

melonDS::u32 getInputMask(){return inputMask;}
private:

std::unique_ptr<melonDS::Savestate> backupState;
Expand Down
3 changes: 3 additions & 0 deletions src/frontend/qt_sdl/EmuInstanceInput.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -225,8 +225,10 @@ int getEventKeyVal(QKeyEvent* event)

void EmuInstance::onKeyPress(QKeyEvent* event)
{
heldKeys.push_back(event->key());
int keyHK = getEventKeyVal(event);
int keyKP = keyHK;
keyStrokes.push_back(keyHK);
if (event->modifiers() != Qt::KeypadModifier)
keyKP &= ~event->modifiers();

Expand All @@ -241,6 +243,7 @@ void EmuInstance::onKeyPress(QKeyEvent* event)

void EmuInstance::onKeyRelease(QKeyEvent* event)
{
heldKeys.erase(std::find(heldKeys.begin(),heldKeys.end(),event->key()));
int keyHK = getEventKeyVal(event);
int keyKP = keyHK;
if (event->modifiers() != Qt::KeypadModifier)
Expand Down
3 changes: 3 additions & 0 deletions src/frontend/qt_sdl/EmuThread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,9 @@ void EmuThread::run()
}

handleMessages();

//Lua Script Stuff (-for now happens at the end of each frame regardless of emuStatus)
emit signalLuaUpdate();
}
}

Expand Down
2 changes: 2 additions & 0 deletions src/frontend/qt_sdl/EmuThread.h
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,8 @@ class EmuThread : public QThread

void syncVolumeLevel();

void signalLuaUpdate();

private:
void handleMessages();

Expand Down
Loading