
Estas instrucciones asumen que estás comenzando desde el escritorio de Flipper Zero. De lo contrario, presiona el botón Atrás hasta que estés en el escritorio.
OK en Flipper para abrir el menú principal.Applications en el menú.GPIO en el submenú.Pokemon Trading. <br />
<img src="./docs/images/flipper-zero-pokemon-select-1.png" width="400" />
<br />
IZQUIERDA/DERECHA para paginar la selección de Pokémon de a 1.ARRIBA/ABAJO para paginar la selección de Pokémon de a 10.OK para seleccionar el Pokémon a intercambiar y volver al menú principal. <br />
<img src="./docs/images/flipper-zero-pokemon-select-2.png" width="400" /><br />
El nombre del Pokémon intercambiado se puede establecer. Cuando se selecciona un Pokémon, el nombre por defecto es el nombre de la especie en mayúsculas. Esto imita a un Pokémon sin un nombre personalizado. Para restablecer este nombre a su valor predeterminado, borra el campo de entrada de texto, presiona OK en el botón Save. Esto llenará el cuadro de texto con el nombre predeterminado. Presiona Save nuevamente para establecer este nombre.
Nota: Los nombres de Nidoran♀ y Nidoran♂ no se renderizan correctamente. Esto se debe a que Flipper actualmente no puede imprimir caracteres Unicode en la pantalla. Siguiendo las instrucciones anteriores, se llenará el campo de entrada de texto con NIDORAN con un espacio después. Este espacio es el símbolo no renderizable ♀/♂. Una vez intercambiado, se mostrará correctamente.
Nota: Solo se admiten caracteres alfanuméricos en el nombre del Pokémon en este momento.
También se puede ajustar el nivel del Pokémon presionando OK en la opción de nivel. El nivel mínimo es 2 y el máximo es 100. El nivel se ingresa a través de un cuadro de texto. (Los niveles por debajo de 2 causan una falla de desbordamiento en los juegos de Gen I que haría que el nivel saltara a 100, así que si deseas esto, simplemente establece el nivel del Pokémon en 100).
<br />
<img src="./docs/images/flipper-zero-flat-pokemon-level.png" width="400" />
<br />
Select Moves se utiliza para elegir los movimientos del Pokémon intercambiado. Están predefinidos con el conjunto de movimientos que el Pokémon conocería al nivel 1. Seleccionar una ranura de movimiento mostrará un índice alfabético de movimientos. Además, se pueden seleccionar rápidamente No Move y Default. Ten en cuenta que cualquier movimiento después del primer No Move se ignora. <br />
<img src="./docs/images/flipper-zero-move-1.png" width="400" />
<br />
<br />
<img src="./docs/images/flipper-zero-move-2.png" width="400" />
<br />
El menú Select Types puede cambiar los tipos del Pokémon intercambiado. Los tipos están predefinidos según lo que normalmente es el Pokémon seleccionado.
Los Pokémon con un solo tipo tendrán el mismo tipo establecido para ambos tipos.
Nota: A diferencia de otros menús, cambiar cualquiera de los tipos lo guarda inmediatamente. Presionar Back mantendrá los cambios. Esto se abordará en una versión posterior. Si necesitas volver a los tipos predeterminados, puedes seleccionar un Pokémon diferente y luego volver a seleccionar el Pokémon deseado.
Nota: Al cambiar los tipos, las estadísticas del Pokémon en el juego NO reflejarán los tipos elegidos. Además, estos pueden sobrescribirse de nuevo en el juego si el Pokémon usa un movimiento que afecta a los tipos (por ejemplo, Transform) o el Pokémon evoluciona.
Las estadísticas del Pokémon también se pueden influir. Las configuraciones actuales son:
Random IV, Zero EV Imita las estadísticas de un Pokémon salvaje atrapado.Random IV, Max EV / Level IV es aleatorio, pero EV se establece en el máximo que un Pokémon entrenado podría tener para su nivel actual.Random IV, Max EV IV es aleatorio, EV se establece en el máximo absoluto para un Pokémon perfectamente entrenado.Max IV, Zero EV Imita las estadísticas de un Pokémon salvaje atrapado, pero con el IV máximo posible.Max IV, Max EV / Level IV es máximo, EV se establece en el máximo que un Pokémon entrenado podría tener para su nivel actual.Max IV, Max EV Máximo Pokémon absolutamente perfectos y poderosos.
También se puede configurar el OT ID# y el OT Name del Pokémon. El OT ID# debe estar entre 0 y 65535. Establecer el OT ID# y el OT Name igual que tu entrenador actual hace que el juego crea que fue un Pokémon capturado en estado salvaje y no uno que se intercambió. Esto significa que los Pokémon de alto nivel seguirán obedeciéndote sin medallas, pero no obtendrán el aumento de experiencia de un Pokémon intercambiado.
<br />
<img src="./docs/images/flipper-zero-ot-id.png" width="400" /><br />
<br />
<img src="./docs/images/flipper-zero-ot-name.png" width="400" /><br />
<br />
<img src="./docs/images/flipper-zero-flat-6-2.png" width="400" /><br />
<br />
<img src="./docs/images/flipper-zero-flat-9.png" width="400" /><br />
<br />
<img src="./docs/images/game_boy_pokemon_center.png" width="400" /><br />
<br />
<img src="./docs/images/game_boy_save.png" width="400" /><br />
<br />
<img src="./docs/images/flipper-zero-flat-10.png" width="400" /><br />
<br />
<img src="./docs/images/game_boy_save_trade.png" width="400" /><br />
<br />
<img src="./docs/images/game_boy_trade_room_2.png" width="400" /><br />
<br />
<img src="./docs/images/flipper-zero-flat-10.png" width="400" /><br />
Mew. Debes seleccionar el Pokémon que deseas intercambiar y presionar TRADE. <br />
<img src="./docs/images/game_boy_trade_list_select_trade.png" width="400" /><br />
<br />
<img src="./docs/images/game_boy_trade_list_select_trade_confirm.png" width="400" /><br />
<br />
<img src="./docs/images/flipper-zero-flat-11.png" width="400" /><br />
<br />
<img src="./docs/images/flipper-zero-flat-12.png" width="400" /><br />
IZQUIERDA +
ATRÁS. <br />
<img src="./docs/images/reboot.png" width="400" /><br />
El método utilizado para comunicar 2 Game Boy se basa en el protocolo SPI, que es un protocolo de comunicación serial muy simple en el que un dispositivo maestro se comunica con uno o más dispositivos esclavos. El protocolo es bidireccional y sincrónico, y utiliza tres señales básicas:
En el Game Boy, los juegos almacenan los datos en un registro de cambio interno que se utiliza para enviar y recibir información. El protocolo SPI utilizado por el Game Boy utiliza la señal de reloj para indicar cuándo se transfieren los datos.
El protocolo de enlace de Game Boy es síncrono y requiere que el dispositivo esclavo responda al mismo ritmo que el dispositivo maestro. El dispositivo maestro suministra un reloj de 8KHz (velocidad de transferencia de datos de 1KB/s). La ventana de tiempo para responder es de solo ~120μs. Sin embargo, el dispositivo esclavo no tiene restricciones y puede responder cuando recibe los datos. El reloj puede variar y no hay un límite inferior.

Una transferencia de ejemplo de GB SPI. Aquí, el maestro envía 0xD9 (217) y el esclavo envía 0x45 (69).
Se puede conocer mas al respecto en el siguiente Video Analyzing the Different Versions of the Link Cable.
Para la placa del Fipper Zero se utilizó un PortData EXT Link y una place de prototipo de 2x8.

PortData EXT Link para Game Boy Color, Game Boy Pocket, GBC, GBP, GBL.



<source media="(prefers-color-scheme: dark)" srcset="./docs/images/GPIO-GBPIN_light-v2.png">
<source media="(prefers-color-scheme: light)" srcset="./docs/images/GPIO-GBPIN-v2.png">
<img
alt="Connect Flipper Zero GPIO to Game Boy Pins"
src="./docs/images/GPIO-GBPIN-v2.png">
| Cable Game Link (Socket) | Flipper Zero GPIO |
|---|---|
| 6 (GND) | 8 (GND) |
| 5 (CLK) | 6 (B2) |
| 3 (SI) | 7 (C3) |
| 2 (SO) | 5 (B3) |
Pudes cortar un cable directamente sin usar el socket pero debes tener en cuenta que el es un cable cruzado SI-SO.

"Cable Game Link" cortado y conectado directamente a los pines de Flipper Zero.
NOTA: No guiarse por los colores porque dependiendo del fabricante estos pueden cambiar, con un multímetro medir continuidad e identificar que cable es de que pin
Para generar la Interfaz gráfica se utilizó la herramienta FUI-Editor. Además se utilizaron los sprites originales del juego Pokemon Yellow que se encuentran en el repositorio Disassembly of Pokemon Yellow.
De cada imagen se transformó el color #aaa a #fff para que Flipper Zero la renderizara bien. Para eso se utilizó un Batch para Photopea, el editor de imagenes online.
EstebanFuentealba
R4g3D
kbembedded
Desde Talcahuano 🇨🇱 con ❤