Homebrew SNES9x for Old 3DS

Taffy

jdfiehgvrhfvhfjkvgrjhfejvgrjkbjvr
Member
Joined
Mar 3, 2017
Messages
621
Trophies
0
Age
21
Location
Student
XP
1,130
Country
United States
Could implementing slow motion be a possibility? For us new3DS users, it would be nice to have the ability to do that with the ZR and/or ZL buttons.
 

chaoticdaos

Member
Newcomer
Joined
May 17, 2014
Messages
24
Trophies
0
Age
36
XP
578
Country
United States
How does one place multi-part cheats? I can see the CHT list but I clearly have not closed each individual cheat properly.
Why do CHX's freeze up the system even the Gradius one you provide.
I use Luma3ds 6.6 snes9x 1.10
 
Last edited by chaoticdaos,

DonJav

Active Member
Newcomer
Joined
Sep 23, 2016
Messages
40
Trophies
0
Age
45
XP
584
Country
Has anybody managed to get super Mario kart working properly with this? I have the issues where it doesn't collecte any items.
 

Taffy

jdfiehgvrhfvhfjkvgrjhfejvgrjkbjvr
Member
Joined
Mar 3, 2017
Messages
621
Trophies
0
Age
21
Location
Student
XP
1,130
Country
United States
Mario Kart should work fine. Are you sure you have a good dump?

DSP-1 is properly emulated as far as I know so there shouldn't be any problems with it.
 
Last edited by Taffy,
  • Like
Reactions: DonJav

DonJav

Active Member
Newcomer
Joined
Sep 23, 2016
Messages
40
Trophies
0
Age
45
XP
584
Country
Mario Kart should work fine. Are you sure you have a good dump?

DSP-1 is properly emulated as far as I know so there shouldn't be any problems with it.

You were right, I changed the rom and it's working as it should. Thanks mate.
 

NuikopeaDemon

Hello Darkness
Member
Joined
Sep 3, 2015
Messages
683
Trophies
0
Age
31
Location
Hastings
Website
www.facebook.com
XP
485
Country
New Zealand
Idk why but for some reason the icon file doesn't load on my 3ds

LIKE it will have this

14913000948421045638155.jpg
 

FateForWindows

