Files
r36ultra_app/MENU_README.md
2026-02-01 16:41:07 -03:00

3.2 KiB

Menu Interativo com Navegação por Joystick - R36 Ultra

Compilado com Sucesso para ARM64!

Sistema de menu interativo com suporte a navegação por joystick/gamepad para R36 Ultra.

📦 Arquivos

  • menu_demo.c - Código fonte do menu interativo
  • menu_demo - Binário ARM64 (755KB, estaticamente linkado)
  • compile_menu.sh - Script de compilação

🎮 Características

Interface

  • 5 botões navegáveis
  • Destaque visual do botão selecionado
  • Bordas coloridas (amarelo quando selecionado)
  • Fundo escuro com texto claro
  • Título "MENU PRINCIPAL"
  • Instruções na parte inferior

Controles Suportados

  • D-Pad Cima/Baixo - Navegar entre botões
  • Botão A / Enter - Selecionar opção
  • ESC - Sair
  • Ctrl+C - Forçar saída

Opções do Menu

  1. INICIAR JOGO
  2. CONFIGURACOES
  3. CARREGAR SAVE
  4. CREDITOS
  5. SAIR (encerra o programa)

🚀 Como Usar

Transferir para R36 Ultra

Via SCP:

scp menu_demo user@r36ultra:/home/user/

Via USB/SD Card:

  1. Copie menu_demo para USB/SD
  2. Insira no R36 Ultra
  3. Copie para o dispositivo

Executar no R36 Ultra

chmod +x menu_demo
sudo ./menu_demo

🎨 Cores e Visual

  • Botão Normal: Fundo cinza escuro (80,80,80) com borda clara
  • Botão Selecionado: Fundo azul (50,100,200) com borda amarela (255,200,0)
  • Texto: Branco (255,255,255)
  • Fundo: Cinza escuro (30,30,30)

🔧 Recompilar

Para ARM64 (cross-compile):

./compile_menu.sh arm64

Para nativo (x86_64):

./compile_menu.sh

📝 Personalização

Adicionar Novos Botões

Edite a função main() em menu_demo.c:

menu_add_button(&menu, "NOVO BOTAO");

Alterar Cores

Edite a função draw_button():

// Botão selecionado (B, G, R, A)
draw_rectangle(fb, btn->x, btn->y, btn->width, btn->height, 200, 100, 50, 255);

Alterar Tamanho dos Botões

No topo do arquivo:

#define BUTTON_HEIGHT 60
#define BUTTON_WIDTH 500
#define BUTTON_MARGIN 10

🎯 Detecção de Entrada

O programa tenta abrir automaticamente os seguintes dispositivos:

  • /dev/input/event0
  • /dev/input/event1
  • /dev/input/event2
  • /dev/input/event3
  • /dev/input/js0

Se nenhum dispositivo for encontrado, o programa ainda funciona mas você precisará usar SSH ou terminal para enviar comandos.

🔍 Debugging

Para ver qual dispositivo de entrada foi aberto:

sudo ./menu_demo
# Saída: "Opened input device: /dev/input/eventX"

Para listar dispositivos de entrada disponíveis:

ls -la /dev/input/

💡 Próximos Passos

Para adicionar funcionalidade aos botões, edite o switch case em main():

case BTN_SOUTH: // A button
case KEY_ENTER:
    printf("Activated: %s\n", menu.buttons[menu.selected].text);
    if (menu.selected == 0) { // INICIAR JOGO
        // Adicione sua lógica aqui
    }
    break;

📊 Informações Técnicas

  • Resolução: 720x720 pixels
  • Formato: BGRA (4 bytes por pixel)
  • Framebuffer: /dev/fb0
  • Arquitetura: ARM64 (aarch64)
  • Linkagem: Estática (sem dependências)
  • Tamanho: 755KB