mirror of
https://github.com/Ed94/pikuma_ps1.git
synced 2026-06-01 18:41:13 -07:00
wip: attempting to do gp_display_frame and gp_screen_init in asm
This commit is contained in:
@@ -4,17 +4,62 @@
|
||||
#include "duffle/gp.h"
|
||||
#include "hello_gpu.h"
|
||||
|
||||
#include "libgpu.h"
|
||||
#include "libetc.h"
|
||||
|
||||
DoubleBuffer screen_buffer;
|
||||
S16 active_screen_buffer;
|
||||
|
||||
void gp_screen_init_c11(void)
|
||||
{
|
||||
ResetGraph(0);
|
||||
// First buffer area
|
||||
SetDefDispEnv((DISPENV*)& screen_buffer.display[0], 0, 0, ScreenRes_X, ScreenRes_Y);
|
||||
SetDefDrawEnv((DRAWENV*)& screen_buffer.draw [0], 0, ScreenRes_Y, ScreenRes_X, ScreenRes_Y);
|
||||
// Second buffer rea
|
||||
SetDefDispEnv((DISPENV*)& screen_buffer.display[1], 0, ScreenRes_Y, ScreenRes_X, ScreenRes_Y);
|
||||
SetDefDrawEnv((DRAWENV*)& screen_buffer.draw [1], 0, 0, ScreenRes_X, ScreenRes_Y);
|
||||
// Set the back/drawing buffer
|
||||
screen_buffer.draw[0].enable_auto_clear = true;
|
||||
screen_buffer.draw[1].enable_auto_clear = true;
|
||||
// Set the background clear color
|
||||
screen_buffer.draw[0].initial_bg_color = (RGB8){ .r = 63, .g = 0, .b = 127 };
|
||||
screen_buffer.draw[1].initial_bg_color = (RGB8){ .r = 127, .g = 63, .b = 0 };
|
||||
// Set the current initial buffer
|
||||
active_screen_buffer = 0;
|
||||
PutDispEnv((DISPENV*)& screen_buffer.display[active_screen_buffer]);
|
||||
PutDrawEnv((DRAWENV*)& screen_buffer.draw [active_screen_buffer]);
|
||||
// Initialize and setup the GTE geometry offsets
|
||||
InitGeom();
|
||||
SetGeomOffset(ScreenRes_CenterX, ScreenRes_CenterY);
|
||||
SetGeomScreen(ScreenRes_CenterX);
|
||||
// Enable display
|
||||
SetDispMask(1);
|
||||
}
|
||||
|
||||
void gp_display_frame_c11(void) {
|
||||
DrawSync(0);
|
||||
VSync(0);
|
||||
PutDispEnv((DISPENV*)& screen_buffer.display[active_screen_buffer]);
|
||||
PutDrawEnv((DRAWENV*)& screen_buffer.draw [active_screen_buffer]);
|
||||
{
|
||||
// TODO: Sort objects in ordering table
|
||||
}
|
||||
active_screen_buffer = !active_screen_buffer; // Swap current buffer
|
||||
}
|
||||
|
||||
void render_c11(void) {
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
gp_screen_init();
|
||||
// gp_screen_init();
|
||||
gp_screen_init_c11();
|
||||
|
||||
while (1)
|
||||
{
|
||||
|
||||
render_c11();
|
||||
gp_display_frame_c11();
|
||||
};
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user