Registrarse

[RH - Otros] Segunda Escuela RH-GBC [Clase 06 - 28/03/15]

Estado
Cerrado para nuevas respuestas.

Blitz (Reisen)

El otro Blitz
Respuesta: Tema oficial de dudas de la Escuela RH-GBC

Lo confirmo: el "GEAR" que aparece apartado del resto pertenece al Pokégear, y el # que lo precede es el "Poké" en versión pequeña.

 

Chamber

Miembro insignia
Miembro insignia
Respuesta: Tema oficial de dudas de la Escuela RH-GBC

@Chamber

No entiendo nada >: 3
Voy al offset donde empieza $12AE8.
Le doy al pointer y me manda a E86A (ya me lo acuerdo de memoria)
voy allí, anoto el offset $57FE5
Luego voy a $754E para procurar hacerlo bien.
pongo el texto
le busco el pointer, me sale $4E75.
Cambio el E86A por $4E75, corro el juego y nada....
Ya me cargué 6 juegos y todavia no comprender :p

PD: y el paso 3?
Recuerda que el pointer debe estar dentro del mismo banco, osea entre $10000 y $13FFF. Tu lo estas marcando en $57FE5, lo cual es muy lejos de nuestro banco. Si inicias la búsqueda de E8 6A en $10000 llegaras al resultado correcto.

Otra cosa, el texto no lo puedes poner en $754E, ese es espacio en blanco pero del banco 0x01 y nosotros estamos en el banco 0x04. Como puedo saber en que banco estoy? Divide el offset entre 0x4000 en la calculadora de windows en modo hex.

Ejemplo:

12AE8 / 4000 = 4
754E / 4000 = 1

Vuelve a leer la clase con cuidado y date cuenta cuando hablo de que las cosas deben estar en el mismo banco del que repunteas. Si vamos a repuntear el texto del offset $12AE8 el espacio en blanco debe estar entre $10000 y $13FFF
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: Tema oficial de dudas de la Escuela RH-GBC

Sobre la segunda tarea:

Les pido una disculpa a los que se han quebrado la tarea intenado hacerla al 100%, pero hay algo que omití por desconocimiento: cada texto se maneja con un pointer independiente, es decir "pokedex" tiene uno, "pokemon" otro y asi sucesivamente. Asi que para completar la tarea hay que buscarlos todos. Una vez encontrado el primero los otros estarán solo unos bytes adelante.

Espero que con esta información puedan completar la tarea y mis felicitaciones a quienes ya lo hicieron, superaron al distraido del maestro XD


@_MIGUEL_
@Arct!cMankey
@WiZaRD
@ALISSA WHITE R7
@zismoxd
@Blitz (Reisen)
@Whackero
@Blaze1712
 

ZismoXD!

Novato
Respuesta: Tema oficial de dudas de la Escuela RH-GBC

se me ocurrio una duda,

Esposible hacer codigos para palabras, es decir, que asi como escribo 54 sale poké al escribir uno que yo eliga salga una palabra que yo quiero.
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: Tema oficial de dudas de la Escuela RH-GBC

se me ocurrio una duda,

Esposible hacer codigos para palabras, es decir, que asi como escribo 54 sale poké al escribir uno que yo eliga salga una palabra que yo quiero.
Bastante interesante tu pregunta, nunca lo habia pensado...

De poder claro que se puede, te explico un poco el "como?".

Nunca he estudiado a fondo la interpretacion de la fuente, aunque si me gustaria hacerlo por que algun dia quiero lograr una fuente mas pequeña... en fin, lo que hacen estos codigos es redireccionar la palabra a un espacio en la RAM donde ya existe un nombre. Si nosotros queremos hacer eso se que hay un espacio dedicado al nombre de nuestra madre, asi que ahi podriamos poner la palabra que nosostros queramos y asignarla a "X" byte.

Ojo: El espacio libre en la ram es muy limitado y sinceramente le podemos dar mejores usos que el de contener una palabra dinamica como lo son los nombres.
 

ZismoXD!

Novato
Respuesta: Tema oficial de dudas de la Escuela RH-GBC

Bastante interesante tu pregunta, nunca lo habia pensado...

De poder claro que se puede, te explico un poco el "como?".

Nunca he estudiado a fondo la interpretacion de la fuente, aunque si me gustaria hacerlo por que algun dia quiero lograr una fuente mas pequeña... en fin, lo que hacen estos codigos es redireccionar la palabra a un espacio en la RAM donde ya existe un nombre. Si nosotros queremos hacer eso se que hay un espacio dedicado al nombre de nuestra madre, asi que ahi podriamos poner la palabra que nosostros queramos y asignarla a "X" byte.

Ojo: El espacio libre en la ram es muy limitado y sinceramente le podemos dar mejores usos que el de contener una palabra dinamica como lo son los nombres.

MM entiendo, muchas gracias
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: Segunda Escuela RH-GBC [Clase 04 - 15/03/15]



Actualizacion 15/03/15


Se ha publicado las clase No. 04 de la escuela.

Cualquier duda sera respondida únicamente en el "tema oficial de dudas", por favor eviten preguntarme via MP o perfil. Recuerden que la duda de uno puede ser la de varios.

Tienen una semana después de esta publicación para entregar la tarea. Solo se recibirán tareas por correo electrónico y siguiendo este esquema, así que por favor léanlo atentamente.


Saludos!!

@Kode/Steven
@SoloSymbiote
@_MIGUEL_
@Arct!cMankey
@WiZaRD
@ALISSA WHITE R7
@ZismoXD!
@Blitz (Reisen)
@Whackero
@Blaze1712
@Pum
 

Pum

GBCero
Respuesta: Tema oficial de dudas de la Escuela RH-GBC

Voy a aprovechar y estrenar dudas del tema 4 preguntándole a @Chamber cómo hace el juego para seleccionar entre los diferentes sprites de Unown cuando te encuentras con uno y dónde está guardado cada sprite en el ROM en comparación con los otros sprites.



La pregunta la hago principalmente por si quisiéramos agregar un pokemon que funcionara como Unown, pero siendo otro pokemon completamente distinto, substituyendo cada sprite de Unown. O por si quisiéramos agregar más formas de Unown.
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: Tema oficial de dudas de la Escuela RH-GBC

Esa es una buena pregunta.

Como funciona?

Cuando el juego ejecuta la rutina "GetFrontpicPointer" hace una excepcion si se trata de un Unown, donde lee el tipo de "letra" previamente cargado en base a los IV.

No tengo la documentacion exacta en este momento, solo se que esta es la rutina donde comienza todo:

Código:
GetFrontpicPointer: ; $510D0
GLOBAL PicPointers, UnownPicPointers

	ld a, [CurPartySpecies]
	cp UNOWN
	jr z, .unown
	ld a, [CurPartySpecies]
	ld d, BANK(PicPointers)
	jr .ok

.unown
	ld a, [UnownLetter]
	ld d, BANK(UnownPicPointers)

.ok
	ld hl, PicPointers ; UnownPicPointers
	dec a
	ld bc, 6
	call AddNTimes
	ld a, d
	call GetFarByte
	call FixPicBank
	push af
	inc hl
	ld a, d
	call GetFarHalfword
	pop bc
	ret
Seria bueno documentar algo asi y tenerlo por si despues se necesita.

Partiendo de esto se pueden crear rutinas para crear formas alternas, como las de deoxys, o distincion de genero, etc...
 
  • Me gusta
Reacciones : Pum

Chamber

Miembro insignia
Miembro insignia
Respuesta: Tema oficial de dudas de la Escuela RH-GBC

Blitz (Reisen) dijo:
Estoy teniendo problemas a la hora de editar la descripción de la Pokédex:
En primer lugar, la categoría de Cyndaquil (Fire mouse) es más larga que la de Fennekin (Fox) y no sé qué hacer con ese espacio que me sobra. Para evitar este problema (porque me había olvidado de preguntar cómo se soluciona), traté de repuntear, sin embargo no sé si las entradas de la Pokédex funcionan de forma especial.
Si te sobra espacio no necesitas repuntear, eso es para cuando te hace falta.

Los pointer a entradas del pokedex funcionan primero leyendo la categoria a la que pertenece, luego hay 4 bytes de peso y altura y despues la descripcion.

Aqui esta explicadio.

http://whackahack.com/foro/294034-post26.html

