News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_Fabrizio Radica

Simple Engine Game in Basic

Started by Fabrizio Radica, 15:48, 29 July 16

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Fabrizio Radica

Hi All,
I'm Fabrizio from Italy and i loved Amstrad from the 80s
i had (and now i have again) an CPC6128

In real life i'm a game developer (unity/obj-c/swift etc etc)

I've made a simple "game" for you and include:

- Move a sprite (char)
- Collisions
- TileMaps

This code is not optimized but only for didactic purpose :)
In near future i would like to use ASM.

Sorry for my bad english.

simple version


10 'A (simple) GAME Routine BY FABRIZIO RADICA - 2016 Retroacademy.it
100 mode 0: 'PRINT CHR$(22)+CHR$(1) 'mode 0 ed attiva la trasparenza
110 cls: border 0: ink 0,0
150 maxAr%=20: SYMBOL AFTER 240
160 SYMBOL 245,&X01011010,&X00010101,&X11000100,&X11011011,&X00100110,&X01101000,&X01011011,&X11101001
165 SYMBOL 246,&X00010000,&X00000001,&X00001000,&X01010010,&X01000010,&X00001000,&X00010001,&X01000001
166 SYMBOL 247,&X00111000,&X01111110,&X11111011,&X11111111,&X11111111,&X11111111,&X11111111,&X00111100


