notaz.gp2x.de
/
libpicofe.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gfx_cd finished, bugfixes
[libpicofe.git]
/
gp2x
/
940ctl.c
diff --git
a/gp2x/940ctl.c
b/gp2x/940ctl.c
index
48ebfa0
..
bcbb09b
100644
(file)
--- a/
gp2x/940ctl.c
+++ b/
gp2x/940ctl.c
@@
-20,6
+20,7
@@
extern volatile unsigned short *gp2x_memregs; /* from minimal library rlyeh */
\r
extern volatile unsigned long *gp2x_memregl;
\r
\r
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
static unsigned char *shared_mem = 0;
\r
static _940_data_t *shared_data = 0;
\r
_940_ctl_t *shared_ctl = 0;
\r
@@
-99,7
+100,13
@@
int YM2612Write_940(unsigned int a, unsigned int v)
\r
switch( a ) {
\r
case 0: /* address port 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
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
addr_A1 = 0;
\r
//ret=0;
\r
break;
\r
@@
-162,6
+169,8
@@
int YM2612Write_940(unsigned int a, unsigned int v)
break;
\r
\r
case 2: /* address port 1 */
\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
ST_address = v;
\r
addr_A1 = 1;
\r
//ret=0;
\r
@@
-186,7
+195,7
@@
int YM2612Write_940(unsigned int a, unsigned int v)
shared_ctl->writebuff1[writebuff_ptr++] = (a<<8)|v;
\r
}
\r
} else {
\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
}
\r
}
\r
\r
@@
-581,6
+590,7
@@
void mp3_start_play(FILE *f, int pos) // pos is 0-1023
if (CHECK_BUSY(JOB940_MP3DECODE)) wait_busy_940(JOB940_MP3DECODE);
\r
add_job_940(JOB940_INVALIDATE_DCACHE);
\r
}
\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
}
\r
\r
// seek..
\r