Browse Source

OpenDingux: rg99 port

pull/4958/head
Gleb Mazovetskiy 5 years ago committed by Anders Jenbo
parent
commit
6181e53c10
  1. 4
      CMake/Platforms.cmake
  2. 2
      CMake/platforms/lepus.cmake
  3. 2
      CMake/platforms/rg350.cmake
  4. 48
      CMake/platforms/rg99.cmake
  5. 23
      Packaging/OpenDingux/build.sh
  6. 35
      Packaging/OpenDingux/rg99-manual.txt
  7. 11
      Packaging/OpenDingux/rg99.desktop
  8. 1
      Packaging/OpenDingux/targets.sh
  9. 48
      docs/manual/platforms/rg99.md

4
CMake/Platforms.cmake

@ -18,9 +18,11 @@ if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD|OpenBSD|DragonFly|NetBSD")
endif()
set(TARGET_PLATFORM host CACHE STRING "Target platform")
set_property(CACHE TARGET_PLATFORM PROPERTY STRINGS host retrofw rg350 gkd350h cpigamesh)
set_property(CACHE TARGET_PLATFORM PROPERTY STRINGS host retrofw rg99 rg350 gkd350h cpigamesh)
if(TARGET_PLATFORM STREQUAL "retrofw")
include(platforms/retrofw)
elseif(TARGET_PLATFORM STREQUAL "rg99")
include(platforms/rg99)
elseif(TARGET_PLATFORM STREQUAL "rg350")
include(platforms/rg350)
elseif(TARGET_PLATFORM STREQUAL "gkd350h")

2
CMake/platforms/lepus.cmake

@ -2,7 +2,7 @@ set(BUILD_ASSETS_MPQ OFF)
set(USE_SDL1 ON)
set(SDL1_VIDEO_MODE_BPP 8)
set(SDL1_VIDEO_MODE_FLAGS SDL_YUV444|SDL_HWSURFACE|SDL_TRIPLEBUF)
set(SDL1_VIDEO_MODE_FLAGS SDL_HWSURFACE|SDL_TRIPLEBUF)
set(SDL1_FORCE_SVID_VIDEO_MODE ON)
set(PREFILL_PLAYER_NAME ON)

2
CMake/platforms/rg350.cmake

@ -2,7 +2,7 @@ set(BUILD_ASSETS_MPQ OFF)
set(USE_SDL1 ON)
set(SDL1_VIDEO_MODE_BPP 8)
set(SDL1_VIDEO_MODE_FLAGS SDL_YUV444|SDL_HWSURFACE|SDL_TRIPLEBUF)
set(SDL1_VIDEO_MODE_FLAGS SDL_HWSURFACE|SDL_TRIPLEBUF)
set(SDL1_FORCE_SVID_VIDEO_MODE ON)
set(PREFILL_PLAYER_NAME ON)

48
CMake/platforms/rg99.cmake

@ -0,0 +1,48 @@
# RG99 has the same layout as RG300 but only 32 MiB RAM
set(BUILD_ASSETS_MPQ OFF)
set(NONET ON)
set(NOSOUND ON)
set(USE_SDL1 ON)
# Link `libstdc++` dynamically: ~1.3 MiB.
# The OPK is mounted as squashfs and the binary is decompressed, while
# the system `libstdc++` resides on disk.
set(DEVILUTIONX_STATIC_CXX_STDLIB OFF)
# 128 KiB
set(DEVILUTIONX_PALETTE_TRANSPARENCY_BLACK_16_LUT OFF)
# Must use a tiny audio buffer due to RAM constraints.
set(DEFAULT_AUDIO_BUFFER_SIZE 256)
# Use lower resampling quality for FPS.
set(DEFAULT_AUDIO_RESAMPLING_QUALITY 2)
# RG-99 hardware scaler can only scale YUV.
# The SDL library on RG-99 can convert 8-bit palettized surfaces to YUV automatically.
set(SDL1_VIDEO_MODE_BPP 8)
set(SDL1_FORCE_SVID_VIDEO_MODE ON)
set(SDL1_FORCE_DIRECT_RENDER ON)
# Must be an HWSURFACE for the scaler to work.
set(SDL1_VIDEO_MODE_FLAGS SDL_HWSURFACE|SDL_FULLSCREEN)
# Videos are 320x240, so they fit in video ram double-buffered.
set(SDL1_VIDEO_MODE_SVID_FLAGS SDL_HWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF)
set(PREFILL_PLAYER_NAME ON)
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_LEFTSTICK SDLK_END) # Suspend
set(KBCTRL_BUTTON_BACK SDLK_ESCAPE) # Select
set(KBCTRL_IGNORE_1 SDLK_3) # Backlight

23
Packaging/OpenDingux/build.sh

@ -22,12 +22,14 @@ declare -r BUILD_DIR="build-${TARGET}"
declare -rA BUILDROOT_REPOS=(
[lepus]=https://github.com/OpenDingux/buildroot.git
[retrofw]=https://github.com/retrofw/buildroot.git
[rg99]=https://github.com/OpenDingux/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'
[rg99]='od_rs90_defconfig BR2_EXTERNAL=board/opendingux'
[rg350]='od_gcw0_defconfig BR2_EXTERNAL=board/opendingux'
[gkd350h]='rg350_defconfig BR2_EXTERNAL=board/opendingux'
)
@ -55,14 +57,19 @@ prepare_buildroot() {
if [[ -d $BUILDROOT ]]; then
return
fi
git clone --depth=1 "${BUILDROOT_REPOS[$BUILDROOT_TARGET]}" "$BUILDROOT"
if [[ "${BUILDROOT_REPOS[$BUILDROOT_TARGET]}" == *.tar.gz ]]; then
mkdir -p "$BUILDROOT"
curl -L --fail "${BUILDROOT_REPOS[$BUILDROOT_TARGET]}" | \
tar -xz --strip-components 1 -C "$BUILDROOT"
else
git clone --depth=1 "${BUILDROOT_REPOS[$BUILDROOT_TARGET]}" "$BUILDROOT"
fi
cd "$BUILDROOT"
ln -s ../shared-dl dl
# Work around a BR2_EXTERNAL initialization bug in older buildroots.
mkdir -p output
touch output/.br-external.mk
make ${BUILDROOT_DEFCONFIGS[$BUILDROOT_TARGET]}
cd -
}
@ -104,6 +111,12 @@ build_relwithdebinfo() {
cmake_build
}
build_minsizerel() {
cmake_configure -DCMAKE_BUILD_TYPE=MinSizeRel
cmake_build
strip_bin
}
build_release() {
cmake_configure -DCMAKE_BUILD_TYPE=Release
cmake_build
@ -112,7 +125,11 @@ build_release() {
build() {
rm -f "${BUILD_DIR}/CMakeCache.txt"
build_release
if [[ $TARGET == rg99 ]]; then
build_minsizerel
else
build_release
fi
}
main

35
Packaging/OpenDingux/rg99-manual.txt

@ -0,0 +1,35 @@
Copy diabdat.mpq from your CD (or GoG install folder) to:
~/.local/share/diasurgical/devilution/
For Hellfire, also copy hellfire.mpq, hfmonk.mpq, hfmusic.mpq, and hfvoice.mpq.
For Chinese, Japanese, and Korean text support copy:
https://github.com/diasurgical/devilutionx-assets/releases/download/v1/fonts.mpq
For the Polish voice pack copy:
https://github.com/diasurgical/devilutionx-assets/releases/download/v1/pl.mpq
Game saves and diablo.ini are located at:
~/.local/share/diasurgical/devilution
~ is your home directory, /media/data/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

11
Packaging/OpenDingux/rg99.desktop

@ -0,0 +1,11 @@
[Desktop Entry]
Name=DevilutionX
Comment=Diablo 1 for RG99
Exec=devilutionx
Terminal=false
Type=Application
StartupNotify=true
Icon=icon_32
Categories=games;
X-OD-Manual=readme.rg99.txt
X-OD-NeedsDownscaling=true

1
Packaging/OpenDingux/targets.sh

@ -1,6 +1,7 @@
declare -ra VALID_TARGETS=(
lepus
retrofw
rg99
rg350
gkd350h
)

48
docs/manual/platforms/rg99.md

@ -0,0 +1,48 @@
# DevilutionX (Diablo 1) for RG99
## Installation
**Requires a recent OpenDingux beta**
1. Copy [devilutionx-rg99.opk](https://github.com/diasurgical/devilutionX/releases/latest/download/devilutionx-rg99.opk) to the apps directory.
2. Copy `diabdat.mpq` from your CD, or GoG install folder to:
~~~
/media/home/.local/share/diasurgical/devilution/diabdat.mpq
~~~
## 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
---
Game saves and `diablo.ini` are located at:
~~~
/media/home/.local/share/diasurgical/devilution/
~~~
Saves are compatible with PC saves from Diablo 1 and DevilutionX.
## Resources
* Discord: https://discord.gg/aQBQdDe
* GitHub: https://github.com/diasurgical/devilutionX
Loading…
Cancel
Save