diff --git a/Pokemon_Mirror_mb.sym b/Poke_Transporter_GB_mb.sym similarity index 67% rename from Pokemon_Mirror_mb.sym rename to Poke_Transporter_GB_mb.sym index e155c7d..a0b9bca 100644 --- a/Pokemon_Mirror_mb.sym +++ b/Poke_Transporter_GB_mb.sym @@ -1,5 +1,5 @@ 00000001 B _ZN17__eh_globals_init7_S_initE -00000001 B box_viewer +00000001 B asm_payload_location 00000001 B connection_state 00000001 B current_bank 00000001 B in_data @@ -13,32 +13,27 @@ 00000002 W __aeabi_ldiv0 00000002 B __key_curr 00000002 B __key_prev -00000002 W __sync_synchronize +00000002 T __sync_synchronize_none 00000002 T _Unwind_Complete 00000002 t _Unwind_DebugHook +00000002 T _ZN13Pokemon_Party13continue_linkEb 00000002 T _ZN3DexC1Ev 00000002 T _ZN3DexC2Ev 00000002 T _ZN8Box_MenuC1Ev 00000002 T _ZN8Box_MenuC2Ev -00000002 T _ZN8rom_dataC1Ev -00000002 T _ZN8rom_dataC2Ev 00000002 T _ZNSt13bad_exceptionD1Ev 00000002 T _ZNSt13bad_exceptionD2Ev -00000002 T _ZNSt3_V214error_categoryD1Ev -00000002 T _ZNSt3_V214error_categoryD2Ev 00000002 T _ZNSt9exceptionD1Ev 00000002 T _ZNSt9exceptionD2Ev 00000002 T _ZNSt9type_infoD1Ev 00000002 T _ZNSt9type_infoD2Ev 00000002 T dummy_drawg 00000002 T dummy_erase -00000004 b __hndl_lock 00000004 B __malloc_max_sbrked_mem 00000004 B __malloc_max_total_mem 00000004 D __malloc_sbrk_base 00000004 B __malloc_top_pad 00000004 D __malloc_trim_threshold -00000004 B __stdio_exit_handler 00000004 D _impure_ptr 00000004 V _ZGVNSt10moneypunctIcLb0EE2idE 00000004 V _ZGVNSt10moneypunctIcLb1EE2idE @@ -89,14 +84,12 @@ 00000004 T _ZN10script_obj15get_false_indexEv 00000004 T _ZN11Button_Menu21set_bottom_row_offsetEi 00000004 b _ZN12_GLOBAL__N_113__new_handlerE -00000004 d _ZN12_GLOBAL__N_120io_category_instanceE 00000004 b _ZN12_GLOBAL__N_1L11static_condE 00000004 b _ZN12_GLOBAL__N_1L12static_mutexE 00000004 T _ZN7Pokemon20get_full_gen_3_arrayEv +00000004 T _ZN8rom_data10verify_romEv 00000004 T _ZNKSt11logic_error4whatEv 00000004 T _ZNKSt13runtime_error4whatEv -00000004 W _ZNKSt5ctypeIcE8do_widenEc -00000004 T _ZNKSt8ios_base7failure4whatEv 00000004 T _ZNKSt9type_info14__is_pointer_pEv 00000004 T _ZNKSt9type_info15__is_function_pEv 00000004 b _ZZN12_GLOBAL__N_115get_static_condEvE4once @@ -148,7 +141,6 @@ 00000004 T CpuFastSet 00000004 T CpuSet 00000004 B data_counter -00000004 d defaultDevice 00000004 B delay 00000004 B delay_counter 00000004 B dex_shift @@ -180,25 +172,19 @@ 00000004 T LZ77UnCompVram 00000004 T LZ77UnCompWram 00000004 T MidiKey2Freq -00000004 D mosi_delay 00000004 T MultiBoot 00000004 B newest_save_offset -00000004 t null_write 00000004 B num_sprites 00000004 T ObjAffineSet 00000004 B prof -00000004 B ptr_block_ptr_high -00000004 B ptr_block_ptr_low +00000004 B ptgb_logo_l +00000004 B ptgb_logo_r 00000004 B ptr_box_return 00000004 B ptr_call_check_flag -00000004 B ptr_call_return_1 00000004 B ptr_call_return_2 -00000004 B ptr_callASM 00000004 B ptr_dex_seen_caught 00000004 B ptr_index 00000004 B ptr_pkmn_offset -00000004 B ptr_script_ptr_high -00000004 B ptr_script_ptr_low 00000004 T RegisterRamReset 00000004 T RLUnCompVram 00000004 T RLUnCompWram @@ -220,15 +206,10 @@ 00000004 B u32_rand 00000004 D var_box_return 00000004 D var_call_check_flag -00000004 D var_call_return_1 00000004 D var_call_return_2 -00000004 D var_callASM -00000004 D var_dex_num 00000004 D var_dex_seen_caught 00000004 D var_index 00000004 D var_pkmn_offset -00000004 D var_script_ptr_high -00000004 D var_script_ptr_low 00000004 T VBlankIntrWait 00000004 B x 00000004 B y @@ -236,10 +217,12 @@ 00000006 T _Unwind_GetDataRelBase 00000006 T _Unwind_GetTextRelBase 00000006 T _ZN11Button_Menu20set_rows_and_columnsEii +00000006 T _ZN12movement_var12set_movementEPKij 00000006 T _ZN19mystery_gift_script19get_script_value_atEi 00000006 T _ZN7Pokemon19get_gender_from_pidEj 00000006 T _ZN7Pokemon19get_letter_from_pidEj -00000006 T _ZNKSt3_V214error_category23default_error_conditionEi +00000006 T _ZN8rom_dataC1Ev +00000006 T _ZN8rom_dataC2Ev 00000006 T DivAbs 00000006 T DivArmAbs 00000006 T DivArmMod @@ -270,33 +253,32 @@ 00000008 t __strcmp_from_thumb 00000008 T _ZGTtNKSt13bad_exception4whatEv 00000008 T _ZGTtNKSt9exception4whatEv +00000008 T _ZN10sprite_var9set_startEv 00000008 T _ZN11Button_Menu15get_pos_from_xyEii +00000008 T _ZN11textbox_var9set_startEv 00000008 b _ZN12_GLOBAL__N_19fake_condE +00000008 T _ZN12movement_var9set_startEv 00000008 T _ZN13Pokemon_Party14get_last_errorEv 00000008 T _ZN13Pokemon_Party8set_gameEi 00000008 T _ZN7Pokemon12get_validityEv 00000008 T _ZN7Pokemon14get_gen_3_dataEi 00000008 T _ZN7Pokemon20get_unencrypted_dataEi -00000008 t _ZNK12_GLOBAL__N_117io_error_category4nameEv +00000008 T _ZN9music_var9set_startEv 00000008 W _ZNK9__gnu_cxx24__concurrence_lock_error4whatEv 00000008 W _ZNK9__gnu_cxx24__concurrence_wait_error4whatEv 00000008 W _ZNK9__gnu_cxx26__concurrence_unlock_error4whatEv 00000008 W _ZNK9__gnu_cxx29__concurrence_broadcast_error4whatEv 00000008 T _ZNKSt13bad_exception4whatEv -00000008 T _ZNKSt8bad_cast4whatEv 00000008 T _ZNKSt9bad_alloc4whatEv 00000008 T _ZNKSt9exception4whatEv -00000008 T _ZSt17iostream_categoryv 00000008 R _ZTIN10__cxxabiv115__forced_unwindE 00000008 R _ZTIN10__cxxabiv119__foreign_exceptionE -00000008 R _ZTINSt3_V214error_categoryE 00000008 R _ZTISt9exception 00000008 R _ZTISt9type_info -00000008 T UGBA_MemIO 0000000a T _getpid_r 0000000a T _kill_r 0000000a T _Z12delay_cyclesm -0000000a T _ZN7asm_var9set_startEv +0000000a T _ZN11textbox_var17set_virtual_startEv 0000000a T _ZN7xse_var9set_startEv 0000000a T _ZSt10unexpectedv 0000000a T _ZSt24__throw_out_of_range_fmtPKcz @@ -306,26 +288,18 @@ 0000000c b __env_recursive_mutex 0000000c T __errno 0000000c b __malloc_recursive_mutex -0000000c b __sfp_recursive_mutex -0000000c D __sglue -0000000c d __stderr_handle -0000000c d __stdin_handle -0000000c d __stdout_handle 0000000c t _Unwind_decode_typeinfo_ptr.constprop.0 0000000c T _Z12set_def_langi 0000000c T _Z13rand_get_seedv 0000000c T _Z13rand_set_seedj -0000000c T _Z14interrupt_initv +0000000c T _Z13set_text_exitv 0000000c T _Z15get_frame_countv 0000000c T _Z16get_def_lang_numv -0000000c T _Z16interrupt_enable15interrupt_index 0000000c T _Z17get_earliest_movei 0000000c T _Z17get_num_abilitiesi -0000000c T _Z17interrupt_disable15interrupt_index 0000000c T _Z17set_tutorial_flagb 0000000c T _Z18enable_auto_randomv 0000000c T _Z19disable_auto_randomv -0000000c T _Z21interrupt_set_handler15interrupt_indexPFvvE 0000000c T _ZdlPv 0000000c T _ZdlPvj 0000000c T _ZN10__cxxabiv112__unexpectedEPFvvE @@ -338,33 +312,23 @@ 0000000c T _ZN13Pokemon_Party8get_langEv 0000000c T _ZN13Pokemon_Party8set_langEi 0000000c T _ZN19mystery_gift_script10rev_endianEt -0000000c T _ZN9__gnu_cxx12__atomic_addEPVii +0000000c T _ZN7asm_var9set_startEb 0000000c T _ZN9__gnu_cxx20recursive_init_errorC1Ev 0000000c T _ZN9__gnu_cxx20recursive_init_errorC2Ev -0000000c T _ZNKSt8ios_base7failureB5cxx114whatEv -0000000c W _ZNSolsEi 0000000c W _ZNSs4_Rep10_M_destroyERKSaIcE 0000000c R _ZTIN10__cxxabiv117__class_type_infoE 0000000c R _ZTIN10__cxxabiv120__si_class_type_infoE -0000000c R _ZTIN10__cxxabiv121__vmi_class_type_infoE -0000000c r _ZTIN12_GLOBAL__N_117io_error_categoryE 0000000c R _ZTIN9__gnu_cxx20recursive_init_errorE 0000000c V _ZTIN9__gnu_cxx24__concurrence_lock_errorE 0000000c V _ZTIN9__gnu_cxx24__concurrence_wait_errorE 0000000c V _ZTIN9__gnu_cxx26__concurrence_unlock_errorE 0000000c V _ZTIN9__gnu_cxx29__concurrence_broadcast_errorE -0000000c R _ZTINSt8ios_base7failureB5cxx11E -0000000c R _ZTINSt8ios_base7failureE 0000000c R _ZTISt11logic_error 0000000c R _ZTISt12length_error 0000000c R _ZTISt12out_of_range -0000000c R _ZTISt12system_error -0000000c V _ZTISt13__ios_failure 0000000c R _ZTISt13bad_exception -0000000c R _ZTISt13runtime_error -0000000c R _ZTISt8bad_cast 0000000c R _ZTISt9bad_alloc -0000000c R _ZTSSt8bad_cast +0000000c B box_viewer 0000000c T key_repeat 0000000c t unwind_UCB_from_context 0000000d R _ZTSSt9bad_alloc @@ -376,32 +340,34 @@ 0000000e T _Unwind_GetRegionStart 0000000e T _ZN10script_objC1Ev 0000000e T _ZN10script_objC2Ev +0000000e T _ZN19mystery_gift_script22get_section30_value_atEi +0000000e T _ZN7asm_var9set_startEv 0000000e T abort 0000000f d _ZL16LINK_SPI_VERSION 00000010 t ___Z12erase_sectorj_veneer 00000010 t ___Z16copy_ram_to_savePhjj_veneer 00000010 t ___Z16copy_save_to_ramjPhj_veneer 00000010 t ___Z9init_bankv_veneer -00000010 T __sclose 00000010 T _Z13hide_text_boxv -00000010 T _Z13set_text_exitv -00000010 T _Z16exchange_partieshPh 00000010 T _Z17get_tutorial_flagv 00000010 T _ZN10script_var14fill_refrencesEPh 00000010 T _ZN10script_var9set_startEv 00000010 b _ZN12_GLOBAL__N_110fake_mutexE 00000010 b _ZN12_GLOBAL__N_12mxE 00000010 b _ZN12_GLOBAL__N_12mxE -00000010 T _ZN19mystery_gift_script7add_asmEt +00000010 T _ZN7asm_var16get_loc_in_sec30Ev +00000010 T _ZN7xse_var16get_loc_in_sec30Ev 00000010 V _ZNSs4_Rep20_S_empty_rep_storageE 00000010 R _ZTSSt11logic_error 00000010 R _ZTV10script_var -00000010 V _ZTV11textbox_var +00000010 R _ZTV10sprite_var +00000010 R _ZTV11textbox_var +00000010 R _ZTV12movement_var 00000010 R _ZTV7asm_var 00000010 R _ZTV7xse_var +00000010 R _ZTV9music_var 00000010 b _ZZN12_GLOBAL__N_116get_atomic_mutexEvE12atomic_mutex 00000010 T CpuFastFill -00000010 T IRQ_SetHandler 00000010 T key_repeat_mask 00000010 T sbmp16_get_pixel 00000010 T tte_cmd_skip @@ -409,42 +375,26 @@ 00000010 T VBlankIntrDelay 00000011 R _ZTSSt12length_error 00000011 R _ZTSSt12out_of_range -00000011 R _ZTSSt12system_error 00000012 T _ZN11Button_Menu14get_y_from_posEi 00000012 T _ZN11textbox_var8set_textESt17basic_string_viewIDsSt11char_traitsIDsEE 00000012 T _ZN19mystery_gift_script17init_npc_locationEhhh 00000012 T _ZN7Pokemon14get_dex_numberEv 00000012 T _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_ 00000012 T _ZNSt13bad_exceptionD0Ev -00000012 T _ZSt18uncaught_exceptionv -00000012 V _ZTSSt13__ios_failure 00000012 R _ZTSSt13bad_exception -00000012 R _ZTSSt13runtime_error 00000012 T DivSafe 00000014 T __env_lock 00000014 T __env_unlock 00000014 T __malloc_lock 00000014 T __malloc_unlock -00000014 T __sfp_lock_acquire -00000014 T __sfp_lock_release 00000014 T _exit 00000014 T _Z11get_max_expi 00000014 T _Z13show_text_boxv -00000014 T _Z14exchange_boxeshPh 00000014 T _ZN10__cxxabiv111__terminateEPFvvE 00000014 T _ZN10script_var10place_wordEv 00000014 T _ZN11Button_Menu14get_x_from_posEi 00000014 T _ZN13Pokemon_PartyC1Ev 00000014 T _ZN13Pokemon_PartyC2Ev -00000014 T _ZN19mystery_gift_script10faceplayerEv -00000014 T _ZN19mystery_gift_script10killscriptEv -00000014 T _ZN19mystery_gift_script11add_paddingEv -00000014 T _ZN19mystery_gift_script11waitfanfareEv -00000014 T _ZN19mystery_gift_script12waitkeypressEv -00000014 T _ZN19mystery_gift_script3endEv -00000014 T _ZN19mystery_gift_script4lockEv -00000014 T _ZN19mystery_gift_script7releaseEv -00000014 T _ZN19mystery_gift_script7waitmsgEv 00000014 T _ZN7Pokemon10get_is_newEv 00000014 T _ZN7Pokemon19get_nature_from_pidEj 00000014 R _ZTVN9__gnu_cxx20recursive_init_errorE @@ -452,34 +402,24 @@ 00000014 V _ZTVN9__gnu_cxx24__concurrence_wait_errorE 00000014 V _ZTVN9__gnu_cxx26__concurrence_unlock_errorE 00000014 V _ZTVN9__gnu_cxx29__concurrence_broadcast_errorE -00000014 R _ZTVNSt8ios_base7failureB5cxx11E -00000014 R _ZTVNSt8ios_base7failureE 00000014 R _ZTVSt11logic_error 00000014 R _ZTVSt12length_error 00000014 R _ZTVSt12out_of_range -00000014 R _ZTVSt12system_error -00000014 V _ZTVSt13__ios_failure 00000014 R _ZTVSt13bad_exception -00000014 R _ZTVSt13runtime_error -00000014 R _ZTVSt8bad_cast 00000014 R _ZTVSt9bad_alloc 00000014 T free 00000014 T key_repeat_limits -00000014 T malloc +00000014 D list_of_gb_roms 00000014 B memory_section_array 00000014 T raise 00000014 T sbmp16_plot 00000014 r srf.9128 00000016 T _Unwind_GetLanguageSpecificData 00000016 T _Z14write_int_savejm -00000016 T _ZN19mystery_gift_script15calc_checksum32Ev 00000016 W _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv -00000016 R _ZTSNSt8ios_base7failureE 00000016 t selfrel_offset31 00000018 T __gnu_Unwind_ForcedUnwind -00000018 T __libc_lock_acquire 00000018 T __libc_lock_acquire_recursive -00000018 T __libc_lock_release 00000018 T __libc_lock_release_recursive 00000018 t _GLOBAL__sub_I__ZN10__cxxabiv111__terminateEPFvvE 00000018 t _GLOBAL__sub_I__ZSt7nothrow @@ -490,11 +430,17 @@ 00000018 T _ZN10__cxxabiv117__class_type_infoD2Ev 00000018 T _ZN10__cxxabiv120__si_class_type_infoD1Ev 00000018 T _ZN10__cxxabiv120__si_class_type_infoD2Ev -00000018 T _ZN10__cxxabiv121__vmi_class_type_infoD1Ev -00000018 T _ZN10__cxxabiv121__vmi_class_type_infoD2Ev -00000018 t _ZN12_GLOBAL__N_117io_error_categoryD1Ev -00000018 t _ZN12_GLOBAL__N_117io_error_categoryD2Ev 00000018 t _ZN12_GLOBAL__N_1L16init_static_condEv +00000018 T _ZN19mystery_gift_script10faceplayerEv +00000018 T _ZN19mystery_gift_script10killscriptEv +00000018 T _ZN19mystery_gift_script11waitfanfareEv +00000018 T _ZN19mystery_gift_script12waitkeypressEv +00000018 T _ZN19mystery_gift_script15calc_checksum32Ev +00000018 T _ZN19mystery_gift_script3endEv +00000018 T _ZN19mystery_gift_script4lockEv +00000018 T _ZN19mystery_gift_script6waitseEv +00000018 T _ZN19mystery_gift_script7releaseEv +00000018 T _ZN19mystery_gift_script7waitmsgEv 00000018 T _ZN9__gnu_cxx20recursive_init_errorD1Ev 00000018 T _ZN9__gnu_cxx20recursive_init_errorD2Ev 00000018 W _ZN9__gnu_cxx24__concurrence_lock_errorD1Ev @@ -505,41 +451,26 @@ 00000018 W _ZN9__gnu_cxx26__concurrence_unlock_errorD2Ev 00000018 W _ZN9__gnu_cxx29__concurrence_broadcast_errorD1Ev 00000018 W _ZN9__gnu_cxx29__concurrence_broadcast_errorD2Ev -00000018 W _ZNKSt5ctypeIcE8do_widenEPKcS2_Pc 00000018 T _ZNSt12length_errorC1EPKc 00000018 T _ZNSt12length_errorC2EPKc 00000018 T _ZNSt12out_of_rangeC1EPKc 00000018 T _ZNSt12out_of_rangeC2EPKc -00000018 T _ZNSt12system_errorD1Ev -00000018 T _ZNSt12system_errorD2Ev -00000018 T _ZNSt19__iosfail_type_infoD1Ev -00000018 T _ZNSt19__iosfail_type_infoD2Ev -00000018 T _ZNSt8bad_castD1Ev -00000018 T _ZNSt8bad_castD2Ev -00000018 T _ZNSt8ios_base7failureB5cxx11D1Ev -00000018 T _ZNSt8ios_base7failureB5cxx11D2Ev 00000018 T _ZNSt9bad_allocD1Ev 00000018 T _ZNSt9bad_allocD2Ev -00000018 W _ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate -00000018 R _ZTISt19__iosfail_type_info -00000018 R _ZTSSt19__iosfail_type_info 00000018 R EXP_TYPES 00000018 T tte_set_context 00000018 T tte_set_margins -00000019 R _ZTSNSt3_V214error_categoryE 0000001a t _Unwind_GetGR 0000001a t _Unwind_GetGR.constprop.0 0000001a t _Unwind_SetGR 0000001a T _Z16write_short_savejt 0000001a T _ZN11Button_Menu12hide_buttonsEv -0000001a T _ZN19mystery_gift_script4and1Ehh -0000001a W _ZNSt6vectorI6ButtonSaIS0_EED1Ev -0000001a W _ZNSt6vectorI6ButtonSaIS0_EED2Ev -0000001a W _ZNSt6vectorIiSaIiEED1Ev -0000001a W _ZNSt6vectorIiSaIiEED2Ev +0000001a W _ZNSt12_Vector_baseI6ButtonSaIS0_EED1Ev +0000001a W _ZNSt12_Vector_baseI6ButtonSaIS0_EED2Ev +0000001a W _ZNSt12_Vector_baseIiSaIiEED1Ev +0000001a W _ZNSt12_Vector_baseIiSaIiEED2Ev 0000001a T getenv 0000001c T __restore_core_regs -0000001c t _GLOBAL__sub_D_curr_line 0000001c T _Z19initalize_save_datav 0000001c T _Z20get_gender_thresholdib 0000001c T _Z9is_caughti @@ -547,18 +478,10 @@ 0000001c T _ZN13Pokemon_Party15get_simple_pkmnEi 0000001c T _ZN6ButtonC1EP8OBJ_ATTR 0000001c T _ZN6ButtonC2EP8OBJ_ATTR -0000001c T _ZNKSt3_V214error_category10equivalentERKSt10error_codei -0000001c T freopen 0000001c T restore_core_regs 0000001c T tte_erase_rect 0000001c T tte_set_color_attrs -0000001d R _ZTSNSt8ios_base7failureB5cxx11E -0000001e T __gnu_Unwind_Resume_or_Rethrow 0000001e T _Z15read_short_savej -0000001e T _ZN19mystery_gift_script4add3Ehhh -0000001e T _ZN19mystery_gift_script4ldr1Ehhh -0000001e T _ZN19mystery_gift_script4ldr2Ehhh -0000001e T _ZN19mystery_gift_script4str1Ehhh 0000001e T _ZN6ButtonC1EP8OBJ_ATTRS1_i 0000001e T _ZN6ButtonC2EP8OBJ_ATTRS1_i 0000001e T obj_copy @@ -566,23 +489,18 @@ 00000020 T __aeabi_uidivmod 00000020 T __cxa_call_terminate 00000020 T __getreent +00000020 T __gnu_Unwind_Resume_or_Rethrow +00000020 t _GLOBAL__sub_D_curr_line 00000020 t _GLOBAL__sub_I_dex_array 00000020 T _Z10set_caughti 00000020 T _Z12get_rand_u16v 00000020 T _Z12get_rand_u32v 00000020 T _Z12pokedex_showv +00000020 T _Z12show_textboxv 00000020 T _Z15rand_next_framev 00000020 T _ZN10__cxxabiv117__class_type_infoD0Ev 00000020 T _ZN10__cxxabiv120__si_class_type_infoD0Ev -00000020 T _ZN10__cxxabiv121__vmi_class_type_infoD0Ev -00000020 t _ZN12_GLOBAL__N_117io_error_categoryD0Ev 00000020 t _ZN12_GLOBAL__N_1L4initEv -00000020 T _ZN19mystery_gift_script3popEt -00000020 T _ZN19mystery_gift_script4add2Ehh -00000020 T _ZN19mystery_gift_script4ldr3Ehh -00000020 T _ZN19mystery_gift_script4mov1Ehh -00000020 T _ZN19mystery_gift_script4pushEt -00000020 T _ZN19mystery_gift_script8add_wordEj 00000020 T _ZN3Dex4showEv 00000020 T _ZN8rom_data16is_ruby_sapphireEv 00000020 T _ZN9__gnu_cxx20recursive_init_errorD0Ev @@ -593,42 +511,29 @@ 00000020 W _ZN9__gnu_cxx30__throw_concurrence_lock_errorEv 00000020 W _ZN9__gnu_cxx32__throw_concurrence_unlock_errorEv 00000020 W _ZN9__gnu_cxx35__throw_concurrence_broadcast_errorEv -00000020 T _ZNSt12system_errorD0Ev -00000020 T _ZNSt19__iosfail_type_infoD0Ev -00000020 T _ZNSt8bad_castD0Ev -00000020 T _ZNSt8ios_base7failureB5cxx11D0Ev 00000020 T _ZNSt9bad_allocD0Ev -00000020 T _ZSt16__throw_bad_castv +00000020 T _ZSt17__throw_bad_allocv 00000020 R _ZTSN10__cxxabiv115__forced_unwindE 00000020 R frame_one_pal 00000020 R frame_two_pal -00000020 t stdio_exit_handler 00000020 T tte_set_color 00000022 T _Z14reverse_endianPhj -00000022 T _ZN19mystery_gift_script2bxEh 00000022 R _ZTSN10__cxxabiv117__class_type_infoE 00000022 B save_data_array 00000023 R _ZTSN9__gnu_cxx20recursive_init_errorE 00000024 T __aeabi_ui2d 00000024 T __floatunsidf 00000024 t _GLOBAL__sub_I_curr_line -00000024 T _ZN19mystery_gift_script11add_commandEi -00000024 T _ZN19mystery_gift_script4add5Ehh -00000024 T _ZN19mystery_gift_script7callstdEh +00000024 T _Z12hide_textboxv 00000024 T _ZN7Pokemon16rand_reverse_modEhh -00000024 T _ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE -00000024 T _ZNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE 00000024 R _ZTSN10__cxxabiv119__foreign_exceptionE 00000024 B curr_line 00000024 T key_wait_till_hit 00000024 T strtoul 00000024 T tte_erase_screen 00000025 R _ZTSN10__cxxabiv120__si_class_type_infoE -00000025 r _ZTSN12_GLOBAL__N_117io_error_categoryE -00000026 T _Z18delay_cycles_untilmPVhhh -00000026 T _Z21exchange_remove_arrayhP18Simplified_Pokemon 00000026 t _ZL15eh_globals_dtorPv -00000026 R _ZTSN10__cxxabiv121__vmi_class_type_infoE +00000026 T malloc 00000026 T srf_pal_copy 00000027 V _ZTSN9__gnu_cxx24__concurrence_lock_errorE 00000027 V _ZTSN9__gnu_cxx24__concurrence_wait_errorE @@ -639,12 +544,12 @@ 00000028 t __gnu_unwind_get_pr_addr 00000028 B __malloc_current_mallinfo 00000028 t _GLOBAL__sub_D__ZN17__eh_globals_init7_S_initE +00000028 T _Z18delay_cycles_untilmPVhhh +00000028 T _ZN19mystery_gift_script10fadeScreenEh +00000028 T _ZN19mystery_gift_script11add_commandEi +00000028 T _ZN19mystery_gift_script7callstdEh 00000028 T _ZN6Button4showEv 00000028 T _ZN7asm_var13add_referenceEv -00000028 W _ZNSt13__ios_failureD1Ev -00000028 W _ZNSt13__ios_failureD2Ev -00000028 W _ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate -00000028 r _ZTVN12_GLOBAL__N_117io_error_categoryE 00000028 T obj_hide_multi 00000028 T obj_unhide_multi 00000028 T tte_erase_line @@ -660,25 +565,23 @@ 0000002a T _Unwind_RaiseException 0000002a T _Unwind_Resume 0000002a T _Unwind_Resume_or_Rethrow +0000002a T _ZN7asm_var13add_referenceEi 0000002a T _ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE -0000002a T _ZNKSt19__iosfail_type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv 0000002c T _Z12pokedex_hidev 0000002c T _Z16background_framev -0000002c T _ZN19mystery_gift_script13virtualmsgboxEj +0000002c T _Z17set_textbox_smallv 0000002c T _ZN6Button4hideEv 0000002c T _ZN8rom_data8is_hoennEv -0000002c T _ZSt24__is_ios_failure_handlerPKN10__cxxabiv117__class_type_infoE 0000002c V _ZTSN9__gnu_cxx29__concurrence_broadcast_errorE 0000002c R _ZTVN10__cxxabiv117__class_type_infoE 0000002c R _ZTVN10__cxxabiv120__si_class_type_infoE -0000002c R _ZTVN10__cxxabiv121__vmi_class_type_infoE -0000002c R _ZTVSt19__iosfail_type_info 0000002c T irq_set_master 0000002c T sbmp16_floodfill 0000002c T se_erase 0000002e T _Z16text_next_obj_id10script_obj 0000002e T sbmp16_hline 00000030 T __cxa_allocate_exception +00000030 t _GLOBAL__sub_D_delay_counter 00000030 t _GLOBAL__sub_D_linkSPI 00000030 t _GLOBAL__sub_I__ZN17__eh_globals_init7_S_initE 00000030 T _Z21load_custom_save_datav @@ -687,8 +590,6 @@ 00000030 T _ZN3Dex4hideEv 00000030 T _ZN3DexC1EP8OBJ_ATTRS1_S1_ 00000030 T _ZN3DexC2EP8OBJ_ATTRS1_S1_ -00000030 T _ZN7asm_var14fill_refrencesEPh -00000030 W _ZNSt13__ios_failureD0Ev 00000030 T _ZSt19__throw_logic_errorPKc 00000030 T _ZSt20__throw_length_errorPKc 00000030 T _ZSt20__throw_out_of_rangePKc @@ -697,82 +598,75 @@ 00000032 T _ZN7Pokemon15get_simple_pkmnEv 00000032 t next_unwind_byte 00000034 T __cxa_throw -00000034 T __get_handle -00000034 T __sread 00000034 T _ZN10script_objC1Eii 00000034 T _ZN10script_objC2Eii -00000034 T _ZNKSt3_V214error_category10equivalentEiRKSt15error_condition -00000036 T _ZN19mystery_gift_script4mov3Ehh +00000034 T _ZN19mystery_gift_script13virtualmsgboxEj 00000036 T _ZN7Pokemon12copy_from_toEPhS0_ib 00000036 T memset16 00000038 r __irq_senders +00000038 t _ZN10__cxxabiv1L24__is_gxx_exception_classEPc 00000038 T _ZN10script_objC1Eiii 00000038 T _ZN10script_objC2Eiii 00000038 T _ZN11Button_MenuC1Eiiiib 00000038 T _ZN11Button_MenuC2Eiiiib -00000038 T _ZN19mystery_gift_script7fanfareEt -00000038 T _ZN19mystery_gift_script7setflagEt -00000038 T _ZN19mystery_gift_script7specialEt -00000038 T _ZN19mystery_gift_script9checkflagEt 00000038 T _ZN6Button13set_highlightEb -00000038 B IRQ_VectorTable 00000038 T memcpy32 00000038 T sbmp16_vline 00000038 T strtol 00000038 T tte_cmd_next -0000003a t _ZN10__cxxabiv1L24__is_gxx_exception_classEPc -0000003c T __sinit +0000003a T _ZN7xse_var13add_referenceEi 0000003c t _GLOBAL__sub_I_linkSPI +0000003c T _Z17set_textbox_largev +0000003c T _ZN10script_varC1ERSt6vectorIPS_SaIS1_EEPi +0000003c T _ZN10script_varC2ERSt6vectorIPS_SaIS1_EEPi +0000003c T _ZN19mystery_gift_script11doanimationEt +0000003c T _ZN19mystery_gift_script12waitmovementEt +0000003c T _ZN19mystery_gift_script17setMapLayoutIndexEt +0000003c T _ZN19mystery_gift_script6playseEt +0000003c T _ZN19mystery_gift_script7fanfareEt +0000003c T _ZN19mystery_gift_script7setflagEt +0000003c T _ZN19mystery_gift_script7specialEt +0000003c T _ZN19mystery_gift_script9checkflagEt 0000003c T _ZN7Pokemon20get_rand_gender_byteEhh -0000003c T _ZN7xse_var13add_referenceEi +0000003c T _ZN7xse_var13add_referenceEiPS_ 0000003c T _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE 0000003c T _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv -0000003c T _ZNKSt3_V214error_category10_M_messageB5cxx11Ei -0000003e T _ZN7xse_var13add_referenceEiPS_ 0000003e T memcpy16 0000003e t unwind_phase2 00000040 T _Z15write_byte_savejh -00000040 W _Z19LINK_SPI_ISR_SERIALv -00000040 T _ZN10script_varC1ERSt6vectorIPS_SaIS1_EEPi -00000040 T _ZN10script_varC2ERSt6vectorIPS_SaIS1_EEPi +00000040 T _ZN10script_varC1EjRSt6vectorIPS_SaIS1_EEPi +00000040 T _ZN10script_varC2EjRSt6vectorIPS_SaIS1_EEPi 00000040 T _ZN13Pokemon_Party12load_payloadEv -00000040 T _ZN19mystery_gift_script13virtualgotoifEhj 00000040 W _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERjj 00000040 T _ZSt13get_terminatev 00000040 T _ZSt14get_unexpectedv 00000040 T _ZSt15get_new_handlerv -00000040 t cleanup_stdio 00000040 R GENDER_THRESHOLDS 00000040 T se_drawg_w8h16 00000040 T tte_set_colors 00000042 T _Unwind_VRS_Get 00000042 T _Unwind_VRS_Set -00000042 T _ZN13Pokemon_Party13continue_linkEv -00000044 T __sseek 00000044 t _GLOBAL__sub_I_delay_counter 00000044 t _ZL21base_of_encoded_valuehP15_Unwind_Context -00000044 T _ZN10script_varC1EjRSt6vectorIPS_SaIS1_EEPi -00000044 T _ZN10script_varC2EjRSt6vectorIPS_SaIS1_EEPi 00000044 T _ZN11Button_Menu12show_buttonsEv +00000044 T _ZN19mystery_gift_script10spritefaceEth +00000044 T _ZN19mystery_gift_script12spritebehaveEth +00000044 T _ZN19mystery_gift_script3swiEh +00000044 T _ZN19mystery_gift_script7add_asmEt 00000044 T irq_disable 00000044 T irq_init -00000046 T _ZN13Pokemon_Party10start_linkEv 00000046 T _Znwj 00000048 T __aeabi_f2d 00000048 T __extendsfdf2 00000048 B __tte_main_context -00000048 t _GLOBAL__sub_D_delay_counter 00000048 T _Z14read_byte_savej -00000048 T _Z22write_custom_save_datav 00000048 T _Z24compare_map_and_npc_dataiii -00000048 T _ZN19mystery_gift_script17setvirtualaddressEj -00000048 T _ZN19mystery_gift_script4callEj -00000048 T _ZN19mystery_gift_script6addvarEtt -00000048 T _ZN19mystery_gift_script6setvarEtt -00000048 T _ZN19mystery_gift_script6subvarEtt -00000048 T _ZN19mystery_gift_script7compareEtt +00000048 T _ZN13Pokemon_Party10start_linkEv +00000048 T _ZN19mystery_gift_script13virtualgotoifEhj +00000048 T _ZN6Button12set_locationEii 00000048 T _ZN7Pokemon11insert_dataEPhS0_S0_S0_ -00000048 t _ZNK12_GLOBAL__N_117io_error_category7messageB5cxx11Ei +00000048 T _ZN7PokemonC1Ev +00000048 T _ZN7PokemonC2Ev 00000048 B dex_sprites 00000048 B game_select_def 00000048 B game_select_jpn @@ -783,194 +677,185 @@ 00000048 T oam_init 00000048 B yes_no_menu 0000004a T __gnu_Unwind_Resume -0000004a T _ZN6Button12set_locationEii -0000004a W _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEjc 0000004a T memcmp -0000004c T __swrite -0000004c T _fwalk_sglue 0000004c T _Z14can_learn_moveii 0000004c T _Z15load_backgroundv +0000004c T _Z22write_custom_save_datav +0000004c r C.60.0 0000004c T memset32 -0000004e T _read_r -0000004e T _write_r -0000004e T _ZN7PokemonC1Ev -0000004e T _ZN7PokemonC2Ev -0000004e W _ZNSo6sentryD1Ev -0000004e W _ZNSo6sentryD2Ev -0000004e t _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag.isra.0 00000050 T __cxa_get_globals 00000050 T __cxa_init_primary_exception 00000050 T _Z14get_gen_3_chartb 00000050 T _ZN10script_obj8get_textB5cxx11Ev 00000050 T _ZN19mystery_gift_script10calc_crc16Ev -00000050 W _ZNSo6sentryC1ERSo -00000050 W _ZNSo6sentryC2ERSo +00000050 T _ZN19mystery_gift_script11loadpointerEhj +00000050 T _ZN19mystery_gift_script17setvirtualaddressEj +00000050 T _ZN19mystery_gift_script17writebytetooffsetEhj +00000050 T _ZN19mystery_gift_script3popEt +00000050 T _ZN19mystery_gift_script4add2Ehh +00000050 T _ZN19mystery_gift_script4and1Ehh +00000050 T _ZN19mystery_gift_script4callEj +00000050 T _ZN19mystery_gift_script4ldr3Ehh +00000050 T _ZN19mystery_gift_script4mov1Ehh +00000050 T _ZN19mystery_gift_script4pushEt +00000050 T _ZN19mystery_gift_script6addvarEtt +00000050 T _ZN19mystery_gift_script6setvarEtt +00000050 T _ZN19mystery_gift_script6subvarEtt +00000050 T _ZN19mystery_gift_script7callASMEj +00000050 T _ZN19mystery_gift_script7compareEtt 00000050 T tte_putc 00000052 T __libc_init_array 00000052 T _ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj 00000054 T __aeabi_d2uiz 00000054 T __fixunsdfsi 00000054 W _sbrk_r -00000054 t _Z10write_calliPhRij.part.0 00000054 T _Z11load_spriteP8OBJ_ATTRPKjiRjjiij 00000054 T _Z18first_load_messagev 00000054 T _Z9read_flagt +00000054 T _ZN19mystery_gift_script11msgboxMacroEj +00000054 T _ZN19mystery_gift_script2bxEh +00000054 T _ZN19mystery_gift_script4add3Ehhh +00000054 T _ZN19mystery_gift_script4add5Ehh +00000054 T _ZN19mystery_gift_script4ldr1Ehhh +00000054 T _ZN19mystery_gift_script4ldr2Ehhh +00000054 T _ZN19mystery_gift_script4str1Ehhh +00000054 T _ZN3Dex12set_locationEii 00000054 T key_poll 00000056 t _ZL23__gxx_exception_cleanup19_Unwind_Reason_CodeP21_Unwind_Control_Block -00000058 T __gnu_Unwind_RaiseException 00000058 T _Z23load_textbox_backgroundv -00000058 r _ZL11ENG_RUBY_v0 -00000058 r _ZL11ENG_RUBY_v1 -00000058 r _ZL11ENG_RUBY_v2 -00000058 r _ZL14ENG_EMERALD_v0 -00000058 r _ZL14ENG_FIRERED_v0 -00000058 r _ZL14ENG_FIRERED_v1 -00000058 r _ZL15ENG_SAPPHIRE_v0 -00000058 r _ZL15ENG_SAPPHIRE_v1 -00000058 r _ZL15ENG_SAPPHIRE_v2 -00000058 r _ZL16ENG_LEAFGREEN_v0 -00000058 r _ZL16ENG_LEAFGREEN_v1 -00000058 T _ZN11Button_Menu10add_buttonE6Buttoni -00000058 T _ZN19mystery_gift_script10four_alignEv -00000058 W _ZNSs4_Rep8_M_cloneERKSaIcEj +00000058 T _ZN12movement_var15insert_movementEPh 00000058 W _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcj -00000058 B curr_rom -0000005a T _lseek_r +0000005a T __gnu_Unwind_RaiseException 0000005a T _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_ 0000005c T _Z12pokedex_initv 0000005c T _Z23load_opening_backgroundv +0000005c T _ZN19mystery_gift_script4strhEhhh 0000005c T _ZNSt11logic_errorD1Ev 0000005c T _ZNSt11logic_errorD2Ev 0000005c T _ZNSt12length_errorD1Ev 0000005c T _ZNSt12length_errorD2Ev 0000005c T _ZNSt12out_of_rangeD1Ev 0000005c T _ZNSt12out_of_rangeD2Ev -0000005c T _ZNSt13runtime_errorD1Ev -0000005c T _ZNSt13runtime_errorD2Ev -0000005c T _ZNSt8ios_base7failureD1Ev -0000005c T _ZNSt8ios_base7failureD2Ev 0000005e T _raise_r -0000005e T _ZN3Dex12set_locationEii 0000005e t restore_non_core_regs 00000060 T __aeabi_l2d 00000060 T __floatdidf -00000060 T _ZN11textbox_var11insert_textEPh -00000060 T _ZN8rom_data8load_romEv -00000060 W _ZNSs4_Rep9_S_createEjjRKSaIcE +00000060 T _ZN19mystery_gift_scriptC1Ev +00000060 T _ZN19mystery_gift_scriptC2Ev 00000060 T _ZNSt11logic_errorD0Ev 00000060 T _ZNSt12length_errorD0Ev 00000060 T _ZNSt12out_of_rangeD0Ev -00000060 T _ZNSt13runtime_errorD0Ev -00000060 T _ZNSt8ios_base7failureD0Ev +00000060 W _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEj 00000060 T strlen 00000062 T __cxa_begin_cleanup -00000062 T _ZNKSt5ctypeIcE13_M_widen_initEv -00000062 W _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEj 00000064 t _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj 00000064 t _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj 00000064 T _Z20initalization_scriptv -00000064 T _ZN19mystery_gift_scriptC1Ev -00000064 T _ZN19mystery_gift_scriptC2Ev -00000064 T _ZSt19__throw_ios_failurePKc -00000068 T __release_handle +00000064 T _ZN19mystery_gift_script13applymovementEtj +00000064 T _ZN19mystery_gift_script4mov3Ehh +00000064 T _ZN8rom_data8load_romEv +00000064 W _ZNSs4_Rep9_S_createEjjRKSaIcE 00000068 T _Z14get_rand_rangejj -00000068 T IRQ_Init +00000068 T _ZN19mystery_gift_script18changePaletteMacroEhh +00000068 T _ZN19mystery_gift_script8add_wordEj 0000006a T sbmp16_rect 0000006c t _ZL29write_direct_single_byte_savejh -0000006c T _ZN19mystery_gift_script8copybyteEjj 0000006c T se_drawg 0000006c T se_drawg_s -0000006e T _fflush_r -0000006e T _ZN8rom_data11fill_valuesEPK8ROM_DATA -0000006e T _ZSt21__destroy_ios_failurePv +0000006c T strncmp 00000070 T __cxa_rethrow 00000070 T _ZN7xse_var14fill_refrencesEPh 00000072 T __gnu_end_cleanup 00000072 t search_EIT_table 00000074 T __aeabi_ul2d 00000074 T __floatundidf -00000074 T _Z17global_next_framev 00000074 W _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_ -00000074 T _ZNSt8ios_base7failureC1ERKSs -00000074 T _ZNSt8ios_base7failureC2ERKSs 00000078 T __cxa_begin_catch -00000078 T __gnu_Unwind_Backtrace 00000078 B __isr_table -00000078 T _Z10write_calliPhRij -00000078 T _ZNSt12__cow_stringC1EPKcj -00000078 T _ZNSt12__cow_stringC2EPKcj +00000078 T _ZN19mystery_gift_script11setMetaTileEtttt +00000078 T _ZN19mystery_gift_script8copybyteEjj +00000078 T _ZN7asm_var14fill_refrencesEPh 00000078 T irq_add 00000078 B party_sprites -00000078 T strncmp -0000007c T __alloc_handle 0000007c T _ZN13Pokemon_Party18get_converted_pkmnEi +0000007c T _ZN9music_var9add_trackESt6vectorIhSaIhEE 0000007c T srf_get_ptr 0000007e T _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE 00000080 T __cxa_guard_release +00000080 t _GLOBAL__sub_D_last_error +00000080 T _Z16init_text_enginev 00000080 t _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.isra.0 -00000080 R dotab_stdnull -00000084 t _GLOBAL__sub_D_last_error -00000084 t _ZN12_GLOBAL__N_14pool8allocateEj.constprop.0 +00000084 r _ZL11ENG_RUBY_v0 +00000084 r _ZL11ENG_RUBY_v1 +00000084 r _ZL11ENG_RUBY_v2 +00000084 r _ZL14ENG_EMERALD_v0 +00000084 r _ZL14ENG_FIRERED_v0 +00000084 r _ZL14ENG_FIRERED_v1 +00000084 r _ZL15ENG_SAPPHIRE_v0 +00000084 r _ZL15ENG_SAPPHIRE_v1 +00000084 r _ZL15ENG_SAPPHIRE_v2 +00000084 r _ZL16ENG_LEAFGREEN_v0 +00000084 r _ZL16ENG_LEAFGREEN_v1 +00000086 T _ZN8rom_data11fill_valuesEPK8ROM_DATA 00000088 T _Z9init_bankv -00000088 T IRQ_Disable +00000088 t _ZN12_GLOBAL__N_14pool8allocateEj.constprop.0 +00000088 B curr_rom +0000008c T __gnu_Unwind_Backtrace 0000008c T _ZNSt11logic_errorC1EPKc 0000008c T _ZNSt11logic_errorC2EPKc -0000008c B _ZSt4cout -0000008c D devoptab_list -0000008c T IRQ_Enable 00000090 B dex_array -00000090 T memcpy 00000090 T sbmp16_frame 00000092 T __cxa_end_catch +00000092 T _ZN7Pokemon21generate_pid_iv_matchEhhPh 00000094 T _findenv_r 00000094 t _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKSsj 00000094 t _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKSsj 00000094 t _GLOBAL__sub_I_last_error 00000094 t _ZL17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info -00000094 T _ZN7Pokemon21generate_pid_iv_matchEhhPh 00000094 T tte_init_base -00000096 T _open_r -00000098 T FindDevice 00000098 t get_eit_entry +00000098 T memset 0000009c T _Z29update_memory_buffer_checksumb 0000009c T _ZN9__gnu_cxx18__exchange_and_addEPVii -000000a0 T _Z5setupv +0000009c W _ZNSt6vectorIiSaIiEE17_M_realloc_appendIJRKiEEEvDpOT_ +0000009c W _ZNSt6vectorIjSaIjEE17_M_realloc_appendIJjEEEvDpOT_ +0000009c W _ZNSt6vectorIP10script_varSaIS1_EE17_M_realloc_appendIJS1_EEEvDpOT_ 000000a0 T isr_master -000000a2 T __sflags -000000a8 t _ZN12_GLOBAL__N_14pool4freeEPv.constprop.0 +000000a4 T _ZN11textbox_var19insert_virtual_textEPh +000000a8 r _ZL10ENG_SILVER +000000a8 r _ZL10ENG_YELLOW +000000a8 r _ZL11ENG_CRYSTAL +000000a8 r _ZL12ENG_RED_BLUE +000000a8 r _ZL8ENG_GOLD 000000ac T _malloc_trim_r -000000ac T _Z15game_load_errorv -000000ae T memset +000000ac t _ZN12_GLOBAL__N_14pool4freeEPv.constprop.0 +000000ae T memcpy +000000b0 T _Z15game_load_errorv +000000b4 W _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEjjjc 000000b4 W _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_replace_coldEPcjPKcjj 000000b4 T irq_delete 000000b4 T utf8_decode_char -000000b6 T _close_r 000000b6 W _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEjjPKcj -000000b8 T _ZSt23__construct_ios_failurePvPKc +000000b8 T _ZN11textbox_var11insert_textEPh 000000bc T _Z12erase_sectorj -000000bc T _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_ -000000bc W _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEjjjc -000000bc T memmove 000000bc T sbmp16_line 000000bf R gen_1_index_array 000000c0 T _Z26initalize_memory_locationsv -000000c4 T _ZN13Pokemon_Party22fill_simple_pkmn_arrayEv +000000c8 T _ZN10sprite_var18insert_sprite_dataEPhPKjjPKt 000000c8 T srf_init 000000c8 T strchr +000000ca T memmove 000000cc T __cxa_type_match 000000d4 T tte_get_text_size -000000d6 T _fclose_r 000000d6 T _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE 000000d8 W _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEjjPKcj -000000d8 t unwind_phase2_forced -000000e4 W _ZNSo5flushEv -000000ea W _ZNSo3putEc +000000dc T _ZN13Pokemon_Party22fill_simple_pkmn_arrayEv +000000e8 t unwind_phase2_forced 000000ec T tte_write 000000f0 B _Z9out_arrayB5cxx11 -000000f0 B dialogue -000000f4 W _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_ -000000f4 W _ZNSt6vectorIjSaIjEE17_M_realloc_insertIJjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_ -000000f4 W _ZNSt6vectorIP10script_varSaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_ +000000f4 T _ZN7Pokemon12convert_textEPhiii +000000f8 B dialogue +000000fa T __cxa_call_unexpected 000000fc T __udivsi3 000000fc R EVOLUTIONS 000000fc R EXP_MAX @@ -980,46 +865,36 @@ 000000fc R NUM_ABILITIES 000000fc R POWER_POINTS 00000101 R _ctype_ -00000102 T __cxa_call_unexpected 00000104 t _ZL28read_encoded_value_with_basehjPKhPj -00000104 T _ZN7Pokemon12convert_textEPhiii 00000108 T _ZN7Pokemon20generate_pid_save_ivEhhPh -0000010c T _Z16copy_ram_to_savePhjj -00000114 T _Z16init_text_enginev +00000110 T _Z16copy_ram_to_savePhjj +00000114 T _Z17global_next_framev 00000114 T sbmp16_floodfill_internal 00000118 T _Z16copy_save_to_ramjPhj -0000011a W _ZNSt12system_errorC1ESt10error_codePKc -0000011a W _ZNSt12system_errorC2ESt10error_codePKc -00000120 t _GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv 00000120 D _impure_data -00000120 T _Z13load_graphicsv -00000124 T _Z15is_save_correctPhjj +00000120 T _ZN19mystery_gift_script17changeSpriteMacroEhj 00000126 T _ZN11Button_Menu16organize_buttonsEv -00000128 T _Z5printNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE -00000128 t global_stdio_init.part.0 +00000128 T _memalign_r 00000128 T irq_set 0000012c T __cxa_guard_acquire +0000012c t _GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv 00000130 T __divsi3 -00000138 T main -0000013c t _strtol_l.part.0 -00000144 t _strtoul_l.isra.0 -00000148 T _Z17print_mem_sectionv +00000130 T _Z15is_save_correctPhjj +0000013c T _ZN11Button_Menu10add_buttonE6Buttoni 00000148 T sbmp16_blit -0000014c T _Z9test_mainv +0000014c W _ZNSt6vectorIS_IhSaIhEESaIS1_EE17_M_realloc_appendIJRKS1_EEEvDpOT_ 00000150 T _Z21populate_lang_buttonsv +00000154 t _strtoul_l.isra.0 00000164 T tte_init_se 00000168 B __sf -00000178 W _ZNSo9_M_insertIlEERSoT_ -00000184 W _ZNSt6vectorI6ButtonSaIS0_EE17_M_realloc_insertIJRKS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_ -00000186 T __sflush_r -0000018c T _Z17populate_dialoguev -0000018c T _ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE -000001b8 T _Z21load_temp_box_sprites13Pokemon_Party -000001cc T _Z20load_eternal_spritesv -000001d0 T _Z18handleIncomingBytehPhS_P6GB_ROMP18Simplified_Pokemon -000001d8 T _free_r +00000168 T _Z17print_mem_sectionv +0000017c T _Z13load_graphicsv +000001a4 T _Z17populate_dialoguev +000001b0 T _ZN9music_var17insert_music_dataEPhhhhj +000001c4 T main +000001dc T _Z21load_temp_box_sprites13Pokemon_Party 000001dc T _ZN7Pokemon19alocate_data_chunksEPhS0_S0_S0_ -000001fa T _freopen_r +000001f4 T _free_r 00000200 R gen_1_Eng_char_array 00000200 R gen_1_FreGer_char_array 00000200 R gen_1_ItaSpa_char_array @@ -1032,49 +907,46 @@ 00000200 R gen_3_Jpn_char_array 0000020c T __aeabi_ddiv 0000020c T __divdf3 +00000224 T _Z14inject_mysteryR13Pokemon_Party 00000224 T strcmp -00000248 T _ZN7Pokemon9load_dataEiPhii -0000026c T _Z14inject_mysteryR13Pokemon_Party -00000270 T _Z15run_conditionali -0000027c T _Z7creditsv +0000022c T _Z20load_eternal_spritesv +00000250 T _ZN7Pokemon9load_dataEiPhii +0000025c t _strtol_l.part.0 00000280 R EVENT_PKMN 0000028c T _ZN11Button_Menu11button_mainEv 00000290 T __aeabi_dmul 00000290 T __muldf3 -000002a0 B payload_storage -000002b4 T _Unwind_VRS_Pop -000002c4 W _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i -000002dc T _ZN7Pokemon12set_to_eventEv -000002dc T _ZN8rom_data14print_rom_infoEv -000002e8 t __gnu_unwind_pr_common +000002a4 T _ZN8rom_data14print_rom_infoEv +000002a8 T _Z15run_conditionali +000002cc t __gnu_unwind_pr_common +000002e0 T _ZN7Pokemon12set_to_eventEv +000002e4 T _Unwind_VRS_Pop +0000030c T __gnu_unwind_execute 00000310 T __adddf3 00000310 T __aeabi_dadd -00000310 T __gnu_unwind_execute 00000314 T __aeabi_dsub 00000314 T __subdf3 -00000364 t _GLOBAL__sub_I_obj_buffer -00000380 T _Z21populate_game_buttonsv -00000400 B internal_io +0000037c t _GLOBAL__sub_I_obj_buffer +0000037c T _Z21populate_game_buttonsv +00000388 T _Z7creditsv 00000400 B obj_buffer 00000408 D __malloc_av_ -0000042c T _Z9text_loopv 00000444 T _Z17load_temp_spritesi +0000044e D gen2_debug_box_data 00000454 T tte_cmd_default -00000460 T _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE -00000490 T __gxx_personality_v0 -000004a4 T _Z12pokedex_loopv -00000558 T _malloc_r -000005f4 T _ZN7Pokemon20convert_to_gen_threeEbb -00000690 B party_data -000006a8 T _ZN8Box_Menu8box_mainE13Pokemon_Party +00000462 D gen1_debug_box_data +00000468 T _Z12pokedex_loopv +000004ee T __gxx_personality_v0 +00000504 T _Z9text_loopi +00000588 T _malloc_r +000005bc T _ZN8Box_Menu8box_mainE13Pokemon_Party +00000618 T _ZN7Pokemon20convert_to_gen_threeEbb +000006c0 B party_data 000007e0 B NAMES -00000870 B script +000008dc B script 00000bd0 R JPN_NAMES -00000bdc T _Z4loopPhS_P6GB_ROMP18Simplified_Pokemon -00000c64 T _Z16generate_payload6GB_ROMb 00001000 B global_memory_buffer -00001000 d handles -000011f4 T _ZN19mystery_gift_script12build_scriptER13Pokemon_Party 000011f8 t _GLOBAL__sub_I_EXP_TYPES 00001f80 R MOVESETS -00002698 T _Z15populate_scriptv +00002acc T _Z15populate_scriptv +0000447e T _ZN19mystery_gift_script12build_scriptER13Pokemon_Party diff --git a/graphics/button_blank_left.grit b/graphics/button_blank_left.grit new file mode 100644 index 0000000..aa1971c --- /dev/null +++ b/graphics/button_blank_left.grit @@ -0,0 +1,3 @@ +# +# Button : 4bpp, not compressed. Pallet 2, copy from 32 to 48. +-gB4 -ps32 -pe48 \ No newline at end of file diff --git a/graphics/button_blank_left.png b/graphics/button_blank_left.png new file mode 100644 index 0000000..52091f7 Binary files /dev/null and b/graphics/button_blank_left.png differ diff --git a/include/button_handler.h b/include/button_handler.h index 4e027b3..d4ce3ef 100644 --- a/include/button_handler.h +++ b/include/button_handler.h @@ -6,8 +6,9 @@ class Button { public: + Button(); Button(OBJ_ATTR *L, OBJ_ATTR *R, int nLeft_button_width); // wide buttons - Button(OBJ_ATTR *B); // short button + Button(OBJ_ATTR *B); // short button bool isWide; void set_location(int x, int y); void set_highlight(bool highlight); diff --git a/include/debug_mode.h b/include/debug_mode.h index 96ff3d0..848d335 100644 --- a/include/debug_mode.h +++ b/include/debug_mode.h @@ -10,8 +10,8 @@ #define DONT_REMOVE_PKMN false #define SHOW_INVALID_PKMN false -#define DEBUG_GAME RUBY_ID -#define DEBUG_VERS VERS_1_1 +#define DEBUG_GAME EMERALD_ID +#define DEBUG_VERS VERS_1_0 #define DEBUG_LANG LANG_ENG #define ENABLE_MATCH_PID true diff --git a/include/gb_rom_values/base_gb_rom_struct.h b/include/gb_rom_values/base_gb_rom_struct.h index b89d7dc..b3aecd3 100644 --- a/include/gb_rom_values/base_gb_rom_struct.h +++ b/include/gb_rom_values/base_gb_rom_struct.h @@ -8,7 +8,7 @@ typedef unsigned int u32, word, uint, eint; typedef unsigned long long u64; #define PAYLOAD_SIZE 672 -#define NUM_PAYLOADS 5 +#define NUM_GB_ROMS 5 #define GB_TILE_WIDTH 20 diff --git a/include/main_menu.h b/include/main_menu.h index 4d52ee2..989a011 100644 --- a/include/main_menu.h +++ b/include/main_menu.h @@ -9,7 +9,7 @@ #define BTN_MAIN_MENU 0 #define BTN_TRANSFER 1 #define BTN_POKEDEX 2 -#define BTN_LANGUAGE 3 +#define BTN_EVENTS 3 #define BTN_CREDITS 4 #define BUTTON_CANCEL -1 diff --git a/include/pokemon_party.h b/include/pokemon_party.h index e292c9f..8d8f467 100644 --- a/include/pokemon_party.h +++ b/include/pokemon_party.h @@ -17,7 +17,7 @@ public: void set_game(int nGame); void set_lang(int nLang); int get_lang(); - bool load_payload(); + bool load_gb_rom(); GB_ROM curr_gb_rom; void show_sprites(); Simplified_Pokemon simple_pkmn_array[30]; @@ -26,7 +26,7 @@ public: bool get_contains_mythical(); void set_mythic_stabilization(bool stabilize); bool contains_valid = false; - + int get_game_gen(); private: byte box_data_array[0x462]; diff --git a/include/save_data_manager.h b/include/save_data_manager.h index d326308..faee9ac 100644 --- a/include/save_data_manager.h +++ b/include/save_data_manager.h @@ -29,4 +29,5 @@ int get_def_lang_num(); bool get_tutorial_flag(); void set_tutorial_flag(bool value); void initalize_save_data(); +int get_dex_completion(int gen, bool include_mythicals); #endif diff --git a/include/script_array.h b/include/script_array.h index 8853a67..4480a60 100644 --- a/include/script_array.h +++ b/include/script_array.h @@ -30,37 +30,42 @@ #define DIA_MG_OTHER_EVENT 21 #define DIA_PKMN_TO_COLLECT 22 #define DIA_NO_VALID_PKMN 23 -#define DIA_WHAT_GAME 24 -#define DIA_WHAT_LANG 25 +#define DIA_WHAT_GAME_TRANS 24 +#define DIA_WHAT_LANG_TRANS 25 #define DIA_ASK_QUEST 26 -#define DIA_NO_PAYLOAD 27 +#define DIA_NO_GB_ROM 27 #define DIA_IN_BOX 28 #define DIA_MYTHIC_CONVERT 29 #define DIA_CANCEL 30 +#define DIA_WHAT_LANG_EVENT 31 +#define DIA_WHAT_GAME_EVENT 32 +#define DIA_K_DEX_NOT_FULL 33 +#define DIA_J_DEX_NOT_FULL 34 -#define DIA_SIZE 31 +#define DIA_SIZE 35 #define DIA_END DIA_SIZE // Commands -#define SCRIPT_START DIA_END + 0 -#define CMD_START_LINK DIA_END + 1 -#define CMD_IMPORT_POKEMON DIA_END + 2 // This one is special because it can be true or false -#define CMD_BACK_TO_MENU DIA_END + 3 -#define CMD_SHOW_PROF DIA_END + 4 -#define CMD_HIDE_PROF DIA_END + 5 -#define CMD_SET_TUTOR_TRUE DIA_END + 6 -#define CMD_END_SCRIPT DIA_END + 7 -#define CMD_GAME_MENU DIA_END + 8 -#define CMD_LANG_MENU DIA_END + 9 -#define CMD_SLIDE_PROF_LEFT DIA_END + 10 -#define CMD_SLIDE_PROF_RIGHT DIA_END + 11 -#define CMD_CONTINUE_LINK DIA_END + 12 -#define CMD_BOX_MENU DIA_END + 13 -#define CMD_MYTHIC_MENU DIA_END + 14 -#define CMD_LOAD_SIMP DIA_END + 15 -#define CMD_CANCEL_LINK DIA_END + 16 +#define T_SCRIPT_START DIA_END + 0 +#define E_SCRIPT_START DIA_END + 1 +#define CMD_START_LINK DIA_END + 2 +#define CMD_IMPORT_POKEMON DIA_END + 3 // This one is special because it can be true or false +#define CMD_BACK_TO_MENU DIA_END + 4 +#define CMD_SHOW_PROF DIA_END + 5 +#define CMD_HIDE_PROF DIA_END + 6 +#define CMD_SET_TUTOR_TRUE DIA_END + 7 +#define CMD_END_SCRIPT DIA_END + 8 +#define CMD_GAME_MENU DIA_END + 9 +#define CMD_LANG_MENU DIA_END + 10 +#define CMD_SLIDE_PROF_LEFT DIA_END + 11 +#define CMD_SLIDE_PROF_RIGHT DIA_END + 12 +#define CMD_CONTINUE_LINK DIA_END + 13 +#define CMD_BOX_MENU DIA_END + 14 +#define CMD_MYTHIC_MENU DIA_END + 15 +#define CMD_LOAD_SIMP DIA_END + 16 +#define CMD_CANCEL_LINK DIA_END + 17 -#define CMD_SIZE 17 +#define CMD_SIZE 18 #define CMDS_END DIA_END + CMD_SIZE // Conditionals @@ -77,17 +82,20 @@ #define COND_IS_FRLGE CMDS_END + 10 #define COND_MG_OTHER_EVENT CMDS_END + 11 #define COND_PKMN_TO_COLLECT CMDS_END + 12 -#define COND_PAYLOAD_EXISTS CMDS_END + 13 +#define COND_GB_ROM_EXISTS CMDS_END + 13 #define COND_CHECK_MYTHIC CMDS_END + 14 +#define COND_CHECK_DEX CMDS_END + 15 +#define COND_CHECK_KANTO CMDS_END + 16 -#define COND_SIZE 15 +#define COND_SIZE 17 #define COND_END CMDS_END + COND_SIZE // Ends #define SCRIPT_SIZE COND_END -extern script_obj script[]; +extern script_obj transfer_script[]; +extern script_obj event_script[]; extern rom_data curr_rom; void populate_script(); diff --git a/include/sprite_data.h b/include/sprite_data.h index a54511f..d6053e1 100644 --- a/include/sprite_data.h +++ b/include/sprite_data.h @@ -10,8 +10,8 @@ extern OBJ_ATTR obj_buffer[128]; extern OBJ_AFFINE *obj_aff_buffer; extern int num_sprites; -#include "metr.h" -extern OBJ_ATTR *testroid; +//#include "metr.h" +//extern OBJ_ATTR *testroid; #include "prof.h" extern OBJ_ATTR *prof; #include "btn_t_l.h" @@ -34,6 +34,11 @@ extern OBJ_ATTR *btn_d_r; extern OBJ_ATTR *button_yes; #include "button_no.h" extern OBJ_ATTR *button_no; +#include "button_blank_left.h" +extern OBJ_ATTR *button_blank_left; +extern OBJ_ATTR *button_blank_right; +extern OBJ_ATTR *button_blank_left_2; +extern OBJ_ATTR *button_blank_right_2; #define SPRITE_BATCH_DEX 0 #include "dex_l.h" diff --git a/include/text_engine.h b/include/text_engine.h index e052b54..9cd1a40 100644 --- a/include/text_engine.h +++ b/include/text_engine.h @@ -15,7 +15,7 @@ #define BOTTOM V_MAX void init_text_engine(); - int text_loop(); + int text_loop(int script); int text_next_obj_id(script_obj current_line); void show_text_box(); void hide_text_box(); diff --git a/source/button_handler.cpp b/source/button_handler.cpp index 7ec6f34..afce593 100644 --- a/source/button_handler.cpp +++ b/source/button_handler.cpp @@ -1,5 +1,9 @@ #include "button_handler.h" +Button::Button(){ + +} + Button::Button(OBJ_ATTR *L, OBJ_ATTR *R, int nLeft_button_width) { button_L = L; diff --git a/source/global_frame_controller.cpp b/source/global_frame_controller.cpp index c90957f..6c2b837 100644 --- a/source/global_frame_controller.cpp +++ b/source/global_frame_controller.cpp @@ -34,7 +34,7 @@ void global_next_frame() tte_set_margins(40, 24, 206, 104); set_textbox_large(); tte_write("\n\n#{cx:0xF000}The Pok@mon game was\nremoved. Please turn\noff the system and\nrestart the program."); - obj_hide_multi(testroid, 128); + //obj_hide_multi(testroid, 128); oam_copy(oam_mem, obj_buffer, num_sprites); while(true){}; } diff --git a/source/main.cpp b/source/main.cpp index 90f0e90..9f4c27b 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -102,7 +102,7 @@ void load_graphics() main_menu.clear_vector(); main_menu.add_button(Button(btn_t_l, btn_t_r, 48), BTN_TRANSFER); main_menu.add_button(Button(btn_p_l, btn_p_r, 48), BTN_POKEDEX); - // main_menu.add_button(Button(btn_d_l, btn_d_r), BTN_LANGUAGE); + main_menu.add_button(Button(btn_d_l, btn_d_r, 48), BTN_EVENTS); main_menu.add_button(Button(btn_c_l, btn_c_r, 48), BTN_CREDITS); main_menu.set_xy_min_max(0, H_MAX, 48, V_MAX); @@ -208,7 +208,7 @@ int credits() set_textbox_large(); tte_write(credits_array[curr_credits_num].c_str()); if (key_hit(KEY_B)) - { + { hide_text_box(); set_textbox_small(); return 0; @@ -293,7 +293,7 @@ int main(void) { case (BTN_TRANSFER): obj_hide_multi(ptgb_logo_l, 2); - text_loop(); + text_loop(BTN_TRANSFER); break; case (BTN_POKEDEX): obj_hide_multi(ptgb_logo_l, 2); @@ -306,6 +306,10 @@ int main(void) obj_set_pos(ptgb_logo_r, 56 + 64, 108); credits(); break; + case (BTN_EVENTS): + obj_hide_multi(ptgb_logo_l, 2); + text_loop(BTN_EVENTS); + break; default: global_next_frame(); } diff --git a/source/main_menu.cpp b/source/main_menu.cpp index b0c8f57..4b812a9 100644 --- a/source/main_menu.cpp +++ b/source/main_menu.cpp @@ -34,8 +34,8 @@ int Button_Menu::button_main() organize_buttons(); show_buttons(); button_vector.at(curr_position).set_highlight(true); - int curr_x; - int curr_y; + int curr_x = 0; + int curr_y = 0; key_poll(); // Reset the buttons diff --git a/source/pokedex.cpp b/source/pokedex.cpp index 0500f99..6f3effe 100644 --- a/source/pokedex.cpp +++ b/source/pokedex.cpp @@ -8,14 +8,24 @@ #include "pokemon_data.h" #include "global_frame_controller.h" #include "save_data_manager.h" +#include "button_handler.h" Dex dex_array[DEX_MAX]; int dex_shift = 0; -int dex_x_cord = 48; +int dex_x_cord = 8; int speed = 0; int delay = 0; int count = 0; int leading_zeros = 0; +Button kanto_count; +Button johto_count; +int kanto_dex_num; +int johto_dex_num; +int kanto_offset; +int johto_offset; +bool mew_caught; +bool celebi_caught; +bool missingno_caught = false; void pokedex_init() { @@ -24,6 +34,36 @@ void pokedex_init() dex_array[i] = Dex(dex_sprites[DEX_SPRITE_LEFT][i], dex_sprites[DEX_SPRITE_MID][i], dex_sprites[DEX_SPRITE_RIGHT][i]); dex_array[i].set_location(dex_x_cord, (i * (8 * 3)) + 8); } + kanto_count = Button(button_blank_left, button_blank_right, 64); + johto_count = Button(button_blank_left_2, button_blank_right_2, 64); + kanto_dex_num = get_dex_completion(1, true); + johto_dex_num = get_dex_completion(2, true); + if (kanto_dex_num >= 100) + { + kanto_offset = 0; + } + else if (kanto_dex_num >= 10) + { + kanto_offset = 1; + } + else + { + kanto_offset = 2; + } + if (johto_dex_num >= 100) + { + johto_offset = 0; + } + else if (johto_dex_num >= 10) + { + johto_offset = 1; + } + else + { + johto_offset = 2; + } + mew_caught = is_caught(151); + celebi_caught = is_caught(251); } int pokedex_loop() @@ -31,11 +71,13 @@ int pokedex_loop() load_temp_sprites(SPRITE_BATCH_DEX); pokedex_init(); pokedex_show(); - // TODO: For some reason there is screen tearing here. Probably not noticable on console, + // TODO: For some reason there is screen tearing here. Probably not noticable on console, // but it should be removed at some point + while (true) { - if (key_hit(KEY_B)){ + if (key_hit(KEY_B)) + { pokedex_hide(); return 0; } @@ -73,29 +115,33 @@ int pokedex_loop() count = 0; } - if (dex_shift > DEX_SHIFT_MAX) + if (dex_shift > DEX_SHIFT_MAX - !celebi_caught) { - dex_shift = DEX_SHIFT_MAX; + dex_shift = DEX_SHIFT_MAX - !celebi_caught; } - else if (dex_shift < 0) + else if (dex_shift < 0 - missingno_caught) { - dex_shift = 0; + dex_shift = 0 - missingno_caught; } tte_erase_rect(0, 0, 240, 160); + int mythic_skip = 0; for (int i = 0; i < DEX_MAX; i++) { + if (dex_shift + i + 1 == 151 && !mew_caught){ + mythic_skip++; + } tte_set_pos(dex_x_cord + (1 * 8), (i * 8 * 3) + 16); - tte_write(is_caught(dex_shift + i + 1) ? "^" : " "); + tte_write(is_caught(dex_shift + i + 1 + mythic_skip) ? "^" : " "); tte_set_pos(dex_x_cord + (3 * 8), (i * 8 * 3) + 16); - tte_write(is_caught(dex_shift + i + 1) ? std::string(NAMES[dex_shift + i + 1]).data() : "----------"); + tte_write(is_caught(dex_shift + i + 1 + mythic_skip) ? std::string(NAMES[dex_shift + i + 1]).data() : "----------"); tte_set_pos(dex_x_cord + (14 * 8), (i * 8 * 3) + 16); tte_write("000"); - if (dex_shift + i + 1 < 10) + if (dex_shift + i + 1 + mythic_skip < 10) { leading_zeros = 2; } - else if (dex_shift + i + 1 < 100) + else if (dex_shift + i + 1 + mythic_skip < 100) { leading_zeros = 1; } @@ -104,8 +150,22 @@ int pokedex_loop() leading_zeros = 0; } tte_set_pos(dex_x_cord + ((14 + leading_zeros) * 8), (i * 8 * 3) + 16); - tte_write(std::to_string(dex_shift + i + 1).c_str()); + tte_write(std::to_string(dex_shift + i + 1 + mythic_skip).c_str()); } + tte_set_pos(176, 48); + tte_write("KANTO"); + tte_set_pos(168 + (8 * kanto_offset), 56); + tte_write(std::to_string(kanto_dex_num).c_str()); + tte_write("/"); + tte_write(mew_caught ? "151" : "150"); + + tte_set_pos(176, 96); + tte_write("JOHTO"); + tte_set_pos(168 + (8 * johto_offset), 104); + tte_write(std::to_string(johto_dex_num).c_str()); + tte_write("/"); + tte_write(celebi_caught ? "100" : "99"); + global_next_frame(); } } @@ -116,6 +176,10 @@ void pokedex_show() { dex_array[i].show(); } + kanto_count.set_location(160, 40); + johto_count.set_location(160, 88); + kanto_count.show(); + johto_count.show(); } void pokedex_hide() @@ -125,4 +189,6 @@ void pokedex_hide() tte_erase_rect(0, 0, 240, 160); dex_array[i].hide(); } + kanto_count.hide(); + johto_count.hide(); } \ No newline at end of file diff --git a/source/pokemon_data.cpp b/source/pokemon_data.cpp index 633d10f..e95effe 100644 --- a/source/pokemon_data.cpp +++ b/source/pokemon_data.cpp @@ -4114,7 +4114,7 @@ const byte FIRST_MOVES[252] = { 0x49, // Celebi (leech-seed) }; const std::string_view NAMES[252]{ - "", // Offset the list to remove "off by one" errors + "MissingNo", // Offset the list to remove "off by one" errors "Bulbasaur", "Ivysaur", "Venusaur", diff --git a/source/pokemon_party.cpp b/source/pokemon_party.cpp index 1da5eb6..702f268 100644 --- a/source/pokemon_party.cpp +++ b/source/pokemon_party.cpp @@ -9,7 +9,7 @@ #include "box_menu.h" #include "payload_builder.h" -const GB_ROM *list_of_gb_roms[NUM_PAYLOADS] = { +const GB_ROM *list_of_gb_roms[NUM_GB_ROMS] = { &ENG_RED_BLUE, &ENG_YELLOW, &ENG_GOLD, @@ -223,6 +223,23 @@ void Pokemon_Party::set_game(int nGame) game = nGame; } +int Pokemon_Party::get_game_gen() +{ + switch(game){ + case GREEN_ID: + case RED_ID: + case BLUE_ID: + case YELLOW_ID: + return 1; + + case GOLD_ID: + case SILVER_ID: + case CRYSTAL_ID: + default: + return 2; + } +} + void Pokemon_Party::set_lang(int nLang) { lang = nLang; @@ -232,8 +249,8 @@ int Pokemon_Party::get_lang(){ return lang; } -bool Pokemon_Party::load_payload(){ - for (int i = 0; i < NUM_PAYLOADS; i++) +bool Pokemon_Party::load_gb_rom(){ + for (int i = 0; i < NUM_GB_ROMS; i++) { if (lang == list_of_gb_roms[i]->language && game == list_of_gb_roms[i]->version) @@ -245,6 +262,7 @@ bool Pokemon_Party::load_payload(){ return false; } + Simplified_Pokemon Pokemon_Party::get_simple_pkmn(int index){ return simple_pkmn_array[index]; } diff --git a/source/save_data_manager.cpp b/source/save_data_manager.cpp index 9f9a3f6..e2f229b 100644 --- a/source/save_data_manager.cpp +++ b/source/save_data_manager.cpp @@ -67,4 +67,16 @@ void initalize_save_data() save_data_array[i] = 0; } write_custom_save_data(); +} + +int get_dex_completion(int gen, bool include_mythicals){ + int num = (gen == 1 ? 151 : 100); + int offset = (gen == 1 ? 1 : 152); + int count = 0; + for (int i = 0; i < num; i++){ + if (is_caught(i)){ + count++; + } + } + return count; } \ No newline at end of file diff --git a/source/script_array.cpp b/source/script_array.cpp index 2409f99..356d713 100644 --- a/source/script_array.cpp +++ b/source/script_array.cpp @@ -20,7 +20,8 @@ Button_Menu game_select_jpn(3, 2, 72, 32, true); Button_Menu game_select_kor(1, 1, 72, 32, true); Box_Menu box_viewer; -script_obj script[SCRIPT_SIZE]; +script_obj transfer_script[SCRIPT_SIZE]; +script_obj event_script[SCRIPT_SIZE]; std::string_view dialogue[DIA_SIZE]; void populate_dialogue() @@ -42,9 +43,9 @@ void populate_dialogue() dialogue[DIA_PKMN_TO_COLLECT] = "Hi Trainer! It looks like\nyou still have Pok@mon to\npick up...|I can't send over new\nPok@mon until you pick those\nup.|Come back after you've\nreceived them!"; dialogue[DIA_NO_VALID_PKMN] = "Sorry Trainer, it doesn't\nlook like you have any valid\nPok@mon in your current box\nright now.|Go double check your current\nbox and we can give it\nanother shot!"; dialogue[DIA_ASK_QUEST] = "Hi trainer! Before we begin,\nI need to ask you a few\nquestions."; - dialogue[DIA_WHAT_GAME] = "And which Game Boy Pok@mon\ngame are you transferring\nfrom?"; - dialogue[DIA_WHAT_LANG] = "What language is the Game\nBoy Pok@mon game that you're\ntransferring from?"; - dialogue[DIA_NO_PAYLOAD] = "I'm sorry, but that version\nin that language is not\ncurrently supported."; + dialogue[DIA_WHAT_GAME_TRANS] = "And which Game Boy Pok@mon\ngame are you transferring\nfrom?"; + dialogue[DIA_WHAT_LANG_TRANS] = "What language is the Game\nBoy Pok@mon game that you're\ntransferring from?"; + dialogue[DIA_NO_GB_ROM] = "I'm sorry, but that version\nin that language is not\ncurrently supported."; dialogue[DIA_IN_BOX] = "Great! Let's take a look at\nthe Pok@mon that will be\ntransfered.|Please remember, once a\nPok@mon is transfered, it\nCANNOT be returned to the\nGame Boy Game Pak.|Select confirm once you're\nready, or select cancel if\nyou want to keep the Pok@mon\non your Game Boy Game Pak."; dialogue[DIA_MYTHIC_CONVERT] = "It looks like you have a\nrare Mythical Pok@mon!|Due to their rarity, it\nseems they've corrupted the\nmachine.|I can stablize them if you'd\nlike, but it'll change some\nthings like name, Original\nTrainer, and Shininess.|Otherwise I can leave them\nas is, but there's no\nguarentee that they'll be\ntransferrable in the future.|Do you want me to stablize\nthem?"; dialogue[DIA_CANCEL] = "No worries! Feel free to\ncome back if you change your\nmind!|See you around!"; @@ -54,78 +55,110 @@ void populate_dialogue() dialogue[DIA_ERROR_DISCONNECT] = "It looks like the Game Boy\nColor link cable was\ndisconnected...|Let's try that again!"; dialogue[DIA_ERROR_TIME_ONE] = "It looks like the connection\ntimed out...|Let's try that again!"; dialogue[DIA_ERROR_TIME_TWO] = "It seems like the connection\ntimed out...|Let's try that again!"; + + dialogue[DIA_WHAT_LANG_EVENT] = "What language is the Game\nBoy Pok@mon game that you\nwant to send an event to?"; + dialogue[DIA_WHAT_GAME_EVENT] = "And which Game Boy Pok@mon\ngame do you want to send an event to?"; + dialogue[DIA_K_DEX_NOT_FULL] = "Sorry trainer, it looks like\nyou haven't caught all 150\nPok@mon from the Kanto\nregion yet.|Go out and catch them all\nand then we'll be able to\nsend over the event!"; + dialogue[DIA_J_DEX_NOT_FULL] = "Sorry trainer, it looks like\nyou haven't caught all 99\nnew Pok@mon from the Johto\nregion yet.|Go out and catch them all\nand then we'll be able to\nsend over the event!"; } void populate_script() { + // -------- TRANSFER SCRIPT -------- // Check that the conditions are set for the transfer - script[SCRIPT_START] = script_obj(CMD_SHOW_PROF, COND_BEAT_E4); - script[COND_BEAT_E4] = script_obj(COND_BEAT_E4, COND_MG_ENABLED, DIA_E4); - script[DIA_E4] = script_obj(dialogue[DIA_E4], CMD_END_SCRIPT); - script[COND_MG_ENABLED] = script_obj(COND_MG_ENABLED, COND_TUTORIAL_COMPLETE, COND_IS_FRLGE); - script[COND_IS_FRLGE] = script_obj(COND_IS_FRLGE, DIA_MG_FRLGE, DIA_MG_RS); - script[DIA_MG_FRLGE] = script_obj(dialogue[DIA_MG_FRLGE], CMD_END_SCRIPT); - script[DIA_MG_RS] = script_obj(dialogue[DIA_MG_RS], CMD_END_SCRIPT); - script[COND_TUTORIAL_COMPLETE] = script_obj(COND_TUTORIAL_COMPLETE, COND_MG_OTHER_EVENT, DIA_OPEN); - script[DIA_OPEN] = script_obj(dialogue[DIA_OPEN], CMD_SET_TUTOR_TRUE); - script[CMD_SET_TUTOR_TRUE] = script_obj(CMD_SET_TUTOR_TRUE, CMD_END_SCRIPT); - script[COND_MG_OTHER_EVENT] = script_obj(COND_MG_OTHER_EVENT, DIA_MG_OTHER_EVENT, COND_PKMN_TO_COLLECT); - script[COND_PKMN_TO_COLLECT] = script_obj(COND_PKMN_TO_COLLECT, DIA_PKMN_TO_COLLECT, DIA_ASK_QUEST); - script[DIA_MG_OTHER_EVENT] = script_obj(dialogue[DIA_MG_OTHER_EVENT], DIA_ASK_QUEST); - script[DIA_PKMN_TO_COLLECT] = script_obj(dialogue[DIA_PKMN_TO_COLLECT], CMD_END_SCRIPT); + transfer_script[T_SCRIPT_START] = script_obj(CMD_SHOW_PROF, COND_BEAT_E4); + transfer_script[COND_BEAT_E4] = script_obj(COND_BEAT_E4, COND_MG_ENABLED, DIA_E4); + transfer_script[DIA_E4] = script_obj(dialogue[DIA_E4], CMD_END_SCRIPT); + transfer_script[COND_MG_ENABLED] = script_obj(COND_MG_ENABLED, COND_TUTORIAL_COMPLETE, COND_IS_FRLGE); + transfer_script[COND_IS_FRLGE] = script_obj(COND_IS_FRLGE, DIA_MG_FRLGE, DIA_MG_RS); + transfer_script[DIA_MG_FRLGE] = script_obj(dialogue[DIA_MG_FRLGE], CMD_END_SCRIPT); + transfer_script[DIA_MG_RS] = script_obj(dialogue[DIA_MG_RS], CMD_END_SCRIPT); + transfer_script[COND_TUTORIAL_COMPLETE] = script_obj(COND_TUTORIAL_COMPLETE, COND_MG_OTHER_EVENT, DIA_OPEN); + transfer_script[DIA_OPEN] = script_obj(dialogue[DIA_OPEN], CMD_SET_TUTOR_TRUE); + transfer_script[CMD_SET_TUTOR_TRUE] = script_obj(CMD_SET_TUTOR_TRUE, CMD_END_SCRIPT); + transfer_script[COND_MG_OTHER_EVENT] = script_obj(COND_MG_OTHER_EVENT, DIA_MG_OTHER_EVENT, COND_PKMN_TO_COLLECT); + transfer_script[COND_PKMN_TO_COLLECT] = script_obj(COND_PKMN_TO_COLLECT, DIA_PKMN_TO_COLLECT, DIA_ASK_QUEST); + transfer_script[DIA_MG_OTHER_EVENT] = script_obj(dialogue[DIA_MG_OTHER_EVENT], DIA_ASK_QUEST); + transfer_script[DIA_PKMN_TO_COLLECT] = script_obj(dialogue[DIA_PKMN_TO_COLLECT], CMD_END_SCRIPT); // Ask the user what game and language they're using - script[DIA_WHAT_GAME] = script_obj(dialogue[DIA_WHAT_GAME], CMD_GAME_MENU); - script[CMD_GAME_MENU] = script_obj(CMD_GAME_MENU, COND_PAYLOAD_EXISTS, DIA_WHAT_LANG); - script[DIA_WHAT_LANG] = script_obj(dialogue[DIA_WHAT_LANG], CMD_LANG_MENU); - script[CMD_LANG_MENU] = script_obj(CMD_LANG_MENU, DIA_WHAT_GAME); - script[DIA_ASK_QUEST] = script_obj(dialogue[DIA_ASK_QUEST], CMD_SLIDE_PROF_LEFT); - script[CMD_SLIDE_PROF_LEFT] = script_obj(CMD_SLIDE_PROF_LEFT, DIA_WHAT_LANG); - script[CMD_SLIDE_PROF_RIGHT] = script_obj(CMD_SLIDE_PROF_RIGHT, DIA_LETS_START); - script[COND_PAYLOAD_EXISTS] = script_obj(COND_PAYLOAD_EXISTS, CMD_SLIDE_PROF_RIGHT, DIA_NO_PAYLOAD); - script[DIA_NO_PAYLOAD] = script_obj(dialogue[DIA_NO_PAYLOAD], DIA_WHAT_LANG); + transfer_script[DIA_WHAT_GAME_TRANS] = script_obj(dialogue[DIA_WHAT_GAME_TRANS], CMD_GAME_MENU); + transfer_script[CMD_GAME_MENU] = script_obj(CMD_GAME_MENU, COND_GB_ROM_EXISTS, DIA_WHAT_LANG_TRANS); + transfer_script[DIA_WHAT_LANG_TRANS] = script_obj(dialogue[DIA_WHAT_LANG_TRANS], CMD_LANG_MENU); + transfer_script[CMD_LANG_MENU] = script_obj(CMD_LANG_MENU, DIA_WHAT_GAME_TRANS); + transfer_script[DIA_ASK_QUEST] = script_obj(dialogue[DIA_ASK_QUEST], CMD_SLIDE_PROF_LEFT); + transfer_script[CMD_SLIDE_PROF_LEFT] = script_obj(CMD_SLIDE_PROF_LEFT, DIA_WHAT_LANG_TRANS); + transfer_script[CMD_SLIDE_PROF_RIGHT] = script_obj(CMD_SLIDE_PROF_RIGHT, DIA_LETS_START); + transfer_script[COND_GB_ROM_EXISTS] = script_obj(COND_GB_ROM_EXISTS, CMD_SLIDE_PROF_RIGHT, DIA_NO_GB_ROM); + transfer_script[DIA_NO_GB_ROM] = script_obj(dialogue[DIA_NO_GB_ROM], DIA_WHAT_LANG_TRANS); // Initiate the transfer and check for errors - script[DIA_LETS_START] = script_obj(dialogue[DIA_LETS_START], DIA_START); - script[DIA_START] = script_obj(dialogue[DIA_START], CMD_START_LINK); - script[CMD_START_LINK] = script_obj(CMD_START_LINK, COND_ERROR_TIMEOUT_ONE); - script[COND_ERROR_TIMEOUT_ONE] = script_obj(COND_ERROR_TIMEOUT_ONE, COND_ERROR_TIMEOUT_TWO, DIA_ERROR_TIME_ONE); - script[DIA_ERROR_TIME_ONE] = script_obj(dialogue[DIA_ERROR_TIME_ONE], DIA_START); - script[COND_ERROR_TIMEOUT_TWO] = script_obj(COND_ERROR_TIMEOUT_TWO, COND_ERROR_COM_ENDED, DIA_ERROR_TIME_TWO); - script[DIA_ERROR_TIME_TWO] = script_obj(dialogue[DIA_ERROR_TIME_TWO], DIA_START); - script[COND_ERROR_COM_ENDED] = script_obj(COND_ERROR_COM_ENDED, COND_ERROR_COLOSSEUM, DIA_ERROR_COM_ENDED); - script[DIA_ERROR_COM_ENDED] = script_obj(dialogue[DIA_ERROR_COM_ENDED], DIA_START); - script[COND_ERROR_COLOSSEUM] = script_obj(COND_ERROR_COLOSSEUM, COND_ERROR_DISCONNECT, DIA_ERROR_COLOSSEUM); - script[DIA_ERROR_COLOSSEUM] = script_obj(dialogue[DIA_ERROR_COLOSSEUM], DIA_START); - script[COND_ERROR_DISCONNECT] = script_obj(COND_ERROR_DISCONNECT, CMD_LOAD_SIMP, DIA_ERROR_DISCONNECT); - script[DIA_ERROR_DISCONNECT] = script_obj(dialogue[DIA_ERROR_DISCONNECT], DIA_START); + transfer_script[DIA_LETS_START] = script_obj(dialogue[DIA_LETS_START], DIA_START); + transfer_script[DIA_START] = script_obj(dialogue[DIA_START], CMD_START_LINK); + transfer_script[CMD_START_LINK] = script_obj(CMD_START_LINK, COND_ERROR_TIMEOUT_ONE); + transfer_script[COND_ERROR_TIMEOUT_ONE] = script_obj(COND_ERROR_TIMEOUT_ONE, COND_ERROR_TIMEOUT_TWO, DIA_ERROR_TIME_ONE); + transfer_script[DIA_ERROR_TIME_ONE] = script_obj(dialogue[DIA_ERROR_TIME_ONE], DIA_START); + transfer_script[COND_ERROR_TIMEOUT_TWO] = script_obj(COND_ERROR_TIMEOUT_TWO, COND_ERROR_COM_ENDED, DIA_ERROR_TIME_TWO); + transfer_script[DIA_ERROR_TIME_TWO] = script_obj(dialogue[DIA_ERROR_TIME_TWO], DIA_START); + transfer_script[COND_ERROR_COM_ENDED] = script_obj(COND_ERROR_COM_ENDED, COND_ERROR_COLOSSEUM, DIA_ERROR_COM_ENDED); + transfer_script[DIA_ERROR_COM_ENDED] = script_obj(dialogue[DIA_ERROR_COM_ENDED], DIA_START); + transfer_script[COND_ERROR_COLOSSEUM] = script_obj(COND_ERROR_COLOSSEUM, COND_ERROR_DISCONNECT, DIA_ERROR_COLOSSEUM); + transfer_script[DIA_ERROR_COLOSSEUM] = script_obj(dialogue[DIA_ERROR_COLOSSEUM], DIA_START); + transfer_script[COND_ERROR_DISCONNECT] = script_obj(COND_ERROR_DISCONNECT, CMD_LOAD_SIMP, DIA_ERROR_DISCONNECT); + transfer_script[DIA_ERROR_DISCONNECT] = script_obj(dialogue[DIA_ERROR_DISCONNECT], DIA_START); // Pause the transfer and show the user their box data - script[CMD_LOAD_SIMP] = script_obj(CMD_LOAD_SIMP, COND_CHECK_MYTHIC, DIA_NO_VALID_PKMN); - script[DIA_NO_VALID_PKMN] = script_obj(dialogue[DIA_NO_VALID_PKMN], CMD_CANCEL_LINK); - script[COND_CHECK_MYTHIC] = script_obj(COND_CHECK_MYTHIC, DIA_MYTHIC_CONVERT, DIA_IN_BOX); - script[DIA_MYTHIC_CONVERT] = script_obj(dialogue[DIA_MYTHIC_CONVERT], CMD_MYTHIC_MENU); - script[CMD_MYTHIC_MENU] = script_obj(CMD_MYTHIC_MENU, DIA_IN_BOX); - script[DIA_IN_BOX] = script_obj(dialogue[DIA_IN_BOX], CMD_BOX_MENU); - script[CMD_BOX_MENU] = script_obj(CMD_BOX_MENU, CMD_CONTINUE_LINK, DIA_CANCEL); - script[DIA_CANCEL] = script_obj(dialogue[DIA_CANCEL], CMD_CANCEL_LINK); - script[CMD_CONTINUE_LINK] = script_obj(CMD_CONTINUE_LINK, CMD_IMPORT_POKEMON); - script[CMD_CANCEL_LINK] = script_obj(CMD_CANCEL_LINK, CMD_END_SCRIPT); + transfer_script[CMD_LOAD_SIMP] = script_obj(CMD_LOAD_SIMP, COND_CHECK_MYTHIC, DIA_NO_VALID_PKMN); + transfer_script[DIA_NO_VALID_PKMN] = script_obj(dialogue[DIA_NO_VALID_PKMN], CMD_CANCEL_LINK); + transfer_script[COND_CHECK_MYTHIC] = script_obj(COND_CHECK_MYTHIC, DIA_MYTHIC_CONVERT, DIA_IN_BOX); + transfer_script[DIA_MYTHIC_CONVERT] = script_obj(dialogue[DIA_MYTHIC_CONVERT], CMD_MYTHIC_MENU); + transfer_script[CMD_MYTHIC_MENU] = script_obj(CMD_MYTHIC_MENU, DIA_IN_BOX); + transfer_script[DIA_IN_BOX] = script_obj(dialogue[DIA_IN_BOX], CMD_BOX_MENU); + transfer_script[CMD_BOX_MENU] = script_obj(CMD_BOX_MENU, CMD_CONTINUE_LINK, DIA_CANCEL); + transfer_script[DIA_CANCEL] = script_obj(dialogue[DIA_CANCEL], CMD_CANCEL_LINK); + transfer_script[CMD_CONTINUE_LINK] = script_obj(CMD_CONTINUE_LINK, CMD_IMPORT_POKEMON); + transfer_script[CMD_CANCEL_LINK] = script_obj(CMD_CANCEL_LINK, CMD_END_SCRIPT); // Complete the transfer and give messages based on the transfered Pokemon - script[CMD_IMPORT_POKEMON] = script_obj(CMD_IMPORT_POKEMON, DIA_TRANS_GOOD); - script[DIA_TRANS_GOOD] = script_obj(dialogue[DIA_TRANS_GOOD], COND_NEW_POKEMON); - script[COND_NEW_POKEMON] = script_obj(COND_NEW_POKEMON, DIA_NEW_DEX, DIA_NO_NEW_DEX); - script[DIA_NEW_DEX] = script_obj(dialogue[DIA_NEW_DEX], COND_IS_HOENN); - script[DIA_NO_NEW_DEX] = script_obj(dialogue[DIA_NO_NEW_DEX], COND_IS_HOENN); - script[COND_IS_HOENN] = script_obj(COND_IS_HOENN, DIA_SEND_FRIEND_HOENN, DIA_SEND_FRIEND_KANTO); - script[DIA_SEND_FRIEND_HOENN] = script_obj(dialogue[DIA_SEND_FRIEND_HOENN], DIA_THANK); - script[DIA_SEND_FRIEND_KANTO] = script_obj(dialogue[DIA_SEND_FRIEND_KANTO], DIA_THANK); - script[DIA_THANK] = script_obj(dialogue[DIA_THANK], CMD_END_SCRIPT); + transfer_script[CMD_IMPORT_POKEMON] = script_obj(CMD_IMPORT_POKEMON, DIA_TRANS_GOOD); + transfer_script[DIA_TRANS_GOOD] = script_obj(dialogue[DIA_TRANS_GOOD], COND_NEW_POKEMON); + transfer_script[COND_NEW_POKEMON] = script_obj(COND_NEW_POKEMON, DIA_NEW_DEX, DIA_NO_NEW_DEX); + transfer_script[DIA_NEW_DEX] = script_obj(dialogue[DIA_NEW_DEX], COND_IS_HOENN); + transfer_script[DIA_NO_NEW_DEX] = script_obj(dialogue[DIA_NO_NEW_DEX], COND_IS_HOENN); + transfer_script[COND_IS_HOENN] = script_obj(COND_IS_HOENN, DIA_SEND_FRIEND_HOENN, DIA_SEND_FRIEND_KANTO); + transfer_script[DIA_SEND_FRIEND_HOENN] = script_obj(dialogue[DIA_SEND_FRIEND_HOENN], DIA_THANK); + transfer_script[DIA_SEND_FRIEND_KANTO] = script_obj(dialogue[DIA_SEND_FRIEND_KANTO], DIA_THANK); + transfer_script[DIA_THANK] = script_obj(dialogue[DIA_THANK], CMD_END_SCRIPT); // Hide the dialouge and professor - script[CMD_END_SCRIPT] = script_obj(CMD_END_SCRIPT, CMD_BACK_TO_MENU); - script[CMD_BACK_TO_MENU] = script_obj(CMD_BACK_TO_MENU, SCRIPT_START); + transfer_script[CMD_END_SCRIPT] = script_obj(CMD_END_SCRIPT, CMD_BACK_TO_MENU); + transfer_script[CMD_BACK_TO_MENU] = script_obj(CMD_BACK_TO_MENU, T_SCRIPT_START); + + // -------- EVENTS SCRIPT -------- + // Start the dialogue and show the menu + event_script[E_SCRIPT_START] = script_obj(CMD_SHOW_PROF, DIA_ASK_QUEST); + event_script[DIA_ASK_QUEST] = script_obj(dialogue[DIA_ASK_QUEST], CMD_SLIDE_PROF_LEFT); + + // Ask the user what game and language they're using + event_script[DIA_WHAT_GAME_EVENT] = script_obj(dialogue[DIA_WHAT_GAME_EVENT], CMD_GAME_MENU); + event_script[CMD_GAME_MENU] = script_obj(CMD_GAME_MENU, COND_GB_ROM_EXISTS, DIA_WHAT_LANG_EVENT); + event_script[DIA_WHAT_LANG_EVENT] = script_obj(dialogue[DIA_WHAT_LANG_EVENT], CMD_LANG_MENU); + event_script[CMD_LANG_MENU] = script_obj(CMD_LANG_MENU, DIA_WHAT_GAME_EVENT); + event_script[DIA_ASK_QUEST] = script_obj(dialogue[DIA_ASK_QUEST], CMD_SLIDE_PROF_LEFT); + event_script[CMD_SLIDE_PROF_LEFT] = script_obj(CMD_SLIDE_PROF_LEFT, DIA_WHAT_LANG_EVENT); + event_script[CMD_SLIDE_PROF_RIGHT] = script_obj(CMD_SLIDE_PROF_RIGHT, COND_CHECK_DEX); + event_script[COND_GB_ROM_EXISTS] = script_obj(COND_GB_ROM_EXISTS, CMD_SLIDE_PROF_RIGHT, DIA_NO_GB_ROM); + event_script[DIA_NO_GB_ROM] = script_obj(dialogue[DIA_NO_GB_ROM], DIA_WHAT_LANG_EVENT); + + // Check the player's dex + event_script[COND_CHECK_DEX] = script_obj(COND_CHECK_DEX, 0, COND_CHECK_KANTO); + event_script[COND_CHECK_KANTO] = script_obj(COND_CHECK_KANTO, DIA_K_DEX_NOT_FULL, DIA_J_DEX_NOT_FULL); + event_script[DIA_K_DEX_NOT_FULL] = script_obj(dialogue[DIA_K_DEX_NOT_FULL], CMD_END_SCRIPT); + event_script[DIA_J_DEX_NOT_FULL] = script_obj(dialogue[DIA_J_DEX_NOT_FULL], CMD_END_SCRIPT); + + // Hide the dialouge and professor + event_script[CMD_END_SCRIPT] = script_obj(CMD_END_SCRIPT, CMD_BACK_TO_MENU); + event_script[CMD_BACK_TO_MENU] = script_obj(CMD_BACK_TO_MENU, T_SCRIPT_START); }; void populate_lang_buttons() @@ -217,12 +250,25 @@ bool run_conditional(int index) case COND_PKMN_TO_COLLECT: return compare_map_and_npc_data(curr_rom.map_bank, curr_rom.map_id, curr_rom.npc_id) && !read_flag(curr_rom.all_collected_flag) && !IGNORE_UNRECEIVED_PKMN; - case COND_PAYLOAD_EXISTS: - return party_data.load_payload(); + case COND_GB_ROM_EXISTS: + return party_data.load_gb_rom(); case COND_CHECK_MYTHIC: return party_data.get_contains_mythical(); + case COND_CHECK_DEX: + if (party_data.get_game_gen() == 1) + { + return get_dex_completion(1, false) == 150; + } + else + { + return get_dex_completion(1, false) == 99; + } + + case COND_CHECK_KANTO: + return party_data.get_game_gen() == 1; + case CMD_START_LINK: obj_hide(prof); party_data.start_link(); @@ -319,7 +365,7 @@ bool run_conditional(int index) case CMD_LOAD_SIMP: return party_data.fill_simple_pkmn_array(); - case CMD_CANCEL_LINK: + case CMD_CANCEL_LINK: party_data.continue_link(true); return true; diff --git a/source/sprite_data.cpp b/source/sprite_data.cpp index 84aa586..84c7e9c 100644 --- a/source/sprite_data.cpp +++ b/source/sprite_data.cpp @@ -91,7 +91,7 @@ void load_textbox_background() // SPRITES int num_sprites = 0; -OBJ_ATTR *testroid = &obj_buffer[num_sprites++]; +//OBJ_ATTR *testroid = &obj_buffer[num_sprites++]; OBJ_ATTR *prof = &obj_buffer[num_sprites++]; OBJ_ATTR *ptgb_logo_l = &obj_buffer[num_sprites++]; OBJ_ATTR *ptgb_logo_r = &obj_buffer[num_sprites++]; @@ -106,6 +106,10 @@ OBJ_ATTR *btn_d_l = &obj_buffer[num_sprites++]; OBJ_ATTR *btn_d_r = &obj_buffer[num_sprites++]; OBJ_ATTR *button_yes = &obj_buffer[num_sprites++]; OBJ_ATTR *button_no = &obj_buffer[num_sprites++]; +OBJ_ATTR *button_blank_left = &obj_buffer[num_sprites++]; +OBJ_ATTR *button_blank_right = &obj_buffer[num_sprites++]; +OBJ_ATTR *button_blank_left_2 = &obj_buffer[num_sprites++]; +OBJ_ATTR *button_blank_right_2 = &obj_buffer[num_sprites++]; OBJ_ATTR *dex_sprites[3][6] = { // Fills the dex sprites top to bottom, left to right {&obj_buffer[num_sprites++], &obj_buffer[num_sprites++], &obj_buffer[num_sprites++], @@ -182,14 +186,14 @@ u32 global_tile_id_end = 0; void load_eternal_sprites() { - memcpy(pal_obj_mem + (METR_PAL * 16), metrPal, metrPalLen); + //memcpy(pal_obj_mem + (METR_PAL * 16), metrPal, metrPalLen); memcpy(pal_obj_mem + (PROF_PAL * 16), profPal, profPalLen); memcpy(pal_obj_mem + (BTN_PAL * 16), btn_t_lPal, btn_t_lPalLen); memcpy(pal_obj_mem + (BTN_LIT_PAL * 16), btn_t_rPal, btn_t_rPalLen); memcpy(pal_obj_mem + (LOGO_PAL * 16), ptgb_logo_lPal, ptgb_logo_lPalLen); u32 curr_tile_id = 0; - load_sprite(testroid, metrTiles, metrTilesLen, curr_tile_id, METR_PAL, ATTR0_SQUARE, ATTR1_SIZE_64x64, 0); + //load_sprite(testroid, metrTiles, metrTilesLen, curr_tile_id, METR_PAL, ATTR0_SQUARE, ATTR1_SIZE_64x64, 0); load_sprite(prof, profTiles, profTilesLen, curr_tile_id, PROF_PAL, ATTR0_SQUARE, ATTR1_SIZE_64x64, 2); load_sprite(ptgb_logo_l, ptgb_logo_lTiles, ptgb_logo_lTilesLen, curr_tile_id, LOGO_PAL, ATTR0_SQUARE, ATTR1_SIZE_64x64, 1); load_sprite(ptgb_logo_r, ptgb_logo_rTiles, ptgb_logo_rTilesLen, curr_tile_id, LOGO_PAL, ATTR0_SQUARE, ATTR1_SIZE_64x64, 1); @@ -203,6 +207,10 @@ void load_eternal_sprites() load_sprite(btn_d_r, btn_d_rTiles, btn_d_rTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1); load_sprite(button_yes, button_yesTiles, button_yesTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1); load_sprite(button_no, button_noTiles, button_noTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1); + load_sprite(button_blank_left, button_blank_leftTiles, button_blank_leftTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1); + load_sprite(button_blank_right, button_game_select_edgeTiles, button_game_select_edgeTilesLen, curr_tile_id, BTN_PAL, ATTR0_TALL, ATTR1_SIZE_8x32, 1); + load_sprite(button_blank_left_2, button_blank_leftTiles, button_blank_leftTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1); + load_sprite(button_blank_right_2, button_game_select_edgeTiles, button_game_select_edgeTilesLen, curr_tile_id, BTN_PAL, ATTR0_TALL, ATTR1_SIZE_8x32, 1); global_tile_id_end = curr_tile_id; } diff --git a/source/test_payload.txt b/source/test_payload.txt deleted file mode 100644 index 8e21ef1..0000000 --- a/source/test_payload.txt +++ /dev/null @@ -1,85 +0,0 @@ - -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, -# 0x10 -0xFD, 0xFD, 0x85, 0x84, 0x8D, 0x8D, 0x84, 0x8B, 0x50, 0x50, 0x50, 0x50, 0x50, 0x06, 0x15, 0x15, -# 0x20 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0x30 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0x40 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0x50 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0x60 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0x70 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0x80 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0x90 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0xA0 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0xB0 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0xC0 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0xD0 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0xE0 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0xF0 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0x100 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0x110 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0x120 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0x130 -0x15, 0x15, 0x15, 0xC8, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0x140 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0x150 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0x160 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -# 0x170 -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0xE3, 0xFF, -# 0x180 -0x01, 0xC2, 0x00, 0xCD, 0xCB, 0x1F, 0x3E, 0x1C, 0xCD, 0x7E, 0x3E, 0xCD, 0xFC, 0x79, 0x00, 0x00, -# 0x190 -0x00, 0x00, 0x00, 0xCD, 0x24, 0x7A, 0xC3, 0xD6, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xAA, -# 0x1A0 -0xFF, 0x36, 0x02, 0x00, 0x00, 0x00, 0x00, 0x21, 0x61, 0x01, 0x11, 0xD0, 0xC5, 0x18, 0xD1, 0x00, -# 0x1B0 -0x00, 0x00, 0x00, 0x00, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFF, 0xFF, 0x3E, 0x01, 0xCD, 0x7E, 0x3E, -# 0x1C0 -0xCD, 0xDD, 0x16, 0x21, 0x2E, 0xC4, 0x06, 0x03, 0x0E, 0x0E, 0xCD, 0x67, 0x5B, 0x21, 0x43, 0xC4, -# 0x1D0 -0x11, 0x7A, 0xC6, 0xCD, 0x23, 0x17, 0x21, 0xAA, 0xFF, 0x36, 0x02, 0x21, 0x7E, 0xDA, 0x36, 0xFD, -# 0x1E0 -0x11, 0x7D, 0xDA, 0x01, 0x64, 0x04, 0x00, 0x00, 0x00, 0x21, 0xAA, 0xFF, 0x36, 0x02, 0x21, 0x61, -# 0x1F0 -0x01, 0x11, 0x51, 0xC6, 0x01, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x21, 0x94, 0xCF, 0x36, 0x01, 0xFA, -# 0x200 -0x50, 0xC6, 0x5F, 0x16, 0x00, 0x21, 0x51, 0xC6, 0x19, 0x1E, 0xFF, 0x3C, 0xEA, 0x50, 0xC6, 0xFA, -# 0x210 -0x7F, 0xDA, 0x47, 0x2A, 0xBB, 0x28, 0x0C, 0xB8, 0x30, 0xE5, 0x21, 0x91, 0xCF, 0x77, 0xCD, 0x0F, -# 0x220 -0x7A, 0x18, 0xDC, 0x3E, 0x1C, 0xCD, 0x7E, 0x3E, 0xCD, 0x32, 0x7B, 0xCD, 0x56, 0x7B, 0xC3, 0x05, -# 0x230 -0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x1C, 0x1B, 0x1A, 0x19, 0x18, 0x17, 0x16, 0x15, 0x14, -# 0x240 -0x13, 0x12, 0x11, 0x10, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, -# 0x250 -0x03, 0x02, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, -# 0x260 -0x91, 0x80, 0x8D, 0x92, 0x85, 0x84, 0x91, 0x91, 0x88, 0x8D, 0x86, 0xF2, 0xF2, 0x4E, 0x7F, 0x8F, -# 0x270 -0x8B, 0x84, 0x80, 0x92, 0x84, 0x7F, 0x96, 0x80, 0x88, 0x93, 0xE7, 0x7F, 0x50, 0x00, 0x00, 0x00, -# 0x280 -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -# 0x290 -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -# 0x2A0 diff --git a/source/text_engine.cpp b/source/text_engine.cpp index d4a3ceb..71618c7 100644 --- a/source/text_engine.cpp +++ b/source/text_engine.cpp @@ -7,6 +7,7 @@ #include "pkmn_font.h" #include "script_array.h" #include "debug_mode.h" +#include "main_menu.h" #define TEXT_CBB 3 #define TEXT_SBB 28 @@ -29,15 +30,25 @@ void init_text_engine() pal_bg_bank[15][15] = 0b0001100011100110; // Set default variables - curr_line = script[SCRIPT_START]; char_index = 0; line_char_index = 0; - curr_text = curr_line.get_text(); text_exit = false; } -int text_loop() +int text_loop(int script) { + switch (script) + { + case BTN_TRANSFER: + curr_line = transfer_script[T_SCRIPT_START]; + break; + + case BTN_EVENTS: + curr_line = event_script[E_SCRIPT_START]; + break; + } + curr_text = curr_line.get_text(); + show_text_box(); tte_set_margins(LEFT, TOP, RIGHT, BOTTOM); while (true) @@ -75,7 +86,15 @@ int text_loop() else { line_char_index = 0; - curr_line = script[text_next_obj_id(curr_line)]; + switch (script) + { + case BTN_TRANSFER: + curr_line = transfer_script[text_next_obj_id(curr_line)]; + break; + case BTN_EVENTS: + curr_line = event_script[text_next_obj_id(curr_line)]; + break; + } curr_text = curr_line.get_text(); } char_index = 0; diff --git a/updateSYM.bat b/updateSYM.bat index 6aa3197..6e6749b 100644 --- a/updateSYM.bat +++ b/updateSYM.bat @@ -1 +1 @@ -nm --size-sort Pokemon_Mirror_mb.elf > Pokemon_Mirror_mb.sym \ No newline at end of file +nm --size-sort Poke_Transporter_GB_mb.elf > Poke_Transporter_GB_mb.sym \ No newline at end of file