08-24-2003, 11:58 AM
Pages: 1 2
08-24-2003, 04:25 PM
All wait &h3da,8 does is remove flicker when flipping pages.
08-25-2003, 12:16 AM
any othere way to prefent the phase.
08-25-2003, 12:57 AM
buffer the graphics
check out the qbnews FAQ for the buffering tutorials
check out the qbnews FAQ for the buffering tutorials
08-25-2003, 01:05 AM
08-25-2003, 03:09 AM
That example is pretty useless to n00bs Here's one that actually does something:
Code:
DEFINT A-Z
'$DYNAMIC
DECLARE SUB SetVideoSeg (Segment)
DIM Buffer(32006) ' An extra 16 bytes are needed so that the image
Buffer(6) = 2560 ' can be aligned evenly on a segment (the 4 bytes for
Buffer(7) = 200 ' the x and y sprite size normally throw this off, so we
BufferSeg = VARSEG(Buffer(0)) + 1 ' have to shift everything over 12 bytes
SCREEN 13
SetVideoSeg BufferSeg ' Draw all the setup stuff on the buffer
DIM SpriteImage(129)
DIM SpriteMask(129)
DIM SaveBackground(129)
' Create the mask
LINE (0, 0)-(15, 15), 255, BF
CIRCLE (8, 8), 7, 0, , , .83
PAINT (8, 8), 0
GET (0, 0)-(15, 15), SpriteMask(0)
' Create the sprite
LINE (0, 0)-(15, 15), 0, BF
CIRCLE (8, 8), 7, 4, , , .83
PAINT (8, 8), 4
CIRCLE (10, 7), 2, 12, , , .83
PAINT (10, 7), 12
GET (0, 0)-(15, 15), SpriteImage(0)
CLS
' Draw some background shiznit on the buffer
FOR x = 0 TO 319
LINE (x, 0)-(x, 199), x AND 255
NEXT
FOR x = 0 TO 304
' Restore old background
IF x > 0 THEN PUT (x - 1, 92), SaveBackground(0), PSET
' Save new background
GET (x, 92)-(x + 15, 107), SaveBackground(0)
' Put sprite while preserving background
PUT (x, 92), SpriteMask(0), AND
PUT (x, 92), SpriteImage(0), OR
' Copy the buffer to video memory
SetVideoSeg &HA000
'WAIT &H3DA, 8 ' Wait for vsync (optional)
PUT (0, 0), Buffer(6), PSET
SetVideoSeg BufferSeg
NEXT
SUB SetVideoSeg (Segment) STATIC
DEF SEG
IF VideoAddrOff& = 0 THEN ' First time the sub is called
' We need to find the location of b$AddrC, which holds the graphics
' offset (b$OffC) and segment (b$SegC). Since b$AddrC is in the default
' segment, we can find it by setting it to a certain value, and then
' searching for that value.
SCREEN 13 ' Set b$SegC to A000 (00A0 in memory)
PSET (160, 100), 0 ' Set b$OffC to 7DA0 (not needed in the IDE)
FOR Offset& = 0 TO 32764 ' Search for b$AddrC, which is
IF PEEK(Offset&) = &HA0 THEN ' in the default segment and
IF PEEK(Offset& + 1) = &H7D THEN ' should have a value of
IF PEEK(Offset& + 2) = &H0 THEN ' A0 7D 00 A0.
IF PEEK(Offset& + 3) = &HA0 THEN
VideoAddrOff& = Offset& + 2 ' If we found it, record the
EXIT FOR ' offset of b$SegC and quit
END IF ' looking. (Oddly, changing
END IF ' the b$OffC doesn't seem to
END IF ' do anything, so this is why
END IF ' this sub only changes b$SegC)
NEXT
END IF
' Change b$SegC to the specified Segment
POKE VideoAddrOff&, Segment AND &HFF
POKE VideoAddrOff& + 1, (Segment AND &HFF00&) \ &H100
END SUB
08-25-2003, 03:28 AM
that was a cool example, but i dont get any of it. how would i put that into my program
08-25-2003, 04:18 AM
It should be pretty easy to figure out if you read the comments...but post your code and I (or somebody else) will help you.
08-25-2003, 04:34 AM
Code:
DIM guy(50), guysh(50)
DIM sprite1(50), sprite2(50), sprite3(50)
DIM map1(21, 15)
DIM enemy(100), enemysh(100)
SCREEN 13
guyx = 20
guyy = 8
enemyx = 5
enemyy = 5
FOR y = 1 TO 13
FOR x = 1 TO 15
READ clr
PSET (x, y), clr
NEXT: NEXT
GET (1, 1)-(15, 13), sprite1
FOR y = 1 TO 13
FOR x = 1 TO 15
READ clr
PSET (x, y), clr
NEXT: NEXT
GET (1, 1)-(15, 13), sprite2
FOR y = 1 TO 13
FOR x = 1 TO 15
READ clr
PSET (x, y), clr
NEXT: NEXT
GET (1, 1)-(15, 13), sprite3
CLS
FOR y = 1 TO 15
FOR x = 1 TO 21
READ map1(x, y)
NEXT: NEXT
FOR y = 1 TO 13
FOR x = 1 TO 15
READ clr
PSET (x, y), clr
NEXT: NEXT
GET (1, 1)-(15, 13), guy
FOR y = 1 TO 13
FOR x = 1 TO 15
READ clr
PSET (x, y), clr
NEXT: NEXT
GET (1, 1)-(15, 13), guysh
CLS
FOR y = 1 TO 13
FOR x = 1 TO 15
READ clr
PSET (x, y), clr
NEXT: NEXT
GET (1, 1)-(15, 13), enemy
FOR y = 1 TO 13
FOR x = 1 TO 15
READ clr
PSET (x, y), clr
NEXT: NEXT
GET (1, 1)-(15, 13), enemysh
CLS
FOR y = 1 TO 15
FOR x = 1 TO 21
IF map1(x, y) = 1 THEN PUT (x * 15 - 15, y * 13 - 13), sprite1
IF map1(x, y) = 2 THEN PUT (x * 15 - 15, y * 13 - 13), sprite2
IF map1(x, y) = 3 THEN PUT (x * 15 - 15, y * 13 - 13), sprite3
NEXT: NEXT
PUT (guyx * 15 - 15, guyy * 13 - 13), guysh, AND
PUT (guyx * 15 - 15, guyy * 13 - 13), guy, OR
PUT (enemyx * 15 - 15, enemyy * 13 - 13), enemysh, AND
PUT (enemyx * 15 - 15, enemyy * 13 - 13), enemy, OR
DO
press$ = INKEY$
IF press$ = CHR$(0) + CHR$(75) AND map1(guyx - 1, guyy) <> 3 THEN
IF guyx > 1 THEN guyx = guyx - 1
END IF
IF press$ = CHR$(0) + CHR$(77) AND map1(guyx + 1, guyy) <> 3 THEN
IF guyx < 20 THEN guyx = guyx + 1
END IF
IF press$ = CHR$(0) + CHR$(72) AND map1(guyx, guyy - 1) <> 3 THEN
IF guyy > 1 THEN guyy = guyy - 1
END IF
IF press$ = CHR$(0) + CHR$(80) AND map1(guyx, guyy + 1) <> 3 THEN
IF guyy < 14 THEN guyy = guyy + 1
END IF
IF oldguyx <> guyx OR oldguyy <> guyy THEN
oldguyx = guyx
oldguyy = guyy
FOR y = 1 TO 15
FOR x = 1 TO 21
IF map1(x, y) = 1 THEN PUT (x * 15 - 15, y * 13 - 13), sprite1, PSET
IF map1(x, y) = 2 THEN PUT (x * 15 - 15, y * 13 - 13), sprite2, PSET
IF map1(x, y) = 3 THEN PUT (x * 15 - 15, y * 13 - 13), sprite3, PSET
NEXT: NEXT
PUT (enemyx * 15 - 15, enemyy * 13 - 13), enemysh, AND
PUT (enemyx * 15 - 15, enemyy * 13 - 13), enemy, OR
PUT (guyx * 15 - 15, guyy * 13 - 13), guysh, AND
PUT (guyx * 15 - 15, guyy * 13 - 13), guy, OR
END IF
LOOP UNTIL press$ = CHR$(27)
DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10
DATA 10,10,10,10,10,10,10,10,10,10,10,02,10,10,10
DATA 10,10,10,10,10,10,10,10,10,10,02,10,10,10,10
DATA 10,10,10,02,10,10,10,02,10,10,02,10,10,10,10
DATA 10,10,10,10,02,10,02,10,10,10,10,10,10,10,10
DATA 02,10,10,10,02,10,02,10,10,10,02,10,10,10,10
DATA 10,02,10,10,02,10,02,10,10,02,10,10,02,10,10
DATA 10,10,02,02,10,02,10,10,10,02,10,02,10,10,10
DATA 10,10,10,10,10,10,10,10,10,02,10,02,10,10,10
DATA 02,02,10,10,02,10,10,10,02,02,02,10,10,10,10
DATA 10,10,02,02,10,10,10,10,10,10,10,10,10,10,10
DATA 10,10,10,10,10,10,02,02,10,10,10,10,10,10,10
DATA 10,10,10,10,10,10,02,10,10,10,10,10,10,10,10
'snow...
DATA 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
DATA 15,15,15,29,29,29,15,15,15,15,15,15,15,15,15
DATA 15,15,29,07,07,07,15,15,15,29,29,15,15,15,15
DATA 15,15,29,07,15,15,15,15,29,07,07,15,15,15,15
DATA 15,29,07,15,15,15,15,29,07,15,15,15,15,15,15
DATA 15,29,15,15,15,15,15,29,07,15,15,15,15,15,15
DATA 15,15,15,15,15,15,29,29,07,15,15,15,15,15,15
DATA 15,15,15,15,15,29,07,07,15,15,15,15,15,15,15
DATA 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,29,07,15,15,15,15
DATA 15,15,15,15,15,15,15,15,15,15,29,07,07,07,29
DATA 15,15,15,15,15,15,15,15,15,15,15,29,29,29,15
'For the third, floor tiles...
DATA 07,08,08,08,08,08,08,08,08,08,08,08,08,08,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,00,00,00,00,00,00,00,00,00,00,00,00,00,07
DATA 3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,3,3,3,3,3,3
DATA 3,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,3,3
DATA 3,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,3
DATA 3,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,3
DATA 3,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,3
DATA 3,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,2,3
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2
DATA 2,2,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2
DATA 2,1,1,1,1,2,2,2,2,2,2,2,2,1,1,1,1,2,2,2,2
DATA 3,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,2,3
DATA 3,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,2,3
DATA 3,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,3,3
DATA 3,3,3,3,3,3,3,2,2,2,1,1,1,1,1,3,3,3,3,3,3
'sprite
DATA 00,00,00,00,00,00,04,04,04,04,00,00,00,00,00
DATA 00,00,00,00,00,04,04,04,04,04,04,00,00,00,00
DATA 00,00,00,04,04,66,04,04,04,04,04,66,00,00,00
DATA 00,00,04,00,00,66,66,66,66,66,66,66,00,00,00
DATA 00,00,00,00,00,00,66,00,66,00,66,00,00,00,00
DATA 00,00,00,00,00,00,66,66,66,66,66,00,00,00,00
DATA 00,00,00,00,00,00,00,66,00,66,00,00,00,00,00
DATA 00,00,00,00,00,00,02,02,02,02,02,00,00,00,00
DATA 00,00,00,00,00,02,00,02,02,02,00,02,00,00,00
DATA 00,00,00,00,00,02,00,02,02,02,00,02,00,00,00
DATA 00,00,00,00,00,66,00,02,02,02,00,66,00,00,00
DATA 00,00,00,00,02,00,00,07,00,07,00,00,02,00,00
DATA 00,00,00,00,00,02,02,02,00,02,02,02,00,00,00
'This is the mask for the sprite...
DATA 255,255,255,255,255,255,04,04,04,04,255,255,255,255,255
DATA 255,255,255,255,255,04,04,04,04,04,04,255,255,255,255
DATA 255,255,255,04,04,66,04,04,04,04,04,66,255,255,255
DATA 255,255,04,255,255,66,66,66,66,66,66,66,255,255,255
DATA 255,255,255,255,255,255,66,00,66,00,66,255,255,255,255
DATA 255,255,255,255,255,255,66,66,66,66,66,255,255,255,255
DATA 255,255,255,255,255,255,255,66,00,66,255,255,255,255,255
DATA 255,255,255,255,255,255,02,02,02,02,02,255,255,255,255
DATA 255,255,255,255,255,02,255,02,02,02,255,02,255,255,255
DATA 255,255,255,255,255,02,255,02,02,02,255,02,255,255,255
DATA 255,255,255,255,255,66,255,02,02,02,255,66,255,255,255
DATA 255,255,255,255,02,255,255,07,255,07,255,255,02,255,255
DATA 255,255,255,255,255,02,02,02,255,02,02,02,255,255,255
'enemy
DATA 00,00,00,00,00,00,00,04,04,04,00,00,00,00,00
DATA 00,00,00,00,00,00,04,04,04,04,04,00,00,00,00
DATA 00,00,00,00,00,04,04,04,04,04,04,04,00,00,00
DATA 00,00,00,00,00,04,04,04,04,04,04,04,00,00,00
DATA 00,00,00,00,00,00,66,01,66,01,66,00,00,00,00
DATA 00,00,00,00,00,00,66,66,66,66,66,00,00,00,00
DATA 00,00,00,00,00,00,00,66,04,66,00,00,00,00,00
DATA 00,00,00,00,00,00,02,88,02,25,02,00,00,00,00
DATA 00,00,00,00,00,00,00,27,07,02,00,00,00,00,00
DATA 00,00,00,00,00,00,00,27,27,02,00,00,00,00,00
DATA 00,00,00,00,00,00,00,02,02,02,00,00,00,00,00
DATA 00,00,00,00,00,00,00,07,00,07,00,00,00,00,00
DATA 00,00,00,00,00,02,89,88,00,02,89,02,00,00,00
'enemeysh
DATA 255,255,255,255,255,255,255,004,004,004,255,255,255,255,255
DATA 255,255,255,255,255,255,004,004,004,004,004,255,255,255,255
DATA 255,255,255,255,255,004,004,004,004,004,004,004,255,255,255
DATA 255,255,255,255,255,004,004,004,004,004,004,004,255,255,255
DATA 255,255,255,255,255,255,066,001,066,001,066,255,255,255,255
DATA 255,255,255,255,255,255,066,066,066,066,066,255,255,255,255
DATA 255,255,255,255,255,255,255,066,004,066,255,255,255,255,255
DATA 255,255,255,255,255,255,002,088,002,025,002,255,255,255,255
DATA 255,255,255,255,255,255,255,027,007,002,255,255,255,255,255
DATA 255,255,255,255,255,255,255,027,027,002,255,255,255,255,255
DATA 255,255,255,255,255,255,255,002,002,002,255,255,255,255,255
DATA 255,255,255,255,255,255,255,007,255,007,255,255,255,255,255
DATA 255,255,255,255,255,002,089,088,255,002,089,002,255,255,255
[/code]
08-25-2003, 05:20 AM
Code:
DEFINT A-Z
'$DYNAMIC
DECLARE SUB LoadSprite (SizeX, SizeY, Array())
DECLARE SUB LoadMap (SizeX, SizeY, Array())
DECLARE SUB SetVideoSeg (Segment)
DIM Sprite1(99)
DIM Sprite2(99)
DIM Sprite3(99)
DIM Guy(99)
DIM GuySh(99)
DIM Enemy(99)
DIM EnemySh(99)
DIM Map1(21, 15)
DIM Buffer(32006) 'an extra 16 bytes are needed so that the image
Buffer(6) = 2560 'can be aligned evenly on a segment (the 4 bytes for
Buffer(7) = 200 'the x and y sprite size normally throw this off, so we
BufferSeg = VARSEG(Buffer(0)) + 1 'have to shift everything over 12 bytes
SCREEN 13
SetVideoSeg BufferSeg 'Draw all the setup stuff on the buffer
LoadSprite 15, 13, Sprite1()
LoadSprite 15, 13, Sprite2()
LoadSprite 15, 13, Sprite3()
LoadSprite 15, 13, Guy()
LoadSprite 15, 13, GuySh()
LoadSprite 15, 13, Enemy()
LoadSprite 15, 13, EnemySh()
LoadMap 21, 15, Map1()
GuyX = 20
GuyY = 8
EnemyX = 5
EnemyY = 5
CLS
DO
IF OldGuyX <> GuyX OR OldGuyY <> GuyY THEN
OldGuyX = GuyX
OldGuyY = GuyY
FOR y = 1 TO 15
FOR x = 1 TO 21
IF Map1(x, y) = 1 THEN PUT (x * 15 - 15, y * 13 - 13), Sprite1(0), PSET
IF Map1(x, y) = 2 THEN PUT (x * 15 - 15, y * 13 - 13), Sprite2(0), PSET
IF Map1(x, y) = 3 THEN PUT (x * 15 - 15, y * 13 - 13), Sprite3(0), PSET
NEXT
NEXT
PUT (GuyX * 15 - 15, GuyY * 13 - 13), GuySh(0), AND
PUT (GuyX * 15 - 15, GuyY * 13 - 13), Guy(0), OR
PUT (EnemyX * 15 - 15, EnemyY * 13 - 13), EnemySh(0), AND
PUT (EnemyX * 15 - 15, EnemyY * 13 - 13), Enemy(0), OR
'Copy the buffer to video memory
SetVideoSeg &HA000
'WAIT &H3DA, 8 'Wait for vsync (optional)
PUT (0, 0), Buffer(6), PSET
SetVideoSeg BufferSeg
END IF
Press$ = INKEY$
IF Press$ = CHR$(0) + CHR$(75) AND Map1(GuyX - 1, GuyY) <> 3 THEN
IF GuyX > 1 THEN GuyX = GuyX - 1
ELSEIF Press$ = CHR$(0) + CHR$(77) AND Map1(GuyX + 1, GuyY) <> 3 THEN
IF GuyX < 20 THEN GuyX = GuyX + 1
ELSEIF Press$ = CHR$(0) + CHR$(72) AND Map1(GuyX, GuyY - 1) <> 3 THEN
IF GuyY > 1 THEN GuyY = GuyY - 1
ELSEIF Press$ = CHR$(0) + CHR$(80) AND Map1(GuyX, GuyY + 1) <> 3 THEN
IF GuyY < 14 THEN GuyY = GuyY + 1
END IF
LOOP UNTIL Press$ = CHR$(27)
'Sprite1
DATA 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10
DATA 10,10,10,10,10,10,10,10,10,10,10,02,10,10,10
DATA 10,10,10,10,10,10,10,10,10,10,02,10,10,10,10
DATA 10,10,10,02,10,10,10,02,10,10,02,10,10,10,10
DATA 10,10,10,10,02,10,02,10,10,10,10,10,10,10,10
DATA 02,10,10,10,02,10,02,10,10,10,02,10,10,10,10
DATA 10,02,10,10,02,10,02,10,10,02,10,10,02,10,10
DATA 10,10,02,02,10,02,10,10,10,02,10,02,10,10,10
DATA 10,10,10,10,10,10,10,10,10,02,10,02,10,10,10
DATA 02,02,10,10,02,10,10,10,02,02,02,10,10,10,10
DATA 10,10,02,02,10,10,10,10,10,10,10,10,10,10,10
DATA 10,10,10,10,10,10,02,02,10,10,10,10,10,10,10
DATA 10,10,10,10,10,10,02,10,10,10,10,10,10,10,10
'Sprite2 (snow...)
DATA 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
DATA 15,15,15,29,29,29,15,15,15,15,15,15,15,15,15
DATA 15,15,29,07,07,07,15,15,15,29,29,15,15,15,15
DATA 15,15,29,07,15,15,15,15,29,07,07,15,15,15,15
DATA 15,29,07,15,15,15,15,29,07,15,15,15,15,15,15
DATA 15,29,15,15,15,15,15,29,07,15,15,15,15,15,15
DATA 15,15,15,15,15,15,29,29,07,15,15,15,15,15,15
DATA 15,15,15,15,15,29,07,07,15,15,15,15,15,15,15
DATA 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,29,07,15,15,15,15
DATA 15,15,15,15,15,15,15,15,15,15,29,07,07,07,29
DATA 15,15,15,15,15,15,15,15,15,15,15,29,29,29,15
'Sprite3 (For the third, floor tiles...)
DATA 07,08,08,08,08,08,08,08,08,08,08,08,08,08,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,07,07,07,07,07,07,07,07,07,07,07,07,07,00
DATA 08,00,00,00,00,00,00,00,00,00,00,00,00,00,07
'Guy
DATA 00,00,00,00,00,00,04,04,04,04,00,00,00,00,00
DATA 00,00,00,00,00,04,04,04,04,04,04,00,00,00,00
DATA 00,00,00,04,04,66,04,04,04,04,04,66,00,00,00
DATA 00,00,04,00,00,66,66,66,66,66,66,66,00,00,00
DATA 00,00,00,00,00,00,66,00,66,00,66,00,00,00,00
DATA 00,00,00,00,00,00,66,66,66,66,66,00,00,00,00
DATA 00,00,00,00,00,00,00,66,00,66,00,00,00,00,00
DATA 00,00,00,00,00,00,02,02,02,02,02,00,00,00,00
DATA 00,00,00,00,00,02,00,02,02,02,00,02,00,00,00
DATA 00,00,00,00,00,02,00,02,02,02,00,02,00,00,00
DATA 00,00,00,00,00,66,00,02,02,02,00,66,00,00,00
DATA 00,00,00,00,02,00,00,07,00,07,00,00,02,00,00
DATA 00,00,00,00,00,02,02,02,00,02,02,02,00,00,00
'GuySh (This is the mask for the sprite...)
DATA 255,255,255,255,255,255,04,04,04,04,255,255,255,255,255
DATA 255,255,255,255,255,04,04,04,04,04,04,255,255,255,255
DATA 255,255,255,04,04,66,04,04,04,04,04,66,255,255,255
DATA 255,255,04,255,255,66,66,66,66,66,66,66,255,255,255
DATA 255,255,255,255,255,255,66,00,66,00,66,255,255,255,255
DATA 255,255,255,255,255,255,66,66,66,66,66,255,255,255,255
DATA 255,255,255,255,255,255,255,66,00,66,255,255,255,255,255
DATA 255,255,255,255,255,255,02,02,02,02,02,255,255,255,255
DATA 255,255,255,255,255,02,255,02,02,02,255,02,255,255,255
DATA 255,255,255,255,255,02,255,02,02,02,255,02,255,255,255
DATA 255,255,255,255,255,66,255,02,02,02,255,66,255,255,255
DATA 255,255,255,255,02,255,255,07,255,07,255,255,02,255,255
DATA 255,255,255,255,255,02,02,02,255,02,02,02,255,255,255
'Enemy
DATA 00,00,00,00,00,00,00,04,04,04,00,00,00,00,00
DATA 00,00,00,00,00,00,04,04,04,04,04,00,00,00,00
DATA 00,00,00,00,00,04,04,04,04,04,04,04,00,00,00
DATA 00,00,00,00,00,04,04,04,04,04,04,04,00,00,00
DATA 00,00,00,00,00,00,66,01,66,01,66,00,00,00,00
DATA 00,00,00,00,00,00,66,66,66,66,66,00,00,00,00
DATA 00,00,00,00,00,00,00,66,04,66,00,00,00,00,00
DATA 00,00,00,00,00,00,02,88,02,25,02,00,00,00,00
DATA 00,00,00,00,00,00,00,27,07,02,00,00,00,00,00
DATA 00,00,00,00,00,00,00,27,27,02,00,00,00,00,00
DATA 00,00,00,00,00,00,00,02,02,02,00,00,00,00,00
DATA 00,00,00,00,00,00,00,07,00,07,00,00,00,00,00
DATA 00,00,00,00,00,02,89,88,00,02,89,02,00,00,00
'EnemeySh
DATA 255,255,255,255,255,255,255,004,004,004,255,255,255,255,255
DATA 255,255,255,255,255,255,004,004,004,004,004,255,255,255,255
DATA 255,255,255,255,255,004,004,004,004,004,004,004,255,255,255
DATA 255,255,255,255,255,004,004,004,004,004,004,004,255,255,255
DATA 255,255,255,255,255,255,066,001,066,001,066,255,255,255,255
DATA 255,255,255,255,255,255,066,066,066,066,066,255,255,255,255
DATA 255,255,255,255,255,255,255,066,004,066,255,255,255,255,255
DATA 255,255,255,255,255,255,002,088,002,025,002,255,255,255,255
DATA 255,255,255,255,255,255,255,027,007,002,255,255,255,255,255
DATA 255,255,255,255,255,255,255,027,027,002,255,255,255,255,255
DATA 255,255,255,255,255,255,255,002,002,002,255,255,255,255,255
DATA 255,255,255,255,255,255,255,007,255,007,255,255,255,255,255
DATA 255,255,255,255,255,002,089,088,255,002,089,002,255,255,255
'Map
DATA 3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,3,3,3,3,3,3
DATA 3,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,3,3
DATA 3,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,3
DATA 3,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,3
DATA 3,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,3
DATA 3,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,2,3
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2
DATA 2,2,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2
DATA 2,1,1,1,1,2,2,2,2,2,2,2,2,1,1,1,1,2,2,2,2
DATA 3,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,2,3
DATA 3,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,2,3
DATA 3,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,3,3
DATA 3,3,3,3,3,3,3,2,2,2,1,1,1,1,1,3,3,3,3,3,3
SUB LoadMap (SizeX, SizeY, Array())
FOR y = 1 TO SizeY
FOR x = 1 TO SizeX
READ Array(x, y)
NEXT
NEXT
END SUB
SUB LoadSprite (SizeX, SizeY, Array())
FOR y = 1 TO SizeY
FOR x = 1 TO SizeX
READ clr
PSET (x, y), clr
NEXT
NEXT
GET (1, 1)-(15, 13), Array(0)
END SUB
SUB SetVideoSeg (Segment) STATIC
DEF SEG
IF VideoAddrOff& = 0 THEN ' First time the sub is called
' We need to find the location of b$AddrC, which holds the graphics
' offset (b$OffC) and segment (b$SegC). Since b$AddrC is in the default
' segment, we can find it by setting it to a certain value, and then
' searching for that value.
SCREEN 13 ' Set b$SegC to A000 (00A0 in memory)
PSET (160, 100), 0 ' Set b$OffC to 7DA0 (not needed in the IDE)
FOR Offset& = 0 TO 32764 ' Search for b$AddrC, which is
IF PEEK(Offset&) = &HA0 THEN ' in the default segment and
IF PEEK(Offset& + 1) = &H7D THEN ' should have a value of
IF PEEK(Offset& + 2) = &H0 THEN ' A0 7D 00 A0.
IF PEEK(Offset& + 3) = &HA0 THEN
VideoAddrOff& = Offset& + 2 ' If we found it, record the
EXIT FOR ' offset of b$SegC and quit
END IF ' looking. (Oddly, changing
END IF ' the b$OffC doesn't seem to
END IF ' do anything, so this is why
END IF ' this sub only changes b$SegC)
NEXT
END IF
' Change b$SegC to the specified Segment
POKE VideoAddrOff&, Segment AND &HFF
POKE VideoAddrOff& + 1, (Segment AND &HFF00&) \ &H100
END SUB
Pages: 1 2