Leon wrote:Pues "ProRing" tiene más letras
No es el tamaño de la palabra en si lo que provoca el error, si no que es un tamaño mayor de lo esperado. ProRing tendrá más espacio asignado de lo que tenía Ribbon.
Es algo parecido a lo que dice Papp, pero no es que sea un tamaño mayor de lo esperado, sino que tras la palabra Ribbon se le han metido caracteres de relleno de más. Profundicemos un poco. Para mi siguiente truco necesito un editor hexadecimal, conocimientos muy muy básicos de traducción de juegos clásicos y una ROM del FFI americano de NES.
Abrimos la ROM con el editor hexadecimal y vamos a la posición 0x02BC05. ¿Por qué esta posición? Porque es la que apunta al texto que se ve en Ribbon. ¿Qué como lo se? Porque la ROM de FFI la tengo más trillada que los chistes sobre el género de
Nube de oscuridad.
Cada byte representa un carácter salvo en los diálogos, donde se agrupan en un byte combinaciones de (por ejemplo el byte 0x51 corresponde "ca")
[tabla]
9b | ac | a5 | a5 | b2 | b1 | ff | ff | 00 |
R | i | b | b | o | n | { } | { } | {FIN DE CADENA} |
[/tabla]
En muchos objetos, se rellena el final de cadena con el byte 0xff y ese es el problema, que tiene un 0xff de más y por tanto ese 0xff es el que sustituye el lateral de la ventana donde se muestra. Ahora veamos que ocurre con ProRing que es mayor:
Repetimos el mismo proceso con la posición 0x02BC46 (que es ProRing)
[tabla]
99 | b5 | b2 | 9b | ac | b1 | aa |
00 |
P | r | o | R | i | n | g |
{FIN DE CADENA} |
[/tabla]
Por tanto, aunque parezca extraño ProRing tiene menos caracteres que Ribbon{}{} y de ahí que el último 0xFF sea el que tape el lateral como ya he comentado. Casi con un 99% de probabilidades podría asegurar que si en el editor hexadecimal se cambiase el último 0xFF por un 0x00 el problema se solucionaría. Lo probaré esta tarde.