[DEV] M.A.M.E. SDL Plus - v1.32 by F. Lancioni

Qui si parla di M.A.M.E.
Rispondi
Avatar utente
Administrator
Site Admin
Messaggi: 302
Iscritto il: gio feb 25, 2016 6:32 pm
Ha ringraziato: 0
È stato ringraziato: 170 volte

[DEV] M.A.M.E. SDL Plus - v1.32 by F. Lancioni

Messaggio da Administrator »

Immagine
Current version v1.32 (09-04-2021)

### INTRODUZIONE ###
In questo thread si parla del progetto che sto portando avanti nel tempo libero, ovvero un M.A.M.E. basato sulla versione 0.61. Se volete utilizzarlo dovete leggere questo primo post per intero!

Qualcuno chiederà perché 0.61? Inizialmente l'ho scelta perché era la prima versione con il supporto nativo ad artwork esterni ma poi mi sono reso conto che non c'era la possibilità di utilizzare quelli in alta definizione. A quel punto però una parte del lavoro era già stata fatta, motivo per cui successivamente ho scritto personalmente il codice per supportarli. Inoltre la 0.61 è una versione intermedia e matura tra la 0.37b5 e la gettonatissima 0.78 quindi sono andato avanti su questa strada
Il porting non è volutamente appesantito dall'ulteriore layer delle versioni Libretro (quindi niente lr- davanti al nome) ;-)
Il codice è altamente ottimizzato con lookup table create a runtime e quant'altro per ridurre il carico della CPU e funziona su diversi sistemi, ovviamente Raspberry Pi compreso! Per raggiungere l'obbiettivo del multipiattaforma per l'interfaccia col sistema operativo ho scelto la libreria SDL in modo che il codice potesse esser compilato per qualsiasi sistema che la supporti, ovvero Windows, Linux, macOS ecc. Inoltre, rispetto alla versione 0.61 il cui core è la base di partenza, sono stati aggiunti (e all'occorrenza ne verranno aggiunti altri) ulteriori giochi e questo è uno dei motivi, oltre alle nuove funzionalità rispetto alla versione di partenza, per cui si chiama M.A.M.E. SDL Plus :D

Tra le varie modifiche, che man mano vi vado a illustrare, come già accennato c'è la possibilità di utilizzare artwork in alta risoluzione (formato .lyt, più in basso trovate la sezione apposita).

Il porting regge senza problemi 60 frames al secondo "reali" sui Raspberry Pi, a parte nel primo modello. Per RPi v1 arriva però in aiuto il codice che ho scritto dove, implementando un sistema di frameskipping automatico e dinamico, vengono saltati al bisogno alcuni frames rendendo l'esecuzione sui primi Raspberry Pi praticamente full speed per molti giochi (i nostri occhi fortunatamente non si accorgono quando questo accade :lol:).

Per il Raspberry Pi v1 è richiesto (come con tutti i M.A.M.E.) l'overclock, seguite questa guida
Se avete un Raspberry Pi v4 dovete attivare il vsync (leggete più avanti la sezione apposita), negli altri casi vedete voi ;-)
### VIDEO: PC di sviluppo vs Raspbery Pi v1 ###
Ecco un video con un confronto di esecuzione tra il portatile sul quale sviluppo e il Raspberry Pi v1. Guardare per credere ;-)
PC vs Raspberry Pi v1

### VIDEO: M.A.M.E. SDL Plus vs lr-mame2003 ###
In questo video viene mostrata la differenza di prestazioni su Raspberry Pi v1 tra lr-mame2003 e il mio emulatore. Direi che lr-mame2003 non regge il contronto ;-)
Raspberry Pi v1: lr-mame2003 vs M.A.M.E. SDL Plus

###ADAPTIVE DYNAMIC FRAMESKIPPING ###
Ho cambiato totalmente la logica di frameskipping presente nel M.A.M.E. migliorando notevolmente le prestazioni sui Raspberry Pi v1 e v0. Quando l'emulatore viene chiuso vedrete, tra le altre, queste informazioni:

Codice: Seleziona tutto

End game summary:
Main loop frequency: 60.000802 Hz
Nominal FPS: 60.000000
Real FPS: 60.000802

Total play time: 3192.074000 seconds
Real FPS si riferisce ai frames al secondo mostrati a video, se il valore è identico a Nominal FPS le prestazioni saranno in tutto e per tutto uguali a quelle del cabinato originale. Però attenzione, la magia è questa: Main loop frequency si riferisce ai cicli al secondo del loop principale del gioco, ovvero input, sound, video ecc. Se questo valore è prossimo o identico al valore Nominal FPS le prestazioni percepite saranno identiche a quelle del cabinato originale anche se Real FPS non coincide con Nominal FPS.

