Update: I'm gonna release the original LA with hero mode soon. Originally it was going to be released with this project, but I guess it could be its own thing. So I was doing some testing with it, since I have a bit of free time this weekend, and found an issue that I didn't notice before. Boss heart containers don't save like a normal item would. They act as an enemy sprite, so they always respawn. I looked at the code for it, but couldn't find a solution. (yet)
So for now, I'm gonna leave boss heart containers in, but increase enemy damage from 2x to 4x damage.
After I finish another play through of it, I will release it. (the original LA w/ hero mode)
Edit: Okay I figured it out. At D9D2, the code for the heart container starts. Now the fun part. If you look at the code, there are several opcodes beginning with 21. Now the screen flags in ram start at D800 for the overworld, D900 for Dungeons 1 to 6, and DA00 for Dungeons 7 and 8. No entry for Color Dungeon since it has no heart container. The first one, 21 06 D9, is set so that boss flag($20) at room 06 will let you start with one extra heart container whenever you save and continue the game. What follows are similar opcodes with similar addresses that each represent a boss room. Basically, if you want to make the heart container not respawn, you need to ensure the room with the boss matches the rooms defined in the code. If you are eliminating heart containers altogether, I would just abridge the code to the part where it opens the doors. Also, you might want to look at the heart piece code as well since I believe it works on the same principle.
Edit 2: Okay scratch that, I was looking at things wrong. The only values I see are for 2EDA, which is the room in Eagle's Tower that has the door that opens after beating the boss, and 66 DA which is the same but for Angler's Tunnel. Of course those are exceptions since those values are set specially since those bosses are in side view areas. Also, 5B DB is the ram location of how many hearts you have. Perhaps the easiest solution is to just not let the game add hearts to your counter at all.
It shouldn't be too difficult to find the heart container ASM and change it. When most bosses and minibosses are spawned, a bit is set that locks the player in the playing field. That is why you can hide in shutter doors in a regular room, but are forced in during a boss. It's also why Smasher and Dodongo Snakes allow you to escape before defeating that boss. They don't have the bit set since both have non-shutter exits. Anyway, the heart container unsets this bit, sets the boss flag in the current room, and cues the dungeon clear music. A possible solution could be to find the spot in the heart container spawn and disable it from actually adding a heart container That could be as easy as finding where the start of the data is, finding the part that unsets the boundry bit, and then abridging the code to skip the part where the item is drawn and added into your inventory. The other option, and this might be more tricky, is to find where the boss ASM is and find a common routine that is used for all bosses, and add code in that unsets the boundry and sets the boss flag.
Now that I think of it, I think that is exactly how it works. Either the game checks to see if the boss flag has been checked in the room flag data, or it checks the dungeon clear flags. The reason is because in my hack, I have set memory values for the first boss to be defeated so a door can open, but when I die and continue, I notice I have an extra heart. This means that somewhere in the rom is a list of hearts and heart pieces that check certain room values and give you those hearts based on what is set.