(12-07-2014, 03:25 AM)Shonumi Wrote: Well, for 2D systems like the GB, GBC, and GBA, there is no such thing as textures (yes, even when accounting for all the scaling and rotation the GBA does). The proper term is HD Tile Replacement. This is already possible with GBE, as it allows you to specify your own custom tiles greater than the GB's 8x8 limitations. The code is there in GBE's master branch, and it works. I posted a build for it, but not a lot of people took a look at it. See here on EmuTalk.net -> http://www.emutalk.net/threads/55007-GB-...post452812Thanks for responses. Do you want to emulate DS wifi and GBC/GBA Link ? It seems Desmume will never have working wifi so DS emulator with HD+WIFI would be great but wifi is probably hard to emulate.
Screenshots for proof:
http://i3.minus.com/ibtWMxaH9B8ZBb.png (and yes, those Pokeballs look terrible, but you get the idea)
http://i.imgur.com/hylaHhz.png
The thing is, this only works for original GB games. GBC and GBA games require more advanced techniques. I have working code that adds the same functionality to GBC games, but properly getting it to work requires a better user interface (the CLI + text files is doable, but sub-par as you can imagine) and a more unified approach to LCD emulation with cleaner code, hence why I'm waiting for to GBE+ mature.
For 2D sprites, you can do bilinear or trilinear interpolation. However, with OpenGL, it's easy enough to draw the entire game screen to a texture, then tell OpenGL to perform filtering on that texture, but imo bilinear filtering looks horrible no matter what you do. Scaling filters dedicated to pixel art do a much better job at being as smooth or as sharp as you like. For the sake of completeness, I see no reason to exclude bilinear or trilinear filtering for 2D, especially since I'm not big on forcing others to accept my own preferences like that.
As for copying stuff from Desmume, I'll reference their codebase, but remember, I'm doing this as a learning experience, as a way to challenge myself, and as a way to become independent from Desmume itself (I have a small list of things against it at any rate).
A JIT recompiler will definitely be a part of any DS emulator I eventually get around to making, and in fact I might have to experiment with a JIT for the GBA portion. Let's just say that making really fast, 100% C++ ARM interpreters isn't easy. I basically have a majority of the code necessary for the DS' ARM interpreter sitting right in front of me (in the form of my current GBA CPU code) but I can tell right now it's not optimized enough to reliably run DS games at enjoyable speeds.
Programming Discussion Thread
|
12-07-2014, 03:56 AM
I had actually planned to do GB/GBC linking (because I want to trade Pokemon with myself :p) but I got sidetracked with GBA emulation. One of the stated project goals is to get that link functionality working once GBE is integrated into GBE+. At some point, GBA-to-GBA linking is something I want to emulate as well. VBAM seems capable of doing it, but it's never worked for me on Linux, and no$GBA is closed-source, so I have a lot of incentive to see this feature added.
As for emulating DS-to-DS wifi, I would love to tackle that, but currently that's terra incognita. No one's done that for commercial games, even no$GBA. But that's something of a pipedream for me. Imagine, Mario Kart DS in HD with 4 of your buddies online *drools*. It's certainly possible, but it's a big challenge since not everything the DS does with WiFi is documented (even for "local" multiplayer that doesn't involved Nintendo's network). A lot a stuff needs to be reverse engineered. But like I said, I'm interested in emulation as a challenge 12-07-2014, 04:09 AM
(12-07-2014, 03:56 AM)Shonumi Wrote: I had actually planned to do GB/GBC linking (because I want to trade Pokemon with myself :p) but I got sidetracked with GBA emulation. One of the stated project goals is to get that link functionality working once GBE is integrated into GBE+. At some point, GBA-to-GBA linking is something I want to emulate as well. VBAM seems capable of doing it, but it's never worked for me on Linux, and no$GBA is closed-source, so I have a lot of incentive to see this feature added.I see, I forgot to ask one thing are you planning SGB/SGB2 emulation ? I don't think it's very important but for completeness sake would be nice. 12-07-2014, 04:25 AM
Nah, I don't actually plan on emulating that. If someone else wants to add it to the project, I have no objections, and I won't hinder them. But I was never interested in the SGB, so it has never been a priority for me.
12-07-2014, 10:46 AM
12-09-2014, 06:54 AM
If I may add something to this discussion. The chip8 emu on that multigesture article isn't too accurate. The timers don't seem to count at 60hz which causes space invaders to be unplayable. Currently a friend and I over on the PCSX2 forums are working on a SCHIP implementation and accuracy is quite good. All SCHIP games are playable. hireschip8 is about 50% and I believe all of chip8 is playable at the moment
12-09-2014, 07:48 AM
(12-09-2014, 06:54 AM)Nobbs66 Wrote: If I may add something to this discussion. The chip8 emu on that multigesture article isn't too accurate. The timers don't seem to count at 60hz which causes space invaders to be unplayable. Currently a friend and I over on the PCSX2 forums are working on a SCHIP implementation and accuracy is quite good. All SCHIP games are playable. hireschip8 is about 50% and I believe all of chip8 is playable at the moment To be fair, Imran Nazar's Javascript GB emu is pretty darn inaccurate as well. :p However, the point of each article (or series of articles in Nazar's case) is to get people familiar with the concepts of emulating something. IMO, there really weren't a lot of good resources that taught people how to begin with zero experience about emulation, though that has changed in the past few years or so. Personally, until recently, emulators were pure magic to me, made by level 90 super-geeks who had disassembled and hacked countless consoles with nothing more than some soldered diodes on a breadboard. Outside of thrusting my head into the source code of an existing emulator and badgering the devs with aimless questions, I felt as if there were no readily available way for me to start programming an emulator. In reality, all I needed was a little hand-holding to demystify the art. I'm not necessarily defending the article on a technical level, I'm simply saying that fwiw it serves a valuable purpose in the emulation community. It's just nice to be able to have a resource to point to whenever someone basically asks "how do I break into emulators?" We need more of them, and we need better versions of them (I would encourage you to write a better CHIP8 tutorial ). In fact, we need more articles in general that take away the impression that only hardcore programmers can know what goes on inside these programs (like Dolphin's wonderful articles and Progress Reports). In fact, I need to get back to writing my woefully outdated blog that I started just for that purpose! Anyway, good luck with your emulator. Let us know how that works out for you (post some screenshots here sometime).
Right now I'm completely confused on how MegaChip works. I was going through the ASM code for some of the demos, and it's weird. In mega serpinski one of the ops jumps to address 0x103 which should be reserved for interpreter space.
Here are some screenshots: Thanks goes out to Blyss Sarania on the pcsx2 forums for doing a massive amount of work on this with me. 12-12-2014, 11:18 PM
(12-09-2014, 02:56 PM)Shonumi Wrote:I noticed one of your project goals is cycle-accurate GBA emulation. Are your GBC and GB emulators also planned to be cycle accurate ?(12-09-2014, 06:54 AM)Nobbs66 Wrote: If I may add something to this discussion. The chip8 emu on that multigesture article isn't too accurate. The timers don't seem to count at 60hz which causes space invaders to be unplayable. Currently a friend and I over on the PCSX2 forums are working on a SCHIP implementation and accuracy is quite good. All SCHIP games are playable. hireschip8 is about 50% and I believe all of chip8 is playable at the moment |
« Next Oldest | Next Newest »
|
Users browsing this thread: 6 Guest(s)