Thursday, November 26, 2015

Super Nintendo Mods - SuperCIC + uIGR + 1chip 50/60 Hz

It took 5 days of tinkering and 2 months of waiting but i finally did it. I wanted to experience NTSC SNES games in their native speed so the SuperCIC felt like a great solution..... until i've discovered that i got a 1chip model. This isn't so bad as it turned out that as the 1chip has a superior video quality over RGB. Sadly I've bought the electronics stuff before checking which model i had so the project was stopped 2 months ago as the SuperCIC is not enough as the system clock frequency also needs to be switched out.

The reason for the waiting was this magnificent circuit made by ikari. It's basically two pierce oscillators with some glue logic to switch between the clock signals. For random reasons no bigger consumer electronics stores like Reichelt, Farnell or Conrad which are a common source for circuit stuff around here have the very specific and needed NTSC crystal in their supply.

21.47727 MHz ... argh... this number is like a nightmare.
I had to order it from Hong Kong as i didn't wanted to pay 20€ for ordering at an industrial vendor. My last post was about that.

After putting everything together and fixing some bugs here and there the solution looked like this:

I used a small breakout board as the area between the controller board and the main board is an empty space big enough to hold a circuit like that. The only visible IC on the visible side of the board is the 74HCU04 which implements the pierce oscillator using the crystals on the back.

I don't have any photo of the underside and i don't want to peel the board off again so here is the early design from eagle.

Next to the oscillators is a 74HC00 which selects the wanted frequency. On the left we have a PIC16F630 implementing the SuperCIC from ikari and a PIC16F684 for the borti4938 variant of the IGR. It was suggested by ikari to skip his original solution in favour of that one.

The workings on the main board were inspired by wolfsofts article.
For minimal wiring sizes i used small lacked copper wires.

After doing this mod i was curious how it would harmonize with the sd2snes. Well it didn't...... at first.
The current stable firmware of the sd2snes is 1.6.0 which proudly detects the SuperCIC in the system information but doesn't makes use of it.
The experimental release 1.7.4 preview 4 is the first one to utilize the "pair mode". I installed it and configured it to enable this mode. Still it only works if you set the uIGR correctly.
It saves the last configured region mode so if you forced PAL or NTSC or maybe enable the "normal" auto region detection it will not work.
Press L + R + Select + Pad Left (or Pad Right) to set the uIGR to "detect region from SCIC". If this setting is not changed after that the region from the ROM is transfered from the sd2snes to the SuperCIC and then to the uIGR as soon the game is loaded.
The is also indicated by the LED as Green means PAL and Red NTSC.

I only did this for testing as a revert to 1.6.0 seems to be a better option for me at the moment. I will wait until the official release of 1.7.4 as the menu is a little bit bugged out.... and the sd card seems to be written every second which is scary. :-O

Until then:

L + R + Select + Y to force PAL / 50 Hz
L + R + Select + A to force NTSC / 60 Hz
L + R + Select + Start to reset the game
L + R + Select + X reset into the sd2snes menu. (I love this!)


After everything was finished I've discovered the guy named borti4938 has created a more clean solution. If i had discovered that early i would have used that too.....

Source of picture

But hey. My board seems to be a little bit dirty but i decided it would be smart having the PIC controllers socketed. I'm ready for future firmware changes ;-)

If you like your SNES this mod is a really good one.

Sunday, November 22, 2015

21.47727 MHz Quarz Crystal anyone in Germany?

I'm currently modding my SNES with the SuperCIC, the IGR and the 1chip 50/60 Hz mod from ikari. As it turned out getting a quarz crystal with the needed 21.477 MHz is quite difficult in europe. I now got 20 from Hong Kong and had to wait 2 months for them.

I now have 19 not in use and as I'm not planing to mod another 19 SNES I want to send them to anyone in need instead. So if you want 50/60 on your 1chip (2chip doesn't need the crystal !!!) SNES just make a comment here.


Ich baue gerade meinen SNES auf 60Hz um. Wenn jemand in Deutschland Interesse an einem 21.477 MHz Quarz hat, bitte unten schreiben.

Tuesday, September 15, 2015

Solving quirks of the Everdrive expansion sound

As it turned out the expansion audio of the Everdrive has even issues if no expansion audio is available. Take these games for example: Metroid and Akumajou densetsu. Metroid doesn't utilize expansion audio but the latter one uses a VRC6. Both games have in common that the sound is silenced if the game is paused. On metroid you can clearly hear a low pitch static noise. On the VRC6 game you don't. As far as i can assume this might be caused by an undriven output of the FPGA. As the port is not driven the signal is influenced by digital noise from the cart itself.

There is no way to solve that except changing every mapper that is out there.... or is there one?
I did it the following way and it also has another advantage.

I don't like to drill in my NES so I made a small board for this purpose.
Here we have a poti with 50kΩ. The middle pin is connected to the mixing circuit. The other ends to ground and to the expansion audio from the everdrive.
Also there is a switch to disable the expansion entirely having a noise free experience again.

The poti makes it possible to use my 100% volume version of my VRC6 mod and at the same time having an analog way while listening to the music to setup the volume.

Fixing the VRC6 of the Everdrive N8 at last

By talking to others about the issues i decided to create a bunch of versions of my mapper. One issue of the Everdrive menu is the volume setting that currently only allows to be set to HI or LO.
As the mixing circuit is pretty analog and there seems to be differences between the various versions of the Famicom / NES a higher range of volume settings is required.

Please load the zip file here.
You get multiple files that are named with the following scheme:
The numbers represent the total output volume in percent. 100% is the maximum the FPGA can drive and offers the best signal to noise ratio.
This way you can alternate the volume by swapping the mapper or maybe check two different ones without swapping. The mapper is now configurable and has support for HI and LO.
Replace the original 024.RBF with the one you'd like.

Here is a diagramm of possible combinations.

If you need additional volume configurations just contact me.

The mapper is based on a mod of the original mapper and was tested for hours of gameplay on a modified US NES. As I can not be aware of everything you use this software on your own risk. If you damage your NES or you Everdrive using it don't make me responsible for it.

Monday, September 7, 2015

Issues with the VRC6 Implementation of the Everdrive N8

I'm a huge fan of the Everdrive series. After having bought the sd2snes to get to play some of the extremly rare SNES games (Rendering Ranger, Manfred Trenz for the win^^) I decided to also let the Everdrive N8 join the fun.

The shop said it even features expansion audio so the japanese release of Castlevania III namely akumajou densetsu can be played with the sound of the VRC6 which the american NES was not designed for.
First of all I'm from germany, I bought the card and put the ROM on the card and played it with my PAL NES. Well it didn't run quite well as the game couldn't handle 50 Hz. So i had the decision. Buy the Famicom or a US NES with an expansion audio mod.
I didn't liked the idea of having my controllers directly soldered to the console so i went for an american NES.
The game ran well but the audio was still quite strange as the mod was not yet performed.

So i opened the NES and connected pin 3 and pin 9 of the expansion port.
I don't know if this also goes for Famicom to NES converters but this is what the Everdrive needs.

I started the game and something was wrong. The sound was not quite right. Missing notes?
With an NSF player on my PC i listened to the 'reference' I was used to listen to. I heard a strong baselines on 'Beginning' and 'Aquarius'.
On the Everdrive however the baseline which is played by the Sawtooth channel of the VRC6 was incredibly quite.

I registered on the forum of krikzz the developer of the Everdrive and complained about this. Sadly no one was able to help me as this is a known issue.

I then contacted krikzz directly and wow I love you man. He has supplied me with the source code for the FPGA. I investigated and compared the design with the infos I've found on nesdev and found an issue with the internal mixing circuit that was putting the two pulse waves and the sawtooth together. Also the pulse waves did have exactly twice the volume they normaly should have.

I synthesized the design with my changes and there it was. The baseline of Beginning coming out of the Everdrive. I've added a poti to allow changing volumes while playing until I'm satisfied.

You can download my modified version here.
Replace 024.RBF inside EDFC/MAPS on your SD card with this version. But make yourself a backup first. Please keep in mind that this mod is not yet finished as further testing is needed for perfect accuracy. Also the LO/HI volume setting is ignored. I can archive quite good results at the moment with 77kOhm between pin 3 and pin 9.

I've tested it for a few minutes but be sure you are doing this at your own risk. If this mod damages your Everdrive N8 or your NES I can't help you.

Happy whipping some vampires!

Tuesday, June 23, 2015

Motorrad Navigation mit Sprachanweisungen und Routenplanung [German]

Welch ein stiefmütterlich behandeltes Thema.... hier meine Erfahrungen dazu:

Selbst in Deutschland kommt irgendwann mal wieder der Tag, wo die Sonne sich blicken lässt. Was also tun? Genau, mit dem stählernen Schlachtschiff auf die Straße natürlich!

Nun möchte man nicht immer einfach nur der Sonne entgegen fahren. Manchmal ist so ein Ziel gar nicht mal so schlecht. Wie aber nun einen schönen Weg von A nach B finden?

Mein erster Ansatz war relativ simpel: Google Maps auf dem Smartphone einschalten, Ziel eingeben, Autobahnen vermeiden, Knopf ins Ohr und los gehts. Die Sprachnavigation führt mich mit präzisen Anweisungen ans Ziel. Das Problem ist jedoch die gewählte Route. Stadt, Ampeln, bääh.
Eine andere Lösung musste her.

Wer sich mit Google Maps etwas genauer auseinander gesetzt hat, stellt fest, dass die Route mit der Maus gezogen werden kann. Sie ist also veränderbar. Perfekt, das ist genau das was ich brauche. Leider ist Google hier etwas bräsig, da dieses Feature nicht in der App zur Verfügung steht.
Auch ist es "offiziell" nicht möglich die gezogene Route zur App zu transferieren". (Inoffiziell klappt der Transfer. Aber die Navigation erfolgt dann nur zum ersten Zwischenziel....)

Nach einigem Suchen stellte ich fest, dass es Zeit war sich Google abzuwenden. Schließlich gibt es Navigationssoftware für Android in rauen Mengen. Gleichzeitig muss berücksichtigt werden, dass die geplante Route in diese importiert werden muss. Ich möchte nun auf einige Applikationen eingehen.


Welche Software ist für das Planen der Routen einsetzbar?

Der Motoplaner wirkt wie eine gepimpte Version von Google Maps. Es können Adressen eingegeben werden. Autobahnen können vermieden werden. Die Route kann wie bei Google Maps gezogen werden.
Erweitert wurde das ganze jedoch um Import und Exportfunktionen.
Die geplante Route kann in diversen Formaten gespeichert werden.
Direkt unterstützt werden z.B. GPX, Navigon und CoPilot. Die Liste ist jedoch riesig, weshalb ich hier nicht weiter darauf eingehen kann.

Das Programm funktioniert zuverlässig, das ziehen von Routen hat jedoch kein Echtzeit-Update der Route, wie dies beim offiziellen Maps der Fall ist.
Beim Motoplaner muss auf das Exportformat geachtet werden. Es können Routen und Tracks exportiert werden. Während Routen nur aus den Stützstellen bestehen, beinhalten Tracks die vollständige geplante Trajektorie und lassen der Navisoftware keine Wahl bei der Planung.

Google Maps + ITN Converter
Das aktuelle Google Maps erlaubt keinen Export in eine Datei. Stattdessen können Routen "geteilt" werden. Ausgegeben wird hier jedoch nur eine URL, welche bei erneuter Eingabe den aktuellen Zustand mit den Stützstellen und dem Ziel wiederherstellt.

Zwischendurch fand Ich den ITN Converter. Dieses Windows Tool, welches auch unter Linux + wine bestens arbeitet, kann Routen diverser Formate konvertieren. Man nehme die Google Maps URL, kopiere sie und füge sie einfach in den ITN Converter ein. Dieser erkennt die URL und setzt die Route um. Danach kann unter anderem nach GPX, Sygic, Navigon und CoPilot exportiert werden. 

Mir persönlich gefällt diese Art sehr gut, da das Google Maps Interface sehr angenehm zu bedienen ist.

Routenbasierte Navigation

Nun haben wir unsere Route. Aber wie kann ich diese abfahren?

Osmand.... welch traumatische Erfahrung. Im Gegensatz zu allen anderen Navis in dieser Liste ist Osmand nicht nur in der Lage der Route zu folgen. Auch Tracks können verarbeitet werden. Leider ist die Sprachnavigation in diesem Fall sehr beschränkt. Mehr als ein "fahren sie links, fahren sie rechts" lässt sich dem Text-To-Speech nicht entlocken.
Was die Navigation mit Routen betrifft ist ein Chaos. Osmand stürzt regelmäßig ab oder verweigert sich mit "Startpunkt zu weit von Straße entfernt" einer Routenberechnung. Viele bezeichnen Osmand als einen heiligen Gral der Open Source Navigation. Selbst als Linux-Vollblüter kann ich dem irgendwie nicht zustimmen.

Sygic (~24€) bietet eine 7 tägige Probeversion an. Das ist gut, da der Preis doch schon eine Hausnummer ist. Die Katze im Sack will hier niemand kaufen. Nach ein paar Teststunden dachte ich "Ja, das ist es".
Doch wirklich zufrieden war ich dann doch nicht. Die Autobahnnavigation mit Sprachführung ist katastrophal. Statt dem gewohnten "Nehmen sie die Ausfahrt auf die A40 Richtung Bochum" hört man nur ein "Nehmen sie Ausfahrt 15" (Die Zahl 15 dient hier nur als Beispiel ;-)). Da das Cruisen auf dem deutschen Highway aber natürlich nicht soo viel Spaß macht, war das nicht direkt ein Negativkriterium.
Wirklich penetrant wurden Stabilitätsprobleme beim TTS und schlechte Kartendaten mit dementsprechend irre führenden Sprachkommandos.
Nach jedem starten musste ich als Sprache zuerst Doris auswählen, danach TTS und erst danach funktionierte die Sprachnavigation. Wieso?
Dann der Akkuverbrauch. Selbst nach beendeter Navigation arbeitet die App obwohl in der Systemleiste kein Logo mehr vorhanden ist. Neu ein Neustart oder ein Prozesskill löste das Problem.
Zuletzt die Kartendaten. Nicht jeder wird dieses Problem erleben, da es von den aktuellen Lokalitäten abhängig ist:
Folgende Grafiken (Quelle: Google) zeigen einen Kreisverkehr, wie er in der Kleinstadt Bergkamen zu finden ist. Einmal die Satelliten Aufnahme und zusätzlich die Straßenkarte.

Nun nehmen wir an, wir kommen von Süden und laut Route geht es Richtung Norden weiter. Was erwarten wir von unserer Sprachnavigation?

"Nehmen Sie die 1. Ausfahrt im Kreisverkehr in Richtung Schulstr."

akzeptabel und durchaus logisch wäre auch

"Fahren Sie im Kreisverkehr geradeaus"

Nun die Frage, was macht Sygic?

"Nehmen Sie die 2. Ausfahrt"

Halt moment, dachte ich mir. Die Buchfinkenstr. ist nicht Teil der Route.
Da ich die Route ungefähr im Kopf hatte, machte ich eine Pause und sah mir die Route von Sygic an. Alles richtig aber ... Moment! Dieser winzige Fahrradweg, bei Google in Grau, wo natürlich kein Auto reinpasst.... nicht mal ein Fahrrad, da der Bordstein nicht abgesenkt war..... IST BEI SYGIC EINE AUSFAHRT!!!!

Bugs schön und gut aber da wurde es mir zu viel. Der Test war damit beendet.

Ich hätte Navigon gerne getestet. Wirklich wirklich gerne.
Die App kostet 50€ und es gibt keine Testversion wie bei CoPilot oder Sygic.
Wer gibt 50€ aus ohne es vorher getestet zu haben???

CoPilot GPS / CoPilot Premium
Ich hatte meine Suche verändert. Statt nach "navigation app follow route" zu suchen, habe ich mich in Richtung Apps für Motorradnavigation bewegt. Dadurch fand ich eine hübsche Website, die mir die Suche etwas erleichtern sollte. Basierend auf der Wertung habe ich mich dann CoPilot angenommen. Diese wird in Deutschland für 24€ verkauft und lässt, wie Sygic auch, eine 7 Tage Probezeit offen. Also ITN Converter angeschmissen und die Tracks als .trp Datei exportieren. Der Zielpfad für die Routen ist leider etwas unglücklich komplex gewählt und scheinbar abhängig von den Kartendaten.
In meinem Fall /sdcard/com.alk.copilot.eum/EU/save/.
Danach App starten, dementsprechend nach den Wünschen konfigurieren und die Route laden.

