Skip to content

Commit 8835114

Browse files
committed
Fixed VDU snow.
1 parent 3f734d4 commit 8835114

File tree

9 files changed

+1592
-0
lines changed

9 files changed

+1592
-0
lines changed

dist/wcdx/idl/iwcdx.idl

+2
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,6 @@ interface IWcdx : IUnknown
5353

5454
HRESULT QueryValue([in, string] const wchar_t* keyname, [in, string] const wchar_t* valuename, [out, size_is(*size)] void* data, [in, out, ref] DWORD* size);
5555
HRESULT SetValue([in, string] const wchar_t* keyname, [in, string] const wchar_t* valuename, DWORD type, [in, size_is(size)] const void* data, DWORD size);
56+
57+
HRESULT FillSnow(byte color_index, INT x, INT y, UINT width, UINT height, UINT pitch, [out, size_is(height * pitch)] byte* pixels);
5658
}

dist/wcdx/src/wcdx.cpp

+16
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include <algorithm>
1414
#include <iterator>
1515
#include <limits>
16+
#include <random>
1617
#include <system_error>
1718

1819
#include <io.h>
@@ -38,6 +39,8 @@ namespace
3839
HRESULT GetLocalAppDataPath(LPCWSTR subdir, LPWSTR path);
3940

4041
bool CreateDirectoryRecursive(LPWSTR pathName);
42+
43+
std::independent_bits_engine<std::mt19937, 1, unsigned int> RandomBit(std::random_device{}());
4144
}
4245

4346
WCDXAPI IWcdx* WcdxCreate(LPCWSTR windowTitle, WNDPROC windowProc, BOOL _fullScreen)
@@ -556,6 +559,19 @@ HRESULT STDMETHODCALLTYPE Wcdx::SetValue(const wchar_t* keyname, const wchar_t*
556559
return HRESULT_FROM_WIN32(error);
557560
}
558561

562+
HRESULT STDMETHODCALLTYPE Wcdx::FillSnow(byte color_index, INT x, INT y, UINT width, UINT height, UINT pitch, byte* pixels)
563+
{
564+
for (UINT h = 0; h != height; ++h)
565+
{
566+
auto p = pixels + (y * pitch) + x;
567+
for (UINT w = 0; w != width; ++w)
568+
*p++ = byte(RandomBit() * color_index);
569+
++y;
570+
}
571+
572+
return S_OK;
573+
}
574+
559575
ATOM Wcdx::FrameWindowClass()
560576
{
561577
static const ATOM windowClass = []

dist/wcdx/src/wcdx.h

+2
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ class Wcdx : public IWcdx
6363
HRESULT STDMETHODCALLTYPE QueryValue(const wchar_t* keyname, const wchar_t* valuename, void* data, DWORD* size) override;
6464
HRESULT STDMETHODCALLTYPE SetValue(const wchar_t* keyname, const wchar_t* valuename, DWORD type, const void* data, DWORD size) override;
6565

66+
HRESULT STDMETHODCALLTYPE FillSnow(byte color_index, INT x, INT y, UINT width, UINT height, UINT pitch, byte* pixels) override;
67+
6668
private:
6769
static ATOM FrameWindowClass();
6870
static LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);

dist/wcpatch/res/SM1.dif

+272
Original file line numberDiff line numberDiff line change
@@ -1473,6 +1473,278 @@ SM1_pre.EXE
14731473
000000000005ECDD: 45 C8
14741474
000000000005ECDE: D8 90
14751475
000000000005ECE1: C0 C4
1476+
0000000000060829: 53 83
1477+
000000000006082A: 56 EC
1478+
000000000006082B: 57 28
1479+
000000000006082C: 8B 53
1480+
000000000006082D: 45 56
1481+
000000000006082E: 08 57
1482+
0000000000060830: 0D 5D
1483+
0000000000060831: F0 08
1484+
0000000000060832: 4A 8B
1485+
0000000000060833: 61 03
1486+
0000000000060834: 00 3B
1487+
0000000000060835: 39 05
1488+
0000000000060836: 08 F0
1489+
0000000000060837: 0F 4A
1490+
0000000000060838: 85 61
1491+
0000000000060839: 05 00
1492+
000000000006083A: 00 74
1493+
000000000006083B: 00 0E
1494+
000000000006083C: 00 FF
1495+
000000000006083D: E8 75
1496+
000000000006083E: DF 10
1497+
000000000006083F: 0C 53
1498+
0000000000060840: FA E8
1499+
0000000000060841: FF BB
1500+
0000000000060842: 68 00
1501+
0000000000060843: 64 00
1502+
0000000000060844: 05 00
1503+
0000000000060845: 4B 83
1504+
0000000000060846: 00 C4
1505+
0000000000060847: E8 08
1506+
0000000000060848: D3 EB
1507+
0000000000060849: FF 6D
1508+
000000000006084A: F9 E8
1509+
000000000006084B: FF D2
1510+
000000000006084C: 83 0C
1511+
000000000006084D: C4 FA
1512+
000000000006084E: 04 FF
1513+
000000000006084F: E9 8D
1514+
0000000000060850: 00 45
1515+
0000000000060851: 00 EC
1516+
0000000000060852: 00 50
1517+
0000000000060853: 00 8D
1518+
0000000000060854: 5F 45
1519+
0000000000060855: 5E D8
1520+
0000000000060856: 5B 50
1521+
0000000000060857: C9 53
1522+
0000000000060858: C3 E8
1523+
0000000000060859: CC 99
1524+
000000000006085A: CC D4
1525+
000000000006085B: CC FF
1526+
000000000006085C: CC FF
1527+
000000000006085D: CC 83
1528+
000000000006085E: CC C4
1529+
000000000006085F: CC 0C
1530+
0000000000060860: CC 8B
1531+
0000000000060861: CC 4D
1532+
0000000000060862: CC 0C
1533+
0000000000060863: CC 85
1534+
0000000000060864: CC C9
1535+
0000000000060865: CC 74
1536+
0000000000060866: CC 50
1537+
0000000000060867: CC 49
1538+
0000000000060868: CC 89
1539+
0000000000060869: CC 4D
1540+
000000000006086A: CC 0C
1541+
000000000006086B: CC FF
1542+
000000000006086C: CC 75
1543+
000000000006086D: CC 10
1544+
000000000006086E: CC 53
1545+
000000000006086F: CC E8
1546+
0000000000060870: CC 8C
1547+
0000000000060871: CC 00
1548+
0000000000060872: CC 00
1549+
0000000000060873: CC 00
1550+
0000000000060874: CC 83
1551+
0000000000060875: CC C4
1552+
0000000000060876: CC 08
1553+
0000000000060877: CC FF
1554+
0000000000060878: CC 75
1555+
0000000000060879: CC D8
1556+
000000000006087A: CC 8B
1557+
000000000006087B: CC 45
1558+
000000000006087C: CC DC
1559+
000000000006087D: CC 40
1560+
000000000006087E: CC 50
1561+
000000000006087F: CC 8B
1562+
0000000000060880: CC 45
1563+
0000000000060881: CC FC
1564+
0000000000060882: CC 40
1565+
0000000000060883: CC 2B
1566+
0000000000060884: CC 45
1567+
0000000000060885: CC F4
1568+
0000000000060886: CC 50
1569+
0000000000060887: CC 8B
1570+
0000000000060888: CC 45
1571+
0000000000060889: CC F8
1572+
000000000006088A: CC 40
1573+
000000000006088B: CC 2B
1574+
000000000006088C: CC 45
1575+
000000000006088D: CC F0
1576+
000000000006088E: CC 50
1577+
000000000006088F: CC 0F
1578+
0000000000060890: CC BF
1579+
0000000000060891: CC 43
1580+
0000000000060892: CC 0A
1581+
0000000000060893: CC 03
1582+
0000000000060894: CC 45
1583+
0000000000060895: CC F4
1584+
0000000000060896: CC 50
1585+
0000000000060897: CC 0F
1586+
0000000000060898: CC BF
1587+
0000000000060899: CC 43
1588+
000000000006089A: CC 08
1589+
000000000006089B: CC 03
1590+
000000000006089C: CC 45
1591+
000000000006089D: CC F0
1592+
000000000006089E: CC 50
1593+
000000000006089F: CC A1
1594+
00000000000608A0: CC B0
1595+
00000000000608A1: CC 0E
1596+
00000000000608A2: CC 4B
1597+
00000000000608A3: CC 00
1598+
00000000000608A4: CC 50
1599+
00000000000608A5: CC 8B
1600+
00000000000608A6: CC 00
1601+
00000000000608A7: CC FF
1602+
00000000000608A8: CC 50
1603+
00000000000608A9: CC 18
1604+
00000000000608AA: CC A1
1605+
00000000000608AB: CC B0
1606+
00000000000608AC: CC 0E
1607+
00000000000608AD: CC 4B
1608+
00000000000608AE: CC 00
1609+
00000000000608AF: CC 50
1610+
00000000000608B0: CC 8B
1611+
00000000000608B1: CC 00
1612+
00000000000608B2: CC FF
1613+
00000000000608B3: CC 50
1614+
00000000000608B4: CC 1C
1615+
00000000000608B5: CC EB
1616+
00000000000608B6: CC A9
1617+
00000000000608B7: CC 5F
1618+
00000000000608B8: CC 5E
1619+
00000000000608B9: CC 5B
1620+
00000000000608BA: CC C9
1621+
00000000000608BB: CC C3
1622+
0000000000060900: CC 55
1623+
0000000000060901: CC 89
1624+
0000000000060902: CC E5
1625+
0000000000060903: CC 83
1626+
0000000000060904: CC EC
1627+
0000000000060905: CC 38
1628+
0000000000060906: CC 53
1629+
0000000000060907: CC 56
1630+
0000000000060908: CC 57
1631+
0000000000060909: CC 8D
1632+
000000000006090A: CC 45
1633+
000000000006090B: CC EC
1634+
000000000006090C: CC 50
1635+
000000000006090D: CC 8D
1636+
000000000006090E: CC 45
1637+
000000000006090F: CC D8
1638+
0000000000060910: CC 50
1639+
0000000000060911: CC FF
1640+
0000000000060912: CC 75
1641+
0000000000060913: CC 08
1642+
0000000000060914: CC E8
1643+
0000000000060915: CC DD
1644+
0000000000060916: CC D3
1645+
0000000000060917: CC FF
1646+
0000000000060918: CC FF
1647+
0000000000060919: CC 83
1648+
000000000006091A: CC C4
1649+
000000000006091B: CC 0C
1650+
000000000006091C: CC 31
1651+
000000000006091D: CC C0
1652+
000000000006091E: CC 3B
1653+
000000000006091F: CC 45
1654+
0000000000060920: CC F0
1655+
0000000000060921: CC 7D
1656+
0000000000060922: CC 03
1657+
0000000000060923: CC 8B
1658+
0000000000060924: CC 45
1659+
0000000000060925: CC F0
1660+
0000000000060926: CC 89
1661+
0000000000060927: CC 45
1662+
0000000000060928: CC C8
1663+
0000000000060929: CC 31
1664+
000000000006092A: CC C0
1665+
000000000006092B: CC 3B
1666+
000000000006092C: CC 45
1667+
000000000006092D: CC F4
1668+
000000000006092E: CC 7D
1669+
000000000006092F: CC 03
1670+
0000000000060930: CC 8B
1671+
0000000000060931: CC 45
1672+
0000000000060932: CC F4
1673+
0000000000060933: CC 89
1674+
0000000000060934: CC 45
1675+
0000000000060936: CC 8B
1676+
0000000000060937: CC 45
1677+
0000000000060938: CC DC
1678+
0000000000060939: CC 3B
1679+
000000000006093A: CC 45
1680+
000000000006093B: CC F8
1681+
000000000006093C: CC 7E
1682+
000000000006093D: CC 03
1683+
000000000006093E: CC 8B
1684+
000000000006093F: CC 45
1685+
0000000000060940: CC F8
1686+
0000000000060941: CC 40
1687+
0000000000060942: CC 2B
1688+
0000000000060943: CC 45
1689+
0000000000060944: CC C8
1690+
0000000000060945: CC 89
1691+
0000000000060946: CC 45
1692+
0000000000060947: CC D0
1693+
0000000000060948: CC 8B
1694+
0000000000060949: CC 45
1695+
000000000006094A: CC E0
1696+
000000000006094B: CC 3B
1697+
000000000006094C: CC 45
1698+
000000000006094D: CC FC
1699+
000000000006094E: CC 7E
1700+
000000000006094F: CC 03
1701+
0000000000060950: CC 8B
1702+
0000000000060951: CC 45
1703+
0000000000060952: CC FC
1704+
0000000000060953: CC 40
1705+
0000000000060954: CC 2B
1706+
0000000000060955: CC 45
1707+
0000000000060957: CC 89
1708+
0000000000060958: CC 45
1709+
0000000000060959: CC D4
1710+
000000000006095A: CC FF
1711+
000000000006095B: CC 75
1712+
000000000006095C: CC D8
1713+
000000000006095D: CC 8B
1714+
000000000006095E: CC 45
1715+
000000000006095F: CC DC
1716+
0000000000060960: CC 40
1717+
0000000000060961: CC 50
1718+
0000000000060962: CC FF
1719+
0000000000060963: CC 75
1720+
0000000000060964: CC D4
1721+
0000000000060965: CC FF
1722+
0000000000060966: CC 75
1723+
0000000000060967: CC D0
1724+
0000000000060968: CC FF
1725+
0000000000060969: CC 75
1726+
000000000006096B: CC FF
1727+
000000000006096C: CC 75
1728+
000000000006096D: CC C8
1729+
000000000006096E: CC FF
1730+
000000000006096F: CC 75
1731+
0000000000060970: CC 0C
1732+
0000000000060971: CC A1
1733+
0000000000060972: CC B0
1734+
0000000000060973: CC 0E
1735+
0000000000060974: CC 4B
1736+
0000000000060975: CC 00
1737+
0000000000060976: CC 50
1738+
0000000000060977: CC 8B
1739+
0000000000060978: CC 00
1740+
0000000000060979: CC FF
1741+
000000000006097A: CC 50
1742+
000000000006097B: CC 68
1743+
000000000006097C: CC 5F
1744+
000000000006097D: CC 5E
1745+
000000000006097E: CC 5B
1746+
000000000006097F: CC C9
1747+
0000000000060980: CC C3
14761748
000000000006596B: 10 08
14771749
0000000000065971: FC F8
14781750
0000000000065972: 00 04

0 commit comments

Comments
 (0)