Registrarse

GBC | Recopilación de Offsets útiles

Chamber

Miembro insignia
Miembro insignia
Este tema es una adaptación/traducción del tema con el mismo nombre en el foro de Skeetendo, al igual que los créditos correspondientes de cada información. Muchos de los términos se mantendrán en ingles para evitar crear confusiones con otros tutoriales.

La intención del tema es compartir aquellos offsets de relevancia en los juegos de segunda generación.

El tema se compondrá de dos partes. La primera será la adaptación/traducción y la segunda serán los aportes hechos por hackers de habla hispana.





Datos de vuelo
0x15319
El formato es [Map Bank] [Map Number] [X Position] [Y Position]

Animaciones de Tileset
Has querido cambiar la animación de algún Tile? O cambiar la animación de corte en los arboles (CUT) o la animación de Headbutt para que coincida con tus nuevos gráficos? Puedes hacerlo usando TLP (Tile Layer Pro) siguiendo estos offsets y editando todo lo que quieras. La animación de la flor parece que se compone de 4 cuadros, pero en realidad solo se usan 2, los que están a todo color.

0x8CB0B - Headbut animation
0x8CC04 - Cut animation
0xFC348 - Water Animation
0xFC3A7 - Flower Animation
0xFC420 - Lava Animation
0xFC57D - Sprout Tower Pillar Animation
0xFC8AD - Whirlpool Animation?
0xFC57D - Sprout Tower Pillar Animation
0xFC8AD - Whirlpool Animation?

Cambiando TM’s
0x11A66-11A97 TM que puedes enseñar.
0x11A98-11AA3 HM que puedes enseñar. (Hay un espacio libre!!!)
Básicamente es una lista de las TM y el ataque que enseñan cada una.

Cambianado los Sprites del Menu de Pokemon
0x8E976 - Gold
0x8E95B - Silver

Es una lista en el orden del Pokedex, del Sprite que es utilizado por cada Pokemon en el menú de “equipo”. Los valores son los siguientes:

01-Poliwag
02-Jigglypuff
03-Diglett
04-Pikachu
05-Staryu-
06-Magikarp
07-Bird
08-Rhydon
09-Clefairy
0A-Oddish
0B-Scyther
0C-Gengar
0D-Lapras
0E-MrMime
0F-Eevee
10-Miltank
11-Shellder
12-Grimer
13-Ekans
14-Voltorb
15-Squirtle
16-Bulbasaur
17-Charmander
18-Weedle
19-Unown
1A-Geodude
1B-Machoke
1C-Egg
1D-Tentacool
1E-Butterfree
1F-Zubat
20-Snorlax
21-Ho-oh
22-Lugia
23-Gyrados
24-Slowpoke
25-Sudowoodo
26-Charizard

Cambiando el Monologo de introduccion.
0x624e – Cambia a 00 para desactivar el video de introducción (Lapras, Charizard lanzando Fire, etc.)
0x62bf – Cambia a 00 para desactivar el movimiento de las nubes en la pantalla del título.
0x5faa - Cambia a 00 para desactivar el monologo de “poner el reloj a tiempo”
0x906ae – Hora inicial (Si desactivas el monologo del reloj, la hora inicial del juego será la que especifiques aquí)
0x5FC2 - Sprite de Prof. Oak (1ra. vez)
0x6017 - Sprite de Prof. Oak (2da. vez)
0x5FDE – Sprite Pokemon.
0x6061 - Pokemon Cry.
0x6037 – Sprite del Protagonista.
0x60C0 - Sprite del Protagonista 2da. Vez (Solo si escribes tu nombre)
0x15319 – Donde inicia el juego. Formato: [Map Bank][Map][X][Y]
0x5cea – Dinero con el que inicias.

Spritesheets
0x1468C-146BF - Pointer table to Spritesets
0x146C0-146CA - Spriteset (Pallet Town)
0x146CB-146D5 - Spriteset (Viridian City)
0x146D6-146E0 - Spriteset (Pewter City)
0x146E1-146EB - Spriteset (Cinnabar Island)
0x146EC-146F7 - Spriteset (Cerulean)
0x146F8-14701 - Spriteset (Saffron)
0x14702-1470C - Spriteset (Celadon)
0x1470D-14717 - Spriteset (Lavender)
0x14718-14722 - Spriteset (Vermilion)
0x14723-1472D - Spriteset (Fuchsia)
0x1472E-14738 - Spriteset (League)
0x14739-14745 - Spriteset (New Bark Town)
0x14746-1474E - Spriteset (Cherrygrove City)
0x1474F-14759 - Spriteset (Mt. Silver)
0x1475A-14764 - Spriteset (Violet)
0x14765-1476F - Spriteset (Ecruteak)
0x14770-1477A - Spriteset (Azalea)
0x1477B-14785 - Spriteset (Goldenrod)
0x14786-14790 - Spriteset (Cianwood City)
0x14791-1499B - Spriteset (Olivine)
0x1479C-147A6 - Spriteset (Lake of Rage)
0x147A7-147B1 - Spriteset (Mahogany)
0x147B2-147BC - Spriteset (Blackthorn)
0x147BD-147C7 - Spriteset (Caves)
0x147C8-147D2 - Spriteset (S.S. Aqua + Etc.)
0x147D3-147DD - Spriteset (Special)

Es una lista de Sprite (overworld) que estarán disponibles en los mapas. Si se utiliza un Sprite que no está en la lista, se mostrará el Sprite del protagonista. Para agregar un Sprite a estas listas, tienes que reemplazar otro Sprite. Además, los spritesheets sólo se vuelven a cargar cuando entras en un mapa a través de un Warp (una puerta, un túnel, etc.), y no a través de una conexión de mapa. Esta es una de las razones de que haya casetas entre pueblos y rutas. Puede que se tenga que colocar un Sprite en más de un spritesheet para conseguir que se muestre correctamente en el juego. Por ejemplo, si pones un Sprite en Cherrygrove también debes hacerlo en New Bark Town, ya que no hay casetas entre los dos poblados.

Overworld Sprites
0x141A9 – Sprite por defecto del protagonista
0x147DE-14A17 – Datos de los overworld Sprites, el formato es de 6-bytes:

[Pointer de los Graficos (2-byte)]
[Tamaño?]
[Bank]
[Frames?]
[Paleta por Defecto]

Tamaño = 0C sprite que caminan, 40 sprite estáticos
Frames = 01 sprite que caminan, 03 sprite estáticos

Editando la Fuente.
0xF8001 - 2byte pointer a los Gráficos de la fuente.
0xF8008 - Byte que indica en que banco esta.
0xF800A - 8D 1bpp 72 - 2Bpp

Te has preguntado cómo Koolboyman hizo que la fuente del Prism tenga una sombra detrás?
Simplemente repuntea la fuente a un espacio en blanco a un tramo de espacio en blanco y la dibujas en el TLP. Tambien tendrás que cambiar a 2bpp para que el juego lo cargue como un gráfico de 4 colores, en lugar de un gráfico de 2 colores como lo hace normalmente.

0xF8046 - 0x30 para 1bpp, 0x60 para 2bpp
0xF8049 - 2byte Pointer a los estilos de bordes
0xF8055 - Byte que indica en que banco esta
0xF8057 - 0x8D for 1bpp, 0x72 for 2Bpp

Estos dos datos son independientes, puedes tener una fuente de 4 colores con bordes de 2 colores y viceversa.

Tabla de Trigger
0x94000 - Inicio de Tabla.
Formato: [Map Bank] [[Map No.] [2 Byte Pointer hacia la Ram]

Si alguna vez has añadido un evento de disparo (trigger) al juego y no ha funcionado, esta tabla es la razón. Cada vez que añadas un trigger a un mapa, dicho mapa debe ser incluido en esta lista. Lo mas sencillo es reemplazar uno de los mapas en los cuales no quieres tener triggers, como por ejemplo en la Ruta 29, si no quieres tener el tutorial de “atrapar Pokemon” puedes sobrescribir esta información y agregar otro mapa.

Entrenadores!
0x518A6 – Cuantos grupos de Entrenadores hay.
0x80000 – Tabla de Pointer a las iamgenes de entrenadores.
0x3993E – Tabla de Pointer a los datos de entrenados. Se usan 2-byte pointer para cada entrenador y en orden, empezando con Falkner.
0xE9027 - Tabla con la cancion que se escucha cada vez que un Entrenador te “mira”.
0x27283 - Tabla que determina los DVs de cada grupo de entrenador. 2-bytes por cada grupo de entrenador.
0x 1B0955 Nombres de los grupos de Entrenadores.

Con esto, puedes hacer muchas cosas. Puedes repuntear el grupo de entrenador de los líderes de gimnasio, para tener multiples peleas con ellos a manera de revancha o cambiarles el nombre o darles más Pokémon. También es útil para añadir más entrenadores de un cierto tipo o activar batallas para el Profesor Oak, que cuenta con sus propios datos de entrenador pero la información de batalla es la misma que la de Elite Four Will.

0x39562 – Tabla que determina cuánto dinero te da cada grupo de entrenador.

Para calcular el dinero de cada batalla, se multiplica el valor encontrado en esta tabla por (8 * [pokemon más nivelado del enemigo]).

Básicamente, puedes encontrar el byte del dinero que te da cada entrenador con la siguiente formula:
0x39564 + ([Trainer Group] - 1) * 7
(Credit to Miksy91)

Capturando Pokemon
0x23994- 2-Byte Pointer para el nombre que usa el tutorial de "como capturar Pokemon"

Para cambiar el nombre de "Dude" del tipo que te enseña a capturar pokemon solo tienes que repuntear a un espacio en blanco en el mismo banco y escribir el nombre que desees, seguido de x50. Tan simple como eso.

Minusculas!
0x1150= Determina los caracteres usados en el codigo "POKé" de la tabla de texto.

Si te molesta que la palabra pokemon salga en mayúsculas por el carácter "POKé", puedes cambiarlo a “Poké” para que aparezca en minúsculas.
0xEA = Byte usado en el texto para el caracter "é"
Util si quieres escibir cosas con acento en la “e”.

Nuevo Pokedex
0x40D60 – Orden del Nuevo Pokedex

Esta lista determina el orden de los pokemon para "New Pokedex". Útil para aquellos tienen nuevos pokemon en su hack.

Sprite de espaldas
0x3F9CB - Sprites de espalda del protagonista
48 x 48 pixels
0x3FB5B - Sprites de espalda del “Dude”
48 x 48 pixels

Estos sprites se pueden insertar con Agixp poniendo el offset manualmente.

Matando Cosas
No descripción en el menu de inicio.
0x12C75-12C7B
0x12C7F-12C92

Cambia todo a 00 para desactivar la descripción en el menu de inicio, como en las versiones clásicas de pokemon (Red&Blue)

“Matar” la cama y el mapa del cuarto de Hiro (Tauwasser)
0x181BE7 – Cambia a 01 para prevenir que se carguen la cama y el mapa. Después cambia el mapa del cuarto de jugador para que no tenga escaleras y mágicamente la cama aparece donde debería estar, pero tiene el inconveniente de no permitir que lo cambies con el PC.

Editando Ataques
0x41AFE = Inicio de datos.
Formato:
[Attack Animation] [Effect] [Base Power] [Type] [Accuracy] [PP] [00]
0x347F3 – Ataques con alta probabilidad de golpe critico. La lista termina con 0xFF.

Repunteando Cosas
Ho-oh on Title Screen
0x62D7 Pointer a gráficos de Ho-oh.
0x62DD Banco a gráficos de Ho-oh.
0xE4260 Datos originales de los gráficos de Ho-oh.

Los gráficos están organizados de forma extraña debido a la forma en que agita sus alas, ya que el cuerpo y la cara permanecen en el mismo lugar. Se puede exportar la imagen original usando AGIXP. Sólo deselecciona la casilla de “Trainer Pic-Extracting” e introduce el offset manualmente; Deja la primera casilla de tamaño (X/Y) en blanco y pon 48 en la segunda.

Nombre de los “TIPOS”
0x509AE = Pointer a tabla de nombres de tipos.

Los tipos que están sin utilizar apuntan al tipo “NORMAL”. Puedes cambiar el pointer a otro espacio del banco y renombrar los tipos sin utilizar para crear tus propios tipos, como el Fairy.

Datos de movimientos y evolución de los Pokemon.
0x427BD-429B2 Pointers a los datos de movimientos y evolución de los Pokemon.

Aquí puedes cambiar los ataques que un Pokemon aprende por nivel y sus evoluciones. El orden de los pointers va de acuerdo al Pokedex.

Tabla de intercambios
0xFCB9C- Pointer (2-Byte) a la tabla de intercambios.

¿Quieres añadir en algunos nuevos intercambios en lugar de sólo la sobrescribir de viejos? Simplemente repuntea la tabla, copia el contenido de la anterior y empieza a añadir nuevos datos a la tabla.

Items Beta
Pokeflute -

Si usas un editor de items y cambias el item x38 para que tenga la opción de “use”, te llevaras la sorpresa de que se trata de la Pokeflute. El problema es que no reproduce la cambion y tienes que cambiar su nombre de Teru-Sama a “Pokeflute”, pero funciona.

Pokémon stats (IIMarckus)
0x51B0B (Pokemon Gold) 32 bytes por Pokémon. Bytes del 25–32 representan las TMs/HMs, solo que se leen por bits y no por bytes.

Graficos (Blazichu)
0x253FF Trainer Card.
0x2547F Graficos de Trainer Card
0x C0000 Graficos Overworld Sprites.
0x E4000 Texto de “Nintendo y Gamefreak” al inicio del juego.
0x10F31 Graficos de la mochila.
0x86D26 Graficos cuando terminas el juego.
0x50580 Sprite pescando.
0x8EABE Sprites de los Pokemon en el Menu.
0xE4B80 Logo de Gamefreak al inicio del juego. (1-bpp)

Concurso Caza Bichos- Parque Nacional
0x97d87 Pokemon Crystal
0x97bb8 Pokemon Gold / Silver
Structura: [Chance (%)] [Pokemon] [Level min.] [Level max.]

Items
$68A0 Tabla de items
Formato: [Precio] [Precio] [Efecto cuando se porta/matiene] [Variable] [Opciones cuando se selecciona] [Bolso Mochila] [Puedo usarlo?]

Opciones cuando se selecciona
- 00 = Give/Toss/Select
- 10 = Use/Give/Toss/Select
- 40 = Give/Toss
- 80 = Select
- C0 = Use
Bolso Mochila
- 1 = Items
- 2 = Key items
- 3 = Balls
- 4 = TM/HM
Puedo usarlo?
- 00 = Can't use/No se puede usar
- 06 = Pokeball
- 40 = Aparece texto en el Menu del Item
- 50 = Aparece el Menu de la Pokemon Party
- 55 = Aparece el Menu de la Pokemon Party + Aliviar cambio de Status
- 60 = Tiene efecto especial al entrenador fuera de batalla (Bike/Escape Rope)

Mini Sprite Pokemon
0x8EA70- Tabla de Mini sprite del menu pokemon.
0x8EABE Gráficos de los mini sprites.

Esta tabla manda en las animaciones de los minis de los pokemon. Se pueden agregar 3 minisprite más; al inicio de la tabla se repite el valor de Poliwag y al final hay dos espacios libres para agregar, además el banco cuenta con el espacio exacto para agregar los gráficos de los minis

Emoticons
$143A8 –Pointer a tabla de Emoticons.
$143C1 –Inicio de la tabla de Emoticons.
Formato: [Pointer-2byte] [Length] [Bank] [Duracion??] [Terminacion??]
0x14409 Gráficos de los Emoticons.
Puedes repuntear la tabla y almacenar los graficos en otro banco diferente para tener más variedad de emoticons. La lista según su valor hex:
00 = Signo de Exclamación
01 = Signo de Interrogación
02 = Feliz
03 = Triste?
04 = Corazon
05 = Rayo
06 = Durmiendo
07 = Pescado

Arboles “Headbutt”
0xBA3E6 Tabla.
Formato:
[Map Bank] [Map No] [List number]

0xBA470
[List number (2-byte pointers)]
2nd pointer = 01
3rd pointer = 02
4th pointer = 03

List 01:
Venonat LV21
Venomoth LV24
Pineco LV23
Exeggcute LV22
Exeggcute LV24


List 02:
Hoothoot LV20
Noctowl LV26
Heracross LV24
Aipom LV24
Aipom LV25

List 03:
Ledian LV29
Ariados LV31
=================================================
Offsets para Tile Layer Pro (Por G0LD Z!)

415f5 - Animacion Slowpoke en modo busqueda del pokedex
8e9f4 - Sprites de pokemon en el menu (Solo Silver)
1C03C - Tiles de techos de las casas (son 5 pero creo que se puede repuntear para agregar mas)
113F1 - Tiles de ilustraciones de la mochila
F80F4 - Tiles del worldmap
====================================================

Offsets para Pokemon Cristal (Por @Crystal_ )




Map headers: 0x94034
Ejemplo:
Código:
OlivinePokeCenter1F_MapHeader: ; 0x94034
	; bank, tileset, permission
	db BANK(OlivinePokeCenter1F_SecondMapHeader), $7, 3

	; second map header
	dw OlivinePokeCenter1F_SecondMapHeader

	; location on world map, music, time of day, fishing group
	db $1b, MUSIC_POKEMON_CENTER, 1, 1
; 0x9403d
En total 9 bytes por mapa. Los mapas estan ordenados por sus ID.



Secondary map headers: 0x94dd8
No tienen longitud fija



Tablas de Pokemon que aparecen pescando: 0x924e3
Ejemplo:

Código:
FishGroup1:
FishGroup1_Old: ; 924e3
	db $b3, MAGIKARP,   10
	db $d9, MAGIKARP,   10
	db $ff, KRABBY,     10
FishGroup1_Good: ; 924ec
	db $59, MAGIKARP,   20
	db $b2, KRABBY,     20
	db $e6, KRABBY,     20
	db $ff, $0,         0
FishGroup1_Super: ; 924f8
	db $66, KRABBY,     40
	db $b2, $0,         1
	db $e6, KRABBY,     40
	db $ff, KINGLER,    40
Hay 12 tablas, una detras de otra. Cada mapa utilizará una de ellas según lo que su map_header indique. Un '$0' en lugar del nombre de un Pokemon indica que es Pokemon que aparecera ahí se trae de mas adelante:

Código:
TimeFishGroups: ; 9266f
; 0
	db CORSOLA,    20 ; nite
	db STARYU,     20 ; day
; 1
	db CORSOLA,    40 ; nite
	db STARYU,     40 ; day
; 2
	db SHELLDER,   20 ; nite
	db SHELLDER,   20 ; day
; 3
	db SHELLDER,   40 ; nite
	db SHELLDER,   40 ; day
(...)



Pokemon que aparecen dormidos al caer de un arbol de headbutt:
0x3eb5d
[dormidos_noche][0xff][dormidos_dia][0xff][dormidos_mañana][0xff]




Pokemon que aparecen en el bug catching contest: 0x97d87
La estructura es, para cada pokemon:
[% aparicion sobre 100][Pokemon][level min][level max]



Rutina que determina que DVs tiene que tener un pokemon para ser shiny:
Crystal: 0x8a68
En este caso puedo añadir que para G/S: 0x9052




Tabla que indica a que horas sera mañana/dia/noche: 0x14044. Sin embargo, cambios en esa tabla no se actualizan en el pokegear, tan solo tienen efecto en la paleta utilizada en el overworld y en los eventos que puedan depender de que tiempo del dia es.



Experiencia recibida: La formula que determina los exp points obtenidos en funcion del base exp del pokemon debilitado es Base Exp * level / 7 (y por 1.5 si es trainer o si el pokemon es de diferente ID que el trainer. Sabiendo esto, el '7' de esa formula se encuentra en el offset 0x3eec1. Puede ser util si alguien esta buscado ralentizar o acelerar el crecimiento de los pokemon de una forma mas rapida que modificar cada base exp de cada uno de los 251 pokemon.



Probabiliad de que un pokemon salvaje aparezca con un held item de acuerdo a lo indicado en su base stats data structure, es decir, siempre y cuando la especie de pokemon tenga algun item indicado como held item.

0x3e933: Probabilidad de que un pokemon salvaje no tenga held item. Es 0xC0, que corresponde a 75% (25% de aparecer con item)
0x3e93c: Probabilidad de que aparezca el segundo held item, sabiendo que el pokemon [si] lleva held item. Es 0x14 que corresponde a 8% de 25%, es decir a 2% en total.
 
Última edición:

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: [GBC]Offset Utiles

Por dios, porque no vi este aporte, es super util para los que hackeamos GBC, son direcciones importantisimas, edito despues con offsets que he encontrado

PD: Tema agregado a importante :p
 
Respuesta: [GBC]Recopilacion de Offset Utiles

buenas tardes , yo sinceramente no entiendo mucho lo que son estos datos ya que recién me estoy familiarizando con el hexadecimal , pero como dice GOLD es un gran aporte para los que aman el hack GBC como nosotros , espero aprender aun mas de ustedes , por favor no dejen de postear tutoriales... y muchas gracias por los aportes
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC]Recopilacion de Offset Utiles

buenas tardes , yo sinceramente no entiendo mucho lo que son estos datos ya que recién me estoy familiarizando con el hexadecimal , pero como dice GOLD es un gran aporte para los que aman el hack GBC como nosotros , espero aprender aun mas de ustedes , por favor no dejen de postear tutoriales... y muchas gracias por los aportes
No es tan dificil entender Wizard, te dare una explicacion breve de los datos mas comunes que encuentras.

Cuando se habla de Tabla, significa un conjunto de datos con cierta estructura, como en el caso de la tabla de ataques que tu estas ya familiarizado.

Al hablar de pointer de la tabla, quiere decir que es el puntero que indica donde inicia la tabla, asi, con este dato, tu puedes mover la tabla de lugar para agregar mas datos y despues solo cambias el pointer indicando la nueva localizacion de la tabla. Es es el Repunteo.

Por ultimo estan los datos, esos que hay que cambiar para hacer las modificaciones al juego. Siempre obedecen una esturtura y dicha estructura esta explicada en cada seccion.

Si tienes alguna duda en particular, solo dilo. Saludos!
 

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: [GBC]Recopilacion de Offset Utiles

Agrego estas tres offsets para el tile layer pro

1C03C - Tiles de techos de las casas (son 5 pero creo que se puede repuntear para agregar mas)
113F1 - Tiles de ilustraciones de la mochila
F80F4 - Tiles del worldmap
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC]Recopilacion de Offset Utiles

