romig@osu-dbs.UUCP (Steve ) (06/06/84)
I have a rather strange question. Is it possible to patch rogue in such a way that the probability of running into a party room is much increased? The reason I am asking is two-fold: I like playing with party rooms, and more importantly, I want to blow the socks off of someone here who is used to playing rogue with the 'arrow trap bug' (and winning with horrendous high scores). The next question I have then, is how does one go about patching rogue, or any program in general. I have never had reason to do anything like that, and haven't had much success in the two days I have spent trying to learn. Could someone let me in on the secrets? And where interesting things are in the rogue object file? Thanks... --- Steve Romig ...!cbosgd!osu-dbs!romig romig@ohio-state.csnet
tims@mako.UUCP (Tim Stoehr) (06/08/84)
Yes, it's quite possible to patch rogue. If you have a version with a wizard password, then a likely attack is to 'adb' rogue. First obtain a assembler listing on paper piping adb output to a file and line printing the file. Then find the strings "wizard's password: ", "sorry" and "you are now as smart as Ken Arnold ..." with adb in the data space of the rogue object. Write down the address of these strings and then 'grep' for them in the the assembler listing file. You will find that these string addresses are localized in the code, and you can see where they are being printed and why. You can either patch in an instruction to do something nice, or set a break-point, and then 'continue' at a convenient place. When I did this, I got the game to toggle me from wizard mode and back at the touch of the ^P key. Once wizard, you may create any object you want, go up and down at will, increase your experience and Hp, or just about anything. Once this is done, however, and you've explored the possibilities, the fun doesn't last very long. I'm sure other more subtle things can be done, like finding out where your strength is incremented, and add 10 instead. The same method mentioned above should work with other strings, although you may have to trace subroutine calls and returns. In any case, you must have your own readable, writable copy of rogue to do any of this. Good luck, and remember, cheating is the only way to beat that stupid game.