From 61e1f79238a8d282e9322619d6027bd7e5e462a9 Mon Sep 17 00:00:00 2001 From: Treeki Date: Sun, 8 May 2011 02:55:31 +0200 Subject: initial untested Switch Block implementation --- src/switchblock.S | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/switchblock.S (limited to 'src') diff --git a/src/switchblock.S b/src/switchblock.S new file mode 100644 index 0000000..f219ee4 --- /dev/null +++ b/src/switchblock.S @@ -0,0 +1,72 @@ +.text + +#ifndef __MWERKS__ +.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 +#endif + +.align 4 +.extern GameMgr +.extern BG_GM_ptr + +.global BG_GM_InitRedSwitchFlag_Patch +BG_GM_InitRedSwitchFlag_Patch: + lis r5, GameMgr@h + ori r5, r5, GameMgr@l + lwz r5, 0(r5) + + addis r4, r3, 9 + lbz r0, 0x380(r5) + stb r0, 0xAA8(r4) + blr + +.global ProcessTileNum_EndPatch +ProcessTileNum_EndPatch: + lis r5, BG_GM_ptr@h + ori r5, r5, BG_GM_ptr@l + lwz r5, 0(r5) + addis r5, r5, 9 + lbz r5, 0xAA8(r3) + + cmplwi r30, 0x58 + bne not_red + andi. r3, r5, 1 + beq not_red + li r3, 0x57 + b ptnReturn +not_red: + cmplwi r30, 0x5A + bne not_green + andi. r3, r5, 2 + beq not_green + li r3, 0x59 + b ptnReturn +not_green: + cmplwi r30, 0x56 + bne not_yellow + andi. r3, r5, 4 + beq not_yellow + li r3, 0x55 + b ptnReturn +not_yellow: + cmplwi r30, 0x54 + bne not_blue + andi. r3, r5, 8 + beq not_blue + li r3, 0x53 + b ptnReturn +not_blue: + mr r3, r30 +ptnReturn: + lwz r0, 0x14(r1) + lwz r31, 0xC(r1) + lwz r30, 0x8(r1) + mtlr r0 + addi sp, sp, 0x10 + blr + -- cgit v1.2.3