Este es cortesia del buen GOLD Z!

0x1C0E45 - Graficos del Pokegear
 

Crystal_

Héroe de WaH
Respuesta: [GBC]Recopilacion de Offset Utiles

Voy a dejar unos cuantos de Pokemon Crystal, si alguien los quisiera para G/S no tendria mas que coger algunos bytes de los datos a partir (o alrededor) del offset indicado en una ROM de Crystal, y buscar esos datos en en una ROM de Gold / Silver.



Map headers: 0x94034
Ejemplo:
Código:
OlivinePokeCenter1F_MapHeader: ; 0x94034
	; bank, tileset, permission
	db BANK(OlivinePokeCenter1F_SecondMapHeader), $7, 3

	; second map header
	dw OlivinePokeCenter1F_SecondMapHeader

	; location on world map, music, time of day, fishing group
	db $1b, MUSIC_POKEMON_CENTER, 1, 1
; 0x9403d
En total 9 bytes por mapa. Los mapas estan ordenados por sus ID.



Secondary map headers: 0x94dd8
No tienen longitud fija



Tablas de Pokemon que aparecen pescando: 0x924e3
Ejemplo:

Código:
FishGroup1:
FishGroup1_Old: ; 924e3
	db $b3, MAGIKARP,   10
	db $d9, MAGIKARP,   10
	db $ff, KRABBY,     10
