
;***********************************************************************
;*---------------------------------------------------------------------*
;*                    RTG BOB-SYSTEM EXAMPLE SOURCE                    *
;*---------------------------------------------------------------------*
;*        Created by Rady Marusa, Ablaze Entertainment Slovakia.       *
;*                      http://www.vadium.sk/ablaze                    *
;*---------------------------------------------------------------------*
;***********************************************************************

;-----------------------------------------------------------------------

	INCLUDE "RTGMASTER/RTGMASTER.I"
	INCLUDE "RTGMASTER/RTGSUBLIBS.I"
	INCLUDE "RTGMASTER/RTGMASTER_LIB.I"

;------------------------------------------------------------------------

	SECTION EXAMPLE,CODE


START   MOVE.L  SP,OLD_SP

	BSR.W   RTG_NEW

	MOVE.L  RTGPTR,A6
	MOVE.L  RTG_SCR,A0
	MOVEQ   #8,D0
	JSR     -$D8(A6)                ; OPEN RTGBOB SYSTEM
	MOVE.L  D0,RTGBOB

	BSR.W   INIT
	
.LOOP   MOVE.L  RTGPTR,A6
	MOVE.L  RTGBOB,A0
	MOVE.L  CHUNKY_BUFFER,A1
	MOVE.L  BACK_BUFFER,A2
	MOVEQ   #1,D0
	JSR     -$EA(A6)                ; RTG REFRESH BUFFER
	
	MOVE.L  RTGPTR,A6
	MOVE.L  RTGBOB,A0
	MOVE.L  CHUNKY_BUFFER,A1
	MOVE.L  #SPRDATA,A2
	MOVE.L  GOGO,D0
	SUB.L   #120,D0
	MOVEQ   #40,D1
	MOVE.L  #64,D2                  ; SPRITE SIZE X
	MOVE.L  #50,D3                  ; SPRITE SIZE Y
	JSR     -$F0(A6)                ; RTG DRAW SPRITE 1

	MOVEQ   #40,D0
	MOVE.L  GOGO,D1
	SUB.L   #120,D1
	JSR     -$F0(A6)                ; RTG DRAW SPRITE 2

	MOVE.L  GOGO,D0
	SUB.L   #120,D0
	MOVE.L  GOGO,D1
	SUB.L   #120,D1
	JSR     -$F0(A6)                ; RTG DRAW SPRITE 3

	ADD.L   #1,GOGO                 ; SPRITE MOVEMENT...
	ANDI.L  #511,GOGO

	JSR     CONVERT                 ; AGA/CGFX TARGET
	BTST.B  #10,$DFF016
	BNE.W   .LOOP

	BSR.W   RTG_OLD
	MOVE.L  RTGPTR,A6
	MOVE.L  RTGBOB,A0
	JSR     -$E4(A6)                ; CLOSE RTGBOB SYSTEM
	RTS

	
FAILED  BSR.W   RTG_OLD
	MOVE.L  RTGPTR,A6
	MOVE.L  RTGBOB,A0
	JSR     -$E4(A6)                ; CLOSE RTGBOB SYSTEM
	MOVE.L  OLD_SP,SP
	RTS



INIT    MOVE.L  #BUF1,CHUNKY_BUFFER     ; INIT BOTH BUFFERS
	MOVE.L  #BUF2,BACK_BUFFER
	LEA     BGR(PC),A0
	MOVE.L  CHUNKY_BUFFER(PC),A1
	BSR.W   COPY
	MOVE.L  CHUNKY_BUFFER(PC),A0
	MOVE.L  BACK_BUFFER(PC),A1
	BSR.W   COPY
	BSR.W   INITPAL
	RTS


INITPAL LEA     PALLETE(PC),A0          ; INIT PALLETE
	LEA     COLORS+4(PC),A1
	MOVE.W  #767,D0
.LOOP   MOVE.B  (A0)+,(A1)
	ADDQ    #4,A1
	DBF     D0,.LOOP
	MOVE.L  RTGPTR,A6
	MOVE.L RTG_SCR,A0
	LEA COLORS,A1
	JSR _LVOLoadRGBRtg(A6)
	RTS


COPY    MOVE.L  #5119,D0                ; COPY SCREEN (320x256 PIXELS)
.LOOP   MOVE.L  (A0)+,(A1)+
	MOVE.L  (A0)+,(A1)+
	MOVE.L  (A0)+,(A1)+
	MOVE.L  (A0)+,(A1)+
	DBF     D0,.LOOP
	RTS

*********************************************************************

RTG_NEW MOVE.L  $4,A6                   ; INIT RTG STUFF
	LEA     RTGNAME,A1
	MOVEQ   #0,D0
	JSR     -408(A6)
	MOVE.L  D0,RTGPTR
	BEQ.W   .ERR3
	MOVE.L  RTGPTR,A6
	LEA     SRTAGS,A0
	JSR     _LVORtgScreenModeReq(A6)
	MOVE.L  D0,SMODE
	BEQ.W   FAILED
	MOVE.L  SMODE,A0
	LEA     SCTAGS,A1
	JSR     _LVOOpenRtgScreen(A6)
	MOVE.L  D0,RTG_SCR
	BEQ.W   .ERR4
	MOVE.L  RTG_SCR,A0
	LEA     TAGS,A1
	JSR     _LVOGetRtgScreenData(A6)
	MOVE.L  RTG_SCR,A0
	LEA     COLORS,A1
	JSR     _LVOLoadRGBRtg(A6)
	MOVE.L  RTG_SCR,A0
	JSR     _LVOLockRtgScreen(A6)
	MOVE.L  D0,SCREEN
	MOVE.L  RTG_SCR,A0
	MOVEQ   #0,D0
	JSR     _LVOGetBufAdr(A6)
	MOVE.L  D0,BUFFER1
	BEQ.W   FAILED
	MOVE.L  RTG_SCR,A0
	MOVEQ   #1,D0
	JSR     _LVOGetBufAdr(A6)
	MOVE.L  D0,BUFFER2
	MOVE.L  D0,BUFFERO
	BEQ.W   FAILED
	MOVE.L  RTG_SCR,A0
	JSR     _LVORtgInitRDCMP(A6)
	MOVE.L  D0,RDCMP
	CLR.W   _ACTIVE
	RTS
