From 3172b69cbcb5a15ee4ae5cda075d15c6889292db Mon Sep 17 00:00:00 2001 From: Rhys Lloyd Date: Fri, 12 Dec 2025 22:39:16 -0800 Subject: [PATCH 1/3] fix RunEvent --- src/v0.rs | 90 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 67 insertions(+), 23 deletions(-) diff --git a/src/v0.rs b/src/v0.rs index 1d4610a..28cd7b0 100644 --- a/src/v0.rs +++ b/src/v0.rs @@ -257,25 +257,6 @@ pub struct GravityEvent{ #[binrw] #[brw(little)] #[derive(Debug,Clone,Copy,Hash,Eq,PartialEq)] -pub enum RunEventType{ - #[brw(magic=0u32)] - Prepare, - #[brw(magic=1u32)] - Start, - #[brw(magic=2u32)] - Finish, - #[brw(magic=3u32)] - Clear, - #[brw(magic=4u32)] - Flag, - #[brw(magic=5u32)] - LoadState, - #[brw(magic=6u32)] - SaveState, -} -#[binrw] -#[brw(little)] -#[derive(Debug,Clone,Copy,Hash,Eq,PartialEq)] pub enum ModeSpec{ Exactly(u32), #[brw(magic=-1i32)] @@ -288,6 +269,29 @@ pub enum ModeSpec{ #[binrw] #[brw(little)] #[derive(Debug,Clone,Copy,Hash,Eq,PartialEq)] +pub enum Style{ + #[brw(magic=1u32)] + Autohop, + #[brw(magic=2u32)] + Scroll, + #[brw(magic=3u32)] + Sideways, + #[brw(magic=4u32)] + HalfSideways, + #[brw(magic=5u32)] + WOnly, + #[brw(magic=6u32)] + AOnly, + #[brw(magic=7u32)] + Backwards, + #[brw(magic=8u32)] + Faste, + #[brw(magic=14u32)] + LowGravity, +} +#[binrw] +#[brw(little)] +#[derive(Debug,Clone,Copy,Hash,Eq,PartialEq)] pub enum FlagReason{ #[brw(magic=0u32)] Anticheat, @@ -309,17 +313,57 @@ pub enum FlagReason{ Teleport, #[brw(magic=9u32)] Practice, - #[brw(magic=b"data")] - None, } #[binrw] #[brw(little)] #[derive(Debug,Clone)] -pub struct RunEvent{ - pub run_event_type:RunEventType, +pub struct RunEventPrepare{ + pub mode:ModeSpec, + pub style:Style, +} +#[binrw] +#[brw(little)] +#[derive(Debug,Clone)] +pub struct RunEventZone{ + pub mode:ModeSpec, + #[br(temp)] + #[bw(ignore)] + #[brw(magic=b"data")] + _magic:(), +} +#[binrw] +#[brw(little)] +#[derive(Debug,Clone)] +pub struct RunEventFlag{ pub mode:ModeSpec, pub flag_reason:FlagReason, } +#[binrw] +#[brw(little)] +#[derive(Debug,Clone)] +pub struct RunEventPractice{ + pub mode:ModeSpec, + pub state_id:u32, +} +#[binrw] +#[brw(little)] +#[derive(Debug,Clone)] +pub enum RunEvent{ + #[brw(magic=0u32)] + Prepare(RunEventPrepare), + #[brw(magic=1u32)] + Start(RunEventZone), + #[brw(magic=2u32)] + Finish(RunEventZone), + #[brw(magic=3u32)] + Clear(RunEventZone), + #[brw(magic=4u32)] + Flag(RunEventFlag), + #[brw(magic=5u32)] + LoadState(RunEventPractice), + #[brw(magic=6u32)] + SaveState(RunEventPractice), +} // camera #[binrw] -- 2.49.1 From d2cfcc94248ec3533405e5a0ca8e5528231cce81 Mon Sep 17 00:00:00 2001 From: Rhys Lloyd Date: Fri, 12 Dec 2025 22:54:20 -0800 Subject: [PATCH 2/3] fix styles --- src/v0.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/v0.rs b/src/v0.rs index 28cd7b0..dd5548f 100644 --- a/src/v0.rs +++ b/src/v0.rs @@ -288,6 +288,16 @@ pub enum Style{ Faste, #[brw(magic=14u32)] LowGravity, + #[brw(magic=501u32)] + Fly, + #[brw(magic=502u32)] + FlySustain, + #[brw(magic=503u32)] + Rocket, + #[brw(magic=504u32)] + Style3DStrafe, + #[brw(magic=505u32)] + RocketStrafe, } #[binrw] #[brw(little)] -- 2.49.1 From c6c84bd2895d41a9bb79d5feb7d89a87c5e8dc70 Mon Sep 17 00:00:00 2001 From: Rhys Lloyd Date: Sat, 13 Dec 2025 07:50:59 -0800 Subject: [PATCH 3/3] restrict modes in Prepare and Zone RunEvents --- src/v0.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/v0.rs b/src/v0.rs index dd5548f..9dac788 100644 --- a/src/v0.rs +++ b/src/v0.rs @@ -257,8 +257,12 @@ pub struct GravityEvent{ #[binrw] #[brw(little)] #[derive(Debug,Clone,Copy,Hash,Eq,PartialEq)] +pub struct ModeID(pub u32); +#[binrw] +#[brw(little)] +#[derive(Debug,Clone,Copy,Hash,Eq,PartialEq)] pub enum ModeSpec{ - Exactly(u32), + Exactly(ModeID), #[brw(magic=-1i32)] All, #[brw(magic=-2i32)] @@ -328,14 +332,14 @@ pub enum FlagReason{ #[brw(little)] #[derive(Debug,Clone)] pub struct RunEventPrepare{ - pub mode:ModeSpec, + pub mode:ModeID, pub style:Style, } #[binrw] #[brw(little)] #[derive(Debug,Clone)] pub struct RunEventZone{ - pub mode:ModeSpec, + pub mode:ModeID, #[br(temp)] #[bw(ignore)] #[brw(magic=b"data")] -- 2.49.1