987123879113 / pcsx2

PCSX2 - The Playstation 2 Emulator
https://pcsx2.net
GNU General Public License v3.0
29 stars 12 forks source link

[BUG]: Thrill Drive 3 freezes at black screen on linux after network screen. #2

Closed HeroponRikiBestest closed 2 years ago

HeroponRikiBestest commented 2 years ago

Describe the Bug

Self explanatory. On linux mint 20.2, the game freezes with a black screen after the network screen.

Reproduction Steps

Try and run the game.

Expected Behavior

I expected the game to progress past the network screen to the rest of the game.

PCSX2 Revision

PCSX2 1.7.0-20220322101755- compiled on Mar 25 2022

Operating System

Linux (64bit) - Specify Distro Below

If Linux - Specify Distro

Linux Mint 20.2

CPU

AMD Ryzen 7 PRO 4750U with Radeon Graphics

GPU

Integrated graphics, see above

GS Settings

No response

Emulation Settings

No response

GS Window Screenshots

image image

Logs & Dumps

emuLog.txt

987123879113 commented 2 years ago

It's addressed in the README.

Enable game fixes to fix a hang during boot: Settings > General Settings > check Enable manual game fixes and OPH Flag hack.

It's an issue with PCSX2, not with the P2IO emulation.

HeroponRikiBestest commented 2 years ago

Crap, I could have sworn I already enabled that, I'm so sorry. Before I close this issue, I want to avoid opening another issue for something probably equally as obvious. At the moment, there's no way to bind controls for Python 2 in Linux at the moment, right?

987123879113 commented 2 years ago

Correct. I don't spend a ton of time in Linux so it hasn't been a priority to learn evdev in order to work out an input solution, so the only two methods available for Linux right now are noop (does nothing useful) and passthrough, which allows you to passthrough all commands to a real Python 2 P2IO from within PCSX2 to handle all I/O and security features.

I'm willing to accept PRs if someone does work on improving Linux support (directed toward anyone who may read this).

Alternatively, if you are comfortable with some Arduino tinkering, you can make your own barebones Arduino-based P2IO. The code is just a barebones implementation so you'd need to add your own code to detect and return inputs in p2io_task.cpp. Then you could use the passthrough device. https://github.com/987123879113/lufa_p2io

987123879113 commented 2 years ago

Come to think of it, another blocker for the Linux input implementation is that I initially wrote the input configuration GUI on Windows using Win32 API stuff since I based the code on other configuration dialogs in the USB folder. It'd need to be rewritten in I guess Wx and then in the near-ish future again in Qt since PCSX2 development seems to be moving that way. When the USB configuration system gets implemented in Qt in upstream I plan on porting over the P2IO stuff to Qt as well which should solve that issue hopefully.

HeroponRikiBestest commented 2 years ago

Awesome, thank you. Again, so sorry for bothering you.

987123879113 commented 2 years ago

@HeroponRikiBestest re: Linux support It's still a work in progress but the Qt build has full support for Linux including key configurations. The way the Qt build works is completely different from before (you now have to make separate .py2 Python 2 game list entry files for each game instead of putting everything into Python2.ini, which is no longer used for Qt build) but everything is a lot more integrated into the Qt build. It's not officially available yet but if you want to pull the master_qt branch and build it yourself to check it out, you can find it here: https://github.com/987123879113/pcsx2/tree/master_qt

The .py2 file looks like this:

[Game] ; Don't change the section for new format
Name=Game Title
HddIdPath=HDD_ID.bin
IlinkIdPath=ILINK_ID.BIN
HddImagePath=/path/to/hdd.img
Region=NTSC-J
InputType=3
DongleBlackPath=/path/to/black_dongle.bin
DongleWhitePath=/path/to/white_dongle.bin
; UniqueId=123098 ; Make this a unique number if you want to set a fixed ID to ensure the same gamesettings file is used every time the game is added to the game list
; GameSerial=KNAC00001 ; You can leave this as-is if you want
; Player1CardFile=card_1.txt ; Optional
; Player2CardFile=card_2.txt ; Optional
; PatchFile=file.pnach ; Optional

; DipSwitch=0000 ; Old style format
; DIPSW1=true ; New style format, optional, defaults to false
; DIPSW2=true ; New style format, optional, defaults to false
; DIPSW3=true ; New style format, optional, defaults to false
; DIPSW4=true ; New style format, optional, defaults to false

; Force31kHz=false ; Optional, defaults to false

Right click the game list and select "Add Search Directory" and then point it at the directory with the .py2 file(s) and it'll add the entries to your game list. Right click the game entry > Properties > configure the Python 2-specific settings under the "Python 2" settings tab. For controls, go to Settings > Controllers > Python 2 and configure everything from there.

I think you can probably pull the latest artifacts on the Actions tab (https://github.com/987123879113/pcsx2/actions?query=branch%3Amaster_qt) and selecting the latest Linux build for the master_qt branch, if you want to just use an AppImage. I've only been testing using local builds so I have no idea if the AppImage is entirely functional or not so ymmv.