Quando Main loop frequency e Real FPS coincidono significa che nessun frame è stato saltato durante l'esecuzione
La sincronizzazione audio/video, nonché il mantenimento dei FPS nominali, sfrutta una logica basata sull'hardware audio. Se avete problemi di audio, una configurazione errata, audio non funzionante ecc., i FPS non saranno rispettati e l'emulazione presenterà grossi problemi (ad esempio il superamento del framerate nominale con giochi che verranno eseguiti accelerati)
### SCANLINES ###
Le scanlines servono per imitare l'effetto video dei vecchi schermi CRT e saranno attive di default: è possibile aggiungere il parametro noscanlines da riga di comando per non mostrarle, ad esempio

Codice: Seleziona tutto

./mame_rpi4 -rompath /home/pi/RetroPie/roms/mamesdl dino -noscanlines
Oltre a ciò nel menù del M.A.M.E. è possibile configurare un pulsante per l'opzione Scanlines On/Off per attivare/disattivare le scanlines con il M.A.M.E. in esecuzione premendo semplicemente un pulsante

### FRAMEBUFFER ###
E' possibile impostare la dimensione del framebuffer, ovvero la dimensione della "finestra" in cui verrà mostrato il gioco in modalità fullscreen. Basterà lanciare l'emulatore con i parametri framebuffer-width e framebuffer-height, ad esempio

Codice: Seleziona tutto

./mame_rpi4 -rompath /home/pi/RetroPie/roms/mamesdl dino -framebuffer-width 1280 -framebuffer-height 996
Questo può essere particolarmente utile nel caso in cui avete uno schermo molto grande e volete ridurre la dimensione del gioco. Oppure avete costruito un cabinato arcade ma l'apertura nel legno copre leggermente i bordi dello schermo: utilizzate quindi i parametri appositi e successivamente centrate il framebuffer rispetto all'apertura del cabinato con i comandi posti sul monitor

### HD ARTWORK ###
Gli artwork sono quelle grafiche che circondavano il monitor dei cabinati
Retrostoria: L'origine degli artwork è molto varia. Il supporto inizialmente era solo hardcoded nel driver del gioco, questo fino alla versione 0.60: in parole povere non era possibile aggiungere un, chiamiamolo genericamente, overlay esterno (motivo per cui spesso leggo di persone che chiedono come mai in M.A.M.E. 0.37b5 gli artwork non funzionano seppur presenti nella cartella artwork). La versione 0.61 è stata la prima versione che permetteva l'utilizzo degli artwork in formato .art, artwork che però potevano essere solo in bassa risoluzione. Dalla versione 0.107 invece gli artwork sono supportati (anche in alta risoluzione) in formato .lay
Il codice sorgente è stato modificato quindi con M.A.M.E. SDL Plus sono utilizzabili gli artwork in alta risoluzione nel formato .lyt. Vi basterà inserire l'immagine in formato .png nella cartella artwork con lo stesso nome del romset (per Final Fight quindi sarà ffight.png) e un file di testo, con estensione .lyt e sempre con il nome del romset (per Final Fight quindi sarà ffight.lyt), con il seguente contenuto autoesplicativo (almeno credo):

Codice: Seleziona tutto

Width="4000" Height="3743"
GameAreaWidth="2920" GameAreaHeight="2190"
GameAreaX="540" GameAreaY="822"
Fatto questo basterà lanciare l'emulatore con il parametro hd-artwork, ad esempio

Codice: Seleziona tutto

./mame_rpi4 -rompath /home/pi/RetroPie/roms/mamesdl dino -hd-artwork
Oltre a ciò nel menù del M.A.M.E. è possibile configurare un pulsante per l'opzione HD Artwork On/Off per mostrare/nascondere l'artwork con il M.A.M.E. in esecuzione premendo semplicemente un pulsante.

Qui trovate alcuni artwork di esempio

### VSYNC ###
Ho inserito la possibilità di attivare o meno il vertical sync passando il parametro vsync da riga di comando, ad esempio

Codice: Seleziona tutto

./mame_rpi4 -rompath /home/pi/RetroPie/roms/mamesdl dino -vsync
Di default l'opzione è disattiva perché, a parte qualche caso di tearing, risulta a mio avviso inutile su PC (Windows o Linux) e su Raspberry Pi v0, v1, v2 e v3.

Su Raspberry Pi v4 è invece mandatorio a causa di un bug per migliorare le prestazioni (leggete qui per capire cosa accadeva) mentre su Raspberry Pi v1, da quel che ho visto, è leggermente deleterio
Prestate attenzione al fatto che se il vostro schermo arriva massimo a 50 Hz non andrete mai oltre i 50 frames al secondo
Riporto un esempio di cosa succede su un display 50 Hz (15 secondi circa di runtime giusto per dare l'idea):

Opzione vsync attivata

Codice: Seleziona tutto

End game summary:
Main loop frequency: 60.052562 Hz
Nominal FPS: 60.000000
Real FPS: 49.737188

Total play time: 15.220000 seconds
Opzione vsync disattivata

Codice: Seleziona tutto

End game summary:
Main loop frequency: 60.152317 Hz
Nominal FPS: 60.000000
Real FPS: 60.152317

Total play time: 15.494000 seconds
Come vedete (parametro Real FPS) se il vsync è disattivato pur essendo lo schermo a 50 Hz il gioco viene eseguito al framerate nominale, ovvero 60 FPS. Al contrario con il vsync attivato essendo lo schermo a 50 Hz il gioco viene eseguito a 50 FPS.
Ricapitolando:
se avete un Raspberry Pi v4 dovete attivare il vsync, negli altri casi vedete voi ;-)
### VIDEO FILTER ###
Esiste la possibilità di attivare un filtro lineare, o un filtro anisotropico, che verrà utilizzato nello scaling dell'immagine. Non sono un amante dei filtri video, a mio avviso un buon effetto scanlines come quello presente e attivo di default (disattivabile a vostra discrezione) è più che sufficiente. Per chi però preferisce avere un effetto blur per smussare ulterormente i pixel ho inserito la possibilità di farlo, tramite il parametro linear-filter o tramite il parametro anisotropic-filter, da riga di comando, ad esempio

Codice: Seleziona tutto

./mame_rpi4 -rompath /home/pi/RetroPie/roms/mamesdl dino -linear-filter

Codice: Seleziona tutto

./mame_rpi4 -rompath /home/pi/RetroPie/roms/mamesdl dino -anisotropic-filter
### SET DA UTILIZZARE ###
Non dovete fare altro che copiare le vostre roms versione 0.61+ (usate MAME Set Rebuilder con il file .dat allegato al programma oppure estraetelo direttamente dall'eseguibile come dettagliatamente spiegato qui) nella cartella roms oppure, se state integrando l'emulatore in RetroPie, nella cartella mamesdl come spiegato più avanti

### ROMSET AGGIUNTI / MODIFICATI ###
Rispetto alla versione 0.61 sono presenti diverse modifiche. Sicuramente ad oggi M.A.M.E. SDL Plus è l'unico porting basato su una versione inferiore alla 0.126 che presenta il romset wrally, nome gioco World Rally (set 1), perfettamente funzionante 8-)
  • aligator - Alligator Hunt --> based on v0.68 (GAME_UNEMULATED_PROTECTION)
  • aligatun - Alligator Hunt (unprotected) --> based on v0.68
  • armora - Armor Attack --> based on v0.78
  • armorap - Armor Attack (prototype) --> based on v0.78
  • armorar - Armor Attack (Rock-ola) --> based on v0.78
  • bang - Bang! --> based on v0.68
  • barrier - Barrier --> based on v0.78 (GAME_NO_SOUND)
  • boxingb - Boxing Bugs --> based on v0.78 (GAME_IMPERFECT_COLORS, GAME_NO_SOUND)
  • dadandrn - Kyukyoku Sentai Dadandarn (Japan ver JAA) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • daiskiss - Daisu-Kiss (Ver JAA) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • demon - Demon --> based on v0.78
  • dragoonj - Dragoon Might (Ver JAA) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • fantjour - Fantastic Journey --> based on v0.68 (GAME_NOT_WORKING|GAME_UNEMULATED_PROTECTION)
  • ga2 - Golden Axe - The Revenge of Death Adder (US) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • ga2j - Golden Axe - The Revenge of Death Adder (Japan) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • gaiapols - Gaiapolis (Japan ver JAF) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • gokuparo - Gokujyou Parodius (Ver JAD) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • le2 - Lethal Enforcers II: Gun Fighters (Ver EAA) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • le2u - Lethal Enforcers II: Gun Fighters (Ver UAA) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • maniacsp - Maniac Square (prototype) --> based on v0.68
  • maniacsq - Maniac Square (unprotected) --> based on v0.68
  • megaman2 - Mega Man 2: The Power Fighters (US 960708) --> based on v0.78
  • megamn2a - Mega Man 2: The Power Fighters (Asia 960708) --> based on v0.78 (GAME_NOT_WORKING)
  • metamrph - Metamorphic Force (US ver UAA) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • mtlchmpj - Martial Champion (Japan ver JAA) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • mystwarr - Mystic Warriors (World ver EAA) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • mystwaru - Mystic Warriors (US ver UAA) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • puzldama - Taisen Puzzle-dama (Ver JAA) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • ripoff - Rip Off --> based on v0.78
  • salmndr2 - Salamander 2 (JAA) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • sexyparo - Sexy Parodius (Ver JAA) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • snowbalt - Snow Board Championship (set 2) --> based on v0.68 (GAME_UNEMULATED_PROTECTION)
  • snowboar - Snow Board Championship (set 1) --> based on v0.68 (GAME_UNEMULATED_PROTECTION)
  • solarq - Solar Quest --> based on v0.78
  • spacewar - Space Wars --> based on v0.78
  • starcas - Star Castle (version 3) --> based on v0.78
  • starcas1 - Star Castle (older) --> based on v0.78
  • starcasp - Star Castle (prototype) --> based on v0.78
  • starcase - Star Castle (Mottoeis) --> based on v0.78
  • starhawk - Star Hawk --> based on v0.78 (GAME_NO_SOUND)
  • stellcas - Stellar Castle (Elettronolo) --> based on v0.78
  • speedfrk - Speed Freak --> based on v0.78 (GAME_NO_SOUND)
  • sundance - Sundance --> based on v0.78
  • tailg - Tailgunner --> based on v0.78 (GAME_NO_SOUND)
  • tbyahhoo - Twin Bee Yahhoo! (Ver JAA) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • tkmmpzdm - Tokimeki Memorial Taisen Puzzle-dama (version JAB) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • tokkae - Tokkae Puzzle-dama (Ver JAA) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • viostorm - Violent Storm (Europe ver EAB) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • viostrma - Violent Storm (Asia ver AAC) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • viostrmj - Violent Storm (Japan ver JAC) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • viostrmu - Violent Storm (US ver UAB) --> based on v0.68 (GAME_IMPERFECT_GRAPHICS)
  • warrior - Warrior --> based on v0.78
  • wotw - War of the Worlds --> based on v0.78 (GAME_IMPERFECT_COLORS, GAME_NO_SOUND)
  • wrally - World Rally (set 1) --> based on v0.126 and other versions
  • wrally2 - World Rally 2: Twin Racing --> based on v0.68 (GAME_UNEMULATED_PROTECTION)
  • konamigx - System GX --> based on v0.68
Alcuni giochi sopra riportati sono presenti nella versione 0.61. Se vengono indicati in questa lista è perché banalmente possono essere passati da non funzionanti a funzionanti oppure perché il loro driver, essendo correlato ad altre modifiche del codice, è diverso rispetto alla versione 0.61
Ripeto nuovamente: per ricreare il set corretto utilizzate MAME Set Rebuilder con il file 0.61+.dat che trovate nell'archivio contenente gli eseguibili oppure estraetelo direttamente dall'eseguibile

### CONTROLLI VIA TASTIERA ###
Come di conseuto di default premete Tab per configurare i comandi tramite il menù di configurazione del M.A.M.E. (usate le frecce ed Invio), premete Esc per tornare indietro (o annullare una precedente associazione) e, se il menù non è visualizzato, per chiudere l'emulatore. Sempre come default i tasti 5 e 1 servono rispettivamente per inserire i coins e premere Start per il giocatore 1.
I tasti configurabili sono tutte le lettere dalla A alla Z, tutti le cifre da 0 a 9 (tastierino numerico incluso), i tasti funzione da F1 a F12, i tasti Escape, Backspace, Tab, Invio, Spazio, Canc, le frecce direzionali (tastierino numerico escluso), il blocco maiuscole, Shift, Ctrl, Alt (questi ultimi 3 sia destro che sinistro). Tutti gli altri sono stati volutamente esclusi per non creare confusione con la loro differente posizione a seconda del layout tastiera scelto (italiano, inglese ecc.).
Ad esempio potreste usare W, S, A, D, J, K ed L ragionevolmente associabili in un gioco ad Up, Down, Left, Right, Button 1, Button 2 e Button 3 del giocatore 1

### CONTROLLI VIA JOYPAD ###
Potete collegare fino a 4 joypads conteporaneamente e procedere come di consueto alla loro configurazione premendo Tab su una tastiera collegata ad emulatore avviato (di default usate le frecce ed Invio, premete Esc per tornare indietro (o annullare una precedente associazione) e, se il menù non è visualizzato, per chiudere l'emulatore). Quando configurate i joypads tramite il menù del M.A.M.E. la configurazione si basa sull'ID che il sistema operativo assegna ai joypads. Quindi al primo avvio collegate i joypads, ogni joypad in una determinata porta USB, e li configurate nel menù del M.A.M.E. come detto sopra. Se durante il gioco scollegate e ricollegate un joypad, o più di uno, anche se cambiate porta USB non avrete nessun impatto sul mapping che avete eseguito, ovvero potrete continuare a giocare con gli stessi joypad associati agli stessi giocatori. La magia funziona a runtime, se però chiudete l'emulatore e lo riavviate dovrete avere i joypads collegati nelle stesse porte USB di quando avete fatto la prima configurazione, soprattutto se utilizzate joypads diversi, XBOX 360, PlayStation ecc.

Questo è un surplus, nessun emulatore si preoccupa di questo fatto lasciando all'utente l'incombenza di non scollegare i joypads durante l'esecuzione. Ha richiesto parecchie righe di codice e un sistema molto complicato di gestione dei dati per i joypads disconnessi, forse ho perso tempo, ma a me piace di più così ;-)

### INTEGRAZIONE IN RETROPIE SU RASPBERRY PI ###
Attualmente (RetroPie v4.7.1) la libreria SDL Image installabile con Raspberry Pi OS (ex Raspbian) (il sistema operativo alla base di Raspberry Pi e quindi di RetroPie) è una versione non recentissima che si appoggia a una versione della libreria libpng (v1.6.36) che contiene un bug. Per poter quindi usare gli artwork in alta risoluzione dovrete compilare entrambe queste librerie dal codice sorgente con alcuni semplici passi.
Se avete la libreria installata rimuovetela con questo comando:

Codice: Seleziona tutto

sudo apt remove --purge libsdl2-image-2.0-0 libsdl2-image-dev
Scaricate questi archivi, libpng-libpng16.zip e SDL2_image-2.0.5.zip, dopodichè copiateli in

Codice: Seleziona tutto

/home/pi
e successivamente seguite questi passaggi in sequenza (tra un passaggio e l'altro dovrete attendere un po' di tempo, aspettate che ogni operazione venga completata correttamente):

LIBPNG

Codice: Seleziona tutto

cd /home/pi
unzip libpng-libpng16.zip
cd libpng-libpng16/
./configure
make
sudo make install
sudo ldconfig
SDL IMAGE

Codice: Seleziona tutto

cd /home/pi
unzip SDL2_image-2.0.5.zip
cd SDL2_image-2.0.5/
mkdir build
cd build
../configure
make -j3
sudo make install
sudo ldconfig
Se il vostro Raspberry Pi è connesso a un monitor VGA-DVI, quindi per l'audio utilizzate il jack apposito, nella riga di comando potreste dover aggiungere il parametro headphones, ad esempio:

Codice: Seleziona tutto

./mame_rpi4 -rompath /home/pi/RetroPie/roms/mamesdl dino -headphones
Dipende dalla versione di RetroPie che state utilizzando, controllate il log (chiudete EmulationStation dopo aver avviato un gioco) e verificate quale dispositivo audio viene selezionato durante l'inizializzazione di M.A.M.E. SDL Plus
Passiamo all'integrazione in RetroPie. Scaricate il programma dal link presente in basso ed estraetelo sul vostro computer. Sul Raspberry Pi aprite il file es_systems.cfg con questo comando

Codice: Seleziona tutto

sudo nano /etc/emulationstation/es_systems.cfg
...se utilizzate il file es_systems.cfg personalizzato dovete aggiungere la configurazione in quel file...
e aggiungete in fondo al file questa configurazione

Codice: Seleziona tutto

<system>
    <name>mamesdlplus</name>
    <fullname>MAME SDL Plus</fullname>
    <path>/home/pi/RetroPie/roms/mamesdl</path>
    <extension>.zip .ZIP</extension>
    <command>cd /home/pi/MAMESDLPlus; ./mame_rpi4 -rompath /home/pi/RetroPie/roms/mamesdl %ROM%</command>
    <platform>mamesdlplus</platform>
    <theme>mame</theme>
</system>
Attenzione: nel tag command sostituite mame_rpi4 con il M.A.M.E. compatibile con il vostro Raspberry Pi, ad esempio per un Raspberry Pi v2 scrivete mame_rpi2
Attenzione: Se avete un Raspberry Pi v4 dovete attivare il vsync (leggete la sezione apposita), negli altri casi vedete voi ;-)
Create la cartella mamesdl e la cartella MAMESDLPlus rispettivamente con questi comandi:

Codice: Seleziona tutto

mkdir /home/pi/RetroPie/roms/mamesdl

Codice: Seleziona tutto

mkdir /home/pi/MAMESDLPlus
Copiate l'eseguibile dell'emulatore, nel nostro esempio mame_rpi4, insieme alla cartelle presenti nell'archivio .zip nella cartella MAMESDLPlus.

Riavviate EmulationStation (o il sistema) ;-)

### VERSIONE UBUNTU-BASED ###
Come per il Raspberry Pi dovete avere installata la libreria SDL2 insieme a SDL Image, entrambe in versione 32 bit. A questo punto potete lanciarlo da riga di comando oppure integrarlo in RetroPie come indicato nel prossimo paragrafo

### INTEGRAZIONE IN RETROPIE SU SISTEMI UBUNTU-BASED ###
Effettuate una configurazione simile a quella spiegata per Raspberry Pi tenendo a mente che il percorso del file es_systems.cfg potrebbe variare in base al vostro sistema

### VERSIONE WINDOWS ###
In questo caso vi basterà lanciare da riga di comando l'eseguibile, le librerie necessarie sono contenute nella cartella insieme al M.A.M.E. Per comodità però è consigliabile utilizzare un frontend, uno vale l'altro, se ne volete uno senza fronzoli c'è sempre MAME Simple Frontend che ho personalmente sviluppato
Tenete conto che in MAME Simple Frontend non è supportata da questo porting l'opzione Original resolution window (poco male in realtà su schermi grandi e ad elevata risoluzione odierni) tra le M.A.M.E. display options
Se usate MAME Simple Frontend le cartelle artwork, cfg ecc. devono esser presenti nella stessa cartella che contiene l'eseguibile di MAME Simple Frontend
### CONCLUSIONI ###
Non resta niente da aggiungere, che dire... Buon M.A.M.E. a tutti :D

