From b43b906020bf342f1a34d89ce477e9e70c0a7bce Mon Sep 17 00:00:00 2001 From: "Derek \"Turtle\" Roe" Date: Wed, 1 Nov 2017 20:24:38 -0500 Subject: [PATCH 1/4] Update README Fix some typos, update some things, and prepare for a more cross-platform and agnostic approach to how we write our documentation. Everything compiles and works on Mac and Linux, and on any modern browser (I have tried many). Windows can use either the Linux Subsystem For Windows or Cygwin/MSYS/MinGW for an equivalent installation process. If you want to do it on Windows natively, I'm not sure exactly how to accomplish that without using Cygwin/MSYS/MinGW/Linux Subsystem For Windows. Java is still an incredibly unsafe and buggy piece of software, and I don't recommend anybody install it on any operating system. The web plugin is no longer supported in many web browsers because of this, so unless you are developing Java software, don't install it. @schibo Tell me if there is anything you want to change or update or anything. :smile: --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index cc80598..c04b9ca 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Required to build: * CoffeeScript * Java -## To setup your Linux environment: +## To setup your Linux/Mac environment with a Bash shell: ``` sudo apt-get install ruby sudo gem install slim @@ -30,7 +30,7 @@ Run compile.sh ## To setup your Windows environment (TODO): ``` -Install MinGW/MSYS/Cygwin +Install MinGW/MSYS/Cygwin/Linux Subsystem For Windows Install Ruby Install Slim Install Sass @@ -38,21 +38,21 @@ Install CoffeeLint Install CoffeeScript Install NodeJS Install NPM -Install Java (Security is an issue on Windows, be cautious [12-30-2015]) -Run compile.sh in MinGW/MSYS/Cygwin +Install Java (causes security issues, be cautious) +Run compile.sh in MinGW/MSYS/Cygwin/Linux Subsystem For Windows ``` -The script is known to work on Mac OS X 10.10 and Ubuntu 14.04.3 LTS/15.10 64-bit. It should work on any platforms that have a Bash shell. +The script should work on any platforms that have a Bash shell. We are working on Windows build instructions. # About the emulator -1964js is (kind of) a port of our Nintendo 64 emulator for Windows called 1964. 1964 was written in C and C++ for Windows. You can still grab that [here](http://1964emu.emulation64.com "Emulation64 1964 page"). +1964js is a (kind of) port of our Nintendo 64 emulator for Windows called 1964. 1964 was written in C and C++ for Windows. You can still grab that [here](http://1964emu.emulation64.com "Emulation64 1964 page"). -This project is still in the early stages. The initial goal of this project is to see how well Google Chrome's V8 JavaScript compiler performs. +This project is still in the early stages. The initial goal of this project is to see how well modern JavaScript compilers perform. -Instead of building a traditional dynamic recompiler (Just-In-Time/JIT compiler) as we did for 1964 on Windows, which translated MIPS instructions directly to x86 instructions, 1964js dynamically writes JavaScript to the web page by reversing MIPS code to JavaScript. This JavaScript represents blocks of ROM code. Then, if using Chrome for instance, Google's V8 compiler compiles the JavaScript to native code for us automatically. +Instead of building a traditional dynamic recompiler (Just-In-Time/JIT compiler) as we did for 1964 on Windows, which translated MIPS instructions directly to x86 instructions, 1964js dynamically writes JavaScript to the web page by reversing MIPS code to JavaScript. This JavaScript represents blocks of ROM code. Then the web browsers JavaScript compiler compiles the JavaScript to native code for us automatically. For updates, please check [1964js.com](http://1964js.com "1964js website")! From 3fc73adf30a2277cb40fbafed96f62a82587c0ef Mon Sep 17 00:00:00 2001 From: "Derek \"Turtle\" Roe" Date: Sat, 26 Nov 2022 23:37:00 -0600 Subject: [PATCH 2/4] Add revamped readme --- README.md | 75 +++++++++++++++++++++------------------- docs/img/logo.png | Bin 0 -> 30448 bytes docs/img/screenshot.jpg | Bin 0 -> 20097 bytes 3 files changed, 40 insertions(+), 35 deletions(-) create mode 100644 docs/img/logo.png create mode 100644 docs/img/screenshot.jpg diff --git a/README.md b/README.md index c04b9ca..875706a 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,31 @@ -# 1964js -This is the first Nintendo 64 emulator for JavaScript. Visit the [blog](http://1964js.com/blog/index.html "1964js blog") on [1964js.com](http://1964js.com "1964js website") to see videos and to download the original Windows version of 1964. -# Building the source +![1964.js logo](./docs/img/logo.png) -To build 1964js, run ./compile.sh from the root folder on Linux. +# 1964.js -Required to build: +This is the first Nintendo 64 emulator written in JavaScript. +## Features -* Slim -* Sass -* CoffeeScript -* Java +- Runs some commercial games, as well as some homebrew and test ROMs +- Works in any modern browser -## To setup your Linux/Mac environment with a Bash shell: -``` +## Screenshots + +![1964.js screenshot](./docs/img/screenshot.jpg) +## Tech used + +JavaScript Libraries: + +- BigInt.js, bitjs, GL Matrix, Google Closure, WebGL Utilities + +Other: + +- Ruby, Slim, Sass, CoffeeScript, CoffeeLint, NodeJS, NPM, JavaScript, Java, HTML +## Installation + +Build 1964.js on Linux/Mac: + +```bash sudo apt-get install ruby sudo gem install slim sudo gem install sass @@ -21,16 +33,15 @@ sudo gem install coffeelint sudo apt-get install nodejs sudo apt-get install nodejs-legacy sudo apt-get install npm -sudo npm install -g coffee-script +sudo npm install -g coffeescript sudo npm install -g coffeelint -sudo npm install -g java -sudo apt-get install default-jre Run compile.sh ``` -## To setup your Windows environment (TODO): -``` -Install MinGW/MSYS/Cygwin/Linux Subsystem For Windows +Build 1964.js on Windows: + +```bash +Install MinGW/MSYS/Cygwin/WSL terminal Install Ruby Install Slim Install Sass @@ -38,30 +49,24 @@ Install CoffeeLint Install CoffeeScript Install NodeJS Install NPM -Install Java (causes security issues, be cautious) -Run compile.sh in MinGW/MSYS/Cygwin/Linux Subsystem For Windows +Install Java +Run compile.sh in terminal ``` +## License -The script should work on any platforms that have a Bash shell. - -We are working on Windows build instructions. - -# About the emulator - -1964js is a (kind of) port of our Nintendo 64 emulator for Windows called 1964. 1964 was written in C and C++ for Windows. You can still grab that [here](http://1964emu.emulation64.com "Emulation64 1964 page"). - -This project is still in the early stages. The initial goal of this project is to see how well modern JavaScript compilers perform. +- [GNU GPLv2](https://choosealicense.com/licenses/gpl-2.0/) -Instead of building a traditional dynamic recompiler (Just-In-Time/JIT compiler) as we did for 1964 on Windows, which translated MIPS instructions directly to x86 instructions, 1964js dynamically writes JavaScript to the web page by reversing MIPS code to JavaScript. This JavaScript represents blocks of ROM code. Then the web browsers JavaScript compiler compiles the JavaScript to native code for us automatically. +## Authors -For updates, please check [1964js.com](http://1964js.com "1964js website")! +- [Schibo](https://github.com/schibo) -# Compatibility +## Contributors -Many demos, homebrew, test ROMs, and similar ROMs work fine in 1964js in Chrome. +- [Derek "Turtle" Roe](https://github.com/derekturtleroe) +## Related -Super Mario 64 is the only known commercial game to boot. You need to hit enter a couple times after the title screen. +Be sure to check out n64js as well! -Be sure to check out [n64js](http://hulkholden.github.com/n64js "N64js") as well! +[n64js](http://hulkholden.github.com/n64js) -Greets to StrmnNrmn, author of n64js and Daedalus. By pure coincidence, we started JavaScript N64 emulators around the same time! +Greets to StrmnNrmn, author of n64js and Daedalus! Coincidentally, we started JavaScript N64 emulators around the same time! \ No newline at end of file diff --git a/docs/img/logo.png b/docs/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1a92daff694b553f6a6aa26a5d83b956371155b0 GIT binary patch literal 30448 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

