Introduction
Introduction Statistics Contact Development Disclaimer Help
Post AWfirlGeCO14OcIc0O by [email protected]
More posts by [email protected]
Post #AWfN1KsMykiORr6UeO by [email protected]
1 likes, 0 repeats
bad news: after extensive digging into how Wheel of Fortune (2010, Wii) loads r…
Post #AWfNRoOLrWLpWFghpQ by [email protected]
0 likes, 0 repeats
so it adds the / directory of the DVD to the searcxh path, then bundles (where …
Post #AWfNcUYrvo73CZhS88 by [email protected]
0 likes, 0 repeats
it queries the current language and tries to add /Audio/$ThatLanguage to the se…
Post #AWfNcXLVZwCxq0TKDo by [email protected]
0 likes, 0 repeats
Then it adds /Video (where the videos are) and then /MediaThere is no /Media on…
Post #AWfNrxFtWvkwXRCLCK by [email protected]
0 likes, 0 repeats
Finally it checks the language (again!) and adds /Speech/$ThatLanguage to the s…
Post #AWfNwrWOHBaCCdFo7E by [email protected]
0 likes, 0 repeats
it's not my job to offer code reviews of 13 year old games but this seems l…
Post #AWfOK1z5XdmhJTj0DI by [email protected]
0 likes, 0 repeats
The answer for scripts at least is that they implemented PackageAppInterface::g…
Post #AWfOODzmpGpXiw3EOm by [email protected]
0 likes, 0 repeats
Maybe they do the same thing with movies. The movies are probably getting playe…
Post #AWfOSJqh0OTj2HkYUK by [email protected]
0 likes, 0 repeats
not that it matters in this case: Wheel of Fortune is a US-only game so the onl…
Post #AWfOjFRqcWUqJICXXU by [email protected]
0 likes, 0 repeats
but this same engine is used in a bunch of games, many of which presumably had …
Post #AWfP4QcuFqVJ3oTPZA by [email protected]
0 likes, 0 repeats
You wanna know the weirdest thing this game does with regards to loading bundle…
Post #AWfP8jUe3BXgjVf5G4 by [email protected]
0 likes, 0 repeats
SURPRISE! It's a ROM Bundle! Wait this is a game shipped on an optical disc…
Post #AWfPFSOi0hZHjr5jOq by [email protected]
0 likes, 0 repeats
well, ROM bundle just means that instead of a filename to mount, you give it a …
Post #AWfPFVAdhT62L5X2O0 by [email protected]
0 likes, 0 repeats
there's no code in the game to load the memory location it loads the system…
Post #AWfPSinGMTcwM2twnI by [email protected]
0 likes, 0 repeats
they embedded it into the executable. That bundle's memory is loaded by the…
Post #AWfPSlhhXbxdNfK32e by [email protected]
0 likes, 0 repeats
and this quickly gets really confusing because one of the first things the game…
Post #AWfPdbS00EgulZ8zrc by [email protected]
0 likes, 0 repeats
except that one isn't used, because it's also in the "ROM bundle&q…
Post #AWfPk9ruwyf5FWOQd6 by [email protected]
0 likes, 0 repeats
which frankly is an underrated anti-reversing technique. Have multiple copies o…
Post #AWfPkDqe9e1PajpTCi by [email protected]
0 likes, 0 repeats
anyway I don't think they were intentionally trying to make this hard to re…
Post #AWfPung1nbJNbluFjE by [email protected]
0 likes, 0 repeats
since you can't just look at the bundle files on disc and interpret what da…
Post #AWfQ8M1LQ9TZt8L8Zk by [email protected]
0 likes, 0 repeats
anyway, this is only vaguely related, but there needs to be a tool that helps t…
Post #AWfQDJGB72kum2dooq by [email protected]
0 likes, 0 repeats
like, use the dynamic debugging traces to do things like annotate functions wit…
Post #AWfQOPGJ8ZemZfzdXU by [email protected]
0 likes, 0 repeats
or click a function and see what arguments it has been called with in traces
Post #AWfREMd2AohJSuOleK by [email protected]
0 likes, 0 repeats
sadly the wii balance board support classes in the engine are just leftovers fr…
Post #AWfRlGXDqoBI7dMvoW by [email protected]
0 likes, 0 repeats
@foone theoretically, Ghidra has an embedded debugger now, but I haven't he…
Post #AWfRlGbTazaGKpMKRc by [email protected]
0 likes, 0 repeats
@impiaaa and it's unlikely to work when my target binary is for the Wii. I …
Post #AWfRw6YXIAWSMJ9T9s by [email protected]
0 likes, 0 repeats
@foone no so what you do is enable Dolphin's debugger, then connect to it f…
Post #AWfRw6dUziUabhTQtU by [email protected]
0 likes, 0 repeats
@impiaaa if only that would work(I have never gotten dolphin's remote GDB s…
Post #AWfS29xfXmReeqnKtc by [email protected]
0 likes, 0 repeats
although given my reverse engineering work, it's possible that I may one da…
Post #AWfS6IlqjUhB8cF1ea by [email protected]
0 likes, 0 repeats
man I'm used to weird padding in structures and strange gaps, but 14 kiloby…
Post #AWfSAzLgN3fgLjEjlg by [email protected]
0 likes, 0 repeats
the struct WiiControllerPack has, at offset 1480, an array of 4 KPADStatus stru…
Post #AWfSHpLJyFJdLOKR4S by [email protected]
0 likes, 0 repeats
that's 14,448 bytes of nothin'. or maybe, given that it's left out …
Post #AWfSdMpGg1VJGrbhaq by [email protected]
0 likes, 0 repeats
wait. the revolution SDK defines KPADStatus about how I'd expect but then i…
Post #AWfSsILVcDudiio0lk by [email protected]
0 likes, 0 repeats
no these all seem to be smallerwhat the fuck
Post #AWfSyqwPu6foklCDfE by [email protected]
0 likes, 0 repeats
this is the worst thing about reverse engineering.you pretty much never can ass…
Post #AWfSyu18T1EMIGQWw4 by [email protected]
0 likes, 0 repeats
no, there is A Reason why the compiler did this, and you are going to have to f…
Post #AWfUkCO859nupnIZWK by [email protected]
0 likes, 0 repeats
@foone aww; the balance board opened up so many buttock-controlled gaming optio…
Post #AWfUkCSNpLCt2zHy9Q by [email protected]
0 likes, 0 repeats
@scruss that's why god invented buttplug.io!
Post #AWfWOWYQclXIuquNLE by [email protected]
0 likes, 0 repeats
me "well at least I have a bunch of types from the debug files, so I can f…
Post #AWfWTRNJJAruIh3IrA by [email protected]
0 likes, 0 repeats
@foone fully convinced now that you’re going to find a real world example of …
Post #AWfWTUv680g5ILspRA by [email protected]
0 likes, 0 repeats
@cinebox @foone I wonder if any devs of licensed games ever thought of trying t…
Post #AWfWTUzLsC53VXsE4G by [email protected]
0 likes, 0 repeats
@jrandomhacker that does sound like a great way to get Nintendo to permanently …
Post #AWfXMlUKEIWebiiKzg by [email protected]
0 likes, 0 repeats
@foone There’s always A Reason. The reason may be stupid, and it may not be w…
Post #AWfXMoBeCCMqyezxnU by [email protected]
0 likes, 0 repeats
@colinpeters @foone A funny example from ocarina of time: https://github.com/ze…
Post #AWfXMoGFv43PCx9dyq by [email protected]
0 likes, 0 repeats
@MrCheeze @colinpeters heh. it wouldn't surprise me if the issue is somethi…
Post #AWfbKj1YoqneCeXhOC by [email protected]
0 likes, 0 repeats
I'm pretty sure this game had two programmers who each compiled 50% of the …
Post #AWfbQ9GOgoJT1y4IAC by [email protected]
0 likes, 0 repeats
seriously. I have complete info telling me that void WorldObject::updateVisRes(…
Post #AWfcNboCCdVOeCEKae by [email protected]
0 likes, 0 repeats
@foone Is it possible that they're sloppily reusing code from another game?…
Post #AWfcNbsRwouMrODjDk by [email protected]
0 likes, 0 repeats
@daviwil well it's an engine that was used in something like 12-40 games, s…
Post #AWfcctAxujPSr3AO3c by [email protected]
0 likes, 0 repeats
I think the only thing this compiler has ever inlined is vector.push_back()
Post #AWfcwdSg36rBuQrobA by [email protected]
0 likes, 0 repeats
which is great because it really aids clarity of reverse engineering that every…
Post #AWfduSzY6XySoRlwH2 by [email protected]
0 likes, 0 repeats
just after I say this, guess what I find, plain as day, in the disassembly?MVec…
Post #AWfe3MDme7ksQ9faSW by [email protected]
0 likes, 0 repeats
it's inlined earlier in this same functionwhat the fuck
Post #AWfeOSE1WF8b7fqFQe by [email protected]
0 likes, 0 repeats
either they REALLY wanted to specify that this class initializes all the floats…
Post #AWfeTiptBj885W45i4 by [email protected]
0 likes, 0 repeats
I'm not really sure how you accidently code a floating point number to have…
Post #AWfelufbvZ980HvoIK by [email protected]
0 likes, 0 repeats
yeah after some dynamic testing, I think the reason this particular WStaticMesh…
Post #AWfeuMnXEUpvYbfXOa by [email protected]
0 likes, 0 repeats
it probably got left in because 1. codewarrior is terrible at dead code elimina…
Post #AWffPqoPgtNpcb5nlo by [email protected]
0 likes, 0 repeats
fs_QuequeRemoveTHIRTEEN YEAR OLD TYPO SPOTTED
Post #AWffX55b0VJzvcZqka by [email protected]
0 likes, 0 repeats
@marcan wow, that's some Advanced Evil
Post #AWffxUYExjuYQVZLAe by [email protected]
0 likes, 0 repeats
bPrevIngoreNunchuckCOME ON NOW
Post #AWfg6KVhfDUftKb3IW by [email protected]
0 likes, 0 repeats
there is not much gore in Wheel of Fortune.they meant Ignore
Post #AWfgX5hmohuLnE0cxU by [email protected]
0 likes, 0 repeats
@foone The deeper you go into this game's accursed pot of spaghetti bologne…
Post #AWfgX5m2YtJK0Q01aa by [email protected]
0 likes, 0 repeats
@pmzeitler bold of you to assume I didn't start out that way
Post #AWfhFyzOdKbVzkeUHg by [email protected]
0 likes, 0 repeats
ptTargWorlda pointer to the Target, in World coordinates? or the best fun park …
Post #AWfiHtHouJUaqDk944 by [email protected]
0 likes, 0 repeats
arg. how is WTrackCam perfectly documented in the debug data, but the surroundi…
Post #AWfie8wbNAUXm2QgaG by [email protected]
0 likes, 0 repeats
oh because it's only created by the fucking scripting language!
Post #AWfieBit2cIsON2H7g by [email protected]
0 likes, 0 repeats
MY KINGDOM FOR A DAMN SPIGOT SCRIPTING ENGINE DISASSEMBLER
Post #AWfirlGeCO14OcIc0O by [email protected]
0 likes, 0 repeats
(I'm going to have to write it. Well, finish writing it)
Post #AWfjvUBZkaFkWwGbLs by [email protected]
0 likes, 0 repeats
the nice thing about having a scripting language is sometimes I'll see that…
Post #AWfk5NDYVp4RoauL2m by [email protected]
0 likes, 0 repeats
this is like 90% of what I've been doing for the last three months.I'm …
Post #AWfmYTSIbCqPT2o8qO by [email protected]
0 likes, 0 repeats
BAD PROGRAMMER.in ResourceLoadPacket::finalize, they have two for() loops neste…
Post #AWfn95rdH3u30y7QUC by [email protected]
0 likes, 0 repeats
if (this->nVersion == 262) { if (this != (PropertyBook *)0x0) { // do some…
Post #AWfqkSMyrTDZOLHzvs by [email protected]
0 likes, 0 repeats
@foone could be worse, didn’t the old versions of MSVC let you access variabl…
Post #AWfqkSQscyKxaR770i by [email protected]
0 likes, 0 repeats
@8_bit_brett Yeah! MSVC 6.0 used to interpret:for(int i=0;i<10;i++){}like yo…
Post #AWfr4ouyjkGt7Ety8O by [email protected]
0 likes, 0 repeats
love to spend a while looking through the code to try and understand how a vari…
Post #AWfrBOWdGLDtHseHpY by [email protected]
0 likes, 0 repeats
PFuncSymbol takes a final boolean parameter. What does it do? We don't real…
Post #AWfreWqbOsI5Unsjh2 by [email protected]
0 likes, 0 repeats
@foone it's already way too late at that point. Modern compilers would prob…
Post #AWfreWvD7jydj62PsO by [email protected]
0 likes, 0 repeats
@gracicot this isn't a modern compiler, however. it's codewarrior, and …
Post #AWfwRins8WVuaCJjbk by [email protected]
0 likes, 0 repeats
@foone I wonder if you can use the trace to substitute in constants and do DCE
Post #AWfwRis7shusnOJ8Eq by [email protected]
0 likes, 0 repeats
@bnut DCE?
Post #AWfy81hQN6vzIw2Ou0 by [email protected]
0 likes, 0 repeats
DW_OP_regx 0xffff?the variable is stored in numbered register 65535? something&…
Post #AWfyr8P2IN9b7rwi3s by [email protected]
0 likes, 0 repeats
pPVar2 = stack[-1]NO NEGATIVE INDICESTHIS IS C++
Post #AWfzaVkwJb6saOpQFE by [email protected]
0 likes, 0 repeats
basically the stack is defined as an array of pointers to PVariable*But they ch…
Post #AWfzq7m9F3FGqSq3WK by [email protected]
0 likes, 0 repeats
this is how some versions of new[] work in C++. but that's a compiler, not …
Post #AWfzqB0RENSUreY0i8 by [email protected]
0 likes, 0 repeats
this is C++. they could have just defined their stack as a class with two membe…
Post #AWg00MkgPmNaBo2Ltg by [email protected]
0 likes, 0 repeats
BUT NO, THE PROGRAMMERS HAD TO BE CLEVER
Post #AWg1aeAZEaREaW0YfA by [email protected]
0 likes, 0 repeats
@foone This isn’t decompiled code? Damn
Post #AWg1aeET05Ycmbpfk0 by [email protected]
0 likes, 0 repeats
@vi no, it is, but I have matching debug data so I have some insight into what …
Post #AWg1lfA9sgwCr24NLk by [email protected]
0 likes, 0 repeats
@foone you probably have a strong opinion on BSTR"A BSTR is a pointer. The…
Post #AWg1lfEPcsLB4E3lyq by [email protected]
0 likes, 0 repeats
@peturdainn yeah, I'm not a fan!
Post #AWguIQPT9GzqBCInSa by [email protected]
0 likes, 0 repeats
@foone how old is the game? Maybe only Stepanov knew how to use them.
Post #AWguIQUQqoxyQaclCC by [email protected]
0 likes, 0 repeats
@rogersm 2010. And they've already used STL (or an in-house clone) elsewher…
Post #AWh5KJyH9nlqHlgnwm by [email protected]
0 likes, 0 repeats
so there's 25 functions here which have the exact same bytes in their body.…
Post #AWh5KN3LhObxqN5Ols by [email protected]
0 likes, 0 repeats
they all are "pop the top value off the VM stack and static-cast it to a d…
Post #AWh5cNUYo1UAPwOt7o by [email protected]
0 likes, 0 repeats
I will never understand how and why CodeWarrior debugs the arguments to functio…
Post #AWh5cQBslvKMmsgVvc by [email protected]
0 likes, 0 repeats
and it's not like parameter 4 goes unused. It's clearly used in the fun…
Post #AWh6v9YGxW7YdgeZCC by [email protected]
0 likes, 0 repeats
line 1038 of E:\Build\WheelJeopardy\Parser\/PVMachine.cpp somehow declares two …
Post #AWh70jR8y00PNlyl7Y by [email protected]
0 likes, 0 repeats
@foone What's Parameter 0?
Post #AWh70jVOiBPNaxy9ke by [email protected]
0 likes, 0 repeats
@Globaltom that's the hidden this pointer
Post #AWh7dKHIRN0WeCmBVI by [email protected]
0 likes, 0 repeats
you've heard of the Single Instruction Computer? Well make way for the Sing…
Post #AWh8DTTrhbclc8tMiu by [email protected]
0 likes, 0 repeats
artists depiction of a programmer trying to instrument tracing into the game&#3…
Post #AWh8j0O7P5eceSEsgi by [email protected]
0 likes, 0 repeats
I ran the game for 10 seconds. 4 seconds of blank screen, 6 seconds of the &quo…
Post #AWh8r0Htf1OMen8uqu by [email protected]
0 likes, 0 repeats
@foone If R27 is infinitely large, you can technically build a turing machine t…
Post #AWh8r0MVNt4ut5Ib2G by [email protected]
0 likes, 0 repeats
@moony given that my name is Foone Turing, all machines I build are Turing Mach…
Post #AWh9AqWdfM1qAhV3b6 by [email protected]
0 likes, 0 repeats
there are only two major problems in reverse engineering:1. not enough data2. t…
Post #AWh9LYq5lO7uVJhy6a by [email protected]
0 likes, 0 repeats
and that's with only one VM! This game supports multiple concurrent VMs exe…
Post #AWh9Lbu6Mw7I0cbiGu by [email protected]
0 likes, 0 repeats
guess I just have to write a log parser for dolphin to extract out execution tr…
Post #AWhALvBMnAFnkpOY08 by [email protected]
0 likes, 0 repeats
yeah that seems reasonable
Post #AWhAU1AgPPzEe4w5dA by [email protected]
0 likes, 0 repeats
@foone and 16bit segmented addressing software *hisses* 😾… then again, tha…
Post #AWhAU1FI8HfmsN5loW by [email protected]
0 likes, 0 repeats
@manawyrm GOD YESI was totally trying to think of a joke 3rd thing to put in, b…
Post #AWhAvItUclapQjuFkG by [email protected]
0 likes, 0 repeats
I may have figured out why function parameters sometimes get elided:I think it …
Post #AWhB2grBvft5mELskC by [email protected]
0 likes, 0 repeats
@foone like — damn it, why did I have to be born in the 16bit era and have al…
Post #AWhB2gvneXZe0WVYvY by [email protected]
0 likes, 0 repeats
@manawyrm exactly. if I just focused on 32bit and up I would be SO much happier…
Post #AWhE7wk6as2GM8Ef0C by [email protected]
0 likes, 0 repeats
NOPE! found a function with a const char* and it's included.whatta hell
Post #AWhEXbdjfxHiR6UXSa by [email protected]
0 likes, 0 repeats
but it calls a different function with the same arguments, and the const char* …
Post #AWhEXey3IsJokz1J2m by [email protected]
0 likes, 0 repeats
I'm gonna have to reverse engineer codewarrior next and see if there's …
Post #AWhGFQIJJrZtwbvZSa by [email protected]
0 likes, 0 repeats
I can find event A: a new VM is createdevent B: a script is loaded into the VMe…
Post #AWhHBYKjaWwzfmmObA by [email protected]
0 likes, 0 repeats
OH IT'S GOT BASTARD CACHINGit loads the script, creates a VM for it, then d…
Post #AWhJnmx7slwpvU64q8 by [email protected]
0 likes, 0 repeats
no it's mostly got "foone forgot the difference between a pointer and …
Post #AWhJuvWWPktEXG3aNM by [email protected]
0 likes, 0 repeats
I've got to dump a stack in a "language" that's not turing co…
Post #AWhLRVUqIrphKAN2sy by [email protected]
0 likes, 0 repeats
@fooneWhen you say it's not "Turing complete"...Is this the tradi…
Post #AWhLRVZS1jWFYSWj4K by [email protected]
0 likes, 0 repeats
@thanevim BOTH
Post #AWhLXqbqibx2Xhfgrw by [email protected]
0 likes, 0 repeats
never underestimate the power of loop unrolling and pointless logging
Post #AWhLjbhjxcp3n52BlI by [email protected]
0 likes, 0 repeats
help I ran the game for 45 seconds and I now have 2.8 gigabytes of logs
Post #AWhMQS75UpFMUpJw12 by [email protected]
0 likes, 0 repeats
@millions I think that might actually end up being smaller, given that for most…
Post #AWigt5vTGAIgK3mXJo by [email protected]
0 likes, 0 repeats
@foone but but but memory!Though you could use C99 flexible arrays for that so …
Post #AWigt5zj0LheXFlvwu by [email protected]
0 likes, 0 repeats
@mirabilos not sure a version of codewarrior this old even supports c99 feature…
Post #AWihLaCuGhZcLXWOg4 by [email protected]
0 likes, 0 repeats
@mirabilos also judging by the rest of this program, they were not super worrie…
Post #AWihqQILAjzsa4ljbE by [email protected]
0 likes, 0 repeats
@foone issue closed: expected behaviour, just buy a bigger drive.
Post #AWihqQMauvOqnGl8EK by [email protected]
0 likes, 0 repeats
@tr7zw I recently did a project where I scanned every Wii game for misplaced fi…
Post #AWikJTsb7gCI0NiB16 by [email protected]
0 likes, 0 repeats
@tr7zw @foone download mor rams tbh
Post #AWikJTwqrrbGDZhZeC by [email protected]
0 likes, 0 repeats
@jeff @tr7zw counterpoint: I have 64gb in my desktop, specifically because I&#3…
You are viewing proxied material from pleroma.anduin.net. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.