Sonic CD runs on GP2X
[libpicofe.git] / gp2x / 940ctl_ym2612.c
index d8a10b2..4dc320d 100644 (file)
@@ -250,9 +250,10 @@ static void wait_busy_940(void)
 }\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
@@ -276,7 +277,7 @@ void YM2612PicoStateLoad_940(void)
 \r
        addr_A1 = old_A1;\r
 \r
-       add_job_940(JOB940_PICOSTATELOAD);\r
+       add_job_940(JOB940_PICOSTATELOAD, 0);\r
 }\r
 \r
 \r
@@ -299,10 +300,9 @@ extern char **g_argv;
 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
@@ -312,7 +312,7 @@ void YM2612Init_940(int baseclock, int rate)
 \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
@@ -373,11 +373,12 @@ void YM2612Init_940(int baseclock, int rate)
        /* 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_YM2612INIT;\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
@@ -396,7 +397,7 @@ void YM2612ResetChip_940(void)
 \r
        internal_reset();\r
 \r
-       add_job_940(JOB940_YM2612RESETCHIP);\r
+       add_job_940(JOB940_YM2612RESETCHIP, 0);\r
 }\r
 \r
 \r
@@ -444,7 +445,7 @@ void YM2612UpdateOne_940(short *buffer, int length, int stereo)
        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