-all: anago.exe
+all: anago
LIBUSB = d:/dev/LibUSB-Win32
-SQUIRREL = ../SQUIRREL2
+SQUIRREL = ../../SQUIRREL2
KAZZO = ../../kazzo/firmware
VPATH = ..
-#CFLAGS = -g -O0
-CFLAGS = -O2 -DNDEBUG
+CFLAGS = -g -O0
+#CFLAGS = -O2 -DNDEBUG
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
reader_dummy.o reader_kazzo.o usb_device.o squirrel_wrap.o memory_manage.o
clean:
rm -f $(OBJ)
-anago.exe: $(OBJ)
+anago: $(OBJ)
g++ -o $@ $(LDFLAG) $(OBJ) -lusb -lsqstdlib -lsquirrel
script_flash.o: squirrel_wrap.h
#include <stdio.h>
#include <stdbool.h>
+#include <stdlib.h> //atoi()
#include "memory_manage.h"
#include "type.h"
#include "flash_device.h"
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
-#include <windows.h>
+#ifdef WIN32
+ #include <windows.h>
+#endif
#include "progress.h"
void progress_init(void)
}
void progress_draw(long program_offset, long program_count, long charcter_offset, long charcter_count)
{
- if(0){
+#ifdef WIN32
+ HANDLE c;
+ CONSOLE_SCREEN_BUFFER_INFO info;
+ c = GetStdHandle(STD_OUTPUT_HANDLE);
+ if(GetConsoleScreenBufferInfo(c, &info) == 0){
+ //command.com, cygwin shell, mingw shell
printf("\x1b[2A\x1b[35D");
}else{
- HANDLE c;
- CONSOLE_SCREEN_BUFFER_INFO info;
- c = GetStdHandle(STD_OUTPUT_HANDLE);
- if(GetConsoleScreenBufferInfo(c, &info) == 0){
- //command.com, cygwin shell, mingw shell
- printf("\x1b[2A\x1b[35D");
- }else{
- //cmd.exe
- info.dwCursorPosition.X = 0;
- info.dwCursorPosition.Y -= 2;
- SetConsoleCursorPosition(c, info.dwCursorPosition);
- }
+ //cmd.exe
+ info.dwCursorPosition.X = 0;
+ info.dwCursorPosition.Y -= 2;
+ SetConsoleCursorPosition(c, info.dwCursorPosition);
}
+#else
+ printf("\x1b[2A\x1b[35D");
+#endif
draw("program memory ", program_offset, program_count);
draw("charcter memory", charcter_offset, charcter_count);
fflush(stdout);
#include <assert.h>
#include <stdio.h>
+#include <string.h>
#include <squirrel.h>
#include <sqstdio.h>
#include <sqstdaux.h>
uint8_t (*const vram_connection)(void);
bool progress;
};
-static SQInteger write(HSQUIRRELVM v, struct memory_driver *t)
+static SQInteger write_memory(HSQUIRRELVM v, struct memory_driver *t)
{
long address, data;
SQRESULT r = qr_argument_get(v, 2, &address, &data);
if(SQ_FAILED(r)){
return r;
}
- return write(v, &d->cpu);
+ return write_memory(v, &d->cpu);
}
static void buffer_show(struct memory *t, long length)
progress_draw(d->cpu.memory.offset, d->cpu.memory.size, d->ppu.memory.offset, d->ppu.memory.size);
}
}
-static SQInteger read(HSQUIRRELVM v, struct memory_driver *t, bool progress)
+static SQInteger read_memory(HSQUIRRELVM v, struct memory_driver *t, bool progress)
{
long address, length;
SQRESULT r = qr_argument_get(v, 2, &address, &length);
if(SQ_FAILED(r)){
return r;
}
- r = read(v, &d->cpu, d->progress);
+ r = read_memory(v, &d->cpu, d->progress);
progress_show(d);
return r;
}
if(SQ_FAILED(r)){
return r;
}
- r = read(v, &d->ppu, d->progress);
+ r = read_memory(v, &d->ppu, d->progress);
progress_show(d);
return r;
}
#include <assert.h>
#include <stdio.h>
+#include <string.h>
#include <squirrel.h>
#include <sqstdio.h>
#include <sqstdaux.h>
}
return command_set(v, &d->order_ppu);
}
-static SQInteger write(HSQUIRRELVM v, struct anago_flash_order *t)
+static SQInteger write_memory(HSQUIRRELVM v, struct anago_flash_order *t)
{
long address, data;
SQRESULT r = qr_argument_get(v, 2, &address, &data);
if(SQ_FAILED(r)){
return r;
}
- return write(v, &d->order_cpu);
+ return write_memory(v, &d->order_cpu);
}
static SQInteger erase_set(HSQUIRRELVM v, struct anago_flash_order *t, const char *region)
{
if(timer_wait < timer_ppu){
timer_wait = timer_ppu;
}
- Sleep(timer_wait);
+ wait(timer_wait);
}else{
uint8_t s[2];
do{
- Sleep(2);
+ wait(2);
d->flash_status(s);
//ËÜÍè¤Î°Õ¿Þ¤«¤é¤Ç¤Ï¤³¤³¤Î¾ò·ï¼°¤Ï && ¤Ç¤Ï¤Ê¤¯ || ¤À¤¬¡¢Àè¤Ë erase ¤¬½ª¤ï¤Ã¤¿¥Ç¥Ð¥¤¥¹¤¬Æ°¤«¤»¤ë¤Î¤Ç»Ä¤·¤Æ¤ª¤¯
}while((s[0] != KAZZO_TASK_FLASH_IDLE) && (s[1] != KAZZO_TASK_FLASH_IDLE));
while((state_cpu != SQ_VMSTATE_IDLE) || (state_ppu != SQ_VMSTATE_IDLE)){
uint8_t s[2];
bool console_update = false;
- Sleep(sleepms);
+ wait(sleepms);
d->flash_status(s);
if(state_cpu != SQ_VMSTATE_IDLE && s[0] == KAZZO_TASK_FLASH_IDLE){
if(program_memoryarea(co_cpu, &d->order_cpu, d->compare, "program", &state_cpu, &console_update) == false){
#include <assert.h>
+#include <string.h>
#include <stdlib.h>
#include <usb.h>
#include <kazzo_request.h>
handle,
USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
r, address,
- index, data, length, TIMEOUT
+ index, (char *) data, length, TIMEOUT
);
if(cnt != length){
puts(__FUNCTION__);
handle,
USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT,
w, address,
- index, d, length, TIMEOUT
+ index, (char *) d, length, TIMEOUT
);
if(cnt != length){
puts(__FUNCTION__);
#ifndef _READER_MASTER_H_
#define _READER_MASTER_H_
#include "type.h"
-#include <windows.h>
+#ifdef WIN32
+ #include <windows.h>
+#else
+ #include <unistd.h>
+#endif
+
//C++ ¤Î Class ¤â¤É¤¤ò C ¤Ç¼ÂÁõ¤·¤Æ¤¤¤ë´¶¤¬Áý¤·¤Æ¤¤¿...
enum reader_control{
READER_OPEN, READER_CLOSE
if(msec == 0){
return;
}
+#ifdef WIN32
Sleep(msec);
+#else
+ usleep(msec * 1000);
+#endif
}
#endif
famicom ROM cartridge utility - unagi
-client version 0.6.0
+client version 0.6.x
by 鰻開発協同組合
公式サイト http://unagi.sourceforge.jp/
-掲示板 http://unagi.sourceforge.jp/t/bbs.html
--はじめに--
famicom ROM cartridge のデータ転送を行います。 ハードウェアは国内で有
usb_dev_handle *handle = NULL;
int errorCode = USBOPEN_ERR_NOTFOUND;
+ usb_init();
usb_find_busses();
usb_find_devices();
for(bus = usb_get_busses(); bus; bus = bus->next){