diff options
Diffstat (limited to 'engines/mortevielle/taffich.h')
-rw-r--r-- | engines/mortevielle/taffich.h | 216 |
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;*/ |