#include <fcntl.h>\r
#include <errno.h>\r
\r
-#include "940shared.h"\r
+#include "code940/940shared.h"\r
#include "gp2x.h"\r
#include "emu.h"\r
#include "menu.h"\r
printf("wait iterations: %i\n", i);\r
#else\r
for (i = 0; shared_ctl->busy && i < 0x10000; i++)\r
- spend_cycles(4*1024);\r
+ spend_cycles(8*1024); // tested to be best for mp3 dec\r
if (i < 0x10000) return;\r
\r
/* 940 crashed */\r
- printf("940 crashed (cnt: %i, wc: %i, ve: ", shared_ctl->loopc, shared_ctl->waitc);\r
+ printf("940 crashed (cnt: %i, ve: ", shared_ctl->loopc);\r
for (i = 0; i < 8; i++)\r
printf("%i ", shared_ctl->vstarts[i]);\r
printf(")\n");\r
}\r
\r
\r
-static void add_job_940(int job)\r
+static void add_job_940(int job0, int job1)\r
{\r
- shared_ctl->job = job;\r
+ shared_ctl->jobs[0] = job0;\r
+ shared_ctl->jobs[1] = job1;\r
shared_ctl->busy = 1;\r
gp2x_memregs[0x3B3E>>1] = 0xffff; // cause an IRQ for 940\r
}\r
\r
addr_A1 = old_A1;\r
\r
- add_job_940(JOB940_PICOSTATELOAD);\r
+ add_job_940(JOB940_PICOSTATELOAD, 0);\r
}\r
\r
\r
void YM2612Init_940(int baseclock, int rate)\r
{\r
printf("YM2612Init_940()\n");\r
- //printf("sizeof(*shared_data): %i (%x)\n", sizeof(*shared_data), sizeof(*shared_data));\r
- //printf("sizeof(*shared_ctl): %i (%x)\n", sizeof(*shared_ctl), sizeof(*shared_ctl));\r
+ printf("Mem usage: shared_data: %i, shared_ctl: %i\n", sizeof(*shared_data), sizeof(*shared_ctl));\r
\r
- Reset940(1);\r
+ Reset940(1, 2);\r
Pause940(1);\r
\r
gp2x_memregs[0x3B46>>1] = 0xffff; // clear pending DUALCPU interrupts for 940\r
\r
if (shared_mem == NULL)\r
{\r
- shared_mem = (unsigned char *) mmap(0, 0x210000, PROT_READ|PROT_WRITE, MAP_SHARED, memdev, 0x3000000);\r
+ shared_mem = (unsigned char *) mmap(0, 0x210000, PROT_READ|PROT_WRITE, MAP_SHARED, memdev, 0x2000000);\r
if(shared_mem == MAP_FAILED)\r
{\r
printf("mmap(shared_data) failed with %i\n", errno);\r
/* now cause 940 to init it's ym2612 stuff */\r
shared_ctl->baseclock = baseclock;\r
shared_ctl->rate = rate;\r
- shared_ctl->job = JOB940_YM2612INIT;\r
+ shared_ctl->jobs[0] = JOB940_INITALL;\r
+ shared_ctl->jobs[1] = 0;\r
shared_ctl->busy = 1;\r
\r
/* start the 940 */\r
- Reset940(0);\r
+ Reset940(0, 2);\r
Pause940(0);\r
\r
// YM2612ResetChip_940(); // will be done on JOB940_YM2612INIT\r
\r
internal_reset();\r
\r
- add_job_940(JOB940_YM2612RESETCHIP);\r
+ add_job_940(JOB940_YM2612RESETCHIP, 0);\r
}\r
\r
\r
shared_ctl->writebuffsel ^= 1;\r
shared_ctl->length = length;\r
shared_ctl->stereo = stereo;\r
- add_job_940(JOB940_YM2612UPDATEONE);\r
+ add_job_940(JOB940_YM2612UPDATEONE, 0);\r
//spend_cycles(512);\r
//printf("SRCPND: %08lx, INTMODE: %08lx, INTMASK: %08lx, INTPEND: %08lx\n",\r
// gp2x_memregl[0x4500>>2], gp2x_memregl[0x4504>>2], gp2x_memregl[0x4508>>2], gp2x_memregl[0x4510>>2]);\r