In a comment to my video on the generated MoG map (https://youtu.be/QatXloCTusE), NLeseul asked about item drops.
I hadn't looked at those yet, but I have now. I've documented them in the github repository where all the code for the project is. Here's a copy of the top of that file (the file also includes some tables for convenience).
Drop type is defined by enemy type. Each type is linked to two properties:
Table starting at 547c@4: when-type; defines when to drop something. Range 0-4.
Table starting at 64e6@4: damage: defines vitality points lost when hit by enemy
The what-type (what is dropped when it is killed) is computed from the damage:
damage 0-2: what-type = 0
damage 3-5: what-type = 1
damage 6-8: what-type = 2
damage >=9: what-type = 3
Drops happen for (at most) 2 enemies of each type per screen, so a total of 4 dropped items. If there are more than two enemy types on screen (not sure if that ever happens), only the first two types that are killed will drop items. Of those types, specific enemies will drop:
when-type 0: Enemies 1 and 3. (So the first enemy killed drops an item, the second doesn't, the third does, and none after that do.)
when-type 1: Enemies 2 and 5
when-type 2: Enemies 4 and 6
when-type 3: Only the last enemy of this type on screen
when-type 4: Those enemies never drop an item
what-type 0: 1 coin (8/16), 10 arrows (2/16), 1 key (1/16), nothing (5/16)
what-type 1: 4 coins (9/16), 20 arrows (2/16), 1 key (1/16), nothing (4/16)
what-type 2: 7 coins (10/16), 30 arrows (3/16), 2 keys (2/16), nothing (1/16)
what-type 3: 10 coins (10/16), 40 arrows (3/16), 2 keys (2/16), nothing (1/16)