From 7c1b93502e94ad4bb0c4273ff19571a8211e2589 Mon Sep 17 00:00:00 2001 From: Chris Ham Date: Sat, 15 Sep 2018 22:46:19 -0700 Subject: [PATCH] 4Head --- conf/snesgames.json | 1517 +++++++++++++++++++++---------------------- config.json | 204 ++++-- twitch.js | 148 ++--- 3 files changed, 971 insertions(+), 898 deletions(-) diff --git a/conf/snesgames.json b/conf/snesgames.json index 46b35e8..0aecbb6 100755 --- a/conf/snesgames.json +++ b/conf/snesgames.json @@ -1,760 +1,757 @@ -[ - "2020 Super Baseball", - "3 Ninjas Kick Back", - "7th Saga, The", - "A.S.P. Air Strike Patrol", - "AAAHH!!! Real Monsters", - "ABC Monday Night Football", - "ACME Animation Factory", - "ActRaiser", - "ActRaiser 2", - "AD&D - Eye of the Beholder", - "Addams Family Values", - "Addams Family, The", - "Addams Family, The - Pugsley's Scavenger Hunt", - "Adventures of Batman & Robin, The", - "Adventures of Dr. Franken, The", - "Adventures of Kid Kleets, The", - "Adventures of Rocky and Bullwinkle and Friends, The", - "Aero Fighters", - "Aero the Acro-Bat", - "Aero the Acro-Bat 2", - "Aerobiz", - "Aerobiz Supersonic", - "Air Cavalry", - "Al Unser Jr's Road to the Top", - "Aladdin", - "Alien 3", - "Alien vs. Predator", - "American Gladiators", - "American Tail, An - Fievel Goes West", - "Andre Agassi Tennis", - "Animaniacs", - "Arcade's Greatest Hits", - "Arcade's Greatest Hits - The Atari Collection 1", - "Arcana", - "Ardy Lightfoot", - "Arkanoid - Doh It Again", - "Art of Fighting", - "Axelay", - "B.O.B.", - "Bahamut Lagoon (ENG)", - "Ballz 3D", - "Barbie Super Model", - "Barbie Vacation Adventure", - "Barkley Shut Up and Jam!", - "Bass Masters Classic", - "Bass Masters Classic - Pro Edition", - "Bassin's Black Bass", - "Batman - Revenge of the Joker", - "Batman Forever", - "Batman Returns", - "Battle Blaze", - "Battle Cars", - "Battle Clash", - "Battle Grand Prix", - "Battletoads & Double Dragon - The Ultimate Team", - "Battletoads in Battlemaniacs", - "Bazooka Blitzkrieg", - "Beauty and the Beast", - "Beavis and Butt-head", - "Bebe's Kids", - "Beethoven's 2nd", - "Best of the Best - Championship Karate", - "Big Sky Trooper", - "Biker Mice From Mars", - "Bill Laimbeer's Combat Basketball", - "Bill Walsh College Football", - "Bio Metal", - "Blackthorne", - "Blazeon", - "Blues Brothers, The", - "Bobby's World", - "Bonkers", - "Boogerman - A Pick and Flick Adventure", - "Boxing Legends of the Ring", - "Brain Lord", - "Brainies, The", - "Bram Stoker's Dracula", - "Brandish", - "Brawl Brothers", - "BreakThru!", - "Breath of Fire", - "Breath of Fire II", - "Brett Hull Hockey", - "Brett Hull Hockey '95", - "Bronkie Health Hero", - "Brunswick World Tournament of Champions", - "Brutal - Paws of Fury", - "Bubsy II", - "Bubsy in Claws Encounters of the Furred Kind", - "Bugs Bunny - Rabbit Rampage", - "Bulls Vs Blazers and the NBA Playoffs", - "Bust-A-Move", - "Cacoma Knight in Bizyland", - "Cal Ripken Jr. Baseball", - "California Games II", - "Cannondale Cup", - "Capcom's MVP Football", - "Capcom's Soccer Shootout", - "Captain America and The Avengers", - "Captain Commando", - "Captain Novolin", - "Carrier Aces", - "Casper", - "Castlevania - Dracula X", - "Champions World Class Soccer", - "Championship Pool", - "Championship Soccer '94", - "Chavez", - "Chavez II", - "Chessmaster, The", - "Chester Cheetah - Too Cool to Fool", - "Chester Cheetah - Wild Wild Quest", - "Choplifter III", - "Chrono Trigger", - "Chuck Rock", - "Civilization", - "Clay Fighter", - "Clay Fighter - Tournament Edition", - "Clay Fighter 2 - Judgment Clay", - "Claymates", - "Claymates Demo", - "Cliffhanger", - "Clue", - "College Football USA '97 - The Road to New Orleans", - "College Slam Basketball", - "Combatribes, The", - "Congo's Caper", - "Contra III - The Alien Wars", - "Cool Spot", - "Cool World", - "Cutthroat Island", - "Cyber Spin", - "Cybernator", - "D-Force", - "Daffy Duck - The Marvin Missions", - "Dai 3 Ji - Super Robot Taisen", - "Darius Twin", - "David Crane's Amazing Tennis", - "Death and Return of Superman, The", - "Demolition Man", - "Demon's Crest", - "Dennis the Menace", - "Desert Strike - Return to the Gulf", - "Dig & Spike Volleyball", - "Dino City", - "Dirt Trax FX", - "Donkey Kong Country", - "Donkey Kong Country - Competition Cartridge", - "Donkey Kong Country 2 - Diddy's Kong Quest", - "Donkey Kong Country 3 - Dixie Kong's Double Trouble", - "Doom", - "Doomsday Warrior", - "Dossun! Ganseki Battle (ENG)", - "Double Dragon V - The Shadow Falls", - "Dragon - The Bruce Lee Story", - "Dragon Quest 1 and 2 (ENG)", - "Dragon Quest 5 - Tenkuu no Hanayome (ENG)", - "Dragon Quest 6 - Maboroshi no Daichi (ENG)", - "Dragon View", - "Dragon's Lair", - "Dragon-Ball Z - Hyper Dimension (ENG)", - "Dragon-Ball Z - Super Butouden (ENG)", - "Dragon-Ball Z - Super Butouden 3 (ENG)", - "Dragon-Ball Z - Super Gokuden Totsugeki Hen (ENG)", - "Dragon-Ball Z - Super Saiyan Densetsu (ENG)", - "Dragon-Ball-Z - Super Gokuden 2 (ENG)", - "Drakkhen", - "Dream TV", - "Dual Orb 2 (ENG)", - "Dungeon Master", - "E.V.O. Search for Eden", - "Earthbound", - "Earthworm Jim", - "Earthworm Jim 2", - "Eek! The Cat", - "Elite Soccer", - "Emmitt Smith Football", - "Equinox", - "ESPN Baseball Tonight", - "ESPN National Hockey Night", - "ESPN Speedworld", - "ESPN Sunday Night NFL", - "Extra Innings", - "F-ZERO", - "F1 Pole Position", - "F1 ROC - Race of Champions", - "F1 ROC II - Race of Champions", - "Faceball 2000", - "Family Dog", - "Family Feud", - "Fatal Fury", - "Fatal Fury 2", - "Fatal Fury Special", - "Feda - the Emblem of Justice (ENG)", - "FIFA 97 - Gold Edition", - "FIFA International Soccer", - "FIFA Soccer 96", - "Fighter's History", - "file-list.txt", - "Final Fantasy - Mystic Quest", - "Final Fantasy 4 - 10th Anniversary Edition (ENG)", - "Final Fantasy 6 (ENG)", - "Final Fight", - "Final Fight 2", - "Final Fight 3", - "Final Fight Guy", - "Fire Striker", - "Firepower 2000", - "First Samurai", - "Flashback - The Quest for Identity", - "Flintstones, The", - "Flintstones, The - The Treasure of Sierra Madrock", - "Football Fury", - "Foreman For Real", - "Frank Thomas' Big Hurt Baseball", - "Frantic Flea", - "Frogger", - "Front Mission - Gun Hazard (ENG)", - "Full Throttle Racing", - "Fun 'N Games", - "Gamars Puzzle (Unl)", - "Gemfire", - "Genghis Khan II - Clan of the Gray Wolf", - "George Foreman's KO Boxing", - "Ghoul Patrol", - "Gods", - "Goof Troop", - "GP-1", - "GP-1 Part II", - "Gradius III", - "Great Circus Mystery Starring Mickey & Minnie, The", - "Great Waldo Search, The", - "Gunforce - Battle Fire Engulfed Terror Island", - "Hagane", - "HAL's Hole in One Golf", - "Hammerlock Wrestling", - "Hardball III", - "Harley's Humongous Adventure", - "Harvest Moon", - "Head-On Soccer", - "Hit the Ice", - "Home Alone", - "Home Alone 2 - Lost in New York", - "Home Improvement", - "Hook", - "Hunt for Red October, The", - "Hurricanes, The", - "Hyper V-Ball", - "HyperZone", - "Ignition Factor, The", - "Illusion of Gaia", - "Imperium", - "Incantation", - "Incredible Crash Dummies, The", - "Incredible Hulk, The", - "Indiana Jones' Greatest Adventures", - "Inindo - Way of the Ninja", - "Inspector Gadget", - "International Superstar Soccer", - "International Superstar Soccer Deluxe", - "International Tennis Tour", - "Irem Skins Game, The", - "Itchy & Scratchy Game, The", - "Izzy's Quest for the Olympic Rings", - "Jack Nicklaus Golf", - "James Bond Jr", - "Jammit", - "Jeopardy!", - "Jeopardy! Deluxe Edition", - "Jeopardy! Sports Edition", - "Jetsons, The - Invasion of the Planet Pirates", - "Jim Lee's WildC.A.T.S", - "Jim Power - The Lost Dimension in 3D", - "Jimmy Connors Pro Tennis Tour", - "Jimmy Houston's Bass Tournament U.S.A.", - "Joe & Mac", - "Joe & Mac 2 - Lost in the Tropics", - "John Madden Football", - "John Madden Football '93", - "JRR Tolkien's The Lord of the Rings - Volume 1", - "Judge Dredd", - "Jungle Book, The", - "Jungle Strike", - "Jurassic Park", - "Jurassic Park Part 2 - The Chaos Continues", - "Justice League Task Force", - "Kablooey", - "Kawasaki Caribbean Challenge", - "Kawasaki Superbike Challenge", - "Ken Griffey Jr. Presents Major League Baseball", - "Ken Griffey Jr.'s Winning Run", - "Kendo Rage", - "Kid Klown in Crazy Chase", - "Killer Instinct", - "King Arthur & The Knights of Justice", - "King Arthur's World", - "King of Dragons, The", - "King of the Monsters", - "King of the Monsters 2", - "Kirby Super Star", - "Kirby's Avalanche", - "Kirby's Dream Course", - "Kirby's Dream Land 3", - "Knights of the Round", - "Krusty's Super Fun House", - "Kyle Petty's No Fear Racing", - "Lagoon", - "Lamborghini - American Challenge", - "Last Action Hero", - "Lawnmower Man, The", - "Legend", - "Legend of The Mystical Ninja, The", - "Lemmings", - "Lemmings 2 - The Tribes", - "Lester the Unlikely", - "Lethal Enforcers", - "Lethal Weapon", - "Liberty or Death", - "Lion King, The", - "listing.txt", - "Lock On", - "Looney Tunes B-Ball", - "Lost Vikings II, The", - "Lost Vikings, The", - "Lufia & The Fortress of Doom", - "Lufia II - Rise of the Sinistrals", - "M.A.C.S. Basic Rifle Simulator", - "Madden NFL '94", - "Madden NFL '95", - "Madden NFL '96", - "Madden NFL '97", - "Madden NFL '98", - "Magic Boy", - "Magic Johnson's Super Slam Dunk", - "Magic Sword", - "Magical Quest Starring Mickey Mouse, The", - "Mario is Missing!", - "Mario Paint", - "Mario's Early Years - Fun With Letters", - "Mario's Early Years - Fun With Numbers", - "Mario's Early Years - Preschool Fun", - "Mario's Time Machine", - "Mark Davis' The Fishing Master", - "Marvel Super Heroes - War of the Gems", - "Mary Shelley's Frankenstein", - "Mask, The", - "Math Blaster - Episode 1", - "Maui Mallard in Cold Shadow", - "Mecarobot Golf", - "Mechwarrior", - "Mechwarrior 3050", - "Mega Man VII", - "Mega Man X", - "Mega Man X 2", - "Mega Man X 3", - "Mega Man's Soccer", - "Metal Combat - Falcon's Revenge", - "Metal Marines", - "Metal Morph", - "Metal Warriors", - "Michael Andretti's Indy Car Challenge", - "Michael Jordan - Chaos in the Windy City", - "Mickey Mania", - "Mickey's Playtown Adventure - A Day of Discovery!", - "Mickey's Ultimate Challenge", - "Micro Machines", - "Might and Magic III - Isles of Terra", - "Mighty Max", - "Mighty Morphin Power Rangers", - "Mighty Morphin Power Rangers - The Fighting Edition", - "Mighty Morphin Power Rangers - The Movie", - "Miracle Piano Teaching System, The", - "MLBPA Baseball", - "MoHawk & Headphone Jack", - "Monopoly", - "Monstania (ENG)", - "Mortal Kombat", - "Mortal Kombat 3", - "Mortal Kombat II", - "Mountain Bike Rally", - "Mr. Do!", - "Mr. Nutz", - "Ms. Pac-Man", - "Musya", - "Mutant Chronicles - Doom Troopers", - "Natsume Championship Wrestling", - "NBA All-Star Challenge", - "NBA Give 'N Go", - "NBA Hang Time", - "NBA Jam", - "NBA Jam - Tournament Edition", - "NBA Live '95", - "NBA Live '96", - "NBA Live '97", - "NBA Live '98", - "NBA Showdown", - "NCAA Basketball", - "NCAA Final Four Basketball", - "NCAA Football", - "Network Q Rally", - "Newman-Hass Indy Car Featuring Nigel Mansell", - "NFL Football", - "NFL Quarterback Club", - "NFL Quarterback Club '96", - "NHL '94", - "NHL '95", - "NHL '96", - "NHL '97", - "NHL '98", - "NHL Stanley Cup", - "NHLPA Hockey '93", - "Nickelodeon GUTS", - "Nigel Mansell's World Championship Racing", - "Ninja Gaiden Trilogy", - "Ninja Warriors, The", - "No Escape", - "Nobunaga's Ambition", - "Nobunaga's Ambition - Lord of Darkness", - "Nolan Ryan's Baseball", - "Nosferatu", - "Obitus", - "Ogre Battle - The March of the Black Queen", - "Olympic Summer Games 96", - "On the Ball", - "Operation Europe - Path to Victory 1939-45", - "Operation Logic Bomb", - "Operation Thunderbolt", - "Oscar", - "Out of This World", - "Out to Lunch", - "Outlander", - "Pac-Attack", - "Pac-in-Time", - "Pac-Man 2 - The New Adventures", - "Pacific Theater of Operations", - "Pacific Theater of Operations II", - "Packy & Marlon", - "Pagemaster, The", - "Paladin's Quest", - "Paperboy 2", - "Peace Keepers, The", - "Pebble Beach Golf Links", - "PGA European Tour", - "PGA Tour 96", - "PGA Tour Golf", - "Phalanx - The Enforce Fighter A-144", - "Phantom 2040", - "Pieces", - "Pilotwings", - "Pinball Dreams", - "Pinball Fantasies", - "Pink Panther in Pink Goes to Hollywood", - "Pinocchio", - "Pirates of Dark Water, The", - "Pit Fighter", - "Pitfall - The Mayan Adventure", - "Plok!", - "Pocky & Rocky", - "Pocky & Rocky 2", - "Populous", - "Porky Pig's Haunted Holiday", - "Power Drive (U) (Beta) (M5)", - "Power Instinct", - "Power Moves", - "Power Piggs of the Dark Age", - "Power Rangers Zeo - Battle Racers", - "Prehistorik Man", - "Primal Rage", - "Prince of Persia", - "Prince of Persia 2 - The Shadow & The Flame", - "Pro Quarterback", - "Pro Sport Hockey", - "Push-Over", - "Q-bert 3", - "R-Type III - The Third Lightning", - "Race Drivin'", - "Radical Rex", - "Raiden Trad", - "Rampart", - "Ranma Nibunnoichi - Hard Battle", - "Rap Jam - Volume One", - "Realm", - "Redline F-1 Racer", - "Relief Pitcher", - "Ren & Stimpy Show, The - Buckeroos!", - "Ren & Stimpy Show, The - Fire Dogs", - "Ren & Stimpy Show, The - Time Warp", - "Ren & Stimpy Show, The - Veediots!", - "Revolution X", - "Rex Ronan - Experimental Surgeon", - "RHI Roller Hockey '95 (U) (NG-Dump Known)", - "Riddick Bowe Boxing", - "Rise of the Phoenix", - "Rival Turf", - "Road Riot 4WD", - "Road Runner's Death Valley Rally", - "Robocop 3", - "Robocop Versus The Terminator", - "Robotrek", - "Rock N' Roll Racing", - "Rocketeer, The", - "Rocko's Modern Life - Spunky's Dangerous Day", - "Rocky Rodent", - "Roger Clemens' MVP Baseball", - "Romance of the Three Kingdoms II", - "Romance of the Three Kingdoms III - Dragon of Destiny", - "Romance of the Three Kingdoms IV - Wall of Fire", - "RPM Racing", - "Run Saber", - "Sailor-Moon (ENG)", - "Sailor-Moon RPG - Another Story (ENG)", - "Samurai Shodown", - "Saturday Night Slam Masters", - "Scooby-Doo", - "SeaQuest DSV", - "Secret of Evermore", - "Secret of Mana", - "Secret of the Stars", - "Shadow, The", - "Shadowrun", - "Shanghai II - Dragon's Eye", - "Shaq Fu", - "Shien's Revenge", - "Side Pocket", - "Sim Ant", - "Sim City", - "Sim City 2000", - "Sim Earth - The Living Planet", - "Simpsons, The - Bart's Nightmare", - "Sink or Swim", - "Skuljagger - Revolt of the Westicans", - "Sky Blazer", - "Smart Ball", - "SNES Test Program", - "Snow White in Happily Ever After", - "Soldiers of Fortune", - "Sonic Blast Man", - "Sonic Blast Man II", - "Sonic the Hedgehog", - "SOS", - "Soul Blazer", - "Space Ace", - "Space Football - One on One", - "Space Invaders", - "Space Megaforce", - "Spanky's Quest", - "Sparkster", - "Spawn", - "Spectre", - "Speed Racer in My Most Dangerous Adventures", - "Speedy Gonzales - Los Gatos Bandidos", - "Spell Craft", - "Spider-Man", - "Spider-Man & Venom - Maximum Carnage", - "Spider-Man & Venom - Separation Anxiety", - "Spider-Man and the X-Men in Arcade's Revenge", - "Spindizzy Worlds", - "Sporting News Power Baseball, The", - "Sports Illustrated Championship Football & Baseball", - "Star Fox", - "Star Ocean (ENG)", - "Star Trek - Deep Space Nine - Crossroads of Time", - "Star Trek - Starfleet Academy Starship Bridge Simulator", - "Star Trek - The Next Generation - Future's Past", - "Stargate", - "Steel Talons", - "Sterling Sharpe - End 2 End", - "Stone Protectors", - "Street Combat", - "Street Fighter Alpha 2", - "Street Fighter II - The World Warrior", - "Street Fighter II Turbo - Hyper Fighting", - "Street Hockey '95", - "Street Racer", - "Strike Gunner", - "Stunt Race FX", - "Sunset Riders", - "Super Adventure Island", - "Super Adventure Island II", - "Super Alfred Chicken", - "Super Aquatic Games, The", - "Super Baseball Simulator 1.000", - "Super Bases Loaded", - "Super Bases Loaded 2", - "Super Bases Loaded 3 - License to Steal", - "Super Batter Up", - "Super Battleship", - "Super Battletank - War in the Gulf", - "Super Battletank 2", - "Super Black Bass", - "Super Bomberman", - "Super Bomberman 2", - "Super Bonk", - "Super Bowling", - "Super Buster Bros.", - "Super Caesars Palace", - "Super Castlevania IV", - "Super Chase H.Q.", - "Super Conflict - The Mideast", - "Super Double Dragon", - "Super Earth Defense Force", - "Super Game Boy", - "Super Ghouls 'N Ghosts", - "Super Goal!", - "Super Goal! 2", - "Super Godzilla", - "Super High Impact", - "Super James Pond", - "Super Mario All-Stars", - "Super Mario All-Stars + Super Mario World", - "Super Mario World 2 - Yoshi's Island", - "Super NES Super Scope 6", - "Super Ninja Boy", - "Super Noah's Ark 3D", - "Super Nova", - "Super Off Road", - "Super Off Road - The Baja", - "Super Pinball - Behind the Mask", - "Super Play Action Football", - "Super Punch-Out!!", - "Super Putty", - "Super R-Type", - "Super R.B.I. Baseball", - "Super Shadow of the Beast", - "Super Slapshot", - "Super Smash T.V.", - "Super Soccer", - "Super Soccer Champ", - "Super Solitaire", - "Super Star Force", - "Super Star Wars", - "Super Star Wars - Return of the Jedi", - "Super Star Wars - The Empire Strikes Back", - "Super Street Fighter II - The New Challengers", - "Super Strike Eagle", - "Super Tennis", - "Super Troll Islands", - "Super Turrican", - "Super Turrican 2", - "Super Valis IV", - "Super Widget", - "Suzuka 8 Hours", - "SWAT Kats - The Radical Squadron", - "Syndicate", - "T2 - The Arcade Game", - "Tales of Phantasia (ENG)", - "Taz-Mania", - "Tecmo Super Baseball", - "Tecmo Super Bowl", - "Tecmo Super Bowl II - Special Edition", - "Tecmo Super Bowl III - Final Edition", - "Tecmo Super NBA Basketball", - "Teenage Mutant Ninja Turtles - Tournament Fighters", - "Teenage Mutant Ninja Turtles IV - Turtles in Time", - "Terminator 2 - Judgment Day", - "Terminator, The", - "Test Drive II - The Duel", - "Tetris & Dr. Mario", - "Tetris 2", - "Tetris Attack", - "Thomas the Tank Engine and Friends", - "Thunder Spirits", - "Tick, The", - "Time Trax", - "Timecop", - "TimeSlip", - "Timon & Pumbaa's Jungle Games", - "Tin Star", - "Tiny Toon Adventures - Buster Busts Loose!", - "Tiny Toon Adventures - Wacky Sports Challenge", - "TKO Super Championship Boxing", - "TNN Bass Tournament of Champions", - "Tom & Jerry", - "Tony Meola's Sidekicks Soccer", - "Top Gear", - "Top Gear 2", - "Top Gear 3000", - "Total Carnage", - "Toy Story", - "Toys", - "Troddlers", - "Troy Aikman NFL Football", - "True Lies", - "Tuff E Nuff", - "Turn and Burn - No-Fly Zone", - "Twisted Tales of Spike McFang, The", - "U.N. Squadron", - "Ultima - Runes of Virtue II", - "Ultima VI - The False Prophet", - "Ultima VII - The Black Gate", - "Ultimate Fighter", - "Ultimate Mortal Kombat 3", - "Ultraman - Towards the Future", - "Uncharted Waters", - "Uncharted Waters - New Horizons", - "Uniracers", - "Universal Soldier", - "Untouchables, The", - "Urban Strike", - "Utopia - The Creation of a Nation", - "Vegas Stakes", - "Virtual Bart", - "Virtual Soccer", - "Vortex", - "Waialae Country Club", - "War 2410", - "War 3010 - The Revolution", - "Wario's Woods", - "Warlock", - "WarpSpeed", - "Wayne Gretzky and the NHLPA All-Stars", - "Wayne's World", - "WCW Super Brawl Wrestling", - "We're Back! - A Dinosaur's Story", - "Weapon Lord", - "Wheel of Fortune", - "Wheel of Fortune - Deluxe Edition", - "Where in the World is Carmen Sandiego", - "Where in Time is Carmen Sandiego", - "Whizz", - "Wicked 18 Golf", - "Wild Guns", - "WildSnake", - "Wing Commander", - "Wing Commander - The Secret Missions", - "Wings 2 - Aces High", - "Winter Extreme Skiing and Snowboarding", - "Winter Olympic Games - Lillehammer '94", - "Wizard of Oz, The", - "Wizardry V - Heart of the Maelstrom", - "Wolf Child", - "Wolfenstein 3D", - "Wolverine - Adamantium Rage", - "Wordtris", - "World Cup USA 94", - "World Heroes", - "World Heroes 2", - "World League Basketball", - "World League Soccer", - "World Soccer 94 - Road to Glory", - "WWF Raw", - "WWF Royal Rumble", - "WWF Super WrestleMania", - "WWF WrestleMania - The Arcade Game", - "X Zone", - "X-Kaliber 2097", - "X-Men - Mutant Apocalypse", - "Xardion", - "Yogi Bear", - "Yoshi's Cookie", - "Yoshi's Safari", - "Young Merlin", - "Ys 4 - Mask of the Sun (ENG)", - "Ys III - Wanderers from Ys", - "Zero the Kamikaze Squirrel", - "Zombies Ate My Neighbors", - "Zool", - "Zoop" -] \ No newline at end of file +["2020 Super Baseball", +"3 Ninjas Kick Back", +"7th Saga, The", +"A.S.P. Air Strike Patrol", +"AAAHH!!! Real Monsters", +"ABC Monday Night Football", +"ACME Animation Factory", +"ActRaiser", +"ActRaiser 2", +"AD&D - Eye of the Beholder", +"Addams Family Values", +"Addams Family, The", +"Addams Family, The - Pugsley's Scavenger Hunt", +"Adventures of Batman & Robin, The", +"Adventures of Dr. Franken, The", +"Adventures of Kid Kleets, The", +"Adventures of Rocky and Bullwinkle and Friends, The", +"Aero Fighters", +"Aero the Acro-Bat", +"Aero the Acro-Bat 2", +"Aerobiz", +"Aerobiz Supersonic", +"Air Cavalry", +"Al Unser Jr's Road to the Top", +"Aladdin", +"Alien 3", +"Alien vs. Predator", +"American Gladiators", +"American Tail, An - Fievel Goes West", +"Andre Agassi Tennis", +"Animaniacs", +"Arcade's Greatest Hits", +"Arcade's Greatest Hits - The Atari Collection 1", +"Arcana", +"Ardy Lightfoot", +"Arkanoid - Doh It Again", +"Art of Fighting", +"Axelay", +"B.O.B.", +"Bahamut Lagoon (ENG)", +"Ballz 3D", +"Barbie Super Model", +"Barbie Vacation Adventure", +"Barkley Shut Up and Jam!", +"Bass Masters Classic", +"Bass Masters Classic - Pro Edition", +"Bassin's Black Bass", +"Batman - Revenge of the Joker", +"Batman Forever", +"Batman Returns", +"Battle Blaze", +"Battle Cars", +"Battle Clash", +"Battle Grand Prix", +"Battletoads & Double Dragon - The Ultimate Team", +"Battletoads in Battlemaniacs", +"Bazooka Blitzkrieg", +"Beauty and the Beast", +"Beavis and Butt-head", +"Bebe's Kids", +"Beethoven's 2nd", +"Best of the Best - Championship Karate", +"Big Sky Trooper", +"Biker Mice From Mars", +"Bill Laimbeer's Combat Basketball", +"Bill Walsh College Football", +"Bio Metal", +"Blackthorne", +"Blazeon", +"Blues Brothers, The", +"Bobby's World", +"Bonkers", +"Boogerman - A Pick and Flick Adventure", +"Boxing Legends of the Ring", +"Brain Lord", +"Brainies, The", +"Bram Stoker's Dracula", +"Brandish", +"Brawl Brothers", +"BreakThru!", +"Breath of Fire", +"Breath of Fire II", +"Brett Hull Hockey", +"Brett Hull Hockey '95", +"Bronkie Health Hero", +"Brunswick World Tournament of Champions", +"Brutal - Paws of Fury", +"Bubsy II", +"Bubsy in Claws Encounters of the Furred Kind", +"Bugs Bunny - Rabbit Rampage", +"Bulls Vs Blazers and the NBA Playoffs", +"Bust-A-Move", +"Cacoma Knight in Bizyland", +"Cal Ripken Jr. Baseball", +"California Games II", +"Cannondale Cup", +"Capcom's MVP Football", +"Capcom's Soccer Shootout", +"Captain America and The Avengers", +"Captain Commando", +"Captain Novolin", +"Carrier Aces", +"Casper", +"Castlevania - Dracula X", +"Champions World Class Soccer", +"Championship Pool", +"Championship Soccer '94", +"Chavez", +"Chavez II", +"Chessmaster, The", +"Chester Cheetah - Too Cool to Fool", +"Chester Cheetah - Wild Wild Quest", +"Choplifter III", +"Chrono Trigger", +"Chuck Rock", +"Civilization", +"Clay Fighter", +"Clay Fighter - Tournament Edition", +"Clay Fighter 2 - Judgment Clay", +"Claymates", +"Claymates Demo", +"Cliffhanger", +"Clue", +"College Football USA '97 - The Road to New Orleans", +"College Slam Basketball", +"Combatribes, The", +"Congo's Caper", +"Contra III - The Alien Wars", +"Cool Spot", +"Cool World", +"Cutthroat Island", +"Cyber Spin", +"Cybernator", +"D-Force", +"Daffy Duck - The Marvin Missions", +"Dai 3 Ji - Super Robot Taisen", +"Darius Twin", +"David Crane's Amazing Tennis", +"Death and Return of Superman, The", +"Demolition Man", +"Demon's Crest", +"Dennis the Menace", +"Desert Strike - Return to the Gulf", +"Dig & Spike Volleyball", +"Dino City", +"Dirt Trax FX", +"Donkey Kong Country", +"Donkey Kong Country - Competition Cartridge", +"Donkey Kong Country 2 - Diddy's Kong Quest", +"Donkey Kong Country 3 - Dixie Kong's Double Trouble", +"Doom", +"Doomsday Warrior", +"Dossun! Ganseki Battle (ENG)", +"Double Dragon V - The Shadow Falls", +"Dragon - The Bruce Lee Story", +"Dragon Quest 1 and 2 (ENG)", +"Dragon Quest 5 - Tenkuu no Hanayome (ENG)", +"Dragon Quest 6 - Maboroshi no Daichi (ENG)", +"Dragon View", +"Dragon's Lair", +"Dragon-Ball Z - Hyper Dimension (ENG)", +"Dragon-Ball Z - Super Butouden (ENG)", +"Dragon-Ball Z - Super Butouden 3 (ENG)", +"Dragon-Ball Z - Super Gokuden Totsugeki Hen (ENG)", +"Dragon-Ball Z - Super Saiyan Densetsu (ENG)", +"Dragon-Ball-Z - Super Gokuden 2 (ENG)", +"Drakkhen", +"Dream TV", +"Dual Orb 2 (ENG)", +"Dungeon Master", +"E.V.O. Search for Eden", +"Earthbound", +"Earthworm Jim", +"Earthworm Jim 2", +"Eek! The Cat", +"Elite Soccer", +"Emmitt Smith Football", +"Equinox", +"ESPN Baseball Tonight", +"ESPN National Hockey Night", +"ESPN Speedworld", +"ESPN Sunday Night NFL", +"Extra Innings", +"F-ZERO", +"F1 Pole Position", +"F1 ROC - Race of Champions", +"F1 ROC II - Race of Champions", +"Faceball 2000", +"Family Dog", +"Family Feud", +"Fatal Fury", +"Fatal Fury 2", +"Fatal Fury Special", +"Feda - the Emblem of Justice (ENG)", +"FIFA 97 - Gold Edition", +"FIFA International Soccer", +"FIFA Soccer 96", +"Fighter's History", +"Final Fantasy - Mystic Quest", +"Final Fantasy IV", +"Final Fantasy VI", +"Final Fight", +"Final Fight 2", +"Final Fight 3", +"Final Fight Guy", +"Fire Striker", +"Firepower 2000", +"First Samurai", +"Flashback - The Quest for Identity", +"Flintstones, The", +"Flintstones, The - The Treasure of Sierra Madrock", +"Football Fury", +"Foreman For Real", +"Frank Thomas' Big Hurt Baseball", +"Frantic Flea", +"Frogger", +"Front Mission - Gun Hazard (ENG)", +"Full Throttle Racing", +"Fun 'N Games", +"Gamars Puzzle (Unl)", +"Gemfire", +"Genghis Khan II - Clan of the Gray Wolf", +"George Foreman's KO Boxing", +"Ghoul Patrol", +"Gods", +"Goof Troop", +"GP-1", +"GP-1 Part II", +"Gradius III", +"Great Circus Mystery Starring Mickey & Minnie, The", +"Great Waldo Search, The", +"Gunforce - Battle Fire Engulfed Terror Island", +"Hagane", +"HAL's Hole in One Golf", +"Hammerlock Wrestling", +"Hardball III", +"Harley's Humongous Adventure", +"Harvest Moon", +"Head-On Soccer", +"Hit the Ice", +"Home Alone", +"Home Alone 2 - Lost in New York", +"Home Improvement", +"Hook", +"Hunt for Red October, The", +"Hurricanes, The", +"Hyper V-Ball", +"HyperZone", +"Ignition Factor, The", +"Illusion of Gaia", +"Imperium", +"Incantation", +"Incredible Crash Dummies, The", +"Incredible Hulk, The", +"Indiana Jones' Greatest Adventures", +"Inindo - Way of the Ninja", +"Inspector Gadget", +"International Superstar Soccer", +"International Superstar Soccer Deluxe", +"International Tennis Tour", +"Irem Skins Game, The", +"Itchy & Scratchy Game, The", +"Izzy's Quest for the Olympic Rings", +"Jack Nicklaus Golf", +"James Bond Jr", +"Jammit", +"Jeopardy!", +"Jeopardy! Deluxe Edition", +"Jeopardy! Sports Edition", +"Jetsons, The - Invasion of the Planet Pirates", +"Jim Lee's WildC.A.T.S", +"Jim Power - The Lost Dimension in 3D", +"Jimmy Connors Pro Tennis Tour", +"Jimmy Houston's Bass Tournament U.S.A.", +"Joe & Mac", +"Joe & Mac 2 - Lost in the Tropics", +"John Madden Football", +"John Madden Football '93", +"JRR Tolkien's The Lord of the Rings - Volume 1", +"Judge Dredd", +"Jungle Book, The", +"Jungle Strike", +"Jurassic Park", +"Jurassic Park Part 2 - The Chaos Continues", +"Justice League Task Force", +"Kablooey", +"Kawasaki Caribbean Challenge", +"Kawasaki Superbike Challenge", +"Ken Griffey Jr. Presents Major League Baseball", +"Ken Griffey Jr.'s Winning Run", +"Kendo Rage", +"Kid Klown in Crazy Chase", +"Killer Instinct", +"King Arthur & The Knights of Justice", +"King Arthur's World", +"King of Dragons, The", +"King of the Monsters", +"King of the Monsters 2", +"Kirby Super Star", +"Kirby's Avalanche", +"Kirby's Dream Course", +"Kirby's Dream Land 3", +"Knights of the Round", +"Krusty's Super Fun House", +"Kyle Petty's No Fear Racing", +"Lagoon", +"Lamborghini - American Challenge", +"Last Action Hero", +"Lawnmower Man, The", +"Legend", +"Legend of The Mystical Ninja, The", +"Lemmings", +"Lemmings 2 - The Tribes", +"Lester the Unlikely", +"Lethal Enforcers", +"Lethal Weapon", +"Liberty or Death", +"Lion King, The", +"listing.txt", +"Lock On", +"Looney Tunes B-Ball", +"Lost Vikings II, The", +"Lost Vikings, The", +"Lufia & The Fortress of Doom", +"Lufia II - Rise of the Sinistrals", +"M.A.C.S. Basic Rifle Simulator", +"Madden NFL '94", +"Madden NFL '95", +"Madden NFL '96", +"Madden NFL '97", +"Madden NFL '98", +"Magic Boy", +"Magic Johnson's Super Slam Dunk", +"Magic Sword", +"Magical Quest Starring Mickey Mouse, The", +"Mario is Missing!", +"Mario Paint", +"Mario's Early Years - Fun With Letters", +"Mario's Early Years - Fun With Numbers", +"Mario's Early Years - Preschool Fun", +"Mario's Time Machine", +"Mark Davis' The Fishing Master", +"Marvel Super Heroes - War of the Gems", +"Mary Shelley's Frankenstein", +"Mask, The", +"Math Blaster - Episode 1", +"Maui Mallard in Cold Shadow", +"Mecarobot Golf", +"Mechwarrior", +"Mechwarrior 3050", +"Mega Man VII", +"Mega Man X", +"Mega Man X 2", +"Mega Man X 3", +"Mega Man's Soccer", +"Metal Combat - Falcon's Revenge", +"Metal Marines", +"Metal Morph", +"Metal Warriors", +"Michael Andretti's Indy Car Challenge", +"Michael Jordan - Chaos in the Windy City", +"Mickey Mania", +"Mickey's Playtown Adventure - A Day of Discovery!", +"Mickey's Ultimate Challenge", +"Micro Machines", +"Might and Magic III - Isles of Terra", +"Mighty Max", +"Mighty Morphin Power Rangers", +"Mighty Morphin Power Rangers - The Fighting Edition", +"Mighty Morphin Power Rangers - The Movie", +"Miracle Piano Teaching System, The", +"MLBPA Baseball", +"MoHawk & Headphone Jack", +"Monopoly", +"Monstania (ENG)", +"Mortal Kombat", +"Mortal Kombat 3", +"Mortal Kombat II", +"Mountain Bike Rally", +"Mr. Do!", +"Mr. Nutz", +"Ms. Pac-Man", +"Musya", +"Mutant Chronicles - Doom Troopers", +"Natsume Championship Wrestling", +"NBA All-Star Challenge", +"NBA Give 'N Go", +"NBA Hang Time", +"NBA Jam", +"NBA Jam - Tournament Edition", +"NBA Live '95", +"NBA Live '96", +"NBA Live '97", +"NBA Live '98", +"NBA Showdown", +"NCAA Basketball", +"NCAA Final Four Basketball", +"NCAA Football", +"Network Q Rally", +"Newman-Hass Indy Car Featuring Nigel Mansell", +"NFL Football", +"NFL Quarterback Club", +"NFL Quarterback Club '96", +"NHL '94", +"NHL '95", +"NHL '96", +"NHL '97", +"NHL '98", +"NHL Stanley Cup", +"NHLPA Hockey '93", +"Nickelodeon GUTS", +"Nigel Mansell's World Championship Racing", +"Ninja Gaiden Trilogy", +"Ninja Warriors, The", +"No Escape", +"Nobunaga's Ambition", +"Nobunaga's Ambition - Lord of Darkness", +"Nolan Ryan's Baseball", +"Nosferatu", +"Obitus", +"Ogre Battle - The March of the Black Queen", +"Olympic Summer Games 96", +"On the Ball", +"Operation Europe - Path to Victory 1939-45", +"Operation Logic Bomb", +"Operation Thunderbolt", +"Oscar", +"Out of This World", +"Out to Lunch", +"Outlander", +"Pac-Attack", +"Pac-in-Time", +"Pac-Man 2 - The New Adventures", +"Pacific Theater of Operations", +"Pacific Theater of Operations II", +"Packy & Marlon", +"Pagemaster, The", +"Paladin's Quest", +"Paperboy 2", +"Peace Keepers, The", +"Pebble Beach Golf Links", +"PGA European Tour", +"PGA Tour 96", +"PGA Tour Golf", +"Phalanx - The Enforce Fighter A-144", +"Phantom 2040", +"Pieces", +"Pilotwings", +"Pinball Dreams", +"Pinball Fantasies", +"Pink Panther in Pink Goes to Hollywood", +"Pinocchio", +"Pirates of Dark Water, The", +"Pit Fighter", +"Pitfall - The Mayan Adventure", +"Plok!", +"Pocky & Rocky", +"Pocky & Rocky 2", +"Populous", +"Porky Pig's Haunted Holiday", +"Power Drive (U) (Beta) (M5)", +"Power Instinct", +"Power Moves", +"Power Piggs of the Dark Age", +"Power Rangers Zeo - Battle Racers", +"Prehistorik Man", +"Primal Rage", +"Prince of Persia", +"Prince of Persia 2 - The Shadow & The Flame", +"Pro Quarterback", +"Pro Sport Hockey", +"Push-Over", +"Q-bert 3", +"R-Type III - The Third Lightning", +"Race Drivin'", +"Radical Rex", +"Raiden Trad", +"Rampart", +"Ranma Nibunnoichi - Hard Battle", +"Rap Jam - Volume One", +"Realm", +"Redline F-1 Racer", +"Relief Pitcher", +"Ren & Stimpy Show, The - Buckeroos!", +"Ren & Stimpy Show, The - Fire Dogs", +"Ren & Stimpy Show, The - Time Warp", +"Ren & Stimpy Show, The - Veediots!", +"Revolution X", +"Rex Ronan - Experimental Surgeon", +"RHI Roller Hockey '95 (U) (NG-Dump Known)", +"Riddick Bowe Boxing", +"Rise of the Phoenix", +"Rival Turf", +"Road Riot 4WD", +"Road Runner's Death Valley Rally", +"Robocop 3", +"Robocop Versus The Terminator", +"Robotrek", +"Rock N' Roll Racing", +"Rocketeer, The", +"Rocko's Modern Life - Spunky's Dangerous Day", +"Rocky Rodent", +"Roger Clemens' MVP Baseball", +"Romance of the Three Kingdoms II", +"Romance of the Three Kingdoms III - Dragon of Destiny", +"Romance of the Three Kingdoms IV - Wall of Fire", +"RPM Racing", +"Run Saber", +"Sailor-Moon (ENG)", +"Sailor-Moon RPG - Another Story (ENG)", +"Samurai Shodown", +"Saturday Night Slam Masters", +"Scooby-Doo", +"SeaQuest DSV", +"Secret of Evermore", +"Secret of Mana", +"Secret of the Stars", +"Shadow, The", +"Shadowrun", +"Shanghai II - Dragon's Eye", +"Shaq Fu", +"Shien's Revenge", +"Side Pocket", +"Sim Ant", +"Sim City", +"Sim City 2000", +"Sim Earth - The Living Planet", +"Simpsons, The - Bart's Nightmare", +"Sink or Swim", +"Skuljagger - Revolt of the Westicans", +"Sky Blazer", +"Smart Ball", +"SNES Test Program", +"Snow White in Happily Ever After", +"Soldiers of Fortune", +"Sonic Blast Man", +"Sonic Blast Man II", +"Sonic the Hedgehog", +"SOS", +"Soul Blazer", +"Space Ace", +"Space Football - One on One", +"Space Invaders", +"Space Megaforce", +"Spanky's Quest", +"Sparkster", +"Spawn", +"Spectre", +"Speed Racer in My Most Dangerous Adventures", +"Speedy Gonzales - Los Gatos Bandidos", +"Spell Craft", +"Spider-Man", +"Spider-Man & Venom - Maximum Carnage", +"Spider-Man & Venom - Separation Anxiety", +"Spider-Man and the X-Men in Arcade's Revenge", +"Spindizzy Worlds", +"Sporting News Power Baseball, The", +"Sports Illustrated Championship Football & Baseball", +"Star Fox", +"Star Ocean (ENG)", +"Star Trek - Deep Space Nine - Crossroads of Time", +"Star Trek - Starfleet Academy Starship Bridge Simulator", +"Star Trek - The Next Generation - Future's Past", +"Stargate", +"Steel Talons", +"Sterling Sharpe - End 2 End", +"Stone Protectors", +"Street Combat", +"Street Fighter Alpha 2", +"Street Fighter II - The World Warrior", +"Street Fighter II Turbo - Hyper Fighting", +"Street Hockey '95", +"Street Racer", +"Strike Gunner", +"Stunt Race FX", +"Sunset Riders", +"Super Adventure Island", +"Super Adventure Island II", +"Super Alfred Chicken", +"Super Aquatic Games, The", +"Super Baseball Simulator 1.000", +"Super Bases Loaded", +"Super Bases Loaded 2", +"Super Bases Loaded 3 - License to Steal", +"Super Batter Up", +"Super Battleship", +"Super Battletank - War in the Gulf", +"Super Battletank 2", +"Super Black Bass", +"Super Bomberman", +"Super Bomberman 2", +"Super Bonk", +"Super Bowling", +"Super Buster Bros.", +"Super Caesars Palace", +"Super Castlevania IV", +"Super Chase H.Q.", +"Super Conflict - The Mideast", +"Super Double Dragon", +"Super Earth Defense Force", +"Super Game Boy", +"Super Ghouls 'N Ghosts", +"Super Goal!", +"Super Goal! 2", +"Super Godzilla", +"Super High Impact", +"Super James Pond", +"Super Mario All-Stars", +"Super Mario All-Stars + Super Mario World", +"Super Mario World 2 - Yoshi's Island", +"Super NES Super Scope 6", +"Super Ninja Boy", +"Super Noah's Ark 3D", +"Super Nova", +"Super Off Road", +"Super Off Road - The Baja", +"Super Pinball - Behind the Mask", +"Super Play Action Football", +"Super Punch-Out!!", +"Super Putty", +"Super R-Type", +"Super R.B.I. Baseball", +"Super Shadow of the Beast", +"Super Slapshot", +"Super Smash T.V.", +"Super Soccer", +"Super Soccer Champ", +"Super Solitaire", +"Super Star Force", +"Super Star Wars", +"Super Star Wars - Return of the Jedi", +"Super Star Wars - The Empire Strikes Back", +"Super Street Fighter II - The New Challengers", +"Super Strike Eagle", +"Super Tennis", +"Super Troll Islands", +"Super Turrican", +"Super Turrican 2", +"Super Valis IV", +"Super Widget", +"Suzuka 8 Hours", +"SWAT Kats - The Radical Squadron", +"Syndicate", +"T2 - The Arcade Game", +"Tales of Phantasia (ENG)", +"Taz-Mania", +"Tecmo Super Baseball", +"Tecmo Super Bowl", +"Tecmo Super Bowl II - Special Edition", +"Tecmo Super Bowl III - Final Edition", +"Tecmo Super NBA Basketball", +"Teenage Mutant Ninja Turtles - Tournament Fighters", +"Teenage Mutant Ninja Turtles IV - Turtles in Time", +"Terminator 2 - Judgment Day", +"Terminator, The", +"Test Drive II - The Duel", +"Tetris & Dr. Mario", +"Tetris 2", +"Tetris Attack", +"Thomas the Tank Engine and Friends", +"Thunder Spirits", +"Tick, The", +"Time Trax", +"Timecop", +"TimeSlip", +"Timon & Pumbaa's Jungle Games", +"Tin Star", +"Tiny Toon Adventures - Buster Busts Loose!", +"Tiny Toon Adventures - Wacky Sports Challenge", +"TKO Super Championship Boxing", +"TNN Bass Tournament of Champions", +"Tom & Jerry", +"Tony Meola's Sidekicks Soccer", +"Top Gear", +"Top Gear 2", +"Top Gear 3000", +"Total Carnage", +"Toy Story", +"Toys", +"Troddlers", +"Troy Aikman NFL Football", +"True Lies", +"Tuff E Nuff", +"Turn and Burn - No-Fly Zone", +"Twisted Tales of Spike McFang, The", +"U.N. Squadron", +"Ultima - Runes of Virtue II", +"Ultima VI - The False Prophet", +"Ultima VII - The Black Gate", +"Ultimate Fighter", +"Ultimate Mortal Kombat 3", +"Ultraman - Towards the Future", +"Uncharted Waters", +"Uncharted Waters - New Horizons", +"Uniracers", +"Universal Soldier", +"Untouchables, The", +"Urban Strike", +"Utopia - The Creation of a Nation", +"Vegas Stakes", +"Virtual Bart", +"Virtual Soccer", +"Vortex", +"Waialae Country Club", +"War 2410", +"War 3010 - The Revolution", +"Wario's Woods", +"Warlock", +"WarpSpeed", +"Wayne Gretzky and the NHLPA All-Stars", +"Wayne's World", +"WCW Super Brawl Wrestling", +"We're Back! - A Dinosaur's Story", +"Weapon Lord", +"Wheel of Fortune", +"Wheel of Fortune - Deluxe Edition", +"Where in the World is Carmen Sandiego", +"Where in Time is Carmen Sandiego", +"Whizz", +"Wicked 18 Golf", +"Wild Guns", +"WildSnake", +"Wing Commander", +"Wing Commander - The Secret Missions", +"Wings 2 - Aces High", +"Winter Extreme Skiing and Snowboarding", +"Winter Olympic Games - Lillehammer '94", +"Wizard of Oz, The", +"Wizardry V - Heart of the Maelstrom", +"Wolf Child", +"Wolfenstein 3D", +"Wolverine - Adamantium Rage", +"Wordtris", +"World Cup USA 94", +"World Heroes", +"World Heroes 2", +"World League Basketball", +"World League Soccer", +"World Soccer 94 - Road to Glory", +"WWF Raw", +"WWF Royal Rumble", +"WWF Super WrestleMania", +"WWF WrestleMania - The Arcade Game", +"X Zone", +"X-Kaliber 2097", +"X-Men - Mutant Apocalypse", +"Xardion", +"Yogi Bear", +"Yoshi's Cookie", +"Yoshi's Safari", +"Young Merlin", +"Ys 4 - Mask of the Sun (ENG)", +"Ys III - Wanderers from Ys", +"Zero the Kamikaze Squirrel", +"Zombies Ate My Neighbors", +"Zool", +"Zoop"] \ No newline at end of file diff --git a/config.json b/config.json index 0564a5e..d128c70 100755 --- a/config.json +++ b/config.json @@ -50,6 +50,10 @@ ], "defaultPlaylist": "room-grind" }, + "initialQueueSize": 10, + "videoSceneName": "fgfm", + "videoPollSize": 5, + "currentActivitySceneItemName": "now-showing-txt", "vods": [ { "id": "ottas-seg-escape", @@ -61,7 +65,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 352 }, { "id": "ottas-seg-eastern", @@ -73,7 +79,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 277 }, { "id": "ottas-seg-desert", @@ -85,7 +93,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 345 }, { "id": "ottas-seg-hera", @@ -97,7 +107,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 299 }, { "id": "ottas-seg-atower", @@ -109,7 +121,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 352 }, { "id": "ottas-seg-pod", @@ -121,7 +135,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 309 }, { "id": "ottas-seg-thieves", @@ -133,7 +149,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 377 }, { "id": "ottas-seg-skull", @@ -145,7 +163,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 267 }, { "id": "ottas-seg-ice", @@ -157,7 +177,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 318 }, { "id": "ottas-seg-swamp", @@ -169,7 +191,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 345 }, { "id": "ottas-seg-mire", @@ -181,7 +205,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 365 }, { "id": "ottas-seg-trock", @@ -193,7 +219,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 361 }, { "id": "ottas-seg-gtower", @@ -205,7 +233,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 396 }, { "id": "ttas-seg-ganon", @@ -217,7 +247,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 108 }, { "id": "sttas-seg-escape", @@ -229,7 +261,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 354 }, { "id": "sttas-seg-eastern", @@ -241,7 +275,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 281 }, { "id": "sttas-seg-desert", @@ -253,7 +289,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 347 }, { "id": "sttas-seg-hera", @@ -265,7 +303,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 303 }, { "id": "sttas-seg-atower", @@ -277,7 +317,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 354 }, { "id": "sttas-seg-pod", @@ -289,7 +331,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 310 }, { "id": "sttas-seg-thieves", @@ -301,7 +345,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 379 }, { "id": "sttas-seg-skull", @@ -313,7 +359,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 270 }, { "id": "sttas-seg-ice", @@ -325,7 +373,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 321 }, { "id": "sttas-seg-swamp", @@ -337,7 +387,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 351 }, { "id": "sttas-seg-mire", @@ -349,7 +401,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 370 }, { "id": "sttas-seg-trock", @@ -361,7 +415,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 364 }, { "id": "sttas-seg-gtower", @@ -373,7 +429,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 408 }, { "id": "nmg-gold-escape", @@ -385,7 +443,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 358 }, { "id": "nmg-gold-eastern", @@ -397,7 +457,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 302 }, { "id": "nmg-gold-desert", @@ -409,7 +471,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 374 }, { "id": "nmg-gold-hera", @@ -421,7 +485,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 332 }, { "id": "nmg-gold-atower", @@ -433,7 +499,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 315 }, { "id": "nmg-gold-pod", @@ -445,7 +513,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 376 }, { "id": "nmg-gold-thieves", @@ -457,7 +527,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 432 }, { "id": "nmg-gold-skull", @@ -469,7 +541,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 328 }, { "id": "nmg-gold-ice", @@ -481,7 +555,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 382 }, { "id": "nmg-gold-swamp", @@ -493,7 +569,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 418 }, { "id": "nmg-gold-mire", @@ -505,7 +583,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 432 }, { "id": "nmg-gold-trock", @@ -517,7 +597,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 434 }, { "id": "nmg-gold-gtower", @@ -529,7 +611,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 433 }, { "id": "nmg-gold-ganon", @@ -541,7 +625,9 @@ "crop.left": 0, "position.x": 320, "scale.x": 960 - } + }, + "sceneItem": "4x3ph", + "length": 117 }, { "id": "pb-100-ahp", @@ -553,7 +639,9 @@ "crop.left": 320, "position.x": 320, "scale.x": 1280 - } + }, + "sceneItem": "16x9ph", + "length": 5322 }, { "id": "pb-ab", @@ -565,7 +653,9 @@ "crop.left": 320, "position.x": 320, "scale.x": 1280 - } + }, + "sceneItem": "16x9ph", + "length": 4730 }, { "id": "pb-ad", @@ -577,7 +667,9 @@ "crop.left": 320, "position.x": 320, "scale.x": 1280 - } + }, + "sceneItem": "16x9ph", + "length": 5084 }, { "id": "pb-any-nmg", @@ -589,7 +681,9 @@ "crop.left": 320, "position.x": 320, "scale.x": 1280 - } + }, + "sceneItem": "16x9ph", + "length": 5715 }, { "id": "pb-any-no-eg", @@ -601,7 +695,9 @@ "crop.left": 320, "position.x": 320, "scale.x": 1280 - } + }, + "sceneItem": "16x9ph", + "length": 2352 }, { "id": "pb-master-sword", @@ -613,7 +709,9 @@ "crop.left": 320, "position.x": 320, "scale.x": 1280 - } + }, + "sceneItem": "16x9ph", + "length": 1349 }, { "id": "pb-ms", @@ -625,7 +723,9 @@ "crop.left": 320, "position.x": 320, "scale.x": 1280 - } + }, + "sceneItem": "16x9ph", + "length": 3068 }, { "id": "pb-ms-no-eg", @@ -637,7 +737,9 @@ "crop.left": 320, "position.x": 320, "scale.x": 1280 - } + }, + "sceneItem": "16x9ph", + "length": 738 }, { "id": "pb-rbo", @@ -649,7 +751,9 @@ "crop.left": 320, "position.x": 320, "scale.x": 1280 - } + }, + "sceneItem": "16x9ph", + "length": 5250 } ], "vodsToCrop": [ diff --git a/twitch.js b/twitch.js index 853ffc3..3c4c3ad 100755 --- a/twitch.js +++ b/twitch.js @@ -258,93 +258,53 @@ const twitchInit = (config, obs) => { const streamInit = (config, obs, twitch) => { return new Promise((resolve, reject) => { console.log(`Setting up initial video queue...`); - // @TODO: Choose X random vods to start - // Shuffle the vods and pick the first X - let videoQueue = config.vods.sort( function() { return 0.5 - Math.random() } ).slice(0, 5); - console.log(`Initial queue: ${videoQueue.map((c, i) => `[${i+1}] ${c.chatName}`).join(' | ')}`); - - // @TODO: Load the first vod into the source, show it, listen to event of it being done, load the next, etc. - // @TODO: Switch to fg.fm scene unless it's already active - // @TODO: change the item properties (file path, transformation) then show it - let defaultSceneItemProperties = { - "position.x": 0, - "position.y": 0, - "position.alignment": 0, - "rotation": 0.0, - "crop.top": 0, - "crop.bottom": 0, - "crop.left": 0, - "crop.right": 0, - "scale.x": 1280, - "scale.y": 720 - }; + let videoQueue = config.vods.sort( function() { return 0.5 - Math.random() } ).slice(0, config.initialQueueSize); + console.log(`Initial queue: ${videoQueue.map((c, i) => `[${i+1}] ${c.chatName}`).join(' | ')}`); let currentVideo = videoQueue.shift(); + let videoTimer; - console.log(`First video up: ${currentVideo.chatName}`); - console.log(Object.assign({"item": "placeholder", "visible": true}, defaultSceneItemProperties, currentVideo.sceneItemProperties)); + const showVideo = video => { + // set the file path + obs.setSourceSettings({"sourceName": video.sceneItem, "sourceSettings": {"local_file": video.filePath}}) + .then(data => { + // show the video + return obs.setSceneItemProperties({"item": video.sceneItem, "scene-name": config.videoSceneName, "visible": true}); + }) + .then(data => { + // update activity label and show/hide appropriately + if (video.label !== false) { + return obs.setTextGDIPlusProperties({"source": config.currentActivitySceneItemName, "scene-name": config.videoSceneName, "render": true, "text": video.label}); + } else { + return obs.setSceneItemProperties({"item": config.currentActivitySceneItemName, "scene-name": config.videoSceneName, "visible": false}); + } + }) + .then(data => { + // Set a timeout for hiding this at the end of the video and play the next video + videoTimer = setTimeout(() => { + obs.setSceneItemProperties({"item": video.sceneItem, "scene-name": config.videoSceneName, "visible": false}) + .then(data => { + currentVideo = videoQueue.shift(); + showVideo(currentVideo); + }); + }, video.length*1000) + }) + .catch(console.error); + }; - - obs.setSourceSettings({"sourceName": "placeholder", "sourceSettings": {"local_file": currentVideo.filePath}}) - .then(data => { - let props = Object.assign({"item": "placeholder", "visible": true}, defaultSceneItemProperties, currentVideo.sceneItemProperties); - console.log(props); - obs.setSceneItemProperties(props) - .then(res => { - // Update activity label - setTimeout(() => { - if (currentVideo.label !== false) { - twitch.editorChat.say(twitchChannel, `!setactivity ${currentVideo.label}`); - twitch.editorChat.say(twitchChannel, `$show current-activity`); - } else { - twitch.editorChat.say(twitchChannel, `$hide current-activity`); - } - }, 5000); - }) - }) - .catch(console.error); - - obs.onSceneItemVisibilityChanged(data => { - if (data['item-name'] === 'placeholder' && data['item-visible'] === false) { - currentVideo = videoQueue.shift(); - obs.setSourceSettings({"sourceName": "placeholder", "sourceSettings": {"local_file": currentVideo.filePath}}) - .then(data => { - let props = Object.assign({"item": "placeholder", "visible": true}, defaultSceneItemProperties, currentVideo.sceneItemProperties); - console.log(props); - obs.setSceneItemProperties(props); - // Update activity label - if (currentVideo.label !== false) { - twitch.editorChat.say(twitchChannel, `!setactivity ${currentVideo.label}`); - twitch.editorChat.say(twitchChannel, `$show current-activity`); - } else { - twitch.editorChat.say(twitchChannel, `$hide current-activity`); - } - }) - .catch(console.error); - } - }); + console.log(`Showing first video: ${currentVideo.chatName}`); + showVideo(currentVideo); console.log(`Initializing stream timers...`); - // When: Every 4 hours at 55 past - // @TODO: change to a random interval of time! - // What: AUW - let auwJob = schedule.scheduleJob("55 */4 * * *", () => { - // AUW - //twitch.editorChat.say(twitchChannel, `${config.twitch.cmdPrefix}auw`); - }); - //console.log(`AUW is scheduled to be shown at ${auwJob.nextInvocation()}`); - let userVotes = currentChoices = []; let rockTheVote = () => {}; - let rtvInterval = false; + let rtvInterval = setInterval(() => {rockTheVote()}, 300000); let videoVoteJob = schedule.scheduleJob("*/15 * * * *", () => { // Tally votes from previous election (if there was one), add the winner to the queue let winner; - if (currentChoices.length > 0) - { - if (userVotes.length === 0) - { + if (currentChoices.length > 0) { + if (userVotes.length === 0) { // choose a random element from currentChoices winner = util.randElement(currentChoices); console.log(`VIDEO CHOSEN RANDOMLY: ${winner.chatName}`); @@ -386,27 +346,23 @@ const streamInit = (config, obs, twitch) => { // choose more random videos from config.vods (that aren't already in the queue) let vodsNotInQueue = config.vods.filter(e => { let inQueue = videoQueue.findIndex(q => q.id === e.id) !== -1; - console.log(`search results for ${e.id} in queue:`, inQueue); return !inQueue; }); - currentChoices = vodsNotInQueue.sort( function() { return 0.5 - Math.random() } ).slice(0, 5); + currentChoices = vodsNotInQueue.sort( function() { return 0.5 - Math.random() } ).slice(0, config.videoPollSize); - // post choices to chat + set reminders to post every 5 minutes + // Poll the chat let chatChoices = currentChoices.map((c, i) => { return `[${i+1}] ${c.chatName}`; }); rockTheVote = () => { - console.log(`Vote for which video you'd like to add to the queue using ${config.twitch.cmdPrefix}vote #: ${chatChoices.join(' | ')}`); twitch.botChat.say(twitchChannel, `Vote for which video you'd like to add to the queue using ${config.twitch.cmdPrefix}vote #: ${chatChoices.join(' | ')}`) }; - //rockTheVote(); + clearInterval(rtvInterval); + rockTheVote(); + rtvInterval = setInterval(() => {rockTheVote()}, 300000); }); - if (!rtvInterval) { - rtvInterval = setInterval(rockTheVote, 300000); - } - // Track user votes for video queue twitch.botChat.addListener('message', (from, to, message) => { // Ignore everything from blacklisted users @@ -416,6 +372,18 @@ const streamInit = (config, obs, twitch) => { if (message.startsWith(config.twitch.cmdPrefix)) { let commandParts = message.slice(config.twitch.cmdPrefix.length).split(' '); let commandNoPrefix = commandParts[0] || ''; + + if (config.twitch.admins.includes(from) || from === config.twitch.username.toLowerCase()) { + if (commandNoPrefix === 'skip') { + clearTimeout(videoTimer); + obs.setSceneItemProperties({"item": currentVideo.sceneItem, "scene-name": config.videoSceneName, "visible": false}) + .then(res => { + currentVideo = videoQueue.shift(); + showVideo(currentVideo); + }); + } + } + if (commandNoPrefix === 'vote') { let userVote = commandParts[1] || false; @@ -445,10 +413,14 @@ const streamInit = (config, obs, twitch) => { twitch.botChat.say(to, `@${from}, your vote has been logged!`); } } else if (commandNoPrefix === 'queue') { - let chatQueue = videoQueue.map((c, i) => { - return `[${i+1}] ${c.chatName}`; - }); - twitch.botChat.say(to, chatQueue.join(' | ')); + if (videoQueue.length > 0) { + let chatQueue = videoQueue.map((c, i) => { + return `[${i+1}] ${c.chatName}`; + }); + twitch.botChat.say(to, chatQueue.join(' | ')); + } else { + twitch.botChat.say(to, `No videos currently in queue!`); + } } else if (commandNoPrefix === 'current') { twitch.botChat.say(to, `Now Playing: ${currentVideo.chatName}`); }