.ERR3   MOVEQ   #-3,D0
	BRA.W   FAILED
.ERR4   MOVEQ   #-4,D0
	BRA.W   FAILED
	
RTG_OLD MOVE.L  RTGPTR,A6               ; CLOSE RTG STUFF
	MOVE.L  RTG_SCR,D7
	BEQ.S   .EXIT
	MOVE.L  D7,A0
	JSR     _LVOUnlockRtgScreen(A6)
	MOVE.L  RTG_SCR,D0
	BEQ.S   .EXIT
	MOVE.L  D0,A0
	JSR     _LVOCloseRtgScreen(A6)
	MOVE.L  SMODE,D0
	BEQ.S   .EXIT
	MOVE.L  D0,A0
	JSR     _LVOFreeRtgScreenModeReq(A6)
	MOVE.L  RTGPTR,D0
	BEQ.S   .EXIT
	MOVE.L  D0,A1
	MOVE.L  $4.w,A6
	JSR     -414(A6)
.EXIT   RTS

CONVERT MOVE.L RTG_SCR,A0
	MOVE.L BUFFERO,A1
	MOVE.L CHUNKY_BUFFER,A2
	MOVEQ #0,D0             ; X DEST OFFSET
	MOVEQ #0,D1             ; Y DEST OFFSET
	MOVE.L WIDTH,D2         ; WIDTH OF THE CHUNKY-COPY/C2P
	MOVE.L HEIGHT,D3        ; HEIGHT OF THE CHUNKY-COPY/C2P
	MOVE.L WIDTH,D4         ; SOURCE-WIDTH
	MOVE.L HEIGHT,D5        ; SOURCE-HEIGHT
	MOVE.L #0,D6            ; SOURCE-X-OFFSET
	MOVE.L #0,D7            ; SOURCE-Y-OFFSET
	MOVE.L #0,A3            ; NO MASKING (IMPORTANT !!!)
	MOVE.L RTGPTR,A6
	JSR _LVOCopyRtgBlit(A6) ; DO IT!
	MOVEQ   #0,D0
	MOVE.W  _ACTIVE,D0
	ADDQ.W  #1,D0
	MOVE.W  D0,_ACTIVE
	ANDI.W  #1,D0
	BNE.S   .RTG1
	MOVE.L  BUFFER2,BUFFERO
	BRA.S   .CONT
.RTG1   MOVE.L  BUFFER1,BUFFERO
.CONT   MOVE.L  RTGPTR,A6
	MOVE.L  RTG_SCR,A0
	JSR     _LVOSwitchScreens(A6)
	RTS

RTGNAME DC.B    'rtgmaster.library',0
	EVEN

RTGPTR  DC.L 0

SMODE   DC.L 0
SCREEN  DC.L 0
RDCMP   DC.L 0
RTG_SCR DC.L 0

COLORS  DC.W    256,0
	BLK.B   3072,0
	DC.L    0,0

BUFFER1 DC.L    0
BUFFER2 DC.L    0
BUFFERO DC.L    0
_ACTIVE DC.W    0,0

CHUNKY_BUFFER   DC.L    0
BACK_BUFFER     DC.L    0

;-----------------------------------------------------------------------

SRTAGS  dc.l smr_MinWidth,320
	dc.l smr_MaxWidth,320
	dc.l smr_MinHeight,256
	dc.l smr_MaxHeight,256
	dc.l smr_InitialWidth,320
	dc.l smr_InitialHeight,256
	dc.l smr_InitialDepth,8
	dc.l smr_ChunkySupport,$00000200
	dc.l smr_PlanarSupport,$000000c0
	dc.l smr_PlanarRoundW,32
	dc.l smr_PlanarRoundH,32
	dc.l smr_ChunkyRoundW,32
	dc.l smr_ChunkyRoundH,32
	dc.l smr_Buffers,2
	dc.l smr_ForceOpen,0
	dc.l 0,0
	
SCTAGS  dc.l rtg_Buffers,2
	dc.l rtg_Draggable,-1
	dc.l rtg_Interleaved,0
	dc.l rtg_PlanarSupport,$000000c0
	dc.l rtg_ChunkySupport,$00000200
	dc.l 0,0
	
TAGS    dc.l grd_PlaneSize
BPLSIZE dc.l 0
	dc.l grd_Width
WIDTH   dc.l 0
	dc.l grd_Height
HEIGHT  dc.l 0
	dc.l grd_Depth
DEPTH   dc.l 0
	dc.l grd_PixelLayout
PIXEL   dc.l 0
	dc.l 0,0

OLD_SP  DC.L    0
RTGBOB  DC.L    0
GOGO    DC.L    64

PALLETE INCBIN  'BACKGROUND.PAL'
BGR     INCBIN  'BACKGROUND.BIN'
SPRDATA INCBIN  'SPRITE.BIN'


;----------------------------------------------------------------------

	SECTION BUFFERS,bss_f

BUF1    DS.B    320*256
BUF2    DS.B    320*256 


