Skip to content

Commit

Permalink
GroovyMAME cumulative patch 2020-2022.
Browse files Browse the repository at this point in the history
Add CI workflow (Substring)
Preliminar switchres hook (not working yet)
Sync with current Switchres WIP
Sync with switchres library
Update copyright
Add one display manager per window
Fix set_monitor_aspect call
Connect window with modeline generator.
Add switchres options to MAME's osd and link set video mode returned by switchres
Sync with upstream Switchres / implement effective_orientation()
Sync with Switchres
Sync with Switchres and greatly simplify rotation handling
Set options only if a valid mode is returned
Force switch to the selected mode
Pass the whole monitor object to add_display method
Correctly pass MAME's resolution and aspect configuration to Switchres
Add Linux support
Sync with upstream Switchres
Add preliminar drmkms implementation
Sync with upstream Switchres
Deprecate -orientation option and add -modesetting option
Remove -orientation option from switchres_module
Fix SDL window focus loss on multi-monitor
Add more Switchres options to our module
Sync with upstream Switchres
Sync to upstream Switchres
Implement -autosync feature
Headers cleanup
Correctly update video configuration after option setting
Make extract_video_config public in SDL so we can call it
Add lcd preset support and autoconfiguration
Fix issue with LCD resolution setting
Sync with upstream Switchres
Implement -changeres feature (in-game mode switching)
Remove old MAME modules
Fix -noswitchres case in Windows
Hide taskbar in Windows with -video bgfx
Sync to upstream switchres
Add v_shift_correct option
Update to upstream Switchres
Update to upstream switchres
Use new getters in switchres module
Update to upstream Switchres
Update to upstream Switchres to fix warnings
Redirect logging to MAME's own functions instead of printf
Update to upstream switchres
Add new custom video backend specific options to MAME
Update to upstream Switchres
Update to upstream Switchres
Update to upstream Switchres
Add GroovyMAME's synchronization features
Correctly adjust fullscreen window size after an in-game mode change
Upgrade to D3D9ex interface
Update to upstream Switchres
Fix d3d9ex patch
Multiscreen vblank code, default to single screen setup
Fix slider save/load due to upstream changes
Add vsync_offset slider
Implement hack to allow multi-monitor vsync based on SDL screen index (not valid for multi-gpu)
Disable SDL's fullscreen modesetting with SR's modesetting enabled. Prevents SDL from reverting SR's already set resolution when the new mode doesn't get into SDL's mode list due to close refresh masking.
Update to upstream Switchres
Use new screen_device_enumator type.
Don't call update_resolution in Windows's osd because WM_DISPLAYCHANGE only returns resolution for primary monitor. monitor->refresh() alone does the job.
Show Switchres mode in machine's information box
Add black frame insertion implementation
Set proper default option values for most cases
Fix Windows build workflow so that all required folders are included. Add root path to 7z. (Substring)
Add 1 decimal precision to CPU overclock slider [removed, added to baseline as of 0.259]
Fix Windows 7z release script
Update integration to upstream MAME 0.228
Make sure a physical display exists when showing SR information.
Apply SR's mode to all displays in D3D.
Fix multi-screen maximizing (set first window as foreground).
Update to upstream Switchres.
Properly account for refresh scaling & black frame insertion with frame delay.
Always use SDL_WINDOW_FULLSCREEN_DESKTOP, to make possible KMS testing.
Correctly update game video information after machine initialization.
Update to upstream Switchres.
Fix slider code after upstream overhaul.
Remove 64 subfix from binary name.
Try to fix Linux actions build.
Remove triplebuffer setting from ui.
(Windows) Implement asynchronous rendering through native d3d9ex api.
Implement new option -sync_mode (0-3) to allow different v-sync schemes on Linux OpenGL backend.
Add glFinish(), fixes synchronization on amdgpu.
Update to upstream Switchres.
Add new build switches for Linux SR_WITH_XRANDR, SR_WITH_KMSDRM
Add new option -syncaudio to allow enabling/disabling audio resampling with -syncrefresh
Add new option -autofilter to automatically enable filtering with fractional stretching or interlaced.
Add new option -autostretch to automatically set scaling mode (integer or fractional) based on the selected video mode
Correctly apply pixel_precision option
Add new option -interlace_force_even, from upstream Switchres
Set correct log level
Direct3D9ex interface cleanup.
Set valid sync_mode values 0-4, with 0 as Swap(1) + glFinish.
Fix max value for sync_mode
Implement -autosync differently for Windows and Linux (unfortunate situation until we can do asynchronous flipping on OpenGL).
Set default -sync_mode to 2.
Fix crash on D3D9Ex when -switchres is disabled or no video mode is found.
Try to fix Windows build.
Try to fix Windows build attempt mamedev#2.
Try to fix Windows build attempt mamedev#3.
Try to fix Windows build. mamedev#4
Update to upstream Switchres.
Fix slider's load/save code.
Correctly apply -keepaspect after implementation overhaul in baseline.
(Windows) Fix bug that caused games using interlaced modes run at double speed.
Fix bug that caused interlaced modes to lock screen updates.
Fix bug that caused an exception when saving configuration after doing changes from the ui.
Make -vsync_offset slider setting not propagate between different games when launched from the ui.
Fix locale mess with floats.
Update to upstream Switchres.
Silent GCC warning.
Add support for kmsdrm mode switching.
[sdl2] Refresh monitor dimensions after initial mode switch to UI aspect.
[sdl2] Also consider a future use case for -nomodesetting.
Update to upstream Switchres.
[sdl2] Fix toggling fullscreen on/off (avoid window recreation), support in-game mode switching & correctly restore desktop mode with -nomodesetting.
Update to upstream Switchres.
Update to upstream Switchres.
Allow MAME to read SR's configuration from switchres.ini. Make it optional through new bool option -switchres_ini.
Update to upstream Switchres
Split add and init display call wrappers, to meet SR's design.
[sdl] Pass sdlwindow handle on display initialization. Delete display manager before destroying to window, we need its fd for cleanup.
[windows] Adapt window code to the new add/init display methods.
Produce automatic GM diff patch on build [Substring]
Attempt at fixing github builds (docs).
Update to upstream Switchres.
Update to upstream Switchres.
Update to upstring Switchres.
Fix typo in proportions computation scoring.
Update to upstream Switchres.
Update to upstream Switchres.
Another fix to the scale factors scoring, hopefully the last.
Improve UI text drawing performance.
Properly apply -keepaspect on rotated targets.
[linux] Add low latency (drm) vsync to sdl2 video backend (-video accel).
Update to upstream Switchres.
Implement -h_size, -h_shift, -v_shift options, for geometry adjustment.
Add geometry adjustment sliders to the UI.
Fix build after baseline header changes.
More header fixes.
Update to upstream Switchres.
[Windows] Add rawinput support for joysticks. [monkeypox]
Update to upstream Switchres.
Extend h-size slider to 2.00 maximum.
Temporary fix for -modeline option.
Attempt at fixing Linux CI.
Attempt at fixing Linux build.
Update to upstream Switchres (fixes rotated desktop in X)
Apply integer scaling to fonts. Disable bilinear filtering for small fonts. Change -font_rows range to 20-40. [Oomek & Calamity]
Fix v_shift option assignment in slider.
Adapt rawinput implementation to upstream changes.
Fix crash with -noswitchres.
Multiple fixes to traumatic rebase after massive upstream osd refactoring.
  • Loading branch information
