# RG99 has the same layout as RG300 but only 32 MiB RAM set(BUILD_ASSETS_MPQ OFF) set(UNPACKED_MPQS ON) set(UNPACKED_SAVES ON) set(NONET ON) set(USE_SDL1 ON) # Link `libstdc++` dynamically: ~1.3 MiB. # The OPK is mounted as squashfs and the binary is decompressed, while # the system `libstdc++` resides on disk. set(DEVILUTIONX_STATIC_CXX_STDLIB OFF) # -fmerge-all-constants saves ~4 KiB # -fsection-anchors saves ~4 KiB set(_extra_flags "-fmerge-all-constants -fsection-anchors") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_extra_flags}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_extra_flags}") # -Wl,-z-stack-size: the default thread stack size for RG99 is 128 KiB, reduce it. # https://wiki.musl-libc.org/functional-differences-from-glibc.html#Thread-stack-size set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,stack-size=32768") # 128 KiB set(DEVILUTIONX_PALETTE_TRANSPARENCY_BLACK_16_LUT OFF) # Must stream most of the audio due to RAM constraints. set(STREAM_ALL_AUDIO_MIN_FILE_SIZE 4096) # Must use a smaller audio buffer due to RAM constraints. set(DEFAULT_AUDIO_BUFFER_SIZE 768) # Use lower resampling quality for FPS. set(DEFAULT_AUDIO_RESAMPLING_QUALITY 2) # RG-99 hardware scaler can only scale YUV. # The SDL library on RG-99 can convert 8-bit palettized surfaces to YUV automatically. set(SDL1_VIDEO_MODE_BPP 8) set(SDL1_FORCE_SVID_VIDEO_MODE ON) set(SDL1_FORCE_DIRECT_RENDER ON) # Must be an HWSURFACE for the scaler to work. set(SDL1_VIDEO_MODE_FLAGS SDL_HWSURFACE|SDL_FULLSCREEN) # Videos are 320x240, so they fit in video ram double-buffered. set(SDL1_VIDEO_MODE_SVID_FLAGS SDL_HWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF) set(PREFILL_PLAYER_NAME ON) set(HAS_KBCTRL 1) set(DEVILUTIONX_GAMEPAD_TYPE Nintendo) set(KBCTRL_BUTTON_DPAD_LEFT SDLK_LEFT) set(KBCTRL_BUTTON_DPAD_RIGHT SDLK_RIGHT) set(KBCTRL_BUTTON_DPAD_UP SDLK_UP) set(KBCTRL_BUTTON_DPAD_DOWN SDLK_DOWN) set(KBCTRL_BUTTON_B SDLK_LCTRL) set(KBCTRL_BUTTON_A SDLK_LALT) set(KBCTRL_BUTTON_Y SDLK_SPACE) set(KBCTRL_BUTTON_X SDLK_LSHIFT) set(KBCTRL_BUTTON_RIGHTSHOULDER SDLK_BACKSPACE) set(KBCTRL_BUTTON_LEFTSHOULDER SDLK_TAB) set(KBCTRL_BUTTON_START SDLK_RETURN) set(KBCTRL_BUTTON_LEFTSTICK SDLK_END) # Suspend set(KBCTRL_BUTTON_BACK SDLK_ESCAPE) # Select set(KBCTRL_IGNORE_1 SDLK_3) # Backlight