*** 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 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] 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] 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.