sdk-world v2026.11.05
PS2 SDK - world tier (copyleft-allowed, non-essential packages)
Loading...
Searching...
No Matches
gsCore.h
Go to the documentation of this file.
1
5// ____ ___ | / _____ _____
6// | __ | |___/ | |
7// |___| ___| | \ __|__ | gsKit Open Source Project.
8// ----------------------------------------------------------------------
9// Copyright 2004 - Chris "Neovanglist" Gilbert <Neovanglist@LainOS.org>
10// Licenced under Academic Free License version 2.0
11// Review gsKit README & LICENSE files for further details.
12//
13// gsCore.h - Header for gsCore.c
14//
15// Parts taken from emoon's BreakPoint Demo Library
16//
17
18#ifndef __GSCORE_H__
19#define __GSCORE_H__
20
21#include "gsKit.h"
22
24#define GSKIT_ALLOC_SYSBUFFER 0x00
26#define GSKIT_ALLOC_USERBUFFER 0x01
27
29#define GSKIT_ALLOC_ERROR 0x00
30
32#define GS_GIF_BLOCKSIZE 0x7fff
33
35#define GS_VRAM_BLOCKSIZE_8K 8192
37#define GS_VRAM_BLOCKSIZE_256 256
39#define GS_VRAM_TBWALIGN 64
41#define GS_VRAM_TBWALIGN_CLUT 128
42
44#define GS_CMODE_REPEAT 0x00
46#define GS_CMODE_CLAMP 0x01
48#define GS_CMODE_REGION_CLAMP 0x02
50#define GS_CMODE_REGION_REPEAT 0x03
52#define GS_CMODE_RESET 0xFF
53
55#define GS_SCISSOR_RESET 0x00
56
58#define GS_ZTEST_OFF 0x01
60#define GS_ZTEST_ON 0x02
62#define GS_ATEST_OFF 0x03
64#define GS_ATEST_ON 0x04
66#define GS_D_ATEST_OFF 0x05
68#define GS_D_ATEST_ON 0x06
69
71#define GS_FILTER_NEAREST 0x00
73#define GS_FILTER_LINEAR 0x01
74
76#define GS_CLUT_STORAGE_CSM1 0x00
78#define GS_CLUT_STORAGE_CSM2 0x01
79
82{
83 s32 x __attribute__ ((packed));
84 s32 y __attribute__ ((packed));
85 s32 z __attribute__ ((packed));
86};
87typedef struct gsVertex GSVERTEX;
88
96
97#ifdef __cplusplus
98extern "C" {
99#endif
100
102u32 gsKit_vram_alloc(GSGLOBAL *gsGlobal, u32 size, u8 type);
103
105void gsKit_vram_clear(GSGLOBAL *gsGlobal);
106
113void gsKit_sync_flip(GSGLOBAL *gsGlobal);
114
119void gsKit_lock_buffer(GSGLOBAL *gsGlobal);
120
125void gsKit_unlock_buffer(GSGLOBAL *gsGlobal);
126
130int gsKit_lock_status(GSGLOBAL *gsGlobal);
131
134void gsKit_display_buffer(GSGLOBAL *gsGlobal);
135
138void gsKit_switch_context(GSGLOBAL *gsGlobal);
139
141void gsKit_setactive(GSGLOBAL *gsGlobal);
142
144void gsKit_finish(void);
145
147void gsKit_vsync_wait(void);
148
150void gsKit_hsync_wait(void);
151
153void gsKit_vsync_nowait(void);
154
156int gsKit_add_vsync_handler(int (*vsync_callback)(int));
157
159void gsKit_remove_vsync_handler(int callback_id);
160
162int gsKit_add_hsync_handler(int (*hsync_callback)(int));
163
165void gsKit_remove_hsync_handler(int callback_id);
166
168int gsKit_add_finish_handler(int (*finish_callback)(int));
169
171void gsKit_remove_finish_handler(int callback_id);
172
174void gsKit_get_field(GSGLOBAL *gsGlobal);
175
177void gsKit_set_drawfield(GSGLOBAL *gsGlobal, u8 field);
178
183void gsKit_clear(GSGLOBAL *gsGlobal, u64 Color);
184
189void gsKit_set_scissor(GSGLOBAL *gsGlobal, u64 ScissorBounds);
190
209void gsKit_set_test(GSGLOBAL *gsGlobal, u8 Preset);
210
227void gsKit_set_clamp(GSGLOBAL *gsGlobal, u8 Preset);
228
230void gsKit_set_primalpha(GSGLOBAL *gsGlobal, u64 AlphaMode, u8 PerPixel);
231
233void gsKit_set_texfilter(GSGLOBAL *gsGlobal, u8 FilterMode);
234
236void gsKit_set_texclut(GSGLOBAL *gsGlobal, gs_texclut texClut);
237
239void gsKit_set_dither_matrix(GSGLOBAL *gsGlobal);
240
242void gsKit_set_dither(GSGLOBAL *gsGlobal);
243
245GSQUEUE gsKit_set_finish(GSGLOBAL *gsGlobal);
246
248void gsKit_queue_reset(GSQUEUE *Queue);
249
251void gsKit_queue_exec(GSGLOBAL *gsGlobal);
252
254void gsKit_queue_exec_real(GSGLOBAL *gsGlobal, GSQUEUE *Queue);
255
257void *gsKit_alloc_ucab(int size);
258
260void gsKit_free_ucab(void *p);
261
263void gsKit_queue_init(GSGLOBAL *gsGlobal, GSQUEUE *Queue, u8 mode, int size);
264
266void gsKit_queue_free(GSGLOBAL *gsGlobal, GSQUEUE *Queue);
267
269void gsKit_queue_set(GSGLOBAL *gsGlobal, GSQUEUE *Queue);
270
272void gsKit_mode_switch(GSGLOBAL *gsGlobal, u8 mode);
273
274#ifdef __cplusplus
275}
276#endif
277
278#endif /* __GSCORE_H__ */
int gsKit_add_finish_handler(int(*finish_callback)(int))
Installs a finish interrupt handler.
Definition gsCore.c:219
void gsKit_switch_context(GSGLOBAL *gsGlobal)
Definition gsCore.c:141
void gsKit_setactive(GSGLOBAL *gsGlobal)
Sets Your Active Framebuffer.
Definition gsCore.c:83
void gsKit_queue_exec_real(GSGLOBAL *gsGlobal, GSQUEUE *Queue)
Specific Draw Queue "Execution" (Kicks the Queue passed for the second argument).
Definition gsCore.c:509
int gsKit_add_vsync_handler(int(*vsync_callback)(int))
Installs a vsync interrupt handler (vblank_start).
Definition gsCore.c:171
void gsKit_queue_reset(GSQUEUE *Queue)
Reset specified drawqueue to it's initial state (Useful for clearing the Persistent Queue).
Definition gsCore.c:553
int gsKit_add_hsync_handler(int(*hsync_callback)(int))
Installs a hsync interrupt handler (hblank_start).
Definition gsCore.c:195
void gsKit_remove_finish_handler(int callback_id)
Removes a finish interrupt handler.
Definition gsCore.c:233
void gsKit_get_field(GSGLOBAL *gsGlobal)
Sets gsGlobal->EvenOrOdd depending on current field drawing.
Definition gsCore.c:160
void gsKit_vram_clear(GSGLOBAL *gsGlobal)
GS VRAM Clear.
Definition gsCore.c:53
void gsKit_vsync_nowait(void)
Initiates a vsync but doesn't block.
Definition gsCore.c:155
void gsKit_set_clamp(GSGLOBAL *gsGlobal, u8 Preset)
Definition gsCore.c:318
void gsKit_queue_set(GSGLOBAL *gsGlobal, GSQUEUE *Queue)
Set Current Draw Queue.
Definition gsCore.c:652
void gsKit_clear(GSGLOBAL *gsGlobal, u64 Color)
Definition gsCore.c:244
u32 gsKit_vram_alloc(GSGLOBAL *gsGlobal, u32 size, u8 type)
GS VRAM Allocation.
Definition gsCore.c:20
void gsKit_set_scissor(GSGLOBAL *gsGlobal, u64 ScissorBounds)
Definition gsCore.c:270
void gsKit_set_dither(GSGLOBAL *gsGlobal)
Enables/Disables dithering, with the gsGlobal Dithering option.
Definition gsCore.c:421
void gsKit_remove_vsync_handler(int callback_id)
Removes a vsync interrupt handler.
Definition gsCore.c:185
void gsKit_hsync_wait(void)
Blocks until a HSync.
Definition gsCore.c:165
void gsKit_display_buffer(GSGLOBAL *gsGlobal)
Definition gsCore.c:135
void gsKit_set_texfilter(GSGLOBAL *gsGlobal, u8 FilterMode)
Sets the Texture Filtering Parameters.
Definition gsCore.c:376
GSQUEUE gsKit_set_finish(GSGLOBAL *gsGlobal)
Append the Current Queue with a GS_FINISH Register.
Definition gsCore.c:491
void gsKit_set_dither_matrix(GSGLOBAL *gsGlobal)
Sets the Dither Matrix Setting.
Definition gsCore.c:404
void gsKit_lock_buffer(GSGLOBAL *gsGlobal)
Definition gsCore.c:120
void gsKit_free_ucab(void *p)
Free UCAB buffer in GSQUEUE, internal use only.
Definition gsCore.c:603
void gsKit_remove_hsync_handler(int callback_id)
Removes a hsync interrupt handler.
Definition gsCore.c:209
void gsKit_set_primalpha(GSGLOBAL *gsGlobal, u64 AlphaMode, u8 PerPixel)
Sets the Alpha Blending Parameters.
Definition gsCore.c:356
void gsKit_queue_free(GSGLOBAL *gsGlobal, GSQUEUE *Queue)
Free Allocated Memory for Draw Queue.
Definition gsCore.c:634
GSFLIP_MODE
Flip mode for gsKit_hires_flip_ext.
Definition gsCore.h:90
@ GSFLIP_VSYNC
Wait for vsync before flipping.
Definition gsCore.h:92
@ GSFLIP_RATE_LIMIT_2
Limit to 30fps (2 vsyncs per frame).
Definition gsCore.h:94
@ GSFLIP_RATE_LIMIT_1
Limit to 60fps (1 vsync per frame).
Definition gsCore.h:93
@ GSFLIP_DIRECT
Flip immediately, no vsync wait.
Definition gsCore.h:91
void gsKit_set_drawfield(GSGLOBAL *gsGlobal, u8 field)
Sets the GS to draw only on even/odd/both fields (from libgraph).
Definition gsCore.c:440
void gsKit_set_test(GSGLOBAL *gsGlobal, u8 Preset)
Definition gsCore.c:286
int gsKit_lock_status(GSGLOBAL *gsGlobal)
Definition gsCore.c:130
void gsKit_vsync_wait(void)
Blocks Until a VSync.
Definition gsCore.c:149
void gsKit_queue_init(GSGLOBAL *gsGlobal, GSQUEUE *Queue, u8 mode, int size)
Initialize a Draw Queue (Allocates memory for the Queue).
Definition gsCore.c:612
void gsKit_queue_exec(GSGLOBAL *gsGlobal)
Normal User Draw Queue "Execution" (Kicks Oneshot and Persistent Queues).
Definition gsCore.c:567
void gsKit_set_texclut(GSGLOBAL *gsGlobal, gs_texclut texClut)
Sets the CLUT position specfications.
Definition gsCore.c:390
void gsKit_mode_switch(GSGLOBAL *gsGlobal, u8 mode)
Set Current Draw Queue (Between GS_ONESHOT and GS_PERSISTENT).
Definition gsCore.c:657
void gsKit_unlock_buffer(GSGLOBAL *gsGlobal)
Definition gsCore.c:125
void gsKit_finish(void)
Blocks until FINISH is triggered.
Definition gsCore.c:115
void gsKit_sync_flip(GSGLOBAL *gsGlobal)
Definition gsCore.c:63
void * gsKit_alloc_ucab(int size)
Allocate UCAB buffer in GSQUEUE, internal use only.
Definition gsCore.c:588
Basic X/Y/Z Vertex Structure.
Definition gsCore.h:82