Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Daedalus PSP

From GameBrew
Daedalus
Daedaluspsp.png
General
AuthorStrmnNrmn
TypeConsole
VersionR13
LicenseGPL-2.0
Last Updated2007/11/04
Links
Download
Website
Source

Daedalus is a Nintendo64 emulator for Windows and PSP. Daedalus is named after the craftsman at King Minos's court who designed the labyrinth for the Minotaur.

This release of Daedalus for the PSP is currently in early stages of development. It is intended to show the potential for a N64 emulator on the PSP, but the current release has many missing features that make it far from usable:

  • There is limited savegame support.
  • Not all the N64 controls can be used simultaneously.
  • Many roms won't boot.
  • Many roms have serious graphical glitches.
  • Many roms have random lockups and crashes.
  • Many roms run at a low framerate.

See also the compatibility list on PSP Developer Wiki.

Installation

Copy the Daedalus folder to the /PSP/GAME/ folder on your PSP.

User guide

Roms

Roms should be copied to the Roms subdirectory within the Daedalus folder. Daedalus recognises most roms formats (.v64, .z64, .rom etc) and will also run roms compressed within .zip files.

NB: Recent versions of Daedalus will also load any roms found within the /N64/ directory on your PSP. Note that this is in the root directory of your PSP.

When Daedalus boots with a zipped rom, for performance reasons it will attempt to decompress it to a temporary file on your Memory Stick before execution. If you are low on free space, it is recommended that you keep the original rom file on your PC, and manually extract the rom to your Roms directory.

Preview pictures

Preview pictures for the rom selection screen can be added to the Resources/Preview directory in the Daedalus folder. They should be in .png format, in a 4:3 aspect ratio.

To let Daedalus know which picture to use for each rom, you need to add a line to the corresponding entry in the main daedalus.ini file, with this format:

Preview=<filename.png>

Where <filename.png> is the name of the .png file. Don't include any directory names in the path.

Save games

Currently Daedalus PSP has limited support for the following save game types:

  • 4Kb Eeprom
  • 16Kb Eeprom
  • Mempack

Save games are created with the same name as the rom file, in the Daedalus/SaveGames/ directory.

Important note: For performance reasons Daedalus only saves out modified save game files when the Pause menu is accessed (by pressing the 'Select' button while the emulator is running).

Main menu

When you run Daedalus, it will present you with a list of all the roms it could find in your Roms subdirectory. Use the D-Pad or analogue stick to navigate to the desired rom, and press Cross or Start to select it. A new screen is displayed from which you can select to edit preferences for the rom or start emulation.

You can use the left and right shoulder buttons to cycle between other options screens in Daedalus.

Pause menu

When a rom is running, you can access the Pause Menu by pressing the 'Select' button.

From the Pause Menu you can use the left and right shoulder buttons to access various option screens. You can use the Pause Menu to take screenshots and reset the emulator to the main menu. Screenshots are saved under the Dumps/[gamename]/ScreenShots/ directory in the Daedalus folder on your Memory Stick.

You can press the 'Select' button again to quickly return to the emulator.

Controls

Start - Start

Analog - Analog

Circle+D-Pad - D-Pad

Cross - A button

Square - B button

Triangle - Z button

L/R - L/R

D-Pad - C buttons

As of R7 Daedalus now allows user-configurable controls to be specified. The desired controls can be chosen from the Rom Settings screen.

In order to define your own controller configuration you need to add a new .ini file to the Daedalus/ControllerConfigs directory. There are a few examples provided which should give an overview of what is possible.

Screenshots

daedaluspsp3.png

daedaluspsp2.png

Changelog

R13 2007/11/04

  • Savestate support.
  • Improved dynarec load/store code generation to remove a branch and a couple of instructions.
  • Dynarec now generates much better code for fragments which branch to themselves.
  • Dynarec load/stores through the stack pointer are now much more efficient.
  • Avoid invalidating the instruction cache where possible.
  • Simplified CPU event handling, making it slightly more efficient.

