 
#ifndef _INLINE_RTGMASTER_H
#define _INLINE_RTGMASTER_H

#ifndef __INLINE_MACROS_H
#include <inline/macros.h>
#endif /* !__INLINE_MACROS_H */

#ifndef RTGMASTER_BASE_NAME
#define RTGMASTER_BASE_NAME RTGMasterBase
#endif /* !RTGMASTER_BASE_NAME */

#define CallRtgC2P(MyScreen, BufAdr, Array, signal, xpos, ypos, width, height, mode) \
        LP9(0xc6, int, CallRtgC2P, struct RtgScreen *, MyScreen, a0, APTR, BufAdr, a1, APTR, Array, a2, ULONG, signal, d0, ULONG, xpos, d1, ULONG, ypos,d2, ULONG, width, d3, ULONG, height, d4, ULONG, mode, d5, \
        , RTGMASTER_BASE_NAME)

#define CloseRtgScreen(RtgScreen_) \
        LP1NR(0x24, CloseRtgScreen, struct RtgScreen *, RtgScreen_, a0, \
        , RTGMASTER_BASE_NAME)

#define CopyRtgBlit(RtgScreen_, BufferAdr, Array, Masked, Left, Top, Width, Height, WidthSrc, HeightSrc, SrcX, SrcY) \
        LP12NR(0x96, CopyRtgBlit, struct RtgScreen *, RtgScreen_, a0, APTR, BufferAdr, a1, APTR, Array, a2, ULONG, Masked, a3, ULONG, Left, d0, ULONG, Top, d1, ULONG, Width, d2, ULONG, Height, d3, ULONG, WidthSrc, d4, ULONG, HeightSrc, d5, ULONG, SrcX, d6, ULONG, SrcY, d7, \
        , RTGMASTER_BASE_NAME)

#define CopyRtgPixelArray(MyScreen, BufferAdr, Array, Left, Top, Width, Height, SrcX, SrcY) \
        LP9NR(0x90, CopyRtgPixelArray, struct RtgScreen *, MyScreen, a0, APTR, BufferAdr, a1, APTR, Array, a2, ULONG, Left, d0, ULONG, Top, d1, ULONG, Width, d2, ULONG, Height, d3, ULONG, SrcX, d4, ULONG, SrcY, d5, \
        , RTGMASTER_BASE_NAME)

#define DrawRtgLine(MyScreen, BufferAdr, Color, X1, Y1, X2, Y2) \
        LP7NR(0x9c, DrawRtgLine, struct RtgScreen *, MyScreen, a0, APTR, BufferAdr, a1, ULONG, Color, d0, ULONG, X1, d1, ULONG, Y1, d2, ULONG, X2, d3, UL=
ONG, Y2, d4, \
        , RTGMASTER_BASE_NAME)

#define DrawRtgLineRGB(MyScreen, BufferAdr, Color, X1, Y1, X2, Y2) \
        LP7NR(0xa2, DrawRtgLineRGB, struct RtgScreen *, MyScreen, a0, APTR, BufferAdr, a1, ULONG, Color, d0, ULONG, X1, d1, ULONG, Y1, d2, ULONG, X2, d3,ULONG, Y2, d4, \
        , RTGMASTER_BASE_NAME)

#define FillRtgRect(MyScreen, BufferAdr, Color, Left, Top, Width, Height) \
        LP7NR(0x78, FillRtgRect, struct RtgScreen *, MyScreen, a0, APTR, BufferAdr, a1, ULONG, Color, d0, ULONG, Left, d1, ULONG, Top, d2, ULONG, Width, d3, ULONG, Height, d4, \
        , RTGMASTER_BASE_NAME)

#define FillRtgRectRGB(MyScreen, BufferAdr, Color, Left, Top, Width, Height) \
        LP7NR(0x7e, FillRtgRectRGB, struct RtgScreen *, MyScreen, a0, APTR, BufferAdr, a1, ULONG, Color, d0, ULONG, Left, d1, ULONG, Top, d2, ULONG, Width, d3, ULONG, Height, d4, \
        , RTGMASTER_BASE_NAME)

#define FreeRtgSRList(sr) \
        LP1NR(0x54, FreeRtgSRList, struct ScreenReqList *, sr, a0, \
        , RTGMASTER_BASE_NAME)

#define FreeRtgScreenModeReq(ScreenReq_) \
        LP1NR(0x66, FreeRtgScreenModeReq, struct ScreenReq *, ScreenReq_, a0, \
        , RTGMASTER_BASE_NAME)

#define GetBufAdr(RtgScreen_, Buffer) \
        LP2(0x42, void   *, GetBufAdr, struct RtgScreen *, RtgScreen_, a0, ULONG, Buffer, d0, \
        , RTGMASTER_BASE_NAME)

#define GetRtgScreenData(RtgScreen_, RtgTags) \
        LP2NR(0x48, GetRtgScreenData, struct RtgScreen *, RtgScreen_, a0, struct TagItem *, RtgTags, a1, \
        , RTGMASTER_BASE_NAME)

#ifndef NO_INLINE_STDARG
#define GetRtgScreenDataTags(a0, tags...) \
        ({ULONG _tags[] =3D { tags }; GetRtgScreenData((a0), (struct TagItem *)_tags);})
#endif /* !NO_INLINE_STDARG */

#define LoadRGBRtg(RtgScreen_, Table) \
        LP2NR(0x30, LoadRGBRtg, struct RtgScreen *, RtgScreen_, a0, void *, Table, a1, \
        , RTGMASTER_BASE_NAME)

#define LockRtgScreen(RtgScreen_) \
        LP1(0x36, void   *, LockRtgScreen, struct RtgScreen *, RtgScreen_, a0, \
        , RTGMASTER_BASE_NAME)

#define OpenRtgScreen(ScreenReq_, Tags) \
        LP2(0x1e, struct RtgScreen *, OpenRtgScreen, struct ScreenReq *, ScreenReq_, a0, struct TagItem *, Tags, a1, \
        , RTGMASTER_BASE_NAME)

#ifndef NO_INLINE_STDARG
#define OpenRtgScreenTags(a0, tags...) \
        ({ULONG _tags[] =3D { tags }; OpenRtgScreen((a0), (struct TagItem *)_tags);})
#endif /* !NO_INLINE_STDARG */

#define RtgAllocSRList(tags) \
        LP1(0x4e, struct ScreenReqList *, RtgAllocSRList, struct TagItem *, tags, a0, \
        , RTGMASTER_BASE_NAME)

#ifndef NO_INLINE_STDARG
#define RtgAllocSRListTags(tags...) \
        ({ULONG _tags[] =3D { tags }; RtgAllocSRList((struct TagItem *)_tags);})
#endif /* !NO_INLINE_STDARG */

#define RtgBestSR(tags) \
        LP1(0xcc, struct ScreenReq *, RtgBestSR, struct TagItem *, tags, a0, \
        , RTGMASTER_BASE_NAME)

#ifndef NO_INLINE_STDARG
#define RtgBestSRTags(tags...) \
        ({ULONG _tags[] =3D { tags }; RtgBestSR((struct TagItem *)_tags);})
#endif /* !NO_INLINE_STDARG */

#define RtgBlit(MyScreen, SrcBuf, DstBuf, SrcX, SrcY, DstX, DstY, Width, Height, minterm) \
        LP10NR(0xba, RtgBlit, struct RtgScreen *, MyScreen, a0, int, SrcBuf, a1,int, DstBuf, a2, ULONG, SrcX, d0, ULONG, SrcY, d1, ULONG, DstX, d2, ULONG, DstY, d3, ULONG, Width, d4, ULONG, Height, d5, UBYTE, minterm, d6, \
        , RTGMASTER_BASE_NAME)

