Emulador Atari 2600 - Stella

De wikijoan
Salta a la navegació Salta a la cerca

Introducció

Atari-2600-Wood-4Sw-Set.jpg

Instal.lació

https://stella-emu.github.io/development.html

$ git clone https://github.com/stella-emu/stella.git
$ cd stella

$ ./configure 
$ make 
$ sudo make install
$ stella

L'executable està a ''/usr/local/bin/stella''

roms:
https://atariage.com/system_items.html?SystemID=2600&ItemTypeID=ROM

Els fitxers de configuració estan a:
$ ls /home/joan/.config/stella/
cfg  nvram  state  stella.pro  stellarc

Les opcions que es poden configurar es guarden a:
/home/joan/.config/stella/stellarc

aquí hi ha el directori on busquem les roms
romdir = ~/roms/atari2600/

i el mapejat de les tecles.
keymap = 119:0:0:0:0:50:0:55:52:49:25:23:22:59:24:62:63:0:0:60:61:47:0:51:0:0:0:
joymap = 119
combomap = 16:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,

$ stella -help
stella [options ...] romfile

  -cfgdir       <dir>          Directory in which to save Distella config files
  -exitlauncher <1|0>          On exiting a ROM, go back to the ROM launcher

$ cp /home/joan/.config/stella/stellarc /home/joan/stellarc
$ stella -cfgdir /home/joan/.config/stella
$ stella -cfgdir /home/joan
no funciona això anterior
Linux/Unix 	$HOME/.stella/stellarc -> no es pot canviar, a no sé que ho toqui dins el codi. A mi el que m'agradaria eś un fitxer de configuració per cada joc, doncs dins el fitxer de configuració hi ha el mapping.


$ stella /home/joan/roms/atari2600/Berzerk.bin -> funciona

some games need to be 'started' with the Select or Reset button, while others may use the joystick fire button instead. 

Manuals:
http://www.atariage.com/system_items.html?SystemID=2600&ItemTypeID=MANUAL



Remapping:
https://stella-emu.github.io/docs/index.html#Remapping

Configuració per defecte
keymap = 119:0:0:0:0:50:0:55:52:49:25:23:22:59:24:62:63:0:0:60:61:47:0:51:0:0:0:48:54:21:53:44:45:46:19:20:26:27:56:57:58:0:101:102:98:18:0:0:0:0:99:0:64:0:100:65:66:67:0:9:10:3:4:5:6:7:8:94:92:93:95:0:0:97:0:0:0:0:0:0:17:16:15:14:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:18:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:113:117:118:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:109:111:0:110:112:108:107:106:105:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0

Vaig a canviar el SPACE pel '3'
Input settings > UI events

keymap = 119:0:0:0:0:50:0:55:52:49:25:23:22:59:24:62:63:0:0:60:61:47:0:51:0:0:0:48:54:21:53:44:45:18:19:20:26:27:56:57:58:0:101:102:98:18:0:0:0:0:99:0:64:0:100:65:66:67:0:9:10:3:4:5:6:7:8:94:92:93:95:0:0:97:0:0:0:0:0:0:17:16:15:14:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:18:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:113:117:118:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:109:111:0:110:112:108:107:106:105:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0

Per defecte Ctrl-Q és per sortir de l'emulador. Ara també li associo el botó 0

keymap = 119:0:0:0:0:50:0:55:52:49:25:23:22:59:24:62:63:0:0:60:61:47:0:51:0:0:0:48:54:21:53:44:45:18:19:20:26:27:56:57:96:0:101:102:98:18:0:0:0:0:99:0:64:0:100:65:66:67:0:9:10:3:4:5:6:7:8:94:92:93:95:0:0:97:0:0:0:0:0:0:17:16:15:14:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:18:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:113:117:118:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:109:111:0:110:112:108:107:106:105:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0

Efectivament, la informació està aquí, tot i que és difícil d'interpretar.

La configuració final per dos jugadors seria:
keymap = 119:0:0:0:0:56:57:58:59:60:61:0:0:21:23:22:24:0:0:0:0:0:0:51:0:0:0:0:0:0:0:0:0:44:45:46:47:48:49:0:96:0:101:0:98:18:0:0:0:0:99:0:0:0:100:0:0:67:0:9:10:3:4:5:6:7:8:94:92:93:95:0:0:97:0:0:0:0:0:0:17:16:15:14:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:113:117:118:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:109:111:0:110:112:108:107:106:105:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0




