From 7e64441e1bfd8d660840f75e48865786d84bbf63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20W=2E=20Urba=C5=84czyk?= Date: Wed, 28 Jul 2010 11:34:26 +0000 Subject: [PATCH] Fixed #87 and #542 --- hch/CVideoHandler.cpp | 7 ++++++- hch/CVideoHandler.h | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/hch/CVideoHandler.cpp b/hch/CVideoHandler.cpp index 86020d19e..c96ad4552 100644 --- a/hch/CVideoHandler.cpp +++ b/hch/CVideoHandler.cpp @@ -4,7 +4,9 @@ #include "CVideoHandler.h" #include #include "../client/SDL_Extensions.h" +#include "../client/CPlayerInterface.h" +extern SystemOptions GDefaultOptions; //reads events and returns true on key down static bool keyDown() { @@ -279,6 +281,7 @@ CSmackPlayer::CSmackPlayer() ptrSmackOpen = (SmackOpen)FindAddress("_SmackOpen@12"); ptrSmackSoundOnOff = (SmackSoundOnOff)FindAddress("_SmackSoundOnOff@8"); ptrSmackClose = (SmackClose)FindAddress("_SmackClose@4"); + ptrVolumePan = (SmackVolumePan)FindAddress("_SmackVolumePan@16"); } CSmackPlayer::~CSmackPlayer() @@ -297,7 +300,7 @@ bool CSmackPlayer::open( std::string name ) { Uint32 flags[2] = {0xff400, 0xfe400}; - data = ptrSmackOpen( (void*)name.c_str(), 0x8600, -1); + data = ptrSmackOpen( (void*)name.c_str(), flags[1], -1); if (!data) { tlog1 << "Smack cannot open " << name << std::endl; @@ -307,6 +310,8 @@ bool CSmackPlayer::open( std::string name ) buffer = new char[data->width*data->height*2]; buf = buffer+data->width*(data->height-1)*2; // adjust pointer position for later use by 'SmackToBuffer' + + ptrVolumePan(data, 0xfe000, 3640 * GDefaultOptions.musicVolume / 11, 0x8000); //set volume return true; } diff --git a/hch/CVideoHandler.h b/hch/CVideoHandler.h index f972b4191..1895cbdf8 100644 --- a/hch/CVideoHandler.h +++ b/hch/CVideoHandler.h @@ -125,6 +125,7 @@ typedef void (__stdcall* SmackClose)(SmackStruct*); typedef void (__stdcall* SmackToBuffer) (SmackStruct*, int, int, int, int, char *, ui32); typedef bool (__stdcall* SmackWait)(SmackStruct*); typedef void (__stdcall* SmackSoundOnOff) (SmackStruct*, bool); +typedef int (__stdcall* SmackVolumePan)(SmackStruct *, int SmackTrack, int volume, int pan); @@ -138,6 +139,7 @@ public: SmackWait ptrSmackWait; SmackSoundOnOff ptrSmackSoundOnOff; SmackClose ptrSmackClose; + SmackVolumePan ptrVolumePan; char *buffer, *buf; SmackStruct* data;