mirror of
https://github.com/GearsProgress/Poke_Transporter_GB.git
synced 2026-04-24 15:37:56 -05:00
Continued work on conversion
This commit is contained in:
parent
31ea735fcf
commit
2c18e8f9ce
|
|
@ -3,6 +3,33 @@
|
|||
|
||||
#include <tonc.h>
|
||||
|
||||
class Pokemon;
|
||||
class Pokemon
|
||||
{
|
||||
public:
|
||||
Pokemon(byte gen, int index, byte *party_data);
|
||||
byte* convert_to_gen_three();
|
||||
void copy_from_to(byte *source, byte *destination, int size);
|
||||
|
||||
private:
|
||||
byte gen;
|
||||
byte species_index;
|
||||
byte moves[4];
|
||||
byte trainer_id[2];
|
||||
byte exp[3];
|
||||
byte nickname[11];
|
||||
byte trainer_name[11];
|
||||
byte pokerus;
|
||||
byte caught_data[2];
|
||||
byte level;
|
||||
byte gen_3_pkmn[80];
|
||||
byte PID[4] = {0};
|
||||
byte blank_word[4] = {0};
|
||||
byte data_section_G[12];
|
||||
byte data_section_A[12];
|
||||
byte data_section_E[12];
|
||||
byte data_section_M[12];
|
||||
hword checksum;
|
||||
byte encryption_key[4];
|
||||
};
|
||||
|
||||
#endif
|
||||
118
source/main.cpp
118
source/main.cpp
|
|
@ -14,45 +14,48 @@
|
|||
#include "metr.h"
|
||||
|
||||
OBJ_ATTR obj_buffer[128];
|
||||
OBJ_AFFINE *obj_aff_buffer = (OBJ_AFFINE*)obj_buffer;
|
||||
OBJ_AFFINE *obj_aff_buffer = (OBJ_AFFINE *)obj_buffer;
|
||||
|
||||
byte party[441] = {0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x6, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0xFF, 0x25, 0xDA, 0x9B, 0x0, 0x21, 0x2B, 0x0, 0x0, 0x25, 0xDA, 0x0, 0x0, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x21, 0x23, 0x1E, 0x0, 0x0, 0x46, 0x0, 0x85, 0x81, 0x5, 0x0, 0x0, 0x0, 0x13, 0x0, 0x13, 0x0, 0x0A, 0x0, 0x9, 0x0, 0x0B, 0x0, 0x0B, 0x0, 0x0A, 0x9B, 0x0, 0x21, 0x2B, 0x0, 0x0, 0x25, 0xDA, 0x0, 0x0, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x21, 0x23, 0x1E, 0x0, 0x0, 0x46, 0x0, 0x85, 0x81, 0x5, 0x0, 0x0, 0x0, 0x13, 0x0, 0x13, 0x0, 0x0A, 0x0, 0x9, 0x0, 0x0B, 0x0, 0x0B, 0x0, 0x0A, 0x9B, 0x0, 0x21, 0x2B, 0x0, 0x0, 0x25, 0xDA, 0x0, 0x0, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x21, 0x23, 0x1E, 0x0, 0x0, 0x46, 0x0, 0x85, 0x81, 0x5, 0x0, 0x0, 0x0, 0x13, 0x0, 0x13, 0x0, 0x0A, 0x0, 0x9, 0x0, 0x0B, 0x0, 0x0B, 0x0, 0x0A, 0x9B, 0x0, 0x21, 0x2B, 0x0, 0x0, 0x25, 0xDA, 0x0, 0x0, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x21, 0x23, 0x1E, 0x0, 0x0, 0x46, 0x0, 0x85, 0x81, 0x5, 0x0, 0x0, 0x0, 0x13, 0x0, 0x13, 0x0, 0x0A, 0x0, 0x9, 0x0, 0x0B, 0x0, 0x0B, 0x0, 0x0A, 0x9B, 0x0, 0x21, 0x2B, 0x0, 0x0, 0x25, 0xDA, 0x0, 0x0, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x21, 0x23, 0x1E, 0x0, 0x0, 0x46, 0x0, 0x85, 0x81, 0x5, 0x0, 0x0, 0x0, 0x13, 0x0, 0x13, 0x0, 0x0A, 0x0, 0x9, 0x0, 0x0B, 0x0, 0x0B, 0x0, 0x0A, 0x9B, 0x0, 0x21, 0x2B, 0x0, 0x0, 0x25, 0xDA, 0x0, 0x0, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x21, 0x23, 0x1E, 0x0, 0x0, 0x46, 0x0, 0x85, 0x81, 0x5, 0x0, 0x0, 0x0, 0x13, 0x0, 0x13, 0x0, 0x0A, 0x0, 0x9, 0x0, 0x0B, 0x0, 0x0B, 0x0, 0x0A, 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x82, 0x98, 0x8D, 0x83, 0x80, 0x90, 0x94, 0x88, 0x8B, 0x50, 0x50, 0x82, 0x98, 0x8D, 0x83, 0x80, 0x90, 0x94, 0x88, 0x8B, 0x50, 0x50, 0x82, 0x98, 0x8D, 0x83, 0x80, 0x90, 0x94, 0x88, 0x8B, 0x50, 0x50, 0x82, 0x98, 0x8D, 0x83, 0x80, 0x90, 0x94, 0x88, 0x8B, 0x50, 0x50, 0x82, 0x98, 0x8D, 0x83, 0x80, 0x90, 0x94, 0x88, 0x8B, 0x50, 0x50, 0x82, 0x98, 0x8D, 0x83, 0x80, 0x90, 0x94, 0x88, 0x8B, 0x50, 0x50};
|
||||
|
||||
Pokemon test(2, 0, &party[0]);
|
||||
|
||||
vu8 pkmn[480] = {
|
||||
0x5C, 0xF2, 0x9B, 0x70, 0x9B, 0x2A, 0x81, 0xE4, 0xBB, 0xC6, 0xBC, 0xBF, 0xCC, 0xCE, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00,
|
||||
0x0E, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94, 0xC7, 0x60, 0x1B, 0xB6,
|
||||
0xBD, 0xC2, 0x51, 0x85, 0xC7, 0xD8, 0x1A, 0x94, 0x2A, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94,
|
||||
0xC8, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94,
|
||||
0x5C, 0xF2, 0x9B, 0x70, 0x9B, 0x2A, 0x81, 0xE4, 0xBB, 0xC6, 0xBC, 0xBF, 0xCC, 0xCE, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00,
|
||||
0x0E, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94, 0xC7, 0x60, 0x1B, 0xB6,
|
||||
0xBD, 0xC2, 0x51, 0x85, 0xC7, 0xD8, 0x1A, 0x94, 0x2A, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94,
|
||||
0xC8, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94,
|
||||
|
||||
0xD1, 0xA8, 0x64, 0x28, 0x9B, 0x2A, 0x81, 0xE4, 0xBC, 0xBB, 0xCC, 0xCE, 0xFF, 0xCE, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00,
|
||||
0x83, 0x82, 0xE5, 0xCC, 0x4A, 0x82, 0xE5, 0xCC, 0x4A, 0x82, 0xE5, 0xCC, 0xA7, 0x82, 0xE5, 0xCC,
|
||||
0x4A, 0x82, 0xE5, 0xCC, 0x45, 0x82, 0xE5, 0xCC, 0x4A, 0x3A, 0xE4, 0xEE, 0x30, 0x98, 0xAE, 0xDD,
|
||||
0x4A, 0x82, 0xE5, 0xCC, 0x4A, 0x82, 0xE5, 0xCC, 0x4A, 0x82, 0xE5, 0xCC, 0x4A, 0x82, 0xE5, 0xCC,
|
||||
0xD1, 0xA8, 0x64, 0x28, 0x9B, 0x2A, 0x81, 0xE4, 0xBC, 0xBB, 0xCC, 0xCE, 0xFF, 0xCE, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00,
|
||||
0x83, 0x82, 0xE5, 0xCC, 0x4A, 0x82, 0xE5, 0xCC, 0x4A, 0x82, 0xE5, 0xCC, 0xA7, 0x82, 0xE5, 0xCC,
|
||||
0x4A, 0x82, 0xE5, 0xCC, 0x45, 0x82, 0xE5, 0xCC, 0x4A, 0x3A, 0xE4, 0xEE, 0x30, 0x98, 0xAE, 0xDD,
|
||||
0x4A, 0x82, 0xE5, 0xCC, 0x4A, 0x82, 0xE5, 0xCC, 0x4A, 0x82, 0xE5, 0xCC, 0x4A, 0x82, 0xE5, 0xCC,
|
||||
|
||||
0x4E, 0x5B, 0xB7, 0xF3, 0x9B, 0x2A, 0x81, 0xE4, 0xBD, 0xBB, 0xCC, 0xCE, 0xBF, 0xCC, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00,
|
||||
0xD5, 0xC9, 0x37, 0x35, 0xAF, 0x6B, 0x7D, 0x06, 0xD5, 0x71, 0x36, 0x17, 0xD5, 0x71, 0x36, 0x17,
|
||||
0xD5, 0x71, 0x36, 0x17, 0xD5, 0x71, 0x36, 0x17, 0x1C, 0x71, 0x36, 0x17, 0xD5, 0x71, 0x36, 0x17,
|
||||
0xD5, 0x71, 0x36, 0x17, 0x38, 0x71, 0x36, 0x17, 0xD5, 0x71, 0x36, 0x17, 0xDA, 0x71, 0x36, 0x17,
|
||||
0x4E, 0x5B, 0xB7, 0xF3, 0x9B, 0x2A, 0x81, 0xE4, 0xBD, 0xBB, 0xCC, 0xCE, 0xBF, 0xCC, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00,
|
||||
0xD5, 0xC9, 0x37, 0x35, 0xAF, 0x6B, 0x7D, 0x06, 0xD5, 0x71, 0x36, 0x17, 0xD5, 0x71, 0x36, 0x17,
|
||||
0xD5, 0x71, 0x36, 0x17, 0xD5, 0x71, 0x36, 0x17, 0x1C, 0x71, 0x36, 0x17, 0xD5, 0x71, 0x36, 0x17,
|
||||
0xD5, 0x71, 0x36, 0x17, 0x38, 0x71, 0x36, 0x17, 0xD5, 0x71, 0x36, 0x17, 0xDA, 0x71, 0x36, 0x17,
|
||||
|
||||
0x5F, 0x80, 0x16, 0xBB, 0x9B, 0x2A, 0x81, 0xE4, 0xBE, 0xBB, 0xD1, 0xC8, 0xFF, 0xCC, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00,
|
||||
0xC4, 0xAA, 0x97, 0x5F, 0xC4, 0xAA, 0x97, 0x5F, 0xC4, 0xAA, 0x97, 0x5F, 0x29, 0xAA, 0x97, 0x5F,
|
||||
0xC4, 0xAA, 0x97, 0x5F, 0xCB, 0xAA, 0x97, 0x5F, 0xC4, 0x12, 0x96, 0x7D, 0xBE, 0xB0, 0xDC, 0x4E,
|
||||
0xC4, 0xAA, 0x97, 0x5F, 0x0D, 0xAA, 0x97, 0x5F, 0xC4, 0xAA, 0x97, 0x5F, 0xC4, 0xAA, 0x97, 0x5F,
|
||||
0x5F, 0x80, 0x16, 0xBB, 0x9B, 0x2A, 0x81, 0xE4, 0xBE, 0xBB, 0xD1, 0xC8, 0xFF, 0xCC, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00,
|
||||
0xC4, 0xAA, 0x97, 0x5F, 0xC4, 0xAA, 0x97, 0x5F, 0xC4, 0xAA, 0x97, 0x5F, 0x29, 0xAA, 0x97, 0x5F,
|
||||
0xC4, 0xAA, 0x97, 0x5F, 0xCB, 0xAA, 0x97, 0x5F, 0xC4, 0x12, 0x96, 0x7D, 0xBE, 0xB0, 0xDC, 0x4E,
|
||||
0xC4, 0xAA, 0x97, 0x5F, 0x0D, 0xAA, 0x97, 0x5F, 0xC4, 0xAA, 0x97, 0x5F, 0xC4, 0xAA, 0x97, 0x5F,
|
||||
|
||||
0x14, 0x43, 0x7A, 0xCE, 0x9B, 0x2A, 0x81, 0xE4, 0xBF, 0xCC, 0xC3, 0xC5, 0xFF, 0xCC, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00,
|
||||
0x46, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A, 0x8F, 0xD1, 0xFA, 0x08,
|
||||
0xF5, 0x73, 0xB0, 0x3B, 0x8F, 0x69, 0xFB, 0x2A, 0x62, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A,
|
||||
0x80, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A,
|
||||
0x14, 0x43, 0x7A, 0xCE, 0x9B, 0x2A, 0x81, 0xE4, 0xBF, 0xCC, 0xC3, 0xC5, 0xFF, 0xCC, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00,
|
||||
0x46, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A, 0x8F, 0xD1, 0xFA, 0x08,
|
||||
0xF5, 0x73, 0xB0, 0x3B, 0x8F, 0x69, 0xFB, 0x2A, 0x62, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A,
|
||||
0x80, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A,
|
||||
|
||||
0xF5, 0x91, 0x98, 0x00, 0x9B, 0x2A, 0x81, 0xE4, 0xC0, 0xCC, 0xBB, 0xC8, 0xC5, 0xFF, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00,
|
||||
0xA7, 0xBB, 0x19, 0xE4, 0x6E, 0xBB, 0x19, 0xE4, 0x6E, 0xBB, 0x19, 0xE4, 0x6E, 0x03, 0x18, 0xC6,
|
||||
0x14, 0xA1, 0x52, 0xF5, 0x6E, 0xBB, 0x19, 0xE4, 0x6E, 0xBB, 0x19, 0xE4, 0x6E, 0xBB, 0x19, 0xE4,
|
||||
0x6E, 0xBB, 0x19, 0xE4, 0x83, 0xBB, 0x19, 0xE4, 0x6E, 0xBB, 0x19, 0xE4, 0x61, 0xBB, 0x19, 0xE4
|
||||
};
|
||||
0xF5, 0x91, 0x98, 0x00, 0x9B, 0x2A, 0x81, 0xE4, 0xC0, 0xCC, 0xBB, 0xC8, 0xC5, 0xFF, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00,
|
||||
0xA7, 0xBB, 0x19, 0xE4, 0x6E, 0xBB, 0x19, 0xE4, 0x6E, 0xBB, 0x19, 0xE4, 0x6E, 0x03, 0x18, 0xC6,
|
||||
0x14, 0xA1, 0x52, 0xF5, 0x6E, 0xBB, 0x19, 0xE4, 0x6E, 0xBB, 0x19, 0xE4, 0x6E, 0xBB, 0x19, 0xE4,
|
||||
0x6E, 0xBB, 0x19, 0xE4, 0x83, 0xBB, 0x19, 0xE4, 0x6E, 0xBB, 0x19, 0xE4, 0x61, 0xBB, 0x19, 0xE4};
|
||||
|
||||
void load_sprite(void)
|
||||
{
|
||||
|
|
@ -64,9 +67,9 @@ void load_sprite(void)
|
|||
|
||||
OBJ_ATTR *metr = &obj_buffer[0];
|
||||
obj_set_attr(metr,
|
||||
ATTR0_SQUARE, // Square, regular sprite
|
||||
ATTR1_SIZE_64, // 64x64 pixels,
|
||||
ATTR2_PALBANK(0) | 0); // palette index 0, tile index 0
|
||||
ATTR0_SQUARE, // Square, regular sprite
|
||||
ATTR1_SIZE_64, // 64x64 pixels,
|
||||
ATTR2_PALBANK(0) | 0); // palette index 0, tile index 0
|
||||
|
||||
// Set position
|
||||
obj_set_pos(metr, 176, 96);
|
||||
|
|
@ -74,14 +77,13 @@ void load_sprite(void)
|
|||
oam_copy(oam_mem, obj_buffer, 1); // Update first OAM object
|
||||
}
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
|
||||
linkGPIO->reset();
|
||||
|
||||
REG_DISPCNT = DCNT_MODE0 | DCNT_BG0 | DCNT_OBJ | DCNT_OBJ_1D;
|
||||
tte_init_se_default(0, BG_CBB(0) | BG_SBB(31));
|
||||
tte_init_se_default(0, BG_CBB(0) | BG_SBB(31));
|
||||
|
||||
irq_init(NULL);
|
||||
irq_enable(II_VBLANK);
|
||||
|
|
@ -95,37 +97,42 @@ int main(void)
|
|||
int arr = 0;
|
||||
|
||||
char str[128] = {'\0'};
|
||||
bool print = false;
|
||||
bool print = false;
|
||||
|
||||
while (1)
|
||||
{
|
||||
u16 keys = ~REG_KEYS & KEY_ANY;
|
||||
|
||||
while (1) {
|
||||
u16 keys = ~REG_KEYS & KEY_ANY;
|
||||
|
||||
vid_vsync();
|
||||
key_poll();
|
||||
if (key_released(KEY_UP)){
|
||||
if (key_released(KEY_UP))
|
||||
{
|
||||
arr++;
|
||||
if (arr == 14){
|
||||
if (arr == 14)
|
||||
{
|
||||
arr = 0;
|
||||
}
|
||||
}
|
||||
if (key_released(KEY_DOWN)){
|
||||
if (key_released(KEY_DOWN))
|
||||
{
|
||||
arr--;
|
||||
if (arr == -1){
|
||||
if (arr == -1)
|
||||
{
|
||||
arr = 13;
|
||||
}
|
||||
}
|
||||
if (key_released(KEY_A)){
|
||||
insert_pokemon(pkmn, 6);
|
||||
if (key_released(KEY_A))
|
||||
{
|
||||
insert_pokemon(test.convert_to_gen_three(), 1);
|
||||
print = true;
|
||||
}
|
||||
|
||||
if (key_released(KEY_START)){
|
||||
if (key_released(KEY_START))
|
||||
{
|
||||
setup();
|
||||
loop();
|
||||
}
|
||||
|
||||
|
||||
|
||||
tte_erase_screen();
|
||||
|
||||
tte_set_pos(0, 0);
|
||||
|
|
@ -135,23 +142,20 @@ int main(void)
|
|||
sprintf(str, "[%c-%X]", mem_name, arr);
|
||||
tte_write(str);
|
||||
|
||||
if (print){
|
||||
if (print)
|
||||
{
|
||||
tte_set_pos(0, 20);
|
||||
tte_write("Pokemon Injected!");
|
||||
}
|
||||
|
||||
tte_set_pos(0,30);
|
||||
//Pokemon test(2);
|
||||
//sprintf(str, "gen: %X", test.get());
|
||||
tte_set_pos(0, 30);
|
||||
tte_write(str);
|
||||
|
||||
|
||||
frame++;
|
||||
VBlankIntrWait();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*Credits:
|
||||
https://github.com/laqieer/libsavgba
|
||||
https://github.com/rodri042/gba-link-connection
|
||||
|
|
|
|||
|
|
@ -7,10 +7,7 @@
|
|||
byte gen_one_pkmn_index[255] = {0};
|
||||
byte gen_two_pkmn_index[255] = {0};
|
||||
|
||||
class Pokemon
|
||||
{
|
||||
public:
|
||||
Pokemon(byte gen, int index, byte party_data[441])
|
||||
Pokemon::Pokemon(byte gen, int index, byte *party_data)
|
||||
{
|
||||
int party_offset = 20 + (index * 48);
|
||||
int ot_offset = 20 + (6 * pkmn_size) + (index * name_size);
|
||||
|
|
@ -23,52 +20,80 @@ public:
|
|||
break;
|
||||
case 2:
|
||||
species_index = gen_one_pkmn_index[party_data[party_offset + 0x00]];
|
||||
copy(party_data[party_offset + 0x02], party_data[party_offset + 0x06], moves[0]);
|
||||
//std::copy(party_data[party_offset + 0x06], party_data[party_offset + 0x08], trainer_id[0]);
|
||||
copy_from_to(&party_data[party_offset + 0x02], &moves[0], 4);
|
||||
copy_from_to(&party_data[party_offset + 0x06], &trainer_id[0], 2);
|
||||
exp[3]; //??
|
||||
//std::copy(party_data[name_offset + 0x00], party_data[name_offset + 0x0A], nickname[0]);
|
||||
//std::copy(party_data[ot_offset + 0x00], party_data[name_offset + 0x0A], trainer_name[11]);
|
||||
copy_from_to(&party_data[name_offset + 8], &nickname[0], 10);
|
||||
copy_from_to(&party_data[ot_offset + 0x00], &trainer_name[0], 11);
|
||||
pokerus = party_data[party_offset + 0x1C];
|
||||
//std::copy(party_data[party_offset + 0x1D], party_data[party_offset + 0x1F], caught_data[0]);
|
||||
copy_from_to(&party_data[party_offset + 0x1D], &caught_data[0], 2);
|
||||
level; //??
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void convert_to_gen_three()
|
||||
byte* Pokemon::convert_to_gen_three()
|
||||
{
|
||||
//std::copy(gen_3_pkmn[0], gen_3_pkmn[3], blank_word[0]); // Personality Value
|
||||
//std::copy(gen_3_pkmn[4], gen_3_pkmn[5], blank_word[0]); // SID
|
||||
//std::copy(gen_3_pkmn[6], gen_3_pkmn[7], blank_word[0]); // TID
|
||||
copy_from_to(&blank_word[0], &gen_3_pkmn[0], 4); // Personality Value
|
||||
copy_from_to(&blank_word[0], &gen_3_pkmn[4], 2); // SID
|
||||
copy_from_to(&trainer_id[0], &gen_3_pkmn[6], 2); // TID
|
||||
gen_3_pkmn[8] = 0xBB;
|
||||
gen_3_pkmn[9] = 0xFF; // Nickname
|
||||
// Language
|
||||
gen_3_pkmn[18] = 2;// Language
|
||||
gen_3_pkmn[19] = 0b00000010; // Egg Name
|
||||
gen_3_pkmn[20] = 0xBB;
|
||||
gen_3_pkmn[21] = 0xFF; // OT Name
|
||||
gen_3_pkmn[27] = 0b00000000; // Markings
|
||||
// Checksum
|
||||
// ???
|
||||
// Data
|
||||
// Data:
|
||||
data_section_G[0] = 0x01;
|
||||
data_section_G[1] = 0x9B; // Species Index
|
||||
data_section_G[4] = 0xFF; // EXP
|
||||
|
||||
data_section_A[0] = moves[0]; // Move 1
|
||||
data_section_A[2] = moves[1]; // Move 2
|
||||
data_section_A[4] = moves[2]; // Move 3
|
||||
data_section_A[6] = moves[3]; // Move 4
|
||||
|
||||
// Data section E is all zero
|
||||
|
||||
data_section_M[0] = pokerus;
|
||||
|
||||
// Checksum:
|
||||
checksum = 0x0000;
|
||||
for (int i = 0; i < 12; i = i + 2){
|
||||
checksum = checksum + ((data_section_G[i] << 8) | data_section_G[i + 1]);
|
||||
checksum = checksum + ((data_section_A[i] << 8) | data_section_A[i + 1]);
|
||||
checksum = checksum + ((data_section_E[i] << 8) | data_section_E[i + 1]);
|
||||
checksum = checksum + ((data_section_M[i] << 8) | data_section_M[i + 1]);
|
||||
}
|
||||
|
||||
gen_3_pkmn[28] = (checksum & 0xFF00) >> 8;
|
||||
gen_3_pkmn[29] = checksum & 0xFF;
|
||||
|
||||
for (int i = 0; i < 4; i++){
|
||||
encryption_key[i] = gen_3_pkmn[4 + i] ^ PID[i]; // XOR SID and TID with PID
|
||||
}
|
||||
|
||||
for (int i = 0; i < 12; i++){
|
||||
data_section_G[i] ^= encryption_key[i % 4];
|
||||
data_section_A[i] ^= encryption_key[i % 4];
|
||||
data_section_E[i] ^= encryption_key[i % 4];
|
||||
data_section_M[i] ^= encryption_key[i % 4];
|
||||
}
|
||||
|
||||
// TODO: FIX TO MODULO
|
||||
copy_from_to(&data_section_G[0], &gen_3_pkmn[32], 12);
|
||||
copy_from_to(&data_section_A[0], &gen_3_pkmn[44], 12);
|
||||
copy_from_to(&data_section_E[0], &gen_3_pkmn[56], 12);
|
||||
copy_from_to(&data_section_M[0], &gen_3_pkmn[68], 12);
|
||||
|
||||
|
||||
return gen_3_pkmn;
|
||||
}
|
||||
|
||||
void copy(int start, int stop, byte *array){
|
||||
for (int i = 0; i < (stop - start); i++){
|
||||
gen_3_pkmn[i + start] = array[i];
|
||||
void Pokemon::copy_from_to(byte *source, byte *destination, int size){
|
||||
for (int i = 0; i < size; i++){
|
||||
destination[i] = source[i];
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
byte gen;
|
||||
byte species_index;
|
||||
byte moves[4];
|
||||
byte trainer_id[2];
|
||||
byte exp[3];
|
||||
byte nickname[11];
|
||||
byte trainer_name[11];
|
||||
byte pokerus;
|
||||
byte caught_data[2];
|
||||
byte level;
|
||||
byte gen_3_pkmn[80];
|
||||
byte blank_word[4] = {0};
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user