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
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
MAPBZ, and so on, all the way up to
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