knowing how short my memory is, I saved all my professional life memories in a folder on my HD. Some of those memories are meaningful only to me, but why not sharing my first, completed game (yeahh it was 1997…I think) ?
The version I am linking is actually the second version of the really original one. Both are a remix of Puyo Puyo, game that I loved to play when I used to play with the arcade games in my city, Palermo.
This game had another very important feature, was not implementing any scrolling, a technique that I did not know how to implement at that time :).
The game presented some new features (like special bubbles, when played in special mode) and a nice AI. The language used, Pascal, was the language that I was learning at the high school. Turbo Pascal was the compiler and the source code was also featuring a lot of 16 bit inline assembly 🙂
The game was developed by me and a friend of mine with an astonishing 386DX 40mhz and a 286 16mhz with 20mb of hard disk :D.
Pascal source example:
PROCEDURE CADIPIETRE(PLAYER:GIOCATORI);
VAR
INDX,I:BYTE;
INDY,J:SHORTINT;
X,Y:WORD;
BEGIN
X:=STARTX[PLAYER]+1;
FACENDOSTO[PLAYER]:=NORMALING;
FOR I:=1 TO 6 DO
BEGIN
IF (PIETREBUFF[PLAYER][I]<>0) AND (HIGHNOW[PLAYER][I]>=0) THEN
BEGIN
IF HIGHNOW[PLAYER][I]-PIETREBUFF[PLAYER][I]=43 THEN TOSCREEN(X,Y-16,X+18,Y,FISSO);
COPYPUTSCR(X,Y,FRAME[PIETRA][0],0,FISSO);
TOPOINTER(X,Y,X+18,Y+16,FISSO);
INC(INDPIETRE[PLAYER]);
TABPIETRE[PLAYER][INDPIETRE[PLAYER]].INDX:=X-1;
TABPIETRE[PLAYER][INDPIETRE[PLAYER]].INDY:=((J-1) SHL 4)+27;
TABPIETRE[PLAYER][INDPIETRE[PLAYER]].TIPO:=0;
END;
DEC(HIGHNOW[PLAYER][I],PIETREBUFF[PLAYER][I]);
PIETREBUFF[PLAYER][I]:=0;
END
ELSE
BEGIN
INC(COORDPBUFF[PLAYER][I],16);
Y:=COORDPBUFF[PLAYER][I];
IF Y>=43 THEN TOSCREEN(X,Y-16,X+18,Y,FISSO);
FOR J:=0 TO PIETREBUFF[PLAYER][I]-1 DO
BEGIN
IF Y>=27 THEN COPYPUTSCR(X,Y,FRAME[PIETRA][0],0,FISSO);
INC(Y,16)
END;
FACENDOSTO[PLAYER]:=CADETING;
END;
END;
INC(X,18);
END;
END;
assembly source example:
PROCEDURE FASTPUTSCR(X1,Y1:WORD;VAR CAPT:ARRAY OF BYTE);ASSEMBLER;
ASM
MOV DI,X1 {MUOVO IN DI X1}
MOV AX,Y1 {MUOVO IN AX Y1}
XCHG AH,AL {MOLTIPLICO AX*256}
ADD DI,AX {SOMMO A X Y*256}
SHR AX,2 {DIVIDO AX 4 FA 64 E SI PUO' SOMMARE}
ADD DI,AX {A X}
PUSH DS
LDS SI,CAPT
MOV AX,0A000H
MOV ES,AX
MOV DX,320
INC SI
MOV AL,[SI]
XOR AH,AH
SUB DX,AX
INC SI
MOV BL,[SI]
INC SI
@Ciclo2:
MOV CX,AX
SHR CX,1
REP MOVSW
ADC CX,CX
REP MOVSB
ADD DI,DX
DEC BL
JNZ @Ciclo2
POP DS
END;
one screen shot:
powered by dosbox and I can say..it is still fun 🙂


Hey, just to remind you that the Google Doc link is forbidden.
tested and works fine