diff --git a/Pokemon_Mirror_mb.sym b/Pokemon_Mirror_mb.sym new file mode 100644 index 0000000..e155c7d --- /dev/null +++ b/Pokemon_Mirror_mb.sym @@ -0,0 +1,1080 @@ +00000001 B _ZN17__eh_globals_init7_S_initE +00000001 B box_viewer +00000001 B connection_state +00000001 B current_bank +00000001 B in_data +00000001 B is_macronix +00000001 B mem_id +00000001 D mem_name +00000001 B out_data +00000001 D rand_enabled +00000001 B text_exit +00000002 W __aeabi_idiv0 +00000002 W __aeabi_ldiv0 +00000002 B __key_curr +00000002 B __key_prev +00000002 W __sync_synchronize +00000002 T _Unwind_Complete +00000002 t _Unwind_DebugHook +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 +00000004 V _ZGVNSt10moneypunctIwLb0EE2idE +00000004 V _ZGVNSt10moneypunctIwLb1EE2idE +00000004 V _ZGVNSt11__timepunctIcE2idE +00000004 V _ZGVNSt11__timepunctIwE2idE +00000004 V _ZGVNSt7__cxx1110moneypunctIcLb0EE2idE +00000004 V _ZGVNSt7__cxx1110moneypunctIcLb1EE2idE +00000004 V _ZGVNSt7__cxx1110moneypunctIwLb0EE2idE +00000004 V _ZGVNSt7__cxx1110moneypunctIwLb1EE2idE +00000004 V _ZGVNSt7__cxx117collateIcE2idE +00000004 V _ZGVNSt7__cxx117collateIwE2idE +00000004 V _ZGVNSt7__cxx118messagesIcE2idE +00000004 V _ZGVNSt7__cxx118messagesIwE2idE +00000004 V _ZGVNSt7__cxx118numpunctIcE2idE +00000004 V _ZGVNSt7__cxx118numpunctIwE2idE +00000004 V _ZGVNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE +00000004 V _ZGVNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE +00000004 V _ZGVNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE +00000004 V _ZGVNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE +00000004 V _ZGVNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE +00000004 V _ZGVNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE +00000004 V _ZGVNSt7collateIcE2idE +00000004 V _ZGVNSt7collateIwE2idE +00000004 V _ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE +00000004 V _ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE +00000004 V _ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE +00000004 V _ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE +00000004 V _ZGVNSt8messagesIcE2idE +00000004 V _ZGVNSt8messagesIwE2idE +00000004 V _ZGVNSt8numpunctIcE2idE +00000004 V _ZGVNSt8numpunctIwE2idE +00000004 V _ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE +00000004 V _ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE +00000004 V _ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE +00000004 V _ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE +00000004 V _ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE +00000004 V _ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE +00000004 V _ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE +00000004 V _ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE +00000004 b _ZGVZN12_GLOBAL__N_116get_atomic_mutexEvE12atomic_mutex +00000004 b _ZL4init +00000004 D _ZN10__cxxabiv119__terminate_handlerE +00000004 D _ZN10__cxxabiv120__unexpected_handlerE +00000004 T _ZN10script_obj11get_cond_idEv +00000004 T _ZN10script_obj14get_true_indexEv +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 _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 +00000004 b _ZZN12_GLOBAL__N_116get_static_mutexEvE4once +00000004 T ArcTan +00000004 T ArcTan2 +00000004 T BgAffineSet +00000004 T BiosCheckSum +00000004 T BitUnPack +00000004 B box_select +00000004 B btn_c_l +00000004 B btn_c_r +00000004 B btn_d_l +00000004 B btn_d_r +00000004 B btn_lang_eng +00000004 B btn_lang_fre +00000004 B btn_lang_ger +00000004 B btn_lang_ita +00000004 B btn_lang_jpn +00000004 B btn_lang_kor +00000004 B btn_lang_spa +00000004 B btn_p_l +00000004 B btn_p_r +00000004 B btn_t_l +00000004 B btn_t_r +00000004 B button_blue_left +00000004 B button_blue_right +00000004 B button_cancel_left +00000004 B button_cancel_right +00000004 B button_confirm_left +00000004 B button_confirm_right +00000004 B button_crystal_left +00000004 B button_crystal_right +00000004 B button_gold_left +00000004 B button_gold_right +00000004 B button_green_left +00000004 B button_green_right +00000004 B button_no +00000004 B button_red_left +00000004 B button_red_right +00000004 B button_silver_left +00000004 B button_silver_right +00000004 B button_yellow_left +00000004 B button_yellow_right +00000004 B button_yes +00000004 B char_index +00000004 B count +00000004 B counter +00000004 T CpuFastSet +00000004 T CpuSet +00000004 B data_counter +00000004 d defaultDevice +00000004 B delay +00000004 B delay_counter +00000004 B dex_shift +00000004 D dex_x_cord +00000004 T Diff16bitUnFilter +00000004 T Diff8bitUnFilterVram +00000004 T Diff8bitUnFilterWram +00000004 T Div +00000004 T DivArm +00000004 D environ +00000004 B fake_heap_end +00000004 B fake_heap_start +00000004 B FF_count +00000004 B frame +00000004 B gen +00000004 B gen_1_room_counter +00000004 B global_frame_count +00000004 B global_tile_id_end +00000004 D gp_tte_context +00000004 T Halt +00000004 b heap_start.0 +00000004 T HuffUnComp +00000004 b initial_env +00000004 T IntrWait +00000004 B last_error +00000004 B leading_zeros +00000004 B line_char_index +00000004 B linkSPI +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 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 +00000004 T SoftReset +00000004 T SoundBias +00000004 T SoundChannelClear +00000004 T SoundDriverInit +00000004 T SoundDriverMain +00000004 T SoundDriverMode +00000004 T SoundDriverVSync +00000004 T SoundDriverVSyncOff +00000004 T SoundDriverVSyncOn +00000004 B speed +00000004 T Sqrt +00000004 B state +00000004 T Stop +00000004 B testroid +00000004 B trade_pokemon +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 +00000004 B zero_count +00000006 T _Unwind_GetDataRelBase +00000006 T _Unwind_GetTextRelBase +00000006 T _ZN11Button_Menu20set_rows_and_columnsEii +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 DivAbs +00000006 T DivArmAbs +00000006 T DivArmMod +00000006 T Mod +00000008 t ____aeabi_d2uiz_from_thumb +00000008 t ____aeabi_dadd_from_thumb +00000008 t ____aeabi_dmul_from_thumb +00000008 t ____aeabi_idiv_from_thumb +00000008 t ____aeabi_idivmod_from_thumb +00000008 t ____aeabi_ui2d_from_thumb +00000008 t ____aeabi_uidiv_from_thumb +00000008 t ____aeabi_uidivmod_from_thumb +00000008 t ____gnu_Unwind_Restore_VFP_D_16_to_31_from_thumb +00000008 t ____gnu_Unwind_Restore_VFP_D_from_thumb +00000008 t ____gnu_Unwind_Restore_VFP_from_thumb +00000008 t ____gnu_Unwind_Restore_WMMXC_from_thumb +00000008 t ____gnu_Unwind_Restore_WMMXD_from_thumb +00000008 t ____gnu_Unwind_Save_VFP_D_16_to_31_from_thumb +00000008 t ____gnu_Unwind_Save_VFP_D_from_thumb +00000008 t ____gnu_Unwind_Save_VFP_from_thumb +00000008 t ____gnu_Unwind_Save_WMMXC_from_thumb +00000008 t ____gnu_Unwind_Save_WMMXD_from_thumb +00000008 t ___Unwind_RaiseException_from_thumb +00000008 t ___Unwind_Resume_from_thumb +00000008 t ___Unwind_Resume_or_Rethrow_from_thumb +00000008 D __key_rpt +00000008 t __restore_core_regs_from_thumb +00000008 t __strcmp_from_thumb +00000008 T _ZGTtNKSt13bad_exception4whatEv +00000008 T _ZGTtNKSt9exception4whatEv +00000008 T _ZN11Button_Menu15get_pos_from_xyEii +00000008 b _ZN12_GLOBAL__N_19fake_condE +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 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 _ZN7xse_var9set_startEv +0000000a T _ZSt10unexpectedv +0000000a T _ZSt24__throw_out_of_range_fmtPKcz +0000000a T _ZSt9terminatev +0000000c t ____aeabi_idiv0_from_arm +0000000c t ____aeabi_uidiv_from_thumb +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 _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 +0000000c T _ZN11Button_Menu12clear_vectorEv +0000000c T _ZN11Button_Menu14set_xy_min_maxEiiii +0000000c b _ZN12_GLOBAL__N_110eh_globalsE +0000000c T _ZN13Pokemon_Party16get_has_new_pkmnEv +0000000c T _ZN13Pokemon_Party21get_contains_mythicalEv +0000000c T _ZN13Pokemon_Party24set_mythic_stabilizationEb +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 _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 T key_repeat +0000000c t unwind_UCB_from_context +0000000d R _ZTSSt9bad_alloc +0000000d R _ZTSSt9exception +0000000d R _ZTSSt9type_info +0000000e T __aeabi_unwind_cpp_pr0 +0000000e W __aeabi_unwind_cpp_pr1 +0000000e W __aeabi_unwind_cpp_pr2 +0000000e T _Unwind_GetRegionStart +0000000e T _ZN10script_objC1Ev +0000000e T _ZN10script_objC2Ev +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 V _ZNSs4_Rep20_S_empty_rep_storageE +00000010 R _ZTSSt11logic_error +00000010 R _ZTV10script_var +00000010 V _ZTV11textbox_var +00000010 R _ZTV7asm_var +00000010 R _ZTV7xse_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 +00000010 T tte_set_color_attr +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 +00000014 V _ZTVN9__gnu_cxx24__concurrence_lock_errorE +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 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 +00000018 T _Unwind_DeleteException +00000018 T _Z13read_int_savej +00000018 B _Z9curr_textB5cxx11 +00000018 T _ZN10__cxxabiv117__class_type_infoD1Ev +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 _ZN9__gnu_cxx20recursive_init_errorD1Ev +00000018 T _ZN9__gnu_cxx20recursive_init_errorD2Ev +00000018 W _ZN9__gnu_cxx24__concurrence_lock_errorD1Ev +00000018 W _ZN9__gnu_cxx24__concurrence_lock_errorD2Ev +00000018 W _ZN9__gnu_cxx24__concurrence_wait_errorD1Ev +00000018 W _ZN9__gnu_cxx24__concurrence_wait_errorD2Ev +00000018 W _ZN9__gnu_cxx26__concurrence_unlock_errorD1Ev +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 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 +0000001c b _ZN12_GLOBAL__N_114emergency_poolE +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 +00000020 T __aeabi_idivmod +00000020 T __aeabi_uidivmod +00000020 T __cxa_call_terminate +00000020 T __getreent +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 _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 +00000020 W _ZN9__gnu_cxx24__concurrence_lock_errorD0Ev +00000020 W _ZN9__gnu_cxx24__concurrence_wait_errorD0Ev +00000020 W _ZN9__gnu_cxx26__concurrence_unlock_errorD0Ev +00000020 W _ZN9__gnu_cxx29__concurrence_broadcast_errorD0Ev +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 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 _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 srf_pal_copy +00000027 V _ZTSN9__gnu_cxx24__concurrence_lock_errorE +00000027 V _ZTSN9__gnu_cxx24__concurrence_wait_errorE +00000028 T __aeabi_i2d +00000028 T __cxa_free_exception +00000028 T __cxa_get_globals_fast +00000028 T __floatsidf +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 _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 +00000029 V _ZTSN9__gnu_cxx26__concurrence_unlock_errorE +0000002a T ___Unwind_Backtrace +0000002a T ___Unwind_ForcedUnwind +0000002a T ___Unwind_RaiseException +0000002a T ___Unwind_Resume +0000002a T ___Unwind_Resume_or_Rethrow +0000002a T __gnu_unwind_frame +0000002a T _Unwind_Backtrace +0000002a T _Unwind_ForcedUnwind +0000002a T _Unwind_RaiseException +0000002a T _Unwind_Resume +0000002a T _Unwind_Resume_or_Rethrow +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 _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_linkSPI +00000030 t _GLOBAL__sub_I__ZN17__eh_globals_init7_S_initE +00000030 T _Z21load_custom_save_datav +00000030 T _ZN10script_objC1ESt17basic_string_viewIcSt11char_traitsIcEEi +00000030 T _ZN10script_objC2ESt17basic_string_viewIcSt11char_traitsIcEEi +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 +00000030 T se_drawg_w8h8 +00000030 T tte_write_ex +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 +00000036 T _ZN7Pokemon12copy_from_toEPhS0_ib +00000036 T memset16 +00000038 r __irq_senders +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 +0000003c t _GLOBAL__sub_I_linkSPI +0000003c T _ZN7Pokemon20get_rand_gender_byteEhh +0000003c T _ZN7xse_var13add_referenceEi +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 _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 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 _ZN7Pokemon11insert_dataEPhS0_S0_S0_ +00000048 t _ZNK12_GLOBAL__N_117io_error_category7messageB5cxx11Ei +00000048 B dex_sprites +00000048 B game_select_def +00000048 B game_select_jpn +00000048 B game_select_kor +00000048 T irq_enable +00000048 B lang_select +00000048 B main_menu +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 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 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 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 W _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcj +00000058 B curr_rom +0000005a T _lseek_r +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 _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 _ZNSt11logic_errorD0Ev +00000060 T _ZNSt12length_errorD0Ev +00000060 T _ZNSt12out_of_rangeD0Ev +00000060 T _ZNSt13runtime_errorD0Ev +00000060 T _ZNSt8ios_base7failureD0Ev +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 +00000068 T _Z14get_rand_rangejj +00000068 T IRQ_Init +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 +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 irq_add +00000078 B party_sprites +00000078 T strncmp +0000007c T __alloc_handle +0000007c T _ZN13Pokemon_Party18get_converted_pkmnEi +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 _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 +00000088 T _Z9init_bankv +00000088 T IRQ_Disable +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 +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 +0000009c T _Z29update_memory_buffer_checksumb +0000009c T _ZN9__gnu_cxx18__exchange_and_addEPVii +000000a0 T _Z5setupv +000000a0 T isr_master +000000a2 T __sflags +000000a8 t _ZN12_GLOBAL__N_14pool4freeEPv.constprop.0 +000000ac T _malloc_trim_r +000000ac T _Z15game_load_errorv +000000ae T memset +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 +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 srf_init +000000c8 T strchr +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 +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_ +000000fc T __udivsi3 +000000fc R EVOLUTIONS +000000fc R EXP_MAX +000000fc R FIRST_MOVES +000000fc R GENDER_RATIO +000000fc R MENU_SPRITES +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 +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 +00000126 T _ZN11Button_Menu16organize_buttonsEv +00000128 T _Z5printNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE +00000128 t global_stdio_init.part.0 +00000128 T irq_set +0000012c T __cxa_guard_acquire +00000130 T __divsi3 +00000138 T main +0000013c t _strtol_l.part.0 +00000144 t _strtoul_l.isra.0 +00000148 T _Z17print_mem_sectionv +00000148 T sbmp16_blit +0000014c T _Z9test_mainv +00000150 T _Z21populate_lang_buttonsv +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 +000001dc T _ZN7Pokemon19alocate_data_chunksEPhS0_S0_S0_ +000001fa T _freopen_r +00000200 R gen_1_Eng_char_array +00000200 R gen_1_FreGer_char_array +00000200 R gen_1_ItaSpa_char_array +00000200 R gen_1_Jpn_char_array +00000200 R gen_2_Eng_char_array +00000200 R gen_2_FreGer_char_array +00000200 R gen_2_ItaSpa_char_array +00000200 R gen_2_Jpn_char_array +00000200 R gen_3_Intern_char_array +00000200 R gen_3_Jpn_char_array +0000020c T __aeabi_ddiv +0000020c T __divdf3 +00000224 T strcmp +00000248 T _ZN7Pokemon9load_dataEiPhii +0000026c T _Z14inject_mysteryR13Pokemon_Party +00000270 T _Z15run_conditionali +0000027c T _Z7creditsv +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 +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 +00000400 B obj_buffer +00000408 D __malloc_av_ +0000042c T _Z9text_loopv +00000444 T _Z17load_temp_spritesi +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 +000007e0 B NAMES +00000870 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 diff --git a/graphics/button_gold_silver_left.grit b/graphics/button_gold_left.grit similarity index 100% rename from graphics/button_gold_silver_left.grit rename to graphics/button_gold_left.grit diff --git a/graphics/button_gold_left.png b/graphics/button_gold_left.png new file mode 100644 index 0000000..290e801 Binary files /dev/null and b/graphics/button_gold_left.png differ diff --git a/graphics/button_gold_silver_left.png b/graphics/button_gold_silver_left.png deleted file mode 100644 index 857ce18..0000000 Binary files a/graphics/button_gold_silver_left.png and /dev/null differ diff --git a/graphics/button_red_blue_left.grit b/graphics/button_green_left.grit similarity index 100% rename from graphics/button_red_blue_left.grit rename to graphics/button_green_left.grit diff --git a/graphics/button_green_left.png b/graphics/button_green_left.png new file mode 100644 index 0000000..950d710 Binary files /dev/null and b/graphics/button_green_left.png differ diff --git a/graphics/button_red_blue_left.png b/graphics/button_red_blue_left.png deleted file mode 100644 index f9558ed..0000000 Binary files a/graphics/button_red_blue_left.png and /dev/null differ diff --git a/graphics/button_red_green_left.png b/graphics/button_red_green_left.png deleted file mode 100644 index fc651e7..0000000 Binary files a/graphics/button_red_green_left.png and /dev/null differ diff --git a/graphics/button_red_green_left.grit b/graphics/button_red_left.grit similarity index 100% rename from graphics/button_red_green_left.grit rename to graphics/button_red_left.grit diff --git a/graphics/button_red_left.png b/graphics/button_red_left.png new file mode 100644 index 0000000..dab5f65 Binary files /dev/null and b/graphics/button_red_left.png differ diff --git a/graphics/button_silver_left.grit b/graphics/button_silver_left.grit new file mode 100644 index 0000000..aa1971c --- /dev/null +++ b/graphics/button_silver_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_silver_left.png b/graphics/button_silver_left.png new file mode 100644 index 0000000..9227a9a Binary files /dev/null and b/graphics/button_silver_left.png differ diff --git a/include/gb_rom_values/base_gb_rom_struct.h b/include/gb_rom_values/base_gb_rom_struct.h index 11aa1ce..0f9c251 100644 --- a/include/gb_rom_values/base_gb_rom_struct.h +++ b/include/gb_rom_values/base_gb_rom_struct.h @@ -26,7 +26,6 @@ public: hword stack_overwrite_location; // The part of the stack that we're overwriting byte short_pkmn_name; // The name of the Pokemon that moves us through RAM byte pointer_pkmn_name; // The name of the Pokemon that overwrites the stack - byte enter_vector_destination; // The location within the payload array where the jump should start hword enter_vector_location; // Where we should jump to from the enter vector // This can be a few different places: // wSerialOtherGameboyRandomNumberListBlock: @@ -36,33 +35,37 @@ public: // wSerialEnemyMonsPatchList: // 0xC5D0 to 0xC6E8 - word clearScreen; - word CableClub_TextBoxBoarder; - hword placeString; - hword hSerialConnectionStatus; - hword wBoxDataStart; - hword wBoxDataEnd; - hword Serial_ExchangeBytes; - word wRemoveMonFromBox; - word wBoxCount; - word wWhichPokemon; - word _RemovePokemon; - word SaveSAVtoSRAM1; - byte SaveSAVtoSRAM1_memBank; - hword Bankswitch; - hword SoftReset; - hword garbageDataLocation; + word clearScreen; // location of the clearScreen function in the ROM + word CableClub_TextBoxBorder; // location of the CableClub_TextBoxBorder function in the ROM + word placeString; // location of the placeString function in the ROM + word Serial_ExchangeBytes; // location of the Serial_ExchangeBytes function in the ROM + word _RemovePokemon; // location of the _RemovePokemon function in the ROM + word SaveSAVtoSRAM1; // location of the SaveSAVtoSRAM1 function in the ROM + word SaveSAVtoSRAM2; // location of the SaveSAVtoSRAM2 function in the ROM + word OpenSRAM; // location of the OpenSRAM function in the ROM + word SaveBox; // location of the SaveBox function in the ROM + word Bankswitch; // location of the Bankswitch function in the ROM + word SoftReset; // location of the SoftReset function in the ROM + word garbageDataLocation; // location of random data starting with 0xFD in the ROM - hword transferWaitString; - hword pkmnTransferArray; - hword arrayCounter; - byte transferString[30]; - byte custom_name[11]; + word wRemoveMonFromBox; // location of wRemoveMonFromBox in RAM + word wBoxCount; // location of wBoxCount in RAM + word wWhichPokemon; // location of wWhichPokemon in RAM + word hSerialConnectionStatus; // location of hSerialConnectionStatus in RAM + word wBoxDataStart; // location of wBoxDataStart in RAM + word wBoxDataEnd; // location of wBoxDataEnd in RAM - hword transferStringLocation; - hword textBoarderUppLeft; - byte textBoarderWidth; - byte textBoarderHeight; + word transferWaitString; // location of the transferWaitString in RAM + word pkmnTransferArray; // location of the pkmnTransferArray in RAM + word arrayCounter; // location of the arrayCounter in RAM + + byte transferString[30]; // the custom transfer string + byte custom_name[11]; // the custom name string + + hword transferStringLocation; // location in VRAM to start writing the transfer string to + hword textBorderUppLeft; // location in VRAM to put the upper left corner of the border + byte textBorderWidth; // the width of the text box border + byte textBorderHeight; // the height of the text box border }; #endif \ No newline at end of file diff --git a/include/gb_rom_values/eng_gb_rom_values.h b/include/gb_rom_values/eng_gb_rom_values.h index 9f4960a..cffd0a0 100644 --- a/include/gb_rom_values/eng_gb_rom_values.h +++ b/include/gb_rom_values/eng_gb_rom_values.h @@ -10,12 +10,13 @@ #define SPA_ID 7 #define KOR_ID 8 -#define RED_GREEN_ID 0 -#define RED_BLUE_ID 1 +#define GREEN_ID 0 +#define RED_ID 1 #define BLUE_ID 2 #define YELLOW_ID 3 -#define GOLD_SILVER_ID 4 -#define CRYSTAL_ID 5 +#define GOLD_ID 4 +#define SILVER_ID 5 +#define CRYSTAL_ID 6 #define METHOD_NEWLINE 0 #define METHOD_MEW 1 @@ -25,7 +26,7 @@ const struct GB_ROM ENG_RED_BLUE = { .language = ENG_ID, - .version = RED_BLUE_ID, + .version = RED_ID, .generation = 1, .method = METHOD_NEWLINE, .payload_size = 637, @@ -36,41 +37,40 @@ const struct GB_ROM ENG_RED_BLUE = { .short_pkmn_name = 0xE3, .pointer_pkmn_name = 0xFC, - .enter_vector_destination = 0x05, .enter_vector_location = 0xC5D6, .clearScreen = 0x190F, - .CableClub_TextBoxBoarder = 0x5AB3, + .CableClub_TextBoxBorder = 0x5AB3, .placeString = 0x1955, - .hSerialConnectionStatus = 0xFFAA, - .wBoxDataStart = 0xDA80, - .wBoxDataEnd = 0xDEE2, .Serial_ExchangeBytes = 0x216F, + ._RemovePokemon = 0x7B68, + .SaveSAVtoSRAM1 = 0x1C77E2, + .SaveSAVtoSRAM2 = 0x1C780F, + .Bankswitch = 0x35D6, + .SoftReset = 0x1F49, + .garbageDataLocation = 0x0316, + .wRemoveMonFromBox = 0xCF95, .wBoxCount = 0xDA80, .wWhichPokemon = 0xCF92, - ._RemovePokemon = 0x7B68, - .SaveSAVtoSRAM1 = 0x77E2, - .SaveSAVtoSRAM1_memBank = 0x1C, - .Bankswitch = 0x35D6, - .SoftReset = 0x1F49, - .garbageDataLocation = 0x0316, // Starts with 0xFD + .hSerialConnectionStatus = 0xFFAA, + .wBoxDataStart = 0xDA80, + .wBoxDataEnd = 0xDEE2, - .transferWaitString = 0xC67A, // Enter vector + A4 - .pkmnTransferArray = 0xC651, // Enter vector + 7B - .arrayCounter = 0xC650, // Enter vector + 7A - .transferString = { // TRANSFERRING..\n + .transferWaitString = 0xC67A, + .pkmnTransferArray = 0xC651, + .arrayCounter = 0xC650, + .transferString = {// TRANSFERRING..\n // PLEASE WAIT! 0x93, 0x91, 0x80, 0x8D, 0x92, 0x85, 0x84, 0x91, 0x91, 0x88, 0x8D, 0x86, 0xF2, 0xF2, 0x4E, 0x7F, 0x8F, 0x8B, 0x84, 0x80, 0x92, 0x84, 0x7F, 0x96, 0x80, 0x88, 0x93, 0xE7, 0x7F, 0x50}, .custom_name = {0x85, 0x84, 0x8D, 0x8D, 0x84, 0x8B, 0x50, 0x50, 0x50, 0x50, 0x50}, .transferStringLocation = 0xC443, - .textBoarderUppLeft = 0xC42E, - .textBoarderWidth = 3, - .textBoarderHeight = 14, + .textBorderUppLeft = 0xC42E, + .textBorderWidth = 3, + .textBorderHeight = 14, }; - const struct GB_ROM ENG_YELLOW = { .language = ENG_ID, .version = YELLOW_ID, @@ -84,89 +84,170 @@ const struct GB_ROM ENG_YELLOW = { .short_pkmn_name = 0x15, .pointer_pkmn_name = 0xE3, - //.enter_vector_destination = 0x05, - //.enter_vector_location = 0xC5D6, - .clearScreen = 0x16DD, - .CableClub_TextBoxBoarder = 0x5B67, + .CableClub_TextBoxBorder = 0x5B67, .placeString = 0x1723, - .hSerialConnectionStatus = 0xFFAA, - .wBoxDataStart = 0xDA7F, - .wBoxDataEnd = 0xDEE1, .Serial_ExchangeBytes = 0x1FCB, + ._RemovePokemon = 0x7A0F, + .SaveSAVtoSRAM1 = 0x1C1B32, + .Bankswitch = 0x3E84, + .SoftReset = 0x1D05, + .garbageDataLocation = 0x0161, .wRemoveMonFromBox = 0xCF94, .wBoxCount = 0xDA7F, .wWhichPokemon = 0xCF91, - ._RemovePokemon = 0x7A0F, - .SaveSAVtoSRAM1 = 0x1B32, - .SaveSAVtoSRAM1_memBank = 0x1C, - .Bankswitch = 0x3E84, - .SoftReset = 0x1D05, - .garbageDataLocation = 0x0161, // Starts with 0xFD + .hSerialConnectionStatus = 0xFFAA, - .transferWaitString = 0xC67A, // Enter vector + A4 - .pkmnTransferArray = 0xC651, // Enter vector + 7B - .arrayCounter = 0xC650, // Enter vector + 7A - .transferString = { // TRANSFERRING..\n + .wBoxDataStart = 0xDA7F, + .wBoxDataEnd = 0xDEE1, + + .transferWaitString = 0xC67A, + .pkmnTransferArray = 0xC651, + .arrayCounter = 0xC650, + .transferString = {// TRANSFERRING..\n // PLEASE WAIT! 0x93, 0x91, 0x80, 0x8D, 0x92, 0x85, 0x84, 0x91, 0x91, 0x88, 0x8D, 0x86, 0xF2, 0xF2, 0x4E, 0x7F, 0x8F, 0x8B, 0x84, 0x80, 0x92, 0x84, 0x7F, 0x96, 0x80, 0x88, 0x93, 0xE7, 0x7F, 0x50}, .custom_name = {0x85, 0x84, 0x8D, 0x8D, 0x84, 0x8B, 0x50, 0x50, 0x50, 0x50, 0x50}, .transferStringLocation = 0xC443, - .textBoarderUppLeft = 0xC42E, - .textBoarderWidth = 3, - .textBoarderHeight = 14, + .textBorderUppLeft = 0xC42E, + .textBorderWidth = 3, + .textBorderHeight = 14, }; - - -const struct GB_ROM ENG_GOLD_SILVER = { +const struct GB_ROM ENG_GOLD = { .language = ENG_ID, - .version = GOLD_SILVER_ID, + .version = GOLD_ID, .generation = 2, .method = METHOD_GEN2, .payload_size = 672, .box_data_size = 0x44E, - /**/ .print_string_start = 0xC442, .stack_overwrite_location = 0xDFCB, // Found by seeing where 772C is stored in the stack, 772C is the code that calls PlaceString .short_pkmn_name = 0x4E, - //.pointer_pkmn_name = 0xFC, - //.enter_vector_destination = 0x05, - .enter_vector_location = 0xC5D6, + .enter_vector_location = 0xC7B4, .clearScreen = 0x000EE2, - .CableClub_TextBoxBoarder = 0x0A4D88, // LinkTextboxAtHL + .CableClub_TextBoxBorder = 0x0A4D88, // LinkTextboxAtHL .placeString = 0x000F74, + .Serial_ExchangeBytes = 0x0710, + ._RemovePokemon = 0x03603F, // RemoveMonFromPartyOrBox + .OpenSRAM = 0x0030E1, + .SaveBox = 0x054DF6, + .SoftReset = 0x05B0, + .garbageDataLocation = 0x0654, + + .wRemoveMonFromBox = 0x01D008, // wPokemonWithdrawDepositParameter + .wBoxCount = 0x01AD6C, // sBoxCount + .wWhichPokemon = 0x01D005, // wCurPartyMon .hSerialConnectionStatus = 0xFFCD, .wBoxDataStart = 0xAD6C, // sBoxStart .wBoxDataEnd = 0xB1BA, // sBoxEnd - .Serial_ExchangeBytes = 0x0710, - .wRemoveMonFromBox = 0x01D008, // wPokemonWithdrawDepositParameter, bank 1 - .wBoxCount = 0x01AD6C, // sBoxCount, bank 1 - .wWhichPokemon = 0x01D005, // wCurPartyMon, bank 1 - ._RemovePokemon = 0x03603F - 2, // RemoveMonFromPartyOrBox, bank 3 - .SaveSAVtoSRAM1 = 0x0577E2, // ? 0x4DF6 - .SaveSAVtoSRAM1_memBank = 0x5, - //.Bankswitch = 0x0010, - .SoftReset = 0x05B0, // ? - .garbageDataLocation = 0x0654, // ? Starts with 0xFD - .transferWaitString = 0xC67A, // Enter vector + - .pkmnTransferArray = 0xC651, // Enter vector + - .arrayCounter = 0xC650, // Enter vector + - .transferString = { // TRANSFERRING..\n + .transferWaitString = 0xC67A, + .pkmnTransferArray = 0xC651, + .arrayCounter = 0xC650, + .transferString = {// TRANSFERRING..\n // PLEASE WAIT! 0x93, 0x91, 0x80, 0x8D, 0x92, 0x85, 0x84, 0x91, 0x91, 0x88, 0x8D, 0x86, 0xF2, 0xF2, 0x4E, 0x7F, 0x8F, 0x8B, 0x84, 0x80, 0x92, 0x84, 0x7F, 0x96, 0x80, 0x88, 0x93, 0xE7, 0x7F, 0x50}, .custom_name = {0x85, 0x84, 0x8D, 0x8D, 0x84, 0x8B, 0x50, 0x50, 0x50, 0x50, 0x50}, - .transferStringLocation = 0xC443, // ? - .textBoarderUppLeft = 0xC42E, // ? - .textBoarderWidth = 3, // ? - .textBoarderHeight = 14, // ? + .transferStringLocation = 0xC443, + .textBorderUppLeft = 0xC42E, + .textBorderWidth = 3, + .textBorderHeight = 14, +}; +const struct GB_ROM ENG_SILVER = { + .language = ENG_ID, + .version = GOLD_ID, + .generation = 2, + .method = METHOD_GEN2, + .payload_size = 672, + .box_data_size = 0x44E, + + .print_string_start = 0xC442, + .stack_overwrite_location = 0xDFCB, // Found by seeing where 772C is stored in the stack, 772C is the code that calls PlaceString + .short_pkmn_name = 0x4E, + + .enter_vector_location = 0xC7B4, + + .clearScreen = 0x000EE2, + .CableClub_TextBoxBorder = 0x0A4D88, // LinkTextboxAtHL + .placeString = 0x000F74, + .Serial_ExchangeBytes = 0x0710, + ._RemovePokemon = 0x03603D, // RemoveMonFromPartyOrBox + .OpenSRAM = 0x0030E1, + .SaveBox = 0x054DF6, + .SoftReset = 0x05B0, + .garbageDataLocation = 0x0654, + + .wRemoveMonFromBox = 0x01D008, // wPokemonWithdrawDepositParameter + .wBoxCount = 0x01AD6C, // sBoxCount + .wWhichPokemon = 0x01D005, // wCurPartyMon + .hSerialConnectionStatus = 0xFFCD, + .wBoxDataStart = 0xAD6C, // sBoxStart + .wBoxDataEnd = 0xB1BA, // sBoxEnd + + .transferWaitString = 0xC67A, + .pkmnTransferArray = 0xC651, + .arrayCounter = 0xC650, + .transferString = {// TRANSFERRING..\n + // PLEASE WAIT! + 0x93, 0x91, 0x80, 0x8D, 0x92, 0x85, 0x84, 0x91, 0x91, 0x88, 0x8D, 0x86, 0xF2, 0xF2, 0x4E, + 0x7F, 0x8F, 0x8B, 0x84, 0x80, 0x92, 0x84, 0x7F, 0x96, 0x80, 0x88, 0x93, 0xE7, 0x7F, 0x50}, + .custom_name = {0x85, 0x84, 0x8D, 0x8D, 0x84, 0x8B, 0x50, 0x50, 0x50, 0x50, 0x50}, + + .transferStringLocation = 0xC443, + .textBorderUppLeft = 0xC42E, + .textBorderWidth = 3, + .textBorderHeight = 14, +}; +const struct GB_ROM ENG_CRYSTAL = { + .language = ENG_ID, + .version = CRYSTAL_ID, + .generation = 2, + .method = METHOD_GEN2, + .payload_size = 672, + .box_data_size = 0x44E, + + .print_string_start = 0xC4AA, + .stack_overwrite_location = 0xC0BB, // Found by seeing where 772C is stored in the stack, 772C is the code that calls PlaceString + .short_pkmn_name = 0x4E, + .enter_vector_location = 0xC7B4, + + .clearScreen = 0x000FDB, + .CableClub_TextBoxBorder = 0x0A4EEF, // LinkTextboxAtHL + .placeString = 0x001078, + .Serial_ExchangeBytes = 0x075F, + ._RemovePokemon = 0x036039, // RemoveMonFromPartyOrBox + .OpenSRAM = 0x0030E1, + .SaveBox = 0x054E0C, + .SoftReset = 0x0150, // Reset + .garbageDataLocation = 0x0770, + + .wRemoveMonFromBox = 0x01D10B, // wPokemonWithdrawDepositParameter + .wBoxCount = 0x01AD10, // sBoxCount + .wWhichPokemon = 0x01D109, // wCurPartyMon + .hSerialConnectionStatus = 0xFFCB, + .wBoxDataStart = 0x01AD10, // sBox + .wBoxDataEnd = 0x01B15E, // sBoxEnd + + .transferWaitString = 0xC67A, + .pkmnTransferArray = 0xC651, + .arrayCounter = 0xC650, + .transferString = {// TRANSFERRING..\n + // PLEASE WAIT! + 0x93, 0x91, 0x80, 0x8D, 0x92, 0x85, 0x84, 0x91, 0x91, 0x88, 0x8D, 0x86, 0xF2, 0xF2, 0x4E, + 0x7F, 0x8F, 0x8B, 0x84, 0x80, 0x92, 0x84, 0x7F, 0x96, 0x80, 0x88, 0x93, 0xE7, 0x7F, 0x50}, + .custom_name = {0x85, 0x84, 0x8D, 0x8D, 0x84, 0x8B, 0x50, 0x50, 0x50, 0x50, 0x50}, + + .transferStringLocation = 0xC443, + .textBorderUppLeft = 0xC42E, + .textBorderWidth = 3, + .textBorderHeight = 14, }; #endif \ No newline at end of file diff --git a/include/main_menu.h b/include/main_menu.h index 9ae8696..4d52ee2 100644 --- a/include/main_menu.h +++ b/include/main_menu.h @@ -42,6 +42,7 @@ private: int x_max; int y_min; int y_max; + int offset_value; int bottom_offset; bool cancel_enabled; }; diff --git a/include/pokemon_data.h b/include/pokemon_data.h index ab45a2a..84d0c30 100644 --- a/include/pokemon_data.h +++ b/include/pokemon_data.h @@ -19,12 +19,13 @@ #define SPA_ID 7 #define KOR_ID 8 -#define RED_GREEN_ID 0 -#define RED_BLUE_ID 1 +#define GREEN_ID 0 +#define RED_ID 1 #define BLUE_ID 2 #define YELLOW_ID 3 -#define GOLD_SILVER_ID 4 -#define CRYSTAL_ID 5 +#define GOLD_ID 4 +#define SILVER_ID 5 +#define CRYSTAL_ID 6 #define EVENT_MEW_JPN 0 #define EVENT_MEW_ENG 1 diff --git a/include/sprite_data.h b/include/sprite_data.h index 1c8f19e..0b74795 100644 --- a/include/sprite_data.h +++ b/include/sprite_data.h @@ -61,21 +61,24 @@ extern OBJ_ATTR *btn_lang_spa; extern OBJ_ATTR *btn_lang_kor; #define SPRITE_BATCH_GAMES 2 -#include "button_red_green_left.h" -extern OBJ_ATTR *button_red_green_left; -extern OBJ_ATTR *button_red_green_right; +#include "button_green_left.h" +extern OBJ_ATTR *button_green_left; +extern OBJ_ATTR *button_green_right; #include "button_blue_left.h" extern OBJ_ATTR *button_blue_left; extern OBJ_ATTR *button_blue_right; -#include "button_red_blue_left.h" -extern OBJ_ATTR *button_red_blue_left; -extern OBJ_ATTR *button_red_blue_right; +#include "button_red_left.h" +extern OBJ_ATTR *button_red_left; +extern OBJ_ATTR *button_red_right; #include "button_yellow_left.h" extern OBJ_ATTR *button_yellow_left; extern OBJ_ATTR *button_yellow_right; -#include "button_gold_silver_left.h" -extern OBJ_ATTR *button_gold_silver_left; -extern OBJ_ATTR *button_gold_silver_right; +#include "button_gold_left.h" +extern OBJ_ATTR *button_gold_left; +extern OBJ_ATTR *button_gold_right; +#include "button_silver_left.h" +extern OBJ_ATTR *button_silver_left; +extern OBJ_ATTR *button_silver_right; #include "button_crystal_left.h" extern OBJ_ATTR *button_crystal_left; extern OBJ_ATTR *button_crystal_right; diff --git a/source/main_menu.cpp b/source/main_menu.cpp index 442efe8..b0c8f57 100644 --- a/source/main_menu.cpp +++ b/source/main_menu.cpp @@ -20,8 +20,6 @@ Button_Menu::Button_Menu(int nRows, int nColumns, int nButton_width, int nButton cancel_enabled = enable_cancel; } - - void Button_Menu::set_xy_min_max(int nX_min, int nX_max, int nY_min, int nY_max) { x_min = nX_min; @@ -52,22 +50,34 @@ int Button_Menu::button_main() if (get_pos_from_xy(curr_x, curr_y) >= button_vector.size()) { curr_y--; + curr_x += offset_value / 2; } } else if (key_hit(KEY_DOWN) && (curr_y < (rows - 1))) { curr_y++; if (get_pos_from_xy(curr_x, curr_y) >= button_vector.size()) + { + curr_x = get_x_from_pos(button_vector.size() - 1); + } + } + else if (key_hit(KEY_LEFT) && ((curr_x > 0) || ((curr_x == 0) && (curr_y == rows - 1) && (offset_value > 0)))) + { + if (curr_x == 0 && offset_value > 0) + { + curr_y -= 1; + } + else { curr_x--; } } - else if (key_hit(KEY_LEFT) && (curr_x > 0)) - { - curr_x--; - } else if (key_hit(KEY_UP) && (curr_y > 0)) { + if (curr_y == rows - 1) + { + curr_x += offset_value / 2; + } curr_y--; } else if (key_hit(KEY_A)) @@ -121,8 +131,8 @@ void Button_Menu::organize_buttons() ((y_max - y_min) - (rows * button_height)) / (rows + 1); int horizontal_space = ((x_max - x_min) - (columns * button_width)) / (columns + 1); - int bottom_offset = ((horizontal_space + button_width) * ((rows * columns) - button_vector.size()) / 2); - + bottom_offset = ((horizontal_space + button_width) * ((rows * columns) - button_vector.size()) / 2); + offset_value = (rows * columns) - button_vector.size(); for (unsigned int i = 0; i < button_vector.size(); i++) { button_vector.at(i).set_location( @@ -158,6 +168,7 @@ void Button_Menu::set_bottom_row_offset(int nBottom_offset) bottom_offset = nBottom_offset; } -void Button_Menu::clear_vector(){ +void Button_Menu::clear_vector() +{ button_vector.clear(); } \ No newline at end of file diff --git a/source/payload_builder.cpp b/source/payload_builder.cpp index 0ae0e0f..f5e10c8 100644 --- a/source/payload_builder.cpp +++ b/source/payload_builder.cpp @@ -74,9 +74,9 @@ byte *generate_payload(GB_ROM curr_rom, bool debug) } // Set the entrance vector - payload_storage[curr_rom.enter_vector_destination] = 0xC3; - payload_storage[curr_rom.enter_vector_destination + 1] = curr_rom.enter_vector_location & 0xFF; - payload_storage[curr_rom.enter_vector_destination + 2] = (curr_rom.enter_vector_location >> 8) & 0xFF; + payload_storage[5] = 0xC3; + payload_storage[6] = curr_rom.enter_vector_location & 0xFF; + payload_storage[7] = (curr_rom.enter_vector_location >> 8) & 0xFF; // Patchlist // At 0x1BB / 0x1DE, 0xC2 in length (0xC4, but the last 2 are unused) @@ -92,21 +92,21 @@ byte *generate_payload(GB_ROM curr_rom, bool debug) // ld hl, [upper left textbox corner in VRAM] payload_storage[offset++] = 0x21; - payload_storage[offset++] = (curr_rom.textBoarderUppLeft >> 0) & 0xFF; - payload_storage[offset++] = (curr_rom.textBoarderUppLeft >> 8) & 0xFF; + payload_storage[offset++] = (curr_rom.textBorderUppLeft >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.textBorderUppLeft >> 8) & 0xFF; // ld b, 3 [height] payload_storage[offset++] = 0x06; - payload_storage[offset++] = (curr_rom.textBoarderWidth >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.textBorderWidth >> 0) & 0xFF; // ld c, 14 [width] payload_storage[offset++] = 0x0E; - payload_storage[offset++] = (curr_rom.textBoarderHeight >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.textBorderHeight >> 0) & 0xFF; - // call CableClub_TextBoxBoarder + // call CableClub_TextBoxBorder payload_storage[offset++] = 0xCD; - payload_storage[offset++] = (curr_rom.CableClub_TextBoxBoarder >> 0) & 0xFF; - payload_storage[offset++] = (curr_rom.CableClub_TextBoxBoarder >> 8) & 0xFF; + payload_storage[offset++] = (curr_rom.CableClub_TextBoxBorder >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.CableClub_TextBoxBorder >> 8) & 0xFF; // ld hl, [transfer string location] payload_storage[offset++] = 0x21; @@ -282,14 +282,24 @@ byte *generate_payload(GB_ROM curr_rom, bool debug) payload_storage[offset++] = 0xDD; /* Save the current box */ + // ld b, 0x1C [memory bank of SaveSAVtoSRAM1] + payload_storage[offset++] = 0x06; + payload_storage[offset++] = (curr_rom.SaveSAVtoSRAM1 >> 16) & 0xFF; + // ld hl, SaveSAVtoSRAM1 payload_storage[offset++] = 0x21; payload_storage[offset++] = (curr_rom.SaveSAVtoSRAM1 >> 0) & 0xFF; payload_storage[offset++] = (curr_rom.SaveSAVtoSRAM1 >> 8) & 0xFF; - // ld b, 0x1C [memory bank of SaveSAVtoSRAM1] - payload_storage[offset++] = 0x06; - payload_storage[offset++] = (curr_rom.SaveSAVtoSRAM1_memBank >> 0) & 0xFF; + // call Bankswitch [which will jump to what's loaded in HL] + payload_storage[offset++] = 0xCD; + payload_storage[offset++] = (curr_rom.Bankswitch >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.Bankswitch >> 8) & 0xFF; + + // ld hl, SaveSAVtoSRAM2 + payload_storage[offset++] = 0x21; + payload_storage[offset++] = (curr_rom.SaveSAVtoSRAM2 >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.SaveSAVtoSRAM2 >> 8) & 0xFF; // call Bankswitch [which will jump to what's loaded in HL] payload_storage[offset++] = 0xCD; @@ -426,7 +436,7 @@ byte *generate_payload(GB_ROM curr_rom, bool debug) // ld a, 0x1C payload_storage[offset++] = 0x3E; - payload_storage[offset++] = (curr_rom.SaveSAVtoSRAM1_memBank >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.SaveSAVtoSRAM1 >> 16) & 0xFF; // call BankswitchCommon payload_storage[offset++] = 0xCD; @@ -481,21 +491,21 @@ byte *generate_payload(GB_ROM curr_rom, bool debug) // ld hl, [upper left textbox corner in VRAM] payload_storage[offset++] = 0x21; - payload_storage[offset++] = (curr_rom.textBoarderUppLeft >> 0) & 0xFF; - payload_storage[offset++] = (curr_rom.textBoarderUppLeft >> 8) & 0xFF; + payload_storage[offset++] = (curr_rom.textBorderUppLeft >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.textBorderUppLeft >> 8) & 0xFF; // ld b, 3 [height] payload_storage[offset++] = 0x06; - payload_storage[offset++] = (curr_rom.textBoarderWidth >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.textBorderWidth >> 0) & 0xFF; // ld c, 14 [width] payload_storage[offset++] = 0x0E; - payload_storage[offset++] = (curr_rom.textBoarderHeight >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.textBorderHeight >> 0) & 0xFF; - // call CableClub_TextBoxBoarder + // call CableClub_TextBoxBorder payload_storage[offset++] = 0xCD; - payload_storage[offset++] = (curr_rom.CableClub_TextBoxBoarder >> 0) & 0xFF; - payload_storage[offset++] = (curr_rom.CableClub_TextBoxBoarder >> 8) & 0xFF; + payload_storage[offset++] = (curr_rom.CableClub_TextBoxBorder >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.CableClub_TextBoxBorder >> 8) & 0xFF; // ld hl, [transfer string location] payload_storage[offset++] = 0x21; @@ -682,7 +692,7 @@ byte *generate_payload(GB_ROM curr_rom, bool debug) /* Save the current box */ // ld a, 0x1C payload_storage[offset++] = 0x3E; - payload_storage[offset++] = (curr_rom.SaveSAVtoSRAM1_memBank >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.SaveSAVtoSRAM1 >> 16) & 0xFF; // call BankswitchCommon payload_storage[offset++] = 0xCD; @@ -784,7 +794,7 @@ byte *generate_payload(GB_ROM curr_rom, bool debug) // write_call(curr_rom.generation, payload_storage, offset, 0x0363D8); // Saving the box overwrites our code, so we need to move it here. - write_call(curr_rom.generation, payload_storage, offset, 0x054DF6); + write_call(curr_rom.generation, payload_storage, offset, curr_rom.SaveBox); // jp SoftReset payload_storage[offset++] = 0xC3; @@ -812,19 +822,19 @@ byte *generate_payload(GB_ROM curr_rom, bool debug) // ld hl, [upper left textbox corner in VRAM] payload_storage[offset++] = 0x21; - payload_storage[offset++] = (curr_rom.textBoarderUppLeft >> 0) & 0xFF; - payload_storage[offset++] = (curr_rom.textBoarderUppLeft >> 8) & 0xFF; + payload_storage[offset++] = (curr_rom.textBorderUppLeft >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.textBorderUppLeft >> 8) & 0xFF; // ld b, 3 [height] payload_storage[offset++] = 0x06; - payload_storage[offset++] = (curr_rom.textBoarderWidth >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.textBorderWidth >> 0) & 0xFF; // ld c, 14 [width] payload_storage[offset++] = 0x0E; - payload_storage[offset++] = (curr_rom.textBoarderHeight >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.textBorderHeight >> 0) & 0xFF; - // call CableClub_TextBoxBoarder - write_call(curr_rom.generation, payload_storage, offset, curr_rom.CableClub_TextBoxBoarder); + // call CableClub_TextBoxBorder + write_call(curr_rom.generation, payload_storage, offset, curr_rom.CableClub_TextBoxBorder); // ld hl, [transfer string location] payload_storage[offset++] = 0x21; @@ -852,7 +862,7 @@ byte *generate_payload(GB_ROM curr_rom, bool debug) // call OpenSRAM payload_storage[offset++] = 0x3E; payload_storage[offset++] = 0x01; - write_call(curr_rom.generation, payload_storage, offset, 0x0030E1); + write_call(curr_rom.generation, payload_storage, offset, curr_rom.OpenSRAM); // ld hl, (wBoxDataStart - 1) [data to send] payload_storage[offset++] = 0x21; @@ -1003,8 +1013,8 @@ byte *generate_payload(GB_ROM curr_rom, bool debug) // jp pkmn list (because saving the box overwrites the data) payload_storage[offset++] = 0xC3; - payload_storage[offset++] = 0xB4; - payload_storage[offset++] = 0xC7; + payload_storage[offset++] = (curr_rom.enter_vector_location >> 0) & 0xFF; + payload_storage[offset++] = (curr_rom.enter_vector_location >> 8) & 0xFF; // 72 total bytes of string/array stuff @@ -1061,7 +1071,6 @@ void write_call(int generation, byte array_data[], int &offset, word call_locati } else { - // Farcall: Load bank into a, adr in hl, rst 08 (0xCF) // Swap banks: Load bank into a, call rst 10 (0xD7) if (((call_location >> 16) & 0xFF) != 0x00) { @@ -1075,11 +1084,11 @@ void write_call(int generation, byte array_data[], int &offset, word call_locati } }; -int test_main() +int main() { freopen("test_payload.txt", "w", stdout); std::cout << std::endl; - byte *payload = generate_payload(ENG_GOLD_SILVER, true); + byte *payload = generate_payload(ENG_CRYSTAL, true); for (int i = 0; i < PAYLOAD_SIZE; i++) { std::cout << "0x" << std::setfill('0') << std::setw(2) << std::hex << std::uppercase << (unsigned int)payload[i] << ", "; diff --git a/source/pokemon.cpp b/source/pokemon.cpp index ce8a795..271c4fa 100644 --- a/source/pokemon.cpp +++ b/source/pokemon.cpp @@ -19,8 +19,8 @@ void Pokemon::load_data(int index, byte *party_data, int game, int lang) { switch (game) { - case RED_GREEN_ID: - case RED_BLUE_ID: + case GREEN_ID: + case RED_ID: case BLUE_ID: case YELLOW_ID: gen = 1; @@ -29,7 +29,8 @@ void Pokemon::load_data(int index, byte *party_data, int game, int lang) nickname_size = 6; box_size = 30; break; - case GOLD_SILVER_ID: + case GOLD_ID: + case SILVER_ID: case CRYSTAL_ID: gen = 2; pkmn_size = 32; @@ -43,8 +44,7 @@ void Pokemon::load_data(int index, byte *party_data, int game, int lang) { switch (game) { - case RED_GREEN_ID: - case RED_BLUE_ID: + case RED_ID: case BLUE_ID: case YELLOW_ID: gen = 1; @@ -53,7 +53,8 @@ void Pokemon::load_data(int index, byte *party_data, int game, int lang) nickname_size = 11; box_size = 20; break; - case GOLD_SILVER_ID: + case GOLD_ID: + case SILVER_ID: case CRYSTAL_ID: gen = 2; pkmn_size = 32; diff --git a/source/pokemon_party.cpp b/source/pokemon_party.cpp index f48784d..17f36cd 100644 --- a/source/pokemon_party.cpp +++ b/source/pokemon_party.cpp @@ -12,7 +12,9 @@ const GB_ROM *list_of_gb_roms[NUM_PAYLOADS] = { &ENG_RED_BLUE, &ENG_YELLOW, - &ENG_GOLD_SILVER, + &ENG_GOLD, + &ENG_SILVER, + &ENG_CRYSTAL, }; byte gen1_debug_box_data[0x462] = { diff --git a/source/script_array.cpp b/source/script_array.cpp index 57136df..4a317ca 100644 --- a/source/script_array.cpp +++ b/source/script_array.cpp @@ -139,22 +139,29 @@ void populate_lang_buttons() void populate_game_buttons() { game_select_jpn.clear_vector(); - game_select_jpn.add_button(Button(button_red_green_left, button_red_green_right, 64), RED_GREEN_ID); + game_select_jpn.set_rows_and_columns(3, 3); + game_select_jpn.add_button(Button(button_green_left, button_green_right, 64), GREEN_ID); + game_select_jpn.add_button(Button(button_red_left, button_red_right, 64), RED_ID); game_select_jpn.add_button(Button(button_blue_left, button_blue_right, 64), BLUE_ID); game_select_jpn.add_button(Button(button_yellow_left, button_yellow_right, 64), YELLOW_ID); - game_select_jpn.add_button(Button(button_gold_silver_left, button_gold_silver_right, 64), GOLD_SILVER_ID); + game_select_jpn.add_button(Button(button_gold_left, button_gold_right, 64), GOLD_ID); + game_select_jpn.add_button(Button(button_silver_left, button_silver_right, 64), SILVER_ID); game_select_jpn.add_button(Button(button_crystal_left, button_crystal_right, 64), CRYSTAL_ID); - game_select_jpn.set_xy_min_max(48, 240, 0, 120); + game_select_jpn.set_xy_min_max(32, 240, 0, 120); game_select_kor.clear_vector(); - game_select_kor.add_button(Button(button_gold_silver_left, button_gold_silver_right, 64), GOLD_SILVER_ID); + game_select_kor.set_rows_and_columns(1, 2); + game_select_kor.add_button(Button(button_gold_left, button_gold_right, 64), GOLD_ID); + game_select_kor.add_button(Button(button_silver_left, button_silver_right, 64), SILVER_ID); game_select_kor.set_xy_min_max(48, 240, 0, 120); game_select_def.clear_vector(); - game_select_def.set_rows_and_columns(2, 2); - game_select_def.add_button(Button(button_red_blue_left, button_red_blue_right, 64), RED_BLUE_ID); + game_select_def.set_rows_and_columns(3, 2); + game_select_def.add_button(Button(button_red_left, button_red_right, 64), RED_ID); + game_select_def.add_button(Button(button_blue_left, button_blue_right, 64), RED_ID); // red and blue are identical, so we just say red game_select_def.add_button(Button(button_yellow_left, button_yellow_right, 64), YELLOW_ID); - game_select_def.add_button(Button(button_gold_silver_left, button_gold_silver_right, 64), GOLD_SILVER_ID); + game_select_def.add_button(Button(button_gold_left, button_gold_right, 64), GOLD_ID); + game_select_def.add_button(Button(button_silver_left, button_silver_right, 64), SILVER_ID); game_select_def.add_button(Button(button_crystal_left, button_crystal_right, 64), CRYSTAL_ID); game_select_def.set_xy_min_max(48, 240, 0, 120); } diff --git a/source/sprite_data.cpp b/source/sprite_data.cpp index 9011494..5270032 100644 --- a/source/sprite_data.cpp +++ b/source/sprite_data.cpp @@ -119,16 +119,18 @@ OBJ_ATTR *btn_lang_ger = &obj_buffer[num_sprites++]; OBJ_ATTR *btn_lang_spa = &obj_buffer[num_sprites++]; OBJ_ATTR *btn_lang_kor = &obj_buffer[num_sprites++]; -OBJ_ATTR *button_red_green_left = &obj_buffer[num_sprites++]; -OBJ_ATTR *button_red_green_right = &obj_buffer[num_sprites++]; +OBJ_ATTR *button_green_left = &obj_buffer[num_sprites++]; +OBJ_ATTR *button_green_right = &obj_buffer[num_sprites++]; OBJ_ATTR *button_blue_left = &obj_buffer[num_sprites++]; OBJ_ATTR *button_blue_right = &obj_buffer[num_sprites++]; -OBJ_ATTR *button_red_blue_left = &obj_buffer[num_sprites++]; -OBJ_ATTR *button_red_blue_right = &obj_buffer[num_sprites++]; +OBJ_ATTR *button_red_left = &obj_buffer[num_sprites++]; +OBJ_ATTR *button_red_right = &obj_buffer[num_sprites++]; OBJ_ATTR *button_yellow_left = &obj_buffer[num_sprites++]; OBJ_ATTR *button_yellow_right = &obj_buffer[num_sprites++]; -OBJ_ATTR *button_gold_silver_left = &obj_buffer[num_sprites++]; -OBJ_ATTR *button_gold_silver_right = &obj_buffer[num_sprites++]; +OBJ_ATTR *button_gold_left = &obj_buffer[num_sprites++]; +OBJ_ATTR *button_gold_right = &obj_buffer[num_sprites++]; +OBJ_ATTR *button_silver_left = &obj_buffer[num_sprites++]; +OBJ_ATTR *button_silver_right = &obj_buffer[num_sprites++]; OBJ_ATTR *button_crystal_left = &obj_buffer[num_sprites++]; OBJ_ATTR *button_crystal_right = &obj_buffer[num_sprites++]; @@ -221,16 +223,18 @@ void load_temp_sprites(int sprite_batch_id) break; case SPRITE_BATCH_GAMES: - load_sprite(button_red_green_left, button_red_green_leftTiles, button_red_green_leftTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1); - load_sprite(button_red_green_right, button_game_select_edgeTiles, button_game_select_edgeTilesLen, curr_tile_id, BTN_PAL, ATTR0_TALL, ATTR1_SIZE_8x32, 1); + load_sprite(button_green_left, button_green_leftTiles, button_green_leftTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1); + load_sprite(button_green_right, button_game_select_edgeTiles, button_game_select_edgeTilesLen, curr_tile_id, BTN_PAL, ATTR0_TALL, ATTR1_SIZE_8x32, 1); load_sprite(button_blue_left, button_blue_leftTiles, button_blue_leftTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1); load_sprite(button_blue_right, button_game_select_edgeTiles, button_game_select_edgeTilesLen, curr_tile_id, BTN_PAL, ATTR0_TALL, ATTR1_SIZE_8x32, 1); - load_sprite(button_red_blue_left, button_red_blue_leftTiles, button_red_blue_leftTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1); - load_sprite(button_red_blue_right, button_game_select_edgeTiles, button_game_select_edgeTilesLen, curr_tile_id, BTN_PAL, ATTR0_TALL, ATTR1_SIZE_8x32, 1); + load_sprite(button_red_left, button_red_leftTiles, button_red_leftTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1); + load_sprite(button_red_right, button_game_select_edgeTiles, button_game_select_edgeTilesLen, curr_tile_id, BTN_PAL, ATTR0_TALL, ATTR1_SIZE_8x32, 1); load_sprite(button_yellow_left, button_yellow_leftTiles, button_yellow_leftTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1); load_sprite(button_yellow_right, button_game_select_edgeTiles, button_game_select_edgeTilesLen, curr_tile_id, BTN_PAL, ATTR0_TALL, ATTR1_SIZE_8x32, 1); - load_sprite(button_gold_silver_left, button_gold_silver_leftTiles, button_gold_silver_leftTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1); - load_sprite(button_gold_silver_right, button_game_select_edgeTiles, button_game_select_edgeTilesLen, curr_tile_id, BTN_PAL, ATTR0_TALL, ATTR1_SIZE_8x32, 1); + load_sprite(button_gold_left, button_gold_leftTiles, button_gold_leftTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1); + load_sprite(button_gold_right, button_game_select_edgeTiles, button_game_select_edgeTilesLen, curr_tile_id, BTN_PAL, ATTR0_TALL, ATTR1_SIZE_8x32, 1); + load_sprite(button_silver_left, button_silver_leftTiles, button_silver_leftTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1); + load_sprite(button_silver_right, button_game_select_edgeTiles, button_game_select_edgeTilesLen, curr_tile_id, BTN_PAL, ATTR0_TALL, ATTR1_SIZE_8x32, 1); load_sprite(button_crystal_left, button_crystal_leftTiles, button_crystal_leftTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1); load_sprite(button_crystal_right, button_game_select_edgeTiles, button_game_select_edgeTilesLen, curr_tile_id, BTN_PAL, ATTR0_TALL, ATTR1_SIZE_8x32, 1); break; diff --git a/source/test_payload.txt b/source/test_payload.txt index 7e7a6ca..074b67f 100644 --- a/source/test_payload.txt +++ b/source/test_payload.txt @@ -1,31 +1,31 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, # 0x10 -0xFD, 0xFD, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, +0xFD, 0xFD, 0xB4, 0xC7, 0xFF, 0x3E, 0x05, 0xD7, 0xCD, 0x0C, 0x4E, 0xC3, 0x50, 0x01, 0x00, 0x00, # 0x20 -0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # 0x30 -0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # 0x40 -0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # 0x50 -0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # 0x60 -0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # 0x70 -0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # 0x80 -0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # 0x90 -0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # 0xA0 -0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # 0xB0 -0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # 0xC0 -0x80, 0x80, 0x80, 0xD6, 0xC5, 0xFF, 0xFF, 0xFF, 0x3E, 0x03, 0xD7, 0xCD, 0xD8, 0x63, 0x3E, 0x05, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # 0xD0 -0xD7, 0xCD, 0xF6, 0x4D, 0xC3, 0xB0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # 0xE0 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # 0xF0 @@ -57,21 +57,21 @@ # 0x1C0 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # 0x1D0 -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFF, 0xFF, 0xCD, 0xE2, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFF, 0xFF, 0xCD, 0xDB, # 0x1E0 -0x0E, 0x21, 0x2E, 0xC4, 0x06, 0x03, 0x0E, 0x0E, 0x3E, 0x0A, 0xD7, 0xCD, 0x88, 0x4D, 0x21, 0x43, +0x0F, 0x21, 0x2E, 0xC4, 0x06, 0x03, 0x0E, 0x0E, 0x3E, 0x0A, 0xD7, 0xCD, 0xEF, 0x4E, 0x21, 0x43, # 0x1F0 -0xC4, 0x11, 0x7A, 0xC6, 0xCD, 0x74, 0x0F, 0x21, 0xCD, 0xFF, 0x36, 0x02, 0x3E, 0x01, 0xCD, 0xE1, +0xC4, 0x11, 0x7A, 0xC6, 0xCD, 0x78, 0x10, 0x21, 0xCB, 0xFF, 0x36, 0x02, 0x3E, 0x01, 0xCD, 0xE1, # 0x200 -0x30, 0x21, 0x6B, 0xAD, 0x36, 0xFD, 0x11, 0x6A, 0xAD, 0x01, 0x50, 0x04, 0xCD, 0x10, 0x07, 0x21, +0x30, 0x21, 0x0F, 0xAD, 0x36, 0xFD, 0x11, 0x0E, 0xAD, 0x01, 0x50, 0x04, 0xCD, 0x5F, 0x07, 0x21, # 0x210 -0xCD, 0xFF, 0x36, 0x02, 0x21, 0x54, 0x06, 0x11, 0x51, 0xC6, 0x01, 0x1E, 0x00, 0x00, 0x00, 0x00, +0xCB, 0xFF, 0x36, 0x02, 0x21, 0x70, 0x07, 0x11, 0x51, 0xC6, 0x01, 0x1E, 0x00, 0x00, 0x00, 0x00, # 0x220 -0x21, 0x08, 0xD0, 0x36, 0x01, 0xFA, 0x50, 0xC6, 0x5F, 0x16, 0x00, 0x21, 0x51, 0xC6, 0x19, 0x3C, +0x21, 0x0B, 0xD1, 0x36, 0x01, 0xFA, 0x50, 0xC6, 0x5F, 0x16, 0x00, 0x21, 0x51, 0xC6, 0x19, 0x3C, # 0x230 -0xEA, 0x50, 0xC6, 0xFA, 0x6C, 0xAD, 0x47, 0x2A, 0xFE, 0xFF, 0x28, 0x0F, 0xB8, 0x30, 0xE6, 0x21, +0xEA, 0x50, 0xC6, 0xFA, 0x10, 0xAD, 0x47, 0x2A, 0xFE, 0xFF, 0x28, 0x0F, 0xB8, 0x30, 0xE6, 0x21, # 0x240 -0x05, 0xD0, 0x77, 0x3E, 0x03, 0xD7, 0xCD, 0x3F, 0x60, 0x18, 0xDA, 0xC3, 0xB6, 0xC7, 0x00, 0x00, +0x09, 0xD1, 0x77, 0x3E, 0x03, 0xD7, 0xCD, 0x39, 0x60, 0x18, 0xDA, 0xC3, 0xB4, 0xC7, 0x00, 0x00, # 0x250 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x1C, 0x1B, 0x1A, 0x19, 0x18, 0x17, # 0x260 diff --git a/updateSYM.bat b/updateSYM.bat new file mode 100644 index 0000000..6aa3197 --- /dev/null +++ b/updateSYM.bat @@ -0,0 +1 @@ +nm --size-sort Pokemon_Mirror_mb.elf > Pokemon_Mirror_mb.sym \ No newline at end of file