Creando tu primer dashboard para Nintendo 64 (Mac/Docker)

Si tienes una Nintendo 64 y un Flashcart (como el EverDrive), esta es la forma más rápida de ejecutar tu propio código utilizando la librería moderna Libdragon.
1. Requisitos Previos
Asegúrate de tener instalado Docker Desktop y Node.js en tu sistema.
2. Instalación de la Toolchain
Libdragon ahora ofrece un paquete de NPM que actúa como asistente para manejar el contenedor de Docker sin complicaciones.
Bash
# Instalar el asistente de Libdragon de forma global
npm install -g libdragon
3. Configuración para Apple Silicon (M1/M2/M3)
Si usas un Mac moderno, la imagen de Libdragon es de arquitectura amd64. Debes forzar a Docker a usar esa plataforma:
Bash
export DOCKER_DEFAULT_PLATFORM=linux/amd64
4. Inicializar el Proyecto
Crea una carpeta nueva y deja que Libdragon configure todo el entorno (descargará la imagen de Docker y clonará la librería):
Bash
mkdir mi-proyecto-n64
cd mi-proyecto-n64
libdragon init
5. Crear el código del Dashboard
Vamos a crear el archivo de código fuente. Puedes usar nano, code o cualquier editor.
Bash
# Entra en la carpeta de ejemplos para usar su estructura de Makefile
cd libdragon/examples
cp -r test dashboard
cd dashboard
# Crea el archivo de código
nano dashboard.c
Pega este código (Dashboard corregido):
C
#include <stdio.h>
#include <libdragon.h>
#define NUM_OPTIONS 3
const char *menu[NUM_OPTIONS] = {
"CPU Status",
"Network",
"Exit"
};
int selected = 0;
int main(void) {
display_init(RESOLUTION_320x240, DEPTH_16_BPP, 2, GAMMA_NONE, ANTIALIAS_RESAMPLE);
console_init();
joypad_init();
while (1) {
joypad_poll();
joypad_buttons_t btn = joypad_get_buttons_pressed(JOYPAD_PORT_1);
if (btn.d_up) {
selected--;
if (selected < 0) selected = NUM_OPTIONS - 1;
}
if (btn.d_down) {
selected++;
if (selected >= NUM_OPTIONS) selected = 0;
}
surface_t *disp = display_get();
if (btn.a) {
graphics_fill_screen(disp, 0);
if (selected == 0) {
graphics_draw_text(disp, 20, 100, "CPU: OK (R4300i @ 93.75MHz)");
} else if (selected == 1) {
graphics_draw_text(disp, 20, 100, "Network: No Adapter Detected");
} else if (selected == 2) {
graphics_draw_text(disp, 20, 100, "Saliendo...");
}
display_show(disp);
wait_ms(1000); // Pausa moderna
disp = display_get();
}
graphics_fill_screen(disp, 0);
graphics_draw_text(disp, 20, 20, "== Dashboard N64 ==");
for (int i = 0; i < NUM_OPTIONS; i++) {
char buffer[64];
if (i == selected) {
sprintf(buffer, "> %s <", menu[i]);
} else {
sprintf(buffer, " %s", menu[i]);
}
graphics_draw_text(disp, 40, 60 + i * 20, buffer);
}
display_show(disp);
}
return 0;
}
6. Compilación Mágica
Gracias al comando libdragon, no necesitas saber comandos complejos de Docker. Solo ejecuta:
Bash
libdragon make
7. ¡A la consola!
Al terminar, verás un archivo llamado dashboard.z64 (o el nombre que tenga el proyecto en el Makefile).
- Copia ese archivo
.z64a tu tarjeta SD. - Insértala en tu EverDrive.
- ¡Disfruta de tu Dashboard casero en hardware real!