# 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:** ```bash 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 ```bash 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): ```bash ./compile_menu.sh arm64 ``` ### Para nativo (x86_64): ```bash ./compile_menu.sh ``` ## 📝 Personalização ### Adicionar Novos Botões Edite a função `main()` em `menu_demo.c`: ```c menu_add_button(&menu, "NOVO BOTAO"); ``` ### Alterar Cores Edite a função `draw_button()`: ```c // 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: ```c #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: ```bash sudo ./menu_demo # Saída: "Opened input device: /dev/input/eventX" ``` Para listar dispositivos de entrada disponíveis: ```bash ls -la /dev/input/ ``` ## 💡 Próximos Passos Para adicionar funcionalidade aos botões, edite o switch case em `main()`: ```c 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