← Timeline
1998–2001 · BASIC, Pascal & olympiads

DiVision games

The smaller games I made between the big ones (Tank, Space War, Lamer-Killer, Doom RF), in Turbo Pascal and later Free Pascal. Most of them were written for the school programming contest, and all of them still run in DOSBox.

Turbo PascalBGIText mode

Programs

Gonki 1998

A text-mode race: a winding road drawn straight into video memory, rival cars, and you lose speed when you touch the walls.

Tank 2 1998

The second Tank, now in 640×480 graphics: a vector tank rotated by sine and cosine, momentum and wall bounces, random rooms with more walls each time, and an upgrade shop for the bumper, motor, wheels, brakes and steering. Only the source survived.

Arkanoid 1999

Bricks with up to four hits, falling power-ups (wide, normal or small paddle, slower or faster ball) and a bounce angle that depends on where the ball hits the paddle. Mouse control.

Dzīvnieks 1999

Guess the animal, with an idea from the magazine Nauka i Zhizn: the program asks yes/no questions, and when it loses it asks who it was and what question tells the two apart, then saves the new branch of its tree. In the video it learns a dog and recognises it in the very next round. If you name an animal it already knows, it says you are playing unfairly.

RTS 1999

A real-time strategy test: a hundred units a side, rubber-band selection with Shift to add, click an enemy to attack, automatic fire in range, a minimap and edge scrolling, plus buildings with costs and energy. A map editor next to it.

Mine Explorer 1999

My last text-mode game, made quickly in June 1999: a maze in fog where you only see the cells next to you, with mines, walls and points, missions chained into playlists, a level editor, and every win saved as a replay. The video is one of those replays.

Capture or Destroy 1999

An RTS at 800×600 in 256 colours, built in the autumn of 1999: units assembled from a platform, a body and a turret, each a 32×32 sprite, terrain with water, land and shore, ownership of cells and a minimap.

Original source code

TONEL.PAS
PROGRAM TOHKI;
USES CRT,GRAPH;
VAR
  c,A,B,x,y:INTEGER;
  q:string;
  i,j,p:word;
  x1:array[1..96]of integer;
  y1:array[1..96]of integer;
BEGIN
  randomize;
  A:=DETECT;
  INITGRAPH(A,B,'A:\PASKAL\GRAFIKA');
  x:=320;
  y:=280;
  for i:=1 to 48 do x1[i]:=0;
  for i:=48 to 96 do x1[i]:=640;
  for i:=1 to 48 do y1[i]:=i*10-5;
  for i:=48 to 96 do y1[i]:=i*10-485;
  setbkcolor(4);
  repeat
    SETCOLOR(15);
    circle(600,100,10);
    for i:=1 to 96 do line(x,y,x1[i],y1[i]);
    q:=readkey;
    if (q=#72) or(q=#77)or(q=#80)or(q=#75) then begin
    SETCOLOR(0);
    for i:=1 to 96 do line(x,y,x1[i],y1[i]);
    if q=#72 then y:=y-10;
    if q=#77 then x:=x+10;
    if q=#80 then y:=y+10;
    if q=#75 then x:=x-10;
    end;
    if q=#32 then begin
      for i:=1 to round(x/2) do  begin
       p:=1;
       setcolor(14);
       sector(i*2,y,0,359,round((320-i)/10),round((320-i)/60));
       setcolor(4);
       sector(i*2,y,0,359,round((320-i)/10),round((320-i)/60));
     end;
     c:=random(5);
     for j:=1 to c+1 do begin
        setcolor(14);
        a:=random(100);
        b:=random(20);
        for i:=1 to a do begin circle(x+b,y+b,i);
            sound(i+10);
        end;
        nosound;
        setcolor(4);
        for i:=a downto 50 do begin
           circle(x+b,y+b,i);
           SOUND(I+100);
         end;
      end;
     for i:=1 to a do begin circle(x+b,y+b,i);
            sound(i+100);
        end;
      NOSOUND;
    end;
    if (x<610)and(x>590)and(p=1) then begin
      settextstyle(0,0,9); setcolor(2); setusercharsize(2000,100,2000,100);
       if (y>90)and(y<110)then begin
         outtextxy(20,220,'You  win');
         delay(1000); halt(1);
       end;
    end;
  p:=0;
  until q=#27;

END.

January 1998, Turbo Pascal: the tunnel shooter I brought to my first school contest. 96 lines from your point to the screen edges draw a tunnel; the arrows move the point, Space fires a shot and explosions with PC-speaker sound, and hitting the white circle wins.