nes-starter-kit: A Quickstart guide for homebrew in C (WIP)

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems. See the NESdev wiki for more information.

Moderator: Moderators

Would you use nes-starter-kit?

Yep
9
35%
Nope - assembly or bust!
4
15%
Nope - NESMaker is more what I'm looking for...
0
No votes
Nope - I prefer do things my own way
10
38%
Nope - Some other reason
3
12%
 
Total votes: 26

cppchriscpp
Posts: 102
Joined: Fri Dec 27, 2013 4:28 pm

Re: nes-starter-kit: A Quickstart guide for homebrew in C (W

Post by cppchriscpp »

I haven't touched on this topic in a while, but the project is very alive! I made the first real "release" of this a couple weeks ago. I've got a backlog of things I'm changing and fixing, but it's more ready for prime-time now.

I also created a game for the most recent Ludum Dare using it, partly as a proof of concept. I'm pretty happy with the results

Image

Check it out here

example game source
Last edited by cppchriscpp on Fri Jan 26, 2024 10:05 pm, edited 1 time in total.
na_th_an
Posts: 558
Joined: Mon May 27, 2013 9:40 am

Re: nes-starter-kit: A Quickstart guide for homebrew in C (W

Post by na_th_an »

Great job, congratulations. Will give it a proper look later!
User avatar
Banshaku
Posts: 2417
Joined: Tue Jun 24, 2008 8:38 pm
Location: Japan
Contact:

Re: nes-starter-kit: A Quickstart guide for homebrew in C (W

Post by Banshaku »

I did a quick test of the game. The game itself if very simple but taking into consideration that it was done during a game jam in less than 48h then the result is quite impressive.

Good job!
slobu
Posts: 276
Joined: Tue Jul 12, 2011 10:58 am

Re: nes-starter-kit: A Quickstart guide for homebrew in C (W

Post by slobu »

A bit late to the topic but I thought I'd throw out my two cents being an eternal newbie.

This is at first glance a weird niche. Not "easy" enough for the NES Maker crowd and not advanced enough for the asm crowd.

Your target level of end user needs a pre-configured IDE. Maybe NESICIDE will be a good fit?
https://knob.phreneticappsllc.com/nesicide/
cppchriscpp
Posts: 102
Joined: Fri Dec 27, 2013 4:28 pm

Re: nes-starter-kit: A Quickstart guide for homebrew in C (W

Post by cppchriscpp »

Hello, and thanks for taking the time to take a look and make suggestions!

I have to admit; it had been a very long time since I last looked at nesicide... it really didn't seem applicable to this kind of project way back, and I didn't realize it was still being actively developed. From a quick look it has evolved a lot, and honestly would have been a good fit for this project if I'd used it from the start. It seems powerful and somewhat easy to pick up for many tasks.


Unfortunately, it doesn't seem trivial to switch to it this late in the game - there is a lot baked into my makefile and the various guide chapters that would take significant effort to convert over. I could probably do it, but I have to admit I don't want to spend the time, as a consumer of the kit. Setting up the tools isn't quite as smooth as I'd like, but I don't feel it's disastrous, either. I also think they work pretty well together once you have everything installed. There isn't much configuration needed; VS Code's workspace settings help a lot. (That said, I'm extremely biased as the developer, and welcome other opinions!)

There are a lot of tradeoffs involved, and I am not sure yet if they are worth it.

-----

So far, here's a list of pros/cons I can see to such a change:

Pros
  • Lowered barrier of entry
  • No need to install or configure famitracker
  • Reduced requirements of unix tools (make mainly)
  • Some elements from tools zip can be removed
  • Built in emulator and debugger seem nice from a quick glance (wasn't able to get it working with a non-trivial project yet though)
Cons
  • Nesicide is a bit crashy on my machine (may be a configuration issue on my end) - I have hit multiple instances where it stops responding to all clicks and I have to force kill it.
  • Nesicide requires GnuWin32 and wget; need to provide instructions for those prior to install of ide
  • Graphics editing tools are powerful, but quite unclear to a newcomer. (The tool I use today kinda forces your hand a little harder, which I found actually helped educate me. Would be curious how others feel)
  • SFX Editing is a bit less intuitive, since with the current setup you would have to add a new "music" file. (Minor)
  • Build process becomes a bit less transparent/more complex with the loss of the makefile
  • Lose built-in git controls (and other minor features, like styles) from VS Code
Unknown/Other Notes
  • Don't know how to set up map conversion and similar utilities
  • Unknown amount of effort detailing how to switch rom/mapper types
  • How's the accuracy of the built-in emulator?
  • Nesicide's default C project doesn't compile
  • New version of cc65 built into nesicide? What updates are required to deal with this? (Note: I've been meaning to make this move anyway)
  • Famitracker is almost more confusing in this setup, since you have full control of a music file/etc, and it isn't really clear where it's hooked in. Still need to manually run exports, etc, which may not be as clear when the editor is built in. (Unless this can be automated through nesicide, which it maybe can.)
  • There's a lot more I haven't detailed here; both pros and cons I'm sure. This is a very big change!
-----

The short version

This seems like it could help the project, however right now I am unsure if the benefits outweigh the cost of the change, and the potential loss in functionality. I still need to toy with nesicide a lot more to figure out how to use it to its full potential, either way. Thank you for raising this idea!

(ps: If anyone has actually set up nes-starter-kit and tried to use it per the guide, or even tried to set it up and failed, I really want to hear from you! No one has directly told me they have tried to use this and provided feedback yet.)
slobu
Posts: 276
Joined: Tue Jul 12, 2011 10:58 am

Re: nes-starter-kit: A Quickstart guide for homebrew in C (W

Post by slobu »

I appreciate the consideration (and detailed post).

It might take awhile but I'll attempt to go through your process for installing and configuring Visual Studio.
User avatar
cpow
NESICIDE developer
Posts: 1097
Joined: Mon Oct 13, 2008 7:55 pm
Location: Minneapolis, MN
Contact:

Re: nes-starter-kit: A Quickstart guide for homebrew in C (W

Post by cpow »

cppchriscpp wrote:So far, here's a list of pros/cons I can see to such a change:
Cons
  • Nesicide is a bit crashy on my machine (may be a configuration issue on my end) - I have hit multiple instances where it stops responding to all clicks and I have to force kill it.
Any chance I can get reproduction steps or a sample project or something to try to reproduce your issue? What is your machine specs?
cppchriscpp wrote:[*] Nesicide requires GnuWin32 and wget; need to provide instructions for those prior to install of ide
GnuWin32 comes with the package. wget is only required to *build* nesicide from source as it fetches the dependencies tarball.
cppchriscpp wrote:[*] Graphics editing tools are powerful, but quite unclear to a newcomer. (The tool I use today kinda forces your hand a little harder, which I found actually helped educate me. Would be curious how others feel)
I would appreciate any ideas on what is unclear and how to make it clearer.
cppchriscpp wrote:[*] SFX Editing is a bit less intuitive, since with the current setup you would have to add a new "music" file. (Minor)
SFX editing isn't supported yet. Only integrated Famitracker. I haven't come up with a useful UI for creating effects. I intended something similar to Garry Kitchen's Game Maker for C=64's Sound Maker.
cppchriscpp wrote:[*] Build process becomes a bit less transparent/more complex with the loss of the makefile
This is evidence of the battle for control. Newcomers generally don't want to have to worry about makefile details. Experts don't want to be completely cut off from manual makefile modification.
cppchriscpp wrote:[*] Lose built-in git controls (and other minor features, like styles) from VS Code[/list]
Sounds like a job for libGitWrap. :)
cppchriscpp wrote:Unknown/Other Notes
  • Don't know how to set up map conversion and similar utilities
  • Unknown amount of effort detailing how to switch rom/mapper types
Not sure how I can help with these?
cppchriscpp wrote:[*] How's the accuracy of the built-in emulator?
Fairly good, though not perfect. I was on a test passing binge for quite a while.
cppchriscpp wrote:[*] Nesicide's default C project doesn't compile
What errors?
cppchriscpp wrote:[*] Famitracker is almost more confusing in this setup, since you have full control of a music file/etc, and it isn't really clear where it's hooked in. Still need to manually run exports, etc, which may not be as clear when the editor is built in. (Unless this can be automated through nesicide, which it maybe can.)[/list]
I am *intending* to make the music import process seamless but haven't got there yet. For example, when you build your project it would export the music files and include them in the build automatically.

I am interested in helping out if I can as this is ultimately the goal I'd had in mind at the beginning -- a full featured tutorial project that would teach newcomers. Rather than a blank slate "do what you want and oh by the way here's some minimal (no offense, tepples) examples.
cppchriscpp
Posts: 102
Joined: Fri Dec 27, 2013 4:28 pm

Re: nes-starter-kit: A Quickstart guide for homebrew in C (W

Post by cppchriscpp »

I'll be happy to have that discussion in a topic about nesicide, however I would prefer keep this topic about nes-starter-kit. I don't currently have plans to move IDEs. Feel free to post a link for anyone interested, though. (And to remind me to post!)

Thanks for the detail you added. One semi-relevant clarification I'll provide: The stuff in Unknown/Other is stuff I would need to look into if I decided to pursue this effort further. I time-boxed my investigation, and those are questions I did not get to answering for myself.
Post Reply