I think it would be a great idea. Although I believe it would involve more than just changing the segment from B000 to B800 to be compatible with the CGA. I’m pretty sure Magic Duck uses a 40X50 text mode to avoid video snow so the pixel layout would be different between MDA and CGA. Still minor enough problem to solve and support both adapters
I really don't care about snow removal, and specifically am going 80x25 and using top/bottom halves so I can have regular text on the screen too. When you can get 80x50 out of the 80x25 mode (and 160x25 at the same time just not in the same character) the 40x25 is far less useful, snow be damned.
Besides if the gameplay area is limited to 50x50, you only need to blit 1250 bytes (50x24) from the backbuffer, a much more manageable amount. More so if you only change what actually needs to change, (buffer to buffer compare and enque?) when anything over 15fps is a waste of processing time at such a low resolution. Might even be able to get away with 10fps.
Which would be convenient as it divides evenly into both CGA 60hz and MDA 50hz.
Could even update scores/stats/text outside the playfield and the playfield itself on separate refreshes. This is where running your own co-op time slicing pays off.
Was thinking if this flies I might port several different ZX-81 games over in addition to what I'm currently doing.
I'm also surprised none of the Apple ][ "lores" games (admittedly there are few) have PC/CGA ports. 80x50 16 colour as the tweaked 40 column mode, or with text (and snow) as 80 column mode is entirely possible. Sure the palette doesn't match, but still...
Wasn't there at one point a lib of assembly routines to mimic Apple ][ lores in GW-BASIC / BASICA? I think I remember that back in the BBS days, but my Google-Fu is failing me.