trunk/nl_examples/breakout.c
| r245590 | r245591 | |
| 64 | 64 | CHIP("S2", DIPSWITCH, &dipswitch2_desc) |
| 65 | 65 | CHIP("S3", DIPSWITCH, &dipswitch3_desc) |
| 66 | 66 | CHIP("S4", DIPSWITCH, &dipswitch4_desc) |
| 67 | | |
| 67 | |
| 68 | 68 | SOLVER(Solver, 48000) |
| 69 | 69 | PARAM(Solver.ACCURACY, 1e-7) // works and is sufficient |
| 70 | 70 | //CHIP("CLOCK", CLOCK_14_318_MHZ) |
| r245590 | r245591 | |
| 80 | 80 | CHIP("C36", CAPACITOR, &c36_desc) |
| 81 | 81 | CHIP("C37", CAPACITOR, &c37_desc) |
| 82 | 82 | CHIP("PAD_EN_BUF", BUFFER, &pad_en_buf_desc) |
| 83 | | |
| 83 | |
| 84 | 84 | CHIP("A3", 7474) |
| 85 | 85 | CHIP("A4", 7408) |
| 86 | 86 | CHIP("A5", 7400) |
| r245590 | r245591 | |
| 105 | 105 | CHIP("C7", 9316) |
| 106 | 106 | CHIP("C8", 9316) |
| 107 | 107 | CHIP("C9", 555_Mono, &c9_555_desc) |
| 108 | | |
| 108 | |
| 109 | 109 | CHIP("D2", 7432) |
| 110 | 110 | CHIP("D3", 7474) |
| 111 | 111 | CHIP("D4", 9316) |
| r245590 | r245591 | |
| 208 | 208 | CHIP("COIN1", COIN_INPUT) |
| 209 | 209 | |
| 210 | 210 | //CHIP("COIN2", COIN_INPUT) |
| 211 | | |
| 211 | |
| 212 | 212 | CHIP("START", START_INPUT) |
| 213 | 213 | |
| 214 | 214 | CHIP("SERVE", BUTTONS1_INPUT) |
| 215 | | |
| 215 | |
| 216 | 216 | //TODO: coin2 and start 2 |
| 217 | 217 | |
| 218 | 218 | VIDEO(breakout) |
| r245590 | r245591 | |
| 256 | 256 | #define H64 "K2", 3 |
| 257 | 257 | #define H128 "K2", 6 |
| 258 | 258 | |
| 259 | | //#define V1 |
| 259 | //#define V1 |
| 260 | 260 | #define V2 "M3", 3 |
| 261 | 261 | #define V4 "M3", 6 |
| 262 | 262 | #define V8 "M3", 11 |
| r245590 | r245591 | |
| 274 | 274 | #define BSYNC "J1", 15 |
| 275 | 275 | #define BSYNC_n "J1", 14 |
| 276 | 276 | |
| 277 | | #define BALL "D7", 6 |
| 277 | #define BALL "D7", 6 |
| 278 | 278 | #define BALL_DISPLAY "A4", 6 |
| 279 | | #define PLAYFIELD "H4", 3 |
| 280 | | #define SCORE "D3", 5 |
| 279 | #define PLAYFIELD "H4", 3 |
| 280 | #define SCORE "D3", 5 |
| 281 | 281 | #define VERT_TRIG_n "H1", 8 |
| 282 | 282 | |
| 283 | 283 | #define CLOCK "H1", 11 |
| r245590 | r245591 | |
| 292 | 292 | |
| 293 | 293 | #define COIN "L9", 6 |
| 294 | 294 | #define COIN1_n "F8", 5 |
| 295 | | #define COIN2_n "H9", 5 |
| 295 | #define COIN2_n "H9", 5 |
| 296 | 296 | #define CREDIT_1_OR_2 "L9", 3 |
| 297 | 297 | #define CREDIT_1_OR_2_n "F9", 8 |
| 298 | 298 | #define CREDIT2 "F9", 6 |
| r245590 | r245591 | |
| 306 | 306 | |
| 307 | 307 | #define P2_CONDITIONAL "H1", 3 |
| 308 | 308 | #define P2_CONDITIONAL_dash "H7", 8 |
| 309 | | #define PLAYER_2 "B4", 14 |
| 309 | #define PLAYER_2 "B4", 14 |
| 310 | 310 | #define PLAYER_2_n "M9", 8 |
| 311 | 311 | |
| 312 | 312 | #define START_GAME "D8", 6 |
| r245590 | r245591 | |
| 317 | 317 | #define BG1 "K8", 8 |
| 318 | 318 | #define BG2_n "K8", 5 |
| 319 | 319 | #define BG2 "K8", 6 |
| 320 | | |
| 320 | |
| 321 | 321 | #define FREE_GAME_TONE "N7", 3 |
| 322 | 322 | #define BONUS_COIN "L9", 11 |
| 323 | | |
| 323 | |
| 324 | 324 | //#define Q "E9", 6 |
| 325 | 325 | #define LAT_Q "E9", 6 |
| 326 | 326 | #define Q_n "LATCH", 3 |
| 327 | 327 | #define SBD_n "D2", 11 |
| 328 | 328 | |
| 329 | 329 | #define PLAY_CP "D2", 8 |
| 330 | | #define PLGM2_n "F7", 7 |
| 330 | #define PLGM2_n "F7", 7 |
| 331 | 331 | #define VB_HIT_n "A5", 6 |
| 332 | 332 | |
| 333 | 333 | #define SERVE_n "SERVE", 1 |
| 334 | 334 | #define SERVE_WAIT "A3", 9 |
| 335 | | #define SERVE_WAIT_n "A3", 8 |
| 335 | #define SERVE_WAIT_n "A3", 8 |
| 336 | 336 | |
| 337 | | #define BRICK_DISPLAY "E3", 1 |
| 337 | #define BRICK_DISPLAY "E3", 1 |
| 338 | 338 | #define BRICK_HIT "E6", 5 |
| 339 | 339 | #define BRICK_HIT_n "E6", 6 |
| 340 | 340 | |
| r245590 | r245591 | |
| 401 | 401 | #define FPD1_n "F3", 9 |
| 402 | 402 | #define FPD2 "F3", 6 |
| 403 | 403 | #define FPD2_n "F3", 7 |
| 404 | | |
| 404 | |
| 405 | 405 | #define COUNT "N7", 11 |
| 406 | 406 | #define COUNT_1 "N7", 8 |
| 407 | 407 | #define COUNT_2 "N7", 6 |
| 408 | 408 | |
| 409 | 409 | #define ATTRACT "E6", 8 |
| 410 | 410 | #define ATTRACT_n "E6", 9 |
| 411 | | |
| 411 | |
| 412 | 412 | #define BRICK_SOUND "B8", 14 |
| 413 | 413 | #define P_HIT_SOUND "B7", 12 |
| 414 | 414 | #define VB_HIT_SOUND "B7", 11 |
| r245590 | r245591 | |
| 416 | 416 | #define LH_SIDE "J3", 13 |
| 417 | 417 | #define RH_SIDE "H2", 3 |
| 418 | 418 | #define TOP_BOUND "K4", 6 |
| 419 | | |
| 419 | |
| 420 | 420 | // CONNECTION(CREDIT_1_OR_2, "CREDIT_LIGHT1", 1) |
| 421 | 421 | // CONNECTION(CREDIT2, "CREDIT_LIGHT2", 1) |
| 422 | 422 | // CONNECTION(SERVE_WAIT_n, "SERVE_LIGHT", 1) |
| r245590 | r245591 | |
| 540 | 540 | CONNECTION(P2_CONDITIONAL, "M2", 7) |
| 541 | 541 | CONNECTION(GND, "M2", 4) |
| 542 | 542 | CONNECTION(GND, "M2", 16) |
| 543 | | |
| 543 | |
| 544 | 544 | CONNECTION("M2", 14, "N2", 13) |
| 545 | 545 | CONNECTION(V16_d, "N2", 10) |
| 546 | 546 | CONNECTION(V32_d, "N2", 8) |
| r245590 | r245591 | |
| 608 | 608 | CONNECTION(P, "K1", 10) |
| 609 | 609 | CONNECTION(CLOCK, "K1", 2) |
| 610 | 610 | CONNECTION("L1", 15, "K1", 7) |
| 611 | | |
| 611 | |
| 612 | 612 | CONNECTION(P, "L1", 1) |
| 613 | 613 | CONNECTION(P, "L1", 3) |
| 614 | 614 | CONNECTION(GND, "L1", 4) |
| r245590 | r245591 | |
| 631 | 631 | |
| 632 | 632 | CONNECTION("M1", 15, "H2", 5) |
| 633 | 633 | CONNECTION("L1", 15, "H2", 4) |
| 634 | | |
| 634 | |
| 635 | 635 | CONNECTION(V128_d, "N4", 5) |
| 636 | 636 | CONNECTION(V64_d, "N4", 3) |
| 637 | 637 | CONNECTION(V32_d, "N4", 4) |
| r245590 | r245591 | |
| 648 | 648 | CONNECTION("L1", 15, "M1", 7) |
| 649 | 649 | CONNECTION("K1", 15, "M1", 10) |
| 650 | 650 | |
| 651 | | |
| 651 | |
| 652 | 652 | //9312 circuit |
| 653 | 653 | CONNECTION(PLAYER_2, "M9", 9) |
| 654 | 654 | CONNECTION(BALL_A, "C5", 5) |
| r245590 | r245591 | |
| 758 | 758 | |
| 759 | 759 | //PADDLES |
| 760 | 760 | CONNECTION(ATTRACT_n, "B2", 4) |
| 761 | | |
| 761 | |
| 762 | 762 | CONNECTION("B2", 3, "E9", 13) |
| 763 | 763 | CONNECTION(PLAYER_2_n, "M3", 9) |
| 764 | 764 | CONNECTION(V128, "M3", 10) |
| r245590 | r245591 | |
| 810 | 810 | CONNECTION(P, "D4", 10) |
| 811 | 811 | CONNECTION("C3", 11, "D4", 7) |
| 812 | 812 | CONNECTION(VSYNC_n, "D4", 1) |
| 813 | | |
| 813 | |
| 814 | 814 | CONNECTION("D4", 15, "E4", 10) |
| 815 | 815 | CONNECTION("H7", 6, "E4", 9) |
| 816 | 816 | CONNECTION("C9", 3, "H7", 5) |
| r245590 | r245591 | |
| 839 | 839 | CONNECTION(V32_d, "J2", 9) |
| 840 | 840 | CONNECTION("J2", 8, "C2", 10) |
| 841 | 841 | CONNECTION("C2", 6, "C2", 9) |
| 842 | | |
| 843 | 842 | |
| 843 | |
| 844 | 844 | //SCORE |
| 845 | 845 | CONNECTION(SCI_n, "D3", 4) |
| 846 | 846 | CONNECTION(GND, "D3", 2) |
| 847 | 847 | CONNECTION(GND, "D3", 3) |
| 848 | 848 | CONNECTION(GND, "D3", 1) |
| 849 | | |
| 849 | |
| 850 | 850 | //PLAYER2_CONDITIONAL |
| 851 | 851 | CONNECTION(PLAYER_2, "H7", 10) |
| 852 | 852 | CONNECTION(GND, "S2", 1) |
| r245590 | r245591 | |
| 874 | 874 | CONNECTION(PLAYER_2, "M6", 7) |
| 875 | 875 | CONNECTION(COUNT_2, "M6", 2) |
| 876 | 876 | CONNECTION(START_GAME_n, "M6", 1) |
| 877 | | |
| 877 | |
| 878 | 878 | CONNECTION("M6", 15, "L6", 10) |
| 879 | 879 | CONNECTION(PLAYER_2, "L6", 7) |
| 880 | 880 | CONNECTION(COUNT_2, "L6", 2) |
| r245590 | r245591 | |
| 884 | 884 | CONNECTION(RAM_PLAYER1, "H6", 7) |
| 885 | 885 | CONNECTION(COUNT_1, "H6", 2) |
| 886 | 886 | CONNECTION(START_GAME_n, "H6", 1) |
| 887 | | |
| 887 | |
| 888 | 888 | CONNECTION("H6", 15, "J6", 10) |
| 889 | 889 | CONNECTION(RAM_PLAYER1, "J6", 7) |
| 890 | 890 | CONNECTION(COUNT_1, "J6", 2) |
| r245590 | r245591 | |
| 917 | 917 | CONNECTION("N8", 9, "N9", 11) |
| 918 | 918 | CONNECTION(P, "N9", 15) |
| 919 | 919 | CONNECTION(P, "N9", 5) |
| 920 | | |
| 920 | |
| 921 | 921 | CONNECTION(COUNT, "N9", 4) |
| 922 | 922 | CONNECTION(START_GAME, "N9", 14) |
| 923 | 923 | CONNECTION(H8_n, "N9", 1) |
| r245590 | r245591 | |
| 991 | 991 | CONNECTION(CKBH, "H1", 12) |
| 992 | 992 | CONNECTION("F1", 14, "H1", 13) |
| 993 | 993 | CONNECTION("F1", 15, "E1", 5) |
| 994 | | |
| 994 | |
| 995 | 995 | CONNECTION(P, "F1", 1) |
| 996 | 996 | CONNECTION(P, "F1", 7) |
| 997 | 997 | CONNECTION(P, "F1", 10) |
| r245590 | r245591 | |
| 1029 | 1029 | |
| 1030 | 1030 | // Coin Circuit |
| 1031 | 1031 | CONNECTION("COIN1", 1, "F9", 13) |
| 1032 | | |
| 1032 | |
| 1033 | 1033 | CONNECTION(CSW1, "F9", 11) |
| 1034 | 1034 | //CONNECTION("F9", 10, "F9", 13) //TODO: causes lots of bouncing, commented out since this trace is not implemented in gotcha |
| 1035 | 1035 | |
| r245590 | r245591 | |
| 1044 | 1044 | CONNECTION(V64I, "F8", 3) |
| 1045 | 1045 | CONNECTION("F8", 9, "F8", 2) |
| 1046 | 1046 | CONNECTION(CSW1, "F8", 4) |
| 1047 | | |
| 1047 | |
| 1048 | 1048 | CONNECTION("F8", 6, "H8", 12) |
| 1049 | 1049 | CONNECTION(P, "H8", 10) |
| 1050 | 1050 | CONNECTION(V16_d, "H8", 11) |
| r245590 | r245591 | |
| 1063 | 1063 | //COIN2 circuit |
| 1064 | 1064 | //CONNECTION("COIN2", 1, "F9", 1) |
| 1065 | 1065 | CONNECTION(GND, "F9", 1) //TODO: coin2 not implemented |
| 1066 | | |
| 1066 | |
| 1067 | 1067 | CONNECTION(CSW2, "F9", 3) |
| 1068 | 1068 | CONNECTION(CSW2, "H9", 10) |
| 1069 | 1069 | CONNECTION("F9", 4, "H9", 12) |
| r245590 | r245591 | |
| 1073 | 1073 | CONNECTION("H9", 9, "H9", 2) |
| 1074 | 1074 | CONNECTION(CSW2, "H9", 4) |
| 1075 | 1075 | CONNECTION(P, "H9", 1) |
| 1076 | | |
| 1076 | |
| 1077 | 1077 | CONNECTION(P, "H8", 4) |
| 1078 | 1078 | CONNECTION("H9", 6, "H8", 2) |
| 1079 | 1079 | CONNECTION(V16_d, "H8", 3) |
| r245590 | r245591 | |
| 1179 | 1179 | CONNECTION(P, "D3", 12) |
| 1180 | 1180 | CONNECTION(START_GAME, "D3", 11) |
| 1181 | 1181 | CONNECTION(SERVE_n, "D3", 13) |
| 1182 | | |
| 1182 | |
| 1183 | 1183 | //Playfield |
| 1184 | 1184 | CONNECTION(LH_SIDE, "H3", 1) |
| 1185 | 1185 | CONNECTION(TOP_BOUND, "H3", 13) |
| r245590 | r245591 | |
| 1187 | 1187 | CONNECTION("H3", 12, "H4", 2) |
| 1188 | 1188 | CONNECTION("E1", 2, "C36", 1) |
| 1189 | 1189 | CONNECTION("C36", 2, "H4", 1) |
| 1190 | | |
| 1190 | |
| 1191 | 1191 | CONNECTION(BALL_DISPLAY, "A5", 10) |
| 1192 | 1192 | CONNECTION(PSYNC, "A5", 9) |
| 1193 | 1193 | CONNECTION(BSYNC, "C3", 2) |
| r245590 | r245591 | |
| 1200 | 1200 | CONNECTION("C5", 12, "A5", 2) |
| 1201 | 1201 | CONNECTION(BSYNC, "A5", 5) |
| 1202 | 1202 | CONNECTION(VSYNC, "A5", 4) |
| 1203 | | |
| 1203 | |
| 1204 | 1204 | CONNECTION("C5", 12, "A5", 13) |
| 1205 | 1205 | CONNECTION("A5", 3, "A5", 12) |
| 1206 | 1206 | |
| r245590 | r245591 | |
| 1213 | 1213 | CONNECTION("C4", 6, "A6", 12) |
| 1214 | 1214 | CONNECTION(BP_HIT_n, "A6", 11) |
| 1215 | 1215 | CONNECTION(P, "A6", 13) |
| 1216 | | |
| 1216 | |
| 1217 | 1217 | CONNECTION("A5", 3, "A6", 4) |
| 1218 | 1218 | CONNECTION(V16_d, "A6", 2) |
| 1219 | 1219 | CONNECTION(VB_HIT_n, "A6", 3) |
| r245590 | r245591 | |
| 1241 | 1241 | |
| 1242 | 1242 | CONNECTION("B5", 6, "C5", 11) |
| 1243 | 1243 | CONNECTION("B5", 7, "C5", 9) |
| 1244 | | |
| 1244 | |
| 1245 | 1245 | CONNECTION(SU_n, "B5", 11) |
| 1246 | 1246 | CONNECTION(P, "B5", 15) |
| 1247 | 1247 | CONNECTION(P, "B5", 1) |
| r245590 | r245591 | |
| 1326 | 1326 | CONNECTION(P, "F4", 2) |
| 1327 | 1327 | CONNECTION("E4", 3, "F4", 3) |
| 1328 | 1328 | CONNECTION(START_GAME1_n, "F4", 1) |
| 1329 | | |
| 1329 | |
| 1330 | 1330 | CONNECTION(P, "F4", 10) |
| 1331 | 1331 | CONNECTION(P, "F4", 12) |
| 1332 | 1332 | CONNECTION("E4", 6, "F4", 11) |
| r245590 | r245591 | |
| 1339 | 1339 | |
| 1340 | 1340 | CONNECTION(P, "F3", 3) |
| 1341 | 1341 | CONNECTION(P, "F3", 13) |
| 1342 | | |
| 1343 | | |
| 1342 | |
| 1343 | |
| 1344 | 1344 | //CREDIT_COUNTER |
| 1345 | 1345 | CONNECTION(BONUS_COIN, "E7", 8) |
| 1346 | 1346 | CONNECTION(COIN, "E7", 9) |
| r245590 | r245591 | |
| 1364 | 1364 | CONNECTION("L8", 6, "M8", 10) |
| 1365 | 1365 | CONNECTION("L8", 2, "M8", 11) |
| 1366 | 1366 | CONNECTION("L8", 3, "M9", 13) |
| 1367 | | |
| 1367 | |
| 1368 | 1368 | CONNECTION(CREDIT2_n, "F9", 5) |
| 1369 | 1369 | CONNECTION(CREDIT2_n, "L9", 2) |
| 1370 | 1370 | CONNECTION("M9", 12, "L9", 1) |
| r245590 | r245591 | |
| 1402 | 1402 | CONNECTION(BALL_C, "S4", 2) |
| 1403 | 1403 | CONNECTION("S4", 3, "A4", 1) |
| 1404 | 1404 | CONNECTION("A4", 3, "C37", 1) |
| 1405 | | |
| 1405 | |
| 1406 | 1406 | CONNECTION(SERVE_WAIT_n, "A4", 5) |
| 1407 | 1407 | CONNECTION(BALL, "A4", 4) |
| 1408 | 1408 | |
| 1409 | | // Ball Circuit |
| 1409 | // Ball Circuit |
| 1410 | 1410 | |
| 1411 | 1411 | |
| 1412 | 1412 | // Video Summing |
| r245590 | r245591 | |
| 1428 | 1428 | |
| 1429 | 1429 | CONNECTION("VIDEO", Video::HBLANK_PIN, HSYNC) |
| 1430 | 1430 | CONNECTION("VIDEO", Video::VBLANK_PIN, "E3", 10) |
| 1431 | | |
| 1432 | 1431 | |
| 1432 | |
| 1433 | 1433 | // Audio Summing |
| 1434 | 1434 | CONNECTION("AUDIO", 1, "B9", 11) |
| 1435 | 1435 | CONNECTION("AUDIO", 2, "B9", 8) |