First what is bytecode? Basically it's a mini scripting language you program to make your game easier to design and change. It's a good idea to use something like this, rather than hardcoding everything when designing a game.
Anyway after some hours figuring out lots of RAM addresses inside the game, most importantly the function pointers which run the enemy AI, I was led to the one which runs the final boss. In the future if anyone ever needs to know, it starts here at 072410

There's basically 7 numbers in the script here to be concerned with when trying to learn about how Mambo spawns, and forgive this shitty math
0138 - This means "Roll a random number between 0 and 65535, and change behavior if it's less than"
0007259E - This is the location of Tenuki's (ghost boss) behavior
5555 - In decimal this is 21845, or one third of 65535
0007242C - This is the location of Lar's (eye boss) behavior
FCFC - In decimal this is 64764, or eighty-four eighty-fifths of 65535
0132 - Just change behavior without rolling a number
00072710 - It's Mambo's behavior!
So in English the script becomes this: First of all, you have a 33% chance of getting Tenuki immediately. If not, check for Lar and Mambo. When checking for Lar and Mambo, you have a 1.17% chance of getting mambo, and doesn't look like it can be manipulated in any meaningful way.

TL;DR the chances are as bad as they always seemed, requiring first a win at 66% and then another at 1.17%
Also, here's a dumb image of when I replaced the first boss's function pointer with mambo's. He's ascended to godhood.

I hope someone found that interesting. I want to try routing for score on this game. Information of sw2 seems scarce, even on 2ch, and there's barely 5 videos of it on niconico video. All I could find was a scant few japanese posts from 2007ish discussing the second loop a little bit. To think the WR for this is 20 years old and still standing strong... did HKR get the godly double-Mambo spawn?
-- EDIT --
I also checked the level ordering code today. TL;DR: There's probably no way to affect that either...
In the part of program ROM around 2B7C0, there are several lists of fixed level orders

You can see there the stuff like 0001 (japan) 0004 (usa) 0003, 0002, 0005, up to 000A (space). These are the level numbers in lists. When you push start you get 1 of these 6 lists immediately. Since they're fixed in ROM, I highly doubt there's any other secret way of choosing what level you get. Also, the pointer to your current level list gets saved in RAM address 10E50C.