Backup / dump and import / write GB / GBC / GBA savegames on real cartridges using the Analogue Pocket

Using the Memories function of Firmware 1.1 on the Analogue Pocket, you can safely backup and import savegames to and from a real cartridge, assuming you already have a working savegame on your cartridge.

If you don’t already have a physical backup of your cartridges savegame, follow this small tutorial first: https://8300111.de/extract-dump-gb-gbc-gba-savegames-on-analogue-pocket/

If you have a savegame from an earlier backup or an external source (Everdrive, openFPGA core), then follow this tutorial: https://8300111.de/extract-dump-gb-gbc-gba-savegames-on-analogue-pocket/

Disclaimer: Please be careful and act with caution. I successfully tested this with a GB and a GBA Pokemon game cartridge, but I can not guarantee this will always work for you and all your games. I am not responsible for any damage to you hardware or software.

When you replace the battery of old Gameboy games that do not have flash memory, you will lose the savegame if you disconnect the battery. Technically, you could do „open heart surgery“ to the cartridge and desolder the battery while the game is inserted, powered and up and running in the Analogue Pocket, but let’s do it the easy way:

  1. load the cartridge in your Analogue Pocket as usual, and load your regular savegame on the cartrdige
  2. create a Memory (= save state), by pressing Analogue + Up button

Now you have a Memory that matches the current state of the game, including savageme information. You can now do your work on the cartridge or experiments in your game. If you lose your save information on the cartridge, you can now simply load the old Memory into the running game. While the Memory only exists on your microSD card, you can restore your save information on the cartridge by finally using the ingame save function:

  1. load the cartridge in your Analogue Pocket as usual, launch into the game (load an old savegame or create a new game)
  2. load the Memory you created earlier (Analogue Button -> Menu -> Memories)
  3. save the game, using the native save function ingame

Veröffentlicht in Alle Artikel, analogue, retro | Getaggt , , , , , , , , | Kommentare deaktiviert für Backup / dump and import / write GB / GBC / GBA savegames on real cartridges using the Analogue Pocket

Write GB / GBC / GBA savegame files to real cartridges using the Analogue Pocket

With Firmware 1.1 on the Analogue Pocket, you can use the Memories function (= save states) to write savegames to real cartridges, as the Memories of the GB / GBC / GBA openFPGA cores by spiritualized1997 are sometimes compatible with the real cartridges.

Disclaimer: Please be careful and act with caution. I successfully tested this with a GB and a GBA Pokemon game cartridge, but I can not guarantee this will always work for you and all your games. I am not responsible for any damage to you hardware or software.

Do a backup of you original cartridge savegame first, if you like: https://8300111.de/extract-dump-gb-gbc-gba-savegames-on-analogue-pocket/

If you only operate on one cartridge and if you do not wish to mix the .sav files of different systems, then you skip some steps and only work with the Memory system of the Pocket: https://8300111.de/backup-dump-and-import-write-gb-gbc-gba-savegames-on-real-cartridges-using-the-analogue-pocket/

With these two procedures, you can move around savegames on real cartridges as you wish, for example if you want to continue a emulator , Everdrive or openFPGA game on real hardware, for backups and battery replacements. It only works if the rom file is exactly the same as the cartridge and even then it is not guaranteed to work. It worked for all of my Pokémon cartridges (Red, Blue, Crystall, Leafgreen) but not for my Mario Kart GBA cartridge.

tl;dr: You can create a Memory (= save state) in the spiritualized1997 GBx cores, copy and load that Memory (containing your desired .sav file) to the real cartridge Memories and then use the ingame save function to write it to the cartridge.

What you need for this tutorial:

  • Analogue Pocket on Firmware 1.1
  • current version of spiritualized1997 GB / GBC / GBA core
  • the desired savegame as a .sav file
  • the real game cartridge

This is how it works:

  1. make sure the .sav savegame is compatible and running in your spirizualized1997 openFPGA core!
    • if it works in the openFPGA core, it will most likely work on the cartridge
  2. create a Memory (= save state) in the spirizualized1997 openFPGA core (Analogue + Up button)
  3. launch the real cartridge with the Analogue Pocket
    • play the game until you saved ingame for the first time!
  4. create a Memory of the real running game (Analogue + Up button)
    • this is your backup if you need it, do something ingame, load the backup and check if everything works
  5. create a Memory of the real running game (Analogue + Up button)
    • this is the one that we are going to replace
  6. replace the real Memory (= save state, .sta file) with the openFPGA core Memory on the SD card
    • navigate your SD card to card:/Memories/Save States
    • backup the most recent .sta and .sav file of your real cartridge to a safe place
    • copy the full Memory name of your most recent safe state (e.g. 20231022_161554_GB_3B99CFC2_Pokemon; Blaue Edition.sta)
    • navigate to the Spiritualized.GBx subfolder, find the most recent Memory of your openFPGA core game (something like 20231022_164646_USR_00000000_Pokemon – Blaue Edition (Germany).sta)
    • rename the file and paste the original cartridge file name
    • replace / overwrite the real cartridge Memory in the parent Save States folder with the newly renamed openFPGA Memory
  7. load the new Memory into the original cartridge and save the game to the cartridge
    • load the real game cartridge with the Analogue Pocket, go into the game (maybe necessary: load an old savegame from the cartridge)
    • load the last Memory into the running game (which is the renamed openFPGA memory) via the Analogue Menu (Analogue button -> Memories)
    • if everything works fine: save the game with the ingame save function

In the final step, the savegame will be written to the cartridge using the native cartridge / Gameboy save function.

If this does not work, there is one last method: All the savegame data is also contained withing the save state (.sta) file. If you find the correct beginning and ending within the hex file, you could replace the savegame data in the Memory, but this seems to be very complicated. The method above should work for Pokémon games.

Edit: Here is a second method explained by Reddit u/OptimalPapaya1344, where you can use an Everdrive and an pre-1.1 firmware to exchange Memories between the Everdrive and a real cartridge: link to reddit.com

Veröffentlicht in Alle Artikel, analogue, retro | Getaggt , , , , , , , , , , , , , | Kommentare deaktiviert für Write GB / GBC / GBA savegame files to real cartridges using the Analogue Pocket

Extract / dump GB / GBC / GBA Savegames on Analogue Pocket

Using the Memories function (save states), we can dump / extract / backup the savegames from real GB / GBC / GBA cartridges on the Analogue Pocket.

You should be on current Analogue Pocket Firmware. With Firmware 1.1, the Memories function not only creates a dump of the current state of the game, it extracts a .sav file that you can backup, use in an emulator or in the openFPGA Core by spiritualized1997 (https://github.com/spiritualized1997).

There are some rare cases (Pokemon Emerald..) where no .sav file is created. In this case, you can only backup the Memory (.sta) file and follow my other tutorials. You can modify this tutorial and do it in reverse to transfer a real cartridge Memory to the openFPGA core, which then should create a .sav file!

  1. insert the cartridge and launch into your game
  2. press Analogue+Up to create a new Memory = save state
  3. quit the game and find your .sav file on the SD-card in card in card:/Memories/Save States
    • this is the savegame, that additionally exists on your cartridge
    • there also is a .sta file, wich is the save state, that technically also includes the savegame in hex format somewhere beside all the other information like all the contents of the RAM

You can now backup this .sav (and optionally the .sta) file to a safe place!

Veröffentlicht in analogue, retro | Getaggt , , , , , , , , , | Kommentare deaktiviert für Extract / dump GB / GBC / GBA Savegames on Analogue Pocket

DHL Packstation: Sendungen ohne Karte abholen

Hallo liebe Leserinnen und Leser,

es kann viele Gründe geben, warum man seine Packstation Karte nicht zur Hand hat, aber dringend an eine Sendung in der Packstation kommen muss. Hier erfahrt ihr, wie das geht. Ihr benötigt nur eure Postnummer und die aktuelle mTAN!

Lesen fortsetzen
Veröffentlicht in Alle Artikel | Getaggt , , , , , , , , | Kommentare deaktiviert für DHL Packstation: Sendungen ohne Karte abholen

DHL Packstation Kundenkarten: Barcode aus Postnummer errechnen, Theorie und Gedanken

Hallo liebe Leser,
ich muss euch leider enttäuschen und mitteilen, dass ich den Generator und sonstige Anleitungen entfernt habe. Der Beitrag bleibt so bestehen, um meine Gedanken zu dem Thema festzuhalten.

Aktuell kann man sich auch ganz ohne Karte, nur mit der Postnummer an der Packstation einloggen! Hier die entsprechende Anleitung auf meinem Blog.


Ich bin kein Journalist sondern Hobby-Internetnutzer und Privatperson und ich fürchte, dass es irgendwie irgendjemand schaffen kann, mir einen Strick aus dieser Sache zu drehen, obwohl hier eindeutig DHL die Verantwortung für die Sicherheit der Kundenkonten trägt. Ich habe mich sehr über die vielen freundlichen Kommentare und E-Mails gefreut und es tut mit Leid für Personen, die nun ohne Karte vor der Packstation stehen, aber ich kann nicht weiterhin ausbaden, was DHL versäumt. Google zählt allein für die Weiterleitung zu diesem Artikel Klicks in dreistelliger Höhe (keine Sorge, ich habe keine Werbung oder sonstige Tracking-Tools installiert, die Information wird auf google.com erhoben und nicht hier). Zuletzt gab es wieder Berichte zum bandenmäßigen Missbrauch von Packstations und ich will damit nicht einmal im Ansatz etwas mit zu tun haben.
Deshalb begrabe ich für mich das Thema nun einfach, insbesondere auch deshalb, weil DHL scheinbar für neue Karten sowieso das Verfahren geändert hat. Mein Rat lautet nun:
Bestellt euch eine neue Karte und scannt oder fotografiert den Code wie unten beschrieben! Lesen fortsetzen

Veröffentlicht in Alle Artikel | Kommentare deaktiviert für DHL Packstation Kundenkarten: Barcode aus Postnummer errechnen, Theorie und Gedanken

iOS App Liste – nur gute Qualität bitte!

Meine Qualitäts-App Liste, die mir derzeit das beste iOS Nutzungserlebnis bieten.

Die Kriterien lauten:

  • guter, transparenter und ansprechbarer Entwickler
  • guter Datenschutz
  • kein Account oder Cloud zwang
  • möglichst offline
  • keine Werbung oder andere nervige Nachrichten
  • hohe Qualität, moderne iOS Techniken
  • “klein und schnell” → effektiv
  • an alles gedacht, vielseitig einsetzbar
  • lieber von einem kleinen Entwickler mit Liebe gemacht als von großen Studios für die Massen
  • kein Abo Modell

 

Natürlich wird nicht jede dieser Apps alle Anforderungen erfüllen, jedoch gebe ich mir Mühe die besten auszusuchen. Es mag für manche Apps auch sehr gute Alternativen geben, jedoch habe ich schon meistens das beste (für mich!) ausgewählt. Für Tipps bin ich dankbar!

Lesen fortsetzen

Veröffentlicht in Alle Artikel, Apple | Kommentare deaktiviert für iOS App Liste – nur gute Qualität bitte!

einfacher qmail-Logger und Spam Behandlung

Hallo Leute,

ich habe immer häufgiger Spam bekommen, u.a. auf abgelaufene Adressen, welche ich mir doch „heimlich“ habe zustellen lassen. Inzwischen mache ich das zwar nicht mehr, aber mich hat stets gewurmt, dass ich mit normalen Methoden (also z.B. E-Mail Header analysieren) nie herausgefunden habe, an welche Adresse nun die Spam Mail wirklich gesendet wurde, da die Versender wahrscheinlich an Blindcopy (Bcc) verschickt haben. Deshalb taucht im E-Mail Header die „Empfangsadresse“ auch nicht auf.

Mit diesem kleinen Script hier habe ich mir nun einen Logger geschrieben, der eingehende E-Mails, wenn sie mit qmail bearbeitet werden, in einer Zeile in ein Textfile loggt, mit Absender, Emfpängeradresse (denn qmail weiß sehr wohl, auf welcher Adresse es empfangen hat) und dem Zeitstempel.

Das Script liegt nun mit im Github Repository, siehe unten.

Eingebunden wird es, indem man die Mail per .qmail- Datei an das Script sendet, am besten als ersten Schritt. Danach kann wie gewünscht mit der .qmail- Datei weitergemacht werden, das Script verändert nichts.
Also z.B. folgende Zeile ganz oben mit in die .qmail- Datei hinzufügen:

Das Logfile liegt dann im Home Verzeichnis unter ~/incomingQMails.txt

Andere Möglichkeiten sind denkbar, z.B. indem man selbst per Maildrop den Header ändert und in den Betreff oder sonst wo die „Empfangsadresse“ hinzufügt.

Technisch funktioniert das hier so, dass qmail beim Empfang Umgebungsvariablen setzt, dabei auch $SENDER und $RECIPIENT, welche man dann während des Empfangs auslesen kann.

Besonders interessant ist das ganze für qmail-default Adressen (z.B. .qmail-dated-default), da hier Spam auf eine Adresse eintreffen kann, die man nicht einzeln per Hand angelegt hat. Mit der oben dargestellten Methode findet man heraus, welche Adresse tatsächlich in einer Spam-Datenbank geladet ist. Damit man unter dieser Adresse nichts mehr empfängt (aber unter allen anderen dieser default-Adresse), erzeugt man eine .qmail Datei für genau diese eine Adresse und lässt sie einfach leer oder versieht sie mit einem Kommentar („#ich bin hier nur zum Loeschen“).

Hinweis: Punkte in der E-Mail Adresse müssen im Dateinamen als Doppelpunkte geschrieben werden.

Beispiel: Ich bekomme Spam auf dated-374422993.jcipf@8300111.de , also lege ich die Datei „.qmail-dated-374422993:jcipf“ an. Das war es schon, die E-Mails werden dann einfach nicht zugestellt.

Gruß

Veröffentlicht in Alle Artikel, Uberspace | Getaggt , , , , | Kommentare deaktiviert für einfacher qmail-Logger und Spam Behandlung

Fritz!Box (mit OS >6.60) Dynamic DNS mit Duck DNS einrichten – schnell und kostenlos

Hallo Leser,

ich habe einen neuen Dynamic DNS Anbieter gebraucht. Die Großen waren mir zu umfangreich, unübersichtlich und datenhungrig. Ich bin auf Duck DNS gestoßen und damit sehr zufrieden. Man benötigt keinen Account, sondern kann sich u.a. über Google oder Twitter anmelden und kann sofort eine Subdomain anlegen. Da die Fritz!Box Installationshinweise nicht ganz korrekt waren, hier die korrekten Einstellungen (unter Internet -> Freigaben -> Dynamic DNS -> Benutzerdefiniert):

  • Update-URL
    • IP v4 only:
    • IP v6 only:
    • IP v4 + v6:
  • Domainname: deinedomain.duckdns.org
  • Benutzername: Accountname von DuckDNS eingeben
  • Kennwort: euer Duck DNS Token

Noch ein paar Hinweise: Die Update-URL habe ich nach AVM Dokumentation zusammengestellt. HTTPS funktioniert ebenfalls. Der Domainname muss vollständig angegeben werden. Der Benutzername könnte eigentlich frei bleiben, aber das Fritz!OS möchte dort etwas stehen haben – ich habe den auf Duck DNS angezeigten Accountnamen gewählt (meine GMail Adresse). Das Kennwort ist euer DuckDNS Token, welches ihr auch dem Login auf Duck DNS findet.

Über den Dienst findet man schnell ein paar Informationen, u.a. auf der Seite des Betreibers oder auf Reddit.

Ich habe auch lange Zeit „Dnsdynamic“ verwendet, aber scheinbar kann ich diese Domains die dort vergeben werden über den Telekom DNS nicht erreichen.

Getestet auf Fritz!Box 7490 mit Fritz!OS 6.60. Auch nach allen Updates weiterhin stabil (aktuell Fritz!OS 6.92).

Gruß

B

Veröffentlicht in Alle Artikel | Getaggt , , , , , , , , | Kommentare deaktiviert für Fritz!Box (mit OS >6.60) Dynamic DNS mit Duck DNS einrichten – schnell und kostenlos

E-Mails an abgelaufene Adressen bouncen, aber trotzdem empfangen (qdated)

Guten Abend!

Aufgrund inzwischen mehrerer Anfragen, möchte ich diese Tutorial-Serie um einen weiteren Part ergänzen: Statt E-Mails an abgelaufene Adressen einfach nur zu bouncen (also dem Sender eine Fehlermail vom MAILER-DAEMON zukommen lassen), werden sie mit den folgenden Anpassungen heimlich doch von uns empfangen, aber für uns im Betreff als [ABGELAUFEN] markiert!

Anmerkung: Bitte erst die Grund-Anleitung lesen und die Installation von qdated durchführen: klick! Zum weiteren Verständnis hilft der Uberspace Dokuwiki Artikel zu maildrop. Diese Anleitung setzt voraus, dass man grundsätzlich verstanden hat, wofür qdated gut ist und wie es konfiguriert wird!

Skript

Dazu brauchen wir mal wieder ein neues Skript! Die Aufgabe dieses Skriptes ist es, die eingehende Mail zunächst mit qdated zu prüfen. Wird dann erkannt (Exitcode ‚100‘), dass die Mail an eine abgelaufene Adresse gesendet wurde, wird die Mail zusätzlich noch an „maildrop“ (mit spezieller Konfiguration) weitergereicht, das uns wiederum den Betreff der E-Mail erweitert und an eine beliebige Adresse weiterleitet. Danach beendet sich das Skript mit dem Fehlercode von qdated, was zur Folge hat, dass der Sender eine Fehler-E-Mail bekommt. Der Name des Skriptes lautet „tag_expired_mails.sh“ und kann z.B. auch wieder in ~/bin/qdated liegen.

chmod +x tag_expired_mails.sh nicht vergessen!

Maildrop Konfiguration

Neben dem Skript brauchen wir noch eine Konfigurationsdatei für maildrop, die ich „.maildrop_expired_tagger“ nenne und ebenfalls in ~/bin/qdated ablege. Diese Konfigurationsdatei ist ganz klein, muss aber von euch angepasst werden:

In der letzten Zeile tragt ihr hinter das Ausrufezeichen die E-Mail Adresse ein, an die die Mails, die an die abgelaufene Adresse geschickt wurden, weitergeleitet werden sollen. Ihr könnt natürlich auch das Präfix für den Betreff ändern. Oder ganz weglassen..

chmod 600 .maildrop_expired_tagger nicht vergessen!

.QMAIL Datei anpassen

Statt in der .qmail-Datei (also z.B. ‚~/.qmail-dated-default‘) die Mails an .qdated zu geben, müssen sie erst durch unser Skript laufen, dazu muss die .qmail-Datei (siehe qdated Anleitung!) wie folgt aussehen:

‚zieladresse‘ bitte noch ersetzen! Entweder durch eine ausgeschriebene Adresse (z.B. info@domain.de) oder Uberspace-intern (z.B. uberspacename-adresse). An diese Adresse gehen unverändert alle gültigen E-Mails!

Fazit

Zunächst hielt ich es für unnötig, Mails an abgelaufene Adressen in Empfang zu nehmen, da ich dachte, dass dann der Sender ja gar nicht merkt, dass er eine alte Adresse benutzt hat. Über diesen Weg bekommt der Sender, wie in der Grundinstallation, eine Fehlermeldung, wenn er an eine veraltete Adresse sendet – ich kann die E-Mail aber trotzdem lesen und entscheiden, ob ich sie ignoriere und auf eine korrekte Mail warte, oder ob es ein „Notfall“ ist und ich doch antworte!

Ich habe gesehen, dass RainerM zwischenzeitlich ebenfalls eine elegante Lösung passend zu den Wegwerfadressen gepostet hat – zwar ohne Betreff-Taggig, dafür auch ohne Maildrop-Umweg! Danke! Auch meine Anleitung könnte man abwandeln und für seine Trash-Mails benutzen, dann wäre ein anderes Präfix empfehlenswert!

Bis dann!

Veröffentlicht in Alle Artikel, Uberspace | Getaggt , , | Kommentare deaktiviert für E-Mails an abgelaufene Adressen bouncen, aber trotzdem empfangen (qdated)

stitch OSM tiles from JTileDownloader

Oder auf Deutsch: Verbinde die OpenStreetMap Kacheln des JTileDownloaders wieder zu einem großen, zusammenhängenden Bild. Funktionierte leider für mich nicht mit beliebig vielen Kacheln.

Voraussetzungen:

  • Unixoides System
  • „montage“ aus dem „ImageMagick“-Paket

Anwendung:

Skript sollte im „tiles“ Ordner des JTileDownloaders liegen. Der Aufruf erfolgt mit einem Parameter, der das zu verwendende OSM-Zoomlevel angibt. Wenn ihr also Kacheln mit dem Zoomlevel ’10‘ heruntergeladen habt, lautet der Skript-Aufruf:

Achtung! Kann je nach Anzahl der Kacheln eine hohe Last auf dem Server verursachen!

Skript:

 

Veröffentlicht in Alle Artikel | Getaggt , , , , , , | Kommentare deaktiviert für stitch OSM tiles from JTileDownloader