Merged revisions 32744-32745,32747,32750-32759,32762-32764,32769,32777,32783,32785-32786,32789-32791,32798-32799,32801-32807,32809-32812,32816-32817,32819-32821,32823-32830,32832-32836,32838-32844,32846-32850,32852-32854,32858-32859,32865-32868,32873-32874,32879,32883,32895,32899,32902-32904,32910-32912,32923-32924,32930-32931,32938,32940,32948-32949,32951,32960-32964,32966-32970,32972-32974,32976,32978,32983,32986-32990,32992,32994,33002-33004,33006-33007,33009-33010,33014,33017,33021-33023,33030,33033 via svnmerge from
https://scummvm.svn.sourceforge.net/svnroot/scummvm/scummvm/trunk svn-id: r33051
This commit is contained in:
commit
d2e8d4831e
197 changed files with 6324 additions and 4365 deletions
2
NEWS
2
NEWS
|
@ -10,11 +10,13 @@ For a more comprehensive changelog for the latest experimental SVN code, see:
|
||||||
- Added support for the PC version of Waxworks
|
- Added support for the PC version of Waxworks
|
||||||
- Added support for the Macintosh version of I Have no Mouth, and I
|
- Added support for the Macintosh version of I Have no Mouth, and I
|
||||||
must Scream
|
must Scream
|
||||||
|
- Added support for Drascula: The Vampire Strikes Back
|
||||||
|
|
||||||
General:
|
General:
|
||||||
- Added CAMD MIDI driver for AmigaOS4.
|
- Added CAMD MIDI driver for AmigaOS4.
|
||||||
- Revived the PS2 port (was already in 0.11.1 but was forgotten in the
|
- Revived the PS2 port (was already in 0.11.1 but was forgotten in the
|
||||||
release notes).
|
release notes).
|
||||||
|
- Plugged numerous memory leaks in all engines (part of GSoC'08 task)
|
||||||
|
|
||||||
AGOS:
|
AGOS:
|
||||||
- Fixed palette issues in Amiga versions of Simon the Sorcerer 1.
|
- Fixed palette issues in Amiga versions of Simon the Sorcerer 1.
|
||||||
|
|
|
@ -16,6 +16,7 @@ LDFLAGS = -Wl,-Ttext,0x8c010000 -nostartfiles $(ronindir)/lib/crt0.o
|
||||||
INCLUDES= -I./ -I$(srcdir) -I$(ronindir)/include/ -I$(srcdir)/engines
|
INCLUDES= -I./ -I$(srcdir) -I$(ronindir)/include/ -I$(srcdir)/engines
|
||||||
LIBS = -L$(ronindir)/lib -lmad -lronin -lz -lm
|
LIBS = -L$(ronindir)/lib -lmad -lronin -lz -lm
|
||||||
EXECUTABLE = scummvm.elf
|
EXECUTABLE = scummvm.elf
|
||||||
|
DEPDIR = .deps
|
||||||
PLUGIN_PREFIX =
|
PLUGIN_PREFIX =
|
||||||
PLUGIN_SUFFIX = .plg
|
PLUGIN_SUFFIX = .plg
|
||||||
PLUGIN_EXTRA_DEPS = plugin.x plugin.syms scummvm.elf
|
PLUGIN_EXTRA_DEPS = plugin.x plugin.syms scummvm.elf
|
||||||
|
@ -32,12 +33,37 @@ ifdef DYNAMIC_MODULES
|
||||||
DEFINES += -DDYNAMIC_MODULES
|
DEFINES += -DDYNAMIC_MODULES
|
||||||
PRE_OBJS_FLAGS = -Wl,--whole-archive
|
PRE_OBJS_FLAGS = -Wl,--whole-archive
|
||||||
POST_OBJS_FLAGS = -Wl,--no-whole-archive
|
POST_OBJS_FLAGS = -Wl,--no-whole-archive
|
||||||
|
ENABLED=DYNAMIC_PLUGIN
|
||||||
|
else
|
||||||
|
ENABLED=STATIC_PLUGIN
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ENABLE_SCUMM = $(ENABLED)
|
||||||
|
ENABLE_SCUMM_7_8 = $(ENABLED)
|
||||||
|
ENABLE_HE = $(ENABLED)
|
||||||
|
ENABLE_AGI = $(ENABLED)
|
||||||
|
ENABLE_AGOS = $(ENABLED)
|
||||||
|
ENABLE_CINE = $(ENABLED)
|
||||||
|
ENABLE_CRUISE = $(ENABLED)
|
||||||
|
ENABLE_DRASCULA = $(ENABLED)
|
||||||
|
ENABLE_GOB = $(ENABLED)
|
||||||
|
ENABLE_IGOR = $(ENABLED)
|
||||||
|
ENABLE_KYRA = $(ENABLED)
|
||||||
|
ENABLE_LURE = $(ENABLED)
|
||||||
|
ENABLE_M4 = $(ENABLED)
|
||||||
|
ENABLE_MADE = $(ENABLED)
|
||||||
|
ENABLE_PARALLACTION = $(ENABLED)
|
||||||
|
ENABLE_QUEEN = $(ENABLED)
|
||||||
|
ENABLE_SAGA = $(ENABLED)
|
||||||
|
ENABLE_SKY = $(ENABLED)
|
||||||
|
ENABLE_SWORD1 = $(ENABLED)
|
||||||
|
ENABLE_SWORD2 = $(ENABLED)
|
||||||
|
ENABLE_TOUCHE = $(ENABLED)
|
||||||
|
|
||||||
OBJS := dcmain.o time.o display.o audio.o input.o selector.o icon.o \
|
OBJS := dcmain.o time.o display.o audio.o input.o selector.o icon.o \
|
||||||
label.o vmsave.o softkbd.o dcloader.o cache.o dc-fs.o
|
label.o vmsave.o softkbd.o dcloader.o cache.o dc-fs.o
|
||||||
|
|
||||||
MODULE_DIRS += .
|
MODULE_DIRS += ./
|
||||||
|
|
||||||
include $(srcdir)/Makefile.common
|
include $(srcdir)/Makefile.common
|
||||||
|
|
||||||
|
|
|
@ -25,17 +25,18 @@
|
||||||
|
|
||||||
#include <common/scummsys.h>
|
#include <common/scummsys.h>
|
||||||
#include "engines/engine.h"
|
#include "engines/engine.h"
|
||||||
#include "sound/mixer.h"
|
#include "sound/mixer_intern.h"
|
||||||
#include "dc.h"
|
#include "dc.h"
|
||||||
|
|
||||||
EXTERN_C void *memcpy4s(void *s1, const void *s2, unsigned int n);
|
EXTERN_C void *memcpy4s(void *s1, const void *s2, unsigned int n);
|
||||||
|
|
||||||
void initSound()
|
uint OSystem_Dreamcast::initSound()
|
||||||
{
|
{
|
||||||
stop_sound();
|
stop_sound();
|
||||||
do_sound_command(CMD_SET_FREQ_EXP(FREQ_22050_EXP));
|
do_sound_command(CMD_SET_FREQ_EXP(FREQ_22050_EXP));
|
||||||
do_sound_command(CMD_SET_STEREO(1));
|
do_sound_command(CMD_SET_STEREO(1));
|
||||||
do_sound_command(CMD_SET_BUFFER(SOUND_BUFFER_SHIFT));
|
do_sound_command(CMD_SET_BUFFER(SOUND_BUFFER_SHIFT));
|
||||||
|
return read_sound_int(&SOUNDSTATUS->freq);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_Dreamcast::checkSound()
|
void OSystem_Dreamcast::checkSound()
|
||||||
|
@ -61,7 +62,7 @@ void OSystem_Dreamcast::checkSound()
|
||||||
if (n<100)
|
if (n<100)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Audio::Mixer::mixCallback(_mixer, (byte*)temp_sound_buffer,
|
_mixer->mixCallback((byte*)temp_sound_buffer,
|
||||||
2*SAMPLES_TO_BYTES(n));
|
2*SAMPLES_TO_BYTES(n));
|
||||||
|
|
||||||
if (fillpos+n > curr_ring_buffer_samples) {
|
if (fillpos+n > curr_ring_buffer_samples) {
|
||||||
|
@ -77,8 +78,4 @@ void OSystem_Dreamcast::checkSound()
|
||||||
fillpos = 0;
|
fillpos = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int OSystem_Dreamcast::getOutputSampleRate() const
|
|
||||||
{
|
|
||||||
return read_sound_int(&SOUNDSTATUS->freq);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include <ronin/soundcommon.h>
|
#include <ronin/soundcommon.h>
|
||||||
#include "backends/timer/default/default-timer.h"
|
#include "backends/timer/default/default-timer.h"
|
||||||
#include "backends/fs/fs-factory.h"
|
#include "backends/fs/fs-factory.h"
|
||||||
|
#include "sound/mixer_intern.h"
|
||||||
|
|
||||||
#define NUM_BUFFERS 4
|
#define NUM_BUFFERS 4
|
||||||
#define SOUND_BUFFER_SHIFT 3
|
#define SOUND_BUFFER_SHIFT 3
|
||||||
|
@ -195,7 +196,7 @@ class OSystem_Dreamcast : public OSystem, public FilesystemFactory {
|
||||||
private:
|
private:
|
||||||
|
|
||||||
Common::SaveFileManager *_savefile;
|
Common::SaveFileManager *_savefile;
|
||||||
Audio::Mixer *_mixer;
|
Audio::MixerImpl *_mixer;
|
||||||
DefaultTimerManager *_timer;
|
DefaultTimerManager *_timer;
|
||||||
SoftKeyboard _softkbd;
|
SoftKeyboard _softkbd;
|
||||||
|
|
||||||
|
@ -223,6 +224,7 @@ class OSystem_Dreamcast : public OSystem, public FilesystemFactory {
|
||||||
|
|
||||||
int temp_sound_buffer[RING_BUFFER_SAMPLES>>SOUND_BUFFER_SHIFT];
|
int temp_sound_buffer[RING_BUFFER_SAMPLES>>SOUND_BUFFER_SHIFT];
|
||||||
|
|
||||||
|
uint initSound();
|
||||||
void checkSound();
|
void checkSound();
|
||||||
|
|
||||||
void drawMouse(int xdraw, int ydraw, int w, int h,
|
void drawMouse(int xdraw, int ydraw, int w, int h,
|
||||||
|
@ -237,6 +239,5 @@ class OSystem_Dreamcast : public OSystem, public FilesystemFactory {
|
||||||
extern int handleInput(struct mapledev *pad,
|
extern int handleInput(struct mapledev *pad,
|
||||||
int &mouse_x, int &mouse_y,
|
int &mouse_x, int &mouse_y,
|
||||||
byte &shiftFlags, Interactive *inter = NULL);
|
byte &shiftFlags, Interactive *inter = NULL);
|
||||||
extern void initSound();
|
|
||||||
extern bool selectGame(char *&, char *&, class Icon &);
|
extern bool selectGame(char *&, char *&, class Icon &);
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#include <common/config-manager.h>
|
#include <common/config-manager.h>
|
||||||
|
|
||||||
#include "backends/plugins/dc/dc-provider.h"
|
#include "backends/plugins/dc/dc-provider.h"
|
||||||
#include "sound/mixer.h"
|
#include "sound/mixer_intern.h"
|
||||||
|
|
||||||
|
|
||||||
Icon icon;
|
Icon icon;
|
||||||
|
@ -54,8 +54,10 @@ OSystem_Dreamcast::OSystem_Dreamcast()
|
||||||
void OSystem_Dreamcast::initBackend()
|
void OSystem_Dreamcast::initBackend()
|
||||||
{
|
{
|
||||||
_savefile = createSavefileManager();
|
_savefile = createSavefileManager();
|
||||||
_mixer = new Audio::Mixer();
|
_mixer = new Audio::MixerImpl(this);
|
||||||
_timer = new DefaultTimerManager();
|
_timer = new DefaultTimerManager();
|
||||||
|
_mixer->setOutputRate(initSound());
|
||||||
|
_mixer->setReady(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -216,7 +218,6 @@ int main()
|
||||||
static int argc = 1;
|
static int argc = 1;
|
||||||
|
|
||||||
dc_init_hardware();
|
dc_init_hardware();
|
||||||
initSound();
|
|
||||||
|
|
||||||
g_system = new OSystem_Dreamcast();
|
g_system = new OSystem_Dreamcast();
|
||||||
assert(g_system);
|
assert(g_system);
|
||||||
|
|
|
@ -25,7 +25,9 @@
|
||||||
|
|
||||||
#include <common/scummsys.h>
|
#include <common/scummsys.h>
|
||||||
#include <engines/engine.h>
|
#include <engines/engine.h>
|
||||||
|
#include <engines/metaengine.h>
|
||||||
#include <base/plugins.h>
|
#include <base/plugins.h>
|
||||||
|
#include <base/game.h>
|
||||||
#include <common/fs.h>
|
#include <common/fs.h>
|
||||||
#include <common/events.h>
|
#include <common/events.h>
|
||||||
#include "dc.h"
|
#include "dc.h"
|
||||||
|
@ -149,15 +151,6 @@ struct Dir
|
||||||
|
|
||||||
static Game the_game;
|
static Game the_game;
|
||||||
|
|
||||||
static void detectGames(FSList &files, GameList &candidates)
|
|
||||||
{
|
|
||||||
const EnginePluginList &plugins = EngineMan.getPlugins();
|
|
||||||
EnginePluginList::const_iterator iter = plugins.begin();
|
|
||||||
for (iter = plugins.begin(); iter != plugins.end(); ++iter) {
|
|
||||||
candidates.push_back((*iter)->detectGames(files));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool isIcon(const FilesystemNode &entry)
|
static bool isIcon(const FilesystemNode &entry)
|
||||||
{
|
{
|
||||||
int l = entry.getDisplayName().size();
|
int l = entry.getDisplayName().size();
|
||||||
|
@ -227,8 +220,7 @@ static int findGames(Game *games, int max)
|
||||||
files.push_back(*entry);
|
files.push_back(*entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
GameList candidates;
|
GameList candidates = EngineMan.detectGames(files);
|
||||||
detectGames(files, candidates);
|
|
||||||
|
|
||||||
for (GameList::const_iterator ge = candidates.begin();
|
for (GameList::const_iterator ge = candidates.begin();
|
||||||
ge != candidates.end(); ++ge)
|
ge != candidates.end(); ++ge)
|
||||||
|
|
|
@ -168,7 +168,7 @@ bool displayModeIs8Bit = false;
|
||||||
u8 gameID;
|
u8 gameID;
|
||||||
|
|
||||||
bool snapToBorder = false;
|
bool snapToBorder = false;
|
||||||
bool consoleEnable = false;
|
bool consoleEnable = true;
|
||||||
bool gameScreenSwap = false;
|
bool gameScreenSwap = false;
|
||||||
bool isCpuScalerEnabled();
|
bool isCpuScalerEnabled();
|
||||||
//#define HEAVY_LOGGING
|
//#define HEAVY_LOGGING
|
||||||
|
@ -899,12 +899,6 @@ u16* get8BitBackBuffer() {
|
||||||
return BG_GFX + 0x10000; // 16bit qty!
|
return BG_GFX + 0x10000; // 16bit qty!
|
||||||
}
|
}
|
||||||
|
|
||||||
void setSoundProc(OSystem_DS::SoundProc proc, void* param) {
|
|
||||||
// consolePrintf("Set sound callback");
|
|
||||||
soundCallback = proc;
|
|
||||||
soundParam = param;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The sound system in ScummVM seems to always return stereo interleaved samples.
|
// The sound system in ScummVM seems to always return stereo interleaved samples.
|
||||||
// Here, I'm treating an 11Khz stereo stream as a 22Khz mono stream, which works sorta ok, but is
|
// Here, I'm treating an 11Khz stereo stream as a 22Khz mono stream, which works sorta ok, but is
|
||||||
// a horrible bodge. Any advice on how to change the engine to output mono would be greatly
|
// a horrible bodge. Any advice on how to change the engine to output mono would be greatly
|
||||||
|
@ -914,7 +908,8 @@ void doSoundCallback() {
|
||||||
consolePrintf("doSoundCallback...");
|
consolePrintf("doSoundCallback...");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (soundCallback) {
|
if (OSystem_DS::instance())
|
||||||
|
if (OSystem_DS::instance()->getMixerImpl()) {
|
||||||
lastCallbackFrame = frameCount;
|
lastCallbackFrame = frameCount;
|
||||||
|
|
||||||
for (int r = IPC->playingSection; r < IPC->playingSection + 4; r++) {
|
for (int r = IPC->playingSection; r < IPC->playingSection + 4; r++) {
|
||||||
|
@ -923,7 +918,7 @@ void doSoundCallback() {
|
||||||
if (IPC->fillNeeded[chunk]) {
|
if (IPC->fillNeeded[chunk]) {
|
||||||
IPC->fillNeeded[chunk] = false;
|
IPC->fillNeeded[chunk] = false;
|
||||||
DC_FlushAll();
|
DC_FlushAll();
|
||||||
soundCallback(soundParam, (byte *) (soundBuffer + ((bufferSamples >> 2) * chunk)), bufferSamples >> 1);
|
OSystem_DS::instance()->getMixerImpl()->mixCallback((byte *) (soundBuffer + ((bufferSamples >> 2) * chunk)), bufferSamples >> 1);
|
||||||
IPC->fillNeeded[chunk] = false;
|
IPC->fillNeeded[chunk] = false;
|
||||||
DC_FlushAll();
|
DC_FlushAll();
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,7 +88,6 @@ int getMillis(); // Return the current runtime in milliseconds
|
||||||
void doTimerCallback(); // Call callback function if required
|
void doTimerCallback(); // Call callback function if required
|
||||||
|
|
||||||
// Sound
|
// Sound
|
||||||
void setSoundProc(OSystem_DS::SoundProc proc, void* param); // Setup a callback function for sound
|
|
||||||
void doSoundCallback(); // Call function if sound buffers need more data
|
void doSoundCallback(); // Call function if sound buffers need more data
|
||||||
void playSound(const void* data, u32 length, bool loop, bool adpcm = false, int rate = 22050); // Start a sound
|
void playSound(const void* data, u32 length, bool loop, bool adpcm = false, int rate = 22050); // Start a sound
|
||||||
void stopSound(int channel);
|
void stopSound(int channel);
|
||||||
|
|
|
@ -67,11 +67,13 @@ void OSystem_DS::initBackend() {
|
||||||
ConfMan.setInt("autosave_period", 0);
|
ConfMan.setInt("autosave_period", 0);
|
||||||
ConfMan.setBool("FM_medium_quality", true);
|
ConfMan.setBool("FM_medium_quality", true);
|
||||||
|
|
||||||
_mixer = new DSAudioMixer;
|
_mixer = new DSAudioMixer(this);
|
||||||
_timer = new DSTimerManager;
|
_timer = new DSTimerManager();
|
||||||
DS::setSoundProc(Audio::Mixer::mixCallback, _mixer);
|
|
||||||
DS::setTimerCallback(&OSystem_DS::timerHandler, 10);
|
DS::setTimerCallback(&OSystem_DS::timerHandler, 10);
|
||||||
|
|
||||||
|
_mixer->setOutputRate(11025 /*DS::getSoundFrequency()*/);
|
||||||
|
_mixer->setReady(true);
|
||||||
|
|
||||||
OSystem::initBackend();
|
OSystem::initBackend();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,7 +141,7 @@ void OSystem_DS::setPalette(const byte *colors, uint start, uint num) {
|
||||||
green >>= 3;
|
green >>= 3;
|
||||||
blue >>= 3;
|
blue >>= 3;
|
||||||
|
|
||||||
// if (r != 255)
|
if (r != 255)
|
||||||
{
|
{
|
||||||
BG_PALETTE[r] = red | (green << 5) | (blue << 10);
|
BG_PALETTE[r] = red | (green << 5) | (blue << 10);
|
||||||
if (!DS::getKeyboardEnable()) {
|
if (!DS::getKeyboardEnable()) {
|
||||||
|
@ -158,13 +160,13 @@ bool OSystem_DS::grabRawScreen(Graphics::Surface* surf) {
|
||||||
// Ensure we copy using 16 bit quantities due to limitation of VRAM addressing
|
// Ensure we copy using 16 bit quantities due to limitation of VRAM addressing
|
||||||
|
|
||||||
|
|
||||||
u16* image = (u16 *) DS::get8BitBackBuffer();
|
const u16* image = (const u16 *) DS::get8BitBackBuffer();
|
||||||
for (int y = 0; y < DS::getGameHeight(); y++)
|
for (int y = 0; y < DS::getGameHeight(); y++)
|
||||||
{
|
{
|
||||||
DC_FlushRange(image + (y << 8), DS::getGameWidth());
|
DC_FlushRange(image + (y << 8), DS::getGameWidth());
|
||||||
for (int x = 0; x < DS::getGameWidth() >> 1; x++)
|
for (int x = 0; x < DS::getGameWidth() >> 1; x++)
|
||||||
{
|
{
|
||||||
*(((u16 *) (surf->pixels)) + y * (DS::getGameWidth() >> 1) + x) = image[y << 8 + x];
|
*(((u16 *) (surf->pixels)) + y * (DS::getGameWidth() >> 1) + x) = image[(y << 8) + x];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,7 +279,7 @@ void OSystem_DS::grabOverlay (OverlayColor *buf, int pitch) {
|
||||||
|
|
||||||
void OSystem_DS::copyRectToOverlay (const OverlayColor *buf, int pitch, int x, int y, int w, int h) {
|
void OSystem_DS::copyRectToOverlay (const OverlayColor *buf, int pitch, int x, int y, int w, int h) {
|
||||||
u16* bg = (u16 *) DS::get16BitBackBuffer();
|
u16* bg = (u16 *) DS::get16BitBackBuffer();
|
||||||
u16* src = (u16 *) buf;
|
const u16* src = (const u16 *) buf;
|
||||||
|
|
||||||
// if (x + w > 256) w = 256 - x;
|
// if (x + w > 256) w = 256 - x;
|
||||||
//if (x + h > 256) h = 256 - y;
|
//if (x + h > 256) h = 256 - y;
|
||||||
|
@ -433,13 +435,7 @@ void OSystem_DS::unlockMutex(MutexRef mutex) {
|
||||||
void OSystem_DS::deleteMutex(MutexRef mutex) {
|
void OSystem_DS::deleteMutex(MutexRef mutex) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_DS::clearSoundCallback() {
|
int OSystem_DS::getOutputSampleRate() const {
|
||||||
// consolePrintf("Clearing sound callback");
|
|
||||||
// DS::setSoundProc(NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
int OSystem_DS::getOutputSampleRate() const
|
|
||||||
{
|
|
||||||
return DS::getSoundFrequency();
|
return DS::getSoundFrequency();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,10 +30,13 @@
|
||||||
#include "gbampsave.h"
|
#include "gbampsave.h"
|
||||||
#include "backends/saves/default/default-saves.h"
|
#include "backends/saves/default/default-saves.h"
|
||||||
#include "backends/timer/default/default-timer.h"
|
#include "backends/timer/default/default-timer.h"
|
||||||
#include "sound/mixer.h"
|
#include "sound/mixer_intern.h"
|
||||||
#include "graphics/surface.h"
|
#include "graphics/surface.h"
|
||||||
|
|
||||||
class DSAudioMixer : public Audio::Mixer {
|
class DSAudioMixer : public Audio::MixerImpl {
|
||||||
|
|
||||||
|
public:
|
||||||
|
DSAudioMixer(OSystem* system) : Audio::MixerImpl(system) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
class DSTimerManager : public DefaultTimerManager {
|
class DSTimerManager : public DefaultTimerManager {
|
||||||
|
@ -62,7 +65,7 @@ protected:
|
||||||
Graphics::Surface* createTempFrameBuffer();
|
Graphics::Surface* createTempFrameBuffer();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
typedef void (*SoundProc)(byte *buf, int len);
|
||||||
typedef int (*TimerProc)(int interval);
|
typedef int (*TimerProc)(int interval);
|
||||||
|
|
||||||
OSystem_DS();
|
OSystem_DS();
|
||||||
|
@ -114,7 +117,6 @@ public:
|
||||||
virtual void unlockMutex(MutexRef mutex);
|
virtual void unlockMutex(MutexRef mutex);
|
||||||
virtual void deleteMutex(MutexRef mutex);
|
virtual void deleteMutex(MutexRef mutex);
|
||||||
|
|
||||||
virtual void clearSoundCallback();
|
|
||||||
virtual int getOutputSampleRate() const;
|
virtual int getOutputSampleRate() const;
|
||||||
|
|
||||||
virtual bool openCD(int drive);
|
virtual bool openCD(int drive);
|
||||||
|
@ -147,6 +149,8 @@ public:
|
||||||
virtual void unlockScreen();
|
virtual void unlockScreen();
|
||||||
|
|
||||||
virtual Audio::Mixer* getMixer() { return _mixer; }
|
virtual Audio::Mixer* getMixer() { return _mixer; }
|
||||||
|
Audio::MixerImpl* getMixerImpl() { return _mixer; }
|
||||||
|
|
||||||
virtual Common::TimerManager* getTimerManager() { return _timer; }
|
virtual Common::TimerManager* getTimerManager() { return _timer; }
|
||||||
static int timerHandler(int t);
|
static int timerHandler(int t);
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#include "wordcompletion.h"
|
#include "wordcompletion.h"
|
||||||
#include "engines/agi/agi.h"
|
|
||||||
#include "osystem_ds.h"
|
#include "osystem_ds.h"
|
||||||
|
#include "engines/agi/agi.h" // Caution for #define for NUM_CHANNELS, causes problems in mixer_intern.h
|
||||||
|
|
||||||
#ifdef ENABLE_AGI
|
#ifdef ENABLE_AGI
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
ScummVM - GP2X SPECIFIC README - 0.10.0 SVN
|
ScummVM - GP2X SPECIFIC README - HEAD SVN
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
Contents:
|
Contents:
|
||||||
|
|
|
@ -2,12 +2,15 @@
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>ScummVM - GP2X SPECIFIC README</title>
|
<title>ScummVM - GP2X SPECIFIC README</title>
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<span style="font-weight: bold;">ScummVM - GP2X SPECIFIC README - 0.10.0 SVN<br>
|
<span style="font-weight: bold;">ScummVM -
|
||||||
|
GP2X SPECIFIC README - HEAD SVN<br>
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
<hr style="width: 100%; height: 2px;"><br>
|
<hr style="width: 100%; height: 2px;"><br>
|
||||||
|
@ -16,52 +19,65 @@
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
|
||||||
<li><a href="#About_the_backendport">About the backend/port</a></li>
|
<li><a href="#About_the_backendport">About the
|
||||||
|
backend/port</a></li>
|
||||||
|
|
||||||
<li><a href="#Game_compatibility">Game compatability</a></li>
|
<li><a href="#Game_compatibility">Game
|
||||||
|
compatability</a></li>
|
||||||
|
|
||||||
<li><a href="#Included_engines">Included engines</a></li>
|
<li><a href="#Included_engines">Included engines</a></li>
|
||||||
|
|
||||||
<li><a href="#Supported_audio_options">Supported audio options</a></li>
|
<li><a href="#Supported_audio_options">Supported
|
||||||
|
audio options</a></li>
|
||||||
|
|
||||||
<li><a href="#Supported_cut-scene_options">Supported cut-scene options</a></li>
|
<li><a href="#Supported_cut-scene_options">Supported
|
||||||
|
cut-scene options</a></li>
|
||||||
|
|
||||||
<li><a href="#Recent_changes">Recent changes</a></li>
|
<li><a href="#Recent_changes">Recent changes</a></li>
|
||||||
|
|
||||||
<li><a href="#How_to_save">How to save</a></li>
|
<li><a href="#How_to_save">How to save</a></li>
|
||||||
|
|
||||||
<li><a href="#Controller_mappings">Controller mappings</a></li>
|
<li><a href="#Controller_mappings">Controller
|
||||||
|
mappings</a></li>
|
||||||
|
|
||||||
<li><a href="#Know_issues">Know issues</a></li>
|
<li><a href="#Know_issues">Know issues</a></li>
|
||||||
|
|
||||||
<li><a href="#Major_TODOs">Major TODO's</a></li>
|
<li><a href="#Major_TODOs">Major TODO's</a></li>
|
||||||
|
|
||||||
<li><a href="#Additional_resourceslinks">Additional resources/links</a></li>
|
<li><a href="#Additional_resourceslinks">Additional
|
||||||
|
resources/links</a></li>
|
||||||
|
|
||||||
<li><a href="#Credits">Credits</a></li>
|
<li><a href="#Credits">Credits</a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<hr style="width: 100%; height: 2px;"><a style="font-weight: bold;" name="About_the_backendport"></a><span style="font-weight: bold;">About the backend/port</span><br>
|
<hr style="width: 100%; height: 2px;"><a style="font-weight: bold;" name="About_the_backendport"></a><span style="font-weight: bold;">About the backend/port</span><br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
This is the readme for the offficial GP2X ScummVM backend (also known as the GP2X port).<br>
|
This is the readme for the offficial GP2X ScummVM backend (also known
|
||||||
|
as the GP2X port).<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
This is an SVN test release of ScummVM for the GP2X, it would be appreciated
|
This is an SVN test release of ScummVM for the GP2X, it would be
|
||||||
|
appreciated
|
||||||
if this SVN test distribution was not mirrored and that people be
|
if this SVN test distribution was not mirrored and that people be
|
||||||
directed to <a href="http://www.distant-earth.com/scummvm">http://www.distant-earth.com/scummvm</a> instead for updated SVN builds.<br>
|
directed to <a href="http://www.distant-earth.com/scummvm">http://www.distant-earth.com/scummvm</a>
|
||||||
|
instead for updated SVN builds.<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
Full supported official releases of the GP2X ScummVM backend are made
|
Full supported official releases of the GP2X ScummVM backend are made
|
||||||
in line with main official releases and are avalalble from the <a href="http://www.scummvm.org/downloads.php">ScummVM downloads page</a>.<br>
|
in line with main official releases and are avalalble from the <a href="http://www.scummvm.org/downloads.php">ScummVM
|
||||||
|
downloads page</a>.<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
This build is in an active state of development and as such no ‘expected’ behavior can be guaranteed ;).<br>
|
This build is in an active state of development and as such no
|
||||||
|
‘expected’ behavior can be guaranteed ;).<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
@ -69,47 +85,59 @@ SVN builds are quickly tested with firmware 2.0.0 for reference.<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
Please refer to the <a href="http://forums.scummvm.org/viewforum.php?f=14">GP2X ScummVM forum</a> and <a href="http://wiki.scummvm.org/index.php/GP2X">WiKi</a> for the latest information on the port.<br>
|
Please refer to the <a href="http://forums.scummvm.org/viewforum.php?f=14">GP2X
|
||||||
|
ScummVM forum</a> and <a href="http://wiki.scummvm.org/index.php/GP2X">WiKi</a>
|
||||||
|
for the latest information on the port.<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<hr style="width: 100%; height: 2px;"><a style="font-weight: bold;" name="Game_compatibility"></a><span style="font-weight: bold;">Game compatibility</span><br>
|
<hr style="width: 100%; height: 2px;"><a style="font-weight: bold;" name="Game_compatibility"></a><span style="font-weight: bold;">Game compatibility</span><br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
For information on the compatability of a specific game please refer to the <a href="http://wiki.scummvm.org/index.php/GP2X#Compatibility_List">GP2X compatability section of the ScummVM WiKi</a>.<br>
|
For information on the compatability of a specific game please refer to
|
||||||
|
the <a href="http://wiki.scummvm.org/index.php/GP2X#Compatibility_List">GP2X
|
||||||
|
compatability section of the ScummVM WiKi</a>.<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
Please note the version and date of the ScummVM build you are running when reviewing the above list.<br>
|
Please note the version and date of the ScummVM build you are running
|
||||||
|
when reviewing the above list.<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<hr style="width: 100%; height: 2px;"><a style="font-weight: bold;" name="Included_engines"></a><span style="font-weight: bold;">Included engines</span><br>
|
<hr style="width: 100%; height: 2px;"><a style="font-weight: bold;" name="Included_engines"></a><span style="font-weight: bold;">Included engines</span><br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
Just because an engine is included does not mean any/all of its games
|
Just because an engine is included does not mean any/all of its games
|
||||||
are supported. Please check game compatability for more infomation.<br>
|
are supported. Please check game compatability for more infomation.<br>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
|
||||||
Scumm - (All games supported by ScummVM should work to some extent, using the hardware scalar if needed)</li>
|
<li>Scumm - (All games supported by ScummVM should work to some
|
||||||
|
extent, using the hardware scalar if needed)</li>
|
||||||
|
|
||||||
<li>AGOS (AKA Simon) - (Simon the Sorcerer one and two).</li>
|
<li>AGOS (AKA Simon) - (Simon the Sorcerer one and two).</li>
|
||||||
|
|
||||||
<li>Sky - (Beneath a Steel Sky)</li>
|
<li>Sky - (Beneath a Steel Sky)</li>
|
||||||
<li>
|
|
||||||
Sword - (Broken Sword 1) - This engine uses the hardware scalar to
|
<li>Sword - (Broken Sword 1) - This engine uses the hardware
|
||||||
|
scalar to
|
||||||
downsize the graphics to fix on the GP2X. It is NOT very nice to look
|
downsize the graphics to fix on the GP2X. It is NOT very nice to look
|
||||||
at.</li>
|
at.</li>
|
||||||
<li>
|
|
||||||
Sword2 - (Broken Sword 2) - This engine uses the hardware
|
<li>Sword2 - (Broken Sword 2) - This engine uses the hardware
|
||||||
scalar to downsize the graphics to fix on the GP2X. It is NOT very nice
|
scalar to downsize the graphics to fix on the GP2X. It is NOT very nice
|
||||||
to look at.</li>
|
to look at.</li>
|
||||||
<li>
|
|
||||||
Gob - (Goblins one)</li>
|
|
||||||
<li>
|
|
||||||
Queen - (Flight of the Amazon Queen)</li>
|
|
||||||
<li>
|
|
||||||
Kyra - (The Legend of Kyrandia)</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
<li>Gob - (Goblins one)</li>
|
||||||
|
|
||||||
|
<li>Queen - (Flight of the Amazon Queen)</li>
|
||||||
|
|
||||||
|
<li>Kyra - (The Legend of Kyrandia)</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
All other game engines are disabled in this release.<br>
|
All other game engines are disabled in this release.<br>
|
||||||
|
|
||||||
|
@ -155,13 +183,18 @@ DXA video support will be added as soon as it is stable.<br>
|
||||||
|
|
||||||
Enabled hardware scalar code.<br>
|
Enabled hardware scalar code.<br>
|
||||||
|
|
||||||
Now built using SDL 1.2.9 for the parts of the port that use SDL (some parts now hit the hardware directly).<br>
|
Now built using SDL 1.2.9 for the parts of the port that use SDL (some
|
||||||
|
parts now hit the hardware directly).<br>
|
||||||
|
|
||||||
Enabled new launcher - (Ensure defaulttheme.zip is in the same folder as the executable).<br>
|
Enabled new launcher - (Ensure defaulttheme.zip is in the same folder
|
||||||
|
as the executable).<br>
|
||||||
|
|
||||||
Aspect Ratio Correction can now be disabled ‘per game’. When adding a game you can find this option on the GFX tab. <br>
|
Aspect Ratio Correction can now be disabled ‘per
|
||||||
|
game’. When adding a game you can find this option on the GFX
|
||||||
|
tab. <br>
|
||||||
|
|
||||||
Note: This will cause the game to run with a black border at the bottom as it will be rendered to a 320*200 frame.<br>
|
Note: This will cause the game to run with a black border at the bottom
|
||||||
|
as it will be rendered to a 320*200 frame.<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
@ -169,7 +202,9 @@ Note: This will cause the game to run with a black border at the bottom as it wi
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<span style="font-weight: bold;">NOTE:</span> Everything is saved to the SD card, saves are stored in the <span style="font-weight: bold;">saves</span> folder under your main ScummVM executable unless you set another save location.<br>
|
<span style="font-weight: bold;">NOTE:</span>
|
||||||
|
Everything is saved to the SD card, saves are stored in the <span style="font-weight: bold;">saves</span> folder under
|
||||||
|
your main ScummVM executable unless you set another save location.<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
@ -178,7 +213,8 @@ same place as the ScummVM executable.<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
The save process below is for Scumm engine games but the principle is the same for all.<br>
|
The save process below is for Scumm engine games but the
|
||||||
|
principle is the same for all.<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
@ -198,11 +234,13 @@ In Game.<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
Basically the emulated keys you can use are equivelent to the values buttons are mapped to, <br>
|
Basically the emulated keys you can use are equivelent to the values
|
||||||
|
buttons are mapped to, <br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
I have a virtual keyboard like the GP32 one (left/right on the stick to pick chars) to add in at some point ;-)<br>
|
I have a virtual keyboard like the GP32 one (left/right on the stick to
|
||||||
|
pick chars) to add in at some point ;-)<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
@ -262,9 +300,11 @@ Select: Exit ScummVM completely (and gracefully)<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
Possible random crash (well SegFault). I have had this happen twice and have not tracked down the cause. <br>
|
Possible random crash (well SegFault). I have had this happen twice and
|
||||||
|
have not tracked down the cause. <br>
|
||||||
|
|
||||||
It happens very infrequently, both times it was in the DOTT CD intro. Saving often is never a bad idea anyhow.<br>
|
It happens very infrequently, both times it was in the DOTT CD intro.
|
||||||
|
Saving often is never a bad idea anyhow.<br>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
@ -272,11 +312,14 @@ It happens very infrequently, both times it was in the DOTT CD intro. Saving oft
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
Fix save support when using the Sky engine (Beneath a Steel Sky) - You CAN'T save at the moment but auto save works.<br>
|
Fix save support when using the Sky engine (Beneath a Steel Sky) - You
|
||||||
|
CAN'T save at the moment but auto save works.<br>
|
||||||
|
|
||||||
Look into inconsistencies with AGOS engine and map Y key to a button combination to allow clean quitting (Simon 1/2).<br>
|
Look into inconsistencies with AGOS engine and map Y key to a button
|
||||||
|
combination to allow clean quitting (Simon 1/2).<br>
|
||||||
|
|
||||||
Add splash-screen and pre-ScummVM config menu (CPU speed, LCD timings etc.) - Partly done.<br>
|
Add splash-screen and pre-ScummVM config menu (CPU speed, LCD timings
|
||||||
|
etc.) - Partly done.<br>
|
||||||
|
|
||||||
Fix TV out, maybe make it an option in the pre-ScummVM config menu.<br>
|
Fix TV out, maybe make it an option in the pre-ScummVM config menu.<br>
|
||||||
|
|
||||||
|
@ -284,17 +327,29 @@ Any help appreciated :).<br>
|
||||||
|
|
||||||
<br style="font-weight: bold;">
|
<br style="font-weight: bold;">
|
||||||
|
|
||||||
<hr style="width: 100%; height: 2px;"><a style="font-weight: bold;" name="Additional_resourceslinks"></a><span style="font-weight: bold;">Additional resources/links</span><br>
|
<hr style="width: 100%; height: 2px;"><a style="font-weight: bold;" name="Additional_resourceslinks"></a><span style="font-weight: bold;">Additional resources/links<br>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
</span><span style="font-weight: bold;">Note:</span>
|
||||||
|
When providing feedback,
|
||||||
|
requests, forum posts, bug reports or anything like that always include
|
||||||
|
a mention of the version of ScummVM you are using (the build version,
|
||||||
|
date and time can be seen in the main game launcher window).<br>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
|
||||||
<li><a href="http://wiki.scummvm.org/index.php/GP2X">ScummVM WiKi GP2X page</a></li>
|
<li><a href="http://wiki.scummvm.org/index.php/GP2X">ScummVM
|
||||||
|
WiKi GP2X page</a></li>
|
||||||
|
|
||||||
<li><a href="http://forums.scummvm.org/viewforum.php?f=14">ScummVM forums GP2X forum</a></li>
|
<li><a href="http://forums.scummvm.org/viewforum.php?f=14">ScummVM
|
||||||
|
forums GP2X forum</a></li>
|
||||||
|
|
||||||
<li><a href="http://www.distant-earth.com/scummvm">My own ScummVM page</a> (for SVN/test builds)</li>
|
<li><a href="http://www.distant-earth.com/scummvm">My
|
||||||
|
own ScummVM page</a> (for SVN/test builds)</li>
|
||||||
|
|
||||||
<li><a href="http://www.scummvm.org">Main ScummVM site</a> (for official supported release builds)</li>
|
<li><a href="http://www.scummvm.org">Main ScummVM
|
||||||
|
site</a> (for official supported release builds)</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
0
backends/platform/gp2x/build/build.sh
Normal file → Executable file
0
backends/platform/gp2x/build/build.sh
Normal file → Executable file
0
backends/platform/gp2x/build/bundle.sh
Normal file → Executable file
0
backends/platform/gp2x/build/bundle.sh
Normal file → Executable file
0
backends/platform/gp2x/build/clean.sh
Normal file → Executable file
0
backends/platform/gp2x/build/clean.sh
Normal file → Executable file
4
backends/platform/gp2x/build/config.sh
Normal file → Executable file
4
backends/platform/gp2x/build/config.sh
Normal file → Executable file
|
@ -17,7 +17,7 @@ export DEFINES=-DNDEBUG
|
||||||
|
|
||||||
# Edit the configure line to suit.
|
# Edit the configure line to suit.
|
||||||
cd ../../../..
|
cd ../../../..
|
||||||
./configure --backend=gp2x --disable-mt32emu --host=gp2x --disable-flac --disable-nasm --disable-hq-scalers --with-sdl-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6/bin --with-mpeg2-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6 --enable-tremor --with-tremor-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6 --enable-zlib --with-zlib-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6 --enable-mad --with-mad-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6
|
./configure --backend=gp2x --disable-mt32emu --host=gp2x --disable-flac --disable-nasm --disable-hq-scalers --with-sdl-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6/bin --with-mpeg2-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6 --enable-tremor --with-tremor-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6 --enable-zlib --with-zlib-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6 --enable-mad --with-mad-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6 --enable-made --enable-m4
|
||||||
#--enable-plugins
|
#--enable-plugins --default-dynamic
|
||||||
|
|
||||||
echo Generating config for GP2X complete. Check for errors.
|
echo Generating config for GP2X complete. Check for errors.
|
||||||
|
|
0
backends/platform/gp2x/build/scummvm.gpe
Normal file → Executable file
0
backends/platform/gp2x/build/scummvm.gpe
Normal file → Executable file
|
@ -37,7 +37,7 @@
|
||||||
#include <SDL_gp2x.h>
|
#include <SDL_gp2x.h>
|
||||||
|
|
||||||
namespace Audio {
|
namespace Audio {
|
||||||
class Mixer;
|
class MixerImpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Common {
|
namespace Common {
|
||||||
|
@ -128,12 +128,10 @@ public:
|
||||||
virtual bool pollEvent(Common::Event &event); // overloaded by CE backend
|
virtual bool pollEvent(Common::Event &event); // overloaded by CE backend
|
||||||
|
|
||||||
// Set function that generates samples
|
// Set function that generates samples
|
||||||
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
void setupMixer();
|
||||||
virtual bool setSoundCallback(SoundProc proc, void *param); // overloaded by CE backend
|
static void mixCallback(void *s, byte *samples, int len);
|
||||||
virtual Audio::Mixer *getMixer();
|
virtual Audio::Mixer *getMixer();
|
||||||
|
|
||||||
void clearSoundCallback();
|
|
||||||
|
|
||||||
// Poll CD status
|
// Poll CD status
|
||||||
// Returns true if cd audio is playing
|
// Returns true if cd audio is playing
|
||||||
bool pollCD();
|
bool pollCD();
|
||||||
|
@ -181,7 +179,6 @@ public:
|
||||||
int getGraphicsMode() const;
|
int getGraphicsMode() const;
|
||||||
|
|
||||||
bool openCD(int drive);
|
bool openCD(int drive);
|
||||||
int getOutputSampleRate() const;
|
|
||||||
|
|
||||||
bool hasFeature(Feature f);
|
bool hasFeature(Feature f);
|
||||||
void setFeatureState(Feature f, bool enable);
|
void setFeatureState(Feature f, bool enable);
|
||||||
|
@ -369,7 +366,7 @@ protected:
|
||||||
Common::SaveFileManager *_savefile;
|
Common::SaveFileManager *_savefile;
|
||||||
FilesystemFactory *getFilesystemFactory();
|
FilesystemFactory *getFilesystemFactory();
|
||||||
|
|
||||||
Audio::Mixer *_mixer;
|
Audio::MixerImpl *_mixer;
|
||||||
|
|
||||||
SDL_TimerID _timerID;
|
SDL_TimerID _timerID;
|
||||||
Common::TimerManager *_timer;
|
Common::TimerManager *_timer;
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
#include "backends/timer/default/default-timer.h"
|
#include "backends/timer/default/default-timer.h"
|
||||||
#include "backends/plugins/posix/posix-provider.h"
|
#include "backends/plugins/posix/posix-provider.h"
|
||||||
#include "backends/fs/posix/posix-fs-factory.h" // for getFilesystemFactory()
|
#include "backends/fs/posix/posix-fs-factory.h" // for getFilesystemFactory()
|
||||||
#include "sound/mixer.h"
|
#include "sound/mixer_intern.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -225,8 +225,7 @@ void OSystem_GP2X::initBackend() {
|
||||||
// Create and hook up the mixer, if none exists yet (we check for this to
|
// Create and hook up the mixer, if none exists yet (we check for this to
|
||||||
// allow subclasses to provide their own).
|
// allow subclasses to provide their own).
|
||||||
if (_mixer == 0) {
|
if (_mixer == 0) {
|
||||||
_mixer = new Audio::Mixer();
|
setupMixer();
|
||||||
setSoundCallback(Audio::Mixer::mixCallback, _mixer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create and hook up the timer manager, if none exists yet (we check for
|
// Create and hook up the timer manager, if none exists yet (we check for
|
||||||
|
@ -445,45 +444,69 @@ void OSystem_GP2X::deleteMutex(MutexRef mutex) {
|
||||||
#pragma mark --- Audio ---
|
#pragma mark --- Audio ---
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
bool OSystem_GP2X::setSoundCallback(SoundProc proc, void *param) {
|
void OSystem_GP2X::mixCallback(void *sys, byte *samples, int len) {
|
||||||
|
OSystem_GP2X *this_ = (OSystem_GP2X *)sys;
|
||||||
|
assert(this_);
|
||||||
|
|
||||||
|
if (this_->_mixer)
|
||||||
|
this_->_mixer->mixCallback(samples, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OSystem_GP2X::setupMixer() {
|
||||||
SDL_AudioSpec desired;
|
SDL_AudioSpec desired;
|
||||||
SDL_AudioSpec obtained;
|
SDL_AudioSpec obtained;
|
||||||
|
|
||||||
memset(&desired, 0, sizeof(desired));
|
//memset(&desired, 0, sizeof(desired));
|
||||||
|
|
||||||
|
// Determine the desired output sampling frequency.
|
||||||
_samplesPerSec = 0;
|
_samplesPerSec = 0;
|
||||||
|
|
||||||
if (ConfMan.hasKey("output_rate"))
|
if (ConfMan.hasKey("output_rate"))
|
||||||
_samplesPerSec = ConfMan.getInt("output_rate");
|
_samplesPerSec = ConfMan.getInt("output_rate");
|
||||||
|
|
||||||
if (_samplesPerSec <= 0)
|
if (_samplesPerSec <= 0)
|
||||||
_samplesPerSec = SAMPLES_PER_SEC;
|
_samplesPerSec = SAMPLES_PER_SEC;
|
||||||
|
|
||||||
|
|
||||||
//Quick EVIL Hack - DJWillis
|
//Quick EVIL Hack - DJWillis
|
||||||
_samplesPerSec = 11025;
|
_samplesPerSec = 11025;
|
||||||
|
|
||||||
|
// Determine the sample buffer size. We want it to store enough data for
|
||||||
|
// about 1/16th of a second. Note that it must be a power of two.
|
||||||
|
// So e.g. at 22050 Hz, we request a sample buffer size of 2048.
|
||||||
|
int samples = 8192;
|
||||||
|
while (16 * samples >= _samplesPerSec) {
|
||||||
|
samples >>= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(&desired, 0, sizeof(desired));
|
||||||
desired.freq = _samplesPerSec;
|
desired.freq = _samplesPerSec;
|
||||||
desired.format = AUDIO_S16SYS;
|
desired.format = AUDIO_S16SYS;
|
||||||
desired.channels = 2;
|
desired.channels = 2;
|
||||||
//desired.samples = (uint16)samples;
|
//desired.samples = (uint16)samples;
|
||||||
desired.samples = 128; // Samples hack
|
desired.samples = 128; // Samples hack
|
||||||
desired.callback = proc;
|
desired.callback = mixCallback;
|
||||||
desired.userdata = param;
|
desired.userdata = this;
|
||||||
|
|
||||||
|
// Create the mixer instance
|
||||||
|
assert(!_mixer);
|
||||||
|
_mixer = new Audio::MixerImpl(this);
|
||||||
|
assert(_mixer);
|
||||||
|
|
||||||
if (SDL_OpenAudio(&desired, &obtained) != 0) {
|
if (SDL_OpenAudio(&desired, &obtained) != 0) {
|
||||||
warning("Could not open audio device: %s", SDL_GetError());
|
warning("Could not open audio device: %s", SDL_GetError());
|
||||||
return false;
|
_samplesPerSec = 0;
|
||||||
}
|
_mixer->setReady(false);
|
||||||
|
} else {
|
||||||
|
// Note: This should be the obtained output rate, but it seems that at
|
||||||
|
// least on some platforms SDL will lie and claim it did get the rate
|
||||||
|
// even if it didn't. Probably only happens for "weird" rates, though.
|
||||||
_samplesPerSec = obtained.freq;
|
_samplesPerSec = obtained.freq;
|
||||||
|
debug(1, "Output sample rate: %d Hz", _samplesPerSec);
|
||||||
|
|
||||||
|
// Tell the mixer that we are ready and start the sound processing
|
||||||
|
_mixer->setOutputRate(_samplesPerSec);
|
||||||
|
_mixer->setReady(true);
|
||||||
SDL_PauseAudio(0);
|
SDL_PauseAudio(0);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_GP2X::clearSoundCallback() {
|
|
||||||
SDL_CloseAudio();
|
|
||||||
}
|
|
||||||
|
|
||||||
int OSystem_GP2X::getOutputSampleRate() const {
|
|
||||||
return _samplesPerSec;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Audio::Mixer *OSystem_GP2X::getMixer() {
|
Audio::Mixer *OSystem_GP2X::getMixer() {
|
||||||
|
|
|
@ -1128,10 +1128,6 @@ bool OSystem_IPHONE::setSoundCallback(SoundProc proc, void *param) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_IPHONE::clearSoundCallback() {
|
|
||||||
debug("clearSoundCallback()\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
int OSystem_IPHONE::getOutputSampleRate() const {
|
int OSystem_IPHONE::getOutputSampleRate() const {
|
||||||
return AUDIO_SAMPLE_RATE;
|
return AUDIO_SAMPLE_RATE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -153,7 +153,6 @@ public:
|
||||||
virtual void deleteMutex(MutexRef mutex);
|
virtual void deleteMutex(MutexRef mutex);
|
||||||
|
|
||||||
virtual bool setSoundCallback(SoundProc proc, void *param);
|
virtual bool setSoundCallback(SoundProc proc, void *param);
|
||||||
virtual void clearSoundCallback();
|
|
||||||
virtual int getOutputSampleRate() const;
|
virtual int getOutputSampleRate() const;
|
||||||
virtual void setTimerCallback(TimerProc callback, int interval);
|
virtual void setTimerCallback(TimerProc callback, int interval);
|
||||||
|
|
||||||
|
|
|
@ -28,18 +28,37 @@
|
||||||
|
|
||||||
#if defined(USE_NULL_DRIVER)
|
#if defined(USE_NULL_DRIVER)
|
||||||
|
|
||||||
|
#ifdef UNIX
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "common/rect.h"
|
#include "common/rect.h"
|
||||||
|
|
||||||
#include "backends/saves/default/default-saves.h"
|
#include "backends/saves/default/default-saves.h"
|
||||||
#include "backends/timer/default/default-timer.h"
|
#include "backends/timer/default/default-timer.h"
|
||||||
#include "sound/mixer.h"
|
#include "sound/mixer_intern.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Include header files needed for the getFilesystemFactory() method.
|
||||||
|
*/
|
||||||
|
#if defined(__amigaos4__)
|
||||||
|
#include "backends/fs/amigaos4/amigaos4-fs-factory.h"
|
||||||
|
#elif defined(UNIX)
|
||||||
|
#include "backends/fs/posix/posix-fs-factory.h"
|
||||||
|
#elif defined(WIN32)
|
||||||
|
#include "backends/fs/windows/windows-fs-factory.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class OSystem_NULL : public OSystem {
|
class OSystem_NULL : public OSystem {
|
||||||
protected:
|
protected:
|
||||||
Common::SaveFileManager *_savefile;
|
Common::SaveFileManager *_savefile;
|
||||||
Audio::Mixer *_mixer;
|
Audio::MixerImpl *_mixer;
|
||||||
Common::TimerManager *_timer;
|
Common::TimerManager *_timer;
|
||||||
|
|
||||||
|
timeval _startTime;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
OSystem_NULL();
|
OSystem_NULL();
|
||||||
|
@ -93,8 +112,6 @@ public:
|
||||||
|
|
||||||
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
||||||
virtual bool setSoundCallback(SoundProc proc, void *param);
|
virtual bool setSoundCallback(SoundProc proc, void *param);
|
||||||
virtual void clearSoundCallback();
|
|
||||||
virtual int getOutputSampleRate() const;
|
|
||||||
|
|
||||||
virtual void quit();
|
virtual void quit();
|
||||||
|
|
||||||
|
@ -104,6 +121,8 @@ public:
|
||||||
virtual Audio::Mixer *getMixer();
|
virtual Audio::Mixer *getMixer();
|
||||||
virtual void getTimeAndDate(struct tm &t) const;
|
virtual void getTimeAndDate(struct tm &t) const;
|
||||||
virtual Common::TimerManager *getTimerManager();
|
virtual Common::TimerManager *getTimerManager();
|
||||||
|
FilesystemFactory *getFilesystemFactory();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const OSystem::GraphicsMode s_supportedGraphicsModes[] = {
|
static const OSystem::GraphicsMode s_supportedGraphicsModes[] = {
|
||||||
|
@ -124,9 +143,14 @@ OSystem_NULL::~OSystem_NULL() {
|
||||||
|
|
||||||
void OSystem_NULL::initBackend() {
|
void OSystem_NULL::initBackend() {
|
||||||
_savefile = new DefaultSaveFileManager();
|
_savefile = new DefaultSaveFileManager();
|
||||||
_mixer = new Audio::Mixer();
|
_mixer = new Audio::MixerImpl(this);
|
||||||
_timer = new DefaultTimerManager();
|
_timer = new DefaultTimerManager();
|
||||||
|
|
||||||
|
_mixer->setOutputRate(22050);
|
||||||
|
_mixer->setReady(false);
|
||||||
|
|
||||||
|
gettimeofday(&_startTime, NULL);
|
||||||
|
|
||||||
// Note that both the mixer and the timer manager are useless
|
// Note that both the mixer and the timer manager are useless
|
||||||
// this way; they need to be hooked into the system somehow to
|
// this way; they need to be hooked into the system somehow to
|
||||||
// be functional. Of course, can't do that in a NULL backend :).
|
// be functional. Of course, can't do that in a NULL backend :).
|
||||||
|
@ -245,10 +269,20 @@ bool OSystem_NULL::pollEvent(Common::Event &event) {
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 OSystem_NULL::getMillis() {
|
uint32 OSystem_NULL::getMillis() {
|
||||||
|
#ifdef UNIX
|
||||||
|
timeval curTime;
|
||||||
|
gettimeofday(&curTime, NULL);
|
||||||
|
return (uint32)(((curTime.tv_sec - _startTime.tv_sec) * 1000) + \
|
||||||
|
((curTime.tv_usec - _startTime.tv_usec) / 1000));
|
||||||
|
#else
|
||||||
return 0;
|
return 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_NULL::delayMillis(uint msecs) {
|
void OSystem_NULL::delayMillis(uint msecs) {
|
||||||
|
#ifdef UNIX
|
||||||
|
usleep(msecs * 1000);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
OSystem::MutexRef OSystem_NULL::createMutex(void) {
|
OSystem::MutexRef OSystem_NULL::createMutex(void) {
|
||||||
|
@ -268,13 +302,6 @@ bool OSystem_NULL::setSoundCallback(SoundProc proc, void *param) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_NULL::clearSoundCallback() {
|
|
||||||
}
|
|
||||||
|
|
||||||
int OSystem_NULL::getOutputSampleRate() const {
|
|
||||||
return 22050;
|
|
||||||
}
|
|
||||||
|
|
||||||
void OSystem_NULL::quit() {
|
void OSystem_NULL::quit() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -299,6 +326,19 @@ Common::TimerManager *OSystem_NULL::getTimerManager() {
|
||||||
void OSystem_NULL::getTimeAndDate(struct tm &t) const {
|
void OSystem_NULL::getTimeAndDate(struct tm &t) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FilesystemFactory *OSystem_NULL::getFilesystemFactory() {
|
||||||
|
#if defined(__amigaos4__)
|
||||||
|
return &AmigaOSFilesystemFactory::instance();
|
||||||
|
#elif defined(UNIX)
|
||||||
|
return &POSIXFilesystemFactory::instance();
|
||||||
|
#elif defined(WIN32)
|
||||||
|
return &WindowsFilesystemFactory::instance();
|
||||||
|
#else
|
||||||
|
#error Unknown and unsupported backend in OSystem_NULL::getFilesystemFactory
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
OSystem *OSystem_NULL_create() {
|
OSystem *OSystem_NULL_create() {
|
||||||
return new OSystem_NULL();
|
return new OSystem_NULL();
|
||||||
}
|
}
|
||||||
|
|
|
@ -727,7 +727,6 @@ void OSystem_PS2::quit(void) {
|
||||||
driveStandby();
|
driveStandby();
|
||||||
fio.umount("pfs0:");
|
fio.umount("pfs0:");
|
||||||
}
|
}
|
||||||
//clearSoundCallback();
|
|
||||||
//setTimerCallback(NULL, 0);
|
//setTimerCallback(NULL, 0);
|
||||||
_screen->wantAnim(false);
|
_screen->wantAnim(false);
|
||||||
_systemQuit = true;
|
_systemQuit = true;
|
||||||
|
|
|
@ -2,10 +2,36 @@
|
||||||
# $URL$
|
# $URL$
|
||||||
# $Id$
|
# $Id$
|
||||||
|
|
||||||
|
ENABLED=STATIC_PLUGIN
|
||||||
|
|
||||||
#control build
|
#control build
|
||||||
DISABLE_SCALERS = true
|
DISABLE_SCALERS = true
|
||||||
DISABLE_HQ_SCALERS = true
|
DISABLE_HQ_SCALERS = true
|
||||||
|
|
||||||
|
ENABLE_SCUMM = $(ENABLED)
|
||||||
|
ENABLE_SCUMM_7_8 = $(ENABLED)
|
||||||
|
#ENABLE_HE = $(ENABLED)
|
||||||
|
ENABLE_AGI = $(ENABLED)
|
||||||
|
ENABLE_AGOS = $(ENABLED)
|
||||||
|
#ENABLE_CINE = $(ENABLED)
|
||||||
|
#ENABLE_CRUISE = $(ENABLED)
|
||||||
|
ENABLE_DRASCULA = $(ENABLED)
|
||||||
|
ENABLE_GOB = $(ENABLED)
|
||||||
|
#ENABLE_IGOR = $(ENABLED)
|
||||||
|
ENABLE_KYRA = $(ENABLED)
|
||||||
|
ENABLE_LURE = $(ENABLED)
|
||||||
|
#ENABLE_M4 = $(ENABLED)
|
||||||
|
#ENABLE_MADE = $(ENABLED)
|
||||||
|
#ENABLE_PARALLACTION = $(ENABLED)
|
||||||
|
#ENABLE_QUEEN = $(ENABLED)
|
||||||
|
#ENABLE_SAGA = $(ENABLED)
|
||||||
|
ENABLE_SKY = $(ENABLED)
|
||||||
|
ENABLE_SWORD1 = $(ENABLED)
|
||||||
|
ENABLE_SWORD2 = $(ENABLED)
|
||||||
|
#ENABLE_TINSEL = $(ENABLED)
|
||||||
|
#ENABLE_TOUCHE = $(ENABLED)
|
||||||
|
|
||||||
|
|
||||||
srcdir = ../../..
|
srcdir = ../../..
|
||||||
VPATH = $(srcdir)
|
VPATH = $(srcdir)
|
||||||
HAVE_GCC3 = false
|
HAVE_GCC3 = false
|
||||||
|
@ -63,6 +89,8 @@ OBJS := psp_main.o \
|
||||||
kbd_l_c.o \
|
kbd_l_c.o \
|
||||||
trace.o
|
trace.o
|
||||||
|
|
||||||
|
DEPDIR = .deps
|
||||||
|
|
||||||
include $(srcdir)/Makefile.common
|
include $(srcdir)/Makefile.common
|
||||||
|
|
||||||
PSP_EBOOT_SFO = param.sfo
|
PSP_EBOOT_SFO = param.sfo
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
#include "backends/timer/default/default-timer.h"
|
#include "backends/timer/default/default-timer.h"
|
||||||
#include "graphics/surface.h"
|
#include "graphics/surface.h"
|
||||||
#include "graphics/scaler.h"
|
#include "graphics/scaler.h"
|
||||||
#include "sound/mixer.h"
|
#include "sound/mixer_intern.h"
|
||||||
|
|
||||||
#include <pspgu.h>
|
#include <pspgu.h>
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ const OSystem::GraphicsMode OSystem_PSP::s_supportedGraphicsModes[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
OSystem_PSP::OSystem_PSP() : _screenWidth(0), _screenHeight(0), _overlayWidth(0), _overlayHeight(0), _offscreen(0), _overlayBuffer(0), _overlayVisible(false), _shakePos(0), _mouseBuf(0), _prevButtons(0), _lastPadCheck(0), _padAccel(0) {
|
OSystem_PSP::OSystem_PSP() : _screenWidth(0), _screenHeight(0), _overlayWidth(0), _overlayHeight(0), _offscreen(0), _overlayBuffer(0), _overlayVisible(false), _shakePos(0), _mouseBuf(0), _prevButtons(0), _lastPadCheck(0), _padAccel(0), _mixer(0) {
|
||||||
|
|
||||||
memset(_palette, 0, sizeof(_palette));
|
memset(_palette, 0, sizeof(_palette));
|
||||||
|
|
||||||
|
@ -99,11 +99,11 @@ OSystem_PSP::~OSystem_PSP() {
|
||||||
|
|
||||||
void OSystem_PSP::initBackend() {
|
void OSystem_PSP::initBackend() {
|
||||||
_savefile = new DefaultSaveFileManager();
|
_savefile = new DefaultSaveFileManager();
|
||||||
_mixer = new Audio::Mixer();
|
|
||||||
_timer = new DefaultTimerManager();
|
_timer = new DefaultTimerManager();
|
||||||
setSoundCallback(Audio::Mixer::mixCallback, _mixer);
|
|
||||||
setTimerCallback(&timer_handler, 10);
|
setTimerCallback(&timer_handler, 10);
|
||||||
|
|
||||||
|
setupMixer();
|
||||||
|
|
||||||
OSystem::initBackend();
|
OSystem::initBackend();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -586,7 +586,15 @@ void OSystem_PSP::deleteMutex(MutexRef mutex) {
|
||||||
SDL_DestroyMutex((SDL_mutex *)mutex);
|
SDL_DestroyMutex((SDL_mutex *)mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OSystem_PSP::setSoundCallback(SoundProc proc, void *param) {
|
void OSystem_PSP::mixCallback(void *sys, byte *samples, int len) {
|
||||||
|
OSystem_PSP *this_ = (OSystem_PSP *)sys;
|
||||||
|
assert(this_);
|
||||||
|
|
||||||
|
if (this_->_mixer)
|
||||||
|
this_->_mixer->mixCallback(samples, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OSystem_PSP::setupMixer(void) {
|
||||||
SDL_AudioSpec desired;
|
SDL_AudioSpec desired;
|
||||||
SDL_AudioSpec obtained;
|
SDL_AudioSpec obtained;
|
||||||
|
|
||||||
|
@ -613,29 +621,33 @@ bool OSystem_PSP::setSoundCallback(SoundProc proc, void *param) {
|
||||||
desired.format = AUDIO_S16SYS;
|
desired.format = AUDIO_S16SYS;
|
||||||
desired.channels = 2;
|
desired.channels = 2;
|
||||||
desired.samples = samples;
|
desired.samples = samples;
|
||||||
desired.callback = proc;
|
desired.callback = mixCallback;
|
||||||
desired.userdata = param;
|
desired.userdata = this;
|
||||||
|
|
||||||
|
assert(!_mixer);
|
||||||
|
_mixer = new Audio::MixerImpl(this);
|
||||||
|
assert(_mixer);
|
||||||
|
|
||||||
if (SDL_OpenAudio(&desired, &obtained) != 0) {
|
if (SDL_OpenAudio(&desired, &obtained) != 0) {
|
||||||
return false;
|
warning("Could not open audio: %s", SDL_GetError());
|
||||||
}
|
_samplesPerSec = 0;
|
||||||
|
_mixer->setReady(false);
|
||||||
|
} else {
|
||||||
// Note: This should be the obtained output rate, but it seems that at
|
// Note: This should be the obtained output rate, but it seems that at
|
||||||
// least on some platforms SDL will lie and claim it did get the rate
|
// least on some platforms SDL will lie and claim it did get the rate
|
||||||
// even if it didn't. Probably only happens for "weird" rates, though.
|
// even if it didn't. Probably only happens for "weird" rates, though.
|
||||||
_samplesPerSec = obtained.freq;
|
_samplesPerSec = obtained.freq;
|
||||||
|
|
||||||
|
// Tell the mixer that we are ready and start the sound processing
|
||||||
|
_mixer->setOutputRate(_samplesPerSec);
|
||||||
|
_mixer->setReady(true);
|
||||||
|
|
||||||
SDL_PauseAudio(0);
|
SDL_PauseAudio(0);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_PSP::clearSoundCallback() {
|
|
||||||
SDL_CloseAudio();
|
|
||||||
}
|
|
||||||
|
|
||||||
int OSystem_PSP::getOutputSampleRate() const {
|
|
||||||
return _samplesPerSec;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_PSP::quit() {
|
void OSystem_PSP::quit() {
|
||||||
clearSoundCallback();
|
SDL_CloseAudio();
|
||||||
SDL_Quit();
|
SDL_Quit();
|
||||||
sceGuTerm();
|
sceGuTerm();
|
||||||
sceKernelExitGame();
|
sceKernelExitGame();
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include "common/scummsys.h"
|
#include "common/scummsys.h"
|
||||||
#include "common/system.h"
|
#include "common/system.h"
|
||||||
#include "graphics/surface.h"
|
#include "graphics/surface.h"
|
||||||
|
#include "sound/mixer_intern.h"
|
||||||
#include "backends/fs/psp/psp-fs-factory.h"
|
#include "backends/fs/psp/psp-fs-factory.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,7 +72,7 @@ protected:
|
||||||
SceCtrlData pad;
|
SceCtrlData pad;
|
||||||
|
|
||||||
Common::SaveFileManager *_savefile;
|
Common::SaveFileManager *_savefile;
|
||||||
Audio::Mixer *_mixer;
|
Audio::MixerImpl *_mixer;
|
||||||
Common::TimerManager *_timer;
|
Common::TimerManager *_timer;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -129,10 +130,8 @@ public:
|
||||||
virtual void unlockMutex(MutexRef mutex);
|
virtual void unlockMutex(MutexRef mutex);
|
||||||
virtual void deleteMutex(MutexRef mutex);
|
virtual void deleteMutex(MutexRef mutex);
|
||||||
|
|
||||||
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
static void mixCallback(void *sys, byte *samples, int len);
|
||||||
virtual bool setSoundCallback(SoundProc proc, void *param);
|
virtual void setupMixer(void);
|
||||||
virtual void clearSoundCallback();
|
|
||||||
virtual int getOutputSampleRate() const;
|
|
||||||
|
|
||||||
Common::SaveFileManager *getSavefileManager() { return _savefile; }
|
Common::SaveFileManager *getSavefileManager() { return _savefile; }
|
||||||
Audio::Mixer *getMixer() { return _mixer; }
|
Audio::Mixer *getMixer() { return _mixer; }
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
#include "backends/saves/default/default-saves.h"
|
#include "backends/saves/default/default-saves.h"
|
||||||
#include "backends/timer/default/default-timer.h"
|
#include "backends/timer/default/default-timer.h"
|
||||||
#include "sound/mixer.h"
|
#include "sound/mixer_intern.h"
|
||||||
|
|
||||||
#include "icons/scummvm.xpm"
|
#include "icons/scummvm.xpm"
|
||||||
|
|
||||||
|
@ -131,9 +131,7 @@ void OSystem_SDL::initBackend() {
|
||||||
// Create and hook up the mixer, if none exists yet (we check for this to
|
// Create and hook up the mixer, if none exists yet (we check for this to
|
||||||
// allow subclasses to provide their own).
|
// allow subclasses to provide their own).
|
||||||
if (_mixer == 0) {
|
if (_mixer == 0) {
|
||||||
_mixer = new Audio::Mixer();
|
setupMixer();
|
||||||
bool result = setSoundCallback(Audio::Mixer::mixCallback, _mixer);
|
|
||||||
_mixer->setReady(result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create and hook up the timer manager, if none exists yet (we check for
|
// Create and hook up the timer manager, if none exists yet (we check for
|
||||||
|
@ -391,7 +389,15 @@ void OSystem_SDL::deleteMutex(MutexRef mutex) {
|
||||||
#pragma mark --- Audio ---
|
#pragma mark --- Audio ---
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
bool OSystem_SDL::setSoundCallback(SoundProc proc, void *param) {
|
void OSystem_SDL::mixCallback(void *sys, byte *samples, int len) {
|
||||||
|
OSystem_SDL *this_ = (OSystem_SDL *)sys;
|
||||||
|
assert(this_);
|
||||||
|
|
||||||
|
if (this_->_mixer)
|
||||||
|
this_->_mixer->mixCallback(samples, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OSystem_SDL::setupMixer() {
|
||||||
SDL_AudioSpec desired;
|
SDL_AudioSpec desired;
|
||||||
SDL_AudioSpec obtained;
|
SDL_AudioSpec obtained;
|
||||||
|
|
||||||
|
@ -403,7 +409,7 @@ bool OSystem_SDL::setSoundCallback(SoundProc proc, void *param) {
|
||||||
_samplesPerSec = SAMPLES_PER_SEC;
|
_samplesPerSec = SAMPLES_PER_SEC;
|
||||||
|
|
||||||
// Determine the sample buffer size. We want it to store enough data for
|
// Determine the sample buffer size. We want it to store enough data for
|
||||||
// about 1/32th of a second. Note that it must be a power of two.
|
// about 1/16th of a second. Note that it must be a power of two.
|
||||||
// So e.g. at 22050 Hz, we request a sample buffer size of 2048.
|
// So e.g. at 22050 Hz, we request a sample buffer size of 2048.
|
||||||
int samples = 8192;
|
int samples = 8192;
|
||||||
while (16 * samples >= _samplesPerSec) {
|
while (16 * samples >= _samplesPerSec) {
|
||||||
|
@ -415,23 +421,30 @@ bool OSystem_SDL::setSoundCallback(SoundProc proc, void *param) {
|
||||||
desired.format = AUDIO_S16SYS;
|
desired.format = AUDIO_S16SYS;
|
||||||
desired.channels = 2;
|
desired.channels = 2;
|
||||||
desired.samples = (uint16)samples;
|
desired.samples = (uint16)samples;
|
||||||
desired.callback = proc;
|
desired.callback = mixCallback;
|
||||||
desired.userdata = param;
|
desired.userdata = this;
|
||||||
|
|
||||||
|
// Create the mixer instance
|
||||||
|
assert(!_mixer);
|
||||||
|
_mixer = new Audio::MixerImpl(this);
|
||||||
|
assert(_mixer);
|
||||||
|
|
||||||
if (SDL_OpenAudio(&desired, &obtained) != 0) {
|
if (SDL_OpenAudio(&desired, &obtained) != 0) {
|
||||||
warning("Could not open audio device: %s", SDL_GetError());
|
warning("Could not open audio device: %s", SDL_GetError());
|
||||||
return false;
|
_samplesPerSec = 0;
|
||||||
}
|
_mixer->setReady(false);
|
||||||
|
} else {
|
||||||
// Note: This should be the obtained output rate, but it seems that at
|
// Note: This should be the obtained output rate, but it seems that at
|
||||||
// least on some platforms SDL will lie and claim it did get the rate
|
// least on some platforms SDL will lie and claim it did get the rate
|
||||||
// even if it didn't. Probably only happens for "weird" rates, though.
|
// even if it didn't. Probably only happens for "weird" rates, though.
|
||||||
_samplesPerSec = obtained.freq;
|
_samplesPerSec = obtained.freq;
|
||||||
debug(1, "Output sample rate: %d Hz", _samplesPerSec);
|
debug(1, "Output sample rate: %d Hz", _samplesPerSec);
|
||||||
SDL_PauseAudio(0);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
int OSystem_SDL::getOutputSampleRate() const {
|
// Tell the mixer that we are ready and start the sound processing
|
||||||
return _samplesPerSec;
|
_mixer->setOutputRate(_samplesPerSec);
|
||||||
|
_mixer->setReady(true);
|
||||||
|
SDL_PauseAudio(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Audio::Mixer *OSystem_SDL::getMixer() {
|
Audio::Mixer *OSystem_SDL::getMixer() {
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
|
|
||||||
|
|
||||||
namespace Audio {
|
namespace Audio {
|
||||||
class Mixer;
|
class MixerImpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Common {
|
namespace Common {
|
||||||
|
@ -134,8 +134,9 @@ public:
|
||||||
virtual bool pollEvent(Common::Event &event); // overloaded by CE backend
|
virtual bool pollEvent(Common::Event &event); // overloaded by CE backend
|
||||||
|
|
||||||
// Set function that generates samples
|
// Set function that generates samples
|
||||||
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
virtual void setupMixer();
|
||||||
virtual bool setSoundCallback(SoundProc proc, void *param); // overloaded by CE backend
|
static void mixCallback(void *s, byte *samples, int len);
|
||||||
|
|
||||||
virtual Audio::Mixer *getMixer();
|
virtual Audio::Mixer *getMixer();
|
||||||
|
|
||||||
// Poll CD status
|
// Poll CD status
|
||||||
|
@ -186,7 +187,6 @@ public:
|
||||||
|
|
||||||
virtual void setWindowCaption(const char *caption);
|
virtual void setWindowCaption(const char *caption);
|
||||||
virtual bool openCD(int drive);
|
virtual bool openCD(int drive);
|
||||||
virtual int getOutputSampleRate() const;
|
|
||||||
|
|
||||||
virtual bool hasFeature(Feature f);
|
virtual bool hasFeature(Feature f);
|
||||||
virtual void setFeatureState(Feature f, bool enable);
|
virtual void setFeatureState(Feature f, bool enable);
|
||||||
|
@ -371,7 +371,7 @@ protected:
|
||||||
|
|
||||||
|
|
||||||
Common::SaveFileManager *_savefile;
|
Common::SaveFileManager *_savefile;
|
||||||
Audio::Mixer *_mixer;
|
Audio::MixerImpl *_mixer;
|
||||||
|
|
||||||
SDL_TimerID _timerID;
|
SDL_TimerID _timerID;
|
||||||
Common::TimerManager *_timer;
|
Common::TimerManager *_timer;
|
||||||
|
|
|
@ -6,31 +6,37 @@ chdir("../../../");
|
||||||
|
|
||||||
# list of project files to process
|
# list of project files to process
|
||||||
@mmp_files = (
|
@mmp_files = (
|
||||||
"mmp/scummvm_scumm.mmp",
|
|
||||||
"mmp/scummvm_queen.mmp",
|
# Engine Project files
|
||||||
"mmp/scummvm_agos.mmp",
|
|
||||||
"mmp/scummvm_sky.mmp",
|
|
||||||
"mmp/scummvm_gob.mmp",
|
|
||||||
"mmp/scummvm_saga.mmp",
|
|
||||||
"mmp/scummvm_kyra.mmp",
|
|
||||||
"mmp/scummvm_sword1.mmp",
|
|
||||||
"mmp/scummvm_sword2.mmp",
|
|
||||||
"mmp/scummvm_lure.mmp",
|
|
||||||
"mmp/scummvm_cine.mmp",
|
|
||||||
"mmp/scummvm_agi.mmp",
|
"mmp/scummvm_agi.mmp",
|
||||||
"mmp/scummvm_touche.mmp",
|
"mmp/scummvm_agos.mmp",
|
||||||
"mmp/scummvm_parallaction.mmp",
|
"mmp/scummvm_cine.mmp",
|
||||||
"mmp/scummvm_cruise.mmp",
|
"mmp/scummvm_cruise.mmp",
|
||||||
"mmp/scummvm_drascula.mmp",
|
"mmp/scummvm_drascula.mmp",
|
||||||
|
"mmp/scummvm_gob.mmp",
|
||||||
"mmp/scummvm_igor.mmp",
|
"mmp/scummvm_igor.mmp",
|
||||||
"mmp/scummvm_made.mmp",
|
"mmp/scummvm_kyra.mmp",
|
||||||
|
"mmp/scummvm_lure.mmp",
|
||||||
"mmp/scummvm_m4.mmp",
|
"mmp/scummvm_m4.mmp",
|
||||||
|
"mmp/scummvm_made.mmp",
|
||||||
|
"mmp/scummvm_parallaction.mmp",
|
||||||
|
"mmp/scummvm_queen.mmp",
|
||||||
|
"mmp/scummvm_saga.mmp",
|
||||||
|
"mmp/scummvm_scumm.mmp",
|
||||||
|
"mmp/scummvm_sky.mmp",
|
||||||
|
"mmp/scummvm_sword1.mmp",
|
||||||
|
"mmp/scummvm_sword2.mmp",
|
||||||
|
"mmp/scummvm_touche.mmp",
|
||||||
|
|
||||||
|
|
||||||
|
# Target Platform Project Files
|
||||||
"S60/ScummVM_S60.mmp",
|
"S60/ScummVM_S60.mmp",
|
||||||
"S60v3/ScummVM_S60v3.mmp",
|
"S60v3/ScummVM_S60v3.mmp",
|
||||||
"S80/ScummVM_S80.mmp",
|
"S80/ScummVM_S80.mmp",
|
||||||
"S90/ScummVM_S90.mmp",
|
"S90/ScummVM_S90.mmp",
|
||||||
"UIQ2/ScummVM_UIQ2.mmp",
|
"UIQ2/ScummVM_UIQ2.mmp",
|
||||||
"UIQ3/ScummVM_UIQ3.mmp"
|
"UIQ3/ScummVM_UIQ3.mmp"
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
# do this first to set all *.mmp & *.inf files to *.*.in states
|
# do this first to set all *.mmp & *.inf files to *.*.in states
|
||||||
|
@ -43,7 +49,7 @@ Updating slave MACRO settings in MMP files from master 'scummvm_base.mmp'
|
||||||
|
|
||||||
";
|
";
|
||||||
|
|
||||||
# do this first so we have @DisableDefines for correct inclusion of SOURCE files later
|
# do this first so we have @EnabledDefines and @DisabledDefines for correct inclusion of SOURCE files later
|
||||||
UpdateSlaveMacros();
|
UpdateSlaveMacros();
|
||||||
|
|
||||||
print "
|
print "
|
||||||
|
@ -53,32 +59,39 @@ Preparing to update all the Symbian MMP project files with objects from module.m
|
||||||
|
|
||||||
";
|
";
|
||||||
|
|
||||||
|
|
||||||
|
# some modules.mk files have #ifndef ENABLE_XXXX blocks:
|
||||||
my @section_empty = (""); # section standard: no #ifdef's in module.mk files
|
my @section_empty = (""); # section standard: no #ifdef's in module.mk files
|
||||||
my @sections_scumm = ("", "DISABLE_SCUMM_7_8", "DISABLE_HE"); # special sections for engine SCUMM
|
my @sections_scumm = ("", "ENABLE_SCUMM_7_8", "ENABLE_HE"); # special sections for engine SCUMM
|
||||||
|
|
||||||
|
|
||||||
# files excluded from build, case insensitive, will be matched in filename string only
|
# files excluded from build, case insensitive, will be matched in filename string only
|
||||||
my @excludes_snd = (
|
my @excludes_snd = (
|
||||||
"mt32",
|
"mt32.*",
|
||||||
"fluidsynth",
|
"fluidsynth.cpp",
|
||||||
"i386",
|
"i386.cpp",
|
||||||
"part.cpp",
|
"part.*",
|
||||||
"partial.cpp",
|
|
||||||
"partialmanager.cpp",
|
|
||||||
"synth.cpp",
|
"synth.cpp",
|
||||||
"tables.cpp",
|
"tables.cpp",
|
||||||
"freeverb.cpp"
|
"freeverb.cpp",
|
||||||
|
"rate.*" # not really needed, USE_ARM_SOUND_ASM currently not parsed correctly,
|
||||||
|
# "rate[_arm|_arm_asm].(cpp|s)" will be added later based on WINS/ARM build!
|
||||||
|
# These #defines for compile time are set in portdefs.h
|
||||||
);
|
);
|
||||||
|
|
||||||
my @excludes_graphics = (
|
my @excludes_graphics = (
|
||||||
"iff.cpp"
|
"iff.cpp"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
# the USE_ARM_* defines not parsed correctly, exclude manually:
|
||||||
my @excludes_scumm = (
|
my @excludes_scumm = (
|
||||||
"codec47ARM.cpp",
|
".*ARM.*", # the *ARM.s files are added in .mpp files based on WINS/ARM build!
|
||||||
"gfxARM.cpp",
|
# USE_ARM_SMUSH_ASM codec47ARM.s
|
||||||
"proc3arm.cpp"
|
# USE_ARM_GFX_ASM gfxARM.s
|
||||||
|
# USE_ARM_COSTUME_ASM proc3ARM.s compiled, linked?, but *not* used :P (portdefs.h)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
#arseModule(mmpStr, dirStr, ifdefArray, [exclusionsArray])
|
#arseModule(mmpStr, dirStr, ifdefArray, [exclusionsArray])
|
||||||
ParseModule("_base", "base", \@section_empty); # now in ./TRG/ScummVM_TRG.mmp, these never change anyways...
|
ParseModule("_base", "base", \@section_empty); # now in ./TRG/ScummVM_TRG.mmp, these never change anyways...
|
||||||
ParseModule("_base", "common", \@section_empty);
|
ParseModule("_base", "common", \@section_empty);
|
||||||
|
@ -156,6 +169,7 @@ sub CheckForModuleMK
|
||||||
if (-f $item and $item =~ /.*\/module.mk$/)
|
if (-f $item and $item =~ /.*\/module.mk$/)
|
||||||
{
|
{
|
||||||
my $sec = "";
|
my $sec = "";
|
||||||
|
my $isenable;
|
||||||
my $ObjectsSelected = 0;
|
my $ObjectsSelected = 0;
|
||||||
my $ObjectsTotal = 0;
|
my $ObjectsTotal = 0;
|
||||||
|
|
||||||
|
@ -170,11 +184,21 @@ sub CheckForModuleMK
|
||||||
|
|
||||||
A: foreach $line (@lines)
|
A: foreach $line (@lines)
|
||||||
{
|
{
|
||||||
|
# all things we need are inside #ifdef sections,
|
||||||
|
# there is nothing we need in #ifndef sections: so ignore these for now
|
||||||
|
|
||||||
# found a section? reset
|
# found a section? reset
|
||||||
|
if ($line =~ /^ifdef (.*)/)
|
||||||
|
{
|
||||||
|
$sec = $1;
|
||||||
|
$isenable = 1;
|
||||||
|
}
|
||||||
if ($line =~ /^ifndef (.*)/)
|
if ($line =~ /^ifndef (.*)/)
|
||||||
{
|
{
|
||||||
$sec = $1;
|
$sec = $1;
|
||||||
|
$isenable = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
# found an object? Not uncommented!
|
# found an object? Not uncommented!
|
||||||
if (!($line =~ /^#/) && $line =~ s/\.o/.cpp/)
|
if (!($line =~ /^#/) && $line =~ s/\.o/.cpp/)
|
||||||
{
|
{
|
||||||
|
@ -193,20 +217,40 @@ sub CheckForModuleMK
|
||||||
{
|
{
|
||||||
if ($line =~ /$exclusion/i)
|
if ($line =~ /$exclusion/i)
|
||||||
{
|
{
|
||||||
print "\n ! $line (excluded, \@exclusions[$exclusion])";
|
my $reason = "excluded, \@exclusions[$exclusion]";
|
||||||
|
print "\n ! $line ($reason)";
|
||||||
|
$output .= "//SOURCE $line ($reason)\n";
|
||||||
next A;
|
next A;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# do we need to skip this file? According to MACROs in .MMPs
|
# do we need to do this file? According to MACROs in .MMPs
|
||||||
foreach $DisableDefine (@DisableDefines)
|
my $found = 0;
|
||||||
|
foreach $EnableDefine (@EnabledDefines)
|
||||||
{
|
{
|
||||||
if ($DisableDefine eq $section && $section ne '')
|
if (($EnableDefine eq $section) && ($section ne ''))
|
||||||
{
|
{
|
||||||
print "\n !$line (excluded, MACRO $DisableDefine)";
|
$found = 1;
|
||||||
next A;
|
last;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
foreach $DisableDefine (@DisabledDefines)
|
||||||
|
{
|
||||||
|
if (($DisableDefine eq $section) && ($section ne ''))
|
||||||
|
{
|
||||||
|
$found = 0;
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# always allow non-sections
|
||||||
|
$found = 1 if ($section eq '');
|
||||||
|
if (!$found)
|
||||||
|
{
|
||||||
|
my $reason = "excluded, MACRO $section";
|
||||||
|
print "\n !$line ($reason)";
|
||||||
|
$output .= "//SOURCE $line ($reason)\n";
|
||||||
|
next A;
|
||||||
|
}
|
||||||
|
|
||||||
$ObjectsSelected++;
|
$ObjectsSelected++;
|
||||||
#print "\n $line";
|
#print "\n $line";
|
||||||
|
@ -296,26 +340,39 @@ sub UpdateSlaveMacros
|
||||||
# this macro enabled? then also add the .lib
|
# this macro enabled? then also add the .lib
|
||||||
if ($line =~ /^\s*MACRO\s*$macro/m)
|
if ($line =~ /^\s*MACRO\s*$macro/m)
|
||||||
{
|
{
|
||||||
# these are the USE_ libs
|
# add an USE_ lib? (these need to be added @ the beginning, before _base)
|
||||||
$libs_second .= "STATICLIBRARY $lib\n" if ($macro =~ /^USE_/);
|
$libs_second .= "STATICLIBRARY $lib\n" if ($macro =~ /^USE_/);
|
||||||
}
|
|
||||||
else
|
# add an ENABLE_ lib? (these need to be added @ the end, after _base)
|
||||||
|
if ($macro =~ /^ENABLE_/)
|
||||||
{
|
{
|
||||||
# these are the non DISABLED_ libs
|
$libs_first .= "STATICLIBRARY $lib\n";
|
||||||
$libs_first .= "STATICLIBRARY $lib\n" if ($macro =~ /^DISABLE_/);
|
|
||||||
|
|
||||||
# add projects for BLD.INF's
|
# add projects for BLD.INF's
|
||||||
my $projectname = substr("$lib",0,-4);
|
my $projectname = substr("$lib",0,-4);
|
||||||
$projects .= "..\\mmp\\$projectname.mmp\n" if ($macro =~ /^DISABLE_/);
|
$projects .= "..\\mmp\\$projectname.mmp\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
# skip lines not beginning with "MACRO" (like "//MACRO")
|
||||||
}
|
}
|
||||||
$macro_counter++;
|
$macro_counter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
# not commented out? then add the macro to output string
|
# not commented out? then add the macro to output string
|
||||||
if ($line =~ /^\s*MACRO\s*([0-9A-Z_]*)\s*/)
|
if ($line =~ /^\s*MACRO\s*([0-9A-Z_]*)\s*/)
|
||||||
{
|
{
|
||||||
my $macro = $1;
|
my $macro = $1;
|
||||||
$macros2 .= "$line\n";
|
$macros2 .= "$line\n";
|
||||||
push @DisableDefines, $macro; # used in CheckForModuleMK()!!
|
if ($macro =~ /^ENABLE_/)
|
||||||
|
{
|
||||||
|
push @EnabledDefines, $macro; # used in CheckForModuleMK()!!
|
||||||
|
}
|
||||||
|
elsif ($macro =~ /^DISABLE_/)
|
||||||
|
{
|
||||||
|
push @DisabledDefines, $macro; # used in CheckForModuleMK()!!
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ require "BuildPackageUpload_LocalSettings.pl";
|
||||||
##################################################################################################################
|
##################################################################################################################
|
||||||
# prep some vars
|
# prep some vars
|
||||||
|
|
||||||
|
# the dir containing the build files: '.\backends\platforms\symbian\$SDK_BuildDir\'
|
||||||
$SDK_BuildDirs{'UIQ2'} = "UIQ2";
|
$SDK_BuildDirs{'UIQ2'} = "UIQ2";
|
||||||
$SDK_BuildDirs{'UIQ3'} = "UIQ3";
|
$SDK_BuildDirs{'UIQ3'} = "UIQ3";
|
||||||
$SDK_BuildDirs{'S60v1'} = "S60";
|
$SDK_BuildDirs{'S60v1'} = "S60";
|
||||||
|
@ -16,6 +17,7 @@ $SDK_BuildDirs{'S60v3'} = "S60v3";
|
||||||
$SDK_BuildDirs{'S80'} = "S80";
|
$SDK_BuildDirs{'S80'} = "S80";
|
||||||
$SDK_BuildDirs{'S90'} = "S90";
|
$SDK_BuildDirs{'S90'} = "S90";
|
||||||
|
|
||||||
|
# the target name inserted here: 'abld BUILD $SDK_TargetName UREL'
|
||||||
$SDK_TargetName{'UIQ2'} = "armi";
|
$SDK_TargetName{'UIQ2'} = "armi";
|
||||||
$SDK_TargetName{'UIQ3'} = "gcce";
|
$SDK_TargetName{'UIQ3'} = "gcce";
|
||||||
$SDK_TargetName{'S60v1'}= "armi";
|
$SDK_TargetName{'S60v1'}= "armi";
|
||||||
|
@ -24,6 +26,7 @@ $SDK_TargetName{'S60v3'}= "gcce";
|
||||||
$SDK_TargetName{'S80'} = "armi";
|
$SDK_TargetName{'S80'} = "armi";
|
||||||
$SDK_TargetName{'S90'} = "armi";
|
$SDK_TargetName{'S90'} = "armi";
|
||||||
|
|
||||||
|
# Binaries are installed here: '$SDK_RootDirs\epoc32\release\$SDK_TargetDir\urel\'
|
||||||
$SDK_TargetDir{'UIQ2'} = "armi";
|
$SDK_TargetDir{'UIQ2'} = "armi";
|
||||||
$SDK_TargetDir{'UIQ3'} = "armv5";
|
$SDK_TargetDir{'UIQ3'} = "armv5";
|
||||||
$SDK_TargetDir{'S60v1'} = "armi";
|
$SDK_TargetDir{'S60v1'} = "armi";
|
||||||
|
@ -34,11 +37,11 @@ $SDK_TargetDir{'S90'} = "armi";
|
||||||
|
|
||||||
$build_dir = getcwd();
|
$build_dir = getcwd();
|
||||||
$output_dir = "$build_dir/Packages";
|
$output_dir = "$build_dir/Packages";
|
||||||
chdir("../../");
|
chdir("../../../");
|
||||||
$base_dir = getcwd();
|
$base_dir = getcwd();
|
||||||
chdir($build_dir);
|
chdir($build_dir);
|
||||||
$build_log_out = "$build_dir/Build.out.log";
|
$build_log_out = "$build_dir/out.build.out.log"; # don't start these files with "Build"
|
||||||
$build_log_err = "$build_dir/Build.err.log";
|
$build_log_err = "$build_dir/out.build.err.log"; # so "B"+TAB completion works in 1 go :P
|
||||||
|
|
||||||
$initial_path = $ENV{'PATH'}; # so we can start with a fresh PATH for each Build
|
$initial_path = $ENV{'PATH'}; # so we can start with a fresh PATH for each Build
|
||||||
|
|
||||||
|
@ -54,22 +57,44 @@ $PackagesUploaded = 0;
|
||||||
@ErrorMessages = ();
|
@ErrorMessages = ();
|
||||||
$ftp_url = "FTP://$FTP_User\@$FTP_Host/$FTP_Dir/";
|
$ftp_url = "FTP://$FTP_User\@$FTP_Host/$FTP_Dir/";
|
||||||
|
|
||||||
|
# these macros are always defined:
|
||||||
$ExtraMacros = "MACRO NONSTANDARD_PORT\n";
|
$ExtraMacros = "MACRO NONSTANDARD_PORT\n";
|
||||||
$ExtraMacros .= "MACRO DISABLE_FANCY_THEMES\n";
|
$ExtraMacros .= "MACRO DISABLE_FANCY_THEMES\n";
|
||||||
|
$ExtraMacros .= "MACRO DISABLE_SCALERS\n";
|
||||||
|
$ExtraMacros .= "MACRO DISABLE_HQ_SCALERS\n";
|
||||||
|
|
||||||
# prep nice list of SDKs
|
# prep nice list of SDKs
|
||||||
#while( ($SDK, $RootDir) = each(%SDK_RootDirs) )
|
#while( ($SDK, $RootDir) = each(%SDK_RootDirs) )
|
||||||
foreach $SDK (sort keys(%SDK_RootDirs))
|
foreach $SDK (sort keys(%SDK_RootDirs))
|
||||||
|
{
|
||||||
|
# see if it exists!
|
||||||
|
if (-d $SDK_RootDirs{$SDK})
|
||||||
{
|
{
|
||||||
$SDKs .= "$SDK\t$SDK_RootDirs{$SDK}\n\t\t\t";
|
$SDKs .= "$SDK\t$SDK_RootDirs{$SDK}\n\t\t\t";
|
||||||
}
|
}
|
||||||
|
else # missing?
|
||||||
|
{
|
||||||
|
$SDKs .= "$SDK\t$SDK_RootDirs{$SDK}\t[MISSING: Skipping!]\n\t\t\t";
|
||||||
|
# remove it from array, to prevent building!
|
||||||
|
delete $SDK_RootDirs{$SDK};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# prep nice list of Libraries
|
# prep nice list of Libraries
|
||||||
while( ($SDK, $Value) = each(%SDK_LibraryDirs) )
|
while( ($SDK, $Value) = each(%SDK_LibraryDirs) )
|
||||||
{
|
{
|
||||||
while( ($Library, $Path) = each(%{$SDK_LibraryDirs{$SDK}}) )
|
while( ($Library, $Path) = each(%{$SDK_LibraryDirs{$SDK}}) )
|
||||||
{
|
{
|
||||||
$PresentLibs{$Library} = $Path;
|
# maybe it's already been built?
|
||||||
|
if (-e $SDK_RootDirs{$SDK}."\\epoc32\\release\\$SDK_TargetDir{$SDK}\\urel\\$Library")
|
||||||
|
{
|
||||||
|
$PresentLibs{$Library} = "$Path [EXISTS: Skipping!]";
|
||||||
|
delete $SDK_LibraryDirs{$SDK}{$Library};
|
||||||
|
}
|
||||||
|
else # make it!
|
||||||
|
{
|
||||||
|
$PresentLibs{$Library} = "$Path";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach $Library (sort keys(%PresentLibs))
|
foreach $Library (sort keys(%PresentLibs))
|
||||||
|
@ -78,10 +103,37 @@ foreach $Library (sort keys(%PresentLibs))
|
||||||
}
|
}
|
||||||
|
|
||||||
# prep nice list of Variations
|
# prep nice list of Variations
|
||||||
while( ($SDK, $Value) = each(%SDK_Variations) )
|
#while( ($SDK, $Value) = each(%SDK_Variations) )
|
||||||
|
#{
|
||||||
|
# while( ($Variation, $Value2) = each(%{$SDK_Variations{$SDK}}) )
|
||||||
|
# {
|
||||||
|
# $Extra = ($Variation ne '' ? "_$Variation" : "");
|
||||||
|
# if ($SDK eq "ALL")
|
||||||
|
# {
|
||||||
|
# while( ($SDK2, $RootDir) = each(%SDK_RootDirs) )
|
||||||
|
# {
|
||||||
|
# if ($SDK_RootDirs{$SDK2} ne '') # is this SDK listed as installed? (fails silently)
|
||||||
|
# {
|
||||||
|
# push @Packages, sprintf($file_tpl_sis, $version_tpl_sis, $SDK2, $Extra);
|
||||||
|
# $PackagesQueued++;
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
# else
|
||||||
|
# {
|
||||||
|
# if ($SDK_RootDirs{$SDK} ne '') # is this SDK listed as installed? (fails silently)
|
||||||
|
# {
|
||||||
|
# push @Packages, sprintf($file_tpl_sis, $version_tpl_sis, $SDK, $Extra);
|
||||||
|
# $PackagesQueued++;
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
while( ($SDK, $Value) = each(%VariationSets) )
|
||||||
{
|
{
|
||||||
while( ($Variation, $Value2) = each(%{$SDK_Variations{$SDK}}) )
|
while( ($Variation, $FeaturesBlock) = each(%{$VariationSets{$SDK}}) )
|
||||||
{
|
{
|
||||||
|
#my $MacroBlock = &MakeMppMacroDefs($FeaturesBlock);
|
||||||
$Extra = ($Variation ne '' ? "_$Variation" : "");
|
$Extra = ($Variation ne '' ? "_$Variation" : "");
|
||||||
if ($SDK eq "ALL")
|
if ($SDK eq "ALL")
|
||||||
{
|
{
|
||||||
|
@ -161,6 +213,9 @@ while( ($SDK, $Value) = each(%SDK_LibraryDirs) )
|
||||||
{
|
{
|
||||||
if ($SDK_RootDirs{$SDK2} ne '') # is this SDK listed as installed? (fails silently)
|
if ($SDK_RootDirs{$SDK2} ne '') # is this SDK listed as installed? (fails silently)
|
||||||
{
|
{
|
||||||
|
# do we already have this one?
|
||||||
|
next if (-e $SDK_RootDirs{$SDK2}."\\epoc32\\release\\$SDK_TargetDir{$SDK2}\\urel\\$Library");
|
||||||
|
|
||||||
$LibrariesQueued++;
|
$LibrariesQueued++;
|
||||||
DoLibrary($SDK2, $Library, $Path);
|
DoLibrary($SDK2, $Library, $Path);
|
||||||
}
|
}
|
||||||
|
@ -170,6 +225,9 @@ while( ($SDK, $Value) = each(%SDK_LibraryDirs) )
|
||||||
{
|
{
|
||||||
if ($SDK_RootDirs{$SDK} ne '') # is this SDK listed as installed? (fails silently)
|
if ($SDK_RootDirs{$SDK} ne '') # is this SDK listed as installed? (fails silently)
|
||||||
{
|
{
|
||||||
|
# do we already have this one?
|
||||||
|
next if (-e $SDK_RootDirs{$SDK}."\\epoc32\\release\\$SDK_TargetDir{$SDK}\\urel\\$Library");
|
||||||
|
|
||||||
$LibrariesQueued++;
|
$LibrariesQueued++;
|
||||||
DoLibrary($SDK, $Library, $Path);
|
DoLibrary($SDK, $Library, $Path);
|
||||||
}
|
}
|
||||||
|
@ -206,6 +264,31 @@ while( ($SDK, $VariationsHash) = each(%SDK_Variations) )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while( ($SDK, $VariationsHash) = each(%VariationSets) )
|
||||||
|
{
|
||||||
|
while( ($Variation, $FeaturesBlock) = each(%{$VariationSets{$SDK}}) )
|
||||||
|
{
|
||||||
|
my $MacroBlock = &MakeMppMacroDefs($FeaturesBlock);
|
||||||
|
if ($SDK eq "ALL")
|
||||||
|
{
|
||||||
|
while( ($SDK2, $RootDir) = each(%SDK_RootDirs) )
|
||||||
|
{
|
||||||
|
if ($SDK_RootDirs{$SDK2} ne '')
|
||||||
|
{
|
||||||
|
DoVariation($SDK2, $Variation, $MacroBlock);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($SDK_RootDirs{$SDK} ne '')
|
||||||
|
{
|
||||||
|
DoVariation($SDK, $Variation, $MacroBlock);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
##################################################################################################################
|
##################################################################################################################
|
||||||
# give report
|
# give report
|
||||||
|
|
||||||
|
@ -248,6 +331,80 @@ print " SumthinWicked wishes you a ridiculously good and optimally happy d
|
||||||
##################################################################################################################
|
##################################################################################################################
|
||||||
##################################################################################################################
|
##################################################################################################################
|
||||||
|
|
||||||
|
# create a set of "MACRO xxx" definitions for use in the scummvm_base.mpp file
|
||||||
|
sub MakeMppMacroDefs
|
||||||
|
{
|
||||||
|
my ($features) = @_;
|
||||||
|
|
||||||
|
my %EnabledFeatures = ();
|
||||||
|
foreach (split(/\W|\r|\n/, $features))
|
||||||
|
{
|
||||||
|
if ($_ ne "")
|
||||||
|
{
|
||||||
|
#print "FEATURE: $_\n";
|
||||||
|
$EnabledFeatures{$_} = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my $MacroDefs = "";
|
||||||
|
|
||||||
|
$MacroDefs .= " // Features //\n";
|
||||||
|
foreach my $e (sort keys %UseableFeatures)
|
||||||
|
{
|
||||||
|
my $E = uc($e);
|
||||||
|
if ($EnabledFeatures{$e})
|
||||||
|
{
|
||||||
|
$MacroDefs .= "MACRO USE_$E // LIB:$UseableFeatures{$e}\n";
|
||||||
|
# this one is used: remove it now
|
||||||
|
delete $EnabledFeatures{$e};
|
||||||
|
# this will leave us with a list of unparsed options!
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$MacroDefs .= "//MACRO USE_$E\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$MacroDefs .= " // Engines //\n";
|
||||||
|
foreach my $e (sort @EnablableEngines)
|
||||||
|
{
|
||||||
|
my $E = uc($e);
|
||||||
|
if ($EnabledFeatures{$e})
|
||||||
|
{
|
||||||
|
$MacroDefs .= "MACRO ENABLE_$E // LIB:scummvm_$e.lib\n";
|
||||||
|
# this one is used: remove it now
|
||||||
|
delete $EnabledFeatures{$e};
|
||||||
|
# this will leave us with a list of unparsed options!
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$MacroDefs .= "//MACRO ENABLE_$E\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$MacroDefs .= " // SubEngines //\n";
|
||||||
|
foreach my $e (sort @EnablableSubEngines)
|
||||||
|
{
|
||||||
|
my $E = uc($e);
|
||||||
|
if ($EnabledFeatures{$e})
|
||||||
|
{
|
||||||
|
$MacroDefs .= "MACRO ENABLE_$E\n";
|
||||||
|
# this one is used: remove it now
|
||||||
|
delete $EnabledFeatures{$e};
|
||||||
|
# this will leave us with a list of unparsed options!
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$MacroDefs .= "//MACRO ENABLE_$E\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#print "\n\n'$features' ==> $MacroDefs\n\n\n";
|
||||||
|
return $MacroDefs;
|
||||||
|
}
|
||||||
|
|
||||||
|
##################################################################################################################
|
||||||
|
|
||||||
# Build, Package & Upload a single Variation
|
# Build, Package & Upload a single Variation
|
||||||
sub DoLibrary
|
sub DoLibrary
|
||||||
{
|
{
|
||||||
|
@ -286,8 +443,8 @@ my $header = "
|
||||||
PrintMessage("Cleaning for $Target") if (!$ReallyQuiet);
|
PrintMessage("Cleaning for $Target") if (!$ReallyQuiet);
|
||||||
system("bldmake bldfiles > NUL 2> NUL");
|
system("bldmake bldfiles > NUL 2> NUL");
|
||||||
PrintErrorMessage("'bldmake bldfiles' exited with value " . ($? >> 8)) if ($? >> 8);
|
PrintErrorMessage("'bldmake bldfiles' exited with value " . ($? >> 8)) if ($? >> 8);
|
||||||
system("abld clean $TargetName urel > NUL 2> NUL");
|
system("abld CLEAN $TargetName UREL > NUL 2> NUL");
|
||||||
PrintErrorMessage("'abld clean $TargetName urel' exited with value " . ($? >> 8)) if ($? >> 8);
|
PrintErrorMessage("'abld CLEAN $TargetName urel' exited with value " . ($? >> 8)) if ($? >> 8);
|
||||||
# remove file so we are sure that after .lib generation we have a fresh copy!
|
# remove file so we are sure that after .lib generation we have a fresh copy!
|
||||||
if (-e $TargetFilePath) { unlink($TargetFilePath) or PrintErrorMessage("Removing $TargetFilePath"); }
|
if (-e $TargetFilePath) { unlink($TargetFilePath) or PrintErrorMessage("Removing $TargetFilePath"); }
|
||||||
|
|
||||||
|
@ -298,10 +455,10 @@ my $header = "
|
||||||
|
|
||||||
my $OldSize = (-s $build_log_err);
|
my $OldSize = (-s $build_log_err);
|
||||||
$Redirection = ($RedirectSTDERR ? "2>> $build_log_err" : "");
|
$Redirection = ($RedirectSTDERR ? "2>> $build_log_err" : "");
|
||||||
system("abld build $TargetName urel $Redirection >> $build_log_out");
|
system("abld BUILD $TargetName UREL $Redirection >> $build_log_out");
|
||||||
$OK = 0 if ($? >> 8);
|
$OK = 0 if ($? >> 8);
|
||||||
# print " STDERR: ".((-s $build_log_err)-$OldSize)." bytes output written to $build_log_err\n+--------------------------------------------------------------------------------------\n" if ($OldSize != (-s $build_log_err));
|
# print " STDERR: ".((-s $build_log_err)-$OldSize)." bytes output written to $build_log_err\n+--------------------------------------------------------------------------------------\n" if ($OldSize != (-s $build_log_err));
|
||||||
PrintErrorMessage("'abld build $TargetName urel' exited with value " . ($? >> 8)) if ($? >> 8);
|
PrintErrorMessage("'abld BUILD $TargetName UREL' exited with value " . ($? >> 8)) if ($? >> 8);
|
||||||
return 0 if (!$OK); # ABLD always returns ok :( grr
|
return 0 if (!$OK); # ABLD always returns ok :( grr
|
||||||
PrintMessage("Done.") if (!$ReallyQuiet);
|
PrintMessage("Done.") if (!$ReallyQuiet);
|
||||||
|
|
||||||
|
@ -318,7 +475,7 @@ my $header = "
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PrintErrorMessage("'abld build $TargetName urel' apparently failed.");
|
PrintErrorMessage("'abld BUILD $TargetName UREL' apparently failed.");
|
||||||
if ($HaltOnError)
|
if ($HaltOnError)
|
||||||
{
|
{
|
||||||
PrintErrorMessage("Halting on error as requested!");
|
PrintErrorMessage("Halting on error as requested!");
|
||||||
|
@ -449,12 +606,14 @@ sub BuildVariation()
|
||||||
if (-e $UnlinkFile) { unlink($UnlinkFile) or PrintErrorMessage("Removing $UnlinkFile"); }
|
if (-e $UnlinkFile) { unlink($UnlinkFile) or PrintErrorMessage("Removing $UnlinkFile"); }
|
||||||
$UnlinkFile = $SDK_RootDirs{$SDK}."/epoc32/release/$TargetDir/urel/ScummVM.exe";
|
$UnlinkFile = $SDK_RootDirs{$SDK}."/epoc32/release/$TargetDir/urel/ScummVM.exe";
|
||||||
if (-e $UnlinkFile) { unlink($UnlinkFile) or PrintErrorMessage("Removing $UnlinkFile"); }
|
if (-e $UnlinkFile) { unlink($UnlinkFile) or PrintErrorMessage("Removing $UnlinkFile"); }
|
||||||
|
# remove all libs here, note they are in another dir!
|
||||||
|
system("del ".$SDK_RootDirs{$SDK}."/epoc32/release/$TargetName/urel/scummvm_*.lib");
|
||||||
|
|
||||||
system("bldmake bldfiles 2> NUL > NUL");
|
system("bldmake bldfiles 2> NUL > NUL");
|
||||||
PrintErrorMessage("'bldmake bldfiles' exited with value " . ($? >> 8)) if ($? >> 8);
|
PrintErrorMessage("'bldmake bldfiles' exited with value " . ($? >> 8)) if ($? >> 8);
|
||||||
|
|
||||||
system("abld clean $TargetName urel 2> NUL > NUL");
|
system("abld CLEAN $TargetName UREL 2> NUL > NUL");
|
||||||
PrintErrorMessage("'abld clean $TargetName urel' exited with value " . ($? >> 8)) if ($? >> 8);
|
PrintErrorMessage("'abld CLEAN $TargetName UREL' exited with value " . ($? >> 8)) if ($? >> 8);
|
||||||
|
|
||||||
my $Redirection = "OUT:file, ERR:".($RedirectSTDERR ? "file" : "screen");
|
my $Redirection = "OUT:file, ERR:".($RedirectSTDERR ? "file" : "screen");
|
||||||
my $Message = "Building $Package ($Redirection)";
|
my $Message = "Building $Package ($Redirection)";
|
||||||
|
@ -463,10 +622,10 @@ sub BuildVariation()
|
||||||
|
|
||||||
my $OldSize = (-s $build_log_err);
|
my $OldSize = (-s $build_log_err);
|
||||||
$Redirection = ($RedirectSTDERR ? "2>> $build_log_err" : "");
|
$Redirection = ($RedirectSTDERR ? "2>> $build_log_err" : "");
|
||||||
system("abld build $TargetName urel $Redirection >> $build_log_out");
|
system("abld BUILD $TargetName UREL $Redirection >> $build_log_out");
|
||||||
$OK = 0 if ($? >> 8);
|
$OK = 0 if ($? >> 8);
|
||||||
print " STDERR: ".((-s $build_log_err)-$OldSize)." bytes output written to $build_log_err\n+--------------------------------------------------------------------------------------\n" if ($OldSize != (-s $build_log_err) && !$ReallyQuiet);
|
print " STDERR: ".((-s $build_log_err)-$OldSize)." bytes output written to $build_log_err\n+--------------------------------------------------------------------------------------\n" if ($OldSize != (-s $build_log_err) && !$ReallyQuiet);
|
||||||
PrintErrorMessage("'abld build $TargetName urel' exited with value " . ($? >> 8)) if ($? >> 8);
|
PrintErrorMessage("'abld BUILD $TargetName UREL' exited with value " . ($? >> 8)) if ($? >> 8);
|
||||||
return 0 if (!$OK); # ABLD always returns ok :( grr
|
return 0 if (!$OK); # ABLD always returns ok :( grr
|
||||||
PrintMessage("Done.") if (!$ReallyQuiet);
|
PrintMessage("Done.") if (!$ReallyQuiet);
|
||||||
|
|
||||||
|
@ -574,6 +733,7 @@ sub PrepSdkPaths()
|
||||||
|
|
||||||
# set env stuff
|
# set env stuff
|
||||||
PrintMessage("Prepending $SDK specific paths to %PATH%") if (!$ReallyQuiet);
|
PrintMessage("Prepending $SDK specific paths to %PATH%") if (!$ReallyQuiet);
|
||||||
|
$AdditionalPathEntries .= "$SDK_ToolchainDirs{$SDK};" if ($SDK_ToolchainDirs{$SDK} ne '');
|
||||||
$AdditionalPathEntries .= "$ECompXL_BinDir;" if ($ECompXL_BinDir ne '' && $SDK eq 'UIQ2');
|
$AdditionalPathEntries .= "$ECompXL_BinDir;" if ($ECompXL_BinDir ne '' && $SDK eq 'UIQ2');
|
||||||
$AdditionalPathEntries .= "$EPOC32RT\\include;";
|
$AdditionalPathEntries .= "$EPOC32RT\\include;";
|
||||||
$AdditionalPathEntries .= "$EPOC32RT\\tools;";
|
$AdditionalPathEntries .= "$EPOC32RT\\tools;";
|
||||||
|
@ -635,3 +795,4 @@ sub PrintMessage()
|
||||||
|
|
||||||
##################################################################################################################
|
##################################################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,42 @@
|
||||||
|
|
||||||
##################################################################################################################
|
##################################################################################################################
|
||||||
|
|
||||||
|
@WorkingEngines = qw(
|
||||||
|
scumm agos sky queen gob saga
|
||||||
|
kyra lure agi
|
||||||
|
);
|
||||||
|
@TestingEngines = qw(
|
||||||
|
cine cruise touche parallaction
|
||||||
|
drascula igor made m4
|
||||||
|
);
|
||||||
|
@BrokenEngines = qw(
|
||||||
|
sword1
|
||||||
|
sword2
|
||||||
|
);
|
||||||
|
|
||||||
|
@EnablableEngines = (@WorkingEngines, @TestingEngines);
|
||||||
|
|
||||||
|
@EnablableSubEngines = qw(
|
||||||
|
scumm_7_8
|
||||||
|
he
|
||||||
|
);
|
||||||
|
|
||||||
|
%UseableFeatures = (
|
||||||
|
'zlib' => 'zlib.lib',
|
||||||
|
'mad' => 'libmad.lib',
|
||||||
|
'tremor' => 'libtremor.lib',
|
||||||
|
'mpeg2' => 'libmpeg2.lib'
|
||||||
|
);
|
||||||
|
|
||||||
|
# these are normally enabled for each variation
|
||||||
|
$DefaultFeatures = qw(zlib tremor);
|
||||||
|
#$DefaultFeatures = qw(zlib mad tremor);
|
||||||
|
|
||||||
|
|
||||||
# you can use these below for speed & clarity or override with custom settings
|
# you can use these below for speed & clarity or override with custom settings
|
||||||
$DefaultTopMacros = "
|
$DefaultTopMacros = "
|
||||||
MACRO USE_ZLIB // LIB:zlib.lib
|
MACRO USE_ZLIB // LIB:zlib.lib
|
||||||
MACRO USE_MAD // LIB:libmad.lib
|
//MACRO USE_MAD // LIB:libmad.lib
|
||||||
MACRO USE_TREMOR // LIB:libtremor.lib
|
MACRO USE_TREMOR // LIB:libtremor.lib
|
||||||
";
|
";
|
||||||
|
|
||||||
|
@ -13,63 +45,75 @@
|
||||||
MACRO DISABLE_SWORD2 // LIB:scummvm_sword2.lib
|
MACRO DISABLE_SWORD2 // LIB:scummvm_sword2.lib
|
||||||
";
|
";
|
||||||
|
|
||||||
|
##################################################################################################################
|
||||||
##
|
##
|
||||||
## General system information:
|
## General system information, based on $COMPUTERNAME, so this way
|
||||||
|
## you can use the same LocalSettings.pl file on multiple machines!
|
||||||
##
|
##
|
||||||
|
##################################################################################################################
|
||||||
|
|
||||||
# this way you can use the same LocalSettings.pl file on multiple machines!
|
if ($ENV{'COMPUTERNAME'} eq "PC-21") #########################################################################
|
||||||
if ($ENV{'COMPUTERNAME'} eq "BRAAMBOOK")
|
|
||||||
{
|
{
|
||||||
# might use this string for file/dir naming in the future :)
|
# might use this string for file/dir naming in the future :)
|
||||||
$Producer = "SumthinWicked";
|
$Producer = "SumthinWicked";
|
||||||
$RedirectSTDERR = 0;
|
$RedirectSTDERR = 0;
|
||||||
$HaltOnError = 1;
|
$HaltOnError = 0;
|
||||||
$SkipExistingPackages = 0;
|
$SkipExistingPackages = 0;
|
||||||
$ReallyQuiet = 0;
|
$ReallyQuiet = 0;
|
||||||
|
$DevBase = "C:\\S";
|
||||||
|
|
||||||
# specify an optional FTP server to upload to after each Build+Package (can leave empty)
|
# specify an optional FTP server to upload to after each Build+Package (can leave empty)
|
||||||
#$FTP_Host = "host.domain";
|
|
||||||
#$FTP_User = "test";
|
|
||||||
#$FTP_Pass = "test";
|
|
||||||
#$FTP_Dir = "test";
|
|
||||||
|
|
||||||
#$FTP_Host = "host.com";
|
#$FTP_Host = "host.com";
|
||||||
$FTP_User = "something";
|
$FTP_User = "something";
|
||||||
$FTP_Pass = "password";
|
$FTP_Pass = "password";
|
||||||
$FTP_Dir = "cvsbuilds";
|
$FTP_Dir = "cvsbuilds";
|
||||||
|
|
||||||
|
# What Platform SDKs are installed on this machine?
|
||||||
# possible SDKs: ("UIQ2", UIQ3", "S60v1", "S60v2", "S60v3", "S80", "S90")
|
# possible SDKs: ("UIQ2", UIQ3", "S60v1", "S60v2", "S60v3", "S80", "S90")
|
||||||
# Note1: the \epoc32 directory needs to be in these rootdirs
|
# Note1: the \epoc32 directory needs to be in these rootdirs
|
||||||
# Note2: these paths do NOT end in a backslash!
|
# Note2: these paths do NOT end in a backslash!
|
||||||
$SDK_RootDirs{'UIQ2'} = "C:\\S\\UIQ_21";
|
# $SDK_RootDirs{'UIQ2'} = "$DevBase\\UIQ_21";
|
||||||
$SDK_RootDirs{'S60v1'} = "C:\\S\\S60v1";
|
$SDK_RootDirs{'UIQ3'} = "$DevBase\\UIQ3";
|
||||||
$SDK_RootDirs{'S60v2'} = "C:\\S\\S60v2";
|
# $SDK_RootDirs{'S60v1'} = "$DevBase\\S60v1";
|
||||||
$SDK_RootDirs{'S80'} = "C:\\S\\S80";
|
# $SDK_RootDirs{'S60v2'} = "$DevBase\\S60v2";
|
||||||
$SDK_RootDirs{'S90'} = "C:\\S\\S90";
|
$SDK_RootDirs{'S60v3'} = "$DevBase\\S60v3";
|
||||||
$ECompXL_BinDir = "C:\\S\\ECompXL\\bin"; # only needed for UIQ
|
# $SDK_RootDirs{'S80'} = "$DevBase\\S80";
|
||||||
# you need to specify each of the SDKs used in the blocks below!
|
# $SDK_RootDirs{'S90'} = "$DevBase\\S90";
|
||||||
|
|
||||||
|
$SDK_ToolchainDirs{'S60v3'} = "$DevBase\\arm-symbianelf\\bin";
|
||||||
|
$SDK_ToolchainDirs{'UIQ2'} = "$DevBase\\ECompXL\\bin"; # only needed for UIQ2/UIQ3
|
||||||
|
$SDK_ToolchainDirs{'UIQ3'} = "$DevBase\\ECompXL\\bin"; # only needed for UIQ2/UIQ3
|
||||||
|
|
||||||
# these supporting libraries get built first, then all the Variations
|
# these supporting libraries get built first, then all the Variations
|
||||||
# Note: the string {'xxx.lib'} is used in checking in build success: so needs to be accurate!
|
# Note: the string {'xxx.lib'} is used in checking in build success: so needs to be accurate!
|
||||||
if (0) # so we can turn them on/off easily
|
if (0) # so we can turn them on/off easily
|
||||||
{
|
{
|
||||||
#$SDK_LibraryDirs{'ALL'}{'zlib.lib'} = "C:\\S\\zlib-1.2.2\\epoc";
|
## Standard libraries
|
||||||
#$SDK_LibraryDirs{'ALL'}{'libmad.lib'} = "C:\\S\\libmad-0.15.1b\\group";
|
$SDK_LibraryDirs{'ALL'}{'zlib.lib'} = "$DevBase\\zlib-1.2.2\\epoc";
|
||||||
#$SDK_LibraryDirs{'ALL'}{'libtremor.lib'}= "C:\\S\\tremor\\epoc";
|
#$SDK_LibraryDirs{'ALL'}{'libmad.lib'} = "$DevBase\\libmad-0.15.1b\\group";
|
||||||
$SDK_LibraryDirs{'UIQ2'}{'esdl.lib'} = $SDK_LibraryDirs{'UIQ3'}{'esdl.lib'} = "C:\\S\\ESDL\\epoc\\UIQ";
|
$SDK_LibraryDirs{'ALL'}{'libtremor.lib'}= "$DevBase\\tremor\\epoc";
|
||||||
#$SDK_LibraryDirs{'S60v1'}{'esdl.lib'} = $SDK_LibraryDirs{'S60v2'}{'esdl.lib'} = $SDK_LibraryDirs{'S60v3'}{'esdl.lib'} = "C:\\S\\ESDL\\epoc\\S60";
|
|
||||||
#$SDK_LibraryDirs{'S80'}{'esdl.lib'} = "C:\\S\\ESDL\\epoc\\S80";
|
## SDL 1.2.12 / AnotherGuest / Symbian version
|
||||||
#$SDK_LibraryDirs{'S90'}{'esdl.lib'} = "C:\\S\\ESDL\\epoc\\S90";
|
my $SdlBase = "$DevBase\\SDL-1.2.12-ag\\Symbian";
|
||||||
#$SDK_LibraryDirs{'ALL'}{'libmpeg2.lib'} = "C:\\S\\mpeg2dec-0.4.0\\epoc";
|
#$SDK_LibraryDirs{'S60v1'}{'esdl.lib'} = "$SdlBase\\S60"; // unsupported?
|
||||||
|
#$SDK_LibraryDirs{'S60v2'}{'esdl.lib'} = "$SdlBase\\S60v2";
|
||||||
|
$SDK_LibraryDirs{'S60v3'}{'esdl.lib'} = "$SdlBase\\S60v3";
|
||||||
|
#$SDK_LibraryDirs{'S80'}{'esdl.lib'} = "$SdlBase\\S80";
|
||||||
|
#$SDK_LibraryDirs{'S90'}{'esdl.lib'} = "$SdlBase\\S90";
|
||||||
|
#$SDK_LibraryDirs{'UIQ2'}{'esdl.lib'} = "$SdlBase\\UIQ2"
|
||||||
|
#$SDK_LibraryDirs{'UIQ3'}{'esdl.lib'} = "$SdlBase\\UIQ3";
|
||||||
|
|
||||||
|
## HardlySupported(TM) :P
|
||||||
|
#$SDK_LibraryDirs{'ALL'}{'libmpeg2.lib'} = "$DevBase\\mpeg2dec-0.4.0\\epoc";
|
||||||
}
|
}
|
||||||
|
|
||||||
# backup :P
|
# now you can add $VariationSets only built on this PC below this line :)
|
||||||
#Path=C:\Progra~1\Active\Python24\.;C:\Program Files\Active\Tcl\bin;C:\Progra~1\Active\Perl\bin\;C:\WINDOWS\system32;C:\W
|
|
||||||
#INDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\Program Files\GNU\cvsnt;C:\Progra
|
#$VariationSets{'ALL'}{'scumm'} = "$DefaultFeatures scumm scumm_7_8 he";
|
||||||
#m Files\WinSCP3\;"C:\Program Files\Common Files\Microsoft Shared\VSA\8.0\VsaEnv\";"c:\Program Files\Microsoft Visual Stu
|
#$VariationSets{'ALL'}{'all'} = "$DefaultFeatures @WorkingEngines @EnablableSubEngines";
|
||||||
#dio 8\VC\bin";"C:\Program Files\UltraEdit-32"
|
|
||||||
}
|
}
|
||||||
elsif ($ENV{'COMPUTERNAME'} eq "TSSLND0106")
|
elsif ($ENV{'COMPUTERNAME'} eq "TSSLND0106") #################################################################
|
||||||
{
|
{
|
||||||
$Producer = "AnotherGuest";
|
$Producer = "AnotherGuest";
|
||||||
$RedirectSTDERR = 1;
|
$RedirectSTDERR = 1;
|
||||||
|
@ -101,9 +145,11 @@ if (0) # so we can turn them on/off easily
|
||||||
# $SDK_LibraryDirs{'S90'}{'esdl.lib'} = "C:\\S\\ESDL\\epoc\\S90";
|
# $SDK_LibraryDirs{'S90'}{'esdl.lib'} = "C:\\S\\ESDL\\epoc\\S90";
|
||||||
#$SDK_LibraryDirs{'ALL'}{'libmpeg2.lib'} = "C:\\S\\mpeg2dec-0.4.0\\epoc";
|
#$SDK_LibraryDirs{'ALL'}{'libmpeg2.lib'} = "C:\\S\\mpeg2dec-0.4.0\\epoc";
|
||||||
}
|
}
|
||||||
# now you can add $SDK_Variations only built on this PC here :)
|
|
||||||
|
# now you can add $VariationSets only built on this PC below this line :)
|
||||||
|
|
||||||
}
|
}
|
||||||
elsif ($ENV{'COMPUTERNAME'} eq "BIGMACHINE")
|
elsif ($ENV{'COMPUTERNAME'} eq "BIGMACHINE") #################################################################
|
||||||
{
|
{
|
||||||
$Producer = "AnotherGuest";
|
$Producer = "AnotherGuest";
|
||||||
$RedirectSTDERR = 1;
|
$RedirectSTDERR = 1;
|
||||||
|
@ -116,14 +162,14 @@ elsif ($ENV{'COMPUTERNAME'} eq "BIGMACHINE")
|
||||||
#$FTP_Pass = "password";
|
#$FTP_Pass = "password";
|
||||||
#$FTP_Dir = "cvsbuilds";
|
#$FTP_Dir = "cvsbuilds";
|
||||||
|
|
||||||
#$SDK_RootDirs{'UIQ2'}= "E:\\UIQ2";
|
#$SDK_RootDirs{'UIQ2'}= "D:\\UIQ2";
|
||||||
$SDK_RootDirs{'UIQ3'}= "E:\\UIQ3";
|
$SDK_RootDirs{'UIQ3'}= "D:\\UIQ3";
|
||||||
#$SDK_RootDirs{'S60v1'}= "E:\\S60v1";
|
#$SDK_RootDirs{'S60v1'}= "D:\\S60v1";
|
||||||
#$SDK_RootDirs{'S60v2'}= "E:\\S60v2";
|
#$SDK_RootDirs{'S60v2'}= "D:\\S60v2";
|
||||||
$SDK_RootDirs{'S60v3'}= "E:\\S60v3";
|
$SDK_RootDirs{'S60v3'}= "D:\\S60v3";
|
||||||
#$SDK_RootDirs{'S80'}= "E:\\S80";
|
#$SDK_RootDirs{'S80'}= "D:\\S80";
|
||||||
#$SDK_RootDirs{'S90'}= "E:\\S90";
|
#$SDK_RootDirs{'S90'}= "D:\\S90";
|
||||||
$ECompXL_BinDir= "E:\\ECompXL\\";
|
$ECompXL_BinDir= "D:\\ECompXL\\";
|
||||||
if (0) # so we can turn them on/off easily
|
if (0) # so we can turn them on/off easily
|
||||||
{
|
{
|
||||||
# $SDK_LibraryDirs{'ALL'}{'zlib.lib'} = "C:\\S\\zlib-1.2.2\\epoc";
|
# $SDK_LibraryDirs{'ALL'}{'zlib.lib'} = "C:\\S\\zlib-1.2.2\\epoc";
|
||||||
|
@ -137,28 +183,32 @@ if (0) # so we can turn them on/off easily
|
||||||
$SDK_LibraryDirs{'UIQ3'}{'esdl.lib'} = "E:\\WICKED\\ESDL\\epoc\\UIQ\\UIQ3";
|
$SDK_LibraryDirs{'UIQ3'}{'esdl.lib'} = "E:\\WICKED\\ESDL\\epoc\\UIQ\\UIQ3";
|
||||||
#$SDK_LibraryDirs{'ALL'}{'libmpeg2.lib'} = "C:\\S\\mpeg2dec-0.4.0\\epoc";
|
#$SDK_LibraryDirs{'ALL'}{'libmpeg2.lib'} = "C:\\S\\mpeg2dec-0.4.0\\epoc";
|
||||||
}
|
}
|
||||||
# now you can add $SDK_Variations only built on this PC here :)
|
|
||||||
|
# now you can add $VariationSets only built on this PC below this line :)
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else #########################################################################################################
|
||||||
{
|
{
|
||||||
print "ERROR: Computer name ".$ENV{'COMPUTERNAME'}." not recognized! Plz edit _LocalSettings.pl!";
|
print "ERROR: Computer name ".$ENV{'COMPUTERNAME'}." not recognized! Plz edit _LocalSettings.pl!";
|
||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
##################################################################################################################
|
||||||
##
|
##
|
||||||
## Variation defines:
|
## Variation defines:
|
||||||
##
|
##
|
||||||
|
##################################################################################################################
|
||||||
|
|
||||||
# second hash index = literal string used in .sis file created.
|
# second hash index = literal string used in .sis file created.
|
||||||
# empty string also removes the trailing '_'. Some 051101 examples:
|
# empty string also removes the trailing '_'. Some 051101 examples:
|
||||||
|
|
||||||
# $SDK_Variations{'UIQ2'}{''} would produce:
|
# $VariationSets{'UIQ2'}{''} would produce:
|
||||||
# scummvm-051101-SymbianUIQ2.sis
|
# scummvm-051101-SymbianUIQ2.sis
|
||||||
|
|
||||||
# $SDK_Variations{'S60v2'}{'agos'} would produce:
|
# $VariationSets{'S60v2'}{'agos'} would produce:
|
||||||
# scummvm-051101-SymbianS60v2_agos.sis
|
# scummvm-051101-SymbianS60v2_agos.sis
|
||||||
|
|
||||||
# $SDK_Variations{'ALL'}{'queen'} with all $SDK_RootDirs defined would produce:
|
# $VariationSets{'ALL'}{'queen'} with all $SDK_RootDirs defined would produce:
|
||||||
# scummvm-051101-SymbianUIQ2_queen.sis
|
# scummvm-051101-SymbianUIQ2_queen.sis
|
||||||
# scummvm-051101-SymbianUIQ3_queen.sis
|
# scummvm-051101-SymbianUIQ3_queen.sis
|
||||||
# scummvm-051101-SymbianS60v1_queen.sis
|
# scummvm-051101-SymbianS60v1_queen.sis
|
||||||
|
@ -167,361 +217,47 @@ if (0) # so we can turn them on/off easily
|
||||||
# scummvm-051101-SymbianS80_queen.sis
|
# scummvm-051101-SymbianS80_queen.sis
|
||||||
# scummvm-051101-SymbianS90_queen.sis
|
# scummvm-051101-SymbianS90_queen.sis
|
||||||
|
|
||||||
#$SDK_Variations{'ALL'}{'test'} = "$DefaultTopMacro
|
# NOTE: empty $VariationSets{''} string instead of 'ALL' = easy way to disable pkg!
|
||||||
# //MACRO USE_TREMOR // LIB:libtremor.lib
|
|
||||||
# //MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
# //MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
# //MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
# //MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
# //MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
# //MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
# //MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
#$DefaultBottomMacros";
|
|
||||||
#$SDK_Variations{'S60v1'}{'test'} = $SDK_Variations{'UIQ2'}{'test'};
|
|
||||||
|
|
||||||
if (1) # all regular combo's
|
if (1) # all regular combo's
|
||||||
{
|
{
|
||||||
# the first one includes all SDKs & release-ready engines
|
# the first one includes all SDKs & release-ready engines
|
||||||
|
|
||||||
$SDK_Variations{'ALL'}{'all'} = "$DefaultTopMacros
|
$VariationSets{'ALL'}{'all'} = "$DefaultFeatures @WorkingEngines @EnablableSubEngines";
|
||||||
//MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
//MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
//MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
//MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
//MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
//MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
//MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
//MACRO DISABLE_AGI // LIB:scummvm_agi.lib
|
|
||||||
//MACRO DISABLE_TOUCHE // LIB:scummvm_touche.lib
|
|
||||||
//MACRO DISABLE_CINE // LIB:scummvm_cine.lib
|
|
||||||
//MACRO DISABLE_PARALLACTION // LIB:scummvm_parallaction.lib
|
|
||||||
//MACRO DISABLE_DRASCULA // LIB:scummvm_drascula.lib
|
|
||||||
|
|
||||||
//MACRO DISABLE_LURE // LIB:scummvm_lure.lib
|
|
||||||
//MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
//MACRO DISABLE_IGOR // LIB:scummvm_igor.lib
|
|
||||||
//MACRO DISABLE_MADE // LIB:scummvm_made.lib
|
|
||||||
//MACRO DISABLE_M4 // LIB:scummvm_m4.lib
|
|
||||||
$DefaultBottomMacros";
|
|
||||||
|
|
||||||
# now one for each ready-for-release engine
|
# now one for each ready-for-release engine
|
||||||
|
|
||||||
$SDK_Variations{'ALL'}{'scumm'} = "$DefaultTopMacros
|
foreach (@WorkingEngines)
|
||||||
//MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
{
|
||||||
MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
$VariationSets{'ALL'}{$_} = "$DefaultFeatures $_";
|
||||||
MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
}
|
||||||
MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
# for scumm, we need to add 2 features:
|
||||||
MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
$VariationSets{'ALL'}{'scumm'} .= " scumm_7_8 he";
|
||||||
MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
MACRO DISABLE_LURE // LIB:scummvm_lure.lib
|
|
||||||
MACRO DISABLE_CINE // LIB:scummvm_cine.lib
|
|
||||||
MACRO DISABLE_TOUCHE // LIB:scummvm_touche.lib
|
|
||||||
MACRO DISABLE_PARALLACTION // LIB:scummvm_parallaction.lib
|
|
||||||
MACRO DISABLE_DRASCULA // LIB:scummvm_drascula.lib
|
|
||||||
MACRO DISABLE_AGI // LIB:scummvm_agi.lib
|
|
||||||
MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
MACRO DISABLE_IGOR // LIB:scummvm_igor.lib
|
|
||||||
MACRO DISABLE_MADE // LIB:scummvm_made.lib
|
|
||||||
MACRO DISABLE_M4 // LIB:scummvm_m4.lib
|
|
||||||
$DefaultBottomMacros";
|
|
||||||
|
|
||||||
$SDK_Variations{'ALL'}{'agos'} = "$DefaultTopMacros
|
# now one for each not-ready-for-release-or-testing engine
|
||||||
MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
//MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
MACRO DISABLE_LURE // LIB:scummvm_lure.lib
|
|
||||||
MACRO DISABLE_CINE // LIB:scummvm_cine.lib
|
|
||||||
MACRO DISABLE_TOUCHE // LIB:scummvm_touche.lib
|
|
||||||
MACRO DISABLE_PARALLACTION // LIB:scummvm_parallaction.lib
|
|
||||||
MACRO DISABLE_DRASCULA // LIB:scummvm_drascula.lib
|
|
||||||
MACRO DISABLE_AGI // LIB:scummvm_agi.lib
|
|
||||||
MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
MACRO DISABLE_IGOR // LIB:scummvm_igor.lib
|
|
||||||
MACRO DISABLE_MADE // LIB:scummvm_made.lib
|
|
||||||
MACRO DISABLE_M4 // LIB:scummvm_m4.lib
|
|
||||||
$DefaultBottomMacros";
|
|
||||||
|
|
||||||
$SDK_Variations{'ALL'}{'sky'} = "$DefaultTopMacros
|
foreach (@TestingEngines)
|
||||||
MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
{
|
||||||
MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
$VariationSets{'ALL'}{"test_$_"} = "$DefaultFeatures $_";
|
||||||
//MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
}
|
||||||
MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
MACRO DISABLE_LURE // LIB:scummvm_lure.lib
|
|
||||||
MACRO DISABLE_CINE // LIB:scummvm_cine.lib
|
|
||||||
MACRO DISABLE_TOUCHE // LIB:scummvm_touche.lib
|
|
||||||
MACRO DISABLE_PARALLACTION // LIB:scummvm_parallaction.lib
|
|
||||||
MACRO DISABLE_DRASCULA // LIB:scummvm_drascula.lib
|
|
||||||
MACRO DISABLE_AGI // LIB:scummvm_agi.lib
|
|
||||||
MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
MACRO DISABLE_IGOR // LIB:scummvm_igor.lib
|
|
||||||
MACRO DISABLE_MADE // LIB:scummvm_made.lib
|
|
||||||
MACRO DISABLE_M4 // LIB:scummvm_m4.lib
|
|
||||||
$DefaultBottomMacros";
|
|
||||||
|
|
||||||
$SDK_Variations{'ALL'}{'queen'} = "$DefaultTopMacros
|
|
||||||
MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
//MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
MACRO DISABLE_AGI // LIB:scummvm_agi.lib
|
|
||||||
MACRO DISABLE_LURE // LIB:scummvm_lure.lib
|
|
||||||
MACRO DISABLE_CINE // LIB:scummvm_cine.lib
|
|
||||||
MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
MACRO DISABLE_TOUCHE // LIB:scummvm_touche.lib
|
|
||||||
MACRO DISABLE_PARALLACTION // LIB:scummvm_parallaction.lib
|
|
||||||
MACRO DISABLE_DRASCULA // LIB:scummvm_drascula.lib
|
|
||||||
MACRO DISABLE_IGOR // LIB:scummvm_igor.lib
|
|
||||||
MACRO DISABLE_MADE // LIB:scummvm_made.lib
|
|
||||||
MACRO DISABLE_M4 // LIB:scummvm_m4.lib
|
|
||||||
$DefaultBottomMacros";
|
|
||||||
|
|
||||||
$SDK_Variations{'ALL'}{'gob'} = "$DefaultTopMacros
|
|
||||||
MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
//MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
MACRO DISABLE_AGI // LIB:scummvm_agi.lib
|
|
||||||
MACRO DISABLE_LURE // LIB:scummvm_lure.lib
|
|
||||||
MACRO DISABLE_CINE // LIB:scummvm_cine.lib
|
|
||||||
MACRO DISABLE_TOUCHE // LIB:scummvm_touche.lib
|
|
||||||
MACRO DISABLE_PARALLACTION // LIB:scummvm_parallaction.lib
|
|
||||||
MACRO DISABLE_DRASCULA // LIB:scummvm_drascula.lib
|
|
||||||
MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
MACRO DISABLE_IGOR // LIB:scummvm_igor.lib
|
|
||||||
MACRO DISABLE_MADE // LIB:scummvm_made.lib
|
|
||||||
MACRO DISABLE_M4 // LIB:scummvm_m4.lib
|
|
||||||
$DefaultBottomMacros";
|
|
||||||
|
|
||||||
$SDK_Variations{'ALL'}{'saga'} = "$DefaultTopMacros
|
|
||||||
MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
//MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
MACRO DISABLE_LURE // LIB:scummvm_lure.lib
|
|
||||||
MACRO DISABLE_CINE // LIB:scummvm_cine.lib
|
|
||||||
MACRO DISABLE_TOUCHE // LIB:scummvm_touche.lib
|
|
||||||
MACRO DISABLE_PARALLACTION // LIB:scummvm_parallaction.lib
|
|
||||||
MACRO DISABLE_DRASCULA // LIB:scummvm_drascula.lib
|
|
||||||
MACRO DISABLE_AGI // LIB:scummvm_agi.lib
|
|
||||||
MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
MACRO DISABLE_IGOR // LIB:scummvm_igor.lib
|
|
||||||
MACRO DISABLE_MADE // LIB:scummvm_made.lib
|
|
||||||
MACRO DISABLE_M4 // LIB:scummvm_m4.lib
|
|
||||||
$DefaultBottomMacros";
|
|
||||||
|
|
||||||
$SDK_Variations{'ALL'}{'kyra'} = "$DefaultTopMacros
|
|
||||||
MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
//MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
MACRO DISABLE_AGI // LIB:scummvm_agi.lib
|
|
||||||
MACRO DISABLE_LURE // LIB:scummvm_lure.lib
|
|
||||||
MACRO DISABLE_CINE // LIB:scummvm_cine.lib
|
|
||||||
MACRO DISABLE_TOUCHE // LIB:scummvm_touche.lib
|
|
||||||
MACRO DISABLE_PARALLACTION // LIB:scummvm_parallaction.lib
|
|
||||||
MACRO DISABLE_DRASCULA // LIB:scummvm_drascula.lib
|
|
||||||
MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
MACRO DISABLE_IGOR // LIB:scummvm_igor.lib
|
|
||||||
MACRO DISABLE_MADE // LIB:scummvm_made.lib
|
|
||||||
MACRO DISABLE_M4 // LIB:scummvm_m4.lib
|
|
||||||
$DefaultBottomMacros";
|
|
||||||
|
|
||||||
# below here you could specify weird & experimental combinations, non-ready engines
|
# below here you could specify weird & experimental combinations, non-ready engines
|
||||||
|
|
||||||
$SDK_Variations{'ALL'}{'saga_mini'} = "
|
# a small version of the saga engine, because it is so big (no tremor,mad,zlib)
|
||||||
//MACRO USE_ZLIB // LIB:zlib.lib
|
$VariationSets{'ALL'}{'saga_mini'} = "saga";
|
||||||
//MACRO USE_MAD // LIB:libmad.lib
|
|
||||||
//MACRO USE_TREMOR // LIB:libtremor.lib
|
|
||||||
MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
//MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
MACRO DISABLE_AGI // LIB:scummvm_agi.lib
|
|
||||||
MACRO DISABLE_LURE // LIB:scummvm_lure.lib
|
|
||||||
MACRO DISABLE_CINE // LIB:scummvm_cine.lib
|
|
||||||
MACRO DISABLE_TOUCHE // LIB:scummvm_touche.lib
|
|
||||||
MACRO DISABLE_PARALLACTION // LIB:scummvm_parallaction.lib
|
|
||||||
MACRO DISABLE_DRASCULA // LIB:scummvm_drascula.lib
|
|
||||||
MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
MACRO DISABLE_IGOR // LIB:scummvm_igor.lib
|
|
||||||
MACRO DISABLE_MADE // LIB:scummvm_made.lib
|
|
||||||
MACRO DISABLE_M4 // LIB:scummvm_m4.lib
|
|
||||||
$DefaultBottomMacros";
|
|
||||||
|
|
||||||
# $SDK_Variations{'ALL'}{'scumm_no78he'} = "
|
# a smaller version of scumm without support for v7, v8 and HE games
|
||||||
# MACRO USE_ZLIB // LIB:zlib.lib
|
$VariationSets{'ALL'}{'scumm_no78he'} = "$DefaultFeatures scumm";
|
||||||
# MACRO USE_MAD // LIB:libmad.lib
|
|
||||||
# //MACRO USE_TREMOR // LIB:libtremor.lib
|
|
||||||
# MACRO DISABLE_SCUMM_7_8
|
|
||||||
# MACRO DISABLE_SCUMM_HE
|
|
||||||
# //MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
# MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
# MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
# MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
# MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
# MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
# MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
# MACRO DISABLE_AGI // LIB:scummvm_agi.lib
|
|
||||||
# MACRO DISABLE_LURE // LIB:scummvm_lure.lib
|
|
||||||
# MACRO DISABLE_CINE // LIB:scummvm_cine.lib
|
|
||||||
# MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
# $DefaultBottomMacros";
|
|
||||||
|
|
||||||
# $SDK_Variations{'ALL'}{'all_vorbis'} = "
|
# maybe you feel lucky and want to test the sword engines? :P
|
||||||
# MACRO USE_ZLIB // LIB:zlib.lib
|
#$VariationSets{'S60v2'}{'test_sword'} = "$DefaultFeatures mpeg2 sword1 sword2";
|
||||||
# MACRO USE_MAD // LIB:libmad.lib
|
#$VariationSets{'UIQ2'}{'test_sword'} = "$DefaultFeatures mpeg2 sword1 sword2";
|
||||||
# MACRO USE_TREMOR // LIB:libtremor.lib
|
|
||||||
#
|
|
||||||
# //MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
# //MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
# //MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
# //MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
# //MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
# //MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
# //MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
# $DefaultBottomMacros";
|
|
||||||
|
|
||||||
$SDK_Variations{'ALL'}{'lure'} = "$DefaultTopMacros
|
# for mega-fast-testing only plz! Warning: contains to engines!
|
||||||
MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
#$VariationSets{'ALL'}{'fast_empty'} = "";
|
||||||
MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
//MACRO DISABLE_LURE // LIB:scummvm_lure.lib
|
|
||||||
MACRO DISABLE_CINE // LIB:scummvm_agi.lib
|
|
||||||
MACRO DISABLE_TOUCHE // LIB:scummvm_touche.lib
|
|
||||||
MACRO DISABLE_PARALLACTION // LIB:scummvm_parallaction.lib
|
|
||||||
MACRO DISABLE_DRASCULA // LIB:scummvm_drascula.lib
|
|
||||||
MACRO DISABLE_AGI // LIB:scummvm_agi.lib
|
|
||||||
MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
MACRO DISABLE_IGOR // LIB:scummvm_igor.lib
|
|
||||||
MACRO DISABLE_MADE // LIB:scummvm_made.lib
|
|
||||||
MACRO DISABLE_M4 // LIB:scummvm_m4.lib
|
|
||||||
$DefaultBottomMacros";
|
|
||||||
|
|
||||||
# empty $SDK_Variations{''} string instead of 'ALL' = package disabled
|
} # end quick-n-fast if (1|0)
|
||||||
$SDK_Variations{'ALL'}{'test_cine'} = "$DefaultTopMacros
|
|
||||||
MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
MACRO DISABLE_LURE // LIB:scummvm_lure.lib
|
|
||||||
//MACRO DISABLE_CINE // LIB:scummvm_cine.lib
|
|
||||||
MACRO DISABLE_TOUCHE // LIB:scummvm_touche.lib
|
|
||||||
MACRO DISABLE_PARALLACTION // LIB:scummvm_parallaction.lib
|
|
||||||
MACRO DISABLE_DRASCULA // LIB:scummvm_drascula.lib
|
|
||||||
MACRO DISABLE_AGI // LIB:scummvm_agi.lib
|
|
||||||
MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
MACRO DISABLE_IGOR // LIB:scummvm_igor.lib
|
|
||||||
MACRO DISABLE_MADE // LIB:scummvm_made.lib
|
|
||||||
MACRO DISABLE_M4 // LIB:scummvm_m4.lib
|
|
||||||
$DefaultBottomMacros";
|
|
||||||
|
|
||||||
$SDK_Variations{'ALL'}{'agi'} = "$DefaultTopMacros
|
|
||||||
MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
MACRO DISABLE_LURE // LIB:scummvm_lure.lib
|
|
||||||
MACRO DISABLE_CINE // LIB:scummvm_cine.lib
|
|
||||||
MACRO DISABLE_TOUCHE // LIB:scummvm_touche.lib
|
|
||||||
MACRO DISABLE_PARALLACTION // LIB:scummvm_parallaction.lib
|
|
||||||
MACRO DISABLE_DRASCULA // LIB:scummvm_drascula.lib
|
|
||||||
//MACRO DISABLE_AGI // LIB:scummvm_agi.lib
|
|
||||||
MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
MACRO DISABLE_IGOR // LIB:scummvm_igor.lib
|
|
||||||
MACRO DISABLE_MADE // LIB:scummvm_made.lib
|
|
||||||
MACRO DISABLE_M4 // LIB:scummvm_m4.lib
|
|
||||||
$DefaultBottomMacros";
|
|
||||||
|
|
||||||
|
|
||||||
$SDK_Variations{'ALL'}{'test_touche'} = "$DefaultTopMacros
|
|
||||||
MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
MACRO DISABLE_LURE // LIB:scummvm_lure.lib
|
|
||||||
MACRO DISABLE_CINE // LIB:scummvm_cine.lib
|
|
||||||
MACRO DISABLE_AGI // LIB:scummvm_agi.lib
|
|
||||||
MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
//MACRO DISABLE_TOUCHE // LIB:scummvm_touche.lib
|
|
||||||
MACRO DISABLE_SWORD1 // LIB:scummvm_sword1.lib
|
|
||||||
MACRO DISABLE_SWORD2 // LIB:scummvm_sword2.lib
|
|
||||||
MACRO DISABLE_PARALLACTION // LIB:scummvm_parallaction.lib
|
|
||||||
MACRO DISABLE_DRASCULA // LIB:scummvm_drascula.lib
|
|
||||||
MACRO DISABLE_IGOR // LIB:scummvm_igor.lib
|
|
||||||
MACRO DISABLE_MADE // LIB:scummvm_made.lib
|
|
||||||
MACRO DISABLE_M4 // LIB:scummvm_m4.lib
|
|
||||||
";
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# $SDK_Variations{'S60v2'}{'test_sword'} = "$DefaultTopMacros
|
|
||||||
# MACRO USE_MPEG2 // LIB:libmpeg2.lib
|
|
||||||
# MACRO USE_TREMOR // LIB:libtremor.lib
|
|
||||||
# MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
# MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
# MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
# MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
# MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
# MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
# MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
# MACRO DISABLE_PARALLACTION // LIB:scummvm_parallaction.lib
|
|
||||||
# MACRO DISABLE_CINE // LIB:scummvm_cine.lib
|
|
||||||
# MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
# //MACRO DISABLE_SWORD1 // LIB:scummvm_sword1.lib
|
|
||||||
# //MACRO DISABLE_SWORD2 // LIB:scummvm_sword2.lib
|
|
||||||
# ";
|
|
||||||
# $SDK_Variations{'UIQ2'}{'test_sword'} = $SDK_Variations{'S60v2'}{'test_sword'}
|
|
||||||
#
|
|
||||||
|
|
||||||
# for mega-fast-testing only plz!
|
|
||||||
# $SDK_Variations{'ALL'}{'(fast_empty)'} = "
|
|
||||||
# //MACRO USE_ZLIB // LIB:zlib.lib
|
|
||||||
# //MACRO USE_MAD // LIB:libmad.lib
|
|
||||||
# //MACRO USE_TREMOR // LIB:libtremor.lib
|
|
||||||
# MACRO USE_UIQ_SE_VIBRA // LIB:vibration.lib
|
|
||||||
# MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
# MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
# MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
# //MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
# MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
# MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
# $DefaultBottomMacros";
|
|
||||||
|
|
||||||
##################################################################################################################
|
##################################################################################################################
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ Building ScummVM
|
||||||
Lets just say the framework needs quite some time to set up and takes a while
|
Lets just say the framework needs quite some time to set up and takes a while
|
||||||
to get used to. If you choose to continue you will need the following items:
|
to get used to. If you choose to continue you will need the following items:
|
||||||
|
|
||||||
|
- UIQ 3.0 SDK (To build for UIQ3 devices)
|
||||||
- UIQ 2.1 SDK (To build for UIQ2 devices);
|
- UIQ 2.1 SDK (To build for UIQ2 devices);
|
||||||
http://www.symbian.com/developer/sdks_uiq.asp
|
http://www.symbian.com/developer/sdks_uiq.asp
|
||||||
|
|
||||||
|
@ -58,14 +59,14 @@ Building ScummVM
|
||||||
|
|
||||||
- zlib, a massively spiffy yet delicately unobtrusive compression library
|
- zlib, a massively spiffy yet delicately unobtrusive compression library
|
||||||
http://www.zlib.net/
|
http://www.zlib.net/
|
||||||
|
- latest version of active perl (included with Symbian SDK does not work with the build scripts)
|
||||||
These are probably too heavy-duty for your phone:
|
|
||||||
|
|
||||||
- libogg, the free media file container format
|
- libogg, the free media file container format
|
||||||
http://www.xiph.org/ogg/
|
http://www.xiph.org/ogg/
|
||||||
|
|
||||||
- libvorbis, the free audio codec
|
- libvorbis, the free audio codec
|
||||||
http://www.vorbis.com/
|
http://www.vorbis.com/
|
||||||
|
These are probably too heavy-duty for your phone:
|
||||||
|
|
||||||
- flac, the Free Lossless Audio Codec
|
- flac, the Free Lossless Audio Codec
|
||||||
http://flac.sourceforge.net/
|
http://flac.sourceforge.net/
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
TARGET ScummVM.exe
|
TARGET ScummVM.exe
|
||||||
TARGETPATH sys\bin
|
TARGETPATH sys\bin
|
||||||
TARGETTYPE exe
|
TARGETTYPE exe
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
|
|
||||||
UID 0x100039ce 0xA0000657
|
UID 0x100039ce 0xA0000657
|
||||||
|
|
||||||
|
@ -81,13 +81,6 @@ ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
STATICLIBRARY esdl.lib
|
STATICLIBRARY esdl.lib
|
||||||
|
|
||||||
#if !defined(WINS)
|
|
||||||
staticlibrary rate_arm_asm.o
|
|
||||||
staticlibrary proc3arm.o
|
|
||||||
staticlibrary codec47ARM.o
|
|
||||||
staticlibrary gfxARM.o
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// *** Include paths
|
// *** Include paths
|
||||||
|
|
||||||
USERINCLUDE ..\..\..\.. ..\..\..\..\common ..\..\..\..\gui ..\..\..\..\engines
|
USERINCLUDE ..\..\..\.. ..\..\..\..\common ..\..\..\..\gui ..\..\..\..\engines
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET ScummVM.exe
|
||||||
TARGETPATH sys\bin
|
TARGETPATH sys\bin
|
||||||
TARGETTYPE exe
|
TARGETTYPE exe
|
||||||
|
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
|
|
||||||
UID 0x100039ce 0xA0000657
|
UID 0x100039ce 0xA0000657
|
||||||
|
|
||||||
|
@ -82,13 +82,6 @@ ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
STATICLIBRARY esdl.lib
|
STATICLIBRARY esdl.lib
|
||||||
|
|
||||||
#if !defined(WINS)
|
|
||||||
staticlibrary rate_arm_asm.o
|
|
||||||
staticlibrary proc3arm.o
|
|
||||||
staticlibrary codec47ARM.o
|
|
||||||
staticlibrary gfxARM.o
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// *** Include paths
|
// *** Include paths
|
||||||
|
|
||||||
USERINCLUDE ..\..\..\.. ..\..\..\..\common ..\..\..\..\gui ..\..\..\..\engines
|
USERINCLUDE ..\..\..\.. ..\..\..\..\common ..\..\..\..\gui ..\..\..\..\engines
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_agi.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_agos.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,36 +30,15 @@ TARGET scummvm_base.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
// Note: the LIB:*.lib statements are used by AdaptAllMMPs.pl, so don't remove them!
|
// Note: the LIB:*.lib statements are used by AdaptAllMMPs.pl, so don't remove them!
|
||||||
//START_AUTO_MACROS_MASTER//
|
//START_AUTO_MACROS_MASTER//
|
||||||
|
|
||||||
// empty base file, will be updated by Perl build scripts
|
// empty base file, will be updated by Perl build scripts
|
||||||
|
// this file will be modified first, then from here all
|
||||||
// list of possible MACROs: (will be replaced when generating scummvm_base.mmp)
|
// MACROs will be replicated to the other MPP files.
|
||||||
//MACRO USE_ZLIB // LIB:zlib.lib
|
|
||||||
//MACRO USE_MAD // LIB:libmad.lib
|
|
||||||
//MACRO USE_TREMOR // LIB:libtremor.lib
|
|
||||||
//MACRO USE_UIQ_SE_VIBRA // LIB:vibration.lib
|
|
||||||
//MACRO DISABLE_SCUMM_7_8
|
|
||||||
//MACRO DISABLE_SCUMM_HE
|
|
||||||
//MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
|
|
||||||
//MACRO DISABLE_AGOS // LIB:scummvm_agos.lib
|
|
||||||
//MACRO DISABLE_SKY // LIB:scummvm_sky.lib
|
|
||||||
//MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
|
|
||||||
//MACRO DISABLE_GOB // LIB:scummvm_gob.lib
|
|
||||||
//MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
|
|
||||||
//MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
|
|
||||||
//MACRO DISABLE_SWORD1 // LIB:scummvm_sword1.lib
|
|
||||||
//MACRO DISABLE_SWORD2 // LIB:scummvm_sword2.lib
|
|
||||||
//MACRO DISABLE_LURE // LIB:scummvm_lure.lib
|
|
||||||
//MACRO DISABLE_CINE // LIB:scummvm_cine.lib
|
|
||||||
//MACRO DISABLE_AGI // LIB:scummvm_agi.lib
|
|
||||||
//MACRO DISABLE_PARALLACTION // LIB:scummvm_parallaction.lib
|
|
||||||
//MACRO DISABLE_CRUISE // LIB:scummvm_cruise.lib
|
|
||||||
//MACRO DISABLE_DRASCULA // LIB:scummvm_drascula.lib
|
|
||||||
|
|
||||||
//STOP_AUTO_MACROS_MASTER//
|
//STOP_AUTO_MACROS_MASTER//
|
||||||
|
|
||||||
|
@ -77,6 +56,7 @@ SYSTEMINCLUDE ..\src // for portdefs.h
|
||||||
|
|
||||||
// *** SOURCE files
|
// *** SOURCE files
|
||||||
|
|
||||||
|
|
||||||
SOURCEPATH ..\..\..\..\common
|
SOURCEPATH ..\..\..\..\common
|
||||||
//START_AUTO_OBJECTS_COMMON_//
|
//START_AUTO_OBJECTS_COMMON_//
|
||||||
|
|
||||||
|
@ -84,6 +64,7 @@ SOURCEPATH ..\..\..\..\common
|
||||||
|
|
||||||
//STOP_AUTO_OBJECTS_COMMON_//
|
//STOP_AUTO_OBJECTS_COMMON_//
|
||||||
|
|
||||||
|
|
||||||
SOURCEPATH ..\..\..\..\graphics
|
SOURCEPATH ..\..\..\..\graphics
|
||||||
//START_AUTO_OBJECTS_GRAPHICS_//
|
//START_AUTO_OBJECTS_GRAPHICS_//
|
||||||
|
|
||||||
|
@ -91,6 +72,7 @@ SOURCEPATH ..\..\..\..\graphics
|
||||||
|
|
||||||
//STOP_AUTO_OBJECTS_GRAPHICS_//
|
//STOP_AUTO_OBJECTS_GRAPHICS_//
|
||||||
|
|
||||||
|
|
||||||
SOURCEPATH ..\..\..\..\gui
|
SOURCEPATH ..\..\..\..\gui
|
||||||
//START_AUTO_OBJECTS_GUI_//
|
//START_AUTO_OBJECTS_GUI_//
|
||||||
|
|
||||||
|
@ -103,6 +85,7 @@ SOURCEPATH ..\..\..\..\gui
|
||||||
//SOURCE KeysDialog.cpp
|
//SOURCE KeysDialog.cpp
|
||||||
//SOURCE Actions.cpp
|
//SOURCE Actions.cpp
|
||||||
|
|
||||||
|
|
||||||
SOURCEPATH ..\..\..\..\sound
|
SOURCEPATH ..\..\..\..\sound
|
||||||
//START_AUTO_OBJECTS_SOUND_//
|
//START_AUTO_OBJECTS_SOUND_//
|
||||||
|
|
||||||
|
@ -110,16 +93,22 @@ SOURCEPATH ..\..\..\..\sound
|
||||||
|
|
||||||
//STOP_AUTO_OBJECTS_SOUND_//
|
//STOP_AUTO_OBJECTS_SOUND_//
|
||||||
#if defined (WINS)
|
#if defined (WINS)
|
||||||
SOURCE rate.cpp
|
SOURCE rate.cpp // WINS emulator version: add regular .cpp
|
||||||
#else
|
#else
|
||||||
SOURCE rate_arm.cpp
|
SOURCE rate_arm.cpp // ARM version: add ASM .cpp wrapper
|
||||||
|
SOURCE rate_arm_asm.s // ARM version: add ASM routines
|
||||||
#endif
|
#endif
|
||||||
sourcepath ..\..\..\..
|
|
||||||
source backends\events\default\default-events.cpp
|
|
||||||
source backends\timer\default\default-timer.cpp
|
// add a few files manually, since they are not parsed from modules.mk files
|
||||||
source backends\saves\savefile.cpp
|
SOURCEPATH ..\..\..\..
|
||||||
source backends\saves\default\default-saves.cpp
|
SOURCE backends\events\default\default-events.cpp
|
||||||
source backends\saves\compressed\compressed-saves.cpp
|
SOURCE backends\timer\default\default-timer.cpp
|
||||||
source engines\engine.cpp
|
SOURCE backends\saves\savefile.cpp
|
||||||
|
SOURCE backends\saves\default\default-saves.cpp
|
||||||
|
SOURCE backends\saves\compressed\compressed-saves.cpp
|
||||||
|
SOURCE engines\engine.cpp
|
||||||
|
|
||||||
|
|
||||||
// backend specific includes
|
// backend specific includes
|
||||||
// backend specific includes
|
// backend specific includes
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_CINE.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_cruise.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_drascula.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_gob.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_kyra.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_lure.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_m4.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_made.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_parallaction.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_queen.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_saga.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_scumm.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
@ -43,23 +43,34 @@ ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
SOURCEPATH ..\..\..\..\engines\scumm
|
SOURCEPATH ..\..\..\..\engines\scumm
|
||||||
|
|
||||||
|
|
||||||
//START_AUTO_OBJECTS_SCUMM_//
|
//START_AUTO_OBJECTS_SCUMM_//
|
||||||
|
|
||||||
// empty base file, will be updated by Perl build scripts
|
// empty base file, will be updated by Perl build scripts
|
||||||
|
|
||||||
//STOP_AUTO_OBJECTS_SCUMM_//
|
//STOP_AUTO_OBJECTS_SCUMM_//
|
||||||
|
#if !defined (WINS)
|
||||||
|
SOURCE gfxARM.s // ARM version: add ASM routines
|
||||||
|
SOURCE proc3ARM.s // ARM version: add ASM routines
|
||||||
|
#endif
|
||||||
|
|
||||||
//START_AUTO_OBJECTS_SCUMM_DISABLE_SCUMM_7_8//
|
|
||||||
|
//START_AUTO_OBJECTS_SCUMM_ENABLE_SCUMM_7_8//
|
||||||
|
|
||||||
// empty base file, will be updated by Perl build scripts
|
// empty base file, will be updated by Perl build scripts
|
||||||
|
|
||||||
//STOP_AUTO_OBJECTS_SCUMM_DISABLE_SCUMM_7_8//
|
//STOP_AUTO_OBJECTS_SCUMM_ENABLE_SCUMM_7_8//
|
||||||
|
#if !defined (WINS)
|
||||||
|
SOURCE smush/codec47ARM.s // ARM version: add ASM routines
|
||||||
|
#endif
|
||||||
|
|
||||||
//START_AUTO_OBJECTS_SCUMM_DISABLE_HE//
|
|
||||||
|
//START_AUTO_OBJECTS_SCUMM_ENABLE_HE//
|
||||||
|
|
||||||
// empty base file, will be updated by Perl build scripts
|
// empty base file, will be updated by Perl build scripts
|
||||||
|
|
||||||
//STOP_AUTO_OBJECTS_SCUMM_DISABLE_HE//
|
//STOP_AUTO_OBJECTS_SCUMM_ENABLE_HE//
|
||||||
|
|
||||||
|
|
||||||
// *** Include paths
|
// *** Include paths
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_sky.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_sword1.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_sword2.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_touche.lib
|
||||||
TARGETTYPE lib
|
TARGETTYPE lib
|
||||||
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
|
||||||
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
|
||||||
OPTION GCCE -Wno-multichar -Wno-reorder -fsigned-char
|
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
|
||||||
ALWAYS_BUILD_AS_ARM
|
ALWAYS_BUILD_AS_ARM
|
||||||
|
|
||||||
//START_AUTO_MACROS_SLAVE//
|
//START_AUTO_MACROS_SLAVE//
|
||||||
|
|
|
@ -173,11 +173,8 @@ void OSystem_SDL_Symbian::quit() {
|
||||||
OSystem_SDL::quit();
|
OSystem_SDL::quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OSystem_SDL_Symbian::setSoundCallback(SoundProc proc, void *param) {
|
void OSystem_SDL_Symbian::setupMixer() {
|
||||||
|
|
||||||
// First save the proc and param
|
|
||||||
_sound_proc_param = param;
|
|
||||||
_sound_proc = proc;
|
|
||||||
SDL_AudioSpec desired;
|
SDL_AudioSpec desired;
|
||||||
SDL_AudioSpec obtained;
|
SDL_AudioSpec obtained;
|
||||||
|
|
||||||
|
@ -207,17 +204,19 @@ bool OSystem_SDL_Symbian::setSoundCallback(SoundProc proc, void *param) {
|
||||||
desired.format = AUDIO_S16SYS;
|
desired.format = AUDIO_S16SYS;
|
||||||
desired.channels = 2;
|
desired.channels = 2;
|
||||||
desired.samples = (uint16)samples;
|
desired.samples = (uint16)samples;
|
||||||
#ifdef S60
|
|
||||||
desired.callback = symbianMixCallback;
|
desired.callback = symbianMixCallback;
|
||||||
desired.userdata = this;
|
desired.userdata = this;
|
||||||
#else
|
|
||||||
desired.callback = proc;
|
// Create the mixer instance
|
||||||
desired.userdata = param;
|
assert(!_mixer);
|
||||||
#endif
|
_mixer = new Audio::MixerImpl(this);
|
||||||
|
assert(_mixer);
|
||||||
|
|
||||||
if (SDL_OpenAudio(&desired, &obtained) != 0) {
|
if (SDL_OpenAudio(&desired, &obtained) != 0) {
|
||||||
warning("Could not open audio device: %s", SDL_GetError());
|
warning("Could not open audio device: %s", SDL_GetError());
|
||||||
return false;
|
_samplesPerSec = 0;
|
||||||
}
|
_mixer->setReady(false);
|
||||||
|
} else {
|
||||||
// Note: This should be the obtained output rate, but it seems that at
|
// Note: This should be the obtained output rate, but it seems that at
|
||||||
// least on some platforms SDL will lie and claim it did get the rate
|
// least on some platforms SDL will lie and claim it did get the rate
|
||||||
// even if it didn't. Probably only happens for "weird" rates, though.
|
// even if it didn't. Probably only happens for "weird" rates, though.
|
||||||
|
@ -229,26 +228,29 @@ bool OSystem_SDL_Symbian::setSoundCallback(SoundProc proc, void *param) {
|
||||||
_stereo_mix_buffer = new byte [obtained.size*2];//*2 for stereo values
|
_stereo_mix_buffer = new byte [obtained.size*2];//*2 for stereo values
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tell the mixer that we are ready and start the sound processing
|
||||||
|
_mixer->setOutputRate(_samplesPerSec);
|
||||||
|
_mixer->setReady(true);
|
||||||
SDL_PauseAudio(0);
|
SDL_PauseAudio(0);
|
||||||
return true;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The mixer callback function, passed on to OSystem::setSoundCallback().
|
* The mixer callback function, passed on to OSystem::setSoundCallback().
|
||||||
* This simply calls the mix() method.
|
* This simply calls the mix() method.
|
||||||
*/
|
*/
|
||||||
void OSystem_SDL_Symbian::symbianMixCallback(void *s, byte *samples, int len) {
|
void OSystem_SDL_Symbian::symbianMixCallback(void *sys, byte *samples, int len) {
|
||||||
static_cast <OSystem_SDL_Symbian*>(s)->symbianMix(samples,len);
|
OSystem_SDL_Symbian *this_ = (OSystem_SDL_Symbian *)sys;
|
||||||
}
|
assert(this_);
|
||||||
|
|
||||||
|
if (!this_->_mixer)
|
||||||
|
return;
|
||||||
|
|
||||||
/**
|
#ifdef S60
|
||||||
* Actual mixing implementation
|
|
||||||
*/
|
|
||||||
void OSystem_SDL_Symbian::symbianMix(byte *samples, int len) {
|
|
||||||
// If not stereo then we need to downmix
|
// If not stereo then we need to downmix
|
||||||
if (_channels != 2) {
|
if (_channels != 2) {
|
||||||
_sound_proc(_sound_proc_param, _stereo_mix_buffer, len * 2);
|
this_->_mixer->mixCallback(_stereo_mix_buffer, len * 2);
|
||||||
|
|
||||||
int16 *bitmixDst = (int16 *)samples;
|
int16 *bitmixDst = (int16 *)samples;
|
||||||
int16 *bitmixSrc = (int16 *)_stereo_mix_buffer;
|
int16 *bitmixSrc = (int16 *)_stereo_mix_buffer;
|
||||||
|
|
||||||
|
@ -258,9 +260,12 @@ void OSystem_SDL_Symbian::symbianMix(byte *samples, int len) {
|
||||||
bitmixSrc += 2;
|
bitmixSrc += 2;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
_sound_proc(_sound_proc_param, samples, len);
|
#else
|
||||||
|
this_->_mixer->mixCallback(samples, len);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is an implementation by the remapKey function
|
* This is an implementation by the remapKey function
|
||||||
* @param SDL_Event to remap
|
* @param SDL_Event to remap
|
||||||
|
|
|
@ -58,7 +58,7 @@ public:
|
||||||
// This function is overridden by the symbian port in order to provide MONO audio
|
// This function is overridden by the symbian port in order to provide MONO audio
|
||||||
// downmix is done by supplying our own audiocallback
|
// downmix is done by supplying our own audiocallback
|
||||||
//
|
//
|
||||||
virtual bool setSoundCallback(SoundProc proc, void *param); // overloaded by CE backend
|
virtual void setupMixer(); // overloaded by CE backend
|
||||||
|
|
||||||
// Overloaded from SDL_Commmon
|
// Overloaded from SDL_Commmon
|
||||||
void quit();
|
void quit();
|
||||||
|
@ -70,11 +70,6 @@ protected:
|
||||||
//
|
//
|
||||||
static void symbianMixCallback(void *s, byte *samples, int len);
|
static void symbianMixCallback(void *s, byte *samples, int len);
|
||||||
|
|
||||||
//
|
|
||||||
// Actual mixing implementation
|
|
||||||
//
|
|
||||||
void symbianMix(byte *samples, int len);
|
|
||||||
|
|
||||||
virtual FilesystemFactory *getFilesystemFactory();
|
virtual FilesystemFactory *getFilesystemFactory();
|
||||||
public:
|
public:
|
||||||
// vibration support
|
// vibration support
|
||||||
|
@ -121,8 +116,6 @@ protected:
|
||||||
// Audio
|
// Audio
|
||||||
int _channels;
|
int _channels;
|
||||||
|
|
||||||
SoundProc _sound_proc;
|
|
||||||
void *_sound_proc_param;
|
|
||||||
byte *_stereo_mix_buffer;
|
byte *_stereo_mix_buffer;
|
||||||
|
|
||||||
// Used to handle joystick navi zones
|
// Used to handle joystick navi zones
|
||||||
|
|
|
@ -35,8 +35,8 @@
|
||||||
#include <e32std.h>
|
#include <e32std.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#define DISABLE_SCALERS // we only need 1x
|
//#define DISABLE_SCALERS // we only need 1x
|
||||||
#define DISABLE_HQ_SCALERS
|
//#define DISABLE_HQ_SCALERS
|
||||||
|
|
||||||
#if defined(USE_TREMOR) && !defined(USE_VORBIS)
|
#if defined(USE_TREMOR) && !defined(USE_VORBIS)
|
||||||
#define USE_VORBIS // make sure this one is defined together with USE_TREMOR!
|
#define USE_VORBIS // make sure this one is defined together with USE_TREMOR!
|
||||||
|
|
|
@ -91,7 +91,7 @@ void OSystem_Wii::initBackend() {
|
||||||
_startup_time = gettime();
|
_startup_time = gettime();
|
||||||
|
|
||||||
_savefile = new DefaultSaveFileManager();
|
_savefile = new DefaultSaveFileManager();
|
||||||
_mixer = new Audio::Mixer();
|
_mixer = new Audio::MixerImpl(this);
|
||||||
_timer = new DefaultTimerManager();
|
_timer = new DefaultTimerManager();
|
||||||
|
|
||||||
initGfx();
|
initGfx();
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
#include "backends/saves/default/default-saves.h"
|
#include "backends/saves/default/default-saves.h"
|
||||||
#include "backends/timer/default/default-timer.h"
|
#include "backends/timer/default/default-timer.h"
|
||||||
#include "graphics/surface.h"
|
#include "graphics/surface.h"
|
||||||
#include "sound/mixer.h"
|
#include "sound/mixer_intern.h"
|
||||||
|
|
||||||
#include <gctypes.h>
|
#include <gctypes.h>
|
||||||
#include <gccore.h>
|
#include <gccore.h>
|
||||||
|
@ -96,7 +96,7 @@ private:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Common::SaveFileManager *_savefile;
|
Common::SaveFileManager *_savefile;
|
||||||
Audio::Mixer *_mixer;
|
Audio::MixerImpl *_mixer;
|
||||||
DefaultTimerManager *_timer;
|
DefaultTimerManager *_timer;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -159,7 +159,6 @@ public:
|
||||||
virtual void deleteMutex(MutexRef mutex);
|
virtual void deleteMutex(MutexRef mutex);
|
||||||
|
|
||||||
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
||||||
virtual int getOutputSampleRate() const;
|
|
||||||
|
|
||||||
virtual void quit();
|
virtual void quit();
|
||||||
|
|
||||||
|
|
|
@ -36,9 +36,6 @@ static bool sfx_thread_quit = false;
|
||||||
static u8 sb = 0;
|
static u8 sb = 0;
|
||||||
static u8 *sound_buffer[2];
|
static u8 *sound_buffer[2];
|
||||||
|
|
||||||
static OSystem_Wii::SoundProc sound_proc = NULL;
|
|
||||||
static void *proc_param = NULL;
|
|
||||||
|
|
||||||
static void audio_switch_buffers() {
|
static void audio_switch_buffers() {
|
||||||
AUDIO_StopDMA();
|
AUDIO_StopDMA();
|
||||||
AUDIO_InitDMA((u32) sound_buffer[sb], SFX_THREAD_FRAG_SIZE);
|
AUDIO_InitDMA((u32) sound_buffer[sb], SFX_THREAD_FRAG_SIZE);
|
||||||
|
@ -48,6 +45,7 @@ static void audio_switch_buffers() {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void * sfx_thread_func(void *arg) {
|
static void * sfx_thread_func(void *arg) {
|
||||||
|
Audio::MixerImpl *mixer = (Audio::MixerImpl *) arg;
|
||||||
u8 next_sb;
|
u8 next_sb;
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
@ -57,7 +55,7 @@ static void * sfx_thread_func(void *arg) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
next_sb = sb ^ 1;
|
next_sb = sb ^ 1;
|
||||||
sound_proc(proc_param, sound_buffer[next_sb], SFX_THREAD_FRAG_SIZE);
|
mixer->mixCallback(sound_buffer[next_sb], SFX_THREAD_FRAG_SIZE);
|
||||||
DCFlushRange(sound_buffer[next_sb], SFX_THREAD_FRAG_SIZE);
|
DCFlushRange(sound_buffer[next_sb], SFX_THREAD_FRAG_SIZE);
|
||||||
|
|
||||||
sb = next_sb;
|
sb = next_sb;
|
||||||
|
@ -75,7 +73,7 @@ void OSystem_Wii::initSfx() {
|
||||||
|
|
||||||
LWP_InitQueue(&sfx_queue);
|
LWP_InitQueue(&sfx_queue);
|
||||||
|
|
||||||
s32 res = LWP_CreateThread(&sfx_thread, sfx_thread_func, NULL, sfx_stack,
|
s32 res = LWP_CreateThread(&sfx_thread, sfx_thread_func, _mixer, sfx_stack,
|
||||||
SFX_THREAD_STACKSIZE, SFX_THREAD_PRIO);
|
SFX_THREAD_STACKSIZE, SFX_THREAD_PRIO);
|
||||||
|
|
||||||
if (res) {
|
if (res) {
|
||||||
|
@ -95,9 +93,7 @@ void OSystem_Wii::initSfx() {
|
||||||
DCFlushRange(sound_buffer[0], SFX_THREAD_FRAG_SIZE);
|
DCFlushRange(sound_buffer[0], SFX_THREAD_FRAG_SIZE);
|
||||||
DCFlushRange(sound_buffer[1], SFX_THREAD_FRAG_SIZE);
|
DCFlushRange(sound_buffer[1], SFX_THREAD_FRAG_SIZE);
|
||||||
|
|
||||||
sound_proc = Audio::Mixer::mixCallback;
|
_mixer->setOutputRate(48000);
|
||||||
proc_param = _mixer;
|
|
||||||
|
|
||||||
_mixer->setReady(true);
|
_mixer->setReady(true);
|
||||||
|
|
||||||
AUDIO_SetDSPSampleRate(AI_SAMPLERATE_48KHZ);
|
AUDIO_SetDSPSampleRate(AI_SAMPLERATE_48KHZ);
|
||||||
|
@ -127,7 +123,3 @@ void OSystem_Wii::deinitSfx() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int OSystem_Wii::getOutputSampleRate() const {
|
|
||||||
return 48000;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
## Enable whichever engines you want here
|
## Enable whichever engines you want here
|
||||||
|
|
||||||
ENABLE_SCUMM = STATIC_PLUGIN
|
ENABLE_SCUMM = STATIC_PLUGIN
|
||||||
|
ENABLE_SCUMM_7_8 = 1
|
||||||
|
ENABLE_HE = 1
|
||||||
ENABLE_SKY = STATIC_PLUGIN
|
ENABLE_SKY = STATIC_PLUGIN
|
||||||
ENABLE_QUEEN = STATIC_PLUGIN
|
ENABLE_QUEEN = STATIC_PLUGIN
|
||||||
ENABLE_GOB = STATIC_PLUGIN
|
ENABLE_GOB = STATIC_PLUGIN
|
||||||
|
@ -163,7 +165,8 @@ endif
|
||||||
EXECUTABLE = scummvm.exe
|
EXECUTABLE = scummvm.exe
|
||||||
CXXFLAGS := $(CFLAGS)
|
CXXFLAGS := $(CFLAGS)
|
||||||
OBJS :=
|
OBJS :=
|
||||||
MODULE_DIRS += .
|
MODULE_DIRS += ./
|
||||||
|
DEPDIR = .deps
|
||||||
|
|
||||||
OBJS += CEActionsPocket.o CEDevice.o CEScaler.o \
|
OBJS += CEActionsPocket.o CEDevice.o CEScaler.o \
|
||||||
CEActionsSmartphone.o CELauncherDialog.o wince-sdl.o
|
CEActionsSmartphone.o CELauncherDialog.o wince-sdl.o
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
#include "base/main.h"
|
#include "base/main.h"
|
||||||
#include "base/plugins.h"
|
#include "base/plugins.h"
|
||||||
|
|
||||||
#include "sound/mixer.h"
|
#include "sound/mixer_intern.h"
|
||||||
#include "sound/fmopl.h"
|
#include "sound/fmopl.h"
|
||||||
|
|
||||||
#include "backends/timer/default/default-timer.h"
|
#include "backends/timer/default/default-timer.h"
|
||||||
|
@ -94,7 +94,6 @@ static char stdout_fname[MAX_PATH], stderr_fname[MAX_PATH];
|
||||||
// Static member inits
|
// Static member inits
|
||||||
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
||||||
bool OSystem_WINCE3::_soundMaster = true;
|
bool OSystem_WINCE3::_soundMaster = true;
|
||||||
SoundProc OSystem_WINCE3::_originalSoundProc = NULL;
|
|
||||||
|
|
||||||
bool _isSmartphone = false;
|
bool _isSmartphone = false;
|
||||||
bool _hasSmartphoneResolution = false;
|
bool _hasSmartphoneResolution = false;
|
||||||
|
@ -403,9 +402,8 @@ void OSystem_WINCE3::initBackend()
|
||||||
{
|
{
|
||||||
// Instantiate our own sound mixer
|
// Instantiate our own sound mixer
|
||||||
// mixer init is postponed until a game engine is selected.
|
// mixer init is postponed until a game engine is selected.
|
||||||
if (_mixer == 0) {
|
if (_mixer == 0)
|
||||||
_mixer = new Audio::Mixer();
|
_mixer = new Audio::MixerImpl(this);
|
||||||
}
|
|
||||||
|
|
||||||
// Create the timer. CE SDL does not support multiple timers (SDL_AddTimer).
|
// Create the timer. CE SDL does not support multiple timers (SDL_AddTimer).
|
||||||
// We work around this by using the SetTimer function, since we only use
|
// We work around this by using the SetTimer function, since we only use
|
||||||
|
@ -770,7 +768,7 @@ void OSystem_WINCE3::create_toolbar() {
|
||||||
_toolbarHandler.setVisible(false);
|
_toolbarHandler.setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OSystem_WINCE3::setSoundCallback(SoundProc proc, void *param) {
|
void OSystem_WINCE3::setupMixer() {
|
||||||
SDL_AudioSpec desired;
|
SDL_AudioSpec desired;
|
||||||
int thread_priority;
|
int thread_priority;
|
||||||
|
|
||||||
|
@ -779,18 +777,20 @@ bool OSystem_WINCE3::setSoundCallback(SoundProc proc, void *param) {
|
||||||
|
|
||||||
memset(&desired, 0, sizeof(desired));
|
memset(&desired, 0, sizeof(desired));
|
||||||
|
|
||||||
_originalSoundProc = proc;
|
|
||||||
desired.freq = _sampleRate;
|
desired.freq = _sampleRate;
|
||||||
desired.format = AUDIO_S16SYS;
|
desired.format = AUDIO_S16SYS;
|
||||||
desired.channels = 2;
|
desired.channels = 2;
|
||||||
desired.samples = 128;
|
desired.samples = 128;
|
||||||
desired.callback = private_sound_proc;
|
desired.callback = private_sound_proc;
|
||||||
desired.userdata = param;
|
desired.userdata = this;
|
||||||
|
|
||||||
|
// Create the mixer instance
|
||||||
|
if (_mixer == 0)
|
||||||
|
_mixer = new Audio::MixerImpl(this);
|
||||||
|
|
||||||
// Add sound thread priority
|
// Add sound thread priority
|
||||||
if (!ConfMan.hasKey("sound_thread_priority")) {
|
if (!ConfMan.hasKey("sound_thread_priority"))
|
||||||
thread_priority = THREAD_PRIORITY_NORMAL;
|
thread_priority = THREAD_PRIORITY_NORMAL;
|
||||||
}
|
|
||||||
else
|
else
|
||||||
thread_priority = ConfMan.getInt("sound_thread_priority");
|
thread_priority = ConfMan.getInt("sound_thread_priority");
|
||||||
|
|
||||||
|
@ -799,16 +799,26 @@ bool OSystem_WINCE3::setSoundCallback(SoundProc proc, void *param) {
|
||||||
SDL_CloseAudio();
|
SDL_CloseAudio();
|
||||||
if (SDL_OpenAudio(&desired, NULL) != 0) {
|
if (SDL_OpenAudio(&desired, NULL) != 0) {
|
||||||
warning("Could not open audio device: %s", SDL_GetError());
|
warning("Could not open audio device: %s", SDL_GetError());
|
||||||
return false;
|
_mixer->setReady(false);
|
||||||
}
|
|
||||||
else
|
} else {
|
||||||
debug(1, "Sound opened OK, mixing at %d Hz", _sampleRate);
|
debug(1, "Sound opened OK, mixing at %d Hz", _sampleRate);
|
||||||
|
|
||||||
|
// Re-create mixer to match the output rate
|
||||||
|
delete(_mixer);
|
||||||
|
_mixer = new Audio::MixerImpl(this);
|
||||||
|
_mixer->setOutputRate(_sampleRate);
|
||||||
|
_mixer->setReady(true);
|
||||||
SDL_PauseAudio(0);
|
SDL_PauseAudio(0);
|
||||||
return true;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_WINCE3::private_sound_proc(void *param, byte *buf, int len) {
|
void OSystem_WINCE3::private_sound_proc(void *param, byte *buf, int len) {
|
||||||
(*_originalSoundProc)(param, buf, len);
|
OSystem_WINCE3 *this_ = (OSystem_WINCE3 *)param;
|
||||||
|
assert(this_);
|
||||||
|
|
||||||
|
if (this_->_mixer)
|
||||||
|
this_->_mixer->mixCallback(buf, len);
|
||||||
if (!_soundMaster)
|
if (!_soundMaster)
|
||||||
memset(buf, 0, len);
|
memset(buf, 0, len);
|
||||||
}
|
}
|
||||||
|
@ -838,7 +848,7 @@ bool OSystem_WINCE3::checkOggHighSampleRate() {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void OSystem_WINCE3::get_sample_rate() {
|
void OSystem_WINCE3::compute_sample_rate() {
|
||||||
// Force at least medium quality FM synthesis for FOTAQ
|
// Force at least medium quality FM synthesis for FOTAQ
|
||||||
Common::String gameid(ConfMan.get("gameid"));
|
Common::String gameid(ConfMan.get("gameid"));
|
||||||
if (gameid == "queen") {
|
if (gameid == "queen") {
|
||||||
|
@ -875,9 +885,8 @@ void OSystem_WINCE3::setWindowCaption(const char *caption) {
|
||||||
|
|
||||||
//update_game_settings();
|
//update_game_settings();
|
||||||
// finalize mixer init
|
// finalize mixer init
|
||||||
get_sample_rate();
|
compute_sample_rate();
|
||||||
bool result = setSoundCallback(Audio::Mixer::mixCallback, _mixer);
|
setupMixer();
|
||||||
_mixer->setReady(result);
|
|
||||||
|
|
||||||
// handle the actual event
|
// handle the actual event
|
||||||
OSystem_SDL::setWindowCaption(caption);
|
OSystem_SDL::setWindowCaption(caption);
|
||||||
|
@ -1050,7 +1059,7 @@ void OSystem_WINCE3::update_game_settings() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
get_sample_rate();
|
compute_sample_rate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_WINCE3::initSize(uint w, uint h) {
|
void OSystem_WINCE3::initSize(uint w, uint h) {
|
||||||
|
|
|
@ -82,7 +82,7 @@ public:
|
||||||
// Overloaded from SDL_Commmon
|
// Overloaded from SDL_Commmon
|
||||||
void quit();
|
void quit();
|
||||||
// Overloaded from SDL_Commmon (master volume and sample rate subtleties)
|
// Overloaded from SDL_Commmon (master volume and sample rate subtleties)
|
||||||
bool setSoundCallback(SoundProc proc, void *param);
|
void setupMixer();
|
||||||
// Overloaded from OSystem
|
// Overloaded from OSystem
|
||||||
//void engineInit();
|
//void engineInit();
|
||||||
void getTimeAndDate(struct tm &t) const;
|
void getTimeAndDate(struct tm &t) const;
|
||||||
|
@ -160,13 +160,12 @@ private:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void private_sound_proc(void *param, byte *buf, int len);
|
static void private_sound_proc(void *param, byte *buf, int len);
|
||||||
static SoundProc _originalSoundProc;
|
|
||||||
|
|
||||||
bool update_scalers();
|
bool update_scalers();
|
||||||
void create_toolbar();
|
void create_toolbar();
|
||||||
void update_game_settings();
|
void update_game_settings();
|
||||||
void check_mappings();
|
void check_mappings();
|
||||||
void get_sample_rate();
|
void compute_sample_rate();
|
||||||
|
|
||||||
void retrieve_mouse_location(int &x, int &y);
|
void retrieve_mouse_location(int &x, int &y);
|
||||||
|
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
MODULE := backends/platform/x11
|
|
||||||
|
|
||||||
MODULE_OBJS := \
|
|
||||||
x11.o
|
|
||||||
|
|
||||||
MODULE_DIRS += \
|
|
||||||
backends/platform/x11/
|
|
||||||
|
|
||||||
# We don't use the rules.mk here on purpose
|
|
||||||
OBJS := $(addprefix $(MODULE)/, $(MODULE_OBJS)) $(OBJS)
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,197 +0,0 @@
|
||||||
/* ScummVM - Graphic Adventure Engine
|
|
||||||
*
|
|
||||||
* ScummVM is the legal property of its developers, whose names
|
|
||||||
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
||||||
* file distributed with this source distribution.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License
|
|
||||||
* as published by the Free Software Foundation; either version 2
|
|
||||||
* of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
*
|
|
||||||
* $URL$
|
|
||||||
* $Id$
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
class OSystem_X11:public OSystem {
|
|
||||||
public:
|
|
||||||
OSystem_X11();
|
|
||||||
~OSystem_X11();
|
|
||||||
|
|
||||||
void initBackend();
|
|
||||||
|
|
||||||
// Determine whether the backend supports the specified feature.
|
|
||||||
bool hasFeature(Feature f);
|
|
||||||
|
|
||||||
// En-/disable the specified feature.
|
|
||||||
void setFeatureState(Feature f, bool enable);
|
|
||||||
|
|
||||||
// Query the state of the specified feature.
|
|
||||||
bool getFeatureState(Feature f);
|
|
||||||
|
|
||||||
// Retrieve a list of all graphics modes supported by this backend.
|
|
||||||
const GraphicsMode *getSupportedGraphicsModes() const;
|
|
||||||
|
|
||||||
// Return the ID of the 'default' graphics mode.
|
|
||||||
int getDefaultGraphicsMode() const;
|
|
||||||
|
|
||||||
// Switch to the specified graphics mode.
|
|
||||||
bool setGraphicsMode(int mode);
|
|
||||||
|
|
||||||
// Determine which graphics mode is currently active.
|
|
||||||
int getGraphicsMode() const;
|
|
||||||
|
|
||||||
// Set colors of the palette
|
|
||||||
void setPalette(const byte *colors, uint start, uint num);
|
|
||||||
|
|
||||||
// Set the size of the video bitmap.
|
|
||||||
// Typically, 320x200
|
|
||||||
void initSize(uint w, uint h);
|
|
||||||
|
|
||||||
// Draw a bitmap to screen.
|
|
||||||
// The screen will not be updated to reflect the new bitmap
|
|
||||||
void copyRectToScreen(const byte *buf, int pitch, int x, int y, int w, int h);
|
|
||||||
|
|
||||||
// Update the dirty areas of the screen
|
|
||||||
void updateScreen();
|
|
||||||
|
|
||||||
// Either show or hide the mouse cursor
|
|
||||||
bool showMouse(bool visible);
|
|
||||||
|
|
||||||
// Set the position of the mouse cursor
|
|
||||||
void set_mouse_pos(int x, int y);
|
|
||||||
|
|
||||||
// Warp the mouse cursor. Where set_mouse_pos() only informs the
|
|
||||||
// backend of the mouse cursor's current position, this function
|
|
||||||
// actually moves the cursor to the specified position.
|
|
||||||
void warpMouse(int x, int y);
|
|
||||||
|
|
||||||
// Set the bitmap that's used when drawing the cursor.
|
|
||||||
void setMouseCursor(const byte *buf, uint w, uint h, int hotspotX, int hotspotY, byte keycolor = 255, int cursorTargetScale = 1);
|
|
||||||
|
|
||||||
// Shaking is used in SCUMM. Set current shake position.
|
|
||||||
void setShakePos(int shake_pos);
|
|
||||||
|
|
||||||
// Get the number of milliseconds since the program was started.
|
|
||||||
uint32 getMillis();
|
|
||||||
|
|
||||||
// Delay for a specified amount of milliseconds
|
|
||||||
void delayMillis(uint msecs);
|
|
||||||
|
|
||||||
// Get the next event.
|
|
||||||
// Returns true if an event was retrieved.
|
|
||||||
bool pollEvent(Common::Event &event);
|
|
||||||
|
|
||||||
// Set function that generates samples
|
|
||||||
bool setSoundCallback(SoundProc proc, void *param);
|
|
||||||
void clearSoundCallback();
|
|
||||||
|
|
||||||
// Determine the output sample rate. Audio data provided by the sound
|
|
||||||
// callback will be played using this rate.
|
|
||||||
int getOutputSampleRate() const;
|
|
||||||
|
|
||||||
// Quit
|
|
||||||
void quit();
|
|
||||||
|
|
||||||
// Add a callback timer
|
|
||||||
void setTimerCallback(TimerProc callback, int interval);
|
|
||||||
|
|
||||||
// Mutex handling
|
|
||||||
MutexRef createMutex();
|
|
||||||
void lockMutex(MutexRef mutex);
|
|
||||||
void unlockMutex(MutexRef mutex);
|
|
||||||
void deleteMutex(MutexRef mutex);
|
|
||||||
|
|
||||||
// Overlay handling for the new menu system
|
|
||||||
void showOverlay();
|
|
||||||
void hideOverlay();
|
|
||||||
void clearOverlay();
|
|
||||||
void grabOverlay(int16 *, int);
|
|
||||||
void copyRectToOverlay(const int16 *, int, int, int, int, int);
|
|
||||||
virtual int16 getHeight();
|
|
||||||
virtual int16 getWidth();
|
|
||||||
|
|
||||||
virtual void grabPalette(byte *colors, uint start, uint num);
|
|
||||||
|
|
||||||
// Set a window caption or any other comparable status display to the
|
|
||||||
// given value.
|
|
||||||
void setWindowCaption(const char *caption);
|
|
||||||
|
|
||||||
static OSystem *create(int gfx_mode, bool full_screen);
|
|
||||||
|
|
||||||
private:
|
|
||||||
typedef struct {
|
|
||||||
int x, y;
|
|
||||||
int w, h;
|
|
||||||
int hot_x, hot_y;
|
|
||||||
} MouseState;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int x, y, w, h;
|
|
||||||
} DirtyRect;
|
|
||||||
|
|
||||||
enum {
|
|
||||||
MAX_NUMBER_OF_DIRTY_RECTS = 32
|
|
||||||
};
|
|
||||||
|
|
||||||
void create_empty_cursor();
|
|
||||||
void draw_mouse(DirtyRect *dout);
|
|
||||||
void undraw_mouse();
|
|
||||||
void updateScreen_helper(const DirtyRect *d, DirtyRect *dout);
|
|
||||||
void blit_convert(const DirtyRect *d, uint8 *dst, int pitch);
|
|
||||||
void blit(const DirtyRect *d, uint16 *dst, int pitch);
|
|
||||||
|
|
||||||
uint8 *_local_fb;
|
|
||||||
uint16 *_local_fb_overlay;
|
|
||||||
bool _overlay_visible;
|
|
||||||
|
|
||||||
int _window_width, _window_height;
|
|
||||||
int _fb_width, _fb_height;
|
|
||||||
int _scumm_x, _scumm_y;
|
|
||||||
|
|
||||||
uint16 *_palette16;
|
|
||||||
uint32 *_palette32;
|
|
||||||
|
|
||||||
bool _palette_changed;
|
|
||||||
Display *_display;
|
|
||||||
int _screen, _depth;
|
|
||||||
uint8 _bytesPerPixel;
|
|
||||||
Window _window;
|
|
||||||
GC _black_gc;
|
|
||||||
XImage *_image;
|
|
||||||
pthread_t _sound_thread;
|
|
||||||
|
|
||||||
struct timeval _start_time;
|
|
||||||
|
|
||||||
int _fake_right_mouse;
|
|
||||||
int _report_presses;
|
|
||||||
int _current_shake_pos;
|
|
||||||
int _new_shake_pos;
|
|
||||||
DirtyRect _ds[MAX_NUMBER_OF_DIRTY_RECTS];
|
|
||||||
int _num_of_dirty_rects;
|
|
||||||
|
|
||||||
MouseState _oldMouseState, _curMouseState;
|
|
||||||
byte *_ms_buf;
|
|
||||||
bool _mouse_visible;
|
|
||||||
bool _mouse_state_changed;
|
|
||||||
byte _mouseKeycolor;
|
|
||||||
|
|
||||||
uint32 _timer_duration, _timer_next_expiry;
|
|
||||||
bool _timer_active;
|
|
||||||
int (*_timer_callback) (int);
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
OSystem::SoundProc sound_proc;
|
|
||||||
void *param;
|
|
||||||
} THREAD_PARAM;
|
|
|
@ -120,7 +120,7 @@ Common::StringList DefaultSaveFileManager::listSavefiles(const char *pattern) {
|
||||||
Common::StringList results;
|
Common::StringList results;
|
||||||
Common::String search(pattern);
|
Common::String search(pattern);
|
||||||
|
|
||||||
if (savePath.lookupFile(savefiles, search, false, true)) {
|
if (savePath.lookupFile(savefiles, search, false, true, 0)) {
|
||||||
for (FSList::const_iterator file = savefiles.begin(); file != savefiles.end(); ++file) {
|
for (FSList::const_iterator file = savefiles.begin(); file != savefiles.end(); ++file) {
|
||||||
results.push_back(file->getName());
|
results.push_back(file->getName());
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,14 +38,15 @@ private:
|
||||||
void *_timerHandler;
|
void *_timerHandler;
|
||||||
TimerSlot *_head;
|
TimerSlot *_head;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DefaultTimerManager();
|
DefaultTimerManager();
|
||||||
~DefaultTimerManager();
|
~DefaultTimerManager();
|
||||||
bool installTimerProc(TimerProc proc, int32 interval, void *refCon);
|
bool installTimerProc(TimerProc proc, int32 interval, void *refCon);
|
||||||
void removeTimerProc(TimerProc proc);
|
void removeTimerProc(TimerProc proc);
|
||||||
|
|
||||||
// Timer callback, to be invoked at regular time intervals by the backend.
|
/**
|
||||||
|
* Timer callback, to be invoked at regular time intervals by the backend.
|
||||||
|
*/
|
||||||
void handler();
|
void handler();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -229,7 +229,6 @@ static int runGame(const EnginePlugin *plugin, OSystem &system, const Common::St
|
||||||
// Reset the file/directory mappings
|
// Reset the file/directory mappings
|
||||||
Common::File::resetDefaultDirectories();
|
Common::File::resetDefaultDirectories();
|
||||||
|
|
||||||
|
|
||||||
// If result=1 return to the launcher, else quit ScummVM
|
// If result=1 return to the launcher, else quit ScummVM
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -279,6 +278,7 @@ extern "C" int scummvm_main(int argc, char *argv[]) {
|
||||||
|
|
||||||
// Load the plugins.
|
// Load the plugins.
|
||||||
PluginManager::instance().loadPlugins();
|
PluginManager::instance().loadPlugins();
|
||||||
|
EngineMan.getPlugins();
|
||||||
|
|
||||||
// Process the remaining command line settings. Must be done after the
|
// Process the remaining command line settings. Must be done after the
|
||||||
// config file and the plugins have been loaded.
|
// config file and the plugins have been loaded.
|
||||||
|
|
|
@ -54,6 +54,7 @@
|
||||||
#pragma warning( disable : 4505 ) // turn off "unreferenced local function has been removed"
|
#pragma warning( disable : 4505 ) // turn off "unreferenced local function has been removed"
|
||||||
#pragma warning( disable : 4510 ) // turn off "default constructor could not be generated"
|
#pragma warning( disable : 4510 ) // turn off "default constructor could not be generated"
|
||||||
#pragma warning( disable : 4610 ) // turn off "struct can never be instantiated - user defined constructor required"
|
#pragma warning( disable : 4610 ) // turn off "struct can never be instantiated - user defined constructor required"
|
||||||
|
#pragma warning( disable : 4800 ) // turn off "forcing value to bool 'true' or 'false' (performance warning)"
|
||||||
|
|
||||||
// vsnprintf is already defined in Visual Studio 2008
|
// vsnprintf is already defined in Visual Studio 2008
|
||||||
#if (_MSC_VER < 1500)
|
#if (_MSC_VER < 1500)
|
||||||
|
|
|
@ -121,28 +121,3 @@ void OSystem::clearScreen() {
|
||||||
memset(screen->pixels, 0, screen->h * screen->pitch);
|
memset(screen->pixels, 0, screen->h * screen->pitch);
|
||||||
unlockScreen();
|
unlockScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Include header files needed for the getFilesystemFactory() method.
|
|
||||||
*
|
|
||||||
* TODO: Remove these gradually and move the getFilesystemFactory() implementations
|
|
||||||
* to the respective backends. Then turn it into a pure virtual method of OSystem.
|
|
||||||
*/
|
|
||||||
#if defined(PALMOS_MODE)
|
|
||||||
#include "backends/fs/palmos/palmos-fs-factory.h"
|
|
||||||
#elif defined(__PLAYSTATION2__)
|
|
||||||
#include "backends/fs/ps2/ps2-fs-factory.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
FilesystemFactory *OSystem::getFilesystemFactory() {
|
|
||||||
#if defined(__amigaos4__) || defined(__DC__) || defined(__SYMBIAN32__) || defined(UNIX) || defined(WIN32) || defined(__WII__) || defined(__PSP__) || defined(__DS__)
|
|
||||||
// These ports already implement this function, so it should never be called.
|
|
||||||
return 0;
|
|
||||||
#elif defined(PALMOS_MODE)
|
|
||||||
return &PalmOSFilesystemFactory::instance();
|
|
||||||
#elif defined(__PLAYSTATION2__)
|
|
||||||
return &Ps2FilesystemFactory::instance();
|
|
||||||
#else
|
|
||||||
#error Unknown and unsupported backend in OSystem::getFilesystemFactory
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
|
@ -814,15 +814,6 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual Audio::Mixer *getMixer() = 0;
|
virtual Audio::Mixer *getMixer() = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine the output sample rate. Audio data provided by the sound
|
|
||||||
* callback will be played using this rate.
|
|
||||||
* @note Client code other than the sound mixer should _not_ use this
|
|
||||||
* method. Instead, call Mixer::getOutputRate()!
|
|
||||||
* @return the output sample rate
|
|
||||||
*/
|
|
||||||
virtual int getOutputSampleRate() const = 0;
|
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
|
|
||||||
|
@ -911,7 +902,7 @@ public:
|
||||||
*
|
*
|
||||||
* @return FilesystemFactory* The specific factory for the current architecture.
|
* @return FilesystemFactory* The specific factory for the current architecture.
|
||||||
*/
|
*/
|
||||||
virtual FilesystemFactory *getFilesystemFactory();
|
virtual FilesystemFactory *getFilesystemFactory() = 0;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
6
configure
vendored
6
configure
vendored
|
@ -127,7 +127,7 @@ _srcdir=`dirname $0`
|
||||||
|
|
||||||
# Determine a tmp file name, using mktemp(1) when available.
|
# Determine a tmp file name, using mktemp(1) when available.
|
||||||
if type mktemp > /dev/null 2>&1 ; then
|
if type mktemp > /dev/null 2>&1 ; then
|
||||||
TMPO=`mktemp`
|
TMPO=`mktemp /tmp/scummvm-conf.XXXXXXXXXX`
|
||||||
else
|
else
|
||||||
TMPO=${_srcdir}/scummvm-conf
|
TMPO=${_srcdir}/scummvm-conf
|
||||||
fi
|
fi
|
||||||
|
@ -741,6 +741,10 @@ for ac_option in $@; do
|
||||||
--enable-release)
|
--enable-release)
|
||||||
DEBFLAGS="-O2 -Wuninitialized"
|
DEBFLAGS="-O2 -Wuninitialized"
|
||||||
;;
|
;;
|
||||||
|
--enable-profiling)
|
||||||
|
CXXFLAGS="$CXXFLAGS -pg"
|
||||||
|
LDFLAGS="$LDFLAGS -pg"
|
||||||
|
;;
|
||||||
--with-sdl-prefix=*)
|
--with-sdl-prefix=*)
|
||||||
arg=`echo $ac_option | cut -d '=' -f 2`
|
arg=`echo $ac_option | cut -d '=' -f 2`
|
||||||
_sdlpath="$arg:$arg/bin"
|
_sdlpath="$arg:$arg/bin"
|
||||||
|
|
Binary file not shown.
|
@ -96,6 +96,9 @@
|
||||||
</Configuration>
|
</Configuration>
|
||||||
</Configurations>
|
</Configurations>
|
||||||
<Files>
|
<Files>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\engines\parallaction\balloons.cpp">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\engines\parallaction\callables_br.cpp">
|
RelativePath="..\..\engines\parallaction\callables_br.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
@ -123,6 +126,9 @@
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\engines\parallaction\disk_ns.cpp">
|
RelativePath="..\..\engines\parallaction\disk_ns.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\engines\parallaction\exec.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\engines\parallaction\exec_br.cpp">
|
RelativePath="..\..\engines\parallaction\exec_br.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
|
|
@ -395,18 +395,15 @@
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\midiparser_xmidi.cpp">
|
RelativePath="..\..\sound\midiparser_xmidi.cpp">
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\sound\musicplugin.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\sound\musicplugin.h">
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\mixer.cpp">
|
RelativePath="..\..\sound\mixer.cpp">
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\mixer.h">
|
RelativePath="..\..\sound\mixer.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\sound\mixer_intern.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\mp3.cpp">
|
RelativePath="..\..\sound\mp3.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
@ -419,6 +416,12 @@
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\mpu401.h">
|
RelativePath="..\..\sound\mpu401.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\sound\musicplugin.cpp">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\sound\musicplugin.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\null.cpp">
|
RelativePath="..\..\sound\null.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
|
|
@ -110,6 +110,9 @@
|
||||||
<References>
|
<References>
|
||||||
</References>
|
</References>
|
||||||
<Files>
|
<Files>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\engines\parallaction\balloons.cpp">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\engines\parallaction\callables_br.cpp">
|
RelativePath="..\..\engines\parallaction\callables_br.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
@ -137,6 +140,9 @@
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\engines\parallaction\disk_ns.cpp">
|
RelativePath="..\..\engines\parallaction\disk_ns.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\engines\parallaction\exec.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\engines\parallaction\exec_br.cpp">
|
RelativePath="..\..\engines\parallaction\exec_br.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
|
|
@ -409,18 +409,15 @@
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\midiparser_xmidi.cpp">
|
RelativePath="..\..\sound\midiparser_xmidi.cpp">
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\sound\musicplugin.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\sound\musicplugin.h">
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\mixer.cpp">
|
RelativePath="..\..\sound\mixer.cpp">
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\mixer.h">
|
RelativePath="..\..\sound\mixer.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\sound\mixer_intern.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\mp3.cpp">
|
RelativePath="..\..\sound\mp3.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
@ -433,6 +430,12 @@
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\mpu401.h">
|
RelativePath="..\..\sound\mpu401.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\sound\musicplugin.cpp">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\sound\musicplugin.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\null.cpp">
|
RelativePath="..\..\sound\null.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
|
|
@ -160,6 +160,10 @@
|
||||||
<References>
|
<References>
|
||||||
</References>
|
</References>
|
||||||
<Files>
|
<Files>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\engines\parallaction\balloons.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\engines\parallaction\callables_br.cpp"
|
RelativePath="..\..\engines\parallaction\callables_br.cpp"
|
||||||
>
|
>
|
||||||
|
@ -196,6 +200,10 @@
|
||||||
RelativePath="..\..\engines\parallaction\disk_ns.cpp"
|
RelativePath="..\..\engines\parallaction\disk_ns.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\engines\parallaction\exec.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\engines\parallaction\exec_br.cpp"
|
RelativePath="..\..\engines\parallaction\exec_br.cpp"
|
||||||
>
|
>
|
||||||
|
|
|
@ -564,14 +564,6 @@
|
||||||
RelativePath="..\..\sound\midiparser_xmidi.cpp"
|
RelativePath="..\..\sound\midiparser_xmidi.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\sound\musicplugin.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\sound\musicplugin.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\mixer.cpp"
|
RelativePath="..\..\sound\mixer.cpp"
|
||||||
>
|
>
|
||||||
|
@ -580,6 +572,10 @@
|
||||||
RelativePath="..\..\sound\mixer.h"
|
RelativePath="..\..\sound\mixer.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\sound\mixer_intern.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\mp3.cpp"
|
RelativePath="..\..\sound\mp3.cpp"
|
||||||
>
|
>
|
||||||
|
@ -596,6 +592,14 @@
|
||||||
RelativePath="..\..\sound\mpu401.h"
|
RelativePath="..\..\sound\mpu401.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\sound\musicplugin.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\sound\musicplugin.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\null.cpp"
|
RelativePath="..\..\sound\null.cpp"
|
||||||
>
|
>
|
||||||
|
|
|
@ -161,6 +161,10 @@
|
||||||
<References>
|
<References>
|
||||||
</References>
|
</References>
|
||||||
<Files>
|
<Files>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\engines\parallaction\balloons.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\engines\parallaction\callables_br.cpp"
|
RelativePath="..\..\engines\parallaction\callables_br.cpp"
|
||||||
>
|
>
|
||||||
|
@ -197,6 +201,10 @@
|
||||||
RelativePath="..\..\engines\parallaction\disk_ns.cpp"
|
RelativePath="..\..\engines\parallaction\disk_ns.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\engines\parallaction\exec.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\engines\parallaction\exec_br.cpp"
|
RelativePath="..\..\engines\parallaction\exec_br.cpp"
|
||||||
>
|
>
|
||||||
|
|
|
@ -569,14 +569,6 @@
|
||||||
RelativePath="..\..\sound\midiparser_xmidi.cpp"
|
RelativePath="..\..\sound\midiparser_xmidi.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\sound\musicplugin.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\sound\musicplugin.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\mixer.cpp"
|
RelativePath="..\..\sound\mixer.cpp"
|
||||||
>
|
>
|
||||||
|
@ -585,6 +577,10 @@
|
||||||
RelativePath="..\..\sound\mixer.h"
|
RelativePath="..\..\sound\mixer.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\sound\mixer_intern.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\mp3.cpp"
|
RelativePath="..\..\sound\mp3.cpp"
|
||||||
>
|
>
|
||||||
|
@ -601,6 +597,14 @@
|
||||||
RelativePath="..\..\sound\mpu401.h"
|
RelativePath="..\..\sound\mpu401.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\sound\musicplugin.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\sound\musicplugin.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\sound\null.cpp"
|
RelativePath="..\..\sound\null.cpp"
|
||||||
>
|
>
|
||||||
|
|
|
@ -63,6 +63,7 @@ void addSpriteFilledToBGList(int16 objIdx) {
|
||||||
void createBgIncrustListElement(int16 objIdx, int16 param) {
|
void createBgIncrustListElement(int16 objIdx, int16 param) {
|
||||||
BGIncrust tmp;
|
BGIncrust tmp;
|
||||||
|
|
||||||
|
tmp.unkPtr = 0;
|
||||||
tmp.objIdx = objIdx;
|
tmp.objIdx = objIdx;
|
||||||
tmp.param = param;
|
tmp.param = param;
|
||||||
tmp.x = objectTable[objIdx].x;
|
tmp.x = objectTable[objIdx].x;
|
||||||
|
@ -90,6 +91,7 @@ void loadBgIncrustFromSave(Common::InSaveFile &fHandle) {
|
||||||
fHandle.readUint32BE();
|
fHandle.readUint32BE();
|
||||||
fHandle.readUint32BE();
|
fHandle.readUint32BE();
|
||||||
|
|
||||||
|
tmp.unkPtr = 0;
|
||||||
tmp.objIdx = fHandle.readUint16BE();
|
tmp.objIdx = fHandle.readUint16BE();
|
||||||
tmp.param = fHandle.readUint16BE();
|
tmp.param = fHandle.readUint16BE();
|
||||||
tmp.x = fHandle.readUint16BE();
|
tmp.x = fHandle.readUint16BE();
|
||||||
|
|
|
@ -969,6 +969,7 @@ void OSRenderer::drawBackground() {
|
||||||
|
|
||||||
/*! \brief Draw one overlay
|
/*! \brief Draw one overlay
|
||||||
* \param it Overlay info
|
* \param it Overlay info
|
||||||
|
* \todo Add handling of type 22 overlays
|
||||||
*/
|
*/
|
||||||
void OSRenderer::renderOverlay(const Common::List<overlay>::iterator &it) {
|
void OSRenderer::renderOverlay(const Common::List<overlay>::iterator &it) {
|
||||||
int len;
|
int len;
|
||||||
|
@ -979,6 +980,9 @@ void OSRenderer::renderOverlay(const Common::List<overlay>::iterator &it) {
|
||||||
switch (it->type) {
|
switch (it->type) {
|
||||||
// color sprite
|
// color sprite
|
||||||
case 0:
|
case 0:
|
||||||
|
if (objectTable[it->objIdx].frame < 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
sprite = animDataTable + objectTable[it->objIdx].frame;
|
sprite = animDataTable + objectTable[it->objIdx].frame;
|
||||||
len = sprite->_realWidth * sprite->_height;
|
len = sprite->_realWidth * sprite->_height;
|
||||||
mask = new byte[len];
|
mask = new byte[len];
|
||||||
|
@ -988,6 +992,13 @@ void OSRenderer::renderOverlay(const Common::List<overlay>::iterator &it) {
|
||||||
delete[] mask;
|
delete[] mask;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// bitmap
|
||||||
|
case 4:
|
||||||
|
if (objectTable[it->objIdx].frame >= 0) {
|
||||||
|
FWRenderer::renderOverlay(it);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
// masked background
|
// masked background
|
||||||
case 20:
|
case 20:
|
||||||
assert(it->objIdx < NUM_MAX_OBJECT);
|
assert(it->objIdx < NUM_MAX_OBJECT);
|
||||||
|
|
|
@ -228,6 +228,13 @@ void CineEngine::mainLoop(int bootScriptIdx) {
|
||||||
stopMusicAfterFadeOut();
|
stopMusicAfterFadeOut();
|
||||||
di = executePlayerInput();
|
di = executePlayerInput();
|
||||||
|
|
||||||
|
// Clear the zoneQuery table (Operation Stealth specific)
|
||||||
|
if (g_cine->getGameType() == Cine::GType_OS) {
|
||||||
|
for (uint i = 0; i < NUM_MAX_ZONE; i++) {
|
||||||
|
zoneQuery[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
processSeqList();
|
processSeqList();
|
||||||
executeList1();
|
executeList1();
|
||||||
executeList0();
|
executeList0();
|
||||||
|
|
|
@ -99,21 +99,36 @@ int removeOverlay(uint16 objIdx, uint16 param) {
|
||||||
|
|
||||||
/*! \brief Add new overlay sprite to the list
|
/*! \brief Add new overlay sprite to the list
|
||||||
* \param objIdx Associate the overlay with this object
|
* \param objIdx Associate the overlay with this object
|
||||||
* \param param Type of new overlay
|
* \param type Type of new overlay
|
||||||
* \todo Why are x, y, width and color left uninitialized?
|
* \todo Why are x, y, width and color left uninitialized?
|
||||||
*/
|
*/
|
||||||
void addOverlay(uint16 objIdx, uint16 param) {
|
void addOverlay(uint16 objIdx, uint16 type) {
|
||||||
Common::List<overlay>::iterator it;
|
Common::List<overlay>::iterator it;
|
||||||
overlay tmp;
|
overlay tmp;
|
||||||
|
|
||||||
for (it = overlayList.begin(); it != overlayList.end(); ++it) {
|
for (it = overlayList.begin(); it != overlayList.end(); ++it) {
|
||||||
|
// This is done for both Future Wars and Operation Stealth
|
||||||
if (objectTable[it->objIdx].mask >= objectTable[objIdx].mask) {
|
if (objectTable[it->objIdx].mask >= objectTable[objIdx].mask) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// There are additional checks in Operation Stealth's implementation
|
||||||
|
if (g_cine->getGameType() == Cine::GType_OS && (it->type == 2 || it->type == 3)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// In Operation Stealth's implementation we might bail out early
|
||||||
|
if (g_cine->getGameType() == Cine::GType_OS && it != overlayList.end() && it->objIdx == objIdx && it->type == type) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp.objIdx = objIdx;
|
tmp.objIdx = objIdx;
|
||||||
tmp.type = param;
|
tmp.type = type;
|
||||||
|
tmp.x = 0;
|
||||||
|
tmp.y = 0;
|
||||||
|
tmp.width = 0;
|
||||||
|
tmp.color = 0;
|
||||||
|
|
||||||
overlayList.insert(it, tmp);
|
overlayList.insert(it, tmp);
|
||||||
}
|
}
|
||||||
|
@ -122,24 +137,22 @@ void addOverlay(uint16 objIdx, uint16 param) {
|
||||||
* \param objIdx Associate the overlay with this object
|
* \param objIdx Associate the overlay with this object
|
||||||
* \param param source background index
|
* \param param source background index
|
||||||
*/
|
*/
|
||||||
void addGfxElementA0(int16 objIdx, int16 param) {
|
void addGfxElement(int16 objIdx, int16 param, int16 type) {
|
||||||
Common::List<overlay>::iterator it;
|
Common::List<overlay>::iterator it;
|
||||||
overlay tmp;
|
overlay tmp;
|
||||||
|
|
||||||
for (it = overlayList.begin(); it != overlayList.end(); ++it) {
|
for (it = overlayList.begin(); it != overlayList.end(); ++it) {
|
||||||
// wtf?!
|
if (objectTable[it->objIdx].mask >= objectTable[objIdx].mask || it->type == 2 || it->type == 3) {
|
||||||
if (objectTable[it->objIdx].mask == objectTable[objIdx].mask &&
|
|
||||||
(it->type == 2 || it->type == 3)) {
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (it != overlayList.end() && it->objIdx == objIdx && it->type == 20 && it->x == param) {
|
if (it != overlayList.end() && it->objIdx == objIdx && it->type == type && it->x == param) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp.objIdx = objIdx;
|
tmp.objIdx = objIdx;
|
||||||
tmp.type = 20;
|
tmp.type = type;
|
||||||
tmp.x = param;
|
tmp.x = param;
|
||||||
tmp.y = 0;
|
tmp.y = 0;
|
||||||
tmp.width = 0;
|
tmp.width = 0;
|
||||||
|
@ -153,11 +166,11 @@ void addGfxElementA0(int16 objIdx, int16 param) {
|
||||||
* \param param Remove overlay using this background
|
* \param param Remove overlay using this background
|
||||||
* \todo Check that it works
|
* \todo Check that it works
|
||||||
*/
|
*/
|
||||||
void removeGfxElementA0(int16 objIdx, int16 param) {
|
void removeGfxElement(int16 objIdx, int16 param, int16 type) {
|
||||||
Common::List<overlay>::iterator it;
|
Common::List<overlay>::iterator it;
|
||||||
|
|
||||||
for (it = overlayList.begin(); it != overlayList.end(); ++it) {
|
for (it = overlayList.begin(); it != overlayList.end(); ++it) {
|
||||||
if (it->objIdx == objIdx && it->type == 20 && it->x == param) {
|
if (it->objIdx == objIdx && it->type == type && it->x == param) {
|
||||||
overlayList.erase(it);
|
overlayList.erase(it);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -170,10 +183,14 @@ void setupObject(byte objIdx, uint16 param1, uint16 param2, uint16 param3, uint1
|
||||||
objectTable[objIdx].mask = param3;
|
objectTable[objIdx].mask = param3;
|
||||||
objectTable[objIdx].frame = param4;
|
objectTable[objIdx].frame = param4;
|
||||||
|
|
||||||
|
if (g_cine->getGameType() == Cine::GType_OS) {
|
||||||
|
resetGfxEntityEntry(objIdx);
|
||||||
|
} else { // Future Wars
|
||||||
if (removeOverlay(objIdx, 0)) {
|
if (removeOverlay(objIdx, 0)) {
|
||||||
addOverlay(objIdx, 0);
|
addOverlay(objIdx, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void subObjectParam(byte objIdx, byte paramIdx, int16 newValue) {
|
void subObjectParam(byte objIdx, byte paramIdx, int16 newValue) {
|
||||||
addObjectParam(objIdx, paramIdx, -newValue);
|
addObjectParam(objIdx, paramIdx, -newValue);
|
||||||
|
@ -199,10 +216,13 @@ void modifyObjectParam(byte objIdx, byte paramIdx, int16 newValue) {
|
||||||
case 3:
|
case 3:
|
||||||
objectTable[objIdx].mask = newValue;
|
objectTable[objIdx].mask = newValue;
|
||||||
|
|
||||||
// TODO: Check this part against disassembly
|
if (g_cine->getGameType() == Cine::GType_OS) { // Operation Stealth specific
|
||||||
|
resetGfxEntityEntry(objIdx);
|
||||||
|
} else { // Future Wars specific
|
||||||
if (removeOverlay(objIdx, 0)) {
|
if (removeOverlay(objIdx, 0)) {
|
||||||
addOverlay(objIdx, 0);
|
addOverlay(objIdx, 0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
objectTable[objIdx].frame = newValue;
|
objectTable[objIdx].frame = newValue;
|
||||||
|
@ -221,6 +241,29 @@ void modifyObjectParam(byte objIdx, byte paramIdx, int16 newValue) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if at least one of the range B's endpoints is inside range A,
|
||||||
|
* not counting the starting and ending points of range A.
|
||||||
|
* Used at least by Operation Stealth's opcode 0x8D i.e. 141.
|
||||||
|
*/
|
||||||
|
bool compareRanges(uint16 aStart, uint16 aEnd, uint16 bStart, uint16 bEnd) {
|
||||||
|
return (bStart > aStart && bStart < aEnd) || (bEnd > aStart && bEnd < aEnd);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16 compareObjectParamRanges(uint16 objIdx1, uint16 xAdd1, uint16 yAdd1, uint16 maskAdd1, uint16 objIdx2, uint16 xAdd2, uint16 yAdd2, uint16 maskAdd2) {
|
||||||
|
assert(objIdx1 < NUM_MAX_OBJECT && objIdx2 < NUM_MAX_OBJECT);
|
||||||
|
const objectStruct &obj1 = objectTable[objIdx1];
|
||||||
|
const objectStruct &obj2 = objectTable[objIdx2];
|
||||||
|
|
||||||
|
if (compareRanges(obj1.x, obj1.x + xAdd1, obj2.x, obj2.x + xAdd2) &&
|
||||||
|
compareRanges(obj1.y, obj1.y + yAdd1, obj2.y, obj2.y + yAdd2) &&
|
||||||
|
compareRanges(obj1.mask, obj1.mask + maskAdd1, obj2.mask, obj2.mask + maskAdd2)) {
|
||||||
|
return kCmpEQ;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
uint16 compareObjectParam(byte objIdx, byte type, int16 value) {
|
uint16 compareObjectParam(byte objIdx, byte type, int16 value) {
|
||||||
uint16 compareResult = 0;
|
uint16 compareResult = 0;
|
||||||
int16 objectParam = getObjectParam(objIdx, type);
|
int16 objectParam = getObjectParam(objIdx, type);
|
||||||
|
|
|
@ -60,15 +60,17 @@ void loadObject(char *pObjectName);
|
||||||
void setupObject(byte objIdx, uint16 param1, uint16 param2, uint16 param3, uint16 param4);
|
void setupObject(byte objIdx, uint16 param1, uint16 param2, uint16 param3, uint16 param4);
|
||||||
void modifyObjectParam(byte objIdx, byte paramIdx, int16 newValue);
|
void modifyObjectParam(byte objIdx, byte paramIdx, int16 newValue);
|
||||||
|
|
||||||
void addOverlay(uint16 objIdx, uint16 param);
|
void addOverlay(uint16 objIdx, uint16 type);
|
||||||
int removeOverlay(uint16 objIdx, uint16 param);
|
int removeOverlay(uint16 objIdx, uint16 param);
|
||||||
void addGfxElementA0(int16 objIdx, int16 param);
|
void addGfxElement(int16 objIdx, int16 param, int16 type);
|
||||||
void removeGfxElementA0(int16 objIdx, int16 param);
|
void removeGfxElement(int16 objIdx, int16 param, int16 type);
|
||||||
|
|
||||||
int16 getObjectParam(uint16 objIdx, uint16 paramIdx);
|
int16 getObjectParam(uint16 objIdx, uint16 paramIdx);
|
||||||
|
|
||||||
void addObjectParam(byte objIdx, byte paramIdx, int16 newValue);
|
void addObjectParam(byte objIdx, byte paramIdx, int16 newValue);
|
||||||
void subObjectParam(byte objIdx, byte paramIdx, int16 newValue);
|
void subObjectParam(byte objIdx, byte paramIdx, int16 newValue);
|
||||||
|
bool compareRanges(uint16 aStart, uint16 aEnd, uint16 bStart, uint16 bEnd);
|
||||||
|
uint16 compareObjectParamRanges(uint16 objIdx1, uint16 xAdd1, uint16 yAdd1, uint16 maskAdd1, uint16 objIdx2, uint16 xAdd2, uint16 yAdd2, uint16 maskAdd2);
|
||||||
uint16 compareObjectParam(byte objIdx, byte param1, int16 param2);
|
uint16 compareObjectParam(byte objIdx, byte param1, int16 param2);
|
||||||
|
|
||||||
} // End of namespace Cine
|
} // End of namespace Cine
|
||||||
|
|
|
@ -237,7 +237,7 @@ protected:
|
||||||
int o2_playSample();
|
int o2_playSample();
|
||||||
int o2_playSampleAlt();
|
int o2_playSampleAlt();
|
||||||
int o2_op81();
|
int o2_op81();
|
||||||
int o2_op82();
|
int o2_modifySeqListElement();
|
||||||
int o2_isSeqRunning();
|
int o2_isSeqRunning();
|
||||||
int o2_gotoIfSupNearest();
|
int o2_gotoIfSupNearest();
|
||||||
int o2_gotoIfSupEquNearest();
|
int o2_gotoIfSupEquNearest();
|
||||||
|
@ -258,10 +258,10 @@ protected:
|
||||||
int o2_useBgScroll();
|
int o2_useBgScroll();
|
||||||
int o2_setAdditionalBgVScroll();
|
int o2_setAdditionalBgVScroll();
|
||||||
int o2_op9F();
|
int o2_op9F();
|
||||||
int o2_addGfxElementA0();
|
int o2_addGfxElementType20();
|
||||||
int o2_removeGfxElementA0();
|
int o2_removeGfxElementType20();
|
||||||
int o2_opA2();
|
int o2_addGfxElementType21();
|
||||||
int o2_opA3();
|
int o2_removeGfxElementType21();
|
||||||
int o2_loadMask22();
|
int o2_loadMask22();
|
||||||
int o2_unloadMask22();
|
int o2_unloadMask22();
|
||||||
|
|
||||||
|
|
|
@ -1764,18 +1764,32 @@ int16 checkCollision(int16 objIdx, int16 x, int16 y, int16 numZones, int16 zoneI
|
||||||
int16 lx = objectTable[objIdx].x + x;
|
int16 lx = objectTable[objIdx].x + x;
|
||||||
int16 ly = objectTable[objIdx].y + y;
|
int16 ly = objectTable[objIdx].y + y;
|
||||||
int16 idx;
|
int16 idx;
|
||||||
|
int16 result = 0;
|
||||||
|
|
||||||
for (int16 i = 0; i < numZones; i++) {
|
for (int16 i = 0; i < numZones; i++) {
|
||||||
idx = getZoneFromPositionRaw(page3Raw, lx + i, ly, 320);
|
idx = getZoneFromPositionRaw(page3Raw, lx + i, ly, 320);
|
||||||
|
|
||||||
assert(idx >= 0 && idx <= NUM_MAX_ZONE);
|
assert(idx >= 0 && idx < NUM_MAX_ZONE);
|
||||||
|
|
||||||
|
// The zoneQuery table is updated here only in Operation Stealth
|
||||||
|
if (g_cine->getGameType() == Cine::GType_OS) {
|
||||||
|
if (zoneData[idx] < NUM_MAX_ZONE) {
|
||||||
|
zoneQuery[zoneData[idx]]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (zoneData[idx] == zoneIdx) {
|
if (zoneData[idx] == zoneIdx) {
|
||||||
return 1;
|
result = 1;
|
||||||
|
// Future Wars breaks out early on the first match, but
|
||||||
|
// Operation Stealth doesn't because it needs to update
|
||||||
|
// the zoneQuery table for the whole loop's period.
|
||||||
|
if (g_cine->getGameType() == Cine::GType_FW) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16 compareVars(int16 a, int16 b) {
|
uint16 compareVars(int16 a, int16 b) {
|
||||||
|
|
|
@ -202,7 +202,7 @@ const Opcode OSScript::_opcodeTable[] = {
|
||||||
/* 80 */
|
/* 80 */
|
||||||
{ &FWScript::o2_removeSeq, "bb" },
|
{ &FWScript::o2_removeSeq, "bb" },
|
||||||
{ &FWScript::o2_op81, "" }, /* TODO: Name this opcode properly. */
|
{ &FWScript::o2_op81, "" }, /* TODO: Name this opcode properly. */
|
||||||
{ &FWScript::o2_op82, "bbwwb" }, /* TODO: Name this opcode properly. */
|
{ &FWScript::o2_modifySeqListElement, "bbwwb" },
|
||||||
{ &FWScript::o2_isSeqRunning, "bb" },
|
{ &FWScript::o2_isSeqRunning, "bb" },
|
||||||
/* 84 */
|
/* 84 */
|
||||||
{ &FWScript::o2_gotoIfSupNearest, "b" },
|
{ &FWScript::o2_gotoIfSupNearest, "b" },
|
||||||
|
@ -240,10 +240,10 @@ const Opcode OSScript::_opcodeTable[] = {
|
||||||
{ &FWScript::o2_setAdditionalBgVScroll, "c" },
|
{ &FWScript::o2_setAdditionalBgVScroll, "c" },
|
||||||
{ &FWScript::o2_op9F, "ww" }, /* TODO: Name this opcode properly. */
|
{ &FWScript::o2_op9F, "ww" }, /* TODO: Name this opcode properly. */
|
||||||
/* A0 */
|
/* A0 */
|
||||||
{ &FWScript::o2_addGfxElementA0, "ww" }, /* TODO: Name this opcode properly. */
|
{ &FWScript::o2_addGfxElementType20, "ww" }, /* TODO: Name this opcode properly. */
|
||||||
{ &FWScript::o2_removeGfxElementA0, "ww" }, /* TODO: Name this opcode properly. */
|
{ &FWScript::o2_removeGfxElementType20, "ww" }, /* TODO: Name this opcode properly. */
|
||||||
{ &FWScript::o2_opA2, "ww" }, /* TODO: Name this opcode properly. */
|
{ &FWScript::o2_addGfxElementType21, "ww" }, /* TODO: Name this opcode properly. */
|
||||||
{ &FWScript::o2_opA3, "ww" }, /* TODO: Name this opcode properly. */
|
{ &FWScript::o2_removeGfxElementType21, "ww" }, /* TODO: Name this opcode properly. */
|
||||||
/* A4 */
|
/* A4 */
|
||||||
{ &FWScript::o2_loadMask22, "b" }, /* TODO: Name this opcode properly. */
|
{ &FWScript::o2_loadMask22, "b" }, /* TODO: Name this opcode properly. */
|
||||||
{ &FWScript::o2_unloadMask22, "b" }, /* TODO: Name this opcode properly. */
|
{ &FWScript::o2_unloadMask22, "b" }, /* TODO: Name this opcode properly. */
|
||||||
|
@ -442,6 +442,7 @@ int FWScript::o2_removeSeq() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \todo Implement this instruction
|
/*! \todo Implement this instruction
|
||||||
|
* \note According to the scripts' opcode usage comparison this opcode isn't used at all.
|
||||||
*/
|
*/
|
||||||
int FWScript::o2_op81() {
|
int FWScript::o2_op81() {
|
||||||
warning("STUB: o2_op81()");
|
warning("STUB: o2_op81()");
|
||||||
|
@ -449,23 +450,25 @@ int FWScript::o2_op81() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \todo Implement this instruction
|
int FWScript::o2_modifySeqListElement() {
|
||||||
*/
|
|
||||||
int FWScript::o2_op82() {
|
|
||||||
byte a = getNextByte();
|
byte a = getNextByte();
|
||||||
byte b = getNextByte();
|
byte b = getNextByte();
|
||||||
uint16 c = getNextWord();
|
uint16 c = getNextWord();
|
||||||
uint16 d = getNextWord();
|
uint16 d = getNextWord();
|
||||||
byte e = getNextByte();
|
byte e = getNextByte();
|
||||||
warning("STUB: o2_op82(%x, %x, %x, %x, %x)", a, b, c, d, e);
|
debugC(5, kCineDebugScript, "Line: %d: o2_modifySeqListElement(%d,%d,%d,%d,%d)", _line, a, b, c, d, e);
|
||||||
|
|
||||||
|
modifySeqListElement(a, 0, b, c, d, e);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! \todo Check whether this opcode's name is backwards (i.e. should it be o2_isSeqNotRunning?)
|
||||||
|
*/
|
||||||
int FWScript::o2_isSeqRunning() {
|
int FWScript::o2_isSeqRunning() {
|
||||||
byte a = getNextByte();
|
byte a = getNextByte();
|
||||||
byte b = getNextByte();
|
byte b = getNextByte();
|
||||||
|
|
||||||
debugC(5, kCineDebugScript, "Line: %d: OP83(%d,%d) -> TODO", _line, a, b);
|
debugC(5, kCineDebugScript, "Line: %d: o2_isSeqRunning(%d,%d)", _line, a, b);
|
||||||
|
|
||||||
if (isSeqRunning(a, 0, b)) {
|
if (isSeqRunning(a, 0, b)) {
|
||||||
_compare = 1;
|
_compare = 1;
|
||||||
|
@ -593,19 +596,18 @@ int FWScript::o2_stopObjectScript() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \todo Implement this instruction
|
|
||||||
*/
|
|
||||||
int FWScript::o2_op8D() {
|
int FWScript::o2_op8D() {
|
||||||
uint16 a = getNextWord();
|
uint16 objIdx1 = getNextWord();
|
||||||
uint16 b = getNextWord();
|
uint16 xAdd1 = getNextWord();
|
||||||
uint16 c = getNextWord();
|
uint16 yAdd1 = getNextWord();
|
||||||
uint16 d = getNextWord();
|
uint16 maskAdd1 = getNextWord();
|
||||||
uint16 e = getNextWord();
|
uint16 objIdx2 = getNextWord();
|
||||||
uint16 f = getNextWord();
|
uint16 xAdd2 = getNextWord();
|
||||||
uint16 g = getNextWord();
|
uint16 yAdd2 = getNextWord();
|
||||||
uint16 h = getNextWord();
|
uint16 maskAdd2 = getNextWord();
|
||||||
warning("STUB: o2_op8D(%x, %x, %x, %x, %x, %x, %x, %x)", a, b, c, d, e, f, g, h);
|
debugC(5, kCineDebugScript, "Line: %d: o2_op8D(%d, %d, %d, %d, %d, %d, %d, %d)", _line, objIdx1, xAdd1, yAdd1, maskAdd1, objIdx2, xAdd2, yAdd2, maskAdd2);
|
||||||
// _currentScriptElement->compareResult = ...
|
|
||||||
|
_compare = compareObjectParamRanges(objIdx1, xAdd1, yAdd1, maskAdd1, objIdx2, xAdd2, yAdd2, maskAdd2);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -649,16 +651,15 @@ int FWScript::o2_loadBg() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \todo Check the current implementation for correctness
|
|
||||||
*/
|
|
||||||
int FWScript::o2_wasZoneChecked() {
|
int FWScript::o2_wasZoneChecked() {
|
||||||
byte param = getNextByte();
|
byte param = getNextByte();
|
||||||
_compare = (param < 16 && zoneData[param]);
|
_compare = (param < NUM_MAX_ZONE && zoneQuery[param]) ? 1 : 0;
|
||||||
debugC(5, kCineDebugScript, "Line: %d: o2_wasZoneChecked(%d)", _line, param);
|
debugC(5, kCineDebugScript, "Line: %d: o2_wasZoneChecked(%d)", _line, param);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \todo Implement this instruction
|
/*! \todo Implement this instruction
|
||||||
|
* \note According to the scripts' opcode usage comparison this opcode isn't used at all.
|
||||||
*/
|
*/
|
||||||
int FWScript::o2_op9B() {
|
int FWScript::o2_op9B() {
|
||||||
uint16 a = getNextWord();
|
uint16 a = getNextWord();
|
||||||
|
@ -674,6 +675,7 @@ int FWScript::o2_op9B() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \todo Implement this instruction
|
/*! \todo Implement this instruction
|
||||||
|
* \note According to the scripts' opcode usage comparison this opcode isn't used at all.
|
||||||
*/
|
*/
|
||||||
int FWScript::o2_op9C() {
|
int FWScript::o2_op9C() {
|
||||||
uint16 a = getNextWord();
|
uint16 a = getNextWord();
|
||||||
|
@ -713,6 +715,7 @@ int FWScript::o2_setAdditionalBgVScroll() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \todo Implement this instruction
|
/*! \todo Implement this instruction
|
||||||
|
* \note According to the scripts' opcode usage comparison this opcode isn't used at all.
|
||||||
*/
|
*/
|
||||||
int FWScript::o2_op9F() {
|
int FWScript::o2_op9F() {
|
||||||
warning("o2_op9F()");
|
warning("o2_op9F()");
|
||||||
|
@ -721,42 +724,36 @@ int FWScript::o2_op9F() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int FWScript::o2_addGfxElementA0() {
|
int FWScript::o2_addGfxElementType20() {
|
||||||
uint16 param1 = getNextWord();
|
uint16 param1 = getNextWord();
|
||||||
uint16 param2 = getNextWord();
|
uint16 param2 = getNextWord();
|
||||||
|
|
||||||
debugC(5, kCineDebugScript, "Line: %d: addGfxElementA0(%d,%d)", _line, param1, param2);
|
debugC(5, kCineDebugScript, "Line: %d: o2_addGfxElementType20(%d,%d)", _line, param1, param2);
|
||||||
addGfxElementA0(param1, param2);
|
addGfxElement(param1, param2, 20);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \todo Implement this instruction
|
int FWScript::o2_removeGfxElementType20() {
|
||||||
*/
|
|
||||||
int FWScript::o2_removeGfxElementA0() {
|
|
||||||
uint16 idx = getNextWord();
|
uint16 idx = getNextWord();
|
||||||
uint16 param = getNextWord();
|
uint16 param = getNextWord();
|
||||||
warning("STUB? o2_removeGfxElementA0(%x, %x)", idx, param);
|
debugC(5, kCineDebugScript, "Line: %d: o2_removeGfxElementType20(%d,%d)", _line, idx, param);
|
||||||
removeGfxElementA0(idx, param);
|
removeGfxElement(idx, param, 20);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \todo Implement this instruction
|
int FWScript::o2_addGfxElementType21() {
|
||||||
*/
|
|
||||||
int FWScript::o2_opA2() {
|
|
||||||
uint16 a = getNextWord();
|
uint16 a = getNextWord();
|
||||||
uint16 b = getNextWord();
|
uint16 b = getNextWord();
|
||||||
warning("STUB: o2_opA2(%x, %x)", a, b);
|
debugC(5, kCineDebugScript, "Line: %d: o2_addGfxElementType21(%d,%d)", _line, a, b);
|
||||||
// addGfxElementA2();
|
addGfxElement(a, b, 21);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \todo Implement this instruction
|
int FWScript::o2_removeGfxElementType21() {
|
||||||
*/
|
|
||||||
int FWScript::o2_opA3() {
|
|
||||||
uint16 a = getNextWord();
|
uint16 a = getNextWord();
|
||||||
uint16 b = getNextWord();
|
uint16 b = getNextWord();
|
||||||
warning("STUB: o2_opA3(%x, %x)", a, b);
|
debugC(5, kCineDebugScript, "Line: %d: o2_removeGfxElementType21(%d,%d)", _line, a, b);
|
||||||
// removeGfxElementA2();
|
removeGfxElement(a, b, 21);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -94,6 +94,9 @@ int16 saveVar2;
|
||||||
|
|
||||||
byte isInPause = 0;
|
byte isInPause = 0;
|
||||||
|
|
||||||
|
// TODO: Implement inputVar0's changes in the program
|
||||||
|
// Currently inputVar0 isn't updated anywhere even though it's used at least in processSeqListElement.
|
||||||
|
uint16 inputVar0 = 0;
|
||||||
byte inputVar1 = 0;
|
byte inputVar1 = 0;
|
||||||
uint16 inputVar2 = 0, inputVar3 = 0;
|
uint16 inputVar2 = 0, inputVar3 = 0;
|
||||||
|
|
||||||
|
@ -110,6 +113,7 @@ CommandeType objectListCommand[20];
|
||||||
int16 objListTab[20];
|
int16 objListTab[20];
|
||||||
|
|
||||||
uint16 zoneData[NUM_MAX_ZONE];
|
uint16 zoneData[NUM_MAX_ZONE];
|
||||||
|
uint16 zoneQuery[NUM_MAX_ZONE]; //!< Only exists in Operation Stealth
|
||||||
|
|
||||||
|
|
||||||
void stopMusicAfterFadeOut(void) {
|
void stopMusicAfterFadeOut(void) {
|
||||||
|
@ -130,6 +134,7 @@ void runObjectScript(int16 entryIdx) {
|
||||||
*/
|
*/
|
||||||
void addPlayerCommandMessage(int16 cmd) {
|
void addPlayerCommandMessage(int16 cmd) {
|
||||||
overlay tmp;
|
overlay tmp;
|
||||||
|
memset(&tmp, 0, sizeof(tmp));
|
||||||
tmp.objIdx = cmd;
|
tmp.objIdx = cmd;
|
||||||
tmp.type = 3;
|
tmp.type = 3;
|
||||||
|
|
||||||
|
@ -389,6 +394,7 @@ bool brokenSave(Common::InSaveFile &fHandle) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \todo Implement Operation Stealth loading, this is obviously Future Wars only
|
/*! \todo Implement Operation Stealth loading, this is obviously Future Wars only
|
||||||
|
* \todo Add support for loading the zoneQuery table (Operation Stealth specific)
|
||||||
*/
|
*/
|
||||||
bool CineEngine::makeLoad(char *saveName) {
|
bool CineEngine::makeLoad(char *saveName) {
|
||||||
int16 i;
|
int16 i;
|
||||||
|
@ -586,6 +592,8 @@ bool CineEngine::makeLoad(char *saveName) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! \todo Add support for saving the zoneQuery table (Operation Stealth specific)
|
||||||
|
*/
|
||||||
void makeSave(char *saveFileName) {
|
void makeSave(char *saveFileName) {
|
||||||
int16 i;
|
int16 i;
|
||||||
Common::OutSaveFile *fHandle;
|
Common::OutSaveFile *fHandle;
|
||||||
|
@ -1580,16 +1588,19 @@ void removeSeq(uint16 param1, uint16 param2, uint16 param3) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16 isSeqRunning(uint16 param1, uint16 param2, uint16 param3) {
|
bool isSeqRunning(uint16 param1, uint16 param2, uint16 param3) {
|
||||||
Common::List<SeqListElement>::iterator it;
|
Common::List<SeqListElement>::iterator it;
|
||||||
|
|
||||||
for (it = seqList.begin(); it != seqList.end(); ++it) {
|
for (it = seqList.begin(); it != seqList.end(); ++it) {
|
||||||
if (it->objIdx == param1 && it->var4 == param2 && it->varE == param3) {
|
if (it->objIdx == param1 && it->var4 == param2 && it->varE == param3) {
|
||||||
return 1;
|
// Just to be on the safe side there's a restriction of the
|
||||||
|
// addition's result to 16-bit arithmetic here like in the
|
||||||
|
// original. It's possible that it's not strictly needed.
|
||||||
|
return ((it->var14 + it->var16) & 0xFFFF) == 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void addSeqListElement(uint16 objIdx, int16 param1, int16 param2, int16 frame, int16 param4, int16 param5, int16 param6, int16 param7, int16 param8) {
|
void addSeqListElement(uint16 objIdx, int16 param1, int16 param2, int16 frame, int16 param4, int16 param5, int16 param6, int16 param7, int16 param8) {
|
||||||
|
@ -1616,6 +1627,19 @@ void addSeqListElement(uint16 objIdx, int16 param1, int16 param2, int16 frame, i
|
||||||
seqList.insert(it, tmp);
|
seqList.insert(it, tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void modifySeqListElement(uint16 objIdx, int16 var4Test, int16 param1, int16 param2, int16 param3, int16 param4) {
|
||||||
|
// Find a suitable list element and modify it
|
||||||
|
for (Common::List<SeqListElement>::iterator it = seqList.begin(); it != seqList.end(); ++it) {
|
||||||
|
if (it->objIdx == objIdx && it->var4 == var4Test) {
|
||||||
|
it->varC = param1;
|
||||||
|
it->var18 = param2;
|
||||||
|
it->var1A = param3;
|
||||||
|
it->var10 = it->var12 = param4;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void computeMove1(SeqListElement &element, int16 x, int16 y, int16 param1,
|
void computeMove1(SeqListElement &element, int16 x, int16 y, int16 param1,
|
||||||
int16 param2, int16 x2, int16 y2) {
|
int16 param2, int16 x2, int16 y2) {
|
||||||
element.var16 = 0;
|
element.var16 = 0;
|
||||||
|
@ -1660,105 +1684,48 @@ uint16 computeMove2(SeqListElement &element) {
|
||||||
return returnVar;
|
return returnVar;
|
||||||
}
|
}
|
||||||
|
|
||||||
// sort all the gfx stuff...
|
uint16 addAni(uint16 param1, uint16 objIdx, const int8 *ptr, SeqListElement &element, uint16 param3, int16 *param4) {
|
||||||
|
const int8 *ptrData;
|
||||||
void resetGfxEntityEntry(uint16 objIdx) {
|
const int8 *ptr2;
|
||||||
#if 0
|
|
||||||
overlayHeadElement* tempHead = &overlayHead;
|
|
||||||
byte* var_16 = NULL;
|
|
||||||
uint16 var_10 = 0;
|
|
||||||
uint16 var_12 = 0;
|
|
||||||
overlayHeadElement* currentHead = tempHead->next;
|
|
||||||
byte* var_1A = NULL;
|
|
||||||
overlayHeadElement* var1E = &overlayHead;
|
|
||||||
|
|
||||||
while (currentHead) {
|
|
||||||
tempHead2 = currentHead->next;
|
|
||||||
|
|
||||||
if (currentHead->objIdx == objIdx && currentHead->type!=2 && currentHead->type!=3 && currentHead->type!=0x14) {
|
|
||||||
tempHead->next = tempHead2;
|
|
||||||
|
|
||||||
if (tempHead2) {
|
|
||||||
tempHead2->previous = currentHead->previous;
|
|
||||||
} else {
|
|
||||||
seqVar0 = currentHead->previous;
|
|
||||||
}
|
|
||||||
|
|
||||||
var_22 = var_16;
|
|
||||||
|
|
||||||
if (!var_22) {
|
|
||||||
// todo: goto?
|
|
||||||
}
|
|
||||||
|
|
||||||
var_22->previous = currentHead;
|
|
||||||
} else {
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentHead->type == 0x14) {
|
|
||||||
} else {
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentHead->type == 0x2 || currentHead->type == 0x3) {
|
|
||||||
si = 10000;
|
|
||||||
} else {
|
|
||||||
si = objectTable[currentHead->objIdx];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (objectTable[objIdx]>si) {
|
|
||||||
var1E = currentHead;
|
|
||||||
}
|
|
||||||
|
|
||||||
tempHead = tempHead->next;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (var_1A) {
|
|
||||||
currentHead = var_16;
|
|
||||||
var_22 = var_1E->next;
|
|
||||||
var_1E->next = currentHead;
|
|
||||||
var_1A->next = var_22;
|
|
||||||
|
|
||||||
if (var_1E != &gfxEntityHead) {
|
|
||||||
currentHead->previous = var_1E;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!var_22) {
|
|
||||||
seqVar0 = var_1A;
|
|
||||||
} else {
|
|
||||||
var_22->previous = var_1A;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16 addAni(uint16 param1, uint16 objIdx, const byte *ptr, SeqListElement &element, uint16 param3, int16 *param4) {
|
|
||||||
const byte *currentPtr = ptr;
|
|
||||||
const byte *ptrData;
|
|
||||||
const byte *ptr2;
|
|
||||||
int16 di;
|
int16 di;
|
||||||
|
|
||||||
|
// In the original an error string is set and 0 is returned if the following doesn't hold
|
||||||
assert(ptr);
|
assert(ptr);
|
||||||
assert(param4);
|
|
||||||
|
|
||||||
dummyU16 = READ_BE_UINT16((currentPtr + param1 * 2) + 8);
|
|
||||||
|
|
||||||
|
// We probably could just use a local variable here instead of the dummyU16 but
|
||||||
|
// haven't checked if this has any side-effects so keeping it this way still.
|
||||||
|
dummyU16 = READ_BE_UINT16(ptr + param1 * 2 + 8);
|
||||||
ptrData = ptr + dummyU16;
|
ptrData = ptr + dummyU16;
|
||||||
|
|
||||||
|
// In the original an error string is set and 0 is returned if the following doesn't hold
|
||||||
assert(*ptrData);
|
assert(*ptrData);
|
||||||
|
|
||||||
di = (objectTable[objIdx].costume + 1) % (*ptrData);
|
di = (objectTable[objIdx].costume + 1) % (*ptrData);
|
||||||
ptr2 = (ptrData + (di * 8)) + 1;
|
++ptrData; // Jump over the just read byte
|
||||||
|
// Here ptr2 seems to be indexing a table of structs (8 bytes per struct):
|
||||||
|
// struct {
|
||||||
|
// int8 x; // 0 (Used with checkCollision)
|
||||||
|
// int8 y; // 1 (Used with checkCollision)
|
||||||
|
// int8 numZones; // 2 (Used with checkCollision)
|
||||||
|
// int8 var3; // 3 (Not used in this function)
|
||||||
|
// int8 xAdd; // 4 (Used with an object)
|
||||||
|
// int8 yAdd; // 5 (Used with an object)
|
||||||
|
// int8 maskAdd; // 6 (Used with an object)
|
||||||
|
// int8 frameAdd; // 7 (Used with an object)
|
||||||
|
// };
|
||||||
|
ptr2 = ptrData + di * 8;
|
||||||
|
|
||||||
|
// We might probably safely discard the AND by 1 here because
|
||||||
|
// at least in the original checkCollision returns always 0 or 1.
|
||||||
if ((checkCollision(objIdx, ptr2[0], ptr2[1], ptr2[2], ptr[0]) & 1)) {
|
if ((checkCollision(objIdx, ptr2[0], ptr2[1], ptr2[2], ptr[0]) & 1)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
objectTable[objIdx].x += (int8)ptr2[4];
|
objectTable[objIdx].x += ptr2[4];
|
||||||
objectTable[objIdx].y += (int8)ptr2[5];
|
objectTable[objIdx].y += ptr2[5];
|
||||||
objectTable[objIdx].mask += (int8)ptr2[6];
|
objectTable[objIdx].mask += ptr2[6];
|
||||||
|
|
||||||
if (objectTable[objIdx].frame) {
|
if (ptr2[6]) {
|
||||||
resetGfxEntityEntry(objIdx);
|
resetGfxEntityEntry(objIdx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1767,16 +1734,63 @@ uint16 addAni(uint16 param1, uint16 objIdx, const byte *ptr, SeqListElement &ele
|
||||||
if (param3 || !element.var14) {
|
if (param3 || !element.var14) {
|
||||||
objectTable[objIdx].costume = di;
|
objectTable[objIdx].costume = di;
|
||||||
} else {
|
} else {
|
||||||
|
assert(param4);
|
||||||
*param4 = di;
|
*param4 = di;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Permutates the overlay list into a different order according to some logic.
|
||||||
|
* \todo Check this function for correctness (Wasn't very easy to reverse engineer so there may be errors)
|
||||||
|
*/
|
||||||
|
void resetGfxEntityEntry(uint16 objIdx) {
|
||||||
|
Common::List<overlay>::iterator it, bObjsCutPoint;
|
||||||
|
Common::List<overlay> aReverseObjs, bObjs;
|
||||||
|
bool foundCutPoint = false;
|
||||||
|
|
||||||
|
// Go through the overlay list and partition the whole list into two categories (Type A and type B objects)
|
||||||
|
for (it = overlayList.begin(); it != overlayList.end(); ++it) {
|
||||||
|
if (it->objIdx == objIdx && it->type != 2 && it->type != 3) { // Type A object
|
||||||
|
aReverseObjs.push_front(*it);
|
||||||
|
} else { // Type B object
|
||||||
|
bObjs.push_back(*it);
|
||||||
|
uint16 objectMask;
|
||||||
|
if (it->type == 2 || it->type == 3) {
|
||||||
|
objectMask = 10000;
|
||||||
|
} else {
|
||||||
|
objectMask = objectTable[it->objIdx].mask;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (objectTable[objIdx].mask > objectMask) { // Check for B objects' cut point
|
||||||
|
bObjsCutPoint = bObjs.reverse_begin();
|
||||||
|
foundCutPoint = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recreate the overlay list in a different order.
|
||||||
|
overlayList.clear();
|
||||||
|
if (foundCutPoint) {
|
||||||
|
// If a cut point was found the order is:
|
||||||
|
// B objects before the cut point, the cut point, A objects in reverse order, B objects after cut point.
|
||||||
|
++bObjsCutPoint; // Include the cut point in the first list insertion
|
||||||
|
overlayList.insert(overlayList.end(), bObjs.begin(), bObjsCutPoint);
|
||||||
|
overlayList.insert(overlayList.end(), aReverseObjs.begin(), aReverseObjs.end());
|
||||||
|
overlayList.insert(overlayList.end(), bObjsCutPoint, bObjs.end());
|
||||||
|
} else {
|
||||||
|
// If no cut point was found the order is:
|
||||||
|
// A objects in reverse order, B objects.
|
||||||
|
overlayList.insert(overlayList.end(), aReverseObjs.begin(), aReverseObjs.end());
|
||||||
|
overlayList.insert(overlayList.end(), bObjs.begin(), bObjs.end());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void processSeqListElement(SeqListElement &element) {
|
void processSeqListElement(SeqListElement &element) {
|
||||||
int16 x = objectTable[element.objIdx].x;
|
int16 x = objectTable[element.objIdx].x;
|
||||||
int16 y = objectTable[element.objIdx].y;
|
int16 y = objectTable[element.objIdx].y;
|
||||||
const byte *ptr1 = animDataTable[element.frame].data();
|
const int8 *ptr1 = (const int8 *) animDataTable[element.frame].data();
|
||||||
int16 var_10;
|
int16 var_10;
|
||||||
int16 var_4;
|
int16 var_4;
|
||||||
int16 var_2;
|
int16 var_2;
|
||||||
|
@ -1789,15 +1803,36 @@ void processSeqListElement(SeqListElement &element) {
|
||||||
element.var12 = 0;
|
element.var12 = 0;
|
||||||
|
|
||||||
if (ptr1) {
|
if (ptr1) {
|
||||||
uint16 param1 = ptr1[1];
|
int16 param1 = ptr1[1];
|
||||||
uint16 param2 = ptr1[2];
|
int16 param2 = ptr1[2];
|
||||||
|
|
||||||
if (element.varC != 255) {
|
if (element.varC != 255) {
|
||||||
// FIXME: Why is this here? Fingolfin gets lots of these
|
int16 x2 = element.var18;
|
||||||
// in his copy of Operation Stealth (value 0 or 236) under
|
int16 y2 = element.var1A;
|
||||||
// Mac OS X. Maybe it's a endian issue? At least the graphics
|
if (element.varC) {
|
||||||
// in the copy protection screen are partially messed up.
|
x2 += objectTable[element.varC].x;
|
||||||
warning("processSeqListElement: varC = %d", element.varC);
|
y2 += objectTable[element.varC].y;
|
||||||
|
}
|
||||||
|
computeMove1(element, ptr1[4] + x, ptr1[5] + y, param1, param2, x2, y2);
|
||||||
|
} else {
|
||||||
|
if (inputVar0 && allowPlayerInput) {
|
||||||
|
int16 adder = param1 + 1;
|
||||||
|
if (inputVar0 != 1) {
|
||||||
|
adder = -adder;
|
||||||
|
}
|
||||||
|
// FIXME: In Operation Stealth's disassembly global variable 251 is used here
|
||||||
|
// but it's named as VAR_MOUSE_Y_MODE in ScummVM. Is it correct or a
|
||||||
|
// left over from Future Wars's reverse engineering?
|
||||||
|
globalVars[VAR_MOUSE_X_POS] = globalVars[251] = ptr1[4] + x + adder;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inputVar1 && allowPlayerInput) {
|
||||||
|
int16 adder = param2 + 1;
|
||||||
|
if (inputVar1 != 1) {
|
||||||
|
adder = -adder;
|
||||||
|
}
|
||||||
|
// TODO: Name currently unnamed global variable 252
|
||||||
|
globalVars[VAR_MOUSE_Y_POS] = globalVars[252] = ptr1[5] + y + adder;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (globalVars[VAR_MOUSE_X_POS] || globalVars[VAR_MOUSE_Y_POS]) {
|
if (globalVars[VAR_MOUSE_X_POS] || globalVars[VAR_MOUSE_Y_POS]) {
|
||||||
|
@ -1806,6 +1841,7 @@ void processSeqListElement(SeqListElement &element) {
|
||||||
element.var16 = 0;
|
element.var16 = 0;
|
||||||
element.var14 = 0;
|
element.var14 = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var_10 = computeMove2(element);
|
var_10 = computeMove2(element);
|
||||||
|
|
||||||
|
@ -1845,14 +1881,14 @@ void processSeqListElement(SeqListElement &element) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (element.var16 + element.var14) {
|
if (element.var16 + element.var14 == 0) {
|
||||||
if (element.var1C) {
|
if (element.var1C) {
|
||||||
if (element.var1E) {
|
if (element.var1E) {
|
||||||
objectTable[element.objIdx].costume = 0;
|
objectTable[element.objIdx].costume = 0;
|
||||||
element.var1E = 0;
|
element.var1E = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
addAni(element.var1C + 3, element.objIdx, ptr1, element, 1, (int16 *) & var2);
|
addAni(element.var1C + 3, element.objIdx, ptr1, element, 1, &var_2);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,16 +128,20 @@ struct SelectedObjStruct {
|
||||||
|
|
||||||
#define NUM_MAX_ZONE 16
|
#define NUM_MAX_ZONE 16
|
||||||
extern uint16 zoneData[NUM_MAX_ZONE];
|
extern uint16 zoneData[NUM_MAX_ZONE];
|
||||||
|
extern uint16 zoneQuery[NUM_MAX_ZONE];
|
||||||
|
|
||||||
void addMessage(byte param1, int16 param2, int16 param3, int16 param4, int16 param5);
|
void addMessage(byte param1, int16 param2, int16 param3, int16 param4, int16 param5);
|
||||||
|
|
||||||
void removeMessages();
|
void removeMessages();
|
||||||
|
|
||||||
void removeSeq(uint16 param1, uint16 param2, uint16 param3);
|
void removeSeq(uint16 param1, uint16 param2, uint16 param3);
|
||||||
uint16 isSeqRunning(uint16 param1, uint16 param2, uint16 param3);
|
bool isSeqRunning(uint16 param1, uint16 param2, uint16 param3);
|
||||||
void addSeqListElement(uint16 objIdx, int16 param1, int16 param2, int16 frame, int16 param4, int16 param5, int16 param6, int16 param7, int16 param8);
|
void addSeqListElement(uint16 objIdx, int16 param1, int16 param2, int16 frame, int16 param4, int16 param5, int16 param6, int16 param7, int16 param8);
|
||||||
|
void modifySeqListElement(uint16 objIdx, int16 var4Test, int16 param1, int16 param2, int16 param3, int16 param4);
|
||||||
void processSeqList(void);
|
void processSeqList(void);
|
||||||
|
|
||||||
|
void resetGfxEntityEntry(uint16 objIdx);
|
||||||
|
|
||||||
bool makeTextEntryMenu(const char *caption, char *string, int strLen, int y);
|
bool makeTextEntryMenu(const char *caption, char *string, int strLen, int y);
|
||||||
|
|
||||||
} // End of namespace Cine
|
} // End of namespace Cine
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <assert.h>
|
#include <assert.h> // FIXME: WINCE: this is not needed/not portable (probably applies to all above includes)
|
||||||
|
|
||||||
|
|
||||||
#include "common/scummsys.h"
|
#include "common/scummsys.h"
|
||||||
|
|
|
@ -372,7 +372,11 @@ void DrasculaEngine::animation_1_1() {
|
||||||
break;
|
break;
|
||||||
clearRoom();
|
clearRoom();
|
||||||
|
|
||||||
|
if (_lang == kSpanish)
|
||||||
|
playMusic(31);
|
||||||
|
else
|
||||||
playMusic(2);
|
playMusic(2);
|
||||||
|
|
||||||
pause(5);
|
pause(5);
|
||||||
playFLI("intro.bin", 12);
|
playFLI("intro.bin", 12);
|
||||||
term_int = 1;
|
term_int = 1;
|
||||||
|
|
|
@ -328,7 +328,7 @@ public:
|
||||||
int curHeight, curWidth, feetHeight;
|
int curHeight, curWidth, feetHeight;
|
||||||
int talkHeight, talkWidth;
|
int talkHeight, talkWidth;
|
||||||
int floorX1, floorY1, floorX2, floorY2;
|
int floorX1, floorY1, floorX2, floorY2;
|
||||||
int near, far;
|
int lowerLimit, upperLimit;
|
||||||
int trackFinal, walkToObject;
|
int trackFinal, walkToObject;
|
||||||
int objExit;
|
int objExit;
|
||||||
int timeDiff, startTime;
|
int timeDiff, startTime;
|
||||||
|
|
|
@ -1672,8 +1672,8 @@ void DrasculaEngine::enterRoom(int roomIndex) {
|
||||||
getIntFromLine(buffer, size, &floorY2);
|
getIntFromLine(buffer, size, &floorY2);
|
||||||
|
|
||||||
if (currentChapter != 2) {
|
if (currentChapter != 2) {
|
||||||
getIntFromLine(buffer, size, &far);
|
getIntFromLine(buffer, size, &upperLimit);
|
||||||
getIntFromLine(buffer, size, &near);
|
getIntFromLine(buffer, size, &lowerLimit);
|
||||||
}
|
}
|
||||||
_arj.close();
|
_arj.close();
|
||||||
|
|
||||||
|
@ -1732,27 +1732,27 @@ void DrasculaEngine::enterRoom(int roomIndex) {
|
||||||
|
|
||||||
if (currentChapter != 2) {
|
if (currentChapter != 2) {
|
||||||
for (l = 0; l <= floorY1; l++)
|
for (l = 0; l <= floorY1; l++)
|
||||||
factor_red[l] = far;
|
factor_red[l] = upperLimit;
|
||||||
for (l = floorY1; l <= 201; l++)
|
for (l = floorY1; l <= 201; l++)
|
||||||
factor_red[l] = near;
|
factor_red[l] = lowerLimit;
|
||||||
|
|
||||||
chiquez = (float)(near - far) / (float)(floorY2 - floorY1);
|
chiquez = (float)(lowerLimit - upperLimit) / (float)(floorY2 - floorY1);
|
||||||
for (l = floorY1; l <= floorY2; l++) {
|
for (l = floorY1; l <= floorY2; l++) {
|
||||||
factor_red[l] = (int)(far + pequegnez);
|
factor_red[l] = (int)(upperLimit + pequegnez);
|
||||||
pequegnez = pequegnez + chiquez;
|
pequegnez = pequegnez + chiquez;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (roomNumber == 24) {
|
if (roomNumber == 24) {
|
||||||
for (l = floorY1 - 1; l > 74; l--) {
|
for (l = floorY1 - 1; l > 74; l--) {
|
||||||
factor_red[l] = (int)(far - pequegnez);
|
factor_red[l] = (int)(upperLimit - pequegnez);
|
||||||
pequegnez = pequegnez + chiquez;
|
pequegnez = pequegnez + chiquez;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentChapter == 5 && roomNumber == 54) {
|
if (currentChapter == 5 && roomNumber == 54) {
|
||||||
for (l = floorY1 - 1; l > 84; l--) {
|
for (l = floorY1 - 1; l > 84; l--) {
|
||||||
factor_red[l] = (int)(far - pequegnez);
|
factor_red[l] = (int)(upperLimit - pequegnez);
|
||||||
pequegnez = pequegnez + chiquez;
|
pequegnez = pequegnez + chiquez;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ void DrasculaEngine::talk_igor(int index, int talkerType) {
|
||||||
int x_talk1[8] = { 56, 86, 116, 146, 176, 206, 236, 266 };
|
int x_talk1[8] = { 56, 86, 116, 146, 176, 206, 236, 266 };
|
||||||
int x_talk3[4] = { 80, 102, 124, 146 };
|
int x_talk3[4] = { 80, 102, 124, 146 };
|
||||||
int x_talk4[4] = { 119, 158, 197, 236 };
|
int x_talk4[4] = { 119, 158, 197, 236 };
|
||||||
int face;
|
int face = 0;
|
||||||
int length = strlen(said);
|
int length = strlen(said);
|
||||||
|
|
||||||
color_abc(kColorWhite);
|
color_abc(kColorWhite);
|
||||||
|
|
|
@ -277,6 +277,19 @@ static const GOBGameDescription gameDescriptions[] = {
|
||||||
kFeaturesNone,
|
kFeaturesNone,
|
||||||
"intro"
|
"intro"
|
||||||
},
|
},
|
||||||
|
{ // Supplied by raina in the forums
|
||||||
|
{
|
||||||
|
"gob1",
|
||||||
|
"",
|
||||||
|
AD_ENTRY1s("intro.stk", "6d837c6380d8f4d984c9f6cc0026df4f", 192712),
|
||||||
|
EN_ANY,
|
||||||
|
kPlatformMacintosh,
|
||||||
|
Common::ADGF_NO_FLAGS
|
||||||
|
},
|
||||||
|
kGameTypeGob1,
|
||||||
|
kFeaturesNone,
|
||||||
|
"intro"
|
||||||
|
},
|
||||||
{ // Supplied by paul66 in bug report #1652352
|
{ // Supplied by paul66 in bug report #1652352
|
||||||
{
|
{
|
||||||
"gob1",
|
"gob1",
|
||||||
|
|
|
@ -112,7 +112,7 @@ void VGAVideoDriver::drawSprite(SurfaceDesc *source, SurfaceDesc *dest,
|
||||||
if ((width < 1) || (height < 1))
|
if ((width < 1) || (height < 1))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
byte *srcPos = source->getVidMem() + (top * source->getWidth()) + left;
|
const byte *srcPos = source->getVidMem() + (top * source->getWidth()) + left;
|
||||||
byte *destPos = dest->getVidMem() + (y * dest->getWidth()) + x;
|
byte *destPos = dest->getVidMem() + (y * dest->getWidth()) + x;
|
||||||
|
|
||||||
uint32 size = width * height;
|
uint32 size = width * height;
|
||||||
|
|
|
@ -78,58 +78,6 @@ Goblin::Goblin(GobEngine *vm) : _vm(vm) {
|
||||||
_pressedMapY = 0;
|
_pressedMapY = 0;
|
||||||
_pathExistence = 0;
|
_pathExistence = 0;
|
||||||
|
|
||||||
_some0ValPtr = 0;
|
|
||||||
|
|
||||||
_gobRetVarPtr = 0;
|
|
||||||
_curGobVarPtr = 0;
|
|
||||||
_curGobXPosVarPtr = 0;
|
|
||||||
_curGobYPosVarPtr = 0;
|
|
||||||
_itemInPocketVarPtr = 0;
|
|
||||||
|
|
||||||
_curGobStateVarPtr = 0;
|
|
||||||
_curGobFrameVarPtr = 0;
|
|
||||||
_curGobMultStateVarPtr = 0;
|
|
||||||
_curGobNextStateVarPtr = 0;
|
|
||||||
_curGobScrXVarPtr = 0;
|
|
||||||
_curGobScrYVarPtr = 0;
|
|
||||||
_curGobLeftVarPtr = 0;
|
|
||||||
_curGobTopVarPtr = 0;
|
|
||||||
_curGobRightVarPtr = 0;
|
|
||||||
_curGobBottomVarPtr = 0;
|
|
||||||
_curGobDoAnimVarPtr = 0;
|
|
||||||
_curGobOrderVarPtr = 0;
|
|
||||||
_curGobNoTickVarPtr = 0;
|
|
||||||
_curGobTypeVarPtr = 0;
|
|
||||||
_curGobMaxTickVarPtr = 0;
|
|
||||||
_curGobTickVarPtr = 0;
|
|
||||||
_curGobActStartStateVarPtr = 0;
|
|
||||||
_curGobLookDirVarPtr = 0;
|
|
||||||
_curGobPickableVarPtr = 0;
|
|
||||||
_curGobRelaxVarPtr = 0;
|
|
||||||
_curGobMaxFrameVarPtr = 0;
|
|
||||||
|
|
||||||
_destItemStateVarPtr = 0;
|
|
||||||
_destItemFrameVarPtr = 0;
|
|
||||||
_destItemMultStateVarPtr = 0;
|
|
||||||
_destItemNextStateVarPtr = 0;
|
|
||||||
_destItemScrXVarPtr = 0;
|
|
||||||
_destItemScrYVarPtr = 0;
|
|
||||||
_destItemLeftVarPtr = 0;
|
|
||||||
_destItemTopVarPtr = 0;
|
|
||||||
_destItemRightVarPtr = 0;
|
|
||||||
_destItemBottomVarPtr = 0;
|
|
||||||
_destItemDoAnimVarPtr = 0;
|
|
||||||
_destItemOrderVarPtr = 0;
|
|
||||||
_destItemNoTickVarPtr = 0;
|
|
||||||
_destItemTypeVarPtr = 0;
|
|
||||||
_destItemMaxTickVarPtr = 0;
|
|
||||||
_destItemTickVarPtr = 0;
|
|
||||||
_destItemActStartStVarPtr = 0;
|
|
||||||
_destItemLookDirVarPtr = 0;
|
|
||||||
_destItemPickableVarPtr = 0;
|
|
||||||
_destItemRelaxVarPtr = 0;
|
|
||||||
_destItemMaxFrameVarPtr = 0;
|
|
||||||
|
|
||||||
_destItemType = 0;
|
_destItemType = 0;
|
||||||
_destItemState = 0;
|
_destItemState = 0;
|
||||||
for (int i = 0; i < 20; i++) {
|
for (int i = 0; i < 20; i++) {
|
||||||
|
@ -690,7 +638,7 @@ void Goblin::switchGoblin(int16 index) {
|
||||||
_gobDestY = tmp;
|
_gobDestY = tmp;
|
||||||
_vm->_map->_curGoblinY = tmp;
|
_vm->_map->_curGoblinY = tmp;
|
||||||
|
|
||||||
*_curGobVarPtr = _currentGoblin;
|
_curGobVarPtr = (uint32) _currentGoblin;
|
||||||
_pathExistence = 0;
|
_pathExistence = 0;
|
||||||
_readyToAct = 0;
|
_readyToAct = 0;
|
||||||
}
|
}
|
||||||
|
@ -1250,172 +1198,172 @@ void Goblin::loadObjects(const char *source) {
|
||||||
|
|
||||||
void Goblin::saveGobDataToVars(int16 xPos, int16 yPos, int16 someVal) {
|
void Goblin::saveGobDataToVars(int16 xPos, int16 yPos, int16 someVal) {
|
||||||
Gob_Object *obj;
|
Gob_Object *obj;
|
||||||
*_some0ValPtr = someVal;
|
_some0ValPtr = (uint32) someVal;
|
||||||
*_curGobXPosVarPtr = xPos;
|
_curGobXPosVarPtr = (uint32) xPos;
|
||||||
*_curGobYPosVarPtr = yPos;
|
_curGobYPosVarPtr = (uint32) yPos;
|
||||||
*_itemInPocketVarPtr = _itemIndInPocket;
|
_itemInPocketVarPtr = (uint32) _itemIndInPocket;
|
||||||
|
|
||||||
obj = _goblins[_currentGoblin];
|
obj = _goblins[_currentGoblin];
|
||||||
|
|
||||||
*_curGobStateVarPtr = obj->state;
|
_curGobStateVarPtr = (uint32) obj->state;
|
||||||
*_curGobFrameVarPtr = obj->curFrame;
|
_curGobFrameVarPtr = (uint32) obj->curFrame;
|
||||||
*_curGobMultStateVarPtr = obj->multState;
|
_curGobMultStateVarPtr = (uint32) obj->multState;
|
||||||
*_curGobNextStateVarPtr = obj->nextState;
|
_curGobNextStateVarPtr = (uint32) obj->nextState;
|
||||||
*_curGobScrXVarPtr = obj->xPos;
|
_curGobScrXVarPtr = (uint32) obj->xPos;
|
||||||
*_curGobScrYVarPtr = obj->yPos;
|
_curGobScrYVarPtr = (uint32) obj->yPos;
|
||||||
*_curGobLeftVarPtr = obj->left;
|
_curGobLeftVarPtr = (uint32) obj->left;
|
||||||
*_curGobTopVarPtr = obj->top;
|
_curGobTopVarPtr = (uint32) obj->top;
|
||||||
*_curGobRightVarPtr = obj->right;
|
_curGobRightVarPtr = (uint32) obj->right;
|
||||||
*_curGobBottomVarPtr = obj->bottom;
|
_curGobBottomVarPtr = (uint32) obj->bottom;
|
||||||
*_curGobDoAnimVarPtr = obj->doAnim;
|
_curGobDoAnimVarPtr = (uint32) obj->doAnim;
|
||||||
*_curGobOrderVarPtr = obj->order;
|
_curGobOrderVarPtr = (uint32) obj->order;
|
||||||
*_curGobNoTickVarPtr = obj->noTick;
|
_curGobNoTickVarPtr = (uint32) obj->noTick;
|
||||||
*_curGobTypeVarPtr = obj->type;
|
_curGobTypeVarPtr = (uint32) obj->type;
|
||||||
*_curGobMaxTickVarPtr = obj->maxTick;
|
_curGobMaxTickVarPtr = (uint32) obj->maxTick;
|
||||||
*_curGobTickVarPtr = obj->tick;
|
_curGobTickVarPtr = (uint32) obj->tick;
|
||||||
*_curGobActStartStateVarPtr = obj->actionStartState;
|
_curGobActStartStateVarPtr = (uint32) obj->actionStartState;
|
||||||
*_curGobLookDirVarPtr = obj->curLookDir;
|
_curGobLookDirVarPtr = (uint32) obj->curLookDir;
|
||||||
*_curGobPickableVarPtr = obj->pickable;
|
_curGobPickableVarPtr = (uint32) obj->pickable;
|
||||||
*_curGobRelaxVarPtr = obj->relaxTime;
|
_curGobRelaxVarPtr = (uint32) obj->relaxTime;
|
||||||
*_curGobMaxFrameVarPtr = getObjMaxFrame(obj);
|
_curGobMaxFrameVarPtr = (uint32) getObjMaxFrame(obj);
|
||||||
|
|
||||||
if (_actDestItemDesc == 0)
|
if (_actDestItemDesc == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
obj = _actDestItemDesc;
|
obj = _actDestItemDesc;
|
||||||
*_destItemStateVarPtr = obj->state;
|
_destItemStateVarPtr = (uint32) obj->state;
|
||||||
*_destItemFrameVarPtr = obj->curFrame;
|
_destItemFrameVarPtr = (uint32) obj->curFrame;
|
||||||
*_destItemMultStateVarPtr = obj->multState;
|
_destItemMultStateVarPtr = (uint32) obj->multState;
|
||||||
*_destItemNextStateVarPtr = obj->nextState;
|
_destItemNextStateVarPtr = (uint32) obj->nextState;
|
||||||
*_destItemScrXVarPtr = obj->xPos;
|
_destItemScrXVarPtr = (uint32) obj->xPos;
|
||||||
*_destItemScrYVarPtr = obj->yPos;
|
_destItemScrYVarPtr = (uint32) obj->yPos;
|
||||||
*_destItemLeftVarPtr = obj->left;
|
_destItemLeftVarPtr = (uint32) obj->left;
|
||||||
*_destItemTopVarPtr = obj->top;
|
_destItemTopVarPtr = (uint32) obj->top;
|
||||||
*_destItemRightVarPtr = obj->right;
|
_destItemRightVarPtr = (uint32) obj->right;
|
||||||
*_destItemBottomVarPtr = obj->bottom;
|
_destItemBottomVarPtr = (uint32) obj->bottom;
|
||||||
*_destItemDoAnimVarPtr = obj->doAnim;
|
_destItemDoAnimVarPtr = (uint32) obj->doAnim;
|
||||||
*_destItemOrderVarPtr = obj->order;
|
_destItemOrderVarPtr = (uint32) obj->order;
|
||||||
*_destItemNoTickVarPtr = obj->noTick;
|
_destItemNoTickVarPtr = (uint32) obj->noTick;
|
||||||
*_destItemTypeVarPtr = obj->type;
|
_destItemTypeVarPtr = (uint32) obj->type;
|
||||||
*_destItemMaxTickVarPtr = obj->maxTick;
|
_destItemMaxTickVarPtr = (uint32) obj->maxTick;
|
||||||
*_destItemTickVarPtr = obj->tick;
|
_destItemTickVarPtr = (uint32) obj->tick;
|
||||||
*_destItemActStartStVarPtr = obj->actionStartState;
|
_destItemActStartStVarPtr = (uint32) obj->actionStartState;
|
||||||
*_destItemLookDirVarPtr = obj->curLookDir;
|
_destItemLookDirVarPtr = (uint32) obj->curLookDir;
|
||||||
*_destItemPickableVarPtr = obj->pickable;
|
_destItemPickableVarPtr = (uint32) obj->pickable;
|
||||||
*_destItemRelaxVarPtr = obj->relaxTime;
|
_destItemRelaxVarPtr = (uint32) obj->relaxTime;
|
||||||
*_destItemMaxFrameVarPtr = getObjMaxFrame(obj);
|
_destItemMaxFrameVarPtr = (uint32) getObjMaxFrame(obj);
|
||||||
|
|
||||||
_destItemState = obj->state;
|
_destItemState = obj->state;
|
||||||
_destItemType = obj->type;
|
_destItemType = obj->type;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Goblin::initVarPointers(void) {
|
void Goblin::initVarPointers(void) {
|
||||||
_gobRetVarPtr = (int32 *)VAR_ADDRESS(59);
|
_gobRetVarPtr.set(*_vm->_inter->_variables, 236);
|
||||||
_curGobStateVarPtr = (int32 *)VAR_ADDRESS(60);
|
_curGobStateVarPtr.set(*_vm->_inter->_variables, 240);
|
||||||
_curGobFrameVarPtr = (int32 *)VAR_ADDRESS(61);
|
_curGobFrameVarPtr.set(*_vm->_inter->_variables, 244);
|
||||||
_curGobMultStateVarPtr = (int32 *)VAR_ADDRESS(62);
|
_curGobMultStateVarPtr.set(*_vm->_inter->_variables, 248);
|
||||||
_curGobNextStateVarPtr = (int32 *)VAR_ADDRESS(63);
|
_curGobNextStateVarPtr.set(*_vm->_inter->_variables, 252);
|
||||||
_curGobScrXVarPtr = (int32 *)VAR_ADDRESS(64);
|
_curGobScrXVarPtr.set(*_vm->_inter->_variables, 256);
|
||||||
_curGobScrYVarPtr = (int32 *)VAR_ADDRESS(65);
|
_curGobScrYVarPtr.set(*_vm->_inter->_variables, 260);
|
||||||
_curGobLeftVarPtr = (int32 *)VAR_ADDRESS(66);
|
_curGobLeftVarPtr.set(*_vm->_inter->_variables, 264);
|
||||||
_curGobTopVarPtr = (int32 *)VAR_ADDRESS(67);
|
_curGobTopVarPtr.set(*_vm->_inter->_variables, 268);
|
||||||
_curGobRightVarPtr = (int32 *)VAR_ADDRESS(68);
|
_curGobRightVarPtr.set(*_vm->_inter->_variables, 272);
|
||||||
_curGobBottomVarPtr = (int32 *)VAR_ADDRESS(69);
|
_curGobBottomVarPtr.set(*_vm->_inter->_variables, 276);
|
||||||
_curGobDoAnimVarPtr = (int32 *)VAR_ADDRESS(70);
|
_curGobDoAnimVarPtr.set(*_vm->_inter->_variables, 280);
|
||||||
_curGobOrderVarPtr = (int32 *)VAR_ADDRESS(71);
|
_curGobOrderVarPtr.set(*_vm->_inter->_variables, 284);
|
||||||
_curGobNoTickVarPtr = (int32 *)VAR_ADDRESS(72);
|
_curGobNoTickVarPtr.set(*_vm->_inter->_variables, 288);
|
||||||
_curGobTypeVarPtr = (int32 *)VAR_ADDRESS(73);
|
_curGobTypeVarPtr.set(*_vm->_inter->_variables, 292);
|
||||||
_curGobMaxTickVarPtr = (int32 *)VAR_ADDRESS(74);
|
_curGobMaxTickVarPtr.set(*_vm->_inter->_variables, 296);
|
||||||
_curGobTickVarPtr = (int32 *)VAR_ADDRESS(75);
|
_curGobTickVarPtr.set(*_vm->_inter->_variables, 300);
|
||||||
_curGobActStartStateVarPtr = (int32 *)VAR_ADDRESS(76);
|
_curGobActStartStateVarPtr.set(*_vm->_inter->_variables, 304);
|
||||||
_curGobLookDirVarPtr = (int32 *)VAR_ADDRESS(77);
|
_curGobLookDirVarPtr.set(*_vm->_inter->_variables, 308);
|
||||||
_curGobPickableVarPtr = (int32 *)VAR_ADDRESS(80);
|
_curGobPickableVarPtr.set(*_vm->_inter->_variables, 320);
|
||||||
_curGobRelaxVarPtr = (int32 *)VAR_ADDRESS(81);
|
_curGobRelaxVarPtr.set(*_vm->_inter->_variables, 324);
|
||||||
_destItemStateVarPtr = (int32 *)VAR_ADDRESS(82);
|
_destItemStateVarPtr.set(*_vm->_inter->_variables, 328);
|
||||||
_destItemFrameVarPtr = (int32 *)VAR_ADDRESS(83);
|
_destItemFrameVarPtr.set(*_vm->_inter->_variables, 332);
|
||||||
_destItemMultStateVarPtr = (int32 *)VAR_ADDRESS(84);
|
_destItemMultStateVarPtr.set(*_vm->_inter->_variables, 336);
|
||||||
_destItemNextStateVarPtr = (int32 *)VAR_ADDRESS(85);
|
_destItemNextStateVarPtr.set(*_vm->_inter->_variables, 340);
|
||||||
_destItemScrXVarPtr = (int32 *)VAR_ADDRESS(86);
|
_destItemScrXVarPtr.set(*_vm->_inter->_variables, 344);
|
||||||
_destItemScrYVarPtr = (int32 *)VAR_ADDRESS(87);
|
_destItemScrYVarPtr.set(*_vm->_inter->_variables, 348);
|
||||||
_destItemLeftVarPtr = (int32 *)VAR_ADDRESS(88);
|
_destItemLeftVarPtr.set(*_vm->_inter->_variables, 352);
|
||||||
_destItemTopVarPtr = (int32 *)VAR_ADDRESS(89);
|
_destItemTopVarPtr.set(*_vm->_inter->_variables, 356);
|
||||||
_destItemRightVarPtr = (int32 *)VAR_ADDRESS(90);
|
_destItemRightVarPtr.set(*_vm->_inter->_variables, 360);
|
||||||
_destItemBottomVarPtr = (int32 *)VAR_ADDRESS(91);
|
_destItemBottomVarPtr.set(*_vm->_inter->_variables, 364);
|
||||||
_destItemDoAnimVarPtr = (int32 *)VAR_ADDRESS(92);
|
_destItemDoAnimVarPtr.set(*_vm->_inter->_variables, 368);
|
||||||
_destItemOrderVarPtr = (int32 *)VAR_ADDRESS(93);
|
_destItemOrderVarPtr.set(*_vm->_inter->_variables, 372);
|
||||||
_destItemNoTickVarPtr = (int32 *)VAR_ADDRESS(94);
|
_destItemNoTickVarPtr.set(*_vm->_inter->_variables, 376);
|
||||||
_destItemTypeVarPtr = (int32 *)VAR_ADDRESS(95);
|
_destItemTypeVarPtr.set(*_vm->_inter->_variables, 380);
|
||||||
_destItemMaxTickVarPtr = (int32 *)VAR_ADDRESS(96);
|
_destItemMaxTickVarPtr.set(*_vm->_inter->_variables, 384);
|
||||||
_destItemTickVarPtr = (int32 *)VAR_ADDRESS(97);
|
_destItemTickVarPtr.set(*_vm->_inter->_variables, 388);
|
||||||
_destItemActStartStVarPtr = (int32 *)VAR_ADDRESS(98);
|
_destItemActStartStVarPtr.set(*_vm->_inter->_variables, 392);
|
||||||
_destItemLookDirVarPtr = (int32 *)VAR_ADDRESS(99);
|
_destItemLookDirVarPtr.set(*_vm->_inter->_variables, 396);
|
||||||
_destItemPickableVarPtr = (int32 *)VAR_ADDRESS(102);
|
_destItemPickableVarPtr.set(*_vm->_inter->_variables, 408);
|
||||||
_destItemRelaxVarPtr = (int32 *)VAR_ADDRESS(103);
|
_destItemRelaxVarPtr.set(*_vm->_inter->_variables, 412);
|
||||||
_destItemMaxFrameVarPtr = (int32 *)VAR_ADDRESS(105);
|
_destItemMaxFrameVarPtr.set(*_vm->_inter->_variables, 420);
|
||||||
_curGobVarPtr = (int32 *)VAR_ADDRESS(106);
|
_curGobVarPtr.set(*_vm->_inter->_variables, 424);
|
||||||
_some0ValPtr = (int32 *)VAR_ADDRESS(107);
|
_some0ValPtr.set(*_vm->_inter->_variables, 428);
|
||||||
_curGobXPosVarPtr = (int32 *)VAR_ADDRESS(108);
|
_curGobXPosVarPtr.set(*_vm->_inter->_variables, 432);
|
||||||
_curGobYPosVarPtr = (int32 *)VAR_ADDRESS(109);
|
_curGobYPosVarPtr.set(*_vm->_inter->_variables, 436);
|
||||||
_curGobMaxFrameVarPtr = (int32 *)VAR_ADDRESS(110);
|
_curGobMaxFrameVarPtr.set(*_vm->_inter->_variables, 440);
|
||||||
|
|
||||||
_itemInPocketVarPtr = (int32 *)VAR_ADDRESS(114);
|
_itemInPocketVarPtr.set(*_vm->_inter->_variables, 456);
|
||||||
|
|
||||||
*_itemInPocketVarPtr = -2;
|
_itemInPocketVarPtr = (uint32) -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Goblin::loadGobDataFromVars(void) {
|
void Goblin::loadGobDataFromVars(void) {
|
||||||
Gob_Object *obj;
|
Gob_Object *obj;
|
||||||
|
|
||||||
_itemIndInPocket = *_itemInPocketVarPtr;
|
_itemIndInPocket = (int32) _itemInPocketVarPtr;
|
||||||
|
|
||||||
obj = _goblins[_currentGoblin];
|
obj = _goblins[_currentGoblin];
|
||||||
|
|
||||||
obj->state = *_curGobStateVarPtr;
|
obj->state = (int32) _curGobStateVarPtr;
|
||||||
obj->curFrame = *_curGobFrameVarPtr;
|
obj->curFrame = (int32) _curGobFrameVarPtr;
|
||||||
obj->multState = *_curGobMultStateVarPtr;
|
obj->multState = (int32) _curGobMultStateVarPtr;
|
||||||
obj->nextState = *_curGobNextStateVarPtr;
|
obj->nextState = (int32) _curGobNextStateVarPtr;
|
||||||
obj->xPos = *_curGobScrXVarPtr;
|
obj->xPos = (int32) _curGobScrXVarPtr;
|
||||||
obj->yPos = *_curGobScrYVarPtr;
|
obj->yPos = (int32) _curGobScrYVarPtr;
|
||||||
obj->left = *_curGobLeftVarPtr;
|
obj->left = (int32) _curGobLeftVarPtr;
|
||||||
obj->top = *_curGobTopVarPtr;
|
obj->top = (int32) _curGobTopVarPtr;
|
||||||
obj->right = *_curGobRightVarPtr;
|
obj->right = (int32) _curGobRightVarPtr;
|
||||||
obj->bottom = *_curGobBottomVarPtr;
|
obj->bottom = (int32) _curGobBottomVarPtr;
|
||||||
obj->doAnim = *_curGobDoAnimVarPtr;
|
obj->doAnim = (int32) _curGobDoAnimVarPtr;
|
||||||
obj->order = *_curGobOrderVarPtr;
|
obj->order = (int32) _curGobOrderVarPtr;
|
||||||
obj->noTick = *_curGobNoTickVarPtr;
|
obj->noTick = (int32) _curGobNoTickVarPtr;
|
||||||
obj->type = *_curGobTypeVarPtr;
|
obj->type = (int32) _curGobTypeVarPtr;
|
||||||
obj->maxTick = *_curGobMaxTickVarPtr;
|
obj->maxTick = (int32) _curGobMaxTickVarPtr;
|
||||||
obj->tick = *_curGobTickVarPtr;
|
obj->tick = (int32) _curGobTickVarPtr;
|
||||||
obj->actionStartState = *_curGobActStartStateVarPtr;
|
obj->actionStartState = (int32) _curGobActStartStateVarPtr;
|
||||||
obj->curLookDir = *_curGobLookDirVarPtr;
|
obj->curLookDir = (int32) _curGobLookDirVarPtr;
|
||||||
obj->pickable = *_curGobPickableVarPtr;
|
obj->pickable = (int32) _curGobPickableVarPtr;
|
||||||
obj->relaxTime = *_curGobRelaxVarPtr;
|
obj->relaxTime = (int32) _curGobRelaxVarPtr;
|
||||||
|
|
||||||
if (_actDestItemDesc == 0)
|
if (_actDestItemDesc == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
obj = _actDestItemDesc;
|
obj = _actDestItemDesc;
|
||||||
|
|
||||||
obj->state = *_destItemStateVarPtr;
|
obj->state = (int32) _destItemStateVarPtr;
|
||||||
obj->curFrame = *_destItemFrameVarPtr;
|
obj->curFrame = (int32) _destItemFrameVarPtr;
|
||||||
obj->multState = *_destItemMultStateVarPtr;
|
obj->multState = (int32) _destItemMultStateVarPtr;
|
||||||
obj->nextState = *_destItemNextStateVarPtr;
|
obj->nextState = (int32) _destItemNextStateVarPtr;
|
||||||
obj->xPos = *_destItemScrXVarPtr;
|
obj->xPos = (int32) _destItemScrXVarPtr;
|
||||||
obj->yPos = *_destItemScrYVarPtr;
|
obj->yPos = (int32) _destItemScrYVarPtr;
|
||||||
obj->left = *_destItemLeftVarPtr;
|
obj->left = (int32) _destItemLeftVarPtr;
|
||||||
obj->top = *_destItemTopVarPtr;
|
obj->top = (int32) _destItemTopVarPtr;
|
||||||
obj->right = *_destItemRightVarPtr;
|
obj->right = (int32) _destItemRightVarPtr;
|
||||||
obj->bottom = *_destItemBottomVarPtr;
|
obj->bottom = (int32) _destItemBottomVarPtr;
|
||||||
obj->doAnim = *_destItemDoAnimVarPtr;
|
obj->doAnim = (int32) _destItemDoAnimVarPtr;
|
||||||
obj->order = *_destItemOrderVarPtr;
|
obj->order = (int32) _destItemOrderVarPtr;
|
||||||
obj->noTick = *_destItemNoTickVarPtr;
|
obj->noTick = (int32) _destItemNoTickVarPtr;
|
||||||
obj->type = *_destItemTypeVarPtr;
|
obj->type = (int32) _destItemTypeVarPtr;
|
||||||
obj->maxTick = *_destItemMaxTickVarPtr;
|
obj->maxTick = (int32) _destItemMaxTickVarPtr;
|
||||||
obj->tick = *_destItemTickVarPtr;
|
obj->tick = (int32) _destItemTickVarPtr;
|
||||||
obj->actionStartState = *_destItemActStartStVarPtr;
|
obj->actionStartState = (int32) _destItemActStartStVarPtr;
|
||||||
obj->curLookDir = *_destItemLookDirVarPtr;
|
obj->curLookDir = (int32) _destItemLookDirVarPtr;
|
||||||
obj->pickable = *_destItemPickableVarPtr;
|
obj->pickable = (int32) _destItemPickableVarPtr;
|
||||||
obj->relaxTime = *_destItemRelaxVarPtr;
|
obj->relaxTime = (int32) _destItemRelaxVarPtr;
|
||||||
|
|
||||||
if (obj->type != _destItemType)
|
if (obj->type != _destItemType)
|
||||||
obj->toRedraw = 1;
|
obj->toRedraw = 1;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue