Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
NES Dual Port RAM Interface (batslyadams.com)
249 points by jboggan on May 5, 2014 | hide | past | favorite | 23 comments


I'm reminded of ICU64 - an interactive debugger for C64 - as seen in this 2009 video:

http://www.youtube.com/watch?v=tjcvR5McmSg


That's fantastic.

I'd been thinking about modifying an emulator to do automatic speedrun splits based on changes in memory. Many of the people who'd most appreciate that kind of thing prefer to speedrun on original hardware, though, and a lot of them would be happy to pay for modifications like this - as many have, e.g., paid to have their 3DS modded with HDMI output.


I've had a similar project floating around in the back of my mind, except instead of reading the state off the emulator to determine when to split, the program watches the video stream and uses visual cues to determine when to split. As a simplistic example, consider the original mario game. When a runner would want to split, the game screen would display the text 1-1 with a black background roughly at the center area of the screen. With this information, I'm sure it wouldn't be too hard to determine when to split by scanning in the rough area for a picture similar to the what you would expect at this spot. I know that in practice this is possible to do since I have (just for fun) written a similar program for pokemon games when I wanted to EV train on an emulator. It would scan for the edge block of the tall grass (since all grass looks the same), and then turn around and scan for the edge again. When the screen went black, I knew I was entering a battle, so I was start scanning where the wild pokemon's name was and the program would be able to decide if I wanted to kill it or if I wanted to run (so I can keep count of the EVs I've gotten) The main issue with that program is that it couldn't tell shinies apart, so maybe over night I could have lost a shiny without ever knowing.

Anyway, long post short, I think it would be possible to monitor the live video and determine when to split based off information that can be stored in some kinda downloadable database (or some way to preset all the different required split information).


This is how kartlytics.com works for Mario Kart 64.

More info: http://www.joyent.com/blog/introducing-kartlytics-mario-kart...


That's a very cool idea, but its application seems limited to games with clear 'level' screens. Recently I've been watching speedruns of Ocarina of Time as well as Metroid Prime and neither of those have obvious indicators for most of the splits.


I agree that it would be more difficult for those kinds of games, but I think with a little bit of cleverness it can still be managed. Since it doesn't really matter where you split, but rather that you consistently split at the same spot, I think it can work by splitting on "You've got item!" text or other things like that. For instance, the first split of the Ocarina of Time escape could be split as soon as it displays part of the map for the zora river. The bottle split could be hit when you hold the bottle over your head, it could match part of the blue text box displayed over your hand since this exact spot on the screen would look the same for all N64 versions of the game. One of the key features of the auto split program would have to be that the image matching program wouldn't be so strict as to require pixel perfect matches, but also would be strict enough that it wouldn't pick up any false positives.


Sorry, what does "splitting" mean in this context?


It means stopping one recording and starting another, and defines the point in time that determines the duration of the run. It can be used to, say, automatically save the state as a checkpoint to return to after a mistake.


For segmented speedruns, you are correct, but more commonly what someone means when they say split is the speedrunner has a separate program running on his machine with a list of key points of progress in the game and the runner previous best times to that spot. When the speedrunner wants to race against his/herself, the speedrunner can start a split program with their previous record and play the game through. When a key point is reached, they press some button to denote that they reached this check point and the program will mark the time it took to reach it and tell you whether you are ahead or behind the previous record. Speedrunners use this to gauge whether they want to continue trying to beat the record or to restart and try again.


Woah, I was designing a system just like this for the Vectrex a while back. Great execution on this project -- love to see clever hardware hacks.


This is some awesome engineering, and an equally as awesome result. Does anybody know if the author is going to put these boards on sale or what he does with his designs?

I'd imagine from the look of the PCB (2 layer with no solder mask or silkscreen) that they're designed & printed with ExpressPCB - they look similar to a few I've done with them before.

This really makes me want to start tinkering with older gaming systems.


I don't know if anybody can confirm this but this site causes that firefox (firefox 29 arch linux) use up to 300% of cpu (according to top).

Weird. I noticed this when the cooler started to work. Minutes after start the machine in a cool day.


I don't know why so many down votes. I just happened to have a problem, made a comment to confirm If it was me.


I was wondering why my fans started spinning up yesterday, now I know. Firefox 29 on linux here, and indeed it does seem that page is doing something weird.


No problems here, but it does have several Adobe Flash embeds.


I have flashblock, and since this incident noscript.

This seems to be a problem related to Mozilla's javascript interpreter, since Chromium works fine (and worst do not affect other versions and platforms). It's not flash nor other embedded issue.

The problem do not block the ui just consume an insane amount of resources.


I'm using FireFox 29 on Solaris and don't see the CPU usage problem.


No problems with FF29 on Win7.


Thanks. Weird. I looked into the source (not a web developer) and I didn't see any suspicious. This confirms that it's probably my configuration.

Just to be sure. Chromium 34 works just fine.


This is some serious hacking, I love projects like these. Kudos for the live hex editor as well, this is a really cool debugging setup. Thanks for sharing!


[deleted]


HN _may not_ be the best place to ask for copyrighted NES/Famicom ROM files (i bet they aren't too hard to find though)

However, you might also be interested in checking out some "homebrew" NES ROM files that developers have put together. There are some pretty interesting games here:

- http://pdroms.de/files/nintendoentertainmentsystem/


And I thought I had a cool idea for a custom flash cart for a Game Gear. In addition to proving the ROM to the Game Gear, it would present some of its own memory-mapped registers on the bus to use as a debugging channel. This certainly blows that out of the water!


Needs a forth in that ram monitor, http://pygmy.utoh.org/3ins4th.html also composite out from the AVR could make a nice second debug screen.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: