Chrome 61で<script type="module" >
が使えるようになったとのこと。
https://developers.google.com/web/updates/2017/09/nic61
Chrome 61 now supports JavaScript modules natively, unifying the way modular JavaScript can be written.
HTMLでes modulesを使用するには、import文を含む.jsファイルをtype="module"
として読み込めばよい。
<!--es6 modulesを使用するスクリプトはtype="module"で読み込む -->
<script type="module" src="./js/index.js"></script>
もしくはインラインで書いてもよい。
<script type="module">
import {mod} from 'xx/ccc.js';
</script>
フォールバックとしての nomodule
属性。es6 modulesをサポートするブラウザはnomodule
属性を持つ<script>
は読み込まない。逆にes6 modulesをサポートしないブラウザはtype="module"
は読み込んでもjsだと認識されず、かつnomodule
属性を持つ<script>
タグを通常のjsファイルとして読み込む(nomodule
属性を認識しないので)。結果es6 moduleをサポートするブラウザはtype="module"
の<script>
を読み、サポートしないブラウザはnomodule
のほうの<script>
を読む。
<script type="module" src="app.js"></script>
<script nomodule src="classic-app-bundle.js"></script>
試したところ、確かに使えるようになってますな。。rollup.jsは近い将来不要になるね。。
サンプルコード
バンドルしてないのにちゃんと動いているというところがサンプル的なところ。
動作サンプル
ソースコード・リソース
<!DOCTYPE html>
<html vocab="http://schema.org" lang="ja">
<head>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-15457703-9"></script>
<script>
if (!window.location.hostname.match(/localhost/)) {
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-15457703-9');
}
</script>
<title>Three.jsによるアニメーション</title>
<meta charset="utf-8" />
<meta name="description" content="320x200px 8色コンソールをshaderでエミュレーションする"/>
<meta name="keywords" content="Youtube,d3.js,Q.js,jquery" />
<meta name="author" content="sfpgmr" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<script src="//d3js.org/d3.v4.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r81/three.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/3.0.2/normalize.min.css" />
<style>
html {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
body {
width: 100%;
height: 100%;
margin-left: auto;
margin-right: auto;
padding: 0;
overflow: hidden;
}
#svg {
display: none;
}
#stat {
position: absolute;
color: white;
font-size: 20px;
}
#playbutton {
position: absolute;
border: none;
background: none;
color: white;
font-size: 50px;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
#playbutton:hover {
cursor: hand;
}
.active {
opacity: 1;
}
.active1 {
animation: anime2 5s;
opacity: 0.0;
border: 0;
}
.hidden {
animation: anime1 2s;
opacity: 0.0;
}
@keyframes anime1 {
0% {
opacity: 1.0;
}
100% {
opacity: 0.0;
}
}
@keyframes anime2 {
0% {
opacity: 1.0;
}
80% {
opacity: 1.0;
}
100% {
opacity: 0.0;
}
}
#content {
position: relative;
margin: auto;
text-align: center;
}
#console {
margin: auto;
text-align: center;
}
</style>
<script src="https://use.fontawesome.com/cf664fe0e6.js"></script>
</head>
<body>
<div id="stat"></div>
<div id="content">
<button id="playbutton" class="active"><i class="fa fa-play" aria-hidden="true"></i></button>
</div>
<script type="module" src="./js/index.js"></script>
</body>
</html>
import * as minMat from './minMatrix.js';
export default class SF3D {
constructor(){
}
}
/test/module/00001/js/charCodes.js
"use strict";
export var charCodes =
[
// 0x00
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
// 0x10
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
// 0x20
[0x00,0x00],
[0x61,0x00],
[0x62,0x00],
[0x63,0x00],
[0x64,0x00],
[0x65,0x00],
[0x66,0x00],
[0x67,0x00],
[0x68,0x00],
[0x69,0x00],
[0x6b,0x00],
[0x6a,0x00],
[0x2f,0x00],
[0x2a,0x00],
[0x2e,0x00],
[0x2d,0x00],
// 0x30
[0x20,0x00],
[0x21,0x00],
[0x22,0x00],
[0x23,0x00],
[0x24,0x00],
[0x25,0x00],
[0x26,0x00],
[0x27,0x00],
[0x28,0x00],
[0x29,0x00],
[0x4f,0x00],
[0x2c,0x00],
[0x51,0x00],
[0x2b,0x00],
[0x57,0x00],
[0x49,0x00],
// 0x40
[0x55,0x00],
[0x01,0x00],
[0x02,0x00],
[0x03,0x00],
[0x04,0x00],
[0x05,0x00],
[0x06,0x00],
[0x07,0x00],
[0x08,0x00],
[0x09,0x00],
[0x0a,0x00],
[0x0b,0x00],
[0x0c,0x00],
[0x0d,0x00],
[0x0e,0x00],
[0x0f,0x00],
// 0x50
[0x10,0x00],
[0x11,0x00],
[0x12,0x00],
[0x13,0x00],
[0x14,0x00],
[0x15,0x00],
[0x16,0x00],
[0x17,0x00],
[0x18,0x00],
[0x19,0x00],
[0x1a,0x00],
[0x52,0x00],
[0xdd,0x00],
[0x54,0x00],
[0x00,0x00],
[0x3c,0x00],
// 0x60
[0x00,0x00],
[0x01,0x80],
[0x02,0x80],
[0x03,0x80],
[0x04,0x80],
[0x05,0x80],
[0x06,0x80],
[0x07,0x80],
[0x08,0x80],
[0x09,0x80],
[0x0a,0x80],
[0x0b,0x80],
[0x0c,0x80],
[0x0d,0x80],
[0x0e,0x80],
[0x0f,0x80],
// 0x7f
[0x10,0x80],
[0x11,0x80],
[0x12,0x80],
[0x13,0x80],
[0x14,0x80],
[0x15,0x80],
[0x16,0x80],
[0x17,0x80],
[0x18,0x80],
[0x19,0x80],
[0x1a,0x80],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00],
[0x00,0x00]
];
export var canaCodes =
[
// 0xff60
[0x00,0x00], //
[0xbd,0x00], // 。
[0x9d,0x00], // 「
[0xb1,0x00], // 」
[0xb5,0x00], // 、
[0xb9,0x00], // ・
[0xb4,0x00], // ヲ
[0x9e,0x00], // ァ
[0xb2,0x00], // ィ
[0xb6,0x00], // ゥ
[0xba,0x00], // ェ
[0xbe,0x00], // ォ
[0x9f,0x00], // ャ
[0xb3,0x00], // ュ
[0xb7,0x00], // ョ
[0xbb,0x00], // ッ
[0xbf,0x00], // -
[0xa3,0x00], // ア
[0x85,0x00], // イ
[0xa4,0x00], // ウ
[0xa5,0x00], // エ
[0xa6,0x00], // オ
[0x94,0x00], // カ
[0x87,0x00], // キ
[0x88,0x00], // ク
[0x9c,0x00], // ケ
[0x82,0x00], // コ
[0x98,0x00], // サ
[0x84,0x00], // シ
[0x92,0x00], // ス
[0x90,0x00], // セ
[0x83,0x00], // ソ
[0x91,0x00], // タ
[0x81,0x00], // チ
[0x9a,0x00], // ツ
[0x97,0x00], // テ
[0x93,0x00], // ト
[0x95,0x00], // ナ
[0x89,0x00], // ニ
[0xa1,0x00], // ヌ
[0xaf,0x00], // ネ
[0x8b,0x00], // ノ
[0x86,0x00], // ハ
[0x96,0x00], // ヒ
[0xa2,0x00], // フ
[0xab,0x00], // ヘ
[0xaa,0x00], // ホ
[0x8a,0x00], // マ
[0x8e,0x00], // ミ
[0xb0,0x00], // ム
[0xad,0x00], // メ
[0x8d,0x00], // モ
[0xa7,0x00], // ヤ
[0xa8,0x00], // ユ
[0xa9,0x00], // ヨ
[0x8f,0x00], // ラ
[0x8c,0x00], // リ
[0xae,0x00], // ル
[0xac,0x00], // レ
[0x9b,0x00], // ロ
[0xa0,0x00], // ワ
[0x99,0x00], // ン
[0xbc,0x00], // ゙
[0xb8,0x00], // ゚
];
/test/module/00001/js/graphics.js
'use strict';
import { fontData } from './mz700fon.js';
import { charCodes, canaCodes } from './charCodes.js';
const vertexShader = `
precision mediump float;
varying vec2 vtexture_coord;
void main(void) {
gl_Position = vec4(position,1.);
vtexture_coord = uv;
}
`;
const fragmentShader =
`precision mediump float;
uniform sampler2D textureB;
uniform sampler2D textureG;
uniform sampler2D textureR;
uniform sampler2D pallet_color;
uniform sampler2D textureFont;
uniform sampler2D textureCharCode;
uniform sampler2D textureCharAttr;
uniform float time;
varying vec2 vtexture_coord;
// グラフィック表示
vec4 graphicPlane(void)
{
//テクスチャ座標よりビット位置を求め、そのビットが立った2進数値を得る。
float t = exp2(floor(mod(vtexture_coord.x * 512.0,8.0)));
// RGB各プレーンの現在座標のバイトデータを読み込む
vec4 rt = texture2D(textureR, vtexture_coord);
vec4 gt = texture2D(textureG, vtexture_coord);
vec4 bt = texture2D(textureB, vtexture_coord);
// バイトデータの中でビットが立っているかどうかを調べる
// Rプレーン
float r = floor(mod(min(rt.x * 256.0,255.0) / t,2.0)) * 4.0;
// Gプレーン
float g = floor(mod(min(gt.x * 256.0,255.0) / t,2.0)) * 2.0;
// Bプレーン
float b = floor(mod(min(bt.x * 256.0,255.0) / t,2.0));
// 各色の値を足して正規化を行い、パレットインデックスから実際の色を得る
vec4 p = texture2D(pallet_color,vec2((r + g + b) / 8.0 ,0.5));
float i = min(p.x * 256.0,255.0);
float ar = floor(mod(i * 0.5,2.0)); // bit3
float ag = floor(mod(i * 0.25,2.0)); // bit2
float ab = floor(mod(i,2.0)); // bit1
return vec4(ar,ag,ab,1.0);
}
// 文字表示
vec4 textPlane(void){
// キャラクタコードを読み出し
vec4 cct = texture2D(textureCharCode, vtexture_coord);
float cc = min(cct.x * 256.0,255.0);// キャラクターコード
// アトリビュートを読み出し
vec4 attrt = texture2D(textureCharAttr, vtexture_coord);
// 表示対象の文字のビット位置を求める
float x = exp2(floor(mod(vtexture_coord.x * 512.0,8.0)));
// 表示対象の文字のY位置を求める
float y = floor(mod(vtexture_coord.y * 256.0,8.0));
// アトリビュートの評価
float i = min(attrt.x * 256.0,255.0);// アトリビュートデータ
// キャラクタセット(0.0 .. セット0, 1.0 .. セット1 )
float att = floor(mod(i / 128.0,2.0)) * 8.0;// bit 7
// 文字色
float ccg = floor(mod(i / 64.0,2.0));// bit 6
float ccr = floor(mod(i / 32.0,2.0));// bit 5
float ccb = floor(mod(i / 16.0,2.0));// bit 4
// 背景色
float bgg = floor(mod(i / 4.0,2.0));// bit 2
float bgr = floor(mod(i / 2.0,2.0));// bit 1
float bgb = floor(mod(i ,2.0));// bit 0
// フォント読み出し位置
vec2 fontpos = vec2(cc / 256.0,(y + att) / 16.0);
// フォントデータの読み出し
vec4 pixByte = texture2D(textureFont,fontpos);
// 指定位置のビットが立っているかチェック
float pixBit = floor(mod(min(pixByte.x * 256.0,255.0) / x,2.0));
if(pixBit == 1.0){
// ビットが立っているときは、文字色を設定
return vec4(ccr,ccg,ccb,1.0);
// return texture2D(pallet_color,vec2((ccr + ccg + ccb) / 8.0 ,0.5));
}
// ビットが立っていないときは背景色を設定
// return texture2D(pallet_color,vec2((bgr + bgg + bgb) / 8.0 ,0.5));
return vec4(bgr,bgg,bgb,1.0);
}
void main(void){
vec4 textColor = textPlane();
if((textColor.r + textColor.g + textColor.b) > 0.0){
gl_FragColor = textColor;
} else {
vec4 color = graphicPlane();
gl_FragColor = color;
}
}
`;
// ビットのMSBとLSBを入れ替えるメソッド
function rev(x) {
x = x & 0xff;
// 0bitと1bit、2bitと3bit、4bitと5bit、6bitと7ビットの反転
x = ((x & 0x55) << 1) | ((x >>> 1) & 0x55);
// 0-1bitと2-3bit、4-5bitと6-7bitの反転
x = ((x & 0x33) << 2) | ((x >>> 2) & 0x33);
// 0-3bit、4-7bitの反転
x = ((x & 0x0F) << 4) | ((x >>> 4) & 0x0F);
return x;
}
export default class Graphics {
constructor(window, vwidth = 320, vheight = 200) {
this.window = window;
this.VWIDTH = vwidth;
this.VHEIGHT = vheight;
this.screenWidth = window.innerWidth;
this.screenHeight = window.innerHeight;
this.renderer = new THREE.WebGLRenderer({ antialias: false });
this.renderer.setSize(this.screenWidth, this.screenHeight);
this.renderer.setClearColor(0x000000, 1);
this.renderer.domElement.id = 'console';
this.renderer.domElement.className = 'console';
this.renderer.domElement.style.zIndex = 0;
// 仮想画面
this.renderTarget = new THREE.WebGLRenderTarget(this.VWIDTH, this.VHEIGHT,
{
magFilter: THREE.NearestFilter,
minFilter: THREE.NearestFilter,
wrapS: THREE.ClampToEdgeWrapping,
wrapT: THREE.ClampToEdgeWrapping,
needsUpdate: true
});
// バッファー
this.bufferWidth = Math.pow(2, Math.ceil(Math.log2(this.VWIDTH)));
this.bufferHeight = Math.pow(2, Math.ceil(Math.log2(this.VHEIGHT)));
this.bufferXSize = this.bufferWidth / 8;
this.charCodeBufferWidth = 512 / 8;
this.charCodeBufferHeight = 32;
this.consoleWidth = 40;
this.consoleHeight = 25;
this.fontTexWidth = 256;
this.fontTexHeight = 16;//8 * 16 * 2;
let bufferSize = this.bufferXSize * this.bufferHeight;
this.bufferB = new Uint8Array(bufferSize);
this.bufferG = new Uint8Array(bufferSize);
this.bufferR = new Uint8Array(bufferSize);
this.textureB = new THREE.DataTexture(this.bufferB, this.bufferXSize, this.bufferHeight, THREE.LuminanceFormat, THREE.UnsignedByteType);
this.textureB.needsUpdate = true;
this.textureG = new THREE.DataTexture(this.bufferG, this.bufferXSize, this.bufferHeight, THREE.LuminanceFormat, THREE.UnsignedByteType);
this.textureG.needsUpdate = true;
this.textureR = new THREE.DataTexture(this.bufferR, this.bufferXSize, this.bufferHeight, THREE.LuminanceFormat, THREE.UnsignedByteType);
this.textureR.needsUpdate = true;
this.palletColors = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7]);
this.texturePallet = new THREE.DataTexture(this.palletColors, this.palletColors.length, 1, THREE.LuminanceFormat, THREE.UnsignedByteType);
this.texturePallet.needsUpdate = true;
let charCodeBufferSize = this.charCodeBufferWidth * this.charCodeBufferHeight;
this.charCodeBuffer = new Uint8Array(charCodeBufferSize);
this.charAttrBuffer = new Uint8Array(charCodeBufferSize);
this.fontBuffer = new Uint8Array(this.fontTexWidth * this.fontTexHeight);
this.texCharCodeBuffer = new THREE.DataTexture(this.charCodeBuffer, this.charCodeBufferWidth, this.charCodeBufferHeight, THREE.LuminanceFormat, THREE.UnsignedByteType);
this.texCharCodeBuffer.needsUpdate = true;
this.texCharAttrBuffer = new THREE.DataTexture(this.charAttrBuffer, this.charCodeBufferWidth, this.charCodeBufferHeight, THREE.LuminanceFormat, THREE.UnsignedByteType);
this.texCharAttrBuffer.needsUpdate = true;
this.texFontBuffer = new THREE.DataTexture(this.fontBuffer, this.fontTexWidth, this.fontTexHeight, THREE.LuminanceFormat, THREE.UnsignedByteType);
this.texFontBuffer.needsUpdate = true;
// フォントデータの読み込み
{
let idx = 0;
let offset = 0;
fontData.forEach((d, i) => {
offset = ((i / 256) | 0) * 8;
idx = i % 256;
d.forEach((byteChar, iy) => {
let byte = parseInt(byteChar, 2);
this.fontBuffer[idx + (iy + offset) * 256] = rev(byte);
});
});
}
//var camera = new THREE.PerspectiveCamera(90, VWIDTH / VHEIGHT, 0.1, 1000);
//camera.position.z = screenHeight / 2;
this.time = 0;
this.prevTime = this.window.performance.now();
this.vscene = new THREE.Scene();
this.uniforms = {
textureB: { value: this.textureB },
textureG: { value: this.textureG },
textureR: { value: this.textureR },
pallet_color: { value: this.texturePallet },
textureFont: { value: this.texFontBuffer },
textureCharCode: { value: this.texCharCodeBuffer },
textureCharAttr: { value: this.texCharAttrBuffer },
time: { value: 0.0 }
};
this.vmaterial = new THREE.ShaderMaterial({
uniforms: this.uniforms,
vertexShader: vertexShader,
fragmentShader: fragmentShader
});
{
let g = new THREE.Geometry();
g.vertices.push(new THREE.Vector3(-1.0, 1.0, 0.0));
g.vertices.push(new THREE.Vector3(1.0, 1.0, 0.0));
g.vertices.push(new THREE.Vector3(-1.0, -1.0, 0.0));
g.vertices.push(new THREE.Vector3(1.0, -1.0, 0.0));
g.faces.push(new THREE.Face3(0, 2, 1));
g.faces.push(new THREE.Face3(2, 3, 1));
// 0.0, 0.0,
// virtualWidth / bufferWidth , 0.0,
// 0.0, virtualHeight / bufferHeight,
// virtualWidth / bufferWidth, virtualHeight / bufferHeight
g.faceVertexUvs[0].push([
new THREE.Vector2(0.0, 0.0),
new THREE.Vector2(0.0, this.VHEIGHT / this.bufferHeight),
new THREE.Vector2(this.VWIDTH / this.bufferWidth, 0.0),
]);
g.faceVertexUvs[0].push([
new THREE.Vector2(0.0, this.VHEIGHT / this.bufferHeight),
new THREE.Vector2(this.VWIDTH / this.bufferWidth, this.VHEIGHT / this.bufferHeight),
new THREE.Vector2(this.VWIDTH / this.bufferWidth, 0.0)
]);
this.vquad = new THREE.Mesh(g, this.vmaterial);
}
this.vcamera = new THREE.OrthographicCamera(- 1, 1, 1, - 1, 0, 1);
this.vscene.add(this.vquad);
this.scene = new THREE.Scene();
this.camera = new THREE.OrthographicCamera(- 1, 1, 1, - 1, 0, 1);
this.quad = new THREE.Mesh(new THREE.PlaneBufferGeometry(2, 2), new THREE.MeshBasicMaterial({ map: this.renderTarget.texture }));
this.scene.add(this.quad);
this.renderer.clear();
this.prevTime = window.performance.now();
this.isRender = false;
// for (let x = 0; x < 320; ++x) {
// for (let y = 0; y < 200; ++y) {
// this.pset(x, y, y % 8);
// }
// }
this.render();
}
render(time) {
this.time = time;
this.uniforms.time.value = this.time;//time / 1000;
// for(let i = 0;i < 8;++i){
// this.palletColors[i] = (this.time / 50 + i) % 8;
// }
this.texturePallet.needsUpdate = true;
this.texCharCodeBuffer.needsUpdate = true;
this.texCharAttrBuffer.needsUpdate = true;
this.textureB.needsUpdate = true;
this.textureG.needsUpdate = true;
this.textureR.needsUpdate = true;
this.texturePallet.needsUpdate = true;
this.renderer.render(this.vscene, this.vcamera, this.renderTarget);
this.renderer.render(this.scene, this.camera);
if (this.isRender)
requestAnimationFrame(this.render.bind(this));
}
resize() {
this.screenWidth = this.window.innerWidth;
this.screenHeight = this.window.innerHeight;
if (this.screenWidth > (this.screenHeight * (this.VWIDTH / this.VHEIGHT))) {
this.screenWidth = this.screenHeight * this.VWIDTH / this.VHEIGHT;
} else {
this.screenHeight = this.screenWidth * this.VHEIGHT / this.VWIDTH;
}
this.renderer.setSize(this.screenWidth, this.screenHeight);
if (!this.isRender) {
this.render();
}
}
renderStart() {
this.isRender = true;
this.prevTime = this.window.performance.now();
this.render();
}
renderStop() {
this.isRender = false;
}
cls() {
for (var i = 0, e = this.bufferXSize * this.bufferHeight; i < e; ++i) {
this.bufferB[i] = 0;
this.bufferG[i] = 0;
this.bufferR[i] = 0;
}
for (var i = 0, e = this.charCodeBufferWidth * this.charCodeBufferHeight; i < e; ++i) {
this.charCodeBuffer[i] = 0;
this.charAttrBuffer[i] = 0;
}
}
print(x, y, str, color, bgcolor, hirakana = false) {
let offset = x + y * this.charCodeBufferWidth;
for (let i = 0, e = str.length; i < e; ++i) {
let code = str.charCodeAt(i);
if (code >= 0xff60 && code < 0xffa0) {
code -= 0xff60;
this.charCodeBuffer[offset] = canaCodes[code][0];
this.charAttrBuffer[offset] = (color << 4) | bgcolor | canaCodes[code][1];
if (hirakana) this.charAttrBuffer[offset] |= 0x80;
offset += 1;
} else if (code < 0x80) {
this.charCodeBuffer[offset] = charCodes[code][0];
this.charAttrBuffer[offset] = (color << 4) | bgcolor | charCodes[code][1];
if (hirakana) charAttrBuffer[offset] |= 0x80;
offset += 1;
} else if (code <= 0xff) {
this.charCodeBuffer[offset] = code;
this.charAttrBuffer[offset] = (color << 4) | bgcolor;
if (hirakana) this.charAttrBuffer[offset] |= 0x80;
offset += 1;
} else {
offset += 1;
}
}
}
printDirect(x, y, str, color, bgcolor, charset = 0) {
let offset = x + y * this.charCodeBufferWidth;
for (let i = 0, e = str.length; i < e; ++i) {
let code = str.charCodeAt(i);
this.charCodeBuffer[offset] = code;
this.charAttrBuffer[offset] = (color << 4) | bgcolor;
this.charAttrBuffer[offset] |= (charset << 7);
offset += 1;
}
}
setColor(x, y, color, bgcolor) {
let offset = x + y * this.charCodeBufferWidth;
this.charAttrBuffer[offset] = (color << 4) | bgcolor | (this.charAttrBuffer[offset] & 0x80);
}
// グラフィックのメソッドたち
pset(x, y, color) {
let offset = (y * this.bufferXSize + (x >>> 3)) | 0;
let bitpos = x & 7;
let b = (color & 1) << bitpos;
let m = ~(1 << bitpos) & 0xff;
let g = ((color >>> 1) & 1) << bitpos;
let r = ((color >>> 2) & 1) << bitpos;
this.bufferB[offset] = (this.bufferB[offset] & m) | b;
this.bufferG[offset] = (this.bufferG[offset] & m) | g;
this.bufferR[offset] = (this.bufferR[offset] & m) | r;
}
preset(x, y) {
let offset = (y * this.bufferXSize + x / 8) | 0;
let bit = ~(1 << (x % 8));
this.bufferB[offset] &= bit;
this.bufferG[offset] &= bit;
this.bufferR[offset] &= bit;
}
// 三角形描画ルーチン
// 参考:http://fussy.web.fc2.com/algo/polygon3_misc.htm
/*
三角形描画スキャンライン描画
*/
triangleFillXDraw(l, r, sy, ey, c, tilePattern) {
for (; sy < ey; ++sy) {
let sx_ = l[0] | 0;
let ex_ = r[0] | 0;
// X 座標のクリッピング
if (sx_ < 0) sx_ = 0;
if (ex_ >= this.VWIDTH) ex_ = this.VWIDTH - 1;
let syBytePos = sy * this.bufferXSize;
// スキャンライン描画
// for ( ; sx_ <= ex_ ; ++sx_ )
// this.pset(sx_,sy,c);
let sxBytePos = (sx_ >> 3) + syBytePos;
let sxBitPos = sx_ & 7;
let sxMask1 = (1 << sxBitPos) - 1;
let sxMask = ~sxMask1;
let exBytePos = (ex_ >> 3) + syBytePos;
let exBitPos = ex_ & 7;
let exMask = (2 << exBitPos) - 1;
let exMask1 = ~exMask;
let tile = tilePattern[sy & 1];
if (sxBytePos == exBytePos) {
let mask = sxMask & exMask;
if (c & 1) {
this.bufferB[sxBytePos] = (this.bufferB[sxBytePos] & (~mask)) | (tile & mask);
}
if (c & 2) {
this.bufferG[sxBytePos] = (this.bufferG[sxBytePos] & (~mask)) | (tile & mask);
}
if (c & 4) {
this.bufferR[sxBytePos] = (this.bufferR[sxBytePos] & (~mask)) | (tile & mask);
}
} else {
if (sxBitPos) {
if (c & 1) {
this.bufferB[sxBytePos] = (this.bufferB[sxBytePos] & sxMask1) | (tile & sxMask);
}
if (c & 2) {
this.bufferG[sxBytePos] = (this.bufferG[sxBytePos] & sxMask1) | (tile & sxMask);
}
if (c & 4) {
this.bufferR[sxBytePos] = (this.bufferR[sxBytePos] & sxMask1) | (tile & sxMask);
}
++sxBytePos;
}
for (; sxBytePos < exBytePos; ++sxBytePos) {
if (c & 1) {
this.bufferB[sxBytePos] = tile;
}
if (c & 2) {
this.bufferG[sxBytePos] = tile;
}
if (c & 4) {
this.bufferR[sxBytePos] = tile;
}
}
if (exBitPos) {
if (c & 1) {
this.bufferB[sxBytePos] = (this.bufferB[sxBytePos] & exMask1) | (tile & exMask);
}
if (c & 2) {
this.bufferG[sxBytePos] = (this.bufferG[sxBytePos] & exMask1) | (tile & exMask);
}
if (c & 4) {
this.bufferR[sxBytePos] = (this.bufferR[sxBytePos] & exMask1) | (tile & exMask);
}
}
}
// X 座標の更新
l[0] += l[1];
r[0] += r[1];
}
return sy;
}
/*
TriFill_Main : 三角形描画用 メイン・ルーチン
*/
triangleFillMain(top, middle, bottom, c, tileNo) {
// 上側の頂点からの描画開始 X 座標(頂角が描画領域外の場合、異なる座標になる)
let top_mid_x = top.x; // top - middle
let top_btm_x = top.x; // top - bottom
// 上側に水平な辺がある場合は中央の頂点で初期化する
if (top.y == middle.y)
top_mid_x = middle.x;
let sy = top.y; // 描画開始 Y 座標
let my = middle.y; // 中央の頂点の Y 座標
let ey = bottom.y; // 描画終了 Y 座標
// クリッピング
// 上側の頂点が領域外の場合
if (top.y < 0) {
sy = 0;
// 上側から中央への辺をクリッピング
if (middle.y >= 0) {
if (top.y != middle.y)
top_mid_x = (middle.x - top.x) * middle.y / (top.y - middle.y) + middle.x;
} else {
if (middle.y != bottom.y)
top_mid_x = (bottom.x - middle.x) * bottom.y / (middle.y - bottom.y) + bottom.x;
}
// 上側から下側への辺をクリッピング
if (top.y != bottom.y)
top_btm_x = (bottom.x - top.x) * bottom.y / (top.y - bottom.y) + bottom.x;
}
// 下側の頂点が領域外の場合は描画終了 Y 座標を描画領域内にする
if (bottom.y >= this.VHEIGHT)
ey = this.VHEIGHT - 1;
// X 座標に対する増分
let top_mid_a = (middle.y != top.y) ?
(middle.x - top.x) / (middle.y - top.y) : 0; // top - middle
let mid_btm_a = (middle.y != bottom.y) ?
(middle.x - bottom.x) / (middle.y - bottom.y) : 0; // middle - bottom
let top_btm_a = (top.y != bottom.y) ?
(top.x - bottom.x) / (top.y - bottom.y) : 0; // top - bottom
// 描画開始 X 座標とその増分の pair
let top_mid = [top_mid_x, top_mid_a];
let top_btm = [top_btm_x, top_btm_a];
// 中央の頂点が右向きか左向きかを判定して、各辺が左側・右側ののいずれかを決定する
// 中央の頂点を通る水平線が、上側・下側を通る直線と交わる点の X 座標
let splitLine_x = ((top.y != bottom.y) ?
(top.x - bottom.x) * (middle.y - top.y) / (top.y - bottom.y) + top.x :
bottom.x) | 0; // 中央・下側の Y 座標が等しい場合、下側の X 座標
let l = (middle.x < splitLine_x) ? top_mid : top_btm; // 左側
let r = (middle.x < splitLine_x) ? top_btm : top_mid; // 右側
// 描画
let t = Graphics.Tiles[tileNo];
sy = this.triangleFillXDraw(l, r, sy, my, c, t);
top_mid[1] = mid_btm_a;
this.triangleFillXDraw(l, r, sy, ey + 1, c, t);
}
/*
三角形描画用ルーチン 前処理
*/
triangleFill(c1, c2, c3, c, tileNo) {
// Y 座標で昇順にソート
if (c1.y > c2.y) {
let tmp = c1;
c1 = c2;
c2 = tmp;
}
if (c1.y > c3.y) {
let tmp = c1;
c1 = c3;
c3 = tmp;
}
if (c2.y > c3.y) {
let tmp = c2;
c2 = c3;
c3 = tmp;
}
// ポリゴンが描画領域外なら処理しない
if (c1.y >= this.VHEIGHT) return;
if (c3.y < 0) return;
// 描画ルーチン メインへ
this.triangleFillMain(c1, c2, c3, c, tileNo);
}
}
Graphics.Tiles = [
// 0
[parseInt("00000000", 2),
parseInt("00000000", 2)],
// 1
[parseInt("00000000", 2),
parseInt("10001000", 2)],
// 2
[parseInt("00100010", 2),
parseInt("10001000", 2)],
// 3
[parseInt("00100010", 2),
parseInt("01010101", 2)],
// 4
[parseInt("10101010", 2),
parseInt("01010101", 2)],
// 5
[parseInt("10101010", 2),
parseInt("11111111", 2)],
// 6
[parseInt("11011111", 2),
parseInt("11111011", 2)],
// 7
[parseInt("11111111", 2),
parseInt("11111111", 2)],
];
/test/module/00001/js/index.js
"use strict";
//The MIT License (MIT)
//
//Copyright (c) 2016 Satoshi Fujiwara
//
//Permission is hereby granted, free of charge, to any person obtaining a copy
//of this software and associated documentation files (the "Software"), to deal
//in the Software without restriction, including without limitation the rights
//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//copies of the Software, and to permit persons to whom the Software is
//furnished to do so, subject to the following conditions:
//
//The above copyright notice and this permission notice shall be included in
//all copies or substantial portions of the Software.
//
//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//THE SOFTWARE.
import Graphics from './graphics.js';
var time = 0;
const fps = 60;
// メイン
window.addEventListener('load', function () {
let graphics = new Graphics(window);
let play = false;
let display = true;
let isRender = false;
function resize() {
graphics.resize();
d3.select('#playbutton').style('font-size',+(graphics.screenWidth / 20) + 'px');
}
window.addEventListener('resize',resize);
resize();
d3.select('#content').node().appendChild(graphics.renderer.domElement);
let time = 0;
let prevTime = 0;
d3.select('#playbutton')
.on('click',function(){
if(display){
play = !play;
if(play){
d3.select(this).attr('class','hidden');
d3.select(this).html('<i class="fa fa-stop" aria-hidden="true"></i>');
display = false;
isRender = true;
time = 0;
prevTime = 0;
render();
} else {
d3.select(this).attr('class','active');
d3.select(this).html('<i class="fa fa-play" aria-hidden="true"></i>');
isRender = false;
}
} else {
d3.select(this).attr('class','active1');
display = true;
}
});
graphics.cls();
graphics.print(0,0,'TEST',7,0);
graphics.render();
let c1 = {x:160,y:0}, c2 = {x:0,y:199},c3 = {x:319,y:99};
function render(){
let now = window.performance.now();
time += now - prevTime;
prevTime = now;
graphics.cls();
graphics.triangleFill(c1,c2,c3,6,(now / 250) & 7);
graphics.print(0,0,'TEST',2,0);
graphics.render(time);
if(isRender){
requestAnimationFrame(render);
}
}
});
/test/module/00001/js/minMatrix.js
// ------------------------------------------------------------------------------------------------
// minMatrix.js
// version 0.0.1
// Copyright (c) doxas
// ------------------------------------------------------------------------------------------------
export function create() {
return new Float32Array(16);
}
function identity(dest) {
dest[0] = 1; dest[1] = 0; dest[2] = 0; dest[3] = 0;
dest[4] = 0; dest[5] = 1; dest[6] = 0; dest[7] = 0;
dest[8] = 0; dest[9] = 0; dest[10] = 1; dest[11] = 0;
dest[12] = 0; dest[13] = 0; dest[14] = 0; dest[15] = 1;
return dest;
}
export function multiply(mat1, mat2, dest) {
var a = mat1[0], b = mat1[1], c = mat1[2], d = mat1[3],
e = mat1[4], f = mat1[5], g = mat1[6], h = mat1[7],
i = mat1[8], j = mat1[9], k = mat1[10], l = mat1[11],
m = mat1[12], n = mat1[13], o = mat1[14], p = mat1[15],
A = mat2[0], B = mat2[1], C = mat2[2], D = mat2[3],
E = mat2[4], F = mat2[5], G = mat2[6], H = mat2[7],
I = mat2[8], J = mat2[9], K = mat2[10], L = mat2[11],
M = mat2[12], N = mat2[13], O = mat2[14], P = mat2[15];
dest[0] = A * a + B * e + C * i + D * m;
dest[1] = A * b + B * f + C * j + D * n;
dest[2] = A * c + B * g + C * k + D * o;
dest[3] = A * d + B * h + C * l + D * p;
dest[4] = E * a + F * e + G * i + H * m;
dest[5] = E * b + F * f + G * j + H * n;
dest[6] = E * c + F * g + G * k + H * o;
dest[7] = E * d + F * h + G * l + H * p;
dest[8] = I * a + J * e + K * i + L * m;
dest[9] = I * b + J * f + K * j + L * n;
dest[10] = I * c + J * g + K * k + L * o;
dest[11] = I * d + J * h + K * l + L * p;
dest[12] = M * a + N * e + O * i + P * m;
dest[13] = M * b + N * f + O * j + P * n;
dest[14] = M * c + N * g + O * k + P * o;
dest[15] = M * d + N * h + O * l + P * p;
return dest;
};
export function scale(mat, vec, dest) {
dest[0] = mat[0] * vec[0];
dest[1] = mat[1] * vec[0];
dest[2] = mat[2] * vec[0];
dest[3] = mat[3] * vec[0];
dest[4] = mat[4] * vec[1];
dest[5] = mat[5] * vec[1];
dest[6] = mat[6] * vec[1];
dest[7] = mat[7] * vec[1];
dest[8] = mat[8] * vec[2];
dest[9] = mat[9] * vec[2];
dest[10] = mat[10] * vec[2];
dest[11] = mat[11] * vec[2];
dest[12] = mat[12];
dest[13] = mat[13];
dest[14] = mat[14];
dest[15] = mat[15];
return dest;
};
export function translate(mat, vec, dest) {
dest[0] = mat[0]; dest[1] = mat[1]; dest[2] = mat[2]; dest[3] = mat[3];
dest[4] = mat[4]; dest[5] = mat[5]; dest[6] = mat[6]; dest[7] = mat[7];
dest[8] = mat[8]; dest[9] = mat[9]; dest[10] = mat[10]; dest[11] = mat[11];
dest[12] = mat[0] * vec[0] + mat[4] * vec[1] + mat[8] * vec[2] + mat[12];
dest[13] = mat[1] * vec[0] + mat[5] * vec[1] + mat[9] * vec[2] + mat[13];
dest[14] = mat[2] * vec[0] + mat[6] * vec[1] + mat[10] * vec[2] + mat[14];
dest[15] = mat[3] * vec[0] + mat[7] * vec[1] + mat[11] * vec[2] + mat[15];
return dest;
};
export function rotate(mat, angle, axis, dest) {
var sq = Math.sqrt(axis[0] * axis[0] + axis[1] * axis[1] + axis[2] * axis[2]);
if (!sq) { return null; }
var a = axis[0], b = axis[1], c = axis[2];
if (sq != 1) { sq = 1 / sq; a *= sq; b *= sq; c *= sq; }
var d = Math.sin(angle), e = Math.cos(angle), f = 1 - e,
g = mat[0], h = mat[1], i = mat[2], j = mat[3],
k = mat[4], l = mat[5], m = mat[6], n = mat[7],
o = mat[8], p = mat[9], q = mat[10], r = mat[11],
s = a * a * f + e,
t = b * a * f + c * d,
u = c * a * f - b * d,
v = a * b * f - c * d,
w = b * b * f + e,
x = c * b * f + a * d,
y = a * c * f + b * d,
z = b * c * f - a * d,
A = c * c * f + e;
if (angle) {
if (mat != dest) {
dest[12] = mat[12]; dest[13] = mat[13];
dest[14] = mat[14]; dest[15] = mat[15];
}
} else {
dest = mat;
}
dest[0] = g * s + k * t + o * u;
dest[1] = h * s + l * t + p * u;
dest[2] = i * s + m * t + q * u;
dest[3] = j * s + n * t + r * u;
dest[4] = g * v + k * w + o * x;
dest[5] = h * v + l * w + p * x;
dest[6] = i * v + m * w + q * x;
dest[7] = j * v + n * w + r * x;
dest[8] = g * y + k * z + o * A;
dest[9] = h * y + l * z + p * A;
dest[10] = i * y + m * z + q * A;
dest[11] = j * y + n * z + r * A;
return dest;
};
export function lookAt(eye, center, up, dest) {
var eyeX = eye[0], eyeY = eye[1], eyeZ = eye[2],
upX = up[0], upY = up[1], upZ = up[2],
centerX = center[0], centerY = center[1], centerZ = center[2];
if (eyeX == centerX && eyeY == centerY && eyeZ == centerZ) { return this.identity(dest); }
var x0, x1, x2, y0, y1, y2, z0, z1, z2, l;
z0 = eyeX - center[0]; z1 = eyeY - center[1]; z2 = eyeZ - center[2];
l = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);
z0 *= l; z1 *= l; z2 *= l;
x0 = upY * z2 - upZ * z1;
x1 = upZ * z0 - upX * z2;
x2 = upX * z1 - upY * z0;
l = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);
if (!l) {
x0 = 0; x1 = 0; x2 = 0;
} else {
l = 1 / l;
x0 *= l; x1 *= l; x2 *= l;
}
y0 = z1 * x2 - z2 * x1; y1 = z2 * x0 - z0 * x2; y2 = z0 * x1 - z1 * x0;
l = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);
if (!l) {
y0 = 0; y1 = 0; y2 = 0;
} else {
l = 1 / l;
y0 *= l; y1 *= l; y2 *= l;
}
dest[0] = x0; dest[1] = y0; dest[2] = z0; dest[3] = 0;
dest[4] = x1; dest[5] = y1; dest[6] = z1; dest[7] = 0;
dest[8] = x2; dest[9] = y2; dest[10] = z2; dest[11] = 0;
dest[12] = -(x0 * eyeX + x1 * eyeY + x2 * eyeZ);
dest[13] = -(y0 * eyeX + y1 * eyeY + y2 * eyeZ);
dest[14] = -(z0 * eyeX + z1 * eyeY + z2 * eyeZ);
dest[15] = 1;
return dest;
}
export function perspective(fovy, aspect, near, far, dest) {
var t = near * Math.tan(fovy * Math.PI / 360);
var r = t * aspect;
var a = r * 2, b = t * 2, c = far - near;
dest[0] = near * 2 / a;
dest[1] = 0;
dest[2] = 0;
dest[3] = 0;
dest[4] = 0;
dest[5] = near * 2 / b;
dest[6] = 0;
dest[7] = 0;
dest[8] = 0;
dest[9] = 0;
dest[10] = -(far + near) / c;
dest[11] = -1;
dest[12] = 0;
dest[13] = 0;
dest[14] = -(far * near * 2) / c;
dest[15] = 0;
return dest;
}
export function transpose(mat, dest) {
dest[0] = mat[0]; dest[1] = mat[4];
dest[2] = mat[8]; dest[3] = mat[12];
dest[4] = mat[1]; dest[5] = mat[5];
dest[6] = mat[9]; dest[7] = mat[13];
dest[8] = mat[2]; dest[9] = mat[6];
dest[10] = mat[10]; dest[11] = mat[14];
dest[12] = mat[3]; dest[13] = mat[7];
dest[14] = mat[11]; dest[15] = mat[15];
return dest;
};
export function inverse(mat, dest) {
var a = mat[0], b = mat[1], c = mat[2], d = mat[3],
e = mat[4], f = mat[5], g = mat[6], h = mat[7],
i = mat[8], j = mat[9], k = mat[10], l = mat[11],
m = mat[12], n = mat[13], o = mat[14], p = mat[15],
q = a * f - b * e, r = a * g - c * e,
s = a * h - d * e, t = b * g - c * f,
u = b * h - d * f, v = c * h - d * g,
w = i * n - j * m, x = i * o - k * m,
y = i * p - l * m, z = j * o - k * n,
A = j * p - l * n, B = k * p - l * o,
ivd = 1 / (q * B - r * A + s * z + t * y - u * x + v * w);
dest[0] = (f * B - g * A + h * z) * ivd;
dest[1] = (-b * B + c * A - d * z) * ivd;
dest[2] = (n * v - o * u + p * t) * ivd;
dest[3] = (-j * v + k * u - l * t) * ivd;
dest[4] = (-e * B + g * y - h * x) * ivd;
dest[5] = (a * B - c * y + d * x) * ivd;
dest[6] = (-m * v + o * s - p * r) * ivd;
dest[7] = (i * v - k * s + l * r) * ivd;
dest[8] = (e * A - f * y + h * w) * ivd;
dest[9] = (-a * A + b * y - d * w) * ivd;
dest[10] = (m * u - n * s + p * q) * ivd;
dest[11] = (-i * u + j * s - l * q) * ivd;
dest[12] = (-e * z + f * x - g * w) * ivd;
dest[13] = (a * z - b * x + c * w) * ivd;
dest[14] = (-m * t + n * r - o * q) * ivd;
dest[15] = (i * t - j * r + k * q) * ivd;
return dest;
};
/test/module/00001/js/mz700fon.js
"use strict";
export var fontData = [
// #0x000
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x001
[
"00011000",
"00100100",
"01000010",
"01111110",
"01000010",
"01000010",
"01000010",
"00000000"
],
// #0x002
[
"01111100",
"00100010",
"00100010",
"00111100",
"00100010",
"00100010",
"01111100",
"00000000"
],
// #0x003
[
"00011100",
"00100010",
"01000000",
"01000000",
"01000000",
"00100010",
"00011100",
"00000000"
],
// #0x004
[
"01111000",
"00100100",
"00100010",
"00100010",
"00100010",
"00100100",
"01111000",
"00000000"
],
// #0x005
[
"01111110",
"01000000",
"01000000",
"01111000",
"01000000",
"01000000",
"01111110",
"00000000"
],
// #0x006
[
"01111110",
"01000000",
"01000000",
"01111000",
"01000000",
"01000000",
"01000000",
"00000000"
],
// #0x007
[
"00011100",
"00100010",
"01000000",
"01001110",
"01000010",
"00100010",
"00011100",
"00000000"
],
// #0x008
[
"01000010",
"01000010",
"01000010",
"01111110",
"01000010",
"01000010",
"01000010",
"00000000"
],
// #0x009
[
"00011100",
"00001000",
"00001000",
"00001000",
"00001000",
"00001000",
"00011100",
"00000000"
],
// #0x00a
[
"00001110",
"00000100",
"00000100",
"00000100",
"00000100",
"01000100",
"00111000",
"00000000"
],
// #0x00b
[
"01000010",
"01000100",
"01001000",
"01110000",
"01001000",
"01000100",
"01000010",
"00000000"
],
// #0x00c
[
"01000000",
"01000000",
"01000000",
"01000000",
"01000000",
"01000000",
"01111110",
"00000000"
],
// #0x00d
[
"01000010",
"01100110",
"01011010",
"01011010",
"01000010",
"01000010",
"01000010",
"00000000"
],
// #0x00e
[
"01000010",
"01100010",
"01010010",
"01001010",
"01000110",
"01000010",
"01000010",
"00000000"
],
// #0x00f
[
"00011000",
"00100100",
"01000010",
"01000010",
"01000010",
"00100100",
"00011000",
"00000000"
],
// #0x010
[
"01111100",
"01000010",
"01000010",
"01111100",
"01000000",
"01000000",
"01000000",
"00000000"
],
// #0x011
[
"00011000",
"00100100",
"01000010",
"01000010",
"01001010",
"00100100",
"00011010",
"00000000"
],
// #0x012
[
"01111100",
"01000010",
"01000010",
"01111100",
"01001000",
"01000100",
"01000010",
"00000000"
],
// #0x013
[
"00111100",
"01000010",
"01000000",
"00111100",
"00000010",
"01000010",
"00111100",
"00000000"
],
// #0x014
[
"00111110",
"00001000",
"00001000",
"00001000",
"00001000",
"00001000",
"00001000",
"00000000"
],
// #0x015
[
"01000010",
"01000010",
"01000010",
"01000010",
"01000010",
"01000010",
"00111100",
"00000000"
],
// #0x016
[
"01000010",
"01000010",
"01000010",
"00100100",
"00100100",
"00011000",
"00011000",
"00000000"
],
// #0x017
[
"01000010",
"01000010",
"01000010",
"01011010",
"01011010",
"01100110",
"01000010",
"00000000"
],
// #0x018
[
"01000010",
"01000010",
"00100100",
"00011000",
"00100100",
"01000010",
"01000010",
"00000000"
],
// #0x019
[
"00100010",
"00100010",
"00100010",
"00011100",
"00001000",
"00001000",
"00001000",
"00000000"
],
// #0x01a
[
"01111110",
"00000010",
"00000100",
"00011000",
"00100000",
"01000000",
"01111110",
"00000000"
],
// #0x01b
[
"00001000",
"00001000",
"00001000",
"00001000",
"11111111",
"00001000",
"00001000",
"00001000"
],
// #0x01c
[
"00001000",
"00001000",
"00001000",
"00001000",
"00001111",
"00000000",
"00000000",
"00000000"
],
// #0x01d
[
"00001000",
"00001000",
"00001000",
"00001000",
"11111000",
"00000000",
"00000000",
"00000000"
],
// #0x01e
[
"00001000",
"00001000",
"00001000",
"00001000",
"00001111",
"00001000",
"00001000",
"00001000"
],
// #0x01f
[
"00001000",
"00001000",
"00001000",
"00001000",
"11111111",
"00000000",
"00000000",
"00000000"
],
// #0x020
[
"00111100",
"01000010",
"01000110",
"01011010",
"01100010",
"01000010",
"00111100",
"00000000"
],
// #0x021
[
"00001000",
"00011000",
"00101000",
"00001000",
"00001000",
"00001000",
"00111110",
"00000000"
],
// #0x022
[
"00111100",
"01000010",
"00000010",
"00001100",
"00110000",
"01000000",
"01111110",
"00000000"
],
// #0x023
[
"00111100",
"01000010",
"00000010",
"00111100",
"00000010",
"01000010",
"00111100",
"00000000"
],
// #0x024
[
"00000100",
"00001100",
"00010100",
"00100100",
"01111110",
"00000100",
"00000100",
"00000000"
],
// #0x025
[
"01111110",
"01000000",
"01111000",
"00000100",
"00000010",
"01000100",
"00111000",
"00000000"
],
// #0x026
[
"00011100",
"00100000",
"01000000",
"01111100",
"01000010",
"01000010",
"00111100",
"00000000"
],
// #0x027
[
"01111110",
"01000010",
"00000100",
"00001000",
"00010000",
"00010000",
"00010000",
"00000000"
],
// #0x028
[
"00111100",
"01000010",
"01000010",
"00111100",
"01000010",
"01000010",
"00111100",
"00000000"
],
// #0x029
[
"00111100",
"01000010",
"01000010",
"00111110",
"00000010",
"00000100",
"00111000",
"00000000"
],
// #0x02a
[
"00000000",
"00000000",
"00000000",
"01111110",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x02b
[
"00000000",
"00000000",
"01111110",
"00000000",
"01111110",
"00000000",
"00000000",
"00000000"
],
// #0x02c
[
"00000000",
"00000000",
"00001000",
"00000000",
"00000000",
"00001000",
"00001000",
"00010000"
],
// #0x02d
[
"00000000",
"00000010",
"00000100",
"00001000",
"00010000",
"00100000",
"01000000",
"00000000"
],
// #0x02e
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00011000",
"00011000",
"00000000"
],
// #0x02f
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00001000",
"00001000",
"00010000"
],
// #0x030
[
"00000000",
"11111111",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x031
[
"01000000",
"01000000",
"01000000",
"01000000",
"01000000",
"01000000",
"01000000",
"01000000"
],
// #0x032
[
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"11111111"
],
// #0x033
[
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"11111111"
],
// #0x034
[
"00000000",
"00000000",
"00000000",
"11111111",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x035
[
"00010000",
"00010000",
"00010000",
"00010000",
"00010000",
"00010000",
"00010000",
"00010000"
],
// #0x036
[
"11111111",
"11111111",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x037
[
"11000000",
"11000000",
"11000000",
"11000000",
"11000000",
"11000000",
"11000000",
"11000000"
],
// #0x038
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"00000000",
"00000000"
],
// #0x039
[
"00000100",
"00000100",
"00000100",
"00000100",
"00000100",
"00000100",
"00000100",
"00000100"
],
// #0x03a
[
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"11111111",
"11111111",
"11111111"
],
// #0x03b
[
"00001111",
"00001111",
"00001111",
"00001111",
"00001111",
"00001111",
"00001111",
"00001111"
],
// #0x03c
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"11111111"
],
// #0x03d
[
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001"
],
// #0x03e
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"11111111"
],
// #0x03f
[
"00000011",
"00000011",
"00000011",
"00000011",
"00000011",
"00000011",
"00000011",
"00000011"
],
// #0x040
[
"00000000",
"00000000",
"00001000",
"00000100",
"11111110",
"00000100",
"00001000",
"00000000"
],
// #0x041
[
"00001000",
"00011100",
"00111110",
"01111111",
"01111111",
"00011100",
"00111110",
"00000000"
],
// #0x042
[
"11111111",
"01111111",
"00111111",
"00011111",
"00001111",
"00000111",
"00000011",
"00000001"
],
// #0x043
[
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111"
],
// #0x044
[
"00001000",
"00011100",
"00111110",
"01111111",
"00111110",
"00011100",
"00001000",
"00000000"
],
// #0x045
[
"00000000",
"00000000",
"00010000",
"00100000",
"01111111",
"00100000",
"00010000",
"00000000"
],
// #0x046
[
"00001000",
"00011100",
"00101010",
"01111111",
"00101010",
"00001000",
"00001000",
"00000000"
],
// #0x047
[
"00000000",
"00111100",
"01111110",
"01111110",
"01111110",
"01111110",
"00111100",
"00000000"
],
// #0x048
[
"00000000",
"00111100",
"01000010",
"01000010",
"01000010",
"01000010",
"00111100",
"00000000"
],
// #0x049
[
"00111100",
"01000010",
"00000010",
"00001100",
"00010000",
"00000000",
"00010000",
"00000000"
],
// #0x04a
[
"11111111",
"11000011",
"10000001",
"10000001",
"10000001",
"10000001",
"11000011",
"11111111"
],
// #0x04b
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000011",
"00000100",
"00001000",
"00001000"
],
// #0x04c
[
"00000000",
"00000000",
"00000000",
"00000000",
"11000000",
"00100000",
"00010000",
"00010000"
],
// #0x04d
[
"10000000",
"11000000",
"11100000",
"11110000",
"11111000",
"11111100",
"11111110",
"11111111"
],
// #0x04e
[
"00000001",
"00000011",
"00000111",
"00001111",
"00011111",
"00111111",
"01111111",
"11111111"
],
// #0x04f
[
"00000000",
"00000000",
"00001000",
"00000000",
"00000000",
"00001000",
"00000000",
"00000000"
],
// #0x050
[
"00000000",
"00001000",
"00011100",
"00101010",
"00001000",
"00001000",
"00001000",
"00000000"
],
// #0x051
[
"00001110",
"00011000",
"00110000",
"01100000",
"00110000",
"00011000",
"00001110",
"00000000"
],
// #0x052
[
"00111100",
"00100000",
"00100000",
"00100000",
"00100000",
"00100000",
"00111100",
"00000000"
],
// #0x053
[
"00110110",
"01111111",
"01111111",
"01111111",
"00111110",
"00011100",
"00001000",
"00000000"
],
// #0x054
[
"00111100",
"00000100",
"00000100",
"00000100",
"00000100",
"00000100",
"00111100",
"00000000"
],
// #0x055
[
"00011100",
"00100010",
"01001010",
"01010110",
"01001100",
"00100000",
"00011110",
"00000000"
],
// #0x056
[
"11111111",
"11111110",
"11111100",
"11111000",
"11110000",
"11100000",
"11000000",
"10000000"
],
// #0x057
[
"01110000",
"00011000",
"00001100",
"00000110",
"00001100",
"00011000",
"01110000",
"00000000"
],
// #0x058
[
"10100000",
"01010000",
"10100000",
"01010000",
"10100000",
"01010000",
"10100000",
"01010000"
],
// #0x059
[
"00000000",
"01000000",
"00100000",
"00010000",
"00001000",
"00000100",
"00000010",
"00000000"
],
// #0x05a
[
"10101010",
"01010101",
"10101010",
"01010101",
"10101010",
"01010101",
"10101010",
"01010101"
],
// #0x05b
[
"11110000",
"11110000",
"11110000",
"11110000",
"00001111",
"00001111",
"00001111",
"00001111"
],
// #0x05c
[
"00000000",
"00000000",
"00000000",
"00000000",
"00001111",
"00001000",
"00001000",
"00001000"
],
// #0x05d
[
"00000000",
"00000000",
"00000000",
"00000000",
"11111000",
"00001000",
"00001000",
"00001000"
],
// #0x05e
[
"00001000",
"00001000",
"00001000",
"00001000",
"11111000",
"00001000",
"00001000",
"00001000"
],
// #0x05f
[
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"00001000",
"00001000",
"00001000"
],
// #0x060
[
"00000000",
"00000000",
"00000001",
"00111110",
"01010100",
"00010100",
"00010100",
"00000000"
],
// #0x061
[
"00001000",
"00001000",
"00001000",
"00001000",
"00000000",
"00000000",
"00001000",
"00000000"
],
// #0x062
[
"00100100",
"00100100",
"00100100",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x063
[
"00100100",
"00100100",
"01111110",
"00100100",
"01111110",
"00100100",
"00100100",
"00000000"
],
// #0x064
[
"00001000",
"00011110",
"00101000",
"00011100",
"00001010",
"00111100",
"00001000",
"00000000"
],
// #0x065
[
"00000000",
"01100010",
"01100100",
"00001000",
"00010000",
"00100110",
"01000110",
"00000000"
],
// #0x066
[
"00110000",
"01001000",
"01001000",
"00110000",
"01001010",
"01000100",
"00111010",
"00000000"
],
// #0x067
[
"00000100",
"00001000",
"00010000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x068
[
"00000100",
"00001000",
"00010000",
"00010000",
"00010000",
"00001000",
"00000100",
"00000000"
],
// #0x069
[
"00100000",
"00010000",
"00001000",
"00001000",
"00001000",
"00010000",
"00100000",
"00000000"
],
// #0x06a
[
"00000000",
"00001000",
"00001000",
"00111110",
"00001000",
"00001000",
"00000000",
"00000000"
],
// #0x06b
[
"00001000",
"00101010",
"00011100",
"00111110",
"00011100",
"00101010",
"00001000",
"00000000"
],
// #0x06c
[
"00001111",
"00001111",
"00001111",
"00001111",
"11110000",
"11110000",
"11110000",
"11110000"
],
// #0x06d
[
"10000001",
"01000010",
"00100100",
"00011000",
"00011000",
"00100100",
"01000010",
"10000001"
],
// #0x06e
[
"00010000",
"00010000",
"00100000",
"11000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x06f
[
"00001000",
"00001000",
"00000100",
"00000011",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x070
[
"11111111",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x071
[
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000"
],
// #0x072
[
"11111111",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000"
],
// #0x073
[
"11111111",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001"
],
// #0x074
[
"00000000",
"00000000",
"11111111",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x075
[
"00100000",
"00100000",
"00100000",
"00100000",
"00100000",
"00100000",
"00100000",
"00100000"
],
// #0x076
[
"00000001",
"00000010",
"00000100",
"00001000",
"00010000",
"00100000",
"01000000",
"10000000"
],
// #0x077
[
"10000000",
"01000000",
"00100000",
"00010000",
"00001000",
"00000100",
"00000010",
"00000001"
],
// #0x078
[
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"00000000",
"00000000",
"00000000"
],
// #0x079
[
"00001000",
"00001000",
"00001000",
"00001000",
"00001000",
"00001000",
"00001000",
"00001000"
],
// #0x07a
[
"11111111",
"11111111",
"11111111",
"11111111",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x07b
[
"11110000",
"11110000",
"11110000",
"11110000",
"11110000",
"11110000",
"11110000",
"11110000"
],
// #0x07c
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"00000000"
],
// #0x07d
[
"00000010",
"00000010",
"00000010",
"00000010",
"00000010",
"00000010",
"00000010",
"00000010"
],
// #0x07e
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"11111111",
"11111111"
],
// #0x07f
[
"00000111",
"00000111",
"00000111",
"00000111",
"00000111",
"00000111",
"00000111",
"00000111"
],
// #0x080
[
"00000000",
"00001000",
"00001000",
"00001000",
"00101010",
"00011100",
"00001000",
"00000000"
],
// #0x081
[
"00000100",
"00111000",
"00001000",
"00111110",
"00001000",
"00001000",
"00010000",
"00000000"
],
// #0x082
[
"00000000",
"00111110",
"00000010",
"00000010",
"00000010",
"00000010",
"00111110",
"00000000"
],
// #0x083
[
"00000000",
"00100010",
"00100010",
"00010010",
"00000010",
"00000100",
"00011000",
"00000000"
],
// #0x084
[
"00000000",
"00110000",
"00000010",
"00110010",
"00000010",
"00000100",
"00111000",
"00000000"
],
// #0x085
[
"00000010",
"00000100",
"00001000",
"00011000",
"00101000",
"00001000",
"00001000",
"00000000"
],
// #0x086
[
"00000000",
"00001000",
"00000100",
"00100010",
"00100010",
"00100010",
"00100010",
"00000000"
],
// #0x087
[
"00001000",
"00111110",
"00001000",
"00111110",
"00001000",
"00001000",
"00001000",
"00000000"
],
// #0x088
[
"00000000",
"00011110",
"00010010",
"00100010",
"00000010",
"00000100",
"00011000",
"00000000"
],
// #0x089
[
"00000000",
"00011100",
"00000000",
"00000000",
"00000000",
"00000000",
"00111110",
"00000000"
],
// #0x08a
[
"00000000",
"00111110",
"00000010",
"00000010",
"00010100",
"00001000",
"00000100",
"00000000"
],
// #0x08b
[
"00000100",
"00000100",
"00000100",
"00000100",
"00000100",
"00001000",
"00010000",
"00000000"
],
// #0x08c
[
"00100100",
"00100100",
"00100100",
"00100100",
"00000100",
"00001000",
"00010000",
"00000000"
],
// #0x08d
[
"00000000",
"00111110",
"00010000",
"00111110",
"00010000",
"00010000",
"00001110",
"00000000"
],
// #0x08e
[
"00000000",
"00011100",
"00000000",
"00011100",
"00000000",
"00111100",
"00000010",
"00000000"
],
// #0x08f
[
"00011100",
"00000000",
"00111110",
"00000010",
"00000010",
"00000100",
"00001000",
"00000000"
],
// #0x090
[
"00010000",
"00111110",
"00010010",
"00010100",
"00010000",
"00010000",
"00001110",
"00000000"
],
// #0x091
[
"00000000",
"00011110",
"00010010",
"00101010",
"00000110",
"00000100",
"00011000",
"00000000"
],
// #0x092
[
"00000000",
"00111110",
"00000010",
"00000100",
"00001000",
"00010100",
"00100010",
"00000000"
],
// #0x093
[
"00010000",
"00010000",
"00010000",
"00011000",
"00010100",
"00010000",
"00010000",
"00000000"
],
// #0x094
[
"00010000",
"00111110",
"00010010",
"00010010",
"00010010",
"00010010",
"00100100",
"00000000"
],
// #0x095
[
"00001000",
"00001000",
"00111110",
"00001000",
"00001000",
"00010000",
"00100000",
"00000000"
],
// #0x096
[
"00100000",
"00100000",
"00111110",
"00100000",
"00100000",
"00100000",
"00011110",
"00000000"
],
// #0x097
[
"00011100",
"00000000",
"00111110",
"00001000",
"00001000",
"00001000",
"00010000",
"00000000"
],
// #0x098
[
"00010100",
"00111110",
"00010100",
"00010100",
"00000100",
"00001000",
"00010000",
"00000000"
],
// #0x099
[
"00000000",
"00110000",
"00000000",
"00000010",
"00000010",
"00000100",
"00111000",
"00000000"
],
// #0x09a
[
"00000000",
"00101010",
"00101010",
"00101010",
"00000010",
"00000100",
"00001000",
"00000000"
],
// #0x09b
[
"00000000",
"00111110",
"00100010",
"00100010",
"00100010",
"00100010",
"00111110",
"00000000"
],
// #0x09c
[
"00010000",
"00011110",
"00100100",
"00000100",
"00000100",
"00000100",
"00001000",
"00000000"
],
// #0x09d
[
"00011110",
"00010000",
"00010000",
"00010000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x09e
[
"00000000",
"00000000",
"00111110",
"00000010",
"00001100",
"00001000",
"00010000",
"00000000"
],
// #0x09f
[
"00000000",
"00000000",
"00010000",
"00111110",
"00010010",
"00010100",
"00010000",
"00000000"
],
// #0x0a0
[
"00000000",
"00111110",
"00100010",
"00100010",
"00000010",
"00000100",
"00001000",
"00000000"
],
// #0x0a1
[
"00000000",
"00111110",
"00000010",
"00010100",
"00001000",
"00010100",
"00100000",
"00000000"
],
// #0x0a2
[
"00000000",
"00111110",
"00000010",
"00000010",
"00000010",
"00000100",
"00011000",
"00000000"
],
// #0x0a3
[
"00111110",
"00000010",
"00001010",
"00001100",
"00001000",
"00001000",
"00010000",
"00000000"
],
// #0x0a4
[
"00001000",
"00111110",
"00100010",
"00100010",
"00000010",
"00000100",
"00001000",
"00000000"
],
// #0x0a5
[
"00000000",
"00111110",
"00001000",
"00001000",
"00001000",
"00001000",
"00111110",
"00000000"
],
// #0x0a6
[
"00000100",
"00111110",
"00000100",
"00001100",
"00010100",
"00100100",
"00000100",
"00000000"
],
// #0x0a7
[
"00010000",
"00010000",
"00111110",
"00010010",
"00010100",
"00010000",
"00010000",
"00000000"
],
// #0x0a8
[
"00000000",
"00011100",
"00000100",
"00000100",
"00000100",
"00000100",
"00111110",
"00000000"
],
// #0x0a9
[
"00000000",
"00111110",
"00000010",
"00111110",
"00000010",
"00000010",
"00111110",
"00000000"
],
// #0x0aa
[
"00001000",
"00111110",
"00001000",
"00001000",
"00101010",
"00101010",
"00001000",
"00000000"
],
// #0x0ab
[
"00000000",
"00010000",
"00101000",
"00000100",
"00000010",
"00000010",
"00000000",
"00000000"
],
// #0x0ac
[
"00000000",
"00100000",
"00100000",
"00100010",
"00100100",
"00101000",
"00110000",
"00000000"
],
// #0x0ad
[
"00000000",
"00000010",
"00000010",
"00010100",
"00001000",
"00010100",
"00100000",
"00000000"
],
// #0x0ae
[
"00000000",
"00001000",
"00101000",
"00101000",
"00101010",
"00101010",
"00101100",
"00000000"
],
// #0x0af
[
"00001000",
"00111110",
"00000100",
"00001000",
"00011100",
"00101010",
"00001000",
"00000000"
],
// #0x0b0
[
"00000000",
"00001000",
"00010000",
"00100000",
"00100010",
"00111110",
"00000010",
"00000000"
],
// #0x0b1
[
"00000000",
"00000000",
"00000000",
"00001000",
"00001000",
"00001000",
"01111000",
"00000000"
],
// #0x0b2
[
"00000000",
"00000000",
"00000100",
"00001000",
"00011000",
"00101000",
"00001000",
"00000000"
],
// #0x0b3
[
"00000000",
"00000000",
"00000000",
"00011100",
"00000100",
"00000100",
"00111110",
"00000000"
],
// #0x0b4
[
"00000000",
"00111110",
"00000010",
"00111110",
"00000010",
"00000100",
"00001000",
"00000000"
],
// #0x0b5
[
"00000000",
"00000000",
"00000000",
"00000000",
"01000000",
"00100000",
"00010000",
"00000000"
],
// #0x0b6
[
"00000000",
"00000000",
"00001000",
"00111110",
"00100010",
"00000010",
"00001100",
"00000000"
],
// #0x0b7
[
"00000000",
"00000000",
"00111100",
"00000100",
"00111100",
"00000100",
"00111100",
"00000000"
],
// #0x0b8
[
"01110000",
"01010000",
"01110000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x0b9
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00100000",
"00000000"
],
// #0x0ba
[
"00000000",
"00000000",
"00000000",
"00111110",
"00001000",
"00001000",
"00111110",
"00000000"
],
// #0x0bb
[
"00000000",
"00000000",
"00000000",
"00101010",
"00101010",
"00000010",
"00001100",
"00000000"
],
// #0x0bc
[
"00010000",
"01001000",
"00100000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x0bd
[
"00000000",
"00000000",
"00000000",
"00000000",
"01110000",
"01010000",
"01110000",
"00000000"
],
// #0x0be
[
"00000000",
"00000000",
"00000100",
"00111110",
"00001100",
"00010100",
"00100100",
"00000000"
],
// #0x0bf
[
"00000000",
"00000000",
"00000000",
"00011100",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x0c0
[
"00011100",
"00011100",
"00111110",
"00011100",
"00001000",
"00000000",
"00111110",
"00000000"
],
// #0x0c1
[
"11111111",
"11110111",
"11110111",
"11110111",
"11010101",
"11100011",
"11110111",
"11111111"
],
// #0x0c2
[
"11111111",
"11110111",
"11100011",
"11010101",
"11110111",
"11110111",
"11110111",
"11111111"
],
// #0x0c3
[
"11111111",
"11111111",
"11110111",
"11111011",
"10000001",
"11111011",
"11110111",
"11111111"
],
// #0x0c4
[
"11111111",
"11111111",
"11101111",
"11011111",
"10000001",
"11011111",
"11101111",
"11111111"
],
// #0x0c5
[
"10111011",
"10111011",
"10111011",
"10000011",
"10111011",
"10111011",
"10111011",
"11111111"
],
// #0x0c6
[
"11100011",
"11011101",
"10111111",
"10111111",
"10111111",
"11011101",
"11100011",
"11111111"
],
// #0x0c7
[
"00011000",
"00100100",
"01111110",
"11111111",
"01011010",
"00100100",
"00000000",
"00000000"
],
// #0x0c8
[
"11100000",
"01000111",
"01000010",
"01111110",
"01000010",
"01000111",
"11100000",
"00000000"
],
// #0x0c9
[
"00100010",
"00111110",
"00101010",
"00001000",
"00001000",
"01001001",
"01111111",
"01000001"
],
// #0x0ca
[
"00011100",
"00011100",
"00001000",
"00111110",
"00001000",
"00001000",
"00010100",
"00100010"
],
// #0x0cb
[
"00000000",
"00010001",
"11010010",
"11111100",
"11010010",
"00010001",
"00000000",
"00000000"
],
// #0x0cc
[
"00000000",
"10001000",
"01001011",
"00111111",
"01001011",
"10001000",
"00000000",
"00000000"
],
// #0x0cd
[
"00100010",
"00010100",
"00001000",
"00001000",
"00111110",
"00001000",
"00011100",
"00011100"
],
// #0x0ce
[
"00111100",
"01111110",
"11111111",
"11011011",
"11111111",
"11100111",
"01111110",
"00111100"
],
// #0x0cf
[
"00111100",
"01000010",
"10000001",
"10100101",
"10000001",
"10011001",
"01000010",
"00111100"
],
// #0x0d0
[
"00111110",
"00100010",
"00100010",
"00111110",
"00100010",
"00100010",
"00111110",
"00000000"
],
// #0x0d1
[
"00111110",
"00100010",
"00111110",
"00100010",
"00111110",
"00100010",
"01000010",
"00000000"
],
// #0x0d2
[
"00001000",
"00101010",
"00101010",
"00001000",
"00010100",
"00100010",
"01000001",
"00000000"
],
// #0x0d3
[
"00001000",
"00001001",
"00111010",
"00001100",
"00011100",
"00101010",
"01001001",
"00000000"
],
// #0x0d4
[
"00001000",
"00001000",
"00111110",
"00001000",
"00011100",
"00101010",
"01001001",
"00000000"
],
// #0x0d5
[
"00001000",
"00010100",
"00111110",
"01001001",
"00111110",
"00011100",
"01111111",
"00000000"
],
// #0x0d6
[
"00000000",
"00001000",
"00001000",
"00111110",
"00001000",
"00001000",
"01111111",
"00000000"
],
// #0x0d7
[
"00001000",
"01001000",
"01111110",
"01001000",
"00111110",
"00001000",
"01111111",
"00000000"
],
// #0x0d8
[
"00100000",
"00111110",
"01001000",
"00111100",
"00101000",
"01111110",
"00001000",
"00000000"
],
// #0x0d9
[
"00000100",
"01111110",
"01010100",
"01111111",
"01010010",
"01111111",
"00001010",
"00000000"
],
// #0x0da
[
"00001000",
"00010100",
"00100010",
"01111111",
"00010010",
"00010010",
"00100100",
"00000000"
],
// #0x0db
[
"00111000",
"00010010",
"01111111",
"00010111",
"00111011",
"01010010",
"00010100",
"00000000"
],
// #0x0dc
[
"01111111",
"01001001",
"01001001",
"01111111",
"01000001",
"01000001",
"01000001",
"00000000"
],
// #0x0dd
[
"00100010",
"00010100",
"00111110",
"00001000",
"00111110",
"00001000",
"00001000",
"00000000"
],
// #0x0de
[
"00001100",
"00010010",
"00010000",
"00111000",
"00010000",
"00010000",
"00111110",
"00000000"
],
// #0x0df
[
"00000000",
"11000000",
"11001000",
"01010100",
"01010100",
"01010101",
"00100010",
"00000000"
],
// #0x0e0
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000010",
"11111111",
"00000010"
],
// #0x0e1
[
"00000010",
"00000010",
"00000010",
"00000010",
"00000010",
"00000010",
"00000111",
"00000010"
],
// #0x0e2
[
"00000010",
"00000010",
"00000010",
"00000010",
"00000010",
"00000010",
"11111111",
"00000010"
],
// #0x0e3
[
"00000000",
"00000000",
"00100000",
"01010000",
"10001000",
"00000101",
"00000010",
"00000000"
],
// #0x0e4
[
"00000000",
"00001110",
"00010001",
"00100010",
"11000100",
"00000100",
"00000010",
"00000001"
],
// #0x0e5
[
"00000000",
"11111111",
"00000000",
"10000001",
"01000010",
"01000010",
"10000001",
"00000000"
],
// #0x0e6
[
"00000000",
"01110000",
"10001000",
"01000100",
"00100011",
"00100000",
"01000000",
"10000000"
],
// #0x0e7
[
"00000000",
"11000100",
"10100100",
"10010100",
"10001111",
"10010100",
"10100100",
"11000100"
],
// #0x0e8
[
"00000000",
"00100011",
"00100101",
"00101001",
"11110001",
"00101001",
"00100101",
"00100011"
],
// #0x0e9
[
"10001000",
"10010000",
"10100000",
"11000000",
"11000000",
"10101000",
"10011000",
"10111000"
],
// #0x0ea
[
"10101000",
"10110000",
"10111000",
"11000000",
"11000000",
"10100000",
"10010000",
"10001000"
],
// #0x0eb
[
"10000000",
"01000000",
"00100000",
"00010000",
"00011111",
"00100000",
"01000000",
"10000000"
],
// #0x0ec
[
"00000000",
"00000000",
"00100100",
"00100100",
"11100111",
"00100100",
"00100100",
"00000000"
],
// #0x0ed
[
"00001000",
"00001000",
"00111110",
"00000000",
"00000000",
"00111110",
"00001000",
"00001000"
],
// #0x0ee
[
"00001000",
"00010000",
"00100000",
"00010000",
"00001000",
"00000100",
"00000010",
"00000100"
],
// #0x0ef
[
"01010101",
"10101010",
"01010101",
"10101010",
"01010101",
"10101010",
"01010101",
"10101010"
],
// #0x0f0
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x0f1
[
"00000000",
"01110000",
"01110000",
"01110000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x0f2
[
"00000000",
"00000111",
"00000111",
"00000111",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x0f3
[
"00000000",
"01110111",
"01110111",
"01110111",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x0f4
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"01110000",
"01110000",
"01110000"
],
// #0x0f5
[
"00000000",
"01110000",
"01110000",
"01110000",
"00000000",
"01110000",
"01110000",
"01110000"
],
// #0x0f6
[
"00000000",
"00000111",
"00000111",
"00000111",
"00000000",
"01110000",
"01110000",
"01110000"
],
// #0x0f7
[
"00000000",
"01110111",
"01110111",
"01110111",
"00000000",
"01110000",
"01110000",
"01110000"
],
// #0x0f8
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000111",
"00000111",
"00000111"
],
// #0x0f9
[
"00000000",
"01110000",
"01110000",
"01110000",
"00000000",
"00000111",
"00000111",
"00000111"
],
// #0x0fa
[
"00000000",
"00000111",
"00000111",
"00000111",
"00000000",
"00000111",
"00000111",
"00000111"
],
// #0x0fb
[
"00000000",
"01110111",
"01110111",
"01110111",
"00000000",
"00000111",
"00000111",
"00000111"
],
// #0x0fc
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"01110111",
"01110111",
"01110111"
],
// #0x0fd
[
"00000000",
"01110000",
"01110000",
"01110000",
"00000000",
"01110111",
"01110111",
"01110111"
],
// #0x0fe
[
"00000000",
"00000111",
"00000111",
"00000111",
"00000000",
"01110111",
"01110111",
"01110111"
],
// #0x0ff
[
"00000000",
"01110111",
"01110111",
"01110111",
"00000000",
"01110111",
"01110111",
"01110111"
],
// #0x100
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x101
[
"00000000",
"00000000",
"00111000",
"00000100",
"00111100",
"01000100",
"00111010",
"00000000"
],
// #0x102
[
"01000000",
"01000000",
"01011100",
"01100010",
"01000010",
"01100010",
"01011100",
"00000000"
],
// #0x103
[
"00000000",
"00000000",
"00111100",
"01000010",
"01000000",
"01000010",
"00111100",
"00000000"
],
// #0x104
[
"00000010",
"00000010",
"00111010",
"01000110",
"01000010",
"01000110",
"00111010",
"00000000"
],
// #0x105
[
"00000000",
"00000000",
"00111100",
"01000010",
"01111110",
"01000000",
"00111100",
"00000000"
],
// #0x106
[
"00001100",
"00010010",
"00010000",
"01111100",
"00010000",
"00010000",
"00010000",
"00000000"
],
// #0x107
[
"00000000",
"00000000",
"00111010",
"01000110",
"01000110",
"00111010",
"00000010",
"00111100"
],
// #0x108
[
"01000000",
"01000000",
"01011100",
"01100010",
"01000010",
"01000010",
"01000010",
"00000000"
],
// #0x109
[
"00001000",
"00000000",
"00011000",
"00001000",
"00001000",
"00001000",
"00011100",
"00000000"
],
// #0x10a
[
"00000100",
"00000000",
"00001100",
"00000100",
"00000100",
"00000100",
"01000100",
"00111000"
],
// #0x10b
[
"01000000",
"01000000",
"01000100",
"01001000",
"01010000",
"01101000",
"01000100",
"00000000"
],
// #0x10c
[
"00011000",
"00001000",
"00001000",
"00001000",
"00001000",
"00001000",
"00011100",
"00000000"
],
// #0x10d
[
"00000000",
"00000000",
"01110110",
"01001001",
"01001001",
"01001001",
"01001001",
"00000000"
],
// #0x10e
[
"00000000",
"00000000",
"01011100",
"01100010",
"01000010",
"01000010",
"01000010",
"00000000"
],
// #0x10f
[
"00000000",
"00000000",
"00111100",
"01000010",
"01000010",
"01000010",
"00111100",
"00000000"
],
// #0x110
[
"00000000",
"00000000",
"01011100",
"01100010",
"01100010",
"01011100",
"01000000",
"01000000"
],
// #0x111
[
"00000000",
"00000000",
"00111010",
"01000110",
"01000110",
"00111010",
"00000010",
"00000010"
],
// #0x112
[
"00000000",
"00000000",
"01011100",
"01100010",
"01000000",
"01000000",
"01000000",
"00000000"
],
// #0x113
[
"00000000",
"00000000",
"00111110",
"01000000",
"00111100",
"00000010",
"01111100",
"00000000"
],
// #0x114
[
"00010000",
"00010000",
"01111100",
"00010000",
"00010000",
"00010010",
"00001100",
"00000000"
],
// #0x115
[
"00000000",
"00000000",
"01000010",
"01000010",
"01000010",
"01000010",
"00111100",
"00000000"
],
// #0x116
[
"00000000",
"00000000",
"01000010",
"01000010",
"01000010",
"00100100",
"00011000",
"00000000"
],
// #0x117
[
"00000000",
"00000000",
"01000001",
"01001001",
"01001001",
"01001001",
"00110110",
"00000000"
],
// #0x118
[
"00000000",
"00000000",
"01000100",
"00101000",
"00010000",
"00101000",
"01000100",
"00000000"
],
// #0x119
[
"00000000",
"00000000",
"01000010",
"01000010",
"01000110",
"00111010",
"00000010",
"00111100"
],
// #0x11a
[
"00000000",
"00000000",
"01111110",
"00000100",
"00011000",
"00100000",
"01111110",
"00000000"
],
// #0x11b
[
"00001000",
"00001000",
"00001000",
"00001000",
"11111111",
"00001000",
"00001000",
"00001000"
],
// #0x11c
[
"00001000",
"00001000",
"00001000",
"00001000",
"00001111",
"00000000",
"00000000",
"00000000"
],
// #0x11d
[
"00001000",
"00001000",
"00001000",
"00001000",
"11111000",
"00000000",
"00000000",
"00000000"
],
// #0x11e
[
"00001000",
"00001000",
"00001000",
"00001000",
"00001111",
"00001000",
"00001000",
"00001000"
],
// #0x11f
[
"00001000",
"00001000",
"00001000",
"00001000",
"11111111",
"00000000",
"00000000",
"00000000"
],
// #0x120
[
"00111100",
"01000010",
"01000110",
"01011010",
"01100010",
"01000010",
"00111100",
"00000000"
],
// #0x121
[
"00001000",
"00011000",
"00101000",
"00001000",
"00001000",
"00001000",
"00111110",
"00000000"
],
// #0x122
[
"00111100",
"01000010",
"00000010",
"00001100",
"00110000",
"01000000",
"01111110",
"00000000"
],
// #0x123
[
"00111100",
"01000010",
"00000010",
"00111100",
"00000010",
"01000010",
"00111100",
"00000000"
],
// #0x124
[
"00000100",
"00001100",
"00010100",
"00100100",
"01111110",
"00000100",
"00000100",
"00000000"
],
// #0x125
[
"01111110",
"01000000",
"01111000",
"00000100",
"00000010",
"01000100",
"00111000",
"00000000"
],
// #0x126
[
"00011100",
"00100000",
"01000000",
"01111100",
"01000010",
"01000010",
"00111100",
"00000000"
],
// #0x127
[
"01111110",
"01000010",
"00000100",
"00001000",
"00010000",
"00010000",
"00010000",
"00000000"
],
// #0x128
[
"00111100",
"01000010",
"01000010",
"00111100",
"01000010",
"01000010",
"00111100",
"00000000"
],
// #0x129
[
"00111100",
"01000010",
"01000010",
"00111110",
"00000010",
"00000100",
"00111000",
"00000000"
],
// #0x12a
[
"00000000",
"00000000",
"00000000",
"01111110",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x12b
[
"00000000",
"00000000",
"01111110",
"00000000",
"01111110",
"00000000",
"00000000",
"00000000"
],
// #0x12c
[
"00000000",
"00000000",
"00001000",
"00000000",
"00000000",
"00001000",
"00001000",
"00010000"
],
// #0x12d
[
"00000000",
"00000010",
"00000100",
"00001000",
"00010000",
"00100000",
"01000000",
"00000000"
],
// #0x12e
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00011000",
"00011000",
"00000000"
],
// #0x12f
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00001000",
"00001000",
"00010000"
],
// #0x130
[
"00000000",
"11111111",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x131
[
"01000000",
"01000000",
"01000000",
"01000000",
"01000000",
"01000000",
"01000000",
"01000000"
],
// #0x132
[
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"11111111"
],
// #0x133
[
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"11111111"
],
// #0x134
[
"00000000",
"00000000",
"00000000",
"11111111",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x135
[
"00010000",
"00010000",
"00010000",
"00010000",
"00010000",
"00010000",
"00010000",
"00010000"
],
// #0x136
[
"11111111",
"11111111",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x137
[
"11000000",
"11000000",
"11000000",
"11000000",
"11000000",
"11000000",
"11000000",
"11000000"
],
// #0x138
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"00000000",
"00000000"
],
// #0x139
[
"00000100",
"00000100",
"00000100",
"00000100",
"00000100",
"00000100",
"00000100",
"00000100"
],
// #0x13a
[
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"11111111",
"11111111",
"11111111"
],
// #0x13b
[
"00001111",
"00001111",
"00001111",
"00001111",
"00001111",
"00001111",
"00001111",
"00001111"
],
// #0x13c
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"11111111"
],
// #0x13d
[
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001"
],
// #0x13e
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"11111111"
],
// #0x13f
[
"00000011",
"00000011",
"00000011",
"00000011",
"00000011",
"00000011",
"00000011",
"00000011"
],
// #0x140
[
"00000000",
"00000000",
"00001000",
"00000100",
"11111110",
"00000100",
"00001000",
"00000000"
],
// #0x141
[
"00001000",
"00011100",
"00111110",
"01111111",
"01111111",
"00011100",
"00111110",
"00000000"
],
// #0x142
[
"11111111",
"01111111",
"00111111",
"00011111",
"00001111",
"00000111",
"00000011",
"00000001"
],
// #0x143
[
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111",
"11111111"
],
// #0x144
[
"00001000",
"00011100",
"00111110",
"01111111",
"00111110",
"00011100",
"00001000",
"00000000"
],
// #0x145
[
"00000000",
"00000000",
"00010000",
"00100000",
"01111111",
"00100000",
"00010000",
"00000000"
],
// #0x146
[
"00001000",
"00011100",
"00101010",
"01111111",
"00101010",
"00001000",
"00001000",
"00000000"
],
// #0x147
[
"00000000",
"00111100",
"01111110",
"01111110",
"01111110",
"01111110",
"00111100",
"00000000"
],
// #0x148
[
"00000000",
"00111100",
"01000010",
"01000010",
"01000010",
"01000010",
"00111100",
"00000000"
],
// #0x149
[
"00111100",
"01000010",
"00000010",
"00001100",
"00010000",
"00000000",
"00010000",
"00000000"
],
// #0x14a
[
"11111111",
"11000011",
"10000001",
"10000001",
"10000001",
"10000001",
"11000011",
"11111111"
],
// #0x14b
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000011",
"00000100",
"00001000",
"00001000"
],
// #0x14c
[
"00000000",
"00000000",
"00000000",
"00000000",
"11000000",
"00100000",
"00010000",
"00010000"
],
// #0x14d
[
"10000000",
"11000000",
"11100000",
"11110000",
"11111000",
"11111100",
"11111110",
"11111111"
],
// #0x14e
[
"00000001",
"00000011",
"00000111",
"00001111",
"00011111",
"00111111",
"01111111",
"11111111"
],
// #0x14f
[
"00000000",
"00000000",
"00001000",
"00000000",
"00000000",
"00001000",
"00000000",
"00000000"
],
// #0x150
[
"00000000",
"00001000",
"00011100",
"00101010",
"00001000",
"00001000",
"00001000",
"00000000"
],
// #0x151
[
"00001110",
"00011000",
"00110000",
"01100000",
"00110000",
"00011000",
"00001110",
"00000000"
],
// #0x152
[
"00111100",
"00100000",
"00100000",
"00100000",
"00100000",
"00100000",
"00111100",
"00000000"
],
// #0x153
[
"00110110",
"01111111",
"01111111",
"01111111",
"00111110",
"00011100",
"00001000",
"00000000"
],
// #0x154
[
"00111100",
"00000100",
"00000100",
"00000100",
"00000100",
"00000100",
"00111100",
"00000000"
],
// #0x155
[
"00011100",
"00100010",
"01001010",
"01010110",
"01001100",
"00100000",
"00011110",
"00000000"
],
// #0x156
[
"11111111",
"11111110",
"11111100",
"11111000",
"11110000",
"11100000",
"11000000",
"10000000"
],
// #0x157
[
"01110000",
"00011000",
"00001100",
"00000110",
"00001100",
"00011000",
"01110000",
"00000000"
],
// #0x158
[
"10100000",
"01010000",
"10100000",
"01010000",
"10100000",
"01010000",
"10100000",
"01010000"
],
// #0x159
[
"00000000",
"01000000",
"00100000",
"00010000",
"00001000",
"00000100",
"00000010",
"00000000"
],
// #0x15a
[
"10101010",
"01010101",
"10101010",
"01010101",
"10101010",
"01010101",
"10101010",
"01010101"
],
// #0x15b
[
"11110000",
"11110000",
"11110000",
"11110000",
"00001111",
"00001111",
"00001111",
"00001111"
],
// #0x15c
[
"00000000",
"00000000",
"00000000",
"00000000",
"00001111",
"00001000",
"00001000",
"00001000"
],
// #0x15d
[
"00000000",
"00000000",
"00000000",
"00000000",
"11111000",
"00001000",
"00001000",
"00001000"
],
// #0x15e
[
"00001000",
"00001000",
"00001000",
"00001000",
"11111000",
"00001000",
"00001000",
"00001000"
],
// #0x15f
[
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"00001000",
"00001000",
"00001000"
],
// #0x160
[
"00000000",
"00000000",
"00000001",
"00111110",
"01010100",
"00010100",
"00010100",
"00000000"
],
// #0x161
[
"00001000",
"00001000",
"00001000",
"00001000",
"00000000",
"00000000",
"00001000",
"00000000"
],
// #0x162
[
"00100100",
"00100100",
"00100100",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x163
[
"00100100",
"00100100",
"01111110",
"00100100",
"01111110",
"00100100",
"00100100",
"00000000"
],
// #0x164
[
"00001000",
"00011110",
"00101000",
"00011100",
"00001010",
"00111100",
"00001000",
"00000000"
],
// #0x165
[
"00000000",
"01100010",
"01100100",
"00001000",
"00010000",
"00100110",
"01000110",
"00000000"
],
// #0x166
[
"00110000",
"01001000",
"01001000",
"00110000",
"01001010",
"01000100",
"00111010",
"00000000"
],
// #0x167
[
"00000100",
"00001000",
"00010000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x168
[
"00000100",
"00001000",
"00010000",
"00010000",
"00010000",
"00001000",
"00000100",
"00000000"
],
// #0x169
[
"00100000",
"00010000",
"00001000",
"00001000",
"00001000",
"00010000",
"00100000",
"00000000"
],
// #0x16a
[
"00000000",
"00001000",
"00001000",
"00111110",
"00001000",
"00001000",
"00000000",
"00000000"
],
// #0x16b
[
"00001000",
"00101010",
"00011100",
"00111110",
"00011100",
"00101010",
"00001000",
"00000000"
],
// #0x16c
[
"00001111",
"00001111",
"00001111",
"00001111",
"11110000",
"11110000",
"11110000",
"11110000"
],
// #0x16d
[
"10000001",
"01000010",
"00100100",
"00011000",
"00011000",
"00100100",
"01000010",
"10000001"
],
// #0x16e
[
"00010000",
"00010000",
"00100000",
"11000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x16f
[
"00001000",
"00001000",
"00000100",
"00000011",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x170
[
"11111111",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x171
[
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000"
],
// #0x172
[
"11111111",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000",
"10000000"
],
// #0x173
[
"11111111",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001",
"00000001"
],
// #0x174
[
"00000000",
"00000000",
"11111111",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x175
[
"00100000",
"00100000",
"00100000",
"00100000",
"00100000",
"00100000",
"00100000",
"00100000"
],
// #0x176
[
"00000100",
"00001000",
"00010001",
"00100010",
"01000100",
"10001000",
"00010000",
"00100000"
],
// #0x177
[
"00100000",
"00010000",
"10001000",
"01000100",
"00100010",
"00010001",
"00001000",
"00000100"
],
// #0x178
[
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"00000000",
"00000000",
"00000000"
],
// #0x179
[
"00001000",
"00001000",
"00001000",
"00001000",
"00001000",
"00001000",
"00001000",
"00001000"
],
// #0x17a
[
"11111111",
"11111111",
"11111111",
"11111111",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x17b
[
"11110000",
"11110000",
"11110000",
"11110000",
"11110000",
"11110000",
"11110000",
"11110000"
],
// #0x17c
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"00000000"
],
// #0x17d
[
"00000010",
"00000010",
"00000010",
"00000010",
"00000010",
"00000010",
"00000010",
"00000010"
],
// #0x17e
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"11111111",
"11111111",
"11111111"
],
// #0x17f
[
"00000111",
"00000111",
"00000111",
"00000111",
"00000111",
"00000111",
"00000111",
"00000111"
],
// #0x180
[
"00000000",
"00001000",
"00001000",
"00001000",
"00101010",
"00011100",
"00001000",
"00000000"
],
// #0x181
[
"00010000",
"11111110",
"00100000",
"01111100",
"00000010",
"00000010",
"11111100",
"00000000"
],
// #0x182
[
"00000000",
"11111100",
"00000010",
"00000000",
"00000000",
"10000000",
"01111110",
"00000000"
],
// #0x183
[
"00111100",
"00001000",
"00010000",
"01111110",
"00001000",
"00010000",
"00001100",
"00000000"
],
// #0x184
[
"01000000",
"01000000",
"01000000",
"01000000",
"01000100",
"01000100",
"00111000",
"00000000"
],
// #0x185
[
"10000100",
"10000010",
"10000010",
"10000010",
"10000010",
"10010000",
"01100000",
"00000000"
],
// #0x186
[
"10000100",
"10011110",
"10000100",
"10000100",
"10011100",
"10100110",
"01011100",
"00000000"
],
// #0x187
[
"00010000",
"01111110",
"00001000",
"01111110",
"00000100",
"00000010",
"01100000",
"00011000"
],
// #0x188
[
"00001100",
"00011000",
"00110000",
"01100000",
"00110000",
"00011000",
"00001100",
"00000000"
],
// #0x189
[
"10011110",
"10000000",
"10000000",
"10000000",
"10000000",
"10010000",
"11011110",
"00000000"
],
// #0x18a
[
"00010000",
"01111110",
"00010000",
"01111110",
"00010000",
"01110000",
"10011100",
"01110010"
],
// #0x18b
[
"00111000",
"01010100",
"10010010",
"10010010",
"10010010",
"10010010",
"01100100",
"00000000"
],
// #0x18c
[
"01000100",
"01000100",
"01000100",
"01100100",
"00000100",
"00001000",
"00010000",
"00000000"
],
// #0x18d
[
"00100000",
"11111000",
"00100000",
"11111000",
"00100010",
"00100010",
"00011100",
"00000000"
],
// #0x18e
[
"01110000",
"00010000",
"00010100",
"01111110",
"10010100",
"10010100",
"01100100",
"00000000"
],
// #0x18f
[
"01100000",
"00000000",
"10011100",
"10100010",
"11000010",
"10000010",
"00011100",
"00000000"
],
// #0x190
[
"01000100",
"01000100",
"11111110",
"01000100",
"01011000",
"01000000",
"00111110",
"00000000"
],
// #0x191
[
"00100000",
"11111100",
"01000000",
"01011110",
"10000000",
"10100000",
"10111110",
"00000000"
],
// #0x192
[
"00001000",
"11111110",
"00001000",
"00111000",
"01001000",
"00111000",
"00001000",
"00010000"
],
// #0x193
[
"00100000",
"00100010",
"00101100",
"00110000",
"01000000",
"10000000",
"01111110",
"00000000"
],
// #0x194
[
"00100010",
"11111001",
"00100101",
"00100100",
"00100100",
"00100100",
"01001000",
"00000000"
],
// #0x195
[
"00100000",
"11111010",
"01000001",
"01000100",
"10011100",
"10100110",
"00011100",
"00000000"
],
// #0x196
[
"11100000",
"00100110",
"01000101",
"10000100",
"10000100",
"10001000",
"01110000",
"00000000"
],
// #0x197
[
"11111110",
"00000100",
"00001000",
"00010000",
"00010000",
"00001000",
"00000100",
"00000000"
],
// #0x198
[
"00100000",
"11111110",
"00010000",
"00001000",
"01000100",
"00100000",
"00011000",
"00000000"
],
// #0x199
[
"00010000",
"00100000",
"00100000",
"01110000",
"01001000",
"10001000",
"10000110",
"00000000"
],
// #0x19a
[
"10000000",
"01111100",
"00000010",
"00000010",
"00000010",
"00000100",
"00011000",
"00000000"
],
// #0x19b
[
"01111100",
"00001000",
"00010000",
"00101100",
"01000010",
"00000010",
"00100100",
"00011000"
],
// #0x19c
[
"10000100",
"10111110",
"10000100",
"10000100",
"10000100",
"10000100",
"01001000",
"00000000"
],
// #0x19d
[
"00011110",
"00010000",
"00010000",
"00010000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x19e
[
"00000000",
"00100000",
"01110000",
"00100000",
"01111000",
"10010100",
"01101000",
"00000000"
],
// #0x19f
[
"00000000",
"00000000",
"01011000",
"11100100",
"00101000",
"00100000",
"00010000",
"00000000"
],
// #0x1a0
[
"00100000",
"11100100",
"00101010",
"00110010",
"01100010",
"10100010",
"00100100",
"00000000"
],
// #0x1a1
[
"00000100",
"01000100",
"01111100",
"01001010",
"10110010",
"10010111",
"01100110",
"00000000"
],
// #0x1a2
[
"00111000",
"00000000",
"00010000",
"01001010",
"01001010",
"10001010",
"00110000",
"00000000"
],
// #0x1a3
[
"00100000",
"11111100",
"00100000",
"01111100",
"10101010",
"10010010",
"01100100",
"00000000"
],
// #0x1a4
[
"00011000",
"00000000",
"00111100",
"01000010",
"00000010",
"00000100",
"00001000",
"00000000"
],
// #0x1a5
[
"00010000",
"00000000",
"01111100",
"00001000",
"00010000",
"00101000",
"01000110",
"00000000"
],
// #0x1a6
[
"00100000",
"11111101",
"00100001",
"01111100",
"10100010",
"10100010",
"01100100",
"00000000"
],
// #0x1a7
[
"01001000",
"01001100",
"00110010",
"11100010",
"00100100",
"00010000",
"00010000",
"00001000"
],
// #0x1a8
[
"00001000",
"10011100",
"10101010",
"11001010",
"11001010",
"10001100",
"00011000",
"00000000"
],
// #0x1a9
[
"00001000",
"00001110",
"00001000",
"00001000",
"01111000",
"10001110",
"01111000",
"00000000"
],
// #0x1aa
[
"10011110",
"10000100",
"10011110",
"10000100",
"10011100",
"10100110",
"11011100",
"00000000"
],
// #0x1ab
[
"00000000",
"00100000",
"01010000",
"10001000",
"00000100",
"00000010",
"00000010",
"00000000"
],
// #0x1ac
[
"00100000",
"11100110",
"00101100",
"00110100",
"01100100",
"10100100",
"00100010",
"00000000"
],
// #0x1ad
[
"00000100",
"01000100",
"01111100",
"01001010",
"10110010",
"10010010",
"01100100",
"00000000"
],
// #0x1ae
[
"01111100",
"00001000",
"00010000",
"00111100",
"01000010",
"00011010",
"00100100",
"00011000"
],
// #0x1af
[
"00100000",
"11100100",
"00101010",
"00110010",
"01100110",
"10101011",
"00100110",
"00000000"
],
// #0x1b0
[
"00100000",
"11111101",
"00100001",
"01100000",
"10100000",
"01100010",
"00111110",
"00000000"
],
// #0x1b1
[
"00000000",
"00000000",
"00000000",
"00000000",
"00001000",
"00001000",
"00001000",
"01111000"
],
// #0x1b2
[
"00000000",
"00000000",
"01001000",
"01000100",
"01000100",
"01000100",
"00100000",
"00000000"
],
// #0x1b3
[
"00000000",
"00000000",
"00010000",
"10111000",
"11010100",
"10011000",
"00110000",
"00000000"
],
// #0x1b4
[
"00010000",
"11111110",
"00100000",
"01110100",
"10111000",
"01001000",
"01111110",
"00000000"
],
// #0x1b5
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"01000000",
"00100000",
"00010000"
],
// #0x1b6
[
"00000000",
"00100000",
"00000000",
"01111000",
"00000100",
"00000100",
"00001000",
"00000000"
],
// #0x1b7
[
"00000000",
"00000000",
"00100000",
"00111000",
"00100000",
"01111000",
"01100000",
"00000000"
],
// #0x1b8
[
"01110000",
"01010000",
"01110000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x1b9
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00100000",
"00000000"
],
// #0x1ba
[
"00000000",
"00100000",
"00000000",
"01111000",
"00010000",
"00110000",
"01001100",
"00000000"
],
// #0x1bb
[
"00000000",
"00000000",
"00000000",
"11111000",
"00000100",
"00000100",
"00011000",
"00000000"
],
// #0x1bc
[
"00100000",
"10010000",
"01000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x1bd
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"01110000",
"01010000",
"01110000"
],
// #0x1be
[
"00000000",
"00100000",
"01110100",
"00100000",
"01111000",
"10100100",
"01101000",
"00000000"
],
// #0x1bf
[
"00000000",
"00000000",
"00000000",
"00011100",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x1c0
[
"00011100",
"00011100",
"00111110",
"00011100",
"00001000",
"00000000",
"00111110",
"00000000"
],
// #0x1c1
[
"11111111",
"11110111",
"11110111",
"11110111",
"11010101",
"11100011",
"11110111",
"11111111"
],
// #0x1c2
[
"11111111",
"11110111",
"11100011",
"11010101",
"11110111",
"11110111",
"11110111",
"11111111"
],
// #0x1c3
[
"11111111",
"11111111",
"11110111",
"11111011",
"10000001",
"11111011",
"11110111",
"11111111"
],
// #0x1c4
[
"11111111",
"11111111",
"11101111",
"11011111",
"10000001",
"11011111",
"11101111",
"11111111"
],
// #0x1c5
[
"10111011",
"10111011",
"10111011",
"10000011",
"10111011",
"10111011",
"10111011",
"11111111"
],
// #0x1c6
[
"11100011",
"11011101",
"10111111",
"10111111",
"10111111",
"11011101",
"11100011",
"11111111"
],
// #0x1c7
[
"00011000",
"00100100",
"01111110",
"11111111",
"01011010",
"00100100",
"00000000",
"00000000"
],
// #0x1c8
[
"11100000",
"01000111",
"01000010",
"01111110",
"01000010",
"01000111",
"11100000",
"00000000"
],
// #0x1c9
[
"00100010",
"00111110",
"00101010",
"00001000",
"00001000",
"01001001",
"01111111",
"01000001"
],
// #0x1ca
[
"00011100",
"00011100",
"00001000",
"00111110",
"00001000",
"00001000",
"00010100",
"00100010"
],
// #0x1cb
[
"00000000",
"00010001",
"11010010",
"11111100",
"11010010",
"00010001",
"00000000",
"00000000"
],
// #0x1cc
[
"00000000",
"10001000",
"01001011",
"00111111",
"01001011",
"10001000",
"00000000",
"00000000"
],
// #0x1cd
[
"00100010",
"00010100",
"00001000",
"00001000",
"00111110",
"00001000",
"00011100",
"00011100"
],
// #0x1ce
[
"00111100",
"01111110",
"11111111",
"11011011",
"11111111",
"11100111",
"01111110",
"00111100"
],
// #0x1cf
[
"00111100",
"01000010",
"10000001",
"10100101",
"10000001",
"10011001",
"01000010",
"00111100"
],
// #0x1d0
[
"00111110",
"00100010",
"00100010",
"00111110",
"00100010",
"00100010",
"00111110",
"00000000"
],
// #0x1d1
[
"00111110",
"00100010",
"00111110",
"00100010",
"00111110",
"00100010",
"01000010",
"00000000"
],
// #0x1d2
[
"00001000",
"00101010",
"00101010",
"00001000",
"00010100",
"00100010",
"01000001",
"00000000"
],
// #0x1d3
[
"00001000",
"00001001",
"00111010",
"00001100",
"00011100",
"00101010",
"01001001",
"00000000"
],
// #0x1d4
[
"00001000",
"00001000",
"00111110",
"00001000",
"00011100",
"00101010",
"01001001",
"00000000"
],
// #0x1d5
[
"00001000",
"00010100",
"00111110",
"01001001",
"00111110",
"00011100",
"01111111",
"00000000"
],
// #0x1d6
[
"00000000",
"00001000",
"00001000",
"00111110",
"00001000",
"00001000",
"01111111",
"00000000"
],
// #0x1d7
[
"00001000",
"01001000",
"01111110",
"01001000",
"00111110",
"00001000",
"01111111",
"00000000"
],
// #0x1d8
[
"00100000",
"00111110",
"01001000",
"00111100",
"00101000",
"01111110",
"00001000",
"00000000"
],
// #0x1d9
[
"00000100",
"01111110",
"01010100",
"01111111",
"01010010",
"01111111",
"00001010",
"00000000"
],
// #0x1da
[
"00001000",
"00010100",
"00100010",
"01111111",
"00010010",
"00010010",
"00100100",
"00000000"
],
// #0x1db
[
"00111000",
"00010010",
"01111111",
"00010111",
"00111011",
"01010010",
"00010100",
"00000000"
],
// #0x1dc
[
"01111111",
"01001001",
"01001001",
"01111111",
"01000001",
"01000001",
"01000001",
"00000000"
],
// #0x1dd
[
"00100010",
"00010100",
"00111110",
"00001000",
"00111110",
"00001000",
"00001000",
"00000000"
],
// #0x1de
[
"00001100",
"00010010",
"00010000",
"00111000",
"00010000",
"00010000",
"00111110",
"00000000"
],
// #0x1df
[
"00000000",
"11000000",
"11001000",
"01010100",
"01010100",
"01010101",
"00100010",
"00000000"
],
// #0x1e0
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000010",
"11111111",
"00000010"
],
// #0x1e1
[
"00000010",
"00000010",
"00000010",
"00000010",
"00000010",
"00000010",
"00000111",
"00000010"
],
// #0x1e2
[
"00000010",
"00000010",
"00000010",
"00000010",
"00000010",
"00000010",
"11111111",
"00000010"
],
// #0x1e3
[
"00000000",
"00000000",
"00100000",
"01010000",
"10001000",
"00000101",
"00000010",
"00000000"
],
// #0x1e4
[
"00000000",
"00001110",
"00010001",
"00100010",
"11000100",
"00000100",
"00000010",
"00000001"
],
// #0x1e5
[
"00000000",
"11111111",
"00000000",
"10000001",
"01000010",
"01000010",
"10000001",
"00000000"
],
// #0x1e6
[
"00000000",
"01110000",
"10001000",
"01000100",
"00100011",
"00100000",
"01000000",
"10000000"
],
// #0x1e7
[
"00000000",
"11000100",
"10100100",
"10010100",
"10001111",
"10010100",
"10100100",
"11000100"
],
// #0x1e8
[
"00000000",
"00100011",
"00100101",
"00101001",
"11110001",
"00101001",
"00100101",
"00100011"
],
// #0x1e9
[
"10001000",
"10010000",
"10100000",
"11000000",
"11000000",
"10101000",
"10011000",
"10111000"
],
// #0x1ea
[
"10101000",
"10110000",
"10111000",
"11000000",
"11000000",
"10100000",
"10010000",
"10001000"
],
// #0x1eb
[
"10000000",
"01000000",
"00100000",
"00010000",
"00011111",
"00100000",
"01000000",
"10000000"
],
// #0x1ec
[
"00000000",
"00000000",
"00100100",
"00100100",
"11100111",
"00100100",
"00100100",
"00000000"
],
// #0x1ed
[
"00001000",
"00001000",
"00111110",
"00000000",
"00000000",
"00111110",
"00001000",
"00001000"
],
// #0x1ee
[
"00001000",
"00010000",
"00100000",
"00010000",
"00001000",
"00000100",
"00000010",
"00000100"
],
// #0x1ef
[
"01010101",
"10101010",
"01010101",
"10101010",
"01010101",
"10101010",
"01010101",
"10101010"
],
// #0x1f0
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x1f1
[
"00000000",
"01110000",
"01110000",
"01110000",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x1f2
[
"00000000",
"00000111",
"00000111",
"00000111",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x1f3
[
"00000000",
"01110111",
"01110111",
"01110111",
"00000000",
"00000000",
"00000000",
"00000000"
],
// #0x1f4
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"01110000",
"01110000",
"01110000"
],
// #0x1f5
[
"00000000",
"01110000",
"01110000",
"01110000",
"00000000",
"01110000",
"01110000",
"01110000"
],
// #0x1f6
[
"00000000",
"00000111",
"00000111",
"00000111",
"00000000",
"01110000",
"01110000",
"01110000"
],
// #0x1f7
[
"00000000",
"01110111",
"01110111",
"01110111",
"00000000",
"01110000",
"01110000",
"01110000"
],
// #0x1f8
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000111",
"00000111",
"00000111"
],
// #0x1f9
[
"00000000",
"01110000",
"01110000",
"01110000",
"00000000",
"00000111",
"00000111",
"00000111"
],
// #0x1fa
[
"00000000",
"00000111",
"00000111",
"00000111",
"00000000",
"00000111",
"00000111",
"00000111"
],
// #0x1fb
[
"00000000",
"01110111",
"01110111",
"01110111",
"00000000",
"00000111",
"00000111",
"00000111"
],
// #0x1fc
[
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"01110111",
"01110111",
"01110111"
],
// #0x1fd
[
"00000000",
"01110000",
"01110000",
"01110000",
"00000000",
"01110111",
"01110111",
"01110111"],
// #0x1fe
[
"00000000",
"00000111",
"00000111",
"00000111",
"00000000",
"01110111",
"01110111",
"01110111"
],// #0x1ff
[
"00000000",
"01110111",
"01110111",
"01110111",
"00000000",
"01110111",
"01110111",
"01110111"
]
];