OSDN Git Service

final adjustment for 0.6.0
authornaruko <naruko@24ea1065-a21e-4ca1-99c9-f5125deb0858>
Sun, 20 Dec 2009 15:14:22 +0000 (15:14 +0000)
committernaruko <naruko@24ea1065-a21e-4ca1-99c9-f5125deb0858>
Sun, 20 Dec 2009 15:14:22 +0000 (15:14 +0000)
git-svn-id: svn+ssh://svn.osdn.net/svnroot/unagi@336 24ea1065-a21e-4ca1-99c9-f5125deb0858

13 files changed:
client/trunk/Makefile
client/trunk/anago/Makefile
client/trunk/anago/flashdevice.nut
client/trunk/anago/script_dump.c
client/trunk/anago/script_flash.c
client/trunk/file.mak
client/trunk/memory_manage.h
client/trunk/reader_kazzo.c
client/trunk/release/release.mak
client/trunk/release/unagi.cfg
client/trunk/script_engine.c
client/trunk/unagi.txt
client/trunk/version.h

index cab737b..42ec6a2 100644 (file)
@@ -1,11 +1,17 @@
 OBJ_HK = giveio.o reader_hongkongfc.o
 OBJ_HD = head/nesheader.o head/header.o file.o
-ARCHIVE_FILE = \
+SOURCE_UNAGI = \
        *.c *.h *.mak Makefile COPYING \
        debug/debug.mak profile/profile.mak release/release.mak \
        unagi.rc unagi.ico
-ARCHIVE_GZ = unagi_client.0.5.4.tar.gz
-ARCHIVE_ZIP = unagi054.zip
+SOURCE_ANAGO = \
+       Makefile anago.c flash_device.c progress.c reader_dummy.c \
+       script_common.c script_dump.c script_flash.c squirrel_wrap.c \
+       flash_device.h progress.h reader_dummy.h script_common.h  script_dump.h script_flash.h squirrel_wrap.h \
+       flashcore.nut flashdevice.nut \
+       anago_en.txt anago_ja.txt porting.txt
+ARCHIVE_GZ = unagi_client_source.0.6.0.tar.gz
+ARCHIVE_ZIP = unagi_client_windows_060.zip
 TARGET_DIR = debug
 TARGET_MAK = debug.mak
 ifeq ($(PROFILE),1)
@@ -38,8 +44,10 @@ nesheader.exe: $(OBJ_HD)
        $(CC) -o $@ $(OBJ_HD)
 gz:
        cd ..; \
-       tar cfz $(ARCHIVE_GZ) $(patsubst %,client/%,$(ARCHIVE_FILE))
+       tar cfz $(ARCHIVE_GZ) $(addprefix client/,$(SOURCE_UNAGI)) $(addprefix client/anago/,$(SOURCE_ANAGO))
 zip:
-       7za a $(ARCHIVE_ZIP) unagi.exe unagi.txt iodel.exe iodel.txt COPYING ../script/syntax.txt
+       7za a $(ARCHIVE_ZIP) \
+               unagi.exe unagi.txt iodel.exe iodel.txt COPYING ../script/syntax.txt \
+               $(addprefix anago/,anago.exe *.ad *.af anago_en.txt anago_ja.txt flashcore.nut flashdevice.nut dumpcore.nut)
        cd release; 7za a ../$(ARCHIVE_ZIP) unagi.cfg
        mv $(ARCHIVE_ZIP) ..
index abff188..c6af2c1 100644 (file)
@@ -3,7 +3,9 @@ LIBUSB = d:/dev/LibUSB-Win32
 SQUIRREL = ../SQUIRREL2
 KAZZO = ../../kazzo/firmware
 VPATH = ..
-CFLAGS = -g -O0 -Wall -Werror -I.. -I$(LIBUSB)/include -I$(SQUIRREL)/include -I$(KAZZO) -DDEBUG=1 -DANAGO=1
+#CFLAGS = -g -O0
+CFLAGS = -O2
+CFLAGS += -Wall -Werror -I.. -I$(LIBUSB)/include -I$(SQUIRREL)/include -I$(KAZZO) -DDEBUG=1 -DANAGO=1
 LDFLAG = -L. -L$(LIBUSB)/lib/gcc -L$(SQUIRREL)/lib
 CC = gcc
 OBJ = anago.o header.o crc32.o file.o \
index c49128a..2a79abf 100644 (file)
@@ -45,11 +45,12 @@ function flash_device_get(name)
                        id_manufacurer = 0x01, id_device = 0xa4,
                        command_mask = mask_get(10)
                },
-               ["AM29F002"] = {
+               //command mask is not written in datasheet!
+               ["PM29F002T"] = {
                        capacity = 2 * mega, pagesize = 1,
-                       erase_wait = 1000, erase_require = true,
-                       id_manufacurer = 0x01, id_device = 0xB0,
-                       command_mask = mask_get(11)
+                       erase_wait = 500, erase_require = true,
+                       id_manufacurer = 0x9d, id_device = 0x1d,
+                       command_mask = mask_get(10) //maybe A10-A0
                },
                //chip erase time is not written in datasheet!!
                ["MBM29F080A"] = {
index 3f25f0f..00b971c 100644 (file)
@@ -37,7 +37,7 @@ static SQInteger write(HSQUIRRELVM v, struct memory_driver *t)
 static SQInteger cpu_write(HSQUIRRELVM v)
 {
        struct dump_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -99,7 +99,7 @@ static SQInteger read(HSQUIRRELVM v, struct memory_driver *t, bool progress)
 static SQInteger cpu_read(HSQUIRRELVM v)
 {
        struct dump_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -111,7 +111,7 @@ static SQInteger cpu_read(HSQUIRRELVM v)
 static SQInteger ppu_read(HSQUIRRELVM v)
 {
        struct dump_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -131,7 +131,7 @@ static SQInteger ppu_ramfind(HSQUIRRELVM v)
        static const uint8_t test_str[testsize] = "pputest";
        uint8_t test_result[testsize];
 
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -157,7 +157,7 @@ static SQInteger ppu_ramfind(HSQUIRRELVM v)
 static SQInteger memory_new(HSQUIRRELVM v)
 {
        struct dump_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -176,7 +176,7 @@ static SQInteger memory_new(HSQUIRRELVM v)
 static SQInteger nesfile_save(HSQUIRRELVM v)
 {
        struct dump_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -210,7 +210,7 @@ static SQInteger nesfile_save(HSQUIRRELVM v)
 static SQInteger length_check(HSQUIRRELVM v)
 {
        struct dump_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -258,7 +258,7 @@ static SQInteger cpu_read_count(HSQUIRRELVM v)
        //length == 0 ¤Ï Âоݥ¢¥É¥ì¥¹¤ò¸Æ¤ó¤Ç¡¢¥Ð¥Ã¥Õ¥¡¤Ë¤¤¤ì¤Ê¤¤¡£mmc2, mmc4 ¤Ç»ÈÍѤ¹¤ë¡£
        static const struct range range_length = {0x0000, 0x4000};
        struct dump_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -270,7 +270,7 @@ static SQInteger ppu_read_count(HSQUIRRELVM v)
        static const struct range range_address = {0x0000, 0x2000};
        static const struct range range_length = {0x0001, 0x2000};
        struct dump_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
index 9b417cd..a060b2a 100644 (file)
@@ -39,7 +39,7 @@ struct anago_driver{
 static SQInteger vram_mirrorfind(HSQUIRRELVM v)
 {
        struct anago_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -76,7 +76,7 @@ static SQInteger command_set(HSQUIRRELVM v, struct anago_flash_order *t)
 static SQInteger cpu_command(HSQUIRRELVM v)
 {
        struct anago_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -85,7 +85,7 @@ static SQInteger cpu_command(HSQUIRRELVM v)
 static SQInteger ppu_command(HSQUIRRELVM v)
 {
        struct anago_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -105,7 +105,7 @@ static SQInteger write(HSQUIRRELVM v, struct anago_flash_order *t)
 static SQInteger cpu_write(HSQUIRRELVM v)
 {
        struct anago_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -125,7 +125,7 @@ static SQInteger erase_set(HSQUIRRELVM v, struct anago_flash_order *t, const cha
 static SQInteger cpu_erase(HSQUIRRELVM v)
 {
        struct anago_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -134,7 +134,7 @@ static SQInteger cpu_erase(HSQUIRRELVM v)
 static SQInteger ppu_erase(HSQUIRRELVM v)
 {
        struct anago_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -181,7 +181,7 @@ static bool program_compare(struct anago_flash_order *t)
 static SQInteger cpu_program_memory(HSQUIRRELVM v)
 {
        struct anago_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -190,7 +190,7 @@ static SQInteger cpu_program_memory(HSQUIRRELVM v)
 static SQInteger ppu_program_memory(HSQUIRRELVM v)
 {
        struct anago_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -211,7 +211,7 @@ static long erase_timer_get(struct anago_flash_order *t)
 static SQInteger erase_wait(HSQUIRRELVM v)
 {
        struct anago_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -257,7 +257,7 @@ static SQInteger program_main(HSQUIRRELVM v)
                return sq_throwerror(v, "argument number error");
        }
        struct anago_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -270,7 +270,7 @@ static SQInteger program_main(HSQUIRRELVM v)
        }
        SQInteger state_cpu = sq_getvmstate(co_cpu);
        SQInteger state_ppu = sq_getvmstate(co_ppu);
-       const long sleepms = d->compare == true ? 11 : 2; //W29C040 ¤Ç compare ¤ò¤¹¤ë¤È¡¢error ¤¬½Ð¤ë¤Î¤Ç½Ð¤Ê¤¤ÃͤËÄ´À° (¤ä¤Ã¤Ä¤±Âбþ)
+       const long sleepms = d->compare == true ? 6 : 2; //W29C040 ¤Ç compare ¤ò¤¹¤ë¤È¡¢error ¤¬½Ð¤ë¤Î¤Ç½Ð¤Ê¤¤ÃͤËÄ´À° (¤ä¤Ã¤Ä¤±Âбþ)
        
        progress_init();
        while((state_cpu != SQ_VMSTATE_IDLE) || (state_ppu != SQ_VMSTATE_IDLE)){
@@ -317,7 +317,7 @@ static SQInteger cpu_program_count(HSQUIRRELVM v)
        static const struct range range_address = {0x8000, 0x10000};
        static const struct range range_length = {0x0100, 0x4000};
        struct anago_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
@@ -329,7 +329,7 @@ static SQInteger ppu_program_count(HSQUIRRELVM v)
        static const struct range range_address = {0x0000, 0x2000};
        static const struct range range_length = {0x0100, 0x2000};
        struct anago_driver *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer *) &d);
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
index 0cf12a1..4d5c095 100644 (file)
@@ -1,3 +1,4 @@
+LIBUSB_PATH = d:/dev/LibUSB-Win32
 OBJ = \
        unagi.o header.o crc32.o \
        script_engine.o script_syntax.o \
@@ -8,4 +9,5 @@ OBJ = \
 TARGET = unagi.exe
 CC = gcc
 CFLAGS += -Wall -Werror -Wmissing-declarations -I..
-#CFLAGS += -I$(EZUSBDRV)
+CFLAGS = -I$(LIBUSB_PATH)/include -I.. -I../../kazzo/firmware
+LDFLAG = -L$(LIBUSB_PATH)/lib/gcc -lusb
index d438645..4c8b2ac 100644 (file)
@@ -1,14 +1,16 @@
 #ifndef _MEMORY_MANAGE_H_
 #define _MEMORY_MANAGE_H_
-void mm_init(void);
 void *mm_malloc(const char *file, int line, const char *function, int size);
 void mm_free(void *addr);
-void mm_end(void);
 #if DEBUG == 0
+  #define mm_init(a)
+  #define mm_end(a)
 #include <stdlib.h>
   #define Malloc(size) malloc(size)
   #define Free(addr) free(addr)
 #else
+  void mm_init(void);
+  void mm_end(void);
   #define Malloc(size) mm_malloc(__FILE__, __LINE__, __FUNCTION__, size)
   #define Free(addr) mm_free(addr)
 #endif
index 877a657..a488b7b 100644 (file)
@@ -113,9 +113,19 @@ static void kazzo_init(void)
        device_write(handle, REQUEST_PHI2_INIT, INDEX_IMPLIED, 0, 0, NULL);
 }
 
+static void write_memory(enum request r, long address, long length, const uint8_t *data)
+{
+       while(length != 0){
+               long l = length >= FLASH_PACKET_SIZE ? FLASH_PACKET_SIZE : length;
+               device_write(handle, r, INDEX_IMPLIED, address, l, data);
+               address += l;
+               data += l;
+               length -= l;
+       }
+}
 static void kazzo_cpu_write_6502(long address, long length, const uint8_t *data)
 {
-       device_write(handle, REQUEST_CPU_WRITE_6502, INDEX_IMPLIED, address, length, data);
+       write_memory(REQUEST_CPU_WRITE_6502, address, length, data);
 }
 /*static void kazzo_cpu_write_flash(long address, long data)
 {
@@ -124,7 +134,7 @@ static void kazzo_cpu_write_6502(long address, long length, const uint8_t *data)
 }*/
 static void kazzo_ppu_write(long address, long length, const uint8_t *data)
 {
-       device_write(handle, REQUEST_PPU_WRITE, INDEX_IMPLIED, address, length, data);
+       write_memory(REQUEST_PPU_WRITE, address, length, data);
 }
 
 static inline void pack_short_le(long l, uint8_t *t)
index 9ca2830..f395b24 100644 (file)
@@ -2,7 +2,7 @@ include ../file.mak
 CFLAGS += -O2 -DDEBUG=0 -DNDEBUG -fomit-frame-pointer 
 VPATH = ..
 $(TARGET): $(OBJ)
-       $(CC) -o $@ $(OBJ)
+       $(CC) -o $@ $(OBJ) $(LDFLAG)
        strip $@
 
 include ../rule.mak
index 26d2248..7a08fa8 100644 (file)
@@ -1,4 +1,5 @@
 #\8eg\97p\82·\82é\83n\81[\83h\82Ì\83R\83\81\83\93\83g\82ð\8aO\82µ\82Ä\82­\82¾\82³\82¢\r
+#DRIVER kazzo\r
 #DRIVER hongkongfc\r
 #DRIVER onajimi\r
 #hongkong fc \82Ì flash \82Ì\8f\91\82«\8d\9e\82Ý\82ª\82Å\82«\82È\82¢\8fê\8d\87\82Í\83R\83\81\83\93\83g\82ð\8aO\82µ\82Ä\r
index eb1280f..4b42ba5 100644 (file)
@@ -598,7 +598,7 @@ static int logical_check(const struct script *s, const struct st_config *c, stru
                                assert(r->cpu_ram.attribute == MEMORY_ATTR_WRITE);
                                break;
                        case MODE_RAM_WRITE:
-                               assert(r->cpu_ram.attribute = MEMORY_ATTR_READ);
+                               assert(r->cpu_ram.attribute == MEMORY_ATTR_READ);
                                break;
                        }
                        //length filter. 0 ¤Ï¤À¤á
index 722b5f2..162d9ab 100644 (file)
 famicom ROM cartridge utility - unagi
-client version 0.5.4
-by \89V\8aJ\94­\8b¦\93¯\91g\8d\87
-\8cö\8e®\83T\83C\83g http://unagi.sourceforge.jp/
-\8cf\8e¦\94     http://unagi.sourceforge.jp/t/bbs.html
-
---\82Í\82\82ß\82É--
-famicom ROM cartridge \82Ì\83f\81[\83^\93]\91\97\82ð\8ds\82¢\82Ü\82·\81\83n\81[\83h\83E\83F\83A\82Í\8d\91\93à\82Å\97L
-\96¼\82È2\8eí\97Þ\82É\91Î\89\9e\82µ\82Ä\82¢\82Ü\82·\81B
-
---\93Á\92¥--
-\91¼\82Ì\93Ç\82Ý\8fo\82µ\83v\83\8d\83O\83\89\83\80\82Å\82Í\83}\83b\83p\95Ê\82Ì\91Î\89\9e\82Í\83v\83\8d\83O\83\89\83\80\82É\93à\91 \82³\82ê\82Ä\82¨\82è\81A
-\96¢\91Î\89\9e\82Ì\83}\83b\83p\82Ì\92Ç\89Á\82ª\82Å\82«\82é\82Ì\82Í\83v\83\8d\83O\83\89\83}\82¾\82¯\82Å\82µ\82½\81Bunagi \82Å\82Í\83}\83b\83p
-\91Î\89\9e\82ð\83X\83N\83\8a\83v\83g\82É\8bL\8dÚ\82·\82é\82±\82Æ\82É\82æ\82Á\82Ä\83\86\81[\83U\81[\82ª\92Ç\89Á\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B
-\83o\83\93\83N\90Ø\82è\91Ö\82¦\82Ì\8ed\97l\82ð\82µ\82é\82±\82Æ\82É\82æ\82Á\82Ä\8bZ\8fp\93I\82È\8b»\96¡\82ª\82í\82­\82©\82à\82µ\82ê\82Ü\82¹\82ñ\81B
-
-\83R\83}\83\93\83h\83\89\83C\83\93\82Å\82Ì\96³\96¡\8a£\91\87\82È\83C\83\93\83^\83t\83F\81[\83X\82É\82æ\82è\83r\83M\83i\81[\82¨\92f\82è\82Æ\82È\82Á\82Ä
-\82¨\82è\82Ü\82·\81B
-
---\93®\8dì\8aÂ\8b«--
-\83p\83\89\83\8c\83\8b\83|\81[\83g\82Æ\93Ç\82Ý\8fo\82µ\83n\81[\83h\82ð\90Ú\91±\82µ\82½ Windows \8aÂ\8b«
-* Windows XP \82É\82Ä\93®\8dì\8am\94F\82µ\82Ä\82¢\82Ü\82·\81B\82½\82Ô\82ñ Win95 \82Ü\82Å\82È\82ç\91å\8fä\95v\81B
-* \83p\83\89\83\8c\83\8b\83|\81[\83g\83A\83h\83\8c\83X\82Í 0x0378 \8cÅ\92è\82Å\82·\81BUSB \90Ú\91±\82Ì\82à\82Ì\82Í\8eg\82¦\82é\82©\95ª
-  \82©\82è\82Ü\82¹\82ñ\81B
-
-GIVEIO.SYS \82ð\83C\83\93\83X\83g\81[\83\8b\82µ\82½\8aÂ\8b«
-* \83p\83b\83P\81[\83W\82É\82Í\8aÜ\82Ü\82ê\82Ä\82¢\82Ü\82¹\82ñ\82Ì\82Å\95Ê\93r\97p\88Ó\82µ\82Ä\82­\82¾\82³\82¢\81B
-
-cmd.exe, rxvt \82È\82Ç\82Ì\83R\83}\83\93\83h\83\89\83C\83\93\83V\83F\83\8b
-
---\83n\81[\83h\83E\83F\83A\82Ì\91I\91ð--
-\83N\83\89\83C\83A\83\93\83g\82É\82Â\82¢\82Ä\82¢\82é unagi.cfg \82ð\83e\83L\83X\83g\83G\83f\83B\83^\82Å\95Ò\8fW\82µ\82Ä\8eg\97p\82·
-\82é\83n\81[\83h\82ð\91I\82ñ\82Å\82­\82¾\82³\82¢\81B\8ds\93ª\82É # \82ª\82Â\82¢\82Ä\82¢\82é\82à\82Ì\82Í\96³\8e\8b\82³\82ê\82Ü\82·\81B
-
-== hongkong fc \82Å\82Ì\96â\91è == 
-\83L\83\83\83\89\83N\83^ROM/RAM \94»\92è\82Ì PPU_RAMFIND \82ª\90³\82µ\82­\93®\8dì\82µ\82È\82¢\8fê\8d\87\82â\83L\83\83\83\89\83N
-\83^ROM\97Ì\88æ\82Ì\8f\91\82«\8d\9e\82Ý\82ª\88À\92è\82µ\82È\82¢\8fê\8d\87\82Í\83R\83\81\83\93\83g\82ð\8aO\82µ\82Ä\8e\8e\82µ\82Ä\82Ý\82Ä\82­\82¾\82³
-\82¢\81B\8dª\96{\93I\82È\91Î\8f\88\95û\96@\82Í\95s\96¾\82Å\82·\81B
-
---\83R\83}\83\93\83h\83\89\83C\83\93\88ø\90\94--
+client version 0.6.0
+by 鰻開発協同組合
+公式サイト http://unagi.sourceforge.jp/
+掲示板     http://unagi.sourceforge.jp/t/bbs.html
+
+--はじめに--
+famicom ROM cartridge のデータ転送を行います。 ハードウェアは国内で有
+名な2種類に対応しています。
+
+--特徴--
+他の読み出しプログラムではマッパ別の対応はプログラムに内蔵されており、
+未対応のマッパの追加ができるのはプログラマだけでした。unagi ではマッパ
+対応をスクリプトに記載することによってユーザーが追加することができます。
+バンク切り替えの仕様をしることによって技術的な興味がわくかもしれません。
+
+コマンドラインでの無味乾燥なインタフェースによりビギナーお断りとなって
+おります。
+
+--動作環境--
+パラレルポートと読み出しハードを接続した Windows 環境
+* Windows XP にて動作確認しています。たぶん Win95 までなら大丈夫。
+* パラレルポートアドレスは 0x0378 固定です。USB 接続のものは使えるか分
+  かりません。
+USBと読み出しハードを接続した Windows 環境
+GIVEIO.SYS をインストールした環境
+* パッケージには含まれていませんので別途用意してください。
+
+cmd.exe, rxvt などのコマンドラインシェル
+
+--ハードウェアの選択--
+クライアントについている unagi.cfg をテキストエディタで編集して使用す
+るハードを選んでください。行頭に # がついているものは無視されます。
+
+== hongkong fc での問題 == 
+キャラクタROM/RAM 判定の PPU_RAMFIND が正しく動作しない場合やキャラク
+タROM領域の書き込みが安定しない場合はコメントを外して試してみてくださ
+い。根本的な対処方法は不明です。
+
+--コマンドライン引数--
 unagi.exe [mode] [script file] [target file] ...
 == d ROM DUMP MODE ==
-ROM \83C\83\81\81[\83W\82ð\8dì\90¬\82µ\82Ü\82·\81B
+ROM イメージを作成します。
 unagi.exe d [script file] [dump file] [flag] [mapper]
-script file - \91Î\89\9e\82·\82é\83}\83b\83p\82Ì ROM \83X\83N\83\8a\83v\83g\83t\83@\83C\83\8b\82ð\8ew\92è\82µ\82Ü\82·\81B
-dump file   - \8fo\97Í\82·\82é ROM \83C\83\81\81[\83W\83t\83@\83C\83\8b\82ð\8ew\92è\82µ\82Ü\82·\81B
-\88È\89º\82Í\81A\92Ê\8fí\82Í\95K\97v\82 \82è\82Ü\82¹\82ñ\81B
-flag        - \8fo\97Í\82·\82é\83w\83b\83_\82ð\90Ý\92è\82µ\82Ü\82·\81B\95¡\90\94\82Ì\8fê\8d\87\82Í\83X\83y\81[\83X\82ð\82¢\82ê\82¸\82É              \8bL\8fq\82µ\82Ü\82·\81B
-  S \83J\81[\83g\83\8a\83b\83W\82É backup RAM \82ª\82Â\82¢\82Ä\82¢\82é\8fê\8d\87
-  V \83X\83N\83\8a\83v\83g\82Ì\90Ý\92è\82ð\96³\8e\8b\82µ\82Ä mirroring \82ð Vertical \82É\82·\82é
-  H \83X\83N\83\8a\83v\83g\82Ì\90Ý\92è\82ð\96³\8e\8b\82µ\82Ä mirroring \82ð Horizonal \82É\82·\82é
-  _ mapper\95Ï\8dX\82¾\82¯\82ð\93K\97p\82·\82é\8fê\8d\87
-mapper      - \83X\83N\83\8a\83v\83g\82Ì\90Ý\92è\82ð\96³\8e\8b\82µ\82Ä\83}\83b\83p\94Ô\8d\86\82ð\90Ý\92è\82µ\82Ü\82·\81B
+script file - 対応するマッパの ROM スクリプトファイルを指定します。
+dump file   - 出力する ROM イメージファイルを指定します。
+以下は、通常は必要ありません。
+flag        - 出力するヘッダを設定します。複数の場合はスペースをいれずに              記述します。
+  S カートリッジに backup RAM がついている場合
+  V スクリプトの設定を無視して mirroring を Vertical にする
+  H スクリプトの設定を無視して mirroring を Horizonal にする
+  _ mapper変更だけを適用する場合
+mapper      - スクリプトの設定を無視してマッパ番号を設定します。
 
 == r RAM READ MODE ==
-\83o\83b\83N\83A\83b\83v RAM \83C\83\81\81[\83W\82ð PC \8fã\82É\8dì\90¬\82µ\82Ü\82·\81B
+バックアップ RAM イメージを PC 上に作成します。
 unagi.exe r [script file] [dump file]
-script file - \91Î\89\9e\82·\82é\83}\83b\83p\82Ì RAM \83X\83N\83\8a\83v\83g\83t\83@\83C\83\8b\82ð\8ew\92è\82µ\82Ü\82·\81B
-dump file   - \8fo\97Í\82·\82é RAM \83C\83\81\81[\83W\83t\83@\83C\83\8b\82ð\8ew\92è\82µ\82Ü\82·\81B
+script file - 対応するマッパの RAM スクリプトファイルを指定します。
+dump file   - 出力する RAM イメージファイルを指定します。
 
 == w RAM WRITE MODE ==
-\83o\83b\83N\83A\83b\83v RAM \83C\83\81\81[\83W\82ð\83J\81[\83g\83\8a\83b\83W\82Ö\93]\91\97\82µ\82Ü\82·\81B
+バックアップ RAM イメージをカートリッジへ転送します。
 unagi.exe w [script file] [ram file]
-script file - \91Î\89\9e\82·\82é\83}\83b\83p\82Ì RAM \83X\83N\83\8a\83v\83g\83t\83@\83C\83\8b\82ð\8ew\92è\82µ\82Ü\82·\81B
-ram file    - \93ü\97Í\82·\82é RAM \83C\83\81\81[\83W\83t\83@\83C\83\8b\82ð\8ew\92è\82µ\82Ü\82·\81B
+script file - 対応するマッパの RAM スクリプトファイルを指定します。
+ram file    - 入力する RAM イメージファイルを指定します。
 
 == f flashmemory/SRAM PROGRAM MODE ==
-\83J\81[\83g\83\8a\83b\83W\8fã\82Ì ROM \82ð flashmemory \82© SRAM \82É\8cð\8a·\82µ\82½\8fã\82Å\81AROM \83C\83\81\81[
-\83W\83f\81[\83^\82ð\91ã\91Ö\83f\83o\83C\83X\82É\93]\91\97\82·\82é\83\82\81[\83h\82Å\82·\81B\90§\8cÀ\82Í\91½\82¢\82Å\82·\82ª\81A\88ê\89\9e\93®\8dì
-\8eÀ\90Ñ\82ª\82 \82è\82Ü\82·\81B
-\8eÀ\8c±\97v\91f\82ª\91½\82¢\8eÀ\91\95\82Ì\82½\82ß\81A\8fÚ\8d×\82Í\8cÂ\95Ê\82É\96â\82¢\8d\87\82í\82¹\82Ä\82­\82¾\82³\82¢\81B
-email: unagi.kaihatu@gmail.com
-
---\83X\83N\83\8a\83v\83g\8ed\97l--
-ROM dump script \83p\83b\83P\81[\83W\82Ì syntax.txt \82ð\8eQ\8fÆ\82µ\82Ä\82­\82¾\82³\82¢\81B
-
---\83\89\83C\83Z\83\93\83X--
-unagi \83N\83\89\83C\83A\83\93\83g\82Ì\83o\83C\83i\83\8a\82Æ\83\\81[\83X\83R\81[\83h(\97á\8aO\97L\82è)\82Í\89º\8bL\82ª\93K\97p\82³\82ê\82Ü
-\82·\81Bunagi \83X\83N\83\8a\83v\83g\82Í sato_tiff \82ª\8dì\90¬\82µ\82½\82à\82Ì\82Í\89º\8bL\82ª\93K\97p\82³\82ê\82Ü\82·\81B
-GNU Lesser General Public License v2
-
-\97á\8aO\95¨
-- GIVEIO.SYS\83A\83N\83Z\83X\83\89\83C\83u\83\89\83\8a\82É\8aÜ\82Ü\82ê\82é giveio.c, giveio.h
-\82¦\82Ó\81E\82Ò\81[\81E\82\81[\81E\82¦\81[\81E\82Ï\81[\82­\8aÇ\97\9d\90l\82Ì\81u\82³\82Æ\82¤\81v\82³\82ñ\82Ì\82²\8cú\88Ó\82É\82æ\82è\83\\81[
-\83X\83R\81[\83h\82à\94z\95z\83\\81[\83X\82É\8aÜ\82ß\82Ä\82æ\82¢\8b\96\89Â\82ð\82¢\82½\82¾\82¢\82Ä\82¨\82è\82Ü\82·\81B\93ñ\8e\9f\94z\95z\82È\82Ç
-\82Ì\8eæ\82è\88µ\82¢\82Í\82³\82Æ\82¤\82³\82ñ\82Ì\8b\96\89Â\82ð\93¾\82Ä\82­\82¾\82³\82¢\81B
+カートリッジ上の ROM を flashmemory か SRAM に交換した上で、ROM イメー
+ジデータを代替デバイスに転送するモードです。制限は多いですが、一応動作
+実績があります。
+
+--スクリプト仕様--
+ROM dump script パッケージの syntax.txt を参照してください。
+
+--ライセンス--
+unagi クライアントのバイナリとソースコード(例外有り)は下記が適用されま
+す。unagi スクリプトは naruko が作成したものは下記が適用されます。
+GNU General Public License v2
+
+例外物
+- GIVEIO.SYSアクセスライブラリに含まれる giveio.c, giveio.h
+えふ・ぴー・じー・えー・ぱーく管理人の「さとう」さんのご厚意によりソー
+スコードも配布ソースに含めてよい許可をいただいております。二次配布など
+の取り扱いはさとうさんの許可を得てください。
 
 - GIVEIO.SYS
-\94z\95z\83p\83b\83P\81[\83W\82É\82à\8aÜ\82ß\82Ü\82¹\82ñ\82µ\81A\8dì\8eÒ\82ª\92N\82È\82Ì\82©\82à\82í\82©\82ç\82È\82¢\82Ì\82Å\83p\83b\83P\81[
-\83W\82É\8aÜ\82ß\82È\82¢\82Å\82­\82¾\82³\82¢\81B
+配布パッケージにも含めませんし、作者が誰なのかもわからないのでパッケー
+ジに含めないでください。
 
 - client_test.c
-\8eÀ\8c±\93I\82È\83\\81[\83X\82ª\93ü\82Á\82Ä\82¢\82é\82Ì\82Æ\81A\82È\82­\82Ä\82à RELEASE \83r\83\8b\83h\82Í\89Â\94\\82È\82±\82Æ\81A
-\96³\92f\93]\97p\82Å\82Ì\83g\83\89\83u\83\8b\82ð\96h\82®\82½\82ß\82É\94ñ\8cö\8aJ\82É\82µ\82Ü\82µ\82½\81B\8cÂ\95Ê\82É\97v\96]\82ª\82 \82ê\82Î
-\83\\81[\83X\82Í\8cö\8aJ\82µ\82Ü\82·\81B
-
---\8eÓ\8e«--
-* \8e\91\97¿\92ñ\8b\9f\82ð\82µ\82Ä\82­\82ê\82½ color \82³\82ñ, VirtuaNES \82Ì\83\\81[\83X, nesdev
-* GIVEIO.SYS\83A\83N\83Z\83X\83\89\83C\83u\83\89\83\8a\82Ì\82³\82Æ\82¤\82³\82ñ
-* \83n\81[\83h\83E\83F\83A\82ð\91Ý\82µ\82Ä\82­\82ê\82½\83J\83V\83I\83\93
-* \83A\83C\83R\83\93\82ð\95`\82¢\82Ä\82­\82ê\82½\82Ð\82ë\82Ð\82ë\82«\82³\82ñ
-* \83v\83\8d\83O\83\89\83~\83\93\83O\8aÂ\8b«\82Ì mingw \82Æ rxvt
-* \8ae\8eí\8eÀ\8c±\82É\8b¦\97Í\82µ\82Ä\82­\82¾\82³\82Á\82Ä\82¢\82é\82Î\82­\82Ä\82ñ\82³\82ñ
+実験的なソースが入っているのと、なくても RELEASE ビルドは可能なこと、
+無断転用でのトラブルを防ぐために非公開にしました。個別に要望があれば
+ソースは公開します。
+
+--謝辞--
+* 資料提供をしてくれた color さん, VirtuaNES のソース, nesdev
+* GIVEIO.SYSアクセスライブラリのさとうさん
+* ハードウェアを貸してくれたカシオン
+* アイコンを描いてくれたひろひろきさん
+* プログラミング環境の mingw と rxvt
+* 各種実験に協力してくださっているばくてんさん
+
+--使用ライブラリ--
+[LibUSB-Win32]
+Copyright (c) 2002-2004 Stephan Meyer, <ste_meyer@web.de>
+Copyright (c) 2000-2004 Johannes Erdfelt, <johannes@erdfelt.com>
+Copyright (c) Thomas Sailer, <sailer@ife.ee.ethz.ch>
+[opendevice.c]  (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH
index dd22aaa..068e437 100644 (file)
@@ -1,5 +1,5 @@
 //include from unagi.c only
-static const char STR_VERSION[] = "1.0.0 "
+static const char STR_VERSION[] = "0.6.0 "
 #if DEBUG==1
 "debug "
 #else