=========================================== DOCUMENTACIÓN DEL SISTEMA DE ARMARIOS =========================================== Juego: [Nombre del juego] Autor del análisis: Sergio Colaborador técnico: Copilot Fecha: [poner fecha] =========================================== 1. INTRODUCCIÓN =========================================== Este documento resume todo lo descubierto durante el análisis del sistema de guardado relacionado con los armarios (contenedores) del juego. Incluye: - Localización del contador global de armarios abiertos - Identificación de flags de evento relacionados - Confirmación de qué offsets NO son armarios - Estado actual de la investigación - Próximos pasos recomendados El objetivo final es permitir manipular el save para: - abrir o cerrar armarios individualmente - forzar el logro de “abrir todos los armarios” - depurar el comportamiento del juego =========================================== 2. CONTADOR GLOBAL DE ARMARIOS ABIERTOS =========================================== Offset: 0x0295C Tipo: contador simple (1 byte) Función: almacena cuántos armarios ha abierto el jugador Ejemplo: - 0x3B = 59 armarios abiertos - 0x3C = 60 armarios abiertos - 0x50 = 80 armarios abiertos (valor máximo para el logro) Este contador: - aumenta en +1 cada vez que se abre un armario - NO depende del guardado - NO es un bitfield - NO controla si un armario está abierto o cerrado - solo refleja el total acumulado IMPORTANTE: Modificar este contador NO abre ni cierra armarios reales. Solo afecta al número que muestra el juego y a la lógica del logro (si el logro depende únicamente del contador). =========================================== 3. FLAG DE EVENTO RELACIONADO (NO ES ARMARIO) =========================================== Offset: 0x02934 Cambio observado: EE → FE al abrir un armario concreto Bit afectado: bit 7 (0x80) Este byte: - cambia al abrir el armario de prueba - revertirlo hace que el armario vuelva a aparecer cerrado - PERO no forma parte del bloque real de armarios - es un flag de evento o script asociado al acto de abrir ese armario Conclusión: 0x02934 NO es el bitfield de armarios. Es un flag de evento que se activa al abrir ese armario concreto. =========================================== 4. BLOQUE REAL DE ARMARIOS (AÚN NO LOCALIZADO) =========================================== El juego tiene 80 armarios → se necesitan 80 bits → 10 bytes. El bloque real: - NO está en 0x02930–0x0293F - NO incluye 0x02934 - NO se ve afectado al poner FF en ese rango - debe contener exactamente 59 bits activos en el save analizado - debe cambiar un solo bit al abrir un armario - debe permanecer estable al guardar sin abrir nada Estado actual: El bloque real aún no ha sido identificado, pero sabemos que: - está cerca del rango 0x02800–0x02B00 - debe ser un bloque compacto de 10 bytes - debe tener valores tipo: 00, 01, 03, 07, 0F, 1F, 3F, 7F, FF - debe contener 59 bits activos en el save actual =========================================== 5. RESUMEN DE HALLAZGOS =========================================== ✔ 0x0295C = contador global de armarios abiertos ✔ 0x02934 = flag de evento asociado al armario de prueba ✔ revertir 0x02934 cierra el armario visualmente ✔ el contador global NO depende de 0x02934 ✔ poner FF en 0x02920–0x0293F NO abre armarios reales ✔ el bloque real de armarios NO está en esa zona ✔ el contador global coincide exactamente con el número mostrado por el juego =========================================== 6. PRÓXIMOS PASOS RECOMENDADOS =========================================== 1. Volcar el rango 0x02800–0x02A00 para localizar el bloque real. 2. Buscar un bloque de 10 bytes con ~59 bits activos. 3. Confirmar qué byte cambia al abrir un armario nuevo. 4. Mapear los 80 bits → 80 armarios. 5. Crear un editor que: - abra/cierre armarios individualmente - actualice el contador global - recalcule el checksum automáticamente =========================================== 7. CHECKSUM =========================================== El checksum del save se encuentra en: - 0x2270 (LSB) - 0x2271 (MSB) Se calcula sumando: - todos los bytes desde 0x2200 hasta 0x3FFF - excepto los dos bytes del propio checksum - más un offset fijo de 3328 =========================================== 8. ESTADO FINAL =========================================== El sistema de armarios está parcialmente resuelto: - Contador global: ✔ localizado y confirmado - Flag de evento del armario de prueba: ✔ localizado - Bloque real de armarios: ❌ pendiente de localizar Una vez identificado el bloque real, se podrá: - abrir/cerrar armarios a voluntad - fabricar saves para logros - documentar completamente el formato =========================================== FIN DEL DOCUMENTO ===========================================