From ba62a080e961c304eb0b0c89db2113ac5a58af1e Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Sun, 28 Jul 2019 18:40:13 -0400 Subject: [PATCH] integrate jiles into the game engine, draw with left & right click --- game.exe | Bin 100569 -> 100692 bytes game.jor | 2 +- game.prj | Bin 5667 -> 5667 bytes gameboot.jor | 1 + input.jor | 1 + jiles.jor | 76 ++++++++++++++++++++++++++++----------------------- sprite.gfx | Bin 10240 -> 10240 bytes testbed.c | 9 +++++- 8 files changed, 53 insertions(+), 36 deletions(-) diff --git a/game.exe b/game.exe index a08bb197f45ee83e590096f8330be9a462584b36..ec179c1ccd5805154c9bf52013bd3cda41d7daf2 100755 GIT binary patch delta 14361 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 B1|R?c delta 14538 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 Yy(L`tk>y?AettAvs<8e0DP#-&e=)$qV*mgE diff --git a/game.jor b/game.jor index e4686d8..aac990d 100755 --- a/game.jor +++ b/game.jor @@ -129,7 +129,7 @@ player :tick : mode-move entities each EVTICK entity>do more party each EVTICK entity>do more - tick-mapedit + tick-mapedit jiles tick-debounce q-level @ dup if 0 q-level ! diff --git a/game.prj b/game.prj index 3fad828030e7c0ebe4cd890eba57a14f430ba7a1..7375410a1f3d9d482fd18467eb5537885be2ff2c 100755 GIT binary patch delta 126 zcmZ3ivshE;*w9gIpJ8U8VJ zF}-5k#;C;fg(-~5kCBZ@im{0?fq{WRfI*gFXX)fgg4KLGOaJ(VxCVzfxw_~%Gfegu b(q$E9FkAn5vWk%Q<_e*sOw1sTgXm)becLB7 diff --git a/gameboot.jor b/gameboot.jor index 475b430..0a0aaf0 100755 --- a/gameboot.jor +++ b/gameboot.jor @@ -21,6 +21,7 @@ s" timer.jor" loadfile s" entity.jor" loadfile s" footer.jor" loadfile s" map.jor" loadfile +s" jiles.jor" loadfile s" state.jor" loadfile s" game.jor" loadfile ; execute diff --git a/input.jor b/input.jor index 6ec48a2..95d7763 100755 --- a/input.jor +++ b/input.jor @@ -1,5 +1,6 @@ ( K E Y B O A R D ) 1 const ^ESC +15 const ^TAB 28 const ^ENTER 29 const ^CTRL 51 const ^< diff --git a/jiles.jor b/jiles.jor index 4dfe8b3..fb78efc 100755 --- a/jiles.jor +++ b/jiles.jor @@ -1,62 +1,70 @@ -: blah ' seremit task-emit ! ; -blah - -s" game.log" open seekend fdeactivate const LOGFILE -: emit-log ' fputc LOGFILE withfp ; -: atexit LOGFILE factivate close ; - -: start-repl activate blah ' emit-log task-echo ! - s" .:: J O R T H ( jean forth) ::." type cr - begin receive loadstring s" ok" type cr again ; -task const REPL -REPL start-repl - -intern input.jor -input.jor loadfile - -var color +var lcolor 0x0f lcolor ! +var rcolor 0x10 rcolor ! var spriteindex var refresh-needed : refresh 1 refresh-needed ! ; -: color! dup color @ = if drop else color ! refresh then ; +: color! >r dup r@ @ = if drop else r@ ! refresh then rdrop ; + : +sprite! spriteindex spritecount +!cycle refresh ; : draw-palette 0 0x11 for i 79 i 3 << drawfatbox next ; : mousepos>sprpos 3 >> swap 3 >> swap ; : mousexys mousepos mousepos>sprpos spriteindex @ ; -: tick + +: mousepixel! ( color -- ) + >r mousexys getpixel r@ != if + r@ mousexys putpixel refresh + then rdrop ; + +var jiles-old-tick +var jiles-old-draw + +44 const ^Z +45 const ^X +31 const ^S + +: jiles-tick 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 + MOUSEL mousedown if lcolor @ mousepixel! then + MOUSER mousedown if rcolor @ mousepixel! then then mousepos 136 < swap 312 >= and if - mousepos swap drop 3 >> - MOUSEL mousedown if color! else drop then + mousepos swap drop 3 >> dup + MOUSEL mousedown if lcolor color! else drop then + MOUSER mousedown if rcolor color! else drop then then ^LEFT key-pressed if -1 +sprite! then ^RIGHT key-pressed if 1 +sprite! then + ^Z key-pressed if mousexys getpixel lcolor color! then + ^X key-pressed if mousexys getpixel rcolor color! then + ^S key-pressed if s" SAVING" type cr savegfx then + ^TAB key-pressed if + jiles-old-draw @ ' draw redefine + jiles-old-tick @ ' tick redefine + mousehide unfuck invalidate-map + then tick-debounce ; -: draw +: jiles-draw refresh-needed @ if mousehide spriteindex @ drawfatsprite - color @ 78 0 drawfatbox + lcolor @ 77 0 drawfatbox + rcolor @ 78 0 drawfatbox draw-palette mouseshow 0 refresh-needed ! then ; -mouseshow -refresh +: jiles + ^TAB key-pressed if + ' draw definition jiles-old-draw ! + ' tick definition jiles-old-tick ! + ' jiles-draw ' draw redefine + ' jiles-tick ' tick redefine + fuck mouseshow refresh + then ; diff --git a/sprite.gfx b/sprite.gfx index 9a659ef546d03751d204e365f34807743787367f..74cbaa6a65e6a326ba9cd7eb67695a9dc4902d83 100755 GIT binary patch delta 314 zcmZn&Xb7m^|G&MF|A2hM{Qv*|+yAKlaqvE419L-r`}y-g0U$t^KYX7Pr#wUlh{UB| z{sZ#?pnit!+o9%9tT*L(|9}4T`OhJmCoT|SgYYLm2ky RVUX*fuKE9evl-JVRRBc_&OiVF delta 272 zcmZn&Xb7m^|G&NW{0;eA|AD~%NBxh3_Zb_Q8QR;=p9hKj|Bo(z_&z62d58`mS&vJ< z{0HU(K>ZEdw?oaJSZ_M{i$KBT6ed|qxc2}5<^S0KId~q`B}md}@{=EONGSjP|NB3} uT2#gIKNt@%H?U9M%IGlptAH#=`VIaA^PkUu4${c-{r~?zo6VR`sR95T(Y`wX diff --git a/testbed.c b/testbed.c index 584ce39..f32be07 100755 --- a/testbed.c +++ b/testbed.c @@ -369,12 +369,18 @@ void f_savegfx() { void f_mousehide() { mouse_hide(); } + void f_mouseshow() { + mouse_show(); +} + +void f_resetvideo() { setLogicalWidth(SCREEN_STRIDE >> 1); setResetEnabledCached(0); setWriteMode(0); setAllPlanes(); - mouse_show(); + setDisplayOffset(0); + setHorizontalPan(0); } void f_putpixel() { @@ -441,6 +447,7 @@ void game_f_init(char *exe, char *bootjor) { CDEF("loadtiles", f_loadtiles); CDEF("glitch", f_glitch); CDEF("unfuck", tile_init); + CDEF("fuck", f_resetvideo); CDEF("mouseshow", f_mouseshow); CDEF("mousehide", f_mousehide);