News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_Fabrizio Radica

Simple Engine Game in Basic

Started by Fabrizio Radica, 15:48, 29 July 16

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Executioner

I've updated the lines in question, and tested:


30000 PRINT CHR$(15);CHR$(8);CHR$(246);:RETURN
30010 PRINT CHR$(15);CHR$(9);CHR$(245);
30011 POKE &BFAC+x%*4+y%*80,&30:RETURN
30020 PRINT CHR$(15);CHR$(7);CHR$(247);
30021 POKE &CFAE+x%*4+y%*80,&B8:RETURN
30030 PRINT CHR$(15);CHR$(4);CHR$(250);:RETURN

Fabrizio Radica


hi, i'm back from holiday
now i see your posts and comment them soon :laugh:

AMSDOS

Well I better start sweeping out the rubbish!  ;D
* Using the old Amstrad Languages :D * And create my own ;)
* Incorporating the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

Fabrizio Radica

hi folks :D
i'm back :(


Soon,  i'll post a new update of my engine with some optimizations and feature.


Now, i have a little problem.
I would like to save and load an charsheet.bin (one or more chr$ SYMBOL).


For example, I've this data and i would like to save it in binary and reload like a SYMBOL



2070 data BC,3C,3C,3C
2080 data 54,FC,3C,0
2090 data 8,54,A8,C
2100 data E0,8,4,D0
2110 data 48,D0,D0,84
2120 data 4,C,C,8
2130 data 4,4,4,0
2140 data 0,4,0,0




I've seen Vampire Killer and he used:



4 CLEAR:SYMBOL AFTER 124:LOAD"VAMPIRE3.bin":POKE &A24E+4,&FB:POKE &A24E+5,&A6
5 CALL &A24E


...

240 ml$=" ê  ëìí  ï ö ":mr$=" ø  ûúü  ý ÿ "


when i PRINT ml$ (or mr$), i see new sprites..
can you help me?
tnx again :)


AMSDOS


I'd have to see the program working from the Disk Image to make head or tail of it, the code doesn't make much sense to me.


The data you posted with 2070..2140 is Sprite Data, earlier I was using a POKE to Display that info, which wasn't very good in Interpreted BASIC. It operates differently from SYMBOL Data which only allows 2 Colours (or 1 to represent the "On" bit of your character). To get it displayed in the SYMBOL equivalent would require a number of definitions to build up the character.
* Using the old Amstrad Languages :D * And create my own ;)
* Incorporating the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

SRS

Quote from: Fabrizio Radica on 16:33, 21 August 16
hi folks :D
i'm back :(


Now, i have a little problem.
I would like to save and load an charsheet.bin (one or more chr$ SYMBOL).

Take a look here: Modify the font appearance for some hints.

Fabrizio Radica

Quote from: AMSDOS on 11:52, 22 August 16
I'd have to see the program working from the Disk Image to make head or tail of it, the code doesn't make much sense to me.


The data you posted with 2070..2140 is Sprite Data, earlier I was using a POKE to Display that info, which wasn't very good in Interpreted BASIC. It operates differently from SYMBOL Data which only allows 2 Colours (or 1 to represent the "On" bit of your character). To get it displayed in the SYMBOL equivalent would require a number of definitions to build up the character.


Here vampire killer DSK complete of sources

AMSDOS


Quote from: SRS on 12:26, 22 August 16
Take a look here: Modify the font appearance for some hints.


It's a shame them darn emoji's have got in the way in @arnoldemu post. Personally I setup character sets using the TXT SET M TABLE (BBAB), DE has the number of the first character in the table & HL is the address of the table. I like this approach because you can tell it (with the HL register), where you want the Character definitions to be, unlike BASIC which forces you to put it where HIMEM is minus the size of the table (and you cannot use MEMORY prior to using SYMBOL AFTER)   :o


@Fabrizio Radica I've made some small programs which redefine the character set using Condensed Text which are in the Silly Programming Ideas Thread, otherwise Redefined Character programs were published in Magazines if you're looking for something like that, the only one that comes to mind is Fontastic from AA73.
* Using the old Amstrad Languages :D * And create my own ;)
* Incorporating the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

Fabrizio Radica

Hi, I've made a new version of my engine with "per pixel" movement.
Obviously, i had some problems with the sprite.

How i can copy the background over the previous frame (like double buffer)?

Tnx in advanced :)

here the code:



