photos photos

Page personnelle de Fabien Autrel


Navigation Accueil Curriculum Vitae Publications Photos
Projets personnels Satourne Dustcream
Satourne
Introduction
Architecture
Interface graphique
Quelques captures d'écran

Introduction

Satourne est un émulateur de console de jeux Saturn produite par SEGA. La saturn est sortie en 1994 au Japon et en 1995 en Europe. Elle fut la deuxième console 32 bits de SEGA si l'on prend en compte l'extension matérielle 32X crée pour la Megadrive.
Satourne émule tous les composants de la saturn mis à part le DSP du SCSP (processeur sonore).
La saturn est constituée des composants suivants::
  • Deux Hitachi SH-2, 32 bits de type RISC à 28,6/26 MHz
  • Hitachi SH-1, 32 bits de type RISC, pilote le lecteur CDROM
  • VDP 1 et VDP2, 32 bits, pour l'affichage vidéo
  • Saturn Control Unit (SCU), comporte un DSP utilisé généralement pour des calculs géométriques
  • SCSP (Saturn Custom Sound Processor), le processeur sonore, comporte un DSP pour créer des effets (echo, reverb, flanger, etc..)
  • Motorola 68EC000, contrôle le SCSP
Ces composants sont connectés de la manièresuivante:

Saturn architecture
En observant ce dessin on comprend mieux pourquoi la saturn était réputée pour être difficile à programmer. En traçant le code de divers jeux j'ai pu constater que rares sont les jeux qui exploitent la totalité du hardware. Certain jeux n'utilisent par exemple qu'un seul des SH2 (baku baku animal par exemple).

Le hardware de la console fut décliné en une version arcade, le ST-V, qui est aussi émulé par Satourne. Cette machine utilise des cartouches comme support de jeu.

Architecture

Satourne utilise un système de plugins pour l'émulation de certaine parties de la console:
  • les contrôleurs de jeu (joypad, lightgun,etc...)
  • la lecture du support de jeu (CDROM)
  • le SCSP (l'émulation du 68EC000 est réalisée par Satourne)
  • les processeurs graphiques VDP1 et VDP2
L'émulateur comporte un debugger qui permet d'afficher le code exécuté par les SH2, le DSP du SCU et le contenu de la mémoire. Il manque encore l'affichage du code et des registres du 68EC000.
L'émulateur est écrit en C++. Le noyau de l'émulation a été pensée pour être portable. Pour l'instant il n'existe qu'une version win32 mais je travaille actuellement sur une version linux.

Interface graphique

L'interface graphique est implémentée en utilisant le GDI de windows. Aucune libraire C++ n'est employée pour l'utilisation de l'API win32 de windows.
Voici quelques captures de l'interface (version de développement non encore disponible sur le site officiel de satourne)

Fenêtre principale

main interface
Le bas de l'interface affiche la liste des périphériques compatibles avec le jeu. Dans le cas présent il s'agit de Panzer Dragoon RPG (nommé Panzer Dragoon Saga en Europe), un excellent jeu que je recommande aux fans de RPG. Ce jeu supporte un contrôleur de jeu analogique, le pad classique, le lecteur de disquette et le clavier.

Debugger

master SH2 disassembly debugger
Le debugger est surtout un outil de développement indispensable pour moi mais n'est pas très intéressant pour l'utilisateur qui veut simplement jouer.

Quelques captures d'écran

Voici quelques captures d'écran réalisée avec quelques jeux. Toutes les captures ont été faites en respectant la résolution originale du jeu. Plus bas vous trouverez des captures montrant les améliorations que permet l'utilisation de l'opengl. Le plugin graphique que j'ai développé utilise la librairie opengl pour afficher les images générées par les processeurs VDP1 et VDP2. Il est interessant de tenter de produire une image le plus fidèle possible à l'original, mais il est aussi très amusant d'essayer de l'améliorer en exploitant les capacités des cartes graphiques. Les dernières captures d'écran illustrent différentes améliorations comme l'augmentation de la résolution, le filtrage des textures et même leur remplacement par une d'autres images. Il est ainsi possible de changer partiellement l'apparence d'un jeu pourvu qu'il utilise des polygones texturés générés par le VDP1.


Fighting vipers:
shot1 shot1 shot1
Golden axe the duel:
shot1 shot1 shot1
Decathlete:
shot1 shot1 shot1
Dead or alive:
shot1 shot1 shot1
Castlevania X:
shot1 shot1 shot1
Wipeout 2097:
shot1 shot1 shot1