warning: i just hacked this up for myself, take it with a grain of salt ============================================================================= Source Overview ============================================================================= Interface ========= main.c - Command Line Interpreter include/debugger.h debugger.c include/console.h console.c - console i/o stuff include/x11.h x11.c - x11 framebuffer output and key/mouse input General Core ============ include/symbol.h - symbol handling header (ok) symbol.c - symbol handling (ok) useremul.c - syscall emulation general code - useremul_init: machine type (ok) include/device.h - generic part of memory mapped device emu header device.c emul_parse.c (ok) include/machine.h - generic machine emulation header machine.c memory_rw.c - main memory r/w interface psp_bios.c cpu.c - non cpu specific part of cpu emulation include/diskimage.h diskimage.c - generic disc image handler include/misc.h misc.c include/emul.h emul.c include/float_emul.h float_emul.c (ok) include/memory.h - basic memory interface header memory.c - basic memory interface include/net.h net.c include/devices.h include/quick_pc_to_pointers.h include/mp.h PSP Core ======== PSP Machine ----------------------------------------------------------------------------- machines/machine_psp.c - main PSP machine description PSP ELF Loader (called from emul.c) ----------------------------------------------------------------------------- include/exec_elf.h - elf format header file.c PSP Syscall HLE (called from useremul.c) ----------------------------------------------------------------------------- promemul/psp_hle.h - psp syscall emulation header promemul/psp_syscalls.c - syscall emulation psp specific code promemul/psp_hle_*.c - syscall emulation hooks TODO: proper handling of modules proper handling of threading Interrupts ----------------------------------------------------------------------------- machines/interrupts_psp.c - PSP Interrupt Hook include/machine_interrupts.h PSP Framebuffer ----------------------------------------------------------------------------- devices/dev_fb.c - devices/fb_include.c - TODO: framebuffer baseaddress has no effect atm PSP CPU ======= cpus/cpu_dyntrans.c cpus/cpu_mips_instr.c cpus/cpu_mips.c - main MIPS cpu core, mips disassembler cpus/cpu_run.c cpus/memory_fast_v2h.c cpus/cpu_mips_coproc.c cpus/memory_mips.c include/cop0.h include/opcodes_mips.h include/cpu.h include/cpu_mips.h include/cpuregs.h include/mips_cpu_types.h - Table of flags for various MIPS CPUs - Allegrex CPU Type definition TODO: allegrex special opcodes are not handled correctly atm Allegrex "TLB" ----------------------------------------------------------------------------- cpus/memory_mips_v2p.c - 'TRANSLATE_ADDRESS' function TODO: this is a hack ============================================================================= Tested examples from PSPSDK ============================================================================= polyphonic display ok, unsupported opcodes wavegen display ok, unsupported opcodes controller/basic display ok exception display ok gdb display ok, can not fully work yet kprintf display ok profiler display ok, profiler hw support missing prxdecrypt display ok sio display ok gu/blend some display gu/blit some display gu/celshading no display, crash [...] gu/cube no display [...] irda display ok sircs display ok cwd display ok fileio display ok kdumper display ok loadmodule display ok messagebox display ok threadstatus display ok me/basic display ok dumpipl display ok net/resolver no display net/simple no display net/simple_prx crash net/wlanscan crash power display ok prx_loader display ok testprx crash savedata/decrypt display ok savedata/encrypt display ok savedata/utility display ok elf_template ok usb/storage display ok msgdialog crash netconf displays crap systemparam displays crap samples/wlan display ok