Дело было вечером, делать было нечего.Недавно я начал проходить NES'овских Metal Gear'ов. Про первую часть я был много наслышан: где я только не находил описание взлома системы паролей для этой игры (даже в моей книге кодов было всё расписано). Потом перешёл на вторую часть и ничего про неё не нашёл (кроме парочки полезных паролей на GameFaqs). Когда я разобрался с системой паролей, то я очень сильно удивился, ведь система почти точно такая же, как и в Castlevania II: Simon's Quest. Но Castlevania II кто только не взламывал, а Snake's Revenge - никто. Вот я и решил исправить эту несправедливость, и хочу представить Вам описание системы генерации.
Теория Пароль состоит из 30 позиций, каждая позиция состоит из 5 битов, итого 30*5= 150 битов. Эти биты сохраняют большое количество игровой информации, которую я опишу в битовой структуре.
Сырой пароль 1 позиция: OT
0, Ms
0, M
0, G
0, F
0 2 позиция: Rt
0, S
0, SG
0, MG
0, HG
0 3 позиция: An
0, U1
0, U2
0, U3
0, U4
0 4 позиция: TG
0, U5
0, U6
0, CM
0, E
0 5 позиция: A
0, C8
0, C7
0, C6
0, C5
0 6 позиция: X
0, C4
0, C3
0, C2
0, C1
0 7 позиция: PA
0, BP
0, OL
0, NS
0, AV
0 8 позиция: B
0, Bt
0, DM
0, HM
0, SB
0 9 позиция: P13
0, Rn
7, Rn
6, Rn
5, Rn
410 позиция: P10
0, Rn
3, Rn
2, Rn
1, Rn
011 позиция: P7
0, CR
7, CR
6, CR
5, CR
412 позиция: P6
0, CR
3, CR
2, CR
1, CR
013 позиция: P5
0, H
7, H
6, H
5, H
414 позиция: P4
0, H
3, H
2, H
1, H
015 позиция: P3
0, MC
0, BB
0, P16
0, P17
016 позиция: P1
0, T
0, J
0, Gr
0, RM
017 позиция: Cm
7, U7
0, P15
0, P14
0, P12
018 позиция: Cm
6, P11
0, P9
0, P8
0, P2
019 позиция: Cm
5, W6
0, W4
0, W5
0, W8
020 позиция: Cm
4, W7
0, W3
0, W2
0, W1
021 позиция: Cm
3, U8
0, U9
0, U10
0, U11
022 позиция: Cm
2, U12
0, U13
0, U14
0, U15
023 позиция: Cm
1, L
7, L
6, L
5, L
424 позиция: Cm
0, L
3, L
2, L
1, L
025 позиция: U16
0, C
7, C
6, C
5, C
426 позиция: U17
0, C
3, C
2, C
1, C
027 позиция: U18
0, C
15, C
14, C
13, C
1228 позиция: U19
0, C
11, C
10, C
9, C
829 позиция: U20
0, R2
3, R2
2, R2
1, R2
030 позиция: U21
0, R1
3, R1
2, R1
1, R1
0Обозначения OT - Oxygen tank.
Ms - Missile.
M - Mine.
G - Grenade.
F - Flare.
Rt - Food.
S - Silencer.
SG - ShotGun.
MG - MachineGun.
HG - HandGun.
An - Antidote.
U(1-21) - неиспользуемые биты (хотя, я точно не уверен).
TG - Truth gas.
CM - Claymor mine.
E - Explosive.
A - Antenna.
C(1-8) - Card(1-8).
X - X-Ray lens.
PA -Power armor.
BP - Back pack.
OL - Optic lens.
NS - Night site.
AV - Armor vest.
B - Battery.
Bt - Boots.
DM - Detecter mine.
HM - Hidden mike.
SB - Smoke bomb.
P(1-17) - спасены пленники (1-17).
Rn - Rank((1-256)-1) в двоичной СС.
CR - счётчик ранга (0-255) в двоичной СС.
Н - № кат-сцены (0-255) в двоичной СС.
MC - играет музыка с базы Metal Gear 2.
BB - Big Boss убит.
T - танк уничтожен.
J - John Turner spy убит.
Gr - 3 гренадера убиты.
RM - 5 робонаёмников уничтожены.
Cm - № лагеря (0-255) в двоичной СС.
W - допрошен враг (1-8).
L - № уровня (0-255) в двоичной СС.
№ | Локация |
0 | Джунгли |
1 | 1 здание |
2 | Корабль |
3 | 1/2 лагерь |
4 | Перед поездом |
5 | Перед кораблём |
6 | 2 лагерь (битва с танком) |
7 | 2 здание |
8 | 5 здание |
9 | База Metal Gear 2 |
10 | Битва с Metal Gear 2 |
11-255 | Glitch |
C - контрольная сумма.
R1 - random1 (0-15) в двоичной СС.
R2 - random2 (0-8) в двоичной СС.
Назначение битов - Счётчик ранга сохраняет значение, на основе которого, персонажу присуждается новый ранг.
Счётчик изменяется:
- каждый спасённый пленник прибавляет 1 (исключение: пленники 16 и 17)
- каждый допрошенный враг прибавляет 1
- после прохождения корабля, значение счётчика (какое бы то ни было) приравнивается 9.
- Количество боеприпасов и вещей из инвентаря зависит от ранга
Ранг | HG | MG | SG | Ms | G | CM | M | F | E | Rt | TG | An | OT |
1 | 25 | 25 | 5 | 5 | 5 | 2 | 5 | 2 | 2 | 1 | 1 | 1 | 0 |
2 | 50 | 50 | 7 | 7 | 7 | 5 | 7 | 5 | 7 | 3 | 1 | 3 | 1 |
3 | 75 | 75 | 10 | 10 | 10 | 7 | 10 | 7 | 10 | 4 | 2 | 4 | 2 |
4 | 100 | 100 | 15 | 15 | 15 | 10 | 12 | 10 | 12 | 6 | 2 | 6 | 3 |
5 | 125 | 125 | 20 | 20 | 20 | 12 | 15 | 15 | 15 | 7 | 3 | 7 | 4 |
6 | 150 | 150 | 22 | 22 | 22 | 15 | 20 | 20 | 20 | 9 | 3 | 10 | 6 |
Если ранг больше 6, то игра начнёт выдавать глюки (не всегда). № | Кат-сцена |
0 | Вертолёт (нормально работает только в джунглях) |
1-255 | Нет |
А если....
- Бит, который отвечает за смерть John Turner, будет работать, если L≠4,
- Cm отвечает за лагерь.
L=3 и Cm = 0-7, то 1 лагерь.
L=3 и Cm =8-255, то 2 лагерь.
На другие локации эти биты не влияют.
Расположение пленников:1 - Джунгли; 2 раза наверх от первой развилки.
2 - Джунгли; наверх - влево - наверх от места, где спрятан глушитель.
3 - 1 здание; 1 этаж; влево - вниз - влево от лифта.
4 - 1 здание; 1 этаж; вправо - вниз - вправо от лифта.
5 - Корабль; рубка; наверх от входа в рубку.
6 - 1 лагерь; справа от помещения, в котором лежат ракеты с консервами.
7 - Поезд; 4 вагон; первая дверь, считая от входа.
8 - 2 лагерь; помещение, которое расположено рядом с первой стеной, которую надо уничтожить взрывчаткой.
9 - 2 лагерь; вправо - вниз от развилки на которой расположены камни.
10 - 3 здание; подвал (-1 этаж); вниз - влево - вниз от комнаты, в которой лежит 6 карта и антидот.
11 - 4 здание; подвал (-1 этаж); влево - вниз - влево (по зигзагообразной дороге) от лифта.
12 - 5 здание; подвал (-1 этаж); вправо (до стены) - вниз - влево от лифта.
13 - 5 здание; подвал (-1 этаж)/после туннеля с баррикадами; влево - вниз - влево от комнаты, в которой лежат гранаты.
14 - 5 здание; 1 этаж/после туннеля с баррикадами; вниз - влево от комнаты, в которой лежит взрывчатка.
15 - 5 здание; 1 этаж/после туннеля с баррикадами; после комнаты с консервами.
16 (Nick Myer) - 5 здание; 2 этаж; влево - вниз - вправо - вниз от лифта.
17 (Jennifer) - 5 здание; 3 этаж; после комнаты с Big Boss'ом.
Расположение врагов, которых надо допросить:1 - 1 здание; 1 этаж; 2 раза наверх от комнаты, в которой лежит 2 карта.
2 - 1 здание; подвал (-1 этаж); 2 раза вниз (по правой дороге) - влево от лифта.
3 - Корабль; рубка; наверх - вправо от комнаты, в которой лежат гранаты.
4 - Поезд; 4 вагон; третья дверь, считая от входа.
5 - 3 здание; подвал (-1 этаж); вниз - 2 раза влево от комнаты, в которой лежит 6 карта и антидот.
6 - 5 здание; 1 этаж; справа от колонны.
7 - 5 здание; подвал (-1 этаж)/после туннеля с баррикадами; вниз от лифта.
8 - 5 здание; 1 этаж/после туннеля с баррикадами; вниз - 2 раза вправо от комнаты, в которой лежит взрывчатка.
Контрольная сумма C = Ms
0, M
0, G
0, F
0, S
0, SG
0, MG
0, HG
0 + U1
0, U2
0, U3
0, U4
0, U5
0, U6
0, CM
0, E
0 + C8
0, C7
0, C6
0, C5
0, C4
0, C3
0, C2
0, C1
0 + BP
0, OL
0, NS
0, AV
0, Bt
0, DM
0, HM
0, SB
0 + Rn
7, Rn
6, Rn
5, Rn
4, Rn
3, Rn
2, Rn
1, Rn
0 + CR
7, CR
6, CR
5, CR
4, CR
3, CR
2, CR
1, CR
0 + H
7, H
6, H
5, H
4, H
3, H
2, H
1, H
0 + MC
0, BB
0, P16
0, P17
0, T
0, J
0, Gr
0, RM
0 + U7
0, P15
0, P14
0, P12
0, P11
0, P9
0, P8
0, P2
0 + W6
0, W4
0, W5
0, W8
0, W7
0, W3
0, W2
0, W1
0 + U8
0, U9
0, U10
0, U11
0, U12
0, U13
0, U14
0, U15
0 + L
7, L
6, L
5, L
4, L
3, L
2, L
1, L
0 + OT
0, Rt
0, An
0, TG
0, A
0, X
0, PA
0, B
0 + P13
0, P10
0, P7
0, P6
0, P5
0, P4
0, P3
0, P1
0 + Cm
7, Cm
6, Cm
5, Cm
4, Cm
3, Cm
2, Cm
1, Cm
0 Шифрование Шифрование происходит по этой формуле:
x позиция XOR Ch[Random1 + (x-1)], где x = 1-28.
(Ch[Random1 + (x-1)]) - данной операцией мы получаем индекс Ch. На основе индекса, нужно получить значение и подставить его в формулу.
Ch = [30,12,7,17,5,21,28,9,0,18,25,1,16,10,3,26,31,17,24,0,3,5,28,21,0,24,16,4,21,1,4,19,25,0,28,14,9,18,24,15,21,16,31]
Потом происходит второй этап шифрования:
Random2 | 1-28 позиции |
0 или 8 | +0 |
1 или 7 | +1 |
2 или 6 | +2 |
3 или 5 | +3 |
4 | +4 |
Кодирование US/EU: 0123456789BDGHJKLMNPQRTVWXYZ!(!!)?. #%―'
Удачи, спасибо за прочтение!