diff options
| author | Alex Marshall <SquidMan72@gmail.com> | 2009-03-16 20:49:04 -0700 |
|---|---|---|
| committer | Alex Marshall <SquidMan72@gmail.com> | 2009-03-16 20:49:04 -0700 |
| commit | c559c71dd9abff1f0e8d0175b3feac792f337670 (patch) | |
| tree | dca83aa83336e58c36b3a9372f7f4bc399c41340 /player/brlan.h | |
| parent | 47c3f8e593eaaba27de23eb07379ee690859047c (diff) | |
Added player. It's in XCode project format. If anyone wants to write a makefile for it, please do, it'd be appreciated. Player doesn't play at the moment, but it does read BRLAN into a nice format, and set up SDL.
Diffstat (limited to '')
| -rw-r--r-- | player/brlan.h | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/player/brlan.h b/player/brlan.h new file mode 100644 index 0000000..6c4afa9 --- /dev/null +++ b/player/brlan.h @@ -0,0 +1,135 @@ +/* + * brlan.h + * BannerPlayer + * + * Created by Alex Marshall on 09/03/16. + * Copyright 2009 __MyCompanyName__. All rights reserved. + * + */ + +#ifndef _BRLAN_H_ +#define _BRLAN_H_ + +#include "types.h" + +typedef enum +{ + RLPA_ENTRY = 0, + RLTS_ENTRY = 1, + RLVI_ENTRY = 2, + RLVC_ENTRY = 3, + RLMC_ENTRY = 4, + RLTP_ENTRY = 5 +} brlan_entry_type; + +typedef struct +{ + fourcc magic; // "pai1" in ASCII. + u32 size; // Size of section, which is rest of the file. (header.file_size - header.offset_pai1) + u16 framesize; // Framesize + u8 flags; // Flags + u8 unk1; // Unknown + u16 num_timgs; // Number of timgs? + u16 num_entries; // Number of tags in the brlan. + u32 unk2; // Only if bit 25 of flags is set. + u32 entry_offset; // Offset to entries. (Relative to start of pai1 header.) +} brlan_pai1_header_type2; + +typedef struct +{ + fourcc magic; // "RLAN" in ASCII. + u32 unk1; // Always 0xFEFF 0x0008. Possibly a versioning string. + u32 file_size; // Size of whole file, including the header. + u16 pai1_offset; // The offset to the pai1 header from the start of file. + u16 pai1_count; // How many pai1 sections there are (duh, only 1... wtf?) +} brlan_header; + +typedef struct +{ + fourcc magic; // "pai1" in ASCII. + u32 size; // Size of section, which is rest of the file. (header.file_size - header.offset_pai1) + u16 framesize; // Framesize + u8 flags; // Flags + u8 unk1; // Unknown + u16 num_timgs; // Number of timgs? + u16 num_entries; // Number of tags in the brlan. +} brlan_pai1_universal; + +typedef struct +{ + fourcc magic; // "pai1" in ASCII. + u32 size; // Size of section, which is rest of the file. (header.file_size - header.offset_pai1) + u16 framesize; // Framesize + u8 flags; // Flags + u8 unk1; // Unknown + u16 num_timgs; // Number of timgs? + u16 num_entries; // Number of tags in the brlan. + u32 entry_offset; // Offset to entries. (Relative to start of pai1 header.) +} brlan_pai1_header_type1; + +typedef struct +{ + char name[20]; // Name of the BRLAN entry. (Must be defined in the BRLYT) + u32 flags; // Flags? (If bit 25 is set, we have another u32 after the entry. It's use is unknown.) + u32 anim_header_len; // Length of the animation header which is directly after this entry. +} brlan_entry; + +typedef struct +{ + fourcc magic; + u8 entry_count; // How many entries in this chunk. + u8 pad1; // All cases I've seen is zero. + u8 pad2; // All cases I've seen is zero. + u8 pad3; // All cases I've seen is zero. +} tag_header; + +typedef struct +{ + u32 offset; // Offset to the data pointed to by this entry. + // Relative to the start of the RLPA header. +} tag_entry; + +typedef struct +{ + u16 type; // Type (look at animtypes) + u16 unk1; // ??? Every case has been 0x0200 + u16 coord_count; // How many coordinates. + u16 pad1; // All cases I've seen is zero. + u32 unk2; // ??? In every case I've seen, it is 0x0000000C. +} tag_entryinfo; + +typedef struct +{ // Bits not listed here are currently unknown. + u32 part1; // If Bit 9 is set in flags, this is an f32, with a coordinate. (Bit 17 seems to act the same) + u32 part2; // If Bit 16 is set in flags, this is an f32, with another coordinate. (Bit 17 seems to act the same) + u32 part3; // With Bit 16 set in flags, this seems to be yet another coordinate. (Bit 17 seems to act the same) +} tag_data; + +typedef struct BRLAN_trip +{ + f32 frame; // Frame number. + f32 value; // Value at the frame. + f32 blend; // Interpolation value. +} BRLAN_triplets; + +typedef struct BRLAN_entr +{ + u16 animtype; // What subtype of animation. + u16 tripletcount; // Number of triplets. + BRLAN_triplets triplets[20]; // Shouldn't ever be more than 20. +} BRLAN_entries; + +typedef struct BRLAN_anims +{ + char type[4]; // The type of animation (FourCC from BRLAN file) + char name[20]; // Name. + u32 offset; // Offset into the BRLAN file to find this animation. + u16 entrycount; // How many entries. + BRLAN_entries entries[20]; // The entries. Shouldn't ever be more than 20. +} BRLAN_animation; + +void BRLAN_Initialize(char rootpath[]); +u16 BRLAN_ReadAnimations(BRLAN_animation **anims); +void BRLAN_Finish(); + +#endif //_BRLAN_H_ |
