Lisez bien la FAQ. Pour poster un message ou poser une question, vous devez être enregistré. Vous n'êtes pas obligé d'être connecté pour lire les messages et voir les contenus.
Nous espérons que vous trouverez vos réponses ici, et n'hésitez pas à participer.
Bonne visite !
Sur ces forums, il est possible d'aborder n'importe quels sujets, de façon sérieuse ou pas !
Afin de préserver son harmonie et éviter les débordements, nous avons établi un ensemble de règles très simples que nous vous demandons de respecter.
1) Les thèmes suivants ne doivent jamais être abordés: La politique, La religion, La haine raciale, La pédophilie. Faites appel à votre bon sens pour éviter tout autre sujet susceptible de provoquer une polémique trop violente.
2) Ce forum est destiné à l'Abandonware (jeux a l'abandon) et le jeu vidéo. Les discussions ou liens vers un contenu illégal (piratage, désinformation, complotisme...), ou vers des contenus adultes, financiers, religieux... seront systématiquement effacés.
3) Ne publiez pas d'images dans vos messages qui pourraient choquer les autres visiteurs (rappel, le public peut être très jeune).
4) Lorsque vous lancez un sujet, veillez à ce qu'il soit dans le forum approprié (ne faites pas par exemple une requête dans le forum Discussion générale / Le bar des amis).
5) Il est souhaitable de ne pas faire dévier un sujet, ne serait-ce que par respect pour celui ou celle qui a lancé la discussion.
6) Avant de poser une question d'ordre (technique, requêtes...), assurez-vous qu'elle n'ait pas déjà été posé via la recherche.
6) Nous détestons le SPAM et le Flood ! Évitez donc de poster des messages inutiles et de façon répétée.
7) Peace and Love ! Les forums sont un endroit de détente, amusez-vous, ne vous prenez pas la tête inutilement en public.
8) Les administrateurs et modérateurs sont présents pour s'assurer que les règles et les personnes soient respectées. Leurs décisions sont elles-mêmes à respecter.
9) Ce forum n'est pas un téléphone portable ! Un forum est un lieu où on prend le temps, donc évitez le langage "texto/SMS". De plus, vos messages ne sont pas limités à 160 caractères, alors s'il vous plait, écrivez correctement ! Clairement, on ne va pas vous tomber dessus pour un "s" oublié ou pour un accord incorrect, mais pas de "g chrché c je pandan dé mwa"! Copiez-collez votre message dans Word pour profiter du correcteur orthographique, au besoin.
Ces règles sont très importantes, merci de les respecter ! En cas de non-respect, vous pourrez recevoir un avertissement, ou en fonction de la faute, être banni temporairement, voir définitivement du forum.
Merci à vous et bonnes discussions
(suite de la discussion née dans le topic sur Le Maître des âmes)
Grand fan de Sorcery+ depuis sa sortie (1985), je me suis amusé à le fouiller avec un éditeur hexa/ascii il y a une dizaine d'années quand j'y ai pas mal rejoué sous émulateur avec mon précédent PC. J'y ai trouvé quelques petites choses cachées. J'ai découvert par exemple qu'en écrivant certains mots (quand on inscrit son nom au tableau des High Scores) on avait droit à une réponse en quelques mots (en écrivant par exemple "wank" (qui signifie "se branler") on obtenait en réponse "Do it yourself" ) et d'autres allusions et private jokes des programmeurs. (Ce truc existait déjà dans le 1er Sorcery, mais se limitait à une seule private joke quand on écrivait les initiales d'un des programmeurs)
Mais il y a un autre truc qu'on peut lire en ascii dans le code, un truc que je n'ai jamais lu dans le jeu : "Cheat!...but you won't get far". Ca doit à mon avis correspondre à ce qui s'affiche quand on tape un cheat code... mais ce dernier reste totalement inconnu. C'est ce mystère que j'aimerais éclaircir.
(Je connais le cheat code de la (mauvaise) version 16bits (Amiga/ST, sortie 3 ans après) mais il n'a à mon avis rien à voir avec cet éventuel cheat code inconnu sur CPC. (je l'ai testé sur la version CPC et ça n'a rien donné))
(le moyen le plus simple de voir de quoi je parle (phrase ascii), pour ceux que ça intéresse, est de lancer le jeu sur Caprice (émulateur CPC), de sauvegarder un snapshot, et de l'éditer avec par exemple Hex Workshop)
Pour Steff :
Pour joystick > clavier sur Caprice32, voir section 4.3 :
Dernière modification par GT400, 15 janvier 2011, 12h42.
As the mist clears, the eerie image of a forest forms in front of you. To the east, a vast plain extends towards the horizon. Westward howewer, in the thick of the forest, a thousand pairs of eyes pierce the mist, glaring despondently back at you.
Quand on me demanda de chercher un "cheat mode" apparemment inconnu pour un jeu de plus de 25 ans, je fus pour le moins surpris : pensez donc, depuis tout ce temps, avec les émulateurs qui permettent d'accéder au code Z80 du jeu, personne n'avait trouvé quoi que ce soit ? Et effectivement, après de multiples recherches sur Internet, je ne pus que constater que rien ne semblait exister à ce sujet !
Pourtant, grâce à une rapide analyse du code Z80 (encore merci à un MESS Dev de m'avoir fourni le désassemblage complet du jeu parce que je n'avais pas suffisamment de temps la semaine dernière pour tout installer et configurer chez moi), c'était facile de voir en quoi consistait le "cheat mode". Puis j'installai tout lundi soir pour tester le jeu sous MESS (équipé d'un debugger digne de ce nom et que je maîtrise plus que bien puisque c'est aussi celui que j'utilise pour MAME), je récupérai certaines documentations Amstrad, je vérifiai les différents tests et tout fut réglé très rapidement.
Enfin presque ... Parce que c'est bien simple de tout comprendre, encore faut-il pouvoir l'expliquer à ceux qui sont intéressés par la chose, mais qui ne sont pas forcément capables (sans vouloir offenser personne) de comprendre "nativement" le code Z80 ! Et donc au bout du compte, le plus long de cette intéressante requête fut de commenter les routines clés ... C'est ce que vous allez maintenant lire dans ce message ...
On commence tout d'abord avec la routine "principale" (appelée au lancement d'une partie avec le bouton du joytick) :
Code:
72B0: FD 36 57 00 ld (iy+$57),$00
IY valant 0x6800, on met 0x00 en 0x6857 (première partie du jeu : sauver les 8 sorciers).
72B4: FD CB 58 7E bit 7,(iy+$58)
72B8: 28 4B jr z,$7305
On teste le contenu de 0x6858 : si c'est 0x00, on passe au jeu.
72BA: 3E 3E ld a,$3E
72BC: CD 1E BB call $BB1E
72BF: 28 44 jr z,$7305
On teste le clavier, et plus spécifiquement la touche 'C' (comme "cheat" - quelle surprise !) : si c'est 0x00 (non enfoncée), on passe au jeu.
72C1: FD 36 57 FF ld (iy+$57),$FF
On met 0xff en 0x6857 (deuxième partie du jeu : récupérer les 4 coeurs).
72C5: 21 17 05 ld hl,$0517
72C8: CD 75 BB call $BB75
On positionne le curseur (5ème colonne, 24ème ligne).
72CB: 21 E4 72 ld hl,$72E4
72CE: 7E ld a,(hl)
72CF: E6 7F and $7F
72D1: CD 5A BB call $BB5A
72D4: CB 7E bit 7,(hl)
72D6: 23 inc hl
72D7: 28 F5 jr z,$72CE
On écrit le texte caractère par caractère (le dernier caractère ayant 0x80 + son code ASCII normal). A noter que si on n'est pas sur une table des scores (et donc en mode 0 au lieu du mode 1) au moment de débuter la partie, le texte s'affiche de lui-même sur 2 lignes.
72D9: 06 32 ld b,$32
72DB: C5 push bc
72DC: CD F3 7B call $7BF3
72DF: C1 pop bc
72E0: 10 F9 djnz $72DB
On attend un peu pour que le joueur ait le temps de lire le texte.
72E2: 18 21 jr $7305
On passe au jeu ...
0x72e4h: 43 48 45 41 54 2E 2E 2E 42 55 54 20 59 4F 55 20 ; CHEAT...BUT YOU
0x72f4h: 57 4F 4E 27 54 20 47 45 54 20 46 41 52 2E 2E 2E ; WON'T GET FAR...
0x7304h: AE ; ®
Suite :
7305: ED 56 im 1
....
Donc pour résumer, pour activer le "cheat mode", il faut que le contenu de 0x6858 soit égal à 0xff ET que l'on appuie sur la touche 'C' en même temps que le bouton du joystick pour démarrer une partie, ce qui permet d'accéder directement à la 2ème partie du jeu (mais pas de le finir correctement - d'où le message - j'en reparlerai plus loin).
Le fait est que le contenu de 0x6858 est à 0x00 quand on charge le jeu, qu'il n'est JAMAIS réinitialisé, et qu'il n'y a qu'un seul endroit où son contenu peut passer à 0xff :
Code:
7C42: FD CB 4C 7E bit 7,(iy+$4c)
7C46: C0 ret nz
On teste le contenu de 0x684c : si c'est 0xff (2ème partie du jeu), on ne fait rien.
7C47: 3A E8 95 ld a,($95E8)
7C4A: FE 08 cp $08
7C4C: C0 ret nz
On teste le contenu de 0x95e8 (nombre de sorciers sauvés) : si ce n'est pas 8 (tous sauvés), on ne fait rien.
7C4D: 3A 14 93 ld a,($9314)
7C50: FE 1C cp $1C
7C52: C0 ret nz
On teste le contenu de 0x9314 (numéro de salle) : si ce n'est pas le sanctuaire avec les 9 colonnes, on ne fait rien.
7C53: FD 7E 41 ld a,(iy+$41)
7C56: FE 18 cp $18
7C58: C0 ret nz
7C59: FD 7E 42 ld a,(iy+$42)
7C5C: FE 48 cp $48
7C5E: C0 ret nz
On teste les contenus de 0x6841 (coordonnée Y du sorcier) et 0x6842 (coordonnée X du sorcier) : si elles ne correspondent pas au bon emplacement (en haut de la colonne centrale), on ne fait rien.
7C5F: CD 25 85 call $8525
7C62: FD 36 50 FF ld (iy+$50),$FF
7C66: FD 36 58 FF ld (iy+$58),$FF
On met le "flag" à jour pour autoriser le "cheat mode".
7C6A: FD 36 49 00 ld (iy+$49),$00
....
En clair, une fois qu'on a sauvé les 8 sorciers une fois, on peut TOUJOURS utiliser le "cheat mode" !
Retour sur le message "CHEAT...BUT YOU WON'T GET FAR...." : ce message peut s'expliquer par rapport au message de fin du jeu (soit quand on meurt, soit quand on a tué le nécromancien) :
Code:
867F: 3E 01 ld a,$01
8681: CD 0E BC call $BC0E
On passe en mode 1 (plus beau pour afficher uniquement du texte).
8684: 21 85 96 ld hl,$9685
8687: CD E8 8C call $8CE8
On affiche le message avec le score et le nombre de sorciers sauvés sur 2 lignes :
YOU SCORED
AND SAVED 0 SORCERER
868A: 11 E5 03 ld de,$03E5
868D: 3A E8 95 ld a,($95E8)
8690: E6 0F and $0F
8692: F6 30 or $30
8694: CD 00 8D call $8D00
On affiche le nombre de sorciers sauvés à la place du 0.
8697: 11 F9 03 ld de,$03F9
869A: 3A E8 95 ld a,($95E8)
869D: FE 01 cp $01
869F: 3E 53 ld a,$53
86A1: C4 00 8D call nz,$8D00
Si on a sauvé plus d'un sorcier, on affiche un 'S' après "SORCERER".
86A4: 3E 2E ld a,$2E
86A6: CD 00 8D call $8D00
On affiche le '.' pour terminer la phrase.
86A9: 11 4D 03 ld de,$034D
86AC: 21 D8 92 ld hl,$92D8
86AF: CD EC 91 call $91EC
86B2: CD EC 91 call $91EC
86B5: CD EC 91 call $91EC
On affiche le score.
86B8: 06 0A ld b,$0A
86BA: 3A E8 95 ld a,($95E8)
86BD: FE 08 cp $08
86BF: 20 43 jr nz,$8704
Si on n'a pas sauvé les 8 sorciers, on n'affiche rien d'autre et on va à la suite ...
86C1: 11 50 05 ld de,$0550
86C4: 21 F3 96 ld hl,$96F3
86C7: FD CB 4F 76 bit 6,(iy+$4f)
86CB: CC E8 8C call z,$8CE8
Si on n'a pas tué le nécromancien, on affiche le message suivant sur 3 lignes :
CONGRATULATIONS! YOU HAVE SAVED FRANK
BILL, FRED, SAM, BOB, JIM, MICK AND JOE
BUT THE NECROMANCER STILL ROAMS FREE....
86CE: 21 6E 97 ld hl,$976E
86D1: FD CB 4F 76 bit 6,(iy+$4f)
86D5: C4 E8 8C call nz,$8CE8
Si par contre on a tué le nécromancien, on affiche le message suivant sur 4 lignes :
CONGRATULATIONS! YOU HAVE SUCCEEDED IN
YOUR QUEST TO SAVE THESE LANDS FROM THE
EVIL FORCE OF THE NECROMANCER.....
THIS TIME.....
86D8: 11 00 00 ld de,$0000
86DB: CD FA 8C call $8CFA
On affiche le message "PRACTICE MODE NOW AVAILABLE...." (pour rappeler qu'on peut utiliser le "cheat mode") en haut de l'écran et on va à la suite ... Par contre, ce message ne s'affiche que si on a sauvé les 8 sorciers lors de la partie juste terminée (alors qu'on a vu qu'en fait le "cheat mode" est toujours actif après avoir accédé UNE fois "honnêtement" à la deuxième partie du jeu).
0x86e0: 50 52 41 43 54 49 43 45 20 4D 4F 44 45 20 4E 4F ; PRACTICE MODE NO
0x86f0: 57 20 41 56 41 49 4C 41 42 4C 45 2E 2E 2E 2E ; W AVAILABLE....
Suite :
8704: 2B dec hl
....
Quand on utilise le "cheat mode" pour accéder directement à la deuxième partie du jeu, on n'a en fait sauvé AUCUN sorcier, et donc, à la fin du jeu, on n'affiche que le score et le nombre de sorciers sauvés même si on a tué le nécromancien.
Pour terminer ce "dossier", un petit "cheat" (cette fois-ci sûrement beaucoup plus connu que le précédent) en bidouillant le code Z80 du jeu ...
L'adresse la plus utile est celle qui contient l'énergie (0x684d), codée en BCD (donc "range" 0x00-0x99). Pour avoir l'énergie infinie, il suffit, une fois que le jeu est complètement chargé (quand la table des scores s'affiche par exemple), de mettre 0x00 (au lieu de 0x01) à ces 3 adresses : 0x7867, 0x85d9 et 0x8631. Si cela n'empêche pas de se noyer (et dieu sait que cela peut arriver facilement !), cela permet de ne plus se soucier des monstres et de ne pas se faire avoir sur les mauvaises marmites. A noter que si l'on veut vraiment mourir, soit on décide de se noyer, soit on met 0x00 en 0x684d.
J'espère que cela vous a plu ... Surtout n'hésitez pas si vous avez des questions ...
Steph
Dernière modification par stephh, 21 janvier 2011, 00h59.
Wow ! Eh bien mille mercis ! Je ne m'attendais pas à ce que le mystère soit percé si vite.
Un énorme bravo pour ce travail.
Je viens de tester ça avec Caprice32 puis WinAPE mais bizarrement je n'arrive pas à lancer le jeu avec le "c" maintenu en même temps que Fire. Il semblerait que chez moi les émulateurs ne prennent en compte que la dernière touche pressée (et donc Fire) mais pas la frappe simultanée. Il faudrait que j'essaye en vrai sur mon vieux CPC (je ne sais même pas si mon vieux joy fonctionne encore).
Pour les autres bidouilles, j'en connaissais une concernant l'énergie infinie (je l'ai retrouvée ici) :
Dernière modification par GT400, 21 janvier 2011, 02h02.
As the mist clears, the eerie image of a forest forms in front of you. To the east, a vast plain extends towards the horizon. Westward howewer, in the thick of the forest, a thousand pairs of eyes pierce the mist, glaring despondently back at you.
Wow ! Eh bien mille mercis ! Je ne m'attendais pas à ce que le mystère soit percé si vite.
Seulement 64 Ko de mémoire (pas de "memory banking" à la gomme) et tout qui est chargé en même temps, c'est d'une simplicité enfantine (surtout quand les textes sont écrits "en clair")
Un énorme bravo pour ce travail.
You're welcome ! Si tu as d'autres demandes pour des jeux aussi "simples", tente ta chance et on verra bien :rolleyes:
Je viens de tester ça avec Caprice32 puis WinAPE mais bizarrement je n'arrive pas à lancer le jeu avec le "c" maintenu en même temps que Fire. Il semblerait que chez moi les émulateurs ne prennent en compte que la dernière touche pressée (et donc Fire) mais pas la frappe simultanée. Il faudrait que j'essaye en vrai sur mon vieux CPC (je ne sais même pas si mon vieux joy fonctionne encore).
As-tu bien sauvé les 8 sorciers au moins une fois avant comme je l'ai expliqué (ou mis 0xff en 0x6858 une fois que le jeu est complètement chargé) ? Si ce n'est pas le cas, le "cheat mode" ne fonctionne pas (cf. premier test en 0x72b4 au tout début de mon explication).
Pour les autres bidouilles, j'en connaissais une concernant l'énergie infinie (je l'ai retrouvée ici) :
Pour "Sorcery+", mets 0x18 en 0x77d4 ("jr" au lieu de "jr nz") et ça devrait le faire Et comme toujours, le plus "long" fut de retrouver "Sorcery" puis de le lancer avec MESS pour avoir son code Z80 et le comparer avec celui de "Sorcery+" (heureusement, les Devs de l'époque ne se sont pas amusés à réécrire cette partie du code)
Ok. Merci beaucoup. (Je connais ces deux jeux par coeur mais c'est cool de voir qu'on peut encore trouver des trucs inconnus 25 ans après... )
En fait, j'avais lu un peu trop vite. Là je viens d'essayer après avoir terminé la première partie et ça fonctionne.
Autrement, j'ai refait le tour de mes vielles notes sur ce jeu, mais je ne vois pas ce que je pourrais te demander d'autre...
Je sais à peu près à quoi correspondent les fichiers du jeu (cachés quand on fait un catalogue de la disquette), mais j'ai encore des doutes sur certains fichiers... (tu sauras sûrement me renseigner...)
CODE.BIN : code principal du jeu
CONALP.BIN : ?
CONSET1.BIN : graphismes de la 1ere partie
CONSET2.BIN : graphismes de la 2e partie
DISC.BAS : lanceur
LOCDATA.BIN : données des lieux (graphismes, objets, monstres...)
MUCODE.BIN : probablement le code de la musique
SMESSC.BIN : probablement les messages qui défilent (scrolltext) avant le jeu... à moins que SMESSC veuille dire "Secret MESSage C" et que ce soit encore un mystère )
SORCERYP.BIN : ?
SOUND.DAT : sons
SPRITES1.BIN : sprites de la 1ere partie
SPRITES2.BIN : sprites de la 2e partie
STRANGE.SCN : image de présentation/pub pour Strangeloop (réalisé par les mêmes programmeurs à l'époque) qu'on peut apercevoir quand on laisse tourner la démo du jeu et les scrolltexts)
TITSCRN.BIN : probablement l'écran-titre de présentation affiché pendant le chargement.
TITLEP.BIN : peut-être la même chose au-dessus du scrolltext ensuite
Je me souviens m'être amusé à échanger les noms des fichiers SPRITES et CONSET. Ainsi on se retrouvait avec les graphismes de la 2eme partie dans la première. Pareil pour les sprites. Ca foutait un beau bordel.
Dernière modification par GT400, 21 janvier 2011, 21h38.
As the mist clears, the eerie image of a forest forms in front of you. To the east, a vast plain extends towards the horizon. Westward howewer, in the thick of the forest, a thousand pairs of eyes pierce the mist, glaring despondently back at you.
Nous collectons des données personnelles sur notre site, à travers l'utilisation des cookies ainsi que d'autres technologies, pour vous fournir nos services, des publicités personnalisées et pour analyser le trafic. Nous pouvons être amené à partager certaines informations avec les partenaires publicitaires et d'analyse. Pour plus de détails, veuillez consulter la politique de confidentialité.
En cliquant sur « J'accepte » ci-dessous, vous acceptez notre politique de confidentialité ainsi que la collecte de données personnelles et l'utilisation de cookies comme décrit. Vous reconnaissez aussi que ce forum peut être hébergé en dehors de votre pays de résidence et que vous consentez à la collecte, le stockage et l'utilisation de vos données dans le pays où ce forum est hébergé.
Commentaire