goverlays.s 4.08 KB

 ##########################################################################
 #
 # This code #includes clipping, lighting, and init code, and ensures
 # the proper overlay is in place when needed.
 #
 ##########################################################################


#if defined(CLIP_ALONE)||defined(FLIGHT)
#include <rsp.h>
#include "mbi.h"

                .text   startClip

#include "gdmem.h"
#include "gfx_regs.h"
#endif /* CLIP_ALONE or FLIGHT */

	

		.align	8

#if defined(FLIGHT) || defined(FASTLIGHT3D)
 ###########################################################################
 #################### LOAD CLIPPING ########################################
 ###########################################################################
.unname	return_save
.name	overp,		$30	# which overlay to load
.name	overeturn,	$21	# return address from loadOverlay
startClip:
	ori	overp, zero, OVERLAY_CLIP  # load clipping
	beq	zero,zero,loadOverlay	   # jump to the overlay loading routine
taskDone:					# taskDone here in DONE overlay
	lh	overeturn, DOCLIP(zero)	   # return to clip code
 ###BRANCH OCCURS to loadOverlay: which will return to doClip:
.unname	overp
.unname	overeturn
.name	return_save,	$30

#endif /* FLIGHT or FASTLIGHT3D */

#ifdef FLIGHT
 ###########################################################################
 #################### PERFORM LIGHTING #####################################
 ###########################################################################
 ## do lighting
#include "gflight.s"
#endif /* FLIGHT */

#ifdef CLIP_ALONE
 ###########################################################################
 #################### JUMP TO CLIPPING ROUTINE #############################
 ###########################################################################
startClip:
	beq	zero, zero, doClip	# jump into clipping code
	sh      return,RETURNJUMP2($0)	# save return address from setup
	nop				# delay slot
	nop				# 
#endif /* CLIP_ALONE */

#if defined(CLIP_ALONE) || defined(FASTLIGHT3D)
 ###########################################################################
 #################### LOAD LIGHTING ########################################
 ###########################################################################
.unname	return_save
.name	overp,		$30	# which overlay to load
.name	overeturn,	$21	# return address from loadOverlay
doLight:
	ori	overp, zero, OVERLAY_LIGHT # load lighting
	beq	zero, zero, loadOverlay	   # jump to the overlay loading routine
	lh	overeturn,DOLIGHT(zero)	   # return to clip code
 ###BRANCH OCCURS to loadOverlay: which will return to doLight:
.unname	overp
.unname	overeturn
.name	return_save,	$30
#endif /* CLIP_ALONE or FASTLIGHT3D */

	
#if !defined(FASTLIGHT3D) && !defined(FLIGHT)
 ###########################################################################
 #################### PERFORM CLIPPING #####################################
 ###########################################################################
#if	(!defined(CLIP_OFF) && defined(F3DLP_GBI))
# include "glclip.s"
#else
# include "gclip.s"
#endif

#endif /* CLIP_ALONE */

#ifdef FASTLIGHT3D
 ###########################################################################
 #################### PERFORM INITIALIZATION ###############################
 ###########################################################################

#include "ginit.s"
	j	DMAWaitDL		# return to main loop and begin
	nop

 ###########################################################################
 #################### PERFORM YIELD RESTART ################################
 ###########################################################################
#define YIELD_RESTART
#include "gyield.s"
#undef YIELD_RESTART

	# Align code following
		.align	8

#ifdef NODATA
clipAndSetup:
		nop
beginSetup:
		nop
#ifdef F3DLP_GBI
case_G_TRI2:
		nop
#endif
#else /* NODATA */
#  ifdef OUTPUT_DRAM
#    include "gfillnops.dram.s"
#  else /* OUTPUT_DRAM */
#  ifdef OUTPUT_FIFO
#    include "gfillnops.fifo.s"
#  else /* OUTPUT_FIFO */
#    include "gfillnops.s"
#  endif /* OUTPUT_FIFO */
#  endif /* OUTPUT_DRAM */
#endif /* NODATA */

#endif /* FASTLIGHT3D */