Manuale d’uso



Come installare FEEL

FEEL è un frontend che funziona come interprete di linea di comando.
L’esecuzione degli emulatori viene eseguito componendo comandi tipo DOS, aggiungendo i dovuti parametri per fare funzionare i giochi o altro. In pratica, selezionando ed avviando un gioco nella lista dei giochi di FEEL, è come se digitassimo in una shell di dos (oppure nella casella “Esegui” della barra di Windows) un comando come “mame nomegioco”.

La sua installazione è molto semplice.
Per prima cosa è necessario verificare di avere installati (a seconda della versione di Windows e al livello di aggiornamenti automatici installati, potrebbero essere già presenti) i prerequisiti di sistema:

– Windows XP o più recenti
– scheda audio funzionante
– Windows Media Player
– .NET framework 3.5: http://www.microsoft.com/en-us/download/details.aspx?id=21
– XNA framework 3.1: http://www.microsoft.com/en-us/download/details.aspx?id=15163

NOTA: sono utilizzabili anche le versioni italiane dei 2 pacchetti

Dal pacchetto di installazione feel.zip si estrae la cartella Feel e tutto il suo contenuto, e si copia nel percorso preferito (nell es.: E:\Feel), ottenendo una struttura come la seguente:

Install - 1


Configurazione rapida MAME

Completata l’installazione, è necessario configurare FEEL per l’avvio degli emulatori presenti sul PC. In questo esempio viene spiegato come settare MAME.

Passi da effettuare:

1) All’interno della cartella Feel è presente una sottocartella config. All’interno di questa, una sottocartella di nome arcade, e ancora al di sotto una di nome mame, contenente il file mame.ini.

2_config_1

 

 

 

 

 

 

 

 

Questo è il file che è necessario modificare per poter usare l’emulatore.

Le righe che si dovranno modificare e/o verificare per poter usare correttamente MAME tramite FEEL:

1) Impostare la cartella dove risiedono le rom di mame:

rom_path                               C:\Programmi\mame\roms

1) Impostare la modalità di generazione della lista “All games” a 1 (1 = mame_list_xml) per compatibilità mame (tutti gli altri emulatori si usano con list_type = 0):

list_type                               1

2) Impostare la cartella dell’eseguibile:

emulator_path                           C:\Programmi\mame

3) Impostare la linea di comando per eseguirlo:

emulator_commandline                   C:\Programmi\mame\mame.exe

4) Impostare la cartella contenente gli snapshot:

snapshot_path                           C:\Programmi\mame\snap

Consiglio: verificare la correttezza dei 3 valori da una finestra “Prompt dei comandi”, o dall’opzione “Avvia..” di Windows (eseguibile tramite Win+R)

Una volta impostate queste opzioni, il frontend dovrebbe essere totalmente configurato per l’utilizzo con MAME. Salvare il file mame.ini, ed avviare FEEL. Premere il pulsante menu (default tasto Alt), con le frecce selezionare “Games List Options“, confermare con il pulsante action (default tasto 1), e selezionare quindi la voce “Generate List“. Il frontend esaminerà le rom a disposizione, le confronterà con la versione di MAME indicata nella riga emulator_commandline, e genererà la lista dei giochi.

Sarà possibile scorrere questa lista con le frecce, e lanciare i giochi premendo il pulsante action.

Se il funzionamento è corretto, è consigliabile disabilitare l’opzione test mode, per poter avviare il frontend a tutto schermo:

test_mode                           0


Configurazione avanzata di FEEL

La struttura della configurazione di Feel, basata su file di testo (estensione .ini) è organizzata in una maniera molto semplice ed intuitiva per l’utente se utilizzata con impostazioni default, ma contemporaneamente molto potente ed evoluta ed in grado di gestire qualsiasi livello di personalizzazione conoscendo la sua modalità di funzionamento (poche regole base).

L’alberatura di esempio fornita è la seguente:

In dettaglio, i livelli di configurazione sono 5:

