Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
whats wrong with this code??
#1
im using a bmp loader for the first time(z!re wrote it)
my problem is this
when i load the grass tile it puts a 16*16 black tile so can you tell me what is wrong with it?
Code:
DEFINT A-Z
DECLARE SUB LoadBMP (DestSeg%, SegxRes%, SegyRes%, File$, sX%, sY%, SwitchPal%, Trans%)
DECLARE SUB loadsprites ()

DIM SHARED grass(129) AS INTEGER
DIM SHARED wall(129)  AS INTEGER
DIM SHARED water(129) AS INTEGER
DIM SHARED grassflag(129)  AS INTEGER
DIM SHARED guy(129) AS INTEGER
DIM SHARED guymask(129) AS INTEGER
DIM SHARED map1(20, 12) AS INTEGER
DIM SHARED map2(20, 12) AS INTEGER
DIM SHARED map3(20, 12) AS INTEGER


TYPE BMPHeaderType
ID AS STRING * 2
Size AS LONG
RSV1 AS INTEGER
RSV2 AS INTEGER
offset AS LONG
HORZ AS LONG
WID AS LONG
HEI AS LONG
PLANES AS INTEGER
BPP AS INTEGER
COMPRESSION AS LONG
IMAGESIZE AS LONG
xRes AS LONG
yRes AS LONG
CLRUSED AS LONG
CLRIMPORT AS LONG
Pal AS STRING * 1024
END TYPE

CLS : SCREEN 13

'Load the BMP
LoadBMP &HA000, 320, 200, "grass.bmp", 0, 0, 1, -1
CLS
GET (0, 0)-(15, 15), grass
SCREEN 13

guyx = 4          'x,y corrdinates for sprite
guyy = 5


loadsprites        'loading sub

FOR y = 1 TO 12            'drawing map
FOR x = 1 TO 20

IF map1(x, y) = 1 THEN PUT (x * 16 - 16, y * 16 - 16), grass, PSET
IF map1(x, y) = 2 THEN PUT (x * 16 - 16, y * 16 - 16), wall, PSET
IF map1(x, y) = 3 THEN PUT (x * 16 - 16, y * 16 - 16), water, PSET
IF map1(x, y) = 4 THEN PUT (x * 16 - 16, y * 16 - 16), grassflag, PSET
NEXT x: NEXT y

PUT (guyx * 16 - 16, guyy * 16 - 16), guymask, AND     'placing guy and
PUT (guyx * 16 - 16, guyy * 16 - 16), guy, OR          'the mask

'*****************************************************************
DO                                     'main loop

a$ = INKEY$

IF a$ = "w" AND map1(guyx, guyy - 1) <> 2 THEN        'movement
IF map1(guyx, guyy - 1) <> 3 THEN
guyy = guyy - 1
END IF
END IF

IF a$ = "s" AND map1(guyx, guyy + 1) <> 2 THEN       '"
IF map1(guyx, guyy + 1) <> 3 THEN
guyy = guyy + 1
END IF
END IF

IF a$ = "a" AND map1(guyx - 1, guyy) <> 2 THEN       '"
IF map1(guyx - 1, guyy) <> 3 THEN
guyx = guyx - 1
END IF
END IF

IF a$ = "d" AND map1(guyx + 1, guyy) <> 2 THEN         '"
IF map1(guyx + 1, guyy) <> 3 THEN
guyx = guyx + 1
END IF
END IF


IF map1(guyx, guyy) = 4 THEN GOTO map2                  'collision
                                                        'with portal
IF oldguyx <> guyx OR oldguyy <> guyy THEN

oldguyy = guyy
oldguyx = guyx

FOR y = 1 TO 12
FOR x = 1 TO 20
IF map1(x, y) = 1 THEN PUT (x * 16 - 16, y * 16 - 16), grass, PSET
IF map1(x, y) = 2 THEN PUT (x * 16 - 16, y * 16 - 16), wall, PSET
IF map1(x, y) = 3 THEN PUT (x * 16 - 16, y * 16 - 16), water, PSET
IF map1(x, y) = 4 THEN PUT (x * 16 - 16, y * 16 - 16), grassflag, PSET
NEXT x: NEXT y

