Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define DRAW_TILE_A(start, end, index) \
- { \
- VDP_ArtTile *plane_entry = &plane_row[(start_x + (index)) & plane_width_mask]; \
- const uint8_t pixel_high_bits = plane_entry->pixel_high; \
- \
- const uint8_t *tile_pixels = &vdp_tile_buffer[plane_entry->tile_index][plane_entry->y_flip ? 8 - raw_y - 1 : raw_y][plane_entry->x_flip ? 8 - (start) - 1 : (start)]; \
- \
- if ((start) == 0 && (end) == 8) /* Hopefully this gets optimised-out by the compiler */ \
- { \
- if (plane_entry->x_flip) \
- { \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- } \
- else \
- { \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- } \
- } \
- else \
- { \
- const unsigned int length = (end) - (start); \
- \
- if (plane_entry->x_flip) \
- { \
- switch (length) \
- { \
- case 8: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- /* Fallthrough */ \
- case 7: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- /* Fallthrough */ \
- case 6: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- /* Fallthrough */ \
- case 5: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- /* Fallthrough */ \
- case 4: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- /* Fallthrough */ \
- case 3: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- /* Fallthrough */ \
- case 2: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- /* Fallthrough */ \
- case 1: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels--]; ++indexed_framebuffer_pointer; \
- break; \
- } \
- } \
- else \
- { \
- switch (length) \
- { \
- case 8: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- /* Fallthrough */ \
- case 7: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- /* Fallthrough */ \
- case 6: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- /* Fallthrough */ \
- case 5: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- /* Fallthrough */ \
- case 4: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- /* Fallthrough */ \
- case 3: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- /* Fallthrough */ \
- case 2: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- /* Fallthrough */ \
- case 1: \
- *indexed_framebuffer_pointer = blit_lookup[*indexed_framebuffer_pointer][pixel_high_bits | *tile_pixels++]; ++indexed_framebuffer_pointer; \
- break; \
- } \
- } \
- } \
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement