comparison cdimage.c @ 2352:76dfad6a53b5

Fix bug in CD-ROM scrambling algorithm
author Michael Pavone <pavone@retrodev.com>
date Wed, 18 Oct 2023 23:27:14 -0700
parents 9f0c67e5c50a
children
comparison
equal deleted inserted replaced
2351:8f3cfb77f1e3 2352:76dfad6a53b5
7 #include "wave.h" 7 #include "wave.h"
8 8
9 uint8_t cdrom_scramble(uint16_t *lsfr, uint8_t data) 9 uint8_t cdrom_scramble(uint16_t *lsfr, uint8_t data)
10 { 10 {
11 data ^= *lsfr; 11 data ^= *lsfr;
12 uint16_t new_bit = *lsfr; 12 for (int i = 0; i < 8; i++)
13 *lsfr >>= 1; 13 {
14 new_bit = (new_bit ^ *lsfr) & 1; 14 uint16_t new_bit = *lsfr;
15 *lsfr |= new_bit << 14; 15 *lsfr >>= 1;
16 new_bit = (new_bit ^ *lsfr) & 1;
17 *lsfr |= new_bit << 14;
18 }
16 return data; 19 return data;
17 } 20 }
18 21
19 static char* cmd_start(char *cur) 22 static char* cmd_start(char *cur)
20 { 23 {