Blog | Archivo | Contacto | Administración |
Hace poco me volví a instalar el Vampire Bloodlines para sacar unas capturas de pantalla comparativas con respecto al Limbo of the Lost. Sólo el juego original con su parche oficial.
Y cuál no sería mi sorpresa al comprobar que me decía que mi ordenador necesitaba al menos 15MB de RAM instalada (ni siquiera libre), y que yo sólo tenía una cantidad negativa. He aquí uno de los más típicos errores: abusar del tipo int, cuando hay cosas que no deben tener signo.
Porque el compilador genera comprobaciones con signo, las cuales nos cascan a partir de los 2GB.
Busco la cadena en un las dlls, la encuentro en Bin\engine.dll. La meto en el IDA, localizo la cadena, referencia cruzada y listo:
El API capa a partir de los 4GB, para que no casquen las aplicaciones antiguas que no usan GlobalMemoryStatusEx, así que no hay peligro de perder bits; por lo tanto cambié el 7D (jge) en 200FA494 (000FA494 en el archivo) por un 73 (jae) para hacerla sin signo. Pero bien podría ponerse un EB (jmp relativo de 8 bits) y que funcione siempre. Y a jugar.
Sé que algunos de los parches no oficiales incluyen esta librería desde el Half-life 2 (mismo engine) o algo más moderno, pero no es plan. Así al menos, fueron 4 minutos divertidos, mucho más que tener que buscar un parche por internet, bajarlo, instalarlo (sacando backups previos por si acaso), etc.
Sí, yo habría hecho lo mismo.
Post cerrado