@foone@digipres.club avatar

foone

@foone@digipres.club

Hardware / software necromancer, collector of Weird Stuff, maker of Death Generators. (she/they🏳️‍⚧️)

This profile is from a federated server and may be incomplete. Browse more on the original instance.

foone, to random
@foone@digipres.club avatar

has no one documented the Wii libraries for handling Miis?
The RFL/RVL ones?

Huh.

foone,
@foone@digipres.club avatar

apparently the internal SDK library used for handling Miis is called RFL, for "Revolution FaceLib".
Interesting.

foone,
@foone@digipres.club avatar

weird. It seems to just... not be documented. Either this one part of the Wii's ecosystem of SDKs never leaked, or just no one cared.

foone,
@foone@digipres.club avatar

I had to reverse engineer this like a caveman! and this might just be specific to Wheel of Fortune (2010, Wii), I don't know if other Mii-based games use the same expressions.

Expressions:
0: smiling, eyes open
1: smiling, eyes closed (curved)
2: sad
3: sad with sad eyes
4: smiling, big eyes
5: smiling, dash eyes
6: O mouth

foone, to random
@foone@digipres.club avatar

why would you create a special string class called "InPlaceString<16>" and give it the ability to allocate heap memory for longer strings

that's not in-place anymore. that's just a regular heap string that's got an optimization for small strings

foone, to random
@foone@digipres.club avatar

Always a good sign when your Point3 class has "distFrom", "distFrom2", "length","length2", "normalize", and "fastNormalize" methods.

foone, to random
@foone@digipres.club avatar

weird things I find while reverse engineering:

every Player object has a Gender field, but it's unused unless you're a robot.

foone,
@foone@digipres.club avatar

This is actually just because the Player object has a gender field, but Players are used for both robots and human Players. For humans, their Player object is linked to a PlayerProfile object, and the PlayerProfile object has a separate gender field.

foone,
@foone@digipres.club avatar

instead of duplicating the gender into the Player object when initializing it from a PlayerProfile, they instead made the getGender() method check if the player is a robot, and use the local gender if so. Otherwise it looks up the Gender on the profile.

foone,
@foone@digipres.club avatar

also, it's important to know that the Gender field (both of them) is a 32bit integer, allowing for 4294967296 separate genders to be represented by Wheel of Fortune (2010, Wii)

foone,
@foone@digipres.club avatar

sadly the two Gender fields get conflated by the getGender method, so you don't get 4294967296 Robot Genders and 4294967296 Human Genders. They're the same 4294967296 genders.

How limiting.

foone,
@foone@digipres.club avatar

In terms of how it interprets the genders...

well, the WFCommonJunction::getProfileTexture method considers gender 0 to be "male" and the remaining 4294967295 genders to be female.

foone, to random
@foone@digipres.club avatar

I accidentally pasted 1,429,636 lines of text into a website's form and it seems to have hung :(

foone,
@foone@digipres.club avatar

darn. this code formatting tool can't unindent C++ code. it requires a minimum of 2 space indentation.

foone,
@foone@digipres.club avatar

maybe this'll fix it

foone,
@foone@digipres.club avatar

nope this appears to crash the ghidra export process and I end up with 1/3rd of the file

foone,
@foone@digipres.club avatar

32767 also crashes
255 doesn't.

do they have an unsigned byte max-line-length? ewww

foone,
@foone@digipres.club avatar

like any programmer faced with an unknown limit (even a non-binary one like myself), I binary searched it.

The absolute max is 10,000. 10,001 crashes.

foone, to random
@foone@digipres.club avatar

people are always trying to design a better keyboard for a given language but maybe we should go the other way

design a language to be easy to type

foone,
@foone@digipres.club avatar

this is my conlang, qwertyui.
it has 4 vowels and 4 consonants

foone, to random
@foone@digipres.club avatar

gonna have to write a regex to parse out some information from a C program. that's gonna be fun

foone,
@foone@digipres.club avatar

I've decided to make it more cursed, at least to start with:
rather than using regexes, I'm using hardcoded string-testing logic.

foone,
@foone@digipres.club avatar

this would be a lot easier if Ghidra didn't work so hard to keep line-lengths reasonable. There's a lot of weird line-stitching I have to do just because Ghidra thinks a human will read this disassembly. NOT SO! it's Extract-member-binds.py!

foone,
@foone@digipres.club avatar

this is terrible. I have 200 functions that need to be retyped.
they're in a list that contains like 700 other entries, so it's a pain to scroll to them.
also, all 200 have the exact same name, and every time I retype one, the list is re-sorted so I can't keep my place

foone,
@foone@digipres.club avatar

foone turing:
Sisyphean Programmer

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • osvaldo12
  • magazineikmin
  • cubers
  • thenastyranch
  • Durango
  • Youngstown
  • ngwrru68w68
  • slotface
  • mdbf
  • rosin
  • InstantRegret
  • kavyap
  • DreamBathrooms
  • JUstTest
  • normalnudes
  • modclub
  • cisconetworking
  • GTA5RPClips
  • everett
  • ethstaker
  • khanakhh
  • Leos
  • provamag3
  • tester
  • tacticalgear
  • anitta
  • lostlight
  • All magazines