
ZXDrawer
A downloadable tool for Windows, macOS, and Linux
⭐ Supporters
Gracias / Thanks / Obrigado:
Español
Editor simple inspirado en ZX Spectrum para crear y editar gráficos compatibles con formatos clásicos (.zxp, .scr). ideal para juegos de nuestro ZX Spectrum
Resumen de funcionalidades
- Apertura y guardado: soporte nativo para
.zxpy.scr. - Importar imágenes: importa PNG/JPG y convierte a paleta Spectrum con modal interactivo.
- Conversión con previsualización: controla brillo, contraste y saturación y visualiza el resultado ZX Spectrum antes de importar.
- Edición por bloques: lienzo en bloques 8×8 con atributos ink/paper/bright/flash.
- Herramientas: lápiz, selección por bloques, texto (modal mejorado), invertir píxeles/atributos, flip H/V.
- Rotar selección: botón para rotar 90° solo la selección activa.
- Exportar: exporta PNG o guarda en
.zxppara seguir editando. - Exportación de datos (ASM / BIN): exporta datos de sprites y atributos en formato ensamblador o binario. Configura datos exportados (Gfx+Attr, solo Gfx, solo Attr…), orden de bytes, intercalado, máscaras, zig-zag horizontal, info extra z88dk y más.
- Exportador PutChars: genera código Boriel BASIC para mostrar gráficos de caracteres en pantalla.
- Exportador GuSprites: genera tablas de datos de sprites en formato GuSprites para Boriel BASIC.
- Generación de máscaras: genera automáticamente una columna de sprites de transparencia junto a cada sprite de la hoja.
- Preview de animación: visualiza y navega frame a frame la selección activa como animación. Botón de play, anterior y siguiente. Resalta el frame actual en el canvas principal. UI traducible y menú nativo en Español, Inglés y Portugués.</li>
- Presets de tamaño: el modal de tamaño incluye presets seleccionables (ZX Spectrum 256×192 por defecto, ZXSGM Spriteset 256×48, ZXSGM Tileset 256×48) además de opción personalizada.
- Archivos recientes: menú nativo "Recientes" bajo Archivo muestra los últimos 10 ficheros abiertos/guardados para acceso rápido.
- Arrastrar y soltar: arrastra
.zxpo.scrsobre la ventana para abrirlos rápidamente. - Asociación de archivos: al instalar el programa se registra como aplicación posible para abrir
.zxpy.scr. - Idiomas: disponible en Español, English y Português.
- Múltiples instancias: ZXDrawer puede abrirse en varias ventanas simultáneamente.
- Editor de máscaras: herramienta para editar los píxeles de máscara manualmente. Selecciona el área sprite+máscara y pulsa "Editar Máscara". El overlay rojo indica zonas transparentes; clic izquierdo = transparente, clic derecho = opaco. Compatible con deshacer/rehacer.
- Copiar y pegar entre instancias: el portapapeles se comparte entre todas las ventanas abiertas. Copia en una instancia y pega en cualquier otra sin archivos intermedios.
- Rejilla de píxel (1×1): nuevo botón de rejilla fina de 1×1 píxel, independiente y combinable con la rejilla de caracteres 8×8. También visible en el visor de animación.
- Pie de estado: muestra el tamaño de la selección en píxeles y en bloques de caracteres (8×8), útil para copiar/pegar y exportar.
- Editar sprites desde el visor de animación: pinta píxeles directamente sobre el preview de animación (clic izquierdo = tinta, clic derecho = papel) y los cambios se reflejan en el spriteset principal en el frame correcto.
- Soporte CHR y CH8: abre, guarda y exporta fuentes y tiles en formato
.chry.ch8(bitmaps raw de caracteres 8×8 sin atributos). - Exportación CYD Charset (JSON): exporta cada tile 8×8 como entrada de carácter en formato JSON compatible con CYD. Configurable: ID inicial, ancho fijo o detección automática de ancho proporcional.
- Exportación SP1 para z88dk: exporta el sprite en formato de columnas SP1 compatible con z88dk. Cada columna de 8 píxeles genera una etiqueta
PUBLIC. Incluye opción de máscara y nombre de sección configurable. - Ruta del fichero en la barra de estado: la barra inferior muestra la ruta completa del archivo abierto.
Flujo típico
- Importa una imagen o abre una
.scr/.zxp. - Ajusta brillo/contraste/saturación en el modal de importación y previsualiza la conversión.
- Refina píxel a píxel, usa la selección y el portapapeles para componer sprites.
- Guarda como
.zxpo exporta PNG.
Formato .scr
Soporte para archivos .scr de 6912 bytes (6144 bitmap + 768 atributos) respetando el layout de memoria del Spectrum.
Agradecimientos
Gracias a Jaime Tejedor (Metalbrain) por su editor gráfico Sevenup, cuyo exportador ha servido de referencia para comprender las distintas necesidades que los usuarios pueden tener a la hora de exportar datos y código ASM.

