home *** CD-ROM | disk | FTP | other *** search
- /* UXPATCH.C (c) S.Enjoji
- *
- * 次のデータ列の最後の 0x4a -> 0x90 にパッチ当てする
- * 0F 20 C0 66 A9 04 00 75 07 66 A9 10 00 74 01 4A
- */
-
- #include <stdio.h>
- #include <stdlib.h>
-
- char bin[16] = {
- 0x0F,0x20,0xC0,0x66,0xA9,0x04,0x00,0x75,
- 0x07,0x66,0xA9,0x10,0x00,0x74,0x01,0x4A
- };
-
- main(int argc,char *argv[])
- {
- int i,j,d,f;
- FILE *fp;
-
- for(i=0; i<argc; i++) {
- }
- if (argc<2) {
- puts("ファイル名を付けてください。\a");
- exit(1);
- }
- for(i=1; i<argc; i++) {
- f = 0;
- printf("%12s: ",argv[i]);
- if((fp=fopen(argv[i],"r+b")) == NULL) {
- puts("読み書きモードでオープンできません。\a");
- continue;
- }
- if(fseek(fp,0x200L,SEEK_SET)) {f = 1; goto file_close;}
- search:
- do {
- if((d = getc(fp)) == EOF) {f = 1; goto file_close;}
- } while(d != bin[0]);
- for(j=1; j<15; j++) {
- if((d = getc(fp)) == EOF) {f = 1; goto file_close;}
- if(d != bin[j]) goto search;
- }
- if((d = getc(fp)) == bin[15]) {
- fseek(fp,-1L,SEEK_CUR);
- putc('\x90',fp);
- puts("書き換えました。");
- } else {
- printf("データが違います。[%02X]\n",d);
- }
- file_close:
- fclose(fp);
- if(f) puts("データが有りません。");
- }
- }
-