@@ -33,7 +33,7 @@ k001005_renderer::k001005_renderer(device_t &parent, screen_device &screen, devi
33
33
34
34
m_zb = std::make_unique<bitmap_ind32>(width, height);
35
35
36
- m_3dfifo = std::make_unique<uint32_t []>(0x10000 );
36
+ m_3dfifo = std::make_unique<uint32_t []>(0x10000 );
37
37
m_3dfifo_ptr = 0 ;
38
38
m_fb_page = 0 ;
39
39
m_light_r = 0 ;
@@ -60,8 +60,8 @@ k001005_renderer::k001005_renderer(device_t &parent, screen_device &screen, devi
60
60
61
61
for (int k = 0 ; k < 8 ; k++)
62
62
{
63
- m_tex_mirror_table[0 ][k] = std::make_unique<int []>(128 );
64
- m_tex_mirror_table[1 ][k] = std::make_unique<int []>(128 );
63
+ m_tex_mirror_table[0 ][k] = std::make_unique<int []>(128 );
64
+ m_tex_mirror_table[1 ][k] = std::make_unique<int []>(128 );
65
65
66
66
int const size = (k + 1 ) * 8 ;
67
67
@@ -124,7 +124,7 @@ void k001005_renderer::swap_buffers()
124
124
125
125
m_fb[m_fb_page]->fill (0 , m_cliprect);
126
126
127
- float const zvalue = 10000000000 .0f ;
127
+ float const zvalue = 10000000000 .0F ;
128
128
m_zb->fill (*(int *)&zvalue, m_cliprect);
129
129
}
130
130
@@ -139,8 +139,8 @@ void k001005_renderer::draw_scanline_generic(int32_t scanline, const extent_t& e
139
139
{
140
140
k001006_device* k001006 = downcast<k001006_device*>(m_k001006);
141
141
142
- uint32_t * const fb = &m_fb[m_fb_page]->pix (scanline);
143
- float * const zb = (float *)&m_zb->pix (scanline);
142
+ uint32_t * const fb = &m_fb[m_fb_page]->pix (scanline);
143
+ float * const zb = (float *)&m_zb->pix (scanline);
144
144
145
145
float z = extent.param [POLY_Z].start ;
146
146
float const dz = extent.param [POLY_Z].dpdx ;
@@ -208,10 +208,10 @@ void k001005_renderer::draw_scanline_generic(int32_t scanline, const extent_t& e
208
208
{
209
209
if (UseTexture)
210
210
{
211
- float const oow = 1 .0f / w;
211
+ float const oow = 1 .0F / w;
212
212
213
- int iu = ( int ) (u * oow);
214
- int iv = ( int ) (v * oow);
213
+ int iu = int (u * oow);
214
+ int iv = int (v * oow);
215
215
216
216
if (!UseBilinear)
217
217
{
@@ -526,8 +526,8 @@ int k001005_renderer::parse_polygon(int index, uint32_t cmd)
526
526
int32_t const tv = (int16_t )(fifo[index ] & 0xffff );
527
527
index ++;
528
528
529
- m_vertexb[m_vertexb_ptr].p [POLY_U] = ( float ) (tu) * m_vertexb[m_vertexb_ptr].p [POLY_W];
530
- m_vertexb[m_vertexb_ptr].p [POLY_V] = ( float ) (tv) * m_vertexb[m_vertexb_ptr].p [POLY_W];
529
+ m_vertexb[m_vertexb_ptr].p [POLY_U] = float (tu) * m_vertexb[m_vertexb_ptr].p [POLY_W];
530
+ m_vertexb[m_vertexb_ptr].p [POLY_V] = float (tv) * m_vertexb[m_vertexb_ptr].p [POLY_W];
531
531
}
532
532
533
533
// fog
@@ -703,6 +703,7 @@ void k001005_renderer::draw(bitmap_rgb32 &bitmap, const rectangle &cliprect)
703
703
}
704
704
705
705
706
+
706
707
DEFINE_DEVICE_TYPE (K001005, k001005_device, " k001005" , " K001005 Polygon Renderer" )
707
708
708
709
k001005_device::k001005_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
@@ -780,40 +781,33 @@ uint32_t k001005_device::read(address_space &space, offs_t offset, uint32_t mem_
780
781
switch (offset)
781
782
{
782
783
case 0x000 : // FIFO read, high 16 bits
783
- {
784
784
// osd_printf_debug("FIFO_r0: %08X\n", m_fifo_read_ptr);
785
- uint16_t const value = m_fifo[m_fifo_read_ptr] >> 16 ;
786
- return value;
787
- }
785
+ return m_fifo[m_fifo_read_ptr] >> 16 ;
788
786
789
787
case 0x001 : // FIFO read, low 16 bits
790
- {
791
- // osd_printf_debug("FIFO_r1: %08X\n", m_fifo_read_ptr);
792
- uint16_t const value = m_fifo[m_fifo_read_ptr] & 0xffff ;
793
-
794
- if (!machine ().side_effects_disabled ())
795
788
{
796
- if (m_status != 1 && m_status != 2 )
789
+ // osd_printf_debug("FIFO_r1: %08X\n", m_fifo_read_ptr);
790
+ uint16_t const value = m_fifo[m_fifo_read_ptr] & 0xffff ;
791
+
792
+ if (!machine ().side_effects_disabled ())
797
793
{
798
- if (m_fifo_read_ptr < 0x3ff )
794
+ if (m_status != 1 && m_status != 2 )
799
795
{
800
- dsp->set_flag_input (1 , CLEAR_LINE);
796
+ if (m_fifo_read_ptr < 0x3ff )
797
+ dsp->set_flag_input (1 , CLEAR_LINE);
798
+ else
799
+ dsp->set_flag_input (1 , ASSERT_LINE);
801
800
}
802
801
else
803
802
{
804
803
dsp->set_flag_input (1 , ASSERT_LINE);
805
804
}
805
+
806
+ m_fifo_read_ptr++;
807
+ m_fifo_read_ptr &= 0x7ff ;
806
808
}
807
- else
808
- {
809
- dsp->set_flag_input (1 , ASSERT_LINE);
810
- }
811
-
812
- m_fifo_read_ptr++;
813
- m_fifo_read_ptr &= 0x7ff ;
809
+ return value;
814
810
}
815
- return value;
816
- }
817
811
818
812
case 0x11b : // status ?
819
813
return 0x8002 ;
@@ -822,20 +816,17 @@ uint32_t k001005_device::read(address_space &space, offs_t offset, uint32_t mem_
822
816
return 0x8000 ;
823
817
824
818
case 0x11f :
825
- {
826
- uint32_t ret = 0 ;
827
- if (m_ram_ptr >= 0x400000 )
828
- {
829
- ret = m_ram[1 ][m_ram_ptr & 0x3fffff ];
830
- }
831
- else
832
819
{
833
- ret = m_ram[0 ][m_ram_ptr & 0x3fffff ];
820
+ uint32_t ret = 0 ;
821
+ if (m_ram_ptr >= 0x400000 )
822
+ ret = m_ram[1 ][m_ram_ptr & 0x3fffff ];
823
+ else
824
+ ret = m_ram[0 ][m_ram_ptr & 0x3fffff ];
825
+ if (!machine ().side_effects_disabled ())
826
+ m_ram_ptr++;
827
+ return ret;
834
828
}
835
- if (!machine ().side_effects_disabled ())
836
- m_ram_ptr++;
837
- return ret;
838
- }
829
+
839
830
default :
840
831
// osd_printf_debug("%s m_r: %08X, %08X\n", machine().describe_context(), offset, mem_mask);
841
832
break ;
@@ -850,25 +841,20 @@ void k001005_device::write(address_space &space, offs_t offset, uint32_t data, u
850
841
switch (offset)
851
842
{
852
843
case 0x000 : // FIFO write
853
- {
854
844
// osd_printf_debug("%s K001005 FIFO write: %08X\n", machine().describe_context(), data);
855
845
if (m_status != 1 && m_status != 2 )
856
846
{
857
847
if (m_fifo_write_ptr < 0x400 )
858
- {
859
848
dsp->set_flag_input (1 , ASSERT_LINE);
860
- }
861
849
else
862
- {
863
850
dsp->set_flag_input (1 , CLEAR_LINE);
864
- }
865
851
}
866
852
else
867
853
{
868
854
dsp->set_flag_input (1 , ASSERT_LINE);
869
855
}
870
856
871
- // osd_printf_debug("%s K001005 FIFO write: %08X\n", machine().describe_context(), data);
857
+ // osd_printf_debug("%s K001005 FIFO write: %08X\n", machine().describe_context(), data);
872
858
m_fifo[m_fifo_write_ptr] = data;
873
859
m_fifo_write_ptr++;
874
860
m_fifo_write_ptr &= 0x7ff ;
@@ -887,9 +873,7 @@ void k001005_device::write(address_space &space, offs_t offset, uint32_t data, u
887
873
// This is used to make the SHARC timeout
888
874
dsp->spin_until_trigger (10000 );
889
875
}
890
-
891
876
break ;
892
- }
893
877
894
878
case 0x100 : break ;
895
879
@@ -905,11 +889,9 @@ void k001005_device::write(address_space &space, offs_t offset, uint32_t data, u
905
889
case 0x108 : m_renderer->m_viewport_center_y = data & 0xffff ; break ;
906
890
907
891
case 0x109 : // far Z value
908
- {
909
- // the SHARC code throws away the bottom 11 bits of mantissa and the top 5 bits (to fit in a 16-bit register?)
910
- m_renderer->m_far_z = u2f ((data & 0xffff ) << 11 );
911
- break ;
912
- }
892
+ // the SHARC code throws away the bottom 11 bits of mantissa and the top 5 bits (to fit in a 16-bit register?)
893
+ m_renderer->m_far_z = u2f ((data & 0xffff ) << 11 );
894
+ break ;
913
895
914
896
case 0x10a : m_renderer->m_light_r = data & 0xff ; break ;
915
897
case 0x10b : m_renderer->m_light_g = data & 0xff ; break ;
@@ -924,28 +906,23 @@ void k001005_device::write(address_space &space, offs_t offset, uint32_t data, u
924
906
case 0x112 : m_renderer->m_fog_b = data & 0xff ; break ;
925
907
926
908
case 0x117 : // linear fog start Z
927
- {
928
- // 4 bits exponent + 12 bits mantissa, similar to far Z value
929
- // value of 0xffff is used to effectively turn off fog
930
-
931
- // reconstruct float from 16-bit data
932
- // assuming implicit exponent 1001xxxx, sign bit 0 (z-values are all positive)
933
- m_renderer->m_reg_fog_start = data & 0xffff ;
934
- m_renderer->m_fog_start_z = u2f ((0x90000 | (data & 0xffff )) << 11 );
935
- break ;
936
- }
909
+ // 4 bits exponent + 12 bits mantissa, similar to far Z value
910
+ // value of 0xffff is used to effectively turn off fog
911
+
912
+ // reconstruct float from 16-bit data
913
+ // assuming implicit exponent 1001xxxx, sign bit 0 (z-values are all positive)
914
+ m_renderer->m_reg_fog_start = data & 0xffff ;
915
+ m_renderer->m_fog_start_z = u2f ((0x90000 | (data & 0xffff )) << 11 );
916
+ break ;
917
+
937
918
case 0x118 : // linear fog end Z
938
- {
939
- // 4 bits exponent + 12 bits mantissa, similar to far Z value
940
- m_renderer->m_fog_end_z = u2f ((0x90000 | (data & 0xffff )) << 11 );
941
- break ;
942
- }
919
+ // 4 bits exponent + 12 bits mantissa, similar to far Z value
920
+ m_renderer->m_fog_end_z = u2f ((0x90000 | (data & 0xffff )) << 11 );
921
+ break ;
943
922
944
923
case 0x119 : // 1 / (end_fog - start_fog) ?
945
- {
946
- // 5 bits exponent + 11 bits mantissa
947
- break ;
948
- }
924
+ // 5 bits exponent + 11 bits mantissa
925
+ break ;
949
926
950
927
951
928
case 0x11a :
@@ -956,9 +933,7 @@ void k001005_device::write(address_space &space, offs_t offset, uint32_t data, u
956
933
if (data == 2 )
957
934
{
958
935
if (m_renderer->fifo_filled ())
959
- {
960
936
m_renderer->render_polygons ();
961
- }
962
937
963
938
m_renderer->swap_buffers ();
964
939
}
@@ -975,13 +950,9 @@ void k001005_device::write(address_space &space, offs_t offset, uint32_t data, u
975
950
976
951
case 0x11f :
977
952
if (m_ram_ptr >= 0x400000 )
978
- {
979
953
m_ram[1 ][(m_ram_ptr++) & 0x3fffff ] = data & 0xffff ;
980
- }
981
954
else
982
- {
983
955
m_ram[0 ][(m_ram_ptr++) & 0x3fffff ] = data & 0xffff ;
984
- }
985
956
break ;
986
957
987
958
default :
@@ -991,7 +962,7 @@ void k001005_device::write(address_space &space, offs_t offset, uint32_t data, u
991
962
992
963
}
993
964
994
- void k001005_device::draw ( bitmap_rgb32 &bitmap, const rectangle &cliprect )
965
+ void k001005_device::draw (bitmap_rgb32 &bitmap, const rectangle &cliprect)
995
966
{
996
967
m_renderer->draw (bitmap, cliprect);
997
968
}
0 commit comments