mirror of
https://gitlab.com/shinovon/re3-symbian.git
synced 2026-05-23 01:57:21 +03:00
Compare commits
8 commits
20c7bf7818
...
2829feffad
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2829feffad | ||
|
|
fa86cdc880 | ||
|
|
52c4681c0c | ||
|
|
6c644421fd | ||
|
|
dfdd037ed3 | ||
|
|
6992f313a9 | ||
|
|
e3ad2108f1 | ||
|
|
7f9b635431 |
20 changed files with 246 additions and 140 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,6 +1,7 @@
|
|||
.cproject
|
||||
.project
|
||||
*.bat
|
||||
!/printHash.bat
|
||||
*.sis
|
||||
*.sisx
|
||||
*.d
|
||||
|
|
|
|||
26
printHash.bat
Normal file
26
printHash.bat
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
@echo off
|
||||
|
||||
REM creates version.h with HEAD commit hash
|
||||
REM params: $1=full path to output file (usually points version.h)
|
||||
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
cd /d "%~dp0"
|
||||
|
||||
break> %1
|
||||
|
||||
<nul set /p=^"#define GIT_SHA1 ^"^"> %1
|
||||
|
||||
where git
|
||||
if "%errorlevel%" == "0" ( goto :havegit ) else ( goto :writeending )
|
||||
|
||||
:havegit
|
||||
for /f %%v in ('git rev-parse --short HEAD') do set version=%%v
|
||||
<nul set /p="%version%" >> %1
|
||||
|
||||
:writeending
|
||||
|
||||
echo ^" >> %1
|
||||
echo const char* g_GIT_SHA1 = GIT_SHA1; >> %1
|
||||
|
||||
EXIT /B
|
||||
14
printHash.sh
Normal file
14
printHash.sh
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#!/usr/bin/env sh
|
||||
if [ -z "${1}" ]
|
||||
then
|
||||
printf "%s\n" "Input the path to the file for writing the commit hash to."
|
||||
else
|
||||
printf "%s" "#define GIT_SHA1 \"" > $1
|
||||
|
||||
if (command -v "git" >/dev/null) then
|
||||
git rev-parse --short HEAD | tr -d '\n' >> $1
|
||||
fi
|
||||
|
||||
printf "%s\n" "\"" >> $1
|
||||
printf "%s\n" "const char* g_GIT_SHA1 = GIT_SHA1;" >> $1
|
||||
fi
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#{"GTA III"},(0xe0d67647),1,0,1
|
||||
#{"GTA III"},(0xe0d67647),1,0,2
|
||||
|
||||
[0x101F7961], 0, 0, 0, {"S60ProductID"} ; S60v3
|
||||
[0x1028315F], 0, 0, 0, {"S60ProductID"} ; ^1
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#{"GTA III"},(0xe0d67647),1,0,1
|
||||
#{"GTA III"},(0xe0d67647),1,0,2
|
||||
|
||||
[0x101F7961], 0, 0, 0, {"S60ProductID"} ; S60v3
|
||||
[0x1028315F], 0, 0, 0, {"S60ProductID"} ; ^1
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
* Arrays grouping together all the EAX presets in a scenario *
|
||||
* *
|
||||
************************************************************************************************/
|
||||
|
||||
#if 0
|
||||
#include "eax-util.h"
|
||||
#include <math.h>
|
||||
|
||||
|
|
@ -704,3 +704,4 @@ EAXLISTENERPROPERTIES EAX30_MISC_PRESETS[] =
|
|||
EAX30_PRESET_SMALLWATERROOM
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
* *
|
||||
\*******************************************************************/
|
||||
|
||||
#ifndef EAXUTIL_INCLUDED
|
||||
#if !defined EAXUTIL_INCLUDED && 0
|
||||
#define EAXUTIL_INCLUDED
|
||||
|
||||
#include <eax.h>
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
* *
|
||||
********************************************************************/
|
||||
|
||||
#ifndef EAX_H_INCLUDED
|
||||
#if !defined EAX_H_INCLUDED && 0
|
||||
#define EAX_H_INCLUDED
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
#pragma once
|
||||
|
||||
#ifdef AUDIO_OAL
|
||||
#undef AUDIO_OAL
|
||||
#endif
|
||||
|
||||
#ifdef AUDIO_OAL
|
||||
#include "eax.h"
|
||||
#include "AL/efx.h"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
//#define JUICY_OAL
|
||||
|
||||
#ifdef AUDIO_OAL
|
||||
#if defined AUDIO_OAL && 0
|
||||
#include <time.h>
|
||||
|
||||
#include "eax.h"
|
||||
|
|
|
|||
|
|
@ -85,8 +85,6 @@ int32 islandLODcomSub;
|
|||
int32 islandLODsubInd;
|
||||
int32 islandLODsubCom;
|
||||
|
||||
#define STREAMING_MEM_SIZE (10 * 1024 * 1024)
|
||||
|
||||
bool
|
||||
CStreamingInfo::GetCdPosnAndSize(uint32 &posn, uint32 &size)
|
||||
{
|
||||
|
|
@ -221,15 +219,14 @@ CStreaming::Init2(void)
|
|||
#ifdef GTA_PC
|
||||
#define MB (1024*1024)
|
||||
#ifdef __SYMBIAN32__
|
||||
extern bool moreVram;
|
||||
if (moreVram) {
|
||||
extern size_t streamingMemSize;
|
||||
ms_memoryAvailable = streamingMemSize;
|
||||
#else
|
||||
extern size_t _dwMemAvailPhys;
|
||||
ms_memoryAvailable = (_dwMemAvailPhys - 10 * MB) / 2;
|
||||
if (ms_memoryAvailable < 10 * MB)
|
||||
ms_memoryAvailable = 10 * MB;
|
||||
} else
|
||||
#endif
|
||||
ms_memoryAvailable = STREAMING_MEM_SIZE;
|
||||
desiredNumVehiclesLoaded = 12;
|
||||
if(desiredNumVehiclesLoaded > MAXVEHICLESLOADED)
|
||||
desiredNumVehiclesLoaded = MAXVEHICLESLOADED;
|
||||
|
|
@ -642,7 +639,9 @@ CStreaming::ConvertBufferToObject(int8 *buf, int32 streamId)
|
|||
if(ms_aInfoForModel[streamId].m_loadState != STREAMSTATE_STARTED){
|
||||
ms_aInfoForModel[streamId].m_loadState = STREAMSTATE_LOADED;
|
||||
#ifndef USE_CUSTOM_ALLOCATOR
|
||||
if(streamId < STREAM_OFFSET_TXD) {
|
||||
ms_memoryUsed += ms_aInfoForModel[streamId].GetCdSize() * CDSTREAM_SECTOR_SIZE;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -708,7 +707,9 @@ CStreaming::FinishLoadingLargeFile(int8 *buf, int32 streamId)
|
|||
|
||||
ms_aInfoForModel[streamId].m_loadState = STREAMSTATE_LOADED; // only done if success on PS2
|
||||
#ifndef USE_CUSTOM_ALLOCATOR
|
||||
if(streamId < STREAM_OFFSET_TXD) {
|
||||
ms_memoryUsed += ms_aInfoForModel[streamId].GetCdSize() * CDSTREAM_SECTOR_SIZE;
|
||||
}
|
||||
#endif
|
||||
|
||||
if(!success){
|
||||
|
|
@ -954,7 +955,9 @@ CStreaming::RemoveModel(int32 id)
|
|||
#ifdef USE_CUSTOM_ALLOCATOR
|
||||
UpdateMemoryUsed();
|
||||
#else
|
||||
if (id < STREAM_OFFSET_TXD) {
|
||||
ms_memoryUsed -= ms_aInfoForModel[id].GetCdSize()*CDSTREAM_SECTOR_SIZE;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -2696,14 +2699,13 @@ CStreaming::MakeSpaceFor(int32 size)
|
|||
#define MB (1024 * 1024)
|
||||
if(ms_memoryAvailable == 0) {
|
||||
#ifdef __SYMBIAN32__
|
||||
extern bool moreVram;
|
||||
if (moreVram) {
|
||||
extern size_t streamingMemSize;
|
||||
ms_memoryAvailable = streamingMemSize;
|
||||
#else
|
||||
extern size_t _dwMemAvailPhys;
|
||||
ms_memoryAvailable = (_dwMemAvailPhys - 10 * MB) / 2;
|
||||
if (ms_memoryAvailable < 10 * MB) ms_memoryAvailable = 10 * MB;
|
||||
} else
|
||||
#endif
|
||||
ms_memoryAvailable = STREAMING_MEM_SIZE;
|
||||
}
|
||||
#undef MB
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,7 +1,15 @@
|
|||
#pragma once
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define LOGS
|
||||
#ifdef __SYMBIAN32__
|
||||
#define LOGS_RDEBUG
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef AUDIO_OAL
|
||||
#undef AUDIO_OAL
|
||||
#endif
|
||||
|
||||
// disables (most) stuff that wasn't in original gta3.exe
|
||||
#ifdef __MWERKS__
|
||||
|
|
@ -386,9 +394,9 @@ enum Config {
|
|||
#define USE_MEASUREMENTS_IN_METERS // makes game use meters instead of feet in script
|
||||
#define USE_PRECISE_MEASUREMENT_CONVERTION // makes game convert feet to meeters more precisely
|
||||
#ifdef PC_MENU
|
||||
//# define MISSION_REPLAY // mobile feature
|
||||
# define MISSION_REPLAY // mobile feature
|
||||
#endif
|
||||
//#define SIMPLIER_MISSIONS // apply simplifications from mobile
|
||||
#define SIMPLIER_MISSIONS // apply simplifications from mobile
|
||||
#define USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
|
||||
#define SCRIPT_LOG_FILE_LEVEL 0 // 0 == no log, 1 == overwrite every frame, 2 == full log
|
||||
|
||||
|
|
@ -438,8 +446,8 @@ enum Config {
|
|||
//#define AUDIO_CACHE
|
||||
#define PS2_AUDIO_CHANNELS // increases the maximum number of audio channels to PS2 value of 44 (PC has 28 originally)
|
||||
#define PS2_AUDIO_PATHS // changes audio paths for cutscenes and radio to PS2 paths (needs vbdec on MSS builds)
|
||||
#define AUDIO_OAL_USE_SNDFILE // use libsndfile to decode WAVs instead of our internal decoder
|
||||
#define AUDIO_OAL_USE_MPG123 // use mpg123 to support mp3 files
|
||||
//#define AUDIO_OAL_USE_SNDFILE // use libsndfile to decode WAVs instead of our internal decoder
|
||||
//#define AUDIO_OAL_USE_MPG123 // use mpg123 to support mp3 files
|
||||
#define PAUSE_RADIO_IN_FRONTEND // pause radio when game is paused
|
||||
#define ATTACH_RELEASING_SOUNDS_TO_ENTITIES // sounds would follow ped and vehicles coordinates if not being queued otherwise
|
||||
#define USE_TIME_SCALE_FOR_AUDIO // slow down/speed up sounds according to the speed of the game
|
||||
|
|
|
|||
|
|
@ -91,7 +91,9 @@ float Diag_GetFPS()
|
|||
return 39000.0f / (msCollected[(curMS - 1) % MAX_MS_COLLECTED] - msCollected[curMS % MAX_MS_COLLECTED]);
|
||||
}
|
||||
|
||||
#ifdef LOGS_RDEBUG
|
||||
extern "C" void RDebug_Printf(const char*, ...);
|
||||
#endif
|
||||
|
||||
void tbDisplay()
|
||||
{
|
||||
|
|
@ -114,6 +116,7 @@ void tbDisplay()
|
|||
CFont::SetFontStyle(FONT_BANK);
|
||||
sprintf(temp, "FPS: %.2f", Diag_GetFPS());
|
||||
if (frames >= 15) {
|
||||
//#ifdef LOGS_RDEBUG
|
||||
// RDebug_Printf("FPS: %.2f", Diag_GetFPS());
|
||||
// RDebug_Printf("vbo: %d, draw: %d, render: %d, matfx: %d, skin: %d, im2d: %d, im3d: %d", vboUploads, draw, render, matfx, skin, im2d, im3d);
|
||||
// for (uint32 i = 0; i < TimerBar.count; i++) {
|
||||
|
|
@ -124,6 +127,7 @@ void tbDisplay()
|
|||
// RDebug_Printf("EndOfFrame: %.2f", endOfFrameTime);
|
||||
// RDebug_Printf("Frame Time: %.2f", MaxFrameTime);
|
||||
// RDebug_Printf(" ");
|
||||
//#endif
|
||||
frames = 0;
|
||||
} else frames++;
|
||||
|
||||
|
|
|
|||
|
|
@ -1325,6 +1325,7 @@ void CHud::DrawAfterFade()
|
|||
if (touch) {
|
||||
// FIXME
|
||||
int w = 640;
|
||||
int h = 360;
|
||||
int y = 0;
|
||||
{
|
||||
CFont::SetJustifyOff();
|
||||
|
|
@ -1349,11 +1350,30 @@ void CHud::DrawAfterFade()
|
|||
CSprite2d::DrawRect(CRECT(w - 180 - 90, 6 + y, 90, 20), CRGBA(0, 0, 0, 128));
|
||||
PRINT("R2", w - 180 - 90, 12 + y, 90);
|
||||
|
||||
// select, start
|
||||
CSprite2d::DrawRect(CRECT(320 - 80, 286 + y, 60, 20), CRGBA(0, 0, 0, 128));
|
||||
PRINT("select", 320 - 80, 290 + y, 60);
|
||||
CSprite2d::DrawRect(CRECT(320 + 20, 286 + y, 60, 20), CRGBA(0, 0, 0, 128));
|
||||
PRINT("start", 320 + 20, 290 + y, 60);
|
||||
int cy = (h * 2) / 5;
|
||||
int b = 14; //(40 - 12) / 2;
|
||||
|
||||
// dpad
|
||||
int cx = w / 8;
|
||||
CSprite2d::DrawRect(CRECT(cx - 20, cy - 60, 40, 40), CRGBA(0, 0, 0, 128));
|
||||
PRINT("\"", cx - 15, cy - 60 + b, 30);
|
||||
CSprite2d::DrawRect(CRECT(cx - 20, cy + 30, 40, 40), CRGBA(0, 0, 0, 128));
|
||||
PRINT("v", cx - 15, cy + 30 + b, 30);
|
||||
CSprite2d::DrawRect(CRECT(cx - 75, cy - 20, 40, 40), CRGBA(0, 0, 0, 128));
|
||||
PRINT("<", cx - 75 + 8, cy - 20 + b, 30);
|
||||
CSprite2d::DrawRect(CRECT(cx + 35, cy - 20, 40, 40), CRGBA(0, 0, 0, 128));
|
||||
PRINT(">", cx + 35 + 10, cy - 20 + b, 30);
|
||||
|
||||
// abxy
|
||||
cx = w - w / 8;
|
||||
CSprite2d::DrawRect(CRECT(cx - 20, cy - 60, 40, 40), CRGBA(0, 0, 0, 128));
|
||||
PRINT("\"", cx - 15, cy - 60 + b, 30);
|
||||
CSprite2d::DrawRect(CRECT(cx - 20, cy + 30, 40, 40), CRGBA(0, 0, 0, 128));
|
||||
PRINT("X", cx - 15, cy + 30 + b, 30);
|
||||
CSprite2d::DrawRect(CRECT(cx - 75, cy - 20, 40, 40), CRGBA(0, 0, 0, 128));
|
||||
PRINT("[]", cx - 75 + 12, cy - 20 + b, 30);
|
||||
CSprite2d::DrawRect(CRECT(cx + 35, cy - 20, 40, 40), CRGBA(0, 0, 0, 128));
|
||||
PRINT("|", cx + 35 + 10, cy - 20 + b, 30);
|
||||
|
||||
// l3, r3
|
||||
CSprite2d::DrawRect(CRECT(320 - 80, 254 + y, 60, 20), CRGBA(0, 0, 0, 128));
|
||||
|
|
@ -1361,19 +1381,13 @@ void CHud::DrawAfterFade()
|
|||
CSprite2d::DrawRect(CRECT(320 + 20, 254 + y, 60, 20), CRGBA(0, 0, 0, 128));
|
||||
PRINT("R3", 320 + 20, 258 + y, 60);
|
||||
|
||||
// dpad
|
||||
CSprite2d::DrawRect(CRECT(0, 80 + y, w / 4, 120), CRGBA(0, 0, 0, 128));
|
||||
PRINT("\"", w / 8 - 15, 90 + y, 30);
|
||||
PRINT("v", w / 8 - 15, 160 + y, 30);
|
||||
PRINT("<", w / 8 - 60, 125 + y, 30);
|
||||
PRINT(">", w / 8 + 30, 125 + y, 30);
|
||||
CFont::SetScale(0.65f, 0.65f);
|
||||
|
||||
// abxy
|
||||
CSprite2d::DrawRect(CRECT(w - w / 4, 80 + y, w / 4, 120), CRGBA(0, 0, 0, 128));
|
||||
PRINT("\"", w - w / 8 - 15, 90 + y, 30);
|
||||
PRINT("X", w - w / 8 - 15, 160 + y, 30);
|
||||
PRINT("[]", w - w / 8 - 60, 125 + y, 30);
|
||||
PRINT("|", w - w / 8 + 30, 125 + y, 30);
|
||||
// select, start
|
||||
CSprite2d::DrawRect(CRECT(320 - 80, 286 + y, 60, 20), CRGBA(0, 0, 0, 128));
|
||||
PRINT("SELECT", 320 - 80, 290 + y, 60);
|
||||
CSprite2d::DrawRect(CRECT(320 + 20, 286 + y, 60, 20), CRGBA(0, 0, 0, 128));
|
||||
PRINT("START", 320 + 20, 290 + y, 60);
|
||||
#undef PRINT
|
||||
#undef CRECT
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@ static int clamp(int size, int targetSize)
|
|||
static void halveTexture(RwTexture *texture){
|
||||
if(texture == nil)
|
||||
return;
|
||||
debug("halving %s", texture->name);
|
||||
|
||||
RwRaster *oldRaster = RwTextureGetRaster(texture);
|
||||
if(oldRaster == nil)
|
||||
|
|
@ -156,6 +157,7 @@ static void downscaleTexture(RwTexture *texture) {
|
|||
RwRaster *oldRaster = RwTextureGetRaster(texture);
|
||||
if (oldRaster == nil)
|
||||
return;
|
||||
debug("downscaling %s", texture->name);
|
||||
|
||||
extern bool moreVram;
|
||||
int targetSize = moreVram ? 64 : 32;
|
||||
|
|
@ -207,12 +209,14 @@ RwTextureGtaStreamRead(RwStream *stream)
|
|||
if (gGameState == GS_INIT_PLAYING_GAME) {
|
||||
texLoadTime = (texNumLoaded * texLoadTime + (float)CTimer::GetCurrentTimeInCycles() / (float)CTimer::GetCyclesPerMillisecond() - preloadTime) / (float)(texNumLoaded+1);
|
||||
texNumLoaded++;
|
||||
} else if (gGameState != GS_PLAYING_GAME || FrontEndMenuManager.m_bMenuActive) {
|
||||
}
|
||||
#ifdef __SYMBIAN32__
|
||||
else if (gGameState != GS_PLAYING_GAME || FrontEndMenuManager.m_bMenuActive) {
|
||||
if (tex != nil && tex->raster != nil && (RwRasterGetWidth(tex->raster) > 128 || RwRasterGetHeight(tex->raster) > 128)) {
|
||||
// debug("downscaling %s", tex->name);
|
||||
halveTexture(tex);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ANISOTROPIC_FILTERING
|
||||
if(tex && RpAnisotGetMaxSupportedMaxAnisotropy() > 1) // BUG? this was RpAnisotTextureGetMaxAnisotropy, but that doesn't make much sense
|
||||
|
|
@ -529,6 +533,8 @@ CreateTxdImageForVideoCard()
|
|||
// only works for textures that are not yet loaded
|
||||
// so let's hope that is the case for all
|
||||
rw::gl3::needToReadBackTextures = true;
|
||||
#elif defined RW_GLES1
|
||||
rw::gles1::needToReadBackTextures = true;
|
||||
#endif
|
||||
|
||||
#ifdef DISABLE_VSYNC_ON_TEXTURE_CONVERSION
|
||||
|
|
@ -579,6 +585,8 @@ CreateTxdImageForVideoCard()
|
|||
CStreaming::RemoveTxd(i);
|
||||
#ifdef RW_GL3
|
||||
rw::gl3::needToReadBackTextures = false;
|
||||
#elif defined RW_GLES1
|
||||
rw::gles1::needToReadBackTextures = false;
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
|
@ -614,6 +622,8 @@ CreateTxdImageForVideoCard()
|
|||
|
||||
#ifdef RW_GL3
|
||||
rw::gl3::needToReadBackTextures = false;
|
||||
#elif defined RW_GLES1
|
||||
rw::gles1::needToReadBackTextures = false;
|
||||
#endif
|
||||
|
||||
if (!pDir->WriteDirFile("models\\txd.dir")) {
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ psGlobalType psGlobal;
|
|||
uint32 gGameState = 0;
|
||||
long _dwOperatingSystemVersion = 0;
|
||||
uint32 _dwMemAvailPhys = 0;
|
||||
size_t streamingMemSize;
|
||||
|
||||
static EGLDisplay eglDisplay;
|
||||
static EGLContext eglContext;
|
||||
|
|
@ -526,6 +527,13 @@ public:
|
|||
VersionInfo::TPlatformVersion platformVersion;
|
||||
VersionInfo::GetVersion(platformVersion);
|
||||
moreVram = platformVersion.iMajorVersion == 5 && platformVersion.iMinorVersion >= 4;
|
||||
if (moreVram) {
|
||||
streamingMemSize = 12 * 1024 * 1024;
|
||||
} else {
|
||||
streamingMemSize = 10 * 1024 * 1024;
|
||||
}
|
||||
#else
|
||||
streamingMemSize = 8 * 1024 * 1024;
|
||||
#endif
|
||||
|
||||
TSize size = Size();
|
||||
|
|
@ -617,6 +625,10 @@ public:
|
|||
RestartTimerL(10000);
|
||||
}
|
||||
|
||||
static bool c(int px, int py, int x, int y, int w, int h) {
|
||||
return px >= x && py >= y && px <= x + w && py <= y + h;
|
||||
}
|
||||
|
||||
virtual void HandlePointerEventL(const TPointerEvent& aPointerEvent) {
|
||||
touch = true;
|
||||
int x = aPointerEvent.iPosition.iX;
|
||||
|
|
@ -675,7 +687,7 @@ public:
|
|||
activeZone[i] = JOY_R2 + 1;
|
||||
virtualButtons[JOY_R2] = 1;
|
||||
}
|
||||
} else if (y > 200 && y <= 360 && (x < 200 || x > w - 200)) {
|
||||
} else if (y > 220 && y <= 360 && (x < 200 || x > w - 200)) {
|
||||
if (x < 200) {
|
||||
activeZone[i] = -1;
|
||||
stickCenterX[i] = x;
|
||||
|
|
@ -704,35 +716,44 @@ public:
|
|||
virtualButtons[JOY_R3] = 1;
|
||||
}
|
||||
} else if (y >= 80 && y <= 80 + 120) {
|
||||
do {
|
||||
int cy = (h * 2) / 5;
|
||||
if (x < w / 4) {
|
||||
// dpad
|
||||
int b = 0;
|
||||
if (y < 125) {
|
||||
int cx = w / 8;
|
||||
if (c(x, y, cx - 20, cy - 60, 40, 30)) {
|
||||
b = JOY_DPAD_UP;
|
||||
} else if (y > 155) {
|
||||
} else if (c(x, y, cx - 20, cy + 30, 40, 40)) {
|
||||
b = JOY_DPAD_DOWN;
|
||||
} else if (x < w / 8) {
|
||||
} else if (c(x, y, cx - 75, cy - 20, 40, 40)) {
|
||||
b = JOY_DPAD_LEFT;
|
||||
} else {
|
||||
} else if (c(x, y, cx + 35, cy - 20, 40, 40)) {
|
||||
b = JOY_DPAD_RIGHT;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
activeZone[i] = b + 1;
|
||||
virtualButtons[b] = 1;
|
||||
} else if (x > w - w / 4) {
|
||||
// abxy
|
||||
int cx = w - w / 8;
|
||||
int b = 0;
|
||||
if (y < 125) {
|
||||
if (c(x, y, cx - 20, cy - 60, 40, 40)) {
|
||||
b = JOY_Y;
|
||||
} else if (y > 155) {
|
||||
} else if (c(x, y, cx - 20, cy + 30, 40, 40)) {
|
||||
b = JOY_B;
|
||||
} else if (x < w - w / 8) {
|
||||
} else if (c(x, y, cx - 75, cy - 20, 40, 40)) {
|
||||
b = JOY_X;
|
||||
} else {
|
||||
} else if (c(x, y, cx + 35, cy - 20, 40, 40)) {
|
||||
b = JOY_A;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
activeZone[i] = b + 1;
|
||||
virtualButtons[b] = 1;
|
||||
}
|
||||
} while (0);
|
||||
}
|
||||
} else if (aPointerEvent.iType == TPointerEvent::EDrag) {
|
||||
if (activeZone[i] == -1 || activeZone[i] == -2) {
|
||||
|
|
|
|||
4
vendor/librw/src/gl/gl3raster.cpp
vendored
4
vendor/librw/src/gl/gl3raster.cpp
vendored
|
|
@ -630,7 +630,7 @@ rasterUnlock(Raster *raster, int32 level)
|
|||
#endif
|
||||
) {
|
||||
// convert to 16-bit
|
||||
uint16_t* pixels16 = (uint16_t*)malloc(raster->width * raster->height * sizeof(uint16_t));
|
||||
uint16_t* pixels16 = (uint16_t*)rwMalloc(raster->width * raster->height * sizeof(uint16_t), MEMDUR_FUNCTION | ID_DRIVER);
|
||||
uint8_t* pixels8 = (uint8_t*)raster->pixels;
|
||||
|
||||
for (int i = 0; i < raster->width * raster->height; i++) {
|
||||
|
|
@ -642,7 +642,7 @@ rasterUnlock(Raster *raster, int32 level)
|
|||
pixels16[i] = ((r >> 4) << 12) | ((g >> 4) << 8) | ((b >> 4) << 4) | (a >> 4);
|
||||
}
|
||||
glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA, raster->width, raster->height, 0, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, pixels16);
|
||||
free(pixels16);
|
||||
rwFree(pixels16);
|
||||
CHECK_GL_ERROR("glTexImage2D 1");
|
||||
} else
|
||||
{
|
||||
|
|
|
|||
2
vendor/librw/src/gl/rwgl3.h
vendored
2
vendor/librw/src/gl/rwgl3.h
vendored
|
|
@ -18,7 +18,7 @@
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
#ifdef _DEBUG
|
||||
extern void re3_debug(const char *format, ...);
|
||||
extern void re3_trace(const char *filename, unsigned int lineno, const char *func, const char *format, ...);
|
||||
#define CHECK_GL_ERROR(trace) do { \
|
||||
|
|
|
|||
13
vendor/librw/src/gles1/gl1raster.cpp
vendored
13
vendor/librw/src/gles1/gl1raster.cpp
vendored
|
|
@ -395,11 +395,8 @@ rasterLock(Raster *raster, int32 level, int32 lockMode)
|
|||
px = (uint8*)rwMalloc(allocSz, MEMDUR_EVENT | ID_DRIVER);
|
||||
assert(raster->pixels == nil);
|
||||
raster->pixels = px;
|
||||
#ifdef __SYMBIAN32__
|
||||
|
||||
memset(px, 0, allocSz);
|
||||
#else
|
||||
glReadBuffer(GL_BACK);
|
||||
#endif
|
||||
glReadPixels(0, 0, raster->width, raster->height, GL_RGB, GL_UNSIGNED_BYTE, px);
|
||||
|
||||
raster->privateFlags = lockMode;
|
||||
|
|
@ -456,7 +453,7 @@ void rasterUnlock(Raster *raster, int32 level){
|
|||
// flip vertical (igual que antes)
|
||||
{
|
||||
int stride = raster->width * natras->bpp;
|
||||
uint8_t *tmp = (uint8_t*)malloc(stride);
|
||||
uint8_t *tmp = (uint8_t*)rwMalloc(stride, MEMDUR_FUNCTION | ID_DRIVER);
|
||||
for(int y = 0; y < raster->height / 2; y++){
|
||||
uint8_t *a = (uint8_t*)raster->pixels + y * stride;
|
||||
uint8_t *b = (uint8_t*)raster->pixels + (raster->height - 1 - y) * stride;
|
||||
|
|
@ -464,13 +461,13 @@ void rasterUnlock(Raster *raster, int32 level){
|
|||
memcpy(a, b, stride);
|
||||
memcpy(b, tmp, stride);
|
||||
}
|
||||
free(tmp);
|
||||
rwFree(tmp);
|
||||
}
|
||||
|
||||
if(!natras->isCompressed){
|
||||
if(natras->format == GL_RGBA && natras->type == GL_UNSIGNED_BYTE){
|
||||
// convertir RGBA8888 → RGBA4444
|
||||
uint16_t *pixels16 = (uint16_t*)malloc(raster->width * raster->height * 2);
|
||||
uint16_t *pixels16 = (uint16_t*)rwMalloc(raster->width * raster->height * 2, MEMDUR_FUNCTION | ID_DRIVER);
|
||||
uint8_t *pixels8 = (uint8_t*)raster->pixels;
|
||||
for(int i = 0; i < raster->width * raster->height; i++){
|
||||
uint8_t r = pixels8[i*4+0];
|
||||
|
|
@ -482,7 +479,7 @@ void rasterUnlock(Raster *raster, int32 level){
|
|||
glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA,
|
||||
raster->width, raster->height, 0,
|
||||
GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, pixels16);
|
||||
free(pixels16);
|
||||
rwFree(pixels16);
|
||||
} else {
|
||||
glTexImage2D(GL_TEXTURE_2D, level, natras->internalFormat,
|
||||
raster->width, raster->height, 0,
|
||||
|
|
|
|||
4
vendor/librw/src/rwbase.h
vendored
4
vendor/librw/src/rwbase.h
vendored
|
|
@ -16,7 +16,11 @@
|
|||
#ifdef OFFSET_OF
|
||||
#undef OFFSET_OF
|
||||
#endif
|
||||
#ifdef __SYMBIAN32__
|
||||
#define OFFSET_OF(type, member) ((size_t)&(((type*)0)->member))
|
||||
#else
|
||||
#define OFFSET_OF offsetof
|
||||
#endif
|
||||
|
||||
// TODO: clean up the opengl defines
|
||||
// and figure out what we even want here...
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue