Merge pull request #27 from AM2R-Community-Developers/gpu-fix

Gpu fix
This commit is contained in:
Miepee 2022-01-07 11:10:20 +01:00 committed by GitHub
commit d723f80592
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
39 changed files with 8 additions and 57 deletions

6
.gitignore vendored
View file

@ -1,3 +1,3 @@
am2r_15_2/
ARCHIVE-am2r_15_2/
AM2R_11.zip
am2r_*/
ARCHIVE-am2r_*/
AM2R_11.zip

View file

@ -47,21 +47,6 @@ Navigate to the newly created folder.
If you have other questions/issues, please open an issue, post to [r/AM2R](https://www.reddit.com/r/AM2R/), or join the [Official AM2R Discord Server](https://discord.gg/YTQnkAJ).
## AppImage crashes
Currently all GPUs have known problems when starting the AppImage. For all of these, please make sure you installed the 32-bit GPU drivers beforehand.
### NVIDIA
For Nvidia, you need `LD_PRELOAD` pointing to your 32-bit drivers.
For Ubuntu-based distros this looks like this: `LD_PRELOAD=/usr/lib/i386-linux-gnu/libGL.so.1`, for Arch-based distros it looks like this: `LD_PRELOAD=/usr/lib32/libGL.so`. It will likely be different for other distros.
### AMD
AMD crashes on VM Game Maker: Studio builds. This is true for everything before 1.5 and after 1.5.3 as well as most mods.
You'll need to try each one of these, individually, in order until one works: `R600_DEBUG=mono`, `R600_DEBUG=vs.ps`, `radeonsi_sync_compile=true`, `R600_DEBUG=check_vm`.
We can't immediately tell which is needed for a given AMD card; these are sorted by performance.
### Intel
Intel crashes on Ubuntu-based distros. `LIBGL_DRI3_DISABLE=1` circumvents it.
## Android installation instructions
You will need an Android device with a file explorer application installed, and a USB cable to connect said device to your computer.

Binary file not shown.

BIN
data/AM2R.AppDir/AppRun-game Executable file

Binary file not shown.

View file

@ -1,7 +1,7 @@
[Desktop Entry]
Categories=Game;
Comment=Another Metroid 2 Remake (Community Edition)
Exec=AM2R
Exec=runner
Icon=icon
Name=AM2R
Type=Application

View file

@ -81,7 +81,7 @@ if (type == '1'):
print("Linux selected.\nApplying AM2R patch...")
# apply AM2R.bps
# subprocess.call(['utilities/floating/./flips-linux', '-a', 'data/AM2R.bps', output+'/AM2R.exe', output+'/AM2R'])
subprocess.call(['xdelta3', '-dfs', output+'/AM2R.exe', 'data/AM2R.xdelta', output+'/AM2R'])
subprocess.call(['xdelta3', '-dfs', output+'/AM2R.exe', 'data/AM2R.xdelta', output+'/runner'])
print("\nApplying data patch...")
# apply game.unx patch
@ -131,11 +131,11 @@ if (type == '1'):
rmtree(output+'/lang')
#make game executable
subprocess.call(["chmod", "+x", output+"/AM2R"])
subprocess.call(["chmod", "+x", output+"/runner"])
#create AppImage
print("Creating Appimage...")
copytree("data/AM2R.AppDir", "AM2R.AppDir")
copytree("data/AM2R.AppDir", "AM2R.AppDir", symlinks=True)
subprocess.call(["cp", "-rpT", output , "AM2R.AppDir/usr/bin"])
fd = os.open("/dev/null", os.O_WRONLY)
savefd = os.dup(2)
@ -150,28 +150,7 @@ if (type == '1'):
mkdir(output)
move("AM2R.AppImage", output+"/AM2R.AppImage")
copy("data/files_to_copy/icon.png", output+"/icon.png")
#check if current OS is a fork of Debian
isDebianFork = 0
catOutput = subprocess.check_output(("cat", "/etc/os-release"))
catOutput = str(catOutput)
grep = "ID_LIKE=debian"
isDebianFork = catOutput.find(grep) >= 0
#if not debian, check for ubuntu instead
if(not isDebianFork):
grep = "ID_LIKE=ubuntu"
isDebianFork = catOutput.find(grep) >= 0
#cehck if current OS uses intel as gpu
isIntelGPU = 0
lspciOutput = subprocess.check_output(("lspci"))
lspciOutput = str(catOutput)
grep = "VGA compatible controller: Intel"
isIntelGPU = lspciOutput.find(grep) >= 0
print("\nDo you want to install AM2R systemwide?\n\n[y/n]\n")
inp = getch()
@ -189,9 +168,6 @@ if (type == '1'):
fileContents = template.read()
fileContents = fileContents.replace("[REPLACE]", "/usr/local/bin/am2r")
if( isDebianFork and isIntelGPU):
fileContents = fileContents.replace("Exec=", "Exec=LIBGL_DRI3_DISABLE=1 ")
desktopFile = open(output+"/AM2R.desktop", "w+")
desktopFile.seek(0)
desktopFile.write(fileContents)
@ -207,9 +183,6 @@ if (type == '1'):
fileContents = desktopFile.read()
fileContents = fileContents.replace("[REPLACE]", cwd+"/"+output)
if( isDebianFork and isIntelGPU):
fileContents = fileContents.replace("Exec=", "Exec=LIBGL_DRI3_DISABLE=1 ")
desktopFile.seek(0)
desktopFile.write(fileContents)
#make the desktopFile executable. For some reason, this is not *necessary*, when copying it into /applications.
@ -218,10 +191,6 @@ if (type == '1'):
print("Desktop file has been created!")
if( isDebianFork and isIntelGPU):
print("It has been detected, that you're running a fork of Debian along with an Intel GPU. Please use the provided .desktop File in order to launch the game.")
print("Ignore this message, if you installed AM2R systemwide")
elif (type == '2'):
print("Android selected.\nApplying data patch...")
# To be completely honest I don't know why I made the Android patch work like this.
@ -300,6 +269,3 @@ else:
print("\nThe operation was completed successfully. See you next mission!")