Compare commits

...

7 commits

Author SHA1 Message Date
Shinovon
653d313413 Update todo 2026-05-15 09:09:32 +05:00
Shinovon
ad5d8af63b Detect whether rendering on powervr or videocore 2026-05-14 13:53:24 +05:00
Shinovon
78e6740735 Supress logging 2026-05-14 13:52:53 +05:00
Shinovon
3bec747ea6 Check for stdcpp installation in pkg 2026-05-14 12:36:32 +05:00
Shinovon
7e3f0685a3 Update readme 2026-05-13 11:56:03 +05:00
Shinovon
0f1389bb3e Update readme 2026-05-13 11:52:05 +05:00
Shinovon
4029e8ac5d Update todo 2026-05-12 22:49:50 +05:00
7 changed files with 42 additions and 7 deletions

View file

@ -1,7 +1,6 @@
# re3-symbian
Work-in-progress port of GTA III for Symbian devices.\
Supports S60 3rd Edition FP1, S60 5th edition Symbian^3 and later.
Work-in-progress port of GTA III for Symbian devices.
Based on re3, uses some code from [Dreamcast](https://gitlab.com/skmp/dca3-game) and [Vita](https://github.com/Rinnegatamante/librw-vita) ports.
@ -9,6 +8,13 @@ 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.
## Device requirements
- S60 3rd Edition FP1, S60 5th Edition (non-Nokia), Symbian^3 or later
- GPU
- 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

View file

@ -10,7 +10,7 @@ Common:
- [x] Merge S60v3 and ^3 branches
- [ ] Simplify geometry
- [ ] Move map to top left corner
- [ ] Do something with sprites, they're still taking too much frame time
- [ ] Too many draw calls
- [ ] Audio
GLES 2.0 specific:
@ -22,7 +22,8 @@ GLES 2.0 specific:
- [x] Skinning shader is still broken on VC4
- [ ] Optimize to always run 20+ fps
- [ ] Use etc1 compression
- [ ] HUD still disappearing sometimes
- [ ] HUD still disappearing sometimes on VC3
- [ ] Effects are slowing the render on VC4
GLES 1.1 specific:
- [x] Backport to STLport v4
@ -35,6 +36,6 @@ GLES 1.1 specific:
- [ ] Fix lighting
Issues:
- [x] Fix crash in Texture::destroy on exit
- [ ] Fix crash in Texture::destroy on exit
- [x] Save menu is too slow
- [x] Crash when picking up a bat

View file

@ -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

View file

@ -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

View file

@ -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");

View file

@ -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);

11
vendor/librw/src/printf_stub.c vendored Normal file
View file

@ -0,0 +1,11 @@
#ifndef _DEBUG
#include <stdio.h>
int printf(const char * __restrict s, ...) {
return 0;
}
int puts(const char *s) {
return 0;
}
#endif