// ---------------------------------------------------------------------------- // 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; }
// ---------------------------------------------------------------------------- // 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; }