From 8df7d4d1feb782fc54b79776b5ee7238d357e521 Mon Sep 17 00:00:00 2001 From: Robert Lowe Date: Mon, 19 Jan 2015 22:15:02 -0500 Subject: [PATCH] starting code for drawing planar buffers --- planarNotes.txt | 26 ++++++++++++++++++++++++++ src/lib/modex16.c | 6 ++++++ src/lib/modex16.h | 6 ++++-- 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 planarNotes.txt diff --git a/planarNotes.txt b/planarNotes.txt new file mode 100644 index 00000000..f9293930 --- /dev/null +++ b/planarNotes.txt @@ -0,0 +1,26 @@ +The first case to consider is that where the image width is divisible +by 4. This case is shown below: + +Planar Format Normal Raster order +============= =================== +0 0 1 2 3 PI + 4 5 6 7 00 10 20 30 01 11 21 31 02 12 22 32 03 13 23 33 + 8 9 A B 04 14 24 34 05 15 25 35 06 16 26 36 07 17 27 37 + 08 18 28 38 09 19 29 39 0A 1A 2A 3A 0B 1B 2B 3B +1 0 1 2 3 + 4 5 6 7 + 8 9 A B + +2 0 1 2 3 + 4 5 6 7 + 8 9 A B + +3 0 1 2 3 + 4 5 6 7 + 8 9 A B + +Suppose we would like to render the image from (1,0) to (3,1), we +would render the coordinates: + + 10 20 30 + 14 24 34 diff --git a/src/lib/modex16.c b/src/lib/modex16.c index bde6b1fe..0137b625 100644 --- a/src/lib/modex16.c +++ b/src/lib/modex16.c @@ -286,6 +286,12 @@ modexDrawBmpRegion(page_t *page, int x, int y, } +void +modexDrawPlanarBuf(page_t *page, int x, int y, planar_buf_t *bmp) { + /* TODO - adapt from test code */ +} + + void modexDrawSprite(page_t *page, int x, int y, bitmap_t *bmp) { /* draw the whole sprite */ diff --git a/src/lib/modex16.h b/src/lib/modex16.h index 1a5debdf..7cb27820 100644 --- a/src/lib/modex16.h +++ b/src/lib/modex16.h @@ -6,6 +6,7 @@ #include #include "src\lib\types.h" #include "src\lib\bitmap.h" +#include "src\lib\planar.h" /* -========================== Types & Macros ==========================- */ #define PAGE_OFFSET(x,y) (((y)<<6)+((y)<<4)+((x)>>2)) @@ -29,11 +30,12 @@ page_t modexNextPage(page_t *p); void modexShowPage(page_t *page); void modexPanPage(page_t *page, int dx, int dy); void modexSelectPlane(byte plane); -void modexClearRegion(page_t *page, int x, int y, int w, int h, byte color); +void modexClearRegion(page_t *page, int x, int y, int w, int h, byte color); void modexDrawBmp(page_t *page, int x, int y, bitmap_t *bmp); void modexDrawBmpRegion(page_t *page, int x, int y, int rx, int ry, int rw, int rh, bitmap_t *bmp); +void modexDrawPlanarBuf(page_t *page, int x, int y, planar_buf_t *bmp); void modexDrawSprite(page_t *page, int x, int y, bitmap_t *bmp); -void modexDrawSpriteRegion(page_t *page, int x, int y, int rx, int ry, int rw, int rh, bitmap_t *bmp); +void modexDrawSpriteRegion(page_t *page, int x, int y, int rx, int ry, int rw, int rh, bitmap_t *bmp); void modexCopyPageRegion(page_t *dest, page_t *src, word sx, word sy, word dx, word dy, word width, word height); /* Palette fade and flash effects */ -- 2.39.2