Showing posts with label fix. Show all posts
Showing posts with label fix. Show all posts

Tuesday, October 13, 2015

Nintendo DS Lite case mod



Many years ago, I bought a white Nintendo DS Lite.  I loved the form factor, the look of it and the games I could play on it.  There were a lot of games for it, and for the GameBoy Advance which I already had which I'd love to play on it.

Over time, I've gotten a R4DS card so I could play homebrew (yeah, let's go with that) and use it as a kind of PDA type of thing. I also got an EZFlash V for the same reasons. For homebrew. Because that's still a thing, right?  (The screenshot above shows the R4DS interface, which I've re-skinned to like AmigaDOS 1.3 because that's something I do.

Anyway, at some point, I got a completely transparent shell for it, which was really neat for a while.  It was a pain to move the guts over to that shell, but it looked neat for a while.  Then The upper screen failed and the touch scanner failed on the bottom.  So I replaced those.  Then the right shoulder button failed, so I replaced that... which never really worked well, as the button broke off of the main board. There just wasn't enough structure there to support it.

Fast forward a few years, and I picked up a European black DS Lite in a trade for some old GBA stuff I didn't want anymore.  That one worked GREAT, except that the screen hinge was completely destroyed.  I used that for a while, but ended up shelving it.

For a while I've been meaning to take the best parts of all of this and put together one fully functional DS Lite.


I had planned to take the top screen from the black unit, but the ribbon cable broke while I was removing it from that unit.


What I ended up with was this:
  • Case enclosures - White
  • Top and shoulder buttons, switch cover plastics - Black
  • Upper Screen - White (replacement, colors aren't perfect on it, but it's good)
  • Lower Screen - Black
  • Motherboard - Black
  • Battery - Black
  • Wifi Antenna - Black (The cable was broken on the white one)
  • Rubber feet, screw covers - Black
  • Stylus - White (Black one is on order)
I think the final form here is pretty sharp.  Best of all, it's fully functional again! Yay!

Wednesday, November 5, 2014

Kindle 2 Repair



Again, from the recycle pile, I found something very nifty.  It was a broken Amazon Kindle 2 with 3G cell modem.  The screen was very messed up.  I attempted to charge it, which seemed to work.  I was able to connect it to my computer, and see the files on it, so I knew it was somewhat working.  A quick search on ebay showed a used, working eInk screen was $20.  I asked around on a few Kindle boards online about repairs, or getting Amazon to repair it, and the basic overall response was "just buy a new one".  That wasn't the point.


I eventually decided to drop the $20, order the screen, and take my chances that the main unit works and has decent battery life.  A few days later, I received what you see above.  I love how eInk displays hold their last image.  It's a pretty good sign that this one has a standard Kindle startup image showing on it.


Lots of screws holding this thing together.  After assembling and reassembling it a few times I got pretty fast at doing the whole procedure.  I wouldn't have been able to do it without resources like iFixit who provided teardown and disassembly procedures.


The battery removed from the left.  You can see, left to right, Battery bay, 3G sim card slot, cellular modem.  The orange bit at the top is the display screen ribbon connection.


The inside of the upper case, showing the orange flex cables for the side buttons and such.


Just for good measure, here's the entire board, removed from the casing.

That explains the bad screen display.

All in all, it took about an hour.  I had to disassemble and reassemble it a few times to get the display flex cable seated properly, but once it was, it all just worked.  Battery life is still excellent on it, the 3G service works great, and I've loaded it up with a bunch of books to read.


I hacked it a little to change the sleep display images but other than that, it's pretty stock.  Not bad for $20 and some manual labor!

I should note that about a week after I performed this operation, it suddenly decided that it would constantly press the "4" key for me.  Very nice of it, but not very convenient.  I disassembled it all again.  The keypad buttons all looked okay to me.  I even removed the '4' key from the main board to examine it, but it looked fine.  Something about that process, however, seemed to have fixed the problem.  It is currently working perfectly, and other than the battery dying on me, after 4 months of use, it has performed excellently.  :D

Monday, June 16, 2014

Lego Series 1: Benny's Spaceship

This is the first post of a new series of Lego-related posts.  I have a few things I've been designing that I think are neat, or in this case, are fixes for existing sets.

The Lego Movie came out last year, and it was AWESOME.  I bought 70816 "Benny's Spaceship, Spaceship, SPACESHIP", and had a great time building it.