Well-Known Member
Member
Joined
Feb 8, 2017
Messages
1,125
Trophies
0
Age
26
XP
1,778
Country
United States
Couldn't compile, here's the log:
Code:
$ make
3dsmain.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/3dsstuff/snes9x_3ds/build/3dsmain.d -g -w -O3 -mword-relocations -finline-limit=20000 -fomit-frame-pointer -ffunction-sections -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft -I/c/3dsstuff/snes9x_3ds/include -I/C/devkitPro/libctru/include -I/c/3dsstuff/snes9x_3ds/build -I/c/3dsstuff/snes9x_3ds/source -I/c/3dsstuff/snes9x_3ds/source/unzip  -DARM11 -D_3DS -DLIBCTRU_1_0_0 -fno-rtti -fno-exceptions -std=gnu++11 -c /c/3dsstuff/snes9x_3ds/source/3dsmain.cpp -o 3dsmain.o
In file included from c:/devkitPro/libctru/include/sys/select.h:3:0,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\sys\types.h:68,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\stdio.h:61,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\c++\6.3.0\cstdio:42,
                 from c:/3dsstuff/snes9x_3ds/source/3dsmain.cpp:2:
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:104:34: error: 'u_int' has not been declared
 bintime_mul(struct bintime *_bt, u_int _x)
                                  ^~~~~
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:145:17: error: 'sbintime_getsec' declared as an 'inline' variable
 sbintime_getsec(sbintime_t _sbt)
                 ^~~~~~~~~~
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:145:17: error: 'sbintime_t' was not declared in this scope
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:151:17: error: 'sbintime_t' does not name a type
 static __inline sbintime_t
                 ^~~~~~~~~~
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:159:9: error: 'sbttobt' declared as an 'inline' variable
 sbttobt(sbintime_t _sbt)
         ^~~~~~~~~~
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:159:9: error: 'sbintime_t' was not declared in this scope
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:160:1: error: expected ',' or ';' before '{' token
 {
 ^
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:218:9: error: 'sbttots' declared as an 'inline' variable
 sbttots(sbintime_t _sbt)
         ^~~~~~~~~~
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:218:9: error: 'sbintime_t' was not declared in this scope
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:219:1: error: expected ',' or ';' before '{' token
 {
 ^
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:227:17: error: 'sbintime_t' does not name a type
 static __inline sbintime_t
                 ^~~~~~~~~~
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:236:9: error: 'sbttotv' declared as an 'inline' variable
 sbttotv(sbintime_t _sbt)
         ^~~~~~~~~~
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:236:9: error: 'sbintime_t' was not declared in this scope
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:237:1: error: expected ',' or ';' before '{' token
 {
 ^
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:245:17: error: 'sbintime_t' does not name a type
 static __inline sbintime_t
                 ^~~~~~~~~~
In file included from c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:268:0,
                 from c:/devkitPro/libctru/include/sys/select.h:3,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\sys\types.h:68,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\stdio.h:61,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\c++\6.3.0\cstdio:42,
                 from c:/3dsstuff/snes9x_3ds/source/3dsmain.cpp:2:
c:\devkitpro\devkitarm\arm-none-eabi\include\time.h:56:1: error: 'clock_t' does not name a type
 clock_t    _EXFUN(clock,    (void));
 ^~~~~~~
In file included from c:\devkitpro\devkitarm\arm-none-eabi\include\sys\types.h:68:0,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\stdio.h:61,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\c++\6.3.0\cstdio:42,
                 from c:/3dsstuff/snes9x_3ds/source/3dsmain.cpp:2:
c:/devkitPro/libctru/include/sys/select.h:9:23: error: 'fd_set' has not been declared
  int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
                       ^~~~~~
c:/devkitPro/libctru/include/sys/select.h:9:40: error: 'fd_set' has not been declared
  int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
                                        ^~~~~~
c:/devkitPro/libctru/include/sys/select.h:9:58: error: 'fd_set' has not been declared
  int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
                                                          ^~~~~~
In file included from c:/3dsstuff/snes9x_3ds/source/3dsmain.cpp:5:0:
c:\devkitpro\devkitarm\arm-none-eabi\include\c++\6.3.0\ctime:64:11: error: '::clock' has not been declared
   using ::clock;
           ^~~~~
In file included from c:/3dsstuff/snes9x_3ds/source/3dsmain.cpp:32:0:
c:/3dsstuff/snes9x_3ds/source/3dsfiles.h:36:13: error: 'string' is not a member of 'std'
 std::vector<std::string> file3dsGetFiles(char *extensions, int maxFiles);
             ^~~
c:/3dsstuff/snes9x_3ds/source/3dsfiles.h:36:13: error: 'string' is not a member of 'std'
c:/3dsstuff/snes9x_3ds/source/3dsfiles.h:36:24: error: template argument 1 is invalid
 std::vector<std::string> file3dsGetFiles(char *extensions, int maxFiles);
                        ^
c:/3dsstuff/snes9x_3ds/source/3dsfiles.h:36:24: error: template argument 2 is invalid
c:/3dsstuff/snes9x_3ds/source/3dsmain.cpp: In function 'void fileGetAllFiles()':
c:/3dsstuff/snes9x_3ds/source/3dsmain.cpp:595:53: error: conversion from 'int' to non-scalar type 'std::vector<std::__cxx11::basic_string<char> >' requested
     std::vector<std::string> files = file3dsGetFiles("smc,sfc,fig", 1000);
                                      ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
make[1]: *** [3dsmain.o] Error 1
make: *** [build] Error 2
 

RocketRobz

Stylish TWiLight Hero
Developer
Joined
Oct 1, 2010
Messages
16,648
Trophies
3
Age
24
XP
21,115
Country
United States
Couldn't compile, here's the log:
Code:
$ make
3dsmain.cpp
arm-none-eabi-g++ -MMD -MP -MF /c/3dsstuff/snes9x_3ds/build/3dsmain.d -g -w -O3 -mword-relocations -finline-limit=20000 -fomit-frame-pointer -ffunction-sections -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft -I/c/3dsstuff/snes9x_3ds/include -I/C/devkitPro/libctru/include -I/c/3dsstuff/snes9x_3ds/build -I/c/3dsstuff/snes9x_3ds/source -I/c/3dsstuff/snes9x_3ds/source/unzip  -DARM11 -D_3DS -DLIBCTRU_1_0_0 -fno-rtti -fno-exceptions -std=gnu++11 -c /c/3dsstuff/snes9x_3ds/source/3dsmain.cpp -o 3dsmain.o
In file included from c:/devkitPro/libctru/include/sys/select.h:3:0,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\sys\types.h:68,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\stdio.h:61,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\c++\6.3.0\cstdio:42,
                 from c:/3dsstuff/snes9x_3ds/source/3dsmain.cpp:2:
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:104:34: error: 'u_int' has not been declared
 bintime_mul(struct bintime *_bt, u_int _x)
                                  ^~~~~
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:145:17: error: 'sbintime_getsec' declared as an 'inline' variable
 sbintime_getsec(sbintime_t _sbt)
                 ^~~~~~~~~~
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:145:17: error: 'sbintime_t' was not declared in this scope
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:151:17: error: 'sbintime_t' does not name a type
 static __inline sbintime_t
                 ^~~~~~~~~~
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:159:9: error: 'sbttobt' declared as an 'inline' variable
 sbttobt(sbintime_t _sbt)
         ^~~~~~~~~~
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:159:9: error: 'sbintime_t' was not declared in this scope
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:160:1: error: expected ',' or ';' before '{' token
 {
 ^
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:218:9: error: 'sbttots' declared as an 'inline' variable
 sbttots(sbintime_t _sbt)
         ^~~~~~~~~~
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:218:9: error: 'sbintime_t' was not declared in this scope
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:219:1: error: expected ',' or ';' before '{' token
 {
 ^
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:227:17: error: 'sbintime_t' does not name a type
 static __inline sbintime_t
                 ^~~~~~~~~~
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:236:9: error: 'sbttotv' declared as an 'inline' variable
 sbttotv(sbintime_t _sbt)
         ^~~~~~~~~~
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:236:9: error: 'sbintime_t' was not declared in this scope
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:237:1: error: expected ',' or ';' before '{' token
 {
 ^
c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:245:17: error: 'sbintime_t' does not name a type
 static __inline sbintime_t
                 ^~~~~~~~~~
In file included from c:\devkitpro\devkitarm\arm-none-eabi\include\sys\time.h:268:0,
                 from c:/devkitPro/libctru/include/sys/select.h:3,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\sys\types.h:68,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\stdio.h:61,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\c++\6.3.0\cstdio:42,
                 from c:/3dsstuff/snes9x_3ds/source/3dsmain.cpp:2:
c:\devkitpro\devkitarm\arm-none-eabi\include\time.h:56:1: error: 'clock_t' does not name a type
 clock_t    _EXFUN(clock,    (void));
 ^~~~~~~
In file included from c:\devkitpro\devkitarm\arm-none-eabi\include\sys\types.h:68:0,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\stdio.h:61,
                 from c:\devkitpro\devkitarm\arm-none-eabi\include\c++\6.3.0\cstdio:42,
                 from c:/3dsstuff/snes9x_3ds/source/3dsmain.cpp:2:
c:/devkitPro/libctru/include/sys/select.h:9:23: error: 'fd_set' has not been declared
  int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
                       ^~~~~~
c:/devkitPro/libctru/include/sys/select.h:9:40: error: 'fd_set' has not been declared
  int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
                                        ^~~~~~
c:/devkitPro/libctru/include/sys/select.h:9:58: error: 'fd_set' has not been declared
  int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
                                                          ^~~~~~
In file included from c:/3dsstuff/snes9x_3ds/source/3dsmain.cpp:5:0:
c:\devkitpro\devkitarm\arm-none-eabi\include\c++\6.3.0\ctime:64:11: error: '::clock' has not been declared
   using ::clock;
           ^~~~~
In file included from c:/3dsstuff/snes9x_3ds/source/3dsmain.cpp:32:0:
c:/3dsstuff/snes9x_3ds/source/3dsfiles.h:36:13: error: 'string' is not a member of 'std'
 std::vector<std::string> file3dsGetFiles(char *extensions, int maxFiles);
             ^~~
c:/3dsstuff/snes9x_3ds/source/3dsfiles.h:36:13: error: 'string' is not a member of 'std'
c:/3dsstuff/snes9x_3ds/source/3dsfiles.h:36:24: error: template argument 1 is invalid
 std::vector<std::string> file3dsGetFiles(char *extensions, int maxFiles);
                        ^
c:/3dsstuff/snes9x_3ds/source/3dsfiles.h:36:24: error: template argument 2 is invalid
c:/3dsstuff/snes9x_3ds/source/3dsmain.cpp: In function 'void fileGetAllFiles()':
c:/3dsstuff/snes9x_3ds/source/3dsmain.cpp:595:53: error: conversion from 'int' to non-scalar type 'std::vector<std::__cxx11::basic_string<char> >' requested
     std::vector<std::string> files = file3dsGetFiles("smc,sfc,fig", 1000);
                                      ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
make[1]: *** [3dsmain.o] Error 1
make: *** [build] Error 2
Try using devkitPro r45 with libnds 1.0.0.
 

naaiil

Active Member
Newcomer
Joined
Mar 21, 2016
Messages
40
Trophies
0
Age
31
XP
1,381
Country
Indonesia
how to create chx file with two lines code? in readme file, the example only for one lines code.

Sent from my Mi-4c using Tapatalk
 

bubble2k16

Well-Known Member
OP
Member
Joined
Jul 25, 2016
Messages
467
Trophies
0
XP
2,118
Country
Senegal
how to create chx file with two lines code? in readme file, the example only for one lines code.

Sent from my Mi-4c using Tapatalk

You should write 2 lines with a slightly different description.

For example:

Y,ABCD-EF01,Infinite Lives A
Y,ABCD-EF02,Infinite Lives B

When in-game, you will have to manually enable or disable both together.

--------------------- MERGED ---------------------------

Idk why but for some reason the icon file doesn't load on my 3ds

LIKE it will have this

You can try to see if this works:
 

Attachments

  • snes9x_3ds.smdh.zip
    2.4 KB · Views: 113
  • Like
Reactions: NuikopeaDemon

naaiil

Active Member
Newcomer
Joined
Mar 21, 2016
Messages
40
Trophies
0
Age
31
XP
1,381
Country
Indonesia
You should write 2 lines with a slightly different description.

For example:

Y,ABCD-EF01,Infinite Lives A
Y,ABCD-EF02,Infinite Lives B

When in-game, you will have to manually enable or disable both together.

--------------------- MERGED ---------------------------



You can try to see if this works:
thanks, i will try it [emoji1]
 

bubble2k16

Well-Known Member
OP
Member
Joined
Jul 25, 2016
Messages
467
Trophies
0
XP
2,118
Country
Senegal
Hmm, couldn't compile on the latest installation through devkitPro without changing a few things. @bubble2k16 , have you thought about updating to the latest stuff, and possibly using something like citro3D instead of the deprecated GPU functions?

Not really :) I tried moving over to libctru 1.2.0 earlier with another fellow contributor's help, but somehow there was a bug in libctru 1.2.0 that caused the New 3DS to run the emulator at Old 3DS's speeds. Not sure if this was fixed in libctru 1.2.1, but I haven't got too much time to test that.
 

DiscostewSM

Well-Known Member
Member
Joined
Feb 10, 2009
Messages
5,484
Trophies
2
Location
Sacramento, California
Website
lazerlight.x10.mx
XP
5,505
Country
United States
Not really :) I tried moving over to libctru 1.2.0 earlier with another fellow contributor's help, but somehow there was a bug in libctru 1.2.0 that caused the New 3DS to run the emulator at Old 3DS's speeds. Not sure if this was fixed in libctru 1.2.1, but I haven't got too much time to test that.
Well, I can say that after compiling with 1.2.1 (with a few changes to fix errors), it seems to run at new3DS speeds on my new3DS. Nothing too extravagant. Just adding a line for including <string> in one section, then commenting out sections related to the LIBCTRU_1_0_0 define. I didn't need to dive into ctrulib to fix the speeds.

Edit:

I was trying the 3dsx version through HBL, and it turned out to be running at o3DS speeds. The cia version, however, ran at n3DS speeds. There is an issue though. When pushing the power button after the emulator is loaded, it attempts to show the "Software closed" screen, but it crashes with an error, and restarts the system.
 
Last edited by DiscostewSM,

bubble2k16

Well-Known Member
OP
Member
Joined
Jul 25, 2016
Messages
467
Trophies
0
XP
2,118
Country
Senegal
Well, I can say that after compiling with 1.2.1 (with a few changes to fix errors), it seems to run at new3DS speeds on my new3DS. Nothing too extravagant. Just adding a line for including <string> in one section, then commenting out sections related to the LIBCTRU_1_0_0 define. I didn't need to dive into ctrulib to fix the speeds.

Edit:

I was trying the 3dsx version through HBL, and it turned out to be running at o3DS speeds. The cia version, however, ran at n3DS speeds. There is an issue though. When pushing the power button after the emulator is loaded, it attempts to show the "Software closed" screen, but it crashes with an error, and restarts the system.

Yup I had that problem. So until that's fixed, I'll stick to libctru v1.0.0. :) I wonder if the Retroarch team figured out a solution.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
  • Quincy @ Quincy:
    Usually when such a big title leaks the Temp will be the first to report about it (going off of historical reports here, Pokemon SV being the latest one I can recall seeing pop up here)
  • K3Nv2 @ K3Nv2:
    I still like how a freaking mp3 file hacks webos all that security defeated by text yet again
  • BigOnYa @ BigOnYa:
    They have simulators for everything nowdays, cray cray. How about a sim that shows you playing the Switch.
  • K3Nv2 @ K3Nv2:
    That's called yuzu
    +1
  • BigOnYa @ BigOnYa:
    I want a 120hz 4k tv but crazy how more expensive the 120hz over the 60hz are. Or even more crazy is the price of 8k's.
  • K3Nv2 @ K3Nv2:
    No real point since movies are 30fps
  • BigOnYa @ BigOnYa:
    Not a big movie buff, more of a gamer tbh. And Series X is 120hz 8k ready, but yea only 120hz 4k games out right now, but thinking of in the future.
  • K3Nv2 @ K3Nv2:
    Mostly why you never see TV manufacturers going post 60hz
  • BigOnYa @ BigOnYa:
    I only watch tv when i goto bed, it puts me to sleep, and I have a nas drive filled w my fav shows so i can watch them in order, commercial free. I usually watch Married w Children, or South Park
  • K3Nv2 @ K3Nv2:
    Stremio ruined my need for nas
  • BigOnYa @ BigOnYa:
    I stream from Nas to firestick, one on every tv, and use Kodi. I'm happy w it, plays everything. (I pirate/torrent shows/movies on pc, and put on nas)
  • K3Nv2 @ K3Nv2:
    Kodi repost are still pretty popular
  • BigOnYa @ BigOnYa:
    What the hell is Kodi reposts? what do you mean, or "Wut?" -xdqwerty
  • K3Nv2 @ K3Nv2:
    Google them basically web crawlers to movie sites
  • BigOnYa @ BigOnYa:
    oh you mean the 3rd party apps on Kodi, yea i know what you mean, yea there are still a few cool ones, in fact watched the new planet of the apes movie other night w wifey thru one, was good pic surprisingly, not a cam
  • BigOnYa @ BigOnYa:
    Damn, only $2.06 and free shipping. Gotta cost more for them to ship than $2.06
    +1
  • BigOnYa @ BigOnYa:
    I got my Dad a firestick for Xmas and showed him those 3rd party sites on Kodi, he loves it, all he watches anymore. He said he has got 3 letters from AT&T already about pirating, but he says f them, let them shut my internet off (He wants out of his AT&T contract anyways)
  • K3Nv2 @ K3Nv2:
    That's where stremio comes to play never got a letter about it
  • BigOnYa @ BigOnYa:
    I just use a VPN, even give him my login and password so can use it also, and he refuses, he's funny.
  • BigOnYa @ BigOnYa:
    I had to find and get him an old style flip phone even without text, cause thats what he wanted. No text, no internet, only phone calls. Old, old school.
  • Psionic Roshambo @ Psionic Roshambo:
    @BigOnYa, Lol I bought a new USB card reader thing on AliExpress last month for I think like 87 cents. Free shipping from China... It arrived it works and honestly I don't understand how it was so cheap.
    +1
    Psionic Roshambo @ Psionic Roshambo: @BigOnYa, Lol I bought a new USB card reader thing on AliExpress last month for I think like 87... +1