home *** CD-ROM | disk | FTP | other *** search
/ Fun CD 26 / OTACD26.ISO / archive / game / ssp-ed / SSP-ED.LZH / ssp-ed.cpp < prev    next >
C/C++ Source or Header  |  1998-02-23  |  10KB  |  384 lines

  1. // ssp item editor
  2. //
  3. // hex.add.          変更内容(グラフィック等の存在しないデータは省いてあります)
  4. // 3E-6A             物理武器
  5. // BE-CD,CF,D0,D4,D5 Wizard
  6. // 13E-157           拡張
  7. // 17E-195,197-199   戦闘技術
  8. // 19E-1AA,1AC-1B5,  呪句
  9. // 1B7-1CF,19E-1CF,
  10. // 1D1,1D2
  11. // 1D3-1E4,1E6-1EA,  聖句
  12. // 1EC-1EF,1F1-1F6,
  13. // 1F8-1FA,1FE,1FF
  14. // 21E-25C           教育アイテム
  15.  
  16. #include <stdlib.h>
  17. #include <stdio.h>
  18. #include <string.h>
  19. #include <io.h>
  20. #include <fcntl.h>
  21. #include <conio.h>
  22. #include <dos.h>
  23.  
  24. int      ssp_fh, exit_code, item_min=0;
  25. char *id="SSP SAVE DATA EDITOR - MAX ITEM (C)WESTSIDE",
  26.      *ssp_file="12345678.123";
  27.  
  28. void rewrite(unsigned long fa, char dt)
  29. {
  30.   unsigned dummy=0;
  31.  
  32.   if (item_min != 0){
  33.     dt=0;
  34.   }
  35.   if ( (exit_code=lseek(ssp_fh, fa, SEEK_SET)) != fa ){
  36.     puts("シーク失敗です");
  37.     exit(exit_code);
  38.   }
  39.   if ( (exit_code=_dos_write(ssp_fh, (char far *)&dt, 1, &dummy)) != 0 ){
  40.     puts("書き込み失敗です");
  41.     exit(exit_code);
  42.   }
  43. }
  44.  
  45. int main(int argc, char *argv[])
  46. {
  47.   int      cnt;
  48.  
  49.   puts(id);
  50.  
  51.   if (1<argc){
  52.     for (cnt=1; cnt<argc; cnt++){
  53.       argv[cnt]=strupr(argv[cnt]);
  54.       if       (stricmp(argv[cnt],"/MIN")==0){
  55.         item_min=-1;
  56.       }else if (strncmp(argv[cnt],"/",1)==0 ||
  57.                 strncmp(argv[cnt],"-",1)==0   ){
  58.         puts(">SSP-ED savefile [/MIN]\n"
  59.              "  savefile :セーブファイル名(SSP??.DAT)\n"
  60.              "  /MIN     :アイテム数最小   (アイテムを持っているために出てこないイベントが\n                             あると思われる時に使用して下さい)\n");
  61.         return(1);
  62.       }else{
  63.         ssp_file=argv[cnt];
  64.       }
  65.     }
  66.   }else{
  67.     puts("セーブデータを「全アイテムを所有した状態」に書き換えます\nセーブデータを指定して下さい\n/?で使用方法を表示します");
  68.     return(1);
  69.   }
  70.  
  71.  
  72. //printf("%s", ssp_file);
  73.   if( (exit_code=_dos_open(ssp_file, O_RDWR|O_BINARY, &ssp_fh)) != 0 ){
  74.     puts("ファイルを開けません");
  75.     return(exit_code);
  76.   }
  77.   if( filelength(ssp_fh) != 121919 ){
  78.     puts("セーブファイルでは無いようです");
  79.     return(-1);
  80.   }
  81.  
  82. // 3E-6A          物理武器
  83.   rewrite(0x0000003e, 6);
  84.   rewrite(0x0000003f, 4);
  85.   rewrite(0x00000040, 4);
  86.   rewrite(0x00000041, 3);
  87.   rewrite(0x00000042, 3);
  88.   rewrite(0x00000043, 2);
  89.   rewrite(0x00000044, 3);
  90.   rewrite(0x00000045,12);
  91.   rewrite(0x00000046, 8);
  92.   rewrite(0x00000047, 6);
  93.   rewrite(0x00000048, 6);
  94.   rewrite(0x00000049, 5);
  95.   rewrite(0x0000004a, 6);
  96.   rewrite(0x0000004b, 5);
  97.   rewrite(0x0000004c, 4);
  98.   rewrite(0x0000004d, 4);
  99.   rewrite(0x0000004e,15);
  100.   rewrite(0x0000004f,10);
  101.   rewrite(0x00000050,10);
  102.   rewrite(0x00000051,15);
  103.   rewrite(0x00000052,10);
  104.   rewrite(0x00000053,10);
  105.   rewrite(0x00000054, 1);
  106.   rewrite(0x00000055, 3);
  107.   rewrite(0x00000056, 1);
  108.   rewrite(0x00000057, 2);
  109.   rewrite(0x00000058, 6);
  110.   rewrite(0x00000059, 1);
  111.   rewrite(0x0000005a, 1);
  112.   rewrite(0x0000005b, 1);
  113.   rewrite(0x0000005c, 3);
  114.   rewrite(0x0000005d, 2);
  115.   rewrite(0x0000005e, 6);
  116.   rewrite(0x0000005f, 6);
  117.   rewrite(0x00000060, 4);
  118.   rewrite(0x00000061, 6);
  119.   rewrite(0x00000062, 6);
  120.   rewrite(0x00000063, 4);
  121.   rewrite(0x00000064, 3);
  122.   rewrite(0x00000065, 3);
  123.   rewrite(0x00000066, 3);
  124.   rewrite(0x00000067, 3);
  125.   rewrite(0x00000068, 2);
  126.   rewrite(0x00000069, 2);
  127.   rewrite(0x0000006a, 1);
  128.  
  129. // BE-CD,CF,D0,D4,D5 Wizard
  130.   rewrite(0x000000be, 4);
  131.   rewrite(0x000000bf, 4);
  132.   rewrite(0x000000c0, 1);
  133.   rewrite(0x000000c1, 2);
  134.   rewrite(0x000000c2, 1);
  135.   rewrite(0x000000c3, 3);
  136.   rewrite(0x000000c4, 2);
  137.   rewrite(0x000000c5, 1);
  138.   rewrite(0x000000c6, 3);
  139.   rewrite(0x000000c7, 1);
  140.   rewrite(0x000000c8, 2);
  141.   rewrite(0x000000c9, 1);
  142.   rewrite(0x000000ca, 1);
  143.   rewrite(0x000000cb, 1);
  144.   rewrite(0x000000cc, 1);
  145.   rewrite(0x000000cd, 1);
  146.   rewrite(0x000000cf, 1);
  147.   rewrite(0x000000d0, 4);
  148.   rewrite(0x000000d4, 5);
  149.   rewrite(0x000000d5, 5);
  150.  
  151. // 13E-157        拡張
  152.   rewrite(0x0000013e, 4);
  153.   rewrite(0x0000013f, 2);
  154.   rewrite(0x00000140, 1);
  155.   rewrite(0x00000141, 4);
  156.   rewrite(0x00000142, 2);
  157.   rewrite(0x00000143, 4);
  158.   rewrite(0x00000144, 2);
  159.   rewrite(0x00000145, 1);
  160.   rewrite(0x00000146, 4);
  161.   rewrite(0x00000147, 2);
  162.   rewrite(0x00000148, 1);
  163.   rewrite(0x00000149, 4);
  164.   rewrite(0x0000014a, 2);
  165.   rewrite(0x0000014b, 1);
  166.   rewrite(0x0000014c, 4);
  167.   rewrite(0x0000014d, 2);
  168.   rewrite(0x0000014e, 1);
  169.   rewrite(0x0000014f, 4);
  170.   rewrite(0x00000150, 2);
  171.   rewrite(0x00000151, 1);
  172.   rewrite(0x00000152, 4);
  173.   rewrite(0x00000153, 2);
  174.   rewrite(0x00000154, 1);
  175.   rewrite(0x00000155, 4);
  176.   rewrite(0x00000156, 2);
  177.   rewrite(0x00000157, 1);
  178.  
  179. // 17E-195,197-199 戦闘技術
  180.   rewrite(0x0000017e, 6);
  181.   rewrite(0x0000017f, 5);
  182.   rewrite(0x00000180, 2);
  183.   rewrite(0x00000181, 6);
  184.   rewrite(0x00000182, 4);
  185.   rewrite(0x00000183, 2);
  186.   rewrite(0x00000184, 5);
  187.   rewrite(0x00000185, 3);
  188.   rewrite(0x00000186, 2);
  189.   rewrite(0x00000187, 3);
  190.   rewrite(0x00000188, 8);
  191.   rewrite(0x00000189, 6);
  192.   rewrite(0x0000018a, 2);
  193.   rewrite(0x0000018b, 7);
  194.   rewrite(0x0000018c, 5);
  195.   rewrite(0x0000018d, 3);
  196.   rewrite(0x0000018e, 4);
  197.   rewrite(0x0000018f, 2);
  198.   rewrite(0x00000190, 6);
  199.   rewrite(0x00000191, 4);
  200.   rewrite(0x00000192, 3);
  201.   rewrite(0x00000193, 5);
  202.   rewrite(0x00000194, 4);
  203.   rewrite(0x00000195, 3);
  204. //rewrite(0x00000196, 0);
  205.   rewrite(0x00000197, 3);
  206.   rewrite(0x00000198, 3);
  207.   rewrite(0x00000199, 2);
  208.  
  209. // 19E-1C?        呪句
  210.   rewrite(0x0000019e, 8);
  211.   rewrite(0x0000019f, 6);
  212.   rewrite(0x000001a0, 8);
  213.   rewrite(0x000001a1, 3);
  214.   rewrite(0x000001a2, 5);
  215.   rewrite(0x000001a3, 4);
  216.   rewrite(0x000001a4, 6);
  217.   rewrite(0x000001a5,10);
  218.   rewrite(0x000001a6, 6);
  219.   rewrite(0x000001a7, 5);
  220.   rewrite(0x000001a8, 5);
  221.   rewrite(0x000001a9, 4);
  222.   rewrite(0x000001aa, 6);
  223. //rewrite(0x000001ab, 0);
  224.   rewrite(0x000001ac, 7);
  225.   rewrite(0x000001ad, 5);
  226.   rewrite(0x000001ae, 7);
  227.   rewrite(0x000001af, 3);
  228.   rewrite(0x000001b0, 5);
  229.   rewrite(0x000001b1, 3);
  230.   rewrite(0x000001b2, 4);
  231.   rewrite(0x000001b3, 5);
  232.   rewrite(0x000001b4, 5);
  233.   rewrite(0x000001b5, 3);
  234. //rewrite(0x000001b6, 0);
  235.   rewrite(0x000001b7, 4);
  236.   rewrite(0x000001b8, 3);
  237.   rewrite(0x000001b9, 7);
  238.   rewrite(0x000001ba, 7);
  239.   rewrite(0x000001bb, 7);
  240.   rewrite(0x000001bc, 7);
  241.   rewrite(0x000001bd, 4);
  242.   rewrite(0x000001be, 3);
  243.   rewrite(0x000001bf, 7);
  244.   rewrite(0x000001c0, 2);
  245.   rewrite(0x000001c1, 3);
  246.   rewrite(0x000001c2, 3);
  247.   rewrite(0x000001c3, 6);
  248.   rewrite(0x000001c4, 3);
  249.   rewrite(0x000001c5, 3);
  250.   rewrite(0x000001c6, 5);
  251.   rewrite(0x000001c7, 2);
  252.   rewrite(0x000001c8, 2);
  253.   rewrite(0x000001c9, 3);
  254.   rewrite(0x000001ca, 3);
  255.   rewrite(0x000001cb, 2);
  256.   rewrite(0x000001cc, 4);
  257.   rewrite(0x000001cd, 5);
  258.   rewrite(0x000001ce, 3);
  259.   rewrite(0x000001cf, 1);
  260. //rewrite(0x000001d0, 0);
  261.   rewrite(0x000001d1, 1);
  262.   rewrite(0x000001d2, 1);
  263.  
  264. // 1D3-1E4,1E6-1EA,  聖句
  265. // 1EC-1EF,1F1-1F6,
  266. // 1F8-1FA,1FE,1FF
  267.   rewrite(0x000001d3, 9);
  268.   rewrite(0x000001d4, 8);
  269.   rewrite(0x000001d5, 6);
  270.   rewrite(0x000001d6, 5);
  271.   rewrite(0x000001d7, 7);
  272.   rewrite(0x000001d8, 7);
  273.   rewrite(0x000001d9, 5);
  274.   rewrite(0x000001da, 3);
  275.   rewrite(0x000001db, 5);
  276.   rewrite(0x000001dc, 7);
  277.   rewrite(0x000001dd, 6);
  278.   rewrite(0x000001de, 5);
  279.   rewrite(0x000001df, 6);
  280.   rewrite(0x000001e0, 5);
  281.   rewrite(0x000001e1, 8);
  282.   rewrite(0x000001e2, 8);
  283.   rewrite(0x000001e3, 2);
  284.   rewrite(0x000001e4, 3);
  285. //rewrite(0x000001e5, 0);
  286.   rewrite(0x000001e6, 4);
  287.   rewrite(0x000001e7, 6);
  288.   rewrite(0x000001e8, 7);
  289.   rewrite(0x000001e9, 3);
  290.   rewrite(0x000001ea, 5);
  291. //rewrite(0x000001eb, 0);
  292.   rewrite(0x000001ec, 5);
  293.   rewrite(0x000001ed, 3);
  294.   rewrite(0x000001ee, 5);
  295.   rewrite(0x000001ef, 6);
  296. //rewrite(0x000001f0, 0);
  297.   rewrite(0x000001f1, 2);
  298.   rewrite(0x000001f2, 2);
  299.   rewrite(0x000001f3, 2);
  300.   rewrite(0x000001f4, 1);
  301.   rewrite(0x000001f5, 2);
  302.   rewrite(0x000001f6, 2);
  303. //rewrite(0x000001f7, 0);
  304.   rewrite(0x000001f8, 2);
  305.   rewrite(0x000001f9, 1);
  306.   rewrite(0x000001fa, 2);
  307.   rewrite(0x000001fe, 1);
  308.   rewrite(0x000001ff, 7);
  309.  
  310. // 21E-25C        教育アイテム
  311.   rewrite(0x0000021e,99);
  312.   rewrite(0x0000021f,99);
  313.   rewrite(0x00000220,99);
  314.   rewrite(0x00000221,99);
  315.   rewrite(0x00000222,99);
  316.   rewrite(0x00000223,99);
  317.   rewrite(0x00000224,99);
  318.   rewrite(0x00000225,99);
  319.   rewrite(0x00000226,99);
  320.   rewrite(0x00000227,99);
  321.   rewrite(0x00000228,99);
  322.   rewrite(0x00000229,99);
  323.   rewrite(0x0000022a,99);
  324.   rewrite(0x0000022b,99);
  325.   rewrite(0x0000022c,99);
  326.   rewrite(0x0000022d,99);
  327.   rewrite(0x0000022e,99);
  328.   rewrite(0x0000022f,99);
  329.   rewrite(0x00000230,99);
  330.   rewrite(0x00000231,99);
  331.   rewrite(0x00000232,99);
  332.   rewrite(0x00000233,99);
  333.   rewrite(0x00000234,99);
  334.   rewrite(0x00000235,99);
  335.   rewrite(0x00000236,99);
  336.   rewrite(0x00000237,99);
  337.   rewrite(0x00000238,99);
  338.   rewrite(0x00000239,99);
  339.   rewrite(0x0000023a,99);
  340.   rewrite(0x0000023b,99);
  341.   rewrite(0x0000023c,99);
  342.   rewrite(0x0000023d,99);
  343.   rewrite(0x0000023e,99);
  344.   rewrite(0x0000023f,99);
  345.   rewrite(0x00000240,99);
  346.   rewrite(0x00000241,99);
  347.   rewrite(0x00000242,99);
  348.   rewrite(0x00000243,99);
  349.   rewrite(0x00000244,99);
  350.   rewrite(0x00000245,99);
  351.   rewrite(0x00000246,99);
  352.   rewrite(0x00000247,99);
  353.   rewrite(0x00000248,99);
  354.   rewrite(0x00000249,99);
  355.   rewrite(0x0000024a,99);
  356.   rewrite(0x0000024b,99);
  357.   rewrite(0x0000024c,99);
  358.   rewrite(0x0000024d,99);
  359.   rewrite(0x0000024e,99);
  360.   rewrite(0x0000024f,99);
  361.   rewrite(0x00000250,99);
  362.   rewrite(0x00000251,99);
  363.   rewrite(0x00000252,99);
  364.   rewrite(0x00000253,99);
  365.   rewrite(0x00000254,99);
  366.   rewrite(0x00000255,99);
  367.   rewrite(0x00000256,99);
  368.   rewrite(0x00000257,99);
  369.   rewrite(0x00000258,99);
  370.   rewrite(0x00000259,99);
  371.   rewrite(0x0000025a,99);
  372.   rewrite(0x0000025b,99);
  373.   rewrite(0x0000025c,99);
  374.  
  375.   if( (exit_code=_dos_close(ssp_fh)) != 0 ){
  376.     puts("ファイルを閉じられません");
  377.     return(exit_code);
  378.   }
  379.  
  380.   puts("セーブデータを書き換えました");
  381.  
  382.   return(0);
  383. }
  384.