Looks like the RAM address (0x0200002C) gets initialized (to 0x02000140) right after the function that dies gets called. Confirmed that it gets to 0x080427AA on hardware, so it's not initialized properly on hardware yet I don't think, but for some reason it managed to break out of the loop on invalid RAM it gets into (it looks like it's trying to crawl a linked list, but the linked list is all invalid memory).
I've read the blog post you made about this issue, thank you for the wonderful read! 👍
I myself toy with developing a GBA emulator in rust, and this game is booting successfully for me.
I suppose its due to that I'm not implementing the "open bus" behavior at all, I just return 0 for invalid memory region accesses, or mask out invalid address bits if the region is correct.
When I move on to implement open-bus, I will sure take into account the DMA lingering on the bus 😄