UNPKG

nes-js

Version:
145 lines (113 loc) 4.28 kB
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> <style> body { font-family: Monospace; background-color: #fff; color: #000; margin: 0px; overflow: hidden; } #info { color: #000; position: absolute; top: 10px; width: 100%; text-align: center; display:block; } #info a, .button { color: #f00; font-weight: bold; text-decoration: underline; cursor: pointer } </style> <script type="text/javascript" src="utility/utility.js"></script> <script type="text/javascript" src="src/Register.js"></script> <script type="text/javascript" src="src/Memory.js"></script> <script type="text/javascript" src="src/Joypad.js"></script> <script type="text/javascript" src="src/Rom.js"></script> <script type="text/javascript" src="src/Mapper.js"></script> <script type="text/javascript" src="src/Cpu.js"></script> <script type="text/javascript" src="src/Ppu.js"></script> <script type="text/javascript" src="src/Apu.js"></script> <script type="text/javascript" src="src/Nes.js"></script> <script type="text/javascript" src="src/Display.js"></script> <script type="text/javascript" src="src/Audio.js"></script> <script type="text/javascript" src="https://rawgit.com/mrdoob/three.js/dev/build/three.js"></script> <script type="text/javascript" src="https://rawgit.com/mrdoob/three.js/dev/examples/js/controls/OrbitControls.js"></script> <script type="text/javascript"> var __nes; /** * */ function __init() { var url = '../nes-js-work/roms/Sgt. Helmet - Training Day (2013)(The Mojon Twins)[!].nes'; var request = new XMLHttpRequest(); request.responseType = 'arraybuffer'; request.onload = function() { __run(request.response); }; request.onerror = function(e) { }; request.open('GET', url, true); request.send(null); } /** * */ function __run(buffer) { var rom = new Rom(buffer); if(!rom.isNes()) { return; } var canvas = document.createElement('canvas'); var nes = new Nes(); nes.setRom(rom); var display = new Display(canvas); nes.setDisplay(display); window.onkeydown = function(e) { nes.handleKeyDown(e); }; window.onkeyup = function(e) { nes.handleKeyUp(e); }; __nes = nes; // for debug on console. nes.bootup(); nes.run(); __start(canvas); } /** * */ function __start(canvas) { canvas.width = canvas.height = 256; var scene, camera, renderer; var geometry, material, mesh; var controls; function init() { scene = new THREE.Scene(); scene.background = new THREE.Color( 0xffffff ); var gridHelper = new THREE.PolarGridHelper( 100, 20 ); gridHelper.position.y = -15; scene.add( gridHelper ); camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 ); camera.position.z = 25; geometry = new THREE.PlaneBufferGeometry( 32, 30 ); material = new THREE.MeshBasicMaterial( { map: new THREE.Texture( canvas ) } ); material.map.needsUpdate = true; mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); renderer = new THREE.WebGLRenderer( {antialias: true} ); renderer.setSize( window.innerWidth, window.innerHeight ); controls = new THREE.OrbitControls( camera, renderer.domElement ); controls.enableKeys = false; document.body.appendChild( renderer.domElement ); } function animate() { requestAnimationFrame( animate ); material.map.needsUpdate = true; renderer.render( scene, camera ); } init(); animate(); } </script> </head> <body onload="__init()"> </body> </html>