200 DIM map%(20,20)
250 LOCATE 1,22 : print "Loading..."
300 FOR y%=1 TO 20 'GENERO LA MAPPA DEL LIVELLO LEGGENDO I DATA
400 FOR x%=1 TO 20
500 READ map%(y%,x%)
550 if map%(y%,x%)=0 then locate x%,y%: pen 8: print chr$(246)
600 if map%(y%,x%)=9 then locate x%,y%: pen 6: print chr$(245)
610 if map%(y%,x%)=2 then locate x%,y%: pen 1: print chr$(247)
640 NEXT x%
650 NEXT y%
660 x%=10:y%=8:v%=1:sc%=0:p%=0
670 SYMBOL 240,&X00011000,&X00111100,&X01111110,&X11011011,&X01111110,&X01100110,&X11011011,&X10000001
700 print " " : print "RetroAcademy." : LOCATE 1,22 : print "Score         "
740 LOCATE x%,y%: pen 3: PRINT CHR$(240)
750 IF map%(y%,x%)=2 THEN map%(y%,x%)=0 : sc%=sc%+1 : locate 6,22 : print " ";sc% :sound 2,100,8,10,1,1
780 IF NOT(INKEY() AND map%(y%,x%-v%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):x%=x%-1:sound 1,200,1
800 IF NOT(INKEY(1)) AND map%(y%,x%+v%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):x%=x%+1:sound 1,300,1
850 IF NOT(INKEY(0)) AND map%(y%-v%,x%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):y%=y%-1:sound 1,50,1
880 IF NOT(INKEY(2)) AND map%(y%+v%,x%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):y%=y%+1:sound 1,100,1
950 CALL &BD19
990 GOTO 740


1000 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
1100 DATA 9,0,0,0,0,0,0,0,0,9,9,9,9,9,0,0,0,9,9,9
1200 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
1300 DATA 9,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,0,0,9
1400 DATA 9,9,9,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9
1500 DATA 9,0,0,9,9,0,0,0,0,9,9,9,9,9,0,0,9,9,9,9
1600 DATA 9,0,0,0,0,0,0,0,0,9,9,9,9,9,0,0,9,9,9,9
1700 DATA 9,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,9
1800 DATA 9,0,0,0,9,9,9,9,2,0,0,0,0,0,0,0,0,0,0,9
1900 DATA 9,9,9,9,9,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9
2000 DATA 9,9,9,9,9,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9
2100 DATA 9,0,0,0,0,2,9,9,9,9,0,9,9,9,0,0,0,9,9,9
2200 DATA 9,0,0,0,9,0,0,0,0,0,0,0,0,2,0,0,0,0,0,9
2300 DATA 9,0,9,9,9,9,0,0,0,9,9,9,9,0,0,0,0,0,0,9
2400 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
2500 DATA 9,0,0,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9,9,9
2600 DATA 9,0,0,0,0,0,9,0,0,9,9,9,9,9,0,0,9,9,9,9
2700 DATA 9,9,9,0,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,9
2800 DATA 9,9,9,0,0,2,0,0,0,0,0,2,0,0,2,2,0,0,0,9
2900 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9



HERE Multicolor version :D

10 'A (simple) GAME Routine BY FABRIZIO RADICA - 2016 Retroacademy.it
100 mode 0: PRINT CHR$(22)+CHR$(1) 'mode 0 ed attiva la trasparenza
110 cls: border 0: ink 0,0
150 maxAr%=20: SYMBOL AFTER 240
160 SYMBOL 245,&X01011010,&X00010101,&X11000100,&X11011011,&X00100110,&X01101000,&X01011011,&X11101001
165 SYMBOL 246,&X00010000,&X00000001,&X00001000,&X01010010,&X01000010,&X00001000,&X00010001,&X01000001
166 SYMBOL 247,&X00111000,&X01111110,&X11111011,&X11111111,&X11111111,&X11111111,&X11111111,&X00111100
168 SYMBOL 248,&X10000111,&X01010100,&X10000010,&X01001000,&X10010011,&X01100011,&X10100100,&X00011100
160 SYMBOL 249,&X00000000,&X00000000,&X00011100,&X00000100,&X00000000,&X00000000,&X00000000,&X00000000


200 DIM map%(20,20)
250 LOCATE 1,22 : print "Loading..." :PRINT CHR$(22)+CHR$(1)
300 FOR y%=1 TO 20 'GENERO LA MAPPA DEL LIVELLO LEGGENDO I DATA
400 FOR x%=1 TO 20
500 READ map%(y%,x%)
550 if map%(y%,x%)=0 then locate x%,y%: pen 8: print chr$(246)
600 if map%(y%,x%)=9 then locate x%,y%: pen 9: print chr$(245):locate x%,y%: pen 12: print chr$(248)
610 if map%(y%,x%)=2 then locate x%,y%: pen 7: print chr$(247):locate x%,y%: pen 4: print chr$(249)
640 NEXT x%
650 NEXT y%
660 x%=10:y%=8:v%=1:sc%=0:p%=0: PRINT CHR$(22)+CHR$(0)
670 SYMBOL 240,&X00011000,&X00111100,&X01111110,&X11011011,&X01111110,&X01100110,&X11011011,&X10000001
700 print " " : print "RetroAcademy." : LOCATE 1,22 : print "Score         "
740 LOCATE x%,y%: pen 3: PRINT CHR$(240)
750 IF map%(y%,x%)=2 THEN map%(y%,x%)=0 : sc%=sc%+1 : locate 6,22 : print " ";sc% :sound 2,100,8,10,1,1
780 IF NOT(INKEY() AND map%(y%,x%-v%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):x%=x%-1:sound 1,200,1
800 IF NOT(INKEY(1)) AND map%(y%,x%+v%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):x%=x%+1:sound 1,300,1
850 IF NOT(INKEY(0)) AND map%(y%-v%,x%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):y%=y%-1:sound 1,50,1
880 IF NOT(INKEY(2)) AND map%(y%+v%,x%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):y%=y%+1:sound 1,100,1
950 CALL &BD19
990 GOTO 740


1000 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
1100 DATA 9,0,0,0,0,0,0,0,0,9,9,9,9,9,0,0,0,9,9,9
1200 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
1300 DATA 9,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,0,0,9
1400 DATA 9,9,9,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9
1500 DATA 9,0,0,9,9,0,0,0,0,9,9,9,9,9,0,0,9,9,9,9
1600 DATA 9,0,0,0,0,0,0,0,0,9,9,9,9,9,0,0,9,9,9,9
1700 DATA 9,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,9
1800 DATA 9,0,0,0,9,9,9,9,2,0,0,0,0,0,0,0,0,0,0,9
1900 DATA 9,9,9,9,9,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9
2000 DATA 9,9,9,9,9,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9
2100 DATA 9,0,0,0,0,2,9,9,9,9,0,9,9,9,0,0,0,9,9,9
2200 DATA 9,0,0,0,9,0,0,0,0,0,0,0,0,2,0,0,0,0,0,9
2300 DATA 9,0,9,9,9,9,0,0,0,9,9,9,9,0,0,0,0,0,0,9
2400 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
2500 DATA 9,0,0,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9,9,9
2600 DATA 9,0,0,0,0,0,9,0,0,9,9,9,9,9,0,0,9,9,9,9
2700 DATA 9,9,9,0,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,9
2800 DATA 9,9,9,0,0,2,0,0,0,0,0,2,0,0,2,2,0,0,0,9
2900 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9



and... a simple multi level routine :)



10 'A (simple) GAME Routine BY FABRIZIO RADICA - 2016 Retroacademy.it
100 mode 0: PRINT CHR$(22)+CHR$(1) 'mode 0 ed attiva la trasparenza
110 cls: border 0: ink 0,0
150 maxAr%=20: lev%=0: SYMBOL AFTER 240
160 SYMBOL 245,&X01011010,&X00010101,&X11000100,&X11011011,&X00100110,&X01101000,&X01011011,&X11101001
165 SYMBOL 246,&X00010000,&X00000001,&X00001000,&X01010010,&X01000010,&X00001000,&X00010001,&X01000001
166 SYMBOL 247,&X00111000,&X01111110,&X11111011,&X11111111,&X11111111,&X11111111,&X11111111,&X00111100
168 SYMBOL 248,&X10000111,&X01010100,&X10000010,&X01001000,&X10010011,&X01100011,&X10100100,&X00011100
160 SYMBOL 249,&X00000000,&X00000000,&X00011100,&X00000100,&X00000000,&X00000000,&X00000000,&X00000000


200 DIM map%(20,20)
250 LOCATE 1,22 : print "Loading." :PRINT CHR$(22)+CHR$(1)
280 lev%=lev%+1
290 if (lev%>=2) THEN lev%=0 : restore 1000
300 FOR y%=1 TO 20 'GENERO LA MAPPA DEL LIVELLO LEGGENDO I DATA
400 FOR x%=1 TO 20
500 READ map%(y%,x%)
550 if map%(y%,x%)=0 then locate x%,y%: pen 8: print chr$(246)
600 if map%(y%,x%)=9 then locate x%,y%: pen 9: print chr$(245):locate x%,y%: pen 12: print chr$(248)
610 if map%(y%,x%)=2 then locate x%,y%: pen 7: print chr$(247):locate x%,y%: pen 4: print chr$(249)
640 NEXT x%
650 NEXT y%
660 x%=10:y%=8:v%=1:sc%=0:p%=0: PRINT CHR$(22)+CHR$(0)
670 SYMBOL 240,&X00011000,&X00111100,&X01111110,&X11011011,&X01111110,&X01100110,&X11011011,&X10000001
680 SYMBOL 250,&X00000000,&X00000000,&X00000000,&X00100100,&X00000000,&X00000000,&X00000000,&X00000000
700 print " " : print "RetroAcademy." : LOCATE 1,22 : print "Score    "
740 LOCATE x%,y%: pen 3: PRINT CHR$(240)
750 IF map%(y%,x%)=2 THEN map%(y%,x%)=0 : sc%=sc%+1 : locate 6,22 : print " ";sc% :sound 2,100,8,10,1,1
780 IF NOT(INKEY() AND map%(y%,x%-v%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):x%=x%-1:sound 1,200,1
800 IF NOT(INKEY(1)) AND map%(y%,x%+v%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):x%=x%+1:sound 1,300,1
850 IF NOT(INKEY(0)) AND map%(y%-v%,x%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):y%=y%-1:sound 1,50,1
880 IF NOT(INKEY(2)) AND map%(y%+v%,x%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):y%=y%+1:sound 1,100,1
900 if sc%>=9 then cls: goto 250
950 CALL &BD19
990 GOTO 740


1000 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
1100 DATA 9,0,0,0,0,0,0,0,0,9,9,9,9,9,0,0,0,9,9,9
1200 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
1300 DATA 9,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,0,0,9
1400 DATA 9,9,9,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9
1500 DATA 9,0,0,9,9,0,0,0,0,9,9,9,9,9,0,0,9,9,9,9
1600 DATA 9,0,0,0,0,0,0,0,0,9,9,9,9,9,0,0,9,9,9,9
1700 DATA 9,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,9
1800 DATA 9,0,0,0,9,9,9,9,2,0,0,0,0,0,0,0,0,0,0,9
1900 DATA 9,0,9,9,9,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9
2000 DATA 9,0,9,9,9,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9
2100 DATA 9,0,0,0,0,2,9,9,9,9,0,9,9,9,0,0,0,9,9,9
2200 DATA 9,0,0,0,9,0,0,0,0,0,0,0,0,2,0,0,0,0,0,9
2300 DATA 9,0,9,9,9,9,0,0,0,9,9,9,9,0,0,0,0,0,0,9
2400 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
2500 DATA 9,0,0,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9,9,9
2600 DATA 9,0,0,0,0,0,9,0,0,9,9,9,9,9,0,0,9,9,9,9
2700 DATA 9,9,9,0,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,9
2800 DATA 9,9,9,0,0,2,0,0,0,0,0,2,0,0,2,2,0,0,0,9
2900 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9




3000 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
3100 DATA 9,0,0,0,0,0,0,0,0,9,9,9,9,9,2,0,0,9,9,9
3200 DATA 9,0,0,0,0,9,9,9,0,0,0,0,0,0,0,0,0,0,0,9
3300 DATA 9,2,0,0,9,9,0,0,0,0,0,9,9,9,9,9,9,0,0,9
3400 DATA 9,9,9,9,9,0,0,0,0,9,0,0,0,0,0,0,0,0,0,9
3500 DATA 9,0,0,0,0,0,0,0,0,9,9,0,0,9,0,0,9,9,9,9
3600 DATA 9,0,0,0,0,0,0,0,0,9,9,0,0,9,0,0,9,9,9,9
3700 DATA 9,0,0,0,9,9,0,0,0,0,0,0,0,9,0,0,0,0,0,9
3800 DATA 9,0,0,0,9,9,9,9,2,0,0,0,0,9,0,0,0,0,2,9
3900 DATA 9,0,9,9,9,9,9,9,9,0,0,9,0,0,0,0,9,9,9,9
4000 DATA 9,0,9,9,9,9,9,9,9,0,0,9,2,0,0,0,9,9,9,9
4100 DATA 9,0,0,0,0,2,9,9,9,9,0,9,9,0,0,0,0,9,9,9
4200 DATA 9,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9
4300 DATA 9,0,9,9,9,9,0,0,0,9,9,9,9,0,0,0,0,0,0,9
4400 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
4500 DATA 9,0,0,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9,9,9
4600 DATA 9,0,0,0,0,0,9,0,0,9,9,9,9,9,0,0,9,9,9,9
4700 DATA 9,0,9,0,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,9
4800 DATA 9,2,9,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,9
4900 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9




Minor bugfix and minor speedup
Caching char$ and player (line 180 - 185)



10 'A (simple) GAME Routine BY FABRIZIO RADICA - 2016 Retroacademy.it
100 DEFINT A-Z : mode 0: PRINT CHR$(22)+CHR$(1) 'mode 0 ed attiva la trasparenza
110 cls: border 0: ink 0,0
150 maxAr=20: lev=0: SYMBOL AFTER 240
160 SYMBOL 245,&X01011010,&X00010101,&X11000100,&X11011011,&X00100110,&X01101000,&X01011011,&X11101001
165 SYMBOL 246,&X00010000,&X00000001,&X00001000,&X01010010,&X01000010,&X00001000,&X00010001,&X01000001
166 SYMBOL 247,&X00111000,&X01111110,&X11111011,&X11111111,&X11111111,&X11111111,&X11111111,&X00111100
168 SYMBOL 248,&X10000111,&X01010100,&X10000010,&X01001000,&X10010011,&X01100011,&X10100100,&X00011100
169 SYMBOL 249,&X00000000,&X00000000,&X00011100,&X00000100,&X00000000,&X00000000,&X00000000,&X00000000
170 SYMBOL 240,&X00011000,&X00111100,&X01111110,&X11011011,&X01111110,&X01100110,&X11011011,&X10000001
180 wall$=chr$(245):bkg$=chr$(246):bonus$=chr$(247):wallc$=chr$(248):bonusc$=chr$(249)
185 ply$=chr$(240)


200 DIM map%(maxAr,maxAr)
240 LOCATE 1,22:ink 1,3:print "Loading":PRINT CHR$(22)+CHR$(1)
250 for i=2 to 15:ink i,0:next i
280 lev=lev+1
290 if (lev>=2) THEN RESTORE 1000:lev=0


300 FOR y=1 TO maxAr
400 FOR x=1 TO maxAr
500 READ map(y,x):tile=map(y,x)
550 if tile=0 then locate x,y:pen 8:print bkg$
600 if tile=9 then locate x,y:pen 9:print wall$:locate x,y:pen 12:print wallc$
610 if tile=2 then locate x,y:pen 7:print bonus$:locate x,y:pen 4:print bonusc$
640 NEXT x
650 NEXT y


660 CALL &BC02:border 0:ink 0,0:INK 1,26:x=10:y=8:v=1:sc=0:p=0:PRINT CHR$(22)+CHR$(0)
700 print " ":print "RetroAcademy.":LOCATE 1,22:print "Score 0  - Lev ";lev
740 LOCATE x,y:pen 3:PRINT ply$
750 IF map(y,x)=2 THEN map(y,x)=0:locate 6,22:print sc:sound 2,100,8,10,1,1:sc=sc+1
780 IF NOT(INKEY(8)) AND map(y,x-v)<9 THEN LOCATE x,y:pen 8:PRINT bkg$:x=x-v:sound 1,200,1
800 IF NOT(INKEY(1)) AND map(y,x+v)<9 THEN LOCATE x,y:pen 8:PRINT bkg$:x=x+v:sound 1,300,1
850 IF NOT(INKEY(0)) AND map(y-v,x)<9 THEN LOCATE x,y:pen 8:PRINT bkg$:y=y-v:sound 1,50,1
880 IF NOT(INKEY(2)) AND map(y+v,x)<9 THEN LOCATE x,y:pen 8:PRINT bkg$:y=y+v:sound 1,100,1
900 if sc>=9 then cls:goto 240
950 CALL &BD19
990 GOTO 740


1000 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
1100 DATA 9,0,0,0,0,0,0,0,0,9,9,9,9,9,0,0,0,9,9,9
1200 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
1300 DATA 9,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,0,0,9
1400 DATA 9,9,9,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9
1500 DATA 9,0,0,9,9,0,0,0,0,9,9,9,9,9,0,0,9,9,9,9
1600 DATA 9,0,0,0,0,0,0,0,0,9,9,9,9,9,0,0,9,9,9,9
1700 DATA 9,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,9
1800 DATA 9,0,0,0,9,9,9,9,2,0,0,0,0,0,0,0,0,0,0,9
1900 DATA 9,0,9,9,9,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9
2000 DATA 9,0,9,9,9,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9
2100 DATA 9,0,0,0,0,2,9,9,9,9,0,9,9,9,0,0,0,9,9,9
2200 DATA 9,0,0,0,9,0,0,0,0,0,0,0,0,2,0,0,0,0,0,9
2300 DATA 9,0,9,9,9,9,0,0,0,9,9,9,9,9,0,0,0,0,0,9
2400 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,9
2500 DATA 9,0,0,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9,9,9
2600 DATA 9,0,0,0,0,0,9,0,0,9,9,9,9,9,0,0,9,9,9,9
2700 DATA 9,9,9,0,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,9
2800 DATA 9,9,9,0,0,2,0,0,0,0,0,2,0,0,2,2,0,0,0,9
2900 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9


3000 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
3100 DATA 9,0,0,0,0,0,0,0,0,9,9,9,9,9,2,0,0,9,9,9
3200 DATA 9,0,0,0,0,9,9,9,0,0,0,0,0,0,0,0,0,0,0,9
3300 DATA 9,2,0,0,9,9,0,0,0,0,0,9,9,9,9,9,9,0,0,9
3400 DATA 9,9,9,9,9,0,0,0,0,9,0,0,0,0,0,0,0,0,0,9
3500 DATA 9,0,0,0,0,0,0,0,0,9,9,0,0,9,0,0,9,9,9,9
3600 DATA 9,0,0,0,0,0,0,0,0,9,9,0,0,9,0,0,9,9,9,9
3700 DATA 9,0,0,0,9,9,0,0,0,0,0,0,0,9,0,0,0,0,0,9
3800 DATA 9,0,0,0,9,9,9,9,2,0,0,0,0,9,0,0,0,0,2,9
3900 DATA 9,0,9,9,9,9,9,9,9,0,0,9,0,0,0,0,9,9,9,9
4000 DATA 9,0,9,9,9,9,9,9,9,0,0,9,2,0,0,0,9,9,9,9
4100 DATA 9,0,0,0,0,2,9,9,9,9,0,9,9,0,0,0,0,9,9,9
4200 DATA 9,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9
4300 DATA 9,0,9,9,9,9,0,0,0,9,9,9,9,0,0,0,0,0,0,9
4400 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
4500 DATA 9,0,0,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9,9,9
4600 DATA 9,0,0,0,0,0,9,0,0,9,9,9,9,9,0,0,9,9,9,9
4700 DATA 9,0,9,0,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,9
4800 DATA 9,2,9,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,9
4900 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9




Remember, this code is not free bugs and not optimized :)




ervin

That's very cool.
:)

However, line 780 is reporting a syntax error.
It needs an extra ")".

i.e. it should be
780 IF NOT(INKEY(8)) AND map%(y%,x%-v%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):x%=x%-1:sound 1,200,1


Fabrizio Radica

How i can draw multicolor chars in basic (for background)?
I need only enable transparency, with PRINT CHR$(22)+CHR$(1)?

tnx :)

GOB

Enable transparency; change pen; print character ;)

Fabrizio Radica

ok guys :)
Multicolor version added on top :)

TFM

Cool avatar! And btw. always good to see new stuff for the CPC.  :)
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Fabrizio Radica


Quote from: TFM on 21:33, 29 July 16Cool avatar! And btw. always good to see new stuff for the CPC.  :)


tnx :)
i'm glad to be here and i hope to help someone..

i have update again on top with two levels :)




VincentGR

This has potential!!!
Thanks mate.

EgoTrip

Quote from: Fabrizio Radica on 17:31, 29 July 16
How i can draw multicolor chars in basic (for background)?
I need only enable transparency, with PRINT CHR$(22)+CHR$(1)?

tnx :)

It slows it right down though, as its printing the control character to turn on transparency, then the first character, then the CC to go back a cell, then the CC to change pen, then the second character etc etc.

SRS

Nice :)

If you want to speed it up, give it a compile : http://www.cpcwiki.eu/index.php/Fabacom_(FAst_BAsic_COMpiler)

Se si vuole accelerarlo , dare una compilazione

Fabrizio Radica

Quote from: SRS on 21:25, 30 July 16
Nice :)

If you want to speed it up, give it a compile : http://www.cpcwiki.eu/index.php/Fabacom_(FAst_BAsic_COMpiler)
Se si vuole accelerarlo , dare una compilazione


Yes thank's a lot!! it's really slow especially when i draw the level.
How i can speedup the rendering process without compile?

tnx :)

AMSDOS


Quote from: Fabrizio Radica on 09:31, 31 July 16


Yes thank's a lot!! it's really slow especially when i draw the level.
How i can speedup the rendering process without compile?


tnx


Not showing the drawing process would be the easiest way, the easiest way to do that is simply a matter of setting all the INKs to 0 like this:


for i%=0 to 15:ink i%,0:next i%


There is another way which involves using OUT commands, but the INK approach is just as effective.


Once you've drawn the level, simply using the INKs to display, sorry I don't have your inks on hand, I couldn't see any in your source apart from INK 1,26, in that case you can set the INKs to 0, draw your screen, CALL &BC02 & INK 1,26 to give it that instant look.
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

Fabrizio Radica

Quote from: AMSDOS on 09:40, 31 July 16

Not showing the drawing process would be the easiest way, the easiest way to do that is simply a matter of setting all the INKs to 0 like this:


for i%=0 to 15:ink i%,0:next i%


There is another way which involves using OUT commands, but the INK approach is just as effective.


Once you've drawn the level, simply using the INKs to display, sorry I don't have your inks on hand, I couldn't see any in your source apart from INK 1,26, in that case you can set the INKs to 0, draw your screen, CALL &BC02 & INK 1,26 to give it that instant look.


mmh. it's slow again..
what i wrong?


the logic is correct
- inks to 0 (black screen)
- render level
- back colors

is the map too big? (20x20)




200 DIM map%(20,20)
240 for i%=0 to 15:ink i%,0:next i% 'INKs to 0
250 LOCATE 1,22 : print "Loading." :PRINT CHR$(22)+CHR$(1)
280 lev%=lev%+1
290 if (lev%>=2) THEN lev%=0 : restore 1000


291 'Render MAP


300 FOR y%=1 TO 20 'GENERO LA MAPPA DEL LIVELLO LEGGENDO I DATA
400 FOR x%=1 TO 20
500 READ map%(y%,x%)
550 if map%(y%,x%)=0 then locate x%,y%: pen 8: print chr$(246)
600 if map%(y%,x%)=9 then locate x%,y%: pen 9: print chr$(245):locate x%,y%: pen 12: print chr$(248)
610 if map%(y%,x%)=2 then locate x%,y%: pen 7: print chr$(247):locate x%,y%: pen 4: print chr$(249)
640 NEXT x%
650 NEXT y%




660 CALL &BC02 : border 0: ink 0,0 : INK 1,26: x%=10:y%=8:v%=1:sc%=0:p%=0: PRINT CHR$(22)+CHR$(0)
670 SYMBOL 240,&X00011000,&X00111100,&X01111110,&X11011011,&X01111110,&X01100110,&X11011011,&X10000001
680 SYMBOL 250,&X00000000,&X00000000,&X00000000,&X00100100,&X00000000,&X00000000,&X00000000,&X00000000
700 print " " : print "RetroAcademy." : LOCATE 1,22 : print "Score    "


701 'MAIN LOOP


740 LOCATE x%,y%: pen 3: PRINT CHR$(240)
750 IF map%(y%,x%)=2 THEN map%(y%,x%)=0 : sc%=sc%+1 : locate 6,22 : print " ";sc% :sound 2,100,8,10,1,1
780 IF NOT(INKEY(8)) AND map%(y%,x%-v%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):x%=x%-1:sound 1,200,1
800 IF NOT(INKEY(1)) AND map%(y%,x%+v%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):x%=x%+1:sound 1,300,1
850 IF NOT(INKEY(0)) AND map%(y%-v%,x%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):y%=y%-1:sound 1,50,1
880 IF NOT(INKEY(2)) AND map%(y%+v%,x%)<9 THEN LOCATE x%,y%:pen 8:PRINT chr$(246):y%=y%+1:sound 1,100,1
900 if sc%>=9 then cls: goto 240
950 CALL &BD19
990 GOTO 740



tnx again :)

AMSDOS

#14
Well I moved the READ map%(y%,x%) from Line 500, to store the DATA from 1000-2900 into the array like this:



3000 restore 1000
3010 for y%=1 to 20
3020   for x%=1 to 20
3030     read map%(y%,x%)
3040   next x%
3050 next y%
3060 return



I don't think there was any improvement of speed.


I don't think there's anything wrong with your code either, that's simply how BASIC handles it, so some people deal with it by setting all the inks to 0, sure it looks a bit suss, some people perhaps prefer the Screen displaying itself at once?


EDIT: From what I can see of your code, I think that is the fastest way possible from BASIC, the Nested FOR..NEXT loops are faster than using WHILE..WEND, it might be slightly faster to using DEFINT a-z rather than declaring Integer variables as with "%" after the variable name.
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

Fabrizio Radica

new version on top, minor bugfixing and speedup :)
i've also tried to render map with tag and tagoff, but it's not much fast than first



295 tag:tilesize=32
300 FOR y=1 TO 20
400 FOR x=1 TO 20
500 READ map(y,x)
520 tile=map(y,x)
550 if tile=0 then move x*tilesize-32,416-y*(tilesize/2): pen 8: print chr$(246);:
600 if tile=9 then move x*tilesize-32,416-y*(tilesize/2): pen 9: print chr$(245);:
610 if tile=2 then move x*tilesize-32,416-y*(tilesize/2): pen 7: print chr$(247);:
640 NEXT x
650 NEXT y
655 tagoff

SRS

#16
May be a little bit faster

300 FOR y%=1 TO 20 'GENERO LA MAPPA DEL LIVELLO LEGGENDO I DATA
400 FOR x%=1 TO 20
500 READ a%:map%(y%,x%)=a%:locate x%,y%
550 if a%=0 then pen 8: print chr$(246)
600 if a%=9 then pen 9: print chr$(245);chr$(:pen 12:print chr$(248)
610 if a%=2 then pen 7: print chr$(247);chr$(:pen 4:print chr$(249)
640 NEXT x%
650 NEXT y%


Also: to compact it, take the multiple used code outside to save RAM (and speed, shorter lines, so faster to interpret)

like use of xt & yt instead of using the calc in each line. This works fine with compiled languages, but not our good old interpreted basic :)

549 xt=x*tilesize-32:yt=416-y*(tilesize/2)





Fabrizio Radica

#17
Quote from: SRS on 21:18, 31 July 16
May be a little bit faster

300 FOR y%=1 TO 20 'GENERO LA MAPPA DEL LIVELLO LEGGENDO I DATA
400 FOR x%=1 TO 20
500 READ a%:map%(y%,x%)=a%:locate x%,y%
550 if a%=0 then pen 8: print chr$(246)
600 if a%=9 then pen 9: print chr$(245);chr$(:pen 12:print chr$(248)
610 if a%=2 then pen 7: print chr$(247);chr$(:pen 4:print chr$(249)
640 NEXT x%
650 NEXT y%


Also: to compact it, take the multiple used code outside to save RAM (and speed, shorter lines, so faster to interpret)

like use of xt & yt instead of using the calc in each line. This works fine with compiled languages, but not our good old interpreted basic :)

549 xt=x*tilesize-32:yt=416-y*(tilesize/2)


hi :)
Line 600 is reporting a syntax error.
Is should be so?


300 FOR y%=1 TO 20
400 FOR x%=1 TO 20
500 READ a%:map%(y%,x%)=a%:locate x%,y%
550 if a%=0 then pen 8:print chr$(246)
600 if a%=9 then pen 9:print chr$(245):pen 12:print chr$(248)
610 if a%=2 then pen 7:print chr$(247):pen 4:print chr$(249)
640 NEXT x%
650 NEXT y%

btw,this is the result :)

Fabrizio Radica

Quote from: SRS on 21:18, 31 July 16
May be a little bit faster

300 FOR y%=1 TO 20 'GENERO LA MAPPA DEL LIVELLO LEGGENDO I DATA
400 FOR x%=1 TO 20
500 READ a%:map%(y%,x%)=a%:locate x%,y%
550 if a%=0 then pen 8: print chr$(246)
600 if a%=9 then pen 9: print chr$(245);chr$(:pen 12:print chr$(248)
610 if a%=2 then pen 7: print chr$(247);chr$(:pen 4:print chr$(249)
640 NEXT x%
650 NEXT y%


Also: to compact it, take the multiple used code outside to save RAM (and speed, shorter lines, so faster to interpret)

like use of xt & yt instead of using the calc in each line. This works fine with compiled languages, but not our good old interpreted basic :)

549 xt=x*tilesize-32:yt=416-y*(tilesize/2)


ok, new optimization (i think) with your help :)



300 curLeft$=CHR$(8)
310 fpen$=CHR$(15)
320 green$=fpen$+CHR$(12)
330 white$=fpen$+CHR$(4)
340 wall$=wa1$+curLeft$+green$+wa2$
350 bonus$=bo1$+curLeft$+white$+bo2$


400 FOR y%=1 TO 20:FOR x%=1 TO 20
500 READ a%:map%(y%,x%)=a%:locate x%,y%
550 if a%=0 then pen 8:print bkg$
600 if a%=9 then pen 9:print wall$
610 if a%=2 then pen 7:print bonus$
640 NEXT x%:NEXT y%



now works fine and a little bit faster then first :)

ervin

Try putting GOTO 640 at the end of lines 550, 600 and 610.

This way, if a%=0, then the checks for a%=9 and a%=2 will be skipped.
That should provide a nice little speedup.

Fabrizio Radica

Quote from: ervin on 00:25, 01 August 16
Try putting GOTO 640 at the end of lines 550, 600 and 610.

This way, if a%=0, then the checks for a%=9 and a%=2 will be skipped.
That should provide a nice little speedup.


Thank's you Ervin!,
yes we have increased e little bit more. now is "acceptable"...
but, at this point we need the power of ASM ... but i've to study Z80 or use peek and poke (like c64).

next step is add enemies, keys and doors. :)

SRS

Quote from: Fabrizio Radica on 22:49, 31 July 16
nice.

somehow copy paste lost this:
if a%=9 then pen 9: print chr$(245);chr$(8):pen 12:print chr$(248)

but I see you fixed it already ;)

SRS

Quote from: ervin on 00:25, 01 August 16
Try putting GOTO 640 at the end of lines 550, 600 and 610.

This way, if a%=0, then the checks for a%=9 and a%=2 will be skipped.
That should provide a nice little speedup.

and if you have no line between 610 and 640, you don't need a "GOTO 640" there :D

now this is "Haarspalterei" :D

Fabrizio Radica

#23
New version with "physics" (LOOOL)... :D

- new map
- minor speedup
- end game

TO DO:

- keys, doors, enemies
- map loader from disk
- pixel sprite movement (not char)
- ASM optimizations .... in a galaxy far far away :D


HELP:
Anyone can send me a compiled version with BC for testing speed?
Tnx :)

Note:
uncomment the line 860 and comment the line 880 for "zelda" style gameplay
comment
the  line 860 and uncomment the line 800 for platform game style (default)
uncomment
the line 250 for see the rendering map



1 'A (simple) GAME Routine BY FABRIZIO RADICA - 2016 Retroacademy.it
10 DEFINT A-Z:mode 0:transpOn$=CHR$(22)+CHR$(1):transpOff$=CHR$(22)+CHR$(0)
20 cls:border 0:ink 0,0:maxAr%=20:lev%=0:SYMBOL AFTER 60
160 SYMBOL 245,&X01011010,&X00010101,&X11000100,&X11011011,&X00100110,&X01101000,&X01011011,&X11101001
165 SYMBOL 246,&X00010000,&X00000001,&X00001000,&X01010010,&X01000010,&X00001000,&X00010001,&X01000001
166 SYMBOL 247,&X00111000,&X01111110,&X11111011,&X11111111,&X11111111,&X11111111,&X11111111,&X00111100
168 SYMBOL 248,&X10000111,&X01010100,&X10000010,&X01001000,&X10010011,&X01100011,&X10100100,&X00011100
169 SYMBOL 249,&X00000000,&X00000000,&X00011100,&X00000100,&X00000000,&X00000000,&X00000000,&X00000000
170 SYMBOL 240,&X00011000,&X00111100,&X01111110,&X11011011,&X01111110,&X01100110,&X11011011,&X10000001
180 wa1$=chr$(245):bg$=chr$(246):bo1$=chr$(247):wa2$=chr$(248):bo2$=chr$(249):ply$=chr$(240)


200 DIM map%(maxAr,maxAr)
240 PRINT transpOn$:LOCATE 1,22:ink 1,3:print "Loading"
250 for i%=2 to 15:ink i%,0:next i%
290 'if (lev%=2) THEN RESTORE 1000
292 lev%=lev%+1
295 if (lev%>3) THEN cls: PRINT "YOU WIN!!" : end


