WE6FE Database Editor
Inicio esta Documentacion de Offsets Database para el Juego Winning Eleven 6 Final Evolution (WE6FE).
La idea con este proyecto es ir desglosando la Database del juego, aprender un poco mas de el, y crear un Database Editor en Python!
Asi, podre avanzar en los otros juegos a los cuales deseo crear editores modernos como:
- PES 4 - WE8
- PES 3 - WE7
... y todos esos juegos Retro antes de PES 6 que estan Olvidados.
Vamos a ver en que termina esta aventura....
[Documentación Técnica]
Mapeo de Atributos de Jugadores en WE6FE (PS2)
Juego: Winning Eleven 6 Final Evolution (PS2)
Archivo Objetivo: SLPM_622.68
Herramientas Utilitarias:
- Hex Workshop v4.23 (32-bit),
- Python 3.x
1. Mapeo del Offset y Tamaño de Estructura
Offset Base: 0x1F24B0
Tamaño por Jugador: 44 bytes (0x2C bytes)
Byte Order: Little Endian (Intel)
--------------------------------
Estructura Interna del Bloque (44 bytes):
Bytes 00 - 01: ID Desconocido / Control interno
Byte 02: Ataque (Attack)
Byte 03: Defensa (Defence)
Byte 04: Balance (Body Balance)
Byte 05: Resistencia (Stamina)
Byte 06: Velocidad Máxima (Top Speed)
Byte 07: Aceleración (Acceleration)
Byte 08: Respuesta (Response)
Byte 09: Agilidad (Agility)
Byte 10: Precisión de Drible (Dribble Accuracy)
Byte 11: Velocidad de Drible (Dribble Speed)
Byte 12: Precisión Pase Corto (Short Pass Accuracy)
Byte 13: Velocidad Pase Corto (Short Pass Speed)
Byte 14: Precisión Pase Largo (Long Pass Accuracy)
Byte 15: Velocidad Pase Largo (Long Pass Speed)
Byte 16: Precisión de Tiro (Shot Accuracy)
Byte 17: Potencia de Tiro (Shot Power)
Byte 18: Técnica de Tiro (Shot Technique)
Byte 19: Saque de Falta / Tiro Libre (Free Kick Accuracy)
Byte 20: Efecto / Curva (Curving)
Byte 21: Cabezazo (Heading)
Byte 22: Salto (Jump)
Byte 23: Técnica (Technique)
Byte 24: Agresividad (Aggression)
Byte 25: Mentalidad (Mentality)
Byte 26: Habilidad de Arquero (GK Skills)
Byte 27: Trabajo en Equipo (Teamwork)
Byte 28: Condición / Regularidad (Condition / Stability)
Byte 29: Frecuencia Pie Malo (Weak Foot Frequency)
Byte 30: Precisión Pie Malo (Weak Foot Accuracy)
Bytes 30 - 43: Espacio reservado / Atributos especiales (14 bytes)
2. Script Lector en Python (we6fe_reader.py)
Script funcional en Python para lectura binaria automática directamente desde el ejecutable SLPM_622.68.
Codigo:
Resumen de estudio de la Database WE6FE:
Atributo de Jugadores:
![[Imagen: WE6FE-Database-TEST.png]](https://i.postimg.cc/9FSkgvL1/WE6FE-Database-TEST.png)
Database Completa:
![[Imagen: WE6FE-Database-TEST3.png]](https://i.postimg.cc/kGRQ2hKZ/WE6FE-Database-TEST3.png)
Atributo de Jugadores:
![[Imagen: WE6FE-Database-TEST4.png]](https://i.postimg.cc/B6rgB0SB/WE6FE-Database-TEST4.png)
Programa: Lector de Python
![[Imagen: WE6FE-Database-TEST5-Programa-lector.png]](https://i.postimg.cc/9FpdrT7D/WE6FE-Database-TEST5-Programa-lector.png)
Espero continuar con este desarrollo...
Enjoy!
Inicio esta Documentacion de Offsets Database para el Juego Winning Eleven 6 Final Evolution (WE6FE).
La idea con este proyecto es ir desglosando la Database del juego, aprender un poco mas de el, y crear un Database Editor en Python!
Asi, podre avanzar en los otros juegos a los cuales deseo crear editores modernos como:
- PES 4 - WE8
- PES 3 - WE7
... y todos esos juegos Retro antes de PES 6 que estan Olvidados.

Vamos a ver en que termina esta aventura....
[Documentación Técnica]
Mapeo de Atributos de Jugadores en WE6FE (PS2)
Juego: Winning Eleven 6 Final Evolution (PS2)
Archivo Objetivo: SLPM_622.68
Herramientas Utilitarias:
- Hex Workshop v4.23 (32-bit),
- Python 3.x
1. Mapeo del Offset y Tamaño de Estructura
Offset Base: 0x1F24B0
Tamaño por Jugador: 44 bytes (0x2C bytes)
Byte Order: Little Endian (Intel)
--------------------------------
Estructura Interna del Bloque (44 bytes):
Bytes 00 - 01: ID Desconocido / Control interno
Byte 02: Ataque (Attack)
Byte 03: Defensa (Defence)
Byte 04: Balance (Body Balance)
Byte 05: Resistencia (Stamina)
Byte 06: Velocidad Máxima (Top Speed)
Byte 07: Aceleración (Acceleration)
Byte 08: Respuesta (Response)
Byte 09: Agilidad (Agility)
Byte 10: Precisión de Drible (Dribble Accuracy)
Byte 11: Velocidad de Drible (Dribble Speed)
Byte 12: Precisión Pase Corto (Short Pass Accuracy)
Byte 13: Velocidad Pase Corto (Short Pass Speed)
Byte 14: Precisión Pase Largo (Long Pass Accuracy)
Byte 15: Velocidad Pase Largo (Long Pass Speed)
Byte 16: Precisión de Tiro (Shot Accuracy)
Byte 17: Potencia de Tiro (Shot Power)
Byte 18: Técnica de Tiro (Shot Technique)
Byte 19: Saque de Falta / Tiro Libre (Free Kick Accuracy)
Byte 20: Efecto / Curva (Curving)
Byte 21: Cabezazo (Heading)
Byte 22: Salto (Jump)
Byte 23: Técnica (Technique)
Byte 24: Agresividad (Aggression)
Byte 25: Mentalidad (Mentality)
Byte 26: Habilidad de Arquero (GK Skills)
Byte 27: Trabajo en Equipo (Teamwork)
Byte 28: Condición / Regularidad (Condition / Stability)
Byte 29: Frecuencia Pie Malo (Weak Foot Frequency)
Byte 30: Precisión Pie Malo (Weak Foot Accuracy)
Bytes 30 - 43: Espacio reservado / Atributos especiales (14 bytes)
2. Script Lector en Python (we6fe_reader.py)
Script funcional en Python para lectura binaria automática directamente desde el ejecutable SLPM_622.68.
Codigo:
Código:
import struct
FILE_PATH = "SLPM_622.68"
BASE_OFFSET = 0x1F24B0
PLAYER_SIZE = 44
NUM_PLAYERS = 10
def leer_base_datos_jugadores():
print(f"Leyendo base de datos de Winning Eleven 6 FE...")
print(f"Archivo: {FILE_PATH} | Offset Base: {hex(BASE_OFFSET)}\n")
try:
with open(FILE_PATH, "rb") as f:
f.seek(BASE_OFFSET)
for i in range(NUM_PLAYERS):
player_bytes = f.read(PLAYER_SIZE)
if len(player_bytes) < PLAYER_SIZE:
break
unpacked = struct.unpack("<30B 14s", player_bytes)
jugador = {
"ataque": unpacked[2],
"defensa": unpacked[3],
"balance": unpacked[4],
"stamina": unpacked[5],
"top_speed": unpacked[6],
"aceleracion": unpacked[7]
}
current_offset = BASE_OFFSET + (i * PLAYER_SIZE)
print(f"--- Jugador #{i} [Offset: {hex(current_offset)}] ---")
print(f" Ataque: {jugador['ataque']} | Defensa: {jugador['defensa']} | Balance: {jugador['balance']}")
print(f" Stamina: {jugador['stamina']} | Velocidad: {jugador['top_speed']} | Aceleración: {jugador['aceleracion']}")
print("-" * 55)
except FileNotFoundError:
print(f"Error: No se encontró el archivo '{FILE_PATH}'.")
if __name__ == "__main__":
leer_base_datos_jugadores()Resumen de estudio de la Database WE6FE:
Atributo de Jugadores:
![[Imagen: WE6FE-Database-TEST.png]](https://i.postimg.cc/9FSkgvL1/WE6FE-Database-TEST.png)
Database Completa:
![[Imagen: WE6FE-Database-TEST3.png]](https://i.postimg.cc/kGRQ2hKZ/WE6FE-Database-TEST3.png)
Atributo de Jugadores:
![[Imagen: WE6FE-Database-TEST4.png]](https://i.postimg.cc/B6rgB0SB/WE6FE-Database-TEST4.png)
Programa: Lector de Python
![[Imagen: WE6FE-Database-TEST5-Programa-lector.png]](https://i.postimg.cc/9FpdrT7D/WE6FE-Database-TEST5-Programa-lector.png)
Espero continuar con este desarrollo...
Enjoy!

