1 2
6 7 8
16 17
Dwedit
He/Him
Joined: 3/24/2006
Posts: 692
Location: Chicago
Please release a new interim build that fixes problems with the old PPU. For a while, I thought my own NES homebrew project had strange bugs in it while I was trying to debug my drawing code, but they disappeared when I switched to New PPU or an earlier version.
Joined: 8/8/2010
Posts: 1
Location: Venezuela
Hi There , congratulations for the Version 2.1.4a . I just a Simple Gamer , its better with Integrated GUI , and not with Gfceux , apart gui , i think its better and practice I think , you can use the "SDL" or "SDL+OpenGL" , to make integrated ROM Emulation in the Window , and you can use "SDL" for "Stretch" the Video , inside the Window Emulator ??? Or that its the idea for the newers versions ??? The Netplay Works ??? Well , congratulations , for this version 2.1.4a - its the better version i saw of this emulator for Linux I just think "The devs of VBA-M & Snes9x-gtk , can collaborate with yours and yours with they"??? i think its best for make better emulators : its just a question Well bye thank for read :P
Skilled player (1885)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
A minor crash bug: If FCEUX has a deleted movie in the "recent movies" tab and you try to play this movie file, FCEUX crashes. For comparison, if you try to open a deleted memory watch file in the "recent" list in memory watcher, it simply displays a "file not found, remove from list?" message. Perhaps the same error message for the recent movies list could work.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3584)
Joined: 11/3/2004
Posts: 4738
Location: Tennessee
Randil wrote:
A minor crash bug: If FCEUX has a deleted movie in the "recent movies" tab and you try to play this movie file, FCEUX crashes. For comparison, if you try to open a deleted memory watch file in the "recent" list in memory watcher, it simply displays a "file not found, remove from list?" message. Perhaps the same error message for the recent movies list could work.
This is already fixed in the 2.1.5 interim version.
It's hard to look this good. My TAS projects
NitroGenesis
He/Him
Editor, Experienced player (550)
Joined: 12/24/2009
Posts: 1873
I cant resize FCEUX. It keeps sinking whenever I try to. shoot me if this has been fixed or if it's just some stupid problem
YoungJ1997lol wrote:
Normally i would say Yes, but thennI thought "its not the same hack" so ill stick with meh.
Active player (274)
Joined: 4/20/2004
Posts: 219
Location: Japan,Tokyo
The problem of DelayStageClear in the BombManStage has recovered by 2.1.5 interim. Thank you for the fix about your program. :)
Joined: 8/9/2009
Posts: 5
I'm trying to use the symbolic debugging feature and having problems -- the program doesn't seem to load my name files. For instance, I created a name file for Solar Wars (a public domain ROM) called SolarWars2001.NES.1.nl, with the comment $E43E#ChangeX# (newline) However, the debugger doesn't seem to have noticed the file. Are there any known issues, or am I missing something? Thank you!
Post subject: emulating speed
Joined: 9/11/2010
Posts: 1
Hello! I want to know if it's possible to set an emulation speed to values between 75 and 100%. 100% seems to be a bit to fast and 75% too slow. I'd like to try 80-85% but how to enable it?
Noxxa
They/Them
Moderator, Expert player (4136)
Joined: 8/14/2009
Posts: 4083
Location: The Netherlands
Are you using an European (E) ROM? If so, turn on "PAL emulation" under config.
http://www.youtube.com/Noxxa <dwangoAC> This is a TAS (...). Not suitable for all audiences. May cause undesirable side-effects. May contain emulator abuse. Emulator may be abusive. This product contains glitches known to the state of California to cause egg defects. <Masterjun> I'm just a guy arranging bits in a sequence which could potentially amuse other people looking at these bits <adelikat> In Oregon Trail, I sacrificed my own family to save time. In Star trek, I killed helpless comrades in escape pods to save time. Here, I kill my allies to save time. I think I need help.
Site Admin, Skilled player (1235)
Joined: 4/17/2010
Posts: 11264
Location: RU
is it hard to make fceux numerate frames in the movie-file? мау be there are some additions for it?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Joined: 10/16/2010
Posts: 1
Hi, i am havind a issue with FCEUX 2.1.4a running on a up to date Arch Linux. I am starting fceux out of MythTV and want it to start up running a game in fullscreen (e.g. fceux -fs game.nes). Unfortunately the fceux GUI pops up and steals the focus from the main window. Thus far i have tried -fs, --fullscreen and SDL.Fullscreen = 1 in .fceux/fceux.cfg. Are tehre any other options ok is it possible to completly disable the GUI?
Former player
Joined: 12/5/2007
Posts: 716
Try building it with »scons GTK=0« or »scons GTK_LITE=0«. Tbh, though, neither did I write that code or do I know if the SDL port itself still functions without the GTK GUI.
Site Admin, Skilled player (1235)
Joined: 4/17/2010
Posts: 11264
Location: RU
Guys, I'd wish to see the function of enabling capture of all displayed visualisation (input, lag, frame). It is for easier rewinding of wip back & forth without need to abuse savestates. We would just have movie with all set necessary visualisation in avi & navigate through it easily in stuff like VirtualDub.. Maybe we need only a LUA-script for that?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced player (617)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
Edited out everything, because it was too big. see my next post
Measure once. Cut twice.
Post subject: adelikat, see this post ;)
Site Admin, Skilled player (1235)
Joined: 4/17/2010
Posts: 11264
Location: RU
http://pastebin.com/H3tu0NEM no transparency needed, i believe. also, i've preset the position of the stuff. we also need to see. if the movie has finished. for example, the framenumber shall change the color.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced player (617)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
Here is probably my final version of the script that feos wanted. It's basically a copy of the emulators existing HUD feature, but you can drag and drop any peice of information anywhere on the screen. It also allows you to record input onto an avi.
--Input and frame counter display by andymac
--Useful for recording input onto avi, or if you just don't want the
--display getting in the way of your movie!
--Simply drag and drop the input display or frame counter
--Middle click to disable a display
--Numpad 1-5 to enable displays.

function drawpad(padnum,cx,cy)	-- draws a gamepad on the screen

	gui.transparency (2)					--draws backround box
	gui.drawbox (cx - 3,cy - 3,cx + 28,cy + 6,"blue")	
	gui.transparency (0)

	gui.drawbox (cx,cy,cx + 3,cy + 3,"black")		--centre square

	controller = joypad.read(padnum)
	
	if (padnum == 1) then 
		colour = "red"							--changes colour of gamepads
	elseif (padnum == 2) then 
		colour = "yellow"
	elseif (padnum == 3) then
		colour = "green"
	elseif (padnum == 4) then 
		colour = "orange"
	end

	if (controller.A) then
		gui.drawbox (cx + 25,cy,cx + 28,cy + 3,colour)	--other buttons
	else
		gui.drawbox (cx + 25,cy,cx + 28,cy + 3,"black")
	end

	if (controller.B) then
		gui.drawbox (cx + 20,cy,cx + 23,cy + 3,colour)
	else
		gui.drawbox (cx + 20,cy,cx + 23,cy + 3,"black")
	end

	if (controller.start) then
		gui.drawbox (cx + 14,cy + 1,cx + 18,cy + 2,colour)
	else
		gui.drawbox (cx + 14,cy + 1,cx + 18,cy + 2,"black")
	end

	if (controller.select) then
		gui.drawbox (cx + 8,cy + 1,cx + 12,cy + 2,colour)
	else
		gui.drawbox (cx + 8,cy + 1,cx + 12,cy + 2,"black")
	end	

	if (controller.up) then
		gui.drawbox (cx,cy - 3,cx + 3,cy,colour)
	else
		gui.drawbox (cx,cy - 3,cx + 3,cy,"black")
	end

	if (controller.down) then
		gui.drawbox (cx,cy + 3,cx + 3,cy + 6,colour)
	else
		gui.drawbox (cx,cy + 3,cx + 3,cy + 6,"black")
	end

	if (controller.left) then
		gui.drawbox (cx - 3,cy,cx,cy + 3,colour)
	else
		gui.drawbox (cx - 3,cy,cx,cy + 3,"black")
	end

	if (controller.right) then
		gui.drawbox (cx + 3,cy,cx + 6,cy + 3,colour)
	else
		gui.drawbox (cx + 3,cy,cx + 6,cy + 3,"black") 
	end


end

function mouseover(boxx, boxy)						--checks if mouseover

	if keys.xmouse >= ( boxx - 5 ) and keys.xmouse <= ( boxx + 30 ) then

		if keys.ymouse >= ( boxy -3 ) and keys.ymouse <= ( boxy + 21 ) then

			return true
		end
	end
end

function inrange(upper, lower, testval)         -- checks if tastval is between upper and lower. If not, it truncates it.

	if testval >= upper then return upper

	elseif testval <= lower then return lower

	else return testval

	end

end

function everything()

	keys = input.get()

	if (text == 1) then
		
		if (FCEU.lagged()) then		--flash lagcounter red if lagged, otherwise green.
			gui.text (ex,ey + 9,FCEU.lagcount(), "red")		
		else
			gui.text (ex,ey + 9,FCEU.lagcount(), "green")
		end
	
		if (movie.mode() == "finished" or movie.mode() == nil) then
			gui.text (ex,ey,movie.framecount(), "red")
		else
			gui.text (ex,ey,movie.framecount())
		end

	end

	
	if keys["numpad5"] then text = 1 end			--enable 1-4 and text using and numpad 1-5
	if keys["numpad1"] then pad1 = 1 end
	if keys["numpad2"] then pad2 = 1 end
	if keys["numpad3"] then pad3 = 1 end
	if keys["numpad4"] then pad4 = 1 end


	xmouse = inrange(240, 16, keys.xmouse)			--limits x and y mouse position to be on screen

	ymouse = inrange(225, 11, keys.ymouse)			--so we can't drag items off the screen.

	xmouse2 = inrange(241, 10, keys.xmouse)

	ymouse2 = inrange(223, 16, keys.ymouse)

	if keys.xmouse >= ( ex - 10 ) and keys.xmouse <= ( ex + 40 ) then		-- test if mouse is over text

		if keys.ymouse >= ( ey ) and keys.ymouse <= ( ey + 40 ) then

			motext = true
		else
			motext = false
		end
		else motext = false
	end
	

	if mouseover(pad1x, pad1y) then			-- checks if clicked, or middle clicked

		if keys["leftclick"] then
			pad1x = xmouse - 13
			pad1y = ymouse - 8
		elseif keys["middleclick"] then
			pad1 = 0
		end
	
	elseif mouseover(pad2x, pad2y) then

		if keys["leftclick"] then
			pad2x = xmouse - 13
			pad2y = ymouse - 8
		elseif keys["middleclick"] then
			pad2 = 0
		end

	elseif mouseover(pad3x, pad3y) then

		if keys["leftclick"] then
			pad3x = xmouse - 13
			pad3y = ymouse - 8
		elseif keys["middleclick"] then
			pad3 = 0
		end

	elseif mouseover(pad4x, pad4y) then

		if keys["leftclick"] then
			pad4x = xmouse - 13
			pad4y = ymouse - 8
		elseif keys["middleclick"] then
			pad4 = 0
		end

	elseif motext then
		if keys["leftclick"] then
			ex = xmouse2 - 10
			ey = ymouse2 - 16
		elseif keys["middleclick"] then
			text = 0
		end
	end	

	if (pad1 == 1) then drawpad(1,pad1x, pad1y) end					--draw pads
	if (pad2 == 1) then drawpad(2,pad2x, pad2y) end
	if (pad3 == 1) then drawpad(3,pad3x, pad3y) end
	if (pad4 == 1) then drawpad(4,pad4x, pad4y) end

end

while (true) do

pad1x = 10
pad1y = 200
pad2x = 60
pad2y = 200
pad3x = 110
pad3y = 200
pad4x = 160
pad4y = 200
ex = 200
ey = 200
pad1 = 1
pad2 = 0
pad3 = 0
pad4 = 0
text = 1

	while (true) do 

		gui.register(everything)	
		FCEU.frameadvance()

	end