PUT (guyx * 16 - 16, guyy * 16 - 16), guymask, AND
PUT (guyx * 16 - 16, guyy * 16 - 16), guy, OR

END IF

LOOP UNTIL a$ = "q"

IF a$ = "q" THEN END

map2:                     'map2

guyy = 7
guyx = 1
CLS
FOR y = 1 TO 12
FOR x = 1 TO 20
IF map2(x, y) = 1 THEN PUT (x * 16 - 16, y * 16 - 16), grass, PSET
IF map2(x, y) = 2 THEN PUT (x * 16 - 16, y * 16 - 16), wall, PSET
IF map2(x, y) = 3 THEN PUT (x * 16 - 16, y * 16 - 16), water, PSET
IF map2(x, y) = 4 THEN PUT (x * 16 - 16, y * 16 - 16), grassflag, PSET
NEXT x: NEXT y

PUT (guyx * 16 - 16, guyy * 16 - 16), guymask, AND
PUT (guyx * 16 - 16, guyy * 16 - 16), guy, OR

DO
a$ = INKEY$

IF a$ = "w" AND map2(guyx, guyy - 1) <> 2 THEN
IF map2(guyx, guyy - 1) <> 3 THEN
guyy = guyy - 1
END IF
END IF

IF a$ = "s" AND map2(guyx, guyy + 1) <> 2 THEN
IF map2(guyx, guyy + 1) <> 3 THEN
guyy = guyy + 1
END IF
END IF

IF a$ = "a" AND map2(guyx - 1, guyy) <> 2 THEN
IF map2(guyx - 1, guyy) <> 3 THEN
guyx = guyx - 1
END IF
END IF

IF a$ = "d" AND map2(guyx + 1, guyy) <> 2 THEN
IF map2(guyx + 1, guyy) <> 3 THEN
guyx = guyx + 1
END IF
END IF

IF map2(guyx, guyy) = 4 THEN GOTO map3

IF oldguyx <> guyx OR oldguyy <> guyy THEN

oldguyy = guyy
oldguyx = guyx

FOR y = 1 TO 12
FOR x = 1 TO 20
IF map2(x, y) = 1 THEN PUT (x * 16 - 16, y * 16 - 16), grass, PSET
IF map2(x, y) = 2 THEN PUT (x * 16 - 16, y * 16 - 16), wall, PSET
IF map2(x, y) = 3 THEN PUT (x * 16 - 16, y * 16 - 16), water, PSET
IF map2(x, y) = 4 THEN PUT (x * 16 - 16, y * 16 - 16), grassflag, PSET
NEXT x: NEXT y

PUT (guyx * 16 - 16, guyy * 16 - 16), guymask, AND
PUT (guyx * 16 - 16, guyy * 16 - 16), guy, OR
END IF
LOOP UNTIL a$ = "q"

map3:
guyy = 1
guyx = 17
CLS
FOR y = 1 TO 12
FOR x = 1 TO 20
IF map3(x, y) = 1 THEN PUT (x * 16 - 16, y * 16 - 16), grass, PSET
IF map3(x, y) = 2 THEN PUT (x * 16 - 16, y * 16 - 16), wall, PSET
IF map3(x, y) = 3 THEN PUT (x * 16 - 16, y * 16 - 16), water, PSET
IF map3(x, y) = 4 THEN PUT (x * 16 - 16, y * 16 - 16), grassflag, PSET
NEXT x: NEXT y

PUT (guyx * 16 - 16, guyy * 16 - 16), guymask, AND
PUT (guyx * 16 - 16, guyy * 16 - 16), guy, OR

DO
a$ = INKEY$

IF a$ = "w" AND map3(guyx, guyy - 1) <> 2 THEN
IF map3(guyx, guyy - 1) <> 3 THEN
guyy = guyy - 1
END IF
END IF

