示例#1
0
// ----------------------------------------------------------------------------
// Load
// ----------------------------------------------------------------------------
static bool _cartridge_Load(const byte* data, uint size) {
  uint index;
  if(size <= 128) {
    fprintf(stderr,"Cartridge data is invalid.");
    //logger_LogError("Cartridge data is invalid.", CARTRIDGE_SOURCE);
    return false;
  }

  cartridge_Release( );
  
  byte header[128] = {0};
  for(index = 0; index < 128; index++) {
    header[index] = data[index];
  }

  uint offset = 0;
  if(cartridge_HasHeader(header)) {
    cartridge_ReadHeader(header);
    size -= 128;
    offset = 128;
  }
  else {
    cartridge_size = size;
  }
  
  cartridge_buffer = (char *) malloc(cartridge_size);
  for(index = 0; index < cartridge_size; index++) {
    cartridge_buffer[index] = data[index + offset];
  }
  
//strcpy(cartridge_digest,hash_Compute(cartridge_buffer, cartridge_size));
  hash_Compute(cartridge_buffer, cartridge_size,cartridge_digest);
  return true;
}
示例#2
0
// ----------------------------------------------------------------------------
// Load
// ----------------------------------------------------------------------------
bool cartridge_Load(const uint8_t* data, uint32_t size)
{
   int index;
   uint32_t offset     = 0;
   uint8_t header[128] = {0};

   /* Cartridge data is invalid. */
   if(size <= 128)
      return false;

   cartridge_Release( );

   for(index = 0; index < 128; index++)
      header[index] = data[index];

   /* Prosystem doesn't support CC2 hacks. */
   if (cartridge_CC2(header))
      return false;

   if(cartridge_HasHeader(header))
   {
      cartridge_ReadHeader(header);
      size -= 128;
      offset = 128;
   }

   cartridge_size   = size;
   cartridge_buffer = (uint8_t*)malloc(cartridge_size * sizeof(uint8_t));

   for(index = 0; index < cartridge_size; index++)
      cartridge_buffer[index] = data[index + offset];

   hash_Compute(cartridge_digest, cartridge_buffer, cartridge_size);

   return true;
}