iniciando o projeto

This commit is contained in:
2026-02-01 16:41:07 -03:00
commit 431ccb69db
12 changed files with 1840 additions and 0 deletions

150
MENU_README.md Normal file
View File

@@ -0,0 +1,150 @@
# 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