From 0746cbd50485d55197ee94e1128c012d26e3c262 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Thu, 28 Sep 2023 15:41:30 -0400 Subject: [PATCH] minor cleanup --- .gitignore | 2 ++ .vscode/bookmarks.json | 6 ++-- data/test_input.hmi | Bin 67360192 -> 67259168 bytes project/engine/engine.cpp | 6 ++++ project/platform/platform.hpp | 7 ++-- project/platform/win32_platform.cpp | 52 +++++++++++++--------------- 6 files changed, 38 insertions(+), 35 deletions(-) diff --git a/.gitignore b/.gitignore index cdf0a29..e87fa4a 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,8 @@ build **/*.pdb **/*.hmi +**/*.symbols + data/test.out data/handmade_engine.symbols data/handmade_win32.exe diff --git a/.vscode/bookmarks.json b/.vscode/bookmarks.json index 1ecd313..278d53e 100644 --- a/.vscode/bookmarks.json +++ b/.vscode/bookmarks.json @@ -19,17 +19,17 @@ "label": "Timing" }, { - "line": 1479, + "line": 1477, "column": 4, "label": "Main Loop : Audio Processing" }, { - "line": 1598, + "line": 1596, "column": 2, "label": "Main Loop : Timing Update" }, { - "line": 1682, + "line": 1680, "column": 0, "label": "Main Loop : End" } diff --git a/data/test_input.hmi b/data/test_input.hmi index 70724ce05ede87e2a051649f34c6a686b343001c..359c89a783e587037840a56e8ad85901ad65cfd6 100644 GIT binary patch delta 4191 zcmXZbWt5g>7lz?)h9QQ&=mzQT?(PODk?!tpxG3rFR#G}7q)X{8rMp|{?;O|r<5=h3 z>t4_P_v~FgF~y=8V^Tz@AN0Tfbqg9QE657A!dW3!cq@Vx(TZe+T9K_NR#YpR72S$q z#kBY&mKEEIW5u=NS@Ep|RzfS0mDoyRCAE@S$*mODcUDR(m6h5`W2LpyS?R3|Rz@q6 zmD$Q-Wwo+d*{vK_PAiv{+sb3*wenf{tpZj-tB_ULDq`p8lvUa)W0kea zS>>$?Rz<6lRoSXyRkf;F)vX#qo1R)!1rcHMN>q z&8-$zORJUD+G=C9wc1(jtqxX4tCQ8)>SA@Zx>?<=9#&7Qm(|tjPt&!F!YqT}S8f*PzjkCsE6Re5WBx|xY#hPkOv!+`!teMs|8_jn*b>v$e(A zYHhQAv$k71tew^_>vwCnwa40P?X&h<2dsnEA?vVp#5!vIVf|?xvyNLQtdrI$>$G*o zI%}P?&RZ9(i`FIUvUSC}YF)Gbvi`QNTQ{tm)-CI{b;r7E-Lvjn53GmQBkQsC#CmEy zvz}Wote4g+>$Ua9dTYJ2-dq1z|5_ickJcyav-QRLYJD4{pz#VqFv1}O;Sm855ecD) zj3|hTXo!v&h>5Tpu@D<^5Et$k7>c6=N}?1>qYTQT9Ll2tDxwl9qYA2` z8mglPYN8fu<9pOWUDQK;G{6sNh#%1ijnM>6(G1Pe0xi)Bt(&;!f1@aSp0->7>@~P;8(20I;_VAY{VvP#ujYF zHvER|*nyqch2OCod$1S#upb9-5QlIWM{pE>;7=UGah$+OoWg0G!C9Qcd0fCnT*75s z!Bt$tU-%o>aRWDT3%79xcX1E*@c<9;2#@guPw@=T@d7XL3a{}7Z}ATA@elsR2YkdQ ze8v}i#kZg_3g-7mFv1}O;Sm855ecD)j3|hTXo!v&h>5Tpu@D<^5Et$k z7>c6=N}?1>qYTQT9Ll2tDxwl9qYA2`8mglPYN8fu<9pOWUDQK;G{6sNh#%1ijnM>6 z(G1Pe0xi)Bt(&;!f1@aSp0->7>@~P;8(20I;_VAY{VvP#ujYFHvER|*nyqch2OCod$1S#upb9-5QlIWM{pE> z;7=UGah$+OoWg0G!C9Qcd0fCnT*75s!Bt$tU-%o>aRWDT3%79xcX1E*@c<9;2#@gu zPw@=T@d7XL3a{}7Z}ATA@elsR2YkdQe8v}i#kb%w3diq{V1z>m!XpAAA`(Io8Bq`w z(GVRm5EEfHVj(u-ATHt|J`x}y5+N~?ASsd|Ia1&|q(myDMjE6=I;2MiWJD%pMiyj6 zHe^Q*=HB?6p z)I=@R#`ma$x~PZxXn-Hk5I>?38lwrCq8XZ_1zMsNTB8lxq8-|!13ID;I-?7^q8qxS z2YR9xdZQ2eq96KW00v?Z24e_@Vi<;F1dNdwh0z#;vG@t&Fdh>y5tA?(Q!o|NFdZ{6 z6SFWIb1)b4FdqxB5R0%FORyBn@H2kFa;(5gtio!n!LL}0by$xL*oaNoj4jxTZTJn_ zu>(7?3%_GG_FymeVLuMwAP(U$j^HT%z@IpV<2ZqnIEB+VgR?k?^SFSExP;5Nf~&ZO zzwkG%;|6Zx7H;DX?&2Qq;{hJx5gy|Sp5hsv;{{&g6<*^F-r^nJ;~)Hs5BP{r_>3?3 zif`d2r^vW4d*a}bNZa#=%nDt2IyK|Y%b{U&m#krPpV(n@%=}?{bUM~M{dAT@jnY7`*Wzy=fCHv0* zmh4-?meU8rmOZC;2Zs#V8`L=L_QKGhCV@5$v{|6d18os#%RpNN+B(oSfwm2_U7+m) i?GR|kKsyE6InXYFb`7*!pxp!Q5opgqdxf=g=>Gvn73V1c delta 4440 zcmX}rWt31=1BKylU<8KVbTf2!BM6E#(jX~Fr*wC0V5EjFl}1VF8jw;^lx`HIyQNY1 z-qE}G@vL|MIp@c@>n@lX5x#rn8%V_Ml0OPWM#IpSXr%XR(30g zmD9>)<+k!zd98d_eyf00&?;mVwu)FqtzuSjtAth3DrJ?n-nGhDWv%zDa#nfked`0O zg7u+Q(W+!swyIcFt!h?vtA_QFRnw|v)wb$bb**| z&>Cb7wuV?ktzp)1YlJn@8fA^PY>lzTTH~w;>vLpk&DIuctF_JAZbex;tew_()-G$ewa40P?X$kOez1PD_FF$$KU)W^U#wrP zgVrJIuyw>bY8|tVTPLiO)+y_>b;detowI(kez(qBe^`H77p#lcCF`$Y{rx@+CD?pqJ6ht?zOFYB@O#CmEyvz}Wote4g+>u>8H>$UYJLLn0sf*6R2 zP`ra!h>bW1LtMl|d?Y|ZBtl|D-;o4KkqpU^0x6LSsgVY0kq+sR0T~gFOvsEZ$ck*p zjvUB|T*!?)$cuc)j{+!&LMV(PD2iezjuI$|QYejgQ3hr49?GFS-p2>1fDcg-l~5T~ zP!-is9X0R~YN8fuqYmn#9_ph38scL#LSr;RQ#3rBgXLI(l~{$nCEpYSsd;1~RggE)l4ID(@% zhT}MalQ@ObID@k|hu`o!&f^dKi3_-hOSp_HxQc7IjvKg%TeyuoxQlzZj|X^&NB9em z@dQut4A1cbFYyY0;~%`nn~(^_;P*!i#6&3GK`g{Z9E2e*;vqf~AR!VVF{1BCf}}`> zr+Fc5<< z7(*}=!!R5pFcPCM8parm#W+OZbBxCXOvEHiMkJ16wJj5gXg~xb;r+9|vc!8IAg}?C+UgJ%S2*u?0M-0S7 zDBeLV#6}#1Aui$}J`x}y5+O07??{5ANQUG{fs{yv)JTK0NQd;ufQ$%7CS*nyWJNY) zM-JpfF62fYArwXt6h$!D=p)s1EDVm`vC9|JHDgD@CFFciZu93wCiqc9rA7>va@MBsCb#{^8o zBuqvmreG?jVLE1DCT3wa=3p-7;R}3;uP`4Aun>!|7)!7e%kVY6!E&s?O02?atiiWf zi*;C!4cLfH*o-aMif!1ADD1#ae1~1wjXl_lefS z!*QIzNu0uIoWWU~!*BQ<=kW*r#06Z$C0xc8T*Wn9#|_-XE!@T(+{HcI#{)dXBm9NO zc!H;RhUa*Jmw1K0@ef|(P0T6bx#vX=35~O@Wa#X$c?HLY#)&!;7CnzdGW#cup55m% zQ>ABy#EN=YDs+BWNbI0-f`$c+8#G?f_(2l{O&By$(8NI%G)d5;L6Zed9yCSJltEJk zO&v5%(6m9*1x+6`L(q&t!-HlDnmK5epjm@v3z|J>j-WY%<_elSXr7>XgXW7`*DLzn z@<-Jf65Rq(5648eVAPbz=oX49G&j11=kdPf{(I&YVIf6=<3)oO3tBvAiJ&Eemin)A z3i838m-_cJhP|ELlfIpa)4!c-v%j6S-yU1}pj2q-b>S_;=G7h&TK?bhU`#L~BZEraise_tone_hz |= keyboard->Right.EndedDown; actions->lower_tone_hz |= keyboard->Left.EndedDown; +#if Build_Development actions->pause_renderer |= pressed( keyboard->Pause ); +#endif actions->toggle_wave_tone |= pressed( keyboard->Q ); @@ -473,6 +477,7 @@ void update_and_render( InputState* input, OffscreenBuffer* back_buffer, Memory* } } + #if Build_Development if ( engine_actions.pause_renderer ) { if ( state->RendererPaused ) @@ -486,6 +491,7 @@ void update_and_render( InputState* input, OffscreenBuffer* back_buffer, Memory* state->RendererPaused = true; } } + #endif } if ( state->InputRecordingIndex ) diff --git a/project/platform/platform.hpp b/project/platform/platform.hpp index 7df0a86..86d78b6 100644 --- a/project/platform/platform.hpp +++ b/project/platform/platform.hpp @@ -40,11 +40,8 @@ NS_PLATFORM_BEGIN // (Example: Letting the user change the refresh-rate of the monitor or the engine's target frame-rate) #if Build_Development -/* - IMPORTANT : These are not for shipping code - they are blocking and the write isn't protected. -*/ - using DebugSetPauseRenderingFn = void (b32 value); +#endif struct File { @@ -98,7 +95,6 @@ void get_symbol_from_module_table( File symbol_table, u32 symbol_ID, char* symbo } *symbol_name = '\0'; } -#endif #pragma region Settings Exposure // Exposing specific properties for user configuration in settings @@ -128,6 +124,7 @@ using GetModuleProcedureFn = void* ( BinaryModule module, char const* symbol ); // It will allow for only reading or writting to a file at a time. // Note: If anything more robust is needed, I'll grab it from the zpl-c library. +// TODO(Ed) : These need to be converted to an async interface. using FileCheckExistsFn = b32 ( Str const file_path ); using FileCloseFn = void ( File* file ); using FileDelete = b32 ( Str const file_path ); diff --git a/project/platform/win32_platform.cpp b/project/platform/win32_platform.cpp index a848e5c..4a5017c 100644 --- a/project/platform/win32_platform.cpp +++ b/project/platform/win32_platform.cpp @@ -138,8 +138,7 @@ FILETIME file_get_last_write_time( char const* path ) return dll_file_info.ftLastWriteTime; } -#if Build_Debug -struct DebugTimeMarker +struct AudioTimeMarker { DWORD OutputPlayCusror; DWORD OutputWriteCursor; @@ -152,6 +151,7 @@ struct DebugTimeMarker DWORD ExpectedFlipCursor; }; +#if Build_Debug internal void debug_draw_vertical( s32 x_pos, s32 top, s32 bottom, s32 color ) { @@ -195,7 +195,7 @@ debug_draw_sound_buffer_marker( DirectSoundBuffer* sound_buffer, f32 ratio internal void debug_sync_display( DirectSoundBuffer* sound_buffer - , u32 num_markers, DebugTimeMarker* markers + , u32 num_markers, AudioTimeMarker* markers , u32 current_marker , f32 ms_per_frame ) { @@ -206,7 +206,7 @@ debug_sync_display( DirectSoundBuffer* sound_buffer u32 line_height = 64; for ( u32 marker_index = 0; marker_index < num_markers; ++ marker_index ) { - DebugTimeMarker* marker = & markers[marker_index]; + AudioTimeMarker* marker = & markers[marker_index]; assert( marker->OutputPlayCusror < sound_buffer->SecondaryBufferSize ); assert( marker->OutputWriteCursor < sound_buffer->SecondaryBufferSize ); assert( marker->OutputLocation < sound_buffer->SecondaryBufferSize ); @@ -843,6 +843,12 @@ process_pending_window_messages( engine::KeyboardState* keyboard ) #pragma region Platfom API #if Build_Development +void debug_set_pause_rendering( b32 value ) +{ + Pause_Rendering = value; +} +#endif + b32 file_check_exists( Str path ) { HANDLE file_handle = CreateFileA( path @@ -1022,12 +1028,6 @@ u32 file_write_content( File* file, u32 content_size, void* content_memory ) return bytes_written; } -void debug_set_pause_rendering( b32 value ) -{ - Pause_Rendering = value; -} -#endif - u32 get_monitor_refresh_rate() { return 0; @@ -1223,7 +1223,7 @@ WinMain( HINSTANCE instance, HINSTANCE prev_instance, LPSTR commandline, int sho L"Handmade Hero", WS_Overlapped_Window | WS_Initially_Visible, CW_Use_Default, CW_Use_Default, // x, y - CW_Use_Default, CW_Use_Default, // width, height + 1100, 700, // width, height 0, 0, // parent, menu instance, 0 // instance, param ); @@ -1303,10 +1303,14 @@ WinMain( HINSTANCE instance, HINSTANCE prev_instance, LPSTR commandline, int sho FILETIME engine_api_load_time = file_get_last_write_time( Path_Engine_DLL ); engine::ModuleAPI engine_api = load_engine_module_api(); - b32 sound_is_valid = false; - DWORD ds_cursor_byte_delta = 0; - f32 ds_latency_ms = 0; + b32 sound_is_valid = false; + DWORD ds_cursor_byte_delta = 0; + f32 ds_latency_ms = 0; DirectSoundBuffer ds_sound_buffer; + u32 audio_marker_index = 0; + AudioTimeMarker audio_time_markers[ Monitor_Refresh_Max_Supported ] {}; + u32 audio_time_markers_size = Engine_Refresh_Hz / 2; + assert( audio_time_markers_size <= Monitor_Refresh_Max_Supported ) { ds_sound_buffer.IsPlaying = 0; ds_sound_buffer.SamplesPerSecond = 48000; @@ -1333,12 +1337,6 @@ WinMain( HINSTANCE instance, HINSTANCE prev_instance, LPSTR commandline, int sho ds_sound_buffer.GuardSampleBytes = min_guard_sample_bytes; } } -#if Build_Development - u32 debug_marker_index = 0; - DebugTimeMarker debug_markers[ Monitor_Refresh_Max_Supported ] {}; - u32 debug_marker_history_size = Engine_Refresh_Hz / 2; - assert( debug_marker_history_size <= Monitor_Refresh_Max_Supported ) -#endif engine::InputState input {}; @@ -1546,7 +1544,7 @@ WinMain( HINSTANCE instance, HINSTANCE prev_instance, LPSTR commandline, int sho sound_buffer.Samples = ds_sound_buffer.Samples; engine_api.update_audio( & sound_buffer, & engine_memory, & platform_api ); - DebugTimeMarker* marker = & debug_markers[ debug_marker_index ]; + AudioTimeMarker* marker = & audio_time_markers[ audio_marker_index ]; marker->OutputPlayCusror = ds_play_cursor; marker->OutputWriteCursor = ds_write_cursor; marker->OutputLocation = byte_to_lock; @@ -1642,7 +1640,7 @@ WinMain( HINSTANCE instance, HINSTANCE prev_instance, LPSTR commandline, int sho #if Build_Development // Note: debug_marker_index is wrong for the 0th index debug_sync_display( & ds_sound_buffer - , debug_marker_history_size, debug_markers, debug_marker_index - 1 + , audio_time_markers_size, audio_time_markers, audio_marker_index - 1 , Engine_Frame_Target_MS ); #endif @@ -1666,8 +1664,8 @@ WinMain( HINSTANCE instance, HINSTANCE prev_instance, LPSTR commandline, int sho sound_is_valid = true; } - assert( debug_marker_index < debug_marker_history_size ) - DebugTimeMarker* marker = & debug_markers[ debug_marker_index ]; + assert( audio_marker_index < audio_time_markers_size ) + AudioTimeMarker* marker = & audio_time_markers[ audio_marker_index ]; marker->FlipPlayCursor = play_cursor; marker->FlipWriteCursor = write_cursor; @@ -1676,9 +1674,9 @@ WinMain( HINSTANCE instance, HINSTANCE prev_instance, LPSTR commandline, int sho #endif #if Build_Development - debug_marker_index++; - if ( debug_marker_index >= debug_marker_history_size ) - debug_marker_index = 0; + audio_marker_index++; + if ( audio_marker_index >= audio_time_markers_size ) + audio_marker_index = 0; #endif }