psakhis / Groovy_MiSTer

Groovy nogpu
GNU General Public License v2.0
109 stars 5 forks source link

Groovy core for MiSTer

General description

This core is a analog GPU for CRTs aiming for very low subframe latency

https://youtu.be/H0175WJFpUs

Features

Installation (transfers in binary mode!)

Only for XDP high performance feature, some tweaks on Linux are needed

  1. Replace kernel: zImage_dtb file on /media/fat/linux (is same kernel with some patches for eth0 driver and builded with CONFIG_XDP_SOCKETS=Y)
  2. Save groovy_xdp_kern.o to /usr/lib/arm-linux-gnueabihf/bpf (this program will be injected on eth while xdp is running)
  3. Save libelf.so.1 on /usr/lib (library requiered)
  4. On MiSTer.ini change binary from MiSTer_groovy to MiSTer_groovy_XDP

    Emulators available

    GroovyMAME

    MAME fork by @Calamity, download mame_mister.ini and rename to mame.ini

    -video mister -aspect 4:3 -switchres -monitor arcade_15 -mister_window -mister_ip "192.x.x.x" -mister_compression lz4 -skip_gameinfo -syncrefresh -nothrottle -nomister_interlaced_fb (from 0.264) -joystickprovider mister (from 0.264, analog joysticks from 0.266) -keyboardprovider mister (from 0.266) -mouseprovider mister (from 0.266)

    *Automatic frame delay is applied with frame delay 0 -mister_fd_margin 1.5/2.0/3.0 (applies a safe margin with ms to auto frame delay)

    Change "uifont default" to "uifont uismall.bdf" on mame.ini for pixel perfect menu autosync 0 on mame.ini for menu (60hz) *MAC builds from https://github.com/djfumberger/GroovyMAME/releases/tag/2024Jan19

emu4crt

Mednafen fork, on mednafen.cfg set:

mister.host 192.x.x.x  
mister.lz4 1 (0-raw, 1-lz4, 2-lz4hc, 3-lz4 adaptative)
mister.vsync 0 (0 for automatic frame delay or line do you want to sync)
mister.mtu 1500 (3800 for jumbo frames)
mister.interlaced_fb 1 (0 for force progressive framebuffer with interlaced modes)
video.resolution_switch mister

Retroarch

Retroarch fork, on retroarch.cfg set (note: these lines has to exists on retroarch.cfg):

mister_ip = "192.x.x.x"
mister_lz4 = "1" (0-raw, 1-lz4, 2-lz4hc, 3-adaptative)
crt_switch_resolution = "4" (switchres.ini custom file)
crt_switch_resolution_super = "0"
aspect_ratio_index = "22" (core provided)
video_mister_enable = "true"
video_vsync = "false"
mister_scanlines = "true" 
mister_force_rgb565 = "false" (activate it when bandwidth problems)
mister_interlaced_fb = "true"
input_driver = "mister" (for input keyboard/mouse connected on MiSTer)
input_joypad_driver = "mister" (for input controllers connected on MiSTer)
menu_driver = "rgui" (it's the only menu supported)
vrr_runloop_enable = "true" (better performance for flycast)
audio_sync = "false" (better performance for flycast)
mister_mtu = "1500" (for enable jumbo frame, 3800 is allowed)

*Automatic frame delay for best results on latency options
*For dosbox core, set 60fps on core options.
*Hardware cores only works with glcore/vulkan (framebuffer for flycast is recommended on core options) 
*For run a core from command line -> retroach.exe -L cores/xxxx.dll file

86box

86box4crt fork, on 86box.cfg set:

vid_mister = 1
vid_mister_ip = 192.x.x.x
joystick_0_nr = #number of joystick connected. MiSTer joysticks have numbers after PC ones.
vid_mister_lz4 = 1 (default)
vid_mister_interlaced_fb = 0 (default)
vid_mister_mtu = 0 (default, 1 for jumbo)

*Tested with arcade_15 monitor on switchres.ini (use scandoubler for a 31khz monitor)
*Hacked mode 13h to get sync with 60hz instead of 70hz (no tearing)
*For see a log file, run with >log.txt

[Dolphin]()

New submenu of graphics options. After emulators starts gamepads from MiSTer can be mapped.

MiSTerCast

Thanks to @Shane for this great windows utility to mirror desktop.

Thanks

@Calamity for hard testing core and implement GroovyMAME for it

@sorgelig, for developing and maintaining MiSTer.

@jotego, for analog adjustment module.

GroovyArcade Discord #nogpu

MiSTer Discord #dev-talk

@alanswx for their lessons

@wickerwaka for their tips using ddr

@coolbho3k for their overclock

@Emulators teams: Mednafen, MAME and Retroarch

@alexxnr for testing it and encourage me in the project