Índice/ Códigos Fuente/ Houdini: el código y la documentación de los ficheros de PCF original, ya en abierto
Edición

Houdini: el código y la documentación de los ficheros de PCF original, ya en abierto

1 mensajes · 17 vistas
#1 por jordirubo » Hoy, 11:13
Hola a todos.

Hoy publico en abierto la base técnica sobre la que he construido el editor Houdini: todo lo que he ido descubriendo de cómo están hechos por dentro los ficheros de los PC Fútbol clásicos, y una biblioteca que los lee y los escribe sin romperlos.

👉 Entra para ver el enlace

Es gratis, es libre (licencia AGPL-3.0) y cualquiera puede usarlo, estudiarlo y mejorarlo.

Qué es (y qué no es)

No es un editor. No vais a encontrar ventanas ni botones. Es la pieza que hay debajo de un editor: la que sabe en qué byte está la media de un jugador, cómo se cifra un nombre, dónde guarda el ejecutable las plazas de cada división o por qué un fichero deja de cargar si un texto crece un carácter.

El editor Houdini Entra para ver el enlace se basa en esta documentación. Si lo que quieres es editar tu PC Fútbol, usa el editor. Si quieres entender cómo funciona por dentro, hacer tu propia herramienta o ayudarme a descubrir lo que todavía no sé, esto es para ti.

Qué ediciones cubre

FamiliaEdiciones
PC Fútbol 3.0La de DOS, temporada 94-95
PC Fútbol 4.0 y 4.5Un fichero por equipo, escudos y camisetas propios y el simulador 2D
PC Fútbol 5.0 y 6.0Con sus ediciones de Oro, y también PC Calcio y PC Premier
PC Fútbol 7, 2000 y 2001La familia de los ficheros .FDI
De cada una he documentado los equipos, los jugadores, los entrenadores, los textos, los escudos, las fotos, las camisetas, las paletas de color, el sonido y lo que vive dentro del ejecutable: divisiones, competiciones, año de la temporada y límites como el de extracomunitarios.

Qué hay en el repositorio

Son dos partes:

1. La wiki (carpeta wiki/). 44 páginas escritas para leer, no para programar. Es lo primero que os recomiendo:
  • Reglas de oro: las cinco cosas que hay que tener claras antes de tocar un byte. Si solo leéis una página, que sea esta.
  • Qué hay dentro de cada edición: el mapa de ficheros, qué guarda cada uno y cuál te interesa según lo que quieras cambiar.
  • Páginas concretas sobre la ficha del jugador, el bloque de equipo, el texto, las imágenes, el sonido y el ejecutable, con tablas de posiciones y campos.
2. El motor (carpeta engine/). Una biblioteca en Python que lee y escribe todos esos formatos. Su regla básica es el round-trip byte a byte: si abres un fichero y lo guardas sin tocar nada, sale idéntico al original. Si cambias algo, solo cambian esos bytes. Así me aseguro de que nada se rompe por accidente.

Cómo entenderlo: cuatro ideas clave

Si nunca habéis abierto un fichero de PC Fútbol con un editor hexadecimal, estas cuatro ideas os ahorrarán muchas horas (a mí me habrían ahorrado unas cuantas):
  1. El tamaño manda. El juego localiza casi todo por posición, no buscando. Si un nombre crece y el bloque se alarga, todo lo que va detrás se desplaza y el juego lee basura. Por eso se edita "en el sitio", sin cambiar longitudes salvo donde el formato lo permite.
  2. Los textos no van en claro. Ningún nombre se guarda tal cual: en casi todas las ediciones cada byte va pasado por un XOR fijo, y en la 3.0 depende de la longitud y la posición. No es ninguna protección, es una codificación que se descubre en cinco minutos, pero explica por qué al abrir un fichero no ves ni un nombre reconocible.
  3. Los equipos se identifican por su puntero. Cada club tiene un número fijo (el Barcelona es el 1, el Real Madrid el 4…) y es lo que usan las competiciones, las fichas y el ejecutable para referirse a él. Cambiar el nombre no cambia el equipo; cambiar el puntero sí.
  4. No todo está en la base de datos. Cuántos equipos tiene cada división, quién juega cada copa o en qué año empieza la temporada están escritos en el propio ejecutable del juego. Por eso añadir equipos a la base no basta para que aparezcan en la liga. En la wiki explico dónde está cada cosa en cada ejecutable.

Cómo usarlo

Si solo quieres entenderlo: abre la carpeta wiki/paginas en GitHub y empieza por reglas-de-oro.md y por la página "qué hay dentro" de tu edición. Se lee directamente en la web, no hace falta instalar nada.

Si quieres programar con él: hace falta Python 3.11 o superior. Las instrucciones para instalarlo están en el README del repositorio. Con el motor puedes abrir un fichero del juego, recorrer sus equipos y jugadores, consultar o cambiar cualquier campo (medias, aforo, nombres, tácticas…) y volver a guardarlo con la garantía de que solo cambia lo que has tocado.

Importante: los ficheros del juego

El repositorio no incluye ningún fichero de los juegos: ni ejecutables, ni bases de datos, ni gráficos, ni sonido. Solo trae unas pocas tablas técnicas que hacen falta para entender los formatos. Cada uno trabaja sobre su propia copia del juego.

Los cambios que describo en el ejecutable tocan solo reglas de juego (divisiones, competiciones, límites, años de nacimiento…). Ninguno toca la protección anticopia.

PC Fútbol es una marca de sus titulares y este proyecto no está afiliado a ellos.

Cómo participar

  • ¿Has encontrado un error o un dato que falta? Abre un issue en GitHub con la edición del juego, el fichero y qué esperabas ver, o coméntalo en este hilo.
  • ¿Sabes algo que no está documentado? Hay datos marcados como "sin confirmar" en la wiki. Si los puedes verificar con tu juego, me ayudas muchísimo.
  • ¿Programas? Los pull requests son bienvenidos.

Gracias

Casi todo lo que sé de estos formatos se lo debo a años de trabajo de la comunidad: carky12, peu7510, pcnimdock (FUTBOL_RELOAD), 1Simo1 (MultiEditorPCC), Pablinho (EPCF7), josewolf22, Mourg5, Jordi Gironés, Marchi (LSSL), lupus y la gente de pcfutbolmania, TRONIC, KeksPatch y PCx-Utils. El detalle está en el fichero NOTICE.md del repositorio. Si eres autor de alguno de esos trabajos y quieres que te cite de otra forma, dímelo.

Cualquier duda, por aquí.

Un saludo.