2014
10-05

(English) how to create 1KB exe for demoscene (start for 1KB or 4KB intro)

Opisze tutaj jak stworzyc bardzo maly plik *.exe z porsta animacja.
1. Stworz pusty projekt win32 w visual studio 2012.
2. Umiesc crinkler w folderze z solution. Zmien nazwe z crinkler.exe na link.exe.
3. Idz do Project options, VC++ Directories, Executable Directories, i didaj $(SolutionDir) na samej gorze.
4. Zmien Properites, General, Character Set na Not set.
5. Wylacz whole code optimalization.
6. Idzi do Properities, Linker, Advenced, Entry Point i wpisz "winmain".
7. Idzi do Properites / Linker / Command line i wpisz /CRINKLER do command line.
8. Dodaj nowy plik cpp. Skopiuj ponirzszy:
  1.  
  2. #define WIN32_LEAN_AND_MEAN
  3. #define WIN32_EXTRA_LEAN
  4. #include <windows.h>
  5. #define XRES 1920
  6. #define YRES 1080
  7. static const BITMAPINFO bmi = {{sizeof(BITMAPINFOHEADER),XRES,-YRES,1,32,BI_RGB,0,0,0,0,0},{0,0,0,0}};
  8. static unsigned int buffer[XRES*YRES] = { 0 };
  9. __declspec(naked) void winmain()
  10. {
  11. // Prolog
  12. __asm enter 0x10, 0;
  13. __asm pushad;
  14. {
  15. HWND hwnd = CreateWindow("i", 0, WS_POPUP | WS_VISIBLE | WS_MAXIMIZE, 0, 0, 0, 0, 0, 0, 0, 0);
  16. HDC hdc = GetDC(hwnd);
  17. while(true)
  18. {
  19. for( int a=0; a<XRES*YRES; a++)
  20. buffer[a]= 0xFF0000 + ((a*12345+345)%0x1000000);
  21. StretchDIBits(hdc,0,0,XRES,YRES,0,0,XRES,YRES,buffer,&bmi,DIB_RGB_COLORS,SRCCOPY);
  22. if(GetAsyncKeyState(VK_ESCAPE))break;
  23. }
  24. ExitProcess(0);
  25. }
  26. }
  27.  
Komentarze są zamknięte.