08-12-2013, 08:57 PM
As promised here goes the tweaked version of the cyclops game.
I decided to go with this "demo" versión because the code of the original game is very similar to the one in the cars, so the interest in it should be even lower
On top of that, this version lets me show the true purpose of the sprite routine behind these games: Act as a simple but easy to use routine that lets the novice programmer (a.k.a. "me") concentrate in other aspects of the game.
In this version there is no gameplay, but you can move the "cyclops" witn the keys QAZX and PLNM. You'll see this time 4 bouncing saturns in the screen. Pressing the Y key changes the number of saturns from 1 to 8. Given that each planet is composed by 2 sprites (the planet itself and its shadow) it can make a total of 18 sprites in the screen moving simultaneously. Obviously the speed is very compromised when reaching a high number of sprites but my goal is to show that is feasible to have a reasonable number of moving sprites controlled from basic without caring for the annoying flashing.
The code (incluides at least one routine from our personal best Zx Basic Programmer Britlion):
I decided to go with this "demo" versión because the code of the original game is very similar to the one in the cars, so the interest in it should be even lower

On top of that, this version lets me show the true purpose of the sprite routine behind these games: Act as a simple but easy to use routine that lets the novice programmer (a.k.a. "me") concentrate in other aspects of the game.
In this version there is no gameplay, but you can move the "cyclops" witn the keys QAZX and PLNM. You'll see this time 4 bouncing saturns in the screen. Pressing the Y key changes the number of saturns from 1 to 8. Given that each planet is composed by 2 sprites (the planet itself and its shadow) it can make a total of 18 sprites in the screen moving simultaneously. Obviously the speed is very compromised when reaching a high number of sprites but my goal is to show that is feasible to have a reasonable number of moving sprites controlled from basic without caring for the annoying flashing.
The code (incluides at least one routine from our personal best Zx Basic Programmer Britlion):
Code:
REM CYCLOP'S SATURN BOUNCING PONGOLFSKET DELUXE EDITION SPECIAL VMAX FUSSBALL MASTER
#include <sinclair.bas>
#include <keys.bas>
DIM MAXSATURNOS AS UBYTE
LET MAXSATURNOS=3
INICIODELTODO:
IF MAXSATURNOS>7 THEN LET MAXSATURNOS=0: END IF
PAPER 6: BORDER 5:INK 0: CLS
FOR A=0 TO 9: PRINT AT A,0;PAPER 5;INK 0;" ": NEXT A
PRINT AT 1,13;PAPER 6;INK 0;" ";AT 2,13;PAPER 6;INK 0;" "
PRINT AT 1,17;PAPER 6;INK 0;" ";AT 2,17;PAPER 6;INK 0;" "
PRINT AT 8,3;PAPER 6;INK 0;" "
PRINT AT 7,3;PAPER 6;INK 0;" "
PLOT 0,0: DRAW 255,0:DRAW 0,112: DRAW -255,0: DRAW 0,-112
PLOT 0,30: DRAW 30,0: DRAW 0,52: DRAW -30,0
PLOT 255,30: DRAW -30,0: DRAW 0,52: DRAW 30,0
PLOT 128,0: DRAW 0,112
CIRCLE 128,56,20
PAPER 6
PLOT 108,136: DRAW 0,31:DRAW -10,0: DRAW 0,17: DRAW 28,0: DRAW 0,-17: DRAW -12,0: DRAW 0,-31
PLOT 140,136: DRAW 0,31:DRAW -10,0: DRAW 0,17: DRAW 28,0: DRAW 0,-17: DRAW -12,0: DRAW 0,-31
PLOT 0,112: DRAW 30,24:DRAW 195,0: DRAW 30,-24
PAPER 5
'CIRCLE 220,170,8: CIRCLE 217,172,2: CIRCLE 223,172,2: PLOT 216,167: DRAW 8,0,2
'PLOT 10,160: DRAW 8,-4,2: DRAW 12,5,3: DRAW 9,3,4: DRAW 1,8,3: DRAW -10,2,3: DRAW -8,-1,3: DRAW -10,-2,4: DRAW -2,-10,3
DIM GOLUNO, GOLDOS AS UBYTE
doubleSizePrintChar(1,13,48+MAXSATURNOS+1)
DIM X,Y,XA,YA,FRAMEX,FRAMEY,FRAMEXA,FRAMEYA AS UINTEGER
DIM XD,YD,XDA,YDA,FRAMEXD,FRAMEYD,FRAMEXDA,FRAMEYDA AS UINTEGER
DIM XS,YS,XSA,YSA,FRAMESY,FRAMESYA AS UINTEGER
DIM ALTURA,ALTURAA,VHG AS UBYTE
DIM VELSX,VELSY AS BYTE
DIM REBOTE AS INTEGER
LET GOLUNO=0: LET GOLDOS=0
LET X=80:LET Y=0: LET XA=80: LET YA=0
LET FRAMEX=(INT(X) MOD 8): LET FRAMEXA=(INT (XA) MOD 8)
IF FRAMEX THEN LET FRAMEX=8-FRAMEX: END IF
IF FRAMEXA THEN LET FRAMEXA=8-FRAMEXA: END IF
LET FRAMEY=INT(Y) MOD 8: LET FRAMEYA=INT (YA) MOD 8
LET XD=176:LET YD=240: LET XDA=176: LET YDA=240
LET FRAMEXD=(INT(XD) MOD 8): LET FRAMEXDA=(INT (XDA) MOD 8)
IF FRAMEXD THEN LET FRAMEXD=8-FRAMEXD: END IF
IF FRAMEXDA THEN LET FRAMEXDA=8-FRAMEXDA: END IF
LET FRAMEYD=INT(YD) MOD 8: LET FRAMEYDA=INT (YDA) MOD 8
LET XS=132:LET YS=121: LET XSA=132: LET YSA=121
LET FRAMESY=INT(YS) MOD 8: LET FRAMESYA=INT(YSA) MOD 8
LET ALTURA=10: LET ALTURAA=10: LET REBOTE=30: LET VHG=10
LET VELSX=0: LET VELSY=0
DIM SATURNOXY (0 TO 7,0 TO 7) AS INTEGER => {{132,121,132,121,10,10,30,10},_ 'X,Y,XA,YA,ALTURA,ALTURAA,REBOTE,REBOTENEG
{132,20,132,20,10,10,30,10},_
{132,170,132,170,10,10,30,10},_
{132,40,132,40,10,10,30,10},_
{132,60,132,60,10,10,30,10},_
{132,80,132,80,10,10,30,10},_
{132,100,132,100,10,10,30,10},_
{132,150,132,150,10,10,30,10}}
spriteh (16)
xorsprite (X,Y,@CICLOPE+(FRAMEY*384)+(FRAMEX*48),XA,YA,@vacio)
xorsprite (XD,YD,@CICLOPE+(FRAMEYD*384)+(FRAMEXD*48),XDA,YDA,@vacio)
FOR N=0 TO MAXSATURNOS
LET FRAMESY=SATURNOXY(N,1) MOD 8
spriteh (6)
xorsprite (SATURNOXY(N,0),SATURNOXY(N,1),@SOMBRA+(FRAMESY*48),SATURNOXY(N,2),SATURNOXY(N,3),@vacio)
spriteh (10)
xorsprite (SATURNOXY(N,0)-SATURNOXY(N,4),SATURNOXY(N,1),@SATURNO+(FRAMESY*48),SATURNOXY(N,2)-SATURNOXY(N,5),SATURNOXY(N,3),@vacio)
NEXT
SALTOUNO:
BUCLEPPAL:
IF MULTIKEYS(KEYX) AND Y<240 THEN LET Y=Y+1: END IF
IF MULTIKEYS(KEYZ) AND Y>0 THEN LET Y=Y-1: END IF
IF MULTIKEYS(KEYA) AND X<176 THEN LET X=X+1: END IF
IF MULTIKEYS(KEYQ) AND X>64 THEN LET X=X-1: END IF
IF MULTIKEYS(KEYM) AND YD<240 THEN LET YD=YD+1: END IF
IF MULTIKEYS(KEYN) AND YD>0 THEN LET YD=YD-1: END IF
IF MULTIKEYS(KEYL) AND XD<176 THEN LET XD=XD+1: END IF
IF MULTIKEYS(KEYP) AND XD>64 THEN LET XD=XD-1: END IF
IF MULTIKEYS(KEYY) THEN LET MAXSATURNOS=MAXSATURNOS+1: GOTO INICIODELTODO: END IF
LET XS=XS+VELSX: IF (XS>185 OR XS<80) THEN LET XS=XSA: LET VELSX=VELSX*-1: END IF
LET YS=YS+VELSY: IF (YS>240 OR YS<1) THEN LET YS=YSA: LET VELSY=VELSY*-1: GOSUB GOL: END IF
LET FRAMEY=INT(Y) MOD 8: LET FRAMEYA=INT (YA) MOD 8
LET FRAMEX=(INT(X) MOD 8): LET FRAMEXA=(INT (XA) MOD 8)
IF FRAMEX THEN LET FRAMEX=8-FRAMEX: END IF
IF FRAMEXA THEN LET FRAMEXA=8-FRAMEXA: END IF
LET FRAMEYD=INT(YD) MOD 8: LET FRAMEYDA=INT (YDA) MOD 8
LET FRAMEXD=(INT(XD) MOD 8): LET FRAMEXDA=(INT (XDA) MOD 8)
IF FRAMEXD THEN LET FRAMEXD=8-FRAMEXD: END IF
IF FRAMEXDA THEN LET FRAMEXDA=8-FRAMEXDA: END IF
'LET REBOTE=REBOTE-INT(REBOTE/VHG)
'LET ALTURA=ALTURA+INT(REBOTE/VHG)-1: IF ALTURA<6 THEN LET REBOTE=40: GOSUB FRENAZO: END IF 'REBOTE=11 PARADO LET VELSX=0: LET VELSY=0
'LET FRAMESY=INT(YS) MOD 8: LET FRAMESYA=INT(YSA) MOD 8
'IF ALTURA<14 AND (X-XS)>65526 AND ((Y-YS)-4)>65528 THEN GOSUB CHOQUEUNO: END IF
'IF ALTURA<14 AND (XD-XS)>65526 AND ((YD-YS)-4)>65528 THEN GOSUB CHOQUEDOS: END IF
spriteh (16)
xorsprite (X,Y,@CICLOPE+(FRAMEY*384)+(FRAMEX*48),XA,YA,@CICLOPE+(FRAMEYA*384)+(FRAMEXA*48))
xorsprite (XD,YD,@CICLOPE+(FRAMEYD*384)+(FRAMEXD*48),XDA,YDA,@CICLOPE+(FRAMEYDA*384)+(FRAMEXDA*48))
'spriteh (6)
'xorsprite (XS,YS,@SOMBRA+(FRAMESY*48),XSA,YSA,@SOMBRA+(FRAMESYA*48))
'spriteh (10)
'xorsprite (XS-ALTURA,YS,@SATURNO+(FRAMESY*48),XSA-ALTURAA,YSA,@SATURNO+(FRAMESYA*48))
FOR N=0 TO MAXSATURNOS
LET SATURNOXY(N,6)=SATURNOXY(N,6)-INT (SATURNOXY(N,6)/SATURNOXY(N,7))
LET SATURNOXY(N,4)=SATURNOXY(N,4)+INT (SATURNOXY(N,6)/SATURNOXY(N,7))-1: IF SATURNOXY(N,4)<6 THEN LET SATURNOXY(N,6)=40+INT(RND*80): GOSUB FRENAZO: END IF
LET FRAMESY=SATURNOXY(N,1) MOD 8
LET FRAMESYA=SATURNOXY(N,3) MOD 8
spriteh (6)
xorsprite (SATURNOXY(N,0),SATURNOXY(N,1),@SOMBRA+(FRAMESY*48),SATURNOXY(N,2),SATURNOXY(N,3),@SOMBRA+(FRAMESYA*48))
spriteh (10)
xorsprite (SATURNOXY(N,0)-SATURNOXY(N,4),SATURNOXY(N,1),@SATURNO+(FRAMESY*48),SATURNOXY(N,2)-SATURNOXY(N,5),SATURNOXY(N,3),@SATURNO+(FRAMESYA*48))
NEXT
SALTODOS:
LET YA=Y: LET XA=X
LET YDA=YD: LET XDA=XD
LET XSA=XS: LET YSA=YS: LET ALTURAA=ALTURA
FOR N=0 TO 7
LET SATURNOXY(N,2)=SATURNOXY(N,0): LET SATURNOXY(N,3)=SATURNOXY(N,1): LET SATURNOXY(N,5)=SATURNOXY(N,4)
NEXT
GOTO BUCLEPPAL
STOP
CHOQUEUNO:
LET VELSX=65531-(X-XS)
LET VELSY=65532-((Y-YS)-4)
LET REBOTE=(ABS(VELSX)+ABS(VELSY))*25: IF REBOTE<40 THEN LET REBOTE=40: END IF
RETURN
CHOQUEDOS:
LET VELSX=65531-(XD-XS)
LET VELSY=65532-((YD-YS)-4)
LET REBOTE=(ABS(VELSX)+ABS(VELSY))*25: IF REBOTE<40 THEN LET REBOTE=40: END IF
RETURN
FRENAZO:
IF VELSX THEN LET VELSX=(ABS(VELSX)-0.5)*(ABS(VELSX)/VELSX): END IF
IF VELSY THEN LET VELSY=(ABS(VELSY)-0.8)*(ABS(VELSY)/VELSY): END IF
RETURN
GOL:
IF ALTURA<40 AND XS<155 AND XS>110 THEN GOSUB GOLAZO: END IF
RETURN
GOLAZO:
IF YS<16 THEN LET GOLUNO=GOLUNO+1: END IF
IF YS>230 THEN LET GOLDOS=GOLDOS+1: END IF
IF GOLUNO>9 THEN GOTO PLGANA: END IF
IF GOLDOS>9 THEN GOTO PLGANA: END IF
doubleSizePrintChar(1,13,48+GOLDOS)
doubleSizePrintChar(1,17,48+GOLUNO)
RETURN
PLGANA:
doubleSizePrint(7,4,"¡CAMPEONES! ")
PAUSE 1: PAUSE 0
GOTO INICIODELTODO
STOP
#include "sprite3.bas"
vacio:
ASM
vacio:
DEFB 0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0
END ASM
CICLOPE:
ASM
; ASM source file created by SevenuP v1.20
; SevenuP (C) Copyright 2002-2006 by Jaime Tejedor Gomez, aka Metalbrain
; ASM source file created by SevenuP v1.20
; SevenuP (C) Copyright 2002-2006 by Jaime Tejedor Gomez, aka Metalbrain
;GRAPHIC DATA:
;Pixel Size: ( 24, 16)
;Char Size: ( 3, 2)
;Frames: 8
;Sort Priorities: X char, Char line, Y char, Frame number
;Data Outputted: Gfx
;Interleave: Sprite
;Mask: No
ciclop_n_r:
DEFB 3,192, 0, 15,240, 0, 31,248
DEFB 0, 60, 60, 0,121,222, 0,121
DEFB 206, 0,249,223, 0,252, 63, 0
DEFB 255,255, 0,255,255, 0,124, 62
DEFB 0,123,222, 0, 63,252, 0, 31
DEFB 248, 0, 15,240, 0, 3,192, 0
DEFB 3,192, 0, 13,240, 0, 25,216
DEFB 0, 60, 60, 0,127,254, 0,127
DEFB 254, 0,252, 63, 0,251,223, 0
DEFB 255,255, 0,255,255, 0,127,254
DEFB 0,127,254, 0, 63,252, 0, 31
DEFB 248, 0, 15,240, 0, 3,192, 0
DEFB 3,192, 0, 15,240, 0, 28, 56
DEFB 0, 59,220, 0,127,254, 0,127
DEFB 254, 0,255,255, 0,255,255, 0
DEFB 255,255, 0,255,255, 0,127,254
DEFB 0,127,254, 0, 63,252, 0, 31
DEFB 248, 0, 15,240, 0, 3,192, 0
DEFB 3,192, 0, 15,240, 0, 31,248
DEFB 0, 63,252, 0,127,254, 0,127
DEFB 254, 0,255,255, 0,255,255, 0
DEFB 255,255, 0,255,255, 0,127,254
DEFB 0,127,254, 0, 63,252, 0, 31
DEFB 248, 0, 15,240, 0, 3,192, 0
DEFB 3,192, 0, 15,240, 0, 31,248
DEFB 0, 63,252, 0,127,254, 0,127
DEFB 254, 0,255,255, 0,255,255, 0
DEFB 255,255, 0,255,255, 0,127,254
DEFB 0,127,254, 0, 63,252, 0, 31
DEFB 248, 0, 15,240, 0, 3,192, 0
DEFB 3,192, 0, 15,240, 0, 31,248
DEFB 0, 63,252, 0,127,254, 0,127
DEFB 254, 0,255,255, 0,255,255, 0
DEFB 255,255, 0,255,255, 0,127,254
DEFB 0,127,254, 0, 63,252, 0, 31
DEFB 248, 0, 15,240, 0, 3,192, 0
DEFB 3,192, 0, 15,240, 0, 31,248
DEFB 0, 63,252, 0,127,254, 0,127
DEFB 254, 0,255,255, 0,255,255, 0
DEFB 255,255, 0,255,255, 0,127,254
DEFB 0,124, 62, 0, 57,220, 0, 25
DEFB 200, 0, 13,240, 0, 3,192, 0
DEFB 3,192, 0, 15,240, 0, 31,248
DEFB 0, 63,252, 0,127,254, 0,127
DEFB 254, 0,255,255, 0,252, 63, 0
DEFB 249,223, 0,249,207, 0,121,222
DEFB 0,124, 62, 0, 63,252, 0, 31
DEFB 248, 0, 12, 48, 0, 3,192, 0
ciclop_ne_r:
DEFB 1,224, 0, 7,248, 0, 15,252
DEFB 0, 31,158, 0, 63, 47, 0, 62
DEFB 119, 0,127,119,128,127,167,128
DEFB 127,199,128,103,255,128, 59,255
DEFB 0, 61,255, 0, 30,254, 0, 14
DEFB 252, 0, 7,248, 0, 1,224, 0
DEFB 1,224, 0, 6,120, 0, 15,116
DEFB 0, 31,166, 0, 63,199, 0, 39
DEFB 255, 0,123,255,128,125,255,128
DEFB 126,255,128,126,255,128, 63,255
DEFB 0, 63,255, 0, 31,254, 0, 15
DEFB 252, 0, 7,248, 0, 1,224, 0
DEFB 1,224, 0, 7,248, 0, 11,252
DEFB 0, 29,254, 0, 62,255, 0, 62
DEFB 255, 0,127,255,128,127,255,128
DEFB 127,255,128,127,255,128, 63,255
DEFB 0, 63,255, 0, 31,254, 0, 15
DEFB 252, 0, 7,248, 0, 1,224, 0
DEFB 1,224, 0, 6,248, 0, 15,252
DEFB 0, 31,254, 0, 63,255, 0, 63
DEFB 255, 0,127,255,128,127,255,128
DEFB 127,255,128,127,255,128, 63,255
DEFB 0, 63,255, 0, 31,254, 0, 15
DEFB 252, 0, 7,248, 0, 1,224, 0
DEFB 1,224, 0, 7,248, 0, 15,252
DEFB 0, 31,254, 0, 63,255, 0, 63
DEFB 255, 0,127,255,128,127,255,128
DEFB 127,255,128,127,255,128, 63,255
DEFB 0, 63,255, 0, 31,254, 0, 15
DEFB 252, 0, 7,248, 0, 1,224, 0
DEFB 1,224, 0, 7,248, 0, 15,252
DEFB 0, 31,254, 0, 63,255, 0, 63
DEFB 255, 0,127,255,128,127,255,128
DEFB 127,255,128,127,255,128, 63,255
DEFB 0, 63,255, 0, 31,254, 0, 15
DEFB 252, 0, 7,248, 0, 1,224, 0
DEFB 1,224, 0, 7,248, 0, 15,252
DEFB 0, 31,254, 0, 63,255, 0, 63
DEFB 255, 0,127,255,128,127,255,128
DEFB 127,255,128,127,255,128, 63,255
DEFB 0, 63,159, 0, 31, 46, 0, 14
DEFB 116, 0, 7,120, 0, 1,224, 0
DEFB 1,224, 0, 7,248, 0, 15,252
DEFB 0, 31,254, 0, 63,255, 0, 63
DEFB 255, 0,127,255,128,127,159,128
DEFB 127, 47,128,126,119,128, 63,119
DEFB 0, 63,167, 0, 31,198, 0, 15
DEFB 252, 0, 7,248, 0, 1,224, 0
ciclop_e_r:
DEFB 0,240, 0, 3,252, 0, 7,254
DEFB 0, 15,255, 0, 31,255,128, 29
DEFB 227,128, 62,193,192, 62,221,192
DEFB 62,221,192, 62,221,192, 29,227
DEFB 128, 31,247,128, 15,255, 0, 7
DEFB 254, 0, 3,252, 0, 0,240, 0
DEFB 0,240, 0, 3,252, 0, 6,194
DEFB 0, 14,221, 0, 30,221,128, 30
DEFB 221,128, 61,227,192, 63,247,192
DEFB 63,255,192, 63,255,192, 31,255
DEFB 128, 31,255,128, 15,255, 0, 7
DEFB 254, 0, 3,252, 0, 0,240, 0
DEFB 0,240, 0, 3,220, 0, 5,226
DEFB 0, 15,247, 0, 31,255,128, 31
DEFB 255,128, 63,255,192, 63,255,192
DEFB 63,255,192, 63,255,192, 31,255
DEFB 128, 31,255,128, 15,255, 0, 7
DEFB 254, 0, 3,252, 0, 0,240, 0
DEFB 0,240, 0, 3,252, 0, 7,254
DEFB 0, 15,255, 0, 31,255,128, 31
DEFB 255,128, 63,255,192, 63,255,192
DEFB 63,255,192, 63,255,192, 31,255
DEFB 128, 31,255,128, 15,255, 0, 7
DEFB 254, 0, 3,252, 0, 0,240, 0
DEFB 0,240, 0, 3,252, 0, 7,254
DEFB 0, 15,255, 0, 31,255,128, 31
DEFB 255,128, 63,255,192, 63,255,192
DEFB 63,255,192, 63,255,192, 31,255
DEFB 128, 31,255,128, 15,255, 0, 7
DEFB 254, 0, 3,252, 0, 0,240, 0
DEFB 0,240, 0, 3,252, 0, 7,254
DEFB 0, 15,255, 0, 31,255,128, 31
DEFB 255,128, 63,255,192, 63,255,192
DEFB 63,255,192, 63,255,192, 31,255
DEFB 128, 31,255,128, 15,255, 0, 7
DEFB 254, 0, 3,252, 0, 0,240, 0
DEFB 0,240, 0, 3,252, 0, 7,254
DEFB 0, 15,255, 0, 31,255,128, 31
DEFB 255,128, 63,255,192, 63,255,192
DEFB 63,255,192, 63,255,192, 31,255
DEFB 128, 31,255,128, 15,255, 0, 5
DEFB 226, 0, 3,204, 0, 0,240, 0
DEFB 0,240, 0, 3,252, 0, 7,254
DEFB 0, 15,255, 0, 31,255,128, 31
DEFB 255,128, 63,255,192, 63,255,192
DEFB 63,255,192, 61,227,192, 30,193
DEFB 128, 30,221,128, 14,221, 0, 6
DEFB 222, 0, 3,236, 0, 0,240, 0
ciclop_se_r:
DEFB 0,120, 0, 1,254, 0, 3,191
DEFB 0, 7,191,128, 15,127,192, 14
DEFB 255,192, 25,251,224, 31,241,224
DEFB 31,236,224, 31,222,224, 15,205
DEFB 192, 15,195,192, 7,255,128, 3
DEFB 255, 0, 1,254, 0, 0,120, 0
DEFB 0,120, 0, 1,254, 0, 3,251
DEFB 0, 7,241,128, 15,236,192, 15
DEFB 222,192, 31,205,224, 31,195,224
DEFB 31,255,224, 31,255,224, 15,255
DEFB 192, 15,255,192, 7,255,128, 3
DEFB 255, 0, 1,254, 0, 0,120, 0
DEFB 0,120, 0, 1,222, 0, 3,205
DEFB 0, 7,195,128, 15,255,192, 15
DEFB 255,192, 31,255,224, 31,255,224
DEFB 31,255,224, 31,255,224, 15,255
DEFB 192, 15,255,192, 7,255,128, 3
DEFB 255, 0, 1,254, 0, 0,120, 0
DEFB 0,120, 0, 1,254, 0, 3,255
DEFB 0, 7,255,128, 15,255,192, 15
DEFB 255,192, 31,255,224, 31,255,224
DEFB 31,255,224, 31,255,224, 15,255
DEFB 192, 15,255,192, 7,255,128, 3
DEFB 255, 0, 1,254, 0, 0,120, 0
DEFB 0,120, 0, 1,254, 0, 3,255
DEFB 0, 7,255,128, 15,255,192, 15
DEFB 255,192, 31,255,224, 31,255,224
DEFB 31,255,224, 31,255,224, 15,255
DEFB 192, 15,255,192, 7,255,128, 3
DEFB 255, 0, 1,254, 0, 0,120, 0
DEFB 0,120, 0, 1,254, 0, 3,255
DEFB 0, 7,255,128, 15,255,192, 15
DEFB 255,192, 31,255,224, 31,255,224
DEFB 31,255,224, 31,255,224, 15,255
DEFB 192, 15,255,192, 7,255,128, 3
DEFB 255, 0, 1,190, 0, 0,120, 0
DEFB 0,120, 0, 1,254, 0, 3,255
DEFB 0, 7,255,128, 15,255,192, 15
DEFB 255,192, 31,255,224, 31,255,224
DEFB 31,255,224, 31,255,224, 15,191
DEFB 192, 15,191,192, 7,127,128, 2
DEFB 255, 0, 1,254, 0, 0,120, 0
DEFB 0,120, 0, 1,254, 0, 3,255
DEFB 0, 7,255,128, 15,255,192, 15
DEFB 255,192, 31,191,224, 31,191,224
DEFB 31,127,224, 30,255,224, 9,251
DEFB 192, 15,241,192, 7,236,128, 3
DEFB 223, 0, 1,206, 0, 0,120, 0
ciclop_s_r:
DEFB 0, 60, 0, 0,255, 0, 1,255
DEFB 128, 3,255,192, 7,189,224, 7
DEFB 195,224, 15,255,240, 15,255,240
DEFB 15,195,240, 15,185,240, 7, 57
DEFB 224, 7,185,224, 3,195,192, 1
DEFB 255,128, 0,255, 0, 0, 60, 0
DEFB 0, 60, 0, 0,195, 0, 1,255
DEFB 128, 3,255,192, 7,195,224, 7
DEFB 185,224, 15, 57,240, 15,185,240
DEFB 15,195,240, 15,255,240, 7,255
DEFB 224, 7,255,224, 3,255,192, 1
DEFB 255,128, 0,255, 0, 0, 60, 0
DEFB 0, 60, 0, 0,185, 0, 1, 57
DEFB 128, 3,185,192, 7,195,224, 7
DEFB 255,224, 15,255,240, 15,255,240
DEFB 15,255,240, 15,255,240, 7,255
DEFB 224, 7,255,224, 3,255,192, 1
DEFB 255,128, 0,255, 0, 0, 60, 0
DEFB 0, 60, 0, 0,255, 0, 1,255
DEFB 128, 3,255,192, 7,255,224, 7
DEFB 255,224, 15,255,240, 15,255,240
DEFB 15,255,240, 15,255,240, 7,255
DEFB 224, 7,255,224, 3,255,192, 1
DEFB 255,128, 0,255, 0, 0, 60, 0
DEFB 0, 60, 0, 0,255, 0, 1,255
DEFB 128, 3,255,192, 7,255,224, 7
DEFB 255,224, 15,255,240, 15,255,240
DEFB 15,255,240, 15,255,240, 7,255
DEFB 224, 7,255,224, 3,255,192, 1
DEFB 255,128, 0,255, 0, 0, 60, 0
DEFB 0, 60, 0, 0,255, 0, 1,255
DEFB 128, 3,255,192, 7,255,224, 7
DEFB 255,224, 15,255,240, 15,255,240
DEFB 15,255,240, 15,255,240, 7,255
DEFB 224, 7,255,224, 3,255,192, 1
DEFB 255,128, 0,255, 0, 0, 60, 0
DEFB 0, 60, 0, 0,255, 0, 1,255
DEFB 128, 3,255,192, 7,255,224, 7
DEFB 255,224, 15,255,240, 15,255,240
DEFB 15,255,240, 15,255,240, 7,255
DEFB 224, 7,255,224, 3,189,192, 1
DEFB 195,128, 0,255, 0, 0, 60, 0
DEFB 0, 60, 0, 0,255, 0, 1,255
DEFB 128, 3,255,192, 7,255,224, 7
DEFB 255,224, 15,255,240, 15,255,240
DEFB 15,189,240, 15,195,240, 7,255
DEFB 224, 7,255,224, 3,195,192, 1
DEFB 185,128, 0,251, 0, 0, 60, 0
ciclop_sw_r:
DEFB 0, 30, 0, 0,127,128, 0,253
DEFB 192, 1,253,224, 3,254,240, 3
DEFB 255,112, 7,255,152, 7, 15,248
DEFB 7, 55,248, 7,123,248, 3,177
DEFB 240, 3,195,240, 1,231,224, 0
DEFB 255,192, 0,127,128, 0, 30, 0
DEFB 0, 30, 0, 0,127,128, 0,255
DEFB 192, 1, 15,224, 3, 55,240, 3
DEFB 123,240, 7,177,248, 7,195,248
DEFB 7,231,248, 7,255,248, 3,255
DEFB 240, 3,255,240, 1,255,224, 0
DEFB 255,192, 0,127,128, 0, 30, 0
DEFB 0, 30, 0, 0,123,128, 0,177
DEFB 192, 1,195,224, 3,231,240, 3
DEFB 255,240, 7,255,248, 7,255,248
DEFB 7,255,248, 7,255,248, 3,255
DEFB 240, 3,255,240, 1,255,224, 0
DEFB 255,192, 0,127,128, 0, 30, 0
DEFB 0, 30, 0, 0,127,128, 0,255
DEFB 192, 1,255,224, 3,255,240, 3
DEFB 255,240, 7,255,248, 7,255,248
DEFB 7,255,248, 7,255,248, 3,255
DEFB 240, 3,255,240, 1,255,224, 0
DEFB 255,192, 0,127,128, 0, 30, 0
DEFB 0, 30, 0, 0,127,128, 0,255
DEFB 192, 1,255,224, 3,255,240, 3
DEFB 255,240, 7,255,248, 7,255,248
DEFB 7,255,248, 7,255,248, 3,255
DEFB 240, 3,255,240, 1,255,224, 0
DEFB 255,192, 0,127,128, 0, 30, 0
DEFB 0, 30, 0, 0,127,128, 0,255
DEFB 192, 1,255,224, 3,255,240, 3
DEFB 255,240, 7,255,248, 7,255,248
DEFB 7,255,248, 7,255,248, 3,255
DEFB 240, 3,255,240, 1,255,224, 0
DEFB 255,192, 0,125,128, 0, 30, 0
DEFB 0, 30, 0, 0,127,128, 0,255
DEFB 192, 1,255,224, 3,255,240, 3
DEFB 255,240, 7,255,248, 7,255,248
DEFB 7,255,248, 7,255,248, 3,253
DEFB 240, 3,253,240, 1,254,224, 0
DEFB 255, 64, 0,127,128, 0, 30, 0
DEFB 0, 30, 0, 0,127,128, 0,255
DEFB 192, 1,255,224, 3,255,240, 3
DEFB 255,240, 7,253,248, 7,253,248
DEFB 7,254,248, 7,255,120, 3,255
DEFB 144, 3, 15,240, 1, 55,224, 0
DEFB 251,192, 0,113,128, 0, 30, 0
ciclop_w_r:
DEFB 0, 15, 0, 0, 63,192, 0,127
DEFB 224, 0,255,240, 1,239,248, 1
DEFB 199,184, 3,187,124, 3,187,124
DEFB 3,187,124, 3,131,124, 1,199
DEFB 184, 1,255,248, 0,255,240, 0
DEFB 127,224, 0, 63,192, 0, 15, 0
DEFB 0, 15, 0, 0, 55,128, 0,123
DEFB 96, 0,187,112, 1,187,120, 1
DEFB 131,120, 3,199,188, 3,255,252
DEFB 3,255,252, 3,255,252, 1,255
DEFB 248, 1,255,248, 0,255,240, 0
DEFB 127,224, 0, 63,192, 0, 15, 0
DEFB 0, 15, 0, 0, 51,192, 0, 71
DEFB 160, 0,255,240, 1,255,248, 1
DEFB 255,248, 3,255,252, 3,255,252
DEFB 3,255,252, 3,255,252, 1,255
DEFB 248, 1,255,248, 0,255,240, 0
DEFB 127,224, 0, 63,192, 0, 15, 0
DEFB 0, 15, 0, 0, 63,192, 0,127
DEFB 224, 0,255,240, 1,255,248, 1
DEFB 255,248, 3,255,252, 3,255,252
DEFB 3,255,252, 3,255,252, 1,255
DEFB 248, 1,255,248, 0,255,240, 0
DEFB 127,224, 0, 63,192, 0, 15, 0
DEFB 0, 15, 0, 0, 63,192, 0,127
DEFB 224, 0,255,240, 1,255,248, 1
DEFB 255,248, 3,255,252, 3,255,252
DEFB 3,255,252, 3,255,252, 1,255
DEFB 248, 1,255,248, 0,255,240, 0
DEFB 127,224, 0, 63,192, 0, 15, 0
DEFB 0, 15, 0, 0, 63,192, 0,127
DEFB 224, 0,255,240, 1,255,248, 1
DEFB 255,248, 3,255,252, 3,255,252
DEFB 3,255,252, 3,255,252, 1,255
DEFB 248, 1,255,248, 0,255,240, 0
DEFB 127,224, 0, 63,192, 0, 15, 0
DEFB 0, 15, 0, 0, 63,192, 0,127
DEFB 224, 0,255,240, 1,255,248, 1
DEFB 255,248, 3,255,252, 3,255,252
DEFB 3,255,252, 3,255,252, 1,255
DEFB 248, 1,255,248, 0,239,240, 0
DEFB 71,160, 0, 59,192, 0, 15, 0
DEFB 0, 15, 0, 0, 63,192, 0,127
DEFB 224, 0,255,240, 1,255,248, 1
DEFB 255,248, 3,255,252, 3,255,252
DEFB 3,239,252, 3,199,188, 1,187
DEFB 120, 1,187,120, 0,187,112, 0
DEFB 67, 96, 0, 55,192, 0, 15, 0
ciclop_nw_r:
DEFB 0, 7,128, 0, 31,224, 0, 63
DEFB 240, 0,120,248, 0,244,252, 0
DEFB 238,252, 1,206,254, 1,197,254
DEFB 1,227,254, 1,247,230, 0,255
DEFB 220, 0,255,188, 0,127,120, 0
DEFB 63,112, 0, 31,224, 0, 7,128
DEFB 0, 7,128, 0, 30,224, 0, 46
DEFB 240, 0, 69,248, 0,227,252, 0
DEFB 247,228, 1,255,222, 1,255,190
DEFB 1,255,126, 1,255,126, 0,255
DEFB 252, 0,255,252, 0,127,248, 0
DEFB 63,240, 0, 31,224, 0, 7,128
DEFB 0, 7,128, 0, 31,224, 0, 63
DEFB 208, 0,127,184, 0,255,124, 0
DEFB 255,124, 1,255,254, 1,255,254
DEFB 1,255,254, 1,255,254, 0,255
DEFB 252, 0,255,252, 0,127,248, 0
DEFB 63,240, 0, 31,224, 0, 7,128
DEFB 0, 7,128, 0, 31, 96, 0, 63
DEFB 240, 0,127,248, 0,255,252, 0
DEFB 255,252, 1,255,254, 1,255,254
DEFB 1,255,254, 1,255,254, 0,255
DEFB 252, 0,255,252, 0,127,248, 0
DEFB 63,240, 0, 31,224, 0, 7,128
DEFB 0, 7,128, 0, 31,224, 0, 63
DEFB 240, 0,127,248, 0,255,252, 0
DEFB 255,252, 1,255,254, 1,255,254
DEFB 1,255,254, 1,255,254, 0,255
DEFB 252, 0,255,252, 0,127,248, 0
DEFB 63,240, 0, 31,224, 0, 7,128
DEFB 0, 7,128, 0, 31,224, 0, 63
DEFB 240, 0,127,248, 0,255,252, 0
DEFB 255,252, 1,255,254, 1,255,254
DEFB 1,255,254, 1,255,254, 0,255
DEFB 252, 0,255,252, 0,127,248, 0
DEFB 63,240, 0, 31,224, 0, 7,128
DEFB 0, 7,128, 0, 31,224, 0, 63
DEFB 240, 0,127,248, 0,255,252, 0
DEFB 255,252, 1,255,254, 1,255,254
DEFB 1,255,254, 1,255,254, 0,255
DEFB 252, 0,248,252, 0,116,248, 0
DEFB 46,240, 0, 30,224, 0, 7,128
DEFB 0, 7,128, 0, 31,224, 0, 63
DEFB 240, 0,127,248, 0,255,252, 0
DEFB 255,252, 1,255,254, 1,248,254
DEFB 1,244,254, 1,238,254, 0,206
DEFB 252, 0,197,252, 0, 99,248, 0
DEFB 55,240, 0, 31,224, 0, 7,128
END ASM
SATURNO:
ASM
; ASM source file created by SevenuP v1.20
; SevenuP (C) Copyright 2002-2006 by Jaime Tejedor Gomez, aka Metalbrain
;GRAPHIC DATA:
;Pixel Size: ( 24, 16)
;Char Size: ( 3, 2)
;Frames: 8
;Sort Priorities: X char, Char line, Y char, Frame number
;Data Outputted: Gfx
;Interleave: Sprite
;Mask: No
saturno_r:
DEFB 3,192, 0, 30,184, 0,109, 86
DEFB 0,154,137, 0,149, 9, 0,106
DEFB 134, 0, 16, 56, 0, 10,144, 0
DEFB 5, 96, 0, 3,192, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 1,224, 0, 15, 92, 0, 54,171
DEFB 0, 77, 68,128, 74,132,128, 53
DEFB 67, 0, 8, 28, 0, 5, 72, 0
DEFB 2,176, 0, 1,224, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0,240, 0, 7,174, 0, 27, 85
DEFB 128, 38,162, 64, 37, 66, 64, 26
DEFB 161,128, 4, 14, 0, 2,164, 0
DEFB 1, 88, 0, 0,240, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0,120, 0, 3,215, 0, 13,170
DEFB 192, 19, 81, 32, 18,161, 32, 13
DEFB 80,192, 2, 7, 0, 1, 82, 0
DEFB 0,172, 0, 0,120, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 60, 0, 1,235,128, 6,213
DEFB 96, 9,168,144, 9, 80,144, 6
DEFB 168, 96, 1, 3,128, 0,169, 0
DEFB 0, 86, 0, 0, 60, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 30, 0, 0,245,192, 3,106
DEFB 176, 4,212, 72, 4,168, 72, 3
DEFB 84, 48, 0,129,192, 0, 84,128
DEFB 0, 43, 0, 0, 30, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 15, 0, 0,122,224, 1,181
DEFB 88, 2,106, 36, 2, 84, 36, 1
DEFB 170, 24, 0, 64,224, 0, 42, 64
DEFB 0, 21,128, 0, 15, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 7,128, 0, 61,112, 0,218
DEFB 172, 1, 53, 18, 1, 42, 18, 0
DEFB 213, 12, 0, 32,112, 0, 21, 32
DEFB 0, 10,192, 0, 7,128, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
END ASM
SOMBRA:
ASM
; ASM source file created by SevenuP v1.20
; SevenuP (C) Copyright 2002-2006 by Jaime Tejedor Gomez, aka Metalbrain
;GRAPHIC DATA:
;Pixel Size: ( 24, 16)
;Char Size: ( 3, 2)
;Frames: 8
;Sort Priorities: X char, Char line, Y char, Frame number
;Data Outputted: Gfx
;Interleave: Sprite
;Mask: No
sombra_r:
DEFB 5, 64, 0, 10,160, 0, 21, 80
DEFB 0, 10,160, 0, 5, 64, 0, 2
DEFB 128, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 2,160, 0, 5, 80, 0, 10,168
DEFB 0, 5, 80, 0, 2,160, 0, 1
DEFB 64, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 1, 80, 0, 2,168, 0, 5, 84
DEFB 0, 2,168, 0, 1, 80, 0, 0
DEFB 160, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0,168, 0, 1, 84, 0, 2,170
DEFB 0, 1, 84, 0, 0,168, 0, 0
DEFB 80, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 84, 0, 0,170, 0, 1, 85
DEFB 0, 0,170, 0, 0, 84, 0, 0
DEFB 40, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 42, 0, 0, 85, 0, 0,170
DEFB 128, 0, 85, 0, 0, 42, 0, 0
DEFB 20, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 21, 0, 0, 42,128, 0, 85
DEFB 64, 0, 42,128, 0, 21, 0, 0
DEFB 10, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 10,128, 0, 21, 64, 0, 42
DEFB 160, 0, 21, 64, 0, 10,128, 0
DEFB 5, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
DEFB 0, 0, 0, 0, 0, 0, 0, 0
END ASM
BUFFERATTRSATURNO:
ASM
DEFB 0,0,0,0,0,0
END ASM
BUFFERATTRCICLOPEUNO:
ASM
DEFB 0,0,0,0,0,0
END ASM
BUFFERATTRCICLOPEDOS:
ASM
DEFB 0,0,0,0,0,0
END ASM
STOP
SUB doubleSizePrintChar(y AS UBYTE, x AS UBYTE, thingToPrint AS UBYTE)
' Prints a single character double sized.
' Takes X and Y values as character positions, like print.
' takes an ascii code value for a character.
' By Britlion, 2012.
ASM
LD A,(IX+5) ;' Y value
CP 22
JP NC, doubleSizePrintCharEnd
;' A=y value
LD E,A
AND 24 ; calculate
OR 64 ; screen
LD H,A ; address
LD A,E ; FOR
AND 7 ; row
OR a ; Y
RRA
RRA
RRA
RRA
LD E,A
LD A,(IX+7) ;' X Value
CP 30
JP NC, doubleSizePrintCharEnd
ADD A,E ;' correct address for column value. (add it in)
LD L,A
EX DE,HL ;' Save it in DE
LD A,(IX+9) ;'Character
CP 164 ;' > UDG "U" ?
JP NC, doubleSizePrintCharEnd
CP 32 ;' < space+1?
JP C, doubleSizePrintCharEnd
CP 144 ;' >144?
JP NC, doubleSizePrintCharUDGAddress
LD L,A
LD H,0
ADD HL,HL
ADD HL,HL
ADD HL,HL ;' multiply by 8.
LD BC,(23606) ;' Chars
ADD HL,BC ;' Hl -> Character data.
EX DE,HL ;' DE -> character data, HL-> screen address.
JP doubleSizePrintCharRotateLoopCharStart
doubleSizePrintCharUDGAddress:
LD HL,(23675) ;'UDG address
SUB 144
ADD A,A ;multiply by 8.
ADD A,A
ADD A,A
ADD A,L
LD L,A
JR NC, doubleSizePrintCharUDGAddressNoCarry
INC H
doubleSizePrintCharUDGAddressNoCarry:
;' At this point HL -> Character data in UDG block.
EX DE,HL ;' DE -> character data, HL-> screen address.
doubleSizePrintCharRotateLoopCharStart:
LD C,2 ;' 2 character rows.
doubleSizePrintCharRotateLoopCharRowLoopOuter:
LD b,4 ;' 4 source bytes to count through per character row.
doubleSizePrintCharRotateLoopCharRowLoopInner:
PUSH BC
LD A,(DE) ;' Grab a bitmap.
PUSH DE
LD B,4
doubleSizePrintCharRotateLoop1:
RRA
PUSH AF
RR E
POP AF
RR E
DJNZ doubleSizePrintCharRotateLoop1
LD B,4
doubleSizePrintCharRotateLoop2:
RRA
PUSH AF
RR D
POP AF
RR D
DJNZ doubleSizePrintCharRotateLoop2
LD (HL),D ;' Output first byte
INC HL ;' Move right
LD (HL),E ;' Second half.
DEC HL ;' Move left
INC H ;' Move down
LD (HL),D ;' Output second row (copy of first), first byte.
INC HL ;' Move right
LD (HL),E ; Output second row, second BYTE
DEC HL ; Move left
INC H ; Move down.
POP DE
INC DE
POP BC
DJNZ doubleSizePrintCharRotateLoopCharRowLoopInner
; CALL __DECY+2 ;'Jump into the DRAW next_line_down routine, at a convenient point (accounting for the INC H above)
; Can't seem to call to this at the moment! Here in longhand form:
ld a, h
AND 7
jr nz, doubleSizePrintCharRotateNextCharRow
ld a, l
add a, 32
ld l, a
jr c, doubleSizePrintCharRotateNextCharRow
ld a, h
SUB 8
ld h, a
doubleSizePrintCharRotateNextCharRow:
DEC C
JR NZ, doubleSizePrintCharRotateLoopCharRowLoopOuter
doubleSizePrintCharEnd:
END ASM
END SUB
SUB doubleSizePrint(y AS UBYTE, x AS UBYTE, thingToPrint$ AS STRING)
'Uses doubleSizePrintChar subroutine to print a string.
'By Britlion, 2012
DIM n AS UBYTE
FOR n=0 TO LEN thingToPrint - 1
doubleSizePrintChar(y,x,CODE thingToPrint$(n) )
x=x+2
NEXT n
END SUB