recherche de la génèse de Sorcery et Vampire sur Thomson
Publié : 29 mars 2023 15:35
par nouvelhermes
Bonjour, cela fait suite à un post qui a été déplacé vers la poubelle. (Dommage, il y a des infos intéressantes dedans, même s'il est mal nommé).
Je sais que je vais avoir des remarques de la part de spécialistes Thomson, mais tout le monde n'est pas expert en Thomson.
La raison du post est de voir comment les éditeurs ont géré à l'époque les différences de comportement entre TO et MO. Il ne s'agit absolument pas de prouver que la conversion est aisée ni même possible (les spécialistes de R-Type vont me tomber dessus).
Donc j'ai commencé le désassemblage de Vampire puis de Sorcery (les deux programmes se ressemblent beaucoup).
t
Les différences entre les deux versions (des programmes cela s'entend) ne sont pas si nombreuses, en voici la liste :
- La MEM utilisateur commence à $6100 pour TO, $2100 pour MO.
- Quelques variables du moniteur (principalement pour le son), et les variables systèmes (pour l'écran et la lecture des manettes)
- Les appels moniteurs au nombre de quatre : PUTC, GETC, KTST, NOTE (les manettes soturent lues directement sans faire appel au moniteur).
- Le plus important (dans ces programmes), mais auquel on pense le moins, la gestion de la partie couleur de la mémoire écran.
Pour le reste, les versions MO et TO se ressemblent beaucoup, il doit peut être y avoir quelques substilités de ci de là (c'est ce que j'appelle la différence entre "en gros" et "dans le détail").
Maintenant quelques remarques :
PUTC n'est utilisé que pour peindre l'écran en noir et l'effacer, mais n'est utilisé pour écrire du texte.
Toutes les écritures à destination de la mémoire écran directement sans passer par un quelconque appel du moniteur.
On remarquera dans les deux programmes, le même système de gestion de tuiles (unicolores pour du 16x16 pixels). On peut considérer que l'on a un véritable moteur de jeux vidéo.
Je fournis le début du désassemblage au cas où cela intéresserait quelqu'un (version ida pro 5.2)
Maintenant quelques questions :
Les deux programmes sont très similaires, est-ce que quelqu'un sait si c'est bien la même équipe qui a écrit les deux programmes, ou l'un des deux été acheté, et dans quel ordre ont été écrit les programmes ?
Les deux programmes sont très similaires, y compris dans le programme objet (de très nombreuses fonctions identiques, et programme principal très similaires), donc l'un des deux est quasi certainement le dérivé de l'autre.
Re: différences entre MO et TO : étude de cas
Publié : 29 mars 2023 16:21
par Ythunder
Ce qui m'intrigue, c'est que ce ne sont pas les mêmes éditeurs, Virgin Games d'un côté, et Infogrames de l'autre.
Le même moteur de jeu, dans ces années là entre 2 éditeurs n'ayant visiblement pas de liens, je trouve ça bizarre, mais ce n'est qu'un avis.
Re: différences entre MO et TO : étude de cas
Publié : 29 mars 2023 16:29
par nouvelhermes
Quand on désassemble les deux programmes, on trouve énormément de similitudes, trop pour que les deux programmes ne soit totalement indépendants.
Par exemple : les deux programmes ont le même point d'entrée ($2143 pour MO, $6143 pour TO).
Attention : il ne s'agit pas de Virgin mais de FIL, mais en fait on retrouve plus des méthodes de Infogrames dans le LOADER (à ma connaissance, FIL a très peu employé le procédé), la page de présentation est beaucoup plus élaborée que le standard FIL (une simple page grise avec le nom du jeu dessus), la définition d'une nouvelle pile (FIL s'est souvent contenté de la pile définie par le BASIC), etc... me font penser FIL a dû récupérer les routines chez Infogrames, mais là il ne s'agit que d'une suposition, je laisse parler les spécialistes.
Re: différences entre MO et TO : étude de cas
Publié : 29 mars 2023 16:33
par __sam__
Pour le reste, les versions MO et TO se ressemblent beaucoup
Oui, le gros du code c'est de l'asm 6809
A noter:
les éditeurs ne sont pas les mêmes : Sorcery/Virgin vs Vampire/Infogrames
La routine de sprites de Sorcery laisse des traces de couleur en RAMB qui se retrouvent sur les sprites qui repassent au même endroit par la suite
Vampire est un jeu original Thomson alors que Sorcery est un portage.
Vampire est sorti après (1986) la naissance de Sorcery (1984).
Sorcery FIL ?
Pour moi c'était Virgin (boite noire plutot carré, différente comme TNT par exemple)
J'ai regardé avant de poster sur le site DCMOTO : Virgin
Y a -il une subilité qui m'a échappé depuis 1986 ?
On a peut être les auteurs dans Sorcery, mais il faudrait lancer le jeu.
EDIT : Sam a donc répondu juste avant avec d'ailleurs une excellente réponse, Vampire est un jeu original Thomson et Sorcery un portage.
Mais qu'estce qui t'as fait penser que le jeu avait été édité par FIL ? Parce que les boites FIL quand même, ça n'a rien à voir (j'adore ces boites !)
Re: différences entre MO et TO : étude de cas
Publié : 29 mars 2023 17:04
par nouvelhermes
On est tout à fait d'accord qu'il s'agit de l'ASM 6809, mais s'il n'y avait aucun lien, tu crois que les "tuiles" seraient dessinées de la même façon, que la gestion du temps se ferait de la même façon (écriture directe en MEM video), que la gestion du score se ferait de la même façon, que la fin serait détectée exactement de la même manière, et en rentrant encore plus dans les dtétails après désassemblage, le moteur du jeu est quasiment identique.
Un exemple parmi d'autres :
Tu pense qui s'il n'y a avait strictement aucun lien en regardant les sous-programmes suivants :
(pour l'instant c'est en cours de désassemblage, les noms n'ont pas forcément de signification)
Il n'y a pas quelque chose qui saute aux yeux ?
Re: différences entre MO et TO : étude de cas
Publié : 29 mars 2023 17:05
par nouvelhermes
Ythunder a écrit : ↑29 mars 2023 16:39
Sorcery FIL ?
Pour moi c'était Virgin (boite noire plutot carré, différente comme TNT par exemple)
J'ai regardé avant de poster sur le site DCMOTO : Virgin
Y a -il une subilité qui m'a échappé depuis 1986 ?
On a peut être les auteurs dans Sorcery, mais il faudrait lancer le jeu.
EDIT : Sam a donc répondu juste avant avec d'ailleurs une excellente réponse, Vampire est un jeu original Thomson et Sorcery un portage.
Mais qu'estce qui t'as fait penser que le jeu avait été édité par FIL ? Parce que les boites FIL quand même, ça n'a rien à voir (j'adore ces boites !)
Ben c'est simple, ils ont laissé leur empreinte sur la version MO5, avec leur traditionnelle page grise.
Effectivement Vampire est un jeu original Thomson, mais clairement avec des règles pompés de Sorcery (en particulier les tableaux fixes et surout le personnage qui vole sujet à la pesanteur et à la noyade, gestion du temps similaire).
Mais quand on regarde le désassemblage, les similitudes sont vraiment visibles.
Re: différences entre MO et TO : étude de cas
Publié : 29 mars 2023 17:09
par Ythunder
Ah mais c'est parce que moi je tourne sur version TO7-70
il faudra que je lance la version MO5 sous l'émulateur, ça m'intrigue !
Re: différences entre MO et TO : étude de cas
Publié : 29 mars 2023 17:17
par nouvelhermes
Il faut regarder le fichier SORCERY.BAS et ENTETESO.BIN (version MO5)
Vampire et Sorcery : même (moteur de) jeu ?
Publié : 29 mars 2023 17:25
par __sam__
nouvelhermes a écrit : ↑29 mars 2023 17:04
On est tout à fait d'accord qu'il s'agit de l'ASM 6809, mais s'il n'y avait aucun lien, tu crois que les "tuiles" seraient dessinées de la même façon
Ben ya pas 36 façon de dessiner les sprites
que la gestion du temps se ferait de la même façon (écriture directe en MEM video)
Je ne vois pas ce que tu veux dire. Dans sorcery le temps est marqué par l'effacement progressif du grimoire comme dans la version originale. Dans Vampire c'est la lune qui disparait.
que la gestion du score se ferait de la même façon
Ben ya pas 36 façon de faire non plus.
(..) et en rentrant encore plus dans les dtétails après désassemblage, le moteur du jeu est quasiment identique.
Mais comme je n'ai pas IDA je ne peux juger des similarités.
Un exemple parmi d'autres :
(...)
Il n'y a pas quelque chose qui saute aux yeux ?
Avec l'asm sous les yeux oui, ya un air de famille. Dommage qu'on en sache pas plus qui est le porteur de Sorcery (m'est avis que c'est un truc préliminaire vu les traces de couleur qu'il laisse en RAMB).
NOTEs:
La version ZX spectrum de 1984 a aussi tendance à mal gérer les couleurs laissées par les sprites précédemment passés par là
Dans tous les cas, on peut être content que les graphismes aient bien évolués entre la version ZX et la version Thomson.
En fait c'est pas tant la version TO ou MO5 qui importe ici que les similarités entre deux jeux. Si je devais me laisser tenter dans les spéculations je dirais que Sorcery a été porté de spectrum et a hérité de sa mauvaise gestion des couleurs (c'est lent, ca clash, ca tache les sprites suivants.). Les graphismes ont aussi été revus sur thomson. Plus tard ces routines on été optimisée, et peut-être réutilisées ailleurs en effet. En tout cas la graphiste de Vampire a mi sa pâte dans quelques jeux Infogrames.
Sur logicielsmoto (et la wiki) le jeu est incorrectement attribué à Infogrames...
Sur cette photo d'EBay, sur la K7 il est Indiqué ARIOLASOFT (en plus de Virgin).. le mystère s'épaissit
On retrouve des similitudes, en particulier le fait qu'on fait appel à un compteur qui sert de pointeur directement sur la mémoire écran.
Pour les tuiles (et les sprites peut-être), on utilise ici directement des registres 16 bits avec une seule couleur (Infogrames dans la plupart de ses jeu a utilisé une autre routine avec des registres sur 8 bits). Très peu de jeu utilise une commande PRINT maison, mais utilisent pour la plupart la routine PUTC standard (même chez Infogrames).
Re: différences entre MO et TO : étude de cas
Publié : 29 mars 2023 18:01
par __sam__
Pour le score c'est très simple :
../..
Fonctions identiques à l'octet près; même utilisation de la pile
Oui, c'est une addition de la valeur X à une globale avec saturation à 65 000. Il n'y pas 36 façons de faire cela efficacement sur 6809.
Pour le temps :
C'est un décompte à partir de 600. Ca doit être basé sur le timer qui gère le clignotement du curseur (période=100ms), ce qui fait que ce code décompte les minutes.
Note: pour le code essaye d'utiliser les balises "code", ca se lit mieux.
Vampire est un jeu d'action-aventure développé et édité par Infogrames en 1986 sur Thomson MO5, TO7 et TO9.
Ne croyez vous pas que ça peut expliquer une certaine ressemblance ?
Re: différences entre MO et TO : étude de cas
Publié : 29 mars 2023 18:25
par hlide
Alors sur PC (moderne, pour le travail), j'ai eu droit à des surprises : en tentant de déboguer une routine sous Visual Studio, je me suis retrouvé dans une autre routine avec des noms différents. Un moment WTF jusqu'à ce que je réalise qu'en fait le compilateur avait fait une optimisation globale et fusionné deux routines à la sémantique totalement différente. Ça m'avait scotché. Tout ça pour dire que ce que l'on croit différent en algorithme dans sa forme source ne l'est pas dans sa forme binaire où la sémantique disparaît. Donc comparer du binaire n'implique pas un source identique si le binaire est identique.
Sorcery : Le jeu a été porté sur ordinateur Thomson par Infogrames (1986).
C'est une erreur dans la base de donnée Logicielsmoto. Yoann a corrigé, mais du coup la wiki est invalide. En fait Sorcery a eu 36 sortes d'éditeurs et même parfois plusieurs dans la même année pour un même pays et une même machine (Par exemple, en espagne, distribué par Discovery Informaic en 86, puis Dro Soft en 1989, puis Topsoft (pas de dates) - source trouvée par Yoann).
L'auteur d'origine était un tout jeune de 15ans et a été codé en 4 semaines (info trouvée par Bentoc). Vu le nombre de ports, ce jeu a du avoir rapporté pas mal à l'éditeur d'origine.