juegos

Juegos de terminal de Pancho: Catan (TUI, GUI, web, servidor, PicoCalc), ajedrez, calculadora y minijuegos
git clone https://git.lu3dhn.xyz/juegos.git
Log | Files | Refs

LEEME.md (4423B)


      1 # Kit para hacer programas en C para la PicoCalc
      2 
      3 Plantilla que **ya anda** en la PicoCalc (Pico 1 / RP2040): pantalla, teclado,
      4 guardar en la SD y diagnóstico. Vos (o ChatGPT) escribís solo `app/app.c`.
      5 
      6 Viene de los juegos de Pancho (Catan y Ajedrez para la PicoCalc), que pasaron
      7 por los mismos problemas: el programa arrancaba y la pantalla quedaba en negro.
      8 
      9 ## Probar que tu PicoCalc anda (sin compilar nada)
     10 
     11 En `sd/` hay un "Hola" ya compilado. Copiá **el contenido** de `sd/` a la raíz
     12 de la tarjeta SD (tiene que estar en FAT32, como viene):
     13 
     14 ```
     15 sd/firmware/Hola.bin      -> para el cargador viejo "Bootloader v0.5" (menú de /firmware)
     16 sd/pico1-apps/Hola.uf2    -> para uf2loader (el cargador nuevo, carpeta /pico1-apps)
     17 sd/HOLA.LOG, sd/HOLA.SAV  -> log de diagnóstico y datos guardados (van en la raíz)
     18 ```
     19 
     20 Elegí "Hola" en el menú del cargador. Primero aparece un log azul de arranque
     21 (pantalla ok, teclado ok, SD ok...) y después un cuadrado verde que se mueve con
     22 las flechas. Enter guarda la posición en `HOLA.SAV`.
     23 
     24 ## Por qué tu hello world no mostraba nada
     25 
     26 1. **La Pico no "tiene" pantalla**: `printf` sale por el puerto serie, no por el
     27    LCD. Hay que manejar el LCD (ST7365P por SPI1, pines 10–15) a mano. Ya está
     28    hecho en `comun/pico/hal_rp2040.c`.
     29 2. **Los "200"** son 200 **KB**: el cargador viejo copia tu `.bin` a la flash a
     30    partir de 0x10032000 (flash + 200 KB). El programa tiene que estar **enlazado**
     31    en esa dirección (no alcanza con rellenar el principio): eso lo hace
     32    `comun/pico/memmap_sdboot_200k.ld`. El `.uf2` para uf2loader va enlazado normal.
     33 3. **El cargador salta a tu programa con las interrupciones prendidas** → se
     34    cuelga antes de llegar a `main`. Se arregla parcheando el vector de reset del
     35    `.bin` (`comun/tools/patch_reset.py`, lo hace `make pico`).
     36 4. **El cargador deja el core 1 corriendo y dibujando** → pisa tu pantalla.
     37    `hal_init()` lo resetea.
     38 5. El LCD pierde los parámetros si CS sube entre el comando y sus datos.
     39 
     40 Todo esto ya está resuelto: si usás esta plantilla, no tenés que pensar en nada.
     41 
     42 ## Cómo trabajar con ChatGPT
     43 
     44 1. Abrí una conversación nueva y pegá **todo** `CHATGPT.md` como primer mensaje
     45    (o subilo como archivo). Ahí están las reglas y la API.
     46 2. Pedile el juego. Te tiene que devolver `app.c` completo (y si hace falta
     47    `app_config.h`).
     48 3. Reemplazá `app/app.c`, compilá (abajo), probá.
     49 4. Si algo falla, pasale el error del compilador tal cual, o lo que diga la
     50    pantalla / `HOLA.LOG` de la SD.
     51 
     52 ## Compilar
     53 
     54 ### Opción A: sin instalar nada (GitHub)
     55 
     56 1. Creá un repositorio en GitHub y subí esta carpeta entera (incluida la
     57    carpeta oculta `.github/`). Se puede hacer arrastrando los archivos en la web.
     58 2. Cada vez que cambies `app/app.c` (se puede editar desde la web con el lápiz),
     59    GitHub compila solo. Pestaña **Actions** → la última ejecución → abajo, en
     60    *Artifacts*, bajás **sd-picocalc** (un zip con la carpeta `sd/`).
     61 3. Si falla, en la misma ejecución, el paso "compilar" muestra el error: copialo
     62    y pasáselo a ChatGPT.
     63 
     64 ### Opción B: en tu compu (Linux o WSL en Windows)
     65 
     66 ```sh
     67 sudo apt install gcc-arm-none-eabi libnewlib-arm-none-eabi cmake python3 build-essential
     68 git clone --depth 1 --branch 2.3.1 https://github.com/raspberrypi/pico-sdk ~/pico-sdk
     69 make pico            # deja todo en sd/
     70 make pico NOMBRE=Snake   # sd/firmware/Snake.bin, sd/pico1-apps/Snake.uf2
     71 ```
     72 
     73 ### Simulador en la PC (opcional, Linux/WSL con SDL3)
     74 
     75 ```sh
     76 make sim && ./sim --scale 2
     77 ```
     78 
     79 Corre **el mismo** `app.c` en una ventana de 320x320: se prueba en segundos sin
     80 tocar la SD. Esc = volver, Enter = OK, flechas.
     81 
     82 ## Archivos
     83 
     84 ```
     85 app/app.c          TU PROGRAMA (lo único que se cambia normalmente)
     86 app/app_config.h   nombre del programa y de los archivos de la SD
     87 comun/             base que ya anda: no tocar
     88   pico/hal.h         la API de hardware (pantalla, teclado, SD, batería)
     89   gfx/gfx.h          dibujo: rectángulos, líneas, círculos, texto, colores
     90 CHATGPT.md         instrucciones para pegarle a ChatGPT si usás este kit
     91 PICOCALC-MANIAS.md las mañas del aparato, para ChatGPT si escribís todo de cero
     92 ```
     93 
     94 Para cada juego nuevo, cambiá los nombres en `app/app_config.h` (por ejemplo
     95 `SNAKE.LOG`, `"SNAKE   LOG"`) y compilá con `NOMBRE=Snake`; copiá a la SD los
     96 `.LOG`/`.SAV` nuevos **solo la primera vez** (si los pisás, perdés lo guardado).