mirror of
https://github.com/raphnet/gc_n64_usb-v3
synced 2025-02-07 02:30:14 -05:00
move mempak command line tools to main directory
This commit is contained in:
parent
9c7088377f
commit
f3129ed377
@ -13,17 +13,18 @@ ifeq ($(shell uname -o), Msys)
|
|||||||
COMPAT_OBJS=sleep.o memmem.o
|
COMPAT_OBJS=sleep.o memmem.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CFLAGS=-Wall -g `pkg-config $(HIDAPI_NAME) --cflags`
|
CFLAGS=-Wall -g `pkg-config $(HIDAPI_NAME) --cflags` --std=c99
|
||||||
LDFLAGS=`pkg-config $(HIDAPI_NAME) --libs` -g
|
LDFLAGS=`pkg-config $(HIDAPI_NAME) --libs` -g
|
||||||
GTK_CFLAGS=`pkg-config --cflags gtk+-3.0 gmodule-2.0`
|
GTK_CFLAGS=`pkg-config --cflags gtk+-3.0 gmodule-2.0`
|
||||||
GTK_LDFLAGS=`pkg-config --libs gtk+-3.0 gmodule-2.0`
|
GTK_LDFLAGS=`pkg-config --libs gtk+-3.0 gmodule-2.0`
|
||||||
|
|
||||||
PREFIX=/usr/local
|
PREFIX=/usr/local
|
||||||
|
|
||||||
|
MEMPAKLIB_OBJS=mempak.o mempak_fs.o
|
||||||
|
|
||||||
.PHONY : clean install
|
.PHONY : clean install
|
||||||
|
|
||||||
all: gcn64ctl gcn64ctl_gui
|
all: gcn64ctl gcn64ctl_gui mempak_ls mempak_format mempak_extract_note mempak_insert_note mempak_rm mempak_convert
|
||||||
|
|
||||||
gcn64ctl_gui: gcn64ctl_gui.o gcn64.o gcn64lib.o mempak_old.o hexdump.o ihex.o $(COMPAT_OBJS)
|
gcn64ctl_gui: gcn64ctl_gui.o gcn64.o gcn64lib.o mempak_old.o hexdump.o ihex.o $(COMPAT_OBJS)
|
||||||
$(LD) $^ $(LDFLAGS) $(GTK_LDFLAGS) -o $@
|
$(LD) $^ $(LDFLAGS) $(GTK_LDFLAGS) -o $@
|
||||||
@ -34,6 +35,25 @@ gcn64ctl: main.o gcn64.o mempak_old.o gcn64lib.o hexdump.o gc2n64_adapter.o ihex
|
|||||||
gcn64ctl_gui.o: gcn64ctl_gui.c
|
gcn64ctl_gui.o: gcn64ctl_gui.c
|
||||||
$(CC) $(CFLAGS) $(GTK_CFLAGS) -c $<
|
$(CC) $(CFLAGS) $(GTK_CFLAGS) -c $<
|
||||||
|
|
||||||
|
mempak_convert: mempak_convert.o $(MEMPAKLIB_OBJS)
|
||||||
|
$(LD) $^ $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
mempak_rm: mempak_rm.o $(MEMPAKLIB_OBJS)
|
||||||
|
$(LD) $^ $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
mempak_insert_note: mempak_insert_note.o $(MEMPAKLIB_OBJS)
|
||||||
|
$(LD) $^ $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
mempak_extract_note: mempak_extract_note.o $(MEMPAKLIB_OBJS)
|
||||||
|
$(LD) $^ $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
mempak_ls: mempak_ls.o $(MEMPAKLIB_OBJS)
|
||||||
|
$(LD) $^ $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
mempak_format: mempak_format.o $(MEMPAKLIB_OBJS)
|
||||||
|
$(LD) $^ $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
|
||||||
%.o: %.c %.h
|
%.o: %.c %.h
|
||||||
$(CC) $(CFLAGS) -c $<
|
$(CC) $(CFLAGS) -c $<
|
||||||
|
|
||||||
|
@ -232,6 +232,7 @@ int mempak_exportNote(mempak_structure_t *mpk, int note_id, const char *dst_file
|
|||||||
int mempak_saveToFile(mempak_structure_t *mpk, const char *dst_filename, unsigned char format)
|
int mempak_saveToFile(mempak_structure_t *mpk, const char *dst_filename, unsigned char format)
|
||||||
{
|
{
|
||||||
FILE *fptr;
|
FILE *fptr;
|
||||||
|
int i;
|
||||||
|
|
||||||
if (!mpk)
|
if (!mpk)
|
||||||
return -1;
|
return -1;
|
||||||
@ -265,8 +266,30 @@ int mempak_saveToFile(mempak_structure_t *mpk, const char *dst_filename, unsigne
|
|||||||
// only look for the 123-456-STD header and then
|
// only look for the 123-456-STD header and then
|
||||||
// seek to the data.
|
// seek to the data.
|
||||||
//
|
//
|
||||||
// Real .N64 files contain more info. TODO: Support it
|
// Real .N64 files contain more info other info. Often
|
||||||
|
// 0x12: 01 00 00 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 00
|
||||||
|
// ....
|
||||||
|
// 0x3F: 00
|
||||||
|
//
|
||||||
|
// Then at 0x40, there are 0x1000 bytes. I think there are 256
|
||||||
|
// bytes available for each of block. See comments in
|
||||||
|
// mempak_loadFromFile for more info.
|
||||||
fprintf(fptr, "123-456-STD");
|
fprintf(fptr, "123-456-STD");
|
||||||
|
|
||||||
|
fseek(fptr, DEXDRIVE_COMMENT_OFFSET, SEEK_SET);
|
||||||
|
for (i=0; i<MEMPAK_NUM_NOTES; i++) {
|
||||||
|
unsigned char tmp = 0;
|
||||||
|
fwrite(mpk->note_comments[i], 255, 1, fptr);
|
||||||
|
// I'm not sure about the exact convention of the
|
||||||
|
// original format. Is is that comments are zero-terminated,
|
||||||
|
// but if the length is 256 then non-terminated (implcit termination?)
|
||||||
|
//
|
||||||
|
// Just to make sure nothing crashes by loading a file generated
|
||||||
|
// by this tool, I make sure there is always a zero.
|
||||||
|
fwrite(&tmp, 1, 1, fptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
fseek(fptr, DEXDRIVE_DATA_OFFSET, SEEK_SET);
|
fseek(fptr, DEXDRIVE_DATA_OFFSET, SEEK_SET);
|
||||||
fwrite(mpk->data, sizeof(mpk->data), 1, fptr);
|
fwrite(mpk->data, sizeof(mpk->data), 1, fptr);
|
||||||
break;
|
break;
|
@ -1,5 +1,6 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
#include "mempak.h"
|
#include "mempak.h"
|
||||||
|
|
||||||
@ -25,7 +26,7 @@ int main(int argc, char **argv)
|
|||||||
{ "dst", required_argument, 0, 'd' },
|
{ "dst", required_argument, 0, 'd' },
|
||||||
{ }, // terminator
|
{ }, // terminator
|
||||||
};
|
};
|
||||||
const char *comment = "";
|
const char *comment = NULL;
|
||||||
int used_note_id = -1;
|
int used_note_id = -1;
|
||||||
int dst_id = -1;
|
int dst_id = -1;
|
||||||
|
|
||||||
@ -37,7 +38,7 @@ int main(int argc, char **argv)
|
|||||||
while(1) {
|
while(1) {
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
c = getopt_long(argc, argv, "f:h", long_options, NULL);
|
c = getopt_long(argc, argv, "f:hc:d:", long_options, NULL);
|
||||||
if (c==-1)
|
if (c==-1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -48,10 +49,17 @@ int main(int argc, char **argv)
|
|||||||
return 0;
|
return 0;
|
||||||
case 'c':
|
case 'c':
|
||||||
comment = optarg;
|
comment = optarg;
|
||||||
|
if (strlen(optarg) > (MAX_NOTE_COMMENT_SIZE-2)) {
|
||||||
|
fprintf(stderr, "Comment too long (%d characters max.)\n", (MAX_NOTE_COMMENT_SIZE-2));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
dst_id = atoi(optarg);
|
dst_id = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
|
case '?':
|
||||||
|
fprintf(stderr, "Unknown argument. Try -h\n");
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,6 +81,16 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
printf("Note imported and written to slot %d\n", used_note_id);
|
printf("Note imported and written to slot %d\n", used_note_id);
|
||||||
|
|
||||||
|
if (comment) {
|
||||||
|
if (mpk->file_format != MPK_FORMAT_N64) {
|
||||||
|
printf("Warning: Ignoring comment since it cannot be stored in %s file format. Use the N64 format instead.\n", mempak_format2string(mpk->file_format));
|
||||||
|
} else {
|
||||||
|
strncpy(mpk->note_comments[used_note_id], comment, MAX_NOTE_COMMENT_SIZE);
|
||||||
|
mpk->note_comments[used_note_id][256] = 0;
|
||||||
|
mpk->note_comments[used_note_id][255] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (0 != mempak_saveToFile(mpk, pakfile, mpk->file_format)) {
|
if (0 != mempak_saveToFile(mpk, pakfile, mpk->file_format)) {
|
||||||
fprintf(stderr, "could not write to memory pak file\n");
|
fprintf(stderr, "could not write to memory pak file\n");
|
||||||
}
|
}
|
BIN
tool/n64savetool/.nfs000000000025a4d700000004
Normal file
BIN
tool/n64savetool/.nfs000000000025a4d700000004
Normal file
Binary file not shown.
@ -1,42 +0,0 @@
|
|||||||
CC=gcc
|
|
||||||
LD=$(CC)
|
|
||||||
|
|
||||||
CFLAGS=-Wall -g --std=c99
|
|
||||||
LDFLAGS=-g
|
|
||||||
|
|
||||||
PREFIX=/usr/local
|
|
||||||
|
|
||||||
PROGRAMS=mempak_ls mempak_format mempak_extract_note mempak_insert_note mempak_rm mempak_convert
|
|
||||||
MEMPAKLIB_OBJS=mempak.o mempak_fs.o
|
|
||||||
|
|
||||||
.PHONY : clean install
|
|
||||||
|
|
||||||
all: $(PROGRAMS)
|
|
||||||
|
|
||||||
mempak_convert: mempak_convert.o $(MEMPAKLIB_OBJS)
|
|
||||||
$(LD) $^ $(LDFLAGS) -o $@
|
|
||||||
|
|
||||||
mempak_rm: mempak_rm.o $(MEMPAKLIB_OBJS)
|
|
||||||
$(LD) $^ $(LDFLAGS) -o $@
|
|
||||||
|
|
||||||
mempak_insert_note: mempak_insert_note.o $(MEMPAKLIB_OBJS)
|
|
||||||
$(LD) $^ $(LDFLAGS) -o $@
|
|
||||||
|
|
||||||
mempak_extract_note: mempak_extract_note.o $(MEMPAKLIB_OBJS)
|
|
||||||
$(LD) $^ $(LDFLAGS) -o $@
|
|
||||||
|
|
||||||
mempak_ls: mempak_ls.o $(MEMPAKLIB_OBJS)
|
|
||||||
$(LD) $^ $(LDFLAGS) -o $@
|
|
||||||
|
|
||||||
mempak_format: mempak_format.o $(MEMPAKLIB_OBJS)
|
|
||||||
$(LD) $^ $(LDFLAGS) -o $@
|
|
||||||
|
|
||||||
%.o: %.c %.h
|
|
||||||
$(CC) $(CFLAGS) -c $<
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f *.o $(PROGRAMS)
|
|
||||||
|
|
||||||
install:
|
|
||||||
@echo "Install not done yet. Sorry"
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user