Uploaded November 2022 | Updated September 2026, 2 weeks ago
In this video, we're exploring the BPS binary patch format, used extensively in the ROM hacking scene. BPS has a number of improvements over the IPS format we looked at in a previous installment, offering better composition, compression, and error checking.
=[ 🔗 Links 🔗 ]=
💌 Updates to your inbox: tinyletter.com/lowleveljavascript
🗣 Discord: discord.gg/FPWaVgk
⭐️ Patreon: patreon.com/lowleveljavascript
💻 Github Repo: github.com/lowbyteproductions/BPS-Patcher
In this video, we're exploring the BPS binary patch format, used extensively in the ROM hacking scene. BPS has a number of improvements over the IPS format we looked at in a previous installment, offering better composition, compression, and error checking.
=[ 🔗 Links 🔗 ]=
💌 Updates to your inbox: tinyletter.com/lowleveljavascript
🗣 Discord: discord.gg/FPWaVgk
⭐️ Patreon: patreon.com/lowleveljavascript
💻 Github Repo: github.com/lowbyteproductions/BPS-Patcher
![Building The Worlds First CPU in TypeScript? (No Really!)
=[ 🔗 Links 🔗 ]=
First development episode: https://www.youtube.com/watch?v=Vat4p2idDOA
gateware-ts video: https://www.youtube.com/watch?v=Otx96lJnLeo
gateware-ts repo: https://github.com/gateware-ts/gateware-ts
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo (emulator): https://github.com/LowLevelJavaScript/RISC-V-Emulator Building The Worlds First CPU in TypeScript? (No Really!)](https://i.ytimg.com/vi/ER7h4ZTe19A/mqdefault.jpg)
![Parsing Nested Expressions and Disambiguating The Order Of Operations (16-Bit VM in JavaScript 009)
In this episode were continuing with the assembler; finalising the Move Literal To Register instruction parser, and implementing the rules that govern the order of operations.
=[ ℹ About ℹ ]=
This series is all about building a powerful virtual machine in JavaScript with the following features:
- A flexible, extensible, register-based virtual machine
- Support for signed, unsigned and floating point operations
- A call stack
- Interrupt capabilities
- Ability to do memory mapping for IO
- An assembly language with macro and module support
- A higher level, C like language. Well use and expand the library from the parser combinators from scratch series
- And finally, to be able to take the whole thing into the browser and extend it to create a sort of fantasy console - an emulator for a machine that never existed
- ⭐️ Patreon: https://www.patreon.com/lowleveljavascript
- 💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
- Series Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW5DdwpdwHCRJsEubS5NrQ9b&playnext=1&index=1
- Github Repo: https://github.com/LowLevelJavaScript/16-Bit-Virtual-Machine
- arcsecond: https://github.com/francisrstokes/arcsecond
- Parser Combinators From Scratch: https://www.youtube.com/watch?v=6oQLRhw5Ah0&list=PLP29wDx6QmW5yfO1LAgO8kU3aQEj8SIrU
- Binary Operation: https://en.wikipedia.org/wiki/Binary_operation
- Binary Expression (structure): https://en.wikipedia.org/wiki/Binary_expression_tree Parsing Nested Expressions and Disambiguating The Order Of Operations (16-Bit VM in JavaScript 009)](https://i.ytimg.com/vi/EaUBBDESWCY/mqdefault.jpg)
![Building Async/Await FROM SCRATCH using Generators
In this episode we build on the Promise abstraction we built in the previous episode to create async/await from scratch using generator functions.
=[ 🔗 Links 🔗 ]=
- ⭐️ Patreon: https://www.patreon.com/lowleveljavascript
- 💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
- Github Repo: https://github.com/LowLevelJavaScript/Promises-From-Scratch
- Specification: https://promisesaplus.com
- Promises (MDN): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
- Generator Functions: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*
- Generator Objects: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator
- Iterator: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterator_protocol
- Iterable: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol Building Async/Await FROM SCRATCH using Generators](https://i.ytimg.com/vi/Em2jqwROdZc/mqdefault.jpg)
![Adding Method Overloading To Classes In JavaScript?
In this video were building a runtime library that allows us to define more powerful classes. More specifically, itll give us the ability to write strongly typed and overloadable constructors and methods.
=[ 🔗 Links 🔗 ]=
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/francisrstokes/Classiest Adding Method Overloading To Classes In JavaScript?](https://i.ytimg.com/vi/F-fa_yXcJbc/mqdefault.jpg)
![[stream] File System Hacking: Building A FAT32 Layer On Top Of The SD-Card Driver
=[ 🔗 Links 🔗 ]=
🎥 Stream Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW7jg0LgRJYAmHLM6G_6NDw6
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: [stream] File System Hacking: Building A FAT32 Layer On Top Of The SD-Card Driver](https://i.ytimg.com/vi/GMkjey1FTe0/mqdefault.jpg)
![Building an ENCODER for the Quite OK Image Format (QOI)
The Quite OK Image Format (qoi) is a lossless compression image format that has similar performance to PNG, but with substantially faster encoding and decoding, making it a great choice for embedded systems.
In this video were going to be writing an encoder in TypeScript, which allows us to take raw RGBA pixels and compress them using the algorithms specified by QOI.
In the next video, well write the corresponding decoder - and together these two components will allow us to take most common image formats and transform them to QOI, as well as being able to display QOI images in the browser.
=[ 🔗 Links 🔗 ]=
- The QOI format: https://qoiformat.org/
- Dominic Szablewski (the creator): https://twitter.com/phoboslab
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/LowLevelJavaScript/QOI Building an ENCODER for the Quite OK Image Format (QOI)](https://i.ytimg.com/vi/GgsRQuGSrc0/mqdefault.jpg)
![Assembler Hacking: Structures (16-Bit VM in JavaScript 015)
In this episode, were going to implement structures. This feature allows a programmer to treat a symbolic name (referring to a memory address) as a particular kind of structured data.
00:00 - Intro
00:30 - What do structures do in LLJS Assembly?
02:17 - Implementing the structure parser
04:23 - Implementing the interpret as structure parser
06:22 - Writing a test program in assembly
06:43 - Tracking structure types in the assembler
08:41 - Reinterpreting symbols as structures in the assembler
10:40 - Testing structures by generating real machine code
=[ ℹ About ℹ ]=
This series is all about building a powerful virtual machine in JavaScript with the following features:
- A flexible, extensible, register-based virtual machine
- Support for signed, unsigned and floating point operations
- A call stack
- Interrupt capabilities
- Ability to do memory mapping for IO
- An assembly language with macro and module support
- A higher level, C like language. Well use and expand the library from the parser combinators from scratch series
- And finally, to be able to take the whole thing into the browser and extend it to create a sort of fantasy console - an emulator for a machine that never existed
=[ 🔗 Links 🔗 ]=
- 💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
- ⭐️ Patreon: https://www.patreon.com/lowleveljavascript
- Assembly language tour (16-Bit VM ep 7) : https://youtu.be/ai63l4OUxSs
- Data directives: https://en.wikipedia.org/wiki/Assembly_language#Data_directives
- Series Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW5DdwpdwHCRJsEubS5NrQ9b&playnext=1&index=1
- Github Repo: https://github.com/LowLevelJavaScript/16-Bit-Virtual-Machine Assembler Hacking: Structures (16-Bit VM in JavaScript 015)](https://i.ytimg.com/vi/GkipKe0S_5E/mqdefault.jpg)
![Bare Metal Bit Banging: WS2812B Driver
In this video, we examine the WS2812B RGB LED device, and write a bit-banged driver from scratch for an STM32 microcontroller.
Chapters
00:00 What is a WS2812 / NeoPixel
02:33 Hardware overview
06:00 What is a device driver?
08:35 The signalling protocol
15:00 Reviewing the datasheet
22:00 Figuring out the GPIO timing
49:32 First LED test
53:36 Implementing the driver interface
=[ 🔗 Links 🔗 ]=
🎥 Bare metal playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW7HaCrRydOnxcy8QmW0SNdQ
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/lowbyteproductions/stm32-ws2812b Bare Metal Bit Banging: WS2812B Driver](https://i.ytimg.com/vi/KUklOA91nk0/mqdefault.jpg)
![Tour Through The Assembly Language and The Assembler (16-Bit VM in JavaScript 007)
In this episode were going to take a break from building functionality in the virtual machine and take a tour through the assembly language that this VM will support, and some features of the assembler - which will turn that assembly language into machine code.
=[ ℹ About ℹ ]=
This series is all about building a powerful virtual machine in JavaScript with the following features:
- A flexible, extensible, register-based virtual machine
- Support for signed, unsigned and floating point operations
- A call stack
- Interrupt capabilities
- Ability to do memory mapping for IO
- An assembly language with macro and module support
- A higher level, C like language. Well use and expand the library from the parser combinators from scratch series
- And finally, to be able to take the whole thing into the browser and extend it to create a sort of fantasy console - an emulator for a machine that never existed
- ⭐️ Patreon: https://www.patreon.com/lowleveljavascript
- 💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
- Series Playlist: https://www.youtube.com/playlist?list=PLP29wDx6QmW5DdwpdwHCRJsEubS5NrQ9b&playnext=1&index=1
- Github Repo: https://github.com/LowLevelJavaScript/16-Bit-Virtual-Machine
- arcsecond: https://github.com/francisrstokes/arcsecond
- Parser Combinators From Scratch: https://www.youtube.com/watch?v=6oQLRhw5Ah0&list=PLP29wDx6QmW5yfO1LAgO8kU3aQEj8SIrU Tour Through The Assembly Language and The Assembler (16-Bit VM in JavaScript 007)](https://i.ytimg.com/vi/KhKq8a1m8r8/mqdefault.jpg)
![How does an OS boot? //Source Dive// 001
In this installment of //Source Dive//, were learning about the xv6 Operating System; Specifically the low-level boot code that gets the CPU in the correct state to run the OS!
=[ 🔗 Links 🔗 ]=
🐋 RISC-V Docker Image: https://github.com/francisrstokes/rv-toolchain-docker/pkgs/container/rv-toolchain-docker
🎥 Series Playlist:
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/mit-pdos/xv6-riscv How does an OS boot? //Source Dive// 001](https://i.ytimg.com/vi/KkenLT8S9Hs/mqdefault.jpg)
![Implementing A Generic Priority Queue
In this video were going to be building a priority queue - a data structure which allows us to add items and retrieve the highest priority item in an extremely fast and efficient manner. The implementation is generic, meaning we can use any kind of object or structure for our items that we choose.
This data structure will be used in some upcoming videos about compression.
=[ 🔗 Links 🔗 ]=
🎥 Series Playlist:
💌 Updates to your inbox: https://tinyletter.com/lowleveljavascript
🗣 Discord: https://discord.gg/FPWaVgk
⭐️ Patreon: https://www.patreon.com/lowleveljavascript
💻 Github Repo: https://github.com/LowLevelJavaScript/Priority-Queue Implementing A Generic Priority Queue](https://i.ytimg.com/vi/M6OW0KNkhhs/mqdefault.jpg)