After re-watching the film, I noticed a couple of differences between the model in the movie and the real-life one.  Let's start off this series by showing two of these differences in Benny's spaceship, as well as a very simple modification to fix one if them.

Behold, the completed spaceship, and it is awesome:


First, I'll point out something that cannot be fixed.  Here's a shot of the ship from the movie:


1.  The side intake

 

Right in the center of the above images, you can see a 61409 1x2 slope with 4 slots. I should note here that there are a few different versions/names of grays, including light blue-gray, dark gray etc, but for the sake of simplicity, I'll just use "light gray" and "dark gray" in this series.  The model in the movie (first image) shows this part in light gray, while the constructed model is dark gray.  This part is not available, nor has it ever been, in light gray.  So, sadly, we can't fix this one.

2.  Astro Kitty's bracket





If you look carefully in the above image of Benny's ship, you will notice that the area that holds Astro Kitty in place is different than the model.  I have fixed this and you can see the results in the above images.  The first one shows the version from the model, whereas the second one is film-accurate.

The parts for the storebought model: (left to right)
- 30375 dark gray robot torso
- 11476 light gray 1.2 with clip on horizontal side
- 11477 dark gray 2x1 curved slope (x2)

The parts for the film-accurate model: (left to right)
- 2555 light gray 1x1 with clip
- 30375 dark gray robot torso
- 30377 light gray robot arm (x2)
- 2540 dark gray 1x2 with handle on side
- 11477 blue 2x1 curved slope (x2)

Thursday, April 24, 2014

Fixing Pac-Man - Attract mode with less burn-in


One of the problems with Pac-Man, especially for home use, is that once a coin is dropped in, or you have it in Free Play mode, it will sit on the "Press Start" button screen forever, until all of the credits are depleated... which can take a long time, especially in Free Play mode. ;)

After being inspired by the ET bugfix project (a great read, btw), I decided to attempt to fix this myself. I should note that there are other versions of this fix on the net, and I have no idea if any of those are better or worse than mine.  Mine is a total of 30 bytes changed in the ROM.


My first thought is that it switches into the "Press Start" screen after it has some credits in it.  So the first thing to look for in the Ms. Pac-Man documented disassembly is the RAM location for number of credits in the machine.


At the top of the disassembly, are a bunch of RAM locations that have been decoded by contributors. As you can see, 0x4e6e contains the number of credits in the system.  Next thing to do is to search for "4e6e" in the file, and sooner or later, I figured I'd find the right location.  There's got to be a section of code that reads a value in from this, and compares it with 0 to determine if it should stay in attract mode or show the "Press Start" screen.  Sure enough...


Here we see a snippet of code.  This is in the main attract sequence.  This block of code above draws the number of credits on the screen (at 03fe), then checks the number of credits against zero (0401-0405).  If it's still 0, it goes to 0x0413, where it continues through the attract sequences.  Otherwise, it falls through, to some code (0407-0412) that advances the game mode to the dreaded "Press Start" screen that we want to eliminate.  Jackpot!

All that I need to do now, is to patch off of this code to my own routine.  The basic thought (which did work out) is that the only way that it will switch to the "Press Start" screen is if the user is pressing start.  Once it changes to that screen, the start button will still be pressed, and the game will just start.

This means that the only way that the code from 0407-0412 will get run here is if there is not zero credits AND a start button is being pressed.  On top of this, we don't want to run that code when the user is pressing 2P start unless there's at least 2 credits.



And that is the entire patch.  30 bytes of code.

The original code will check if there's credits in the machine.  If there are, it falls through to 0407, which is where my code takes over.

It simply jumps to some unused space in the ROM, starting at 0f3c.  "attStTest" checks to see if the user is pressing P1 or P2 start.  If they're not, we jump on over to 0413, as before, to continue with the attract sequence.  If they are pressing P2 start, it does the extra check in "credChk2" to make sure that there's at least 2 credits in the machine.  If there's not, it again will jump over to 0413.  Finally, we know that we can switch the game mode to the "Press Start" screen, where our button press will promptly get gobbled up, and the game will start.

The code in "startIt" should look a little familiar.  The first two opcodes are the opcodes we overwrote in 0407 where we jumped over here to this mess.  Then we jump back to "startItR" return location, and the original code resumes at 040b, performing the game mode switch.  For clarity, I could have dropped the remaining 4 opcodes which start at 040b in here, but I decided to save space and do it this way.

30 bytes different, and the game is the way it should be... especially if your friends come over to your basement arcade, and press the credit button 12 times, or you have it set on Free Play. ;)