Jump to content

towmater

Members
  • Content Count

    803
  • Joined

  • Last visited

Posts posted by towmater


  1. No, I just use a small +5v 2A wall wart to power the CV after the mod. All went well until I added the No-delay bios, now it flickers so I wonder if 2000ma was not quite enough juice. You don't need the 12V either, I think that leaves you without RF tv out, you should put an f18a in whilst you are already operating so that RF won't matter, imho.


  2. im sure that the extra chips can be done away with if you used a better micro controller such as a mega for example?

     

    i haven't looked at the code in much detail but i want to attempt something similar, basically a jaguar controller converter. obviously this will need a better controller due to the amount of pins needed for the jaguar controller

    But the isolators are in the adapter because Coleco didn't provide a common ground. There isn't much that a microcontroller alone can do with that, and npn transistor switching requires the ground as well, in any case $1 isolators chips are a good way to protect the Coleco's io ic's.


  3. The current Arduino sketch: at this point I have not found enough 3041's to finish the keypad translation. I've found about 1-2 chips at every Fry's I've visited.

     

    void setup() {

    //flashback pins also include analog 0-3
    Serial.begin(9600);
    pinMode(2, INPUT_PULLUP);//B DB-9 Pin 1
    pinMode(3, INPUT_PULLUP);//D DB-9 Pin 4
    pinMode(4, INPUT_PULLUP);//C DB-9 Pin 8
    pinMode(5, INPUT_PULLUP); //E DB-9 Pin 9
    //db9 pin3 to v++
    //output to coleco:
    pinMode(6, OUTPUT); //=Brown Coleco pin 1
    pinMode(7, OUTPUT); //=Red Coleco pin 2
    pinMode(8, OUTPUT); //=Orange Coleco pin 3
    pinMode(9, OUTPUT); //=Yellow Coleco pin 4
    pinMode(10, OUTPUT); //=Blue Coleco pin 6
    pinMode(11, OUTPUT); //=Green Coleco pin 5
    pinMode(12, OUTPUT); //=Grey Coleco pin 8
    //defaults:
    digitalWrite(6, LOW);
    digitalWrite(7, LOW);
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
    digitalWrite(12, LOW);
    }
    void loop() {
    int A0;
    int A1;
    int A2;
    int A3;
    int D2;
    int D3;
    int D4;
    int D5;
    A0 = analogRead(0); //up DB-9 Pin 2 + 10k pulldown
    A1 = analogRead(1); //down DB-9 Pin 5+ 10k pulldown
    A2 = analogRead(2); //left DB-9 Pin 6+ 10k pulldown
    A3 = analogRead(3); //right DB-9 Pin 7+ 10k pulldown
    D2 = digitalRead(2); //B DB-9 Pin 1
    D3 = digitalRead(3); //D DB-9 Pin 4
    D4 = digitalRead(4); //C DB-9 Pin 8
    D5 = digitalRead(5); //E DB-9 Pin 9
    if (A0 > 500 && A2 == 0 && A3 == 0) {
    digitalWrite(6, HIGH);
    while (analogRead(0) > 500 && analogRead(2) == 0 && analogRead(3) == 0) //up and not LR
    { }
    }
    digitalWrite(6, LOW);
    if (A1 > 500 && A2 == 0 && A3 == 0) {
    digitalWrite(7, HIGH);
    while (analogRead(1) > 500 && analogRead(2) == 0 && analogRead(3) == 0) //down and not LR
    { }
    }
    digitalWrite(7, LOW);
    if (A2 > 500 && A1 == 0 && A0 == 0) {
    digitalWrite(8, HIGH);
    while (analogRead(2) > 500 && analogRead(1) == 0 && analogRead(0) == 0) //right
    { }
    }
    digitalWrite(8, LOW);
    if (A3 > 500 && A1 == 0 && A0 == 0) {
    digitalWrite(9, HIGH);
    while (analogRead(3) > 500 && analogRead(1) == 0 && analogRead(0) == 0) //left
    { }
    }
    digitalWrite(9, LOW);
    //diagonally
    if (A0 > 500 && A2 > 500 && A3 == 0) {
    digitalWrite(6, HIGH);
    digitalWrite(8, HIGH);
    while (analogRead(0) > 500 && analogRead(2) > 500) //up+left
    { }
    }
    digitalWrite(6, LOW);
    digitalWrite(8, LOW);
    if (A0 > 500 && A2 == 0 && A3 > 500) {
    digitalWrite(6, HIGH);
    digitalWrite(9, HIGH);
    while (analogRead(0) > 500 && analogRead(3) > 500) //up+right
    { }
    }
    digitalWrite(6, LOW);
    digitalWrite(9, LOW);
    if (A1 > 500 && A2 > 500 && A3 == 0) {
    digitalWrite(7, HIGH);
    digitalWrite(8, HIGH);
    while (analogRead(1) > 500 && analogRead(2) > 500) //down+left
    { }
    }
    digitalWrite(7, LOW);
    digitalWrite(8, LOW);
    if (A1 > 500 && A2 == 0 && A3 > 500) {
    digitalWrite(7, HIGH);
    digitalWrite(9, HIGH);
    while (analogRead(1) > 500 && analogRead(3) > 500) //down+right
    { }
    }
    digitalWrite(7, LOW);
    digitalWrite(9, LOW);
    //triggers
    if (A0 < 500 && A0 > 1 && D2 == 0) { //ltrigger
    digitalWrite(10, HIGH);
    while (analogRead(0) < 500 && analogRead(0) > 1 && digitalRead(2) == 0) //up and not LR
    { }
    }
    digitalWrite(10, LOW);
    String diagnostic = "A0=";
    diagnostic.concat(A0);
    diagnostic.concat("\t");
    diagnostic.concat("A1=");
    diagnostic.concat(A1);
    diagnostic.concat("\t");
    diagnostic.concat("A2=");
    diagnostic.concat(A2);
    diagnostic.concat("\t");
    diagnostic.concat("A3=");
    diagnostic.concat(A3);
    diagnostic.concat("\t");
    diagnostic.concat("D2=");
    diagnostic.concat(D2);
    diagnostic.concat("\t");
    diagnostic.concat("D3=");
    diagnostic.concat(D3);
    diagnostic.concat("\t");
    diagnostic.concat("D4=");
    diagnostic.concat(D4);
    diagnostic.concat("\t");
    diagnostic.concat("D5=");
    diagnostic.concat(D5);
    diagnostic.concat("\t");
    Serial.print(diagnostic);
    Serial.println("");
    }
    • Like 1

  4. "They said it shouldn't be done"

     

    My original controllers were trashed. So I repurposed the Flashback controllers.

     

    There are just enough pins on an Atmega 168 to make one controller convertor, plus 10 3041 chips-thanks to Coleco's arcane wiring scheme, I couldn't just use a series of transistors - so at a minimum one could do this for about $30 if you already have an Arduino board to program the Atmega chip. (Assuming you didn't want to devote an Arduino board to this.)

     

    So I would likely have been better off just sourcing some reasonably usable original controllers.

     

     

    post-40446-0-10851300-1414257637_thumb.jpg

    • Like 1

  5. The original design of the Coleco Hand Controller ...

    Thanks for that, I love info like that.

    Feeling humbled by meeting Matt of F18A chip fame on the same day as posting my controller complaint (bizarro small world?) I have reverse-engineered the new controller, posted here: http://atariage.com/forums/gallery/image/12070-coleco-flashback-controller-csi/

     

    That's half the battle, now I need to do the same for the original controller, hopefully someone has already done that and posted it somewhere.

     

    The good news is that the flashback controller only uses four analog lines, so a microcontroller translator dongle should be a piece-of-cake (assuming the original controllor port supplies some power.)


  6. You wonder why the directional discs have shorter pegs? Value Engineering. The post has to be made from thick plastic to prevent snapping, and guess what, a shorter post will save material cost and perhaps be cheaper to mold as well.

     

     

    Actually that's the one thing I did understand. The reason I need to replace the original controllers is that the shafts broke and were virtually irreparable. The short shafts on the new design were not to save money, rather to save (er, well money) them from an unknown number of returned products. The new design will actually bottom-out the thumb disc against the outer case before even fully compressing the rubber between the stick and the switch contacts, so the new design would be extremely difficult to snap.


  7. Bill's description here mentions that the controllers are backwards compatible.

    I bought this because of the compatibility, (preordered the minute I read this in May), finally able to resurrect my original machine. I promptly plugged the new controllers into the old console and they fit, albeit loosely. Before powering on, I figured I'd better take a glance at the manual. Sure enough, on page one: "Colecovison Flashback Controllers are NOT compatible with original Colecovison consoles."

     

    I think I will see if I can swap out some components to use the new controller's switches inside the old controller's housings. edit: I opened the new controller, it uses varying resistances to detect which button is pressed, whereas the old one used no less than 28 diodes to make a binary pattern to be read by the Coleco. So I guess they may have saved about a dollar by not making them compatible. I imagine that adds up over the total production run qty.

     

    I will fit an ATMEGA chip in to translate the button press signals to the old Coleco. Unfortunately the new controllers don't fit comfortably in the old console's tray, although the do fit acceptably if the cord is stressed a bit.

     

    BTW, what's up with the "spinner" contacts on the old controller circuit boards?

×
×
  • Create New...