I've managed to deduce a bit of the dungeon layout.
First, the room directions:
const PROGMEM prog_uchar roomadj[] = {
// Left Right Up Down Room
0, 1, 0, 4, // 0
0, 2, 0xFF, 5, // 1
1, 3, 0, 6, // 2
2, 0, 0, 7, // 3
0, 5, 0, 9, // 4
4, 6, 1, 10, // 5
5, 7, 2, 11, // 6
6, 8, 3, 12, // 7
7, 0, 0, 13, // 8
0, 10, 4, 0, // 9
9, 11, 5, 0, // 10
10, 12, 6, 0, // 11
11, 13, 7, 0, // 12
12, 14, 8, 0, // 13
13, 0, 0, 0, // 14
};
/*
Room layout:
0 1 2 3
4 5 6 7 8
9 10 11 12 13 14
*/
Next the room encoding. Let's use this to make it easier:
const PROGMEM prog_uchar roomNibbleToByte[] = {
TILE_WALL_DARK,
TILE_EMPTY,
TILE_WALL,
TILE_KEY,
TILE_LADDER,
TILE_GOLD,
TILE_PRINCESS,
TILE_DOOR,
TILE_WYVERN,
TILE_WYVERN_2ND,
TILE_SPIKES,
TILE_GHOST_RIGHT,
TILE_GHOST_LEFT,
TILE_GHOST_LEFT_2ND,
TILE_HEART,
};
So for example:
const PROGMEM prog_uchar rooms[] = {
0x10,0xc1,0x10
That is:
1 x Dark tile
12 x empty tiles
1 x Dark tile
Decoding the room layout gives this:
Room 0
|
|
|
|
| - - - - - - - - - - - -
| K | |
| = * | |
| = - | P #
| = | | - - - - - - - - -
Room 1
W
- - -
- | *
- - - - | | - - - - - - -
| |
| W w
= | *
- - - = - | - - - - - - -
Room 2
- - - - - - - - - - -
| | | | | |
| - |
! ! ! |
- - - - - - - - - - = - |
|
Room 3
|
|
|
G * |
- - - - - - - - - - - - |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| = | | | | | | | | | | |
Room 4
| = | | | | | | | | | | |
| =
| =
| = g w
| = - - - w -
| = | - -
| = | |
| = g ! ! ! ! = | |
| - - - - - - - - - = | |
| | | = | | | | | | | | |
Room 5
| | | = | | | | | | | | |
| = | | | | = | | |
# = | g K |
- - | w - = - - - - |
= | *
- - - | -
| - | -
| z @ - G | -
| - - - | - = - - | - - -
| | | | | | | | | | = | |
Room 6
| | | | | | | | | | = | |
| * | = | |
| - | W = | |
| - - - - - | |
| - - - - | K |
| # | - = |
- - - = |
- G = - - - - |
- | - - - - - = | | | | |
| | | | | | | | | | | | |
Room 7
| | | | | | | | | | | | |
|
| W *
| - -
| - - - |
| G | |
| - - - - - - | |
| # = | K ! * | | |
| - - = | - - - - - | | |
| | | | | | | | | | | | |
Room 8
| | | | | | | | | | | | |
| |
# - |
- - - W - - - - - = | |
| = | |
| - = - = |
| * | = | - = |
| ! ! ! - | = | | g = K |
| - - - | | = | | - - - |
| | | | | | | | | | = | |
Room 9
| | | | | | | | | | = | |
| | = #
| - -
| -
| W - -
| K - * | - |
| - - | ! - | - | |
| | | ! | - | | ! | ! | |
| | | - | | | | - | - | |
| | | | | | = | | | | | |
Room 10
| | | | | | = | | | | | |
| = * | |
| = - | |
W |
- - -
| G
| - - - - - - -
| | | ! ! ! g | |
| | | - - - - - - - - | |
| | | | | | | = | | | | |
Room 11
| | | | | | | = | | | | |
| | | | = K
| * G -
| - w - - = - - | -
| =
# g ! !
- - - - - - - -
| @ !
| - - - - - - - - - - - -
| | | = | | | | | |
Room 12
| | | = | | | | | |
= | | | | | | - - -
- - |
- - | |
- w
- | W - - -
- | * ! ! ! ! ! !
- - | | - - - - - - - - -
| | | | | | = | | | | | |
Room 13
| | | | | | = | | | | | |
| K | | | | = | | | #
| g = -
| - - - - - - - - - = - |
| = | |
| * W w = | |
| - - - = | |
= | |
- - - - - - - - - - - | |
| | | | | | | | | | | | |
Room 14
| | | | | | | | | | | | |
| | | |
- | | | |
| - - W @ | | | |
| - | | - | | | |
| g * | | | |
| - - - - - - - - | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
g g g g g g g | | z z G G
Using the following legend:
WALL_DARK = |
EMPTY =
WALL = _
KEY = K
LADDER = =
GOLD = *
PRINCESS = P
DOOR = #
WYVERN = W
WYVERN_2ND = w
SPIKES = !
GHOST_RIGHT = G
GHOST_LEFT = g
GHOST_LEFT_2ND = z
HEART = @