diff --git a/src/asm/main.c b/src/asm/main.c index e21c1544..4b5a5e42 100644 --- a/src/asm/main.c +++ b/src/asm/main.c @@ -12,6 +12,7 @@ #include "asm/main.h" #include "extern/err.h" #include "extern/reallocarray.h" +#include "extern/version.h" int yyparse(void); void setuplex(void); @@ -276,7 +277,7 @@ static void usage(void) { printf( -"Usage: rgbasm [-hvE] [-b chars] [-Dname[=value]] [-g chars] [-i path]\n" +"Usage: rgbasm [-EhVvw] [-b chars] [-Dname[=value]] [-g chars] [-i path]\n" " [-M dependfile] [-o outfile] [-p pad_value] file.asm\n"); exit(1); } @@ -322,7 +323,7 @@ main(int argc, char *argv[]) newopt = CurrentOptions; - while ((ch = getopt(argc, argv, "b:D:g:hi:M:o:p:vEw")) != -1) { + while ((ch = getopt(argc, argv, "b:D:g:hi:M:o:p:EVvw")) != -1) { switch (ch) { case 'b': if (strlen(optarg) == 2) { @@ -371,6 +372,9 @@ main(int argc, char *argv[]) "between 0 and 0xFF"); } break; + case 'V': + printf("rgbasm %s\n", get_package_version_string()); + exit(0); case 'v': newopt.verbose = true; break; @@ -382,6 +386,7 @@ main(int argc, char *argv[]) break; default: usage(); + /* NOTREACHED */ } } argc -= optind; diff --git a/src/asm/rgbasm.1 b/src/asm/rgbasm.1 index 2d45084e..784e0794 100644 --- a/src/asm/rgbasm.1 +++ b/src/asm/rgbasm.1 @@ -20,7 +20,7 @@ .Nd Game Boy assembler .Sh SYNOPSIS .Nm rgbasm -.Op Fl Ehvw +.Op Fl EhVvw .Op Fl b Ar chars .Op Fl D Ar name Ns Op = Ns Ar value .Op Fl g Ar chars @@ -72,6 +72,8 @@ Write an object file to the given filename. .It Fl p Ar pad_value When padding an image, pad with this value. The default is 0x00. +.It Fl V +Print the version of the program and exit. .It Fl v Be verbose. .It Fl w diff --git a/src/fix/main.c b/src/fix/main.c index f634ce57..05c227f0 100644 --- a/src/fix/main.c +++ b/src/fix/main.c @@ -22,12 +22,13 @@ #include #include "extern/err.h" +#include "extern/version.h" static void usage(void) { printf( -"usage: rgbfix [-Ccjsv] [-i game_id] [-k licensee_str] [-l licensee_id]\n" +"usage: rgbfix [-CcjsVv] [-i game_id] [-k licensee_str] [-l licensee_id]\n" " [-m mbc_type] [-n rom_version] [-p pad_value] [-r ram_size]\n" " [-t title_str] file\n"); exit(1); @@ -69,7 +70,7 @@ main(int argc, char *argv[]) int version; /* mask ROM version number */ int padvalue; /* to pad the rom with if it changes size */ - while ((ch = getopt(argc, argv, "Cci:jk:l:m:n:p:sr:t:v")) != -1) { + while ((ch = getopt(argc, argv, "Cci:jk:l:m:n:p:sr:t:Vv")) != -1) { switch (ch) { case 'C': coloronly = true; @@ -177,6 +178,9 @@ main(int argc, char *argv[]) title = optarg; break; + case 'V': + printf("rgbfix %s\n", get_package_version_string()); + exit(0); case 'v': validate = true; break; diff --git a/src/fix/rgbfix.1 b/src/fix/rgbfix.1 index cbbb3661..7cc39801 100644 --- a/src/fix/rgbfix.1 +++ b/src/fix/rgbfix.1 @@ -20,7 +20,7 @@ .Nd Game Boy checksum fixer .Sh SYNOPSIS .Nm rgbfix -.Op Fl Ccjsv +.Op Fl CcjsVv .Op Fl i Ar game_id .Op Fl k Ar licensee_str .Op Fl l Ar licensee_id @@ -108,6 +108,8 @@ or .Pc . If both this and the game ID are set, the game ID will overwrite the overlapping portion of the title. +.It Fl V +Print the version of the program and exit. .It Fl v Validate the header and fix checksums: the Nintendo character area .Pq Ad 0x104 Ns \(en Ns Ad 0x133 , diff --git a/src/gfx/main.c b/src/gfx/main.c index cc8bca2a..c77e5682 100644 --- a/src/gfx/main.c +++ b/src/gfx/main.c @@ -14,17 +14,19 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include #include #include +#include + +#include "extern/version.h" #include "gfx/main.h" static void usage(void) { printf( -"usage: rgbgfx [-DFfhPTuv] [-d #] [-o outfile] [-p palfile] [-t mapfile]\n" -"[-x #] infile\n"); +"usage: rgbgfx [-DFfhPTuVv] [-d #] [-o outfile] [-p palfile] [-t mapfile]\n" +" [-x #] infile\n"); exit(1); } @@ -49,7 +51,7 @@ main(int argc, char *argv[]) depth = 2; - while((ch = getopt(argc, argv, "DvFfd:hx:Tt:uPp:o:")) != -1) { + while((ch = getopt(argc, argv, "Dd:Ffho:Tt:uPp:Vvx:")) != -1) { switch(ch) { case 'D': opts.debug = true; @@ -89,8 +91,12 @@ main(int argc, char *argv[]) case 'o': opts.outfile = optarg; break; + case 'V': + printf("rgbgfx %s\n", get_package_version_string()); + exit(0); default: usage(); + /* NOTREACHED */ } } argc -= optind; diff --git a/src/gfx/rgbgfx.1 b/src/gfx/rgbgfx.1 index 54240c8c..3951e77f 100644 --- a/src/gfx/rgbgfx.1 +++ b/src/gfx/rgbgfx.1 @@ -20,7 +20,7 @@ .Nd Game Boy graphics converter .Sh SYNOPSIS .Nm rgbgfx -.Op Fl DfFhPTv +.Op Fl DfFhPTVv .Op Fl o Ar outfile .Op Fl d Ar depth .Op Fl p Ar palfile @@ -70,6 +70,8 @@ removing the file extension, and appending .Pa .tilemap . .It Fl u Truncate repeated tiles. Useful with tilemaps. +.It Fl V +Print the version of the program and exit. .It Fl v Verbose. Print errors when the command line parameters and the parameters in diff --git a/src/link/main.c b/src/link/main.c index 9e246f2f..3c88e7f3 100644 --- a/src/link/main.c +++ b/src/link/main.c @@ -4,6 +4,7 @@ #include #include "extern/err.h" +#include "extern/version.h" #include "link/object.h" #include "link/output.h" #include "link/assign.h" @@ -33,7 +34,7 @@ static void usage(void) { printf( -"usage: rgblink [-twd] [-l linkerscript] [-m mapfile] [-n symfile] [-O overlay]\n" +"usage: rgblink [-dtVw] [-l linkerscript] [-m mapfile] [-n symfile] [-O overlay]\n" " [-o outfile] [-p pad_value] [-s symbol] file [...]\n"); exit(1); } @@ -52,7 +53,7 @@ main(int argc, char *argv[]) if (argc == 1) usage(); - while ((ch = getopt(argc, argv, "l:m:n:o:O:p:s:twd")) != -1) { + while ((ch = getopt(argc, argv, "dl:m:n:O:o:p:s:tVw")) != -1) { switch (ch) { case 'l': SetLinkerscriptName(optarg); @@ -98,7 +99,7 @@ main(int argc, char *argv[]) * This option implies OPT_CONTWRAM. */ options |= OPT_DMG_MODE; - /* fallthrough */ + /* FALLTHROUGH */ case 'w': /* Set to set WRAM as a single continuous block as on * DMG. All WRAM sections must be WRAM0 as bankable WRAM @@ -106,6 +107,9 @@ main(int argc, char *argv[]) * will raise an error. */ options |= OPT_CONTWRAM; break; + case 'V': + printf("rgblink %s\n", get_package_version_string()); + exit(0); default: usage(); /* NOTREACHED */ diff --git a/src/link/rgblink.1 b/src/link/rgblink.1 index 2f1dc79a..85d8b882 100644 --- a/src/link/rgblink.1 +++ b/src/link/rgblink.1 @@ -20,9 +20,7 @@ .Nd Game Boy linker .Sh SYNOPSIS .Nm rgblink -.Op Fl t -.Op Fl w -.Op Fl d +.Op Fl dtVw .Op Fl m Ar mapfile .Op Fl n Ar symfile .Op Fl O Ar overlayfile @@ -95,6 +93,8 @@ have to be consistent. See .Xr rgblink 5 for more information about its format. +.It Fl V +Print the version of the program and exit. .El .Sh EXAMPLES All you need for a basic ROM is an object file, which can be made into a ROM