aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backends/morphos/morphos.cpp66
-rw-r--r--backends/morphos/morphos_start.cpp1
-rw-r--r--backends/morphos/morphos_timer.cpp2
3 files changed, 53 insertions, 16 deletions
diff --git a/backends/morphos/morphos.cpp b/backends/morphos/morphos.cpp
index 065b4e1021..87b55f6cf0 100644
--- a/backends/morphos/morphos.cpp
+++ b/backends/morphos/morphos.cpp
@@ -22,6 +22,7 @@
*/
#include "stdafx.h"
+#include "engine.h"
#include "common/util.h"
#include "scumm/scumm.h"
@@ -54,9 +55,6 @@
#include "morphos_sound.h"
#include "morphos_scaler.h"
-static TagItem FindCDTags[] = { { CDFA_VolumeName, 0 },
- { TAG_DONE, 0 }
- };
static TagItem PlayTags[] = { { CDPA_StartTrack, 1 },
{ CDPA_StartFrame, 0 },
{ CDPA_EndTrack, 1 },
@@ -65,6 +63,11 @@ static TagItem PlayTags[] = { { CDPA_StartTrack, 1 },
{ TAG_DONE, 0 }
};
+static CONST_STRPTR MonkeyCDIDs[] = { "ID2500496F035CBC", "ID250040360345DB", NULL };
+static CONST_STRPTR LoomCDIDs[] = { NULL };
+static CONST_STRPTR MonkeyNames[] = { "Monkey1CD", "Madness", NULL };
+static CONST_STRPTR LoomNames[] = { "LoomCD", NULL };
+
#define BLOCKSIZE_X 32
#define BLOCKSIZE_Y 8
@@ -352,16 +355,54 @@ uint32 OSystem_MorphOS::property(int param, Property *value)
return 1;
case PROP_OPEN_CD:
- FindCDTags[0].ti_Data = (ULONG) ((GameID == GID_LOOM256) ? "LoomCD" : "Monkey1CD");
+ {
+ CONST_STRPTR *ids = NULL, *names = NULL;
+
+ switch (GameID)
+ {
+ case GID_MONKEY:
+ ids = MonkeyCDIDs;
+ names = MonkeyNames;
+ break;
+
+ case GID_LOOM256:
+ ids = LoomCDIDs;
+ names = LoomNames;
+ break;
+ }
+
if (!CDDABase) CDDABase = OpenLibrary("cdda.library", 2);
if (CDDABase)
{
- CDrive = CDDA_FindNextDriveA(NULL, FindCDTags);
- if (!CDrive && GameID == GID_MONKEY)
+ CDrive = NULL;
+ if (ids)
+ {
+ int i = 0;
+
+ while (ids[i] && !CDrive)
+ {
+ TagItem FindCDTags[] = { { CDFA_CDID, (ULONG) ids[i] },
+ { TAG_DONE, 0 }
+ };
+ CDrive = CDDA_FindNextDriveA(NULL, FindCDTags);
+ i++;
+ }
+ }
+
+ if (!CDrive && names)
{
- FindCDTags[0].ti_Data = (ULONG) "Madness";
- CDrive = CDDA_FindNextDriveA(NULL, FindCDTags);
+ int i = 0;
+
+ while (names[i] && !CDrive)
+ {
+ TagItem FindCDTags[] = { { CDFA_VolumeName, (ULONG) names[i] },
+ { TAG_DONE, 0 }
+ };
+ CDrive = CDDA_FindNextDriveA(NULL, FindCDTags);
+ i++;
+ }
}
+
if (CDrive)
{
if (!CDDA_ObtainDriveA(CDrive, CDDA_SHARED_ACCESS, NULL))
@@ -384,6 +425,7 @@ uint32 OSystem_MorphOS::property(int param, Property *value)
else
warning( "Failed to open cdda.library - cd audio will not play" );
break;
+ }
case PROP_SHOW_DEFAULT_CURSOR:
if (value->show_cursor)
@@ -809,7 +851,7 @@ bool OSystem_MorphOS::poll_event(Event *event)
}
event->kbd.ascii = charbuf;
- event->kbd.keycode = event->kbd.ascii;
+ event->kbd.keycode = charbuf;
}
break;
}
@@ -1506,11 +1548,6 @@ void OSystem_MorphOS::grab_overlay(int16 *buf, int pitch)
do
{
-/* for (x = 0; x < ScummBufferWidth; x++)
- {
- *buf++ = (src[0]*31/255 << 11) | (src[1]*63/255 << 5) | src[2]*31/255;
- src += 3;
- }*/
for (x = 0; x < pitch; x++)
{
*buf++ = (src[0]*31/255 << 11) | (src[1]*63/255 << 5) | src[2]*31/255;
@@ -1528,7 +1565,6 @@ void OSystem_MorphOS::copy_rect_overlay(const int16 *ovl, int pitch, int x, int
LONG last_col[2] = { -1, -1 };
LONG last_pen[2] = { -1, -1 };
- printf("copy_rect_overlay(%d, %d, %d, %d, %d)\n", pitch, x, y, w, h);
if (w > pitch) w = pitch;
bmap = (UBYTE*) AllocVec(w*h, MEMF_ANY);
if (bmap)
diff --git a/backends/morphos/morphos_start.cpp b/backends/morphos/morphos_start.cpp
index 0674af106a..9ee85f9cc8 100644
--- a/backends/morphos/morphos_start.cpp
+++ b/backends/morphos/morphos_start.cpp
@@ -35,6 +35,7 @@
#include "stdafx.h"
#include "scumm/scumm.h"
+#include "common/scaler.h"
#include "sound/mididrv.h"
#include "morphos.h"
#include "morphos_scaler.h"
diff --git a/backends/morphos/morphos_timer.cpp b/backends/morphos/morphos_timer.cpp
index b9061aafaa..f3ba9e5341 100644
--- a/backends/morphos/morphos_timer.cpp
+++ b/backends/morphos/morphos_timer.cpp
@@ -40,7 +40,7 @@ Timer::Timer(Engine * engine)
TimerServiceThread = CreateNewProcTags(NP_Entry, (ULONG) TimerService,
NP_CodeType, CODETYPE_PPC,
NP_Name, (ULONG) "ScummVM Timer Service",
- NP_Priority, 50,
+ NP_Priority, 20,
NP_PPC_Arg1, (ULONG) this,
NP_PPC_Arg2, (ULONG) engine,
TAG_DONE