antonioginer committed Feb 29, 2024
1 parent 93d8318 commit ffd46c4
Show file tree
Hide file tree
Showing 87 changed files with 17,444 additions and 315 deletions.
172 changes: 172 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
# This is a basic workflow that is manually triggered

name: Build GroovyMAME on a new tag

# Only build when a tag looks like gm0???sr????
# It will, in the end, converted to the GM version + SR version
# eg: gm0223sr017q
on:
push:
tags:
- gm0*sr*

jobs:
# GM build jobs : on linux/mingw (corssbuild for windows), on windows/msys2 and linux
# mingw-windows-build:
# Cross ompilation job, runs on a Ubuntu Linux runner and builds windows binaries
# Disabled for now because of https://github.com/mamedev/mame/issues/7240
# Take care if you enable this job again, others must have changed since
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v2
# - name: Setup environment
# run: |
# sudo apt update
# sudo apt-get install mingw-w64 wine64 p7zip
# sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
# - name: Build GroovyMAME
# run: |
# make -j$(nproc) TARGET=mame TOOLS=1 SEPARATE_BIN=1 PTR64=1 OPTIMIZE=3 SYMBOLS=0 SYMLEVEL=1 REGENIE=1 TARGETOS=windows OVERRIDE_CC=x86_64-w64-mingw32-gcc OVERRIDE_CXX=x86_64-w64-mingw32-g++ OVERRIDE_LD=x86_64-w64-mingw32-ld MINGW64=/usr
# make -f dist.mak PTR64=1 TARGETOS=windows
# - name: Create MAME basic configuration
# run: |
# cd build/release/x64/Release/mame
# wine64 mame64.exe -createconfig
# - name: Create Release Asset
# run: |
# cd build/release/x64/Release/mame
# 7z a groovymame-mingw-win32-64bits.7z *
# - name: Upload artifact
# uses: actions/upload-artifact@v2
# with:
# name: binaries-win32-mingw
# path: build/release/x64/Release/mame/groovymame-mingw-win32-64bits.7z

