Files
BT411/engine/MUNGA_L4/sos/bc4/SOSMFNCT.H
T
arcattackandClaude Opus 4.8 7b7d465e5e Initial commit: bt411 -- standalone Windows BattleTech (Tesla 4.10 port)
Clean, self-contained extraction of the BattleTech-specific work from the
reverse-engineering workspace -- engine + game + content + build, with nothing
from Red Planet or the raw archive dumps. Builds green (Win32) and runs the
single-player drive->animate->target->fire->damage->destroy loop out of the box.

Layout:
  engine/   MUNGA + MUNGA_L4 shared 2007 engine, carrying our BT render/loader
            work (bgfload/L4D3D/L4VIDEO: BSL bit-slice decode, LOD/ground/shadow
            models) + image codec; the minimal rp/ headers the audio HAL needs
  game/     reconstructed BT logic + surviving-original BT source + fwd shims
            + WinMain launcher
  content/  full runtime tree (BTL4.RES, VIDEO/, GAUGE/, AUDIO/, eggs, BTDPL.INI)
  docs/     format specs + reconstruction ledgers
  reference/ raw Ghidra pseudocode (recon source-of-truth) + decomp exporter
  tools/    MP console emulator + map/resource scanners

One top-level CMake builds munga_engine lib + bt410_l4 game lib + btl4.exe.
All paths relativized (186 fwd shims + ~437 CMake abs paths -> repo-relative);
DXSDK is the one external, overridable via -DDXSDK. Verified: builds to a
byte-identical 2.27MB exe and runs combat (TARGET DESTROYED, 0 crashes) against
the bundled content.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 21:03:40 -05:00

191 lines
7.6 KiB
C++

/****************************************************************************
File : sosmfnct.h
Programmer(s) : Don Fowler, Nick Skrepetos
Date :
Purpose : Include Files For Zortech C++ Compiler
Last Updated :
****************************************************************************
Copyright(c) 1993,1994 Human Machine Interfaces
All Rights Reserved
****************************************************************************/
#ifndef _SOS_MIDI_FUNCTIONS
#define _SOS_MIDI_FUNCTIONS
#pragma pack(4)
#ifdef __cplusplus // HACK - ECH 96/01/26
extern "C" {
#endif
WORD sosMIDILockMemory ( VOID );
WORD sosMIDIUnLockMemory ( VOID );
WORD sosMIDIGetDeviceCaps ( WORD, _SOS_MIDI_CAPABILITIES * );
WORD sosMIDIInitSystem ( PSTR, WORD );
WORD sosMIDIUnInitSystem ( VOID );
WORD sosMIDIInitDriver ( WORD, _SOS_MIDI_HARDWARE *,
_SOS_MIDI_INIT_DRIVER *, WORD * );
WORD sosMIDIUnInitDriver ( WORD, BOOL );
WORD sosMIDILoadDriver ( WORD, WORD, SFAR *, SFAR *, PSTR, PSTR, WORD * );
WORD sosMIDIUnLoadDriver ( WORD );
WORD sosMIDIInitSong ( _SOS_MIDI_INIT_SONG *,
_SOS_MIDI_TRACK_DEVICE *,
WORD * );
WORD sosMIDIUnInitSong ( WORD );
WORD sosMIDIResetSong ( WORD, _SOS_MIDI_INIT_SONG * );
WORD sosMIDIStartSong ( WORD );
WORD sosMIDIStopSong ( WORD );
WORD sosMIDIPauseSong ( WORD, WORD );
WORD sosMIDIMuteSong ( WORD );
WORD sosMIDIUnMuteSong ( WORD );
WORD sosMIDIResumeSong ( WORD );
BOOL sosMIDISongDone ( WORD );
WORD sosMIDISongAlterTempo ( WORD, WORD );
WORD sosMIDIGetDeltaTime ( PSTR, DWORD * );
WORD sosMIDISongGetTimeToPlay ( WORD );
BYTE * sosMIDINormalizePtr ( BYTE * );
WORD sosMIDISetInsData ( WORD, PSTR, WORD );
WORD sosMIDIResetDriver ( WORD );
BOOL sosMIDIHandleMIDIData ( WORD, PSTR, WORD, WORD );
WORD sosMIDISendMIDIData ( WORD, PSTR, WORD );
VOID sosMIDISetTrackState ( WORD, WORD, WORD );
// compiled in drivers function interface
VOID digiGetCallTable ( WORD * );
VOID callbackGetCallTable ( WORD * );
WORD cdecl callbackSendData ( SFAR, WORD, WORD );
WORD cdecl callbackInit ( SFAR, WORD, WORD );
WORD cdecl callbackUnInit ( SFAR, WORD, WORD );
WORD cdecl callbackReset ( SFAR, WORD, WORD );
WORD cdecl callbackSetInstrumentData ( SFAR, WORD, WORD );
// function prototypes
WORD cdecl digiSendData ( SFAR, WORD, WORD );
WORD cdecl digiInit ( SFAR, WORD, WORD );
WORD cdecl digiUnInit ( SFAR, WORD, WORD );
WORD cdecl digiReset ( SFAR, WORD, WORD );
WORD cdecl digiSetInstrumentData ( SFAR, WORD, WORD );
VOID waveGetCallTable ( WORD * );
WORD cdecl waveSendData ( SFAR, WORD, WORD );
WORD cdecl waveInit ( SFAR, WORD, WORD );
WORD cdecl waveUnInit ( SFAR, WORD, WORD );
WORD cdecl waveReset ( SFAR, WORD, WORD );
WORD cdecl waveSetInstrumentData ( SFAR, WORD, WORD );
VOID cdecl waveSampleCallback( WORD, WORD, WORD );
WORD cdecl callbackSendDataStub ( SFAR, WORD, WORD );
WORD cdecl callbackInitStub ( SFAR, WORD, WORD );
WORD cdecl callbackUnInitStub ( SFAR, WORD, WORD );
WORD cdecl callbackResetStub ( SFAR, WORD, WORD );
WORD cdecl callbackSetInstrumentDataStub ( SFAR, WORD, WORD );
// function prototypes
WORD cdecl digiSendDataStub ( SFAR, WORD, WORD );
WORD cdecl digiInitStub ( SFAR, WORD, WORD );
WORD cdecl digiUnInitStub ( SFAR, WORD, WORD );
WORD cdecl digiResetStub ( SFAR, WORD, WORD );
WORD cdecl digiSetInstrumentDataStub ( SFAR, WORD, WORD );
WORD cdecl waveSendDataStub ( SFAR, WORD, WORD );
WORD cdecl waveInitStub ( SFAR, WORD, WORD );
WORD cdecl waveUnInitStub ( SFAR, WORD, WORD );
WORD cdecl waveResetStub ( SFAR, WORD, WORD );
WORD cdecl waveSetInstrumentDataStub ( SFAR, WORD, WORD );
VOID digiQueueInit ( WORD, WORD );
VOID digiQueueUnInit ( WORD );
WORD digiQueueAddItem ( WORD, WORD, WORD, WORD, WORD );
WORD digiQueueGetItem ( WORD, WORD );
WORD digiQueueGetItemWAVE ( WORD );
WORD digiQueueDeleteItem ( WORD, WORD );
WORD digiQueueDeleteItemWAVE ( WORD, WORD );
WORD digiQueueDeleteItemMIDI ( WORD, WORD, WORD );
WORD digiQueueFindItemMIDI ( WORD, WORD, WORD );
// function prototypes
VOID cdecl digiSampleCallback( WORD, WORD, WORD );
WORD sosMIDIRegisterBranchFunction ( WORD, WORD ( * )( WORD, BYTE, BYTE ) );
WORD sosMIDIRegisterLoopFunction ( WORD, WORD ( * )( WORD, BYTE, BYTE, BYTE ) );
WORD sosMIDIRegisterTriggerFunction( WORD, BYTE, WORD ( * )( WORD, BYTE, BYTE ) );
WORD sosMIDIBranchToTrackLocation ( WORD, BYTE, BYTE );
WORD sosMIDIBranchToSongLocation ( WORD, BYTE );
//#ifdef __cplusplus // ECH
//extern "C" {
//#endif
extern void cdecl sosMIDIDRVGetCapsInfo( SFAR, SFAR, PSTR );
extern void cdecl sosMIDIDRVGetCapsPtr ( SFAR, SFAR, PSTR );
extern void cdecl sosMIDIDRVGetFuncsPtr( SFAR, SFAR, PSTR );
extern VOID cdecl sosMIDIDRVSpecialFunction( SFAR, SFAR, WORD, SFAR * );
extern WORD cdecl xgetES( void );
extern WORD cdecl sosMIDIDRVCall32Func( SFAR, SFAR, WORD, WORD );
//#ifdef __cplusplus // ECH
//}
//#endif
BOOL sosMIDIResetChannelStealing ( WORD );
WORD sosMIDIEnableChannelStealing( WORD );
VOID sosMIDISongHandler( VOID );
WORD sosMIDISetMT32InsData ( WORD, PSTR, WORD );
WORD sosMIDISetMasterVolume ( BYTE );
VOID sosMIDIMT32Timer ( VOID );
WORD sosMIDISetSongVolume ( WORD, BYTE );
WORD sosMIDIFadeSong ( WORD, WORD, WORD, BYTE, BYTE, WORD );
VOID sosMIDIGusFunction( VOID );
VOID sosMIDIGusFunction1( SFAR );
// functions for memory locking
VOID sosMIDICaps_Start( VOID );
VOID sosMIDICaps_End( VOID );
VOID sosMIDICbck_Start( VOID );
VOID sosMIDICbck_End( VOID );
VOID sosMIDIDigi_Start( VOID );
VOID sosMIDIDigi_End( VOID );
VOID sosMIDIDone_Start( VOID );
VOID sosMIDIDone_End( VOID );
VOID sosMIDIDq_Start( VOID );
VOID sosMIDIDq_End( VOID );
VOID sosMIDIInit_Start( VOID );
VOID sosMIDIInit_End( VOID );
VOID sosMIDIIns_Start( VOID );
VOID sosMIDIIns_End( VOID );
VOID sosMIDILoad_Start( VOID );
VOID sosMIDILoad_End( VOID );
VOID sosMIDIPause_Start( VOID );
VOID sosMIDIPause_End( VOID );
VOID sosMIDIPtr_Start( VOID );
VOID sosMIDIPtr_End( VOID );
VOID sosMIDISong_Start( VOID );
VOID sosMIDISong_End( VOID );
VOID sosMIDISt_Start( VOID );
VOID sosMIDISt_End( VOID );
VOID sosMIDITmpo_Start( VOID );
VOID sosMIDITmpo_End( VOID );
VOID sosMIDITmr_Start( VOID );
VOID sosMIDITmr_End( VOID );
VOID sosMIDIAWE_Start( VOID );
VOID sosMIDIAWE_End( VOID );
void StringOut( BYTE X, BYTE Y, BYTE * String, BYTE Color );
#ifdef __cplusplus // HACK - ECH 96/01/26
}
#endif
#pragma pack()
#endif