function getRoomAt($pointer)
{
    global $memory;
    $room = array();
    $room['id'] = $pointer;
    $room['name'] = getVarStringAt($memory[$pointer]);
    $room['description'] = getVarStringAt($memory[$pointer + 1]);
    $exitArray = $memory[$pointer + 2];
    $exitNum = $memory[$exitArray];
    $room['exits'] = array();
    for ($i = 1; $i <= $exitNum; $i++) {
        $exitId = $memory[$exitArray + $i];
        $exitName = getVarStringAt($exitId);
        $room['exits'][] = array('id' => $exitId, 'name' => $exitName);
    }
    $exitDests = $memory[$pointer + 3];
    for ($i = 1; $i <= $exitNum; $i++) {
        $room['exits'][$i - 1]['dest'] = $memory[$exitDests + $i];
    }
    return $room;
}
Пример #2
0
$memory = file_get_contents($file);
$tmp = array();
for ($i = 0; $i < strlen($memory); $i += 2) {
    $b1 = sprintf("%02X", ord($memory[$i]));
    $b2 = sprintf("%02X", ord($memory[$i + 1]));
    $tmp[] = hexdec($b2 . $b1);
}
$memory = $tmp;
$pointer = 0x2dc4;
$items = array();
$item_count = $memory[$pointer];
for ($i = 1; $i <= $item_count; $i++) {
    $item = array();
    $item['id'] = $memory[$pointer + $i];
    $item['name'] = getVarStringAt($memory[$item['id']]);
    $item['desc'] = getVarStringAt($memory[$item['id'] + 1]);
    $item['room'] = $memory[$item['id'] + 2];
    print_r($item);
}
function getVarStringAt($pointer)
{
    global $memory;
    $len = $memory[$pointer];
    $str = '';
    for ($i = 1; $i <= $len; $i++) {
        $str .= chr($memory[$pointer + $i]);
    }
    return $str;
}
function dumpRaw($start, $end)
{