Автор Тема: [NES/GB] Konami Wai Wai World и все-все-все... - генерирование паролей  (Прочитано 3984 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Awl

  • Пользователь
  • Сообщений: 38
  • Пол: Мужской
    • Twitter
    • Youtube
    • Просмотр профиля
Дело было вечером, делать было нечего.

Здравствуйте, сегодня я хотел бы рассказать про генерацию паролей в играх: Konami Wai Wai World, Wai Wai World 2: SOS!! Paseri Jou, Moai-Kun и Mystical ninja starring Goemon.

Konami Wai Wai World

Теория

Пароль состоит из 14 позиций, каждая позиция состоит из 5 битов, итого 14*5= 70 битов. Эти биты сохраняют большое количество игровой информации, которую я опишу в битовой структуре.

Сырой пароль

1 позиция: C0, Vg0, Vr0, Tg0, Tr0
2 позиция: C1, P0, Ar0, Cl0, H0
3 позиция: C2, Sw0, Gw0, Lw0, Kmw0
4 позиция: C3, S0, G0, L0, Km0
5 позиция: C4, K3, K2, K1, K0
6 позиция: C5, SB0, FB0, GK0, MkK0
7 позиция: C6, A3, A2, A1, A0
8 позиция: C7, R1, R0, C7, C6
9 позиция: C0, U40, U30, U20, U10
10 позиция: C1, KKw0, Mw0, Mkw0, Fw0
11 позиция: C2, KK0, M0, Mk0, F0
12 позиция: C3, A9, A8, ?0, ?0
13 позиция: C4, U50, X0, MB0, KKB0
14 позиция: C5, A7, A6, A5, A4

Обозначения

Vg - № патронов (0-1) в двоичной СС у Vic Viper.

Патроны Vic Viper
0Начальные
1Лазер

Vr - ракеты у Vic Viper.
Tg - № патронов (0-1) в двоичной СС у Twin Bee.

Патроны Twin Bee
0Начальные
1Овальные

Tr - кулаки у Twin Bee.
P - увеличение силы всех персонажей (бонус из Gradius).
Ar - увеличение стойкости всех персонажей (броня).
Cl - плащ.
H - дополнительная жизнь (онигири).
Km - Конамимен.
L - Конами леди.
G - Гоемон.
S - Саймон.
F - Фума.
Mk - Майки.
M - Моаи.
KK - Кинг Конг.
w - дополнительное оружие.
K - количество ключей (0-10) в двоичной СС.
A - количество боеприпасов (0-1000) в двоичной СС.
GK - собран ключ на локации Гоемона.
SB - убит босс и собран ключ на локации Саймона.
MkK - собран ключ на локации Майки.
FB - убит босс на локации Фумы.
MB - убит босс и собран ключ на локации Моаи.
KKB - убит босс и собран ключ на локации Кинг Конга.
X - убит финальный босс и на локациях нет: бонусов (сердечки, ракеты, зелье), дополнительного оружия, ключей, двигающихся и проваливающихся платформ.
R - random (0-3) в двоичной СС.
U - неиспользуемые биты (хотя, я точно не уверен).
? = 0.
C - контрольная сумма.

Контрольная сумма

C = (сумма позиций с 1 по 7) + (сумма позиций с 9 по 14)

Условия работоспособности пароля
  • Дополнительное оружие можно активировать, если есть соответствующий персонаж
  • Улучшения для Twin Bee и Vic Viper можно активировать, если есть все персонажи
  • Количество ключей = 2 + SB0 + FB0 + GK0 + MkK0 + KKB0 + MB0 + X0 + U50 - Km0 - L0 - F0 - S0 - G0 - Mk0 - M0 - KK0

Шифрование

Шифрование происходит по этой формуле:

x позиция XOR Ch[(x-1) + ((Random XOR 3) *4)], где x = 1-14.
(Ch[(x-1) + ((Random XOR 3) *4)]) - данной операцией мы получаем индекс Ch. На основе индекса, нужно получить значение и подставить его в формулу.

Ch = [0,0,18,17,3,1,0,0,17,0,0,1,1,3,0,17,0,1,3,3,17,0,2,2,1,2]

Потом происходит второй этап шифрования:

Нечётные позицииЧётные позиции
+0+14

Кодирование

アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン


Wai Wai World 2: SOS!! Paseri Jou

Теория

Пароль представляет собой таблицу, состоящую из 6 столбцов и 4 строк. Столбец условно обозначим как одну позицию, и в итоге, пароль состоит из 6 позиций. Каждая позиция может принимать значения от 0 до 4.

Сырой пароль

1 позиция: 4 - S2 - S0 - 1P1 - 2P1
2 позиция: 1P1, S3
3 позиция: 1P0, S2
4 позиция: 2P1, S1
5 позиция: 2P0, S0
6 позиция: 4 - S3 - S1 - 1P0 - 2P0

Обозначения

S - № уровня (1-14) в двоичной СС.

Уровень
11
22
33-1
43-2
54
65
76-1
86-2
97
108-1
118-2
128-3
139-1
149-2

1P и 2P - № дополнительных персонажей (0-3) в двоичной СС для первого и второго игроков соответственно.

Дополнительные персонажи
0Гоемон, Упа, Саймон
1Гоемон, Билл, Фума
2Упа, Фума, Саймон
3Упа, Саймон, Билл

Кодирование

Числовые значения позиций переводятся в соответствующее количество кубов.


Moai-Kun

Теория

Пароль состоит из 6 позиций, каждая позиция состоит из 4 битов, итого 6*4= 24 бита. Пароль сохраняет определённые уровни и random.

Сырой пароль

1 позиция: C5, R11, R10, L3
2 позиция: C4, R21, R20, L2
3 позиция: C3, R31, R30, L1
4 позиция: C2, R41, R40, L0
5 позиция: C1, R51, R50, C6
6 позиция: C0, R61, R60, C7

Обозначения

L - № уровня (0-15) в двоичной СС.
Уровень = № уровня * 4 + 1; № уровня>13 даёт глючные уровни.
R(1-6) - random(1-6) (0-3) в двоичной СС.
C - контрольная сумма.

Контрольная сумма

C = № уровня * 17

Условие работоспособности пароля

Сумма всех шести рандомов mod 4 = 0.

Кодирование

0123456789ABCDEF


Mystical ninja starring Goemon

Теория

Пароль состоит из 14 позиций, каждая позиция состоит из 4 битов, итого 14*4= 56 битов. Эти биты сохраняют большое количество игровой информации, которую я опишу в битовой структуре.

Сырой пароль

1 позиция: S3, S2, S1, S0
2 позиция: L7, L6, L5, L4
3 позиция: U10, Sk0, E0, G0
4 позиция: L3, L2, L1, L0
5 позиция: Cs0, P0, Bm0, B0
6 позиция: Sh23, Sh22, Sh21, Sh20
7 позиция: U20, Skw0, Ew0, Gw0
8 позиция: M23, M22, M21, M20
9 позиция: M13, M12, M11, M10
10 позиция: M43, M42, M41, M40
11 позиция: M33, M32, M31, M30
12 позиция: Sh13, Sh12, Sh11, Sh10
13 позиция: C23, C22, C21, C20
14 позиция: C13, C12, C11, C10

Обозначения

S - № уровня (0-4) в двоичной СС.

Уровень
0Karakuri castle
1The Demon cave
2The Black Ship Skull
3The Skull, once again
4Skeleton island

L - жизни (1-255) в двоичной СС.
Если жизней>127, то игра приравняет их количество к 0.
U - неиспользуемые биты.
G - Гоемон.
E - Эбисумару.
Sk - Саскэ.
Примечание:
0 - персонаж есть.
1 - персонажа нет.
w - улучшено оружие персонажа.
B - бамбуковая трубка.
Bm - бомба.
P - пропуск на Black Ship Skull.
Cs - ракушка.
Sh1 - количество единиц сюрикенов (0-15) в двоичной СС.
Sh2 - количество десятков сюрикенов (0-15) в двоичной СС.
M1 - количество десятков денег (0-15) в двоичной СС.
M2 - количество сотен денег (0-15) в двоичной СС.
M3 - количество тысяч денег (0-15) в двоичной СС.
M4 - количество десятков тысяч денег (0-15) в двоичной СС.
C(1-2) - контрольная сумма (1-2).

Контрольная сумма

C1 = ((S3 + S2+  S1+  S0 + L7 + L6 + L5 + L4) * 6) mod 16
C2 = ((сумма позиций с 1 по 12) + ((сумма чётных позиций) div 16)) mod 16

Условие работоспособности пароля

C1 OR C2 ≠ 0

Кодирование



Удачи, спасибо за прочтение!
« Последнее редактирование: 24 Июнь 2017, 09:39:39 от Awl »

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4416
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
Как и всегда, приятно почитать!

Оффлайн Awl

  • Пользователь
  • Сообщений: 38
  • Пол: Мужской
    • Twitter
    • Youtube
    • Просмотр профиля
Как и всегда, приятно почитать!

Благодарю.