Hmmm. Actually it doesn't seem to be that simple (unless it is really a GD image, in which case the data are really just dumped ROM images). I've tried replacing the PRG and CHR files in a NROM conversion (Tennis) and it didn't really work, so unless I've done something wrong, I think the developers actually needed to apply minor modifications to their games for the conversions.
Eventually I got my small demo to work (I've uploaded it with source
here), but I've found several things that should be noted:
1. As the FDS BIOS has already initialised the RAM, PPU, etc. stuff, so you need not do that in your start-up/reset code. In fact, you should NOT do that, because by clearing all the RAM you may have cleared some of the RAM addresses that are managed by the BIOS (like some of the reserved ZP locations). You should only clear locations of your game variables, etc. that are mandatory during a reset. (You may even need to relocate some of the game variables in case they coincide with BIOS reserved addresses, but this rarely happens I think.)
2. As the FDS BIOS occupies $E000-$FFFF, so you cannot load your PRG data to $C000-$FFFF any more (for a NROM-128 game). What I've seen in NROM conversions was that they moved the PRG data 8kb back to the front, i.e. for a NROM-128 game the PRG was loaded to $A000-$DFFF instead, which required the codes to be reassembled (or you need to patch the addresses of the original PRG data). This also made the "user" reset/nmi vectors to be located at $DFF? instead of $FFF? .
BTW: I think there is a mistake in the FDS article of the wiki (unless I misunderstood it). It mentions that we clear bit 3 of FDS Control ($4025) for horizontal mirroring and set it for vertical mirroring, but it seems to be the opposite. This gave me headaches in making my stuff to work.