Changelog:
Save State Tweaks (#77)Started as an attempt to fix save state in DCA3. Didn’t achieved that, but a bunch of tweaks.
[holly] Some registers
Notes
Arm7 Update (#78)Update arm7 lib, adjusting JIT (u32 read function now do the rotate on unaligned reads)
Fix #75
[sh4] Remove some error prone global state
Test fix
Move HLE bits out of the main GDROM impl
Extend FastMem to AICA RAM (#79)Untested on Linux!
Update Readme.md
[renderer] Fix and allow async pipeline creation.Creation itself still takes 1 second. This is bad…
Re-introduce a no speed limit mode (without sound output)
–no-realtime CLI argument
[sh4] Small pref store queue operation optimisation
Notes
[sh4] (Experimental) JIT: Allow inlining for backward inconditional jumps (bra).
Merge branch ‘main’ of https://github.com/Senryoku/Deecy into main
Cleanup build.zig
Some cleanup
Pre-Sort Mode (#81)* Fix 32bit path to texture memory
* Basic Region Array parsing (actually only using the first one for now)
* Support for pre-sorted translucent pass
More random cleanups
Quick way to dump the DC state for performance analysis
Timer/Scheduler Rewrite (#82)* Manager sh4 timers using the global scheduler
* Refactor scheduler.
* Manage SPG interrupt using the scheduler
Woops
[sh4] JIT: Micro cleanup
[sh4] JIT: Emit small backward jumps when possible
[sh4] JIT: Emit rel8 forward jump when absolutely safe.This is typical of unconditional jumps over memory acccess fallbacks.
Fix interpreter_perf test compilation
Avoid some calls to sh4 disassemble
[sh4] JIT: Avoid 0 cycle blocks
[renderer] Increased size of StripMetadata buffer.DoA2 needs a little bit more than 8 * 4096 * @sizeof(StripMetadata)
[renderer] Use extractBits for readability
[renderer] Upload all pre-sorted polygons indices at once
[gdrom] Removed internal scheduler
Fix compilation with JIT instrumentation
[sh4] JIT: Catch cache misses in a special handler sitting at offset0 of the executable buffer.
[sh4] JIT: Really disable instrumentation…
[arm] JIT: Apply recent refactor/optimisation from the sh4 JIT
[sh4] JIT: Micro tweaks
[sh4] JIT: Embed cycle count in the block
[ui] Give priority to imgui over keyboard shortcuts
[ui] Simple notification system
Disc: Safer PVD extraction
[ui] Better error handling
[renderer] Update and move FB writeback experiment to renderer.This is enough for Toy Commander pause screen, but not for Grandia II battle transition. The effect needs a (very expensive) tight synchronisation, and probably some other fixes (doesn’t look right even when fully synchronous right now). Not sure it is worth pursuing.
Fix GDROM data queues deserialization
Remove warning for reading from/writing to the texture memory 32bit access path
[sh4] Experiment: Generate unique function for each instruction at comptime for the interpreter. Performance gain is appreciable, but compile time are way to long to enable this by default (especially since the JIT is in a good place currently)
[sh4] Restore SSE config after loading a save state.
Update publish.yml
Update dependencies
[ui] Renamed stop to pause; Add actual stop (‘power off’)
[aica] Reset arm7
[ui] Small polish
[arm] Avoid potential integer underflow
Startup sequence polish.Untested on Linux.
[x86_64] Even more conservative jmp rel8 optimisation.This was producting too large (>128 bytes) forward jumps on Linux. Not sure why.
[arm] JIT: Fix invalid caller-saved register usage.I guess I was getting very lucky on Windows?…
[ui] Safer ARM JIT toggle
[renderer] Safer TA Lists handlingStill pretty janky
[arm] JIT: Replace broken implementation of handle_single_data_transfer
Improve virtual address space cleanup
Fix ARM JIT toggle
Fix Windows compilation
Fix unrecoverable error display.
Bump versionDoesn’t mean much.
Atualizações:
Ajustes de Save State (#77)
Começou como uma tentativa de corrigir o save state no DCA3. Não alcançou isso, mas fez vários ajustes.
[holly] Alguns registros
Notas
Atualização ARM7 (#78)
Atualização da biblioteca ARM7, ajustando o JIT (função de leitura u32 agora faz a rotação em leituras desalinhadas).
Corrige o #75
[sh4] Remover alguns estados globais propensos a erros
Testar correção
Mover bits HLE para fora da implementação principal do GDROM.
Estender FastMem para RAM AICA (#79)
Não testado no Linux!
Atualizar Readme.md
[rederer] Corrigir e permitir criação assíncrona do pipeline
A criação em si ainda leva 1 segundo. Isso é ruim…
Reintroduzir um modo sem limite de velocidade (sem saída de som)
Argumento de linha de comando –no-realtime
[sh4] Pequena otimização na operação de fila de armazenamento pref
Notas
[sh4] (Experimental) JIT: Permitir inlining para saltos incondicionais para trás (bra).
Mesclar branch ‘main’ de https://github.com/Senryoku/Deecy para o main.
Limpeza do build.zig
Algumas limpezas
Modo Pre-Sort (#81)
Corrigir caminho de 32 bits para memória de textura
Análise básica da região (na verdade, só usando a primeira por enquanto)
Suporte para passagem translúcida pré-classificada
Mais limpezas aleatórias
Forma rápida de despejar o estado do DC para análise de desempenho.
Reescrita de Timer/Scheduler (#82)
Gerenciar temporizadores sh4 usando o agendador global
Refatoração do agendador.
Gerenciar interrupção SPG usando o agendador
Ops
[sh4] JIT: Micro limpeza
[sh4] JIT: Emitir pequenos saltos para trás quando possível
[sh4] JIT: Emitir salto rel8 para frente quando absolutamente seguro.
Isso é típico de saltos incondicionais sobre fallback de acesso à memória.
Corrigir compilação do teste interpreter_perf
Evitar algumas chamadas ao desassemblador sh4
[sh4] JIT: Evitar blocos de 0 ciclos
[renderer] Aumentar o tamanho do buffer StripMetadata.
DoA2 precisa de um pouco mais de 8 * 4096 * @sizeof(StripMetadata).
[renderer] Usar extractBits para maior legibilidade
[renderer] Enviar todos os índices de polígonos pré-classificados de uma vez.
[gdrom] Remover agendador interno
Corrigir compilação com instrumentação JIT
[sh4] JIT: Capturar falhas de cache em um manipulador especial situado no deslocamento 0 do buffer executável.
[sh4] JIT: Realmente desabilitar instrumentação…
[arm] JIT: Aplicar refatoração/otimização recente do JIT sh4
[sh4] JIT: Micro ajustes
[sh4] JIT: Embutir contagem de ciclos no bloco
[ui] Dar prioridade ao imgui sobre os atalhos de teclado
[ui] Sistema de notificação simples
Disco: Extração de PVD mais segura
[ui] Melhor tratamento de erros
[renderer] Atualizar e mover experimento de gravação de FB para renderer.
Isso é suficiente para a tela de pausa de Toy Commander, mas não para a transição de batalha de Grandia II. O efeito precisa de uma sincronização muito apertada (muito cara) e provavelmente algumas outras correções (não parece certo, mesmo quando totalmente síncrono agora). Não tenho certeza se vale a pena continuar.
Corrigir desserialização de filas de dados GDROM
Remover aviso de leitura/gravação no caminho de acesso de memória de textura de 32 bits
[sh4] Experimento: Gerar uma função única para cada instrução em tempo de compilação para o interpretador.
O ganho de desempenho é apreciável, mas os tempos de compilação são muito longos para habilitar isso por padrão (especialmente já que o JIT está em um bom lugar atualmente).
[sh4] Restaurar configuração SSE após carregar um save state.
Atualizar publish.yml
Atualizar dependências
[ui] Renomear “stop” para “pause”; Adicionar “stop” real (‘desligar’)
[aica] Resetar ARM7
[ui] Pequenos polimentos
[arm] Evitar possível subfluxo de inteiro
Polimento na sequência de inicialização. Não testado no Linux.
[x86_64] Mais otimização conservadora do jmp rel8.
Isso estava produzindo saltos para frente muito grandes (>128 bytes) no Linux. Não sei por que.
[arm] JIT: Corrigir uso inválido de registrador salvo pelo chamador.
Acho que estava tendo muita sorte no Windows?…
[ui] Alternância mais segura do ARM JIT
[renderer] Manuseio mais seguro das listas TA
Ainda está bem instável
[arm] JIT: Substituir implementação quebrada de handle_single_data_transfer
Melhorar a limpeza do espaço de endereços virtuais
Corrigir alternância do ARM JIT
Corrigir compilação no Windows
Corrigir exibição de erro irrecuperável.
Atualizar versão
Isso não significa muito.
Comentários