From f45b0b8fa9b0670930da40ebf5dab8334cdffeb9 Mon Sep 17 00:00:00 2001 From: wheremyfoodat Date: Tue, 23 Aug 2022 00:09:57 +0300 Subject: [PATCH] [GTE] More info about load delay slots --- docs/geometrytransformationenginegte.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/geometrytransformationenginegte.md b/docs/geometrytransformationenginegte.md index ffc47a2..c267754 100644 --- a/docs/geometrytransformationenginegte.md +++ b/docs/geometrytransformationenginegte.md @@ -14,7 +14,7 @@ #### GTE Operation The GTE doesn't have any memory or I/O ports mapped to the CPU memory bus, instead, it's solely accessed via coprocessor opcodes:
-``` +```x86asm mov cop0r12,rt ;-enable/disable COP2 (GTE) via COP0 status register mov cop2r0-63,rt ;\write parameters to GTE registers mov cop2r0-31,[rs+imm] ;/ @@ -24,6 +24,11 @@ instead, it's solely accessed via coprocessor opcodes:
jt cop2flg,dest ;-jump never ;\implemented (no exception), but, jf cop2flg,dest ;-jump always ;/flag seems to be always "false" ``` + +#### GTE Load Delay Slots +Using CFC2/MCF2 has a delay of 1 instruction until the GPR is loaded with its new value. +Certain games are sensitive to this, with the notable example of Tekken 2 +which will be filled with broken geometry on emulators which don't emulate this properly.
GTE (memory-?) load and store instructions have a delay of 2 instructions, for any GTE commands or operations accessing that register. Any? That's wrong!
GTE instructions and functions should not be used in