Submission #9320: TiKevin83's GBA Karnaaj Rally in 43:36.06

Game Boy Advance
(Submitted: Karnaaj Rally (USA, Europe).gba USA, Europe)
Bizhawk 2.9.1
156251
59.7275005696058
26398
PowerOn
Submitted by TiKevin83 on 9/27/2024 1:36 AM
Submission Comments
Karnaaj Rally is a 2002 top-down racing game for the GBA developed by Paragon 5/Infinite Dreams Inc and published by Jaleco Entertainment. A port was made for some early phones using "UIQ3" Operating Systems based on Symbian OS, of which little is known. The game is primarily known for its confoundingly weird box art, but was actually well praised by critics generally. The racing physics are rewardingly tight and well suited to showcase the advantages of TAS over RTA gameplay.
This TAS completes the game's 4 seasons of increasingly more complex tracks and faster carts, as well as a bonus race against a mysterious challenger, in 43 minutes 36 seconds. The RTA records do not complete the 4th season for unknown reasons. The record for RTA is 40:23, and the TAS completes these first three seasons in 28:34. Existing longplay footage is nearly an hour longer through all four seasons, but it intentionally plays all races.
To start, this TAS has a complex routing problem from the start that needed to be worked out. Karnaaj has cheat codes in the form of secret names that you can use for your character. I originally wanted to do this TAS to showcase the "Leppa" mode, in which play as your race sponsor Mr Leppa, creating some surreal dialogue scenes where he talks to prehistoric or cyberpunk versions of himself depending on the character portrait chosen and race season. The problem I discovered with this mode is that while the secret Caleppa cart you get in Leppa mode is blazingly fast in the first two seasons, it falls off in season 3 and becomes nearly impossible to use effectively as the opponent racers have much faster carts. A season 1 only TAS would be fastest in Leppa mode, but here we want to get the game's natural credits roll at the challenge race after season 4.
Leppa Talking to Himself when using the Leppa name
Another note is that you can warp to seasons with use of naming LIGA-I, LIGA-II, and LIGA-III respectively for seasons 2/3/4. It's possible therefore that the fastest run to the challenge race and credits roll could skip the first 3 seasons with the LIGA-III name, but I didn't want to use a custom name/cheat code that -only- skips sections of content.
At the start we pick Normal difficulty because the fastest cars are not available in Easy difficulty (which probably makes it harder???). I also picked X for fun, though A would be a couple frames faster because you can press up to get to the end button. We then have another brief speed/entertainment tradeoff to pick one of the more insane character portraits which also allows us to scroll through many of them and see some of the game's wild art style. Here I've dropped the remaining character portraits not seen during this portion of the TAS.
Between races you can upgrade your engine (increases top speed) and tires (increases turn rate), repair damage, and purchase weapon refills. These are mostly unnecessary in TAS except the engine and possibly tire upgrades. I purchased the tire upgrades when available in this TAS, but it will take additional research to see if it is any slower in practice to skip those upgrades. The tire upgrades allow you to turn better before going into a powerslide, but the powerslide is actually quite useful as it lets you turn faster in return for decelerating, so it's very complicated to tell the exact racing lines to take and whether the tire upgrades are needed. I also repair damage once before the challenge fight at the end, but this is also likely unnecessary and could be eliminated in the rewrite. The weapon purchases may also be relevant depending on how much they are needed for finishing place manipulation, but rockets can also be grabbed as random items around the track, so using mines sparingly is probably all that's needed there. You can also buy armor but that appears entirely unneeded in TAS.
Another mechanic that adds to the route complexity is the betting system. Each round before a race you can make a bet of varying difficulty. Bets range from picking the exact placement order, to picking yourself to win, to picking the winner regardless of if it's you, to betting that someone will have to abort early due taking full damage. In at least one race I place a bet to afford an engine upgrade more quickly after the next race, but in a rewrite this could be harder to take advantage of due to prioritizing skipping slower races and the difficulty of aligning a bet that's possible to win with a race skip.
This comes to the biggest gap in my learning throughout the course of the TAS: the 4 way tie season advancement.
Each of the 4 seasons of Karnaaj has 6/8/10/12 races respectively, with 3/4/5/6 unique tracks - each run twice, once forwards and once backwards. At the end of a race the cars are placed 1st/2nd/3rd/4th for 3/2/1/0 season points respectively. For anyone behind the player at the time they cross the finish line, there is a bug that places them in order of how close to the finish line they are within their -current lap-, not accounting for who has the most laps completed, the discovery of which made it easier to manipulate the place finishings. At the end of each season you advance to the next season if you are the points leader or are tied with the points leader.
This mechanic means that if you perfectly manipulate car places, you can immediately abort a race to advance to the next one, then win in the opposite order and end up at 3/3/3/3 across the field repeatedly until 9/9/9/9, 12/12/12/12, 15/15/15/15, and 18/18/18/18 points. Doing it in the other order is more complicated to work out to even placements, because the finishing places in aborted races always end up as the order in which the -previous- race was placed, with you moved to the bottom. This gives the game a natural catch-up mechanic fighting against keeping the points even, but which can be ignored by either starting the pattern on aborting the first race, or by doing win->abort->win with other cars placed in the reverse order->abort. I managed this for the 4th season, but a rewrite could in theory abort 3 additional races by being that precise for the first 3 seasons as well. It becomes easier to manipulate opponent car placements in later seasons as it becomes easier to lap opponents and then shoot some of them with rockets, or shoot them at crossroads to help reorder the cars.