msys-windows-build:
# Windows build in a MSYS2 environment on a Windows runner
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
with:
update: true
install: |
git make mingw-w64-x86_64-gcc mingw-w64-x86_64-python mingw-w64-x86_64-lld mingw-w64-x86_64-libc++ p7zip
mingw-w64-x86_64-librsvg mingw-w64-x86_64-python-sphinx mingw-w64-x86_64-python-sphinxcontrib-svg2pdfconverter
mingw-w64-x86_64-texlive-fonts-recommended mingw-w64-x86_64-texlive-latex-extra
- uses: actions/checkout@v2
- name: Build GroovyMAME
run: |
export MINGW64=/mingw64
export MINGW32=
export ARCHOPTS=-fuse-ld=lld
export OVERRIDE_AR=llvm-ar
make -j$(nproc) TARGET=mame TOOLS=1 SEPARATE_BIN=1 PTR64=1 OPTIMIZE=3 SYMBOLS=0 SYMLEVEL=1 REGENIE=1
make -f dist.mak PTR64=1
cp -rf artwork bgfx hlsl plugins samples build/release/x64/Release/mame/
- name: Create MAME basic configuration
run: |
cd build/release/x64/Release/mame
./mame.exe -createconfig
- name: Create Release Asset
run: |
tag="${GITHUB_REF#refs/*/}"
# Now tag should be in the shape of gm0XXXsrYYYY, ex: gm0223sr017q
mamev="${tag:3:3}"
srv="${tag: -4}"
cd build/release/x64/Release
mv mame "groovymame_0${mamev}.${srv}_win-7-8-10"
7z a "groovymame_0${mamev}.${srv}_win-7-8-10.7z" "groovymame_0${mamev}.${srv}_win-7-8-10"
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: binaries-win32-msys
path: build/release/x64/Release/groovymame*.7z

linux-build:
# Simple linux build on ubuntu
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup environment
run: |
sudo apt update
sudo apt-get install git build-essential python3 libsdl2-dev libsdl2-ttf-dev libfontconfig-dev libdrm-dev p7zip
sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
sudo apt-get install -y librsvg2-bin latexmk python3-pip python3-sphinx texlive texlive-formats-extra texlive-science
pip3 install sphinxcontrib-svg2pdfconverter
- name: Build GroovyMAME
run: |
make -j$(nproc) TARGET=mame TOOLS=1 SEPARATE_BIN=1 PTR64=1 OPTIMIZE=3 SYMBOLS=0 SYMLEVEL=1 REGENIE=1
make -f dist.mak PTR64=1
- name: Create Release Asset
run: |
tag="${GITHUB_REF#refs/*/}"
# Now tag should be in the shape of gm0XXXsrYYYY, ex: gm0223sr017q
mamev="${tag:3:3}"
srv="${tag: -4}"
cd build/release/x64/Release/mame
mv mame groovymame
tar cvjf "groovymame_0${mamev}.${srv}_linux.tar.bz2" groovymame
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: binaries-linux-gcc
path: build/release/x64/Release/mame/groovymame*.tar.bz2

make_patch:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Generate patch
run: |
tag="${GITHUB_REF#refs/*/}"
mamev="${tag:3:3}"
git diff mame0${mamev}..HEAD > GroovyMAME${mamev}.patch
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: GroovyMAME-patch
path: GroovyMAME*.patch

release:
runs-on: ubuntu-latest
#needs: [mingw-windows-build, msys-windows-build, linux-build]
needs: [msys-windows-build, linux-build, make_patch]
steps:
- name: Prepare data
id: prepare_data
run: |
tag="${GITHUB_REF#refs/*/}"
# Now tag should be in the shape of gm0XXXsrYYYY, ex: gm0223sr017q
mamev="${tag:3:3}"
srv="${tag: -4}"
echo "GroovyMAME: 0.$mamev"
echo "Switchres : 2.$srv"
echo "::set-output name=mame_version::${mamev}"
echo "::set-output name=switchres_version::${srv}"
echo "::set-output name=current_tag::${tag}"
- name: Download Artifacts
uses: actions/download-artifact@v2.0.5
- name: Create Release
id: create_release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MAME_VERSION: ${{ steps.prepare_data.outputs.mame_version }}
SWITCHRES_VERSION: ${{ steps.prepare_data.outputs.switchres_version }}
CURRENT_TAG: ${{ steps.prepare_data.outputs.current_tag }}
with:
name: GroovyMAME 0.${{ steps.prepare_data.outputs.mame_version }} - Switchres 2.${{ steps.prepare_data.outputs.switchres_version }}
draft: true
prerelease: false
files: |
./binaries-win32-msys/groovymame_*.7z
./binaries-linux-gcc/groovymame_*.tar.bz2
./GroovyMAME-patch/GroovyMAME*.patch
# ./binaries-win32-mingw/groovymame-mingw-win32-64bits.7z
74 changes: 0 additions & 74 deletions .github/workflows/ci-linux.yml

This file was deleted.

45 changes: 0 additions & 45 deletions .github/workflows/ci-macos.yml

This file was deleted.

68 changes: 0 additions & 68 deletions .github/workflows/ci-windows.yml

This file was deleted.

2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,5 @@ regtests/chdman/temp
regtests/jedutil/output
/CMakeLists.txt
/samples
/plugins/inputlag

Loading

0 comments on commit ffd46c4

Please sign in to comment.