Skip to content

Commit c43a83b

Browse files
committed
Miscellaneous cleanups:
konami/hexion.cpp: Fixed a potential heap smash, and don't mark tiles dirty unnecessarily. konami/spy.cpp: Fixed video enable never being set to false, added an object finder for ROM bank (reduce tag lookups). tvgames/xavix.cpp: It's stylised "Hi-kara" (no capital K), software list already uses this capitalisation. rm/rm380z*: Added object finder for character generator ROM, slightly cleaned up some code. homelab/homelab.cpp: Avoid some literal sizes.
1 parent bfdcc04 commit c43a83b

File tree

9 files changed

+316
-329
lines changed

9 files changed

+316
-329
lines changed

src/lib/util/flac.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -601,12 +601,12 @@ FLAC__StreamDecoderTellStatus flac_decoder::tell_callback_static(const FLAC__Str
601601
// stream
602602
//-------------------------------------------------
603603

604-
FLAC__StreamDecoderWriteStatus flac_decoder::write_callback_static(const FLAC__StreamDecoder *decoder, const ::FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
604+
FLAC__StreamDecoderWriteStatus flac_decoder::write_callback_static(const FLAC__StreamDecoder *decoder, const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data)
605605
{
606606
return reinterpret_cast<flac_decoder *>(client_data)->write_callback(frame, buffer);
607607
}
608608

609-
FLAC__StreamDecoderWriteStatus flac_decoder::write_callback(const ::FLAC__Frame *frame, const FLAC__int32 * const buffer[])
609+
FLAC__StreamDecoderWriteStatus flac_decoder::write_callback(const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[])
610610
{
611611
assert(frame->header.channels == channels());
612612

@@ -633,7 +633,7 @@ FLAC__StreamDecoderWriteStatus flac_decoder::write_callback(const ::FLAC__Frame
633633
}
634634
}
635635

636-
template <flac_decoder::DECODE_MODE Mode, bool SwapEndian> FLAC__StreamDecoderWriteStatus flac_decoder::write_callback(const ::FLAC__Frame *frame, const FLAC__int32 * const buffer[])
636+
template <flac_decoder::DECODE_MODE Mode, bool SwapEndian> FLAC__StreamDecoderWriteStatus flac_decoder::write_callback(const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[])
637637
{
638638
const int blocksize = frame->header.blocksize;
639639
const int shift = (Mode == SCALE_DOWN) ? frame->header.bits_per_sample - m_bits_per_sample : (Mode == SCALE_UP) ? m_bits_per_sample - frame->header.bits_per_sample : 0;

src/lib/util/flac.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ class flac_decoder
123123
FLAC__StreamDecoderReadStatus read_callback(FLAC__byte buffer[], size_t *bytes);
124124
static void metadata_callback_static(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
125125
static FLAC__StreamDecoderTellStatus tell_callback_static(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data);
126-
static FLAC__StreamDecoderWriteStatus write_callback_static(const FLAC__StreamDecoder *decoder, const ::FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
127-
FLAC__StreamDecoderWriteStatus write_callback(const ::FLAC__Frame *frame, const FLAC__int32 * const buffer[]);
128-
template <DECODE_MODE Mode, bool SwapEndian> FLAC__StreamDecoderWriteStatus write_callback(const ::FLAC__Frame *frame, const FLAC__int32 * const buffer[]);
126+
static FLAC__StreamDecoderWriteStatus write_callback_static(const FLAC__StreamDecoder *decoder, const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data);
127+
FLAC__StreamDecoderWriteStatus write_callback(const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[]);
128+
template <DECODE_MODE Mode, bool SwapEndian> FLAC__StreamDecoderWriteStatus write_callback(const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[]);
129129
static void error_callback_static(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
130130

131131
// output state

src/mame/homelab/homelab.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ MB7051 - fuse programmed prom.
4747
#include "screen.h"
4848
#include "speaker.h"
4949

50-
namespace
51-
{
50+
namespace {
51+
5252
class homelab_state : public driver_device
5353
{
5454
public:
@@ -84,15 +84,15 @@ class homelab2_state : public homelab_state
8484
{
8585
public:
8686
homelab2_state(const machine_config &mconfig, device_type type, const char *tag) :
87-
homelab_state(mconfig, type, tag),
88-
m_nmi(0),
89-
m_screenshadow_is_text_mode(true),
90-
m_screenshadowY0(0),
91-
m_screenshadowX0(0),
92-
m_spr_bit(0)
87+
homelab_state(mconfig, type, tag),
88+
m_nmi(0),
89+
m_screenshadow_is_text_mode(true),
90+
m_screenshadowY0(0),
91+
m_screenshadowX0(0),
92+
m_spr_bit(0)
9393
{
94-
std::fill_n(m_4000shadow, 0x4000, 0);
95-
std::fill_n(m_screenshadow, 40 * 265, 0);
94+
std::fill(std::begin(m_4000shadow), std::end(m_4000shadow), 0);
95+
std::fill(std::begin(m_screenshadow), std::end(m_screenshadow), 0);
9696
}
9797

9898
void homelab2(machine_config &config);

src/mame/konami/hexion.cpp

Lines changed: 58 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -14,77 +14,77 @@ driver by Nicola Salmoria
1414
This is the 052591 PMC code loaded at startup, it contains a RAM/VRAM filling program.
1515
See https://github.com/furrtek/SiliconRE/tree/master/Konami/052591 for details
1616
17-
00: 5f 80 01 e0 08 Entry point, set OUT0 high
18-
01: df 80 00 e0 0c r0 = 0
19-
02: df 90 02 e0 0c r1 = 2
20-
03: df a0 03 e0 0c r2 = 3
21-
04: df b0 0f e0 0c r3 = f
22-
05: df c0 ff bf 0c ExtAddr = 1fff, r4 = ffff
23-
06: 5c 02 00 33 0c
24-
07: 5f 80 04 80 0c Write 2 to RAM (1fff) m_bankctrl, select pmcram
17+
00: 5f 80 01 e0 08 Entry point, set OUT0 high
18+
01: df 80 00 e0 0c r0 = 0
19+
02: df 90 02 e0 0c r1 = 2
20+
03: df a0 03 e0 0c r2 = 3
21+
04: df b0 0f e0 0c r3 = f
22+
05: df c0 ff bf 0c ExtAddr = 1fff, r4 = ffff
23+
06: 5c 02 00 33 0c
24+
07: 5f 80 04 80 0c Write 2 to RAM (1fff) m_bankctrl, select pmcram
2525
08: 5c 0e 00 2b 0c
26-
09: df 70 00 cb 08 r7 = RAM(4)
27-
0a: 5f 80 00 80 0c ExtAddr = 0
26+
09: df 70 00 cb 08 r7 = RAM(4)
27+
0a: 5f 80 00 80 0c ExtAddr = 0
2828
0b: 5c 04 00 2b 0c
29-
0c: df 60 00 cb 08 r6 = RAM(0) (commands 0, 1 and 30 are used)
30-
0d: 5c 0c 1f e9 0c JP 1F if r6 == 0
31-
0e: 4c 0c 2d e9 08 JP 2D if r6 == 1
29+
0c: df 60 00 cb 08 r6 = RAM(0) (commands 0, 1 and 30 are used)
30+
0d: 5c 0c 1f e9 0c JP 1F if r6 == 0
31+
0e: 4c 0c 2d e9 08 JP 2D if r6 == 1
3232
3333
Command anything other than 00 or 01: Set bank to r7, then clear 16 bytes starting from r5.w
34-
0f: 5f 80 03 80 0c ExtAddr = 3
34+
0f: 5f 80 03 80 0c ExtAddr = 3
3535
10: 5c 04 00 2b 0c
36-
11: 5f 00 00 cb 00 Read MSB from RAM[3]
37-
12: 5f 80 02 a0 0c ExtAddr = 2
38-
13: df d0 00 c0 04 r5.w = RAM[3], RAM[2]
39-
14: 01 3a 00 f3 0a acc = r5 + r3 = r5 + f
36+
11: 5f 00 00 cb 00 Read MSB from RAM[3]
37+
12: 5f 80 02 a0 0c ExtAddr = 2
38+
13: df d0 00 c0 04 r5.w = RAM[3], RAM[2]
39+
14: 01 3a 00 f3 0a acc = r5 + r3 = r5 + f
4040
15: 5c 08 00 b3 0c
41-
16: 5c 0e 00 13 0c Write 3 to RAM[1fff] m_bankctrl
41+
16: 5c 0e 00 13 0c Write 3 to RAM[1fff] m_bankctrl
4242
17: 5f 80 00 a0 0c
43-
18: 5c 00 00 13 0c Write r7 to RAM[0]
43+
18: 5c 00 00 13 0c Write r7 to RAM[0]
4444
19: 5c 08 00 b3 0c
45-
1a: 5c 00 00 13 0c Write 0 to RAM[1fff] m_bankctrl, select vram
45+
1a: 5c 00 00 13 0c Write 0 to RAM[1fff] m_bankctrl, select vram
4646
1b: 84 5a 00 b3 0c
47-
1c: 48 0a 5b d1 0c Write 0 to RAM[r5++] until r5 > acc (16 times)
48-
1d: 5f 80 00 e0 08 Set OUT0 low
49-
1e: 5f 00 1e fd 0c JP 1E, infinite loop
47+
1c: 48 0a 5b d1 0c Write 0 to RAM[r5++] until r5 > acc (16 times)
48+
1d: 5f 80 00 e0 08 Set OUT0 low
49+
1e: 5f 00 1e fd 0c JP 1E, infinite loop
5050
5151
Command is 00: Set bank to 0 and fill from 0 to 0x1fff with r2.b
5252
1f: 5f 80 01 a0 0c
53-
20: df 20 00 cb 08 r2 = RAM[1]
53+
20: df 20 00 cb 08 r2 = RAM[1]
5454
21: 5c 08 00 b3 0c
55-
22: 5f 80 03 00 0c Write 3 to RAM[1fff] m_bankctrl
55+
22: 5f 80 03 00 0c Write 3 to RAM[1fff] m_bankctrl
5656
23: 5c 08 00 b3 0c
57-
24: 5f 80 00 80 0c Write 3 to RAM[1fff] m_bankctrl
57+
24: 5f 80 00 80 0c Write 3 to RAM[1fff] m_bankctrl
5858
25: 5c 00 00 33 0c
59-
26: 5c 08 00 93 0c Write 0 to RAM[0]
60-
27: 9f 91 ff cf 0e Write 0 to RAM[1fff] m_bankctrl, select vram, r1 = fff << 1 = 1ffe
59+
26: 5c 08 00 93 0c Write 0 to RAM[0]
60+
27: 9f 91 ff cf 0e Write 0 to RAM[1fff] m_bankctrl, select vram, r1 = fff << 1 = 1ffe
6161
28: 5c 84 00 20 0c
62-
29: 84 00 00 b3 0c ExtAddr = r0
63-
2a: 49 10 69 d1 0c Write r2 to RAM[r0++] while r0 < r1
64-
2b: 5f 80 00 e0 08 Set OUT0 low
65-
2c: 5f 00 2c fd 0c JP 2C, infinite loop
62+
29: 84 00 00 b3 0c ExtAddr = r0
63+
2a: 49 10 69 d1 0c Write r2 to RAM[r0++] while r0 < r1
64+
2b: 5f 80 00 e0 08 Set OUT0 low
65+
2c: 5f 00 2c fd 0c JP 2C, infinite loop
6666
6767
Command is 01: Set banks to 1 and fill from 0 to 0x1fff with r2.b
6868
2d: 5f 80 01 a0 0c
69-
2e: df 20 00 cb 08 r2 = RAM(1)
69+
2e: df 20 00 cb 08 r2 = RAM(1)
7070
2f: 5c 08 00 b3 0c
71-
30: 5f 80 03 00 0c Write 3 to RAM[1fff] m_bankctrl
71+
30: 5f 80 03 00 0c Write 3 to RAM[1fff] m_bankctrl
7272
31: 5c 00 00 b3 0c
73-
32: 5f 80 01 00 0c Write 3 to RAM[0]
73+
32: 5f 80 01 00 0c Write 3 to RAM[0]
7474
33: 5c 08 00 b3 0c
75-
34: 5f 80 00 80 0c Write 1 to RAM[1fff] m_bankctrl
75+
34: 5f 80 00 80 0c Write 1 to RAM[1fff] m_bankctrl
7676
35: 5c 00 00 33 0c
77-
36: 5c 08 00 93 0c Write 0 to RAM[0]
78-
37: 9f 91 ff cf 0e Write 0 to RAM[1fff] m_bankctrl, select vram, r1 = fff << 1 = 1ffe
77+
36: 5c 08 00 93 0c Write 0 to RAM[0]
78+
37: 9f 91 ff cf 0e Write 0 to RAM[1fff] m_bankctrl, select vram, r1 = fff << 1 = 1ffe
7979
38: 5c 84 00 20 0c
8080
39: 84 00 00 b3 0c
81-
3a: 49 10 79 d1 0c Write r2 to RAM[r0++] while r0 < r1
82-
3b: 5f 80 00 e0 08 Set OUT0 low
83-
3c: 5f 00 3c fd 0c JP 3C, infinite loop
81+
3a: 49 10 79 d1 0c Write r2 to RAM[r0++] while r0 < r1
82+
3b: 5f 80 00 e0 08 Set OUT0 low
83+
3c: 5f 00 3c fd 0c JP 3C, infinite loop
8484
85-
3d: ff ff ff ff ff Garbage
86-
3e: ff ff ff ff ff Garbage
87-
3f: ff ff ff ff ff Garbage
85+
3d: ff ff ff ff ff Garbage
86+
3e: ff ff ff ff ff Garbage
87+
3f: ff ff ff ff ff Garbage
8888
8989
***************************************************************************/
9090

@@ -102,6 +102,7 @@ Command is 01: Set banks to 1 and fill from 0 to 0x1fff with r2.b
102102
#include "emupal.h"
103103
#include "speaker.h"
104104
#include "tilemap.h"
105+
105106
#include "multibyte.h"
106107

107108

@@ -131,7 +132,7 @@ class hexion_state : public driver_device
131132
m_gfxdecode(*this, "gfxdecode"),
132133
m_palette(*this, "palette"),
133134
m_vram(*this, "vram%u", 0U, 0x2000U, ENDIANNESS_LITTLE),
134-
m_pmcram(*this, "pmcram", 0x800, ENDIANNESS_LITTLE), // Might be an unused area of VRAM
135+
m_pmcram(*this, "pmcram", 0x800, ENDIANNESS_LITTLE), // Might be an unused area of VRAM
135136
m_rombank(*this, "rombank"),
136137
m_tilesrom(*this, "tiles")
137138
{ }
@@ -243,23 +244,27 @@ void hexion_state::bankswitch_w(uint8_t data)
243244
m_rombank->set_entry(data & 0x0f);
244245

245246
// bit 6 triggers the 052591
246-
if (data & 0x40)
247+
if (BIT(data, 6))
247248
{
248-
uint8_t command = m_pmcram[0];
249+
const uint8_t command = m_pmcram[0];
249250
if (command <= 1)
250251
{
251252
memset(m_vram[command], m_pmcram[1], 0x2000);
252253
m_bg_tilemap[command]->mark_all_dirty();
253254
}
254255
else
255256
{
256-
uint8_t bank = m_pmcram[4] & 1;
257-
memset(m_vram[bank] + (get_u16le(&m_pmcram[2]) & 0x1fff), 0, 16);
258-
m_bg_tilemap[bank]->mark_all_dirty();
257+
const uint8_t bank = m_pmcram[4] & 1;
258+
const uint16_t offset = get_u16le(&m_pmcram[2]);
259+
for (int i = 0; 16 > i; ++i)
260+
m_vram[bank][(offset + i) & 0x1fff] = 0;
261+
for (int i = 0; 4 > i; ++i)
262+
m_bg_tilemap[bank]->mark_tile_dirty(((offset >> 2) + i) & 0x07ff);
259263
}
260264
}
265+
261266
// bit 7 = PMC-BK
262-
m_pmcbank = (data & 0x80) >> 7;
267+
m_pmcbank = BIT(data, 7);
263268

264269
// other bits unknown
265270
if (data & 0x30)
@@ -300,7 +305,7 @@ void hexion_state::bankedram_w(offs_t offset, uint8_t data)
300305
{
301306
LOGBANKEDRAM("%s: bankedram_w offset %04x, data %02x, bankctrl = %02x\n", m_maincpu->pc(), offset, data, m_bankctrl);
302307
m_vram[m_rambank][offset] = data;
303-
m_bg_tilemap[m_rambank]->mark_tile_dirty(offset/4);
308+
m_bg_tilemap[m_rambank]->mark_tile_dirty(offset >> 2);
304309
}
305310
else
306311
LOGBANKEDRAM("%04x pmc internal ram %04x = %02x\n", m_maincpu->pc(), offset, data);

0 commit comments

Comments
 (0)