# Original code by Ralf @ GC-Forever and Aleron Ives # https://www.gc-forever.com/forums/viewtopic.php?t=2050 # https://www.gc-forever.com/forums/viewtopic.php?t=2049 .meta visibility="all" .meta name="Blinking SD" .meta description="Makes the Shifta\nand Deband status\nicons flicker when\nthey are about\nto run out" entry_ptr: reloc0: .offsetof start start: .include WriteCodeBlocks .versions 3OJ2 3OJ3 3OJ4 3OJ5 3OE0 3OE1 3OE2 3OP0 .data 0x8000B86C .data 0x00000054 .address 0x8000B86C code_start: mr r3, r0 andi. r0, r31, 2 beqlr lwz r4, [r3 + 0x0028] cmplwi r4, 0 beqlr lwz r4, [r4] cmplwi r4, 0 beqlr mulli r0, r31, 12 add r5, r29, r0 lwz r6, [r5 + 0x025C] cmplwi r6, 450 bge full_intensity lbz r6, [r4 + 0x002C] subi r6, r6, 0x0008 cmpwi r6, 0 bge not_full_intensity full_intensity: li r6, 0x00FF not_full_intensity: stb [r4 + 0x002C], r6 blr code_end: .data .data 4 .address bl code_start .versions 4OJB 4OJD 4OJU 4OED 4OEU 4OPD 4OPU .data .data 5 .binary .data .deltaof code_start, code_end code_start: push eax mov ecx, [esp + 0x20] test cl, 0x02 # Slot 2 or 3 jz skip mov eax, [eax + 0x28] test eax, eax jz skip mov eax, [eax] test eax, eax jz skip mov edx, [esp + 0x24] # client ID mov edx, dword [ + edx * 4] imul ecx, ecx, 0x0C mov edx, [edx + ecx + 0x264] cmp edx, 450 jb decr_alpha mov byte [eax + 0x002F], 0xFF jmp skip decr_alpha: xor edx, edx lea ecx, [edx - 1] mov dl, [eax + 0x002F] sub edx, 8 cmovl edx, ecx mov [eax + 0x002F], dl skip: pop eax pop edx lea ecx, [edx + 0x20] cmp dword [eax + 0x6C], ebp cmovz edx, ecx jmp edx code_end: .all_versions .data 0 .data 0