Skip to content

Commit f810cbe

Browse files
authored
konami/k051733.cpp: Suppress side effects for debugger reads, use logmacro.h logging, and cleaned up code. (#13316)
1 parent 13d5eed commit f810cbe

File tree

1 file changed

+25
-27
lines changed

1 file changed

+25
-27
lines changed

Diff for: src/mame/konami/k051733.cpp

+25-27
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ reads from 0x0006, and only uses bit 1.
5757

5858
#include "emu.h"
5959
#include "k051733.h"
60-
#include "konami_helper.h"
6160

6261
#define VERBOSE 0
6362
#include "logmacro.h"
@@ -88,9 +87,7 @@ void k051733_device::device_start()
8887

8988
void k051733_device::device_reset()
9089
{
91-
int i;
92-
93-
for (i = 0; i < 0x20; i++)
90+
for (int i = 0; i < 0x20; i++)
9491
m_ram[i] = 0;
9592

9693
m_rng = 0;
@@ -102,13 +99,13 @@ void k051733_device::device_reset()
10299

103100
void k051733_device::write(offs_t offset, uint8_t data)
104101
{
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);
106103

107104
m_ram[offset] = data;
108105
}
109106

110107

111-
static int k051733_int_sqrt( uint32_t op )
108+
static int k051733_int_sqrt(uint32_t op)
112109
{
113110
uint32_t i = 0x8000;
114111
uint32_t step = 0x4000;
@@ -128,15 +125,15 @@ static int k051733_int_sqrt( uint32_t op )
128125

129126
uint8_t k051733_device::read(offs_t offset)
130127
{
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];
134131

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];
140137

141138
switch (offset)
142139
{
@@ -165,33 +162,34 @@ uint8_t k051733_device::read(offs_t offset)
165162

166163
case 0x04:
167164
return k051733_int_sqrt(op3 << 16) >> 8;
168-
169165
case 0x05:
170166
return k051733_int_sqrt(op3 << 16) & 0xff;
171167

172168
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 */
177177
if (xobj1c + rad < xobj2c)
178178
return 0xff;
179-
180-
if (xobj2c + rad < xobj1c)
179+
else if (xobj2c + rad < xobj1c)
181180
return 0xff;
182-
183-
if (yobj1c + rad < yobj2c)
181+
else if (yobj1c + rad < yobj2c)
184182
return 0xff;
185-
186-
if (yobj2c + rad < yobj1c)
183+
else if (yobj2c + rad < yobj1c)
187184
return 0xff;
185+
else
186+
return 0;
188187

189-
return 0;
190-
}
191188
case 0x0e: /* best guess */
192189
return (xobj2c - xobj1c) >> 8;
193190
case 0x0f:
194191
return (xobj2c - xobj1c) & 0xff;
192+
195193
default:
196194
return m_ram[offset];
197195
}

0 commit comments

Comments
 (0)