Ich hatte bisher keine Versuche unternommen GPX Tracks zu laden. Um die Software nicht zu überfordern bleibe ich jedoch bei Wegpunktbasierten Routen.
Als einzige Software die ich bisher getestet habe, bietet CoPilot die Möglichkeit die Route zu "ziehen". In etwa genauso wie es Google Maps online kann.
Die Sprachnavigation ist von ausserordentlicher Qualität und erinnert an die Aussagen von Google Maps. Falls man etwas taub auf den Ohren ist, kann die nächste Abbiegung in Distanzschritten mehrmals wiederholt werden, welches den Routing Erfolg natürlich steigert.

Relativ verstörende Resultate erhält man jedoch, wenn man bei der Routenplanung nicht aufgepasst hat. Ich hatte eine Stützstelle versehentlich auf einen Kreisverkehr platziert. Aus großer Entfernung nicht ersichtlich, wies mich CoPilot vor dem Kreisverkehr darauf hin, dass ich doch bitte "Ausfahrt nehmen sollte".
Nach einer Korrektur der Route ist dieses Phänomen jedoch nicht mehr aufgetreten.

Ein weiterer Bug von CoPilot ist das fehlende Feature eine Route umzudrehen. Es ist deshalb notwendig die Route 2 mal aus dem ITN Converter zu exportieren, welcher in der Lage ist diesen Part zu übernehmen. Dies ist jedoch ein vergleichsweise kleines Manko.


Nachdem ich mich ein paar Wochen mit diesem Thema beschäftigt habe, kann ich sagen, dass sich die Kombination Google Maps + ITN Converter + CoPilot Premium für mich durchgesetzt hat. CoPilot ist in der Testphase nicht einmal abgestürzt, was traurigerweise ein postives Feature ist.
Die Sprachkommandos entsprechen meinen Anforderungen da dank TTS auch Straßennahmen wiedergegeben werden.

Tuesday, June 9, 2015

Suzuki Intruder M1800R - Zugkraftdiagramm / Gangdiagramm [German]

Bei sportlichen Motorrädern ist es in der Regel üblich, dass diverse Kennlinien die Eigenschaften des Motors und des Antriebstranges beschreiben.
Anfang 2015 war ich auf der Suche nach einem leistungsfähigen Cruiser (Widerspruch?) und musste feststellen, dass derartiges nicht für diesen Typ Motorrad angefertigt wird.
Als ich mich schlussendlich für eine Suzuki Intruder M1800R entschieden habe und letzte Woche ein bissle Lust hatte etwas in Java zu tippen entstand die Idee, diese Diagramme selbst zu erzeugen.

Meine Berechnungen basieren auf folgenden Annahmen, die in der Betriebsanleitung zu finden sind:

    final static double gearRatios[]={
    final static double primaryRatio=1.647;
    final static double secondaryRatio=2.823;
    final static double reifenDurchmesser=0.65; //m

Die Kennlinie selbst war leider etwas problematisch, da diese gemessen wird und sich deshalb Messfehler einschleichen können.
Für das Zugkraftdiagramm verwende ich für die blaue Kennlinie diesen Test und für die rote diesen. Beide Kurven unterscheiden sich deutlich und Ich zweifle deshalb etwas an der Glaubwürdigkeit. Da ich keine anderen Kennlinien finden konnte, muss ich das erstmal akzeptieren und zeige beide Varianten in einem Diagramm. Die grüne Linie visualisiert den Luftwiderstand. Die kleinen Zahlen repräsentieren die aktuelle Drehzahl.

Das Gangdiagramm zu ermitteln ist dagegen ein leichtes, da hierfür nur das Getriebe und der Reifendurchmesser notwendig sind.
Ich bin mir relativ sicher, dass hier kein Fehler unterlaufen ist, da einige Fixpunkte mit meinen Erfahrungen übereinstimmten.