![VoxelRifts](/img/default-banner.jpg)
- 12
- 705 072
VoxelRifts
Registrace 1. 09. 2017
Channel dedicated to Programming explainer videos.
They are probably bad. Sorry!
They are probably bad. Sorry!
I made a language for the Nintendo DS
A lot of work and 6 months later, here's my latest project. A Custom compiler for a custom language targeting arm assembly for the Nintendo DS (and DSi). I go through syntax, typechecking and AST lowering in detail in this video.
References:
Calculator Video (For in-depth Lexing and Parsing explanation): czcams.com/video/myZcNjKcVGw/video.html
Cuik Compiler (By Negate): github.com/RealNeGate/Cuik
DS reference (GBATek Mirror, because the original website just doesn't work): mgba-emu.github.io/gbatek/
Other references I used:
Nice NDS assembly tutorial: www.chibialiens.com/arm/nds.php
Function Stack Frames: people.cs.rutgers.edu/~pxk/419/notes/frames.html
Overview of ARM assembly: coranac.com/tonc/text/asm.htm
ARM Addressing Modes: www.labs.cs.uregina.ca/301/ARM-addressing/lecture.html
ARM Instruction CheatSheet: www.chibialiens.com/arm/CheatSheet.pdf
Nintendo DS Architecture: www.copetti.org/writings/consoles/nintendo-ds/
Join the discord! discord.gg/8rtYjQkqDF
#nintendods #compiler #language
References:
Calculator Video (For in-depth Lexing and Parsing explanation): czcams.com/video/myZcNjKcVGw/video.html
Cuik Compiler (By Negate): github.com/RealNeGate/Cuik
DS reference (GBATek Mirror, because the original website just doesn't work): mgba-emu.github.io/gbatek/
Other references I used:
Nice NDS assembly tutorial: www.chibialiens.com/arm/nds.php
Function Stack Frames: people.cs.rutgers.edu/~pxk/419/notes/frames.html
Overview of ARM assembly: coranac.com/tonc/text/asm.htm
ARM Addressing Modes: www.labs.cs.uregina.ca/301/ARM-addressing/lecture.html
ARM Instruction CheatSheet: www.chibialiens.com/arm/CheatSheet.pdf
Nintendo DS Architecture: www.copetti.org/writings/consoles/nintendo-ds/
Join the discord! discord.gg/8rtYjQkqDF
#nintendods #compiler #language
zhlédnutí: 8 850
Video
Why are if statements in shaders heavily discouraged?
zhlédnutí 5KPřed 6 měsíci
This video was sponsored by Brilliant To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/VoxelRifts . The first 200 of you will get 20% off Brilliant’s annual premium subscription. If you've done shader programming before, you might've heard people say that you shouldn't use if statements or any other conditional branching statements in shaders. However, it mi...
Restarting my game and finishing an MVP
zhlédnutí 1,8KPřed 8 měsíci
Remember those 2 terribly made devlogs I made last year? yeah me neither. But that game still bugged me, because I genuinely thought (and still think) it is a good idea for a game. So I gave myself 1 week to finish a dumbed-down mvp. (It obviously took a month lol) This video was sponsored by Brilliant To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/VoxelRi...
Making a calculator from scratch - #SoME3
zhlédnutí 29KPřed 10 měsíci
Disclaimer: This video is rather programming heavy at points. You are welcome to skip these parts, but do note you might miss some small detail somewhere. These sections have the "Code:" prefix in the timestamps. Evaluating math expressions is not an easy problem to solve, despite seeming extremely simple. This video is a step by step guide to doing so, taking you through the motivations behind...
Making a Chip-8 Emulator
zhlédnutí 11KPřed rokem
(New Discord server!) My Discord Server: discord.gg/8rtYjQkqDF I made a Chip-8 Emulator/Interpreter from scratch in C and this video showcases a few interesting tidbits from this project. Repository: github.com/PixelRifts/chip8-sim Chip-8 Technical Reference: devernay.free.fr/hacks/chip8/C8TECH10.HTM (You may have noticed the intro animation for "Byte Sized". This is technically the first video...
Compilation, Libraries and the pesky "unresolved external symbol" error
zhlédnutí 5KPřed rokem
Understanding the Compilation Process is very important for anybody trying to get into compiled languages like C, C , Rust, etc. This is a video highlighting how this process works. We start by going over the linker, symbols and object files, and using this as context for understanding different types of libraries: Static and Dynamic. Discord: discord.gg/8rtYjQkqDF Relevant Links: Just google i...
Arenas, strings and Scuffed Templates in C
zhlédnutí 78KPřed rokem
A video made to highlight some strategies and tips for making using C easier Discord: discord.gg/8rtYjQkqDF Relevant Links: Arenas: www.rfleury.com/p/untangling-lifetimes-the-arena-allocator www.gingerbill.org/article/2019/02/08/memory-allocation-strategies-002/ Base Layer Series: www.youtube.com/@Mr4thProgramming My Data Structure Implementations: (Completely standalone if you remove the stabl...
My 2 Year Journey of Learning C, in 9 minutes
zhlédnutí 553KPřed rokem
This is a short video about my journey from not understanding C in the least to being able to make a relatively large codebase. Discord: discord.gg/8rtYjQkqDF Links to Projects/Resources mentioned in the video: Crafting Interpreters craftinginterpreters.com/ My Custom Programming Language Transpiler (Rift) - V1 branch: github.com/PixelRifts/Rift/tree/v1 Tool Installer: github.com/Indie-Toolbox/...
A Quick, Easy and Extendable OpenGL Renderer in 250 LOC!
zhlédnutí 7KPřed rokem
A Video Guide to writing an easy to build, use and extend Rendering API in OpenGL. Pretty much perfect for small scale games! I'm using C, but there's pretty much 0 C-specific stuff here. You are welcome to follow along in any language. (You may need to pause at times. SORRY! I'm still new to youtube!) Discord: discord.gg/8rtYjQkqDF Links: For the Full Code written in this video, check src/rend...
A Basic Guide to Debugging OpenGL
zhlédnutí 3,7KPřed rokem
Debugging OpenGL is hard. This video outlines a few methods and tips for Debugging OpenGL. We start with The Debug Context, RenderDoc, and then some general tips for some common cases. Discord: discord.gg/8rtYjQkqDF Links: www.khronos.org/opengl/wiki/Debug_Output renderdoc.org/ Music: It Came Upon a Midnight Clear by Kevin MacLeod is licensed under a Creative Commons Attribution 4.0 license. cr...
Debug Rendering, Collisions and the Map --- Arena Battler / Roguelike Devlog 2
zhlédnutí 917Před rokem
Devlog 2 for the "Arena Battler / Roguelike Game based on Gems" I implement Debug Rendering, Collisions, and Entity system and a custom Map Generation algorithm #devlog #roguelike #mapgen
Planning, Rendering and Easing --- Arena Battler/ Roguelike Devlog 1
zhlédnutí 1,9KPřed rokem
Devlog 1 for an "Arena Battler / Roguelike Game based on Gems" I start planning out the ideas for this game, implement rendering and talk about easing functions #devlog #roguelike #easing
man..I'm auto subscribing
I think you just reinvented objec? 😂 If you put fucntion and data pointer in arena.dealocating would be object.destory() , routine for allocating it is creator ?
hey i love the video but i just have to say that the thumbnail sucks ass and it's probably what made the video simmer in my watch later playlist for two weeks
What can I say, I suck at thumbnails
@@voxelrifts :(
21:00 Shout out to ChibiAkumas!
Really nice! Was wondering if you could apply this new language to your Making a Chip-8 Emulator?
Probably could! Would require a lot of figuring out though. Like the mapping of 16 inputs to 12 dsi inputs and figuring out sound without turning myself deaf first
@@voxelrifts Actually I meant using your new language to write programs that would work on a Chip-8 Emulator. Not to write a Chip-8 Emulator for the DSI, although that would be cool too; you could use the bottom screen as input.
@@MattKasdorf ah you're talking about a chip8 backend for the compiler. Yeah that'd be very different from the DS
One metaprogramming option that I'm exploring is using python to generate the C code, and add that C code as a target to a makefile (so that every time I modify the python script, the C files get regenerated). Another option would be to use SCons as a build system, since it's already Python code it would integrate more seamlessly
We want your language's OS decorator to come to C
What’s that vscode theme?
Fantastic video! Great work
Really nice video with clear explanations of the key algorithms. Great work!
You 100% earned by subscription! I love this kind of content! :D
Leave it to a C programmer to reinvent what's already implemented and solved in C++
nice animations
I followed your math parser tutorial, couldn’t make in c, ended up doing it in c++. Can’t say that the other video was bad - it gave me inspiration and motivation to find my way. This video is not different, but I really enjoyed the quality of it. I was able to follow it no problems. Great stuff you are doing.
Thanks for this!
Awesome
Amazing video
Love your style - subbed!
My C++ learning was stagnant. In order to learn C/C++ in depth, I turned to learning Rust. Now after watching your video, I found that these best practices are used by default in Rust community. I think This is the benefit of learning a modern language
Rust is an entire language where a linter wouldve been sufficient lol
You should keep in mind that different types in C have different alignments when allocating memory, and that even though your code will work with or without taking alignment into account, misaligned memory accesses can degrade performance. Awesome video tho
whhat do you use to make your videos?
And to think all I ever did was a Snake game in C for the DS... imagine being able to use something other than c or c++ for the DS...
Incredibly cool stuff. Makes me want to take another crack at writing a compiler.
where you learn this advance hands-on project using C++. would mind to suggest me some playlist or books ?
cool video! really like the goofy stickman guy
isn't odin's syntax still c-style? not necessarily exactly like c, but still in the same c-like camp as opposed to lisps, array-based languages, stack-based languages, haskell, etc?
Only problem I have with this video is the amount of blur added to almost everything containing letters, whether it be code snippets or the illustrations. Made me think I didn't have my glasses on, but other than that, Good video.
This is the video I've been waiting for. Explaining compilers in such depth but in an entertaining way
the same day i start working on a scriptable config language youtube recommends me this video. how convenient, google, how convenient. upd.: forgot to mention that the video is actually incredible, i love when people calmly explain things whilst not making fools of themselves or making me uninterested with a monotone voice.
Stack machine? Porth??
Yesss please do an optimizations video, I'm having such a hard time implementing even simple register allocation and coalescing.
You can do register allocation with graph colouring, registers are used from when a variable enters scope to when it exits, nodes representing the variables are connected to nodes where the scope overlaps, and each color represents one register
I have been working on a project extremely similar to this over the last year. I'm still stuck in frontend-hell, because I decided I wanted generics right out of the gate. It's really cool to see someone elses take on an obscure project like this! Keep up the great content, you just earned yourself a new sub!
Any particular reason why you didn't use llvm as backend infrastructure?
Building a backend myself was the main reason for the project, the DS thing was just a random thing I decided to target :D
@@voxelrifts fair enough
i’ve finished my school “building compiler” project, so watching your video it’s cool seing other people do it better than me. our teacher purposly ignored AST, so we used some kind of RPN, i’m not sure how it’s called in English. also, for globals we used Type Identifier Trees. they’re basically pointer machines, that tracks global variables, functions and other stuff. also, your content made me want to improve my own project. thx for great video!
How can one ignore an AST? xD
@@shadamethyst1258 definitely a valid thing to do and probably what I'm going to end up doing as well. Just parsing directly to a graph structure is fairly common
Can i port Temple OS in this
maybe now you make rocompilation tool from bin to your language?
This chanel just keeps improving. I would watch a longer video of u made 1😊
Great video just wish you didnt use bloom on everything it killed the bitrate
Great video! I myself have written a few lexers and partial parsers, so I can imagine how hard it must have been!
very nice, Odin/Jai declaration syntax (I know this is much older than these languages) is great, easy to parse and to read, it's a win-win
amazing video. i am excited for the next one
Ah interesting. I feel you on the "Let's just turn this AST directly into the output". Currently in the middle of refactoring a compiler to have an optimization step & IR.
Great watch! Keep it up
The "name : type = value;" syntax was first used in Jonathan Blow's Jai language, and he got the idea from Sean Barrett. Odin copied from Jai.
I thought it came from a much older language actually, I only said odin here so that people can go and try it themselves. Should've mentioned jai too
It was actually first used in Newsqueak by Rob Pike. Rob Pike beat all of us. Sean Barrett just reinvented it.
@@GingerGames yeah that's what I heard too. I actually had a paragraph in the original script re newsqueak, but it was far too tangential sounding so I cut it out.
Very nice video! Just wish the code wouldnt get the the bloom filter as it makes it hard to read on smaller screens (phones)
Ah understandable, my bad on that.
@@voxelrifts btw stoked for the part 2 when it comes! Compiler backeneds are complete black box for me so far. I am sure its gonna be great
I don't say this lightly : one of the best compiler/isa/architecture videos I've ever seen. Congrats man
The production quality is incredible for a small channel. Congrats!
Odin uses similar syntax
Compiler go BRRRRRRRRRR!
Whoa, this is an incredible amount of work you put into this! Congrats!!