add error check in ines_load
This commit is contained in:
parent
ac1fde2036
commit
4df2b49643
|
@ -39,7 +39,7 @@ class Cart
|
||||||
static_assert(sizeof(ines_header_t) == 16);
|
static_assert(sizeof(ines_header_t) == 16);
|
||||||
|
|
||||||
// Load iNES file
|
// Load iNES file
|
||||||
void load_ines(const uint8_t *buffer)
|
const char *load_ines(const uint8_t *buffer)
|
||||||
{
|
{
|
||||||
ines_header_t h;
|
ines_header_t h;
|
||||||
|
|
||||||
|
@ -50,6 +50,9 @@ class Cart
|
||||||
bufferPos += copySize;
|
bufferPos += copySize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (memcmp(h.signature, "NES\x1A", 4) != 0)
|
||||||
|
return "Not an iNES file";
|
||||||
|
|
||||||
set_mapper(h.flags, h.flags2);
|
set_mapper(h.flags, h.flags2);
|
||||||
|
|
||||||
// skip trainer
|
// skip trainer
|
||||||
|
@ -73,6 +76,8 @@ class Cart
|
||||||
memcpy(chr(), &buffer[bufferPos], copySize);
|
memcpy(chr(), &buffer[bufferPos], copySize);
|
||||||
bufferPos += copySize;
|
bufferPos += copySize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool has_battery_ram() const { return mapper & 0x02; }
|
inline bool has_battery_ram() const { return mapper & 0x02; }
|
||||||
|
|
|
@ -172,7 +172,9 @@ const char *Emu::emulate_frame(uint32_t joypad1, uint32_t joypad2, uint32_t arka
|
||||||
|
|
||||||
const char *Emu::load_ines(const uint8_t *buffer)
|
const char *Emu::load_ines(const uint8_t *buffer)
|
||||||
{
|
{
|
||||||
private_cart.load_ines(buffer);
|
const char *error = private_cart.load_ines(buffer);
|
||||||
|
if (error) return error;
|
||||||
|
|
||||||
return set_cart(&private_cart);
|
return set_cart(&private_cart);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -842,4 +844,4 @@ void Emu::RestoreAudioBufferState()
|
||||||
sound_buf->RestoreAudioBufferState();
|
sound_buf->RestoreAudioBufferState();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace quickerNES
|
} // namespace quickerNES
|
||||||
|
|
Loading…
Reference in New Issue