Posted: Mon Sep 24, 2012 6:13 pm Post subject:
With regards to slot machines: (Total CE Noob here).. also sorry for the wall of text.
I'm not exactly sure what the slots being scripted changes for us, but I've been a little compulsive today since I couldn't sleep last night and I'm just hoping somebody will tell me that I did not waste my time. (At least it was fun if I did).
I did see the mention about the slots being dynamic/scripted.. so that scares me a bit. Although, if its scripted.. I assume that means there is code to look at?
Anyway, here is the method I used to compile the spreadsheet:
0. Spun both slot machines and removed their loot.
1. New Scan -> Unknown / 4 Bytes
2. Writable / Fast Scan On by default
3. Ran a First Scan and got a few billion results.
4. Changed Type to Unchanged and ran that a few times while shooting guns, moving, dropping guns, swapping guns, etc... anything to whittle down the list.
5. I run the slots again. Actually, ran them until the results were completely different than the first time. This means that none of the tiles from the first result could be in the next result.
6. Changed Type to "Changed" and hit "Next Scan".
7. Repeated steps 4 through 5 for a while till I got it all narrowed down to a list that was about a hundred or so.
8. At that point I started sorting the addresses into Groups. I would run the slots one at a time and see which addresses changed. Those would go into group with their respective machine (Slot 1 & Slot 2).
9. Started noticing patterns and quickly figured out that there were at least nine different addresses tied to each column. A few of them were unique to the each title proper (i.e. Hat, Cherry, Logo, etc..)
10. Sorta got stuck, which is when I just started compiling data. Eventually I had all but a few of the triple scenarios and more than enough mixed scenarios to figure out which column was tied to the remaining addresses.
What I do not know how to do (yet) is correctly grab pointers to the addresses and/or trace up through the stack. And I've been afraid of crashing or restarting so rather than experiment and try to learn.. I figure I would see if what I've already done is going to be useful or if I totally wasted my time.
Not sure if this will help at all.. if not.. oh well.. it was a good learning experience.