MAME layout file - promemoria

« Older   Newer »
 
  Share  
.
  1.  
    .
    Avatar

    appassionato
    Amministratore

    Group
    Fondatore Supremo
    Posts
    167

    Status
    Offline
    Ho una memoria dimm'rd@ quindi scrivo qui quello che ho "scoperto" imponendomi di sostituire l'icona di marcia Hi/Lo che il MAME mette a disposizione di default con una immagine. Questa cosa la avevo già studiata ed implementata ai tempi di racermame, ma chi si ricordava più... :lol:

    Le due iconcine che si possono scegliere in alcuni giochi tipo outrun, cisco heat, chase HQ etc., cioè quei giochi che montavano il cambio singolo microswitch non sono immagini, ma Internal Rendered Elements, cioè un insieme di figure geometriche che MAME mostra a schermo quando una certa condizione sia verificata. I MAMEDev, che cojoni non sono, hanno anche previsto la possibilità di usare immagini (formato .png).

    E' possibile cambiare le due icone (sia come insieme di figure geometriche, sia di immagini, sia una combinazione di queste) semplicemente inserendo nella cartella "artworks" una cartella con il nome della rom di ogni gioco di cui si vogliano cambiare le iconcine. Al suo interno andrà messo un file nominato "default.lay", a dare percorsi tipo:

    \atwork\outrun\default.lay

    oppure

    \artwork\cischeat\default.lay

    etc.

    All'interno della cartella con il nome del gioco andranno anche le eventuali immagini .PNG.

    Il file .lay messo nella cartella andrà ad addizionarsi a quello già nel codice (se presente), dunque possiamo aggiungere elementi o modificare il layout senza necessariamente ricopiare tutto.

    Veniamo al sodo: volendo aggiungere due nuove icone costituite da due file .PNG (uno per marcia su, l'altro per marcia giù) ad outrun ho messo nel percorso \artwork\outrun\ un file "default.lay" con questo codice:

    CODICE
    <?xml version="1.0"?>
    <mamelayout version="2">
           
    <element name="shifterIcons" defstate="0">
           <image file="highslim.png" state="1" />
           <image file="lowslim.png" state="0" />
    </element>
           
           <view name="Arcade Shifter">
                   <screen index="0">
                           <bounds x="0" y="0" width="320" height="240" />
                   </screen>
                   <bezel element="shifterIcons" inputtag="SERVICE" inputmask="0x10">
                           <bounds x="291" y="232" width="29" height="8" />
                           <color alpha="0.8" />
                   </bezel>
           </view>
           
    </mamelayout>


    Nota bene: i valori "inputtag" ed "inputmask" sono fondamentali, come spiega bene MrDo in questo post. Si possono ricavare nel driver del giochillo sotto il gruppo di inputs cui appartiene il cambio, opure (più semplice) nel file "nomegioco.cfg" (cartella /cfg) dopo aver rimappato il cambio.
    Un valore sbagliato può portare alla visualizzazione della nuova icona, ma questa non cambierà in funzione della marcia inserita.

    In alcuni giochi (chi ha detto world rally?) le icone non ci sono neppure, ma puoi aggiungerle con questo "truchetto" qui senza dover ricompilarti una versione di MAME apposta... fico no?

    link alla pagina wiki dei mamedev

    Edited by barito - 14/5/2023, 19:56
     
    .
  2.  
    .
    Avatar

    nuovo utente

    Group
    Member
    Posts
    13

    Status
    Offline
    Ciao Marco!

    spieghi ad un comune mortale come trovo nel codice del mame la parte di "inputtag" ed "inputmask" per wrally2 ?
     
    .
  3.  
    .
    Avatar

    appassionato
    Amministratore

    Group
    Fondatore Supremo
    Posts
    167

    Status
    Offline
    Ciao Bruno, in realtà è molto semplice. Se guardi il driver di world rally 2 (gaelco2.cpp) da riga 2258 vengono descritti gli input del giochillo. Il gruppo in cui è presente il cambio è IN0 (inputtag), mentre il bit che contiene l'info del cambio e che vogliamo monitorare (inputmask) è 0x20. Sostituisci questi valori al file default.lay di un'altra rom, cambia quei valori e infila il file in una cartella col nome della rom e il gioco è fatto.
    In riga 2323, sotto il gruppo IN2, c'è anche il cambio del secondo giocatore, stessa locazione di memoria (0x20). Se imposti questi valori monitorizzerai la posizione del cambio del player 2.
    Credo sia possibile visualizzare i cambi di entrambi i giocatori se si definisce un'altro elemento nel file default.lay, ma non so se sia possibile far si che se ne veda uno alla volta (cioè si veda solo quello del P1 quando è il suo turno o del P2 quando invece tocca a lui)
     
    .
  4.  
    .
    Avatar

    nuovo utente

    Group
    Member
    Posts
    13

    Status
    Offline
    Grazie! Ora non posso provare ma domani mi metto di impegno.
    Non ho ben chiaro come definire un secondo oggetto per il player 2 però... Per i monitor non dovrebbero esserci problemi in wr2 ogni player ha un suo monitor.
     
    .
  5.  
    .
    Avatar

    appassionato
    Amministratore

    Group
    Fondatore Supremo
    Posts
    167

    Status
    Offline
    Tu hai un pc collegato a due monitor e mandi due istanze diverse di MAME, una per ognuno di essi?
     
    .
  6.  
    .
    Avatar

    nuovo utente

    Group
    Member
    Posts
    13

    Status
    Offline
    Ho 1 mame configurato da ini con 2 schermi e sullo screen0 mando lo schermo1 di wrally2 e sullo screen1 mando lo schermo2.
     
    .
  7.  
    .
    Avatar

    appassionato
    Amministratore

    Group
    Fondatore Supremo
    Posts
    167

    Status
    Offline
    Ok. Nel file del layout c'è un parametro per dirgli su quale monitor mandare l'icona... ricordamelo domani che se ho un attimo (ho in vista una giornatina de fuego at work...) ci proviamo a fare un tentativo ;)
     
    .
  8.  
    .
    Avatar

    nuovo utente

    Group
    Member
    Posts
    13

    Status
    Offline
    Ciao Marco. Ho modificato il. Lay per wrally2 ed ora l'icona si muove. Il problema come temevo è con la gestione dei 2 schermi. Nel momento in cui abilito l'icona anche sul secondo schermo l'immagine che prima era correttamente quella del player 2 cambia e diventa quella del player duplicando praticamente il primo schermo invece di mostrarmi il secondo.
     
    .
  9.  
    .
    Avatar

    appassionato
    Amministratore

    Group
    Fondatore Supremo
    Posts
    167

    Status
    Offline
    Ok, come dicevo ieri un parametro per dirgli su che schermo proiettare il layout c'è quindi smanettandoci dovrebbe essere possibile risolvere. Dopo ci guardo (non prometto niente però!)
     
    .
  10.  
    .
    Avatar

    appassionato
    Amministratore

    Group
    Fondatore Supremo
    Posts
    167

    Status
    Offline
    Eccoci, metti questo in \artwork\wrally\

    Ho messo solo le icone di destra, per ognuno dei due monitor. Ho anche tolto le widescreen.
    File Allegato
    default.lay
    (Number of downloads: 17)

     
    .
  11.  
    .
    Avatar

    nuovo utente

    Group
    Member
    Posts
    13

    Status
    Offline
    Ciao Marco.

    sto cercando di aggiungere l'icona del cambio come fatto per i 2 world rally anche per il gioco speedup della gaelco http://adb.arcadeitalia.net/dettaglio_mame...=0&autosearch=1

    ho anche provato a seguire i link di guru ma non riesco a trovare i valori di inputtag e inputmask da utilizzare.

    riesci a darmi una mano?

    Grazie

    Bruno
     
    .
  12.  
    .
    Avatar

    appassionato
    Amministratore

    Group
    Fondatore Supremo
    Posts
    167

    Status
    Offline
    Guardando il codice del driver hai
    Inputtag: IN0
    Inputmask: 0x40

    Lo vedi in questa sezione del driver gaelco3d.cpp:

    CODICE
    /*************************************
    *
    *  Input ports
    *
    *************************************/

    static INPUT_PORTS_START( speedup )
           PORT_START("IN0")
           PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_VOLUME_UP )
           PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_VOLUME_DOWN )
           PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON5 )
           PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 )
           PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CODE(KEYCODE_LSHIFT)    // view
           PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(KEYCODE_LALT)      // brake
           PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CODE(KEYCODE_SPACE) PORT_TOGGLE // gear (low=1 high=2)
           PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )       // start
           PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )


    Edited by barito - 12/3/2021, 08:23
     
    .
  13.  
    .
    Avatar

    nuovo utente

    Group
    Member
    Posts
    13

    Status
    Offline
    Grazie! Funziona perfettamente!
     
    .
  14.  
    .
    Avatar

    nuovo utente

    Group
    Member
    Posts
    13

    Status
    Offline
    Ciao Marco.

    sono a chiedere ancora il tuo aiuto per un problema sempre simile. e vediamo se è risolvibile sempre tramite artwork

    il gioco in questione è backfire per la precisione nella versione backfirea.zip che è più completo risetto all'originale.

    nel test menù del gioco se impostato con potenziometri come controlli si può scegliere se utilizzare o meno la leva del cambio.

    il cambio è il classico 2 posizioni LOW e HIGH. l'icona del cambio non è prevista ed in realtà non è presente nemmeno il tasto dedicato al cambio ma il mame lo ha cmq mappato sotto al tasto indicato come UP e quindi da test si vede se si preme il cambio.

    il problema oltre alla mancanza dell'icona è che per rimanere in marcia bassa si deve continuamente tenere il tasto premuto altrimenti appena si molla torna in marcia alta.

    sono queste cose risolvibili?

    grazie


    bruno
     
    .
  15.  
    .
    Avatar

    appassionato
    Amministratore

    Group
    Fondatore Supremo
    Posts
    167

    Status
    Offline
    Ciao Bruno, per quanto riguarda l'icona del cambio non dovrebbero esserci problemi nel visualizzarla, come abbiamo fatto le altre volte. Quale che sia la descrizione nel menu TAB (dicevi "UP"), la locazione di memoria dove é mappato il cambio é univoco per il gioco, quindi definiti inputtag e inputmask l'icona ricalcherà lo stato di quello switch (o meglio, di quella locazione di memoria). Per assurdo, uno volendo potrebbe fare un'icona diversa per l'acceleratore, freno o qualsiasi altro input digitale di cui voglia visualizzazione di stato.

    Per quanto riguarda l'impostazione del comportamento del tasto del cambio tipo "toggle", é possibile TOGLIERE il comportamento tipo toggle settando toggle="no" nel file nomegioco.cfg in corrispondenza del tasto a cui vuoi togliere il toggle (solitamente si fa con il cambio perché settato in toggle a livello di driver). Mi sento di dire che se imposti toggle="yes" in corrispondenza al tasto che vuoi abbia comportamento tipo toggle, funzionerà :b:

    Edited by barito - 3/6/2021, 21:12
     
    .
20 replies since 30/9/2020, 14:13   5898 views
  Share  
.