void z_draw_picture (void) { zword pic = zargs[0]; zword y = zargs[1]; zword x = zargs[2]; int i; flush_buffer (); if (y == 0) /* use cursor line if y-coordinate is 0 */ y = cwp->y_cursor; if (x == 0) /* use cursor column if x-coordinate is 0 */ x = cwp->x_cursor; y += cwp->y_pos - 1; x += cwp->x_pos - 1; /* The following is necessary to make Amiga and Macintosh story files work with MCGA graphics files. Some screen-filling pictures of the original Amiga release like the borders of Zork Zero were split into several MCGA pictures (left, right and top borders). We pretend this has not happened. */ for (i = 0; mapper[i].story_id != UNKNOWN; i++) if (story_id == mapper[i].story_id && pic == mapper[i].pic) { int height1, width1; int height2, width2; int delta = 0; os_picture_data (pic, &height1, &width1); os_picture_data (mapper[i].pic2, &height2, &width2); if (story_id == ARTHUR && pic == 54) delta = h_screen_width / 160; os_draw_picture (mapper[i].pic1, y + height1, x + delta); os_draw_picture (mapper[i].pic2, y + height1, x + width1 - width2 - delta); } os_draw_picture (pic, y, x); if (story_id == SHOGUN) if (pic == 3) { int height, width; os_picture_data (59, &height, &width); os_draw_picture (59, y, h_screen_width - width + 1); } }/* z_draw_picture */
void GlkInterface::showBeyondZorkTitle() { uint winW, winH, imgW, imgH; winid_t win = glk_window_open(0, 0, 0, wintype_Graphics, 0); glk_window_get_size(win, &winW, &winH); if (os_picture_data(1, &imgW, &imgH)) { os_draw_picture(1, win, Common::Rect(0, 0, winW, winH)); _events->waitForPress(); } glk_window_close(win, nullptr); }