***Major issues*** Tomb Raider(PAL) (reported, and confirmed) "was fighting Tomb Raider PAL this night, when you get out of pool in Lara's home the game bugs out: issues GetlocP, waits for it to complete and expects seek to be NOT complete (i.e. older location)" Thoughts on emulating: CalcSpinupTime() DS_SPINUP StatusAfterSpinup ORRR we could scrap that StatusAfter* idea and have some kind of fancy function callback system... Monkey Hero Locks up shortly after title screen. It's straddling a framebuffer write command's parameters across two linked-list blocks(2 words at the end of the first block, and 1 word at the beginning of the next block). AFAIK, this construct will only work on the real thing under *very* strict timing constraints. Probably explains why it reportedly doesn't work on the PS2. It's as easy to fix as changing a certain 2 to a 3 in the GPU command table, and probably won't break anything, but I'm still reluctant to do it... Simple 1500 Series Vol. 057 - The Maze Locks up during startup; looks to be poorly programmed and extremely sensitive to seek timing. Transformers - Beast Wars Transmetals Locks up during loading screen. (CD timing issue) It looks like a terrible game though, at least. ---------------------------------------------------------------------------------------------- ***Medium issues*** Championship Motocross 2001 Invisible driver. GHOSTRIDER~ The palette data in RAM is apparently being selectively zero'd out between the DMA from CDC and the DMA to GPU for some reason. Timing issue related maybe? (Probably CPU instruction timing issue) Nicktoons Racing Totally fubared sound effects. Likely CPU instruction timing-related(decreasing the IPC fixes this problem), or perhaps timing related to SPU RAM writes? Resident Evil - Director's Cut(non-Dual Shock-version) Controller configuration screen pops up on some screen transitions; probably one of those stupid seek timing-related issues. ----------------------------------------------------------------------------------------------- ***Lesser issues*** Final Fantasy 8 Reported 3D model(character) flicker at some points in the game - look into it. Tactics Ogre Menu/Overlay elements on the map screen periodically flicker; seems to be a timing thing probably related to the sound engine in the game. Although upon further inspection, it may be a GPU command timing issue in that we're emulating the GPU primitive drawing faster than occurs on an actual PS1. Might require texture cache simulation to some degree. Castrol Honda Superbike Racing Graphical glitches on startup, menus(fixed now probably), and loading screens. (What is with all these racing games having weird timing-related problems, it's like some sort of curse) Vigilante 8 Has weird red and green(and a few blue) garbage pixels in patches sometimes during gameplay; "garbage" pixel placement is somewhat sparse, so it might not even be noticeable if it were to occur on a PS1 with composite or S-video output, due to limited chroma bandwidth. Final Fantasy 7 "Sony Computer blah blah" game startup image is a bit glitchy; interlacing-related glitch. That part is really sensitive to CPU, GPU, DMA, and RAM timing... Adventures of Lomax, The "QSOUND" loading screen during startup is a flickery mess; interlacing-related glitch from the looks of it. Maybe it's like that on an actual PS1 too? Nightmare Creatures BIOS reverb sound excessively contaminates beginning of game. Shadow Master Might have broken startup images. WipeOut 3 Music stops playing after a long while; maybe it's supposed to do that? ----------------------------------------------------------------------------------------------- ***Chaotic timing issues(listed here for reference and testing after any future timing tweaks or improvements)*** Battle Arena Toshinden NBA Jam Extreme Zero Divide Run too fast if CPU and(/or?) GPU operations execute too fast. Probably not an issue anymore, but still listed here for reference. iS: Internal Section Arcade Party Pak (Toobin) Next Tetris, The Extremely sensitive about interlacing semantics, especially in regards to the high bit of the GPU status register when entering interlaced 480-height mode. Ballblazer Champions Excessively sensitive to timing issues; might lock up during startup sometimes. FIFA - Road to Worldcup 98 (USA) Used to lock up during startup; probably CPU instruction timing-related, or MDEC timing related, or CDC timing related, or DMA timing related, or maybe the moon phase is to blame! [CDC] WARNING: Interrupting command 0x02, phase=0, timeleft=1195 with command=0x02 [CDC] Bad number(5) of args(first check) for command 0x02 0x39 0x23 0x22 0x41 0x67 Freestyle Motocross: McGrath vs. Pastrana Used to suffer from random fairly long(but finite) freezes during gameplay. Possibly CPU instruction-timing related. Possibly CDC-timing related. [CDC] Command: ReadN --- [CDC] Command: Standby --- [CDC] Command: Nop --- [CDC] Command: Setmode --- 0xa0 [CDC] Command: Setloc --- 0x08 0x13 0x53 [CDC] Command: ReadN --- 20076 [CDC] Command: Standby --- [CDC] Command: Nop --- [CDC] Command: Setmode --- 0xa0 [CDC] Command: Setloc --- 0x08 0x13 0x61 0x800668B8 Resident Evil 2 Lockup on second disc in a certain place; probably related to seek timing. Seems to be fixed now, but still listed here for reference. Nightmare Creatures Shoddy CD reading code that's unreasonably sensitive to CD access timings. It's a wonder it even ever works on an actual PS1(my copy of it certainly doesn't). Wing Commander 4 Used to lock up sometimes during FMV sequences(might be sensitive to seek delays or SPU IRQ timings). ----------------------------------------------------------------------------------------------- Star Wars Dark Forces notes(for working towards removing a kludge/hack in the DMA IRQ handling) PC=0x8001B124: [DMA] Write: 1f8010f4 008a0000, DMAIntStatus=0000000c if(V == 0x008a0000 && DMAIntStatus == 0x0000000c) DBG_Break(); // V |= 8 << 24; //V |= 4 << 24; Add a means of grabbing and passing CIRC data, when using a physical CD, from Mednafen core to the PSX module so that the correct subheader fields can be chosen when there is a mismatch between the two instances of each field during XA ADPCM playback. Ensure(long-term, IE a note to the FUTURE) that input device state is latched in independent variables at the start of the input device's handling of a state read command, so that when games are reading device state across an MDFNI_Emulate() boundary, the data won't change in the middle, which could hypothetically cause problems in some rare circumstances(and make entering button combos in games more finicky). Respect device(GPU, SPU, etc.) DMA mode/memory access mode bits(more for homebrew's sake than commercial games'). Test if Dual Analog vibration compatibility mode can be restored with DualShock after using DualShock extended features if the "Analog" mode button on the gamepad is pressed after the extended features are used. Test time delta between GPU LL DMA end and GPU non-busy status for various primitive types in sequence on a PS1. Test IRQ and COP0 latencies; PSX IRQ controller latency, software IRQ bit latency, latency of both relevant COP0 IRQ enable bits. Test IRQ with LWC2. Test IRQ with COP0 instructions(interrupted execution or not?). Determine maximum quad height and width. See if drawing is an all-or-nothing thing, or if one triangle of the pair will still be drawn if it's not too large. Test 0x0 and 1x1 polygon throughput for all triangle and quad drawing commands. Fix line drawing algorithm to match test results on the real thing. The SPU in the PS1 might sometimes drop voice-on events when playing an ADPCM block that loops to itself(and was also the first and only ADPCM block, at least in the test program I noticed the issue in); investigate further. Make sure debugger COPn disassembly is correct(no typos or whatnot).