Shove it on the Sega Genesis is based on the game Sokoban. To complete each stage, the level ending in 8 or 0 must be completed.
Thanks to BaconOmelette https://www.twitch.tv/baconomelette for the collaboration: testing and generating efficient solves.
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.
Tools used:
  • Bizhawk w/ TAStudio
  • Sokoban YASC
  • YASO 2.149
  • JSoko

Darkman425: Claiming for judging.
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.
Hello, squilibob, and welcome to TASVideos!
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:
Quoting Shove It! ...The Warehouse Game manual, page 8
Some stages can be beaten by mastering one or two key rooms, but you have to figure out what rooms they are!
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.
Accepting to Standard.

EZGames69: Processing...


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15527
Location: 127.0.0.1
LoganTheTASer
He/Him
Experienced player (792)
Joined: 7/3/2022
Posts: 463
Location: Berkshire, UK
what javascript did you write for this TAS? i want to use it for the Uzebox Sokoban games.
YouTube: @LoganL2008 Discord: sneakers_o_toole Watch my TASes here: https://youtube.com/playlist?list=PLmcAd4CTuEymf4qWKIE0Pv_NlA031cYR1&si=m1hP9qz9c8Ip35Ur
Editor, Player (79)
Joined: 1/2/2022
Posts: 65
Location: Canada
The American release cut the level count in half, Sokoban (or Shijou Saidai no Soukoban) is the more complete version.
Player (25)
Joined: 1/10/2023
Posts: 1
Location: Brisbane
LogansGamingRoom wrote:
what javascript did you write for this TAS? i want to use it for the Uzebox Sokoban games.
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:
import { promises } from 'fs'
const blank = `|..|............|............|
`
const direction = {
	u: `|..|U...........|............|
`,
	d: `|..|.D..........|............|
`,
	l: `|..|..L.........|............|
`,
	r: `|..|...R........|............|
`,
}

let levels = {
	8: 'llLdLLUdLrrruLLLrrrrruulllDLddrruLLrrrrdLLLL',
	20: 'lLLuullddRDDldRRuluuluurDDDDldRuuuurRdLulDDDuurrrruLLLulDDDuullldRRDDRRluluurDDldR',
	30: 'UrurDrDrDrDDurDluuUrUUddDDuullURdrUlUdllllldDDurDuUUdRDDuRDRUlURdrDuUUlLdlUddlllUUdlDlDlDuruUlUUddrrULdlUlUdrdDDulDDuurrrrDLLLulDuUU',
	// 30: 'UruLdlDrururDllldlDlDururrurrrDrUdDuullllldlUrrrrrrddrDDuuluulllldDDuuurrrrddrdrDululuurUdlllllllddldlDurururrurrrrddrddLLLrrruuluullllllddlUlUUdlUrdRRRdrUllldddlUlUdrrrurrurrrrrDullllllllddlddlUrrururrurrrrrdrDuluurDllllllllllDlUrrrrrrrrrrdDrUUUldlllllddrUluRRRRRdrUddDulDuullLLLLLdlUruLdlUrrrrrrdDDuulllllllDDDrurururrrrdRRurrddlUUruLLLLLLLLLrrrrrrddDurrdLuullllllllluRRRRRRurDrdLLLLLLrdRRRRRRdrUUUllllllddDuuulllldRRRRRdrUUrdddRurDullllllldlUUluRRRRRRdrUllldddLLLulDrrrrrurrdLLLLLulD',
	40: 'lDDrrDDlLrruulluurrDDDullDDrRllulllddrURlluRRdRUUrrddLLLururruullDDDldRullldRurrurruLulDD',
	48: 'dlLdlluRRdddrrUULLulldRururrD',
	58: 'llluuurrRRRRRRRlllllluuurrrdrrrUdlllulldlddrrrrrrdddrrUUddlluuulllllluuurrrdrrrurrrddlUUlldlllulldlddrrrrrrdddrruuUUruullldlllLLrrrrrurrrddlddddlluuulllllluUruLLdlUruLdrrruuurrdLulDDDrdLrrrrrurrrddlddddlluuulllllluUruLLdlUUdrrruuurrrrrdLLLLulDDDrdLrrrrrurrrddlddddlluuulllllluUruLLdlUrrruurrrrrDulldRulllldddrrrrUUluurrdLLLLulDDDrdLLLrddrrrrrrdddrruuuuruullLdlllulluurrrdrDrdLLLLLrrrrurrrrddlddddlluuulllllluUruLdlUUUddrruurrrrrDlddlllllddrrrrrrdddrruuuuruullLulDrdLLLLLrrrrurrrrddlddddlluuulllllluUruLdlUUddrrrrrrurrrrddlUruLLLulDrdLLLLLrrrrurrrddddddlluuulllllluUruLdlUdrddrrrrrrRldddrruuUUUruLLLulDrdLLLLLLddlldlddrUUluRRRRRRRRRRldddrruuUUUruLLLulDrdLLLLullddddLullddrUluRRdrUUdrrrrrrrruuuruulDrdLLLdlUUruLLLLulDDurrrdrddllulLLLLrrrrdrrrurrrdddlldRlddrruUUUUruLLLdlUUruLLLLulDDurrrdrddllulLLLrrrdrrrurrrdddllllldlddrUUluRRRRRdrUUUruLLLdlUUruLLLLulDDurrrdrddllulLLrrdrrrurrrdddlllllddrUluRRRRdrUUUruLLLdlUUruLLLLulDDurrrdrddllulLrdrrrurrrddddddlUUluRdrUUUruLLLdlUUruLLLLulDD',
	60: 'rdDllldllDDDrRurRdddLdRRRRRRurrruuuuLLdllDurrRurDDDrdLLLulLuuuLLdRurDDDDDlllllllUlldRRRRRRluuuuRRRurDDDrrdDlUdlldlUUrRuuulllllldlDDldRRRRRlllluuuluuurrurrrRDDuuluurDrrDDDDDDDllDlluuuurRRurDDDRDLLddRUluRuuulllllldRllluRRRRDDDldRRRlluuuuRRRurDDDDDRUluuuuuuullDDulldRDRluurRurDDDDDDDlDRllllllluuulDDldRRRRRRRllluLLulDldRRRRRRluuuuRRRRRRRurDDDrdLLLLLuuuuuullDDldRRRRRRurDDDrdLLLrruuuullLdllluuurrdDDDDDuuulluRluurrdDDDDuuuuurRurrdLLLruLLLrDDDDDuuuullluurDDDDldRRRRRRurDDDrdLL',
	70: 'urrrddddLLLLLLLLLLLddrrrrrUdlllllllddrUluRRRdLullddrUluRdrUUUUdrrrrRRRRRurrdLLLLLLLLLLrrrrddllLLLuUruLLuRddrrrrrrrrrddlUruLLLLLLLLrrrrddllllluUruLddddlluRdrUUULURuLuurrrurrdLLLLulDDDuurrrrrrrddlUruLLLLLLulDDurrrrrrrddDrdLLLLLLrrrrddlldLLLuuUUdddllddrUluRdrUUUrrrrrrrrrrruuuullDlLLrrrDDrruLddLLLLLLLLLLrrrrrruuurrrDDrdLLLLLLLLLrrrrrrrrrrdLLdlUruLLLLLLLrrrruulUruLLLLLLulD',
	78: 'luuUruLLdrdddrruLdrrruLLdllUUUlldRurrurrdDlddlluUluuRRllddrUluRddddrrrUUUddlLdlUUUdddlUUU',
	88: 'ruulUruulLLdlddrUUddlddrUUURRUddrUUddddlUUUddLUdLdlUUUrRRdrU',
	100: 'uUruuuurrdrRddLDlddrUUlUUUUluRddrrddLdlUUUUUUUlllLulldRRRRRuRRdLulDlllDDDDDlddRUUUUUURuLulldRRRRRDrUdddlldRlddLDlUUUUUUrurruRddddDrrddllUUUUUUddddrrdrrruulDLLLrddlluUUUUlLulLulldRRRRdrURddddrrrrrdLLulllddrrUruLLrddlluUUUUdddrrrrruuruulldDDrdLLLLrddlluUUUdddddddrrruurUUruLLLLrddlluUUddddddlllUUruLdlUUUUUURRulLulldRRRR',
	110: 'uRRRururuuluuuulDrdddDlLdLddrrurUruLddldlluuruuLDLLLLulDrrrrruuUluurDDDDrdLLLLLLrrruRdrUUUluurDDDDrdLLLLLullDDRUrrrrruuuuRRurDDDDrddlULLLLLLLLrrrrruuuurrrddlUrdDrdLLLLLLLLDllUURDDurrrrrrrrddldlluUruLLLLLdlUrrrdRurrrrddldlluUruLLLLLULDrrrrruuuurRurDDDDrdLLLLLLLLLrrrrrdddrrdrUUUruLLLLLLLLdLUU',
	120: 'lDDDrddLddLLulULLLLLdddRdrruulLdlUUUruLLLdllddrRRdrUUUUruLddLLrrrrrrrUUlDrdLLLLLdddrdrUruLLdlUUUUUruLLuuurrrdDDDuuuurrdDDDDrdLLLLrrrrdrddlLLLdlUluuUruLLUULdlllldddRluuurrrrrrdddddrruLdlUUUUUddrrrrrdrdrrdLLLLrULLLLdlUUUruLddddrrdrUruLLLdlUUUUdrrrrrDrdLLLLLdlUUULURdrrrruuuuuLulDDDlLLDRddrrrrDrdLLLLdlUUUUUluRdddddllllUUUddlluuurRRRlldddddrRRRRdrUruLLdlUUUUUddddrrrrrrrruLLLrrruULLLulDuuurDDDDLLLLrrrrDrdLLLLLLuUUdrrrrrurruULLrrrDuuulDLuLLLrdDDDrdLLLLLrrrrrurruruLLuLDDDrrDDrdLLLLLLLdlUUUddLLLdlUUUUddlluuurRRluuurrrDuurrrDDurrDDDDrDLLLLrrrrurrurrdLLLLulDrdLLLrrrDrdLLUruLLrddLLLLLLLdlUUUUddlluuurR',
	128: 'lluurrrrrrdDuullllllddrrRRRRRRRdrUUruLddlllluullllDullddrRRRRRRRRdrUUdlllluullDullddrRRRRRRRllllllllDDLLddrrrruuUdddllUUUUrRRRRRRdrrUUlDrdLrrrddllllllluUUlluurrDullddrRRRRRurrrurrddLruLLLLDlllllllllddRlddrruUUdlluurRRRRRRRdRUllldRulllllllddddlllluuRRRRRlddrruUUdlluurRRRRRRRlllllluullDullddrRRRRRRRRllldddrrrrrrruuLrUruL',
	138: 'rDrrddlUdrddlUUdlLuLrRdldRurrddlUruLLrruuuLLullDllddddrRRRurrddlUruuuullDDuuulldRurD',
	148: 'lLdLdRuuuLDrrruLdlluulldDRRRddlllUdrrUruRuuLrdrrdLdLrdLL',
	160: 'DLLuullddLLuuLrddrruurrddLruulldLdlLURuRRdRdLLrrrrruULDruUruullllllllllldddddddrrrrrrrrrrUULrddllllllllllddrrUdlluuuuuuuuurrdLulDDDDDDDuuuuuuurrrrdLLLulDDDDDuuuuurrrrrrdLLLLLulDDDDuuuurrrrrrrrdLLLLLLLulDDDuuurrrrrrrrrrrddlULLLLLLLLLulDDurrrrrrrrrrddlddrUUUruLLLLLLLLLLulDrrrrrrrrrrddddddlllllllLLrddrrrrrrrrUUUUUUUruLLLLLLLLLLrrrrrrrrrddddddddllUdlllllluurrDurrrRRlddrruUUUUUddddddllllUdlLLLLrrruurRRRRlddrruUUUluurDDuuUruuLLLLLLLLLLrrrrrrrrrDDDlddrUdlLLululldRRldRRllulldRRR'
}
let copypaste = levels[160]
console.log(copypaste.length)

copypaste = copypaste
	.toLowerCase()
	.split('')
	.map(letter => direction[letter])
	.join(Array(17).fill(blank).join(''))
promises.writeFile('test.txt', copypaste)
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15527
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [5781] Genesis Shove It! ...The Warehouse Game by squilibob & BaconOmelette in 18:26.94