After two hard weeks of decompiling, reverse engineering, graphing, and coding, I’m proud to announce PSXperia, a set of tools to extract, patch, and repack the Crash Bandicoot game that comes with all Xperia Play phones to use any PSX game (that you legally own). In addition to allowing you to play any property ripped PSX game, you can also set a custom icon and the game will show up in the phone’s Playstation Pocket app, so you can quickly access it when you flip the gamepad out. I’ve converted and tested 8 games with this tool and they all run flawlessly, but if things don’t work out so smoothly for you, submit your issues to GitHub. Continue reading
This was a quick one hour project. I took ASCIIMan, and chopped up and rearranged the code to be a Pong game. Introducing JoshPong, less of a Pong game, more of a demo of the ASCIIMan engine, and Josh library. I know there’s a big bug in Josh that prevents loading the native DLL, so make sure you read the temporary work-around posted on the download page.
For my final project in my Computer Science class, I decided to write a game in Windows Console, in Java. It’s hard to appreciate how hard this was unless you REALLY know Java and you REALLY know Windows SDK. I basically wrote a entire game engine complete with collision detection, physics, etc from scratch in Java. I used almost every obscure Java knowledge I have including reflections, JNI, enums, and thread handling. It is really less of a game and more of a technology demo because I can’t design anything. I hope someone else can write a better level (I made it very extendable), and fix collisions (those are the only major “bugs”, otherwise, it’s a fully playable game). Again, this is one of those things where people who don’t know alot about Java won’t think it’s a big accomplishment, but those who do will bow down to this wonderful code. /ego trip
P.S: I updated Josh again, I converted the whole project to NetBeans, my new found love.
If you don’t know, Josh is a Java wrapper for native console functions on Windows (like change text color and stuff). I’m almost done recoding the whole thing. Meanwhile, I uploaded the new JavaDoc for Josh up as a sneak peek. http://www.yifanlu.com/joshdoc/
After a good night’s sleep, I “fixed up” TweetBot. No, the code is still junk, but I made it a bit better. New features:
-Doesn’t crash if no geolocation is found
-Multiple commands separated by period.
-Removed debug logging (it showed things down a bit)
-Commands that begin with “set” ignores the word “set”, this way your sentences can flow better.
Some new commands:
Set a shout
Status is “I’m shopping”
Update Twitter, facebook, or both
Show twitter and facebook
Search around me for “best buy”. Set status to “buying a new computer”. Show twitter & facebook. Checkin to result 0.
Remember, you can always throw in extra words outside of quotes. Only the first word, quotes, and (if no quotes), the last word are read.
Ok, so I THOUGHT this was going to be a quick one hour project. I want to update foursquare from Twitter because my cell phone plan ONLY allows access to Twitter and MS Exchange (why, I don’t know). The goal was to write a application that sits in the background and waits for “command” tweets. My original plan was to do it in C++, however, networking & sockets in C++ is too complicated for such a small project, plus no good libraries are available for Twitter in C++. Ok, so I moved to Python. It has great networking tools right? Plus a wonderful Twitter API library. I was halfway through when I found that Foursquare support was crappy. Finally, I went to the language I hate the most. Java. Also, note that I’ve been messing around for hours now. Fuck. So I quickly wrote this in Java, tired and angry. The result is the worst code I ever written. I am the only person who would ever make use of this, so I didn’t care. I’m only releasing it for archival purposes, for some laughs to random strangers, and as an example of what you should NOT do. It’s a great example of “it compiles, ship it”.
So, the only features are: search foursquare, checkin to foursquare, and greet the user. To use it, you need to set up two twitter accounts, one for the client (you will tweet commands from here) and one for the server (the server will use this account to tweet). Make the client follow the server and the server follow the client. Make sure your twitter client supports geotags. If your tweet doesn’t have a geotag, the listener will crash. (I know, stupid)
Again, you MUST have a geotag with every tweet.
To search, tweet:
Search for “restaurant”
Note: You MUST put the quotes for the search to work. For all commands, the server only reads “key” words. That’s the first word and any word in quotes. You can type in
Search for some shitty “restaurant” up in this bitch
and it’ll work just fine. For search, if you don’t have any words in quotes, then you’ll just get a list of 10 closest venues.
Now, the server will return top ten results near you, in two tweets (a random character appearing at the end of server tweets is not a bug, I did that because Twitter rejects any two tweets that are identical).
0: Random Chinese Restaurant
1: Some Mexican Restaurant
2: Another Crappy Restaurant
and so on, to check in to “Another Crappy Restaurant”, tweet
If you know the name of the venue, you don’t have to search, you can just tweet.
Checkin to “another crappy restaurant”
That’s basically it.
Now, about the spaghetti code, here’s some of the things I used: depreciated methods, tons of try-catch just to bypass errors (no actual error handling), bad variable name and no documentation, bad code flow, usage of Runtime.getRuntime().exec() to call cURL because I was too lazy to write a proper HTTP controller which is a security and stability issue, use of reflections with data across the internet, and so much more. My hope is that someone will take it and fix it up or something, because I’m too tired to do anything about it.