Ok so I've been using save states to farm Amazee Dayzees and try and get an ultra shrooms. I've learned a bit about how the RNG in the game works just from grinding out those stupid flowers. I'll be updating this as I find out more. Most of these aren't really speedrun related, especially since I'm emulating using a nightly build of Project64, but I'm hoping this thread turns into a general discussion for the RNG in this game.
Apparently, item drop RNG is called at the end of the battle in this game. That means that if you're emulating, you can save state in the middle of the battle if you're grinding out for an item instead of beforehand, which makes a very RNG-dependant fight like Amazee Dayzees a lot less stressful.
Items are pulled from a table with certain weights attached to each item. There's a global RNG chance which determines if there will be a drop at all. Take, for example, a Koopa Troopa. The global RNG is 5, which means there's a 5/100 or 5% chance of you receiving a drop after the battle (technically, it's 5/101 due to how the game calls RNG, but that doesn't really seem to matter all that much). Then, if the enemy drops more than one item, each item will have a weight attached to it. In the Koopa's case, the Mushroom has a weight of 3 and a Koopa Leaf has a weight of 7. This means that when the battle ends with a Koopa Troopa, the game calls the rand(N) function. Of all the values the game can function can give, only 5% of them result in an item drop. Then, iirc the game calls rand(N) again. 30% of the possible values result in a mushroom being dropped, while 70% of the values result in a Koopa Leaf. This means that if you win a fight against a Koopa Troopa, you have a 1.5% chance of receiving a Mushroom or a 3.5% chance of receiving a Koopa Leaf.
Hope this helps, I will update with more to come when I find out more.