Commenti
KungFuFurby8 months ago

That's a good goal too, especially when there's no visible level counter. And yes, this is indeed an endless loop. I noticed the world record did only 14 of the 64 races total, so maxing the stats definitely occurs long before the entire race set loops.

discussione: Hong Kong 97
KungFuFurby8 months ago

Hello there! Your current ending point is when the boss is killed: that's fine by me. I just simply did a deeper analysis of this game to see if there was anything else about this game with regards to the regular gameplay. Interestingly... it's a lot more consistent than you would expect.

I used the non-CM version for my pointer references.

  • There is no RNG whatsoever for the enemies (three different movement types), the cars or the powerup spawning orders or timers. I'll break down the lists I found for each one:
  • The enemy ID spawn list at $80AA55 (which has timers and object IDs attached together) loops after 30 enemies.
  • The enemy X coordinate spawn list at $80AA42 loops after 18 enemies.
  • Cars, which spawn in as the 14th and 30th enemies, have their own Y spawning coordinate index. The list, stored at $80AA2E, loops after nine cars, but it's just 3 entries duplicated 3 times.
  • Powerup drop lists, stored at $80AF2F are handled on a per-kill basis, and loop after 40 kills. The invincibility powerup (which renders you invincible for 480 frames, or 8 seconds to NTSC standards) spawns upon the 16th and 31st kills. Death "powerups" are more common, spawning upon the 2nd, 10th, 11th, 17th, 19th, 22nd, 30th, 31st, 37th and 39th kills.
  • The boss spawns after 30 kills and it is the only interruption to the regular gameflow.

The spawn and timer lists effectively reset after 90 enemies (the least common denominator of the three combined), and the only other difference is the powerup drop list, which runs on a per-kill basis and not a per-spawn basis. Divide by 30, and you effectively get three unique cycles. However, because the boss spawns after a set number of kills, you could theoretically go through all 90 enemies, not kill any of them, and loop the entire enemy spawn list that way, so I can't reasonably answer the number of cycles this game has, so to speak. The goal of getting to the boss and killing it sounds like as good of a goal for me in this particular case.

Also, I heard a rumor about the music stopping after some point in the game. That's not caused by the game: it's a combination of the internal song itself being non-looping and a song data fault. I documented the internal music format here (it uses a standard N-SPC engine, though there is a typo in the build that is used concerning a DSP register ID used during echo setup: this is never used, though). The entire song is two notes of 35,712 tempo ticks. A bug in the song data means the second note is silent. The tempo is also set to the slowest value possible. Going off of this, I estimated that it would take five hours and four minutes before it would stop playing.

brkmnly piace questo
KungFuFurby1 year ago

Hello speedrunners! I'm making a thread here in order to make a record about when exactly does Super Off Road wraparound (plus, there's otherwise not much documentation), as I had done some research into this. Some technical details may be involved, and all of these were done on the US version.

First off, the race counter is 7E001Cxx. This counter wraps around after 64 races due to an ANDing operation. There are at least two arrays involved: one of them for the track ID, and a pointer array that handles bales of hay, which act as course hazards.

First, here's the track ID array at $008216: 04 06 02 01 8A 86 82 80 05 01 03 00 84 07 05 8B 87 0A 03 8C 08 02 09 0B 00 0E 0C 86 0D 87 81 88 09 0F 83 0E 04 0A 0B 0F 85 80 08 0D 07 0C 8E 06 08 82 8F 8B 84 81 8D 83 88 8A 85 00 8E 8D 8C 8F

If the value has been ORed by $80, the course is driven in the opposite direction.

I have indicated where all of the tracks by ID and their opposite direction variants debut below:

  • $00 - Blaster (debuts in the twelfth race, opposite direction variant debuts in the eighth race)
  • $01 - Big Dukes (debuts in the fourth race, opposite direction variant debuts in the 31st race)
  • $02 - Sidewinder (debuts in the third race, opposite direction variant debuts in the seventh race)
  • $03 - Cliff Hanger (debuts in the eleventh race, opposite direction variant debuts in the 35th race)
  • $04 - Fandango (debuts in the first race, opposite direction variant debuts in the thirteenth race)
  • $05 - Hurricane Gulch (debuts in the ninth race, opposite direction variant debuts in the 41st race)
  • $06 - Huevos Grande (debuts in the second race, opposite direction variant debuts in the sixth race)
  • $07 - Wipeout (debuts in the fourteenth race, opposite direction variant debuts in the seventeenth race)
  • $08 - Cuttoff Pass (debuts in the 21st race, opposite direction variant debuts in the 32nd race)
  • $09 - Boulder Hill (debuts in the 23rd race, opposite direction variant is never used)
  • $0A - Redoubt-about (debuts in the eighteenth race, opposite direction variant debuts in the fifth race)
  • $0B - Rio Trio (debuts in the 24th race, opposite direction variant debuts in the sixteenth race)
  • $0C - Leapin' Lizards (debuts in the 27th race, opposite direction variant debuts in the twentieth race)
  • $0D - Shortcut (debuts in the 29th race, opposite direction variant debuts in the 55th race)
  • $0E - Pig Bog (debuts in the 26th race, opposite direction variant debuts in the 47th race)
  • $0F - Volcano Valley (debuts in the 34th race, opposite direction variant debuts in the 51st race)

In addition to the above, there are course hazards in the form of bales of hay that sometimes show up. When they show up is also done through the race counter (7E001Cxx). Specifically, they show up on the third, sixth, tenth, twelfth, fifteenth, seventeenth, nineteenth, 24th, 27th, 31st, 33rd, 36th-38th, 40th, 42nd, 44th, 45th, 48th-50th, 52nd, 53rd, 55th-61st, 63rd and 64th races. The bales of hay being present means that it can affect the racing somewhat, and technically these configurations add a variant to each of the courses in addition to driving them in two different directions. The bales of hay to my knowledge are also not randomly generated: instead I found when (and possibly where) these would be generated via a pointer array at $00C984 (if it points to $CA04, no bales of hay would be generated for the course).

The way you'll know when you've wrapped around is when Fandango is the next course you drive on after having driven Volcano Valley in the opposite direction with bales of hay. Volcano Valley itself is driven four times, twice in each direction, and twice with bales of hay.

This longplay video reaches the wraparound point at 1:10:13, if you want to see what I mean:

Currently I've heard that the 34th race (the debut of Volcano Valley) has been a generally used ending point, but I'm providing this research to record what the game does, since I feel there's a more definitive ending here.

Gatorbox, master_of_hilarity e 2 Altri ti piace questo
Info su KungFuFurby
Iscritto
1 year ago
Online
6 months ago
Runs
0