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; }
$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) {