mirror of
https://github.com/n64dev/cen64.git
synced 2024-05-11 00:45:39 -04:00
Don't crash when N64's framebuffer exceeds 8MB. Wrap aroudn in that case.
This commit is contained in:
parent
73ad38ca3f
commit
ee6db7d803
|
@ -13,6 +13,7 @@
|
|||
#include "common.h"
|
||||
|
||||
#define MAX_RDRAM_SIZE 0x800000U
|
||||
#define MAX_RDRAM_SIZE_MASK (MAX_RDRAM_SIZE - 1U)
|
||||
|
||||
enum rdram_register {
|
||||
#define X(reg) reg,
|
||||
|
|
|
@ -122,14 +122,14 @@ void vi_cycle(struct vi_controller *vi) {
|
|||
window->frame_type = 0;
|
||||
|
||||
// Copy the frame data into a temporary buffer.
|
||||
copy_size = sizeof(bus->ri->ram) - (vi->regs[VI_ORIGIN_REG] & 0xFFFFFF);
|
||||
copy_size = sizeof(bus->ri->ram) - (vi->regs[VI_ORIGIN_REG] & MAX_RDRAM_SIZE_MASK);
|
||||
|
||||
if (copy_size > sizeof(vi->window->frame_buffer))
|
||||
copy_size = sizeof(vi->window->frame_buffer);
|
||||
|
||||
memcpy(&bus, vi, sizeof(bus));
|
||||
memcpy(vi->window->frame_buffer,
|
||||
bus->ri->ram + (vi->regs[VI_ORIGIN_REG] & 0xFFFFFF),
|
||||
bus->ri->ram + (vi->regs[VI_ORIGIN_REG] & MAX_RDRAM_SIZE_MASK),
|
||||
copy_size);
|
||||
|
||||
cen64_mutex_unlock(&vi->window->render_mutex);
|
||||
|
|
Loading…
Reference in a new issue