Skip to content

Commit 3e9f542

Browse files
video/ssd1306: tidy up switches, actually make 0x00/0x10 compile
1 parent c48b057 commit 3e9f542

1 file changed

Lines changed: 28 additions & 26 deletions

File tree

‎src/devices/video/ssd1306.cpp‎

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -413,15 +413,17 @@ void ssd1306_device::exec_command(uint8_t data)
413413
{
414414
case 0x00:
415415
case 0x10:
416-
COMMAND_IS_SINGLE_BYTE;
416+
{
417+
COMMAND_IS_SINGLE_BYTE;
417418

418-
uint8_t low4 = m_command_fifo[0] & 0xF;
419-
uint8_t keep_mask = m_command_fifo[0] & 0x10 ? 0x0F : 0xF0;
420-
uint8_t shift_value = m_command_fifo[0] & 0x10 ? 4 : 0;
419+
uint8_t low4 = m_command_fifo[0] & 0xF;
420+
uint8_t keep_mask = m_command_fifo[0] & 0x10 ? 0x0F : 0xF0;
421+
uint8_t shift_value = m_command_fifo[0] & 0x10 ? 4 : 0;
421422

422-
m_pagemode_column_start_address =
423-
(m_pagemode_column_start_address & keep_mask) |
424-
(low4 << shift_value);
423+
m_pagemode_column_start_address =
424+
(m_pagemode_column_start_address & keep_mask) |
425+
(low4 << shift_value);
426+
}
425427
break;
426428

427429
case 0x20:
@@ -437,21 +439,20 @@ void ssd1306_device::exec_command(uint8_t data)
437439
break;
438440

439441
case 0x80:
440-
if (m_command_fifo[0] == 0x8D)
442+
if (m_command_fifo[0] == 0x81)
441443
{
442444
COMMAND_BUFFER_FIFO_UNTIL_N_BYTES(data, 2);
443-
// charge pump setting; don't really need to implement it here
445+
m_contrast = m_command_fifo[1];
444446
return;
445447
}
446-
447-
if (m_command_fifo[0] != 0x81)
448+
if (m_command_fifo[0] == 0x8D)
448449
{
449-
COMMAND_IS_INVALID;
450+
COMMAND_BUFFER_FIFO_UNTIL_N_BYTES(data, 2);
451+
// charge pump setting; don't really need to implement it here
450452
return;
451453
}
452454

453-
COMMAND_BUFFER_FIFO_UNTIL_N_BYTES(data, 2);
454-
m_contrast = m_command_fifo[1];
455+
COMMAND_IS_INVALID;
455456
break;
456457

457458
case 0xA0:
@@ -460,40 +461,41 @@ void ssd1306_device::exec_command(uint8_t data)
460461

461462
case 0xB0:
462463
// page addressing mode: set page start address
463-
if (!(0xB0 <= m_command_fifo[0] && m_command_fifo[0] <= 0xB7))
464+
if (0xB0 <= m_command_fifo[0] && m_command_fifo[0] <= 0xB7)
464465
{
465-
COMMAND_IS_INVALID;
466+
COMMAND_IS_SINGLE_BYTE;
467+
m_pagemode_page_start_address = m_command_fifo[0] & 7;
466468
return;
467469
}
468470

469-
COMMAND_IS_SINGLE_BYTE;
470-
m_pagemode_page_start_address = m_command_fifo[0] & 7;
471+
COMMAND_IS_INVALID;
471472
break;
472473

473474
case 0xC0:
474475
// COM (row) scan direction: $C0 normal, $C8 reverse
475-
if (!(m_command_fifo[0] == 0xC0 || m_command_fifo[0] == 0xC8))
476+
if (m_command_fifo[0] == 0xC0 || m_command_fifo[0] == 0xC8)
476477
{
477-
COMMAND_IS_INVALID;
478+
COMMAND_IS_SINGLE_BYTE;
479+
m_row_scan_direction_inverse = (m_command_fifo[0] & 8);
478480
return;
479481
}
480-
481-
COMMAND_IS_SINGLE_BYTE;
482-
m_row_scan_direction_inverse = (m_command_fifo[0] & 8);
482+
COMMAND_IS_INVALID;
483483
break;
484484

485485
case 0xD0:
486486
exec_command_dx(data);
487487
break;
488488

489489
default:
490-
if (m_command_fifo[0] != 0xE3)
490+
if (m_command_fifo[0] == 0xE3)
491491
{
492-
COMMAND_IS_INVALID;
492+
// explicit NOP
493+
COMMAND_IS_SINGLE_BYTE;
493494
return;
494495
}
495496

496-
COMMAND_IS_SINGLE_BYTE;
497+
498+
COMMAND_IS_INVALID;
497499
break;
498500
}
499501
}

0 commit comments

Comments
 (0)