Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 33 additions & 33 deletions config/RSPE01_01/symbols.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14852,23 +14852,23 @@ lbl_8037B248 = .rodata:0x8037B248; // type:object size:0x10 data:4byte
__constants = .rodata:0x8037B258; // type:object size:0x18 scope:global data:double
@stringBase0 = .rodata:0x8037B270; // type:object size:0x6F scope:local data:string_table
fix_pool_sizes = .rodata:0x8037B2E0; // type:object size:0x18 scope:global data:4byte
lbl_8037B2F8 = .rodata:0x8037B2F8; // type:object size:0xE0
__fp_string_pool = .rodata:0x8037B2F8; // type:object size:0xE0
__ctype_mapC = .rodata:0x8037B3D8; // type:object size:0x200 scope:global
__lower_mapC = .rodata:0x8037B5D8; // type:object size:0x100 scope:global
__upper_mapC = .rodata:0x8037B6D8; // type:object size:0x100 scope:global
lbl_8037B7D8 = .rodata:0x8037B7D8; // type:object size:0x10
lbl_8037B7E8 = .rodata:0x8037B7E8; // type:object size:0xC data:string
lbl_8037B7F4 = .rodata:0x8037B7F4; // type:object size:0xC
lbl_8037B800 = .rodata:0x8037B800; // type:object size:0x58
lbl_8037B858 = .rodata:0x8037B858; // type:object size:0x88
_DateTime_Format_C = .rodata:0x8037B7D8; // type:object size:0x10
_Time_Format_12_C = .rodata:0x8037B7E8; // type:object size:0xC data:string
_Date_Format_C = .rodata:0x8037B7F4; // type:object size:0xC
_Day_Names_C = .rodata:0x8037B800; // type:object size:0x58
_Month_Names_C = .rodata:0x8037B858; // type:object size:0x88
@stringBase0 = .rodata:0x8037B8E0; // type:object size:0x2B scope:local data:string_table
gap_07_8037B90B_rodata = .rodata:0x8037B90B; // type:object size:0x5 scope:global
lbl_8037B910 = .rodata:0x8037B910; // type:object size:0x28 data:4byte
lbl_8037B938 = .rodata:0x8037B938; // type:object size:0x10 data:byte
__wctype_mapC = .rodata:0x8037B948; // type:object size:0x200 scope:global
__wlower_mapC = .rodata:0x8037BB48; // type:object size:0x200 scope:global
__wupper_mapC = .rodata:0x8037BD48; // type:object size:0x200 scope:global
lbl_8037BF48 = .rodata:0x8037BF48; // type:object size:0x8
@stringBase0 = .rodata:0x8037BF48; // type:object size:0x8 data:string_table
Zero = .rodata:0x8037BF50; // type:object size:0x10 scope:local
bp = .rodata:0x8037BF60; // type:object size:0x10 scope:local
...rodata.0 = .rodata:0x8037BF60; // type:label scope:local
Expand Down Expand Up @@ -17307,10 +17307,10 @@ __vt__Q23EGG6MsgRes = .data:0x80398760; // type:object size:0xC scope:global
@STRING@getDataBlkSize__Q23EGG6MsgResFPCv@0 = .data:0x80398778; // type:object size:0xE scope:weak data:string
@STRING@getDataBlkSize__Q23EGG6MsgResFPCv = .data:0x80398788; // type:object size:0xC scope:weak data:string
__files = .data:0x80398798; // type:object size:0x50 scope:global
lbl_803987E8 = .data:0x803987E8; // type:object size:0x50
lbl_80398838 = .data:0x80398838; // type:object size:0x50
lbl_80398888 = .data:0x80398888; // type:object size:0x50
jumptable_803988D8 = .data:0x803988D8; // type:object size:0x124 scope:local
__stdout_FILE = .data:0x803987E8; // type:object size:0x50
__stderr_FILE = .data:0x80398838; // type:object size:0x50
__file_terminator = .data:0x80398888; // type:object size:0x50
@233 = .data:0x803988D8; // type:object size:0x124 scope:local
gap_08_803989FC_data = .data:0x803989FC; // type:object size:0x4 scope:global
pow_10$933 = .data:0x80398A00; // type:object size:0x40 scope:global
__lconv = .data:0x80398A40; // type:object size:0x38 scope:global data:4byte
Expand All @@ -17321,22 +17321,22 @@ _loc_mon_C = .data:0x80398B7C; // type:object size:0x34 scope:global
_loc_num_C = .data:0x80398BB0; // type:object size:0x18 scope:global
_loc_tim_C = .data:0x80398BC8; // type:object size:0x28 scope:global
_current_locale = .data:0x80398BF0; // type:object size:0x48 scope:global
jumptable_80398C38 = .data:0x80398C38; // type:object size:0xE0 scope:local
jumptable_80398D18 = .data:0x80398D18; // type:object size:0x44 scope:local
jumptable_80398D5C = .data:0x80398D5C; // type:object size:0x84 scope:local
@2337 = .data:0x80398DE0; // type:object size:0x84 scope:local
@2720 = .data:0x80398E64; // type:object size:0x24 scope:local
@245 = .data:0x80398C38; // type:object size:0xE0 scope:local
@244 = .data:0x80398D18; // type:object size:0x44 scope:local
@323 = .data:0x80398D5C; // type:object size:0x84 scope:local
@399 = .data:0x80398DE0; // type:object size:0x84 scope:local
@1071 = .data:0x80398E64; // type:object size:0x24 scope:local
jumptable_80398E88 = .data:0x80398E88; // type:object size:0xE0 scope:local
jumptable_80398F68 = .data:0x80398F68; // type:object size:0x20 scope:local
jumptable_80398F88 = .data:0x80398F88; // type:object size:0x20 scope:local
jumptable_80398FA8 = .data:0x80398FA8; // type:object size:0x44 scope:local
jumptable_80398FEC = .data:0x80398FEC; // type:object size:0x44 scope:local
jumptable_80399030 = .data:0x80399030; // type:object size:0xE0 scope:local
jumptable_80399110 = .data:0x80399110; // type:object size:0x44 scope:local
jumptable_80399154 = .data:0x80399154; // type:object size:0x84 scope:local
jumptable_803991D8 = .data:0x803991D8; // type:object size:0x84 scope:local
jumptable_8039925C = .data:0x8039925C; // type:object size:0x24 scope:local
lbl_80399280 = .data:0x80399280; // type:object size:0x58
@197 = .data:0x80399030; // type:object size:0xE0 scope:local
@196 = .data:0x80399110; // type:object size:0x44 scope:local
@275 = .data:0x80399154; // type:object size:0x84 scope:local
@351 = .data:0x803991D8; // type:object size:0x84 scope:local
@1029 = .data:0x8039925C; // type:object size:0x24 scope:local
@wstringBase0 = .data:0x80399280; // type:object size:0x58
@43 = .data:0x803992D8; // type:object size:0x6C scope:local
jumptable_80399348 = .data:0x80399348; // type:object size:0x1C scope:local
jumptable_80399364 = .data:0x80399364; // type:object size:0x1C scope:local
Expand Down Expand Up @@ -22950,17 +22950,17 @@ gap_12_804C0A64_sdata2 = .sdata2:0x804C0A64; // type:object size:0x4 scope:globa
@8659 = .sdata2:0x804C0AC0; // type:object size:0x4 scope:local align:4 data:float
@8675 = .sdata2:0x804C0AC4; // type:object size:0x4 scope:local align:4 data:float
@8678 = .sdata2:0x804C0AC8; // type:object size:0x8 scope:local align:8 data:double
lbl_804C0AD0 = .sdata2:0x804C0AD0; // type:object size:0x8 data:double
lbl_804C0AD8 = .sdata2:0x804C0AD8; // type:object size:0x8 data:double
lbl_804C0AE0 = .sdata2:0x804C0AE0; // type:object size:0x8 data:double
lbl_804C0AE8 = .sdata2:0x804C0AE8; // type:object size:0x8 data:double
lbl_804C0AF0 = .sdata2:0x804C0AF0; // type:object size:0x8 data:double
lbl_804C0AF8 = .sdata2:0x804C0AF8; // type:object size:0x8 data:double
lbl_804C0B00 = .sdata2:0x804C0B00; // type:object size:0x8 data:double
lbl_804C0B08 = .sdata2:0x804C0B08; // type:object size:0x4
lbl_804C0B0C = .sdata2:0x804C0B0C; // type:object size:0x4
lbl_804C0B10 = .sdata2:0x804C0B10; // type:object size:0x8
lbl_804C0B18 = .sdata2:0x804C0B18; // type:object size:0x8
@499 = .sdata2:0x804C0AD0; // type:object size:0x8 data:double
@724 = .sdata2:0x804C0AD8; // type:object size:0x8 data:double
@725 = .sdata2:0x804C0AE0; // type:object size:0x8 data:double
@726 = .sdata2:0x804C0AE8; // type:object size:0x8 data:double
@727 = .sdata2:0x804C0AF0; // type:object size:0x8 data:double
@731 = .sdata2:0x804C0AF8; // type:object size:0x8 data:double
@732 = .sdata2:0x804C0B00; // type:object size:0x8 data:double
_Decimal_Point_C = .sdata2:0x804C0B08; // type:object size:0x4
_const_int_0 = .sdata2:0x804C0B0C; // type:object size:0x4
_AmPm_Format_C = .sdata2:0x804C0B10; // type:object size:0x8
_Time_Format_C = .sdata2:0x804C0B18; // type:object size:0x8
lbl_804C0B20 = .sdata2:0x804C0B20; // type:object size:0x8 data:double
lbl_804C0B28 = .sdata2:0x804C0B28; // type:object size:0x1 data:byte
lbl_804C0B29 = .sdata2:0x804C0B29; // type:object size:0x1 data:byte
Expand Down
48 changes: 24 additions & 24 deletions configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -727,37 +727,37 @@ def MatchingFor(*versions):
"progress_category": "sdk",
"objects": [
Object(NonMatching, "MSL/alloc.c"),
Object(Matching, "MSL/errno.c"),
Object(NonMatching, "MSL/ansi_files.c"),
Object(NonMatching, "MSL/ansi_fp.c"),
Object(NonMatching, "MSL/arith.c"),
Object(NonMatching, "MSL/buffer_io.c"),
Object(NonMatching, "MSL/direct_io.c"),
Object(NonMatching, "MSL/errno.c"),
Object(NonMatching, "MSL/file_io.c"),
Object(NonMatching, "MSL/FILE_POS.c"),
Object(Matching, "MSL/ansi_fp.c"),
Object(NonMatching, "MSL/locale.c"),
Object(NonMatching, "MSL/mbstring.c"),
Object(NonMatching, "MSL/mem.c"),
Object(NonMatching, "MSL/mem_funcs.c"),
Object(NonMatching, "MSL/math_api.c"),
Object(NonMatching, "MSL/misc_io.c"),
Object(Matching, "MSL/arith.c"),
Object(Matching, "MSL/buffer_io.c"),
Object(Matching, "MSL/direct_io.c"),
Object(Matching, "MSL/file_io.c"),
Object(Matching, "MSL/FILE_POS.c"),
Object(Matching, "MSL/mbstring.c"),
Object(Matching, "MSL/mem.c"),
Object(Matching, "MSL/mem_funcs.c"),
Object(Matching, "MSL/math_api.c"),
Object(Matching, "MSL/misc_io.c"),
Object(NonMatching, "MSL/printf.c"),
Object(NonMatching, "MSL/rand.c"),
Object(Matching, "MSL/rand.c"),
Object(Matching, "MSL/float.c"),
Object(NonMatching, "MSL/scanf.c"),
Object(NonMatching, "MSL/string.c"),
Object(Matching, "MSL/string.c"),
Object(NonMatching, "MSL/strtold.c"),
Object(Matching, "MSL/wctype.c"),
Object(NonMatching, "MSL/strtoul.c"),
Object(NonMatching, "MSL/wctype.c"),
Object(NonMatching, "MSL/wmem.c"),
Object(Matching, "MSL/wmem.c"),
Object(NonMatching, "MSL/wprintf.c"),
Object(NonMatching, "MSL/wstring.c"),
Object(NonMatching, "MSL/wchar_io.c"),
Object(NonMatching, "MSL/uart_console_io_gcn.c"),
Object(NonMatching, "MSL/abort_exit_ppc_eabi.c"),
Object(NonMatching, "MSL/math_sun.c"),
Object(NonMatching, "MSL/math_float.c"),
Object(NonMatching, "MSL/extras.c"),
Object(Matching, "MSL/float.c"),
Object(Matching, "MSL/wstring.c"),
Object(Matching, "MSL/wchar_io.c"),
Object(Matching, "MSL/uart_console_io_gcn.c"),
Object(Matching, "MSL/abort_exit_ppc_eabi.c"),
Object(Matching, "MSL/math_sun.c"),
Object(Matching, "MSL/math_float.c"),
Object(Matching, "MSL/extras.c"),
Object(Matching, "MSL/e_acos.c"),
Object(Matching, "MSL/e_asin.c"),
Object(Matching, "MSL/e_atan2.c"),
Expand Down
37 changes: 37 additions & 0 deletions include/MSL/UART.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#ifndef UART_H
#define UART_H

typedef int UARTError;

enum {
kUARTNoError = 0,
kUARTUnknownBaudRate,
kUARTConfigurationError,
kUARTBufferOverflow,
kUARTNoData
};

typedef enum {
kBaudHWSet = -1,
kBaud300 = 300,
kBaud600 = 600,
kBaud1200 = 1200,
kBaud1800 = 1800,
kBaud2000 = 2000,
kBaud2400 = 2400,
kBaud3600 = 3600,
kBaud4800 = 4800,
kBaud7200 = 7200,
kBaud9600 = 9600,
kBaud19200 = 19200,
kBaud38400 = 38400,
kBaud57600 = 57600,
kBaud115200 = 115200,
kBaud230400 = 230400
} UARTBaudRate;

UARTError InitializeUART(UARTBaudRate);

UARTError WriteUARTN(const void *, unsigned long);

#endif // UART_H
117 changes: 117 additions & 0 deletions include/MSL/alloc.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
typedef struct Block {
struct Block* prev;
struct Block* next;
unsigned long max_size;
unsigned long size;
} Block;

typedef struct SubBlock {
unsigned long size;
Block* block;
struct SubBlock* prev;
struct SubBlock* next;
} SubBlock;

struct FixSubBlock;

typedef struct FixBlock {
struct FixBlock* prev_;
struct FixBlock* next_;
unsigned long client_size_;
struct FixSubBlock* start_;
unsigned long n_allocated_;
} FixBlock;

typedef struct FixSubBlock {
FixBlock* block_;
struct FixSubBlock* next_;
} FixSubBlock;

typedef struct FixStart {
FixBlock* tail_;
FixBlock* head_;
} FixStart;

typedef struct __mem_pool_obj {
Block* start_;
FixStart fix_start[6];
} __mem_pool_obj;

typedef struct __mem_pool {
void* reserved[14];
} __mem_pool;

typedef signed long tag_word;

typedef struct block_header {
tag_word tag;
struct block_header* prev;
struct block_header* next;
} block_header;

typedef struct list_header {
block_header* rover;
block_header header;
} list_header;

typedef struct heap_header {
struct heap_header* prev;
struct heap_header* next;
} heap_header;

struct mem_pool_obj;
typedef void* (*sys_alloc_ptr)(unsigned long, struct mem_pool_obj*);
typedef void (*sys_free_ptr)(void*, struct mem_pool_obj*);

typedef struct pool_options {
sys_alloc_ptr sys_alloc_func;
sys_free_ptr sys_free_func;
unsigned long min_heap_size;
int always_search_first;
} pool_options;

typedef struct mem_pool_obj {
list_header free_list;
pool_options options;
heap_header* heap_list;
void* userData;

} mem_pool_obj;

static const unsigned long fix_pool_sizes[] = {4, 12, 20, 36, 52, 68};

#define SubBlock_size(ths) ((ths)->size & 0xFFFFFFF8)
#define SubBlock_block(ths) ((Block*)((unsigned long)((ths)->block) & ~0x1))
#define Block_size(ths) ((ths)->size & 0xFFFFFFF8)
#define Block_start(ths) \
(*(SubBlock**)((char*)(ths) + Block_size((ths)) - sizeof(unsigned long)))

#define SubBlock_set_free(ths) \
unsigned long this_size = SubBlock_size((ths)); \
(ths)->size &= ~0x2; \
*(unsigned long*)((char*)(ths) + this_size) &= ~0x4; \
*(unsigned long*)((char*)(ths) + this_size - sizeof(unsigned long)) = \
this_size

#define SubBlock_is_free(ths) !((ths)->size & 2)
#define SubBlock_set_size(ths, sz) \
(ths)->size &= ~0xFFFFFFF8; \
(ths)->size |= (sz)&0xFFFFFFF8; \
if (SubBlock_is_free((ths))) \
*(unsigned long*)((char*)(ths) + (sz) - sizeof(unsigned long)) = (sz)

#define SubBlock_from_pointer(ptr) ((SubBlock*)((char*)(ptr)-8))
#define FixSubBlock_from_pointer(ptr) ((FixSubBlock*)((char*)(ptr)-4))

#define FixBlock_client_size(ths) ((ths)->client_size_)
#define FixSubBlock_size(ths) (FixBlock_client_size((ths)->block_))

#define classify(ptr) \
(*(unsigned long*)((char*)(ptr) - sizeof(unsigned long)) & 1)
#define __msize_inline(ptr) \
(!classify(ptr) ? FixSubBlock_size(FixSubBlock_from_pointer(ptr)) \
: SubBlock_size(SubBlock_from_pointer(ptr)) - 8)

#define Block_empty(ths) \
(_sb = (SubBlock*)((char*)(ths) + 16)), \
SubBlock_is_free(_sb) && SubBlock_size(_sb) == Block_size((ths)) - 24
27 changes: 27 additions & 0 deletions include/MSL/ansi_files.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#ifndef _ANSI_FILES_H
#define _ANSI_FILES_H

#include "types.h"
#include "stdio.h"

#ifdef __cplusplus
extern "C" {
#endif

#define console_buff_mode _IOLBF
#define console_buff_size 256

typedef unsigned char console_buff[console_buff_size];

extern console_buff stdin_buff;
extern console_buff stdout_buff;
extern console_buff stderr_buff;

void __close_all();
u32 __flush_all();

#ifdef __cplusplus
};
#endif

#endif
44 changes: 44 additions & 0 deletions include/MSL/ansi_fp.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#ifndef ANSI_FP_H
#define ANSI_FP_H
#include <types.h>

typedef struct decimal {
char sign;
char _1;
short exponent;

struct {
unsigned char length;
unsigned char text[36];
unsigned char pad;
} sig;
} decimal;

typedef struct decform {
char style;
char _1;
short digits;
} decform;

#ifdef __cplusplus
extern "C" {
#endif

extern const char _AmPm_Format_C[];
extern const char _DateTime_Format_C[];
extern const char _Time_Format_12_C[];
extern const char _Date_Format_C[];
extern const char _Time_Format_C[];
extern const char _Day_Names_C[];
extern const char _Month_Names_C[];

extern const int _const_int_0;

extern const unsigned short __ctype_mapC[0x100];
extern const unsigned char __lower_mapC[0x100];
extern const unsigned char __upper_mapC[0x100];

#ifdef __cplusplus
}
#endif
#endif
Loading