1
0
Fork 0
mirror of https://git.rip/DMCA_FUCKER/re3.git synced 2024-12-23 18:10:00 +00:00

Merge branch 'lcs' into lcsfont

# Conflicts:
#	src/render/Font.cpp
This commit is contained in:
Sergeanur 2021-01-18 15:01:17 +02:00
commit 8d2aa61f9b
28 changed files with 638 additions and 761 deletions

View file

@ -1,4 +1,4 @@
name: reVC conan+cmake name: reLCS conan+cmake
on: on:
pull_request: pull_request:
push: push:
@ -95,13 +95,13 @@ jobs:
conan export re3mss miles-sdk/master@ conan export re3mss miles-sdk/master@
- name: "Download/build dependencies (conan install)" - name: "Download/build dependencies (conan install)"
run: | run: |
conan install ${{ github.workspace }} reVC/master@ -if build -o reVC:audio=${{ matrix.audio }} -o librw:platform=${{ matrix.platform }} -o librw:gl3_gfxlib=${{ matrix.gl3_gfxlib || 'glfw' }} --build missing -pr:h ./host_profile -pr:b default -s reVC:build_type=RelWithDebInfo -s librw:build_type=RelWithDebInfo conan install ${{ github.workspace }} reLCS/master@ -if build -o reLCS:audio=${{ matrix.audio }} -o librw:platform=${{ matrix.platform }} -o librw:gl3_gfxlib=${{ matrix.gl3_gfxlib || 'glfw' }} --build missing -pr:h ./host_profile -pr:b default -s reLCS:build_type=RelWithDebInfo -s librw:build_type=RelWithDebInfo
env: env:
CONAN_SYSREQUIRES_MODE: enabled CONAN_SYSREQUIRES_MODE: enabled
- name: "Build reVC (conan build)" - name: "Build reLCS (conan build)"
run: | run: |
conan build ${{ github.workspace }} -if build -bf build -pf package conan build ${{ github.workspace }} -if build -bf build -pf package
- name: "Package reVC (conan package)" - name: "Package reLCS (conan package)"
run: | run: |
conan package ${{ github.workspace }} -if build -bf build -pf package conan package ${{ github.workspace }} -if build -bf build -pf package
- name: "Create binary package (cpack)" - name: "Create binary package (cpack)"

View file

@ -5,8 +5,8 @@ import shutil
import textwrap import textwrap
class ReVCConan(ConanFile): class ReLCSConan(ConanFile):
name = "reVC" name = "reLCS"
version = "master" version = "master"
license = "???" # FIXME: https://github.com/GTAmodding/re3/issues/794 license = "???" # FIXME: https://github.com/GTAmodding/re3/issues/794
settings = "os", "arch", "compiler", "build_type" settings = "os", "arch", "compiler", "build_type"
@ -69,10 +69,10 @@ class ReVCConan(ConanFile):
raise ConanInvalidConfiguration("Only `glfw` is supported as gl3_gfxlib.") raise ConanInvalidConfiguration("Only `glfw` is supported as gl3_gfxlib.")
#if not self.options.with_opus: #if not self.options.with_opus:
# if not self.options["libsndfile"].with_external_libs: # if not self.options["libsndfile"].with_external_libs:
# raise ConanInvalidConfiguration("reVC with opus support requires a libsndfile built with external libs (=ogg/flac/opus/vorbis)") # raise ConanInvalidConfiguration("reLCS with opus support requires a libsndfile built with external libs (=ogg/flac/opus/vorbis)")
@property @property
def _reVC_audio(self): def _reLCS_audio(self):
return { return {
"miles": "MSS", "miles": "MSS",
"openal": "OAL", "openal": "OAL",
@ -111,16 +111,16 @@ class ReVCConan(ConanFile):
include("{}/conanbuildinfo.cmake") include("{}/conanbuildinfo.cmake")
conan_basic_setup(TARGETS NO_OUTPUT_DIRS) conan_basic_setup(TARGETS NO_OUTPUT_DIRS)
add_subdirectory("{}" reVC) add_subdirectory("{}" reLCS)
""").format(self.install_folder.replace("\\", "/"), """).format(self.install_folder.replace("\\", "/"),
self.source_folder.replace("\\", "/"))) self.source_folder.replace("\\", "/")))
except FileNotFoundError: except FileNotFoundError:
pass pass
cmake = CMake(self) cmake = CMake(self)
cmake.definitions["REVC_AUDIO"] = self._reVC_audio cmake.definitions["RELCS_AUDIO"] = self._reLCS_audio
cmake.definitions["REVC_WITH_OPUS"] = self.options.with_opus cmake.definitions["RELCS_WITH_OPUS"] = self.options.with_opus
cmake.definitions["REVC_INSTALL"] = True cmake.definitions["RELCS_INSTALL"] = True
cmake.definitions["REVC_VENDORED_LIBRW"] = False cmake.definitions["RELCS_VENDORED_LIBRW"] = False
env = {} env = {}
if self._os_is_playstation2: if self._os_is_playstation2:
cmake.definitions["CMAKE_TOOLCHAIN_FILE"] = self.deps_user_info["ps2dev-cmaketoolchain"].cmake_toolchain_file cmake.definitions["CMAKE_TOOLCHAIN_FILE"] = self.deps_user_info["ps2dev-cmaketoolchain"].cmake_toolchain_file

View file

@ -996,11 +996,13 @@ cSampleManager::Initialise(void)
#ifdef AUDIO_CACHE #ifdef AUDIO_CACHE
FILE *cacheFile = fcaseopen("audio\\sound.cache", "rb"); FILE *cacheFile = fcaseopen("audio\\sound.cache", "rb");
if (cacheFile) { if (cacheFile) {
debug("Loadind audio cache (If game crashes around here, then your cache is corrupted, remove audio/sound.cache)\n");
fread(nStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); fread(nStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile);
fclose(cacheFile); fclose(cacheFile);
} else } else
#endif
{ {
debug("Cannot load audio cache\n");
#endif
for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ ) for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ )
{ {
@ -1019,10 +1021,15 @@ cSampleManager::Initialise(void)
} }
#ifdef AUDIO_CACHE #ifdef AUDIO_CACHE
cacheFile = fcaseopen("audio\\sound.cache", "wb"); cacheFile = fcaseopen("audio\\sound.cache", "wb");
fwrite(nStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); if(cacheFile) {
fclose(cacheFile); debug("Saving audio cache\n");
#endif fwrite(nStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile);
fclose(cacheFile);
} else {
debug("Cannot save audio cache\n");
}
} }
#endif
{ {
if ( !InitialiseSampleBanks() ) if ( !InitialiseSampleBanks() )

View file

@ -393,7 +393,7 @@ CGameLogic::RestorePlayerStuffDuringResurrection(CPlayerPed *pPlayerPed, CVector
CWorld::Add(pPlayerPed); CWorld::Add(pPlayerPed);
CHud::ResetWastedText(); CHud::ResetWastedText();
CStreaming::StreamZoneModels(pos); CStreaming::StreamZoneModels(pos);
clearWaterDrop = true; //clearWaterDrop = true;
} }
void void

View file

@ -605,10 +605,9 @@ public:
float LimitAngleOnCircle(float angle) { return angle < 0.0f ? angle + 360.0f : angle; } float LimitAngleOnCircle(float angle) { return angle < 0.0f ? angle + 360.0f : angle; }
bool ThisIsAValidRandomCop(uint32 mi, int cop, int swat, int fbi, int army, int miami);
bool ThisIsAValidRandomPed(uint32 pedtype, int civ, int gang, int criminal); bool ThisIsAValidRandomPed(uint32 pedtype, int civ, int gang, int criminal);
bool CheckDamagedWeaponType(int32 actual, int32 type); bool CheckDamagedWeaponType(int32 actual, int32 type);
static bool ThisIsAValidRandomCop(int32 mi, bool cop, bool swat, bool fbi, bool army, bool miami);
void ReturnFromGosubOrFunction(); void ReturnFromGosubOrFunction();
}; };

View file

@ -42,6 +42,19 @@
extern const char* scriptfile; extern const char* scriptfile;
#endif #endif
bool CRunningScript::ThisIsAValidRandomCop(uint32 mi, int cop, int swat, int fbi, int army, int miami)
{
switch (mi)
{
case MI_COP: if (cop) return true; break;
case MI_SWAT: if (swat) return true; break;
case MI_FBI: if (fbi) return true; break;
case MI_ARMY: if (army) return true; break;
default: if (mi >= MI_VICE1 && mi <= MI_VICE8 && miami) return true; break;
}
return false;
}
bool CRunningScript::ThisIsAValidRandomPed(uint32 pedtype, int civ, int gang, int criminal) bool CRunningScript::ThisIsAValidRandomPed(uint32 pedtype, int civ, int gang, int criminal)
{ {
switch (pedtype) { switch (pedtype) {
@ -66,19 +79,6 @@ bool CRunningScript::ThisIsAValidRandomPed(uint32 pedtype, int civ, int gang, in
} }
} }
bool CRunningScript::ThisIsAValidRandomCop(int32 mi, bool cop, bool swat, bool fbi, bool army, bool miami)
{
switch (mi)
{
case MI_COP: if (cop) return true;
case MI_SWAT: if (swat) return true;
case MI_FBI: if (fbi) return true;
case MI_ARMY: if (army) return true;
default:
return miami && (mi >= MI_VICE1 && mi <= MI_VICE8);
}
}
int8 CRunningScript::ProcessCommands1000To1099(int32 command) int8 CRunningScript::ProcessCommands1000To1099(int32 command)
{ {
switch (command) { switch (command) {

View file

@ -76,7 +76,7 @@
GlobalScene Scene; GlobalScene Scene;
uint8 work_buff[55000]; uint8 work_buff[102400];
char gString[256]; char gString[256];
char gString2[512]; char gString2[512];
wchar gUString[256]; wchar gUString[256];

View file

@ -7,7 +7,7 @@ struct GlobalScene
}; };
extern GlobalScene Scene; extern GlobalScene Scene;
extern uint8 work_buff[55000]; extern uint8 work_buff[102400];
extern char gString[256]; extern char gString[256];
extern char gString2[512]; extern char gString2[512];
extern wchar gUString[256]; extern wchar gUString[256];

View file

@ -1108,6 +1108,7 @@ CVehicleModelInfo::SetEnvironmentMapCB(RpAtomic *atomic, void *data)
void void
CVehicleModelInfo::SetEnvironmentMap(void) CVehicleModelInfo::SetEnvironmentMap(void)
{ {
/*
CSimpleModelInfo *wheelmi; CSimpleModelInfo *wheelmi;
int32 i; int32 i;
@ -1125,6 +1126,7 @@ CVehicleModelInfo::SetEnvironmentMap(void)
for(i = 0; i < wheelmi->m_numAtomics; i++) for(i = 0; i < wheelmi->m_numAtomics; i++)
SetEnvironmentMapCB(wheelmi->m_atomics[i], nil); SetEnvironmentMapCB(wheelmi->m_atomics[i], nil);
} }
*/
#ifdef EXTENDED_PIPELINES #ifdef EXTENDED_PIPELINES
CustomPipes::AttachVehiclePipe(m_clump); CustomPipes::AttachVehiclePipe(m_clump);
@ -1139,21 +1141,23 @@ CVehicleModelInfo::LoadEnvironmentMaps(void)
txdslot = CTxdStore::FindTxdSlot("particle"); txdslot = CTxdStore::FindTxdSlot("particle");
CTxdStore::PushCurrentTxd(); CTxdStore::PushCurrentTxd();
CTxdStore::SetCurrentTxd(txdslot); CTxdStore::SetCurrentTxd(txdslot);
if(gpWhiteTexture == nil){ /*if(gpWhiteTexture == nil){
gpWhiteTexture = RwTextureRead("white", nil); gpWhiteTexture = RwTextureRead("white", nil);
RwTextureGetName(gpWhiteTexture)[0] = '@'; RwTextureGetName(gpWhiteTexture)[0] = '@';
RwTextureSetFilterMode(gpWhiteTexture, rwFILTERLINEAR); RwTextureSetFilterMode(gpWhiteTexture, rwFILTERLINEAR);
} }*/
CTxdStore::PopCurrentTxd(); CTxdStore::PopCurrentTxd();
} }
void void
CVehicleModelInfo::ShutdownEnvironmentMaps(void) CVehicleModelInfo::ShutdownEnvironmentMaps(void)
{ {
/*
RwTextureDestroy(gpWhiteTexture); RwTextureDestroy(gpWhiteTexture);
gpWhiteTexture = nil; gpWhiteTexture = nil;
RwFrameDestroy(pMatFxIdentityFrame); RwFrameDestroy(pMatFxIdentityFrame);
pMatFxIdentityFrame = nil; pMatFxIdentityFrame = nil;
*/
} }
int int

View file

@ -50,7 +50,7 @@ UnicodeMakeUpperCase(wchar *dst, const wchar *src) //idk what to do with it, see
} }
CFontDetails CFont::Details; CFontDetails CFont::Details;
int16 CFont::NewLine; bool16 CFont::NewLine;
CSprite2d CFont::Sprite[MAX_FONTS]; CSprite2d CFont::Sprite[MAX_FONTS];
CFontRenderState CFont::RenderState; CFontRenderState CFont::RenderState;
@ -274,7 +274,7 @@ CFont::InitPerFrame(void)
Details.anonymous_25 = 0; Details.anonymous_25 = 0;
FontRenderStatePointer.pRenderState = (CFontRenderState*)FontRenderStateBuf; FontRenderStatePointer.pRenderState = (CFontRenderState*)FontRenderStateBuf;
SetDropShadowPosition(0); SetDropShadowPosition(0);
NewLine = 0; NewLine = false;
#ifdef BUTTON_ICONS #ifdef BUTTON_ICONS
PS2Symbol = BUTTON_NONE; PS2Symbol = BUTTON_NONE;
#endif #endif
@ -1277,7 +1277,7 @@ CFont::ParseToken(wchar *s)
break; break;
case 'N': case 'N':
case 'n': case 'n':
NewLine = 1; NewLine = true;
break; break;
case 'b': case 'b':
Details.color.r = 27; Details.color.r = 27;

View file

@ -55,10 +55,10 @@ struct CFontRenderState
float slant; float slant;
float slantRefX; float slantRefX;
float slantRefY; float slantRefY;
bool bIsShadow; bool8 bIsShadow;
bool bFontHalfTexture; bool8 bFontHalfTexture;
bool proportional; bool8 proportional;
bool anonymous_14; bool8 anonymous_14;
int16 style; int16 style;
}; };
@ -126,7 +126,7 @@ class CFont
#else #else
static int16 Size[MAX_FONTS][419]; static int16 Size[MAX_FONTS][419];
#endif #endif
static int16 NewLine; static bool16 NewLine;
public: public:
static CSprite2d Sprite[MAX_FONTS]; static CSprite2d Sprite[MAX_FONTS];
static CFontDetails Details; static CFontDetails Details;
@ -169,7 +169,7 @@ public:
static uint16 *ParseToken(wchar *s, bool japShit = false); static uint16 *ParseToken(wchar *s, bool japShit = false);
#else #else
static uint16 *ParseToken(wchar *s); static uint16 *ParseToken(wchar *s);
static uint16* ParseToken(wchar *s, CRGBA &color, bool &flash, bool &bold); static uint16 *ParseToken(wchar *s, CRGBA &color, bool &flash, bool &bold);
#endif #endif
static void DrawFonts(void); static void DrawFonts(void);
static void RenderFontBuffer(void); static void RenderFontBuffer(void);

View file

@ -591,6 +591,8 @@ CMBlur::AddRenderFx(RwCamera *cam, RwRect *rect, float z, FxType type)
void void
CMBlur::OverlayRenderFx(RwCamera *cam, RwRaster *frontBuf) CMBlur::OverlayRenderFx(RwCamera *cam, RwRaster *frontBuf)
{ {
//TODO(LCS)
#if 0
bool drawWaterDrops = false; bool drawWaterDrops = false;
RwIm2DVertex verts[4]; RwIm2DVertex verts[4];
int red = (0.75f*CTimeCycle::GetDirectionalRed() + CTimeCycle::GetAmbientRed())*0.55f * 255; int red = (0.75f*CTimeCycle::GetDirectionalRed() + CTimeCycle::GetAmbientRed())*0.55f * 255;
@ -796,4 +798,5 @@ CMBlur::OverlayRenderFx(RwCamera *cam, RwRaster *frontBuf)
RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE); RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE);
pBufVertCount = 0; pBufVertCount = 0;
#endif
} }

File diff suppressed because it is too large Load diff

View file

@ -18,11 +18,6 @@ public:
uint32 m_nTimeWhenWillBeDestroyed; uint32 m_nTimeWhenWillBeDestroyed;
uint32 m_nTimeWhenColorWillBeChanged; uint32 m_nTimeWhenColorWillBeChanged;
float m_fZGround; float m_fZGround;
CVector m_vecParticleMovementOffset;
int16 m_nCurrentZRotation;
uint16 m_nZRotationTimer;
float m_fCurrentZRadius;
uint16 m_nZRadiusTimer;
uint8 m_nColorIntensity; uint8 m_nColorIntensity;
uint8 m_nAlpha; uint8 m_nAlpha;
float m_fSize; float m_fSize;
@ -36,6 +31,14 @@ public:
RwRGBA m_Color; RwRGBA m_Color;
CParticle *m_pNext; CParticle *m_pNext;
//CVector m_vecParticleMovementOffset;
//int16 m_nCurrentZRotation;
//uint16 m_nZRotationTimer;
//float m_fCurrentZRadius;
//uint16 m_nZRadiusTimer;
int32 field_4C;
CParticle() CParticle()
{ {
; ;
@ -97,12 +100,9 @@ public:
static void HandleShootableBirdsStuff(CEntity *entity, CVector const&camPos); static void HandleShootableBirdsStuff(CEntity *entity, CVector const&camPos);
}; };
extern bool clearWaterDrop;
extern int32 numWaterDropOnScreen;
extern RwRaster *gpCarSplashRaster[]; extern RwRaster *gpCarSplashRaster[];
extern RwRaster *gpHeatHazeRaster; extern RwRaster *gpHeatHazeRaster;
extern RwRaster *gpDotRaster;
extern RwRaster *gpRainDripRaster[]; extern RwRaster *gpRainDripRaster[];
extern RwRaster *gpRainDripDarkRaster[]; extern RwRaster *gpRainDripDarkRaster[];
VALIDATE_SIZE(CParticle, 0x58); VALIDATE_SIZE(CParticle, 0x50);

View file

