retrolaunch: Change core selection in retrolaunch

This changed makes it so that retrolaunch will choose cores based on a
preference configuration called cores.conf.

This means that different systems can select what cores they prefer to
use when running certain games. Games that don't work on specific cores
can be marked in launch.conf with !core_name and retrolaunch will choose
the next core for that system.

Also launch.conf is now optional meaning that users don't need the cddb
and the dat files to be able to use core auto-selection. They just need
cores.conf.

Signed-off-by: Saggi Mizrahi <ficoos@gmail.com>
This commit is contained in:
Saggi Mizrahi 2013-05-21 00:12:38 -04:00
parent c038c92f68
commit 00eb501a1c
3 changed files with 606 additions and 526 deletions

View File

@ -0,0 +1,15 @@
# Core preferences, cores are ordered by preference. If a core doesn't exist ;
# or is marked as broken in launch.conf the next in line will be used. ;
"ps1" mednafen-psx pcsxr ;
"smd" genplus ;
"nes" fceu bnes nestopia quicknes ;
"gba" vba ;
"a26" stella ;
"snes" snes9x snes9x-next bsnes-compat bsnes-balanced bsnes-accuracy ;
"gbc" gambatte ;
"gb" gambatte ;
"gg" genplus ;
"nds" desmume ;
"pce" mednafen-pce-fast ;
"sms" genplus ;
"wswan" mednafen-wswan ;

View File

@ -1,513 +1,491 @@
# PS1 Dualanalog Games ; # PS1 Dualanalog Games ;
"ps1.007 - Demain ne Meurt Jamais" mednafen-psx dualanalog ; "ps1.007 - Demain ne Meurt Jamais" dualanalog ;
"ps1.007 - Le Monde Ne Suffit Pas" mednafen-psx dualanalog ; "ps1.007 - Le Monde Ne Suffit Pas" dualanalog ;
"ps1.007 Racing*" mednafen-psx dualanalog ; "ps1.007 Racing*" dualanalog ;
"ps1.007 - The World Is Not Enough*" mednafen-psx dualanalog ; "ps1.007 - The World Is Not Enough*" dualanalog ;
"ps1.007 - Tomorrow Never Dies*" mednafen-psx dualanalog ; "ps1.007 - Tomorrow Never Dies*" dualanalog ;
"ps1.102 Dalmations - Puppies To The Rescue" mednafen-psx dualanalog ; "ps1.102 Dalmations - Puppies To The Rescue" dualanalog ;
"ps1.40 Winks*" mednafen-psx dualanalog ; "ps1.40 Winks*" dualanalog ;
"ps1.Ace Combat*" mednafen-psx dualanalog ; "ps1.Ace Combat*" dualanalog ;
"ps1.Aces of the Air*" mednafen-psx dualanalog ; "ps1.Aces of the Air*" dualanalog ;
"ps1.Action Bass*" mednafen-psx dualanalog ; "ps1.Action Bass*" dualanalog ;
"ps1.Action Man - Operation Extreme*" mednafen-psx dualanalog ; "ps1.Action Man - Operation Extreme*" dualanalog ;
"ps1.Advanced V.G. 2*" mednafen-psx dualanalog ; "ps1.Advanced V.G. 2*" dualanalog ;
"ps1.Adventure of Phix" mednafen-psx dualanalog ; "ps1.Adventure of Phix" dualanalog ;
"ps1.Aironauts*" mednafen-psx dualanalog ; "ps1.Aironauts*" dualanalog ;
"ps1.Air Race Championship*" mednafen-psx dualanalog ; "ps1.Air Race Championship*" dualanalog ;
"ps1.Akuji - The Heartless*" mednafen-psx dualanalog ; "ps1.Akuji - The Heartless*" dualanalog ;
"ps1.Alfred Chicken*" mednafen-psx dualanalog ; "ps1.Alfred Chicken*" dualanalog ;
"ps1.Alien la Resurrection*" mednafen-psx dualanalog ; "ps1.Alien la Resurrection*" dualanalog ;
"ps1.Alien Resurrection*" mednafen-psx dualanalog ; "ps1.Alien Resurrection*" dualanalog ;
"ps1.Alone In The Dark - The New Nightmare*" mednafen-psx dualanalog ; "ps1.Alone In The Dark - The New Nightmare*" dualanalog ;
"ps1.Alundra 2*" mednafen-psx dualanalog ; "ps1.Alundra 2*" dualanalog ;
"ps1.Amazing Virtual Sea Monkeys*" mednafen-psx dualanalog ; "ps1.Amazing Virtual Sea Monkeys*" dualanalog ;
"ps1.Animorphs - Shattered Reality*" mednafen-psx dualanalog ; "ps1.Animorphs - Shattered Reality*" dualanalog ;
"ps1.Ape Escape*" mednafen-psx dualanalog ; "ps1.Ape Escape*" dualanalog ;
"ps1.Apocalypse*" mednafen-psx dualanalog ; "ps1.Apocalypse*" dualanalog ;
"ps1.Aqua GT*" mednafen-psx dualanalog ; "ps1.Aqua GT*" dualanalog ;
"ps1.Arcade Party Pack" mednafen-psx dualanalog ; "ps1.Arcade Party Pack" dualanalog ;
"ps1.Armored Core - Master of Arena*" mednafen-psx dualanalog ; "ps1.Armored Core - Master of Arena*" dualanalog ;
"ps1.Armorines - Project Swarm*" mednafen-psx dualanalog ; "ps1.Armorines - Project Swarm*" dualanalog ;
"ps1.Army Men 3D*" mednafen-psx dualanalog ; "ps1.Army Men 3D*" dualanalog ;
"ps1.Army Men - Air Attack 2*" mednafen-psx dualanalog ; "ps1.Army Men - Air Attack 2*" dualanalog ;
"ps1.Army Men - Air Attack*" mednafen-psx dualanalog ; "ps1.Army Men - Air Attack*" dualanalog ;
"ps1.Army Men - Green Rouge*" mednafen-psx dualanalog ; "ps1.Army Men - Green Rouge*" dualanalog ;
"ps1.Army Men - Sarge's Heroes 2*" mednafen-psx dualanalog ; "ps1.Army Men - Sarge's Heroes 2*" dualanalog ;
"ps1.Army Men - Sarge's Heroes*" mednafen-psx dualanalog ; "ps1.Army Men - Sarge's Heroes*" dualanalog ;
"ps1.Army Men - World War*" mednafen-psx dualanalog ; "ps1.Army Men - World War*" dualanalog ;
"ps1.Assault Retribution*" mednafen-psx dualanalog ; "ps1.Assault Retribution*" dualanalog ;
"ps1.Asterix - Mega Madness*" mednafen-psx dualanalog ; "ps1.Asterix - Mega Madness*" dualanalog ;
"ps1.Asteroids*" mednafen-psx dualanalog ; "ps1.Asteroids*" dualanalog ;
"ps1.Barbie Explorer" mednafen-psx dualanalog ; "ps1.Barbie Explorer" dualanalog ;
"ps1.Barbie - Gotta Have Games" mednafen-psx dualanalog ; "ps1.Barbie - Gotta Have Games" dualanalog ;
"ps1.Batman Beyond - Return of the Joker" mednafen-psx dualanalog ; "ps1.Batman Beyond - Return of the Joker" dualanalog ;
"ps1.Batman & Robin" mednafen-psx dualanalog ; "ps1.Batman & Robin" dualanalog ;
"ps1.Battle Arena Toshinden 4" mednafen-psx dualanalog ; "ps1.Battle Arena Toshinden 4" dualanalog ;
"ps1.Bear in the Big Blue House" mednafen-psx dualanalog ; "ps1.Bear in the Big Blue House" dualanalog ;
"ps1.Beatmania" mednafen-psx dualanalog ; "ps1.Beatmania" dualanalog ;
"ps1.Beat Planet Music" mednafen-psx dualanalog ; "ps1.Beat Planet Music" dualanalog ;
"ps1.Beyblade" mednafen-psx dualanalog ; "ps1.Beyblade" dualanalog ;
"ps1.Big Bass Fishing" mednafen-psx dualanalog ; "ps1.Big Bass Fishing" dualanalog ;
"ps1.BioHazard - Director's Cut - Dual Shock*" mednafen-psx dualanalog ; "ps1.BioHazard - Director's Cut - Dual Shock*" dualanalog ;
"ps1.Bishi Bashi Special" mednafen-psx dualanalog ; "ps1.Bishi Bashi Special" dualanalog ;
"ps1.Blade" mednafen-psx dualanalog ; "ps1.Blade" dualanalog ;
"ps1.Blasto!" mednafen-psx dualanalog ; "ps1.Blasto!" dualanalog ;
"ps1.Blast Radius" mednafen-psx dualanalog ; "ps1.Blast Radius" dualanalog ;
"ps1.Block Kuzushi" mednafen-psx dualanalog ; "ps1.Block Kuzushi" dualanalog ;
"ps1.Block Wars" mednafen-psx dualanalog ; "ps1.Block Wars" dualanalog ;
"ps1.Bloody Roar 2*" mednafen-psx dualanalog ; "ps1.Bloody Roar 2*" dualanalog ;
"ps1.Bob the Builder - Can We Fix It" mednafen-psx dualanalog ; "ps1.Bob the Builder - Can We Fix It" dualanalog ;
"ps1.Boombots" mednafen-psx dualanalog ; "ps1.Boombots" dualanalog ;
"ps1.Bratz" mednafen-psx dualanalog ; "ps1.Bratz" dualanalog ;
"ps1.Brave Fencer Musashi*" mednafen-psx dualanalog ; "ps1.Brave Fencer Musashi*" dualanalog ;
"ps1.Breakout" mednafen-psx dualanalog ; "ps1.Breakout" dualanalog ;
"ps1.Buggy" mednafen-psx dualanalog ; "ps1.Buggy" dualanalog ;
"ps1.Bugs Bunny - Lost in Time*" mednafen-psx dualanalog ; "ps1.Bugs Bunny - Lost in Time*" dualanalog ;
"ps1.Bugs Bunny & Taz - Time Busters" mednafen-psx dualanalog ; "ps1.Bugs Bunny & Taz - Time Busters" dualanalog ;
"ps1.C-12 - The Final Resistance" mednafen-psx dualanalog ; "ps1.C-12 - The Final Resistance" dualanalog ;
"ps1.Captain Commando" mednafen-psx dualanalog ; "ps1.Captain Commando" dualanalog ;
"ps1.Cardinal Syn*" mednafen-psx dualanalog ; "ps1.Cardinal Syn*" dualanalog ;
"ps1.Carmageddon*" mednafen-psx dualanalog ; "ps1.Carmageddon*" dualanalog ;
"ps1.Casper - Friends Around The World" mednafen-psx dualanalog ; "ps1.Casper - Friends Around The World" dualanalog ;
"ps1.Chaos Break" mednafen-psx dualanalog ; "ps1.Chaos Break" dualanalog ;
"ps1.Chicken Run" mednafen-psx dualanalog ; "ps1.Chicken Run" dualanalog ;
"ps1.Chippoke Ralph no Daibouken (Adventure of Little Ralph)" mednafen-psx dualanalog ; "ps1.Chippoke Ralph no Daibouken (Adventure of Little Ralph)" dualanalog ;
"ps1.Chocobo Racing" mednafen-psx dualanalog ; "ps1.Chocobo Racing" dualanalog ;
"ps1.Chrono Cross*" mednafen-psx dualanalog ; "ps1.Chrono Cross*" dualanalog ;
"ps1.Colin Mc[rR]ae*" mednafen-psx dualanalog ; "ps1.Colin Mc[rR]ae*" dualanalog ;
"ps1.Colony Wars*" mednafen-psx dualanalog ; "ps1.Colony Wars*" dualanalog ;
"ps1.Cosmowarrior Rei" mednafen-psx dualanalog ; "ps1.Cosmowarrior Rei" dualanalog ;
"ps1.Cowboy Bebop" mednafen-psx dualanalog ; "ps1.Cowboy Bebop" dualanalog ;
"ps1.Crash Bandicoot 2*" mednafen-psx dualanalog ; "ps1.Crash Bandicoot 2*" dualanalog ;
"ps1.Crash Bandicoot 3*" mednafen-psx dualanalog ; "ps1.Crash Bandicoot 3*" dualanalog ;
"ps1.Crash Bandicoot Carnival - Crash Bash*" mednafen-psx dualanalog ; "ps1.Crash Bandicoot Carnival - Crash Bash*" dualanalog ;
"ps1.Crash Bash Demo" mednafen-psx dualanalog ; "ps1.Crash Bash Demo" dualanalog ;
"ps1.Crash Bash" mednafen-psx dualanalog ; "ps1.Crash Bash" dualanalog ;
"ps1.Crash Bash" mednafen-psx dualanalog ; "ps1.Crash Bash" dualanalog ;
"ps1.Crash Bash & Spyro - Year of the Dragon Demo" mednafen-psx dualanalog ; "ps1.Crash Bash & Spyro - Year of the Dragon Demo" dualanalog ;
"ps1.Crash Team Racing*" mednafen-psx dualanalog multitap ; "ps1.Crash Team Racing*" dualanalog multitap ;
"ps1.Crisis Beat" mednafen-psx dualanalog ; "ps1.Crisis Beat" dualanalog ;
"ps1.Croc 2*" mednafen-psx dualanalog ; "ps1.Croc 2*" dualanalog ;
"ps1.Croc - Legend of the Gobbos" mednafen-psx dualanalog ; "ps1.Croc - Legend of the Gobbos" dualanalog ;
"ps1.C - The Contra Adventure" mednafen-psx dualanalog ; "ps1.C - The Contra Adventure" dualanalog ;
"ps1.CT Special Forces" mednafen-psx dualanalog ; "ps1.CT Special Forces" dualanalog ;
"ps1.CyberTiger Golf" mednafen-psx dualanalog ; "ps1.CyberTiger Golf" dualanalog ;
"ps1.Danger Girl" mednafen-psx dualanalog ; "ps1.Danger Girl" dualanalog ;
"ps1.Darkstalkers 3*" mednafen-psx dualanalog ; "ps1.Darkstalkers 3*" dualanalog ;
"ps1.Darkstone - Evil Reigns" mednafen-psx dualanalog ; "ps1.Darkstone - Evil Reigns" dualanalog ;
"ps1.Deep Freeze*" mednafen-psx dualanalog ; "ps1.Deep Freeze*" dualanalog ;
"ps1.Delta Force - Urban Warfar" mednafen-psx dualanalog ; "ps1.Delta Force - Urban Warfar" dualanalog ;
"ps1.Demolition Racer" mednafen-psx dualanalog ; "ps1.Demolition Racer" dualanalog ;
"ps1.Dexter's Laboratory - Mandark's Lab" mednafen-psx dualanalog ; "ps1.Dexter's Laboratory - Mandark's Lab" dualanalog ;
"ps1.Dezaemon Kids!*" mednafen-psx dualanalog ; "ps1.Dezaemon Kids!*" dualanalog ;
"ps1.Die Hard Trilogy 2*" mednafen-psx dualanalog ; "ps1.Die Hard Trilogy 2*" dualanalog ;
"ps1.Digimon Rumble Arena" mednafen-psx dualanalog ; "ps1.Digimon Rumble Arena" dualanalog ;
"ps1.Disney's 101 Dalmations*" mednafen-psx dualanalog ; "ps1.Disney's 101 Dalmations*" dualanalog ;
"ps1.Disney's A Bug's Life*" mednafen-psx dualanalog ; "ps1.Disney's A Bug's Life*" dualanalog ;
"ps1.Disney's Aladdin la revanche de Nasira" mednafen-psx dualanalog ; "ps1.Disney's Aladdin la revanche de Nasira" dualanalog ;
"ps1.Disney's Aladdin - La Vendetta di Nasira" mednafen-psx dualanalog ; "ps1.Disney's Aladdin - La Vendetta di Nasira" dualanalog ;
"ps1.Disney's Aladdin - Nasira's Revenge" mednafen-psx dualanalog ; "ps1.Disney's Aladdin - Nasira's Revenge" dualanalog ;
"ps1.Disney's Buzz Lightyear of Star Command" mednafen-psx dualanalog ; "ps1.Disney's Buzz Lightyear of Star Command" dualanalog ;
"ps1.Disney's Peter Pan in Return to Neverland" mednafen-psx dualanalog ; "ps1.Disney's Peter Pan in Return to Neverland" dualanalog ;
"ps1.Disney's Tarzan*" mednafen-psx dualanalog ; "ps1.Disney's Tarzan*" dualanalog ;
"ps1.Disney's The Emperor's New Groove" mednafen-psx dualanalog ; "ps1.Disney's The Emperor's New Groove" dualanalog ;
"ps1.Disney's The Lion King II - Simba's Mighty Adventure" mednafen-psx dualanalog ; "ps1.Disney's The Lion King II - Simba's Mighty Adventure" dualanalog ;
"ps1.Disney's Toy Story 2 - Buzz Lightyear to the Rescue*" mednafen-psx dualanalog ; "ps1.Disney's Toy Story 2 - Buzz Lightyear to the Rescue*" dualanalog ;
"ps1.Dragon Valor*" mednafen-psx dualanalog ; "ps1.Dragon Valor*" dualanalog ;
"ps1.Dreams" mednafen-psx dualanalog ; "ps1.Dreams" dualanalog ;
"ps1.Driver 2*" mednafen-psx dualanalog ; "ps1.Driver 2*" dualanalog ;
"ps1.Duke Nukem - Land of the Babes" mednafen-psx dualanalog ; "ps1.Duke Nukem - Land of the Babes" dualanalog ;
"ps1.Duke Nukem - Time to Kill" mednafen-psx dualanalog ; "ps1.Duke Nukem - Time to Kill" dualanalog ;
"ps1.Dukes of Hazzard*" mednafen-psx dualanalog ; "ps1.Dukes of Hazzard*" dualanalog ;
"ps1.Eagle One - Harrier Attack" mednafen-psx dualanalog ; "ps1.Eagle One - Harrier Attack" dualanalog ;
"ps1.Ehrgeiz" mednafen-psx dualanalog ; "ps1.Ehrgeiz" dualanalog ;
"ps1.Elemental Gearbolt" mednafen-psx dualanalog ; "ps1.Elemental Gearbolt" dualanalog ;
"ps1.ET - The Extra-Terrestrial - Interplanetary Mission" mednafen-psx dualanalog ; "ps1.ET - The Extra-Terrestrial - Interplanetary Mission" dualanalog ;
"ps1.Evil Dead - Hail to the King*" mednafen-psx dualanalog ; "ps1.Evil Dead - Hail to the King*" dualanalog ;
"ps1.Fatal Fury*" mednafen-psx dualanalog ; "ps1.Fatal Fury*" dualanalog ;
"ps1.Fear Effect*" mednafen-psx dualanalog ; "ps1.Fear Effect*" dualanalog ;
"ps1.Fighting Force*" mednafen-psx dualanalog ; "ps1.Fighting Force*" dualanalog ;
"ps1.Firebugs" mednafen-psx dualanalog ; "ps1.Firebugs" dualanalog ;
"ps1.Fist of the North Star - Hokuto no Ken" mednafen-psx dualanalog ; "ps1.Fist of the North Star - Hokuto no Ken" dualanalog ;
"ps1.Flintstones Bedrock Bowling" mednafen-psx dualanalog ; "ps1.Flintstones Bedrock Bowling" dualanalog ;
"ps1.Forsaken*" mednafen-psx dualanalog ; "ps1.Forsaken*" dualanalog ;
"ps1.From TV Animation - One Piece - Oceans of Dreams" mednafen-psx dualanalog ; "ps1.From TV Animation - One Piece - Oceans of Dreams" dualanalog ;
"ps1.From TV Animation - One Piece - Tobidase Kaizokudan!*" mednafen-psx dualanalog ; "ps1.From TV Animation - One Piece - Tobidase Kaizokudan!*" dualanalog ;
"ps1.Future Cop*" mednafen-psx dualanalog ; "ps1.Future Cop*" dualanalog ;
"ps1.Galaga - Destination Earth" mednafen-psx dualanalog ; "ps1.Galaga - Destination Earth" dualanalog ;
"ps1.Galerians*" mednafen-psx dualanalog ; "ps1.Galerians*" dualanalog ;
"ps1.Gauntlet Legends" mednafen-psx dualanalog ; "ps1.Gauntlet Legends" dualanalog ;
"ps1.G Darius*" mednafen-psx dualanalog ; "ps1.G Darius*" dualanalog ;
"ps1.Gex 3 - Deep Cover Gecko*" mednafen-psx dualanalog ; "ps1.Gex 3 - Deep Cover Gecko*" dualanalog ;
"ps1.Ghoul Panic" mednafen-psx dualanalog ; "ps1.Ghoul Panic" dualanalog ;
"ps1.Global Domination*" mednafen-psx dualanalog ; "ps1.Global Domination*" dualanalog ;
"ps1.G-Police*" mednafen-psx dualanalog ; "ps1.G-Police*" dualanalog ;
"ps1.Gran Turismo*" mednafen-psx dualanalog ; "ps1.Gran Turismo*" dualanalog ;
"ps1.Grinch, The" mednafen-psx dualanalog ; "ps1.Grinch, The" dualanalog ;
"ps1.Groove Adventure Rave*" mednafen-psx dualanalog ; "ps1.Groove Adventure Rave*" dualanalog ;
"ps1.Grudge Warriors" mednafen-psx dualanalog ; "ps1.Grudge Warriors" dualanalog ;
"ps1.Guardian of Darkness, The" mednafen-psx dualanalog ; "ps1.Guardian of Darkness, The" dualanalog ;
"ps1.Guilty Gear*" mednafen-psx dualanalog ; "ps1.Guilty Gear*" dualanalog ;
"ps1.Guitar Freaks*" mednafen-psx dualanalog ; "ps1.Guitar Freaks*" dualanalog ;
"ps1.Gunbare! The Game Paradise 2" mednafen-psx dualanalog ; "ps1.Gunbare! The Game Paradise 2" dualanalog ;
"ps1.Gunfighter - The Legend of Jesse James" mednafen-psx dualanalog ; "ps1.Gunfighter - The Legend of Jesse James" dualanalog ;
"ps1.Hakaioh - King of Crusher" mednafen-psx dualanalog ; "ps1.Hakaioh - King of Crusher" dualanalog ;
"ps1.Harry Potter and The Chamber of Secrets" mednafen-psx dualanalog ; "ps1.Harry Potter and The Chamber of Secrets" dualanalog ;
"ps1.Harry Potter and The Philosopher's Stone" mednafen-psx dualanalog ; "ps1.Harry Potter and The Philosopher's Stone" dualanalog ;
"ps1.Harry Potter and The Sorcerer's Stone" mednafen-psx dualanalog ; "ps1.Harry Potter and The Sorcerer's Stone" dualanalog ;
"ps1.Hellboy - Asylum Seeker" mednafen-psx dualanalog ; "ps1.Hellboy - Asylum Seeker" dualanalog ;
"ps1.Hidden & Dangerous" mednafen-psx dualanalog ; "ps1.Hidden & Dangerous" dualanalog ;
"ps1.Hokuto no Ken - Seiki Matsukyu Seishi Densets" mednafen-psx dualanalog ;u (Fist of the North Star) "ps1.Hokuto no Ken - Seiki Matsukyu Seishi Densets" dualanalog ;u (Fist of the North Star)
"ps1.Hot Wheels - Extreme Racing" mednafen-psx dualanalog ; "ps1.Hot Wheels - Extreme Racing" dualanalog ;
"ps1.Hugo*" mednafen-psx dualanalog ; "ps1.Hugo*" dualanalog ;
"ps1.Hydro Thunder" mednafen-psx dualanalog ; "ps1.Hydro Thunder" dualanalog ;
"ps1.Infestation" mednafen-psx dualanalog ; "ps1.Infestation" dualanalog ;
"ps1.Inspector Gadget - Gadget's Crazy Maze" mednafen-psx dualanalog ; "ps1.Inspector Gadget - Gadget's Crazy Maze" dualanalog ;
"ps1.Invasion From Beyond - B-Movie" mednafen-psx dualanalog ; "ps1.Invasion From Beyond - B-Movie" dualanalog ;
"ps1.Iron Soldier 3" mednafen-psx dualanalog ; "ps1.Iron Soldier 3" dualanalog ;
"ps1.Irritating Stick*" mednafen-psx dualanalog ; "ps1.Irritating Stick*" dualanalog ;
"ps1.IS - Internal Section" mednafen-psx dualanalog ; "ps1.IS - Internal Section" dualanalog ;
"ps1.Jackie Chan Stuntmaster" mednafen-psx dualanalog ; "ps1.Jackie Chan Stuntmaster" dualanalog ;
"ps1.Jersey Devil*" mednafen-psx dualanalog ; "ps1.Jersey Devil*" dualanalog ;
"ps1.Jet Moto 2" mednafen-psx dualanalog ; "ps1.Jet Moto 2" dualanalog ;
"ps1.Jet Moto 3*" mednafen-psx dualanalog ; "ps1.Jet Moto 3*" dualanalog ;
"ps1.Jinx" mednafen-psx dualanalog ; "ps1.Jinx" dualanalog ;
"ps1.Kakuge-Yaro - Fighting Game Cre" mednafen-psx dualanalog ;ator "ps1.Kakuge-Yaro - Fighting Game Cre" dualanalog ;ator
"ps1.Kamen Rider*" mednafen-psx dualanalog ; "ps1.Kamen Rider*" dualanalog ;
"ps1.Kidou Keisatsu Patlabor - Game Edition (Mobile Police)" mednafen-psx dualanalog ; "ps1.Kidou Keisatsu Patlabor - Game Edition (Mobile Police)" dualanalog ;
"ps1.Kitchen Panic" mednafen-psx dualanalog ; "ps1.Kitchen Panic" dualanalog ;
"ps1.KKND - Krossfire*" mednafen-psx dualanalog ; "ps1.KKND - Krossfire*" dualanalog ;
"ps1.Klaymen Gun-Hockey" mednafen-psx dualanalog ; "ps1.Klaymen Gun-Hockey" dualanalog ;
"ps1.Korokoro Postnin" mednafen-psx dualanalog ; "ps1.Korokoro Postnin" dualanalog ;
"ps1.Largo Winch - Commando Sar" mednafen-psx dualanalog ; "ps1.Largo Winch - Commando Sar" dualanalog ;
"ps1.Lattice - 200 Ec7" mednafen-psx dualanalog ; "ps1.Lattice - 200 Ec7" dualanalog ;
"ps1.Legacy of Kain - Soul Reaver*" pcsxr dualanalog ; "ps1.Legacy of Kain - Soul Reaver*" pcsxr dualanalog ;
"ps1.Legend of Mana" mednafen-psx dualanalog ; "ps1.Legend of Mana" dualanalog ;
"ps1.Lego Island 2*" mednafen-psx dualanalog ; "ps1.Lego Island 2*" dualanalog ;
"ps1.Looney Toons Sheep Raider" mednafen-psx dualanalog ; "ps1.Looney Toons Sheep Raider" dualanalog ;
"ps1.Lucifer Ring" mednafen-psx dualanalog ; "ps1.Lucifer Ring" dualanalog ;
"ps1.Lucky Luke*" mednafen-psx dualanalog ; "ps1.Lucky Luke*" dualanalog ;
"ps1.Marble Master" mednafen-psx dualanalog ; "ps1.Marble Master" dualanalog ;
"ps1.Marvel Super Heroes" mednafen-psx dualanalog ; "ps1.Marvel Super Heroes" dualanalog ;
"ps1.Mary-Kate & Ashley - Magical Mystery Mall" mednafen-psx dualanalog ; "ps1.Mary-Kate & Ashley - Magical Mystery Mall" dualanalog ;
"ps1.Mass Destruction" mednafen-psx dualanalog ; "ps1.Mass Destruction" dualanalog ;
"ps1.MDK" mednafen-psx dualanalog ; "ps1.MDK" dualanalog ;
"ps1.Medal of Honor*" mednafen-psx dualanalog ; "ps1.Medal of Honor*" dualanalog ;
"ps1.Medievil" mednafen-psx dualanalog ; "ps1.Medievil" dualanalog ;
"ps1.MegaMan Legends 2" mednafen-psx dualanalog ; "ps1.MegaMan Legends 2" dualanalog ;
"ps1.Men In Black*" mednafen-psx dualanalog ; "ps1.Men In Black*" dualanalog ;
"ps1.Metal Gear Solid*" mednafen-psx dualanalog ; "ps1.Metal Gear Solid*" dualanalog ;
"ps1.Micro Maniacs*" mednafen-psx dualanalog ; "ps1.Micro Maniacs*" dualanalog ;
"ps1.Millennium Soldier - Expendable" mednafen-psx dualanalog ; "ps1.Millennium Soldier - Expendable" dualanalog ;
"ps1.Miracle Space Race" mednafen-psx dualanalog ; "ps1.Miracle Space Race" dualanalog ;
"ps1.Misadventures of Tron Bonne, The" mednafen-psx dualanalog ; "ps1.Misadventures of Tron Bonne, The" dualanalog ;
"ps1.Missile Command*" mednafen-psx dualanalog ; "ps1.Missile Command*" dualanalog ;
"ps1.Mission - Impossible" mednafen-psx dualanalog ; "ps1.Mission - Impossible" dualanalog ;
"ps1.Mission Impossible" mednafen-psx dualanalog ; "ps1.Mission Impossible" dualanalog ;
"ps1.Monkey Hero*" mednafen-psx dualanalog ; "ps1.Monkey Hero*" dualanalog ;
"ps1.Moorhen 3 - Chicken Chase" mednafen-psx dualanalog ; "ps1.Moorhen 3 - Chicken Chase" dualanalog ;
"ps1.Mortal Kombat - Special Forces" mednafen-psx dualanalog ; "ps1.Mortal Kombat - Special Forces" dualanalog ;
"ps1.Mortal Kombat Special Forces" mednafen-psx dualanalog ; "ps1.Mortal Kombat Special Forces" dualanalog ;
"ps1.Ms. Pac-Man Maze Madness Demo" mednafen-psx dualanalog ; "ps1.Ms. Pac-Man Maze Madness Demo" dualanalog ;
"ps1.Ms. Pacman - Maze Madness" mednafen-psx dualanalog ; "ps1.Ms. Pacman - Maze Madness" dualanalog ;
"ps1.MTV Celebrity Deathmatch" mednafen-psx dualanalog ; "ps1.MTV Celebrity Deathmatch" dualanalog ;
"ps1.Mummy, The" mednafen-psx dualanalog ; "ps1.Mummy, The" dualanalog ;
"ps1.Muppet Monster Adventure*" mednafen-psx dualanalog ; "ps1.Muppet Monster Adventure*" dualanalog ;
"ps1.N2O Nitrous Oxide" mednafen-psx dualanalog ; "ps1.N2O Nitrous Oxide" dualanalog ;
"ps1.NBA Hoopz" mednafen-psx dualanalog ; "ps1.NBA Hoopz" dualanalog ;
"ps1.NFL Blitz 2001" mednafen-psx dualanalog ; "ps1.NFL Blitz 2001" dualanalog ;
"ps1.NFL Blitz" mednafen-psx dualanalog ; "ps1.NFL Blitz" dualanalog ;
"ps1.N-Gen - Next Generation Racing" mednafen-psx dualanalog ; "ps1.N-Gen - Next Generation Racing" dualanalog ;
"ps1.N-Gen Racing" mednafen-psx dualanalog ; "ps1.N-Gen Racing" dualanalog ;
"ps1.Night Raid" mednafen-psx dualanalog ; "ps1.Night Raid" dualanalog ;
"ps1.Nijiiro Dodgeball" mednafen-psx dualanalog ; "ps1.Nijiiro Dodgeball" dualanalog ;
"ps1.Nijiiro Twinkle - Guruguru Daisakusen*" mednafen-psx dualanalog ; "ps1.Nijiiro Twinkle - Guruguru Daisakusen*" dualanalog ;
"ps1.O.D.T. Demo" mednafen-psx dualanalog ; "ps1.O.D.T. Demo" dualanalog ;
"ps1.ODT - Escape or Die Trying*" mednafen-psx dualanalog ; "ps1.ODT - Escape or Die Trying*" dualanalog ;
"ps1.Omega Boost" mednafen-psx dualanalog ; "ps1.Omega Boost" dualanalog ;
"ps1.One" mednafen-psx dualanalog ; "ps1.One" dualanalog ;
"ps1.Overblood 2*" mednafen-psx dualanalog ; "ps1.Overblood 2*" dualanalog ;
"ps1.Over Blood" mednafen-psx dualanalog ; "ps1.Over Blood" dualanalog ;
"ps1.Pac-Man World*" mednafen-psx dualanalog ; "ps1.Pac-Man World*" dualanalog ;
"ps1.Panzer Front*" mednafen-psx dualanalog ; "ps1.Panzer Front*" dualanalog ;
"ps1.Parasite Eve*" mednafen-psx dualanalog ; "ps1.Parasite Eve*" dualanalog ;
"ps1.Pepsi-Man" mednafen-psx dualanalog ; "ps1.Pepsi-Man" dualanalog ;
"ps1.Peter Pan - Return to Neverland" mednafen-psx dualanalog ; "ps1.Peter Pan - Return to Neverland" dualanalog ;
"ps1.Phix no Daibouken - In The Magnetic World" mednafen-psx dualanalog ; "ps1.Phix no Daibouken - In The Magnetic World" dualanalog ;
"ps1.Planet of the Apes" mednafen-psx dualanalog ; "ps1.Planet of the Apes" dualanalog ;
"ps1.Point Blank 3*" mednafen-psx dualanalog ; "ps1.Point Blank 3*" dualanalog ;
"ps1.Powerpuff Girls - Chemical X-Traction" mednafen-psx dualanalog ; "ps1.Powerpuff Girls - Chemical X-Traction" dualanalog ;
"ps1.Pro Pinball*" mednafen-psx dualanalog ; "ps1.Pro Pinball*" dualanalog ;
"ps1.Puchi Carat*" mednafen-psx dualanalog ; "ps1.Puchi Carat*" dualanalog ;
"ps1.Q-Bert" mednafen-psx dualanalog ; "ps1.Q-Bert" dualanalog ;
"ps1.Radikal Bikers" mednafen-psx dualanalog ; "ps1.Radikal Bikers" dualanalog ;
"ps1.Rageball" mednafen-psx dualanalog ; "ps1.Rageball" dualanalog ;
"ps1.Rampage Through Time" mednafen-psx dualanalog ; "ps1.Rampage Through Time" dualanalog ;
"ps1.Rascal Demo" mednafen-psx dualanalog ; "ps1.Rascal Demo" dualanalog ;
"ps1.Rascal" mednafen-psx dualanalog ; "ps1.Rascal" dualanalog ;
"ps1.Raycrisis - Series Termination" mednafen-psx dualanalog ; "ps1.Raycrisis - Series Termination" dualanalog ;
"ps1.Rayman 2 - The Great Escape*" mednafen-psx dualanalog ; "ps1.Rayman 2 - The Great Escape*" dualanalog ;
"ps1.Rayman Rush" mednafen-psx dualanalog ; "ps1.Rayman Rush" dualanalog ;
"ps1.Razor Freestyle Scooter" mednafen-psx dualanalog ; "ps1.Razor Freestyle Scooter" dualanalog ;
"ps1.RC de Go*" mednafen-psx dualanalog ; "ps1.RC de Go*" dualanalog ;
"ps1.RC Helicopter*" mednafen-psx dualanalog ; "ps1.RC Helicopter*" dualanalog ;
"ps1.RC Revenge*" mednafen-psx dualanalog ; "ps1.RC Revenge*" dualanalog ;
"ps1.Reboot*" mednafen-psx dualanalog ; "ps1.Reboot*" dualanalog ;
"ps1.Rescue Shot*" mednafen-psx dualanalog ; "ps1.Rescue Shot*" dualanalog ;
"ps1.Resident Evil 2*" mednafen-psx dualanalog ; "ps1.Resident Evil 2*" dualanalog ;
"ps1.Resident Evil 3*" mednafen-psx dualanalog ; "ps1.Resident Evil 3*" dualanalog ;
"ps1.Resident Evil Survivor" mednafen-psx dualanalog ; "ps1.Resident Evil Survivor" dualanalog ;
"ps1.Re-Volt*" mednafen-psx dualanalog ; "ps1.Re-Volt*" dualanalog ;
"ps1.Rising Zan*" mednafen-psx dualanalog ; "ps1.Rising Zan*" dualanalog ;
"ps1.Road Rash 3D*" mednafen-psx dualanalog ; "ps1.Road Rash 3D*" dualanalog ;
"ps1.Road Rash - Jailbreak" mednafen-psx dualanalog ; "ps1.Road Rash - Jailbreak" dualanalog ;
"ps1.Rogue Trip*" mednafen-psx dualanalog ; "ps1.Rogue Trip*" dualanalog ;
"ps1.Rollcage*" mednafen-psx dualanalog ; "ps1.Rollcage*" dualanalog ;
"ps1.Rosco McQueen*" mednafen-psx dualanalog ; "ps1.Rosco McQueen*" dualanalog ;
"ps1.Rugrats*" mednafen-psx dualanalog ; "ps1.Rugrats*" dualanalog ;
"ps1.Runabout 2*" mednafen-psx dualanalog ; "ps1.Runabout 2*" dualanalog ;
"ps1.Sabrina the Teenage Witch - A Twitch i" mednafen-psx dualanalog ;n Time "ps1.Sabrina the Teenage Witch - A Twitch i" dualanalog ;n Time
"ps1.Saltwater Sportfishing" mednafen-psx dualanalog ; "ps1.Saltwater Sportfishing" dualanalog ;
"ps1.Saru! Get You!*" mednafen-psx dualanalog ; "ps1.Saru! Get You!*" dualanalog ;
"ps1.S.C.A.R.S." mednafen-psx dualanalog ; "ps1.S.C.A.R.S." dualanalog ;
"ps1.Scooby-Doo and The Cyber Chase*" mednafen-psx dualanalog ; "ps1.Scooby-Doo and The Cyber Chase*" dualanalog ;
"ps1.SCUS-94647 "Disney's Treasure Planet" mednafen-psx dualanalog ; "ps1.SCUS-94647 "Disney's Treasure Planet" dualanalog ;
"ps1.Shadow Man*" mednafen-psx dualanalog ; "ps1.Shadow Man*" dualanalog ;
"ps1.Shadow Master" mednafen-psx dualanalog ; "ps1.Shadow Master" dualanalog ;
"ps1.Shiritsu*" mednafen-psx dualanalog ; "ps1.Shiritsu*" dualanalog ;
"ps1.Silent Bomber" mednafen-psx dualanalog ; "ps1.Silent Bomber" dualanalog ;
"ps1.Silent Hill*" mednafen-psx dualanalog ; "ps1.Silent Hill*" dualanalog ;
"ps1.Silhouette Mirage*" mednafen-psx dualanalog ; "ps1.Silhouette Mirage*" dualanalog ;
"ps1.Simple 1500 Series Vol.099 - The Kendo" mednafen-psx dualanalog ; "ps1.Simple 1500 Series Vol.099 - The Kendo" dualanalog ;
"ps1.Simple Characters 2000 Series #02 - Afro Inu - The Puzzle*" mednafen-psx dualanalog ; "ps1.Simple Characters 2000 Series #02 - Afro Inu - The Puzzle*" dualanalog ;
"ps1.Simple Characters 2000 Series #08 - Gatchaman Shoot" mednafen-psx dualanalog ; "ps1.Simple Characters 2000 Series #08 - Gatchaman Shoot" dualanalog ;
"ps1.Simpsons Wrestling" mednafen-psx dualanalog ; "ps1.Simpsons Wrestling" dualanalog ;
"ps1.SLUS-01286 "Disney's The Little Mermaid II*" mednafen-psx dualanalog ; "ps1.SLUS-01286 "Disney's The Little Mermaid II*" dualanalog ;
"ps1.Small Soldiers*" mednafen-psx dualanalog ; "ps1.Small Soldiers*" dualanalog ;
"ps1.Smurf Racer" mednafen-psx dualanalog ; "ps1.Smurf Racer" dualanalog ;
"ps1.Snowboarding" mednafen-psx dualanalog ; "ps1.Snowboarding" dualanalog ;
"ps1.Sorcerer's Maze" mednafen-psx dualanalog ; "ps1.Sorcerer's Maze" dualanalog ;
"ps1.Soul of the Samurai" mednafen-psx dualanalog ; "ps1.Soul of the Samurai" dualanalog ;
"ps1.Soul Reaver - Legacy of Kain*" mednafen-psx dualanalog ; "ps1.Soul Reaver - Legacy of Kain*" dualanalog ;
"ps1.Space Battleship - Uchuu Senkan Yamato" mednafen-psx dualanalog ; "ps1.Space Battleship - Uchuu Senkan Yamato" dualanalog ;
"ps1.Space Debris*" mednafen-psx dualanalog ; "ps1.Space Debris*" dualanalog ;
"ps1.Spec Ops*" mednafen-psx dualanalog ; "ps1.Spec Ops*" dualanalog ;
"ps1.Speedball 2100*" mednafen-psx dualanalog ; "ps1.Speedball 2100*" dualanalog ;
"ps1.Spiderman*" mednafen-psx dualanalog ; "ps1.Spiderman*" dualanalog ;
"ps1.Spin Jam" mednafen-psx dualanalog ; "ps1.Spin Jam" dualanalog ;
"ps1.Spyro the Dragon*"" mednafen-psx dualanalog ; "ps1.Spyro the Dragon*"" dualanalog ;
"ps1.Spyro - Year of the Dragon*" mednafen-psx dualanalog ; "ps1.Spyro - Year of the Dragon*" dualanalog ;
"ps1.Starfighter Sanvein" mednafen-psx dualanalog ; "ps1.Starfighter Sanvein" dualanalog ;
"ps1.Star Ixiom" mednafen-psx dualanalog ; "ps1.Star Ixiom" dualanalog ;
"ps1.Star Ocean - The Second Story*" mednafen-psx dualanalog ; "ps1.Star Ocean - The Second Story*" dualanalog ;
"ps1.Star Trek - Invasion" mednafen-psx dualanalog ; "ps1.Star Trek - Invasion" dualanalog ;
"ps1.Star Wars*" mednafen-psx dualanalog ; "ps1.Star Wars*" dualanalog ;
"ps1.Steel Reign" mednafen-psx dualanalog ; "ps1.Steel Reign" dualanalog ;
"ps1.Street Sk8er*" mednafen-psx dualanalog ; "ps1.Street Sk8er*" dualanalog ;
"ps1.Syphon Filter*" mednafen-psx dualanalog ; "ps1.Syphon Filter*" dualanalog ;
"ps1.T'ai Fu*" mednafen-psx dualanalog ; "ps1.T'ai Fu*" dualanalog ;
"ps1.Tail Concerto*" mednafen-psx dualanalog ; "ps1.Tail Concerto*" dualanalog ;
"ps1.Tales of Destiny*" mednafen-psx dualanalog ; "ps1.Tales of Destiny*" dualanalog ;
"ps1.Tales of Eternia*" mednafen-psx dualanalog ; "ps1.Tales of Eternia*" dualanalog ;
"ps1.Tales of Phantasia*" mednafen-psx dualanalog ; "ps1.Tales of Phantasia*" dualanalog ;
"ps1.Team Buddies" mednafen-psx dualanalog ; "ps1.Team Buddies" dualanalog ;
"ps1.Technomage" mednafen-psx dualanalog ; "ps1.Technomage" dualanalog ;
"ps1.Tenchu 2*" mednafen-psx dualanalog ; "ps1.Tenchu 2*" dualanalog ;
"ps1.Terracon" mednafen-psx dualanalog ; "ps1.Terracon" dualanalog ;
"ps1.Test Drive 5" mednafen-psx dualanalog ; "ps1.Test Drive 5" dualanalog ;
"ps1.Test Drive 6" mednafen-psx dualanalog ; "ps1.Test Drive 6" dualanalog ;
"ps1.Threads of Fate" mednafen-psx dualanalog ; "ps1.Threads of Fate" dualanalog ;
"ps1.Thunder Force V - Perfect System" mednafen-psx dualanalog ; "ps1.Thunder Force V - Perfect System" dualanalog ;
"ps1.Time Crisis II - Project Titan*" mednafen-psx dualanalog ; "ps1.Time Crisis II - Project Titan*" dualanalog ;
"ps1.Time Crisis - Project Titan" mednafen-psx dualanalog ; "ps1.Time Crisis - Project Titan" dualanalog ;
"ps1.Tintin - Destination Adventure" mednafen-psx dualanalog ; "ps1.Tintin - Destination Adventure" dualanalog ;
"ps1.Tiny Bullets" mednafen-psx dualanalog ; "ps1.Tiny Bullets" dualanalog ;
"ps1.Tiny Toons Adventures*" mednafen-psx dualanalog ; "ps1.Tiny Toons Adventures*" dualanalog ;
"ps1.Tobal 2" mednafen-psx dualanalog ; "ps1.Tobal 2" dualanalog ;
"ps1.Tomba!*" mednafen-psx dualanalog ; "ps1.Tomba!*" dualanalog ;
"ps1.Tombi!*" mednafen-psx dualanalog ; "ps1.Tombi!*" dualanalog ;
"ps1.Tomb Raider*" mednafen-psx dualanalog ; "ps1.Tomb Raider*" dualanalog ;
"ps1.Tom Clancy's Rainbow Six*" mednafen-psx dualanalog ; "ps1.Tom Clancy's Rainbow Six*" dualanalog ;
"ps1.Treasures of the Deep*" mednafen-psx dualanalog ; "ps1.Treasures of the Deep*" dualanalog ;
"ps1.Twinbee RPG*" mednafen-psx dualanalog ; "ps1.Twinbee RPG*" dualanalog ;
"ps1.Twisted Metal 3*" mednafen-psx dualanalog ; "ps1.Twisted Metal 3*" dualanalog ;
"ps1.Twisted Metal 4*" mednafen-psx dualanalog ; "ps1.Twisted Metal 4*" dualanalog ;
"ps1.Twisted Metal III Demo" mednafen-psx dualanalog ; "ps1.Twisted Metal III Demo" dualanalog ;
"ps1.Twisted Metal - Small Brawl" mednafen-psx dualanalog ; "ps1.Twisted Metal - Small Brawl" dualanalog ;
"ps1.Tyco RC*" mednafen-psx dualanalog ; "ps1.Tyco RC*" dualanalog ;
"ps1.Um Jammer Lammy*" mednafen-psx dualanalog ; "ps1.Um Jammer Lammy*" dualanalog ;
"ps1.U.P.P." mednafen-psx dualanalog ; "ps1.U.P.P." dualanalog ;
"ps1.Uprising X" mednafen-psx dualanalog ; "ps1.Uprising X" dualanalog ;
"ps1.Urban Chaos*" mednafen-psx dualanalog ; "ps1.Urban Chaos*" dualanalog ;
"ps1.V2000" mednafen-psx dualanalog ; "ps1.V2000" dualanalog ;
"ps1.Vagrant Story*" mednafen-psx dualanalog ; "ps1.Vagrant Story*" dualanalog ;
"ps1.Vampire Hunter D*" mednafen-psx dualanalog ; "ps1.Vampire Hunter D*" dualanalog ;
"ps1.Vanark - Astro Trooper" mednafen-psx dualanalog ; "ps1.Vanark - Astro Trooper" dualanalog ;
"ps1.VDisney's Atlantis*" mednafen-psx dualanalog ; "ps1.VDisney's Atlantis*" dualanalog ;
"ps1.VDisney's Lilo & Stitch" mednafen-psx dualanalog ; "ps1.VDisney's Lilo & Stitch" dualanalog ;
"ps1.VDisney's Pooh's Party Game - In Search of the Treasure" mednafen-psx dualanalog ; "ps1.VDisney's Pooh's Party Game - In Search of the Treasure" dualanalog ;
"ps1.Vigilante 8*" mednafen-psx dualanalog ; "ps1.Vigilante 8*" dualanalog ;
"ps1.Viper" mednafen-psx dualanalog ; "ps1.Viper" dualanalog ;
"ps1.War Games - Defcon 1" mednafen-psx dualanalog ; "ps1.War Games - Defcon 1" dualanalog ;
"ps1.Warriors of Might & Magic" mednafen-psx dualanalog ; "ps1.Warriors of Might & Magic" dualanalog ;
"ps1.Wild 9" mednafen-psx dualanalog ; "ps1.Wild 9" dualanalog ;
"ps1.Wing Over 2" mednafen-psx dualanalog ; "ps1.Wing Over 2" dualanalog ;
"ps1.Winnie the Pooh - Tigger's Honey Hunt" mednafen-psx dualanalog ; "ps1.Winnie the Pooh - Tigger's Honey Hunt" dualanalog ;
"ps1.Wipeout 3*" mednafen-psx dualanalog ; "ps1.Wipeout 3*" dualanalog ;
"ps1.World's Scariest Police Chases" mednafen-psx dualanalog ; "ps1.World's Scariest Police Chases" dualanalog ;
"ps1.Worms World Party" mednafen-psx dualanalog ; "ps1.Worms World Party" dualanalog ;
"ps1.Xena - Warrior Princess*" mednafen-psx dualanalog ; "ps1.Xena - Warrior Princess*" dualanalog ;
"ps1.X-Men - Mutant Academy*" mednafen-psx dualanalog ; "ps1.X-Men - Mutant Academy*" dualanalog ;
"ps1.Zanac X Zanac" mednafen-psx dualanalog ; "ps1.Zanac X Zanac" dualanalog ;
"ps1.Zoboomafoo" mednafen-psx dualanalog ; "ps1.Zoboomafoo" dualanalog ;
"ps1.Earthworm Jim 2" pcsxr ;
"ps1.Mickey's Wild Adventures" pcsxr ;
# Genesis\MD Multitap Games ; # Genesis\MD Multitap Games ;
"smd.Gauntlet IV*" genplus multitap ; "smd.Gauntlet IV*" multitap ;
"smd.NBA Jam Tournament Edition*" genplus multitap ; "smd.NBA Jam Tournament Edition*" multitap ;
"smd.General Chaos*" genplus multitap ; "smd.General Chaos*" multitap ;
"smd.Mega Bomberman*" genplus multitap ; "smd.Mega Bomberman*" multitap ;
"smd.World Cup USA 94*" genplus multitap ; "smd.World Cup USA 94*" multitap ;
"smd.Lost Vikings, The*" genplus multitap ; "smd.Lost Vikings, The*" multitap ;
"smd.Mutant League Hockey*" genplus multitap ; "smd.Mutant League Hockey*" multitap ;
# SNES BSNES Performance ; # SNES BSNES Performance ;
"snes.Psycho Dream*" bsnes-performance ; "snes.Psycho Dream*" !snes9x-next ;
# SNES Multitap Games ; # SNES Multitap Games ;
"snes.Bakukyuu Renpatsu!! Super B-Daman*" snes9x multitap ; "snes.Bakukyuu Renpatsu!! Super B-Daman*" multitap ;
"snes.Bakutou Dochers - Bumps-jima wa Oosawagi*" snes9x multitap ; "snes.Bakutou Dochers - Bumps-jima wa Oosawagi*" multitap ;
"snes.Barkley Shut Up and Jam!*" snes9x multitap ; "snes.Barkley Shut Up and Jam!*" multitap ;
"snes.Barkley Shut Up and Jam!*" snes9x multitap ; "snes.Barkley Shut Up and Jam!*" multitap ;
"snes.Battle Cross*" snes9x multitap ; "snes.Battle Cross*" multitap ;
"snes.Battle Jockey*" snes9x multitap ; "snes.Battle Jockey*" multitap ;
"snes.Bill Walsh College Football*" snes9x multitap ; "snes.Bill Walsh College Football*" multitap ;
"snes.Capcom's Soccer Shootout*" snes9x multitap ; "snes.Capcom's Soccer Shootout*" multitap ;
"snes.College Slam*" snes9x multitap ; "snes.College Slam*" multitap ;
"snes.Crystal Beans From Dungeon Explorer*" snes9x multitap ; "snes.Crystal Beans From Dungeon Explorer*" multitap ;
"snes.Dragon - The Bruce Lee Story*" snes9x multitap ; "snes.Dragon - The Bruce Lee Story*" multitap ;
"snes.Dream Basketball - Dunk and Hoop*" snes9x multitap ; "snes.Dream Basketball - Dunk and Hoop*" multitap ;
"snes.Dynamic Stadium*" snes9x multitap ; "snes.Dynamic Stadium*" multitap ;
"snes.ESPN National Hockey Night*" snes9x multitap ; "snes.ESPN National Hockey Night*" multitap ;
"snes.FIFA 98*" snes9x multitap ; "snes.FIFA 98*" multitap ;
"snes.FIFA International Soccer*" snes9x multitap ; "snes.FIFA International Soccer*" multitap ;
"snes.FIFA Soccer 96*" snes9x multitap ; "snes.FIFA Soccer 96*" multitap ;
"snes.FIFA Soccer 97*" snes9x multitap ; "snes.FIFA Soccer 97*" multitap ;
"snes.Final Set*" snes9x multitap ; "snes.Final Set*" multitap ;
"snes.Fire Striker*" snes9x multitap ; "snes.Fire Striker*" multitap ;
"snes.From TV Animation Slam Dunk - SD Heat Up!!*" snes9x multitap ; "snes.From TV Animation Slam Dunk - SD Heat Up!!*" multitap ;
"snes.Go! Go! Dodge League*" snes9x multitap ; "snes.Go! Go! Dodge League*" multitap ;
"snes.Hammerlock Wrestling*" snes9x multitap ; "snes.Hammerlock Wrestling*" multitap ;
"snes.Hat Trick Hero 2*" snes9x multitap ; "snes.Hat Trick Hero 2*" multitap ;
"snes.Head-On Soccer*" snes9x multitap ; "snes.Head-On Soccer*" multitap ;
"snes.Hebereke no Oishii Puzzle ha Irimasenka*" snes9x multitap ; "snes.Hebereke no Oishii Puzzle ha Irimasenka*" multitap ;
"snes.Human Grand Prix III - F1 Triple Battle*" snes9x multitap ; "snes.Human Grand Prix III - F1 Triple Battle*" multitap ;
"snes.Human Grand Prix IV - F1 Dream Battle*" snes9x multitap ; "snes.Human Grand Prix IV - F1 Dream Battle*" multitap ;
"snes.Hungry Dinosaurs*" snes9x multitap ; "snes.Hungry Dinosaurs*" multitap ;
"snes.International Superstar Soccer Deluxe*" snes9x multitap ; "snes.International Superstar Soccer Deluxe*" multitap ;
"snes.J.League Excite Stage '94*" snes9x multitap ; "snes.J.League Excite Stage '94*" multitap ;
"snes.J.League Excite Stage '95*" snes9x multitap ; "snes.J.League Excite Stage '95*" multitap ;
"snes.J.League Excite Stage '96*" snes9x multitap ; "snes.J.League Excite Stage '96*" multitap ;
"snes.J.League Super Soccer '95*" snes9x multitap ; "snes.J.League Super Soccer '95*" multitap ;
"snes.J.League Super Soccer*" snes9x multitap ; "snes.J.League Super Soccer*" multitap ;
"snes.JWP Joshi Pro Wrestling - Pure Wrestle Queens*" snes9x multitap ; "snes.JWP Joshi Pro Wrestling - Pure Wrestle Queens*" multitap ;
"snes.Jikkyou Power Pro Wrestling '96*" snes9x multitap ; "snes.Jikkyou Power Pro Wrestling '96*" multitap ;
"snes.Jimmy Connors Pro Tennis Tour*" snes9x multitap ; "snes.Jimmy Connors Pro Tennis Tour*" multitap ;
"snes.Kunio-kun no Dodge Ball dayo Zenin Shuugou!*" snes9x multitap ; "snes.Kunio-kun no Dodge Ball dayo Zenin Shuugou!*" multitap ;
"snes.Looney Tunes Basketball*" snes9x multitap ; "snes.Looney Tunes Basketball*" multitap ;
"snes.Madden NFL '94*" snes9x multitap ; "snes.Madden NFL '94*" multitap ;
"snes.Madden NFL '95*" snes9x multitap ; "snes.Madden NFL '95*" multitap ;
"snes.Madden NFL '96*" snes9x multitap ; "snes.Madden NFL '96*" multitap ;
"snes.Madden NFL '97*" snes9x multitap ; "snes.Madden NFL '97*" multitap ;
"snes.Madden NFL '98*" snes9x multitap ; "snes.Madden NFL '98*" multitap ;
"snes.Micro Machines 2 - Turbo Tournament*" snes9x multitap ; "snes.Micro Machines 2 - Turbo Tournament*" multitap ;
"snes.Micro Machines*" snes9x multitap ; "snes.Micro Machines*" multitap ;
"snes.Mizuki Shigeru no Youkai Hyakkiyakou*" snes9x multitap ; "snes.Mizuki Shigeru no Youkai Hyakkiyakou*" multitap ;
"snes.Multi Play Volleyball*" snes9x multitap ; "snes.Multi Play Volleyball*" multitap ;
"snes.NBA Give 'N Go*" snes9x multitap ; "snes.NBA Give 'N Go*" multitap ;
"snes.NBA Hang Time*" snes9x multitap ; "snes.NBA Hang Time*" multitap ;
"snes.NBA Jam - Tournament Edition*" snes9x multitap ; "snes.NBA Jam - Tournament Edition*" multitap ;
"snes.NBA Jam*" snes9x multitap ; "snes.NBA Jam*" multitap ;
"snes.NBA Live 95*" snes9x multitap ; "snes.NBA Live 95*" multitap ;
"snes.NBA Live 96*" snes9x multitap ; "snes.NBA Live 96*" multitap ;
"snes.NBA Live 97*" snes9x multitap ; "snes.NBA Live 97*" multitap ;
"snes.NBA Live 98*" snes9x multitap ; "snes.NBA Live 98*" multitap ;
"snes.NCAA Final Four Basketball*" snes9x multitap ; "snes.NCAA Final Four Basketball*" multitap ;
"snes.NCAA Football*" snes9x multitap ; "snes.NCAA Football*" multitap ;
"snes.NFL Quarterback Club 96*" snes9x multitap ; "snes.NFL Quarterback Club 96*" multitap ;
"snes.NFL Quarterback Club*" snes9x multitap ; "snes.NFL Quarterback Club*" multitap ;
"snes.NHL '94*" snes9x multitap ; "snes.NHL '94*" multitap ;
"snes.NHL '98*" snes9x multitap ; "snes.NHL '98*" multitap ;
"snes.NHL Pro Hockey '94*" snes9x multitap ; "snes.NHL Pro Hockey '94*" multitap ;
"snes.Natsume Championship Wrestling*" snes9x multitap ; "snes.Natsume Championship Wrestling*" multitap ;
"snes.Peace Keepers, The*" snes9x multitap ; "snes.Peace Keepers, The*" multitap ;
"snes.Pieces*" snes9x multitap ; "snes.Pieces*" multitap ;
"snes.Rap Jam - Volume One*" snes9x multitap ; "snes.Rap Jam - Volume One*" multitap ;
"snes.Saturday Night Slam Masters*" snes9x multitap ; "snes.Saturday Night Slam Masters*" multitap ;
"snes.Secret of Mana*" snes9x multitap ; "snes.Secret of Mana*" multitap ;
"snes.Shin Nippon Pro Wrestling '94 - Battlefield in Tokyo Dome*" snes9x multitap ; "snes.Shin Nippon Pro Wrestling '94 - Battlefield in Tokyo Dome*" multitap ;
"snes.Shin Nippon Pro Wrestling - Chou Senshi in Tokyo Dome*" snes9x multitap ; "snes.Shin Nippon Pro Wrestling - Chou Senshi in Tokyo Dome*" multitap ;
"snes.Shin Nippon Pro Wrestling Kounin '95 - Tokyo Dome Battle 7*" snes9x multitap ; "snes.Shin Nippon Pro Wrestling Kounin '95 - Tokyo Dome Battle 7*" multitap ;
"snes.Smash Tennis*" snes9x multitap ; "snes.Smash Tennis*" multitap ;
"snes.Sporting News, The - Power Baseball*" snes9x multitap ; "snes.Sporting News, The - Power Baseball*" multitap ;
"snes.Sterling Sharpe End 2 End*" snes9x multitap ; "snes.Sterling Sharpe End 2 End*" multitap ;
"snes.Street Hockey '95*" snes9x multitap ; "snes.Street Hockey '95*" multitap ;
"snes.Street Racer*" snes9x multitap ; "snes.Street Racer*" multitap ;
"snes.Sugoi Hebereke*" snes9x multitap ; "snes.Sugoi Hebereke*" multitap ;
"snes.Sugoro Quest++ Dicenics*" snes9x multitap ; "snes.Sugoro Quest++ Dicenics*" multitap ;
"snes.Super Bomberman - Panic Bomber W*" snes9x multitap ; "snes.Super Bomberman - Panic Bomber W*" multitap ;
"snes.Super Bomberman 2*" snes9x multitap ; "snes.Super Bomberman 2*" multitap ;
"snes.Super Bomberman 3*" snes9x multitap ; "snes.Super Bomberman 3*" multitap ;
"snes.Super Bomberman 4*" snes9x multitap ; "snes.Super Bomberman 4*" multitap ;
"snes.Super Bomberman 5*" snes9x multitap ; "snes.Super Bomberman 5*" multitap ;
"snes.Super Bomberman*" snes9x multitap ; "snes.Super Bomberman*" multitap ;
"snes.Super Fire Pro Wrestling - Queen's Special*" snes9x multitap ; "snes.Super Fire Pro Wrestling - Queen's Special*" multitap ;
"snes.Super Fire Pro Wrestling Special*" snes9x multitap ; "snes.Super Fire Pro Wrestling Special*" multitap ;
"snes.Super Fire Pro Wrestling X Premium*" snes9x multitap ; "snes.Super Fire Pro Wrestling X Premium*" multitap ;
"snes.Super Fire Pro Wrestling X*" snes9x multitap ; "snes.Super Fire Pro Wrestling X*" multitap ;
"snes.Super Formation Soccer 94 - World Cup Final Data*" snes9x multitap ; "snes.Super Formation Soccer 94 - World Cup Final Data*" multitap ;
"snes.Super Formation Soccer 94*" snes9x multitap ; "snes.Super Formation Soccer 94*" multitap ;
"snes.Super Formation Soccer 95 della Serie A - UCC Xaqua*" snes9x multitap ; "snes.Super Formation Soccer 95 della Serie A - UCC Xaqua*" multitap ;
"snes.Super Formation Soccer 95 della Serie A*" snes9x multitap ; "snes.Super Formation Soccer 95 della Serie A*" multitap ;
"snes.Super Formation Soccer 96*" snes9x multitap ; "snes.Super Formation Soccer 96*" multitap ;
"snes.Super Formation Soccer II*" snes9x multitap ; "snes.Super Formation Soccer II*" multitap ;
"snes.Super Ice Hockey*" snes9x multitap ; "snes.Super Ice Hockey*" multitap ;
"snes.Super Kyousouba - Kaze no Sylphid*" snes9x multitap ; "snes.Super Kyousouba - Kaze no Sylphid*" multitap ;
"snes.Super Power League*" snes9x multitap ; "snes.Super Power League*" multitap ;
"snes.Super Tekkyuu Fight!*" snes9x multitap ; "snes.Super Tekkyuu Fight!*" multitap ;
"snes.Super Tetris 3*" snes9x multitap ; "snes.Super Tetris 3*" multitap ;
"snes.Syndicate*" snes9x multitap ; "snes.Syndicate*" multitap ;
"snes.Tenryu Genichiro no Pro Wrestling Revolution*" snes9x multitap ; "snes.Tenryu Genichiro no Pro Wrestling Revolution*" multitap ;
"snes.Tiny Toon Adventures - Wild & Wacky Sports*" snes9x multitap ; "snes.Tiny Toon Adventures - Wild & Wacky Sports*" multitap ;
"snes.Top Gear 3000*" snes9x multitap ; "snes.Top Gear 3000*" multitap ;
"snes.Turbo Toons*" snes9x multitap ; "snes.Turbo Toons*" multitap ;
"snes.Virtual Soccer*" snes9x multitap ; "snes.Virtual Soccer*" multitap ;
"snes.Vs. Collection*" snes9x multitap ; "snes.Vs. Collection*" multitap ;
"snes.WWF Raw*" snes9x multitap ; "snes.WWF Raw*" multitap ;
"snes.Yuujin no Furi Furi Girls*" snes9x multitap ; "snes.Yuujin no Furi Furi Girls*" multitap ;
"snes.Zero 4 Champ RR-Z*" snes9x multitap ; "snes.Zero 4 Champ RR-Z*" multitap ;
"snes.Zero 4 Champ RR*" snes9x multitap ; "snes.Zero 4 Champ RR*" multitap ;
# Defaults ;
"gba.*" vba ;
"gbc.*" gambatte ;
"gb.*" gambatte ;
"gg.*" genplus ;
"nes.*" fceu ;
"pcecd.*" mednafen-pce-fast ;
"pce.*" mednafen-pce-fast ;
"ps1.*" mednafen-psx ;
"wswan.*" mednafen-wswan ;
"a26.*" stella ;
"scd.*" genplus ;
"sg1000.*" genplus ;
"smd.*" genplus ;
"sms.*" genplus ;
"snes.*" snes9x ;
"nds.*" desmume ;

View File

@ -138,22 +138,22 @@ static int get_sha1(const char *path, char *result)
} }
struct RunInfo { struct RunInfo {
char core[50]; char broken_cores[PATH_MAX];
int multitap; int multitap;
int dualanalog; int dualanalog;
char system[10];
}; };
static int get_run_info(struct RunInfo *info, char *game_name) static int read_launch_conf(struct RunInfo *info, const char *game_name)
{ {
int fd = open("./launch.conf", O_RDONLY); int fd = open("./launch.conf", O_RDONLY);
int rv; int rv;
int bci = 0;
char token[MAX_TOKEN_LEN]; char token[MAX_TOKEN_LEN];
if (fd < 0) { if (fd < 0) {
return -errno; return -errno;
} }
memset(info, 0, sizeof(struct RunInfo));
while (1) { while (1) {
if ((rv = get_token(fd, token, MAX_TOKEN_LEN)) < 0) { if ((rv = get_token(fd, token, MAX_TOKEN_LEN)) < 0) {
goto clean; goto clean;
@ -167,18 +167,9 @@ static int get_run_info(struct RunInfo *info, char *game_name)
} }
LOG_DEBUG("Matched rule '%s'", token); LOG_DEBUG("Matched rule '%s'", token);
if ((rv = get_token(fd, token, MAX_TOKEN_LEN)) < 0) {
goto clean;
}
break; break;
} }
strncpy(info->core, token, 50);
info->multitap = 0;
info->dualanalog = 0;
if ((rv = get_token(fd, token, MAX_TOKEN_LEN)) < 0) { if ((rv = get_token(fd, token, MAX_TOKEN_LEN)) < 0) {
goto clean; goto clean;
} }
@ -188,6 +179,9 @@ static int get_run_info(struct RunInfo *info, char *game_name)
info->multitap = 1; info->multitap = 1;
} else if (strcmp(token, "dualanalog") == 0) { } else if (strcmp(token, "dualanalog") == 0) {
info->dualanalog = 1; info->dualanalog = 1;
} else if (token[0] == '!') {
strncpy(&info->broken_cores[bci], &token[1], PATH_MAX - bci);
bci += strnlen(&token[1], PATH_MAX) + 1;
} }
if ((rv = get_token(fd, token, MAX_TOKEN_LEN)) < 0) { if ((rv = get_token(fd, token, MAX_TOKEN_LEN)) < 0) {
@ -201,6 +195,25 @@ static int get_run_info(struct RunInfo *info, char *game_name)
return rv; return rv;
} }
static int get_run_info(struct RunInfo *info, const char *game_name) {
memset(info, 0, sizeof(struct RunInfo));
int i;
for (i = 0; i < 9; i++) {
if (game_name[i] == '.') {
break;
}
info->system[i] = game_name[i];
}
info->system[i] = '\0';
info->multitap = 0;
info->dualanalog = 0;
read_launch_conf(info, game_name);
return 0;
}
const char *SUFFIX_MATCH[] = { const char *SUFFIX_MATCH[] = {
".a26", "a26", ".a26", "a26",
".bin", "smd", ".bin", "smd",
@ -268,15 +281,91 @@ static int detect_game(const char *path, char *game_name, size_t max_len)
} }
} }
static int select_core(char *core_path, size_t max_len,
const struct RunInfo *info) {
int fd = open("./cores.conf", O_RDONLY);
int rv;
int bci = 0;
char token[MAX_TOKEN_LEN];
int broken = 0;
if (fd < 0) {
return -errno;
}
LOG_INFO("Selecting core for system '%s'", info->system);
while (1) {
if ((rv = get_token(fd, token, MAX_TOKEN_LEN)) < 0) {
goto clean;
}
if (rl_fnmatch(token, info->system, 0) != 0) {
if ((rv = find_token(fd, ";")) < 0) {
goto clean;
}
continue;
}
LOG_INFO("Matched system '%s'", token);
break;
}
if ((rv = get_token(fd, token, MAX_TOKEN_LEN)) < 0) {
goto clean;
}
while (strcmp(token, ";") != 0) {
broken = 0;
for (bci = 0; info->broken_cores[bci] != '\0';
bci += strlen(&info->broken_cores[bci]) + 1) {
LOG_DEBUG("%s, %s", &info->broken_cores[bci], token);
if (strcmp(&info->broken_cores[bci], token) == 0) {
broken = 1;
LOG_DEBUG("Not using core %s because it is "
"marked broken for this game",
&info->broken_cores[bci]);
break;
}
}
if (!broken) {
goto success;
}
if ((rv = get_token(fd, token, MAX_TOKEN_LEN)) < 0) {
goto clean;
}
}
rv = -EINVAL;
goto clean;
success:
snprintf(core_path, max_len, "./cores/libretro-%s.so", token);
rv = 0;
clean:
close(fd);
return rv;
}
#ifndef RARCH_CONSOLE #ifndef RARCH_CONSOLE
static int run_retroarch(const char *path, const struct RunInfo *info) static int run_retroarch(const char *path, const struct RunInfo *info)
{ {
char core_path[PATH_MAX]; char core_path[PATH_MAX];
sprintf(core_path, "./cores/libretro-%s.so", info->core); int i;
int rv;
const char *retro_argv[30] = { "retroarch", const char *retro_argv[30] = { "retroarch",
"-L", core_path "-L", core_path
}; };
int argi = 3; int argi = 3;
if ((rv = select_core(core_path, PATH_MAX, info)) < 0) {
LOG_WARN("Could not find suitable core");
return rv;
}
LOG_INFO("Using core at '%s'", core_path);
if (info->multitap) { if (info->multitap) {
retro_argv[argi] = "-4"; retro_argv[argi] = "-4";
argi++; argi++;
@ -284,14 +373,12 @@ static int run_retroarch(const char *path, const struct RunInfo *info)
} }
if (info->dualanalog) { if (info->dualanalog) {
retro_argv[argi] = "-A"; for (i = 0; i < 8; i++) {
argi++; retro_argv[argi] = "-A";
retro_argv[argi] = "1"; argi++;
argi++; retro_argv[argi] = "1";
retro_argv[argi] = "-A"; argi++;
argi++; }
retro_argv[argi] = "2";
argi++;
LOG_INFO("Game supports the dualshock controller"); LOG_INFO("Game supports the dualshock controller");
} }
@ -305,6 +392,7 @@ static int run_retroarch(const char *path, const struct RunInfo *info)
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
if (argc < 2) { if (argc < 2) {
printf("usage: retrolaunch <ROM>\n");
return -1; return -1;
} }
@ -321,11 +409,10 @@ int main(int argc, char *argv[])
LOG_INFO("Game is `%s`", game_name); LOG_INFO("Game is `%s`", game_name);
if ((rv = get_run_info(&info, game_name)) < 0) { if ((rv = get_run_info(&info, game_name)) < 0) {
LOG_WARN("Could not find sutable core: %s", strerror(-rv)); LOG_WARN("Could not detect run info: %s", strerror(-rv));
return -1; return -1;
} }
LOG_DEBUG("Usinge libretro core '%s'", info.core);
LOG_INFO("Launching '%s'", path); LOG_INFO("Launching '%s'", path);
rv = run_retroarch(path, &info); rv = run_retroarch(path, &info);