From 09d075c5469f64f500de70123bbb1042315d7ac0 Mon Sep 17 00:00:00 2001 From: Colin Noga Date: Sat, 23 Jul 2011 11:47:43 -0500 Subject: Added Crowd clapper. Changed everything to LF only. If anyone on Windows tries to read the code now, they will be faced with a single impenetrable line! --- src/layoutlib.S | 262 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 131 insertions(+), 131 deletions(-) (limited to 'src/layoutlib.S') diff --git a/src/layoutlib.S b/src/layoutlib.S index 2fae70a..96c69cb 100644 --- a/src/layoutlib.S +++ b/src/layoutlib.S @@ -1,131 +1,131 @@ -.extern LayoutHelper_Link - -#ifndef __MWERKS__ -.extern _Z8LoadFileP10FileHandlePc -.extern _Z8FreeFileP10FileHandle -#define LoadFileFunc _Z8LoadFileP10FileHandlePc -#define FreeFileFunc _Z8FreeFileP10FileHandle -.set r0,0; .set r1,1; .set r2,2; .set r3,3; .set r4,4 -.set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9 -.set r10,10; .set r11,11; .set r12,12; .set r13,13; .set r14,14 -.set r15,15; .set r16,16; .set r17,17; .set r18,18; .set r19,19 -.set r20,20; .set r21,21; .set r22,22; .set r23,23; .set r24,24 -.set r25,25; .set r26,26; .set r27,27; .set r28,28; .set r29,29 -.set r30,30; .set r31,31; .set f0,0; .set f2,2; .set f3,3 -#else -.extern LoadFile__FP10FileHandlePCc -.extern FreeFile__FP10FileHandle -#define LoadFileFunc LoadFile__FP10FileHandlePCc -#define FreeFileFunc FreeFile__FP10FileHandle -#endif - -.text - -.set sp,1 -.set rtoc,2 -.set this,31 - - - - -.global EmbeddedLayout_LoadArc -EmbeddedLayout_LoadArc: - # stack setup - stwu sp, -0x20(sp) - mflr r0 - stw r0, 0x24(sp) - stw r31, 0x1C(sp) - stw r30, 0x18(sp) - - # r31 is a pointer to the LayoutHelper (must be converted) - # r30 stores the filename - addi r31, r3, 0xAC - mr r30, r4 - - # check to see if an arc has already been loaded - lwz r0, 0xBC(r3) - cmpwi r0, 0 - bne return_0 - - # ok, no - # create a FileHandle where a NSMBWFile would be - # don't know if this will work but it's worth a try - addi r3, r31, 0xC0 - mr r4, r30 - bl LoadFileFunc - - # check retval - cmpwi r3, 0 - stw r3, 0xBC(r31) - beq return_0 - - # link it - mr r4, r3 - mr r3, r31 - lis r5, arcString@h - ori r5, r5, arcString@l - bl LayoutHelper_Link - - # now add a pointer to the LayoutHelper into the Layout at offset 0x84 - # turn r3 into an EmbeddedLayout pointer - subi r3, r31, 0xAC - stw r31, 0x84(r3) - - b return_1 - -return_0: - li r3, 0 - b return - -return_1: - li r3, 1 - -return: - lwz r30, 0x18(sp) - lwz r31, 0x1C(sp) - lwz r0, 0x24(sp) - mtlr r0 - addi sp, sp, 0x20 - blr - -.align 4 - -.global EmbeddedLayout_FreeArc -EmbeddedLayout_FreeArc: - # stack setup - stwu sp, -0x10(sp) - mflr r0 - stw r0, 0x14(sp) - stw r31, 0xC(sp) - - # r31 is a pointer to the LayoutHelper (must be converted) - addi r31, r3, 0xAC - - # - if an arc has been loaded, then free the NSMBWFile - lwz r0, 0xBC(r3) - cmpwi r0, 0 - beq xreturn_1 - - # no, so free it - addi r3, r31, 0xC0 - bl FreeFileFunc - - li r3, 0 - stw r3, 0xBC(r31) - -xreturn_1: - li r3, 1 - lwz r31, 0xC(sp) - lwz r0, 0x14(sp) - mtlr r0 - addi sp, sp, 0x10 - blr - - - -.data -arcString: - .string "arc" - -.align 4 - +.extern LayoutHelper_Link + +#ifndef __MWERKS__ +.extern _Z8LoadFileP10FileHandlePc +.extern _Z8FreeFileP10FileHandle +#define LoadFileFunc _Z8LoadFileP10FileHandlePc +#define FreeFileFunc _Z8FreeFileP10FileHandle +.set r0,0; .set r1,1; .set r2,2; .set r3,3; .set r4,4 +.set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9 +.set r10,10; .set r11,11; .set r12,12; .set r13,13; .set r14,14 +.set r15,15; .set r16,16; .set r17,17; .set r18,18; .set r19,19 +.set r20,20; .set r21,21; .set r22,22; .set r23,23; .set r24,24 +.set r25,25; .set r26,26; .set r27,27; .set r28,28; .set r29,29 +.set r30,30; .set r31,31; .set f0,0; .set f2,2; .set f3,3 +#else +.extern LoadFile__FP10FileHandlePCc +.extern FreeFile__FP10FileHandle +#define LoadFileFunc LoadFile__FP10FileHandlePCc +#define FreeFileFunc FreeFile__FP10FileHandle +#endif + +.text + +.set sp,1 +.set rtoc,2 +.set this,31 + + + + +.global EmbeddedLayout_LoadArc +EmbeddedLayout_LoadArc: + # stack setup + stwu sp, -0x20(sp) + mflr r0 + stw r0, 0x24(sp) + stw r31, 0x1C(sp) + stw r30, 0x18(sp) + + # r31 is a pointer to the LayoutHelper (must be converted) + # r30 stores the filename + addi r31, r3, 0xAC + mr r30, r4 + + # check to see if an arc has already been loaded + lwz r0, 0xBC(r3) + cmpwi r0, 0 + bne return_0 + + # ok, no + # create a FileHandle where a NSMBWFile would be + # don't know if this will work but it's worth a try + addi r3, r31, 0xC0 + mr r4, r30 + bl LoadFileFunc + + # check retval + cmpwi r3, 0 + stw r3, 0xBC(r31) + beq return_0 + + # link it + mr r4, r3 + mr r3, r31 + lis r5, arcString@h + ori r5, r5, arcString@l + bl LayoutHelper_Link + + # now add a pointer to the LayoutHelper into the Layout at offset 0x84 + # turn r3 into an EmbeddedLayout pointer + subi r3, r31, 0xAC + stw r31, 0x84(r3) + + b return_1 + +return_0: + li r3, 0 + b return + +return_1: + li r3, 1 + +return: + lwz r30, 0x18(sp) + lwz r31, 0x1C(sp) + lwz r0, 0x24(sp) + mtlr r0 + addi sp, sp, 0x20 + blr + +.align 4 + +.global EmbeddedLayout_FreeArc +EmbeddedLayout_FreeArc: + # stack setup + stwu sp, -0x10(sp) + mflr r0 + stw r0, 0x14(sp) + stw r31, 0xC(sp) + + # r31 is a pointer to the LayoutHelper (must be converted) + addi r31, r3, 0xAC + + # - if an arc has been loaded, then free the NSMBWFile + lwz r0, 0xBC(r3) + cmpwi r0, 0 + beq xreturn_1 + + # no, so free it + addi r3, r31, 0xC0 + bl FreeFileFunc + + li r3, 0 + stw r3, 0xBC(r31) + +xreturn_1: + li r3, 1 + lwz r31, 0xC(sp) + lwz r0, 0x14(sp) + mtlr r0 + addi sp, sp, 0x10 + blr + + + +.data +arcString: + .string "arc" + +.align 4 + -- cgit v1.2.3