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:
Link to the game: https://docs.google.com/open?id=0B3zwSfMivwvBNmNxYVJGcmwtR0k
powered by dosbox and I can say..it is still fun 🙂
Edit: Unluckily it seems like dosbox does not support very well all the powerful code behind this game and it crashes while playing the second level. If you know other good DOS emulators, please let me know.


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