mirror of https://github.com/stella-emu/stella.git
Modified the autodetect routine to include a search for 3F style
bankswitching as suggested by Adam Wozniak. This allows most of the demos/homebrew games being created using this method to work without a stella.pro file entry. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@164 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
8d530f38a2
commit
28572bbff3
|
@ -8,12 +8,12 @@
|
||||||
// SS SS tt ee ll ll aa aa
|
// SS SS tt ee ll ll aa aa
|
||||||
// SSSS ttt eeeee llll llll aaaaa
|
// SSSS ttt eeeee llll llll aaaaa
|
||||||
//
|
//
|
||||||
// Copyright (c) 1995-2002 by Bradford W. Mott
|
// Copyright (c) 1995-2003 by Bradford W. Mott
|
||||||
//
|
//
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: Cart.cxx,v 1.5 2002-12-15 05:49:04 bwmott Exp $
|
// $Id: Cart.cxx,v 1.6 2003-02-17 04:59:54 bwmott Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -178,7 +178,7 @@ string Cartridge::autodetectType(const uInt8* image, uInt32 size)
|
||||||
}
|
}
|
||||||
else if((size == 8192) || (memcmp(image, image + 8192, 8192) == 0))
|
else if((size == 8192) || (memcmp(image, image + 8192, 8192) == 0))
|
||||||
{
|
{
|
||||||
type = "F8";
|
type = isProbably3F(image, size) ? "3F" : "F8";
|
||||||
}
|
}
|
||||||
else if((size == 10495) || (size == 10240))
|
else if((size == 10495) || (size == 10240))
|
||||||
{
|
{
|
||||||
|
@ -199,18 +199,18 @@ string Cartridge::autodetectType(const uInt8* image, uInt32 size)
|
||||||
if(image[i] != first)
|
if(image[i] != first)
|
||||||
{
|
{
|
||||||
// It's not a super cart (probably)
|
// It's not a super cart (probably)
|
||||||
type = "F4";
|
type = isProbably3F(image, size) ? "3F" : "F4";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(size == 65536)
|
else if(size == 65536)
|
||||||
{
|
{
|
||||||
type = "MB";
|
type = isProbably3F(image, size) ? "3F" : "MB";
|
||||||
}
|
}
|
||||||
else if(size == 131072)
|
else if(size == 131072)
|
||||||
{
|
{
|
||||||
type = "MC";
|
type = isProbably3F(image, size) ? "3F" : "MC";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -223,7 +223,7 @@ string Cartridge::autodetectType(const uInt8* image, uInt32 size)
|
||||||
if(image[i] != first)
|
if(image[i] != first)
|
||||||
{
|
{
|
||||||
// It's not a super cart (probably)
|
// It's not a super cart (probably)
|
||||||
type = "F6";
|
type = isProbably3F(image, size) ? "3F" : "F6";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -233,6 +233,21 @@ string Cartridge::autodetectType(const uInt8* image, uInt32 size)
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
bool Cartridge::isProbably3F(const uInt8* image, uInt32 size)
|
||||||
|
{
|
||||||
|
uInt32 count = 0;
|
||||||
|
for(uInt32 i = 0; i < size - 1; ++i)
|
||||||
|
{
|
||||||
|
if((image[i] == 0x85) && (image[i + 1] == 0x3F))
|
||||||
|
{
|
||||||
|
++count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (count > 2);
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
Cartridge::Cartridge(const Cartridge&)
|
Cartridge::Cartridge(const Cartridge&)
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,12 +8,12 @@
|
||||||
// SS SS tt ee ll ll aa aa
|
// SS SS tt ee ll ll aa aa
|
||||||
// SSSS ttt eeeee llll llll aaaaa
|
// SSSS ttt eeeee llll llll aaaaa
|
||||||
//
|
//
|
||||||
// Copyright (c) 1995-1998 by Bradford W. Mott
|
// Copyright (c) 1995-2003 by Bradford W. Mott
|
||||||
//
|
//
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: Cart.hxx,v 1.1.1.1 2001-12-27 19:54:18 bwmott Exp $
|
// $Id: Cart.hxx,v 1.2 2003-02-17 04:59:54 bwmott Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifndef CARTRIDGE_HXX
|
#ifndef CARTRIDGE_HXX
|
||||||
|
@ -31,7 +31,7 @@ class System;
|
||||||
game and handles any bankswitching performed by the cartridge.
|
game and handles any bankswitching performed by the cartridge.
|
||||||
|
|
||||||
@author Bradford W. Mott
|
@author Bradford W. Mott
|
||||||
@version $Id: Cart.hxx,v 1.1.1.1 2001-12-27 19:54:18 bwmott Exp $
|
@version $Id: Cart.hxx,v 1.2 2003-02-17 04:59:54 bwmott Exp $
|
||||||
*/
|
*/
|
||||||
class Cartridge : public Device
|
class Cartridge : public Device
|
||||||
{
|
{
|
||||||
|
@ -69,6 +69,11 @@ class Cartridge : public Device
|
||||||
*/
|
*/
|
||||||
static string autodetectType(const uInt8* image, uInt32 size);
|
static string autodetectType(const uInt8* image, uInt32 size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns true iff the image is probably a 3F bankswitching cartridge
|
||||||
|
*/
|
||||||
|
static bool isProbably3F(const uInt8* image, uInt32 size);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Copy constructor isn't supported by cartridges so make it private
|
// Copy constructor isn't supported by cartridges so make it private
|
||||||
Cartridge(const Cartridge&);
|
Cartridge(const Cartridge&);
|
||||||
|
|
Loading…
Reference in New Issue