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: