gxs2bg1cyc.s
4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/*---------------------------------------------------------------------
Copyright (C) 1997, Nintendo.
File gs2bg1cyc.s
Coded by Yoshitaka Yasumoto. Mar 27, 1997.
Modified by
Comments
$Id: gxs2bg1cyc.s,v 1.1.1.1 2002/05/02 03:29:11 blythe Exp $
---------------------------------------------------------------------*/
#!Reserved (0,11,12,17,18,19,20,23,24,25,26,27,30,31)
#!Reserved (v0,v1,v27,v28,v29,v30,v31)
#----------------------------------------------------------------------------
# overlay_G_OBJ_SPRITE:
# 回転可能な OBJECT の作画処理のオーバーレイコード
# オーバーレイ終了後 case_G_OBJ_SPRITE へジャンプする
# gfx1 が破壊されるので先にロードしておく
#----------------------------------------------------------------------------
.bound 8
overlay_G_OBJ_SPRITE:
AssignForDMAproc
jal AdrsFixup
_li (dma_len, 23)
jal DMAread
_li (dmem_adrs, RSP_INPUT_SPRITE)
EndAssignForDMAproc
_li (sys1, case_G_OBJ_SPRITE_1)
j LoadOverlay
_li (sys0, RSP_LSTAT_OVERLAY_SPRITE)
#----------------------------------------------------------------------------
# overlay_G_OBJ_SPRITE_Txtr:
# 複合命令の処理, オーバーレイ後は $20 の値が破壊されるので
# LoadTxtr に戻って再度 $20 の値を代入する.
#----------------------------------------------------------------------------
.space case_G_OBJ_SPRITE_Txtr
overlay_G_OBJ_SPRITE_Txtr:
_li (sys1, adrs_LoadTx_ReturnNext)
j LoadOverlay
_li (sys0, RSP_LSTAT_OVERLAY_SPRITE)
#----------------------------------------------------------------------------
# case_G_BG_1CYC_Cont:
# 拡大縮小可能な BG の作画ルーチンの本体 (A パート)
#----------------------------------------------------------------------------
overlay_G_BG_1CYC_Cont:
#include "gs2bg1cycL.s"
#----------------------------------------------------------------------------
# アドレス合せのための詰め物
# Overlay 領域 1 とのサイズを合わせるために nop を付加する
#----------------------------------------------------------------------------
.space overlay_G_BG_1CYC-4
#----------------------------------------------------------------------------
# case_G_BG_1CYC:
# 拡大縮小可能な BG の作画ルーチン起動フック
#----------------------------------------------------------------------------
#---------------------------------------------------------------------
# uObjBg データのアドレスを物理アドレスに変換し, 処理本体へ飛ぶ
# gs2sprite とオーバーレイを行なうので, この処理の命令数は
# gs2sprite 側と合わせなければならない
#---------------------------------------------------------------------
case_G_BG_1CYC_0:
lw gfx1, (RSP_DLINPUT_BOTTOM-4)(dinp)
case_G_BG_1CYC:
_li (return, overlay_G_BG_1CYC_Cont)
j AdrsFixup
_li ($20, RSP_INPUT_BG) # 64bit alignment
#----------------------------------------------------------------------------
# overlay_G_OBJ_RECT:
# 回転不可能な OBJECT の作画処理のオーバーレイコード
# オーバーレイ終了後 case_G_OBJ_RECT_1 へジャンプする
# gfx1 が破壊されるので先にロードしておく
#----------------------------------------------------------------------------
.space case_G_OBJ_RECT
overlay_G_OBJ_RECT:
AssignForDMAproc
jal AdrsFixup
_li (dma_len, 23)
jal DMAread
_li (dmem_adrs, RSP_INPUT_SPRITE)
EndAssignForDMAproc
_li (sys1, case_G_OBJ_RECT_1)
j LoadOverlay
_li (sys0, RSP_LSTAT_OVERLAY_SPRITE)
#----------------------------------------------------------------------------
# overlay_G_OBJ_RECT_Txtr:
# 複合命令の処理, オーバーレイ後は $20 の値が破壊されるので
# LoadTxtr に戻って再度 $20 の値を代入する.
#----------------------------------------------------------------------------
.space case_G_OBJ_RECT_Txtr
overlay_G_OBJ_RECT_Txtr:
_li (sys1, adrs_LoadTx_ReturnNext)
j LoadOverlay
_li (sys0, RSP_LSTAT_OVERLAY_SPRITE)
#----------------------------------------------------------------------------
# case_G_BG_1CYC_Cont:
# 拡大縮小可能な BG の作画ルーチンの本体 (後半パート)
#----------------------------------------------------------------------------
#include "gs2bg1cycL.s"
/*======== End of gs2bg1cyc.s ========*/