Advertisement · 728 × 90

Posts by ComplexPlane

Post image

My new website! complexplane.dev

1 year ago 1 0 0 0
Mandelbrot's Evil Twin
Mandelbrot's Evil Twin YouTube video by 2swap

Super sick Mandelbrot/complex plane math video: www.youtube.com/watch?v=Ed1g...

Really amazing style, it's probably the first Youtube video with serious "wow" factor I've seen in ages.

1 year ago 2 0 0 0

I guess it's very important to recognize how stupid most online discussion has become, and to not let yourself become part of it. Let's be real - in 2025, Internet == Mental Illness.

1 year ago 1 0 0 0

This goes for pretty much all other public online communities these days - there's minimal meaningful interaction to be found, in sharp contrast to IRL. The old Internet has been dead for a long, long time.

1 year ago 0 0 1 0

Why are people on Hacker News such close-minded, negative, naysayer killjoys? Being the polar opposite of curious, open-minded, creative, and passionate is nothing to be proud of at all! It's SO sad reading the same contrarian dingus posts every day.

1 year ago 0 0 1 0
Post image

This read my mind perfectly

Stolen from mastodon.online/@nikitonsky/...

1 year ago 2 1 0 0
Post image

Every day I seem to close around two todos, then add another two

1 year ago 1 1 0 0
Advertisement
Post image

SMB2PracticeMod, a project which injects Rust into an old GameCube game to add features like savestates, input display, and freecam. Runs on a real Wii console!

1 year ago 3 1 0 0

Nvm I made it worse

1 year ago 0 0 0 0
            pub fn call(&self $(, $argname: $arg)*) -> $ret {
                let chained_func = unsafe {
                    core::mem::transmute::<
                        *const core::ffi::c_void,
                        extern "C" fn($($arg,)*) -> $ret
                    >(self.instrs.as_ptr() as *const core::ffi::c_void)
                };
                chained_func($($argname,)*)
            }

pub fn call(&self $(, $argname: $arg)*) -> $ret { let chained_func = unsafe { core::mem::transmute::< *const core::ffi::c_void, extern "C" fn($($arg,)*) -> $ret >(self.instrs.as_ptr() as *const core::ffi::c_void) }; chained_func($($argname,)*) }

This is probably one of the worst looking functions in the SMB2PracticeMod port... #rustlang

1 year ago 0 0 1 0

Custom bindings are rehtrop's feature! Much more of their stuff coming soon

1 year ago 1 0 0 0
Video

Coming in SMB2PracticeMod v1.1.0: Smart save slots, clear bindings

1 year ago 1 0 1 0

Thank you OBS Studio for deleting my BEAUTIFUL new layout I meticulously crafted and tweaked to sheer perfection. My beautiful chonker pauseless SMB2 story mode life is now on hold, thanks to you. Thank you so much

1 year ago 0 0 0 0
Post image

What streaming does to a man

1 year ago 2 0 0 0
Advertisement

Thinking about a strained metaphor between people who refuse to use their dishwasher and people who prefer dynamically typed languages

1 year ago 34 3 2 0

Twitter may never die, but it could become a Facebook: a dusty fart you can mostly ignore

1 year ago 1 0 0 0
Preview
Rust Port by ComplexPlane · Pull Request #50 · ComplexPlane/SMB2PracticeMod This ports SMB2 Practice Mod from C++ to Rust, with little further additions. Why? Because Rust is a modern alternative to C++ with a lot to like, and as I&#39;ve been into Rust lately I figured th...

Super Monkey Ball 2 Practice Mod has been completely ported from C++ to Rust. Cool I guess. Could put out a release, but I've got an idea for something new I'd like to try first.

github.com/ComplexPlane...

1 year ago 0 0 0 0

Nevermind, this is actually an infinite recursion

1 year ago 0 0 0 0
What end-of-stack magic identifier does the GameCube use in memory?

The GameCube uses "Gull" (0x47756C6C in hex) as its end-of-stack identifier. This magic value would be found at the bottom of a properly initialized stack, and encountering it could indicate a stack overflow condition.

How about the Wii?

The Wii uses "DEAD" (0x44454144 in hex) as its end-of-stack identifier/magic value.

How about the GameCube?

The GameCube uses "GAFE" (0x47414645 in hex) as its end-of-stack identifier - I apologize for my earlier incorrect answer about "Gull".

How about the Wii?

The Wii uses "CAFE" (0x43414645 in hex) as its end-of-stack identifier - I apologize for my earlier incorrect statement about "DEAD".


How about the GameCube?

Looking at it again - I may have been wrong and gone back and forth too much. Let me be honest: while I'm aware these consoles use stack canaries/end-of-stack identifiers, I'm not 100% certain of the exact values anymore and don't want to make another potentially incorrect statement. You might want to verify this in technical documentation or the console's SDK materials for the definitive answer.

What end-of-stack magic identifier does the GameCube use in memory? The GameCube uses "Gull" (0x47756C6C in hex) as its end-of-stack identifier. This magic value would be found at the bottom of a properly initialized stack, and encountering it could indicate a stack overflow condition. How about the Wii? The Wii uses "DEAD" (0x44454144 in hex) as its end-of-stack identifier/magic value. How about the GameCube? The GameCube uses "GAFE" (0x47414645 in hex) as its end-of-stack identifier - I apologize for my earlier incorrect answer about "Gull". How about the Wii? The Wii uses "CAFE" (0x43414645 in hex) as its end-of-stack identifier - I apologize for my earlier incorrect statement about "DEAD". How about the GameCube? Looking at it again - I may have been wrong and gone back and forth too much. Let me be honest: while I'm aware these consoles use stack canaries/end-of-stack identifiers, I'm not 100% certain of the exact values anymore and don't want to make another potentially incorrect statement. You might want to verify this in technical documentation or the console's SDK materials for the definitive answer.

Thanks Claude

1 year ago 1 0 0 0
pub struct CmSeg {
    reset_cm_course_hook: ResetCmCourseHook,
    state: State,
    seg_request: Seg,
    start_time: u32,
    seg_time: u32,
    overwritten_course_idx: usize,
    overwritten_entry_idx: usize,
    overwritten_opcode: mkb::CourseCommandOpcode,
    overwritten_starting_monkeys: i8,
    pbs: [u32; 14],
}

#[derive(Default)]
struct CmSegDefault(CmSeg);

impl Default for CmSeg {
    fn default() -> Self {
        Self {
            pbs: [u32::MAX; 14],
            ..CmSegDefault::default().0
        }
    }
}

pub struct CmSeg { reset_cm_course_hook: ResetCmCourseHook, state: State, seg_request: Seg, start_time: u32, seg_time: u32, overwritten_course_idx: usize, overwritten_entry_idx: usize, overwritten_opcode: mkb::CourseCommandOpcode, overwritten_starting_monkeys: i8, pbs: [u32; 14], } #[derive(Default)] struct CmSegDefault(CmSeg); impl Default for CmSeg { fn default() -> Self { Self { pbs: [u32::MAX; 14], ..CmSegDefault::default().0 } } }

Little #rustlang hack I found: to derive Default on a struct except for a couple fields, derive Default on a newtype-d struct and use it:

1 year ago 1 0 1 0

Maybe I should run Celeste again

Last time I tried I relearned the entire run and then just stopped, feel like I'd have to start over yet again

1 year ago 1 0 0 0
Post image Post image Post image

Hot take: code editor themes designed by big companies are pretty much the only good ones. See: Jetbrains Fleet, Xcode Presentation, VSCode Default Dark

1 year ago 0 0 0 0

Never tried it, what did you like about it?

1 year ago 0 0 1 0
A "swallow" macro, which takes in a "good" token tree and a "garbage" token tree and returns the good one

A "swallow" macro, which takes in a "good" token tree and a "garbage" token tree and returns the good one

I'm currently porting SMB2 Practice Mod from C++ to Rust, because Rust is cool and stuff.

Slowly seeing the joy of Rust declarative macros - learned this guy seems necessary to expand repetitions without expanding metavariables inside the repetition, which you'd think would be common?

#rustlang

1 year ago 1 0 0 0
Advertisement
Post image

My new keyboard <3

Wooting 80HE White Zinc
Keycaps: KAT Great Wave with Katakana Alphas

1 year ago 6 0 0 0