This page is a mirror of Tepples' nesdev forum mirror (URL TBD).
Last updated on Oct-18-2019 Download

dev tools + environment?

dev tools + environment?
by on (#20853)
this has probably been asked before, but lets see what people are using these days. i'm just starting to get into nes dev, i'd like to know peoples toolsets, chains, solutions for building your games.

explanations why you use them are a good thing, links to the resources is also a plus.

i know of the listings of pc programs (i use a pc) on nesdev, i'm not just looking for whats out there, but what tools used in conjunction are successful for _you_ as a developer, and why i might want to use the same toolsets or toolchains.

thanks!

-bay

by on (#20855)
I use a 200mhz dev pc for most things, small form factor with parallel and serial ports moved to the front for ease of access. A copynes works great for things, although I still need to build a devcart for it. I may just get bunnyboy's cart when it becomes available.
As for the programming itself, I just use a text-editor. Haven't done too much NES programming due to a lack of free time though.

by on (#20859)
I use a simple text editor (vi), fce ultra, and wine (to emulate nintendulator and yy-chr) on my Dell box running Linux. This has worked well for me. I have an eprom burner but am waiting until I write something worth burning before I give that a spin. Like everyone else here .... time is an issue.

by on (#20867)
I use ConTEXT (freeware programmers text editor), quite a step up from using edit.com in a DOS window, heheh.

I use cc65 (CA65 and LD65) for assembling, and I rather like it. Lots of features, I've played with it's C compiler a bit too and that actually works (just don't use the NES library, it's totally broken on the hardware but does work in FCEU).

I use Tile Molester for editing and importing tile graphics. For editing single nametables, I still often use NSA (running in DOSBox.. heheh) out of habit, but 8name by tepples is very usable too.

For testing my stuff I use an EPROM emulator (a really old 8kB through 512kB one, TurboROM by Parallax). Set me back a couple hundred bucks (plus a little bit more to build a 32-pin DIP adapter cable), but I was desperate and I acquired that long before buying an EPROM programmer. Definitely was worth it, but software emulators like Nintendulator are about good enough to where testing there is fairly safe.

Very cool to hit F9 in ConTEXT, wait for the LED to turn green, reset my NES, and have my program running just like that.

I've also made a devkit called Squeedo. It's a Flashcart that connects to the PC's RS232 port. I've been meaning to put the thing into production, would help if I had some inspiration through coders that want to use it's special features (on-board reprogrammable PIC Microcontroller, lots of WRAM and CHR-RAM, 4-screen nametables). Like the ROM emulator, it's greatly convenient since you just need to press a couple buttons to reprogram it. I've developed little with it though, besides the Squeedo BIOS itself and some really nifty test programs.

by on (#20875)
Apart from the usual stuff (assemblers and emulators) mentioned above, there are also the level map editors and other game-specific stuff.

It's good that you have some programming experience to build tools to help you on those areas, as each game is a different project and there can't be a "generic level editor" that can be used for all projects.

It is possible to use the NES as the platform for your tools (if you feel comfortable with the 6502 more than anything else) to a certain point. I think Celius has made a tile editor and a level editor that run on the NES itself, and any data to be saved is sent to SRAM, which, in emulators, is conveniently saved to a separate file.

by on (#20879)
I've actually been considering working towards an FDS-based development environment now that I've got FDSLoadr working. I'd have to get a Famicom keyboard and an actual Famicom rather than my current Famiclone (since the keyboard plugs into the expansion port,) but it'd be rather nice to have a full development environment running on actual hardware.

by on (#20910)
thanks for the responses thusfar :D

going specifically into assemblers and linkers, what are the advantages for NES development in any of the assemblers? i've look at DASM briefly as well as cc65, i know there are more out there.

it's in my understanding that only a generic 6502 assembler is needed since we're dealing with 6502 opcodes and accessing the NES specific functionality via registers. low level programming is somewhat exciting for me to think about, i've not worked purely with ASM since college and some rather obscure debugging projects professionally.

i'm primarily a c/c++ programmer, all my custom tools will probably be written in those. it would be cool to create tools on the NES for the NES, however i'm not going to be at that level of 6502 and NES knowledge for awhile.

i also feel somewhat that the limitations of the NES might be constrictive to development for the NES. i mean this in the case of the PPU limitations for a toolset, maybe i'd like to only have to think of the limitations of the NES in logic inside a tool rather than dealing with the limitations directly while writing the tool on actual NES hardware :x

Memblers wrote:
Very cool to hit F9 in ConTEXT, wait for the LED to turn green, reset my NES, and have my program running just like that.


this is exactly what i'd like to be doing, as well as stepping through game via the hardware. i'm hoping copyNES allows me to do this sufficiently. programming in emulators is ok, but i like to be interacting with the hardware directly.

Memblers wrote:
I've also made a devkit called Squeedo. It's a Flashcart that connects to the PC's RS232 port. I've been meaning to put the thing into production, would help if I had some inspiration through coders that want to use it's special features (on-board reprogrammable PIC Microcontroller, lots of WRAM and CHR-RAM, 4-screen nametables). Like the ROM emulator, it's greatly convenient since you just need to press a couple buttons to reprogram it. I've developed little with it though, besides the Squeedo BIOS itself and some really nifty test programs.


this sounds very cool, i'd like to hear of some ideas you have for that PIC onboard!

i've seen several builds of FCE ULTRA, some with debugging tools and extensions to what was originally built. do you find these tools useful? does nintendulator provide any advantages over FCE ULTRA?

tokumaru wrote:
Apart from the usual stuff (assemblers and emulators) mentioned above, there are also the level map editors and other game-specific stuff.


i'd like to hear about tools that you guys have made for your games/NESdev that aren't part of a global distrobution. anything that you have made that could be useful to me or someone else? any tools you'd be happy to share and/or let me extend and customize?

cheers,
-bay

by on (#20913)
bay wrote:
thanks for the responses thusfar :D

going specifically into assemblers and linkers, what are the advantages for NES development in any of the assemblers? i've look at DASM briefly as well as cc65, i know there are more out there.


I used DASM for a while, and quit because it didn't have the .incbin command. Having to converting binaries to text just seemed.. dumb.

One thing I like about cc65 is that it's still being maintained by the developer (who seems to actually care about it, even), there's an mail list, and it's just got more features than I'll probably ever get around to using.

WLA-DX is another popular one, looks cool. It supports various processors though, and some of the conventions for using 6502 in it looks annoyingly awkward to me (and are kinda non-standard).


Quote:
Memblers wrote:
Very cool to hit F9 in ConTEXT, wait for the LED to turn green, reset my NES, and have my program running just like that.


this is exactly what i'd like to be doing, as well as stepping through game via the hardware. i'm hoping copyNES allows me to do this sufficiently. programming in emulators is ok, but i like to be interacting with the hardware directly.


Yeah, it's pretty nifty to be able to step through code with CopyNES. I haven't used it very much, but that's mostly been due to parallel port problems with my PC.

Quote:
this sounds very cool, i'd like to hear of some ideas you have for that PIC onboard!


My favorite thing I've done with it so far is the sound synthesizer I wrote. Holds waveforms in RAM (so they can be modified by the NES and/or PIC), takes frequency and volume settings from the NES and outputs the samples to the NES with an IRQ so the NES can play it through it's DAC ($4011 register). It does this for 4 channels, and sounds very nice.

PIC can be set to do some automatic CHR bankswitching. Counts scanlines, NES CPU cycles, has it's own 10Mhz timer, and can generate IRQs to the NES. It's an 18F PIC too (18F4525, to be exact), so it has an 8x8 multiplier in hardware so some fast math stuff should be possible.

It'll do pretty much anything you want it too, heheh, and it has a parallel port that sits on the NES CPU's data bus (with some limited addressing capability - enough to be useful), so it communicates fairly well with the NES, too.

Quote:
i've seen several builds of FCE ULTRA, some with debugging tools and extensions to what was originally built. do you find these tools useful? does nintendulator provide any advantages over FCE ULTRA?

Personally, I found the debugger in the standard version of FCEU to be more useful than the one in the FCEUXD version.

Nintendulator is highly accurate, and also has some unique features in the debugger, like being able to see the current scanline, CPU cycle, and PPU status (hblank, vblank). Very handy stuff when writing tricky timed code.

FCEU isn't too accurate, really, but it's still the emu I use the most. It'll run any working code just fine, and some non-working code sometimes.

by on (#20914)
Memblers wrote:
FCEU isn't too accurate, really, but it's still the emu I use the most. It'll run any working code just fine, and some non-working code sometimes.


I'll write something and run it through FCEU just to see if it works @ all. Once I'm done with the project (and know it works on FCEU) I'll test it out on Nintendulator to see if I get it's blessing. If it works there chances are pretty good it will work on real hardware.

by on (#20930)
FCE Ultra is my favorite games-playing emulator, but I've had it run VRAM-write code that doesn't work on a real system without problems, so YMMV in regards to accuracy.

by on (#20936)

by on (#21023)
kevtris has informed me that my copynes is on the way, which spells a w e s o m e.

once i get that up and running i'll be sharing my experiences setting up my dev environment.

thanks for the input thusfar!