dump_addr() {
  if [[ "$action" == DUMP ]]; then

    for (( i=0; i<${#regions[@]}; i++)); do
      BASE="${regions[$i]}"
      OFFS="${data[OFFS]}"
      ADDR="";printf -v ADDR "0x%X\n" $(( BASE + OFFS)) &>/dev/null; ADDR=$(echo "$ADDR" | tr '[A-Z]' '[a-z]')
      VAL=$(sudo scanmem -p `pidof retroarch` -c"dump $ADDR 1;exit" 2>&1 | awk 'NR==15' | awk -F' ' '{print $2}')

      debug "dumpAddr(): $ADDR - VAL: $VAL"
      calc_credits 1

      if [[ "$VAL" == "$credits_str" ]]; then
        LASTVAL="$credits_str"
        printf -v credits_str '%02d' "$(( credits+1 ))" &>/dev/null
        sudo scanmem -p `pidof retroarch` -c"write i16 $ADDR $credits_str;exit" &>/dev/null && sleep 0.5
        VAL=$(sudo scanmem -p `pidof retroarch` -c"dump $ADDR 1;exit" 2>&1 | awk 'NR==15' | awk -F' ' '{print $2}')

        calc_credits 1 && sleep 0.5
        sudo scanmem -p `pidof retroarch` -c"write i16 $ADDR $credits_str;exit" &>/dev/null

        if [[ ! $VAL == $LASTVAL ]]; then
            coin_addr="$ADDR"
            identified=1 && break
        fi
      fi
    done
  elif [[ "$action" == SCAN ]]; then
    local match_len=$(cat "$file_matchlist" | wc -l)

    for ((i=1; i<=$match_len; i++)); do
      local line=$(awk -v line="$i" 'NR==line {print $0}' "$file_matchlist")
      local ADDR=$(echo $line | awk '{print "0x"$2}')

      VAL=$(sudo scanmem -p `pidof retroarch` -c"dump $ADDR 1;exit" 2>&1 | awk 'NR==15' | awk -F' ' '{print $2}')
      calc_credits 1
      debug "Match $i addr: $ADDR"

      if [[ "$VAL" == "$credits_str" ]]; then
        LASTVAL="$VAL"
        sudo scanmem -p `pidof retroarch` -c"write i8 $ADDR 0;exit" &>/dev/null && sleep 0.5
        VAL=$(sudo scanmem -p `pidof retroarch` -c"dump $ADDR 1;exit" 2>&1 | awk 'NR==15' | awk -F' ' '{print $2}')

        if [[ ! $VAL == $LASTVAL ]] && [[ $VAL == 00 ]]; then
          debug "IDENTIFIED: $ADDR"

          sudo cp -f "$game_table" "$game_table.bak"
          [[ $game_listed -gt 0 ]] && sudo sed -i "/$game/d" "$game_table"

          echo "$line" | \
            awk -v name="$game" '{
              a=$4;b=$3;c=$5;d=$6;
              $1=$2=$3=$4=$5=$6="";
              pos=index($0, $7);
              e=substr($0, pos,length($0))
              print name"   0x"a"\t"b"\t"c"\t"d"   "e
            }' \
          | sudo tee -a "$game_table"

          cat "$game_table" | sort | sudo tee "$game_table"

          coin_addr="$ADDR"
          sleep 5 # REM
          identified=1 && break
        fi
      fi
    done
  fi
}
