DISCLAIMER: The source code of our game has been posted for personal use only, and so every member of the team can easily update to the newest version. Reproducing, selling, or plagarizing any or all of the following code is ILLEGAL.
'Latest version of the Engine
'12 JAN 2004
'
'
'MAP CODE | Type of tile (quick reference sheet--you may want to print)
'=========================================================================
'Tempterate Tile Set
'--------------------------------
'GR | grass
'WA | WATER* (I)
'SA | SAND
'MT | MOUNTAIN (I)
'DF | DECIDUOUS FOREST (THE FIRST FOREST TILE) (I)
'RF | RED FOREST (I)
'DP | Dirt Path*
'LF | Light forest
'Winter Tile Set
'---------------------------------
'SP | SMALL PINE FOREST (I)
'LP | LARGE PINE FOREST (I)
'SN | Snow
'
'
'
'* = can be used in either tile set
'** = needs edited
'(I) = impassable
DECLARE SUB encounter ()
DECLARE SUB gfxsetup ()
DECLARE SUB drawscreen ()
DECLARE SUB moveup ()
DECLARE SUB moveright ()
DECLARE SUB movedown ()
DECLARE SUB moveleft ()
COMMON SHARED cactus(), snowpath(), snow(), lightwoods(), iterrain$(), pineforest(), redpine(), largepine(), grass(), Water(), mx, my, map$(), px, py, gx, gy, i, j, sand(), tree(), mountain(), hp, maxhp, weapon$, armor$, dirtpath()
SCREEN 7, 0, 1, 0
CLS
'graphics setup
LOCATE 20, 5
PRINT "Loading, Please Wait"
PCOPY 1, 0
DIM Water(2048)
DIM grass(2048)
DIM sand(2048)
DIM tree(2048)
DIM mountain(2048)
DIM largepine(2048)
DIM redpine(2048)
DIM pineforest(2048)
DIM dirtpath(2048)
DIM lightwoods(2048)
DIM snow(2048)
DIM snowpath(2048)
DIM cactus(2048)
DATA 02,02,02,02,02,02,02,02
DATA 02,02,02,02,02,02,02,02
DATA 02,02,02,10,02,02,02,02
DATA 02,02,10,02,02,02,02,02
DATA 02,10,10,02,02,10,02,02
DATA 02,10,02,02,10,10,02,02
DATA 02,02,02,02,10,02,02,02
DATA 02,02,02,02,02,02,02,02
GOSUB readdata
DIM grass8(64)
GET (1, 1)-(8, 8), grass8
CLS
FOR yy = 0 TO 32 STEP 8
FOR xx = 0 TO 64 STEP 8
PUT (xx, yy), grass8
NEXT xx
NEXT yy
GET (1, 1)-(64, 32), grass
CLS
DIM clist(3)
clist(1) = 0
clist(2) = 1
clist(3) = 9
FOR y = 1 TO 32
FOR x = 1 TO 64
RANDOMIZE TIMER
c = INT(RND * 3) + 1
PRESET (x, y), clist(c)
NEXT x
NEXT y
GET (1, 1)-(64, 32), Water 'W = water
CLS
DATA 15,14,15,14,15,14,15,14
DATA 14,15,14,15,14,15,14,15
DATA 15,14,15,14,15,14,15,14
DATA 14,15,14,15,14,15,14,15
DATA 15,14,15,14,15,14,15,14
DATA 14,15,14,15,14,15,14,15
DATA 15,14,15,14,15,14,15,14
DATA 14,15,14,15,14,15,14,15
GOSUB readdata
DIM sand8(64)
GET (1, 1)-(8, 8), sand8
CLS
FOR yy = 0 TO 32 STEP 8
FOR xx = 0 TO 64 STEP 8
PUT (xx, yy), sand8
NEXT xx
NEXT yy
GET (1, 1)-(64, 32), sand
CLS
DATA 02,02,02,02,02,02,02,02
DATA 02,02,10,10,10,10,02,02
DATA 02,10,10,10,10,10,10,02
DATA 02,10,10,10,10,10,10,02
DATA 02,02,10,10,10,10,02,02
DATA 02,02,02,06,06,02,02,02
DATA 02,02,02,06,06,02,02,02
DATA 02,02,06,06,06,06,02,02
GOSUB readdata
DIM tree8(64)
GET (1, 1)-(8, 8), tree8
CLS
FOR yy = 0 TO 32 STEP 8
FOR xx = 0 TO 64 STEP 8
PUT (xx, yy), tree8
NEXT xx
NEXT yy
GET (1, 1)-(64, 32), tree
CLS
DATA 15,15,15,15,15,15,15,15
DATA 15,15,07,15,15,15,15,15
DATA 15,09,09,09,15,15,15,15
DATA 06,06,06,06,06,07,15,15
DATA 15,15,15,15,09,09,09,15
DATA 15,15,07,06,06,06,06,06
DATA 15,09,09,09,15,15,15,15
DATA 06,06,06,06,06,15,15,15
GOSUB readdata
DIM mountain8(64)
GET (1, 1)-(8, 8), mountain8
CLS
FOR yy = 0 TO 32 STEP 8
FOR xx = 0 TO 64 STEP 8
PUT (xx, yy), mountain8
NEXT xx
NEXT yy
GET (1, 1)-(64, 32), mountain
CLS
DATA 15,15,15,15,15,15,15,15
DATA 15,15,15,02,02,15,15,15
DATA 15,15,02,02,02,02,15,15
DATA 15,02,02,02,02,02,02,15
DATA 15,15,02,02,02,02,15,15
DATA 15,02,02,02,02,02,02,15
DATA 15,15,15,06,06,15,15,15
DATA 15,15,06,06,06,06,15,15
GOSUB readdata
DIM pine8(64)
GET (1, 1)-(8, 8), pine8
CLS
FOR yy = 1 TO 32 STEP 8
FOR xx = 1 TO 64 STEP 8
PUT (xx, yy), pine8
NEXT xx
NEXT yy
GET (1, 1)-(64, 32), pineforest
CLS
DATA 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15
DATA 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15
DATA 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15
DATA 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15
DATA 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15
DATA 15,15,15,15,15,15,15,02,02,15,15,15,15,15,15,15
DATA 15,15,15,15,15,15,02,02,02,02,15,15,15,15,15,15
DATA 15,15,15,15,15,02,02,02,02,02,02,15,15,15,15,15
DATA 15,15,15,15,02,02,02,02,02,02,02,02,15,15,15,15
DATA 15,15,15,02,02,02,02,02,02,02,02,02,02,15,15,15
DATA 15,15,02,02,02,02,02,02,02,02,02,02,02,02,15,15
DATA 15,02,02,02,02,02,02,02,02,02,02,02,02,02,02,15
DATA 15,15,15,15,15,15,06,06,06,06,15,15,15,15,15,15
DATA 15,15,15,15,15,15,06,06,06,06,15,15,15,15,15,15
DATA 15,15,15,15,15,06,06,06,06,06,06,15,15,15,15,15
DATA 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15
GOSUB readdata16
DIM lpine16(256)
GET (1, 1)-(16, 16), lpine16
CLS
FOR yy = 1 TO 32 STEP 16
FOR xx = 1 TO 64 STEP 16
PUT (xx, yy), lpine16
NEXT xx
NEXT yy
GET (1, 1)-(64, 32), largepine
CLS
DATA 02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02
DATA 02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02
DATA 02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02
DATA 02,02,02,02,02,12,12,12,12,12,12,02,02,02,02,02
DATA 02,02,02,02,12,12,12,12,12,12,12,12,02,02,02,02
DATA 02,02,02,12,12,12,12,12,12,12,12,12,12,02,02,02
DATA 02,02,12,12,12,12,12,12,12,12,12,12,12,12,02,02
DATA 02,02,12,12,12,12,12,12,12,12,12,12,12,12,02,02
DATA 02,02,02,12,12,12,12,12,12,12,12,12,12,02,02,02
DATA 02,02,02,02,12,12,12,12,12,12,12,12,02,02,02,02
DATA 02,02,02,02,02,12,12,12,12,12,12,02,02,02,02,02
DATA 02,02,02,02,02,02,12,12,12,12,02,02,02,02,02,02
DATA 02,02,02,02,02,02,02,06,06,02,02,02,02,02,02,02
DATA 02,02,02,02,02,02,06,06,06,06,02,02,02,02,02,02
DATA 02,02,02,02,02,06,06,06,06,06,06,02,02,02,02,02
DATA 02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02
GOSUB readdata16
DIM rpine16(256)
GET (1, 1)-(16, 16), rpine16
CLS
FOR yy = 1 TO 32 STEP 16
FOR xx = 1 TO 64 STEP 16
PUT (xx, yy), rpine16
NEXT xx
NEXT yy
GET (1, 1)-(64, 32), redpine
CLS
DATA 02,06,06,06,06,02,06,06
DATA 06,06,06,02,06,06,06,06
DATA 06,02,06,06,06,06,06,06
DATA 02,06,06,06,06,06,02,06
DATA 06,06,06,02,06,06,06,06
DATA 02,06,06,06,06,02,06,06
DATA 06,06,02,06,02,06,06,06
DATA 06,06,06,02,06,06,02,06
GOSUB readdata
DIM path8(64)
GET (1, 1)-(8, 8), path8
CLS
FOR yy = 1 TO 32 STEP 8
FOR xx = 1 TO 64 STEP 8
PUT (xx, yy), path8
NEXT xx
NEXT yy
GET (1, 1)-(64, 32), dirtpath
CLS
DATA 02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02
DATA 02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02
DATA 02,02,02,02,02,10,10,10,10,10,10,02,02,02,02,02
DATA 02,02,02,02,10,10,10,10,10,10,10,10,02,02,02,02
DATA 02,02,02,10,10,10,10,10,10,10,10,10,10,02,02,02
DATA 02,02,10,10,10,10,10,10,10,10,10,10,10,10,02,02
DATA 02,10,10,10,10,10,10,10,10,10,10,10,10,10,10,02
DATA 02,10,10,10,10,10,10,10,10,10,10,10,10,10,10,02
DATA 02,02,10,10,10,10,10,10,10,10,10,10,10,10,02,02
DATA 02,02,02,10,10,10,10,10,10,10,10,10,10,02,02,02
DATA 02,02,02,02,10,10,10,10,10,10,10,10,02,02,02,02
DATA 02,02,02,02,02,10,10,10,10,10,10,02,02,02,02,02
DATA 02,02,02,02,02,02,06,06,06,06,02,02,02,02,02,02
DATA 02,02,02,02,02,02,06,06,06,06,02,02,02,02,02,02
DATA 02,02,02,02,02,06,06,06,06,06,06,02,02,02,02,02
DATA 02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02
GOSUB readdata16
DIM lwoods16(256)
GET (1, 1)-(16, 16), lwoods16
CLS
PUT (1, 1), grass
xx = 5
yy = 10
PUT (xx, yy), lwoods16, PSET
xx = 20
yy = 17
PUT (xx, yy), lwoods16, PSET
xx = 40
yy = 4
PUT (xx, yy), lwoods16, PSET
GET (1, 1)-(64, 32), lightwoods
CLS
DIM clist2(4)
clist2(1) = 15
clist2(2) = 7
clist2(3) = 15
clist2(4) = 15
FOR y = 1 TO 32
FOR x = 1 TO 64
RANDOMIZE TIMER
c = INT(RND * 4) + 1
PRESET (x, y), clist2(c)
NEXT x
NEXT y
GET (1, 1)-(64, 32), snow
CLS
DATA 07,15,15,15,15,07,15,15
DATA 15,15,15,07,15,15,15,15
DATA 15,07,15,15,15,15,15,15
DATA 15,15,15,15,15,15,07,15
DATA 15,15,15,07,15,15,15,15
DATA 15,15,15,15,15,07,15,15
DATA 15,15,07,15,07,15,15,15
DATA 15,15,15,07,15,15,07,15
GOSUB readdata
DIM spath8(64)
GET (1, 1)-(8, 8), spath8
CLS
FOR yy = 1 TO 32 STEP 8
FOR xx = 1 TO 64 STEP 8
PUT (xx, yy), spath8
NEXT xx
NEXT yy
GET (1, 1)-(64, 32), snowpath
CLS
DATA 15,14,15,14,15,14,15,14
DATA 14,02,14,02,02,15,14,15
DATA 15,02,15,02,02,14,15,14
DATA 14,02,02,02,02,15,02,15
DATA 15,02,02,02,02,02,02,14
DATA 14,15,14,02,02,02,02,15
DATA 15,14,15,02,02,14,15,14
DATA 14,15,14,02,02,15,14,15
GOSUB readdata
DIM cactus8(64)
GET (1, 1)-(8, 8), cactus8
CLS
FOR yy = 0 TO 32 STEP 8
FOR xx = 0 TO 64 STEP 8
PUT (xx, yy), cactus8
NEXT xx
NEXT yy
GET (1, 1)-(64, 32), cactus
CLS
DIM map$(60, 60)
DATA WA,WA,WA,WA,WA,WA,WA,WA,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT
DATA WA,WA,WA,WA,WA,WA,WA,WA,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT
DATA WA,WA,SA,SA,SA,SA,SA,DF,DF,DP,DP,DP,DP,DP,SA,SA,SA,SA,WA,DF,LF,DF,LF,LF,LF,LF,DF,DF,MT,MT,SR,MT,MT,MT,MT,MT,SR,SR,SR,MT,MT,MT,SR,MT,MT,SR,MT,MT,SR,SR,SR,MT,MT,SR,SR,SR,SR,SR,MT,MT
DATA WA,WA,SA,SA,SA,SA,SA,DF,DF,DP,DF,DF,DP,DF,WA,WA,SA,SA,WA,DF,LF,DF,DF,DF,LF,DF,DF,DF,MT,MT,SR,SR,SR,SR,MT,MT,MT,SR,MT,MT,SR,SR,SR,MT,SR,SR,MT,MT,SR,MT,SR,SR,MT,SR,SR,SR,SR,SR,MT,MT
DATA DF,DF,DF,GR,GR,DF,DF,DF,DF,DP,DF,DF,DP,DF,WA,WA,WA,WA,WA,DF,LF,LF,DF,DF,LF,LF,DF,DF,MT,MT,MT,MT,MT,SR,SR,SR,MT,SR,MT,MT,SR,MT,MT,MT,SR,MT,MT,MT,SR,MT,MT,MT,MT,SR,SR,SR,SR,SR,MT,MT
DATA DF,DF,DF,GR,GR,DF,DF,DF,DP,DP,DP,DP,DP,DP,DP,SA,SA,WA,WA,DF,DF,LF,DF,DF,LF,LF,DF,DF,MT,MT,SR,MT,MT,SR,MT,SR,SR,SR,SR,SR,SR,MT,MT,MT,SR,MT,MT,MT,SR,MT,MT,MT,MT,SR,SR,SR,SR,SR,MT,MT
DATA DF,DF,DF,GR,GR,GR,GR,GR,DP,DF,LF,LF,LF,DF,WA,WA,SA,SA,WA,DF,LF,LF,DF,DF,DF,LF,DF,DF,MT,MT,SR,MT,MT,SR,MT,MT,MT,SR,MT,MT,MT,MT,MT,MT,SR,MT,MT,MT,SR,MT,MT,MT,MT,SR,SR,SR,SR,SR,MT,MT
DATA DF,DF,DF,GR,GR,GR,GR,GR,DF,LF,LF,LF,LF,DF,WA,WA,WA,WA,WA,DF,LF,DF,DF,DF,LF,LF,DF,DF,MT,MT,SR,MT,MT,SR,MT,MT,MT,SR,MT,MT,MT,SR,SR,SR,SR,MT,MT,MT,SR,MT,MT,MT,MT,MT,MT,SR,MT,MT,MT,MT
DATA DF,DF,DF,GR,GR,GR,GR,GR,DF,LF,LF,DF,LF,DF,DF,DF,DF,DF,DF,DF,LF,DF,DF,LF,LF,LF,DF,DF,MT,MT,SR,SR,MT,MT,MT,MT,MT,SR,MT,MT,SR,SR,MT,SR,MT,MT,MT,MT,SR,MT,MT,MT,SR,MT,MT,SR,MT,MT,MT,MT
DATA DF,DF,GR,GR,GR,GR,GR,GR,DF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,DF,DF,MT,MT,MT,SR,MT,MT,SR,SR,SR,SR,MT,SR,SR,MT,MT,SR,MT,MT,MT,MT,SR,SR,SR,SR,SR,MT,SR,SR,MT,MT,MT,MT
DATA DF,DF,GR,GR,GR,GR,GR,GR,DF,LF,LF,LF,LF,DF,DF,DF,DF,LF,DF,DF,DF,DF,DF,LF,LF,LF,DF,DF,MT,MT,MT,SR,MT,MT,SR,MT,MT,SR,MT,MT,MT,MT,MT,SR,MT,MT,MT,MT,MT,SR,MT,MT,SR,MT,SR,MT,SR,SR,MT,MT
DATA DF,DF,GR,GR,GR,GR,GR,GR,DF,LF,DF,DF,LF,LF,DF,DF,DF,LF,DF,DF,DF,WA,WA,WA,WA,DF,DF,DF,MT,MT,MT,SR,MT,MT,SR,MT,MT,SR,SR,MT,MT,MT,SR,SR,SR,MT,MT,MT,MT,SR,MT,MT,SR,MT,SR,SR,SR,MT,MT,MT
DATA DF,DF,GR,GR,GR,GR,GR,GR,DF,LF,DF,DF,LF,LF,LF,LF,LF,LF,LF,LF,SA,SA,WA,WA,WA,DF,DF,DF,MT,MT,MT,SR,MT,MT,MT,MT,MT,MT,SR,SR,MT,SR,SR,MT,SR,MT,MT,MT,MT,SR,MT,MT,MT,MT,SR,MT,MT,MT,MT,MT
DATA DF,DF,GR,GR,GR,GR,GR,GR,DF,LF,DF,DF,DF,DF,LF,LF,LF,LF,LF,LF,LF,LF,DF,DF,DF,DF,DF,DF,MT,MT,MT,SR,SR,SR,MT,MT,MT,MT,MT,SR,SR,SR,MT,MT,SR,MT,MT,MT,SR,SR,SR,SR,SR,SR,SR,SR,SR,SR,MT,MT
DATA DF,DF,GR,GR,GR,GR,GR,GR,DF,LF,DF,DP,DP,DP,DF,LF,LF,LF,LF,LF,LF,LF,LF,DF,DF,DF,DF,DF,MT,MT,MT,MT,MT,SR,MT,MT,MT,MT,MT,SR,MT,SR,SR,SR,SR,MT,MT,MT,SR,MT,MT,SR,MT,MT,MT,MT,SR,MT,MT,MT
DATA DF,DF,DF,DF,DF,DF,DF,DF,DF,LF,LF,LF,DP,DF,DF,LF,LF,LF,LF,LF,LF,LF,LF,DF,DF,DF,DF,DF,MT,MT,MT,SR,SR,SR,SR,SR,MT,MT,MT,SR,MT,MT,MT,MT,SR,SR,SR,SR,SR,MT,MT,SR,SR,SR,MT,MT,SR,SR,MT,MT
DATA DF,DF,LF,LF,LF,LF,LF,LF,LF,LF,DF,DF,DF,DF,DF,LF,LF,LF,LF,LF,LF,LF,LF,DF,DF,DF,DF,DF,MT,MT,MT,SR,MT,MT,MT,DP,MT,MT,SR,SR,MT,MT,MT,MT,MT,MT,SR,MT,MT,MT,MT,MT,MT,SR,MT,MT,MT,MT,MT,MT
DATA DF,DF,SA,WA,SA,WA,WA,WA,DF,LF,DF,DF,DF,DF,DF,LF,LF,LF,LF,LF,LF,LF,LF,DF,DF,DF,DF,DF,MT,MT,SR,SR,MT,MT,MT,DP,MT,MT,MT,MT,MT,SR,SR,SR,MT,MT,DP,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT
DATA WA,WA,SA,WA,SA,SA,WA,WA,DF,LF,DF,DF,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DF,DF,DF,DF,DF,MT,MT,SR,MT,MT,MT,MT,DP,DP,DP,DP,MT,MT,SR,SR,SR,MT,MT,DP,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT
DATA WA,WA,SA,WA,SA,SA,WA,WA,DF,LF,DF,DF,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DF,DF,DF,DF,DF,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,DP,MT,MT,SR,SR,MT,MT,MT,DP,MT,MT,MT,MT,MT,MT,SR,SR,SR,MT,MT,MT,MT
DATA WA,WA,SA,GR,GR,GR,GR,WA,DF,DF,DF,DF,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DF,DF,DF,DF,DF,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,DP,MT,MT,SR,SR,MT,DP,DP,DP,MT,MT,MT,MT,MT,MT,SR,SR,SR,MT,MT,MT,MT
DATA WA,WA,SA,WA,WA,GR,GR,WA,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,DP,DP,MT,SR,MT,MT,DP,MT,MT,MT,MT,MT,MT,MT,MT,SR,SR,SR,MT,MT,MT,MT
DATA WA,WA,SA,WA,WA,WA,WA,WA,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,DF,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,DP,MT,SR,DP,MT,DP,MT,MT,MT,MT,MT,MT,MT,MT,MT,DP,MT,MT,MT,MT,MT
DATA WA,WA,SA,WA,WA,WA,WA,WA,WA,GR,GR,GR,GR,WA,WA,SP,DP,SP,SP,SP,LP,LP,LP,LP,DF,DF,DF,DF,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,DP,MT,MT,DP,DP,DP,DP,MT,MT,MT,MT,MT,MT,MT,MT,DP,DP,MT,MT,MT,MT
DATA WA,WA,SA,SA,SA,SA,WA,SA,WA,GR,GR,GR,GR,WA,WA,SP,DP,DP,DP,SP,DP,LP,LP,LP,DF,DF,DF,DF,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,DP,DP,MT,MT,MT,DP,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,DP,MT,MT,MT,MT
DATA WA,WA,WA,WA,WA,SA,WA,WA,WA,GR,GR,GR,GR,WA,WA,SP,SP,SP,DP,SP,DP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,MT,MT,MT,MT,MT,DP,DP,MT,MT,DP,DP,MT,DP,MT,MT,MT,MT,MT,MT,MT,DP,DP,MT,MT,MT
DATA WA,SA,WA,WA,SA,SA,SA,SA,SA,GR,GR,GR,GR,WA,WA,SP,SP,DP,DP,DP,DP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,MT,MT,MT,MT,MT,MT,DP,MT,MT,MT,DP,MT,DP,MT,MT,MT,MT,MT,DP,MT,MT,DP,MT,MT,MT
DATA WA,WA,WA,WA,SA,WA,WA,WA,WA,GR,GR,GR,GR,WA,WA,SP,SP,DP,SP,LP,DP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,DP,LP,LP,LP,MT,MT,MT,MT,MT,MT,DP,DP,MT,MT,DP,MT,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,MT,MT
DATA WA,WA,SA,WA,SA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,SA,DP,DP,SP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,LP,LP,LP,MT,MT,MT,MT,MT,MT,MT,DP,DP,DP,DP,DP,DP,MT,MT,MT,MT,DP,MT,MT,MT,MT,MT,MT,MT
DATA WA,WA,SA,SA,SA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,SA,SP,SP,SP,DP,LP,LP,LP,LP,LP,LP,DP,LP,LP,LP,DP,LP,LP,LP,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,DP,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT
DATA WA,WA,SA,WA,WA,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,SP,LP,WA,WA,LP,LP,LP,DP,DP,LP,LP,LP,LP,LP,LP,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,DP,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT,MT
DATA LP,LP,DP,LP,LP,LP,DP,SP,LP,SP,SP,DP,DP,DP,DP,DP,DP,DP,DP,SP,LP,WA,DP,DP,DP,DP,SP,DP,LP,LP,LP,LP,LP,LP,SP,SP,RF,RF,RF,RF,RF,RF,RF,RF,CA,SA,CA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,WA,WA
DATA LP,LP,DP,LP,LP,LP,DP,SP,LP,SP,SP,DP,SP,WA,WA,DP,LP,LP,DP,SP,LP,WA,WA,WA,WA,DP,SP,DP,LP,LP,LP,SP,DP,SP,SP,SP,RF,RF,RF,RF,RF,RF,RF,RF,SA,SA,SA,CA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,WA,WA
DATA LP,LP,DP,SP,SP,SP,DP,SP,LP,DP,DP,DP,SP,WA,WA,DP,LP,LP,DP,SP,LP,LP,LP,LP,LP,DP,SP,DP,LP,LP,LP,SP,DP,DP,SP,SP,RF,RF,RF,RF,DP,RF,RF,RF,SA,CA,SA,SA,SA,SA,CA,SA,SA,SA,SA,SA,CA,SA,WA,WA
DATA LP,LP,DP,DP,DP,DP,DP,SP,LP,DP,LP,LP,LP,DP,DP,DP,DP,LP,DP,DP,LP,LP,LP,LP,LP,DP,SP,DP,LP,LP,LP,SP,SP,DP,SP,SP,RF,RF,DP,DP,DP,RF,RF,RF,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,WA,WA
DATA LP,LP,DP,SP,SP,SP,DP,SP,LP,DP,DP,DP,DP,LP,LP,LP,LP,LP,DP,SP,LP,LP,LP,DP,DP,DP,SP,DP,LP,LP,LP,SP,DP,DP,SP,SP,RF,RF,DP,RF,RF,RF,RF,RF,SP,SP,SP,SP,SA,SA,SA,CA,SA,SA,SA,SA,CA,SA,WA,WA
DATA SP,SP,DP,DP,LP,DP,DP,LP,LP,DP,LP,LP,LP,LP,LP,LP,LP,DP,DP,SP,LP,LP,LP,DP,LP,LP,LP,DP,SP,SP,SP,DP,DP,SP,SP,DP,DP,DP,DP,RF,RF,DP,DP,RF,SP,SP,SP,SP,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,WA,WA
DATA SP,LP,LP,DP,LP,SP,DP,LP,LP,DP,DP,SP,SP,SP,SP,SP,DP,DP,SP,SP,LP,LP,DP,DP,LP,LP,LP,DP,SP,SP,DP,DP,SP,SP,SP,DP,DP,DP,RF,RF,RF,RF,DP,RF,SP,SP,SP,SP,SA,SA,SA,SA,SA,SA,SA,CA,SA,SA,WA,WA
DATA LP,LP,LP,DP,DP,LP,DP,LP,LP,SP,DP,SP,SP,SP,SP,SP,DP,LP,LP,LP,LP,LP,DP,SP,LP,LP,LP,DP,SP,SP,DP,SP,SP,SP,SP,DP,DP,DP,RF,RF,RF,RF,DP,DP,DP,DP,SP,SP,CA,SA,SA,SA,SA,CA,SA,SA,SA,SA,WA,WA
DATA LP,LP,LP,LP,DP,SP,DP,DP,DP,DP,DP,DP,LP,SP,SP,SP,DP,LP,LP,LP,LP,LP,DP,SP,DP,DP,DP,DP,DP,DP,DP,SP,SP,SP,SP,DP,DP,DP,RF,RF,RF,RF,RF,RF,RF,DP,SP,SP,SA,SA,SA,CA,SA,SA,SA,SA,SA,SA,WA,WA
DATA LP,LP,LP,LP,LP,LP,LP,DP,LP,LP,SP,DP,DP,DP,DP,LP,DP,DP,DP,SP,SP,SP,DP,SP,DP,LP,LP,LP,DP,SP,DP,DP,DP,DP,DP,DP,DP,DP,RF,RF,RF,RF,RF,RF,RF,DP,SP,SP,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,WA,WA
DATA SP,SP,SP,SP,DP,DP,DP,DP,DP,DP,SP,SP,SP,SP,SP,SP,SP,SP,DP,SP,SP,SP,DP,DP,DP,DP,LP,LP,LP,DP,DP,SP,SP,SP,SP,DP,DP,DP,RF,RF,RF,RF,RF,RF,DP,DP,SP,SP,SA,CA,SA,CA,SA,SA,SA,SA,CA,SA,WA,WA
DATA SP,SP,DP,DP,DP,DP,LP,DP,LP,DP,DP,SA,SA,SA,SA,SA,SA,LP,DP,LP,LP,LP,LP,LP,LP,DP,LP,LP,LP,DP,SP,SP,SP,SP,SP,DP,RF,RF,RF,RF,RF,RF,RF,RF,DP,SP,SP,SP,SA,SA,SA,SA,SA,CA,CA,SA,SA,SA,WA,WA
DATA SP,SP,SP,SP,SP,DP,LP,DP,DP,DP,SP,SA,WA,WA,WA,SA,LP,LP,DP,LP,LP,LP,LP,LP,LP,DP,LP,LP,LP,DP,SP,SP,SP,SP,SP,DP,DP,DP,DP,DP,DP,DP,DP,DP,DP,SP,SP,SP,SA,SA,CA,SA,SA,SA,SA,SA,SA,SA,WA,WA
DATA SP,SP,SP,SP,SP,DP,SP,SP,SP,SP,SP,SA,WA,WA,WA,SA,SA,LP,DP,LP,LP,LP,LP,LP,LP,DP,LP,LP,LP,DP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SA,SA,SA,CA,SA,CA,SA,SA,CA,SA,WA,WA
DATA SP,SP,SP,SP,SP,SP,SP,LP,LP,LP,SA,SA,WA,WA,WA,WA,SA,LP,DP,DP,DP,DP,DP,DP,DP,DP,LP,LP,LP,DP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,WA,WA
DATA SP,SP,SP,SP,SP,SP,SP,LP,LP,LP,SA,SA,SA,SA,SA,SA,SA,LP,DP,LP,LP,LP,DP,LP,LP,LP,LP,LP,LP,DP,SP,SP,SP,CA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,CA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,WA,WA
DATA WA,WA,WA,WA,WA,WA,WA,LP,LP,LP,LP,LP,LP,SA,SA,LP,LP,LP,DP,LP,LP,LP,DP,LP,LP,LP,LP,LP,LP,DP,SP,SP,SP,CA,SA,SA,SA,SA,SA,CA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,CA,SA,SA,WA,WA
DATA WA,WA,WA,WA,WA,WA,WA,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,DP,LP,LP,LP,DP,DP,LP,LP,DP,DP,DP,DP,SP,SP,SP,CA,SA,SA,SA,SA,SA,SA,SA,CA,SA,SA,SA,SA,SA,SA,SA,CA,SA,SA,SA,CA,SA,SA,SA,SA,WA,WA
DATA WA,WA,WA,WA,WA,WA,WA,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,DP,LP,LP,LP,DP,LP,LP,LP,DP,SP,SP,SP,SP,SP,SP,CA,SA,SA,SA,CA,SA,SA,SA,SA,SA,SA,SA,SA,CA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,WA,WA
DATA WA,WA,WA,WA,WA,WA,WA,LP,LP,LP,LP,DP,DP,DP,DP,DP,DP,DP,DP,LP,LP,DP,DP,SP,DP,DP,DP,DP,DP,DP,DP,SP,SP,CA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,CA,SA,SA,CA,SA,SA,CA,SA,SA,SA,CA,SA,SA,SA,WA,WA
DATA WA,WA,WA,WA,WA,WA,WA,LP,LP,LP,LP,LP,LP,LP,DP,LP,LP,LP,LP,LP,LP,DP,SP,SP,SP,SP,SP,SP,SP,DP,SP,SP,SP,CA,SA,SA,CA,SA,SA,SA,SA,CA,SA,SA,SA,SA,SA,SA,SA,SA,SA,CA,SA,SA,SA,SA,SA,SA,WA,WA
DATA WA,WA,WA,WA,WA,WA,WA,LP,LP,LP,LP,LP,LP,LP,DP,LP,LP,LP,LP,LP,LP,DP,SP,SP,SP,SP,SP,SP,SP,DP,SP,SP,SP,CA,SA,CA,SA,SA,CA,SA,SA,SA,SA,CA,SA,SA,SA,CA,SA,SA,SA,SA,SA,SA,SA,CA,SA,SA,WA,WA
DATA WA,WA,WA,WA,WA,WA,WA,LP,LP,LP,LP,LP,DP,DP,DP,LP,DP,DP,DP,LP,LP,DP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,CA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,WA,WA
DATA WA,WA,WA,WA,WA,WA,WA,LP,LP,LP,LP,LP,LP,SA,SA,LP,DP,LP,DP,LP,LP,DP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,SP,CA,CA,CA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,CA,SA,SA,SA,SA,SA,SA,SA,CA,SA,SA,SA,WA,WA
DATA WA,WA,WA,WA,WA,WA,WA,LP,LP,LP,LP,LP,LP,WA,WA,LP,DP,LP,DP,LP,LP,DP,SP,SP,SP,CA,SA,SA,SA,SA,SA,CA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,CA,SA,SA,SA,SA,CA,SA,SA,SA,SA,SA,SA,SA,SA,WA,WA
DATA WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,SP,DP,SP,DP,DP,DP,DP,SA,SA,SA,SA,SA,CA,SA,SA,SA,SA,SA,CA,SA,SA,SA,CA,SA,SA,SA,CA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,CA,SA,CA,SA,SA,SA,WA,WA
DATA WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,SP,DP,SP,SP,SP,SP,SP,SP,SP,SP,SA,CA,SA,SA,SA,SA,CA,SA,SA,SA,CA,SA,SA,CA,SA,SA,SA,SA,SA,SA,SA,SA,CA,SA,SA,SA,SA,SA,SA,SA,SA,SA,SA,WA,WA
DATA WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,SP,LP,SP,SP,SP,SP,SP,SP,SP,SP,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,WA,WA
DATA WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,WA,LP,LP,LP,LP,LP,LP,LP,LP,LP,LP,SA,SA,CA,SA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,CA,WA,WA
FOR my = 1 TO 60 'mx and my are for this loop
FOR mx = 1 TO 60
READ map$(mx, my)
NEXT mx
NEXT my
px = 4 'px and py are player x and player y
py = 4
DIM iterrain$(7)
iterrain$(1) = "MT"
iterrain$(2) = "WA"
iterrain$(3) = "DF"
iterrain$(4) = "RF"
iterrain$(5) = "SP"
iterrain$(6) = "LP"
iterrain$(7) = "CA"
weapon$ = "Fists"
armor$ = "None"
hp = 15
maxhp = 15
CALL drawscreen
DO
a$ = INKEY$
IF a$ = "8" OR a$ = "w" OR a$ = "W" THEN CALL moveup
IF a$ = "6" OR a$ = "d" OR a$ = "D" THEN CALL moveright
IF a$ = "2" OR a$ = "s" OR a$ = "S" THEN CALL movedown
IF a$ = "4" OR a$ = "a" OR a$ = "A" THEN CALL moveleft
LOOP
'graphical stuff
readdata:
FOR yyy = 1 TO 8
FOR xxx = 1 TO 8
READ pixel
PSET (xxx, yyy), pixel
NEXT xxx
NEXT yyy
RETURN
readdata16:
FOR yyy = 1 TO 16
FOR xxx = 1 TO 16
READ pixel
PSET (xxx, yyy), pixel
NEXT xxx
NEXT yyy
RETURN
SUB drawscreen
CLS
gx = px - 2 'gx and gy are for graphical purposes
gy = py - 2
FOR i = 0 TO 256 STEP 64
FOR j = 0 TO 128 STEP 32
IF map$(gx, gy) = "GR" THEN PUT (i, j), grass
IF map$(gx, gy) = "WA" THEN PUT (i, j), Water
IF map$(gx, gy) = "SA" THEN PUT (i, j), sand
IF map$(gx, gy) = "DF" THEN PUT (i, j), tree
IF map$(gx, gy) = "MT" THEN PUT (i, j), mountain
IF map$(gx, gy) = "LP" THEN PUT (i, j), largepine
IF map$(gx, gy) = "RF" THEN PUT (i, j), redpine
IF map$(gx, gy) = "SP" THEN PUT (i, j), pineforest
IF map$(gx, gy) = "DP" THEN PUT (i, j), dirtpath
IF map$(gx, gy) = "LF" THEN PUT (i, j), lightwoods
IF map$(gx, gy) = "SN" THEN PUT (i, j), snow
IF map$(gx, gy) = "SR" THEN PUT (i, j), snowpath
IF map$(gx, gy) = "CA" THEN PUT (i, j), cactus
gy = gy + 1
NEXT j
gx = gx + 1
gy = py - 2
NEXT i
DRAW "bm160,70c14bu5r2f2d3l2u2l2d2l2u3e2bf2bd4c07d1c3r4f5g2h3d6g2l1d1c1d9l1u10c3l2d1c1d9l1u10c3l1h2u6g3h2e5r5u1c7l1e1u1l1c14l1u3r3d1l2r3d2bd4p3,3c14bf7bu1"
DRAW "c14be1l4u6r8d9g2l4h2u2bf1p14,14"
DRAW "c04bh1bu3r3u4r2d4l1u3d3r4d1l4f4l1h4r1g4r1e3u1l4"
DRAW "c15bl13bg2bu3l1h2u8e2r1g2d8f2d1c6d3l1u3"
LINE (0, 159)-(319, 199), 14, B
LOCATE 21, 2
COLOR 4
PRINT "HP: "; hp; "/"; maxhp
LOCATE 22, 2
COLOR 15
PRINT "Weapon: "; weapon$
LOCATE 23, 2
PRINT "Armor: "; armor$
LOCATE 21, 25
PRINT "(S)tatus"
LOCATE 22, 25
PRINT "(I)nventory"
LOCATE 23, 25
PRINT "(Q)uit"
PCOPY 1, 0
END SUB
SUB encounter
LINE (2, 160)-(318, 198), 0, BF
LOCATE 21, 2
PRINT "You were attacked by"
PCOPY 1, 0
SLEEP
LINE (2, 160)-(318, 198), 0, BF
PCOPY 1, 0
END SUB
SUB movedown
FOR a = 1 TO 7
IF map$(px, py + 1) = iterrain$(a) THEN EXIT SUB
NEXT a
py = py + 1
RANDOMIZE TIMER
IF INT(RND * 60) = 1 THEN
CALL drawscreen
LOCATE 21, 2
LINE (2, 160)-(318, 198), 0, BF
PRINT "Encounter!!!"
CIRCLE (160, 48), 10, 15
PCOPY 1, 0
DO
IF INKEY$ = " " THEN EXIT DO
LOOP
CALL encounter
END IF
CALL drawscreen
END SUB
SUB moveleft
FOR a = 1 TO 7
IF map$(px - 1, py) = iterrain$(a) THEN EXIT SUB
NEXT a
px = px - 1
RANDOMIZE TIMER
IF INT(RND * 60) = 1 THEN
CALL drawscreen
LOCATE 21, 2
LINE (2, 160)-(318, 198), 0, BF
PRINT "Encounter!!!"
CIRCLE (224, 80), 10, 15
PCOPY 1, 0
DO
IF INKEY$ = " " THEN EXIT DO
LOOP
CALL encounter
END IF
CALL drawscreen
END SUB
SUB moveright
FOR a = 1 TO 7
IF map$(px + 1, py) = iterrain$(a) THEN EXIT SUB
NEXT a
px = px + 1
RANDOMIZE TIMER
IF INT(RND * 60) = 1 THEN
CALL drawscreen
LOCATE 21, 2
LINE (2, 160)-(318, 198), 0, BF
PRINT "Encounter!!!"
CIRCLE (96, 80), 10, 15
PCOPY 1, 0
DO
IF INKEY$ = " " THEN EXIT DO
LOOP
CALL encounter
END IF
CALL drawscreen
END SUB
SUB moveup
FOR a = 1 TO 7
IF map$(px, py - 1) = iterrain$(a) THEN EXIT SUB
NEXT a
py = py - 1
RANDOMIZE TIMER
CALL drawscreen
IF INT(RND * 60) = 1 THEN
LOCATE 21, 2
LINE (2, 160)-(318, 198), 0, BF
PRINT "Encounter!!!"
CIRCLE (160, 112), 10, 15
PCOPY 1, 0
DO
IF INKEY$ = " " THEN EXIT DO
LOOP
CALL encounter
END IF
CALL drawscreen
END SUB