UPDATE: The tool I described is now live! Check it out on github: create-nes-game
It's almost exactly what I described below, and a bit more. It can also build your game, so no need to stumble over getting cc65 on your path (or compiling it on linux)
It should lower the barrier of entry for newbies, and hopefully also reduce frustration for those of us who know how to do things, but don't care to argue with it.
Original post:
After writing about integration testing on the NES in another topic, I started thinking about other tools the NES ecosystem doesn't have, like code generators.
Spinning up a new ca65/cc65 project is a bit of a pain. There are a lot of examples out there, but they're a little disjointed, and I often end up slapping something together from 3-4 different sources. This has to be a headache for newbies. (I know I struggled, but I also know it's gotten better since then!)
In the javascript ecosystem, this has gotten to be enough of a problem that tools have been made for it. For example in React, there's a tool called `create-react-app` - you run it, you answer some questions, and it gives you a full starter project, with all tools installed. What if we did this for the NES - would anyone use it?
-----
Proposal
create-nes-game - a cross-platform binary that sets up a basic nes project for you.
When you run it, it would ask a series of questions, such as:
- Choose a location to create it
- Choose your mapper from a known list (eg NROM, mmc1, mmc3, unrom, etc)
- Choose # of chr/prg banks based on mapper (128k, 256, etc etc)
- Choose whether to add cc65 support (this would add crt0.asm and a main.c instead of just an assembly hello world)
- If you hit yes to above, it would ask to choose whether to include a library combination such as neslib+famitone2, neslib+famitracker, etc
- Would you like to install an emulator? (mesen, fceux, nintendulatordx?)
- Would you like to create configuration for a CI tool? (circleci, no thanks)
- ca65 configs
- source files for hello world in chosen language (no libraries required)
- a copy of ca65/cc65 in a local directory.
- a build script compatible with your operating system, (windows or linux to start - with no additional requirements like make or cygwin or w/e)
- Any other things required by your choices above
-----
First proof of concept on youtube: https://www.youtube.com/watch?v=3Bm4tVwh8t8
Mapper picker: https://mapper.nes.science
This is a very rough video, but basically shows me booting up a kubuntu vm from a livecd, installing the tool and building a game with some tweaks.