23 marzo 2021

Compilare mame ed applicare patch

 Compilare mame per utilizzarlo sui nostri cabinati è una operazione che può risultare inutile (troviamo quasi sempre la versione che ci interessa) ma vuoi per curiosità, vuoi perché vogliamo personalizzarlo, potrebbe venirci voglia di compilarcelo da soli.

Per questo ci viene in aiuto la guida presente sul sito mamedev, grazie alla quale possiamo fare tutto, predisporre l'ambiente per la compilazione e conoscere più o meno tutti i comandi da utilizzare.

Col tempo ho raccolto informazioni quì e là per cercare di ottimizzare, non essendo io un programmatore, quando leggo codice vedo praticamente una lingua aliena, vorrei quindi condividere alcuni consigli, messi insieme leggendo un po' dappertutto.

Le prime difficoltà compaiono quando si vuole applicare una patch, fino a poco fa, era possibile reperire la patch groovy, la d3d9ex e quella nonag da applicare direttamente al sorgente del mame "liscio", con gli ultimi cambiamenti, calamity ha messo su github il sorgente groovymame già pronto con patch groovy e d3d93x, quindi basterebbe compilare ed abbiamo l'eseguibile pronto ma se vogliamo applicare il nonag?

Dobbiamo intanto trovare la patch relativa alla versione che ci interessa, cambiare l'estensione in .diff semplicemente rinominandola per poi applicarla.

il comando per applicare la patch è 

c:\mame_source>patch -p0 <suppression.diff --dry-run

dove sostituiremo i percorsi corretti ed il nome della patch, con i nostri, una volta verificato che non ci siano errori, potremo scrivere lo stesso comando omettendo il --dry-run che di fatto "simula" l'applicazione della patch senza però modificare nulla.

Può capitare infatti che sia disponibile una nuova versione di mame ma la patch non sia stata aggiornata e se ci sono modifiche nella struttura del codice, è necessario effettuare modifiche anche nella patch stessa per far combaciare le cose.

Se si ha fretta, è possibile modificare a mano le linee interessate, leggendo il contenuto del file .diff.

In questo caso consiglio di usare notepad++ e di aprire il file sul quale dobbiamo operare  con quest'ultimo, apparirà tutto più chiaro.

Ecco come compare la patch relativa al mame 0.228, utilizzabile anche sul 0.229


se quando la applicate con il comando patch avete diversi errori, è possibile, come già detto, intervenire manualmente, vediamo come, analizzando cosa c'è scritto.

le linee in blu scuro, ci dicono su quale file del sorgente intervenire

diff -Nru oldsrc/frontend/mame/ui/mainmenu.cpp src/frontend/mame/ui/mainmenu.cpp

in questo caso, una volta andati nella cartella del sorgente, dobbiamo spostarci in 

src/frontend/mame/ui/mainmenu

ed editare il file mainmenu.cpp con notepad++

quest'altra riga ci da delle coordinate 

@@ -130,6 +130,9 @@

ci dice "orientativamente" a quale linea vanno applicate le modifiche, non combacia perfettamente, a me non è successo mai, quindi bisogna armarsi di occhiali e pazienza e trovare la linea confrontando quanto scritto sotto, ad esempio

item_append(menu_item_type::SEPARATOR);

 

+ // DISABLE SELECT NEW MACHINE & FAVORITES

+ if (!machine().options().skip_gameinfo())

