diff options
Diffstat (limited to 'src/mame/machine/micro3d.cpp')
-rw-r--r-- | src/mame/machine/micro3d.cpp | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/src/mame/machine/micro3d.cpp b/src/mame/machine/micro3d.cpp index 2bb8b87ed50..f188a24754b 100644 --- a/src/mame/machine/micro3d.cpp +++ b/src/mame/machine/micro3d.cpp @@ -109,12 +109,12 @@ WRITE8_MEMBER( micro3d_state::vgb_uart_w ) * *************************************/ -static inline int64_t dot_product(micro3d_vtx *v1, micro3d_vtx *v2) +inline constexpr int64_t micro3d_state::micro3d_vtx::dot_product(micro3d_vtx const &that) const { - int64_t result = ((int64_t)v1->x * (int64_t)v2->x) + - ((int64_t)v1->y * (int64_t)v2->y) + - ((int64_t)v1->z * (int64_t)v2->z); - return result; + return + (int64_t(x) * int64_t(that.x)) + + (int64_t(y) * int64_t(that.y)) + + (int64_t(z) * int64_t(that.z)); } static inline int64_t normalised_multiply(int32_t a, int32_t b) @@ -280,23 +280,19 @@ WRITE32_MEMBER(micro3d_state::micro3d_mac2_w) case 0x11: cnt += 0x100; case 0x10: { - int i; micro3d_vtx v2; - v2.x = mac_sram[mrab11 + 0x7fc]; v2.y = mac_sram[mrab11 + 0x7fd]; v2.z = mac_sram[mrab11 + 0x7fe]; - for (i = 0; i <= cnt; ++i) + for (int i = 0; i <= cnt; ++i) { micro3d_vtx v1; - int64_t dp; - v1.x = mac_sram[sram_r_addr++]; v1.y = mac_sram[sram_r_addr++]; v1.z = mac_sram[sram_r_addr++]; - dp = dot_product(&v1, &v2); + int64_t const dp = v1.dot_product(v2); mac_sram[sram_w_addr++] = dp >> 32; mac_sram[sram_w_addr++] = dp & 0xffffffff; mac_sram[sram_w_addr++] = 0; @@ -310,23 +306,19 @@ WRITE32_MEMBER(micro3d_state::micro3d_mac2_w) case 0x15: cnt += 0x100; case 0x14: { - int i; - - for (i = 0; i <= cnt; ++i) + for (int i = 0; i <= cnt; ++i) { micro3d_vtx v1; - micro3d_vtx v2; - int64_t dp; - v1.x = mac_sram[sram_r_addr++]; v1.y = mac_sram[sram_r_addr++]; v1.z = mac_sram[sram_r_addr++]; + micro3d_vtx v2; v2.x = mac_sram[vtx_addr++]; v2.y = mac_sram[vtx_addr++]; v2.z = mac_sram[vtx_addr++]; - dp = dot_product(&v1, &v2); + int64_t const dp = v1.dot_product(v2); mac_sram[sram_w_addr++] = dp >> 32; mac_sram[sram_w_addr++] = dp & 0xffffffff; mac_sram[sram_w_addr++] = 0; |