@ -4,18 +4,30 @@
#include "FileMgr.h" #include "FileMgr.h"
#include "ParticleMgr.h" #include "ParticleMgr.h"
// --LCS: File done
cParticleSystemMgr mod_ParticleSystemManager; cParticleSystemMgr mod_ParticleSystemManager;
const char *ParticleFilename = "PARTICLE.CFG"; const char *ParticleFilename = "PARTICLE.CFG";
cParticleSystemMgr::cParticleSystemMgr() cParticleSystemMgr::cParticleSystemMgr()
{ {
memset(this, 0, sizeof(*this)); #ifdef FIX_BUGS
m_aParticles = nil;
#endif
}
cParticleSystemMgr::~cParticleSystemMgr()
{
#ifdef FIX_BUGS
delete [] m_aParticles;
#endif
} }
void cParticleSystemMgr::Initialise() void cParticleSystemMgr::Initialise()
{ {
LoadParticleData(); if ( gMakeResources )
LoadParticleData();
for ( int32 i = 0; i < MAX_PARTICLES; i++ ) for ( int32 i = 0; i < MAX_PARTICLES; i++ )
m_aParticles[i].m_pParticles = nil; m_aParticles[i].m_pParticles = nil;
@ -23,20 +35,30 @@ void cParticleSystemMgr::Initialise()
void cParticleSystemMgr::LoadParticleData() void cParticleSystemMgr::LoadParticleData()
{ {
CFileMgr::SetDir("DATA"); #ifdef FIX_BUGS
CFileMgr::LoadFile(ParticleFilename, work_buff, ARRAY_SIZE(work_buff), "r"); delete [] m_aParticles;
#endif
m_aParticles = new tParticleSystemData[MAX_PARTICLES];
memset(m_aParticles, 0, sizeof(tParticleSystemData)*MAX_PARTICLES);
CFileMgr::SetDir("Data");
ssize_t len = CFileMgr::LoadFile(ParticleFilename, work_buff, ARRAY_SIZE(work_buff), "r");
CFileMgr::SetDir(""); CFileMgr::SetDir("");
ASSERT(!(len <= 0));
tParticleSystemData *entry = nil; tParticleSystemData *entry = nil;
int32 type = PARTICLE_FIRST; int32 type = PARTICLE_FIRST;
char *buffEnd = (char *)&work_buff[len];
char *lineStart = (char *)work_buff; char *lineStart = (char *)work_buff;
char *lineEnd = lineStart + 1; char *lineEnd = lineStart + 1;
char line[500]; char line[500];
char delims[4]; char delims[4];
while ( true ) while ( lineStart < buffEnd )
{ {
ASSERT(lineStart != nil); ASSERT(lineStart != nil);
ASSERT(lineEnd != nil); ASSERT(lineEnd != nil);

View file

@ -124,15 +124,18 @@ class cParticleSystemMgr
}; };
public: public:
tParticleSystemData m_aParticles[MAX_PARTICLES]; tParticleSystemData *m_aParticles;//[MAX_PARTICLES];
cParticleSystemMgr(); cParticleSystemMgr();
#ifdef FIX_BUGS
~cParticleSystemMgr();
#endif
void Initialise(); void Initialise();
void LoadParticleData(); void LoadParticleData();
void RangeCheck(tParticleSystemData *pData) { } void RangeCheck(tParticleSystemData *pData) { }
}; };
VALIDATE_SIZE(cParticleSystemMgr, 0x2FFC); VALIDATE_SIZE(cParticleSystemMgr, 0x4);
extern cParticleSystemMgr mod_ParticleSystemManager; extern cParticleSystemMgr mod_ParticleSystemManager;

View file

@ -42,8 +42,6 @@ enum tParticleType
PARTICLE_RAIN_SPLASH_BIGGROW, PARTICLE_RAIN_SPLASH_BIGGROW,
PARTICLE_RAIN_SPLASHUP, PARTICLE_RAIN_SPLASHUP,
PARTICLE_WATERSPRAY, PARTICLE_WATERSPRAY,
PARTICLE_WATERDROP,
PARTICLE_BLOODDROP,
PARTICLE_EXPLOSION_MEDIUM, PARTICLE_EXPLOSION_MEDIUM,
PARTICLE_EXPLOSION_LARGE, PARTICLE_EXPLOSION_LARGE,
PARTICLE_EXPLOSION_MFAST, PARTICLE_EXPLOSION_MFAST,
@ -83,10 +81,11 @@ enum tParticleType
PARTICLE_SHIP_SIDE, PARTICLE_SHIP_SIDE,
PARTICLE_BEASTIE, PARTICLE_BEASTIE,
PARTICLE_RAINDROP_2D, PARTICLE_RAINDROP_2D,
PARTICLE_HEATHAZE, PARTICLE_FERRY_CHIM_SMOKE,
PARTICLE_HEATHAZE_IN_DIST, PARTICLE_MULTIPLAYER_HIT,
PARTICLE_HYDRANT_STEAM,
MAX_PARTICLES, MAX_PARTICLES,
PARTICLE_FIRST = PARTICLE_SPARK, PARTICLE_FIRST = PARTICLE_SPARK,
PARTICLE_LAST = PARTICLE_HEATHAZE_IN_DIST PARTICLE_LAST = PARTICLE_HYDRANT_STEAM
}; };

View file

@ -76,14 +76,14 @@ CShadows::Init(void)
gpShadowBikeTex = RwTextureRead("shad_bike", nil); gpShadowBikeTex = RwTextureRead("shad_bike", nil);
gpShadowBaronTex = RwTextureRead("shad_rcbaron", nil); gpShadowBaronTex = RwTextureRead("shad_rcbaron", nil);
gpShadowExplosionTex = RwTextureRead("shad_exp", nil); gpShadowExplosionTex = RwTextureRead("shad_exp", nil);
gpShadowHeadLightsTex = RwTextureRead("headlight", nil); gpShadowHeadLightsTex = RwTextureRead("headlight_single", nil);
gpOutline1Tex = RwTextureRead("outline_64", nil); gpOutline1Tex = RwTextureRead("outline_64", nil);
gpOutline2Tex = RwTextureRead("outline2_64", nil); gpOutline2Tex = RwTextureRead("outline2_64", nil);
gpOutline3Tex = RwTextureRead("outline3_64", nil); gpOutline3Tex = RwTextureRead("outline3_64", nil);
gpBloodPoolTex = RwTextureRead("bloodpool_64", nil); gpBloodPoolTex = RwTextureRead("bloodpool_64", nil);
gpReflectionTex = RwTextureRead("reflection01", nil); //gpReflectionTex = RwTextureRead("reflection01", nil);
gpWalkDontTex = RwTextureRead("walk_dont", nil); gpWalkDontTex = RwTextureRead("walk_dont", nil);
gpCrackedGlassTex = RwTextureRead("wincrack_32", nil); //gpCrackedGlassTex = RwTextureRead("wincrack_32", nil);
gpPostShadowTex = RwTextureRead("lamp_shad_64", nil); gpPostShadowTex = RwTextureRead("lamp_shad_64", nil);
CTxdStore::PopCurrentTxd(); CTxdStore::PopCurrentTxd();
@ -99,9 +99,9 @@ CShadows::Init(void)
ASSERT(gpOutline2Tex != nil); ASSERT(gpOutline2Tex != nil);
ASSERT(gpOutline3Tex != nil); ASSERT(gpOutline3Tex != nil);
ASSERT(gpBloodPoolTex != nil); ASSERT(gpBloodPoolTex != nil);
ASSERT(gpReflectionTex != nil); //ASSERT(gpReflectionTex != nil);
ASSERT(gpWalkDontTex != nil); ASSERT(gpWalkDontTex != nil);
ASSERT(gpCrackedGlassTex != nil); //ASSERT(gpCrackedGlassTex != nil);
ASSERT(gpPostShadowTex != nil); ASSERT(gpPostShadowTex != nil);
@ -178,9 +178,9 @@ CShadows::Shutdown(void)
ASSERT(gpOutline2Tex != nil); ASSERT(gpOutline2Tex != nil);
ASSERT(gpOutline3Tex != nil); ASSERT(gpOutline3Tex != nil);
ASSERT(gpBloodPoolTex != nil); ASSERT(gpBloodPoolTex != nil);
ASSERT(gpReflectionTex != nil); //ASSERT(gpReflectionTex != nil);
ASSERT(gpWalkDontTex != nil); ASSERT(gpWalkDontTex != nil);
ASSERT(gpCrackedGlassTex != nil); //ASSERT(gpCrackedGlassTex != nil);
ASSERT(gpPostShadowTex != nil); ASSERT(gpPostShadowTex != nil);
RwTextureDestroy(gpShadowCarTex); RwTextureDestroy(gpShadowCarTex);
@ -194,9 +194,9 @@ CShadows::Shutdown(void)
RwTextureDestroy(gpOutline2Tex); RwTextureDestroy(gpOutline2Tex);
RwTextureDestroy(gpOutline3Tex); RwTextureDestroy(gpOutline3Tex);
RwTextureDestroy(gpBloodPoolTex); RwTextureDestroy(gpBloodPoolTex);
RwTextureDestroy(gpReflectionTex); //RwTextureDestroy(gpReflectionTex);
RwTextureDestroy(gpWalkDontTex); RwTextureDestroy(gpWalkDontTex);
RwTextureDestroy(gpCrackedGlassTex); //RwTextureDestroy(gpCrackedGlassTex);
RwTextureDestroy(gpPostShadowTex); RwTextureDestroy(gpPostShadowTex);
} }

View file

@ -10,6 +10,19 @@ float CSprite::m_f2DFarScreenZ;
float CSprite::m_fRecipNearClipPlane; float CSprite::m_fRecipNearClipPlane;
int32 CSprite::m_bFlushSpriteBufferSwitchZTest; int32 CSprite::m_bFlushSpriteBufferSwitchZTest;
float CalcScreenZ(float z)
{
// LCS TODO: check
if ( z == 0.0f )
return CSprite::GetNearScreenZ();
return (z - CDraw::GetNearClipZ())
* (CSprite::GetFarScreenZ() - CSprite::GetNearScreenZ()) * CDraw::GetFarClipZ()
/ ( (CDraw::GetFarClipZ() - CDraw::GetNearClipZ()) * z )
+ CSprite::GetNearScreenZ();
}
float float
CSprite::CalcHorizonCoors(void) CSprite::CalcHorizonCoors(void)
{ {

View file

@ -29,3 +29,5 @@ public:
static void RenderBufferedOneXLUSprite2D_Rotate_Dimension(float x, float y, float w, float h, const RwRGBA &colour, int16 intens, float rotation, uint8 alpha); static void RenderBufferedOneXLUSprite2D_Rotate_Dimension(float x, float y, float w, float h, const RwRGBA &colour, int16 intens, float rotation, uint8 alpha);
}; };
extern float CalcScreenZ(float z);

View file

@ -330,6 +330,7 @@ void CWeather::Update(void)
void CWeather::AddHeatHaze() void CWeather::AddHeatHaze()
{ {
/*
if(TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN || if(TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN ||
TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOP_DOWN_PED) TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOP_DOWN_PED)
return; return;
@ -341,6 +342,7 @@ void CWeather::AddHeatHaze()
pos.y = CGeneral::GetRandomNumberInRange(SCREEN_HEIGHT*0.4f, SCREEN_HEIGHT*0.9f); pos.y = CGeneral::GetRandomNumberInRange(SCREEN_HEIGHT*0.4f, SCREEN_HEIGHT*0.9f);
pos.z = 100.0f; pos.z = 100.0f;
CParticle::AddParticle(PARTICLE_HEATHAZE_IN_DIST, pos, CVector(0.0f, 0.0f, 0.0f)); CParticle::AddParticle(PARTICLE_HEATHAZE_IN_DIST, pos, CVector(0.0f, 0.0f, 0.0f));
*/
} }
void CWeather::AddBeastie() void CWeather::AddBeastie()

View file

@ -2037,6 +2037,7 @@ CAutomobile::PreRender(void)
if(DotProduct(GetForward(), camDist) > 0.0f || if(DotProduct(GetForward(), camDist) > 0.0f ||
TheCamera.GetLookDirection() == LOOKING_LEFT || TheCamera.GetLookDirection() == LOOKING_LEFT ||
TheCamera.GetLookDirection() == LOOKING_RIGHT){ TheCamera.GetLookDirection() == LOOKING_RIGHT){
/*
CParticle::AddParticle(PARTICLE_HEATHAZE, pos1, CVector(0.0f, 0.0f, 0.0f)); CParticle::AddParticle(PARTICLE_HEATHAZE, pos1, CVector(0.0f, 0.0f, 0.0f));
if(pHandling->Flags & HANDLING_DBL_EXHAUST) if(pHandling->Flags & HANDLING_DBL_EXHAUST)
CParticle::AddParticle(PARTICLE_HEATHAZE, pos2, CVector(0.0f, 0.0f, 0.0f)); CParticle::AddParticle(PARTICLE_HEATHAZE, pos2, CVector(0.0f, 0.0f, 0.0f));
@ -2044,6 +2045,7 @@ CAutomobile::PreRender(void)
CParticle::AddParticle(PARTICLE_HEATHAZE, pos1, CVector(0.0f, 0.0f, 0.0f)); CParticle::AddParticle(PARTICLE_HEATHAZE, pos1, CVector(0.0f, 0.0f, 0.0f));
if(pHandling->Flags & HANDLING_DBL_EXHAUST) if(pHandling->Flags & HANDLING_DBL_EXHAUST)
CParticle::AddParticle(PARTICLE_HEATHAZE, pos2, CVector(0.0f, 0.0f, 0.0f)); CParticle::AddParticle(PARTICLE_HEATHAZE, pos2, CVector(0.0f, 0.0f, 0.0f));
*/
} }
} }

View file

@ -1724,7 +1724,7 @@ CBike::PreRender(void)
TheCamera.GetLookDirection() == LOOKING_RIGHT) TheCamera.GetLookDirection() == LOOKING_RIGHT)
pos1 -= 0.2f*GetForward(); pos1 -= 0.2f*GetForward();
CParticle::AddParticle(PARTICLE_HEATHAZE, pos1, CVector(0.0f, 0.0f, 0.0f)); //CParticle::AddParticle(PARTICLE_HEATHAZE, pos1, CVector(0.0f, 0.0f, 0.0f));
} }
} }
} }

View file

