external displays are cool but costly, so let’s look at some alternatives using an Android smartphone connected via adb.

other cool things you can do with a smartphone connected via USB:

these are the replacement i’ve tested and i’m using currently:

alternatives i’ve considered:

  • Ni-MH AA/AAA -> limited compatibility due to lower voltage (1.2V), higher self-discharge than LiFePO4
  • Ni-Zn AA/AAA -> limited compatibility due to higher voltage when fully charged (1.85V), higher self-discharge than LiFePO4
  • Li-ion AA/AAA-sized 1.5V with builtin USB charging -> higher self-discharge than LiFePO4 due to the builtin step down circuitry
  • 1.5V stepup adapter/sleeve for Ni-HM -> higher self-discharge than LiFePO4 due to the builtin step up circuitry
  • use multiple LiFePO4 in series -> risk to damage the batteries

suggested readings:

English translations:

QoL improvements:

linear/arcade hacks (remove backtracking/grinding/forced minigames):

savegame hacking / conversion:

  • SNES\F-Zero -> savegame editor
  • NGC\Sonic Heroes -> savegame editor
  • Wii\Metroid Prime Trilogy -> import GC saves
  • NSW\Mario Kart 8 Deluxe -> import WiiU save
  • NSW\Hyrule Warriors: Definitive Edition -> import WiiU save
  • NSW\New Super Mario Bros. U Deluxe -> import WiiU save
  • NSW\Bayonetta 2 -> import WiiU save
  • PS4\Gravity Rush Remastered -> import PSV save
  • PC\Cotton Rock ‘n’ Roll: Superlative Night Dreams -> import NSW save
  • PC\SISTERS ROYALE -> import NSW save
  • PC\NeverAwake -> import NSW save
  • PC\Cosmo Dreamer -> import NSW save
  • PC\Like Dreamer -> import NSW save
  • PC\Clive N Wrench -> import NSW save
  • PC\BALAN WONDERWORLD -> import NSW save

enable stage select / debug menu / practice codes:

8-bit enhancement hacks (improve graphics and music):

see also:

In this post i’m going to make a quick comparison of 2 mini routers i’ve tested recently: the GL.iNet GL-AR300M16-Ext and the NanoPi R1.

These are easily available under the 50EUR price range, and make a good alternative to an old dumb LAN switch for home use.

The basic feature set of these routers include:

  • Ethernet and Wifi bridging
  • Wifi extender
  • Wifi hotspot
  • run self-hosted services (like file servers, IP cameras, DNS, etc.)
  • USB-powered and very small, easy to carry around

The GL-AR300M16-Ext was probably the easiest to use, since it came with a pre-installed firmware made by GL.iNet. This simplified interface gives easy access to most basic features and it’s the best choice for inexperienced users. But it is also possible to install the full OpenWrt LuCI web interface and get access to a lot more. However, after some days of use some issues started to appear:

  • very limited storage space (16MB. yes, MBs!) and no extra storage option. Read: you can only install very few packages.
  • the filesystem became corrupted and read only, forcing to do a softreset (possibly related to the lack of free space?).

GL.iNet also offers some models with bigger storage, but still in the order MBs and with no option for loading the OS from external storage.

Switching to the NanoPi R1 things went much better: the model i’ve bought has no onboad storage, but you can plug and swap any microSD you want (which also makes full backups easier). On the R1 you have no simplified firmware, but only the OpenWrt vanilla one, so probably it is not the best choice for novice users. However there are also Ubuntu and Debian images available for this board. The ones on the Friendlyelec wiki are outdated, so i’ve switched to this one which is updated regularly and has some interesting optimizations: DietPi.

To sum things up, for a quick recap:

GL-AR300M16-Ext

  • pros: easier to use, handy firmware reset button, good manufacturer support, 2 builtin wifi NICs (for bridging)
  • cons: very small builtin storage with no expansion option

NanoPi R1

  • pros: unlimited storage option via swappable microSDs. 2x USB ports to connect more peripherals (i’ve tried with an USB audio card and an Arduino R3 and they both worked as expected). Mine came with a metallic case which seems to dissipate heat pretty well.
  • cons: harder to setup, official images are outdated, mostly no manufacturer support, only 1 builtin wifi NIC (a second one can be added via an USB port). GPIO pins not exposed.

UPDATE: more options to consider:

  • TP-Link TL-WR802N Nano Router N300 and TL-WR902AC Nano Router AC750
    • These also seems to be aimed at novice home users since they came with a simplified firmware. However they seem even more limited than the GL.iNet router, with no external storage and no USB ports.
  • Orange Pi Zero 3
    • more powerful SoC than the NanoPi R1 and similar price, but has only 1 Ethernet port and 1 USB port. Also has microHDMI output that the NanoPi lacks.
  • Raspberry Pi series
    • more pricey option with better community support. Unfortunately they come with a poor integrated wifi antenna and only 1 Ethernet port. More can be added via hats, which raises the cost even more. This is the only option with GPU acceleration on Linux, in case you need it.

This list was originally posted here on GBATemp by me.

This is an update including affected titles on other platforms.

The general problem:

The problem with gesture controls is that they are not accurate as digital buttons.
I think gesture controls are good for minigames or secondary actions, but for repetitive commands that requires precise timing they are not good!
I’ve also found gesture controls make your arms tire out faster than simple button presses.

Continue reading

Just a quick reference for those making infinite-something Game Genie codes for retro consoles.

General tools i use regularly:

  • ucon64 (Game Genie encoder/decoder, rom patcher, and more)
  • qalc (cmdline calculator)
  • Retroarch (decent GUI to look for memory addesses)

suggested emus with breakpoints and a debugger:

opcodes references:

common ASM opcode replacements:

  • Z80 (original guide):
    • 90, 91, 92, 93, 94, 95 -> 00 (DEC->NOP)
    • EA -> FA (LD reg2mem -> LD mem2reg)
  • 6502 (original list posted here):
    • CE -> AD (DEC->LDA)
      DE -> BD (DEC->LDA)
      C6 -> A5 (DEC->LDA)
      85 -> A5
      D6 -> B5
      95 -> B5
      8D -> AD
      9D -> BD (STA->LDA)
      DE -> BD
      91 -> B1
      99 -> BE
      EA (NOP)
  • m68K:
    • most used opcodes are 6002 and 6004 (= Branch 2 or 4 bytes).
    • to skip a single instruction, a single NOP= 4E71 will do.

general tricks:

  • to NOP multiple instructions, you can use an unconditional branch instruction, or, if near a “RET” (=routine return) you can just call RET before.

Some codes i’ve made can be found here.

P.N.: i am not taking cheat requests currently, so please do not ask in the comments.

I was looking for a ROM renamer for Linux, and unfortunately there aren’t many options:

Since i could not find any tool meeting my needs, i’ve ended up writing my own in Python: renfromdats.

I’ve also added some extra features not found in other similar tools:

  • support for SFVs in addition to datfiles;
  • rename support files (saves, shots, etc.) by matching the filenames from 2 datfiles;
  • by default output on stdout a shell script to perform the renames.

This is the current cmdline usage:

usage: renfromdats.py [-h] [-r] [--include-roms] [--partial-matches]
                      [--recurse]
                      src_dat dst_dat [romdir [romdir ...]]