Migrando desde ps2sdk original
Este SDK reemplaza el sistema de build y la estructura de paquetes de upstream. Estos son los cambios para proyectos que vienen de ps2dev/ps2sdk y ps2dev/ps2sdk-ports.
El sistema de build: Makefile → ps2.yaml
Makefile.pref, Makefile.eeglobal, Makefile.iopglobal, y los EE_CFLAGS/EE_LIBS/IOP_IMPORT_INCS escritos a mano se reemplazan por un único ps2.yaml que describe los targets de un proyecto y los paquetes que cada uno necesita por nombre.
project: my-game
targets:
- name: my-game
type: ee
sources: [main.c]
libs: [png, freetype, gskit, dmakit]ps2build build genera build.ninja y build/compile_commands.json, y luego invoca ninja. libs: resuelve automáticamente los flags de include y enlazado de cada paquete. Consulta ps2.yaml para el formato completo, y Primeros pasos para el resto del flujo de trabajo.
El árbol de paquetes: plano → por paquete
El original instala todo en un único árbol compartido ($PS2SDK/ee/include, $PS2SDK/ee/lib, $PS2SDK/iop/include), con los headers y archives de todos los paquetes juntos. Aquí cada paquete tiene su propio directorio:
$PS2DEV/packages/core/<nombre>/
$PS2DEV/packages/world/<nombre>/Cada uno lleva su propio package.yaml, y libs: resuelve un paquete por ese nombre de directorio. Consulta Paquetes para cómo se resuelven headers y orden de enlazado, y Paquetes disponibles para lo que está instalado.
Ya no existe un único $PS2SDK/ee/include. Usa libs:.
El nombre de un paquete debe coincidir con su stem de -l
Nombra el directorio como lo que pasarías a -l, y no como el nombre del proyecto. zlib es z (libz.a, -lz). Lo mismo para aa (no aalib), mad (no libmad), tap (no libtap), id3tag (no libid3tag), jpeg (no libjpeg-turbo). ps2build deriva el flag de enlazado del nombre literal en libs: y no lee el package.yaml para obtener el nombre del archive.
Niveles (tiers): core vs world
Cada paquete declara un tier::
core- ps2sdk original (origin: ps2sdk), licencia permisiva. Kernel, drivers, sistema de archivos, memoria y redes.world- todo lo demás:ps2sdk-ports, ports de terceros, LGPL/GPL/BSD/MIT, sin restricción.
core necesita origin: ps2sdk y una licencia permisiva. Sin ambos, el paquete va a world, incluso si forma parte del ps2sdk original (unos pocos módulos de variantes de BIOS quedan en world por esta razón). audsrv no está en ningún nivel: se mantiene en su propio repositorio y se instala igual.
common es la única excepción: sus headers siempre están en el include path de cualquier target. headers: [common] no se necesita ni se acepta.
Portear tu propia biblioteca
Consulta Paquetes personalizados para las dos formas soportadas: envolver un build de CMake existente contra ps2dev.cmake, o escribir un par nativo ps2.yaml + package.yaml reflejando la lista de objetos de tu Makefile anterior. En ambos casos, packages/world/<nombre>/ es lo que se comprime y se publica en un release, instalable por nombre como cualquier paquete de core o world.
Qué no está migrado todavía
Esta lista no es exhaustiva. Las variantes de revisión de BIOS poco comunes y las herramientas de diagnóstico solo para desarrollo se dejan fuera a propósito. Si algo falta aquí y en Paquetes disponibles, aún no se ha revisado.
- Utilidades hermanas de
ee/mpeg- el decodificador (mpeg) usa aceleración por hardware IPU; un par de archivos auxiliares no están incluidos. - El cliente HTTP del lado IOP (
iop/fs/http) - su dependencia de lwip (ps2ip-nm/ps2ips-iop) está migrada, así que solo falta migrarlo. - Codecs de audio:
vorbis/vorbisfile/ogg, yclearspu(por debajo delibspu2, que sí está migrado). vmcman- una memory card virtual respaldada por un archivo en lugar de hardware, útil para emulación y desarrollo.- Variantes de revisión de BIOS y herramientas de diagnóstico de DEV9/HDD/memory card - configuraciones alternativas de
apa/pfs,hdck/hdsk/fsck/fssk. Presentes en el original, con poca demanda.
Fuera de alcance: hardware exclusivo de arcade (drivers de dongle y chip de seguridad, keepalives del watchdog de arcade) y unas pocas utilidades del original que son shims obsoletos de flujo de desarrollo.