I regret to inform you I put my Gameboy emulator project on hold. I'm the kind of person that has allot of projects he wants to get his fingers into. But this was and is still up there on my todo list.
To be honest allot happened, especially personally. So I got side tracked. But I also got back on track when it comes to what I always wanted to do.
I wanted to do it for almost 20 years.
So I'm focusing my efforts on whats probably a multi-year project to build an 8bit computers using only discrete components. If I have my way it'll only be thousands BC871 transistors and 4.7K resistors.
I hope that if your into stuff like a Gameboy emulator you'll also love something even more extremely retro like a computer build one transistor at a time.
But I do warn you, it's where I dump my mind. It'll be messy, unorganized and a random dump of what I'm working on. That also should mean you'll get allot of updates.
Still, I'm no quitter... and I will write this. Or should I make the little bits I have public domain? Like on a Github repository? So it might grow before I get back to it?
*sign* again... sorry
I just hope you're as happy doing what you love to you as I am doing it right now. :|
usti8bit.blogspot.com
Ugbe
The journey of writing a gameboy emulator
Thursday, 5 March 2015
Thursday, 30 October 2014
Running unlicensed code on the original Nintendo Gameboy.
Nowadays we take it as a given that you can't play unlicensed or home-brew games on your gaming console.
That doesn't mean some smart people didn't find a way around it. Who remembers GeoHot and his discovery of the master key for the PS3?
But public/private key infrastructures weren't readily available back in the day of the original Nintendo Gameboy. The hardware wasn't powerful enough to use a strong protection scheme.
Still Nintendo didn't want to lose any licensing fees and designed a way to keep unlicensed games from running. It all hinged on enforcing the use of they're logo and suing anyone who used the logo without a proper license.
So if you want to write your own game or code that runs on an original gameboy you need to know how this mechanism works.
So lets dive right in, starting with the legality of it all.
That doesn't mean some smart people didn't find a way around it. Who remembers GeoHot and his discovery of the master key for the PS3?
But public/private key infrastructures weren't readily available back in the day of the original Nintendo Gameboy. The hardware wasn't powerful enough to use a strong protection scheme.
Still Nintendo didn't want to lose any licensing fees and designed a way to keep unlicensed games from running. It all hinged on enforcing the use of they're logo and suing anyone who used the logo without a proper license.
So if you want to write your own game or code that runs on an original gameboy you need to know how this mechanism works.
So lets dive right in, starting with the legality of it all.
Tuesday, 28 October 2014
To Emulate or Simulate: That is the question
I got my introduction into emulators from an old friend I've known since high-school. A gifted programmer, even back in the day before I got sick he had a much better grasp of low level programming.
He wrote an emulator for the NES which got me inspired to write an emulator for the Hack platform which after learning allot got me wanting to program a gameboy emulator.
His emulator is written like a piece of art. But I remember that it made me wonder. Is it really an emulator?
It's a very old discussion and something to consider before you start writing your own emulator (or simulator?) for any platform.
Let me (try to) explain the difference between emulation and simulation.
He wrote an emulator for the NES which got me inspired to write an emulator for the Hack platform which after learning allot got me wanting to program a gameboy emulator.
His emulator is written like a piece of art. But I remember that it made me wonder. Is it really an emulator?
It's a very old discussion and something to consider before you start writing your own emulator (or simulator?) for any platform.
Let me (try to) explain the difference between emulation and simulation.
Monday, 27 October 2014
Everything you ever wanted to know about the Gameboy but where afraid to ask.
Documentation is everything. Especially when writing something like an emulator. Here is everything I found and I'll keep adding to it when I find something new.
I've added links to my dropbox as a mirror for some important documentation. If you think I missed something, please let me know!
The people behind these links are geniuses. I would have been lost without them.
I've added links to my dropbox as a mirror for some important documentation. If you think I missed something, please let me know!
The people behind these links are geniuses. I would have been lost without them.
Sunday, 26 October 2014
I'm Gert, and I am a Programoholic
Today I was once again asked if I have a blog for my game boy emulator project. Well I didn't. Why write posts if you could spend that time programming? Fair enough right?
But it got me thinking. The only reason I'm able to write a game boy emulator is because of all the great documentation I find online posted by others. But it took me quite a while to find all those resources and allot details I had to discover for myself.
So here I am...
I hope maybe some day someone else will want to write they're own game boy emulator and stumbles onto this blog. Maybe it'll help them find the needed resources faster. Or as an archive for information that else might have gotten lost.
Anyhow, this isn't a programming course. So don't expect to learn step by step how to program an emulator. Hell, I'm still learning how to do it! Right now my emulator isn't even running.
It's a learning experience for me. An adventure of sorts. But this obsession with programming didn't happen overnight.
I was born in '81 in the Netherlands. A wonderful age to grow up in. I started programming in basic when I was just over 8 years old on a BBC micro. Later dabbled with a C64 but (in hindsight to quickly) got my first x86, a Zenith lug-able laptop.
My working years was mostly as a programmer. Writing software for security systems and actually writing an e-mail client from scratch which scrapes e-mail and automated back office stuff like shipping. It was fun, payed reasonably well ... life was good.
But I got a chronic illness which ended up resulting in me not programming for over a decade. It involves brain damage. Which sucks. Basically on the 27th of November 2000... it was game over.
Things are however going very well for a few years and slowly I'm picking it up again. It's all still in that grey blob between my ears. But it's something like learning how to walk again. I get headaches from time to time.
But I stay at it. It's just way to much fun and I missed that rush you get when your code just work. I'll admit it... I am and have all-ways been addicted to it. I can't stop. So at-least I have a project to keep me busy for a long time.
I've already coded all opcodes, just started on a debugger and gui to glue what I have together to start testing the cpu. Timers and interrupts are also very high on my todo list. I have test roms that output thru the serial (gamelink) port so I can add the lcd stuff later.
I'm writing it in Delphi, why I'm doing that is a story on itself. Best told another time. I'll try to at-least once per week post something about the project, game boy hardware or emulation.
If I get questions, I'll try to answer them. But no guarantees and like I said. This isn't a programming course. But I'll try to help where I can.
But it got me thinking. The only reason I'm able to write a game boy emulator is because of all the great documentation I find online posted by others. But it took me quite a while to find all those resources and allot details I had to discover for myself.
So here I am...
I hope maybe some day someone else will want to write they're own game boy emulator and stumbles onto this blog. Maybe it'll help them find the needed resources faster. Or as an archive for information that else might have gotten lost.
Anyhow, this isn't a programming course. So don't expect to learn step by step how to program an emulator. Hell, I'm still learning how to do it! Right now my emulator isn't even running.
It's a learning experience for me. An adventure of sorts. But this obsession with programming didn't happen overnight.
I was born in '81 in the Netherlands. A wonderful age to grow up in. I started programming in basic when I was just over 8 years old on a BBC micro. Later dabbled with a C64 but (in hindsight to quickly) got my first x86, a Zenith lug-able laptop.
My working years was mostly as a programmer. Writing software for security systems and actually writing an e-mail client from scratch which scrapes e-mail and automated back office stuff like shipping. It was fun, payed reasonably well ... life was good.
But I got a chronic illness which ended up resulting in me not programming for over a decade. It involves brain damage. Which sucks. Basically on the 27th of November 2000... it was game over.
Things are however going very well for a few years and slowly I'm picking it up again. It's all still in that grey blob between my ears. But it's something like learning how to walk again. I get headaches from time to time.
But I stay at it. It's just way to much fun and I missed that rush you get when your code just work. I'll admit it... I am and have all-ways been addicted to it. I can't stop. So at-least I have a project to keep me busy for a long time.
I've already coded all opcodes, just started on a debugger and gui to glue what I have together to start testing the cpu. Timers and interrupts are also very high on my todo list. I have test roms that output thru the serial (gamelink) port so I can add the lcd stuff later.
I'm writing it in Delphi, why I'm doing that is a story on itself. Best told another time. I'll try to at-least once per week post something about the project, game boy hardware or emulation.
If I get questions, I'll try to answer them. But no guarantees and like I said. This isn't a programming course. But I'll try to help where I can.
Subscribe to:
Posts (Atom)