64 Drive Review

Discussion in 'Nintendo Game Development' started by Evotistical, Oct 22, 2011.

  1. Evotistical

    Evotistical Robust Member

    Joined:
    May 25, 2011
    Messages:
    261
    Likes Received:
    4
    [Review] 64-Drive NTSC USA English

    Power input:(60hz)
    Console type:NTSC/USA
    64 Drive Type:6102 NTSC

    The 64 drive was super easy to setup. Just download the menu here. Extract the menu.bin from the folder, and place it in your CF/MicroSD's root directory. Then load all your backups/roms in what ever folder you like. If you want a background image,you must label it background.jpg. Additionally it must be 640X480 and under 173 kb.

    I had first thought I would have to specify which CIC, save type, and region I wanted for each game. Well me as a level 1 geek, wouldn't have liked this at all. I just wanted to pick up the controller and play. Folks I'm proud to say with every game I have played the CIC/Save detection was spot on for all USA games I played. I even played some European (converted to ntsc) games where the detection was off, but it saved my corrections.

    As for what memory card I recommend. I would recommend either a 8gb class 4(or better) micro sdhc, or an 8gb CF card. Why do I recommend 8gb? Because if you were to put every USA n64 game on a flash chip, it will only take up less than 5.5gb.

    The interface works great, to save a game you just have to remember to press reset....thats all! No creating save files on the flash disk or configuring anything, 64 drive does that automatically. Note not all games will reset by using the reset button, some times you just get a blank screen, but fret not! wait a couple seconds and your game is still saved.

    Pros:
    1. Its fast, way faster than it would be to pull the game you wanted out of a box.
    2. Its microsd compatible and CF compatible.
    3. The developer is(as of now) very quick to fix issues.
    4. It's highly compatible, technically 100% compatible. Although, not right out of the box.

    Cons:
    1. As of writing 16gb pny class 4 microsd doesn't work (Marshalh's working on it)
    2. Jet force Gemini and Banjo-Tooie don't work.
    Note: Jet Force Gemini (U) [f1].z64 works, there is no patched Banjo-Tooie. You can also solder on a 6105(for NTSC)/7105(PAL), but I have not tested this yet. Also Banjo-Tooie can usually be had for less than $25.
    3. No Game Shark support, you can't even hook up your Game Shark under it without possibly bricking it.
    4. You have to reset it every time you save.
    5. The manual is way out of date, and doesn't highlight features like backgrounds, or adding a 6105 like the website suggests. Also there isn't much documentation that a lay person can read about the funny little usb port on the side.
    6. Microsd can fall into the cart making a fun 15 minutes of your life you wish you got back. CF card looks stupid coming out of a n64 cartridge. Nothing you can do about this, it plays every n64 game after all.

    Things I would like to see:
    1. 6105 support right out of the box.
    2. Pictures of the games when selecting
    3. Game Shark Support
    4. No reset to save. (although almost every flash cart I have uses this method, so there might not be a work around)
    5. Some sort of shortcut implementation, so you only have 1 v64 file, but you can create a shortcut file to point to it. This would be useful for creating categories (folders) like "game type", "developer"etc...
    6. An updated manual

    I would like to say, this cart already is the most compatible and bug free flash cart I have tested. It's simple interface, and operation make it a breeze to use. Marshallh was correct in saying "no cheaping out"
    -Evotistical
     
    Last edited: Oct 23, 2011
    Pikmin and kennypecheur like this.
  2. mistamontiel

    mistamontiel ..!!

    Joined:
    Jun 22, 2016
    Messages:
    27
    Likes Received:
    5
    Wow 64drive been out this long ? Anyways I've had mine since end of 2012 and it's still going strong . With a Kingston CompactFlash 16 gig (I don't even think I've ever seen an SD card seems puny fiddly)

    It's VASTLY updated since original post , saving occurs on-the-fly now ! No need for gummy stucky RESET button . Was using USB and PC to update , new method allows for updating straight from within 64drive system from storage very nice

    Banjo Tooie has been cracked same for Jet Force Gemini . You can play MP3 even too , slap a nifty 640x480 .jpg background , store pak saves in virtual containers , run all the GE007 and Perfect Dark mods (GoldenEye X) , Doom1/2+xpacks ported , Neon NES emulator (I think display has to support 240p , because me ol phat projector could not display it rightly)

    It's very high build quality and its system is flawless . $200 very well spent , a work of art t'say the least
     
  3. Pikmin

    Pikmin Resolute Member

    Joined:
    Dec 24, 2009
    Messages:
    935
    Likes Received:
    95
    I ended up soldering 7105 on mine as I wanted to play unpatched Banjo Tooie and DK64
     
  4. mistamontiel

    mistamontiel ..!!

    Joined:
    Jun 22, 2016
    Messages:
    27
    Likes Received:
    5
    Dang that's dedication

    What twas wrong with Donkey Kong 64 ?
     
  5. saturnu

    saturnu Spirited Member

    Joined:
    Dec 8, 2011
    Messages:
    143
    Likes Received:
    29
    Jet force Gemini, DK64 and Banjo Tooie have a x105 security query on the cic.
    In JFG e.g. you can't run in the game.
    DK64 erases the savegame occasionally.
    BT doesn't start at all.

    There are patches that are working for all these games, but not for every region.

    Btw. you can use an UltraCIC II for these games as well, so you can swap your flashcart between PAL and NTSC Units.
    By using an UltraCIC II, you still use the 6102 Bootloader, so don't close any bank switch jumpers on the board.
    https://de.aliexpress.com/store/pro...4Plus-N64-Flash-Cart/1902006_32431977887.html

    Code:
    #include <stdio.h>
    #include <malloc.h>
    #include <string.h>
    #include <stdint.h>
    #include <libdragon.h>
    
    
    #include "regsinternal.h"
    
    static volatile struct SI_regs_s * const SI_regs = (struct SI_regs_s *) 0xa4800000;
    static void * const PIF_RAM = (void *) 0x1fc007c0;
    //static void * const PIF_RAM_COMMAND = (void *) 0x1fc007fc;
    
    /** @brief SI DMA busy */
    #define SI_STATUS_DMA_BUSY  ( 1 << 0 )
    /** @brief SI IO busy */
    #define SI_STATUS_IO_BUSY   ( 1 << 1 )
    
    static void __SI_DMA_wait(void) {
        while (SI_regs->status & (SI_STATUS_DMA_BUSY | SI_STATUS_IO_BUSY));
    }
    
    
    
    static bitdepth_t bit = DEPTH_32_BPP;
    
    
    #define u16 unsigned short
    #define u32 unsigned long
    
    
    static void __controller_exec_PIF(void *inblock, void *outblock) {
        volatile uint64_t inblock_temp[8];
        volatile uint64_t outblock_temp[8];
    
        data_cache_hit_writeback_invalidate(inblock_temp, 64);
        memcpy(UncachedAddr(inblock_temp), inblock, 64);
    
        /* Be sure another thread doesn't get into a resource fight */
        disable_interrupts();
    
        __SI_DMA_wait();
    
        SI_regs->DRAM_addr = inblock_temp; // only cares about 23:0
        MEMORY_BARRIER();
        SI_regs->PIF_addr_write = PIF_RAM; // is it really ever anything else?
        MEMORY_BARRIER();
    
        __SI_DMA_wait();
    
        data_cache_hit_writeback_invalidate(outblock_temp, 64);
    
        SI_regs->DRAM_addr = outblock_temp;
        MEMORY_BARRIER();
        SI_regs->PIF_addr_read = PIF_RAM;
        MEMORY_BARRIER();
    
        __SI_DMA_wait();
    
        /* Now that we've copied, its safe to let other threads go */
        enable_interrupts();
    
        memcpy(outblock, UncachedAddr(outblock_temp), 64);
    }
    
    
    
      int x105_response_test() {
    
        static unsigned long long SI_eeprom_read_block[8] = {
        0xFFFFFFFFFFFFFFFF,
        0xFFFFFFFFFFFFFFFF,
        0xFFFFFFFFFFFFFFFF,
        0xFFFFFFFFFFFFFFFF,
        0xFFFFFFFFFFFFFFFF,
        0xFFFFFFFFFFFF0F0F,
        0x8B00620018000600,
        0x0100C000B0000002 //0x3f=02
    
        };
        static unsigned long long output[8];
    
        __controller_exec_PIF(SI_eeprom_read_block,output);
    
        /*
          expected result
        FF FF FF FF FF FF FF FF
        FF FF FF FF FF FF FF FF
        FF FF FF FF FF FF FF FF
        FF FF FF FF FF FF FF FF
        FF FF FF FF FF FF FF FF
        FF FF FF FF FF FF 00 00
        3E C6 C0 4E BD 37 15 55
        5A 8C 2A 8C D3 71 71 00
          */
    
        /* We are looking for 0x55 in [6], which
         * signifies that there is an x105 present.*/
    
        if( (output[6] & 0xFF) == 0x55 )
        {
            //x105 found!
            return 1;
    
        } else {
            //x105 not found!
            return 0;
    
        }
    
    }
    
    
    
    volatile u32 *regs_ptr = (u32 *) 0xA8040000;
    
    
    int main(void)
    {
    
        u32 tv_mode;
        /* enable interrupts (on the CPU) */
        init_interrupts();
    
        /* Initialize peripherals */
    
          tv_mode = *(u32 *) 0x80000300;
    
    
        static resolution_t res = RESOLUTION_320x240;
    
        if(tv_mode=0)
        res = RESOLUTION_256x240;
    
    
        display_init( res, bit, 2, GAMMA_NONE, ANTIALIAS_RESAMPLE );
        console_init();
        controller_init();
    
        console_set_render_mode(RENDER_MANUAL);
       
        u32 tmp;
    
        tmp = x105_response_test();
    
    
        /* Main loop test */
        while(1) 
        {
    
            console_clear();
    
        printf( "UltraCIC II - Testrom\n" );
        printf( "=====================\n" );
        printf( "saturnu - 2016\n\n\n\n");
    
    
        /*
        if(tv_mode==0)
        printf( "TV Mode: PAL\n\n" );
    
        if(tv_mode==1)
        printf( "TV Mode: NTSC\n\n" );
    
        if(tv_mode==2)
        printf( "TV Mode: MPAL\n\n" );
        */
    
       
    
        if(tmp){
                  printf( "UltraCIC II: [ found ]\n");
       
            }
        else {
            printf( "UltraCIC II: [ not found ]\n" );
           
            }
    
        console_render();
       
           
        }
    }
    
     
    Last edited: Sep 21, 2016
  6. mistamontiel

    mistamontiel ..!!

    Joined:
    Jun 22, 2016
    Messages:
    27
    Likes Received:
    5
    Oh WOW they were sophisticated .. now I see the need for DK64 save fix

    EDIT: You wonder why Conker's Bad Fur Day has no such schemes
     
    Last edited: Sep 22, 2016

Share This Page