diff --git a/src/view.c b/src/view.c
index 0d19be0e66e0fc562a7e1ce294c2763d7de937c0..3bf36772cd60cec019f9d89528746c84613d03c6 100644 (file)
--- a/src/view.c
+++ b/src/view.c
walani[i]=getani(s);
if(strncasecmp(s,"_WATER_",7)==0) { //if(memicmp(s,"_WATER_",7)==0) {
walh[i]=-2;walp[i]=(void*)(s[7]-'0'+1);
walani[i]=getani(s);
if(strncasecmp(s,"_WATER_",7)==0) { //if(memicmp(s,"_WATER_",7)==0) {
walh[i]=-2;walp[i]=(void*)(s[7]-'0'+1);
- }else walp[i]=M_lock(walh[i]=F_getresid(s));
+ } else {
+ walh[i]=F_getresid(s);
+ walp[i]=V_getvgaimg(walh[i]);
+ }
}
myfread(walf,1,sizeof(walf),h);
for(i=1;i<256;++i) if(walf[i]&1) walh[i]|=0x8000;
}
myfread(walf,1,sizeof(walf),h);
for(i=1;i<256;++i) if(walf[i]&1) walh[i]|=0x8000;
myfread(fldf,1,FLDW*FLDH,h);
strcpy(s,"RSKY1");s[4]=sky_type+'0';
M_unlock(horiz);
myfread(fldf,1,FLDW*FLDH,h);
strcpy(s,"RSKY1");s[4]=sky_type+'0';
M_unlock(horiz);
- horiz=M_lock(F_getresid(s));
+ horiz=V_loadvgaimg(s);
}
void W_adjust(void) {
}
void W_adjust(void) {
PL_init();
MN_init();
M_unlock(horiz);
PL_init();
MN_init();
M_unlock(horiz);
- horiz=M_lock(F_getresid("RSKY1"));
+ horiz=V_loadvgaimg("RSKY1");
free_chunks();
}
free_chunks();
}
if(g_time%3!=0) return;
for(i=1;i<256;++i) if((a=walani[i])!=0) {
if(anih[a][++anic[a]]==-1) anic[a]=0;
if(g_time%3!=0) return;
for(i=1;i<256;++i) if((a=walani[i])!=0) {
if(anih[a][++anic[a]]==-1) anic[a]=0;
- walp[i]=M_lock(anih[a][anic[a]]);
+ walp[i]=V_getvgaimg(anih[a][anic[a]]);
}
}
}
}
+/*
static void unpack(void *buf,int len,void *obuf) {
byte *p,*o;
int l,n;
static void unpack(void *buf,int len,void *obuf) {
byte *p,*o;
int l,n;
n=*((word*)(++p));memset(o,*(p+=2),n);o+=n;l-=3;
}else *(o++)=*p;
}
n=*((word*)(++p));memset(o,*(p+=2),n);o+=n;l-=3;
}else *(o++)=*p;
}
+*/
+
+static void unpack(void *buf, int len, void *obuf) {
+ int i = 0;
+ int j = 0;
+ unsigned char *p = buf;
+ unsigned char *q = obuf;
+ while (i < len) {
+ int id = p[i];
+ int step = 1;
+ i += 1;
+ if (id == 0xff) {
+ step = p[i] | p[i + 1] << 8;
+ id = p[i + 2];
+ i += 3;
+ }
+ memset(&q[j], id, step);
+ j += step;
+ }
+}
int W_load(FILE* h) {
int i,j,k,g;
int W_load(FILE* h) {
int i,j,k,g;
if(strncasecmp(w.n,"_WATER_",7)==0) //if(memicmp(w.n,"_WATER_",7)==0)
{walp[i]=(void*)(w.n[7]-'0'+1);walh[i]=-2;continue;}
if(strncasecmp(w.n,"_WATER_",7)==0) //if(memicmp(w.n,"_WATER_",7)==0)
{walp[i]=(void*)(w.n[7]-'0'+1);walh[i]=-2;continue;}
- walp[i]=M_lock(walh[i]=F_getresid(w.n));
+
+ walh[i]=F_getresid(w.n);
+ walp[i]=V_getvgaimg(walh[i]);
if(w.n[0]=='S' && w.n[1]=='W' && w.n[4]=='_') walswp[i]=0;
walf[i]=(w.t)?1:0;if(w.t) walh[i]|=0x8000;
if(w.n[0]=='S' && w.n[1]=='W' && w.n[4]=='_') walswp[i]=0;
walf[i]=(w.t)?1:0;if(w.t) walh[i]|=0x8000;
g=F_getresid(w.n)|(walh[i]&0x8000);
for(k=1;k<256;++k) if(walh[k]==g) break;
if(k>=256) {
g=F_getresid(w.n)|(walh[i]&0x8000);
for(k=1;k<256;++k) if(walh[k]==g) break;
if(k>=256) {
- walh[k=j++]=g;walp[k]=M_lock(g);
+ walh[k=j++]=g;walp[k]=V_getvgaimg(g);
walf[k]=(g&0x8000)?1:0;
}
walswp[i]=k;walswp[k]=i;
walf[k]=(g&0x8000)?1:0;
}
walswp[i]=k;walswp[k]=i;
default: return 0;
}return 1;
case MB_SKY:
default: return 0;
}return 1;
case MB_SKY:
- sky_type=0;myfread(&sky_type,1,2,h);
+ sky_type=0;myfread(&sky_type,2,1,h);
+ sky_type = short2host(sky_type);
strcpy(w.n,"RSKY1");w.n[4]=sky_type+'0';
M_unlock(horiz);
strcpy(w.n,"RSKY1");w.n[4]=sky_type+'0';
M_unlock(horiz);
- horiz=M_lock(F_getresid(w.n));
+ horiz=V_loadvgaimg(w.n);
return 1;
}return 0;
}
return 1;
}return 0;
}