Mercurial > repos > blastem
diff vdp.c @ 1640:3602f3b20072
Small cleanup of vdp_context struct layout and removal of separately allocated buffers
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 16 Nov 2018 19:56:24 -0800 |
parents | 93518786f882 |
children | bc9bb4e5856f |
line wrap: on
line diff
--- a/vdp.c Thu Nov 15 22:21:09 2018 -0800 +++ b/vdp.c Fri Nov 16 19:56:24 2018 -0800 @@ -19,7 +19,6 @@ #define MAP_BIT_H_FLIP 0x800 #define MAP_BIT_V_FLIP 0x1000 -#define SCROLL_BUFFER_SIZE 32 #define SCROLL_BUFFER_MASK (SCROLL_BUFFER_SIZE-1) #define SCROLL_BUFFER_DRAW (SCROLL_BUFFER_SIZE/2) @@ -138,13 +137,9 @@ static uint8_t color_map_init_done; -void init_vdp_context(vdp_context * context, uint8_t region_pal) +vdp_context *init_vdp_context(uint8_t region_pal) { - memset(context, 0, sizeof(*context)); - context->vdpmem = malloc(VRAM_SIZE); - memset(context->vdpmem, 0, VRAM_SIZE); - /* - */ + vdp_context *context = calloc(1, sizeof(vdp_context) + VRAM_SIZE); if (headless) { context->output = malloc(LINEBUF_SIZE * sizeof(uint32_t)); context->output_pitch = 0; @@ -152,10 +147,6 @@ context->cur_buffer = FRAMEBUFFER_ODD; context->fb = render_get_framebuffer(FRAMEBUFFER_ODD, &context->output_pitch); } - context->linebuf = malloc(LINEBUF_SIZE + SCROLL_BUFFER_SIZE*2); - memset(context->linebuf, 0, LINEBUF_SIZE + SCROLL_BUFFER_SIZE*2); - context->tmp_buf_a = context->linebuf + LINEBUF_SIZE; - context->tmp_buf_b = context->tmp_buf_a + SCROLL_BUFFER_SIZE; context->sprite_draws = MAX_DRAWS; context->fifo_write = 0; context->fifo_read = -1; @@ -250,12 +241,11 @@ if (!headless) { context->output = (uint32_t *)(((char *)context->fb) + context->output_pitch * context->border_top); } + return context; } void vdp_free(vdp_context *context) { - free(context->vdpmem); - free(context->linebuf); free(context); }