_runtimePath_ "../../../Contrib/at67/gbas/runtime" _runtimeStart_ &h26FF _arraysStart_ &h26FF _codeRomType_ ROMv5a cls y=0 : x=y : i=x : j=i : a=j : pitch=a : yy=pitch color1 = &h3F : color2 = &h03 : horizonY = 32 dim c1(3) = &h3F, &h2A, &h15, &h00 dim c2(3) = &h03, &h02, &h01, &h00 fade=0 : cIndex=fade : decay = 54 ' Draw tiles in perspective in screen memory for y=119 downto horizonY color1 = c1(cIndex) : color2 = c2(cIndex) inc fade if fade &&= decay inc cIndex fade = 0 decay = decay LSR 1 endif yy = y gosub calcPitch if((400 / (y-horizonY+40)) AND 1) &&= 0 j = color1 XOR color2 else j = 0 endif i = 80 % pitch a = ((y + 8) LSL 8) for x=0 to pitch + 159 if i &&= 0 i = pitch - 1 else i = i - 1 endif if i+i &>= pitch p = color1 XOR j else p = color2 XOR j endif poke a+x,p next x set VIDEO_TOP, y+y next y set VIDEO_TOP, 0 x=0 : v=8 loop: i = x AND 255 j = 0 q = &h0100 + 240 yy = horizonY gosub calcPitch for y=0 &to pitch j = j + i next y i = i + i p = &h0101 + horizonY + horizonY wait repeat poke p, j LSR 8 j = i + (j AND 255) p = p + 4 : until p &&>= q gosub get("BUTTON_STATE") x = x + v goto loop 254: v = v + 1 : if v &&> 32 then v = 32 return 253: v = v - 1 : if v &&< -32 then v = -32 return 191: v = 0 : return 127: v = 0 : return calcPitch: pitch = yy + (96 - 120 + 1) pitch = (pitch + 1) AND &hfffe return