diff --git a/entity.jor b/entity.jor
index 661608a..642b25d 100755
--- a/entity.jor
+++ b/entity.jor
@@ -94,3 +94,4 @@ array frames
6 defstatic {jeanne}
6 7 2 5 defanim {jeanne-walk}
18 defsingle {phone}
+38 defsingle {fridge}
diff --git a/game.exe b/game.exe
index eda9108..8df01f5 100755
Binary files a/game.exe and b/game.exe differ
diff --git a/game.prj b/game.prj
index 1303699..2ef020e 100755
Binary files a/game.prj and b/game.prj differ
diff --git a/jiles.jor b/jiles.jor
index 5bdd7e1..8d754eb 100755
--- a/jiles.jor
+++ b/jiles.jor
@@ -9,7 +9,7 @@ array preview 128 allot
: color! >r dup r@ @ = if drop else r@ ! refresh then rdrop ;
-: +sprite! spriteindex spritecount +!cycle refresh ;
+: +sprite! spriteindex spritecount +!cycle spriteindex @ . refresh ;
: draw-palette 0 0x11 for i 79 i 3 << drawfatbox next ;
diff --git a/jopl.c b/jopl.c
index 9c91e24..585363e 100755
--- a/jopl.c
+++ b/jopl.c
@@ -1,4 +1,6 @@
#include
+#include
+#include
#include "jorth.h"
#include "adlib.h"
#include "kbd.h"
@@ -73,6 +75,10 @@ void f_seremit() {
DROP(1);
}
+void f_random() {
+ TOP().i = random(TOP().i);
+}
+
void do_repl(char *exe) {
adlib_init();
@@ -89,6 +95,7 @@ void do_repl(char *exe) {
CDEF("key-debounce", kbd_debounce);
CDEF("key-pressed", f_keyWasPressed);
CDEF("key-down", f_keydown);
+ CDEF("rnd", f_random);
f_loadfile("jopl.jor");
ontick = f_lookupcp("ontick");
timer_setcallback(timer_callback);
@@ -145,6 +152,7 @@ void keything() {
}
int main(int argc, char *argv[]) {
// keything();
+ randomize();
do_repl(argv[0]);
return 0;
}
\ No newline at end of file
diff --git a/jopl.exe b/jopl.exe
index dd18bb1..97c6696 100755
Binary files a/jopl.exe and b/jopl.exe differ
diff --git a/jopl.jor b/jopl.jor
index ba523a7..ab40d3d 100755
--- a/jopl.jor
+++ b/jopl.jor
@@ -93,6 +93,11 @@ array semitones
fgetc ar-alg adlib!
close ;
+: rndbyte 256 rnd dup . ;
+: rndop rndbyte rndbyte rndbyte rndbyte rndbyte s" loadop " type loadop ;
+: rndinst s" op1 " type op1 rndop s" op2 " type op2 rndop
+ rndbyte s" ar-alg adlib! " type cr ar-alg adlib! ;
+
: panic 9 -1 for i voice ! noteoff next ;
var songticks
@@ -293,7 +298,8 @@ var stopkeys
: jamkeys
stoponesc voicekeys
' noteon onkeynote
- 41 key-pressed if noteoff then ;
+ 41 key-pressed if noteoff then
+ 88 key-pressed if rndinst then ;
: jam ' jamkeys dokeys ;
diff --git a/jopl.prj b/jopl.prj
index 19fab05..d34877d 100755
Binary files a/jopl.prj and b/jopl.prj differ
diff --git a/jorth.h b/jorth.h
index e5b1d87..79819a4 100755
--- a/jorth.h
+++ b/jorth.h
@@ -1,6 +1,6 @@
#include
-#define MEM_SIZE 16384
+#define MEM_SIZE 24576
#define STACK_SIZE 64
#define RSTACK_SIZE 64
diff --git a/petehous.jor b/petehous.jor
index c5c8ec6..20358ad 100755
--- a/petehous.jor
+++ b/petehous.jor
@@ -4,11 +4,14 @@
15 5 N ' {chair} defentity chair
7 6 N ' {pete-bed} defentity bed
10 9 N ' {phone} defentity e_phone
+18 3 N ' {fridge} defentity fridge
table :touch pete say" Yesterday's breakfast is still\on the table."
say" Maybe the day before's too." ;entity
chair :touch pete say" I've had my morning coffee\already." ;entity
bed :touch pete say" I'm not tired yet." ;entity
+fridge :touch pete say" Should get some more beer soon." ;entity
+
e_phone :touch phone :|
s" [don't pick up]"
@@ -75,7 +78,7 @@ done |; choose ;entity
:noname
reset-level
- :| table yield chair yield bed yield e_phone yield done |; ' entities redefine
+ :| table yield chair yield bed yield e_phone yield fridge yield done |; ' entities redefine
:|
touch-begin 16 10 2= dup if
move-player 12 8 pete.jor queue-level
@@ -85,8 +88,6 @@ then touch-next 11 4 2= dup if
pete say" I'm already dressed."
then touch-next 16 3 2= dup if
pete say" The sink's full of nasty dishes.\I'm not touching them."
-then touch-next 18 3 2= dup if
- pete say" Should get some more beer soon."
then touch-last |; ' player-touch redefine
s" petehous.map" load-map
diff --git a/petehous.map b/petehous.map
index 3f5c161..36e00ac 100755
Binary files a/petehous.map and b/petehous.map differ
diff --git a/sprite.gfx b/sprite.gfx
index 74cbaa6..6b3dd60 100755
Binary files a/sprite.gfx and b/sprite.gfx differ