'INFINITE TERRAIN GENERATOR 'BY MCPEPIC GLOBAL CAMX, CAMY, SPEED, OCTAVES, SEALEVEL, MTNLEVEL RANDOMIZE TIMER GOSUB TP SPEED = 1 OCTAVES = 4 SEALEVEL = 75 MTNLEVEL = 100 SUB NOISE(X,Y,OUT) OUT = SIN(X) + SIN(Y) END SUB SUB FBM(X,Y,OUT) OUT = 0 AMP = 0.5 FRE = 1.95 FOR I = 0 TO OCTAVES - 1 TEMP = 0 CALL NOISE(X, Y, TEMP) ADD OUT, AMP * TEMP AMP = AMP * 0.5 X = X * FRE Y = Y * FRE CALL ROT(X, Y, PI / 4) ADD X, -OUT * 0.4 ADD Y, -OUT * 0.4 NEXT I END SUB SUB ROT(X,Y,A) XX = X * COS(A) + Y * -SIN(A) YY = X * SIN(A) + Y * COS(A) X = XX Y = YY END SUB SUB GETTERRAIN(X,Y,Z,OUT) TEMP = 0 OUT = 0 CALL NOISE(X * 0.002, Z * 0.002, TEMP) ADD OUT, -130 * TEMP CALL NOISE(X * 0.01, Z * 0.01, TEMP) ADD OUT, TEMP * 40 + 40 CALL FBM(X * 0.1, Z * 0.1, TEMP) ADD OUT, TEMP * 20 + 20 ADD OUT, -2 * SIN(0.6 * OUT) ADD OUT, Y + 2 END SUB SUB MAP(X,Y,Z,OUT) OUT = 0 CALL GETTERRAIN(X,Y,Z,OUT) END SUB GAMEPAD 1 PAUSE OFF DO H = LEFT(0) - RIGHT(0) V = UP(0) - DOWN(0) ADD CAMX, H * SPEED ADD CAMY, V * SPEED IF BUTTON(0,0) THEN SPEED = SPEED * 2 IF BUTTON(0,1) THEN SPEED = SPEED / 2 IF PAUSE THEN GOSUB TP BIOME$ = "NULL" ELEVATION = 0 FOR Y = 0 TO 15 FOR X = 0 TO 19 HEIGHT = 0 CALL MAP(X + CAMX, -10, Y + CAMY, HEIGHT) TRACE STR$(X + CAMX)+" "+STR$(Y + CAMY)+" > "+STR$(HEIGHT) BG 1 DIST2SEA = SEALEVEL - HEIGHT IF X = 10 AND Y = 8 THEN ELEVATION = -DIST2SEA IF DIST2SEA > 0 THEN IF X = 10 AND Y = 8 THEN BIOME$ = "OCEAN" PAL 1 CELL X, Y, MAX(7, MIN(22 - DIST2SEA * 0.1, 21)) ELSE DIST2MTN = MTNLEVEL - HEIGHT IF DIST2MTN > 0 THEN IF X = 10 AND Y = 8 THEN BIOME$ = "PLAINS" PAL 2 CELL X, Y, MAX(7, MIN(7 - DIST2SEA, 21)) ELSE IF X = 10 AND Y = 8 THEN BIOME$ = "MOUNTAIN" PAL 0 CELL X, Y, MAX(7, MIN(7 - DIST2MTN * 0.1, 21)) END IF END IF NEXT X NEXT Y BG 0 PAL 7 TEXT 0, 0, "X:" + STR$(CAMX) + " " TEXT 0, 1, "Y:" + STR$(CAMY) + " " TEXT 0, 2, "SPEED:" + STR$(SPEED) + " " TEXT 0, 14, BIOME$ + " " TEXT 0, 15, "ELEVATION:" + STR$(ELEVATION) + " " LOOP TP: MAXDIST = 999999 CAMX = RND(MAXDIST * 2) - MAXDIST CAMY = RND(MAXDIST * 2) - MAXDIST RETURN #1:MAIN PALETTES 00152A3F0001070B003E0904003F3C00 003F2A15003F2A15003F2A1500000000 #2:MAIN CHARACTERS 00000000000000000000000000000000 80000000000000000000000000000000 80000000080000000000000000000000 88000000880000000000000000000000 88002200880022000000000000000000 88228822882288220000000000000000 AA55AA55AA55AA550000000000000000 FFFFFFFFFFFFFFFF0000000000000000 7FFFFFFFFFFFFFFF8000000000000000 7FFFFFFFF7FFFFFF8000000008000000 77FFFFFF77FFFFFF8800000088000000 77FFDDFF77FFDDFF8800220088002200 77DD77DD77DD77DD8822882288228822 55AA55AA55AA55AAAA55AA55AA55AA55 0000000000000000FFFFFFFFFFFFFFFF 8000000000000000FFFFFFFFFFFFFFFF 8000000008000000FFFFFFFFFFFFFFFF 8000080080000800FFFFFFFFFFFFFFFF 8800220088002200FFFFFFFFFFFFFFFF 8822882288228822FFFFFFFFFFFFFFFF AA55AA55AA55AA55FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 071A356A5482C068071D2A556BFDFF7F E0B8040A4583058BE058FCFEBF7FFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 553A0F03060D0B017F3F0F0305030600 56AC78C060F0E000FEFCF8C0E0805080 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00181818180018000000000000000000 006C6C24000000000000000000000000 00247E24247E24000000000000000000 00083E380E3E08000000000000000000 00626408102646000000000000000000 001C34386E643A000000000000000000 00181830000000000000000000000000 000C183030180C000000000000000000 0030180C0C1830000000000000000000 000024187E1824000000000000000000 000018187E1818000000000000000000 00000000181830000000000000000000 000000007E0000000000000000000000 00000000001818000000000000000000 00060C18306040000000000000000000 003C666E76663C000000000000000000 0018381818187E000000000000000000 003C660C18307E000000000000000000 003C660C06663C000000000000000000 0066667E060606000000000000000000 007E607C06067C000000000000000000 001C307C66663C000000000000000000 007E060C183030000000000000000000 003C663C66663C000000000000000000 003C663E06663C000000000000000000 00000018001800000000000000000000 00000018001830000000000000000000 00000C1830180C000000000000000000 0000007E007E00000000000000000000 000030180C1830000000000000000000 003C660C180018000000000000000000 003C666E6E603C000000000000000000 00183C667E6666000000000000000000 007C667C66667C000000000000000000 003C666060663C000000000000000000 00786C66666C78000000000000000000 007E607860607E000000000000000000 007E6078606060000000000000000000 003C606E66663C000000000000000000 0066667E666666000000000000000000 003C181818183C000000000000000000 001E060606663C000000000000000000 00666C78786C66000000000000000000 0060606060607E000000000000000000 0042667E7E6666000000000000000000 0066767E6E6666000000000000000000 003C666666663C000000000000000000 007C667C606060000000000000000000 003C66666A6C3E000000000000000000 007C667C786C66000000000000000000 003E603C06067C000000000000000000 007E1818181818000000000000000000 0066666666663C000000000000000000 00666666663C18000000000000000000 0066667E7E6642000000000000000000 00663C183C6666000000000000000000 0066663C181818000000000000000000 007E0C1830607E000000000000000000 003C303030303C000000000000000000 006030180C0602000000000000000000 003C0C0C0C0C3C000000000000000000 00183C66000000000000000000000000 0000000000007E000000000000000000