3.2 KiB
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 interativomenu_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
- INICIAR JOGO
- CONFIGURACOES
- CARREGAR SAVE
- CREDITOS
- SAIR (encerra o programa)
🚀 Como Usar
Transferir para R36 Ultra
Via SCP:
scp menu_demo user@r36ultra:/home/user/
Via USB/SD Card:
- Copie
menu_demopara USB/SD - Insira no R36 Ultra
- 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