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 Macintosh version of I Have no Mouth, and I
|
||||
must Scream
|
||||
- Added support for Drascula: The Vampire Strikes Back
|
||||
|
||||
General:
|
||||
- Added CAMD MIDI driver for AmigaOS4.
|
||||
- Revived the PS2 port (was already in 0.11.1 but was forgotten in the
|
||||
release notes).
|
||||
- Plugged numerous memory leaks in all engines (part of GSoC'08 task)
|
||||
|
||||
AGOS:
|
||||
- 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
|
||||
LIBS = -L$(ronindir)/lib -lmad -lronin -lz -lm
|
||||
EXECUTABLE = scummvm.elf
|
||||
DEPDIR = .deps
|
||||
PLUGIN_PREFIX =
|
||||
PLUGIN_SUFFIX = .plg
|
||||
PLUGIN_EXTRA_DEPS = plugin.x plugin.syms scummvm.elf
|
||||
|
@ -32,12 +33,37 @@ ifdef DYNAMIC_MODULES
|
|||
DEFINES += -DDYNAMIC_MODULES
|
||||
PRE_OBJS_FLAGS = -Wl,--whole-archive
|
||||
POST_OBJS_FLAGS = -Wl,--no-whole-archive
|
||||
ENABLED=DYNAMIC_PLUGIN
|
||||
else
|
||||
ENABLED=STATIC_PLUGIN
|
||||
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 \
|
||||
label.o vmsave.o softkbd.o dcloader.o cache.o dc-fs.o
|
||||
|
||||
MODULE_DIRS += .
|
||||
MODULE_DIRS += ./
|
||||
|
||||
include $(srcdir)/Makefile.common
|
||||
|
||||
|
|
|
@ -25,17 +25,18 @@
|
|||
|
||||
#include <common/scummsys.h>
|
||||
#include "engines/engine.h"
|
||||
#include "sound/mixer.h"
|
||||
#include "sound/mixer_intern.h"
|
||||
#include "dc.h"
|
||||
|
||||
EXTERN_C void *memcpy4s(void *s1, const void *s2, unsigned int n);
|
||||
|
||||
void initSound()
|
||||
uint OSystem_Dreamcast::initSound()
|
||||
{
|
||||
stop_sound();
|
||||
do_sound_command(CMD_SET_FREQ_EXP(FREQ_22050_EXP));
|
||||
do_sound_command(CMD_SET_STEREO(1));
|
||||
do_sound_command(CMD_SET_BUFFER(SOUND_BUFFER_SHIFT));
|
||||
return read_sound_int(&SOUNDSTATUS->freq);
|
||||
}
|
||||
|
||||
void OSystem_Dreamcast::checkSound()
|
||||
|
@ -61,7 +62,7 @@ void OSystem_Dreamcast::checkSound()
|
|||
if (n<100)
|
||||
return;
|
||||
|
||||
Audio::Mixer::mixCallback(_mixer, (byte*)temp_sound_buffer,
|
||||
_mixer->mixCallback((byte*)temp_sound_buffer,
|
||||
2*SAMPLES_TO_BYTES(n));
|
||||
|
||||
if (fillpos+n > curr_ring_buffer_samples) {
|
||||
|
@ -77,8 +78,4 @@ void OSystem_Dreamcast::checkSound()
|
|||
fillpos = 0;
|
||||
}
|
||||
|
||||
int OSystem_Dreamcast::getOutputSampleRate() const
|
||||
{
|
||||
return read_sound_int(&SOUNDSTATUS->freq);
|
||||
}
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include <ronin/soundcommon.h>
|
||||
#include "backends/timer/default/default-timer.h"
|
||||
#include "backends/fs/fs-factory.h"
|
||||
#include "sound/mixer_intern.h"
|
||||
|
||||
#define NUM_BUFFERS 4
|
||||
#define SOUND_BUFFER_SHIFT 3
|
||||
|
@ -195,7 +196,7 @@ class OSystem_Dreamcast : public OSystem, public FilesystemFactory {
|
|||
private:
|
||||
|
||||
Common::SaveFileManager *_savefile;
|
||||
Audio::Mixer *_mixer;
|
||||
Audio::MixerImpl *_mixer;
|
||||
DefaultTimerManager *_timer;
|
||||
SoftKeyboard _softkbd;
|
||||
|
||||
|
@ -223,6 +224,7 @@ class OSystem_Dreamcast : public OSystem, public FilesystemFactory {
|
|||
|
||||
int temp_sound_buffer[RING_BUFFER_SAMPLES>>SOUND_BUFFER_SHIFT];
|
||||
|
||||
uint initSound();
|
||||
void checkSound();
|
||||
|
||||
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,
|
||||
int &mouse_x, int &mouse_y,
|
||||
byte &shiftFlags, Interactive *inter = NULL);
|
||||
extern void initSound();
|
||||
extern bool selectGame(char *&, char *&, class Icon &);
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#include <common/config-manager.h>
|
||||
|
||||
#include "backends/plugins/dc/dc-provider.h"
|
||||
#include "sound/mixer.h"
|
||||
#include "sound/mixer_intern.h"
|
||||
|
||||
|
||||
Icon icon;
|
||||
|
@ -54,8 +54,10 @@ OSystem_Dreamcast::OSystem_Dreamcast()
|
|||
void OSystem_Dreamcast::initBackend()
|
||||
{
|
||||
_savefile = createSavefileManager();
|
||||
_mixer = new Audio::Mixer();
|
||||
_mixer = new Audio::MixerImpl(this);
|
||||
_timer = new DefaultTimerManager();
|
||||
_mixer->setOutputRate(initSound());
|
||||
_mixer->setReady(true);
|
||||
}
|
||||
|
||||
|
||||
|
@ -216,7 +218,6 @@ int main()
|
|||
static int argc = 1;
|
||||
|
||||
dc_init_hardware();
|
||||
initSound();
|
||||
|
||||
g_system = new OSystem_Dreamcast();
|
||||
assert(g_system);
|
||||
|
|
|
@ -25,7 +25,9 @@
|
|||
|
||||
#include <common/scummsys.h>
|
||||
#include <engines/engine.h>
|
||||
#include <engines/metaengine.h>
|
||||
#include <base/plugins.h>
|
||||
#include <base/game.h>
|
||||
#include <common/fs.h>
|
||||
#include <common/events.h>
|
||||
#include "dc.h"
|
||||
|
@ -149,15 +151,6 @@ struct Dir
|
|||
|
||||
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)
|
||||
{
|
||||
int l = entry.getDisplayName().size();
|
||||
|
@ -227,8 +220,7 @@ static int findGames(Game *games, int max)
|
|||
files.push_back(*entry);
|
||||
}
|
||||
|
||||
GameList candidates;
|
||||
detectGames(files, candidates);
|
||||
GameList candidates = EngineMan.detectGames(files);
|
||||
|
||||
for (GameList::const_iterator ge = candidates.begin();
|
||||
ge != candidates.end(); ++ge)
|
||||
|
|
|
@ -168,7 +168,7 @@ bool displayModeIs8Bit = false;
|
|||
u8 gameID;
|
||||
|
||||
bool snapToBorder = false;
|
||||
bool consoleEnable = false;
|
||||
bool consoleEnable = true;
|
||||
bool gameScreenSwap = false;
|
||||
bool isCpuScalerEnabled();
|
||||
//#define HEAVY_LOGGING
|
||||
|
@ -899,12 +899,6 @@ u16* get8BitBackBuffer() {
|
|||
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.
|
||||
// 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
|
||||
|
@ -914,7 +908,8 @@ void doSoundCallback() {
|
|||
consolePrintf("doSoundCallback...");
|
||||
#endif
|
||||
|
||||
if (soundCallback) {
|
||||
if (OSystem_DS::instance())
|
||||
if (OSystem_DS::instance()->getMixerImpl()) {
|
||||
lastCallbackFrame = frameCount;
|
||||
|
||||
for (int r = IPC->playingSection; r < IPC->playingSection + 4; r++) {
|
||||
|
@ -923,7 +918,7 @@ void doSoundCallback() {
|
|||
if (IPC->fillNeeded[chunk]) {
|
||||
IPC->fillNeeded[chunk] = false;
|
||||
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;
|
||||
DC_FlushAll();
|
||||
}
|
||||
|
|
|
@ -88,7 +88,6 @@ int getMillis(); // Return the current runtime in milliseconds
|
|||
void doTimerCallback(); // Call callback function if required
|
||||
|
||||
// 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 playSound(const void* data, u32 length, bool loop, bool adpcm = false, int rate = 22050); // Start a sound
|
||||
void stopSound(int channel);
|
||||
|
|
|
@ -67,11 +67,13 @@ void OSystem_DS::initBackend() {
|
|||
ConfMan.setInt("autosave_period", 0);
|
||||
ConfMan.setBool("FM_medium_quality", true);
|
||||
|
||||
_mixer = new DSAudioMixer;
|
||||
_timer = new DSTimerManager;
|
||||
DS::setSoundProc(Audio::Mixer::mixCallback, _mixer);
|
||||
_mixer = new DSAudioMixer(this);
|
||||
_timer = new DSTimerManager();
|
||||
DS::setTimerCallback(&OSystem_DS::timerHandler, 10);
|
||||
|
||||
_mixer->setOutputRate(11025 /*DS::getSoundFrequency()*/);
|
||||
_mixer->setReady(true);
|
||||
|
||||
OSystem::initBackend();
|
||||
}
|
||||
|
||||
|
@ -139,7 +141,7 @@ void OSystem_DS::setPalette(const byte *colors, uint start, uint num) {
|
|||
green >>= 3;
|
||||
blue >>= 3;
|
||||
|
||||
// if (r != 255)
|
||||
if (r != 255)
|
||||
{
|
||||
BG_PALETTE[r] = red | (green << 5) | (blue << 10);
|
||||
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
|
||||
|
||||
|
||||
u16* image = (u16 *) DS::get8BitBackBuffer();
|
||||
const u16* image = (const u16 *) DS::get8BitBackBuffer();
|
||||
for (int y = 0; y < DS::getGameHeight(); y++)
|
||||
{
|
||||
DC_FlushRange(image + (y << 8), DS::getGameWidth());
|
||||
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) {
|
||||
u16* bg = (u16 *) DS::get16BitBackBuffer();
|
||||
u16* src = (u16 *) buf;
|
||||
const u16* src = (const u16 *) buf;
|
||||
|
||||
// if (x + w > 256) w = 256 - x;
|
||||
//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::clearSoundCallback() {
|
||||
// consolePrintf("Clearing sound callback");
|
||||
// DS::setSoundProc(NULL, NULL);
|
||||
}
|
||||
|
||||
int OSystem_DS::getOutputSampleRate() const
|
||||
{
|
||||
int OSystem_DS::getOutputSampleRate() const {
|
||||
return DS::getSoundFrequency();
|
||||
}
|
||||
|
||||
|
|
|
@ -30,10 +30,13 @@
|
|||
#include "gbampsave.h"
|
||||
#include "backends/saves/default/default-saves.h"
|
||||
#include "backends/timer/default/default-timer.h"
|
||||
#include "sound/mixer.h"
|
||||
#include "sound/mixer_intern.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 {
|
||||
|
@ -62,7 +65,7 @@ protected:
|
|||
Graphics::Surface* createTempFrameBuffer();
|
||||
|
||||
public:
|
||||
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
||||
typedef void (*SoundProc)(byte *buf, int len);
|
||||
typedef int (*TimerProc)(int interval);
|
||||
|
||||
OSystem_DS();
|
||||
|
@ -114,7 +117,6 @@ public:
|
|||
virtual void unlockMutex(MutexRef mutex);
|
||||
virtual void deleteMutex(MutexRef mutex);
|
||||
|
||||
virtual void clearSoundCallback();
|
||||
virtual int getOutputSampleRate() const;
|
||||
|
||||
virtual bool openCD(int drive);
|
||||
|
@ -147,6 +149,8 @@ public:
|
|||
virtual void unlockScreen();
|
||||
|
||||
virtual Audio::Mixer* getMixer() { return _mixer; }
|
||||
Audio::MixerImpl* getMixerImpl() { return _mixer; }
|
||||
|
||||
virtual Common::TimerManager* getTimerManager() { return _timer; }
|
||||
static int timerHandler(int t);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#include "wordcompletion.h"
|
||||
#include "engines/agi/agi.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
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
ScummVM - GP2X SPECIFIC README - 0.10.0 SVN
|
||||
ScummVM - GP2X SPECIFIC README - HEAD SVN
|
||||
------------------------------------------------------------------------
|
||||
|
||||
Contents:
|
||||
|
|
|
@ -2,12 +2,15 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>ScummVM - GP2X SPECIFIC README</title>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<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>
|
||||
<hr style="width: 100%; height: 2px;"><br>
|
||||
|
@ -16,52 +19,65 @@
|
|||
|
||||
<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="#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="#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="#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>
|
||||
|
||||
</ul>
|
||||
|
||||
<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>
|
||||
|
||||
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>
|
||||
|
||||
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
|
||||
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>
|
||||
|
||||
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>
|
||||
|
||||
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>
|
||||
|
||||
|
@ -69,47 +85,59 @@ SVN builds are quickly tested with firmware 2.0.0 for reference.<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>
|
||||
|
||||
<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>
|
||||
|
||||
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>
|
||||
|
||||
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>
|
||||
|
||||
<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>
|
||||
|
||||
Just because an engine is included does not mean any/all of its games
|
||||
are supported. Please check game compatability for more infomation.<br>
|
||||
|
||||
<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>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
|
||||
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
|
||||
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>
|
||||
|
||||
|
@ -155,13 +183,18 @@ DXA video support will be added as soon as it is stable.<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>
|
||||
|
||||
|
@ -169,7 +202,9 @@ Note: This will cause the game to run with a black border at the bottom as it wi
|
|||
|
||||
<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>
|
||||
|
||||
|
@ -178,7 +213,8 @@ same place as the ScummVM executable.<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>
|
||||
|
||||
|
@ -198,11 +234,13 @@ In Game.<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>
|
||||
|
||||
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>
|
||||
|
||||
|
@ -262,9 +300,11 @@ Select: Exit ScummVM completely (and gracefully)<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>
|
||||
|
||||
|
@ -272,11 +312,14 @@ It happens very infrequently, both times it was in the DOTT CD intro. Saving oft
|
|||
|
||||
<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>
|
||||
|
||||
|
@ -284,17 +327,29 @@ Any help appreciated :).<br>
|
|||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
|
|
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.
|
||||
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
|
||||
#--enable-plugins
|
||||
./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 --default-dynamic
|
||||
|
||||
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>
|
||||
|
||||
namespace Audio {
|
||||
class Mixer;
|
||||
class MixerImpl;
|
||||
}
|
||||
|
||||
namespace Common {
|
||||
|
@ -128,12 +128,10 @@ public:
|
|||
virtual bool pollEvent(Common::Event &event); // overloaded by CE backend
|
||||
|
||||
// Set function that generates samples
|
||||
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
||||
virtual bool setSoundCallback(SoundProc proc, void *param); // overloaded by CE backend
|
||||
void setupMixer();
|
||||
static void mixCallback(void *s, byte *samples, int len);
|
||||
virtual Audio::Mixer *getMixer();
|
||||
|
||||
void clearSoundCallback();
|
||||
|
||||
// Poll CD status
|
||||
// Returns true if cd audio is playing
|
||||
bool pollCD();
|
||||
|
@ -181,7 +179,6 @@ public:
|
|||
int getGraphicsMode() const;
|
||||
|
||||
bool openCD(int drive);
|
||||
int getOutputSampleRate() const;
|
||||
|
||||
bool hasFeature(Feature f);
|
||||
void setFeatureState(Feature f, bool enable);
|
||||
|
@ -369,7 +366,7 @@ protected:
|
|||
Common::SaveFileManager *_savefile;
|
||||
FilesystemFactory *getFilesystemFactory();
|
||||
|
||||
Audio::Mixer *_mixer;
|
||||
Audio::MixerImpl *_mixer;
|
||||
|
||||
SDL_TimerID _timerID;
|
||||
Common::TimerManager *_timer;
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
#include "backends/timer/default/default-timer.h"
|
||||
#include "backends/plugins/posix/posix-provider.h"
|
||||
#include "backends/fs/posix/posix-fs-factory.h" // for getFilesystemFactory()
|
||||
#include "sound/mixer.h"
|
||||
#include "sound/mixer_intern.h"
|
||||
|
||||
#include <stdio.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
|
||||
// allow subclasses to provide their own).
|
||||
if (_mixer == 0) {
|
||||
_mixer = new Audio::Mixer();
|
||||
setSoundCallback(Audio::Mixer::mixCallback, _mixer);
|
||||
setupMixer();
|
||||
}
|
||||
|
||||
// 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 -
|
||||
|
||||
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 obtained;
|
||||
|
||||
memset(&desired, 0, sizeof(desired));
|
||||
//memset(&desired, 0, sizeof(desired));
|
||||
|
||||
// Determine the desired output sampling frequency.
|
||||
_samplesPerSec = 0;
|
||||
|
||||
if (ConfMan.hasKey("output_rate"))
|
||||
_samplesPerSec = ConfMan.getInt("output_rate");
|
||||
|
||||
if (_samplesPerSec <= 0)
|
||||
_samplesPerSec = SAMPLES_PER_SEC;
|
||||
|
||||
|
||||
//Quick EVIL Hack - DJWillis
|
||||
_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.format = AUDIO_S16SYS;
|
||||
desired.channels = 2;
|
||||
//desired.samples = (uint16)samples;
|
||||
desired.samples = 128; // Samples hack
|
||||
desired.callback = proc;
|
||||
desired.userdata = param;
|
||||
desired.callback = mixCallback;
|
||||
desired.userdata = this;
|
||||
|
||||
// Create the mixer instance
|
||||
assert(!_mixer);
|
||||
_mixer = new Audio::MixerImpl(this);
|
||||
assert(_mixer);
|
||||
|
||||
if (SDL_OpenAudio(&desired, &obtained) != 0) {
|
||||
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;
|
||||
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);
|
||||
return true;
|
||||
}
|
||||
|
||||
void OSystem_GP2X::clearSoundCallback() {
|
||||
SDL_CloseAudio();
|
||||
}
|
||||
|
||||
int OSystem_GP2X::getOutputSampleRate() const {
|
||||
return _samplesPerSec;
|
||||
}
|
||||
|
||||
Audio::Mixer *OSystem_GP2X::getMixer() {
|
||||
|
|
|
@ -1128,10 +1128,6 @@ bool OSystem_IPHONE::setSoundCallback(SoundProc proc, void *param) {
|
|||
return true;
|
||||
}
|
||||
|
||||
void OSystem_IPHONE::clearSoundCallback() {
|
||||
debug("clearSoundCallback()\n");
|
||||
}
|
||||
|
||||
int OSystem_IPHONE::getOutputSampleRate() const {
|
||||
return AUDIO_SAMPLE_RATE;
|
||||
}
|
||||
|
|
|
@ -153,7 +153,6 @@ public:
|
|||
virtual void deleteMutex(MutexRef mutex);
|
||||
|
||||
virtual bool setSoundCallback(SoundProc proc, void *param);
|
||||
virtual void clearSoundCallback();
|
||||
virtual int getOutputSampleRate() const;
|
||||
virtual void setTimerCallback(TimerProc callback, int interval);
|
||||
|
||||
|
|
|
@ -28,18 +28,37 @@
|
|||
|
||||
#if defined(USE_NULL_DRIVER)
|
||||
|
||||
#ifdef UNIX
|
||||
#include <unistd.h>
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#include "common/rect.h"
|
||||
|
||||
#include "backends/saves/default/default-saves.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 {
|
||||
protected:
|
||||
Common::SaveFileManager *_savefile;
|
||||
Audio::Mixer *_mixer;
|
||||
Audio::MixerImpl *_mixer;
|
||||
Common::TimerManager *_timer;
|
||||
|
||||
timeval _startTime;
|
||||
public:
|
||||
|
||||
OSystem_NULL();
|
||||
|
@ -93,8 +112,6 @@ public:
|
|||
|
||||
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
||||
virtual bool setSoundCallback(SoundProc proc, void *param);
|
||||
virtual void clearSoundCallback();
|
||||
virtual int getOutputSampleRate() const;
|
||||
|
||||
virtual void quit();
|
||||
|
||||
|
@ -104,6 +121,8 @@ public:
|
|||
virtual Audio::Mixer *getMixer();
|
||||
virtual void getTimeAndDate(struct tm &t) const;
|
||||
virtual Common::TimerManager *getTimerManager();
|
||||
FilesystemFactory *getFilesystemFactory();
|
||||
|
||||
};
|
||||
|
||||
static const OSystem::GraphicsMode s_supportedGraphicsModes[] = {
|
||||
|
@ -124,9 +143,14 @@ OSystem_NULL::~OSystem_NULL() {
|
|||
|
||||
void OSystem_NULL::initBackend() {
|
||||
_savefile = new DefaultSaveFileManager();
|
||||
_mixer = new Audio::Mixer();
|
||||
_mixer = new Audio::MixerImpl(this);
|
||||
_timer = new DefaultTimerManager();
|
||||
|
||||
_mixer->setOutputRate(22050);
|
||||
_mixer->setReady(false);
|
||||
|
||||
gettimeofday(&_startTime, NULL);
|
||||
|
||||
// Note that both the mixer and the timer manager are useless
|
||||
// this way; they need to be hooked into the system somehow to
|
||||
// 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() {
|
||||
#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;
|
||||
#endif
|
||||
}
|
||||
|
||||
void OSystem_NULL::delayMillis(uint msecs) {
|
||||
#ifdef UNIX
|
||||
usleep(msecs * 1000);
|
||||
#endif
|
||||
}
|
||||
|
||||
OSystem::MutexRef OSystem_NULL::createMutex(void) {
|
||||
|
@ -268,13 +302,6 @@ bool OSystem_NULL::setSoundCallback(SoundProc proc, void *param) {
|
|||
return true;
|
||||
}
|
||||
|
||||
void OSystem_NULL::clearSoundCallback() {
|
||||
}
|
||||
|
||||
int OSystem_NULL::getOutputSampleRate() const {
|
||||
return 22050;
|
||||
}
|
||||
|
||||
void OSystem_NULL::quit() {
|
||||
}
|
||||
|
||||
|
@ -299,6 +326,19 @@ Common::TimerManager *OSystem_NULL::getTimerManager() {
|
|||
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() {
|
||||
return new OSystem_NULL();
|
||||
}
|
||||
|
|
|
@ -727,7 +727,6 @@ void OSystem_PS2::quit(void) {
|
|||
driveStandby();
|
||||
fio.umount("pfs0:");
|
||||
}
|
||||
//clearSoundCallback();
|
||||
//setTimerCallback(NULL, 0);
|
||||
_screen->wantAnim(false);
|
||||
_systemQuit = true;
|
||||
|
|
|
@ -2,10 +2,36 @@
|
|||
# $URL$
|
||||
# $Id$
|
||||
|
||||
ENABLED=STATIC_PLUGIN
|
||||
|
||||
#control build
|
||||
DISABLE_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 = ../../..
|
||||
VPATH = $(srcdir)
|
||||
HAVE_GCC3 = false
|
||||
|
@ -63,6 +89,8 @@ OBJS := psp_main.o \
|
|||
kbd_l_c.o \
|
||||
trace.o
|
||||
|
||||
DEPDIR = .deps
|
||||
|
||||
include $(srcdir)/Makefile.common
|
||||
|
||||
PSP_EBOOT_SFO = param.sfo
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
#include "backends/timer/default/default-timer.h"
|
||||
#include "graphics/surface.h"
|
||||
#include "graphics/scaler.h"
|
||||
#include "sound/mixer.h"
|
||||
#include "sound/mixer_intern.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));
|
||||
|
||||
|
@ -99,11 +99,11 @@ OSystem_PSP::~OSystem_PSP() {
|
|||
|
||||
void OSystem_PSP::initBackend() {
|
||||
_savefile = new DefaultSaveFileManager();
|
||||
_mixer = new Audio::Mixer();
|
||||
_timer = new DefaultTimerManager();
|
||||
setSoundCallback(Audio::Mixer::mixCallback, _mixer);
|
||||
setTimerCallback(&timer_handler, 10);
|
||||
|
||||
setupMixer();
|
||||
|
||||
OSystem::initBackend();
|
||||
}
|
||||
|
||||
|
@ -586,7 +586,15 @@ void OSystem_PSP::deleteMutex(MutexRef 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 obtained;
|
||||
|
||||
|
@ -613,29 +621,33 @@ bool OSystem_PSP::setSoundCallback(SoundProc proc, void *param) {
|
|||
desired.format = AUDIO_S16SYS;
|
||||
desired.channels = 2;
|
||||
desired.samples = samples;
|
||||
desired.callback = proc;
|
||||
desired.userdata = param;
|
||||
desired.callback = mixCallback;
|
||||
desired.userdata = this;
|
||||
|
||||
assert(!_mixer);
|
||||
_mixer = new Audio::MixerImpl(this);
|
||||
assert(_mixer);
|
||||
|
||||
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
|
||||
// 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;
|
||||
|
||||
// Tell the mixer that we are ready and start the sound processing
|
||||
_mixer->setOutputRate(_samplesPerSec);
|
||||
_mixer->setReady(true);
|
||||
|
||||
SDL_PauseAudio(0);
|
||||
return true;
|
||||
}
|
||||
|
||||
void OSystem_PSP::clearSoundCallback() {
|
||||
SDL_CloseAudio();
|
||||
}
|
||||
|
||||
int OSystem_PSP::getOutputSampleRate() const {
|
||||
return _samplesPerSec;
|
||||
}
|
||||
|
||||
void OSystem_PSP::quit() {
|
||||
clearSoundCallback();
|
||||
SDL_CloseAudio();
|
||||
SDL_Quit();
|
||||
sceGuTerm();
|
||||
sceKernelExitGame();
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "common/scummsys.h"
|
||||
#include "common/system.h"
|
||||
#include "graphics/surface.h"
|
||||
#include "sound/mixer_intern.h"
|
||||
#include "backends/fs/psp/psp-fs-factory.h"
|
||||
|
||||
|
||||
|
@ -71,7 +72,7 @@ protected:
|
|||
SceCtrlData pad;
|
||||
|
||||
Common::SaveFileManager *_savefile;
|
||||
Audio::Mixer *_mixer;
|
||||
Audio::MixerImpl *_mixer;
|
||||
Common::TimerManager *_timer;
|
||||
|
||||
public:
|
||||
|
@ -129,10 +130,8 @@ public:
|
|||
virtual void unlockMutex(MutexRef mutex);
|
||||
virtual void deleteMutex(MutexRef mutex);
|
||||
|
||||
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
||||
virtual bool setSoundCallback(SoundProc proc, void *param);
|
||||
virtual void clearSoundCallback();
|
||||
virtual int getOutputSampleRate() const;
|
||||
static void mixCallback(void *sys, byte *samples, int len);
|
||||
virtual void setupMixer(void);
|
||||
|
||||
Common::SaveFileManager *getSavefileManager() { return _savefile; }
|
||||
Audio::Mixer *getMixer() { return _mixer; }
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
#include "backends/saves/default/default-saves.h"
|
||||
#include "backends/timer/default/default-timer.h"
|
||||
#include "sound/mixer.h"
|
||||
#include "sound/mixer_intern.h"
|
||||
|
||||
#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
|
||||
// allow subclasses to provide their own).
|
||||
if (_mixer == 0) {
|
||||
_mixer = new Audio::Mixer();
|
||||
bool result = setSoundCallback(Audio::Mixer::mixCallback, _mixer);
|
||||
_mixer->setReady(result);
|
||||
setupMixer();
|
||||
}
|
||||
|
||||
// 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 -
|
||||
|
||||
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 obtained;
|
||||
|
||||
|
@ -403,7 +409,7 @@ bool OSystem_SDL::setSoundCallback(SoundProc proc, void *param) {
|
|||
_samplesPerSec = SAMPLES_PER_SEC;
|
||||
|
||||
// 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.
|
||||
int samples = 8192;
|
||||
while (16 * samples >= _samplesPerSec) {
|
||||
|
@ -415,23 +421,30 @@ bool OSystem_SDL::setSoundCallback(SoundProc proc, void *param) {
|
|||
desired.format = AUDIO_S16SYS;
|
||||
desired.channels = 2;
|
||||
desired.samples = (uint16)samples;
|
||||
desired.callback = proc;
|
||||
desired.userdata = param;
|
||||
desired.callback = mixCallback;
|
||||
desired.userdata = this;
|
||||
|
||||
// Create the mixer instance
|
||||
assert(!_mixer);
|
||||
_mixer = new Audio::MixerImpl(this);
|
||||
assert(_mixer);
|
||||
|
||||
if (SDL_OpenAudio(&desired, &obtained) != 0) {
|
||||
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;
|
||||
debug(1, "Output sample rate: %d Hz", _samplesPerSec);
|
||||
SDL_PauseAudio(0);
|
||||
return true;
|
||||
}
|
||||
|
||||
int OSystem_SDL::getOutputSampleRate() const {
|
||||
return _samplesPerSec;
|
||||
// Tell the mixer that we are ready and start the sound processing
|
||||
_mixer->setOutputRate(_samplesPerSec);
|
||||
_mixer->setReady(true);
|
||||
SDL_PauseAudio(0);
|
||||
}
|
||||
}
|
||||
|
||||
Audio::Mixer *OSystem_SDL::getMixer() {
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
|
||||
|
||||
namespace Audio {
|
||||
class Mixer;
|
||||
class MixerImpl;
|
||||
}
|
||||
|
||||
namespace Common {
|
||||
|
@ -134,8 +134,9 @@ public:
|
|||
virtual bool pollEvent(Common::Event &event); // overloaded by CE backend
|
||||
|
||||
// Set function that generates samples
|
||||
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
||||
virtual bool setSoundCallback(SoundProc proc, void *param); // overloaded by CE backend
|
||||
virtual void setupMixer();
|
||||
static void mixCallback(void *s, byte *samples, int len);
|
||||
|
||||
virtual Audio::Mixer *getMixer();
|
||||
|
||||
// Poll CD status
|
||||
|
@ -186,7 +187,6 @@ public:
|
|||
|
||||
virtual void setWindowCaption(const char *caption);
|
||||
virtual bool openCD(int drive);
|
||||
virtual int getOutputSampleRate() const;
|
||||
|
||||
virtual bool hasFeature(Feature f);
|
||||
virtual void setFeatureState(Feature f, bool enable);
|
||||
|
@ -371,7 +371,7 @@ protected:
|
|||
|
||||
|
||||
Common::SaveFileManager *_savefile;
|
||||
Audio::Mixer *_mixer;
|
||||
Audio::MixerImpl *_mixer;
|
||||
|
||||
SDL_TimerID _timerID;
|
||||
Common::TimerManager *_timer;
|
||||
|
|
|
@ -6,31 +6,37 @@ chdir("../../../");
|
|||
|
||||
# list of project files to process
|
||||
@mmp_files = (
|
||||
"mmp/scummvm_scumm.mmp",
|
||||
"mmp/scummvm_queen.mmp",
|
||||
"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",
|
||||
|
||||
# Engine Project files
|
||||
"mmp/scummvm_agi.mmp",
|
||||
"mmp/scummvm_touche.mmp",
|
||||
"mmp/scummvm_parallaction.mmp",
|
||||
"mmp/scummvm_agos.mmp",
|
||||
"mmp/scummvm_cine.mmp",
|
||||
"mmp/scummvm_cruise.mmp",
|
||||
"mmp/scummvm_drascula.mmp",
|
||||
"mmp/scummvm_gob.mmp",
|
||||
"mmp/scummvm_igor.mmp",
|
||||
"mmp/scummvm_made.mmp",
|
||||
"mmp/scummvm_kyra.mmp",
|
||||
"mmp/scummvm_lure.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",
|
||||
"S60v3/ScummVM_S60v3.mmp",
|
||||
"S80/ScummVM_S80.mmp",
|
||||
"S90/ScummVM_S90.mmp",
|
||||
"UIQ2/ScummVM_UIQ2.mmp",
|
||||
"UIQ3/ScummVM_UIQ3.mmp"
|
||||
|
||||
);
|
||||
|
||||
# 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();
|
||||
|
||||
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 @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
|
||||
my @excludes_snd = (
|
||||
"mt32",
|
||||
"fluidsynth",
|
||||
"i386",
|
||||
"part.cpp",
|
||||
"partial.cpp",
|
||||
"partialmanager.cpp",
|
||||
"mt32.*",
|
||||
"fluidsynth.cpp",
|
||||
"i386.cpp",
|
||||
"part.*",
|
||||
"synth.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 = (
|
||||
"iff.cpp"
|
||||
);
|
||||
|
||||
# the USE_ARM_* defines not parsed correctly, exclude manually:
|
||||
my @excludes_scumm = (
|
||||
"codec47ARM.cpp",
|
||||
"gfxARM.cpp",
|
||||
"proc3arm.cpp"
|
||||
".*ARM.*", # the *ARM.s files are added in .mpp files based on WINS/ARM build!
|
||||
# USE_ARM_SMUSH_ASM codec47ARM.s
|
||||
# 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])
|
||||
ParseModule("_base", "base", \@section_empty); # now in ./TRG/ScummVM_TRG.mmp, these never change anyways...
|
||||
ParseModule("_base", "common", \@section_empty);
|
||||
|
@ -156,6 +169,7 @@ sub CheckForModuleMK
|
|||
if (-f $item and $item =~ /.*\/module.mk$/)
|
||||
{
|
||||
my $sec = "";
|
||||
my $isenable;
|
||||
my $ObjectsSelected = 0;
|
||||
my $ObjectsTotal = 0;
|
||||
|
||||
|
@ -170,11 +184,21 @@ sub CheckForModuleMK
|
|||
|
||||
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
|
||||
if ($line =~ /^ifdef (.*)/)
|
||||
{
|
||||
$sec = $1;
|
||||
$isenable = 1;
|
||||
}
|
||||
if ($line =~ /^ifndef (.*)/)
|
||||
{
|
||||
$sec = $1;
|
||||
$isenable = 0;
|
||||
}
|
||||
|
||||
# found an object? Not uncommented!
|
||||
if (!($line =~ /^#/) && $line =~ s/\.o/.cpp/)
|
||||
{
|
||||
|
@ -193,20 +217,40 @@ sub CheckForModuleMK
|
|||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
# do we need to skip this file? According to MACROs in .MMPs
|
||||
foreach $DisableDefine (@DisableDefines)
|
||||
# do we need to do this file? According to MACROs in .MMPs
|
||||
my $found = 0;
|
||||
foreach $EnableDefine (@EnabledDefines)
|
||||
{
|
||||
if ($DisableDefine eq $section && $section ne '')
|
||||
if (($EnableDefine eq $section) && ($section ne ''))
|
||||
{
|
||||
print "\n !$line (excluded, MACRO $DisableDefine)";
|
||||
next A;
|
||||
$found = 1;
|
||||
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++;
|
||||
#print "\n $line";
|
||||
|
@ -296,26 +340,39 @@ sub UpdateSlaveMacros
|
|||
# this macro enabled? then also add the .lib
|
||||
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_/);
|
||||
}
|
||||
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" if ($macro =~ /^DISABLE_/);
|
||||
$libs_first .= "STATICLIBRARY $lib\n";
|
||||
|
||||
# add projects for BLD.INF's
|
||||
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++;
|
||||
}
|
||||
|
||||
# not commented out? then add the macro to output string
|
||||
if ($line =~ /^\s*MACRO\s*([0-9A-Z_]*)\s*/)
|
||||
{
|
||||
my $macro = $1;
|
||||
$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
|
||||
|
||||
# the dir containing the build files: '.\backends\platforms\symbian\$SDK_BuildDir\'
|
||||
$SDK_BuildDirs{'UIQ2'} = "UIQ2";
|
||||
$SDK_BuildDirs{'UIQ3'} = "UIQ3";
|
||||
$SDK_BuildDirs{'S60v1'} = "S60";
|
||||
|
@ -16,6 +17,7 @@ $SDK_BuildDirs{'S60v3'} = "S60v3";
|
|||
$SDK_BuildDirs{'S80'} = "S80";
|
||||
$SDK_BuildDirs{'S90'} = "S90";
|
||||
|
||||
# the target name inserted here: 'abld BUILD $SDK_TargetName UREL'
|
||||
$SDK_TargetName{'UIQ2'} = "armi";
|
||||
$SDK_TargetName{'UIQ3'} = "gcce";
|
||||
$SDK_TargetName{'S60v1'}= "armi";
|
||||
|
@ -24,6 +26,7 @@ $SDK_TargetName{'S60v3'}= "gcce";
|
|||
$SDK_TargetName{'S80'} = "armi";
|
||||
$SDK_TargetName{'S90'} = "armi";
|
||||
|
||||
# Binaries are installed here: '$SDK_RootDirs\epoc32\release\$SDK_TargetDir\urel\'
|
||||
$SDK_TargetDir{'UIQ2'} = "armi";
|
||||
$SDK_TargetDir{'UIQ3'} = "armv5";
|
||||
$SDK_TargetDir{'S60v1'} = "armi";
|
||||
|
@ -34,11 +37,11 @@ $SDK_TargetDir{'S90'} = "armi";
|
|||
|
||||
$build_dir = getcwd();
|
||||
$output_dir = "$build_dir/Packages";
|
||||
chdir("../../");
|
||||
chdir("../../../");
|
||||
$base_dir = getcwd();
|
||||
chdir($build_dir);
|
||||
$build_log_out = "$build_dir/Build.out.log";
|
||||
$build_log_err = "$build_dir/Build.err.log";
|
||||
$build_log_out = "$build_dir/out.build.out.log"; # don't start these files with "Build"
|
||||
$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
|
||||
|
||||
|
@ -54,22 +57,44 @@ $PackagesUploaded = 0;
|
|||
@ErrorMessages = ();
|
||||
$ftp_url = "FTP://$FTP_User\@$FTP_Host/$FTP_Dir/";
|
||||
|
||||
# these macros are always defined:
|
||||
$ExtraMacros = "MACRO NONSTANDARD_PORT\n";
|
||||
$ExtraMacros .= "MACRO DISABLE_FANCY_THEMES\n";
|
||||
$ExtraMacros .= "MACRO DISABLE_SCALERS\n";
|
||||
$ExtraMacros .= "MACRO DISABLE_HQ_SCALERS\n";
|
||||
|
||||
# prep nice list of SDKs
|
||||
#while( ($SDK, $RootDir) = each(%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";
|
||||
}
|
||||
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
|
||||
while( ($SDK, $Value) = each(%SDK_LibraryDirs) )
|
||||
{
|
||||
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))
|
||||
|
@ -78,10 +103,37 @@ foreach $Library (sort keys(%PresentLibs))
|
|||
}
|
||||
|
||||
# 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" : "");
|
||||
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)
|
||||
{
|
||||
# do we already have this one?
|
||||
next if (-e $SDK_RootDirs{$SDK2}."\\epoc32\\release\\$SDK_TargetDir{$SDK2}\\urel\\$Library");
|
||||
|
||||
$LibrariesQueued++;
|
||||
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)
|
||||
{
|
||||
# do we already have this one?
|
||||
next if (-e $SDK_RootDirs{$SDK}."\\epoc32\\release\\$SDK_TargetDir{$SDK}\\urel\\$Library");
|
||||
|
||||
$LibrariesQueued++;
|
||||
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
|
||||
|
||||
|
@ -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
|
||||
sub DoLibrary
|
||||
{
|
||||
|
@ -286,8 +443,8 @@ my $header = "
|
|||
PrintMessage("Cleaning for $Target") if (!$ReallyQuiet);
|
||||
system("bldmake bldfiles > NUL 2> NUL");
|
||||
PrintErrorMessage("'bldmake bldfiles' exited with value " . ($? >> 8)) if ($? >> 8);
|
||||
system("abld clean $TargetName urel > NUL 2> NUL");
|
||||
PrintErrorMessage("'abld clean $TargetName urel' exited with value " . ($? >> 8)) if ($? >> 8);
|
||||
system("abld CLEAN $TargetName UREL > NUL 2> NUL");
|
||||
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!
|
||||
if (-e $TargetFilePath) { unlink($TargetFilePath) or PrintErrorMessage("Removing $TargetFilePath"); }
|
||||
|
||||
|
@ -298,10 +455,10 @@ my $header = "
|
|||
|
||||
my $OldSize = (-s $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);
|
||||
# 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
|
||||
PrintMessage("Done.") if (!$ReallyQuiet);
|
||||
|
||||
|
@ -318,7 +475,7 @@ my $header = "
|
|||
}
|
||||
else
|
||||
{
|
||||
PrintErrorMessage("'abld build $TargetName urel' apparently failed.");
|
||||
PrintErrorMessage("'abld BUILD $TargetName UREL' apparently failed.");
|
||||
if ($HaltOnError)
|
||||
{
|
||||
PrintErrorMessage("Halting on error as requested!");
|
||||
|
@ -449,12 +606,14 @@ sub BuildVariation()
|
|||
if (-e $UnlinkFile) { unlink($UnlinkFile) or PrintErrorMessage("Removing $UnlinkFile"); }
|
||||
$UnlinkFile = $SDK_RootDirs{$SDK}."/epoc32/release/$TargetDir/urel/ScummVM.exe";
|
||||
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");
|
||||
PrintErrorMessage("'bldmake bldfiles' exited with value " . ($? >> 8)) if ($? >> 8);
|
||||
|
||||
system("abld clean $TargetName urel 2> NUL > NUL");
|
||||
PrintErrorMessage("'abld clean $TargetName urel' exited with value " . ($? >> 8)) if ($? >> 8);
|
||||
system("abld CLEAN $TargetName UREL 2> NUL > NUL");
|
||||
PrintErrorMessage("'abld CLEAN $TargetName UREL' exited with value " . ($? >> 8)) if ($? >> 8);
|
||||
|
||||
my $Redirection = "OUT:file, ERR:".($RedirectSTDERR ? "file" : "screen");
|
||||
my $Message = "Building $Package ($Redirection)";
|
||||
|
@ -463,10 +622,10 @@ sub BuildVariation()
|
|||
|
||||
my $OldSize = (-s $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);
|
||||
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
|
||||
PrintMessage("Done.") if (!$ReallyQuiet);
|
||||
|
||||
|
@ -574,6 +733,7 @@ sub PrepSdkPaths()
|
|||
|
||||
# set env stuff
|
||||
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 .= "$EPOC32RT\\include;";
|
||||
$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
|
||||
$DefaultTopMacros = "
|
||||
MACRO USE_ZLIB // LIB:zlib.lib
|
||||
MACRO USE_MAD // LIB:libmad.lib
|
||||
//MACRO USE_MAD // LIB:libmad.lib
|
||||
MACRO USE_TREMOR // LIB:libtremor.lib
|
||||
";
|
||||
|
||||
|
@ -13,63 +45,75 @@
|
|||
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 "BRAAMBOOK")
|
||||
if ($ENV{'COMPUTERNAME'} eq "PC-21") #########################################################################
|
||||
{
|
||||
# might use this string for file/dir naming in the future :)
|
||||
$Producer = "SumthinWicked";
|
||||
$RedirectSTDERR = 0;
|
||||
$HaltOnError = 1;
|
||||
$HaltOnError = 0;
|
||||
$SkipExistingPackages = 0;
|
||||
$ReallyQuiet = 0;
|
||||
$DevBase = "C:\\S";
|
||||
|
||||
# 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_User = "something";
|
||||
$FTP_Pass = "password";
|
||||
$FTP_Dir = "cvsbuilds";
|
||||
|
||||
# What Platform SDKs are installed on this machine?
|
||||
# possible SDKs: ("UIQ2", UIQ3", "S60v1", "S60v2", "S60v3", "S80", "S90")
|
||||
# Note1: the \epoc32 directory needs to be in these rootdirs
|
||||
# Note2: these paths do NOT end in a backslash!
|
||||
$SDK_RootDirs{'UIQ2'} = "C:\\S\\UIQ_21";
|
||||
$SDK_RootDirs{'S60v1'} = "C:\\S\\S60v1";
|
||||
$SDK_RootDirs{'S60v2'} = "C:\\S\\S60v2";
|
||||
$SDK_RootDirs{'S80'} = "C:\\S\\S80";
|
||||
$SDK_RootDirs{'S90'} = "C:\\S\\S90";
|
||||
$ECompXL_BinDir = "C:\\S\\ECompXL\\bin"; # only needed for UIQ
|
||||
# you need to specify each of the SDKs used in the blocks below!
|
||||
# $SDK_RootDirs{'UIQ2'} = "$DevBase\\UIQ_21";
|
||||
$SDK_RootDirs{'UIQ3'} = "$DevBase\\UIQ3";
|
||||
# $SDK_RootDirs{'S60v1'} = "$DevBase\\S60v1";
|
||||
# $SDK_RootDirs{'S60v2'} = "$DevBase\\S60v2";
|
||||
$SDK_RootDirs{'S60v3'} = "$DevBase\\S60v3";
|
||||
# $SDK_RootDirs{'S80'} = "$DevBase\\S80";
|
||||
# $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
|
||||
# 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
|
||||
{
|
||||
#$SDK_LibraryDirs{'ALL'}{'zlib.lib'} = "C:\\S\\zlib-1.2.2\\epoc";
|
||||
#$SDK_LibraryDirs{'ALL'}{'libmad.lib'} = "C:\\S\\libmad-0.15.1b\\group";
|
||||
#$SDK_LibraryDirs{'ALL'}{'libtremor.lib'}= "C:\\S\\tremor\\epoc";
|
||||
$SDK_LibraryDirs{'UIQ2'}{'esdl.lib'} = $SDK_LibraryDirs{'UIQ3'}{'esdl.lib'} = "C:\\S\\ESDL\\epoc\\UIQ";
|
||||
#$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";
|
||||
#$SDK_LibraryDirs{'S90'}{'esdl.lib'} = "C:\\S\\ESDL\\epoc\\S90";
|
||||
#$SDK_LibraryDirs{'ALL'}{'libmpeg2.lib'} = "C:\\S\\mpeg2dec-0.4.0\\epoc";
|
||||
## Standard libraries
|
||||
$SDK_LibraryDirs{'ALL'}{'zlib.lib'} = "$DevBase\\zlib-1.2.2\\epoc";
|
||||
#$SDK_LibraryDirs{'ALL'}{'libmad.lib'} = "$DevBase\\libmad-0.15.1b\\group";
|
||||
$SDK_LibraryDirs{'ALL'}{'libtremor.lib'}= "$DevBase\\tremor\\epoc";
|
||||
|
||||
## SDL 1.2.12 / AnotherGuest / Symbian version
|
||||
my $SdlBase = "$DevBase\\SDL-1.2.12-ag\\Symbian";
|
||||
#$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
|
||||
#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
|
||||
#m Files\WinSCP3\;"C:\Program Files\Common Files\Microsoft Shared\VSA\8.0\VsaEnv\";"c:\Program Files\Microsoft Visual Stu
|
||||
#dio 8\VC\bin";"C:\Program Files\UltraEdit-32"
|
||||
# now you can add $VariationSets only built on this PC below this line :)
|
||||
|
||||
#$VariationSets{'ALL'}{'scumm'} = "$DefaultFeatures scumm scumm_7_8 he";
|
||||
#$VariationSets{'ALL'}{'all'} = "$DefaultFeatures @WorkingEngines @EnablableSubEngines";
|
||||
|
||||
}
|
||||
elsif ($ENV{'COMPUTERNAME'} eq "TSSLND0106")
|
||||
elsif ($ENV{'COMPUTERNAME'} eq "TSSLND0106") #################################################################
|
||||
{
|
||||
$Producer = "AnotherGuest";
|
||||
$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{'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";
|
||||
$RedirectSTDERR = 1;
|
||||
|
@ -116,14 +162,14 @@ elsif ($ENV{'COMPUTERNAME'} eq "BIGMACHINE")
|
|||
#$FTP_Pass = "password";
|
||||
#$FTP_Dir = "cvsbuilds";
|
||||
|
||||
#$SDK_RootDirs{'UIQ2'}= "E:\\UIQ2";
|
||||
$SDK_RootDirs{'UIQ3'}= "E:\\UIQ3";
|
||||
#$SDK_RootDirs{'S60v1'}= "E:\\S60v1";
|
||||
#$SDK_RootDirs{'S60v2'}= "E:\\S60v2";
|
||||
$SDK_RootDirs{'S60v3'}= "E:\\S60v3";
|
||||
#$SDK_RootDirs{'S80'}= "E:\\S80";
|
||||
#$SDK_RootDirs{'S90'}= "E:\\S90";
|
||||
$ECompXL_BinDir= "E:\\ECompXL\\";
|
||||
#$SDK_RootDirs{'UIQ2'}= "D:\\UIQ2";
|
||||
$SDK_RootDirs{'UIQ3'}= "D:\\UIQ3";
|
||||
#$SDK_RootDirs{'S60v1'}= "D:\\S60v1";
|
||||
#$SDK_RootDirs{'S60v2'}= "D:\\S60v2";
|
||||
$SDK_RootDirs{'S60v3'}= "D:\\S60v3";
|
||||
#$SDK_RootDirs{'S80'}= "D:\\S80";
|
||||
#$SDK_RootDirs{'S90'}= "D:\\S90";
|
||||
$ECompXL_BinDir= "D:\\ECompXL\\";
|
||||
if (0) # so we can turn them on/off easily
|
||||
{
|
||||
# $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{'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!";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
##################################################################################################################
|
||||
##
|
||||
## Variation defines:
|
||||
##
|
||||
##################################################################################################################
|
||||
|
||||
# second hash index = literal string used in .sis file created.
|
||||
# empty string also removes the trailing '_'. Some 051101 examples:
|
||||
|
||||
# $SDK_Variations{'UIQ2'}{''} would produce:
|
||||
# $VariationSets{'UIQ2'}{''} would produce:
|
||||
# scummvm-051101-SymbianUIQ2.sis
|
||||
|
||||
# $SDK_Variations{'S60v2'}{'agos'} would produce:
|
||||
# $VariationSets{'S60v2'}{'agos'} would produce:
|
||||
# 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-SymbianUIQ3_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-SymbianS90_queen.sis
|
||||
|
||||
#$SDK_Variations{'ALL'}{'test'} = "$DefaultTopMacro
|
||||
# //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'};
|
||||
# NOTE: empty $VariationSets{''} string instead of 'ALL' = easy way to disable pkg!
|
||||
|
||||
if (1) # all regular combo's
|
||||
{
|
||||
# the first one includes all SDKs & release-ready engines
|
||||
|
||||
$SDK_Variations{'ALL'}{'all'} = "$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_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";
|
||||
$VariationSets{'ALL'}{'all'} = "$DefaultFeatures @WorkingEngines @EnablableSubEngines";
|
||||
|
||||
# now one for each ready-for-release engine
|
||||
|
||||
$SDK_Variations{'ALL'}{'scumm'} = "$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";
|
||||
foreach (@WorkingEngines)
|
||||
{
|
||||
$VariationSets{'ALL'}{$_} = "$DefaultFeatures $_";
|
||||
}
|
||||
# for scumm, we need to add 2 features:
|
||||
$VariationSets{'ALL'}{'scumm'} .= " scumm_7_8 he";
|
||||
|
||||
$SDK_Variations{'ALL'}{'agos'} = "$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";
|
||||
# now one for each not-ready-for-release-or-testing engine
|
||||
|
||||
$SDK_Variations{'ALL'}{'sky'} = "$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'}{'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";
|
||||
foreach (@TestingEngines)
|
||||
{
|
||||
$VariationSets{'ALL'}{"test_$_"} = "$DefaultFeatures $_";
|
||||
}
|
||||
|
||||
# below here you could specify weird & experimental combinations, non-ready engines
|
||||
|
||||
$SDK_Variations{'ALL'}{'saga_mini'} = "
|
||||
//MACRO USE_ZLIB // LIB:zlib.lib
|
||||
//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";
|
||||
# a small version of the saga engine, because it is so big (no tremor,mad,zlib)
|
||||
$VariationSets{'ALL'}{'saga_mini'} = "saga";
|
||||
|
||||
# $SDK_Variations{'ALL'}{'scumm_no78he'} = "
|
||||
# MACRO USE_ZLIB // LIB:zlib.lib
|
||||
# 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";
|
||||
# a smaller version of scumm without support for v7, v8 and HE games
|
||||
$VariationSets{'ALL'}{'scumm_no78he'} = "$DefaultFeatures scumm";
|
||||
|
||||
# $SDK_Variations{'ALL'}{'all_vorbis'} = "
|
||||
# MACRO USE_ZLIB // LIB:zlib.lib
|
||||
# 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
|
||||
# $DefaultBottomMacros";
|
||||
# maybe you feel lucky and want to test the sword engines? :P
|
||||
#$VariationSets{'S60v2'}{'test_sword'} = "$DefaultFeatures mpeg2 sword1 sword2";
|
||||
#$VariationSets{'UIQ2'}{'test_sword'} = "$DefaultFeatures mpeg2 sword1 sword2";
|
||||
|
||||
$SDK_Variations{'ALL'}{'lure'} = "$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_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";
|
||||
# for mega-fast-testing only plz! Warning: contains to engines!
|
||||
#$VariationSets{'ALL'}{'fast_empty'} = "";
|
||||
|
||||
# empty $SDK_Variations{''} string instead of 'ALL' = package disabled
|
||||
$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";
|
||||
} # end quick-n-fast if (1|0)
|
||||
|
||||
$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
|
||||
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);
|
||||
http://www.symbian.com/developer/sdks_uiq.asp
|
||||
|
||||
|
@ -58,14 +59,14 @@ Building ScummVM
|
|||
|
||||
- zlib, a massively spiffy yet delicately unobtrusive compression library
|
||||
http://www.zlib.net/
|
||||
|
||||
These are probably too heavy-duty for your phone:
|
||||
- latest version of active perl (included with Symbian SDK does not work with the build scripts)
|
||||
|
||||
- libogg, the free media file container format
|
||||
http://www.xiph.org/ogg/
|
||||
|
||||
- libvorbis, the free audio codec
|
||||
http://www.vorbis.com/
|
||||
These are probably too heavy-duty for your phone:
|
||||
|
||||
- flac, the Free Lossless Audio Codec
|
||||
http://flac.sourceforge.net/
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
TARGET ScummVM.exe
|
||||
TARGETPATH sys\bin
|
||||
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
|
||||
|
||||
|
@ -81,13 +81,6 @@ ALWAYS_BUILD_AS_ARM
|
|||
|
||||
STATICLIBRARY esdl.lib
|
||||
|
||||
#if !defined(WINS)
|
||||
staticlibrary rate_arm_asm.o
|
||||
staticlibrary proc3arm.o
|
||||
staticlibrary codec47ARM.o
|
||||
staticlibrary gfxARM.o
|
||||
#endif
|
||||
|
||||
// *** Include paths
|
||||
|
||||
USERINCLUDE ..\..\..\.. ..\..\..\..\common ..\..\..\..\gui ..\..\..\..\engines
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET ScummVM.exe
|
|||
TARGETPATH sys\bin
|
||||
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
|
||||
|
||||
|
@ -82,13 +82,6 @@ ALWAYS_BUILD_AS_ARM
|
|||
|
||||
STATICLIBRARY esdl.lib
|
||||
|
||||
#if !defined(WINS)
|
||||
staticlibrary rate_arm_asm.o
|
||||
staticlibrary proc3arm.o
|
||||
staticlibrary codec47ARM.o
|
||||
staticlibrary gfxARM.o
|
||||
#endif
|
||||
|
||||
// *** Include paths
|
||||
|
||||
USERINCLUDE ..\..\..\.. ..\..\..\..\common ..\..\..\..\gui ..\..\..\..\engines
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_agi.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_agos.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,36 +30,15 @@ TARGET scummvm_base.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 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
|
||||
|
||||
// Note: the LIB:*.lib statements are used by AdaptAllMMPs.pl, so don't remove them!
|
||||
//START_AUTO_MACROS_MASTER//
|
||||
|
||||
// empty base file, will be updated by Perl build scripts
|
||||
|
||||
// list of possible MACROs: (will be replaced when generating scummvm_base.mmp)
|
||||
//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
|
||||
// this file will be modified first, then from here all
|
||||
// MACROs will be replicated to the other MPP files.
|
||||
|
||||
//STOP_AUTO_MACROS_MASTER//
|
||||
|
||||
|
@ -77,6 +56,7 @@ SYSTEMINCLUDE ..\src // for portdefs.h
|
|||
|
||||
// *** SOURCE files
|
||||
|
||||
|
||||
SOURCEPATH ..\..\..\..\common
|
||||
//START_AUTO_OBJECTS_COMMON_//
|
||||
|
||||
|
@ -84,6 +64,7 @@ SOURCEPATH ..\..\..\..\common
|
|||
|
||||
//STOP_AUTO_OBJECTS_COMMON_//
|
||||
|
||||
|
||||
SOURCEPATH ..\..\..\..\graphics
|
||||
//START_AUTO_OBJECTS_GRAPHICS_//
|
||||
|
||||
|
@ -91,6 +72,7 @@ SOURCEPATH ..\..\..\..\graphics
|
|||
|
||||
//STOP_AUTO_OBJECTS_GRAPHICS_//
|
||||
|
||||
|
||||
SOURCEPATH ..\..\..\..\gui
|
||||
//START_AUTO_OBJECTS_GUI_//
|
||||
|
||||
|
@ -103,6 +85,7 @@ SOURCEPATH ..\..\..\..\gui
|
|||
//SOURCE KeysDialog.cpp
|
||||
//SOURCE Actions.cpp
|
||||
|
||||
|
||||
SOURCEPATH ..\..\..\..\sound
|
||||
//START_AUTO_OBJECTS_SOUND_//
|
||||
|
||||
|
@ -110,16 +93,22 @@ SOURCEPATH ..\..\..\..\sound
|
|||
|
||||
//STOP_AUTO_OBJECTS_SOUND_//
|
||||
#if defined (WINS)
|
||||
SOURCE rate.cpp
|
||||
SOURCE rate.cpp // WINS emulator version: add regular .cpp
|
||||
#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
|
||||
sourcepath ..\..\..\..
|
||||
source backends\events\default\default-events.cpp
|
||||
source backends\timer\default\default-timer.cpp
|
||||
source backends\saves\savefile.cpp
|
||||
source backends\saves\default\default-saves.cpp
|
||||
source backends\saves\compressed\compressed-saves.cpp
|
||||
source engines\engine.cpp
|
||||
|
||||
|
||||
// add a few files manually, since they are not parsed from modules.mk files
|
||||
SOURCEPATH ..\..\..\..
|
||||
SOURCE backends\events\default\default-events.cpp
|
||||
SOURCE backends\timer\default\default-timer.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
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_CINE.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_cruise.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_drascula.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_gob.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_kyra.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_lure.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_m4.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_made.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_parallaction.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_queen.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_saga.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_scumm.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
@ -43,23 +43,34 @@ ALWAYS_BUILD_AS_ARM
|
|||
|
||||
SOURCEPATH ..\..\..\..\engines\scumm
|
||||
|
||||
|
||||
//START_AUTO_OBJECTS_SCUMM_//
|
||||
|
||||
// empty base file, will be updated by Perl build scripts
|
||||
|
||||
//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
|
||||
|
||||
//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
|
||||
|
||||
//STOP_AUTO_OBJECTS_SCUMM_DISABLE_HE//
|
||||
//STOP_AUTO_OBJECTS_SCUMM_ENABLE_HE//
|
||||
|
||||
|
||||
// *** Include paths
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_sky.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_sword1.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_sword2.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -30,7 +30,7 @@ TARGET scummvm_touche.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 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
|
||||
|
||||
//START_AUTO_MACROS_SLAVE//
|
||||
|
|
|
@ -173,11 +173,8 @@ void OSystem_SDL_Symbian::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 obtained;
|
||||
|
||||
|
@ -207,17 +204,19 @@ bool OSystem_SDL_Symbian::setSoundCallback(SoundProc proc, void *param) {
|
|||
desired.format = AUDIO_S16SYS;
|
||||
desired.channels = 2;
|
||||
desired.samples = (uint16)samples;
|
||||
#ifdef S60
|
||||
desired.callback = symbianMixCallback;
|
||||
desired.userdata = this;
|
||||
#else
|
||||
desired.callback = proc;
|
||||
desired.userdata = param;
|
||||
#endif
|
||||
|
||||
// Create the mixer instance
|
||||
assert(!_mixer);
|
||||
_mixer = new Audio::MixerImpl(this);
|
||||
assert(_mixer);
|
||||
|
||||
if (SDL_OpenAudio(&desired, &obtained) != 0) {
|
||||
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.
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
// Tell the mixer that we are ready and start the sound processing
|
||||
_mixer->setOutputRate(_samplesPerSec);
|
||||
_mixer->setReady(true);
|
||||
SDL_PauseAudio(0);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The mixer callback function, passed on to OSystem::setSoundCallback().
|
||||
* This simply calls the mix() method.
|
||||
*/
|
||||
void OSystem_SDL_Symbian::symbianMixCallback(void *s, byte *samples, int len) {
|
||||
static_cast <OSystem_SDL_Symbian*>(s)->symbianMix(samples,len);
|
||||
}
|
||||
void OSystem_SDL_Symbian::symbianMixCallback(void *sys, byte *samples, int len) {
|
||||
OSystem_SDL_Symbian *this_ = (OSystem_SDL_Symbian *)sys;
|
||||
assert(this_);
|
||||
|
||||
if (!this_->_mixer)
|
||||
return;
|
||||
|
||||
/**
|
||||
* Actual mixing implementation
|
||||
*/
|
||||
void OSystem_SDL_Symbian::symbianMix(byte *samples, int len) {
|
||||
#ifdef S60
|
||||
// If not stereo then we need to downmix
|
||||
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 *bitmixSrc = (int16 *)_stereo_mix_buffer;
|
||||
|
||||
|
@ -258,9 +260,12 @@ void OSystem_SDL_Symbian::symbianMix(byte *samples, int len) {
|
|||
bitmixSrc += 2;
|
||||
}
|
||||
} else
|
||||
_sound_proc(_sound_proc_param, samples, len);
|
||||
#else
|
||||
this_->_mixer->mixCallback(samples, len);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This is an implementation by the remapKey function
|
||||
* @param SDL_Event to remap
|
||||
|
|
|
@ -58,7 +58,7 @@ public:
|
|||
// This function is overridden by the symbian port in order to provide MONO audio
|
||||
// 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
|
||||
void quit();
|
||||
|
@ -70,11 +70,6 @@ protected:
|
|||
//
|
||||
static void symbianMixCallback(void *s, byte *samples, int len);
|
||||
|
||||
//
|
||||
// Actual mixing implementation
|
||||
//
|
||||
void symbianMix(byte *samples, int len);
|
||||
|
||||
virtual FilesystemFactory *getFilesystemFactory();
|
||||
public:
|
||||
// vibration support
|
||||
|
@ -121,8 +116,6 @@ protected:
|
|||
// Audio
|
||||
int _channels;
|
||||
|
||||
SoundProc _sound_proc;
|
||||
void *_sound_proc_param;
|
||||
byte *_stereo_mix_buffer;
|
||||
|
||||
// Used to handle joystick navi zones
|
||||
|
|
|
@ -35,8 +35,8 @@
|
|||
#include <e32std.h>
|
||||
#include <math.h>
|
||||
|
||||
#define DISABLE_SCALERS // we only need 1x
|
||||
#define DISABLE_HQ_SCALERS
|
||||
//#define DISABLE_SCALERS // we only need 1x
|
||||
//#define DISABLE_HQ_SCALERS
|
||||
|
||||
#if defined(USE_TREMOR) && !defined(USE_VORBIS)
|
||||
#define USE_VORBIS // make sure this one is defined together with USE_TREMOR!
|
||||
|
|
|
@ -91,7 +91,7 @@ void OSystem_Wii::initBackend() {
|
|||
_startup_time = gettime();
|
||||
|
||||
_savefile = new DefaultSaveFileManager();
|
||||
_mixer = new Audio::Mixer();
|
||||
_mixer = new Audio::MixerImpl(this);
|
||||
_timer = new DefaultTimerManager();
|
||||
|
||||
initGfx();
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
#include "backends/saves/default/default-saves.h"
|
||||
#include "backends/timer/default/default-timer.h"
|
||||
#include "graphics/surface.h"
|
||||
#include "sound/mixer.h"
|
||||
#include "sound/mixer_intern.h"
|
||||
|
||||
#include <gctypes.h>
|
||||
#include <gccore.h>
|
||||
|
@ -96,7 +96,7 @@ private:
|
|||
|
||||
protected:
|
||||
Common::SaveFileManager *_savefile;
|
||||
Audio::Mixer *_mixer;
|
||||
Audio::MixerImpl *_mixer;
|
||||
DefaultTimerManager *_timer;
|
||||
|
||||
public:
|
||||
|
@ -159,7 +159,6 @@ public:
|
|||
virtual void deleteMutex(MutexRef mutex);
|
||||
|
||||
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
||||
virtual int getOutputSampleRate() const;
|
||||
|
||||
virtual void quit();
|
||||
|
||||
|
|
|
@ -36,9 +36,6 @@ static bool sfx_thread_quit = false;
|
|||
static u8 sb = 0;
|
||||
static u8 *sound_buffer[2];
|
||||
|
||||
static OSystem_Wii::SoundProc sound_proc = NULL;
|
||||
static void *proc_param = NULL;
|
||||
|
||||
static void audio_switch_buffers() {
|
||||
AUDIO_StopDMA();
|
||||
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) {
|
||||
Audio::MixerImpl *mixer = (Audio::MixerImpl *) arg;
|
||||
u8 next_sb;
|
||||
|
||||
while (true) {
|
||||
|
@ -57,7 +55,7 @@ static void * sfx_thread_func(void *arg) {
|
|||
break;
|
||||
|
||||
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);
|
||||
|
||||
sb = next_sb;
|
||||
|
@ -75,7 +73,7 @@ void OSystem_Wii::initSfx() {
|
|||
|
||||
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);
|
||||
|
||||
if (res) {
|
||||
|
@ -95,9 +93,7 @@ void OSystem_Wii::initSfx() {
|
|||
DCFlushRange(sound_buffer[0], SFX_THREAD_FRAG_SIZE);
|
||||
DCFlushRange(sound_buffer[1], SFX_THREAD_FRAG_SIZE);
|
||||
|
||||
sound_proc = Audio::Mixer::mixCallback;
|
||||
proc_param = _mixer;
|
||||
|
||||
_mixer->setOutputRate(48000);
|
||||
_mixer->setReady(true);
|
||||
|
||||
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_SCUMM = STATIC_PLUGIN
|
||||
ENABLE_SCUMM_7_8 = 1
|
||||
ENABLE_HE = 1
|
||||
ENABLE_SKY = STATIC_PLUGIN
|
||||
ENABLE_QUEEN = STATIC_PLUGIN
|
||||
ENABLE_GOB = STATIC_PLUGIN
|
||||
|
@ -163,7 +165,8 @@ endif
|
|||
EXECUTABLE = scummvm.exe
|
||||
CXXFLAGS := $(CFLAGS)
|
||||
OBJS :=
|
||||
MODULE_DIRS += .
|
||||
MODULE_DIRS += ./
|
||||
DEPDIR = .deps
|
||||
|
||||
OBJS += CEActionsPocket.o CEDevice.o CEScaler.o \
|
||||
CEActionsSmartphone.o CELauncherDialog.o wince-sdl.o
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
#include "base/main.h"
|
||||
#include "base/plugins.h"
|
||||
|
||||
#include "sound/mixer.h"
|
||||
#include "sound/mixer_intern.h"
|
||||
#include "sound/fmopl.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
|
||||
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
||||
bool OSystem_WINCE3::_soundMaster = true;
|
||||
SoundProc OSystem_WINCE3::_originalSoundProc = NULL;
|
||||
|
||||
bool _isSmartphone = false;
|
||||
bool _hasSmartphoneResolution = false;
|
||||
|
@ -403,9 +402,8 @@ void OSystem_WINCE3::initBackend()
|
|||
{
|
||||
// Instantiate our own sound mixer
|
||||
// mixer init is postponed until a game engine is selected.
|
||||
if (_mixer == 0) {
|
||||
_mixer = new Audio::Mixer();
|
||||
}
|
||||
if (_mixer == 0)
|
||||
_mixer = new Audio::MixerImpl(this);
|
||||
|
||||
// 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
|
||||
|
@ -770,7 +768,7 @@ void OSystem_WINCE3::create_toolbar() {
|
|||
_toolbarHandler.setVisible(false);
|
||||
}
|
||||
|
||||
bool OSystem_WINCE3::setSoundCallback(SoundProc proc, void *param) {
|
||||
void OSystem_WINCE3::setupMixer() {
|
||||
SDL_AudioSpec desired;
|
||||
int thread_priority;
|
||||
|
||||
|
@ -779,18 +777,20 @@ bool OSystem_WINCE3::setSoundCallback(SoundProc proc, void *param) {
|
|||
|
||||
memset(&desired, 0, sizeof(desired));
|
||||
|
||||
_originalSoundProc = proc;
|
||||
desired.freq = _sampleRate;
|
||||
desired.format = AUDIO_S16SYS;
|
||||
desired.channels = 2;
|
||||
desired.samples = 128;
|
||||
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
|
||||
if (!ConfMan.hasKey("sound_thread_priority")) {
|
||||
if (!ConfMan.hasKey("sound_thread_priority"))
|
||||
thread_priority = THREAD_PRIORITY_NORMAL;
|
||||
}
|
||||
else
|
||||
thread_priority = ConfMan.getInt("sound_thread_priority");
|
||||
|
||||
|
@ -799,16 +799,26 @@ bool OSystem_WINCE3::setSoundCallback(SoundProc proc, void *param) {
|
|||
SDL_CloseAudio();
|
||||
if (SDL_OpenAudio(&desired, NULL) != 0) {
|
||||
warning("Could not open audio device: %s", SDL_GetError());
|
||||
return false;
|
||||
}
|
||||
else
|
||||
_mixer->setReady(false);
|
||||
|
||||
} else {
|
||||
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);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
memset(buf, 0, len);
|
||||
}
|
||||
|
@ -838,7 +848,7 @@ bool OSystem_WINCE3::checkOggHighSampleRate() {
|
|||
}
|
||||
#endif
|
||||
|
||||
void OSystem_WINCE3::get_sample_rate() {
|
||||
void OSystem_WINCE3::compute_sample_rate() {
|
||||
// Force at least medium quality FM synthesis for FOTAQ
|
||||
Common::String gameid(ConfMan.get("gameid"));
|
||||
if (gameid == "queen") {
|
||||
|
@ -875,9 +885,8 @@ void OSystem_WINCE3::setWindowCaption(const char *caption) {
|
|||
|
||||
//update_game_settings();
|
||||
// finalize mixer init
|
||||
get_sample_rate();
|
||||
bool result = setSoundCallback(Audio::Mixer::mixCallback, _mixer);
|
||||
_mixer->setReady(result);
|
||||
compute_sample_rate();
|
||||
setupMixer();
|
||||
|
||||
// handle the actual event
|
||||
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) {
|
||||
|
|
|
@ -82,7 +82,7 @@ public:
|
|||
// Overloaded from SDL_Commmon
|
||||
void quit();
|
||||
// Overloaded from SDL_Commmon (master volume and sample rate subtleties)
|
||||
bool setSoundCallback(SoundProc proc, void *param);
|
||||
void setupMixer();
|
||||
// Overloaded from OSystem
|
||||
//void engineInit();
|
||||
void getTimeAndDate(struct tm &t) const;
|
||||
|
@ -160,13 +160,12 @@ private:
|
|||
#endif
|
||||
|
||||
static void private_sound_proc(void *param, byte *buf, int len);
|
||||
static SoundProc _originalSoundProc;
|
||||
|
||||
bool update_scalers();
|
||||
void create_toolbar();
|
||||
void update_game_settings();
|
||||
void check_mappings();
|
||||
void get_sample_rate();
|
||||
void compute_sample_rate();
|
||||
|
||||
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::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) {
|
||||
results.push_back(file->getName());
|
||||
}
|
||||
|
|
|
@ -38,14 +38,15 @@ private:
|
|||
void *_timerHandler;
|
||||
TimerSlot *_head;
|
||||
|
||||
|
||||
public:
|
||||
DefaultTimerManager();
|
||||
~DefaultTimerManager();
|
||||
bool installTimerProc(TimerProc proc, int32 interval, void *refCon);
|
||||
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();
|
||||
};
|
||||
|
||||
|
|
|
@ -229,7 +229,6 @@ static int runGame(const EnginePlugin *plugin, OSystem &system, const Common::St
|
|||
// Reset the file/directory mappings
|
||||
Common::File::resetDefaultDirectories();
|
||||
|
||||
|
||||
// If result=1 return to the launcher, else quit ScummVM
|
||||
return result;
|
||||
}
|
||||
|
@ -279,6 +278,7 @@ extern "C" int scummvm_main(int argc, char *argv[]) {
|
|||
|
||||
// Load the plugins.
|
||||
PluginManager::instance().loadPlugins();
|
||||
EngineMan.getPlugins();
|
||||
|
||||
// Process the remaining command line settings. Must be done after the
|
||||
// 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 : 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 : 4800 ) // turn off "forcing value to bool 'true' or 'false' (performance warning)"
|
||||
|
||||
// vsnprintf is already defined in Visual Studio 2008
|
||||
#if (_MSC_VER < 1500)
|
||||
|
|
|
@ -121,28 +121,3 @@ void OSystem::clearScreen() {
|
|||
memset(screen->pixels, 0, screen->h * screen->pitch);
|
||||
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;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
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.
|
||||
if type mktemp > /dev/null 2>&1 ; then
|
||||
TMPO=`mktemp`
|
||||
TMPO=`mktemp /tmp/scummvm-conf.XXXXXXXXXX`
|
||||
else
|
||||
TMPO=${_srcdir}/scummvm-conf
|
||||
fi
|
||||
|
@ -741,6 +741,10 @@ for ac_option in $@; do
|
|||
--enable-release)
|
||||
DEBFLAGS="-O2 -Wuninitialized"
|
||||
;;
|
||||
--enable-profiling)
|
||||
CXXFLAGS="$CXXFLAGS -pg"
|
||||
LDFLAGS="$LDFLAGS -pg"
|
||||
;;
|
||||
--with-sdl-prefix=*)
|
||||
arg=`echo $ac_option | cut -d '=' -f 2`
|
||||
_sdlpath="$arg:$arg/bin"
|
||||
|
|
Binary file not shown.
|
@ -96,6 +96,9 @@
|
|||
</Configuration>
|
||||
</Configurations>
|
||||
<Files>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\balloons.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\callables_br.cpp">
|
||||
</File>
|
||||
|
@ -123,6 +126,9 @@
|
|||
<File
|
||||
RelativePath="..\..\engines\parallaction\disk_ns.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\exec.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\exec_br.cpp">
|
||||
</File>
|
||||
|
|
|
@ -395,18 +395,15 @@
|
|||
<File
|
||||
RelativePath="..\..\sound\midiparser_xmidi.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\mixer.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\mixer.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\mixer_intern.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\mp3.cpp">
|
||||
</File>
|
||||
|
@ -419,6 +416,12 @@
|
|||
<File
|
||||
RelativePath="..\..\sound\mpu401.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\null.cpp">
|
||||
</File>
|
||||
|
|
|
@ -110,6 +110,9 @@
|
|||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\balloons.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\callables_br.cpp">
|
||||
</File>
|
||||
|
@ -137,6 +140,9 @@
|
|||
<File
|
||||
RelativePath="..\..\engines\parallaction\disk_ns.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\exec.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\exec_br.cpp">
|
||||
</File>
|
||||
|
|
|
@ -409,18 +409,15 @@
|
|||
<File
|
||||
RelativePath="..\..\sound\midiparser_xmidi.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\mixer.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\mixer.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\mixer_intern.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\mp3.cpp">
|
||||
</File>
|
||||
|
@ -433,6 +430,12 @@
|
|||
<File
|
||||
RelativePath="..\..\sound\mpu401.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\null.cpp">
|
||||
</File>
|
||||
|
|
|
@ -160,6 +160,10 @@
|
|||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\balloons.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\callables_br.cpp"
|
||||
>
|
||||
|
@ -196,6 +200,10 @@
|
|||
RelativePath="..\..\engines\parallaction\disk_ns.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\exec.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\exec_br.cpp"
|
||||
>
|
||||
|
|
|
@ -564,14 +564,6 @@
|
|||
RelativePath="..\..\sound\midiparser_xmidi.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\mixer.cpp"
|
||||
>
|
||||
|
@ -580,6 +572,10 @@
|
|||
RelativePath="..\..\sound\mixer.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\mixer_intern.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\mp3.cpp"
|
||||
>
|
||||
|
@ -596,6 +592,14 @@
|
|||
RelativePath="..\..\sound\mpu401.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\null.cpp"
|
||||
>
|
||||
|
|
|
@ -161,6 +161,10 @@
|
|||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\balloons.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\callables_br.cpp"
|
||||
>
|
||||
|
@ -197,6 +201,10 @@
|
|||
RelativePath="..\..\engines\parallaction\disk_ns.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\exec.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\engines\parallaction\exec_br.cpp"
|
||||
>
|
||||
|
|
|
@ -569,14 +569,6 @@
|
|||
RelativePath="..\..\sound\midiparser_xmidi.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\mixer.cpp"
|
||||
>
|
||||
|
@ -585,6 +577,10 @@
|
|||
RelativePath="..\..\sound\mixer.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\mixer_intern.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\mp3.cpp"
|
||||
>
|
||||
|
@ -601,6 +597,14 @@
|
|||
RelativePath="..\..\sound\mpu401.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\musicplugin.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\sound\null.cpp"
|
||||
>
|
||||
|
|
|
@ -63,6 +63,7 @@ void addSpriteFilledToBGList(int16 objIdx) {
|
|||
void createBgIncrustListElement(int16 objIdx, int16 param) {
|
||||
BGIncrust tmp;
|
||||
|
||||
tmp.unkPtr = 0;
|
||||
tmp.objIdx = objIdx;
|
||||
tmp.param = param;
|
||||
tmp.x = objectTable[objIdx].x;
|
||||
|
@ -90,6 +91,7 @@ void loadBgIncrustFromSave(Common::InSaveFile &fHandle) {
|
|||
fHandle.readUint32BE();
|
||||
fHandle.readUint32BE();
|
||||
|
||||
tmp.unkPtr = 0;
|
||||
tmp.objIdx = fHandle.readUint16BE();
|
||||
tmp.param = fHandle.readUint16BE();
|
||||
tmp.x = fHandle.readUint16BE();
|
||||
|
|
|
@ -969,6 +969,7 @@ void OSRenderer::drawBackground() {
|
|||
|
||||
/*! \brief Draw one overlay
|
||||
* \param it Overlay info
|
||||
* \todo Add handling of type 22 overlays
|
||||
*/
|
||||
void OSRenderer::renderOverlay(const Common::List<overlay>::iterator &it) {
|
||||
int len;
|
||||
|
@ -979,6 +980,9 @@ void OSRenderer::renderOverlay(const Common::List<overlay>::iterator &it) {
|
|||
switch (it->type) {
|
||||
// color sprite
|
||||
case 0:
|
||||
if (objectTable[it->objIdx].frame < 0) {
|
||||
break;
|
||||
}
|
||||
sprite = animDataTable + objectTable[it->objIdx].frame;
|
||||
len = sprite->_realWidth * sprite->_height;
|
||||
mask = new byte[len];
|
||||
|
@ -988,6 +992,13 @@ void OSRenderer::renderOverlay(const Common::List<overlay>::iterator &it) {
|
|||
delete[] mask;
|
||||
break;
|
||||
|
||||
// bitmap
|
||||
case 4:
|
||||
if (objectTable[it->objIdx].frame >= 0) {
|
||||
FWRenderer::renderOverlay(it);
|
||||
}
|
||||
break;
|
||||
|
||||
// masked background
|
||||
case 20:
|
||||
assert(it->objIdx < NUM_MAX_OBJECT);
|
||||
|
|
|
@ -228,6 +228,13 @@ void CineEngine::mainLoop(int bootScriptIdx) {
|
|||
stopMusicAfterFadeOut();
|
||||
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();
|
||||
executeList1();
|
||||
executeList0();
|
||||
|
|
|
@ -99,21 +99,36 @@ int removeOverlay(uint16 objIdx, uint16 param) {
|
|||
|
||||
/*! \brief Add new overlay sprite to the list
|
||||
* \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?
|
||||
*/
|
||||
void addOverlay(uint16 objIdx, uint16 param) {
|
||||
void addOverlay(uint16 objIdx, uint16 type) {
|
||||
Common::List<overlay>::iterator it;
|
||||
overlay tmp;
|
||||
|
||||
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) {
|
||||
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.type = param;
|
||||
tmp.type = type;
|
||||
tmp.x = 0;
|
||||
tmp.y = 0;
|
||||
tmp.width = 0;
|
||||
tmp.color = 0;
|
||||
|
||||
overlayList.insert(it, tmp);
|
||||
}
|
||||
|
@ -122,24 +137,22 @@ void addOverlay(uint16 objIdx, uint16 param) {
|
|||
* \param objIdx Associate the overlay with this object
|
||||
* \param param source background index
|
||||
*/
|
||||
void addGfxElementA0(int16 objIdx, int16 param) {
|
||||
void addGfxElement(int16 objIdx, int16 param, int16 type) {
|
||||
Common::List<overlay>::iterator it;
|
||||
overlay tmp;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
tmp.objIdx = objIdx;
|
||||
tmp.type = 20;
|
||||
tmp.type = type;
|
||||
tmp.x = param;
|
||||
tmp.y = 0;
|
||||
tmp.width = 0;
|
||||
|
@ -153,11 +166,11 @@ void addGfxElementA0(int16 objIdx, int16 param) {
|
|||
* \param param Remove overlay using this background
|
||||
* \todo Check that it works
|
||||
*/
|
||||
void removeGfxElementA0(int16 objIdx, int16 param) {
|
||||
void removeGfxElement(int16 objIdx, int16 param, int16 type) {
|
||||
Common::List<overlay>::iterator 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);
|
||||
return;
|
||||
}
|
||||
|
@ -170,10 +183,14 @@ void setupObject(byte objIdx, uint16 param1, uint16 param2, uint16 param3, uint1
|
|||
objectTable[objIdx].mask = param3;
|
||||
objectTable[objIdx].frame = param4;
|
||||
|
||||
if (g_cine->getGameType() == Cine::GType_OS) {
|
||||
resetGfxEntityEntry(objIdx);
|
||||
} else { // Future Wars
|
||||
if (removeOverlay(objIdx, 0)) {
|
||||
addOverlay(objIdx, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void subObjectParam(byte objIdx, byte paramIdx, int16 newValue) {
|
||||
addObjectParam(objIdx, paramIdx, -newValue);
|
||||
|
@ -199,10 +216,13 @@ void modifyObjectParam(byte objIdx, byte paramIdx, int16 newValue) {
|
|||
case 3:
|
||||
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)) {
|
||||
addOverlay(objIdx, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
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 compareResult = 0;
|
||||
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 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);
|
||||
void addGfxElementA0(int16 objIdx, int16 param);
|
||||
void removeGfxElementA0(int16 objIdx, int16 param);
|
||||
void addGfxElement(int16 objIdx, int16 param, int16 type);
|
||||
void removeGfxElement(int16 objIdx, int16 param, int16 type);
|
||||
|
||||
int16 getObjectParam(uint16 objIdx, uint16 paramIdx);
|
||||
|
||||
void addObjectParam(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);
|
||||
|
||||
} // End of namespace Cine
|
||||
|
|
|
@ -237,7 +237,7 @@ protected:
|
|||
int o2_playSample();
|
||||
int o2_playSampleAlt();
|
||||
int o2_op81();
|
||||
int o2_op82();
|
||||
int o2_modifySeqListElement();
|
||||
int o2_isSeqRunning();
|
||||
int o2_gotoIfSupNearest();
|
||||
int o2_gotoIfSupEquNearest();
|
||||
|
@ -258,10 +258,10 @@ protected:
|
|||
int o2_useBgScroll();
|
||||
int o2_setAdditionalBgVScroll();
|
||||
int o2_op9F();
|
||||
int o2_addGfxElementA0();
|
||||
int o2_removeGfxElementA0();
|
||||
int o2_opA2();
|
||||
int o2_opA3();
|
||||
int o2_addGfxElementType20();
|
||||
int o2_removeGfxElementType20();
|
||||
int o2_addGfxElementType21();
|
||||
int o2_removeGfxElementType21();
|
||||
int o2_loadMask22();
|
||||
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 ly = objectTable[objIdx].y + y;
|
||||
int16 idx;
|
||||
int16 result = 0;
|
||||
|
||||
for (int16 i = 0; i < numZones; i++) {
|
||||
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) {
|
||||
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) {
|
||||
|
|
|
@ -202,7 +202,7 @@ const Opcode OSScript::_opcodeTable[] = {
|
|||
/* 80 */
|
||||
{ &FWScript::o2_removeSeq, "bb" },
|
||||
{ &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" },
|
||||
/* 84 */
|
||||
{ &FWScript::o2_gotoIfSupNearest, "b" },
|
||||
|
@ -240,10 +240,10 @@ const Opcode OSScript::_opcodeTable[] = {
|
|||
{ &FWScript::o2_setAdditionalBgVScroll, "c" },
|
||||
{ &FWScript::o2_op9F, "ww" }, /* TODO: Name this opcode properly. */
|
||||
/* A0 */
|
||||
{ &FWScript::o2_addGfxElementA0, "ww" }, /* TODO: Name this opcode properly. */
|
||||
{ &FWScript::o2_removeGfxElementA0, "ww" }, /* TODO: Name this opcode properly. */
|
||||
{ &FWScript::o2_opA2, "ww" }, /* TODO: Name this opcode properly. */
|
||||
{ &FWScript::o2_opA3, "ww" }, /* TODO: Name this opcode properly. */
|
||||
{ &FWScript::o2_addGfxElementType20, "ww" }, /* TODO: Name this opcode properly. */
|
||||
{ &FWScript::o2_removeGfxElementType20, "ww" }, /* TODO: Name this opcode properly. */
|
||||
{ &FWScript::o2_addGfxElementType21, "ww" }, /* TODO: Name this opcode properly. */
|
||||
{ &FWScript::o2_removeGfxElementType21, "ww" }, /* TODO: Name this opcode properly. */
|
||||
/* A4 */
|
||||
{ &FWScript::o2_loadMask22, "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
|
||||
* \note According to the scripts' opcode usage comparison this opcode isn't used at all.
|
||||
*/
|
||||
int FWScript::o2_op81() {
|
||||
warning("STUB: o2_op81()");
|
||||
|
@ -449,23 +450,25 @@ int FWScript::o2_op81() {
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*! \todo Implement this instruction
|
||||
*/
|
||||
int FWScript::o2_op82() {
|
||||
int FWScript::o2_modifySeqListElement() {
|
||||
byte a = getNextByte();
|
||||
byte b = getNextByte();
|
||||
uint16 c = getNextWord();
|
||||
uint16 d = getNextWord();
|
||||
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;
|
||||
}
|
||||
|
||||
/*! \todo Check whether this opcode's name is backwards (i.e. should it be o2_isSeqNotRunning?)
|
||||
*/
|
||||
int FWScript::o2_isSeqRunning() {
|
||||
byte a = 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)) {
|
||||
_compare = 1;
|
||||
|
@ -593,19 +596,18 @@ int FWScript::o2_stopObjectScript() {
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*! \todo Implement this instruction
|
||||
*/
|
||||
int FWScript::o2_op8D() {
|
||||
uint16 a = getNextWord();
|
||||
uint16 b = getNextWord();
|
||||
uint16 c = getNextWord();
|
||||
uint16 d = getNextWord();
|
||||
uint16 e = getNextWord();
|
||||
uint16 f = getNextWord();
|
||||
uint16 g = getNextWord();
|
||||
uint16 h = getNextWord();
|
||||
warning("STUB: o2_op8D(%x, %x, %x, %x, %x, %x, %x, %x)", a, b, c, d, e, f, g, h);
|
||||
// _currentScriptElement->compareResult = ...
|
||||
uint16 objIdx1 = getNextWord();
|
||||
uint16 xAdd1 = getNextWord();
|
||||
uint16 yAdd1 = getNextWord();
|
||||
uint16 maskAdd1 = getNextWord();
|
||||
uint16 objIdx2 = getNextWord();
|
||||
uint16 xAdd2 = getNextWord();
|
||||
uint16 yAdd2 = getNextWord();
|
||||
uint16 maskAdd2 = getNextWord();
|
||||
debugC(5, kCineDebugScript, "Line: %d: o2_op8D(%d, %d, %d, %d, %d, %d, %d, %d)", _line, objIdx1, xAdd1, yAdd1, maskAdd1, objIdx2, xAdd2, yAdd2, maskAdd2);
|
||||
|
||||
_compare = compareObjectParamRanges(objIdx1, xAdd1, yAdd1, maskAdd1, objIdx2, xAdd2, yAdd2, maskAdd2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -649,16 +651,15 @@ int FWScript::o2_loadBg() {
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*! \todo Check the current implementation for correctness
|
||||
*/
|
||||
int FWScript::o2_wasZoneChecked() {
|
||||
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);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*! \todo Implement this instruction
|
||||
* \note According to the scripts' opcode usage comparison this opcode isn't used at all.
|
||||
*/
|
||||
int FWScript::o2_op9B() {
|
||||
uint16 a = getNextWord();
|
||||
|
@ -674,6 +675,7 @@ int FWScript::o2_op9B() {
|
|||
}
|
||||
|
||||
/*! \todo Implement this instruction
|
||||
* \note According to the scripts' opcode usage comparison this opcode isn't used at all.
|
||||
*/
|
||||
int FWScript::o2_op9C() {
|
||||
uint16 a = getNextWord();
|
||||
|
@ -713,6 +715,7 @@ int FWScript::o2_setAdditionalBgVScroll() {
|
|||
}
|
||||
|
||||
/*! \todo Implement this instruction
|
||||
* \note According to the scripts' opcode usage comparison this opcode isn't used at all.
|
||||
*/
|
||||
int FWScript::o2_op9F() {
|
||||
warning("o2_op9F()");
|
||||
|
@ -721,42 +724,36 @@ int FWScript::o2_op9F() {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int FWScript::o2_addGfxElementA0() {
|
||||
int FWScript::o2_addGfxElementType20() {
|
||||
uint16 param1 = getNextWord();
|
||||
uint16 param2 = getNextWord();
|
||||
|
||||
debugC(5, kCineDebugScript, "Line: %d: addGfxElementA0(%d,%d)", _line, param1, param2);
|
||||
addGfxElementA0(param1, param2);
|
||||
debugC(5, kCineDebugScript, "Line: %d: o2_addGfxElementType20(%d,%d)", _line, param1, param2);
|
||||
addGfxElement(param1, param2, 20);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*! \todo Implement this instruction
|
||||
*/
|
||||
int FWScript::o2_removeGfxElementA0() {
|
||||
int FWScript::o2_removeGfxElementType20() {
|
||||
uint16 idx = getNextWord();
|
||||
uint16 param = getNextWord();
|
||||
warning("STUB? o2_removeGfxElementA0(%x, %x)", idx, param);
|
||||
removeGfxElementA0(idx, param);
|
||||
debugC(5, kCineDebugScript, "Line: %d: o2_removeGfxElementType20(%d,%d)", _line, idx, param);
|
||||
removeGfxElement(idx, param, 20);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*! \todo Implement this instruction
|
||||
*/
|
||||
int FWScript::o2_opA2() {
|
||||
int FWScript::o2_addGfxElementType21() {
|
||||
uint16 a = getNextWord();
|
||||
uint16 b = getNextWord();
|
||||
warning("STUB: o2_opA2(%x, %x)", a, b);
|
||||
// addGfxElementA2();
|
||||
debugC(5, kCineDebugScript, "Line: %d: o2_addGfxElementType21(%d,%d)", _line, a, b);
|
||||
addGfxElement(a, b, 21);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*! \todo Implement this instruction
|
||||
*/
|
||||
int FWScript::o2_opA3() {
|
||||
int FWScript::o2_removeGfxElementType21() {
|
||||
uint16 a = getNextWord();
|
||||
uint16 b = getNextWord();
|
||||
warning("STUB: o2_opA3(%x, %x)", a, b);
|
||||
// removeGfxElementA2();
|
||||
debugC(5, kCineDebugScript, "Line: %d: o2_removeGfxElementType21(%d,%d)", _line, a, b);
|
||||
removeGfxElement(a, b, 21);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -94,6 +94,9 @@ int16 saveVar2;
|
|||
|
||||
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;
|
||||
uint16 inputVar2 = 0, inputVar3 = 0;
|
||||
|
||||
|
@ -110,6 +113,7 @@ CommandeType objectListCommand[20];
|
|||
int16 objListTab[20];
|
||||
|
||||
uint16 zoneData[NUM_MAX_ZONE];
|
||||
uint16 zoneQuery[NUM_MAX_ZONE]; //!< Only exists in Operation Stealth
|
||||
|
||||
|
||||
void stopMusicAfterFadeOut(void) {
|
||||
|
@ -130,6 +134,7 @@ void runObjectScript(int16 entryIdx) {
|
|||
*/
|
||||
void addPlayerCommandMessage(int16 cmd) {
|
||||
overlay tmp;
|
||||
memset(&tmp, 0, sizeof(tmp));
|
||||
tmp.objIdx = cmd;
|
||||
tmp.type = 3;
|
||||
|
||||
|
@ -389,6 +394,7 @@ bool brokenSave(Common::InSaveFile &fHandle) {
|
|||
}
|
||||
|
||||
/*! \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) {
|
||||
int16 i;
|
||||
|
@ -586,6 +592,8 @@ bool CineEngine::makeLoad(char *saveName) {
|
|||
return true;
|
||||
}
|
||||
|
||||
/*! \todo Add support for saving the zoneQuery table (Operation Stealth specific)
|
||||
*/
|
||||
void makeSave(char *saveFileName) {
|
||||
int16 i;
|
||||
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;
|
||||
|
||||
for (it = seqList.begin(); it != seqList.end(); ++it) {
|
||||
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) {
|
||||
|
@ -1616,6 +1627,19 @@ void addSeqListElement(uint16 objIdx, int16 param1, int16 param2, int16 frame, i
|
|||
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,
|
||||
int16 param2, int16 x2, int16 y2) {
|
||||
element.var16 = 0;
|
||||
|
@ -1660,105 +1684,48 @@ uint16 computeMove2(SeqListElement &element) {
|
|||
return returnVar;
|
||||
}
|
||||
|
||||
// sort all the gfx stuff...
|
||||
|
||||
void resetGfxEntityEntry(uint16 objIdx) {
|
||||
#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;
|
||||
uint16 addAni(uint16 param1, uint16 objIdx, const int8 *ptr, SeqListElement &element, uint16 param3, int16 *param4) {
|
||||
const int8 *ptrData;
|
||||
const int8 *ptr2;
|
||||
int16 di;
|
||||
|
||||
// In the original an error string is set and 0 is returned if the following doesn't hold
|
||||
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;
|
||||
|
||||
// In the original an error string is set and 0 is returned if the following doesn't hold
|
||||
assert(*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)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
objectTable[objIdx].x += (int8)ptr2[4];
|
||||
objectTable[objIdx].y += (int8)ptr2[5];
|
||||
objectTable[objIdx].mask += (int8)ptr2[6];
|
||||
objectTable[objIdx].x += ptr2[4];
|
||||
objectTable[objIdx].y += ptr2[5];
|
||||
objectTable[objIdx].mask += ptr2[6];
|
||||
|
||||
if (objectTable[objIdx].frame) {
|
||||
if (ptr2[6]) {
|
||||
resetGfxEntityEntry(objIdx);
|
||||
}
|
||||
|
||||
|
@ -1767,16 +1734,63 @@ uint16 addAni(uint16 param1, uint16 objIdx, const byte *ptr, SeqListElement &ele
|
|||
if (param3 || !element.var14) {
|
||||
objectTable[objIdx].costume = di;
|
||||
} else {
|
||||
assert(param4);
|
||||
*param4 = di;
|
||||
}
|
||||
|
||||
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) {
|
||||
int16 x = objectTable[element.objIdx].x;
|
||||
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_4;
|
||||
int16 var_2;
|
||||
|
@ -1789,15 +1803,36 @@ void processSeqListElement(SeqListElement &element) {
|
|||
element.var12 = 0;
|
||||
|
||||
if (ptr1) {
|
||||
uint16 param1 = ptr1[1];
|
||||
uint16 param2 = ptr1[2];
|
||||
int16 param1 = ptr1[1];
|
||||
int16 param2 = ptr1[2];
|
||||
|
||||
if (element.varC != 255) {
|
||||
// FIXME: Why is this here? Fingolfin gets lots of these
|
||||
// in his copy of Operation Stealth (value 0 or 236) under
|
||||
// Mac OS X. Maybe it's a endian issue? At least the graphics
|
||||
// in the copy protection screen are partially messed up.
|
||||
warning("processSeqListElement: varC = %d", element.varC);
|
||||
int16 x2 = element.var18;
|
||||
int16 y2 = element.var1A;
|
||||
if (element.varC) {
|
||||
x2 += objectTable[element.varC].x;
|
||||
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]) {
|
||||
|
@ -1806,6 +1841,7 @@ void processSeqListElement(SeqListElement &element) {
|
|||
element.var16 = 0;
|
||||
element.var14 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
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.var1E) {
|
||||
objectTable[element.objIdx].costume = 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
|
||||
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 removeMessages();
|
||||
|
||||
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 modifySeqListElement(uint16 objIdx, int16 var4Test, int16 param1, int16 param2, int16 param3, int16 param4);
|
||||
void processSeqList(void);
|
||||
|
||||
void resetGfxEntityEntry(uint16 objIdx);
|
||||
|
||||
bool makeTextEntryMenu(const char *caption, char *string, int strLen, int y);
|
||||
|
||||
} // End of namespace Cine
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
|
||||
#include <string.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"
|
||||
|
|
|
@ -372,7 +372,11 @@ void DrasculaEngine::animation_1_1() {
|
|||
break;
|
||||
clearRoom();
|
||||
|
||||
if (_lang == kSpanish)
|
||||
playMusic(31);
|
||||
else
|
||||
playMusic(2);
|
||||
|
||||
pause(5);
|
||||
playFLI("intro.bin", 12);
|
||||
term_int = 1;
|
||||
|
|
|
@ -328,7 +328,7 @@ public:
|
|||
int curHeight, curWidth, feetHeight;
|
||||
int talkHeight, talkWidth;
|
||||
int floorX1, floorY1, floorX2, floorY2;
|
||||
int near, far;
|
||||
int lowerLimit, upperLimit;
|
||||
int trackFinal, walkToObject;
|
||||
int objExit;
|
||||
int timeDiff, startTime;
|
||||
|
|
|
@ -1672,8 +1672,8 @@ void DrasculaEngine::enterRoom(int roomIndex) {
|
|||
getIntFromLine(buffer, size, &floorY2);
|
||||
|
||||
if (currentChapter != 2) {
|
||||
getIntFromLine(buffer, size, &far);
|
||||
getIntFromLine(buffer, size, &near);
|
||||
getIntFromLine(buffer, size, &upperLimit);
|
||||
getIntFromLine(buffer, size, &lowerLimit);
|
||||
}
|
||||
_arj.close();
|
||||
|
||||
|
@ -1732,27 +1732,27 @@ void DrasculaEngine::enterRoom(int roomIndex) {
|
|||
|
||||
if (currentChapter != 2) {
|
||||
for (l = 0; l <= floorY1; l++)
|
||||
factor_red[l] = far;
|
||||
factor_red[l] = upperLimit;
|
||||
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++) {
|
||||
factor_red[l] = (int)(far + pequegnez);
|
||||
factor_red[l] = (int)(upperLimit + pequegnez);
|
||||
pequegnez = pequegnez + chiquez;
|
||||
}
|
||||
}
|
||||
|
||||
if (roomNumber == 24) {
|
||||
for (l = floorY1 - 1; l > 74; l--) {
|
||||
factor_red[l] = (int)(far - pequegnez);
|
||||
factor_red[l] = (int)(upperLimit - pequegnez);
|
||||
pequegnez = pequegnez + chiquez;
|
||||
}
|
||||
}
|
||||
|
||||
if (currentChapter == 5 && roomNumber == 54) {
|
||||
for (l = floorY1 - 1; l > 84; l--) {
|
||||
factor_red[l] = (int)(far - pequegnez);
|
||||
factor_red[l] = (int)(upperLimit - pequegnez);
|
||||
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_talk3[4] = { 80, 102, 124, 146 };
|
||||
int x_talk4[4] = { 119, 158, 197, 236 };
|
||||
int face;
|
||||
int face = 0;
|
||||
int length = strlen(said);
|
||||
|
||||
color_abc(kColorWhite);
|
||||
|
|
|
@ -277,6 +277,19 @@ static const GOBGameDescription gameDescriptions[] = {
|
|||
kFeaturesNone,
|
||||
"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
|
||||
{
|
||||
"gob1",
|
||||
|
|
|
@ -112,7 +112,7 @@ void VGAVideoDriver::drawSprite(SurfaceDesc *source, SurfaceDesc *dest,
|
|||
if ((width < 1) || (height < 1))
|
||||
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;
|
||||
|
||||
uint32 size = width * height;
|
||||
|
|
|
@ -78,58 +78,6 @@ Goblin::Goblin(GobEngine *vm) : _vm(vm) {
|
|||
_pressedMapY = 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;
|
||||
_destItemState = 0;
|
||||
for (int i = 0; i < 20; i++) {
|
||||
|
@ -690,7 +638,7 @@ void Goblin::switchGoblin(int16 index) {
|
|||
_gobDestY = tmp;
|
||||
_vm->_map->_curGoblinY = tmp;
|
||||
|
||||
*_curGobVarPtr = _currentGoblin;
|
||||
_curGobVarPtr = (uint32) _currentGoblin;
|
||||
_pathExistence = 0;
|
||||
_readyToAct = 0;
|
||||
}
|
||||
|
@ -1250,172 +1198,172 @@ void Goblin::loadObjects(const char *source) {
|
|||
|
||||
void Goblin::saveGobDataToVars(int16 xPos, int16 yPos, int16 someVal) {
|
||||
Gob_Object *obj;
|
||||
*_some0ValPtr = someVal;
|
||||
*_curGobXPosVarPtr = xPos;
|
||||
*_curGobYPosVarPtr = yPos;
|
||||
*_itemInPocketVarPtr = _itemIndInPocket;
|
||||
_some0ValPtr = (uint32) someVal;
|
||||
_curGobXPosVarPtr = (uint32) xPos;
|
||||
_curGobYPosVarPtr = (uint32) yPos;
|
||||
_itemInPocketVarPtr = (uint32) _itemIndInPocket;
|
||||
|
||||
obj = _goblins[_currentGoblin];
|
||||
|
||||
*_curGobStateVarPtr = obj->state;
|
||||
*_curGobFrameVarPtr = obj->curFrame;
|
||||
*_curGobMultStateVarPtr = obj->multState;
|
||||
*_curGobNextStateVarPtr = obj->nextState;
|
||||
*_curGobScrXVarPtr = obj->xPos;
|
||||
*_curGobScrYVarPtr = obj->yPos;
|
||||
*_curGobLeftVarPtr = obj->left;
|
||||
*_curGobTopVarPtr = obj->top;
|
||||
*_curGobRightVarPtr = obj->right;
|
||||
*_curGobBottomVarPtr = obj->bottom;
|
||||
*_curGobDoAnimVarPtr = obj->doAnim;
|
||||
*_curGobOrderVarPtr = obj->order;
|
||||
*_curGobNoTickVarPtr = obj->noTick;
|
||||
*_curGobTypeVarPtr = obj->type;
|
||||
*_curGobMaxTickVarPtr = obj->maxTick;
|
||||
*_curGobTickVarPtr = obj->tick;
|
||||
*_curGobActStartStateVarPtr = obj->actionStartState;
|
||||
*_curGobLookDirVarPtr = obj->curLookDir;
|
||||
*_curGobPickableVarPtr = obj->pickable;
|
||||
*_curGobRelaxVarPtr = obj->relaxTime;
|
||||
*_curGobMaxFrameVarPtr = getObjMaxFrame(obj);
|
||||
_curGobStateVarPtr = (uint32) obj->state;
|
||||
_curGobFrameVarPtr = (uint32) obj->curFrame;
|
||||
_curGobMultStateVarPtr = (uint32) obj->multState;
|
||||
_curGobNextStateVarPtr = (uint32) obj->nextState;
|
||||
_curGobScrXVarPtr = (uint32) obj->xPos;
|
||||
_curGobScrYVarPtr = (uint32) obj->yPos;
|
||||
_curGobLeftVarPtr = (uint32) obj->left;
|
||||
_curGobTopVarPtr = (uint32) obj->top;
|
||||
_curGobRightVarPtr = (uint32) obj->right;
|
||||
_curGobBottomVarPtr = (uint32) obj->bottom;
|
||||
_curGobDoAnimVarPtr = (uint32) obj->doAnim;
|
||||
_curGobOrderVarPtr = (uint32) obj->order;
|
||||
_curGobNoTickVarPtr = (uint32) obj->noTick;
|
||||
_curGobTypeVarPtr = (uint32) obj->type;
|
||||
_curGobMaxTickVarPtr = (uint32) obj->maxTick;
|
||||
_curGobTickVarPtr = (uint32) obj->tick;
|
||||
_curGobActStartStateVarPtr = (uint32) obj->actionStartState;
|
||||
_curGobLookDirVarPtr = (uint32) obj->curLookDir;
|
||||
_curGobPickableVarPtr = (uint32) obj->pickable;
|
||||
_curGobRelaxVarPtr = (uint32) obj->relaxTime;
|
||||
_curGobMaxFrameVarPtr = (uint32) getObjMaxFrame(obj);
|
||||
|
||||
if (_actDestItemDesc == 0)
|
||||
return;
|
||||
|
||||
obj = _actDestItemDesc;
|
||||
*_destItemStateVarPtr = obj->state;
|
||||
*_destItemFrameVarPtr = obj->curFrame;
|
||||
*_destItemMultStateVarPtr = obj->multState;
|
||||
*_destItemNextStateVarPtr = obj->nextState;
|
||||
*_destItemScrXVarPtr = obj->xPos;
|
||||
*_destItemScrYVarPtr = obj->yPos;
|
||||
*_destItemLeftVarPtr = obj->left;
|
||||
*_destItemTopVarPtr = obj->top;
|
||||
*_destItemRightVarPtr = obj->right;
|
||||
*_destItemBottomVarPtr = obj->bottom;
|
||||
*_destItemDoAnimVarPtr = obj->doAnim;
|
||||
*_destItemOrderVarPtr = obj->order;
|
||||
*_destItemNoTickVarPtr = obj->noTick;
|
||||
*_destItemTypeVarPtr = obj->type;
|
||||
*_destItemMaxTickVarPtr = obj->maxTick;
|
||||
*_destItemTickVarPtr = obj->tick;
|
||||
*_destItemActStartStVarPtr = obj->actionStartState;
|
||||
*_destItemLookDirVarPtr = obj->curLookDir;
|
||||
*_destItemPickableVarPtr = obj->pickable;
|
||||
*_destItemRelaxVarPtr = obj->relaxTime;
|
||||
*_destItemMaxFrameVarPtr = getObjMaxFrame(obj);
|
||||
_destItemStateVarPtr = (uint32) obj->state;
|
||||
_destItemFrameVarPtr = (uint32) obj->curFrame;
|
||||
_destItemMultStateVarPtr = (uint32) obj->multState;
|
||||
_destItemNextStateVarPtr = (uint32) obj->nextState;
|
||||
_destItemScrXVarPtr = (uint32) obj->xPos;
|
||||
_destItemScrYVarPtr = (uint32) obj->yPos;
|
||||
_destItemLeftVarPtr = (uint32) obj->left;
|
||||
_destItemTopVarPtr = (uint32) obj->top;
|
||||
_destItemRightVarPtr = (uint32) obj->right;
|
||||
_destItemBottomVarPtr = (uint32) obj->bottom;
|
||||
_destItemDoAnimVarPtr = (uint32) obj->doAnim;
|
||||
_destItemOrderVarPtr = (uint32) obj->order;
|
||||
_destItemNoTickVarPtr = (uint32) obj->noTick;
|
||||
_destItemTypeVarPtr = (uint32) obj->type;
|
||||
_destItemMaxTickVarPtr = (uint32) obj->maxTick;
|
||||
_destItemTickVarPtr = (uint32) obj->tick;
|
||||
_destItemActStartStVarPtr = (uint32) obj->actionStartState;
|
||||
_destItemLookDirVarPtr = (uint32) obj->curLookDir;
|
||||
_destItemPickableVarPtr = (uint32) obj->pickable;
|
||||
_destItemRelaxVarPtr = (uint32) obj->relaxTime;
|
||||
_destItemMaxFrameVarPtr = (uint32) getObjMaxFrame(obj);
|
||||
|
||||
_destItemState = obj->state;
|
||||
_destItemType = obj->type;
|
||||
}
|
||||
|
||||
void Goblin::initVarPointers(void) {
|
||||
_gobRetVarPtr = (int32 *)VAR_ADDRESS(59);
|
||||
_curGobStateVarPtr = (int32 *)VAR_ADDRESS(60);
|
||||
_curGobFrameVarPtr = (int32 *)VAR_ADDRESS(61);
|
||||
_curGobMultStateVarPtr = (int32 *)VAR_ADDRESS(62);
|
||||
_curGobNextStateVarPtr = (int32 *)VAR_ADDRESS(63);
|
||||
_curGobScrXVarPtr = (int32 *)VAR_ADDRESS(64);
|
||||
_curGobScrYVarPtr = (int32 *)VAR_ADDRESS(65);
|
||||
_curGobLeftVarPtr = (int32 *)VAR_ADDRESS(66);
|
||||
_curGobTopVarPtr = (int32 *)VAR_ADDRESS(67);
|
||||
_curGobRightVarPtr = (int32 *)VAR_ADDRESS(68);
|
||||
_curGobBottomVarPtr = (int32 *)VAR_ADDRESS(69);
|
||||
_curGobDoAnimVarPtr = (int32 *)VAR_ADDRESS(70);
|
||||
_curGobOrderVarPtr = (int32 *)VAR_ADDRESS(71);
|
||||
_curGobNoTickVarPtr = (int32 *)VAR_ADDRESS(72);
|
||||
_curGobTypeVarPtr = (int32 *)VAR_ADDRESS(73);
|
||||
_curGobMaxTickVarPtr = (int32 *)VAR_ADDRESS(74);
|
||||
_curGobTickVarPtr = (int32 *)VAR_ADDRESS(75);
|
||||
_curGobActStartStateVarPtr = (int32 *)VAR_ADDRESS(76);
|
||||
_curGobLookDirVarPtr = (int32 *)VAR_ADDRESS(77);
|
||||
_curGobPickableVarPtr = (int32 *)VAR_ADDRESS(80);
|
||||
_curGobRelaxVarPtr = (int32 *)VAR_ADDRESS(81);
|
||||
_destItemStateVarPtr = (int32 *)VAR_ADDRESS(82);
|
||||
_destItemFrameVarPtr = (int32 *)VAR_ADDRESS(83);
|
||||
_destItemMultStateVarPtr = (int32 *)VAR_ADDRESS(84);
|
||||
_destItemNextStateVarPtr = (int32 *)VAR_ADDRESS(85);
|
||||
_destItemScrXVarPtr = (int32 *)VAR_ADDRESS(86);
|
||||
_destItemScrYVarPtr = (int32 *)VAR_ADDRESS(87);
|
||||
_destItemLeftVarPtr = (int32 *)VAR_ADDRESS(88);
|
||||
_destItemTopVarPtr = (int32 *)VAR_ADDRESS(89);
|
||||
_destItemRightVarPtr = (int32 *)VAR_ADDRESS(90);
|
||||
_destItemBottomVarPtr = (int32 *)VAR_ADDRESS(91);
|
||||
_destItemDoAnimVarPtr = (int32 *)VAR_ADDRESS(92);
|
||||
_destItemOrderVarPtr = (int32 *)VAR_ADDRESS(93);
|
||||
_destItemNoTickVarPtr = (int32 *)VAR_ADDRESS(94);
|
||||
_destItemTypeVarPtr = (int32 *)VAR_ADDRESS(95);
|
||||
_destItemMaxTickVarPtr = (int32 *)VAR_ADDRESS(96);
|
||||
_destItemTickVarPtr = (int32 *)VAR_ADDRESS(97);
|
||||
_destItemActStartStVarPtr = (int32 *)VAR_ADDRESS(98);
|
||||
_destItemLookDirVarPtr = (int32 *)VAR_ADDRESS(99);
|
||||
_destItemPickableVarPtr = (int32 *)VAR_ADDRESS(102);
|
||||
_destItemRelaxVarPtr = (int32 *)VAR_ADDRESS(103);
|
||||
_destItemMaxFrameVarPtr = (int32 *)VAR_ADDRESS(105);
|
||||
_curGobVarPtr = (int32 *)VAR_ADDRESS(106);
|
||||
_some0ValPtr = (int32 *)VAR_ADDRESS(107);
|
||||
_curGobXPosVarPtr = (int32 *)VAR_ADDRESS(108);
|
||||
_curGobYPosVarPtr = (int32 *)VAR_ADDRESS(109);
|
||||
_curGobMaxFrameVarPtr = (int32 *)VAR_ADDRESS(110);
|
||||
_gobRetVarPtr.set(*_vm->_inter->_variables, 236);
|
||||
_curGobStateVarPtr.set(*_vm->_inter->_variables, 240);
|
||||
_curGobFrameVarPtr.set(*_vm->_inter->_variables, 244);
|
||||
_curGobMultStateVarPtr.set(*_vm->_inter->_variables, 248);
|
||||
_curGobNextStateVarPtr.set(*_vm->_inter->_variables, 252);
|
||||
_curGobScrXVarPtr.set(*_vm->_inter->_variables, 256);
|
||||
_curGobScrYVarPtr.set(*_vm->_inter->_variables, 260);
|
||||
_curGobLeftVarPtr.set(*_vm->_inter->_variables, 264);
|
||||
_curGobTopVarPtr.set(*_vm->_inter->_variables, 268);
|
||||
_curGobRightVarPtr.set(*_vm->_inter->_variables, 272);
|
||||
_curGobBottomVarPtr.set(*_vm->_inter->_variables, 276);
|
||||
_curGobDoAnimVarPtr.set(*_vm->_inter->_variables, 280);
|
||||
_curGobOrderVarPtr.set(*_vm->_inter->_variables, 284);
|
||||
_curGobNoTickVarPtr.set(*_vm->_inter->_variables, 288);
|
||||
_curGobTypeVarPtr.set(*_vm->_inter->_variables, 292);
|
||||
_curGobMaxTickVarPtr.set(*_vm->_inter->_variables, 296);
|
||||
_curGobTickVarPtr.set(*_vm->_inter->_variables, 300);
|
||||
_curGobActStartStateVarPtr.set(*_vm->_inter->_variables, 304);
|
||||
_curGobLookDirVarPtr.set(*_vm->_inter->_variables, 308);
|
||||
_curGobPickableVarPtr.set(*_vm->_inter->_variables, 320);
|
||||
_curGobRelaxVarPtr.set(*_vm->_inter->_variables, 324);
|
||||
_destItemStateVarPtr.set(*_vm->_inter->_variables, 328);
|
||||
_destItemFrameVarPtr.set(*_vm->_inter->_variables, 332);
|
||||
_destItemMultStateVarPtr.set(*_vm->_inter->_variables, 336);
|
||||
_destItemNextStateVarPtr.set(*_vm->_inter->_variables, 340);
|
||||
_destItemScrXVarPtr.set(*_vm->_inter->_variables, 344);
|
||||
_destItemScrYVarPtr.set(*_vm->_inter->_variables, 348);
|
||||
_destItemLeftVarPtr.set(*_vm->_inter->_variables, 352);
|
||||
_destItemTopVarPtr.set(*_vm->_inter->_variables, 356);
|
||||
_destItemRightVarPtr.set(*_vm->_inter->_variables, 360);
|
||||
_destItemBottomVarPtr.set(*_vm->_inter->_variables, 364);
|
||||
_destItemDoAnimVarPtr.set(*_vm->_inter->_variables, 368);
|
||||
_destItemOrderVarPtr.set(*_vm->_inter->_variables, 372);
|
||||
_destItemNoTickVarPtr.set(*_vm->_inter->_variables, 376);
|
||||
_destItemTypeVarPtr.set(*_vm->_inter->_variables, 380);
|
||||
_destItemMaxTickVarPtr.set(*_vm->_inter->_variables, 384);
|
||||
_destItemTickVarPtr.set(*_vm->_inter->_variables, 388);
|
||||
_destItemActStartStVarPtr.set(*_vm->_inter->_variables, 392);
|
||||
_destItemLookDirVarPtr.set(*_vm->_inter->_variables, 396);
|
||||
_destItemPickableVarPtr.set(*_vm->_inter->_variables, 408);
|
||||
_destItemRelaxVarPtr.set(*_vm->_inter->_variables, 412);
|
||||
_destItemMaxFrameVarPtr.set(*_vm->_inter->_variables, 420);
|
||||
_curGobVarPtr.set(*_vm->_inter->_variables, 424);
|
||||
_some0ValPtr.set(*_vm->_inter->_variables, 428);
|
||||
_curGobXPosVarPtr.set(*_vm->_inter->_variables, 432);
|
||||
_curGobYPosVarPtr.set(*_vm->_inter->_variables, 436);
|
||||
_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) {
|
||||
Gob_Object *obj;
|
||||
|
||||
_itemIndInPocket = *_itemInPocketVarPtr;
|
||||
_itemIndInPocket = (int32) _itemInPocketVarPtr;
|
||||
|
||||
obj = _goblins[_currentGoblin];
|
||||
|
||||
obj->state = *_curGobStateVarPtr;
|
||||
obj->curFrame = *_curGobFrameVarPtr;
|
||||
obj->multState = *_curGobMultStateVarPtr;
|
||||
obj->nextState = *_curGobNextStateVarPtr;
|
||||
obj->xPos = *_curGobScrXVarPtr;
|
||||
obj->yPos = *_curGobScrYVarPtr;
|
||||
obj->left = *_curGobLeftVarPtr;
|
||||
obj->top = *_curGobTopVarPtr;
|
||||
obj->right = *_curGobRightVarPtr;
|
||||
obj->bottom = *_curGobBottomVarPtr;
|
||||
obj->doAnim = *_curGobDoAnimVarPtr;
|
||||
obj->order = *_curGobOrderVarPtr;
|
||||
obj->noTick = *_curGobNoTickVarPtr;
|
||||
obj->type = *_curGobTypeVarPtr;
|
||||
obj->maxTick = *_curGobMaxTickVarPtr;
|
||||
obj->tick = *_curGobTickVarPtr;
|
||||
obj->actionStartState = *_curGobActStartStateVarPtr;
|
||||
obj->curLookDir = *_curGobLookDirVarPtr;
|
||||
obj->pickable = *_curGobPickableVarPtr;
|
||||
obj->relaxTime = *_curGobRelaxVarPtr;
|
||||
obj->state = (int32) _curGobStateVarPtr;
|
||||
obj->curFrame = (int32) _curGobFrameVarPtr;
|
||||
obj->multState = (int32) _curGobMultStateVarPtr;
|
||||
obj->nextState = (int32) _curGobNextStateVarPtr;
|
||||
obj->xPos = (int32) _curGobScrXVarPtr;
|
||||
obj->yPos = (int32) _curGobScrYVarPtr;
|
||||
obj->left = (int32) _curGobLeftVarPtr;
|
||||
obj->top = (int32) _curGobTopVarPtr;
|
||||
obj->right = (int32) _curGobRightVarPtr;
|
||||
obj->bottom = (int32) _curGobBottomVarPtr;
|
||||
obj->doAnim = (int32) _curGobDoAnimVarPtr;
|
||||
obj->order = (int32) _curGobOrderVarPtr;
|
||||
obj->noTick = (int32) _curGobNoTickVarPtr;
|
||||
obj->type = (int32) _curGobTypeVarPtr;
|
||||
obj->maxTick = (int32) _curGobMaxTickVarPtr;
|
||||
obj->tick = (int32) _curGobTickVarPtr;
|
||||
obj->actionStartState = (int32) _curGobActStartStateVarPtr;
|
||||
obj->curLookDir = (int32) _curGobLookDirVarPtr;
|
||||
obj->pickable = (int32) _curGobPickableVarPtr;
|
||||
obj->relaxTime = (int32) _curGobRelaxVarPtr;
|
||||
|
||||
if (_actDestItemDesc == 0)
|
||||
return;
|
||||
|
||||
obj = _actDestItemDesc;
|
||||
|
||||
obj->state = *_destItemStateVarPtr;
|
||||
obj->curFrame = *_destItemFrameVarPtr;
|
||||
obj->multState = *_destItemMultStateVarPtr;
|
||||
obj->nextState = *_destItemNextStateVarPtr;
|
||||
obj->xPos = *_destItemScrXVarPtr;
|
||||
obj->yPos = *_destItemScrYVarPtr;
|
||||
obj->left = *_destItemLeftVarPtr;
|
||||
obj->top = *_destItemTopVarPtr;
|
||||
obj->right = *_destItemRightVarPtr;
|
||||
obj->bottom = *_destItemBottomVarPtr;
|
||||
obj->doAnim = *_destItemDoAnimVarPtr;
|
||||
obj->order = *_destItemOrderVarPtr;
|
||||
obj->noTick = *_destItemNoTickVarPtr;
|
||||
obj->type = *_destItemTypeVarPtr;
|
||||
obj->maxTick = *_destItemMaxTickVarPtr;
|
||||
obj->tick = *_destItemTickVarPtr;
|
||||
obj->actionStartState = *_destItemActStartStVarPtr;
|
||||
obj->curLookDir = *_destItemLookDirVarPtr;
|
||||
obj->pickable = *_destItemPickableVarPtr;
|
||||
obj->relaxTime = *_destItemRelaxVarPtr;
|
||||
obj->state = (int32) _destItemStateVarPtr;
|
||||
obj->curFrame = (int32) _destItemFrameVarPtr;
|
||||
obj->multState = (int32) _destItemMultStateVarPtr;
|
||||
obj->nextState = (int32) _destItemNextStateVarPtr;
|
||||
obj->xPos = (int32) _destItemScrXVarPtr;
|
||||
obj->yPos = (int32) _destItemScrYVarPtr;
|
||||
obj->left = (int32) _destItemLeftVarPtr;
|
||||
obj->top = (int32) _destItemTopVarPtr;
|
||||
obj->right = (int32) _destItemRightVarPtr;
|
||||
obj->bottom = (int32) _destItemBottomVarPtr;
|
||||
obj->doAnim = (int32) _destItemDoAnimVarPtr;
|
||||
obj->order = (int32) _destItemOrderVarPtr;
|
||||
obj->noTick = (int32) _destItemNoTickVarPtr;
|
||||
obj->type = (int32) _destItemTypeVarPtr;
|
||||
obj->maxTick = (int32) _destItemMaxTickVarPtr;
|
||||
obj->tick = (int32) _destItemTickVarPtr;
|
||||
obj->actionStartState = (int32) _destItemActStartStVarPtr;
|
||||
obj->curLookDir = (int32) _destItemLookDirVarPtr;
|
||||
obj->pickable = (int32) _destItemPickableVarPtr;
|
||||
obj->relaxTime = (int32) _destItemRelaxVarPtr;
|
||||
|
||||
if (obj->type != _destItemType)
|
||||
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