IS-VIEWER 64 - Custom SCSI Cable Working!!

Discussion in 'Nintendo Game Development' started by Gerry_MAN, Aug 27, 2017.

  1. Gerry_MAN

    Gerry_MAN N64 Hardware Fanatic

    Joined:
    Dec 26, 2010
    Messages:
    171
    Likes Received:
    246
    Hey Folks,

    So as I have been waiting for my Scanner to arrive to get on with scanning the PARTNER-N64 User Guides...I decided to sit down and tackle the project of getting my IS-VIEWER 64 Development cartridge up and running. The Version I have is one of the earlier releases.......Version "C" which I believe is the 32MB version....however I still need to confirm this.

    [​IMG]
    [​IMG]
    So with that said, over the past few weeks I've been doing some intense research on the software and also the hardware requirements for this Dev cart.

    First off, the IS-VIEWER64 is a RAM only based development cartridge. This means that each time you power up the Cartridge, all Game data must be loaded into RAM through the SCSI interface. Once power is removed or the cart is disconnected, all loaded Game data is lost.

    This Cart above is the 32MB version or possibly larger. I'm still verifying this. The SIMM RAM module is a "Panasonic MN4117405BSJ 32MB PS/2 EDO SIMM RAM Memory module. ". There is also an added "N64 RAM CASSETTE" on this cart. You can see the RAM cassette contact pins on the left side of the board. This is essentially a small Daughter card on the bottom side with additional RAM. So I'm still checking to see if this RAM is applied to the ROM memory area, or if it is used for some other function. The DIP Switch "SW1" I believe controls the RAM cassette addressing.

    There is also a small Serial EEPROM device that is used to store the SCSI communication Firmware. This is device U4 on the version C cartridge. Model number "BU9850" which is a BU98xx Serial EEPROM device. There is also a small XILINX configuration device that is used to load the XILINX FPGA bootloader at power up. However, all of the game ROM data being tested, is loaded into RAM only.


    Next, the IS-VIEWER64 requires a specially Modded N64 Console for it to work properly. This is similar to the Kmc PARTNER-N64 Debugging console Mod. My Buddy Mike who owns one of these IS-VIEWER64 consoles... I got him to pop it open and check out what the modifications were.

    [​IMG]


    The only modification that we discovered was a single isolation, and Bypass of the "L_AUDIO" cartridge edge and re-routing it through a Pull-up resistor to +3.3V. This mod is also performed on the PARTNER-N64 Debugging Console Mod, however its bypass wire is tied to a voltage regulator output instead of connecting it directly to a +3.3V rail. Same effect regardless.

    [​IMG]


    I performed this MOD on one of my spare N64 consoles and I was good to go.

    [​IMG]


    Also, a good thing to know... is that there were a few different versions of the IS-VIEWER64 that were released. The early releases like Versions: C and D of the cartridge, all required a rare "MDR50" SCSI cable as shown below:

    [​IMG]

    The MDR50 connectors and cables which the early releases of the IS-VIEWER64 used, are not as common. One of these rare cables is shown here below:

    [​IMG]



    The later models of the IS-VIEWER64 like Version: K (shown below)
    These carts used the more common HD50 connectors and also usually had a second SCSI port for connecting a SCSI Terminator adapter. This is a requirement for noise cancellation on SCSI cables. Especially needed for when using Long cables. The SCSI Terminators are simply externally connected Resistor Arrays, decoupling capacitors and a Diode...all crammed inside of a Dongle. Sometimes the Resistor arrays inside the dongles are implemented using a more specialized device called a "Active SCSI Terminator IC". This is simply a resistor array chip that is targeted for SCSI buses specifically and specially designed for noise bus cancellation.

    Notice on the PCBA below, the Resistor Array components close to the HD50 connector are all un-populated. RA1, RA2, RA3 and RA4. The earlier versions of the cart, these resistor arrays were in fact installed. This is what's called "On-Board Termination". This is also why the earlier carts only had the one SCSI connector. Because they were using "On-Board Termination".

    [​IMG]
    This version of the cart also has the standard N64 cartridge SHARP RAM chip LH52V246A with the accompanying button cell battery.


    Now, you can still get around the rare cable issue by using some adapters that will convert from the MDR50 connector type... to whichever Standard SCSI interface card you are using on your PC. The more popular version of SCSI interface is the "HD50" or High-Density 50 pin cable. The two connector differences are shown below for your review:

    HD50 High-Density connectors.
    HD50 Male connector:

    [​IMG]


    HD50 Female Connector:

    [​IMG]



    MDR50 stands for "Mini-D Ribbon" or "Mini Delta Ribbon" with 50 pins/contacts.
    MDR50 Male Connector:

    [​IMG]

    MDR50 Female Connector:

    [​IMG]



    So after figuring all this out....
    I got impatient and decided to map out all the Pinout connections between the MDR50 and HD50 SCSI interfaces. This is usually 1 to 1, however it depends on the cables that you are using.... if they are STP (shielded twisted pair)...and also if your SCSI interface is "Differential" or "Single ended". So you just have to make sure you get the right interface and pinouts between the two interfaces that you end up using.

    Anyhow, I got it all mapped out based on my hardware and soldered up my own custom cable in the Lab.

    [​IMG]
    [​IMG]
    [​IMG]


    I then setup and configured my SCSI-2 interface card on my PC, and got everything setup for Windows 98.

    After rebooting....Right away Windows detected the IS-VIEWER64 Cartridge hardware.....
    I was super psyched at this point!! (*#*&@@!!!

    [​IMG]

    I then realized.....CRAP!!!

    A Special "Intelligent Systems" Software Driver is required by Windows. This provides any application software being used, the ability to communicate with the IS-VIEWER64 hardware using SCSI-2 protocols.

    DANGNAMIT!!! (*#@*&@!!:eek:


    So this is where I am at....
    Success with the SCSI interface....but stuck on a blasted Windows Software Driver.:confused:

    I'm betting there's an IS-VIEWER64 Floppy Driver Disk out there somewhere....
    Now I just need to reach out to the community here....and see if we can track it down.

    Just to add...the Cart I have "Version C" uses the PD72611 SCSI-2 Interface controller chip:
    Datasheet for your review:
    http://www.digital-circuitry.com/FI...D72611_SCSI-2_Controller_Data_Sheet_Feb91.pdf

    If anyhow can help me out that would be SICKK!!!
    Hope you guys found this post informative.

    Let me know if anyone can help.
    Cheers! Folks, :cool:
    -Gerry
     
    Last edited: Sep 2, 2017
    sa1, Rocky, Gilgamesh and 1 other person like this.
  2. Gerry_MAN

    Gerry_MAN N64 Hardware Fanatic

    Joined:
    Dec 26, 2010
    Messages:
    171
    Likes Received:
    246
    Hey Folks,

    So I've received some emails through my website from a bunch of different members with possible drivers....which is Awesome!!....so please keep them coming.

    Unfortunately nothing has worked to this point. The drivers were all for a different version of the cart. Mine being one of the early models.... has not proven to be very helpful. *$#*(@! I'm attempting to do some analysis on the SCSI Bus with my Logic Analyzer... hoping I can parse out some of the data and possibly get something working with one of the other drivers.

    Again, I really appreciate all the help and support you've all shown......so please keep sending me whatever you have...and I'm sure eventually we'll get this sucker up and Running!

    Once I do, I'll post a Video on my YouTube Channel to demo the unit for everyone to check out.
    I'll keep you all posted on future developments! :cool:

    Cheers!
    -Gerry
     
    Rocky likes this.
  3. Gerry_MAN

    Gerry_MAN N64 Hardware Fanatic

    Joined:
    Dec 26, 2010
    Messages:
    171
    Likes Received:
    246
    Ok Guys....

    Well, Unfortunately....my attempts at getting the Windows 98 drivers up and running, has not worked out as planned.

    I'm now switching over to a Windows 2000 PC which there are other drivers for me to try. I could also go all the way back to Win95....but I'll only do that if absolutely necessary.

    I'm staying positive....and remaining optimistic. As I mentioned before, I've also been using my Logic Analyzer to run some scans on the SCSI Bus, in attempts to try and parse the data and see if I can implement a workaround of some kind.

    Anyhow,
    There's still options to for me to try.....and I'm above and beyond determined to get this sucker running!
    I'm pretty excited and really surprised at the amount of support I've received from all of you the development community......... and all in just one day!!

    The response is way more than I expected. You guys Rock!!
    Pretty cool! :cool:

    I'll keep you all posted.
    Thanks so much.

    Kind Regards,
    Gerry O'Brien
    http://www.digital-circuitry.com
     
  4. Gerry_MAN

    Gerry_MAN N64 Hardware Fanatic

    Joined:
    Dec 26, 2010
    Messages:
    171
    Likes Received:
    246
    Well, all I have to say is this.........:cool:



    The N64 Development community has pulled through once again!!
    Amazing!

    Special Thanks to Joe19 and also to Flamboyant Ham from over in the Dev chat rooms on Discord.
    Thanks a Mint Guys!!

    So I guess I'll go back into the Lab and find the next endeavor!!
    Fun Stuff!

    Cheers! Folks,
    -Gerry
     
    Gilgamesh, sa1, Schplee and 1 other person like this.
  5. marshallh

    marshallh N64 Coder

    Joined:
    Mar 16, 2006
    Messages:
    663
    Likes Received:
    30
    Never seen the earlier version with a PGA XC3000 before. Judging by the date codes, it was produced in mid 97.
     
  6. Gerry_MAN

    Gerry_MAN N64 Hardware Fanatic

    Joined:
    Dec 26, 2010
    Messages:
    171
    Likes Received:
    246
    Hi Marshall,

    Yeah I thought the same thing, and it's paired up with a XC1700 series configuration PROM. The individual I obtained it from was a collector and had apparently had it in storage for the past 16 years. He got it back in 2001. He had plans to try and get it working but just never got around to it...and was just a bit hesitant to mess around with it, possibly causing damage to it.

    I think the main reason that he agreed to part with it, was because he felt I might be able to get it going, with my Digital-Electronics background, and also having the electronics Lab and all the tools at my disposal.
    Well, things actually worked out...so his faith in my abilities was not misplaced. :)
    Pretty cool all around.

    Also,
    One thing that I didn't mention in the video.... for those that are interested....

    in regards to that basic ROM loading program that I demo in the video....
    It is actually compiling the source code before it sends the ROM to the IS-VIEWER. So that load time to the cart....this includes the source code compiling time. There is a checkbox that you can select to enable and disable the compiling activation in one of the other menus, which I discovered after I posted the video.

    There are also several other third party Windows Programs that use the SCSI interface with the IS-VIEWER for other development purposes.

    There is a program that you can use to edit color pallets and textures in real time. You can edit them as they are overlaid onto a 3D model that is being animated on the N64 console through the IS-VIEWER64. Pretty cool.

    Also, there are tons of Plugins that were created to use within your source code, to take advantage of the SCSI interface. You have code to create a .n64 ROM that runs on the IS-VIEWER...(like a game ROM)...but it has code within it that is setup to communicate with another .exe program that is running on the Windows development machine. They communicate with each other over the SCSI interface.
    That is Freakin Awesome!!

    I'm still doing a bunch of research on all of these plugins... and also learning how to use these different Windows programs that are specific for using the IS-VIEWER64.

    I'll be posting a more in depth video later on.... to demo all the other programs and plugins....at least once I learn them. :)

    Also Marshall,
    you mentioned there were commercially released N64 games that had residual code left in them?
    that were for Debugging messages using the IS-VIEWER64 ?

    Pretty Awesome little device.

    -Gerry
     
    Last edited: Aug 31, 2017
    Gilgamesh and Rocky like this.
  7. Zoinkity

    Zoinkity Site Supporter 2015

    Joined:
    Feb 18, 2012
    Messages:
    504
    Likes Received:
    109
    Here's a list of all the retail titles that detect the Partner64, IS64, or both.
    Both get lumped together here because software-side they're pretty darn similar and the tests are usually executed within the same function.
    https://pastebin.com/dX0sNss5

    They all expect that the respective runtime has been loaded to the cart. Both work by hooking that runtime to the exception handler, not unlike the way GameSharks/Pro Action Replays work.
     
    Gilgamesh likes this.
  8. Gerry_MAN

    Gerry_MAN N64 Hardware Fanatic

    Joined:
    Dec 26, 2010
    Messages:
    171
    Likes Received:
    246
    Hi Zoinkity,

    You beat me to it... ^_^
    a buddy of mine passed me the link you posted above...and I was going to follow up and post it here. :D

    Ok so just to see if I'm understanding you correctly.....
    as I had mentioned earlier.....
    "having an .n64 ROM that runs on the IS-VIEWER...(like a game ROM)...but it has code within it that is setup to communicate with another .exe program that is running on the Windows development machine."

    So am I correct in assuming that the "Runtime" communicates with the "Exception handler" and they communicate with each other over the SCSI interface?

    -Gerry
     
    Gilgamesh likes this.
  9. Gerry_MAN

    Gerry_MAN N64 Hardware Fanatic

    Joined:
    Dec 26, 2010
    Messages:
    171
    Likes Received:
    246
    I'm assuming this is implemented using like a standard "TRY/THROW/CATCH" Exception Function... ?

    -Gerry
     
  10. Zoinkity

    Zoinkity Site Supporter 2015

    Joined:
    Feb 18, 2012
    Messages:
    504
    Likes Received:
    109
    The runtime for both winds up loaded at the BFF00000 range. Code in the game will check if the identifier for its runtime is there ("IS64" or "KMC\0" depending on the device). If found, it switches from its usual exception handler to a specialized one redirecting TLB errors, address errors, bus errors, breakpoints, and reserved instructions to the dev unit instead. Other exceptions and interrupts, like the ones thrown by devices or things like reset, go where they normally do.

    The runtime on the dev unit works out if it should catch any of those things, and it also handles its own stuff like the commands you feed it. As far as I know, the data on the interface gets mapped to hardware addresses and it's managed through the runtime. BFF08004 was a sort of semiphore and flags on it indicate if you can read (2) or write (4). BFF08000 was used for both reading the value on there and writing one to PC.
     
  11. Gerry_MAN

    Gerry_MAN N64 Hardware Fanatic

    Joined:
    Dec 26, 2010
    Messages:
    171
    Likes Received:
    246
    Sweet.... great info to have.

    That's one thing I have to start to review more and become more familiar with...and that is the Memory Map for the N64 and the 64DD.

    I've googled a few sites and found some sources..... is there a good one you can recommend?

    -Gerry
     
  12. Gerry_MAN

    Gerry_MAN N64 Hardware Fanatic

    Joined:
    Dec 26, 2010
    Messages:
    171
    Likes Received:
    246
    Edit...
    Opps!!...Typo... :p
     
    Last edited: Sep 5, 2017
  13. Pea2nuts

    Pea2nuts Spirited Member

    Joined:
    May 18, 2013
    Messages:
    120
    Likes Received:
    41
    You are really lucky to have all this N64 stuff. I'd love to have all this hardware to work on an N64 game in my spare time but I never see any of it pop up for sale.
     
  14. Gerry_MAN

    Gerry_MAN N64 Hardware Fanatic

    Joined:
    Dec 26, 2010
    Messages:
    171
    Likes Received:
    246
    @Pea2nuts yeah Thanks....sort of been growing slowly...but again my direction for using this hardware is not so much for developing games per se, but for using the console for other interfacing projects. At least that's my goal and purpose for wanting to learn the N64 source code.

    Are you currently writing code for the N64?
    You can always use a 64Drive flashcart and still develop.

    -Gerry
     
  15. ASSEMblergames_Admin

    ASSEMblergames_Admin Administrator

    Joined:
    May 20, 2015
    Messages:
    358
    Likes Received:
    125
    Glad that people are trying to get the old hardware working. I have a few but never though of
    trying to get them running.
     
  16. Gerry_MAN

    Gerry_MAN N64 Hardware Fanatic

    Joined:
    Dec 26, 2010
    Messages:
    171
    Likes Received:
    246
    Hi Assembler,

    I'd be curious to see which versions of these carts you have.
    Could you post some Hi-Res pictures for us?

    If you can include shots of the PCBA's as well....that would be really cool to see.

    Cheers!
    -Gerry
     
  17. Pea2nuts

    Pea2nuts Spirited Member

    Joined:
    May 18, 2013
    Messages:
    120
    Likes Received:
    41
    Not working on N64 right now. Doing stuff with DS right now because I have almost all of the of DS dev hardware. Just interested in doing N64 stuff in the future.
     
  18. Gerry_MAN

    Gerry_MAN N64 Hardware Fanatic

    Joined:
    Dec 26, 2010
    Messages:
    171
    Likes Received:
    246
    Hi All,

    I just wanted to add a note here for future reference...

    Something I recently discovered during my Debug Testing with my IS-VIEWER64....

    On the cartridge PCBA there is a DIP switch labeled as "SW1".
    This appears to be the same switch used on both models of IS-VIEWER64 that I have seen so far.

    Anyhow,
    I discovered that this "SW1" is used to set the Cartridge SCSI ID# on the SCSI BUS. As there have been several references made in the online manuals and in other documentation, about how Game development Studios could have multiple IS-VIEWER64 Cartridges installed and connected to a single Development Station.
    This allows the developers to have the IS-VIEWER64 cartridges located at different locations within the Studio for WIP code demonstrations.

    SCSI-2 Narrow permits up to a maximum of (x7) devices on a Single BUS. So (x7) IS-VIEWER64 cartridges per Dev PC please.... LOL. ^_^

    I'm not sure how many Game Studios actually had that many systems....but in any case. I've tested this and have managed to allow my DEV station to detect the IS-VIEWER64 with various SCSI ID# settings.

    Some examples in the image below and for future reference:


    [​IMG]


    I'll be Posting another YouTube video shortly to demo some of the more advanced debugging features of the IS-VIEWER64.

    Cheers! Folks,
    -Gerry
     
    Last edited: Jan 24, 2018
    Gilgamesh and Kao like this.
  19. Gerry_MAN

    Gerry_MAN N64 Hardware Fanatic

    Joined:
    Dec 26, 2010
    Messages:
    171
    Likes Received:
    246
    Hi All,

    I'm reviving my old thread here! :cool:

    I need some help from you folks....
    I'm trying to compress the OOT debug ROM so I can run it on my IS-VIEWER64. It needs to be compressed down to the 32MByte size. As this is needed in order for it to fit into the IS-VIEWER64 SRAM space.

    As mentioned before...
    this unit is able to print out the Roms Debug data.... out to the Runtime program. I have tested it using some of my own code, and I know that this "Debug printing" feature does work. However, I would like to see if I can get an official Debug Rom to print out its Debug info onto the Dev screen. It would be really cool for everyone to see this feature up and running. Once I get it working fully...I'll be posting another DEMO video on my YouTube channel for everyone to check out.

    Also....I have tried to get this to work using some of the regular retail releases....however there are specific Debug address's that the IS-VIEWER64 needs for the ROM it is running... in order to read the data. So I would need that specific debug address for each ROM I try to run. I have tried the default address's that are discussed online...but no luck so far. It could also be that the IS-VIEWER64 Debug print option was disabled for the Retail versions in the ROM. However, I'm not 100% sure on that. But again...I have tested this with my own code...so I know my hardware is working. At this point I figured I would try to run one of the official Debug ROMS. It's already been tested using emulators...and does work.


    So far I've tried 3 different compressor programs and methods to get the Debug ROM to compress....but with no luck.

    I had tried using Spinout182's older tools for Windows as shown here from his website:
    http://spinout182.com/ar/z-filenew-windows.zip

    VIDEO DEMO OF HIS PROCESS ON LINUX:


    It may be that this all needs to be performed on a Linux machine... but I'm not a Linux user. So this is why I'm here....hoping someone may be able to help. It needs to be compressed down to the 32MByte size. As this is needed in order for it to fit into the IS-VIEWER64 SRAM space.

    I'm hoping someone here could send me PM...?
    Any help or tips would be appreciated. ;)

    Cheers! Folks,
    -Gerry
     
    Mrneo240 likes this.

Share This Page