Im driving poor ol' PacManPlus insane trying to get him to explain to me
exactly what is goin on with the DLL/DL...its not at all his fault....Im just rather
thick at first when I deal with unfamiliar hardware. So maybe with a chorus of
you pounding it into my noggin, I'll finally get it so I can write a higly efficient
32 sprite full screen character map kernal(is it actually called a Kernal with the
7800?)
I need this many sprites to do more robust Warbirds. Bob's DLL template
example is not a static disply that you simply update...he does tell me that
the example can be VERY optimized by only updating th necessary fields of
the DLL that can remain.
Gorf would have serious trouble using the current example code from Bob( though
I am beyond greatful for him sharing it as its been very helpful in underatnding most
everything else so far concerning the 7800.)
His example was simple enough to add the other sprites but its showing
its inefficiency(as Bob said it would) when I get more than 24 sprites on the
screen at once. I need a static field updatable 'kernal' instead of a dynamic
list.
Anyway....
in a DLL,
.byte $4F,<DL,>DL
this is holey DMA mode, H16 at 16 rasters.....represents 16 rasters on the screen, correct?
If I want 192 vertical lines I need 13 such entries in my DLL, yes?
Now, here is where Im having some trouble understanding.
Above we have the DLL pointing to all the same DL's...
Im having trouble with two things.
The 'software'ish nature of the Y postion:
I know that for sprites, you take your Y position and shift it right 4 to get your
zone of interest and add that to the sprites hi byte address field.....Im still not
sure what you do with the lower four bits because these are obviously the offset
into the zone.
I think I gather from what Bob was trying to explain to me ( most gracious man
that he is) that you need to stuff them in to the display list list zone that the sprite
will be in, in the offset field of that DLL? If this is the case, how does one handle two
different sprites in the same zone? I know Im looking at this wrong somehow....can
anyone help ol' Bob get my head around this?
The DLL/DL relationship:
My trouble here is clearly the relationship between the DL's and the DLL.
I need 32 sprites and I intend to use a full screen of characters for the back
ground stars and such. What is wrong or not wrong with the DLL/DL below?
DL: ; one char map: .byte MAPLO, WM|IND, MAPHI, PAL|WIDTH, HPOS ;32 sprites .byte SPR00LO, PAL|WIDTH, SPR00HI, HPOS ;0 .byte SPR01LO, PAL|WIDTH, SPR01HI, HPOS ;1 .byte SPR02LO, PAL|WIDTH, SPR02HI, HPOS ;2 .byte SPR03LO, PAL|WIDTH, SPR03HI, HPOS ;3 ...... ...... ...... .byte SPR31LO, PAL|WIDTH, SPR31HI, HPOS ;31 .byte 00,00,00 ;end DLL: .byte $02, 0, 0 ; no holey DMA, 3 blank lines .byte $09, 0, 0 ; no holey DMA, 10 blank lines .byte $4F, <DL, >DL ; 1st 16 rasters of visible display and can show all sprites of DL1 in this zone0 .byte $4F, <DL, >DL ; 2nd 16 rasters of visible display and can show all sprites of DL1 in this zone1 .byte $4F, <DL, >DL ; 3rd 16 rasters of visible display and can show all sprites of DL1 in this zone2 .byte $4F, <DL, >DL ; 4th 16 rasters of visible display and can show all sprites of DL1 in this zone3 .byte $4F, <DL, >DL ; 5th 16 rasters of visible display and can show all sprites of DL1 in this zone4 .byte $4F, <DL, >DL ; 6th 16 rasters of visible display and can show all sprites of DL1 in this zone5 .byte $4F, <DL, >DL ; 7th 16 rasters of visible display and can show all sprites of DL1 in this zone6 .byte $4F, <DL, >DL ; 8th 16 rasters of visible display and can show all sprites of DL1 in this zone7 .byte $4F, <DL, >DL ; 9th 16 rasters of visible display and can show all sprites of DL1 in this zone8 .byte $4F, <DL, >DL ; 10th 16 rasters of visible display and can show all sprites of DL1 in this zone9 .byte $4F, <DL, >DL ; 11th 16 rasters of visible display and can show all sprites of DL1 in this zone10 .byte $4F, <DL, >DL ; 12th 16 rasters of visible display and can show all sprites of DL1 in this zone11 .byte $4F, <DL, >DL ; 13th 16 rasters of visible display and can show all sprites of DL1 in this zone12 .byte $0F, 0, 0 ; no holey DMA 16 blank lines .byte $0E, 0, 0 ; no holey DMA 15 blank lines .byte $00,$00,$00,$00 ; end
What is missing? What do I have too much of? Does this belong in my recycle bin its so not there?
I appreciate any indulgence from anyone who might dare try chiseling through my think skull
this complex graphics chip.
Thanks
Gorf














