home *** CD-ROM | disk | FTP | other *** search
/ Phoenix Heaven Sunny 2 / APPARE2.BIN / oh_towns / install / type.cci < prev   
Text File  |  1995-06-20  |  9KB  |  478 lines

  1. # 1 "type.c"
  2.  
  3. # 1 "type.c"
  4. # 6 "install.h"
  5. char *get_inst_main_mnu();
  6.  
  7. char *get_inst_imag_mnu();
  8. char *get_inst_tool_mnu();
  9. char *get_inst_snd_mnu();
  10. char *get_inst_game_mnu();
  11. char *get_inst_data_mnu();
  12.  
  13.  
  14. int disp_desktop();
  15.  
  16. int syl_clear();
  17. int syl_putf(char *form);
  18. char *add_path_fn(char *path, char *fn);
  19. int tif_load(char *fn);
  20. int tiflist_disp( char **list );
  21. int mveplay(char *fn, int loop);
  22. int exprun(char *fn, char *para);
  23. int inst_help( int evNo, char *evDat, char *fn);
  24. int install_end( char *soft_name, int err );
  25.  
  26. int install_exec( char *probuf );
  27.  
  28. int item_setApl( int drv, int icon, char *ttl, char *path, char *para, int att );
  29. # 20 "type.c"
  30. int DrvInst = -1;
  31. int PltNoWhite = 5;
  32. int ColBoxNormal = 0;
  33. int ColBoxInfo = 0;
  34. int ColBoxCaution = 0;
  35. int ColBoxError = 0;
  36. int ColMesh = 0;
  37.  
  38. int init();
  39. int term();
  40. int install_main();
  41. int set_debug_menu(char *mnu);
  42.  
  43.  
  44.  
  45. int main(int argc, char **argv)
  46. {
  47. init();
  48. install_main();
  49. term();
  50.  
  51. return (0);
  52. }
  53.  
  54. int init()
  55. {
  56. char msg[80], tmp[128];
  57. char *mnu;
  58. char *msgMenu[(0)];
  59. char *img;
  60. int winBasCol;
  61.  
  62. APL_init((0x030A),1,1);
  63. LHA_sysInit((0));
  64.  
  65.  
  66. disp_desktop();
  67. SCN_wrtPage(1);
  68. tmp[0] = 0;
  69. tmp[1] = 255;
  70. tmp[2] = 255;
  71. tmp[3] = 255;
  72. SCN_palette(0,PltNoWhite,tmp);
  73.  
  74.  
  75. SCN_wrtPage(1);
  76. winBasCol = 0;
  77.  
  78. winBasCol = (_ScnCol_though);
  79. APL_openBaseWin(winBasCol);
  80.  
  81.  
  82. SCN_wrtPage(1);
  83. sprintf(msg,"%c%c", Gaiji_ohFMTOWNS>>8, Gaiji_ohFMTOWNS&0xFF);
  84. APL_openTopBarMenu(Fnt16x16,msg,(_ScnColTbl[12]), (0),Fnt16x12,msgMenu,(_ScnCol_black));
  85.  
  86.  
  87. APL_setExitEvt("EXIT",(9999),"exit_chk");
  88.  
  89.  
  90. AplDtaInit();
  91.  
  92.  
  93. ColBoxNormal = SCN_tile_newMixCol(ColBoxNormal ,(0x00),(_ScnCol_dark) ,(_ScnColTbl[ 7]));
  94. ColBoxInfo = SCN_tile_newMixCol(ColBoxInfo ,(0x00),(_ScnColTbl[12]) ,(_ScnColTbl[ 7]));
  95. ColBoxError = SCN_tile_newMixCol(ColBoxError ,(0x00),(_ScnColTbl[10]) ,(_ScnColTbl[ 7]));
  96. ColBoxCaution = SCN_tile_newMixCol(ColBoxCaution,(0x00),(_ScnColTbl[14]),(_ScnColTbl[ 7]));
  97. ColMesh = SCN_tile_newMixCol(ColMesh ,(0x00),(_ScnCol_though),(_ScnColTbl[ 7]));
  98.  
  99. return ((0));
  100. }
  101.  
  102. int term()
  103. {
  104. char tmp[256];
  105.  
  106. FS_chdrv(toupper(DirStart[0]) - 'A');
  107. sprintf(tmp,"%s.",DirStart);
  108. FS_chdir(tmp);
  109.  
  110. APL_term();
  111. }
  112.  
  113. int disp_desktop()
  114. {
  115. char tmp[256];
  116.  
  117. sprintf(tmp,"%sWALL/%s", DirStart, "_oht508.tif" );
  118.  
  119. return tif_load(tmp);
  120. }
  121.  
  122. int install_main()
  123. {
  124. char tmp[256];
  125. int ret,x,y;
  126. char *fn;
  127.  
  128. fn = "/OH_TOWNS/readme.doc";
  129. SCN_wrtPage(1);
  130. syl_clear();
  131.  
  132. _apl_wait(100 * 2);
  133. while ( PD_getp(&x,&y) )
  134. ;
  135.  
  136. FS_chdrv(toupper(DirStart[0]) - 'A');
  137. sprintf(tmp,"%s.",DirStart);
  138. FS_chdir(tmp);
  139.  
  140. APL_textView(Rom16x16,608,391-32,17,fn,"FILE : %s", fn);
  141.  
  142. _apl_wait(100 * 2);
  143. while ( PD_getp(&x,&y) )
  144. ;
  145.  
  146. return (0);
  147. }
  148. # 5 "instlib.c"
  149. int _puts_bold(int x, int y, int col, char *s);
  150. # 11 "instlib.c"
  151. int syl_clear()
  152. {
  153. char *msg, tmp[80];
  154.  
  155. SCN_wrtPage(1);
  156. PD_curDec();
  157.  
  158.  
  159. sprintf(tmp,"PRESENTED by %c%c", Gaiji_ohFMTOWNS>>8, Gaiji_ohFMTOWNS&0xFF );
  160. msg = "天晴CD Vol.2 鳳凰の巻";
  161.  
  162. SCN_boxf(0,464,639,479,0,ColMesh);
  163. _puts_bold( 232 ,464 , PltNoWhite,msg);
  164. SCN_puts(Fnt16x16,tmp,232+23*8+1,464+1,0,(_ScnCol_black) ,0);
  165. SCN_puts(Fnt16x16,tmp,232+23*8 ,464 ,0,PltNoWhite,0);
  166. # 35 "instlib.c"
  167. PD_curInc();
  168. }
  169. # 42 "instlib.c"
  170. int syl_putf(char *form)
  171. {
  172. char tmp[256];
  173. char *ap;
  174. int n, x;
  175.  
  176. (ap = (char *)(&form) + sizeof(int));
  177. vsprintf(tmp+6,form,ap);
  178. ;
  179.  
  180. SCN_wrtPage(1);
  181. PD_curDec();
  182.  
  183. SCN_boxf(0,464,639,479,0,ColMesh);
  184.  
  185. EGB_textDirection(EgbPtr,0);
  186. EGB_textDisplayDirection(EgbPtr,0);
  187. EGB_textSpace(EgbPtr,0);
  188. EGB_textZoom(EgbPtr,0, 8, 16 );
  189. EGB_textZoom(EgbPtr,1, 16, 16 );
  190. EGB_fontStyle(EgbPtr,1+4);
  191. EGB_color(EgbPtr,0,(_ScnColTbl[12]));
  192. EGB_color(EgbPtr,1,(_ScnCol_black));
  193. EGB_paintMode(EgbPtr,0x022);
  194. EGB_writeMode(EgbPtr,0);
  195.  
  196. n = strlen(tmp+6);
  197. x = (640 - n * 8) / 2;
  198. _setWord(tmp+0, x );
  199. _setWord(tmp+2, 464+15);
  200. _setWord(tmp+4, n );
  201. EGB_sjisString( EgbPtr, tmp);
  202.  
  203. PD_curInc();
  204. }
  205.  
  206. int _puts_bold(int x, int y, int col, char *s)
  207. {
  208. char para[256];
  209.  
  210. EGB_textDirection(EgbPtr,0);
  211. EGB_textDisplayDirection(EgbPtr,0);
  212. EGB_textSpace(EgbPtr,0);
  213. EGB_textZoom(EgbPtr,0, 8, 16 );
  214. EGB_textZoom(EgbPtr,1, 16, 16 );
  215. EGB_fontStyle(EgbPtr,1+4);
  216. EGB_color(EgbPtr,0,col );
  217. EGB_color(EgbPtr,1,(_ScnCol_black));
  218. EGB_paintMode(EgbPtr,0x022);
  219. EGB_writeMode(EgbPtr,0);
  220.  
  221. _setWord(para+0, x );
  222. _setWord(para+2, y+15 );
  223. _setWord(para+4, strlen(s));
  224. strcpy(para+6,s);
  225. EGB_sjisString( EgbPtr, para);
  226. }
  227.  
  228. char *add_path_fn(char *path, char *fn)
  229. {
  230. int len;
  231.  
  232. len = strlen(path);
  233.  
  234. if ( len == 0 || !(path[len-1] == '\\' || path[len-1] == '/') )
  235. path[len++] = FsPathDelim;
  236. strcpy( path + len, fn );
  237. return (path);
  238. }
  239. # 116 "instlib.c"
  240. int tif_load(char *fn)
  241. {
  242. char *img;
  243. short fr[4];
  244. int x, y;
  245.  
  246. SCN_wrtPage(0);
  247. if ( (img = IMG_open()) != (0) )
  248. {
  249. IMG_setPage(img,0);
  250. IMG_setAtt(img,(0x00010000));
  251. IMG_setColor( img, (_ScnCol_black), (_ScnCol_white));
  252. if ( IMG_load(img,fn) == (0) )
  253. {
  254. IMG_getFr(img,fr);
  255. x = (320 - (fr[2] - fr[0] + 1)) / 2;
  256. y = 10 + (230 - (fr[3] - fr[1] + 1)) / 2;
  257. IMG_setPos(img,x,y);
  258. EGB_color(EgbPtr,1,(_ScnCol_black));
  259.  
  260. EGB_clearScreen(EgbPtr);
  261. EGB_paintMode(EgbPtr,0x22);
  262. IMG_dsp(img);
  263. }
  264. IMG_close(img);
  265. }
  266. SCN_wrtPage(1);
  267. return ((0));
  268. }
  269. # 150 "instlib.c"
  270. int tiflist_disp( char **list )
  271. {
  272. int i, x, y, ret, pixel, md, x0, y0;
  273. char *img;
  274. short fr[4];
  275. char *fn;
  276.  
  277. SCN_wrtPage(1);
  278. APL_save_desktop();
  279. SCN_boxf(0,0,639,479,0,0);
  280. SCN_wrtPage(0);
  281.  
  282. for ( i = 0; list[i] != (0); ++i )
  283. {
  284. fn = list[i];
  285.  
  286. if ( (img = IMG_open()) != (0) )
  287. {
  288. IMG_setAtt(img,(0x00010000));
  289. if ( IMG_load(img,fn) == (0) )
  290. {
  291. IMG_getFr(img,fr);
  292. pixel = IMG_getPixel(img);
  293. switch ( pixel )
  294. {
  295. case 1:
  296. case 4:
  297. x0 = (640 - (fr[2] - fr[0] + 1)) / 2;
  298. y0 = (480 - (fr[3] - fr[1] + 1)) / 2;
  299. md = 3;
  300. break;
  301. case 8:
  302. x0 = (640 - (fr[2] - fr[0] + 1)) / 2;
  303. y0 = (480 - (fr[3] - fr[1] + 1)) / 2;
  304. md = 12;
  305. break;
  306. case 16:
  307. if ( fr[2] - fr[0] + 1 <= 320 )
  308. {
  309. x0 = (320 - (fr[2] - fr[0] + 1)) / 2;
  310. y0 = (240 - (fr[3] - fr[1] + 1)) / 2;
  311. md = 10;
  312. } else
  313. {
  314. x0 = (512 - (fr[2] - fr[0] + 1)) / 2;
  315. y0 = (480 - (fr[3] - fr[1] + 1)) / 2;
  316. md = 17;
  317. }
  318. break;
  319. default:
  320. goto _TIF_ERR;
  321. }
  322. IMG_setPos(img,x0,y0);
  323. PD_curOff();
  324.  
  325. EGB_displayPage(EgbPtr,0,0);
  326. EGB_writePage(EgbPtr,0);
  327. EGB_clearScreen(EgbPtr);
  328. EGB_resolution(EgbPtr,0,md);
  329. if ( md == 3 || md == 10 )
  330. {
  331. EGB_resolution(EgbPtr,1,3);
  332. EGB_writePage(EgbPtr,1);
  333. EGB_clearScreen(EgbPtr);
  334. }
  335.  
  336. EGB_writePage(EgbPtr,0);
  337. if ( md == 10 )
  338. {
  339. EGB_displayStart(EgbPtr,2,2,2);
  340. EGB_displayStart(EgbPtr,3,320,240);
  341. }
  342. EGB_color(EgbPtr,1,0);
  343. EGB_clearScreen(EgbPtr);
  344. IMG_dsp(img);
  345. if ( md == 3 || md == 10 )
  346. EGB_displayPage(EgbPtr,1,3);
  347. else
  348. EGB_displayPage(EgbPtr,0,1);
  349.  
  350. _apl_wait(100 * 8);
  351. while ( PD_getp(&x,&y) )
  352. ;
  353. }
  354. IMG_close(img);
  355. }
  356. }
  357.  
  358. EGB_writePage(EgbPtr,0);
  359. EGB_clearScreen(EgbPtr);
  360.  
  361. SCN_sysReinit();
  362. disp_desktop();
  363. SCN_wrtPage(1);
  364. APL_load_desktop();
  365. syl_clear();
  366.  
  367. return ((0));
  368. }
  369.  
  370. int mveplay(char *fnmve, int loop)
  371. {
  372. char para[256];
  373.  
  374. sprintf(para,"-loop %d %s", loop, fnmve );
  375.  
  376. exprun("/OH_TOWNS/DEMOTOOL/mveplay.exp", para );
  377. return (0);
  378. }
  379.  
  380. int exprun(char *fn, char *para)
  381. {
  382. unsigned int siz;
  383. int md;
  384. char tmp[256];
  385. char *dlgTxm;
  386. char *dir;
  387.  
  388. siz = APL_getFreeMem();
  389. if ( siz < 2 * 1024 * 1024 )
  390. {
  391. dlgTxm = DlgTxm_open(ColBoxError);
  392. DlgTxm_setTitle(dlgTxm,Fnt16x16, "OUT OF MEMORY");
  393.  
  394. DlgTxm_putf( dlgTxm, Rom16x16, (1),"");
  395. DlgTxm_putf( dlgTxm, Rom16x16, (1),
  396. "メモリ不足のため実行できません。" );
  397. DlgTxm_putf( dlgTxm, Rom16x16, (1),"");
  398.  
  399. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black),
  400. (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\r', 0x7300, 0, "", 0, "OK : [実行]");
  401. DlgTxm_setSize(dlgTxm,480,48);
  402. DlgTxm_setPosition(dlgTxm,(1));
  403.  
  404. DlgTxm_start(dlgTxm);
  405. DlgTxm_close(dlgTxm);
  406. return (-1);
  407. }
  408. dir = FS_pushDir();
  409. FS_chdrv( toupper(DirStart[0]) - 'A' );
  410. FS_getDnam(tmp,fn);
  411. add_path_fn(tmp,".");
  412. FS_chdir(tmp);
  413.  
  414.  
  415. SCN_wrtPage(1);
  416. APL_save_desktop();
  417.  
  418.  
  419. md = (4) | (8);
  420. AplDtaInit();
  421. if ( para != (0) && *para != '\0' )
  422. {
  423. AplDtaSetStr("$MainArg","%s %s", fn, para);
  424. if ( strlen(fn) + strlen(para) + 1 >= 128 )
  425. md &= (~(8));
  426. }
  427. FS_popDir(dir);
  428. PCL_exec(fn,md);
  429.  
  430.  
  431. SCN_sysReinit();
  432. disp_desktop();
  433. SCN_wrtPage(1);
  434. APL_load_desktop();
  435. syl_clear();
  436.  
  437. return ((0));
  438. }
  439. # 324 "instlib.c"
  440. int inst_help( int evNo, char *evDat, char *fn)
  441. {
  442. char tmp[256];
  443.  
  444. FS_chdrv(toupper(DirStart[0]) - 'A');
  445. sprintf(tmp,"%s.",DirStart);
  446. FS_chdir(tmp);
  447.  
  448. APL_textView(Rom16x16,608,391,17,fn,"HELP FILE : %s", fn);
  449.  
  450. return (evNo);
  451. }
  452. # 341 "instlib.c"
  453. int install_end( char *soft_name, int err )
  454. {
  455. char *dlgTxm;
  456. int colbox;
  457. char *msg;
  458.  
  459. msg = err == 0 ? "インストールが終わりました。"
  460. : "インストールに失敗しました。";
  461.  
  462. colbox = 0;
  463. colbox = SCN_tile_newMixCol(colbox,0x00,(_ScnColTbl[12]),(_ScnColTbl[ 7]));
  464. if ( (dlgTxm = DlgTxm_open(colbox)) != (0) )
  465. {
  466. DlgTxm_setTitle(dlgTxm,Fnt16x16,soft_name);
  467. DlgTxm_putf( dlgTxm, Fnt16x16, (1), "");
  468. DlgTxm_putf( dlgTxm, Fnt16x16, (1), msg );
  469. DlgTxm_putf( dlgTxm, Fnt16x16, (1), "");
  470. DlgTxm_setBtn( dlgTxm, Fnt16x16, 64, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\r' , 0x7300 , 1, "", 0, "OK : [実行]");
  471. DlgTxm_setSize(dlgTxm,480,64);
  472. DlgTxm_setPosition(dlgTxm,(1));
  473. DlgTxm_start(dlgTxm);
  474. DlgTxm_close(dlgTxm);
  475. }
  476. SCN_tile_free(colbox);
  477. }
  478.