Format/typo check 2019/giles/README.md

This commit is contained in:
Cody Boone Ferguson committed 2023-12-19 12:22:38 -08:00
1 parent 48520aa50c
commit f25d431417
1 file changed
+7 -4
+7 -4
View File
@@ -51,11 +51,12 @@ under a free license.
This program has also been successfully compiled on Windows, with both the [Tiny
C Compiler](https://bellard.org/tcc/) and Microsoft's C/C++ compiler. However,
the latter reports warnings about loss of information when converting floats,
the latter reports warnings about loss of information when converting `float`s,
and that `void (*)()` and `void (*)(void)` are not the same thing.
Interesting fact: The size of the program from `./iocccsize -i` is 2019.
#### How to use:
```sh
@@ -98,6 +99,7 @@ print `Bad input file` or `Wave file must be 16 bits,1-2 channels.` depending on
what it thinks the problem is. If the output file cannot be opened, the program
will print `Can't open output file`.
### Assumptions:
1. The code is compiled using the C99 or C11 standard.
@@ -107,6 +109,7 @@ represents the number zero.
4. `int16_t` and `int32_t` are 2's-complement, `sizeof(int16_t) == 2` and
`sizeof(int32_t) == 4`.
### Obfuscations
The main obfuscation is that digital signal processing algorithms are inherently
@@ -143,8 +146,8 @@ to decipher it.
`#define`s are used to abbreviate the code, which has a side effect of making it
very slightly harder to read.
* `k` is just a general-purpose replacement for 16.
* `i` is the number of delay-lines to allocate and use (currently 24).
* `k` is just a general-purpose replacement for `16`.
* `i` is the number of delay-lines to allocate and use (currently `24`).
* `q` is an abbreviation for multiplying two elements of `w[]` together.
* `u()` is used to display percentages with proper rounding.
* `j()` imposes an upper limit on a floating-point value, and then negates it.
@@ -186,7 +189,7 @@ As many values as possible have been crammed into arrays. `float w[]` contains:
All of the strings are concatenated together and "encrypted" by breaking the
string into 4-byte chunks (by casting it to an `int32_t*`), and then XORing the
sequence of ints with a known numeric sequence. The "decryption" is not done
sequence of `int`s with a known numeric sequence. The "decryption" is not done
in-place, to avoid writing over the string constant.
`int32_t *c` is a pointer that points into `f[]`, except that it is often