8728 DEFUSR=38+PEEK(-2442)+PEEK(-2441)*256:IFUSR(0)THENLINE>2COPY0&H80F6OR384ALLYOURBASEAREBELONGTOUS!
That was the coolest ML loader I've ever seen!!
It was as magic as those hex listings one entered from magazines before I got to know Rodnay Zaks.
Dvik: You're joking, right?
About x-rally...
Maybe I can get some more space out of it, but have had too many other things going on, so that I have not been able to test my ideas. This week is going to be another busy one, so no updates are expected from me anytime near.
Manuel: I somehow still don't like the idea of redefining BASIC commands, but maybe we have to take that choice, if dvik adds the mountains, as I like the end demo. The Mandelbrot routine may really lose some details as part of the speed comes from the fact, that numbers are not handled as accurately as in MSX-BASIC. Sorry about that, I think, I didn't test that too well.
I just want to get your oppinion on the scrolling mountains in the rally game. I've done a little
test and I got something that works ok at least. This version is not that
optimized but I wanted to hear if it is worth continue working on or if the old
one without mountains is better.
If you think it is ok I'll try to make it a bit more efficient. (Note that this version
does not meet the size requirements of iombcc)
1 DEFINTA-Y:V=14:S$(O1)="A18A0CA0FB07C03C01H00A80AE0AF0AFCIFFH00A80AE0AF0AF8AFCBFEAFFP00F3FF7FTFFAF0AF8AFCAFELFFE00A80AC0AE0BF0AF8AFCBFEBFFP00B01B03B07B0FB1FB3FB7FBFFB80BC0BE0BF0BF8BFCBFEBFFP00B01B03B07B0FB1FB3FB7FbFFB80BC0BE0BF0BF8BFCBFE" 2 COLOR15,5,1:X=V:S$(1)="BFFX00A01A07A0FA1FA3FB7FAFFC00A01A07A0FA3FIFFA18A30AF0BE0CC0C80J00A01A03A07B0FA1FA3FB7FBFFA0FA1FA3FA7F\FFFFCFFEDFFG00A1FA20A40A7FBCFA7FB70G00AC0A20A10AF0B98AF0B70J00A0FA10A1FA2FA1FA19K00B80A40B80L00A06A0FA09_00A03" 3 J=S-J*(J<96-S):K=J\16:FORW=0TO2:VPOKE8208+W,P(W+K):NEXT:IFTTHENRESUMENEXTELSEKEYOFF:SCREEN1,3,0:LOCATE8,1:PRINT"PLEASE WAIT!":FORI=256TO1023:VPOKE7952+I,85:O=VPEEK(I):VPOKEI,(OORO\2)\(2-(IAND4)\4):NEXT:SOUND3,V:FORW=0TO1:FORO=1TO212STEP3 4 Q=ASC(MID$(S$(W),O,1))-65:Y=VAL("&H"+MID$(S$(W),O+1,2)):N=14336:FORA=ATOA+Q:VPOKEA+N,Y:NEXT:NEXT:PUTSPRITE8+W,(80+64*W,159),V,6+W:NEXT:ONERRORGOTO3:FORR=1TO12:FORH=0TO31:VPOKE6496+H+R*32,(R<9ORH0:D=D*D\96:U=STICK(0):*:PRINTUSING"SPEED:###kmh RANK:###";S*10;N\128-82:NEXT:Z$=SPACE$(V):S=15:Z=TIME\(6-PEEK(43)\128) 11 FORN=0TO244:D=88-3*N:U=Y*(N\6-V):Y=D>0:SOUND8,U:SOUND9,U:D/2:PUTSPRITE0,(116-(D<58)*((21-D*D\96)*B+F*10)+(X-36)*D\126,-Y*(98+D)-31),1,15+Y*D\24:LOCATE6,4:PRINTMID$(Z$+"Race Over Time ="+STR$(Z/10)+"s"+Z$,NMOD42+1,S):NEXTI:NEXT:SCREENUP
Hehe... this one is much cooler! I really like mountains, perhaps I'm a Konami junkie. I bit of dvik/nyyrikki optimizations and I'll torch my Hyper Rally cart.
dvik - rocks! A little more variation in the skyline would be nice, though, because it sometimes seems to jump, which I think is related to 'aliasing'
I have a small update that saves some characters and makes the scroll a little
bit better. More variation in the skyline would indeed be nice but because of
the quite hard requirements and the fact that it is basic makes it hard to do
something more fancy.
I'm not sure what nyyrikki think we should do to fit this into the size limits. I'll
try to do some more optimizations. But I guess we either need to do the
poke thing or cut something.
1 DEFINTA-Y:V=14:S$(O1)="A18A0CA0FB07C03C01H00A80AE0AF0AFCIFFH00A80AE0AF0AF8AFCBFEAFFP00F3FF7FTFFAF0AF8AFCAFELFFE00A80AC0AE0BF0AF8AFCBFEBFFP00B01B03B07B0FB1FB3FB7FBFFB80BC0BE0BF0BF8BFCBFEBFFP00B01B03B07B0FB1FB3FB7FbFFB80BC0BE0BF0BF8BFCBFE" 2 COLOR15,5,1:X=V:S$(1)="BFFX00A01A07A0FA1FA3FB7FAFFC00A01A07A0FA3FIFFA18A30AF0BE0CC0C80J00A01A03A07B0FA1FA3FB7FBFFA0FA1FA3FA7F\FFFFCFFEDFFG00A1FA20A40A7FBCFA7FB70G00AC0A20A10AF0B98AF0B70J00A0FA10A1FA2FA1FA19K00B80A40B80L00A06A0FA09_00A03" 3 J=S-J*(J<96-S):K=J\16:FORW=0TO2:VPOKE8208+W,P(W+K):NEXT:IFTTHENRESUMENEXTELSEKEYOFF:SCREEN1,3,0:LOCATE8,1:PRINT"PLEASE WAIT!":FORI=256TO1023:VPOKE7952+I,85:O=VPEEK(I):VPOKEI,(OORO\2)\(2-(IAND4)\4):NEXT:SOUND3,V:FORW=0TO1:FORO=1TO212STEP3 4 Q=ASC(MID$(S$(W),O,1))-65:Y=VAL("&H"+MID$(S$(W),O+1,2)):N=14336:FORA=ATOA+Q:VPOKEA+N,Y:NEXT:NEXT:PUTSPRITE8+W,(80+64*W,159),V,6+W:NEXT:ONERRORGOTO3:FORR=1TO12:FORH=0TO31:VPOKE6496+H+R*32,(R<9ORH0:D=D*D\96:U=STICK(0):*:PRINTUSING"SPEED:###kmh RANK:###";S*10;N\128-82:NEXT:Z$=SPACE$(V):S=15:Z=TIME\(6-PEEK(43)\128) 11 FORN=0TO244:D=88-3*N:U=Y*(N\6-V):Y=D>0:SOUND8,U:SOUND9,U:D/2:PUTSPRITE0,(116-(D<58)*((21-D*D\96)*B+F*10)+(X-36)*D\126,-Y*(98+D)-31),1,15+Y*D\24:LOCATE6,4:PRINTMID$(Z$+"Race Over Time ="+STR$(Z/10)+"s"+Z$,NMOD42+1,S):NEXTI:NEXT:SCREENUP
It is nice, that we already have a reason to start compressing. I really have to get some time to this project as well...
Nyyrikki, I've done some more compressing and its pretty close to fit the size
rules now. Everyting is in there except the fading sound in the end demo and
a line in the horizon.
I made the sprite data more compressed by letting each character in the arrays
be 6 bits instead of 4 (it was hex before). I'll try to compress it more but its
getting harder and harder.
1 J=S-J*(J<96-S):K=J\16:FORW=0TO2:VPOKE8208+W,P(W+K):NEXT:IFTTHENRESUMENEXTELSEONERRORGOTO1:T$="???@AAF????GF?????@?NDDR????JC???@??@@N@@@@@@@@@@@@@@@@N@@@@@@@`@@@@@@@@V?????@?A????G???@AAH???@??@@????ZDDBE????@?@E????@?@H??????I@?@J???]?" 2 DEFINTA-Y:COLOR15,5,1:SCREEN1,3,0:S$=">VV)-26&&&.^VYee&&.^VI5ede5&eb]eVI5ede5&&(2^VI5ede5&'2V'5bW5ec5F&)4b^YUee)6&)BV)EbYEe).VF)5dbaee&*V'5bW5ec5&'BV)eb5,V&5^&).&'2V'5bW5ece)EbYEeYUee)V-F&ZE5e-B&&2.6&5LV)-&5&W-Ub7,&&.6&(F'5J&&)&":N=14336 3 KEYOFF:LOCATE8,1:V=14:PRINT"PLEASE WAIT!":FORO=1TO142:Q=ASC(MID$(T$,O,1))-63:Y=Y\256:FORR=RTOR-(OMOD3=1):Y=Y+(4^(-RAND3))*(ASC(MID$(S$,R+1,1))-38):NEXT:FORA=ATOA+Q:VPOKEA+N,YAND255:NEXT:NEXT:R=N\2:FORI=256TO1023:VPOKE7952+I,85:O=VPEEK(I) 4 VPOKEI,(OORO\2)\(2-(IAND4)\4):NEXT:FORK=1TO12:W=KAND1:PUTSPRITE8+W,(80+64*W,159),V,6+W:FORH=0TO31:VPOKE6496+H+K*32,(K<9ORH0),S-D\24:LOCATE6,4:PRINTMID$(Z$+"Race Over Time ="+STR$(Z/10)+"s"+Z$,NMOD42+1,S) 9 -:NEXT:SCREEN0
Ok, now I took some time for this project... Here is first version of the road generator:
1 SCREEN2,3,0:FORX=0TO2:FORY=0TO31:R=16-Y\2:LINE(R-(X-1)*((SIN(Y^.8/6)-(Y<16))*6-R-2)+(X<2),X*32+Y)-STEP(Y+1,0),15:NEXTY,X:FORI=0TO383:VPOKE14336+I,VPEEK((IAND7)+(IAND8)*32+(IAND48)\2+(IAND448)*8):NEXT:SCREEN1
Now you need to save only car data...
Sorry, that I had no time to put it into the game and test it.