Much better (nw)

This commit is contained in:
angelosa 2017-01-30 17:39:18 +01:00
parent 502129c5b5
commit c01cebccbe

View File

@ -832,26 +832,22 @@ static const char *const psize[] = { "8x8", "16x16", "32x32", "64x64" };
inline void ygv608_device::draw_layer_roz(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, tilemap_t *source_tilemap) inline void ygv608_device::draw_layer_roz(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, tilemap_t *source_tilemap)
{ {
int xc, yc; //int xc, yc;
double r, alpha, sin_theta, cos_theta; //double r, alpha, sin_theta, cos_theta;
const rectangle &visarea = screen.visible_area(); //const rectangle &visarea = screen.visible_area();
if( m_regs.s.r7 & r7_zron ) if( m_regs.s.r7 & r7_zron )
{ {
/* // old code, for reference.
* fudge - translate ax,ay to startx, starty each time //xc = m_ax >> 16;
*/ //yc = m_ay >> 16;
//r = sqrt( (double)( xc * xc + yc * yc ) );
xc = m_ax >> 16; //alpha = atan( (double)xc / (double)yc );
yc = m_ay >> 16; //sin_theta = (double)m_dyx / (double)0x10000;
r = sqrt( (double)( xc * xc + yc * yc ) ); //cos_theta = (double)m_dx / (double)0x10000;
alpha = atan( (double)xc / (double)yc );
sin_theta = (double)m_dyx / (double)0x10000;
cos_theta = (double)m_dx / (double)0x10000;
source_tilemap->draw_roz(screen, bitmap, cliprect, source_tilemap->draw_roz(screen, bitmap, cliprect,
( visarea.min_x << 16 ) + m_ax + 0x10000 * r * ( -sin( alpha ) * cos_theta + cos( alpha ) * sin_theta ), m_ax, m_ay,
( visarea.min_y << 16 ) + m_ay + 0x10000 * r * ( cos( alpha ) * cos_theta + sin( alpha ) * sin_theta ),
m_dx, m_dxy, m_dyx, m_dy, true, 0, 0 ); m_dx, m_dxy, m_dyx, m_dy, true, 0, 0 );
} }
else else