# 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 key="EnemyHPBars" .meta name="Enemy HP bars" .meta description="Shows HP bars in\nenemy info windows" .versions 3OJ2 3OJ3 3OJ4 3OJ5 3OE0 3OE1 3OE2 3OP0 entry_ptr: reloc0: .offsetof start start: .include WriteCodeBlocks .label hook_addr, 0x8000B650 .label sprintf, .data hook_addr .deltaof hooks_start, hooks_end .address hook_addr hooks_start: hook1: lis r5, 0x8001 lwz r3, [r5 - 0x4944] mr r30, r31 lha r6, [r30 + 0x032C] b entry_merge hook2: lha r6, [r30 + 0x02B8] lis r5, 0x8001 stw [r5 - 0x4944], r3 entry_merge: mflr r0 stw [r5 - 0x4940], r0 mr r5, r3 lha r7, [r30 + 0x02B8] lis r4, 0x8000 ori r4, r4, 0xB6AC # r4 = &hp_format_str addi r3, r4, 0x0018 # r3 = dest buffer crxor crb6, crb6, crb6 bl sprintf lis r4, 0x8000 ori r4, r4, 0xB6C4 mr r3, r28 lwz r0, [r4 - 0x0004] mtlr r0 blr hp_format_str: .binary "%s\n\nHP:%d/%d"00000000 hooks_end: .label hook1_call, .data hook1_call .data 0x00000004 .address hook1_call bl hook1 .label flag_clear_call, .data flag_clear_call .data 0x00000004 .address flag_clear_call bl [] .label hook2_call, .data hook2_call .data 0x00000004 .address hook2_call bl hook2 .data .data 0x00000004 .float 75 .data .data 0x00000004 .float 75 .data .data 0x00000004 .float 75 .data .data 0x00000004 .float 75 .data .data 0x00000004 .float 75 .data .data 0x00000004 .float 75 .data .data 0x00000004 .float 75 .data .data 0x00000004 .float 62 .data .data 0x00000004 .data 0xFF00FF15 .data .data 0x00000004 .float 96 .data 0x00000000 .data 0x00000000