From cad2f6832c46952ec2bf05785861adb9fd14dfcb Mon Sep 17 00:00:00 2001 From: Rangi Date: Fri, 6 Nov 2020 15:53:21 -0500 Subject: Replace pcm.py with pcm.c, removing the dependency on Python --- INSTALL.md | 8 ++- Makefile | 5 +- tools/Makefile | 2 +- tools/pcm.c | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 162 insertions(+), 10 deletions(-) create mode 100644 tools/pcm.c diff --git a/INSTALL.md b/INSTALL.md index 0d49fedc..73e1be31 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -39,7 +39,6 @@ Run setup and leave the default settings. At the "**Select Packages**" step, cho - `make` - `git` - `gcc-core` -- `python` Double click on the text that says "**Skip**" next to each package to select the most recent version to install. @@ -82,7 +81,7 @@ Open **Terminal** and enter the following commands, depending on which distro yo To install the software required for **pokeyellow**: ```bash -sudo apt-get install make gcc git python +sudo apt-get install make gcc git ``` Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.4.1** from source. @@ -92,7 +91,7 @@ Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) To install the software required for **pokeyellow**: ```bash -sudo zypper install make gcc git python +sudo zypper install make gcc git ``` Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.4.1** from source. @@ -102,7 +101,7 @@ Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) To install the software required for **pokeyellow**: ```bash -sudo pacman -S make gcc git python +sudo pacman -S make gcc git ``` Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/arch) for Arch Linux to install **rgbds 0.4.1**. @@ -133,7 +132,6 @@ If your distro is not listed here, try to find the required software in its repo - `gcc` (or `clang`) - `git` - `rgbds` -- `python` If `rgbds` is not available, you'll need to follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.4.1** from source. diff --git a/Makefile b/Makefile index 434a3192..52b6e875 100644 --- a/Makefile +++ b/Makefile @@ -27,9 +27,6 @@ RGBFIX ?= $(RGBDS)rgbfix RGBGFX ?= $(RGBDS)rgbgfx RGBLINK ?= $(RGBDS)rgblink -PYTHON := python -pcm := $(PYTHON) tools/pokemontools/pcm.py pcm - ### Build targets @@ -140,4 +137,4 @@ gfx/surfing_pikachu/surfing_pikachu_3.2bpp: tools/gfx += --trim-whitespace %.wav: ; %.pcm: %.wav - @$(pcm) $< + tools/pcm $< $@ diff --git a/tools/Makefile b/tools/Makefile index 13bab1fb..ca99b118 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -3,7 +3,7 @@ CC := gcc CFLAGS := -O3 -std=c99 -Wall -Wextra -tools := scan_includes gfx pkmncompress +tools := scan_includes gfx pkmncompress pcm all: $(tools) @: diff --git a/tools/pcm.c b/tools/pcm.c new file mode 100644 index 00000000..114fdd38 --- /dev/null +++ b/tools/pcm.c @@ -0,0 +1,157 @@ +#include +#include +#include +#include + +#define CHUNKID(b1, b2, b3, b4) \ + (uint32_t)((uint32_t)(b1) | ((uint32_t)(b2) << 8) | \ + ((uint32_t)(b3) << 16) | ((uint32_t)(b4) << 24)) + +size_t file_size(FILE *f) { + if (fseek(f, 0, SEEK_END) == -1) return 0; + long f_size = ftell(f); + if (f_size == -1) return 0; + if (fseek(f, 0, SEEK_SET) == -1) return 0; + return (size_t)f_size; +} + +int32_t get_uint16le(uint8_t *data, size_t size, size_t i) { + return i + 2 >= size ? -1 : + (int32_t)data[i] | ((int32_t)data[i+1] << 8); +} + +int64_t get_uint32le(uint8_t *data, size_t size, size_t i) { + return i + 4 >= size ? -1 : + (int64_t)data[i] | ((int64_t)data[i+1] << 8) | + ((int64_t)data[i+2] << 16) | ((int64_t)data[i+3] << 24); +} + +uint8_t *wav2pcm(uint8_t *wavdata, size_t wavsize, size_t *pcmsize) { + int64_t fourcc = get_uint32le(wavdata, wavsize, 0); + if (fourcc != CHUNKID('R', 'I', 'F', 'F')) { + fputs("WAV file does not start with 'RIFF'\n", stderr); + return NULL; + } + + int64_t waveid = get_uint32le(wavdata, wavsize, 8); + if (waveid != CHUNKID('W', 'A', 'V', 'E')) { + fputs("RIFF chunk does not start with 'WAVE'\n", stderr); + return NULL; + } + + size_t sample_offset = 0; + int64_t num_samples = 0; + + size_t riffsize = (size_t)get_uint32le(wavdata, wavsize, 4) + 8; + for (size_t i = 12; i < riffsize;) { + int64_t chunkid = get_uint32le(wavdata, wavsize, i); + int64_t chunksize = get_uint32le(wavdata, wavsize, i+4); + i += 8; + if (chunksize == -1) { + fputs("failed to read sub-chunk size\n", stderr); + return NULL; + } + + if (chunkid == CHUNKID('f', 'm', 't', ' ')) { + int32_t audio_format = get_uint16le(wavdata, wavsize, i); + if (audio_format != 1) { + fputs("WAV data is not PCM format\n", stderr); + return NULL; + } + + int32_t num_channels = get_uint16le(wavdata, wavsize, i+2); + if (num_channels != 1) { + fputs("WAV data is not mono\n", stderr); + return NULL; + } + + int32_t bits_per_sample = get_uint16le(wavdata, wavsize, i+14); + if (bits_per_sample != 8) { + fputs("WAV data is not 8-bit samples\n", stderr); + return NULL; + } + } + + else if (chunkid == CHUNKID('d', 'a', 't', 'a')) { + sample_offset = i; + num_samples = chunksize; + break; + } + + i += (size_t)chunksize; + } + + if (!num_samples) { + fputs("WAV data has no PCM samples\n", stderr); + return NULL; + } + + // pack 8 WAV samples per PCM byte, clamping each to 0 or 1 + *pcmsize = (size_t)((num_samples + 7) / 8); + uint8_t *pcmdata = malloc(*pcmsize); + for (int64_t i = 0; i < num_samples; i += 8) { + uint8_t v = 0; + for (int64_t j = 0; j < 8 && i + j < num_samples; j++) { + v |= (wavdata[sample_offset + i + j] > 0x80) << (7 - j); + } + pcmdata[i / 8] = v; + } + + return pcmdata; +} + +int main(int argc, char *argv[]) +{ + if (argc != 3) { + fprintf(stderr, "Usage: %s infile.wav outfile.pcm\n", argv[0]); + return EXIT_FAILURE; + } + + char *wavname = argv[1]; + char *pcmname = argv[2]; + + FILE *wavfile = fopen(wavname, "rb"); + if (!wavfile) { + fprintf(stderr, "failed to open for reading: '%s'\n", wavname); + return EXIT_FAILURE; + } + + size_t wavsize = file_size(wavfile); + if (!wavsize) { + fclose(wavfile); + fprintf(stderr, "failed to get file size: '%s'\n", wavname); + return EXIT_FAILURE; + } + + uint8_t *wavdata = malloc(wavsize); + size_t readsize = fread(wavdata, 1, wavsize, wavfile); + fclose(wavfile); + if (readsize != wavsize) { + fprintf(stderr, "failed to read: '%s'\n", wavname); + return EXIT_FAILURE; + } + + size_t pcmsize; + uint8_t *pcmdata = wav2pcm(wavdata, wavsize, &pcmsize); + free(wavdata); + if (!pcmdata) { + fprintf(stderr, "failed to convert: '%s'\n", wavname); + return EXIT_FAILURE; + } + + FILE *pcmfile = fopen(pcmname, "wb"); + if (!pcmfile) { + fprintf(stderr, "failed to open for writing: '%s'\n", pcmname); + return EXIT_FAILURE; + } + + size_t writesize = fwrite(pcmdata, 1, pcmsize, pcmfile); + free(pcmdata); + fclose(pcmfile); + if (writesize != pcmsize) { + fprintf(stderr, "failed to write: '%s'\n", pcmname); + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; +} -- cgit v1.3.1-sl0p From dcf4db946169c31c7224285662e57d6173a659a6 Mon Sep 17 00:00:00 2001 From: Rangi Date: Fri, 6 Nov 2020 16:11:18 -0500 Subject: Fix #5: create the unused trailing PCM bytes from WAV data --- audio/pikachu_cries.asm | 54 +++++---------------------------- audio/pikachu_cries/pikachu_cry_1.wav | Bin 18660 -> 18668 bytes audio/pikachu_cries/pikachu_cry_10.wav | Bin 65572 -> 65580 bytes audio/pikachu_cries/pikachu_cry_11.wav | Bin 14628 -> 14636 bytes audio/pikachu_cries/pikachu_cry_12.wav | Bin 27684 -> 27692 bytes audio/pikachu_cries/pikachu_cry_13.wav | Bin 39972 -> 39980 bytes audio/pikachu_cries/pikachu_cry_14.wav | Bin 50404 -> 50412 bytes audio/pikachu_cries/pikachu_cry_15.wav | Bin 42020 -> 42028 bytes audio/pikachu_cries/pikachu_cry_16.wav | Bin 42212 -> 42220 bytes audio/pikachu_cries/pikachu_cry_17.wav | Bin 17188 -> 17196 bytes audio/pikachu_cries/pikachu_cry_18.wav | Bin 30820 -> 30828 bytes audio/pikachu_cries/pikachu_cry_19.wav | Bin 45476 -> 45484 bytes audio/pikachu_cries/pikachu_cry_2.wav | Bin 13860 -> 13868 bytes audio/pikachu_cries/pikachu_cry_20.wav | Bin 65572 -> 65580 bytes audio/pikachu_cries/pikachu_cry_21.wav | Bin 65540 -> 65548 bytes audio/pikachu_cries/pikachu_cry_22.wav | Bin 51492 -> 51500 bytes audio/pikachu_cries/pikachu_cry_23.wav | Bin 30436 -> 30444 bytes audio/pikachu_cries/pikachu_cry_24.wav | Bin 57700 -> 57708 bytes audio/pikachu_cries/pikachu_cry_25.wav | Bin 29156 -> 29164 bytes audio/pikachu_cries/pikachu_cry_26.wav | Bin 27876 -> 27884 bytes audio/pikachu_cries/pikachu_cry_27.wav | Bin 23268 -> 23276 bytes audio/pikachu_cries/pikachu_cry_28.wav | Bin 37476 -> 37484 bytes audio/pikachu_cries/pikachu_cry_29.wav | Bin 24932 -> 24940 bytes audio/pikachu_cries/pikachu_cry_3.wav | Bin 20644 -> 20652 bytes audio/pikachu_cries/pikachu_cry_30.wav | Bin 9636 -> 9644 bytes audio/pikachu_cries/pikachu_cry_31.wav | Bin 15396 -> 15404 bytes audio/pikachu_cries/pikachu_cry_32.wav | Bin 11364 -> 11372 bytes audio/pikachu_cries/pikachu_cry_33.wav | Bin 26020 -> 26028 bytes audio/pikachu_cries/pikachu_cry_34.wav | Bin 43108 -> 43116 bytes audio/pikachu_cries/pikachu_cry_35.wav | Bin 37220 -> 37228 bytes audio/pikachu_cries/pikachu_cry_36.wav | Bin 57124 -> 57132 bytes audio/pikachu_cries/pikachu_cry_37.wav | Bin 28644 -> 28652 bytes audio/pikachu_cries/pikachu_cry_38.wav | Bin 25444 -> 25452 bytes audio/pikachu_cries/pikachu_cry_39.wav | Bin 35940 -> 35948 bytes audio/pikachu_cries/pikachu_cry_4.wav | Bin 32740 -> 32748 bytes audio/pikachu_cries/pikachu_cry_40.wav | Bin 30884 -> 30892 bytes audio/pikachu_cries/pikachu_cry_41.wav | Bin 49380 -> 49388 bytes audio/pikachu_cries/pikachu_cry_42.wav | Bin 44068 -> 44076 bytes audio/pikachu_cries/pikachu_cry_5.wav | Bin 33316 -> 33324 bytes audio/pikachu_cries/pikachu_cry_6.wav | Bin 37028 -> 37036 bytes audio/pikachu_cries/pikachu_cry_7.wav | Bin 28004 -> 28012 bytes audio/pikachu_cries/pikachu_cry_8.wav | Bin 34404 -> 34412 bytes audio/pikachu_cries/pikachu_cry_9.wav | Bin 27172 -> 27180 bytes 43 files changed, 7 insertions(+), 47 deletions(-) diff --git a/audio/pikachu_cries.asm b/audio/pikachu_cries.asm index 1f6bc2c4..4ccc6181 100644 --- a/audio/pikachu_cries.asm +++ b/audio/pikachu_cries.asm @@ -1,212 +1,172 @@ pcm: MACRO - dw .End - .Start -.Start: +; All of the pcm data has one trailing byte that is never processed. + dw .End - .Start - 1 +.Start \1 -.End: +.End ENDM -; All of the pcm data has one trailing byte that is never processed. - SECTION "Pikachu Cries 1", ROMX PikachuCry1:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_1.pcm" - db $77 ; unused PikachuCry2:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_2.pcm" - db $77 ; unused PikachuCry3:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_3.pcm" - db $03 ; unused PikachuCry4:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_4.pcm" - db $e0 ; unused SECTION "Pikachu Cries 2", ROMX PikachuCry5:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_5.pcm" - db $77 ; unused PikachuCry6:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_6.pcm" - db $77 ; unused PikachuCry7:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_7.pcm" - db $ff ; unused SECTION "Pikachu Cries 3", ROMX PikachuCry8:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_8.pcm" - db $f7 ; unused PikachuCry9:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_9.pcm" - db $f3 ; unused PikachuCry10:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_10.pcm" - db $ff ; unused SECTION "Pikachu Cries 4", ROMX PikachuCry11:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_11.pcm" - db $77 ; unused PikachuCry12:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_12.pcm" - db $ff ; unused PikachuCry13:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_13.pcm" - db $f0 ; unused SECTION "Pikachu Cries 5", ROMX PikachuCry14:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_14.pcm" - db $fc ; unused PikachuCry15:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_15.pcm" - db $77 ; unused + SECTION "Pikachu Cries 6", ROMX PikachuCry16:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_16.pcm" - db $e7 ; unused PikachuCry18:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_18.pcm" - db $00 ; unused PikachuCry22:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_22.pcm" - db $7e ; unused SECTION "Pikachu Cries 7", ROMX PikachuCry20:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_20.pcm" - db $07 ; unused PikachuCry21:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_21.pcm" - db $ff ; unused SECTION "Pikachu Cries 8", ROMX PikachuCry19:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_19.pcm" - db $06 ; unused PikachuCry24:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_24.pcm" - db $e0 ; unused PikachuCry26:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_26.pcm" - db $00 ; unused + SECTION "Pikachu Cries 9", ROMX PikachuCry17:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_17.pcm" - db $00 ; unused PikachuCry23:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_23.pcm" - db $00 ; unused PikachuCry25:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_25.pcm" - db $03 ; unused SECTION "Pikachu Cries 10", ROMX PikachuCry27:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_27.pcm" - db $ff ; unused PikachuCry28:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_28.pcm" - db $1b ; unused PikachuCry29:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_29.pcm" - db $87 ; unused PikachuCry30:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_30.pcm" - db $00 ; unused PikachuCry31:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_31.pcm" - db $00 ; unused + SECTION "Pikachu Cries 11", ROMX PikachuCry32:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_32.pcm" - db $ff ; unused PikachuCry33:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_33.pcm" - db $1f ; unused PikachuCry34:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_34.pcm" - db $01 ; unused PikachuCry41:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_41.pcm" - db $9b ; unused SECTION "Pikachu Cries 12", ROMX PikachuCry35:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_35.pcm" - db $00 ; unused PikachuCry36:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_36.pcm" - db $01 ; unused PikachuCry39:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_39.pcm" - db $0f ; unused SECTION "Pikachu Cries 13", ROMX PikachuCry37:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_37.pcm" - db $3f ; unused PikachuCry38:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_38.pcm" - db $ff ; unused PikachuCry40:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_40.pcm" - db $ff ; unused PikachuCry42:: pcm INCBIN "audio/pikachu_cries/pikachu_cry_42.pcm" - db $00 ; unused diff --git a/audio/pikachu_cries/pikachu_cry_1.wav b/audio/pikachu_cries/pikachu_cry_1.wav index 98714511..4d384ac7 100644 Binary files a/audio/pikachu_cries/pikachu_cry_1.wav and b/audio/pikachu_cries/pikachu_cry_1.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_10.wav b/audio/pikachu_cries/pikachu_cry_10.wav index e51a2979..452def52 100644 Binary files a/audio/pikachu_cries/pikachu_cry_10.wav and b/audio/pikachu_cries/pikachu_cry_10.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_11.wav b/audio/pikachu_cries/pikachu_cry_11.wav index 44eece5a..39b6f5c0 100644 Binary files a/audio/pikachu_cries/pikachu_cry_11.wav and b/audio/pikachu_cries/pikachu_cry_11.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_12.wav b/audio/pikachu_cries/pikachu_cry_12.wav index cad90cfe..6bdcd74b 100644 Binary files a/audio/pikachu_cries/pikachu_cry_12.wav and b/audio/pikachu_cries/pikachu_cry_12.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_13.wav b/audio/pikachu_cries/pikachu_cry_13.wav index 981768b5..1bdbc65c 100644 Binary files a/audio/pikachu_cries/pikachu_cry_13.wav and b/audio/pikachu_cries/pikachu_cry_13.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_14.wav b/audio/pikachu_cries/pikachu_cry_14.wav index 3da9a543..38932232 100644 Binary files a/audio/pikachu_cries/pikachu_cry_14.wav and b/audio/pikachu_cries/pikachu_cry_14.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_15.wav b/audio/pikachu_cries/pikachu_cry_15.wav index 4ef874c3..7424d663 100644 Binary files a/audio/pikachu_cries/pikachu_cry_15.wav and b/audio/pikachu_cries/pikachu_cry_15.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_16.wav b/audio/pikachu_cries/pikachu_cry_16.wav index baddf17c..d703e1e9 100644 Binary files a/audio/pikachu_cries/pikachu_cry_16.wav and b/audio/pikachu_cries/pikachu_cry_16.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_17.wav b/audio/pikachu_cries/pikachu_cry_17.wav index f8bd9c73..9558a0ec 100644 Binary files a/audio/pikachu_cries/pikachu_cry_17.wav and b/audio/pikachu_cries/pikachu_cry_17.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_18.wav b/audio/pikachu_cries/pikachu_cry_18.wav index 69b2d3b8..08e7a1f3 100644 Binary files a/audio/pikachu_cries/pikachu_cry_18.wav and b/audio/pikachu_cries/pikachu_cry_18.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_19.wav b/audio/pikachu_cries/pikachu_cry_19.wav index a9429132..2bc077bd 100644 Binary files a/audio/pikachu_cries/pikachu_cry_19.wav and b/audio/pikachu_cries/pikachu_cry_19.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_2.wav b/audio/pikachu_cries/pikachu_cry_2.wav index d95343de..624bf2d4 100644 Binary files a/audio/pikachu_cries/pikachu_cry_2.wav and b/audio/pikachu_cries/pikachu_cry_2.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_20.wav b/audio/pikachu_cries/pikachu_cry_20.wav index 1c1842e4..44152d7c 100644 Binary files a/audio/pikachu_cries/pikachu_cry_20.wav and b/audio/pikachu_cries/pikachu_cry_20.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_21.wav b/audio/pikachu_cries/pikachu_cry_21.wav index d74ebc12..72b3dde6 100644 Binary files a/audio/pikachu_cries/pikachu_cry_21.wav and b/audio/pikachu_cries/pikachu_cry_21.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_22.wav b/audio/pikachu_cries/pikachu_cry_22.wav index 89fa5c77..9c764d04 100644 Binary files a/audio/pikachu_cries/pikachu_cry_22.wav and b/audio/pikachu_cries/pikachu_cry_22.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_23.wav b/audio/pikachu_cries/pikachu_cry_23.wav index ea092080..4d88f7ae 100644 Binary files a/audio/pikachu_cries/pikachu_cry_23.wav and b/audio/pikachu_cries/pikachu_cry_23.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_24.wav b/audio/pikachu_cries/pikachu_cry_24.wav index ec51d8cb..b7a31857 100644 Binary files a/audio/pikachu_cries/pikachu_cry_24.wav and b/audio/pikachu_cries/pikachu_cry_24.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_25.wav b/audio/pikachu_cries/pikachu_cry_25.wav index 77dac608..9b05e306 100644 Binary files a/audio/pikachu_cries/pikachu_cry_25.wav and b/audio/pikachu_cries/pikachu_cry_25.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_26.wav b/audio/pikachu_cries/pikachu_cry_26.wav index 9a9a0776..89dec6f3 100644 Binary files a/audio/pikachu_cries/pikachu_cry_26.wav and b/audio/pikachu_cries/pikachu_cry_26.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_27.wav b/audio/pikachu_cries/pikachu_cry_27.wav index 44a79ee0..be7d2168 100644 Binary files a/audio/pikachu_cries/pikachu_cry_27.wav and b/audio/pikachu_cries/pikachu_cry_27.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_28.wav b/audio/pikachu_cries/pikachu_cry_28.wav index ccf8bde2..1117c422 100644 Binary files a/audio/pikachu_cries/pikachu_cry_28.wav and b/audio/pikachu_cries/pikachu_cry_28.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_29.wav b/audio/pikachu_cries/pikachu_cry_29.wav index fb3375b3..df3ab87c 100644 Binary files a/audio/pikachu_cries/pikachu_cry_29.wav and b/audio/pikachu_cries/pikachu_cry_29.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_3.wav b/audio/pikachu_cries/pikachu_cry_3.wav index d3423966..20429bfa 100644 Binary files a/audio/pikachu_cries/pikachu_cry_3.wav and b/audio/pikachu_cries/pikachu_cry_3.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_30.wav b/audio/pikachu_cries/pikachu_cry_30.wav index 9bdafdc2..d420f509 100644 Binary files a/audio/pikachu_cries/pikachu_cry_30.wav and b/audio/pikachu_cries/pikachu_cry_30.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_31.wav b/audio/pikachu_cries/pikachu_cry_31.wav index 2853bc0b..658c48a2 100644 Binary files a/audio/pikachu_cries/pikachu_cry_31.wav and b/audio/pikachu_cries/pikachu_cry_31.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_32.wav b/audio/pikachu_cries/pikachu_cry_32.wav index 8ded504e..52ff34bb 100644 Binary files a/audio/pikachu_cries/pikachu_cry_32.wav and b/audio/pikachu_cries/pikachu_cry_32.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_33.wav b/audio/pikachu_cries/pikachu_cry_33.wav index 9be38b10..f7a13cb3 100644 Binary files a/audio/pikachu_cries/pikachu_cry_33.wav and b/audio/pikachu_cries/pikachu_cry_33.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_34.wav b/audio/pikachu_cries/pikachu_cry_34.wav index 45986668..d6a66bfb 100644 Binary files a/audio/pikachu_cries/pikachu_cry_34.wav and b/audio/pikachu_cries/pikachu_cry_34.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_35.wav b/audio/pikachu_cries/pikachu_cry_35.wav index 91b4d35b..0a6a4559 100644 Binary files a/audio/pikachu_cries/pikachu_cry_35.wav and b/audio/pikachu_cries/pikachu_cry_35.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_36.wav b/audio/pikachu_cries/pikachu_cry_36.wav index 789f9ca6..d59194e7 100644 Binary files a/audio/pikachu_cries/pikachu_cry_36.wav and b/audio/pikachu_cries/pikachu_cry_36.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_37.wav b/audio/pikachu_cries/pikachu_cry_37.wav index bc004c25..ea4f20c4 100644 Binary files a/audio/pikachu_cries/pikachu_cry_37.wav and b/audio/pikachu_cries/pikachu_cry_37.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_38.wav b/audio/pikachu_cries/pikachu_cry_38.wav index b7d23e25..63f5a4f8 100644 Binary files a/audio/pikachu_cries/pikachu_cry_38.wav and b/audio/pikachu_cries/pikachu_cry_38.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_39.wav b/audio/pikachu_cries/pikachu_cry_39.wav index da02dee2..3d8f17bb 100644 Binary files a/audio/pikachu_cries/pikachu_cry_39.wav and b/audio/pikachu_cries/pikachu_cry_39.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_4.wav b/audio/pikachu_cries/pikachu_cry_4.wav index 8cfc1041..8f0ac046 100644 Binary files a/audio/pikachu_cries/pikachu_cry_4.wav and b/audio/pikachu_cries/pikachu_cry_4.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_40.wav b/audio/pikachu_cries/pikachu_cry_40.wav index a048a408..719382ca 100644 Binary files a/audio/pikachu_cries/pikachu_cry_40.wav and b/audio/pikachu_cries/pikachu_cry_40.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_41.wav b/audio/pikachu_cries/pikachu_cry_41.wav index bbf5eabd..a12208c8 100644 Binary files a/audio/pikachu_cries/pikachu_cry_41.wav and b/audio/pikachu_cries/pikachu_cry_41.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_42.wav b/audio/pikachu_cries/pikachu_cry_42.wav index cd18baa0..8cae8eda 100644 Binary files a/audio/pikachu_cries/pikachu_cry_42.wav and b/audio/pikachu_cries/pikachu_cry_42.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_5.wav b/audio/pikachu_cries/pikachu_cry_5.wav index a2293acd..64959015 100644 Binary files a/audio/pikachu_cries/pikachu_cry_5.wav and b/audio/pikachu_cries/pikachu_cry_5.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_6.wav b/audio/pikachu_cries/pikachu_cry_6.wav index 814d7139..d91e2852 100644 Binary files a/audio/pikachu_cries/pikachu_cry_6.wav and b/audio/pikachu_cries/pikachu_cry_6.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_7.wav b/audio/pikachu_cries/pikachu_cry_7.wav index 6ffa781f..4b61cfc5 100644 Binary files a/audio/pikachu_cries/pikachu_cry_7.wav and b/audio/pikachu_cries/pikachu_cry_7.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_8.wav b/audio/pikachu_cries/pikachu_cry_8.wav index 04218660..20a4d345 100644 Binary files a/audio/pikachu_cries/pikachu_cry_8.wav and b/audio/pikachu_cries/pikachu_cry_8.wav differ diff --git a/audio/pikachu_cries/pikachu_cry_9.wav b/audio/pikachu_cries/pikachu_cry_9.wav index 484c92bc..1f4a8238 100644 Binary files a/audio/pikachu_cries/pikachu_cry_9.wav and b/audio/pikachu_cries/pikachu_cry_9.wav differ -- cgit v1.3.1-sl0p From 55099ca785010ef07f52a0aa3d88e7a17c3d852e Mon Sep 17 00:00:00 2001 From: Rangi Date: Fri, 6 Nov 2020 16:18:58 -0500 Subject: pcm.c requires 22050 Hz input --- tools/pcm.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/pcm.c b/tools/pcm.c index 114fdd38..82f66965 100644 --- a/tools/pcm.c +++ b/tools/pcm.c @@ -65,6 +65,12 @@ uint8_t *wav2pcm(uint8_t *wavdata, size_t wavsize, size_t *pcmsize) { return NULL; } + int64_t sample_rate = get_uint32le(wavdata, wavsize, i+4); + if (sample_rate != 22050) { + fputs("WAV data is not 22050 Hz\n", stderr); + return NULL; + } + int32_t bits_per_sample = get_uint16le(wavdata, wavsize, i+14); if (bits_per_sample != 8) { fputs("WAV data is not 8-bit samples\n", stderr); -- cgit v1.3.1-sl0p From c470dc22788259639bf37a7c92f995b19f1a19b0 Mon Sep 17 00:00:00 2001 From: Rangi Date: Fri, 6 Nov 2020 16:24:05 -0500 Subject: 'make tools' uses -pedantic --- tools/Makefile | 2 +- tools/pcm.c | 9 +++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/tools/Makefile b/tools/Makefile index ca99b118..f8dceb1a 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,7 +1,7 @@ .PHONY: all clean CC := gcc -CFLAGS := -O3 -std=c99 -Wall -Wextra +CFLAGS := -O3 -std=c99 -Wall -Wextra -pedantic tools := scan_includes gfx pkmncompress pcm diff --git a/tools/pcm.c b/tools/pcm.c index 82f66965..a14e291d 100644 --- a/tools/pcm.c +++ b/tools/pcm.c @@ -52,28 +52,26 @@ uint8_t *wav2pcm(uint8_t *wavdata, size_t wavsize, size_t *pcmsize) { return NULL; } + // require 22050 Hz 8-bit PCM WAV audio if (chunkid == CHUNKID('f', 'm', 't', ' ')) { int32_t audio_format = get_uint16le(wavdata, wavsize, i); if (audio_format != 1) { fputs("WAV data is not PCM format\n", stderr); return NULL; } - int32_t num_channels = get_uint16le(wavdata, wavsize, i+2); if (num_channels != 1) { fputs("WAV data is not mono\n", stderr); return NULL; } - int64_t sample_rate = get_uint32le(wavdata, wavsize, i+4); if (sample_rate != 22050) { fputs("WAV data is not 22050 Hz\n", stderr); return NULL; } - int32_t bits_per_sample = get_uint16le(wavdata, wavsize, i+14); if (bits_per_sample != 8) { - fputs("WAV data is not 8-bit samples\n", stderr); + fputs("WAV data is not 8-bit\n", stderr); return NULL; } } @@ -106,8 +104,7 @@ uint8_t *wav2pcm(uint8_t *wavdata, size_t wavsize, size_t *pcmsize) { return pcmdata; } -int main(int argc, char *argv[]) -{ +int main(int argc, char *argv[]) { if (argc != 3) { fprintf(stderr, "Usage: %s infile.wav outfile.pcm\n", argv[0]); return EXIT_FAILURE; -- cgit v1.3.1-sl0p