gs2bg1cyc.s
3.89 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
/*---------------------------------------------------------------------
Copyright (C) 1997, Nintendo.
File gs2bg1cyc.s
Coded by Yoshitaka Yasumoto. Mar 27, 1997.
Modified by
Comments
$Id: gs2bg1cyc.s,v 1.1.1.1 2002/05/02 03:29:12 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 の作画処理のオーバーレイコード
#----------------------------------------------------------------------------
overlay_G_OBJ_SPRITE:
#
# オーバーレイ終了後 case_G_OBJ_SPRITE へジャンプする
# 既に sys0 に飛び先が代入されているので, そのまま overlay を
# 行なう.
#
_li (sys1, adrs_G_OBJ_SPRITE)
j loadOverlaySR1
_li (sys0, 8) # Overlay code 1 をロード
.space adrs_G_OBJ_SPRITE_Txtr+0x1000
#
# 複合命令の処理, オーバーレイ後は $20 の値が破壊されるので
# LoadTxtr に戻って再度 $20 の値を代入する.
#
overlay_G_OBJ_SPRITE_Txtr:
_li (sys1, adrs_LoadTx_ReturnNext)
j loadOverlaySR1
_li (sys0, 8) # Overlay code 1 をロード
#----------------------------------------------------------------------------
# case_G_BG_1CYC_Cont:
# 拡大縮小可能な BG の作画ルーチンの本体 (A パート)
#----------------------------------------------------------------------------
case_G_BG_1CYC_Cont:
#include "gs2bg1cycL.s"
#----------------------------------------------------------------------------
# アドレス合せのための詰め物
# Overlay 領域 1 とのサイズを合わせるために nop を付加する
#----------------------------------------------------------------------------
BG1CYC_PAD_START_A: .symbol dummy_BG1CYC_PAD_START_A, 0
.space adrs_G_BG_1CYC+0x1000
BG1CYC_PAD_END_A: .symbol dummy_BG1CYC_PAD_END_A, 0
#----------------------------------------------------------------------------
# case_G_BG_1CYC:
# 拡大縮小可能な BG の作画ルーチン起動フック
#----------------------------------------------------------------------------
.symbol adrs_G_BG_1CYC_Cont, case_G_BG_1CYC_Cont
case_G_BG_1CYC:
#---------------------------------------------------------------------
# uObjBg データのアドレスを物理アドレスに変換し, 処理本体へ飛ぶ
# gs2sprite とオーバーレイを行なうので, この処理の命令数は
# gs2sprite 側と合わせなければならない
#---------------------------------------------------------------------
_li (return, adrs_G_BG_1CYC_Cont)
j AdrsFixup
_li ($20, RSP_INPUT_BG) # 64bit alignment
.space adrs_G_OBJ_RECT+0x1000
#----------------------------------------------------------------------------
# overlay_G_OBJ_RECT:
# 回転不可能な OBJECT の作画処理のオーバーレイコード
#----------------------------------------------------------------------------
overlay_G_OBJ_RECT:
#
# オーバーレイ終了後 case_G_OBJ_RECT へジャンプする
#
_li (sys1, adrs_G_OBJ_RECT)
j loadOverlaySR1
_li (sys0, 8) # Overlay code 1 をロード
.space adrs_G_OBJ_RECT_Txtr+0x1000
#
# 複合命令の処理, オーバーレイ後は $20 の値が破壊されるので
# LoadTxtr に戻って再度 $20 の値を代入する.
#
overlay_G_OBJ_RECT_Txtr:
_li (sys1, adrs_LoadTx_ReturnNext)
j loadOverlaySR1
_li (sys0, 8) # Overlay code 1 をロード
#----------------------------------------------------------------------------
# case_G_BG_1CYC_Cont:
# 拡大縮小可能な BG の作画ルーチンの本体 (後半パート)
#----------------------------------------------------------------------------
#include "gs2bg1cycL.s"
#----------------------------------------------------------------------------
# アドレス合せのための詰め物
# Overlay 領域 1 とのサイズを合わせるために nop を付加する
#----------------------------------------------------------------------------
BG1CYC_PAD_START_B: .symbol dummy_BG1CYC_PAD_START_B, 0
.space adrs_G_OBJ_RECT_end+0x1000
BG1CYC_PAD_END_B: .symbol dummy_BG1CYC_PAD_END_B, 0
/*======== End of gs2bg1cyc.s ========*/