300 curLeft$=CHR$(:curRight$=CHR$(9):
310 fpen$=CHR$(15):green$=fpen$+CHR$(12):white$=fpen$+CHR$(4):bgcolor$=fpen$+CHR$(:bgr$=bgcolor$+bg$
340 wall$=fpen$+CHR$(9)+wa1$+curLeft$+green$+wa2$:bonus$=fpen$+CHR$(7)+bo1$+curLeft$+white$+bo2$:player$=fpen$+CHR$(3)+ply$


400 FOR y%=1 TO maxAr:FOR x%=1 TO maxAr
500 READ a%:map%(y%,x%)=a%:locate x%,y%
550 if a%=0 then ?bgr$
600 if a%=9 then ?wall$
610 if a%=2 then ?bonus$
640 NEXT x%:NEXT y%


660 CALL &BC02:border 0:ink 0,0:INK 1,26:x%=10:y%=8:v%=1:sc%=0:p%=0:PRINT transpOff$
700 print " ":print "RetroAcademy":LOCATE 1,22:print "Score 0  - Lev ";lev%
740 LOCATE x%,y%:PRINT player$
750 IF map%(y%,x%)=2 THEN map%(y%,x%)=0:locate 6,22:sc%=sc%+1:print sc%:sound 2,100,8,10,1,1
780 IF NOT(INKEY() AND map%(y%,x%-v)<9 THEN LOCATE x%,y%:print bgr$:x%=x%-v:sound 1,200,1:goto 950
800 IF NOT(INKEY(1)) AND map%(y%,x%+v)<9 THEN LOCATE x%,y%:print bgr$:x%=x%+v:sound 1,300,1:goto 950
850 IF NOT(INKEY(0)) AND map%(y%-v,x%)<9 THEN LOCATE x%,y%:print bgr$:y%=y%-v:sound 1,50,1:goto 950
860 'IF NOT(INKEY(2)) AND map%(y%+v,x%)<9 THEN LOCATE x%,y%:print bgr$:y%=y%+v:sound 1,100,1:goto 950
880 IF map%(y%+v,x%)<9 AND INKEY(0)=-1 THEN LOCATE x%,y%:print bgr$:y%=y%+v:sound 1,100,1:goto 950
900 if sc%>=9 then cls: goto 240
950 CALL &BD19
990 goto 740


1000 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
1100 DATA 9,0,0,0,0,0,0,0,0,9,9,9,9,9,0,0,0,9,9,9
1200 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
1300 DATA 9,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,0,0,9
1400 DATA 9,9,9,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9
1500 DATA 9,0,0,9,9,0,0,0,0,9,9,9,9,9,0,0,9,9,9,9
1600 DATA 9,0,0,0,0,0,0,0,0,9,9,9,9,9,0,0,9,9,9,9
1700 DATA 9,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,9
1800 DATA 9,0,0,0,9,9,9,9,2,0,0,0,0,0,0,0,0,0,0,9
1900 DATA 9,0,9,9,9,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9
2000 DATA 9,0,9,9,9,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9
2100 DATA 9,0,0,0,0,2,9,9,9,9,0,9,9,9,0,0,0,9,9,9
2200 DATA 9,0,0,0,9,0,0,0,0,0,0,0,0,2,0,0,0,0,0,9
2300 DATA 9,0,9,9,9,9,0,0,0,9,9,9,9,9,0,0,0,0,0,9
2400 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,9
2500 DATA 9,0,0,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9,9,9
2600 DATA 9,0,0,0,0,0,9,0,0,9,9,9,9,9,0,0,9,9,9,9
2700 DATA 9,9,9,0,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,9
2800 DATA 9,9,9,0,0,2,0,0,0,0,0,2,0,0,2,0,2,0,0,9
2900 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9


3000 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
3100 DATA 9,0,0,0,0,0,0,0,0,9,9,9,9,9,2,0,0,9,9,9
3200 DATA 9,0,0,0,0,9,9,9,0,0,0,0,0,0,0,0,0,0,0,9
3300 DATA 9,2,0,0,9,9,0,0,0,0,0,9,9,9,9,9,9,0,0,9
3400 DATA 9,9,9,9,9,0,0,0,0,9,0,0,0,0,0,0,0,0,0,9
3500 DATA 9,0,0,0,0,0,0,0,0,9,9,0,0,9,0,0,9,9,9,9
3600 DATA 9,0,0,0,0,0,0,0,0,9,9,0,0,9,0,0,9,9,9,9
3700 DATA 9,0,0,0,9,9,0,0,0,0,0,0,0,9,0,0,0,0,0,9
3800 DATA 9,0,0,0,9,9,9,9,2,0,0,0,0,9,0,0,0,0,2,9
3900 DATA 9,0,9,9,9,9,9,9,9,0,0,9,0,0,0,0,9,9,9,9
4000 DATA 9,0,9,9,9,9,9,9,9,0,0,9,2,0,0,0,9,9,9,9
4100 DATA 9,0,0,0,0,0,9,9,9,9,0,9,9,0,0,0,0,9,9,9
4200 DATA 9,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9
4300 DATA 9,0,9,9,9,9,0,0,0,9,9,9,9,0,0,0,0,0,0,9
4400 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
4500 DATA 9,0,0,9,9,9,9,0,0,9,9,9,9,9,9,9,9,9,9,9
4600 DATA 9,0,0,0,0,0,9,0,0,9,9,9,9,9,0,0,9,9,9,9
4700 DATA 9,0,9,0,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,9
4800 DATA 9,2,9,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,9
4900 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9


5000 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
5100 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
5200 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
5300 DATA 9,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,9
5400 DATA 9,0,0,0,9,9,9,0,0,0,0,9,9,9,0,0,0,0,0,9
5500 DATA 9,0,0,0,9,9,9,0,0,0,0,9,9,9,0,0,0,0,0,9
5600 DATA 9,0,0,0,9,9,9,0,0,0,0,9,9,9,0,0,0,0,0,9
5700 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
5800 DATA 9,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,9
5900 DATA 9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9
6000 DATA 9,0,0,0,9,0,2,0,0,0,0,0,2,0,9,0,0,0,0,9
6100 DATA 9,0,0,0,0,9,9,9,9,9,9,9,9,9,0,0,0,0,0,9
6200 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
6300 DATA 9,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,9
6400 DATA 9,0,0,0,0,0,0,9,9,9,9,0,0,0,0,0,0,0,0,9
6500 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
6600 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
6700 DATA 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
6800 DATA 9,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,9
6900 DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9

Fabrizio Radica

First test of RPG Engine based on my Basic Engine.

- FIFO method
- menu


... i love my Amstrad :D

Powered by SMFPacks Menu Editor Mod