Registrarse

[RH - Otros] Preguntas y Respuestas

Estado
Cerrado para nuevas respuestas.

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia

WAH'S MEORH: PREGUNTAS Y RESPUESTAS

INFORMACIÓN

En este tema podrán plantear todas las dudas que vayan surgiendo a partir de los temas desarrollados en cada clase, o incluso las que surjan al momento de llevar a cabo las tareas.

Está terminantemente prohibido plantear dudas generales que deberían ir en el subforo de Dudas, como así también aquellas relacionadas al funcionamiento de la escuela (que deberían ir en la "Asamblea Escolar").

Las dudas planteadas serán respuestas en todos los casos por @Kauz o por mi. Sin embargo, si nos demoramos en responder y alguno sabe la respuesta a la duda de otro compañero, está permitido responderle, ¡ayúdense entre ustedes!




 
Última edición:

Laquin

Usuario mítico
muchas gracias por la leccion aunque tengo una pregunta(dos en realidad XD), no entiendo la diferencia entre bloque y tile y entre ofset y puntero me los esplicas? GRACIAS! :D
 

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia
muchas gracias por la leccion aunque tengo una pregunta(dos en realidad XD), no entiendo la diferencia entre bloque y tile y entre ofset y puntero me los esplicas? GRACIAS! :D
Tile: Mide 8x8 píxeles.
Bloque: Mide 16x16 píxeles. Está formado por 4 tiles.

Creo que lo mejor será ilustrarlo:


Lo que ves marcado en rojo son bloques.


Cada una de las 4 partes en que se divide un bloque es un tile.​

--------------------------------------------------------------------------------------------------

Offset: Es la dirección, la posición que ocupa algo en la ROM. Supongamos que tienes que ir al médico y su secretaria te pasa por teléfono la dirección de su consultorio. El offset sería el cartel que hay en la pared externa del consultorio que muestra la numeración del edificio y el nombre de la calle.

Puntero: Es un offset que está inserto en algún lugar de la ROM. Le sirve al juego para saber dónde debe buscar algún dato en específico. En el ejemplo anterior, sería el papel en el que anotaste la dirección.

Un offset es una word: 0x08XXXXXX
Un puntero es una word, solo que al verla en la ROM (si tenemos el editor hexadecimal configurado para que muestre 1 byte a la vez) lo vemos permutado: XX XX XX 08
 

Laquin

Usuario mítico
Tile: Mide 8x8 píxeles.
Bloque: Mide 16x16 píxeles. Está formado por 4 tiles.

Creo que lo mejor será ilustrarlo:


Lo que ves marcado en rojo son bloques.


Cada una de las 4 partes en que se divide un bloque es un tile.​

--------------------------------------------------------------------------------------------------

Offset: Es la dirección, la posición que ocupa algo en la ROM. Supongamos que tienes que ir al médico y su secretaria te pasa por teléfono la dirección de su consultorio. El offset sería el cartel que hay en la pared externa del consultorio que muestra la numeración del edificio y el nombre de la calle.

Puntero: Es un offset que está inserto en algún lugar de la ROM. Le sirve al juego para saber dónde debe buscar algún dato en específico. En el ejemplo anterior, sería el papel en el que anotaste la dirección.

Un offset es una word: 0x08XXXXXX
Un puntero es una word, solo que al verla en la ROM (si tenemos el editor hexadecimal configurado para que muestre 1 byte a la vez) lo vemos permutado: XX XX XX 08
aaa entonces los bloqes estan echos de tiles

y entonces los ofsets serian esto

y los punteros esto

no?
 

Bugrhak

A long time ago I used to call myself "Subzero".
@Franco Kuchiki te faltó decir lo de permutar, para que un pointer sea pointer ;)
----------------------------
@Laquin Laquih
En adición a lo que dijo Franquito Kuchiki:

Para que un offset sea pointer/puntero y funcione como tal, además de agregarle un 08 al final, hay que permutarlo.

¿Que es una permutación?

Una permutación consiste básicamente en dar vuelta un offset, o bien podríamos decir que en una permutación invertimos el orden del primer y ultimo byte que conforman al offset.

He aquí un ejemplo:

Supongamos que tenemos el offset 0x54E2D6 y por alguna razón queremos que alguna parte remota de nuestro rom nos dirija hacia ese offset.
Nuestra permutación sería así:

D2 E2 54 08

Como ves, "54" era el primer byte que conformaba el offset, y ahora está al final, en el lugar del "D6" y D6 toma el lugar de "52" básicamente en eso consiste una permutación.
En cuanto al "08", esto por ponerlo en palabras, es lo que indica que es un pointer, es algo que siempre se pone, de lo contrario no será un pointer.

Creo que con esto es mas que suficiente.

Salu2:cool::cool::cool:
 

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia
@Franco Kuchiki te faltó decir lo de permutar, para que un pointer sea pointer ;)
No. Un pointer es un offset inserto en algún lugar de la ROM que nos indica dónde está tal o cual cosa. Distinto es que tengas un editor hexadecimal configurado para mostrar de 1 byte a la vez y por lo tanto lo veas permutado (que sí lo expliqué).
Ejemplo de puntero con el visor de memoria configurado para mostrar 4 bytes (32 bits):


