mirror of
https://github.com/Ed94/pikuma_ps1.git
synced 2026-06-01 18:41:13 -07:00
determining the level of granularity I have with asm symbolic debugging.
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
#ifdef INTELLISENSE_DIRECTIVES
|
||||
# pragma once
|
||||
#endif
|
||||
|
||||
typedef unsigned char U8;
|
||||
typedef signed char S8;
|
||||
typedef unsigned short U16;
|
||||
typedef signed short S16;
|
||||
typedef unsigned int U32;
|
||||
typedef signed int S32;
|
||||
typedef unsigned char BYTE;
|
||||
typedef unsigned int USIZE;
|
||||
typedef signed int SSIZE;
|
||||
typedef S8 B8;
|
||||
typedef S16 B16;
|
||||
typedef S32 B32;
|
||||
enum {
|
||||
false = 0,
|
||||
true = 1,
|
||||
true_overflow,
|
||||
};
|
||||
#define glue_impl(A, B) A ## B
|
||||
#define glue(A, B) glue_impl(A, B)
|
||||
#define stringify_impl(S) #S
|
||||
#define stringify(S) stringify_impl(S)
|
||||
#define tmpl(prefix, type) prefix ## _ ## type
|
||||
|
||||
#define alignas _Alignas
|
||||
#define alignof _Alignof
|
||||
#define byte_pad(amount, ...) Byte glue(_PAD_, __VA_ARGS__) [amount]
|
||||
#define farray_len(array) (SSIZE)sizeof(array) / size_of( typeof((array)[0]))
|
||||
#define farray_init(type, ...) (type[]){__VA_ARGS__}
|
||||
#define def_farray(type, len) type A ## len ## _ ## type[len]
|
||||
#define def_enum(underlying_type, symbol) underlying_type symbol; enum symbol
|
||||
#define def_struct(symbol) struct symbol symbol; struct symbol
|
||||
#define def_union(symbol) union symbol symbol; union symbol
|
||||
#define fn(symbol) symbol
|
||||
#define opt_args(symbol, ...) &(symbol){__VA_ARGS__}
|
||||
#define ret_type(type) type
|
||||
#define local_persist static
|
||||
#define global static
|
||||
#define offset_of(type, member) cast(SSIZE, & (((type*) 0)->member))
|
||||
#define static_assert _Static_assert
|
||||
#define typeof __typeof__
|
||||
#define typeof_ptr(ptr) typeof(ptr[0])
|
||||
#define typeof_same(a, b) _Generic((a), typeof((b)): 1, default: 0)
|
||||
|
||||
#define cast(type, data) ((type)(data))
|
||||
#define pcast(type, data) * cast(type*, & (data))
|
||||
#define nullptr cast(void*, 0)
|
||||
#define size_of(data) cast(SSIZE, sizeof(data))
|
||||
#define kilo(n) (cast(SSIZE, n) << 10)
|
||||
#define mega(n) (cast(SSIZE, n) << 20)
|
||||
#define giga(n) (cast(SSIZE, n) << 30)
|
||||
#define tera(n) (cast(SSIZE, n) << 40)
|
||||
|
||||
#define range_iter(type, iter, m_begin, op, m_end) \
|
||||
tmpl(Iter_Range,type) iter = { \
|
||||
.r = {(m_begin), (m_end)}, \
|
||||
.cursor = (m_begin) }; \
|
||||
iter.cursor op iter.r.end; \
|
||||
++ iter.cursor
|
||||
|
||||
#define def_range(type) \
|
||||
def_struct(tmpl( Range,type)) { type begin; type end; }; \
|
||||
typedef def_struct(tmpl(Iter_Range,type)) { tmpl(Range,type) r; type cursor; }
|
||||
|
||||
typedef def_range(S32);
|
||||
typedef def_range(U32);
|
||||
typedef def_range(SSIZE);
|
||||
|
||||
typedef void fn(VoidFn) (void);
|
||||
@@ -0,0 +1,88 @@
|
||||
#ifdef INTELLISENSE_DIRECTIVES
|
||||
# pragma once
|
||||
# include "dsl.h"
|
||||
#endif
|
||||
|
||||
typedef def_enum(U32, gp_Commands) {
|
||||
gcmd_Reset = 0b000,
|
||||
gcmd_Polygon = 0b001,
|
||||
gcmd_Line = 0b010,
|
||||
gcmd_Rect = 0b011,
|
||||
gcmd_VM_to_VM = 0b100,
|
||||
gcmd_CPU_to_VM = 0b101,
|
||||
gcmd_VM_to_CPU = 0b110,
|
||||
gcmd_Environment = 0b111,
|
||||
|
||||
gcmd_SetDrawMode = 0xE1,
|
||||
gcmd_SetTextureWindow = 0xE2,
|
||||
gcmd_SetDrawArea_TopLeft = 0xE3,
|
||||
gcmd_SetDrawArea_BotRight = 0xE4,
|
||||
gcmd_SetDrawOffset = 0xE5,
|
||||
gcmd_SetMaskBit = 0xE6,
|
||||
|
||||
gcmd_ResetCommandBuffer = 0x01,
|
||||
gcmd_AcknowledgeGPUInterrupt = 0x02,
|
||||
gcmd_DisplayEnable = 0x03,
|
||||
gcmd_DMA_Request = 0x04,
|
||||
gcmd_DispArea_Start = 0x05,
|
||||
gcmd_HorizontalDisplayRange = 0x06,
|
||||
gcmd_VerticalDisplayRange = 0x07,
|
||||
gcmd_DisplayMode = 0x08,
|
||||
|
||||
gcmd_SetVramSize = 0x09,
|
||||
};
|
||||
|
||||
#define gpio_port0 0x1810
|
||||
#define gpio_port1 0x1814
|
||||
|
||||
#define gcmd_offset 24
|
||||
|
||||
#define gp_Reset (gcmd_Reset << gcmd_offset)
|
||||
|
||||
#define gp_DisplayEnabled (gcmd_DisplayEnable << gcmd_offset | 0x0)
|
||||
#define gp_DisplayDisabled (gcmd_DisplayEnable << gcmd_offset | 0x1)
|
||||
|
||||
#define gp_DMA_FIFO 1
|
||||
#define gp_DMA_CPU_to_GPU 2
|
||||
#define gp_DMA_GPU_to_CPU 3
|
||||
#define gp_DMA_Request (gcmd_DMA_Request << gcmd_offset)
|
||||
|
||||
#define gp_HorizontalDisplayRange_3168_608 (gcmd_HorizontalDisplayRange << gcmd_offset | 0xC60 << 12 | 0x260)
|
||||
|
||||
#define gp_VerticalDiplayRange (gcmd_VerticalDisplayRange << gcmd_offset)
|
||||
#define gp_VerticalDisplayRange_264_24 (gp_VerticalDiplayRange | 264 << 10 | 24)
|
||||
#define gp_VerticalDisplayRange_504_24 (gp_VerticalDiplayRange | 504 << 10 | 24)
|
||||
|
||||
#define gp_DisplayMode (gcmd_DisplayMode << gcmd_offset)
|
||||
#define gp_Disp_HRes_256 (0x0)
|
||||
#define gp_Disp_HRes_320 (0x1)
|
||||
#define gp_Disp_HRes_512 (0x2)
|
||||
#define gp_Disp_HRes_640 (0x3)
|
||||
#define gp_Disp_VRes_240 (0x0 << 2)
|
||||
#define gp_Disp_VRes_480 (0x1 << 2)
|
||||
#define gp_Disp_Color15 (0x0 << 4)
|
||||
#define gp_Disp_Color24 (0x1 << 4)
|
||||
#define gp_Disp_VInterlace (0x1 << 5)
|
||||
#define gp_DisplayMode_320x240_15bit_NTSC (gp_DisplayMode | gp_Disp_HRes_320 | gp_Disp_VRes_240 | gp_Disp_Color15)
|
||||
#define gp_DisplayMOde_640x480_24bbp_NTSC (gp_DisplayMode | gp_Disp_HRes_640 | gp_Disp_VRes_480 | gp_Disp_Color24 | gp_Disp_VInterlace)
|
||||
|
||||
#define gp_DrawMode_DrawAllowed 10
|
||||
#define gp_SetDrawMode_DrawAllowed (gcmd_SetDrawMode << gcmd_offset | 0x1 << gp_DrawMode_DrawAllowed)
|
||||
|
||||
#define gp_SetArea_TopLeft (gcmd_SetDrawArea_TopLeft << gcmd_offset)
|
||||
#define gp_SetArea_BottomRight (gcmd_SetDrawArea_BotRight << gcmd_offset)
|
||||
|
||||
typedef BYTE gp_Pixel16[1];
|
||||
typedef BYTE gp_Pixel24[3];
|
||||
|
||||
#define gp_b10_X 0
|
||||
#define gp_b10_Y 10
|
||||
#define gp_b16_X 0
|
||||
#define gp_b16_Y 16
|
||||
|
||||
typedef def_struct(gp_Vec2) {
|
||||
U16 x;
|
||||
U16 y;
|
||||
};
|
||||
|
||||
extern void gp_screen_init();
|
||||
Reference in New Issue
Block a user