From 75f83bf3f64646271c5b69e8911cb8c7e68619d1 Mon Sep 17 00:00:00 2001 From: DaniTheSkunk <> Date: Sun, 8 Jan 2023 09:58:57 +0000 Subject: [PATCH] made work in emscripten, and fixed transparency bug in shader --- examples/gsa_simple.c | 2 +- gfx.png | Bin 20482 -> 20478 bytes meson.build | 5 +++-- src/gsa.c | 24 ++++++++++++------------ src/image32.c | 4 ++-- src/image8.c | 4 ++-- 6 files changed, 20 insertions(+), 19 deletions(-) diff --git a/examples/gsa_simple.c b/examples/gsa_simple.c index 9d6bb38..721b7f9 100644 --- a/examples/gsa_simple.c +++ b/examples/gsa_simple.c @@ -9,7 +9,7 @@ void init() { sprites[1].x = 10; sprites[1].y = 100; - maps[0].tiles[20][1] = 2; + maps[0].tiles[20][1] = 1; } void tick() { diff --git a/gfx.png b/gfx.png index fcdb27471d55a97b57eddd7cb28a37876e01d5d9..b9465fd00f458bc0c58ac0f5688d5221b64931cf 100644 GIT binary patch literal 20478 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 Sz%=}&cDKztH|1{#`0gJ8_$m_s literal 20482 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 0)\ color = palette[r];\ +else discard;\ }\ "; @@ -56,7 +59,6 @@ int gsa_main(int argc, char *argv[]) { (void)argc; (void)argv; u32 tex; - struct sw_image8 *img; i32 max_components; sw_log("Initialising GameSkunkAdvance v0.0"); @@ -68,9 +70,8 @@ int gsa_main(int argc, char *argv[]) { glGetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, &max_components); sw_log("GL_MAX_VERTEX_UNIFORM_COMPONENTS: %i", max_components); - img = sw_image8_load_png("gfx.png"); - memcpy(palette, img->palette, sizeof(img->palette)); - sw_debug("%08X", img->palette[1]); + memcpy(palette, _gfx->palette, sizeof(_gfx->palette)); + sw_debug("%08X", _gfx->palette[1]); glGenTextures(1, &tex); glBindTexture(GL_TEXTURE_2D, tex); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); @@ -78,15 +79,14 @@ int gsa_main(int argc, char *argv[]) { glTexImage2D( GL_TEXTURE_2D, 0, - GL_RED, + GL_R8, 4096, 4096, 0, GL_RED, GL_UNSIGNED_BYTE, - img->_data + _gfx->_data ); - sw_image8_destroy(img); glGenBuffers(1, &vao); glBindVertexArray(vao); diff --git a/src/image32.c b/src/image32.c index 47af531..64a803d 100644 --- a/src/image32.c +++ b/src/image32.c @@ -7,7 +7,7 @@ #include "png.h" #include "vec2i.h" -void png_read_fn(png_structp png, png_bytep out, png_size_t count); +static void png_read_fn(png_structp png, png_bytep out, png_size_t count); struct sw_image32 *sw_image32_create(struct sw_vec2i size) { struct sw_image32 *image; @@ -103,7 +103,7 @@ sw_color32 sw_image32_get(struct sw_image32 *image, struct sw_vec2i pos) { /* private */ -void png_read_fn(png_structp png, png_bytep out, png_size_t count) { +static void png_read_fn(png_structp png, png_bytep out, png_size_t count) { struct sw_filebuffer *buf; buf = png_get_io_ptr(png); diff --git a/src/image8.c b/src/image8.c index d638c05..696dd79 100644 --- a/src/image8.c +++ b/src/image8.c @@ -8,7 +8,7 @@ #include "png.h" #include "vec2i.h" -void png_read_fn(png_structp png, png_bytep out, png_size_t count); +static void png_read_fn(png_structp png, png_bytep out, png_size_t count); struct sw_image8 *sw_image8_create(struct sw_vec2i size) { struct sw_image8 *image; @@ -117,7 +117,7 @@ sw_color8 sw_image8_get(struct sw_image8 *image, struct sw_vec2i pos) { /* private */ -void png_read_fn(png_structp png, png_bytep out, png_size_t count) { +static void png_read_fn(png_structp png, png_bytep out, png_size_t count) { struct sw_filebuffer *buf; buf = png_get_io_ptr(png);