since my DVD-ROM hoax, i've now been wondering.. how hard would it actually be to make a CD-player?
i could use the audio-in line to get sound out of the TV, and maybe the controller lines to change CD-Tracks and stuff like that.. only thing i don't know about, is polling the information about the CD currently playing.. would the one address line (A15) be enough for that? (i'd imagine it' have to be serial data)
Are you trying to make a CD player out of the NES or the game cartridge?
And haven't you already been down this road before?
doppelganger wrote:
Are you trying to make a CD player out of the NES or the game cartridge?
And haven't you already been down this road before?
that was the hoax, the one i just admitted today (that was already like 5 days old)..
i was hoping to use the expansion port though, for the drive to sit under it like a Sega CD, but use a cartridge for a BIOS (unless there's a way to load data from the expansion port.)
im actually curious if this would actually work...
What sucks about the expansion port is that there is no way to get connectors for it. So you either have to solder wires or have the resources to have custom connectors made. If you really only need it for rerouting the audio though, just a jumper wire could do that (and it's already kind of a standard mod for people who want expansion sound with a Famicom cart adapter).
A lot of people have built IDE interfaces for 6502, I don't think ATAPI is too much different. I'm pretty sure all of the signals you'd need are on the cart connector. I don't know where exactly to find the info about getting a music CD to play though. I imagine you'd need to read and write commands to the drive, so AFAIK it could be about the same as interfacing to it for data.
ATA (commonly called IDE), ATAPI, and CompactFlash are electrically identical. The NES Power Pak cartridge (imagine a SuperCard for NES) includes a CompactFlash slot.
evildragon wrote:
only thing i don't know about, is polling the information about the CD currently playing.. would the one address line (A15) be enough for that? (i'd imagine it' have to be serial data)
The "only thing" you don't know about? None of that made any sense whatsoever! If you are serious about creating something, really learn something first.
http://www.play-hookey.com/digital/
http://home.freeuk.net/c.ward/6502/index.html
http://www.googleguide.com/
kyuusaku wrote:
evildragon wrote:
only thing i don't know about, is polling the information about the CD currently playing.. would the one address line (A15) be enough for that? (i'd imagine it' have to be serial data)
The "only thing" you don't know about? None of that made any sense whatsoever! If you are serious about creating something, really learn something first.
http://www.play-hookey.com/digital/http://home.freeuk.net/c.ward/6502/index.htmlhttp://www.googleguide.com/
because that portion isn't even about the NES.. on a CD audio controller circuit, you'd have to "poll" it for information (meaning, READ the controller), and you'll have the track information and time information, which actually comes from the CD sub channels... That would be useful to display on the TV...
Even giving you the benefit of the doubt that you could handle the NES portion of your silly project, you clearly don't project the understanding of an address line. Seek a computer bus tutorial.
Listen, if would have only used my links (and NESdev) instead of pointlessly reiterating you may be somewhere. Read the digital tutorial to understand Chris' 6502 computer page, particularly address decoding and his IDE circuit. From there remap his IDE interface to free NES I/O. After that, Google how to "poll" the drive because as you're aware, this is a NES board, naturally people here would be best suited to helping you with the NES aspects. You're on your own to implement (and write the "bit-banging" code for) the interface.
wait wait wait, im not talking about IDE.. I'm talking about a standard CD AUDIO player.. NOT IDE.. This isn't for storage or anything, so im not wasting my time with that..
This is what I want this to do (and don't take me out of context): Take an old portable CD player, and have the controller buttons map to the actually buttons on the player. When a controller button is pushed, the expansion port forwards these "shorts" to the buttons, therefore controlling the CD layer...
I don't understand A15, THATS WHY I AM ASKING, so stop being rude.. Obviously, this CD player has an LCD that shows the current track and time.. From reading the specs on the controlling chip in the player, it has a dedicated serial line for this information (if it was used in a different application).. I am wondering if that information can be used somehow.. OR if I would have to pre-encode it to something the NES can use, and forward it to the cartridge for use in the PRG memory (or possibly the character memory)...
i don't know about the expansion bus, this is why i am asking...
This isn't to be hard at all, this is like the easiest of all things possible.. Simply shorting the connector pads on the player would cause it to think the button was pushed.. the NES can forward those controller pushes (doesn't it?), or somehow write code to push each and every individual button.. Though, I think a PIC should be involved, it seems with that this whole thing would be easier..
I'm seriously thinking about just forgetting the idea.. The concept is nice, but the implementation is crazy.
Serial data is of use when there is only one DATA line, not one Adress line.
The adress bus is here to determine electrically where the main CPU is reading/writing it's memory. With only one adress line, this is completely pointless, because you can only say if the processor is reading/writing/executing it's code from $0000-$7fff or from $8000-$ffff, wich is completely pointless.
You could just solder 3 wires form your CD player to the NES expansion connector : Solder both grounds together, and solder both left and right audio to audio in trough two resistors. And you get a CD player for the NES.
Bregalad wrote:
Serial data is of use when there is only one DATA line, not one Adress line.
The adress bus is here to determine electrically where the main CPU is reading/writing it's memory. With only one adress line, this is completely pointless, because you can only say if the processor is reading/writing/executing it's code from $0000-$7fff or from $8000-$ffff, wich is completely pointless.
You could just solder 3 wires form your CD player to the NES expansion connector : Solder both grounds together, and solder both left and right audio to audio in trough two resistors. And you get a CD player for the NES.
yea, you could do that, but then you can't control it
i would like to see it possible to control the CD player itself.. if that's not gonna be possible, then forget it. was a good idea, but if implementation just gonna get crazy, then im not gonna bother with it...
-------------------------------------------------------
perhaps the IDE route would be better, and just to modify the cart.. you could tell an ATAPI based drive simple commands to control it's CD player, and what's better, those drives will always tell the status.. (even disc rotation speed)...
Having your own cartridge with a flat cable from it that would go to the CD player below the NES, I think that's perfectly possible, but first you'd have to undertand how a CD player works, and I have no idea myself.
Another solution without any cartridge would be to insert your "CD player" in the Joypad port 2 so that the NES can do serial writes and reads to/from it, just like it does with the controllers.
Bregalad wrote:
Having your own cartridge with a flat cable from it that would go to the CD player below the NES, I think that's perfectly possible, but first you'd have to undertand how a CD player works, and I have no idea myself.
Another solution without any cartridge would be to insert your "CD player" in the Joypad port 2 so that the NES can do serial writes and reads to/from it, just like it does with the controllers.
hmm, maybe that would work (im not familiar with the controller ports), but then there would be no audio connection, unless it had a patch cable... I think the cartridge idea is better, so that way the cart can also have a program to actually utilize it, and draw a nice interface on the screen..
Even if you put audio through the cartridge, you'd still need a modded NES or an expansion port dongle with male/female through audio connectors to put on the side of the nes, wouldn't you?
gannon wrote:
Even if you put audio through the cartridge, you'd still need a modded NES or an expansion port dongle with male/female through audio connectors to put on the side of the nes, wouldn't you?
yes..
but i had an idea. why not just have an audio patch cable? audio out of the NES, into the drive, and the drive spits out audio to the TV, with stereo CD sound, and mono NES sound.. (unless the NES is stereo modified)
Then it'd be the other way arround, you'd have to fin NES A/V into another machine and mix it before reaching your TV. It's up to you to design such projects if you feel like you have the knownledge to, but most of us don't, because personally I have no clue how CD readers works (exepts for the very basics) and I can listen all my CDs trough my stereo, so I don't want to use my NES for this, I'd use it to play games instead. That's just my personal troughts.
If you don't use the expansion port, you'd have to poll the audio from the CD player (can you get it in PCM?) and constantly update the NES's PCM channel (register $4011). I don't know how feasible it would be, but it's the only way without the expansion port.
dvdmth wrote:
If you don't use the expansion port, you'd have to poll the audio from the CD player (can you get it in PCM?) and constantly update the NES's PCM channel (register $4011). I don't know how feasible it would be, but it's the only way without the expansion port.
you can get PCM from it, it's format is in: 16-bit 2-Channel 44.1KHz...
i don't think that will sound good on the NES PCM..
Well, the NES has 7-bit one channel PCM. Your software would have to manually copy the data from one place to another regulary, creating the sampling rate.
OK, well now I know where you got the serial thing from. Portable CD player, not a bad idea if you've got the datasheets, but probably would be difficult to reproduce since different ones probably use all kinds of different controllers.
But, on the NES controller port you've got one input and one output that you can use for anything. If it's asynchronous (like RS232) you might not need anything else, though you'd have to time the code which makes it tricky to do anything else at the same time. You probably would need a PIC or something else, otherwise.
Quote:
Well, the NES has 7-bit one channel PCM. Your software would have to manually copy the data from one place to another regulary, creating the sampling rate.
Maybe the data going to the DAC could be tapped into and redirected to the PIC on Squeedo (I left an expansion connector with 4 I/Os for such crazy things). Then one could get the 7-bit sound through an IRQ like my sound synth, no system modifications needed, heheh.
the serial line on the players controller is serial.. it is RS232 infact, as I tried it on my laptop via HyperTerminal.. When I turn it on, it reports like this, but it seems to be ASCII only, and only an output, not an input..
Code:
PLAYER INT - OK
READ CD TOC - OK / 12 TRACKS / 43:18 TIME
WAITING FOR USER INPUT
TRACK > PRESSED
TRACK > PRESSED
TRACK > PRESSED
PLAY PRESSED
FIND T3 / PLAY T3
00:00
00:01
00:02
00:03
STOP PRESSED
STOP PRESSED - TRIGGER STANDBY
STANDBY COMPLETE
$
that's pretty much how it reports.. I think i could use that, to have the NES reformat it into something it can use.. but trying to press physical buttons, im gonna need a parallel interface i think, as that serial line contains no audio, and is purely status output..
Well that's interesting. You probably could pull it all off with the controller port. Perhaps for parallel output using something like a binary counter, latch, and/or serial-in-parallel-out shift register.
You can definitely read the input if the baud rate isn't something insanely high like 115.2k. Then that leaves the CLK line and data output line (probably best to use the data output as an enable for CLK counting, since it would clock on reads too).
That still leaves the problem of putting the info on screen and polling the RS232 at the same time.. kind of a mess really. Much easier to do with a UART available.
Memblers wrote:
Well that's interesting. You probably could pull it all off with the controller port. Perhaps for parallel output using something like a binary counter, latch, and/or serial-in-parallel-out shift register.
You can definitely read the input if the baud rate isn't something insanely high like 115.2k. Then that leaves the CLK line and data output line (probably best to use the data output as an enable for CLK counting, since it would clock on reads too).
That still leaves the problem of putting the info on screen and polling the RS232 at the same time.. kind of a mess really. Much easier to do with a UART available.
i agree a UART would help (or one of the older ones, i forget what they are called, my IBM uses it)..
the baud rate of it was 1200 baud, so i'd say it's very do-able.. though, programming it i can guess will be pretty bad..
Your battery operated CD player drives a +/- 12V RS232 line just to display useless output? Wow!
kyuusaku wrote:
Your battery operated CD player drives a +/- 12V RS232 line?
no, not 12v...
it's a low voltage port.. RS-232 does define 3v as a valid voltage (though minimum)
http://en.wikipedia.org/wiki/RS-232
"The RS-232 standard defines the voltage levels that correspond to logical one and logical zero levels. Valid signals are plus or minus 3 to 15 volts."
So the player runs off 4 x 1.5V cells for +/- 3V?
kyuusaku wrote:
So the player runs off 4 x 1.5V cells for +/- 3V?
yes, it takes 4 batteries, but can run off 2...
this shouldn't be surprising.. many old digital cameras had only 2 AA batteries and yet did RS232.. even my old Cybiko communicated ONLY to the computer by RS232, and it had two 1.2v batteries...
But there's a point to Cybiko's serial connection. What is this serial for? It really sounds to me like nonsense. Are you sure you're not "hoaxing" this piece of the thread? (You do realize that you're never going to live what has been said down and some people are from now on always going to second guess everything you say, especially very suspicious things, right?)
kyuusaku wrote:
But there's a point to Cybiko's serial connection. What is this serial for? It really sounds to me like nonsense. Are you sure you're not "hoaxing" this piece of the thread? (You do realize that you're never going to live what has been said down and some people are from now on always going to second guess everything you say, especially very suspicious things, right?)
why would I hoax a CD players chip? lol im done hoaxing.. im already trying to regain my trust (and i know that will take a VERY long time)..
I honestly don't know why it does it. Being that this chip could be used in other applications possibly, it's possible it's either for diagnostic purposes, or something else in which I have no clue..
to be honest, i think it's a waste of electricity (which may be why this player could take 4 batteries, as backups...)
it's an old Kenwood player, was expensive in it's days (though so was most of the CD players)
It's not hard to get +/- 12V from lower voltage with a charge-pump circuit with capacitors (often an IC is needed, even if you could do it with heavy discrete components).
This may not be very well suited for batteried operations, tough, because of the high current the carge pump may drive.
yea, and thats probably why the player takes 4 batteries.. 2x main, and 2x backup..
(wait, to enable 232 mode, I had to move a 0 ohm resistor 'jumper', otherwise it didn't do anything.. maybe with it off it uses less power---make that a duh)