2
2
use core:: arch:: x86_64:: _rdtsc;
3
3
#[ link( name = "handmade.dll" ) ]
4
4
use handmade:: * ;
5
- use std:: ffi:: CString ;
6
- use std:: mem:: transmute;
7
- use std:: str:: from_utf8;
8
5
use std:: {
9
6
convert:: TryInto ,
10
- ffi:: OsStr ,
7
+ ffi:: { CString , OsStr } ,
11
8
iter:: once,
12
- mem:: { size_of, zeroed} ,
9
+ mem:: { size_of, transmute , zeroed} ,
13
10
os:: windows:: ffi:: OsStrExt ,
14
11
ptr:: null_mut,
12
+ str:: from_utf8,
15
13
} ;
16
- use winapi:: ctypes:: c_void;
17
- use winapi:: shared:: guiddef:: LPCGUID ;
18
- use winapi:: shared:: minwindef:: DWORD ;
19
- use winapi:: shared:: minwindef:: FALSE ;
20
- use winapi:: shared:: minwindef:: FILETIME ;
21
- use winapi:: shared:: minwindef:: HMODULE ;
22
- use winapi:: shared:: minwindef:: LPVOID ;
23
- use winapi:: shared:: minwindef:: MAX_PATH ;
24
- use winapi:: shared:: mmreg:: WAVEFORMATEX ;
25
- use winapi:: shared:: mmreg:: WAVE_FORMAT_PCM ;
26
- use winapi:: shared:: ntdef:: HRESULT ;
27
- use winapi:: shared:: ntdef:: SHORT ;
28
- use winapi:: shared:: windef:: POINT ;
29
- use winapi:: shared:: winerror:: ERROR_DEVICE_NOT_CONNECTED ;
30
- use winapi:: shared:: winerror:: SUCCEEDED ;
31
- use winapi:: um:: dsound:: DSBCAPS_PRIMARYBUFFER ;
32
- use winapi:: um:: dsound:: DSBPLAY_LOOPING ;
33
- use winapi:: um:: dsound:: DSBUFFERDESC ;
34
- use winapi:: um:: dsound:: DSSCL_PRIORITY ;
35
- use winapi:: um:: dsound:: DS_OK ;
36
- use winapi:: um:: dsound:: LPDIRECTSOUND ;
37
- use winapi:: um:: dsound:: LPDIRECTSOUNDBUFFER ;
38
- use winapi:: um:: fileapi:: CompareFileTime ;
39
- use winapi:: um:: fileapi:: CreateFileA ;
40
- use winapi:: um:: fileapi:: FindClose ;
41
- use winapi:: um:: fileapi:: FindFirstFileA ;
42
- use winapi:: um:: fileapi:: GetFileAttributesExA ;
43
- use winapi:: um:: fileapi:: GetFileSizeEx ;
44
- use winapi:: um:: fileapi:: ReadFile ;
45
- use winapi:: um:: fileapi:: WriteFile ;
46
- use winapi:: um:: fileapi:: CREATE_ALWAYS ;
47
- use winapi:: um:: fileapi:: OPEN_EXISTING ;
48
- use winapi:: um:: wingdi:: PatBlt ;
49
- use winapi:: um:: wingdi:: BLACKNESS ;
50
-
51
- use winapi:: um:: handleapi:: CloseHandle ;
52
- use winapi:: um:: handleapi:: INVALID_HANDLE_VALUE ;
53
- use winapi:: um:: libloaderapi:: FreeLibrary ;
54
- use winapi:: um:: libloaderapi:: GetModuleFileNameA ;
55
- use winapi:: um:: libloaderapi:: GetModuleHandleW ;
56
- use winapi:: um:: libloaderapi:: GetProcAddress ;
57
- use winapi:: um:: libloaderapi:: LoadLibraryA ;
58
- use winapi:: um:: memoryapi:: MapViewOfFile ;
59
- use winapi:: um:: memoryapi:: VirtualAlloc ;
60
- use winapi:: um:: memoryapi:: VirtualFree ;
61
- use winapi:: um:: memoryapi:: FILE_MAP_ALL_ACCESS ;
62
-
63
- use winapi:: um:: minwinbase:: WIN32_FIND_DATAA ;
64
- use winapi:: um:: mmsystem:: TIMERR_NOERROR ;
65
- use winapi:: um:: profileapi:: QueryPerformanceCounter ;
66
- use winapi:: um:: profileapi:: QueryPerformanceFrequency ;
67
- use winapi:: um:: synchapi:: Sleep ;
68
- use winapi:: um:: timeapi:: timeBeginPeriod;
69
- use winapi:: um:: unknwnbase:: LPUNKNOWN ;
70
- use winapi:: um:: winbase:: CopyFileA ;
71
- use winapi:: um:: winbase:: CreateFileMappingA ;
72
- use winapi:: um:: wingdi:: GetDeviceCaps ;
73
-
74
- use winapi:: um:: wingdi:: VREFRESH ;
75
- use winapi:: um:: winnt:: LARGE_INTEGER_u ;
76
- use winapi:: um:: winnt:: RtlCopyMemory ;
77
- use winapi:: um:: winnt:: FILE_SHARE_READ ;
78
- use winapi:: um:: winnt:: GENERIC_READ ;
79
- use winapi:: um:: winnt:: GENERIC_WRITE ;
80
- use winapi:: um:: winnt:: HANDLE ;
81
- use winapi:: um:: winnt:: LARGE_INTEGER ;
82
- use winapi:: um:: winnt:: MEM_RESERVE ;
83
- use winapi:: um:: winuser:: wsprintfA;
84
- use winapi:: um:: winuser:: GetCursorPos ;
85
- use winapi:: um:: winuser:: GetDC ;
86
- use winapi:: um:: winuser:: GetKeyState ;
87
- use winapi:: um:: winuser:: PeekMessageW ;
88
- use winapi:: um:: winuser:: ReleaseDC ;
89
- use winapi:: um:: winuser:: ScreenToClient ;
90
- use winapi:: um:: winuser:: PM_REMOVE ;
91
- use winapi:: um:: winuser:: VK_LBUTTON ;
92
- use winapi:: um:: winuser:: VK_MBUTTON ;
93
- use winapi:: um:: winuser:: VK_RBUTTON ;
94
- use winapi:: um:: winuser:: VK_XBUTTON1 ;
95
- use winapi:: um:: winuser:: VK_XBUTTON2 ;
96
- use winapi:: um:: winuser:: WM_QUIT ;
97
-
98
- use winapi:: um:: xinput:: XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE ;
99
- use winapi:: um:: xinput:: XINPUT_STATE ;
100
- use winapi:: um:: xinput:: XINPUT_VIBRATION ;
101
- use winapi:: um:: xinput:: XUSER_MAX_COUNT ;
14
+ use winapi:: {
15
+ ctypes:: c_void,
16
+ shared:: {
17
+ guiddef:: LPCGUID ,
18
+ minwindef:: { DWORD , FALSE , FILETIME , HMODULE , LPVOID , MAX_PATH } ,
19
+ mmreg:: { WAVEFORMATEX , WAVE_FORMAT_PCM } ,
20
+ ntdef:: { HRESULT , SHORT } ,
21
+ windef:: POINT ,
22
+ winerror:: { ERROR_DEVICE_NOT_CONNECTED , SUCCEEDED } ,
23
+ } ,
24
+ um:: {
25
+ dsound:: {
26
+ DSBCAPS_PRIMARYBUFFER , DSBPLAY_LOOPING , DSBUFFERDESC , DSSCL_PRIORITY , DS_OK ,
27
+ LPDIRECTSOUND , LPDIRECTSOUNDBUFFER ,
28
+ } ,
29
+ fileapi:: {
30
+ CompareFileTime , CreateFileA , FindClose , FindFirstFileA , GetFileAttributesExA ,
31
+ GetFileSizeEx , ReadFile , WriteFile , CREATE_ALWAYS , OPEN_EXISTING ,
32
+ } ,
33
+ wingdi:: { PatBlt , BLACKNESS } ,
34
+ } ,
35
+ } ;
36
+
37
+ use winapi:: um:: {
38
+ handleapi:: { CloseHandle , INVALID_HANDLE_VALUE } ,
39
+ libloaderapi:: {
40
+ FreeLibrary , GetModuleFileNameA , GetModuleHandleW , GetProcAddress , LoadLibraryA ,
41
+ } ,
42
+ memoryapi:: { MapViewOfFile , VirtualAlloc , VirtualFree , FILE_MAP_ALL_ACCESS } ,
43
+ } ;
44
+
45
+ use winapi:: um:: {
46
+ minwinbase:: WIN32_FIND_DATAA ,
47
+ mmsystem:: TIMERR_NOERROR ,
48
+ profileapi:: { QueryPerformanceCounter , QueryPerformanceFrequency } ,
49
+ synchapi:: Sleep ,
50
+ timeapi:: timeBeginPeriod,
51
+ unknwnbase:: LPUNKNOWN ,
52
+ winbase:: { CopyFileA , CreateFileMappingA } ,
53
+ wingdi:: GetDeviceCaps ,
54
+ } ;
55
+
56
+ use winapi:: um:: {
57
+ wingdi:: VREFRESH ,
58
+ winnt:: {
59
+ LARGE_INTEGER_u , RtlCopyMemory , FILE_SHARE_READ , GENERIC_READ , GENERIC_WRITE , HANDLE ,
60
+ LARGE_INTEGER , MEM_RESERVE ,
61
+ } ,
62
+ winuser:: {
63
+ wsprintfA, GetCursorPos , GetDC , GetKeyState , PeekMessageW , ReleaseDC , ScreenToClient ,
64
+ PM_REMOVE , VK_LBUTTON , VK_MBUTTON , VK_RBUTTON , VK_XBUTTON1 , VK_XBUTTON2 , WM_QUIT ,
65
+ } ,
66
+ } ;
67
+
102
68
use winapi:: {
103
69
shared:: {
104
70
minwindef:: { HINSTANCE , LPARAM , LRESULT , UINT , WPARAM } ,
@@ -116,6 +82,9 @@ use winapi::{
116
82
WM_ACTIVATEAPP , WM_CLOSE , WM_DESTROY , WM_KEYDOWN , WM_KEYUP , WM_PAINT , WM_SIZE ,
117
83
WM_SYSKEYDOWN , WM_SYSKEYUP , WNDCLASSW , WS_OVERLAPPEDWINDOW , WS_VISIBLE ,
118
84
} ,
85
+ xinput:: {
86
+ XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE , XINPUT_STATE , XINPUT_VIBRATION , XUSER_MAX_COUNT ,
87
+ } ,
119
88
} ,
120
89
} ;
121
90
@@ -1390,7 +1359,8 @@ pub unsafe extern "system" fn winmain() {
1390
1359
1391
1360
#[ cfg( feature = "handmade_internal" ) ]
1392
1361
{
1393
- base_address = ( 2 * 1024 * 1024 * 1024 * 1024 as u64 ) as LPVOID ; //2 terabytes
1362
+ base_address = ( 2 * 1024 * 1024 * 1024 * 1024 as u64 ) as LPVOID ;
1363
+ //2 terabytes
1394
1364
}
1395
1365
1396
1366
RUNNING = true ; // TODO
0 commit comments