Edit: La clasificacion, la altura, el peso y la descripcion, todo es un solo pointer, solo deben respetar el formato: Clasificacion + 0x50 + 4bytes de peso y altura + descripcion del pokedex + 0x50
 

Blitz (Reisen)

El otro Blitz
Respuesta: Tema oficial de dudas de la Escuela RH-GBC

Esta es la entrada de Cyndaquil, el primer problema que se me presenta es que con "FIRE MOUSE" me sobran unos cuantos espacios, ¿con poner un "&" bastaría para que omita los espacios en blanco que quedarían? Porque lo intenté y la descripción no apareció en pantalla.
Si no es así como dije, ¿entonces tengo que correr todas las cosas para que ocupen los espacios sobrantes?
El segundo problema que tengo es que la descripciones de Fennekin son más largas que las de Cyndaquil, ¿de cuánto es el límite de caracteres para que el texto no se me salga de la pantalla?
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: Tema oficial de dudas de la Escuela RH-GBC

Esta es la entrada de Cyndaquil, el primer problema que se me presenta es que con "FIRE MOUSE" me sobran unos cuantos espacios, ¿con poner un "&" bastaría para que omita los espacios en blanco que quedarían? Porque lo intenté y la descripción no apareció en pantalla.
Si no es así como dije, ¿entonces tengo que correr todas las cosas para que ocupen los espacios sobrantes?
El segundo problema que tengo es que la descripciones de Fennekin son más largas que las de Cyndaquil, ¿de cuánto es el límite de caracteres para que el texto no se me salga de la pantalla?
Si, despues de poner la clasificacion y el 0x50 tienes que recorrer los demas datos y asi vas a ganar unos cuantos bytes para la descripción.

El limite de la text box es 18 caracteres incluyendo espacios. Recuerda que aunque la palabra "POKé" se escriba con un byte cuenta como 4 caracteres.

La descripción no tiene que ser fiel, adaptala al espacio que tengas.
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: Segunda Escuela RH-GBC [Clase 05 - 21/03/15]



Actualizacion 21/03/15


Se ha publicado las clase No. 05 de la escuela.

Cualquier duda sera respondida únicamente en el "tema oficial de dudas", por favor eviten preguntarme via MP o perfil. Recuerden que la duda de uno puede ser la de varios.

Tienen una semana después de esta publicación para entregar la tarea. Solo se recibirán tareas por correo electrónico y siguiendo este esquema, así que por favor léanlo atentamente.


Saludos!!

@Kode/Steven
@SoloSymbiote
@_MIGUEL_
@Arct!cMankey
@WiZaRD
@ALISSA WHITE R7
@ZismoXD!
@Blitz (Reisen)
@Whackero
@Blaze1712
@Pum
 

Blitz (Reisen)

El otro Blitz
Respuesta: Tema oficial de dudas de la Escuela RH-GBC

Me siento incómodo teniendo que volver a preguntar, pero si no voy a poder avanzar si no lo hago. Hay dos partes que no entiendo:
1)No encuentro las estructuras de 7-bytes en la dirección que nos das para la tabla de objetos.
2)No me quedó claro la parte de la tabla de efectos ASM, ¿a qué cosa le tenemos que cambiar el pointer?¿A los 7-bytes del objeto en cuestión?

Pido perdón si son preguntas tontas, es que no me termina de quedar claro.
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: Tema oficial de dudas de la Escuela RH-GBC

Ninguna pregunta es tonta, al contrario me siento raro que poco a poco preguntan menos.

Aplicaremos la formula para encontrar las caracteristicas de la pocion (0x12):

12 * 7 + 6899 = 6917

Vamos a 6917 y vemos que los siguientes bytes son 2C 01 00 14 40 01 55

Segun la documentacion de la escuela esto se traduce asi:

2C 01 = 012C convertido a decimal = 300 (precio)
00 14 = 00 no hace nada y tiene 20 como variable matematica.
40 = Give/Toss (opciones)
01 = se guarda en el primer bolso de la mochila (items)
55 = Aparece el Menu de la Pokemon Party + Aliviar cambio de Status

Si quedo entendido como decifre cada byte segun la documentacion de la escuela o lo explico de otra forma?

