RetroASD = JammASD + Mini PC!

Tutto quello che c'e' da sapere su questa mitica interfaccia made in Italy
antoniomauro
Cab-maniaco
Cab-maniaco
Messaggi: 1569
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: 8113
Iscritto il: 14/01/2007, 23:35
Medaglie: 3
Reputatione: 27
Grazie Inviati: 30 volte
Grazie Ricevuti: 46 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: 312
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: 312
Iscritto il: 10/09/2017, 16:13
Reputatione: 2
Città: PD
Grazie Ricevuti: 3 volte

Re: RetroASD = JammASD + Mini PC!

Messaggio da zanac » ieri, 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: 1569
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 » oggi, 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!


Rispondi

Torna a “JammASD - Domande e Problemi”