Salle de Jeux Décodeur de mot de passe King's Valley 2 Histoire de comprendre comment ça marche ...

Alors après 3 jours de recherche acharnés et de dizaines de feuilles de papier remplies de chiffres/lettres, j'ai enfin réussis à trouver LE système de décodage des mots de passe donnés dans King's Valley II !
I - On pose les bases
Les mots de passe en question se présentent sous cette forme :
Une fois entré dans le jeu, il en ressort deux information :
II - Découpage du Mot de Passe
Le mot de passe contiens 3 informations importantes :
AB : Nombre relatif au numéro du stage
CD : Nombre relatif au nombre de vies restant
F : Clé d'encodage
E, GH, données inutiles (si, si ... testez, vous verrez bien !)
comme on peut le voir, il existe 3 lettres complètement obsolètes qui ne sont là que pour "faire beau" et rendre la complexité du mot de passe virtuellement plus grande... 'sont malins chez Konami !
III - Principe de Calcul
En regardant plusieurs mots de passes, on se rend vite compte que les lettres données se situent entre A et P, soit 16 lettres... Coïncidence ?
Non ! En fait ce mot de passe est une série de chiffres hexadécimaux (pour rappel, on est sur un Z80, à l'époque)
La clé, codée sur une seule lettre, représente un chiffre de 0 à 16;
IV - Interprétation et Décodage
Voici donc un Pseudo-Code permettant de récupérer les données :
Voilà, il reste à faire un encodeur et le tour est joué.
Remarque : Le nombre de vie donnée à la fin est une conversion de base 10 à partir d'une base 16. Première fois que ej vois ça de ma vie, et du coup ça n'a pas aidé pour déterminer quoi est quoi et surtout pourquoi #FE donnait 98 alors que #F9 donnait 98 .. et que #40 et #A0 donnaient tout les deux 40 ...
Peg'
*Edit du 14/08*
Alors après avoir pas mal étudié le site donné plus bas (ICI pour ceux qui n'auraient pas suivis), il en retourne que mon code plus haut est fonctionnel, mais qu'il comporte des erreurs dans certains cas précis.
J'ai donc fait un mélange des deux codes que je possédais, sachant qu'ils ont tout les deux la même base et des défauts différents.
Le principe est donc le suivant :
Le décodage est une simple affaire de décalage vers la gauche au niveau du bit d'un nombre de 16 bits, avec bouclage.
C'est à dire que les bit de poids fort (à gauche) se retrouveront en poids faible (à droite).
Le nombre de bits de décalage est définis par la clé. Seuls les 3 bits de poids fort de la clé sont pris en compte (0 à 7), c'est à dire :
Exemple :
prenons la clé "N", soit un décalage de 5 :
Ce qui nous donne un résultat de #36B1
Il suffit de traduire maintenant les données obtenues :
Le niveau : #36 = 54 ... rien de plus simple
Le nombre de vies restant : #B = 11 (les dizaines)et #1 = 1 (les unités)
Voilà ! La chose est aussi "simple" que ça ...
Peg'
I - On pose les bases
Les mots de passe en question se présentent sous cette forme :
ABCDEFGH
Une fois entré dans le jeu, il en ressort deux information :
- Numéro du stage (entre 1 et 60)
- Nombre de vies restantes (entre 0 et 99)
- Nombre de vies restantes (entre 0 et 99)
II - Découpage du Mot de Passe
Le mot de passe contiens 3 informations importantes :
AB CD E F GH
AB : Nombre relatif au numéro du stage
CD : Nombre relatif au nombre de vies restant
F : Clé d'encodage
E, GH, données inutiles (si, si ... testez, vous verrez bien !)
comme on peut le voir, il existe 3 lettres complètement obsolètes qui ne sont là que pour "faire beau" et rendre la complexité du mot de passe virtuellement plus grande... 'sont malins chez Konami !
III - Principe de Calcul
En regardant plusieurs mots de passes, on se rend vite compte que les lettres données se situent entre A et P, soit 16 lettres... Coïncidence ?
Non ! En fait ce mot de passe est une série de chiffres hexadécimaux (pour rappel, on est sur un Z80, à l'époque)
AA = #00 et PP = #FF(255), avec, par exemple GE = #64(100) et LM = #BC(188).
La clé, codée sur une seule lettre, représente un chiffre de 0 à 16;
IV - Interprétation et Décodage
Voici donc un Pseudo-Code permettant de récupérer les données :
Key = Clé modulo 8
Lvl = Nombre du stage (0 à 255)
Lfe = Nombre des vies (0 à 255)
L = Lvl * Key
V = Lfe * Key
Cl = int(L/256)
Cv = int(V/256)
// calcul du stage
Stage = (L + Cv) modulo 256
//calcul du nombre de vies restantes
r = (V + Cl) modulo 256
a = int (r / 16)
b = r modulo 16
si (a >9) alors a -= 9
si (b >9) alors b -= 9
Vies = (a * 10) + b
Lvl = Nombre du stage (0 à 255)
Lfe = Nombre des vies (0 à 255)
L = Lvl * Key
V = Lfe * Key
Cl = int(L/256)
Cv = int(V/256)
// calcul du stage
Stage = (L + Cv) modulo 256
//calcul du nombre de vies restantes
r = (V + Cl) modulo 256
a = int (r / 16)
b = r modulo 16
si (a >9) alors a -= 9
si (b >9) alors b -= 9
Vies = (a * 10) + b
Voilà, il reste à faire un encodeur et le tour est joué.
Remarque : Le nombre de vie donnée à la fin est une conversion de base 10 à partir d'une base 16. Première fois que ej vois ça de ma vie, et du coup ça n'a pas aidé pour déterminer quoi est quoi et surtout pourquoi #FE donnait 98 alors que #F9 donnait 98 .. et que #40 et #A0 donnaient tout les deux 40 ...
Peg'
*Edit du 14/08*
Alors après avoir pas mal étudié le site donné plus bas (ICI pour ceux qui n'auraient pas suivis), il en retourne que mon code plus haut est fonctionnel, mais qu'il comporte des erreurs dans certains cas précis.
! Attention, le code à l'adresse donné est aussi incomplet car dans certains cas précis, il donne des information erronées : DMPPxAxx, par exemple, donnerait niveau 60 avec 104 vies alors qu'il s'agit d'un code valide donnant 98 vies ... !
J'ai donc fait un mélange des deux codes que je possédais, sachant qu'ils ont tout les deux la même base et des défauts différents.
Le principe est donc le suivant :
Le décodage est une simple affaire de décalage vers la gauche au niveau du bit d'un nombre de 16 bits, avec bouclage.
C'est à dire que les bit de poids fort (à gauche) se retrouveront en poids faible (à droite).
Le nombre de bits de décalage est définis par la clé. Seuls les 3 bits de poids fort de la clé sont pris en compte (0 à 7), c'est à dire :
Exemple :
IJLF => #89B5 => 1000 1001 1011 0101
prenons la clé "N", soit un décalage de 5 :
1000 1001 1011 0101 => 0011 0110 1011 0001
Ce qui nous donne un résultat de #36B1
Il suffit de traduire maintenant les données obtenues :
Le niveau : #36 = 54 ... rien de plus simple
Le nombre de vies restant : #B = 11 (les dizaines)et #1 = 1 (les unités)
(11*10) + 1 = 111
trois rectifications sont alors à effectuer :
- si vies > 100 il faut lui soustraire 60
- si les unités > 10 il faut soustraire 6 aux vies (partie oubliée dans le site donné)
- soustraire 1 au nombre final, pour obtenir un nombre entre 0 et 99
Ce qui donne un nombre de vies de : 111 - 60 - 1 = 50 vies
trois rectifications sont alors à effectuer :
- si vies > 100 il faut lui soustraire 60
- si les unités > 10 il faut soustraire 6 aux vies (partie oubliée dans le site donné)
- soustraire 1 au nombre final, pour obtenir un nombre entre 0 et 99
Ce qui donne un nombre de vies de : 111 - 60 - 1 = 50 vies
Voilà ! La chose est aussi "simple" que ça ...
Peg'
Rétro ... mais pas trop !
AB : Nombre relatif au numéro du stage
CD : Nombre relatif au nombre de vies restant
F : Clé d'encodage
E, FG, données inutiles (si, si ... testez, vous verrez bien !)
il y aurait pas un BUG vers la fin : pas de H et 2 fois F ( le code dans le code )
CD : Nombre relatif au nombre de vies restant
F : Clé d'encodage
E, FG, données inutiles (si, si ... testez, vous verrez bien !)
il y aurait pas un BUG vers la fin : pas de H et 2 fois F ( le code dans le code )
j'ai aussi trouvé cela
===========================================
| Password: | Effect: |
===========================================
| TRYAGAIN | Continue after the |
| | game over screen |
| | appears |
-------------------------------------------
| FESTIVAL | Invincibility |
-------------------------------------------
| AMPAAGAC | Level 60 |
===========================================
et puis un programme basic de calcul de mot de passe que j'ai pris le liberté de traduire
voici les 2 versions en .bas a lancer dans votreMSX favori : codekvII.zip
ça fait le travail tout seul sans avoir besoin d'aspirine
===========================================
| Password: | Effect: |
===========================================
| TRYAGAIN | Continue after the |
| | game over screen |
| | appears |
-------------------------------------------
| FESTIVAL | Invincibility |
-------------------------------------------
| AMPAAGAC | Level 60 |
===========================================
et puis un programme basic de calcul de mot de passe que j'ai pris le liberté de traduire
voici les 2 versions en .bas a lancer dans votreMSX favori : codekvII.zip
ça fait le travail tout seul sans avoir besoin d'aspirine


J'ai corrigé le bug de FG/GH ...
J'avais vu d'autres mots de passe différents celon les versions MSX1/2 ..
ET en fouillant j'ai trouvé ce site qui explique pareil que moi mais en moins clair, je trouve ....
J'avais vu d'autres mots de passe différents celon les versions MSX1/2 ..
ET en fouillant j'ai trouvé ce site qui explique pareil que moi mais en moins clair, je trouve ....
Rétro ... mais pas trop !
Si je comprends bien :
Clé A B C D E F G H I J K L M N O P
Val 0 1 2 3 4 5 6 7 8 9 A B C D E F
- Les 2 premiers caractères correspondent au numéro du stage codé en héxa puis traduit dans le tableau.
[AA = lvl 0] ... [AP = level 15], [BA = level 16] ... [BP = level 31] ... (comme les immatriculations sauf que l'on va jusque la lettre Z)
La dernière valeur level 60 doit être DM (3C en hexa = 3*16 +12 en décimal)
- Nombre de vies codées en BCD.
En BCD, on code chaque chiffre en utilisant 4 éléments binaires. 98 en décimal est équivalent à 1001 1000 en BCD donc 98 également en hexa. 98 devient JI.
- ensuite, on met les 4 dernières lettres AAAA et le tour est joué. (ou du moins, ce serait intéressant d'avoir tous les codes qui finissent par AAAA, plus facile à retenir et saisir)
DMJIAAAA -> niveau 60, 98 vies (ce qui a l'air d'être le nombre de vies max) Edité par KN2000 Le 27/08/2010 à 15h21
Clé A B C D E F G H I J K L M N O P
Val 0 1 2 3 4 5 6 7 8 9 A B C D E F
- Les 2 premiers caractères correspondent au numéro du stage codé en héxa puis traduit dans le tableau.
[AA = lvl 0] ... [AP = level 15], [BA = level 16] ... [BP = level 31] ... (comme les immatriculations sauf que l'on va jusque la lettre Z)
La dernière valeur level 60 doit être DM (3C en hexa = 3*16 +12 en décimal)
- Nombre de vies codées en BCD.
En BCD, on code chaque chiffre en utilisant 4 éléments binaires. 98 en décimal est équivalent à 1001 1000 en BCD donc 98 également en hexa. 98 devient JI.
- ensuite, on met les 4 dernières lettres AAAA et le tour est joué. (ou du moins, ce serait intéressant d'avoir tous les codes qui finissent par AAAA, plus facile à retenir et saisir)
DMJIAAAA -> niveau 60, 98 vies (ce qui a l'air d'être le nombre de vies max) Edité par KN2000 Le 27/08/2010 à 15h21
Nous sommes en 2010 aps JC, toute la Gaule est envahie. Ah ben non, apparement, un village résiste encore aux envahisseurs Personalcomputerum et autres Consoledessalum. Bienvenue dans l'antre du emessix !

non, en fait, c'est DMPKAAAA, car il y a une astuce sur le nombre de vie :
ce qu'il faut savoir (Avec une clé A):
AB = 0
AC = 1
AD = 2
AE = 3
AF = AL = 4
AG = AM = 5
AH = AN = 6
AI = AO = 7
AJ = AP = 8
AK = BA = 9
BB = 10
etc ...
pour voir au milieu :
DJ = DP = 38
DK = EA = 39
EB = KB = 40
EC = KC = 41
et en fin :
JI = JO = PI = PO = 97
JJ = JP = PJ = PP = 98
JK = KA = PK = 99
On remarque que KA(99) passe à KB(40), tout comme AK(9) passe à AL(4).
En fait c'ets un système qui permet de rendre un chiffre de 0 à 99 sur uns base 00 à FF.
Peg'
ce qu'il faut savoir (Avec une clé A):
AB = 0
AC = 1
AD = 2
AE = 3
AF = AL = 4
AG = AM = 5
AH = AN = 6
AI = AO = 7
AJ = AP = 8
AK = BA = 9
BB = 10
etc ...
pour voir au milieu :
DJ = DP = 38
DK = EA = 39
EB = KB = 40
EC = KC = 41
et en fin :
JI = JO = PI = PO = 97
JJ = JP = PJ = PP = 98
JK = KA = PK = 99
On remarque que KA(99) passe à KB(40), tout comme AK(9) passe à AL(4).
En fait c'ets un système qui permet de rendre un chiffre de 0 à 99 sur uns base 00 à FF.
Peg'
Rétro ... mais pas trop !
Voilà moi j'ai ça depuis un p'tit moment dans mes archives MSX->PC et si ça peut vous être utile.
C'est un programme en exe pour PC qui vérifie les code de King's Valley II.
http://www.msxvillage.fr/upload/kvii_passgen.rar
Dans ma jeunesse quand j'ai eu le jeu (la version MSX1), je m'amuser avec mon pote Nico à chercher des codes.
Des fois en tapant des noms ou même des conneries ça fonctionner :
KINGKONG = OK
CACAPIPI = OK
LOL
Très amicalement
G. HEEMS Edité par Daiva Le 29/10/2012 à 00h14
C'est un programme en exe pour PC qui vérifie les code de King's Valley II.
http://www.msxvillage.fr/upload/kvii_passgen.rar
Dans ma jeunesse quand j'ai eu le jeu (la version MSX1), je m'amuser avec mon pote Nico à chercher des codes.
Des fois en tapant des noms ou même des conneries ça fonctionner :
KINGKONG = OK
CACAPIPI = OK
LOL

Très amicalement
G. HEEMS Edité par Daiva Le 29/10/2012 à 00h14
[MSX/MSX2/MSX2+ sur WII]
"I'LOVE MSX" Mes Amours d'émulation : BlueMSX sur PC récent & FMSX-DOS sur PC ancien.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie