OLDSETUP.BAK 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655
  1. //===================================================
  2. //
  3. // Enter modem savegame info
  4. //
  5. //===================================================
  6. int RestoreModem(void)
  7. {
  8. char * wstr = "MODSAVE";
  9. short *window;
  10. short field;
  11. int rval = 0;
  12. char *args[MAXARGS];
  13. int argcount;
  14. char string[MAXARGS*2][16];
  15. union REGS r;
  16. int i;
  17. int numplayers[6];
  18. int saveslot;
  19. int handle;
  20. char name[32];
  21. char p1,p2,p3,p4;
  22. minfo = modeminfo; // save copy of netinfo
  23. field = MS_SAVEGAME0; // FIRST FIELD TO LIGHT BAR
  24. if ( ( window = IWD_OpenWindow( NULL, wstr ) ) == NULL )
  25. {
  26. IWD_CloseWRF ( NULL );
  27. printf( "\nError opening %s window.\n", wstr );
  28. exit(1);
  29. }
  30. saveslot = -1;
  31. memset(savenames,0,6*24);
  32. //
  33. // Read in savegame strings
  34. //
  35. for (i = 0;i < 6;i++)
  36. {
  37. sprintf(name,SAVENAME,i);
  38. handle = open (name, O_BINARY | O_RDONLY);
  39. if (handle == -1)
  40. continue;
  41. read(handle,savenames[i],24);
  42. lseek(handle,27+16,SEEK_SET);
  43. read(handle,&p1,1);
  44. read(handle,&p2,1);
  45. read(handle,&p3,1);
  46. read(handle,&p4,1);
  47. numplayers[i] = p1+p2+p3+p4;
  48. close(handle);
  49. IWD_PutFieldData(window,MS_SAVEGAME0+i,savenames[i]);
  50. }
  51. //
  52. // Set defaults
  53. //
  54. IWD_SetFieldMark(window,MS_CONTYPE0M,0);
  55. IWD_SetFieldMark(window,MS_CONTYPE1M,1);
  56. IWD_SetFieldMark(window,MS_CONTYPE2M,0);
  57. minfo.comtype = 1;
  58. IWD_SetFieldMark(window,MS_COM1M,1);
  59. IWD_SetFieldMark(window,MS_COM2M,0);
  60. IWD_SetFieldMark(window,MS_COM3M,0);
  61. IWD_SetFieldMark(window,MS_COM4M,0);
  62. minfo.comport = 1;
  63. IWD_SetFieldMark(window,MS_DEATHNOM2,1);
  64. IWD_SetFieldMark(window,MS_DEATHYESM2,0);
  65. minfo.deathMatch = 0;
  66. strcpy(minfo.phonenum,"");
  67. IWD_PutFieldDataType(window,MS_PHONENUM, FTYPE_STRING,&minfo.phonenum);
  68. IWD_ShowWindow ( window );
  69. for (;;)
  70. {
  71. switch ( IWD_Dialog ( window, &field, DialogControl, hot_keys ) )
  72. {
  73. case KEY_ESC:
  74. rval = -1;
  75. goto func_exit;
  76. exitandsave:
  77. case KEY_F10:
  78. if (saveslot < 0)
  79. {
  80. short *window;
  81. if ( ( window = IWD_OpenWindow( NULL, "NETSERR" ) ) == NULL )
  82. exit(1);
  83. IWD_ShowWindow ( window );
  84. while(kbhit());
  85. getch();
  86. IWD_CloseWindow( window );
  87. break;
  88. }
  89. IWD_GetFieldDataType(window,MS_PHONENUM,FTYPE_STRING,&minfo.phonenum);
  90. modeminfo = minfo;
  91. M_SaveDefaults();
  92. IWD_CloseWRF( NULL );
  93. IWD_Shutdown();
  94. argcount = 1;
  95. args[0] = "sersetup.exe ";
  96. if (cdrom)
  97. args[argcount++] = "-cdrom";
  98. args[argcount++] = "-nodes";
  99. sprintf(string[argcount],"%d",numplayers[saveslot]);
  100. args[argcount] = string[argcount];
  101. argcount++;
  102. if (modeminfo.deathMatch)
  103. args[argcount++] = "-deathmatch";
  104. sprintf(string[argcount],"-com%d",modeminfo.comport);
  105. args[argcount] = string[argcount];
  106. argcount++;
  107. switch(modeminfo.comtype)
  108. {
  109. case 0: // no parameter if already connected!
  110. break;
  111. case 1:
  112. args[argcount++] = "-answer";
  113. break;
  114. case 2:
  115. args[argcount++] = "-dial";
  116. sprintf(string[argcount],"%s",minfo.phonenum);
  117. args[argcount] = string[argcount];
  118. argcount++;
  119. break;
  120. }
  121. args[argcount++] = "-loadgame";
  122. sprintf(string[argcount],"%d",saveslot);
  123. args[argcount] = string[argcount];
  124. argcount++;
  125. for (i = 1;i < myargc; i++)
  126. args[argcount++] = myargv[i];
  127. args[argcount] = NULL;
  128. r.x.ax = 3;
  129. int86(0x10,&r,&r);
  130. execv("sersetup.exe",args);
  131. //
  132. // ERROR EXECing!
  133. //
  134. printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!");
  135. exit(0);
  136. case KEY_CR:
  137. case 32:
  138. switch ( field )
  139. {
  140. case MS_COM1:
  141. IWD_SetFieldMark(window,MS_COM1M,1);
  142. IWD_SetFieldMark(window,MS_COM2M,0);
  143. IWD_SetFieldMark(window,MS_COM3M,0);
  144. IWD_SetFieldMark(window,MS_COM4M,0);
  145. minfo.comport = 1;
  146. break;
  147. case MS_COM2:
  148. IWD_SetFieldMark(window,MS_COM1M,0);
  149. IWD_SetFieldMark(window,MS_COM2M,1);
  150. IWD_SetFieldMark(window,MS_COM3M,0);
  151. IWD_SetFieldMark(window,MS_COM4M,0);
  152. minfo.comport = 2;
  153. break;
  154. case MS_COM3:
  155. IWD_SetFieldMark(window,MS_COM1M,0);
  156. IWD_SetFieldMark(window,MS_COM2M,0);
  157. IWD_SetFieldMark(window,MS_COM3M,1);
  158. IWD_SetFieldMark(window,MS_COM4M,0);
  159. minfo.comport = 3;
  160. break;
  161. case MS_COM4:
  162. IWD_SetFieldMark(window,MS_COM1M,0);
  163. IWD_SetFieldMark(window,MS_COM2M,0);
  164. IWD_SetFieldMark(window,MS_COM3M,0);
  165. IWD_SetFieldMark(window,MS_COM4M,1);
  166. minfo.comport = 4;
  167. break;
  168. case MS_CONTYPE0:
  169. IWD_SetFieldMark(window,MS_CONTYPE0M,1);
  170. IWD_SetFieldMark(window,MS_CONTYPE1M,0);
  171. IWD_SetFieldMark(window,MS_CONTYPE2M,0);
  172. minfo.comtype = 0;
  173. break;
  174. case MS_CONTYPE1:
  175. IWD_SetFieldMark(window,MS_CONTYPE0M,0);
  176. IWD_SetFieldMark(window,MS_CONTYPE1M,1);
  177. IWD_SetFieldMark(window,MS_CONTYPE2M,0);
  178. minfo.comtype = 1;
  179. break;
  180. case MS_CONTYPE2:
  181. IWD_SetFieldMark(window,MS_CONTYPE0M,0);
  182. IWD_SetFieldMark(window,MS_CONTYPE1M,0);
  183. IWD_SetFieldMark(window,MS_CONTYPE2M,1);
  184. minfo.comtype = 2;
  185. field = MS_PHONENUM;
  186. break;
  187. case MS_SAVEGAME0:
  188. if (!savenames[0][0])
  189. {
  190. IWD_Sound(1000,6);
  191. break;
  192. }
  193. saveslot = 0;
  194. IWD_SetFieldMark(window,MS_SAVEGAME0M,1);
  195. IWD_SetFieldMark(window,MS_SAVEGAME1M,0);
  196. IWD_SetFieldMark(window,MS_SAVEGAME2M,0);
  197. IWD_SetFieldMark(window,MS_SAVEGAME3M,0);
  198. IWD_SetFieldMark(window,MS_SAVEGAME4M,0);
  199. IWD_SetFieldMark(window,MS_SAVEGAME5M,0);
  200. break;
  201. case MS_SAVEGAME1:
  202. if (!savenames[1][0])
  203. {
  204. IWD_Sound(1000,6);
  205. break;
  206. }
  207. saveslot = 1;
  208. IWD_SetFieldMark(window,MS_SAVEGAME0M,0);
  209. IWD_SetFieldMark(window,MS_SAVEGAME1M,1);
  210. IWD_SetFieldMark(window,MS_SAVEGAME2M,0);
  211. IWD_SetFieldMark(window,MS_SAVEGAME3M,0);
  212. IWD_SetFieldMark(window,MS_SAVEGAME4M,0);
  213. IWD_SetFieldMark(window,MS_SAVEGAME5M,0);
  214. break;
  215. case MS_SAVEGAME2:
  216. if (!savenames[2][0])
  217. {
  218. IWD_Sound(1000,6);
  219. break;
  220. }
  221. saveslot = 2;
  222. IWD_SetFieldMark(window,MS_SAVEGAME0M,0);
  223. IWD_SetFieldMark(window,MS_SAVEGAME1M,0);
  224. IWD_SetFieldMark(window,MS_SAVEGAME2M,1);
  225. IWD_SetFieldMark(window,MS_SAVEGAME3M,0);
  226. IWD_SetFieldMark(window,MS_SAVEGAME4M,0);
  227. IWD_SetFieldMark(window,MS_SAVEGAME5M,0);
  228. break;
  229. case MS_SAVEGAME3:
  230. if (!savenames[3][0])
  231. {
  232. IWD_Sound(1000,6);
  233. break;
  234. }
  235. saveslot = 3;
  236. IWD_SetFieldMark(window,MS_SAVEGAME0M,0);
  237. IWD_SetFieldMark(window,MS_SAVEGAME1M,0);
  238. IWD_SetFieldMark(window,MS_SAVEGAME2M,0);
  239. IWD_SetFieldMark(window,MS_SAVEGAME3M,1);
  240. IWD_SetFieldMark(window,MS_SAVEGAME4M,0);
  241. IWD_SetFieldMark(window,MS_SAVEGAME5M,0);
  242. break;
  243. case MS_SAVEGAME4:
  244. if (!savenames[4][0])
  245. {
  246. IWD_Sound(1000,6);
  247. break;
  248. }
  249. saveslot = 4;
  250. IWD_SetFieldMark(window,MS_SAVEGAME0M,0);
  251. IWD_SetFieldMark(window,MS_SAVEGAME1M,0);
  252. IWD_SetFieldMark(window,MS_SAVEGAME2M,0);
  253. IWD_SetFieldMark(window,MS_SAVEGAME3M,0);
  254. IWD_SetFieldMark(window,MS_SAVEGAME4M,1);
  255. IWD_SetFieldMark(window,MS_SAVEGAME5M,0);
  256. break;
  257. case MS_SAVEGAME5:
  258. if (!savenames[5][0])
  259. {
  260. IWD_Sound(1000,6);
  261. break;
  262. }
  263. saveslot = 5;
  264. IWD_SetFieldMark(window,MS_SAVEGAME0M,0);
  265. IWD_SetFieldMark(window,MS_SAVEGAME1M,0);
  266. IWD_SetFieldMark(window,MS_SAVEGAME2M,0);
  267. IWD_SetFieldMark(window,MS_SAVEGAME3M,0);
  268. IWD_SetFieldMark(window,MS_SAVEGAME4M,0);
  269. IWD_SetFieldMark(window,MS_SAVEGAME5M,1);
  270. break;
  271. //
  272. // Deathmatch
  273. //
  274. case MS_DEATHNO2:
  275. minfo.deathMatch = 0;
  276. IWD_SetFieldMark(window,MS_DEATHNOM2,1);
  277. IWD_SetFieldMark(window,MS_DEATHYESM2,0);
  278. break;
  279. case MS_DEATHYES2:
  280. minfo.deathMatch = 1;
  281. IWD_SetFieldMark(window,MS_DEATHNOM2,0);
  282. IWD_SetFieldMark(window,MS_DEATHYESM2,1);
  283. break;
  284. default:
  285. break;
  286. }
  287. break;
  288. }
  289. }
  290. func_exit:
  291. IWD_CloseWindow(window);
  292. return ( rval );
  293. }
  294. //===================================================
  295. //
  296. // Enter serial-link savegame info
  297. //
  298. //===================================================
  299. int RestoreSerial(void)
  300. {
  301. char * wstr = "SERSAVE";
  302. short *window;
  303. short field;
  304. int rval = 0;
  305. char *args[MAXARGS];
  306. int argcount;
  307. char string[MAXARGS*2][16];
  308. union REGS r;
  309. int i;
  310. int numplayers[6];
  311. int saveslot;
  312. int handle;
  313. char name[32];
  314. char p1,p2,p3,p4;
  315. sinfo = serialinfo; // save copy of netinfo
  316. field = SS_SAVEGAME0; // FIRST FIELD TO LIGHT BAR
  317. if ( ( window = IWD_OpenWindow( NULL, wstr ) ) == NULL )
  318. {
  319. IWD_CloseWRF ( NULL );
  320. printf( "\nError opening %s window.\n", wstr );
  321. exit(1);
  322. }
  323. saveslot = -1;
  324. memset(savenames,0,6*24);
  325. //
  326. // Read in savegame strings
  327. //
  328. for (i = 0;i < 6;i++)
  329. {
  330. sprintf(name,"DOOMSAV%d.DSG",i);
  331. handle = open (name, O_BINARY | O_RDONLY);
  332. if (handle == -1)
  333. continue;
  334. read(handle,savenames[i],24);
  335. lseek(handle,27+16,SEEK_SET);
  336. read(handle,&p1,1);
  337. read(handle,&p2,1);
  338. read(handle,&p3,1);
  339. read(handle,&p4,1);
  340. numplayers[i] = p1+p2+p3+p4;
  341. close(handle);
  342. IWD_PutFieldData(window,SS_SAVEGAME0+i,savenames[i]);
  343. }
  344. //
  345. // Set defaults
  346. //
  347. IWD_SetFieldMark(window,SS_COM1M,1);
  348. IWD_SetFieldMark(window,SS_COM2M,0);
  349. IWD_SetFieldMark(window,SS_COM3M,0);
  350. IWD_SetFieldMark(window,SS_COM4M,0);
  351. sinfo.comport = 1;
  352. IWD_SetFieldMark(window,SS_DEATHNOM2,1);
  353. IWD_SetFieldMark(window,SS_DEATHYESM2,0);
  354. sinfo.deathMatch = 0;
  355. IWD_ShowWindow ( window );
  356. for (;;)
  357. {
  358. switch ( IWD_Dialog ( window, &field, DialogControl, hot_keys ) )
  359. {
  360. case KEY_ESC:
  361. rval = -1;
  362. goto func_exit;
  363. exitandsave:
  364. case KEY_F10:
  365. if (saveslot < 0)
  366. {
  367. short *window;
  368. if ( ( window = IWD_OpenWindow( NULL, "NETSERR" ) ) == NULL )
  369. exit(1);
  370. IWD_ShowWindow ( window );
  371. while(kbhit());
  372. getch();
  373. IWD_CloseWindow( window );
  374. break;
  375. }
  376. serialinfo = sinfo;
  377. M_SaveDefaults();
  378. IWD_CloseWRF( NULL );
  379. IWD_Shutdown();
  380. argcount = 1;
  381. args[0] = "sersetup.exe ";
  382. if (cdrom)
  383. args[argcount++] = "-cdrom";
  384. args[argcount++] = "-nodes";
  385. sprintf(string[argcount],"%d",numplayers[saveslot]);
  386. args[argcount] = string[argcount];
  387. argcount++;
  388. if (modeminfo.deathMatch)
  389. args[argcount++] = "-deathmatch";
  390. sprintf(string[argcount],"-com%d",serialinfo.comport);
  391. args[argcount] = string[argcount];
  392. argcount++;
  393. args[argcount++] = "-loadgame";
  394. sprintf(string[argcount],"%d",saveslot);
  395. args[argcount] = string[argcount];
  396. argcount++;
  397. for (i = 1;i < myargc; i++)
  398. args[argcount++] = myargv[i];
  399. args[argcount] = NULL;
  400. r.x.ax = 3;
  401. int86(0x10,&r,&r);
  402. execv("sersetup.exe",args);
  403. //
  404. // ERROR EXECing!
  405. //
  406. printf("Problem EXECing SERSETUP for netplay. Need to be in same directory!");
  407. exit(0);
  408. case KEY_CR:
  409. case 32:
  410. switch ( field )
  411. {
  412. case SS_COM1:
  413. IWD_SetFieldMark(window,SS_COM1M,1);
  414. IWD_SetFieldMark(window,SS_COM2M,0);
  415. IWD_SetFieldMark(window,SS_COM3M,0);
  416. IWD_SetFieldMark(window,SS_COM4M,0);
  417. sinfo.comport = 1;
  418. break;
  419. case SS_COM2:
  420. IWD_SetFieldMark(window,SS_COM1M,0);
  421. IWD_SetFieldMark(window,SS_COM2M,1);
  422. IWD_SetFieldMark(window,SS_COM3M,0);
  423. IWD_SetFieldMark(window,SS_COM4M,0);
  424. sinfo.comport = 2;
  425. break;
  426. case SS_COM3:
  427. IWD_SetFieldMark(window,SS_COM1M,0);
  428. IWD_SetFieldMark(window,SS_COM2M,0);
  429. IWD_SetFieldMark(window,SS_COM3M,1);
  430. IWD_SetFieldMark(window,SS_COM4M,0);
  431. sinfo.comport = 3;
  432. break;
  433. case SS_COM4:
  434. IWD_SetFieldMark(window,SS_COM1M,0);
  435. IWD_SetFieldMark(window,SS_COM2M,0);
  436. IWD_SetFieldMark(window,SS_COM3M,0);
  437. IWD_SetFieldMark(window,SS_COM4M,1);
  438. sinfo.comport = 4;
  439. break;
  440. case SS_SAVEGAME0:
  441. if (!savenames[0][0])
  442. {
  443. IWD_Sound(1000,6);
  444. break;
  445. }
  446. saveslot = 0;
  447. IWD_SetFieldMark(window,SS_SAVEGAME0M,1);
  448. IWD_SetFieldMark(window,SS_SAVEGAME1M,0);
  449. IWD_SetFieldMark(window,SS_SAVEGAME2M,0);
  450. IWD_SetFieldMark(window,SS_SAVEGAME3M,0);
  451. IWD_SetFieldMark(window,SS_SAVEGAME4M,0);
  452. IWD_SetFieldMark(window,SS_SAVEGAME5M,0);
  453. break;
  454. case SS_SAVEGAME1:
  455. if (!savenames[1][0])
  456. {
  457. IWD_Sound(1000,6);
  458. break;
  459. }
  460. saveslot = 1;
  461. IWD_SetFieldMark(window,SS_SAVEGAME0M,0);
  462. IWD_SetFieldMark(window,SS_SAVEGAME1M,1);
  463. IWD_SetFieldMark(window,SS_SAVEGAME2M,0);
  464. IWD_SetFieldMark(window,SS_SAVEGAME3M,0);
  465. IWD_SetFieldMark(window,SS_SAVEGAME4M,0);
  466. IWD_SetFieldMark(window,SS_SAVEGAME5M,0);
  467. break;
  468. case SS_SAVEGAME2:
  469. if (!savenames[2][0])
  470. {
  471. IWD_Sound(1000,6);
  472. break;
  473. }
  474. saveslot = 2;
  475. IWD_SetFieldMark(window,SS_SAVEGAME0M,0);
  476. IWD_SetFieldMark(window,SS_SAVEGAME1M,0);
  477. IWD_SetFieldMark(window,SS_SAVEGAME2M,1);
  478. IWD_SetFieldMark(window,SS_SAVEGAME3M,0);
  479. IWD_SetFieldMark(window,SS_SAVEGAME4M,0);
  480. IWD_SetFieldMark(window,SS_SAVEGAME5M,0);
  481. break;
  482. case SS_SAVEGAME3:
  483. if (!savenames[3][0])
  484. {
  485. IWD_Sound(1000,6);
  486. break;
  487. }
  488. saveslot = 3;
  489. IWD_SetFieldMark(window,SS_SAVEGAME0M,0);
  490. IWD_SetFieldMark(window,SS_SAVEGAME1M,0);
  491. IWD_SetFieldMark(window,SS_SAVEGAME2M,0);
  492. IWD_SetFieldMark(window,SS_SAVEGAME3M,1);
  493. IWD_SetFieldMark(window,SS_SAVEGAME4M,0);
  494. IWD_SetFieldMark(window,SS_SAVEGAME5M,0);
  495. break;
  496. case SS_SAVEGAME4:
  497. if (!savenames[4][0])
  498. {
  499. IWD_Sound(1000,6);
  500. break;
  501. }
  502. saveslot = 4;
  503. IWD_SetFieldMark(window,SS_SAVEGAME0M,0);
  504. IWD_SetFieldMark(window,SS_SAVEGAME1M,0);
  505. IWD_SetFieldMark(window,SS_SAVEGAME2M,0);
  506. IWD_SetFieldMark(window,SS_SAVEGAME3M,0);
  507. IWD_SetFieldMark(window,SS_SAVEGAME4M,1);
  508. IWD_SetFieldMark(window,SS_SAVEGAME5M,0);
  509. break;
  510. case SS_SAVEGAME5:
  511. if (!savenames[5][0])
  512. {
  513. IWD_Sound(1000,6);
  514. break;
  515. }
  516. saveslot = 5;
  517. IWD_SetFieldMark(window,SS_SAVEGAME0M,0);
  518. IWD_SetFieldMark(window,SS_SAVEGAME1M,0);
  519. IWD_SetFieldMark(window,SS_SAVEGAME2M,0);
  520. IWD_SetFieldMark(window,SS_SAVEGAME3M,0);
  521. IWD_SetFieldMark(window,SS_SAVEGAME4M,0);
  522. IWD_SetFieldMark(window,SS_SAVEGAME5M,1);
  523. break;
  524. //
  525. // Deathmatch
  526. //
  527. case SS_DEATHNO2:
  528. sinfo.deathMatch = 0;
  529. IWD_SetFieldMark(window,SS_DEATHNOM2,1);
  530. IWD_SetFieldMark(window,SS_DEATHYESM2,0);
  531. break;
  532. case SS_DEATHYES2:
  533. sinfo.deathMatch = 1;
  534. IWD_SetFieldMark(window,SS_DEATHNOM2,0);
  535. IWD_SetFieldMark(window,SS_DEATHYESM2,1);
  536. break;
  537. default:
  538. break;
  539. }
  540. break;
  541. }
  542. }
  543. func_exit:
  544. IWD_CloseWindow(window);
  545. return ( rval );
  546. }
  547.