From 69e5b65c5f7ed956a5223085a654e23e79080c48 Mon Sep 17 00:00:00 2001 From: Raymaekers Luca Date: Fri, 10 Oct 2025 11:11:52 +0200 Subject: checkpoint --- linux_handmade.h | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 linux_handmade.h (limited to 'linux_handmade.h') diff --git a/linux_handmade.h b/linux_handmade.h new file mode 100644 index 0000000..d5f1063 --- /dev/null +++ b/linux_handmade.h @@ -0,0 +1,92 @@ +/* date = April 15th 2025 4:50 pm */ + +#ifndef LINUX_HANDMADE_H +#define LINUX_HANDMADE_H + +struct linux_game_code +{ + game_update_and_render *UpdateAndRender; + game_get_sound_samples *GetSoundSamples; + + void *LibraryHandle; + struct timespec LibraryLastWriteTime; +}; + +enum linux_gamepad_axes_enum +{ + LSTICKX, + LSTICKY, + RSTICKX, + RSTICKY, + LSHOULDER, + RSHOULDER, + DPADX, + DPADY, + AXES_COUNT +}; + +struct linux_gamepad_axis +{ + s32 Minimum; + s32 Maximum; + s32 Fuzz; + s32 Flat; +}; + +struct linux_gamepad +{ + // TODO(luca): rename to FileHandle + int File; + char FilePath[PATH_MAX]; + + char Name[256]; + int SupportsRumble; + linux_gamepad_axis Axes[AXES_COUNT]; +}; + +struct linux_replay_buffer +{ + size_t Pos; + size_t Size; + char *Memory; + size_t MemorySize; +}; +struct linux_state +{ + Display *DisplayHandle; + + b32 IsFullScreen; + + int InputPlayingIndex; + int InputRecordingIndex; + linux_replay_buffer ReplayBuffers[5]; + + char ExecutablePath[PATH_MAX]; + + size_t TotalSize; + void *GameMemoryBlock; +}; + +struct linux_thread_info +{ + u64 LogicalThreadIndex; + platform_work_queue *Queue; +}; + +struct platform_work_queue +{ + sem_t SemaphoreHandle; + + volatile u32 CompletionGoal; + volatile u32 CompletionCount; + + volatile u32 NextEntryToWrite; + volatile u32 NextEntryToRead; + platform_work_queue_entry Entries[256]; +}; + +//- Prototypes +// for sapall +internal struct timespec LinuxGetWallClock(void); + +#endif //LINUX_HANDMADE_H -- cgit v1.2.3-70-g09d2