This readme covers any matters that are relevant for this hook, only. Anything that applies to all hooks is covered in a main hook readme file including general data setup and a quick start guide.
All known versions supported if no-dongle patched at this time.
Make sure to read the different methods of dependency resolution available in the main hook readme file, first.
Note: Game is 32-bit, so you need to install the 32-bit versions of the dependencies!
The following direct dependencies (cmd: readelf -d piu) are required:
- libXtst.so.6
- libXrandr.so.2
- libGL.so.1
- libGLU.so.1
- libdl.so.2
- libavformat.so.51
- libavcodec.so.51
- libavutil.so.49
- libusb-0.1.so.4
- libpthread.so.0
- librt.so.1
- libstdc++.so.5
- libm.so.6
- libgcc_s.so.1
- libc.so.6
- libX11.so.6
As for method 1, when using Ubuntu, the dependencies can be found in the following packages:
- libc-bin (or gcc-multilib on a 64-bit platform)
- libx11-6
- libusb-0.1-4
- libasound2
- ffmpeg
Further indirect dependencies are needed but should be taken care of automatically when using a package manager to install the direct dependencies.
A clean set of data won't work here. You need the decrypted data zip files and a patched executable that uses plain zip files instead of encrypted ones.
All access to files and folders are detoured to two folders which makes setting up everything easier.
You need two main folders:
gamefolder with the following contents- All data zip files (e.g.
data0.zip,data1.zip, ...,encore.zip) - An empty file
FX(if you run this on a FX or other cabinet with a widescreen monitor)
- All data zip files (e.g.
savefolder. Contents are generated automatically if empty.
Without any patches, the game's way of handling USB thumb drives is incompatible to the kernels of the last years. This is fixed by prohook but requires some additional configuration effort.
- Decide which physical USB ports of your machine you are going to use for the player 1 and player 2 sides.
- Plug in one USB thumb drive into the player 1 port. Now you have to figure out two things:
- The device node the drive got assigned to by the kernel, e.g.
sdb. For example, use the commandfdiskorlsblkfor this and take a note. - The USB bus and port number the thumb drive is plugged into.
ls -la /sys/blockshows you all currently available block devices, including USB thumb drives. Find the thumb drive you plugged into the physical port and check the path the symlink gets resolved to. For example:sdc -> ../devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0/host7/target7:0:0/7:0:0:0/block/sddYou can identify the bus and port by taking a look at the part after theusb2directory here:2-2. The format isbus-portwhich means that in this example the drive is plugged into port 1 of bus 2. Take a note of that.
- The device node the drive got assigned to by the kernel, e.g.
- Repeat the previous step for the physical port you consider using for player 2.
- Create two folders that will serve as mount points for the two player sides in the
/mntdirectory, e.g.mkdir /mnt/0 && mkdir /mnt/1(or re-using these folders if they already exist from other piu games). - Add the following entry to the
/etc/fstabfile on the machine you want to run the game on:
/dev/sdb1 /mnt/0 auto noauto,owner 0 0
/dev/sdc1 /mnt/1 auto noauto,owner 0 0
Note: This does not create a fixed assignment of /dev/sdb1 or /dev/sdc1 to a specific physical USB port. It just
ensures that any block device that gets enumerated as /dev/sdb will get its first partition mounted to /mnt/0
(same concept applies to /dev/sdc1/).
- Modify the
hook.conffile used withprohook.soby inserting the device nodes and bus-port combinations into the respective fields, for example:
patch.usb_profile.p1.bus_port=2-1
patch.usb_profile.p2.bus_port=2-2
# Note: No partitions, e.g. sdb1, here
patch.usb_profile.dev_nodes=sdb,sdc
Once you plug-in a USB thumb drive to the configured ports, it should show up on the correct player side.
Make sure to also check the troubleshooting and FAQ section of the main hook readme. This covers various things that apply to all hooks. The following sub-sections apply mainly to this hook.
If you run into any issues, consider enabling the game's log output to console which might help you figuring out
what's going on. This can be done by editing the data.Static.ini file in the data0.zip file. Go to the section
[Options-arcade] and change the property ShowLogOutput=0 to ShowLogOutput=1.
The hook does not have extra settings for changing window/fullscreen modes. Modify the corresponding Static.ini file
and set the value of the key Windowed accordingly, e.g. Windowed=1 for window mode.
The game supports 4:3 and 16:9 aspect ratios. To enable 16:9 mode, ensure that an empty file called FX is placed
next to the data zip files inside the game directory. For 4:3 mode, simply delete the FX file if it exists.
If you don't have the original kernel module installed and you are running a real PIUIO, pumptools/the hook got you
covered. It takes care of emulating the kernel module transparently. Therefore, you can run the game with the hook
without requiring the piuio emulation layer, e.g. using ptapi-io-piuio-real.
The log might show something about "ptrace failing" and not being able to "load libformat". However, the actual problem is probably not having all the necessary IO hardware connected (or emulation enabled). The game doesn't have any proper error handling if either the PIUIO or the button IO is missing/not connected (or not emulated).