10 mode 0:cls:border 0:ink 0,0
200 SYMBOL 240,&X111100,&X1111110,&X11101011,&X11111111,&X11111111,&X11000011,&X1100110,&X111100
210 SYMBOL 245,&X11111110,&X11111110,&X11111110,&X11111110,&X11111110,&X11111100,&X0,&X0 'wall
220 SYMBOL 246,&X1111110,&X10000000,&X10000000,&X10000000,&X10000000,&X10000000,&X0,&X0 'background
250 maxx%=20:maxy%=11:lev%=0:DIM map%(maxy%,maxx%):transpOn$=CHR$(22)+CHR$(1):transpOff$=CHR$(22)+CHR$(0)


260 'Read Map
280 FOR y%=1 TO maxy%:FOR x%=1 TO maxx%:READ a%:map%(y%,x%)=a%:LOCATE x%,y%:ON map%(y%,x%) GOSUB 4100,4000:NEXT x%:NEXT y%
290 x%=32*4:y%=400-16*4:v%=4 'Start Sprite position


300 CALL &BD19 'Main loop
310 'Collisions
320 yct%=INT(400-y%+16+4-v%)/16:ycd%=INT(400-y%+8+v%)/16
330 xcl%=INT(x%+32+16-v%)/32:xcr%=INT(x%+16+v%)/32
400 locate 1,14: print xc%,yc%,map%(yc%,xc%) 'debug


600 IF NOT(INKEY(8)) AND NOT(map%(ycd%,xcl%-1)=1) THEN x%=x%-v%:gosub 5000
700 IF NOT(INKEY(1)) AND NOT(map%(ycd%,xcr%+1)=1) THEN x%=x%+v%:gosub 5000
800 IF NOT(INKEY(0)) AND NOT(map%(yct%-1,xcr%)=1) THEN y%=y%+v%:gosub 5000
900 IF NOT(INKEY(2)) AND NOT(map%(ycd%+1,xcr%)=1) THEN y%=y%-v%:gosub 5000
1200 goto 300


1990 'Map Data
2000 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
2100 DATA 1,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1
2200 DATA 1,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1
2300 DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
2400 DATA 1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1
2500 DATA 1,0,0,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1
2600 DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
2700 DATA 1,0,0,0,0,2,1,1,1,1,1,1,1,0,0,0,0,0,0,1
2800 DATA 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1
2900 DATA 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1
3000 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1


3990 'Tiles
4000 PRINT CHR$(15);CHR$(8);CHR$(246);:RETURN
4100 PRINT CHR$(15);CHR$(9);CHR$(245);:RETURN


4990 'Sprite
5000 tag:move x%,y%:print CHR$(240);:tagoff:RETURN

AMSDOS


Quote from: Fabrizio Radica on 00:17, 24 August 16
Hi, I've made a new version of my engine with "per pixel" movement.
Obviously, i had some problems with the sprite.


How i can copy the background over the previous frame (like double buffer)?


Tnx in advanced


The easiest way around that is to use XOR mode, Transparent Mode no longer works when Writing to a Graphical Position. I've made the adjustments in the program below:



10 MODE 0:CLS:BORDER 0:INK 0,0
200 SYMBOL 240,&X001111,&X0111111,&X11010111,&X11111111,&X11111111,&X11000011,&X0110011,&X001111
210 SYMBOL 245,&X01111111,&X01111111,&X01111111,&X01111111,&X01111111,&X00111111,&X0,&X0 'wall
220 SYMBOL 246,&X0111111,&X00000001,&X00000001,&X00000001,&X00000001,&X00000001,&X0,&X0 'background
250 maxx%=20:maxy%=11:lev%=0:DIM map%(maxy%,maxx%):XOROn$=CHR$(23)+CHR$(1):XOROff$=CHR$(23)+CHR$(0)
260 'Read Map
280 FOR y%=1 TO maxy%:FOR x%=1 TO maxx%:READ a%:map%(y%,x%)=a%:LOCATE x%,y%:ON map%(y%,x%) GOSUB 4100,4000:NEXT x%:NEXT y%
290 x%=32*4:y%=400-16*4:v%=4 'Start Sprite position
295 PRINT XOROn$;:GOSUB 5000
300 CALL &BD19 'Main loop
310 'Collisions
320 yct%=INT(400-y%+16+4-v%)/16:ycd%=INT(400-y%+8+v%)/16
330 xcl%=INT(x%+32+16-v%)/32:xcr%=INT(x%+16+v%)/32
400 LOCATE 1,14: PRINT xc%,yc%,map%(yc%,xc%) 'debug
600 IF NOT(INKEY(8)) AND NOT(map%(ycd%,xcl%-1)=1) THEN GOSUB 5000:x%=x%-v%:GOSUB 5000
700 IF NOT(INKEY(1)) AND NOT(map%(ycd%,xcr%+1)=1) THEN GOSUB 5000:x%=x%+v%:GOSUB 5000
800 IF NOT(INKEY(0)) AND NOT(map%(yct%-1,xcr%)=1) THEN GOSUB 5000:y%=y%+v%:GOSUB 5000
900 IF NOT(INKEY(2)) AND NOT(map%(ycd%+1,xcr%)=1) THEN GOSUB 5000:y%=y%-v%:GOSUB 5000
1200 GOTO 300
1990 'Map Data
2000 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
2100 DATA 1,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1
2200 DATA 1,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1
2300 DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
2400 DATA 1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1
2500 DATA 1,0,0,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1
2600 DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
2700 DATA 1,0,0,0,0,2,1,1,1,1,1,1,1,0,0,0,0,0,0,1
2800 DATA 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1
2900 DATA 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1
3000 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
3990 'Tiles
4000 PRINT CHR$(15);CHR$(8);CHR$(246);:RETURN
4100 PRINT CHR$(15);CHR$(9);CHR$(245);:RETURN
4990 'Sprite
5000 PRINT XOROn$;:TAG:MOVE x%,y%:PRINT CHR$(240);:TAGOFF:PRINT XOROff$;:RETURN



