The following warnings occurred:
Warning [2] Undefined array key 0 - Line: 1677 - File: showthread.php PHP 8.2.31 (Linux)
File Line Function
/inc/class_error.php 157 errorHandler->error
/showthread.php 1677 errorHandler->error_callback
/showthread.php 916 buildtree




Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Scrolling Tiles
#7
faster version, uses 9 bit rotation
this one takes 7 seconds to scroll 800 pixels
the previous one takes 23 seconds
Code:
DIM mapdata(63) AS UBYTE => {1,0,1,1,1,1,1,1,1,0,2,0,2,1,1,2,1,0,2,0,2,1,1,2,1,0,2,0,2,1,1,2,1,0,2,0,2,1,1,2,1,0,2,0,2,1,1,2,1,0,2,0,2,1,1,2,1,0,2,0,2,1,1,2} DIM brick(7) AS UBYTE =>{249,249,0,159,159,0,249,249} DIM crystal(7) AS UBYTE =>{16,40,84,40,84,40,16,0} Dim LandscapeBANDS(7) AS UBYTE=>{1,2,4,8,16,32,64,128} INK 2 PAPER 0 Dim LandscapeEightIter as Ubyte Dim LandscapeIter as ubyte Dim LineNumber as UByte DIm NextGraphic as UByte Dim address as UBYTE Dim x as UINTEGER for x=0 to 31 for y=0 to 23 Print AT y,x;"A" next next Dim startaddress as UInteger Function FASTCALL drawthis() as UBYTE ASM ;LD A,255 ;LD (__LABEL__iters),A ;iterloop: LD A,7 LD (__LABEL__heightiter),A LD HL,(__LABEL__startadr) heightloop: LD B,L Ld A,(HL) RLA LD (HL),A widthloop: DEC L Ld A,(HL) RLA LD (HL),A djnz widthloop LD A,31 LD L,A INC H LD A,(__LABEL__heightiter) DEC A LD (__LABEL__heightiter),A CP 0 JP NZ,heightloop ;LD A,(__LABEL__iters) ;DEC A ;LD (__LABEL__iters),A ;CP 0 ;jp nz,iterloop END ASM End Function for x=0 to 800 drawthis() 'address=PEEK (UINTEGER,@adr) 'address=address+31 'CurrentGraphic=PEEK(UINTEGER,address) 'CurrentGraphic Or 1 'P''OKE UINTEGER address,CurrentGraphic for LineNumber=0 to 7 CurrentGraphic=PEEK(UINTEGER,address) if mapdata(LandscapeIter)=1 NextGraphic=brick(LineNumber) GOTO 50 end if if mapdata(LandscapeIter)=2 NextGraphic=crystal(LineNumber) GOTO 50 end if if mapdata(LandscapeIter)=0 NextGraphic=0 end if 50 'if LineNumber=0 if NextGraphic Band LandscapeBANDS(LandscapeEightIter) POKE @bit0+LineNumber,1 else POKE @bit0+LineNumber,0 end if 'GOTO 100 'end if 100 next LandscapeEightIter=LandscapeEightIter+1 if LandscapeEightIter=8 LandscapeEightIter=0 LandscapeIter=LandscapeIter+1 end if ASM LD HL,(__LABEL__startadr) LD A,31 LD L,A LD A,(__LABEL__bit0) CP 0 JP Z,dontset0 LD A,(HL) OR 1 LD (HL),A dontset0: INC H LD A,(__LABEL__bit1) CP 0 JP Z,dontset1 LD A,(HL) OR 1 LD (HL),A dontset1: INC H LD A,(__LABEL__bit2) CP 0 JP Z,dontset2 LD A,(HL) OR 1 LD (HL),A dontset2: INC H LD A,(__LABEL__bit3) CP 0 JP Z,dontset3 LD A,(HL) OR 1 LD (HL),A dontset3: INC H LD A,(__LABEL__bit4) CP 0 JP Z,dontset4 LD A,(HL) OR 1 LD (HL),A dontset4: INC H LD A,(__LABEL__bit5) CP 0 JP Z,dontset5 LD A,(HL) OR 1 LD (HL),A dontset5: INC H LD A,(__LABEL__bit6) CP 0 JP Z,dontset6 LD A,(HL) OR 1 LD (HL),A dontset6: INC H LD A,(__LABEL__bit7) CP 0 JP Z,dontset7 LD A,(HL) OR 1 LD (HL),A dontset7: END ASM next 'Print "done" 'Print STR(178 Band 128) STOP adr: ASM defw 16384 END ASM startadr: ASM defw 16384 END ASM currentgraphic: ASM defb 0 END ASM linestartadr: ASM defb 0 END ASM bit0: ASM defb 0 END ASM bit1: ASM defb 0 END ASM bit2: ASM defb 0 END ASM bit3: ASM defb 0 END ASM bit4: ASM defb 0 END ASM bit5: ASM defb 0 END ASM bit6: ASM defb 0 END ASM bit7: ASM defb 0 END ASM heightiter: ASM defb 7 END ASM iters: ASM defb 255 END ASM
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)