jueves, 25 de enero de 2018

Hardware de Pokémon FireRed y Pokémon LeafGreen

MROM (MX23L128): 16 MiB = 16 x 1024 x 1024 x 8 bits = 134,217,728 bits = 128 Mibit.
Flash memory (MX29L010): 128 KiB = 128 x 1024 x 8 bits = 1,048,576 bits = 1 Mibit.

Hardware de Pokémon FireRed y Pokémon LeafGreen

Mask ROM (MROM)
Un tipo de memoria no volátil y de solo lectura, de mediana densidad (hasta 128 Mibit), programada por el fabrícate. Contiene el juego.

Flash memory
Un tipo de memoria no volátil, de lectura y escritura. Almacena el progreso del juego.

Hardware de Pokémon Ruby, Pokémon Sapphire y Pokémon Emerald

MROM (MX23L128): 16 MiB = 16 x 1024 x 1024 x 8 bits = 134,217,728 bits = 128 Mibit.
Flash memory (MX29L010): 128 KiB = 128 x 1024 x 8 bits = 1,048,576 bits = 1 Mibit.

Hardware de Pokémon Ruby, Pokémon Sapphire y Pokémon Emerald

Mask ROM (MROM)
Un tipo de memoria no volátil y de solo lectura, de mediana densidad (hasta 128 Mibit), programada por el fabrícate. Contiene el juego.

Flash memory
Un tipo de memoria no volátil, de lectura y escritura. Almacena el progreso del juego.

Battery
Provee energía para los circuitos que requieran seguir funcionando sin una fuente principal. En la primera y segunda generación mantenía funcionando la SRAM. En la tercera generación sólo mantenía funcionando el RTC.

Real-time clock (RTC)
Proporciona las funciones del reloj interno en la tercera generación.

Crystal oscillator
Proporciona una señal eléctrica con una frecuencia estable. Se usa para el reloj interno de los juegos.

Hardware de Pokémon Gold, Pokémon Silver y Pokémon Crystal

MROM (MX23C16): 2 MiB = 2 x 1024 x 1024 x 8 bits = 16,777,216 bits = 16 Mibit.
SRAM (BS62LV256 y GM76C256): 32 KiB = 32 x 1024 x 8 bits = 262,144 bits = 265 Kibit.

Hardware de Pokémon Gold, Pokémon Silver y Pokémon Crystal

Mask ROM (MROM)
Un tipo de memoria no volátil y de solo lectura, de mediana densidad (hasta 128 Mibit), programada por el fabrícate. Contiene el juego.

Static RAM (SRAM)
Un tipo de memoria volátil, de lectura y escritura. Almacena el progreso del juego de la primera y segunda generación.

Battery
Provee energía para los circuitos que requieran seguir funcionando sin una fuente principal. En la primera y segunda generación mantenía funcionando la SRAM. En la tercera generación sólo mantenía funcionando el RTC.

Power supply switching circuit (MM1134)
Protege los datos de la SRAM, cuando la fuente de alimentación disminuye cambia a modo de respaldo con una batería, cuando la fuente de alimentación aumenta cambia a modo normal.

Memory Bank Controller (MBC)
Permite intercambiar entre múltiples bancos de memoria (bank switching), no sólo en la memoria MROM (hasta 512 bancos de 128 Kibit), sino también en la memoria SRAM (hasta 16 bancos de 64 Kibit).

Crystal oscillator
Proporciona una señal eléctrica con una frecuencia estable. Se usa para el reloj interno de los juegos.

Hardware de Pokémon Red, Pokémon Green, Pokémon Blue y Pokémon Yellow

MROM (LH534) [Red (JP) y Green (JP)]: 512 KiB = 512 x 1024 x 8 bits = 4,194,304 bits = 4Mibit.
MROM (LH538 y M538) [Red, Blue y Yellow]: 1 MiB = 1024 x 1024 x 8 bits = 8,388,608 bits = 8Mibit.
SRAM (LH52B256, LH52256 y BR62256): 32 KiB = 32 x 1024 x 8 bits = 262,144 bits = 256 Kibit.

Hardware de Pokémon Red, Pokémon Green, Pokémon Blue y Pokémon Yellow

Mask ROM (MROM)
Un tipo de memoria no volátil y de solo lectura, de mediana densidad (hasta 128 Mibit), programada por el fabrícate. Contiene el juego.

Static RAM (SRAM)
Un tipo de memoria volátil, de lectura y escritura. Almacena el progreso del juego de la primera y segunda generación.

Battery
Provee energía para los circuitos que requieran seguir funcionando sin una fuente principal. En la primera y segunda generación mantenía funcionando la SRAM. En la tercera generación sólo mantenía funcionando el RTC.

Power supply switching circuit (MM1134)
Protege los datos de la SRAM, cuando la fuente de alimentación disminuye cambia a modo de respaldo con una batería, cuando la fuente de alimentación aumenta cambia a modo normal.

Memory Bank Controller (MBC)
Permite intercambiar entre múltiples bancos de memoria (bank switching), no sólo en la memoria MROM (hasta 512 bancos de 128 Kibit), sino también en la memoria SRAM (hasta 16 bancos de 64 Kibit).

martes, 23 de enero de 2018

Unidad de información

La unidad mínima de información es el bit (sí o no, cierto o falso, prendió o apagado, 1 o 0).

Un conjunto ordenado de 8 bits es un octeto.

Un conjunto ordenado de bits es un Byte (generalmente 8 bits, aunque puede variar en número de bits). Su símbolo es "B".

Para este sitio web vamos a usar el Byte de 8 bits, tal que: 1 B = 8 bits.

Popularmente se usan los múltiplos del sistema decimal (Kilo, Mega, Giga, Tera, Peta, Exa, Zetta y Yotta) para referirse a grandes cantidades de bytes, pero existe cierta ambigüedad en su uso ya que:

En sistemas operativos Windows 1 KB (un Kilobyte) es igual a 1024 bytes.

En el Sistema Internacional de Unidades 1 KB (un Kilobyte) es igual a 1000 bytes.

Siendo formales, los prefijos Kilo, Mega, Giga, Tera, Peta, Exa, Zetta y Yotta hacen referencia al sistema decimal, es decir representan una potencia de base 10.

Para hacer referencia formal al sistema binario, es decir representar una potencia de base 2 de forma correcta existen los prefijos Kibi, Mebi, Gibi, Tebi, Pebi, Exbi, Zebi y Yobi.

Sabiendo lo anterior apelamos al uso adecuado de los prefijos pues:

1 KB (un Kilobyte) es igual a 1,000 bytes (10^3 bytes).
1 KiB (un Kibibyte) es igual a 1,024 bytes (2^10 bytes).

1 MB (un Megabyte) es igual a 1,000,000 bytes (10^6 bytes).
1 MiB (un Mebibyte) es igual a 1,048,576 bytes (2^20 bytes).

1 GB (un Gigabyte) es igual a 1,000,000,000 bytes (10^9 bytes).
1 GiB (un Gibibyte) es igual a 1,073,741,824 bytes (2^30 bytes).

1 TB (un Terabyte) es igual a 1,000,000,000,000 bytes (10^12 bytes).
1 TiB (un Tebibyte) es igual a 1,099,511,627,776 bytes (2^40 bytes).

De forma semejante para referirnos a grandes cantidades de bits:

1 Kbit (un Kilobit) es igual a 1,000 bits (10^3 bits).
1 Kibit (un Kibibit) es igual a 1,024 bits (2^10 bits).

1 Mbit (un Megabit) es igual a 1,000,000 bits (10^6 bits).
1 Mibit (un Mebibit) es igual a 1,048,576 bits (2^20 bits).

1 Gbit (un Gigabit) es igual a 1,000,000,000 bits (10^9 bits).
1 Gibit (un Gibibit) es igual a 1,073,741,824 bits (2^30 bits).

1 Tbit (un Terabit) es igual a 1,000,000,000,000 bits (10^12 bits).
1 Tibit (un Tebibit) es igual a 1,099,511,627,776 bits (2^40 bits).

Para este sitio web vamos a usar los prefijos del sistema binario, así como sus símbolos.

Referencia:


Dentro de los cartuchos de la tercera generación de Pokémon

Inside the cartridges of the third Pokémon generation.

Pokémon Ruby Version.
Pokémon Sapphire Version.
Pokémon Emerald Version.
Pokémon FireRed Version.
Pokémon LeafGreen Version.


Los archivos "ROM" de esta generación pesan 16 MiB.
Los archivos de guardado de esta generación pesan 128 KiB.

Dentro de los cartuchos de la segunda generación de Pokémon

Inside the cartridges of the second Pokémon generation.

Pokémon Gold Version.
Pokémon Silver Version.
Pokémon Crystal Version.


Los archivos "ROM" de esta generación pesan 2 MiB.
Los archivos de guardado de esta generación pesan 32 KiB.

Dentro de los cartuchos de la primera generación de Pokémon

Inside the cartridges of the first Pokémon generation.

Pocket Monsters: Midori (Pokémon Green Version).
Pokémon Red Version.
Pokémon Blue Version.
Pokémon Yellow Version.


Los archivos "ROM" de Pokémon Green y Pokémon Red japonés pesan 512 KiB.
Los archivos "ROM" de Pokémon Red, Pokémon Blue y Pokémon Yellow pesan 1 MiB.
Los archivos de guardado de esta generación pesan 32 KiB.

viernes, 19 de enero de 2018

Aclarando algunos términos

En el contexto de los juegos de la saga Pokémon y para este blog usare los siguientes significados.

Línea de consolas Wii: Son las 4 versiones de consolas de Nintendo compatibles con los juegos de Wii. Wii, Wii (Family Edition), Wii mini y Wii U.

Línea de consolas Nintendo 3DS: Son las 6 versiones de consolas de Nintendo compatibles con los juegos de Nintendo 3DS. Nintendo 3DS, Nintendo 3DS XL, Nintendo 2DS, new Nintendo 3DS, new Nintendo 3DS XL y new Nintendo 2DS XL.

Archivo ".sav": Se trata del "archivo de guardado" generado por algunos emuladores para salvar el progreso del jugador.

Archivo de guardado (Save file): Se trata del conjunto de datos que corresponden al progreso del jugador. Incluido, pero no limitado a: el nombre del personaje del jugador, Pokémon vistos, Pokémon capturados, objetos en la mochila, dinero, medallas, tiempo de juego, objetos en la PC, equipo Pokémon, cajas de la PC.

Caja (Box): Estructura de datos en la cual se almacena determinada cantidad de Pokémon.

Equipo (Party): Se trata del grupo de Pokémon que acompañan al entrenador en los juegos principales de la saga. A nivel técnico es similar a una caja, una estructura de datos en la cual se almacenan un máximo de 6 Pokémon.

Sistema de almacenamiento oficial (Oficial Storage System): Un conjunto de cajas o espacio destinado a tener determinada cantidad de Pokémon provisto por Nintendo. Del lado técnico se trata de una estructura de datos guardada físicamente en los chips de memoria de medios oficiales, como lo son los cartuchos y tarjetas originales de los juegos principales de la saga, así como los juegos originales de Pokémon Stadium y Pokémon Stadium 2, también las Memory Card de GameCube con archivos de guardado de Pokémon Colosseum, Pokémon XD y Pokémon Box, además del Pokéwalker, la línea de consolas Wii, la línea de consolas Nintendo 3DS y el Pokémon Bank.

Sistema de almacenamiento (Storage System): Un conjunto de cajas o espacio destinado a tener determinada cantidad de Pokémon no necesariamente provisto por Nintendo. Abarca todos los medios oficiales y no oficiales (por ejemplo, el archivo ".sav" de los emuladores o el "archivo de guardado" extraído de medios oficiales, los cuales se pueden guardar físicamente en discos duros, memorias Flash USB, CDs, etc.).

Copiar: Crear un "clon" de un Pokémon o de un grupo de Pokémon.

Intercambio: Enviar y recibir un Pokémon por otro Pokémon.

Transferencia: Enviar un Pokémon sin posibilidad de retorno.

Depositar: Enviar un Pokémon a un sistema de almacenamiento.

Retirar: Recibir un Pokémon desde un sistema de almacenamiento.

Extraer: Crear una copia de un sistema de almacenamiento oficial.


Insertar/Inyectar: Sobrescribir un sistema de almacenamiento oficial.

domingo, 31 de diciembre de 2017

Programando Pokémon Interdimensional Trade (PKIDT)

Domingo 31 de diciembre de 2017, 3:00 p.m.

Programando Pokémon Interdimensional Trade (PKIDT) mientras veo la película The Fly (1986).

PKIDT es un pequeño conjunto de bibliotecas escritas en C que permiten transformar las estructuras de datos de Pokémon de primera y segunda generación en estructuras de datos de tercera generación y viceversa. He determinado (por mi cuenta) el cómo generar un valor de personalidad adecuado (conservando todos los atributos del Pokémon original y estableciendo su valor de naturaleza), así como diversas formas de preservar los valores de estado originales (dentro de 510 EVs).

Pretendo implementar las bibliotecas dentro de un microcontrolador con salidas y entradas al puerto EXT. de las consolas Game Boy Color y Game Boy Advance de tal manera que puedan realizarse transferencias directamente entre las tres primeras generaciones de juegos.

El 2018 será un año interesante.