New changes since 0.90B4
Added ME-based audio engine (me_audio.c / me_audio.h)
Added MP3 menu player system (menu_mp3.c / menu_mp3.h)
Added MP3 conversion script (convert_mp3.sh)
Added custom memory allocation header (uae_malloc.h)
Added change log file (WHATS_CHANGED.txt)
Removed
Removed psp_safe.c (legacy safety / wrapper layer)
Core changes that have happened
Audio System
Replaced entire PSP audio driver with ring buffer streaming system
Converted audio to ME-driven timing model
Added audio tick / timeline counter (global sync source)
Redirected UAE audio output into new mixer pipeline
Updated sound interface layer to match new backend
CPU / Timing
Added audio-driven CPU cycle budgeting
Introduced cycles-per-sample timing model
Synced CPU execution pacing to audio clock
CPU Accelerated, Acts like an Accelerator card. It auto adjusts to load and increases and decreases speed on fly.
PSP Integration
Integrated ME audio system into main PSP loop (psp.c)
Added MP3 playback control hooks (pause/resume/init)
Linked menu system with MP3 playback
Build / Compile
Updated Makefile with new compile flags and modules
Included new audio + MP3 components in build
Graphics / Misc stuff
Cleaned and optimized gfxutil color handling (To fix AGA)
Minor fixes and corrections in custom.c (bitplane / fetch logic to fix AGA)
Improve Auto FrameSkip, add buffering. This makes everything silky smooth, even when running slow. Everything is still synced, no sound popping and clicking, just gfx slow.
Blitter now on ME, however its slow. I have manged to increase its speed, but nothing like UAE CPU running it. Currently I have Blit scheduler that decides which CPU to use. So its using both PSP CPU's to Blit. Main focus is on getting ME Blitting to full speed. Once thats done, I will replace Blit decide with "just use ME".
Config Changes
Disabled cycle switch system via sysconfig (Not needed any more, will be replaced with software accelerator)
Adjusted interrupt/audio related config behavior
Changes summed up
Shift from CPU-driven timing → Audio-driven timing
Shift from blocking audio → asynchronous ring buffer audio
Shift from blocking Blitter → asynchronous Blitter on ME CPU
Introduction of Media Engine (ME) as core audio processor
Separation of:
Paula audio generation
Output mixing / streaming
Addition of independent MP3 playback path for UI