Version 1.32:
- All Raspberry Pi (v0, v1, v2, v3, v4)
- Ubuntu (20.04, 64 bit, librerie SDL2 32 bit)
- Windows (10, 64 bit, librerie SDL2 32 bit)

Download link is inside this file (you must be logged):
M.A.M.E. SDL Plus - v1.32.txt
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Questi utenti hanno ringraziato l'autore Administrator per il post (totale 6):
GuybrushPadremayiNewtonIonicpaologClaus83
Reputazione: 60%
"A volte sono le persone che nessuno immaginava potessero fare certe cose quelle che fanno cose che nessuno può immaginare" A. Turing
_____________________________________________________________
Aiutiamo il forum con una donazione :-)

Hardware:
Raspberry Pi Model B Rev 2
Raspberry Pi 3 Model B Rev 1.2
Raspberry Pi 4 Model B Rev 1.2

Avatar utente
Guybrush
Site Admin
Messaggi: 2289
Iscritto il: gio feb 25, 2016 6:33 pm
Ha ringraziato: 80 volte
È stato ringraziato: 128 volte

[DEV] M.A.M.E. SDL Plus - by F. Lancioni - Artworks (lyt format)

Messaggio da Guybrush »

Qui trovate gli artwork in formato .lyt creati dagli utenti. Fino a che il "volume" dei files non sarà eccessivo saranno allegati direttamente a questo thread
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
"Dobbiamo costruire computer per le masse, non per le classi" J. Tramiel
_____________________________________________________________
Aiutiamo il forum con una donazione :-)

Hardware:
Raspberry Pi Model B Rev 2 (x2)
Raspberry Pi 3 Model B Rev 1.2

Avatar utente
Administrator
Site Admin
Messaggi: 302
Iscritto il: gio feb 25, 2016 6:32 pm
Ha ringraziato: 0
È stato ringraziato: 170 volte

Re: [DEV] M.A.M.E. 0.61 SDL

Messaggio da Administrator »

