diff --git a/src/sbbs3/unbaja.c b/src/sbbs3/unbaja.c index 0874bd1ac976993e9f05546845d7c09f05bf5e34..1e4bb3c18e6ef22d01b3b5c05bd689b10dcc78d7 100644 --- a/src/sbbs3/unbaja.c +++ b/src/sbbs3/unbaja.c @@ -627,6 +627,21 @@ void eol(FILE *src) eol(src); \ break +#define MVARVARNZUST(name) WRITE_NAME(name); \ + write_var(bin,src); \ + write_var(bin,src); \ + if(usevar) { \ + fprintf(src,"%s ",getvar(var)); \ + usevar=FALSE; \ + fread(buf,2,1,bin); \ + } else { \ + fread(&ush, 2, 1, bin); \ + if(ush) \ + fprintf(src,"%u ",ush); \ + } \ + eol(src); \ + break + #define MVARVARUST(name) WRITE_NAME(name); \ write_var(bin,src); \ write_var(bin,src); \ @@ -1852,11 +1867,11 @@ void decompile(FILE *bin, FILE *src) case FIO_CLOSE: VAR("FCLOSE"); case FIO_READ: - VARVARUST("FREAD"); + MVARVARNZUST("FREAD"); case FIO_READ_VAR: VARVARVAR("FREAD"); case FIO_WRITE: - VARVARUST("FWRITE"); + MVARVARNZUST("FWRITE"); case FIO_WRITE_VAR: VARVARVAR("FWRITE"); case FIO_GET_LENGTH: