MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / Camera_Speed_Update_From_PanTarget

Method Camera_Speed_Update_From_PanTarget

Source/Fodder.cpp:1558–1632  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1556}
1557
1558void 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;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected