branch delay slot better support.

Still reviewing. Need to see if gte is handled properly.
This commit is contained in:
ed
2026-07-23 18:35:02 -04:00
parent 08af73d0d2
commit d56adab38f
5 changed files with 218 additions and 78 deletions
+1 -1
View File
@@ -378,7 +378,7 @@ void update(PrimitiveArena* pa, U4* ordering_buf)
smem.floor.rot.y += 5;
}
// --- TAPE DIAGNOSTICS ---
if (1)
if (0)
{
LP_ U4 mem_temp_tape[512]; FArena tape_arena; farena_init(& tape_arena, slice_ut_arr(mem_temp_tape));
TapeBuilder tb = tb_make_old(& tape_arena); tb_scope(& tb) {
+4 -4
View File
@@ -112,18 +112,18 @@ MipsAtom_(floor_f3_face) atom_info(atom_phase(floor_f3)
mac_load_tri_indices( R_T0, R_T1, R_T2),
mac_gte_load_tri_verts(R_T0, R_T1, R_T2),
nop2, gte_cmdw_rotate_translate_perspective_triple, // 2 nops retire the final cpu -> gte writes before RTPT
/*nop2,*/ gte_cmdw_nclip,
gte_cmdw_nclip,
/* Culling (Branch forward if Backface) */
/*nop2,*/ gte_mv_from_data_r(R_T0, C2_MAC0),
gte_mv_from_data_r(R_T0, C2_MAC0),
nop, branch_le_zero(R_T0, atom_offset(culling, floor_f3_face_exit)), nop, // required gte -> cpu load-delay slot.
/* Format Primitive */
mac_format_f3_color(0xFF, 0xFF, 0xFF), // RGB-form (R=FF, G=FF, B=FF = white)
mac_gte_store_f3_post_rtpt(),
/* Calculate Depth */
/*nop2,*/ gte_avg_sort_z3,
/*nop2,*/ gte_mv_from_data_r(R_T1, C2_OTZ),
gte_avg_sort_z3,
gte_mv_from_data_r(R_T1, C2_OTZ),
/* Bounds Check OTZ < 2048 (Branch forward to skip insertion) */
add_ui( R_AT, R_0, OrderingTbl_Len),
set_lt_u( R_AT, R_T1, R_AT),