First of all, how did you access the original code that you analysed/translated? Super interested in how you were able to look into the actual mechanics, as I've been basing all of my clones off of fell haha.
FCEUX
My issue with the hammers isn't the instance slots; I'm okay with pre-allocated instance slots since most of the games I've studied do that. Typically the player and his attacks have specific slots set aside (hence why you're allowed 3 bullets in Mega Man games or three axes in Castlevania if you get all the powerups). The enemies typically all share the same slots as their projectiles. Sometimes the coders will allot more slots for bullets in the case of a shooters, but typically if there are too many enemies on the screen or too many bullets on the screen, no new bullets will be created.
My issue with the hammers is that it checks two "slots" so to speak. There are 9 slots available strictly for hammers (maybe Bowser's fire used them too, I didn't check). The Hammer Bro picks one of the 9 slots at random and if it's occupied, he won't throw a hammer. Why add this check in, though, when the game then checks if the actual instance slot for the hammer (slot 4, 5 or 6) is free? The only reason I can think of, as I said earlier, is that maybe they were trying to work in some mechanic with 2-3 Hammer Bros on the screen at a time. If Hammer Bro 1 picks slot 2 and throws a hammer and Hammer Bro 2 also picks slot 2, he won't be able to throw his hammer. But let's say Hammer Bro 1 picks slot 1 and throws his hammer and Hammer Bro 2 picks slot 2... He still can't throw his hammer because hammers 1 and 2 are both spawned in instance slot 0. So what's the point in those 9 slots unless it's to cripple 2 or more Hammer Bros in some convoluted way?