~toykeeper/flashlight-firmware/fsm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// tk-random.h: Smaller pseudo-random function(s).
// Copyright (C) 2015-2023 Selene ToyKeeper
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once

uint8_t pgm_rand() {
    static uint16_t offset = 255;
    // loop through ROM space, but avoid the first 256 bytes
    // because the beginning tends to have a big ramp which
    // doesn't look very random at all
    offset = ((offset + 1) & 0x3ff) | 0x0100;
    return pgm_read_byte(offset);
}