Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Yes, just hacking nights and weekends. I've done my fair share of console reverse engineering, developing software for console devices (mostly GBA and NDS development, but a fair bit of SMS and Genesis reverse engineering), etc, and it's seriously some of the most fun I've had as a developer. But it takes an enormous amount of tenacity to push through the inevitable challenges.


This 1000X ! I'm currently working on emulating the Apple 2+ speaker better. It's been a 2-3 spare time hours a week for about a year now :-)

But the joy of working on a machine that's part of your life, without the need to please end users (which is cool too but sometimes induce pressure), well, that's basically coding like when I was a kid. Except that now I have a TON more knowledge to work with !

And, while working on disk emulation I had the pleasure ot discover those many copy protections that "prevented" me to get many games :-)


Absolutely.

And the other thing I love about it is the communities are typically super open and collaborative. I remember back when I first got into GBA development, there was a ton of docs, tools, libraries, and other things that folks had put together and then shared with one another. It's a lot of very passionate people sharing some very niche interests, which can be incredibly fun (of course it can also be a drama filled nightmare but such is life with passionate people).


To this day I consider TONC (https://www.coranac.com/tonc/text/) to be the greatest software project I have ever worked with. It touches everything you need to develop games for the GBA. The documentation is awesome on many levels. The book is great. I am just thankful that I found it when I was younger as that introduced me to a whole lot of critical knowledge.


Agreed 1000%. The issue I have is that its a bit of a shame that we don't have current fun platforms apart maybe from embedded (current gpus are closed, cpu and memory are often not a challenge if you are just a little, unless you use it for huge projects). Or am I mussing something ?


how do you guys find the energy to hack nights and weekends? I do enjoy hobby programming but it takes me at least one week of vacation to detox from the work grind so I end up doing it only when I have extended vacation


> how do you guys find the energy to hack nights and weekends? I do enjoy hobby programming but it takes me at least one week of vacation to detox from the work grind so I end up doing it only when I have extended vacation

Namely passion, curiosity and probably not having much more other hobbies beside programming or hacking stuff around.

I recently went to try to improve a Linux kernel input device driver for a USB headphone: adding unit tests (whose execution is nearly instant). I have learned a ton of things about Linux development, C (I don't know C at all), input devices driver system (hid), the USB protocol and my device specifications.

I have never managed to boot it live to test with my actual device. That is despite spending probably despite spending probably 40 hours including a 10pm - 4am session on a Saturday night. But I had lot of fun doing it and I think that was the point.

I guess you can't beat passion and curiosity.


Working with code day to day has almost fostered in me a sense of contempt for computers. In high school/college, I spent a lot of free time doing rom hacks, etc. I just can't now. Now my tech hobbies lay more around arcade repair/modding. Knowing what I know now, I wish I could muster up the energy to combine the two and work on projects similar to UMK3+ [0], but I just don't feel like sitting in front of a debugger all evening after coding all day at work :|

I guess in my case, I had to find a hobby that was not exactly like work, even if it was work-adjacent.

0 - https://mkombat.plus/


Honestly I agree with this.

When I was more junior, or not doing programming as a full time job, I was more motivated to work on personal projects. Now I am more senior and programming/managing people full time, I can't get motivated to work on code-related projects in my downtime. It sucks :/


I’m in a senior position and most of my time goes to architecting and design work. I barely get to code at my day job.

I just use my free time to code. I see it as a relaxing activity


Same, I never code personally as much as when I'm in a management position. When coding during the day (which I like very much), I have less side projects or they tend to languish.


Honestly, it happens when I get some weird idea in my head that I can't stop thinking about, and a sort of mania takes over and gives me the energy and drive to work on it for hours on end.


Ditto, that kind of mania is a force to be reckoned with. On one hand you get insane productivity and momentum from it and on the other hand can cause you to momentarily neglect some responsibilities. I have a love/hate relationship with that side of mine.


That's about the only time I can do honest work programming. It makes me avoid doing programming tasks at work and try to find more writing-related stuff ...


It helps when the end goal is really well defined like a software emulator. Nearly everything that could slow you down is a known quantity. Conversely, the unknowns, like how to implement native hardware API X on non-native non-accelerated platform Y, are naturally where community emulators are weakest.


(not that you should take advice from random strangers on the internet, but) that sounds like classic ADHD hyperfocus to me. Giving a name to it might help in figuring out how to maximize its benefit.


I experience the same hyperfocus, but I don't have ADHD, I'm quite the opposite really. My background is design and when I was a child I could easily 'get lost' in various forms of art etc for hours. I've met plenty people over the years that are the same, so I'd argue it might be something more aligned with some creative and analytical thought process, and a drive etc to understand/solve the problem at hand.

In terms of where to find the time, there are 24 hours in the day, at least 8 for working the 9-5.


There are three types of ADD[1]. That which you describe here sounds a lot like the "Inattentive" type.

[1] https://www.healthline.com/health/adhd/three-types-adhd


I've learned something new, thank you!


I don’t code all that much at work. Personal projects and open source work are my opportunity to make things I want.


I have spurts of this, occasionally I’ll spend a month of evenings/weekend time doing a project. It’s usually when work isn’t scratching the right sort of itch, so I scratch it elsewhere.

Personal projects are often embedded coding of some sort, though I spent some time poking at the PS3 firmware when that was first cracked too.

Spending months reversing and emulating a console… that takes dedication I don’t have though. I guess these guys are really itchy? Or it’s in a really hard to reach spot?


The key for me is that it has to be 100% fun. As soon as I start thinking about external recognition or trying to make money off of a personal project I lose motivation. Right now despite coding all day at work I still have the energy for coding on my own time on a NES emulator just because it's really fun.


in addition to what the others have said, I go home every day at 5 pm, no crunch or grind, no work calls outside of working hours. (luckily I live somewhere where that is guaranteed by law).

I think keeping a schedule that way has prevented me from every souring on programming in my free time.


where do you start learning reverse engineering things? I'm also curious, as a software eng focusing on web stuff and api, it's getting quite boring.

These things excites me but i never got to start


I've made a lot (50+) of videos on Reverse Engineering, with a heavy focus on ARM assembly as well as mobile platforms.

youtube.com/@lauriewired

Self-promotion I know, but I hope someone finds it useful


This is a good place to start. Named "the ultimate game boy talk" dives into the CPU used, the instruction set(s) used by the CPU, how the video instruction sets work(ed) etc. The game boy from 1989 is a pretty simple device to start learning from. From there you can look at how various people emulated the system.

https://www.youtube.com/watch?v=HyzD8pNlpwI


I second this. I also have a web background, and last year I started with this video, and the Gameboy is a great place to start with this sort of thing.

Start making a game, and you'll soon realise how the CPU works, and making a simple emulator will start to seem very possible.


If you're specifically interested in reverse engineering for ARM-based systems (32 and 64 bit), this book is a pretty good introduction:

"Blue Fox: Arm Assembly Internals and Reverse Engineering" by Maria Markstedter

https://www.wiley.com/en-us/Blue+Fox%3A+Arm+Assembly+Interna...


Related article on The Register, also mentioned here on HN (https://news.ycombinator.com/item?id=37336623):

https://www.theregister.com/2023/08/31/a_star_star_domains/

"Maria Markstedter – a noted author, assembly language expert, and security researcher who's written extensively about Arm at the websites she operates – received a cease-and-desist demand from Arm's lawyers. Her offense? According to the letter she shared on Xitter, using the trademark "Arm" in the domain name arm-assembly.com that she used to promote a book she wrote about the ISA."


So, to be clear, I spent my time reverse engineering software rather than the hardware itself. That said, my observation is that a lot of hardware reverse engineering is software reverse engineering since the software helps you understand how the hardware works (the Asahi guys literally built a hypervisor so they could watch macOS interact with hardware).

And software reverse engineering is just grunt work. I'd start with a very well known existing hardware platform with a very simple CPU design--the GBA is actually a really nice platform as the ARM has a very sane ISA and it's all memory mapped I/O--and get a devkit and start experimenting by writing software to run in an emulator so you can get a feel for how the hardware works.


GameBoy Advance is also nice in that whenever you get really stuck most of the answers are available online ;)




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: