Posts for TheAxeMan

Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Yup, this is basically a camhack. The desync possibility is the only problem. You should make sure to let your run play through without it occasionally to make sure it doesn't desync. I am doing the same thing with Ultima 4. I can mess around with that desync point some more and make something tailored to the final version when you are ready to submit. To use this you need to copy to a text file and change extension to .lua. Go to tools->new lua window in the gens menu. When the window pops up hit browse and pick the file you made. The one from earlier stays active as you play, the one-time switches below hack the ram once and won't do anything after that. If you have problems with desyncs then run these for one-time switches. On switch: Download turnOnLights.lua
Language: lua

function turnOnLights() memory.writebyte(0xFFC560, 0xFF); memory.writeword(0xFFC562, 0x0800); end; turnOnLights();
Off switch: Download turnOffLights.lua
Language: lua

function turnOffLights() memory.writebyte(0xFFC560, 0x00); memory.writeword(0xFFC562, 0x0000); end; turnOffLights();
Edit: Used the awesome code feature that feos pointed out.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
The mechanics for the candle seem pretty simple. When you use a candle C560 changes from 0 to 0xFF. C652 gets initialized as a two-byte word to 0x800. It goes down every frame you stand around but not when you move. You can hack it to 0x7FFF (it is treated as signed) to get longer candles but I don't think Janus will do much standing around. Every time you enter a dungeon both of those values gets reset to 0. But I found that on entering a dungeon, C551 gets set to 0xFF. So this lua script detects when you enter a dungeon and gives you a free candle. For some reason this caused a mysterious desync in the Sanguios cave. Turning the lights off and back on fixed it though. So comment that part out for a more general script. Download SwordOfVermillion_candle.lua
Language: lua

--Sword of Vermillion script by TheAxeMan --Lights up dungeons as if you had an eternal candle function turnOnLights() memory.writebyte(0xFFC560, 0xFF); memory.writeword(0xFFC562, 0x0800); end; function turnOffLights() memory.writebyte(0xFFC560, 0x00); memory.writeword(0xFFC562, 0x0000); end; wasInDungeon = (memory.readbyte(0xFFC551) == 0xFF); while (true) do nowInDungeon = (memory.readbyte(0xFFC551) == 0xFF); if nowInDungeon and not wasInDungeon then turnOnLights(); end; --This hack avoids a mysterious desync if gens.framecount() == 99800 then turnOffLights(); end; if gens.framecount() == 100600 then turnOnLights(); end; wasInDungeon = nowInDungeon; gens.frameadvance() end;
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Here is how the RNG and encounters work: At every step there is an RNG roll with about 1/16 chance of getting a fight. After 20 steps you get a fight no matter how lucky you are. The RNG only changes once per step outside of battle but goes crazy in battle and seems to change every frame. You can delay leaving or finishing a battle by a small number of frames to manipulate the maximum 20 steps between battles. Killing enemies might also make a difference depending on how they use the RNG. Interesting memory locations: C0A0 - RNG seed (32 bits) C685 - Step counter (8 bits) C69C - Encounter rate (16 bits) Here is a disassembly of the subroutine at $FB5C that calculates the next random number:
MOVEM.l D1, -(A7)       [Saves off D1]
MOVE.l $FFFFC0A0.w, D1  [Copy C0A0 - the RNG seed - to D1]
BNE.w *+$8              [Skip next unless that was 0]
MOVE.l #$2A6D365A, D1   [Initialization]
MOVE.l D1, D0           [Copy D1 to D0]
ASL.l #2, D1            [Shift D1 2 bits]
ADD.l D0, D1            [Add D0 to D1]
ASL.l #3, D1            [Shift D1 3 bits]
ADD.l D0, D1            [Add D0 to D1]
MOVE.w D1, D0           [Copy low 16 bits of D1 to D0]
SWAP D1                 [Swap low and high 16 bits of D1]
ADD.w D1, D0            [Add low 16 bits of D1 to D0]
MOVE.w D0, D1           [Copy low 16 bits of D0 to D1]
SWAP D1                 [Swap low and high words of D1]
MOVE.l D1, $FFFFC0A0.w  [Save new RNG to memory]
MOVEM.l (A7)+, D1       [Restore old D1]
RTS
After this routine the value in register D0 is used as the random number. Here is how that gets used for encounters:
AND.w $FFFFC69C.w, DO   [16 bit and with random number - that mem has $#000F]
BEQ.b *+$4              [Skip next 2 if we got 0 - leads to fight]
CLR.w D0
RTS                     [Return with 0 in D0]
MOVEQ #1, D0
RTS                     [Return with 1 in D0]

BNE.b   -- If we had 1 in D0 then fight
        -- If not then increment step count. If it hits 20, fight anyway.
C69C controls the encounter rate. It is $000F outside the starting village so that is how I figure 1/16 chance. The more bits set, the lower the encounter rate.
Post subject: Genesis debugging
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
I am trying to figure out how some things work in a Genesis game. Are there any emulators with a good debugger? The Exodus emulator (http://www.exodusemulator.com/) seemed promising. Its authors are clearly great programmers who know the Genesis hardware inside out. It needs some work on usability though. The disassembly cannot be exported to a text file or searched and you cannot set breakpoints based on reading or writing to a certain address. There isn't even a frame advance, the hotkeys are not mappable and nothing is documented. Maybe I am just spoiled by FCEUX. So what does everyone use for debugging Genesis? Edit: Ah, you need to use active disassembly and save as asm. Should be good enough but I am still interested to see if there are any other options.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Sometimes the stream and counter approach can be combined. For example, in Final Fantasy the RNG increments constantly as you order your guys but once you order your last guy it stops and only increments each time it is used. In Ultima 4 the RNG cycles once every frame while walking around and cycles an extra time when used. And then during battle it only cycles when used. The simplest RNGs are counters that step through a preset table of values. A more elegant method is the linear feedback shift register. There are also different ways to use the value from the RNG. Maybe the number determines your damage or maybe you crit if it is over or under some threshold. Or maybe if two of the eight bits are both 1 then you get strength on your levelup. Use a debugger and tracelogger to figure this out.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
The slots game in Dragon Warrior 2 seems like it should be possible to stop at the right place when you hit the button. But it tends to skip past the rarer prize crests and sometimes you can't hit one at all.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Interesting! It seems that hitting the enemy at the bottom of the screen causes the ninja to vanish and messes up vertical movement. You can still grab hangable ceilings and when you move off of them you don't fall. But if you grab a moving platform you keep its momentum and if you go too far up or down you die. In this case you can recover by grabbing a moving platform and using it to grab the bottom of a stable platform that happens to be at the same level as the exit. After that the ninja goes on as if nothing special happened. http://tasvideos.org/userfiles/info/13617507608379158 It seems unlikely that this glitch could be useful unless you can find other ways to recover. The vertical or diagonal moving platforms are pretty rare.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
bluefoxicy wrote:
In Crystalis, you must obtain Kensu's love pendant and bring it to him on Joel to obtain the Glowing Lamp required to fix the Broken Statue so that you can use it at the altar to calm the Angry Sea and finally enter Swan. Without doing this, it is impossible to reach Swan.
I didn't think this was true and just checked to make sure. After beating Sabera on Evil Island and getting glasses and broken statue you can access the secret passage in the shed in Joel. That takes you to a windmill where Kensu is sleeping. After waking him up with the alarm flute he complains and then disappears, leaving the Glowing Lamp. You don't need to have the Love Pendant. More interestingly, when I was playing through to test this I saw something funny happen on blowing away a wall. I pushed to the right at the edge of the screen and my guy disappeared. I think I may have gotten out of bounds but I need to investigate. I was playing on nestopia so the emulation could have been different.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
True wrote:
Re: pick "start" what do you mean? I can always hit the button at the correct time.
I am talking about 'start' vs 'continue' at the beginning of the game. In earlier runs I picked 'start' but at least in the most recent run I pick 'continue' because it saves a frame. It works in the TAS because the TAS starts with no save data. On a real cartridge there is still save data even if you zero out the battle RNG so you'll continue from the last save unless you pick 'start'. Hitting down for one frame just before the second start button press will change it.
True wrote:
Re: soft resets, not all the runs use them. And the ones that do, timing shouldn't be an issue as it will hit the button at the exact time (or require some delay if a "no modification" rule is in place and an actuator is used). My new bot will support hitting reset in hardware and the movie file.
Nice, that should do the trick if it works.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
I agree, the game genie is a great idea. You still need to fix the run to pick 'start' in the beginning. And the soft resets are still going to be a problem.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
My plan is sort of the opposite of FractalFusion's. His run starts with a 'dirty' state and he described how to spend an hour and a half to set it up from starting at a 'clean' state. My run starts from a 'clean' state but the SRAM makes it so that you need to deal with starting from a 'dirty' state on an actual cartridge. Even if I plan on setting up that clean state I need to deal with that initial dirty state. The situation is different because WoF has no save battery so you can start from a known point with a power cycle. The starting state you need to reach and the setup process are more complicated there but it is possible to reach from that known starting point. Here there is no way to reach a known starting point without either Ferret's save battery idea or inferring the current value from the the game somehow.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
If that zeroes out the SRAM then it would work. That would get you started though you would only have one try to sync after each power cycle. Could be good enough.
Post subject: Final Fantasy with nesbot
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
I heard from DwangoAC about how he and Feasel tried to get the NESbot to play the Final Fantasy TAS at AGDQ. I think it should be possible to get NESbot playing FF but not by simply playing the run as is. Well, there is a 1/256 chance that it would work. Main problem is that the battle RNG counter is located in the SRAM. So it is preserved when you turn the console power off and there is no other way to clear it. But if we can figure out what it is, it would not be difficult to tweak the run to compensate. It would just be a matter of tweaking some frames in the first encounter. The load time for the encounter varies based on the number of enemies by an easily predictable one frame per enemy (the TAS shaves a few frames by considering this). You would also need to make sure not to get ambushed, a low probability in most cases. You could figure out that value by getting into a random encounter and recording what happens. There are only 256 possibilities so it should only be necessary to record a few actions. Basically, whether the fight was ambush/preemptive/normal and then which party member attacks or gets attacked first for how much damage. When being attacked you can't distinguish between multiple enemies of the same type but it should be enough to get the party member and the damage. So to figure out that RNG value you wouldn't necessarily need an input file but it would make it simpler. The encounter mechanism does get reset with power cycle (a long-known fact that makes the classic Kyzoku trick work for example). So it would be possible to make an input file that gets into the random fight and just holds down the A button. That will have any living party members fight. They'll all attack the first enemy and if it dies then later party members will waste their attacks that turn. But eventually over a few rounds you will either win the battle or die. You don't need to record every action from start to end, just enough to know where the RNG started. Determinism can tell you where it ends. The counter only changes in battle so once the battle is over you don't need to rush to turn off the power. Now you know the counter value so you tweak the actual TAS input to compensate and the bot should sync. Another problem is that you do need to press the start button at exactly the right time when the game boots up. If you miss by even a frame you will throw off the much more random NPC movement. This could be very annoying because the desync may not be noticable for a while unless you pay very close attention to NPC movement. That RNG engine does reset on power cycle, so you can just start again and if the battles have been syncing you can figure out the current battle RNG pretty easily. Finally, the soft resets in the current run are going to cause desyncs unless the bot can handle the timing perfectly. Problem is that soft resets won't restart that NPC RNG system. But the earlier versions of the run don't use soft resets and with a little effort I could make a version that doesn't use them. I made an FM2 that adapts the current run to start with a saved game present instead of the standard blank SRAM start by starting from a savestate and then cycling power. I changed it to pick 'start' instead of 'continue' at the beginning (a one-frame optimization in the TAS) and hacked the battle RNG to start at 0. That was enough to sync all the way through. I haven't looked in to how hard it would actually be to adapt to different starting battle RNG values. I just need to use lua to analyze all 256 possibilities and make sure it gets synced after the first battle. Obviously it would be awesome to show this on console. Besides being an iconic game, the luck manipulation makes a TAS on this game look totally unreal. If anyone wants to work on this let me know.
Post subject: What does your significant other do while you play?
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
While watching the AGDQ stream I noticed in the background someone who is probably a girlfriend or wife of a runner knitting in the background. Cute, but not really my wife's thing. She is more likely to be reading or writing fanfic. (TheHatchetBoy will have plenty to be embarrassed or proud about depending on how he grows up...) Anyway, what does your SO do while you TAS or play games?
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Awesome, great game! I recently played through the PSP version and it's a shame we don't have a good emulator for that because it is a lot prettier than this version. I think the RNG might work completely differently in that version because it didn't change outside of battle. But in battle I noticed that changing when I switch between passive and aggressive could change my luck (I am weak at SRPG and used a lot of savestates...). So I'm not so sure that always being aggressive is best. But yeah, with crits every time it is going to be a cakewalk with completely different strats from normal play. The fights are pretty slow so it will be long and boring but don't let that stop you. Oh yeah, you should share a vbm or whatever for your movie. It's painful to watch without fast-forwarding.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
What a great way to start out the new year! It's amazing to see so much squeezed out of Scumtron's already highly optimized run. Now I feel like my old, long-obsoleted run is downright slow.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Anime topics like this are my favorite way to discover new stuff! My anime habit actually picked up after becoming a dad because it is a great way to spend the night shift. I have to say, watching at night while holding your little baby increases the emotional intensity of certain shows. Some of my recent favorites that haven't been mentioned: Summer Wars (movie) Gurren Lagann Ano Hana Amagami Clannad After Story Older stuff: .hack//Sign Maison Ikkoku (seinen romance by Inuyasha and Ranma creator Takahashi)
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
This was frickin awesome as befits the Castleroid series. I'm with FF on a Very Yes vote. I first tried watching this on 0.9.8 and it desynced hilariously. Two big skeletons in one of the cave levels spent a minute or so humping each other before killing Shanoa.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
http://tasvideos.org/userfiles/info/11268918161853103 Next test run is up and it is five minutes faster! This time I stopped at the Abyss since it would be about the same from that point. There are a lot of changes based on things I found out and random battles are more strongly manipulated. A big change is not getting Mariah. This leads to some creative battle strategy in Deceit. It probably helped that I have been playing strategy RPGs lately. Anyway, the fights worked out fairly well but are still quite a bit slower than tremor. Going solo also means more pacing to save up MP. On the other hand there is a lot of savings from magic and other dialogs, only ordering one person in battles where I trick the enemies into killing themselves and random battles will always have at least two enemies when I have a partner. I tried to add up both sides and it is close enough that I will need to try playing through with Mariah on the new route. One possibility is getting her to die earlier, maybe after Deceit. Other big savings come from changing the route. In the initial grind I concentrate on saving gold for a +1 sword instead of buying several cheaper items. I make an otherwise unneeded stop at Serpent's Hold because the beggar there is by far the fastest. Taking the balloon to Cove instead of the whirlpool saves me from needing to get another ship. I spend a little less time sailing too because the encounter rate is so low. Shame and Despise are both faster from the entrance rather than the altar room, partly because I can get some random battles on the way to the entrance. For random battles I always get just one enemy. I also favor enemies that die in one hit to the bow. The battles also have different setups; either party vs monsters across a field or a scattered setup that suggests an ambush though you still get to go first. I favor the scattered setup because it puts the enemy closer and my shot or spell doesn't need to travel as far. Using the bow instead of magic saves about half a second of dialog and getting the scattered setup also saves half a second or so. Every eight shot of the bow misses so I try to get that out of the way at convenient times. I keep the sword that I start with until Minoc so I can miss with the bow and fall back to that. With 49 encounters needed, this saves a ton of time over the course of the game. To manipulate things it is easiest to walk on swamp. The RNG gets an extra poll to decide if you get poisoned or not, regardless of whether you are already poisoned. I need to run down my hp at the start anyway so I just get poisoned right away. Conveniently, swamps and forests also have the highest encounter rates. After leveling up it gets more difficult because spawning and movement of pirate ships uses the RNG. There is a neat little tweak involving moongates. The moon phase changes every 8 time-steps (one step or the same time if you stand still). If you enter a town or otherwise leave the outer world, that 8-step counter resets. So to move the moon phase along when I want to use the moongate near Yew, I wait until just after a phase change to enter town. Same thing with setting up the shrine of spirituality. Between the extra fights near Serpent's Hold and a few other changes that added random encounters I line up my Valor almost perfectly near the end. That's good, the fights with demons near the shrine of humility are not as efficient as it might seem. You don't need to wait, but it is difficult to get just one of them and you need 22 MP for energy. Even then the fight is not as fast as most of the battles I fight. I have a few more ideas for when I start the final run besides even stronger luck manipulation. For one thing, I noticed that I never use ginseng. It is used in cure spell but even if I need that I start with enough. So next I'll be deciding whether or not to team up with Mariah and then I can start the real run on this game. Edit: Oh yeah, about wind: A counter counts down while in the outer world and when it finishes the wind shifts. Or it doesn't shift if the new direction that gets picked is the same as the old one. The counter also gets reset to a random value. The wind spell sets the direction but the duration counter is random. So I tweaked my luck a little bit to get the wind going my way. It isn't practical to totally avoid using the wind spell but it is definitely possible to cut down how many times you need it and get some useful shifts.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Congratulations on finishing! This ended up being a pretty good improvement so I'll vote yes. Doing better would probably require a much deeper analysis to plan every step and fight. For anyone interested, the details of the encounter algorithm is posted in the game thread. It's an interesting mathematical and logistical problem for anyone looking for a challenge. Basically, at the end of every fight some bits get pushed around in a way that affects the steps to next encounter after 2-3 more fights. Plus as Janus said, you can reset the count by transitioning screens as it hits zero so you need to plan for that. I also hope that there is some trick left to beat the renegades with a less powerful Chezni to cut down on the number of fights needed to build up early on.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Planning my next attempt as solo Paladin. Going solo speeds up several dialogs and skips time needed to get Mage. Biggest thing is probably being able to have just one enemy in random battles. I only have one person's MP in the dungeon crawl though and the biggest thing is not having someone who can use Tremor at the start of Deceit where I need to clear 3 rooms of enemies. I have some ideas so I'll see how it works out. Did some more analysis on various timing tradeoffs and algorithms that led to ideas and changes in plans. The details of hit/miss calculations on bow attacks is interesting. Each attack adds a number based on your INT stat to a counter. There is a counter for each enemy slot. When the counter rolls over you miss. With the paladin's starting stats the increment is 33. So every 8th attack misses. The increment goes down as you get more INT. If you max out your INT by feeling up dungeon orbs then the increment is only 1 and you will only miss every 256th attack. Touching one orb brings the rate from 8 to 9.5 and another makes it 11.6. So it's not worth it for this TAS but it is something to think about when you are playing this game normally. (You can max out your stats quickly once you have the key by touching the orb in Hythloth) How encounters work: Every 16 frames the counter at $D9 is updated based on a number from the usual RNG at $36 and the current terrain that is tracked in $46. For each terrain type there is an encounter rate. Haven't checked for all types but for grass it is 8 and on shrubs it is 12. There is an algorithm that computes a random number from 0 to that number-1. That result gets added to $D9. If the calculation overflows then you get a battle. The algorithm that picks how far to advance the encounter counter doesn't just scale down the RNG number. Instead it shifts bits from the high end of the RNG into the low end of the new number. If the result of a shift >= the encounter rate then encounter rate is subtracted. An interesting effect of this is that the addend may actually be greater on lower-encounter terrain for some RNG numbers. It should average out but there is some chance that grassland will get a higher result than shrub. It doesn't matter whether you move or stay still, just the terrain you are on. Now there are often constraints on needing to move to restore MP or bring down a cooldown counter. But in some cases I am just grinding to get more battles for Valor. That is where being able to get battles sooner helps. But I also need to coordinate with picking up chests and getting the right battles. A complicated problem, but at least I know how everything works now. One thing that may be very helpful: stepping on a swamp advances the RNG to decide if you get poisoned or not.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
So sp power is a limiting factor. Is there any chance of using a different strategy on Renegade to get around that? Are there any other limiting factors?
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
I agree with Vykan's recommendations. Level 99 and all spells for all chars is insane. I've done it myself but wouldn't want to watch it. Same thing for all rages, the veldt time would just be too long and boring plus you would need to spend a lot of time winning random battles. "All treasures" could be separated into at least "open all treasure chests/search all barrels/etc", "all side quests" (for example, getting all the items from a perfect banquet) and "at least one of every item". All of those are reasonable though they might be a little slow at times. Would you do all the letters in the Cyan letter subplot?
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Ok, so saying it is a different game is going a little too far. But it is at least like playing on an easier mode. In that case we either only accept hardest mode or do a separate branch. Also, Dragon's Lair might not be a good comparison. That game is really crappy and switching to J cuts it by half. Ninja Gaiden/Ryukenden is awesome and this switch is only worth about 2 seconds. I guess the main thing is that I knew back when I did this game many years ago that J was faster but picked U because it is harder and the site's guidelines are to prefer U and hardest mode. I'm sure Scumtron and others were aware of this as well. Just wanted to make sure everyone knew before deciding how to classify this.
Ambassador, Experienced Forum User, Published Author, Experienced player (698)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
This was awesome and very unexpected! The only thing to think about is whether it should be a separate branch from the (U) version. It's somewhat subtle if you are watching the TAS but if you play yourself it will be really obvious that (J) is quite a bit easier. The sword extension and ninja magic powerups are more abundant and more conveniently placed. There are also fewer enemies, making some situations a bit easier. That accounts for a lot of the minor improvements, certainly way more than the 5 frame savings of the password at start. It also looks like enemy damage is less and spikes only take off 3 bars instead of 6. That is a big deal on the levels where HP management becomes an issue. If you watch the current run you'll see that there are many more hits taken due to how much harder the game is and some levels are finished with only 1-2 bars. This run only takes damage a few times the whole game. The trick used on boss 3 is probably also possible on the (U) version but it requires sword extension. On (U) the only sword powerup on level 3 is way too far out of the way. So for practical purposes, that trick is actually not possible on (U). This run is still awesome and my vote is yes but I think this should either be a separate branch or separate game because it basically is a different game.