4SVl|qb>q5x4%1)wAk`tL-BPQ8Qt*I!aO~F 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 Date: Sat, 26 Nov 2022 23:37:23 -0600 Subject: [PATCH 3/4] Update the libraries readme to remove an ignorant statement I made :laughing: --- lib/README.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/lib/README.md b/lib/README.md index f4b42fd..87d22e6 100644 --- a/lib/README.md +++ b/lib/README.md @@ -2,16 +2,10 @@ This is the directory for various libraries used in conjunction with 1964js. Hopefully, soon we will update and synchronize some of these to newer versions, since some of these are quite out of date or use files from different versions of the same software. -- - |Name |Description |Version |License | |---|---|---|---| |BigInt.js |An arbitrary size integer math package for JavaScript |1.0.1 |GNU GPLv2+ | |bitjs |A set of tools to handle binary data in JavaScript (using Typed Arrays) |June 11, 2014? |MIT |GL Matrix |JavaScript matrix and vector library for high performance WebGL apps |0.9.5? |MIT | |Google Closure Library |Closure is a powerful, low-level JavaScript library designed for building complex and scalable web applications |2006? |Apache 2.0 -|WebGL Utilities |Contains functions every WebGL program will need a version of one way or another |September 15, 2011 commit? |Public Domain* | - -- - -* *This has no license, so it defaults to public domain. If a license is added, I will gladly add it here. +|WebGL Utilities |Contains functions every WebGL program will need a version of one way or another |September 15, 2011 commit? |Copyright Google | From d07539e0cbd3aacc63a20c3571be508cbf264b34 Mon Sep 17 00:00:00 2001 From: "Derek \"Turtle\" Roe" Date: Sun, 27 Nov 2022 03:36:51 -0600 Subject: [PATCH 4/4] Make this look a lot better --- lib/README.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/README.md b/lib/README.md index 87d22e6..4d2563e 100644 --- a/lib/README.md +++ b/lib/README.md @@ -2,10 +2,11 @@ This is the directory for various libraries used in conjunction with 1964js. Hopefully, soon we will update and synchronize some of these to newer versions, since some of these are quite out of date or use files from different versions of the same software. -|Name |Description |Version |License | -|---|---|---|---| -|BigInt.js |An arbitrary size integer math package for JavaScript |1.0.1 |GNU GPLv2+ | -|bitjs |A set of tools to handle binary data in JavaScript (using Typed Arrays) |June 11, 2014? |MIT -|GL Matrix |JavaScript matrix and vector library for high performance WebGL apps |0.9.5? |MIT | -|Google Closure Library |Closure is a powerful, low-level JavaScript library designed for building complex and scalable web applications |2006? |Apache 2.0 -|WebGL Utilities |Contains functions every WebGL program will need a version of one way or another |September 15, 2011 commit? |Copyright Google | +| Name | Description | Version | License | +| ---------------------- | --------------------------------------------------------------------------------------------------------------- | -------------------------- | ---------------- | +| BigInt.js | An arbitrary size integer math package for JavaScript | 1.0.1 | GNU GPLv2+ | +| bitjs | A set of tools to handle binary data in JavaScript (using Typed Arrays) | June 11, 2014? | MIT | +| GL Matrix | JavaScript matrix and vector library for high performance WebGL apps | 0.9.5? | MIT | +| Google Closure Library | Closure is a powerful, low-level JavaScript library designed for building complex and scalable web applications | 2006? | Apache 2.0 | +| WebGL Utilities | Contains functions every WebGL program will need a version of one way or another | September 15, 2011 commit? | Copyright Google | +