(Link to video)
Submission Text Full Submission Page
  • Aims for maximum score
  • Genre: Shooter
  • Content Warning: Flashing lights
Sayonara Wild Hearts is a synth pop concept album cleverly disguised as a rail shooter arcade game, developed by Simogo and published by Annapurna Interactive in 2019. We play as a heartbroken woman, tasked with amending the world and the pieces of her heart by running, sword fighting, riding bikes, drifting, flying and so many other setpieces that make this game an absolute vibe.
This submission aims to finish the game in style by obtaining the maximum possible score in each of the game’s 23 levels. Score is not transferred across levels but each level keeps track of the highest score the player has gotten in it, so this run aims at maximizing each IL separately. The game recognizes scores by giving them ranks, which can be Bronze, Silver or Gold, as your score goes above a certain threshold. An additional rank, Wild, is recognized by the game but only after obtaining a Gold rank on all levels in the game. For reference, I’ll be including these thresholds as well as the best known RTA score for each level.

Technical Background

Before talking about the game itself, it’s worth stopping and talking about the highly unusual framework used for this submission. Sayonara Wild Hearts was developed in Unity (specifically version 2018.4.7f1). While previous submissions have used a system to port the official Steam Windows releases to Linux, this was not feasible for this game as the Windows build only supports Direct3D 11 as its render API, which a native Linux build cannot provide. However, the game has a Mac build which we could use for that purpose. As such, this constitutes the first known submission of a modern MacOS game Turns out rythin beat me to this! Well done. A python script to automate the process is currently in development.
I’d like to thank DemoJameson and SBDWolf, as their work to solve this same issue for Cuphead made this submission possible.

Level breakdown

Clair de Lune

Gold Rank: 15000
Wild Rank: 18400
RTA WR: 18415, by several runners
The first level of the game, and a simple tutorial. For our purposes, however, it’s perfect for learning the basics of score attack runs that will inform the rest of the movie. Every level contains three major collectibles: the small hearts, worth 1 point; the big hearts, worth 25 points, and the square coins, worth 1000 points. Each of these, however, allow for a combo mechanic, where each of them is worth more based on how many you have collected. Each following collection multiplies, and each collectible has its own separate counter. The combo counter resets on death or after completing the level. As such, the first major way to obtain points is to collect as many of these as possible without dying.
This level’s score is capped to 18415 with a route that collects the most possible items.
Score: 18415

Heartbreak I

Gold Rank: 25000
Wild Rank: 36300
RTA WR: 36381, by several runners
The introduction to the first act of the game, this level is the first to require more precise movement for its score run. It also introduces a teleport mechanic which also adds points every time it is taken and stacks, so we take every single one we can.
This level’s score is also capped, since the current route collects every single available collectible in the level and interacts with all possible teleports. While there are glitches that would allow us to get more points (foreshadowing!), the most promising requires dying, and this level does not have any source of damage whatsoever.
Score: 36381

Doki Doki Rush

Gold Rank: 30000
Wild Rank: 36900
RTA WR: 40428, by liv
This is a rather short level, but it introduces several major elements. For starters, it is the first motorbike level. While riding the bike, we can earn 50 points by performing a Slide, which is done by holding a direction until reaching a distance threshold. Additionally, this level is the first where one can feasibly die by colliding with buildings or with traffic. This, in turn, enables us to gain even more points by obtaining Risky bonuses by grazing hitboxes. These two bonuses give 50 points every time they’re obtained, and while they do not stack, they can be obtained multiple times per level with well planned movement. These two sources of points are commonly referred to as style points.
A new technique, called Slide Chaining, has been discovered and developed for this movie and shines in this level. By releasing a direction after the minimum distance to cash in a slide and quickly pressing it again 4 frames after, we can get the points from the slide while retaining almost all our speed in said direction. This, in turn, allows us to get two or more (potentially several) slides in a single direction and removes the need for snaking in order to get slides. While snaking would definitely be faster for the sake of generating points, using slide chaining allows us to sneak in some more points out of long slides.
Finally, there’s an interesting usage of a pause. In order to prevent players from getting multiple risky bonuses out of the same collision, Risky bonuses have a short cooldown in which you cannot get another one, even from a different source. Here we take a pause to wait for the cooldown to finish in order to cash in one extra Risky from a line of cars.
It’s worth mentioning that the RTA high score for this level was 40176 by the time this movie started production. The discoveries made in the development of it helped the RTA community push the record and improve it. Yay for cooperation!
Score: 40578

Fighting Hearts

Gold Rank: 10000
Wild Rank: 13400
RTA WR: 13703, by Dama
This level introduces us to the rhythm game elements, as we get QTE-like prompts to press a button and they’re usually timed to the beat. The closer to the beat you land them, the better. A Perfect press will give 250 points for each, and they don’t stack.
The level also includes a short bike section, and we use the same techniques as in the level prior. However, we run into an interesting section right before the last big heart, as the 18 hearts spread there are too far apart for us to grab them all at once. We can skew our hitbox by moving left or right, but this also takes us away from them. The best known strat is to wiggle with a certain rhythm, but said wiggle has to be executed differently depending on your position, and the best wiggle we could achieve collected 15 hearts, leaving 3 behind.
Score: 13703

Begin Again

Gold Rank: 60000
Wild Rank: 75300
RTA WR: 83716, by liv
The first “boss” level and the end of the first act, this level is lengthy and a significant step up in difficulty. Early level routing consists mostly of collecting all possible items while obtaining as many style points as we can get away with. A couple interesting choices are intentionally hitting a fence on our way out of a tunnel to set up for a slide + risky towards a tram (as hitting the fence just lowers our horizontal speed, making it so by the time we get into position we’re not carrying as much horizontal speed, giving just enough time to recover and hit the slide while making it to our target). It’s worth mentioning there’s a known slide right at the end of this section which is obtainable on console and with joystick, but this TAS was unable to obtain it as it uses keyboard inputs.
… and turns out this will be relevant later.
As the first chorus of this song hits, the road splits and we fall down to it, able to fly freely. Similar to other rail shooters like Star Fox, we’re able to freely move in all cardinal directions and diagonals. These sections remain mostly simple.
Each boss level contains at least one big KO section, where the game expects us to mash over and over for points. Similar to small hears, for each of these, every button press adds 1 more point than the previous one, so mashing N times results in N*(N+1)/2 total points. Interestingly for us, this mechanic has a frequency cap in mashing speed which can only be reasonably achieved at high framerates. The game defaults to Vsync and the framerate is uncapped. Therefore, during these sections I increase FPS to 120 in order to hit optimal mashing and therefore maximize score. I do not opt to run the entire game at high frame rate because other physics based tricks, such as slides, tend to be either much harder or impossible to perform at such high FPS. This will be done in all sections of this type for the remainder of the movie.
The second section includes a couple interesting tricks. The most notable is a wiggle, similar to the one done in Fighting Hearts, to collect all the hearts on the road before getting to the second Devil. Fortunately, we can indeed collect them all this time. Later we also briefly clip out of bounds by hitting the corner intersection between two walls while getting a Risky off of them. This is not required, but I can do it, so it must be done.
The final section is much more straightforward despite its spectacularity. Sadly, the road is just too thin to attempt slides during it.
Score: 90212

Heartbreak II

Gold Rank: 40000
Wild Rank: 59000
RTA WR: 63755, by several runners
The beginning of Act 2 brings it back to an old known format, but with a higher base difficulty. The most notable aspect is that it is very easy to miss hearts placed alongside teleport lines, so the TAS occasionally increases framerate during them as this helps work around the issue.
The most interesting strat this level offers is near the end. We’re expected to either take the middle path or take either of the side paths as they ramp up to a teleport. However, with good positioning, we can get close enough to the side path to collect the hearts on its way while still getting to the middle path, maximizing the amount of small hearts collected.
Score: 63755

Forest Ghost

Gold Rank: 20000
Wild Rank: 27000
RTA WR: 28485, by Dama
What looked like a straightforward level ended up being an interesting showcase of style point routing. The major constraint for this level is the odd placing of trees and rocks, which we can get risky bonuses off of but tend to be far away from the hearts we’re keen to collect. This is my current most satisfactory solution, making aggressive usage of pause buffers and careful movement.
Score: 28785

Forest Dub

Gold Rank: 10000
Wild Rank: 15700
RTA WR: 17546, by Dama
In another surprisingly tricky level, Forest Dub appears to be a simple straightforward road under the influence. However, the chaos is not just visual, and the movement is actually affected by the pulse of the screen! This, combined with a surprisingly generous slide window and large heart hitboxes, makes it possible to obtain several slides with well planned movement.
Score: 17796

Laser Love

Gold Rank: 40000
Wild Rank: 64700
RTA WR: 99573, by Dama
This level is the first to be a shoot-em-up proper, adding a minigun to our bike and tasking us to neutralize the attack of several robotic wolves. The gun shoots every 5 frames on its own, so we can only control where they spawn by moving to good positions. Not only that, but every bullet is physically shot from a slightly different position (as you can see visually since you shoot from each of your sides alternately). This has some minor effects on how the overall level is routed.
Each shot that lands on something earns 10 points, and objects are destroyed after 3 shots are landed on them, so in 15 frames at least. Objects destroyed by the gun (which we will refer as gun kills) give 25 points, and streak of each other. A wolf also leaves a row of three small hearts on death. Breaking a heart box gives us an amount of hearts varying by level (9 in this case) that home in to you and therefore get eventually collected with no extra input, as well as 100 extra points. All wolf patterns are completely set in stone, and as such the main challenge of this level is to plan and execute a route that maximizes both wolf kills and heart collection. Other style points are still applicable.
This route finishes the level with 70 wolf kills and 280 hearts collected.
_Score: 108960_

Dead of Night

Gold Rank: 35000
Wild Rank: 51100
RTA WR: 70388, by liv
As the final level of Act II, this one preserves the shooter mechanics introduced in Laser Love. It also introduces first-person bike driving which is not mechanically different from third person. Scoring in this level revolves around style points, as the level itself is sparse in terms of extra collectibles and kills.
This level, therefore, is required to make heavy usage of pause buffering to circumvent risky cooldowns, and achieving feats such as three riskies + a slide off of a single missile barrage.
Score: 75539

Heartbreak III

Gold Rank: 10000
Wild Rank: 14400
RTA WR: 16061, by Dama, MarineMonarch and Padaboum
After the chaotic showcase that was Dead of Night, Heartbreak III is a simple, chill level. The first part is another motorcycle section with a simple route. It’s worth noting that we exit this part one heart ahead of the best RTA score, thanks to collecting an extra heart during the rolling rocks section.
The second section has us flying while hanging to a tarot card. Controls here are very slippery, which has its own pros and cons. While it allows for some wide movement to reach risky bonuses easily, the low deceleration limits our route as it can force us to decelerate sooner than we'd like to hit certain useful positions.
Score: 16220

Hearts & Swords

