core/GameConfigs.cpp
changeset 2806 686c283b08fc
parent 2768 939a96921719
child 2828 74059a80142c
     1.1 --- a/core/GameConfigs.cpp	Thu Sep 17 13:08:18 2009 -0400
     1.2 +++ b/core/GameConfigs.cpp	Sat Sep 26 17:12:23 2009 -0400
     1.3 @@ -519,45 +519,18 @@
     1.4  				}
     1.5  #endif
     1.6  				/* First, preprocess the signature */
     1.7 -				char real_sig[511];
     1.8 +				unsigned char real_sig[511];
     1.9  				size_t real_bytes;
    1.10  				size_t length;
    1.11  
    1.12  				real_bytes = 0;
    1.13  				length = strlen(s_TempSig.sig);
    1.14  
    1.15 -				for (size_t i=0; i<length; i++)
    1.16 -				{
    1.17 -					if (real_bytes >= sizeof(real_sig))
    1.18 -					{
    1.19 -						break;
    1.20 -					}
    1.21 -					real_sig[real_bytes++] = s_TempSig.sig[i];
    1.22 -					if (s_TempSig.sig[i] == '\\'
    1.23 -						&& s_TempSig.sig[i+1] == 'x')
    1.24 -					{
    1.25 -						if (i + 3 >= length)
    1.26 -						{
    1.27 -							continue;
    1.28 -						}
    1.29 -						/* Get the hex part */
    1.30 -						char s_byte[3];
    1.31 -						int r_byte;
    1.32 -						s_byte[0] = s_TempSig.sig[i+2];
    1.33 -						s_byte[1] = s_TempSig.sig[i+3];
    1.34 -						s_byte[2] = '\0';
    1.35 -						/* Read it as an integer */
    1.36 -						sscanf(s_byte, "%x", &r_byte);
    1.37 -						/* Save the value */
    1.38 -						real_sig[real_bytes-1] = r_byte;
    1.39 -						/* Adjust index */
    1.40 -						i += 3;
    1.41 -					}
    1.42 -				}
    1.43 +				real_bytes = UTIL_DecodeHexString(real_sig, sizeof(real_sig), s_TempSig.sig);
    1.44  
    1.45  				if (real_bytes >= 1)
    1.46  				{
    1.47 -					final_addr = g_MemUtils.FindPattern(addrInBase, real_sig, real_bytes);
    1.48 +					final_addr = g_MemUtils.FindPattern(addrInBase, (char*)real_sig, real_bytes);
    1.49  				}
    1.50  			}
    1.51