Made MorphOS port use master makefile, few compilation fixes

svn-id: r4800
This commit is contained in:
Ruediger Hanke 2002-08-22 10:43:50 +00:00
parent e0cfd49ef7
commit 31f6833f87
6 changed files with 24 additions and 16 deletions

View File

@ -1,5 +1,11 @@
CC = g++ CXX = g++
CFLAGS = -Wno-multichar -fstrength-reduce -fno-rtti -O2 CFLAGS = -Wno-multichar -fstrength-reduce -fno-rtti -O2
DEFINES = -DNO_PPCINLINE_STDARG -DNO_PPCINLINE_VARARGS DEFINES = -DNO_PPCINLINE_STDARG -DNO_PPCINLINE_VARARGS
LDFLAGS = -noixemul -s LDFLAGS = -noixemul -s
LIBS = -lamiga -lamigastubs -lcdda LIBS = -lamiga -lamigastubs -lcdda
INCLUDES += -Ibackends/morphos
MODULES += backends/morphos
OBJS += backends/morphos/morphos.o backends/morphos/morphos_scaler.o \
backends/morphos/morphos_sound.o backends/morphos/morphos_start.o \
backends/morphos/morphos_timer.o

View File

@ -66,7 +66,7 @@ bool init_morphos_music(ULONG MidiUnit)
if (ScummMidiRequest) if (ScummMidiRequest)
{ {
ScummMidiRequest->amr_Version = 2; ScummMidiRequest->amr_Version = 2;
if (OpenDevice("amidi.device", MidiUnit, (IORequest *) ScummMidiRequest, AMIDIF_MIDISERVER)) if (OpenDevice("amidi.device", MidiUnit, (IORequest *) ScummMidiRequest, 0))
{ {
DeleteIORequest((IORequest *) ScummMidiRequest); DeleteIORequest((IORequest *) ScummMidiRequest);
DeleteMsgPort(ScummMidiPort); DeleteMsgPort(ScummMidiPort);

View File

@ -50,6 +50,7 @@ Timer::Timer(Scumm * system)
ThreadEmulFunc.StackSize = 16000; ThreadEmulFunc.StackSize = 16000;
ThreadEmulFunc.Extension = 0; ThreadEmulFunc.Extension = 0;
ThreadEmulFunc.Arg1 = (ULONG) this; ThreadEmulFunc.Arg1 = (ULONG) this;
ThreadEmulFunc.Arg2 = (ULONG) system;
TimerServiceTags[0].ti_Data = (ULONG) &ThreadEmulFunc; TimerServiceTags[0].ti_Data = (ULONG) &ThreadEmulFunc;
TimerServiceThread = CreateNewProc(TimerServiceTags); TimerServiceThread = CreateNewProc(TimerServiceTags);
} }
@ -73,17 +74,17 @@ void Timer::release()
{ {
} }
bool Timer::installProcedure(int ((*procedure)(int)), int32 interval) bool Timer::installProcedure(TimerProc procedure, int32 interval)
{ {
return SendMsg(TSM_MSGID_ADDTIMER, procedure, interval); return SendMsg(TSM_MSGID_ADDTIMER, procedure, interval);
} }
void Timer::releaseProcedure(int ((*procedure)(int))) void Timer::releaseProcedure(TimerProc procedure)
{ {
SendMsg(TSM_MSGID_REMTIMER, procedure, 0); SendMsg(TSM_MSGID_REMTIMER, procedure, 0);
} }
bool Timer::SendMsg(ULONG msg_id, int ((*procedure)(int)), LONG interval) bool Timer::SendMsg(ULONG msg_id, TimerProc procedure, LONG interval)
{ {
if (TimerServiceThread == NULL) if (TimerServiceThread == NULL)
return false; return false;
@ -115,7 +116,7 @@ bool Timer::SendMsg(ULONG msg_id, int ((*procedure)(int)), LONG interval)
return true; return true;
} }
void Timer::TimerService(Timer *this_ptr) void Timer::TimerService(Timer *this_ptr, Scumm *system)
{ {
MsgPort *port = &((Process *) FindTask(NULL))->pr_MsgPort; MsgPort *port = &((Process *) FindTask(NULL))->pr_MsgPort;
ULONG port_bit = 1 << port->mp_SigBit; ULONG port_bit = 1 << port->mp_SigBit;
@ -215,7 +216,7 @@ void Timer::TimerService(Timer *this_ptr)
timerequest *req = timer_slots[t].ts_IORequest; timerequest *req = timer_slots[t].ts_IORequest;
WaitIO((IORequest *) req); WaitIO((IORequest *) req);
interval = timer_slots[t].ts_Interval; interval = timer_slots[t].ts_Interval;
(*timer_slots[t].ts_Callback)(interval); (*timer_slots[t].ts_Callback)(system);
GetSysTime(&end_callback); GetSysTime(&end_callback);
SubTime(&end_callback, &start_callback); SubTime(&end_callback, &start_callback);
interval -= end_callback.tv_sec*1000+end_callback.tv_micro/1000+40; interval -= end_callback.tv_sec*1000+end_callback.tv_micro/1000+40;

View File

@ -44,13 +44,13 @@
class OSystem; class OSystem;
#define TSM_MSGID_ADDTIMER 0 #define TSM_MSGID_ADDTIMER 0
#define TSM_MSGID_REMTIMER 1 #define TSM_MSGID_REMTIMER 1
struct TimerServiceMessage struct TimerServiceMessage
{ {
Message tsm_Message; Message tsm_Message;
ULONG tsm_MsgID; ULONG tsm_MsgID;
int ((*tsm_Callback)(int)); TimerProc tsm_Callback;
LONG tsm_Interval; LONG tsm_Interval;
}; };
@ -62,12 +62,12 @@ class Timer
bool init(); bool init();
void release(); void release();
bool installProcedure(int ((*procedure)(int)), int32 interval); bool installProcedure(TimerProc procedure, int32 interval);
void releaseProcedure(int ((*procedure)(int))); void releaseProcedure(TimerProc procedure);
protected: protected:
bool SendMsg(ULONG MsgID, int ((*procedure)(int)), LONG interval); bool SendMsg(ULONG MsgID, TimerProc procedure, LONG interval);
static void TimerService(Timer *); static void TimerService(Timer *, Scumm *);
Process *TimerServiceThread; Process *TimerServiceThread;
SignalSemaphore TimerServiceSemaphore; SignalSemaphore TimerServiceSemaphore;
@ -77,7 +77,7 @@ class Timer
MsgPort *ts_Port; MsgPort *ts_Port;
timerequest *ts_IORequest; timerequest *ts_IORequest;
ULONG ts_SignalBit; ULONG ts_SignalBit;
int ((*ts_Callback)(int)); TimerProc ts_Callback;
LONG ts_Interval; LONG ts_Interval;
}; };
}; };

View File

@ -23,6 +23,7 @@
#include "scummsys.h" #include "scummsys.h"
#include "timer.h" #include "timer.h"
#ifndef __MORPHOS__
static Scumm * scumm; static Scumm * scumm;
Timer::Timer(Scumm * parent) { Timer::Timer(Scumm * parent) {
@ -153,5 +154,5 @@ void Timer::releaseProcedure (TimerProc procedure) {
} }
_timerRunning = true; _timerRunning = true;
} }
#endif

View File

@ -28,7 +28,7 @@
typedef void (*TimerProc)(Scumm *); typedef void (*TimerProc)(Scumm *);
#ifdef __MORPHOS__ #ifdef __MORPHOS__
#include "morphos/morphos_timer.h" #include "morphos_timer.h"
#else #else
class OSystem; class OSystem;