diff options
-rw-r--r-- | game_config.txt | 235 | ||||
-rw-r--r-- | 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); |