# Bemani-On-Linux

Tutorial per eseguire titoli Bemani su linux, con possibili workaround a problemi noti


# Beatmania IIDX Resident
![Resident](https://git.mercurio.moe/Mercury/Bemani-On-Linux/raw/branch/main/Assets/resident.png)
La seguente guida è stata testata con `wine staging 9.9` su Fedora 39 con kernel `6.8.7-201.fsync`. Potrebbero quindi presentarsi problemi con versioni di wine o del kernel differenti.

## Resident: Informazioni
Il gioco si avvia senza troppi problemi, ogni tanto il monitor check potrebbe fallire o andare leggermente sotto al minimo necessario ma solitamente basta un riavvio per risolvere il problema. Il vero problema grande è la dimensione del buffer alsa che porta problemi di audio a scatti. 

## Resident: Guida

Per procedere con l'installazione è necessario avere un dump del gioco, spice2x e un server a cui collegarsi. in alternativa, l'eseguibile linux di asphyxia core. Come prima cosa dobbiamo patchare la nostra DLL come se fossimo su windows. L'importante però è ATTIVARE **WASAPI Shared Mode (with 44100Hz)**; è inoltre consigliata la creazione di un prefisso wine dedicato per i giochi per evitare problemi o conflitti con altre applicazioni eseguite nel prefisso default.
Quindi, ora, scarichiamo le librerie necessarie per il setup:
- [dsdmo.dll](https://git.mercurio.moe/Mercury/Bemani-On-Linux/raw/branch/main/Assets/dsdmo.dll)
- [dsdmo.reg setup](https://git.mercurio.moe/Mercury/Bemani-On-Linux/raw/branch/main/Assets/dsdmo.reg)

Ora, spostiamo e installiamo la dll e la chiave di registro.
```sh
cp dsdmo.dll percorso/al/tuo/prefisso/drive_c/windows/system32
WINEPREFIX=/percorso/al/tuo/prefisso wine regedit dsdmo.reg
```

Infine, prima di spostarci nella gui di configurazione di spice, attiviamo questi override da terminale:

```sh
WINEPREFIX=/percorso/al/tuo/prefisso winetricks sound=alsa d3dcompiler_47 d3dcompiler_47 d3dcompiler_43 d3dcompiler_46
WINEPREFIX=/percorso/al/tuo/prefisso winecfg
```

In wineCFG dovremmo poi attivare un override nella sezione "libraries" per dsdmo, e lo dovremo mettere come "builtin"
![winecfg](https://git.mercurio.moe/Mercury/Bemani-On-Linux/raw/branch/main/Assets/image.png)

Infine, rechiamoci con un terminale nella nostra cartella contents e avviamo spicecfg con il nostro wineprefix:

```sh
WINEPREFIX=/percorso/al/tuo/prefisso wine spicecfg.exe
```

se tutto è andato a buon fine, nell'angolo di spice ci sarà il nostro datecode. da li basterà poi configurare spice normalmente. Infine, per avviare il gioco basterà fare l'ultimo comando sopra citato, sostituendo "spicecfg.exe" con "spice64.exe.

Per mitigare il problema dell'audio modificare il file .asoundrc e cambiare il dispositivo di default (hw:0,0), aggiungendo queste informazioni qui:

```sh
pcm.!default {
    type hw
    pcm "hw:0,0"
    rate 44100
    period_time 0
    buffer_size 134217728  
    period_size 134217728
    
}
```