Cosas de pollos

Lugar donde se intentarán resolver problemas específicos
Responder
Avatar de Usuario
Lukas
Traductor compulsivo
Traductor compulsivo
Mensajes: 531
Registrado: 10 Dic 2012, 17:51

Cosas de pollos

Mensaje por Lukas » 14 Jul 2013, 18:18

Por cosas de locos.
Bueno, un par de cosas sobre un juego muy tonto, pero que creo que me puedo volver a encontrar en otro u otros.
Sobre todo es porque no veo la ventaja del sistema, a ver si alguien le ve sentido.

En el Peetan de Game Boy, la pantalla de selección de nivel/dificultad se ve tal que así.

[img]http://img194.imageshack.us/img194/7189/6fl.gif[/img]

Mirando en el visor, se ve que donde debe leerse LEVEL SELECT, faltan letras.

Ojeando en otra pestaña del visor, vemos esas letras.

[img]http://img89.imageshack.us/img89/2042/s817.gif[/img]

Esas letras V, S, C, T, se corresponden a la fuente normal del juego, sus valores (penúltima línea de la columna de cuatro que hay junto a la tile) son X56, 0x53, 0x43 y 0x54 respectivamente.
Mirando en la primera imagen entonces se ve que las letras que no son normales son las otras, la L y la E, cuyos valores son L=ef y E=ee, aunque en la captura no se ve.
Fijándonos en el mapa de tiles en la segunda pestaña del visor, se ven esas tiles, justo encima del 0123... y de los gráficos del título.

[img]http://img507.imageshack.us/img507/4994/w2z.gif[/img]

Primera tontería.
Si el juego carga todas las tiles, ¿por qué cogen la E y la L de otro sitio?
O sea, no tiene sentido, salvo ponerlo difícil para encontrar esa palabra al buscarla.
Pero sigue la cosa.

Ya hemos localizado el lugar donde está "LE EL ELE", lo que se ve en la primera imagen.

00015af0 92 00 01 ed 8c 00 14 ed 00 00 00 ef ee 00 ee ef ’..í...í...ïî.îï
00015b00 00 00 ee ef ee 00 00 00 00 00 ed 8c 00 01 ed 92 ..îïî.....í...í’

O sea, que antes, entre y después de las letras, hay espacios en blanco, o más bien, vacíos, con lo que podían haber escrito LEVEL SELECT normalmente, digo yo.

Vale, pues entonces escribe uno con toda su ilusión "ELEGIR NIVEL", y ¿qué pasa? Que el juego se va a tomar por saco y sale una cosa rarísima xDDD
No he tomado tantas imágenes, pero lo que hace el juego es:
- Escribe LE_EL__ELE___
- En los espacios donde deben ir las letras que faltan, las coge de otro lugar del juego y las inserta ahí.
Con lo que si escribes una letra que no sea L o E en los huecos en blanco, no se ven. Y además, si no se cambian las letras donde están, las pone encima de lo que quieras escribir o hace cosas raras.

Al final hay que irse a donde están esas letras,

00015780 52 00 20 41 00 28 5a 00 30 59 04 56 00 20 53 00 R. A.(Z.0Y.V. S.
00015790 40 43 00 48 54 05 e8 00 08 e9 00 10 ea 00 18 eb @C.HT.è..é..ê..ë

Además, el juego le asigna la posición a la letra en pantalla al insertarla, eso son los dos códigos que hay justo antes de cada letra, menos la V.
Así 0x00 es la altura y 0x20, 0x40 y 0x48 las posiciones horizontales de la S, C y T. Cambiando estas letras por las que nosotros queramos en la traducción, y si teniendo en cuenta el sitio en el que tienen que mostrarse, la cosa es fácil.

La pregunta es, ¿por qué narices lo hicieron así?
¿Tiene alguna ventaja?
Yo lo veo una complicación absurda para escribir dos puñeteras palabras, la verdad.


La otra cosa ya forma parte de lo último comentado antes.
Para los diferentes niveles/dificultades, el texto está escrito en el formato de las cuatro letras anteriores, es decir, indicando altura, lugar horizontal y luego letra. Para poner un espacio no se escribe el espacio, lo que hace es poner un lugar horizontal más lejos y así la letra se escribe dejando el espacio en blanco.

Para los cinco modos de dificultad sería esto, fijándose se puede leer "EASY", "NORMAL", "HARD", "VERY HARD" y "CRAZY". En VERY HARD no hay espacio, lo hace poniendo un código más largo para mostrar la H.

[img]http://img547.imageshack.us/img547/1962/wof.gif[/img]

Código: Seleccionar todo

00015730  01 ef 05 20 00 18 45 00 20 41 00 28 53 00 30 59  .ï. ..E. A.(S.0Y                
00015740  07 20 00 10 4e 00 18 4f 00 20 52 00 28 4d 00 30  . ..N..O. R.(M.0                
00015750  41 00 38 4c 05 20 00 18 48 00 20 41 00 28 52 00  A.8L. ..H. A.(R.                
00015760  30 44 08 56 00 08 45 00 10 52 00 18 59 00 28 48  0D.V..E..R..Y.(H                
00015770  00 30 41 00 38 52 00 40 44 06 20 00 10 43 00 18  .0A.8R.@D. ..C..                
00015780  52 00 20 41 00 28 5a 00 30 59 04 56 00 20 53 00  R. A.(Z.0Y.V. S.                
00015790  40 43 00 48 54 05 e8 00 08 e9 00 10 ea 00 18 eb  @C.HT.è..é..ê..ë    
¿Esto tiene alguna ventaja? ¿Sirve de algo?
Es que me sigue pareciendo más sencillo escribirlo como en todos los juegos, en vez de molestarse en algo así.

En fin, es más curiosidad que otra cosa, y por si tiene alguna explicación, tenerlo en cuenta en algún otro juego, tengo uno por ahí que creo que usa la misma mecánica para mostrar el texto, y aunque con este como era poquito ha sido fácil, en un juego con diálogos uno se puede volver loco hasta que le pilla el truco :roll:

Viendo el nivel de mis explicaciones ahora se ve por qué yo no he escrito ningún manual nunca :lol:
Siempre quise hacer uno al estilo de uno que leí, el "Do it, you idiot!" :twisted:

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5519
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 15 Jul 2013, 10:18

Lo que estás viendo en el OAM son los sprites. Por la razón que sea el juego usa algunas letras como sprites, que son todas esas 40 cosas "raras" que se definen con 4 bytes en esa pantalla, aunque parece que en este caso sólo se almacenan 3 bytes y el restante lo debe añadir a la hora de mostrar las cosas porque tiene siempre el mismo valor, y eso que nos ahorramos.

Si miras esos 4 bytes en la pantalla del OAM verás que son: coordenada Y, coordenada X, número de tile y flags. Muchas veces están relacionados, por lo que las coordenadas X estarán siempre bien puestas. Eso lo puedes ver en el primer texto que está almacenado ("EASY"), que tiene los valores 18-20-28-30 como posición X, cada tile a 8 bits del anterior. La coordenada Y suele ponerse a 0 y la actualiza el programa a la hora de tratarla según donde se vayan a poner las cosas:

Código: Seleccionar todo

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00015730   01 EF 05 20 00 18 45 00  20 41 00 28 53 00 30 59   .ï. ..E. A.(S.0Y
00015740   07 20 00 10 4E 00 18 4F  00 20 52 00 28 4D 00 30   . ..N..O. R.(M.0
00015750   41 00 38 4C 05 20 00 18  48 00 20 41 00 28 52 00   A.8L. ..H. A.(R.
00015760   30 44 08 56 00 08 45 00  10 52 00 18 59 00 28 48   0D.V..E..R..Y.(H
00015770   00 30 41 00 38 52 00 40  44 06 20 00 10 43 00 18   .0A.8R.@D. ..C..
00015780   52 00 20 41 00 28 5A 00  30 59 04 56 00 20 53 00   R. A.(Z.0Y.V. S.
00015790   40 43 00 48 54 05 E8 00  08 E9 00 10 EA 00 18 EB   @C.HT.è..é..ê..ë
000157A0   00 20 EC 05 90 00 08 91  00 10 92 00 18 93 00 20   . ì...‘..’..“. 
000157B0   94 04 54 00 08 4F 00 10  50 00 20 35 05 4E 00 08   ”.T..O..P. 5.N..
000157C0   41 00 10 4D 00 18 45 00  28 3A 08 41 00 08 4C 00   A..M..E.(:.A..L.
000157D0   10 4C 00 20 43 00 28 4C  00 30 45 00 38 41 00 40   .L. C.(L.0E.8A.@
El juego pone los tiles "LE" porque le sale de los mismísimos, así de claro. Se ha escrito mucho sobre uno de los grandes enigmas de la existencia, que es lo que pasa por la cabeza de un programador cuando hace un juego de pollos (sin contar con el sexo y las drogas, que es lo que tienen en común con el resto de los mortales, claro) y que suele ser siempre algo que escapa de todo entendimiento, así que todo intento por comprender sus motivos conducen irremediablemente a una pérdida de tiempo. Los tiles "VSCT" y el texto del nivel de dificultad se ponen como sprites.

Solucionarlo no es sencillo. Habría que cambiar el código para que no pusiese los tiles "LE" y poder poner tiles normales de la fuente sin sprites. Los textos del nivel de dificultad, así como otros, no tienen tanto problema porque se usan tiles normales y sólo hay que buscar textos traducidos que no superen la longitud original. Lo mejor que puedes hacer es dejar lo del "LEVEL SELECT" y acordarte de la familia de quien lo hizo así, que, aunque no soluciona nada, te libera y te quita bastante tensión.

El segundo problema está también resuelto. No hay espacios en "VERY HARD" porque las letras son tratadas como sprites y cada una lleva su coordenada. Por eso la "H" está a 16 bits de la "Y", lo que ahorra los bytes que se necesitarían para poner el espacio tonto.

Estas cosas son las que hacen que odie tanto a los manuales, como todo el mundo sabe. No encontrarás ninguno donde se expliquen, y es la razón por las que todos los manuales no son más que textos copiados de otros textos, diciendo siempre lo mismo (que es lo mismo que nada).

Aquí la frase que hay que poner no es "Do it, you idiot!", es la de "Yes, you can!". ¿O acaso vas a dejar que unos puñeteros pollos puedan contigo? Por cada palabra que traduzcas del juego Dios matará a un pollo, a un gatito y a un pokemon, así que ¿a qué demonios estás esperando?

~~~ AÑADIDO ~~~
Esto es lo que hay:

Código: Seleccionar todo

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00015AE0                     01 E9  92 E8 01 EA 8C 00 01 ED         .é’è.êŒ..í
00015AF0   92 00 01 ED 8C 00 14 ED  00 00 00 EF EE 00 EE EF   ’..íŒ..í...ïî.îï
00015B00   00 00 EE EF EE 00 00 00  00 00 ED 8C 00 01 ED 92   ..îïî.....íŒ..í’
00015B10   00 01 ED 8C 00 01 ED 92  00 01 ED 8C 00 01 ED 92   ..íŒ..í’..íŒ..í’
00015B20   00 01 ED 8C 00 01 EB 92  E8 01 EC 8C 00            ..íŒ..ë’è.ìŒ.
Poniendo en plan bonito:

Código: Seleccionar todo

01 E9 92 E8 01 EA 8C 00
01 ED 92 00 01 ED 8C 00
14 ED 00 00 00 EF EE 00 EE EF 00 00 EE EF EE 00 00 00 00 00 ED 8C 00
01 ED 92 00 01 ED 8C 00
01 ED 92 00 01 ED 8C 00
01 ED 92 00 01 ED 8C 00
01 EB 92 E8 01 EC 8C 00
Siempre empieza con un byte de control donde el bit superior indica repetir si está a 1 o copiar si está a 0 y los 7 restantes indican el número de tiles a mostrar (otra variente de RLE, con lo que te gustan). Cambiando los códigos por sus tiles nos queda:

Código: Seleccionar todo

01 "╔" 92 "═" 01 "╗" 8C " "
01 "║" 92 " " 01 "║" 8C " "
14 "║   LE EL  ELE     ║" 8C " "
01 "║" 92 " " 01 "║" 8C " "
01 "║" 92 " " 01 "║" 8C " "
01 "║" 92 " " 01 "║" 8C " "
01 "╚" 92 "═" 01 "╝" 8C " "
O sea, poner 1 tile "╔", repetir 0x12 tiles "═", poner 1 tile "╗", repetir 0x0C tiles " " (para completar los 32 tiles de ancho del map). Resumiendo, que esa parte muestra el recuadro incluyendo las "letras" "L" y "E", que están justo después de los 6 tiles de los recuadros. Eso hace que no se necesite la fuente, que puede que no esté en memoria cuando se genera el recuadro:

Código: Seleccionar todo

"╔══════════════════╗            "
"║                  ║            "
"║   LE EL  ELE     ║            "
"║                  ║            "
"║                  ║            "
"║                  ║            "
"╚══════════════════╝            "
De ahí se saca el por qué de todo: si se pone una línea en blanco en esa codificación del recuadro se ahorran 15 bytes, pero necesitaremos 7*3=21 bytes para poner esas letras como sprites, lo que hace que se necesiten 21-15=6 bytes más, y "la pela es la pela". Esos 6 bytes son los que hacen que hayas tenido que sacar pantallitas y dar explicaciones y preguntar y que yo tenga que responder y jugar a un maldito juego de pollos bastardos que no conocen a su padre (con razón dicen eso de "eres más puta que las gallinas"). Lo único bueno es que he dejado que el zorro o gato o lo que sea se zampe a los pollos para que la gallina sepa lo que es bueno. Siempre digo que quien no se consuela es porque no quiere.

Ya lo dice el refrán: No te acostarás sin matar un pollito más.

Avatar de Usuario
Lukas
Traductor compulsivo
Traductor compulsivo
Mensajes: 531
Registrado: 10 Dic 2012, 17:51

Mensaje por Lukas » 15 Jul 2013, 17:22

Yo lo solucioné a mi manera, no merecía la pena preguntar para algo tan tonto, (de hecho subí el parche el sábado), pero quería comentarlo por ver si es algo lógico, ya veo que no :lol:
Como dices tú es la forma "técnica", pero yo soy de los de arreglar las cosas con cinta adhesiva y tal y eso :roll:
Al menos me he reído con algunas cosas :lol: :lol: :lol:
Yo sinceramente creo que lo hicieron así porque el juego era tan sencillo que el programador se aburría y quiso hacer algo para demostrar que servía para algo más que para hacer juegos de pollos :twisted:
Pero bueno, me ha servido para aprender alguna otra cosilla, si es que no hay mal que por bien no venga. Cuando me ponga con el otro juego que creo que tiene el mismo formato ya lo comentaré.
Habiendo sitio libre y moviendo los punteros no hay mayor problema, solo es engorroso y aburrido, pero para eso estamos :cry:

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5519
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 15 Jul 2013, 18:14

Pero qué mala persona que eres. Está todo el mundo esperando desde hace años la traducción del juego de pollos y vas y la sacas a escondidas, sin anunciarlo ni nada y sin importarte los sentimientos de la gente.

Avatar de Usuario
Lukas
Traductor compulsivo
Traductor compulsivo
Mensajes: 531
Registrado: 10 Dic 2012, 17:51

Mensaje por Lukas » 17 Jul 2013, 16:07

Sí, todo el mundo habla del pollo culturista de la fase de bonus, como tirando de la cuerda el pollo vence al lobo.
Realismo puro y duro 8)
La verdad es que tengo terminados otros tres o cuatro juegos chorras como este, pero no quiero subir cosas solo por hacer bulto :lol:
Cuando saque algo más serio ya las iré colgando por ahí.
Tengo uno tipo puzzle que no consigo pasar más que cuatro niveles, me hace tirarme de los pelos de lo raro que es (y de lo malo también :lol: )

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5519
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 17 Jul 2013, 16:39

¿Era un lobo? Y yo jaleándome a mí mismo, diciéndome "mata al puto perro". Para que veas que algunos hemos llegado hasta ahí. Y eso por no hablar del juego de las sartenes donde el lobo (espero que ahí no sea un perro) se zampa a los pollitos como se descuiden según están recogiendo los huevos que caen.

[modo cabronazo ON]
Algún día te pasaré un enlace a vídeos de juegos "normales" de las consolas, de esos que han probado más de un usuario, para que varíes un poco.
[modo cabronazo OFF]

Avatar de Usuario
Auron
Mensajes: 34
Registrado: 25 Ene 2011, 22:09
Ubicación: En mi cuarto

Mensaje por Auron » 17 Jul 2013, 17:20

Interesante, ojala muchos más juegos no nos hicieran creer que necesitamos una edición gráfica chunga cuando vale con editar 2 líneas de texto XD

Buen trabajo Lukas & CUE.

Avatar de Usuario
Lukas
Traductor compulsivo
Traductor compulsivo
Mensajes: 531
Registrado: 10 Dic 2012, 17:51

Mensaje por Lukas » 19 Jul 2013, 22:51

CUE escribió:
[modo cabronazo ON]
Algún día te pasaré un enlace a vídeos de juegos "normales" de las consolas, de esos que han probado más de un usuario, para que varíes un poco.
[modo cabronazo OFF]
Es deformación profesional.
Con mi primera Game Boy no tenía un duro para nada, y un cartucho de ocho juegos, como no tenía otra cosa me pasaba horas jugando al Serpent y al Heinwako Alien (incluso en el modo original :lol: ) y al final les sacaba su aquel, porque no iba a reconocer que estaba pirado. Es que yo tengo un sentido artístico por los juegos que los plebeyos no comprendéis :ic_gaficas:
Putear a la serpiente del serpent durante media hora solo para ver que pasaba era la leche :mrgreen:
O marear a los marcianos del heinwako sin matarlos para que se acelerasen a tope :ic_parte:
O pegarte horas con el Ishido y apuntar los records en papel, y al cabo de un tiempo darte cuenta de que habías memorizado una secuencia de 20 ó 30 fichas :ic_nono_h4h: En ese momento guardé el juego en una caja y no volví a ponerlo, hasta que lo recordé para traducirlo hace un tiempo :ic_uf:
Aunque lo más habitual era jugar al Tetris haciendo solo Tetris y dejar que me matasen si no podía hacerlos, para tratar de sacar la puntuación más alta (sí, apuntándolos en papelitos también). Alguna vez llegué a más de 150 líneas solo con Tetris, empezando en el nivel 9 para tener el máximo de puntuación, tenías 100 líneas hasta que el juego empezaba a avanzar y se aceleraba.
O jugar en el nivel 9-5 con el truco del corazón y tratar de pasármelo :lol:
Llegué a quedarme a 4-5 líneas una vez, pero lo habitual era pasarme el rato iniciando partidas y palmando en menos de dos segundos :ic_rolleyes:
Buf, que aburrido debo estar hoy para recordar estas cosas :ic_dash3:

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5519
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 20 Jul 2013, 09:52

Yo recuerdo, años ha, en el siglo pasado, cuando no tenía pelo en la cara pero sí en la cabeza, además de estar bastante más delgado que ahora (que conste que lo de ahora es puro músculo, chicha de la buena, como todo el mundo sabe), que se revolucionó el mundo de la emulación cuando se empezaron a dumpear juegos de GB (recuerdo salas de chat, como #emuchina, con 1500 tíos, que petaban cada vez que alguien comentaba sobre un nuevo juego dumpeado) y aparecieron los primeros emuladores. En mi viejo 386SX (no tenía para un DX) se podían correr bastante bien los juegos simplones, pero los "buenos" rara vez iban al 25% de su velocidad real, siendo injugables, y eso era algo que nos pasaba a la mayoría, así que todos esos juegos "maluchos" fueron los que estuvieron en el escalafón más alto de la popularidad, nada de Zeldas o Marios.

Avatar de Usuario
Lukas
Traductor compulsivo
Traductor compulsivo
Mensajes: 531
Registrado: 10 Dic 2012, 17:51

Mensaje por Lukas » 21 Jul 2013, 22:13

Uh, emuchina :lol:
Cuántos años hace que no leía ese nombre :lol:

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5519
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 22 Jul 2013, 10:38

Tiempos cuando la scene era la scene, no lo que hay hoy día, que no se parece en nada. Es hora de limpiarse la lagrimilla de esos recuerdos emotivos :ic_tongue:

Responder