| 1556 | } |
| 1557 | |
| 1558 | void cFodder::Camera_Speed_Update_From_PanTarget() { |
| 1559 | int16 Data4 = mCamera_PanTargetY - (getCameraHeight() - 8) / 2; |
| 1560 | if (Data4 < 0) |
| 1561 | Data4 = 0; |
| 1562 | |
| 1563 | int16 Data0 = mCamera_PanTargetX - (getCameraWidth() / 2) + 8; |
| 1564 | if (Data0 < 0) |
| 1565 | Data0 = 0; |
| 1566 | |
| 1567 | int16 Data8 = mCameraX >> 16; |
| 1568 | int16 DataC = mCameraY >> 16; |
| 1569 | |
| 1570 | int16 PanTargetX = Data0; |
| 1571 | int16 PanTargetY = Data4; |
| 1572 | int16 CameraX = Data8; |
| 1573 | int16 CameraY = DataC; |
| 1574 | |
| 1575 | Map_Get_Distance_BetweenPoints_Within_Window(Data0, Data4, Data8, DataC); |
| 1576 | if (Data0 > 0x10) { |
| 1577 | Data4 = mCamera_Scroll_Speed; |
| 1578 | |
| 1579 | if (Data4 <= (dword_39F36 >> 16)) { |
| 1580 | dword_39F36 = (Data4 << 16) | (dword_39F36 & 0xFFFF); |
| 1581 | } |
| 1582 | else { |
| 1583 | dword_39F36 += 0x8000; |
| 1584 | } |
| 1585 | } |
| 1586 | else { |
| 1587 | dword_39F36 = Data0 << 16; |
| 1588 | } |
| 1589 | |
| 1590 | DataC = CameraY; |
| 1591 | Data8 = CameraX; |
| 1592 | Data4 = PanTargetY; |
| 1593 | Data0 = PanTargetX; |
| 1594 | |
| 1595 | if (sub_119E1(Data0, Data4, Data8, DataC) >= 0) { |
| 1596 | |
| 1597 | Data0 &= 0x1FE; |
| 1598 | if (!dword_39F36) |
| 1599 | return; |
| 1600 | Data4 = Data0; |
| 1601 | |
| 1602 | Data8 = mDirectionVectorTable[Data4 / 2]; |
| 1603 | Data4 += 0x80; |
| 1604 | Data4 &= 0x1FE; |
| 1605 | |
| 1606 | DataC = mDirectionVectorTable[Data4 / 2]; |
| 1607 | Data8 >>= 2; |
| 1608 | DataC >>= 2; |
| 1609 | |
| 1610 | //seg000:197D |
| 1611 | int32 Dataa8 = (int32)Data8; |
| 1612 | int32 DataaC = (int32)DataC; |
| 1613 | |
| 1614 | Data4 = (dword_39F36 >> 16); |
| 1615 | Dataa8 *= Data4; |
nothing calls this directly
no outgoing calls
no test coverage detected