diff options
author | Alec Murphy <alec@checksum.fail> | 2017-06-11 19:28:04 -0400 |
---|---|---|
committer | Alec Murphy <alec@checksum.fail> | 2017-06-11 19:28:04 -0400 |
commit | fb796d0addefd0e49ed1c564a1137f2b216e91bc (patch) | |
tree | 523b2bccd32ec0f1f1277bb6e50b86124286f050 | |
parent | c22dff0c7ab2e4e9a4fe4815afb743e54aca46e8 (diff) |
Fix 8x16 sprites being Y-flipped incorrectly
-rw-r--r-- | LCD.HC | 17 |
1 files changed, 14 insertions, 3 deletions
@@ -74,7 +74,7 @@ U0 DrawIt(CTask *,CDC *dc) lcd->color=BLACK; GrRect(lcd,0,8*17,160,8); lcd->color=LTRED; - GrPrint(lcd,0,8*17,DisplayMsg); + GrPrint(lcd,0,8*17,DisplayMsg); }; I64 xpos=0; I64 ypos=0; @@ -460,7 +460,12 @@ U0 renderSprites() }; if (odc->color!=TRANSPARENT) { - GrPlot(odc,memory[0xFE00+oam_ctr+1]-8+(7-sp_px),(8*sp_yf)+memory[0xFE00+oam_ctr]-16+sp_py); + if ((memory[0xFE00+oam_ctr+3]>>6)&1) + { + GrPlot(odc,memory[0xFE00+oam_ctr+1]-8+(7-sp_px),(-8*sp_yf)+8+memory[0xFE00+oam_ctr]-16+sp_py); + } else { + GrPlot(odc,memory[0xFE00+oam_ctr+1]-8+(7-sp_px),(8*sp_yf)+memory[0xFE00+oam_ctr]-16+sp_py); + }; }; if (tp3) @@ -471,7 +476,12 @@ U0 renderSprites() if((tp2>>bg_px)&1){odc->color=sp01;}else{odc->color=TRANSPARENT;}; }; if (odc->color!=TRANSPARENT) { - GrPlot(odc,memory[0xFE00+oam_ctr+1]-8+(7-sp_px),(-8*sp_yf)+8+memory[0xFE00+oam_ctr]-16+sp_py); + if ((memory[0xFE00+oam_ctr+3]>>6)&1) + { + GrPlot(odc,memory[0xFE00+oam_ctr+1]-8+(7-sp_px),(8*sp_yf)+memory[0xFE00+oam_ctr]-16+sp_py); + } else { + GrPlot(odc,memory[0xFE00+oam_ctr+1]-8+(7-sp_px),(-8*sp_yf)+8+memory[0xFE00+oam_ctr]-16+sp_py); + }; }; }; @@ -489,3 +499,4 @@ U0 renderSprites() }; }; }; +
\ No newline at end of file |