wolf_: Thats a very good idea. It will require more code but I think it can be done
without any performance hits. Just put a solid white character behind the road
and then use multiple roadsprites. In the current version the middle part of the
base of the road is not a sprite though so that has to be changed.
But I honestly don't think it is possible to add this within the iombcc limits
though. I know I said it before, for example that I didn't think it was possible to
add opponent cars and since then we added an end demo, mountains, sound,
gas pedal, time, rank and more but now I think we're reaching the limit of
whats possible to squeeze in.
NYYRIKKI, I won't have any time to do any updates the next coming days so
if you want to update anything, just go ahead. When we are done we need
to tweek the grass update to make it smoother. There is no point in doing
this before we are done with the rest of the code though.
wolf_: actually there is a small problem doing the stripes using sprites with
holes. The problem is that it would require 5 sprites on the same line at the
base of the road (three for the road, one for the black car and one for the red).
Thats actually why I made the center part of the base of gray characters
instead of a sprite. I forgot about that.
uh no?
You precalced the road-sprites, rite? just change the pattern, make holes in the sprites.
original sprite:
.....oooooo..... .....oooooo..... ....oooooooo.... ....oooooooo.... ...oooooooooo... ...oooooooooo... ..oooooooooooo.. ..oooooooooooo..
new sprite:
.....oooooo..... .....oooooo..... ....oooooooo.... ....ooo..ooo.... ...oooo..oooo... ...oooo..oooo... ..oooooooooooo.. ..oooooooooooo..
in that hole you see the white background chars..
Ahwell, you can as well make it not animating, and rather than broken stripes, make one long line ^_^.. just slightly different spritepatterns and white chars in the back
oh, yet better ^^;
sprites have one long opened line (see prev. page!), and rather than a full white char you use the same animation thing from the grass .. but now alternating white/grey .. et voila: instant animating road-stripes ..
only tricky bit is the far end, where the road is too narrow to hide the chars .. you could stop the opened sprite-line there..
The road is built up by 32x32 pixel blocks:
+---+---+ | | | | | | +---+---+ | | | | | | +-+-+-+-+-+-+ | | | | | | | | +-+-+-+-+-+-+
The first two rows are made up by a left sprite and a right sprite but the third row
has a left sprite, a box with gray characters, and a right sprite.
It is of course possible to make the animated line in the third line with characters
instead of sprites which will give the same result. It will probably cost a little
more but not too much I think (only two VPOKEs).
Maybe this can be done for a "Rally-X 2" that doesn't need to meet the iombcc
rules. It would be pretty cool to see how much you can put into the game
and still have something that runs fairly smooth.
The idea with the long stripe and background chars that change color will
work great with the characters on the base.
This means it would probably only require three VPOKEs to do the center line
animation
Look at the list of features added since first version of XRALLY. It's quite impressive:
- Opponent cars
- Position counter
- Opponent hit detection
- Car physics, that change depending of speed
- Gas pedal
- Motor sounds
- Custom fonts
- Speed meter
- Scrolling mountains
- End
- Text scroller
- "Drive to sunset"
- sound fadeout
- "the little line in the horizon"
- Time support for NTSC & PAL
List of possible things in future versions:
- Brake pedal
- Lo/Hi gear
- biger mountains
- Arrows pointing curves
- middle line
I'm also starting to believe, that everything can not be put in, but maybe we can select something...
Look at the car data again That my friend is obfuscated code!
1 J=S-J*(J<96-S):K=J\16:FORW=0TO2:VPOKE8208+W,P(W+K):NEXT:IFTTHENRESUMENEXTELSEONERRORGOTO1:DEFINTA-Y:COLOR15,5,1:V=14: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):NEXTY,X 2 N=14336:FORI=0TO383:VPOKEN+I,VPEEK((IAND7)+(IAND8)*32+(IAND48)\2+(IAND448)*8):NEXT:SCREEN1:S$="OI1F20407FJCF7FJ70OIC02010F0J98F0J70RI0F101F2F1F19SJ8040J80TI060F09gI3":KEYOFF:LOCATE8,1:PRINT"PLEASE WAIT!":FORO=1TO71:A$=MID$(S$,O,2) 3 R=Q:Q=ASC(A$)-73:Y=VAL("&H"+A$):O=O-(Q<0):FORD=0TO-(R>0)*R:VPOKEN+I,Y:I=I-(Y>0ORR>0):NEXTD,O:X=V:R=N\2:FORI=256TO1023:VPOKE7952+I,85:O=VPEEK(I):VPOKEI,(OORO\2)\(2-(IAND4)\4):NEXT:FORI=ITO1279:VPOKE6464+(IAND63),224+8*(IAND3)-(IAND32):' 4 W=2^(IAND7):J=127\W:VPOKEI+512,JAND-W:VPOKEI+768,JOR-WAND255:J=8-(IAND32)\8:VPOKEI,(JANDI)*255\J:NEXT:FORK=1TO12:FORH=0TO31:VPOKE6496+H+K*32,(K<9ORH0:NEXTI:D=D*D\96:PRINTUSING"SPEED:##0kmh RANK:###";S;N\128-82:-:F=B:IFC<TTHENC=V+T+TMOD99:B=(R-T>99)*(1-CMOD3) 6 S=S-(S<18ANDSTRIG(0))*2+(S>0):-:FORW=3TO4:PUTSPRITEW+1,(F*10+W*H,95),V,4*B+W+1:PUTSPRITE3+W,(W*H,127),V,4*F+3+W:NEXT:-:T=T+S-1:PUTSPRITE1,(115-(D<34)*((24-D)*B+F*10)+(E-64)*D\225,-Y*(98+D)-31),-6*(T 0)*(N\4-V):SOUND8,U:SOUND9,U:PUTSPRITE0,(116-(36-X)*D\126,68+D),-(D>0),S-D\24:LOCATE6,4:PRINTMID$(Z$+"Race Over Time ="+STR$(Z/10)+"s"+Z$,NMOD42+1,S):-:NEXT:SCREEN BY' dvik & NYYRIKKI
awesome! there's still enough space to add extra features too!