A la RPi:

/usr/local/bin/stella

A la RPi no tinc cap interfície gràfica:
$ stella
error: XDG_RUNTIME_DIR not set in the environment.
ERROR: Unable to open SDL window: Could not initialize OpenGL / GLES library
ERROR: Couldn't initialize video subsystem
ERROR: Couldn't create launcher

  -video        <type>         Type is one of the following:
                 opengl          OpenGL acceleration
                 opengles2       OpenGLES 2 acceleration
                 opengles        OpenGLES 1 acceleration
                 software        Software mode (no acceleration)

https://www.element14.com/community/community/raspberry-pi/blog/2012/10/03/play-atari-2600-on-your-raspberry-pi
Make sure the sound drivers are installed. (ALSA drivers are not installed by default) Enter in: sudo apt-get install alsa-utils and sudo modprobe snd_bcm2835. Permissions may be an issue. So, run Stella using "sudo stella" or add the user to the video group, which gives access to the framebuffer. This is done through: sudo usermod -a -G video pi
sudo usermod -a -G video pi

RPi, s'ha de poder fer des de la consola. Ho vaig veure en un video.

http://www.piplay.org/forum/search?Search=stella
Games are slow
Are you running from within X-windows? If so, don't. Stella was really slow when I ran it from within X-windows. Booting to terminal (not X), then running Stella fixed the speed problem.



https://raspberrypi.stackexchange.com/questions/412/how-can-i-run-stella-atari-emulator-on-the-raspberry-pi?rq=1
I have it running from the console on Debian squeeze and posted about it here: http://raspberry-fool.com/2012/07/atari-2600-emulation/

Sounds like you were doing it right though so not sure where the error came from unless it was due to running it on X before you tried.

If you add your user to the video group it gets over the framebuffer permissions problem.

Run from the console the emulation is perfect imho. looks and sounds very good on a variety of games I have tried.

Tornem-hi:

https://raspberrypi.stackexchange.com/questions/42628/has-anyone-managed-to-get-sdl-2-3-working-without-x-in-raspbian
	

I have Raspbian Jessie running on my Pi2. I am currently booting into LXDE. I want to disable X and run my SDL code directly on the framebuffer. Can someone point me to where I can find more information on how to do this?

Link with instructions to build SDL2 (no X) on Pi: https://solarianprogrammer.com/2015/01/22/raspberry-pi-raspbian-getting-started-sdl-2/ you will get hardware accelerated graphics with SDL2

https://solarianprogrammer.com/2015/01/22/raspberry-pi-raspbian-getting-started-sdl-2/

Parteixo d'una SD neta amb Raspbian Jessie. El problema que he de resoldre és instal.lar l'emulador stella i poder-lo executar des de la consola, sense les X. Sembla ser que s'ha d'instal.lar de forma correcta les X. Segons he llegit, sembla ser que la clau està en instal.lar SDL2 deshabilitat OpenGL, utilitzant l'opció ''--disable-video-opengl'' en el ''configure''.


Les primeres proves que havia fet amb stella des de la consola no funcionen (''Error initializing SDL! No available video device''). He instal.lat les X (apt-get install xserver-xorg) i l'escriptori XFCE. Ara stella ja funciona des de les X, però va lent i és inestable. He de recuperar la possibilitat d'executar stella directament des de la consola (directament al framebuffer?)

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential libfreeimage-dev libopenal-dev libpango1.0-dev libsndfile-dev libudev-dev libasound2-dev libjpeg8-dev libtiff5-dev libwebp-dev automake
sudo apt-get install build-essential libfreeimage-dev libopenal-dev libpango1.0-dev 
libsndfile-dev libudev-dev libasound2-dev libwebp-dev automake
libjpeg-dev
 libtiff5-dev 
libjpeg8-dev

cd ~
wget https://www.libsdl.org/release/SDL2-2.0.3.tar.gz
tar zxvf SDL2-2.0.3.tar.gz
cd SDL2-2.0.3 && mkdir build && cd build

../configure --host=armv7l-raspberry-linux-gnueabihf --disable-pulseaudio --disable-esd --disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl
...
Video drivers   : dummy opengl_es1 opengl_es2
...

The above options will make sure, SDL 2 is built with the OpenGL ES backend and that any SDL application will run as a full screen application, the windowed mode under X tends to be more buggy on Raspberry Pi. On the plus side, you will be able to launch your application, or game, directly from the text interface without the overhead of running the X server. If you wish you can start your application from LXDE (the default window manager for Raspbian) and the application will run full screen.



