ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/src/Daodan.c
(Generate patch)

Comparing Daodan/src/Daodan.c (file contents):
Revision 465 by rossy, Sat Oct 17 08:47:09 2009 UTC vs.
Revision 466 by rossy, Sat Oct 17 11:49:49 2009 UTC

# Line 39 | Line 39 | bool patch_multibyte = false;
39   bool patch_cheattable = true;
40   bool patch_argb8888 = true;
41   bool patch_killvtune = true;
42 + bool patch_getcmdline = true;
43 + bool patch_disablecmdline = true;
44  
45   bool patch_safeprintf = true;
46   bool patch_daodandisplayenum = true;
# Line 173 | Line 175 | bool DDrPatch_Init()
175          if (patch_killvtune)
176                  DDrPatch_Byte  (OniExe + 0x00026340, 0xC3);
177          
178 +        // Disable Oni's internal CLrGetCommandLine function (to eventually replace it with our own)
179 +        if (patch_getcmdline)
180 +                DDrPatch_NOOP  (OniExe + 0x000d3280, 51);
181 +        
182 +        // Disable Oni's command line parser so it doesn't interfere with ours
183 +        if (patch_disablecmdline)
184 +                DDrPatch_Int32 (OniExe + 0x000d3570, 0xc3c03366);
185 +        
186          return true;
187   }
188  
# Line 193 | Line 203 | bool DDrIniCallback(char* section, bool
203                  else
204                  {
205                          ini_section = s_unknown;
206 <                        DDrStartupMessage("unrecognised ini section \"%s\"", section);
206 >                        DDrStartupMessage("unrecognised section \"%s\"", section);
207                  }
208          }
209          
# Line 202 | Line 212 | bool DDrIniCallback(char* section, bool
212                  case s_options:
213                          if (!stricmp(name, "usedaodanbsl"))
214                                  opt_usedaodanbsl = !stricmp(inifile_cleanstr(value), "true");
215 +                        else if (!stricmp(name, "debug"))
216 +                                AKgDebug_DebugMaps = !stricmp(inifile_cleanstr(value), "true");
217 +                        else if (!stricmp(name, "debugfiles"))
218 +                                BFgDebugFileEnable = !stricmp(inifile_cleanstr(value), "true");
219 +                        else if (!stricmp(name, "findsounds"))
220 +                                SSgSearchOnDisk = !stricmp(inifile_cleanstr(value), "true");
221 +                        else if (!stricmp(name, "ignore_private_data"))
222 +                                opt_ignore_private_data = !stricmp(inifile_cleanstr(value), "true");
223 +                        else if (!stricmp(name, "sound"))
224 +                                opt_sound = !stricmp(inifile_cleanstr(value), "true");
225 +                        else if (!stricmp(name, "switch"))
226 +                                M3gResolutionSwitch = !stricmp(inifile_cleanstr(value), "true");
227 +                        else
228 +                                DDrStartupMessage("unrecognised option \"%s\"", name);
229                          break;
230                  case s_patch:
231                          if (!stricmp(name, "fonttexturecache"))
# Line 236 | Line 260 | bool DDrIniCallback(char* section, bool
260                                  patch_argb8888 = !stricmp(inifile_cleanstr(value), "true");
261                          else if (!stricmp(name, "killvtune"))
262                                  patch_killvtune = !stricmp(inifile_cleanstr(value), "true");
263 +                        else if (!stricmp(name, "getcmdline"))
264 +                                patch_getcmdline = !stricmp(inifile_cleanstr(value), "true");
265 +                        else if (!stricmp(name, "disablecmdline"))
266 +                                patch_disablecmdline = !stricmp(inifile_cleanstr(value), "true");
267                          else if (!stricmp(name, "safeprintf"))
268                                  patch_safeprintf = !stricmp(inifile_cleanstr(value), "true");
269                          else if (!stricmp(name, "daodandisplayenum"))
# Line 401 | Line 429 | void ONICALL DDrGame_Init()
429   void __cdecl DDrMain(int argc, char* argv[])
430   {
431          DDrStartupMessage("daodan attached!");
432 +        
433 +        opt_ignore_private_data = false;
434 +        opt_sound = true;
435 +        
436          DDrConfig();
437 +        DDrStartupMessage("parsing command line...");
438 +        int i;
439 +        char* section;
440 +        char* option;
441 +        bool falseoption;
442 +        for (i = 1; i < argc; i ++)
443 +        {
444 +                if (argv[i][0] == '-')
445 +                {
446 +                        section = argv[i] + 1;
447 +                        if ((option = strchr(argv[i], '.')))
448 +                        {
449 +                                *option = '\0';
450 +                                falseoption = (option[1] == 'n' || option[1] == 'N') && (option[2] = 'o' || option[2] == 'O');
451 +                                if (i < (argc - 1) && argv[i + 1][0] != '-')
452 +                                        DDrIniCallback(section, true, option + (falseoption ? 3 : 1), argv[++i]);
453 +                                else
454 +                                        DDrIniCallback(section, true, option + (falseoption ? 3 : 1), (falseoption ? "false" : "true"));
455 +                                *option = '.';
456 +                        }
457 +                        else
458 +                        {
459 +                                falseoption = (section[0] == 'n' || section[0] == 'N') && (section[1] = 'o' || section[1] == 'O');
460 +                                ini_section = s_options;
461 +                                if (i < (argc - 1) && argv[i + 1][0] != '-')
462 +                                        DDrIniCallback(NULL, false, section + (falseoption ? 2 : 0), argv[++i]);
463 +                                else
464 +                                        DDrIniCallback(NULL, false, section + (falseoption ? 2 : 0), (falseoption ? "false" : "true"));
465 +                        }
466 +                }
467 +                else
468 +                {
469 +                        DDrStartupMessage("parse error \"%s\"", argv[i]);
470 +                        break;
471 +                }
472 +        }
473 +        DDrStartupMessage("finished parsing");
474          DDrPatch_Init();
475          
476          // Safe startup message printer

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)