+ {

  if (!mame_machine_manager::instance()->favorite().is_favorite(machine()))

  item_append(_("Add To Favorites"), 0, (void *)ADD_FAVORITE);

  else

 in questo caso dovremo aggiungere il codice preceduto dal segno +, tra le linee "item_append...." e "if (!mame_machine_manager...." omettendo i segni + e facendo attenzione a rispettare gli spazi tra le linee e l'incolonnamento (io almeno faccio così).

Nella 0.229 la situazione è questa, siamo alla linea 131 (ci è andata bene)


Il risultato dopo la modifica, sarà questo

item_append(menu_item_type::SEPARATOR);

 

// DISABLE SELECT NEW MACHINE & FAVORITES

if (!machine().options().skip_gameinfo())

{

  if (!mame_machine_manager::instance()->favorite().is_favorite(machine()))

  item_append(_("Add To Favorites"), 0, (void *)ADD_FAVORITE);

  else

Potrebbe essere necessario anche eliminare qualche linea o semplicemente modificarla, se troveremo quindi il segno - sarà da eliminare per poi aggiungere il codice modificato, come indicato nel file.

Ripetiamo questo per ogni chiamata ad ogni file, salviamo ed avremo tutto pronto per la compilazione.


Con questa mini guida ho riportato solo la mia esperienza per quanto riguarda la patch del nonag, ci sono un sacco di altri argomenti da trattare e piccoli trucchi da utilizzare, dovessero interessare, basta contattarmi e vedrò di scrivere qualcosa, sia per le varie versioni di mame che per compilare altri software o emulatori per altre piattaforme (linux?)

Buona compilazione e buon divertimento.

21 marzo 2021

mame 0.229

 Mame64 arcadeonly + groovy switchres 2.002a + nonag + d3d9ex - windows

 Mame64 arcadeonly + groovy switchres 2.002a + nonag - linux

To download all the versions compiled by me you can directly access my drive from here and select the corresponding folder or go to the telegram group or go to the sixthfloor BBS

Attention windows users, i always recommend to download the standard version of mame and replace only the groovy executable after unzipping all the files, and after creating the mame.ini, so you will not have any errors due to old versions of the configuration file.

02 marzo 2021

Supermodel tutorial, SEGA Model3 emulator

Fantastico emulatore che consente di giocare fedelmente e con ottimi risultati ai giochi del Model3 che purtroppo non hanno avuto conversioni per le console casalinghe.

Cercherò di spiegare come configurare ed utilizzare questo pezzo di software che viene costantemente aggiornato e perfezionato, nel momento in cui scrivo siamo alla r851, ricordate che potete trovare l'eseguibile nel gruppo telegram o chiamando la BBS sixthfloor.ddns.net via telnet/ftp.

l'utilizzo base del supermodel è da linea di comando, il che lo rende facilmente integrabile ad un qualunque frontend o magari utilizzabile creando dei semplici script per personalizzare l'avvio di qualunque gioco, ad esempio per avviare Scud Race basta digitare

supermodel scud.zip

questo comando avvierà ili gioco con tutte le impostazioni presenti in Supermodel.ini nella cartella Config, possiamo decidere di modificare le impostazioni nel file quindi o di agire direttamente da linea di comando aggiungendo tutti i parametri che vogliamo, ad esempio, se desideriamo avviare Scud Race in full screen senza influire nei settaggi di tutti gli altri giochi che invece vogliamo avviare in finestra, digiteremo

supermodel scud.zip -fullscreen

 la logica quindi è questa, possiamo trovare tutte le opzioni sulle quali lavorare, sbirciando nell'ultima parte del supermodel.ini citato prima.

Esiste poi un frontend per chi non volesse utilizzare la commandline, realizzato dall'utente nuexzz.. del Supermodel Forum, anche questo viene aggiornato in caso di cambiamenti che ne minerebbero il funzionamento (attualmente siamo alla r846).

Questa la schermata principale dalla quale possiamo regolare tutto, dopo aver indicato il percorso delle roms, non ci rimane che impostare risoluzione e gli altri parametri per poi cliccare Load Rom ed iniziare a giocare.



possiamo regolare la parte audio


la parte dei controlli, consentendoci di utilizzare praticamente ogni periferica


ed emulare la scheda di rete per poter giocare anche in LAN



Come intuibile, ogni opzione che cambieremo verrà registrata nel file supermodel.ini ed influenzerà tutti i giochi, tenetelo a mente.

01 marzo 2021

nuovo giocattolino arrivato

Nuovo (ennesimo a dire il vero, è il terzo pi4) gioiellino.
Su questo mi dedicherò in partisolar modo, prossimamente diversi test per vedere a che punto siamo arrivati.