Le royaume de Eric Buist >> Informatique >> Problèmes marquants >> Quelques bogues résolus >> Bogues matériels résolus | ||
Me contacter | Plan du site | |
<< Quand le Plug-and-Play décide de ne pas fonctionner... | King's Quest VI se battait avec une carte son! | Ma télévision virtuelle qui a sauté! >> |
J'ajoute ce bogue afin de montrer où peut mener l'obstination en informatique. Je sais avec certitude absolue que peu pourront profiter de sa solution, car il implique un logiciel et du matériel dépassés. Il met en relation le jeu King's Quest VI de Sierra et la carte son Sound Blaster 16 avec contrôleur SCSI qui dormaient dans mon 486. Ce bogue a nécessité de la programmation pour être résolu!
Le problème se situait au niveau du support de la carte son par le jeu. Lorsque le jeu était mis en marche, tout allait bien. Alexander, le héros, apparaissait et était fin prêt à répondre aux commandes du joueur. Première étape du jeu: soulever la planche sous laquelle se trouvait des vieilles pièces de monnaie, si je me souviens bien. Ah oui, il fallait prendre la bague du prince sur la plage, mais puisque ce site ne constitue pas un walkthrough pour ce jeu dépassé, que j'ai traversé de toutes les façons possibles soit dit en passant, cela n'a pas une grande importance. Ce qui a de la valeur, c'est le son! Le bruit de la planche se faisait entendre, puis le son caractéristique du gain de points était émis par l'OPL de la carte son.
Ensuite, plus aucun son numérique ne pouvait être émis par le jeu. Seule la musique continuait de jouer correctement. Parfois, il se bloquait et il fallait alors sauvegarder sa partie puis restaurer afin de retrouver usage du son! Je pensai pendant longtemps que le problème constituait un défaut du jeu et je me suis contenté de mettre "aucun" comme pilote du son, ce qui me valait d'affreuses reproductions sonores synthétisées par l'OPL, mais au moins, les plantages cessèrent. Un jour, je suis allé chez un cousin et j'ai vu le jeu fonctionner avec sons, cela m'a mis la puce à l'oreille et j'ai voulu agir.
Je savais que le premier son était émis, mais pas les autres. Lorsque je restaurais des sauvegardes, il arrivait que j'entende un son, comme par exemple le bruit du bouclier explosant sous l'effet de la fléche de l'archer de pierre, piège mis en place par la sorcière qui avait transformé un prince en bête pour le punir. Il fallait donc qu'il existe un moyen, quel qu'il soit, de retrouver usage du son, la carte son devait causer problème, mais il devait exister un moyen de la déjouer.
Ne disposant pas d'Internet et n'ayant comme seule référence la Bible PC et un livre sur les cartes sons qui ne traitait pas de leur programmation par le DMA, il fallait que je trouve autre chose pour solutionner le problème. Un reset de l'ASP me semblait la meilleure solution, mais il fallait le synchroniser avec la fin de chaque son, ce qui nécessiterait un peu d'adresse.
Tout d'abord, je mis en place un programme qui attrapait l'interruption IRQ 9, celle du clavier, et qui démarrait King's Quest de lui-même. Lorsque j'appuyais sur une certaine touche, cela provoquait un reset manuel de l'ASP, ce qui m'a permis de me rendre compte que cela pouvait fonctionner, à condition que je le fasse lorsqu'aucun son n'était en train de jouer! Dans le cas contraire, le jeu se plantait et l'ordinateur devait être redémarré. Il fallait ainsi synchroniser le tout.
Je pensais à l'IRQ 5 que je pourrais attraper et insérer ma routine de réinitialisation là. Cette IRQ est déclenchée par la carte son lorsqu'un son se termine. Malheureusement, le jeu découpait les sons en fragments! Par exemple, si un son occupait 100k, il le cassait en deux, une partie de 64k et une de 36k, par exemple. Ce ne sont que des valeurs fictives pour expliquer, pas forcément la réalité. Le son de 64k était joué puis une IRQ 5 était envoyée que le jeu captait, envoyant un nouveau buffer audio. Toutefois, si je réinitialisais l'ASP à ce moment, j'avais des problèmes.
Il a fallu que je combine l'IRQ 5, l'IRQ 8 (horloge) ainsi qu'un accès à un port du contrôleur DMA que j'avais découvert je ne sais plus comment et qui semblait permettre de savoir si l'ASP jouait ou non. Après tous ces efforts, je suis parvenu à obtenir tous les sons du jeu! Toutefois, lorsque j'ai eu la carte son AWE32, le joujou ne servait plus à rien, tout ce que j'ai fait est devenu inutile.
Récemment, j'ai voulu rejouer à ce jeu classique. Pendant longtemps, je ne pouvais obtenir, sous Windows XP, que l'affichage des graphiques. Aucun son, à force si je pouvais avoir la musique. Je tentai de me procurer King's Quest Collections et je finis même par réussir! Malheureusement, King's Quest V et King's Quest VI, bien qu'étant pour Windows, ne fonctionnent pas du tout. Les jeux ne réagissent pas, même après réglage de compatibilité pour le 256 couleurs. J'ai heureusement peu trouver des parades pour faire fonctionner ces jeux.