I have another story:
A few years after my FCopy success story, I was approached by someone who asked me if I could hack slot machine software.
It was in Germany, where almost every pub had one or two of them: you would throw money in the amount of about a quarter of the USA, then it would launch three wheels, and if you were lucky with some kind of model, youād, then You have the choice to double or nothing to win the next game or get your current win. The goal of the game was to try to double your victory several times until you get into the āseriesā mode, where any subsequent victory, no matter how insignificant, will bring you a big payment (about 10 times your expenses for the game) .
The difficulty was knowing when to double and when not. Of course, for the "outsider" it was completely random. But it turned out that these German cars used simple pseudo-randomized tables in their ROMs. Now, if you watched the car play for several rounds, you could figure out where this ārandom table pointerā is and predict its next move. Thus, the player will know when to double and when to go, and ultimately lead him to a "big series of victories."
Now it was already commonplace when this man approached me. There was an underground scene that had access to ROMs on these machines, found tables and created software for computers, such as the C-64, to use to predict the next movement of the machine.
Then a new type of machine appeared, although it used a different algorithm: instead of using preliminary calc'd tables, he was doing something else, and not one of the resident crackers could figure it out. Thus, I was approached, being known as a genius from the moment of my fame FCopy.
So, I got a ROM. 16 KB, as usual. There is no information about what she did and how she works. I was alone. Even the code did not look familiar (I only knew 6502 and 8080). After some digging and querying, I found it to be 6809 (which, it seemed to me, is the most beautiful 8-bit processor, which has an analogy with the 680x0 processor, which was much more linear than the mess for the x86 family of commands).
By that time, I already had a 68000 computer (I worked for the Cheetah Computer company, which built and sold such a machine, with my own developer OS, and that was all) and was in Modula-2 programming. So I wrote a disassembler for 6809, which helped me in reverse engineering by finding routines, jumps, etc. Slow I got an idea of āāthe flow control of a gaming machine program. In the end, I found a code similar to a mathematical algorithm, and it became clear to me that this could be a random generation code.
Since I never had a formal education in computer science, until then I had no idea how a typical random case using mul, add and mod worked. But I remember that I saw something mentioned in the Modula-2 book, and then I realized what it was.
Now I could quickly find the code that would call it randomgen and find out which āeventsā lead to the randomgen iteration, which means that I knew how to predict the next iterations and their values āāduring the game.
It turned out that it was necessary to find out the current position of the random. I have never been good at abstract things like algebra. I knew someone who studied math and was also a programmer. When I called him, he quickly figured out how to solve this problem, and thought a lot about how easy it would be to determine the value of random seeds. I did not get anything. Well, I understood one thing: it will take a lot of time to accomplish this, and for the C-64 or any other 8-bit computer, it will take several hours, if not days, for it.
So, I decided to offer him 1000 DM (for that there was a lot of money then) if he could write me the assembler procedure in 68000. It didnāt take much time and I had a code that I could check on my 68000 computer. This usually takes 5 to 8 minutes, which was acceptable. So I was almost there.
Still, it was necessary to transfer the 68000 laptop to the pub where the gaming machine was located. My Gepard computer was clearly not a portable type. Fortunately, someone else I knew in Germany released as many as 68,000 computers on a small circuit board. For I / O, it had only serial communications (RS-232) and a parallel port (Centronics was the standard of the day). I could connect 9-bit batteries to it to make it work. Then I bought a Sharp PDA with a rubber keyboard and a 32-line, single-line display. Worked on batteries, which was my terminal. He had an RS-232 connector that I connected to the 68000 board. Sharp also had some kind of non-volatile memory that allowed me to store software for accidentally hacking 68000 to Sharp, transferring it on demand to a 68000 computer, which then calculated the initial value . Finally, I had a small Centronics printer that was printed on narrow thermal paper (the size of which was that cash registers use to print receipts). Consequently, as soon as 68,000 has the results, he will send a series of results for the upcoming games on the Sharp slot machine, which printed them on paper.
So, in order to release one of these slot machines, you have to work with two people: you start playing, record your results, you have the minimum number of games needed to calculate the seeds, one of you will go a car parked outside, turn on Sharp. enter the results, he will have 68,000 computer ratchets in 8 minutes, and a printed list of upcoming games has been published. Then all you needed was a tiny piece of paper, take it to your friend who saved the car, aligned the past results with the printout, and after no more than 2 minutes you were āsurprisedā to win all 100 seconds of the series. Then you played these 100 games, almost emptying the car (and if the car was empty before the 100 games were played, you had the right to wait for it to be refilled, perhaps even returning the next day, while the car was stopped while you do not come back).
It was not Las Vegas, so you could only get 400 DM from the car, but it was fast and sure money, and it was exciting. Some pub owners suspected us of fraud, but had nothing against us because of the laws at the time, and even when some called the police, the police were in our favor).
Of course, the slot manufacturer soon got it and tried to counteract it by shutting down these machines until new ROMs were installed. But the first few times they only changed the numbers of random numbers. We only needed to get new ROMs, and it took me a few minutes to find the new numbers and put them into my software.
So, this went on for some time, during which friends and I were browsed through several pubs of several cities in Germany, looking for those machines that we could crack.
In the end, however, the machine designer learned to āfixā it: until then, the random factor was only advanced at certain predictable points in time, for example. something like 4 times during the game, and again for the player by pressing the "double or nothing" button.
But then they finally changed it so that a random coefficient will be constantly polled, that is, we can no longer predict the next initial value exactly in time for the button to be pressed.
That was the end. However, trying to write a disassembler for this one crack only, finding key subroutines in 16KB of 8-bit CPU code, computing unknown algorithms, investing quite a lot of money to pay someone to develop code that I did not understand, finding elements for a portable high-speed computer featuring the 68000 blind processor with Sharp as a terminal and printer for convenient output and then actually emptying the machines themselves was one of the most exciting things I've ever o did with my programming skills.