Files
BT411/engine/MUNGA_L4/sos/wc/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

176 lines
7.0 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
#ifdef __cplusplus // ECH
extern "C" {
#endif
#pragma pack(4)
VOID interrupt far sosMIDITimerHandler ( VOID );
WORD sosMIDILockMemory ( VOID );
WORD sosMIDIUnLockMemory ( VOID );
WORD sosMIDIGetDeviceCaps ( WORD, LPSOSMIDIDEVICECAPS );
WORD sosMIDIInitSystem ( LPSTR, WORD );
WORD sosMIDIUnInitSystem ( VOID );
WORD sosMIDIInitDriver ( WORD, _SOS_MIDI_HARDWARE far *,
_SOS_MIDI_INIT_DRIVER far *, WORD far * );
WORD sosMIDIUnInitDriver ( WORD, BOOL );
WORD sosMIDILoadDriver ( WORD, WORD, LPSTR far *, LPSTR far *, PSTR, PSTR, WORD * );
WORD sosMIDIUnLoadDriver ( WORD );
WORD sosMIDIInitSong ( _SOS_MIDI_INIT_SONG far *,
_SOS_MIDI_TRACK_DEVICE far *,
WORD far * );
WORD sosMIDIUnInitSong ( WORD );
WORD sosMIDIResetSong ( WORD, _SOS_MIDI_INIT_SONG far * );
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 ( LPSTR, DWORD far * );
WORD sosMIDISongGetTimeToPlay ( WORD );
BYTE _huge * sosMIDINormalizePtr ( BYTE _huge * );
WORD sosMIDISetInsData ( WORD, LPSTR, WORD );
WORD sosMIDIResetDriver ( WORD );
BOOL sosMIDIHandleMIDIData ( WORD, LPSTR, WORD, WORD );
WORD sosMIDISendMIDIData ( WORD, LPSTR, WORD );
// NEW
VOID sosMIDISetTrackState ( WORD, WORD, WORD );
// END
// compiled in drivers function interface
LPSTR digiGetCallTable ( VOID );
LPSTR callbackGetCallTable ( VOID );
LPSTR aweGetCallTable ( VOID );
WORD cdecl far callbackSendData ( LPSTR, WORD, WORD );
WORD cdecl far callbackInit ( LPSTR, WORD, WORD );
WORD cdecl far callbackUnInit ( LPSTR, WORD, WORD );
WORD cdecl far callbackReset ( LPSTR, WORD, WORD );
WORD cdecl far callbackSetInstrumentData ( LPSTR, WORD, WORD );
WORD cdecl far aweSendData ( LPSTR, WORD, WORD );
WORD cdecl far aweInit ( LPSTR, WORD, WORD );
WORD cdecl far aweUnInit ( LPSTR, WORD, WORD );
WORD cdecl far aweReset ( LPSTR, WORD, WORD );
WORD cdecl far aweSetInstrumentData ( LPSTR, WORD, WORD );
// function prototypes
WORD cdecl far digiSendData ( LPSTR, WORD, WORD );
WORD cdecl far digiInit ( LPSTR, WORD, WORD );
WORD cdecl far digiUnInit ( LPSTR, WORD, WORD );
WORD cdecl far digiReset ( LPSTR, WORD, WORD );
WORD cdecl far digiSetInstrumentData ( LPSTR, WORD, WORD );
LPSTR waveGetCallTable ( VOID );
WORD cdecl far waveSendData ( LPSTR, WORD, WORD );
WORD cdecl far waveInit ( LPSTR, WORD, WORD );
WORD cdecl far waveUnInit ( LPSTR, WORD, WORD );
WORD cdecl far waveReset ( LPSTR, WORD, WORD );
WORD cdecl far waveSetInstrumentData ( LPSTR, WORD, WORD );
VOID cdecl far waveSampleCallback( WORD, 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 far digiSampleCallback( WORD, WORD, WORD );
WORD sosMIDIRegisterBranchFunction ( WORD, WORD ( far * )( WORD, BYTE, BYTE ) );
WORD sosMIDIRegisterLoopFunction ( WORD, WORD ( far * )( WORD, BYTE, BYTE, BYTE ) );
WORD sosMIDIRegisterTriggerFunction( WORD, BYTE, WORD ( far * )( WORD, BYTE, BYTE ) );
WORD sosMIDIBranchToTrackLocation ( WORD, BYTE, BYTE );
WORD sosMIDIBranchToSongLocation ( WORD, BYTE );
//#ifdef __cplusplus // ECH
//extern "C" {
//#endif
extern void cdecl sosMIDIDRVGetCapsInfo( LPSTR, LPSTR, _SOS_MIDI_CAPABILITIES far * );
extern void cdecl sosMIDIDRVGetCapsPtr ( LPSTR, LPSTR, _SOS_MIDI_CAPABILITIES far * );
extern void cdecl sosMIDIDRVGetFuncsPtr( LPSTR, LPSTR, LPSTR );
extern LPSTR cdecl sosMIDIDRVSpecialFunction( LPSTR, LPSTR, WORD );
extern WORD cdecl xgetES( void );
//#ifdef __cplusplus // ECH
//}
//#endif
BOOL sosMIDIResetChannelStealing ( WORD );
WORD sosMIDIEnableChannelStealing( WORD );
VOID far sosMIDISongHandler( VOID );
WORD sosMIDISetMT32InsData ( WORD, LPSTR, WORD );
WORD sosMIDISetMasterVolume ( BYTE );
VOID far sosMIDIMT32Timer ( VOID );
WORD sosMIDISetSongVolume ( WORD, BYTE );
WORD sosMIDIFadeSong ( WORD, WORD, WORD, BYTE, BYTE, WORD );
// 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 StringOut( BYTE X, BYTE Y, BYTE * String, BYTE Color );
#pragma pack()
#ifdef __cplusplus // ECH
}
#endif
#endif