- This is just an excuse to talk about Roslyn
- Allow the NES to be programmed with C#
- Visual Basic is outside of the scope
- Running C# on the NES CPU is a far-away target
- Showcase Roslyn's flexibility
- 1337 Internet points, of course
- Exemplify tailoring Roslyn to a extremely specific business use case
- Customizing Roslyn to restrict ilegal operations for the NES CPU
- Providing a NuGet Class Library that performs equivalent operations as the NES CPU, PPU and APU components
- Desktop Direct2D/OpenGL/XNA backend
- WebAssembly Canvas backend
- Providing software re-implementations of forbidden/unsupported operations on the NES with valid .Net calls
- Compiling C# to the NES CPU
- Circuitry
- Registers
- Memory
- Instructions
- Basic CPU Loop
- "Hardware Instructions" vs "Implemented in Software"?
- C# Language,
- BCL, The Stage for the Actors
- Roslyn, Costumer Extraordinaire
- MSIL, Playwright
- RyuJIT, Director
- .Net Native, Anti-Director
- Tending the ASCII seeds
- Lexeme extraction
- Syntax analysis
- The Forest for the Trees
- Code representation inside Roslyn, ASTs
- Different kinds of Roslyn AST Nodes
- Preparing the shipment
- Producing MSIL
- This is NOT dotNet, this is C#
- Garbage Collection
- Threading
- Possibly more?
- AST interpretation down to C or ASM instructions - C# Transpiler
- MSIL recompilation with LLILC
- Continuing the work of the .NET Micro Framework
- Code analysis makes Roslyn reject valid C# code that can't run on the NES