#define RtgBltClear(MyScreen, BufNum, xpos, ypos, width, height) \
        LP6NR(0xc0, RtgBltClear, struct RtgScreen *, MyScreen, a0, int, BufNum, a1, ULONG, xpos, d0, ULONG, ypos, d1, ULONG, width, d2, ULONG, height, d3, \
        , RTGMASTER_BASE_NAME)

#define RtgCheckVSync(RtgScreen_) \
        LP1(0xd2, int, RtgCheckVSync, struct RtgScreen *, RtgScreen_, a0, \
        , RTGMASTER_BASE_NAME)

#define RtgClearPointer(MyScreen) \
        LP1NR(0x11a, RtgClearPointer, struct RtgScreen *, MyScreen, a0, \
        , RTGMASTER_BASE_NAME)

#define RtgCloseFont(MyScreen, myfont) \
        LP2NR(0x132, RtgCloseFont, struct RtgScreen *, MyScreen, a0, void *, myfont, a1, \
        , RTGMASTER_BASE_NAME)

#define RtgGetMsg(MyScreen) \
        LP1(0x14a, void *, RtgGetMsg, struct RtgScreen *, MyScreen, a0, \
        , RTGMASTER_BASE_NAME)

#define RtgInitBob(RtgScreen_, RtgBob, BackAdr, BufferAdr, xpos, ypos, display) \
        LP7NR(0xd8, RtgInitBob, struct RtgScreen *, RtgScreen_, a0, APTR, RtgBob, a1, APTR, BackAdr, a2, APTR, BufferAdr, a3, ULONG, xpos, d0, ULONG, ypos, d1, ULONG, display, d2, \
        , RTGMASTER_BASE_NAME)

#define RtgInitRDCMP(MyScreen) \
        LP1(0x13e, void *, RtgInitRDCMP, struct RtgScreen *, MyScreen, a0, \
        , RTGMASTER_BASE_NAME)

#define RtgOpenFont(MyScreen, myattr) \
        LP2(0x12c, void *, RtgOpenFont, struct RtgScreen *, MyScreen, a0, struct TextAttr *, myattr, a1, \
        , RTGMASTER_BASE_NAME)

#define RtgReplyMsg(MyScreen, msg) \
        LP2NR(0x150, RtgReplyMsg, struct RtgScreen *, MyScreen, a0, void *, msg,a1, \
        , RTGMASTER_BASE_NAME)

#define RtgScreenAtFront(RtgScreen_) \
        LP1(0x5a, ULONG, RtgScreenAtFront, struct RtgScreen *, RtgScreen_, a0, \
        , RTGMASTER_BASE_NAME)

#define RtgScreenModeReq(Tags) \
        LP1(0x60, struct ScreenReq *, RtgScreenModeReq, struct TagItem *, Tags, a0, \
        , RTGMASTER_BASE_NAME)

#ifndef NO_INLINE_STDARG
#define RtgScreenModeReqTags(tags...) \
        ({ULONG _tags[] =3D { tags }; RtgScreenModeReq((struct TagItem *)_tags);})
#endif /* !NO_INLINE_STDARG */

#define RtgSetFont(MyScreen, myfont) \
        LP2NR(0x114, RtgSetFont, struct RtgScreen *, MyScreen, a0, void *, myfont, a1, \
        , RTGMASTER_BASE_NAME)

#define RtgSetPointer(MyScreen, pointer, Height, Width, XOffset, YOffset) \
        LP6NR(0x120, RtgSetPointer, struct RtgScreen *, MyScreen, a0, UWORD *, pointer, a1, WORD, Height, d0, WORD, Width, d1, WORD, XOffset, d2, WORD, YOffset, d3, \
        , RTGMASTER_BASE_NAME)

#define RtgSetTextMode(MyScreen, fgcolor, bgcolor, drmode) \
        LP4NR(0x126, RtgSetTextMode, struct RtgScreen *, MyScreen, a0, UBYTE, fgcolor, d0, UBYTE, bgcolor, d1, UBYTE, drmode, d2, \
        , RTGMASTER_BASE_NAME)

#define RtgSetTextModeRGB(MyScreen, fgcolor, bgcolor, drmode) \
        LP4NR(0x138, RtgSetTextModeRGB, struct RtgScreen *, MyScreen, a0, ULONG, fgcolor, d0, ULONG, bgcolor, d1, UBYTE, drmode, d2, \
        , RTGMASTER_BASE_NAME)

#define RtgText(MyScreen, map, mytext, length, xpos, ypos) \
        LP6NR(0x10e, RtgText, struct RtgScreen *, MyScreen, a0, void *, map, a1,char *, mytext, a2, WORD, length, d0, SHORT, xpos, d1, SHORT, ypos, d2, \
        , RTGMASTER_BASE_NAME)

#define RtgWaitRDCMP(MyScreen) \
        LP1NR(0x144, RtgWaitRDCMP, struct RtgScreen *, MyScreen, a0, \
        , RTGMASTER_BASE_NAME)

#define RtgWaitTOF(MyScreen) \
        LP1NR(0xb4, RtgWaitTOF, struct RtgScreen *, MyScreen, a0, \
        , RTGMASTER_BASE_NAME)

#define SwitchScreens(RtgScreen_, Buffer) \
        LP2NR(0x2a, SwitchScreens, struct RtgScreen *, RtgScreen_, a0, ULONG, Buffer, d0, \
        , RTGMASTER_BASE_NAME)

#define UnlockRtgScreen(RtgScreen_) \
        LP1NR(0x3c, UnlockRtgScreen, struct RtgScreen *, RtgScreen_, a0, \
        , RTGMASTER_BASE_NAME)

#define WaitRtgBlit(MyScreen) \
        LP1NR(0xae, WaitRtgBlit, struct RtgScreen *, MyScreen, a0, \
        , RTGMASTER_BASE_NAME)

#define WaitRtgSwitch(MyScreen) \
        LP1NR(0xa8, WaitRtgSwitch, struct RtgScreen *, MyScreen, a0, \
        , RTGMASTER_BASE_NAME)

#define WriteRtgPixel(MyScreen, BufferAdr, XPos, YPos, Color) \
        LP5NR(0x6c, WriteRtgPixel, struct RtgScreen *, MyScreen, a0, APTR, BufferAdr, a1, ULONG, XPos, d0, ULONG, YPos, d1, UWORD, Color, d2, \
        , RTGMASTER_BASE_NAME)

#define WriteRtgPixelArray(MyScreen, BufferAdr, Array, Left, Top, Width, Height) \
        LP7NR(0x84, WriteRtgPixelArray, struct RtgScreen *, MyScreen, a0, APTR, BufferAdr, a1, APTR, Array, a2, ULONG, Left, d0, ULONG, Top, d1, ULONG, Width, d2, ULONG, Height, d3, \
        , RTGMASTER_BASE_NAME)

#define WriteRtgPixelRGB(MyScreen, BufferAdr, XPos, YPos, Pixel) \
        LP5NR(0x72, WriteRtgPixelRGB, struct RtgScreen *, MyScreen, a0, APTR, BufferAdr, a1, ULONG, XPos, d0, ULONG, YPos, d1, ULONG, Pixel, d2, \
        , RTGMASTER_BASE_NAME)

#define WriteRtgPixelRGBArray(MyScreen, BufferAdr, Array, Left, Top, Width, Height) \
        LP7NR(0x8a, WriteRtgPixelRGBArray, struct RtgScreen *, MyScreen, a0, APTR, BufferAdr, a1, APTR, Array, a2, ULONG, Left, d0, ULONG, Top, d1, ULONG, Width, d2, ULONG, Height, d3, \
        , RTGMASTER_BASE_NAME)

#endif /* !_INLINE_RTGMASTER_H */



