diff --git a/src/main.c b/src/main.c index 6382469..97c40d6 100644 --- a/src/main.c +++ b/src/main.c @@ -31,34 +31,6 @@ void castRay(s16 angle){ fix16 dx = cosFix16(ind); fix16 tan = FIX16(0); if(dx != 0) tan = fix16Div(dy, dx); - char str[9]; - sprintf(str, "Ang: %4d", angle); - BMP_drawText(str, 20, 0); - char str2[13]; - bool neg = false; - fix16 nsin = dy; - if (dy < 0){ - neg = true; - nsin = 0 - nsin; - } - sprintf(str2, "Sin: %s%3d.%03d", neg ? "-" : " ", nsin >> FIX16_FRAC_BITS, 1000*fix16Frac(nsin)/(1<> FIX16_FRAC_BITS, 1000*fix16Frac(ncos)/(1<> FIX16_FRAC_BITS, 1000*fix16Frac(ntan)/(1< 51){ + nTan = FIX16(51); + } + if(fix16ToInt(nTan) < -51){ + nTan = FIX16(-51); + } if(angle > 90 && r < 270) { rx = FIX16(l.pt1.x / 10 * 10)-FIX16(1); ry = fix16Mul(FIX16(l.pt1.x) - rx,nTan) + FIX16(l.pt1.y); @@ -152,6 +130,8 @@ void castRay(s16 angle){ l.pt2.x = fix16ToInt(hx); l.pt2.y = fix16ToInt(hy); } + + } void mapscan(){ @@ -184,15 +164,17 @@ void render(){ mapscan(); if(angle >= 360) angle = angle - 360; if(angle < 0) angle = 360 + angle; - //castRay(angle-20); - //BMP_drawLine(&l); - //castRay(angle-10); - //BMP_drawLine(&l); + castRay(angle-20); + BMP_drawLine(&l); + castRay(angle-10); + BMP_drawLine(&l); + for (int i = 0; i < 16; i++){ castRay(angle); //BMP_drawLine(&l); - //castRay(angle+10); - //BMP_drawLine(&l); - //castRay(angle+20); + } + castRay(angle+10); + BMP_drawLine(&l); + castRay(angle+20); BMP_drawLine(&l); BMP_showFPS(0);