R12 2007/06/26

  • Fixed issue preventing Goldeneye from being loaded.
  • Fixed dynarec for Goldeneye.
  • Fixed dynarec for Super Smash Bros.
  • Fix various texturing issues with 4bpp and small or non power-of-2 textures.
  • Fix TexRect instructions with negative s/t components.
  • Fixed the HUD in Mario 64 (broken in R11.)
  • Fixed lights in F3DEX2 microcodes.
  • Correctly implement instruction fetch exceptions, improving compatibility.
  • Improved floating point compatibility.
  • Correctly handle mask_s/mask_t tile values.
  • Implemented a few custom blend modes.
  • Screenshots just cover visible viewport.

R11 2007/05/06

  • Large overhaul of rom settings and preferences. All settings should now be persistant.
  • Native support for palettised textures for faster rendering and less memory usage.
  • Provided a fixed size pool for all texture memory, to limit memory usage.
  • Expansion Pak enabled by default.
  • Updated rom info database to include save mechanism for many roms.
  • Fix memory leak in texture cache.
  • Fixed conversion of RGBA/32bpp textures with odd alignments.
  • Fix crash which occurred when recolouring textures in low memory situations.
  • Large rewrite of texture cache to reduce memory usage and improve performance.
  • Various optimisations to the way textures are looked up in the cache and installed.
  • Optimise offsetting/scaling of texture coordinates.
  • Improve performance of dynarec fragment cache and reduce memory fragmentation.

R10 2007/04/02

  • Added frameskip option.
  • Added framerate limiting option.
  • Added adjustable stick deadzone.
  • Allow pause menu to be activated even when rom emulation has hung.
  • Fix crash when no roms found, added explanatory message.
  • Fix flickering when small number of roms found.
  • Fix texture hash frequency check.
  • Finally got code compiling with -O3 optimisation flag in GCC.
  • Use VFPU for InvSqrt (thanks hlide!)
  • Improved VFPU code for clipping and tnl (thanks Raphael!).
  • Improved inlining of AddTri.
  • Reduced time spent searching for overridden blend modes.
  • Remove debug console in public release builds (smaller footprint and slight speedup.)

R9 2007/02/22

  • Added support for RGBA 4444 and 5551 textures.
  • Tidied up all the texture conversion code, fixing a few bugs in the process.
  • Fixed the width/height of FillRect calls in 1 and 2 cycle mode.
  • Fixed a blending bug.
  • Use 16-bit textures on the PSP to represent 16-bit N64 textures.
  • Added mirrored texture support.
  • Fixed a LoadTile bug, allowing a couple of hacks to be removed.
  • Added some new blend modes for various roms.
  • Fixed the Tri2 command for F3DLX microcodes.
  • Fixed a bug in busy-wait detection.
  • Fixed a few dynarec stability issues (relating to exceptions occuring mid-trace).
  • Added audio support.
  • Added the ability to dump textures (developer builds only at the moment).
  • Fixed screenshots. Again.
  • Implemented cmp.s, cvt.s, cvt.w, mtc1, mfc1, bc1f, bc1t, j, cfc1, ctc1, daddu, trunc.w.s, bc1t, bc1f, bc1tl, bcifl, bnel, beql, blezl, bgtzl, bltzl, blezl in dynarec.
  • Avoid setting the branch delay flag and current PC in generated dynarec code unless necessary.
  • Much better memory access handling in dynamically recompiled code.
  • Use a second code buffer for generated dynarec code, to avoid polluting the instruction cache.
  • Further improve the memory access handling in generated dynarec code.
  • Fix register usage analysis for lwc1/swc1/mfc1/mtc1 which was preventing base registers used in these instructions from being cached.
  • Have compensation blocks restore nobbled registers, so on-trace code does't need to reload.
  • New automatic blender.
  • New front-end.
  • New pause menu, with option to reset to main menu.

R8 2006/08/25

  • Replaced all uses of sceCtrlReadBufferPositive with sceCtrlPeekBufferPositive.
  • Various known value optimisations for the dynamic recompilation engine.
  • Various texture cache optimisations and rendering optimisations.
  • Implemented a new clipping method which is more efficient and gives better results.
  • Removed 'tesselate large triangles' setting.
  • Added option to reset emulator to the main menu.
  • No longer use index buffers for rendering.
  • Implement matrix multiplication using VFPU.
  • Implement vertex transform and lighting code using VFPU.
  • Implement clipping code using VFPU.
  • Minor AddTri optimisations.
  • Free background and font textures while emulator is running to free VRAM.
  • Fixed bug in default controller config (c-down and dpad-down were broken).

R7 2006/08/13

  • Avoid checking for interrupts in dynarec code in most situations.
  • Optimise dynarec Load/Store instructions to avoid checking for interrupts directly.
  • Implemented the remaining 32-bit integer instructions in the dynarec.
  • Implemented the remaining commong load/store instructions in the dynarec.
  • Implemented JAL/JR in dynarec.
  • Optimised various texture cache related features.
  • Added various known value optimisations to the dynarec engine.
  • Link together blocks even when they exit with branch likely instructions.
  • Added option to allow frequency of texture update checks to be reduced.
  • Added the ability to configure buttons
  • Fixed a couple of compatibility issues caused by the dynarec.
  • Fixed a couple of issues related to self-modifying code and the dynarec.
  • Fixed issues with the framerate counter flickering.

R6 2006/07/19

  • Added over 50 new combiner modes.
  • Added support for c-buttons.
  • Load roms from ms0:\N64 in addition to local roms directory.
  • Fixed backface culling issues.
  • Correctly implemented flipping to avoid flickering with certain roms.
  • Plugged memory leak in texture handling code, fixing various crashes.
  • Fixed issue which caused screenshot function to hang the emulator.

R5 2006/06/15

  • New DynaRec engine, resulting in significant performance improvements.
  • New front end - ability to toggle a couple of options (more to come).
  • Save game first pass (eeprom4k, eeprom16k and mempak).
  • Various interpreting engine optimisations.
  • Use .png fileformat for background images, save ~380KB.
  • Stripped out unnecessary code, save ~250KB.

R4 2006/05/05

  • Disable PSP FPU exceptions, enabling many roms to run.
  • Fixed ambient lighting bug.
  • Fixed scissoring.
  • Only create temp rom file if compressed (not swapped).
  • Fixed decaling offset.
  • Lots of combiner additions/fixes.

R3 2006/05/02

  • Added support for streaming in large roms on demand.
  • Various combiner (graphics) fixes.
  • Fixed 120K wasted memory.
  • Minor cosmetic (debug output) tweaks.
  • Stopped debug output obscuring screenshots.

R2 2006/05/01

  • Now runs in user-mode.
  • Rom selector now recognises .z64/.rom files.
  • Fixed various hard-coded paths.
  • Debug output is now correctly colourised.

R1 2006/05/01

  • Initial Release.

Credits

The Audio HLE code used in Daedalus was adapted from Azimer's great plugin for PC-based emulators. Thanks Azimer!

A special thanks to everyone who was involved with Daedalus on the PC in the past.

Hello to everyone I used to know in the N64 emulation scene back in 2001-hope you are all doing well!

A huge thanks to the pspdev guys for all their work.

Many thanks to 71M for giving me the inspiration to get this ported over and lots of pointers along the way.

A big hello to the Super Zamoyski Bros.

Many thanks to all the people who suggested using the Circle button to toggle between the Dpad and C buttons.

Many thanks to hlide and Raphael in the PS2Dev forums for advice on various VFPU issues.

Many thanks to Exophase and laxer3A for their continued input.

Thanks to Lkb for his various improvements to the PC build. The current savestate support is derived from his work.

External links

Advertising: