HRA

ZIP
Herní styl V. Scrolling
Multiplayer Bez multiplayeru
Rok vydání 1987
Programátor Alastair Darren Watts
Grafik Alastair Darren Watts

INTRO

BMP TO CHARSET LOGO converter

Možnosti C64 grafického módu charset multicolor jsou 40x25 znaků (tedy celá obrazovka - videoram), z nichž každý může mít hodnotu 0-255. Jejich grafická podoba je určena znakovou sadou - charsetem, který má velikost 2048 Bytů (8 x 256). Zobrazení videoram a charsetu se určuje primárně adresou $D018 (v kombinaci s adresou $DD00), za předpokladu, že v $D011 je nastaven textový režim (např. $D011,$1B).

V multicolor režimu jsou jejich barvy určeny na adresách:

$D021 - barva pozadí
$D022 - společná barva multicolor1, tuto barvu bude mít multicolor pixel "01"
$D023 - společná barva multicolor2, tuto barvu bude mít multicolor pixel "10"

Tyto tři barvy (bez použití raster časování) jsou společné pro celou obrazovku.

Barvy multicolor pixelů "11" jsou určeny color ram - barvami na adresách $D800 - $DBE8, která pro každý znak může být jiná. Oproti bitmapě nebo čistě hiresovému módu ale má tu zvláštnost, že lze použít jen prvních 7 barev. Pokud je hodnota color ram $0-$7, je znak v hiresu a používá pouze 2 barvy, pokud je hodnota $8-$F, je znak v multicoloru a pixely "11" nabírají také barvu $0-$7.

Tento režim se ve většině případů používá pro psaní textu s vlastní znakovou sadou. Použití nachází i pro jednodušší grafické objekty, typicky pro čtyřbarevná loga. Ale z výše popsaných možností je zřejmé, že jeho možnosti jsou o něco vyšší, než tyto dvě nejčastější.


Čtyřbarevné charset logo

Na C64 existuje jen velmi malý počet editorů nevalné kvality, které umí využít plných možností tohoto módu a pokud je mi známo, tak konvertor neexistuje žádný. Dokonce ani GODOT pravděpodobně nemá plugin pro ukládání do tohoto formátu. Proto jsem se rozhodl zaplnit toto vakuum a konvertor nakódovat.


BMP2LOGO

je grafický konvertor pro Windows, který umí načíst obrázky ve formátech BMP, JPEG a GIF a uložit do charset multicolor.

Tlačítkem LOAD se otevře dialog pro nahrání konvertování obrázku. Obrázek je možné načíst v původní velikosti a nastavit mu offset (tažením myší nebo zapsáním souřadnic), nebo ho zmenšit/roztáhnout na velikost 320 x 200 a eventuelně mu zachovat poměr stran.

Po načtení obrázku je nutné ho zkonvertovat do palety C64 tlačítkem PROCESS. Konvert probíhá běžným hledáním nejbližší barvy, je možné použít dithering anebo redukci jasu. Redukce jasu je výhodná při konvertování fotografií, u kreslených obrázků většinou dochází ke zkreslení barev. Při ditheringu musí být použita automaticky.

Paletu, která bude použita pro konvertování (a následné zobrazování) je možné upravit v dialogu pod tlačítkem PALETTE. K dispozici jsou 3 přednastavené, paletu je také možné ručně editovat, uložit a nebo nahrát. Defaultně je použita paleta z Vice, která dle mých pokusů ve většině případů dává nejlepší výsledek. Možná tato paleta někomu nevyhovuje z hlediska reprezentace C64 barev na obrazovce monitoru, ale pro konvertování má hodnoty velmi vhodné.

Po zpracování obrázku jsou sečteny barvy, které se v něm vyskytují a hodnoty jsou vypsány v tabulce v pravém dolním rohu. Nejčastější barva je navržena jako pozadí $D021, druhá a třetí jako multicolor $D022 a $D023. Ve velké části případů tato přiřazení stačí, ale je možné je měnit dle libosti. Pokud se nějaká barva vykytuje méně často, ale je v ní nakresleno hodně detailů (např. obličej nějaké postavy), je výhodnější ji přiřadit do některé ze společných barev.


CHARSET picture

Tlačítko CONVERT převede obrázek do charset multicolor. Konvertor prochází každý char a konvertuje ho do čtyř barev (v případě, že je v charu 1 nebo 2 barvy, pokusí se ho zkonvertovat do hiresu). Technické informace o konvertu jsou zobrazeny ve statusbaru. Pokud výsledný konvertovaný obrázek zabírá méně charů, než je maximální velikost charsetu (což je 256, ale v programu je tuto hodnotu možné snížit až na 128), je možné ho rovnou uložit v C64 formátu. Konvertor samozřejmě hned při konvertu hledá shodné chary, ale protože na obrazovce je 1000 znaků, může teoreticky nabobtnat i velikost charsetu na 1000 charů.


CHARSET picture, s použitím ditheringu

V takovém případě je možné ho uložit jako Win bitmapu pro pozdější dokreslení, nebo použít tlačítko REDUCE. Tato funkce prohledává podobné chary a sloučí je dohromady. Pokud jsou si dva chary podobné, spočítá, kolikrát se vyskytují na obrázku a ten méněkrát použitý je nahrazen. Vyhledávací funkce postupně rozšiřuje definici pojmu "podobný charset", takže ve většině případů je schopna dostat se na požadovanou maximální velikost charsetu. Při této operaci samozřejmě dojde k degradaci obrázku, ale následně je možné ho již uložit v C64 formátu. Je možné ještě zvolit, aby se konvertovalo jen do multicoloru. V takovém případě většinou obrázek zabere o něco méně charů.


BMP2PETLOGO

Při tvorbě konvertoru BMP2LOGO mě napadlo, že by bylo možné fukci REDUCE použít i pro konvertování do již hotového charsetu. Proto jsem udělal takový okleštěný klon, který konvertuje obrázky do PETASCII, tedy do charsetu, který má C64 v ROM.

Funkce jsou velmi podobné, používá se charset v hiresu, proto je možné měnit pouze barvu $D021. Oproti tomu ale color ram $D800 může mít hodnoty 0-15. Je možné použít přepínač, jestli konvert proběhne do velkých nebo malých písmen (v ROM C64 jsou dva charsety a přepínají se klávesami SHIFT a C=). Ubyl také status bar, jelikož velikost charsetu je daná a vše je v hires, nebylo v něm co zobrazit.


PETSCII picture

Tlačítko EXPORT uloží výsledný obrázek do formátu Marq's PETSCII Editor, což je celkem povedný multiplatformní grafický editor pro PETASCII (funkčnost exportu vyzkoušena pouze na Windows verzi).


Pokud se konvertují obrázky pomocí BMP2LOGO, je nutné počítat s tím, že dochází k veliké degradaci grafiky, u konvertoru BMP2PETLOGO je degradace přímo obludná. Mojí motivací nebylo vytváře nové Hyper-FLI módy, ale pokusit se dostat maximum z tradičního grafického módu, který nepotřebuje žádné složité kódování.

Linky na CSDB:
BMP2LOGO
BMP2PETLOGO


LHS /Padua /API

Nový příspěvek k článku

podpis :
První znak podpisu musí být vykřičník, jinak se příspěvek neodešle (ochrana proti spamu)

Advert

Hardcode and datamining by PCH of UNREAL, Hardware guru by RAY of UNREAL, Bugs report by SILLICON of UNREAL
UNREAL 2014-2021 Czech republic