1 2 3 4 5 6 7
Active player (276)
Joined: 4/30/2009
Posts: 791
No offence to Nitrodon, but I'm fed up of waiting for an FE7 TAS to appear, so me and cheetah are starting on one ourselves. First approach is to see if there are any improvements to LNM, although I doubt we will find much, having a fresh pair of eyes often helps.
Rolanmen1
He/Him
Experienced player (752)
Joined: 2/20/2009
Posts: 569
Location: Dominican Republic
Decided to work on this. Up to Ch1 and im saving 711 frames compared to Nitrodon's run. WIP This run introduces a way to avoid forced movement in the tutorials, hope you guys enjoy :D
Rolanmen1
He/Him
Experienced player (752)
Joined: 2/20/2009
Posts: 569
Location: Dominican Republic
Up to Ch3, saving 2405 frames comparing to Nitrodon's WIP. WIP I tried to get 2 criticals in the enemy phase of Turn2, but at the end, it was slower than just getting 1.
Active player (295)
Joined: 3/2/2010
Posts: 154
Location: Taiwan
Nitrodon wrote:
Due to a bug posted by VincentASM on FESS, I saved an additional 1166 frames (19s26f) in chapter 9. The preparation for optimal use of the bug goes back to chapter 6, so any savestates you may have after that won't work. People who don't like Lyn's normal mode will enjoy this trick. http://dehacked.2y.net/microstorage.php/info/2205/FE7.vbm I'm still foolishly hoping for a better chapter 8 manipulation, so at this rate I'll never reach Eliwood's mode.
The Japanese made ​​a faster record (J) Time 12:46 http://www.nicovideo.jp/watch/sm14049543 http://winback.web.fc2.com/nicovideo/?sm14049543
Rolanmen1
He/Him
Experienced player (752)
Joined: 2/20/2009
Posts: 569
Location: Dominican Republic
woabclf wrote:
Nitrodon wrote:
Due to a bug posted by VincentASM on FESS, I saved an additional 1166 frames (19s26f) in chapter 9. The preparation for optimal use of the bug goes back to chapter 6, so any savestates you may have after that won't work. People who don't like Lyn's normal mode will enjoy this trick. http://dehacked.2y.net/microstorage.php/info/2205/FE7.vbm I'm still foolishly hoping for a better chapter 8 manipulation, so at this rate I'll never reach Eliwood's mode.
The Japanese made ​​a faster record (J) Time 12:46 http://www.nicovideo.jp/watch/sm14049543 http://winback.web.fc2.com/nicovideo/?sm14049543
This run starts from SRAM to go to Lyn Hard Mode, not acceptable, playing after beating the game allows units to move realy fast by holding A. He apparently wasn't aware about some glitches that Nitrodon found out. He also didn't have a good RNG management. He didn't got some level ups on Florina, so he won't make her Lv10 before getting the Elysian Whip, unless he wastes too much time training her. Anyway, finished Ch10, my run is slower by like 1 minute, meaning that his run is realy sub-optimal. My run is faster by 3837 Frames (01:03.95) compared to Nitrodon's WIP, and 22129 Frames (06:08.82) compared to Nitrodon's Test Run. WIP
Rolanmen1
He/Him
Experienced player (752)
Joined: 2/20/2009
Posts: 569
Location: Dominican Republic
Up to Ch13 Recruited Guy to use his Killing Edge, it should realy speed up some enemy phases later, saving 29294 Frames (08:08.23) Compared to Nitrodon's Test Run.
Editor, Player (94)
Joined: 5/27/2006
Posts: 239
looks great, keep it up.
Rolanmen1
He/Him
Experienced player (752)
Joined: 2/20/2009
Posts: 569
Location: Dominican Republic
BioSpark wrote:
looks great, keep it up.
Thanks. Up to Ch15 Saving 33098 Frames (09:11.63). Used the mine glitch so Florina could avoid most of the phases and using it, Eliwood/Florina wouldn't need to kill the boss.
Rolanmen1
He/Him
Experienced player (752)
Joined: 2/20/2009
Posts: 569
Location: Dominican Republic
Up to Ch19 Faster by 50466 Frames (14:01.10).After this, Florina will be promoted, (fucking yay). :D
Editor, Player (94)
Joined: 5/27/2006
Posts: 239
go go go
Player (98)
Joined: 3/20/2008
Posts: 466
Location: Montreal, Quebec, Canada
I disappear for a few months, next thing you know Roland has a bunch of Megaman runs published on the site, and is working on an FE7 TAS? Awesome. Enjoying the WIP a lot, bro. Keep it up.
Rolanmen1
He/Him
Experienced player (752)
Joined: 2/20/2009
Posts: 569
Location: Dominican Republic
New WIP Saving 53008 Frames (14:43.47)
Player (98)
Joined: 3/20/2008
Posts: 466
Location: Montreal, Quebec, Canada
Loving it, only concern is with regards to recruiting Heath. Is he going to save time in rout maps later on? I'm already surprised by how little he did in the desert.
Active player (283)
Joined: 3/4/2006
Posts: 341
Heath can block one enemy reinforcement space in chapter 25. It's not much, but it does mean 2 enemies that Pent or Louise doesn't need to kill in that chapter. More importantly, he comes with a mine.
Rolanmen1
He/Him
Experienced player (752)
Joined: 2/20/2009
Posts: 569
Location: Dominican Republic
I edited amaurea's RNGscript a bit to add some littles functionalities: 1- It now prints the HP of both Unit and Enemy. 2- It now counts the ammount of RN burned. 3- You can reset the counter each time you want by pressing the key "Q". Something you also have to notice is that the counter auto-resets each time a savestate is loaded or saved. There may be possible to not reset it when saving, but with my current knowledge, i can't. Something to be noticed is that it sometimes crash when you load a savestate at full speed, during frame advance it doesn't, so i recommend to pause the game before loading anything. For FE6 TASers: You would have to replace 655.36 to 655 each time it appears. And also change the memory adresses for the correct ones. For FE8 TASers: Just change the memory adresses for the correct ones. And finally, the code:
Language: lua

