|
Post by gauze on Dec 19, 2017 0:23:15 GMT -5
I was just messing around with some stuff and I cannot for the life of me get this routine to work. the BIOS print out shows this for location and usage (edited for brevity): ; F61F Rot_VL_Mode ; ; ; ; ; The A register contains the rotation value, and the X contains a ; ; pointer to the vector list. The U register contains a pointer to a ; ; buffer into which the transformed points are to be saved. ; ; ; ; ENTRY DP = $C8 ; ; A-reg = rotation angle value (Rot_VL_Mode only) ; ; X-reg points to original vector list ; ; U-reg points to rotated vector list ; I also checked against the bios print out from 1983 at this routine and the description of use is the same. I verified that my original Mode list prints with Draw_VL_Mode (which I assume verifies it's valid), I am allocating RAM for the buffer where the list is supposed to be stored, I tried a variety of angle arguments and when I check the RAM in question in VIDE I get exactly 4 bytes back. The code is linked below. https://gist.github.com/gauze/f97eed8dbcb086d0b26bd5dfdaa8ec84 does this Routine just not work or what am I doing wrong cause I do not see the error and I'm convinced it's me but I might be too trusting here .
|
|
|
Post by Malban on Dec 19, 2017 3:03:45 GMT -5
The function should be called ROT_VL_Pattern. The "2" in your vectorlist should have a negative value like "$ff" - than it works.
The "positive" mode is taken as "end of list" - value.
Malban
|
|
|
Post by gauze on Dec 19, 2017 9:35:48 GMT -5
son of a bitch, yeah it does.
also it took me a while to figure out but I found where it's mentioned the angle argument is range $00-$3F (0-63) which isn't mentioned anywhere in the common disassembly and I could only find it in "Vectrex Programmers Manual vol II" with no explanations as to why, but there you go. I get that 360 can't be expressed in 8-bits but a little heads up in documentation would have been welcome haha.
|
|
|
Post by vectrexrc on Jun 21, 2018 5:47:33 GMT -5
the angle argument is range $00-$3F (0-63) so it is only possible to rotate object by 360/64 = 5.625 degrees? is there way to rotate by a smaller degree? eg. smoother * is 5 degrees considered smooth enough for vector game on vectrex? (* other than using pre-calculated vector lists - which could potentially take up a lot of rom space)
|
|
|
Post by gauze on Jun 21, 2018 7:52:01 GMT -5
it's possible if you write your own routines, using the built in BIOS routines, it's what we are stuck with.
|
|
|
Post by D-Type on Jun 21, 2018 8:39:29 GMT -5
64 positions sounds like quite a lot to me! Pac-man only has 4 :-)
|
|
|
Post by gauze on Jun 21, 2018 12:09:13 GMT -5
64 really isn't bad.
|
|