Werewolf TAS by andrewg & AnS

Recorded with FCEUX 2.0.4-interim
Completed in 9:00 (32428 frames)
- Aims for fastest time
- Takes damage to save time
- Abuses programming errors in the game
- Manipulates luck
- Genre: Platform

About the game

Werewolf - The Last Warrior is an old NES platformer with good visuals and bad programming.
The game's slow-paced and actually quite repetitive. On some levels (as 2-2) there isn't a single enemy! Fortunately, glitches made it TAS-worthy, and we've tried our best to make the game look more amusing.
The main character of the game has 3 forms: weak Man, average Werewolf and strong Super Werewolf. These forms have different jumping heights and attack powers.
It's pretty easy to turn into Werewolf, you just need to collect a red W (and it's even easier to lose the status and turn back to Man), but for Super Werewolf form you have to search for hidden "anger" powerups, and after collecting 5 of them, you have a limited amount of time to use the Super form.
The currently published TAS of the game didn't use the Super form at all, thus it was clearly improvable from the very beginning. Just by using Super Werewolf you could shave about 20 seconds. But there appeared to be so much more...

Authors comments

andrewg: This is my first TAS and it turns out that I really enjoy TASing. I never knew about how awesome Werewolf was until pretty recently. In early 2008, "Frezy_man" over at Speeddemosarchive posted a cash bounty for 100 dollars for a speedrun of Werewolf. Of course, I decided to check the game out as I had never heard of it before. At first I didn't know what to think of the game, but after playing it a bit, I really enjoyed it and decided to speedrun it. The game was pretty tough, but I enjoy a tough NES game. After I finished the speedrun and won the bounty I decided to watch the TAS (I didn't know one existed until after I finished). The TAS didn't do one very minor glitch that I found while speedrunning the game. So I knew the TAS was improvable from the start. So I decided that I should try my hand at TASing Werewolf. After a few weeks of TASing AnS joined my project.
AnS: I liked this game from the moment I got it on pirate multicartridge, even though it was one of hardest titles on NES. Once in 2006 I already tried improving upon currently published run, but the initiative got buried under huge amount of small optimizations needed to perfect the run. Yeah, the game appears to be even harder to TAS than to play. The one task that made me quit TASing the game was: planning Anger powerups. There was several different 'routes' of collecting them, and no way to choose fastest one without thorough and tedious tasing. Who could predict that these powerups would become unnecessary? When andrewg started the project, I remembered everything from 2 years ago and tried to help out just a little bit. But soon we found a lot of great glitches which brought the game to completely another level of TASing. I mean, hey, it was supposed that old run is improvable by 20-25 seconds at most, and now we have about 2.5 minutes!

Optimizing the run

The game is sure evil. It has tons of little quirks that slow you down almost unnoticeably. Even in Frame Advance sometimes it's hard to notice you've lost a frame or two.
Some examples:
Falling from ledges costs 1 frame, landing costs 2 frames. Preparing high-jump costs 2 frames if you're walking and 1 frame if you're standing or just landed.
Ducking and standing costs 1 frame each.
Backflips cost 8-10 frames.
Attacking while jumping costs 1 frame, but it can be avoided if you manage to land before attack animation ends. Also you can press A+B to make invisible attack without animation at all, but it doesn't work with arrows.
Taking damage costs 5 frames at the very least.
There's some more I forgot about.
Surprisingly, there's no lag in the game.
Attacks table:
Man punch1
Man scream2
Man scream+punch (attack in same frame)3
Werewolf slash2
Werewolf howl8
Werewolf shooting3
Super Werewolf slash4
Super Werewolf howl8
Super Werewolf shooting3
Super Werewolf shooting+slash7

Tricks&Glitches