function nextrng(r1, r2, r3) return AND(XOR(SHIFT(r3, 5), SHIFT(r2, -11), SHIFT(r1, -1), SHIFT(r2, 15)),0xFFFF) end function rngsim(n,base) local result = { memory.readword(base+4), memory.readword(base+2), memory.readword(base+0) } for i = 4, n do result[i] = nextrng(result[i-3],result[i-2],result[i-1]) end return result end local rngbase=0x03000000 local RNG = rngsim(20, rngbase) local key={} local counter = 0 local php = 0x0203E064 local phit = 0x0203E0C6 local pdmg = 0x0203E0CA local pcrt = 0x0203E0CE local ehp= 0x0203E062 local ehit = 0x0203E0C4 local edmg = 0x0203E0C8 local ecrt = 0x0203E0CC while true do local nsim = 20 rngs = rngsim(nsim, rngbase) for i = 1, nsim do gui.text(228, 8*(i-1), string.format("%3d", rngs[i]/655.36)) end key = input.get() if key.Q or key.F1 or key.F2 or key.F3 or key.F4 or key.F5 or key.F6 or key.F7 or key.F8 or key.F9 or key.F10 then counter = 0 RNG = rngsim(nsim, rngbase) end local j = 1 while (RNG[j]/655.36 ~= rngs[1]/655.36) do counter = counter + 1 j=j+1 end RNG = rngsim(nsim, rngbase) gui.text(0,96,"Burned RNs: " .. counter) gui.text(210,0,"RNG1:") gui.text(210,8,"RNG2:") gui.text(210,16,"RNG3:") gui.text(194,24,"Next RNs:") gui.text(0,0,"Player") gui.text(0,8,"HP: " .. memory.readbyte(php)) gui.text(0,16,"Hit: " .. memory.readbyte(phit)) gui.text(0,24,"Damage: " .. memory.readbyte(pdmg)) gui.text(0,32,"Crit: " .. memory.readbyte(pcrt)) gui.text(0,48,"Enemy") gui.text(0,56,"HP: " .. memory.readbyte(ehp)) gui.text(0,64,"Hit: " .. memory.readbyte(ehit)) gui.text(0,72,"Damage: " .. memory.readbyte(edmg)) gui.text(0,80,"Crit: " .. memory.readbyte(ecrt)) emu.frameadvance() end
Editor, Skilled player (1172)
Joined: 9/27/2008
Posts: 1085
Here's a straight RNG counter script. It can even detect when the RNG goes backwards, and counts it appropriately. There's a second counter, in red. That tells how many times the script fails to read changes in the RNG. Possibly because it changed in an unusual way. Download FE_RNGcounter.lua
Language: lua