make -j 4
sudo make install

Anem a instal.lar la llibreria SDL_image:

cd ~
wget http://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.0.tar.gz
tar zxvf SDL2_image-2.0.0.tar.gz
cd SDL2_image-2.0.0 && mkdir build && cd build
../configure
make -j 4
sudo make install


fitxer sdl2_test.cpp:

#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <iostream>

// Manage error messages
void check_error_sdl(bool check, const char* message);
void check_error_sdl_img(bool check, const char* message);

// Load an image from "fname" and return an SDL_Texture with the content of the image
SDL_Texture* load_texture(const char* fname, SDL_Renderer *renderer);


int main(int argc, char** argv) {
    // Initialize SDL
    check_error_sdl(SDL_Init(SDL_INIT_VIDEO) != 0, "Unable to initialize SDL");

    // Create and initialize a 800x600 window
    SDL_Window* window = SDL_CreateWindow("Test SDL 2", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
                                          800, 600, SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL);
    check_error_sdl(window == nullptr, "Unable to create window");

    // Create and initialize a hardware accelerated renderer that will be refreshed in sync with your monitor (at approx. 60 Hz)
    SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
    check_error_sdl(renderer == nullptr, "Unable to create a renderer");

    // Set the default renderer color to corn blue
    SDL_SetRenderDrawColor(renderer, 100, 149, 237, 255);

    // Initialize SDL_img
    int flags=IMG_INIT_JPG | IMG_INIT_PNG;
    int initted = IMG_Init(flags);
    check_error_sdl_img((initted & flags) != flags, "Unable to initialize SDL_image");

    // Load the image in a texture
    SDL_Texture *texture = load_texture("img_test.png", renderer);

    // We need to create a destination rectangle for the image (where we want this to be show) on the renderer area
    SDL_Rect dest_rect;
    dest_rect.x = 50; dest_rect.y = 50;
    dest_rect.w = 337; dest_rect.h = 210;

    // Clear the window content (using the default renderer color)
    SDL_RenderClear(renderer);

    // Copy the texture on the renderer
    SDL_RenderCopy(renderer, texture, NULL, &dest_rect);

    // Update the window surface (show the renderer)
    SDL_RenderPresent(renderer);

    // Wait for 10 seconds
    SDL_Delay(10000);

    // Clear the allocated resources
    SDL_DestroyTexture(texture);
    IMG_Quit();
    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();

    return 0;
}
 
// In case of error, print the error code and close the application
void check_error_sdl(bool check, const char* message) {
    if (check) {
        std::cout << message << " " << SDL_GetError() << std::endl;
        SDL_Quit();
        std::exit(-1);
    }
}

// In case of error, print the error code and close the application
void check_error_sdl_img(bool check, const char* message) {
    if (check) {
        std::cout << message << " " << IMG_GetError() << std::endl;
        IMG_Quit();
        SDL_Quit();
        std::exit(-1);
    }
}

// Load an image from "fname" and return an SDL_Texture with the content of the image
SDL_Texture* load_texture(const char* fname, SDL_Renderer *renderer) {
    SDL_Surface *image = IMG_Load(fname);
    check_error_sdl_img(image == nullptr, "Unable to load image");

    SDL_Texture *img_texture = SDL_CreateTextureFromSurface(renderer, image);
    check_error_sdl_img(img_texture == nullptr, "Unable to create a texture from the image");
    SDL_FreeSurface(image);
    return img_texture;
}

g++ -std=c++0x -Wall -pedantic sdl2_test.cpp -o sdl2_test `sdl2-config --cflags --libs` -lSDL2_image
o  bé
g++-4.9 -std=c++14 -Wall -pedantic sdl2_test.cpp -o sdl2_test `sdl2-config --cflags --libs` -lSDL2_image
./sdl2_test


Ara ja instal.lo stella i ara ja funciona, directament des de la consola.

L'únic problema és que quan surto de l'emulador, el teclat queda totalment deshabilitat, la qual cosa és molt empipador. És un problema de SDL. La solució és executar sudo kbd_mode -a després de sortir de l'emulador. S'ha de ficar aquesta sentència en el script que crida a l'emulador. Si tinc una finestra SSH també puc executar la sentència, i el teclat torna a funcionar en el teclat enganxat a la RPi.

