pceas needs some tweaks before proper SGX software can be written though, since it limits everything to 8k and the SGX has 32k to work with.
Yeah, it limits which banks .BSS and .ZP define in. ZP get's this funky bank name of $F0 in the symbol file, but it's still $F8 like BSS. Even CD projects don't allow you to change .BSS or .ZP either. I'm not sure if BSS crosses an 8k page though, it might since it's just an address counter/incrementor. So if you wanted 16k of static mapped .BSS space, then not too big of a deal.
BSS allows you to modularize your code, so you can define ram/variables inside an external lib or function(s) without worrying about ram label address conflictions with main or other external/internal code ... and/or having to manually do it - keep track of it yourself (which I've seen other people do on other systems, what a pain in the ass and convoluted method).
With SGX and CD ram, you have to do just that. Manually keep track of variables addresses banks other than $F8. Though, I've heard the RS directive might be usable for that sort of thing (haven't used it).
Note: Mednafen now requires you to change SGX roms from .pce to .sgx extension to run them. Thought there is a way for force SGX mode on at all times in the config file (in case you come across some SGX CD demo). Magic Engine now allows enabling of SGX support for any rom, but it lacks hardware emulation modes of the SGX (AFAIK, it still has hacks for it's real SGX game emulation).