Skip to main content

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.

Python Poetry License

📋 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 compilado
  • make_all_mygame.lst - Listado de ensamblado
  • make_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,and
  • or a,or
  • xor a,xor
  • djnz,djnz
  • ifnot X = Yif X != Y

Archivos modificados:

  • 8bitsDePoder_v043_001.asm
  • make_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 fuente
  • build8bp-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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

build8bp-0.1.1.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

build8bp-0.1.1-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

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

Hashes for build8bp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 3d2b79110501a2360602bf141f7bb72c6673f8e6f7f9b80d400c813b3bbe8527
MD5 c14a23c81aa17858fcc9331aace736dc
BLAKE2b-256 bf8902eeffffe4a84ebfef6ee611e14d6498634cc7507888a592a8548b252251

See more details on using hashes here.

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

Hashes for build8bp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 897d0f4195123fd9ba19ba86ea9ecbfdf1f3607887772dc924ba3fd656978d81
MD5 215c63bdb5048e254f175f198a6a9a75
BLAKE2b-256 6e96a9bfb42ac6f57a545fb965eb03e6a4128425d3ea7b8373ac790a37a777c0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page