FishGroup1_Good: ; 924ec
	db $59, MAGIKARP,   20
	db $b2, KRABBY,     20
	db $e6, KRABBY,     20
	db $ff, $0,         0
FishGroup1_Super: ; 924f8
	db $66, KRABBY,     40
	db $b2, $0,         1
	db $e6, KRABBY,     40
	db $ff, KINGLER,    40
Hay 12 tablas, una detras de otra. Cada mapa utilizará una de ellas según lo que su map_header indique. Un '$0' en lugar del nombre de un Pokemon indica que es Pokemon que aparecera ahí se trae de mas adelante:

Código:
TimeFishGroups: ; 9266f
; 0
	db CORSOLA,    20 ; nite
	db STARYU,     20 ; day
; 1
	db CORSOLA,    40 ; nite
	db STARYU,     40 ; day
; 2
	db SHELLDER,   20 ; nite
	db SHELLDER,   20 ; day
; 3
	db SHELLDER,   40 ; nite
	db SHELLDER,   40 ; day
(...)



Pokemon que aparecen dormidos al caer de un arbol de headbutt:
0x3eb5d
[dormidos_noche][0xff][dormidos_dia][0xff][dormidos_mañana][0xff]




Pokemon que aparecen en el bug catching contest: 0x97d87
La estructura es, para cada pokemon:
[% aparicion sobre 100][Pokemon][level min][level max]



Rutina que determina que DVs tiene que tener un pokemon para ser shiny:
Crystal: 0x8a68
En este caso puedo añadir que para G/S: 0x9052




Tabla que indica a que horas sera mañana/dia/noche: 0x14044. Sin embargo, cambios en esa tabla no se actualizan en el pokegear, tan solo tienen efecto en la paleta utilizada en el overworld y en los eventos que puedan depender de que tiempo del dia es.



Experiencia recibida: La formula que determina los exp points obtenidos en funcion del base exp del pokemon debilitado es Base Exp * level / 7 (y por 1.5 si es trainer o si el pokemon es de diferente ID que el trainer. Sabiendo esto, el '7' de esa formula se encuentra en el offset 0x3eec1. Puede ser util si alguien esta buscado ralentizar o acelerar el crecimiento de los pokemon de una forma mas rapida que modificar cada base exp de cada uno de los 251 pokemon.



Probabiliad de que un pokemon salvaje aparezca con un held item de acuerdo a lo indicado en su base stats data structure, es decir, siempre y cuando la especie de pokemon tenga algun item indicado como held item.

0x3e933: Probabilidad de que un pokemon salvaje no tenga held item. Es 0xC0, que corresponde a 75% (25% de aparecer con item)
0x3e93c: Probabilidad de que aparezca el segundo held item, sabiendo que el pokemon [si] lleva held item. Es 0x14 que corresponde a 8% de 25%, es decir a 2% en total.
 

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: [GBC]Recopilacion de Offset Utiles

Agregado al indice los offsets para pokemon cristal, que el vago autor no los agrego, ademas agregados dos offsets por mi, disfrutad!!!
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC]Recopilacion de Offset Utiles

Pointer de la tabla de movimentos.

Esta información es para poder usar los 3 espacios restantes en la tabla de movimientos (FC, FD, FE).

He encontrado 5 rutinas que hacen referencia a la ubicación de los movimientos, aunque solo sé que las primeras dos estan relacionadas con los movimientos que usa nuestro oponente en batalla y con los movimientos de nuestra party. De cualquier forma aconsejo modificar las 5 rutinas para evitar problemas. En cada rutina hay que modificar el pointer y el bank al que es dirigido.

Código:
Pokemon del rival: 
$DA7F = Pointer
$DA8B = Bank

Pokemon propios:
$37f79 = Pointer
$37F82 = Bank

$394D3 = Pointer
$394DF = Bank

$3D4AC = Pointer
$3D4B8 = Bank

$50974 = Pointer
$5097D = Bank
Edito: Ademas de repuntear los datos de la estructura de ataques, al parecer el juego tiene rutinas separadas para los PP. Ahora encontre estas 6 sutinas que comparten "llamadas" con las 5 anteriores. En estas el pointer que se define no es el inicio de los datos de los movimientos, si no el inicio de la Data del PP del primer ataque. Yo por ejemplo repuntie los datos de los movimetentos a $99500, pero al modificar las rutinas del PP el pointer que tomo es $99505 (6 bytes despues).

Aqui las direcciones:

Código:
$664F
$6658

Pokemon Propios:
$F968
$F971

$39813
$3981C

$398BD
$398C6

$3F42D
$3F436

$42554
$4255D
Edit2: Sigo en la investigacion, ahora tuve un fallo donde no cargan los nombres de los pokemon al usar los ataques.

Edit3: Falsa alarma, el fallo de los nombres se debia a un error mio. Hasta el momento no he encontrado bugs repunteando los movimientos.

Edit4:Rutina que carga el poder de los movimientos:
$13646 = Pointer de la tabla (offset + 2)
$1364F = Bank

Edit5: En un momento subo nuevas rutinas.
 
Última edición:

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC]Recopilacion de Offset Utiles

Repunteo de las rutinas del pokedex.

Para el pokemon REƎVOLUTION he tenido que mover el pokedex y sus datos de lugar por que necesitaba ese espacio en blanco para crecer los Learnset de los pokemon. No creo que mucha gente haga uso de esta información pero la dejo de cualquier forma. Gracias a @Crystal_ por la idea.

1.- Se copia del offset $4000 al $41AFD en G/S (ó $41AFA en C).
2.- Se pega la informacion en cualquier otro banco LIMPIO, teniendo cuidado que se pegue desde el INICIO del mismo.
3.- Repuntean en las siguientes dos direcciones con el siguiente formato:

$12D07
$FB9DB


; Formato 3E ZZ 21 XX YY CF

ZZ = Bank
XX YY = 2-Byte pointer.

NOTA: Basta con solo cambiar el No. de Banco, ya que los demás pointers deben ser los mismos y no deberían ser modificados

Edit: Esta información esta incompleta, hacen falta localizar otras rutinas aun.
 
Última edición:

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC]Recopilacion de Offset Utiles

$44091 ; tabla de berrys tree

Esta es la localizacion de la tabla que rige los aboles de berrys. Es mas facil hacer cambios desde aqui a tener que ir Arbol por Arbol.

Código:
HEX	NAME		Location
01	db BERRY 	; Ruta 29
02	db BERRY 	; Ruta 30
03	db BERRY 	; Ruta 38, 
04	db BERRY	; Ruta 46,
05	db PSNCUREBERRY ; Ruta 30
06	db PSNCUREBERRY ; Ruta 33
07	db BITTER_BERRY ; Ruta 31
08	db BITTER_BERRY ; Ruta 43, 
09	db PRZCUREBERRY ; Violet City
0A	db PRZCUREBERRY ; Ruta 46
0B	db MYSTERYBERRY ; Ruta 35
0C	db MYSTERYBERRY ; Ruta 45
0D	db ICE_BERRY	; Ruta 36
0E	db ICE_BERRY	; Ruta 26
0F	db MINT_BERRY	; Ruta 39
10	db BURNT_BERRY	; Ruta 44
11	db RED_APRICORN ; Ruta 37
12	db BLU_APRICORN ; Ruta 37
13	db BLK_APRICORN ; Ruta 37
14	db WHT_APRICORN ; Azalea Town
15	db PNK_APRICORN ; Ruta 42
16	db GRN_APRICORN ; Ruta 42
17	db YLW_APRICORN ; Ruta 42
18	db BERRY	; Ruta 11
19	db PSNCUREBERRY ; Ruta 2
1A	db BITTER_BERRY ; Ruta 1
1B	db PRZCUREBERRY ; Ruta 8
1C	db ICE_BERRY	; Pewter City
1D	db MINT_BERRY	; Pewter City
1E	db BURNT_BERRY	; Fushia City
 

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: [GBC]Recopilacion de Offset Utiles

Aqui dejo las offset de los graficos de animaciones de movimientos.

Código:
 Attacks
84E7A - Explosion
84ED9 - Ice Beam?
84F15 - Rock Moves/Strength
85009 - Poison Attacks
85077 - Grass Graphics (Razor Leaf, Leech Seed)
8515A - Pokeball
85243 - Sound Attacks (Growl/Roar/Sing Belly Drum uses a note)
8530A - Withdraw Shell and Light Beams (Moonlight/Morning Sun/
Barrier)
8537A - Powder attacks
85399 - Beam Attacks/Leer
8542A - Fly/Extreme Speed/Sparkles (metoronome then stuff like
Flash/Confuse Ray)
85477 - Hidden Power/Charge Solar Beam
854E7 - Agility Swagger Rapid Spin
855A9 - Swords Dance/Vine Whip/Razor Wind?
856AB - Destiny Bond/Conversion?
856C5 - Wrap Bind
856EA - Soft Boiled/Egg Bomb Smoke Ball
85767 - Mean Look
857DA - Sand Attack Mud Slap Dig
85835 - Spider Web
858B3 - Poison Gas
8594A - Megahorn Pin Missile Poison Sting?
859A5 - Petal Dance
85A05 - Metronome Spikes Kinesis Milk Drink Lock On
85B9F - Sky Attack
85D0A - Seismic Toss
85DF1 - Conversion/Defense Curl
85E93 - No clue
85FBA - Sketch/Curse Stab/Encore Hands/Heart/Shooting Star
(Protect/Safe Guard)
8609A - Recover sparkles
8617A - Sweet/Lovely Kiss
Gracias a ShadowTails
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC]Recopilacion de Offset Utiles

Información no tan nueva.

Se complementa la información ya existe en el primer post con la siguiente, ambas referente a lo que intercambios internos se refiere.

Hay herramientas que pueden editar esto sin problemas, pero una vez mas, nuestro amigo Hexadecimal a salvarnos. La ventaja de hacer la edicion manual es que podemos modificar los DV de manera que coincidan con los de un Pokemon Shiny, así hacemos los intercambios mas atractivos a los jugadores.



Trade Pokemon

$FCB9C-Pointer a la tabla de datos(2 Byte)

$FCC24 Inicio de la Tabla

Estructura:

[Dialog no.][Give Pokémon][Trade Pokémon][0x0A for PKMNNAME][2xDV][Item][2xID][0x0A for TRAINERNAME][Sex][00]

Dialog no.:

00 = „I collect Pokémon. Do you have a GP? Do you want to trade it for my TP?“
01 = „Hi, I’m looking for a Pokémon. If you have a GP would you trade it for my TP?“
02 = „@CF48 is cute, but I don’t have one. Do you have a GP? Do you want to trade it for my TP?“
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC]Recopilacion de Offset Utiles

Cuantas veces no han deseado por cambiar el color del protagonista en el juego?

Su sprite de batalla es de color Azul pero el mini es rojo?



No sufra mas! Eh aqui la solucion:

$147E3 controla el color del mini al iniciar el juego.
Lista de colores:
00 - Red Clothes
01 - Blue Clothes
02 - Green Clothes
03 - Brown Clothes
04 - Orange Clothes
05 - Grey Clothes
 

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: [GBC]Recopilacion de Offset Utiles

Aqui uno pequeño

0x5a57 Controla la melodia que suena en el menu New Game/Continue, 00 para que suene mudo.

PD: Si alguien tiene la offset donde se cambia la melodia de la intro de Oak (Ruta 30) que me la diga que no la encuento por ninguna parte del Banco x1 T-T
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC]Recopilacion de Offset Utiles

PD: Si alguien tiene la offset donde se cambia la melodia de la intro de Oak (Ruta 30) que me la diga que no la encuento por ninguna parte del Banco x1 T-T
$5FB2 ; musica en la introduccion del Prof. Oak (por defecto 0x2B = Ruta 30)

PD: Recuerda que mis datos son de PKM GOLD, pero los de SILVER siempre estan cerca.
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC]Recopilacion de Offset Utiles

Deseas cambiar los graficos del mapa? he aqui la solucion:

Town Map
$91EAC - Asign Pallets
$920BB - Block
$F8C94 - Graphics
$BB6E - Pallets

Para tener un lindo mapa estilo HGSS, puedes usar este tileset en el "GSC Town Map Editor" para guiarte.



 

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC]Recopilacion de Offset Utiles

A peticion de @WiZaRD dejo los datos de las rutinas que modifican el daño que hacen ciertos movimientos y ciertos tipos de movimientos al haber algun clima.

Ideal para aquellos que desean que durante la Tormenta de Arena el daño de los movimientos tipo Ground aumente o cosas similares.

Nota: Recuerden que al repuntear la tabla debe terminar con un FF.
Nota 2: Offsets para Pokemon Gold.

Código:
-----
$FBEAB Pointer de WeatherTypeModifiers
$FBF1A Tabla  de  WeatherTypeModifiers

Formato:
[Clima] [Tipo del movimiento] [Multiplo]

Valores de los climas:
	00 = WEATHER_NONE
	01 = WEATHER_RAIN
	02 = WEATHER_SUN
	03 = WEATHER_SANDSTORM


Valores de los tipos:
PHYSICAL
	00 = NORMAL
	01 = FIGHTING
	02 = FLYING
	03 = POISON
	04 = GROUND
	05 = ROCK
	06 = BIRD ; unused
	07 = BUG
	08 = GHOST
	09 = STEEL
SPECIAL
	14 = FIRE
	15 = WATER
	16 = GRASS
	17 = ELECTRIC
	18 = PSYCHIC
	19 = ICE
	1A = DRAGON
	1B = DARK


Valores de los multiplos:
	05 = 0.5 de daño
	0F = 1.5 de daño
	14 = 2.0 de daño
-----

$FBEC6 Pointer de WeatherMoveModifiers
$FBF27 Tabla  de  WeatherMoveModifiers

Formato:
[Clima] [ID del movimiento] [Multiplo]

-----
 
Respuesta: [GBC]Recopilacion de Offset Utiles

Waaoo @Chamber, me quito el sombrero ante ti, menudo APORTAZO con esa info hare muchas variaciones y ojala no me pierda en el camino :p ajaja , de todas formas compa muchisisisisimas gracias por compartir de tus conocimientos en verdad muchas gracias
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC]Recopilacion de Offset Utiles

Cuando creas nuevos movimientos o simplemente cambias la animacion, dentro de caja de informacion de los movimientos en batalla se muestra erroneo el tipo del movimiento.



Para solucionar esto, se tiene que ir al offset $3E5BB y en hex poner FA C1 CB, de esta manera el juego estará leyendo el CurPlayerMove.
 
Arriba