Posts for feos


1 2 382 383 384 439 440
Experienced Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
Fixed.
Marx wrote:
I would like to see you TASing other games too.
Can you share your plans, Scum?
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.
Post subject: General feedback on the release so far
Experienced Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
natt wrote:
registerexecute() might not be here for a while, depending on core. if you're looking at a particular ingame timer counter, why not just read that value in a registerafter() instead?
I guess it would be good too, since BH can run multiple scripts. EDIT: General feedback on the release so far. Once I try to record a movie from Now, I get this error: http://pastebin.com/4RaDUEwd Soft reset in BTDD doesn't work. Also some sound from it sounds wrong in BH. http://rghost.ru/40787710 Thanks for 7-bit samples support though! Where can I see the screenshots integrated with savestates? I'm also suggesting to keep all DLLs and text files in a special folder, not to litter the root folder, that's pretty annoying to me. Another suggestion - in the lower menu, add rightclick to save a state.
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
Then please add arguments like RAM address or ROM execution address to determine lag by. Like here:
Language: lua

no_lag = false function draw() Xspd = memory.readbytesigned(0x53b) Yspd = memory.readbytesigned(0x53c) X = memory.readbyte(0x58f) Y = memory.readbyte(0x59b) camX = memory.readbyte(0x31f) + memory.readbyte(0x320)*0x100 camY = memory.readbyte(0x31b) InvTmr=memory.readbyte(0x4b2) gui.text(1,1,"X: "..X+camX.."\nY: "..Y+camY) gui.text(50,1,"InvTmr:\n"..InvTmr) end function set_nolag() no_lag = true; draw() end memory.registerexecute(0xC6E9, set_nolag); -- 07:C6E9 INC $0322 (ingame timer) function determine_lagflag() if (no_lag) then emu.setlagflag(false); no_lag = false; -- no_lag only affects once else emu.setlagflag(true); end end memory.registerexecute(0xDE58, determine_lagflag); -- 07:DE58 End of the cycle of reading from $4016-4017 (the point where FCEUX sets lagFlag to 0) emu.registerafter(draw);
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
Does BizHawk have a sort of emu.setlagflag(bool value) as FCEUX now has?
Manual wrote:
Some games poll input even in lag frames, so standard way of detecting lag (used by FCEUX and other emulators) does not work for those games, and you have to determine lag frames manually. First, find RAM addresses that help you distinguish between lag and non-lag frames (e.g. an in-game frame counter that only increments in non-lag frames). Then register memory hooks that will change lag flag when needed.
That would allow to compare lagcounts for different branches internally, while a simple lua lag counter can't handle savestates without some non-trivial workarounds.
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
Randil wrote:
Clash Man stage music played using the NES game Ikinari Musician (sorry for the slightly low volume). See the video comments for details if you're interested in how it was made. http://www.youtube.com/watch?v=qEAgCKhCQf4
FCEUX 2.1.6 has sound library added by gocha. It rocks!
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
I suggest to give Judge Dredd a shot!
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
Thank you Opera. Chrome sees them.
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
Images don't work.
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
Aktan wrote:
First off, using DirectShowSource() should be last last resort as it is not frame accurate.
What to use for non-avi import then?
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
Events of this movie.
  • Pointer sticks to some line (likely starting at $B7) that looks like 00, 00, 00, 00, $C8... It creates an object with ID=0, and with Xpos=$C8.
  • To determine the slot to create it in, game checks if this ID<3. If it is, game thinks it is a player. Players are tied to slots 0 (for ID=1) and 1 (for ID=2). If ID<3, the game subtracts 1 from the ID, and thinks it is a slot. So, it subtracts 1 from 0 and gets $FF, that will be the slot (offset for all atributes of this object).
  • The game checks if the lives ($11)>0, because if lives<0, it won't spawn. Shifting $FF off $11, it checks adderss $110 as it is lives.
  • Then the value, that was read as Xpos from configs, gets written to Xpos address, considering it is slot $FF (shifting $FF from Rash's Xpos address). There it gets address of the Rash's Hit ID. But there's NO ANIMATION for that hit ID, there's no pointer. Line 3438.
  • $2207 gets read as it is the pointer for that hit ID, and it contains #$FE. Bitwise AND between #$FE and #$1F occurs,to determine the needed animation code, but the resulting value is bigger that $16 (amount of pointers).
  • Game jums to arbitrary address $75BD. $6000-$7FFF = Battery Backed Save or Work RAM. It is all filled with $6F and is an undefined code. So the game just rolls through all this area and then gets to $8000.
  • Line 4705.
Thanks to BoneMage.
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.
Post subject: Re: Information about!
Experienced Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
SmashManiac wrote:
In a perfect world, I would say that the time it takes to reach the end state is what matters first, and then ending input at a point where extra input cannot change this outcome second. In reality however defining what exactly is the end state is not trivial and testing for extra input is a NP problem. The only reliable way to measure the length of an arbitrary TAS is by the length of its input, even if it means delaying the actual game end. There has been multiple precedents of this (Monopoly just to name one), so I don't see why Battletoads should be judged differently.
Thread #11887: #3313: adelikat's NES Teenage Mutant Ninja Turtles in 16:26.23
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
Count in BoneMage as well haha. Though now he lacks of time to disasm the ending event code, but I hope he will find 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.
Post subject: Re: Information about!
Experienced Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
TheZlomuS wrote:
To call the end of the game, the game logic certainly needs to use initial function (and not just for that what I see). The feature you can found in the rom address: 0x91AC (but exist exceptions?). For this: https://feos-tas.googlecode.com/svn/trunk/DJ-stuff/Movies/bt_improve_ends.fm3 and for MESHUGGAH video, function launched "game end" in the level 3 instantly. Not exactly is known cause of this sudden call.
Ending starts at frame 4826. Nach: Would you consider a movie as improvement, if it is slower by the amount of frames in the submission, but reaches the credits faster?
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
Before reading I'm going to post the script that displays the CURRENT address object pointer loads object IDs from. It starts from $0B first frame after restart. It can be resetted if it gets $FF in the address it reads from. Note that the actual value it contains is what it reads from, but the object with this ID will be created NEXT FRAME. So you need to prepare the values you can affect. Okay. The pointer jumps over $B (length of object descriptors line) addresses for searching IDs. It gets 0 as initial value, because the checkpoint that changes the game logics is still unchecked, and after restart at the RACE it contains the value that it GIVES to object pointer. Getting 0, object pointer measures 11 steps off and sticks to $0B. Then every frame it jumps through $16, $21, $2C, $37 and normally stops rolling, because it thinks it created enough objects to start the level (see how it works for normal levels). $0B contains scene timer, or something like that. Objects with that low ID get removed as there are no such objects. Interesting thing here is that $16 contains TEMPORARY P2 input value, that gets read from $4017. After the frame ENDS it contains some different value it is actually used for. But reading objects occurs at the same time it contains whole P2 input! It will spawn any object equal to P2 input value. Then it reads from $21 and I don't know what it is. Second direct manipulation chanse is reading from $2C! It contains InputTap_P2 value, updates every frame. The way Zlomus worked is: 1. Nothing. 2. Spawn object when pointer sticks to $16. 3. Nothing. 4. Reset the pointer when it reads from ;2C. 5. Repeat from 1. Download BtObjects.lua
Language: lua

-- feos, 2012 -- Object IDs and atributes display script for NES Batletoads. -- Developed with 256x240 screen in mind. lastVal = 0 function info() CamX = memory.readbyte(0x87) + 256*memory.readbyte(0x88) CamY = memory.readbyte(0x89) + 256*memory.readbyte(0x8A) -- LevelCheckpointVal = memory.readbyte(0x585) ObjectPointerLo = memory.readbyte(0xB7) ObjectPointerHi = memory.readbyte(0xB8) newVal = ObjectPointerHi*0x100+ObjectPointerLo PointedAddr = memory.readbyte(lastVal) -- AAA = memory.readbyte(0x2a) CCC = memory.readbyte(0x2c) -- gui.box(0,0,256,40,"#000000ff") -- gui.text(130,231, "ChP: "..string.format("%02X",LevelCheckpointVal), "#00ff00ff") gui.text(95,17, string.format("Cur:%04X=%02X\nNew:%04X",lastVal,PointedAddr,newVal), "#00ff00ff") gui.text(200,17, string.format("2C=%02X",CCC), "#00ff00ff") gui.text(1, 1, "slot:\nid:") for i = 0, 14 do id = memory.readbyte(0x3c1+i) x = memory.readbyte(0x3FD+i) + 256*memory.readbytesigned(0x3EE +i) - CamX y = memory.readbyte(0x493+i) - memory.readbyte(0x475+i) xSH = memory.readbyte(0x484+i) ySH = memory.readbyte(0x493+i) move = memory.readbyte(0x4A2+i) state = memory.readbyte(0x4B1+i) hp = memory.readbyte(0x51a+i) linked = memory.readbyte(0x529+i) linker = memory.readbyte(0x538+i) dthTmr = memory.readbyte(0x574+i) follow = memory.readbyte(0x592+i) if id>0 then gui.text(x, y, string.format("%2X",id)) end if x<0>242 then x=242 end gui.text(1+i*16+18, 1, string.format("%2d\n%2X\n\n\n%2X",i+1,id,dthTmr)) -- gui.text(xSH,ySH,"Sh") end lastVal = newVal end emu.registerafter(info);
EDIT: Updated the post contents, also: RNG in this game rolls all the time CPU is free from other calculation. It mixes multiple values over and over, making direct manipulation impossible. BUT it gets more or less time to roll if you change INPUT, so you can only do trial & error, watching at how addresses $25-$28 change. The way to catch when it READS from these addresses to decide the enemies or game behaviour is in some future plans, but I dunno how to do it. EDIT2: Fixed the script again.
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
MESHUGGAH wrote:
In case you don't like game overs: http://tasvideos.org/userfiles/info/1454916043573621
The last ending titles appear at frame 4849. In the submitted movie - at 7698. 00:47.48. EDIT: note that all those glitched endings are not bugged. As you press start you go to the title screen as normally. EDIT2: MESHUGGAH, how the heck you did 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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
Check pausing at the last frame of movie. Watch it alone. After it's paused, engage taseditor. Unpause and watch the rest.
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
Oh, crap. To watch it in emulator, you need to launch taseditor to prevent desync. This bug was already reported.
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
Here the ending starts at frame 4948. In the previous movie it starts at 6980. 00:33.87 seconds faster guys!!! PS: encoding... EDIT: the input of the previous movie was totally copied until the jet glitch restart.
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
Cool glitch, Yes vote.
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
All the tools are described in FCEUX help, but you are going to need the updated version. Debugger docs were heavily improved since 2.1.5. http://www.fceux.com/web/help/fceux.html?Debug.html
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
I think you might need encoder role to use brouser uploader. http://tasvideos.org/EncoderGuidelines/TASVideosChannel.html Let's talk in IRC.
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 Forum User, Published Author, Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11270
Location: RU
At the autoscrolling stage you would need to shoot very much, while it not causes additional lag, because otherwise this stage would be very boring.
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.
1 2 382 383 384 439 440