Pasando a lo de la tabla ASM, eso es independiente de la informacion de la estructura. Si igual aplicas la formula que viene en la clase para encontrar el puntero ASM:

(12 * 2 ) + E7BE = E7E2

En E7E2 encuentras que el pointer es DC71. Esto quiere decir que si tu cambias estos dos bytes por los de 636E que son los de las piedras evolutivas cada vez que intentes usar una pocion el juego pensara que quieres evolucionar a un pokemon. Muy pocas veces eh tenido que cambiar una rutina ASM en un objeto, salvo la vez que reemplace la Flash por una linterna, asi que ahora que lo reviso veo que la informacion de Koolboyman es algo confusa. De cualquier manera tampoco tienen que hacer cambios ahi ahorita, solo quiero que entiendas que esa tabla determina en realidad que hace cada objeto cuando le das "use".

Si algo no se entendio puedes decirme, para eso es este tema y para eso elegi ser maestro, para pasarles a ustedes mi conocimiento.
 

Pum

GBCero
Respuesta: Tema oficial de dudas de la Escuela RH-GBC

Esta vez mi pregunta del Tema 5 será la siguiente:

Dado que en la tabla de punteros situada en 0xE7C0 solo abarca punteros hasta 0xB4, Es posiblie editar la rutinas ASM de la Teru-Sama 0xBE? Esta teru-sama causará una llamada a un puntero inválido si se fuerza su uso. Lo mismo para el objeto 0x00, en GS se llama '?' pero tampoco tiene puntero en la tabla de E7C0 y en Cristal (no sé en GS) crashea el juego.

Además de esto, como se haría para editar las Teru-samas que residen en las HM's no usadas (8-12) (0xFA - 0xFE)

Por último, como se editarían los items 0xDC y 0xC3? No son técnicamente Teru-Samas ya que sus nombres son duplicados de las TMs de Rollout y Dig.
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: Tema oficial de dudas de la Escuela RH-GBC

1.- Si es posible ampliar la tabla de punteros a rutinas ASM, como? repunteandola. Con esto lograremos abarcar mas objetos, incluso si no son teru samas. Hizo falta mencionar a manera de conclusión que no solo las teru samas son objetos "inservibles", hay una seria de objetos que viene equipados en los pokemon si vienen transferidos de la generación I que solo sirven para ser vendidos, por lo cual son carne de cañón para hackers.

Al final no recomiendo ampliar la tabla de pointers, es difícil que un hack tenga TANTOS objetos con rutinas especificas, lo mas practico es que al usar objetos después de 0xB4 sean solo objetos que activen scripts o eventos como las escamas de corazón.

2.- Si le das un uso al objeto 0xBE obvio causara un error. Yo sin notarlo use ese objeto en el Naturia para crear la piedra que amplia los climas y como no se usa fuera de estar equipada nunca tuve fallos. De nuevo el mismo consejo, objetos después de 0xB4 es mejor darles un uso de "solo equipado" o "ningún uso".

3.- Aunque puedas acceder al objeto 0x00 recuerda que tanto ese dígito como 0xFF se usan para terminaciones de tablas, así que solo deberias usarlo para experimentar y no de manera oficial.

4- Nunca he usado un Teru en la lista de TMHM pero supongo que el juego la bloqueara. Hay 2 candados que impiden que esos objetos funcionen; uno bloquea su visualización y otro su activación. Con esto queda demostrado que no por que sea una Teru-Sama la podemos usar (Todo esto que me estas haciendo reflexionar debería venir en el PDF, gracias).

5.- Las terus 0xDC y 0xC3 no se pueden usar, todo lo que esta después de 0xBE el juego lo interpreta como una TM/HM asi que no funcionaria. Esto no quiere decir que podamos tener mas TM en el juego, el bolso esta programado para cierto numero de objetos y seria complicado ampliarlo.

Espero que estas respuestas ayuden a la comprensión del rom y sus limitaciones, sin embargo no mal entiendan el termiano "limitacion", tecnicamente TODO se puede hacer en el mundo del Hacking pero la verdadera pregunta aqui es: vale la pena el esfuerzo por la recompensa (prometida)?
 
  • Me gusta
Reacciones : Pum
Estado
Cerrado para nuevas respuestas.
Arriba