R2u= memory.readword --***************************************************************************** local function roll(A,B,C) --***************************************************************************** return bit.band(0xFFFF, bit.bxor( bit.rshift(A, 5), bit.lshift(B,11), bit.rshift(B,15), bit.lshift(C, 1) ) ) end --***************************************************************************** local function unroll(A,B,C) --***************************************************************************** --Returns what the previous RNG was. local r= bit.band(0xFFFE,bit.bxor(A, bit.rshift(B, 5), bit.lshift(C, 11))) r= bit.bor(r,bit.band(0x0001,bit.bxor(B,bit.rshift(C,5)))) return bit.bor( bit.lshift(bit.band(0x0001,r),15), bit.rshift(bit.band(0xFFFE,r), 1) ) end local Raddr= 0x03000000 local R= {R2u(Raddr), R2u(Raddr+2), R2u(Raddr+4)} --***************************************************************************** local function RNGmatch(a,b,c) --***************************************************************************** return (R2u(Raddr) == a) and (R2u(Raddr+2) == b) and (R2u(Raddr+4) == c) end --***************************************************************************** local function AdvanceRNG() --***************************************************************************** local RR= {R[1], R[2], R[3]} for i= 0, 2000 do if RNGmatch(R[1],R[2],R[3]) then return i end if RNGmatch(RR[1],RR[2],RR[3]) then R= RR; return -i end table.insert(R,1,roll(R[1],R[2],R[3])); R[4]= nil table.insert(RR,unroll(RR[1],RR[2],RR[3])); table.remove(RR,1) end R[1]= R2u(Raddr) R[2]= R2u(Raddr+2) R[3]= R2u(Raddr+4) return false end local Count, Fail= 0, 0 --***************************************************************************** local function CountRolls() --***************************************************************************** local c= AdvanceRNG() if c then Count= Count+c else Fail= Fail+1; Count= 0 end end --***************************************************************************** local function ShowRolls() --***************************************************************************** gui.text(1,1,Count,"green") gui.text(1,9,Fail,"red") end gui.register(ShowRolls) while true do CountRolls() emu.frameadvance() end
Rolanmen1
He/Him
Experienced player (752)
Joined: 2/20/2009
Posts: 569
Location: Dominican Republic
Up to Ch26 Saving 69923 Frames (19:25.38) Had to go back to hex Matthew to get a Door Key needed in the next chapter, so the big delay on publishing this WIP was because of that.
Active player (276)
Joined: 4/30/2009
Posts: 791
I watched through the nico TAS, if that video is anything to go by the J version could very well be faster than U when it comes to movement and enemy phases. The only time you'd see text throughout the run is the Lyn mode end, Eliwood's promotion and the Ninian cutscene, so it isn't a run where you can follow the story along with the game. As for the TAS itself, there are some strategies that look to be faster than what Rolanmen has done, but the majority of it looks improveable. Not starting from SRAM means his Lyn mode is faster, but the Eliwood mode looks to be slower by a long way -mine glitch was not used in ch15, ch17 was not skipped by Florina, levelling and promoted Lyn which can be avoided, late promotion of Florina, and several other factors. There are some lessons to be learned from this TAS though.
Player (98)
Joined: 3/20/2008
Posts: 466
Location: Montreal, Quebec, Canada
In Vaida's chapter, I think you could save time be deploying Dart and dropping him in the mountains. This way you could block all the reinforcements instead of just 3/4.
Active player (283)
Joined: 3/4/2006
Posts: 341
Vykan12 wrote:
In Vaida's chapter, I think you could save time be deploying Dart and dropping him in the mountains. This way you could block all the reinforcements instead of just 3/4.
Brigands and berserkers are the only land units which can traverse peaks. Dart is unable to cover any chapter 24 reinforcement squares in his base class.
Rolanmen1
He/Him
Experienced player (752)
Joined: 2/20/2009
Posts: 569
Location: Dominican Republic
New WIP Saving 74016 Frames (20:33.60). Decided to use the mine glitch on Turn2 so i can kill everything with a critical, i wouldn't be as lucky if the enemy were controlling themselves.
Editor, Player (94)
Joined: 5/27/2006
Posts: 239
is it not faster to use the mine glitch on chapter 26? you could just disarm whoever you need to and then immediately end each turn.
Active player (276)
Joined: 4/30/2009
Posts: 791
I figure it might be better here to post possible improvements. I've already addressed this in IRC, but I did notice there were places when you are moving the cursor for the RN manipulation, where it can be done faster in a different location. For example, in Ch13, you manipulate for the boss kill here: when there is an unobstructed area that can be used in the north-west. There are other places like this where RN manipulation can be done faster in a different direction, but this was the most glaring one. Another possible improvement I have is giving Marcus the Energy Ring that Dorcas starts with. Giving him the item is a simple matter of trading in Ch11 Turn 2, as soon as Dorcas appears. The time taken to get and use the item should more than pay for itself, as Marcus will have 2 higher Atk with which to get more OHKOs, and can also save less manipulation later on if getting Str in a level is particularly time consuming - even gets to cap the stat sooner so you can get blank level ups earlier. A couple of chapter strategies have possible improvements. As seen in the Japanese TAS linked earlier, opening the door and critting the soldier in the same player phase will be faster than letting him move on enemy phase and getting 2HKOed. Ch11 doesn't require Eliwood to crit all three enemies after he is dropped, just enough so that he can seize - so just the first two, saving time with less exp gained and RN manipulation. Ch16 could have an improvement, if a 7 move unit was to hang back from enemies, using Marcus to charge forward and kill stuff, and hand Eliwood to Marcus once all the archers in the western corridor were clear. I'm probably not completely right on a couple of these, just going off observations I've seen while watching this. The improvement Nitrodon discovered will also save time in a few places, but that should be a matter of easy hexing where it does save time. For those that weren't on IRC, all three of the GBA games have the camera scroll on where the cursor icon is located, but the arrow while moving can move beyond that location. Normally, holding B while moving keeps the cursor moving fast enough to keep up with the arrow. The problem with this is that once a move location is confirmed, normally the camera scrolls back to the unit before moving if you go too far from it. With this new trick, by not holding B, or only holding for a few frames, you let the camera move slow enough that, when you confirm the unit movement the camera does not scroll back and the move happens straight away rather than waiting. It doesn't work in every instance, but it will save a good few frames when it does.
Rolanmen1
He/Him
Experienced player (752)
Joined: 2/20/2009
Posts: 569
Location: Dominican Republic
BioSpark wrote:
is it not faster to use the mine glitch on chapter 26? you could just disarm whoever you need to and then immediately end each turn.
Unless i find another strategy for Ch30, it is, since Florina can't 1RKO Limstella, i have to use the mine to move her out of the gate, only weapons are Brave Lance and Vaida's Spear. The first one being impossible since a thieft comes by and steal it first, and he can't drop it because he gets the other item next to it, the later also being impossible since i need another mine for it. Another option is to get it from Ch16, but that means i need to wait 2 more turns and wait Raven to kill 2 Soldiers, but thinking about it, it MAY be faster to use it since i can use that mine to Jaffar kills everything. EDIT: Tested getting the mine, and it's 2647 frames slower just to get it, not sure how fast would be using the mine in Ch26, but i guess it's worth a try.
1 2 3 4 5 6 7