update 0.8.1
This commit is contained in:
parent
6432fdb542
commit
dd3bb23b86
24 changed files with 10461 additions and 9746 deletions
404
sae/blitter.js
404
sae/blitter.js
|
|
@ -52,8 +52,8 @@ function Blitter() {
|
|||
[0 ] /* F */
|
||||
];
|
||||
const blit_cycle_diagram_line = [4, 0,3,5,4, 0,3,5,4];
|
||||
const blit_cycle_diagram_finald = [2, 0,4, 0,4];
|
||||
const blit_cycle_diagram_finalld = [2, 0,0, 0,0];
|
||||
//const blit_cycle_diagram_finald = [2, 0,4, 0,4];
|
||||
//const blit_cycle_diagram_finalld = [2, 0,0, 0,0];
|
||||
|
||||
var blit_filltable = [];
|
||||
var blit_masktable = [];
|
||||
|
|
@ -84,8 +84,7 @@ function Blitter() {
|
|||
var blinea = 0, blineb = 0;
|
||||
var blitline = 0, blitfc = 0, blitfill = 0, blitife = 0, blitsing = 0, blitdesc = 0;
|
||||
var blitonedot = 0, blitsign = 0, blitlinepixel = 0;
|
||||
|
||||
var ddat1 = 0, ddat2 = 0;
|
||||
|
||||
var ddat1use = 0, ddat2use = 0;
|
||||
var last_blitter_hpos = 0;
|
||||
|
||||
|
|
@ -101,7 +100,7 @@ function Blitter() {
|
|||
|
||||
//function build_blitfilltable()
|
||||
{
|
||||
var blit_masktable = new Uint16Array(BLITTER_MAX_WORDS);
|
||||
blit_masktable = new Uint16Array(BLITTER_MAX_WORDS);
|
||||
for (var i = 0; i < BLITTER_MAX_WORDS; i++)
|
||||
blit_masktable[i] = 0xffff;
|
||||
|
||||
|
|
@ -130,18 +129,18 @@ function Blitter() {
|
|||
|
||||
/*---------------------------------*/
|
||||
|
||||
this.reset = function() {
|
||||
bltstate = BLT_done;
|
||||
blit_interrupt = true;
|
||||
blit_stuck = 0;
|
||||
}
|
||||
this.reset = function () {
|
||||
bltstate = BLT_done;
|
||||
blit_interrupt = true;
|
||||
blit_stuck = 0;
|
||||
};
|
||||
|
||||
function blitter_dump() {
|
||||
/*function blitter_dump() {
|
||||
BUG.info('PT A=%08X B=%08X C=%08X D=%08X', bltapt, bltbpt, bltcpt, bltdpt);
|
||||
BUG.info('CON0=%04X CON1=%04X DAT A=%04X B=%04X C=%04X', bltcon0, bltcon1, blt_info.bltadat, blt_info.bltbdat, blt_info.bltcdat);
|
||||
//BUG.info('AFWM=%04X ALWM=%04X MOD A=%04X B=%04X C=%04X D=%04X', blt_info.bltafwm, blt_info.bltalwm, blt_info.bltamod & 0xffff, blt_info.bltbmod & 0xffff, blt_info.bltcmod & 0xffff, blt_info.bltdmod & 0xffff);
|
||||
BUG.info('AFWM=%04X ALWM=%04X MOD A=%04X B=%04X C=%04X D=%04X', blt_info.bltafwm, blt_info.bltalwm, blt_info.bltamod, blt_info.bltbmod, blt_info.bltcmod, blt_info.bltdmod);
|
||||
}
|
||||
}*/
|
||||
|
||||
function castWord(v) {
|
||||
return (v & 0x8000) ? (v - 0x10000) : v;
|
||||
|
|
@ -167,7 +166,7 @@ function Blitter() {
|
|||
return diag[1 + diag[0] + cycles];
|
||||
}
|
||||
|
||||
function channel_pos(cycles) {
|
||||
/*function channel_pos(cycles) {
|
||||
if (cycles < 0)
|
||||
return 0;
|
||||
var diag = get_ch();
|
||||
|
|
@ -176,7 +175,7 @@ function Blitter() {
|
|||
cycles -= diag[0];
|
||||
cycles %= diag[0];
|
||||
return cycles;
|
||||
}
|
||||
}*/
|
||||
|
||||
function blitter_interrupt() {
|
||||
if (blit_interrupt)
|
||||
|
|
@ -2012,6 +2011,7 @@ function Blitter() {
|
|||
case 0xfd: return (~c) | (b) | (a);
|
||||
case 0xfe: return (c) | (b) | (a);
|
||||
case 0xff: return 0xffff;
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2217,7 +2217,7 @@ function Blitter() {
|
|||
if (bltcon0 & 0x200) {
|
||||
if (AMIGA.dmaen(DMAF_BLTEN))
|
||||
//blt_info.bltcdat = AMIGA.mem.load16_chip(bltcpt);
|
||||
blt_info.bltcdat = dat = AMIGA.mem.chip.data[bltcpt >>> 1];
|
||||
blt_info.bltcdat = AMIGA.mem.chip.data[bltcpt >>> 1];
|
||||
}
|
||||
bltstate = BLT_work;
|
||||
}
|
||||
|
|
@ -2382,7 +2382,7 @@ function Blitter() {
|
|||
if (blt_info.vblitsize <= 0)
|
||||
bltstate = BLT_done;
|
||||
} while (bltstate != BLT_done);
|
||||
bltapt_line = null;
|
||||
//bltapt_line = null;
|
||||
bltdpt = bltcpt;
|
||||
} else {
|
||||
if (blitdesc)
|
||||
|
|
@ -2400,26 +2400,26 @@ function Blitter() {
|
|||
|
||||
/*---------------------------------*/
|
||||
|
||||
this.handler = function(data) {
|
||||
if (!AMIGA.dmaen(DMAF_BLTEN)) {
|
||||
AMIGA.events.newevent(EV2_BLITTER, 10, 0);
|
||||
if (++blit_stuck < 20000 || !AMIGA.config.blitter.immediate)
|
||||
return;
|
||||
this.handler = function (data) {
|
||||
if (!AMIGA.dmaen(DMAF_BLTEN)) {
|
||||
AMIGA.events.newevent(EV2_BLITTER, 10, 0);
|
||||
if (++blit_stuck < 20000 || !AMIGA.config.blitter.immediate)
|
||||
return;
|
||||
|
||||
BUG.info('blitter_handler() force-unstuck!');
|
||||
}
|
||||
blit_stuck = 0;
|
||||
if (blit_slowdown > 0 && !AMIGA.config.blitter.immediate) {
|
||||
//console.log('Blitter.handler () slowdown', blit_slowdown);
|
||||
AMIGA.events.newevent(EV2_BLITTER, blit_slowdown, 0);
|
||||
blit_slowdown = -1;
|
||||
return;
|
||||
}
|
||||
blitter_do();
|
||||
}
|
||||
BUG.info('blitter_handler() force-unstuck!');
|
||||
}
|
||||
blit_stuck = 0;
|
||||
if (blit_slowdown > 0 && !AMIGA.config.blitter.immediate) {
|
||||
//console.log('Blitter.handler () slowdown', blit_slowdown);
|
||||
AMIGA.events.newevent(EV2_BLITTER, blit_slowdown, 0);
|
||||
blit_slowdown = -1;
|
||||
return;
|
||||
}
|
||||
blitter_do();
|
||||
};
|
||||
|
||||
var changetable = new Uint8Array(32 * 32); for (var i = 0; i < changetable.length; i++) changetable[i] = 0;
|
||||
var freezes = 10;
|
||||
//var freezes = 10;
|
||||
function blit_bltset(con) {
|
||||
if (con & 2) {
|
||||
blitdesc = bltcon1 & 2;
|
||||
|
|
@ -2518,9 +2518,8 @@ function Blitter() {
|
|||
warned1--;
|
||||
BUG.info('waiting_blits detected');
|
||||
}
|
||||
if (bltstate == BLT_done)
|
||||
return true;
|
||||
return false;
|
||||
return bltstate == BLT_done;
|
||||
|
||||
}
|
||||
|
||||
function do_blitter(hpos, copper) {
|
||||
|
|
@ -2533,17 +2532,12 @@ function Blitter() {
|
|||
cleanstart = 1;
|
||||
}
|
||||
|
||||
bltstate = BLT_done;
|
||||
|
||||
blt_info.blitzero = 1;
|
||||
preva = 0;
|
||||
prevb = 0;
|
||||
blt_info.got_cycle = 0;
|
||||
|
||||
blit_firstline_cycles = blit_first_cycle = AMIGA.events.currcycle;
|
||||
blit_last_cycle = 0;
|
||||
last_blitter_hpos = hpos + 1;
|
||||
blit_cyclecounter = 0;
|
||||
|
||||
blit_bltset(1 | 2);
|
||||
ddat1use = ddat2use = 0;
|
||||
|
|
@ -2615,164 +2609,228 @@ function Blitter() {
|
|||
}
|
||||
|
||||
var warned2 = 10;
|
||||
this.maybe_blit = function(hpos, hack) {
|
||||
if (bltstate == BLT_done)
|
||||
return;
|
||||
this.maybe_blit = function (hpos, hack) {
|
||||
if (bltstate == BLT_done)
|
||||
return;
|
||||
|
||||
if (AMIGA.dmaen(DMAF_BLTEN)) {
|
||||
var doit = false;
|
||||
if (AMIGA.config.blitter.waiting == 3) { // always
|
||||
doit = true;
|
||||
} else if (AMIGA.config.blitter.waiting == 2) { // no idle
|
||||
if (blit_dmacount == blit_diag[0] && (AMIGA.spcflags & SPCFLAG_BLTNASTY))
|
||||
doit = true;
|
||||
} else if (AMIGA.config.blitter.waiting == 1) { // automatic
|
||||
if (blit_dmacount == blit_diag[0] && (AMIGA.spcflags & SPCFLAG_BLTNASTY))
|
||||
doit = true;
|
||||
else if (AMIGA.config.cpu.speed < 0)
|
||||
doit = true;
|
||||
}
|
||||
if (doit) {
|
||||
if (waitingblits())
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (AMIGA.dmaen(DMAF_BLTEN)) {
|
||||
var doit = false;
|
||||
if (AMIGA.config.blitter.waiting == 3) { // always
|
||||
doit = true;
|
||||
} else if (AMIGA.config.blitter.waiting == 2) { // no idle
|
||||
if (blit_dmacount == blit_diag[0] && (AMIGA.spcflags & SPCFLAG_BLTNASTY))
|
||||
doit = true;
|
||||
} else if (AMIGA.config.blitter.waiting == 1) { // automatic
|
||||
if (blit_dmacount == blit_diag[0] && (AMIGA.spcflags & SPCFLAG_BLTNASTY))
|
||||
doit = true;
|
||||
else if (AMIGA.config.cpu.speed < 0)
|
||||
doit = true;
|
||||
}
|
||||
if (doit) {
|
||||
if (waitingblits())
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (warned2 && AMIGA.dmaen(DMAF_BLTEN) && blt_info.got_cycle) {
|
||||
warned2--;
|
||||
BUG.info('maybe_blit() program does not wait for blitter tc=%d', blit_cyclecounter);
|
||||
}
|
||||
if (warned2 && AMIGA.dmaen(DMAF_BLTEN) && blt_info.got_cycle) {
|
||||
warned2--;
|
||||
BUG.info('maybe_blit() program does not wait for blitter tc=%d', blit_cyclecounter);
|
||||
}
|
||||
|
||||
if (hack == 1 && AMIGA.events.currcycle < blit_firstline_cycles)
|
||||
return;
|
||||
if (hack == 1 && AMIGA.events.currcycle < blit_firstline_cycles)
|
||||
return;
|
||||
|
||||
AMIGA.blitter.handler(0);
|
||||
}
|
||||
AMIGA.blitter.handler(0);
|
||||
};
|
||||
|
||||
this.blitnasty = function() {
|
||||
if (bltstate == BLT_done || !AMIGA.dmaen(DMAF_BLTEN))
|
||||
return 0;
|
||||
if (blit_last_cycle >= blit_diag[0] && blit_dmacount == blit_diag[0])
|
||||
return 0;
|
||||
this.blitnasty = function () {
|
||||
if (bltstate == BLT_done || !AMIGA.dmaen(DMAF_BLTEN))
|
||||
return 0;
|
||||
if (blit_last_cycle >= blit_diag[0] && blit_dmacount == blit_diag[0])
|
||||
return 0;
|
||||
|
||||
var cycles = Math.floor((AMIGA.events.currcycle - blit_first_cycle) * CYCLE_UNIT_INV);
|
||||
var ccnt = 0;
|
||||
while (blit_last_cycle < cycles) {
|
||||
if (!channel_state(blit_last_cycle++))
|
||||
ccnt++;
|
||||
}
|
||||
return ccnt;
|
||||
}
|
||||
var cycles = Math.floor((AMIGA.events.currcycle - blit_first_cycle) * CYCLE_UNIT_INV);
|
||||
var ccnt = 0;
|
||||
while (blit_last_cycle < cycles) {
|
||||
if (!channel_state(blit_last_cycle++))
|
||||
ccnt++;
|
||||
}
|
||||
return ccnt;
|
||||
};
|
||||
|
||||
/*---------------------------------*/
|
||||
|
||||
var oddfstrt = 0, oddfstop = 0, ototal = 0, ofree = 0, slow = 0;
|
||||
this.slowdown = function() {
|
||||
var data = AMIGA.playfield.getData();
|
||||
var ddfstrt = data[0];
|
||||
var ddfstop = data[1];
|
||||
var totalcycles = data[2];
|
||||
var freecycles = data[3];
|
||||
this.slowdown = function () {
|
||||
var data = AMIGA.playfield.getData();
|
||||
var ddfstrt = data[0];
|
||||
var ddfstop = data[1];
|
||||
var totalcycles = data[2];
|
||||
var freecycles = data[3];
|
||||
|
||||
if (!totalcycles || ddfstrt < 0 || ddfstop < 0)
|
||||
return;
|
||||
if (ddfstrt != oddfstrt || ddfstop != oddfstop || totalcycles != ototal || ofree != freecycles) {
|
||||
var linecycles = Math.floor(((ddfstop - ddfstrt + totalcycles - 1) / totalcycles) * totalcycles);
|
||||
var freelinecycles = Math.floor(((ddfstop - ddfstrt + totalcycles - 1) / totalcycles) * freecycles);
|
||||
var dmacycles = Math.floor((linecycles * blit_dmacount) / blit_diag[0]);
|
||||
|
||||
oddfstrt = ddfstrt;
|
||||
oddfstop = ddfstop;
|
||||
ototal = totalcycles;
|
||||
ofree = freecycles;
|
||||
slow = 0;
|
||||
if (dmacycles > freelinecycles)
|
||||
slow = dmacycles - freelinecycles;
|
||||
}
|
||||
if (blit_slowdown < 0 || blitline)
|
||||
return;
|
||||
|
||||
blit_slowdown += slow;
|
||||
}
|
||||
if (!totalcycles || ddfstrt < 0 || ddfstop < 0)
|
||||
return;
|
||||
if (ddfstrt != oddfstrt || ddfstop != oddfstop || totalcycles != ototal || ofree != freecycles) {
|
||||
var linecycles = Math.floor(((ddfstop - ddfstrt + totalcycles - 1) / totalcycles) * totalcycles);
|
||||
var freelinecycles = Math.floor(((ddfstop - ddfstrt + totalcycles - 1) / totalcycles) * freecycles);
|
||||
var dmacycles = Math.floor((linecycles * blit_dmacount) / blit_diag[0]);
|
||||
|
||||
oddfstrt = ddfstrt;
|
||||
oddfstop = ddfstop;
|
||||
ototal = totalcycles;
|
||||
ofree = freecycles;
|
||||
slow = 0;
|
||||
if (dmacycles > freelinecycles)
|
||||
slow = dmacycles - freelinecycles;
|
||||
}
|
||||
if (blit_slowdown < 0 || blitline)
|
||||
return;
|
||||
|
||||
blit_slowdown += slow;
|
||||
};
|
||||
|
||||
/*---------------------------------*/
|
||||
|
||||
this.BLTADAT = function(hpos, v) { this.maybe_blit(hpos, 0); blt_info.bltadat = v; }
|
||||
this.BLTBDAT = function(hpos, v) {
|
||||
this.maybe_blit(hpos, 0);
|
||||
if (bltcon1 & 2)
|
||||
blt_info.bltbhold = (v << (bltcon1 >> 12)) & 0xffff;
|
||||
else
|
||||
blt_info.bltbhold = (v >> (bltcon1 >> 12)) & 0xffff;
|
||||
this.BLTADAT = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 0);
|
||||
blt_info.bltadat = v;
|
||||
};
|
||||
this.BLTBDAT = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 0);
|
||||
if (bltcon1 & 2)
|
||||
blt_info.bltbhold = (v << (bltcon1 >> 12)) & 0xffff;
|
||||
else
|
||||
blt_info.bltbhold = (v >> (bltcon1 >> 12)) & 0xffff;
|
||||
|
||||
blt_info.bltbdat = v;
|
||||
}
|
||||
this.BLTCDAT = function(hpos, v) { this.maybe_blit(hpos, 0); blt_info.bltcdat = v; reset_blit(0); }
|
||||
blt_info.bltbdat = v;
|
||||
};
|
||||
this.BLTCDAT = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 0);
|
||||
blt_info.bltcdat = v;
|
||||
reset_blit(0);
|
||||
};
|
||||
|
||||
this.BLTAMOD = function(hpos, v) { this.maybe_blit(hpos, 1); blt_info.bltamod = castWord(v & 0xfffe); reset_blit(0); }
|
||||
this.BLTBMOD = function(hpos, v) { this.maybe_blit(hpos, 1); blt_info.bltbmod = castWord(v & 0xfffe); reset_blit(0); }
|
||||
this.BLTCMOD = function(hpos, v) { this.maybe_blit(hpos, 1); blt_info.bltcmod = castWord(v & 0xfffe); reset_blit(0); }
|
||||
this.BLTDMOD = function(hpos, v) { this.maybe_blit(hpos, 1); blt_info.bltdmod = castWord(v & 0xfffe); reset_blit(0); }
|
||||
this.BLTAMOD = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 1);
|
||||
blt_info.bltamod = castWord(v & 0xfffe);
|
||||
reset_blit(0);
|
||||
};
|
||||
this.BLTBMOD = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 1);
|
||||
blt_info.bltbmod = castWord(v & 0xfffe);
|
||||
reset_blit(0);
|
||||
};
|
||||
this.BLTCMOD = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 1);
|
||||
blt_info.bltcmod = castWord(v & 0xfffe);
|
||||
reset_blit(0);
|
||||
};
|
||||
this.BLTDMOD = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 1);
|
||||
blt_info.bltdmod = castWord(v & 0xfffe);
|
||||
reset_blit(0);
|
||||
};
|
||||
|
||||
this.BLTCON0 = function(hpos, v) { this.maybe_blit(hpos, 2); bltcon0 = v; reset_blit(1); }
|
||||
this.BLTCON0L = function( hpos, v) {
|
||||
if (!(AMIGA.config.chipset.mask & CSMASK_ECS_AGNUS)) return;
|
||||
this.maybe_blit(hpos, 2); bltcon0 = (bltcon0 & 0xFF00) | (v & 0xFF);
|
||||
reset_blit(1);
|
||||
}
|
||||
this.BLTCON1 = function(hpos, v) { this.maybe_blit(hpos, 2); bltcon1 = v; reset_blit(2); }
|
||||
this.BLTCON0 = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 2);
|
||||
bltcon0 = v;
|
||||
reset_blit(1);
|
||||
};
|
||||
this.BLTCON0L = function (hpos, v) {
|
||||
if (!(AMIGA.config.chipset.mask & CSMASK_ECS_AGNUS)) return;
|
||||
this.maybe_blit(hpos, 2);
|
||||
bltcon0 = (bltcon0 & 0xFF00) | (v & 0xFF);
|
||||
reset_blit(1);
|
||||
};
|
||||
this.BLTCON1 = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 2);
|
||||
bltcon1 = v;
|
||||
reset_blit(2);
|
||||
};
|
||||
|
||||
this.BLTAFWM = function(hpos, v) { this.maybe_blit(hpos, 2); blt_info.bltafwm = v; reset_blit(0); }
|
||||
this.BLTALWM = function(hpos, v) { this.maybe_blit(hpos, 2); blt_info.bltalwm = v; reset_blit(0); }
|
||||
this.BLTAFWM = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 2);
|
||||
blt_info.bltafwm = v;
|
||||
reset_blit(0);
|
||||
};
|
||||
this.BLTALWM = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 2);
|
||||
blt_info.bltalwm = v;
|
||||
reset_blit(0);
|
||||
};
|
||||
|
||||
this.BLTAPTH = function(hpos, v) { this.maybe_blit(hpos, 0); bltapt = ((bltapt & 0xffff) | (v << 16)) >>> 0; }
|
||||
this.BLTAPTL = function(hpos, v) { this.maybe_blit(hpos, 0); bltapt = ((bltapt & ~0xffff) | (v & 0xfffe)) >>> 0; }
|
||||
this.BLTBPTH = function(hpos, v) { this.maybe_blit(hpos, 0); bltbpt = ((bltbpt & 0xffff) | (v << 16)) >>> 0; }
|
||||
this.BLTBPTL = function(hpos, v) { this.maybe_blit(hpos, 0); bltbpt = ((bltbpt & ~0xffff) | (v & 0xfffe)) >>> 0; }
|
||||
this.BLTCPTH = function(hpos, v) { this.maybe_blit(hpos, 0); bltcpt = ((bltcpt & 0xffff) | (v << 16)) >>> 0; }
|
||||
this.BLTCPTL = function(hpos, v) { this.maybe_blit(hpos, 0); bltcpt = ((bltcpt & ~0xffff) | (v & 0xfffe)) >>> 0; }
|
||||
this.BLTDPTH = function(hpos, v) { this.maybe_blit(hpos, 0); bltdpt = ((bltdpt & 0xffff) | (v << 16)) >>> 0; }
|
||||
this.BLTDPTL = function(hpos, v) { this.maybe_blit(hpos, 0); bltdpt = ((bltdpt & ~0xffff) | (v & 0xfffe)) >>> 0; }
|
||||
this.BLTAPTH = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 0);
|
||||
bltapt = ((bltapt & 0xffff) | (v << 16)) >>> 0;
|
||||
};
|
||||
this.BLTAPTL = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 0);
|
||||
bltapt = ((bltapt & ~0xffff) | (v & 0xfffe)) >>> 0;
|
||||
};
|
||||
this.BLTBPTH = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 0);
|
||||
bltbpt = ((bltbpt & 0xffff) | (v << 16)) >>> 0;
|
||||
};
|
||||
this.BLTBPTL = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 0);
|
||||
bltbpt = ((bltbpt & ~0xffff) | (v & 0xfffe)) >>> 0;
|
||||
};
|
||||
this.BLTCPTH = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 0);
|
||||
bltcpt = ((bltcpt & 0xffff) | (v << 16)) >>> 0;
|
||||
};
|
||||
this.BLTCPTL = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 0);
|
||||
bltcpt = ((bltcpt & ~0xffff) | (v & 0xfffe)) >>> 0;
|
||||
};
|
||||
this.BLTDPTH = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 0);
|
||||
bltdpt = ((bltdpt & 0xffff) | (v << 16)) >>> 0;
|
||||
};
|
||||
this.BLTDPTL = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 0);
|
||||
bltdpt = ((bltdpt & ~0xffff) | (v & 0xfffe)) >>> 0;
|
||||
};
|
||||
|
||||
this.BLTSIZE = function(hpos, v) {
|
||||
this.maybe_blit(hpos, 0);
|
||||
this.BLTSIZE = function (hpos, v) {
|
||||
this.maybe_blit(hpos, 0);
|
||||
|
||||
blt_info.vblitsize = v >> 6;
|
||||
blt_info.hblitsize = v & 0x3F;
|
||||
if (!blt_info.vblitsize)
|
||||
blt_info.vblitsize = 1024;
|
||||
if (!blt_info.hblitsize)
|
||||
blt_info.hblitsize = 64;
|
||||
|
||||
do_blitter(hpos, AMIGA.copper.access);
|
||||
}
|
||||
blt_info.vblitsize = v >> 6;
|
||||
blt_info.hblitsize = v & 0x3F;
|
||||
if (!blt_info.vblitsize)
|
||||
blt_info.vblitsize = 1024;
|
||||
if (!blt_info.hblitsize)
|
||||
blt_info.hblitsize = 64;
|
||||
|
||||
this.BLTSIZV = function(hpos, v) {
|
||||
if (!(AMIGA.config.chipset.mask & CSMASK_ECS_AGNUS)) return;
|
||||
this.maybe_blit(hpos, 0);
|
||||
blt_info.vblitsize = v & 0x7FFF;
|
||||
}
|
||||
do_blitter(hpos, AMIGA.copper.access);
|
||||
};
|
||||
|
||||
this.BLTSIZH = function(hpos, v) {
|
||||
if (!(AMIGA.config.chipset.mask & CSMASK_ECS_AGNUS)) return;
|
||||
this.maybe_blit(hpos, 0);
|
||||
blt_info.hblitsize = v & 0x7FF;
|
||||
if (!blt_info.vblitsize)
|
||||
blt_info.vblitsize = 0x8000;
|
||||
if (!blt_info.hblitsize)
|
||||
blt_info.hblitsize = 0x0800;
|
||||
|
||||
do_blitter(hpos, AMIGA.copper.access);
|
||||
}
|
||||
this.BLTSIZV = function (hpos, v) {
|
||||
if (!(AMIGA.config.chipset.mask & CSMASK_ECS_AGNUS)) return;
|
||||
this.maybe_blit(hpos, 0);
|
||||
blt_info.vblitsize = v & 0x7FFF;
|
||||
};
|
||||
|
||||
this.BLTSIZH = function (hpos, v) {
|
||||
if (!(AMIGA.config.chipset.mask & CSMASK_ECS_AGNUS)) return;
|
||||
this.maybe_blit(hpos, 0);
|
||||
blt_info.hblitsize = v & 0x7FF;
|
||||
if (!blt_info.vblitsize)
|
||||
blt_info.vblitsize = 0x8000;
|
||||
if (!blt_info.hblitsize)
|
||||
blt_info.hblitsize = 0x0800;
|
||||
|
||||
do_blitter(hpos, AMIGA.copper.access);
|
||||
};
|
||||
|
||||
/*---------------------------------*/
|
||||
|
||||
this.getState = function() {
|
||||
return bltstate;
|
||||
}
|
||||
this.setState = function(s) {
|
||||
bltstate = s;
|
||||
}
|
||||
this.getState = function () {
|
||||
return bltstate;
|
||||
};
|
||||
this.setState = function (s) {
|
||||
bltstate = s;
|
||||
};
|
||||
this.getIntZero = function() {
|
||||
return [blit_interrupt, blt_info.blitzero];
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue