Re: A86: Super fast GridPutSprite


[Prev][Next][Index][Thread]

Re: A86: Super fast GridPutSprite




Hmmmm...My maps are only 256 bytes...How would you change the routine fir that?

would you change ld hl,4096 to ld hl,256 ?

-InFuZeD

David Phillips wrote:

> Yes, I mean that one row of 8 pixels fits evenly into one byte, without
> shifting.  Thus, there is a "grid" of 16x8 sprites that fit on the screen
> without shifting or overlapping.
>
> The code below loads a 4k (exactly, 4096 bytes) into Ram page 1, starting at
> address $800b.
>
> TempRam  = $800b    ; $800b to $bfea = 16352 bytes  (thanks Dux!)
> Map   = TempRam   ; [4096]
>
> loaddata:
>  ld hl,mapvar-1    ; point to var name (first byte is irrelevant)
>  rst 20h     ; load name into OP1
>  rst 10h     ; call _FINDSYM
>  ret c       ; if it doesn't exist, return
>  ld a,b      ; copy high byte
>  ex de,hl     ; swap low bytes
>  inc hl      ; skip length word
>  inc hl      ; it is a word, not a byte...
>  call _SET_ABS_SRC_ADDR  ; set the source address as the var
>  ld a,1      ; copy to ram page 1
>  ld hl,Map-$8000   ; start at $8000 on page 1 (page 1 is at $10000 ABS)
>  call _SET_ABS_DEST_ADDR ; set the destination as ram page 1
>  xor a      ; clear high byte
>  ld hl,4096     ; size of string var
>  call _SET_MM_NUM_BYTES  ; set the number of bytes to copy
>  call _mm_ldir    ; copy the map
>  call _RAM_PAGE_1   ; make sure ram page 1 is still loaded
>  jr dataloaded
> mapvar:
>  .db 8,"cnc86map"
> dataloaded:
>
> -----Original Message-----
> From: InFuZeD <zoneti@home.com>
> To: assembly-86@lists.ticalc.org <assembly-86@lists.ticalc.org>
> Date: Tuesday, November 03, 1998 10:28 AM
> Subject: Re: A86: Super fast GridPutSprite
>
> >
> >
> >I needed to know how to address the data in RAM page 1 to load it.
> >Second, By saying the sprite fits in 1 byte, do you mean that It is one
> >row of a sprite? Just wondering.
> >
> >-InFuZeD
> >




References: