Ticket #9106: MI-SEGACD-Passcodes(2).patch

File MI-SEGACD-Passcodes(2).patch, 2.4 KB (added by SF/sanguinehearts, 14 years ago)

Updated patch

  • scumm/debugger.cpp

     
    7272        // Register commands
    7373        DCmd_Register("continue",  WRAP_METHOD(ScummDebugger, Cmd_Exit));
    7474        DCmd_Register("restart",   WRAP_METHOD(ScummDebugger, Cmd_Restart));
    75 
     75       
    7676        DCmd_Register("actor",     WRAP_METHOD(ScummDebugger, Cmd_Actor));
    7777        DCmd_Register("actors",    WRAP_METHOD(ScummDebugger, Cmd_PrintActor));
    7878        DCmd_Register("box",       WRAP_METHOD(ScummDebugger, Cmd_PrintBox));
     
    8888
    8989        if (_vm->_game.id == GID_LOOM)
    9090                DCmd_Register("drafts",  WRAP_METHOD(ScummDebugger, Cmd_PrintDraft));
    91 
     91        if (_vm->_game.id == GID_MONKEY && Common::kPlatformSegaCD)
     92                DCmd_Register("passcode",  WRAP_METHOD(ScummDebugger, Cmd_Passcode));
     93       
    9294        DCmd_Register("loadgame",  WRAP_METHOD(ScummDebugger, Cmd_LoadGame));
    9395        DCmd_Register("savegame",  WRAP_METHOD(ScummDebugger, Cmd_SaveGame));
    9496
     
    849851        return true;
    850852}
    851853
     854bool ScummDebugger::Cmd_Passcode(int argc, const char **argv) {
     855        if (argc > 1) {
     856                _vm->_bootParam = atoi(argv[1]);
     857                int args[16];
     858                memset(args, 0, sizeof(args));
     859                args[0] = _vm->_bootParam;
     860       
     861                _vm->runScript(61, 0, 0, args);
     862               
     863                if (_vm->_bootParam != _vm->_scummVars[411]){
     864                        DebugPrintf("Invalid Passcode\n");
     865                        return true;
     866                }
     867               
     868                _vm->_bootParam = 0;   
     869                _detach_now = true;
     870               
     871        } else {
     872                DebugPrintf("Use 'passcode <SEGA CD Passcode>'\n");
     873                return true;
     874        }
     875        return false;
     876}
     877
    852878bool ScummDebugger::Cmd_ResetCursors(int argc, const char **argv) {
    853879        _vm->resetCursors();
    854880
  • scumm/debugger.h

     
    4848        bool Cmd_LoadGame(int argc, const char **argv);
    4949        bool Cmd_SaveGame(int argc, const char **argv);
    5050        bool Cmd_Restart(int argc, const char **argv);
    51 
     51       
    5252        bool Cmd_PrintActor(int argc, const char **argv);
    5353        bool Cmd_PrintBox(int argc, const char **argv);
    5454        bool Cmd_PrintBoxMatrix(int argc, const char **argv);
     
    6161        bool Cmd_ImportRes(int argc, const char **argv);
    6262
    6363        bool Cmd_PrintDraft(int argc, const char **argv);
     64        bool Cmd_Passcode(int argc, const char **argv);
    6465
    6566        bool Cmd_Debug(int argc, const char **argv);
    6667        bool Cmd_DebugLevel(int argc, const char **argv);