DIssection of p2-1:
0x12 (player) 0x0D (fire) 0x00 (blank) 0x9001 (copy/write: offset 0x01 + 1; total count 0x9 + 3 => 12 tiles; since offset < 12 loop through offset till current pos) 0x00; end of first row
0x01 (sand block) 0x44 (some kind of control byte) 0x01 (sand block) 0xB001 (copy/write: offset < count: loop through last to tiles until 0xB+3 tiles are written); end of second row
0x0B (skull) 0x00 0x00 (two blanks) 0x9001 (copy/write offset < count: loop through last two bytes until 0x9+3 tiles are written) 0x0B (skull); end of row
0x1A (sand block covering coins) 0xEB (control byte?!) 0xD020 (copy: offset > count (0xD+3 tiles): copy sandblocks from second row); end of row
first sand block from this row got already copied 0xD02F (copy: offset > count (0xD+3 tiles): copy sandblocks from second row starting at the second tile => the skull from row three gets copied, too); end of row
skull already copied 0xB04F (copy: offset > count (0xB+3 tiles): copy fire/blank from first row (tile 2-15)) 0x0B (skull); end of row
0xE02E (copy 0xE+3 tiles from fourth row second tile); end of row
first sand block already copied 0x00 (blank) 0xA001 (copy/write offset < count: write sandblock/blank until 0xA+3 tiles are written) 0xE05F (copy 0xE+3 tiles from second row starting at tile 16); end of row
this row get already completly copied from row 3
0x48 (another control byte?!) 0x09 (amulet key) 0xB080 (copy 0xB+3 tiles from second row tile 1) 0x13 (door)
okay that's it.
only missing are the three (control?) bytes 0x44 0x48 0xEB
EDIT: hm the text is a bit unstructured but I hope it is understandable...