Fixed FFIX FMV hang

Introduced a short delay on MDEC DMA IRQs
FFIX FMVs are still broken, but now you can skip them
This commit is contained in:
allkern
2024-08-02 12:05:10 -03:00
parent 2b36a055e3
commit a024a29ac2
4 changed files with 8 additions and 12 deletions
+6 -6
View File
@@ -10,9 +10,9 @@ Disney's Hercules Action Game (USA) *22
Disney's The Emperor's New Groove (USA).cue *22
Fixed: Doom (All) *4 (e145a4e)
Fixed: Elder Gate (Japan) *1 (2989bb6)
Fear Effect (USA) (Disc 1) *3
Fixed: Fear Effect (USA) (Disc 1) *3
Fixed: Final Doom (All) *4 (e145a4e)
Final Fantasy IX (USA) (Disc 1) *22
Fixed: Final Fantasy IX (USA) (Disc 1) *22
Fixed: Gran Turismo 2 - Music at the Speed of Sound - The Album (USA) (Bonus PlayStation Disc) *19 (regression)
Hello Kitty - Cube Frenzy (USA) *22
Initial D (Japan) *3 (regression)
@@ -25,17 +25,17 @@ PaRappa the Rapper (Japan) (USA version works) *16
Fixed: Paro Wars (Japan) *12 (e145a4e)
Fixed: Pet in TV - With My Dear Dog (Japan) *1 (2989bb6)
Fixed: Philosoma (USA) *15
PoPoRoGue (Japan) *14
Fixed: PoPoRoGue (Japan) *14 (2989bb6)
Fixed: RayStorm (USA) + RayCrisis (Japan) + RayCrisis - Series Termination (USA) *12
Fixed: Rockman (Japan) *1 (2989bb6)
S.C.A.R.S (USA) *11
SimCity 2000 (USA) *3
Sister Princess 2 - Premium Fan Disc (Japan) (Disc A) *2 (regression)
Star Wars - Rebel Assault II - The Hidden Empire (USA) (Disc 1) *9
Strider Hiryuu 1 & 2 (Japan) (Disc 1) (Strider Hiryuu) *6
Fixed: Strider Hiryuu 1 & 2 (Japan) (Disc 1) (Strider Hiryuu) *6 (2989bb6)
Tama - Adventurous Ball in Giddy Labyrinth (Japan) *5
Time Gal & Ninja Hayate (Japan) (En,Ja) (Disc 1) (Time Gal) *9
Time Gal & Ninja Hayate (Japan) (En,Ja) (Disc 2) (Ninja Hayate) *9
Fixed: Time Gal & Ninja Hayate (Japan) (En,Ja) (Disc 1) (Time Gal) *9
Fixed: Time Gal & Ninja Hayate (Japan) (En,Ja) (Disc 2) (Ninja Hayate) *9
Fixed: Tokimeki Memorial 2 (Japan) *1 (2989bb6)
Fixed: Tomb Raider (USA) *8 (e145a4e)
Tony Hawk's Pro Skater (USA) *10
+2 -2
View File
@@ -506,7 +506,7 @@ void psx_dma_update(psx_dma_t* dma, int cyc) {
}
if (dma->mdec_in_irq_delay) {
dma->mdec_in_irq_delay = 0;
--dma->mdec_in_irq_delay;
if (!dma->mdec_in_irq_delay)
if (dma->dicr & DICR_DMA0EN)
@@ -514,7 +514,7 @@ void psx_dma_update(psx_dma_t* dma, int cyc) {
}
if (dma->mdec_out_irq_delay) {
dma->mdec_out_irq_delay = 0;
--dma->mdec_out_irq_delay;
if (!dma->mdec_out_irq_delay)
if (dma->dicr & DICR_DMA1EN)
-1
View File
@@ -445,7 +445,6 @@ void psx_mdec_write32(psx_mdec_t* mdec, uint32_t offset, uint32_t value) {
mdec->output_depth = 0;
mdec->input_request = 0;
mdec->output_request = 0;
mdec->busy = 0;
mdec->input_full = 0;
mdec->output_empty = 1;
mdec->current_block = 4;
-3
View File
@@ -279,9 +279,6 @@ void timer_handle_irq(psx_timer_t* timer, int i) {
timer->timer[i].irq = 1;
if (trigger) {
if ((i == 1))
printf("timer 1 irq fire\n");
psx_ic_irq(timer->ic, 16 << i);
}
}