mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-23 18:24:59 +00:00
217 lines
5.0 KiB
C
217 lines
5.0 KiB
C
void chardes( str11 nom, long_integer passe, integer long_)
|
|
{
|
|
integer i, p, l;
|
|
byte b;
|
|
untyped_file f;
|
|
|
|
/* debug('chardes'); */
|
|
assign(f,nom);
|
|
/*$i-*/
|
|
reset(f);
|
|
testfi();
|
|
p= 0;
|
|
while (passe>127)
|
|
{
|
|
p=p+1;
|
|
passe=passe-128;
|
|
}
|
|
if (p!=0) seek(f,p);
|
|
p= trunc(passe);
|
|
l= long_+p;
|
|
i= 0;
|
|
while (l>0)
|
|
{
|
|
blockread(f,mem[0x6000+i],1);
|
|
testfi();
|
|
l= l-128;
|
|
i= i+128;
|
|
}
|
|
close(f);
|
|
for( i=p; i <= long_+p; i ++) mem[0x7000+i-p]=mem[0x6000+i];
|
|
/*$i+*/
|
|
}
|
|
|
|
void charani( str11 nom, long_integer passe, integer long_)
|
|
{
|
|
integer i, p, l;
|
|
byte b;
|
|
untyped_file f;
|
|
|
|
/* debug('charani'); */
|
|
assign(f,nom);
|
|
/*$i-*/
|
|
reset(f);
|
|
testfi();
|
|
p= 0;
|
|
while (passe>127)
|
|
{
|
|
passe=passe-128;
|
|
p=p+1;
|
|
}
|
|
if (p!=0) seek(f,p);
|
|
p= trunc(passe);
|
|
l=long_+p;
|
|
i= 0;
|
|
while (l>0)
|
|
{
|
|
blockread(f,mem[0x6000+i],1);
|
|
testfi();
|
|
l=l-128;
|
|
i=i+128;
|
|
}
|
|
close(f);
|
|
for( i=p; i <= long_+p; i ++) mem[0x7314+i-p]=mem[0x6000+i];
|
|
/*$i+*/
|
|
}
|
|
|
|
void taffich()
|
|
{
|
|
const array<136,140,byte> tran1
|
|
= {{ 121, 121, 138, 139, 120 }};
|
|
const array<153,161,byte> tran2
|
|
= {{ 150, 150, 152, 152, 100,
|
|
110, 159, 100, 100 }};
|
|
integer i, m, a, b, cx, handle,
|
|
npal;
|
|
long_integer lgt, lhandle;
|
|
str11 nom;
|
|
integer palh,k,j;
|
|
array<0,15,integer> alllum;
|
|
|
|
|
|
a= caff;
|
|
if (set::of(range(153,161), eos).has(a)) a= tran2[a];
|
|
else if (set::of(range(136,140), eos).has(a)) a= tran1[a];
|
|
b= a;
|
|
if (maff== a) return;
|
|
if (a== 16)
|
|
{
|
|
s.pourc[9]= '*';
|
|
s.teauto[42]= '*';
|
|
}
|
|
if (a== 20)
|
|
{
|
|
s.teauto[39]= '*';
|
|
if (s.teauto[36]== '*')
|
|
{
|
|
s.pourc[3]= '*';
|
|
s.teauto[38]= '*';
|
|
}
|
|
}
|
|
if (a== 24) s.teauto[37]= '*';
|
|
if (a== 30) s.teauto[9]= '*';
|
|
if (a== 31)
|
|
{
|
|
s.pourc[4]= '*';
|
|
s.teauto[35]= '*';
|
|
}
|
|
if (a== 118) s.teauto[41]= '*';
|
|
if (a== 143) s.pourc[1]= '*';
|
|
if (a== 150) s.teauto[34]= '*';
|
|
if (a== 151) s.pourc[2]= '*';
|
|
okdes= true;
|
|
hide_mouse();
|
|
lgt= 0;
|
|
if ((a!=50) && (a!=51))
|
|
{
|
|
m= a+ 2000;
|
|
if ((m> 2001) && (m< 2010)) m= 2001;
|
|
if (m== 2011) m= 2010;
|
|
if (a== 32) m= 2034;
|
|
if ((a== 17) && (maff== 14)) m= 2018;
|
|
if (a> 99)
|
|
if ((is== 1) || (is== 0)) m= 2031; else m= 2032;
|
|
if (((a> 69) && (a< 80)) || (a== 30) || (a== 31) || (a== 144)
|
|
|| (a== 147) || (a== 149)) m= 2030;
|
|
if (((a< 27) && (((maff> 69) && (! s.ipre)) || (maff> 99)))
|
|
|| ((maff> 29) && (maff< 33))) m= 2033;
|
|
messint(m);
|
|
maff= a;
|
|
if (a== 159) a= 86; else
|
|
if (a> 140) a= a- 67; else
|
|
if (a> 137) a= a- 66; else
|
|
if (a> 99) a= a- 64; else
|
|
if (a> 69) a= a- 42; else
|
|
if (a> 29) a= a- 5; else
|
|
if (a== 26) a= 24; else
|
|
if (a> 18) a= a- 1;
|
|
npal= a;
|
|
for( cx= 0; cx <= (a- 1); cx ++) lgt= lgt+l[cx];
|
|
handle=l[a];
|
|
nom= "DXX.mor";
|
|
}
|
|
else
|
|
{
|
|
nom= "DZZ.mor";
|
|
handle= l[87];
|
|
if (a== 51)
|
|
{
|
|
lgt= handle;
|
|
handle= l[88];
|
|
}
|
|
maff= a;
|
|
npal= a+37;
|
|
}
|
|
chardes(nom,lgt,handle);
|
|
if (gd==her)
|
|
{
|
|
for( i=0; i <= 15; i ++)
|
|
{
|
|
palh=memw[0x7000+(succ(integer,i) << 1)];
|
|
alllum[i]=(palh & 15) + (((cardinal)palh >> 12) & 15) + (((cardinal)palh >> 8) & 15);
|
|
}
|
|
for( i=0; i <= 15; i ++)
|
|
{
|
|
k=0;
|
|
for( j=0; j <= 15; j ++) if (alllum[j]>alllum[k]) k=j;
|
|
mem[0x7000+2+(k << 1)]= rang[i];
|
|
alllum[k]=-1;
|
|
}
|
|
}
|
|
numpal=npal;
|
|
writepal(npal);
|
|
|
|
if ((b< 15) || (b== 16) || (b== 17) || (b== 24) || (b== 26) || (b== 50))
|
|
{
|
|
lgt= 0;
|
|
if ((b< 15) || (b== 16) || (b== 17) || (b== 24) || (b== 26))
|
|
{
|
|
if (b== 26) b= 18; else
|
|
if (b== 24) b= 17; else
|
|
if (b> 15) b= b- 1;
|
|
for( cx= 0; cx <= (b- 1); cx ++) lgt= lgt+ l[cx+89];
|
|
handle=l[b+89];
|
|
nom= "AXX.mor";
|
|
}
|
|
else
|
|
if (b== 50)
|
|
{
|
|
nom= "AZZ.mor";
|
|
handle= 1260;
|
|
}
|
|
charani(nom,lgt,handle);
|
|
}
|
|
show_mouse();
|
|
if ((a< 27) && ((maff< 27) || (s.mlieu== 15)) && (msg[4]!= entrer))
|
|
{
|
|
if ((a== 13) || (a== 14)) person();
|
|
else if (! blo) t11(s.mlieu, cx);
|
|
mpers= 0;
|
|
}
|
|
}
|
|
|
|
/* begin
|
|
for i:=0 to 15 do
|
|
begin
|
|
PalH:=memw[$7000:succ(i) shl 1];
|
|
Alllum[i]:=PalH and 15 + PalH shr 4 and 15 + PalH shr 8 and 15;
|
|
end;
|
|
for i:=0 to 15 do
|
|
begin
|
|
k:=0;
|
|
for j:=0 to 15 do if Alllum[j]>Alllum[k] then k:=j;
|
|
mem[$7000:2+k shl 1]:= Rang[i];
|
|
Alllum[k]:=-1;
|
|
end;
|
|
end;*/
|