From 90097228a20c3df1ed3bb8145bbf20687a557025 Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Wed, 22 Feb 2023 16:24:47 -0500 Subject: [PATCH] Add libc64/aprintf.c --- config/dol_slices.yml | 2 ++ include/libc64/aprintf.h | 20 ++++++++++++++++++++ include/libultra/xprintf.h | 16 ++++++++++++++++ src/libc64/aprintf.c | 6 ++++++ src/libultra/gfxprint.c | 2 +- src/libultra/xprint.c | 5 +++++ 6 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 include/libc64/aprintf.h create mode 100644 include/libultra/xprintf.h create mode 100644 src/libc64/aprintf.c create mode 100644 src/libultra/xprint.c diff --git a/config/dol_slices.yml b/config/dol_slices.yml index f346303b..1aa2da7d 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -4,6 +4,8 @@ # .text: [0x8005B210, 0x8005B238] libforest/ReconfigBATs.c: .text: [0x8005adac, 0x8005aed4] +libc64/afprint.c: + .text: [0x8005cbdc, 0x8005cc14] JSystem/JKernel/JKRHeap.cpp: .text: [0x80063748, 0x80064028] .data: [0x800ddf20, 0x800ddf98] diff --git a/include/libc64/aprintf.h b/include/libc64/aprintf.h new file mode 100644 index 00000000..681fe33d --- /dev/null +++ b/include/libc64/aprintf.h @@ -0,0 +1,20 @@ +#ifndef APRINTF_H +#define APRINTF_H + +#include "types.h" +#include "va_args.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +typedef struct { + void* (*prout_func)(void*, const char*, int); +} aprout_func_t; + +extern int vaprintf(aprout_func_t* func, const char* fmt, va_list ap); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/libultra/xprintf.h b/include/libultra/xprintf.h new file mode 100644 index 00000000..400dc172 --- /dev/null +++ b/include/libultra/xprintf.h @@ -0,0 +1,16 @@ +#ifndef XRINTF_H +#define XRINTF_H + +#include "types.h" +#include "va_args.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +extern int _Printf(void* (*prout_func)(void*, const char*, int), char* buf, const char* fmt, va_list ap); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/libc64/aprintf.c b/src/libc64/aprintf.c new file mode 100644 index 00000000..c862108a --- /dev/null +++ b/src/libc64/aprintf.c @@ -0,0 +1,6 @@ +#include "libc64/aprintf.h" +#include "libultra/xprintf.h" /* _Printf */ + +extern int vaprintf(aprout_func_t* func, const char* fmt, va_list ap) { + return _Printf(func->prout_func, &func->prout_func, fmt, ap); +} diff --git a/src/libultra/gfxprint.c b/src/libultra/gfxprint.c index 2c0ac555..d9cc1f40 100644 --- a/src/libultra/gfxprint.c +++ b/src/libultra/gfxprint.c @@ -1,5 +1,5 @@ #include "libultra/gfxprint.h" -#include "libultra/aprintf.h" /* TODO: implement libultra/aprintf.h for vaprintf */ +#include "libc64/aprintf.h" static u8 gfxprint_font[] = { 0x00, 0xdf, 0xfd, 0x00, 0x0a, 0xee, 0xff, 0xa0, 0x0d, 0xf2, 0x2d, 0xd0, 0x06, 0x61, 0x1d, 0xc0, diff --git a/src/libultra/xprint.c b/src/libultra/xprint.c new file mode 100644 index 00000000..de0110d3 --- /dev/null +++ b/src/libultra/xprint.c @@ -0,0 +1,5 @@ +#include "libultra/xprintf.h" + +extern int _Printf(void* (*prout_func)(void*, const char*, int), char* buf, const char* fmt, va_list ap) { + +}