From 7abb774dfb2c7b561e66507708cfa8efa44574c7 Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Sun, 6 Jan 2019 21:29:20 -0500 Subject: [PATCH] Implement split-screen footer --- footer.tif | Bin 0 -> 4236 bytes testbed.c | 49 ++++++++++++++++++++++++++----------------------- testbed.exe | Bin 18862 -> 19260 bytes 3 files changed, 26 insertions(+), 23 deletions(-) create mode 100755 footer.tif diff --git a/footer.tif b/footer.tif new file mode 100755 index 0000000000000000000000000000000000000000..7302738173b08f04852a84679960afbfff5802f4 GIT binary patch literal 4236 zcmeH}&uimG6vroxS+8?EBBY*21GDC?1v zegWINVNXtx`s}vE6S)kqblA@rFw!TaERcJ;H{Z>CzbE}K1Z3@sj$&1J?wwUxrOzv1 zSx10@ek`FWEdh?A8)NN_huoP?;0+Y8@%MMvb+hgK!A?0AM5kt1m_=#pWn?YUgd$wY z`a${=oTfA88wS|&tpirmv=KM(t;W5)<0EVB#x1^;we>{WYqil7jYdR)FAFzU4o$yz z)d0lC00^Qr&6cGD=6Z`*h^}wb-UC=3)i#PP3%J;*$jZ6A&ZSm$4FRX_rpiySr}J## zde4|`xB&vg`ESP;qQm%%rJ7`ntvfgQB!_@XC6p*hqynFDQr!Y;8!gHHx>;{oFb3nf zZ1oFK7u$bhFKVHa9KV*zEEaDlIjbjmq`(*FN!;BB2^S`x)S zPe>~D4N21TNnx};@dH%pOz$GjQfw1}=mXF2>kkvlOAs`CLE(kx-3RV%yXvVak0U;g zua0>0#tM6vl6hR1Wup8B0Ule6==N{Nm$f79);y(5g1FlvjuWg5hwm2d?k#)TAbWf9 zI}7!ls3&w*+vL)!Ypro!|1kF_V5$rBJ4Qgx{P_~*cfc{zd+HFPUOHUN?(t6_p%ayL zqOGpA&6f+hW}+myyy5JW8_t#t8O}eRU|1Hq231&spKKo@o8Y~MdB*mL>dRtb + (plane << 4); - volatile unsigned int far *out = (volatile unsigned int far *) - &VID[(y * 640) + (x << 1) + (page << 8)]; - int i; - - for (i = 0; i < 320; i += 20) { - out[i] = *(data++); - } -} - -#endif - #define flipPage(p) outport(REG_CRTC, 0x0c | (p << 8)) /*** K E Y B O A R D ***/ @@ -360,14 +355,14 @@ int tifLoadEGA(FILE *f, TifImageMeta_t meta, unsigned int vidOffset, int maxY) { int gpair = (pixelpair & 0x02) >> 1 | (pixelpair & 0x20) >> 4; int rpair = (pixelpair & 0x04) >> 2 | (pixelpair & 0x40) >> 5; int ipair = (pixelpair & 0x08) >> 3 | (pixelpair & 0x80) >> 6; - int shift = (ipixelpair % 4) << 1; + int shift = (3 - (ipixelpair % 4)) << 1; b |= bpair << shift; g |= gpair << shift; r |= rpair << shift; i |= ipair << shift; - if (shift == 6 || ipixelpair == ipixelpairLim - 1) { + if (shift == 0 || ipixelpair == ipixelpairLim - 1) { // todo: use write mode 2, this is slooww setPlane(PLANE_B); *out = b; setPlane(PLANE_R); *out = r; @@ -478,7 +473,14 @@ int main() { unsigned int page = 0; #define OFF_TILES 0x4200 + setEGAMode(); + atexit(vid_cleanup); + + f = fopen("FOOTER.TIF", "rb"); + meta = tifLoadMeta(f); + tifLoadEGA(f, meta, 0, 24); + fclose(f); f = fopen("TILES.TIF", "rb"); meta = tifLoadMeta(f); @@ -487,21 +489,22 @@ int main() { mouse_init(); kbd_init(); - atexit(vid_cleanup); while (!keyPressed(K_ESC)) { - page ^= 0x20; + page ^= 1; prepareEgaMemCopy(); - drawOffset = page << 8; - for (y = 0; y < 13; y ++) { + drawOffset = PAGE[page] << 8; + for (y = 0; y < 11; y ++) { for (x = 0; x < 20; x ++) { blitTile(OFF_TILES + ((((x + y + z) >> 2) % 3) << 5), drawOffset); drawOffset += 2; } drawOffset += 600; // 40 bytes per line * 15 more lines } - flipPage(page); + + flipPage(PAGE[page]); + setSplitScreen(16); kbd_wait(); z++; diff --git a/testbed.exe b/testbed.exe index 8910cb96927aff77a28421154a46f4ca02ef7ddc..4b806a8116816105b625e2cc361da91af68b9e31 100755 GIT binary patch delta 6706 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 Y)ACbBm&y-Zl(o7M?QmhK7&%1z4-rxN=l}o!