@@ -57,7 +57,6 @@ reads from 0x0006, and only uses bit 1.
57
57
58
58
#include " emu.h"
59
59
#include " k051733.h"
60
- #include " konami_helper.h"
61
60
62
61
#define VERBOSE 0
63
62
#include " logmacro.h"
@@ -88,9 +87,7 @@ void k051733_device::device_start()
88
87
89
88
void k051733_device::device_reset ()
90
89
{
91
- int i;
92
-
93
- for (i = 0 ; i < 0x20 ; i++)
90
+ for (int i = 0 ; i < 0x20 ; i++)
94
91
m_ram[i] = 0 ;
95
92
96
93
m_rng = 0 ;
@@ -102,13 +99,13 @@ void k051733_device::device_reset()
102
99
103
100
void k051733_device::write (offs_t offset, uint8_t data)
104
101
{
105
- // logerror ("%s: write %02x to 051733 address %02x\n", m_maincpu->pc (), data, offset);
102
+ LOG (" %s: write %02x to 051733 address %02x\n " , machine (). describe_context (), data, offset);
106
103
107
104
m_ram[offset] = data;
108
105
}
109
106
110
107
111
- static int k051733_int_sqrt ( uint32_t op )
108
+ static int k051733_int_sqrt (uint32_t op)
112
109
{
113
110
uint32_t i = 0x8000 ;
114
111
uint32_t step = 0x4000 ;
@@ -128,15 +125,15 @@ static int k051733_int_sqrt( uint32_t op )
128
125
129
126
uint8_t k051733_device::read (offs_t offset)
130
127
{
131
- int op1 = (m_ram[0x00 ] << 8 ) | m_ram[0x01 ];
132
- int op2 = (m_ram[0x02 ] << 8 ) | m_ram[0x03 ];
133
- int op3 = (m_ram[0x04 ] << 8 ) | m_ram[0x05 ];
128
+ int const op1 = (m_ram[0x00 ] << 8 ) | m_ram[0x01 ];
129
+ int const op2 = (m_ram[0x02 ] << 8 ) | m_ram[0x03 ];
130
+ int const op3 = (m_ram[0x04 ] << 8 ) | m_ram[0x05 ];
134
131
135
- int rad = (m_ram[0x06 ] << 8 ) | m_ram[0x07 ];
136
- int yobj1c = (m_ram[0x08 ] << 8 ) | m_ram[0x09 ];
137
- int xobj1c = (m_ram[0x0a ] << 8 ) | m_ram[0x0b ];
138
- int yobj2c = (m_ram[0x0c ] << 8 ) | m_ram[0x0d ];
139
- int xobj2c = (m_ram[0x0e ] << 8 ) | m_ram[0x0f ];
132
+ int const rad = (m_ram[0x06 ] << 8 ) | m_ram[0x07 ];
133
+ int const yobj1c = (m_ram[0x08 ] << 8 ) | m_ram[0x09 ];
134
+ int const xobj1c = (m_ram[0x0a ] << 8 ) | m_ram[0x0b ];
135
+ int const yobj2c = (m_ram[0x0c ] << 8 ) | m_ram[0x0d ];
136
+ int const xobj2c = (m_ram[0x0e ] << 8 ) | m_ram[0x0f ];
140
137
141
138
switch (offset)
142
139
{
@@ -165,33 +162,34 @@ uint8_t k051733_device::read(offs_t offset)
165
162
166
163
case 0x04 :
167
164
return k051733_int_sqrt (op3 << 16 ) >> 8 ;
168
-
169
165
case 0x05 :
170
166
return k051733_int_sqrt (op3 << 16 ) & 0xff ;
171
167
172
168
case 0x06 :
173
- m_rng += m_ram[0x13 ];
174
- return m_rng; // RNG read, used by Chequered Flag for differentiate cars, implementation is a raw guess
175
-
176
- case 0x07 :{ /* note: Chequered Flag definitely wants all these bits to be enabled */
169
+ {
170
+ uint8_t const rng = m_rng + m_ram[0x13 ];
171
+ if (!machine ().side_effects_disabled ())
172
+ m_rng = rng;
173
+ return rng; // RNG read, used by Chequered Flag for differentiate cars, implementation is a raw guess
174
+ }
175
+
176
+ case 0x07 : /* note: Chequered Flag definitely wants all these bits to be enabled */
177
177
if (xobj1c + rad < xobj2c)
178
178
return 0xff ;
179
-
180
- if (xobj2c + rad < xobj1c)
179
+ else if (xobj2c + rad < xobj1c)
181
180
return 0xff ;
182
-
183
- if (yobj1c + rad < yobj2c)
181
+ else if (yobj1c + rad < yobj2c)
184
182
return 0xff ;
185
-
186
- if (yobj2c + rad < yobj1c)
183
+ else if (yobj2c + rad < yobj1c)
187
184
return 0xff ;
185
+ else
186
+ return 0 ;
188
187
189
- return 0 ;
190
- }
191
188
case 0x0e : /* best guess */
192
189
return (xobj2c - xobj1c) >> 8 ;
193
190
case 0x0f :
194
191
return (xobj2c - xobj1c) & 0xff ;
192
+
195
193
default :
196
194
return m_ram[offset];
197
195
}
0 commit comments