$f = fopen($mod256k[1], 'r'); fread($f, 64); // skip crt header for ($i = 0; $i < $o_banks; $i++) { fread($f, 16); // skip chip header $CHIPS[$i >> 4][$i] = fread($f, 8 * 1024); } } // CREATE DIR if ($config['sort_dir']) { usort($DIR, 'sort_dir'); } $dir = ''; foreach ($DIR as $D) { $dir .= repair_case(str_pad(rtrim(substr($D[0], 0, 16)), 16, chr(0))); // name $dir .= chr($D[2]); // type $dir .= chr($D[1]); // bank $dir .= chr(0x0); // pad $dir .= pack('v', $D[4]); // offset, unused for crt $dir .= substr(pack('V', $D[3]), 0, 3); // size (encode 32, take 24) } // padding with 255 means also type 255 = EOF $dir = str_pad($dir, 8 * 1024, chr(0xff)); //if($MODE[3]){
$msg = preg_replace('!■(.)!e', 'chr(0x80 + ord("\\1"))', $msg); $msg = explode("\n", $msg); foreach ($help as $k => $v) { $kk = $k + 7; $t[$kk] = substr($t[$kk], 0, 26) . str_pad($v, 13, ' ') . substr($t[$kk], -1); } foreach ($msg as $k => $v) { $kk = $k + 10; $t[$kk] = substr($t[$kk], 0, 5) . str_pad($v, 15, ' ') . substr($t[$kk], 5 + 15); } foreach (array(2 * 40 + 27 => array_merge(range(0x14, 0x18), array(0x20), range(0x19, 0x1d)), 3 * 40 + 27 => array_merge(range(0x94, 0x98), array(0x20), range(0x99, 0x9d)), 5 * 40 + 27 => range(0x85, 0x8f), 22 * 40 + 27 => array_merge(range(0x90, 0x93), range(0x6, 0xb)), 23 * 40 + 27 => range(0xc, 0x13)) as $o1 => $data) { foreach ($data as $o2 => $val) { $t[$o1 / 40][$o1 % 40 + $o2] = chr($val); } } $screen = repair_case(implode('', $t)); // $screen = the screen ($400-$7e7) /* ** ENCODE COLORS */ $cols = ''; foreach ($col_pattern as $ln) { $cols .= chr($ofs[$ln] & 0xff); // just lower byte } asort($ofs); foreach ($ofs as $na => $dummy) { if (isset($LINE[$na])) { $cols .= $LINE[$na]; } }