Usando as duas CPUs do Sega Saturn na prática!
fevereiro 16, 2025 | by Luiz Nai

Se você cresceu nos anos 90 e acompanhou a geração 32-bits, provavelmente já ouviu falar que o Sega Saturn é um verdadeiro pesadelo para programar, principalmente por conta das suas duas CPUs SH2. Sempre vi isso quase como uma espécie de “magia negra”, mas agora que estou desenvolvendo um beat ‘em up para o Saturn baseado em Dragon Ball, decidi testar na prática: será que é realmente tão complicado assim?
A resposta é um claro sim. As duas SH2 compartilham o mesmo barramento, o que significa que você precisa gerenciar manualmente o acesso à memória para evitar concorrência entre elas. Para entender qual seria a melhor abordagem, testei três métodos diferentes no meu projeto:
Métodos testados
- Usando apenas uma CPU
- Distribuindo as tarefas entre as duas CPUs de forma síncrona (revezamento)
- Implementando paralelismo real entre as duas CPUs
Cada método trouxe vantagens e desvantagens, que detalho a seguir:
Usando apenas uma CPU
Vantagens:
- Fácil de programar
- Baixo consumo de memória
Desvantagens:
- A CPU fica sobrecarregada
- Pode causar slowdown quando há muitos cálculos
Distribuindo as tarefas entre as duas CPUs de forma síncrona (revezamento)
Vantagens:
- Separação de código: a CPU master foca na lógica e a slave na renderização
- A renderização não interfere nos cálculos
- Pouco uso de memória
Desvantagens:
- Ainda não é um paralelismo real
Fazendo paralelismo real entre as duas CPUs
Vantagens:
- A master processa cálculos enquanto a slave desenha, utilizando double buffering
- Melhor aproveitamento das duas CPUs
- Execução paralela de verdade
Desvantagens:
- Maior consumo de memória
- Código mais complexo
No vídeo abaixo, mostro na prática como cada um desses métodos funciona, explicando com gráficos, código e demonstrando o desempenho do jogo em cada abordagem.
RELATED POSTS
View all