stella /home/pi/roms/atari2600/berzerk.bin
sudo kbd_mode -a

Configuració

S'ha de tenir en compte quins són els interruptors que hi ha en una Atari 2600. D'una banda hi ha el botó de Reset, que seria per començar el joc. Després hi ha dos interruptors per tal de què els jugadors 1 i 2 seleccionin la seva dificultat.

Després hi ha l'interruptor Game Select, doncs representa que en un cartutxo hi poden haver varis jocs, o bé la versió per 1 jugador i la versió per 2 jugadors.

La configuració queda al final de la següent manera:

  • Reset: 1
  • Game Select: 9 (a Yar's Revenge és necessari per jugar amb dos jugadors)
  • P0 Difficult A: 2 (a vegades és necessari aquest botó per començar el joc, com a X-Man)
  • P0 Difficult B: 4
  • P0 Swap Difficult: 5
  • P1 Difficult A: B
  • P1 Difficult B: (none)
  • P1 Swap Difficult: C
  • Pause: 6
  • Quit: 0
  • joystick P0: left, right, up, down
  • Fire P0: 3
  • joystick P1: J, L, I, K
  • Fire P1: A

I el fitxer stellarc queda de la següent manera:

keymap = 119:0:0:0:0:25:7:12:0:49:25:23:22:21:23:22:24:0:0:0:61:47:0:51:0:0:0:48:54:21:53:10:5:18:6:11:97:0:56:9:96:0:101:102:98:18:0:0:0:0:99:0:64:0:100:65:66:67:0:9:10:3:5:6:0:7:8:94:92:93:95:0:0:97:0:0:0:0:0:0:17:16:15:14:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:18:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:113:117:118:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:109:111:0:110:112:108:107:106:105:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
joymap = 119
combomap = 16:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0:0,0,0,0,0,0,0,0

Descàrrega del fitxer complert:

ROMs

Jocs

3-D Tic-Tac-Toe
Activision Decathlon, The
Adventure
Air Raiders
Air-Sea Battle
Asteroids
Atlantis
Basketball
BattleZone
Beamrider
Berzerk
Bobby Is Going Home
Bowling
Boxing
Breakout
Carnival
Casino
Centipede
Chopper Command
Combat
Commando Raid
Condor Attack
Cosmic Ark
Custer's Revenge
Defender
Demon Attack
Dig Dug
Dodge 'Em
Donkey Kong
E.T.
Enduro
Fishing Derby
Flash Gordon
Football
Freeway
Frogger
Frostbite
Galaxian
Gorf
Grand Prix
H.E.R.O.
Hard-Head
Ice Hockey
International Soccer
Jawbreaker
Joust
Jungle Hunt
kaboom!
Kangaroo
Keystone Kapers
Krull
Laser Gates
Mario Bros.
MegaMania
Missile Command
Moon Patrol
Mouse Trap
Mr. Postman
Ms. Pac-Man
Night Driver
Outlaw
Pac Man
Pac-Man
Pele's Soccer
Phoenix
Pinball
Pitfall!
Pitfall!-Pitfall Harry's Jungle Adventure
Planet Patrol
Pole Position
Polo -> és el primer joc fet per una programadora, Carol Shaw (Atari)
Pong
Popeye
Q*bert
Raiders of the Lost Ark
RealSports Tennis
River Raid
River Raid II
Robot Tank
Save Our Ship
Seaquest
Skiing
Smurf
Space Invaders
Spider Fighter
Spy Hunter
Subterranea
Super Breakout
Superman
SwordQuest-EarthWorld
Taz
Tennis
Trick Shot
Vanguard
Venture
Video Checkers
Video Chess
Video Pinball
Volleyball
Warlords
Wizard of Wor
X-Man
Xenophobe
Yars' Revenge
Zaxxon

Valoració dels jocs (TBD)


Per jugar als jocs:
press f2 then f1 then fire ( what ever button you mapped to it ). I always found it frustrating to get to work, and I just hit f2 and f1 and fire until it started to work. I never really took the time to learn how the atari was intended to work, and some games just woudl not start at all. Its not the emulators its just common atari knowledge ( that of which most of us dont have or remember ).

És a dir, el Reset és el START, i el mapejo a '1'.

Assingo el '4' al canvi de dificultat del jugador 1 (P0 Swap difficulty), i la 'B' al canvi de dificultat del jugador 2 (P1 Swap difficulty)

creat per Joan Quintana Compte, maig 2017