Fix mupen64plus breakage after security updates
This commit is contained in:
parent
f16e2107bf
commit
d2fe532f6d
Binary file not shown.
|
@ -143,7 +143,18 @@ m64p_error open_rom(const unsigned char* romimage, unsigned int size)
|
||||||
g_MemHasBeenBSwapped = 0;
|
g_MemHasBeenBSwapped = 0;
|
||||||
/* allocate new buffer for ROM and copy into this buffer */
|
/* allocate new buffer for ROM and copy into this buffer */
|
||||||
rom_size = size;
|
rom_size = size;
|
||||||
rom = (unsigned char *) malloc(size);
|
|
||||||
|
/* round rom size to the next power of 2 */
|
||||||
|
while (rom_size & (rom_size - 1))
|
||||||
|
{
|
||||||
|
rom_size |= rom_size >> 1;
|
||||||
|
rom_size++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rom_size == 0)
|
||||||
|
return M64ERR_INPUT_INVALID;
|
||||||
|
|
||||||
|
rom = (unsigned char *) calloc(rom_size, sizeof(unsigned char));
|
||||||
if (rom == NULL)
|
if (rom == NULL)
|
||||||
return M64ERR_NO_MEMORY;
|
return M64ERR_NO_MEMORY;
|
||||||
memcpy(rom, romimage, size);
|
memcpy(rom, romimage, size);
|
||||||
|
|
|
@ -205,7 +205,7 @@ void dma_pi_write(void)
|
||||||
unsigned long rdram_address2 = pi_register.pi_dram_addr_reg+i+0xa0000000;
|
unsigned long rdram_address2 = pi_register.pi_dram_addr_reg+i+0xa0000000;
|
||||||
|
|
||||||
((unsigned char*)rdram)[MASK_ADDR_U8((pi_register.pi_dram_addr_reg+i)^S8, rdram)]=
|
((unsigned char*)rdram)[MASK_ADDR_U8((pi_register.pi_dram_addr_reg+i)^S8, rdram)]=
|
||||||
rom[MASK_ADDR_U8((((pi_register.pi_cart_addr_reg-0x10000000)&0x3FFFFFF)+i)^S8, rom)];
|
rom[((((pi_register.pi_cart_addr_reg-0x10000000)&0x3FFFFFF)+i)^S8) & (rom_size - 1)];
|
||||||
|
|
||||||
if (!invalid_code[rdram_address1>>12])
|
if (!invalid_code[rdram_address1>>12])
|
||||||
{
|
{
|
||||||
|
|
|
@ -3743,12 +3743,11 @@ unsigned int *fast_mem_access(unsigned int address)
|
||||||
if ((address & 0x1FFFFFFF) >= 0x10000000)
|
if ((address & 0x1FFFFFFF) >= 0x10000000)
|
||||||
{
|
{
|
||||||
unsigned int ofs = ((address & 0x1FFFFFFF) - 0x10000000)/4;
|
unsigned int ofs = ((address & 0x1FFFFFFF) - 0x10000000)/4;
|
||||||
if(ofs < rom_size/4)
|
if (ofs < rom_size/4)
|
||||||
return (unsigned int *)rom + ofs;
|
return (unsigned int *)rom + ofs;
|
||||||
else {
|
else
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if ((address & 0x1FFFFFFF) < 0x800000)
|
else if ((address & 0x1FFFFFFF) < 0x800000)
|
||||||
return (unsigned int *)rdram + (address & 0x1FFFFFFF)/4;
|
return (unsigned int *)rdram + (address & 0x1FFFFFFF)/4;
|
||||||
else if (address >= 0xa4000000 && address <= 0xa4001000)
|
else if (address >= 0xa4000000 && address <= 0xa4001000)
|
||||||
|
|
Loading…
Reference in New Issue