From 84a8594f48366dd129cf46711b9bddef1ec8dcc8 Mon Sep 17 00:00:00 2001 From: KikooDX Date: Sat, 20 Mar 2021 19:03:26 +0100 Subject: [PATCH] Use pointers instead of bitshift tricks. --- include/conf.h | 3 +++ include/renderer/init.h | 3 +++ src/level.c | 29 +++++++++++++++-------------- src/ncurses/init.c | 3 +++ src/raylib/init.c | 3 +++ 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/include/conf.h b/include/conf.h index e44d12d..f6d476e 100644 --- a/include/conf.h +++ b/include/conf.h @@ -1,3 +1,6 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* Copyright (C) 2021 KikooDX */ + #pragma once #if defined(RAYLIB) diff --git a/include/renderer/init.h b/include/renderer/init.h index 58d00b2..b368bcf 100644 --- a/include/renderer/init.h +++ b/include/renderer/init.h @@ -1,3 +1,6 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* Copyright (C) 2021 KikooDX */ + #pragma once /* Initialize renderer. */ diff --git a/src/level.c b/src/level.c index 19668ae..d040571 100644 --- a/src/level.c +++ b/src/level.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: GPL-3.0-or-later */ /* Copyright (C) 2021 KikooDX */ +#include #include #include #include @@ -126,16 +127,17 @@ static int read_byte(FILE *file) { /* Read multiple bytes and "merge" them into one integer. */ static int read_byte_group(FILE *file, int size) { - int byte = 0; - int merged = 0; + int group = 0; + uint8_t *byte_ptr = (uint8_t*)&group; int i = 0; - int shift = size * 8; + byte_ptr += size; for (i = 0; i < size; i += 1) { - shift -= 8; - byte = read_byte(file); - merged |= byte << shift; + byte_ptr -= 1; + *byte_ptr = read_byte(file); + printf("%d ", *byte_ptr); } - return merged; + printf("%d\n", group); + return group; } /* Write a single byte safely (handle EOF). */ @@ -149,14 +151,13 @@ static void write_byte(FILE *file, unsigned char byte) { /* Write an integer as multiple bytes. */ static void write_byte_group(FILE *file, int value, int size) { - int byte = 0; - int shift = size * 8; + uint8_t *value_ptr = (uint8_t*)&value; + value_ptr += size; int i = 0; - const int mask = (1 << 8) - 1; for (i = 0; i < size; i += 1) { - shift -= 8; - byte = value >> shift; - byte &= mask; - write_byte(file, byte); + value_ptr -= 1; + printf("%d ", *value_ptr); + write_byte(file, *value_ptr); } + printf("\n"); } diff --git a/src/ncurses/init.c b/src/ncurses/init.c index 2e337b0..3904e57 100644 --- a/src/ncurses/init.c +++ b/src/ncurses/init.c @@ -1,3 +1,6 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* Copyright (C) 2021 KikooDX */ + #include #include #include diff --git a/src/raylib/init.c b/src/raylib/init.c index 125d685..e26f454 100644 --- a/src/raylib/init.c +++ b/src/raylib/init.c @@ -1,3 +1,6 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* Copyright (C) 2021 KikooDX */ + #include #include "conf.h"