Index: heromesh.h ================================================================== --- heromesh.h +++ heromesh.h @@ -76,16 +76,16 @@ Sint32 height,weight,climb,density,volume,strength,arrivals,departures; Sint32 temperature,misc4,misc5,misc6,misc7; Uint16 uservars,oflags; Uint16 sharp[4]; Uint16 hard[4]; - Uint8 cflags,shape,shovable; + Uint8 cflags,shape,shovable,collisionLayers; } Class; extern Class*classes[0x4000]; // 0 isn't used extern const char*messages[0x4000]; // index is 256 less than message number -extern int max_animation; // max steps in animation queue +extern int max_animation; // max steps in animation queue (default 32) extern Sint32 max_volume; // max total volume to allow moving diagonally (default 10000) // == bindings == typedef struct { Index: main.c ================================================================== --- main.c +++ main.c @@ -24,10 +24,12 @@ static const char schema[]= "BEGIN;" "PRAGMA APPLICATION_ID(1296388936);" "PRAGMA RECURSIVE_TRIGGERS(1);" "CREATE TABLE IF NOT EXISTS `USERCACHEINDEX`(`ID` INTEGER PRIMARY KEY, `NAME` TEXT, `TIME` INT);" + "CREATE TABLE IF NOT EXISTS `USERCACHEDATA`(`ID` INTEGER PRIMARY KEY, `FILE` INT, `LEVEL` INT, `NAME` TEXT, `OFFSET` INT, `DATA` BLOB, `USERSTATE` BLOB);" + "CREATE INDEX IF NOT EXISTS `USERCACHEDATA_I1` ON `USERCACHEDATA`(`FILE`, `LEVEL`) WHERE `LEVEL` IS NOT NULL;" "CREATE TEMPORARY TABLE `PICTURES`(`ID` INTEGER PRIMARY KEY, `NAME` TEXT, `OFFSET` INT);" "COMMIT;" ; sqlite3*userdb; @@ -75,12 +77,18 @@ sqlite3_config(SQLITE_CONFIG_SMALL_MALLOC,(int)boolxrm(v,0)); optionquery[1]=Q_sqlCoveringIndexScan; v=xrm_get_resource(resourcedb,optionquery,optionquery,2)?:""; sqlite3_config(SQLITE_CONFIG_COVERING_INDEX_SCAN,(int)boolxrm(v,1)); if(sqlite3_initialize()) fatal("Failure to initialize SQLite.\n"); - v=getenv("HOME")?:"."; - s=sqlite3_mprintf("%s%s.heromeshsession",v,v[strlen(v)-1]=='/'?"":"/"); + optionquery[1]=Q_sqlFile; + v=xrm_get_resource(resourcedb,optionquery,optionquery,2); + if(v && *v) { + s=sqlite3_mprintf("%s",v); + } else { + v=getenv("HOME")?:"."; + s=sqlite3_mprintf("%s%s.heromeshsession",v,v[strlen(v)-1]=='/'?"":"/"); + } if(!s) fatal("Allocation failed\n"); if(z=sqlite3_open(s,&userdb)) fatal("Failed to open user database %s (%s)\n",s,userdb?sqlite3_errmsg(userdb):sqlite3_errstr(z)); sqlite3_free(s); optionquery[1]=Q_sqlExtensions; v=xrm_get_resource(resourcedb,optionquery,optionquery,2)?:""; Index: picture.c ================================================================== --- picture.c +++ picture.c @@ -70,13 +70,13 @@ if(fscanf(fp,"%2hhX%2hhX%2hhX ",&pal[i].r,&pal[i].g,&pal[i].b)!=3) fatal("Invalid palette file\n"); } else { sscanf(default_palette+i*7,"%2hhX%2hhX%2hhX ",&pal[i].r,&pal[i].g,&pal[i].b); } if(usegamma) { - j=(int)pow(pal[i].r+0.3,gamma); pal[i].r=j<0?0:j>255?255:j; - j=(int)pow(pal[i].g+0.3,gamma); pal[i].g=j<0?0:j>255?255:j; - j=(int)pow(pal[i].b+0.3,gamma); pal[i].b=j<0?0:j>255?255:j; + j=(int)(255.0*pow(pal[i].r/255.0,gamma)+0.2); pal[i].r=j<0?0:j>255?255:j; + j=(int)(255.0*pow(pal[i].g/255.0,gamma)+0.2); pal[i].g=j<0?0:j>255?255:j; + j=(int)(255.0*pow(pal[i].b/255.0,gamma)+0.2); pal[i].b=j<0?0:j>255?255:j; } } if(fp) fclose(fp); SDL_SetColors(screen,pal,0,256); SDL_SetColors(picts,pal,0,256); Index: quarks ================================================================== --- quarks +++ quarks @@ -196,10 +196,11 @@ saveSolutions solutionComment solutionTimestamp ! SQL settings +sqlFile sqlInit sqlExtensions sqlMemStatus sqlSmallAllocations sqlCoveringIndexScan Index: quarks.h ================================================================== --- quarks.h +++ quarks.h @@ -163,17 +163,18 @@ #define Q_class 164 #define Q_quiz 165 #define Q_saveSolutions 166 #define Q_solutionComment 167 #define Q_solutionTimestamp 168 -#define Q_sqlInit 169 -#define Q_sqlExtensions 170 -#define Q_sqlMemStatus 171 -#define Q_sqlSmallAllocations 172 -#define Q_sqlCoveringIndexScan 173 -#define Q_sqlPowerSafe 174 -#define Q_level 175 +#define Q_sqlFile 169 +#define Q_sqlInit 170 +#define Q_sqlExtensions 171 +#define Q_sqlMemStatus 172 +#define Q_sqlSmallAllocations 173 +#define Q_sqlCoveringIndexScan 174 +#define Q_sqlPowerSafe 175 +#define Q_level 176 static const char*const global_quarks[]={ "screenWidth", "screenHeight", "palette", "popupColors", @@ -338,10 +339,11 @@ "class", "quiz", "saveSolutions", "solutionComment", "solutionTimestamp", + "sqlFile", "sqlInit", "sqlExtensions", "sqlMemStatus", "sqlSmallAllocations", "sqlCoveringIndexScan",