> I found the definition for drmarion ROM in src/mame/drivers/vsnes.cpp
> ROM_START( drmario )
> ROM_REGION( 0x20000,"maincpu", 0 ) /* 6502 memory */
> ROM_LOAD( "dm-uiprg", 0x10000, 0x10000, CRC(d5d7eac4)
> SHA1(cd74c3a7a2fc7c25420037ae5f4a25307aff6587) )
> ROM_REGION( 0x8000,"gfx1", 0 ) /* PPU memory */
> ROM_LOAD( "dm-u3chr", 0x0000, 0x8000, CRC(91871aa5)
> SHA1(32a4299ead7b37f49877dc9597653b07a73ddbf3) )
> This indicates the rom "region" that I'm interested in (dm-uiprg) has a length of
> 0x20000. The N2A03 (6502) processor has only 16 bits of address giving it an address
> space of 0x10000 bytes, so how can the region be twice that size?
It's all about the other hardware on the PCB. That's the entire reason you have NES 'mappers' etc. to provide extended mapping through rom windows / banks and such.
The rom region isn't always a 1:1 map of what the CPU can see, if you've got a 16-bit CPU most of the time it is, but for 8-bit CPUs you've usually got a lot of banking going on.
I can't help you with this specific case, but I suspect that's your problem, you're assuming it's a 1:1 mapping, when really there are a bunch of banks and different things visible in memory at different times.