English
A lightweight ZX Spectrum-inspired editor for creating 256×192 graphics with 8×8 block attributes. Great for games on our ZX Spectrum.
Key Features
- Open & Save: Native support for
.zxp(project) and.scr(Spectrum screen dump). - Image import: Import PNG/JPG and convert to Spectrum palette with an interactive modal.
- Live conversion preview: Adjust brightness, contrast and saturation while seeing the ZX Spectrum result.
- Block editing: Canvas uses 8×8 blocks with ink/paper/bright/flash attributes.
- Tools: pencil, block selection, improved text tool, invert pixels/attributes, flip H/V.
- Rotate selection: button to rotate only the active selection by 90°.
- Export: export PNG or save as
.zxpto continue editing. - Data export (ASM / BIN): export sprite and attribute data in assembly or binary format. Configure data output (Gfx+Attr, Gfx only, Attr only…), byte order, interleave, masks, horizontal zig-zag, z88dk extra info and more.
- PutChars exporter: generates Boriel BASIC code to display character graphics on screen.
- GuSprites exporter: generates Boriel BASIC sprite data tables in GuSprites format.
- Generate masks: automatically generates a transparency mask sprite column next to each sprite in the sheet.
- Animation preview: preview and navigate frame by frame through the active selection as an animation. Play, previous and next buttons. Highlights the current frame on the main canvas. UI translations and native menu localization (EN/ES/PT).</li>
- Size presets: the size modal includes selectable presets (ZX Spectrum 256×192 default, ZXSGM Spriteset 256×48, ZXSGM Tileset 256×48) while keeping a custom option.
- Recent files: native "Recent" menu under File shows the last 10 opened/saved files for quick access.
- Drag & drop: drag
.zxpor.scrfiles onto the window to open them. - File associations: installer registers the app as an option to open
.zxpand.scrfiles. - Languages: available in Español, English and Português.
- Multiple instances: ZXDrawer can be launched in multiple windows simultaneously.
- Mask editor: tool for manually editing mask pixels. Select the sprite+mask area and click "Edit Mask". Red overlay marks transparent pixels; left click = transparent, right click = opaque. Supports undo/redo.
- Copy & paste between instances: clipboard is shared across all open ZXDrawer windows. Copy in one instance, paste in any other — no intermediate file needed.
- Pixel grid (1×1): new fine pixel grid button, independent and combinable with the 8×8 character grid. Also shown in the animation preview.
- Status bar: shows selection size in pixels and character blocks (8×8) for easier copy/paste/export workflows.
- Edit sprites from animation preview: paint pixels directly on the animation preview (left click = ink, right click = paper) and changes are immediately reflected on the main spriteset at the correct frame position.
- CHR and CH8 support: open, save and export fonts and tiles in
.chrand.ch8format (raw 8×8 character bitmaps with no attributes). - CYD Charset export (JSON): exports each 8×8 tile as a character entry in CYD-compatible JSON format. Configurable: starting ID, fixed width, or auto-detection of proportional width per character.
- SP1 export for z88dk: exports the sprite in SP1 column format compatible with z88dk. Each 8-pixel-wide column generates a
PUBLIClabel. Optional mask support and configurable section name. - File path in the status bar: the bottom bar now shows the full path of the open file.
Typical workflow
- Import an image or open a
.scr/.zxp. - Use the import modal to tweak brightness/contrast/saturation and preview the conversion.
- Refine pixel-by-pixel, use selection and clipboard to compose sprites or tiles.
- Save as
.zxpor export PNG.
.scr format
Supports .scr files (6912 bytes: 6144 bitmap + 768 attributes) using the Spectrum memory layout.
Acknowledgements
Thanks to Jaime Tejedor (Metalbrain) for his graphic editor Sevenup, whose exporter served as a reference to understand the wide range of options users may need when exporting sprite data and ASM code.

Português
Editor leve inspirado no ZX Spectrum para criar gráficos 256×192 com atributos de bloco 8×8. ideal para jogos do nosso ZX Spectrum
Principais funcionalidades
- Abrir e salvar: suporte nativo a
.zxpe.scr. - Importar imagem: importe PNG/JPG e converta para a paleta Spectrum via modal interativo.
- Pré-visualização: ajuste brilho, contraste e saturação e veja o resultado ZX Spectrum.
- Edição por blocos: canvas em blocos 8×8 com atributos ink/paper/bright/flash.
- Ferramentas: lápis, seleção, ferramenta de texto melhorada, inverter pixels/atributos, flip H/V.
- Rodar seleção: botão para girar apenas a seleção ativa 90°.
- Exportar: exporte PNG ou salve em
.zxp. - Exportação de dados (ASM / BIN): exporta dados de sprites e atributos em formato assemblador ou binário. Configure dados exportados (Gfx+Attr, apenas Gfx, apenas Attr…), ordem de bytes, intercalação, máscaras, zig-zag horizontal, info extra z88dk e mais.
- Exportador PutChars: gera código Boriel BASIC para exibir gráficos de caracteres no ecrã.
- Exportador GuSprites: gera tabelas de dados de sprites no formato GuSprites para Boriel BASIC.
- Geração de máscaras: gera automaticamente uma coluna de sprites de transparência junto a cada sprite da folha.
- Pré-visualização de animação: visualize e navegue frame a frame pela seleção ativa como animação. Botões de play, anterior e próximo. Destaca o frame atual no canvas principal. UI traduzível com menu nativo localizado.</li>
- Predefinições de tamanho: o modal de tamanho inclui predefinições selecionáveis (ZX Spectrum 256×192 por omissão, ZXSGM Spriteset 256×48, ZXSGM Tileset 256×48) mantendo opção personalizada.
- Arquivos recentes: menu nativo "Recentes" em Arquivo mostra os 10 últimos ficheiros abertos/guardados para acesso rápido.
- Arrastar e soltar: arraste ficheiros
.zxpou.scrpara a janela para os abrir. - Associação de ficheiros: o instalador regista a aplicação como opção para abrir
.zxpe.scr. - Idiomas: disponível em Español, English e Português.
- Múltiplas instâncias: o ZXDrawer pode ser aberto em várias janelas em simultâneo.
- Editor de máscaras: ferramenta para editar pixels de máscara manualmente. Selecione a área sprite+máscara e clique em "Editar Máscara". O overlay vermelho indica zonas transparentes; clique esquerdo = transparente, clique direito = opaco. Compatível com desfazer/refazer.
- Copiar e colar entre instâncias: a área de transferência é partilhada entre todas as janelas abertas. Copie numa instância e cole noutra — sem ficheiros intermediários.
- Grelha de pixel (1×1): novo botão de grelha fina de 1×1 pixel, independente e combinável com a grelha de caracteres 8×8. Também visível no visualizador de animação.
- Barra de status: mostra o tamanho da seleção em pixels e em blocos de caracteres (8×8), facilitando copiar/colar e exportar.
- Editar sprites a partir do visualizador de animação: pinte pixels diretamente no preview de animação (clique esquerdo = tinta, clique direito = papel) e as alterações refletem-se no spriteset principal na posição correta do frame.
- Suporte CHR e CH8: abra, guarde e exporte fontes e tiles em formato
.chre.ch8(bitmaps raw de caracteres 8×8 sem atributos). - Exportação CYD Charset (JSON): exporta cada tile 8×8 como entrada de carácter em formato JSON compatível com CYD. Configurável: ID inicial, largura fixa ou deteção automática de largura proporcional.
- Exportação SP1 para z88dk: exporta o sprite no formato de colunas SP1 compatível com z88dk. Cada coluna de 8 pixels gera uma etiqueta
PUBLIC. Inclui opção de máscara e nome de secção configurável. - Caminho do ficheiro na barra de estado: a barra inferior mostra o caminho completo do arquivo aberto.
Fluxo típico
- Importe uma imagem ou abra um
.scr/.zxp. - Ajuste brilho/contraste/saturação no modal de importação e pré-visualize a conversão.
- Refine pixel a pixel, use seleção e portapapéis para montar sprites.
- Salve em
.zxpou exporte PNG.
Formato .scr
Suporte a arquivos .scr de 6912 bytes (6144 bitmap + 768 atributos) seguindo o layout de memória do Spectrum.
Agradecimentos
Obrigado a Jaime Tejedor (Metalbrain) pelo seu editor gráfico Sevenup, cujo exportador serviu de referência para compreender as diferentes necessidades que os utilizadores podem ter ao exportar dados de sprites e código ASM.

Testing
- CarlosITV (Windows)
- ZXMoe y Programadorhedonista (Linux)
- AbenZaX (MacOS arm e Intel)
Download
Click download now to get access to the following files:
Development log
- Edición de fuentes y exportación CYD y exportación de sprites a SP128 days ago
- Mejoras de usabilidad, Modo Oscuro e Importador de Boriel Basic35 days ago
- Editor de máscaras51 days ago
- Mejoras de exportación e Interfaz52 days ago



Comments
Log in with itch.io to leave a comment.
Aun no lo he anunciado oficialmente, pero preparando el abandono de los cursos y soporte de zx-paintbrush y Retro-X en favor de ZX_Draw, esto incluira actualizacion del launcher retro, un gran avance en el toolkit retro, y muchisimo mas fiable a largo plazo que las herramientas abandonadas cuyos cursos dejo en estado zombie sine-die.
Gracias Raúl! Me alegro que haya gustado y sirva. Espero esos cursossssssssss
Mola mazo este editor!, ahora solo me falta aprender a dibujar. Pero seguro que con esta herrmienta sera coser y cantar 👏👏👏
Gracias! Te pasa como a mi, dibujar tampoco se 😂. A ver si conseguimos una herramienta productiva, actual y que tenga mantenimiento.
Grande juntelart, estás que no paras :)
Ya no hay excusa para hacer cositas de forma sencilla, esto ayudará a los que quieren algo directo para poder hacer sus dibujos sin menús cargados de opciones que puedan abrumar a la gente que empieza o quiere empezar haciendo cositas.
Gracias por tus aportes a la escena de spectrum.
un abrazo 🤗
Gracias! Así es la idea es hacer algo sencillo y efectivo! Y que se pueda extender.
Muchas gracias por tu esfuerzo en el desarrollo de herramientas para ZX Spectrum. Tu gran labor facilita que siga muy vivo!!!
Gracias! Soys mucha gente aportando a la escena de ZX Spectrum y sobre todo muy buena gente. 👏