Saving charge
To perform a Howl or Scream attack you have to charge up by standing still and holding A. If you start walking or doing something, charge meter will freeze. If you then stop without having A pressed, charge meter will be nullified. So in order to bring some amount of charge from one boss to another you need to have some button being pressed at all times. This way you can charge in little portions, saving time for the next battle.
Pause glitch
Pause cancels screen flashing or fading animation. This way you can save time needed for transformations and even break level transition procedure. It's also possible to cancel the effect of Howl. Press Start just the frame after releasing A with full charge meter. Also pressing Start on the frame you're taking red/blue W to change form will eliminate the time-wasting flashing effect. As for level transitions, the matter is even more interesting. If you press Start on the frame Werewolf exits a level, the game assumes you're already on the next level, so it doesn't load new graphics, doesn't change current music and doesn't clean important memory variables. E.g. you can bring enemies (which are nothing but data objects) with you from one level to another. There are places where pause glitch doesn't work though.
Penetrating walls
This glitch was known as the LDR-walk. By ducking and holding Left+Down+Right you can walk inside any wall. Obviously, you cannot do it while jumping. Now, to sink into a wall while in midair you have to alternate the Left-Right buttons each frame. Timing is critical.
Wallzipping
After getting stuck inside a wall most of time your only option is to press jump and fall down. But with some blocks it's possible to climb the wall from inside, thus gaining the ability to jump once more - deeper into the wall. With constant jumping and grabbing adjacent blocks it's possible to move Werewolf inside a wall with the speed of 8 pixels per frame!
Manipulating bosses
Bosses AI is very simple. Most of attacks are defined by amount of boss HP. For example, most of bosses will jump away after being hit if their HP is dividable by 4. So it's necessary to ensure every attack leaves boss with an odd amount of HP. This way we eliminated nearly every bosses' jumping.
Item duplication glitch
Some of BG tiles contain valuable items and powerups. To retrieve an item you have to punch the object containing it, even if it says "DON'T KNOCK". The game memorizes where you've knocked, so normally you can't take more than one item from one holder. Hovewer, there's very limited amount of memory, so each time you cross invisible border between screens (1 screen = 256 pixels of width) the game forgets everything you did in the previous screen. When scrolling works as intended (Werewolf is always in the middle of screen) there shouldn't be any contradiction - you can't return back too far. But by using LDR or backflips it's possible to make Werewolf walk near right edge of screen, so he can retrieve an item before screen scrolls closer to the object holding it. Then after BG offset = 00 (border between two screens) the game forgets you've already knocked there, so you can take second item right away. At first we planned to use item duplication to get more Anger powerups, so we could transform into Super Werewolf more often. But then andrewg just duplicated red W powerup and it appeared to give player INFINITE Super Werewolf power. This meant there was no more need to optimize powerup picking routes! It's impossible to express how much time and nerve this finding has saved.
Ladder shift
By approaching any ladder via LDR you can grab it 12 frames earlier. Even if you don't want to climb up, you can save 8 frames by grabbing and immediately releasing the ladder. If you're facing right while climbing a ladder, the screen will scroll forward. To avoid this, simply turn left before grabbing a ladder.
Skipping Giantheads
These minibosses are in fact usual enemies, and most of time there's a way to prevent them from appearing. With Super Werewolf high-jump it's possible to jump over boss' spawn range, but in some levels this requires certain allocation of other enemies on screen. At first, each Gianthead battle seemed impossible to skip, but at the end we pulled it off somehow. Only the first and second Giantheads aren't skipped, because we didn't have Super Werewolf there yet.

Memory addresses

AddressMeaning
6Fscrolling offset
70screen number
!006Fbg X
422player X
425player Y
424Y subpixel Very important for some jumps
46FBoss damage
466Boss timer Timing attacks and actions
481Boss invincibility timer
450Charge
508lightning id important for luck manipulation
44eform (Man/Werewolf/Super Werewolf)
44darrows
44fattack type (slash/shoot)

Using Lua

The one real downside of using the Pause glitch is that after using it on level transition the game screws up graphics, so you can't see sprites, also background is unreadable. At first it didn't look as a major problem, but when it came to optimizing wallzipping in 3-2 this became a real pain. Of course there is Memory Watcher, so it's not particularly hard to play invisibly, it's just hard to play precisely. So after getting frustrated by uncertainty, I learned basics of Lua scripting and wrote an awesome visualization script. It shows Werewolf's checkbox even when there's no Werewolf sprite on screen. Also it draws enemies and powerups, so the whole game now can be played without sprites at all. As for background, the script uses two main variables to inform the TASer about current collisions with BG.
The full script can be found here: http://shedevr.org.ru/temp/werewolf.lua
Even later, in levels with visible graphics this script helped a lot. I'm so glad I paid attention to Lua.

Level by level notes

