diff --git a/CMake/lepus_defs.cmake b/CMake/lepus_defs.cmake new file mode 100644 index 000000000..406e8c26f --- /dev/null +++ b/CMake/lepus_defs.cmake @@ -0,0 +1,59 @@ +set(DISABLE_ZERO_TIER ON) +set(USE_SDL1 ON) + +set(SDL1_VIDEO_MODE_BPP 8) +set(SDL1_VIDEO_MODE_FLAGS SDL_YUV444|SDL_HWSURFACE|SDL_TRIPLEBUF) +set(SDL1_FORCE_SVID_VIDEO_MODE ON) + +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) +set(JOY_HAT_DPAD_DOWN 4) +set(JOY_HAT_DPAD_LEFT_HAT 0) +set(JOY_HAT_DPAD_LEFT 8) +set(JOY_HAT_DPAD_RIGHT_HAT 0) +set(JOY_HAT_DPAD_RIGHT 2) +set(JOY_BUTTON_A 0) +set(JOY_BUTTON_B 1) +set(JOY_BUTTON_Y 2) +set(JOY_BUTTON_X 3) +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 25a18f3f5..61feacd4e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -164,7 +164,9 @@ endif() set(TARGET_PLATFORM host CACHE STRING "Target platform") set_property(CACHE TARGET_PLATFORM PROPERTY STRINGS host retrofw rg350 gkd350h cpigamesh) -if(TARGET_PLATFORM STREQUAL "retrofw") +if(TARGET_PLATFORM STREQUAL "lepus") + include(lepus_defs) +elseif(TARGET_PLATFORM STREQUAL "retrofw") include(retrofw_defs) elseif(TARGET_PLATFORM STREQUAL "rg350") include(rg350_defs) diff --git a/Packaging/OpenDingux/build.sh b/Packaging/OpenDingux/build.sh index d516aa402..5ba7f2286 100755 --- a/Packaging/OpenDingux/build.sh +++ b/Packaging/OpenDingux/build.sh @@ -20,11 +20,13 @@ fi declare -r TARGET="$1" declare -r BUILD_DIR="build-${TARGET}" declare -rA BUILDROOT_REPOS=( + [lepus]=https://github.com/OpenDingux/buildroot.git [retrofw]=https://github.com/retrofw/buildroot.git [rg350]=https://github.com/OpenDingux/buildroot.git [gkd350h]=https://github.com/tonyjih/RG350_buildroot.git ) declare -rA BUILDROOT_DEFCONFIGS=( + [lepus]='od_lepus_defconfig BR2_EXTERNAL=board/opendingux' [retrofw]='RetroFW_defconfig BR2_EXTERNAL=retrofw' [rg350]='od_gcw0_defconfig BR2_EXTERNAL=board/opendingux' [gkd350h]='rg350_defconfig BR2_EXTERNAL=board/opendingux' @@ -55,6 +57,7 @@ prepare_buildroot() { fi git clone --depth=1 "${BUILDROOT_REPOS[$BUILDROOT_TARGET]}" "$BUILDROOT" cd "$BUILDROOT" + ln -s ../shared-dl dl # Work around a BR2_EXTERNAL initialization bug in older buildroots. mkdir -p output diff --git a/Packaging/OpenDingux/lepus-manual.txt b/Packaging/OpenDingux/lepus-manual.txt new file mode 100644 index 000000000..a782261a1 --- /dev/null +++ b/Packaging/OpenDingux/lepus-manual.txt @@ -0,0 +1,31 @@ +Copy diabdat.mpq from your CD (or GoG install folder) to: +~/.local/share/diasurgical/ + +For Hellfire, also copy hellfire.mpq, hfmonk.mpq, hfmusic.mpq, and hfvoice.mpq. + +Game saves and diablo.ini are located at: +~/.local/share/diasurgical/devilution + +~ is your home directory, /media/home by default. + +Controls: +- D-pad: move hero +- A: attack nearby enemies, talk to townspeople and merchants, pickup/place items in the inventory, OK while in main menu +- B: select spell, back while in menus +- X: pickup items, open nearby chests and doors, use item in the inventory +- Y: cast spell, delete character while in main menu +- R: use mana potion from belt +- L: use health item from belt +- Start + Select: game menu (alt: Start + ↑) +- Start + L or ←: character info +- Start + R or →: inventory +- Start + ↓: map +- Start + Y: Quest log +- Start + B: Spell book +- Select + A/B/X/Y: hot spell +- Select + D-pad: move map/cursor +- Select + L: left mouse click +- Select + R: right mouse click +- Suspend: map + +Source: https://github.com/diasurgical/devilutionX/ diff --git a/Packaging/OpenDingux/lepus.desktop b/Packaging/OpenDingux/lepus.desktop new file mode 100644 index 000000000..d5e8d89e5 --- /dev/null +++ b/Packaging/OpenDingux/lepus.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Name=DevilutionX +Comment=Diablo 1 for OpenDingux +Exec=devilutionx +Terminal=false +Type=Application +StartupNotify=true +Icon=icon_32 +Categories=games; +X-OD-Manual=readme.lepus.txt +X-OD-NeedsDownscaling=true +X-OD-NeedsJoystick=true diff --git a/Packaging/OpenDingux/targets.sh b/Packaging/OpenDingux/targets.sh index 24dc8acbc..e39e22fdd 100755 --- a/Packaging/OpenDingux/targets.sh +++ b/Packaging/OpenDingux/targets.sh @@ -1,4 +1,5 @@ declare -ra VALID_TARGETS=( + lepus retrofw rg350 gkd350h