diff --git a/CMake/rg350_defs.cmake b/CMake/rg350_defs.cmake index f121b47be..51d5a449d 100644 --- a/CMake/rg350_defs.cmake +++ b/CMake/rg350_defs.cmake @@ -3,10 +3,34 @@ set(NONET ON) set(USE_SDL1 ON) set(SDL1_VIDEO_MODE_BPP 16) set(PREFILL_PLAYER_NAME ON) + set(JOY_AXIS_LEFTX 0) set(JOY_AXIS_LEFTY 1) set(JOY_AXIS_RIGHTX 2) set(JOY_AXIS_RIGHTY 3) + +# OpenDingux Beta does not currently support X-OD-NeedsJoystick, +# so we use KBCTRL instead. Unfortunately, this partially breaks +# external mouse and keyboard support. +set(HAS_KBCTRL 1) +set(KBCTRL_BUTTON_DPAD_LEFT SDLK_LEFT) +set(KBCTRL_BUTTON_DPAD_RIGHT SDLK_RIGHT) +set(KBCTRL_BUTTON_DPAD_UP SDLK_UP) +set(KBCTRL_BUTTON_DPAD_DOWN SDLK_DOWN) +set(KBCTRL_BUTTON_B SDLK_LCTRL) +set(KBCTRL_BUTTON_A SDLK_LALT) +set(KBCTRL_BUTTON_Y SDLK_SPACE) +set(KBCTRL_BUTTON_X SDLK_LSHIFT) +set(KBCTRL_BUTTON_RIGHTSHOULDER SDLK_BACKSPACE) +set(KBCTRL_BUTTON_LEFTSHOULDER SDLK_TAB) +set(KBCTRL_BUTTON_START SDLK_RETURN) +set(KBCTRL_BUTTON_BACK SDLK_ESCAPE) # Select +set(KBCTRL_BUTTON_TRIGGERLEFT SDLK_PAGEUP) +set(KBCTRL_BUTTON_TRIGGERRIGHT SDLK_PAGEDOWN) +set(KBCTRL_BUTTON_LEFTSTICK SDLK_KP_DIVIDE) +set(KBCTRL_BUTTON_RIGHTSTICK SDLK_KP_PERIOD) + +# Joystick mappings that have no effect on OpenDingux Beta: set(JOY_HAT_DPAD_UP_HAT 0) set(JOY_HAT_DPAD_UP 1) set(JOY_HAT_DPAD_DOWN_HAT 0) @@ -19,14 +43,14 @@ set(JOY_BUTTON_A 0) set(JOY_BUTTON_B 1) set(JOY_BUTTON_Y 2) set(JOY_BUTTON_X 3) -set(JOY_BUTTON_LEFTSTICK 10) -set(JOY_BUTTON_RIGHTSTICK 11) set(JOY_BUTTON_RIGHTSHOULDER 5) set(JOY_BUTTON_LEFTSHOULDER 4) set(JOY_BUTTON_TRIGGERLEFT 6) set(JOY_BUTTON_TRIGGERRIGHT 7) set(JOY_BUTTON_START 9) set(JOY_BUTTON_BACK 8) +set(JOY_BUTTON_LEFTSTICK 10) +set(JOY_BUTTON_RIGHTSTICK 11) # Map Power button to Esc (Menu in-game / Exit in-menu). set(REMAP_KEYBOARD_KEYS "{SDLK_HOME,SDLK_ESCAPE}") diff --git a/CMakeLists.txt b/CMakeLists.txt index 8787199cb..2a1468dae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -505,6 +505,8 @@ foreach( KBCTRL_BUTTON_RIGHTSTICK KBCTRL_BUTTON_RIGHTSHOULDER KBCTRL_BUTTON_LEFTSHOULDER + KBCTRL_BUTTON_TRIGGERLEFT + KBCTRL_BUTTON_TRIGGERRIGHT KBCTRL_BUTTON_START KBCTRL_BUTTON_BACK KBCTRL_IGNORE_1 diff --git a/Packaging/OpenDingux/build.sh b/Packaging/OpenDingux/build.sh index 4195e06e2..cfc0afda8 100755 --- a/Packaging/OpenDingux/build.sh +++ b/Packaging/OpenDingux/build.sh @@ -21,18 +21,16 @@ declare -r TARGET="$1" declare -r BUILD_DIR="build-${TARGET}" declare -rA BUILDROOT_REPOS=( [retrofw]=https://github.com/retrofw/buildroot.git - [rg350]=https://github.com/tonyjih/RG350_buildroot.git + [rg350]=https://github.com/OpenDingux/buildroot.git + [gkd350h]=https://github.com/tonyjih/RG350_buildroot.git ) declare -rA BUILDROOT_DEFCONFIGS=( [retrofw]='RetroFW_defconfig BR2_EXTERNAL=retrofw' - [rg350]='rg350_defconfig BR2_EXTERNAL=board/opendingux' + [rg350]='od_gcw0_defconfig BR2_EXTERNAL=board/opendingux' + [gkd350h]='rg350_defconfig BR2_EXTERNAL=board/opendingux' ) declare BUILDROOT_TARGET="$TARGET" -if [[ $TARGET == gkd350h ]]; then - # Use the rg350 buildroot for gkd350h because gkd350h buildroot is not open-source. - BUILDROOT_TARGET=rg350 -fi # If a TOOLCHAIN environment variable is set, just use that. if [[ -z ${TOOLCHAIN:-} ]]; then diff --git a/Source/controls/devices/kbcontroller.cpp b/Source/controls/devices/kbcontroller.cpp index 415328003..b4bb06e95 100644 --- a/Source/controls/devices/kbcontroller.cpp +++ b/Source/controls/devices/kbcontroller.cpp @@ -50,6 +50,14 @@ ControllerButton KbCtrlToControllerButton(const SDL_Event &event) case KBCTRL_BUTTON_RIGHTSHOULDER: return ControllerButton_BUTTON_RIGHTSHOULDER; #endif +#ifdef KBCTRL_BUTTON_TRIGGERLEFT + case KBCTRL_BUTTON_TRIGGERLEFT: + return ControllerButton_AXIS_TRIGGERLEFT; +#endif +#ifdef KBCTRL_BUTTON_TRIGGERRIGHT + case KBCTRL_BUTTON_TRIGGERRIGHT: + return ControllerButton_AXIS_TRIGGERRIGHT; +#endif #ifdef KBCTRL_BUTTON_START case KBCTRL_BUTTON_START: return ControllerButton_BUTTON_START; @@ -86,8 +94,6 @@ namespace { int ControllerButtonToKbCtrlKeyCode(ControllerButton button) { - if (button == ControllerButton_AXIS_TRIGGERLEFT || button == ControllerButton_AXIS_TRIGGERRIGHT) - UNIMPLEMENTED(); switch (button) { #ifdef KBCTRL_BUTTON_A case ControllerButton_BUTTON_A: @@ -129,6 +135,14 @@ int ControllerButtonToKbCtrlKeyCode(ControllerButton button) case ControllerButton_BUTTON_RIGHTSHOULDER: return KBCTRL_BUTTON_RIGHTSHOULDER; #endif +#ifdef KBCTRL_BUTTON_TRIGGERLEFT + case ControllerButton_AXIS_TRIGGERLEFT: + return KBCTRL_BUTTON_TRIGGERLEFT; +#endif +#ifdef KBCTRL_BUTTON_TRIGGERRIGHT + case ControllerButton_AXIS_TRIGGERRIGHT: + return KBCTRL_BUTTON_TRIGGERRIGHT; +#endif #ifdef KBCTRL_BUTTON_DPAD_UP case ControllerButton_BUTTON_DPAD_UP: return KBCTRL_BUTTON_DPAD_UP; diff --git a/docs/manual/platforms/rg350.md b/docs/manual/platforms/rg350.md index 615650600..5dc9c0ddf 100644 --- a/docs/manual/platforms/rg350.md +++ b/docs/manual/platforms/rg350.md @@ -6,7 +6,7 @@ Demo video: ## Installation -**Requires firmware v1.5+** +**Requires OpenDingux Beta** 1. Copy [devilutionx-rg350.opk](https://github.com/diasurgical/devilutionX/releases/latest/download/devilutionx-rg350.opk) to `/media/sdcard/APPS/`.