chip8-book
three-layer
chip8-book | three-layer | |
---|---|---|
5 | 4 | |
203 | 310 | |
- | 1.6% | |
3.9 | 0.0 | |
over 1 year ago | almost 4 years ago | |
Rust | Haskell | |
Creative Commons Zero v1.0 Universal | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
chip8-book
-
Could you suggest an open or a public domain platform that is suitable for publishing a book on emulation?
Not to discourage you, but there's already a CHIP-8 book in progress: https://github.com/aquova/chip8-book
-
feboy (DMG GB emulator) now has full audio support! Special thanks to /u/KingWallmo for working on it the last couple months. Suggestions on what feature to add next?
WASM support would be so cool. There are lots of guides online which could help you out. I saw a guide for the chip8 and it didn't even look too difficult, you can check it out here https://github.com/aquova/chip8-book
-
[Rust] Getting into low level programming. How and why does this pattern matching work?
Recently I've decided to learn low level programming with Rust. I asked for some projects to practice and got recommened to make a Chip8 emulator. That sounded fun so I searched a bit and found this guide that walks you step by step.
-
Show HN: How to compile C/C++ for WASM, pure Clang, no libs, no framework
I made some emulators in Rust as a learning project during the start of the pandemic, and ran into the exact same issue when I wanted to make a wasm version to run in a browser. Eventually, I was able to figure out how to do it, although I do use the 'wasm-pack' Cargo package to assist with it (I think you can get away without it if you're really motivated, you just need to set up the targets and other elements yourself). Basically you define some Rust API to expose whatever you need from your project, then that and the project get compiled into one .wasm binary and some (surprisingly readable) JavaScript "glue" gets generated which allows for easy inclusion into a web page. It works well for code in the std, but I've had issues with 3rd party packages.
It's focused on emulation development, but I wrote a document that describes the process I followed: https://github.com/aquova/chip8-book/blob/master/src/wasm.md
-
Advanced programming exercises/apps recommendations to code
I followed [this](https://github.com/aquova/chip8-book) book which uses Rust.
three-layer
-
My Module Structure Does Not Feel Haskell-like
I’m working on this pet project for a time now. Initially based on the three-layer repository, it’s now modelled after the Clean Architecture. In my understanding, it’s an OOP variation of the functional “Functional Core, Imperative Shell” approach. As most examples for Clean Architecture are written in C#, my module structure also looks more like a typical C# than Haskell one to me.
-
Advanced programming exercises/apps recommendations to code
I personally use servant whenever i need networking. Altough scotty is easier/simpler, I would start with scotty. Aeson for JSON encoding/decoding. Actually! As i am writing this I would recommend a book (no its not a dry boring book, more of a tutorial) that implements a CI server from scratch. It’s vety descriptive and will show you the haskell ecosystem quite clearly: https://marcosampellegrini.com/simple-haskell-book. Seriously, it’s a damn good book and that’s how i learned haskell! Back to the libraries/ecosystem, if you want to learn how to use an app monad and mtl, these who come to mind: https://github.com/Holmusk/three-layer and https://www.parsonsmatt.org/2018/03/22/three_layer_haskell_cake.html. Under the github repo, check out the App folder to get a notion of how an app monad can be used. Personally I like mtl over monad transformers such as readerT. Best of luck!
-
Looking for opinionated webapp stack
I usually make web apps in haskell + react, when i started out learning haskell I found it invaluable to find a opinionated stack to learn about the ecosystem and to see "how to get things done". When i was learning haskell I really appreciated an example like: https://github.com/Holmusk/three-layer, essentially a "best practice" web app. Anyone in the clojure(script) community that can recommend some templates/examples to get to know the ecosystem? Since im comfortable with react im assuming clojurescript with re-frame/reagent makes sense for the frontend? So far i've only seen ring/jetty for the backend. To be clear, im not necessarily looking for the "simplest" frameworks but rather something that is highly reliable in production. The backend will expose simple JSON crud with some endpoints being quite computationally heavy (concurrency will be important).
-
Baking metaphors in the imperative/declarative programming debate
In Haskell, Matt Parsons popularised the Three Layer Haskell Cake (2018). Holmusk (well, Kowainik) made this picture to go along:
What are some alternatives?
wasm-fizzbuzz - WebAssembly from Scratch: From FizzBuzz to DooM.
cake-slayer - 🍰🔪 Architecture of Haskell backend applications
Essentials-of-Compilation - A book about compiling Racket and Python to x86-64 assembly
servant-py - Servant client generators for the Python language
wefx - Basic WASM graphics package to draw to an HTML Canvas using C. In the style of the gfx library
urbit-api - talk to your urbit from haskell
cib - clang running in browser (wasm)
servant-swagger-tags - Swagger Tags for Servant
chip8-test-suite - A collection of ROM images with tests that will aid you in developing your own CHIP-8, SUPER-CHIP or XO-CHIP interpreter (or "emulator")
servant-benchmark - Generate benchmark files from Servant APIs
riscv-rust - RISC-V processor emulator written in Rust+WASM
ray-tracing - It's taking me longer than one weekend