Créditos
- Código — NoRecess
- Motor — CPCEC, by Cesar Nicolas-Gonzalez
Créditos tal como figuran en la release.
Nota: cpcec-gtk es un proyecto abandonado. Ya no se desarrolla y no lleva ningún soporte. Lo que sigue lo describe tal como quedó, en 2022.
cpcec-gtk es un emulador de Amstrad CPC, Plus y GX-4000 para Linux basado en Debian: Debian, Ubuntu, Pop!_OS y sus parientes. La emulación en sí es CPCEC, el core fiel escrito en C por César «cngsoft» Nicolás-González y publicado bajo la GPL v3; todo lo que lo rodea —la interfaz GTK3, las ventanas de depuración, el empaquetado y la documentación— es mío, escrito entre 2021 y 2022 sobre la versión de enero de 2022 de ese core. El proyecto entero, el core incluido, está en Bitbucket.
Existe por una sola razón: tener, en Linux, un emulador dentro del cual un programador de CPC pueda trabajar, en lugar de trabajar a su lado. Un fichero que cambia en el disco se recarga y se relanza solo, de modo que una toolchain que reconstruye un .dsk pone la nueva versión en pantalla sin pulsar una tecla; los ficheros de símbolos que produce rasm se leen, de modo que el desensamblado se lee con los nombres del código fuente; y todo el debugger se abre en el momento en que la emulación se pausa.
Lo que hace
- lanza imágenes de disquete
.dsk, cartuchos.cprdel Plus y de la GX-4000, y snapshots.sna, y cambia solo a una máquina Plus cuando se inserta un cartucho - abre un fichero arrastrándolo, desde el menú, o desde una biblioteca de software que indexa de forma recursiva y filtra por extensión o por unas pocas letras del nombre
- recarga y relanza un fichero insertado en cuanto su contenido cambia en el disco
- maneja dos unidades de disco y crea un
.dskvacío desde cero - gestiona las ROMs internas, lower y upper 0 a 127, listando los RSX de BASIC que trae cada una y permitiendo reordenarlas
- lee los ficheros de símbolos que escribe rasm, tanto los label symbols (
-sz) como las ROM labels (-er) - admite mandos de juego externos, conectados o desconectados mientras funciona, y ofrece un joystick virtual en las flechas para quien no tenga ninguno, con el comportamiento de teclas de un teclado Amstrad real
- responde a
ALT+0..9para el teclado numérico que un portátil no tiene, y aALTpara la tecla COPY del Amstrad - amplía la ventana, mantiene una relación de píxeles 1:1 y sabe mostrar las partes del monitor CRT que un programa intenta ocultar
- guarda capturas en
.pngy snapshots en.sna, silencia, pausa y funciona a 1x o 4x - guarda la posición de las ventanas, la ruta de la biblioteca, los últimos ficheros y el ajuste de sonido en
~/.config/cpcec-gtk/config.ini
Cada máquina emulada arranca con una expansión de memoria de 512 KB, salvo la GX-4000, que recibe los 64 KB con los que salió.
El debugger
Pausar la emulación abre las ventanas de depuración; esc las cierra todas y continúa, space avanza una instrucción Z80. La ventana Z80 muestra el desensamblado, los registros y la pila, pone breakpoints con B, pone a cero el contador de NOPs con T, desensambla desde cualquier dirección que se le pida y entiende el opcode ED FF como un breakpoint escrito en el propio código. El inspector de memoria muestra la memoria tal como está, alterna entre los valores READ y WRITE, e informa debajo de la configuración de Gate Array y ASIC, con las ROM labels cuando un fichero de símbolos las ha proporcionado.
La ventana de vídeo está hecha para correr detrás del cañón: da el modo actual y la dirección de memoria de vídeo, y sus campos de línea CRTC y de scanline del monitor son interactivos: se escribe un valor, se pulsa la flecha de al lado y la emulación sigue hasta esa línea. En un Plus o una GX-4000, una ventana ASIC lista los registros, con vistas previas de sprites y la descripción de los bits en los tooltips. El visualizador de memoria dibuja un píxel por byte de los 64 KB principales y de los cuatro primeros banks, refrescado en cada VSync, en MODE 0 o 1 y con la paleta del programa o en gris, y un modo last write fading muestra solo las escrituras, con los frames anteriores desvaneciéndose a negro.
Capturas de pantalla









Instalarlo
sudo apt install libsdl2-2.0-0 libgtk-3-0 y luego sudo dpkg -i cpcec-gtk.deb; sudo apt
purge cpcec-gtk lo quita. El binario va a /usr/bin, sus recursos —las ROMs de Amstrad, la documentación— a /usr/share/cpcec-gtk/, y no queda nada en ningún otro sitio.