mirror of
https://github.com/pumpitupdev/pumptools.git
synced 2024-12-22 11:15:56 +01:00
111 lines
5.7 KiB
Markdown
111 lines
5.7 KiB
Markdown
# prohook: Pro (1)
|
|
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](../hook.md) including general data setup and a quick start guide.
|
|
|
|
## Versions supported
|
|
All known versions supported if no-dongle patched at this time.
|
|
|
|
## Dependencies
|
|
Make sure to read the different methods of dependency resolution available in the [main hook readme file](../hook.md),
|
|
first.
|
|
|
|
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
|
|
|
|
## Data setup
|
|
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:
|
|
* `game` folder 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)
|
|
* `save ` folder. Contents are generated automatically if empty.
|
|
|
|
## USB thumb drive/profile support
|
|
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.
|
|
|
|
1. Decide which physical USB ports of your machine you are going to use for the player 1 and player 2 sides.
|
|
1. Plug in *one* USB thumb drive into the player 1 port. Now you have to figure out two things:
|
|
1. The device node the drive got assigned to by the kernel, e.g. `sdb`. For example, use the command `fdisk` or
|
|
`lsblk` for this and take a note.
|
|
1. The USB bus and port number the thumb drive is plugged into. `ls -la /sys/block` shows 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/sdd`
|
|
You can identify the bus and port by taking a look at the part after the `usb2` directory here: `2-2`. The format
|
|
is `bus-port` which means that in this example the drive is plugged into port 1 of bus 2. Take a note of that.
|
|
1. Repeat the previous step for the physical port you consider using for player 2.
|
|
1. Create two folders that will serve as mount points for the two player sides in the `/mnt` directory, e.g.
|
|
`mkdir /mnt/0 && mkdir /mnt/1` (or re-using these folders if they already exist from other piu games).
|
|
1. Add the following entry to the `/etc/fstab` file on the machine you want to run the game on:
|
|
```text
|
|
/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/`).
|
|
1. Modify the `hook.conf` file used with `prohook.so` by inserting the device nodes and bus-port combinations into the
|
|
respective fields, for example:
|
|
```text
|
|
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.
|
|
|
|
## Troubleshooting and FAQ
|
|
Make sure to also check the
|
|
[troubleshooting and FAQ section of the main hook readme](../hook.md#troubleshooting-and-faq). This covers various
|
|
things that apply to **all** hooks. The following sub-sections apply mainly to this hook.
|
|
|
|
## Enable log output from the game
|
|
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`.
|
|
|
|
## Window/fullscreen mode
|
|
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.
|
|
|
|
## Switch screen aspect ratio: 4:3 and 16:9
|
|
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.
|
|
|
|
## ITG2 PIUIO kernel module hack
|
|
If you don't have the original kernel module installed and you are running a real PIUIO, you have to hook the
|
|
`ptapi-io-piuio-real.so` lib which implements the piuio api. The "emulation" part which simply calls back to a real
|
|
piuio driver takes care of handling the kernel hack path then. If you run on a real IO without hooking that module,
|
|
you won't get any inputs or outputs.
|
|
|
|
## The game is crashing very early
|
|
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). |