Version 5.6 with improved overlay handling. The emulator should find the matching overlay for the game you are playing automatically.

This commit is contained in:
Dave Bernazzani 2024-10-06 08:42:52 -04:00
parent a39ae68294
commit 911388a476
7 changed files with 209 additions and 136 deletions

View File

@ -14,7 +14,7 @@ include $(DEVKITARM)/ds_rules
export TARGET := NINTV-DS
export TOPDIR := $(CURDIR)
export VERSION := 5.5b
export VERSION := 5.6
ICON := -b $(CURDIR)/logo.bmp "NINTV-DS $(VERSION);wavemotion-dave;https://github.com/wavemotion-dave/NINTV-DS"

Binary file not shown.

View File

@ -93,7 +93,11 @@ Because the Intellivision had an innovative controller/keypad arrangement, you m
Overlays :
-----------------------
Nintellivision contains a default standard overlay that mimics a real Intellivision controller along with some common menu items. Each game can also have a custom overlay which is user-defined. A large number of custom overlays are provided in **extras.zip** in the overlay-library folder here on the github site. You must name the .ovl file the same as the base filename of the ROM you are loading (e.g. if you have Astrosmash.int or Astrosmash.rom, you must name the overlay Astrosmash.ovl) - loading such a game would bring up the custom overlay automatically. If the custom overlay doesn't show, double check that the base filenames are exactly the same. By default, overlay files (.ovl) go into the same directory as the game ROMs but you can override this in Global Configuration.
Nintellivision contains a default standard overlay that mimics a real Intellivision controller along with some common menu items. Each game can also have a custom overlay which is user-defined.
A large number of custom overlays are provided in **extras.zip** in the overlay-library folder here on the github site. Nintellivision should automatically match up the game you are playing
with the correct overlay. If that doesn't happen, you can also name the .ovl file the same as the base filename of the ROM you are loading (e.g. if you have Astrosmash.int or Astrosmash.rom,
you would name the overlay Astrosmash.ovl) - loading such a game would bring up the custom overlay automatically. If the custom overlay doesn't show, double check that the base filenames are
exactly the same. By default, overlay files (.ovl) go into the same directory as the game ROMs but you can override this in Global Configuration.
![Standard Overlay](png/normalovl.png) ![Custom Overlay](png/customovl.png) ![Custom Overlay](png/customovl2.png)
@ -164,6 +168,11 @@ Credits :
--------------------------------------------------------------------------------
History :
--------------------------------------------------------------------------------
V5.6 : 06-Oct-2024 by wavemotion-dave
* Massive overhaul to the way overlays are found and loaded. No longer do you need to have the overlays named the same as the game ROM file - the emulator should find the matching overlay 99% of the time (and yes, you can still force the issue by naming the .ovl the same as the base game .int/.bin/.rom file)
* If the system BIOS files are not found by name, a quick search is done by CRC32 to see if the emulator can load it.
* These improvements should go a long way to helping people get their Nintellivision system running quickly and with less fuss.
V5.5 : 23-Sep-2024 by wavemotion-dave
* Improved ECS support with new full-screen ECS Keyboard and ability to switch between keypad controllers, disc and full keyboard.
* Version 5.5a with hotfix for custom overlays

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

@ -58,12 +58,14 @@ UINT8 bMetaSpeedup __attribute__((section(".dtcm"))) = false;
UINT8 bShowDisc __attribute__((section(".dtcm"))) = false;
UINT8 bShowKeyboard __attribute__((section(".dtcm"))) = false;
UINT8 hud_x = 3;
UINT8 hud_y = 0;
UINT16 keypad_pressed = 0;
UINT16 ecs_debounce_timer = 0;
// --------------------------------------------------
// A few variables that are not accessed frequently
// and don't need to be in fast memory...
// --------------------------------------------------
UINT8 hud_x = 3;
UINT8 hud_y = 0;
UINT16 keypad_pressed = 0;
UINT16 ecs_debounce_timer = 0;
// -------------------------------------------------------------
// This one is accessed rather often so we'll put it in .dtcm
@ -112,7 +114,11 @@ void reset_emu_frames(void)
emu_frames=0;
}
// --------------------------------------------------------------------------
// For when we are missing some key file like a BIOS file (exec, grom, etc)
// and the emulator can go no further... user will have to power off (and
// probably will contact me ... sigh!)
// --------------------------------------------------------------------------
void FatalError(const char *msg)
{
dsPrintValue(0,1,0,(char*)msg);
@ -154,6 +160,9 @@ void dsPrintValue(int x, int y, unsigned int isSelect, char *pchStr)
}
}
// ---------------------------------------------------------------------------------
// An optimized version for when we are printing a number/FPS in the upper corner...
// ---------------------------------------------------------------------------------
void dsPrintFPS(char *pchStr)
{
u16 *pusEcran,*pusMap;
@ -196,7 +205,7 @@ BOOL InitializeEmulator(void)
return FALSE;
}
//load peripheral roms
//load peripheral roms beyond the main BIOS files
INT32 count = currentEmu->GetPeripheralCount();
for (INT32 i = 0; i < count; i++)
{

View File

@ -17,6 +17,8 @@
#include <fat.h>
#include <dirent.h>
#include <unistd.h>
#include <string.h>
#include <ctype.h>
#include "nintv-ds.h"
#include "overlay.h"
@ -173,138 +175,169 @@ char filename[192];
struct MapRomToOvl_t
{
UINT32 crc;
const char *search1;
const char *search2;
const char *ovl_filename;
};
struct MapRomToOvl_t MapRomToOvl[] =
{
{0xA6E89A53 , "A Tale of Dragons and Swords.ovl"},
{0xA60E25FC , "ABPA Backgammon.ovl"},
{0xF8B1F2B7 , "AD&D Cloudy Mountain.ovl"},
{0x11C3BCFA , "AD&D Cloudy Mountain.ovl"},
{0x16C3B62F , "AD&D Treasure of Tarmin.ovl"},
{0x6746607B , "AD&D Treasure of Tarmin.ovl"},
{0x5A4CE519 , "AD&D Treasure of Tarmin.ovl"},
{0xBD731E3C , "AD&D Treasure of Tarmin.ovl"},
{0x2F9C93FC , "AD&D Treasure of Tarmin.ovl"},
{0x9BA5A798 , "Antarctic Tales.ovl"},
{0x5578C764 , "Astro Invaders.ovl"},
{0x00BE8BBA , "Astrosmash.ovl"},
{0xFAB2992C , "Astrosmash.ovl"},
{0x13FF363C , "Atlantis.ovl"},
{0xB35C1101 , "Auto Racing.ovl"},
{0x8AD19AB3 , "B-17 Bomber.ovl"},
{0xFC49B63E , "Bank Panic.ovl"},
{0x8B2727D9 , "BeachHead.ovl"},
{0xEAF650CC , "Beamrider.ovl"},
{0xC047D487 , "Beauty and the Beast.ovl"},
{0x32697B72 , "Bomb Squad.ovl"},
{0xF8E5398D , "Buck Rogers.ovl"},
{0x999CCEED , "Bump 'n' Jump.ovl"},
{0x43806375 , "Burger Time.ovl"},
{0xC92BAAE8 , "Burger Time.ovl"},
{0xFA492BBD , "Buzz Bombers.ovl"},
{0xFA492BBD , "Buzz Bombers.ovl"},
{0x2A1E0C1C , "Championship Tennis.ovl"},
{0x36E1D858 , "Checkers.ovl"},
{0x0BF464C6 , "Chip Shot - Super Pro Golf.ovl"},
{0x3289C8BA , "Commando.ovl"},
{0x060E2D82 , "D1K.ovl"},
{0x5E6A8CD8 , "Demon Attack.ovl"},
{0x13EE56F1 , "Diner.ovl"},
{0x84BEDCC1 , "Dracula.ovl"},
{0xC5182457 , "Dragon Quest.ovl"},
{0xAF8718A1 , "Dragonfire.ovl"},
{0x3B99B889 , "Dreadnaught Factor.ovl"},
{0x99f5783d , "Dreadnaught Factor.ovl"},
{0xB1BFA8B8 , "FinalRound.ovl"},
{0x3A8A4351 , "Fox Quest.ovl"},
{0x912E7C64 , "Frankenstien.ovl"},
{0xAC764495 , "GosubDigital.ovl"},
{0x4B8C5932 , "Happy Trails.ovl"},
{0x120b53a9 , "Happy Trails.ovl"},
{0xB5C7F25D , "Horse Racing.ovl"},
{0x94EA650B , "Hover Bovver.ovl"},
{0xFF83FF80 , "Hover Force.ovl"},
{0x4F3E3F69 , "Ice Trek.ovl"},
{0x5F2607E1 , "Infiltrator.ovl"},
{0xEE5F1BE2 , "Jetsons.ovl"},
{0x4422868E , "King of the Mountain.ovl"},
{0x87D95C72 , "King of the Mountain.ovl"},
{0x8C9819A2 , "Kool-Aid Man.ovl"},
{0x604611C0 , "Las Vegas Poker & Blackjack.ovl"},
{0xE00D1399 , "Lock-n-Chase.ovl"},
{0x5C7E9848 , "Lock-n-Chase.ovl"},
{0x6B6E80EE , "Loco-Motion.ovl"},
{0x80764301 , "Lode Runner.ovl"},
{0x573B9B6D , "Masters of the Universe - The Power of He-Man.ovl"},
{0xEB4383E0 , "Maxit.ovl"},
{0xE806AD91 , "Microsurgeon.ovl"},
{0x9D57498F , "Mind Strike.ovl"},
{0x598662F2 , "Mouse Trap.ovl"},
{0xE367E450 , "MrChess.ovl"},
{0x0753544F , "Ms Pac-Man.ovl"},
{0x7334CD44 , "Night Stalker.ovl"},
{0x36A7711B , "Operation Cloudfire.ovl"},
{0x169E3584 , "PBA Bowling.ovl"},
{0xFF87FAEC , "PGA Golf.ovl"},
{0xA21C31C3 , "Pac-Man.ovl"},
{0x6E4E8EB4 , "Pac-Man.ovl"},
{0x6084B48A , "Parsec.ovl"},
{0x1A7AAC88 , "Penguin Land.ovl"},
{0x9C75EFCC , "Pitfall!.ovl"},
{0x0CF06519 , "Poker Risque.ovl"},
{0x5AEF02C6 , "Rick Dynamite.ovl"},
{0x8910C37A , "River Raid.ovl"},
{0x95466AD3 , "River Raid.ovl"},
{0xDCF4B15D , "Royal Dealer.ovl"},
{0x8F959A6E , "SNAFU.ovl"},
{0x47AA7977 , "Safecracker.ovl"},
{0x6E0882E7 , "SameGame and Robots.ovl"},
{0x12BA58D1 , "SameGame and Robots.ovl"},
{0x20eb8b7c , "SameGame and Robots.ovl"},
{0xe9e3f60d , "Scooby Doo's Maze Chase.ovl"},
{0xBEF0B0C7 , "Scooby Doo's Maze Chase.ovl"},
{0x99AE29A9 , "Sea Battle.ovl"},
{0x2A4C761D , "Shark! Shark!.ovl"},
{0xd7b8208b , "Shark! Shark!.ovl"},
{0xFF7CB79E , "Sharp Shot.ovl"},
{0xF093E801 , "Skiing.ovl"},
{0x800B572F , "Slam Dunk - Super Pro Basketball.ovl"},
{0xE8B8EBA5 , "Space Armada.ovl"},
{0x1AAC64CA , "Space Bandits.ovl"},
{0xF95504E0 , "Space Battle.ovl"},
{0x39D3B895 , "Space Hawk.ovl"},
{0xCF39471A , "Space Panic.ovl"},
{0x3784DC52 , "Space Spartans.ovl"},
{0xB745C1CA , "Stadium Mud Buggies.ovl"},
{0x2DEACD15 , "Stampede.ovl"},
{0x72E11FCA , "Star Strike.ovl"},
{0x3D9949EA , "Sub Hunt.ovl"},
{0xbe4d7996 , "Super NFL Football (ECS).ovl"},
{0x15E88FCE , "Swords & Serpents.ovl"},
{0xD6F44FA5 , "TNT Cowboy.ovl"},
{0xCA447BBD , "TRON Deadly Discs.ovl"},
{0x07FB9435 , "TRON Solar Sailor.ovl"},
{0x03E9E62E , "Tennis.ovl"},
{0xB7923858 , "The Show Must Go On.ovl"},
{0xC1F1CA74 , "Thunder Castle.ovl"},
{0x67CA7C0A , "Thunder Castle.ovl"},
{0xD1D352A0 , "Tower of Doom.ovl"},
{0x734F3260 , "Truckin.ovl"},
{0x752FD927 , "USCF Chess.ovl"},
{0xF9E0789E , "Utopia.ovl"},
{0xC9624608 , "Vanguard.ovl"},
{0xA4A20354 , "Vectron.ovl"},
{0xF1ED7D27 , "White Water.ovl"},
{0x10D64E48 , "World Championship Baseball.ovl"},
{0xC2063C08 , "World Series Major League Baseball.ovl"},
{0x24B667B9 , "Worm Whomper.ovl"},
{0x740C9C49 , "X-Rally.ovl"},
{0x45119649 , "Yars Revenge.ovl"},
{0xC00CBA0D , "gorf.ovl"},
{0x00000000 , "generic.ovl"},
{0xA6E89A53 , "DRAGONS", "SWORDS", "A Tale of Dragons and Swords.ovl"},
{0xA60E25FC , "BACKGAMMON", "BACKGAMMON", "ABPA Backgammon.ovl"},
{0xFFFFFFFF , "GAMMON", "GAMMON", "ABPA Backgammon.ovl"},
{0xF8B1F2B7 , "CLOUDY", "MOUNTAIN", "AD&D Cloudy Mountain.ovl"},
{0x11C3BCFA , "CLOUDY", "MOUNTAIN", "AD&D Cloudy Mountain.ovl"},
{0x16C3B62F , "TREASURE", "TARMIN", "AD&D Treasure of Tarmin.ovl"},
{0x6746607B , "TREASURE", "TARMIN", "AD&D Treasure of Tarmin.ovl"},
{0x5A4CE519 , "TREASURE", "TARMIN", "AD&D Treasure of Tarmin.ovl"},
{0xBD731E3C , "TREASURE", "TARMIN", "AD&D Treasure of Tarmin.ovl"},
{0x2F9C93FC , "TREASURE", "TARMIN", "AD&D Treasure of Tarmin.ovl"},
{0x2F9C93FC , "MINOTAUR", "MINOTAUR", "AD&D Treasure of Tarmin.ovl"},
{0x9BA5A798 , "ANTARCTIC", "TALES", "Antarctic Tales.ovl"},
{0xc4f83541 , "ANTHROPOMOR","FORCE", "Anthropomorphic Force.ovl"},
{0x6F91FBC1 , "ARMOR", "BATTLE", "Armor Battle.ovl"},
{0x5578C764 , "ASTRO", "INVADERS", "Astro Invaders.ovl"},
{0x00BE8BBA , "ASTROSMASH", "ASTROSMASH", "Astrosmash.ovl"},
{0xFAB2992C , "ASTROSMASH", "ASTROSMASH", "Astrosmash.ovl"},
{0x13FF363C , "ATLANTIS", "ATLANTIS", "Atlantis.ovl"},
{0xB35C1101 , "AUTO", "RACING", "Auto Racing.ovl"},
{0x8AD19AB3 , "B-17", "BOMBER", "B-17 Bomber.ovl"},
{0xFC49B63E , "BANK", "PANIC", "Bank Panic.ovl"},
{0x8B2727D9 , "BEACHHEAD", "BEACHHEAD", "BeachHead.ovl"},
{0xEAF650CC , "BEAMRIDER", "BEAMRIDER", "Beamrider.ovl"},
{0xC047D487 , "BEAUTY", "BEAST", "Beauty and the Beast.ovl"},
{0xFFFFFFFF , "BEAST", "SP", "BeautyBeast - SP.ovl"},
{0x32697B72 , "BOMB", "SQUAD", "Bomb Squad.ovl"},
{0xF8E5398D , "BUCK", "ROGERS", "Buck Rogers.ovl"},
{0x999CCEED , "BUMP", "JUMP", "Bump 'n' Jump.ovl"},
{0x43806375 , "BURGER", "TIME", "Burger Time.ovl"},
{0xC92BAAE8 , "BURGER", "TIME", "Burger Time.ovl"},
{0xFFFFFFFF , "BURGRTM", "BURGRTM", "Burger Time.ovl"},
{0xFA492BBD , "BUZZ", "BOMBERS", "Buzz Bombers.ovl"},
{0xFA492BBD , "BUZZ", "BOMBERS", "Buzz Bombers.ovl"},
{0x2A1E0C1C , "CHAMPIONSHIP","TENNIS", "Championship Tennis.ovl"},
{0x2fec6076 , "CAVERNS", "MARS", "Caverns of Mars.ovl"},
{0x36E1D858 , "CHECKERS", "CHECKERS", "Checkers.ovl"},
{0x0BF464C6 , "CHIP", "SHOT", "Chip Shot - Super Pro Golf.ovl"},
{0x3289C8BA , "COMMANDO", "COMMANDO", "Commando.ovl"},
{0xe8b99963 , "COPTER", "COMMAND", "Copter Command.ovl"},
{0x060E2D82 , "D1K", "D1K", "D1K.ovl"},
{0xFFFFFFFF , "D2K", "D2K", "D1K.ovl"},
{0xFFFFFFFF , "DK", "Jr", "DKJr.ovl"},
{0xFFFFFFFF , "Kong", "Jr", "DKJr.ovl"},
{0x5E6A8CD8 , "DEMON", "ATTACK", "Demon Attack.ovl"},
{0x13EE56F1 , "DINER", "DINER", "Diner.ovl"},
{0x84BEDCC1 , "DRACULA", "DRACULA", "Dracula.ovl"},
{0xC5182457 , "DRAGON", "QUEST", "Dragon Quest.ovl"},
{0xAF8718A1 , "DRAGONFIRE", "DRAGONFIRE", "Dragonfire.ovl"},
{0x3B99B889 , "DREADNAUGHT","FACTOR", "Dreadnaught Factor.ovl"},
{0x99f5783d , "DREADNAUGHT","FACTOR", "Dreadnaught Factor.ovl"},
{0xB1BFA8B8 , "FINAL", "ROUND", "FinalRound.ovl"},
{0x3A8A4351 , "FOX", "QUEST", "Fox Quest.ovl"},
{0x912E7C64 , "FRANKENSTIEN","FRANKENSTIEN","Frankenstien.ovl"},
{0xD27495E9 , "FROGGER", "FROGGER", "Frogger.ovl"},
{0xAC764495 , "GOSUB", "GOSUB", "GosubDigital.ovl"},
{0x4B8C5932 , "HAPPY", "TRAILS", "Happy Trails.ovl"},
{0x120b53a9 , "HAPPY", "TRAILS", "Happy Trails.ovl"},
{0xB5C7F25D , "HORSE", "RACING", "Horse Racing.ovl"},
{0x94EA650B , "HOVER", "BOVVER", "Hover Bovver.ovl"},
{0xFF83FF80 , "HOVER", "FORCE", "Hover Force.ovl"},
{0x4F3E3F69 , "ICE", "TREK", "Ice Trek.ovl"},
{0x5F2607E1 , "INFILTRATOR","INFILTRATOR", "Infiltrator.ovl"},
{0xFFFFFFFF , "INTELLIVANIA","INTELLIVANIA","Intellivania.ovl"},
{0xEE5F1BE2 , "JETSONS", "JETSONS", "Jetsons.ovl"},
{0x4422868E , "KING", "MOUNTAIN", "King of the Mountain.ovl"},
{0x87D95C72 , "KING", "MOUNTAIN", "King of the Mountain.ovl"},
{0xFFFFFFFF , "SPKOTM", "SPKOTM", "King of the Mountain.ovl"},
{0x8C9819A2 , "KOOL", "AID", "Kool-Aid Man.ovl"},
{0x604611C0 , "POKER", "BLACKJACK", "Las Vegas Poker & Blackjack.ovl"},
{0xE00D1399 , "LOCK", "CHASE", "Lock-n-Chase.ovl"},
{0x5C7E9848 , "LOCK", "CHASE", "Lock-n-Chase.ovl"},
{0x6B6E80EE , "LOCO", "MOTION" "Loco-Motion.ovl"},
{0x80764301 , "LODE", "RUNNER", "Lode Runner.ovl"},
{0x573B9B6D , "MASTERS", "UNIVERSE", "Masters of the Universe - The Power of He-Man.ovl"},
{0xEB4383E0 , "MAXIT", "MAXIT", "Maxit.ovl"},
{0xE806AD91 , "MICRO", "SURGEON", "Microsurgeon.ovl"},
{0x9D57498F , "MIND", "STRIKE", "Mind Strike.ovl"},
{0x11FB9974 , "MISSION", "X", "Mission X.ovl"},
{0x598662F2 , "MOUSE", "TRAP", "Mouse Trap.ovl"},
{0xE367E450 , "MR", "CHESS", "MrChess.ovl"},
{0x0753544F , "MS", "PAC", "Ms Pac-Man.ovl"},
{0x7334CD44 , "NIGHT", "STALKER", "Night Stalker.ovl"},
{0xFFFFFFFF , "MSTALKER", "MSTALKER", "Night Stalker.ovl"},
{0x36A7711B , "OPERATION", "CLOUDFIRE", "Operation Cloudfire.ovl"},
{0xFFFFFFFF , "OREGON", "BOUND", "Oregon Bound.ovl"},
{0xFFFFFFFF , "OREGON", "TRAIL", "Oregon Bound.ovl"},
{0x169E3584 , "PBA", "BOWLING", "PBA Bowling.ovl"},
{0xFF87FAEC , "PGA", "GOLF", "PGA Golf.ovl"},
{0xA21C31C3 , "PAC", "MAN", "Pac-Man.ovl"},
{0x6E4E8EB4 , "PAC", "MAN", "Pac-Man.ovl"},
{0x6084B48A , "PARSEC", "PARSEC", "Parsec.ovl"},
{0x1A7AAC88 , "PENGUIN", "LAND", "Penguin Land.ovl"},
{0xD7C5849C , "PINBALL", "PINBALL", "Pinball.ovl"},
{0x9C75EFCC , "PITFALL!", "PITFALL!", "Pitfall!.ovl"},
{0x0CF06519 , "POKER", "RISQUE", "Poker Risque.ovl"},
{0x5AEF02C6 , "RICK", "DYNAMITE", "Rick Dynamite.ovl"},
{0x8910C37A , "RIVER", "RAID", "River Raid.ovl"},
{0x95466AD3 , "RIVER", "RAID", "River Raid.ovl"},
{0xDCF4B15D , "ROYAL", "DEALER", "Royal Dealer.ovl"},
{0x8F959A6E , "SNAFU", "SNAFU", "SNAFU.ovl"},
{0x47AA7977 , "SAFE", "CRACKER", "Safecracker.ovl"},
{0x6E0882E7 , "SAMEGAME", "ROBOTS", "SameGame and Robots.ovl"},
{0x12BA58D1 , "SAMEGAME", "ROBOTS", "SameGame and Robots.ovl"},
{0x20eb8b7c , "SAMEGAME", "ROBOTS", "SameGame and Robots.ovl"},
{0xe9e3f60d , "MAZE", "CHASE", "Scooby Doo's Maze Chase.ovl"},
{0xBEF0B0C7 , "MAZE", "CHASE", "Scooby Doo's Maze Chase.ovl"},
{0xFFFFFFFF , "SCOOBY", "DOO", "Scooby Doo's Maze Chase.ovl"},
{0x99AE29A9 , "SEA", "BATTLE", "Sea Battle.ovl"},
{0x2A4C761D , "SHARK!", "SHARK!", "Shark! Shark!.ovl"},
{0xd7b8208b , "SHARK!", "SHARK!", "Shark! Shark!.ovl"},
{0xFF7CB79E , "SHARP", "SHOT", "Sharp Shot.ovl"},
{0xF093E801 , "US", "SKIING", "Skiing.ovl"},
{0x800B572F , "SLAM", "DUNK", "Slam Dunk - Super Pro Basketball.ovl"},
{0x0e6198a5 , "GADHLAN", "THUR", "Gadhlan Thur.ovl"},
{0xE8B8EBA5 , "SPACE", "ARMADA", "Space Armada.ovl"},
{0xFFFFFFFF , "SPACE", "INVADERS", "Space Armada.ovl"},
{0x1AAC64CA , "SPACE", "BANDITS", "Space Bandits.ovl"},
{0xF95504E0 , "SPACE", "BATTLE", "Space Battle.ovl"},
{0x39D3B895 , "SPACE", "HAWK", "Space Hawk.ovl"},
{0xCF39471A , "SPACE", "PANIC", "Space Panic.ovl"},
{0x3784DC52 , "SPACE", "SPARTANS", "Space Spartans.ovl"},
{0xB745C1CA , "MUD", "BUGGIES", "Stadium Mud Buggies.ovl"},
{0x2DEACD15 , "STAMPEDE", "STAMPEDE", "Stampede.ovl"},
{0x72E11FCA , "STAR", "STRIKE", "Star Strike.ovl"},
{0x3D9949EA , "SUB", "HUNT", "Sub Hunt.ovl"},
{0xbe4d7996 , "SUPER", "NFL", "Super NFL Football (ECS).ovl"},
{0x15E88FCE , "SWORDS", "SERPENTS", "Swords & Serpents.ovl"},
{0xD6F44FA5 , "TNT", "COWBOY", "TNT Cowboy.ovl"},
{0xCA447BBD , "DEADLY", "DISCS", "TRON Deadly Discs.ovl"},
{0xFFFFFFFF , "DEADLIER", "DISCS", "TRON Deadly Discs.ovl"},
{0x07FB9435 , "SOLAR", "SAILOR", "TRON Solar Sailor.ovl"},
{0x07FB9435 , "SOLAR", "SAILER", "TRON Solar Sailor.ovl"},
{0xFFFFFFFF , "TRON", "SOLAR", "TRON Solar Sailor.ovl"},
{0x03E9E62E , "TENNIS", "TENNIS", "Tennis.ovl"},
{0xB7923858 , "SHOW", "MUST", "The Show Must Go On.ovl"},
{0xF3DF94E0 , "THIN", "ICE", "Thin Ice.ovl"},
{0x975AE6DF , "THIN", "ICE", "Thin Ice.ovl"},
{0xd6495910 , "THIN", "ICE", "Thin Ice.ovl"},
{0xC1F1CA74 , "THUNDER", "CASTLE", "Thunder Castle.ovl"},
{0x67CA7C0A , "THUNDER", "CASTLE", "Thunder Castle.ovl"},
{0xFFFFFFFF , "MYSTIC", "CASTLE", "Thunder Castle.ovl"},
{0xD1D352A0 , "TOWER", "DOOM", "Tower of Doom.ovl"},
{0x734F3260 , "TRUCKIN", "TRUCKIN", "Truckin.ovl"},
{0x752FD927 , "USCF", "CHESS", "USCF Chess.ovl"},
{0xF9E0789E , "UTOPIA", "UTOPIA", "Utopia.ovl"},
{0xC9624608 , "VANGUARD", "VANGUARD", "Vanguard.ovl"},
{0xA4A20354 , "VECTRON", "VECTRON", "Vectron.ovl"},
{0xF1ED7D27 , "WHITE", "WATER", "White Water.ovl"},
{0x10D64E48 , "CHAMPIONSHIP","BASEBALL", "World Championship Baseball.ovl"},
{0xC2063C08 , "WORLD", "SERIES", "World Series Major League Baseball.ovl"},
{0x24B667B9 , "WORM", "WHOMPER", "Worm Whomper.ovl"},
{0x740C9C49 , "X-RALLY", "X-RALLY", "X-Rally.ovl"},
{0x45119649 , "YAR", "REVENGE", "Yars Revenge.ovl"},
{0xC00CBA0D , "GORF", "GORF", "gorf.ovl"},
{0x00000000 , "xxx", "zzz", "generic.ovl"},
};
@ -366,6 +399,28 @@ void load_custom_overlay(bool bCustomGeneric)
}
i++;
}
// If still not found after searching for CRC32... try fuzzy name search...
if (!bFound)
{
UINT16 i=0;
while (MapRomToOvl[i].crc != 0x00000000)
{
// It has to match both string searches to be valid... Uppercase for the compare...
strcpy(szName, currentRip->GetFileName());
for (int j=0; j<strlen(szName); j++) szName[j] = toupper(szName[j]);
if ((strstr(szName, MapRomToOvl[i].search1) != NULL) && (strstr(szName, MapRomToOvl[i].search2) != NULL))
{
strcpy(filename, directory);
strcat(filename, MapRomToOvl[i].ovl_filename);
fp = fopen(filename, "rb");
if (fp != NULL) bFound = 1;
break;
}
i++;
}
}
}
}

Binary file not shown.