
Advanced MicroMachine Application Program Interface (AuMAPI)
(C) Romanich 2008

Game Specification (System specification omitted here...)
INTEGRATED

This is IBM PC Compatible port of AuMAPI



Minimum Requires:

1) OS:

- M$ DOS 7.0 (best performance!)
- Win95 (external DPMI needeed)
- Win98
- WinXP (not good - see Bugs)

2) Sound Card With:

- Sound Blaster Pro or better
- Adlib OPL2 or OPL3
- MPU401 + WaveTable (OPL4)
- In WinXP use VDMSound driver v2.0.4, which emulating Sound Blaster, Adlib & MPU401

3) Enveronment "BLASTER" Variable (For Example: SET BLASTER= A220 I5 D1 T2 P330)

4) 64kB Segment at 0x7000:0x0000 must be FREE!!! It used by DMA Channel when Digital Sound Playing

3) VESA VBE 1.2 compatible VideoCard

Used Banked Video Modes, instead Linear (they are very shitty, but compatible with WinXP ntdvm)



Bugs:

1) In WinXP Sound Blaster Mixer not working, so ADLIB_Stop() function give rest soundiiing & Volume not change
2) In WinXP inertial "Glue" Keyboard
3) In WinXP Timings not stable
4) In WinXP ATI Radeon 9200 Video not working!

REMARK: WinXP - Shit - use TRUE M$ DOS 7.0 & TRUE Hardware! ;)



"AuMAPI.h"
User Definitions, Constants, Variables, Functions:

#define  u8 unsigned char
#define  s8 signed char

#define u16 unsigned short int
#define s16 signed short int

#define u32 unsigned long int
#define s32 signed long int

#define u64 unsigned long long
#define s64 signed long long

#define TIMER_ST     0
#define TIMER_YMF721 1

#define KEY_OFF 0
#define KEY_ON  1

#define LOOP_NO 0
#define LOOP    1

#define AUDIO_STOP  0
#define AUDIO_PLAY  1
#define AUDIO_PAUSE 2

#define MIRROR_NO                  0
#define MIRROR_HORIZONTAL          1
#define MIRROR_VERTICAL            2
#define MIRROR_HORIZONTAL_VERTICAL 3

#define COLOR_ROP   0
#define COLOR_ALPHA 1

#define JOYSTICK_U 0x001
#define JOYSTICK_D 0x002
#define JOYSTICK_L 0x004
#define JOYSTICK_R 0x008
#define JOYSTICK_A 0x010
#define JOYSTICK_B 0x020
#define JOYSTICK_C 0x040
#define JOYSTICK_S 0x080
#define JOYSTICK_X 0x100
#define JOYSTICK_Y 0x200
#define JOYSTICK_Z 0x400
#define JOYSTICK_M 0x800

extern u8 System_END;

extern u32 System_Seed;

extern volatile u32 System_Tick;

void System_Prepare(void);
void System_Exit(void);
void System_Delay(u32 Delay);
void System_Randomize(void);
u32 System_Random(u32 Modular);

void FM_Prepare(void);
void FM_Load(u8 Instrument,const u8* Data);
void FM_Volume(u8 Left,u8 Right);
void FM_Tone(u8 Instrument,u8 Octave,u16 Frequency);
void FM_Key(u8 Instrument,u8 KeyOnOff);

extern volatile u8 SB_State;

void SB_Prepare(void);
void SB_Volume(u8 Left,u8 Right);
void SB_Equalizer(u8 BassFrequency,u8 BassAmplification,u8 TrebleFrequency,s8 TrebleAmplification);
void SB_Load(const u8* Data);
void SB_Play(u8 Loop);
void SB_Stop(void);
void SB_Pause(void);
void SB_Continue(void);

extern volatile u8 ADLIB_State;

void Adlib_Prepare(u8 Source);
void Adlib_Volume(u8 Left,u8 Right);
void Adlib_Load(const u8* Data);
void Adlib_Play(u8 Loop);
void Adlib_Stop(void);
void Adlib_Pause(void);
void Adlib_Continue(void);

extern volatile u8 MIDI_State;

void MIDI_Prepare(u8 Source);
void MIDI_Volume(u8 Volume);
void MIDI_Load(const u8* Data);
void MIDI_Play(u8 Loop);
void MIDI_Stop(void);
void MIDI_Pause(void);
void MIDI_Continue(void);

void PPU8_Prepare(void);
void PPU8_Load(const u8* Sprite);
void PPU8_ClearVRAM(u8 Color);
void PPU8_OutOLED(void);
void PPU8_Back(u16 SX,u32 SY,s16 ShX,s16 ShY,u16 W,u16 H);
void PPU8_Blt(u16 SX,u32 SY,s16 DX,s16 DY,u8 W,u8 H,u8 M,u8 CO,u8 CA,u8 CM,u8 CK);
void PPU8_Rect(s16 DX,s16 DY,u8 W,u8 H,u8 CO,u8 CA,u8 CM,u8 C);
void PPU8_OutPixel(s8 X,s8 Y,u8 C);
u8 PPU8_InPixel(s8 X,s8 Y);

void PPU16_Prepare(void);
void PPU16_Load(const u8* Sprite);
void PPU16_ClearVRAM(u16 Color);
void PPU16_OutOLED(void);
void PPU16_Back(u16 SX,u32 SY,s16 ShX,s16 ShY,u16 W,u16 H);
void PPU16_Blt(u16 SX,u32 SY,s16 DX,s16 DY,u8 W,u8 H,u8 M,u8 CO,u8 CA,u16 CM,u16 CK);
void PPU16_Rect(s16 DX,s16 DY,u8 W,u8 H,u8 CO,u8 CA,u16 CM,u16 C);
void PPU16_OutPixel(s8 X,s8 Y,u16 C);
u16 PPU16_InPixel(s8 X,s8 Y);

extern volatile u16 Joystick;

void Joystick_Prepare(u32 Function);
