Extended map number
Extended map numbers are map numbers which make use of letters in addition to digits. MAPA1
is an example of an extended map number.
In SRB2, the names of map lumps take the form MAPxx
, where xx specifies the particular map. The first ninety-nine, then, are named MAP01
to MAP99
, but the game allows a greater number of maps to be loaded by means of the extended map numbers, which include letters as well as digits. SRB1 Remake maps make use of these: for example, Knothole Base Zone Act 1 from the SRB1 Remake is MAPA1
. All letters are permitted, but note that, if the first character is a number, the second character must also be so. MAP1A
is not a valid map name, for instance.
The map numbers are ordered first from MAP01
–MAP99
, then MAPA0
–MAPA9
, MAPAA
–MAPAZ
, then MAPB0
–MAPB9
, MAPBA
–MAPBZ
, and so on, all the way up to MAPZZ
.
Conversion of extended map numbers
All extended map numbers have a corresponding numerical representation. This is used, for example, with the tunes
command. When editing the game, it is often necessary to convert between the two. The following algorithms can be used to do so:
Extended map number to integer
For the conversion, we need to establish four variables:
- x: The first character of the extended map number.
- y: The second character of the extended map number.
- p: The position of x within the alphabet. The numbering begins at zero, so C would be 2.
- q: The position of y within the alphabet. The numbering begins at ten, so C would be 12. If y is a number, q should be that number.
The integer representation is calculated as ((36*p + q) + 100).
- Example: We have the extended map number E4.
- x = E, y = 4
- p = 4, q = 4
- ((36*4 + 4) + 100)
- ((144 + 4) + 100)
- (148) + 100)
- E4 = 248
- Example 2: We have the extended map number GH.
- x = G, y = H
- p = 6, q = 17
- ((36*6 + 17) + 100)
- ((216 + 17) + 100)
- (233) + 100)
- GH = 333
Integer to extended map number
For the conversion, we need to establish five variables:
- x: The integer minus 100.
- p: x divided by 36. If you get a decimal, round down.
- q: The remainder when x is divided by 36. You can determine this by (x - (36*p)).
- a: The letter of the alphabet at the position p. The numbering begins at zero, so 2 would be C.
- b: The letter of the alphabet at the position q. The numbering begins at ten, so 12 would be C. If q is less than ten, b should be the same as q.
The extended map number is now ab in succession.
- Example: We have the integer 248.
- x = 148
- p = 148/36 = 4.[...]
- q = 148 - 36*4 = 148 - 144 = 4
- a = E, b = 4
- 248 = E4
- Example 2: We have the integer 333.
- x = 233
- p = 233/36 = 6.[...]
- q = 233 - 36*6 = 233 - 216 = 17
- a = G, b = H
- 333 = GH