I've altered the Transparent On & Off variables, so it's now XOROn$ & XOROff$, Line 295 Draws the character to screen, this is to avoid leaving a character on screen. Once the controls come into Play, the 1st GOSUB 5000 removes the character from screen, adjusts the values of X or Y accordingly and prints the new position. The routine at 5000 also has XOROn$ & XOROff$ around them. This is the easiest approach to prevent writing your character on screen, but the character will blink a little bit.
* Using the old Amstrad Languages :D * And create my own ;)
* Incorporating the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

Fabrizio Radica

Tnx Mate,
I had not thought about it. Simple (for now) solution!! :D
Why my sprite now is deformed?


AMSDOS

Quote from: Fabrizio Radica on 08:55, 24 August 16
Tnx Mate,
I had not thought about it. Simple (for now) solution!! :D
Why my sprite now is deformed?


Sorry that's my fault. I was using Winape to transfer the BASIC program to the assembler, but what I discovered earlier was the Assembler alters the Binary Numbering used in the SYMBOL definitions. @Executioner has probably corrected this by now, I noticed this earlier when I noticed the Binary Data was being compromised and was able to save the file as ASCII and used Edit Disk to get it that way.
* Using the old Amstrad Languages :D * And create my own ;)
* Incorporating the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

Fabrizio Radica

ok, corrected.
Tnx Again :)



10 MODE 0:CLS:BORDER 0:INK 0,0
200 SYMBOL 240,&X111100,&X1111110,&X11101011,&X11111111,&X11111111,&X11000011,&X1100110,&X111100
210 SYMBOL 245,&X11111110,&X11111110,&X11111110,&X11111110,&X11111110,&X11111100,&X0,&X0 'wall
220 SYMBOL 246,&X1111110,&X10000000,&X10000000,&X10000000,&X10000000,&X10000000,&X0,&X0 'background
250 maxx%=20:maxy%=11:lev%=0:DIM map%(maxy%,maxx%):XOROn$=CHR$(23)+CHR$(1):XOROff$=CHR$(23)+CHR$(0)
260 'Read Map
280 FOR y%=1 TO maxy%:FOR x%=1 TO maxx%:READ a%:map%(y%,x%)=a%:LOCATE x%,y%:ON map%(y%,x%) GOSUB 4100,4000:NEXT x%:NEXT y%
290 x%=32*4:y%=400-16*4:v%=6 'Start Sprite position
295 PRINT XOROn$;:GOSUB 5000
300 CALL &BD19 'Main loop
310 'Collisions
320 yct%=INT(400-y%+16+4-v%)/16:ycd%=INT(400-y%+8+v%)/16
330 xcl%=INT(x%+32+16-v%)/32:xcr%=INT(x%+16+v%)/32
400 'LOCATE 1,14: PRINT xc%,yc%,map%(yc%,xc%) 'debug
600 IF NOT(INKEY(8)) AND NOT(map%(ycd%,xcl%-1)=1) THEN GOSUB 5000:x%=x%-v%:GOSUB 5000
700 IF NOT(INKEY(1)) AND NOT(map%(ycd%,xcr%+1)=1) THEN GOSUB 5000:x%=x%+v%:GOSUB 5000
800 IF NOT(INKEY(0)) AND NOT(map%(yct%-1,xcr%)=1) THEN GOSUB 5000:y%=y%+v%:GOSUB 5000
900 IF NOT(INKEY(2)) AND NOT(map%(ycd%+1,xcr%)=1) THEN GOSUB 5000:y%=y%-v%:GOSUB 5000
1200 GOTO 300
1990 'Map Data
2000 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
2100 DATA 1,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1
2200 DATA 1,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1
2300 DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
2400 DATA 1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1
2500 DATA 1,0,0,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1
2600 DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
2700 DATA 1,0,0,0,0,2,1,1,1,1,1,1,1,0,0,0,0,0,0,1
2800 DATA 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1
2900 DATA 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1
3000 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
3990 'Tiles
4000 PRINT CHR$(15);CHR$(8);CHR$(246);:RETURN
4100 PRINT CHR$(15);CHR$(9);CHR$(245);:RETURN
4990 'Sprite
5000 PRINT XOROn$;:TAG:MOVE x%,y%:PRINT CHR$(240);:TAGOFF:PRINT XOROff$;:RETURN