Livello *master* Livello *platform* Livello *emulator* Livello *gamelist* Livello *game* (opzionale)
config
[platform 1]
[emulator 1]
All games – nomeemu-0.ini
rom1.ini
rom2.ini
[lista 1] – nomeemu-1.ini
[lista 2] – nomeemu-2.ini
[emulator 2]
All games
[platform 2]
[emulator 3]
[emulator 4]
[platform 3]
[emulator 5]
[emulator 6]

In ogni directory dello schema compare un file .ini principale con lo stesso nome della cartella che lo contiene (es.: feel.ini, arcade.ini, mame.ini), e nelle directory di livello emulatore anche i file .ini di livello gamelist (es.: mame-0.ini, mame-1.ini, …), ovvero i file descrittori delle liste di giochi (All games, Favorites, …).

Le 3 regole fondamentali della configurazione di FEEL sono:

  • tutti i parametri presenti nella configurazione (vedi: “Lista completa parametri) possono essere settati AD OGNI LIVELLO, e anche su più livelli contemporaneamente
  • in assenza del parametro in un determinato livello, viene utilizzato il livello immediatamente superiore, a risalire fino al primo
  • in presenza dello stesso parametro su livelli differenti, “vince” il valore con peso maggiore (i.e.: posto ad un livello più basso)

Sfruttando queste 3 regole è possibile definire in maniera rapida e contemporaneamente molto precisa come il frontend deve lavorare su una determinata platform, emulatore o addirittura su un singolo gioco.


Livelli di default parametri

In realtà, per essere più precisi, c’è un livello dove una buona parte dei parametri trova posizionamento “naturale” (livello default).

Ad esempio, tutti i parametri di impostazione dei tasti di controllo di FEEL (qui riportati alcuni)…

action_key                             1

menu_key                               LAlt

menu_ok                                 LCtrl

menu_cancel                             2

previous_game                           Up

next_game                               Down

previous_letter_game                   Left

next_letter_game                      Right

previous_page                           R

next_page                               F

random_game                             LCtrl

find_game                               LAlt

… “hanno senso” a livello *master* (rimangono identici durante l’uso dell’intero frontend).

Altri parametri hanno senso (salvo casi molto particolari) solo a livello emulatore.

Qui sotto riportato ad esempio il settaggio dei parametri di lancio di un emulatore:

#———————————————————————#

# run emulator

#emulator_commandline   E:\Program Files\Feel\clew.exe

emulator_arguments     -run_mame “[emulator_path]\mame.exe [rom_name] -offscreen_reload”


Parametri speciali

Esiste poi la categoria dei parametri speciali (gestiti internamente da FEEL), che riguardano la gestione delle liste:

[feel.ini]

platform_list                           arcade, console, computer, utilities

current_platform                       arcade [GRUPPO.ini]

platform_title                         Arcade

emulator_list                           mame, daphne, vpinball

[EMULATORE.ini]

gamelist_list                           mame-0, mame-1, mame-2

current_gamelist                       mame-2

[LISTA ROM.ini]

current_game                           1

Questi parametri vengono mantenuti aggiornati da FEEL a seconda delle configurazioni trovate nell’alberatura di cartelle sotto config, e non devono quindi essere modificati (è comunque possibile definire un’ordine particolare modificando manualmente i parametri …_list).


Tutti gli altri parametri

Gli altri parametri (vedi: “Lista completa parametri”) possono essere posizionati a piacimento nei vari livelli dei percorsi di configurazione, di modo da rendere disponibile l’impostazione su tutto il frontend, su un singolo gruppo di emulatori, su un singolo emulatore, o addirittura su un singolo gioco (vedi: “Configurazione specifica rom con lista file .ini”).

Un esempio di parametro facilmente posizionabile a tutti i livelli: il parametro

current_layout                          sheet

che definisce il layout di visualizzazione (vedi: “Configurazione layout di visualizzazione”), può avere senso impostato:

  • a livello master (quindi il layout sarà uguale su tutto il frontend)
  • a livello platform (quindi ci sarà un layout specifico per ogni platform, es.: uno per “Arcade”, uno per “Console”, etc.)
  • a livello di singolo emulatore (es.: un layout specifico per MAME, uno per Daphne, etc.)

Sono naturalmente possibili anche soluzioni “ibride”, come ad esempio impostare un layout specifico per Mame, ed un layout generico per tutti gli altri emulatori: in questo caso si dovrà semplicemente inserire il parametro current_layout contemporaneamente in feel.ini e in mame.ini.

Questa soluzione è particolarmente adatta a gestire il parametro di re-mapping tastiera (vedi: “Mapping tasti”) input_mapping:

# ePSXe show window with LAlt or Ctrl+Space

input_mapping                           LAlt::L, Space::V

che può essere impostato a un valore di default per la maggioranza degli emulatori (solitamente nessun mapping, espresso da stringa vuota), e specifici su sistemi più particolari (ad esempio, nel caso di emulatori di computer, che spesso richiedevano la digitazione di tasti particolari per controllare il gioco, normalmente non presenti sulla plancia di un cabinato).


Parole chiave alias (keywords)

Nell’impostazione dei parametri (in particolare quelli relativi all’esecuzione di uno specifico emulatore), vi sono alcune parole chiave da utilizzare per accedere ai dati del frontend (gioco selezionato, percorsi, etc.).

Qui riportata la lista completa con le relative descrizioni:

[rom_path] = percorso della rom attuale (definito dal parametro rom_path)[rom_name] = nome della rom attualmente selezionata (gestito da FEEL)[rom_extension] = estensione della rom attuale (definito dal parametro rom_extension)[full_path]     = [rom_path]\[rom_name].[rom_extension][full_dos_path] = [full_path] in formato DOS (8.3)[emulator_path] = percorso completo dell’emulatore attuale (definito dal parametro emulator_path)

Queste keyword possono essere utilizzate per comporre la linea di comando di esecuzione, come nell’esempio qui riportato:

rom_path                         E:\daphne\gamesconfig

rom_extension                   txt…

emulator_commandline             E:\daphne\daphne.exe

emulator_arguments               [rom_name] vldp -framefile “[full_path]” -fullscreen -nohwaccel -noserversend

Con questa impostazione, avviando “Dragon’s Lair” su Daphne, verrà eseguito il comando:

E:\daphne\daphne.exe lair vldp –framefile “E:\daphne\gamesconfig\lair.txt” –fullscreen –nohwaccel –noserversend


Corrispondenza nome giochi -> nome file rom

A seconda dell’emulatore utilizzato, i nomi dei giochi possono:

  • 1. coincidere con il nome del relativo file .rom (es.: Super Mario Land [EU].zip => “Super Mario Land [EU]”)Impostando il parametro

    list_type                               0

    i nomi dei giochi per default vengono estratti dal nome delle rom. 

  • 2a. non coincidere con il nome del relativo file .rom (es. alibaba.zip => “Ali Baba and 40 Thieves”): caso M.A.M.E.Nel caso di M.A.M.E., impostando il parametro

    list_type                               1

    i nomi completi vengono estratti dai dati xml generati da mame.exe, senza nessun file aggiuntivo. 

  • 2b. non coincidere con il nome del relativo file .rom (es. lair.txt => “Dragon’s Lair european version”): caso altri emulatoriNel caso di altri emulatori (es. Daphne) che richiedono un nome preciso di rom, ma questo non sia adatto alla visualizzazione nelle liste di FEEL, è necessario impostare i parametri

    list_type                               0
    nms_file                               [nome file .nms]

    Il file testuale .nms (es. daphne.nms) dovrà essere posizionato nel percorso dei file rom, ed avere la seguente struttura:

    [nome gioco] | [nome rom senza estensione]

    Esempio di file .nms:

    Dragon’s Lair european version|lair
    Dragon’s Lair II|lair2
    Space Ace|ace…

    in questo modo nelle liste del frontend verrà visualizzato sempre il nome esteso del gioco (es. “Dragon’s Lair european version”), ma la chiamata all’emulatore verrà comunque effettuata con il nome della rom che l’emulatore si aspetta (nell’es. “lair”).


Opzioni re-mapping comandi tastiera

Nel caso (tipico di un arcade-cab casalingo) di utilizzo di una plancia arcade come unico controllo per il frontend e per un numero elevato di emulatori installati, può essere molto utile effettuare il re-mapping di tastiera (riassegnazione di un tasto ad un altro tasto).

Utilizzando il parametro

 input_mapping

 è possibile far sì che i comandi di tastiera inviati a uno specifico emulatore vengano “filtrati” e sostituiti da altri comandi, in maniera trasparente per l’emulatore, che riceverà solo la pressione del tasto filtrato.

Il formato utilizzato è il seguente

[sequenza tasti premuta] :: [sequenza sostitutiva]

Esempio di configurazione:

input_mapping                           LAlt::L, Space::V

Queste impostazioni sono utili per:

  • ridefinire una specifica sequenza di tastiera (es.: ESC) per chiudere un emulatore che accetta solo un comando specifico (es.: LAlt-F4)
  • annullare la pressione involontaria di tasti di comando dell’emulatore (es.: LAlt, tasto 2 del Player1 su MAME, su alcuni emulatori apre un menu bloccando la finestra, etc.)
  • sostituire comandi non necessari con altri necessari su uno specifico emulatore (es.: su emulatori di computer, è spesso necessario premere tasti come F1, F3, Y/N, etc., che normalmente non sono gestiti dalla plancia)

 E’ inoltre possibile, tramite l’operatore “+”, far sì che la pressione di un singolo tasto produca in output più di un tasto.

Esempio:

input_mapping                           Esc::Lalt+F4

 Questa possibilità è particolarmente utile nell’uso di giochi/applicazioni Windows, che si chiudono normalmente con Alt+F4: rimappando il tasto Esc con la sequenza Alt+F4 essi possono venire chiusi con la medesima modalità di MAME, rendendo omogeneo l’utilizzo della plancia comandi anche per questi ultimi.


Lista dei comandi di tastiera per re-mapping

# A … Z
# 0 … 9
# LAlt           = Left Alt
# LControl, LCtrl = Left Control
# RControl, RCtrl = Right Control
# LWin           = Left Windows
# RWin           = Right Windows
# Tab             = Tab key
# Space           = Spacebar
# Backspace       = Backspace
# Enter, Return   = Enter
# Pause           = Pause
# Escape, Esc     = Esc
# PageUp         = Page Up
# PageDown       = Page Down
# End             = End
# Home           = Home
# Insert, Ins     = Ins
# Delete, Del     = Del
# NumPad0 … 9   = NumPad keys
# Multiply       = *
# Add             = +
# Subtract       = –
# Divide         = /
# F1..F12         = Function keys
# None           = No key (useful to totally disable a keypress)

 NOTA: il remapping dei tasti si basa su DirectInput (standard consolidato per i giochi su piattaforma Windows), e NON FUNZIONA sugli emulatori che leggono la tastiera in modalità “RAW”.

Statisticamente si tratta di pochissimi casi: il più eclatante è MAME nella sua versione standard.

Quest’ultimo può comunque essere reso compatibile tramite una piccola modifica al codice e successiva ricompilazione dell’eseguibile. In particolare è sufficiente attivare l’opzione FORCE_DIRECTINPUT nel seguente file sorgente:

http://mamedev.org/source/src/osd/windows/input.c.html


Configurazione specifica rom con lista file .ini

Ulteriore grado di configurazione è la modalità con lista file .ini (uno per ogni gioco), che permette di personalizzare i parametri di configurazione a livello di singola rom/gioco.

Impostando a livello emulatore i parametri

list_type                               2
rom_extension                           ini
rom_path                               [percorso della directory contenente i file .ini]

(i.e.: list_type 2 = lista di file .ini), e rimuovendo i settaggi di lancio dell’emulatore, è possibile settare a livello gioco parametri specifici di esecuzione, quali la riga di comando, step preliminari e successivi (montaggio/smontaggio immagini dvd etc.), remapping tasti:

pre_emulator_app_commandline
pre_emulator_app_arguments
emulator_commandline                 [linea di comando dell’exe del gioco]
emulator_arguments                   [eventuali parametri]
emulator_nodosbox                     1
post_emulator_app_commandline
post_emulator_app_arguments
input_mapping                         [tasti da rimappare]