Schrijver
| Sprites
|
IC msx professional Berichten: 538 | Geplaatst: 27 Mei 2004, 23:41   |
usually sprites can be defines by 8*8 patterns or 16*16 patterns (depending on the REG#1 bit 1).
If screen 5 is used, the V9938 is set to sprite mode 2.
There can be 8 sprites (of 16*16) on one line. Every sprite has it's own identifier (sprite number iirc)
I have written a sprite routine in assembly at the moment. , but one thing I do not get:
When I have 5 sprites on a row, the 4th sprite disapeares. Has anyone ever encoutered the same problem?
(I'm have no problem posting the source if this equired)
TIA
IC
|
|
flyguille msx master Berichten: 1223 | Geplaatst: 28 Mei 2004, 00:07   |
how you switch to screen 5?
in which x and y position it disappear?
you are sure that are not more sprites in that line, overall invisible sprites?
|
|
IC msx professional Berichten: 538 | Geplaatst: 28 Mei 2004, 00:11   |
I had defined screen 5 by using a bios call, and I tried a basic routine like:
10 screen 5:bload"sprites.bin",r
But there's no difference hear.
But by initialising screen 5, there should not be any sprites on screen (even not invisible). Or am I wrong about that?
|
|
flyguille msx master Berichten: 1223 | Geplaatst: 28 Mei 2004, 00:16   |
well, that program, only touch 5 or 8 sprites to use?
or that simply set a VRAM image?
|
|
IC msx professional Berichten: 538 | Geplaatst: 28 Mei 2004, 00:21   |
I just add the sprite tables in the VRAM (H7800) using screen 5 (I do not want to use onther screen at the moment). It's basicly a pattern dumped into VRAM.
|
|
IC msx professional Berichten: 538 | Geplaatst: 28 Mei 2004, 00:22   |
If I may add. It's a pattern combined with a color pattern (defined by SPE5 iirc (sprite genereator of AGE5))
|
|
IC msx professional Berichten: 538 | Geplaatst: 28 Mei 2004, 00:24   |
Now I think of it.. I'd might just clear all VRAM mem (using H7800 and above) and then add the sprite table.
Will try that tomorrow
|
|
flyguille msx master Berichten: 1223 | Geplaatst: 28 Mei 2004, 00:41   |
NO
all sprite by default are not in the Y position 0, for a sprite number will be disable, need be in Y = D9, or other number, i just not remember..... the number on SCREEN 5
So, if you are just erasing the VRAM with 00, and then touch only few sprite attributes, so that is wrong....
because on the lines 0 - 15 are almost 25 sprites at the same Y position.
Other thing can be that are just using SCREEN 5 but the sprite engine 1, and not the advance that got the screen 5 by default on MSX. So, you are seeing the multicolored sprites?
|
|
Maggoo msx professional Berichten: 590 | Geplaatst: 28 Mei 2004, 07:19   |
Quote:
| Now I think of it.. I'd might just clear all VRAM mem (using H7800 and above) and then add the sprite table.
Will try that tomorrow
|
Can you post a snip of your code to see how it works ? Flyguile, it's not possible to be in screen5 and sprite mode 1. Screen5 is "Always" sprite mode 2. |
|
[D-Tail]
 msx guru Berichten: 3019 | Geplaatst: 28 Mei 2004, 08:33   |
According to the Yamaha/ASCII tech manual --> The Y-position of a sprite must be 216 (=#D8) to disable them. That is, using sprite mode 2. In sprite mode 1, it's 208, so #D0.  |
|
ro msx guru Berichten: 2346 | Geplaatst: 28 Mei 2004, 08:48   |
dude:
First clear the sprite VRAM table (which may vary, if you used default; you should indeed clear #7800-#7fff)
If you used Spen5 (T&E editor) and used double line colour trick, then every sprite is build up using 2(!) sprites which would fit the discription of disappearing sprites when using more than 4 on a row. (get it?)
I've written some excellent articles (if I may say so) myself like yeeeears ago explaining Sprite stuff in detail (using ASM examples) (including vram base adr. attribs etc etc)
maybe I should translate'm to english (org = dutch) and post them somewhere (map?) cuz too many ppl have too many questions about this subject
|
|
BiFi msx guru Berichten: 3142 | Geplaatst: 28 Mei 2004, 09:07   |
People tend to confuse real coordinates and 'sprite coordinates', especially as the sprites are generated 1 line later than their coordinates state.
Disabling a sprite will also disable all sprites with a lower priority. This means if you set sprite 10 on the disable coordinate as posted by [D-Tail], that sprite 10, 11, 12, 13, ..., 31 will disappear as well. So to prevent 'ghost-sprites' from display, be sure the next sprite is set on Y=208 for sprite mode 1 (SCREEN 1, 2, 3) or Y=216 for sprite mode 2 (SCREEN 4, 5, 6, 7, 8, 10, 11, 12).
Also, the sprite size setting does not affect the number of sprites that can be displayed on a single line. It only affects the number of sprite patterns you can store in the pointed 2KB space.
Which issues like these, it's always useful to post the (relevant) source.
|
|
BiFi msx guru Berichten: 3142 | Geplaatst: 28 Mei 2004, 09:08   |
The MAP is a very good place for such articles, ro. We (the MAP team) await your contribution.
|
|
ro msx guru Berichten: 2346 | Geplaatst: 28 Mei 2004, 14:47   |
damn, beef. now you got me. Do I HAVE to translate for MAP?
(oh well.. I'll pick that task up next week I hope... when my goddamn PC is up and running again!! )
|
|
flyguille msx master Berichten: 1223 | Geplaatst: 28 Mei 2004, 15:45   |
Y=208 (sprite1) , is for disable all sprites with low priority..
Y=209 (sprite 1), is for disable only THE sprite that has that Y
|
|
|
|
|