mirror of
https://github.com/Ed94/pikuma_ps1.git
synced 2026-08-14 11:38:14 +00:00
oops
This commit is contained in:
@@ -73,7 +73,7 @@ typedef Slice_(B1);
|
|||||||
|
|
||||||
#define slice_iter(container, iter) (T_((container).ptr) iter = (container).ptr; iter != slice_end(container); ++ iter)
|
#define slice_iter(container, iter) (T_((container).ptr) iter = (container).ptr; iter != slice_end(container); ++ iter)
|
||||||
#define slice_arg_from_array(type, ...) & (tmpl(Slice,type)) { .ptr = Array_decl(type,__VA_ARGS__), .len = Array_len( Array_decl(type,__VA_ARGS__)) }
|
#define slice_arg_from_array(type, ...) & (tmpl(Slice,type)) { .ptr = Array_decl(type,__VA_ARGS__), .len = Array_len( Array_decl(type,__VA_ARGS__)) }
|
||||||
#define slice_from_array(type, array) (tmpl(Slice,type)) { .ptr = array, .len = S_(array) / S_(type) }
|
#define slice_from_array(type, array) (tmpl(Slice,type)) { .ptr = array, .len = Array_len(array) }
|
||||||
|
|
||||||
FI_ void slice_zero_(Slice s) { slice_assert(s); mem_zero(u4_(s.ptr), s.len); }
|
FI_ void slice_zero_(Slice s) { slice_assert(s); mem_zero(u4_(s.ptr), s.len); }
|
||||||
#define slice_zero(s) slice_zero_(slice_to_ut(s))
|
#define slice_zero(s) slice_zero_(slice_to_ut(s))
|
||||||
|
|||||||
+1
-1
@@ -36,7 +36,7 @@ NI_ void pad_bios_init_start(PadBiosRaw* raw0, PadBiosRaw* raw1)
|
|||||||
* $t2 = 0xB0 (BIOS B-table address) */
|
* $t2 = 0xB0 (BIOS B-table address) */
|
||||||
asm volatile(
|
asm volatile(
|
||||||
asm_words(
|
asm_words(
|
||||||
or_u( R_A2, R_A0, R_0), /* $a2 = $a1 = raw1 */
|
or_u( R_A2, R_A1, R_0), /* $a2 = $a1 = raw1 */
|
||||||
add_ui( R_A1, R_0, bios_pad_buffer_size), /* $a1 = 0x22 */
|
add_ui( R_A1, R_0, bios_pad_buffer_size), /* $a1 = 0x22 */
|
||||||
add_ui( R_A3, R_0, bios_pad_buffer_size), /* $a3 = 0x22 */
|
add_ui( R_A3, R_0, bios_pad_buffer_size), /* $a3 = 0x22 */
|
||||||
add_ui( R_T1, R_0, bios_init_pad_2), /* $t1 = 0x12 */
|
add_ui( R_T1, R_0, bios_init_pad_2), /* $t1 = 0x12 */
|
||||||
|
|||||||
@@ -480,9 +480,9 @@ internal MipsAtom* resolve_look_at__matrix_vector_proc(AtomArena_R aa
|
|||||||
gte_mv_to_data_r(r_tmp2, C2_IR3),
|
gte_mv_to_data_r(r_tmp2, C2_IR3),
|
||||||
nop2, /* MTC2 retirement (2 slots) */
|
nop2, /* MTC2 retirement (2 slots) */
|
||||||
|
|
||||||
/* === MVMVA pass 2 EXACT C11 command: 0x4A49E012 ===
|
/* === MVMVA pass 2 — C11 ApplyMatrixLV command ===
|
||||||
* sf=1, mx=0 (RT), v=3 (IR), cv=3. Reads RT × IR >> 12. */
|
* sf=1, mx=0 (RT), v=3 (IR), cv=3. Reads RT × IR >> 12. */
|
||||||
gte_cmdw_mvmva_c11_pass2_exact,
|
gte_cmdw_mvmva_c11_pass2,
|
||||||
nop, /* GTE interlock */
|
nop, /* GTE interlock */
|
||||||
|
|
||||||
/* === mfc2 MAC1/2/3 → r_tmp0/1/2 === */
|
/* === mfc2 MAC1/2/3 → r_tmp0/1/2 === */
|
||||||
@@ -515,17 +515,19 @@ I_ MipsAtom* resolve_look_at__trans_matrix_proc(AtomArena_R aa
|
|||||||
, U4 r_scratch
|
, U4 r_scratch
|
||||||
, U4 r_off_ptr
|
, U4 r_off_ptr
|
||||||
, U4 r_tmp0
|
, U4 r_tmp0
|
||||||
|
, U4 r_tmp1
|
||||||
|
, U4 r_tmp2
|
||||||
) MipsAtom_Proc_(resolve_look_at__trans_matrix, aa, {
|
) MipsAtom_Proc_(resolve_look_at__trans_matrix, aa, {
|
||||||
/* Pop look_at* from tape. */
|
/* Pop look_at* from tape. */
|
||||||
load_word(r_look_at, R_TapePtr, O_(Binds_ResolveLookAtPopAndTrans,look_at)),
|
// load_word(r_Vlook_at, R_TapePtr, O_(Binds_ResolveLookAtPopAndTrans,look_at)),
|
||||||
add_ui_self( R_TapePtr, S_(Binds_ResolveLookAtPopAndTrans)),
|
// add_ui_self( R_TapePtr, S_(Binds_ResolveLookAtPopAndTrans)),
|
||||||
|
|
||||||
/* r_off_ptr = &off (= &scratch.eye since atom 6b overwrote eye with off). */
|
/* r_off_ptr = &off (= &scratch.eye since atom 6b overwrote eye with off). */
|
||||||
add_si(r_off_ptr, r_scratch, O_(ResolveLookAtScratch,eye)),
|
add_si(r_off_ptr, r_scratch, O_(ResolveLookAtScratch,eye)),
|
||||||
nop,
|
nop,
|
||||||
|
|
||||||
/* Copy off → look_at.t[] (mac_trans_matrix: m->t = v). */
|
/* Copy off → look_at.t[] (mac_trans_matrix: m->t = v). */
|
||||||
mac_trans_matrix(r_look_at, r_off_ptr, r_tmp0),
|
mac_trans_mt3s3s4(r_look_at, r_off_ptr, r_tmp0, r_tmp1, r_tmp2),
|
||||||
|
|
||||||
mac_yield()
|
mac_yield()
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -362,7 +362,7 @@ internal void resolve_look_at_init(void) {
|
|||||||
U4 const r_off_ptr_6c = R_T1; /* &scratch.eye (= off dst) */
|
U4 const r_off_ptr_6c = R_T1; /* &scratch.eye (= off dst) */
|
||||||
U4 const r_tmp0_6c = R_T2;
|
U4 const r_tmp0_6c = R_T2;
|
||||||
smem.resolve_look_at_atom_addrs[9] = resolve_look_at__trans_matrix_proc(& ab,
|
smem.resolve_look_at_atom_addrs[9] = resolve_look_at__trans_matrix_proc(& ab,
|
||||||
r_look_at_6c, r_scratch_6c, r_off_ptr_6c, r_tmp0_6c);
|
r_look_at_6c, r_scratch_6c, r_off_ptr_6c, r_tmp0_6c, R_T3, R_T4);
|
||||||
|
|
||||||
/* Sanity check: arena didn't overflow. */
|
/* Sanity check: arena didn't overflow. */
|
||||||
assert(ab.used <= ResolveLookAtArena_Size);
|
assert(ab.used <= ResolveLookAtArena_Size);
|
||||||
@@ -409,7 +409,7 @@ I_ void resolve_look_at(
|
|||||||
tb_data(tb, u4_(look_at));
|
tb_data(tb, u4_(look_at));
|
||||||
}
|
}
|
||||||
tb_emit(tb, smem.resolve_look_at_atom_addrs[9]); {
|
tb_emit(tb, smem.resolve_look_at_atom_addrs[9]); {
|
||||||
tb_data(tb, u4_(look_at));
|
// tb_data(tb, u4_(look_at));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -425,9 +425,9 @@ void update(PrimitiveArena* pa, U4* ordering_buf)
|
|||||||
tb_emit_(pad_bios_snapshot);
|
tb_emit_(pad_bios_snapshot);
|
||||||
tb_data_(raw, & smem.pad_raw[0]);
|
tb_data_(raw, & smem.pad_raw[0]);
|
||||||
tb_data_(state, & smem.pad[0]);
|
tb_data_(state, & smem.pad[0]);
|
||||||
tb_emit_(pad_bios_snapshot);
|
// tb_emit_(pad_bios_snapshot);
|
||||||
tb_data_(raw, & smem.pad_raw[1]);
|
// tb_data_(raw, & smem.pad_raw[1]);
|
||||||
tb_data_(state, & smem.pad[1]);
|
// tb_data_(state, & smem.pad[1]);
|
||||||
|
|
||||||
tb_emit_(pad_input_cam);
|
tb_emit_(pad_input_cam);
|
||||||
tb_data_(state, & smem.pad[0]);
|
tb_data_(state, & smem.pad[0]);
|
||||||
|
|||||||
Reference in New Issue
Block a user