ym2612 stray sounds on save load fixed
[libpicofe.git] / gp2x / 940ctl.c
index f2e98a9..6c52cca 100644 (file)
@@ -1,3 +1,6 @@
+// Code for communication with ARM940 and control of it.\r
+// (c) Copyright 2007, Grazvydas "notaz" Ignotas\r
+\r
 #include <stdio.h>\r
 #include <stdlib.h>\r
 #include <string.h>\r
@@ -285,7 +288,7 @@ static void wait_busy_940(int job)
                gp2x_memregs[0x3b46>>1], gp2x_memregl[0x4500>>2], gp2x_memregl[0x4510>>2]);\r
        printf("last lr: %08x, lastjob: %i\n", shared_ctl->last_lr, shared_ctl->lastjob);\r
 \r
-       strcpy(menuErrorMsg, "940 crashed.");\r
+       strcpy(menuErrorMsg, "940 crashed, too much overclock?");\r
        engineState = PGS_Menu;\r
        crashed_940 = 1;\r
 }\r
@@ -310,6 +313,12 @@ void YM2612PicoStateLoad_940(void)
 {\r
        int i, old_A1 = addr_A1;\r
 \r
+       /* make sure JOB940_PICOSTATELOAD gets done before next JOB940_YM2612UPDATEONE */\r
+       add_job_940(JOB940_PICOSTATELOAD);\r
+       if (CHECK_BUSY(JOB940_PICOSTATELOAD)) wait_busy_940(JOB940_PICOSTATELOAD);\r
+\r
+       writebuff_ptr = 0;\r
+\r
        // feed all the registers and update internal state\r
        for(i = 0; i < 0x100; i++) {\r
                YM2612Write_940(0, i);\r
@@ -321,8 +330,6 @@ void YM2612PicoStateLoad_940(void)
        }\r
 \r
        addr_A1 = old_A1;\r
-\r
-//     add_job_940(JOB940_PICOSTATELOAD);\r
 }\r
 \r
 \r