Releases: rh1tech/murmdoom
Version 1.11
WAD Directory Change
WAD files are now loaded from the /doom directory on the SD card instead of the root directory.
Migration: Move all your .wad files (DOOM.WAD, DOOM2.WAD, etc.) into a doom/ folder at the root of your SD card.
Version 1.10
Fix PS/2 keyboard sticky key bug on FIFO overflow
When PIO FIFO overflowed, clearHidKeys() was called but the key handler was never notified. This caused the application to think keys were still pressed, resulting in 'sticky' actions like the prince running endlessly.
Now properly notifies the key handler after clearing keys and returns early to prevent processing an empty FIFO.
Version 1.09
- Fix USB keyboard key mapping and enable USB HID by default
- Fix USB keyboard not working on WAD selection screen
The USB HID keyboard worked during Doom gameplay but not on the start screen because usbhid_wrapper_tick() was consuming keys from the queue and posting to D_PostEvent() before DG_GetKey() could return them directly. But D_PostEvent() events aren't processed until Doom is running.
Fix:
- Add usbhid_wrapper_get_key() for direct key access (like ps2kbd_get_key)
- Move usbhid_wrapper_tick() from DG_GetKey() to I_StartTic() so it
only posts to D_PostEvent() during Doom gameplay - DG_GetKey() now checks both PS/2 and USB keyboards directly
WAD selection: usbhid_wrapper_get_key() returns USB keys directly
Doom gameplay: usbhid_wrapper_tick() in I_StartTic() posts events"
USB Keyboard Fixes:
- Separated keyboard and mouse event handling to fix double-processing
- Renamed usbhid_wrapper_tick() to usbhid_wrapper_mouse_tick() for mouse only
- USB keyboard events now flow through DG_GetKey() like PS/2 does
- Fixed Space key: map to KEY_USE (open doors) instead of ASCII space
- Fixed Ctrl key: map to KEY_FIRE (shoot) instead of KEY_RCTRL
Build Improvements:
- Enable USB HID by default in build.sh (-DUSB_HID_ENABLED=1)
- Add flash.sh script for convenient firmware flashing with picotool
Version 1.08
Fix MIDI streaming crash on music loop
Root cause: FreeTrack used num_events which became a cumulative count (chunk_start + chunk_count) after loading multiple streaming chunks, but the events array is only sized for MIDI_STREAM_CHUNK_SIZE (2000). This caused buffer overread when freeing events.
Fixes:
- FreeTrack now uses chunk_count (actual events in buffer) instead of num_events for streaming mode
- Move temp MIDI file deletion from I_OPL_RegisterSong to MIDI_FreeFile to prevent reading from deleted file during music loop restart
- Add comprehensive debug logging for music system
Also includes debug logging for level transitions and switch sounds.
Version 1.07
- "Loading WAD" window added
Version 1.06
- Crash bugfxies
- Added start screen to select WADs from interactive menu
Version 1.05
- Fixed DOOM I related bugs (was hanging when 1st level was over)
- Added support for USB keyboard and mouse
- Added support for PS/2 mouse
Version 1.04
- Fixed wrong GPIO pinout on M2 (tested)
- Added overclocking build options
Version 1.03
- Doesn't hang on 1->2 level change in DOOM II v1.666
- Fixed M2 GPIO mappipng (need to test)
Version 1.02
Minor bugs fixed