The way it handles CNROM and the way I plan for it to handle BNROM are completely separate. Donkey Kong Classics is a well-known CNROM multicart. I've made a few CNROM multicarts specifically for this collection: MineShaft + Zap Ruder, Thwaite + Lawn Mower, and LJ65 + Concentration Room + Russian Roulette. These are added with one PRG bank and multiple CHR banks, and each game's entry in roms.cfg specifies which of the ROM's CHR banks to decompress into CHR RAM before the game starts running.
The solution I envision is for games that span multiple PRG banks. It would need zero special support from the mapper beyond existing support for oversize BNROM, unless we were to somehow add mirroring control to this mapper or move the PRG bank register down to $6000. A game would be made for mapper 34 and vertical mirroring, and it would switch PRG banks through a bank table like that seen in the listings
here. The ROM builder would patch the bank table to change what PRG bank numbers get read and written.
In case the wiki page gets moved or something, here's the code:
Code:
.segment "BANKTABLE"
banktable:
; assuming a game as big as Deadly Towers
.byte $00, $01, $02, $03
.segment "ZEROPAGE"
current_bank: .res 1
.segment "RAMCODE"
bankswitch:
lda banktable, y ;read a byte from the banktable
sta banktable, y ;and write it back, switching banks
sty current_bank ;store the current bank in RAM
rts
The ROM builder might patch this to
Code:
banktable:
.byte $07, $08, $09, $0A
And because the same byte gets read and written back, we relocate the program and avoid bus conflicts.