Added statev to sql transform script
[libfirm] / ir / be / test / fehler39.c
index 0d81e39..c3bbaa9 100644 (file)
-#include <string.h>
-
-
-#define ANI_TOPMOST_LEVEL               7
-#define CELL_X_SIZE                    10
-#define CELL_Y_SIZE                    10
-#define EXPLOSION_FLAG_USEABSPOS      0x00000001
-#define EXPLOSION_FLAG_DISPLAYONLY    0x00000002
-#define HIGHVOLUME                    127
-#define MIN_AMB_LEVEL_FOR_MERC_LIGHTS   9
-#define ROOF_LEVEL_HEIGHT              50
-#define TRUE                            1
-#define WALL_HEIGHT                    50
-
-
-#define ANITILE_FORWARD                                                                                        0x00000040
-#define ANITILE_CACHEDTILE                                                                     0x00008000
-#define ANITILE_NOZBLITTER                                                                     0x00040000
-#define ANITILE_ALWAYS_TRANSLUCENT                                     0x00100000
-#define ANITILE_EXPLOSION                                                                              0x20000000
-
-
-typedef unsigned char  BOOLEAN;
-typedef          char  CHAR8;
-typedef   signed char   INT8;
-typedef unsigned char  UINT8;
-typedef   signed short  INT16;
-typedef unsigned short UINT16;
-typedef   signed int    INT32;
-typedef unsigned int   UINT32;
-
-
-typedef struct LEVELNODE LEVELNODE;
-
-
-typedef struct TAG_anitile_params
-{
-       UINT32                                                                                  uiFlags;                                                        // flags struct
-       UINT8                                                                                           ubLevelID;                                              // Level ID for rendering layer
-       INT16                                                                                     sStartFrame;                                  // Start frame
-       INT16                                                                                           sDelay;                                                         // Delay time
-       UINT16                                                                                  usTileType;                                             // Tile databse type ( optional )
-       UINT16                                                                                  usTileIndex;                                    // Tile database index ( optional )
-       INT16                                                                                           sX;                                                                             // World X ( optional )
-       INT16                                                                                           sY;                                                                             // World Y ( optional )
-       INT16                                                                                           sZ;                                                                             // World Z ( optional )
-       INT16                                                                                           sGridNo;                                                        // World GridNo
-
-       LEVELNODE                                                                               *pGivenLevelNode;                       // Levelnode for existing tile ( optional )
-       const char* zCachedFile; // Filename for cached tile name ( optional )
-
-       UINT8                                                                                           ubOwner;                                                        // UBID for the owner
-       UINT8                                                                                           ubKeyFrame1;                                    // Key frame 1
-       UINT32                                                                                  uiKeyFrame1Code;                        // Key frame code
-       UINT8                                                                                           ubKeyFrame2;                                    // Key frame 2
-       UINT32                                                                                  uiKeyFrame2Code;                        // Key frame code
-
-       UINT32                                                                                  uiUserData;
-       UINT8                                                                                           ubUserData2;
-       UINT32                                                                                  uiUserData3;
-
-} ANITILE_PARAMS;
-
-
-// Explosion Data
-typedef struct
-{
-       UINT32                                                                                  uiFlags;
-
-       UINT8                                                                                           ubOwner;
-       UINT8                                                                                           ubTypeID;
-
-       UINT16                                                                                  usItem;
-
-       INT16                                                                                           sX;                                                                             // World X ( optional )
-       INT16                                                                                           sY;                                                                             // World Y ( optional )
-       INT16                                                                                           sZ;                                                                             // World Z ( optional )
-       INT16                                                                                           sGridNo;                                                        // World GridNo
-       BOOLEAN                                                                                 fLocate;
-       INT8                                                                                            bLevel;                                                         // World level
-       UINT8                                                                                           ubUnsed[1];
-} EXPLOSION_PARAMS;
-
+/* register allocator fails to resolve IMul Constraints correctly */
+#include <stdlib.h>
+#include <stdio.h>
 
 typedef struct
 {
-       EXPLOSION_PARAMS                Params;
-       BOOLEAN                                                 fAllocated;
-       INT16                                                           sCurrentFrame;
-       INT32                                                           iID;
-       INT32                                                           iLightID;
-       UINT8                                                           ubUnsed[2];
+       short sX;
+       short sY;
+       int iLightID;
 } EXPLOSIONTYPE;
 
