Rom image failures ================== Select 4i2 onwards Select 4i1 on dynarec ============================================================================== Potential TODO and investigation ============================================================================== ARM ------------------------------------------------------------------------------ - Should implement LDRSB instruction in StrongArm, as this could work reliably on RPC architecture. No need to implement LDRSH and LDRH as these can not work reliably due to IOMD not handling 16-bit accesses. - Some aspects of StrongARM are still compile-time options - Some ARM features default to SA behaviour - Implement MSR SPSR, #imm ('opcode' 0x36) Build ------------------------------------------------------------------------------ - Enable debug (-ggdb) on all repository builds, turn off for release - Build both binaries at the same time (however Unix gives them the same name) - Add build options to only build interpreted or dynarec - For non-X86 platforms only build interpreted (instead of failing) - INVESTIGATE: devcpp as frontend IDE to mingw - ACHIEVE: Warning free windows build - Resolve warnings on latest GCC - Big-endian fixes and merge CP15 ------------------------------------------------------------------------------ - Give #define names to the CP15 registers - Tidy-up readcp15(). - Check whether CP15 read registers are different on StrongARM (and ARM810) Documentation (user) ------------------------------------------------------------------------------ - Write a document that contains info on setting up diff versions, with pointers to boot sequences and the like. - Document new scrollwheel support - PS/2 only - Which versions of RISC OS? - Document 'configure mousetype' for different models FDC ------------------------------------------------------------------------------ - Unable to format floppy discs. Implement the 0x4D command, Format a Track MFM - Some method of getting the floppy drive light out, for debugging the POST checks. - ENSURE: Floppy disc only to load raw images of correct size 800 or 1600k - Add support for other disk image formats? (other than raw) HostFS ------------------------------------------------------------------------------ - Consider implementing multiple mount points and free space from upstream. - Consider returning to a memory mapped IO model. - Implement free space code, use RO4 Installer as a test case as it currently does nto detect the free space. IDE ------------------------------------------------------------------------------ - Fix cylinder count of emulated drives, to allow formatting. - Disallow previous incorrect HD images and provide conversion program. - ADD: Refuse to use disk images which suffered from Tom's incorrect sector calculcation. - Instead provide a suitable converter. Remove the workaround from ide.c - Default is hack enabled (therefore all disk images are offset by 512 bytes) - Exit (due to partial support for ATAPI MODE_SENSE_10 command) Boot up RO 3.70 Choose an ISO image Select "Volume..." from the CDFS menu Exits (Testing done with 4.02 and 4.39 (which has useful Info... option on menu)) - cdrom-linuxioctl.c doesn't report disk drive empty correctly - results in "CDFS does not support that type of disc" - cdrom-linuxioctl.c still returns disk contents after disk is ejected - cdrom-linuxioctl.c hard codes disk size to 600M (won't work for larger) - cdrom-linuxioctl.c leaks file handles in ioctl_ready() - Booting up with CD mode in IOCTL mode on Linux doesn't work, however switching between Empty and IOCTL mode makes it work again. - BUG: The 1 byte default hd4.hdf is identified as a 65536 sector which formats to a 32GB file. This is not a good default. - BUG: In ide.c: At least the IDE identify command is not valid for big-endian. - See QEmu for details. - Add ICS IDE controller IOMD ------------------------------------------------------------------------------ - Address ranges for subsystems such as SuperIO should be shifted down, before being passed to subsystem functions. Subsystem functions should assert() the ranges being passed to them are what they expect. Mem ------------------------------------------------------------------------------ - Check how many pages sizes are supported, and use UNIMPLEMENTED to protect against unsupported values. - Implement SIMM 1, bank 0 and 1, for 256MB memory support. - Integrate the code for read or write byte/word, too much duplication. - Add UNIMPLEMENTED to unsupported memory ranges. Mouse ------------------------------------------------------------------------------ - Add Daniel Clarke's Scrollwheel support. - Improve mousehack - Does not work in rectangular pixel modes or mode 13 (xeig or yeig not normal) - OS_Byte 106 pointer disconect not working. - BUG: after using capture mouse, changing to follow host mouse, will often lead to an unusable pointer off the bottom left of the screen. Networking ------------------------------------------------------------------------------ - Continue EtherY experimentation. - User-mode networking ROM ------------------------------------------------------------------------------ - Automatically open the ROM Image webpage on rom images not found - Will need platform specific (or does Allegro do this?) - ACHIEVE: romload.c, remove chdir() calls from open roms code, it's unpleasant. Sound ------------------------------------------------------------------------------ - Sound is rubbish SuperIO ------------------------------------------------------------------------------ - 37c665gt support several different styles of operation PS/2, Model 30 etc. Discover which one is in use, and add UNIMPLEMENTED if any other is attempted to be set. UI ------------------------------------------------------------------------------ - Add Help, About to Linux + windows. - Selected CDROM mode in GUI should have tick-mark or similar - Dynamically update Host CD/DVD option in menu (disappear if no host drive) - Add multiple if multiple available - Automatically open the ROM Image webpage on rom images not found - Better icon - On Linux, bring up GUI menu, click close on window (no apparent effect), choose innocuous menu option, program quits (presumably close was queued) VIDC ------------------------------------------------------------------------------ - Mode 29 and mode 30 are broken (800x600 in 1 and 2 bpp). - Refactor the large draw function. - INVESTIGATE: discover meaning and setting of the HARDWAREBLIT #define - INVESTIGATE: if RO 4.02 is patched to 8MB vram, how do you actually use that much? no options in config window. - INVESTIGATE: What are blitting optimisation and alternate blitting do "Settings->Alternative blitting code - Workaround for a bug discovered when using my GeForce 256. Enable if there are obvious video problems when eg moving the mouse around the desktop. If you don't need it then leave it off - it can be slower than normal." - readme.txt 0.7 release Alternative Blitting fixes flickering in full screen mode on my laptop - sets var config.stretchmode "Settings->Blitting optimisation - Allow RPCemu to avoid processing the video when there are obviously no changes. Gives a speedup, but has major usability problems on some Windows systems - the mouse appears to 'stick' and be generally unusable." - sets var config.skipblits - Should be able to run with 24bpp display mode. Currently requires either 15, 16 or 32 bpp. - Investigate if a usable display is possible/worthwhile on Windows in 8bpp. - (On Windows at least) changing display colour depth or resolution results in the display being a grey window (though the emulator keeps on running). Returning to the original settings restores the display. Perhaps RPCEmu could adapt better to these changes. - On Windows the bottom pixel row of the display is missing, though whether it is offset or truncated has not yet been determined. It looks OK on Linux (though this should be double-checked to make sure it doesn't have a similar problem elsewhere (e.g. the top)) - Doubling up of video modes (rectangular pixel or mode 13) is not available on the UNIX platform. - Implement 4px border and add border code to vidc Unix ------------------------------------------------------------------------------ - Investigate system wide installation of binary. Windows ------------------------------------------------------------------------------ - Help -> Contents loads documentation into browser - Consider making Hard Disk files sparse - Pausing emulator when minimised should be optional - Default to off - Add to other platforms - NX bit, Data Execution Prevention, we need to find a similar API to unix for windows to allow Dynarec to run with NX bit protection turned on. - probably VirtualAlloc() and VirtualProtect(): - "To execute dynamically generated code, use VirtualAlloc to allocate memory and the VirtualProtect function to grant PAGE_EXECUTE access. Misc ------------------------------------------------------------------------------ - Idle module - Tidy-up - Or consider Portable module - More Doxygen comments on everything. - BUG: Matthew 32/64 dynamic recompiler not displaying mouse. - presence of idle module affects it - BUG: Config options trouble - altering config options via menu does not work reliably - seg faults - failure to boot again after changes. - When restart happens not all subsystems are correctly reset - ACHIEVE: Add GPL2 header to all source, header and Make files, (c) to Tom Walker, - use 2 or 2+ like hostfs. Need to verify with Tom Walker - ACHIEVE: remove old 0.6 and earlier version number from credit comments - check get_executable_name() buffer size requirements. - BUG: Self extracgin !Sparkplug 2.26 does not run on 3.50 after being decompressed with 3.60 - ARM610, Interpreter, linux, - 676b4aa171e4+ (trunk) tip ============================================================================== Done ============================================================================== Build ------------------------------------------------------------------------------ - For unrecognised platforms, fall back to rpc-linux.c (don't define RPC_LINUX) (0.8.7) - Solaris build (0.8.8) - Consider later GCC with MinGW (0.8.9) CMOS ------------------------------------------------------------------------------- - Investigate whether we can auto-configure mousetype based on hardware - Does RISC OS move the RAM location? no. (0.8.9) CP15 ------------------------------------------------------------------------------ - There are two major ARM Architectures with diff behaviours and registers ARMv3 and ARMv4. Seperate their read and write reg funcs. (0.8.5) - Read and write to FSR and FAR reg is wrong on SA, it shouldn't reset cache. ARMv3/ARMv4 difference. (0.8.5) Documentation (developer) ------------------------------------------------------------------------------ - Document how large files are supported on all platforms: - MinGW has to use *64() functions explicitly - Mac OS X does not have or need *64() functions, so pre-processor is used - Linux and Solaris have two choices, using *64() functions explicitly is OK INVESTIGATE: Large files support on Windows build via MinGW and on Mac OS X MinGW supports large files, however have to use 64-bit transitional API (fopen64, etc.). Does not support -D_FILE_OFFSET_BITS=64 like Linux, Solaris, etc. Opposite problem on Mac OS X - always supports large files using traditional API (does not need or have 64-bit variants). Accommodating MinGW and Mac OS X requires use of pre-processor or similar techniques. Documentation (user) ------------------------------------------------------------------------------ - Update ROM image page - Listing whether each version is running on Int or Dynarec works. - Move 3.80 + Pace roms out of that table, to de-emphasise them. To many variants confuses the users. - Mention 5.15, link to ROOL and 5.15 notes page. - Add saving 6MB romimage instructions - Add decompressing Select images instructions. - Check manual to see if any known issues are resolved. HostFS ------------------------------------------------------------------------------ - Synchronise with later Arcem fixes. (0.8.7) IDE ------------------------------------------------------------------------------ - Configuring two hard drives causes a crash, (confusion after using cdrom) (0.8.6) - Errors when opening ISO files cause crash. (0.8.7) - ISO images won't support more than 2GB on 32-bit (not using large files) (0.8.7) IOMD ------------------------------------------------------------------------------ - Name the bits set in interrupts based upon what they do. (0.8.5) - iomd.fiq.status and iomd.fiq.mask are not reset in the iomd reset function. (0.8.5) - No device could ever successfully raise an interrupt on IRQ-C in ARM 7500 mode. Investigate what IRQ-C is used for. It is not used on the a7000 or a7000+ (0.8.5) Mouse ------------------------------------------------------------------------------- - Add in Select Scrollwheel support. (0.8.7) - ADD: Support for using mouse on 2 button mouse host systems (such as most laptop touchpads) (0.8.9) - BUG: mousehack, Mouse pointer not lined up with active click point (0.8.9) - Load 3.70 - Display mode 27 - Boot from Uniboot off ADFS HD - Load Zap 1.35 from HostFS - Load Paint, pointer is off. Networking ------------------------------------------------------------------------------ - Bridged networking for Linux (0.8.7) - Bridged networking for Windows (0.8.7) - UI for configuring network type (0.8.7) - Make networking errors be reported more directly to the users. (0.8.7) SuperIO ------------------------------------------------------------------------------ - superio reset, fill in all the values from the datasheet for config registers, not just some of them. (0.8.4) - Setting various superio config registers could never work, those that change the IO addresses of various components for example. Add an UNIMPLEMENTED to make sure they are never set. (0.8.5) UI ------------------------------------------------------------------------------ - Rename CDROM -> IOCTL to "Host CD/DVD Drive". (0.8.6) Unix ------------------------------------------------------------------------------ - Update autoconf/automake versions used. - Add MIPS counter to title bar (and remove from console) (0.8.6) VIDC ------------------------------------------------------------------------------ - INVESTIGATE: discover meaning and setting of the FULLSCREENALWAYS #define - Only used on obsolete DOS port, removed (0.8.7) Windows ------------------------------------------------------------------------------ - Fix blank license box on installer (add RTF file?) (0.8.6) Misc ------------------------------------------------------------------------------ - Create a configuration structure to store the variables that users can alter