MOD and MIDI interfaces added.
This commit is contained in:
parent
f96acfe020
commit
9be4485177
4 changed files with 135 additions and 56 deletions
|
@ -28,6 +28,7 @@
|
|||
#include <misctool.h>
|
||||
#include <sound.h>
|
||||
#include <MIDISynth.h>
|
||||
#include <Orca.h>
|
||||
#undef false
|
||||
#undef true
|
||||
|
||||
|
@ -86,10 +87,6 @@ static byte *BORDER = (byte *)0xE0C034L;
|
|||
|
||||
|
||||
static byte _jlBorderSaved;
|
||||
static jint16 _jlMyID;
|
||||
static jint16 _jlMemID;
|
||||
static jint16 _jlMusicMemID;
|
||||
static Handle _jlSHRShadowHandle;
|
||||
static jint16 _jlHertz;
|
||||
|
||||
|
||||
|
@ -97,7 +94,7 @@ static jint16 _jlHertz;
|
|||
#define JOEY_CHECK_TOOL_ERROR(w) if (_toolErr) _jlDieWithToolError(w, _toolErr);
|
||||
void _jlDieWithToolError(const char *what, int err) {
|
||||
char message[256];
|
||||
sprintf(message, "Tool Error %04X %s", err, what);
|
||||
sprintf(message, "Tool Error $%04X %s", err, what);
|
||||
jlUtilDie(message);
|
||||
}
|
||||
|
||||
|
@ -265,29 +262,54 @@ bool _jlSoundLoad(jlSoundT **sound, char *filename) {
|
|||
}
|
||||
|
||||
|
||||
void jlSoundMusicContinue(void) {
|
||||
void jlSoundMidiContinue(void) {
|
||||
//***TODO***
|
||||
}
|
||||
|
||||
|
||||
bool jlSoundMidiIsPlaying(void) {
|
||||
//***TODO***
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void jlSoundMidiPause(void) {
|
||||
//***TODO***
|
||||
}
|
||||
|
||||
|
||||
void jlSoundMidiPlay(char *name) {
|
||||
(void)name;
|
||||
//***TODO***
|
||||
}
|
||||
|
||||
|
||||
void jlSoundMidiStop(void) {
|
||||
//***TODO***
|
||||
}
|
||||
|
||||
|
||||
void jlSoundModContinue(void) {
|
||||
NTPContinueMusic();
|
||||
}
|
||||
|
||||
|
||||
bool jlSoundMusicIsPlaying(void) {
|
||||
bool jlSoundModIsPlaying(void) {
|
||||
return (NTPGetPlayingMusic() != 0xFFFF);
|
||||
}
|
||||
|
||||
|
||||
void jlSoundMusicPause(void) {
|
||||
void jlSoundModPause(void) {
|
||||
NTPPauseMusic();
|
||||
}
|
||||
|
||||
|
||||
void jlSoundMusicPlay(char *name) {
|
||||
void jlSoundModPlay(char *name) {
|
||||
char *temp = jlUtilMakePathname(name, "ntp");
|
||||
_jlPascalStringT file;
|
||||
|
||||
_jlSetPascalString(file, temp);
|
||||
//strcpy(file.text, temp);
|
||||
//file.length = strlen(temp);
|
||||
NTPStartUp(_jlMusicMemID);
|
||||
NTPStartUp(userid());
|
||||
JOEY_CHECK_TOOL_ERROR("NTPStartup")
|
||||
NTPLoadOneMusic((Pointer)&file);
|
||||
JOEY_CHECK_TOOL_ERROR("NTPLoadOneMusic")
|
||||
|
@ -296,7 +318,7 @@ void jlSoundMusicPlay(char *name) {
|
|||
}
|
||||
|
||||
|
||||
void jlSoundMusicStop(void) {
|
||||
void jlSoundModStop(void) {
|
||||
NTPShutDown();
|
||||
JOEY_CHECK_TOOL_ERROR("NTPShutDown")
|
||||
}
|
||||
|
@ -332,14 +354,14 @@ void jlUtilShutdown(void) {
|
|||
asmStop();
|
||||
|
||||
// Shutdown tools
|
||||
/*
|
||||
NTPShutDown(); // NinjaTracker
|
||||
UnloadOneTool(222);
|
||||
MSShutDown(); // MIDI Synth
|
||||
UnloadOneTool(35);
|
||||
SoundShutDown(); // Sound Tool Set
|
||||
*/
|
||||
UnloadOneTool(0xDD); // NinjaTracker
|
||||
MTShutDown(); // Misc Tools
|
||||
DisposeAll(_jlMemID);
|
||||
MMShutDown(_jlMyID); // Memory Manager
|
||||
DisposeAll(userid());
|
||||
MMShutDown(userid()); // Memory Manager
|
||||
TLShutDown(); // Tool Locator
|
||||
|
||||
jlUtilDie("Clean Exit.");
|
||||
|
@ -348,7 +370,7 @@ void jlUtilShutdown(void) {
|
|||
|
||||
void jlUtilStartup(char *appTitle) {
|
||||
|
||||
handle ZeroPageHandle;
|
||||
handle tempHandle;
|
||||
ptr ZeroPagePtr;
|
||||
InitialLoadOutputRec initialLoad;
|
||||
char *temp;
|
||||
|
@ -356,39 +378,54 @@ void jlUtilStartup(char *appTitle) {
|
|||
|
||||
(void)appTitle; // Unused on IIgs
|
||||
|
||||
// Start up neded tools
|
||||
TLStartUp(); // Tool Locator
|
||||
_jlMyID = MMStartUp(); // Memory Manager
|
||||
_jlMemID = _jlMyID | 0x0100; // Set aux ID to 1.
|
||||
_jlMusicMemID = _jlMyID | 0x0200; // Set music ID.
|
||||
JOEY_CHECK_TOOL_ERROR("TLStartUp")
|
||||
MMStartUp(); // Memory Manager
|
||||
JOEY_CHECK_TOOL_ERROR("MMStartUp")
|
||||
MTStartUp(); // Misc Tools
|
||||
JOEY_CHECK_TOOL_ERROR("MTStartUp")
|
||||
|
||||
/*
|
||||
ZeroPageHandle = NewHandle((Long)DPTotal, (Word)_jlMyMemID, (Word)attrBank | attrPage | attrFixed | attrLocked, (Long)0);
|
||||
ZeroPagePtr = *ZeroPageHandle;
|
||||
SoundStartUp((word)ZeroPagePtr + DPForSound); // Sound Tool Set
|
||||
// Reserve shadow area for SHR
|
||||
tempHandle = NewHandle((LongWord)0x8000, userid(), (Word)(attrLocked | attrFixed | attrAddr | attrBank), (Pointer)0x012000);
|
||||
JOEY_CHECK_TOOL_ERROR("NewHandle SHR")
|
||||
|
||||
// Sound Tool Set
|
||||
tempHandle = NewHandle((Long)DPTotal, userid(), (Word)(attrLocked | attrFixed | attrPage | attrBank), (Long)0);
|
||||
JOEY_CHECK_TOOL_ERROR("NewHandle Sound")
|
||||
ZeroPagePtr = *tempHandle;
|
||||
SoundStartUp((word)ZeroPagePtr + DPForSound);
|
||||
|
||||
// Try to load MidiSynth from SYSTEM:TOOLS
|
||||
LoadOneTool(35, 0);
|
||||
if (_toolErr) {
|
||||
// Not there. Try to manually load it from our disk.
|
||||
temp = jlUtilMakePathname("Tool035", NULL);
|
||||
_jlSetPascalString(toolFile, temp);
|
||||
initialLoad = InitialLoad(userid(), (Pointer)&toolFile, 0);
|
||||
JOEY_CHECK_TOOL_ERROR("Tool035")
|
||||
SetTSPtr(0, 35, initialLoad.startAddr);
|
||||
MSBootInit();
|
||||
JOEY_CHECK_TOOL_ERROR("MSBootInit")
|
||||
}
|
||||
MSStartUp(); // MIDI Synth
|
||||
*/
|
||||
JOEY_CHECK_TOOL_ERROR("MSStartUp")
|
||||
|
||||
// Try to load NinjaTrackerPlus from SYSTEM:TOOLS
|
||||
LoadOneTool(0xDE, 0);
|
||||
LoadOneTool(222, 0);
|
||||
if (_toolErr) {
|
||||
// Not there. Try to manually load it from our disk.
|
||||
temp = jlUtilMakePathname("Tool222", NULL);
|
||||
_jlSetPascalString(toolFile, temp);
|
||||
initialLoad = InitialLoad(_jlMyID, (Pointer)&toolFile, 0);
|
||||
initialLoad = InitialLoad(userid(), (Pointer)&toolFile, 0);
|
||||
JOEY_CHECK_TOOL_ERROR("Tool222")
|
||||
SetTSPtr(0, 222, initialLoad.startAddr);
|
||||
NTPBootInit();
|
||||
JOEY_CHECK_TOOL_ERROR("NTPBootInit")
|
||||
}
|
||||
|
||||
// Reserve shadow area for SHR
|
||||
_jlSHRShadowHandle = NewHandle((LongWord)0x8000, (Word)_jlMemID, (Word)(attrLocked + attrFixed + attrBank + attrAddr), (Pointer)0x012000);
|
||||
JOEY_CHECK_TOOL_ERROR("NewHandle")
|
||||
|
||||
// Start assembly module
|
||||
_jlHertz = (int)ReadBParam((Word)0x1D) == 0 ? 60 : 50; // Is this a PAL or NTSC machine?
|
||||
asmStart(_jlMyID, _jlHertz / 10);
|
||||
asmStart(userid(), _jlHertz / 10);
|
||||
|
||||
// SHR on
|
||||
asmGrOn();
|
||||
|
|
|
@ -501,25 +501,53 @@ bool _jlSoundLoad(jlSoundT **sound, char *filename) {
|
|||
}
|
||||
|
||||
|
||||
void jlSoundMusicContinue(void) {
|
||||
void jlSoundMidiContinue(void) {
|
||||
//***TODO***
|
||||
}
|
||||
|
||||
|
||||
bool jlSoundMidiIsPlaying(void) {
|
||||
//***TODO***
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void jlSoundMidiPause(void) {
|
||||
//***TODO***
|
||||
}
|
||||
|
||||
|
||||
void jlSoundMidiPlay(char *name) {
|
||||
(void)name;
|
||||
//***TODO***
|
||||
}
|
||||
|
||||
|
||||
void jlSoundMidiStop(void) {
|
||||
//***TODO***
|
||||
}
|
||||
|
||||
|
||||
void jlSoundModContinue(void) {
|
||||
Mix_ResumeMusic();
|
||||
}
|
||||
|
||||
|
||||
bool jlSoundMusicIsPlaying(void) {
|
||||
bool jlSoundModIsPlaying(void) {
|
||||
return (bool)Mix_PlayingMusic();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void jlSoundMusicPause(void) {
|
||||
void jlSoundModPause(void) {
|
||||
Mix_PauseMusic();
|
||||
}
|
||||
|
||||
|
||||
void jlSoundMusicPlay(char *name) {
|
||||
void jlSoundModPlay(char *name) {
|
||||
if (_jlMusicHandle != NULL) {
|
||||
jlSoundMusicStop();
|
||||
jlSoundModStop();
|
||||
}
|
||||
_jlMusicHandle = Mix_LoadMUS(jlUtilMakePathname(name, "mod"));
|
||||
if (_jlMusicHandle != NULL) {
|
||||
|
@ -530,8 +558,8 @@ void jlSoundMusicPlay(char *name) {
|
|||
}
|
||||
|
||||
|
||||
void jlSoundMusicStop(void) {
|
||||
if (jlSoundMusicIsPlaying()) {
|
||||
void jlSoundModStop(void) {
|
||||
if (jlSoundModIsPlaying()) {
|
||||
Mix_HaltMusic();
|
||||
}
|
||||
if (_jlMusicHandle != NULL) {
|
||||
|
|
|
@ -275,7 +275,7 @@ char jlKeyRead(void);
|
|||
void jlKeyWaitForAny(void);
|
||||
|
||||
void jlPaletteDefault(void); //***TODO*** Treat palettes like we do "surfaces" - allow changing STAs or display
|
||||
void jlPaletteSet(byte index, byte r, byte g, byte b);
|
||||
void jlPaletteSet(byte index, byte r, byte g, byte b); //***TODO*** Really need a matching "get"
|
||||
void jlPaletteSetFromImg(jlImgT *img);
|
||||
|
||||
void jlSoundFree(jlSoundT *sound);
|
||||
|
@ -283,11 +283,16 @@ bool jlSoundIsPlaying(jlSoundT *sound);
|
|||
#define jlSoundLoad(sound, filename) _jlSoundLoad((jlSoundT **)&(sound), filename) // Syntatic Sugar
|
||||
bool _jlSoundLoad(jlSoundT **sound, char *filename);
|
||||
|
||||
void jlSoundMusicContinue(void);
|
||||
bool jlSoundMusicIsPlaying(void);
|
||||
void jlSoundMusicPause(void);
|
||||
void jlSoundMusicPlay(char *name);
|
||||
void jlSoundMusicStop(void);
|
||||
void jlSoundMidiContinue(void);
|
||||
bool jlSoundMidiIsPlaying(void);
|
||||
void jlSoundMidiPause(void);
|
||||
void jlSoundMidiPlay(char *name);
|
||||
void jlSoundMidiStop(void);
|
||||
void jlSoundModContinue(void);
|
||||
bool jlSoundModIsPlaying(void);
|
||||
void jlSoundModPause(void);
|
||||
void jlSoundModPlay(char *name);
|
||||
void jlSoundModStop(void);
|
||||
void jlSoundPlay(jlSoundT *sound);
|
||||
|
||||
void jlStnFree(jlStnT *stn);
|
||||
|
|
|
@ -282,17 +282,26 @@ void lineTest(void) {
|
|||
|
||||
void musicTest(void) {
|
||||
jlImgT *kanga = NULL;
|
||||
jlImgT *font = NULL;
|
||||
|
||||
if (!jlImgLoad(kanga, "kanga")) jlUtilDie("Unable to load kanga.img!");
|
||||
if (!jlImgLoad(font, "font")) jlUtilDie("Unable to load font.img!");
|
||||
|
||||
jlImgDisplay(kanga);
|
||||
jlDisplayPresent();
|
||||
|
||||
jlSoundMusicPlay("music");
|
||||
jlSoundModPlay("music");
|
||||
|
||||
jlKeyWaitForAny();
|
||||
while (!jlKeyPressed()) {
|
||||
printAt(font, NULL, 1, 1, "%dx%d %d %d ", jlGameGetAxis(0), jlGameGetAxis(1), jlGameGetButton(0), jlGameGetButton(1));
|
||||
jlDisplayPresent();
|
||||
}
|
||||
jlKeyRead();
|
||||
|
||||
jlSoundMusicStop();
|
||||
jlSoundModStop();
|
||||
|
||||
jlImgFree(font);
|
||||
jlImgFree(kanga);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue