void blitdofast_0 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b) { register int i; register int j; uae_u32 totald = 0; //uae_u32 srcc = b->bltcdat; uae_u32 dstd=0; uaecptr dstp = 0; for (j = b->vblitsize; j--; ) { for (i = b->hblitsize; i--; ) { uae_u32 bltadat, srca; if (dstp) chipmem_wput (dstp, dstd); dstd = (0) & 0xFFFF; totald |= dstd; if (ptd) { dstp = ptd; ptd += 2; } } if (ptd) ptd += b->bltdmod; } //b->bltcdat = srcc; if (dstp) chipmem_wput (dstp, dstd); if (totald != 0) b->blitzero = 0; }
void blitdofast_desc_a (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b) { uae_u32 totald = 0; register int i; register int j; uae_u32 preva = 0; uae_u32 srcc = b->bltcdat; uae_u32 dstd=0; uaecptr dstp = 0; for (j = b->vblitsize; j--; ) { for (i = 0; i < b->hblitsize; i++) { uae_u32 bltadat, srca; if (ptc) { srcc = chipmem_wget (ptc); ptc -= 2; } if (pta) { bltadat = blt_info.bltadat = chipmem_wget (pta); pta -= 2; } else { bltadat = blt_info.bltadat; } bltadat &= blit_masktable[i]; srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift; preva = bltadat; if (dstp) chipmem_wput (dstp, dstd); dstd = ((~srca & srcc)) & 0xFFFF; totald |= dstd; if (ptd) { dstp = ptd; ptd -= 2; } } if (pta) pta -= b->bltamod; if (ptc) ptc -= b->bltcmod; if (ptd) ptd -= b->bltdmod; } b->bltcdat = srcc; if (dstp) chipmem_wput (dstp, dstd); if (totald != 0) b->blitzero = 0; }
void blitdofast_desc_30 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b) { uae_u32 totald = 0; int i,j; uae_u32 preva = 0; uae_u32 prevb = 0, srcb = b->bltbhold; //uae_u32 srcc = b->bltcdat; uae_u32 dstd=0; uaecptr dstp = 0; for (j = b->vblitsize; j--; ) { for (i = 0; i < b->hblitsize; i++) { uae_u32 bltadat, srca; if (ptb) { uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget (ptb); ptb -= 2; srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift; prevb = bltbdat; } if (pta) { bltadat = blt_info.bltadat = chipmem_wget (pta); pta -= 2; } else { bltadat = blt_info.bltadat; } bltadat &= blit_masktable[i]; srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift; preva = bltadat; if (dstp) chipmem_wput (dstp, dstd); dstd = ((srca & ~srcb)) & 0xFFFF; totald |= dstd; if (ptd) { dstp = ptd; ptd -= 2; } } if (pta) pta -= b->bltamod; if (ptb) ptb -= b->bltbmod; if (ptd) ptd -= b->bltdmod; } b->bltbhold = srcb; //b->bltcdat = srcc; if (dstp) chipmem_wput (dstp, dstd); if (totald != 0) b->blitzero = 0; }
void blitdofast_f0 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b) { register int i; register int j; uae_u32 totald = 0; uae_u32 preva = 0; //uae_u32 srcc = b->bltcdat; uae_u32 dstd=0; uaecptr dstp = 0; for (j = b->vblitsize; j--; ) { for (i = 0; i < b->hblitsize; i++) { uae_u32 bltadat, srca; if (pta) { bltadat = blt_info.bltadat = chipmem_wget (pta); pta += 2; } else { bltadat = blt_info.bltadat; } bltadat &= blit_masktable[i]; srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift; preva = bltadat; if (dstp) chipmem_wput (dstp, dstd); dstd = (srca) & 0xFFFF; totald |= dstd; if (ptd) { dstp = ptd; ptd += 2; } } if (pta) pta += b->bltamod; if (ptd) ptd += b->bltdmod; } //b->bltcdat = srcc; if (dstp) chipmem_wput (dstp, dstd); if (totald != 0) b->blitzero = 0; }
void blitdofast_desc_cc (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b) { uae_u32 totald = 0; register int i; register int j; uae_u32 prevb = 0, srcb = b->bltbhold; //uae_u32 srcc = b->bltcdat; uae_u32 dstd=0; uaecptr dstp = 0; for (j = b->vblitsize; j--; ) { for (i = 0; i < b->hblitsize; i++) { uae_u32 bltadat, srca; if (ptb) { uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget (ptb); ptb -= 2; srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift; prevb = bltbdat; } if (dstp) chipmem_wput (dstp, dstd); dstd = (srcb) & 0xFFFF; totald |= dstd; if (ptd) { dstp = ptd; ptd -= 2; } } if (ptb) ptb -= b->bltbmod; if (ptd) ptd -= b->bltdmod; } b->bltbhold = srcb; //b->bltcdat = srcc; if (dstp) chipmem_wput (dstp, dstd); if (totald != 0) b->blitzero = 0; }
static void REGPARAM2 expamem_wput (uaecptr addr, uae_u32 value) { #ifdef JIT special_mem |= SPECIAL_MEM_WRITE; #endif if (expamem_type() != zorroIII) write_log ("warning: WRITE.W to address $%lx : value $%x\n", addr, value); else { switch (addr & 0xff) { case 0x44: if (expamem_type() == zorroIII) { // +Bernd Roesch value = value - 0x3000; // maps to 0x10000000 chipmem_wput (regs.regs[11] + 0x20, value); chipmem_wput (regs.regs[11] + 0x28, value); // -Bernd Roesch expamem_hi = value; (*card_map[ecard]) (); write_log (" Card %d (Zorro%s) done.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); ++ecard; if (ecard < MAX_EXPANSION_BOARDS) (*card_init[ecard]) (); else expamem_init_clear2 (); } break; } } }