The way this generally works, there is a number that corresponds to each type of enemy, and it is used as an index into an array. The contents of the array at that index will indicate what power will be granted. I'm not certain that's how this game is set up, but that's the general approach. A variant I've seen in one of the Batman games is to index the enemy attributes by what sequence they appear, not by what type they are, but that seems contrary to how Kirby works.
As Fast6191 suggested, if you set a write breakpoint on the register containing Kirby's power, you will see what is being written into it. If you do a trace to that breakpoint (or, less reliably, scroll up in the symbolic debugger), you will see how the value being written is chosen. In general, it will either be a lookup (offset from a memory location) or some conditional logic (if enemy # is A, power is B). Of course, you will need to build the list of values for powers and the values for each enemy type, and then you can describe the relationship between them numerically, which is what your program will ultimately do.