scene.cz - cs demoscene portal
    HOME |  CO JE TO DEMOSCÉNA |  JAK TVOŘIT |  OSA CS DEMOSCÉNY |  DISKUZE |  AKCE |  VÝBĚR DEM |  ODKAZY
jak-tvorit

migeelův demoscénní koutek: 4k Delphi intro

Autor : migeel & carlos

Když se podíváte na titulek, pravděpodobně si pomyslíte, že jsem se zbláznil. Skutečně je možné udělat hezky příjemné 4k intro v Delphi. Tento tutoriál Vám ukáže, jak na to.

Nejdříve si budete muset stáhnout některé pomůcky z internetu:

  • Borland Delphi 6 Personal Edition (pokud ho ještě nemáte :-)
  • Systémové jednotky od Vladimira Kladova
  • UPX - Ultimate Packer for eXecutables nebo jakýkoli jiný pakovač souborů .COM
  • FakeCom od Darkblade (je v časopise Hugi #27)
  • Resource Hacker
  • migeelův Realigner

Tak, pojďme spustit Delphi a pokusit se zkompilovat prázdný formulář a podívat se na velikost spustitelného souboru. Hm, 360 kB… to není sranda. Klikněte na Project->View source. Nechte tam jen toto:

program Project1;

uses
  windows;

begin

end.

Zkompilujte to ještě jednou a podívejte se na velikost .EXE souboru. To už vypadá mnohem lépe - jen 8k, ale pro nás stále příliš. Teď je čas na rozbalení systémových jednotek. Rozbalte je a v Delphi klikněte na Tools->Environmental options. Vyberte záložku Library a vložte cestu k Vašim novým systémovým jednotkám do seznamu (musejí být první v seznamu). Klikněte na OK a zkompilujte ještě jednou. 5632 bajtů! To je velmi dobré (mějte na paměti, že ještě srazíme velikost komprimováním).

Teď se můžeme rozhodnout - použijeme API funkce jako RegisterClass, CreateWindow, TranslateMessage,... nebo implementujeme hlavní okno jako dialog z resourců. Myslím, že způsob přes dialog je lepší (velikostně menší) volba, i když můžete zkusit i tu druhou.

Takže, pojďme udělat ten dialog. Spusťte Notepad a napište toto:

MAIN DIALOG 0, 0, 320, 240
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "4k Delphi intro: POSSiBLE"
BEGIN

END

Uložte to jako dialog.rc, zkompilujte jej do dialog.rc (brcc32.exe dialog.rc) a nakopírujte do adresáře projektu. Do zdrojáku projektu přidejte řádek {$R dialog.res}, vložte volání DialogBoxParam a voilá; Vaše první 4k intro je hotovo. Udělal jsem malý příklad, abyste to mohli lépe pochopit. Za moc nestojí, ale je velmi jednoduchý pro pochopení (neobsahuje žádný nezbytný kód navíc).

Ale počkat! To je stále 6656 bajtů! To není 4k intro! Jistě, zapomněl jsem: pro toto intro to už není důležité (to už je malé dost), ale pokud chcete udělat 4k intro budete potřebovat udělat následující: stáhněte si ResHacker nebo jakýkoli jiný editor resourců a otevřete si tuto aplikaci v něm. Uvidíte některé divné resourcy jako DVCLAL a PACKAGEINFO. Pro tuto aplikaci nejsou důležité. Smažte je. Teď přišel čas pro moji pomůcku: Realign. Tento prográmek vymaže DOS start-up block z našeho souboru a zarovná ho. Napište "realign.exe project1.exe" a velikost aplikace klesne na 6319 bajtů. Stále příliš mnoho, co?

Rozbalte do adresáře projektu FakeCom a napište:

copy /B fake.com+project1.exe project.com

Tento příkaz vloží za sebe FakeCom.com a Project1.exe. FakeCom je malinký prográmek, který extrahuje data, obsažené na konci souboru (naší .EXE aplikace) a následně ji spustí. To je důležité, protože chceme zkomprimovat CELÝ soubor (hlavičky .EXE souborů se normálně nedají zkomprimovat, protože pak je Windows odmítnou spustit).

Nyní zpakujte nově vytvořený .COM soubor pomocí UPC (upx.ece --best project1.com) a podívejte se na novou velikost souboru. UPX odvedl svou práci velmi dobře a sbalil náš .EXE soubor v Delphi na neuvěřitelných 2835 bajtů! A nejlepší na tom je, že naše intro stále funguje :-)

Jak vidíte, je tam dost místa pro vložení nějakého užitečného kódu, takže přestaňte číst tento článek a běžde naprogramovat něco užitečného!

Pro zjednodušení si života si vytvořte batch, který tuto špinavou práci udělá za Vás:

makeit.bat:
@echo off
start /W reshacker.exe
realign project1.exe
copy /B fakecom.com+project1.exe project1.com
upx --best project1.com

echo Run intro now?
choice
if NOT ERRORLEVEL 2 project1.com

z http://www.migeel.sk přeložil crs/broncs, autor původního textu: Migeel




 
Nejnovejsi odkazy v teto sekci :
CodeSampler - Zdrojaky z oblasti 3D grafiky
BeroTracker - nadupany tracker

CS skupiny :
Broncs | produkce
CS_zvuk
Downtown | produkce
Insomnia | produkce
LowFuel | produkce
Marshals | produkce
MovSD | produkce
clrsrc | produkce
terror opera | produkce
Pine Records
Pipkasoft | produkce
Satori | produkce
Tetris
Vectors | produkce
tb2 | produkce
eL | produkce
7gods | produkce
Peon | produkce
Osiris | produkce
Kosicky vyber | produkce