Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
176 lines (124 sloc) 7.87 KB
***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:
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 ---
[CDC] Command: Standby ---
[CDC] Command: Nop ---
[CDC] Command: Setmode --- 0xa0
[CDC] Command: Setloc --- 0x08 0x13 0x61
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).