Throwing some extra C compiler warnings into the CMakeLists. Found and dealt with some double-to-float conversions, cut CPU use down to about 10%.

This commit is contained in:
Rezmason
2022-06-07 18:23:53 -07:00
parent 346bbbb84d
commit c0e94627e7
2 changed files with 14 additions and 12 deletions

View File

@@ -36,8 +36,11 @@ file(GLOB IMAGES
if (TOOLCHAIN STREQUAL "armgcc")
add_executable(${PLAYDATE_GAME_DEVICE} ${SDK}/C_API/buildsupport/setup.c main.c)
target_compile_options(${PLAYDATE_GAME_DEVICE} PUBLIC -Wstrict-prototypes -Wdouble-promotion -Wall -Wpedantic -Wshadow -Wextra -Werror=implicit-int -Werror=incompatible-pointer-types -Werror=int-conversion -Wvla )
else()
add_library(${PLAYDATE_GAME_NAME} SHARED main.c ${IMAGES})
target_compile_options(${PLAYDATE_GAME_NAME} PUBLIC -Wstrict-prototypes -Wdouble-promotion -Wall -Wpedantic -Wshadow -Wextra -Werror=implicit-int -Werror=incompatible-pointer-types -Werror=int-conversion -Wvla )
endif()
include(${SDK}/C_API/buildsupport/playdate_game.cmake)

View File

@@ -3,10 +3,9 @@
// Matrix Effect
//
// Created by Rezmason on 6/05/22.
// Read the LICENSE file if you want to
// Licensed under MIT. (See the LICENSE file.)
//
#include <stdlib.h>
#include <math.h>
#include "pd_api.h"
@@ -45,11 +44,11 @@ static float wobbleB;
static LCDBitmap **glyphs = NULL;
static Cell *cells = NULL;
static float randf() {
static float randf(void) {
return (float)rand() / (float)(RAND_MAX);
}
static void init()
static void init(void)
{
srand(pd->system->getSecondsSinceEpoch(NULL));
@@ -105,7 +104,7 @@ static void init()
int i = 0;
for (int x = 0; x < numColumns; x++) {
float columnTimeOffset = randf() * 1000;
float columnSpeedOffset = randf() * 0.5 + 0.5;
float columnSpeedOffset = randf() * 0.5f + 0.5f;
for (int y = 0; y < numRows; y++) {
Cell *cell = &cells[i];
i++;
@@ -127,13 +126,13 @@ static int update(void* ud)
{
float delta;
if (pd->system->isCrankDocked()) {
speed += 0.07;
speed += 0.07f;
if (speed > maxSpeed) {
speed = maxSpeed;
}
delta = pd->system->getElapsedTime() * speed;
} else {
speed -= 0.07;
speed -= 0.07f;
if (speed < minSpeed) {
speed = minSpeed;
}
@@ -150,11 +149,11 @@ static int update(void* ud)
int mustDraw = 0;
Cell *cell = &cells[i];
float cellTime = cell->y * -0.03 + cell->columnTimeOffset + time * cell->columnSpeedOffset;
float brightness = 4 * fmod(
float cellTime = cell->y * -0.03f + cell->columnTimeOffset + time * cell->columnSpeedOffset;
float brightness = 4 * fmodf(
cellTime
+ 0.3 * sineTable[(int)(fmod(wobbleA * cellTime, 360))]
+ 0.2 * sineTable[(int)(fmod(wobbleB * cellTime, 360))],
+ 0.3f * sineTable[(int)(fmodf(wobbleA * cellTime, 360))]
+ 0.2f * sineTable[(int)(fmodf(wobbleB * cellTime, 360))],
1
);
@@ -168,7 +167,7 @@ static int update(void* ud)
cell->glyphCycle = cell->glyphCycle + delta * 2;
if (cell->glyphCycle > 1) {
cell->glyphCycle = fmod(cell->glyphCycle, 1);
cell->glyphCycle = fmodf(cell->glyphCycle, 1);
int lastGlyphIndex = cell->glyphIndex;
while (cell->glyphIndex == lastGlyphIndex) {
cell->glyphIndex = rand();