Well, more or less what was written about here is what I experienced. Ie. I tested with an Everdrive and concluded that the MMC1 version would not work on real hardware. Anyway. I should be able to do a quick test soon using an AX5904 repro board. Found a 256kbit SRAM salvaged from a SNES game. If it doesn't work with the pirate chip I'll look for a real MMC1 donor board.
October 03, 2021, 09:46:19 am - (Auto Merged - Double Posts are not allowed before 7 days.)
First follow up:
The missing graphics etc. are working on real hardware using 256kbit SRAM, a clone MMC1 in a variant of the SNROM configuration.
I did a bunch of quick runs. There's always glitching on startup before the welcome screen animation starts, a crash upon exiting the first cave happened once, and saving doesn't always work. But this might be because of the wiring and/or socketed chips on the repro test board not making solid connections.
Anyway. The graphics glitching I experienced with the MMC1 v2.0 patch on an EverDrive were not present. I'll be testing more.
That's really good news tbh.
This means that actually the hack does work in real hardware through a proper MMC1 board, just like Fiskbit mentions below, and that the issue many have been experiencing has to do with the Everdrive not handling 8+kB of CHR-RAM for games with iNES 2.0 headers.
This seems like a note-worthy issue report for the Everdrive developers, if anyone can redirect this issue to them, hopefully they can fix it with an update (if the flashcart can be updated that is).
Best of luck with checking the wiring, hopefully it's only just a fluke or something small that's causing the other issues you have experienced.
Just to clarify, Everdrive is not real hardware; it emulates cartridge hardware (mappers, boards) just as an emulator does. The MMC1 version of the hack is relying on an unusual cartridge configuration, and emulators that don't supply the resources requested by the NES 2.0 header (32 KB of CHR-RAM, in this case) will cause the animation to break.
I've sent ShadowOne an updated version of the animation code that tests whether at least 32 KB of CHR-RAM is available. If not, it disables animation, allowing the game to still be playable.
Thank you for your insight on the issue. It's really appreciated.
I'll work on the updated version you sent me and will let you know if something comes up

EDIT:
I forgot to mention, I started doing some debugging work on the Hearts number being saved on SRAM (so you don't always start with 3 hearts, but rather the game saves the amount you last had and starts you with those, and if <3, then it defaults to 3 hearts).
While I still don't have anything set in code, I did get some routines that seem to be related to reading and writing the Hearts to the save file. Take into consideration that this is merely documentation on routines that are already in the game, there's no new code in this.
This is what I have at the moment in terms of documentation for it:
//***********************************************************
// Save hearts to SRAM
//***********************************************************
// RAM $066F is the amount of hearts obtained and filled
// Hearts are separated in nibbles:
// 1st: 1111 -> F = 16 hearts / Max amount of hearts (0 = 1 heart)
// 2nd: 1111 -> F = Fill all 16 hearts (0 = 1 heart filled)
// Address $6032 is where the game stores the current amount of hearts obtained in SRAM for Slot 1
// $6032 - Slot 1
// $605A - Slot 2
// $6082 - Slot 3
// FREE RANGES:
// Bank 2: 8F6F-900F, 9BE7-9D0F, A840-A86F, A8EA-A90F
// Bank 5: 145DA-1460F, 153EC-1540F, 15BE8-15F0F (OW columns, ruppe code begin at 15F10 and ends at 15FAC), 16CB0-16D0F
bank 2;
// Routine in charge of loading the hearts at File start
org $A606 // 0x0A616
lda.b ($00),y // Loads hearts value from SRAM ($6032-5A-82)
sta.w $0657,y // Stores table from SRAM (gets to $066F)
dey
// ???
org $A6C6 // 0x0A6D6
lda.w $0657,y // Grabs the value from $066F, RAM Location
sta.b ($C0),y // Stores it from $68B0?, SRAM Location
// ???
org $A6F3 // 0x0A703
lda.w $066F // Load RAM $066F (Hearts)
and.b #$F0 // Compare to value #$F0
pha // Push to stack
lsr // Left shift
lsr
lsr
lsr
sta.b $0A // Stores in RAM $0A
pla
ora.b $0A // Or $0A
sta.w $066F // Store in RAM $066F (Hearts)
lda.b #$FF // Load value #$FF
sta.w $0670 // Store $FF in "Partial hearts" address
// ???
org $A819 // 0x0A829
org $A827 // 0x0A837
lda.w $066F,y // Load table from RAM $066F
sta.b ($C0),y // Stores it from $0650?, SRAM Location
bank 5;
// Routine in charge of saving hearts on manual save or game over
org $8B6D // 0x14B7D
lda.w $066F // Load Hearts address
and.b $F0 // Compare with #$F0
ora.b #$02 // Set default value to #$02?
sta.w $066F // Store in address $066F (Hearts)
lda.b #$FF // Load value #$FF
sta.w $0670 // Store $FF in "Partial hearts" address
// Jump to $EBA3 (close routine?)