From 09750d04720891d56714d0727389a1f9ac4d795e Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Fri, 26 Jul 2019 21:37:47 -0400 Subject: [PATCH] add colour & sprite selection --- defs.jor | 10 ++++++ game.exe | Bin 99224 -> 99664 bytes game.prj | Bin 5522 -> 5667 bytes jiles.jor | 41 +++++++++++++++++-------- testbed.c | 89 ++++++++++++++++++++++++++++++++---------------------- 5 files changed, 92 insertions(+), 48 deletions(-) diff --git a/defs.jor b/defs.jor index f3dcda1..d753419 100755 --- a/defs.jor +++ b/defs.jor @@ -65,7 +65,17 @@ : max ( x y -- x|y ) 2dup < if swap then drop ; : +!pos ( n var -- ) dup @ r dup r@ @ <= if + drop 0 r@ ! + else r@ @ 0 < if + r@ ! + else drop then then rdrop ; +: +!cycle ( n var lim -- ) + >r >r r@ +! if drop 0 else dup 0 < : checkpoint ( cp -- ) create here 4 cells + , latest , tasks , , does> dup @ here! diff --git a/game.exe b/game.exe index dd98a259e50ceb3d771d7e1764adf90e18acb355..dab2edd42039a232e9abf39716107a8c3ecad3e8 100755 GIT binary patch delta 17577 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 z zz#s9#JZWDNi wpeXa1QTY=K#^^_l9$&C^`3&mmS8vSJA~ANt#EG4hb4P*V%-mX2f~)WU16Y0i$N&HU delta 16948 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 I>0Rl60m6GPYXATM diff --git a/game.prj b/game.prj index 9f925f245d1dc9f908d1e6afbf2996be4996be52..767e7139791168ac4a2159697327df9efdb5794b 100755 GIT binary patch delta 259 zcmbQFy;x_1Ivex4WxqCSvF+kyRbp5TWWMCLXRM#gqR+sVyqF_$t6u>>$TFmGjcX1)g$dBuE$;Slp9hFeU}nN~2*W=>%E z$ncM$i|G~PHby0;FHB)fevE8PQjATE2|&{Y7-Sh{E&Jui&Y-{%BgO$HS-_;UJD6f+ zP}}^|Pmn=ub(5bQgUk{OKPHBToT+~N3|~s8`f)LQo;Af!k)f}!-cO9-N9`6rQHCi% wSrG=ul6t@Y|9xG96eeE~5fgLt@$q-o^I-T7vMj_kIK;`-MbCM2rywT_05-x;fdBvi delta 130 zcmZ3iGf8`cIvca$)}NcT*miNUGBD@?nJ@Y6854O}^cff!W-*^(`oR2{xrON{^D^fD z|5KSKGU+n)F&8ucW%~dBCest9M&|uY@0nDXH!=AFsprpos 3 >> swap 3 >> swap ; : mousexys mousepos mousepos>sprpos spriteindex @ ; : tick - MOUSEL mousedown if - mousexys getpixel color @ != if - color @ mousexys putpixel - refresh + mousepos 128 < swap 128 < and if + MOUSEL mousedown if + mousexys getpixel color @ != if + color @ mousexys putpixel + refresh + then + then + MOUSER clicked if + mousexys getpixel color! then then - MOUSER clicked if - mousexys getpixel color ! + mousepos 136 < swap 312 >= and if + mousepos swap drop 3 >> + MOUSEL mousedown if color! else drop then then + ^LEFT key-pressed if -1 +sprite! then + ^RIGHT key-pressed if 1 +sprite! then tick-debounce - ; +; -: draw ; +: draw + refresh-needed @ if + mousehide + spriteindex @ drawfatsprite + color @ 78 0 drawfatbox + draw-palette + mouseshow + 0 refresh-needed ! + then ; mouseshow refresh diff --git a/testbed.c b/testbed.c index a4404df..d20731e 100755 --- a/testbed.c +++ b/testbed.c @@ -265,60 +265,71 @@ void f_glitch() { /* JILES */ #define SCREEN_STRIDE 40 -void f_mousehide() { - mouse_hide(); -} -void f_mouseshow() { - setLogicalWidth(SCREEN_STRIDE >> 1); - mouse_show(); -} -int getpixel(int x, int y, unsigned int far *spr) { +int getsprpixel(int x, int y, unsigned int far *spr) { int shift = (15 - x); int b = (spr[y + 0] & (1 << shift)) >> shift; int g = (spr[y + 16] & (1 << shift)) >> shift; int r = (spr[y + 32] & (1 << shift)) >> shift; int i = (spr[y + 48] & (1 << shift)) >> shift; - return b | (g << 1) | (r << 2) | (i << 3); + int v = (spr[y + 64] & (1 << shift)) ? 0 : 1; + return b | (g << 1) | (r << 2) | (i << 3) | (v << 4); +} +int resetEnabledCache = 0; + +#define setResetEnabledCached(m) \ + if (resetEnabledCache != m) { \ + resetEnabledCache = m; \ + setResetEnabled(m); \ + } + +void drawFatBox(int x, int y, int color) { + int faty; + int fill1 = color <= 0x0f ? 0xff : 0x55; + int fill2 = fill1 == 0xff ? 0xff : 0xaa; + unsigned int dst = SCREEN_STRIDE * y; + + if (color > 0x0f) { + setResetEnabledCached(0); + } else { + setResetEnabledCached(0x0f); + setResetMask(color); + } + for ( faty = 0; faty < 8; faty ++) { + VID[dst + x + (SCREEN_STRIDE * faty)] = (faty % 2) ? fill1 : fill2; + } } void f_drawfatsprite() { int isprite = TOP().i; - unsigned int dst = 0; unsigned int far *spr = &sprites[isprite * SPRITE_STRIDE]; - int x, y, faty, resetEnabled; + int x, y; DROP(1); - setWriteMode(0); - setAllPlanes(); - setResetEnabled(0x0f); - resetEnabled = 1; for ( y = 0; y < 16; y ++ ) { for ( x = 0; x < 16; x ++ ) { - int color = getpixel(x, y, spr); - int fill1 = color & 0x10 ? 0xff : 0x55; - int fill2 = fill1 == 0xff ? 0xff : 0xaa; - - if (color >= 0x0f) { - if (resetEnabled) { - setResetEnabled(0); - resetEnabled = 0; - } - } else { - if (!resetEnabled) { - setResetEnabled(0x0f); - resetEnabled = 1; - } - setResetMask(color); - } - for ( faty = 0; faty < 8; faty ++) { - VID[dst + x + (SCREEN_STRIDE * faty)] = (faty % 2) ? fill1 : fill2; - } + int color = getsprpixel(x, y, spr); + drawFatBox(x, y << 3, color); } - dst += (SCREEN_STRIDE * 8); } } +void f_drawfatbox() { + drawFatBox(ST1().i, TOP().i, ST2().i); + DROP(3); +} + +void f_mousehide() { + mouse_hide(); +} +void f_mouseshow() { + setLogicalWidth(SCREEN_STRIDE >> 1); + setResetEnabledCached(0); + setWriteMode(0); + setAllPlanes(); + mouse_show(); +} + void f_putpixel() { int isprite = TOP().i; unsigned int far *spr = &sprites[isprite * SPRITE_STRIDE]; @@ -351,7 +362,11 @@ void f_getpixel() { int y = ST1().i; DROP(2); - TOP().i = getpixel(x, y, spr); + TOP().i = getsprpixel(x, y, spr); +} + +void f_spritecount() { + PUSHI(NUM_SPRITES); } /* INIT */ @@ -383,8 +398,10 @@ void game_f_init(char *exe, char *bootjor) { CDEF("mouseshow", f_mouseshow); CDEF("mousehide", f_mousehide); CDEF("drawfatsprite", f_drawfatsprite); + CDEF("drawfatbox", f_drawfatbox); CDEF("putpixel", f_putpixel); CDEF("getpixel", f_getpixel); + CDEF("spritecount", f_spritecount); f_loadjor(bootjor);