Bomberman II Password System Guide
WNivek  ([email protected])
September 2, 2006

This document is the culumnation of several hours of effort on my own part.
As such, it's my own creation and subject to copyright.
You may download and print this document for your own personal use or your
immediate friends', but any other reproduction or redistribution will require my
express written permission.
This document may not be sold, nor included in any form of compilation to be
sold, without my express permission and a percentage of the procedes.
If you wish to use this document as the basis for anything, please let me know.

As of August 25 2006, the only authorised homes for this document are GameFaqs
and my own website, http://www.wnivek.co.nr/
If you find this anywhere else, please contact me immediately.


Revision history:
August    25, 2006 - Initial release

September  2, 2006 - Reworked to simplify checksum
                    Some minor reformatting
                    Added note about direct US<->JP conversion

Intro:
The purpose of this document is to explain how one can manufacture passwords
for the NES/Famicom game Bomberman II.
After creating my Adventures of Lomax password generator based on Erickson
Deveza's Lomax Password FAQ, he mentioned he was having difficulty with
Bomberman II and suggested I help him. So I picked up the game, and stated
poking around. Starting from scratch and working on it for less than 12 hours, I
have worked out the system and written a generator. And now, I write this guide.

Explaination:
Any given Bomberman 2 password saves 3 pieces of information:
 Area
 Number of Bombs
 Size of Explosions

There are, however, three other factors to the password:
 Base number
 Checksum mod 1
 Checksum mod 2

Those three do not affect the 'meaning' of the password, and are arbitrary.
Based on all six of these, then, is one final element: the checksum.


The code layout looks something like this:
 Base, Area1, Area2, Checksum, Bombs, Checkmod1, Size, Checkmod2

However, it's more complicated than that...


Step 1:
Decide on an Area, # of Bombs, and explosion Size.
Be aware of the ranges...
- Area1 -  1 to 6
- Area2 -  1 to 8
- Bombs -  1 to 8
- Size  -  1 to 5
Subtract one from each once you've chosen them.

Step 2:
Choose three numbers from 0 to 15. These will be your Base, Checkmod1 and
Checkmod2. The values here don't really matter - you can save yourself some
effort by just using 0 for all three of them.

Step 3:
Calculate the checksum. The formula is as follows
Checksum = (Area1+Area2+Bombs+Size+CheckMod1+CheckMod2) Modulo 16
In case you don't know, modulo is basically the remainder from integer division.
 Example: Area 6-8, 8 bombs, size 5, Checkmod1 0, Checkmod2 0
   Checksum = (5+7+7+4+0+0) Modulo 16
   Checksum = 23 Modulo 16
              23 รท 16 = 1, with a remainder of 7
   Checksum = 7

Step 4:
Arrange the numbers so far in the order they'll appear in the finished password:
Base, Area1, Area2, Checksum, Bombs, Checkmod1, Size, Checkmod2
 Example: Area 6-8, 8 bombs, size 5, Checkmod1 0, Checkmod2 0, Base 3
   3 5 7 7 7 0 4 0


Step 5:  (Can skip if Base = 0)
Apply the Base. Take your Base number, and XOR it with every number of the pass
except for the base itself. (Area1,Area2,Bombs,Size,Check+,Check-,Checksum)
To make your life easy, I've included a table illustrating XOR. Just look up the
line for your base, and pull the appropriate numbers out of it.
And don't worry about Row vs Column - XOR is symmetrical.
 Example: Area 6-8, 8 bombs, size 5, Checkmod1 0, Checkmod2 0, Base 3
   3 5 7 7 7 0 4 0
   3 6 4 4 4 3 7 3

Step 6:
Further conversion. Based on Convert table below, replace every number of your
code with its counterpart from the table.
 Example: Area 6-8, 8 bombs, size 5, Check+ 0, Check- 0, Base 3
   3 6  4  4  4 3 7 3
   6 9 12 12 12 6 3 6

Step 7:
Encode. Based on the Encode table below, replace every number of your code with
the appropriate character based on what version of the game you have: US or JP.
Note that you can also use that table to convert existing codes from one version
to another.
 Example: Area 6-8, 8 bombs, size 5, Check+ 0, Check- 0, Base 3, JP version
   6 9 12 12 12 6 3 6
   G J  M  M  M G D G


And that's it! Load up Bomberman II and give your new custom password a whirl.


Symbolic representation:
(note: % is Modulo, ^ is XOR, -= is subtract and assign)

area1 -= 1; area2 -= 1; bombs -= 1; size -= 1;

digits[0] = base;
digits[1] = base ^ area1;
digits[2] = base ^ area2;
digits[3] = base ^ ((area1+area2+bombs+size+checkmod1+checkmod2) % 16);
digits[4] = base ^ bombs;
digits[5] = base ^ checkmod1;
digits[6] = base ^ size;
digits[7] = base ^ checkmod2;

convert(digits);
encode(digits, version);


Tables:

XOR|  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
---+------------------------------------------------
0 |  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
1 |  1  0  3  2  5  4  7  6  9  8 11 10 13 12 15 14
2 |  2  3  0  1  6  7  4  5 10 11  8  9 14 15 12 13
3 |  3  2  1  0  7  6  5  4 11 10  9  8 15 14 13 12
4 |  4  5  6  7  0  1  2  3 12 13 14 15  8  9 10 11
5 |  5  4  7  6  1  0  3  2 13 12 15 14  9  8 11 10
6 |  6  7  4  5  2  3  0  1 14 15 12 13 10 11  8  9
7 |  7  6  5  4  3  2  1  0 15 14 13 12 11 10  9  8
8 |  8  9 10 11 12 13 14 15  0  1  2  3  4  5  6  7
9 |  9  8 11 10 13 12 15 14  1  0  3  2  5  4  7  6
10 | 10 11  8  9 14 15 12 13  2  3  0  1  6  7  4  5
11 | 11 10  9  8 15 14 13 12  3  2  1  0  7  6  5  4
12 | 12 13 14 15  8  9 10 11  4  5  6  7  0  1  2  3
13 | 13 12 15 14  9  8 11 10  5  4  7  6  1  0  3  2
14 | 14 15 12 13 10 11  8  9  6  7  4  5  2  3  0  1
15 | 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0

Convert
from 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
to  0  1  4  6 12 11  9  3 13 10  2 15  8  7 14  5

Encode
Raw  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
US:  1  2  3  4  5  6  7  8  B  C  D  F  G  H  J  K
JP:  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P



Conclusion:
I hope you've enjoyed this guide. If you think it's too much work, you can try
the automated version here: http://www.wnivek.co.nr/bomber2.htm
And if you liked that, feel free to check out my Lomax password gen:
http://www.wnivek.co.nr/lomax.htm

Special thanks to Erickson Deveza, who got me interested in this to begin with.


Copyright 2006 WNivek  ([email protected])