X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.c;h=00347a4f572edab3154e31eb12af2881d9d15b8b;hb=4fcf5c6436d34bdc44bc534d21d9ec95bf072333;hp=92e8b38a1e20514c004175fbe370ec0de64ede82;hpb=222cd4187e6632bd904a937f167a2f1c70b8f66d;p=rocksndiamonds.git diff --git a/src/main.c b/src/main.c index 92e8b38a..00347a4f 100644 --- a/src/main.c +++ b/src/main.c @@ -1,14 +1,14 @@ /*********************************************************** -* Rocks'n'Diamonds -- McDuffin Strikes Back! * +* Rocks'n'Diamonds -- McDuffin Strikes Back! * *----------------------------------------------------------* -* (c) 1995-98 Artsoft Entertainment * -* Holger Schemel * -* Oststrasse 11a * -* 33604 Bielefeld * -* phone: ++49 +521 290471 * -* email: aeglos@valinor.owl.de * +* (c) 1995-2002 Artsoft Entertainment * +* Holger Schemel * +* Detmolder Strasse 189 * +* 33604 Bielefeld * +* Germany * +* e-mail: info@artsoft.org * *----------------------------------------------------------* -* main.c * +* main.c * ***********************************************************/ #include "libgame/libgame.h" @@ -17,61 +17,26 @@ #include "init.h" #include "game.h" #include "events.h" -#include "joystick.h" -#if defined(PLATFORM_MSDOS) -#include -#endif - -#if 0 -DrawWindow window = None; -DrawBuffer backbuffer; -GC gc; -#endif - -GC clip_gc[NUM_BITMAPS], tile_clip_gc; -Bitmap pix[NUM_BITMAPS]; -Bitmap pix_masked[NUM_BITMAPS], tile_masked[NUM_TILES]; -Pixmap clipmask[NUM_BITMAPS], tile_clipmask[NUM_TILES]; - -DrawBuffer drawto, drawto_field, fieldbuffer; #if 0 -Colormap cmap; +GC tile_clip_gc; +Bitmap *pix[NUM_BITMAPS]; #endif - +Bitmap *bitmap_db_field, *bitmap_db_door; #if 0 -char *sound_device_name = AUDIO_DEVICE; +Pixmap tile_clipmask[NUM_TILES]; #endif - -int joystick_device = 0; -char *joystick_device_name[MAX_PLAYERS] = -{ - DEV_JOYSTICK_0, - DEV_JOYSTICK_1, - DEV_JOYSTICK_2, - DEV_JOYSTICK_3 -}; - -char *program_name = NULL; +DrawBuffer *fieldbuffer; +DrawBuffer *drawto_field; int game_status = MAINMENU; boolean level_editor_test_game = FALSE; boolean network_playing = FALSE; -int button_status = MB_NOT_PRESSED; -boolean motion_status = FALSE; -int key_joystick_mapping = 0; -int global_joystick_status = JOYSTICK_STATUS; -int joystick_status = JOYSTICK_STATUS; -#if 0 -boolean fullscreen_available = FULLSCREEN_STATUS; -boolean fullscreen_enabled = FALSE; -#endif +int key_joystick_mapping = 0; boolean redraw[MAX_BUF_XSIZE][MAX_BUF_YSIZE]; int redraw_x1 = 0, redraw_y1 = 0; -int redraw_mask; -int redraw_tiles; short Feld[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short Ur[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; @@ -81,21 +46,25 @@ short MovDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short Store[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -short Frame[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short JustStopped[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short AmoebaCnt[MAX_NUM_AMOEBA], AmoebaCnt2[MAX_NUM_AMOEBA]; -unsigned long Elementeigenschaften1[MAX_ELEMENTS]; -unsigned long Elementeigenschaften2[MAX_ELEMENTS]; +short ExplodePhase[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +short ExplodeField[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; + +unsigned long Properties1[MAX_NUM_ELEMENTS]; +unsigned long Properties2[MAX_NUM_ELEMENTS]; + +int GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +short GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -int level_nr; int lev_fieldx,lev_fieldy, scroll_x,scroll_y; int FX = SX, FY = SY, ScrollStepSize; int ScreenMovDir = MV_NO_MOVING, ScreenMovPos = 0; int ScreenGfxPos = 0; -int BorderElement = EL_BETON; +int BorderElement = EL_STEELWALL; int GameFrameDelay = GAME_FRAME_DELAY; int FfwdFrameDelay = FFWD_FRAME_DELAY; int BX1 = 0, BY1 = 0, BX2 = SCR_FIELDX-1, BY2 = SCR_FIELDY-1; @@ -104,889 +73,2800 @@ int SBY_Upper, SBY_Lower; int ZX,ZY, ExitX,ExitY; int AllPlayersGone; -#if 0 -int FrameCounter; -#endif - int TimeFrames, TimePlayed, TimeLeft; boolean network_player_action_received = FALSE; -struct LevelDirInfo *leveldir_first = NULL, *leveldir_current = NULL; struct LevelInfo level; struct PlayerInfo stored_player[MAX_PLAYERS], *local_player = NULL; struct HiScore highscore[MAX_SCORE_ENTRIES]; -struct SampleInfo Sound[NUM_SOUNDS]; struct TapeInfo tape; - -#if 0 -struct OptionInfo options; -#endif - struct SetupInfo setup; struct GameInfo game; - -#if 0 -struct VideoSystemInfo video; -struct AudioSystemInfo audio; -#endif - struct GlobalInfo global; -/* data needed for playing sounds */ +/* filenames of sound effects */ char *sound_name[NUM_SOUNDS] = { - "alchemy", - "amoebe", - "antigrav", - "autsch", - "blurb", - "bong", - "buing", - "chase", - "czardasz", - "deng", - "fuel", - "gong", - "halloffame", - "holz", - "hui", - "kabumm", - "kink", - "klapper", - "kling", - "klopf", - "klumpf", - "knack", - "knurk", - "krach", - "lachen", - "laser", - "miep", - "network", - "njam", - "oeffnen", - "pling", - "pong", - "pusch", - "quiek", - "quirk", - "rhythmloop", - "roaaar", - "roehr", - "rumms", - "schlopp", - "schlurf", - "schrff", - "schwirr", - "sirr", - "slurp", - "sproing", - "twilight", - "tyger", - "voyager", - "warnton", - "whoosh", - "zisch", - "base", - "infotron", - "zonkdown", - "zonkpush", - "bug", - "boom", - "booom", - "exit", - "empty", - "gate" + "amoebe.wav", + "antigrav.wav", + "autsch.wav", + "blurb.wav", + "bong.wav", + "buing.wav", + "deng.wav", + "fuel.wav", + "gong.wav", + "halloffame.wav", + "holz.wav", + "hui.wav", + "kabumm.wav", + "kink.wav", + "klapper.wav", + "kling.wav", + "klopf.wav", + "klumpf.wav", + "knack.wav", + "knurk.wav", + "krach.wav", + "lachen.wav", + "laser.wav", + "miep.wav", + "njam.wav", + "oeffnen.wav", + "pling.wav", + "pong.wav", + "pusch.wav", + "quiek.wav", + "quirk.wav", + "rhythmloop.wav", + "roaaar.wav", + "roehr.wav", + "rumms.wav", + "schlopp.wav", + "schlurf.wav", + "schrff.wav", + "schwirr.wav", + "sirr.wav", + "slurp.wav", + "sproing.wav", + "warnton.wav", + "whoosh.wav", + "zisch.wav", + "base.wav", + "infotron.wav", + "zonkdown.wav", + "zonkpush.wav", + "bug.wav", + "boom.wav", + "booom.wav", + "exit.wav", + "empty.wav", + "gate.wav" }; -/* background music */ -int background_loop[] = +/* this is used to reduce memory usage of the different animation types */ +int graphics_action_mapping[] = { - SND_ALCHEMY, - SND_CHASE, - SND_NETWORK, - SND_CZARDASZ, - SND_TYGER, - SND_VOYAGER, - SND_TWILIGHT -}; -int num_bg_loops = sizeof(background_loop)/sizeof(int); - -char *element_info[] = -{ - "empty space", /* 0 */ - "sand", - "normal wall", - "round wall", - "rock", - "key", - "emerald", - "closed exit", - "player", - "bug", - "spaceship", /* 10 */ - "yam yam", - "robot", - "steel wall", - "diamond", - "dead amoeba", - "empty quicksand", - "quicksand with rock", - "amoeba drop", - "bomb", - "magic wall", /* 20 */ - "speed ball", - "acid pool", - "dropping amoeba", - "normal amoeba", - "nut with emerald", - "life wall", - "biomaze", - "burning dynamite", - "unknown", - "magic wheel", /* 30 */ - "running wire", - "red key", - "yellow key", - "green key", - "blue key", - "red door", - "yellow door", - "green door", - "blue door", - "gray door (opened by red key)", /* 40 */ - "gray door (opened by yellow key)", - "gray door (opened by green key)", - "gray door (opened by blue key)", - "dynamite", - "pac man", - "invisible normal wall", - "light bulb (dark)", - "ligh bulb (glowing)", - "wall with emerald", - "wall with diamond", /* 50 */ - "amoeba with content", - "amoeba (BD style)", - "time orb (full)", - "time orb (empty)", - "growing wall", - "diamond (BD style)", - "yellow emerald", - "wall with BD style diamond", - "wall with yellow emerald", - "dark yam yam", /* 60 */ - "magic wall (BD style)", - "invisible steel wall", - "-", - "increases number of bombs", - "increases explosion size", - "increases power of explosion", - "sokoban object", - "sokoban empty field", - "sokoban field with object", - "butterfly (starts moving right)", /* 70 */ - "butterfly (starts moving up)", - "butterfly (starts moving left)", - "butterfly (starts moving down)", - "firefly (starts moving right)", - "firefly (starts moving up)", - "firefly (starts moving left)", - "firefly (starts moving down)", - "butterfly", - "firefly", - "yellow player", /* 80 */ - "red player", - "green player", - "blue player", - "bug (starts moving right)", - "bug (starts moving up)", - "bug (starts moving left)", - "bug (starts moving down)", - "spaceship (starts moving right)", - "spaceship (starts moving up)", - "spaceship (starts moving left)", /* 90 */ - "spaceship (starts moving down)", - "pac man (starts moving right)", - "pac man (starts moving up)", - "pac man (starts moving left)", - "pac man (starts moving down)", - "red emerald", - "violet emerald", - "wall with red emerald", - "wall with violet emerald", - "unknown", /* 100 */ - "unknown", - "unknown", - "unknown", - "unknown", - "normal wall (BD style)", - "rock (BD style)", - "open exit", - "unknown", - "amoeba", - "mole", /* 110 */ - "penguin", - "satellite", - "arrow left", - "arrow right", - "arrow up", - "arrow down", - "pig", - "fire breathing dragon", - "unknown", - "letter ' '", /* 120 */ - "letter '!'", - "letter '\"'", - "letter '#'", - "letter '$'", - "letter '%'", - "letter '&'", - "letter '''", - "letter '('", - "letter ')'", - "letter '*'", /* 130 */ - "letter '+'", - "letter ','", - "letter '-'", - "letter '.'", - "letter '/'", - "letter '0'", - "letter '1'", - "letter '2'", - "letter '3'", - "letter '4'", /* 140 */ - "letter '5'", - "letter '6'", - "letter '7'", - "letter '8'", - "letter '9'", - "letter ':'", - "letter ';'", - "letter '<'", - "letter '='", - "letter '>'", /* 150 */ - "letter '?'", - "letter '@'", - "letter 'A'", - "letter 'B'", - "letter 'C'", - "letter 'D'", - "letter 'E'", - "letter 'F'", - "letter 'G'", - "letter 'H'", /* 160 */ - "letter 'I'", - "letter 'J'", - "letter 'K'", - "letter 'L'", - "letter 'M'", - "letter 'N'", - "letter 'O'", - "letter 'P'", - "letter 'Q'", - "letter 'R'", /* 170 */ - "letter 'S'", - "letter 'T'", - "letter 'U'", - "letter 'V'", - "letter 'W'", - "letter 'X'", - "letter 'Y'", - "letter 'Z'", - "letter 'Ä'", - "letter 'Ö'", /* 180 */ - "letter 'Ü'", - "letter '^'", - "letter ''", - "letter ''", - "letter ''", - "letter ''", - "letter ''", - "letter ''", - "letter ''", - "letter ''", /* 190 */ - "letter ''", - "letter ''", - "letter ''", - "letter ''", - "letter ''", - "letter ''", - "letter ''", - "letter ''", - "letter ''", - "growing wall (horizontal)", /* 200 */ - "growing wall (vertical)", - "growing wall (all directions)", - "unused", - "unused", - "unused", - "unused", - "unused", - "unused", - "unused", - "empty space", /* 210 */ - "zonk", - "base", - "murphy", - "infotron", - "chip (single)", - "hardware", - "exit", - "orange disk", - "port (leading right)", - "port (leading down)", /* 220 */ - "port (leading left)", - "port (leading up)", - "port (leading right)", - "port (leading down)", - "port (leading left)", - "port (leading up)", - "snik snak", - "yellow disk", - "terminal", - "red disk", /* 230 */ - "port (vertical)", - "port (horizontal)", - "port (all directions)", - "electron", - "buggy base", - "chip (left half)", - "chip (right half)", - "hardware", - "hardware", - "hardware", /* 240 */ - "hardware", - "hardware", - "hardware", - "hardware", - "hardware", - "hardware", - "hardware", - "chip (upper half)", - "chip (lower half)", - "unknown", /* 250 */ - "unknown", - "unknown", - "unknown", - "unknown", - "unknown", - - /* 256 */ - - "pearl", /* (256) */ - "crystal", - "wall with pearl", - "wall with crystal", - "white door", /* 260 */ - "gray door (opened by white key)", - "white key", - "shield (passive)", - "extra time", - "switch gate (open)", - "switch gate (closed)", - "switch for switch gate", - "switch for switch gate", - "-", - "-", /* 270 */ - "red conveyor belt (left)", - "red conveyor belt (middle)", - "red conveyor belt (right)", - "switch for red conveyor belt (left)", - "switch for red conveyor belt (middle)", - "switch for red conveyor belt (right)", - "yellow conveyor belt (left)", - "yellow conveyor belt (middle)", - "yellow conveyor belt (right)", - "switch for yellow conveyor belt (left)", /* 280 */ - "switch for yellow conveyor belt (middle)", - "switch for yellow conveyor belt (right)", - "green conveyor belt (left)", - "green conveyor belt (middle)", - "green conveyor belt (right)", - "switch for green conveyor belt (left)", - "switch for green conveyor belt (middle)", - "switch for green conveyor belt (right)", - "blue conveyor belt (left)", - "blue conveyor belt (middle)", /* 290 */ - "blue conveyor belt (right)", - "switch for blue conveyor belt (left)", - "switch for blue conveyor belt (middle)", - "switch for blue conveyor belt (right)", - "land mine", - "mail envelope", - "light switch (off)", - "light switch (on)", - "sign (exclamation)", - "sign (radio activity)", /* 300 */ - "sign (stop)", - "sign (wheel chair)", - "sign (parking)", - "sign (one way)", - "sign (heart)", - "sign (triangle)", - "sign (round)", - "sign (exit)", - "sign (yin yang)", - "sign (other)", /* 310 */ - "mole (starts moving left)", - "mole (starts moving right)", - "mole (starts moving up)", - "mole (starts moving down)", - "steel wall (slanted)", - "invisible sand", - "dx unknown 15", - "dx unknown 42", - "-", - "-", /* 320 */ - "shield (active, kills enemies)", - "time gate (open)", - "time gate (closed)", - "switch for time gate", - "switch for time gate", - "balloon", - "send balloon to the left", - "send balloon to the right", - "send balloon up", - "send balloon down", /* 330 */ - "send balloon in any direction", - "steel wall", - "steel wall", - "steel wall", - "steel wall", - "normal wall", - "normal wall", - "normal wall", - "normal wall", - "normal wall", /* 340 */ - "normal wall", - "normal wall", - "normal wall", - "tube (all directions)", - "tube (vertical)", - "tube (horizontal)", - "tube (vertical & left)", - "tube (vertical & right)", - "tube (horizontal & up)", - "tube (horizontal & down)", /* 350 */ - "tube (left & up)", - "tube (left & down)", - "tube (right & up)", - "tube (right & down)", - "spring", - "trap", - "stable bomb (DX style)", - "-" - - /* - "-------------------------------", - */ + 0, /* GFX_ACTION_DEFAULT (0) */ + 0, /* GFX_ACTION_WAITING (1) */ + + 1, /* GFX_ACTION_FALLING (2) */ + 2, /* GFX_ACTION_MOVING (3) */ + 3, /* GFX_ACTION_DIGGING (4) */ + 4, /* GFX_ACTION_SNAPPING (5) */ + 5, /* GFX_ACTION_COLLECTING (6) */ + 6, /* GFX_ACTION_PUSHING (7) */ + + 7, /* GFX_ACTION_PASSING (8) */ + 7, /* GFX_ACTION_IMPACT (9) */ + 7, /* GFX_ACTION_CRACKING (10) */ + 7, /* GFX_ACTION_BREAKING (11) */ + 7, /* GFX_ACTION_ACTIVATING (12) */ + 7, /* GFX_ACTION_OPENING (13) */ + 7, /* GFX_ACTION_CLOSING (14) */ + 7, /* GFX_ACTION_EATING (15) */ + 7, /* GFX_ACTION_ATTACKING (16) */ + 7, /* GFX_ACTION_GROWING (17) */ + 7, /* GFX_ACTION_SHRINKING (18) */ + 7 /* GFX_ACTION_OTHER (19) */ }; -int num_element_info = sizeof(element_info)/sizeof(char *); - - - -/* +-----------------------------------------------------------------------+ */ -/* | SDL TEST STUFF | */ -/* +-----------------------------------------------------------------------+ */ - -#if defined(TARGET_SDL) - -SDL_Surface *sdl_screen, *sdl_image_tmp, *sdl_image, *sdl_image_masked; -SDL_Surface *sdl_image2_tmp, *sdl_image2, *sdl_image2_masked; - -void TEST_SDL_BLIT_RECT(int x, int y) -{ - SDL_Rect rect_src, rect_dst; - - SDLCopyArea(pix_masked[PIX_HEROES], window, - 8 * TILEX, 8 * TILEY, TILEX, TILEY, x, y); - return; - - rect_src.x = 8 * TILEX; - rect_src.y = 8 * TILEY; - rect_src.w = TILEX; - rect_src.h = TILEY; - - rect_dst.x = x; - rect_dst.y = y; - rect_dst.w = TILEX; - rect_dst.h = TILEY; - SDL_BlitSurface(sdl_image2_masked, &rect_src, sdl_screen, &rect_dst); - SDL_UpdateRect(sdl_screen, x, y, TILEX, TILEY); -} +struct FileInfo *image_files; +struct FileInfo *sound_files; -void TEST_SDL_INIT_DISPLAY() +struct ElementInfo element_info[MAX_NUM_ELEMENTS] = { - SDL_Rect rect_src, rect_dst; + /* "real" level file elements */ - if (SDL_Init(SDL_INIT_VIDEO) < 0) { - fprintf(stderr, "SDL_Init() failed: %s\n", SDL_GetError()); - exit(1); - } - - /* automatically cleanup SDL stuff after exit() */ - atexit(SDL_Quit); - - if ((sdl_screen = SDL_SetVideoMode(WIN_XSIZE, WIN_YSIZE, 16, SDL_HWSURFACE)) - == NULL) + "empty_space", + "empty_space", + "empty space" + }, { - fprintf(stderr, "SDL_SetVideoMode() failed: %s\n", SDL_GetError()); - exit(1); - } - - SDL_WM_SetCaption(WINDOW_TITLE_STRING, WINDOW_TITLE_STRING); - - if ((sdl_image_tmp = IMG_Load("graphics/RocksScreen.pcx")) == NULL) + "sand", + "sand", + "sand" + }, { - fprintf(stderr, "IMG_Load() failed: %s\n", SDL_GetError()); - exit(1); - } - - sdl_image = SDL_DisplayFormat(sdl_image_tmp); - - SDL_SetColorKey(sdl_image_tmp, SDL_SRCCOLORKEY, - SDL_MapRGB(sdl_image_tmp->format, 0x00, 0x00, 0x00)); - sdl_image_masked = SDL_DisplayFormat(sdl_image_tmp); - - SDL_FreeSurface(sdl_image_tmp); - - if ((sdl_image2_tmp = IMG_Load("graphics/RocksHeroes.pcx")) == NULL) + "wall", + "wall", + "normal wall" + }, { - fprintf(stderr, "IMG_Load() failed: %s\n", SDL_GetError()); - exit(1); - } - - sdl_image2 = SDL_DisplayFormat(sdl_image2_tmp); - SDL_FreeSurface(sdl_image2_tmp); - - sdl_image2_masked = SDL_DisplayFormat(sdl_image2); - SDL_SetColorKey(sdl_image2_masked, SDL_SRCCOLORKEY, - SDL_MapRGB(sdl_image2_masked->format, 0x00, 0x00, 0x00)); - - rect_src.x = 0; - rect_src.y = 0; - rect_src.w = sdl_image->w; - rect_src.h = sdl_image->h; - - rect_dst.x = 0; - rect_dst.y = 0; - rect_dst.w = sdl_image->w; - rect_dst.h = sdl_image->h; - - SDL_BlitSurface(sdl_image, &rect_src, sdl_screen, &rect_dst); - - /* - SDL_UpdateRect(sdl_screen, 0, 0, WIN_XSIZE, WIN_YSIZE); - */ - /* - SDL_UpdateRect(sdl_screen, 0, 0, 0, 0); - */ - SDL_Flip(sdl_screen); - - /* - SDL_Delay(5000); - */ -} - -void TEST_SDL_EVENT_LOOP() -{ - int quit_loop = 0; - - SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE); - - /* - while (!quit_loop && SDL_WaitEvent(&event) >=0) - */ - - while (!quit_loop) + "wall_crumbled", + "wall", + "round wall" + }, { - SDL_Event event; - - if (SDL_PollEvent(&event)) - { - /* hier werden die Ereignisse behandelt */ - switch(event.type) - { - case SDL_QUIT: - { - quit_loop = 1; - break; - } - - case SDL_MOUSEBUTTONDOWN: - { - int x = event.button.x; - int y = event.button.y; - - SDL_EventState(SDL_MOUSEMOTION, SDL_ENABLE); - - TEST_SDL_BLIT_RECT(x, y); - - printf("SDL_MOUSEBUTTONDOWN(%d, %d)\n", x, y); - break; - } - - case SDL_MOUSEBUTTONUP: - { - int x = event.button.x; - int y = event.button.y; - - SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE); - - printf("SDL_MOUSEBUTTONUP(%d, %d)\n", x, y); - break; - } - - case SDL_MOUSEMOTION: - { - int x = event.motion.x; - int y = event.motion.y; - - TEST_SDL_BLIT_RECT(x, y); - - printf("SDL_MOUSEMOTION(%d, %d)\n", x, y); - break; - } - - default: - break; - } - } - - if (!SDL_PollEvent(NULL)) /* delay only if no pending events */ - { - printf("waiting...\n"); - Delay(100); - } - } - - SDL_FreeSurface(sdl_image); - SDL_Quit(); -} - -#define SCREEN_WIDTH 640 -#define SCREEN_HEIGHT 480 - -void WatchJoysticks() -{ - SDL_Surface *screen; - const char *name; - int i, done; - SDL_Event event; - int x, y, draw; - SDL_Rect axis_area[2]; - int joystick_nr = 0; - SDL_Joystick *joystick = Get_SDL_Joystick(joystick_nr); - - /* Set a video mode to display joystick axis position */ - screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 16, 0); - if ( screen == NULL ) { - fprintf(stderr, "Couldn't set video mode: %s\n",SDL_GetError()); - return; - } - - /* Print info about the joysticks we are watching */ - for (i=0; i<2; i++) - { - joystick = Get_SDL_Joystick(i); - - name = SDL_JoystickName(i); - printf("Watching joystick %d: (%s)\n", i, - name ? name : "Unknown Joystick"); - printf("Joystick has %d axes, %d hats, %d balls, and %d buttons\n", - SDL_JoystickNumAxes(joystick), - SDL_JoystickNumHats(joystick), - SDL_JoystickNumBalls(joystick), - SDL_JoystickNumButtons(joystick)); - } - - /* Initialize drawing rectangles */ - memset(axis_area, 0, (sizeof axis_area)); - draw = 0; - - /* Loop, getting joystick events! */ - done = 0; - while ( ! done ) { - while ( SDL_PollEvent(&event) ) { - switch (event.type) { - case SDL_JOYAXISMOTION: - joystick_nr = event.jaxis.which; - printf("Joystick %d axis %d value: %d\n", - event.jaxis.which, - event.jaxis.axis, - event.jaxis.value); - break; - case SDL_JOYHATMOTION: - joystick_nr = event.jaxis.which; - printf("Joystick %d hat %d value:", - event.jhat.which, - event.jhat.hat); - if ( event.jhat.value == SDL_HAT_CENTERED ) - printf(" centered"); - if ( event.jhat.value & SDL_HAT_UP ) - printf(" up"); - if ( event.jhat.value & SDL_HAT_RIGHT ) - printf(" right"); - if ( event.jhat.value & SDL_HAT_DOWN ) - printf(" down"); - if ( event.jhat.value & SDL_HAT_LEFT ) - printf(" left"); - printf("\n"); - break; - case SDL_JOYBALLMOTION: - joystick_nr = event.jaxis.which; - printf("Joystick %d ball %d delta: (%d,%d)\n", - event.jball.which, - event.jball.ball, - event.jball.xrel, - event.jball.yrel); - break; - case SDL_JOYBUTTONDOWN: - joystick_nr = event.jaxis.which; - printf("Joystick %d button %d down\n", - event.jbutton.which, - event.jbutton.button); - break; - case SDL_JOYBUTTONUP: - joystick_nr = event.jaxis.which; - printf("Joystick %d button %d up\n", - event.jbutton.which, - event.jbutton.button); - break; - case SDL_KEYDOWN: - if ( event.key.keysym.sym != SDLK_ESCAPE ) { - break; - } - /* Fall through to signal quit */ - case SDL_QUIT: - done = 1; - break; - default: - break; - } - } - - joystick = Get_SDL_Joystick(joystick_nr); - - /* Update visual joystick state */ - for ( i=0; i (SCREEN_WIDTH-16) ) { - x = SCREEN_WIDTH-16; - } - y = (((int)SDL_JoystickGetAxis(joystick, 1))+32768); - y *= SCREEN_HEIGHT; - y /= 65535; - if ( y < 0 ) { - y = 0; - } else - if ( y > (SCREEN_HEIGHT-16) ) { - y = SCREEN_HEIGHT-16; - } - axis_area[draw].x = (Sint16)x; - axis_area[draw].y = (Sint16)y; - axis_area[draw].w = 16; - axis_area[draw].h = 16; - SDL_FillRect(screen, &axis_area[draw], 0xFFFF); - - SDL_UpdateRects(screen, 2, axis_area); - } -} - -void TEST_SDL_JOYSTICK() -{ - const char *name; - int i; - - /* Initialize SDL (Note: video is required to start event loop) */ - if ( SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK) < 0 ) + "rock", + "rock", + "rock" + }, { - fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError()); - exit(1); - } - - /* Print information about the joysticks */ - printf("There are %d joysticks attached\n", SDL_NumJoysticks()); - for ( i=0; i'" + }, + { + "char_question", + NULL, + "letter '?'" + }, + { + "char_at", + NULL, + "letter '@'" + }, + { + "char_a", + NULL, + "letter 'A'" + }, + { + "char_b", + NULL, + "letter 'B'" + }, + { + "char_c", + NULL, + "letter 'C'" + }, + { + "char_d", + NULL, + "letter 'D'" + }, + { + "char_e", + NULL, + "letter 'E'" + }, + { + "char_f", + NULL, + "letter 'F'" + }, + { + "char_g", + NULL, + "letter 'G'" + }, + { + "char_h", + NULL, + "letter 'H'" + }, + { + "char_i", + NULL, + "letter 'I'" + }, + { + "char_j", + NULL, + "letter 'J'" + }, + { + "char_k", + NULL, + "letter 'K'" + }, + { + "char_l", + NULL, + "letter 'L'" + }, + { + "char_m", + NULL, + "letter 'M'" + }, + { + "char_n", + NULL, + "letter 'N'" + }, + { + "char_o", + NULL, + "letter 'O'" + }, + { + "char_p", + NULL, + "letter 'P'" + }, + { + "char_q", + NULL, + "letter 'Q'" + }, + { + "char_r", + NULL, + "letter 'R'" + }, + { + "char_s", + NULL, + "letter 'S'" + }, + { + "char_t", + NULL, + "letter 'T'" + }, + { + "char_u", + NULL, + "letter 'U'" + }, + { + "char_v", + NULL, + "letter 'V'" + }, + { + "char_w", + NULL, + "letter 'W'" + }, + { + "char_x", + NULL, + "letter 'X'" + }, + { + "char_y", + NULL, + "letter 'Y'" + }, + { + "char_z", + NULL, + "letter 'Z'" + }, + { + "char_ae", + NULL, + "letter 'Ä'" + }, + { + "char_oe", + NULL, + "letter 'Ö'" + }, + { + "char_ue", + NULL, + "letter 'Ü'" + }, + { + "char_copyright", + NULL, + "letter '^'" + }, + { + "char_underscore", + NULL, + "letter ''" + }, + { + "char_empty", + NULL, + "letter ''" + }, + { + "char_degree", + NULL, + "letter ''" + }, + { + "char_tm", + NULL, + "letter ''" + }, + { + "char_cursor", + NULL, + "letter ''" + }, + { + NULL, + NULL, + "letter ''" + }, + { + NULL, + NULL, + "letter ''" + }, + { + NULL, + NULL, + "letter ''" + }, + { + NULL, + NULL, + "letter ''" + }, + { + NULL, + NULL, + "letter ''" + }, + { + NULL, + NULL, + "letter ''" + }, + { + NULL, + NULL, + "letter ''" + }, + { + NULL, + NULL, + "letter ''" + }, + { + NULL, + NULL, + "letter ''" + }, + { + NULL, + NULL, + "letter ''" + }, + { + NULL, + NULL, + "letter ''" + }, + { + NULL, + NULL, + "letter ''" + }, + { + "wall_growing_x", + "wall", + "growing wall (horizontal)" + }, + { + "wall_growing_y", + "wall", + "growing wall (vertical)" + }, + { + "wall_growing_xy", + "wall", + "growing wall (all directions)" + }, + { + "em_gate1", + "gate", + "red door (EM style)" + }, + { + "em_gate2", + "gate", + "yellow door (EM style)" + }, + { + "em_gate3", + "gate", + "green door (EM style)" + }, + { + "em_gate4", + "gate", + "blue door (EM style)" + }, + { + "em_key2_file", + "key", + "yellow key (EM style)" + }, + { + "em_key3_file", + "key", + "green key (EM style)" + }, + { + "em_key4_file", + "key", + "blue key (EM style)" + }, + { + "sp_empty_space", + "empty_space", + "empty space" + }, + { + "sp_zonk", + "sp_zonk", + "zonk" + }, + { + "sp_base", + "sp_base", + "base" + }, + { + "sp_murphy", + "player", + "murphy" + }, + { + "sp_infotron", + "sp_infotron", + "infotron" + }, + { + "sp_chip_single", + "wall", + "chip (single)" + }, + { + "sp_hard_gray", + "wall", + "hardware" + }, + { + "sp_exit_closed", + "sp_exit", + "exit" + }, + { + "sp_disk_orange", + "sp_disk_orange", + "orange disk" + }, + { + "sp_port1_right", + "sp_port", + "port (leading right)" + }, + { + "sp_port1_down", + "sp_port", + "port (leading down)" + }, + { + "sp_port1_left", + "sp_port", + "port (leading left)" + }, + { + "sp_port1_up", + "sp_port", + "port (leading up)" + }, + { + "sp_port2_right", + "sp_port", + "port (leading right)" + }, + { + "sp_port2_down", + "sp_port", + "port (leading down)" + }, + { + "sp_port2_left", + "sp_port", + "port (leading left)" + }, + { + "sp_port2_up", + "sp_port", + "port (leading up)" + }, + { + "sp_sniksnak", + "sp_sniksnak", + "snik snak" + }, + { + "sp_disk_yellow", + "sp_disk_yellow", + "yellow disk" + }, + { + "sp_terminal", + "sp_terminal", + "terminal" + }, + { + "sp_disk_red", + "sp_disk_red", + "red disk" + }, + { + "sp_port_y", + "sp_port", + "port (vertical)" + }, + { + "sp_port_x", + "sp_port", + "port (horizontal)" + }, + { + "sp_port_xy", + "sp_port", + "port (all directions)" + }, + { + "sp_electron", + "sp_electron", + "electron" + }, + { + "sp_buggy_base", + "sp_buggy_base", + "buggy base" + }, + { + "sp_chip_left", + "wall", + "chip (left half)" + }, + { + "sp_chip_right", + "wall", + "chip (right half)" + }, + { + "sp_hard_base1", + "wall", + "hardware" + }, + { + "sp_hard_green", + "wall", + "hardware" + }, + { + "sp_hard_blue", + "wall", + "hardware" + }, + { + "sp_hard_red", + "wall", + "hardware" + }, + { + "sp_hard_yellow", + "wall", + "hardware" + }, + { + "sp_hard_base2", + "wall", + "hardware" + }, + { + "sp_hard_base3", + "wall", + "hardware" + }, + { + "sp_hard_base4", + "wall", + "hardware" + }, + { + "sp_hard_base5", + "wall", + "hardware" + }, + { + "sp_hard_base6", + "wall", + "hardware" + }, + { + "sp_chip_upper", + "wall", + "chip (upper half)" + }, + { + "sp_chip_lower", + "wall", + "chip (lower half)" + }, + { + "em_gate1_gray", + "gate", + "gray door (EM style, red key)" + }, + { + "em_gate2_gray", + "gate", + "gray door (EM style, yellow key)" + }, + { + "em_gate3_gray", + "gate", + "gray door (EM style, green key)" + }, + { + "em_gate4_gray", + "gate", + "gray door (EM style, blue key)" + }, + { + "unused_254", + NULL, + "(not used)" + }, + { + "unused_255", + NULL, + "(not used)" + }, + { + "pearl", + "pearl", + "pearl" + }, + { + "crystal", + "crystal", + "crystal" + }, + { + "wall_pearl", + "wall", + "wall with pearl" + }, + { + "wall_crystal", + "wall", + "wall with crystal" + }, + { + "door_white", + "gate", + "white door" + }, + { + "door_white_gray", + "gate", + "gray door (opened by white key)" + }, + { + "key_white", + "key", + "white key" + }, + { + "shield_normal", + "shield_normal", + "shield (normal)" + }, + { + "extra_time", + "extra_time", + "extra time" + }, + { + "switchgate_open", + "switchgate", + "switch gate (open)" + }, + { + "switchgate_closed", + "switchgate", + "switch gate (closed)" + }, + { + "switchgate_switch_up", + "switchgate_switch", + "switch for switch gate" + }, + { + "switchgate_switch_down", + "switchgate_switch", + "switch for switch gate" + }, + { + "unused_269", + NULL, + "-" + }, + { + "unused_270", + NULL, + "-" + }, + { + "conveyor_belt1_left", + "conveyor_belt", + "red conveyor belt (left)" + }, + { + "conveyor_belt1_middle", + "conveyor_belt", + "red conveyor belt (middle)" + }, + { + "conveyor_belt1_right", + "conveyor_belt", + "red conveyor belt (right)" + }, + { + "conveyor_belt1_switch_left", + "conveyor_belt_switch", + "switch for red conveyor belt (left)" + }, + { + "conveyor_belt1_switch_middle", + "conveyor_belt_switch", + "switch for red conveyor belt (middle)" + }, + { + "conveyor_belt1_switch_right", + "conveyor_belt_switch", + "switch for red conveyor belt (right)" + }, + { + "conveyor_belt2_left", + "conveyor_belt", + "yellow conveyor belt (left)" + }, + { + "conveyor_belt2_middle", + "conveyor_belt", + "yellow conveyor belt (middle)" + }, + { + "conveyor_belt2_right", + "conveyor_belt", + "yellow conveyor belt (right)" + }, + { + "conveyor_belt2_switch_left", + "conveyor_belt_switch", + "switch for yellow conveyor belt (left)" + }, + { + "conveyor_belt2_switch_middle", + "conveyor_belt_switch", + "switch for yellow conveyor belt (middle)" + }, + { + "conveyor_belt2_switch_right", + "conveyor_belt_switch", + "switch for yellow conveyor belt (right)" + }, + { + "conveyor_belt3_left", + "conveyor_belt", + "green conveyor belt (left)" + }, + { + "conveyor_belt3_middle", + "conveyor_belt", + "green conveyor belt (middle)" + }, + { + "conveyor_belt3_right", + "conveyor_belt", + "green conveyor belt (right)" + }, + { + "conveyor_belt3_switch_left", + "conveyor_belt_switch", + "switch for green conveyor belt (left)" + }, + { + "conveyor_belt3_switch_middle", + "conveyor_belt_switch", + "switch for green conveyor belt (middle)" + }, + { + "conveyor_belt3_switch_right", + "conveyor_belt_switch", + "switch for green conveyor belt (right)" + }, + { + "conveyor_belt4_left", + "conveyor_belt", + "blue conveyor belt (left)" + }, + { + "conveyor_belt4_middle", + "conveyor_belt", + "blue conveyor belt (middle)" + }, + { + "conveyor_belt4_right", + "conveyor_belt", + "blue conveyor belt (right)" + }, + { + "conveyor_belt4_switch_left", + "conveyor_belt_switch", + "switch for blue conveyor belt (left)" + }, + { + "conveyor_belt4_switch_middle", + "conveyor_belt_switch", + "switch for blue conveyor belt (middle)" + }, + { + "conveyor_belt4_switch_right", + "conveyor_belt_switch", + "switch for blue conveyor belt (right)" + }, + { + "landmine", + "sand", + "land mine" + }, + { + "envelope", + "envelope", + "mail envelope" + }, + { + "light_switch", + "light_switch", + "light switch (off)" + }, + { + "light_switch_active", + "light_switch", + "light switch (on)" + }, + { + "sign_exclamation", + "wall", + "sign (exclamation)" + }, + { + "sign_radioactivity", + "wall", + "sign (radio activity)" + }, + { + "sign_stop", + "wall", + "sign (stop)" + }, + { + "sign_wheelchair", + "wall", + "sign (wheel chair)" + }, + { + "sign_parking", + "wall", + "sign (parking)" + }, + { + "sign_oneway", + "wall", + "sign (one way)" + }, + { + "sign_heart", + "wall", + "sign (heart)" + }, + { + "sign_triangle", + "wall", + "sign (triangle)" + }, + { + "sign_round", + "wall", + "sign (round)" + }, + { + "sign_exit", + "wall", + "sign (exit)" + }, + { + "sign_yinyang", + "wall", + "sign (yin yang)" + }, + { + "sign_other", + "wall", + "sign (other)" + }, + { + "mole_left", + "mole", + "mole (starts moving left)" + }, + { + "mole_right", + "mole", + "mole (starts moving right)" + }, + { + "mole_up", + "mole", + "mole (starts moving up)" + }, + { + "mole_down", + "mole", + "mole (starts moving down)" + }, + { + "steelwall_slanted", + "wall", + "steel wall (slanted)" + }, + { + "invisible_sand", + "sand", + "invisible sand" + }, + { + "dx_unknown_15", + NULL, + "dx unknown element 15" + }, + { + "dx_unknown_42", + NULL, + "dx unknown element 42" + }, + { + "unused_319", + NULL, + "(not used)" + }, + { + "unused_320", + NULL, + "(not used)" + }, + { + "shield_deadly", + "shield_deadly", + "shield (deadly, kills enemies)" + }, + { + "timegate_open", + "timegate", + "time gate (open)" + }, + { + "timegate_closed", + "timegate", + "time gate (closed)" + }, + { + "timegate_switch_active", + "timegate_switch", + "switch for time gate" + }, + { + "timegate_switch", + "timegate_switch", + "switch for time gate" + }, + { + "balloon", + "balloon", + "balloon" + }, + { + "balloon_send_left", + "balloon_switch", + "send balloon to the left" + }, + { + "balloon_send_right", + "balloon_switch", + "send balloon to the right" + }, + { + "balloon_send_up", + "balloon_switch", + "send balloon up" + }, + { + "balloon_send_down", + "balloon_switch", + "send balloon down" + }, + { + "balloon_send_any_direction", + "balloon_switch", + "send balloon in any direction" + }, + { + "emc_steelwall1", + "wall", + "steel wall" + }, + { + "emc_steelwall2", + "wall", + "steel wall" + }, + { + "emc_steelwall3", + "wall", + "steel wall" + }, + { + "emc_steelwall4", + "wall", + "steel wall" + }, + { + "emc_wall_pillar_upper", + "wall", + "normal wall" + }, + { + "emc_wall_pillar_middle", + "wall", + "normal wall" + }, + { + "emc_wall_pillar_lower", + "wall", + "normal wall" + }, + { + "emc_wall4", + "wall", + "normal wall" + }, + { + "emc_wall5", + "wall", + "normal wall" + }, + { + "emc_wall6", + "wall", + "normal wall" + }, + { + "emc_wall7", + "wall", + "normal wall" + }, + { + "emc_wall8", + "wall", + "normal wall" + }, + { + "tube_all", + "tube", + "tube (all directions)" + }, + { + "tube_vertical", + "tube", + "tube (vertical)" + }, + { + "tube_horizontal", + "tube", + "tube (horizontal)" + }, + { + "tube_vertical_left", + "tube", + "tube (vertical & left)" + }, + { + "tube_vertical_right", + "tube", + "tube (vertical & right)" + }, + { + "tube_horizontal_up", + "tube", + "tube (horizontal & up)" + }, + { + "tube_horizontal_down", + "tube", + "tube (horizontal & down)" + }, + { + "tube_left_up", + "tube", + "tube (left & up)" + }, + { + "tube_left_down", + "tube", + "tube (left & down)" + }, + { + "tube_right_up", + "tube", + "tube (right & up)" + }, + { + "tube_right_down", + "tube", + "tube (right & down)" + }, + { + "spring", + "spring", + "spring" + }, + { + "trap", + "trap", + "trap" + }, + { + "dx_supabomb", + "dx_bomb", + "stable bomb (DX style)" + }, + { + "unused_358", + NULL, + "-" + }, + { + "unused_359", + NULL, + "-" + }, + { + "custom_1", + "custom", + "custom element 1" + }, + { + "custom_2", + "custom", + "custom element 2" + }, + { + "custom_3", + "custom", + "custom element 3" + }, + { + "custom_4", + "custom", + "custom element 4" + }, + { + "custom_5", + "custom", + "custom element 5" + }, + { + "custom_6", + "custom", + "custom element 6" + }, + { + "custom_7", + "custom", + "custom element 7" + }, + { + "custom_8", + "custom", + "custom element 8" + }, + { + "custom_9", + "custom", + "custom element 9" + }, + { + "custom_10", + "custom", + "custom element 10" + }, + { + "custom_11", + "custom", + "custom element 11" + }, + { + "custom_12", + "custom", + "custom element 12" + }, + { + "custom_13", + "custom", + "custom element 13" + }, + { + "custom_14", + "custom", + "custom element 14" + }, + { + "custom_15", + "custom", + "custom element 15" + }, + { + "custom_16", + "custom", + "custom element 16" + }, + { + "custom_17", + "custom", + "custom element 17" + }, + { + "custom_18", + "custom", + "custom element 18" + }, + { + "custom_19", + "custom", + "custom element 19" + }, + { + "custom_20", + "custom", + "custom element 20" + }, + { + "custom_21", + "custom", + "custom element 21" + }, + { + "custom_22", + "custom", + "custom element 22" + }, + { + "custom_23", + "custom", + "custom element 23" + }, + { + "custom_24", + "custom", + "custom element 24" + }, + { + "custom_25", + "custom", + "custom element 25" + }, + { + "custom_26", + "custom", + "custom element 26" + }, + { + "custom_27", + "custom", + "custom element 27" + }, + { + "custom_28", + "custom", + "custom element 28" + }, + { + "custom_29", + "custom", + "custom element 29" + }, + { + "custom_30", + "custom", + "custom element 30" + }, + { + "custom_31", + "custom", + "custom element 31" + }, + { + "custom_32", + "custom", + "custom element 32" + }, + { + "custom_33", + "custom", + "custom element 33" + }, + { + "custom_34", + "custom", + "custom element 34" + }, + { + "custom_35", + "custom", + "custom element 35" + }, + { + "custom_36", + "custom", + "custom element 36" + }, + { + "custom_37", + "custom", + "custom element 37" + }, + { + "custom_38", + "custom", + "custom element 38" + }, + { + "custom_39", + "custom", + "custom element 39" + }, + { + "custom_40", + "custom", + "custom element 40" + }, + { + "custom_41", + "custom", + "custom element 41" + }, + { + "custom_42", + "custom", + "custom element 42" + }, + { + "custom_43", + "custom", + "custom element 43" + }, + { + "custom_44", + "custom", + "custom element 44" + }, + { + "custom_45", + "custom", + "custom element 45" + }, + { + "custom_46", + "custom", + "custom element 46" + }, + { + "custom_47", + "custom", + "custom element 47" + }, + { + "custom_48", + "custom", + "custom element 48" + }, + { + "custom_49", + "custom", + "custom element 49" + }, + { + "custom_50", + "custom", + "custom element 50" + }, + { + "custom_51", + "custom", + "custom element 51" + }, + { + "custom_52", + "custom", + "custom element 52" + }, + { + "custom_53", + "custom", + "custom element 53" + }, + { + "custom_54", + "custom", + "custom element 54" + }, + { + "custom_55", + "custom", + "custom element 55" + }, + { + "custom_56", + "custom", + "custom element 56" + }, + { + "custom_57", + "custom", + "custom element 57" + }, + { + "custom_58", + "custom", + "custom element 58" + }, + { + "custom_59", + "custom", + "custom element 59" + }, + { + "custom_60", + "custom", + "custom element 60" + }, + { + "custom_61", + "custom", + "custom element 61" + }, + { + "custom_62", + "custom", + "custom element 62" + }, + { + "custom_63", + "custom", + "custom element 63" + }, + { + "custom_64", + "custom", + "custom element 64" + }, + { + "custom_65", + "custom", + "custom element 65" + }, + { + "custom_66", + "custom", + "custom element 66" + }, + { + "custom_67", + "custom", + "custom element 67" + }, + { + "custom_68", + "custom", + "custom element 68" + }, + { + "custom_69", + "custom", + "custom element 69" + }, + { + "custom_70", + "custom", + "custom element 70" + }, + { + "custom_71", + "custom", + "custom element 71" + }, + { + "custom_72", + "custom", + "custom element 72" + }, + { + "custom_73", + "custom", + "custom element 73" + }, + { + "custom_74", + "custom", + "custom element 74" + }, + { + "custom_75", + "custom", + "custom element 75" + }, + { + "custom_76", + "custom", + "custom element 76" + }, + { + "custom_77", + "custom", + "custom element 77" + }, + { + "custom_78", + "custom", + "custom element 78" + }, + { + "custom_79", + "custom", + "custom element 79" + }, + { + "custom_80", + "custom", + "custom element 80" + }, + { + "custom_81", + "custom", + "custom element 81" + }, + { + "custom_82", + "custom", + "custom element 82" + }, + { + "custom_83", + "custom", + "custom element 83" + }, + { + "custom_84", + "custom", + "custom element 84" + }, + { + "custom_85", + "custom", + "custom element 85" + }, + { + "custom_86", + "custom", + "custom element 86" + }, + { + "custom_87", + "custom", + "custom element 87" + }, + { + "custom_88", + "custom", + "custom element 88" + }, + { + "custom_89", + "custom", + "custom element 89" + }, + { + "custom_90", + "custom", + "custom element 90" + }, + { + "custom_91", + "custom", + "custom element 91" + }, + { + "custom_92", + "custom", + "custom element 92" + }, + { + "custom_93", + "custom", + "custom element 93" + }, + { + "custom_94", + "custom", + "custom element 94" + }, + { + "custom_95", + "custom", + "custom element 95" + }, + { + "custom_96", + "custom", + "custom element 96" + }, + { + "custom_97", + "custom", + "custom element 97" + }, + { + "custom_98", + "custom", + "custom element 98" + }, + { + "custom_99", + "custom", + "custom element 99" + }, + { + "custom_100", + "custom", + "custom element 100" + }, + { + "custom_101", + "custom", + "custom element 101" + }, + { + "custom_102", + "custom", + "custom element 102" + }, + { + "custom_103", + "custom", + "custom element 103" + }, + { + "custom_104", + "custom", + "custom element 104" + }, + { + "custom_105", + "custom", + "custom element 105" + }, + { + "custom_106", + "custom", + "custom element 106" + }, + { + "custom_107", + "custom", + "custom element 107" + }, + { + "custom_108", + "custom", + "custom element 108" + }, + { + "custom_109", + "custom", + "custom element 109" + }, + { + "custom_110", + "custom", + "custom element 110" + }, + { + "custom_111", + "custom", + "custom element 111" + }, + { + "custom_112", + "custom", + "custom element 112" + }, + { + "custom_113", + "custom", + "custom element 113" + }, + { + "custom_114", + "custom", + "custom element 114" + }, + { + "custom_115", + "custom", + "custom element 115" + }, + { + "custom_116", + "custom", + "custom element 116" + }, + { + "custom_117", + "custom", + "custom element 117" + }, + { + "custom_118", + "custom", + "custom element 118" + }, + { + "custom_119", + "custom", + "custom element 119" + }, + { + "custom_120", + "custom", + "custom element 120" + }, + { + "custom_121", + "custom", + "custom element 121" + }, + { + "custom_122", + "custom", + "custom element 122" + }, + { + "custom_123", + "custom", + "custom element 123" + }, + { + "custom_124", + "custom", + "custom element 124" + }, + { + "custom_125", + "custom", + "custom element 125" + }, + { + "custom_126", + "custom", + "custom element 126" + }, + { + "custom_127", + "custom", + "custom element 127" + }, + { + "custom_128", + "custom", + "custom element 128" + }, + + /* "real" (and therefore drawable) runtime elements */ + + { + "em_key1", + "key", + "-" + }, + { + "em_key2", + "key", + "-" + }, + { + "em_key3", + "key", + "-" + }, + { + "em_key4", + "key", + "-" + }, + { + "dynabomb_player1_active", + "dynabomb", + "-" + }, + { + "dynabomb_player2_active", + "dynabomb", + "-" + }, + { + "dynabomb_player3_active", + "dynabomb", + "-" + }, + { + "dynabomb_player4_active", + "dynabomb", + "-" + }, + { + "switchgate_opening", + "switchgate", + "-" + }, + { + "switchgate_closing", + "switchgate", + "-" + }, + { + "timegate_opening", + "timegate", + "-" + }, + { + "timegate_closing", + "timegate", + "-" + }, + { + "pearl_breaking", + "pearl", + "-" + }, + { + "trap_active", + "trap", + "-" + }, + { + "invisible_steelwall_active", + "wall", + "-" + }, + { + "invisible_wall_active", + "wall", + "-" + }, + { + "invisible_sand_active", + "sand", + "-" + }, + { + "conveyor_belt1_left_active", + "conveyor_belt", + "-" + }, + { + "conveyor_belt1_middle_active", + "conveyor_belt", + "-" + }, + { + "conveyor_belt1_right_active", + "conveyor_belt", + "-" + }, + { + "conveyor_belt2_left_active", + "conveyor_belt", + "-" + }, + { + "conveyor_belt2_middle_active", + "conveyor_belt", + "-" + }, + { + "conveyor_belt2_right_active", + "conveyor_belt", + "-" + }, + { + "conveyor_belt3_left_active", + "conveyor_belt", + "-" + }, + { + "conveyor_belt3_middle_active", + "conveyor_belt", + "-" + }, + { + "conveyor_belt3_right_active", + "conveyor_belt", + "-" + }, + { + "conveyor_belt4_left_active", + "conveyor_belt", + "-" + }, + { + "conveyor_belt4_middle_active", + "conveyor_belt", + "-" + }, + { + "conveyor_belt4_right_active", + "conveyor_belt", + "-" + }, + { + "exit_opening", + "exit", + "-" + }, + { + "sp_exit_open", + "sp_exit", + "-" + }, + { + "sp_terminal_active", + "sp_terminal", + "-" + }, + { + "sp_buggy_base_activating", + "sp_buggy_base", + "-" + }, + { + "sp_buggy_base_active", + "sp_buggy_base", + "-" + }, + { + "sp_murphy_clone", + "murphy_clone", + "-" + }, + { + "amoeba_dripping", + "amoeba", + "-" + }, + { + "quicksand_emptying", + "quicksand", + "-" + }, + { + "magic_wall_active", + "magic_wall", + "-" + }, + { + "bd_magic_wall_active", + "magic_wall", + "-" + }, + { + "magic_wall_full", + "magic_wall", + "-" + }, + { + "bd_magic_wall_full", + "magic_wall", + "-" + }, + { + "magic_wall_emptying", + "magic_wall", + "-" + }, + { + "bd_magic_wall_emptying", + "magic_wall", + "-" + }, + { + "magic_wall_dead", + "magic_wall", + "-" + }, + { + "bd_magic_wall_dead", + "magic_wall", + "-" + }, + + { + "", + NULL, + "-" + } +}; + +#if 0 +struct GraphicInfo graphic_info[MAX_GRAPHICS]; +#endif +struct NewGraphicInfo new_graphic_info[NUM_IMAGE_FILES]; + + +/* ========================================================================= */ +/* main() */ +/* ========================================================================= */ + +int main(int argc, char *argv[]) +{ + InitCommandName(argv[0]); + InitExitFunction(CloseAllAndExit); + InitPlatformDependantStuff(); + + GetOptions(argv); + OpenAll(); + + EventLoop(); + CloseAllAndExit(0); + + return 0; /* to keep compilers happy */ }