Mupen64 Save State Crash

Hello. I am getting crashes when I use save states. This only happens in Mupen64Plus-Next GLES3 or GLES2, though it doesn’t happen every single time. Additionally, minimizing the application or turning off the screen also results in crashes. This happens with every N64 game I try, though the log is for The Legend of Zelda: Majora’s Mask. Any ideas on a fix?

Tablet: Lenovo Tab P11 Pro (2nd Gen)

CPU: MediaTek Kompanio 1300T

GPU: Mali-G77 MC9

OS: Android 12

Retroarch Version: 1.15.0

Core: Mupen64Plus-Next GLES3

Core Version: 2.5-Vulkan 4353b0a

Using old --libretro behavior. Setting libretro_directory to “/data/user/0/com.retroarch/cores/” instead.

RetroArch 1.15.0 (Git 4d2a7f4)

=== Build =======================================

Capabilities: ASIMD

[INFO] Version: 1.15.0

[INFO] Git: 4d2a7f4

[INFO] Built: Apr 23 2023

[INFO] =================================================

[Input]: Found input driver: “android”.

Environ: SET_PIXEL_FORMAT: RGB565.

[Core]: Version of libretro API: 1, Compiled against API: 1

[Audio]: Set audio input rate to: 48000.00 Hz.

[Video]: Set video size to: 960x720.

[Vulkan]: Vulkan dynamic library loaded.

[Vulkan]: Found vulkan context: “vk_android”.

[Vulkan]: Detecting screen resolution: 0x0.

[Vulkan]: Setting swap interval: 1.

[Vulkan]: Created Android surface: 519206584928

[Vulkan]: Found GPU at index 0: “Mali-G77 MC9”.

[Vulkan]: Using GPU index 0.

[Vulkan]: Using semaphores for WSI acquire.

[Vulkan]: Using GPU: “Mali-G77 MC9”.

[Vulkan]: Queue family 0 supports 2 sub-queues.

[Vulkan]: Got 4 swapchain images.

[Android]: Native window size: 1536 x 2560.

[Vulkan]: Using resolution 1536x2560.

[Vulkan]: Using RGB565 format.

[Vulkan]: Loading stock shader.

[Joypad]: Found joypad driver: “android”.

[Video]: Found display server: “android”.

[OpenSL]: Requested audio latency: 128 ms.

[OpenSL]: Setting audio latency: Block size = 4096, Blocks = 6, Total = 24576 …

[Display]: Found display driver: “vulkan”.

[Playlist]: Loading history file: “/storage/emulated/0/Android/data/com.retroarch/files/content_history.lpl”.

[Playlist]: Loading history file: “/storage/emulated/0/Android/data/com.retroarch/files/content_music_history.lpl”.

[Playlist]: Loading history file: “/storage/emulated/0/Android/data/com.retroarch/files/content_image_history.lpl”.

[Playlist]: Loading favorites file: “/storage/emulated/0/Android/data/com.retroarch/files/content_favorites.lpl”.

[Android]: Native window size: 1536 x 2560.

Subsystem ID: 0

Special game type: N64 Disk Drive

Ident: ndd

ID: 1

Content:

Disk (required)

Cartridge (required)

Subsystem ID: 1

Special game type: N64 Transferpak

Ident: gb

ID: 2

Content:

Gameboy RAM (required)

Gameboy ROM (required)

Cartridge (required)

Subsystems: 2

[Core]: Using content: “/storage/emulated/0/Games/ZeldaMajora’sMask.NZSE.n64”.

[Core]: Content ran for a total of: 00 hours, 00 minutes, 00 seconds.

[Core]: Unloading core…

[Core]: Unloading core symbols…

[Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.

RetroArch 1.15.0 (Git 4d2a7f4)

=== Build =======================================

Capabilities: ASIMD

[INFO] Version: 1.15.0

[INFO] Git: 4d2a7f4

[INFO] Built: Apr 23 2023

[INFO] =================================================

[Input]: Found input driver: “android”.

[Core]: Loading dynamic libretro core from: “/data/user/0/com.retroarch/cores/mupen64plus_next_gles3_libretro_android.so”

Special game type: N64 Disk Drive

Ident: ndd

ID: 1

Content:

Disk (required)

Cartridge (required)

Special game type: N64 Transferpak

Ident: gb

ID: 2

Content:

Gameboy RAM (required)

Gameboy ROM (required)

Cartridge (required)

[Core]: Game-specific core options found at “/storage/emulated/0/RetroArch/config/Mupen64Plus-Next/ZeldaMajora’sMask.NZSE.opt”.

Controller port: 1

Controller (ID: 1)

RetroPad (ID: 1)

Controller port: 2

Controller (ID: 1)

RetroPad (ID: 1)

Controller port: 3

Controller (ID: 1)

RetroPad (ID: 1)

Controller port: 4

Controller (ID: 1)

RetroPad (ID: 1)

[Remaps]: Core-specific remap found at “/storage/emulated/0/RetroArch/config/remaps/Mupen64Plus-Next/Mupen64Plus-Next.rmp”.

[Overrides]: Redirecting save file to “/storage/emulated/0/RetroArch/saves/ZeldaMajora’sMask.NZSE.srm”.

[Overrides]: Redirecting save state to “/storage/emulated/0/RetroArch/states/ZeldaMajora’sMask.NZSE.state”.

Environ: SYSTEM_DIRECTORY: “/storage/emulated/0/RetroArch/system”.

Environ: SYSTEM_DIRECTORY: “/storage/emulated/0/RetroArch/system”.

Environ: SET_PIXEL_FORMAT: XRGB8888.

[Content]: Loading content file: “/storage/emulated/0/Games/ZeldaMajora’sMask.NZSE.n64”.

Environ: GET_VARIABLE: mupen64plus-rdp-plugin = “gliden64”

Environ: GET_VARIABLE: mupen64plus-rsp-plugin = “hle”

Environ: GET_VARIABLE: mupen64plus-ThreadedRenderer = “False”

Environ: GET_VARIABLE: mupen64plus-BilinearMode = “3point”

Environ: GET_VARIABLE: mupen64plus-HybridFilter = “True”

Environ: GET_VARIABLE: mupen64plus-DitheringPattern = “False”

Environ: GET_VARIABLE: mupen64plus-DitheringQuantization = “False”

Environ: GET_VARIABLE: mupen64plus-RDRAMImageDitheringMode = “False”

Environ: GET_VARIABLE: mupen64plus-FXAA = “0”

Environ: GET_VARIABLE: mupen64plus-MultiSampling = “0”

Environ: GET_VARIABLE: mupen64plus-FrameDuping = “False”

Environ: GET_VARIABLE: mupen64plus-Framerate = “Original”

Environ: GET_VARIABLE: mupen64plus-virefresh = “Auto”

Environ: GET_VARIABLE: mupen64plus-EnableLODEmulation = “True”

Environ: GET_VARIABLE: mupen64plus-EnableFBEmulation = “True”

Environ: GET_VARIABLE: mupen64plus-EnableN64DepthCompare - Invalid value.

Environ: GET_VARIABLE: mupen64plus-EnableCopyColorToRDRAM = “Async”

Environ: GET_VARIABLE: mupen64plus-EnableCopyDepthToRDRAM = “Software”

Environ: GET_VARIABLE: mupen64plus-EnableHWLighting = “False”

Environ: GET_VARIABLE: mupen64plus-CorrectTexrectCoords = “Off”

Environ: GET_VARIABLE: mupen64plus-EnableTexCoordBounds = “False”

Environ: GET_VARIABLE: mupen64plus-EnableInaccurateTextureCoordinates = “False”

Environ: GET_VARIABLE: mupen64plus-BackgroundMode = “OnePiece”

Environ: GET_VARIABLE: mupen64plus-EnableNativeResTexrects = “Disabled”

Environ: GET_VARIABLE: mupen64plus-txFilterMode = “None”

Environ: GET_VARIABLE: mupen64plus-txEnhancementMode = “None”

Environ: GET_VARIABLE: mupen64plus-txFilterIgnoreBG = “True”

Environ: GET_VARIABLE: mupen64plus-txHiresEnable = “False”

Environ: GET_VARIABLE: mupen64plus-txCacheCompression = “True”

Environ: GET_VARIABLE: mupen64plus-txHiresFullAlphaChannel = “False”

Environ: GET_VARIABLE: mupen64plus-MaxHiResTxVramLimit = “0”

Environ: GET_VARIABLE: mupen64plus-MaxTxCacheSize = “8000”

Environ: GET_VARIABLE: mupen64plus-EnableLegacyBlending = “True”

Environ: GET_VARIABLE: mupen64plus-EnableFragmentDepthWrite = “False”

Environ: GET_VARIABLE: mupen64plus-EnableShadersStorage - Invalid value.

Environ: GET_VARIABLE: mupen64plus-EnableTextureCache = “True”

Environ: GET_VARIABLE: mupen64plus-EnableEnhancedTextureStorage = “False”

Environ: GET_VARIABLE: mupen64plus-EnableEnhancedHighResStorage = “False”

Environ: GET_VARIABLE: mupen64plus-EnableHiResAltCRC = “False”

Environ: GET_VARIABLE: mupen64plus-EnableCopyAuxToRDRAM = “False”

Environ: GET_VARIABLE: mupen64plus-GLideN64IniBehaviour = “late”

Environ: GET_VARIABLE: mupen64plus-cpucore = “dynamic_recompiler”

Environ: GET_VARIABLE: mupen64plus-aspect = “4:3”

Environ: GET_VARIABLE: mupen64plus-EnableNativeResFactor = “1”

Environ: GET_VARIABLE: mupen64plus-43screensize = “320x240”

Environ: GET_VARIABLE: mupen64plus-astick-deadzone = “15”

Environ: GET_VARIABLE: mupen64plus-astick-sensitivity = “100”

Environ: GET_VARIABLE: mupen64plus-CountPerOp = “0”

Environ: GET_VARIABLE: mupen64plus-CountPerOpDenomPot = “0”

Environ: GET_VARIABLE: mupen64plus-r-cbutton = “C1”

Environ: GET_VARIABLE: mupen64plus-l-cbutton = “C2”

Environ: GET_VARIABLE: mupen64plus-d-cbutton = “C3”

Environ: GET_VARIABLE: mupen64plus-u-cbutton = “C4”

Environ: GET_VARIABLE: mupen64plus-EnableOverscan = “Enabled”

Environ: GET_VARIABLE: mupen64plus-OverscanTop = “0”

Environ: GET_VARIABLE: mupen64plus-OverscanLeft = “0”

Environ: GET_VARIABLE: mupen64plus-OverscanRight = “0”

Environ: GET_VARIABLE: mupen64plus-OverscanBottom = “0”

Environ: GET_VARIABLE: mupen64plus-alt-map = “False”

Environ: GET_VARIABLE: mupen64plus-ForceDisableExtraMem = “False”

Environ: GET_VARIABLE: mupen64plus-IgnoreTLBExceptions = “False”

Environ: GET_VARIABLE: mupen64plus-pak1 = “rumble”

Environ: GET_VARIABLE: mupen64plus-pak2 = “none”

Environ: GET_VARIABLE: mupen64plus-pak3 = “none”

Environ: GET_VARIABLE: mupen64plus-pak4 = “none”

Environ: GET_VARIABLE: mupen64plus-rdp-plugin = “gliden64”

Environ: SET_HW_RENDER, context type: gl.

Requesting OpenGLES3 context.

Reached end of SET_HW_RENDER.

mupen64plus: Using full mem base

Environ: SYSTEM_DIRECTORY: “/storage/emulated/0/RetroArch/system”.

mupen64plus: [EmuThread] M64CMD_ROM_OPEN

mupen64plus: Goodname: Legend of Zelda, The - Majora’s Mask (U) [!]

mupen64plus: Name: ZELDA MAJORA’S MASK

mupen64plus: MD5: 2A0A8ACB61538235BC1094D297FB6556

mupen64plus: CRC: 5354631C 03A2DEF0

mupen64plus: Imagetype: .z64 (native)

mupen64plus: Rom size: 33554432 bytes (or 32 Mb or 256 Megabits)

mupen64plus: ClockRate = F

mupen64plus: Version: 144B

mupen64plus: Manufacturer: Nintendo

mupen64plus: Cartridge_ID: 535A

mupen64plus: Country: USA

mupen64plus: PC = 80080000

mupen64plus: Save type: 3

mupen64plus: [EmuThread] M64CMD_ROM_GET_HEADER

[Replay]: Found last replay slot: #0

[Core]: Version of libretro API: 1, Compiled against API: 1

[Audio]: Set audio input rate to: 44100.00 Hz.

[Video]: Set video size to: 960x720.

[Video]: Using HW render, OpenGL driver forced.

[Video]: “gl” saved as cached driver.

Android EGL: GLES version = 3.

[EGL] Falling back to eglGetDisplay

[EGL]: EGL version: 1.4

[GL]: Found GL context: “egl_android”.

[GL]: Detecting screen resolution: 0x0.

[EGL]: Current context: 0x7879ace900.

[GL]: Vendor: ARM, Renderer: Mali-G77 MC9.

[GL]: Version: OpenGL ES 3.2 v1.r32p1-01eac0.31c54ff74a1c2d286066cae461e0cd2e.

[GL]: Using resolution 1536x2560.

[GL]: Default shader backend found: glsl.

[Shader driver]: Using GLSL shader backend.

[GL]: Stock GLSL shaders will be used.

[GLSL]: Found GLSL vertex shader.

[GLSL]: Found GLSL fragment shader.

[GLSL]: Linking GLSL program.

[GLSL]: Found GLSL vertex shader.

[GLSL]: Found GLSL fragment shader.

[GLSL]: Linking GLSL program.

[GLSL]: Found GLSL vertex shader.

[GLSL]: Found GLSL fragment shader.

[GLSL]: Linking GLSL program.

[GL]: Using 1 textures.

[GL]: Loaded 1 program(s).

[GL]: Initializing HW render (512x512).

[GL]: Max texture size: 16383 px, renderbuffer size: 16383 px.

[GL]: Supports FBO (render-to-texture).

[Joypad]: Found joypad driver: “android”.

[Video]: Found display server: “android”.

mupen64plus: context_reset()

RetroPad, Port 1, Button “B (bottom)” => “A Button (C3)”

RetroPad, Port 1, Button “Y (left)” => “B Button (C2)”

RetroPad, Port 1, Button “Start” => “Start”

RetroPad, Port 1, Button “D-Pad Up” => “D-Pad Up”

RetroPad, Port 1, Button “D-Pad Down” => “D-Pad Down”

RetroPad, Port 1, Button “D-Pad Left” => “D-Pad Left”

RetroPad, Port 1, Button “D-Pad Right” => “D-Pad Right”

RetroPad, Port 1, Button “A (right)” => “(C1)”

RetroPad, Port 1, Button “X (up)” => “(C4)”

RetroPad, Port 1, Button “L” => “L Shoulder”

RetroPad, Port 1, Button “R” => “R Shoulder”

RetroPad, Port 1, Button “L2” => “Z Trigger”

RetroPad, Port 1, Button “R2” => “C Buttons Mode”

RetroPad, Port 2, Button “B (bottom)” => “A Button (C3)”

RetroPad, Port 2, Button “Y (left)” => “B Button (C2)”

RetroPad, Port 2, Button “Start” => “Start”

RetroPad, Port 2, Button “D-Pad Up” => “D-Pad Up”

RetroPad, Port 2, Button “D-Pad Down” => “D-Pad Down”

RetroPad, Port 2, Button “D-Pad Left” => “D-Pad Left”

RetroPad, Port 2, Button “D-Pad Right” => “D-Pad Right”

RetroPad, Port 2, Button “A (right)” => “(C1)”

RetroPad, Port 2, Button “X (up)” => “(C4)”

RetroPad, Port 2, Button “L” => “L Shoulder”

RetroPad, Port 2, Button “R” => “R Shoulder”

RetroPad, Port 2, Button “L2” => “Z Trigger”

RetroPad, Port 2, Button “R2” => “C Buttons Mode”

RetroPad, Port 3, Button “B (bottom)” => “A Button (C3)”

RetroPad, Port 3, Button “Y (left)” => “B Button (C2)”

RetroPad, Port 3, Button “Start” => “Start”

RetroPad, Port 3, Button “D-Pad Up” => “D-Pad Up”

RetroPad, Port 3, Button “D-Pad Down” => “D-Pad Down”

RetroPad, Port 3, Button “D-Pad Left” => “D-Pad Left”

RetroPad, Port 3, Button “D-Pad Right” => “D-Pad Right”

RetroPad, Port 3, Button “A (right)” => “(C1)”

RetroPad, Port 3, Button “X (up)” => “(C4)”

RetroPad, Port 3, Button “L” => “L Shoulder”

RetroPad, Port 3, Button “R” => “R Shoulder”

RetroPad, Port 3, Button “L2” => “Z Trigger”

RetroPad, Port 3, Button “R2” => “C Buttons Mode”

RetroPad, Port 4, Button “B (bottom)” => “A Button (C3)”

RetroPad, Port 4, Button “Y (left)” => “B Button (C2)”

RetroPad, Port 4, Button “Start” => “Start”

RetroPad, Port 4, Button “D-Pad Up” => “D-Pad Up”

RetroPad, Port 4, Button “D-Pad Down” => “D-Pad Down”

RetroPad, Port 4, Button “D-Pad Left” => “D-Pad Left”

RetroPad, Port 4, Button “D-Pad Right” => “D-Pad Right”

RetroPad, Port 4, Button “A (right)” => “(C1)”

RetroPad, Port 4, Button “X (up)” => “(C4)”

RetroPad, Port 4, Button “L” => “L Shoulder”

RetroPad, Port 4, Button “R” => “R Shoulder”

RetroPad, Port 4, Button “L2” => “Z Trigger”

RetroPad, Port 4, Button “R2” => “C Buttons Mode”

[OpenSL]: Requested audio latency: 128 ms.

[OpenSL]: Setting audio latency: Block size = 4096, Blocks = 6, Total = 24576 …

[Display]: Found display driver: “gl”.

Subsystem ID: 0

Special game type: N64 Disk Drive

Ident: ndd

ID: 1

Content:

Disk (required)

Cartridge (required)

Subsystem ID: 1

Special game type: N64 Transferpak

Ident: gb

ID: 2

Content:

Gameboy RAM (required)

Gameboy ROM (required)

Cartridge (required)

Subsystems: 2

[Playlist]: Loading history file: “/storage/emulated/0/Android/data/com.retroarch/files/content_history.lpl”.

[Playlist]: Loading history file: “/storage/emulated/0/Android/data/com.retroarch/files/content_music_history.lpl”.

[Playlist]: Loading history file: “/storage/emulated/0/Android/data/com.retroarch/files/content_image_history.lpl”.

[Playlist]: Loading favorites file: “/storage/emulated/0/Android/data/com.retroarch/files/content_favorites.lpl”.

[Playlist]: Written to playlist file: “/storage/emulated/0/Android/data/com.retroarch/files/content_history.lpl”.

mupen64plus: [EmuThread] M64CMD_EXECUTE

Environ: SYSTEM_DIRECTORY: “/storage/emulated/0/RetroArch/system”.

mupen64plus: Game controller 0 (Standard controller) has a Rumble pak plugged in

mupen64plus: Game controller 1 (Standard controller) has nothing plugged in

mupen64plus: Game controller 2 (Standard controller) has nothing plugged in

mupen64plus: Game controller 3 (Standard controller) has nothing plugged in

mupen64plus: Using CIC type X105

Environ: SYSTEM_DIRECTORY: “/storage/emulated/0/RetroArch/system”.

Environ: SYSTEM_DIRECTORY: “/storage/emulated/0/RetroArch/system”.

Environ: SYSTEM_DIRECTORY: “/storage/emulated/0/RetroArch/system”.

Environ: SYSTEM_DIRECTORY: “/storage/emulated/0/RetroArch/system”.

Environ: SYSTEM_DIRECTORY: “/storage/emulated/0/RetroArch/system”.

mupen64plus: Initializing 4 RDRAM modules for a total of 8 MB

mupen64plus: Starting R4300 emulator: Dynamic Recompiler

mupen64plus: Init new dynarec

[Android]: Resizing (1536 x 2560) -> (2560 x 1536).

Did you get any luck on this. I’m having the same issue in Majora’s mask. It’s crashes 90 percent of the time when I save state

Unfortunately, it still happens. Same with my current phone (Samsung S22). I think it might simply be the current build of the core.