-
-enum
-{
-       ANI_KEYFRAME_NO_CODE,
-       ANI_KEYFRAME_BEGIN_TRANSLUCENCY,
-       ANI_KEYFRAME_BEGIN_DAMAGE,
-       ANI_KEYFRAME_CHAIN_WATER_EXPLOSION,
-  ANI_KEYFRAME_DO_SOUND,
-} KeyFrameEnums;
-
-
-// SOUNDS ENUMERATION
-enum SoundDefines
-{
-       MISS_1 = 0,
-       MISS_2,
-       MISS_3,
-       MISS_4,
-       MISS_5,
-       MISS_6,
-       MISS_7,
-       MISS_8,
-       MISS_G1,
-       MISS_G2,
-       MISS_KNIFE,
-       FALL_1,
-       FALL_2,
-       FALL_TO_GROUND_1,
-       FALL_TO_GROUND_2,
-       FALL_TO_GROUND_3,
-       HEAVY_FALL_1,
-       BODY_SPLAT_1,
-       GLASS_SHATTER1,
-       GLASS_SHATTER2,
-       DROPEN_1,
-       DROPEN_2,
-       DROPEN_3,
-       DRCLOSE_1,
-       DRCLOSE_2,
-       UNLOCK_DOOR_1,
-       KICKIN_DOOR,
-       BREAK_LOCK,
-       PICKING_LOCK,
-
-       GARAGE_DOOR_OPEN,
-       GARAGE_DOOR_CLOSE,
-       ELEVATOR_DOOR_OPEN,
-       ELEVATOR_DOOR_CLOSE,
-       HITECH_DOOR_OPEN,
-       HITECH_DOOR_CLOSE,
-       CURTAINS_OPEN,
-       CURTAINS_CLOSE,
-       METAL_DOOR_OPEN,
-       METAL_DOOR_CLOSE,
-
-       WALK_LEFT_OUT,
-       WALK_RIGHT_OUT,
-       WALK_LEFT_OUT2,
-       WALK_RIGHT_OUT2,
-       WALK_LEFT_IN,
-       WALK_RIGHT_IN,
-       WALK_LEFT_IN2,
-       WALK_RIGHT_IN2,
-       WALK_LEFT_ROAD,
-       WALK_RIGHT_ROAD,
-       WALK_LEFT_ROAD2,
-       WALK_RIGHT_ROAD2,
-       CRAWL_1,
-       CRAWL_2,
-       CRAWL_3,
-       CRAWL_4,
-       TARG_REFINE_BEEP,
-       ENDTURN_1,
-       HEADCR_1,
-       DOORCR_1,
-       HEADSPLAT_1,
-       BODY_EXPLODE_1,
-       EXPLOSION_1,
-       CROW_EXPLODE_1,
-       SMALL_EXPLODE_1,
-       HELI_1,
-       BULLET_IMPACT_1,
-       BULLET_IMPACT_2,
-       BULLET_IMPACT_3,
-       CREATURE_BATTLECRY_1,
-       ENTER_WATER_1,
-       ENTER_DEEP_WATER_1,
-
-       COW_HIT_SND,
-       COW_DIE_SND,
-
-       // ROCKET GUN COMPUTER VOICE...
-       RG_ID_IMPRINTED,
-       RG_ID_INVALID,
-       RG_TARGET_SELECTED,
-
-       // CAVE COLLAPSE
-       CAVE_COLLAPSE,
-
-       // AIR RAID SOUNDS...
-       S_RAID_WHISTLE,
-       S_RAID_AMBIENT,
-       S_RAID_DIVE,
-       S_RAID_TB_DIVE,
-       S_RAID_TB_BOMB,
-
-       // VEHICLE SOUNDS
-       S_VECH1_MOVE,
-       S_VECH1_ON,
-       S_VECH1_OFF,
-       S_VECH1_INTO,
-
-       S_DRYFIRE1,
-
-       // IMPACT SOUNDS
-       S_WOOD_IMPACT1,
-       S_WOOD_IMPACT2,
-       S_WOOD_IMPACT3,
-       S_PORCELAIN_IMPACT1,
-       S_RUBBER_IMPACT1,
-       S_STONE_IMPACT1,
-       S_WATER_IMPACT1,
-       S_VEG_IMPACT1,
-       S_METAL_IMPACT1,
-       S_METAL_IMPACT2,
-       S_METAL_IMPACT3,
-
-       S_SLAP_IMPACT,
-
-       // WEAPON RELOAD
-       S_RELOAD_REVOLVER,
-       S_RELOAD_PISTOL,
-       S_RELOAD_SMG,
-       S_RELOAD_RIFLE,
-       S_RELOAD_SHOTGUN,
-       S_RELOAD_LMG,
-
-       // WEAPON LOCKNLOAD
-       S_LNL_REVOLVER,
-       S_LNL_PISTOL,
-       S_LNL_SMG,
-       S_LNL_RIFLE,
-       S_LNL_SHOTGUN,
-       S_LNL_LMG,
-
-       //WEAPON SHOT SOUNDS
-       S_SMALL_ROCKET_LAUNCHER,
-       S_GLAUNCHER,
-       S_UNDER_GLAUNCHER,
-       S_ROCKET_LAUNCHER,
-       S_MORTAR_SHOT,
-       S_GLOCK17,
-       S_GLOCK18,
-       S_BERETTA92,
-       S_BERETTA93,
-       S_SWSPECIAL,
-       S_BARRACUDA,
-       S_DESERTEAGLE,
-       S_M1911,
-       S_MP5K,
-       S_MAC10,
-       S_THOMPSON,
-       S_COMMANDO,
-       S_MP53,
-       S_AKSU74,
-       S_P90,
-       S_TYPE85,
-       S_SKS,
-       S_DRAGUNOV,
-       S_M24,
-       S_AUG,
-       S_G41,
-       S_RUGERMINI,
-       S_C7,
-       S_FAMAS,
-       S_AK74,
-       S_AKM,
-       S_M14,
-       S_FNFAL,
-       S_G3A3,
-       S_G11,
-       S_M870,
-       S_SPAS,
-       S_CAWS,
-       S_FNMINI,
-       S_RPK74,
-       S_21E,
-       S_THROWKNIFE,
-       S_TANK_CANNON,
-       S_BURSTTYPE1,
-  S_AUTOMAG,
-
-       S_SILENCER_1,
-       S_SILENCER_2,
-
-       // SWOOSHES.
-       SWOOSH_1,
-       SWOOSH_2,
-       SWOOSH_3,
-       SWOOSH_4,
-       SWOOSH_5,
-       SWOOSH_6,
-
-       // CREATURE SOUNDS....
-       ACR_FALL_1,
-       ACR_STEP_1,
-       ACR_STEP_2,
-       ACR_SWIPE,
-       ACR_EATFLESH,
-       ACR_CRIPPLED,
-       ACR_DIE_PART1,
-       ACR_DIE_PART2,
-       ACR_LUNGE,
-       ACR_SMELL_THREAT,
-       ACR_SMEEL_PREY,
-       ACR_SPIT,
-       //BABY
-       BCR_DYING,
-       BCR_DRAGGING,
-       BCR_SHRIEK,
-       BCR_SPITTING,
-       // LARVAE
-       LCR_MOVEMENT,
-       LCR_RUPTURE,
-       // QUEEN
-       LQ_SHRIEK,
-       LQ_DYING,
-       LQ_ENRAGED_ATTACK,
-       LQ_RUPTURING,
-       LQ_CRIPPLED,
-       LQ_SMELLS_THREAT,
-       LQ_WHIP_ATTACK,
-
-       THROW_IMPACT_1,
-       THROW_IMPACT_2,
-
-       IDLE_SCRATCH,
-       IDLE_ARMPIT,
-       IDLE_BACKCRACK,
-
-       AUTORESOLVE_FINISHFX,
-
-       //Interface buttons, misc.
-       EMAIL_ALERT,
-       ENTERING_TEXT,
-       REMOVING_TEXT,
-       COMPUTER_BEEP2_IN,
-       COMPUTER_BEEP2_OUT,
-       COMPUTER_SWITCH1_IN,
-       COMPUTER_SWITCH1_OUT,
-       VSM_SWITCH1_IN,
-       VSM_SWITCH1_OUT,
-       VSM_SWITCH2_IN,
-       VSM_SWITCH2_OUT,
-       SM_SWITCH1_IN,
-       SM_SWITCH1_OUT,
-       SM_SWITCH2_IN,
-       SM_SWITCH2_OUT,
-       SM_SWITCH3_IN,
-       SM_SWITCH3_OUT,
-       BIG_SWITCH3_IN,
-       BIG_SWITCH3_OUT,
-       KLAXON_ALARM,
-       BOXING_BELL,
-       HELI_CRASH,
-       ATTACH_TO_GUN,
-       ATTACH_CERAMIC_PLATES,
-       ATTACH_DETONATOR,
-
-       GRAB_ROOF,
-       LAND_ON_ROOF,
-
-       UNSTEALTHY_OUTSIDE_1,
-       UNSTEALTHY_OUTSIDE_2,
-       UNSTEALTHY_INSIDE_1,
-
-       OPEN_DEFAULT_OPENABLE,
-       CLOSE_DEFAULT_OPENABLE,
-
-       FIRE_ON_MERC,
-       GLASS_CRACK,
-       SPIT_RICOCHET,
-
-       BLOODCAT_HIT_1,
-       BLOODCAT_DIE_1,
-       SLAP_1,
-
-       ROBOT_BEEP,
-       DOOR_ELECTRICITY,
-       SWIM_1,
-       SWIM_2,
-       KEY_FAILURE,
-       TARGET_OUT_OF_RANGE,
-  OPEN_STATUE,
-  USE_STATUE_REMOTE,
-  USE_WIRE_CUTTERS,
-  DRINK_CANTEEN_FEMALE,
-  BLOODCAT_ATTACK,
-  BLOODCAT_ROAR,
-  ROBOT_GREETING,
-  ROBOT_DEATH,
-  GAS_EXPLODE_1,
-  AIR_ESCAPING_1,
-
-  OPEN_DRAWER,
-  CLOSE_DRAWER,
-  OPEN_LOCKER,
-  CLOSE_LOCKER,
-  OPEN_WOODEN_BOX,
-  CLOSE_WOODEN_BOX,
-  ROBOT_STOP,
-
-       WATER_WALK1_IN,
-       WATER_WALK1_OUT,
-       WATER_WALK2_IN,
-       WATER_WALK2_OUT,
-
-  PRONE_UP_SOUND,
-  PRONE_DOWN_SOUND,
-  KNEEL_UP_SOUND,
-  KNEEL_DOWN_SOUND,
-  PICKING_SOMETHING_UP,
-
-  COW_FALL,
-
-  BLOODCAT_GROWL_1,
-  BLOODCAT_GROWL_2,
-  BLOODCAT_GROWL_3,
-  BLOODCAT_GROWL_4,
-  CREATURE_GAS_NOISE,
-  CREATURE_FALL_PART_2,
-  CREATURE_DISSOLVE_1,
-  QUEEN_AMBIENT_NOISE,
-  CREATURE_FALL,
-  CROW_PECKING_AT_FLESH,
-  CROW_FLYING_AWAY,
-  SLAP_2,
-  MORTAR_START,
-  MORTAR_WHISTLE,
-  MORTAR_LOAD,
-
-  TURRET_MOVE,
-  TURRET_STOP,
-  COW_FALL_2,
-  KNIFE_IMPACT,
-  EXPLOSION_ALT_BLAST_1,
-  EXPLOSION_BLAST_2,
-  DRINK_CANTEEN_MALE,
-  USE_X_RAY_MACHINE,
-  CATCH_OBJECT,
-  FENCE_OPEN,
-
-       NUM_SAMPLES
-};
-
-
-// TERRAIN ID VALUES.
-enum
-{
-       NO_TERRAIN,
-       FLAT_GROUND,
-       FLAT_FLOOR,
-       PAVED_ROAD,
-       DIRT_ROAD,
-       LOW_GRASS,
-       HIGH_GRASS,
-       TRAIN_TRACKS,
-       LOW_WATER,
-       MED_WATER,
-       DEEP_WATER,
-       NUM_TERRAIN_TYPES
-};
-
-
-enum
-{
-       NO_BLAST,
-       BLAST_1,
-       BLAST_2,
-       BLAST_3,
-       STUN_BLAST,
-       WATER_BLAST,
-  TARGAS_EXP,
-  SMOKE_EXP,
-  MUSTARD_EXP,
-
-       NUM_EXP_TYPES
-};
-
-
-CHAR8 sBlastSpeeds[] =
-{
-       0,
-       80,
-       80,
-       80,
-       20,
-       80,
-       80,
-       80,
-       80,
-};
-
-
-UINT8 ubDamageKeyFrame[NUM_EXP_TYPES] =
-{
-       0,
-       3,
-       5,
-       5,
-       5,
-       18,
-       18,
-       18,
-       18,
-};
-
-
-UINT32 uiExplosionSoundID[NUM_EXP_TYPES] =
-{
-       EXPLOSION_1,
-       EXPLOSION_1,
-       EXPLOSION_BLAST_2,  //LARGE
-       EXPLOSION_BLAST_2,
-       EXPLOSION_1,
-       AIR_ESCAPING_1,
-       AIR_ESCAPING_1,
-       AIR_ESCAPING_1,
-       AIR_ESCAPING_1,
-};
-
-
-UINT8 ubTransKeyFrame[NUM_EXP_TYPES] =
-{
-       0,
-       17,
-       28,
-       24,
-       1,
-       1,
-       1,
-       1,
-       1,
-};
-
-
-CHAR8  zBlastFilenames[][70] =
-{
-       "",
-       "TILECACHE/zgrav_d.sti",
-       "TILECACHE/zgrav_c.sti",
-       "TILECACHE/zgrav_b.sti",
-       "TILECACHE/shckwave.sti",
-       "TILECACHE/wat_exp.sti",
-       "TILECACHE/tear_exp.sti",
-       "TILECACHE/tear_exp.sti",
-       "TILECACHE/must_exp.sti",
-};
-
-
-UINT8 ubAmbientLightLevel;
-
-
 static void GenerateExplosionFromExplosionPointer(EXPLOSIONTYPE* pExplosion)
 {
-       UINT32          uiFlags;
-       UINT8                   ubOwner;
-       UINT8                   ubTypeID;
-       INT16                   sX;
-       INT16                   sY;
-       INT16                   sZ;
-       INT16                   sGridNo;
-       UINT16          usItem;
-       UINT8                   ubTerrainType;
-       INT8                    bLevel;
-  UINT32    uiSoundID;
-
-       ANITILE_PARAMS  AniParams;
-
-       // Assign param values
-       uiFlags                         = pExplosion->Params.uiFlags;
-       ubOwner                         = pExplosion->Params.ubOwner;
-       ubTypeID                        = pExplosion->Params.ubTypeID;
-       sX                                              = pExplosion->Params.sX;
-       sY                                              = pExplosion->Params.sY;
-       sZ                                              = pExplosion->Params.sZ;
-       sGridNo                         = pExplosion->Params.sGridNo;
-       usItem                          = pExplosion->Params.usItem;
-       bLevel                          = pExplosion->Params.bLevel;
-
-  // If Z value given is 0 and bLevel > 0, make z heigher
-  if ( sZ == 0 && bLevel > 0 )
-  {
-    sZ = ROOF_LEVEL_HEIGHT;
-  }
-
-       pExplosion->iLightID = -1;
-
-       // OK, if we are over water.... use water explosion...
-       ubTerrainType = GetTerrainType( sGridNo );
-
-       // Setup explosion!
-       memset( &AniParams, 0, sizeof( ANITILE_PARAMS ) );
-
-       AniParams.sGridNo                                                       = sGridNo;
-       AniParams.ubLevelID                                             = ANI_TOPMOST_LEVEL;
-       AniParams.sDelay                                                        = sBlastSpeeds[ ubTypeID ];
-       AniParams.sStartFrame                                   = pExplosion->sCurrentFrame;
-       AniParams.uiFlags                                                       = ANITILE_CACHEDTILE | ANITILE_FORWARD | ANITILE_EXPLOSION;
-
-       if ( ubTerrainType == LOW_WATER || ubTerrainType == MED_WATER || ubTerrainType == DEEP_WATER )
-       {
-               // Change type to water explosion...
-               ubTypeID = WATER_BLAST;
-               AniParams.uiFlags                                               |= ANITILE_ALWAYS_TRANSLUCENT;
-       }
-
-
-       if ( sZ < WALL_HEIGHT )
-       {
-               AniParams.uiFlags |= ANITILE_NOZBLITTER;
-       }
-
-       if ( uiFlags & EXPLOSION_FLAG_USEABSPOS )
-       {
-               AniParams.sX                                                                    = sX;
-               AniParams.sY                                                                    = sY;
-               AniParams.sZ                                                                    = sZ;
-
-               //AniParams.uiFlags                                                     |= ANITILE_USEABSOLUTEPOS;
-       }
-
-       AniParams.ubKeyFrame1                                   = ubTransKeyFrame[ ubTypeID ];
-       AniParams.uiKeyFrame1Code                       = ANI_KEYFRAME_BEGIN_TRANSLUCENCY;
+       short sX = pExplosion->sX;
+       short sY = pExplosion->sY;
 
-       if ( !( uiFlags & EXPLOSION_FLAG_DISPLAYONLY ) )
+       if (pExplosion->iLightID = rand())
        {
-               AniParams.ubKeyFrame2                                   = ubDamageKeyFrame[ ubTypeID ];
-               AniParams.uiKeyFrame2Code                       = ANI_KEYFRAME_BEGIN_DAMAGE;
+               printf("Blup: %d %d %d\n", pExplosion->iLightID, sX / 10, sY / 10);
        }
-       AniParams.uiUserData                                    = usItem;
-       AniParams.ubUserData2                                   = ubOwner;
-       AniParams.uiUserData3                                   = pExplosion->iID;
-       AniParams.zCachedFile = zBlastFilenames[ubTypeID];
-       CreateAnimationTile( &AniParams );
-
-       //  set light source....
-       if ( pExplosion->iLightID == -1 )
-       {
-               // DO ONLY IF WE'RE AT A GOOD LEVEL
-               if ( ubAmbientLightLevel >= MIN_AMB_LEVEL_FOR_MERC_LIGHTS )
-               {
-                       if( ( pExplosion->iLightID = LightSpriteCreate("L-R04.LHT", 0 ) ) != (-1) )
-                       {
-                               LightSpritePower( pExplosion->iLightID, TRUE );
-
-                               LightSpritePosition( pExplosion->iLightID, (INT16)(sX/CELL_X_SIZE), (INT16)(sY/CELL_Y_SIZE) );
-                       }
-               }
-       }
-
-  uiSoundID = uiExplosionSoundID[ ubTypeID ];
-
-  if ( uiSoundID == EXPLOSION_1 )
-  {
-      // Randomize
-     if ( Random( 2 ) == 0 )
-     {
-      uiSoundID = EXPLOSION_ALT_BLAST_1;
-     }
-  }
-
-       PlayJA2Sample(uiSoundID, SoundVolume(HIGHVOLUME, sGridNo), 1, SoundDir(sGridNo));
 }