Each Super Mario Kart track has "?" squares (item squares) which gives you an item when you drive over them.
The item they give you depends almost entirely on what time is displayed on the game clock (in the top right corner) when you hit the item square.
The game only detects that you've gone over an item square every other frame (and the clock time changes every other frame too).
The probability of getting each item
, but just because an item may have a one in sixteen chance of occurring doesn't mean it will occur once every 32 frames (16 * 2), it may not appear for a whole second or so, or it may appear twice in a row.
Sometimes, pressing different keys or taking a different route for a while before hitting an item square changes what items will appear at what time. The reasons for this are unknown, and probably won't be until someone reverse engineers the Super Mario Kart ROM.
Until then, getting the item you want can usually be achieved by using the Super Mario Kart Luck Manipulation Bot.
The Luck Manipulation Bot
The luck manipulation bot is a modified copy of snes9x that finds the next time a certain item will occur. You can then aim to hit an item square on that frame.
It is possible to find these times by hand by driving over item squares a frame at a time and then repeating, aiming to hit the square two frames later, but this approach may take many hours just to find a single item.
The luck manipulation bot is used like this:
- Drive up to an item square a frame at a time in snes9x.
- When you get about 10 frames or so away, save.
- Drive onto the item square and press 'p' when you are on it
- Reload so you're back about 10 frames before the item square
- Press 'i' to find a mushroom or 'k' to find a feather
When you press 'p' the luck-bot saves the (X,Y) co-ordinates of where your kart is.
When you press 'i' or 'k' the luck-bot saves the game (to an internal save slot), then overwrites your kart's position in RAM to "teleport" to the item square. If it got the item you want, it stops there and prints that it has found it. If it didn't get the item you want it reloads back, waits two frames (on the spot by teleporting to it's position, in order to hold itself still even if you were moving at speed) then tries again, etc.
In other words it teleports backwards and forwards to the item square until it finds what you want.
Unfortunately the code for the luck-bot was hacked into the Linux user interface part of snes9x, and so the bot cannot be ported to Windows without a complete rewrite.
In future I suggest using an external scripting system such as Lua
(used to script many game engines, eg World of Warcraft) to write game-bots. This would be considerably easier, and more portable. Snes9x can already be scripted with Lua.
If you want a copy of the luck bot, send a private message to Huffers on the forums
] I think the probabilities shown on this link are very optimistic.
I quite often find there won't be a feather for around two seconds (the probability of this happening is about 0.017 according to this data, and it happens to me a lot. It is possible that the game changes the probabilities based on how far ahead you are.