Submission Text Full Submission Page
Shining Force completed in record time. Every aspect of randomness in the game was disassembled, simulated in MATLAB, and manipulated to the maximum advantage of speed. A smaller then normal band of fighters takes on the ancient legend of Dark Dragon! The enemy is only allowed to attack 14 times over the course of 30 battles, 5 of which are used to kill useless force members.
Movie Goals:
  • Aims for fastest time
  • Manipulates luck
  • Kills characters to save time
  • Takes no damage (except for intentional deaths)
  • Abuses programming glitches
  • No warps or passwords

Background

I've wanted to do a Shining Force run for 3 years now. You can look at the history of the TAS board and at shiningforcecentral.com to see my post from many years ago, asking about this run. It wasn't a possibility until Upthorn created the movie/frame advance/decompiler version of Gens, allowing me to disassemble every aspect of the game. Using my history with MATLAB, I created many different programs to simulate the results of every random possibility. Then, the next step was the long, interesting task of TASing an epic strategy game. I spent countless hours figuring out the best possible approach to every battle. Each battle attempt takes around 5 hours, and it often took 2 to 4 attempts to get a battle correct.

Shining Force

Shining Force is a turn-based strategy RPG. Every round of battle, the Player and CPU take interleaved turns, determined by the Battle Order, to try and destroy the opponent. Your team can be comprised of 12 of the 30 possible warriors found through out the game. The game usually takes 8-10 hours to play all the way through. Large amounts of time is wasted when playing the game normally, because every attack animation on either side takes at least 7 seconds to perform. Therefore, minimizing the number of attacks is essential to maximize the speed of the run

Luck manipulation and MATLAB

All luck manipulation can be performed with the controller. There is a 16 byte value (0-65535) at FF0EC2 which can be incremented from 1 to 255 by different button combinations. Thus, there are 65536 different possible random outcomes at any given time. MATLAB was used to simulate every one of these outcomes. Additionally, MATLAB was programmed to tell me the exact button presses to achieve the "random" outcome I desired. Surprisingly, I was able to minimize the number of times that I have to wait for the counter to get to the random outcome I wanted. The only time it is noticeable is in Battle 20, Bleu waits about 1/5th of second to correctly manipulate battle order.

Battle Order

Manipulating the Battle Order was the key to obtaining the ridiculous speed of this run, and lack of enemy attacks. Like noted before, the Battle Order determines the order in which the CPU/player take turns, based on the characters agilities. Thus, the most important part of the run was selecting the best Battle Order out of the 65536 possible. Now, it would have been ridiculous to try and look through all of those. So, I created a program to help me "shop" for the best battle order. I set it up to allow me to look for groupings of characters, look for one character to perform before another, or to look for the earliest character movement. This usually allowed me to narrow down the choices to 2-10 different options. B
The choosing of each Battle Order was no small task. The priorities in which Battle Order was chosen was:
  1. Avoid enemy attacks
  2. Group close characters together
  3. Group close groupings together
Thus, when priority 1 takes precedent, the cursor will be forced to bounce around the screen often. This is extremely noticeable in the Colossus battle, which I will discuss later.
Additionally, the question is often raised, "Why not kill more enemies to reduce cursor movement and enemy turns?" The major reason being that each enemy turn takes approximately 1 second, plus the cursor movement. Killing an enemy takes 7 seconds of battle animation, plus the time to move a character to the enemy. Since battles rarely go beyond 3-4 rounds, the only enemies that are killed are those which would otherwise attack me, wasting the 7 seconds anway, or are necessary to end the battle.

Enemy AI

The AI in this game is based completely on locational threshold crossings. Thus, to manipulate the AI to be stupid, you have to know where these thresholds are. Battle 3 is a great example of this. Max stops right before the threshold for the 5 knights to move, and then takes two consecutive turns (achieved by being at the end of a round, and beginning of the next) to pass the knights with them never moving. In the following battle explinations, this will be used often.

Programming Glitches

Two glitches were abused in this game. First, the BOOST spell (provided by the power ring) ends after 3-4 turns. However, as long as the character is not attacked or does not gain a level, the BOOST spell lasts indefinitely. Thus, a character can kill up to 3 enemies post-BOOST with the elevated attack. This is abused considerably through the entire run. Additionally, the mobility ring can be unequipped at the end of a turn, without losing the ground gained by it previously being equipped. The start of the movie also has Max leaving town without obtaining the first 5 members of the force. Whether or not this was intentionally available is debatable.

Promotion

Only 4 characters are promoted in this run. Promotion is the double-edged sword of the game. First, the actual time it takes to promote a character is extremely long, since the game has to play music to promote. Second, characters are absolutely DECIMATED post promotion. Additionally, the first 3 level gains of any promoted character are extremely poor. The only reason characters are promoted in this run at all is to be able to equip the higher level weapons. The actual statistics of the characters don't greatly benefit from promotion given the low post-promotion levels achieved (aside for one: Max's Agility). Therefore, characters other than Max are only promoted when a new super-powerful weapon is available. For Gort, it is the Heat Axe, for Pelle, the Halberd, and Balbaroy, the Broad Sword. Earnest goes unpromoted, since his only purpose post Chapter 6 is to kill one High Priest, and stop the Armed Skeleton in Dark Dragon battle from regenerating. Musashi can not be promoted (thankfully). All other characters are eliminated before they would ever need a promotion. It may be arguable that buying a steel sword and promoting Amon would make battle 20 faster. However, the Power ring takes 8 seconds to use. It takes well over 30 seconds to promote a character, and that doesn't include the time to buy and equip a new weapon. Additionally, the hit to her agility would have killed her ability to attack Mages before they attack her.
!WARNING! SPOILERS AHEAD YOU MAY WANT TO WATCH THE MOVIE FIRST !WARNING!

Battle 1

Max goes it alone, manipulating the villager to block the guard. At the gate, Max kills 2 goblins, and takes out the knight. The 2nd round order was specific to end with Max then Knight, to have the Knight move into position to be killed. Otherwise, the Knight is blocked by the 2 dwarves. The threshold location for his movement is next to the goblin.

Battle 2

Nothing much exciting here. The dwarf attack was used to move him out of the way, maximizing the next move Max makes.

Battle 3

Gort is picked up here, and ends up being an asset the rest of the run. As noted before, Max stops early, and then takes 2 consecutive turns, bypassing the 5 knights a 3 bats, without them ever moving.

Battle 4

Khris is the most useless and time consuming member to join the force. She takes 3 turns to move into a position to die. Luckily, her death distracts one of the bats, minimizing the number of useless attacks. An interesting note. At the end of round 2, Gort crosses the bridge. This is a threshold which causes the Mage and archers to start moving down. Once they start, they don't stop their planned movement. However, if Max or Mae were to cross the second bridge/threshold, they would never move. They are moved downwards for the convience of Max and Mae.

Battle 5

Gort and Mae stay back, and let Max take the back route into Alterone. If Mae moved 1 square forward, the Zombies and Mage would move into a position that would make getting into the town early impossible.

Battle 6

The only enemy to be attacked twice before Dark Dragon is in this battle. Nothing could be done to avoid this, that wouldn't take longer than the extra 7 seconds. The power ring is picked up in this battle, setting up the rest of the run.

Battle 7

Thanks to an idea by ZeXr0, the Marionette falls quickly by a Mae double turn. Mae is the first and only person in the 3rd battle round.

Battle 8

This battle was difficult to optimize, since it is a small field, with the enemy on top of you from the start. The enemy's affinity to attack Max is abused. They line up to attack him at the one space available. This is abused, to allow Mae and Gort to clean up the field. Also, every FAQ on GameFAQs is wrong, killing the Ghoul does not end the battle early.

Battle 9

The addition of the Birds makes the speed of the run really pick up. This shows how many future battles will be achieved.

Battle 10

The battle can be ended by Max entering the bridge, however, the designers, out of sheer stupidity, must have thought "Hey! Lets make every last outdoor battle until the end of the game a mash of trees and mountains, so every one can only move 2 at a time! That will be ridiculously annoying and slow! Great Idea!" Thus, the unaffected birds are used to clear the map out quickly.

Battle 11

