# Code Generator ## Briefing Code generator is a calculator shaped tool in companion with IGS GP1 board, for monitoring bookkeeping info, defusing the time bomb and adjusting RNG parameters, by deciphering the password generated by the RNG and generating new passwords for setting it up. This kind of device is mostly found in C/S series slot machines, but apprantally IGS GP1 is also using them. Each code generator is bind to a range of serial code of IGS GP1 board, thus it's only partially interchangeable between differnet boards. Obviously, games that aren't slot machine/redemption games won't make use of this device even if running on the GP1 board. **Note: the following content is based on how code generator works on C/S series slot machine. IGS GP1 may not use all the features, or use them in different ways.** ## Games Found Using This Device * 西遊爭霸/鬥戰勝佛 (MD401CN?) (Yuehua Software) * Trick Or Treat (M800CN) (Yuehua Software) * Ocean King 3: Monster Awaken (MD900US) `#DOC:Ocean King 3: Monster Awaken (MD900US) manual, revision 17-06-13` ## Time Bomb Time bomb is a way of enforcing revenue sharing when other methods such as contracts or e-cash are considered unfeasible or inappropriate. The owner of the machine could set a time bomb to be triggered after the machine has been running for a certain time period. When the time bomb is triggered, the machine will run into a lockdown state, with warning message "time extension required" displayed. To defuse this state, a "time extension" or "bookkeping report" command is required to be executed from the test menu. When executing these commands, a set of credential will be displayed and the machine will require a defuse password to be typed in. These credentials has to be typed into the code generator, which is kept by the owner rather than given to the tenant. After typing in the credential, the code generator deciphers bookkeeping infomation from the credential, and displays the revenue during this time period and password for defusing the time bomb. The tenant will only receive the password after his share is paid. After the correct password is typed in, the machine will turn back to its normal state. ## Adjusting RNG Parameters The test menu of IGS GP1 based slot machine (or at least for some games that make use of code generator) only displays current settings, but the settings cannot be changed on the machine. To change the settings, the serial number of the board has to be typed into the code generator, then parameters including coin to credit ratio, [RTP% & PARS](https://en.wikipedia.org/wiki/Slot_machine#Payout_percentage), time period for time bomb, etc. could be set up on it. After settings has been done, a password encrypted with current settings will be generated. This password has to be typed into the machine to update the parameters of the RNG. ## RNG Manipulation Sometimes a code generator will have functionalities to manipulate the RNG, including sudden tightening/loosing of RTP%, spiking/smoothing PARS, deterministic results, or executing other OEM predefined RNG routines. Just like adjusting RNG parameters, these functionalities are also sent to the RNG as passwords typed in from the machine. Despite these functionalities showing up on most of the code generators, whether the command will be accepted and executed successfully is determined by the game/RNG. ## Keypad layout
(LCD dot matrix screen)
147DEL
2580
369OK
 MOVE/+- 
## Hardware Specification ### Variation 1: `#DOC:Maxim DS5003 Datasheet Rev.0` **CPU:** Maxim DS5003 security-hardened microcontroller, Intel 8051 compatible, 16MHz ? **ROM:** 128KB SRAM as ROM **RAM:** 256 bytes fused in (128B direct addressing, 128B indirect addressing) **Power:** 2x AAA battery (master); Built in CR2032 (backup) **Others:** SRAM emergency clear signal - not sure if used in this device * It could be bricked if the CR2032 runs out or removed as the master SRAM will be wiped ! ### Variation 2: `#DOC:STC STC12C5A60S2 Datasheet version Jul. 19 2015` **CPU:** STC 12C5A60S2 microcontroller, Intel 8051 compatible, 35MHz max ("1T" microcontroller - equals to ~420MHz on original Intel 8051) **ROM:** 60KB fused in **RAM:** 1280 bytes fused in, 256B direct addressing, 1KB indirect addressing **Power:** 2x AAA battery ### Variation 3: `#DOC: STM32F100C8 Datasheet DocID16455 Rev.9 ` **CPU:** ST electronics STM32F100C8, 32MHz **ROM:** 128KB fused in **RAM:** 8KB SRAM fused in **Power:** 2x AAA battery