diff options
author | scnorton <scnorton@biociphers.org> | 2017-06-20 11:57:29 -0400 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2017-06-20 11:57:29 -0400 |
commit | fc175709153e9b9d2c0ef3fc16e02a5179325cb9 (patch) | |
tree | cb9ed60713ce0f203697a7ad5742c8de86c8bbc5 | |
parent | 36b2378f1536dd2c7055ad31f62720a32b5d66bc (diff) |
PCTurnOffEffect
-rwxr-xr-x | asm/field_specials.s | 88 | ||||
-rwxr-xr-x | src/field_specials.c | 47 |
2 files changed, 47 insertions, 88 deletions
diff --git a/asm/field_specials.s b/asm/field_specials.s index 4cd371744..abc8b53c9 100755 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -6,94 +6,6 @@ .text - thumb_func_start DoPCTurnOffEffect -DoPCTurnOffEffect: @ 810E59C - push {lr} - bl PCTurnOffEffect - pop {r0} - bx r0 - thumb_func_end DoPCTurnOffEffect - - thumb_func_start PCTurnOffEffect -PCTurnOffEffect: @ 810E5A8 - push {r4-r6,lr} - movs r6, 0 - movs r5, 0 - movs r4, 0 - bl player_get_direction_lower_nybble - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x3 - beq _0810E5D2 - cmp r0, 0x3 - bgt _0810E5C8 - cmp r0, 0x2 - beq _0810E5CE - b _0810E5DA -_0810E5C8: - cmp r1, 0x4 - beq _0810E5D6 - b _0810E5DA -_0810E5CE: - movs r6, 0 - b _0810E5D8 -_0810E5D2: - movs r6, 0xFF - b _0810E5D8 -_0810E5D6: - movs r6, 0x1 -_0810E5D8: - movs r5, 0xFF -_0810E5DA: - ldr r0, _0810E5E8 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - bne _0810E5EC - movs r4, 0x4 - b _0810E5FE - .align 2, 0 -_0810E5E8: .4byte gSpecialVar_0x8004 -_0810E5EC: - cmp r0, 0x1 - bne _0810E5F8 - ldr r4, _0810E5F4 @ =0x0000025a - b _0810E5FE - .align 2, 0 -_0810E5F4: .4byte 0x0000025a -_0810E5F8: - cmp r0, 0x2 - bne _0810E5FE - ldr r4, _0810E630 @ =0x00000259 -_0810E5FE: - ldr r2, _0810E634 @ =gSaveBlock1 - movs r1, 0 - ldrsh r0, [r2, r1] - lsls r1, r6, 24 - asrs r1, 24 - adds r0, r1 - adds r0, 0x7 - movs r3, 0x2 - ldrsh r1, [r2, r3] - lsls r2, r5, 24 - asrs r2, 24 - adds r1, r2 - adds r1, 0x7 - movs r3, 0xC0 - lsls r3, 4 - adds r2, r3, 0 - orrs r4, r2 - adds r2, r4, 0 - bl MapGridSetMetatileIdAt - bl DrawWholeMapView - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0810E630: .4byte 0x00000259 -_0810E634: .4byte gSaveBlock1 - thumb_func_end PCTurnOffEffect - thumb_func_start DoLotteryCornerComputerEffect DoLotteryCornerComputerEffect: @ 810E638 push {r4,lr} diff --git a/src/field_specials.c b/src/field_specials.c index 3bf3b3628..15b5b7631 100755 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -745,6 +745,7 @@ void FieldShowRegionMap(void) static void Task_PCTurnOnEffect(u8); static void PCTurnOffEffect_0(struct Task *); static void PCTurnOffEffect_1(s16, s8, s8); +static void PCTurnOffEffect(void); void DoPCTurnOnEffect(void) { @@ -842,3 +843,49 @@ static void PCTurnOffEffect_1(s16 flag, s8 dx, s8 dy) } MapGridSetMetatileIdAt(gSaveBlock1.pos.x + dx + 7, gSaveBlock1.pos.y + dy + 7, tileId | 0xc00); } + +void DoPCTurnOffEffect(void) +{ + PCTurnOffEffect(); +} + +static void PCTurnOffEffect(void) +{ + u16 tileId; + s8 dx, dy; + u8 playerDirectionLowerNybble; + + dx = 0; + dy = 0; + tileId = 0; + playerDirectionLowerNybble = player_get_direction_lower_nybble(); + switch (playerDirectionLowerNybble) + { + case DIR_NORTH: + dx = 0; + dy = -1; + break; + case DIR_WEST: + dx = -1; + dy = -1; + break; + case DIR_EAST: + dx = 1; + dy = -1; + break; + } + if (gSpecialVar_0x8004 == 0) + { + tileId = 0x4; + } + else if (gSpecialVar_0x8004 == 1) + { + tileId = 0x25a; + } + else if (gSpecialVar_0x8004 == 2) + { + tileId = 0x259; + } + MapGridSetMetatileIdAt(gSaveBlock1.pos.x + dx + 7, gSaveBlock1.pos.y + dy + 7, tileId | 0xc00); + DrawWholeMapView(); +} |