diasurgical / devilutionX

Diablo build for modern operating systems
Other
8.03k stars 787 forks source link

[Feature Request]: Instructions for Running DevilutionX on Ryujinx #6740

Closed Aethaeran closed 11 months ago

Aethaeran commented 11 months ago

Feature Type

Other (please specify)

Describe

Issue Type: Enhancement

Labels: Switch, Ryujinx, Instructions, Enhancement

Issue Description:

Current Instructions: The current README.txt for running DevilutionX on the Nintendo Switch is as follows:

# Nintendo Switch Port of DevilutionX (Diablo)

# How To Install:
 - Put `devilutionx.nro` and `devilutionx.mpq` in into `/switch/devilutionx`
 - Copy diabdat.mpq from your CD (or GoG install folder) to `/switch/devilutionx`.
 - To run the Diablo: Hellfire expansion you will need to also copy hellfire.mpq, hfmonk.mpq, hfmusic.mpq, hfvoice.mpq.
 - For Chinese, Japanese, and Korean text support download https://github.com/diasurgical/devilutionx-assets/releases/download/v2/fonts.mpq and add it to the game folder.
 - For the Polish voice pack download https://github.com/diasurgical/devilutionx-assets/releases/download/v2/pl.mpq.
 - For the Russian voice pack download https://github.com/diasurgical/devilutionx-assets/releases/download/v2/ru.mpq.
 - Launch `devilutionx.nro`. (Do not use album to launch; see the note below.)
 - *Note:* Hold R on any installed game and launch it. Do not use album to launch. If you use album, the homebrew will only have a small amount memory available, and the touch keyboard won't work. This is true for all homebrew, not just DevilutionX.

# Joycon Controls
- Left analog or 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
- L: use health item from belt
- R: use mana potion from belt
- ZL: character sheet (alt: Start + L1 or ←)
- ZR: inventory (alt: Start + L2 or →)
- Left analog click: toggle automap (alt: Start + ↓)
- Start + Select: game menu (alt: Start + ↑)
- Select + A/B/X/Y: Spell hotkeys
- Right analog: move automap or simulate mouse
- Right analog click or Select + L: left mouse click
- Select + Right analog click: right mouse click (alt: Select + R1)
- Select + L2: quest log (alt: Start + Y)
- Select + R2: spell book (alt: Start + B)

# Credits
 - See list of contributors https://github.com/diasurgical/devilutionX/graphs/contributors

# Links
Discord: https://discord.gg/YQKCAYQ
GitHub: https://github.com/diasurgical/devilutionX

Check out the manual for what features are available and how best to take advantage of them: https://github.com/diasurgical/devilutionX/wiki
For a full list of changes see our changelog: https://github.com/diasurgical/devilutionX/blob/master/docs/CHANGELOG.md

# Legal
DevilutionX is released to the Public Domain. The documentation and functionality provided by DevilutionX may only be utilized with assets provided by ownership of Diablo.

The source code in this repository is for non-commerical use only. If you use the source code you may not charge others for access to it or any derivative work thereof.

Diablo® - Copyright © 1996 Blizzard Entertainment, Inc. All rights reserved. Diablo and Blizzard Entertainment are trademarks or registered trademarks of Blizzard Entertainment, Inc. in the U.S. and/or other countries.

DevilutionX and any of its maintainers are in no way associated with or endorsed by Blizzard Entertainment®.

Suggested Changes: It should include some instructions for running DevilutionX on Ryujinx, please consider the following changes to the instructions:

A: Remove the requirement for devilutionx.mpq since it is now included within devilutionx.nro.

B: There is a spelling error. ("non-commerical" should be "non-commercial")

C: Clarify that devilutionx.nro does not need to be located anywhere in the emulated SD card on Ryujinx.

D: Specify that the location for the .mpq files must be %APPDATA%\Ryujinx\sdcard on Ryujinx.

E: Emphasize that the game will not render if you use the Vulkan graphics backend, which is the default in Ryujinx. Users must open the settings and switch to the OpenGL graphics backend.

These changes to the README.txt should help Ryujinx users run DevilutionX smoothly without any confusion.

Additional Information:

Thank you for considering these changes to make DevilutionX more accessible on Ryujinx.

Trihedraf commented 11 months ago

There is no need for emulation instructions. Whatever you are running a switch emulator on is powerful enough to run the native version of DevilutionX.

AJenbo commented 11 months ago

You can propose edits here: https://github.com/diasurgical/devilutionX/edit/master/Packaging/switch/README.txt

AJenbo commented 11 months ago

Why would Ryujinx users it to run DevilutionX when there are native ports for everything that Ryujinx works on, and you can play multiplayer between all of them.

