Skip to content

Instantly share code, notes, and snippets.

@d7samurai
Last active March 30, 2024 20:32
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save d7samurai/a7ffc8090cf4b38b934b0fd7dd2df86f to your computer and use it in GitHub Desktop.
Save d7samurai/a7ffc8090cf4b38b934b0fd7dd2df86f to your computer and use it in GitHub Desktop.
My First Program

My First Program

Proof-of-concept prototype of bHeader: A zero-dependency C/C++ framework distribution format where the "engine" is embedded in a regular source file as a pre-compiled binary payload in the form of a byte array.

The payload in this demo contains a Direct3D 11 line renderer and has built-in Media Foundation based video recording, along with a range of native utility functions (see API). At startup the engine initializes a fullscreen window with a D3D11 rendertarget, and every frame it calls into the update function with some useful runtime data that can be leveraged by user code (stuff like frame count, total/delta time, window size, keypresses etc).

The source is zero-dependency in the sense that no #includes, #defines, imports, libs, dlls or whatever are necessary; just paste the framework code into any text editor, save and compile - with no compiler or linker flags required. The resulting executable (of a "blank project") is < 12 KB.

  • Single file
  • Zero dependencies
  • Zero commandline flags
  • ~Zero compilation time (for the engine)
  • No UB (for the engine)
  • No complicated setup configuration or build system
  • C/C++ agnostic (at least the final product will be)

This particular incarnation is adapted for use with TCC (Tiny C Compiler)*. The commandline for compiling to a single, self-contained executable is simply

tcc my_first_program.c // produces my_first_program.exe

Example program:

#define BARS 239

static float d[BARS];
static int i = 0;

if (!frame) set_background_color(0.1f, 0.1f, 0.1f);

d[i] = (float)delta * 25000;

for (int j = 1; j <= BARS; j++)
{
    draw_line(j * 8, 1000, j * 8, 1000.0f - d[(i + j) % BARS], j == BARS, 1, j == BARS, 1);
}

i = ++i % BARS;

draw_line(0, 583, 1920, 583, 1, 0, 0, 0.5f);

print_string("PRESS ESC TO EXIT", 16, 16, 16, 1, 0, 1, math_sin(time * 2) * 0.5 + 0.5);
print_string("16.7 MS", 16, 555, 16, 1, 0, 0, 1);
print_int(frame, print_string("FRAME #", 16, 1016, 16, 1, 1, 1, 1), 1016, 16, 1, 1, 0, 1);
print_float((float)delta * 1000, 3, print_string("DELTA TIME: ", 16, 1048, 16, 1, 1, 1, 1), 1048, 16, 1, 1, 0, 1);

Program output:

output.mp4

Captured using the built-in record-to-disk functionality:

if (frame == 0) start_recording();   // begin capture at frame 0
if (frame == 1200) stop_recording(); // end capture at frame 1200

*To make it MSVC compatible, change

__attribute__((section(".payload")))

to

__declspec(allocate(".payload"))
void set_background_color (float r, float g, float b);
void draw_line (float x0, float y0, float x1, float y1, float r, float g, float b, float a);
float print_string (char* text, float x, float y, float size, float r, float g, float b, float a);
float print_int (int number, float x, float y, float size, float r, float g, float b, float a);
float print_float (float number, int decimals, float x, float y, float size, float r, float g, float b, float a);
double math_cos (double x);
double math_sin (double x);
double math_atan2 (double x, double y);
double math_pow (double x, double y);
double math_sqrt (double x);
int math_rand ();
void start_recording ();
void stop_recording ();
///////////////////////////////////////////////////////////////////////////////////////////////////
void update(int frame, double time, double delta, float width, float height, char key[256], _Bool recording)
{
// your program here
}
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
#define T typedef
#define R return(
#pragma section(".payload", execute)
__attribute__((section(".payload"))) volatile unsigned long long p[] = {0xd7d7d7d7d7d7d7d7,0x57565508245c8948,0x5741564155415441,0x048b486520ec8348,0x358d4c0000006025,0x1dbe0f44000019f4,0x48e98b4c000019ec,0x4820428b4818508b,0x588b48028b48108b,0x188c8b443c438b20,0x19548b4100000088,0x8bd23345d3034820,
0x0ffb0348f68b493a,0x451b75d83b4407b6,0xc08445fe2b49c38a,0xbe0f44c6ff481974,0xc13b44370cb60f06,0xc28348c2ff41eb74,0x2419448b41cceb04,0xc303481c19548b41,0xb70fd30348ca6349,0x248b44cb8b48483c,0x00001977158d48ba,0x8d48d4ff41e3034c,0xcb8b480000197915,0x8d48d4ff41f88b48,0xcb8b480000197615,0x40bbd4ff41f08b48,
0x7024448948000000,0x44ffffff192d8d48,0x4c8d4ccd8b48c38b,0x4c00001c9cba6824,0xbacb8b44d7fff08b,0xb841c933000020b0,0x8b48d6ff00003000,0x8b4800001c9cb9f8,0x48f8458948a4f3f5,0x0fe0ff0000012705,0x8d480000192205b6,0x74c0840000191c35,0x3eb60fe88bdb3354,0xff41ce8b48c6ff48,0x0ff88b4cf70348d6,0x74c984c6ff480eb6,
0x493eb60ff18b442e,0xd68b48c6ff48cf8b,0x1b2e0d8d48d4ff41,0x048948f703480000,0x01ee8349c3ff48d9,0x487024748b4cda75,0xcd8b49b07501ed83,0xc4834860245c8b48,0x415d415e415f4120,0x000000e95d5e5f5c,0x565508245c894800,0x4156415541544157,0xfffc2024ac8d4857,0x000004e0ec8148ff,0xc024bc290fe18b4c,0x0004bac933000004,
0x00001ac015ff0000,0x13e6158d48ff3345,0x058d4ccf8b450000,0x66c78b4100001b6c,0x89450b75ff3a8090,0x488d4404c0834908,0x9a3dc2ff48c0ff01,0xbf0f4ce472000001,0x1d8d48000015531d,0x48db034c0000154c,0x8d480000161e3d8d,0xdf3b4c00001c3b15,0xff4903b60f456673,0x44087380f88041c3,0x4a4cebc2ff480288,0xffffff04438cbf0f,
0xffff024394bf0f4e,0x4cd3034ccb0348ff,0xc78b4dca2b4dc98b,0x4dcf470f4dd13b4c,0x66d22b4c1f74c985,0x00000000841f0f66,0xff491204b60f4100,0x3b4dc2ff480288c0,0x9a72df3b4cee72c1,0x0001f085c7c0570f,0x48c0330000005000,0x89480000159a1d8d,0x8d8d480000023485,0x023c8589000001f0,0x000c97058d480000,0x000001f485110f00,
0x0f000001f8858948,0x8948000002248511,0x85110f000002309d,0x1485110f00000204,0x0019b715ff000002,0xb94158247c894c00,0x247c894c91000000,0x247c894cc38b4c50,0x247c894cd38b4848,0x00382444c7c93340,0x00302444c7800000,0x00282444c7800000,0x00202444c7800000,0x00197715ff800000,0xc700000020b94100,0x00b0000000043085,
0x48c03345d88b4800,0xc933000000a8858d,0x858d484824448948,0x247c894c000000a0,0x448948e1518d4140,0x000430858d483824,0x000007302444c700,0x000001282444c700,0xb1e8202444894800,0x00a08d8b48000018,0x486824448d4c0000,0x8b48000014ba158d,0x00a88d8b4810ff01,0x486024448d4c0000,0x8b48000014b2158d,0x68244c8b4810ff01,
0x48000000e0858d4c,0x8b48000014aa158d,0x00e08d8b4810ff01,0x8b4848558d480000,0x484d8b483850ff01,0x95158d4850458d4c,0x50ff018b48000014,0x558d48504d8b4830,0x570f3024548948b8,0x00000140bd894cc0,0x570000014885c748,0x015085c748000000,0x0ff3000000010000,0x85c700000160857f,0x0000002000000158,0x00020000015c85c7,
0x7c894c018b480000,0x4820247c894c2824,0x408d8d4c6824548b,0x50ffc38b4c000001,0x4d8d4cb84d8b4878,0x00001428058d4cc8,0x4850ff018b48d233,0x4d8d4c68244c8b48,0xc03345c8558b48e0,0x8b484850ff018b48,0x8b4800558d48c84d,0x247c894c5050ff01,0x44894890458d4850,0x0019a70d8d484824,0x8d4840247c894400,0x7c8944000013eb05,
0x448948c933453824,0x058d48c033453024,0x0000fdba000013dc,0x894c282444894800,0x0000175ae820247c,0x4d8b486824448b48,0xff018b48388b4890,0x8b48904d8b482050,0x481852ff118b48d8,0x48c9334568244c8b,0x458d48c38b4cd08b,0x57ff202444894870,0x058d48904d8b4860,0xf085894800001388,0x137e058d48000000,0x0001108589480000,
0x89446824448b4800,0x85c748000000f8bd,0x00000010000000fc,0x4400000104bd894c,0x89440000010cbd89,0x85c74800000118bd,0x000000020000011c,0xffff0000012485c7,0x000128bd894cffff,0xff018b48388b4800,0x8b48904d8b482050,0x481852ff118b48d8,0xf0958d4868244c8b,0xb841c88b4c000000,0x68458d4800000002,0x5c89482824448948,
0x7c894c5857ff2024,0x3345d0458d485024,0x8d484824448948c9,0x7c89440000187b0d,0x0012d3058d484024,0x334538247c894400,0xfdba3024448948c0,0x12c2058d48000000,0x4c28244489480000,0x001631e820247c89,0x8b486824448b4800,0x018b48388b48d04d,0x48d04d8b482050ff,0x1852ff118b48d88b,0xc9334568244c8b48,0x8d48c38b4cd08b48,
0x4489480000008885,0x4c8b487857ff2024,0x000080858d4c6824,0x88bd894cc0570f00,0x78857f0ff3000001,0x0190bd8944000001,0x000170958d480000,0x0000019485c74800,0x017085c700000001,0x85c7000000030000,0x0000000100000174,0x00017090ff018b48,0x02708d8d48d23300,0x00000148b8410000,0x4c8b4800000939e8,0x000090858d4c6824,
0x0011ff056f0f6600,0x00000270958d4800,0x00010000027885c7,0x0280857f0ff30000,0x0000029085c70000,0x029485c700000001,0x85c6000000010000,0x018b480f0000029c,0x458b0000016890ff,0x0d100ff3c0570f00,0x244c8b48000011c4,0x000000bcbd894c68,0x04458bc02a0f48f3,0xc7000000c4bd8944,0x000010000000b085,0x01000000b485c700,
0x0000b885c7000000,0x5e0ff30000000400,0x2a0f48f3c0570fc8,0x858948d8458d48c0,0x8948c03300000130,0x580ff30000013885,0x0ff3d84d110ff3c9,0x0ff30000115e0d10,0x48dc4d110ff3c85e,0x8d4c784d8d4c018b,0x958d480000013085,0x481850ff000000b0,0xb04d8d4c68244c8b,0x48000000d8bd894c,0x85c7000000c8958d,0x000c0000000000c8,
0x0000cc85c7c03345,0xd085c70000000200,0xc700000001000000,0x010000000000d485,0x0f1850ff018b4800,0x8d4c28458b004510,0x8b48104d100fc04d,0x01a0958d4868244c,0x0001a085110f0000,0x01c88589c0334500,0xf22045100ff20000,0x0f000001c085110f,0xc748000001b08d11,0x000003000001bc85,0x00000001c485c700,0x50ff018b48000200,
0x0000109805100f28,0x0d100fd233007d8b,0x046d8b440000109c,0x85110f00020070b9,0x0fa07d89000001d0,0xd5e8000001e08d11,0xe8804d8d48000013,0x804d8b48000013d2,0x4800001079058d4c,0x8b4800001082158d,0x48000000c090ff01,0x01e0858d4c804d8b,0x001077158d480000,0x00c090ff018b4800,0x8d48804d8b480000,0x02b8410000107315,
0x90ff018b48000000,0x804d8b48000000a8,0x8b00001069158d48,0xdd0b4920e3c148df,0x90ffc38b4c018b48,0x804d8b48000000b0,0x4900001059158d48,0x00003c00000001be,0xff018b48c68b4d00,0x4d8b48000000b090,0x00001048158d4880,0x000100000001be48,0x018b48c68b4c0000,0x8d48000000b090ff,0x00001316e870244c,0x018b4870244c8b48,
0x4800000fb9058d4c,0x90ff00000fc2158d,0x244c8b48000000c0,0x000001d0858d4c70,0x4800000fb9158d48,0x000000c090ff018b,0x158d4870244c8b48,0xd400b84100000ff4,0xa890ff018b480030,0x70244c8b48000000,0x4100000f99158d48,0x018b4800000002b8,0x8b48000000a890ff,0x0f8e158d4870244c,0x018b48c38b4c0000,0x8b48000000b090ff,
0x0f86158d4870244c,0x018b48c68b4d0000,0x8b48000000b090ff,0x0f7e158d4870244c,0x018b48c68b4c0000,0x8d48000000b090ff,0xfd15fff63245604d,0xffa84d8d48000012,0xa84d8b000012fb15,0x0ff2000012fa15ff,0x8d4800000428bd10,0xb4290f0000168b1d,0x401f0f000004d024,0x00000000841f0f00,0x202444c7c9334500,0x48c0334500000001,
0xd233000002408d8d,0xc0850000126215ff,0x00000248bd833b74,0x48000004c4840f12,0x15ff000002408d8d,0xc7c933450000124c,0x4500000001202444,0x0002408d8d48c033,0x00122715ffd23300,0x1f05f6c575c08500,0x046e850f01000015,0x4860244c8b480000,0x2824548948f0558d,0x3345b0558b48f633,0x018b4820247489c0,0x487050ff044e8d44,
0x48584d8d48f0458b,0x35890000137a0589,0x122615ff0000137c,0x854558458b480000,0x48f6570fc88b48ff,0xf2c0570fa84d450f,0xc12b4860452a0f48,0x2a0f48f2a84d8948,0xff8545f05e0ff2f0,0x04458bfe280f0375,0x8844db570fc0570f,0x280fd6280f302474,0xcf8b41d75c0ff2ce,0x00458bc02a0f48f3,0x058d48d82a0f48f3,0x244489480000145c,
0x41202444110ff328,0x4560244c8b48d4ff,0xff41b0558b48c033,0xff018b48fe280fc7,0x058d4c00458b7850,0x244c8b48000013ec,0xe0558b48c0570f60,0x0018a445c7c9570f,0x8bc02a0f48f30000,0x00000438b5890445,0xf340758930758948,0x004445c7c82a0f48,0x3845110ff33f8000,0x018b483c4d110ff3,0x8b480000019090ff,0x00000002ba60244c,
0x0000c090ff018b48,0x8b4860244c8b4800,0x8890ff018b486855,0x60244c8b48000000,0x4800000438958d48,0xb04d8d4c28245489,0x24548948a4558d48,0x8d44018b48d23320,0x0000009090ff0142,0xc9334560244c8b48,0x48c0334570558b48,0x4c8b485850ff018b,0xd233784d8d4c6024,0xff01428d44018b48,0x4c60244c8b483850,0x00000001ba30458d,
0x00016090ff018b48,0x8b4860244c8b4800,0x018b480000008095,0x8b480000015890ff,0x8b48018b4860244c,0xc933450000008895,0x8b484850ffc03345,0x45e0458d4c60244c,0x518d41018b48c933,0x480000010890ff01,0xffffb94160244c8b,0x000090958b48ffff,0xff018b48c0334500,0x4c8b480000011890,0x95158bc033456024,0x50ff018b48000011,
0xc03345b84d8b4868,0xff01508d41018b48,0x00117b3538404050,0x5c75f68445587400,0xc0334578244c8d4c,0x000c8f0d8d48d233,0x8b4800000f70e800,0x0428858d4c78244c,0x487024548b480000,0x4c8b481850ff018b,0x458b4cc933457824,0x4800000428958b80,0x4c8b482050ff018b,0x2850ff018b487824,0x840ff6844501b641,0x123538400000015b,
0x4c8b481e74000011,0x5850ff018b487824,0x018b4878244c8b48,0x34e9f632451050ff,0x4cb84d8b48000001,0x8d4c000000988d8d,0x48d23300000b2305,0x4c8b484850ff018b,0x000098858b4c6024,0x018b48c0558b4800,0x8b480000017890ff,0x48f0558d4860244c,0x0001b94128245489,0x3345c0558b480000,0x018b4820247489c0,0x8df05d8b487050ff,
0x894800000000bd3c,0x894888558d489875,0xf5af0f41f78b8875,0x00000000e845c748,0x4800000e6de8ce8b,0x45e8558d48884d8b,0x018b48c03345c933,0x45f84d8b441850ff,0xf845af0f44ff458d,0x8be84d8b48d9f741,0x7c8928246c8944d7,0x0e38e8c3034c2024,0x8b48884d8b480000,0x884d8b482050ff01,0x3050ff018b48d68b,0x000e1fe8984d8d48,
0x558b48984d8b4800,0x015090ff018b4888,0x4c78244c8b480000,0x000428958b98458b,0x483050ff018b4800,0x50ff018b48984d8b,0x018b48884d8b4810,0x60244c8b481050ff,0x48c0558b48c03345,0xa07d8b7850ff018b,0x66000012111d8d48,0x4800000af9156f0f,0x05c600001102058d,0xa105c60000000fa7,0x406f0ff30000000f,0xdb0f66ca6f0f66f0,
0x0ff3f0487f0ff3c8,0x0f66ca6f0f66006f,0x0ff3087f0ff3c8db,0x66ca6f0f6610406f,0x10487f0ff3c8db0f,0x6f0f6620406f0ff3,0x7f0ff3c8db0f66ca,0x3b4840c083482048,0xfffffb29e9b17cc3,0x4c8b481674f68445,0x5850ff018b487824,0x018b4878244c8b48,0xd024b4280f1050ff,0x9c8b48c033000004,0xbc280f0000052024,0xc48148000004c024,
0x5e415f41000004e0,0xc35d5e5f5c415d41,0x0101fa8128ec8348,0xfa837a7463770000,0x657606fa834d7402,0x00fa81257608fa83,0xba0f495875000001,0xc0b60f410f721ee1,0xc6000010110d8d48,0xc48348c033030804,0x4800000002bac328,0xb84100000ffa0d8d,0x000045e800000100,0xc328c48348c03300,0x00000cd815ffc933,0x8bc328c48348c033,
0xad74000001042dc2,0xc483480b7401f883,0x00000cc025ff4828,0xb50d8d48c0b60f41,0x33020804c600000f,0x8948c328c48348c0,0xb60fc98b4c08247c,0x0101010101bf48c2,0x0f48c88b49010101,0x8b4903e9c148c7af,0x0fc88b49ab48f3f9,0xe183f8e08349c2b6,0x48aaf3013c8d4b07,0xc3c18b4908247c8b,0x00000f2005110ff3,0x00000f1c0d110ff3,
0x00000f1815110ff3,0x00000e00056348c3,0x003dea280fe3280f,0x00008a8d0f000080,0x4828245c100ff300,0x0dd6058b48400c8d,0x302454100ff30000,0x100ff3c804110ff3,0xc84c110ff3402444,0xf338244c100ff304,0x110ff308c85c110f,0xc84c110ff30cc854,0x8b14c844110ff310,0x89c0ff00000da305,0x48984800000d9b05,0x0d86058b48400c8d,
0xf3c82c110ff30000,0x110ff304c864110f,0xc854110ff308c85c,0xf310c84c110ff30c,0x6505ff14c844110f,0x000b7be9c300000d,0x7de900000b7ce900,0x00000b7ee900000b,0x25ff48c3c0510ff2,0x48ec834800000c04,0x280fea280f11b60f,0x000230840fd284e1,0x00087f15100ff300,0x1d8b50245c894800,0x2474894800000d1c,0xffffeea8358d4858,
0x798d4840247c8948,0x0ff3302474290f01,0x0f0000008824b410,0xbc100ff320247c29,0x290f440000008024,0x44100f44f3102444,0xf3240c290f447824,0x1f0f70244c100f44,0x00841f0f66660040,0x80cab60f00000000,0xe0418d19fa8061ea,0xc1470f44c0b60f44,0x870f3e3cdf408d41,0xc0be0f490000016f,0x4c000015d18e8d4c,0x6348000015d0968d,
0x034c00001ce0868c,0x19b60f45d1034cc9,0xfffb804102b60f41,0x80410000013d840f,0x49c2ff490b75fefb,0x8100000112e9c1ff,0x068d0f00008000fb,0xb8c0be0f44000001,0xd1e8f74166666667,0xd0031fe8c1c28bfa,0x44ca6e0f6692048d,0xc95b0fc36348c02b,0x1d058b48400c8d48,0xc06e0f416600000c,0xf3c3be0f45c05b0f,0xf3c2590ff3ca590f,
0xf3c3590ff3cb590f,0xf3c4580ff3cd580f,0x4c110ff3c804110f,0xc84c110f44f304c8,0x0cc844110f44f308,0x0ff310c87c110ff3,0x666667b814c87411,0x4100000bd10d8b66,0x0bc60d89c1ffe8f7,0xe8c1c28bfad10000,0x0f6692048dd0031f,0xc16348c02b44ca6e,0x48400c8d48c95b0f,0x416600000b9a058b,0x0ff3c05b0fc06e0f,0x0ff3c2590ff3ca59,
0x0ff3c3590ff3cb59,0x0ff3c4580ff3cd58,0xc84c110ff3c80411,0x08c84c110f44f304,0xf30cc844110f44f3,0x110ff310c87c110f,0x000b571d8b14c874,0x000b4f1d89c3ff00,0xff490159b60f4500,0xff490142b60f41c1,0xc3850ffffb8041c2,0x0ff317b60ffffffe,0x0fd284c7ff48e358,0x280f44fffffe5f85,0x102444280f44240c,0x74280f20247c280f,
0x4840247c8b483024,0x245c8b485824748b,0x48c48348c4280f50,0x0c260d8d4cc18bc3,0x8b44e1280f990000,0x44c23344d18b44c0,0x000000801f0fc22b,0x666667b8c9ff4900,0x8b02fac1e8f74166,0xb60fd0031fe8c1c2,0x02100c8d02e0c0c2,0x30c08041c12a44c9,0xd285c28b44018845,0x490779d28545cf75,0x8b492d01c641c9ff,0xfffd4be9cc280fc9,
0xb860ec83485340ff,0x2474290f00000006,0x40247c290fd03b50,0x0ba60d8d4cc8280f,0x0005cf0d540f0000,0x0fe4570fd04f0f00,0xe8280ffa280ff328,0x83ff428de15a0ff3,0xdd058d4c507705f8,0x8c8b419848ffffeb,0xc803490000159180,0x05a625590ff2e1ff,0x25590ff230eb0000,0x0ff226eb000005a4,0x1ceb000005a22559,0x000005a025590ff2,
0x059e25590ff212eb,0x25590ff208eb0000,0x6667bb480000059c,0x0ff2666666666666,0x4cf2000005922558,0xd285c38b4ddc2c0f,0x66d28b44427e4f74,0x00000000841f0f66,0x49c38b48c9ff4900,0x8b4802fac148e8f7,0xd003483fe8c148c2,0x0c8d02e0c0c2b60f,0x8041c12a44c90210,0xc28b4c01884530c0,0xff49cb7501ea8349,0x401f0f2e01c641c9,
0x49c38b48c9ff4900,0x8b4802fac148e8f7,0xd003483fe8c148c2,0x0c8d02e0c0c2b60f,0x8041c12a44c90210,0xc28b4c01884530c0,0xc0570fcc75d28548,0xdb854d0c73e82f0f,0x01c641c9ff490774,0x00a8248c100ff32d,0x100ff3d6280f0000,0x8b49000000b02484,0x0090249c100ff3c9,0xa82484110ff30000,0x2484100ff3000000,0x8c110ff3000000a0,
0x100ff3000000a024,0x0ff300000098248c,0xf300000098248411,0x00000090248c110f,0x502474280fcf280f,0xc4834840247c280f,0x66fffffb95e95b60,0x00143c0000143290,0x0014500000144600,0x0014640000145a00,0x01000008bc05c600,0xc300000008b605c6,0xc600000008ad05c6,0x00c301000008a705,0x0000000000000000,0x01ff201bfe1602ff,
0xfe1f01ff0d03fe0b,0x1814fe0e0afe2103,0x130f0509fe2002ff,0x0a00fe1e04ff191d,0x18222016fe00020c,0x190509fe2002ff16,0xff0c02ff120ffe1d,0x170d01ff21150b03,0xfe130ffe1b07ff1f,0x130fff1909fe1d05,0xff1f1b16ff1b07fe,0x1e04ff201bff130f,0x02ff0004221e00ff,0x221e0f130400ff20,0x130ffe1e220400ff,0xff130f00fe2204ff,
0x00ff1e22130f0004,0x220400ff0f13221e,0x0ffe0004221e00ff,0xff130f000422ff13,0x0c07ff1b16fe0c07,0x220f04ff1f1b16fe,0x00ff1814fe0e0aff,0x1611130400ff1e13,0x04001e22ff201bfe,0x020a1eff0e0b1518,0x0400ff1814fe220e,0x0ffe001e2218120e,0x00ff221e0004ff12,0x04ff001e20180e02,0x04ff120ffe221e00,0x040eff120ffe1e00,
0x1e00ff1618221e00,0x02ff2204fe130ffe,0xff221efe0400fe20,0xfe1e00ff14202204,0xff221e00ff220f04,0x001eff22040c001e,0x0004221e00ff0422,0x00ff0f1304001eff,0x2216fe000418201e,0xff220f1304001eff,0x02ff1e22130f0004,0x221e00ff0400fe20,0x1e00ff042000ff04,0x04fe2200ff042216,0x040c00fe200cff1e,0x0103ff221e0400ff,
0x0301ff2200ff211f,0x1eff0e020aff1f21,0x000000000000ff22,0x001c0015000e002d,0x6c66002d002a0023,0x746572203474616f,0x75727473206e7275,0x74616f6c66207463,0x7562635f56532032,0x723a6b2072656666,0x2872657473696765,0x7d3b66837b293062,0x4f503a65837b6782,0x4c4f433a62803b53,0x65807b64823b7d3b,0x495449534f50843a,
0x4f433a62803b4e4f,0x286a20643b7d3b4c,0x6320647b29612067,0x6f6c663d652e633b,0x2e652e6128347461,0x6f6c662d662a7978,0x312d2c3128327461,0x633b29312c302c29,0x813b622e613d622e,0x20642868807d3b63,0x47524154843a2961,0x3b622e61817b5445,0x50843a292869807d,0x7b4e4f495449534f,0x000000007d3b3081,0x68207972616e6962,
0x7270207265646165,0x6320666f20666f6f,0x0000747065636e6f,0x43d608efa04bfb29,0x86e6cbbdbda99ca4,0x4082b5fbbb2c6faa,0xe190fa8c8b386b8e,0x48ba627677db970f,0x2c39b443010728ba,0x4c48e07250c83a1c,0xd0a636fa3036b087,0x4e89d2086f15aaf2,0x9c4fd3359548b49a,0x0000305f355f7376,0x00534f500000006a,0x355f7370004c4f43,
0x000000680000305f,0x0000000600000005,0x0000000100000001,0xc00000003f800000,0x0010000034363248,0x719b3800aa000080,0x0010000000000015,0x719b3800aa000080,0x0010000073646976,0x719b3800aa000080,0x4687f8c948eba18e,0x8f6af9c9740a11bf,0x471442e8f7e34c9a,0xe5352cd729cb4bb7,0x4806e676e2724bb8,0xcd4cb4efd6a8b2b4,
0x4012d6b21652c33d,0x7da34908037234b8,0x4e443d2cc459a2e8,0xb07b6c15e5fe32b1,0x40278d0ac6376a1e,0xb69bd30a9a6d45be,0x4d9efb0d20332624,0x2e106c78f6cb0dbd,0x007000740075006f,0x006d002e00740075,0x0000000000340070,0x0101010101010101,0x0101010101010101,0x000000003e2aaaab,0x0000000000000000,0x7fffffff7fffffff,
0x7fffffff7fffffff,0x4024000000000000,0x4059000000000000,0x408f400000000000,0x40c3880000000000,0x40f86a0000000000,0x412e848000000000,0x3fe0000000000000,0x41636f7250746547,0x5600737365726464,0x72506c6175747269,0x695600746365746f,0x6c6c416c61757472,0x4c64616f4c00636f,0x0041797261726269,0x2e3233656c6f0a09,
0x6f430f01006c6c64,0x696c616974696e49,0x53550b007845657a,0x6c6c642e32335245,0x5174736f50100600,0x617373654d746975,0x576665440f006567,0x6f7250776f646e69,0x6967655211004163,0x73616c4372657473,0x7243100041784573,0x646e695765746165,0x500d00417845776f,0x617373654d6b6565,0x7369441100416567,0x73654d6863746170,
0x640a004165676173,0x6c6c642e31316433,0x3131443344120100,0x6544657461657243,0x3344130065636976,0x454c49504d4f4344,0x6c6c642e37345f52,0x6f434433440b0100,0x4d0b00656c69706d,0x4c442e74616c5046,0x7453464d0a05004c,0x4d12007075747261,0x4d65746165724346,0x6570795461696465,0x61657243464d1500,0x79726f6d654d6574,
0x0c00726566667542,0x6d4979706f43464d,0x43464d0f00656761,0x6d61536574616572,0x52454b0d00656c70,0x6c642e32334c454e,0x726575511a02006c,0x6d726f6672655079,0x7165724665636e61,0x51180079636e6575,0x6672655079726575,0x4365636e616d726f,0x22007265746e756f,0x772d736d2d697061,0x752d7472632d6e69,0x6c2d7974696c6974,
0x6c642e302d312d31,0x6e6172730602006c,0x00646e6172050064,0x5764616552464d10,0x6c6c642e65746972,0x657243464d1a0100,0x576b6e6953657461,0x6f72467265746972,0x70611f004c52556d,0x6e69772d736d2d69,0x74616d2d7472632d,0x302d312d316c2d68,0x630404006c6c642e,0x006e69730400736f,0x0400326e61746106,0x007e25ff00776f70,
0x0000008025ff0000,0x25ff0000008225ff,0x008625ff00000084,0x0000008825ff0000,0x25ff0000008a25ff,0x00ae25ff000000ac,0x000000b025ff0000,0x25ff000000b225ff,0x00000000000000b4,};T void V;T char C;T int I;T float F;T double D; T struct HINSTANCE__{I un;}HINSTANCE__;T HINSTANCE__ H;V set_background_color(F a,F
b,F c){((V(*)(F,F,F))(*p+0x1048))(a,b,c);}V draw_line(F a,F b,F c,F d,F e,F f,F g,F h){((V(*)(F,F,F,F,F,F,F,F))(*p+0x1061))(a,b,c,d,e,f,g,h);}F print_string(C* a,F b,F c,F d,F e,F f,F g,F h){R(F(*)(C*,F,F,F,F,F,F,F))(*p+0x1124))(a,b,c,d,e,f,g,h);}F print_int(I a,F b,F c,F d,F e,F f,F g,F h){R(F(*)(I,F,F
,F,F,F,F,F))(*p+0x1371))(a,b,c,d,e,f,g,h);}F print_float(F a,I b,F c,F d,F e,F f,F g,F h,F i){R(F(*)(F,I,F,F,F,F,F,F,F))(*p+0x13d9))(a,b,c,d,e,f,g,h,i);}V start_recording(){((V(*)())(*p+0x15a9))();}V stop_recording(){((V(*)())(*p+0x15b8))();}D math_cos(D a){R((D(*)(D))(*p+0x1104))(a));}D math_sin(D a){R
(D(*)(D))(*p+0x1109))(a);}D math_atan2(D a,D b){R(D(*)(D,D))(*p+0x110e))(a,b);}D math_pow(D a,D b){R(D(*)(D,D))(*p+0x1113))(a,b);}D math_sqrt(D a){R(D(*)(D))(*p+0x1118))(a);}I math_rand(){R(I(*)())(*p+0x111d))();}I WinMain(H* a,H* b,C* c,I d){R(I(*)(V*))(p+1))(update);}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment