scene.org File Archive

File download

<root>­/­demos­/­compos­/­minigame02­/­game/vic20.zip

File size:
17 318 bytes (16.91K)
File date:
2018-02-04 06:37:22
Download count:
all-time: 86

Preview

  • OmeganTrial.txt 3.70K
  • othello.txt 2.12K
  • reaction1k.txt 5.71K
  • readme.txt 1.89K
  • vic20.d64 170.75K
  • viq-bert.txt 2.35K
  • zapactris.txt 2.06K

file_id.diz

*** THE OMEGAN TRIAL ***
by Anders Persson 2002
(http://listen.to/boray --- boray@alfa.telenordia.se)

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

The Omegan system is famous for its way of training its
warriors using android controlled fighters (code named
"Omega Race"). However - first the cadets have to go
through the "Omegan Trial".

The "Omegan Trial" is a test with non-moving targets. You
pilote the never resting "Omegan Spider", the most feared
droid controlled craft used in Omega Race. Because of its
extensive shielding, it's safe for beginners. Your mission
is to hit the star ("*"), but there are also other obstacles
you must avoid. If you hit one of these obstacles, you will
loose 10% of the shield (of the total shield). So try to
hit ONLY the star. For every new level, there will be more
obstacles. The "Omegan Spider" is a craft that's hard to
control. You can only control it when it's bouncing back
and forth closest to the ground. So aim (while moving) and
press "engage" (any key) and the craft is thrown away to
bounce on the walls and to then return to ground level.

Now, are you ready for the trial? If you reach above
level 16, then you did a good job.


DON’T MISS my other VIC20 programs! You will find them at:
http://home.worldonline.se/boray/datormuseum/vic20software.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:
"Reaction 1K".

Well, have fun!

Kind Regards,
Anders Persson
http://listen.to/boray
boray@alfa.telenordia.se

--

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

0 q(0)=64:q(1)=77:q(2)=66:q(3)=78:o=0:s=10:m=22:j=255
1 q=4096:i=33792: IF PEEK(44)=16 THEN q=7680:i=30720
3 w=q-1:u=q+m:y=q+483:l=36875: POKE l+3,15: POKE l+4,10:f=l+2
4 PRINT "     omegan trial": PRINT "by anders persson 2002http://listen.to/boray"
6 PRINT "try to hit the *, but only the *! use anykeyto jump.": GOSUB 35
8 o=o+1: PRINT "get ready for level";o: PRINT "shield:";s*10;"%": GOSUB 35
9 FOR t=128 TO 245: POKE l,t: POKE l,j-t: NEXT : POKE l,0: GOSUB 40: IF n=0 THEN n= RND(-ti)
12 PRINT "":z= INT( RND(1)*2)+2:k= INT( RND(1)*60)+193
13 FOR t=1 TO o:v= INT( RND(1)*480)+q: POKE v+i,z+ INT( RND(1)*3)*2: POKE v,k: NEXT :b=y+5:c=1: GOSUB 34
16 e= INT( RND(1)*438)+q: IF PEEK(e)=k THEN 16
17 POKE e,42
18 GET a$: IF a$<>"" THEN IF b>y THEN c=c-m
19 POKE b,32:b=b+c: IF PEEK(b)<>32 THEN 25
20 POKE b,q(x):x=(x+1) AND 3: IF b>y THEN IF c>1 THEN c=c-m
21 IF b<u THEN c=c+44
22 r=(b-q)/m: IF r= INT(r) THEN c=c+2
23 r=(b-w)/m: IF r= INT(r) THEN c=c-2
24 GOTO 18
25 IF e=b THEN 4
26 POKE f,234:s=s-1: POKE f,0: IF s=0 THEN 28
27 GOTO 20
28 PRINT "";: GOSUB 35
29 PRINT "game over!": PRINT "you reached level";o: PRINT : GOSUB 35
30 FOR t=0 TO j: POKE l,t: POKE l,j-t: POKE f,j-t: POKE f,t: NEXT : POKE f,0: GOSUB 40: RUN 
34 FOR t=j TO 100 STEP -1: POKE l,t: POKE l,j-t: NEXT : POKE l,0: RETURN
35 PRINT "CCCCFRFCCFCC": RETURN
40 : PRINT "press any key.";
42 GET a$: IF a$="" THEN 42
44 RETURN

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

Technical note: Setting the random seed to -ti ( X=RND(-TI) ) the
first thing you do in a program still gives the same random
sequence every time in the VICE emulator if you started the
program with "File/Autostart disk/tape image" just because it
takes exactly the same time to load and start the program every
time. I solved this by putting it in after the first time where
the program waited for the user to press any key. (Line 9). This
is just a fix for VICE. On a real VIC20 it will never take exacly
the same time to start the computer, load the program and
run it....

---Othello (v1.1) for the unexpanded VIC-20
---------------------------------------- 
(c) 2002 Anders Carlsson [Zapac] <anders.carlsson@mds.mdh.se>

This game is part of the Minigame Compo (http://www.ffd2.com/minigame/). It
is written in machine code, and the source will be available as soon as the 
competition deadline has passed (september 2002).

The game plays Othello on an oversized board (14x14 instead of 8x8). So far,
the best score the author has achieved is 167 - 29, i.e. 85% of the board.
A (VICE) screenshot of that game is submitted with this package.

Controls
--------
Move the cursor with keys U N H J as they are positioned on the real VIC-20
keyboard. Use space bar to make your move. An illegal move is greeted with 
a rather high pitched beep. Press 'S' to skip a move.

Computer
--------
The computer algorithm was based upon a Basic listing(1) by Graham Charlton 
and Tim Hartnell. The machine code conversion both is faster and uses less
memory than the original routine. The algorithm is quite brute-force, has
no look-ahead but will evaluate positions close to borders and corners a
little more. The game could also be modified to play against itself.

(1) from "Spela VIC", a combined and translated edition of the two books 
    "Symphony for a Melancoly Computer" and "Zap, Pow, Boom!" from 1983.

Memory usage
------------
The executable is 1014 bytes plus loading address, which means it will fit
within 4 blocks on a standard 1541 disk. Of the 1014 bytes, 18 are workspace
data. The game uses 16-bit zeropage pointers for indexing the screen, which
by the way is 16 column wide and easilly addressed with four ASLs. Due to
differences between VICE's emulation and a real VIC, I had to submit a bug
fixed and prettified version (1.1) which is the preferred one.

Bugs
----
The computer will skip a move if it doesn't find a valid one. However, it 
occasionally may skip for no particular reason which means you get to do two 
moves in a row. If you're also unable to move, skipping your move in this
scenario will end the game.

Future improvements
-------------------
Joystick support (if I could get it to work and fit within 1024 bytes).



REACTION 1K (V1.1)
by Anders Persson 2002
(http://listen.to/boray --- boray@alfa.telenordia.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
(http://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:
http://home.worldonline.se/boray/datormuseum/vic20software.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
http://listen.to/boray
boray@alfa.telenordia.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 2002http://listen.to/boray"
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? ;-)Commodore VIC-20


All the games are in a single D64 disk image. The games are for the
unexpanded VIC-20, so disable any expansion memory before starting the
games. Some games requires a joystick plugged into port 1.


Windows

  The recommended emulator is VICE,

    http://viceteam.bei.t-online.de/

  Unpack it to a directory and start xvic.exe. Select Settings -> VIC
  Settings... in the menu, and then choose "no expansion memory".
  Select File -> Autostart disk/tape image... in the menu. Select the
  D64 image, then doubleclick on a game to start it. If joystick
  emulation isn't enabled by default, enable it in Settings ->
  Joystick settings.


Unix

  The recommended emulator is VICE,

    http://viceteam.bei.t-online.de/

  Unpack and compile with ./configure && make install, then start
  xvic. Select Settings -> VIC Settings... in the menu, and then
  choose "no expansion memory". Select File -> Autostart disk/tape
  image... in the menu. Select the D64 image, then doubleclick on a
  game to start it. If joystick emulation isn't enabled by default,
  enable it in Settings -> Joystick settings.


MacOS

  The recommended emulator is Power20,

    http://emulation.net/vic20/

  Start Power20 then drag and drop the D64 onto the Power20 window.
  Double click on a game name to start it.


Amiga

  The recommended emulator is vic-emu,

    http://wuarchive.wustl.edu/~aminet/misc/emu/vicV0.65.lha

  You will also need und64 from Aminet:

    http://wuarchive.wustl.edu/~aminet/misc/emu/und64.lha

  (Or you can download the zipped .PRG files from the competition
  website.) First copy und64 to the C dir of your SYS: partition. Then
  extract the .PRG files from the .D64 file with this CLI/Shell
  command:

    und64 x vic20.d64

  Run the emulator (vic-20). Type LOAD and press return. Select a game
  in the file requester. Type RUN and press return. All games should
  work fine except for Bombwormie.
VIQ-Bert (v1.1) for the unexpanded VIC-20
----------------------------------
(c) 2002 Anders Carlsson [Zapac] <anders.carlsson@mds.mdh.se>

This game is part of the Minigame Compo (http://www.ffd2.com/minigame/). It 
is written in machine code, and the source will be available as soon as the 
competition deadline has passed (september 2002).

The game is a clone of Parker Brothers' Q*Bert (1984). The author is aware
of a few VIC-20 versions, of which the official release may be one of the 
ugliest! As the 3D view always has fascinated gamers (see DOOM), I wrote my 
own Q*Bert in Basic a few years ago. This machine code conversion is faster
and 40% smaller than the Basic version prior to running it...

Controls
--------
Move your man with keys U N H J as they are positioned on the real VIC-20
keyboard. If you hit the enemy (ball) or jump outside the pyramid, you lose
a life and begin at top of the playfield.

Levels
------
First level is simple; colour each square once. On second level, you have to
colour each square twice. On every odd level starting with the third level, 
you will erase the colour if you jump on a finished square. The fourth level
introduces a third step of colouring, and the final fifth level will require
three jumps and the risk of resetting the square to black again...

Computer
--------
The enemy ball will move in what may look like erratic patterns. Each time
its counter is reset, it will calculate what squares it can move to and
randomly select one of those. Unlike the real Q*Bert, the ball will never
reset the colour on a square.

Memory usage
------------
The executable is 1010 bytes plus loading address and fits within 4 blocks 
on a standard 1541 disk. Of the 1004 bytes, 20 are workspace data and 48
are UDGs used together with a slightly modified copy of the ROM font. The 
playfield is drawn with a four layer loop and due to indexing restrictions, 
a player outside the playfield will never be displayed.

Fixed bugs
----------
v1.1: Due to wrap-around effects when using indexing registers, there existed 
      a position on the board where you could cheat and jump into the middle 
      of an other square. By adjusting index offsets, this position no longer 
      will wrap and thus the bug should be fixed without altering file size.

Future improvements
-------------------
Joystick support, although it would break the 1K limit.





Zapactris for the unexpanded VIC-20
-----------------------------------
(c) 2002 Anders Carlsson [Zapac] <anders.carlsson@mds.mdh.se>

This game is part of the Minigame Compo (http://www.ffd2.com/minigame/). It
is written in machine code, and the source will be available as soon as the 
competition deadline has passed (september 2002).

Zapactris is an yati (i.e. Yet Another Tetris Implementation) which runs on
the VIC-20. So far, the author hasn't seen a single Tetris clone on the VIC
which is part of the reason this one was written. This project was started
in Januari 2000 but was rewritten from scratch in August 2002.

Controls
--------
Use a joystick! Finally I got an clue how to write such routines without
using too much memory. Fire button rotates piece, pull down to drop it. Be
careful not to keep the stick down too long, as a subsequent piece then may
be unvoluntarily.

Scoring
-------
Only full lines are counted (and removed with some awful graphic effects,
but then I'm the *musician* in VVV/VIMM, not graphic artist or coder). You
get no particular bonus for removing multiple lines, other than the pause
it takes to clean them off screen. The game will in four stages play faster 
and faster, but the fastest speed should still be reasonably playable.

Memory usage
------------
The executable is 1004 bytes plus loading address. It uses a fair amount of
the zeropage, and you may better detach any RS-232 equipment from your VIC
as some of the used space is RS-232 pointers.

To distinguish between the previous pieces and the current one, the latter
actually is background white but with multicolour attribute set. Not until
it reaches its destination the colour is actually stored in memory.

Bugs
----
When using Basic/Kernal routines for RND, multiplication etc there was a
spurious "?OVERFLOW ERROR" from time to time, which is why the game only
reads the system clock to generate crude pseudo random. This error should
not happen on the released version.

Notice that the 'next' piece displayed when the game is ended will be your
first piece on the next game you play.