The Laser Eye counts down, and fires every 5 or 6 turns, at every creature on the map in it's large range. Unfortunately, when Battle Messages are turned off, a glitch causes the text not to show. Balbaroy is used to end the battle before the laser eye ever gets a chance to fire.

Battle 12

Instead of trees and mountains, they made this map 3x larger than necessary. Mae had started to become useless, so she is used to cross the threshold for the first group of enemies, and than is slaughter for the sake of speed. One knight is moved via Max threshold crossing, so Balbaroy can gain 1 attack. The 1 attack point is the difference between being able to one hit Elliot and not.

Battle 13

Nothing too special about this battle. The top hellhound is killed before the lower artillery. This opens the lower door as oppose to the upper door, skipping a long animation when you meet Earnest.

Battle 14

Unfortunately, the poor position and weakness of the birds means that the majority of the enemies need to be killed, to make way for Pelle to kill Balbazak. I had wished a more optimal strategy were possible. However, the extra experience helps later versus Kane. Additionally, I had originally thought that I had chosen the wrong time to promote Max, since he becomes a weakling. However, the agility he gains from this early promotion will be essential an entire 14 battles later.

Battle 15

Just another clear the map battle. No real special manipulation went into this one.

Battle 16

The mobility ring is picked up before battle, starting up the absurd amount of item swaping that will be occuring for the rest of the game. This and the power ring made this run. Amon gets the ring, and makes her way to the mage, ending the battle in haste.

Battle 17

Ah, the beauty of manipulation. If any of the bottom 4 conchs move before they are destroyed, 4 shellfish can appear, like the seabats. There are 2 thresholds. If someone does not enter the top-lower (below the stairs) part of the ship before the conch's turn, they will move. If anyone moves past the 2 anchor lines, they will move. Hence, the 4 force members that kill them need to take double turns, to get there and kill them to end the battle. If the spot where they stand is open at the end of the round, the shellfish will appear, unless the end of the round ends the battle. The Shellfish never appear :) There is some standing around in round 2 to wait until everyone can make the move downwards.

Battle 18

2 Mages, 3 Ice worms, and 5 Golems can appear on this map. By taking Balbaroy south, he never crosses a threshold to make them appear, and by the time he does, he ends the battle by killing the Durhan, thus, they never appear. Luckily, the designers didn't include the mountains in the threshold.

Battle 19

Pelle is the only member of the force strong enough to one hit Kane, and only after getting the Halberd. So, he gets the mobility ring, and goes on a power trip. The mage had to be manipulated to not cast a spell at him. Oh, and Bleu sucks. His agility absolutely limits the number of battle orders I can use that group the force together. Too bad he is essential for the next battle.

Battle 20

MORE MOUNTAINS AND TREES! I had dreaded doing this battle since I started the TAS. Luckily, the 3 fliers are able to slowly but surely clear out the map. This also introduces the magic multi-critical.

Battle 21

Mishaela is far too fast, so no one can move in to kill her before she makes it around the corner. Luckily, she comes right back towards balbaroy, making for an easy kill. The gargoyles are destroyed by a triple magic critical.

Battle 22

EVEN MORE MOUNTAINS AND TREES! GENIUS DESIGNERS! Amon had been useful for the last time in Battle 20. Now, she is useful in moving the laser eye into Gort's range. Same with Bleu. Good bye and good riddance.

Battle 23

This battle could be ended a round early by giving Balbaroy a turbo pepper. However, Musashi needs it more, and this way, he can pick up the Valkrye for Pelle. This weapon can only be received by opening the chest during battle.

Battle 24

Musashi with the mobility ring is able to cross Chaos's movement threshold before his turn, but after all but one of his guards turns. This prevents them from doing there job of guarding him, leaving him wide open for a quick kill. Also, the enemy achieves a nice double magic critical, eliminating the new useless force members.

Battle 25

WOW, WHAT A SURPRISE! MORE MOUNTAINS AND TREES! Balbaroy makes his way down to kill the skeleton quickly. This debuts the mobility ring trick. He swaps over to the power ring, avoiding the need to waste 7 seconds casting BOOST.

Battle 26

The last of the "clear the map" battles. Gort achieves a triple magic critical on the 3 doggies. Lots of item swapping is done to prepare for the next battle, since there are no pauses.

Battle 27

Ramaladu! The only battle orders available had Ramaladu and 1 enemy attacking before Musashi and Max can go. Thus, the closest enemy that can not attack is chosen. Having Balbaroy BOOST Max was my first try. This caused the worst battle ever seen. If Max and Musashi hadn't had such high agility, my force would have been decimated. Laser Eyes cause 20 damage, that can't be avoided.

Battle 28

I HATED this battle. There is an impassable by flight barrier I didn't know about between Colossus and the bottom of the map. Thus, I have to go left, and around. The mobility ring glitch and the BOOST glitch are used extensively. On balbaroy's 2nd to last turn, he equips the mobility ring, moves to his new spot, equips the power ring, and the BOOST spell ends. If he tried to equip the power ring on the next turn, the BOOST spell glitch would end. The cursor bounces around for the 4th and 5th battle round, quite a bit. This is because the earliest Balbaroy can move/attack is 11th! Only one order exists which he is 11th, which is used for both the 4th and 5th round. This avoids the 2 jets below him from getting into range to attack him, much less even moving! Unfortunately, he could not go before the one Jet hence why it follows him.

Battle 29

Musashi shows his necessity. His attack level is the only one that can defeat Darksol with such ease. The 2nd and final round only consists of Darksol, Max, and Musashi.

Battle 30

The END! Having Dark Dragon attack my 2 heroes turned out to be the fastest strategy. One last bug was found for this battle, allowing the movie to end early. Equipping the evil ring removes the BOOST has ended notice. The movie could be shorter by ending the "Dark Dragon has been defeated!" line, but that would make the actual file longer.

Thanks and Acknowledgments

Special thanks to Upthorn for his version of Gens with decompiler. This run wouldn't be possible without it. Thanks to ZeXr0 for his constant support of the run, even though his suggestions forced me to restart more than once! :) Thanks to matO for his intial run, which solved many thought problems for me, as well as giving me a benchmark to blast away. :)
Fun Facts
  • No shop is ever visited, All weapons obtained from Chests and Enemies
  • There are 454 enemies in the game, 238 which are completely ignored, or 52%!
  • The average number of characters on the force is 5
  • Only 4 players are promoted
  • The average end level of the remaining 6 (+pre-promoted levels) is 12.

Known Improvements

  • Setting the character name to A or Z can save 2 frames per time the hero name is said. They say 'Max' probably over 100 times in this run, stupid scripters.
  • The villager who blocks the guard in Guardiana can be manipulated from far away, allowing for a faster escape.
  • It may be possible to end Battle 3 one round earlier
Suggested SS

Truncated: It's quite long, but not longer than our other RPGs, and there is action most of the time and surprises to those familiar with the game. Also it has received good feedback. Accepting.

Bisqwit: Hi, because of a software glitch, I'm posting NesVideoAgent's screenshot selection instead of NesVideoAgent posting them. Here goes...

adelikat: Setting to cancelled by the author as he has improved it.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14854
Location: 127.0.0.1
This topic is for the purpose of discussing #1696: DarkKobold's Genesis Shining Force in 2:21:39.72
Joined: 4/3/2005
Posts: 575
Location: Spain
Completely unbelievable! Watching tomorrow for sure.
No.
upthorn
He/Him
Emulator Coder, Active player (388)
Joined: 3/24/2006
Posts: 1802
This is highly impressive stuff, as many have noted during the WIP stage. Towards the end it starts feeling like a lot of time is taken up uselessly shifting focus from one enemy to the next, but I trust that you minimized that to the best of your abilities. All in all, as I said before this is highly impressive, yes vote. Edit: remainder of post deleted as it is no longer relevant.
How fleeting are all human passions compared with the massive continuity of ducks.
Joined: 5/17/2004
Posts: 106
Location: Göteborg, Sweden
I'm impressed, and not just due to earning the First TAS With Extensive MATLAB Use badge. I really never expected entertainment from that beyond load train; sound(y)... As for the run, technically I can't find any obvioust flaws. Which probably isn't saying much, but it's still something. I imagine many who haven't played the game would find this run rather dull and I too made more extensive use of tab than I usually do even for rpgs; however with decent speed up I personally liked seeing the poor AI get abused and slaughtered.
Skilled player (1636)
Joined: 11/15/2004
Posts: 2202
Location: Killjoy
upthorn wrote:
This is highly impressive stuff, as many have noted during the WIP stage.
Thank you. Don't forget, it couldn't have been done without you!
upthorn wrote:
Towards the end it starts feeling like a lot of time is taken up uselessly shifting focus from one enemy to the next, but I trust that you minimized that to the best of your abilities. All in all, as I said before this is highly impressive, yes vote. Though, I didn't really understand why you only promoted four characters, I'd appreciate it if you could explain the pros and cons of promoting each character in the submission text.
I tried to fix these in the submission text. Let me know if this is better.
upthorn wrote:
Edit: That screenshot is at the wrong resolution I've taken the liberty of retaking that screenshot at 1x size, and uploading to imageshack here:
Thanks, fixed.
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.
Skilled player (1484)
Joined: 4/28/2005
Posts: 240
Location: Finland
Y-E-S One of the classic Genesis games has finally met it's champion :) Christmas came early this year.
Projects: Warlock, Ren & Stimpy (impr) / Generations Lost (impr.)
Joined: 2/1/2007
Posts: 245
Location: Israel
Wait, you can fast forward in Gens? The only way I found for doing that was to use frame search. Is there some other way? When I press tab it resets the game (which has screwed me over quite a few times in the past, I need to keep reminding myself that I'm not playing/watching a NES or SNES game/run). Anyway, I'll watch this run soon-ish.
Player (81)
Joined: 9/16/2006
Posts: 63
I'm going to watch this RIGHT NOW. Sleep be damned.
End of Line
Joined: 3/7/2006
Posts: 720
Location: UK
!!!!1 I just watched the Marionette kill. If the rest is as good as this, it's an easy Yes from me. HAHAHA! Not one playable character in the ending sequence is a living member of the Shining Force! Yes.
Voted NO for NO reason
Player (81)
Joined: 9/16/2006
Posts: 63
Hell, half the end cast didn't even join the Force in the first place. :p I *loved* how the movie ended on the special "Max kills Dark Dragon" attack! I remember playing through the game myself and seeing that and I was like.... WHOA! SPECIAL ATTACK ANIMATION! SWEET DEAL!
End of Line
Joined: 2/1/2007
Posts: 245
Location: Israel
I've followed the run rather closely, and am happy to see it complete. I hope that perhaps there'll be some break-through with SF2 soon.
Joined: 4/30/2007
Posts: 151
if nothing else i give props to finding a use for matlab in tas
Joined: 1/23/2006
Posts: 31
I thought the same thing at the end - woah, who are all those weaklings whining on the shore? Hahaha. Loved the game, played through and finished it quite a few times in my life... but maybe thats why I'm jaded. =/ Even watching the game get destroyed (which is fantastic), it's sooooo slow to just watch and not make the decisions yourself I ended up putting it on 0 frame skip, not auto, just to haul through the movie. (Cut the time down to about 30 minutes - it's the only way I'm aware to "fast forward" while watching a movie file in Gens.) Voted yes, amazing work, great game, unbelieveable luck manipulation... just a little on the ho-hum side for "action" IMHO. (Which is to be expected, it's a strategy RPG)
Joined: 10/16/2006
Posts: 174
I've also been closely watching the WIPs, and I have to vote yes. I just couldn't believe it would be this long! Anyway, this may be a bit soon to ask, but what about the second one? From what I can tell, it looks like it's faster-paced and even longer than this one. But obviously the most important question is if it's as easily manipulated as this one.
Joined: 4/3/2005
Posts: 575
Location: Spain
Very fun, and the deaths of your companions make the run more interesting and cinematic. I love how the secret weapon never activates, the skipping of half the monsters, and when you save in the end all these people that you never met. Being this the longest movie on this site I've watched (and will ever watch) I give this a yes vote!!
No.
Joined: 8/19/2007
Posts: 10
I never thought that Shining Force can be finished so fast. I like how Max leaves the town without his pals. I am surprised how quickly ALL the battles were finished. Beating this game without any single mage in the action is unexpected thing. And I really appreciate the huge amount of work with MatLab and disassembler. Yes vote. I'm sure nobody would say "no".
Joined: 5/17/2004
Posts: 106
Location: Göteborg, Sweden
Mechuyael wrote:
Wait, you can fast forward in Gens? The only way I found for doing that was to use frame search. Is there some other way? When I press tab it resets the game (which has screwed me over quite a few times in the past, I need to keep reminding myself that I'm not playing/watching a NES or SNES game/run). Anyway, I'll watch this run soon-ish.
Checking the readme for my gens (9.5b), fast-forward on tab was apparently implemented in 9g. Certainly works for me, at least.
Joined: 3/7/2006
Posts: 720
Location: UK
Chemist wrote:
I'm sure nobody would say "no".
Don't do that. It just adds to the peer pressure. I can perfectly understand how someone would vote no - the movie is very long (not long for Shining Force, but for this site), a lot of that time is watching the cursor move, people who don't know the game don't know that he is doing anything special, etc...
Voted NO for NO reason
upthorn
He/Him
Emulator Coder, Active player (388)
Joined: 3/24/2006
Posts: 1802
LagDotCom wrote:
people who don't know the game don't know that he is doing anything special, etc...
Well I think the fact that no enemy attack ever succeeds at damaging any player character is a bit of a giveaway. Also the fact that only two enemies in the entire game take more than one attack to fell... (Well, technically 4, because dark dragon is 3 enemies all by himself, but still)
How fleeting are all human passions compared with the massive continuity of ducks.
Joined: 2/1/2007
Posts: 245
Location: Israel
Heh, I guess that by the time that I got the fast-forward enabled Gens I was already used to 'tab' reseting the games so I never gave it a try until now... And yes, it works. Thanks (sorry for getting off-topic here).
Joined: 3/7/2006
Posts: 720
Location: UK
upthorn wrote:
Well I think the fact that no enemy attack ever succeeds at damaging any player character is a bit of a giveaway.
Actually, quite a few PCs die. Have you watched it? :)
upthorn wrote:
Also the fact that only two enemies in the entire game take more than one attack to fell...
As for that, the game might just be really easy. I know it's a stretch, but you can see how another viewer might think this movie is boring and/or unimpressive. I think it's very impressive personally, but just arguing the opposite point.
Voted NO for NO reason
Skilled player (1636)
Joined: 11/15/2004
Posts: 2202
Location: Killjoy
LagDotCom wrote:
upthorn wrote:
Well I think the fact that no enemy attack ever succeeds at damaging any player character is a bit of a giveaway.
Actually, quite a few PCs die. Have you watched it? :)
upthorn wrote:
Also the fact that only two enemies in the entire game take more than one attack to fell...
As for that, the game might just be really easy. I know it's a stretch, but you can see how another viewer might think this movie is boring and/or unimpressive. I think it's very impressive personally, but just arguing the opposite point.
I actually agree with this. The game doesn't display that a double critical hit happened, because battle messages are turned off. Plus, if you don't know the game, you don't know that the DHDC has a rare possibility of about 4 in 65536 (it changes). Or, that most battle orders were selected from 1 of 65536 different options, making the chance of this run happening on a console 1 in infinity^10. Additionally, the swing that takes down Darksol, and 5 of the 7 hits on Dark Dragon are all the same RNG input, 119 of 65536. This is the only value in the game that will deal enough damage to take them down.
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.
Rat
Joined: 7/17/2005
Posts: 23
Max leaving town to fight his first battle alone is just one of many badass moments in this run. Yes vote.
+_+
upthorn
He/Him
Emulator Coder, Active player (388)
Joined: 3/24/2006
Posts: 1802
LagDotCom wrote:
upthorn wrote:
Well I think the fact that no enemy attack ever succeeds at damaging any player character is a bit of a giveaway.
Actually, quite a few PCs die. Have you watched it? :)
err, I meant aside from the ones mentioned in the submission text as being on the death list.
How fleeting are all human passions compared with the massive continuity of ducks.
AnS
Emulator Coder, Experienced player (723)
Joined: 2/23/2006
Posts: 682
That was truly awesome, even though some battles are quite fastforwardable. Hope someday there will be similar SF2 speedrun.