Jump to content



1

Horizontal scroll with MLC


3 replies to this topic

#1 moulinaie OFFLINE  

moulinaie

    Chopper Commander

  • 185 posts
  • Location:France, Burgundy

Posted Sat Nov 19, 2011 3:21 AM

Hello,

I started writting a little scroll with MLC to test the BMOVE routines.
Here it is:

http://gtello.pagesp...r/mlcscroll.zip

Type "OLD DSK1.SCROLL"
and RUN

A wait parameter is asked, 0= fastest, then 3000 or 10000 to slow things a bit.

Here is the source code with PreCompiler (note that in V1.04 there is a little bug when compiling BMOVE... fixed in V1.05)

100 CALL CLEAR::DIM A$(41)
$MLC F 110 10 3000
300 INPUT "WAIT ":W::CALL CLEAR
310 CALL LINK("SCROL1",A$(),W)
320 GOTO 300
$SCROL1
	HIGHMEM 0
	GETPARAM 2 W	; wait loop
	IF=
		INC W	; at least W=1 !
	ENDIF
	DIMTABLE E 256	; enough for 8 lines
	BMOVEVTOC 256 256 E	; load 8 center lines
	DIMTABLE F 8	; to load one char definition
	LET S 1032	; VDP address of char 33
	LET B E
	INC B		; B = E+1 for one shift
	NDO I 96
		BMOVEVTOC S 8 F		; take definition
		NDO N 8			; 8 columns
			BMOVE B 255 E		; shift one position to the left
			LET P 31	; fist position in table
			FOR J 0 7
				GETTABLE F(J) A	; one def byte
				COMPARE A 128
				IF>=
					SUB A 128
					LET C 138	; "*"
				ELSE
					LET C 128	; " "
				ENDIF
				ADD A A	; shift A for next bit
				PUTTABLE F(J) A ; and stores it
				PUTTABLE E(P) C	; correct char in table
				ADD P 32	; next line
			NEXT
			DEFCHAR 1(N) 42
			BMOVECTOV E 256 256	; copy to screen !!
			NDO J W
			NLOOP			; wait loop
		NLOOP
		ADD S 8		; next definition
	NLOOP	
$$
$CHAR
	0000001818000000 0000183C3C180000 003C7E7E7E7E3C00 7EFFFFFFFFFFFF7E
	7EFFFFFFFFFFFF7E 003C7E7E7E7E3C00 0000183C3C180000 0000001818000000
$$
$END

And following, the source in BASIC after PreCompilation:

100 CALL CLEAR::DIM A$(41)
110 CALL INIT::PRINT "LOADING LOADER..."::CALL LOAD("DSK1.LODBIN")::RESTORE 3000
120 PRINT "OPENING BINARY FILE..." :: OPEN #1:"DSK1.MLCBIN",INPUT,INTERNAL,FIXED 128
130 PRINT "READING BLOCS"; :: I=0
140 I=I+1 :: INPUT #1:A$(I) :: PRINT ".";::IF EOF(1)=0 THEN 140
150 CLOSE #1 :: PRINT :: PRINT "COPYING";I;"BLOCS TO MEM..." :: CALL LINK("LODBIN",A$())::PRINT "MY LITTLE COMPILER READY!"
160 READ T$::I=0::IF T$="*" THEN 210
170 I=I+1::READ A$(I)::IF A$(I)<>"*" THEN 170
180 A$(I)=""::IF T$="C" THEN CALL LINK("CHAR",A$())::GOTO 160
190 IF T$="P" THEN CALL LINK("COMPIL",A$()) ELSE CALL LINK("SOUND",A$(),S$())
200 IF SEG$(A$(1),1,2)="OK" THEN 160 ELSE PRINT T$;" ERROR ";A$(1)::END
210 PRINT "COMPILATION OK!"
300 INPUT "WAIT ":W::CALL CLEAR
310 CALL LINK("SCROL1",A$(),W)
320 GOTO 300
3000 DATA P,SCROL1
3010 DATA "@0 G2W _0 !=0 IW L0 TRE256 TV256.256E TRF8 =S1032"
3020 DATA "=BE IB =I96 L0 TVS8F =N8 L1 TMB255E =P31 =J0 L2"
3030 DATA "TGFJA CA128 _3 ?<3 -A128 =C138 _4 B4 L3 =C128 L4"
3040 DATA "+AA TPFJA TPEPC +P32 IJ CJ7 !>2 &D1N42 TCE256.256"
3050 DATA "=JW L2 DJ !=2 DN !=1 +S8 DI !=0"
3060 DATA *
3070 DATA C
3080 DATA "0000001818000000","0000183C3C180000","003C7E7E7E7E3C00","7EFFFFFFFFFFFF7E"
3090 DATA "7EFFFFFFFFFFFF7E","003C7E7E7E7E3C00","0000183C3C180000","0000001818000000"
3100 DATA *
3110 DATA *


#2 sometimes99er OFFLINE  

sometimes99er

    Stargunner

  • 1,922 posts
  • Location:Denmark

Posted Sat Nov 19, 2011 4:26 AM

Pretty cool !

#3 rocky007 OFFLINE  

rocky007

    Moonsweeper

  • 285 posts

Posted Mon Nov 21, 2011 6:30 PM

simply brilliant ;)

i'm trying 1 pixel scroll....not really fast :(



Edited by rocky007, Mon Nov 21, 2011 6:43 PM.


#4 moulinaie OFFLINE  

moulinaie

    Chopper Commander

  • 185 posts
  • Location:France, Burgundy

Posted Tue Nov 22, 2011 12:53 PM

Hi,

I improved my scoll:
- display any message you want from simple strings
- there is a little animations with bouncing sprites while the text scrolls

Here on Youtube:

(Can someone explain how to embed the video on this page?)

Guillaume.




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users