Inicialmente este blog foi criado para armazenar algumas dicas e links de UNIX/Linux, OpenVMS, linguagem C, Assembly, TCP/IP e nerdezas afins. No entanto devido ao autor ter abandonado o seu plano de ser um super hacker e dominar o mundo (devido esposa, família, filhos, trabalho), a partir de 2012 este blog tem um tipo de nerdeza mais light (Android, Linux, RetroPie (retrogames), produtividade, e por aí vai). Estas dicas raramente serão criações minhas.

Mostrando postagens com marcador jogos. Mostrar todas as postagens
Mostrando postagens com marcador jogos. Mostrar todas as postagens

segunda-feira, 6 de julho de 2015

RetroPie 3.0: configuração de controles distintas para jogos de luta SNK e CAPCOM

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.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"
# quadrado = soco fraco
A_1=3
# triangulo = soco forte
B_1=0
# xis = chute fraco
X_1=2
# bolinha = chute forte
Y_1=1
L_1=7
R_1=5
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=2
Y_2=1
L_2=7
R_2=5
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 ###


O outro arquivo vai se chamar  "/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:
...
  <system>
    <name>neogeo</name>
    <fullname>Neo Geo</fullname>
    <path>~/RetroPie/roms/neogeo</path>
    <extension>.zip .fba .ZIP .FBA</extension>
    <command>/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ neogeo %ROM%</command>
    <platform>neogeo</platform>
    <theme>neogeo</theme>
  </system>
...

Na linha nós vamos alterar para o seguinte:

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

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

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


Alterar a linha para o seguinte:

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

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 <!-- e -->, como no exemplo abaixo

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

finalizando

Reiniciar o emulationstation e pronto!

sexta-feira, 23 de outubro de 2009

Resolvendo o Cubo de Rubik - Passo 3

Devemos virar todo o cubo de maneira que face já montada (face U) se torne a face D. Agora queremos montar a cruz da nova face U (que é a última camada).

Imaginemos que a cor da última camada seja amarela. Inicialmente vamos somente fazer uma cruz amarela, sem se importar se as peças estão no local correto. Temos 3 possibilidades:

  • Se duas peças adjacentes estão com a face amarela para cima. Rotacione o cubo de maneira que as peças fiquem em UF e UR. Em seguida aplique B U L U' L' B'.

  • Se duas peças opostoas estão com a face amarela para cima. Rotacione o cubo de maneira que fiquem em UL e UR. Em seguida aplique B L U L' U' B'.

  • Se nenhuma peça tem a face amarela para cima. Aplique um dos algoritmos acima e em seguida o outro.

  • quarta-feira, 21 de outubro de 2009

    Resolvendo o Cubo de Rubik - passo 2

    Agora vem as arestas da camada do meio.

    Deve-se colocar na camada de baixo, a aresta que se quer por na posição correta. Exemplo: o centro azul é vizinho do centro vermelho, então devemos colocar a peça que tem azul/vermelho na camada de baixo e seguir os passos descritos aqui.

    Uma vez que esta peça está na camada de baixo, observamos qual a cor que está na face D. Seguindo o exemplo acima, se for vermelho que está na face D, giramos D de maneira que a peça fique no lado oposto da face que tem o centro vermelho. Ou seja, se o centro vermelho está em F, rotacionamos D até que a peça azul/vermelho fique na posição DB.

    Continuando neste exemplo de cores, colocamos a face de centro vermelho em F e observamos se a face de centro azul está em R ou L.

  • Se estiver em R, aplicamos F D F' D' R' D' R.
  • Se estiver em L, aplicamos F' D' F D L D L'.

    Citando o que está escrito na página onde achei isso: "Uma forma de entender este movimento, se quiser memorizá-lo, é que você está removendo a peça do canto da face U logo acima da aresta que você está tentando repor, e então colocando-a de volta vindo da outra direção, com o efeito colateral de mover a aresta para a posição correta."


    Repetimos isso em todas as cores e TA-DA! A segunda camada já está montada!

    To be continued...

  • sábado, 17 de outubro de 2009

    Resolvendo o Cubo de Rubik - passo 1

    Primeira coisa básica e importante: as peças do meio nunca mudam de posição em relação às demais peças do meio.

    O primeiro passo é montar uma face. Se insistir um pouquinho até que se consegue, mas o segredinho é montar primeiro a "cruz" e depois montar os cantos.

    Deve-se ficar atento para as cores das peças centrais nas faces vizinhas. Ou seja, não adianta montar a face U todinha branca se na face R as peças de cima estão todas misturadas.

    Na página mencionada no post anterior tem os movimentos, mas se você se concentrar em fazer primeiro a cruz e depois os cantos fica relativamente tranquilo.

    To be continued...

    sexta-feira, 16 de outubro de 2009

    Resolvendo o Cubo de Rubik

    Durante a minha infância eu de vez em quando ficava polegando um cubo de rubik (ou cubo mágico) que tinha na minha casa. Nunca resolvi e nunca vi ninguém resolvendo ao vivo. Claro, já vi vídeos impressionantes na internet, mas meros mortais conhecidos resolvendo na minha frente eu nunca vi.

    Em algum momento posterior da minha infância o cubo ficou de lado e nunca mais o vi.

    Eis que no dia das crianças um primo do meu filho dá de presente a ele um cubo de Rubik! Resolvi pesquisar na Internet algum passo-a-passo para solucionar o cubo e encontrei aqui: http://unesp.br/~jroberto/rubiks

    Depois de mais uma vez pensar "como vivíamos sem a Internet e o Google antes?" eu resolvi começar a resolver o cubo. E o que descreverei aqui é somente um resumo bem enxuto escrito de maneira bastante pessoal e intimista. Se você está lendo isso e quer resolver o cubo visite a página mencionada que acredito que será mais proveitoso.

    Notação

  • Face de Cima (Upper) = U
  • Face de Baixo (Down) = D
  • Face Esquerda (Left) = L
  • Face Direita (Right) = R
  • Face Frontal (Front) = F
  • Face Traseira (Back) = B

    Os movimentos de uma face são nos sentidos horários ou anti-horários da face em relação ao centro do cubo. Notação das rotações usando a face U como exemplo:

  • Um giro de 90 graus horário: U.
  • Um giro de 90 graus anti-horário: U' (U linha)
  • Um giro de 180 graus horário ou anti-horário: U2 (U quadrado)

    Também podemos nos referir à localização de peças individuais por combinações de duas letras, para arestas, ou por combinações de três letras para os cantos. Por exemplo, a peça no canto superior, direito, frontal é chamada URF (Upper, Right, Front), e a aresta inferior, esquerda é chamada DL.

    Por enquanto é só. Depois eu coloco como montar a primeira face. Se você está lendo isso e você não sou eu, vá ler direto em http://unesp.br/~jroberto/rubiks que você vai lucrar mais.

  • quarta-feira, 19 de novembro de 2008

    Frets on Fire

    Quando conheci o jogo Guitar Hero fiquei extremamente tentado a comprar um PS2 só para jogá-lo. Depois pensei em encontrar um emulador de PS2, mas os comentários de pessoas que já experimentaram dizem que precisa de um computador possante (e isso eu não tenho). O negócio foi miando... Até que um dia, sem querer acabei conhecendo um jogo chamado Frets on Fire! Minha vida mudou!

    O jogo original fica em http://fretsonfire.sourceforge.net.

    Como o jogo é open source (feito em python) também existem muitas versões modificadas, com muitos recursos (multiplayer, baixo, bateria...). Um bom lugar para se informar a respeito dessas coisas é em http://fretsonfire.wikidot.com/. Quem tem um computador com uma boa configuração (video off-board, mais de 1GB de RAM, etc.) eu recomendo o FoFix.

    E um bom lugar para baixar musicas é em http://fretsonfire.ath.cx/.

    tags