§ Код конвертера
<?php $im = imagecreatetruecolor(256, 192); $data = @ file_get_contents($argv[1]); $mem = []; if ($data) { for ($i = 0; $i < strlen($data); $i++) $mem[$i] = ord($data[$i]); for ($i = 0; $i < 6144; $i++) update_charline($im, $mem, $i); imagepng($im, "{$argv[1]}.png"); } // Обновить определенную линию function update_charline(& $im, $mem, $address) { $address &= 0x3FFF; $byte = $mem[$address]; $Ya = ($address & 0x0700) >> 8; $Yb = ($address & 0x00E0) >> 5; $Yc = ($address & 0x1800) >> 11; $y = $Ya + $Yb*8 + $Yc*64; $x = $address & 0x1F; $attr = $mem[$x + 0x1800 + (($address & 0x1800) >> 3) + ($address & 0xE0)]; $bgcolor = get_color(($attr & 0x78) >> 3); $frcolor = get_color(($attr & 0x07) + (($attr & 0x40) >> 3)); $flash = ($attr & 0x80) ? 1 : 0; for ($j = 0; $j < 8; $j++) { $pix = ($byte & (0x80 >> $j)) ? 1 : 0; $clr = $pix ? $frcolor : $bgcolor; imagesetpixel($im, 8 * $x + $j, $y, $clr); } }; function get_color($color) { switch ($color) { // Lo case 0: return 0x000000; case 1: return 0x0000c0; case 2: return 0xc00000; case 3: return 0xc000c0; case 4: return 0x00c000; case 5: return 0x00c0c0; case 6: return 0xc0c000; case 7: return 0xc0c0c0; // Hi case 8: return 0x000000; case 9: return 0x0000FF; case 10: return 0xFF0000; case 11: return 0xFF00FF; case 12: return 0x00FF00; case 13: return 0x00FFFF; case 14: return 0xFFFF00; case 15: return 0xFFFFFF; } return 0; };
24 дек, 2020
© 2007-2023 Гнал психичный компьютер