The point of this pet project is to:
- Learn 6502 assembly
- Learn 3D graphics programming
- Implement a 3D engine in 6502 assembly
Below are a sea of notes and ideas to do so.
If you're looking for order, come back in a few months (:
- Best tutorial ever, learn 6502 assembly in one sitting: Assembly In One Step.
- Easy6502. Good explanations!
- Extensively commented opcode list.
Start with the Easy6502 emulator. Then move on to 8bitworkshop. Lastly, build a local dev environment.
- See the Snake game from Easy6502 above. Re-implement it from memory, fixing the bugs discussed in this gist: https://gist.github.com/wkjagt/9043907
- Run it locally: https://github.com/skilldrick/6502js
- Fun fact: I helped! 🎉 skilldrick/6502js#9
- Learn Bresenham's line drawing algorithm.
- Implement it from memory in Go.
- Implement it for 6502, either NES or 6502js.
- Implement it from memory on the NES.
- Implement Snake on the NES.
- Implement 3D tutorial from Coding Train in Go.
- Implement 3D tutorial from Coding Train on the NES.
- Implement 3D engine from javidx9 in Go.
- Implement 3D engine from javidx9 on the NES.
- Look into ray casting.
Extras:
- Solve Project Euler puzzles in 6502
- Re-implement all of these: https://www.youtube.com/playlist?list=PLB_ibvUSN7mzUffhiay5g5GUHyJRO4DYr
Ordered by complexity. Go through them all.
- Implementing Factorial in 6502
- Coding Algorithms
- 6502 Coding Algorithms Macro Library
- Macros.
- Project Euler.
- Learn Multiplatform 6502 Assembly (ChibiAkumas)
Go through them all.
Tutorials:
- NES Development Day 1
- Nerdy Nights.
- CA65 port for Nerdy Nights. (Broken?)
- GBA Guy.
- Famicon Party.
Watch and learn:
- ChibiAkumas channel.
- Tyler Barnes channel.
Sample projects:
- A minimal NES example using ca65
- Nova The Squirrel: an open source NES platformer game
- NESASM Hello World.
- Reference.
- Raycaster demo.
- Mesen.
- Link: https://www.mesen.ca/
- Fceux. It has no debugger on Linux! Emulate with Wine.
- JSNES.
- Nesicide.
- The Games That Pushed The Limits Of The NES
- The 10 Best NES Games
- Double Dragon
- Elite
- Solstice
- Metal Gear
- Rad Racer
- Cosmic Epsilon
- WorldRunner
- Marble Madness
- Snake Rattle 'n' Roll
- Super Glove Ball
- Faceball (GB)
- Zen - Intergalactic Ninja
- Destination Earthstar
I'm Too Young to Die:
- Bresenham line drawing:
- 2D Graphics Algorithms:
Hurt Me Plenty:
- Matrix Multiplication for 3D Rendering (The Coding Train)
- 3D Rendering with Rotation and Projection (The Coding Train)
Ultra-Violence:
- Code-It-Yourself! 3D Graphics Engine Series (javidx9)
Books:
- Fundamentals of Computer Graphics (Marschner & Shirley)
- Line drawing routines programming: a different approach. 6502/6510 assembly implementation on the Commodore 64
- Developing a 3D-Demo for the Apple ][
All of them suck.
Interesting:
- BBC Micro emulator.
- 8bitworkshop.
- Ghidra loader for NES.
- Article: "Debugging 6502 Assembly Doesn't Have to be Awful"
- clever-disasm
To take matters in your own hands:
- Something that looks good.
- Writing a debugger.
- Tiled map editor.
- PrincessEdit.
- InfoSec NES.
History:
- Fabien Sanglard's books about the Doom and Wolfenstein 3D engines.
- Doom: http://fabiensanglard.net/gebbdoom/
- Wolfenstein: http://fabiensanglard.net/gebbwolf3d/
- The Making of Prince of Persia
6502 trickery:
- Dirty tricks 6502 programmers use
- List of 6502 bugs. Are they present in emulators??
- Dirty Assembly Tricks in NES Assembly
- 6502 assembly optimisations
- 6502 arithmetic and why it is terrible
Next steps:
- SNES
- A Comprehensive Super Mario Bros. Disassembly
- x86
- x86 assembly book:
- x86 assembly programs: