memoriapixel.com

Usando as duas CPUs do Sega Saturn na prática!

fevereiro 16, 2025 | by Luiz Nai

thumb_saturn_cpus
Curtiu? Compartilhe com a galera e espalhe a nostalgia!

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

view all