Skip to content

Commit 84bd874

Browse files
committed
m6569.h: merge sprite unit ba/aec calls, if-else coding style
1 parent 14e443a commit 84bd874

File tree

1 file changed

+57
-94
lines changed

1 file changed

+57
-94
lines changed

chips/m6569.h

Lines changed: 57 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -492,8 +492,7 @@ static inline void _m6569_io_update_border_rsel(m6569_border_unit_t* b, uint8_t
492492
// RSEL 1: 25 rows
493493
b->top = _M6569_RSEL1_BORDER_TOP;
494494
b->bottom = _M6569_RSEL1_BORDER_BOTTOM;
495-
}
496-
else {
495+
} else {
497496
// RSEL 0: 24 rows
498497
b->top = _M6569_RSEL0_BORDER_TOP;
499498
b->bottom = _M6569_RSEL0_BORDER_BOTTOM;
@@ -506,8 +505,7 @@ static inline void _m6569_io_update_border_csel(m6569_border_unit_t* b, uint8_t
506505
// CSEL 1: 40 columns
507506
b->left = _M6569_CSEL1_BORDER_LEFT;
508507
b->right = _M6569_CSEL1_BORDER_RIGHT;
509-
}
510-
else {
508+
} else {
511509
// CSEL 0: 38 columns
512510
b->left = _M6569_CSEL0_BORDER_LEFT;
513511
b->right = _M6569_CSEL0_BORDER_RIGHT;
@@ -729,8 +727,7 @@ static inline void _m6569_gunit_tick(m6569_t* vic, uint8_t g_data) {
729727
vic->gunit.count = 7;
730728
vic->gunit.shift |= g_data;
731729
vic->gunit.c_data = vic->gunit.enabled ? vic->vm.line[vic->vm.vmli] : 0;
732-
}
733-
else {
730+
} else {
734731
vic->gunit.count--;
735732
}
736733
vic->gunit.outp = vic->gunit.shift;
@@ -754,8 +751,7 @@ static inline uint16_t _m6569_gunit_decode_mode0(m6569_t* vic) {
754751
if (vic->gunit.outp & 0x80) {
755752
// foreground color (top bits set)
756753
return 0xFF00 | ((vic->gunit.c_data>>8) & 0xF);
757-
}
758-
else {
754+
} else {
759755
// background color (top bits clear)
760756
return vic->gunit.bg[0];
761757
}
@@ -777,19 +773,16 @@ static inline uint16_t _m6569_gunit_decode_mode1(m6569_t* vic) {
777773
if (bits == 3) {
778774
// special case '11'
779775
return 0xFF00 | fg;
780-
}
781-
else {
776+
} else {
782777
// one of the 3 background colors (top bits already pre-set)
783778
return vic->gunit.bg[bits];
784779
}
785-
}
786-
else {
780+
} else {
787781
// standard text mode char, but with only 7 foreground colors
788782
if (vic->gunit.outp & 0x80) {
789783
// foreground color (top bits set)
790784
return 0xFF00 | fg;
791-
}
792-
else {
785+
} else {
793786
// background color (top bits already pre-set to 0)
794787
return vic->gunit.bg[0];
795788
}
@@ -800,8 +793,7 @@ static inline uint16_t _m6569_gunit_decode_mode2(m6569_t* vic) {
800793
if (vic->gunit.outp & 0x80) {
801794
// foreground pixel (top 8 bits set)
802795
return 0xFF00 | ((vic->gunit.c_data >> 4) & 0xF);
803-
}
804-
else {
796+
} else {
805797
// background pixel (top bits clear for multiplexer)
806798
return vic->gunit.c_data & 0xF;
807799
}
@@ -830,8 +822,7 @@ static inline uint16_t _m6569_gunit_decode_mode4(m6569_t* vic) {
830822
if (vic->gunit.outp & 0x80) {
831823
// foreground color as usual bits 8..11 of c_data
832824
return 0xFF00 | ((vic->gunit.c_data>>8) & 0xF);
833-
}
834-
else {
825+
} else {
835826
// bg color selected by bits 6 and 7 of c_data
836827
/* FIXME: is the foreground/background selection right?
837828
values 00 and 01 would return as background color,
@@ -947,17 +938,17 @@ static inline void _m6569_sunit_dma_disp_disable(m6569_t* vic) {
947938
}
948939
}
949940

950-
// set the BA pin if a sprite's DMA is enabled
951-
static inline uint64_t _m6569_sunit_dma_ba(m6569_t* vic, uint32_t s_index, uint64_t pins) {
952-
if (vic->sunit.dma_enabled & (1<<s_index)) {
941+
// set the BA pin if one or multiple sprite's DMA is enabled
942+
static inline uint64_t _m6569_sunit_dma_ba(m6569_t* vic, uint8_t mask, uint64_t pins) {
943+
if (vic->sunit.dma_enabled & mask) {
953944
pins |= M6569_BA;
954945
}
955946
return pins;
956947
}
957948

958-
// set the AEC pin if a sprite's DMA is enabled
959-
static inline uint64_t _m6569_sunit_dma_aec(m6569_t* vic, uint32_t s_index, uint64_t pins) {
960-
if (vic->sunit.dma_enabled & (1<<s_index)) {
949+
// set the AEC pin one or multiple sprite's DMA are enabled
950+
static inline uint64_t _m6569_sunit_dma_aec(m6569_t* vic, uint8_t mask, uint64_t pins) {
951+
if (vic->sunit.dma_enabled & mask) {
961952
pins |= M6569_AEC;
962953
}
963954
return pins;
@@ -1230,8 +1221,7 @@ static inline void _m6569_rs_update_badline(m6569_t* vic) {
12301221
*/
12311222
bool yscroll_match = ((vic->rs.v_count & 7) == (vic->reg.ctrl_1 & 7));
12321223
vic->rs.badline = vic->rs.frame_badlines_enabled && yscroll_match;
1233-
}
1234-
else {
1224+
} else {
12351225
vic->rs.frame_badlines_enabled = false;
12361226
vic->rs.badline = false;
12371227
}
@@ -1285,8 +1275,7 @@ static inline void _m6569_crt_next_crtline(m6569_t* vic) {
12851275
vic->crt.x = 0;
12861276
if (vic->rs.v_count == _M6569_VRETRACEPOS) {
12871277
vic->crt.y = 0;
1288-
}
1289-
else {
1278+
} else {
12901279
vic->crt.y++;
12911280
}
12921281
}
@@ -1359,17 +1348,15 @@ static inline uint8_t _m6569_g_i_access(m6569_t* vic) {
13591348
// bitmap mode: addr=|CB13|VC9|VC8|VC7|VC6|VC5|VC4|VC3|VC2|VC1|VC0|RC2|RC1|RC0|
13601349
addr = vic->rs.vc<<3 | vic->rs.rc;
13611350
addr = (addr | (vic->mem.g_addr_or & (1<<13))) & vic->mem.g_addr_and;
1362-
}
1363-
else {
1351+
} else {
13641352
// text mode: addr=|CB13|CB12|CB11|D7|D6|D5|D4|D3|D2|D1|D0|RC2|RC1|RC0|
13651353
addr = ((vic->vm.line[vic->vm.vmli]&0xFF)<<3) | vic->rs.rc;
13661354
addr = (addr | vic->mem.g_addr_or) & vic->mem.g_addr_and;
13671355
}
13681356
vic->rs.vc = (vic->rs.vc + 1) & 0x3FF; // VC is a 10-bit counter
13691357
vic->vm.next_vmli = (vic->vm.vmli + 1) & 0x3F; // VMLI is a 6-bit counter
13701358
return (uint8_t) vic->mem.fetch_cb(addr, vic->mem.user_data);
1371-
}
1372-
else {
1359+
} else {
13731360
return _m6569_i_access(vic);
13741361
}
13751362
}
@@ -1399,8 +1386,7 @@ static inline uint8_t _m6569_s_i_access(m6569_t* vic, uint32_t s_index) {
13991386
su->shift[s_index] = (su->shift[s_index]<<8) | (s_data<<8);
14001387
su->mc[s_index] = (su->mc[s_index] + 1) & 0x3F;
14011388
return 0;
1402-
}
1403-
else {
1389+
} else {
14041390
return _m6569_i_access(vic);
14051391
}
14061392
}
@@ -1431,74 +1417,63 @@ static uint64_t _m6569_tick(m6569_t* vic, uint64_t pins) {
14311417
case 1:
14321418
_m6569_p_access(vic, 3);
14331419
_m6569_s_access(vic, 3);
1434-
pins = _m6569_sunit_dma_aec(vic, 3, pins);
1435-
pins = _m6569_sunit_dma_ba(vic, 3, pins);
1436-
pins = _m6569_sunit_dma_ba(vic, 4, pins);
1420+
pins = _m6569_sunit_dma_aec(vic, (1<<3), pins);
1421+
pins = _m6569_sunit_dma_ba(vic, (1<<3)|(1<<4), pins);
14371422
break;
14381423
case 2:
14391424
g_data = _m6569_s_i_access(vic, 3);
14401425
_m6569_s_access(vic, 3);
1441-
pins = _m6569_sunit_dma_aec(vic, 3, pins);
1442-
pins = _m6569_sunit_dma_ba(vic, 3, pins);
1443-
pins = _m6569_sunit_dma_ba(vic, 4, pins);
1444-
pins = _m6569_sunit_dma_ba(vic, 5, pins);
1426+
pins = _m6569_sunit_dma_aec(vic, (1<<3), pins);
1427+
pins = _m6569_sunit_dma_ba(vic, (1<<3)|(1<<4)|(1<<5), pins);
14451428
break;
14461429
case 3:
14471430
_m6569_p_access(vic, 4);
14481431
_m6569_s_access(vic, 4);
1449-
pins = _m6569_sunit_dma_aec(vic, 4, pins);
1450-
pins = _m6569_sunit_dma_ba(vic, 4, pins);
1451-
pins = _m6569_sunit_dma_ba(vic, 5, pins);
1432+
pins = _m6569_sunit_dma_aec(vic, (1<<4), pins);
1433+
pins = _m6569_sunit_dma_ba(vic, (1<<4)|(1<<5), pins);
14521434
break;
14531435
case 4:
14541436
_m6569_crt_next_crtline(vic);
14551437
g_data = _m6569_s_i_access(vic, 4);
14561438
_m6569_s_access(vic, 4);
1457-
pins = _m6569_sunit_dma_aec(vic, 4, pins);
1458-
pins = _m6569_sunit_dma_ba(vic, 4, pins);
1459-
pins = _m6569_sunit_dma_ba(vic, 5, pins);
1460-
pins = _m6569_sunit_dma_ba(vic, 6, pins);
1439+
pins = _m6569_sunit_dma_aec(vic, (1<<4), pins);
1440+
pins = _m6569_sunit_dma_ba(vic, (1<<4)|(1<<5)|(1<<6), pins);
14611441
break;
14621442
case 5:
14631443
_m6569_p_access(vic, 5);
14641444
_m6569_s_access(vic, 5);
1465-
pins = _m6569_sunit_dma_aec(vic, 5, pins);
1466-
pins = _m6569_sunit_dma_ba(vic, 5, pins);
1467-
pins = _m6569_sunit_dma_ba(vic, 6, pins);
1445+
pins = _m6569_sunit_dma_aec(vic, (1<<5), pins);
1446+
pins = _m6569_sunit_dma_ba(vic, (1<<5)|(1<<6), pins);
14681447
break;
14691448
case 6:
14701449
g_data = _m6569_s_i_access(vic, 5);
14711450
_m6569_s_access(vic, 5);
1472-
pins = _m6569_sunit_dma_aec(vic, 5, pins);
1473-
pins = _m6569_sunit_dma_ba(vic, 5, pins);
1474-
pins = _m6569_sunit_dma_ba(vic, 6, pins);
1475-
pins = _m6569_sunit_dma_ba(vic, 7, pins);
1451+
pins = _m6569_sunit_dma_aec(vic, (1<<5), pins);
1452+
pins = _m6569_sunit_dma_ba(vic, (1<<5)|(1<<6)|(1<<7), pins);
14761453
break;
14771454
case 7:
14781455
_m6569_p_access(vic, 6);
14791456
_m6569_s_access(vic, 6);
1480-
pins = _m6569_sunit_dma_aec(vic, 6, pins);
1481-
pins = _m6569_sunit_dma_ba(vic, 6, pins);
1482-
pins = _m6569_sunit_dma_ba(vic, 7, pins);
1457+
pins = _m6569_sunit_dma_aec(vic, (1<<6), pins);
1458+
pins = _m6569_sunit_dma_ba(vic, (1<<6)|(1<<7), pins);
14831459
break;
14841460
case 8:
14851461
g_data = _m6569_s_i_access(vic, 6);
14861462
_m6569_s_access(vic, 6);
1487-
pins = _m6569_sunit_dma_aec(vic, 6, pins);
1488-
pins = _m6569_sunit_dma_ba(vic, 6, pins);
1489-
pins = _m6569_sunit_dma_ba(vic, 7, pins);
1463+
pins = _m6569_sunit_dma_aec(vic, (1<<6), pins);
1464+
pins = _m6569_sunit_dma_ba(vic, (1<<6)|(1<<7), pins);
14901465
break;
14911466
case 9:
14921467
_m6569_p_access(vic, 7);
14931468
_m6569_s_access(vic, 7);
1494-
pins = _m6569_sunit_dma_aec(vic, 7, pins);
1495-
pins = _m6569_sunit_dma_ba(vic, 7, pins);
1469+
pins = _m6569_sunit_dma_aec(vic, (1<<7), pins);
1470+
pins = _m6569_sunit_dma_ba(vic, (1<<7), pins);
14961471
break;
14971472
case 10:
14981473
g_data = _m6569_s_i_access(vic, 7);
14991474
_m6569_s_access(vic, 7);
1500-
pins = _m6569_sunit_dma_aec(vic, 7, pins);
1501-
pins = _m6569_sunit_dma_ba(vic, 7, pins);
1475+
pins = _m6569_sunit_dma_aec(vic, (1<<7), pins);
1476+
pins = _m6569_sunit_dma_ba(vic, (1<<7), pins);
15021477
break;
15031478
case 11:
15041479
break;
@@ -1547,78 +1522,67 @@ static uint64_t _m6569_tick(m6569_t* vic, uint64_t pins) {
15471522
vic->gunit.enabled = vic->rs.display_state;
15481523
_m6569_c_access(vic);
15491524
g_data = _m6569_g_i_access(vic);
1550-
pins = _m6569_sunit_dma_ba(vic, 0, pins);
1525+
pins = _m6569_sunit_dma_ba(vic, (1<<0), pins);
15511526
_m6569_bunit_right(vic, 55);
15521527
break;
15531528
case 56:
15541529
vic->gunit.enabled = false;
15551530
_m6569_sunit_start(vic);
15561531
g_data = _m6569_i_access(vic);
1557-
pins = _m6569_sunit_dma_ba(vic, 0, pins);
1532+
pins = _m6569_sunit_dma_ba(vic, (1<<0), pins);
15581533
_m6569_bunit_right(vic, 56);
15591534
break;
15601535
case 57:
15611536
g_data = _m6569_i_access(vic);
1562-
pins = _m6569_sunit_dma_ba(vic, 0, pins);
1563-
pins = _m6569_sunit_dma_ba(vic, 1, pins);
1537+
pins = _m6569_sunit_dma_ba(vic, (1<<0)|(1<<1), pins);
15641538
break;
15651539
case 58:
15661540
_m6569_sunit_update_mc_disp_enable(vic);
15671541
_m6569_p_access(vic, 0);
15681542
_m6569_s_access(vic, 0);
1569-
pins = _m6569_sunit_dma_aec(vic, 0, pins);
1570-
pins = _m6569_sunit_dma_ba(vic, 0, pins);
1571-
pins = _m6569_sunit_dma_ba(vic, 1, pins);
1543+
pins = _m6569_sunit_dma_aec(vic, (1<<0), pins);
1544+
pins = _m6569_sunit_dma_ba(vic, (1<<0)|(1<<1), pins);
15721545
break;
15731546
case 59:
15741547
_m6569_rs_update_display_state(vic);
15751548
g_data = _m6569_s_i_access(vic, 0);
15761549
_m6569_s_access(vic, 0);
1577-
pins = _m6569_sunit_dma_aec(vic, 0, pins);
1578-
pins = _m6569_sunit_dma_ba(vic, 0, pins);
1579-
pins = _m6569_sunit_dma_ba(vic, 1, pins);
1580-
pins = _m6569_sunit_dma_ba(vic, 2, pins);
1550+
pins = _m6569_sunit_dma_aec(vic, (1<<0), pins);
1551+
pins = _m6569_sunit_dma_ba(vic, (1<<0)|(1<<1)|(1<<2), pins);
15811552
break;
15821553
case 60:
15831554
_m6569_p_access(vic, 1);
15841555
_m6569_s_access(vic, 1);
1585-
pins = _m6569_sunit_dma_aec(vic, 1, pins);
1586-
pins = _m6569_sunit_dma_ba(vic, 1, pins);
1587-
pins = _m6569_sunit_dma_ba(vic, 2, pins);
1556+
pins = _m6569_sunit_dma_aec(vic, (1<<1), pins);
1557+
pins = _m6569_sunit_dma_ba(vic, (1<<1)|(1<<2), pins);
15881558
break;
15891559
case 61:
15901560
g_data = _m6569_s_i_access(vic, 1);
15911561
_m6569_s_access(vic, 1);
1592-
pins = _m6569_sunit_dma_aec(vic, 1, pins);
1593-
pins = _m6569_sunit_dma_ba(vic, 1, pins);
1594-
pins = _m6569_sunit_dma_ba(vic, 2, pins);
1595-
pins = _m6569_sunit_dma_ba(vic, 3, pins);
1562+
pins = _m6569_sunit_dma_aec(vic, (1<<1), pins);
1563+
pins = _m6569_sunit_dma_ba(vic, (1<<1)|(1<<2)|(1<<3), pins);
15961564
break;
15971565
case 62:
15981566
_m6569_p_access(vic, 2);
15991567
_m6569_s_access(vic, 2);
1600-
pins = _m6569_sunit_dma_aec(vic, 2, pins);
1601-
pins = _m6569_sunit_dma_ba(vic, 2, pins);
1602-
pins = _m6569_sunit_dma_ba(vic, 3, pins);
1568+
pins = _m6569_sunit_dma_aec(vic, (1<<2), pins);
1569+
pins = _m6569_sunit_dma_ba(vic, (1<<2)|(1<<3), pins);
16031570
break;
16041571
case 63: /* HTOTAL */
16051572
_m6569_rs_next_rasterline(vic);
16061573
_m6569_rs_check_irq(vic);
16071574
g_data = _m6569_s_i_access(vic, 2);
16081575
_m6569_s_access(vic, 2);
1609-
pins = _m6569_sunit_dma_aec(vic, 2, pins);
1610-
pins = _m6569_sunit_dma_ba(vic, 2, pins);
1611-
pins = _m6569_sunit_dma_ba(vic, 3, pins);
1612-
pins = _m6569_sunit_dma_ba(vic, 4, pins);
1576+
pins = _m6569_sunit_dma_aec(vic, (1<<2), pins);
1577+
pins = _m6569_sunit_dma_ba(vic, (1<<2)|(1<<3)|(1<<4), pins);
16131578
_m6569_bunit_end(vic);
16141579
break;
16151580
default: _M6569_UNREACHABLE;
16161581
}
16171582
//-- main interrupt bit
16181583
if (vic->reg.int_latch & vic->reg.int_mask & 0x0F) {
16191584
vic->reg.int_latch |= M6569_INT_IRQ;
1620-
}
1621-
else {
1585+
} else {
16221586
vic->reg.int_latch &= ~M6569_INT_IRQ;
16231587
}
16241588
if (vic->reg.int_latch & M6569_INT_IRQ) {
@@ -1653,8 +1617,7 @@ uint64_t m6569_tick(m6569_t* vic, uint64_t pins) {
16531617
if (pins & M6569_CS) {
16541618
if (pins & M6569_RW) {
16551619
pins = _m6569_read(vic, pins);
1656-
}
1657-
else {
1620+
} else {
16581621
_m6569_write(vic, pins);
16591622
}
16601623
}

0 commit comments

Comments
 (0)