That'd be great if you could do that. Here's a summary of interesting addresses I've found so far:
0057 current movement direction 1-8 (0= not moving)
00A2 frames you have been taking damage (0=not taking damage, 1-1F is taking damage) (this is actually useful since the taking damage animation isn't visible until 1 frame after you've been hit)
00A3 direction while taking damage 1-8
00BC is X position. (2 bytes)
00BE is Y position. (2 bytes)
009A is life
009B is ludder (ie gold)
0321-... enemy x hp from 0x520 matches with 0x321 (so you can figure out the offset)
(note: I am not sure where the high byte is for the enemies' x position.)
0361-... enemy y hp from 0x520 matches with 0x361 (so you can figure out the offset)
04A0 is knife on screen
04A4 frames knife has been on screen
04A6 current direction you're facing
0520-053F is a bad guy's hp, 1 byte each
0541-... what's been dropped by a dead enemy 0=nothing, 1=1ludder, 3=heart, 5=5ludder
0x520 matches 0x541 (so a 0x21 offset from hp)
070B is knife x position on screen
0708 is knife y position on screen (F0 = no knife)
Edit: I think I figured out what's going on at 0569. It keeps track of the fractional pixels you've moved when going diagonally. Or, simply, it keeps track of whether you'll advance a pixel the next frame you move diagonally.
Sadly it looks like randomness is the combination of many variables, and it might even be different among enemy types. I suppose knowing these addresses are enough to write a bot, though :)
Anyway, knowing your x and y, gold, and enemies' hp would all be useful. Movement is a little quirky sometimes, so being able to watch your x and y could shave a few frames here and there (and who knows, maybe there are wobbling tricks a la LoZ:LttP that are waiting to be discovered...) Gold is useful because I always have to hit Select to see how much I picked up, and enemy hp is useful so I don't have to guess how many more knives I have to use.