Addded a script for the NINA mapper. This code is originally from August 2021. |
||
|---|---|---|
| WindowsDriverPackage | ||
| avr_bootloader | ||
| docs | ||
| firmware | ||
| hardware | ||
| host | ||
| roms | ||
| shared | ||
| .gitignore | ||
| LICENSE | ||
| README.md | ||
| TODO.txt | ||
README.md
Table of Contents:
- Installing Device Drivers
- Running the Host Application
- Updating Device Firmware
- Software & Firmware Building
INSTALLING DEVICE DRIVERS:
Plug the device into a USB port.
Open a windows file explorer and navigate to: INL-retro-progdump\WindowsDriverPackage
In that folder there's a "InstallDriver.exe" application. Double click it to run it.
Windows should ask if you want to allow it to make changes to your PC, say YES.
Click next in the wizard, it should install the drivers to your PC.
If it worked properly you'll get a "install successful" page, click FINISH.
In windows you should be able to see "INLretro-prog" listed in "devices and printers" from the control panel.
Easy Rippings
If you're only looking to rip your own carts, you can stop here and look at the EasyRipping guide.
If you recently bought your INL-Retro, you shouldn't have to update firmware, but below are steps to update the firmware when future versions are released. If you have an older version, it's recommended you update the firmware first.
RUNNING THE HOST APPLICATION:
On windows install device drivers by running InstallDriver.exe from WindowsDriverPackage folder.
An easy way to open the commandline in windows 10 is to open the host folder in explorer. Then click on the address bar at the top, the address should highlight, simply type the 3 letters "cmd" in the address bar and hit enter.
From the host folder, run the main application from the commandline by typing: inlretro.exe -s scripts\inlretro.lua
This will run the main application and after the device is detected and USB comms established, control is passed to the main lua script.
See the USER notes at the top of scripts\inlretro.lua file for how to select different mappers, cartridges, etc. You'll need to modify inlretro.lua with your favorite text editor or even something as simple as notepad included with windows. If you don't have a favorite text editor, I recommend something like notepad++ which color codes lua files/code for easier reading. https://notepad-plus-plus.org/download
If the device errors out, or is not responding you may have to press the RESET button near the USB connector on the INLretro programmer/dumper to reset the device, and try again.
UPDATING DEVICE FIRMWARE
STM32 ARM based device versions "INLretro" V2.0 and later
If you purchased your device in 2018 or later you have this version This includes devices aquired with NESmaker kits.
- DO I NEED TO FOLLOW THESE STEPS?
Devices sold Oct 2018 or earlier shipped with firmware v2.1 or v2.2 These builds did not include a 'switchless' USB firmware updater. So you will need to update to v2.3 or later using STmicro DfuSeDemo. Alternatively if you somehow bricked your device with any firmware, you can use STmicro's DfuSeDemo to easily recover it via USB.
Once upgraded to firmware v2.3.0 or later, you shouldn't need to use the DfuSeDemo to upgrade your device's firmware anymore. The INLretro host software is capable of updating the device's firmware on builds v2.3.0 or later.
INLretro devices purchased in Nov 2018 were shipped with a mix of firmware versions. INLretro devices purchased in Dec 2018 and later ship with firmware version v2.3.0 or later. Kickstarter NESmaker kits with the large fancy "NES" enclosure shipped with v2.1 All other Kickstarter NESmaker kits used the smaller v2.0N PCB and shipped with v2.3.0
I'm working on updating the INLretro host software to report which firmware version your device is using to take out the guess work. Once this is done the command prompt will report which build version you have. Updating from v2.3.0 to later versions will be pretty easy as the host application will ask you if you'd like to let it update the firmware version for you. In that case you can ignore these DfuSeDemo instructions unless you somehow brick your device. Or maybe you make your own firmware builds and use the Dfu file manager to create your own .dfu builds that may or may not be compatible with the switchless firmware updater.
So at this point I'm assuming you need/want to use the DfuSeDemo to update your device because it has firmware v2.2 or earlier, or you bricked your device, etc.
- GET THE SOFTWARE
On Windows: Go to the st.com link below. At the bottom there's a "GET SOFTWARE" section, download the STSW-STM32080 item. This is written for v3.0.6 https://www.st.com/en/development-tools/stsw-stm32080.html
Alternatively you can save the hassle of creating an STmicro account by downloading directly from the following link if you would like: https://www.dropbox.com/s/gwcvd3dqwkbzsv9/en.stsw-stm32080.zip?dl=0
On Linux: The dfusedemo is windows only, there is a linux alternative called dfu-util this may work for mac too. Read through the following instructions to understand the basic steps. Then See the "Linux dfu-util" instructions at the end.
- INSTALL THE SOFTWARE
As far as I know this application is windows only. You will probably have to run it in a virtual machine if you're on linux/windows. If this is a big problem I can look into creating my own dfuse application that runs on linux/mac. This should be a one time thing, so I'm hoping gaining access to a windows machine isn't too much to ask..
Extract the .zip downloaded in step 1. Click next, select users, etc.. Click install and let it make the changes to your PC. Once complete it should give you an option to launch it.
- LAUNCH DFUSEDEMO
You can probably find it in the start menu searching "dfusedemo" It didn't give me any choices on install path and put it here: C:\Program Files (x86)\STMicroelectronics\Software\DfuSe v3.0.6\Bin From that folder you can create shortcuts of dfusedemo to your desktop If you think you may like to make your own firmware builds and want to convert your hex/bin files to .dfu you can use the DFU file manager in the same installation folder as dfusedemo.
- GET THE INLRETRO INTO DFU MODE
At this point chances are there's nothing listed under "Available DFU Devices", it takes some steps to get the programmer in DFU mode so the dfusedemo application can find & communicate to it.
This step varies slightly depending on your exact device & when you purchased it.
-PCB VERSION 2.0 purchase prior to Dec 2018 If your device shipped with firmware v2.1 or v2.2 I soldered a "BL/RUN" switch to aid in this process.
The switch is next to the USB socket, place it in "BL" nearest the USB socket. Then plug the USB cable into your PC. If it was already plugged in, just replug it, or hit the RESET button soldered right next to the BL/RUN switch.
-PCB VERSION 2.0 purchased Dec 2018 or later or the big NES enclosure from NESmaker kickstarter You may not have a BL/RUN switch. Unplug the USB cable. Get a tweezers, paperclip, or something conductive like that. There are 5 holes in the PCB edge with "RUN" and "BL" on either side Ignore the bigger outer 2 holes. Short the center hole to the small hole next to it closest to the BL label (and USB connector) Plug the USB cable in while those two pads are shorted together. It might help to have a freind plug in the USB cable while you short the pins. Once it's plugged in you don't have to keep the pins shorted anymore.
-PCB VERSION 2.1 released Feb 2019 This PCB version replaced the BL/RUN slide/toggle switch with a momentary button. It's otherwise similar to v2.0 above. This version also started coming with a 3D printed chipset enclosure by default. The bootloader (BL) switch is closest to the edge of the PCB, and the 3D printed button is recessed. The Reset switch is closer to the center of the PCB and is not recessed. To enter bootloader mode, hold the BL switch while plugging in the USB cable. You can release the BL button after the device is recognized by your PC. You can tap the reset button to exit bootloader mode. Effectively the position of the BL switch only matters when the device powers up, or boots from reset.
-PCB VERSION 2.0N smaller device with NES Connector alone These are the majority of the basic NESmaker kickstarter kits. You really shouldn't be going through this process unless you bricked your device or I personally instructed you to do so. Reason being is had an error with the PCB BL/RUN switch. I specifically released the switchless firmware updater in time to avoid you from going through this trouble. All V2.0N PCBs shipped with firmware v2.3.0 or later and thus don't need dfusedemo to update. If you're still here, with PCB v2.0N dated "AUG2018" get a tweezers or something like a metal paperclip. On the top corner of the PCB there's a place for a "BL/RUN" switch. I didn't solder it on though, and the silk is backwards. Ignore the bigger outer 2 holes. Short the center hole to the small hole next to it closest to the RUN label (and USB connector). Plug in the USB cable with those pads shorted together. It might help to have a freind plug in the USB cable while you short the pins. Once it's plugged in you don't have to keep the pins shorted anymore.
-Other PCB versions: there are none at this time... (12/1/2018) If you've got a PCB that says v1.1, v1.2, v1.3, or v1.4 on the bottom You're in the wrong place. None of these steps will work for you. Go down a little to the instructions: "AVR based devices versions "KAZZO" V1.4 and eariler"
- PERFORM THE UPDATE
The device should be in DFU mode now from the step above.
With the device is in DFU mode the dfusedemo application should list it under available devices as "STM Device in DFU Mode" You can also see it listed in windows "devices & printers" as "STM32 BOOTLOADER". If you see "INL Retro-Prog" the device isn't in DFU mode, try this step again..
-Choose Button Choose the right Choose button! There are 2 "Choose" buttons. Naturally, you'll probably select the wrong one... CLICK THE "Choose" button in the BOTTOM CENTER in the "Upgrade or Verify Action" section.
The Choose button will popup an Open window, navigate to INL-retro-progdump\firmware\DFU_release folder
-Load .dfu file Select the proper .dfu file: All versions publicly released are here, sort by date and select the latest one that matches your PCB version.
If your PCB is big and square (v2.0) select the one that starts with INLretro6 (currently INLretro6_PCBv2_0_FWv2_03_0.dfu)
If your PCB is smaller and only has place for NES connector select the one that starts with "INL_NES" (currently INL_NES_PCBv2_0N_FWv2_03_0.dfu)
If you're following these instructions later down the road I've probably got later versions you should be using. Just make sure the PCB version of the name matches what's printed in silk screen on the bottom of your PCB. In the end it's easy to change if you select the wrong one. Or the firmware updater will fix it for you once you've got it unbricked.
-Optional settings You can check the "Verify after download" box just above the Choose button, it will verify the flash after programming. You can also check the "Optimize Upgrade duration" but it really doesn't matter, it only takes a couple seconds anyway..
-Upgrade Click the "Upgrade" button just to the right of that "Choose" button you just used.
NOTE! You WILL GET A WARNING POPUP, it's expected! Click "Yes" to the warning: "Your device was plugged in DFU mode. "So it is impossible to make sure this file is correct for this device." "Continue however?"
CLICK YES.
-Watch the status bar It should click across a few times and say "Target 00: Verify successful!" or just "Target 00: Upgrade successful!" depending on if you chose to verify or not in the optional step.
If you have problems, make sure the device is in DFU mode and appears in windows "devices & printers" as "STM32 BOOTLOADER" before trying to upgrade. Please contact me if you're having problems.
-Exit DFU mode If you have a BL/RUN switch, place it back in RUN Unplug the USB cable and plug it back in. You should see "INL Retro-Prog" in devices & printers and the device should be running the latest firmware now!
LINUX DFU-UTIL STEPS:
sudo apt-get dfu-util
Put device into dfu mode as explained in step 4 above
verify you can see the device
dfu-util -l
get the "alt" with name of @Internal Flash use that number in the -a for example:
Found DFU: [0483:df11] ver=2200, devnum=18, cfg=1, intf=0, path="1-1", alt=1, name="@Option Bytes /0x1FFFF800/01016 e", serial="FFFFFFFEFFFF" Found DFU: [0483:df11] ver=2200, devnum=18, cfg=1, intf=0, path="1-1", alt=0, name="@Internal Flash /0x08000000/0640002Kg", serial="FFFFFFFEFFFF"
(navigate to the firmware/DFU_release directory) Upgrade Command example: sudo dfu-util -d 0483:* -a 0 -D INLretro6_PCBv2_0_FWv2_03_01.dfu
AVR based devices versions "KAZZO" V1.4 and eariler
If you purchased your device in 2017 or earlier you have this version This should also apply if you made your own kazzo based on the open source design. Although I can't assure this software works with any of those versions, especially versions with something besides the atmega164.
These devices sold by Infinite NES Lives included a bootloader to update the flash via USB.
There are effectively 3 main versions of firmware that run on your device:
A) original kazzo firmware created by naruko that is needed to use anago/unagi dumping software. See old instructions to get that running if you want it. You're in the wrong place.
B) INL released firmware for use with "INL-retro prog v1.0beta" this was effectively my "version 1" release of firmware & software. It wasn't very good, but got the job done for far too many years. I don't recommend using that old firmware & software anymore You'll be able to use the latest software and firmware provided here instead.
C) INLretro v2 firmare & software, the reason you're here, and the software & firmware included with this download/project. Upgrading the firmware is similar to previously, but here's a quick run through to get you going with the latest firmware that's required in order to use this INLretro software.
You're here because you want to install option C from above Smart choice...
- GET THE SOFTWARE
The bootloader software is already included with this project/download which you're reading this file from. It also doesn't require installation. These instructions are for windows, but you can build the bootloader to work on linux/mac as well.
- PUT DEVICE IN BOOTLOADER MODE
Place the BL/RUN switch in the BL position. Plug in the USB cable, or Hit the RESET button on the PCB.
The device should now be in bootloader mode. Look in windows "devices and printers" and you should see "HIDBoot". If not, try this step again. The next steps won't work if you still see "INLRetro-Prog" "kazzo" or something like that..
- UPDATE THE FIRMWARE
In a windows file explorer navigate to:
INL-retro-progdump\avr_bootloader
You should see a file in that folder named:
"click to load v1 INLkazzo with INLretro v2.bat"
Double click on that file to run it.
If you didn't get the device in HIDBoot properly you'll probably see a message like: "Error opening HIDBoot device: The specified device was not found" Go back and retry step 2, this step only works if you got step 2 working properly
If you were successful you'll see a message like this:
Page size = 128 (0x80)
Device size = 16384 (0x4000); 14336 bytes remaining
Uploading 13312 (0x3400) bytes starting at 0 (0x0)
0x03380 ... 0x03400
C:\Users\...\INL-retro-progdump\avr_bootloader>pause
Press any key to continue . . .
Hit the any key, or just close that popup window, you've updated the firmware!
- EXIT BOOTLOADER MODE
Place the BL/RUN switch in RUN You should see "INL Retro-Prog" in devices & printers and the device should be running the latest firmware ready to use the latest software!
SOFTWARE & FIRMWARE BUILDING
Some build instructions follow, but they shouldn't be needed if you're running the released firmware on Windows.
Linux/Mac
HOST APPLICATION: install libusb: sudo apt-get install libusb-1.0-0-dev
make from host folder: make unix
run: ./inlretro
If you want to build your own AVR FIRMWARE: install avr-gcc and avr-libc: sudo apt-get install gcc-avr sudo apt-get install avr-libc
AVR BOOTLOADER: bootloadHID-master: https://github.com/ajd4096/bootloadHID fork of original obdev bootloader has option to remove BL switch with timeout.
bootloadHID.2012-12-08: https://www.obdev.at/products/vusb/bootloadhid.html the original believe it has more upto date V-USB drivers.
Both have identical commandline folders so they're identical on the host side. need to have libusb-dev installed can check by typing "libusb-config" in terminal will present usage options if installed on your system if not installed should report so with suggestion for apt-get: sudo apt-get install libusb-dev then just run 'make' should build successfully
With the bootloader commandline app built, the firmware can be loaded onto the INL retro-programmer via USB: -place BL/RUN switch in BL -hit RESET button or plug into USB for first time -run 'make program_unix' from firmware dir.
If bootloader commandline app was successfully built and you have permission to access HIDbootloader should have successful output similar to this: $ make program_unix ../bootloader/commandline/bootloadHID -r main.hex Warning: could not set configuration: could not set config 1: Device or resource busy Page size = 128 (0x80) Device size = 16384 (0x4000); 14336 bytes remaining Uploading 1920 (0x780) bytes starting at 0 (0x0) 0x00700 ... 0x00780
-take BL switch back to RUN -enjoy new firmware
STM32 FIRMWARE: Need arm-none-eabi-gcc
Windows
HOST APPLICATION:
Install minGW:
- download: http://www.mingw.org/wiki/Getting_Started
- launch: Installation manager default settings
- select: mingw32-base
- (primary need is gcc)
- select: msys-base
- (primary need is make, basic unix commands are nice to have)
- optional: msys-openssh
- (helpful if using gitlab to pull updates)
- lua for host app dev
- minGW utilities can be easily added or removed at any time with minGW installation manager.
- Add C:\MinGW\bin & C:\MinGW\msys\1.0\bin to your PC's enviroment PATH variable
- -control panel search: "edit system environment variables
- -System properties window, Advanced tab, click Environment Variables...
- -System Variables pane: Select and edit "PATH"
- -Add new entries below assuming you used default location for minGW
- C:\MinGW\bin
- C:\MinGW\msys\1.0\bin
- -I had troubles once with cp (copy) commands in Makefile causing a crash, even though the commands works outside of make. Bumping the mingw path variables to the top of all my path variables corrected this issue. So that might help if you have similar issues...
Now host app can be built from windows command prompt command make when in host directory
- go to host
- make all
If you want to build your own AVR FIRMWARE: Download and Install WinAVR optional: install programmer's notepad has handy feature to make clean, all, program in tools menu this is nifty if you are scared of the command prompt for some strange reason... installation process should modify PATH environment variables for you. incase they don't add them just like MinGW above C:\WinAVR-20100110\bin C:\WinAVR-20100110\utils\bin
Now firmware can be built from windows command prompt with command "make" when in firmware directory
There is a bootloader installed on all "kazzo" INL retro programmer-dumper's which allows new firmware builds to be easily flashed on to the device without a avr programmer. Place BL/RUN switch in BL, then hit reset button in INL retro-prog from firmware folder run command "make program" this will flash target build onto device using bootloadHID.exe Take BL/RUN switch back to RUN and device will reset into INL retro-prog you just built.
AVR BOOTLOADER: If you wish to build bootloader for kazzo (shouldn't be necessary for most ppl) follow the following Requires you to have an avr programmer to reflash atmega164a mcu Helpful to download more recent version of avrdude than included with WinAVR. Download latest version with mingw32.zip from following link: http://download.savannah.gnu.org/releases/avrdude/ nzip and copy paste both avrdude.exe and avrdude.conf to C:\WinAVR-20100110\bin directory Assuming the recent build still doesn't support atmega164a.. You'll also have to add a definition for atmega164a in the avrdude.conf file Copy paste the atmega324P section and rename it atmega164A Then change the following lines to match: id = "m164a"; desc = "ATmega164A"; signature = 0x1e 0x94 0x0f;
Now the bootloader can be built and flashed from the bootloadHID/firmware directory with make If trying to flash mcu from make file you'll have to modify AVRDUDE line to match your avr programmer Once completed you can make the bootloader and flash it with command "make flash"
STM32 FIRMWARE:
Need arm-none-eabi-gcc: https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads
Download .zip file and place in folder like C:\ARM and create environment variables to point to bin folder