Fixed force code. Thrown in some casts (thanks MKendora). Possibly fixed up Hi/Lo a bit.

This commit is contained in:
n-a-c-h
2003-08-29 10:18:00 +00:00
parent 7c5906e880
commit 5f0914d307

View File

@@ -70,12 +70,12 @@ bool EHiHeader(unsigned char *ROM, int BankLoc)
void swapBlocks(char *blocks) void swapBlocks(char *blocks)
{ {
int i,j,k; unsigned int i,j,k;
for (i = 0; i < NumofBanks; i++) for (i = 0; i < NumofBanks; i++)
{ {
for (j = 0; j < NumofBanks; j++) for (j = 0; j < NumofBanks; j++)
{ {
if (blocks[j] == i) if (blocks[j] == (char)i)
{ {
char b; char b;
unsigned int temp, unsigned int temp,
@@ -168,7 +168,7 @@ void CheckIntlEHi(unsigned char *ROM)
} }
//ROM loading functions, which some strangly enough were in guiload.inc //ROM loading functions, which some strangly enough were in guiload.inc
bool AllASCII(char *b, int size) bool AllASCII(unsigned char *b, int size)
{ {
int i; int i;
for (i = 0; i < size; i++) for (i = 0; i < size; i++)
@@ -181,12 +181,11 @@ bool AllASCII(char *b, int size)
return(true); return(true);
} }
int InfoScore(char *Buffer) int InfoScore(unsigned char *Buffer)
{ {
int score = 0; int score = 0;
if (validChecksum(Buffer, 0)) { score += 3; } if (validChecksum(Buffer, 0)) { score += 4; }
if (Buffer[26] == 0x33) { score += 2; } if (Buffer[26] == 0x33) { score += 2; }
if ((Buffer[21] & 0xf) < 4) { score += 2; }
if (!(Buffer[61] & 0x80)) { score -= 4; } if (!(Buffer[61] & 0x80)) { score -= 4; }
if ((1 << (Buffer[23] - 7)) > 48) { score -= 1; } if ((1 << (Buffer[23] - 7)) > 48) { score -= 1; }
if (Buffer[25] < 14) { score += 1; } if (Buffer[25] < 14) { score += 1; }
@@ -217,6 +216,7 @@ void BankCheck()
if (!infoloc) if (!infoloc)
{ {
static bool CommandLineForce2 = false;
int loscore, hiscore; int loscore, hiscore;
//Deinterleave if neccesary //Deinterleave if neccesary
@@ -228,6 +228,7 @@ void BankCheck()
switch(ROM[Lo + 21]) switch(ROM[Lo + 21])
{ {
case 32: case 35: case 48: case 50: case 32: case 35: case 48: case 50:
loscore += 2;
case 128: case 156: case 176: case 188: case 252: //BS case 128: case 156: case 176: case 188: case 252: //BS
loscore += 1; loscore += 1;
break; break;
@@ -235,16 +236,30 @@ void BankCheck()
switch(ROM[Hi + 21]) switch(ROM[Hi + 21])
{ {
case 33: case 49: case 53: case 58: case 33: case 49: case 53: case 58:
hiscore += 2;
case 128: case 156: case 176: case 188: case 252: //BS case 128: case 156: case 176: case 188: case 252: //BS
hiscore += 1; hiscore += 1;
break; break;
} }
if (ForceHiLoROM) /*
Force code.
ForceHiLoROM is from the GUI.
forceromtype is from Command line, we have a static var
to prevent forcing a secong game loaded from the GUI when
the first was loaded from the command line with forcing.
*/
if (ForceHiLoROM == 1 ||
(forceromtype == 1 && !CommandLineForce2))
{ {
//asm volatile("int $3"); CommandLineForce2 = true;
if (forceromtype == 1) { loscore += 50; } loscore += 50;
else if (forceromtype == 2) { hiscore += 50; } }
else if (ForceHiLoROM == 2 ||
(forceromtype == 2 && !CommandLineForce2))
{
CommandLineForce2 = true;
hiscore += 50;
} }
if (hiscore > loscore) if (hiscore > loscore)
@@ -312,12 +327,12 @@ void CalcChecksum()
void MirrorROM() void MirrorROM()
{ {
unsigned char *ROM = (unsigned char *)romdata; unsigned char *ROM = (unsigned char *)romdata;
int size, StartMirror = 0, ROMSize = curromspace; unsigned int size, StartMirror = 0, ROMSize = curromspace;
//This will mirror up non power of two ROMs to powers of two //This will mirror up non power of two ROMs to powers of two
for (size = 1; size <= 64; size +=size) for (size = 1; size <= 64; size +=size)
{ {
int fullSize = size * Mbit_bytes, unsigned int fullSize = size * Mbit_bytes,
halfSize = fullSize >> 1; halfSize = fullSize >> 1;
if ((ROMSize > halfSize) && (ROMSize < fullSize)) if ((ROMSize > halfSize) && (ROMSize < fullSize))
{ {
for (StartMirror = halfSize; for (StartMirror = halfSize;