编辑:我已将程序简化为基础:https ://github.com/aidan-aidan/temp/blob/master/source/vpp.c
我已经在 gba-dev 论坛上发布了这个问题,但他们似乎已经死了,而且很多天后我都没有得到回复。
这是一个显示问题的视频:http: //youtu.be/8gweFiSobwc(与上面的代码不同,如果你想看,你可以运行 rom)
如您所见,BG 旋转不受影响,尽管它们使用相同的 LUT 并且它们的结构中具有相同的数据类型。
我重做了几次LUT都没有用,这个问题只是在切换到2048圈而不是256圈后才出现。
查看 VBA 中的内存查看器,我可以看到 pb 的行为与 pa 不同。pa 的范围从 0x0100 到 0,正如我所期望的那样(与 1 到 0 相同),但是当枪从中心线向右时,pb 的范围从 0 到 0x0096,但一旦它从中心线向左跳就跳到 0xFFFF . 我唯一能想到的是它会变成负数(这是有道理的,因为该角度的余弦应该导致负数),但我不完全理解补码,所以我不能确定。0“度”在枪的右侧是水平的。512 是九十度。
我已经包含了我能想到的所有内容,感谢您提供任何帮助。
谢谢!