Olá Este é um console de jogos retrô baseado no Raspberry Pi. Em um cartucho do console do jogo NES. Uma tela integrada pode ser usada para o jogo. Ao emitir vídeo via HDMI, mostra a imagem da capa do jogo, bem como a temperatura central, veja a foto. Sugiro um pouco de nastalgit e leio sobre a montagem e configuração de um dispositivo desse tipo. Cuidado, depois muito tráfego e fotos.
Nostalgia
Na infância, nós, com mais de 25 a 35 anos, adorávamos jogar consoles. Então não havia nenhuma palavra nova para o console, então vou chamá-los assim. Meu conhecimento dos consoles começou com Dandy (clone do NES). Super Mario Bros, Contra, Ducktales, Battletoads são apenas
alguns dos hits da época. Então todo o quintal ia tocar com meu amigo Sega (Sega Mega Drive), em sucessos como Sonic, Ultimate Mortal Combat 3, Contra Hard Corps e muito
mais . E quando o Play Station saiu, devo dizer, ele não nos alcançou imediatamente, a série Resident Evil causou um prazer verdadeiramente assustador.
Essa foto me ajudou a enxugar uma lágrima de nostalgia. Devo dizer que não sou o primeiro a criar um Raspberry Pi no cartucho NES. Sim, este não é o meu dispositivo. E este cartucho é quase ideal para esses fins, é pequeno e bonito. E por dentro há muito espaço. Julgue por si mesmo.
Dentro do Raspberry Pi Zero, um hub USB e um par de cabos de extensão. Todas as varas são colocadas na cola hot melt.
Assembléia
Eu queria colecionar algo igual ou similar. O mesmo cartucho do NES foi selecionado. Outras opções são muito pequenas ou não parecem muito boas. O Raspberry Pi 3B era o coração ardente do carro retrô. Os conectores USB com pinos de solda convenientes também foram adquiridos na Ali. Isso é tudo.
Ah, sim, você repetirá este projeto, não tome cartuchos de tinta. Existem tão poucos deles. Pegue algo mais comum ou menos conhecido. Existe também a opção de levar um cartucho com Ali, mas o original aquece a alma. Meu lançamento em 1986.
Você também precisará de uma chave de fenda
nes especial se o cartucho estiver
parafusado em três parafusos. Também existem opções de cartuchos precoces com cinco parafusos, que são desaparafusados com uma chave de fenda comum. Eu tenho apenas um.
Todas as peças que interferem são cortadas e serradas do cartucho com uma faca de escritório e uma lâmina de serra.
Os conectores salientes foram soldados ao Raspberry Pi. Os especialistas dizem que você pode ficar sem uma estação de solda, se primeiro desmontar cuidadosamente os conectores com cortadores de fio e depois soldar uma perna de cada vez. Tudo colado ao hot melt. Entre os conectores USB e a framboesa, havia um isolador de plástico não consumível. Não esqueça de conectar o GND Raspberry Pi e o corpo do conector USB (não mostrado na figura acima). Caso contrário, alguns joysticks não funcionarão.
O último
Retropie foi instalado na
framboesa . No começo, havia o
Recalbox , mas eu o recusei, porque ele não suporta a vibração dos joysticks no Playstation 1. Mas devo dizer, o Recalbox é um pouco mais conveniente em termos do que funciona imediatamente e não há nada para configurar. No Retropie, várias configurações, você pode personalizar infinitamente. É disso que eu gostei.
Aqui está o que aconteceu. Todos os joysticks com xinput estão conectados.
Ecrã
O apetite vem com a comida. Que tal incorporar a tela no cartucho? Para reproduzir ou exibir a imagem da capa do jogo.
Essa tela foi encomendada. Esta é uma tela de DPI paralela de 800 * 480 de 3,5 polegadas que usa quase todo o GPIO Raspberry Pi. Funciona para mim no modo 120 Hz (mas a renderização ainda está em 60 Hz), a resposta é instantânea. O único aspecto negativo é a matriz de 6 bits. Apenas 262.144 cores. Embora, em geral, isso não seja particularmente perceptível, julgue por si mesmo.
Screenshot do jogo Comix Zone (Clicável)
Todas as pernas da tela e do Raspberry Pi foram soldadas. A tela foi soldada por dois cabos de um velho cabo IDE esfarrapado. Hipotecas de 5 mm são instaladas sob a tela, não tocam na parede inferior do cartucho. Uma fita isolante é colada ao redor do perímetro da tela para que não haja flashes laterais. Tudo é colado à cola quente. Na tampa superior, cortei uma janela e colei um copo com 2 mm de espessura.
Para começar a exibir imagens nesta tela, você precisa corrigir a configuração
/boot/config.txt . Eu recomendo os proprietários do
WinSCP para Windows, que, ao conectar-se ao Raspberry Pi via SSH, fornecem a apresentação dos arquivos como no comando Total. Muito confortável Especialmente se você executá-lo no modo de
shell sudo su - , que dá acesso a todos os arquivos.
Infelizmente, quando a tela DPI está ligada, a saída de vídeo HDMI não funciona. Portanto, criei dois
arquivos de configuração na pasta
/ boot / , um
config_hdmi.txt e o segundo
config_dpi.txt . A configuração
config_hdmi.txt define a resolução para 1080p60Hz e remove o overscan.
config_dpi.txt contém as configurações de DPI da tela.
config_dpi.txt# uncomment if you get no picture on HDMI for a default "safe" mode #hdmi_safe=1 disable_overscan=1 # uncomment to force a specific HDMI mode (this will force VGA) #hdmi_group=1 #hdmi_mode=1 # Sound output. Set to 0 or comment for autodetect, 1 for DVI, 2 to force HDMI. #hdmi_drive=2 # Using /etc/modules is deprecated and no longer supported on 4.4 kernel # So manually enable audio dtparam=audio=on config_hdmi_boost=0 # force hdmi while the tv can take time before sending the signal on the hdmi output hdmi_force_hotplug=1 # uncomment for composite PAL #sdtv_mode=2 # uncomment for lirc-rpi #dtoverlay=lirc-rpi #3.5 HD tft screen 800x480 dtoverlay=dpi24 overscan_left=0 overscan_right=0 overscan_top=0 overscan_bottom=0 #Banggood framebuffer_width=800 framebuffer_height=480 dtparam=spi=off dtparam=i2c_arm=off enable_dpi_lcd=1 display_default_lcd=1 dpi_output_format=0x6f015 dpi_group=2 dpi_mode=87 hdmi_timings=480 0 16 16 24 800 0 4 2 2 0 0 0 120 0 46080000 6 display_rotate=3 # if you plug your tv at the same time as your rpi and that the rpi switches from the hdmi or give a low resolution because tv had no enough time to initialize it boot_delay=3 # uncomment if you don't want the rainbow at startup #disable_splash=1 # default CEC name #cec_osd_name=recalbox dtparam=spi=off # Overclock gpu_mem_256=128 gpu_mem_512=256 gpu_mem_1024=256 overscan_scale=1 gpu_mem=256 start_x=0 enable_uart=0 avoid_safe_mode=1 kernel=zImage
config_hdmi.txt # For more options and information see # http://rpf.io/configtxt # Some settings may impact device functionality. See link above for details # uncomment if you get no picture on HDMI for a default "safe" mode #hdmi_safe=1 # uncomment this if your display has a black border of unused pixels visible # and your display can output without overscan disable_overscan=1 # uncomment the following to adjust overscan. Use positive numbers if console # goes off screen, and negative if there is too much border #overscan_left=16 #overscan_right=16 #overscan_top=16 #overscan_bottom=16 # uncomment to force a console size. By default it will be display's size minus # overscan. #framebuffer_width=1280 #framebuffer_height=720 # uncomment if hdmi display is not detected and composite is being output hdmi_force_hotplug=1 # uncomment to force a specific HDMI mode (this will force VGA) hdmi_group=1 #1080p60fps hdmi_mode=16 # uncomment to force a HDMI mode rather than DVI. This can make audio work in # DMT (computer monitor) modes #hdmi_drive=2 # uncomment to increase signal to HDMI, if you have interference, blanking, or # no display #config_hdmi_boost=4 # uncomment for composite PAL #sdtv_mode=2 #uncomment to overclock the arm. 700 MHz is the default. #arm_freq=800 # Uncomment some or all of these to enable the optional hardware interfaces #dtparam=i2c_arm=on #dtparam=i2s=on dtparam=spi=off # Uncomment this to enable the lirc-rpi module #dtoverlay=lirc-rpi # Additional overlays and parameters are documented /boot/overlays/README # Enable audio (loads snd_bcm2835) dtparam=audio=on gpu_mem_256=128 gpu_mem_512=256 gpu_mem_1024=256 overscan_scale=1 gpu_mem=256 start_x=0 enable_uart=0
Mudar as configurações será o nosso autoscript que está disponível na rede
\\ 192.168.x.xxx \ configs \ all \ autostart.sh ou na pasta no dispositivo /opt/retropie/configs/all/autostart.sh
O script
switchscreen.sh também foi escrito, que deve ser colocado em
/ home / pi / RetroPie / retropiemenu / . Esse script alterna manualmente as configurações e pode ser acessado no menu principal de configurações do Retropie. Depois de iniciá-lo, é necessário puxar o cabo HDMI; caso contrário, após a reinicialização, tudo voltará automaticamente. Não se esqueça de registrar o script
chmod +x /home/pi/RetroPie/retropiemenu/switchscreen.sh
O Autostart.sh mostra traços de código que desabilitam o DPI da tela quando o HDMI está ativado. Copiei esse script na Internet, para que não funcione na nossa tela. Poderíamos ser confundidos com transistores para desligar a energia da tela, mas por que, se precisarmos exibir a imagem da capa do jogo em execução no momento? Você só precisa descobrir o que é DPI.
Interface de exibição paralela (DPI)
O DPI, como já foi dito, é uma interface paralela para telas. Informações nesta interface
uma vez ,
duas vezes e
calculadas incorretamente . Bem, agora estará aqui, em russo.
Todas as tentativas de ativar o DPI com comandos do console durante a operação HDMI falharam. Talvez ele estivesse fazendo algo errado. O plano B foi adotado para implementação: exibir a imagem em uma tela pequena, puxando as pernas do GPIO programaticamente.
O DPI é caracterizado pelo fato de que um pixel é transmitido para a tela por ciclo de clock do sinal de clock. Como temos uma matriz de 6 bits, são 18 pinos para três cores e também há exibição habilitada (indica uma data válida), h_sync (define o endereço da linha horizontal como zero no controlador de exibição), v_sync (define o endereço da linha vertical como zero no controlador de exibição ) A captura de dados ocorre na extremidade descendente do sinal do relógio. Isso é conhecido se descriptografarmos a linha “dpi_output_format = 0x6f015” do nosso
config_dpi.txt de acordo com esta terminologia.
dpi_output_format output_format = (dpi_output_format >> 0) & 0xf; rgb_order = (dpi_output_format >> 4) & 0xf; output_enable_mode = (dpi_output_format >> 8) & 0x1; invert_pixel_clock = (dpi_output_format >> 9) & 0x1; hsync_disable = (dpi_output_format >> 12) & 0x1; vsync_disable = (dpi_output_format >> 13) & 0x1; output_enable_disable = (dpi_output_format >> 14) & 0x1; hsync_polarity = (dpi_output_format >> 16) & 0x1; vsync_polarity = (dpi_output_format >> 17) & 0x1; output_enable_polarity = (dpi_output_format >> 18) & 0x1; hsync_phase = (dpi_output_format >> 20) & 0x1; vsync_phase = (dpi_output_format >> 21) & 0x1; output_enable_phase = (dpi_output_format >> 22) & 0x1; output_format: 1: DPI_OUTPUT_FORMAT_9BIT_666 2: DPI_OUTPUT_FORMAT_16BIT_565_CFG1 3: DPI_OUTPUT_FORMAT_16BIT_565_CFG2 4: DPI_OUTPUT_FORMAT_16BIT_565_CFG3 5: DPI_OUTPUT_FORMAT_18BIT_666_CFG1 6: DPI_OUTPUT_FORMAT_18BIT_666_CFG2 7: DPI_OUTPUT_FORMAT_24BIT_888 rgb_order: 1: DPI_RGB_ORDER_RGB 2: DPI_RGB_ORDER_BGR 3: DPI_RGB_ORDER_GRB 4: DPI_RGB_ORDER_BRG output_enable_mode: 0: DPI_OUTPUT_ENABLE_MODE_DATA_VALID 1: DPI_OUTPUT_ENABLE_MODE_COMBINED_SYNCS invert_pixel_clock: 0: RGB Data changes on rising edge and is stable at falling edge 1: RGB Data changes on falling edge and is stable at rising edge. hsync/vsync/output_enable_polarity: 0: default for HDMI mode 1: inverted hsync/vsync/oe phases: 0: DPI_PHASE_POSEDGE 1: DPI_PHASE_NEGEDGE

A sequência de bits é mostrada na figura acima. Para cada linha que começa com VSYNC, há um ciclo completo de medidas da linha HSYNC. Este é um quadro. Alpendre traseiro e frontal são os chamados recuos da tela, que estão na memória do controlador, mas não estão na tela.
Agora decodifique a linha “hdmi_timings = 480 0 16 16 24 800 0 4 2 2 0 0 0 120 0 46080000 6” do nosso config_dpi.txt. Não há nada complicado aqui, basta escrever os parâmetros em ordem.
Quais pernas GPIO são usadas para renderização em cores são mostradas nesta figura. Temos o Modo 5. Atenção, essas não são as pernas em ordem, a saber, a notação GPIO! Outros sinais Relógio - GPIO 0, DE - GPIO 1, VSYNC - GPIO 2, HSYNC - GPIO 3.
Um python foi instalado rapidamente, a biblioteca GPIO necessária e um script hello foi escrito, pelo menos colorindo a tela em azul. E também tive uma dissonância cognitiva quando o Notepad ++ no Windows não mostrou o recuo em que eles estavam no nano, enquanto fazia o empacotamento de tabulação, em vez de espaços, ao empacotar linhas. A propósito, VSCode peca da mesma maneira, como consertá-lo, eu não o encontrei.
Script Python from gpiozero import LED from time import sleep sleep_time = 0.0 clock = LED(0) de = LED(1) vsync = LED(2) hsync = LED(3) red2 = LED(16) red3 = LED(17) red4 = LED(18) red5 = LED(19) red6 = LED(20) red7 = LED(21) green2 = LED(10) green3 = LED(11) green4 = LED(12) green5 = LED(13) green6 = LED(14) green7 = LED(15) blue2 = LED(4) blue3 = LED(5) blue4 = LED(6) blue5 = LED(7) blue6 = LED(8) blue7 = LED(9) def v_sync(frame): vsync.on() for n in range(frame): clock.on()
Muito devagar, Python. Foi uma surpresa para mim o desaparecimento dos pixels já renderizados. Embora o que eu estava esperando seja óbvio.
Foi decidido reescrever tudo em C. Ele funciona mais rápido, a cerca de alguns quadros por segundo. A tela ondula como nos antigos monitores ou radares CRT. O que você precisa Retro! O código é publicado no
GitHub .
O GPIO é acessado diretamente através dos registros BCM2837 SoC. Eu peguei exemplos de código
aqui .
Tudo começou com um programa muito pequeno, mas agora o processador e a memória são carregados na forma de pequenas barras de rolagem. A temperatura do processador é desenhada nessa fonte.
Para executar o código, você precisa copiar o conteúdo do repositório para a pasta / home / pi / lcd_screen / (Quem sabe como escrever o caminho relativo ao binário e não a pasta de trabalho em C no nix? Portanto, até agora apenas nesta pasta) e execute os seguintes comandos.
gcc ./lcd_screen/lcd.c -o ./lcd_screen/lcd chmod +x ./lcd_screen/lcd
Ou faça o download do binário de lançamentos imediatamente. Para começar, você precisa digitar o seguinte. SUDO é necessário para acessar o GPIO.
sudo ./lcd_screen/lcd path/file.bmp usec_per_frame
Onde “path / file.bmp” é o caminho para o arquivo de imagem, ele funciona apenas no formato BMP, “usec_per_frame” é o atraso entre os quadros em microssegundos, para não carregar o processador em vão.
Automatizamos o lançamento do nosso programa de LCD para que ele mostre a capa desejada quando o jogo estiver em execução. Obviamente, o Retropie usa um raspador embutido para carregar as tampas.
Instale o conversor de imagens. Ele converterá todos os formatos para bmp suportados pelo programa. Ao mesmo tempo, e redimensione, para que as imagens fiquem em tela cheia.
sudo apt-get install imagemagick
No diretório
/ opt / retropie / configs / all / , crie dois arquivos:
runcommand-onstart.sh e
runcommand-onend.sh . O Retropie executa automaticamente esses scripts ao carregar / encerrar qualquer jogo. Lembre-se de atribuir chmod + x a cada arquivo.
No script inicial, a presença da conexão DPI é verificada primeiro e, em seguida, é pesquisada uma imagem nos formatos jpeg ou png, é rotacionada no ângulo desejado, seu tamanho é alterado e convertido para o formato bmp, depois o meu programa inicia com os parâmetros necessários.
Refrigeração
O Raspberry Pi 3B é mais poderoso que o Zero e precisa de um bom resfriamento. Especialmente em um caso tão fechado. Com um pequeno dissipador de calor visível na foto, após meia hora de reprodução em qualquer emulador, a temperatura do núcleo atingiu 80 graus e a trotagem começou.
Foi solicitada uma ventoinha centrífuga de 40 * 30 * 10 mm, mas até chegar, tentei cortar uma pequena placa de 80 * 30 mm de alumínio de 3 mm. Naquela época, eu havia removido todos os pinos do GPIO, para que eles não interferissem mais na instalação da placa. Além disso, também recortei um pedaço de 20 * 10mm para contato com o chip e fiz um sanduíche das placas. Isso excedeu todas as minhas expectativas, com um máximo de 65 graus no núcleo.
Então parece dentro.
No final, o que
Como isso é jogado? Ótimo! Com gritos, batendo gamepads, censuras mútuas. Assim como uma vez.
Não foram observados atrasos ou atrasos.
A tela, é claro, é pequena, apenas três polegadas e meia. Os smartphones de cinco polegadas nos mimavam, mas você pode jogar. O texto é legível, mesmo pequeno. Eu prefiro HDMI.
Você pode vir a um amigo, jogar, a portabilidade permite. Acessórios relacionados: cabos, cabos, joysticks, carregamento ocupam mais espaço do que o próprio console.
Som
Infelizmente, o som padrão do Raspberry Pi deixa muito a desejar. A modulação PWM com filtragem passiva é usada como um sistema de som. Portanto, um DAC USB foi adquirido no PCM2704. Principalmente por causa de seu tamanho.
Realmente não há saída de som suficiente ao reproduzir em uma pequena tela LCD, então também comprei um micro amplificador de 3W no NS8002 e peguei um alto-falante de um tablet de 8 Ohm.
Tudo isso se encaixa na tela LCD. Virá, eu vou colocar.
Retropie de arquivo
Montagem concluída. A seguir, são apresentadas algumas das configurações Retropie menos interessantes para leitura de entretenimento.
ShadersA maioria dos consoles capazes de emular o Raspberry Pi fornece uma resolução de 320x240 pixels. Pelos padrões de hoje, isso é muito pequeno. Todos os jogos adquirem pixelação acentuada nas telas modernas.
Os criadores da Retroarch, que faz parte da Retropie, cuidaram dessa questão e adicionaram suporte para shaders. Por exemplo, eu realmente gosto do
xbr-lv1-noblend.glslp pré
-instalado . Ele literalmente tira os detalhes da imagem. Veja abaixo.
Screenshot do jogo Castlevania: Symphony of the Night, aconselho você a jogá-loPara instalar o sombreador, vá para o menu Retropie ->
Editor de configuração . Selecione
Configurar opções básicas do emulador libretro e selecione
Configurar opções padrão para todos os emuladores libretro . Em seguida, defina
Video Shader Enable como "true" e
Video Shader File como o shader desejado. Defina
Video Smoth como "false" também, pois apenas mancha a imagem. Você pode até escolher algo como um shader da linha de varredura que emita o trabalho dos televisores CRT. Mas isso não é para todos.
Os shaders de renderização são uma operação bastante cara. Com uma resolução igual e superior a 720p, os atolamentos bastante perceptíveis aparecem no RPi 3B. Portanto, no mesmo menu, selecione
Resolução de renderização “800x600”. Não se preocupe, se você fez alterações no arquivo
/boot/config.txt antes , como neste artigo um pouco mais alto, a resolução da tela no cabo HDMI será 1080p, mas o emulador renderizará a imagem em 800x600 e a esticará em tela cheia. E ele não faz isso mal. Pelo menos com um shader, é melhor do que sem ele, e uma renderização em 1080p é inútil, porque os dados de vídeo do jogo ainda são desenhados para uma resolução de 320x240.
Configurações do joystickSe você tiver qualquer gamepad xinput (padrão Micro $ oft), ele funcionará. Ele é configurado no primeiro início do Retropie ou através do botão Iniciar - Configurar entrada. Mas há uma dor de cabeça. Caras estrangeiros, para não cair em processos de patentes, trocaram os botões com A e B, X e Y.
Se você possui um gamepad do xbox ou similar, precisará configurá-lo com os botões invertidos, como no NES. Então vá para Retropie ->
Retropie Setup , selecione
Configuration / tools ,
emulationstation , coloque “Swapped” em
Swap A / B Buttons no ES . Em seguida, reconfigure o joystick.
Além disso, não gosto de como os desenvolvedores do Retropie gerenciaram o fundo de botões. Onde está a combinação de botões para tirar uma captura de tela? Por que preciso de um botão de redefinição se pressioná-lo sempre? Onde estão os botões de retrocesso e aceleração do tempo?
Para corrigir isso, você precisa editar o arquivo com o nome do seu joystick em
/ opt / retropie / configs / all / retroarch-joypads / . Também está disponível na rede
\\ 192.168.x.xxx \ configs \ all \ retroarch-joypads \ . Após cada atualização do Retropie através do atualizador, a numeração da ligação voa, portanto, não carregarei a configuração inteira. Vou escrever que mudei apenas esses botões. Eles são executados quando pressionados simultaneamente com a tecla de atalho, geralmente um botão com um logotipo no meio do joystick.
Configuração do botão input_screenshot_btn = "0" input_rewind_btn = "h0left" input_hold_fast_forward_btn = "h0right" input_state_slot_increase_btn = "h0up" input_state_slot_decrease_btn = "h0down"
Aqui, o botão de captura de tela é atribuído em vez de redefinido. O avanço rápido e o retrocesso (retrocesso) são configurados nos botões cruzados: para frente e para trás. Os botões cruzados para cima e para baixo alteram o slot de salvamento.
A rebobinagem deve estar ativada na configuração
/opt/retropie/configs/all/retroarch.cfg . Apenas não ative Rewind no emulador psx, tudo começa a desacelerar descontroladamente. A rebobinação está desativada por padrão na configuração do psx.
Eu também quero adicionar sobre Bluetooth. Eu próprio não gosto de joysticks sem fio e sempre brinco com cabo. Velha escola ainda. Para os amantes de joysticks sem fio, você precisa comprar um dongle Bluetooth e inseri-lo em uma porta USB. Será melhor e não haverá problemas. Eu mesmo não verifiquei, mas pessoas conhecedoras escrevem.
Xboxdrv
Mas isso não é tudo. Na
Configuração da
retropie no gerenciador de pacotes, você pode colocar várias portas, por exemplo, Openttd, Doom ou até o emulador DOS Dosbox. Mas você não poderá controlar o joystick neles. Apenas um teclado e mouse. Para corrigir isso, você precisa instalar o driver xboxdrv no gerenciador de pacotes, que pode emular as teclas digitadas. Basta colocá-lo da fonte, não há necessidade de executar automaticamente, ele não serve para todos os joysticks.
Escreveremos o script de lançamento para o nosso gamepad. Adicione as seguintes linhas ao final do arquivo em
/opt/retropie/configs/all/runcommand-onstart.sh .
Aqui $ 1 é o nosso sistema de destino no qual o xboxdrv inicia. Você pode adicionar por analogia. As linhas --evdev-absmap --evdev-keymap são responsáveis por vincular eixos e botões ao seu joystick. O script acima é fornecido para o controlador Xbox One S. Para descobrir qual eixo e botão correspondem ao número ou nome do seu joystick, você precisa digitar o comando
evtest no console. Ao mesmo tempo, você pode ver qual evento corresponde ao nosso joystick. Eu tenho esse / dev / input / event0 que está no parâmetro --evdev.
As opções --ui-axismap emulam o eixo do mouse e os botões do teclado --ui-buttonmap. Neste exemplo, o gatilho é o botão do mouse, o manípulo esquerdo é o mouse, o manípulo direito são as teclas do cursor. Iniciar, selecione - digite e esc, respectivamente. Os dígitos do teclado estão anexados aos botões restantes. Infelizmente, não foi possível usar a cruz sob os botões do teclado. Por alguma razão, o joystick do Xbox One S se recusa a funcionar.
Estratégias como o Hospital Temático, OpenTTD, etc. são executadas com essa configuração.Um pouco pior é jogado nos atiradores, mas você pode criar scripts de inicialização semelhantes para atiradores no mesmo arquivo, alterando o parâmetro $ 1 lá.
Para garantir o funcionamento normal do joystick na estação de emulação, você precisa concluir o xboxdrv após sair do jogo. Para fazer isso, adicione o seguinte ao final do arquivo
/opt/retropie/configs/all/runcommand-onend.sh .
runcommand-onend.sh sudo killall > /dev/null 2>&1 xboxdrv
Se algo der errado durante a atualização do RetropieUma vez, lancei a atualização Retropie e, ao descompactar o kernel, o Wi-Fi interno caiu. O dispositivo inicializou, mas não respondeu a nenhum botão, incluindo o teclado conectado. Não há SSH, pois não há Wi-Fi, ele não responde ao teclado e você não pode obter o cartão SD ...
Notei que o teclado funciona no momento da inicialização. Pressionei ctrl + c várias vezes e, oh, o console! Mas como restaurar o Wi-Fi agora? A interface wlan0 estava ausente da palavra. A execução do atualizador não ajudou, pois extrai arquivos da Internet.
A primeira coisa em /opt/retropie/configs/all/autostart.sh comentou sobre o lançamento da estação de emulação e foi reiniciada. , . , wlan . . .
sudo dpkg --configure -a
Retropie LinuxLinux. .
LinuxLinux,
/boot/cmdline.txt . .
cmdline.txt dwc_otg.lpm_enable=0 console=tty3 root=PARTUUID=f2d3cb4f-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait loglevel=3 consoleblank=0 plymouth.enable=0 quiet vt.global_cursor_default=0 plymouth.enable=0 plymouth.ignore-serial-consoles splash
, , , .
motd.
nano /etc/motd
.
sudo nano /etc/systemd/system/autologin@.service
ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM
ExecStart=-/sbin/agetty --skip-login --noclear --noissue --login-options "-f pi" %I $TERM
.
, — splashscreen. , . \\192.168.x.xxx\splashscreens, Retropie ->
SPLASH SCREEN ->
Append Splashscreen to list .
, , .
Retropie runcommand, . .
, ,
.
. , . , . Obrigado pela atenção.
.