aboutsummaryrefslogtreecommitdiff
path: root/laichzeit/brlyt.c
diff options
context:
space:
mode:
authorAlex Marshall <SquidMan72@gmail.com>2009-04-19 22:39:15 -0700
committerAlex Marshall <SquidMan72@gmail.com>2009-04-19 22:39:15 -0700
commit8182882e78fec04d159ae979d365eeffe4915ce6 (patch)
tree2cc5ef4adfd86b7e1c5e97035e394dafea978521 /laichzeit/brlyt.c
parented79fc076c74ee2de4cc6ef626b545a5a03a7bef (diff)
Added Laichzeit. Everything should work, just gotta get compiling of BRLYTs and BRLANs added, then it should be COMPLETE =D
Diffstat (limited to '')
-rw-r--r--laichzeit/brlyt.c448
1 files changed, 448 insertions, 0 deletions
diff --git a/laichzeit/brlyt.c b/laichzeit/brlyt.c
new file mode 100644
index 0000000..3c20589
--- /dev/null
+++ b/laichzeit/brlyt.c
@@ -0,0 +1,448 @@
+/*****************************************************************************/
+/* Laichzeit */
+/* Part of the Benzin Project */
+/* Copyright (c)2009 HACKERCHANNEL. Protected under the GNU GPLv2. */
+/* ------------------------------------------------------------------------- */
+/* brlyt.c */
+/* The code for all the BRLYT stuff. Compile this! */
+/* ------------------------------------------------------------------------- */
+/* Compilation code contributed by: */
+/* megazig */
+/* Intermediation code contributed by: */
+/* SquidMan */
+/*****************************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "types.h"
+#include "brlyt.h"
+#include "c_oop.h"
+
+#define RGBA8(w, x, y, z)\
+( \
+ (((u32)(z & 0xFF)) << 24) | \
+ (((u32)(w & 0xFF)) << 16) | \
+ (((u32)(x & 0xFF)) << 8) | \
+ (((u32)(y & 0xFF)) << 0) \
+)
+
+#define RGB565(w, x, y, z)\
+( \
+ (((u16)((w & 0xFF) >> 3)) << 11) | \
+ (((u16)((x & 0xFF) >> 2)) << 6) | \
+ (((u16)((y & 0xFF) >> 3)) << 0) \
+)
+
+static int AddEntryToBRLYT(BRLYT* brlyt, LYTEntry entry)
+{
+ return AddObjectToList((u8**)&brlyt->entries, (u32*)&brlyt->entrycnt, \
+ (u8*)&entry, sizeof(LYTEntry));
+}
+
+static int AddTexCoordToPic(BRLYT* brlyt, int pic, LYTTexCoord coord)
+{
+ return AddObjectToList((u8**)&brlyt->entries[pic].tag.pic.texcoords, \
+ (u32*)&brlyt->entries[pic].tag.pic.texcoordcnt, \
+ (u8*)&coord, sizeof(LYTTexCoord));
+}
+
+static int AddSubToGroup(BRLYT* brlyt, int group, LYTSub sub)
+{
+ return AddObjectToList((u8**)&brlyt->entries[group].tag.grp.subs, \
+ (u32*)&brlyt->entries[group].tag.grp.subcnts, \
+ (u8*)&sub, sizeof(LYTSub));
+}
+
+BRLYT* LaichLyt_Start(float width, float height)
+{
+ BRLYT* brlyt = calloc(sizeof(BRLYT), 1);
+ brlyt->width = width;
+ brlyt->height = height;
+ brlyt->entrycnt = 0;
+ brlyt->entries = NULL;
+ return brlyt;
+}
+
+int LaichLyt_StartPane(BRLYT* brlyt, char* name)
+{
+ LYTEntry entry;
+ entry.type = LYT_TYPE_PANE;
+ entry.done = 0;
+ entry.tag.pane.alpha = 255;
+ entry.tag.pane.alpha2 = 0;
+ memset(entry.tag.pane.name, 0, 24);
+ strncpy(entry.tag.pane.name, name, 24);
+ entry.tag.pane.x = 0;
+ entry.tag.pane.y = 0;
+ entry.tag.pane.z = 0;
+ entry.tag.pane.rot_x = 0;
+ entry.tag.pane.rot_x = 0;
+ entry.tag.pane.angle = 0;
+ entry.tag.pane.xmag = 0;
+ entry.tag.pane.ymag = 0;
+ entry.tag.pane.width = 0;
+ entry.tag.pane.height = 0;
+ entry.tag.pane.done = 0;
+ return AddEntryToBRLYT(brlyt, entry);
+}
+
+int LaichLyt_StartText(BRLYT* brlyt, char* name)
+{
+ LYTEntry entry;
+ entry.type = LYT_TYPE_TEXT;
+ entry.done = 0;
+ entry.tag.text.pane.alpha = 255;
+ entry.tag.text.pane.alpha2 = 0;
+ memset(entry.tag.text.pane.name, 0, 24);
+ strncpy(entry.tag.text.pane.name, name, 24);
+ entry.tag.text.pane.x = 0;
+ entry.tag.text.pane.y = 0;
+ entry.tag.text.pane.z = 0;
+ entry.tag.text.pane.rot_x = 0;
+ entry.tag.text.pane.rot_x = 0;
+ entry.tag.text.pane.angle = 0;
+ entry.tag.text.pane.xmag = 0;
+ entry.tag.text.pane.ymag = 0;
+ entry.tag.text.pane.width = 0;
+ entry.tag.text.pane.height = 0;
+ entry.tag.text.pane.done = 0;
+ entry.tag.text.font = LYT_FONT_DEFAULT;
+ entry.tag.text.stringlen = 0;
+ entry.tag.text.string = NULL;
+ entry.tag.text.color_fg = RGBA8(0, 0, 0, 255);
+ entry.tag.text.color_bg = RGBA8(0, 0, 0, 0);
+ entry.tag.text.done = 0;
+ return AddEntryToBRLYT(brlyt, entry);
+}
+
+int LaichLyt_StartPic(BRLYT* brlyt, char* name)
+{
+ LYTEntry entry;
+ entry.type = LYT_TYPE_PIC;
+ entry.done = 0;
+ entry.tag.pic.pane.alpha = 255;
+ entry.tag.pic.pane.alpha2 = 0;
+ memset(entry.tag.pic.pane.name, 0, 24);
+ strncpy(entry.tag.pic.pane.name, name, 24);
+ entry.tag.pic.pane.x = 0;
+ entry.tag.pic.pane.y = 0;
+ entry.tag.pic.pane.z = 0;
+ entry.tag.pic.pane.rot_x = 0;
+ entry.tag.pic.pane.rot_x = 0;
+ entry.tag.pic.pane.angle = 0;
+ entry.tag.pic.pane.xmag = 0;
+ entry.tag.pic.pane.ymag = 0;
+ entry.tag.pic.pane.width = 0;
+ entry.tag.pic.pane.height = 0;
+ entry.tag.pic.pane.done = 0;
+ entry.tag.pic.colors[0] = RGBA8(0, 0, 0, 255);
+ entry.tag.pic.colors[1] = RGBA8(0, 0, 0, 255);
+ entry.tag.pic.colors[2] = RGBA8(0, 0, 0, 255);
+ entry.tag.pic.colors[3] = RGBA8(0, 0, 0, 255);
+ entry.tag.pic.texcoordcnt = 0;
+ entry.tag.pic.texcoords = NULL;
+ entry.tag.pic.done = 0;
+ return AddEntryToBRLYT(brlyt, entry);
+}
+
+int LaichLyt_StartMat(BRLYT* brlyt)
+{
+ LYTEntry entry;
+ entry.type = LYT_TYPE_MAT;
+ entry.done = 0;
+ entry.tag.mat.done = 0;
+ entry.tag.mat.tev_colors[0] = RGB565(0, 0, 0, 255);
+ entry.tag.mat.tev_colors[1] = RGB565(0, 0, 0, 255);
+ entry.tag.mat.tev_colors[2] = RGB565(0, 0, 0, 255);
+ entry.tag.mat.tev_colors[3] = RGB565(0, 0, 0, 255);
+ entry.tag.mat.unk_colors[0] = RGB565(0, 0, 0, 255);
+ entry.tag.mat.unk_colors[1] = RGB565(0, 0, 0, 255);
+ entry.tag.mat.unk_colors[2] = RGB565(0, 0, 0, 255);
+ entry.tag.mat.unk_colors[3] = RGB565(0, 0, 0, 255);
+ entry.tag.mat.unk_colors2[0] = RGB565(0, 0, 0, 255);
+ entry.tag.mat.unk_colors2[1] = RGB565(0, 0, 0, 255);
+ entry.tag.mat.unk_colors2[2] = RGB565(0, 0, 0, 255);
+ entry.tag.mat.unk_colors2[3] = RGB565(0, 0, 0, 255);
+ entry.tag.mat.tev_kcolor[0] = RGBA8(0, 0, 0, 255);
+ entry.tag.mat.tev_kcolor[1] = RGBA8(0, 0, 0, 255);
+ entry.tag.mat.tev_kcolor[2] = RGBA8(0, 0, 0, 255);
+ entry.tag.mat.tev_kcolor[3] = RGBA8(0, 0, 0, 255);
+ entry.tag.mat.refcnt = 0;
+ entry.tag.mat.refs = NULL;
+ entry.tag.mat.stage1cnt = 0;
+ entry.tag.mat.stage1s = NULL;
+ entry.tag.mat.stage2cnt = 0;
+ entry.tag.mat.stage2s = NULL;
+ entry.tag.mat.stage3cnt = 0;
+ entry.tag.mat.stage3s = NULL;
+ entry.tag.mat.stage4cnt = 0;
+ entry.tag.mat.stage4s = NULL;
+ entry.tag.mat.stage5cnt = 0;
+ entry.tag.mat.stage5s = NULL;
+ entry.tag.mat.stage6cnt = 0;
+ entry.tag.mat.stage6s = NULL;
+ entry.tag.mat.stage7cnt = 0;
+ entry.tag.mat.stage7s = NULL;
+ entry.tag.mat.stage8cnt = 0;
+ entry.tag.mat.stage8s = NULL;
+ entry.tag.mat.stage9cnt = 0;
+ entry.tag.mat.stage9s = NULL;
+ entry.tag.mat.stage10cnt = 0;
+ entry.tag.mat.stage10s = NULL;
+ return AddEntryToBRLYT(brlyt, entry);
+}
+
+int LaichLyt_StartGroup(BRLYT* brlyt, char* name)
+{
+ LYTEntry entry;
+ entry.type = LYT_TYPE_GROUP;
+ entry.done = 0;
+ memset(entry.tag.grp.name, 0, 16);
+ strncpy(entry.tag.grp.name, name, 16);
+ entry.tag.grp.subcnts = 0;
+ entry.tag.grp.subs = NULL;
+ entry.tag.grp.done = 0;
+ return AddEntryToBRLYT(brlyt, entry);
+}
+
+static void LaichLyt_IntPaneCoords(LYTPane* pane, \
+ float x, float y, float z)
+{
+ pane->x = x;
+ pane->y = y;
+ pane->z = z;
+}
+
+static void LaichLyt_IntPaneRotation(LYTPane* pane, \
+ float rot_x, float rot_y, float angle)
+{
+ pane->rot_x = rot_x;
+ pane->rot_y = rot_y;
+ pane->angle = angle;
+}
+
+static void LaichLyt_IntPaneZoom(LYTPane* pane, \
+ float xmag, float ymag)
+{
+ pane->xmag = xmag;
+ pane->ymag = ymag;
+}
+
+static void LaichLyt_IntPaneSize(LYTPane* pane, \
+ float width, float height)
+{
+ pane->width = width;
+ pane->height = height;
+}
+
+static void LaichLyt_IntPaneAlpha(LYTPane* pane, \
+ u8 alpha, u8 alpha2)
+{
+ pane->alpha = alpha;
+ pane->alpha2 = alpha2;
+}
+
+void LaichLyt_PaneCoords(BRLYT* brlyt, int pane, \
+ float x, float y, float z)
+{
+ LaichLyt_IntPaneCoords(&(brlyt->entries[pane].tag.pane), \
+ x, y, z);
+}
+void LaichLyt_PaneRotation(BRLYT* brlyt, int pane, \
+ float rot_x, float rot_y, float angle)
+{
+ LaichLyt_IntPaneRotation(&(brlyt->entries[pane].tag.pane), \
+ rot_x, rot_y, angle);
+}
+void LaichLyt_PaneZoom(BRLYT* brlyt, int pane, \
+ float xmag, float ymag)
+{
+ LaichLyt_IntPaneZoom(&(brlyt->entries[pane].tag.pane), \
+ xmag, ymag);
+}
+void LaichLyt_PaneSize(BRLYT* brlyt, int pane, \
+ float width, float height)
+{
+ LaichLyt_IntPaneSize(&(brlyt->entries[pane].tag.pane), \
+ width, height);
+}
+void LaichLyt_PaneAlpha(BRLYT* brlyt, int pane, \
+ u8 alpha, u8 alpha2)
+{
+ LaichLyt_IntPaneAlpha(&(brlyt->entries[pane].tag.pane), \
+ alpha, alpha2);
+}
+
+void LaichLyt_TextCoords(BRLYT* brlyt, int text, \
+ float x, float y, float z)
+{
+ LaichLyt_IntPaneCoords(&(brlyt->entries[text].tag.text.pane), \
+ x, y, z);
+}
+void LaichLyt_TextRotation(BRLYT* brlyt, int text, \
+ float rot_x, float rot_y, float angle)
+{
+ LaichLyt_IntPaneRotation(&(brlyt->entries[text].tag.text.pane), \
+ rot_x, rot_y, angle);
+}
+void LaichLyt_TextZoom(BRLYT* brlyt, int text, \
+ float xmag, float ymag)
+{
+ LaichLyt_IntPaneZoom(&(brlyt->entries[text].tag.text.pane), \
+ xmag, ymag);
+}
+void LaichLyt_TextSize(BRLYT* brlyt, int text, \
+ float width, float height)
+{
+ LaichLyt_IntPaneSize(&(brlyt->entries[text].tag.text.pane), \
+ width, height);
+}
+void LaichLyt_TextAlpha(BRLYT* brlyt, int text, \
+ u8 alpha, u8 alpha2)
+{
+ LaichLyt_IntPaneAlpha(&(brlyt->entries[text].tag.text.pane), \
+ alpha, alpha2);
+}
+
+void LaichLyt_PicCoords(BRLYT* brlyt, int pic, \
+ float x, float y, float z)
+{
+ LaichLyt_IntPaneCoords(&(brlyt->entries[pic].tag.pic.pane), \
+ x, y, z);
+}
+void LaichLyt_PicRotation(BRLYT* brlyt, int pic, \
+ float rot_x, float rot_y, float angle)
+{
+ LaichLyt_IntPaneRotation(&(brlyt->entries[pic].tag.pic.pane), \
+ rot_x, rot_y, angle);
+}
+void LaichLyt_PicZoom(BRLYT* brlyt, int pic, \
+ float xmag, float ymag)
+{
+ LaichLyt_IntPaneZoom(&(brlyt->entries[pic].tag.pic.pane), \
+ xmag, ymag);
+}
+void LaichLyt_PicSize(BRLYT* brlyt, int pic, \
+ float width, float height)
+{
+ LaichLyt_IntPaneSize(&(brlyt->entries[pic].tag.pic.pane), \
+ width, height);
+}
+void LaichLyt_PicAlpha(BRLYT* brlyt, int pic, \
+ u8 alpha, u8 alpha2)
+{
+ LaichLyt_IntPaneAlpha(&(brlyt->entries[pic].tag.pic.pane), \
+ alpha, alpha2);
+}
+
+
+void LaichLyt_TextFont(BRLYT* brlyt, int text, \
+ LYTFont font)
+{
+ brlyt->entries[text].tag.text.font = font;
+}
+
+void LaichLyt_TextString(BRLYT* brlyt, int text, \
+ u16* string, int stringlen)
+{
+ brlyt->entries[text].tag.text.string = malloc(stringlen * 2);
+ memcpy(brlyt->entries[text].tag.text.string, string, stringlen * 2);
+ brlyt->entries[text].tag.text.stringlen = stringlen;
+}
+
+void LaichLyt_TextColors(BRLYT* brlyt, int text, \
+ u32 fg, u32 bg)
+{
+ brlyt->entries[text].tag.text.color_fg = fg;
+ brlyt->entries[text].tag.text.color_bg = bg;
+}
+
+
+void LaichLyt_PicColors(BRLYT* brlyt, int pic, \
+ u32 color1, u32 color2, u32 color3, u32 color4)
+{
+ brlyt->entries[pic].tag.pic.colors[0] = color1;
+ brlyt->entries[pic].tag.pic.colors[1] = color2;
+ brlyt->entries[pic].tag.pic.colors[2] = color3;
+ brlyt->entries[pic].tag.pic.colors[3] = color4;
+}
+
+void LaichLyt_PicAddTexCoord(BRLYT* brlyt, int pic, \
+ float coords[8])
+{
+ LYTTexCoord coord;
+ int i;
+ for(i = 0; i < 8; i++)
+ coord.coords[i] = coords[i];
+ AddTexCoordToPic(brlyt, pic, coord);
+}
+
+
+void LaichLyt_GroupAddSub(BRLYT* brlyt, int group, \
+ char* subname)
+{
+ LYTSub sub;
+ memset(sub.name, 0, 16);
+ strncpy(sub.name, subname, 16);
+ AddSubToGroup(brlyt, group, sub);
+}
+
+
+
+
+static void LaichLyt_EndEntry(BRLYT* brlyt, int tag)
+{
+ switch(brlyt->entries[tag].type) {
+ case LYT_TYPE_GROUP:
+ brlyt->entries[tag].tag.grp.done = 1;
+ break;
+
+ case LYT_TYPE_MAT:
+ brlyt->entries[tag].tag.mat.done = 1;
+ break;
+
+ case LYT_TYPE_PANE:
+ brlyt->entries[tag].tag.pane.done = 1;
+ break;
+
+ case LYT_TYPE_TEXT:
+ brlyt->entries[tag].tag.text.done = 1;
+ brlyt->entries[tag].tag.text.pane.done = 1;
+ break;
+
+ case LYT_TYPE_PIC:
+ brlyt->entries[tag].tag.pic.done = 1;
+ brlyt->entries[tag].tag.pic.pane.done = 1;
+ break;
+
+ default: // lolwut
+ return;
+ }
+ brlyt->entries[tag].done = 1;
+}
+
+void LaichLyt_EndGroup(BRLYT* brlyt, int group)
+{
+ LaichLyt_EndEntry(brlyt, group);
+}
+
+void LaichLyt_EndMat(BRLYT* brlyt, int mat)
+{
+ LaichLyt_EndEntry(brlyt, mat);
+}
+
+void LaichLyt_EndPic(BRLYT* brlyt, int pic)
+{
+ LaichLyt_EndEntry(brlyt, pic);
+}
+
+void LaichLyt_EndText(BRLYT* brlyt, int text)
+{
+ LaichLyt_EndEntry(brlyt, text);
+}
+
+void LaichLyt_EndPane(BRLYT* brlyt, int pane)
+{
+ LaichLyt_EndEntry(brlyt, pane);
+}