Top secrets sources NedoPC pentevo

Rev

Rev 799 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

#include "std.h"

#include "emul.h"
#include "vars.h"
#include "draw.h"
#include "dxrframe.h"
#include "dxrcopy.h"
#include "dxr_atmf.h"

// small
void rend_atmframe8(unsigned char *dst, unsigned pitch)
{
   if (!conf.updateb)
       return;
   unsigned char *src = rbuf;
   unsigned scx = temp.scx, delta = scx/4;
   unsigned top = (temp.scy-200)/2;
   unsigned y;
   for (y = 0; y < top; y++)
   {
      line8(dst, src, t.sctab8[0]); dst += pitch;
      src += delta;
   }
   temp.scx = (scx-320)/2;
   unsigned r_start = scx - temp.scx;
   unsigned scr_offs = r_start*2;
   unsigned atr_offs = r_start/4;
   for (y = 0; y < 200; y++)
   {
      line8(dst, src, t.sctab8[0]);
      line8(dst+scr_offs, src + atr_offs, t.sctab8[0]);
      dst += pitch;
      src += delta;
   }
   temp.scx = scx;
   for (y = 0; y < top; y++)
   {
      line8(dst, src, t.sctab8[0]); dst += pitch;
      src += delta;
   }
}

void rend_atmframe16(unsigned char *dst, unsigned pitch)
{
   if (!conf.updateb)
       return;
   unsigned char *src = rbuf;
   unsigned scx = temp.scx, delta = scx/4;
   unsigned top = (temp.scy-200)/2;
   unsigned y;
   for (y = 0; y < top; y++)
   {
      line16(dst, src, t.sctab16d[0]); dst += pitch;
      src += delta;
   }
   temp.scx = (scx-320)/2;
   unsigned r_start = scx - temp.scx;
   unsigned scr_offs = r_start*4;
   unsigned atr_offs = r_start/4;

   for (y = 0; y < 200; y++)
   {
      line16(dst, src, t.sctab16[0]);
      line16(dst+scr_offs, src + atr_offs, t.sctab16d[0]);
      dst += pitch;
      src += delta;
   }

   temp.scx = scx;
   for (y = 0; y < top; y++)
   {
      line16(dst, src, t.sctab16[0]); dst += pitch;
      src += delta;
   }
}

void rend_atmframe32(unsigned char *dst, unsigned pitch)
{
   if (!conf.updateb)
       return;
   unsigned char *src = rbuf;
   unsigned scx = temp.scx, delta = scx/4;
   unsigned top = (temp.scy-200)/2;
   unsigned y;
   for (y = 0; y < top; y++)
   {
      line32(dst, src, t.sctab32[0]); dst += pitch;
      src += delta;
   }
   temp.scx = (scx-320)/2;
   unsigned r_start = scx - temp.scx;
   unsigned scr_offs = r_start*8;
   unsigned atr_offs = r_start/4;
   for (y = 0; y < 200; y++)
   {
      line32(dst, src, t.sctab32[0]);
      line32(dst+scr_offs, src + atr_offs, t.sctab32[0]);
      dst += pitch;
      src += delta;
   }
   temp.scx = scx;
   for (y = 0; y < top; y++)
   {
      line32(dst, src, t.sctab32[0]); dst += pitch;
      src += delta;
   }
}


// double
void rend_atmframe_8d1(unsigned char *dst, unsigned pitch)
{
   if (!conf.updateb) return;
   unsigned char *src = rbuf; unsigned scx = temp.scx, delta = scx/4;
   unsigned top = (temp.scy-200)/2;
   unsigned y; //Alone Coder 0.36.7
   for (/*unsigned*/ y = 0; y < top; y++) {
      line8d(dst, src, t.sctab8d[0]); dst += pitch;
      src += delta;
   }
   temp.scx = (scx-320)/2;
   unsigned r_start = scx - temp.scx,
            scr_offs = r_start*2,
            atr_offs = r_start/4;
   for (y = 0; y < 200; y++) {
      line8d(dst, src, t.sctab8d[0]);
      line8d(dst+scr_offs, src + atr_offs, t.sctab8d[0]);
      dst += pitch; src += delta;
   }
   temp.scx = scx;
   for (y = 0; y < top; y++) {
      line8d(dst, src, t.sctab8d[0]); dst += pitch;
      src += delta;
   }
}

void rend_atmframe_8d(unsigned char *dst, unsigned pitch)
{
   if (!conf.updateb) return;
   unsigned char *src = rbuf; unsigned scx = temp.scx, delta = scx/4;
   unsigned top = (temp.scy-200)/2;
   unsigned y; //Alone Coder 0.36.7
   for (/*unsigned*/ y = 0; y < top; y++) {
      line8d(dst, src, t.sctab8d[0]); dst += pitch;
      line8d(dst, src, t.sctab8d[1]); dst += pitch;
      src += delta;
   }
   temp.scx = (scx-320)/2;
   unsigned r_start = scx - temp.scx,
            scr_offs = r_start*2,
            atr_offs = r_start/4;
   for (y = 0; y < 200; y++) {
      line8d(dst, src, t.sctab8d[0]);
      line8d(dst+scr_offs, src + atr_offs, t.sctab8d[0]);
      dst += pitch;
      line8d(dst, src, t.sctab8d[1]);
      line8d(dst+scr_offs, src + atr_offs, t.sctab8d[1]);
      dst += pitch;
      src += delta;
   }
   temp.scx = scx;
   for (y = 0; y < top; y++) {
      line8d(dst, src, t.sctab8d[0]); dst += pitch;
      line8d(dst, src, t.sctab8d[1]); dst += pitch;
      src += delta;
   }
}

void rend_atmframe_16d1(unsigned char *dst, unsigned pitch)
{
   if (!conf.updateb) return;
   unsigned char *src = rbuf; unsigned scx = temp.scx, delta = scx/4;
   unsigned top = (temp.scy-200)/2;
   unsigned y; //Alone Coder 0.36.7
   for (/*unsigned*/ y = 0; y < top; y++) {
      line16d(dst, src, t.sctab16d[0]); dst += pitch;
      src += delta;
   }
   temp.scx = (scx-320)/2;
   unsigned r_start = scx - temp.scx,
            scr_offs = r_start*4,
            atr_offs = r_start/4;
   for (y = 0; y < 200; y++) {
      line16d(dst, src, t.sctab16d[0]);
      line16d(dst+scr_offs, src + atr_offs, t.sctab16d[0]);
      dst += pitch; src += delta;
   }
   temp.scx = scx;
   for (y = 0; y < top; y++) {
      line16d(dst, src, t.sctab16d[0]); dst += pitch;
      src += delta;
   }
}

void rend_atmframe_16d(unsigned char *dst, unsigned pitch)
{
   if (!conf.updateb) return;
   unsigned char *src = rbuf; unsigned scx = temp.scx, delta = scx/4;
   unsigned top = (temp.scy-200)/2;
   unsigned y; //Alone Coder 0.36.7
   for (/*unsigned*/ y = 0; y < top; y++) {
      line16d(dst, src, t.sctab16d[0]); dst += pitch;
      line16d(dst, src, t.sctab16d[1]); dst += pitch;
      src += delta;
   }
   temp.scx = (scx-320)/2;
   unsigned r_start = scx - temp.scx,
            scr_offs = r_start*4,
            atr_offs = r_start/4;
   for (y = 0; y < 200; y++) {
      line16d(dst, src, t.sctab16d[0]);
      line16d(dst+scr_offs, src + atr_offs, t.sctab16d[0]);
      dst += pitch;
      line16d(dst, src, t.sctab16d[1]);
      line16d(dst+scr_offs, src + atr_offs, t.sctab16d[1]);
      dst += pitch;
      src += delta;
   }
   temp.scx = scx;
   for (y = 0; y < top; y++) {
      line16d(dst, src, t.sctab16d[0]); dst += pitch;
      line16d(dst, src, t.sctab16d[1]); dst += pitch;
      src += delta;
   }
}

void rend_atmframe_32d1(unsigned char *dst, unsigned pitch)
{
   if (!conf.updateb) return;
   unsigned char *src = rbuf; unsigned scx = temp.scx, delta = scx/4;
   unsigned top = (temp.scy-200)/2;
   unsigned y; //Alone Coder 0.36.7
   for (/*unsigned*/ y = 0; y < top; y++) {
      line32d(dst, src, t.sctab32[0]); dst += pitch;
      src += delta;
   }
   temp.scx = (scx-320)/2;
   unsigned r_start = scx - temp.scx,
            scr_offs = r_start*8,
            atr_offs = r_start/4;
   for (y = 0; y < 200; y++) {
      line32d(dst, src, t.sctab32[0]);
      line32d(dst+scr_offs, src + atr_offs, t.sctab32[0]);
      dst += pitch; src += delta;
   }
   temp.scx = scx;
   for (y = 0; y < top; y++) {
      line32d(dst, src, t.sctab32[0]); dst += pitch;
      src += delta;
   }
}

void rend_atmframe_32d(unsigned char *dst, unsigned pitch)
{
   if (!conf.updateb) return;
   unsigned char *src = rbuf; unsigned scx = temp.scx, delta = scx/4;
   unsigned top = (temp.scy-200)/2;
   unsigned y; //Alone Coder 0.36.7
   for (/*unsigned*/ y = 0; y < top; y++) {
      line32d(dst, src, t.sctab32[0]); dst += pitch;
      line32d(dst, src, t.sctab32[1]); dst += pitch;
      src += delta;
   }
   temp.scx = (scx-320)/2;
   unsigned r_start = scx - temp.scx,
            scr_offs = r_start*8,
            atr_offs = r_start/4;
   for (y = 0; y < 200; y++) {
      line32d(dst, src, t.sctab32[0]);
      line32d(dst+scr_offs, src + atr_offs, t.sctab32[0]);
      dst += pitch;
      line32d(dst, src, t.sctab32[1]);
      line32d(dst+scr_offs, src + atr_offs, t.sctab32[1]);
      dst += pitch;
      src += delta;
   }
   temp.scx = scx;
   for (y = 0; y < top; y++) {
      line32d(dst, src, t.sctab32[0]); dst += pitch;
      line32d(dst, src, t.sctab32[1]); dst += pitch;
      src += delta;
   }
}