aboutsummaryrefslogtreecommitdiff
path: root/laichzeit/banner.h
diff options
context:
space:
mode:
Diffstat (limited to 'laichzeit/banner.h')
-rw-r--r--laichzeit/banner.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/laichzeit/banner.h b/laichzeit/banner.h
new file mode 100644
index 0000000..b60b24d
--- /dev/null
+++ b/laichzeit/banner.h
@@ -0,0 +1,73 @@
+/*****************************************************************************/
+/* Laichzeit */
+/* Part of the Benzin Project */
+/* Copyright (c)2009 HACKERCHANNEL. Protected under the GNU GPLv2. */
+/* ------------------------------------------------------------------------- */
+/* banner.h */
+/* The header file for all the final banner stuff. Include this! */
+/* ------------------------------------------------------------------------- */
+/* Compilation code contributed by: */
+/* icefire */
+/* Intermediation code contributed by: */
+/* SquidMan */
+/*****************************************************************************/
+
+#ifndef BANNER_H
+#define BANNER_H
+
+#include "types.h"
+
+#define USE_BANNER
+
+typedef struct
+{
+ u8 zeroes[128]; // padding
+ char imet[4]; // `IMET'
+ u64 unk; // 0x0000060000000003 fixed, unknown purpose
+ u32 sizes[3]; // icon.bin, banner.bin, sound.bin
+ u32 flag1; // ???
+ u16 names[7][42]; // JP, EN, DE, FR, ES, IT, NL
+ u8 zeroes_2[840]; // Padding
+ u8 crypto[16]; // MD5 of 0x40 to 0x640 in header.
+ // Should be all 0's when calculating MD5.
+} IMET;
+
+typedef struct
+{
+ char imd5[4]; // `IMD5'
+ u32 filesize; // Size of rest of file
+ u8 zeroes[8]; // Padding
+ u8 crypto[16]; // MD5 of rest of file
+} IMD5;
+
+typedef struct
+{
+ char src[256]; // Filename.
+ char dst[256]; // Filename.
+ u32 size; // Size of the data.
+ u8* data; // The data.
+} U8File;
+
+typedef struct ud
+{
+ char name[256]; // Name.
+ int filecnt; // How many files.
+ U8File* files; // The files.
+ int dircnt; // How many subdirs.
+ struct ud* dirs; // The dirs.
+} U8Dir;
+
+typedef struct
+{
+ U8Dir rootdir; // The root dir.
+} U8;
+
+IMET* LaichMeta_IMET(char** names, \
+ u32 iconsize, u32 bannersize, u32 soundsize);
+IMD5* LaichMeta_IMD5(u8* file, u32 size);
+U8* LaichMeta_StartU8(U8Dir* root);
+U8Dir* LaichMeta_CreateDirInDirU8(U8Dir* arc, char* name);
+void LaichMeta_CreateFileInDirU8(U8Dir* arc, char* src, char* dst);
+u8* LaichMeta_CompileU8(U8* input, u32* size);
+
+#endif //BANNER_H