Señor Profesor Subzero dijo:
Para que un offset sea pointer/puntero y funcione como tal, además de agregarle un 08 al final, hay que permutarlo.

En cuanto al "08", esto por ponerlo en palabras, es lo que indica que es un pointer, es algo que siempre se pone, de lo contrario no será un pointer.
Más o menos :p
El 08 nos indica que el offset es de la ROM, pero no siempre debe estar, podría ser perfectamente un 02.

¿Por qué?
Simple, un offset no son 3 bytes (0xXXXXXX), sino 4 (0xXXXXXXXX). Los primeros dos indican la sección a la que pertenece. Generalmente vemos un 08 porque es una posición dentro de la ROM (0x08000000 hasta 0x08FFFFFF), aunque en ROMs expandidas puede ser superior y seguir haciendo referencia a la ROM.
Si los 2 primeros dígitos son menores a 08, es una posición dentro de la RAM.

Entonces, en definitiva, el 08 es parte del offset y podría aparecer otro número en lugar de 8, lo que no puede pasar es que no haya ninguno (es decir, que el offset puntero tenga 6 dígitos hexadecimales).
 

AlejBlue

Amante de la 4° y 5° Gen.
Mi pregunta/duda es sobre la 2da clase. Ya completé la primera tarea, ahora lo que me falta es pasar los números a los otros sistemas. Ya leí el post 3 veces, aún así no sé como pasarlos a los otros sistemas. Entonces, eso habría que investigarlo por nuestra cuenta, ¿no?
 

Skyflyer

Creador de Pokémon Zenit
Re: Respuesta: Preguntas y Respuestas

Mi pregunta/duda es sobre la 2da clase. Ya completé la primera tarea, ahora lo que me falta es pasar los números a los otros sistemas. Ya leí el post 3 veces, aún así no sé como pasarlos a los otros sistemas. Entonces, eso habría que investigarlo por nuestra cuenta, ¿no?
Realmente no tienes que saber la metodología, como dicen se puede usar la calculadora de windows, la cual te los transforma de forma sencilla.

Para ello abres la calculadora, y en la pestaña de arriba le das a ver, y verás que la puedes poner en varios modos. Por defecto viene puesto "Estándar". Si seleccionas programador verás que a la izquierda puedes elegir el sistema con el que estés trabajando, y te aparece binario, decimal, hexadecimal y oct (base 8).

Pues la conversión es sencillísima, imagina por ejemplo que quiero pasar el 3 de decimal a binario. Pues selecciono a la izquierda "Dec" y escribo en la calculadora un 3. Ahora al pulsar en la izquierda en Bin (donde ponía el Dec), verás que el número cambia a 11. Efectivamente, 3 decimal es 11 en binario (0b11 según la metodología que nos han planteado en la clase). Pues enhorabuena, has transformado tu primer número, jaja.

Pues así con todos, seleccionas el sistema en el que está el número, lo escribes y seleccionas el nuevo sistema al que vas a pasar el número. Y así se van transformando. Un truco es que si estás en la pantalla de la calculadora, con que hagas ctrl+c se copia el número entero (lo digo porque como escribas los binarios grandes dígito a dígito lo más seguro es que te vayas a equivocar xD).

Así que básicamente ésta es la forma. Espero que no haya problema en explicar cómo usar la calculadora para calcularlos, ya que como habéis dicho se puede usar, pero es importante que no os limitéis a transformarlos sin más y entendáis bien en qué se basa cada sistema. De nuevas puede parecer algo complicado pero ya veréis cómo es lo más sencillo del mundo.

Un saludo ^^
 

Laquin

Usuario mítico
tengho una pregunta

franco dijo qe la primera pokebal era el ofset 0x169BB5, la segunda pokebal $169D82 y la tercera $169DAE. yo e puesto a ratatata en la primera pokebal, a pidgei en la segunda y a caterpi en la tercera pero al jugar me sale pidgei en la segunda i en la tercera qe ago ayuda urjente!! :( :( :( :( :(

aqi una captura:


GRACIAS ADIOS
 

Bugrhak

A long time ago I used to call myself "Subzero".
@Laquin Laquih

Primero: Has dicho que pusiste a pidgey en la segunda pokeball, y que al jugarlo te aparece en la segunda pokeball, osea, eso esta correctisimo.

Segundo: La dirección de la tercera pokeball no es la 0x169DAE como tu has dicho, es la 0x169DB8.
Ese es el problema.

Salu2 y suerte^^

PD: Mejora esa ortografía.

PD2: El señor Franco había puesto mal el offset en el post (ya fue editado).
 
Última edición:

Laquin

Usuario mítico
@Laquin Laquih

Primero: Has dicho que pusiste a pidgey en la segunda pokeball, y que al jugarlo te aparece en la segunda pokeball, osea, eso esta correctisimo.

Segundo: La dirección de la tercera pokeball no es la 0x169DAE como tu has dicho, es la 0x169DB8.
Ese es el problema.

Salu2 y suerte^^

PD: Mejora esa ortografía.

PD2: El señor Franco había puesto mal el offset en el post (ya fue editado).
decia porque en la tersera pokebal pensava qe abia puesto a caterpi pero salia pidgei

pero era porqe se abia confundio franco

muchas gracias :D:D:D
 
Estado
Cerrado para nuevas respuestas.
Arriba