1-1 There's useful technique for Man form of Werewolf: if you shoot projectile and punch an enemy on the frame the projectile touches it, then both hits will be counted. First Gianthead battle was significantly improved by using this tech to avoid jumping. Attacks go like this: +3, +3, +3, +2, +3, +3, +3, so the boss doesn't have a chance to jump (as his HP is never dividable by 4).
1-2 It's not visible, but there are some important preparations needed to finish the boss quicker.
2-1 There is a lot of hidden items in this level, and many of them can be duplicated, so it's time to turn to Super Werewolf. Only Man can retrieve red Ws, so first we need to lose Werewolf status by taking blue W. Although Super Werewolf moves with the same speed as Man, somehow the pace of the game becomes more energetic. Even Gianthead of this level now can be skipped without slowing down or going underground.
2-2 Some lightnings tend to strike very close to Werewolf, but they can be manipulated away by tactical jumping.
3-1 Some of the underground tiles can be used to zip through. Unfortunately, camera only scrolls by 1 pixel per frame, so if you zip too fast you can wrap back to left side of screen.
3-2 A lot of things are done invisibly - zipping through set of walls, using every ladder to boost, crossing walls in midair and obtaining invisible arrow for boss. In Fireman battle I had to take damage, because I need more time for charging. You can't charge while jumping, so at the end of the battle Werewolf has only 2 HP left. In fact, he dies on the frame the game stops for playing fanfares!
4-1 Yes, the level is as difficult to play as it seems. At the end there's another Gianthead miniboss, and we decided not to skip him, but take along with werewolf to next level.
4-2 Watch this movie with Lua script running, so that you can see what's going on. Basically, invisible Werewolf is followed by invisible Gianthead down to invisible boss. I'm not making this up! They are there. Trust me. The boss name is "Monster", if that makes more sense... Anyway, invisible Werewolf shoots two invisible arrows and uses two Howls, then player can finally see everyone. Everyone except Gianhead, because Gianthead dies after second Howl. Too bad for him, because the most interesting part just begins. When the game notices miniboss death, it switches boss mode off, thus allowing screen to scroll up. But Monster wasn't programmed to operate in such environment, so he gets murdered in a blink of eye. What's more important, there's supposed to be long death animation of Monster falling down, but we managed to scroll screen in such a way that this animation doesn't even start. Werewolf just wins and goes to next level.
5-1 The way of Kinju miniboss handling actually defines the luck for whole level. Maybe it was possible to have better luck with less enemies (thus less jumps would be needed, as each jump costs 2 frames), but I like how it looks now.
5-2 Another invisible section with enemiy manipulation, Gianhead skipping and arrow taking. For Faryan battle 1 arrow appeared to be faster than 2 arrows, and two last battles were nothing special. It's so itchy that time record is that close to 9:00, but I doubt it's possible to shave 28 frames even by redoing whole movie.
Suggested screenshot - frame 21609

adelikat: Accepting as an improvement to the published movie.
ShinyDoofy: Will process...


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15576
Location: 127.0.0.1
This topic is for the purpose of discussing #2197: andrewg, AnS's NES Werewolf - The Last Warrior in 08:59.58
Active player (348)
Joined: 3/21/2006
Posts: 940
Location: Toronto, Canada
If I had to describe this run in two words, they would be: "Wait, what?" This run was like a good Jean-Luc Goddard film; it left me thoroughly confused but at the same time entertained. I never felt like turboing through any of it because it was all so absurd. VERY nice run, andrew and AnS. 8 for entertainment, 9.5 for tech. Great job all around!
My current project: Something mysterious (oooooh!) My username is all lower-case letters. Please get it right :(
Senior Moderator
Joined: 8/4/2005
Posts: 5777
Location: Away
When two Andrews get together, they become a Super Werewolf TASing team! (Actual slogan for a never released action movie.)
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Sir_VG
He/Him
Player (40)
Joined: 10/9/2004
Posts: 1913
Location: Floating Tower
theenglishman wrote:
If I had to describe this run in two words, they would be: "Wait, what?"
I think it's better described in three letters. WTF?!
Taking over the world, one game at a time. Currently TASing: Nothing
Skilled player (1827)
Joined: 4/20/2005
Posts: 2161
Location: Norrköping, Sweden
Very glitchy run indeed, I enjoyed watching it. Great job!
Active player (293)
Joined: 12/16/2008
Posts: 458
Location: Houston
Not as boring as andrewg claimed it to be. I liked the dance break. I watched it twice once normal and once with lua and I think the lua is better. Is there any precedent for encoding with a lua script? Good job much better then the old run. 8.5/9.6
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
Gimmie a video and I'll give you an upload.
Former player
Joined: 12/5/2007
Posts: 716
Not too long and overly glitchy. I really liked it. Overall, nicely done.
Banned User
Joined: 8/2/2008
Posts: 420
Location: italy
Flygon wrote:
Gimmie a video and I'll give you an upload.
Here is an encode. Nice movie, indeed.
Gone.
Joined: 7/2/2007
Posts: 3960
Thanks for the encode, Nineko! Ahh, Data East, purveyors of fine high-quality software goods. The "Oh!" from the ninjas with guns was pretty good, but honestly I think this is the most WTF part of the run right here:
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Joined: 2/11/2007
Posts: 45
Location: Iowa
You freaking destroyed that game. Nice work. I liked the dancing before Faryan/Magneto showed up.
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
Edit: The video is too long, I'll snip the end of it when I can, but for now, sleep time.
Mitjitsu
He/Him
Banned User
Joined: 4/24/2006
Posts: 2997
I remember trying to TAS the first level when andrewg was first considering taking up the game. At first I thought it wouldn't be too hard, but it all suddenly changed when he found the pause trick and variations in wall glitches. The physical environment still exists, even though it appears messed up at times. As well as having other glitchy side effects which were highly unfavourable. All in all my expectations were greatly exceeded therefore I have given... 7.8 for entertainment 9.2 for technical
honorableJay
He/Him
Joined: 8/18/2008
Posts: 104
Location: Albany, NY
Very nice improvements, and a lot of "wtf??" moments. When this does get published though it might be a good idea to have two encodes, one with and one without the lua script enabled so people who haven't played the game or have a hard time following the glitched segments can figure out what's going on.
Skilled player (1652)
Joined: 11/15/2004
Posts: 2202
Location: Killjoy
That was full of win. Yes ... vote number rank style?
Sage advice from a friend of Jim: So put your tinfoil hat back in the closet, open your eyes to the truth, and realize that the government is in fact causing austismal cancer with it's 9/11 fluoride vaccinations of your water supply.
Joined: 5/11/2006
Posts: 71
WONDERFUL run! I cried from laughing at the music video at the end, it was masterfully done. Great glitchy run too. And holy crap what a messing game! OH!
Samus taught us that a girl doesn't need brains to be successful. Brains are giant, evil, and vulnerable to missiles.
Player (121)
Joined: 2/11/2007
Posts: 1522
I vote yes too. Bonus points for the Lua script :)
I make a comic with no image files and you should read it. While there is a lower class, I am in it, and while there is a criminal element I am of it, and while there is a soul in prison, I am not free. -Eugene Debs
Experienced player (961)
Joined: 12/3/2008
Posts: 939
Location: Castle Keep
That was realy glitchy indeed, great job 8/9 The encode need to use LUA or whatever, its not very fun to watch a screen with no caracter sprites, and a big mess as background :p Beside this problem it was realy fun to watch, its short game and full of glitches, can hardly been better or more entertaining Edit : that end picture realy feel like captain america
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
Just watched it, great run when we could actually see anything. Anyway, I've had to shorten the end, so no credits, and the only good quality format I have on me to encode in is the Mpeg4 one. So the youtube quality will not be very good sorry. ><" Uploaded here. Enjoy.
Editor, Emulator Coder, Expert player (2156)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
Yes vote! EOF
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Joined: 2/26/2007
Posts: 1365
Location: Minnesota
Jeeze, talk about taking artistic liberties. Those fangs and arms are a tad on the ridiculous side of things :P Not seeing the sprite for really cut down the entertainment for me, but everything else look good otherwise. 4/7 respectively. I am going to have to go with a YES.
adelikat wrote:
I very much agree with this post.
Bobmario511 wrote:
Forget party hats, Christmas tree hats all the way man.
Experienced player (702)
Joined: 2/19/2006
Posts: 742
Location: Quincy, MA
I'm pretty sure 4/7 is a no vote :P well.. maybe more like a meh. Shoulda watched it with the lua script. Makes it a bit more enjoyable ;)
Super Mario Bros. console speedrunner - Andrew Gardikis
Joined: 2/26/2007
Posts: 1365
Location: Minnesota
No, no. I didnt find much entertainment in the movie, but can see where others may find entertainment/nostalgia. And the tech looked pretty good. I watched the youtube version, so it wasn't with lua script running. It may have improved entertainment, but the game (to me) is still boring :P
adelikat wrote:
I very much agree with this post.
Bobmario511 wrote:
Forget party hats, Christmas tree hats all the way man.
Experienced player (702)
Joined: 2/19/2006
Posts: 742
Location: Quincy, MA
Sticky wrote:
No, no. I didnt find much entertainment in the movie, but can see where others may find entertainment/nostalgia. And the tech looked pretty good. I watched the youtube version, so it wasn't with lua script running. It may have improved entertainment, but the game (to me) is still boring :P
yeah, I think it could go either way. I mean it's kinda bland at some points. I think it makes for a good TAS if you've played the game because you'd be expecting something a lot different from the run. Honestly I figured some would find it pretty boring. (especially if you've never played it). I mean, the game is pretty slow-scrolling and you can't even see what's happening a large portion of the game. I really wish we could have found something else to speed the game up a bit.
Super Mario Bros. console speedrunner - Andrew Gardikis
Mitjitsu
He/Him
Banned User
Joined: 4/24/2006
Posts: 2997
Does this prove that people seem to think that entertainment and technical are the same thing? Or at least seem to inflate or deflate technical scores based on entertainment.