home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fun CD 26
/
OTACD26.ISO
/
archive
/
game
/
eb-exb
/
EB-EXP.LZH
/
EB-EXP.CPP
next >
Wrap
C/C++ Source or Header
|
1998-09-11
|
3KB
|
150 lines
// ElderBlaze EXP. up
//
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <io.h>
#include <fcntl.h>
#include <conio.h>
#include <dos.h>
int eb_fh, exit_code, more=0;
char *id="ElderBlaze EXP. up (C)WESTSIDE",
*eb_file="E_Blaze1.exe";
unsigned get_para(long address)
{
unsigned dummy;
unsigned dt;
if ( lseek(eb_fh, address, SEEK_SET) != address ){
puts("シーク失敗です");
exit(-1);
}
if ( _dos_read(eb_fh, (unsigned far *)&dt, 2, &dummy) != 0 ){
puts("読み込み失敗です");
exit(-1);
}
return(dt);
}
void put_para(long address, unsigned dt)
{
unsigned dummy;
if ( lseek(eb_fh, address, SEEK_SET) != address ){
puts("シーク失敗です");
exit(-1);
}
if ( _dos_write(eb_fh, (unsigned far *)&dt, 2, &dummy) != 0 ){
puts("書き込み失敗です");
exit(-1);
}
}
void para_ed(long base_add)
{
int c;
long curr_add;
// unsigned para;
for(c=0; c<44; c++){
curr_add=base_add+c*68;
// para=get_para(curr_add);
if(more==0){
put_para(curr_add+0x003e, 0x7a7a);
}else{
put_para(curr_add+0x0034, 0x0001);
put_para(curr_add+0x0036, 0x0001);
put_para(curr_add+0x0038, 0x0001);
}
}
}
unsigned check_para(long base_add)
{
int c;
unsigned sum=0;
for(c=0; c<68*44; c++){
sum^=get_para(base_add+c);
}
return(sum);
}
char check_num(char *s)
{
if (1<=atoi(s) || stricmp(s,"0")==0 )
return(atoi(s));
else
return(-1);
}
int main(int argc, char *argv[])
{
int cnt;
unsigned res1, file_attrib;
puts(id);
if (1<argc){
for (cnt=1; cnt<argc; cnt++){
if (stricmp(argv[cnt],"/MORE")==0){
more=-1;
}else /*if (strncmp(argv[cnt],"/",1)==0 ||
strncmp(argv[cnt],"-",1)==0 )*/{
puts(">EB-EXP [/MORE]\n"
" /MORE\t:モンスターを弱くする\n");
return(1);
}
}
}
_dos_setfileattr(eb_file, 0);
if( (exit_code=_dos_open(eb_file, O_RDWR|O_BINARY, &eb_fh)) != 0 ){
puts("E_Blaze1.exeを開けません");
return(exit_code);
}
if( filelength(eb_fh) != 551424){
puts("E_Blaze1.exeのバージョンが違います");
return(-1);
}
res1=check_para(0x00078aa0);
// printf("%0x",res1);
if( (res1==0x4b89 || res1==0x11d3) && (more==0) ){
puts("E_Blaze1.exeは既に経験値アップ改造がされてます。");
return(-1);
}else if( (res1==0xdd1f || res1==0x11d3) && (more!=0) ){
puts("E_Blaze1.exeは既にモンスター弱化がされています。");
return(-1);
}else if(res1==0x4b89 || res1==0xdd1f || res1==0x8745){
puts("E_Blaze1.exeをチェックしました。書き換え可能です。");
}else{
puts("E_Blaze1.exeに認識できないデータが含まれています。以下の理由が考えられます。");
puts("1.E_Blaze1.exeの内部バージョンが違う");
puts("2.当ツール以外の方法で書き換えられている");
puts("3.書き換えの途中でOSのクラッシュ等で中断された");
puts("*(2)(3)の場合は再インストールで書き換えできるようになります。");
return(-1);
}
para_ed(0x00078aa0);
if( (exit_code=_dos_close(eb_fh)) != 0 ){
puts("E_Blaze1.exeで、書き換えを終了出来ませんでした");
return(exit_code);
}
if(more==0){
puts("経験値アップ改造しました");
}else{
puts("モンスター弱化改造しました");
}
return(0);
}