IF a$ = "s" AND map3(guyx, guyy + 1) <> 2 THEN
IF map3(guyx, guyy + 1) <> 3 THEN
guyy = guyy + 1
END IF
END IF

IF a$ = "a" AND map3(guyx - 1, guyy) <> 2 THEN
IF map3(guyx - 1, guyy) <> 3 THEN
guyx = guyx - 1
END IF
END IF

IF a$ = "d" AND map3(guyx + 1, guyy) <> 2 THEN
IF map3(guyx + 1, guyy) <> 3 THEN
guyx = guyx + 1
END IF
END IF



IF oldguyx <> guyx OR oldguyy <> guyy THEN

oldguyy = guyy
oldguyx = guyx

FOR y = 1 TO 12
FOR x = 1 TO 20
IF map3(x, y) = 1 THEN PUT (x * 16 - 16, y * 16 - 16), grass, PSET
IF map3(x, y) = 2 THEN PUT (x * 16 - 16, y * 16 - 16), wall, PSET
IF map3(x, y) = 3 THEN PUT (x * 16 - 16, y * 16 - 16), water, PSET
IF map3(x, y) = 4 THEN PUT (x * 16 - 16, y * 16 - 16), grassflag, PSET
NEXT x: NEXT y

PUT (guyx * 16 - 16, guyy * 16 - 16), guymask, AND
PUT (guyx * 16 - 16, guyy * 16 - 16), guy, OR

END IF


LOOP UNTIL a$ = "q"


'wall
DATA 07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07
DATA 07,08,08,08,08,08,08,08,08,08,08,08,08,08,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,08,08,08,08,08,08,08,08,08,08,08,08,08,07
DATA 07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07

'water

DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,09,01,01,09,01,01,09,01,01,01,01,01,01,01,01
DATA 01,01,09,09,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,09,01,01,01,09,01,01
DATA 01,01,01,01,01,01,01,01,01,01,09,09,09,01,01,01
DATA 01,01,01,01,09,01,09,01,09,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,09,01,01,01,01,01,01,01,01
DATA 09,01,01,01,01,01,01,01,01,01,01,01,01,09,01,01
DATA 01,01,01,01,01,01,01,01,09,01,01,09,01,01,01,01
DATA 01,01,01,09,01,01,01,01,01,09,09,01,01,01,01,01
DATA 01,01,01,01,09,09,09,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01


'grassflag

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,10,02,02,02,02,02,10,02,02,02,02,10,02,02
DATA 02,02,02,10,02,02,02,10,10,02,02,02,10,02,02,02
DATA 02,02,02,10,02,10,02,10,10,02,02,10,02,02,02,02
DATA 10,02,02,02,10,10,02,10,02,02,10,10,02,02,02,02
DATA 02,10,02,02,10,10,02,02,02,02,02,10,02,02,02,02
DATA 02,10,02,02,02,02,02,02,02,10,02,02,02,02,10,02
DATA 02,02,10,02,02,02,02,02,10,10,02,02,02,10,02,02
DATA 02,10,02,02,02,02,10,02,02,02,02,02,02,10,02,02
DATA 02,10,10,10,02,10,10,02,02,02,02,02,10,02,02,02
DATA 02,02,10,10,02,02,02,10,02,02,02,02,02,02,02,02
DATA 02,02,02,02,02,02,02,02,10,02,02,02,02,02,10,02
DATA 10,02,02,02,02,02,02,02,02,02,02,02,02,10,02,02
DATA 02,10,10,02,02,02,02,02,02,02,02,02,02,02,02,02
DATA 02,02,10,02,02,02,02,02,02,02,02,02,02,02,02,02


'guy
DATA 0,0,0,5,5,5,5,5,5,5,5,5,5,5,0,0
DATA 0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,0
DATA 0,5,5,5,6,5,5,5,5,5,5,5,5,5,5,5
DATA 0,5,5,6,6,6,6,5,5,5,5,6,5,0,5,5
DATA 0,0,5,6,6,0,6,6,6,0,6,6,5,5,0,0
DATA 0,0,0,6,6,0,6,6,6,0,6,6,0,0,0,0
DATA 0,0,0,0,6,6,6,6,6,6,6,0,0,0,0,0
DATA 0,0,4,4,4,6,6,6,6,6,4,6,0,0,0,0
DATA 0,4,4,4,4,4,4,4,4,4,4,6,6,0,0,0
DATA 6,6,6,4,4,4,4,4,4,4,6,6,6,6,0,0
DATA 6,6,6,0,4,4,4,4,4,4,6,6,6,6,0,0
DATA 6,6,6,0,1,4,4,4,4,4,4,6,6,0,0,0
DATA 0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0
DATA 0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0
DATA 0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

'guymask
DATA 255,255,255,5,5,5,5,5,5,5,5,5,5,5,255,255
DATA 255,255,5,5,5,5,5,5,5,5,5,5,5,5,5,255
DATA 255,5,5,5,6,5,5,5,5,5,5,5,5,5,5,5
DATA 255,5,5,6,6,6,6,5,5,5,5,6,5,255,5,5
DATA 255,255,5,6,6,0,6,6,6,0,6,6,5,5,255,255
DATA 255,255,255,6,6,0,6,6,6,0,6,6,255,255,255,255
DATA 255,255,255,255,6,6,6,6,6,6,6,255,255,255,255,255
DATA 255,255,4,4,4,6,6,6,6,6,4,6,255,255,255,255
DATA 255,4,4,4,4,4,4,4,4,4,4,6,6,255,255,255
DATA 6,6,6,4,4,4,4,4,4,4,6,6,6,6,255,255
DATA 6,6,6,255,4,4,4,4,4,4,6,6,6,6,255,255
DATA 6,6,6,255,1,4,4,4,4,4,4,6,6,255,255,255
DATA 255,255,255,255,1,1,1,1,1,1,1,1,1,255,255,255
DATA 255,255,255,255,1,1,1,1,1,1,1,1,255,255,255,255
DATA 255,255,255,255,255,1,1,1,1,255,255,255,255,255,255,255
DATA 255,255,255,255,255,0,0,0,0,255,255,255,255,255,255,255


'map1
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
DATA 2,1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,2
DATA 2,1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,2
DATA 2,1,1,1,1,1,1,1,1,1,1,2,2,2,3,3,3,3,3,3
DATA 2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3
DATA 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2
DATA 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4
DATA 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2
DATA 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,3,3,3
DATA 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,3,3,3
DATA 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,3,3,3
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2

'map2
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
DATA 2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,2
DATA 2,3,3,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2
DATA 2,3,3,3,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,2
DATA 2,3,3,3,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,2
DATA 2,2,2,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,2
DATA 1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,2
DATA 2,2,2,2,2,1,1,1,2,2,2,2,1,1,1,1,1,1,1,2
DATA 2,3,3,3,2,1,1,1,1,1,1,2,1,2,1,1,1,1,1,2
DATA 2,3,3,3,2,1,1,1,1,1,1,2,1,2,1,1,1,1,1,2
DATA 2,3,3,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2

'map 3
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2
DATA 2,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,2,1,2
DATA 2,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,2,1,2
DATA 2,3,3,3,3,3,3,1,2,2,2,2,2,2,2,2,2,2,1,2
DATA 2,3,3,3,3,3,3,1,2,1,1,1,1,1,1,1,1,1,1,2
DATA 2,3,3,3,3,3,1,1,2,1,1,1,1,1,1,1,1,1,1,2
DATA 2,3,3,3,3,3,1,1,2,1,1,1,1,1,1,1,1,1,1,2
DATA 2,2,2,2,2,3,1,1,2,2,2,2,1,1,1,1,1,1,1,2
DATA 2,3,3,3,2,3,3,1,1,1,1,2,1,2,1,1,1,1,1,2
DATA 2,3,3,3,2,3,1,1,1,1,1,2,1,2,1,1,1,1,1,2
DATA 2,3,3,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2
DATA 2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,4,2,2,2

SUB LoadBMP (DestSeg%, SegxRes%, SegyRes%, File$, sX, sY, SwitchPal%, Trans%)
DIM bmp AS BMPHeaderType
f% = FREEFILE
OPEN File$ FOR BINARY AS #f%
GET #f%, , bmp
IF SwitchPal% THEN
pall$ = bmp.Pal
IF LEN(pall$) = 1024 THEN
  OUT &H3C8, 0
  FOR I% = 1 TO 1024 STEP 4
   b% = ASC(MID$(pall$, I%, 1)) \ 4
   g% = ASC(MID$(pall$, I% + 1, 1)) \ 4
   r% = ASC(MID$(pall$, I% + 2, 1)) \ 4
   OUT &H3C9, r%
   OUT &H3C9, g%
   OUT &H3C9, b%
  NEXT I%
END IF
END IF
Byte$ = SPACE$(bmp.WID)
DEF SEG = DestSeg%
wide% = bmp.WID - 1
Hite% = bmp.HEI - 1
offs& = LOC(f) + 1
FOR y% = Hite% TO 0 STEP -1
IF sY + y >= 0 AND sY + y < SegyRes THEN
  GET #f%, offs&, Byte$
  FOR x% = 0 TO wide%
   IF sX + x >= 0 AND sX + x < SegxRes THEN
    c% = ASC(MID$(Byte$, x% + 1, 1))
    IF c% <> Trans% THEN
     POKE (sX% + x%) + (sY% + y%) * (SegxRes + 0&), c%
    END IF
   END IF
  NEXT x%
END IF
IF (bmp.WID AND 3) THEN
  offs& = offs& + bmp.WID + 4 - (bmp.WID AND 3)
ELSE
  offs& = offs& + bmp.WID
END IF
NEXT y%
CLOSE #f
DEF SEG
END SUB

DEFSNG A-Z
SUB loadsprites

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x
NEXT y
GET (1, 1)-(16, 16), wall

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), water

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), grassflag

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), guy

FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), guymask

FOR y = 1 TO 12
FOR x = 1 TO 20
READ map1(x, y)
NEXT x: NEXT y

FOR y = 1 TO 12
FOR x = 1 TO 20
READ map2(x, y)
NEXT x: NEXT y

FOR y = 1 TO 12
FOR x = 1 TO 20
READ map3(x, y)
NEXT x: NEXT y

END SUB
Reply


Messages In This Thread
whats wrong with this code?? - by computerkid14 - 03-03-2005, 05:52 AM
whats wrong with this code?? - by Rattrapmax6 - 03-04-2005, 04:28 AM
whats wrong with this code?? - by computerkid14 - 03-06-2005, 03:19 AM
whats wrong with this code?? - by Rattrapmax6 - 03-06-2005, 03:35 AM
whats wrong with this code?? - by computerkid14 - 03-07-2005, 10:58 PM
whats wrong with this code?? - by Rattrapmax6 - 03-08-2005, 02:57 AM
whats wrong with this code?? - by computerkid14 - 03-08-2005, 03:59 AM
whats wrong with this code?? - by Rattrapmax6 - 03-08-2005, 04:05 AM
whats wrong with this code?? - by computerkid14 - 03-15-2005, 10:56 PM
whats wrong with this code?? - by Rattrapmax6 - 03-16-2005, 03:33 AM
whats wrong with this code?? - by computerkid14 - 03-16-2005, 09:30 AM
whats wrong with this code?? - by TheBigBasicQ - 03-16-2005, 11:24 PM
whats wrong with this code?? - by computerkid14 - 03-17-2005, 12:34 AM
whats wrong with this code?? - by Rattrapmax6 - 03-17-2005, 03:28 AM
whats wrong with this code?? - by computerkid14 - 03-17-2005, 07:04 AM
whats wrong with this code?? - by Rattrapmax6 - 03-17-2005, 08:10 AM

Forum Jump:


Users browsing this thread: 1 Guest(s)