Skip to content

Instantly share code, notes, and snippets.

View ashquarky's full-sized avatar
🦊
???

Ash ashquarky

🦊
???
View GitHub Profile
@ashquarky
ashquarky / concept.nqpp.c
Created September 14, 2016 22:55
A concept for Not Quite PowerPC; a C-style language to help people learn PowerPC Assembly
#global main
/*int main(int argc, char** argv)*/
main:
//save link register
r0 = lr;
*8(r1) = r0;
compare(lw, r3, 0); //r3 = argc; comparing a logical word (lw)
ifgt { // if r3 > 0...
r3 = *2(r4); //load memory at argv+2 into r3
@ashquarky
ashquarky / SwkbdCreate.cpp
Created August 29, 2016 04:52
A horribly unfinished reverse-engineering of SwkbdCreate, let us never speak of this until I finish it
namespace Rpl {
#define MYSTERY_DATA_LOC (unsigned char*)0x10049E38
#define MUTEX_LOC (unknown datatype*)0x1004D294
#define FIBER_LOC (unknown datatype*)0x10054CBC
void SwkbdCreate(unsigned char* a, nn::swkbd::RegionType b, unsigned int c, FSClient* d) {
OSThread* thread = OSGetCurrentThread();
int stackSize = ADDZE(SRAWI(thread->stackEnd - thread->stackBase, 0xA)); //Doesn't really matter anyway
@ashquarky
ashquarky / OSScreenSetBufferEx.c
Created August 9, 2016 23:01
Quick reverse-engineering of OSScreenSetBufferEx. 5.5.1.
int globalVar; //This could be anything, likely a struct?
//Feels like a stack pointer.
//unk_10098EB4
void OSScreenSetBufferEx(int bufferNum, void* address) {
int r0 = bufferNum << 6; //32-Bit left shift
int* r11 = globalVar + r0;
int r12 = *(r11 + 0x2C);
*(r11 + 0x38) = address;
@ashquarky
ashquarky / iosuaccess.c
Last active August 5, 2016 02:23
My reverse-engineering of a certain ELF thrown at me
void (*mystery_func)(int a, int b); //Pointer, OSDynLoad?
void (*mystery_func2)(void*)
void another_mystery(void* a, void* b, int c, int d); //Built in to app
void possible_init_func(...); //Built in, a few bits missing
void yet_another_func(int possibly_not_used);
int ret, var1, var2, var3, var4; //var3 and var2 have not been set in this function before they are used, var4 isn't actually in memory
var1 = 0; //var1 might be global