extern volatile unsigned short *gp2x_memregs; /* from minimal library rlyeh */\r
extern volatile unsigned long *gp2x_memregl;\r
\r
+extern int reset_timing;\r
static unsigned char *shared_mem = 0;\r
static _940_data_t *shared_data = 0;\r
_940_ctl_t *shared_ctl = 0;\r
\r
switch( a ) {\r
case 0: /* address port 0 */\r
+ if (!addr_A1 && ST_address == v)\r
+ return 0; /* address already selected, don't send this command to 940 */\r
ST_address = v;\r
+ /* don't send DAC or timer related address changes to 940 */\r
+ if (!addr_A1 && (v & 0xf0) == 0x20 &&\r
+ (v == 0x24 || v == 0x25 || v == 0x26 || v == 0x2a))\r
+ return 0;\r
addr_A1 = 0;\r
//ret=0;\r
break;\r
break;\r
\r
case 2: /* address port 1 */\r
+ if (addr_A1 && ST_address == v)\r
+ return 0;\r
ST_address = v;\r
addr_A1 = 1;\r
//ret=0;\r
shared_ctl->writebuff1[writebuff_ptr++] = (a<<8)|v;\r
}\r
} else {\r
- printf("warning: writebuff_ptr > 2047\n");\r
+ printf("warning: writebuff_ptr > 2047 ([%i] %02x)\n", a, v);\r
}\r
}\r
\r
if (loaded_mp3 != f)\r
{\r
// printf("loading mp3... "); fflush(stdout);\r
+ if (PicoMessage != NULL)\r
+ {\r
+ fseek(f, 0, SEEK_END);\r
+ if (ftell(f) > 2*1024*1024)\r
+ PicoMessage("Loading MP3...");\r
+ }\r
fseek(f, 0, SEEK_SET);\r
fread(mp3_mem, 1, MP3_SIZE_MAX, f);\r
// if (feof(f)) printf("done.\n");\r
if (CHECK_BUSY(JOB940_MP3DECODE)) wait_busy_940(JOB940_MP3DECODE);\r
add_job_940(JOB940_INVALIDATE_DCACHE);\r
}\r
+ reset_timing = 1;\r
}\r
\r
// seek..\r