Claus83 ha scritto:
dom mag 17, 2020 3:09 am
Ciao Guybrush, correggimi se sbaglio..quindi ci sarà un emulatore lr-mame 2002 ? che si potrà usare ovviamente solo con il rom set 0.61...giusto?
Per caso vuoi fare una prova su una versione beta beta beta del porting? Non ho un Raspberry Pi 4 per compilarlo, semmai lo compilo su un Raspberry Pi 3, vediamo come si comporta (ovviamente sarebbe opportuno compilare con i flags di ottimizzazione corretti piattaforma per piattaforma).

Eventualmente ti dico come provarlo, di sicuro ti servirà una tastiera collegata al Raspberry Pi
"A volte sono le persone che nessuno immaginava potessero fare certe cose quelle che fanno cose che nessuno può immaginare" A. Turing
_____________________________________________________________
Aiutiamo il forum con una donazione :-)

Hardware:
Raspberry Pi Model B Rev 2
Raspberry Pi 3 Model B Rev 1.2
Raspberry Pi 4 Model B Rev 1.2

Avatar utente
Claus83
Messaggi: 317
Iscritto il: sab apr 25, 2020 12:12 am
Ha ringraziato: 129 volte
È stato ringraziato: 23 volte

Re: [DEV] M.A.M.E. 0.61 SDL

Messaggio da Claus83 »

Ciao Administrator! Certamente! Ne sono onorato.. :D l’unica cosa è che posso farlo solo la notte..e mi dovrai dire come fare e ti riporto i feedback...intanto preparo il set con mame set rebuilder...a presto
"Che strano gioco... la sola mossa vincente è quella di non giocare..."

dal film "Wargames - giochi di guerra" (1983)
--------------------------------------------------------------------------------------
Raspberry Pi 4 Model B Rev 1.2

Avatar utente
Administrator
Site Admin
Messaggi: 302
Iscritto il: gio feb 25, 2016 6:32 pm
Ha ringraziato: 0
È stato ringraziato: 170 volte

Re: [DEV] M.A.M.E. 0.61 SDL

Messaggio da Administrator »

Claus83 ha scritto:
dom mag 24, 2020 12:12 pm
Ciao Administrator! Certamente! Ne sono onorato.. :D l’unica cosa è che posso farlo solo la notte..e mi dovrai dire come fare e ti riporto i feedback...intanto preparo il set con mame set rebuilder...a presto
Scarica il programma dal primo post del thread ed estrailo in

Codice: Seleziona tutto

/home/pi
Esci da EmulationStation entra nella cartella dell'emulatore e digita:

Codice: Seleziona tutto

./mame <nome_romset>
quindi ad esempio per Cadillacs and Dinosaurs

Codice: Seleziona tutto

./mame dino
Come di conseuto premi Tab per configurare i comandi (usa le frecce ed Invio), premi Esc per tornare indietro e, se il menù non è visualizzato, per chiudere l'emulatore.

Hai un Raspberry Pi 4, è stato compilato sul 3, vediamo intanto se ti funziona (potrebbe non farlo).

Ricordo che è una versione di sviluppo, non un prodotto finito ;-)
"A volte sono le persone che nessuno immaginava potessero fare certe cose quelle che fanno cose che nessuno può immaginare" A. Turing
_____________________________________________________________
Aiutiamo il forum con una donazione :-)

Hardware:
Raspberry Pi Model B Rev 2
Raspberry Pi 3 Model B Rev 1.2
Raspberry Pi 4 Model B Rev 1.2


Avatar utente
Claus83
Messaggi: 317
Iscritto il: sab apr 25, 2020 12:12 am
Ha ringraziato: 129 volte
È stato ringraziato: 23 volte

Re: [DEV] M.A.M.E. 0.61 SDL

Messaggio da Claus83 »

Ciao Administrator, ho provato proprio la rom dino, si avvia istantaneamente in fullscreen..settato i tasti..solo che ho una mini tastiera cinese ed è scomoda per giocarci.. :D
Impressione mia..sia il video che l'audio non sono molto fluidi paragonandolo alla versione sul mame lr 2003..
Per il resto sono a disposizione.. un saluto
"Che strano gioco... la sola mossa vincente è quella di non giocare..."

dal film "Wargames - giochi di guerra" (1983)
--------------------------------------------------------------------------------------
Raspberry Pi 4 Model B Rev 1.2

Avatar utente
Administrator
Site Admin
Messaggi: 302
Iscritto il: gio feb 25, 2016 6:32 pm
Ha ringraziato: 0
È stato ringraziato: 170 volte

Re: [DEV] M.A.M.E. 0.61 SDL

Messaggio da Administrator »

Claus83 ha scritto:
lun mag 25, 2020 2:27 am
Impressione mia..sia il video che l'audio non sono molto fluidi paragonandolo alla versione sul mame lr 2003..
Ciao, mi aspettavo qualche problema visto che non è stato compilato su un Raspberry Pi 4, però partiamo da dati oggettivi.

Per non andare a sensazioni, quantomeno per la parte video, mi dovresti copiare l'output finale che appare nel momento in cui chiudi l'emulatore. Lì vengono indicate queste informazioni:

Codice: Seleziona tutto

Display Width: ...
Display Height: ...
Game FPS: ...
Frames displayed per second: ... (... frames)
Frames skipped per second: ... (... frames)
Last frameskipping value: ... (Higher is better)

M.A.M.E. 0.61 SDL - Beta1
Developed by Francesco Lancioni
RetroPie Italia Forum
www.retropie-italia.it
Se Frames displayed per second è pari, o leggermente superiore, al valore Game FPS la parte video è per forza di cose fluida. Infatti quel valore viene calcolato facendo esattamente il rapporto tra i frames mostrati a video e il tempo di esecuzione durante il quale sono stati disegnati. Non si scappa, se indica circa 60 frames al secondo sono 60 frames al secondo.

Mi aspetto che su un Raspberry Pi 4 il valore Frames skipped per second sia pari a zero visto che lo è sul Raspberry Pi 3. Ad ogni modo però va considerato che i flags passati al compilatore sono per l'hardware del Raspberry Pi 3, per fare un'ulteriore prova potrei provare a compilare il codice senza ottimizzazioni da parte del compilatore.

Intanto fammi sapere
"A volte sono le persone che nessuno immaginava potessero fare certe cose quelle che fanno cose che nessuno può immaginare" A. Turing
_____________________________________________________________
Aiutiamo il forum con una donazione :-)

Hardware:
Raspberry Pi Model B Rev 2
Raspberry Pi 3 Model B Rev 1.2
Raspberry Pi 4 Model B Rev 1.2

Avatar utente
Claus83
Messaggi: 317
Iscritto il: sab apr 25, 2020 12:12 am
Ha ringraziato: 129 volte
È stato ringraziato: 23 volte

Re: [DEV] M.A.M.E. 0.61 SDL

Messaggio da Claus83 »

Buongiorno, eccolo...
Immagine
Ultima modifica di Claus83 il gio giu 11, 2020 1:15 am, modificato 1 volta in totale.
"Che strano gioco... la sola mossa vincente è quella di non giocare..."

dal film "Wargames - giochi di guerra" (1983)
--------------------------------------------------------------------------------------
Raspberry Pi 4 Model B Rev 1.2

Avatar utente
Guybrush
Site Admin
Messaggi: 2289
Iscritto il: gio feb 25, 2016 6:33 pm
Ha ringraziato: 80 volte
È stato ringraziato: 128 volte

Re: [DEV] M.A.M.E. 0.61 SDL

Messaggio da Guybrush »

È interessante che ti abbia saltato alcuni frames, visto che anche sul mio Raspberry Pi 3, come diceva Administrator, non succede.

Ho qualche minuto, mi faccio girare le opzioni e te lo ricompilo io senza flags di ottimizzazione per il Pi 3
"Dobbiamo costruire computer per le masse, non per le classi" J. Tramiel
_____________________________________________________________
Aiutiamo il forum con una donazione :-)

Hardware:
Raspberry Pi Model B Rev 2 (x2)
Raspberry Pi 3 Model B Rev 1.2

Avatar utente
Claus83
Messaggi: 317
Iscritto il: sab apr 25, 2020 12:12 am
Ha ringraziato: 129 volte
È stato ringraziato: 23 volte

Re: [DEV] M.A.M.E. 0.61 SDL

Messaggio da Claus83 »

Una domanda...SDL nel nome dell'emulatore sta per simple directmedia layer? magari non c’entra nulla..ma ho notato che nel menù di setup di retropie c'è installato solo la versione 2... ho re installato da source...poi ho riavviato e fatto ripartire sempre dino...ripeto magari non c’entra nulla..semplice curiosità...ma ho visto che i valori sono diversi..
Immagine
Ultima modifica di Claus83 il gio giu 11, 2020 1:17 am, modificato 1 volta in totale.
"Che strano gioco... la sola mossa vincente è quella di non giocare..."

dal film "Wargames - giochi di guerra" (1983)
--------------------------------------------------------------------------------------
Raspberry Pi 4 Model B Rev 1.2

Rispondi