Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

Upscaled my N64 ages ago, Now want to downscale it



  • Hiya!

    Ages ago, I was obsessed with getting Glide64 on a raspberry pi upscaled to 1080p with some overclocking. I never got it to work, and now I want to downscale it to 240p.

    I can get its internal resolution to downscale to 240p, but the video output resolution is still stuck at 1080p and I'm getting an awful stutter. I'd like to drop that to 720p or even 480p, but none of the changes that I make to my settings seems to affect it. I made this change over a year ago, and I can't remember exactly WHERE I changed the resolution.

    I've tried uninstalling and reinstalling the emulator to reset the configuration to no success. I've also attempted to delete /opt/retropie/configs/n64/mupen64plus.cfg. which also seems to do nothing. When I enter the configuration through loading a ROM and hitting enter, I can set the video output resolution, but it doesn't actually change anything for the game. I've also gone to RetroPie Setup -> Configuration/Tools -> Configuration for Librerto emulators and fiddled with the resolution for n64 in there. Still nothing!

    I don't remember WHERE I found the fix that upscaled the video output, and I know it probably wasn't from the official pi documentation as I've gone through their N64 documentation, and they only seem to list the steps which I've already done in an attempt to get it to downscale once again.

    Here's my current mupen64plus.cfg:

     Mupen64Plus Configuration File
     This file is automatically read and written by the Mupen64Plus Core library
    
    [Audio-OMX]
    
    Version = 1
    OUTPUT_PORT = "1"
    Frequency which is used if rom doesn't want to change it
    DEFAULT_FREQUENCY = 33600
    # Swaps left and right channels
    SWAP_CHANNELS = False
    # Audio Output Frequncy mode (when NATIVE_MODE=false): 0 = Rom Frequency, 1 ROM Frequency if supported (HDMI only), 2 = Standard frequency < Rom Frequency, 3 = Standard frequency > Rom Frequency, [N] Force output frequency
    DEFAULT_MODE = 0
    
    
    [Core]
    
    # Mupen64Plus Core config parameter set version number.  Please don't change this version number.
    Version = 1.010000
    # Draw on-screen display if True, otherwise don't draw OSD
    OnScreenDisplay = False
    # Use Pure Interpreter if 0, Cached Interpreter if 1, or Dynamic Recompiler if 2 or more
    R4300Emulator = 2
    # Disable compiled jump commands in dynamic recompiler (should be set to False)
    NoCompiledJump = False
    # Disable 4MB expansion RAM pack. May be necessary for some games
    DisableExtraMem = False
    # Increment the save state slot after each save operation
    AutoStateSlotIncrement = False
    # Activate the R4300 debugger when ROM execution begins, if core was built with Debugger support
    EnableDebugger = False
    # Save state slot (0-9) to use when saving/loading the emulator state
    CurrentStateSlot = 0
    # Path to directory where screenshots are saved. If this is blank, the default value of ${UserDataPath}/screenshot will be used
    ScreenshotPath = "/home/pi/RetroPie/roms/n64"
    # Path to directory where emulator save states (snapshots) are saved. If this is blank, the default value of ${UserDataPath}/save will be used
    SaveStatePath = "/home/pi/RetroPie/roms/n64"
    # Path to directory where SRAM/EEPROM data (in-game saves) are stored. If this is blank, the default value of ${UserDataPath}/save will be used
    SaveSRAMPath = "/home/pi/RetroPie/roms/n64"
    # Path to a directory to search when looking for shared data files
    SharedDataPath = "/opt/retropie/configs/n64"
    # Force number of cycles per emulated instruction
    CountPerOp = 0
    # Disable speculative precompilation in new dynarec
    DisableSpecRecomp = True
    
    
    [CoreEvents]
    
    # Mupen64Plus CoreEvents config parameter set version number.  Please don't change this version number.
    Version = 1
    # SDL keysym for stopping the emulator
    Kbd Mapping Stop = 27
    # SDL keysym for switching between fullscreen/windowed modes
    Kbd Mapping Fullscreen = 0
    # SDL keysym for saving the emulator state
    Kbd Mapping Save State = 286
    # SDL keysym for loading the emulator state
    Kbd Mapping Load State = 288
    # SDL keysym for advancing the save state slot
    Kbd Mapping Increment Slot = 0
    # SDL keysym for resetting the emulator
    Kbd Mapping Reset = 290
    # SDL keysym for slowing down the emulator
    Kbd Mapping Speed Down = 291
    # SDL keysym for speeding up the emulator
    Kbd Mapping Speed Up = 292
    # SDL keysym for taking a screenshot
    Kbd Mapping Screenshot = 293
    # SDL keysym for pausing the emulator
    Kbd Mapping Pause = 112
    # SDL keysym for muting/unmuting the sound
    Kbd Mapping Mute = 109
    # SDL keysym for increasing the volume
    Kbd Mapping Increase Volume = 93
    # SDL keysym for decreasing the volume
    Kbd Mapping Decrease Volume = 91
    # SDL keysym for temporarily going really fast
    Kbd Mapping Fast Forward = 102
    # SDL keysym for advancing by one frame when paused
    Kbd Mapping Frame Advance = 47
    # SDL keysym for pressing the game shark button
    Kbd Mapping Gameshark = 103
    # Joystick event string for stopping the emulator
    Joy Mapping Stop = "J0B0/B3"
    # Joystick event string for switching between fullscreen/windowed modes
    Joy Mapping Fullscreen = ""
    # Joystick event string for saving the emulator state
    Joy Mapping Save State = "J0B0/B11"
    # Joystick event string for loading the emulator state
    Joy Mapping Load State = "J0B0/B10"
    # Joystick event string for advancing the save state slot
    Joy Mapping Increment Slot = ""
    # Joystick event string for taking a screenshot
    Joy Mapping Screenshot = ""
    # Joystick event string for pausing the emulator
    Joy Mapping Pause = ""
    # Joystick event string for muting/unmuting the sound
    Joy Mapping Mute = ""
    # Joystick event string for increasing the volume
    Joy Mapping Increase Volume = ""
    # Joystick event string for decreasing the volume
    Joy Mapping Decrease Volume = ""
    # Joystick event string for fast-forward
    Joy Mapping Fast Forward = ""
    # Joystick event string for pressing the game shark button
    Joy Mapping Gameshark = ""
    
    
    [Input-SDL-Control1]
    
    # Mupen64Plus SDL Input Plugin config parameter version number.  Please don't change this version number.
    version = 2
    # Controller configuration mode: 0=Fully Manual, 1=Auto with named SDL Device, 2=Fully automatic
    mode = 2
    # Specifies which joystick is bound to this controller: -1=No joystick, 0 or more= SDL Joystick number
    device = 0
    # SDL joystick name (or Keyboard)
    name = "Sony PLAYSTATION(R)3 Controller"
    # Specifies whether this controller is 'plugged in' to the simulated N64
    plugged = True
    # Specifies which type of expansion pak is in the controller: 1=None, 2=Mem pak, 5=Rumble pak
    plugin = 2
    # If True, then mouse buttons may be used with this controller
    mouse = False
    # Scaling factor for mouse movements.  For X, Y axes.
    MouseSensitivity = "2.00,2.00"
    # The minimum absolute value of the SDL analog joystick axis to move the N64 controller axis value from 0.  For X, Y axes.
    AnalogDeadzone = "4096,4096"
    # An absolute value of the SDL joystick axis >= AnalogPeak will saturate the N64 controller axis value (at 80).  For X, Y axes. For each axis, this must be greater than the corresponding AnalogDeadzone value
    AnalogPeak = "32768,32768"
    # Digital button configuration mappings
    DPad R = "button(5)"
    DPad L = "button(7)"
    DPad D = "button(6)"
    DPad U = "button(4)"
    Start = "button(3)"
    Z Trig = "button(8)"
    B Button = "button(15)"
    A Button = "button(14)"
    C Button R = "axis(2+)"
    C Button L = "axis(2-)"
    C Button D = "button(13) axis(3+)"
    C Button U = "button(12) axis(3-)"
    R Trig = "button(11)"
    L Trig = "button(10)"
    Mempak switch = "button(1)"
    Rumblepak switch = "button(2)"
    # Analog axis configuration mappings
    X Axis = "axis(0-,0+)"
    Y Axis = "axis(1-,1+)"
    
    
    [Input-SDL-Control2]
    
    # Mupen64Plus SDL Input Plugin config parameter version number.  Please don't change this version number.
    version = 2
    # Controller configuration mode: 0=Fully Manual, 1=Auto with named SDL Device, 2=Fully automatic
    mode = 2
    # Specifies which joystick is bound to this controller: -1=No joystick, 0 or more= SDL Joystick number
    device = -1
    # SDL joystick name (or Keyboard)
    name = ""
    # Specifies whether this controller is 'plugged in' to the simulated N64
    plugged = False
    # Specifies which type of expansion pak is in the controller: 1=None, 2=Mem pak, 5=Rumble pak
    plugin = 1
    # If True, then mouse buttons may be used with this controller
    mouse = False
    # Scaling factor for mouse movements.  For X, Y axes.
    MouseSensitivity = "2.00,2.00"
    # The minimum absolute value of the SDL analog joystick axis to move the N64 controller axis value from 0.  For X, Y axes.
    AnalogDeadzone = "4096,4096"
    # An absolute value of the SDL joystick axis >= AnalogPeak will saturate the N64 controller axis value (at 80).  For X, Y axes. For each axis, this must be greater than the corresponding AnalogDeadzone value
    AnalogPeak = "32768,32768"
    # Digital button configuration mappings
    DPad R = ""
    DPad L = ""
    DPad D = ""
    DPad U = ""
    Start = ""
    Z Trig = ""
    B Button = ""
    A Button = ""
    C Button R = ""
    C Button L = ""
    C Button D = ""
    C Button U = ""
    R Trig = ""
    L Trig = ""
    Mempak switch = ""
    Rumblepak switch = ""
    # Analog axis configuration mappings
    X Axis = ""
    Y Axis = ""
    
    
    [Input-SDL-Control3]
    
    # Mupen64Plus SDL Input Plugin config parameter version number.  Please don't change this version number.
    version = 2
    # Controller configuration mode: 0=Fully Manual, 1=Auto with named SDL Device, 2=Fully automatic
    mode = 2
    # Specifies which joystick is bound to this controller: -1=No joystick, 0 or more= SDL Joystick number
    device = -1
    # SDL joystick name (or Keyboard)
    name = ""
    # Specifies whether this controller is 'plugged in' to the simulated N64
    plugged = False
    # Specifies which type of expansion pak is in the controller: 1=None, 2=Mem pak, 5=Rumble pak
    plugin = 1
    # If True, then mouse buttons may be used with this controller
    mouse = False
    # Scaling factor for mouse movements.  For X, Y axes.
    MouseSensitivity = "2.00,2.00"
    # The minimum absolute value of the SDL analog joystick axis to move the N64 controller axis value from 0.  For X, Y axes.
    AnalogDeadzone = "4096,4096"
    # An absolute value of the SDL joystick axis >= AnalogPeak will saturate the N64 controller axis value (at 80).  For X, Y axes. For each axis, this must be greater than the corresponding AnalogDeadzone value
    AnalogPeak = "32768,32768"
    # Digital button configuration mappings
    DPad R = ""
    DPad L = ""
    DPad D = ""
    DPad U = ""
    Start = ""
    Z Trig = ""
    B Button = ""
    A Button = ""
    C Button R = ""
    C Button L = ""
    C Button D = ""
    C Button U = ""
    R Trig = ""
    L Trig = ""
    Mempak switch = ""
    Rumblepak switch = ""
    # Analog axis configuration mappings
    X Axis = ""
    Y Axis = ""
    
    
    [Input-SDL-Control4]
    
    # Mupen64Plus SDL Input Plugin config parameter version number.  Please don't change this version number.
    version = 2
    # Controller configuration mode: 0=Fully Manual, 1=Auto with named SDL Device, 2=Fully automatic
    mode = 2
    # Specifies which joystick is bound to this controller: -1=No joystick, 0 or more= SDL Joystick number
    device = -1
    # SDL joystick name (or Keyboard)
    name = ""
    # Specifies whether this controller is 'plugged in' to the simulated N64
    plugged = False
    # Specifies which type of expansion pak is in the controller: 1=None, 2=Mem pak, 5=Rumble pak
    plugin = 1
    # If True, then mouse buttons may be used with this controller
    mouse = False
    # Scaling factor for mouse movements.  For X, Y axes.
    MouseSensitivity = "2.00,2.00"
    # The minimum absolute value of the SDL analog joystick axis to move the N64 controller axis value from 0.  For X, Y axes.
    AnalogDeadzone = "4096,4096"
    # An absolute value of the SDL joystick axis >= AnalogPeak will saturate the N64 controller axis value (at 80).  For X, Y axes. For each axis, this must be greater than the corresponding AnalogDeadzone value
    AnalogPeak = "32768,32768"
    # Digital button configuration mappings
    DPad R = ""
    DPad L = ""
    DPad D = ""
    DPad U = ""
    Start = ""
    Z Trig = ""
    B Button = ""
    A Button = ""
    C Button R = ""
    C Button L = ""
    C Button D = ""
    C Button U = ""
    R Trig = ""
    L Trig = ""
    Mempak switch = ""
    Rumblepak switch = ""
    # Analog axis configuration mappings
    X Axis = ""
    Y Axis = ""
    
    
    [UI-Console]
    
    # Mupen64Plus UI-Console config parameter set version number.  Please don't change this version number.
    Version = 1
    # Directory in which to search for plugins
    PluginDir = "./"
    # Filename of video plugin
    VideoPlugin = "mupen64plus-video-GLideN64.so"
    # Filename of audio plugin
    AudioPlugin = "mupen64plus-audio-omx.so"
    # Filename of input plugin
    InputPlugin = "mupen64plus-input-sdl.so"
    # Filename of RSP plugin
    RspPlugin = "mupen64plus-rsp-hle.so"
    
    
    [Video-General]
    
    Fullscreen = False
    ScreenWidth = 320
    ScreenHeight = 240
    # If true, activate the SDL_GL_SWAP_CONTROL attribute
    VerticalSync = False
    
    
    [Video-GLideN64]
    
    configVersion = 17
    bilinearMode = 1
    CacheSize = 192
    EnableFBEmulation = False
    UseNativeResolutionFactor = 1
    EnableLegacyBlending = True
    # Crop resulted image (0=disable, 1=auto crop, 2=user defined crop)
    CropMode = 0
    # Crop width pixels from left and right of resulted image (in native resolution)
    CropWidth = 0
    # Crop height pixels from top and bottom of resulted image (in native resolution)
    CropHeight = 0
    # Enable/Disable MultiSampling (0=off, 2,4,8,16=quality)
    MultiSampling = 0
    # Screen aspect ratio (0=stretch, 1=force 4:3, 2=force 16:9, 3=adjust)
    AspectRatio = 1
    # Swap frame buffers (0=On VI update call, 1=On VI origin change, 2=On buffer update)
    BufferSwapMode = 0
    # Max level of Anisotropic Filtering, 0 for off
    MaxAnisotropy = False
    # Enable color noise emulation.
    EnableNoise = True
    # Enable LOD emulation.
    EnableLOD = True
    # Enable hardware per-pixel lighting.
    EnableHWLighting = False
    # Use persistent storage for compiled shaders.
    EnableShadersStorage = True
    # Make texrect coordinates continuous to avoid black lines between them. (0=Off, 1=Auto, 2=Force)
    CorrectTexrectCoords = 0
    # Render 2D texrects in native resolution to fix misalignment between parts of 2D image.
    EnableNativeResTexrects = False
    # Enable writing of fragment depth. Some mobile GPUs do not support it, thus it made optional. Leave enabled.
    EnableFragmentDepthWrite = True
    # Use GLideN64 per-game settings.
    EnableCustomSettings = True
    # Copy auxiliary buffers to RDRAM
    EnableCopyAuxiliaryToRDRAM = False
    # Enable N64 depth compare instead of OpenGL standard one. Experimental.
    EnableN64DepthCompare = False
    # Disable buffers read/write with FBInfo. Use for games, which do not work with FBInfo.
    DisableFBInfo = True
    # Read color buffer by 4kb chunks (strict follow to FBRead specification)
    FBInfoReadColorChunk = False
    # Read depth buffer by 4kb chunks (strict follow to FBRead specification)
    FBInfoReadDepthChunk = True
    # Enable color buffer copy to RDRAM (0=do not copy, 1=copy in sync mode, 2=copy in async mode)
    EnableCopyColorToRDRAM = 2
    # Enable depth buffer copy to RDRAM  (0=do not copy, 1=copy from video memory, 2=use software render)
    EnableCopyDepthToRDRAM = 2
    # Enable color buffer copy from RDRAM.
    EnableCopyColorFromRDRAM = False
    # Texture filter (0=none, 1=Smooth filtering 1, 2=Smooth filtering 2, 3=Smooth filtering 3, 4=Smooth filtering 4, 5=Sharp filtering 1, 6=Sharp filtering 2)
    txFilterMode = 0
    # Texture Enhancement (0=none, 1=store as is, 2=X2, 3=X2SAI, 4=HQ2X, 5=HQ2XS, 6=LQ2X, 7=LQ2XS, 8=HQ4X, 9=2xBRZ, 10=3xBRZ, 11=4xBRZ, 12=5xBRZ), 13=6xBRZ
    txEnhancementMode = 0
    # Deposterize texture before enhancement.
    txDeposterize = False
    # Don't filter background textures.
    txFilterIgnoreBG = False
    # Size of filtered textures cache in megabytes.
    txCacheSize = 100
    # Use high-resolution texture packs if available.
    txHiresEnable = False
    # Allow to use alpha channel of high-res texture fully.
    txHiresFullAlphaChannel = False
    # Use alternative method of paletted textures CRC calculation.
    txHresAltCRC = False
    # Enable dump of loaded N64 textures.
    txDump = False
    # Zip textures cache.
    txCacheCompression = True
    # Force use 16bit texture formats for HD textures.
    txForce16bpp = False
    # Save texture cache to hard disk.
    txSaveCache = True
    # Path to folder with hi-res texture packs.
    txPath = "/home/pi/.local/share/mupen64plus/hires_texture"
    # File name of True Type Font for text messages.
    fontName = "FreeSans.ttf"
    # Font size.
    fontSize = 18
    # Font color in RGB format.
    fontColor = "B5E61D"
    # Enable bloom filter
    EnableBloom = False
    # Brightness threshold level for bloom. Values [2, 6]
    bloomThresholdLevel = 4
    # Bloom blend mode (0=Strong, 1=Mild, 2=Light)
    bloomBlendMode = 0
    # Blur radius. Values [2, 10]
    blurAmount = 10
    # Blur strength. Values [10, 100]
    blurStrength = 20
    # Force gamma correction.
    ForceGammaCorrection = False
    # Gamma correction level.
    GammaCorrectionLevel = 2
    # Show FPS counter.
    ShowFPS = False
    # Show VI/S counter.
    ShowVIS = False
    # Show percent counter.
    ShowPercent = False
    # Counters position (1=top left, 2=top center, 4=top right, 8=bottom left, 16=bottom center, 32=bottom right)
    CountersPos = 8
    


  • @finnegantimothyd please put this in a code block by adding 3 backticks ` at the top and bottom.

    it will then
    appear  
    like this. 
    


  • Done! Thank you. I was trying to find a formatted text tag like that, but couldnt locate one.



Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.