SimuLook · Notes from the camera

What your Fujifilm actually stores when you save a recipe

Save a recipe into C1 on a Fujifilm and it feels like the camera wrote a small file somewhere. It did not. What it stored is about two dozen numbers, each living at its own address inside the camera, and a selector that says which of the seven slots those addresses currently refer to.

We know this because we spent a long time reading them.

The slot selector comes first

Everything about a custom slot goes through one control. Write the slot number to it — 1 through 7 — and every subsequent read or write applies to that slot. Read a value without setting the selector first and you get whichever slot the camera happens to be on.

That single detail explains something photographers notice and rarely have explained: why an app that reads all seven slots leaves your camera on a different slot than it started on. It has to move the selector to visit each one. A careful tool puts it back; a careless one does not.

Then the block

After the selector sits a contiguous run of properties, and each one carries a single setting. Film simulation. Dynamic range. Highlight tone, shadow tone. Colour, sharpness, clarity. The two Color Chrome controls. Grain. White balance and its two shift axes and, when white balance is on Kelvin, the temperature itself. Smooth skin. The two monochrome axes, which only mean anything when the simulation is one of the black and white ones.

On the X100VI that block holds 24 properties. We have identified 20 of them and can decode 16 into a value we would show you. The other eight we report as gaps.

That gap count is deliberate, and it is the part most worth explaining.

Why we show gaps instead of numbers

Four of those properties we cannot identify at all — we can see the value move when something in the menu changes, but not reliably enough to say which setting it belongs to. Four more we can place by position but have no rule for turning the stored number into a menu value.

We could put a number on screen for all eight. It would look complete. It would also be wrong in a way you would have no way to detect, because a plausible wrong number and a right one look identical on a phone screen.

So the app says eight gaps. A blank you can see is worth more than a number you cannot check.

The numbers are not the numbers

The stored value is rarely the value you set. Tone controls are the clean case: the camera stores tenths, so a highlight of −1 is stored as −10. Sharpness and colour work the same way. Once you know the rule it is arithmetic.

Grain is less tidy. Amount and size are one property, not two, so “weak, small” is a single number rather than a pair. And what you write is not what you read back: set grain to off and the camera stores a value that also encodes the size the slot was already on. We found that by writing a value, reading it back, and getting something we had never seen in any slot.

Noise reduction is the strange one, and it gets its own note.

What this buys you

Once the block is mapped, a cable is enough. An app can read what is in your slots, show it, save it, and — on a camera and firmware where every field has been proven by writing it and reading it back — put a recipe into a slot without you touching the menu.

The proving is the slow part. Mapping the block tells you where a setting lives. It does not tell you the camera will accept what you write there, and on this body it sometimes does not: some settings are locked while others are active, and the camera refuses with an error that blames the value rather than the lock. Each of those had to be found by being refused.

Which is why we are careful about which cameras we claim. Reading is calibrated per body. A Fujifilm we have not calibrated will connect, tell us its name, and show you nothing — because the alternative is showing you someone else’s numbers and calling them yours.


Written while building SimuLook, an app for reading and writing Fujifilm film simulation recipes. See which cameras are supported · Read the other notes