goverlays.s
4.08 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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
##########################################################################
#
# 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 */