From cc1a86732804404d1b5eb75328564e216eba9412 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 21 Dec 2014 06:29:16 +0100 Subject: Start adding gbaover - unfinished --- game_config.txt | 235 ++++++++++++------------ gba_memory.c | 540 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 647 insertions(+), 128 deletions(-) diff --git a/game_config.txt b/game_config.txt index cac9926..a5eb158 100644 --- a/game_config.txt +++ b/game_config.txt @@ -65,37 +65,116 @@ # bios_rom_hack_2C - like the above but allows Rayman Advance to work. -# Castlevania: Circle of the Moon (E) +# [!] - covered in gbaover + +# 007 - Nightfire (U) [!] +game_name = NIGHTFIRE +game_code = A7OE +vender_code = 69 +idle_loop_eliminate_target = 080031d6 + +# Advance Wars (E) [!] +# This one was really annoying to find, I hope it's okay.. there +# might be a better one somewhere. +game_name = ADVANCEWARSP +game_code = AWRP +vender_code = 01 +idle_loop_eliminate_target = 0803880a + +# Advance Wars (U) [!] +# This one was really annoying to find, I hope it's okay.. there +# might be a better one somewhere. +game_name = ADVANCEWARS +game_code = AWRE +vender_code = 01 +idle_loop_eliminate_target = 0803880a + +# Advance Wars 2 - Black Hole Rising (E) [!] +game_name = ADVANCEWARS2 +game_code = AW2P +vender_code = 01 +idle_loop_eliminate_target = 080371be + +# Advance Wars 2: Black Hole Rising (U) [!] +game_name = ADVANCEWARS2 +game_code = AW2E +vender_code = 01 +idle_loop_eliminate_target = 08036e2a + +# Battle Network RockMan EXE (J) [!] +game_name = ROCKMAN_EXE +game_code = AREJ +vender_code = 08 +idle_loop_eliminate_target = 08000338 + +# Bomberman Tournament (U) [!] +game_name = BOMSTORYUSA +game_code = ABSE +vender_code = 52 +idle_loop_eliminate_target = 08000526 + +# Bookworm (U) [!] +game_name = BOOKWORM +game_code = BKWE +vender_code = 5G +idle_loop_eliminate_target = 0800397c + +# Broken Sword - The Shadow of the Templars (U) [!] +game_name = BROKENSWORD +game_code = ABJE +vender_code = 6L +idle_loop_eliminate_target = 08000a26 + +# Castlevania: Circle of the Moon (E) [!] game_name = DRACULA AGB1 game_code = AAMP vender_code = A4 idle_loop_eliminate_target = 080003d2 -# Castlevania: Circle of the Moon (U) +# Castlevania: Circle of the Moon (U) [!] game_name = DRACULA AGB1 game_code = AAME vender_code = A4 idle_loop_eliminate_target = 080003d2 -# Megaman Battle Network (E) +# Disney's Aladdin (J) [!] +game_name = ALADDIN +game_code = AJ6J +vender_code = 08 +iwram_stack_optimize = no + +# Disney's Aladdin (E) [!] +game_name = ALADDIN +game_code = BADP +vender_code = 08 +iwram_stack_optimize = no + +# Disney's Aladdin (U) [!] +game_name = ALADDIN +game_code = BADE +vender_code = 08 +iwram_stack_optimize = no + +# Drill Dozer (U) [!] +game_name = DRILL DOZER +game_code = V49E +vender_code = 01 +idle_loop_eliminate_target = 080006c2 + +# Megaman Battle Network (E) [!] game_name = MEGAMANEXEBN game_code = AREP vender_code = 08 idle_loop_eliminate_target = 08000338 -# Megaman Battle Network (U) +# Megaman Battle Network (U) [!] game_name = MEGAMAN_BN game_code = AREE vender_code = 08 idle_loop_eliminate_target = 08000338 -# Battle Network RockMan EXE (J) -game_name = ROCKMAN_EXE -game_code = AREJ -vender_code = 08 -idle_loop_eliminate_target = 08000338 -# Megaman Battle Network 2 (U) +# Megaman Battle Network 2 (U) [!] game_name = MEGAMAN_EXE2 game_code = AE2E vender_code = 08 @@ -200,7 +279,7 @@ game_code = AMZE vender_code = 01 idle_loop_eliminate_target = 08001cf2 -# Super Mario Advance (E/U) +# Super Mario Advance (E/U) [!] game_name = SUPER MARIOA game_code = AMAE vender_code = 01 @@ -230,42 +309,27 @@ game_code = A3AE vender_code = 01 idle_loop_eliminate_target = 08002ba4 -# Super Mario Advance 4 (U) +# Super Mario Advance 4 (U) [!] game_name = SUPER MARIOD game_code = AX4E vender_code = 01 idle_loop_eliminate_target = 08000732 flash_rom_type = 128KB -# Super Mario Advance 4 (J) +# Super Mario Advance 4 (J) [!] game_name = SUPER MARIOD game_code = AX4J vender_code = 01 idle_loop_eliminate_target = 08000732 flash_rom_type = 128KB -# Super Mario Advance 4 (E) +# Super Mario Advance 4 (E) [!] game_name = SUPER MARIOD game_code = AX4P vender_code = 01 idle_loop_eliminate_target = 08000732 flash_rom_type = 128KB -# Advance Wars (E) -# This one was really annoying to find, I hope it's okay.. there -# might be a better one somewhere. -game_name = ADVANCEWARSP -game_code = AWRP -vender_code = 01 -idle_loop_eliminate_target = 0803880a - -# Advance Wars (U) -# This one was really annoying to find, I hope it's okay.. there -# might be a better one somewhere. -game_name = ADVANCEWARS -game_code = AWRE -vender_code = 01 -idle_loop_eliminate_target = 0803880a # Pokemon Emerald (E/U) # I don't know why this has an idle loop when Ruby doesn't.... @@ -382,11 +446,6 @@ game_code = AXVF vender_code = 01 flash_rom_type = 128KB -# V-Rally 3 (E) -game_name = V-RALLY 3 -game_code = AVRP -vender_code = 70 -idle_loop_eliminate_target = 080aa920 # Mario Vs Donkey Kong (U) game_name = MARIOVSDK @@ -541,7 +600,7 @@ translation_gate_target = 03000820 translation_gate_target = 030009ac translation_gate_target = 03007dac -# Golden Sun: The Lost Age (U) +# Golden Sun: The Lost Age (U) [!] # Probably the most horrifically coded GBA game in existence. game_name = GOLDEN_SUN_B game_code = AGFE @@ -664,23 +723,6 @@ game_code = AN8P vender_code = 01 iwram_stack_optimize = no -# Advance Wars 2: Black Hole Rising (U) -game_name = ADVANCEWARS2 -game_code = AW2E -vender_code = 01 -idle_loop_eliminate_target = 08036e2a - -# Bomberman Tournament (U) -game_name = BOMSTORYUSA -game_code = ABSE -vender_code = 52 -idle_loop_eliminate_target = 08000526 - -# Broken Sword - The Shadow of the Templars (U) -game_name = BROKENSWORD -game_code = ABJE -vender_code = 6L -idle_loop_eliminate_target = 08000a26 # Defender of The Crown (U) game_name = DOTC @@ -688,11 +730,6 @@ game_code = ADHE vender_code = 5N idle_loop_eliminate_target = 080007ec -# Drill Dozer (U) -game_name = DRILL DOZER -game_code = V49E -vender_code = 01 -idle_loop_eliminate_target = 080006c2 # F-Zero for Game Boy Advance (J) game_name = F-ZERO ADVAN @@ -814,11 +851,6 @@ game_code = AYWE vender_code = A4 idle_loop_eliminate_target = 08089792 -# Wario Ware, Inc. Mega Microgames (U) -game_name = WARIOWAREINC -game_code = AZWE -vender_code = 01 -idle_loop_eliminate_target = 08000f66 # Tom Clancy's Splinter Cell (U) game_name = SPLINTERCELL @@ -905,29 +937,9 @@ game_code = BTJE vender_code = 4Z idle_loop_eliminate_target = 080009a4 -# Virtual Kasparov (U) -game_name = VIRTKASPAROV -game_code = AVKE -vender_code = 60 -idle_loop_eliminate_target = 0800093a -# Advance Wars 2 - Black Hole Rising (E) -game_name = ADVANCEWARS2 -game_code = AW2P -vender_code = 01 -idle_loop_eliminate_target = 080371be -# Bookworm (U) -game_name = BOOKWORM -game_code = BKWE -vender_code = 5G -idle_loop_eliminate_target = 0800397c -# 007 - Nightfire (U) -game_name = NIGHTFIRE -game_code = A7OE -vender_code = 69 -idle_loop_eliminate_target = 080031d6 # Asterix & Obelix XXL (E) game_name = ASTERIX @@ -935,7 +947,6 @@ game_code = BLXP vender_code = 70 idle_loop_eliminate_target = 0846d060 -# Was this game released in Japan? What as? # Ninja Five-0 (U) game_name = NINJA FIVE 0 game_code = ANXE @@ -1029,126 +1040,98 @@ vender_code = 00 translation_gate_target = 03000f1c -# J.LEAGUE プロサッカークラブをつくろう!アドバンス (J) # J League Pro Soccer Club wo Tsukurou Advance (J) game_name = SAKATUKUADV game_code = AC2J vender_code = 8P iwram_stack_optimize = no -# アニマル横町 どきどき進級試験!の巻 (J) # Animal Yokochou Dokidoki Shinkyuu Shiken (J) game_name = ANIYOKO2 game_code = BAXJ vender_code = A4 iwram_stack_optimize = no -# アラジン (J) -# Disney's Aladdin (J) -game_name = ALADDIN -game_code = AJ6J -vender_code = 08 -iwram_stack_optimize = no -# うえきの法則 神器炸裂!能力者バトル (J) -# Ueki no Housoku Jingi Sakuretsu! Nouryokusya Battle (J) -game_name = UEKIJINGIBTL -game_code = BUHJ -vender_code = D9 -iwram_stack_optimize = no -# オリエンタルブルー 青の天外 (J) # Oriental Blue - Ao no Tengai (J) game_name = ORIENTALBLUE game_code = AORJ vender_code = 01 iwram_stack_optimize = no -# カルチョビット (J) # Calciobit (J) game_name = CALCIOBIT01 game_code = BIXJ vender_code = 01 flash_rom_type = 128KB -# ゲームボーイウォーズアドバンス1+2 (J) # Game Boy Wars Advance 1+2 (J) game_name = GBWARS1+2 game_code = BGWJ vender_code = 01 flash_rom_type = 128KB -# こいぬちゃんのはじめてのおさんぽ (J) # Koinu-Chan no Hajimete no Osanpo (J) game_name = OSANPO game_code = BISJ vender_code = 1Q iwram_stack_optimize = no -# チキン・リトル (J) # Chicken Little (J) game_name = CLITTLEJ game_code = BCHJ vender_code = G9 iwram_stack_optimize = no -# とっとこハム太郎 ハムハムスポーツ (JU) # Tottoko Hamutaro Hamuhamu Sports (JU) game_name = HAMSPORTS game_code = B85A vender_code = 01 iwram_stack_optimize = no -# 西原理恵子の殿堂麻雀 (J) # Nishihara Rieko no Dendou Mahjong (J) game_name = DENDOHMAJANG game_code = ASMJ vender_code = AG iwram_stack_optimize = no -# ボンバーマンジェッターズ ゲームコレクション (J) # Bomberman Jetters Game Collection (J) game_name = BOMBERMANJGC game_code = BOMJ vender_code = 18 iwram_stack_optimize = no -# ポケットモンスター リーフグリーン (J) # Pokemon Leaf Green (J) game_name = POKEMON LEAF game_code = BPGJ vender_code = 01 flash_rom_type = 128KB -# マジカル封神 (J) # Magical Houshin (J) game_name = M HOUSHIN game_code = AJOJ vender_code = C8 iwram_stack_optimize = no -# メダル オブ オナー (J) # Medal of Honor (J) game_name = INFILTRATOR game_code = BMHJ vender_code = 13 iwram_stack_optimize = no -# ロボットポンコッツ2 クロスバージョン (J) # Robot Ponkotto 2 - Cross Version (J) game_name = ROBOPON2CROS game_code = ACVJ vender_code = 18 iwram_stack_optimize = no -# ロボットポンコッツ2 リングバージョン (J) # Robot Ponkotto 2 - Ring Version (J) game_name = ROBOPON2RING game_code = ARPJ vender_code = 18 iwram_stack_optimize = no -# 桃太郎電鉄G 〜ゴールド・デッキを作れ!〜 (J) # Momotarou Densetsu G - Gold Deck wo Tsukure! (J) game_name = MOMOTETSU-G game_code = BM2J @@ -1175,14 +1158,26 @@ vender_code = EB iwram_stack_optimize = no flash_rom_type = 512KB -# Disney's Aladdin (E) -game_name = ALADDIN -game_code = BADP -vender_code = 08 +# Ueki no Housoku Jingi Sakuretsu! Nouryokusya Battle (J) [!] +game_name = UEKIJINGIBTL +game_code = BUHJ +vender_code = D9 iwram_stack_optimize = no -# Disney's Aladdin (U) -game_name = ALADDIN -game_code = BADE -vender_code = 08 -iwram_stack_optimize = no +# V-Rally 3 (E) +game_name = V-RALLY 3 +game_code = AVRP +vender_code = 70 +idle_loop_eliminate_target = 080aa920 + +# Virtual Kasparov (U) +game_name = VIRTKASPAROV +game_code = AVKE +vender_code = 60 +idle_loop_eliminate_target = 0800093a + +# Wario Ware, Inc. Mega Microgames (U) [!] +game_name = WARIOWAREINC +game_code = AZWE +vender_code = 01 +idle_loop_eliminate_target = 08000f66 diff --git a/gba_memory.c b/gba_memory.c index ccea878..b03d6b8 100644 --- a/gba_memory.c +++ b/gba_memory.c @@ -2232,6 +2232,529 @@ static s32 parse_config_line(char *current_line, char *current_variable, char *c return 0; } +typedef struct +{ + char romtitle[256]; + char gamepak_title[256]; + char gamepak_code[256]; + char gamepak_maker[256]; + int flash_size; + flash_device_id_type flash_device_id; + int save_type; + int rtc_enabled; + int mirroring_enabled; + int use_bios; + u32 idle_loop_target_pc; + u32 iwram_stack_optimize; + u32 translation_gate_target_1; + u32 translation_gate_target_2; + u32 translation_gate_target_3; +} ini_t; + +static const ini_t gbaover[256] = { + { + "007 - Nightfire (U)", /* rom title */ + "NIGHTFIRE", /* gamepak_title */ + "A7OE", /* gamepak_code */ + "69", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x80031d6, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Advance Wars (E)", /* rom title */ + "ADVANCEWARSP", /* gamepak_title */ + "AWRP", /* gamepak_code */ + "01", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x803880a, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Advance Wars (U)", /* rom title */ + "ADVANCEWARS", /* gamepak_title */ + "AWRE", /* gamepak_code */ + "01", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x803880a, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Advance Wars 2: Black Hole Rising (E)", /* rom title */ + "ADVANCEWARS2", /* gamepak_title */ + "AW2P", /* gamepak_code */ + "01", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x8036e2a, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Advance Wars 2: Black Hole Rising (U)", /* rom title */ + "ADVANCEWARS2", /* gamepak_title */ + "AW2E", /* gamepak_code */ + "01", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x8036e2a, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Battle Network RockMan EXE (J)",/* rom title */ + "ROCKMAN_EXE", /* gamepak_title */ + "AREJ", /* gamepak_code */ + "08", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x8000338, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Bomberman Tournament (U)", /* rom title */ + "BOMSTORYUSA", /* gamepak_title */ + "ABSE", /* gamepak_code */ + "52", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x8000526, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Bookworm (U)", /* rom title */ + "BOOKWORM", /* gamepak_title */ + "BKWE", /* gamepak_code */ + "5G", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x800397c, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Broken Sword - The Shadow of the Templars (U)", /* rom title */ + "BROKENSWORD", /* gamepak_title */ + "ABJE", /* gamepak_code */ + "6L", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x8000a26, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Castlevania (E)", /* rom title */ + "DRACULA AGB1", /* gamepak_title */ + "AAMP", /* gamepak_code */ + "A4", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x80003d2, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Castlevania Circle Of The Moon (U)",/* rom title */ + "DRACULA AGB1", /* gamepak_title */ + "AAME", /* gamepak_code */ + "A4", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x80003d2, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Disney's Aladdin (J)", /* rom title */ + "ALADDIN", /* gamepak_title */ + "AJ6J", /* gamepak_code */ + "08", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0, /* idle_loop_target_pc */ + 0, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Disney's Aladdin (E)", /* rom title */ + "ALADDIN", /* gamepak_title */ + "BADP", /* gamepak_code */ + "08", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0, /* idle_loop_target_pc */ + 0, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Disney's Aladdin (U)", /* rom title */ + "ALADDIN", /* gamepak_title */ + "BADE", /* gamepak_code */ + "08", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0, /* idle_loop_target_pc */ + 0, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Drill Dozer (U)", /* rom title */ + "DRILL DOZER", /* gamepak_title */ + "V49E", /* gamepak_code */ + "01", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x80006c2, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Golden Sun: The Lost Age (U)",/* rom title */ + "GOLDEN_SUN_B", /* gamepak_title */ + "AGFE", /* gamepak_code */ + "01", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x08013542, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0x30009ac, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Megaman Battle Network (E)",/* rom title */ + "MEGAMANEXEBN", /* gamepak_title */ + "AREP", /* gamepak_code */ + "08", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x8000338, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Megaman Battle Network (U)",/* rom title */ + "MEGAMAN_BN", /* gamepak_title */ + "AREE", /* gamepak_code */ + "08", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x8000338, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Megaman Battle Network 2 (U)",/* rom title */ + "MEGAMAN_EXE2", /* gamepak_title */ + "AE2E", /* gamepak_code */ + "08", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x8000358, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Super Mario Advance (E/U)", /* rom title */ + "SUPER MARIOA", /* gamepak_title */ + "AMAE", /* gamepak_code */ + "01", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x8001cf2, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Super Mario Advance 4 (J)", /* rom title */ + "SUPER MARIOD", /* gamepak_title */ + "AX4J", /* gamepak_code */ + "01", /* gamepak_maker */ + 0, /* flash_size */ + FLASH_DEVICE_MACRONIX_128KB, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x8000732, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Super Mario Advance 4 (E)", /* rom title */ + "SUPER MARIOD", /* gamepak_title */ + "AX4P", /* gamepak_code */ + "01", /* gamepak_maker */ + 0, /* flash_size */ + FLASH_DEVICE_MACRONIX_128KB, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x8000732, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Super Mario Advance 4 (U)", /* rom title */ + "SUPER MARIOD", /* gamepak_title */ + "AX4E", /* gamepak_code */ + "01", /* gamepak_maker */ + 0, /* flash_size */ + FLASH_DEVICE_MACRONIX_128KB, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x8000732, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Ueki no Housoku Jingi Sakuretsu! Nouryokusya Battle (J)", /* rom title */ + "UEKIJINGIBTL", /* gamepak_title */ + "BUHJ", /* gamepak_code */ + "D9", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0, /* idle_loop_target_pc */ + 0, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, + { + "Wario Ware, Inc. Mega Microgames (U)", /* rom title */ + "WARIOWAREINC", /* gamepak_title */ + "AZWE", /* gamepak_code */ + "01", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0x8000f66, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, +#if 0 + { + "Sample", /* rom title */ + "", /* gamepak_title */ + "", /* gamepak_code */ + "", /* gamepak_maker */ + 0, /* flash_size */ + 0, /* flash_device_id */ + 0, /* save_type */ + 0, /* rtc_enabled */ + 0, /* mirroring_enabled */ + 0, /* use_bios */ + 0, /* idle_loop_target_pc */ + 1, /* iwram_stack_optimize */ + 0, /* translation_gate_target_1 */ + 0, /* translation_gate_target_2 */ + 0, /* translation_gate_target_3 */ + }, +#endif +}; + +static s32 load_game_config_over(char *gamepak_title, char *gamepak_code, char *gamepak_maker) +{ + unsigned i = 0; + + for (i = 0; i < 256; i++) + { + if (gbaover[i].romtitle[0] == '\0') + return -1; + + printf("romtitle : %s\n", gbaover[i].romtitle); + printf("gamepak title: %s\n", gbaover[i].gamepak_title); + printf("gamepak code : %s\n", gbaover[i].gamepak_code); + printf("gamepak maker: %s\n", gbaover[i].gamepak_maker); + + printf("INPUT gamepak title: %s\n", gamepak_title); + printf("INPUT gamepak code : %s\n", gamepak_code); + printf("INPUT gamepak maker: %s\n", gamepak_maker); + + if (strcmp(gbaover[i].gamepak_code, gamepak_code)) + continue; + + if (strcmp(gbaover[i].gamepak_title, gamepak_title)) + continue; + + if (gbaover[i].idle_loop_target_pc != 0) + idle_loop_target_pc = gbaover[i].idle_loop_target_pc; + + iwram_stack_optimize = gbaover[i].iwram_stack_optimize; + + flash_device_id = gbaover[i].flash_device_id; + + if (gbaover[i].translation_gate_target_1 != 0) + { + translation_gate_target_pc[translation_gate_targets] = gbaover[i].translation_gate_target_1; + translation_gate_targets++; + } + + if (gbaover[i].translation_gate_target_2 != 0) + { + translation_gate_target_pc[translation_gate_targets] = gbaover[i].translation_gate_target_2; + translation_gate_targets++; + } + + if (gbaover[i].translation_gate_target_3 != 0) + { + translation_gate_target_pc[translation_gate_targets] = gbaover[i].translation_gate_target_3; + translation_gate_targets++; + } + + printf("found entry in over ini file.\n"); + + return 0; + } + + return -1; +} + static s32 load_game_config(char *gamepak_title, char *gamepak_code, char *gamepak_maker) { char current_line[256]; @@ -2240,13 +2763,6 @@ static s32 load_game_config(char *gamepak_title, char *gamepak_code, char *gamep char config_path[512]; FILE *config_file; - idle_loop_target_pc = 0xFFFFFFFF; - iwram_stack_optimize = 1; - translation_gate_targets = 0; - bios_rom[0x39] = 0x00; - bios_rom[0x2C] = 0x00; - flash_device_id = FLASH_DEVICE_MACRONIX_64KB; - sprintf(config_path, "%s" PATH_SEPARATOR "%s", main_path, CONFIG_FILENAME); printf("config_path is : %s\n", config_path); @@ -2412,7 +2928,15 @@ u32 load_gamepak(const struct retro_game_info* info, const char *name) gamepak_code[4] = 0; gamepak_maker[2] = 0; - load_game_config(gamepak_title, gamepak_code, gamepak_maker); + idle_loop_target_pc = 0xFFFFFFFF; + iwram_stack_optimize = 1; + translation_gate_targets = 0; + bios_rom[0x39] = 0x00; + bios_rom[0x2C] = 0x00; + flash_device_id = FLASH_DEVICE_MACRONIX_64KB; + + if ((load_game_config_over(gamepak_title, gamepak_code, gamepak_maker)) == -1) + load_game_config(gamepak_title, gamepak_code, gamepak_maker); change_ext(gamepak_filename, cheats_filename, ".cht"); add_cheats(cheats_filename); -- cgit v1.2.3