|
Post by minsoft on Nov 11, 2020 17:26:24 GMT -5
I have a strange problem. I'm using Malbans DRAW_VLC macro in place of Draw_VLc. As a rule it works perfectly, however on my spare Vectrex it displays one particular 'enemy' incorrectly. Specifically, one vector from the list of 9 vectors appear to be drawn wrong. My observations:
* It works fine on my other Vectrex
* The problem enemy vector list displays correctly with Draw_VLc bios routine * The screen position the vector list is drawn at doesn't help/worsen the problem
* I am using a series of vector lists to animate the enemy, and all of them display incorrectly (at the same common vector) * My other enemy etc vector lists display perfectly
This is an example problem vector list (SCALE_4 = 4 decimal):
DB 8 DB -12*SCALE_4, 10*SCALE_4 DB -11*SCALE_4, 20*SCALE_4 DB -15*SCALE_4,-30*SCALE_4 DB 15*SCALE_4,-30*SCALE_4 DB 11*SCALE_4, 20*SCALE_4 ; this vector is drawn too vertical and approx twice too long DB 12*SCALE_4, 10*SCALE_4 DB -12*SCALE_4,-10*SCALE_4 DB -11*SCALE_4,-20*SCALE_4 ; (interestingly this is the inverse of the problem vector, and draws correctly) DB -15*SCALE_4, 30*SCALE_4
Has anyone run into this problem before?
I will play around with the vector list and see if drawing it in a different order makes any difference.
|
|
|
Post by minsoft on Nov 12, 2020 12:46:43 GMT -5
Interestingly drawing the vector list anti-clockwise instead of clockwise 'fixes' it. ie this in place of the vectorlist posted previously:
DB 8 DB -12*SCALE_4,-10*SCALE_4 DB -11*SCALE_4,-20*SCALE_4 DB -15*SCALE_4, 30*SCALE_4 DB 15*SCALE_4, 30*SCALE_4 DB 11*SCALE_4,-20*SCALE_4 DB 12*SCALE_4,-10*SCALE_4 DB -12*SCALE_4,-10*SCALE_4 DB -11*SCALE_4,-20*SCALE_4 DB -15*SCALE_4, 30*SCALE_4
|
|
|
Post by Malban on Nov 16, 2020 4:05:18 GMT -5
Hi, these "old" macros were written, when I had less experience in Vectrex peculiarities....
It might be the "problem", that your Vectrex is slightly "cranky" (see somewhere in my blog)... Cranky Vectrex might be 1 out of 20 or so, we by now guess, that some internal components are from a different manufacturer, it is not that the vectrex is nearly "broken"... So don't despair...
If it is, and if this is the "same" situation that I encountered...
Than following will probably help: - do not extend your vectors to fullest strength... I make a habit out of it to not extend vectors beyond a strength of 100 - use BIOS functions - alter the Macro
The "crankyness" shows (at least) in two situations:
a) if the y on one vector is "very positive" and the y position of the following vector is very negative (a jump from e.g. +110 to -110), than the y length of the second vector can be "erratic" b) switching from a "large" positive DAC value (which mostly was the last x position) to a "large" negative value (the next y position)
For both there is a solution (and that the BIOS works, is a sign for me, that the original developers new of this...):
a) can be remedied by putting additional cycles between the two <VIA_port_b accesses (the switching of Y/X integrators) b) can be remedied by putting additional cycles between <VIA_port_b and <VIA_port_a access for setting the Y position.
So ... in my old MACRO, replace all occurrences of
STD VIA_port_b
with
STb <VIA_port_a STa <VIA_port_b
And it will probably work fine.
Cheers
Malban
|
|
|
Post by minsoft on Nov 22, 2020 17:50:22 GMT -5
Hi Malban,
Many thanks for your thorough reply!
The two situations you listed do not seem to match exactly where I am having the issue...but I have no doubt you are on the right track given that drawing the vectors in the reverse order has 'fixed' it.
I have not tried altering the macro as you suggest yet, but will try to do some and report back.
Thanks again!
|
|