Herramienta CLI para compilar proyectos 8BP (8 Bits de Poder) con Abasm para Amstrad CPC
Project description
build8bp
🎮 Herramienta CLI profesional para compilar proyectos 8BP (8 Bits de Poder) para Amstrad CPC usando ABASM.
📋 Características
- ✅ 5 niveles de compilación con diferentes configuraciones de memoria
- 🎨 Interfaz CLI moderna con colores y formato Rich
- 🔧 Corrección automática de sintaxis para compatibilidad ABASM
- 📦 Organización modular con comandos separados
- 🌍 Variables de entorno para configuración global
- 💾 Sistema de backups automático antes de modificaciones
- 📁 Directorio dist/ para organizar archivos generados
🚀 Instalación
Con pipx (recomendado - instalación global)
cd build8bp
pipx install .
Con Poetry (desarrollo)
cd build8bp
poetry install
⚙️ Configuración
Define las variables de entorno (opcional):
export BP8_ASM_PATH="/ruta/a/8BP_V43/ASM"
export ABASM_PATH="/ruta/a/abasm/src/abasm.py"
O usa los parámetros --asm-path y --abasm-path en cada comando.
📖 Uso
Ver ayuda general
build8bp --help
Muestra:
Uso:
build8bp [OPTIONS] COMMAND [ARGS]...
═══════════════════════════════════════════════════════════════
build8bp - Compilador para proyectos 8BP (8 Bits de Poder) en Amstrad CPC
═══════════════════════════════════════════════════════════════
Opciones:
--version Muestra la versión y sale.
--help Muestra este mensaje de ayuda y sale.
Comandos:
compile Compilar proyecto 8BP con nivel de build especificado.
patch Aplicar parches de sintaxis para ABASM a los archivos ASM.
rollback Restaurar archivos ASM desde los backups.
🔨 Comando: compile
Compila el proyecto 8BP con el nivel de build especificado.
build8bp compile --help
Opciones:
--build INTEGER: Nivel de compilación (0-4) [requerido]--asm-path PATH: Ruta a los scripts ASM (o usa$BP8_ASM_PATH)--abasm-path PATH: Ruta a abasm.py (o usa$ABASM_PATH)
Niveles de build:
| Build | Descripción | MEMORY | Comandos disponibles |
|---|---|---|---|
| 0 | Todas las funcionalidades | 23600 | |LAYOUT, |COLAY, |MAP2SP, |UMA, |3D |
| 1 | Juegos de laberintos | 25000 | |LAYOUT, |COLAY |
| 2 | Juegos con scroll | 24800 | |MAP2SP, |UMA |
| 3 | Juegos pseudo-3D | 24000 | |3D |
| 4 | Sin scroll/layout (+500 bytes) | 25500 | Básicos |
Ejemplos:
# Con variables de entorno configuradas
build8bp compile --build 0
# Build 1 con ruta explícita
build8bp compile --build 1 --asm-path ./8BP_V43/ASM
# Build 2 con ambas rutas explícitas
build8bp compile --build 2 \
--asm-path "/Users/destroyer/Downloads/8BP-master 2/8BP_V43/ASM" \
--abasm-path "/Users/destroyer/Downloads/8BP-master 2/abasm/src/abasm.py"
Salida generada:
El comando crea un directorio dist/ dentro del directorio ASM con:
8BP{build}.bin- Binario compiladomake_all_mygame.lst- Listado de ensambladomake_all_mygame.map- Mapa de símbolos
🔧 Comando: patch
Aplica correcciones de sintaxis automáticas para compatibilidad con ABASM.
build8bp patch --help
Opciones:
--asm-path PATH: Ruta a los scripts ASM (o usa$BP8_ASM_PATH)
Correcciones aplicadas:
and a,→andor a,→orxor a,→xordjnz,→djnzifnot X = Y→if X != Y
Archivos modificados:
8bitsDePoder_v043_001.asmmake_graficos_mygame.asm
Ejemplos:
# Con variable de entorno
export BP8_ASM_PATH=./8BP_V43/ASM
build8bp patch
# Con ruta explícita
build8bp patch --asm-path ./8BP_V43/ASM
⚠️ Nota: Crea archivos .backup automáticamente antes de modificar.
↩️ Comando: rollback
Restaura los archivos ASM desde los backups creados por patch.
build8bp rollback --help
Opciones:
--asm-path PATH: Ruta a los scripts ASM (o usa$BP8_ASM_PATH)
Ejemplos:
# Restaurar todos los archivos modificados
build8bp rollback --asm-path ./8BP_V43/ASM
🎯 Flujo de trabajo completo
# 1. Configurar variables de entorno (opcional)
export BP8_ASM_PATH="./8BP_V43/ASM"
export ABASM_PATH="./abasm/src/abasm.py"
# 2. Aplicar parches (solo la primera vez)
build8bp patch
# 3. Compilar diferentes versiones
build8bp compile --build 0 # Versión completa
build8bp compile --build 1 # Solo laberintos
build8bp compile --build 2 # Solo scroll
# 4. Los binarios estarán en dist/
ls -lh ./8BP_V43/ASM/dist/
# 5. Si necesitas revertir cambios
build8bp rollback
🏗️ Estructura del proyecto
build8bp/
├── src/
│ └── build8bp/
│ ├── __init__.py # Inicialización del paquete
│ ├── cli.py # Punto de entrada principal (47 líneas)
│ ├── utils.py # Utilidades compartidas
│ └── commands/ # Comandos modulares
│ ├── __init__.py
│ ├── compile.py # Comando compile
│ ├── patch.py # Comando patch
│ └── rollback.py # Comando rollback
├── pyproject.toml # Configuración Poetry
└── README.md # Esta documentación
👨💻 Desarrollo
Ejecutar en modo desarrollo
poetry run build8bp --help
Instalar localmente con pipx
# Instalar
pipx install .
# Reinstalar tras cambios
pipx install . --force
# Desinstalar
pipx uninstall build8bp
Construir distribución
poetry build
Genera archivos en dist/:
build8bp-0.1.0.tar.gz- Código fuentebuild8bp-0.1.0-whl- Wheel para instalación
Publicar en PyPI
# Test PyPI (pruebas)
poetry config repositories.testpypi https://test.pypi.org/legacy/
poetry publish -r testpypi
# PyPI real
poetry publish
🛠️ Dependencias
- Python: 3.8+
- click: 8.1.7+ - Framework CLI
- rich: 13.7.0+ - Formato y colores en terminal
📝 Licencia
MIT License - Ver archivo LICENSE para más detalles.
🙏 Créditos
- 8BP (8 Bits de Poder): Framework original para desarrollo de juegos en Amstrad CPC
- ABASM: Cross-assembler Z80 en Python
- Amstrad CPC: Ordenador clásico de 8 bits
🐛 Solución de problemas
Error: "No se especificó la ruta de los scripts ASM"
Configura la variable de entorno o usa el parámetro:
export BP8_ASM_PATH="./8BP_V43/ASM"
# o
build8bp compile --build 0 --asm-path ./8BP_V43/ASM
Error de sintaxis en compilación
Ejecuta primero el comando patch:
build8bp patch --asm-path ./8BP_V43/ASM
No se encuentra el binario generado
Verifica el directorio dist/:
ls -lh ./8BP_V43/ASM/dist/
📞 Soporte
Para problemas, sugerencias o contribuciones, abre un issue en el repositorio del proyecto.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file build8bp-0.1.1.tar.gz.
File metadata
- Download URL: build8bp-0.1.1.tar.gz
- Upload date:
- Size: 7.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.13.9 Darwin/25.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d2b79110501a2360602bf141f7bb72c6673f8e6f7f9b80d400c813b3bbe8527
|
|
| MD5 |
c14a23c81aa17858fcc9331aace736dc
|
|
| BLAKE2b-256 |
bf8902eeffffe4a84ebfef6ee611e14d6498634cc7507888a592a8548b252251
|
File details
Details for the file build8bp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: build8bp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 10.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.13.9 Darwin/25.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
897d0f4195123fd9ba19ba86ea9ecbfdf1f3607887772dc924ba3fd656978d81
|
|
| MD5 |
215c63bdb5048e254f175f198a6a9a75
|
|
| BLAKE2b-256 |
6e96a9bfb42ac6f57a545fb965eb03e6a4128425d3ea7b8373ac790a37a777c0
|