aboutsummaryrefslogtreecommitdiff
path: root/engines/mortevielle/taffich.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mortevielle/taffich.h')
-rw-r--r--engines/mortevielle/taffich.h216
1 files changed, 216 insertions, 0 deletions
diff --git a/engines/mortevielle/taffich.h b/engines/mortevielle/taffich.h
new file mode 100644
index 0000000000..8f8cb1e460
--- /dev/null
+++ b/engines/mortevielle/taffich.h
@@ -0,0 +1,216 @@
+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;*/