I didn't take the approach of forcing limits. I do limit the number of sprites to 128 and limit the size combinations, and tiles are limited to 16x16 or 32x32 and 1024 tiles. There is no limit on colors and no palettes. I also provide a Neo Geo style fix layer, rather support 8x8 backgrounds.
The interface is high level, exposing interfaces with names similar to the SNES components (HDMA, DMA, Obj, etc.) This is similar to libNDS, but uses C++ classes, rather than C functions.
With mode 7, I'm thinking of implementing the more common uses, such as rotating backgrounds and the perspective transformed mode, rather than tying HDMA to the layer.
The idea was to take the concepts that shaped SNES development, but leave behind the major sources of frustrations.