Executioner

Quote from: AMSDOS on 09:33, 24 August 16
Sorry that's my fault. I was using Winape to transfer the BASIC program to the assembler, but what I discovered earlier was the Assembler alters the Binary Numbering used in the SYMBOL definitions. @Executioner has probably corrected this by now,

Thanks for finding that, just corrected it for 2.0B3.

rk last

You can overcome the flickery text (and XOR) method by using the Draw command.  Drawing a line with colour zero, one pixel behind/above below etc as the text character moves.  You could even shrink the text character...

00000000
000**000
00****00
0******0
0******0
00****00
000**000
00000000

...and then use the black border area around it to draw in the line.

Of course, this means that your backgrounds have to also remain colour zero.
maRK

Fabrizio Radica

Quote from: rk last on 11:33, 25 August 16
You can overcome the flickery text (and XOR) method by using the Draw command.  Drawing a line with colour zero, one pixel behind/above below etc as the text character moves.  You could even shrink the text character...

00000000
000**000
00****00
0******0
0******0
00****00
000**000
00000000

...and then use the black border area around it to draw in the line.

Of course, this means that your backgrounds have to also remain colour zero.


I try :)

rk last

#91


As for platformers, the line method will bring forth an issue with ladders.  The line could be XORed and the parts of the ladder that change colour (due to the line ink as they cross through) could be solved by assigning the same ink colour as the ladder to the XORed bits.

I hope that makes sense.  Just an idea :)
maRK

SRS

I'd not recommend FORTH for games. The FORTH may not be with you. :P

Fabrizio Radica

Quote from: rk last on 21:35, 25 August 16


As for platformers, the line method will bring forth an issue with ladders.  The line could be XORed and the parts of the ladder that change colour (due to the line ink as they cross through) could be solved by assigning the same ink colour as the ladder to the XORed bits.

I hope that makes sense.  Just an idea :)


