Autor
| Free your creativity - IOMBCC
| dvik msx master Mensajes: 1303 | Publicado: Marzo 29 2005, 08:08   | Entry: Rally-X
System: MSX1
After bending the rules a bit (as NYYRIKKI suggested) I added opponent cars to
the Rally-X game. It was a bit tricky to make it fit but I think it turned out ok.
Here is the result:
1 DATA18,C,F,7,7,3,3,3,1,1,1,,,,,,,,,80,E0,F0,FC,5,5,5,5,5,5,5,5,5,,,,,,,,,80,E0,F0,F8,FC,A,A,5,,,,,,,,,,,,,,,,,3F,3F,3F,3F,3F,3F,B,B,B,B,B,B,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,F0,F8,FC,A,5,5,5,5,5,5,5,5,5,5,5,5,,,,,,80,C0,E0,F0,F0,F8
2 DATAFC,A,A,5,5,,,,,,,,,,,,,,,,,1,1,3,3,7,7,F,F,1F,1F,3F,3F,B,B,5,5,80,80,C0,C0,E0,E0,F0,F0,F8,F8,FC,FC,A,A,5,5,,,,,,,,,,,,,,,,,1,1,3,3,7,7,F,F,1F,1F,3F,3F,B,B,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,80,80,C0
3 DATAC0,E0,E0,F0,F0,F8,F8,FC,FC,A,A,5,5,,,,,,,,,,,,,,,,,,,,,,,,,1,7,F,1F,3F,B,B,5,,,,1,7,F,3F,5,5,5,5,5,5,5,5,5,18,30,F0,E0,E0,C0,C0,C0,80,80,80,,,,,,,,,,,1,3,7,F,F,1F,3F,B,B,5,5,F,1F,3F,B,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
4 DATA5,5,5,FC,FC,FC,FC,FC,FC,A,A,A,A,A,A,5,5,5,5,,,,,,,,1F,20,40,B,CF,CF,B,70,70,,,,,,,,C0,20,10,F0,98,98,F0,70,70,,,,,,,,,,,F,10,1F,2F,1F,19,,,,,,,,,,,,80,80,40,80,80,,,,,,,,,,,,,6,F,9,,,,,,,,,,,,,,,,,,18,17,16,,17,1,16,8,,17,9,1:KEYOFF
5 DEFINTA-Z:SCREEN1,3:V=14:COLOR,5,1:VPOKE8192,V:FORI=0TO479:READS$:Y=VAL("&H"+S$):VPOKE14336+I,Y-250*(Y=5)-244*(Y=10)-116*(Y=11):NEXT:FORI=0TO11:READF:FORH=0TO31:VPOKE6528+H+I*32,(I<8ORH<VORH>17)*(-128-F):NEXT:P(-I*(I<9))=50-15*(I/3AND1)
6 J=S-J*(J<96-S):H=J/16:IFCTHENVPOKE8208,P(H):VPOKE8209,P(H+1):VPOKE8210,P(H+2):RETURNELSENEXT:X=30:VPOKE14830,3:PUTSPRITE8,(80,159),V,6:PUTSPRITE9,(144,159),V,7:C=10:B=1:FORI=0TO143:VPOKE1024+I,255*(I/8AND1):VPOKE1311-I,255*(I/4AND1):NEXT
7 GOSUB6:PUTSPRITE4,(86+F*10,95),V,4*B:PUTSPRITE5,(118+F*10,95),V,4*B+1:PUTSPRITE6,(96,127),V,4*F+2:GOSUB6:PUTSPRITE7,(128,127),V,4*F+3:PUTSPRITE0,(X+80,156),1,12:U=STICK(0):F=B:S=S-(S<16):GOSUB6:C=C-S:IFC<=0THENB=3*RND(1):C=35+99*RND(1)
8 X=X+6*M+5*((U=7)-(U=3))-3*(B-1):L=X-E/3:M=(X>72)-(X<0):GOSUB6:S=S*(D<73ORL<0ORL>30)*(M=0):N=N+11-S:E=NAND128:D=96-(NAND127):Y=D>0:D=D*D/96:GOSUB6:PUTSPRITE1,(115-(D<34)*((24-D)*(B-1)+(F-1)*10)+(E-64)*D/225,-Y*(98+D)-31),6,16-D/24:GOTO7
And here is a screenshot if you don't want to run the game:
| | Alex Ganzeveld msx lover Mensajes: 81 | Publicado: Marzo 29 2005, 10:18   | Sweet jesus!!! Un f*cking believable!
Restecpa! Incredible how you managed to squeeze Hyper Rally in 8 lines! Why don't you guys team up and create a new MSX game?!
| | AuroraMSX
 msx master Mensajes: 1231 | Publicado: Marzo 29 2005, 11:18   | Quote:
