notaz.gp2x.de
/
megadrive.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
0551910
)
megaed-sv: download memory command
author
notaz
<notasas@gmail.com>
Wed, 22 Oct 2014 01:06:24 +0000
(
04:06
+0300)
committer
notaz
<notasas@gmail.com>
Wed, 22 Oct 2014 01:07:09 +0000
(
04:07
+0300)
megaed-sv/main.c
patch
|
blob
|
blame
|
history
diff --git
a/megaed-sv/main.c
b/megaed-sv/main.c
index
d5a65a9
..
6486a05
100644
(file)
--- a/
megaed-sv/main.c
+++ b/
megaed-sv/main.c
@@
-308,10
+308,10
@@
void vbl(void)
}
static int usb_read_while_ready(OsRoutine *ed,
}
static int usb_read_while_ready(OsRoutine *ed,
- void *buf_, int maxlen)
+ void *buf_,
unsigned
int maxlen)
{
u8 *buf = buf_;
{
u8 *buf = buf_;
- int r = 0;
+
unsigned
int r = 0;
while (ed->usbRdReady() && r < maxlen)
buf[r++] = ed->usbReadByte();
while (ed->usbRdReady() && r < maxlen)
buf[r++] = ed->usbReadByte();
@@
-319,6
+319,28
@@
static int usb_read_while_ready(OsRoutine *ed,
return r;
}
return r;
}
+static int usb_read(OsRoutine *ed, void *buf_, unsigned int maxlen)
+{
+ u8 *buf = buf_;
+ unsigned int r = 0;
+
+ while (r < maxlen)
+ buf[r++] = ed->usbReadByte();
+
+ return r;
+}
+
+static int usb_write(OsRoutine *ed, const void *buf_, unsigned int maxlen)
+{
+ const u8 *buf = buf_;
+ unsigned int r = 0;
+
+ while (r < maxlen)
+ ed->usbWriteByte(buf[r++]);
+
+ return r;
+}
+
/*
* TH = 1 : ?1CBRLDU 3-button pad return value (not read)
* TH = 0 : ?0SA00DU 3-button pad return value
/*
* TH = 1 : ?1CBRLDU 3-button pad return value (not read)
* TH = 0 : ?0SA00DU 3-button pad return value
@@
-378,6
+400,29
@@
static int do_test(OsRoutine *ed, u8 b3)
return -1;
}
return -1;
}
+static int do_custom(OsRoutine *ed, u8 b3)
+{
+ struct {
+ unsigned int addr;
+ unsigned int size;
+ } d;
+
+ switch (b3)
+ {
+ case 'd':
+ usb_read(ed, &d, sizeof(d));
+ ed->usbWriteByte('k');
+ printf("sending %i bytes from %06x..\n", d.size, d.addr);
+ usb_write(ed, (void *)d.addr, d.size);
+ printf("done.\n");
+ return 1;
+ default:
+ break;
+ }
+
+ return -1;
+}
+
#define MTYPE_OS 0
#define MTYPE_MD 1
#define MTYPE_SSF 2
#define MTYPE_OS 0
#define MTYPE_MD 1
#define MTYPE_SSF 2
@@
-453,8
+498,13
@@
int main()
for (i = 0; i < PLANE_W * PLANE_H / 2; i++)
write32(GFX_DATA_PORT, 0);
for (i = 0; i < PLANE_W * PLANE_H / 2; i++)
write32(GFX_DATA_PORT, 0);
+ /* scroll planes */
+ write32(GFX_CTRL_PORT, GFX_WRITE_VSRAM_ADDR(0));
+ write32(GFX_DATA_PORT, 0);
+
/* note: relying on ED menu's font setup here.. */
/* note: relying on ED menu's font setup here.. */
+ printf("\n");
printf("version: %02x, start_hvc: %04x\n",
read8(0xa10001), start_hvc);
printf("ED os/fw: %x/%x\n\n", ed->osGetOsVersion(),
printf("version: %02x, start_hvc: %04x\n",
read8(0xa10001), start_hvc);
printf("ED os/fw: %x/%x\n\n", ed->osGetOsVersion(),
@@
-509,6
+559,17
@@
int main()
}
ed->usbWriteByte('k');
break;
}
ed->usbWriteByte('k');
break;
+ case 'x':
+ buf[2] = ed->usbReadByte();
+ ret = do_custom(ed, buf[2]);
+ if (ret == 1)
+ break;
+ if (ret != 0) {
+ d = 3;
+ goto bad_input;
+ }
+ ed->usbWriteByte('k');
+ break;
default:
d = 2;
goto bad_input;
default:
d = 2;
goto bad_input;