Super Mario 64 Source
A Super Mario 64 decompilation, brought to you by a bunch of clever folks.
sptask.h
Go to the documentation of this file.
1 #ifndef _ULTRA64_SPTASK_H_
2 #define _ULTRA64_SPTASK_H_
3 
4 /* Task Types */
5 #define M_GFXTASK 1
6 #define M_AUDTASK 2
7 #define M_VIDTASK 3
8 #define M_HVQTASK 6
9 #define M_HVQMTASK 7
10 
11 #if (defined(F3DEX_GBI) || defined(F3DLP_GBI) || defined(F3DEX_GBI_2))
12 #define OS_YIELD_DATA_SIZE 0xc00
13 #else
14 #define OS_YIELD_DATA_SIZE 0x900
15 #endif
16 #define OS_YIELD_AUDIO_SIZE 0x400
17 
18 /* Flags */
19 #define M_TASK_FLAG0 1
20 #define M_TASK_FLAG1 2
21 
22 /* SpStatus */
23 #define SPSTATUS_CLEAR_HALT 0x00000001
24 #define SPSTATUS_SET_HALT 0x00000002
25 #define SPSTATUS_CLEAR_BROKE 0x00000004
26 #define SPSTATUS_CLEAR_INTR 0x00000008
27 #define SPSTATUS_SET_INTR 0x00000010
28 #define SPSTATUS_CLEAR_SSTEP 0x00000020
29 #define SPSTATUS_SET_SSTEP 0x00000040
30 #define SPSTATUS_CLEAR_INTR_ON_BREAK 0x00000080
31 #define SPSTATUS_SET_INTR_ON_BREAK 0x00000100
32 #define SPSTATUS_CLEAR_SIGNAL0 0x00000200
33 #define SPSTATUS_SET_SIGNAL0 0x00000400
34 #define SPSTATUS_CLEAR_SIGNAL1 0x00000800
35 #define SPSTATUS_SET_SIGNAL1 0x00001000
36 #define SPSTATUS_CLEAR_SIGNAL2 0x00002000
37 #define SPSTATUS_SET_SIGNAL2 0x00004000
38 #define SPSTATUS_CLEAR_SIGNAL3 0x00008000
39 #define SPSTATUS_SET_SIGNAL3 0x00010000
40 #define SPSTATUS_CLEAR_SIGNAL4 0x00020000
41 #define SPSTATUS_SET_SIGNAL4 0x00040000
42 #define SPSTATUS_CLEAR_SIGNAL5 0x00080000
43 #define SPSTATUS_SET_SIGNAL5 0x00100000
44 #define SPSTATUS_CLEAR_SIGNAL6 0x00200000
45 #define SPSTATUS_SET_SIGNAL6 0x00800000
46 #define SPSTATUS_CLEAR_SIGNAL7 0x01000000
47 #define SPSTATUS_SET_SIGNAL7 0x02000000
48 
49 #define SPSTATUS_HALT 0x0001
50 #define SPSTATUS_BROKE 0x0002
51 #define SPSTATUS_DMA_BUSY 0x0004
52 #define SPSTATUS_DMA_FULL 0x0008
53 #define SPSTATUS_IO_FULL 0x0010
54 #define SPSTATUS_SINGLE_STEP 0x0020
55 #define SPSTATUS_INTERRUPT_ON_BREAK 0x0040
56 #define SPSTATUS_SIGNAL0_SET 0x0080
57 #define SPSTATUS_SIGNAL1_SET 0x0100
58 #define SPSTATUS_SIGNAL2_SET 0x0200
59 #define SPSTATUS_SIGNAL3_SET 0x0400
60 #define SPSTATUS_SIGNAL4_SET 0x0800
61 #define SPSTATUS_SIGNAL5_SET 0x1000
62 #define SPSTATUS_SIGNAL6_SET 0x2000
63 #define SPSTATUS_SIGNAL7_SET 0x4000
64 
65 /* Types */
66 /* Types */
67 
68 typedef struct
69 {
70  /*0x00*/ u32 type;
71  /*0x04*/ u32 flags;
72 
73  /*0x08*/ u64 *ucode_boot;
74  /*0x0C*/ u32 ucode_boot_size;
75 
76  /*0x10*/ u64 *ucode;
77  /*0x14*/ u32 ucode_size;
78 
79  /*0x18*/ u64 *ucode_data;
80  /*0x1C*/ u32 ucode_data_size;
81 
82  /*0x20*/ u64 *dram_stack;
83  /*0x24*/ u32 dram_stack_size;
84 
85  /*0x28*/ u64 *output_buff;
86  /*0x2C*/ u64 *output_buff_size;
87 
88  /*0x30*/ u64 *data_ptr;
89  /*0x34*/ u32 data_size;
90 
91  /*0x38*/ u64 *yield_data_ptr;
92  /*0x3C*/ u32 yield_data_size;
93 } OSTask_t; // size = 0x40
94 
95 typedef union {
98 } OSTask;
99 
101 
102 /* Functions */
103 
104 #define osSpTaskStart(p) \
105  osSpTaskLoad(p); \
106  osSpTaskStartGo(p);
107 
108 void osSpTaskLoad(OSTask *task);
109 void osSpTaskStartGo(OSTask *task);
110 void osSpTaskYield(void);
112 
113 #endif
u32 yield_data_size
Definition: sptask.h:92
u32 type
Definition: sptask.h:70
long long int force_structure_alignment
Definition: sptask.h:97
Definition: sptask.h:95
u32 ucode_size
Definition: sptask.h:77
u64 * output_buff
Definition: sptask.h:85
void osSpTaskStartGo(OSTask *task)
void osSpTaskLoad(OSTask *task)
Definition: osSpTaskLoadGo.c:24
OSTask_t t
Definition: sptask.h:96
unsigned long long int u64
Definition: ultratypes.h:18
void osSpTaskYield(void)
Definition: osSpTaskYield.c:3
u32 flags
Definition: sptask.h:71
u32 data_size
Definition: sptask.h:89
u32 OSYieldResult
Definition: sptask.h:100
u32 dram_stack_size
Definition: sptask.h:83
u64 * yield_data_ptr
Definition: sptask.h:91
u64 * ucode
Definition: sptask.h:76
u64 * data_ptr
Definition: sptask.h:88
u64 * output_buff_size
Definition: sptask.h:86
u64 * dram_stack
Definition: sptask.h:82
u64 * ucode_data
Definition: sptask.h:79
u32 ucode_data_size
Definition: sptask.h:80
u32 ucode_boot_size
Definition: sptask.h:74
OSYieldResult osSpTaskYielded(OSTask *task)
Definition: osSpTaskYielded.c:4
u64 * ucode_boot
Definition: sptask.h:73
Definition: sptask.h:68
unsigned int u32
Definition: ultratypes.h:16