summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--game_config.txt235
-rw-r--r--gba_memory.c540
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);