comparison vdp.c @ 1875:3457d338ae25

Small optimization to render_map in VDP code
author Michael Pavone <pavone@retrodev.com>
date Mon, 19 Aug 2019 19:06:22 -0700
parents cae2b55d683f
children 9486236f28ac
comparison
equal deleted inserted replaced
1874:cae2b55d683f 1875:3457d338ae25
1195 } else { 1195 } else {
1196 address += 4 * context->v_offset; 1196 address += 4 * context->v_offset;
1197 } 1197 }
1198 uint8_t pal_priority = (col >> 9) & 0x70; 1198 uint8_t pal_priority = (col >> 9) & 0x70;
1199 uint32_t bits = *((uint32_t *)(&context->vdpmem[address])); 1199 uint32_t bits = *((uint32_t *)(&context->vdpmem[address]));
1200 tmp_buf += offset;
1200 if (col & MAP_BIT_H_FLIP) { 1201 if (col & MAP_BIT_H_FLIP) {
1201 uint32_t shift = 28; 1202 uint32_t shift = 28;
1202 for (int i = 0; i < 4; i++) 1203 for (int i = 0; i < 4; i++)
1203 { 1204 {
1204 uint8_t right = pal_priority | ((bits >> shift) & 0xF); 1205 uint8_t right = pal_priority | ((bits >> shift) & 0xF);
1205 shift -= 4; 1206 shift -= 4;
1206 tmp_buf[offset++] = pal_priority | ((bits >> shift) & 0xF); 1207 *(tmp_buf++) = pal_priority | ((bits >> shift) & 0xF);
1207 shift -= 4; 1208 shift -= 4;
1208 offset &= SCROLL_BUFFER_MASK; 1209 *(tmp_buf++) = right;
1209 tmp_buf[offset++] = right;
1210 offset &= SCROLL_BUFFER_MASK;
1211 } 1210 }
1212 } else { 1211 } else {
1213 for (int i = 0; i < 4; i++) 1212 for (int i = 0; i < 4; i++)
1214 { 1213 {
1215 uint8_t right = pal_priority | (bits & 0xF); 1214 uint8_t right = pal_priority | (bits & 0xF);
1216 bits >>= 4; 1215 bits >>= 4;
1217 tmp_buf[offset++] = pal_priority | (bits & 0xF); 1216 *(tmp_buf++) = pal_priority | (bits & 0xF);
1218 offset &= SCROLL_BUFFER_MASK;
1219 bits >>= 4; 1217 bits >>= 4;
1220 tmp_buf[offset++] = right; 1218 *(tmp_buf++) = right;
1221 offset &= SCROLL_BUFFER_MASK;
1222 } 1219 }
1223 } 1220 }
1224 } 1221 }
1225 1222
1226 static void render_map_1(vdp_context * context) 1223 static void render_map_1(vdp_context * context)