Posts for jsor

Experienced Forum User
Joined: 12/3/2005
Posts: 20
Derakon wrote:
Apparently the Windows version of FCEU has options for recording movies from power-on vs. from a save-state. I can't figure out how to record a movie from power-on for my version, though; it seems like regardless of what I do it assumes a savestate.
Yeah, this was kind of lame. I think I figured out how to get fceu to record from power-on (see the edited topic post), but now I have to figure out how to properly fix the wip I had already started.
Experienced Forum User
Joined: 12/3/2005
Posts: 20
Derakon wrote:
Pause and Frame Advance were mapped to '\' and right-control on my default compile on OSX.
Oh, you're right. I'm not sure how I didn't see it in the source. I'll fix that on the list.
Post subject: Linux/Windows fceu differences
Experienced Forum User
Joined: 12/3/2005
Posts: 20
The linux version of fceu is not exactly the same as the windows version. I would like to keep a list of their differences in this thread, mostly so I can list fixes or workarounds for the linux version if they exist. Note that when I talk about the 'linux' version, I'm including BSDs, OSX, and any other unix variant that fceu can be compiled and run on. Unless otherwise noted, all references to fceu refer to version 0.98.28. Some links, for convenience: Remapping Controller Input To change controller key mappings, start fceu with the inputcfg option:
fceu -inputcfg gamepad1 somerom.nes
Because of how fceu parses the command line, you do have to include some text after any options; it doesn't necessarily have to be a rom filename. Configuring 'gamepad1' will set controls for the first controller. Other options are gamepad2, gamepad3, gamepad4, powerpad1, powerpad2. When starting fceu with inputcfg, you will be prompted to map each button up to four times, so you can enter multiple keys for each controller input. If you don't want to map multiple keys, just repeat a key and it will move on to the next input. Note that fceu does support auto-fire for the A and B buttons, despite what the Features wiki page suggests. You can not remap keys for emulator functions from the command line, only for controller input. Changing the keys for emulator functions has to be done in the source code. Input Display There is no way to toggle input display because no key is mapped to this function. This is easy to fix in the source code. Add this line to src/drivers/pc/input.c around line 196 and recompile.
if(keyonly(COMMA)) FCEUI_ToggleInputDisplay();
Now Comma will toggle input display. Frame Count Display Toggling frame count display is mapped to Backspace in linux, not Period as in windows. If you want to make linux fceu work like windows fceu, change line 198 in src/drivers/pc/input.c and recompile.
- if(keyonly(BACKSPACE)) FCEUI_MovieToggleFrameDisplay();
+ if(keyonly(PERIOD)) FCEUI_MovieToggleFrameDisplay();
Now Period will toggle Frame Count Display and Backspace will do nothing. Pause and Frame Advance Frame Advance is mapped to Right Control rather than Backslash. Instead, Pause is mapped to Backslash. If you want to bring linux fceu more in line with windows fceu, you can swap the keys for Pause and Frame Advance by changing lines 200 and 201 in src/drivers/pc/input.c as follows:
- if(keyonly(BACKSLASH)) FCEUI_ToggleEmulationPause();
- if(keyonly(RIGHTCONTROL)) FCEUI_FrameAdvance();
+ if(keyonly(RIGHTCONTROL)) FCEUI_ToggleEmulationPause();
+ if(keyonly(BACKSLASH)) FCEUI_FrameAdvance();
I think Pause may be a menu-only setting on default Windows fceu (this is based on source-exploring; I don't have a windows machine available to test this), so make your own choices about which key is the 'correct' key for pause. Fast Forward Fast Forward doesn't exist in the linux version. I don't see an easy/obvious way to fix this. Changing the speed with '-' and '+' works, but of course this is not exactly the same thing. Auto-hold The Features page on the wiki suggest that linux has partial auto-hold support. If this is the case, I don't know how to use it. Start Recording from Power-On By default, linux FCEU seems to be recording from an embedded "quicksave" snapshot. I don't know exactly what this means, but the important thing is that it is not recording from Power-On (one of the requirements of this site). To change FCEU to always start recording a movie from Power-On, change line 181 of src/drivers/pc/input.c as follows and recompile:
- FCEUI_SaveMovie(NULL,0,NULL); 
+ FCEUI_SaveMovie(NULL,MOVIE_FLAG_FROM_POWERON,NULL);
After making this change, emulation no longer pauses on the last frame of playback. I don't yet know why this happens, or how this behavior compares to that of windows fceu. Disabling Layers According to the Features page, fceu linux supports disabling layers, but fceu windows does not. I assume this refers to F4 (hide sprites) and shift+F4 (hide background data; i.e. everything that is not considered a sprite). I'm not sure why this wouldn't exist in the Windows version (and this implementation seems less than useful to me anyway), but I'm putting it on this list for completeness. Combos or Macros According to the Features page, Combos and Macros are available in Windows although they are not supported in fceu linux. Export to AVI The Features list indicates that this is built in to the Windows version and partially supported in linux. I really don't know the details. Memory Search I don't know how to do this, or if it's possible in linux fceu.
Experienced Forum User
Joined: 12/3/2005
Posts: 20
Frame Counter is mapped to Backspace by default.
Experienced Forum User
Joined: 12/3/2005
Posts: 20
Derakon wrote:
Right now I'm trying to figure out where the controls are defined so I can change 'em. The source code is not particularly well-commented...
You can change the controls without editing the source by using the '-inputcfg' switch (on linux; presumably osx also):
fceu -inputcfg gamepad1 somerom.nes
That will let you map the keys for the first controller. It allows you to map up to four (I think) keys to each button. This and maybe some other useful command line options are described in the fceu-0.98.28/Documentation/fceultra.html file, in the source distribution (for fceu 0.98.28 at least). Inputcfg doesn't let you change the keys for stuff like loading/saving movies or savestates, though. If you want, you can change some (all?) of those keys by editing this file and recompiling:
fceu-0.98.28/src/drivers/pc/input.c
Look for the KeyboardCommands function. In particular, I recommend adding this line around line 196 of that file:
 if(keyonly(COMMA)) FCEUI_ToggleInputDisplay();
Otherwise, I don't think you will be able to turn on Input Display (on unix systems). Someone correct me if I'm wrong.
Post subject: FCEU recording in NetBSD
Experienced Forum User
Joined: 12/3/2005
Posts: 20
I am trying to figure out how to record a movie with FCEU v0.98.28 on NetBSD 3.1. I can press Shift+F5 to start recording, but this starts recording at whatever point I am at in the game, without resetting the rom. How can I start recording from the very beginning when the rom is loaded? Or am I missing something? Unfortunately, there is a more important problem: FCEU freezes completely about five seconds after I start recording with Shift+F5. Esc and Ctrl+C are useless. I have to send it the KILL signal from the command line. This happens with every rom I've tried. Here is where it gets interesting, though. FCEU does seem to be recording correctly for the few seconds before it freezes. That is, it creates an short fcm file that I can play back without problems. During the playback, I can save state, then load the state I just saved. Of course now I'm recording input again, but surprisingly it doesn't freeze this time! If any Linux users have insights about what is going on here, I would be very interested to hear them. I'm hoping that there is a simple user error on my part rather than strange BSD compatibility problems.
Experienced Forum User
Joined: 12/3/2005
Posts: 20
Probably not the kind of graphs you wanted: Graph of Gauntlet Graph of Snake Rattle & Roll Graph of Jaws Some others, not all labeled. The Metal Gear file is huge. Be careful.
Experienced Forum User
Joined: 12/3/2005
Posts: 20
I've continued working on this for my own interest, and made a more useful program for making subtitles. subtas should be able to handle FCM,FMV,SMV,GMV, and VBM formats, making SRT subs out of them. Single and multi-player movies are both supported. It compiles under netbsd, and presumeably linux, but please let me know if you try it and it won't compile for you.
Experienced Forum User
Joined: 12/3/2005
Posts: 20
Yeah, I guess you're right. I have to admit that a level 99 run is nice to see, too.
Experienced Forum User
Joined: 12/3/2005
Posts: 20
I'd like to see a newgame+ run published, and now that there is a real run, wouldn't it make sense to use that one's sram as the basis of the newgame+ TAS? Otherwise, it's unclear how the game was played the first time through. It might have been a twenty-hour "preparation" game, collecting all the speed and magic tabs and the best armor in anticipation of a quick lavos fight, which would reduce the significance of a "fast" newgame+ run, in my opinion. If we had a run that picked up where hero of the day's left off, it would be clear what the starting situation was, and make the run more impressive I think. This was a good run, though, saturn. I haven't watched through hero of the day's run yet, but would it be possible to use the same strategy with his final inventory?
Experienced Forum User
Joined: 12/3/2005
Posts: 20
schneelocke wrote:
Archive.org is much better. (And for that matter, who can't use BitTorrent, anyway?)
For what it's worth, I can't use bittorrent at all (too many proxies on the ISP's side of things I guess), and the archive.org videos are nice to have available. People on public computers would probably also have difficulty. A little off-topic, it would be great if all the videos with a star could be high priority for getting onto archive.org. It would be nice for first-time viewers, anyway, who might not want to get bittorrent just to see a TAS. Who usually uploads the movies to archive.org?
Experienced Forum User
Joined: 12/3/2005
Posts: 20
Here's an example movie: A Boy and His Blob. The timing isn't quite precise enough (with mplayer-pre7, I don't know about other players) for some reason. Some subs don't go away fast enough, or don't appear at all. Interestingly, these problems don't occur when playing the subtitles from a separate file, but only when playing the subtitles directly out of the MKV. To specify the subtitle track (and adjust a-v correction to improve subtitle sync) in mplayer:
mplayer -sid 0 -mc 0 video.mkv
If you want to compare it to the separate SRT:
mplayer -sub subtitles.srt video.mkv
I never liked the way your frame display works.
I would guess that you're talking about using "sS^v<>" for start select and directions, and I have to agree with you. The subs in the movie above use actual words, but since the font is set by the video player, I don't think there is an easy way to do it monospaced.
Experienced Forum User
Joined: 12/3/2005
Posts: 20
I think there are some other subtitleformats such as .sub that BSPlayer support, though I have no idea which format is the best.
I don't know much about subtitle formats, but SRT looked like the easiest to work with. Take a look at an SRT (I link to some below). They're really simple.
That subtitle file is going to inflate pretty quick.
Yeah, Legend of Zelda turned out to be below average at 89k. Here are a bunch of NES subtitles I made for size comparison:
 SRT   AVI
704K  (71M) faxanadu.srt
349K  (61M) clash_at_demonhead.srt
319K (123M) startropics.srt
313K  (84M) blastermaster.srt
279K  (70M) legacy_of_the_wizard.srt
263K  (69M) megaman3.srt
147K  (43M) super_mario_brothers-long.srt
132K  (58M) bionic_commando.srt
116K  (32M) megaman.srt
 97K  (30M) metroid-short.srt
 89K  (72M) zelda.srt
 88K  (21M) snake_rattle_roll.srt
 85K  (21M) gauntlet.srt
 70K  (18M) zelda2.srt
 60K  (22M) excite_bike.srt
 58K  (63M) metal_gear.srt
 53K   (8M) super_mario_brothers.srt
 27K  (10M) jaws.srt
2.2K   (3M) Monopoly.srt
2.2K   (4M) donkey_kong.srt
Faxanadu has a rather enormous size (over 17000 subtitles!), but is still less than a single megabyte. Added to a 71Mb file, it doesn't seem like much. Most of the subtitles sizes are even less significant (see Star Tropics, Metal Gear). I went ahead and put up the code I'm using to make these, in case anyone wants to mess with it. It only handles FCM files. I put all these SRT files online too. Please feel free to try them out and let me know if they sync up right. Like people have said already, if your video player supports subtitles like this, you should be able to see them with the regular AVIs just by telling the player what subtitle file to use.
What about turning on keypress display during encoding?
Doing it that way would mean that you couldn't turn input display off. I expect it would be an annoyance for those who don't care about seeing the input. Including the input display as subtitles would allow people to turn it on if they want to see it, and not bother everyone who doesn't.
Post subject: Input display as subtitles in MKV?
Experienced Forum User
Joined: 12/3/2005
Posts: 20
One of the reasons I like to watch speed runs on the original emulator rather than as a video file is so I can look at the input to see how some glitches work or whatever. But since MKV can support subtitles, is there any interest in storing the input as a subtitle track for movies published as MKV? I've been playing around with FCM analyzing lately, so it wasn't much work to try this out with a few NES games. I wrote a program that takes an FCM file and outputs subtitles in the SRT format. I've been watching the result in mplayer (specifying the subtitle on the command line) and it looks pretty good. The only video I've tested with is Excite Bike, and during its six minutes, the subtitles appear to stay in sync with the video quite well. File sizes for the subtitles range from about 2.2k (Monopoly, Donkey Kong) to 89k (Zelda), so it would be a pretty negligible increase in file size. I have not actually tried to create an MKV file with embedded subtitles. If anyone is interested testing more and wants the code to generate subtitles, let me know and I'll email it or put in online somewhere.
Experienced Forum User
Joined: 12/3/2005
Posts: 20
Ok, I looked at the existing InputDisplay code, and I'm a little embarrased that I spent so much time writing a patch for an existing feature. Here's the new 'patch'.
diff -NaHudr --strip-trailing-cr orig.fceu-nitsuja-src/src/drivers/pc/input.c fc
eu-nitsuja-src/src/drivers/pc/input.c
--- orig.fceu-nitsuja-src/src/drivers/pc/input.c        2005-12-08 14:02:22.0000
00000 -0600
+++ fceu-nitsuja-src/src/drivers/pc/input.c     2005-12-11 13:35:44.000000000 -0
600
@@ -195,6 +195,7 @@
   if(keyonly(MINUS)) DecreaseEmulationSpeed();
   if(keyonly(EQUAL)) IncreaseEmulationSpeed();
   if(keyonly(BACKSPACE)) FCEUI_MovieToggleFrameDisplay();
+  if(keyonly(COMMA)) FCEUI_ToggleInputDisplay();
   if(keyonly(BACKSLASH)) FCEUI_ToggleEmulationPause();
   if(keyonly(RIGHTCONTROL)) FCEUI_FrameAdvance();
Yeah, it's just one line. Oh well. I learned a lot about the fceu source, so it wasn't a complete waste of time. Also, is there a way that I can become an editor of the wiki? There are a couple things that need updated on the Emulator Tools page, and I seem to be finding more every day or two.
Experienced Forum User
Joined: 12/3/2005
Posts: 20
Hm, I was planning to clean this one up a little (mostly fix it so that it doesn't take over the message bar), but I'll take a look at the windows input display code first. A quick question, in the drivers directory, the linux/bsd port builds with the pc/ directory, but does it build with win/ and NOT pc/ when compiled for windows, or does it use code from both directories? I don't have a copy of the source on this computer, but it seemed like they had some of the same files, so I wasn't sure if changes in drivers/pc/ would affect the windows version at all or not. Also, someone might want to update the Emulator Tools page on the FAQ to say that Input Display is available for windows FCEU. At the moment it says the option is not available at all.
Post subject: FCEU Input Display patch
Experienced Forum User
Joined: 12/3/2005
Posts: 20
I hacked together a quick and dirty input display patch, taking advantage of FCEU_DispMessage. Use -inputdisp x to tell fceu how many controllers' inputs you want to see, 0 is off (like normal). There won't be an option in the windows gui, because I couldn't have tested it if I had tried to put one in, but maybe the command line argument will work. I don't know for sure. I don't know how to generate a good diff, but hopefully this will work well enough. When I tested it, running patch -p0 < patchfile from the fceu-nitsuja-src directory worked ok after I made sure the carrieage returns were correct.
diff -NaHudr --strip-trailing-cr orig.fceu-nitsuja-src/src/driver.h fceu-nitsuja-src/src/driver.h
--- orig.fceu-nitsuja-src/src/driver.h	2005-12-08 14:02:47.000000000 -0600
+++ fceu-nitsuja-src/src/driver.h	2005-12-08 18:14:50.000000000 -0600
@@ -126,6 +126,9 @@
 /* Deallocates all allocated memory.  Call after FCEUI_Emulate() returns. */
 void FCEUI_Kill(void);
 
+/* Set number of controllers to display input of */
+void FCEUI_SetInputDisplay(int a);
+
 /* Enable/Disable game genie. a=0 disable, a=1 enable */
 void FCEUI_SetGameGenie(int a);
 
diff -NaHudr --strip-trailing-cr orig.fceu-nitsuja-src/src/drivers/pc/main.c fceu-nitsuja-src/src/drivers/pc/main.c
--- orig.fceu-nitsuja-src/src/drivers/pc/main.c	2005-12-08 14:02:22.000000000 -0600
+++ fceu-nitsuja-src/src/drivers/pc/main.c	2005-12-08 18:13:15.000000000 -0600
@@ -44,6 +44,7 @@
 static char *soundrecfn=0;	/* File name of sound recording. */
 
 static int ntsccol=0,ntschue=0,ntsctint=0;
+int inputdisp=0;
 int soundvol=100;
 long soundq=0;
 int _sound=1;
@@ -111,6 +112,7 @@
 extern CFGSTRUCT GUIConfig;
 #endif
 static CFGSTRUCT fceuconfig[]={
+	AC(inputdisp),
 	AC(soundrate),
 	AC(soundq),
 	AC(_sound),
@@ -224,6 +226,8 @@
          {"-cpalette",0,&cpalette,0x4001},
 	 {"-soundrecord",0,&soundrecfn,0x4001},
 
+	 {"-inputdisp",0,&inputdisp,0},
+
          {"-ntsccol",0,&ntsccol,0},
          {"-pal",0,&eoptions,0x8000|EO_PAL},
 
@@ -258,6 +262,8 @@
         FCEUI_DisableSpriteLimitation(eoptions&1);
 	FCEUI_SetSnapName(eoptions&EO_SNAPNAME);
 
+	FCEUI_SetInputDisplay(inputdisp);
+
 	for(x=0;x<2;x++)
 	{
          if(srendlinev[x]<0 || srendlinev[x]>239) srendlinev[x]=0;
diff -NaHudr --strip-trailing-cr orig.fceu-nitsuja-src/src/drivers/pc/main.h fceu-nitsuja-src/src/drivers/pc/main.h
--- orig.fceu-nitsuja-src/src/drivers/pc/main.h	2005-12-08 14:02:23.000000000 -0600
+++ fceu-nitsuja-src/src/drivers/pc/main.h	2005-12-08 17:27:57.000000000 -0600
@@ -41,6 +41,7 @@
 extern int srendlinev[2],erendlinev[2];
 extern int NoWaiting;
 
+extern int inputdisp;
 extern int soundvol;
 extern long soundq;
 extern int _sound;
diff -NaHudr --strip-trailing-cr orig.fceu-nitsuja-src/src/drivers/pc/usage.h fceu-nitsuja-src/src/drivers/pc/usage.h
--- orig.fceu-nitsuja-src/src/drivers/pc/usage.h	2005-12-08 14:02:24.000000000 -0600
+++ fceu-nitsuja-src/src/drivers/pc/usage.h	2005-12-08 17:27:10.000000000 -0600
@@ -41,6 +41,7 @@
 -fcexp str	Select Famicom expansion port device.\n\
 		 str may be: none, shadow, arkanoid, 4player, fkb\n\
 -inputcfg s	Configure virtual input device \"s\".\n\
+-inputdisp x	Display input from first x controllers.\n\
 -nofs x		Disables Four-Score emulation if x is 1.\n\
 -gg x           Enable Game Genie emulation if x is 1.\n\
 -no8lim x       Disables the 8 sprites per scanline limitation.\n\
diff -NaHudr --strip-trailing-cr orig.fceu-nitsuja-src/src/fceu.c fceu-nitsuja-src/src/fceu.c
--- orig.fceu-nitsuja-src/src/fceu.c	2005-12-08 14:02:46.000000000 -0600
+++ fceu-nitsuja-src/src/fceu.c	2005-12-08 18:19:39.000000000 -0600
@@ -556,6 +556,11 @@
  return(PAL);
 }
 
+void FCEUI_SetInputDisplay(int a)
+{
+ FSettings.InputDisplay=a;
+}
+
 void FCEUI_SetGameGenie(int a)
 {
  FSettings.GameGenie=a?1:0;
diff -NaHudr --strip-trailing-cr orig.fceu-nitsuja-src/src/fceu.h fceu-nitsuja-src/src/fceu.h
--- orig.fceu-nitsuja-src/src/fceu.h	2005-12-08 14:02:47.000000000 -0600
+++ fceu-nitsuja-src/src/fceu.h	2005-12-08 16:39:46.000000000 -0600
@@ -71,6 +71,7 @@
 	   uint32 SndRate;
 	   int soundq;
 	   int lowpass;
+	   int InputDisplay;
 } FCEUS;
 
 extern FCEUS FSettings;
diff -NaHudr --strip-trailing-cr orig.fceu-nitsuja-src/src/input.c fceu-nitsuja-src/src/input.c
--- orig.fceu-nitsuja-src/src/input.c	2005-12-08 14:02:46.000000000 -0600
+++ fceu-nitsuja-src/src/input.c	2005-12-08 16:56:50.000000000 -0600
@@ -169,6 +169,43 @@
 static INPUTC GPC={ReadGP,0,StrobeGP,0,0,0};
 static INPUTC GPCVS={ReadGPVS,0,StrobeGP,0,0,0};
 
+void FCEU_PrintInput()
+{
+	char inputs[37];
+	char buttons[] = "ABsS^v<>";
+	int x,n;
+	switch(FSettings.InputDisplay)
+	{
+		case 1:
+			strcpy(inputs," --------");
+			break;
+		case 2:
+			strcpy(inputs," -------- --------");
+			break;
+		case 3:
+			strcpy(inputs," -------- -------- --------");
+			break;
+		case 4:
+			strcpy(inputs," -------- -------- -------- --------");
+			break;
+		default:
+			FSettings.InputDisplay = 0;
+			return;
+	}
+
+	for (x=0;x<FSettings.InputDisplay;x++)
+	{
+		for (n=0;n<8;n++)
+		{
+			if (1 & (joy[x] >> n))
+			{
+				inputs[1+4*x+n] = buttons[n];
+			}
+		}
+	}
+	FCEU_DispMessage(inputs);
+}
+
 void FCEU_DrawInput(uint8 *buf)
 {
  int x;
diff -NaHudr --strip-trailing-cr orig.fceu-nitsuja-src/src/video.c fceu-nitsuja-src/src/video.c
--- orig.fceu-nitsuja-src/src/video.c	2005-12-08 14:02:46.000000000 -0600
+++ fceu-nitsuja-src/src/video.c	2005-12-08 16:47:27.000000000 -0600
@@ -182,6 +182,8 @@
         }
 //		if(!movieDrawInAVI)
 	        DrawMessage();
+	if(FSettings.InputDisplay)
+		FCEU_PrintInput();
         FCEU_DrawInput(XBuf);
 }

Experienced Forum User
Joined: 12/3/2005
Posts: 20
Just wanted to let you know that the newest version compiles for me without any problems. I solved my sound problem, too, in case anyone in the future is looking for a solution. For NetBSD, all instances of "/dev/dsp" in drivers/sexyal/drivers/oss.c needed to be replaced by "/dev/audio" (or whatever else is appropriate).
Experienced Forum User
Joined: 12/3/2005
Posts: 20
That was quick on the new version! I had to fix it up a little more to get it to compile: Added another dummy function and changed some types in that dummy section of sdl.c:
void FCEUI_AviVideoUpdate(const unsigned char* buffer) {FCEU_DispMessage("Not implemented.");}
int FCEUD_ShowStatusIcon(void) {FCEU_DispMessage("Not implemented."); return 0; }
DUMMY(FCEUD_AviStop)
add to sdl-throttle.c:
#define fps_table_size          (sizeof(fps_scale_table)/sizeof(fps_scale_table[0]))
This one was a problem that I had before and forgot to mention:
drivers/pc/input.c: In function `KeyboardCommands':
drivers/pc/input.c:269: error: too few arguments to function `FCEUI_SelectMovie'
drivers/pc/input.c:269: error: too few arguments to function `FCEUI_SelectState'
drivers/pc/input.c:270: error: too few arguments to function `FCEUI_SelectMovie'
drivers/pc/input.c:270: error: too few arguments to function `FCEUI_SelectState'
drivers/pc/input.c:271: error: too few arguments to function `FCEUI_SelectMovie'
drivers/pc/input.c:271: error: too few arguments to function `FCEUI_SelectState'
...etc...
I changed the relevant lines in input.c to SelectMovie(x,1) and SelectState(x,1) so it would compile, but I didn't really look at what the int was for. And that's that. Compiles and runs, but no sound at all. I wasn't expecting that, but everything else is only broken where I figured it would be.
Experienced Forum User
Joined: 12/3/2005
Posts: 20
I'm trying to compile on NetBSD 2.0 (and an ubuntu 5.10 box, too), and I ran into the same problem that dugan had above. Taking care of that, I now get this collection of messages:
gmake[1]: Entering directory `/home/evan/tmp/fceu-nitsuja-src/src'
gcc  -Wall -fomit-frame-pointer -g -O2 -I/usr/pkg/include/SDL -D_REENTRANT   -o fceu  x6502.o fceustr.o cart.o cheat.o crc32.o debug.o endian.o fceu.o fds.o file.o filter.o general.o ines.o input.o md5.o memory.o netplay.o nsf.o palette.o ppu.o sound.o state.o unif.o video.o vsuni.o wave.o movie.o unzip.o boards/mmc5.o boards/mmc3.o boards/mmc1.o boards/tengen.o boards/bonza.o boards/deirom.o boards/dream.o boards/konami-qtai.o boards/n106.o boards/karaoke.o boards/90.o boards/112.o boards/164.o boards/183.o boards/186.o boards/8237.o boards/8157.o boards/addrlatch.o boards/datalatch.o boards/h2288.o boards/malee.o boards/novel.o boards/sachen.o boards/subor.o boards/super24.o boards/supervision.o input/cursor.o input/zapper.o input/powerpad.o input/arkanoid.o input/shadow.o input/fkb.o input/hypershot.o input/mahjong.o input/oekakids.o input/ftrainer.o input/quiz.o input/toprider.o input/bworld.o input/suborkb.o mappers/6.o mappers/8.o mappers/15.o mappers/16.o mappers/17.o mappers/18.o mappers/21.o mappers/22.o mappers/23.o mappers/24and26.o mappers/25.o mappers/27.o mappers/32.o mappers/33.o mappers/40.o mappers/41.o mappers/42.o mappers/43.o mappers/46.o mappers/50.o mappers/51.o mappers/57.o mappers/58.o mappers/59.o mappers/60.o mappers/61.o mappers/62.o mappers/65.o mappers/67.o mappers/68.o mappers/69.o mappers/71.o mappers/72.o mappers/73.o mappers/75.o mappers/76.o mappers/77.o mappers/79.o mappers/80.o mappers/82.o mappers/83.o mappers/85.o mappers/86.o mappers/88.o mappers/89.o mappers/91.o mappers/92.o mappers/95.o mappers/97.o mappers/99.o mappers/113.o mappers/117.o mappers/151.o mappers/180.o mappers/183.o mappers/184.o mappers/187.o mappers/189.o mappers/193.o mappers/200.o mappers/201.o mappers/202.o mappers/203.o mappers/204.o mappers/208.o mappers/211.o mappers/212.o mappers/213.o mappers/214.o mappers/215.o mappers/217.o mappers/225.o mappers/226.o mappers/227.o mappers/228.o mappers/229.o mappers/230.o mappers/231.o mappers/232.o mappers/234.o mappers/235.o mappers/240.o mappers/241.o mappers/242.o mappers/244.o mappers/246.o mappers/255.o mappers/emu2413.o mappers/mmc2and4.o mappers/simple.o drivers/common/args.o drivers/common/cheat.o drivers/common/config.o drivers/common/vidblit.o drivers/common/hq2x.o drivers/common/hq3x.o drivers/common/scale2x.o drivers/common/scale3x.o drivers/common/scalebit.o drivers/sexyal/sexyal.o drivers/sexyal/md5.o drivers/sexyal/smallc.o drivers/sexyal/convert.o drivers/sexyal/drivers/oss.o drivers/pc/input.o drivers/pc/main.o drivers/pc/sdl.o drivers/pc/sdl-joystick.o drivers/pc/sdl-sound.o drivers/pc/sdl-throttle.o drivers/pc/sdl-video.o drivers/pc/unix-netplay.o   -lz  -lz -L/usr/pkg/lib -Wl,-rpath,/usr/pkg/lib -lSDL -lossaudio -lpthread -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/X11R6/lib -Wl,-R/usr/X11R6/lib -lm -L/usr/X11R6/lib -lX11 -lXext -L/usr/pkg/lib -laa-x11 -lm -L/usr/X11R6/lib -lX11 -lusbhid
input.o(.text+0x879): In function `CommandEmulationSpeed':
/home/evan/tmp/fceu-nitsuja-src/src/input.c:626: undefined reference to `FCEUD_SetEmulationSpeed'
input.o(.text+0xa51): In function `CommandSoundAdjust':
/home/evan/tmp/fceu-nitsuja-src/src/input.c:711: undefined reference to `FCEUD_SoundVolumeAdjust'
input.o(.data+0x140): In function `B4016':
/home/evan/tmp/fceu-nitsuja-src/src/input.c:143: undefined reference to `FCEUD_HideMenuToggle'
input.o(.data+0x1d0): In function `FCEU_DrawInput':
/home/evan/tmp/fceu-nitsuja-src/src/input.c:177: undefined reference to `FCEUD_TurboOn'
input.o(.data+0x1d4):/home/evan/tmp/fceu-nitsuja-src/src/input.c:177: undefined reference to `FCEUD_TurboOff'
input.o(.data+0x320): In function `FCEU_UpdateInput':
/home/evan/tmp/fceu-nitsuja-src/src/input.c:202: undefined reference to `FCEUD_SaveStateAs'
input.o(.data+0x440): In function `CheckSLHook':
/home/evan/tmp/fceu-nitsuja-src/src/input.c:268: undefined reference to `FCEUD_LoadStateFrom'
input.o(.data+0x680): In function `FCEUI_SetInput':
/home/evan/tmp/fceu-nitsuja-src/src/input.c:358: undefined reference to `FCEUD_MovieRecordTo'
input.o(.data+0x7a0): In function `FCEUI_HandleEmuCommands':
/home/evan/tmp/fceu-nitsuja-src/src/input.c:601: undefined reference to `FCEUD_MovieReplayFrom'
input.o(.data+0x8a8): In function `CommandSelectSaveSlot':
/home/evan/tmp/fceu-nitsuja-src/src/input.c:638: undefined reference to `FCEUD_MovieStop'
input.o(.data+0x908): In function `CommandStateSave':
/home/evan/tmp/fceu-nitsuja-src/src/input.c:650: undefined reference to `FCEUD_ToggleStatusIcon'
input.o(.data+0x920): In function `CommandStateLoad':
/home/evan/tmp/fceu-nitsuja-src/src/input.c:655: undefined reference to `FCEUD_SoundToggle'
input.o(.data+0x980): In function `CommandMovieSelectSlot':
/home/evan/tmp/fceu-nitsuja-src/src/input.c:674: undefined reference to `FCEUD_AviRecordTo'
input.o(.data+0x998):/home/evan/tmp/fceu-nitsuja-src/src/input.c:670: undefined reference to `FCEUD_AviStop'
ppu.o(.text+0x2a49): In function `FCEUPPU_Loop':
/home/evan/tmp/fceu-nitsuja-src/src/ppu.c:1361: undefined reference to `PPUViewer'
ppu.o(.text+0x2a59):/home/evan/tmp/fceu-nitsuja-src/src/ppu.c:1361: undefined reference to `PPUViewScanline'
ppu.o(.text+0x2ae5):/home/evan/tmp/fceu-nitsuja-src/src/ppu.c:1376: undefined reference to `UpdatePPUView'
video.o(.text+0x528): In function `FCEU_DrawRecordingStatus':
/home/evan/tmp/fceu-nitsuja-src/src/video.c:112: undefined reference to `FCEUD_ShowStatusIcon'
video.o(.text+0x5a5): In function `FCEU_PutImage':
/home/evan/tmp/fceu-nitsuja-src/src/video.c:143: undefined reference to `FCEUI_AviIsRecording'
video.o(.text+0x6b6):/home/evan/tmp/fceu-nitsuja-src/src/video.c:166: undefined reference to `FCEUI_AviVideoUpdate'
gmake[1]: *** [fceu] Error 1
gmake[1]: Leaving directory `/home/evan/tmp/fceu-nitsuja-src/src'
gmake: *** [all-recursive] Error 1
It looked to me like all of these undefined references point to functions from code in the drivers/win/ directory. Again, this is happening for me in both Ubuntu and NetBSD. Also, I learned that NetBSD's zlib.h does not define OF(), so the compile fails at unzip.c, too. There is an easy fix for this, just add these lines to unzip.h:
#ifndef OF
#define OF(a)  a
#endif
One more thing, the link to this patched fceu version was outdated on the wiki emulator page. Somebody might want to point it to the more recent version that was in this thread.