1 2
6 7 8
11 12
Banned User
Joined: 12/5/2007
Posts: 742
Location: Gone
I already looked at the wild-warp run and there were numerous times when the player had to a certain level for every boss battle. Another thing to try out soon: safely getting through the swamp woods without a gas mask.
Ambassador, Experienced player (697)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Yes, there's no avoiding leveling in this game. But since you have to walk around more without wild warps, you kill some enemies on the way and so there's less time spent specifically to grind. I experimented in the swamp a bit. I couldn't find any way besides the mask to keep hp from going down and it goes down fast. However, it is possible to reach Oak if you start with full hp, full mp and at least 3 or 4 medical herbs and keep healing. You'd need to do the same to get the kid and you wouldn't be able to beat the bug. So I think getting the gas mask is less bothersome. You need to go shopping in Brynmaer anyway, so it's not much of a bother.
Ambassador, Experienced player (697)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Ok, I'm giving an update whether anyone cares or not. I've been busy overengineering some lua for this run. I've created tons of features: -Player and enemy hitboxes -Display enemy hp onscreen -Sword and sword shot hitboxes -Markers for spawn locations, countdown to when an enemy respawns and an indicator that tells me the screen is far enough away -Lots of things only happen every 2 or 4 frames based on the main counter at $0008 or some other one. So I get some things popping up on those frames for convenience. -Also, I get rewind! I would like to set up bots for some of the grinding sections. More so that I don't have to do the tedious work myself rather than getting any speed improvement. So far all I have are some macros that make fast diagonal movement and walking sword charge easier. But I need to do more complex things and make it smart enough to try and avoid lag. The macro/bot actions are also rewindable so I can do some part automatically and then redo part of it manually. Interesting things I've found in analysis: -Hit detection for your sword attacks only happens every other frame (based on main counter). But enemies can hit you any frame. -Sword charge meter goes up every 4th frame based on main counter. -When stabbing the sword, the attack hitbox extends out 3 pixels near the end of the attack, giving you some extra range. But since hit detection only happens every other frame you have to time your attack to take advantage of this.
Joined: 7/2/2007
Posts: 3960
Sounds like you've been busy. :) Curious: how generic is the rewind functionality you've added? Seems like that could be a useful general-purpose feature; maybe you should talk to Adelikat about getting it added to his TASing repository. For automating grinding, would it be at all feasible to simply record one "loop" of grinding, and then run that loop over and over again? I suppose it depends on how much the enemies move before you get a chance to kill them.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Ambassador, Experienced player (697)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
There's definitely some components there that should be added to the repository. I'll talk with Adelikat when I get further along. Because of how this game works, cut-and-paste style hex editing simply doesn't work. There's too much dependency on global counters and lag can pop up unexpectedly at times. But the bot looks at these counters and adjusts as needed. Sometimes it uses the old brute force method, trying over and over again until it finds the optimal method. If it has a problem doing something (like because an enemy moved out of the way) then I'll do it manually. For this first part the enemies don't move much, but in other areas I'll have to have my programs adjust to enemy movement. I made a bot for the first grinding section and it worked very well. It gained about 250 frames on the published run. This is partly due to a slightly better method though. I'm doing the sealed cave right now and I've got about 11 seconds of overall improvement. I need to figure out more about enemy movement so I can manipulate that stupid vampire. tmont got him to behave very well and it will be hard to match his fight. After that I have a lot to test in the next area. I still haven't decided whether or not skipping ball of fire is a good idea. There's also the issue of whether or not to levelup before entering the swamp so I can fight some bugs while I run through it. Edit - Some more interesting information: At $000E there's a counter that's used as an offset into a table of "random" values. This is used to randomize enemy movement. But the global counter at $0008 is also used. A lot of enemies aren't random and don't use these though. Instead, they always come right after you. Anyway, this means there are some limited ways to manipulate enemies. For enemies that spawn immediately on entering an area, delaying entry will change the counter. The random seed is trickier but could be "groomed" by killing enemies either sooner or later and also by leaving areas sooner or later in some cases. Finally got Stom figured out. Stom's behavior is a combination of the random seed at $000E and a special "Stom Counter" at $657F. The Stom Counter starts out at 0 and increments as each duel starts. If you hex that you'll see that he becomes way easier. At 3 it seems he's always beatable. Note that this is in the battery area and is saved along with your savegame. However, it may be possible that at 1 or 2 it is possible for some seed values. Looks like a job for lua!
Player (51)
Joined: 10/6/2005
Posts: 138
Location: Oregon
TheAxeMan wrote:
Finally got Stom figured out. Stom's behavior is a combination of the random seed at $000E and a special "Stom Counter" at $657F. The Stom Counter starts out at 0 and increments as each duel starts. If you hex that you'll see that he becomes way easier. At 3 it seems he's always beatable. Note that this is in the battery area and is saved along with your savegame. However, it may be possible that at 1 or 2 it is possible for some seed values. Looks like a job for lua!
That's very interesting. Stom is a little bugger, and it would be totally awesome if you could take him down before the third round. I'm really looking forward to seeing this. I also wouldn't mind seeing some wips...
Ambassador, Experienced player (697)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
http://dehacked.2y.net/microstorage.php/info/238732292/Crystalis-test1.fm2 I've been making steady progress, developing new methods and scripts and figuring out some new tricks. Here's my current progress on a test run, I plan to start over on the final version as some parts can be improved. Still, after only playing 7 minutes I am about 2 minutes ahead of tmont's published version. There are several surprises here, but I promise there are many more to come! By the way, most of my major insights have come from hacking into the hit detection engine on a broad level and displaying really anything that looks like a hitbox. I found that the coins dropped by enemies occupy a slot in the same table as the enemies themselves. The slot picked seems almost random. Each enemy that spawns in a certain location will always occupy the same slot in that table. If a coin is in that slot, he won't spawn. Coins won't replace enemies that are already spawned, even if offscreen, so there are ways to manipulate which coins spawn in which slot. Of course my script can tell me what slot the coin is in and I can use that to know whether or not I need to pick it up. Also, by changing the order or timing of when I kill enemies, I can affect the slot of their coin. All this knowledge is important when hunting spawning enemies for xp. Hitbox visualization was also key to my strategy on Stom. The method used can be done on a console but requires a lot of precision.
Banned User
Joined: 12/5/2007
Posts: 742
Location: Gone
Any glitches discovered? There has to be at least one flaw in the ROM. Haha...
Player (208)
Joined: 7/7/2006
Posts: 798
Location: US
LOL at boss fight. 14200, just so I'm not focusing on this all run. Does the y position you're at on the screen when you hit the wind ball barrier really influence how fast you can get by the camera freeze? The camera freezes as soon as it is hit right? So basically you either traverse y length further before hitting it and the camera scrolls y, or you're y less far and the camera has scrolled y less far. So nothing really makes it faster unless you can walk further in the nonlimiting direction? (In this case if you could gain some position in the x direction somehow.) 14800, care to explain why you stopped moving for a bit? I assume it was enemy manipulation, but why exactly was this the fastest method here? I applaud your Stom fight. The grinding at about 24000 looks very technically well done as does the run overall thus far. The improvements are very noticeable, and the grinding sections are much more watchable up to this point.
Ambassador, Experienced player (697)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
About the walls blowing up, you are pretty much right. In a straight corridor it doesn't matter when you blow up the wall since the screen stops moving when the shot hits it. But if there's a way to move around then it would help to do that. Then you have to consider lag and in lag in this game is generally worse when you keep moving as other things are going on. That means it's best to hit the wall later in a straight corridor. This also influences some of my other tactics, by the way. When I stop, it's to spawn the enemy, not just manipulate it. Enemies don't spawn onscreen so at a certain point I just need to stop and wait. Spawning is tied to a counter at $0008 that counts down every non-lag frame. For this pass I just killed as many enemies as I could walking around. In my final version I'll try to be smarter about it. In general though it does usually pay off to get these enemies enroute and cut down on grinding. Hehe, I finally figured out Stom, ending one of the biggest issues in this thread. I'll have to post a screenshot of the hitboxes because it's very revealing. In order to hit him without being hit back it requires a precision of 2 or 3 pixels which comes down to one frame of movement. I was pretty proud of discovering that grinding pattern, it required a lot of insight in to the game's engine. There will be changes on some level to most of the grinding sequences. By far the most interesting change will replace the guards in front of Goa. Some other sequences will probably change less and I don't know if I'll be able to make them interesting.
Ambassador, Experienced player (697)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Ok, you asked for it. I discovered a new glitch that lets me climb the sliding slopes no matter how tall they are. Now I need to rethink the path through Mt Sabre to take advantage of this. Also, I'm trying to think of other places this could be useful. Any ideas? The technical details go like this: There's a counter at $0660 that tracks how hard the slope pushes you down. It increments every 16 frames when the almighty global counter at $0008 has low four bits of 0. The trick is that when you pause and unpause the global counter gets incremented while other logic, including this, is skipped. So if you keep pausing and unpausing at the right time you can continue walking right up on the frames in between. The increment is also skipped if you are in the air from jumping with the rabbit boots. However, it increments when you land regardless of the global counter state. Pausing can't prevent this. The same pause/unpause trick can be used to prevent damage in the swamp without the gas mask. But it would require so many pauses that it would take way more time than getting the gas mask. There may be other applications as well.
Joined: 7/2/2007
Posts: 3960
I admit it's been awhile since I played, but I can't remember any other slopes other than on Mount Sabre. Nice find, though! I'm guessing similar logic holds for lava and spike floors.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Player (208)
Joined: 7/7/2006
Posts: 798
Location: US
Can you maintain a higher speed through use of this technique? Go down the slope and pause on and off to see if you can maintain a high speed. I'm not sure if this would be too useful. Essentially anything could possibly be on this 16 frame counter including damage from enemies and spawning of things. See if you can prevent things from spawning with this technique. It seems impossible the way it is described to make things increment faster, only increment slower (or cease to increment.) Those are the ideas that came to mind. EDIT: Also possibly getting through cutscenes (bypassing game requirements) you aren't supposed to be able to. Though nothing in particular comes to mind.
Ambassador, Experienced player (697)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Interesting idea about using this to increase speed. But there are two problems. First, I am pretty sure that the effect is hardcoded to push you south. Second, you have to pause every 15 frames so it makes you way slower in realtime. But the decrement is also tied to this so I think I can get that effect if I really want. Spawning also happens on those 0 frames so I should check if this has an effect. Usually I want enemies to spawn, but there might be cases where I don't. Most important things spawn on entering a room though and this wouldn't affect that. The counter is used for randomness, so pauses could be used to manipulate enemies. But the pause takes so long that it's unlikely to be helpful. And as far as bypassing more game requirements, I'll think about this but I don't think it will help. Triggers in this game are based on going somewhere or talking to someone. Barriers come in several varieties; People can be bypassed with the waterfall glitch. Water can be crossed with flight, normal or ghetto. There are also the sword-charge barriers that can be dealt with using the sword charge glitch. With respect to normal walls, the engine seems to be pretty robust. If you could increase your velocity enough I think you could pass clean through a wall, but there's no way to get that much speed. It would be neat if I could execute ghetto flight without the dolphin, but I'm not extremely hopeful about it.
Banned User
Joined: 12/5/2007
Posts: 742
Location: Gone
It looks like you really gotten far into this game, at least around midpoint or past it - and it appears a unique pausing glitch might have been well-ultilized along the way. Whatever's going on, what's your progress?!
Ambassador, Experienced player (697)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Oh man, in my excitement I totally forgot about something. I'm using the sword charge glitch at this point and pausing cancels it out! So I have to pick between these and either go through the mountain caves or grab the ball of fire. Looks like I'll have to figure out how much time each combination would save. I can work out a route on Mt Sabre N that climbs right up to the boss and grabs the fire bracelet before needing to blast a wall. But this loses time by having to go back after beating the boss to get the key. Maybe also from needing to grind in a less efficient area. So I've got a bit of analysis to do. By the way PoR, I'm only about 8 minutes into a 50-minute or so run. But some parts will go faster. If you go back to the WIP I posted, that's about how far I am.
Ambassador, Experienced player (697)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
http://dehacked.2y.net/microstorage.php/info/721022047/Crystalis-test1.fm2 Next WIP installment. This finishes the Mt Sabre areas and reaches Portoa. Thanks to several new glitches I save even more time and I'm now about 4 minutes ahead of the published run. If you watched the last one I posted, there are some changes starting at getting the fire sword. The new route on Mt Sabre N is completely different from any other run at this game. The method used to grind for experience there is almost as efficient as the two enemies used in the current run. With the new route, that spot is too far out of the way. Second change is sparing the people of Leaf from getting kidnapped. Usually you get stopped from climbing the mountain before triggering this. But it turns out there's a hole in the invisible barrier that stops you. If you watch closely just after I enter Mt. Sabre N you'll see me avoiding it. It's pretty easy to do if you can see it. This glitches things such that the jails at the top of mountain are empty! I have to unlock them anyway to get through. Finally, I reveal a better way to execute the sword-charge glitch. You don't have to die. It's quite a bit faster to simply reset. This is easy to miss because I hit reset before the savegame noise chimes.
Banned User
Joined: 12/5/2007
Posts: 742
Location: Gone
Yeah, I got to watch that! ^_^
Player (208)
Joined: 7/7/2006
Posts: 798
Location: US
4 minutes saved in the first 19 minutes of the previous run. If you keep up this pace, you could beat your previous wild warps run without wild warps. (52:44 - 43:38 = 9:06) There's your challenge.
Ambassador, Experienced player (697)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Hmm, beating the WW run would be fun. But I don't think there's quite as much room for improvement from here on out. I do have a few tricks left though so we'll see what happens.
Player (51)
Joined: 10/6/2005
Posts: 138
Location: Oregon
That was totally hott. Lots of new tricks, plus the holy grail of getting through Mt. Sabre North without going to Leaf. Also, the use of the Rabbit Boots during the grinding in Mt. Sabre South was cool. I assume you knew what you were doing, but using Sword of Fire level 2 creates a lot of lag, so you might want to use it sparingly (or at least in cases where lag won't matter). I noticed you used it a lot in Mt. Sabre South. Really looking forward to seeing the finished product.
Ambassador, Experienced player (697)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Thanks tmont. Before figuring out the full skip of Leaf I had also discovered that you don't need to actually blow away the wall by Zebu. There's a trigger spot just north of the wall. Pretty much every level 2 fire sword shot is done in a fire-and-forget style to get extra xp from the spiders. I did this when it worked out better than pushing them along my path. Depending on the circumstances it's sometimes only 5-10 frames of lag which works out better than going more than a few steps out of the way.
Ambassador, Experienced player (697)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
I am making progress on this, just reached Swan. I'll hold off on WIPs for now. Tried quite a few different things but in the end my route is pretty much the same as in the published run in this stretch. But I was able to speed things up by about 83 seconds for a total of 5.5 minutes. Most of that is due to grinding much faster, but there's also improvements in management of items and experience. One thing I don't think has ever been mentioned is that there are other second-controller cheats. B button pauses and this could be used to get the same effect that let me glitch up the ice slope, but take less time than the regular select button pause. It only takes 5 frames instead of 45 so it could be used to manipulate enemies. But I am assuming that this goes in the same category as the better-known wild warp so I am ignoring it.
Skilled player (1673)
Joined: 6/11/2006
Posts: 818
Location: Arboga, Sweden
Yeah using second controller to achieve stuff probably falls under "cheating". That being said, I'm really looking forward to this run.
Warp wrote:
omg lol this is so fake!!!1 the nes cant produce music like this!
Joined: 7/29/2004
Posts: 136
Location: Temple City, CA
It has been a couple of months without any updates and I'm, as always, very interested in this run. Is it still progressing, or has it been put on hold?
"How can you prove you exist? Maybe we don't exist..." -Vivi Ornitier (Final Fantasy IX)
1 2
6 7 8
11 12