|
|
Category: Projects

Author: Martin Koleček
Program: Engine.pas, Speaker.pas, Blok.asm, Clearpag.asm, Flippage.asm, Writeblk.asm
File exe: Milknuts.exe, Editgra.exe, Editmap.exe, Editsnd.exe, Wav2raw.exe
need: Kolecek.zip
Example: Manual1.txt, Manual2.txt, Manual3.txt, Manual4.txt
Unit Engine.pas je určený pro DOS, pro Borland Pascal 7.0 reálny režim, nebo freepascal. Má za cíl vytvárení jednoduchých 2D her s podporou složitých zvukú pres PC-Speaker na pozadí behu programu, držení nekolika kláves na klávesnici najednou, BMP soubory a grafika podobná na 8mi-bitové NINTENDO. Platí zde limit 640KB takže pri použití všech hlavních funkci enginu vytvoříte program velký maximálne 90KB (samozrejme se nepočítají data externích souboru) pak dojde k chybe "heap overflow" (náraz na limit 640KB), takže je to vhodné spíš na malé projekty jako je ukážková hra Views: 632x
{ MANUAL2.TXT Copyright (c) Martin Kolecek }
{ }
{ Author: Martin Kolecek }
{ Datum: 01.05.2011 http://www.trsek.com }
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
Manual k programu EditGRA
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
Obsah:
1. Vyznam editoru
2. Graficky format gra
3. Prace s editorem
4. Kontaktni adresa
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
1. VYZNAM EDITORU
Editor je primarne urceny ke generovani souboru s priponou gra ktere se
daji prilinkovat k programum/hram napsanym v Assembleru. Je vsak docela
snadno mozne i pouziti v Pascalu nebo C.
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
2. GRAFICKY FORMAT GRA
Soubor s priponou gra je muj vlastni format takze neni mozne s editorem
otevirat soubory s priponou gra ktere byly pouzite napr ve starych hrach.
Tam je struktura souboru zcela odlisna od te moji. V mem souboru jsou 3
hlavni bloky dat:
prvnich 8000 bajtu
dalsich 1000 bajtu
a nakonec 48 bajtu
a jeste jeden bajt
Prvnich 8000 bajtu obsahuje hodnoty 0 1 2 a 3 a to tak ze jeden bajt
uchovava 4 hodnoty. Kazde dva bity obsahuji jednu hodnotu. Jeden bajt
tedy 8 bitu obsahuje 4 hodnoty. (4 pul-nibbly)
O techto cislech bude jeste psano dale. (priklad : 01 10 11 00 binarne)
Dalsich 1000 bajtu obsahuje hodnoty 0..15. Kazde 4 bity obsahuji jedno
cislo. V jednom bajtu 2 nibbly (napr. 0010 0111 binarne) Vice viz. nize.
A poslednich 48 bajtu. Zde jsou jiz nezakodovane hodnoty pro paletu barev.
Prvni 3 bajty z techto 48mi reprezentuji hodnoty Red Green Blue pro barvu
palety cislo 0, dalsi 3 bajty obsahuji RGB pro barvu 1 atd az barva 15.
Barvy pro paletu jsou v editoru vybirany z rozsahu 0 az 65535 barev. Pro
jednu stranku viz. nize je mozno pouzit max 15 barev (nulta barva je
rezervovana pro pruhlednou)
Na konci souboru s priponou gra je jeste jeden bajt. Ten udava cislo
stranky. Jednou strankou je mineno 160x200 pixelu v barevne hloubce 16
barev vybiranych ze 65535ti. Je totiz predpokladano ze soubory gra budou
pouzity i ve vetsim mnozstvi nez jen jeden pro cely program/hru a potom
by nastal problem s tim ze to ma mit cele jen 16 barev a proto je s
pouzitim tohoto posledniho bajtu umozneno nastavovat paletu barev tak
ze se vynasobi cislo stranky*16 + cislo barvy a tak se barevna paleta
nastavi ne vzdy na prvnich 16 barev ale treba na barvy 32 az 48 pro jinou
stranku.
Ted vysvetlim jak jsou k jednotlivym pixelum prirazena cisla barev. Pro
snadne pochopeni je nutno uvest ze editor ma generovat grafiku podobnou
na 8mi bitove nintendo (NES) ktere se prodavalo u Vietnamcu v 90. letech.
Na Nintendu je maximalni velikost jednoho vykreslovaneho spritu 8x8 pixelu.
Cela scena, vsechny objekty jsou poskladane ze ctverecku 8x8 pixelu a v
tomhle editoru je na to bran zretel. Kazdy takovy ctverecek muze mit
hloubku barev maximalne 4 barvy a z toho jedna je pruhledna takze 3.
Ve druhem bloku dat (1000 bajtu) jsou obsazeny ctverice barev jednotlivych
ctverecku. Prvni 2 bajty (4 nibbly) obsahuji cisla barev pro prvni ctverec
8x8 pixelu na strance 160x200 pixelu. Po rozkodovani souboru s priponou
gra dostaneme stranku zabirajici 32KB. Da se rozdelit na ctverecky 8x8
pixelu a vyjde jich 20x25 ctvercu po 8x8 pixelech. Dohromady 500 ctverecku.
Na jeden ctverecek tedy pripadaji 2 bajty z druheho bloku dat v souboru.
500 x 2B = 1000B
To jakou barvu ma ktery pixel v jednotlivych ctvereccich je definovano v
prvnim bloku dat v souboru (v tom co ma 8000 bajtu). Vezmeme si prvni
ctverecek ten co je v rohu nahore vlevo na strance 160x200. Prvni dva bajty
z prvniho bloku dat (8000B) obsahuji 8 pul-nibblu. Po rozkodovani dostaneme
8 bajtu s cisly 0 1 2 a 3 ktere znamenaji ktera barva z prislusne ctverice
se ma pouzit. Prislusna ctverice tj. v nasem pripade pro prvni ctverecek
tedy prvni dva bajty z druheho bloku dat v souboru (1000B).
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
3. PRACE S EDITOREM
Po spusteni se objevi textove menu s hlavni listou nahore. Lista obsahuje:
Napisy MENU dale EDITOR GRAFIKY pak je tam "soubor=" a sem se dosadi nazev
souboru ktery se bude editovat, dal je na liste cislo stranky a F10=EXIT.
Sipkami nahoru dolu vybirame polozku z menu ktere se rozbali pri stisku
klavesy sipka dolu nebo muzeme pouzit klavesove zkratky. F4=vytvorit novy
soubor, F3=otevrit soubor, F2=ulozit (nezapominejte ulozit, program k tomu
sam nikde nevyzyva) F1=zobrazi napovedu kde je popsano jak se co ovlada,
F5=spusit editor (je nutne nejdriv mit zadane jmeno souboru) F10=konec
programu a klavesy PgUp a PgDn meni cislo stranky (pri ulozeni se toto
cislo uklada jako posledni bajt souboru).
Kdyz se zadava jmeno editovaneho souboru tak vzdy ve formatu jmeno bez
pripony napr. soubor01 a enter. Priponu gra si editor dosazuje sam a to
jak pri vytvoreni noveho souboru tak pri otevirani jiz existujiciho.
Pokud mame zadane jmeno souboru ozve se zvuk ktery signalizuje uspesne
otevreni nebo vytvoreni souboru. Nyni muzeme spusit graficky rezim.
To provedeme stiskem F5 nebo z menu EDITOR a enter. Objevi se cerna
obrazovka s obddelnikem vpravo s ctvercem uprostred a maly ctverecek vlevo
nahore. Nachazime se v hlavnim okne editoru. Zde muzeme prohlizet celou
editovanou stranku a taky jedine zde muzeme pracovat se schrankou 8x8
pixelu. Sipkami pohybujeme malym ctvereckem vlevo na editovane strance
160x200 pixelu kterou vidime celou (cela leva polovina obrazovky).
Klavesou C se uklada obsah toho maleho ctverecku vlevo do schranky a
klavesou V se vklada obsah schranky na editovanou stranku. Kdyz neco do
schranky ulozime objevi se nahled toho co je ve schrance ve ctverci
vpravo uprostred toho obdelniku a taky pod timto ctvercem se objevi
ctverice barev toho policka 8x8 pixelu ktere mame ve schrance.
Z hlavni obrazovky editoru kterou jsme spustili F5 je mozne prechazet
na dalsi obrazovky editoru s dalsimi funkcemi. Pomoci F8 odtud spustime
editor jednotlivych barev. Pomoci F7 spustime editor jednotlivych ctveric
barev pro kazdy ctverecek 8x8 pixelu. A pomoci F6 spustime obrazovku kde
se kresli jednotlive pixely grafiky. Kdyz spustime nekterou z techto
obrazovek tak pred prechodem na jinou se musime vzdy nejprve vratit na
hlavni obrazovku pomoci F5 nebo Esc. Doporucuji F5 protoze pomoci Esc se
z hlavni obrazovky take vracime do textoveho menu. Preskoceni by nemelo
nastavat ale mohlo by proto navrat na hlavni obrazovku F5. Pro jistotu
uvedu priklad. Jsem na hlavni obrazovce s celou editovanou strankou
vlevo a nahledem schranky vpravo a prejdu stiskem F8 na obrazovku kde
se michaji barvy. Namicham par barev a ted chci prejit na obrazovku kde
se nastavuji ctverice barev pro jednotlive ctverecky 8x8 pixelu. Musim se
nejprve vratit na hlavni obrazovku stiskem F5 nebo Esc a teprve potom
muzu stiskem F7 prejit na obrazovku kde se nastavuji ctverice barev
jednotlivym polickum 8x8 pixelu. Obrazovky F8 F7 a F6 nereaguji samy na
sebe navzajem, vzdy je nutne se vratit na hlavni obrazovku stiskem F5.
F8 - spoustime editor barev:
Z hlavni obrazovky editoru jsme spustili editor barev. Zde sipkami doleva
a doprava vybirame kterou barvu chceme editovat (0 az 15) a klavesami
Insert a Delete pridavame a ubirame hodnotu cervene {R}
Home a End pridavame a ubirame hodnotu zelene {G}
PgUp a PgDn pridavame a ubirame hodnotu modre {B}
Stiskem F2 muzeme zmeny barev ulozit. Pro navrat na hlavni obrazovku
stiskneme F5 nebo Esc.
F7 - spoustime editor ctveric barev pro policka 8x8 pixelu:
Z hlavni obrazovky editoru jsme spustili editor ctveric. Kurzorovymi
sipkami vybirame barvu z vyberu barev vpravo. Tam kde je kurzor tak ta
barva se prirazuje. Klavesami IJKL pohybujeme malym kurzorem vlevo.
Leva polovina obrazovky reprezentuje editovanou stranku a maly kurzor se
po ni pohybuje po krocich 8 pixelu (po jednotlivych ctvereccich). IJKL
pouzivame jako kurzorove sipky. Klavesami ASDF prirazujeme ctverecku jeho
ctverici barev. Stisk A nastavi barvu 1, stisk S nastavi barvu 2, stisk D
nastavi barvu 3 a stisk F nastavi barvu 4. Nastavi se ta barva kterou mame
vybranou velkym ctvercem v prave casti obrazovky. Hned po stisku A,S,D nebo
F se prislusna barva objevi v malem ctverecku vlevo coz znamena ze je pro
dany ctverecek nastavena a zaroven se objevuji nastavene barvy v prave
polovine obrazovky dole. Pri prechodu malym kurzorem na jiny ctverecek se
hned meni ctverice barev na prave polovine obrazovky dole. Zmeny ulozime
stiskem F2. Pro navrat na hlavni obrazovku stiskneme F5 nebo Esc.
F6 - spoustime kreslici editor
Z hlavni obrazovky jsme spustili pomoci F6 editor na kresleni. Predpoklada
se ze jiz mame NAMICHANYCH 16 BAREV a MAME JEDNOTLIVYM CTVERECKUM 8x8
PIXELU PRIRAZENY JEJICH CTVERICE BAREV takze muzeme kreslit. Kurzorovymi
sipkami pohybujeme velkym ctvercem na leve polovine obrazovky. Tento
ctverec predstavuje vyber toho co bude "pod lupou". Na prave polovine
obrazovky mame malinky ctverecek ktery je kreslici kurzor. Timto kurzorem
pohybujeme klavesami IJKL a klavesy ASDF slouzi pro vkladani pixelu. Malym
kurzorem vpravo muzeme pohybovat v rozsahu ktery je dany velkym kurzorem.
Velky kurzor se pohybuje po krocich 8 pixelu, maly kurzor po jednom pixelu.
Kdyz malym kurzorem najedeme na oblast ktera nema nastavenou svou ctverici
barev z obrazovky F7, kreslici barvy zmizi. Je nutne nejprve nastavit
pro dany ctverecek 8x8 pixelu jeho ctverici barev. Kdyz malym kurzorem
najedeme z jednoho ctverecku 8x8 do oblasti druheho ctverecku, kreslici
barvy se automaticky nastavi na ctverici druheho ctverecku. Zmeny muzeme
prubezne ukladat stiskem F2. F5 nebo Esc pro navrat na hlavni obrazovku.
Jak zacit pracovat s editorem krok za krokem:
1. stisk F4 = zadat jmeno noveho souboru
2. stisk F5 = hlavni obrazovka editoru
3. stisk F8 = namichat barvy
4. stisk F5 = navrat na hlavni obrazovku
5. stisk F7 = nastavit ctverice barev pro jednotlive ctverecky 8x8 pixelu
6. stisk F5 = navrat na hlavni obrazovku
7. stisk F6 = kreslici editor (ovladani: kurzorove sipky + IJKL + ASDF)
8. stisk F5 = navrat na hlavni obrazovku
9. stisk Esc = navrat do textoveho menu
10. stisk F2 = ulozit
11. stisk F10 = konec
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
4. KONTAKTNI ADRESA
Kritiku nebo pokud potrebujete poradit s editorem nebo s mym formatem gra
posilejte na mail kolecek.m@email.cz
Mam i unit pro Pascal ktery nacita soubory gra a vykresluje grafiku takze
pokud jste docetli az sem a mate stale zajem muzete mi napsat a ja vam
poslu unit pro Pascal ktery pracuje s formatem gra.
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
ChangeLog v1.1
Pridal jsem kompresi RLE takze vysledny soubor je navic zabaleny.
Obsah vypada takto:
Prvni dva bajty v souboru (prvni word) obsahuji delku zabalenych dat.
Ostatni bajty jsou jiz samotny RLE blok.
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
[Save] [Print] [Send e-mail] |