3.4.0 Release: NES Support (and New Book!)#
We’ve added yet another platform to the 8bitworkshop IDE, the legendary Nintendo Entertainment System (NES)!
You can program in both C and 6502 assembler, and there are a ton of examples to get you started.
The IDE lets you write C using the cc65 compiler toolchain. While it has lower performance and greater code size than a well-written assembly program, you can still write a pretty good game in C. We use a fork of Shriu’s NESLib library to interface with NES hardware features, and Famitone to play music and sound.
The IDE also contains a handful of 6502 examples. They demonstrate how to initialize and warm up the PPU, basic display, scrolling, and controller management, and advanced tricks like scanline cycle counting and X/Y split screen.
Open 8bitworkshop IDE
And yes, that’s a Famicom (the original console released in Japan) pictured up there :)
New NES Book!#
We’ve also got a new book, “Making Games for the NES”! (Kindle Edition) (Print Edition)
You’ll learn all about programming the NES – hardware, PPU video, sound and music, scrolling, color palettes, split-screen effects, and more. Follow along with the IDE, which has lots of examples in C using the NESLib library.
There’s also a few chapters about 6502 assembly programming on the NES. We’ll cover the basics of nametables, sprites, and controllers, and some advanced topics like timing the PPU line-by-line.
- Chapter List
The NES * The 8bitworkshop IDE * Quickstart * Binary Numbers * Memory Maps * The PPU * The Build Pipeline * Nametables * Attribute Table * Scrolling * Sprites * Metasprites * Controllers * VRAM Buffer * Split Status Bar * Random Numbers * Reading VRAM * PPU Mask Register * Virtual Bright * The APU * Simple Music * Binary-Coded Decimals * RLE Encoding and Title Screens * Famitone Music * Offscreen Scrolling * Main Loop vs. NMI Handler * Climber: Platform Game * Advanced Mappers * CHR RAM * Sprite Starfield * The 6502 CPU * Hello NES Assembly * Drawing Text in Assembly * Scrolling in Assembly * Sprites/OAM in Assembly * Controller Reading in Assembly * Bank Switching * IRQs * Split Screen X/Y Scrolling * Line-by-line Scrolling * NES Dev Tools
Project Gallery#
We want to show off creations from homebrew authors. So we’ve got a new Projects gallery! Click on a project to see the emulated ROM in action, and press the button to open the source code in 8bitworkshop.
3.4.0 Release#
The new 8bitworkshop IDE 3.4.0 release has lots of other new features:
- GitHub Integration
You can now publish your project to GitHub! The IDE creates a separate workspace where you can work on multiple files in isolation. When publishing, we’ll put a link in the README that lets others open your project in 8bitworkshop with a single click. There are some limitations, though. You have to put all your source files at the root level. There’s also no way to resolve conflicts or merge – so be careful when you pull new files, as it will replace all your local files with the remote versions.
- Asset Editor
You can edit palettes and bitmaps right in the IDE! Changes are propgated back to your source code. This requires special comment tags be added.
- Memory Map
See a helpful overview of the memory space for your platform. Click on a memory segment to open it in the Memory Viewer.
- Profiler
Open the Profiler view to see a scanline-by-scanline account of what code is executing.
- Gamepad Support
Most platforms support one or two gamepads, just plug them in and start playing. We haven’t tested with very many besides these, so your mileage may vary. We’ll also show keyboard controls when the emulator is running.
- HTTPS Support
We’ve moved to HTTPS as the default for new users. We can’t make it the default for existing users, as your local files edited under HTTP would no longer be available. You’ve got an option in the File menu to move to HTTPS if you’ve saved all your local files elsewhere.
- Verilog Updates
Support $readmemb and $readmemh. Icons for Scope view. Ctrl-click the simulated CRT to pause on a scanline. New “Verilog VGA” platform which simulates a VGA monitor (it’s kind of slow because it runs at 25 MHz vs. ~5 Mhz.)
- Minor Features
New Bootstrap-y dialog boxes. We show cycle counts when editing Z80 assembler. More debug info. Nicer break expression dialog. New focus ring for the emulator.
- Fixed bugs
No more disappearing first line of the editor. Fixed debugging in listing view. No more segment names in Memory Viewer. Better DASM listing/error parser. Fixed some debugger issues.
- No more
local/
paths We used to prepend
local/
to new files, but we don’t anymore. This is why you now seelocal/xxx
on all of your files. If you don’t like it, you can rename them and remove thelocal/
prefix. Or publish your project to GitHub and it’ll be moved to its own separate area.
Okay, that’s it for now. Go write some NES games!