There's a really short version at the bottom of the post.
In mapper 2/UNROM/UOROM, write a byte to $8000-$FFFF to bank swap.
In mapper 30, write a byte to $8000-$FFFF to bank swap.
Three main differences.
The byte written's format is slightly different. In Mapper 30, the highest bit is a mirroring select, the next two bits control which CHR bank. On mapper 2, the highest four bits are... "implementation defined." On both, the lowest bits are which PRG bank, but Mapper 30 gets one more bit for it that's not "implementation defined".
UNROM/UOROM is subject to bus conflicts, NES Maker's mapper 30 is not. (Since I believe it to be the self flashable board.) What this means is the bank you write is not necessarily the bank you get on UNROM/UOROM. You have to write to a place with the same value in ROM as the bank you want to switch to guarantee that's what you'll get. NES Maker ROMs do not do this (although it's not hard to do so and there is commented out code to make that change).
Most important: The largest size for mapper 2 (as far as actual produced, licensed carts) is 256KB to my knowledge. Any NES Maker game (including mapper 2 Troll Burner, I was surprised to find) is 512KB.
The size/bus conflict parts mean that any emulator/hardware that rejects any NES Maker game with a swapped header totally has a valid reason for doing so. I would not discount things that do not run them as inaccurate by that test, only less permissive than things that do. Permissiveness is the opposite of accuracy. For FCEUX in particular, bus conflicts may be one reason for the failure of header edited NES Maker ROMs working. And it's a valid reason! Commercial flashcarts (Powerpak/Everdrive) run on real hardware, but still value permissiveness to the extent that it's possible. It can help someone play ROM hacks that were never tested (and wouldn't work) on real boards which is a win for the person buying the product, but a purposeful choice against accuracy.
Mapper 30 is similar to Mapper 2 by design. NES Maker's current biggest problem changing to mapper 2 is that all its ROMs are larger than the defined specification which technically leaves how to handle parts of them up to the whims of the emulator/implementation author.
Ignoring the size issue, NES Maker ROMs could be made Mapper 2 by adding 32 bytes, and changing a few lines of code. At least, that's what it looks like.
This code may void your warranty:
Code:
bankswitchY:
STY currentBank
bankswitchNoSave:
lda currentBank
and #%00011111
tay
STA banktable,y
RTS
banktable:
.db $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $0C, $0D, $0E, $0F
.db $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1F
In GameEngineData/Routines/System/BankSwitch.asm.
Edit: Fixed an error! I can confirm this makes a basic test work on FCEUX when it didn't before so the problem was probably indeed bus conflicts. "work" is different than "stable"! if NES Maker tries to bankswitch anywhere that isn't this code, that's a problem. And if anything calls bankswitchNoSave expecting Y not to change, that's also a problem... edit3: You can back up Y to the stack, but that makes bank switching a bit slower...
For puNES, the problem seems to be size. Not even Troll Burner (mapper 2) runs. But Troll Burner (Mapper 30) does.
I didn't check Nintendulator. In the versions I have around, the ROMs work regardless of bus conflicts.
Edit2: Changed one more thing. It wasn't quite... an error, but it's more consistent with how the original version of the routine works in case things expect that.
Edit: tl;dr: NES Maker ROMs are technically too big for "standardized" mapper 2, but most things value user experience over accuracy so this doesn't necessarily matter. puNES seems to be the only emulator that cares about size. (But caring about size IS valid, this doesn't make puNES "wrong".)
As for the mappers DLN-003 first mentioned... let's just say it'd be a much larger change.