Finalized graphics
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 927 B After Width: | Height: | Size: 967 B |
|
Before Width: | Height: | Size: 927 B After Width: | Height: | Size: 962 B |
|
Before Width: | Height: | Size: 932 B After Width: | Height: | Size: 1011 B |
|
Before Width: | Height: | Size: 927 B After Width: | Height: | Size: 998 B |
|
Before Width: | Height: | Size: 933 B After Width: | Height: | Size: 969 B |
|
Before Width: | Height: | Size: 936 B After Width: | Height: | Size: 959 B |
|
Before Width: | Height: | Size: 940 B After Width: | Height: | Size: 971 B |
|
Before Width: | Height: | Size: 936 B After Width: | Height: | Size: 957 B |
|
Before Width: | Height: | Size: 946 B After Width: | Height: | Size: 973 B |
|
Before Width: | Height: | Size: 936 B After Width: | Height: | Size: 966 B |
|
Before Width: | Height: | Size: 933 B After Width: | Height: | Size: 979 B |
|
Before Width: | Height: | Size: 929 B After Width: | Height: | Size: 965 B |
|
Before Width: | Height: | Size: 929 B After Width: | Height: | Size: 1011 B |
|
Before Width: | Height: | Size: 928 B After Width: | Height: | Size: 1019 B |
|
Before Width: | Height: | Size: 876 B After Width: | Height: | Size: 881 B |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 48 KiB |
BIN
graphics/unused graphics/gbpallet.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
graphics/unused graphics/gen5trainers.png
Normal file
|
After Width: | Height: | Size: 201 KiB |
|
|
@ -35,6 +35,7 @@ public:
|
|||
byte get_rand_gender_byte(byte index_num, byte attack_DVs);
|
||||
byte get_dex_number();
|
||||
bool get_validity();
|
||||
bool get_is_new();
|
||||
|
||||
|
||||
private:
|
||||
|
|
@ -71,6 +72,7 @@ private:
|
|||
byte ribbons[4];
|
||||
u32 iv_egg_ability;
|
||||
bool is_valid;
|
||||
bool is_new = false;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ public:
|
|||
int get_last_error();
|
||||
void load_pokemon();
|
||||
Pokemon* get_full_pokemon_array();
|
||||
bool get_has_new_pkmn();
|
||||
|
||||
private:
|
||||
Pokemon party[6];
|
||||
|
|
|
|||
|
|
@ -33,11 +33,10 @@
|
|||
|
||||
/*
|
||||
TODO:
|
||||
- Finalize Graphics
|
||||
- Fix intro text color
|
||||
- Credits (List all programs, people, and code- plus TPCI)
|
||||
|
||||
Post Beta:
|
||||
- Better custom sprites (Progress, Fennel, Title)
|
||||
- Determine if transfered Shiny Pokemon are square/star sparkles
|
||||
- Music and Sound Effects
|
||||
- Simplify the sprite initalization
|
||||
|
|
@ -99,11 +98,6 @@ void initalization_script(void)
|
|||
rand_set_seed(0x1216);
|
||||
add_script_party_var(party);
|
||||
|
||||
// Prepare dialouge
|
||||
populate_dialogue();
|
||||
populate_script();
|
||||
init_text_engine();
|
||||
|
||||
// Sound bank init
|
||||
irq_init(NULL);
|
||||
// irq_set(II_VBLANK, mmVBlank, 0); //Music
|
||||
|
|
@ -151,6 +145,11 @@ void initalization_script(void)
|
|||
main_menu_btn_init(Button(btn_lang_spa, 608), BTN_SPA);
|
||||
main_menu_btn_init(Button(btn_lang_kor, 640), BTN_KOR);
|
||||
main_menu_btn_init(Button(lang_arrow, 672), LANG_ARROW);
|
||||
|
||||
// Prepare dialouge
|
||||
populate_dialogue();
|
||||
populate_script();
|
||||
init_text_engine();
|
||||
|
||||
pokedex_init(); // Why does this cause the music to stop playing? Also the loop doesn't work
|
||||
|
||||
|
|
@ -188,7 +187,8 @@ void game_load_error(void)
|
|||
void first_load_message(void)
|
||||
{
|
||||
tte_set_pos(8, 0);
|
||||
tte_write("Hello! Thank you for using\nPok@mon Mirror!\n\nJust as a word of caution- \nPok@mon Mirror WILL modify\nyour generation 3 save file.\nThe program is designed to\nnot corrupt anything, but if\nyou do not wish to modify\nyour save file, please turn\noff your Game Boy Advance.\n\nPlease note that Pok@mon\nMirror is still in beta, so\nsave file backups are HIGHLY\nrecommended before using.\nWith that all out of the\nway, please enjoy!\n\n -The Gears of Progress");
|
||||
tte_set_ink(10);
|
||||
tte_write("#{cx:0x2000}Hello! Thank you for using\nPok@mon Mirror!\n\nJust as a word of caution- \nPok@mon Mirror WILL modify\nyour generation 3 save file.\nThe program is designed to\nnot corrupt anything, but if\nyou do not wish to modify\nyour save file, please turn\noff your Game Boy Advance.\n\nPlease note that Pok@mon\nMirror is still in beta, so\nsave file backups are HIGHLY\nrecommended before using.\nWith that all out of the\nway, please enjoy!\n\n -The Gears of Progress");
|
||||
while (!key_hit(KEY_A))
|
||||
{
|
||||
key_poll();
|
||||
|
|
@ -200,6 +200,7 @@ void first_load_message(void)
|
|||
int main(void)
|
||||
{
|
||||
initalization_script();
|
||||
|
||||
// Check if the game has been loaded correctly.
|
||||
while (!curr_rom.load_rom())
|
||||
{
|
||||
|
|
@ -219,7 +220,8 @@ int main(void)
|
|||
|
||||
// Legal mumbo jumbo
|
||||
tte_set_pos(8, 0);
|
||||
tte_write("\n\nPokemon Mirror was created\nout of love and appreciation\nfor the Pokemon franchise\nwith no profit in mind.\nIt will ALWAYS be free.\n\nPlease support the original developers-\nNintendo and GAME FREAK.\n\nAll Pokemon names, sprites, and music are owned by \nNintendo, Creatures Inc, and\nGAME FREAK Inc.");
|
||||
tte_write("#{cx:0xE000}\n\nPokemon Mirror was created\nout of love and appreciation\nfor the Pokemon franchise\nwith no profit in mind.\nIt will ALWAYS be free.\n\nPlease support the original developers-\nNintendo and GAME FREAK.\n\nAll Pokemon names, sprites, and music are owned by \nNintendo, Creatures Inc, and\nGAME FREAK Inc.");
|
||||
tte_write("#{cx:0xF000}"); // Set the color to grey
|
||||
while (delay_counter < 2500000)
|
||||
{
|
||||
delay_counter++;
|
||||
|
|
|
|||
|
|
@ -308,6 +308,7 @@ void Pokemon::convert_to_gen_three()
|
|||
if (!is_caught(species_index_struct))
|
||||
{
|
||||
data_section_G[2] = 0x44; // Rare Candy
|
||||
is_new = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -623,4 +624,8 @@ byte Pokemon::get_dex_number()
|
|||
bool Pokemon::get_validity()
|
||||
{
|
||||
return is_valid;
|
||||
}
|
||||
|
||||
bool Pokemon::get_is_new(){
|
||||
return is_new;
|
||||
}
|
||||
|
|
@ -7,31 +7,31 @@
|
|||
|
||||
/*
|
||||
byte debug_party_data[GEN2_INT_SIZE + 4] = { // Japanese Gen 1
|
||||
0x07, 0xD8, 0xE3, 0xAB, 0x50, 0x8B,
|
||||
0x06,
|
||||
0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
|
||||
0xFF,
|
||||
0x01, 0x00, 0x14, 0x00, 0x00, 0x15, 0x15, 0x2D, 0x21, 0x27, 0x00, 0x00, 0x2E, 0x75, 0x00, 0x00, 0xCA, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x41, 0x59, 0x19, 0x23, 0x1D, 0x00, 0x00, 0x06, 0x00, 0x17, 0x00, 0x0B, 0x00, 0x0D, 0x00, 0x0A, 0x00, 0x0C,
|
||||
0x02, 0x00, 0x17, 0x06, 0x00, 0x15, 0x15, 0x2D, 0x21, 0x27, 0x00, 0x00, 0x2E, 0x75, 0x00, 0x00, 0xCA, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x41, 0x59, 0x19, 0x23, 0x1D, 0x00, 0x00, 0x06, 0x00, 0x17, 0x00, 0x0B, 0x00, 0x0D, 0x00, 0x0A, 0x00, 0x0C,
|
||||
0x03, 0x00, 0x17, 0x06, 0x00, 0x15, 0x15, 0x2D, 0x21, 0x27, 0x00, 0x00, 0x2E, 0x75, 0x00, 0x00, 0xCA, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x41, 0x59, 0x19, 0x23, 0x1D, 0x00, 0x00, 0x06, 0x00, 0x17, 0x00, 0x0B, 0x00, 0x0D, 0x00, 0x0A, 0x00, 0x0C,
|
||||
0x04, 0x00, 0x17, 0x06, 0x00, 0x15, 0x15, 0x2D, 0x21, 0x27, 0x00, 0x00, 0x2E, 0x75, 0x00, 0x00, 0xCA, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x41, 0x59, 0x19, 0x23, 0x1D, 0x00, 0x00, 0x06, 0x00, 0x17, 0x00, 0x0B, 0x00, 0x0D, 0x00, 0x0A, 0x00, 0x0C,
|
||||
0x05, 0x00, 0x17, 0x06, 0x00, 0x15, 0x15, 0x2D, 0x21, 0x27, 0x00, 0x00, 0x2E, 0x75, 0x00, 0x00, 0xCA, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x41, 0x59, 0x19, 0x23, 0x1D, 0x00, 0x00, 0x06, 0x00, 0x17, 0x00, 0x0B, 0x00, 0x0D, 0x00, 0x0A, 0x00, 0x0C,
|
||||
0x06, 0x00, 0x17, 0x06, 0x00, 0x15, 0x15, 0x2D, 0x21, 0x27, 0x00, 0x00, 0x2E, 0x75, 0x00, 0x00, 0xCA, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x41, 0x59, 0x19, 0x23, 0x1D, 0x00, 0x00, 0x06, 0x00, 0x17, 0x00, 0x0B, 0x00, 0x0D, 0x00, 0x0A, 0x00, 0x0C,
|
||||
|
||||
0x07, 0xD8, 0xE3, 0xAB, 0x50, 0x8B,
|
||||
0x07, 0xD8, 0xE3, 0xAB, 0x50, 0x8B,
|
||||
0x07, 0xD8, 0xE3, 0xAB, 0x50, 0x8B,
|
||||
0x07, 0xD8, 0xE3, 0xAB, 0x50, 0x8B,
|
||||
0x07, 0xD8, 0xE3, 0xAB, 0x50, 0x8B,
|
||||
0x07, 0xD8, 0xE3, 0xAB, 0x50, 0x8B,
|
||||
|
||||
0x80, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x07, 0xD8, 0xE3, 0xAB, 0x50, 0x8B,
|
||||
0x06,
|
||||
0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
|
||||
0xFF,
|
||||
0x01, 0x00, 0x14, 0x00, 0x00, 0x15, 0x15, 0x2D, 0x21, 0x27, 0x00, 0x00, 0x2E, 0x75, 0x00, 0x00, 0xCA, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x41, 0x59, 0x19, 0x23, 0x1D, 0x00, 0x00, 0x06, 0x00, 0x17, 0x00, 0x0B, 0x00, 0x0D, 0x00, 0x0A, 0x00, 0x0C,
|
||||
0x02, 0x00, 0x17, 0x06, 0x00, 0x15, 0x15, 0x2D, 0x21, 0x27, 0x00, 0x00, 0x2E, 0x75, 0x00, 0x00, 0xCA, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x41, 0x59, 0x19, 0x23, 0x1D, 0x00, 0x00, 0x06, 0x00, 0x17, 0x00, 0x0B, 0x00, 0x0D, 0x00, 0x0A, 0x00, 0x0C,
|
||||
0x03, 0x00, 0x17, 0x06, 0x00, 0x15, 0x15, 0x2D, 0x21, 0x27, 0x00, 0x00, 0x2E, 0x75, 0x00, 0x00, 0xCA, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x41, 0x59, 0x19, 0x23, 0x1D, 0x00, 0x00, 0x06, 0x00, 0x17, 0x00, 0x0B, 0x00, 0x0D, 0x00, 0x0A, 0x00, 0x0C,
|
||||
0x04, 0x00, 0x17, 0x06, 0x00, 0x15, 0x15, 0x2D, 0x21, 0x27, 0x00, 0x00, 0x2E, 0x75, 0x00, 0x00, 0xCA, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x41, 0x59, 0x19, 0x23, 0x1D, 0x00, 0x00, 0x06, 0x00, 0x17, 0x00, 0x0B, 0x00, 0x0D, 0x00, 0x0A, 0x00, 0x0C,
|
||||
0x05, 0x00, 0x17, 0x06, 0x00, 0x15, 0x15, 0x2D, 0x21, 0x27, 0x00, 0x00, 0x2E, 0x75, 0x00, 0x00, 0xCA, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x41, 0x59, 0x19, 0x23, 0x1D, 0x00, 0x00, 0x06, 0x00, 0x17, 0x00, 0x0B, 0x00, 0x0D, 0x00, 0x0A, 0x00, 0x0C,
|
||||
0x06, 0x00, 0x17, 0x06, 0x00, 0x15, 0x15, 0x2D, 0x21, 0x27, 0x00, 0x00, 0x2E, 0x75, 0x00, 0x00, 0xCA, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x41, 0x59, 0x19, 0x23, 0x1D, 0x00, 0x00, 0x06, 0x00, 0x17, 0x00, 0x0B, 0x00, 0x0D, 0x00, 0x0A, 0x00, 0x0C,
|
||||
|
||||
0x07, 0xD8, 0xE3, 0xAB, 0x50, 0x8B,
|
||||
0x07, 0xD8, 0xE3, 0xAB, 0x50, 0x8B,
|
||||
0x07, 0xD8, 0xE3, 0xAB, 0x50, 0x8B,
|
||||
0x07, 0xD8, 0xE3, 0xAB, 0x50, 0x8B,
|
||||
0x07, 0xD8, 0xE3, 0xAB, 0x50, 0x8B,
|
||||
0x07, 0xD8, 0xE3, 0xAB, 0x50, 0x8B,
|
||||
|
||||
0x80, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x40, 0x00, 0x00,
|
||||
0xFD, 0xFD, 0xFD, 0xFD};
|
||||
*/
|
||||
|
|
@ -39,7 +39,7 @@ byte debug_party_data[GEN2_INT_SIZE + 4] = { // Japanese Gen 1
|
|||
byte debug_party_data[GEN2_INT_SIZE + 4] = { // International Gen 2
|
||||
0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50,
|
||||
0x06,
|
||||
0x00, 0xC9, 0x00, 0x00, 0x00, 0x00,
|
||||
0x81, 0xC9, 0xA1, 0x97, 0xFB, 0x24,
|
||||
0xFF,
|
||||
0x25, 0xDA,
|
||||
|
||||
|
|
@ -101,4 +101,16 @@ void Pokemon_Party::load_pokemon()
|
|||
Pokemon *Pokemon_Party::get_full_pokemon_array()
|
||||
{
|
||||
return party;
|
||||
}
|
||||
|
||||
bool Pokemon_Party::get_has_new_pkmn()
|
||||
{
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
if (party[i].get_is_new())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -22,7 +22,7 @@ void populate_dialogue()
|
|||
dialogue[DIA_START] = "On a second Game Boy family\nsystem, please load the Game\nBoy Pok@mon game you wish to\ntransfer from.|In your Game Boy Pok@mon\ngame, put any Pokemon you\nwant to bring out of\nyour dreams into your party.|Then connect this Game Boy\nAdvance to the other Game\nBoy family system using a\nGame Boy Color link cable.|Once you're ready, press A\non this device, talk to the Cable Club attendant, and\nthen initiate a trade.";
|
||||
dialogue[DIA_TRANS_GOOD] = "Amazing! Fantastic!\nEverything went perfectly!";
|
||||
dialogue[DIA_NEW_DEX] = "It looks like there's at\nleast one new Pokemon here\nthat isn't in the Dream Dex!|I'll give them something\nextra sweet as a reward for you both.";
|
||||
dialogue[DIA_NO_NEW_DEX] = "It doesn't look like there's\nanything new for your Dream\nDex, but that's okay!|Any research is good\research!";
|
||||
dialogue[DIA_NO_NEW_DEX] = "It doesn't look like there's\nanything new for your Dream\nDex, but that's okay!|It's important to confirm\nresearch results with\nmultiple tests!";
|
||||
dialogue[DIA_SEND_FRIEND_KANTO] = "I'm going to send these\nPokemon to my friend BILL so\nthat you can pick them up.\nThey live on Route 25!|Did you know they developed the Storage System for the\nKanto region?|My younger sister developed a version of the Storage\nSystem too, so BILL is a\ngood friend of ours!";
|
||||
dialogue[DIA_SEND_FRIEND_HOENN] = "I'm going to send these\nPokemon to my friend LANNETE so\nthat you can pick them up.\nThey live on route 114!|Did you know they developed the Storage System for the\nHoenn region?|My younger sister developed a version of the Storage\nSystem too, so LANNETE is a\ngood friend of ours!";
|
||||
dialogue[DIA_THANK] = "Thank you so much for your\nhelp! Whenever you want to\ntransfer more Pokemon, just\nlet me know!|See you around!";
|
||||
|
|
@ -127,7 +127,7 @@ bool run_conditional(int index)
|
|||
return get_tutorial_flag();
|
||||
|
||||
case COND_NEW_POKEMON:
|
||||
return true;
|
||||
return party_data.get_has_new_pkmn();
|
||||
|
||||
case COND_IS_HOENN:
|
||||
return curr_rom.is_hoenn();
|
||||
|
|
|
|||
|
|
@ -19,10 +19,14 @@ bool disabled;
|
|||
void init_text_engine()
|
||||
{
|
||||
// Load the TTE
|
||||
tte_init_se(3, BG_CBB(TEXT_CBB) | BG_SBB(TEXT_SBB) | BG_PRIO(0), 0xF000, 0b0001100011100110, 0, &pkmn_fontFont, NULL);
|
||||
tte_init_se(3, BG_CBB(TEXT_CBB) | BG_SBB(TEXT_SBB) | BG_PRIO(0), 0, CLR_WHITE, 14, &pkmn_fontFont, NULL);
|
||||
tte_set_margins(LEFT, TOP, RIGHT, BOTTOM);
|
||||
tte_set_pos(LEFT, TOP);
|
||||
|
||||
pal_bg_bank[14][15]= 0b0000001001111111;
|
||||
pal_bg_bank[15][15]= 0b0001100011100110;
|
||||
|
||||
|
||||
// Set default variables
|
||||
curr_line = script[SCRIPT_START];
|
||||
char_index = 0;
|
||||
|
|
@ -42,7 +46,6 @@ void text_next_frame()
|
|||
{
|
||||
char_index++;
|
||||
tte_erase_rect(LEFT, TOP, RIGHT, BOTTOM);
|
||||
tte_set_ink(CLR_RED);
|
||||
tte_write(curr_text.substr(0, char_index).c_str());
|
||||
}
|
||||
}
|
||||
|
|
|
|||