|
@@ -2,7 +2,7 @@ use binrw::{binread, BinRead, BinWrite, FilePtr64};
|
|
|
|
|
|
use crate::{
|
|
|
array_of::ArrayOf,
|
|
|
- basic_field::{Field, Rgba},
|
|
|
+ basic_field::{Color, Double, Field, Rgba, WString, U32},
|
|
|
field_of::FieldOf,
|
|
|
};
|
|
|
|
|
@@ -20,37 +20,72 @@ pub struct Header {
|
|
|
#[derive(BinRead, BinWrite, Debug)]
|
|
|
pub struct Thumbnail {
|
|
|
_zeros_1: u32,
|
|
|
- dimension_x: u32,
|
|
|
- dimension_y: u32,
|
|
|
+ pub dimension_x: u32,
|
|
|
+ pub dimension_y: u32,
|
|
|
_unknown_1: u32, // 0x320?
|
|
|
_unknown_2: u32, // 0x200001?
|
|
|
_zeros_2: [u32; 3],
|
|
|
|
|
|
#[br(count = dimension_x * dimension_y)]
|
|
|
- pixels: Vec<Rgba>,
|
|
|
+ pub pixels: Vec<Rgba>,
|
|
|
}
|
|
|
|
|
|
#[derive(BinRead, Debug)]
|
|
|
pub struct PenHeader {
|
|
|
- pen_count: u32,
|
|
|
+ pub pen_count: u32,
|
|
|
#[br(args {
|
|
|
inner: binrw::args! {
|
|
|
pen_count
|
|
|
}
|
|
|
})]
|
|
|
- start_offset: FilePtr64<Pens>,
|
|
|
+ pub start_offset: FilePtr64<Pens>,
|
|
|
}
|
|
|
|
|
|
#[derive(BinRead, BinWrite, Debug)]
|
|
|
#[br(import {pen_count: u32})]
|
|
|
pub struct Pens {
|
|
|
+ // #[br(count = pen_count)]
|
|
|
+ // pens: Vec<ArrayOf<Field>>,
|
|
|
#[br(count = pen_count)]
|
|
|
- pens: Vec<Pen>
|
|
|
+ pub pens: Vec<Pen>,
|
|
|
}
|
|
|
|
|
|
#[derive(BinRead, BinWrite, Debug)]
|
|
|
pub struct Pen {
|
|
|
-
|
|
|
+ #[br(assert(field_count == 236))]
|
|
|
+ pub field_count: u32,
|
|
|
+ pub color: Color,
|
|
|
+ pub name: WString,
|
|
|
+ pub disabled: U32,
|
|
|
+ pub use_default: U32,
|
|
|
+ pub loop_count: U32,
|
|
|
+ pub speed: Double,
|
|
|
+ pub power: Double,
|
|
|
+ pub frequency: U32,
|
|
|
+ _unknown_1: Field,
|
|
|
+ pub start_tc: U32,
|
|
|
+ pub end_tc: U32,
|
|
|
+ pub polygon_tc: U32,
|
|
|
+ pub jump_speed: Double,
|
|
|
+ _unknown_2: [Field; 10],
|
|
|
+ pub laser_off_tc: U32,
|
|
|
+ pub wave: U32,
|
|
|
+ _unknown_3: Field,
|
|
|
+ pub wobble_enable: U32,
|
|
|
+ pub wobble_diameter: Double,
|
|
|
+ pub wobble_distance: Double,
|
|
|
+ _unknown_4: [Field; 8],
|
|
|
+ pub min_jump_tc: U32,
|
|
|
+ pub max_jump_tc: U32,
|
|
|
+ pub jump_limit: Double,
|
|
|
+ _unknown_5: [Field; 2],
|
|
|
+ pub frequency_2: Double,
|
|
|
+ _unknown_6: [Field; 152],
|
|
|
+ pub wobble_type: U32,
|
|
|
+ pub continue_mode: U32,
|
|
|
+ _unknown_7: [Field; 12],
|
|
|
+ pub wobble_diameter_2: Double,
|
|
|
+ _unknown_8: [Field; 26],
|
|
|
}
|
|
|
|
|
|
#[derive(BinRead, BinWrite, Debug)]
|