From 505519c2bb739c87836b386f1d425972df0a723b Mon Sep 17 00:00:00 2001 From: allkern Date: Thu, 17 Jul 2025 19:23:41 -0300 Subject: [PATCH] vif: Fix write cycles --- src/ee/vif.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ee/vif.c b/src/ee/vif.c index e528c1b..709a235 100644 --- a/src/ee/vif.c +++ b/src/ee/vif.c @@ -90,19 +90,17 @@ static inline void vif_write_vu_mem(struct ps2_vif* vif, uint128_t data) { } else if (vif->unpack_cl > vif->unpack_wl) { // Write data until unpack_wl is reached, then skip unpack_skip vif->vu->vu_mem[(vif->addr++) & 0x3ff] = data; - - vif->unpack_wl_count++; - - if (vif->unpack_wl_count == vif->unpack_wl) { - vif->unpack_wl_count = 0; - vif->addr += vif->unpack_skip; - } } else { printf("vif%d: Unpack error: unpack_cl (%d) < unpack_wl (%d)\n", vif->id, vif->unpack_cl, vif->unpack_wl); exit(1); } vif->unpack_cycle++; + + if (vif->unpack_cycle == vif->unpack_wl) { + vif->addr += vif->unpack_skip; + vif->unpack_cycle = 0; + } } void vif0_send_irq(void* udata, int overshoot) { @@ -313,7 +311,9 @@ static inline void vif_handle_fifo_write(struct ps2_vif* vif, uint32_t data) { if (filling) { printf("vif%d: Filling mode unimplemented\n", vif->id); - exit(1); + + return; + // exit(1); } // To-do: Handle for filling