Minibartop Arcade Cabinet

De wikijoan
Salta a la navegació Salta a la cerca

Introducció

Partint del moble bartop i del projecte PiPlay, es tracta de fer el mateix però reduint al màxim les dimensions. La pantalla seria un monitor TFT de 7 polzades (entrada composite video. La RPi tant el model B com el B+ tenen sortida composite video).

Per ex,

Es tracta de buscar les dimensions més reduïdes possibles per inquibir el projecte (tenint en compte el monitor i el joystick i botons, i tot el hardware interior). De manera que sigui portable i jugable. Pot ser un tema interessant, doncs l'espai és un factor limitant per a molts. El fet de què es pugui transportar fàcilment també és un plus.

(http://minimaquinitas.com/en/home-2/)

Emuladors

Parteixo de l'experiència amb la primera màquina on només hi havia el mame4all. La idea és ficar el màxim d'emuladors possibles. Tanmateix, veiem que les dimensions de la minibartop limiten els emuladors. S'haurà d'estudiar quina és la configuració òptima dels botons per les dimensions que tinc, i quins són els emuladors compatibles.

Diferents displays a la RPi (discussió)

NOTA: de la mateixa manera que he comprat una pantalla de 7, també existeixen pantalles de 11 (més cara), i les dimensions del moble en principi serien les mateixes.

Hi ha moltes possibilitats de displays i interfaces:

En principi per aquest projecte seria una pantalla de 7. Però compte! que es poden trobar diferents solucions:

Ningú regala res: més resolució, més car. Ara bé, la pantalla de 480x234 px donaria la talla? (és una solució RCA).

Una possibilitat seria optar per una pantalla de 10. Són les pantalles de notebooks i reaprofitar pantalles de portàtils. Ara bé, la interface és més difícil d'encertar.

En definitiva, hi ha molt camp per fer proves.

I encara hi ha més solucions: pantalles encara més petites (3,5) amb una resolució de 640x480, que no són cares: 15 eur

L'alimentació és de 12V i la connexió és RCA. Aquest tipus de pantalla són els que s'utilitzen, per ex, en els retrovisors d'aparcament que ara s'instal.len en el cotxe. També pot servir per fer un sistema barato de videobigilància. De fet, és més barato i amb més resolució que el mòdul PiTFT que era de 2,8.

I aquí tenim pantalles de 8,9 que són HDMI, amb resolució de 1024x600 px:

De fet, són pantalles que munten alguns laptops. El tema és que si ho busquem per eBay s'ha de comprar amb el controlador, com l'anterior. Si ens fixem, el connector és VGA. És aquí on necessito un cable HDMI-VGA tonto com el que vaig comprar per equivocació.

Una altra possibilita realment barata serien els photo frames (marcs digitals). Se'n poden trobar de ben baratos (5e, per ex) al Cash Converter, però com es comenta en el següent enllaç, en principi no està previst que es pugui fer una interface amb la RPi, doncs no tenen cap entrada de video. Una altra cosa és que veient el model de la pantalla LCD es pugui fer una intefície, que en qualsevol cas no seria un projecte trivial.

La pantalla que finalment he comprat (desembre 2014) (42 e): 7-inch-LCD-Screen-Display-Monitor-for-Raspberry-Pi-Driver-Board-HDMI-VGA-2AV. Es tracta del model AT070TN92.

Operating voltage: 12V 1A power supply current requirements less than 2A, as with the best car power plus a regulator to prevent interference
Rated power: 6-7W
Signal Input: 2 AV + VGA
System format: PAL / NTSC
HDMI Input: HDMI 1.1 version
VGA input: 1024 * 600 physical resolution, support for resolutions range 640×480 - 1600×1200 adjusted between!
AV1 video input (DVD devices can be linked or front camera)
AV2 video input (to the car automatically switches to the camera screen)
                 
Plug and Play: Support
OSD Language: Simplified Chinese, Traditional Chinese, English, Japanese, Korean, Spanish, French, German, Italian, Portuguese
Control: Multi OSD operation or potentiometer to adjust the brightness and color
Features: The mature programs, clear display
  
Reversing the priority feature set:
       A, the default boot last saved channels.
       B, boot, reversing signal, switch to AV2, reversing the signal disappears, back to the original channel.
       C, standby, reversing signal, switch to AV2, reversing the signal disappears, return to standby
  
Support image flip up and down, the image 4:3 / 16:9 display format conversion
Scope: used video intercom, onboard computer, instrumentation, industrial control, medical equipment, military equipment, portable display devices and other electronics.
                 
                 
LCD Screen Parameters:
Display size: 7 inch
Dimensions: 165.0 (W) * 100.0 (H) * 5 (D) mm 
Viewing area: 154.08 (H) * 85.92 (V)
Resolution: 1024 * 3 (RGB) *600
Dot pitch: 0.05 (W) * 0.15 (H) mm
Viewing Angle:  L70 ° R70 ° U50 ° D60 
Panel Type: TFT
Display Color: 262K
Contrast Ratio: 500:1
Brightness: 250cd/m2
Interface Type: Digital
Wiring Number: 50 PIN Digital (TTL) TCON

Com que és una pantalla 16:9 s'ha de vigilar amb el format dels jocs, doncs podria haver-hi molta pantalla desaprofitada. Una idea a considerar és rotar la pantalla 90 graus (tal com s'explica a http://elinux.org/RPiconfig), i muntar la pantalla verticalment. I aleshores escollir només les ROMs que tenen format vertical (que encara que perdi moltes roms, continuo tenint-ne moltes). D'aquesta ,manera s'aconsegueix un aprofitament de la pantalla molt gran, a costa de què perdo jocs.

Per distingir entre jocs verticals i jocs horitzontals, s'haurà de fer un nou camp en la llista romlist.txt.

Una altra possibilita és jugar amb el paràmetre sdtv_aspect, i d'aquesta manera puc aprofitar la pantalla tot i que perdo la proporcionalitat:

sdtv_aspect defines the aspect ratio for composite output (default=1)

sdtv_aspect=1  4:3
sdtv_aspect=2  14:9
sdtv_aspect=3  16:9

Pantalla de 10

La primera màquina l'he construït amb una pantalla de 7. La segona la construiré amb una pantalla de 10, i és la següent:

New 10.1",10" TFT LCD Display HDMI+VGA+Video Driver Board fr Raspberry Pi Hot

Són 54 euros (gener 2016)

ER-TFTV101-1 is 1024x600 dots 10.1 " color tft lcd module display with hdmi,vga,video,av signal driver board,optional 4-wire resistive touch panel and touch panel usb port controller driver board and remote control,superior display quality,super wide view angle.It can be used in any embedded systems,car,industrial device,security and hand-held equipment which requires display in high quality and colorful video. Its HDMI interface is fully compatible with Raspberry PI platform .

Attention: Power adaptor should be 12V/1000mA in output and center pin for positive voltage and the outer shield for negative voltage.The temperature for controller RTD2660 would increase during working.That's normal phenomenon,not quality problem.

Materials i dimensions

Les dimensions serien exactament la meitat que el bartop original. Al final les dimensions de la minibartop són:

  • 30 cm alt
  • 21 cm fondo
  • 27 cm ample (són 25 cm, però els contraxapats laterals són de 1cm).

Les dimensions dels components serien:

El problema de les dimensions bàsicament és ubicar el joystick i els botons.

Nota: en la primera màquina, de 27 cm d'ample, és realment massa estreta i tot està molt compacta. S'ha de fer una mica més ample. S'ha de vigilar amb la distància des del joystick i/o botons al lateral, doncs s'ha de deixar una mica més de marge. La segona màquina, que faré amb una pantalla de 10, haurà de ser una mica més grossa.

Nota: un dels problemes que he tingut ha estat amb el connector de la pantalla i el board. Un cop muntada la pantalla és poc accessible el connector i ha sigut difícil d'accedir i fer la connexió amb solidesa. S'ha de procurar muntar de manera que el connector sigui més accessible, i assegurar la robustesa de la connexió.

Disseny CPO (Control Panel). 7 botons: ESC + 6 botons

He d'integrar els emuladors que de moment tinc implementats: mame4all, Neo Geo (Emulador_NeoGeo_a_la_RPi), dgen (Mega Drive/Genesis) i els de Gameboy Advance (acabar de documentar). (SNES no entra doncs necessita més botons) Per tant, els 6 botons originals de mame4all ja no poden ser, i ara passem a 7 botons + joystck.

Estem parlant d'una màquina amb un sol jugador.

En resum:

  • mame4all. F1, F2, F3, PAUSE, COIN, START. ESCAPE
  • Neo Geo tinc A,B,C,D, COIN i Player 1 START. ESCAPE

A més, tinc una disposició original dels botons ABCD de NeoGeo, que seria interessant seguir.

  • frontend (joanillo_arcade_frontend): FAV, CAT, EMU, SELECT, ESCAPE.

Necessito 7 botons. Una de les conclusions a què he arribat en el disseny és que no puc abusar de les etiquetes. La falta d'informació en el CPO s'hauria de suplir amb una bona documentació/manual d'usuari.

     *     *       *
    ESC   Player1 COIN
          START   SELECT
  
*     *     *       *
A     B     C       D
FAV   CAT   EMU

Ara hauré de configurar el fitxer pikeyd.conf segons s'explica a PiPlay_(abans_PiMAME)#Joystick_i_botons:_una_altra_soluci.C3.B3_.28millor.29.28Nov_2014.29. Els botons estaran associats a les tecles 0...6 segons aquesta configuració:

        *   *   *
        0   1   2

      *   *   *   *
      3   4   5   6

Escrit d'una altra manera:

          0      1       2
          ESC    Player1 COIN
                 START   SELECT
  
       3     4     5       6
       A     B     C       D
       FAV   CAT   EMU

Amb tota aquesta informació s'ha de configurar els fitxers de configuració de mame4all, gngeo, megadrive, els de gameboy i joanillo_arcade_frontend (hardcoded), i finalment el fitxer pikeyd.conf:

KEY_LEFT 4
KEY_RIGHT 17
KEY_UP 27
KEY_DOWN 22
KEY_0 10
KEY_1 9
KEY_2 11
KEY_3 23
KEY_4 24
KEY_5 25
KEY_6 8

I això en el pinout es tradueix:

3.3V *--* 5V
     *--*
     *--* GND
L    *--*
     *--*
R   *--*
U    *--*
D    *--* 3
     *--* 4
0    *--*
1    *--* 5
2    *--* 6
     *--*
...

Resum layout per imprimir:

MINIBATOP 7 BOTONS
*   *   *
0   1   2

*   *   *   *
3   4   5   6
      
0			1		2
ESC	Player1	COIN
			START	SELECT
  
3     4     5       6
A     B     C       D
FAV   CAT   EMU
       
3.3 *--* 5V
	*--*
	*--* GND
 L	*--*
	*--*
R	*--*
U	*--*
D	*--* 3
	*--* 4
0 	*--*
1 	*--* 5
2	*--* 6
	*--*

mame4all

.

gngeo

. Sí que es pot configurar. Botons A, B, C, D.

Emulador Mega Drive/Genesis

, però els jocs de tres botons i Start. Quant els jocs de 6 botons i Start també ho implemento, tot i que em faltarà un botó (Start, A, B, C, X, Y) (falta la Z)

Emulador Gameboy Advance-GPSPy

. A, B, L, R, Start, Select

pisnes

NO. De moment no, doncs es necessita X, Y, A, B, L, R, Start i Select (em falta L i R)

Emuladors Gameboy (Gearboy, Mednafen-VBA)

És una possibilitat per tenir les roms de GBC i GBA. El tema està en què compilar les fonts de mednafen és difícil. I per tant s'ha de partir de la versió actual de PiPlay i netejar (que és una possibilitat factible i fàcil).

En aquesta primera versió de la mini-bartop no implemento mednafen-

joanillo_arcade_frontend

Tinc la versió 1.0.5 que l'he fet multi-emulador. Ara ja és la 1.0.6.

Resum

En la primera versió de la mini-bartop implemento 7 botons (ESC + 6 botons per a les consoles) (MAME/artwork/minibartop/metal_slug/controls_v4.jpg) implemento els emuladors:

  • mame4all
  • Neo Geo
  • Mega Drive
  • Gameboy Advance (GPSPy)

En una propera versió de la minibartop puc ficar dos botons més per tenir pisnes, i també puc explorar mednafen.

Pas a pas instal.lació

Parteixo de la imatge imatge_sd_piplay/imatge_piplay_141231.img que tenia per les tres màquines 1 sol jugador-mame4all (model Shinoobi i 1942). TODO:

  • wifi
  • configuració del teclat català
  • video de presentació
  • instal.lar i configurar mame4all
  • instal.lar i configurar Neo Geo
  • instal.lar i configurar Mega Drive
  • instal.lar i configurar GBA
  • instal.lar nova versió del front-end multiemulador

Per instal.lar les ROMs i les imatges, em baso en el full de càlcul de les ROMs, i així només fico les ROMs que funcionen i les seves imatges. La idea és que amb una targeta SD de 16GB n'he de tenir prou.

Geometria joanillo_arcade_frontend

Per a una pantalla de 7, i la versió joanillo_arcade_frontend-1.0.8.cpp, la geometria queda:

        // Configuració RPi (MiniBartop)
        #define PAGINACIO 12
        #define LLISTA_ROMS_X 20
        #define LLISTA_ROMS_Y 110
        #define CAPCALERA_W 800  
        #define CAPCALERA_Y 10   
        #define CAPCALERA_DELTAH 30
        #define LOGO_Y 420
        #define PEU_X 110 
        #define LLISTA_ROMS_W 230
        #define LLISTA_ROMS_H 25 
        #define ROMPNG_WH 300 //de moment 300, 500, 800
        #define ROMPNG_X 255 //normalment serà LLISTA_ROMS_W + LLISTA_ROMS_X
        #define TALLAR_NUM_CHARS 18
        #define FONT1_SIZE 25
        #define FONT2_SIZE 20

creat per Joan Quintana Compte, desembre 2014, juny 2015