From 9781548413558c70c9b201a6bde581534ef6b358 Mon Sep 17 00:00:00 2001 From: Zellyn Hunter Date: Tue, 15 May 2018 22:01:01 -0400 Subject: [PATCH] webgl: add battle-chess image; add dhgr conversion param --- images/battle-chess.png | Bin 0 -> 5347 bytes index.html | 1 + screenEmu.js | 5 +++-- 3 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 images/battle-chess.png diff --git a/images/battle-chess.png b/images/battle-chess.png new file mode 100644 index 0000000000000000000000000000000000000000..eacb2a130ea7da0eead032f760bc1429bca0fdf9 GIT binary patch literal 5347 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 BA*BES literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 0226e1f..c173778 100644 --- a/index.html +++ b/index.html @@ -176,6 +176,7 @@ async function setupScreenView() { const image = await screenEmu.loadImage("images/airheart-560x192.png"); + // const image = await screenEmu.loadImage("images/battle-chess.png"); const [imageCanvas, imageData] = screenEmu.screenData(image, screenEmu.C.NTSC_DETAILS); let canvas = document.getElementById("d"); diff --git a/screenEmu.js b/screenEmu.js index dcc7db1..d069d89 100644 --- a/screenEmu.js +++ b/screenEmu.js @@ -487,7 +487,7 @@ void main(void) // image: a 560x192 image, from the same domain (hence readable). // details: NTSC_DETAILS, or PAL_DETAILS // returns: a canvas - const screenData = (image, details) => { + const screenData = (image, details, dhgr=true) => { if ((image.naturalWidth != 560) || (image.naturalHeight != 192)) { throw new Error('screenData expects an image 560x192;' + ` got ${image.naturalWidth}x${image.naturalHeight}`); @@ -500,7 +500,8 @@ void main(void) canvas.height = height; context.fillStyle = 'rgba(0,0,0,1)'; context.fillRect(0, 0, width, height); - context.drawImage(image, details.topLeft80Col.x, details.topLeft80Col.y); + const topLeft = dhgr ? details.topLeft80Col : details.topLeft; + context.drawImage(image, topLeft.x, topLeft.y); const imageData = context.getImageData(0, 0, width, height); return [canvas, imageData]; };