GithubHelp home page GithubHelp logo

idelvall / nand-mines Goto Github PK

View Code? Open in Web Editor NEW
18.0 1.0 3.0 122 KB

Minesweeper for the Hack machine implemented in Jack language (http://www.nand2tetris.org)

HTML 100.00%
nand2tetris game minesweeper jack-language

nand-mines's Introduction

NAND Mines

Minesweeper for the Hack machine implemented in Jack language.

Video: https://youtu.be/SpAAYjXAtJ0

NAND Mines board

NAND Mines help

Nand2Tetris is an online, self-teachable course on Building a Modern Computer from First Principles http://www.nand2tetris.org/.

This was my project submission for the module 9, a game implemented in the Jack language, a minimalist high level, OO language we have implemented for the Hack machine, a 16-bit hardware machine we had previously built starting from the very ground: logical NAND gates.

Table of Contents

General execution instructions

  • Download and install the Nand2tetris Software Suite (http://www.nand2tetris.org/software.php)
  • Compile the src folder with the JackCompiler tool.
  • Start the VMEmulator.
  • Using File -> Load Program, select the application's directory and click the "Load Program" button.
  • Click the "Yes" button to the Confirmation Message pop-up.
  • Set the Animate: drop-down to "No animation".
  • Set the speed slider to "Fast".
  • Press "F5" to run.

Acknowledgements

Support bugs and requests

https://github.com/idelvall/nand-mines/issues

Authors

Contributions are always welcome and greatly appreciated!

License

Apache License, Version 2.0

nand-mines's People

Contributors

idelvall avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

nand-mines's Issues

-32768 isn't a valid value in Jack

Could you please add a test for 0000 0000 0000 0001 and ensure it is coded as ~32767 instead of -32768 since -32768 is not a valid input value in Jack.
The problem is that -32768 generates the VM code:

push 32768
neg 

which in turn produces the assembly command

@32768

which fails because the binary for an @ command is 0 followed by a 15 bit value and 32768 uses the 16th bit.

Eg.a quick fix would be to insert at line 163:

if (value == -32768) 
    generateCode.value = generateCode.value + "\tdo Memory.poke(memAddress+" + row*32 + ", ~32767);\n"; 
else
    generateCode.value = generateCode.value + GenerateCodeLine(i, value);

and delete line 164. Or the same test could be moved to the GenerateCodeLine function.

Note that this is a bug in the original version of the Sokoban bitmap editor also.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.