a ver, te voy a responder mas o menos, por que el PVSNeslib me lo miré hace un par de años, pero yo si que he usado bastante la paginación en Master System, y me suena que es mas o menos lo mismo.
En master system, solo puedes direccionar un total de 48 kb de memoria ROM. Para evitar eso, usas el sega mapper. La grácia está en que normalmente no modificas el banco donde está el código en ejecución, sino que lo que haces es guardar en los bancos los datos pesados (gráficos, música, etc) que puedes controlar más fácilmente cuando son necesarios.
En el caso del devkitSMS de master, lo único que tienes que hacer a la hora de generar el binario de los recursos gráficos, es asignarles un banco tal que así a la hora de compilar:
echo Build graphics11.c
sdcc -c -mz80 --constseg BANK2 graphics11.c
.
.
.
sdcc -c -mz80 --constseg BANK7 graphics52.c
sdcc -o output.ihx -mz80 --no-std-crt0 --data-loc 0xC000 -Wl-b_BANK2=0x8000 -Wl-b_BANK3=0x8000 -Wl-b_BANK4=0x8000 -Wl-b_BANK5=0x8000 -Wl-b_BANK6=0x8000 -Wl-b_BANK7=0x8000 crt0_sms.rel main.rel SMSlib.lib .\PSGlib.rel .\data.rel .\graphics11.rel ... ... ... ... .\graphics52.c
Una vez ya en el código del programa, puedes switchear los bancos así:
SMS_mapROMBank(6);
que coloca el banco número 6 en el slot 2, y en ese momento puedes acceder a los datos allí definidos.
En PVSnesLib era algo por el estilo, mas o menos.