aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--saga/math.cpp72
-rw-r--r--saga/math.h35
-rw-r--r--saga/math_mod.h42
-rw-r--r--saga/module.mk5
-rw-r--r--saga/objectmap.cpp34
-rw-r--r--saga/reinherit.h7
-rw-r--r--saga/saga.cpp7
-rw-r--r--saga/sysio.cpp65
-rw-r--r--saga/xmidi.cpp832
-rw-r--r--saga/xmidi.h117
-rw-r--r--saga/xmidi_mod.h115
11 files changed, 34 insertions, 1297 deletions
diff --git a/saga/math.cpp b/saga/math.cpp
deleted file mode 100644
index 1c3b12fc93..0000000000
--- a/saga/math.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-/* ScummVM - Scumm Interpreter
- * Copyright (C) 2004 The ScummVM project
- *
- * The ReInherit Engine is (C)2000-2003 by Daniel Balsom.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * $Header$
- *
- */
-/*
-
- Description:
-
- Math routines
-
- Notes:
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "reinherit.h"
-
-namespace Saga {
-
-int
-MATH_HitTestPoly(R_POINT * points, unsigned int npoints, R_POINT test_point)
-{
- int yflag0;
- int yflag1;
- int inside_flag = 0;
- unsigned int pt;
-
- R_POINT *vtx0 = &points[npoints - 1];
- R_POINT *vtx1 = &points[0];
-
- yflag0 = (vtx0->y >= test_point.y);
-
- for (pt = 0; pt < npoints; pt++, vtx1++) {
-
- yflag1 = (vtx1->y >= test_point.y);
-
- if (yflag0 != yflag1) {
-
- if (((vtx1->y - test_point.y) * (vtx0->x - vtx1->x) >=
- (vtx1->x - test_point.x) * (vtx0->y -
- vtx1->y)) == yflag1) {
-
- inside_flag = !inside_flag;
- }
- }
- yflag0 = yflag1;
- vtx0 = vtx1;
- }
-
- return inside_flag;
-}
-
-} // End of namespace Saga
diff --git a/saga/math.h b/saga/math.h
deleted file mode 100644
index 645fd33bd7..0000000000
--- a/saga/math.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* ScummVM - Scumm Interpreter
- * Copyright (C) 2004 The ScummVM project
- *
- * The ReInherit Engine is (C)2000-2003 by Daniel Balsom.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * $Header$
- *
- */
-/*
-
- Description:
-
- Math routines implementation header
-
- Notes:
-*/
-
-#ifndef SAGA_MATH_H__
-#define SAGA_MATH_H__
-
-#endif /* SAGA_MATH_H__ */
diff --git a/saga/math_mod.h b/saga/math_mod.h
deleted file mode 100644
index 13219fbebd..0000000000
--- a/saga/math_mod.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* ScummVM - Scumm Interpreter
- * Copyright (C) 2004 The ScummVM project
- *
- * The ReInherit Engine is (C)2000-2003 by Daniel Balsom.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * $Header$
- *
- */
-/*
-
- Description:
-
- Math routines public header
-
- Notes:
-*/
-
-#ifndef SAGA_MATH_MOD_H__
-#define SAGA_MATH_MOD_H__
-
-namespace Saga {
-
-int
-MATH_HitTestPoly(R_POINT * points, unsigned int npoints, R_POINT test_point);
-
-} // End of namespace Saga
-
-#endif /* SAGA_MATH_MOD_H__ */
diff --git a/saga/module.mk b/saga/module.mk
index fec1996432..766f04a96e 100644
--- a/saga/module.mk
+++ b/saga/module.mk
@@ -18,7 +18,6 @@ MODULE_OBJS = \
saga/interface.o \
saga/isomap.o \
saga/ite_introproc.o \
- saga/math.o \
saga/objectmap.o \
saga/palanim.o \
saga/render.o \
@@ -36,7 +35,6 @@ MODULE_OBJS = \
saga/sthread.o \
saga/text.o \
saga/transitions.o \
- saga/xmidi.o \
saga/ys_binread.o \
saga/ys_binwrite.o \
saga/ys_dl_list.o \
@@ -44,8 +42,7 @@ MODULE_OBJS = \
saga/sysinput.o \
saga/systimer.o \
saga/sysmusic.o \
- saga/syssound.o \
- saga/sysio.o
+ saga/syssound.o
MODULE_DIRS += \
saga
diff --git a/saga/objectmap.cpp b/saga/objectmap.cpp
index c19891179a..5105bb54df 100644
--- a/saga/objectmap.cpp
+++ b/saga/objectmap.cpp
@@ -43,7 +43,6 @@
#include "cvar_mod.h"
#include "console_mod.h"
#include "gfx_mod.h"
-#include "math_mod.h"
#include "font_mod.h"
/*
@@ -465,6 +464,39 @@ int OBJECTMAP_Draw(R_SURFACE * ds, R_POINT * imouse_pt, int color, int color2)
return R_SUCCESS;
}
+static bool
+MATH_HitTestPoly(R_POINT * points, unsigned int npoints, R_POINT test_point)
+{
+ int yflag0;
+ int yflag1;
+ bool inside_flag = false;
+ unsigned int pt;
+
+ R_POINT *vtx0 = &points[npoints - 1];
+ R_POINT *vtx1 = &points[0];
+
+ yflag0 = (vtx0->y >= test_point.y);
+
+ for (pt = 0; pt < npoints; pt++, vtx1++) {
+
+ yflag1 = (vtx1->y >= test_point.y);
+
+ if (yflag0 != yflag1) {
+
+ if (((vtx1->y - test_point.y) * (vtx0->x - vtx1->x) >=
+ (vtx1->x - test_point.x) * (vtx0->y -
+ vtx1->y)) == yflag1) {
+
+ inside_flag = !inside_flag;
+ }
+ }
+ yflag0 = yflag1;
+ vtx0 = vtx1;
+ }
+
+ return inside_flag;
+}
+
int OBJECTMAP_HitTest(R_POINT * imouse_pt, int *object_num)
{
diff --git a/saga/reinherit.h b/saga/reinherit.h
index d9b4890256..bb48402dcd 100644
--- a/saga/reinherit.h
+++ b/saga/reinherit.h
@@ -173,13 +173,6 @@ int TRANSITION_Dissolve(uchar * dst_img,
\*--------------------------------------------------------------------------*/
/*
- * System : IO
-\*--------------------------------------------------------------------------*/
-
-int SYSIO_Init(void);
-int SYSIO_Shutdown(void);
-
-/*
* System : Sound
\*--------------------------------------------------------------------------*/
int SYSSOUND_Init(int enabled);
diff --git a/saga/saga.cpp b/saga/saga.cpp
index 78252619b0..7fcea4dcf2 100644
--- a/saga/saga.cpp
+++ b/saga/saga.cpp
@@ -231,11 +231,6 @@ void SagaEngine::go() {
/* System initialization
* \*------------------------------------------------------------- */
- if (SYSIO_Init() != R_SUCCESS) {
-
- return;
- }
-
/* Must initialize system timer module first */
if (SYSTIMER_InitMSCounter() != R_SUCCESS) {
@@ -329,8 +324,6 @@ void R_Shutdown(int param) {
SYSMUSIC_Shutdown();
SYSSOUND_Shutdown();
- SYSIO_Shutdown();
-
/* exit(param); */
}
diff --git a/saga/sysio.cpp b/saga/sysio.cpp
deleted file mode 100644
index 4f688ba607..0000000000
--- a/saga/sysio.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/* ScummVM - Scumm Interpreter
- * Copyright (C) 2004 The ScummVM project
- *
- * The ReInherit Engine is (C)2000-2003 by Daniel Balsom.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * $Header$
- *
- */
-
-#include "reinherit.h"
-
-#include "SDL.h"
-
-namespace Saga {
-
-/*
- * Uses the following modules:
-\*--------------------------------------------------------------------------*/
-
-/*
- * Begin module component
-\*--------------------------------------------------------------------------*/
-
-int SYSIO_Init(void)
-{
-
- int result;
-
- /* Initialize SDL library */
- result = SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_AUDIO);
-
- if (result != 0) {
-
- R_printf(R_STDERR, "SDL library initialization failed.\n");
-
- return R_FAILURE;
- }
-
- R_printf(R_STDOUT, "SDL library initialized.\n");
-
- return R_SUCCESS;
-}
-
-int SYSIO_Shutdown(void)
-{
-
- return R_SUCCESS;
-}
-
-} // End of namespace Saga
-
diff --git a/saga/xmidi.cpp b/saga/xmidi.cpp
deleted file mode 100644
index 345fa07c3e..0000000000
--- a/saga/xmidi.cpp
+++ /dev/null
@@ -1,832 +0,0 @@
-/* ScummVM - Scumm Interpreter
- * Copyright (C) 2004 The ScummVM project
- *
- * The ReInherit Engine is (C)2000-2003 by Daniel Balsom.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * $Header$
- *
- */
-/*
- Description:
-
- XMIDI conversion routines
-
- Notes:
-
- Code adapted from XMILoader by Keet ( fox@foxpaws.net ), (C)2000
-*/
-
-#include "reinherit.h"
-
-#include "yslib.h"
-
-/* Begin module component
-\*--------------------------------------------------------------------------*/
-#include "xmidi_mod.h"
-#include "xmidi.h"
-
-namespace Saga {
-
-int
-ConvertEventListToSMF(XMIDIEVENT_LIST * event_list,
- uchar ** smf_ptr, size_t * smf_len)
-/*--------------------------------------------------------------------------*\
- * Given a pointer to an event list structure, this function creates and
- * returns a pointer to a Standard Midi File (SMF) image and the image's
- * length in bytes.
-\*--------------------------------------------------------------------------*/
-{
- YS_IGNORE_PARAM(event_list);
- YS_IGNORE_PARAM(smf_ptr);
- YS_IGNORE_PARAM(smf_len);
-
-#if 0
- SMF_HEADER_CHUNK smfh;
- SMF_TRACK_CHUNK smft;
-
- XMIDIEVENT *event_p;
-
- uchar *write_p = NULL;
- uchar *smf_buf = NULL;
-
- size_t alloc_size;
-
- int vlq_len;
-
- if ((smf_ptr == NULL) || (smf_len == NULL)) {
-
- return R_FAILURE;
- }
-
- /* Allocate memory for SMF image
- * \*---------------------------------------------------------------------- */
- alloc_size = event_list->smf_size + MIDI_HEADER_LEN +
- MIDI_TRACK_CHUNK_LEN;
-
- /* SMF requires an even size */
- if (alloc_size % 2) {
- alloc_size++;
- }
-
- smf_buf = malloc(alloc_size);
- if (smf_buf == NULL) {
- R_printf(R_STDERR, "Memory allocation error.\n");
-
- return R_FAILURE;
- }
-
- memset(smf_ptr, 0, alloc_size);
-
- /* Write header chunk
- * \*---------------------------------------------------------------------- */
- write_p = smf_buf;
-
- smfh.smf_header_len = MIDI_HEADER_CHUNK_LEN;
- smfh.smf_format = 0;
- smfh.smf_ntracks = 1;
- smfh.time_division.ppqn = XMIDI_TIMEDIV;
-
- memcpy(write_p, MIDI_HEADER_TAG, 4);
- write_p += 4;
-
- ys_write_u32_be(smfh.smf_header_len, write_p, &write_p);
- ys_write_u16_be(smfh.smf_format, write_p, &write_p);
- ys_write_u16_be(smfh.smf_ntracks, write_p, &write_p);
- ys_write_u16_be(smfh.time_division.ppqn, write_p, &write_p);
-
- /* Write track chunk
- * \*---------------------------------------------------------------------- */
- memcpy(write_p, MIDI_TRACK_TAG, 4);
- write_p += 4;
-
- smft.smf_track_len = event_list->smf_size;
-
- ys_write_u32_be(smft.smf_track_len, write_p, &write_p);
-
- /* Write MIDI events
- * \*---------------------------------------------------------------------- */
- event_p = event_list->head;
-
- while (event_p != NULL) {
-
- vlq_len = WriteVLQ_DW(write_p, event_p->delta_time);
- write_p += vlq_len;
-
- /*
- * R_printf( R_STDOUT,
- * "Wrote %d len VLQ. (%d)\n",
- * vlq_len,
- * event_p->delta_time );
- */
-
- switch (event_p->event) {
-
- case MIDI_NOTE_ON:
- case MIDI_NOTE_OFF:
- case MIDI_AFTERTOUCH:
- case MIDI_CONTROLCHANGE:
- case MIDI_PITCHWHEEL:
-
- *write_p++ =
- (uchar) (event_p->event | (uchar) event_p->
- channel);
- *write_p++ = event_p->op1;
- *write_p++ = event_p->op2;
- break;
-
- case MIDI_PROGRAMCHANGE:
- case MIDI_CHANNELPRESSURE:
-
- *write_p =
- (uchar) (event_p->event | (uchar) event_p->
- channel);
- *write_p = event_p->op1;
- break;
-
- case MIDI_SYSTEMEXCLUSIVE:
-
- *write_p = (uchar) MIDI_NONMIDI;
-
- switch (event_p->sysex_op) {
-
- case MIDI_SYSEX_TRACKEND:
-
- *write_p++ = event_p->sysex_op;
- *write_p++ = (uchar) 0;
- break;
-
- case MIDI_SYSEX_TEMPO:
-
- *write_p++ = event_p->sysex_op;
- *write_p++ = (uchar) 3;
- /*
- *write_p++ = event_p->op1;
- *write_p++ = event_p->op2;
- *write_p++ = event_p->op3;
- */
-
- /* Override tempo change */
- *write_p++ = (uchar) 0x07;
- *write_p++ = (uchar) 0xA1;
- *write_p++ = (uchar) 0x20;
- break;
-
- case MIDI_SYSEX_TIMESIG:
-
- *write_p++ = event_p->sysex_op;
- *write_p++ = (uchar) 4;
- *write_p++ = event_p->op1;
- *write_p++ = event_p->op2;
- *write_p++ = event_p->op3;
- *write_p++ = event_p->op4;
- break;
-
- default:
-
- R_printf(R_STDERR,
- "Error, invalid sysex event type (%d): "
- "Aborting.\n", event_p->sysex_op);
-
- return R_FAILURE;
- break;
-
- }
- break;
-
- default:
- R_printf(R_STDERR,
- "Invalid event code encountered; " "aborting.\n");
-
- return R_FAILURE;
- break;
- }
-
- event_p = event_p->next_event;
- }
-
- *smf_ptr = smf_buf;
- *smf_len = alloc_size;
-#endif
- return R_SUCCESS;
-}
-
-int WriteVLQ_DW(char *write_ptr, uint32 value)
-{
-
- int vlq_len = 1;
- uint32 pack = value & 0x7F;
- uint x;
-
- while (value >>= 7) {
- pack <<= 8;
- pack |= ((value & 0x7F) | 0x80);
- vlq_len++;
- }
- for (x = 0; x < sizeof(uint32); x++) {
- *write_ptr++ = ((char *)(&pack))[x];
- }
-
- return vlq_len;
-}
-
-int XMIDI_Read(const uchar * XMI_img, XMIDIEVENT_LIST * event_list)
-{
- /* XMI header data */
- const uchar *XMIDI_data;
- uint n_tracks;
-
- /* XMIDI data */
- IFF_ID_CHUNK cat_chunk;
- IFF_ID_CHUNK id_chunk; /* Present after categeory chunk */
- XMI_TIMB_CHUNK timbre_chunk; /* Present after id chunk */
- XMI_EVENT_CHUNK event_chunk;
-
- const uchar *read_p;
-
- const uchar *event_data;
- size_t event_data_len;
-
- if (XMIDI_ReadXMIHeader(XMI_img, &XMIDI_data, &n_tracks) != R_SUCCESS) {
-
- return R_FAILURE;
- }
-
- read_p = XMIDI_data;
-
- /* Read category chunk
- * \*------------------------------------------------------------- */
- ReadIFF_IDChunk(&cat_chunk, read_p, &read_p);
-
- if (memcmp(cat_chunk.id_4cc, IFF_CATEGORY_4CC, 4) != 0) {
-
- R_printf(R_STDERR, "Error: Category chunk not present.\n");
- Print4CC(cat_chunk.id_4cc);
-
- return R_FAILURE;
- }
-
- if (memcmp(cat_chunk.desc_4cc, XMIDI_DESC_4CC, 4) != 0) {
-
- R_printf(R_STDERR,
- "Error: Incorrect category description field.\n");
- Print4CC(cat_chunk.desc_4cc);
-
- return R_FAILURE;
- }
-
- /* Read XMIDI ID Chunk
- * \*------------------------------------------------------------- */
- ReadIFF_IDChunk(&id_chunk, read_p, &read_p);
-
- if (memcmp(id_chunk.id_4cc, IFF_FORMAT_4CC, 4) != 0) {
-
- R_printf(R_STDERR, "Error: ID chunk not present.\n");
- Print4CC(id_chunk.id_4cc);
-
- return R_FAILURE;
- }
-
- if (memcmp(id_chunk.desc_4cc, XMIDI_DESC_4CC, 4) != 0) {
-
- R_printf(R_STDERR,
- "Error: XMID tag not present in ID chunk: "
- "Not XMIDI data.\n");
- Print4CC(id_chunk.desc_4cc);
-
- return R_FAILURE;
- }
-
- /* Read XMIDI Timbre Chunk
- * \*------------------------------------------------------------- */
- ys_read_4cc(timbre_chunk.id_4cc, read_p, &read_p);
- timbre_chunk.chunk_len = ys_read_u32_be(read_p, &read_p);
-
- if (memcmp(timbre_chunk.id_4cc, XMIDI_TIMBRE_4CC, 4) != 0) {
-
- R_printf(R_STDERR, "Error: Timbre chunk not present.\n");
- Print4CC(timbre_chunk.id_4cc);
-
- return R_FAILURE;
- }
-
- /* Read XMIDI Event Chunk
- * \*------------------------------------------------------------- */
- read_p += timbre_chunk.chunk_len;
-
- ys_read_4cc(event_chunk.id_4cc, read_p, &read_p);
- event_chunk.chunk_len = ys_read_u32_be(read_p, &read_p);
-
- if (memcmp(event_chunk.id_4cc, XMIDI_EVENT_4CC, 4) != 0) {
-
- R_printf(R_STDERR, "Error: Event chunk not present.\n");
- Print4CC(event_chunk.id_4cc);
-
- return R_FAILURE;
- }
-
- /* Read XMIDI Event data
- * \*------------------------------------------------------------- */
- event_data = read_p;
- event_data_len = event_chunk.chunk_len;
-
- R_printf(R_STDOUT,
- "Converting %d bytes of event data:\n", event_data_len);
-
- XMIDI_ReadEvents(event_list, event_data, event_data_len, n_tracks);
-
- /* Process XMIDI Event data
- * \*------------------------------------------------------------- */
- ProcessEventList(event_list);
-
- return R_SUCCESS;
-}
-
-int
-ReadIFF_IDChunk(IFF_ID_CHUNK * chunk,
- const uchar * read_p, const uchar ** read_pp)
-{
- const uchar *chunk_p = read_p;
-
- ys_read_4cc(chunk->id_4cc, chunk_p, &chunk_p);
-
- chunk->chunk_len = ys_read_u32_be(chunk_p, &chunk_p);
-
- ys_read_4cc(chunk->desc_4cc, chunk_p, &chunk_p);
-
- if (read_pp != NULL) {
- *read_pp = chunk_p;
- }
-
- return R_SUCCESS;
-}
-
-int Print4CC(char *fourcc)
-{
- R_printf(R_STDERR,
- "FourCC: %c%c%c%c (%X %X %X %X)\n",
- fourcc[0], fourcc[1], fourcc[2], fourcc[3],
- fourcc[0], fourcc[1], fourcc[2], fourcc[3]);
-
- return R_SUCCESS;
-}
-
-int
-XMIDI_ReadXMIHeader(const uchar * XMI_img,
- const uchar ** XMIDI_data, uint * n_tracks)
-{
- const uchar *read_p;
-
- IFF_ID_CHUNK id_chunk;
- XMI_INFO_CHUNK info_chunk;
-
- *n_tracks = 0;
- *XMIDI_data = NULL;
-
- /* Read ID chunk
- * \*------------------------------------------------------------ */
- read_p = XMI_img;
-
- ys_read_4cc(id_chunk.id_4cc, read_p, &read_p);
- id_chunk.chunk_len = ys_read_u32_be(read_p, &read_p);
- ys_read_4cc(id_chunk.desc_4cc, read_p, &read_p);
-
- if (memcmp(id_chunk.id_4cc, IFF_FORMAT_4CC, 4) != 0) {
- R_printf(R_STDERR, "Error: ID chunk not present.\n");
-
- return R_FAILURE;
- }
-
- if (memcmp(id_chunk.desc_4cc, XMI_DESC_4CC, 4) != 0) {
- R_printf(R_STDERR,
- "Error: XDIR tag not present in ID chunk.\n");
-
- return R_FAILURE;
- }
-
- /* Read INFO chunk
- * \*------------------------------------------------------------ */
- ys_read_4cc(info_chunk.id_4cc, read_p, &read_p);
- info_chunk.chunk_len = ys_read_u32_be(read_p, &read_p);
- info_chunk.n_tracks = ys_read_u16_le(read_p, &read_p);
-
- if (memcmp(info_chunk.id_4cc, XMI_INFO_4CC, 4) != 0) {
-
- R_printf(R_STDERR, "Error: INFO chunk not present.\n");
-
- return R_FAILURE;
- }
-
- *n_tracks = info_chunk.n_tracks;
-
- *XMIDI_data = XMI_img +
- (id_chunk.chunk_len + IFF_ID_CHUNK_HEADERLEN - 4);
-
- return R_SUCCESS;
-}
-
-int
-XMIDI_ReadEvents(XMIDIEVENT_LIST * event_list,
- const uchar * event_data, size_t event_data_len, uint n_tracks)
-{
-
- const uchar *event_data_ptr = event_data;
- size_t event_bytes_left = event_data_len;
-
- ulong new_event_time = 0;
- ulong event_time = 0;
- ulong event_len;
-
- ulong vlq_len;
- uint data_byte;
-
- int channel;
- int event;
-
- /*int tempo = MIDI_STD_TEMPO; */
-
- unsigned int sysex_op;
- unsigned int op1;
- unsigned int op2;
- unsigned int op3;
- unsigned int op4;
-
- /* Set initial tempo */
- /*
- * AddEventToList( event_list, MIDI_SYSEX_TEMPO_LEN + GetLengthAsVLQ( 0 ), 0, MIDI_SYSTEMEXCLUSIVE, 0, MIDI_SYSEX_TEMPO, 0, );
- */
-
- while (event_bytes_left > 0) {
-
- vlq_len = ReadVLQ2_DW(event_data_ptr,
- (uint32)event_bytes_left, (uint32 *)&new_event_time);
-
- event_time += new_event_time;
- event_data_ptr += vlq_len;
- event_bytes_left -= vlq_len;
-
- /*
- * vlq_len = GetLengthAsVLQ( new_event_time );
- * R_printf( R_STDOUT, "Count: %d len VLQ (%d)\n", vlq_len, new_event_time );
- */
-
- data_byte = *event_data_ptr++;
-
- channel = data_byte & 0x0FU;
- event = data_byte & 0xF0U;
-
- switch (event) {
-
- case MIDI_NOTE_ON:
-
-#ifdef XMIPLAY_VERBOSE
- R_printf(R_STDOUT, "MIDI_NOTE_ON event:\n");
-#endif
-
- op1 = *(event_data_ptr++);
- op2 = *(event_data_ptr++);
-
- AddEventToList(event_list,
- MIDI_NOTE_ON_LEN,
- event_time, event, channel, 0, op1, op2, 0, 0);
-
- vlq_len =
- ReadVLQ_DW(event_data_ptr, (uint32)event_bytes_left,
- (uint32 *)&event_len);
- AddEventToList(event_list, MIDI_NOTE_OFF_LEN,
- event_time + event_len, MIDI_NOTE_OFF, channel, 0,
- op1, MIDI_STD_VELOCITY, 0, 0);
-
- event_data_ptr += (vlq_len);
- event_bytes_left -= (2 + vlq_len);
- break;
-
- case MIDI_AFTERTOUCH:
-#ifdef XMIPLAY_VERBOSE
- R_printf(R_STDOUT, "MIDI_AFTERTOUCH event:\n");
-#endif
- op1 = *(event_data_ptr++);
- op2 = *(event_data_ptr++);
-
- AddEventToList(event_list,
- MIDI_AFTERTOUCH_LEN,
- event_time, event, channel, 0, op1, op2, 0, 0);
-
- event_bytes_left -= 2;
- break;
-
- case MIDI_CONTROLCHANGE:
-#ifdef XMIPLAY_VERBOSE
- R_printf(R_STDOUT, "MIDI_CONTROLCHANGE event:\n");
-#endif
- op1 = *(event_data_ptr++);
- op2 = *(event_data_ptr++);
-
- AddEventToList(event_list,
- MIDI_CONTROLCHANGE_LEN,
- event_time, event, channel, 0, op1, op2, 0, 0);
-
- event_bytes_left -= 2;
- break;
-
- case MIDI_PITCHWHEEL:
-#ifdef XMIPLAY_VERBOSE
- R_printf(R_STDOUT, "MIDI_PITCHWHEEL event:\n");
-#endif
- op1 = *(event_data_ptr++);
- op2 = *(event_data_ptr++);
-
- AddEventToList(event_list,
- MIDI_PITCHWHEEL_LEN,
- event_time, event, channel, 0, op1, op2, 0, 0);
-
- event_bytes_left -= 2;
- break;
-
- case MIDI_PROGRAMCHANGE:
-#ifdef XMIPLAY_VERBOSE
- R_printf(R_STDOUT, "MIDI_PROGRAMCHANGE event:\n");
-#endif
- op1 = *(event_data_ptr++);
- AddEventToList(event_list, MIDI_PROGRAMCHANGE_LEN,
- event_time, event, channel, 0, op1, 0, 0, 0);
-
- event_bytes_left--;
- break;
-
- case MIDI_CHANNELPRESSURE:
-#ifdef XMIPLAY_VERBOSE
- R_printf(R_STDOUT, "MIDI_CHANNELPRESSURE event:\n");
-#endif
- op1 = *(event_data_ptr++);
- AddEventToList(event_list, MIDI_CHANNELPRESSURE_LEN,
- event_time, event, channel, 0, op1, 0, 0, 0);
-
- event_bytes_left--;
- break;
-
- case MIDI_SYSTEMEXCLUSIVE:
-
- sysex_op = (byte) * event_data_ptr++;
- event_bytes_left--;
-
- if (data_byte == MIDI_NONMIDI) {
-
- switch (sysex_op) {
-
- case MIDI_SYSEX_TRACKEND:
- R_printf(R_STDOUT,
- "Track end encountered.\n");
- AddEventToList(event_list,
- MIDI_SYSEX_TRACKEND_LEN,
- event_time, event, channel,
- sysex_op, op1, op2, 0, 0);
- event_bytes_left = 0;
- break;
-
- case MIDI_SYSEX_TEMPO:
- event_data_ptr++; /*(skip length VLQ) (always 3) */
-
- op1 = (byte) * event_data_ptr++;
- op2 = (byte) * event_data_ptr++;
- op3 = (byte) * event_data_ptr++;
- AddEventToList(event_list,
- MIDI_SYSEX_TEMPO_LEN, event_time,
- event, channel, sysex_op, op1, op2,
- op3, 0);
- /*
- * R_printf( R_STDOUT, "Adding tempo change event. :%X %X %X\n", op1, op2, op3 );
- */
- event_bytes_left -= 4;
- break;
-
- case MIDI_SYSEX_TIMESIG:
- event_data_ptr++; /*(skip length VLQ) (always 4) */
-
- op1 = (byte) * event_data_ptr++;
- op2 = (byte) * event_data_ptr++;
- op3 = (byte) * event_data_ptr++;
- op4 = (byte) * event_data_ptr++;
- AddEventToList(event_list,
- MIDI_SYSEX_TIMESIG_LEN, event_time,
- event, channel, sysex_op, op1, op2,
- op3, op4);
-
- /*
- * R_printf( R_STDOUT, "Adding time signature event. :%X %X %X %X\n", op1, op2, op3, op4 );
- */
- event_bytes_left -= 5;
- break;
-
- default:
- R_printf(R_STDERR,
- "Unhandled sysex nonmidi event, aborting.\n");
- R_printf(R_STDERR, "%X %X %X %X",
- *event_data_ptr,
- *(event_data_ptr + 1),
- *(event_data_ptr + 2),
- *(event_data_ptr + 3));
-
- event_bytes_left = 0;
- break;
-
- }
- } else {
- R_printf(R_STDERR,
- "Unhandled sysex event, aborting.\n");
- event_bytes_left = 0;
- }
-
- break;
-
- default:
- R_printf(R_STDERR,
- "Invalid event code encountered; aborting.\n");
- event_bytes_left = 0;
- break;
- }
-
- } /* end while ( event_bytes_left > 0 ) */
-
- return R_SUCCESS;
-}
-
-int GetLengthAsVLQ(uint32 data)
-{
-
- int len = 1;
-
- while (data >>= 7)
- len++;
- return len;
-
-}
-
-uint32 ReadVLQ_DW(const uchar *data, uint32 bytes_left, uint32 * value)
-{
- byte byte;
- uint32 vlq_len = 0;
- *value = 0;
-
- do {
- if (bytes_left <= 0)
- return 0;
- byte = *data++;
- bytes_left--;
- vlq_len++;
- *value = (*value << 7) | (byte & 0x7F);
- } while (byte & 0x80);
-
- return vlq_len;
-}
-
-uint32 ReadVLQ2_DW(const uchar *data, uint32 bytes_left, uint32 * value)
-{
-
- byte byte;
- uint32 vlq_len = 0;
- *value = 0;
-
- while (!((byte = *data++) & 0x80)) {
- if (bytes_left <= 0)
- return 0;
- bytes_left--;
- vlq_len++;
- (*value) += byte;
- }
-
- return vlq_len;
-}
-
-int
-AddEventToList(XMIDIEVENT_LIST * event_list, int smf_size, int time, int event,
- int channel, int sysex_op, int op1, int op2, int op3, int op4)
-{
-
- XMIDIEVENT *new_event;
- XMIDIEVENT *search_ptr = event_list->tail;
-
- new_event = (XMIDIEVENT *)malloc(sizeof(XMIDIEVENT));
-
- if (new_event == NULL) {
- R_printf(R_STDERR,
- "Error: Out of memory allocating XMIDI event list entry.");
- return -1;
- }
-
- new_event->next_event = NULL;
- new_event->prev_event = NULL;
-
- if (event_list->head == NULL) {
- /* Set up new list */
- event_list->head = new_event;
- event_list->tail = new_event;
- } else {
- /* List isn't empty */
- if ((unsigned int)time >= event_list->tail->delta_time) {
-
- /* If this is the most recent event, append */
- event_list->tail->next_event = new_event;
- new_event->prev_event = event_list->tail;
- event_list->tail = new_event;
-
- } else {
- /* Otherwise scan list backwards and insert in proper position */
- while (search_ptr != NULL) {
-
- if ((unsigned int)time >=
- search_ptr->delta_time) {
- /* Insert entry */
- new_event->next_event =
- search_ptr->next_event;
- new_event->prev_event = search_ptr;
-
- search_ptr->next_event->prev_event =
- new_event;
- search_ptr->next_event = new_event;
- break;
- }
- search_ptr = search_ptr->prev_event;
- }
- }
- }
-
- new_event->smf_size = smf_size;
- new_event->delta_time = time;
-
- new_event->sysex_op = sysex_op;
- new_event->event = (byte) event;
- new_event->channel = (byte) channel;
- new_event->op1 = (byte) op1;
- new_event->op2 = (byte) op2;
- new_event->op3 = (byte) op3;
- new_event->op4 = (byte) op4;
-
-#ifdef XMIPLAY_VERBOSE
- R_printf(R_STDOUT,
- "Added event: Time: %d Tempo: %d Event: %d Chan: %d Op1: %d Op2: %d\n",
- new_event->delta_time, new_event->tempo, new_event->event,
- new_event->channel, new_event->op1, new_event->op2);
-#endif
- return 0;
-}
-
-int ProcessEventList(XMIDIEVENT_LIST * event_list)
-{
- XMIDIEVENT *convert_ptr = event_list->head;
- int last_time = 0;
- int delta = 0;
-
- while (convert_ptr != NULL) {
-
- delta = convert_ptr->delta_time - last_time;
- if (delta < 0)
- R_printf(R_STDERR,
- "Error: Negative delta time found.");
- last_time = convert_ptr->delta_time;
- convert_ptr->delta_time = delta;
-
- /* Update smf size count */
- event_list->smf_size +=
- (convert_ptr->smf_size + GetLengthAsVLQ(delta));
- convert_ptr = convert_ptr->next_event;
- }
-
- R_printf(R_STDOUT,
- "ProcessEventList(): %d bytes of SMF data processed.\n",
- event_list->smf_size);
-
- return 0;
-}
-
-int XMIDI_Free(XMIDIEVENT_LIST * event_list)
-{
-
- XMIDIEVENT *free_ptr = event_list->head;
- XMIDIEVENT *temp_ptr;
-
- while (free_ptr != NULL) {
- temp_ptr = free_ptr->next_event;
- free(free_ptr);
- free_ptr = temp_ptr;
- }
-
- return 0;
-
-}
-
-} // End of namespace Saga
-
diff --git a/saga/xmidi.h b/saga/xmidi.h
deleted file mode 100644
index 81b9f69fac..0000000000
--- a/saga/xmidi.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/* ScummVM - Scumm Interpreter
- * Copyright (C) 2004 The ScummVM project
- *
- * The ReInherit Engine is (C)2000-2003 by Daniel Balsom.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * $Header$
- *
- */
-/*
- Description:
-
- XMIDI conversion routines
-
- Notes:
-
- Code adapted from XMILoader by Keet ( fox@foxpaws.net ), (C)2000
-*/
-
-#ifndef SAGA_XMIDI_H_
-#define SAGA_XMIDI_H_
-
-namespace Saga {
-
-#define XMIDI_TIMEDIV 0x3C
-
-/* XMIDI/IFF 4CC codes
-\*--------------------------------------------------------------------------*/
-#define IFF_FORMAT_4CC "FORM"
-#define IFF_CATEGORY_4CC "CAT "
-
-#define XMI_DESC_4CC "XDIR"
-#define XMI_INFO_4CC "INFO"
-
-#define XMIDI_DESC_4CC "XMID"
-#define XMIDI_TIMBRE_4CC "TIMB"
-#define XMIDI_EVENT_4CC "EVNT"
-
-/* IFF/XMI Data structures
-\*--------------------------------------------------------------------------*/
-
-struct IFF_ID_CHUNK {
- char id_4cc[4]; /* 4cc */
- ulong chunk_len; /* u32_be */
- char desc_4cc[4]; /* 4cc */
-};
-
-#define IFF_ID_CHUNK_HEADERLEN 12
-
-struct XMI_INFO_CHUNK {
- char id_4cc[4]; /* 4cc */
- ulong chunk_len; /* u32_be */
- uint n_tracks; /* u16_le */
-};
-
-struct XMI_TIMB_CHUNK {
- char id_4cc[4]; /* 4cc */
- ulong chunk_len; /* u32_be */
-};
-
-struct XMI_EVENT_CHUNK {
- char id_4cc[4]; /* 4cc */
- ulong chunk_len; /* u32_be */
-};
-
-typedef struct SMF_HEADER_CHUNK_tag {
- char smf_id[4]; /* u8 */
- unsigned int smf_header_len; /* u32_be */
- unsigned short smf_format; /* u16_be */
- unsigned short smf_ntracks; /* u16_be */
- union {
- unsigned short ppqn; /* u16_be */
- signed char smpte[2];
- } time_division;
-} SMF_HEADER_CHUNK;
-
-struct SMF_TRACK_CHUNK {
- char smf_track_id[4];
- unsigned int smf_track_len;
-};
-
-#define MIDI_HEADER_LEN 14
-#define MIDI_HEADER_CHUNK_LEN 6
-#define MIDI_TRACK_CHUNK_LEN 8
-
-#define MIDI_HEADER_TAG "MThd"
-#define MIDI_TRACK_TAG "MTrk"
-
-int XMIDI_ReadXMIHeader(const uchar *XMI_img, const uchar **XMIDI_data, uint *n_tracks);
-int ReadIFF_IDChunk(IFF_ID_CHUNK *chunk, const uchar *read_p, const uchar **read_pp);
-int Print4CC(char *fourcc);
-int XMIDI_ReadEvents(XMIDIEVENT_LIST *event_list, const uchar *event_data,
- size_t event_data_len, uint n_tracks);
-int WriteVLQ_DW(char *write_ptr, uint32 value);
-uint32 ReadVLQ_DW(const uchar *data, uint32 bytes_left, uint32 *value);
-uint32 ReadVLQ2_DW(const uchar *data, uint32 bytes_left, uint32 *value);
-int GetLengthAsVLQ(uint32 data);
-int AddEventToList(XMIDIEVENT_LIST *event_list, int smf_size, int time,
- int event, int channel, int sysex_op, int op1, int op2, int op3, int op4);
-int ProcessEventList(XMIDIEVENT_LIST *event_list);
-void PrintMidiOutError(unsigned long err);
-} // End of namespace Saga
-
-#endif /* SAGA_XMIDI_H_ */
diff --git a/saga/xmidi_mod.h b/saga/xmidi_mod.h
deleted file mode 100644
index 8743f78c32..0000000000
--- a/saga/xmidi_mod.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* ScummVM - Scumm Interpreter
- * Copyright (C) 2004 The ScummVM project
- *
- * The ReInherit Engine is (C)2000-2003 by Daniel Balsom.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * $Header$
- *
- */
-/*
- Description:
-
- XMIDI conversion routines - module header
-
- Notes:
-*/
-
-#ifndef SAGA_XMIDI_MOD_H_
-#define SAGA_XMIDI_MOD_H_
-
-namespace Saga {
-
-#define MIDI_STD_VELOCITY 0x7F
-#define MIDI_STD_TEMPO 0x0007A120L /* 500000 */
-
-/* MIDI Events
-\*--------------------------------------------------------------------------*/
-enum R_MIDI_EVENTS {
- MIDI_NOTE_ON = 0x90,
- MIDI_NOTE_OFF = 0x80,
- MIDI_AFTERTOUCH = 0xA0,
- MIDI_CONTROLCHANGE = 0xB0,
- MIDI_PROGRAMCHANGE = 0xC0,
- MIDI_CHANNELPRESSURE = 0xD0,
- MIDI_PITCHWHEEL = 0xE0,
- MIDI_SYSTEMEXCLUSIVE = 0xF0,
-
- MIDI_NONMIDI = 0xFF,
-
- MIDI_SYSEX_SEQNUM = 0x00,
- MIDI_SYSEX_TEXT = 0x01,
- MIDI_SYSEX_COPYRIGHT = 0x02,
- MIDI_SYSEX_SEQNAME = 0x03,
- MIDI_SYSEX_INSTRUMENT = 0x04,
- MIDI_SYSEX_LYRIC = 0x05,
- MIDI_SYSEX_MARKER = 0x06,
- MIDI_SYSEX_CUEPOINT = 0x07,
-
- MIDI_SYSEX_CHANNEL = 0x20,
- MIDI_SYSEX_PORTNUM = 0x21,
- MIDI_SYSEX_TRACKEND = 0x2F,
- MIDI_SYSEX_TEMPO = 0x51,
- MIDI_SYSEX_TIMESIG = 0x58,
-
- MIDI_SYSEX_PROPRIETARY = 0x7F
-};
-
-enum MIDI_EVENT_LENGTHS {
- MIDI_NOTE_ON_LEN = 3,
- MIDI_NOTE_OFF_LEN = 3,
- MIDI_AFTERTOUCH_LEN = 3,
- MIDI_CONTROLCHANGE_LEN = 3,
- MIDI_PITCHWHEEL_LEN = 3,
-
- MIDI_PROGRAMCHANGE_LEN = 2,
- MIDI_CHANNELPRESSURE_LEN = 2,
-
- MIDI_SYSEX_TRACKEND_LEN = 3,
- MIDI_SYSEX_TEMPO_LEN = 6,
- MIDI_SYSEX_TIMESIG_LEN = 7
-};
-
-struct XMIDIEVENT {
- XMIDIEVENT *prev_event;
- XMIDIEVENT *next_event;
-
- size_t smf_size; /* Size of event in SMF format */
-
- ulong delta_time;
-
- uchar event;
- uchar channel;
- uchar sysex_op;
- uchar op1;
- uchar op2;
- uchar op3;
- uchar op4;
- uchar pad;
-};
-
-struct XMIDIEVENT_LIST {
- XMIDIEVENT *head;
- XMIDIEVENT *tail;
- int smf_size;
-};
-
-int XMIDI_Read(const uchar *XMI_img, XMIDIEVENT_LIST *event_list);
-int XMIDI_Free(XMIDIEVENT_LIST *event_list);
-
-} // End of namespace Saga
-
-#endif /* SAGA_XMIDI_MOD_H_ */