diff --git a/init.c b/init.c index 6c4c52a0..23946025 100644 --- a/init.c +++ b/init.c @@ -1,3 +1,5 @@ +#include +#include #include "init.h" void s2d_init(void) { diff --git a/mtx.c b/mtx.c index af59a1c0..e98111e2 100644 --- a/mtx.c +++ b/mtx.c @@ -1,7 +1,5 @@ #include #include -#include "stack.h" -// #include "fixedpoint.h" #include #define ftoq FTOFIX32 @@ -75,14 +73,14 @@ void mat2_translate_vec(uObjMtx *m, f32 degrees, f32 mag) { m->m.Y += FTOFIX16(mag * sinf(degrees)); } -void get_final_mat(uObjMtx *dst) { - u32 s_temp_top = stack_top; - if (s_isempty()) return; +// void get_final_mat(uObjMtx *dst) { +// u32 s_temp_top = stack_top; +// if (s_isempty()) return; - while (s_temp_top != 0) { - mat2_mul(dst, &stack[s_temp_top]); - } -} +// while (s_temp_top != 0) { +// mat2_mul(dst, &stack[s_temp_top]); +// } +// } typedef float Mat4[4][4]; void gu_to_gs2dex(uObjMtx *m1, Mat4 m2) { diff --git a/mtx.h b/mtx.h index 8db29df0..d8780089 100644 --- a/mtx.h +++ b/mtx.h @@ -1,7 +1,7 @@ #include #include #include -#include "stack.h" +// #include "stack.h" typedef float Mat4[4][4]; extern void mat2_dst_mul(uObjMtx *dst, uObjMtx *m1, uObjMtx *m2); diff --git a/s2d_parse.c b/s2d_parse.c index 01acce51..c2be7e6f 100644 --- a/s2d_parse.c +++ b/s2d_parse.c @@ -77,6 +77,7 @@ void s2d_print(int x, int y, const char *str, uObjMtx *buf) { draw_s2d_glyph(r, (x += ((8 * myScale))) + tx, y + ty, (buf++)); } // myDegrees += saved_degrees; + p++; } while (*p != '\0'); myScale = 1; myDegrees = 0; @@ -85,3 +86,10 @@ void s2d_print(int x, int y, const char *str, uObjMtx *buf) { ty = 0; } +void s2d_type_print(int x, int y, char *str, uObjMtx *buf, int pos) { + char t = str[pos]; + str[pos] = '\0'; + s2d_print(x, y, str, buf); + str[pos] = t; +} + diff --git a/x86_testing_ground/atoi.c b/x86_testing_ground/atoi.c index 1410ff77..e1b23abf 100644 --- a/x86_testing_ground/atoi.c +++ b/x86_testing_ground/atoi.c @@ -1,7 +1,42 @@ +// int s2d_atoi(char *s, char **s2) { +// int ret = 0; +// int isNegative = (*s == '-'); +// if (isNegative) {s++; (*s2)++;} +// for (; *s != '\0' && *s != ' ' && *s >= '0' && *s <= '9'; s++) { +// ret *= 10; +// if (*s >= '0' && *s <= '9') +// ret += *s - '0'; +// else break; +// if (!(*(s+1) != '\0' && *(s+1) != ' ' && *(s+1) >= '0' && *(s+1) <= '9')) break; +// (*s2)++; +// } +// if (isNegative) ret *= -1; +// return ret; +// } +#define SCALE "\x80" // SCALE (some scale) +#define ROTATE "\x81" // ROTATE (degrees) // TODO: maybe add axis? +#define TRANSLATE "\x82" // TRANSLATE (x) (y) + +#define CH_SCALE '\x80' +#define CH_ROT '\x81' +#define CH_TRANSLATE '\x82' + +#define CH_GET_NEXT(x) (*(++x)) +#define CH_SKIP(x) ((++x)) + +int saved_degrees = 0; + +int myScale = 1; +int myDegrees = 0; + +char *t = "TEST CRINGE"; int s2d_atoi(char *s, char **s2) { int ret = 0; int isNegative = (*s == '-'); - if (isNegative) {s++; (*s2)++;} + if (isNegative) { + s++; + (*s2)++; + } for (; *s != '\0' && *s != ' ' && *s >= '0' && *s <= '9'; s++) { ret *= 10; if (*s >= '0' && *s <= '9') @@ -13,70 +48,77 @@ int s2d_atoi(char *s, char **s2) { if (isNegative) ret *= -1; return ret; } -#define SCALE "\x80" // SCALE (some scale) -#define ROTATE "\x81" // ROTATE (degrees) // TODO: maybe add axis? -#define TRANSLATE "\x82" // TRANSLATE (x) (y) -#define CH_SCALE '\x80' -#define CH_ROT '\x81' -#define CH_TRANSLATE '\x82' +extern unsigned int gGlobalTimer; -#define CH_GET_NEXT(x) (*(++x)) - -int saved_degrees = 0; - -int myScale = 1; -int myDegrees = 0; - -char *t = "TEST" TRANSLATE "10 10CRINGE"; - -void s2d_print(int x, int y, const char *str) { +void s2d_print(int x, int y, char *str) { char *p = str; + int tx = 0, ty = 0; + // int r = 0, g = 0, b = 0, a = 0; if (*p == '\0') return; do { char r = *p; - int s, rd, tx = 0, ty = 0; + int s, rd; switch (r) { case CH_SCALE: - s = CH_GET_NEXT(p); - printf("%s\n", p); + CH_SKIP(p); s = s2d_atoi(p, &p); - printf("%d\n", s); myScale = s; break; case CH_ROT: - rd = CH_GET_NEXT(p); + CH_SKIP(p); + rd = s2d_atoi(p, &p); saved_degrees = rd; myDegrees = rd; break; case CH_TRANSLATE: - CH_GET_NEXT(p); - tx = s2d_atoi(p, &p); - printf("%d\n", tx); - CH_GET_NEXT(p); - CH_GET_NEXT(p); - ty = s2d_atoi(p, &p); - // CH_GET_NEXT(p); - printf("%d\n", ty); + CH_SKIP(p); + x = s2d_atoi(p, &p); + CH_SKIP(p); + CH_SKIP(p); + y = s2d_atoi(p, &p); break; + // case CH_COLOR: + // CH_SKIP(p); + // s2d_red = s2d_atoi(p, &p); + // CH_SKIP(p); CH_SKIP(p); + // s2d_green = s2d_atoi(p, &p); + // CH_SKIP(p); CH_SKIP(p); + + // s2d_blue = s2d_atoi(p, &p); + // CH_SKIP(p); CH_SKIP(p); + + // s2d_alpha = s2d_atoi(p, &p); + // break; + + // break; default: - printf("%c %d\n",r, myScale); + break; + // if (myDegrees == 0) + // // draw_s2d_glyph(r, (x += (8 * myScale)) + tx, y + ty, (buf++)); + // else + // draw_s2d_glyph(r, (x += ((8 * myScale))) + tx, y + ty, (buf++)); } + p++; // myDegrees += saved_degrees; - } while (*(++p) != '\0'); + } while (*p != '\0'); myScale = 1; myDegrees = 0; saved_degrees = 0; + tx = 0; + ty = 0; +} + +void s2d_type_print(int x, int y, char *str, int pos) { + char t = str[pos]; + str[pos] = '\0'; + s2d_print(x, y, str); + str[pos] = t; } int main(void) { - char *s = t; - s++; - s++; - s++; - s++; // printf("%d\n", s2d_atoi(s, &s)); // printf("%s\n", s); s2d_print(0,0, t);