Support multiline codes
authoriLag <ilagdoesntcheckthisemail@gmail.com>
Wed, 22 Mar 2017 21:37:18 +0000 (14:37 -0700)
committeriLag <ilagdoesntcheckthisemail@gmail.com>
Wed, 22 Mar 2017 21:37:18 +0000 (14:37 -0700)
platform/libretro/libretro.c

index 73733fd..1b914d5 100644 (file)
@@ -713,7 +713,7 @@ void retro_cheat_reset(void)
        PicoPatchUnload();
 }
 
-void retro_cheat_set(unsigned index, bool enabled, const char *buff)
+void retro_cheat_set(unsigned index, bool enabled, const char *code)
 {
        struct patch
        {
@@ -721,11 +721,16 @@ void retro_cheat_set(unsigned index, bool enabled, const char *buff)
                unsigned short data;
        } pt;
        int array_len = 0;
+       char *buff;
 
        //TODO: Split multi-line codes properly
+       buff = strtok(code,"+");
 
+       while (buff)
+       {
                decode(buff, &pt);
-               if (pt.addr == (unsigned int)-1 || pt.data == (unsigned short)-1){
+               if (pt.addr == (unsigned int)-1 || pt.data == (unsigned short)-1)
+               {
                        log_cb(RETRO_LOG_ERROR,"CHEATS: Invalid code: %s\n",buff);
                        return;
                }
@@ -754,6 +759,7 @@ void retro_cheat_set(unsigned index, bool enabled, const char *buff)
                else
                        PicoPatches[PicoPatchCount].data_old = (unsigned short) m68k_read16(PicoPatches[PicoPatchCount].addr);
                PicoPatchCount++;
+       }
 }
 
 /* multidisk support */