Now build on x64 platform, still need lots of rework...

This commit is contained in:
Godzil
2019-09-02 16:02:03 +01:00
parent 56b69d2281
commit 0219258ee9
31 changed files with 310 additions and 1771 deletions

View File

@@ -1,11 +1,11 @@
# Makefile for Linux and SDL wrapper driver...
CC = clang
CC = gcc
AR = ar
RANLIB = ranlib
STRIP = strip
CFLAGS = -g -c -Wall -O2 -D__SDL__ `sdl-config --cflags` -arch i386
LFLAGS = -L../lib/SDL -laudio `sdl-config --libs` -arch i386
CFLAGS = -g -c -Wall -O2 -D__SDL__ `sdl-config --cflags` -Wall -Werror
LFLAGS = -L../lib/SDL -laudio `sdl-config --libs`
OBJS = audio.o wavfile.o xmfile.o s3mfile.o modfile.o mtmfile.o \
iofile.o modeng.o nondrv.o mixdrv.o sdldrv.o

View File

@@ -45,14 +45,14 @@ extern "C" {
typedef unsigned long DWORD;
#else
typedef void VOID;
typedef int8_t CHAR;
typedef char CHAR;
typedef int32_t INT;
typedef int32_t LONG;
typedef int8_t BOOL;
typedef uint8_t BYTE;
typedef uint16_t WORD;
typedef uint32_t UINT;
typedef uint16_t UINT;
typedef uint32_t DWORD;
#endif
typedef VOID* LPVOID;
@@ -64,8 +64,8 @@ extern "C" {
typedef WORD* LPWORD;
typedef UINT* LPUINT;
typedef DWORD* LPDWORD;
typedef CHAR* LPSTR;
typedef DWORD HANDLE;
typedef char* LPSTR;
typedef uintptr_t HANDLE;
/* helper macros */
#define LOBYTE(s) ((BYTE)(s))
@@ -215,7 +215,7 @@ extern "C" {
/* audio waveform structure */
typedef struct {
LPBYTE lpData; /* data pointer */
DWORD dwHandle; /* waveform handle */
uintptr_t dwHandle; /* waveform handle */
DWORD dwLength; /* waveform length */
DWORD dwLoopStart; /* loop start point */
DWORD dwLoopEnd; /* loop end point */
@@ -277,7 +277,7 @@ extern "C" {
/* audio module structure */
typedef struct {
CHAR szModuleName[32]; /* module name */
char szModuleName[32]; /* module name */
WORD wFlags; /* module flags */
WORD nOrders; /* number of orders */
WORD nRestart; /* restart position */

View File

@@ -557,11 +557,14 @@ static UINT AIAPI OpenAudio(LPAUDIOINFO lpInfo)
Synth.lpMemory = malloc(sizeof(LONG) * 65 * 256 +
sizeof(BYTE) * 32 * 256 + 1023);
if (Synth.lpMemory != NULL) {
lpVolumeTable = (LPLONG) (((DWORD) Synth.lpMemory + 1023) & ~1023);
lpFilterTable = (LPBYTE) (lpVolumeTable + 65 * 256);
ASetAudioMixerValue(AUDIO_MIXER_MASTER_VOLUME, 96);
ASetAudioCallback(UpdateVoices);
return AUDIO_ERROR_NONE;
uint64_t tmp;
tmp = ((uint64_t)(Synth.lpMemory) + 1023) & ~1023;
lpVolumeTable = (LPLONG)(tmp);
lpFilterTable = (LPBYTE) (lpVolumeTable + 65 * 256);
ASetAudioMixerValue(AUDIO_MIXER_MASTER_VOLUME, 96);
ASetAudioCallback(UpdateVoices);
return AUDIO_ERROR_NONE;
}
return AUDIO_ERROR_NOMEMORY;
}
@@ -659,7 +662,7 @@ static LONG AIAPI GetAudioDataAvail(VOID)
static UINT AIAPI CreateAudioData(LPAUDIOWAVE lpWave)
{
if (lpWave != NULL) {
lpWave->dwHandle = (DWORD) lpWave->lpData;
lpWave->dwHandle = (uintptr_t) lpWave->lpData;
return AUDIO_ERROR_NONE;
}
return AUDIO_ERROR_INVALHANDLE;

View File

@@ -14,6 +14,7 @@
#ifdef __GNUC__
#include <memory.h>
#endif
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "audio.h"

View File

@@ -217,8 +217,7 @@ UINT AIAPI ALoadModuleMOD(LPSTR lpszFileName,
}
/* initialize the module structure */
strncpy(lpModule->szModuleName, Header.aModuleName,
sizeof(Header.aModuleName));
strncpy(lpModule->szModuleName, Header.aModuleName, sizeof(lpModule->szModuleName));
lpModule->wFlags = AUDIO_MODULE_AMIGA | AUDIO_MODULE_PANNING;
lpModule->nOrders = Header.nSongLength;
lpModule->nRestart = Header.nRestart;
@@ -262,8 +261,7 @@ UINT AIAPI ALoadModuleMOD(LPSTR lpszFileName,
lpPatch = lpModule->aPatchTable;
for (n = 0; n < lpModule->nPatches; n++, lpPatch++) {
memcpy(&Sample, &Header.aSampleTable[n], sizeof(MODSAMPLEHEADER));
strncpy(lpPatch->szPatchName, Sample.aSampleName,
sizeof(Sample.aSampleName));
strncpy(lpPatch->szPatchName, Sample.aSampleName, sizeof(lpPatch->szPatchName));
if (Sample.wLength != 0) {
if ((lpSample = (LPAUDIOSAMPLE)
calloc(1, sizeof(AUDIOSAMPLE))) == NULL) {

Binary file not shown.

View File

@@ -36,7 +36,7 @@ struct {
void Assert(UINT nErrorCode)
{
static CHAR szText[80];
static char szText[80];
if (nErrorCode != AUDIO_ERROR_NONE) {
AGetErrorText(nErrorCode, szText, sizeof(szText) - 1);
@@ -194,7 +194,8 @@ int main(int argc, char *argv[])
State.nVolume = 96;
/* parse command line options */
for (n = 1; n < argc && (lpszOption = argv[n])[0] == '-'; n++) {
for (n = 1; n < argc && argv[n][0] == '-'; n++) {
lpszOption = argv[n];
lpszOptArg = &lpszOption[2];
if (strchr("crv", lpszOption[1]) && !lpszOptArg[0] && n < argc - 1)
lpszOptArg = argv[++n];

View File

@@ -126,8 +126,7 @@ static UINT MTMMakeSample(LPAUDIOPATCH lpPatch, LPMTMSAMPLE lpMTMSample)
DWORD dwCount;
UINT rc;
strncpy(lpPatch->szPatchName, lpMTMSample->szSampleName,
sizeof(lpMTMSample->szSampleName));
strncpy(lpPatch->szPatchName, lpMTMSample->szSampleName, sizeof(lpPatch->szPatchName) - 1);
if (lpMTMSample->dwLength) {
if ((lpSample = (LPAUDIOSAMPLE) calloc(1, sizeof(AUDIOSAMPLE))) == NULL)
return AUDIO_ERROR_NOMEMORY;
@@ -203,8 +202,7 @@ UINT AIAPI ALoadModuleMTM(LPSTR lpszFileName,
}
/* build the local module header structure */
strncpy(lpModule->szModuleName, Header.szModuleName,
sizeof(Header.szModuleName));
strncpy(lpModule->szModuleName, Header.szModuleName, sizeof(lpModule->szModuleName));
lpModule->wFlags = AUDIO_MODULE_AMIGA | AUDIO_MODULE_PANNING;
lpModule->nOrders = Header.nOrders + 1;
lpModule->nRestart = AUDIO_MAX_ORDERS;

View File

@@ -585,7 +585,7 @@ UINT AIAPI ALoadModuleS3M(LPSTR lpszFileName,
AIOReadFile(Header.aReserved, sizeof(Header.aReserved));
AIOReadShort(&Header.wSpecial);
AIOReadFile(Header.aChannelTable, sizeof(Header.aChannelTable));
printf("[%lX] vs [%lX]\n", Header.dwSCRM, S3M_SCRM_MAGIC);
printf("[%X] vs [%lX]\n", Header.dwSCRM, S3M_SCRM_MAGIC);
if (Header.dwSCRM != S3M_SCRM_MAGIC ||
Header.nSongLength > S3M_MAX_ORDERS ||
Header.nPatterns > S3M_MAX_PATTERNS ||

View File

@@ -74,8 +74,9 @@ static void updatecallback(void *userdata, Uint8 *stream, int len);
static UINT AIAPI OpenAudio(LPAUDIOINFO lpInfo)
{
int nBitsPerSample, nStereoOn, nSampleRate, nFrags;
//int nBitsPerSample, nStereoOn, nSampleRate, nFrags;
int nStereoOn;
memset(&Audio, 0, sizeof(Audio));
if (!SDL_WasInit(SDL_INIT_EVERYTHING))
@@ -90,7 +91,7 @@ static UINT AIAPI OpenAudio(LPAUDIOINFO lpInfo)
return AUDIO_ERROR_NODEVICE;
nBitsPerSample = lpInfo->wFormat & AUDIO_FORMAT_16BITS ? 16 : 8;
//nBitsPerSample = lpInfo->wFormat & AUDIO_FORMAT_16BITS ? 16 : 8;
nStereoOn = lpInfo->wFormat & AUDIO_FORMAT_STEREO ? 1 : 0;
/*nSampleRate = lpInfo->nSampleRate;*/

View File

@@ -184,8 +184,7 @@ UINT AIAPI ALoadModuleXM(LPSTR lpszFileName,
}
/* initialize module structure */
strncpy(lpModule->szModuleName, Header.aModuleName,
sizeof(Header.aModuleName));
strncpy(lpModule->szModuleName, Header.aModuleName, sizeof(lpModule->szModuleName));
if (Header.wFlags & XM_MODULE_LINEAR)
lpModule->wFlags |= AUDIO_MODULE_LINEAR;
lpModule->nOrders = Header.nSongLength;
@@ -296,8 +295,7 @@ UINT AIAPI ALoadModuleXM(LPSTR lpszFileName,
}
/* initialize patch structure */
strncpy(lpPatch->szPatchName, Patch.aPatchName,
sizeof(Patch.aPatchName));
strncpy(lpPatch->szPatchName, Patch.aPatchName, sizeof(lpPatch->szPatchName));
for (m = 0; m < AUDIO_MAX_NOTES; m++) {
lpPatch->aSampleNumber[m] = Patch.aSampleNumber[m];
if (lpPatch->aSampleNumber[m] >= Patch.nSamples)
@@ -365,8 +363,7 @@ UINT AIAPI ALoadModuleXM(LPSTR lpszFileName,
AIOReadFile(Sample.aSampleName, sizeof(Sample.aSampleName));
AIOSeekFile(Patch.dwSampleHeaderSize -
XM_SAMPLE_HEADER_SIZE, SEEK_CUR);
strncpy(lpSample->szSampleName, Sample.aSampleName,
sizeof(Sample.aSampleName));
strncpy(lpSample->szSampleName, Sample.aSampleName, sizeof(lpSample->szSampleName));
lpSample->Wave.dwLength = Sample.dwLength;
lpSample->Wave.dwLoopStart = Sample.dwLoopStart;
lpSample->Wave.dwLoopEnd = Sample.dwLoopStart + Sample.dwLoopLength;