Piñata Vision barcode/Use cost example

From PinataIsland.info, the Viva Piñata wiki
Jump to: navigation, search

This is a good illustration of how the data is obfuscated. Notice that the value bits are not only spread out across the card's columns, but that logical operations are used to also conceal some of the actual data's values. Yet, if you know what data is encoded on the card, it's possible to identify which bits are used to store that data.

Shown are several cards from the same obfuscation set. The barcode is displayed in hex, and also in binary, showing all 63 bits.

To the right of the barcode is the use cost for the card. This is the data that's encoded on the card as a value and magnitude. To the right of the use cost is the value, and the magnitude, both shown in binary. For the Horstachio egg, a use cost of 1400 is encoded as a value of 14 and a magnitude of 2. (14 x 10^2 = 14 x 100 = 1400).

Below the cards, are the bits which match up with the value and magnitude bits. These aren't guaranteed to be the actual bits where the values are stored, but happen to match up with the data that we're looking for. The more cards that are checked at one time, the more likely it is that the correct bits will be identified for a particular obfuscation set's data.

Example of identifying use cost bits

This is an old example, done by hand shortly after the game came out. Today, it's possible to completely automate the discovery process to search and identify data encoded within 20 or 30 similarly obfuscated cards in seconds.

      	                          6         5         4         3         2         1         
	           vector:     3210987654321098765432109876543210987654321098765432109876543210

Horstac egg  F90F9C5B277F8181  1111100100001111100111000101101100100111011111111000000110000001  1,400 0b0001110 0b010
Geckie 6     F9469A1B267FDE81  1111100101000110100110100001101100100110011111111101111010000001    990 0b1100011 0b001
Geckie 7     F9469F1B267F9381  1111100101000110100111110001101100100110011111111001001110000001    600 0b0111100 0b001
Sparrowmint  F9569A1B279F8781  1111100101010110100110100001101100100111100111111000011110000001    390 0b0100111 0b001
Badgesicle   F976995B267F9181  1111100101110110100110010101101100100110011111111001000110000001  2,200 0b0010110 0b010
Garlic	     F9AF9B5B23CFD381  1111100110101111100110110101101100100011110011111101001110000001    100 0b1100100 0b000

Value 2^6: bit 14
Value 2^5: bit 9 or 41
Value 2^4: bit 40 ^ bit 55
Value 2^3: bit 42
Value 2^2: bit 8, or inverted bit 11
Value 2^1: invert (bit 40 ^ bit 53 ^ bit 55)
Value 2^0: bit 10
Mag 2^1: inverted bits 9 or 41
Mag 2^0: inverted bit 38