yes! I did the same thinked with ladders.  ;)
i've tried also to copy first the background and then the sprite, but it's too slow with basic :(



rk last

#94
This suggestion comes with a severe cost but it will also turbo charge you onscreen movement.  Using the OUT commands to reduce the size of the screen.  The demo below (thankfully found for me by Egotrip) will severely reduce the number of pixels on screen and in this case gives you a new MODE.  But toying with the OUT commands usually just gives you a thicker border and less onscreen display.

10 MODE 0
20 OUT &BC00,0:OUT &BD00,127
30 OUT &BC00,4:OUT &BD00,18
40 OUT &BC00,5:OUT &BD00,15
50 OUT &BC00,6:OUT &BD00,15
60 OUT &BC00,7:OUT &BD00,17
70 WINDOW #0,1,20,1,15
80 ORIGIN 0,160









maRK

Fabrizio Radica

#95
Quote from: rk last on 00:06, 26 August 16
This suggestion comes with a severe cost but it will also turbo charge you onscreen movement.  Using the OUT commands to reduce the size of the screen.  The demo below (thankfully found for me by Egotrip) will severely reduce the number of pixels on screen and in this case gives you a new MODE.  But toying with the OUT commands usually just gives you a thicker border and less onscreen display.

10 MODE 0
20 OUT &BC00,0:OUT &BD00,127
30 OUT &BC00,4:OUT &BD00,18
40 OUT &BC00,5:OUT &BD00,15
50 OUT &BC00,6:OUT &BD00,15
60 OUT &BC00,7:OUT &BD00,17
70 WINDOW #0,1,20,1,15
80 ORIGIN 0,160


erhm.. i no longer see the sprite XORed with new MODE (WONDEFUL!!!!), why?
EDIT: i've modify ORIGIN 0,160 in ORIGIN 0,0 and works fine.

P.s. at line 6000, you can see DRAW routines but i don't know how to set the black color for it and other color for the sprite.





10 MODE 0:CLS:BORDER 0:INK 0,0


20 OUT &BC00,0:OUT &BD00,127
30 OUT &BC00,4:OUT &BD00,18
40 OUT &BC00,5:OUT &BD00,15
50 OUT &BC00,6:OUT &BD00,15
60 OUT &BC00,7:OUT &BD00,17
70 WINDOW #0,1,20,1,15
80 ORIGIN 0,160


200 SYMBOL 240,&X111100,&X1111110,&X11101011,&X11111111,&X11111111,&X11000011,&X1100110,&X111100
210 SYMBOL 245,&X11111110,&X11111110,&X11111110,&X11111110,&X11111110,&X11111100,&X0,&X0 'wall
220 SYMBOL 246,&X1111110,&X1,&X1,&X1,&X1,&X1,&X0,&X0 'background
250 maxx%=20:maxy%=11:lev%=0:DIM map%(maxy%,maxx%):XOROn$=CHR$(23)+CHR$(1):XOROff$=CHR$(23)+CHR$(0)
260 'Read Map
280 FOR y%=1 TO maxy%:FOR x%=1 TO maxx%:READ a%:map%(y%,x%)=a%:LOCATE x%,y%:ON map%(y%,x%) GOSUB 4100,4000:NEXT x%:NEXT y%
290 x%=32*4:y%=400-16*4:v%=8 'Start Sprite position
295 PRINT XOROn$;:GOSUB 5000
300 'Main loop
310 'Collisions
320 yct%=INT(400-y%+24-v%)/16:ycd%=INT(400-y%+4+v%)/16
330 xcl%=INT(x%+48-v%)/32:xcr%=INT(x%+8+v%)/32
400 'LOCATE 1,14: PRINT yct%,ycd%,map%(ycd%,xcr%+1) 'debug
600 IF NOT(INKEY() AND NOT(map%(ycd%,xcl%-1)=1) THEN GOSUB 5000:x%=x%-v%:GOSUB 5000
700 IF NOT(INKEY(1)) AND NOT(map%(ycd%,xcr%+1)=1) THEN GOSUB 5000:x%=x%+v%:GOSUB 5000
800 IF NOT(INKEY(0)) AND NOT(map%(yct%-1,xcr%)=1) THEN GOSUB 5000:y%=y%+v%:GOSUB 5000
900 IF NOT(INKEY(2)) AND NOT(map%(ycd%+1,xcr%)=1) THEN GOSUB 5000:y%=y%-v%:GOSUB 5000
1200 GOTO 300
1990 'Map Data
2000 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
2100 DATA 1,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1
2200 DATA 1,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1
2300 DATA 1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,1
2400 DATA 1,0,0,0,0,1,1,1,0,0,0,1,0,1,0,0,0,0,0,1
2500 DATA 1,0,0,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1
2600 DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
2700 DATA 1,0,0,0,0,2,1,1,1,1,1,1,1,0,0,0,0,0,0,1
2800 DATA 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1
2900 DATA 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1
3000 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
3990 'Tiles
4000 PRINT CHR$(15);CHR$(3);CHR$(246);:RETURN
4100 PRINT CHR$(15);CHR$(9);CHR$(245);
4110 POKE &BFAC+x%*4+y%*80,&60:RETURN
4990 'Sprite
5000 CALL &BD19:PRINT XOROn$;:TAG:MOVE x%,y%:PRINT CHR$(240);:TAGOFF:PRINT XOROff$;:RETURN
6000 'plot x%,y%:draw x%,-16+y%:draw 32+x%,-16+y%:draw 32+x%,-1+y%:draw x%,-1+y%:RETURN

rk last

DRAW x,y,colour

That new mode does remind me of those very old games consoles :)
maRK

rk last

#97
You may need this too when drawing lines.

MOVE x,y [[,i1][,i2]]  Moves the graphic cursor to position x,y. The parameter i1 may be used to change the pen (drawing) colour. The parameter i2 specifies the logical colour, as in DRAW.  4 drawing styles: 
i2 = 0 normal colour i2 = 1 XOR colour i2 = 2 AND colour i2 = 3 OR colour 

maRK

Fabrizio Radica

Quote from: rk last on 01:21, 26 August 16
DRAW x,y,colour

That new mode does remind me of those very old games consoles :)


yeah! I really love the new mode!!!
tnx :)


rk last

Or even this.

MOVER xr,yr[,[i1][,i2]]  moves the graphic cursor (relative) from current position to current cursor x position + xr, current cursor y position + yr. i1 and i2 as in MOVE.
maRK

Powered by SMFPacks Menu Editor Mod