Gold Rank: 15000
Wild Rank: 21400
RTA WR: 23036, by MarineMonarch
And on this level, sadness struck.
Hearts & Swords, at first glance, appears to be a very straightforward level. The level introduces split paths, and the RTA community has already plotted out the optimal path across the level for points.
However, here’s where a major discovery was found. Despite my best effort at replicating a slide obtained by the WR (available here: https://twitter.com/MarchingFishes/status/1375248575710433281, seen at 0:11), I was unable to replicate it. Another runner provided me with a video tutorial, and after replicating it frame by frame… TAS still didn’t get it.
Here’s an encode of my frame-by-frame attempt, with the RTA run for comparison: https://www.youtube.com/watch?v=mAxT4yj5JRQ
I am unable to explain what is causing this behavior, and I believe it is connected to the other missing slide (the one in Begin Again). I’ve looked at decompiled source code for the game regarding bike handling and slides and I found no major differences between the Windows and Mac builds. I suspect it might be a controller issue (I was unable to get controllers working with this game) but I have no proof of it. As such, and until I can prove the contrary, this slide and some others like it cannot be achieved in the TAS setting and it means this level is currently suboptimal.
Score: 22986

Parallel Universes

Gold Rank: 25000
Wild Rank: 33600
RTA WR: 37805, by liv
This level is the first to heavily focus on memorization and planning, as the level alternates between two different versions to the beat of the music. While the route itself is very straightforward, the execution is demanding, as we need to hit several style points that are easy to miss. This is where TAS obtains most of its advantage over RTA.
This level also contains a fun tech: Unlike other levels, The Fool spawns in the level being fully controllable as soon as she is spawned (which can be seen by the bike’s headlight). This happens before the point in which the level would begin if we were to skip the level intro cutscene, and the extra time gives us enough time to set up for a slide. This makes not skipping the cutscene optimal for score.
During the latter half of the level, as it quickly shifts between two versions, we take a very specific path. With proper movement, we can collect every big heart while also cashing in a risky off of each obstacle and a slide on our way to the heart itself. This maneuver is quite precise and in some specific cases frame perfect .
Score: 38255


Gold Rank: 25000
Wild Rank: 31500
RTA WR: 35063, by liv
The last level of Act 3 is a good collection of the mechanics we’ve seen in this act so far. Like Hearts & Swords, the level is structured around split paths, which we can take by moving in midair or by hitting specific big hearts. I opt to follow the RTA route as it has plotted the maximum number of hearts, but TAS manages to sneak 8 more hearts compared to WR as early as the first path merger, thanks to a precise wiggling sequence alongside the traffic lane lines.
After the first mashing section, the movie performs a surprisingly tricky slide. The inputs are not tough, but the timing is frame perfect: you must get the Perfect in the last possible frame. Any sooner and you haven’t covered enough distance for the slide, any later and you lose the Perfect. This also gives us a Risky off a fence, which thankfully is nowhere near as precise.
During the falling blades section, and specifically as I approach each big heart, I occasionally bump the framerate up to 120 FPS. This is done to ensure getting the Riskies off each blade without the need for pause buffering.
At the end, during the free flight section, I accidentally discovered you can get Riskies off of the buildings. This is known, but few runners go for them as the reward is quite low for the involved risk.
Score: 40589

Heartbreak IV

Gold Rank: 50000
Wild Rank: 82400
RTA WR: 94503, by Dama
Keeping up with the pattern for Heartbreak levels, we’re back on riding on top of a Tarot card and moving around. However, this level actually offers a unique mechanic with the introduction of sideways teleports. This allows us to warp from one side of the screen to the other. Each teleport adds 100 points, and they don’t stack.
Early level is just a simple snake pattern, but once the screen wrap is introduced, things change a lot. We aim to spend any idle time teleporting back and forth, as this is a constant source of points. However, this is not as simple as you may think: the game preserves the speed in which you enter the teleporter, so we aim to enter with the minimum possible speed. We also must be aware that there is a cooldown on teleports (as in, you can’t enter them too soon after you just exited one) and trying to do so not only delays the timer further, it can also cause the game to deny us the points from the most recent teleport. A look at reverse engineered code seems to indicate that this is due to the game not properly reporting the score gain if we wrap the first possible frame.
As we enter part 2 of the level (the top down view), we can observe an interesting quirk of the game engine. Sayonara Wild Hearts uses hitbox interpolation to handle collisions at high speed. However, the game does not disable this check when warping us between sides of the screen. This means that for one frame, effectively, The Fool has a hitbox covering the entire screen horizontally at her vertical position. This hitbox is not used for collision with damaging hitboxes but it can interact with hearts, which allows us to collect basically all hearts in this section remotely while we spam teleports.
TAS can even exploit this behavior for an extra small heart near the end of the level. By performing two teleports while collecting the final square coin, we can set up to drag one extra heart closer to us.
This is the first level to be played extensively at 120 FPS. This was done to minimize potential issues with collecting hearts (as it happened in HB2) and to get closer to the teleport cooldown.
Score: 95356

Night Drift

Gold Rank: 10000
Wild Rank: 19700
RTA WR: 26137, by liv
I will warn you beforehand, Act 4 is a lot. None of the three upcoming levels play by the rules of _any_ of the prior ones. I’ll have to explain a lot, but hey, you’re already reading this, so get cozy.
Night Drift, as the name hints, puts us on the driving seat of a sports car. The main mechanic is drifting: during turns, we can drift simply by holding the direction we’re turning in. This adds points, proportional to the distance we cover while drifting, and scaling quadratically (similar to mashing points). Their frequency appears to be related to framerate, and as such, almost the entirety of this level is played at 144 FPS, which empirically achieves the best scores.
Two important techniques exist in relation to drifting.
Danger Drift
named after DaringDanger, the runner who discovered it. The drift counter is supposed to reset to 0 if we spend too long not driving or if we switch directions. However, due to the way it is implemented in code, this check does not reset the drift counter variable right away, opting to do so on a timer. As such, it is possible to switch directions fast enough that we go from meeting the requirements for drifting on one direction to drifting on the other before the counter is reset. This allows us to obtain much more points by turning drift chains into a single, continuous drift.
Drift Extender
Drift points are given on a timer related to maximum and minimum score frequencies. Due to a yet-to-be-explained code oversight, releasing the direction of a slide and pressing the opposite direction for exactly 6 frames @ 144fps causes the game to force assign us the next queued point right away. This does not result in a net point gain if performed in the middle of a slide, as the next queued scoring event will be fired at the appropriate frequency again, but it can be used to obtain one extra score event right at the end of a drift.
This level is interesting as it is the first to contain evident heart drops: due to the fact that points from slides scale quickly, it is in our best interest to drop some hearts in order to obtain the longest possible slides.
Score: 27244


Gold Rank: 10000
Wild Rank: 16800
RTA WR: 17595, by Dama
I told you Act 4 is weird, so welcome to the VR level!
This level is a simple, first-person scrolling level where the goal is avoiding obstacles. While the level looks simple, the strange perspective makes getting riskies off of obstacles particularly difficult, to the point where very few of these have ever been obtained RTA. To make matters worse, collision for them is different than from other levels, as several of my common tricks (such as boosting framerate or pause buffering) did little to remedy the issue. Thankfully, it was still possible to obtain almost all the riskies RTA gets and several more it doesn’t.
Score: 18095

The World We Knew

Gold Rank: 70000
Wild Rank: 98400
RTA WR: 118151, by liv (non-mobile version)
The boss level of Act IV sends us to an unique 2D bullet hell level. Armed with direct control in all four cardinal directions, we must survive to the end while dodging obstacles and collecting hearts. This level plays differently on mobile, which supports touch controls, compared to desktop builds which use keyboard/controller, and as such this submission will only focus on the viable strats for desktop versions.
Right as we begin the level, we collect hearts and die. This sets up the already foreshadowed glitch called Dama Death. Dying resets our counters for all collectibles right away, but heart pickups do not increase the streak counter immediately. As such, dying while collecting hearts in a precise way can make the game give us the points (and therefore, increase the heart counter) after death. While the score is properly reset to what it was at the last checkpoint (0 in this case) once we respawn, the streak counter is not, so we can start the level with the counter already increased, adding a massive amount of points to the whole run (to be precise, dying as we collect m hearts in a level with n hearts total adds m*n points).
As the chorus hits, the game ramps up the bullet hell element by throwing several more obstacles and also granting us a burst of shots at specific frames. Since the shots are scripted, the only thing we can control is our location when they’re released, and each shot that lands on a destructible object gives 1 point and streaks just like collecting hearts does. As such, this section was really difficult to optimize and even my current solution is not fully satisfactory. To complicate matters further, this might be the first section of the game during which optimizing greedily might not be the best solution.
The second part is much easier to follow, as it draws from what we saw in the first part. At the final chorus, we see the boss of the level and dodge its barrage of missiles. As we can collect all the hearts here easily, I aim to land as many shots as possible .
Score: 121666

Heartbreak V

Gold Rank: 35000
Wild Rank: 52100
RTA WR: 57130, by Dama and Padaboum
As we enter the final Act of the game, the last Heartbreak level puts us on a boat, sailing through the Ocean of Death. The first section is quite straightforward: collect all hearts and items and that’s about it. To ensure we collect all hearts, we get to each whirlpool while sailing counter to its spinning direction so all the hearts get to us on time.
After the mandatory waterfall, during the long fall section, we optimize for riskies. Much like Reverie, riskies in this section are oddly temperamental and require specific setups.
Finally, we complete another card surf section. This is the final level to be proven optimal by RTA runners, as no more collectibles or point sources are available.
Score: 57130

Transonic Gravity

Gold Rank: 45000
Wild Rank: 73900
RTA WR: 91851, by MarineMonarch
This level returns us to familiar mechanics: ride the bike, slide around, get riskies. It also introduces a new one, a gravity shift portal that shifts gravity and sends us to a new part of the level. These shifts add 100 points to the score, and they streak. Their inclusion makes this level surprisingly nonlinear, as several branching paths exist. I’m following the currently optimized RTA route.
As we get to meet Little Death, they spawn electric lanes at the edges of the road. These are able to kill us, which means they create Risky spawns for us score runners! Thankfully they usually hit the right stride to not require extra pause buffers, unless we’re moving too slow, in which case I pause to obtain any missing ones.
Score: 92381

Hate Skulls

Gold Rank: 40000
Wild Rank: 56000
RTA WR: 62987, by Dama
Hate Skulls introduces a brand new mechanic, this one being arrow shooting. While we’re armed with our bow, we can aim at targets. Once we have aimed at a target (by moving our target reticle towards it, done with the arrow keys), The Fool fires an arrow at it after 30 frames (when running at 60fps, and this wait scales with framerate to always match about 0.5 seconds). Objects destroyed by an arrow shot give 10 points each plus streak. On top of this, an additional mechanic exists called combos. By queuing at least one arrow shot during the 30 frame window for the next one, all kills queued in succession are counted for a combo bonus that is given to the player once the last shot is fired. The combo bonus amount is related to the length of the combo: you get a Small combo for 2 or 3 hits worth 50 points, a Medium combo for 4 to 7 worth 200 points, a Large Combo for 8 to 13, worth 1000 points, and an X-Large Combo for 14 and up, worth 2500 points. Since the combo bonus does not scale any higher than 14, It is optimal to only get exactly 14 kills or an XL combo when possible, and subdivide to get combos efficiently for the remaining targets.
We start this level with another Dama Death. This one is probably the most precise death in the run, since we’re collecting the hearts out of a heartbox and we need to time the shot right so the hearts reach us by the time the skull hits us. I tested getting a kill streak stored via Dama Death, but a skull kill scores points (and therefore increases the streak counter) instantly rather than after a delay, and even if we time a kill to the same frame we die, skulls have a failsafe that causes them to despawn instantly if they’re aimed at and the player is hit, not granting us any points in the process.
Score: 63077


Gold Rank: 100000
Wild Rank: 134000
RTA WR: 142475, by Jux
Inside is a decently lengthy level that throws some curveballs at us, but we strike back. For starters, it features a Dama Death to store a boost bonus. This was the first known application of the Dama Death.
Interestingly, this level contains a very early checkpoint, with just enough time to get a slide before we hit it. The game remembers our exact position as we reach the checkpoint when The Fool respawns. so we position to get an extra slide and riskies once we respawn.
The first part of the level contains a mix of both bike gameplay and arrow shooting, nothing we haven’t seen so far. Thankfully, Little Death also thinks this part is not very entertaining and breaks the pattern by introducing pipes! We can move left and right with our bike, and we get a Spinny bonus for a full loop in the same direction. This is the final type of style point bonus, and it works just like slides. Furthermore, we can bring back our good old friend the Slide Chain to extract even more points out of pipe sections!
After we complete the halfpipe section and punch Little Death three times, she doesn’t take it too well and… vomits. The vomit stream acts as the outer version of a pipe, and both spinnies and slides apply. We route the style points precisely to also collect every single relevant target in the process. After some more heart collection and a short free flight section, we punch Little Death for the final time. We then just have to break the 20 hearts.
These 20 hearts are a good practical example of the strats used to subdivide arrow targets to maximize combos. While we could get them all in a single combo, we can instead subdivide in 14, 4 and 2 to obtain an XL, medium and small combo respectively. Nine heartboxes spawn once we hit the last heart (and can’t spawn until we shoot the last one so we can’t extend combos using them 🙁 ) and we also quickly shoot them down.
But as we do this, the final form of Death spawns, ready to strike. This section is straightforward, and after breaking her mask, we ready the bow and shoot her down for good.
Score: 150666

Wild Hearts Never Die

Gold Rank: 400000
Wild Rank: 661900
RTA WR: 857189, by liv
But the Eye of Death is not done with us. Welcome to the Grand Finale.
Wild Hearts Never Die holds several key distinctions for this movie. For starters, it is by far the longest level in the run, lasting a whopping 6 minutes from gaining control to the final source of points and being almost 2 minutes longer than the second longest level, Begin Again. Its length is compounded by it being a Final Exam level, tasking us to go through most if not all the major gameplay mechanics seen in the prior levels and of course throwing a couple new ones. These two elements combine to make it the highest scoring level in the whole run, easily accounting for over 40% of the total score.
I have no option but to subdivide this level in sections to make it comprehensible. Thankfully, the music for this level is composed of four different songs (5 if we count the credits theme, but that plays considerably after last input) which align with each section, so my work is cut out for me!

Eye of Death

Our final trip through the Heartbreak Subspace is a duel against the Eye of Death. Right away, our mission is clear: focus on the hearts. Due to the sheer amount of stuff in this level, by the end of the game each small heart adds over 1000 points. Maximizing heart collection is therefore our primary objective, while obtaining style points along the way.
The early section is a showcase of style point routing. With very eager movement, it’s possible to get slides and riskies out of almost all cards. Once the eye starts spinning, we follow the same idea, adding some extra slides. We even get to abuse the fact that only the cards and the eye itself has a hitbox by moving in between them for added swag.
Later, as the eye shoots projectiles at us, we bring back pause buffering. With good planning, we maximize the amount of riskies from the projectiles. The eye will keep shooting for the rest of this section, and we get riskies from them when possible.
The eye retaliates with more projectiles, and we pull our trusty arrow. This section contains 52 targets total, and we optimize in 3 XL combos (14 targets each), one L combo (8) and one S combo (2). This is the optimal combo distribution for this amount of targets.
Then we make it to the stairs, and the eye sends smaller eyes to attack us. Welcome back, minigun! We manage to net every single kill while dodging the cards and sliding around. You may observe here that kills from arrows do not stack with kills from the gun and vice versa.

Wild Hearts Never Die

As we stab the Eye and finally succeed, The Fool is transformed back into her original self, and is given a chance at self reflection. This materializes in this part, as we revisit all 5 Boss Levels, forgiving each boss (and ourselves) with a smooch. Those come with their own mashing section, effectively equivalent to the punching ones in the boss levels themselves.
From this point onward, we’ll be mostly riding the skateboard we got during Clair de Lune. This effectively takes slides out of the equation, leaving us only with riskies, pickups and mashing as our scoring options.
This section, as such, abuses riskies as much as it can get away with, including several during the Devils reprise, added ones during the Moons revisit, and a really precise motion to collect 125 hearts during the Hermit revisit, a feat that has only been achieved once RTA.

Dragon Heart

As we have come to self acceptance, we ride a majestic dragon. This section is short to explain because it is as simple as it looks! Fly through each heart ring to automatically collect all the hearts in it, then wrap it all up with the final smooch/mashing section.

Clair de Lune (Reprise)

We finish where we started, with a familiar setup seen all the way back at the very beginning. Ride the skateboard, collect things, and follow the little fairy around.
This final section reintroduces the gravity shift mechanic seen on Transonic Gravity, and the pipes seen on Inside. It also throws a brand new mechanic in the form of rail grinding, because this game has no brakes. Points are given proportional to our movement speed, so by spinning around constantly we maximize the score during this section.
Input finishes as we obtain the final 4 big hearts. The final source of score is our own mended heart, worth 100000 points.
Score: 878561

Score Table

LevelWild RankRTA WRTAS Score
Clair de Lune184001841518415
Heartbreak I363003638136381
Doki Doki Rush369004042840578
Fighting Hearts134001370313703
Begin Again753008371690212
Heartbreak II590006375563755
Forest Ghost270002848528785
Forest Dub157001754617796
Laser Love6470099573108960
Dead of Night511007038875539
Heartbreak III144001606116220
Hearts & Swords214002303622986
Parallel Universes336003800538255
Heartbreak IV824009450395356
Night Drift197002613727244
The World We Knew98400118151121666
Heartbreak V521005713057130
Transonic Gravity739009185192381
Hate Skulls560006298763077
Wild Hearts Never Die661900857189878561


Beyond potential execution improvements (such as collecting more hearts or more style points using the shown routes), I’m going to mention some specific levels that have unexplored or unexplained tech that could increase their score in the future:
  • Runners theorize it might be possible to trigger a Dama Death on Fighting Hearts during the final large heart patch. My best attempts either got no hearts on death or collected the hearts too early for the glitch to work.
  • The extra slide on Begin Again that was not obtained
  • Forest Ghost has potential for both a Dama Death and for a different style point route.
  • Laser Love can increase its score by dropping one heart box, if it gets one more wolf kill and can get all its three hearts. While I have been able to get the kill, I was unable to set a kill that would allow me to collect the hearts, so it was not worth it.
  • A glitch has been documented in Dead of Night that causes the Mecha Wolf heads to spawn at a much lower angle than intended and makes it possible to shoot at them from ground level. However, we don't know of any consistent setup to trigger it.
  • Hearts & Swords has that slide that didn’t work.
  • Parallel Universes has one slide after the first square coin that causes us to drop hearts when performed. There's a chance a setup for it exists that allows us to get it without missing any collectibles, but I couldn't get it.
  • I was able to collect all 15 hearts in the big patch in Heartbreak IV with teleport spam, but doing so causes me to be too late to grab the square coin after.
  • I’ve heard reports of RTA runners getting over 2000 points at the start of Night Drift, before the first camera pan. I couldn’t find any footage of this being done.
  • There’s potential for a more aggressive Risky route for Reverie, but a lot of the ideas are hampered by the difficulty of getting them to count to begin with.
  • The World We Knew offers the most room for changing strats, as a potential different strategy for the first chorus section could lead to massive score differences.
  • Hate Skulls has an strange risky + kill off the skull right after the big boost pad. I’ve only seen it done RTA once, and despite my best efforts I was unable to reproduce it.
  • During the Hermit section in Wild Hearts Never Die, it might be possible to obtain more hearts, but the window to collect them all is very small.
  • At the very end of Wild Hearts Never Die, the seven rings contain a total of 35 obtainable hearts (5 per ring) but I’ve been unable to collect all 35.


  • DemoJameson, SBDWolf, and the Cuphead TASers. Their work to get that game to a TASable state made this submission possible.
  • rythin, for beating me to the punch with the first MacOS submission!
  • Kilaye and the libTAS team for their technical assistance.
  • The Sayonara Wild Hearts score running community (and more generally, the Wild Hearts discord server), for their invaluable help and support. They provided me with all the knowledge they had in hand, encouraged me and made sure this movie could reach its highest level. I’d like to specially thank:
    • Dama
    • liv
    • MarineMonarch
    • Padaboum
    • Calamay
    • DaringDanger
  • Amber, my wife, for taking me to places I don’t know.
Sayonara, Wild Heart.

Experienced Forum User, Moderator
Joined: 8/3/2004
Posts: 13285
This topic is for the purpose of discussing #7974: ikuyo's MacOS Sayonara Wild Hearts "maximum score" in 48:23.14
Active player, Experienced Forum User (267)
Joined: 4/1/2022
Posts: 126
Location: TMNT Island
It's great seeing the game released in 19 September 2019 being userported from MacOS to Linux while it's really entertainment to watch this TAS, yes vote! When making your TAS, was the game running slowly? (less than 1 FPS)
As of 26 January 2023 11:31 AM, i'm pernamently stop using discord
Active player, Experienced Forum User, Judge (295)
Joined: 7/8/2021
Posts: 74
TheAmazingYucemu wrote:
It's great seeing the game released in 19 September 2019 being userported from MacOS to Linux while it's really entertainment to watch this TAS, yes vote! When making your TAS, was the game running slowly? (less than 1 FPS)
Not at all actually. Once I managed to make the linux build, the slowest it would run would be about 20 fps, and averaging around 30 fps during gameplay.
Active player, Experienced Forum User (267)
Joined: 4/1/2022
Posts: 126
Location: TMNT Island
ikuyo wrote:
TheAmazingYucemu wrote:
It's great seeing the game released in 19 September 2019 being userported from MacOS to Linux while it's really entertainment to watch this TAS, yes vote! When making your TAS, was the game running slowly? (less than 1 FPS)
Not at all actually. Once I managed to make the linux build, the slowest it would run would be about 20 fps, and averaging around 30 fps during gameplay.
👍 Yeah, quite faster than I thought, I wonder what system requirements is for Sayonara Wild Hearts though.
As of 26 January 2023 11:31 AM, i'm pernamently stop using discord
Experienced Forum User
Joined: 10/2/2005
Posts: 3901
What a wonderful game to receive such a labour of love. Great work.
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Experienced Forum User, Player, Senior Publisher (209)
Joined: 5/28/2009
Posts: 1132
Location: Luxembourg
How did you convert the Mac version to Linux? Unless I'm missing something, I can't find any details on either the submission page or the annotations.
Twitter profile - Steam Community page - Cohost profile Oh, I'm just a concerned observer.
Active player, Experienced Forum User, Judge (295)
Joined: 7/8/2021
Posts: 74
I did the same procedure commonly done for Windows games: * grab the executable file from https://unity.com/es/releases/editor/whats-new/2018.4.7 (since that's the version used for Mac 1.01) * Replace Rewired_mac.dll with the rewired_linux.dll files from https://github.com/DemoJameson/Cuphead.macOStoLinux * I think you have to move files to match the windows/linux unty executable structure. Those are mentioned in my general Unity porting guide, available here: https://tasvideos.org/HomePages/ikuyo/Unity#PortingAWindowsOrMacGame
Experienced Forum User, Player (98)
Joined: 1/6/2023
Posts: 107
Great run!
Editor, Experienced Forum User, Experienced player (578)
Joined: 11/8/2010
Posts: 3982
That was beautiful. A work of art. Thanks for making this.
Active player, Experienced Forum User, Judge (295)
Joined: 7/8/2021
Posts: 74
I forgot to mention in the annotations, but since the game would default to 720p on my end, I made the whole movie with that resolution. When attempting to test sync on higher resolutions I discovered the movie would desync on The World We Knew. As such, the movie file can only be properly sync'd at 720p. I'm uploading a new version with this in the annotations.