RetroASD = JammASD + Mini PC!

Tutto quello che c'e' da sapere su questa mitica interfaccia made in Italy
antoniomauro
Cab-maniaco
Cab-maniaco
Messaggi: 1570
Iscritto il: 02/08/2005, 8:40
Medaglie: 1
Reputatione: 12
Città: Latina
:
Donatore
Grazie Ricevuti: 1 volta

Re: RetroASD = JammASD + Mini PC!

Messaggio da antoniomauro » 06/11/2019, 10:58

Fantastico!
Non voglio farti perdere tempo in post troppo tecnici ma trovo veramente brillante la soluzione delle risoluzioni "ultrawide" per riuscire ad ottenere risoluzioni e refresh rate (modeline) arbitrari anche con schede grafiche integrate.
Se ho ben capito hai surclassato i famosi CRT Emudrivers che soffrono invece di molte limitazioni relativamente all'hardware utilizzabile.

Con questi script (pre/post) poi si apre di fatto la possibilità di realizzare un sistema pixel-perfect per ogni piattaforma/gioco


Avatar utente
Tox Nox Fox
Moderatore
Moderatore
Messaggi: 8126
Iscritto il: 14/01/2007, 23:35
Medaglie: 3
Reputatione: 27
Grazie Inviati: 32 volte
Grazie Ricevuti: 47 volte

Re: RetroASD = JammASD + Mini PC!

Messaggio da Tox Nox Fox » 06/11/2019, 13:21

la teoria sotto è la stessa dei crtemudriver, ma rielaborata sotto Linux e con qualche "colpo di genio" di zanac che li rendono utilizzabili un po' ovunque.
Come dicevo anche con zanac, al tempo del dos puro (anni fa 😅) usando Linux o Dos si usciva a 15khz su ogni scheda video in circolazione. In Dos, con ArcadeOs bastava una riga in un file di testo per uscire a 15khz.
Poi con Windows iniziarono i problemi per la forzatura.
http://wp.arcadeitalia.net
WP.ARCADEITALIA.NET


Avatar utente
picerno
God of Arcade
God of Arcade
Messaggi: 3092
Iscritto il: 20/11/2006, 21:31
Reputatione: 29
Località: Provincia di Potenza
Grazie Ricevuti: 2 volte

Re: RetroASD = JammASD + Mini PC!

Messaggio da picerno » 06/11/2019, 18:12

Tox Nox Fox ha scritto:
06/11/2019, 13:21
, al tempo del dos puro (anni fa 😅) usando Linux o Dos si usciva a 15khz su ogni scheda video in circolazione. In Dos, con ArcadeOs bastava una riga in un file di testo per uscire a 15khz..
Io sono rimasto a quei tempi. Dos e advmame \:D/
JammASD SmartASD Developer


zanac
Nostalgico
Nostalgico
Messaggi: 315
Iscritto il: 10/09/2017, 16:13
Reputatione: 2
Città: PD
Grazie Ricevuti: 3 volte

Re: RetroASD = JammASD + Mini PC!

Messaggio da zanac » 07/11/2019, 11:29

picerno ha scritto:
06/11/2019, 18:12
Tox Nox Fox ha scritto:
06/11/2019, 13:21
, al tempo del dos puro (anni fa 😅) usando Linux o Dos si usciva a 15khz su ogni scheda video in circolazione. In Dos, con ArcadeOs bastava una riga in un file di testo per uscire a 15khz..
Io sono rimasto a quei tempi. Dos e advmame \:D/
Male male, ma a fine progetto conto di farti "evolvere" :) :)


zanac
Nostalgico
Nostalgico
Messaggi: 315
Iscritto il: 10/09/2017, 16:13
Reputatione: 2
Città: PD
Grazie Ricevuti: 3 volte

Re: RetroASD = JammASD + Mini PC!

Messaggio da zanac » 12/11/2019, 15:20

Continua la sperimentazione.
Dopo un po' di giorni che giravo alla risoluzione descritta mi sono spinto a spingere, perdonate il gioco di parole, il mio buon vecchio Mivar alla massima risoluzione che supportava e sopportava.
Il Mivar reggeva tranquillamente una risoluzione di 300p a 15khz, tuttavia ho deciso di scendere a 274p per mantenere la compatibilità con magari altri monitor arcade meno di manica larga.

Con questa risoluzione i giochi che usano 224p (la maggior parte) possono essere visualizzati aggiungendo 25 pixel sopra e sotto lo schermo (25+225+25=274), la risoluzione orizzontale invece è ora ad una fiammante 2560 pixel, con questo compremesso possiamo ora far girare i Sega Model 3 (che ricordo essere 496x384) a 2480x274 con una perdita di qualità video di "appena" il 29% dei pixel contro il 35% di una risoluzione 15khz standard (non sto qui a riportarvi il dettaglio dei calcoli per non annoiare troppo).

Veniamo ora ad alcuni giochi con risoluzioni bastarde.
Mortal Kombat: 400x256... risoluzione orizzontale 80+400*5+80, risoluzione verticale 9+256+9! Ci siamo.

Popeye, interlacciata a 512x448. No, non ci siamo.
Per le interflacciate serve una super risoluzione che copra più casistiche... dopo diversi tentativi ho tirato fuori una 1024x600 interlacciata! Popeye quindi diventa 512*2,76+448+76

Tutto bene? Si, quasi. Come fare a gestire due modeline così esotiche con xrandr? Ecco il trucchetto....

/usr/bin/xrandr --newmode "MODE_2560x274p" 52.42 2560 2664 2912 3328 274 275 277 300 -hsync -vsync
/usr/bin/xrandr --newmode "MODE_1024x600i" 20.161 1024 1032 1127 1264 600 601 607 638 interlace -hsync -vsync
/usr/bin/xrandr --addmode $(/usr/bin/xrandr | grep ' connected ' | sed "s/^\(.*\) connected.*/\1/") "MODE_2560x274p"
/usr/bin/xrandr --addmode $(/usr/bin/xrandr | grep ' connected ' | sed "s/^\(.*\) connected.*/\1/") "MODE_1024x600i"
/usr/bin/xrandr --output $(/usr/bin/xrandr | grep ' connected ' | sed "s/^\(.*\) connected.*/\1/") --mode "MODE_2560x274p" --scale-from 384x274


Fatto questo possiamo cambiare da una risoluzione all'altra con questi tre comandi:

Super risoluzione progressiva:
/usr/bin/xrandr --output $(/usr/bin/xrandr | grep ' connected ' | sed "s/^\(.*\) connected.*/\1/") --mode "MODE_2560x274p" --transform none

Super risoluzione progressiva scalata (per emulation):
/usr/bin/xrandr --output $(/usr/bin/xrandr | grep ' connected ' | sed "s/^\(.*\) connected.*/\1/") --mode "MODE_2560x274p" --scale-from 384x274

Super risoluzione interlacciata:
/usr/bin/xrandr --output $(/usr/bin/xrandr | grep ' connected ' | sed "s/^\(.*\) connected.*/\1/") --mode "MODE_1024x600i"



Per finire ecco un altro tema che mi sta a cuore: l'uso di emulatori a schermo intero ma che in realtà faremo girare su una finestra grande quanto il desktop!
In questo caso tutto funziona bene tranne che il cursore del mouse va oscurato. Come fare?

Semplice, definiamo un file ad hoc cursor_hidden.xbm con all'interno queste righe:

cursor_hidden.xbm:
#define blnk_ptr_width 1
#define blnk_ptr_height 1
#define blnk_ptr_x_hot 0
#define blnk_ptr_y_hot 0
static unsigned char blnk_ptr_bits[] = { 0x00 };

Ora il comando:
/usr/bin/xsetroot -cursor /opt/retropie/retroasd/cursor_hidden.xbm /opt/retropie/retroasd/cursor_hidden.xbm

Ora ci siamo davvero!
E se il cursorse serve nuovamente?

Detto fatto:
xsetroot -cursor_name left_ptr


antoniomauro
Cab-maniaco
Cab-maniaco
Messaggi: 1570
Iscritto il: 02/08/2005, 8:40
Medaglie: 1
Reputatione: 12
Città: Latina
:
Donatore
Grazie Ricevuti: 1 volta

Re: RetroASD = JammASD + Mini PC!

Messaggio da antoniomauro » 13/11/2019, 11:23

Grande!
Come gestirà l'emulatore (mame ad esempio) la scelta della risoluzione adatta tra quelle installate?
Prevedi un'impostazione manuale degli "ini" oppure qualche altro meccanismo?
Immagino che conosci già perfettamente "groovymame" che dovrebbe supportare l'utilizzo e la selezione delle "super resolution" molto simili al metodo che stai implementando!


zanac
Nostalgico
Nostalgico
Messaggi: 315
Iscritto il: 10/09/2017, 16:13
Reputatione: 2
Città: PD
Grazie Ricevuti: 3 volte

Re: RetroASD = JammASD + Mini PC!

Messaggio da zanac » 13/11/2019, 14:01

antoniomauro ha scritto:
13/11/2019, 11:23
Grande!
Come gestirà l'emulatore (mame ad esempio) la scelta della risoluzione adatta tra quelle installate?
Prevedi un'impostazione manuale degli "ini" oppure qualche altro meccanismo?
Immagino che conosci già perfettamente "groovymame" che dovrebbe supportare l'utilizzo e la selezione delle "super resolution" molto simili al metodo che stai implementando!
In realtà non ho mai usato groovymame, chi mi conosce sa che provengo da Pandora :) Tieni conto che non sono un maniaco del pixel perfect, anzi... in verità mi piace quasi di più giocare con qualche filtro che faccia un upscaling della risoluzione del gioco :)

Tuttavia voglio tenermi aperto e permettere a chi invece piaccioni i pixel di avvicinarsi ad un'esperienza arcade originale... detto questo in prima fase appunto non ho intenzione di usare alcun stratagemma per cambiare la risoluzione, ma mi interessa capirne la fattibilità.
Come ho in mente di farlo? Facile, mame tramite la sua api a command line permette di estrarre le info di ogni gioco, nel tag <display> ci sono le info della risoluzione desiderata dal gioco, in base a quella non farò altro che settare al volo retroarch ;)


antoniomauro
Cab-maniaco
Cab-maniaco
Messaggi: 1570
Iscritto il: 02/08/2005, 8:40
Medaglie: 1
Reputatione: 12
Città: Latina
:
Donatore
Grazie Ricevuti: 1 volta

Re: RetroASD = JammASD + Mini PC!

Messaggio da antoniomauro » 13/11/2019, 15:33

Capisco!


zanac
Nostalgico
Nostalgico
Messaggi: 315
Iscritto il: 10/09/2017, 16:13
Reputatione: 2
Città: PD
Grazie Ricevuti: 3 volte

Re: RetroASD = JammASD + Mini PC!

Messaggio da zanac » 14/11/2019, 9:39

pyJammASD v 0.0.3

Versione Windows: https://github.com/zanac/RetroASD/relea ... v_0.0.3.7z
su Git c'è il source per Linux.



Rimosso parametro -d e aggiunto -c

Ora tramite -c si può caricare un dizionario di regole...

Ho predisposto due dizionari di esempio: default.ini e libretro.ini

Il default.ini imposta le regole di base che RetroASD caricherà all'avvio... libretro.ini invece contiene una configurazione che ho pensato studiata per l'uso di retroarch.
In questa configurazione i tasti shiftati hanno il "repeat" settato, ovvero tenendo premuto il tasto start del player 1 i tasti avranno il repeat settato... questo è comodo per gli shot m up o tipo nei picchiaduro dove si deve premere velocemente un pulsante (tipo le 100 mani di Honda).


Rispondi

Torna a “JammASD - Domande e Problemi”