REACTION 1K (V1.1)
by Anders Persson 2002
(https://www.boray.se --- )

For any VIC20 (unexpanded, expanded, PAL or NTSC).
It’s 100% Basic and written on a real VIC20.
Written for the Minigame Compo in 2002
(https://www.ffd2.com/minigame/).
File size: 1022 bytes.

This game (or program) measures your reactivity. You can
compete with yourself or with your friends to see who would fit
to be a gunfighter or test pilot (or a 90-year-old for that
matter. ;-) Or you could use it to check if your reactivity
gets worse when you have consumed some alcohol etc.

The program provides three different tests that appears
randomly,
1 - Visible: The screen goes from black to white.
2 - Audible: A sound starts to play.
3 - Visible and Audible together.

As soon as one of these three appears, you should simply press
fire on the joystick as fast as you can. The results are
represented separately for each type of test, with one last
value for the last test and one average value for each test
type. All figures are represented in seconds, so for example
.23333 means roughly 23/100 of a second. It’s quite interesting
to see if you react faster to one type of test compared to
another. After a while, the computer starts to give you
judgements of your ability. It can for example say "Normal",
"Fast" or "Drunk?". If you are really fast, it says stuff like
"Android" or "Superman". There are 15 of these levels. What
level to be displayed depends on the average of the three
averages of the different tests. This value is also displayed.
These levels are not scientific in any way, but just for fun.

Here are now all the levels:
0.00 to 0.11999 Time-Warp Speed
0.12 to 0.12999 Inside Warp Bubble
0.13 to 0.13999 Lightning
0.14 to 0.14999 Bullet
0.15 to 0.15999 Android
0.16 to 0.16999 Superman
0.17 to 0.17999 Gunfighter
0.18 to 0.18999 Test Pilot
0.19 to 0.19999 Fast
0.20 to 0.20999 Normal
0.21 to 0.21999 Tired
0.22 to 0.22999 Drunk?
0.23 to 0.23999 90-year-old
0.24 to 0.24999 Retard
0.25 to 9999999 Deaf and Blind

There is as you can see, 1/100 of a second between every level.
When I released V1.0 of this program I had reached the "Gunfighter"
judgement only once. Now I have even reached "Lightning" twice, and
"Bullet" many times. So it's clear that you can train to improve
your values. (Read futher down in the V1.1 upgrade notice).


Note: If you press fire before the next test has even
started, you will get one second penalty on all three tests.
This will probably degrade you to "Deaf and blind".

The testing goes on as long as you want... Then just press
run/stop and restart the program for the next person.

Emulator warning: I tried this program on VICE, and I always
got the judgement "Deaf and blind". It’s probably a bit slow on
handlig input as well as output, especially audio output. So
the figures won’t be right at all on VICE, not on my Pentium200
anyway... So a real VIC20 is very much prefered!!! It's
probably a must for exact values!!!

--

The V1.1 Upgrade includes:

* Bugfix: Due to an error in the VIC20 programmers reference
manual (by Commodore), the same random sequence was repeated
every time you restarted the computer. Here is a quote from
the manual about the RND() function: "The sequence is seeded
at random on power-up." This is not true. It gets the same
seed every time you power-up or reset.

* The keyboard support was removed to gain more space.
Programs like these are not very good for the keyboard
anyway. ;-)

* As I several times reached the "Android" level (the
highest level in V1.0), I thought it was a good idea to add
some new levels above it. I didn't want to alter the old levels
because it seems you can train to improve your reactivity.
I have gone through all the levels from "Normal" to
"Bullet" and twice I even reached the level "Lightning".
So I thought it would be sad if someone trying this
program for the first time would reach for example
"Deaf and blind" the first time they tried. That's why
I kept the old levels (and added more levels above them)
instead of recalibrating the old ones.

--

DON’T MISS my other VIC20 programs! You will find them at:
https://home.worldonline.se/boray/datormuseum/index.html
including my best game "Tribbles" for 8K VIC20 - A mix between
Lemmings and Pinball!!!

I also have one more VIC20 game in this 1K minigame compo:
"Omegan Trial".

Well, have fun!

Kind Regards,
Anders Persson
https://www.boray.se


--

Program listing: (Copyright (C) 2002 by Anders Persson)

0 b$(1)="visible:":b$(2)="audible:":b$(3)="both:":t= RND(-ti)
1 p=37139: POKE p, PEEK(p) AND 195:f=36879:l=36875: POKE f-1,15: POKE f,8
2 DIM a$(14): FOR t=0 TO 14: READ a$(t): NEXT :o=37137:k=32
5 PRINT "reaction v1.1": PRINT "by anders persson 2002https://www.boray.se"
6 FOR t=1 TO 3: PRINT "";b$(t): PRINT "last:";z(t): PRINT " avg:";x(t): NEXT 
7 IF NOT PEEK(o) AND k THEN 7
8 FOR s=1 TO 100: NEXT : IF NOT PEEK(o) AND k THEN 7
9 IF x(1)<>0 AND x(2)<>0 AND x(3)<>0 THEN 25
10 PRINT "when you see a change or hear a sound, pressfire as fast as you   can!";
11 FOR r=1 TO RND(1)*4000+300
12 IF NOT PEEK(o) AND k THEN z(3)=1:z(1)=1:z(2)=1: PRINT "not yet! penalty!": GOTO 22
13 NEXT 
14 s= INT( RND(1)*3)+1
15 IF s=1 OR s=3 THEN POKE f,25
16 IF s=2 OR s=3 THEN POKE l,210
17 g=ti
18 IF PEEK(o) AND k THEN 18
19 y=ti
20 z(s)=(y-g)/60: POKE l,0: POKE f,8
21 t(s)=t(s)+1:x(s)=((x(s)*(t(s)-1))+z(s))/t(s): GOTO 5
22 FOR s=1 TO 3:t(s)=t(s)+1:x(s)=((x(s)*(t(s)-1))+z(s))/t(s): NEXT : GOTO 6
23 DATA time-warp speed,inside warp bubble,lightning,bullet,android,superman
24 DATA gunfighter,test pilot,fast,normal,tired,drunk?,90 year old,retard,deaf and blind
25 e=(x(1)+x(2)+x(3))/3: PRINT "your status:": PRINT e:e=e*100-11: IF e<0 THEN e=0
26 IF e>14 THEN e=14
27 PRINT a$(e): GOTO 11

---------
Was that all? ;-)