@ -682,6 +682,7 @@ CBoat::ProcessControl(void)
} }
// Spray waterdrops on screen // Spray waterdrops on screen
/*
if(TheCamera.GetLookingForwardFirstPerson() && FindPlayerVehicle() && FindPlayerVehicle()->IsBoat() && if(TheCamera.GetLookingForwardFirstPerson() && FindPlayerVehicle() && FindPlayerVehicle()->IsBoat() &&
m_nDeltaVolumeUnderWater > 0 && numWaterDropOnScreen < 20){ m_nDeltaVolumeUnderWater > 0 && numWaterDropOnScreen < 20){
CVector dropPos; CVector dropPos;
@ -712,7 +713,7 @@ CBoat::ProcessControl(void)
if(CParticle::AddParticle(PARTICLE_WATERDROP, dropPos, dropDir, nil, if(CParticle::AddParticle(PARTICLE_WATERDROP, dropPos, dropDir, nil,
CGeneral::GetRandomNumberInRange(0.1f, 0.15f), dropColor, 0, 0, frm)) CGeneral::GetRandomNumberInRange(0.1f, 0.15f), dropColor, 0, 0, frm))
numWaterDropOnScreen++; numWaterDropOnScreen++;
} }*/
if(m_fPrevVolumeUnderWater == 0.0f && m_fVolumeUnderWater > 0.0f && GetModelIndex() == MI_SKIMMER){ if(m_fPrevVolumeUnderWater == 0.0f && m_fVolumeUnderWater > 0.0f && GetModelIndex() == MI_SKIMMER){
CVector splashDir(0.0f, 0.0f, 0.25f*speed); CVector splashDir(0.0f, 0.0f, 0.25f*speed);

View file

@ -645,9 +645,9 @@ CWeapon::FireMelee(CEntity *shooter, CVector &fireSource)
CVector dropDir(CGeneral::GetRandomNumberInRange(-0.15f, 0.15f), CGeneral::GetRandomNumberInRange(0.1f, 0.35f), 0.f); CVector dropDir(CGeneral::GetRandomNumberInRange(-0.15f, 0.15f), CGeneral::GetRandomNumberInRange(0.1f, 0.35f), 0.f);
CVector dropPos(CGeneral::GetRandomNumberInRange(SCREEN_STRETCH_X(50.0f), SCREEN_STRETCH_FROM_RIGHT(50.0f)), CVector dropPos(CGeneral::GetRandomNumberInRange(SCREEN_STRETCH_X(50.0f), SCREEN_STRETCH_FROM_RIGHT(50.0f)),
CGeneral::GetRandomNumberInRange(SCREEN_STRETCH_Y(50.0f), SCREEN_STRETCH_FROM_BOTTOM(50.0f)), 1.f); CGeneral::GetRandomNumberInRange(SCREEN_STRETCH_Y(50.0f), SCREEN_STRETCH_FROM_BOTTOM(50.0f)), 1.f);
CParticle::AddParticle(PARTICLE_BLOODDROP, dropPos, dropDir, nil, CGeneral::GetRandomNumberInRange(0.1f, 0.15f), /*CParticle::AddParticle(PARTICLE_BLOODDROP, dropPos, dropDir, nil, CGeneral::GetRandomNumberInRange(0.1f, 0.15f),
CRGBA(0, 0, 0, 0), 0, 0, CGeneral::GetRandomNumber() & 1, 0); CRGBA(0, 0, 0, 0), 0, 0, CGeneral::GetRandomNumber() & 1, 0);
*/
} }
if (info->m_AnimToPlay == ASSOCGRP_KNIFE) if (info->m_AnimToPlay == ASSOCGRP_KNIFE)
{ {
@ -737,7 +737,7 @@ CWeapon::FireMelee(CEntity *shooter, CVector &fireSource)
{ {
nearCar->VehicleDamage(info->m_nDamage * (0.00075f * nearCar->pHandling->fMass), gaTempSphereColPoints[0].pieceB); nearCar->VehicleDamage(info->m_nDamage * (0.00075f * nearCar->pHandling->fMass), gaTempSphereColPoints[0].pieceB);
CParticle::AddParticle(PARTICLE_HEATHAZE, gaTempSphereColPoints[0].point, CVector(0.0f, 0.0f, 0.0f), 0, 0.0f, 0, 0, 0, 0); //CParticle::AddParticle(PARTICLE_HEATHAZE, gaTempSphereColPoints[0].point, CVector(0.0f, 0.0f, 0.0f), 0, 0.0f, 0, 0, 0, 0);
} }
else else
{ {
@ -814,7 +814,7 @@ CWeapon::FireMelee(CEntity *shooter, CVector &fireSource)
CParticle::AddParticle(PARTICLE_SPARK, gaTempSphereColPoints[0].point, 0.1f * gaTempSphereColPoints[0].normal, 0, 0.0f, 0, 0, 0, 0); CParticle::AddParticle(PARTICLE_SPARK, gaTempSphereColPoints[0].point, 0.1f * gaTempSphereColPoints[0].normal, 0, 0.0f, 0, 0, 0, 0);
} }
CParticle::AddParticle(PARTICLE_HEATHAZE, gaTempSphereColPoints[0].point, CVector(0.0f, 0.0f, 0.0f), 0, 0.0f, 0, 0, 0, 0); //CParticle::AddParticle(PARTICLE_HEATHAZE, gaTempSphereColPoints[0].point, CVector(0.0f, 0.0f, 0.0f), 0, 0.0f, 0, 0, 0, 0);
if (!damageEntityRegistered) if (!damageEntityRegistered)
{ {

2
vendor/librw vendored

@ -1 +1 @@
Subproject commit 78d540fce0ca090b07377cee40d73eadfb7a699d Subproject commit 61b288a9fe72ae4073c0ac5fd2a5815ed510c8c8

View file

@ -56,75 +56,86 @@ typedef struct _AILSOUNDINFO
void const *initial_ptr; void const *initial_ptr;
} AILSOUNDINFO; } AILSOUNDINFO;
#define DLLEXPORT extern "C" __declspec(dllexport) typedef U32 (WINAPI *AIL_file_open_callback)(char const * Filename, U32 * FileHandle);
DLLEXPORT S32 WINAPI AIL_enumerate_3D_providers(HPROENUM *next, HPROVIDER *dest, C8 **name); typedef void (WINAPI *AIL_file_close_callback)(U32 FileHandle);
DLLEXPORT void WINAPI AIL_release_3D_sample_handle(H3DSAMPLE S);
DLLEXPORT void WINAPI AIL_close_3D_provider(HPROVIDER lib);
DLLEXPORT void WINAPI AIL_set_3D_provider_preference(HPROVIDER lib, C8 const *name, void const *val);
DLLEXPORT M3DRESULT WINAPI AIL_open_3D_provider(HPROVIDER lib);
DLLEXPORT C8 *WINAPI AIL_last_error(void);
DLLEXPORT S32 WINAPI AIL_3D_room_type(HPROVIDER lib);
DLLEXPORT void WINAPI AIL_set_3D_room_type(HPROVIDER lib, S32 room_type);
DLLEXPORT void WINAPI AIL_3D_provider_attribute(HPROVIDER lib, C8 const *name, void *val);
DLLEXPORT H3DSAMPLE WINAPI AIL_allocate_3D_sample_handle(HPROVIDER lib);
DLLEXPORT void WINAPI AIL_set_3D_sample_effects_level(H3DSAMPLE S, F32 effects_level);
DLLEXPORT void WINAPI AIL_set_3D_speaker_type(HPROVIDER lib, S32 speaker_type);
DLLEXPORT HSTREAM WINAPI AIL_open_stream(HDIGDRIVER dig, C8 const *filename, S32 stream_mem);
DLLEXPORT void WINAPI AIL_stream_ms_position(HSTREAM S, S32 *total_milliseconds, S32 *current_milliseconds);
DLLEXPORT void WINAPI AIL_close_stream(HSTREAM stream);
DLLEXPORT S32 WINAPI AIL_digital_handle_release(HDIGDRIVER drvr);
DLLEXPORT S32 WINAPI AIL_digital_handle_reacquire(HDIGDRIVER drvr);
DLLEXPORT C8 *WINAPI AIL_set_redist_directory(C8 const *dir);
DLLEXPORT S32 WINAPI AIL_startup(void);
DLLEXPORT S32 WINAPI AIL_set_preference(U32 number, S32 value);
DLLEXPORT HDIGDRIVER WINAPI AIL_open_digital_driver(U32 frequency, S32 bits, S32 channel, U32 flags);
DLLEXPORT void *WINAPI AIL_mem_alloc_lock(U32 size);
DLLEXPORT HSAMPLE WINAPI AIL_allocate_sample_handle(HDIGDRIVER dig);
DLLEXPORT void WINAPI AIL_init_sample(HSAMPLE S);
DLLEXPORT void WINAPI AIL_set_sample_type(HSAMPLE S, S32 format, U32 flags);
DLLEXPORT void WINAPI AIL_pause_stream(HSTREAM stream, S32 onoff);
DLLEXPORT void WINAPI AIL_release_sample_handle(HSAMPLE S);
DLLEXPORT void WINAPI AIL_mem_free_lock(void *ptr);
DLLEXPORT void WINAPI AIL_close_digital_driver(HDIGDRIVER dig);
DLLEXPORT void WINAPI AIL_shutdown(void);
DLLEXPORT void WINAPI AIL_set_3D_sample_volume(H3DSAMPLE S, S32 volume);
DLLEXPORT void WINAPI AIL_set_sample_volume(HSAMPLE S, S32 volume);
DLLEXPORT void WINAPI AIL_set_sample_address(HSAMPLE S, void const *start, U32 len);
DLLEXPORT S32 WINAPI AIL_set_3D_sample_info(H3DSAMPLE S, AILSOUNDINFO const *info);
DLLEXPORT void WINAPI AIL_set_3D_position(H3DPOBJECT obj, F32 X, F32 Y, F32 Z);
DLLEXPORT void WINAPI AIL_set_3D_sample_distances(H3DSAMPLE S, F32 max_dist, F32 min_dist);
DLLEXPORT void WINAPI AIL_set_sample_pan(HSAMPLE S, S32 pan);
DLLEXPORT void WINAPI AIL_set_sample_playback_rate(HSAMPLE S, S32 playback_rate);
DLLEXPORT void WINAPI AIL_set_3D_sample_playback_rate(H3DSAMPLE S, S32 playback_rate);
DLLEXPORT void WINAPI AIL_set_sample_loop_block(HSAMPLE S, S32 loop_start_offset, S32 loop_end_offset);
DLLEXPORT void WINAPI AIL_set_3D_sample_loop_block(H3DSAMPLE S, S32 loop_start_offset, S32 loop_end_offset);
DLLEXPORT void WINAPI AIL_set_sample_loop_count(HSAMPLE S, S32 loop_count);
DLLEXPORT void WINAPI AIL_set_3D_sample_loop_count(H3DSAMPLE S, S32 loops);
DLLEXPORT U32 WINAPI AIL_sample_status(HSAMPLE S);
DLLEXPORT U32 WINAPI AIL_3D_sample_status(H3DSAMPLE S);
DLLEXPORT void WINAPI AIL_start_sample(HSAMPLE S);
DLLEXPORT void WINAPI AIL_start_3D_sample(H3DSAMPLE S);
DLLEXPORT void WINAPI AIL_end_sample(HSAMPLE S);
DLLEXPORT void WINAPI AIL_end_3D_sample(H3DSAMPLE S);
DLLEXPORT void WINAPI AIL_set_stream_loop_count(HSTREAM stream, S32 count);
DLLEXPORT S32 WINAPI AIL_service_stream(HSTREAM stream, S32 fillup);
DLLEXPORT void WINAPI AIL_start_stream(HSTREAM stream);
DLLEXPORT void WINAPI AIL_set_stream_ms_position(HSTREAM S, S32 milliseconds);
DLLEXPORT void WINAPI AIL_set_stream_volume(HSTREAM stream, S32 volume);
DLLEXPORT void WINAPI AIL_set_stream_pan(HSTREAM stream, S32 pan);
DLLEXPORT S32 WINAPI AIL_stream_status(HSTREAM stream);
typedef U32(WINAPI* AIL_file_open_callback)(char const * Filename, U32 * FileHandle); #define AIL_FILE_SEEK_BEGIN 0
typedef void (WINAPI* AIL_file_close_callback) (U32 FileHandle);
#define AIL_FILE_SEEK_BEGIN 0
#define AIL_FILE_SEEK_CURRENT 1 #define AIL_FILE_SEEK_CURRENT 1
#define AIL_FILE_SEEK_END 2 #define AIL_FILE_SEEK_END 2
typedef S32(WINAPI* AIL_file_seek_callback) (U32 FileHandle, S32 Offset, U32 Type); typedef S32(WINAPI *AIL_file_seek_callback)(U32 FileHandle, S32 Offset, U32 Type);
typedef U32(WINAPI* AIL_file_read_callback) (U32 FileHandle, void* Buffer, U32 Bytes); typedef U32(WINAPI *AIL_file_read_callback)(U32 FileHandle, void* Buffer, U32 Bytes);
DLLEXPORT void WINAPI AIL_set_file_callbacks(AIL_file_open_callback opencb, AIL_file_close_callback closecb, AIL_file_seek_callback seekcb, AIL_file_read_callback readcb); #ifdef RE3MSS_EXPORTS
#define RE3MSS_EXPORT __declspec(dllexport)
#else
#define RE3MSS_EXPORT __declspec(dllimport)
#endif
#ifdef __cplusplus
extern "C" {
#endif
RE3MSS_EXPORT S32 WINAPI AIL_enumerate_3D_providers(HPROENUM *next, HPROVIDER *dest, C8 **name);
RE3MSS_EXPORT void WINAPI AIL_release_3D_sample_handle(H3DSAMPLE S);
RE3MSS_EXPORT void WINAPI AIL_close_3D_provider(HPROVIDER lib);
RE3MSS_EXPORT void WINAPI AIL_set_3D_provider_preference(HPROVIDER lib, C8 const *name, void const *val);
RE3MSS_EXPORT M3DRESULT WINAPI AIL_open_3D_provider(HPROVIDER lib);
RE3MSS_EXPORT C8 *WINAPI AIL_last_error(void);
RE3MSS_EXPORT S32 WINAPI AIL_3D_room_type(HPROVIDER lib);
RE3MSS_EXPORT void WINAPI AIL_set_3D_room_type(HPROVIDER lib, S32 room_type);
RE3MSS_EXPORT void WINAPI AIL_3D_provider_attribute(HPROVIDER lib, C8 const *name, void *val);
RE3MSS_EXPORT H3DSAMPLE WINAPI AIL_allocate_3D_sample_handle(HPROVIDER lib);
RE3MSS_EXPORT void WINAPI AIL_set_3D_sample_effects_level(H3DSAMPLE S, F32 effects_level);
RE3MSS_EXPORT void WINAPI AIL_set_3D_speaker_type(HPROVIDER lib, S32 speaker_type);
RE3MSS_EXPORT HSTREAM WINAPI AIL_open_stream(HDIGDRIVER dig, C8 const *filename, S32 stream_mem);
RE3MSS_EXPORT void WINAPI AIL_stream_ms_position(HSTREAM S, S32 *total_milliseconds, S32 *current_milliseconds);
RE3MSS_EXPORT void WINAPI AIL_close_stream(HSTREAM stream);
RE3MSS_EXPORT S32 WINAPI AIL_digital_handle_release(HDIGDRIVER drvr);
RE3MSS_EXPORT S32 WINAPI AIL_digital_handle_reacquire(HDIGDRIVER drvr);
RE3MSS_EXPORT C8 *WINAPI AIL_set_redist_directory(C8 const *dir);
RE3MSS_EXPORT S32 WINAPI AIL_startup(void);
RE3MSS_EXPORT S32 WINAPI AIL_set_preference(U32 number, S32 value);
RE3MSS_EXPORT HDIGDRIVER WINAPI AIL_open_digital_driver(U32 frequency, S32 bits, S32 channel, U32 flags);
RE3MSS_EXPORT void *WINAPI AIL_mem_alloc_lock(U32 size);
RE3MSS_EXPORT HSAMPLE WINAPI AIL_allocate_sample_handle(HDIGDRIVER dig);
RE3MSS_EXPORT void WINAPI AIL_init_sample(HSAMPLE S);
RE3MSS_EXPORT void WINAPI AIL_set_sample_type(HSAMPLE S, S32 format, U32 flags);
RE3MSS_EXPORT void WINAPI AIL_pause_stream(HSTREAM stream, S32 onoff);
RE3MSS_EXPORT void WINAPI AIL_release_sample_handle(HSAMPLE S);
RE3MSS_EXPORT void WINAPI AIL_mem_free_lock(void *ptr);
RE3MSS_EXPORT void WINAPI AIL_close_digital_driver(HDIGDRIVER dig);
RE3MSS_EXPORT void WINAPI AIL_shutdown(void);
RE3MSS_EXPORT void WINAPI AIL_set_3D_sample_volume(H3DSAMPLE S, S32 volume);
RE3MSS_EXPORT void WINAPI AIL_set_sample_volume(HSAMPLE S, S32 volume);
RE3MSS_EXPORT void WINAPI AIL_set_sample_address(HSAMPLE S, void const *start, U32 len);
RE3MSS_EXPORT S32 WINAPI AIL_set_3D_sample_info(H3DSAMPLE S, AILSOUNDINFO const *info);
RE3MSS_EXPORT void WINAPI AIL_set_3D_position(H3DPOBJECT obj, F32 X, F32 Y, F32 Z);
RE3MSS_EXPORT void WINAPI AIL_set_3D_sample_distances(H3DSAMPLE S, F32 max_dist, F32 min_dist);
RE3MSS_EXPORT void WINAPI AIL_set_sample_pan(HSAMPLE S, S32 pan);
RE3MSS_EXPORT void WINAPI AIL_set_sample_playback_rate(HSAMPLE S, S32 playback_rate);
RE3MSS_EXPORT void WINAPI AIL_set_3D_sample_playback_rate(H3DSAMPLE S, S32 playback_rate);
RE3MSS_EXPORT void WINAPI AIL_set_sample_loop_block(HSAMPLE S, S32 loop_start_offset, S32 loop_end_offset);
RE3MSS_EXPORT void WINAPI AIL_set_3D_sample_loop_block(H3DSAMPLE S, S32 loop_start_offset, S32 loop_end_offset);
RE3MSS_EXPORT void WINAPI AIL_set_sample_loop_count(HSAMPLE S, S32 loop_count);
RE3MSS_EXPORT void WINAPI AIL_set_3D_sample_loop_count(H3DSAMPLE S, S32 loops);
RE3MSS_EXPORT U32 WINAPI AIL_sample_status(HSAMPLE S);
RE3MSS_EXPORT U32 WINAPI AIL_3D_sample_status(H3DSAMPLE S);
RE3MSS_EXPORT void WINAPI AIL_start_sample(HSAMPLE S);
RE3MSS_EXPORT void WINAPI AIL_start_3D_sample(H3DSAMPLE S);
RE3MSS_EXPORT void WINAPI AIL_end_sample(HSAMPLE S);
RE3MSS_EXPORT void WINAPI AIL_end_3D_sample(H3DSAMPLE S);
RE3MSS_EXPORT void WINAPI AIL_set_stream_loop_count(HSTREAM stream, S32 count);
RE3MSS_EXPORT S32 WINAPI AIL_service_stream(HSTREAM stream, S32 fillup);
RE3MSS_EXPORT void WINAPI AIL_start_stream(HSTREAM stream);
RE3MSS_EXPORT void WINAPI AIL_set_stream_ms_position(HSTREAM S, S32 milliseconds);
RE3MSS_EXPORT void WINAPI AIL_set_stream_volume(HSTREAM stream, S32 volume);
RE3MSS_EXPORT void WINAPI AIL_set_stream_pan(HSTREAM stream, S32 pan);
RE3MSS_EXPORT S32 WINAPI AIL_stream_status(HSTREAM stream);
RE3MSS_EXPORT void WINAPI AIL_set_file_callbacks(AIL_file_open_callback opencb, AIL_file_close_callback closecb, AIL_file_seek_callback seekcb, AIL_file_read_callback readcb);
#ifdef __cplusplus
}
#endif

Binary file not shown.