Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MorsGames
GitHub Repository: MorsGames/sm64plus
Path: blob/master/src/pc/gfx/gfx_dummy.c
7861 views
1
#include <time.h>
2
#include <errno.h>
3
#include <PR/ultratypes.h>
4
5
#include "gfx_window_manager_api.h"
6
#include "gfx_rendering_api.h"
7
8
#include <assert.h>
9
#include <errno.h>
10
#include <time.h>
11
12
static void gfx_dummy_wm_init(const char *game_name, bool start_in_fullscreen) {
13
}
14
15
static void gfx_dummy_wm_set_keyboard_callbacks(bool (*on_key_down)(int scancode), bool (*on_key_up)(int scancode), void (*on_all_keys_up)(void), void (*on_mouse_move)(long x, long y), void on_mouse_press(s8 left, s8 right, s8 middle, s8 wheel)) {
16
}
17
18
static void gfx_dummy_wm_set_fullscreen_changed_callback(void (*on_fullscreen_changed)(bool is_now_fullscreen)) {
19
}
20
21
static void gfx_dummy_wm_set_fullscreen(bool enable) {
22
}
23
24
static void gfx_dummy_wm_set_vsync(bool enable) {
25
}
26
27
static void gfx_dummy_wm_set_window_size(uint32_t width, uint32_t height) {
28
}
29
30
static void gfx_dummy_wm_set_monitor(uint32_t monitor_index) {
31
}
32
33
static int gfx_dummy_wm_get_num_display_modes(void) {
34
return 0;
35
}
36
37
static void gfx_dummy_wm_main_loop(void (*run_one_game_iter)(void)) {
38
while (1) {
39
run_one_game_iter();
40
}
41
}
42
43
static void gfx_dummy_wm_get_dimensions(uint32_t *width, uint32_t *height) {
44
*width = 320;
45
*height = 240;
46
}
47
48
static void gfx_dummy_wm_handle_events(void) {
49
}
50
51
static bool gfx_dummy_wm_start_frame(void) {
52
return true;
53
}
54
55
static void gfx_dummy_wm_swap_buffers_begin(void) {
56
}
57
58
static struct timespec gfx_dummy_wm_timediff(struct timespec t1, struct timespec t2) {
59
t1.tv_sec -= t2.tv_sec;
60
t1.tv_nsec -= t2.tv_nsec;
61
if (t1.tv_nsec < 0) {
62
t1.tv_nsec += 1000000000;
63
t1.tv_sec -= 1;
64
}
65
return t1;
66
}
67
68
static struct timespec gfx_dummy_wm_timeadd(struct timespec t1, struct timespec t2) {
69
t1.tv_sec += t2.tv_sec;
70
t1.tv_nsec += t2.tv_nsec;
71
if (t1.tv_nsec > 1000000000) {
72
t1.tv_nsec -= 1000000000;
73
t1.tv_sec += 1;
74
}
75
return t1;
76
}
77
78
static void gfx_dummy_wm_swap_buffers_end(void) {
79
static struct timespec prev;
80
struct timespec t;
81
clock_gettime(CLOCK_MONOTONIC, &t);
82
struct timespec diff = gfx_dummy_wm_timediff(t, prev);
83
if (diff.tv_sec == 0 && diff.tv_nsec < 1000000000 / 30) {
84
struct timespec add = {0, 1000000000 / 30};
85
struct timespec next = gfx_dummy_wm_timeadd(prev, add);
86
prev = next;
87
} else {
88
prev = t;
89
}
90
}
91
92
static double gfx_dummy_wm_get_time(void) {
93
return 0.0;
94
}
95
96
static bool gfx_dummy_renderer_z_is_from_0_to_1(void) {
97
return false;
98
}
99
100
static void gfx_dummy_renderer_unload_shader(struct ShaderProgram *old_prg) {
101
}
102
103
static void gfx_dummy_renderer_load_shader(struct ShaderProgram *new_prg) {
104
}
105
106
static struct ShaderProgram *gfx_dummy_renderer_create_and_load_new_shader(uint32_t shader_id) {
107
return NULL;
108
}
109
110
static struct ShaderProgram *gfx_dummy_renderer_lookup_shader(uint32_t shader_id) {
111
return NULL;
112
}
113
114
static void gfx_dummy_renderer_shader_get_info(struct ShaderProgram *prg, uint8_t *num_inputs, bool used_textures[2]) {
115
*num_inputs = 0;
116
used_textures[0] = false;
117
used_textures[1] = false;
118
}
119
120
static uint32_t gfx_dummy_renderer_new_texture(void) {
121
return 0;
122
}
123
124
static void gfx_dummy_renderer_select_texture(int tile, uint32_t texture_id) {
125
}
126
127
static void gfx_dummy_renderer_upload_texture(const uint8_t *rgba32_buf, int width, int height) {
128
}
129
130
static void gfx_dummy_renderer_set_sampler_parameters(int tile, bool linear_filter, uint32_t cms, uint32_t cmt) {
131
}
132
133
static void gfx_dummy_renderer_set_depth_test(bool depth_test) {
134
}
135
136
static void gfx_dummy_renderer_set_depth_mask(bool z_upd) {
137
}
138
139
static void gfx_dummy_renderer_set_zmode_decal(bool zmode_decal) {
140
}
141
142
static void gfx_dummy_renderer_set_viewport(int x, int y, int width, int height) {
143
}
144
145
static void gfx_dummy_renderer_set_scissor(int x, int y, int width, int height) {
146
}
147
148
static void gfx_dummy_renderer_set_use_alpha(bool use_alpha) {
149
}
150
151
static void gfx_dummy_renderer_draw_triangles(float buf_vbo[], size_t buf_vbo_len, size_t buf_vbo_num_tris) {
152
}
153
154
static void gfx_dummy_renderer_init(void) {
155
}
156
157
static void gfx_dummy_renderer_on_resize(void) {
158
}
159
160
static void gfx_dummy_renderer_start_frame(void) {
161
}
162
163
static void gfx_dummy_renderer_end_frame(void) {
164
}
165
166
static void gfx_dummy_renderer_finish_render(void) {
167
}
168
169
struct GfxWindowManagerAPI gfx_dummy_wm_api = {
170
gfx_dummy_wm_init,
171
gfx_dummy_wm_set_keyboard_callbacks,
172
gfx_dummy_wm_set_fullscreen_changed_callback,
173
gfx_dummy_wm_set_fullscreen,
174
gfx_dummy_wm_set_vsync,
175
gfx_dummy_wm_set_window_size,
176
gfx_dummy_wm_set_monitor,
177
gfx_dummy_wm_get_num_display_modes,
178
gfx_dummy_wm_main_loop,
179
gfx_dummy_wm_get_dimensions,
180
gfx_dummy_wm_handle_events,
181
gfx_dummy_wm_start_frame,
182
gfx_dummy_wm_swap_buffers_begin,
183
gfx_dummy_wm_swap_buffers_end,
184
gfx_dummy_wm_get_time
185
};
186
187
struct GfxRenderingAPI gfx_dummy_renderer_api = {
188
gfx_dummy_renderer_z_is_from_0_to_1,
189
gfx_dummy_renderer_unload_shader,
190
gfx_dummy_renderer_load_shader,
191
gfx_dummy_renderer_create_and_load_new_shader,
192
gfx_dummy_renderer_lookup_shader,
193
gfx_dummy_renderer_shader_get_info,
194
gfx_dummy_renderer_new_texture,
195
gfx_dummy_renderer_select_texture,
196
gfx_dummy_renderer_upload_texture,
197
gfx_dummy_renderer_set_sampler_parameters,
198
gfx_dummy_renderer_set_depth_test,
199
gfx_dummy_renderer_set_depth_mask,
200
gfx_dummy_renderer_set_zmode_decal,
201
gfx_dummy_renderer_set_viewport,
202
gfx_dummy_renderer_set_scissor,
203
gfx_dummy_renderer_set_use_alpha,
204
gfx_dummy_renderer_draw_triangles,
205
gfx_dummy_renderer_init,
206
gfx_dummy_renderer_on_resize,
207
gfx_dummy_renderer_start_frame,
208
gfx_dummy_renderer_end_frame,
209
gfx_dummy_renderer_finish_render
210
};
211