RetroPie 3.0: configuração de controles distintas para jogos de luta SNK e CAPCOM
Autor: Meleu Zord | Publicado: 2015-07-06T23:33:00-03:00

Pra quem não sabe o que é RetroPie e nem Raspberry Pi, eu recomendo uma visita nos seguintes links:
http://blog.petrockblock.com/retropie/
https://www.raspberrypi.org/

OBSERVAÇÃO:
Como o RetroPie é um projeto relativamente novo, algumas coisas estão mudando assim que novas versões são lançadas, como por exemplo arquivos de configuração e os seus respectivos diretórios. Então é bom frisar que o esquema explicado aqui foi realizado no RetroPie 3.0 beta 4 (também testei no 2.6, mas alguns diretórios são diferentes).


PROBLEMA
No RetroPie o emulador utilizado para a maioria dos jogos de luta de arcade é FinalBurn Alpha (ou fba, ou ainda pifba, como a versão para Raspberry Pi é chamada). Só que diferentemente do MAME, o FBA não tem como configurar os controles individualmente por jogo. E aí que começa o meu problema. Pois eu costumo jogar num controle de PlayStation2, utilizando o seguinte esquema:

quadrado: soco fraco
triângulo: soco forte
xis: chute fraco
bola: chute forte
R1: soco médio [CAPCOM]
R2: chute médio [CAPCOM]

O problema é que nos games CAPCOM temos o soco/chute médio, e nos games SNK não temos. Aí a configuração que eu considero ideal para um já não fica legal no outro. Pois aqui vou descrever como contornar este problema.


SOLUÇÃO

passo 1

Colocar as roms dos jogos SNK no diretório "/home/pi/RetroPie/roms/neogeo". No meu caso foram as várias edições de Art of Fighting, Samurai Shodown, Metal Slug, Fatal Fury e King of Fighters. O sistema vai continuar executando o pifba para jogar estas roms, mas fazendo desta forma o emulationstation vai ficar mais organizadinho. 


Colocar as roms CAPCOM no diretório "/home/pi/RetroPie/roms/fba". No meu caso foram os Street Fighter da vida, Marvel vs Capcom, X-Men vs Street Fighter (infelizmente não rodou Street Fighter 3).



passo 2
Criar dois arquivos de configuração distintos para SNK e CAPCOM.

Um vai se chamar "/opt/retropie/configs/fba/fba2x.cfg-neogeo":


### meleu: ARQUIVO DE CONFIGURACAO DOS BOTOES PARA JOGAR JOGOS DA SNK ############################################################################[Keyboard]# Get codes from /usr/include/SDL/SDL_keysym.hA_1=306B_1=32X_1=308Y_1=304L_1=122R_1=120START_1=13SELECT_1=9LEFT_1=276RIGHT_1=275UP_1=273DOWN_1=274QUIT=27#player 2 keyboard controls, disabled by defaultA_2=999B_2=999X_2=999Y_2=999L_2=999R_2=999START_2=999SELECT_2=999LEFT_2=999RIGHT_2=999UP_2=999DOWN_2=999[Joystick]# Get codes from "jstest /dev/input/js0"# from package "joystick"# quadrado = soco fracoA_1=3# triangulo = soco forteB_1=0# xis = chute fracoX_1=2# bolinha = chute forteY_1=1L_1=7R_1=5START_1=9SELECT_1=8#Joystick axisJA_LR=0JA_UD=1#player 2 button configurationA_2=3B_2=0X_2=2Y_2=1L_2=7R_2=5START_2=9SELECT_2=8#Joystick axisJA_LR_2=0JA_UD_2=1[Graphics]DisplaySmoothStretch=1# Display Effect: 0 none, 1 scanlinesDisplayEffect=0DisplayBorder=0MaintainAspectRatio=1[Sound]### FINAL DO ARQUIVO ###

O outro arquivo vai se chamar&nbsp; "/opt/retropie/configs/fba/fba2x.cfg-capcom":


### meleu: ARQUIVO DE CONFIGURACAO DOS BOTOES PARA JOGAR JOGOS DA CAPCOM ###
############################################################################
[Keyboard]
# Get codes from /usr/include/SDL/SDL_keysym.h
A_1=306
B_1=32
X_1=308
Y_1=304
L_1=122
R_1=120
START_1=13
SELECT_1=9
LEFT_1=276
RIGHT_1=275
UP_1=273
DOWN_1=274
QUIT=27
#player 2 keyboard controls, disabled by default
A_2=999
B_2=999
X_2=999
Y_2=999
L_2=999
R_2=999
START_2=999
SELECT_2=999
LEFT_2=999
RIGHT_2=999
UP_2=999
DOWN_2=999

[Joystick]
# Get codes from "jstest /dev/input/js0"
# from package "joystick"
### meleu: lembrando que eu costumo utilizar um controle de ps2
# A = soco fraco = quadrado
A_1=3
# B = soco forte = triangulo
B_1=0
# X = soco medio = R1
X_1=7

# Y = chute fraco = xis
Y_1=2
# L = chute médio = R2
L_1=5
# R = chute forte = bola
R_1=1

START_1=9
SELECT_1=8
#Joystick axis
JA_LR=0
JA_UD=1
#player 2 button configuration
A_2=3
B_2=0
X_2=7
Y_2=2
L_2=5
R_2=1
START_2=9
SELECT_2=8
#Joystick axis
JA_LR_2=0
JA_UD_2=1

[Graphics]
DisplaySmoothStretch=1
# Display Effect: 0 none, 1 scanlines
DisplayEffect=0
DisplayBorder=0
MaintainAspectRatio=1

[Sound]### FINAL DO ARQUIVO ###




passo 3
Mudar o dono do arquivo "/opt/retropie/configs/fba/fba2x.cfg", executando o seguinte comando:



chown pi.pi /opt/retropie/configs/fba/fba2x.cfg




Isso vai permitir que possamos alterar este arquivo no esquema seguir.


passo 4
Copiar o arquivo "/etc/emulationstation/es_systems.cfg" para seu diretório pessoal, executando o seguinte comando:



cp /etc/emulationstation/es_systems.cfg ~/.emulationstation/es_systems.cfg




passo 5
O es_systems.cfg é um arquivo XML relativamente fácil de entender. Primeiro vamos procurar pela entrada referente ao neogeo. Estará algo assim:
...
  &lt;system&gt;
    &lt;name&gt;neogeo&lt;/name&gt;
    &lt;fullname&gt;Neo Geo&lt;/fullname&gt;
    &lt;path&gt;~/RetroPie/roms/neogeo&lt;/path&gt;
    &lt;extension&gt;.zip .fba .ZIP .FBA&lt;/extension&gt;
    &lt;command&gt;/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ neogeo %ROM%&lt;/command&gt;
    &lt;platform&gt;neogeo&lt;/platform&gt;
    &lt;theme&gt;neogeo&lt;/theme&gt;
  &lt;/system&gt;
...


Na linha    nós vamos alterar para o seguinte:

&lt;command&gt;(cd /opt/retropie/configs/fba/ && cat fba2x.cfg-neogeo &gt; fba2x.cfg) && /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ neogeo %ROM%&lt;/command&gt;

Em seguida vamos fazer a mesma coisa com a entrada referente ao fba. Ela estará assim:

...
  &lt;system&gt;
    &lt;name&gt;fba&lt;/name&gt;
    &lt;fullname&gt;Final Burn Alpha&lt;/fullname&gt;
    &lt;path&gt;~/RetroPie/roms/fba&lt;/path&gt;
    &lt;extension&gt;.fba .zip .FBA .ZIP&lt;/extension&gt;
    &lt;command&gt;/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ fba %ROM%&lt;/command&gt;
    &lt;platform&gt;arcade&lt;/platform&gt;
    &lt;theme&gt;fba&lt;/theme&gt;
  &lt;/system&gt;
...



Alterar a linha   para o seguinte:

&lt;command&gt;(cd /opt/retropie/configs/fba/ && cat fba2x.cfg-capcom &gt; fba2x.cfg) && /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ fba %ROM%&lt;/command&gt;



passo 6 [OPCIONAL]
Aproveite para eliminar do emulationstation os sistemas que você não usa (por exemplo amiga, macintosh, apple II, ScummVM, etc) basta comentar a entrada referente a estes sistemas usando &lt;!-- e --&gt;, como no exemplo abaixo

...
&lt;!-- ## SISTEMAS QUE NÃO QUERO QUE APAREÇA ##
     ########################################
  &lt;system&gt;
    &lt;name&gt;amiga&lt;/name&gt;
    &lt;fullname&gt;Amiga&lt;/fullname&gt;
    &lt;path&gt;~/RetroPie/roms/amiga&lt;/path&gt;
    &lt;extension&gt;.sh .SH&lt;/extension&gt;
    &lt;command&gt;/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ amiga %ROM%&lt;/command&gt;
    &lt;platform&gt;amiga&lt;/platform&gt;
    &lt;theme&gt;amiga&lt;/theme&gt;
  &lt;/system&gt;
--&gt;
...




finalizando
Reiniciar o emulationstation e pronto!