home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fun CD 26
/
OTACD26.ISO
/
archive
/
game
/
ssp-ed
/
SSP-ED.LZH
/
ssp-ed.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1998-02-23
|
10KB
|
384 lines
// ssp item editor
//
// hex.add. 変更内容(グラフィック等の存在しないデータは省いてあります)
// 3E-6A 物理武器
// BE-CD,CF,D0,D4,D5 Wizard
// 13E-157 拡張
// 17E-195,197-199 戦闘技術
// 19E-1AA,1AC-1B5, 呪句
// 1B7-1CF,19E-1CF,
// 1D1,1D2
// 1D3-1E4,1E6-1EA, 聖句
// 1EC-1EF,1F1-1F6,
// 1F8-1FA,1FE,1FF
// 21E-25C 教育アイテム
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <io.h>
#include <fcntl.h>
#include <conio.h>
#include <dos.h>
int ssp_fh, exit_code, item_min=0;
char *id="SSP SAVE DATA EDITOR - MAX ITEM (C)WESTSIDE",
*ssp_file="12345678.123";
void rewrite(unsigned long fa, char dt)
{
unsigned dummy=0;
if (item_min != 0){
dt=0;
}
if ( (exit_code=lseek(ssp_fh, fa, SEEK_SET)) != fa ){
puts("シーク失敗です");
exit(exit_code);
}
if ( (exit_code=_dos_write(ssp_fh, (char far *)&dt, 1, &dummy)) != 0 ){
puts("書き込み失敗です");
exit(exit_code);
}
}
int main(int argc, char *argv[])
{
int cnt;
puts(id);
if (1<argc){
for (cnt=1; cnt<argc; cnt++){
argv[cnt]=strupr(argv[cnt]);
if (stricmp(argv[cnt],"/MIN")==0){
item_min=-1;
}else if (strncmp(argv[cnt],"/",1)==0 ||
strncmp(argv[cnt],"-",1)==0 ){
puts(">SSP-ED savefile [/MIN]\n"
" savefile :セーブファイル名(SSP??.DAT)\n"
" /MIN :アイテム数最小 (アイテムを持っているために出てこないイベントが\n あると思われる時に使用して下さい)\n");
return(1);
}else{
ssp_file=argv[cnt];
}
}
}else{
puts("セーブデータを「全アイテムを所有した状態」に書き換えます\nセーブデータを指定して下さい\n/?で使用方法を表示します");
return(1);
}
//printf("%s", ssp_file);
if( (exit_code=_dos_open(ssp_file, O_RDWR|O_BINARY, &ssp_fh)) != 0 ){
puts("ファイルを開けません");
return(exit_code);
}
if( filelength(ssp_fh) != 121919 ){
puts("セーブファイルでは無いようです");
return(-1);
}
// 3E-6A 物理武器
rewrite(0x0000003e, 6);
rewrite(0x0000003f, 4);
rewrite(0x00000040, 4);
rewrite(0x00000041, 3);
rewrite(0x00000042, 3);
rewrite(0x00000043, 2);
rewrite(0x00000044, 3);
rewrite(0x00000045,12);
rewrite(0x00000046, 8);
rewrite(0x00000047, 6);
rewrite(0x00000048, 6);
rewrite(0x00000049, 5);
rewrite(0x0000004a, 6);
rewrite(0x0000004b, 5);
rewrite(0x0000004c, 4);
rewrite(0x0000004d, 4);
rewrite(0x0000004e,15);
rewrite(0x0000004f,10);
rewrite(0x00000050,10);
rewrite(0x00000051,15);
rewrite(0x00000052,10);
rewrite(0x00000053,10);
rewrite(0x00000054, 1);
rewrite(0x00000055, 3);
rewrite(0x00000056, 1);
rewrite(0x00000057, 2);
rewrite(0x00000058, 6);
rewrite(0x00000059, 1);
rewrite(0x0000005a, 1);
rewrite(0x0000005b, 1);
rewrite(0x0000005c, 3);
rewrite(0x0000005d, 2);
rewrite(0x0000005e, 6);
rewrite(0x0000005f, 6);
rewrite(0x00000060, 4);
rewrite(0x00000061, 6);
rewrite(0x00000062, 6);
rewrite(0x00000063, 4);
rewrite(0x00000064, 3);
rewrite(0x00000065, 3);
rewrite(0x00000066, 3);
rewrite(0x00000067, 3);
rewrite(0x00000068, 2);
rewrite(0x00000069, 2);
rewrite(0x0000006a, 1);
// BE-CD,CF,D0,D4,D5 Wizard
rewrite(0x000000be, 4);
rewrite(0x000000bf, 4);
rewrite(0x000000c0, 1);
rewrite(0x000000c1, 2);
rewrite(0x000000c2, 1);
rewrite(0x000000c3, 3);
rewrite(0x000000c4, 2);
rewrite(0x000000c5, 1);
rewrite(0x000000c6, 3);
rewrite(0x000000c7, 1);
rewrite(0x000000c8, 2);
rewrite(0x000000c9, 1);
rewrite(0x000000ca, 1);
rewrite(0x000000cb, 1);
rewrite(0x000000cc, 1);
rewrite(0x000000cd, 1);
rewrite(0x000000cf, 1);
rewrite(0x000000d0, 4);
rewrite(0x000000d4, 5);
rewrite(0x000000d5, 5);
// 13E-157 拡張
rewrite(0x0000013e, 4);
rewrite(0x0000013f, 2);
rewrite(0x00000140, 1);
rewrite(0x00000141, 4);
rewrite(0x00000142, 2);
rewrite(0x00000143, 4);
rewrite(0x00000144, 2);
rewrite(0x00000145, 1);
rewrite(0x00000146, 4);
rewrite(0x00000147, 2);
rewrite(0x00000148, 1);
rewrite(0x00000149, 4);
rewrite(0x0000014a, 2);
rewrite(0x0000014b, 1);
rewrite(0x0000014c, 4);
rewrite(0x0000014d, 2);
rewrite(0x0000014e, 1);
rewrite(0x0000014f, 4);
rewrite(0x00000150, 2);
rewrite(0x00000151, 1);
rewrite(0x00000152, 4);
rewrite(0x00000153, 2);
rewrite(0x00000154, 1);
rewrite(0x00000155, 4);
rewrite(0x00000156, 2);
rewrite(0x00000157, 1);
// 17E-195,197-199 戦闘技術
rewrite(0x0000017e, 6);
rewrite(0x0000017f, 5);
rewrite(0x00000180, 2);
rewrite(0x00000181, 6);
rewrite(0x00000182, 4);
rewrite(0x00000183, 2);
rewrite(0x00000184, 5);
rewrite(0x00000185, 3);
rewrite(0x00000186, 2);
rewrite(0x00000187, 3);
rewrite(0x00000188, 8);
rewrite(0x00000189, 6);
rewrite(0x0000018a, 2);
rewrite(0x0000018b, 7);
rewrite(0x0000018c, 5);
rewrite(0x0000018d, 3);
rewrite(0x0000018e, 4);
rewrite(0x0000018f, 2);
rewrite(0x00000190, 6);
rewrite(0x00000191, 4);
rewrite(0x00000192, 3);
rewrite(0x00000193, 5);
rewrite(0x00000194, 4);
rewrite(0x00000195, 3);
//rewrite(0x00000196, 0);
rewrite(0x00000197, 3);
rewrite(0x00000198, 3);
rewrite(0x00000199, 2);
// 19E-1C? 呪句
rewrite(0x0000019e, 8);
rewrite(0x0000019f, 6);
rewrite(0x000001a0, 8);
rewrite(0x000001a1, 3);
rewrite(0x000001a2, 5);
rewrite(0x000001a3, 4);
rewrite(0x000001a4, 6);
rewrite(0x000001a5,10);
rewrite(0x000001a6, 6);
rewrite(0x000001a7, 5);
rewrite(0x000001a8, 5);
rewrite(0x000001a9, 4);
rewrite(0x000001aa, 6);
//rewrite(0x000001ab, 0);
rewrite(0x000001ac, 7);
rewrite(0x000001ad, 5);
rewrite(0x000001ae, 7);
rewrite(0x000001af, 3);
rewrite(0x000001b0, 5);
rewrite(0x000001b1, 3);
rewrite(0x000001b2, 4);
rewrite(0x000001b3, 5);
rewrite(0x000001b4, 5);
rewrite(0x000001b5, 3);
//rewrite(0x000001b6, 0);
rewrite(0x000001b7, 4);
rewrite(0x000001b8, 3);
rewrite(0x000001b9, 7);
rewrite(0x000001ba, 7);
rewrite(0x000001bb, 7);
rewrite(0x000001bc, 7);
rewrite(0x000001bd, 4);
rewrite(0x000001be, 3);
rewrite(0x000001bf, 7);
rewrite(0x000001c0, 2);
rewrite(0x000001c1, 3);
rewrite(0x000001c2, 3);
rewrite(0x000001c3, 6);
rewrite(0x000001c4, 3);
rewrite(0x000001c5, 3);
rewrite(0x000001c6, 5);
rewrite(0x000001c7, 2);
rewrite(0x000001c8, 2);
rewrite(0x000001c9, 3);
rewrite(0x000001ca, 3);
rewrite(0x000001cb, 2);
rewrite(0x000001cc, 4);
rewrite(0x000001cd, 5);
rewrite(0x000001ce, 3);
rewrite(0x000001cf, 1);
//rewrite(0x000001d0, 0);
rewrite(0x000001d1, 1);
rewrite(0x000001d2, 1);
// 1D3-1E4,1E6-1EA, 聖句
// 1EC-1EF,1F1-1F6,
// 1F8-1FA,1FE,1FF
rewrite(0x000001d3, 9);
rewrite(0x000001d4, 8);
rewrite(0x000001d5, 6);
rewrite(0x000001d6, 5);
rewrite(0x000001d7, 7);
rewrite(0x000001d8, 7);
rewrite(0x000001d9, 5);
rewrite(0x000001da, 3);
rewrite(0x000001db, 5);
rewrite(0x000001dc, 7);
rewrite(0x000001dd, 6);
rewrite(0x000001de, 5);
rewrite(0x000001df, 6);
rewrite(0x000001e0, 5);
rewrite(0x000001e1, 8);
rewrite(0x000001e2, 8);
rewrite(0x000001e3, 2);
rewrite(0x000001e4, 3);
//rewrite(0x000001e5, 0);
rewrite(0x000001e6, 4);
rewrite(0x000001e7, 6);
rewrite(0x000001e8, 7);
rewrite(0x000001e9, 3);
rewrite(0x000001ea, 5);
//rewrite(0x000001eb, 0);
rewrite(0x000001ec, 5);
rewrite(0x000001ed, 3);
rewrite(0x000001ee, 5);
rewrite(0x000001ef, 6);
//rewrite(0x000001f0, 0);
rewrite(0x000001f1, 2);
rewrite(0x000001f2, 2);
rewrite(0x000001f3, 2);
rewrite(0x000001f4, 1);
rewrite(0x000001f5, 2);
rewrite(0x000001f6, 2);
//rewrite(0x000001f7, 0);
rewrite(0x000001f8, 2);
rewrite(0x000001f9, 1);
rewrite(0x000001fa, 2);
rewrite(0x000001fe, 1);
rewrite(0x000001ff, 7);
// 21E-25C 教育アイテム
rewrite(0x0000021e,99);
rewrite(0x0000021f,99);
rewrite(0x00000220,99);
rewrite(0x00000221,99);
rewrite(0x00000222,99);
rewrite(0x00000223,99);
rewrite(0x00000224,99);
rewrite(0x00000225,99);
rewrite(0x00000226,99);
rewrite(0x00000227,99);
rewrite(0x00000228,99);
rewrite(0x00000229,99);
rewrite(0x0000022a,99);
rewrite(0x0000022b,99);
rewrite(0x0000022c,99);
rewrite(0x0000022d,99);
rewrite(0x0000022e,99);
rewrite(0x0000022f,99);
rewrite(0x00000230,99);
rewrite(0x00000231,99);
rewrite(0x00000232,99);
rewrite(0x00000233,99);
rewrite(0x00000234,99);
rewrite(0x00000235,99);
rewrite(0x00000236,99);
rewrite(0x00000237,99);
rewrite(0x00000238,99);
rewrite(0x00000239,99);
rewrite(0x0000023a,99);
rewrite(0x0000023b,99);
rewrite(0x0000023c,99);
rewrite(0x0000023d,99);
rewrite(0x0000023e,99);
rewrite(0x0000023f,99);
rewrite(0x00000240,99);
rewrite(0x00000241,99);
rewrite(0x00000242,99);
rewrite(0x00000243,99);
rewrite(0x00000244,99);
rewrite(0x00000245,99);
rewrite(0x00000246,99);
rewrite(0x00000247,99);
rewrite(0x00000248,99);
rewrite(0x00000249,99);
rewrite(0x0000024a,99);
rewrite(0x0000024b,99);
rewrite(0x0000024c,99);
rewrite(0x0000024d,99);
rewrite(0x0000024e,99);
rewrite(0x0000024f,99);
rewrite(0x00000250,99);
rewrite(0x00000251,99);
rewrite(0x00000252,99);
rewrite(0x00000253,99);
rewrite(0x00000254,99);
rewrite(0x00000255,99);
rewrite(0x00000256,99);
rewrite(0x00000257,99);
rewrite(0x00000258,99);
rewrite(0x00000259,99);
rewrite(0x0000025a,99);
rewrite(0x0000025b,99);
rewrite(0x0000025c,99);
if( (exit_code=_dos_close(ssp_fh)) != 0 ){
puts("ファイルを閉じられません");
return(exit_code);
}
puts("セーブデータを書き換えました");
return(0);
}