diff --git a/README.md b/README.md index 72c9ed8..6aa9517 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,6 @@ Based on re3, uses some code from [Dreamcast](https://gitlab.com/skmp/dca3-game) See [TODO.md](/TODO.md) for more details on project state. -Tested devices: -- Belle with BCM2763 (700) - GLES 2.0 -- Anna/Belle with BCM2727 (E7, N8, E6) - GLES 2.0 -- S60v3.1 with PowerVR MBX (E90, N95) - GLES 1.1 - ## Device requirements - S60 3rd Edition FP1, S60 5th Edition (non-Nokia), Symbian^3 or later @@ -20,6 +15,11 @@ Tested devices: - 128 MB RAM with at least 50 MB free (won't run on regular 64 MB N95 unless you disable all textures) - Functional E: drive with 400 MB of free space (will be more as it'll start to support audio) +Tested devices: +- Belle with BCM2763 (700) - GLES 2.0 +- Anna/Belle with BCM2727 (E7, N8, E6) - GLES 2.0 +- S60v3.1 with PowerVR MBX (E90, N95) - GLES 1.1 + ## Building Import bld.inf in Carbide.c++ with Symbian^3 or newer SDK, add PKG file to SIS Builder and build the project. diff --git a/group/librw.mmh b/group/librw.mmh index b38f518..2276d21 100644 --- a/group/librw.mmh +++ b/group/librw.mmh @@ -25,4 +25,4 @@ SOURCEPATH ../vendor/librw/src/ps2 SOURCE pds.cpp ps2.cpp ps2device.cpp ps2matfx.cpp ps2raster.cpp ps2skin.cpp SOURCEPATH ../vendor/librw/src SOURCE raster.cpp render.cpp skin.cpp texture.cpp tga.cpp tristrip.cpp userdata.cpp uvanim.cpp world.cpp -SOURCE assert.cpp +SOURCE assert.cpp printf_stub.c diff --git a/sis/re3.pkg b/sis/re3.pkg index 9374b6b..4b38c53 100644 --- a/sis/re3.pkg +++ b/sis/re3.pkg @@ -7,7 +7,7 @@ %{"nnproject"} :"nnproject" -IF (NOT package(0x20009A80)) OR (NOT package(0x2002372A)) ; old or missing openc +IF (NOT package(0x20009A80)) OR (NOT package(0x2002372A)) OR (NOT package(0x10282872)) ; old or missing openc "incompatible_openc.txt"-"", FT, FORCEABORT ENDIF diff --git a/src/skel/symbian/symbian.cpp b/src/skel/symbian/symbian.cpp index b8f38ae..a07a202 100644 --- a/src/skel/symbian/symbian.cpp +++ b/src/skel/symbian/symbian.cpp @@ -96,6 +96,7 @@ static bool spinning; bool qwerty; bool touch; bool moreVram; +bool powervr; void _InputTranslateShiftKeyUpDown(RsKeyCodes *rs) { } @@ -574,6 +575,17 @@ public: eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext); + const char* renderer = (const char *)glGetString(GL_RENDERER); + if (strstr(renderer, "MBX") || strstr(renderer, "SGX")) { + // use pvrtc + powervr = true; + } else if (strstr(renderer, "VideoCore")) { + // use etc1 + } else { + User::Leave(KErrNotSupported); + return; + } + setlocale(LC_ALL, ""); setlocale(LC_CTYPE, "C"); setlocale(LC_COLLATE, "C"); diff --git a/vendor/librw/src/gl/gl3shader.cpp b/vendor/librw/src/gl/gl3shader.cpp index 5e37304..c217a85 100644 --- a/vendor/librw/src/gl/gl3shader.cpp +++ b/vendor/librw/src/gl/gl3shader.cpp @@ -189,8 +189,13 @@ compileshader(GLenum type, const char **src, GLuint *shader) glShaderSource(shdr, n, src, nil); glCompileShader(shdr); glGetShaderiv(shdr, GL_COMPILE_STATUS, &success); +#ifdef _DEBUG printShaderSource(src); +#endif if(!success){ +#ifndef _DEBUG + printShaderSource(src); +#endif fprintf(stderr, "Error in %s shader\n", type == GL_VERTEX_SHADER ? "vertex" : "fragment"); glGetShaderiv(shdr, GL_INFO_LOG_LENGTH, &len); diff --git a/vendor/librw/src/printf_stub.c b/vendor/librw/src/printf_stub.c new file mode 100644 index 0000000..04df7e5 --- /dev/null +++ b/vendor/librw/src/printf_stub.c @@ -0,0 +1,11 @@ +#ifndef _DEBUG +#include + +int printf(const char * __restrict s, ...) { + return 0; +} + +int puts(const char *s) { + return 0; +} +#endif