Changelog:
GroovyMAME cumulative patch 2020-2022.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 #2.
Try to fix Windows build attempt #3.
Try to fix Windows build. #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.
Fix rawinput module.
Silent Switchres compile error.
Make rawinput not the default option for joysticks.
Add unfiltered bitmap scaler to allow clear fonts even with shaders enabled.
Fix rounding errors in font scaling code that caused uneven scaling at higher resolutions.
Update to upstream switchres (new rotation handling).
More rounding fixes to font scaling.
Avoid overflowing the source bitmap when scaling.
New attempt to fix overflow with average scaler.
Improve rendering of UI frames and lines in low resolutions
Improve rendering of UI – continued- fix margins of separator lines
– fix overlaping lines
– code refactoring
Correctly apply rotation after modeline adjustment.
Fix handling v_scale as float to correctly apply syncrefresh.
Update to upstream Switchres (fixes error with empty custom ranges).
Update input_rawinput.cpp
Update input_wincommon.h
Update to upstream Switchres (fixes lcd_range).
Fix Windows build.
Only save certain sliders: frame delay, vsync-offset, overclock and CRT geometry sliders.
Also save Screen Refresh Rate slider.
Update to upstream Switchres.
Rawinput improvements [star69rem]:- Workaround for devices with buggy drivers that incorrectly report having physical values when they don’t.
– Clarify code to better represent hatswitch return values (in degrees).
More rawinput improvements [star69rem]:- PlayStation triggers hack not needed anymore. Always get scaled value for physical and logical values, it turns out it’s often used for neutral states.
– Some hat switches don’t return degrees, so go back to checking for 0-7.
[Linux] Add new option -dri_device. Use to force vsync on a specificdri device, e.g. “card0”, “card1”, etc., or “auto” for automatic selection (currently it will pick the first device with a valid connector.”
Try to fix Windows workflow.
Fix Windows build.
Preliminar -video nogpu implementation. Add options -nogpu_ip and -nogpu_compression. Add lz4 compression library.
video -nogpu wip implementation using winsock2.
[nogpu] Several improvements: greater stability, logging, etc.
[nogpu] Improved stability, added interlace support.
[nogpu] Resize window when required (upon video mode switch).
Disable Switchres info logging with nogpu backend, to minimize glitches.
[nogpu] Add -nogpu_window option, to allow showing/hiding client window.
[nogpu] Change -nogpu_ prefix to -mister_ in options to avoid problems with boolean options, also use ‘-video mister’ as renderer backend name.
[nogpu] Move to generic sockets. Implement new vsync method through cmd_blit_sync.
[nogpu] Implement automatic frame delay (with fd 0). Avoid automaticfd with internal frontend.
[nogpu] Improvements to automatic frame delay timing calculations.
[nogpu] First release- Add support for Linux
– Make sleeping optional by linking it to option -sleep
– Add option -mister_fd_margin, in ms, to set a secury margin for automatic frame delay, in ms. Default is 1.5 ms
[nogpu] Properly compute pixel aspect based on option -aspect and current output resolution.
[nogpu] More fixes and improvements- Fix blinking on internal FE with lz4
– Increase lz4 buffer
– Avoid modes bigger than RGB buffer (force 640×480)
– Add bilinear filterning, linked to -autofilter
[nogpu] Add audio support.
[nogpu] Wait server response on init and do cleanup on exit.
Fix Linux build.
[nogpu] Various fixes to make Mac build possible (audio included) [djfumberger]
Fix Mac build, finally.
[nogpu] Startup and exit fixes. Skip blitting first frame, and wait afull period on exit.
Update to upstream Switchres (v2.2.0)
Add option -scale_proportional.
Workflow cleanup.
Remove pdf creating to simplify release.
[nogpu] Apply pitch correctly to non-4 multiples.
[nogpu] Upgrade to new groovymister core:- Use fpga’s lz4 decompression. Buffer is now compressed at once and
then sent, instead of streamed.
– Support lz4hc
– Support interlaced field separation on fpga, so both fields can be
sent together to avoid sync glitches.
Controlled by new option -mister_interlaced_fb
[nogpu] Add joystick input from MiSTer (-joystickprovider mister)
Add missing changes to previous commit.
[nogpu] Reset input device on osd reload.
[nogpu] Skip renderer reset upon geometry adjustments.
Fix Linux build.
Fix Linux build, second attempt.
Always update screen when syncrefresh is on, fixes wrong speed on certain games (crusnusa, etc.)
[nogpu] Inputs: add support for analogue joysticks, keyboard and mouse. Use mister as provider for -joystickprovider, -keyboardprovider and -mouseprovider.
Update to upstream Switchres (2.2.1).
Try to fix Windows build.
Update github actions with current versions.
Deprecate set-output in github actions.
Atualizações:
GroovyMAME Patch acumulado 2020-2022
Adicionado workflow de CI (Substring)
Hook preliminar do switchres (ainda não funcional)
Sincronizado com o trabalho em andamento do Switchres
Sincronizado com a biblioteca Switchres
Atualizado copyright
Adicionada uma gestão de exibição por janela
Corrigido a chamada set_monitor_aspect
Conectada a janela com o gerador de modeline
Adicionados parâmetros de switchres ao OSD do MAME e vinculação do modo de vídeo retornado pelo Switchres
Sincronizado com a versão mais recente do Switchres / implementada a função effective_orientation()
Sincronizado com o Switchres e simplificação do manuseio de rotação
Definido parâmetros apenas se um modo válido for retornado
Forçado a troca para o modo selecionado
Passado o objeto completo do monitor para o método add_display
Corrigido o envio das configurações de resolução e aspecto do MAME para o Switchres
Adicionado suporte para Linux
Sincronizado com a versão mais recente do Switchres
Implementação preliminar do drmkms
Sincronizado com o Switchres
Descontinuado o parâmetro -orientation e adicionado o parâmetro -modesetting
Removido o parâmetro -orientation do módulo Switchres
Corrigido a perda de foco da janela SDL em configurações de múltiplos monitores
Adicionados mais parâmetros do Switchres ao módulo
Sincronizado com o Switchres
Sincronizado com o Switchres
Implementada a funcionalidade -autosync
Limpeza de cabeçalhos
Atualização da configuração de vídeo corretamente após alteração do parâmetro
Tornado público o método extract_video_config no SDL para que possa ser chamado
Adicionado suporte a predefinições de LCD e autoconfiguração
Corrigido problema com a configuração de resolução LCD
Sincronizado com o Switchres
Implementada a funcionalidade -changeres (troca de modo dentro do jogo)
Removidos módulos antigos do MAME
Corrigido o caso -noswitchres no Windows
Ocultada a barra de tarefas no Windows com o parâmetro -video bgfx
Sincronizado com o Switchres
Usada a nova interface D3D9ex
Corrigido o patch do D3D9ex
Código de vblank para multi-monitor, configurado para a configuração padrão de tela única
Corrigido o código do slider de salvar/carregar devido a mudanças na versão mais recente
Adicionado o controle de deslocamento de vsync (vsync_offset)
Implementado hack para permitir vsync de múltiplos monitores baseado no índice da tela SDL (não válido para múltiplas GPUs)
Desabilitado o modo de fullscreen do SDL com o SR’s modesetting habilitado. Previne que o SDL reverta a resolução já configurada pelo SR quando o novo modo não aparece na lista de modos do SDL devido à máscara de taxa de atualização.
Sincronizado com o Switchres
Usado o novo tipo screen_device_enumator.
Não chamar update_resolution no OSD do Windows porque o WM_DISPLAYCHANGE só retorna resolução para o monitor primário. Apenas o monitor->refresh() é necessário.
Exibido o modo Switchres na caixa de informações da máquina
Adicionada implementação de inserção de quadro negro
Definido valores padrão de opções para a maioria dos casos
Corrigido o fluxo de trabalho de compilação do Windows para garantir que todas as pastas necessárias sejam incluídas. Adicionada o caminho raiz ao 7z. (Substring)
Adicionado uma precisão decimal para o controle de overclock de CPU [removido, adicionado à versão base desde a 0.259]
Corrigido o script de lançamento do 7z no Windows
Sincronizado com o MAME 0.228
Garantido que um display físico exista ao mostrar informações do SR
Aplicado o modo SR a todos os displays no D3D
Corrigido o maximizar da tela múltipla (definido a primeira janela como primeiro plano)
Sincronizado com o Switchres
Contabilizado corretamente a escala de taxa de atualização e a inserção de quadro negro com atraso de quadro
Sempre usado SDL_WINDOW_FULLSCREEN_DESKTOP para permitir testes KMS.
Corrigida atualização da configuração de vídeo do jogo após a inicialização da máquina
Sincronizado com o Switchres
Corrigido o código dos sliders após a reestruturação na versão base
Removido a configuração de triplebuffer na interface
Implementada renderização assíncrona no D3D9ex nativo da Windows
Implementada nova opção -sync_mode (0-3) para permitir diferentes esquemas de v-sync na interface OpenGL do Linux
Adicionado glFinish(), corrigindo a sincronização no amdgpu
Sincronizado com o Switchres
Adicionados novos switches de compilação para Linux SR_WITH_XRANDR, SR_WITH_KMSDRM
Adicionada nova opção -syncaudio para permitir/desabilitar o reamostramento de áudio com -syncrefresh
Adicionada nova opção -autofilter para ativar automaticamente o filtro com distorção fracionada ou entrelaçada.
Adicionada nova opção -autostretch para definir automaticamente o modo de escalonamento (inteiro ou fracionado) baseado no modo de vídeo selecionado
Aplicado corretamente o parâmetro pixel_precision
Adicionada nova opção -interlace_force_even, do Switchres upstream
Definido nível de log correto
Limpeza da interface D3D9ex
Definido valores válidos para sync_mode de 0-4, com 0 como Swap(1) + glFinish.
Corrigido valor máximo para sync_mode
Implementada -autosync de forma diferente no Windows e Linux (situação infeliz até que a troca assíncrona seja possível no OpenGL).
Definido sync_mode padrão para 2.
Corrigido o crash no D3D9Ex quando -switchres está desabilitado ou quando nenhum modo de vídeo é encontrado.
Tentativas de correção da compilação no Windows.
Tentativas de corrigir falhas no Windows.
Tentativas de corrigir falhas na compilação do Windows #4
Sincronizado com o Switchres
Corrigido o código do slider de salvar/carregar.
Aplicado corretamente -keepaspect após a reestruturação da versão base.
(Windows) Corrigido bug que causava execução em velocidade dobrada de jogos que usavam modos entrelaçados.
Corrigido bug que causava travamento da tela em modos entrelaçados.
Corrigido bug que causava uma exceção ao salvar configurações após alterar pela interface.
Feito com que a configuração de -vsync_offset não seja propagada entre diferentes jogos quando iniciados pela interface.
Corrigido problemas de localidade com floats.
Sincronizado com o Switchres
Aviso silencioso do GCC.
Adicionado suporte ao modo kmsdrm.
[sdl2] Atualizada a dimensão do monitor após a troca inicial de modo para o aspecto da interface.
[sdl2] Considerado um caso de uso futuro para -nomodesetting.
Sincronizado com o Switchres
[sdl2] Corrigido a alternância entre tela cheia (evitando recriação da janela), suporte à troca de modos no jogo e restauração correta do modo desktop com -nomodesetting.
Sincronizado com o Switchres
Sincronizado com o Switchres
Permitido que o MAME leia a configuração do SR do switchres.ini. Tornado opcional por meio de uma nova opção booleana -switchres_ini.
Sincronizado com o Switchres
Separadas as chamadas add e init display para atender ao design do SR.
[sdl] Passado o identificador da janela SDL para a inicialização da exibição. Deletado o gerenciador de exibição antes de destruir a janela, pois precisamos do seu fd para a limpeza.
[Windows] Adaptado o código da janela para os novos métodos add/init display.
Produzido o patch automático GM diff na compilação [Substring]
Tentativa de correção das builds do github (documentação).
Sincronizado com o Switchres
Sincronizado com o Switchres.
Sincronizado com o Switchres.
Corrigido um erro de proporção.
Sincronizado com o Switchres.
Sincronizado com o Switchres.
Outro ajuste na computação do fator de escala, esperamos que seja o último.
Melhorado o desempenho de desenho do texto da interface.
Aplicado corretamente a rotação após o ajuste do modeline.
Corrigido o manuseio do v_scale como float para aplicar corretamente o syncrefresh.
Sincronizado com o Switchres (corrige erro com faixas personalizadas vazias).
Atualizado o código do input_rawinput.cpp
Atualizado input_wincommon.h
Sincronizado com o Switchres (corrige lcd_range).
Corrigida a falha de compilação no Windows.
Apenas certos sliders são salvos: atraso de quadro, deslocamento de vsync, overclock e sliders de geometria CRT.
Também salvo o slider de Taxa de Atualização da Tela.
Sincronizado com o Switchres.
Melhorias no rawinput [star69rem]:
Correção para dispositivos com drivers problemáticos que relatam valores físicos incorretos.
Código mais claro para retornar valores de hat switch (em graus).
Mais melhorias no rawinput [star69rem]:
Hack de gatilhos PlayStation não é mais necessário.
Sempre obtido valor escalado para valores físicos e lógicos.
Alguns hat switches não retornam graus, então voltou-se a verificar valores de 0-7.
[Linux] Nova opção -dri_device. Fornece vsync em um dispositivo dri específico, por exemplo, “card0”, “card1”, etc., ou “auto” para seleção automática (atualmente seleciona o primeiro dispositivo com um conector válido).
Tentativas de correção do fluxo de trabalho no Windows.
Corrigido a compilação no Windows.
Implementação preliminar de -video nogpu. Adicionados parâmetros -nogpu_ip e -nogpu_compression. Biblioteca de compressão lz4 adicionada.
Implementação do video -nogpu: maior estabilidade, logging, etc.
Melhorias para estabilidade, suporte a entrelaçamento.
Ajustada a janela ao realizar troca de modo de vídeo.
Desativado o log de informações do Switchres com o backend nogpu, para minimizar glitches.
Adicionado suporte a joysticks via MiSTer (-joystickprovider mister)
Melhorias diversas e correções de estabilidade.
[MiSTer] Adicionada entrada de joystick, teclado e mouse.
Comentários