I took the guide on gameFAQs and fed the level data ending in 8 and 0 to a sokoban solver which gave move optimal completed inputs.
I compared which of these were shorter and then wrote some javascript to convert them into TAStudio text.
Finally I manually checked if the next stage was allowed after completion. If not, I inserted an idle frame before the final move in the previous stage so that the game would progress.
Darkman425: Replaced the input file with one that truncates the blank input at the end. Also removing the "any%" since that's implied from unbranched movies.
While Soukoban is a fairly straightforward game, optimizing it isn't quite as easy. Using botting to get more optimal solutions than the ones known out there is pretty helpful. There's a weird quirk about how this particular Soukoban game works. This is what the US manual has to say:
Each stage consists of 10 rooms but only the key rooms are needed to move onto the next stage. From what I can gather, the waits at the end of finishing a key room affects the RNG to check if that counts as the key room needed to move onto the next stage. This also means there's routing considerations for choosing which key room would be faster for clearing a stage, thus leading to the fastest 16 key rooms needed to reach the ending. This makes this submission look good overall to me.
I'm not sure how much it would help you. I took the output from the sokoban solver and converted the directions to a text file that TAS Studio could read. I am going to post all of it here if it fits, there was another loop that iterated all of the levels but I deleted it while testing something on the final level. All the parsing code is there though: