I know fighting video games usually make boring TASes but I think there's plenty of funny cut scenes. And you could always make the battles as varied as possible, given there's eight characters to play in order to get the final credits.
Why, oh, why do I even <i>try</i> to understand my own species?
I've played the game on emulator, and I've savestated before the beginning of some fights — mostly during the sim matches in Emerl's story. From what I can tell, the cards you seem to be predetermined. It might change depending on how long it takes you to go into the battle, but I'm not too certain on that.
I'm planning on doing a play-around on battle mode. I want some opinions and suggestions.
2 Battles:
KO Battle = 15 KOs (First character to get 15 KOs wins)
Timed Battle = 5 Mins (Character with higher KO Count at the end wins)
Im gonna start from SRAM, fighting 3 enemies, all vs me. In the timed battle, i plan to use a fully equipped Emerl to fight against me.
Also, some combos or combo videos would be realy gratefull.
Why not? you start from nothing and luck manipulate to have the move you want to have after each battle, and do crazy combos and killing opponents in reccord time?
Sound great. :)
I think making a TAS of story mode is a terrible idea – it would be much too repetitive! Challenge mode could be interesting with the right character or skillset for Emerl.
Link to video(Download the .vbm)
Here are the skill cards I used, along with a few notes about them. I only used 400 of my 500 skill points! (Damage values have been increased by ~4/7 due to Attack Support 9.)
Run Skill: Chaos Run (5 SP)
Chaos runs like a dinosaur – a dinosaur that runs slower than Emerl's default run skill! I chose this because it looks funny and adds a fun restriction. And so I can add "Colors a robot that runs like a dinosaur." to the submission text if I ever submit a run of this game.Dash Skill: Chaos Dive (30 SP)
Chaos's dash skill makes you invincible and look ridiculous at the same time! Order yours today!
Jump Skill: Rouge Flight (25 SP)
Most characters fall after the apex of their jump, but not Rouge! With her skill, you will fly for 54 frames before slowly descending, and the timer resets if you use a special attack! It also gives you very good air speed.
Also this:
Air Action: Rouge Catch (15 SP)
If you are flying and you use this air action, you immediately stop flying. The only way to fly without an air action is with Rouge Flight, which I used. But even without Rouge Flight, this is probably the best air action of all – it also allows you to use your aerial special move again without landing!
Guard Skill: Chao Knight (5 SP)
I originally planned on using the default guard skill (the aptly named Guard Skill), but I switched to this just before I started recording because I thought it would look funny.
Heal Skill: Heal Skill (0 SP)
Heal Skill is SSS+ tier and should be banned from tool-assisted play.
First Attack: Girl Jab (15 SP)
Dear Kumquat, how do you tool-assist with boxing gloves on?
Very quickly is how! This is the fastest first attack besides Ultimate First Attack (or so I assume; I never actually tested them), which makes it great for interrupting opponents.
It does 5 damage.
Second Attack: Electric Stab (10 SP)
A slow but powerful attack that looks a little odd. It has a lot of ending lag that can be canceled by using your third attack.
It does 16 damage.
Third Attack: Flexible Chaos (5 SP)
Another strange-looking attack that trades speed for power. It is a little faster than Electric Stab, though.
It does 16 damage.
Heavy Attack: Magic Hook (20 SP)
Another boxing glove from nowhere, but with a twist! Get it? Twist? Because it twists around you and yeah okay that was a stupid joke.
Anyway, the heavy attack you have equipped determines your chasing jump animation (the high jump you can do after you launch an opponent away). I think Tails's looks the funniest.
It has three hitboxes that do 4, 5, and 24 damage. The third hit launches the opponent away.
If the opponent is launched into a wall and does not successfully rebound, they take 15 damage that is not modified by Attack Support. This applies to all attacks that can launch opponents away.
Upper Attack: Chao Upper (15 SP)
It looks kind of like Chao Knight, and it shares an odd property with it: you can aim it up and down. Doing so does only changes the visuals – the hitbox for this move will still be in front of you, and guarding up or down does nothing special.
It does 13 damage and flings the opponent into the air.
Dash Attack: Girl Bomber (15 SP)
Emerl's mother always told him, "If you love someone, protect them with everything you've got!"
"Even with my butt?" he would ask.
"Especially with your butt! Um, I mean, Emerl, don't use such rude language!"
It does 32 damage and launches the opponent away.
Air Attack: Typhoon (20 SP)
Emerl supposedly copied this move from Tails, but he obviously learned it while fighting on the streets. Using this boosts you upward slightly and resets the flight timer for Rouge Flight. With proper positioning, you can hit your opponent up to four times.
It does 10 damage per hit.
Aim Attack: Chaos Impact (15 SP)
Aim attacks can only be used during a chasing jump. If you time them properly, your opponent will take a lot of damage and be thrown into the ground. If not, the opponent will take a bit of damage and possible be able to counter-attack.
Chaos Impact, like many other skills I chose, looks silly.
It does 63 damage if you time it right and 16 damage otherwise.
Ground Shot: Rock Free Fall (15 SP)
With the power of Knuckles's fists (and manly grunts), Emerl can pull a giant rock out of the ground...or thin air, if there is no ground in font of him. This move is great for hitting opponents out of the air.
The rock does 47 damage and the rocksplosion does 24 damage. Both parts of the attack knock the opponent back.
Air Shot: Air Pink Typhoon (30 SP)
Amy can fly by condensing her love into a spiral of pink energy, and now Emerl can, too! Combined with Rouge Catch, you could quickly rise up to the ceiling and stay there as long as you want! Of course, there is not a lot you can do with the power of love if you are all alone...
The pink typhoon does 16 damage and flings the opponent into the air. The hammer does 4 damage and counts as a normal attack for the purpose of defending.
Ground Power: Deep Impact (5 SP)
Yes, this is truly a one-star skill.
It does 110 damage and launches the opponent away. Please note that it is not possible to have more than 100 HP.
Air Power: Ultimate Air Power (30 SP)
Whee! Thanks to Rouge Catch, Emerl can fly all over the place with this skill! Your Color 1 determines your color during this move, but the afterimages are always blue.
On the way down, it does 63 damage. While rolling forward, it does 47 damage. Both fling the opponent into the air. On the way back, it does 60 damage and launches the opponent away (though it is not possible to jump after them).
If you are knocked out by a special attack while using this attack, you will glitch up during your KO animation and be unable to move for the rest of the match. This does not count as a KO for your opponent.
Ground Trap: ??? [Amy] (30 SP)
This attack is so powerful that the developers were unable to think of a name for it. "How about 'Triple Gift'?" the newest employee suggested.
"No," the senior developer said. "We already told you, it's '???' because it's an attack Emerl made up himself, and he sucks with names."
"Oh, so he inherited his naming skills from Sonic, too?"
It does 32 damage and flings the opponent into the air.
Air Trap: Cream Air Cracker (15 SP)
Omochao is so much fun! Using him leaves you closer to the ground than you started, though, and he will only automatically detonate on grounded opponents.
Omochao is here to help by doing 79 damage and flinging opponents into the air.
Fighting Pose: Chaos Style (15 SP)
Your fighting pose determines the sounds you make when you get hit, what animation you use for everything not determined by another skill, how fast you turn, how far you can move as you turn (Tails Style is ridiculous), and your eye color. E-102 Style also makes you explode when you are knocked out. I chose Chaos Style because I like how it looks.
Attack Support: Attack Support 9 (30 SP)
As I mentioned before, this attack support increases damage output by approximatley 4/7, rounded up. (For example, with Attack Support 0 equipped, Typhoon does 6 damage per hit, Girl Bomber does 20 Damage, and Deep Impact does 70 damage.)
Strength Support: Strength Support 0 (0 SP)
Who needs defense when you have tools?
Answer: the computer-controlled Emerls.
Other Support: Speed Up Level 2 (20 SP)
Higher top speed is more important than faster acceleration, different gravity, or faster ichikoro generation.
Color 1: Amy Color 1 (5 SP)
Ah, pink. The color of love, strawberry ice cream, invisibility, breast cancer, and joke characters. And several other things, apparently including hedgehogs and robots.
Color 2: E-102 Color 2 (5 SP)
Red is my favorite color! E-102 Color 2 is actually almost the exact same as Amy Color 2; the shading on this one is slightly darker. I chose it because I already had Amy Color 1.
Color 3: Rouge Color 3 (5 SP)
Purple goes well with pink and red.
I also wrote a Lua script that displays each character's speed, position, health, ichikoro, specials, and respawn timer. It still has a few bugs, though. And it probably has a bunch of suboptimal code...
Download SonicBattleCharacterInfo.lua
Language: lua
hp = {};
ik = {};
sp = {};
x = {};
xs = {};
y = {};
ys = {};
z = {};
zs = {};
i = {};
t = {};
l = {};
c = {};
xk = {};
i['1'] = 0
i['2'] = 0
i['3'] = 0
i['4'] = 0
l['1'] = 0
l['2'] = 0
l['3'] = 0
l['4'] = 0
xk['1'] = 2
xk['2'] = 2
xk['3'] = 2
xk['4'] = 2
while true do
hp['1'] = memory.readbyte(0x03001CFF);
hp['2'] = memory.readbyte(0x03001DFB);
hp['3'] = memory.readbyte(0x03001EF7);
hp['4'] = memory.readbyte(0x03001FF3);
ik['1'] = memory.readbyte(0x03001CD3);
ik['2'] = memory.readbyte(0x03001DCF);
ik['3'] = memory.readbyte(0x03001ECB);
ik['4'] = memory.readbyte(0x03001FC7);
sp['1'] = memory.readbyte(0x03001CCD);
sp['2'] = memory.readbyte(0x03001DC9);
sp['3'] = memory.readbyte(0x03001EC5);
sp['4'] = memory.readbyte(0x03001FC1);
x['1'] = memory.readwordsigned(0x03001C40);
x['2'] = memory.readwordsigned(0x03001D3C);
x['3'] = memory.readwordsigned(0x03001E38);
x['4'] = memory.readwordsigned(0x03001F34);
xs['1'] = memory.readwordsigned(0x03001C6C);
xs['2'] = memory.readwordsigned(0x03001D68);
xs['3'] = memory.readwordsigned(0x03001E64);
xs['4'] = memory.readwordsigned(0x03001F60);
y['1'] = memory.readwordsigned(0x03001C42);
y['2'] = memory.readwordsigned(0x03001D3E);
y['3'] = memory.readwordsigned(0x03001E3A);
y['4'] = memory.readwordsigned(0x03001F36);
ys['1'] = memory.readwordsigned(0x03001C6E);
ys['2'] = memory.readwordsigned(0x03001D6A);
ys['3'] = memory.readwordsigned(0x03001E66);
ys['4'] = memory.readwordsigned(0x03001F62);
z['1'] = memory.readbyte(0x03001C44);
z['2'] = memory.readbyte(0x03001D40);
z['3'] = memory.readbyte(0x03001E3C);
z['4'] = memory.readbyte(0x03001F38);
zs['1'] = memory.readwordsigned(0x03001C70);
zs['2'] = memory.readwordsigned(0x03001D6C);
zs['3'] = memory.readwordsigned(0x03001E68);
zs['4'] = memory.readwordsigned(0x03001F64);
t['1'] = memory.readbyte(0x03001D34);
t['2'] = memory.readbyte(0x03001E30);
t['3'] = memory.readbyte(0x03001F2C);
t['4'] = memory.readbyte(0x03002028);
c['1'] = memory.readbyte(0x03001D04);
c['2'] = memory.readbyte(0x03001E00);
c['3'] = memory.readbyte(0x03001EFC);
c['4'] = memory.readbyte(0x03001FF8);
if memory.readbyte(0x060113CA) == 1 then
for p=1,4 do
n = 0
--[This code moves Player 1's information up (else it overlaps the frame counter and input display). Delete or comment it out if you want all four players' information to be uniform.
if p == 1 then
n = 30
end;
--]]
if sp[string.format("%s", p)] > 0 then
if sp[string.format("%s", p)] == 27 then
sp[string.format("%s", p)] = "T/P/S"
elseif sp[string.format("%s", p)] == 30 then
sp[string.format("%s", p)] = "P/T/S"
elseif sp[string.format("%s", p)] == 39 then
sp[string.format("%s", p)] = "T/S/P"
elseif sp[string.format("%s", p)] == 45 then
sp[string.format("%s", p)] = "S/T/P"
elseif sp[string.format("%s", p)] == 54 then
sp[string.format("%s", p)] = "P/S/T"
elseif sp[string.format("%s", p)] == 57 then
sp[string.format("%s", p)] = "S/P/T"
end;
if hp[string.format("%s", p)] > 0 then
if l[string.format("%s", p)] == 0 then
xk[string.format("%s", p)] = 378
elseif l[string.format("%s", p)] > 4 then
l[string.format("%s", p)] = 0
end;
end;
if l[string.format("%s", p)] <0> 0 then
gui.text(-13+60*p, 130+n/5, "OK!");
l[string.format("%s", p)] = l[string.format("%s", p)] + 1
end;
if hp[string.format("%s", p)] == 0 then
sp[string.format("%s", p)] = "?/?/?"
if l[string.format("%s", p)] == 0 and xk[string.format("%s", p)] > 2 then
xk[string.format("%s", p)] = xk[string.format("%s", p)] - 94
end;
if t[string.format("%s", p)] > 0 and xk[string.format("%s", p)] <3> 0 then
if t[string.format("%s", p)] == i[string.format("%s", p)] or i[string.format("%s", p)] > t[string.format("%s", p)] then
l[string.format("%s", p)] = l[string.format("%s", p)] - 1
end;
gui.text(-13+60*p, 130+n/5, string.format("%3i", l[string.format("%s", p)]));
i[string.format("%s", p)] = t[string.format("%s", p)]
if l[string.format("%s", p)] == 1 then
l[string.format("%s", p)] = -6
end;
end;
if c[string.format("%s", p)] == 0 then
c[string.format("%s", p)] = "Sonic"
elseif c[string.format("%s", p)] == 1 then
c[string.format("%s", p)] = "Tails"
elseif c[string.format("%s", p)] == 2 then
c[string.format("%s", p)] = "Knuckles"
elseif c[string.format("%s", p)] == 3 then
c[string.format("%s", p)] = "Shadow"
elseif c[string.format("%s", p)] == 4 then
c[string.format("%s", p)] = "Rouge"
elseif c[string.format("%s", p)] == 5 then
c[string.format("%s", p)] = "Amy"
elseif c[string.format("%s", p)] == 6 then
c[string.format("%s", p)] = "Cream"
elseif c[string.format("%s", p)] == 7 then
c[string.format("%s", p)] = "Gamma"
elseif c[string.format("%s", p)] == 8 then
c[string.format("%s", p)] = "Chaos"
elseif c[string.format("%s", p)] == 9 then
c[string.format("%s", p)] = "Emerl"
elseif c[string.format("%s", p)] == 10 then
c[string.format("%s", p)] = "SuperEmerl"
elseif c[string.format("%s", p)] == 12 then
c[string.format("%s", p)] = "Phi"
elseif c[string.format("%s", p)] == 17 then
c[string.format("%s", p)] = "GuardRobo"
elseif c[string.format("%s", p)] == 19 then
c[string.format("%s", p)] = "Dr.Eggman"
else
c[string.format("%s", p)] = string.format("Player %s", p)
end;
gui.text(-57+60*p, 130+n/5, string.format("%s", c[string.format("%s", p)]));
gui.text(-57+60*p, 136-n/5, string.format("%3i|%2i|%s", hp[string.format("%s", p)], ik[string.format("%s", p)], sp[string.format("%s", p)]));
gui.text(-57+60*p, 142-n, string.format("X:%5i|%4i.%1X", x[string.format("%s", p)], math.floor(xs[string.format("%s", p)]/16), math.abs(math.fmod(xs[string.format("%s", p)],16))));
gui.text(-57+60*p, 148-n, string.format("Y:%5i|%4i.%1X", y[string.format("%s", p)], math.floor(ys[string.format("%s", p)]/16), math.abs(math.fmod(ys[string.format("%s", p)],16))));
gui.text(-57+60*p, 154-n, string.format("Z:%5i|%4i.%1X", z[string.format("%s", p)], math.floor(zs[string.format("%s", p)]/16), math.abs(math.fmod(zs[string.format("%s", p)],16))));
end;
end;
else
i['1'] = 0
i['2'] = 0
i['3'] = 0
i['4'] = 0
l['1'] = 0
l['2'] = 0
l['3'] = 0
l['4'] = 0
xk['1'] = 2
xk['2'] = 2
xk['3'] = 2
xk['4'] = 2
end;
vba.frameadvance();
end;
It looks like this:
But the respawn timers mess up for a few frames when you load savestates because I was unable to find the correct addresses for them. I did find something that counts upward after a character is knocked out, but it gets used for something else while they are alive.
Also, it messes up during round four because the game does not properly clear certain addresses during challenge mode.
And I almost forgot – luck manipulation during fights seem to be based primarily on your and your opponent's positions, which is why I wasted so much time against Chaos.
As for manipulating cards, I think the only ways to change what cards you get are to win a battle or quit to the menu and restart. For common cards, it stores which types of cards (like Run Skill or Ground Power) you will get and gives you cards based on which characters were present, with the character closest to first giving the first card, then the next, then the next (excluding Emerl, Phi, Guard Robo, and Eggman because they do not give out cards).
For example, if it was going to give me Guard Skill, Fighting Pose, and Heal Skill, I would win these cards from these battles:
Emerl vs Sonic vs (Blank) vs Tails
Sonic Guard and Tails Style.
Sonic vs Emerl vs Tails vs (Blank)
Sonic Guard and Tails Style.
Tails & Emerl vs Sonic & Knuckles
Tails Guard, Sonic Style, and Knuckles Heal.
I know that getting a higher rank during battle (A is never got hit, B is got hit but not knocked out, and C is got knocked out at least once) gives you a better chance at getting rare cards, and different ranks can wind up giving you different rare cards from the same battle... But that is about all I know about rare cards. I do have several savestates of rare cards being obtained or battles that will result in a rare card, though, if someone else wants to look into it.
(I hope all that made sense, because it took me a few hours to make and I was incredibly tired the whole time. I apologize if anything is unclear or if I forgot something. And thank you for reading this, even if you skipped some or most of it!)
So, would this game be interesting to TAS? An any% run would be simple enough, but a 100% run would require some insane luck manipulation I'd think.
I made this: http://www.youtube.com/watch?v=MMS9iAmEmD0 which is just me screwing around, dancing with the AI, not really optimized or anything.
i would like to see a tackle of the main story if you can make it interesting,if possible even more than this wip
I want all good TAS inside TASvideos, it's my motto.
TAS i'm interested:
Megaman series, specially the RPGs! Where is the mmbn1 all chips TAS we deserve? Where is the Command Mission TAS?
i'm slowly moving away from TASing fighting games for speed, maybe it's time to start finding some entertainment value in TASing.
In the spirit of the fighting games rule, I think the only category viable for this is playaround. It'd be particularly funny to, for example, do the VR lab (I forget the name, it's the one you get ultimate cards from) without using any cheesy strategies like the combo cards.
There was already a rejected run: http://tasvideos.org/2807S.html
I found your test to be a bit more entertaining, but if this is as fast as the game can get then I think it's bad game choice :/
It can be much faster, I wasn't even trying to be optimized, I was just screwing around to be honest, and I didn't have the luxery of all the good moves, instead I basically just used a few moves and the rest default crap ones.
So, it can probably only get better from here. I'll try to make a more entertaining WIP.
I'm currently working on a Challenge Mode TAS of this game.
Since the movie starts from a clean save, I can't use Emerl.
Now I don't know which character to choose both for speed and entertainment... I was thinking of using Shadow... any better ideas?
Well yes... Shadow would probably be the best default character to go with...
The game is all about what you can do with Emerl man. The site does accept games from a save when appropriate.
Regardless looking forward to what you produce.
I want all good TAS inside TASvideos, it's my motto.
TAS i'm interested:
Megaman series, specially the RPGs! Where is the mmbn1 all chips TAS we deserve? Where is the Command Mission TAS?
i'm slowly moving away from TASing fighting games for speed, maybe it's time to start finding some entertainment value in TASing.
Well, thanks. I'm aiming for speed but also I'm willing to vary a bit for entertainment, depite my limitations with the game, game's a bit sluggish, to be honest.
Anyway, I'm making the final TAS right now. Currently with 2 KOs on the first stage.
It is a bit slower, because I actually kill my foes at the same time (almost). I need to do this in order to maintain that pace of killing them at the same time, and also I manipulate them to make them spawn where I want and so I can get my next 2 KOs faster than the rough TAS.
That part where I said almost is because Knuckles has this weird hit detection thing where the game takes like 2 frames to detect Knux getting hit by special moves.
Just clearing few things up so I don't need to post it later and I forget. :P
Note to self: doing a heavy atack + air kick against the wall is faster than 2 extra special attacks.
Just so I do not forget this, and also with this in mind I'll redo the fight... again.
Now that's more like it!:
https://www.youtube.com/watch?v=rYj3CJp5Bi0
Input: http://tasvideos.org/userfiles/info/29490107889193612
My initial time was 48 secs, 2 days ago it was 46, now it's 44.
Thanks to lots and lots of new strategies between special moves and heavy attacks, and a bunch of AI manipulation, I managed to save around 4 seconds since my first WIP... now that's some considerable improvement.
Sonic's next, and I hope he's ready for my edginess. :P