A & B: Ok, please send a PR with the edit.

C: ? it must be located somewhere

D: That sounds specific to your configurations of Ryujinx

E: Sounds like a bug with Ryujinx, you should bring it up with them.

If Ryujinx emulates Switch I would expect the Ryujinx + Switch instructions to cover things, if that is not the case I would think it's either Ryujinx needing better documentation or our Switch instructions needing general improvments.

julealgon commented 11 months ago

Agree with Ajenbo there: having to have instructions on how to run something in an emulator as part of the source makes no sense to me: it's the emulator's responsibility to have documentation on how to run the games on it, not the other way around.

Aethaeran commented 11 months ago

There is no need for emulation instructions. Whatever you are running a switch emulator on is powerful enough to run the native version of DevilutionX.

Thank you for the information. I've been playing the Diablo games through Switch emulation for controller support, but I didn't realize that the native DevilutionX port offers the same feature. I appreciate the suggestion, and I'll explore the native version for my use case.

C: ? it must be located somewhere

The emulator allows ROMs to be located anywhere the emulator can detect them, and users specify the folders to search in.

D: That sounds specific to your configurations of Ryujinx

The issue is specific to the default configuration of Ryujinx, as storing the .mpq files in %APPDATA%\Ryujinx\sdcard\switch\devilutionx, as the instructions imply, results in the game failing to launch.

E: Sounds like a bug with Ryujinx, you should bring it up with them.

It's possible that this issue is related to Ryujinx, and I'll start a separate issue there. However, I expected this to be a known issue here, given the historical compatibility of the game and the Vulkan graphics backend, which was released after the game itself.

If Ryujinx emulates Switch I would expect the Ryujinx + Switch instructions to cover things, if that is not the case I would think it's either Ryujinx needing better documentation or our Switch instructions needing general improvments. Agree with Ajenbo there: having to have instructions on how to run something in an emulator as part of the source makes no sense to me: it's the emulator's responsibility to have documentation on how to run the games on it, not the other way around.

Initially, I'd like to mention that the original GitHub repository for the Switch version of DevilutionX suggests users to "Test with an emulator (RyuJinx) or real hardware." This is what led me to assume that there might be some form of instructions on how to do so. While I am aware that the maintainers of that repository are not the same as those of this one, I found my way here via that repository.

While Ryujinx provides general documentation on running games on the emulator, it's reasonable to expect that specific homebrew applications, like DevilutionX, might need to include detailed instructions to ensure users a smooth installation process. In this case, providing guidance within the README.txt itself can be valuable to users who may not be aware of the intricacies of running this particular title with this specific emulator. It would complement the current documentation and help users get the best experience.

Your insights are appreciated, and I hope that you'll reconsider improving the documentation so that it can benefit users seeking to enjoy DevilutionX on Ryujinx.

AJenbo commented 11 months ago

E: It's possible that the game will be a useful test case for them as they have access to all parts of it.

Your insights are appreciated, and I hope that you'll reconsider improving the documentation so that it can benefit users seeking to enjoy DevilutionX on Ryujinx.

If nothing else they can now find this issue.

StephenCWills commented 11 months ago

It's possible that this issue is related to Ryujinx, and I'll start a separate issue there. However, I expected this to be a known issue here, given the historical compatibility of the game and the Vulkan graphics backend, which was released after the game itself.

I did a lot of testing with Ryujinx, and I don't recall having to change any defaults to get the game to run. They must have more recently updated their app to make Vulkan the default renderer. So.. no, it wasn't a known issue.

The issue is specific to the default configuration of Ryujinx, as storing the .mpq files in %APPDATA%\Ryujinx\sdcard\switch\devilutionx, as the instructions imply, results in the game failing to launch.

You may not actually care about this, but I'm just going to infodump here because it's somewhat relevant. You can see from devkitpro's implementation of SDL_sysfilesystem.c that the Switch uses romfs:/ as the base path (normally where we expect the MPQs should be placed) and whatever gets returned by getcwd() as the pref path (normally where we expect to be able to place the save files).

https://github.com/devkitPro/SDL/blob/switch-sdl2/src/filesystem/switch/SDL_sysfilesystem.c

Expectations aside, we do add both the base path and the pref path to our list of search paths when loading MPQs from the file system. Since the game's data files don't come from romfs, it suggests that getcwd() works differently on hardware than it does in Ryujinx. This may have something to do with how the emulator can run an nro directly from the menu rather than installing it as an application first. But I've never installed this game on Switch hardware so I don't actually know what I'm talking about when it comes to that and am instead loosely basing my hypothesis on how installing the game works on 3DS.