gs2rdp.s 2.9 KB
/*---------------------------------------------------------------------
	Copyright (C) 1997, Nintendo.
	
	File		gs2rdp.s
	Coded    by	Yoshitaka Yasumoto.	Jan 23, 1997.
	Modified by	
	Comments	
	
	$Id: gs2rdp.s,v 1.1.1.1 2002/05/02 03:29:12 blythe Exp $
  ---------------------------------------------------------------------*/

	# ================================================================
	# RDP 系処理
	# ================================================================

	# ----------------------------------------------------------------
	# case_G_SETSCISSOR
	#	シザリングパラメータを保存しておいて, SP によってスプライトを
	#	カットする. (Copy-Mode 必須)
	#	RDP コマンドの図と異なり画面の左上を XL,YL 右下を XH,YH と
	#	している.
	# ----------------------------------------------------------------
case_G_SETSCISSOR:
  Assign(tmp, 1)
	andi	tmp, gfx0, 0xfff
	sh	tmp, RSP_STATEP_SCISSOR_YL(zero)
	srl	tmp, gfx0, 12
	andi	tmp, tmp,  0xfff
	sh	tmp, RSP_STATEP_SCISSOR_XL(zero)
	andi	tmp, gfx1, 0xfff
	sh	tmp, RSP_STATEP_SCISSOR_YH(zero)
	srl	tmp, gfx1, 12
	andi	tmp, tmp,  0xfff
	j	case_G_RDP_General
	sh	tmp, RSP_STATEP_SCISSOR_XH(zero)
  EndAssign(tmp, 1)

#if 0
 #========================================================================
 #  この 7 命令を gs2imm.s へ移動させる
 #  これにより gs2imm.s の命令数がオーバーレイ領域と一致する.
 #========================================================================
	# ----------------------------------------------------------------
	# case_G_RDPSETOTHERMODE
	#	現在の OtherMode の設定を保存しておく.
	#	(G_SETOTHERMODE_[LH] のために必要)
	# ----------------------------------------------------------------
case_G_RDPSETOTHERMODE:
	sw	gfx0, RSP_STATEP_OTHER_H(zero)
	j	case_G_RDP_General
	sw	gfx1, RSP_STATEP_OTHER_L(zero)
	
	# ----------------------------------------------------------------
	# case_G_RDP_AdrsFixup
	#	コマンド内のセグメントアドレスを物理アドレスに変換してから
	#	RDP コマンドとして送る
	# ----------------------------------------------------------------
case_G_RDP_AdrsFixup:
  Assign(dram_adrs, 19)
	jal	AdrsFixup		
	addi	outp, outp, 8
	j	case_G_RDP_General2
	sw	dram_adrs, 4-8(outp)
  EndAssign(dram_adrs, 19)
#endif
	
	# ----------------------------------------------------------------
	# case_G_RDP_Sync
	#	Sync 系コマンド用
	#	RDP コマンドを送る際に, RSP_STATEP_RDP_STAT を 0 にする
	# ----------------------------------------------------------------
case_G_RDP_Sync:
	sb	zero, RSP_STATEP_RDP_STAT(zero)

	# ----------------------------------------------------------------
	# case_G_RDP_Genaral
	#	RDP コマンドとして DMEM バッファに送る
	# ----------------------------------------------------------------
case_G_RDP_General:
	addi	outp, outp, 8	# SETOTHERMODE からの jump における load-store
	sw	gfx1, 4-8(outp)	# バブルの回避のためこの順序で処理する
case_G_RDP_General2:	
	j	OutputCloseGfxDone
	sw	gfx0, 0-8(outp)
	.symbol	adrs_G_RDP_General, case_G_RDP_General
	
	# End of gs2rdp.s