Race splits breakdown

The game displays a time of 1 minute and 30.63 seconds as 1:30:63 for some reason
Season 1 (Prehistoric Theme)
Race NameTAS TimeNotes
Circle of Raptors1:30:63
Jurassic Path1:33:61at frame 9782 we run over a lizard for a speed/entertainment tradeoff. These environment mobs (later birds and then -people- in season 4!!) explode in a pile of blood when run over, which especially for the people later seems very not in line with the game's E for everyone rating!
Jurassic Path 2quit
Circle of Raptors1:22:34faster from having a much upgraded car by this point
Jurassic Path1:29:61
Jurassic Path 2quit
Season 2 (Prohibition Theme?)
Race NameTAS TimeNotes
Ancient Site2:04:15
White Fields2:03:23The snow tracks seem to have some sort of ground modifier that makes you powerslide more quickly, so many of these races are quit across the TAS because the powersliding actually slows things down. In Season 2 Bridges Jones is so long that it's worth doing White Fields instead.
Dust & Tears1:59:84
Bridges Jonesquitunfortunately we don't get to see "Bridges Jones" at all due to it being a much slower track, it has a section near the start or end depending on direction where the course splits into two wooden plank bridges.
Ancient Site1:54:71This race has a great ending due to a mine being placed near the finish line. You don't lose control of your car after the finish line so you can spin some donuts while the race fades out, but in this case the mine placement makes the spin much faster!
White Fields1:59:24
Dust & Tearsquit
Bridges Jonesquit
Season 3 (Modern Theme)
Race NameTAS TimeNotes
Karnaaj 1001:25.94
Karnaaj 2001:45:51
Frozen Lakequit
Karnaaj 500quit
Karnaaj 7001:31:53This race has a crazy ending involving rockets and ramming the green car to ensure it places last. We have to delay passing the finish line until it's both across the line itself and behind the blue car, as if it were on the previous lap the bug would happen making the game think it's the furthest ahead
Karnaaj 100quitwe skip this race right now to quickly win a bet, but this is probably worth eliminating in a rewrite because of the larger value of skipping Karnaaj 500 and 200.
Karnaaj 2001:38:94This race has a great moment on lap 4 where we shoot the green car with a rocket from across a parallel track to manipulate opponent placement
Frozen Lakequit
Karnaaj 5001:44:42
Karnaaj 7001:26:72
Season 4 (Cyberpunk theme)
Race NameTAS TimeNotes
Airportquit
Cold Winterquit
Urban Streets1:45:35we quit the first two tracks immediately this season to make our money to upgrade our engine off the faster races at Urban Streets and Karnaaj City
Karnaaj City1:03:00
Mad Curvyquit
8th Element1:55:02
Airport1:56:60
Cold Winterquit
Urban Streetsquit
Karnaaj City1:02:01
Mad Curvyquit
8th Element1:48:41This has a noscope rocket shot on the last lap which helps us ensure we get the full 4 way placement tie which the game regards as winning the season, advancing us to the bonus race!
Secret Challenge Race (Named Lunar Spacestation in Quick Race mode): 3:31:62
Then the credits roll! Beating the game like this unlocks a further 3 tracks that are not seen otherwise during any of the season play: Karnaaj 1000, Arena 1, and Arena 2.

Race Mechanics

Once you get into the races, several gameplay mechanics make for some extraordinarily complex TAS routing. You have 4 mines you can lay behind your cart and 8 rockets, both of which you can restock between races, but you can also restock rockets from random drops (which can also be boost refills, repairs, or money). The game seems to have issues that make wall riding advantageous, because you don't decelerate from hitting objects side-on, so there are several points in the TAS that look sloppy because it is ultimately faster to slam into a wall, and likely many places where that technique should be explored further. Generally this is helpful where a turn is too tight and would need a powerslide which would otherwise decelerate you. This is most visible in a couple of the ends of races where the finishing time is more tightly manipulated. Boost seems to help you accelerate faster, which also means that the usage of turbo boost with the B button is likely best placed out of the end of turns.

Other notes

The game has some sort of checkpoint system preventing major in-race shortcuts, however it has never been explored thoroughly and there are likely still exploitable areas. Some of the tracks showcase minor skips such as shortcutting corners in Season 2 Ancient Site and skipping around both sides of a slalom through craters on the final challenge race, but even in the 2nd case none of these seem consistently repeatable without getting a "go back" warning.
Karnaaj also has a similar weird button mashing effect to what I've observed previously in Pokémon TASing. There are points (specifically the end of races fading out before going to the time/placement overviews) where mashing can make the fadeout come a frame earlier, but no more than just that one frame. This makes me suspect some kind of frame rule going on, but the races themselves seem to fully utilize the GB framerate.
Overall I'm very excited about this TAS. Having gone through the first half of it 3 times now trying various difficulties and game modes to find the fastest path, I'm ready to show a first submission that includes the 4 way tie optimization in at least one of the seasons and leave open the possibility for it to be optimized with that across the previous seasons and/or to remove the speed/entertainment tradeoffs for a true any% optimized time.
Last Edited by TiKevin83 1 hour ago
Page History Latest diff List referrers