Post subject: Swords and Serpents.
Joined: 4/29/2005
Posts: 1212
Well. I know that this is a fairly old game, and I don't remember if this has been brought up or not. But it is a really fun game for an early Dungeon Crawler. THis game could possibly make for a very entertaining TAS. :3
Post subject: Necroing old threads for fun and (no) profit
Joined: 3/25/2010
Posts: 34
So I reloaded this game to attempt a TAS on it ... and it's nightmarish. Manipulating luck in a way that actually gains time is a huge struggle (especially within battle), though I am just starting out. So let's necro a five-year-old one post thread and see if there's even any interest in seeing this game worked on! If anyone has any sort of progress on this particular beast, has interest in seeing it get done, or knows of any exploits/bugs/tricks that would be useful, I'd love to know and get involved. The game is one of my old favorites from when I was a kid.
Post subject: Re: Necroing old threads for fun and (no) profit
Joined: 5/29/2004
Posts: 757
Shyft- wrote:
So I reloaded this game to attempt a TAS on it ... and it's nightmarish. Manipulating luck in a way that actually gains time is a huge struggle (especially within battle), though I am just starting out. So let's necro a five-year-old one post thread and see if there's even any interest in seeing this game worked on! If anyone has any sort of progress on this particular beast, has interest in seeing it get done, or knows of any exploits/bugs/tricks that would be useful, I'd love to know and get involved. The game is one of my old favorites from when I was a kid.
I want to see this game beaten. I could never fully pull it off.. but it was fun! Definitely hoping someone picks this up. Mr. Kelly R. Flewin
Mr. Kelly R. Flewin Just another random gamer ---- <OmnipotentEntity> How do you people get bored in the span of 10 seconds? Worst ADD ever.
Post subject: Re: Necroing old threads for fun and (no) profit
Editor, Expert player (2460)
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
Mr. Kelly R. Flewin wrote:
I want to see this game beaten.
Me too.
Joined: 5/29/2004
Posts: 757
http://www.gamefaqs.com/nes/587676-swords-and-serpents/faqs A decent FAQ that also has ASCII maps within which will definitely help. Enemy randomness sucks big time though.... but I am sure toying with RNG will allow some control. Not sure how much levelling you'd want to do to ensure you have HP to Manipulate enemy encounters. Not sure if it will be quicker to use Last Resort to shortcut back to a temple on levels 1, 5 or 10. Manipulating drops is going to probably be a total bitch, but at least drops are WAYYYYY better then what the armory will offer you, which means money is pointless. Not sure how exactly battles work.. I mean I used to use a turbo controller to go insane... hard to tell exactly what triggers the enemy to attack or remain dormant. Frame rule or something? I think a TAS will definitely make quick work of this.. probably 20 mins worst case.. maybe 15, since you need all 7 Ruby Treasures. Hope this little bit is of some meager assistance to anyone wanting to speedrun this undderated RPG. Edit: Just remembered that when you run from battle, you get ejected back one square. I think this definitely has its advantages.. but I wish I knew if you could go backwards into a scripted encounter and run and then go past the square, or if it ejects you back to the square you arrived from, regardless of the wrong direction. Mr. Kelly R. Flewin
Mr. Kelly R. Flewin Just another random gamer ---- <OmnipotentEntity> How do you people get bored in the span of 10 seconds? Worst ADD ever.
Post subject: Initial Research
Joined: 3/25/2010
Posts: 34
Well, I've had no problem beating the game, and on fairly low levels, and gave it a mini test run. The RNG is more Dragon Quest / Warrior style than Final Fantasy style, so all unwanted encounters can be avoided through proper movement manipulation. I'd assume a LUA script would do so in the optimal number of frames, but I'm not even sure where to get started on something like that (or if it's even available and can meet the needs). Taking a step the first frame that it doesn't result in a battle seems great, but will lose frames in the long run because in many instances more frames can be gained back by waiting an extra 1 or few on an earlier step =/. Anyway, assuming a solution for that, dealing with in-battle RNG seems like the trickiest part. You have to balance the ability to get extra attacks in (as the game allows) with the success rate of attacks and manipulation of enemy movements. Fun times. My time is short this upcoming week (will be out of town) but I may work on this later next month.
Joined: 5/29/2004
Posts: 757
http://forum.speeddemosarchive.com/post/swords__serpents_not_your_parents_dd.html I am planning on speedrunning this at some point in the future and apparently so is Feasel. I'm popping the link up for anyone who may consider a TAS of this title, so they can gain from our information findings. Edit: a LOT of new info is now available, and also at the aforementioned link is a 2 Part test route run by Feasel and later in the thread, my thoughts and my FM2. [Which desyncs?!] Definitely a treasure trove of info if this will ever be TAS'd. Would love to get a lua script for this game to figure out the more important stuff, like how to determine if something is going to be dropped from an enemy and more importantly, does AC do jackshit, or does awesome rolled chars do it all and it's a ruse. Well that and the more important question that's bothering us. Does holding a directional on the pad with the attack button actually WORK or was the manual lying to us? Mr. Kelly R. Flewin
Mr. Kelly R. Flewin Just another random gamer ---- <OmnipotentEntity> How do you people get bored in the span of 10 seconds? Worst ADD ever.
Joined: 4/29/2005
Posts: 1212
Wow, It'd been so long that I'd forgotten I even made this thread. xD Course I haven't exactly been very active on the forum for the last few years anyway. Feasel has a 1:11:10 on a speedrun of this game. I'm sure a TAS can do better.
Joined: 5/29/2004
Posts: 757
Kitsune wrote:
Wow, It'd been so long that I'd forgotten I even made this thread. xD Course I haven't exactly been very active on the forum for the last few years anyway. Feasel has a 1:11:10 on a speedrun of this game. I'm sure a TAS can do better.
Yeah, Feasel was a BEAST with the new path that has been devised. 3 Mages and a Warrior... though I am unsure if a Thief is better. Definitely 1 Mage, 3 Thieves may have potential... or 1 Mage, 1 Warrior and 2 Thieves. Thieves to crit hits a lot and Warrior can equip Ruby Sword for 3 hits. A TAS will manipulate enemies to get 2 or 3 +3 swords from enemies starting on Level 10, depending on how you wish to go about it. Mr. Kelly R. Flewin
Mr. Kelly R. Flewin Just another random gamer ---- <OmnipotentEntity> How do you people get bored in the span of 10 seconds? Worst ADD ever.
Joined: 4/29/2005
Posts: 1212
1 Mage would be impossible outside of a TAS. Especially if the party is only Level 5 or 6. In a regular speedrun, you really need at least two Mages casting Major heal, otherwise the dragon is going to kill you. I'm not really sure if a Warrior or thief is better, either. Thief if you can proc his crits on every hit. Otherwise Warrior would be best for raw brute attack power because of the Ruby Sword which grants you 4 attacks per turn.
Joined: 5/29/2004
Posts: 757
FINALLY! Thanks to AnS, I now have found a version of FCEUX that LETS ME record Swords and Serpents!@ ANYWAYS, First you will require FCEUX 2.16 Interim SVN 2620 which can be found here; http://fceux.com/zip And now for the concept run itself! http://dehacked.2y.net/microstorage.php/info/1250321623/Swords%20%26%20Serpents%20-%20Don%27t%20Take%205%2C%20Take%20What%20You%20Want%20To%20Take.fm2 This was done as a concept run for Swords and Serpents for a future run to SDA on an actual console. I wanted to work out the most optimal pathway and luck to get an idea of roughly how fast insanely good luck would be and how to guage what a good run time would be. http://forum.speeddemosarchive.com/post/swords__serpents_not_your_parents_dd.html This is the thread stared on SDA by me, after being inspired by this very thread here. I hope this willl inspire someone to TAS this badboy and bring it to its knees. It's definitely going to be a challenge as it's RNG hell to say the least! Mr. Kelly R. Flewin
Mr. Kelly R. Flewin Just another random gamer ---- <OmnipotentEntity> How do you people get bored in the span of 10 seconds? Worst ADD ever.
Joined: 5/29/2004
Posts: 757
Updating this thread with information that will hopefully intrigue someone to TAS the shit out of this RNG Insane game. Thanks to Gyre on the SDA forums for this information! --- First post is data on how the game memory is laid out. Like most NES games zero-page memory is used heavily especially in the combat routines. Here are some offsets I found useful (locations in hex): 01E Frame counter (0-60) 01F Second counter (0-60, increments when 01E flips) 020 Minute counter (0-60, increments when 01F flips) 021 Hour counter (0-23, increments when 020 flips) 022 Counter (increments when 01E flips) 064 Player1 Initiative 065 Player2 Initiative 066 Player3 Initiative 067 Player4 Initiative 068 Monster1 Initiative 069 Monster2 Initiative 06A Monster3 Initiative 06B Monster4 Initiative 06C Monster5 Initiative 06D Monster6 Initiative 06E Monster7 Initiative 06F Monster8 Initiative 070 Party Hit Roll 071 Party Evade Roll 072 Party Damage Roll 073 Monster Hit Roll 074 Monster Evade Roll 075 Monster Damage Roll 083 Number enemies 085 Active Monster 087 Active Player 09C-09D Treasury 09E-09F Experience 0A0 Exp. Level 0A2-0A5 RNG scrambling bytes 0E0-0EF Scratch space 0F0-0FF Temporary table pointers Character data is stored at 600 with 20 offset between each record: 00-05 Name 06 Strength 07 Intelligence 08 Agility 09 Health 0A Spell Points 0B Profession (00- Magician) (01- Warrior) (02- Thieft) 0C-11 Inventory (| 80- Equipped) (00- Jewel) (01- Sword) (02- Dagger) (03- Broadsword) (04- Axe) (05- Staff) (06- Leather) (07- Shield) (08- Halberd) (09- Plus 2 Sword) (0A- Long Sword) (0B- Great Sword) (0C- Great Axe) (0D- Wizards Wand) (0E- Scale) (0F- Helmet) (10- Ruby Glasses) (11- Plus 2 Sword) (12- Horseshoe) (13- Gold Key) (14- Mirror Shld) (15- Silver Sword) (16- Red Staff) (17- Death Dagger) (18- Silver Helm) (19- Chain) (1A- Glow Cloak) (1B- Glow Sword) (1C- Mage Staff) (1D- Plate) (1E- Mage Cloak) (1F- Ruby Ring) (20- Ruby Shield) (21- Ruby Helmet) (22- Mithril Chn.) (23- Brass Key) (24- Ruby Crown) (25- Blood Dagger) (26- Rope) (27- Spell Staff) (28- Quickblade) (29- Plus 3 Sword) (2A- Mithril Shld) (2B- Crush Mace) (2C- Magic Plate) (2D- Mage Ring) (30- Shovel) (31- Fire Sword) (32- Fire Shield) (33- Ruby Sword) (3A- Blk Crystal) (3B- Ruby Amulet) (3C- Plus 1 Sword) 12-13 Spells Known (| 0100- Heal) (| 0200- Flash Fire) (| 0400- Sting) (| 0800- Shield) (| 1000- Deadeye) (| 2000- Death Mist) (| 4000- Strength) (| 8000- Passwall) (| 0001- Thunder) (| 0002- Viper) (| 0004- Phalanx) (| 0008- Stun) (| 0010- Major Heal) (| 0020- Flight) (| 0040- Regenerate) (| 0080- Crystallize) 14 AC 15 Maximum Health 16 Maximum Spell Points In combat monster data is stored at 680 with 16 offset between each record. Don't have the record layout typed up yet. When mapped item data is stored at 8000 with 16 offset between each record. This is paged from ROM so isn't always available. 00-0B Item Name 0C Initiative 0D To-Hit 0E Damage1 0F Damage2 10-11 Cost 12 Armor Class 13 Foes Hit Min 14 Usable By (| 01- Magician) (| 02- Warrior) (| 04- Thief) 15 Foes Hit Max Efficiency = Initiative + To-Hit Damage Class = Damage1 * Damage2
Mr. Kelly R. Flewin Just another random gamer ---- <OmnipotentEntity> How do you people get bored in the span of 10 seconds? Worst ADD ever.
Joined: 5/29/2004
Posts: 757
2nd post from Gyre --- I'm not a LUA expert but I've got a WIP script for displaying the raw combat stats. function PlayerStats() for curplayer = 0, 3, 1 do local initiative = memory.readbyte(0x64 + curplayer) local hp = memory.readbyte(0x609 + 0x20 * curplayer) local ypos = 1 + 10 * curplayer local stats = string.format("P%u Initiative %u HP %u", curplayer, initiative, hp) gui.text(1, ypos, stats) end end function MonsterStats() local maxmonster = memory.readbyte(0x83) if maxmonster > 8 then maxmonster = 8 end for curmonster = 0, maxmonster - 1, 1 do local initiative = memory.readbyte(0x68 + curmonster) local hp = memory.readbyte(0x684 + 0x10 * curmonster) local ypos = 1 + 10 * curmonster local stats = string.format("M%u Initiative %u HP %u", curmonster, initiative, hp) gui.text(140, ypos, stats) end end function CombatResults() local ypos = 91 for i,str in ipairs(combatstrs) do gui.text(1, ypos, str) ypos = ypos + 10 end end amonster = -1 function ActiveMonster() amonster = memory.readbyte(0x85) end function UpdateCombatResults() local n = table.getn(combatstrs) local aplayer = memory.readbyte(0x87) local tohit = memory.readbyte(0x70 + 3 * lastcombat) local evade = memory.readbyte(0x71 + 3 * (1 - lastcombat)) local damage = memory.readbyte(0x72 + 3 * lastcombat) local hit = false if lastcombat == 0 then hit = tohit >= evade attacker = string.format("P%u", aplayer) defender = string.format("M%u", amonster) elseif lastcombat == 1 then hit = tohit > evade attacker = string.format("M%u", amonster) defender = string.format("P%u", aplayer) end damagestr = string.format("%s To Hit %u vs %s Evade %u", attacker, tohit, defender, evade) if hit then damagestr = damagestr .. string.format(" (%u damage)", damage) else damagestr = damagestr .. " (miss)" end combatstrs[n] = damagestr end memory.registerwrite(0x75, UpdateCombatResults) function NewCombatResult() table.insert(combatstrs, "") if table.getn(combatstrs) > 6 then table.remove(combatstrs, 1) end end function PlayerAttack() ActiveMonster() end memory.registerwrite(0x70, PlayerAttack) function PlayerEvade() if not incombat then lastcombat = 1 incombat = true ActiveMonster() NewCombatResult() end UpdateCombatResults() end memory.registerwrite(0x71, PlayerEvade) function PlayerDamage() ActiveMonster() UpdateCombatResults() end memory.registerwrite(0x72, PlayerDamage) function MonsterAttack() ActiveMonster() end memory.registerwrite(0x73, MonsterAttack) function MonsterEvade() if not incombat then lastcombat = 0 incombat = true ActiveMonster() NewCombatResult() end UpdateCombatResults() end memory.registerwrite(0x74, MonsterEvade) function PlayerInitiativeChange(address, size) incombat = false end memory.registerwrite(0x64, 4, PlayerInitiativeChange) minitiative = {} function MonsterInitiativeChange(address, size) local initiative = memory.readbyte(address) if minitiative[address] == nil then minitiative[address] = initiative return end local initiativechange = initiative - minitiative[address] if ((not incombat) or (lastcombat ~= 1)) and initiativechange >= -5 and initiativechange < 0 then NewCombatResult() local n = table.getn(combatstrs) combatstrs[n] = string.format("M%u passed", address - 0x68) end incombat = false minitiative[address] = initiative end memory.registerwrite(0x68, MonsterInitiativeChange) memory.registerwrite(0x69, MonsterInitiativeChange) memory.registerwrite(0x6A, MonsterInitiativeChange) memory.registerwrite(0x6B, MonsterInitiativeChange) memory.registerwrite(0x6C, MonsterInitiativeChange) memory.registerwrite(0x6D, MonsterInitiativeChange) memory.registerwrite(0x6E, MonsterInitiativeChange) memory.registerwrite(0x6F, MonsterInitiativeChange) lastcombat = -1 incombat = false combatstrs = {} emu.speedmode("normal") while true do if lastcombat == -1 and memory.readbyte(0x15) == 2 then lastcombat = 2 end if memory.readbyte(0x86) > 0 then combatstrs = {} lastcombat = -1 end if lastcombat >= 0 then PlayerStats() MonsterStats() CombatResults() end emu.frameadvance() end
Mr. Kelly R. Flewin Just another random gamer ---- <OmnipotentEntity> How do you people get bored in the span of 10 seconds? Worst ADD ever.
Joined: 5/29/2004
Posts: 757
Final post from Gyre ---- Finally, some of the combat mechanics. The basic turn order uses an initiative system. Each of your characters has a starting initiative = random[0,9] + agility + intelligence + weapon initiative + currentHP - maxHP. Monsters have a simpler formula replacing the non-random components with a value in the monster record. The current turn is based on the highest initiative. In case of ties, monsters (in their order 1, 2, ...) go first followed by player characters (in their order). Taking a turn drops your initiative by 5 (set to 0 if you had a positive score but less than 5 points left). When everyone's initiative reaches 0, the initiative round is over and the numbers are all rerolled. Monsters can choose to pass their turn which deducts from initiative without taking an action. There are 2 major bugs with how initiative works. The first bug is the initiative underflow glitch. This is a really good bug. You'll notice that your initiative is penalized by the amount of damage you've taken. If all of the other factors are bad you can underflow to 255 initiative. Since each turn costs 5 initiative this often gives you 30+ turns of action in a row before anyone else gets to go. Unfortunately your bad stats will make the character suck so it requires careful building. The best way to exploit it is using a warrior at 2 intelligence with a low-initiative weapon that has high to-hit (luckily the Ruby Sword fits this) and with as much agility as you can get away with safely. The second bug is the zombie attack glitch. This is a really bad bug. When a monster gets killed, it's initiative gets set to 0 to take it out of combat. Monster HP is never checked again so when the initiative round ends dead monsters get a new initiative value just like everyone else. This lets all of the dead monsters rejoin combat and start attacking again. Since they're already dead there's no way to kill them again to stop it from happening. For party members the basic combat formulas are: to-hit = random[0,9] + agility + weapon to-hit evade = agility + AC Your attack is successful if player to-hit >= monster's evade. The other way around it's monster to-hit roll > player's evade. When calculating to-hit monsters roll a random[2,12] choice. If 2 <= random < 11 then to-hit = random + monster base to-hit if random >= 11 then to-hit = 128 + monster base to-hit This gives monsters a devastating ability to bypass your evade. It's basically impossible to build an invulnerable tank warrior because better armor stops making a difference once you're 10 points over the monster's base to-hit. Pushing buttons in combat has been a long-standing debate. The only code I can find is when you're pushing up while attacking. That gives the monster +4 to their evade but does an extra die of damage if the attack hits. The best way to use this is against monsters that have crummy evade so you're always hitting them anyway. Outside of a TAS it's probably not a good idea for most encounters.
Mr. Kelly R. Flewin Just another random gamer ---- <OmnipotentEntity> How do you people get bored in the span of 10 seconds? Worst ADD ever.
ars4326
He/Him
Experienced player (764)
Joined: 12/8/2012
Posts: 706
Location: Missouri, USA
So I have a story to share about this game which happened to me about 5 years ago, playing this on the NES. I was in the process of doing a full playthrough, mapping out the entire game on pencil and graph paper. Real old-school stuff. Anyhow, as I was going through and mapping out Level 9, I made my way up to the top-middle part of the map and PASSWALL'd through into the room containing the tile giving you 1,000 XP (circled on the pic).
I have no idea how or why this next part happened, but immediately after I cast PASSWALL, the game went directly to the ending! At first I thought the game crashed due to the seizure-like graphics, but it was the legit ending scene with the 'Hall of Fame' screen and all that. I ended up resetting and continuing, and didn't have that happen again on the 8th floor. It did happen to me one other time later on in the game, though. No idea what causes this to happen. Just wanted to throw this out there to inform that there's something glitchy within the game's RNG which can cause a game-end glitch.
"But as it is written, Eye hath not seen, nor ear heard, neither have entered into the heart of man, the things which God hath prepared for them that love him." - 1 Corinthians 2:9
Patashu
He/Him
Joined: 10/2/2005
Posts: 4017
Another NES game with ACE? Sure, why not!
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
ars4326
He/Him
Experienced player (764)
Joined: 12/8/2012
Posts: 706
Location: Missouri, USA
I dug around the house and found my old maps :D Here's an upload:
Slight correction as it was actually Level 9. Also, the game-end glitch occurred in the upper-left corner of the wall leading into the room with the 1,000 XP. I'll edit in the corrections to my prior post.
"But as it is written, Eye hath not seen, nor ear heard, neither have entered into the heart of man, the things which God hath prepared for them that love him." - 1 Corinthians 2:9
Joined: 5/29/2004
Posts: 757
ars4326 wrote:
I have no idea how or why this next part happened, but immediately after I cast PASSWALL, the game went directly to the ending! At first I thought the game crashed due to the seizure-like graphics, but it was the legit ending scene with the 'Hall of Fame' screen and all that. I ended up resetting and continuing, and didn't have that happen again on the 8th floor. It did happen to me one other time later on in the game, though. No idea what causes this to happen. Just wanted to throw this out there to inform that there's something glitchy within the game's RNG which can cause a game-end glitch.
o.o;; Wowsers.. I mean this game is RNG nightmare in a box of RNG nightmare... but to think it may be possible to end it like that? This means the game could be beaten around 10-12 mins depending on manipulation... and that's scary as fuck. Hopefully now with all the info provided in my prior posts, and this potential, someone will be willing to give this a shot. Mr. Kelly R. Flewin
Mr. Kelly R. Flewin Just another random gamer ---- <OmnipotentEntity> How do you people get bored in the span of 10 seconds? Worst ADD ever.
Skilled player (1706)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Try making a test run and see if you can get it to happen while recording, so others can analyze the event. :o
Joined: 9/13/2018
Posts: 3
ars4326 wrote:
Level 9, I made my way up to the top-middle part of the map and PASSWALL'd through into the room containing the tile giving you 1,000 XP . . . I have no idea how or why this next part happened, but immediately after I cast PASSWALL, the game went directly to the ending! No idea what causes this to happen.
jlun2 wrote:
Try making a test run and see if you can get it to happen while recording, so others can analyze the event. :o
Just noting for posterity that this ought to be reproducible. On a real NES-101, I was able to trigger it nearly every time I entered that room, by pacing back and forth repeatedly in the corners. Then I forgot about it because I was trying an ironman win and it seemed cheap. :7 (Sorry for bumping without even attempting a test movie, but compiling any emu on this ancient computer is baffling me currently. HTH.)
Post subject: Complete TAS
peraxel
He/Him
Joined: 3/16/2019
Posts: 1
Location: Sweden
So this thread inspired me to make my first ever TAS. This is a 00:06:57 any% run counting from Power-on to last input. Youtube: Link to video FM2: User movie #53903553681581760 I'm sure this can be optimized but I didn't feel like going back and messing up RNG everytime I discovered something new late game. Basically the entire run needs to be redone so if anyone feels like it, go at it. So I'll do a breakdown of this run and if anyone has questions feel free to ask. Description: This run skips all random encounters and item drops, takes damage to save time and uses a glitch on level 9 to fight an alternative final boss. It relies heavily on luck manipulation to determine the type of enemy fought during forced encounters and kills most of them using the thieves lucky strike. Choosing game: RTA: Timing doesn't start until after characters are created so players roll dice and assemble a nice team. TAS: Time starts at power on and the run is short enough that it is faster to just go with the pre-existing team. Level 1: RTA: Runners usually use Last Resort here teleporting them to the temple giving them fewer squares to walk on and lessening the chance of random encounters. TAS: Faster to manipulate encounters and run straight through the level. First encounter is killed normally as this was 2 frames faster then waiting for a instakill frame. Level 2: RTA: Picks up a Plus 2 Sword. TAS: Simply walk through the level. Level 3: RTA: Due to use of healing from random encounters a runner may pick up a magic fountain here. TAS: Walking through the trap is faster then walking around. Skips fountain as it is faster to walk around it. Also, after hitting the first switch, moving backwards and then turning saves frames over having to turn twice to exit the room, this is because of animation frames when turning. Level 4: RTA: Once again can pick up a fountain to replenish magic. TAS: Walks around the fountain. Level 5: RTA: Passwall greatly decreases chances of random encounters. TAS: Can skip random encounters so combines Passwall with walking for shortest path (measured in frames). Level 4(again): RTA: Now with Passwall a teleporter to level 9 can be reached. TAS: Same. Level 9: RTA: Flight to not get teleported away, uses glitch to fight alternative boss. TAS: Picks up 1000exp to reach level 4. (Was unable to use thiefs instakill on boss while only on level3.) Tricks: Random Encounters: Can be avoided by walking 1-2 frames later. Forced Encounters: Who you fight and what initiative values are set can be manipulated by which frame the fight is entered on. These are my notes from level 2 where you can see I delay until frame 4774 to get the initative I want. ---------------- Enemy 1 - BOSS 4774 For great Initiative. ($0064-$0067) vs Monster ($0069-$006c) 4923 4940 4956 insta 4972 4988 4999 pressed until 5001 5039 insta 5054 5069 5088 5102 5126 insta 5141 5157 5172 5186 5196 insta 5356 Greenzone ---------------- 4771 - Goblin 41 32 33 37 vs 34 34 32 26 4772 - Goblin 39 39 35 34 vs 33 33 27 34 4774 - Goblin 33 39 27 39 vs 29 25 32 32 4775 - Goblin 38 38 30 34 vs 27 26 34 29 4778 - Goblin 32 35 32 32 vs 34 25 34 33 4779 - Goblin 33 34 33 40 vs 27 32 30 26 4781 - Goblin 35 34 29 37 vs 27 33 25 25 And here are notes from first fight in level 1 where you can see monster type changing dependending on frame. ---------------- Enemy 1 ---------------- 0601 - Spider 34 33 30 41 0707, 0722, 0737, 0750, 0785 - Instakill, 0945 Greenzone 0602 - Spider 34 33 30 41 0707, 0722, 0737, 0750, 0785 - Instakill, 0945 Greenzone 0603 - Zombie 36 37 34 41 0758, 0770, 0801 - Instakill, 0958 Greenzone 0604 - Bat 40 35 33 40 0732, 0749, 0766, 0780 - Regularkill, 0939 Greenzone 0604 - Bat 40 35 33 40 0732, 0747, 0762, 0782 - Instakill, 0941 Greenzone 0605 - Spider 41 31 35 38 0606 - Zombie 33 35 34 38 0607 - Bat 41 34 31 36 0608 - Guard 33 30 31 32 0609 - Spider 40 36 30 34 0610 - Spider 35 34 32 32 0611 - Zombie 32 39 36 32 ... (haven't checked what comes next) Thief Instakill: So the thief has an instakill ability that is randomly triggered. The RNG for this depends on what the framecounter ($001e) is and the values at $00a2-a5. Button presses in fights change the a2-a5 values. This means that if you find a frame where you instakill, it cycles and repeats every 60 frames, that is you can press the button 60 frames sooner or later because the a2-a5 are the same and the framecounter goes from 0-59. If you cannot find an instakill (or want a faster one) you can change the a2-a5 setup by changing frame of last button press on previous character. Also the last boss didn't seem instakillable at character level 3 however there is a 1000xp bonus right next to the glitch warp which gets you to character level 4. Glitch Warp: No idea how this works. RTA runners use it so I did what they do. Have not been able to find any information at all about this glitch or how it was discovered.