| Sweet jesus!!! Un f*cking believable!
Restecpa! Incredible how you managed to squeeze Hyper Rally in 8 lines! Why don't you guys team up and create a new MSX game?!
|
Heh, next thing we know is they'll redo Fray or ToG in 9 lines of BASIC ;P | | ricbit msx lover Mensajes: 116 | Publicado: Marzo 29 2005, 15:57   |
2 DATAFC,A,A,5,5,,,,,,,,,,,,,,,,,1,1,3,3,7,7,F,F,1F,1F,3F,3F,B,B,5,5,80,80,C0,C0,E0,E0,F0,F0,F8,F8,FC,FC,A,A,5,5,,,,,,,,,,,,,,,,,1,1,3,3,7,7,F,F,1F,1F,3F,3F,B,B,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,80,80,C0
Why don't you use RLE here? I estimate you can reduce one or two lines from your already impressive game. | | wolf_ online
 msx legend Mensajes: 4663 | Publicado: Marzo 29 2005, 15:59   | well, it does add to the obfuscation .. a bit ^_^
| | dvik msx master Mensajes: 1303 | Publicado: Marzo 29 2005, 18:45   | Quote:
| Why don't you use RLE here?
|
I did a little count and RLE saves a bit over 300 characters  With 300 fresh
characters its probably possible to add sound, and some status info, like
position and speed.
I'll see what I can do  | | dvik msx master Mensajes: 1303 | Publicado: Marzo 30 2005, 09:30   | Entry: Rally-X v1.2
System: MSX1
After doing RLE encoded data as Ricardo suggested I was able to put some
more code to the game. So I added a speed meter, rank, customized font,
sound and cleaned up the startup a bit.
Here is the code:
1 DATA0,18,,C,,F,1,7,2,3,2,1,7,,,80,,E0,,F0,,FC,8,FF,7,,,80,,E0,,F0,,F8,,FC,1,FE,,FF,15,,5,3F,5,7F,19,FF,,F0,,F8,,FC,,FE,11,FF,4,,,80,,C0,,E0,1,F0,,F8,,FC,1,FE,1,FF,15,,1,1,1,3,1,7,1,F,1,1F,1,3F,1,7F,1,FF,1,80,1,C0,1,E0,1,F0,1,F8,1,FC,1,FE
2 DATA1,FF,15,,1,1,1,3,1,7,1,F,1,1F,1,3F,1,7F,33,FF,1,80,1,C0,1,E0,1,F0,1,F8,1,FC,1,FE,1,FF,23,,,1,,7,,F,,1F,,3F,1,7F,,FF,2,,,1,,7,,F,,3F,8,FF,,18,,30,,F0,1,E0,2,C0,2,80,9,,,1,,3,,7,1,F,,1F,,3F,1,7F,1,FF,,F,,1F,,3F,,7F,27,FF,5,FC,5,FE,3,FF
3 DATA6,,,1F,,20,,40,,7F,1,CF,,7F,1,70,6,,,C0,,20,,10,,F0,1,98,,F0,1,70,9,,,F,,10,,1F,,2F,,1F:KEYOFF:DEFINTA-Z:SCREEN1,3:V=14:COLOR15,5,1:FORI=0TO2:VPOKE8208+I,85:NEXT:LOCATE8,1:PRINT"PLEASE WAIT...":FORI=0TO142:READX:READS$:Y=VAL("&H"+S$)
4 FORA=ATOA+X:VPOKE14336+A,Y:NEXT:NEXT:FORI=0TO11:READF:FORH=0TO31:VPOKE6528+H+I*32,(I<8ORH<VORH>17)*(-128-F):NEXT:P(-I*(I<9))=50-15*(I/3AND1):NEXT:B=1:FORI=0TO143:VPOKE1024+I,255*(I/8AND1):VPOKE1311-I,255*(I/4AND1):NEXT:FORI=256TO991:REMO
5 J=S-J*(J<96-S):H=J/16:IFCTHENVPOKE8208,P(H):VPOKE8209,P(H+1):VPOKE8210,P(H+2):RETURNELSE:O=VPEEK(I):VPOKEI,(OOR(O/2))/(2-(IAND4)/4):NEXT:SOUND3,V:C=10:N=12800:X=30:VPOKE8192,V:PUTSPRITE8,(80,159),V,6:PUTSPRITE9,(144,159),V,7:SOUND8,8
6 GOSUB5:PUTSPRITE4,(86+F*10,95),V,4*B:PUTSPRITE5,(118+F*10,95),V,4*B+1:PUTSPRITE6,(96,127),V,4*F+2:GOSUB5:PUTSPRITE7,(128,127),V,4*F+3:PUTSPRITE0,(X+80,156),1,12:U=STICK(0):F=B:S=S-(S<16):GOSUB5:C=C-S:IFC<=0THENB=3*RND(1):C=35+99*RND(1)
7 S=S*(D<73ORL<0ORL>30)*(M=0):GOSUB5:X=X+6*M+5*((U=7)-(U=3))-3*(B-1):M=(X>72)-(X<0):IFO+G-S-N/128THENO=S:G=N/128:LOCATE0,1:GOSUB5:I=55930!/(25+S):SOUND9,-9*(S=0):SOUND1,I/256:SOUND0,IAND255:PRINTUSING"SPEED:####mph RANK:###";S*10;G
8 GOSUB5:L=X-E/3:N=N+9-S:E=NAND128:D=96-(NAND127):Y=D>0:D=D*D/96:GOSUB5:PUTSPRITE1,(115-(D<34)*((24-D)*(B-1)+(F-1)*10)+(E-64)*D/225,-Y*(98+D)-31),6,16-D/24:GOTO6:DATA,19,10,,1,80,,40,1,80,11,,,6,,F,,9,30,,,3,32,,18,17,16,,17,1,16,8,,17,9,1
And a little screenshot:
| | Alex Ganzeveld msx lover Mensajes: 81 | Publicado: Marzo 30 2005, 09:35   | Yeeeeeeeeeeeeeeeeeeeeeeeeeehaaaaaaaaaaaaaaw!
| | Alex Ganzeveld msx lover Mensajes: 81 | Publicado: Marzo 30 2005, 09:35   | Keep it coming! Great stuff.
| | NYYRIKKI msx master Mensajes: 1503 | Publicado: Marzo 30 2005, 10:16   | Ok, that is pure BASIC art! You are really pushing the limits of size optimization  | | Vampier msx addict Mensajes: 493 | Publicado: Marzo 30 2005, 11:24   | Dvik makes us all look like amateurs  | | NYYRIKKI msx master Mensajes: 1503 | Publicado: Marzo 30 2005, 13:28   | I messed a little with your RLE and got you some more free space:
1 KEYOFF:DEFINTA-Z:SCREEN1,3,0:V=14:COLOR15,5,1:FORI=0TO2:VPOKE8208+I,85:NEXT:LOCATE8,1:PRINT"PLEASE WAIT...":FORI=0TO142:READS$:X=ASC(S$)-65:Y=VAL("&H"+MID$(S$,2)):DATAA18,AC,AF,B7,C3,C1,H,A80,AE0,AF0,AFC,IFF,H,A80,AE0,AF0,AF8,AFC,BFE,AFF
2 DATAP,F3F,F7F,TFF,AF0,AF8,AFC,AFE,LFF,E,A80,AC0,AE0,BF0,AF8,AFC,BFE,BFF,P,B1,B3,B7,BF,B1F,B3F,B7F,BFF,B80,BC0,BE0,BF0,BF8,BFC,BFE,BFF,P,B1,B3,B7,BF,B1F,B3F,B7F,bFF,B80,BC0,BE0,BF0,BF8,BFC,BFE,BFF,X,A1,A7,AF,A1F,A3F,B7F,AFF,C,A1,A7,AF,A3F
3 DATAIFF,A18,A30,AF0,BE0,CC0,C80,J,A1,A3,A7,BF,A1F,A3F,B7F,BFF,AF,A1F,A3F,A7F,\FF,FFC,FFE,DFF,G,A1F,A20,A40,A7F,BCF,A7F,B70,G,AC0,A20,A10,AF0,B98,AF0,B70,J,AF,A10,A1F,A2F,A1F,A19,K,B80,A40,B80,L,A6,AF,A9,_,A3,a,,18,17,16,,17,1,16,8,17,9,1
4 FORA=ATOA+X:VPOKE14336+A,Y:NEXT:NEXT:FORI=0TO11:READF:FORH=0TO31:VPOKE6528+H+I*32,(I<8ORH<VORH>17)*(-128-F):NEXT:P(-I*(I<9))=50-15*(I/3AND1):NEXT:B=1:FORI=0TO143:VPOKE1024+I,255*(I/8AND1):VPOKE1311-I,255*(I/4AND1):NEXT:FORI=256TO991:REMO
5 J=S-J*(J<96-S):H=J/16:IFCTHENVPOKE8208,P(H):VPOKE8209,P(H+1):VPOKE8210,P(H+2):RETURNELSE:O=VPEEK(I):VPOKEI,(OOR(O/2))/(2-(IAND4)/4):NEXT:SOUND3,V:C=10:N=12800:X=30:VPOKE8192,V:PUTSPRITE8,(80,159),V,6:PUTSPRITE9,(144,159),V,7:SOUND8,8''''
6 GOSUB5:PUTSPRITE4,(86+F*10,95),V,4*B:PUTSPRITE5,(118+F*10,95),V,4*B+1:PUTSPRITE6,(96,127),V,4*F+2:GOSUB5:PUTSPRITE7,(128,127),V,4*F+3:PUTSPRITE0,(X+80,156),1,12:U=STICK(0):F=B:S=S-(S<16):GOSUB5:C=C-S:IFC<=0THENB=3*RND(1):C=35+99*RND(1)''
7 S=S*(D<73ORL<0ORL>30)*(M=0):GOSUB5:X=X+6*M+5*((U=7)-(U=3))-3*(B-1):M=(X>72)-(X<0):IFO+G-S-N/128THENO=S:G=N/128:LOCATE0,1:GOSUB5:I=55930!/(25+S):SOUND9,-9*(S=0):SOUND1,I/256:SOUND0,IAND255:PRINTUSING"SPEED:####mph RANK:###";S*10;G''
8 GOSUB5:L=X-E/3:N=N+9-S:E=NAND128:D=96-(NAND127):Y=D>0:D=D*D/96:GOSUB5:PUTSPRITE1,(115-(D<34)*((24-D)*(B-1)+(F-1)*10)+(E-64)*D/225,-Y*(98+D)-31),6,16-D/24:GOTO6
| | [D-Tail]
 msx guru Mensajes: 2994 | Publicado: Marzo 30 2005, 17:51   | WOW!!!
What a cool game!
Actually, I was waiting for the end demo to take place, after I got past the finish line. Now it turned out there wasn't a finish line at all... You know, I really like end demos, with 3D ray tracing shit in them, accompanied by some neat OPL4 tunes... I hoped it was RLE'd inside those data lines...
Understatement for wishful thinking
dvik: I worship you! Lead us into the wonderous MSX-BASIC-heaven!  | | [D-Tail]
 msx guru Mensajes: 2994 | Publicado: Marzo 30 2005, 17:52   | PS: After my rank started to decrease below -13, I stopped playing... what is its minimum? Or will it wrap around at -32768/32767?  | | dvik msx master Mensajes: 1303 | Publicado: Marzo 30 2005, 19:06   | Cool NYYRIKKI  Good idea to put both the length and value in the same data string. It saves quite a lot of space.
I found a tiny bug in the data that generates the grass (just a comma in the wrong place). Here is an update:
1 KEYOFF:DEFINTA-Z:SCREEN1,3,0:V=14:COLOR15,5,1:FORI=0TO2:VPOKE8208+I,85:NEXT:LOCATE8,1:PRINT"PLEASE WAIT...":FORI=0TO142:READS$:X=ASC(S$)-65:Y=VAL("&H"+MID$(S$,2)):DATAA18,AC,AF,B7,C3,C1,H,A80,AE0,AF0,AFC,IFF,H,A80,AE0,AF0,AF8,AFC,BFE,AFF
2 DATAP,F3F,F7F,TFF,AF0,AF8,AFC,AFE,LFF,E,A80,AC0,AE0,BF0,AF8,AFC,BFE,BFF,P,B1,B3,B7,BF,B1F,B3F,B7F,BFF,B80,BC0,BE0,BF0,BF8,BFC,BFE,BFF,P,B1,B3,B7,BF,B1F,B3F,B7F,bFF,B80,BC0,BE0,BF0,BF8,BFC,BFE,BFF,X,A1,A7,AF,A1F,A3F,B7F,AFF,C,A1,A7,AF,A3F
3 DATAIFF,A18,A30,AF0,BE0,CC0,C80,J,A1,A3,A7,BF,A1F,A3F,B7F,BFF,AF,A1F,A3F,A7F,\FF,FFC,FFE,DFF,G,A1F,A20,A40,A7F,BCF,A7F,B70,G,AC0,A20,A10,AF0,B98,AF0,B70,J,AF,A10,A1F,A2F,A1F,A19,K,B80,A40,B80,L,A6,AF,A9,_,A3,a,18,17,16,,17,1,16,8,,17,9,1
4 FORA=ATOA+X:VPOKE14336+A,Y:NEXT:NEXT:FORI=0TO11:READF:FORH=0TO31:VPOKE6528+H+I*32,(I<8ORH<VORH>17)*(-128-F):NEXT:P(-I*(I<9))=50-15*(I/3AND1):NEXT:B=1:FORI=0TO143:VPOKE1024+I,255*(I/8AND1):VPOKE1311-I,255*(I/4AND1):NEXT:FORI=256TO991'IOMB
5 J=S-J*(J<96-S):H=J/16:IFCTHENVPOKE8208,P(H):VPOKE8209,P(H+1):VPOKE8210,P(H+2):RETURNELSEO=VPEEK(I):VPOKEI,(OOR(O/2))/(2-(IAND4)/4):NEXT:SOUND3,V:C=10:N=12800:X=30:VPOKE8192,V:PUTSPRITE8,(80,159),V,6:PUTSPRITE9,(144,159),V,7:SOUND8,8'CC20
6 GOSUB5:PUTSPRITE4,(86+F*10,95),V,4*B:PUTSPRITE5,(118+F*10,95),V,4*B+1:PUTSPRITE6,(96,127),V,4*F+2:GOSUB5:PUTSPRITE7,(128,127),V,4*F+3:PUTSPRITE0,(X+80,156),1,12:U=STICK(0):F=B:S=S-(S<16):GOSUB5:C=C-S:IFC<=0THENB=3*RND(1):C=35+99*RND(1)'0
7 S=S*(D<73ORL<0ORL>30)*(M=0):GOSUB5:X=X+6*M+5*((U=7)-(U=3))-3*(B-1):M=(X>72)-(X<0):IFO+G-S-N/128THENO=S:G=N/128:LOCATE0,1:GOSUB5:I=55930!/(25+S):SOUND9,-9*(S=0):SOUND1,I/256:SOUND0,IAND255:PRINTUSING"SPEED:####mph RANK:###";S*10;G'5
8 GOSUB5:L=X-E/3:N=N+9-S:E=NAND128:D=96-(NAND127):Y=D>0:D=D*D/96:GOSUB5:PUTSPRITE1,(115-(D<34)*((24-D)*(B-1)+(F-1)*10)+(E-64)*D/225,-Y*(98+D)-31),6,16-D/24:GOTO6
I think it will be hard to add features to the actual game without it slowing
down too much but maybe we could add a better ending (or rather add an
ending  )
| |
| |
| |