end
Measure once. Cut twice.
Post subject: Emulation problem - Mahjong (J)
Experienced player (868)
Joined: 9/18/2008
Posts: 148
Location: Japan
Last year I reported an emulation problem of "Mahjong (J)", but still it haven't been fixed and I don't know how to do about it (About this problem, please refer to the post I have linked to). So, I patched VirtuaNES 0.97 to generate trace logs (it logs only program counter), and I compared the log with FCEUX trace log (VirtuaNES seems to emulate "Mahjong (J)" correctly). After all, I couldn't find the cause of this problem, but I uploaded the logs. I hope someone could find a solution. There may be different versions of this game. I used "Rev B" (md5: 38abeee1b7148a5ff13f8f2ef6ab22e9). And I used emulators below: * FCEUX r2194, old/new PPU * FCEUX r2194mod, old PPU (I mention about r2194mod later) * VirtuaNES 0.97trace (applyed the patch aforementioned) And, in the all logs, I held <START+A> from power-on. Dealing routine is $D2BF (I call it deal()), so I truncated the logs until the execution of deal(). I also attached a full trace log of FCEUX, and it is logged until 194F (deal() is executed at the frame). I think the problem is the execution count of the routine which updates random number. The routine is at $FCC2 (I call it rand_update()). On FCEUX, rand_update() is called 8186 times until deal() is executed. On VirtuaNES, 8185 times. FCEUX updates random number in surplus by 1. This game continues to call rand_update() while it is waiting NMI ($CE4C). So I guess there may be something wrong with the implementation of PPU. I noticed that FCEUX waits the first VBLANK for a long time. It takes 59683 CPU clocks. On the other hand, VirtuaNES waits only for 27409 CPU clocks. I think the cause is "ppudead" logic (in ppu.cpp) of FCEUX. According to NesDevWiki:
The VBL flag ($2002 bit 7) is usually clear at power, and unchanged by reset. It is next set around 27384, then around 57165.
So, VirtuaNES seems right at this point. Thus I tried patching the old PPU code of FCEUX (this is r2194mod) to wait the first VBLANK as long as VirtuaNES, but it didn't affected the hand dealt. I don't know exactly which is right, but anyway this likely has nothing to do with the first problem. But, I also noticed that even the FCEUX r2194mod executes about 140 more operations until deal() is executed, than VirtuaNES does. On average, FCEUX appears to execute slightly more operations at one frame than VirtuaNES does.
Post subject: Emulation problem - Mahjong (J)
Experienced player (868)
Joined: 9/18/2008
Posts: 148
Location: Japan
I might find a cause of the emulation problem of "Mahjong (J)" (please refer to my previous post). I examined FCEUX source code again, and I found that FCEUX takes only 512 CPU clocks to execute a sprite DMA. But NesDevWiki says:
This takes 513 cycles to copy 256 bytes from this memory into $2004
So, I patched FCEUX r2194 to take 513 CPU clocks to execute a sprite DMA. Then, on "Mahjong (J)", I got the same hand as I got on real console. Though I'm not a expert of hardware and I don't know exactly if this patch is right, might it be thought that the cause of this problem is here? I put the patch and binary: * fceux-r2194-dma513.patch.bz2 * fceux-r2194-dma513.7z Of course, this patch can cause desyncs on other games. I tested for some movies on r2194-dma513. And I confirmed these movie sync: * Super Mario Bros http://tasvideos.org/2964S.html http://tasvideos.org/2384S.html http://tasvideos.org/2354S.html * Super Mario Bros 2 http://tasvideos.org/2981S.html http://tasvideos.org/3015S.html * Super Mario Bros 3 http://tasvideos.org/2765S.html * Gradius http://tasvideos.org/1324S.html * Mega Man 2 http://tasvideos.org/2881S.html * Tetris http://tasvideos.org/2786S.html And these movie desync: * Mega Man 1 http://tasvideos.org/2921S.html * Wizardry PG http://tasvideos.org/2128S.html * Wizardry KOD http://tasvideos.org/2499S.html * Mahjong (This movie achieves tenho/chiho/renho on r2052) http://dehacked.2y.net/microstorage.php/info/1127703226/Mahjong-tenho.fm2 Generally speaking, clock-dependent movies tend to desync. On Mega Man 1, highly clock-dependent glitches are used. On Wizardry series and Mahjong, random number is clock-dependent. As I guess clock-dependent random number is used on fairly many games, you might find more desync cases. If really sprite DMA is not implemented correctly, it would need some argument to treat the issue. But I hope the truth is disclosed first. Would you please inspect the problem?
Post subject: Re: Emulation problem - Mahjong (J)
Skilled player (1705)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
TaoTao wrote:
And these movie desync: * Mega Man 1 http://tasvideos.org/2921S.html * Wizardry PG http://tasvideos.org/2128S.html * Wizardry KOD http://tasvideos.org/2499S.html * Mahjong (This movie achieves tenho/chiho/renho on r2052) http://dehacked.2y.net/microstorage.php/info/1127703226/Mahjong-tenho.fm2 Generally speaking, clock-dependent movies tend to desync. On Mega Man 1, highly clock-dependent glitches are used. On Wizardry series and Mahjong, random number is clock-dependent. As I guess clock-dependent random number is used on fairly many games, you might find more desync cases. If really sprite DMA is not implemented correctly, it would need some argument to treat the issue. But I hope the truth is disclosed first. Would you please inspect the problem?
So...If someone were to use TaoTao's patch and create a movie to obesolete the "desynched" movies, would that be ok?
Post subject: 2.1.5 Release announcement
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3584)
Joined: 11/3/2004
Posts: 4738
Location: Tennessee
new FCEUX released! Some goodies for TASers in this release including fixing RAM watch to only look at actual game ram rather than the entire system bus. Also movies should load faster than in previous releases.
It's hard to look this good. My TAS projects
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3584)
Joined: 11/3/2004
Posts: 4738
Location: Tennessee
I guess given the convo before this release announcement I should comment on it. Tao's patch was NOT applied on this release. His patch is correct and would make for a more accurate emulator. However, given the radical sync differences it would cause, I chose to avoid using it for this release. Perhaps for a future release this could be done. But given the small benefit in accuracy vs the headache of so many sync differences, I'm not too keen on the idea.
It's hard to look this good. My TAS projects
MESHUGGAH
Other
Skilled player (1888)
Joined: 11/14/2009
Posts: 1349
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
Does it mean it's acceptable to submit a TAS with TaoTao's version instead of the new FCEUX 2.1.5? I only ask this because my first TAS I'm working on (Indiana Jones and the Temple of Doom Thread #11250: Indiana Jones and the Temple of Doom) is also suffers from this (enemy position, hidden exit and an unnamed glitch depends on CPU clock, that's why my WIP shows different result on 2.1.5 and TaoTao's patch) and I would like to take benefit of higher accuracy instead of "reworking" the same for a "possibly not accurate" version of FCEUX.
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Former player
Joined: 12/5/2007
Posts: 716
Looks like there's still work being done on the SDL port, yay :)
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3584)
Joined: 11/3/2004
Posts: 4738
Location: Tennessee
MESHUGGAH wrote:
Does it mean it's acceptable to submit a TAS with TaoTao's version instead of the new FCEUX 2.1.5? I only ask this because my first TAS I'm working on (Indiana Jones and the Temple of Doom Thread #11250: Indiana Jones and the Temple of Doom) is also suffers from this (enemy position, hidden exit and an unnamed glitch depends on CPU clock, that's why my WIP shows different result on 2.1.5 and TaoTao's patch) and I would like to take benefit of higher accuracy instead of "reworking" the same for a "possibly not accurate" version of FCEUX.
I dunno, that is a sucky situation and would like to not worry about it.
It's hard to look this good. My TAS projects
Editor, Skilled player (1171)
Joined: 9/27/2008
Posts: 1085
Noteable changes * [...] * New lua functions. *[...]
Yes! Download FnScan.lua
Language: lua

local target= joypad for k,v in pairs(target) do print(k, "- -", type(v)) end
readup - - function read - - function write - - function set - - function readdown - - function getup - - function getdown - - function get - - function ... Nuts. No joypad.peek.
Language: lua

local function Fn() joypad.set(1,joypad.get(2)) end
... Nuts. Still no frame-immediate way of reading then writing to joypad. Doesn't matter where I put this function (emu.frameadvance loop, emu.registerbefore, or whatever else). At least gui.register still runs while paused. That is still quite lovely. As for the accuracy, I say go make the change! The earlier versions of FCEUX will be available for sync stability of older movies, I hope.
1 2
6 7 8
16 17