X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fgame_em%2Fgraphics.c;h=3d9649800fc49f31e9da3dce82c8a02750c561e1;hb=a19843471dc3ebab17890f54cb2eb8aa82a7ac8a;hp=1ba8c511eed1263cfbfad8da728d3c2b898a985b;hpb=b5e34de2d22082ce3c719d7502d998cfc6f2306d;p=rocksndiamonds.git diff --git a/src/game_em/graphics.c b/src/game_em/graphics.c index 1ba8c511..3d964980 100644 --- a/src/game_em/graphics.c +++ b/src/game_em/graphics.c @@ -5,10 +5,15 @@ #include "main_em.h" -#define MIN_SCREEN_XPOS 1 -#define MIN_SCREEN_YPOS 1 -#define MAX_SCREEN_XPOS MAX(1, lev.width - (SCR_FIELDX - 1)) -#define MAX_SCREEN_YPOS MAX(1, lev.height - (SCR_FIELDY - 1)) +#define MIN_SCREEN_XPOS_RAW 0 +#define MIN_SCREEN_YPOS_RAW 0 +#define MAX_SCREEN_XPOS_RAW MAX(0, lev.width - SCR_FIELDX) +#define MAX_SCREEN_YPOS_RAW MAX(0, lev.height - SCR_FIELDY) + +#define MIN_SCREEN_XPOS (MIN_SCREEN_XPOS_RAW + CAVE_BUFFER_XOFFSET) +#define MIN_SCREEN_YPOS (MIN_SCREEN_YPOS_RAW + CAVE_BUFFER_YOFFSET) +#define MAX_SCREEN_XPOS (MAX_SCREEN_XPOS_RAW + CAVE_BUFFER_XOFFSET) +#define MAX_SCREEN_YPOS (MAX_SCREEN_YPOS_RAW + CAVE_BUFFER_YOFFSET) #define MIN_SCREEN_X (MIN_SCREEN_XPOS * TILEX) #define MIN_SCREEN_Y (MIN_SCREEN_YPOS * TILEY) @@ -109,7 +114,7 @@ void BackToFront_EM(void) static struct GraphicInfo_EM *getObjectGraphic(int x, int y) { - int tile = Draw[x][y]; + int tile = lev.draw[x][y]; struct GraphicInfo_EM *g = &graphic_info_em_object[tile][frame]; if (!game.use_native_emc_graphics_engine) @@ -300,10 +305,10 @@ static void animscreen(void) }; if (!game.use_native_emc_graphics_engine) - for (y = 2; y < EM_MAX_CAVE_HEIGHT - 2; y++) - for (x = 2; x < EM_MAX_CAVE_WIDTH - 2; x++) - SetGfxAnimation_EM(&graphic_info_em_object[Draw[x][y]][frame], - Draw[x][y], 7 - frame, x - 2, y - 2); + for (y = 2; y < CAVE_BUFFER_HEIGHT - 2; y++) + for (x = 2; x < CAVE_BUFFER_WIDTH - 2; x++) + SetGfxAnimation_EM(&graphic_info_em_object[lev.draw[x][y]][frame], + lev.draw[x][y], 7 - frame, x - 2, y - 2); for (y = top; y < top + MAX_BUF_YSIZE; y++) { @@ -311,7 +316,7 @@ static void animscreen(void) { int sx = x % MAX_BUF_XSIZE; int sy = y % MAX_BUF_YSIZE; - int tile = Draw[x][y]; + int tile = lev.draw[x][y]; struct GraphicInfo_EM *g = &graphic_info_em_object[tile][frame]; int obj = g->unique_identifier; int crm = 0; @@ -326,11 +331,11 @@ static void animscreen(void) int yy = y + xy[i][1]; int tile_next; - if (xx < 0 || xx >= EM_MAX_CAVE_WIDTH || - yy < 0 || yy >= EM_MAX_CAVE_HEIGHT) + if (xx < 0 || xx >= CAVE_BUFFER_WIDTH || + yy < 0 || yy >= CAVE_BUFFER_HEIGHT) continue; - tile_next = Draw[xx][yy]; + tile_next = lev.draw[xx][yy]; if (!graphic_info_em_object[tile_next][frame].has_crumbled_graphics) crm |= (1 << i);