Page 13 of 14 FirstFirst ... 311121314 LastLast
Results 121 to 130 of 133

Thread: Gameboy Advance

  1. #121
    EmuTalk Member
    Join Date
    Feb 2014
    Location
    Niedersachsen, Germany
    Posts
    87
    Mentioned
    8 Post(s)
    I had that IntrWait SWI problem in NDS7 mode too. Regarding GBA emulation I started to finally implement cpu instruction cycles into my code.
    It seems like atleast Pokemon Fire Red needs some basic cpu timing code to run without the BIOS, atleast in my emulator. It seems like the delay caused by BIOS calls was the only reason it ever booted I'm really excited how other games will work when I implemented timing correctly. Also I found this (https://forums.mgba.io/showthread.php?tid=18) GBA testing suite by the mGBA author endrift, which tests a lot of timing, memory and carry stuff and I hope that with that suite I'll be able to extremely improve my emulator in the next few days/weeks, taking core emulation from experimental to a usable level So NDS emulation has to wait so I can then migrate changes made to my C++ ARM7 core to my C ARM7/ARM9 core when I finished the task.
    Last edited by Flerovium; July 12th, 2016 at 12:52.

  2. #122
    EmuTalk Member
    Join Date
    Mar 2014
    Location
    Chicago, IL
    Posts
    166
    Mentioned
    28 Post(s)
    The NDS is in many ways similar to the GBA (but it also has a lot of extras, obviously) so improving your GBA emulation is definitely going to help you. Personally, I would be doing a lot more NDS work myself, but I'm only doing things in small increments. Eventually, later this year, I want to tackle some of the big issues affecting my GBA core. Just to name a few -> Sync sound to video, fix "Mode 7" graphics in games like F-Zero, Mario Kart, finally implement sprite scaling/rotation, and clean up more graphical bugs.

  3. #123
    EmuTalk Member
    Join Date
    Feb 2014
    Location
    Niedersachsen, Germany
    Posts
    87
    Mentioned
    8 Post(s)
    I finally found what I believe to be the last bug in my interrupt handling and was causing a lot of compatibility and stability issues
    The problem was that I was effectivly setting a bad return address in r14<irq> when entering irq mode while the pipeline is not fully filled.
    Now I can finally focus on making the timing more accurate, adding missing features and hopefully one day code a GUI and refactor the mess that I call "code".

  4. #124
    EmuTalk Member
    Join Date
    Feb 2014
    Location
    Niedersachsen, Germany
    Posts
    87
    Mentioned
    8 Post(s)
    I thought I'd share some of the progress with you guys. My recent work all amounted towards optimizing my emulator both in terms of speed and code quality/style.
    Starting with my ARM interpreter I started to redo whole portions and so far the results are great. I was able to improve my interpreters speed a lot by writing template code and and using method address LUTs to dispatch instructions. If you're interested in this, you can take a look at it on GitHub: https://github.com/nba-emu/nanoboyad...er/src/gba/arm
    I still have to reimplement instruction timings though. I have to look into how to do implement those, since I really like the abstractions I introduced but I don't want too many (virtual) calls still.

    However the rest of the emulator still needs a lot of rewriting (it's a big, big mess right now) and optimizations. Especially DMA and Timer emulation is killing performance, but I have plans on how to fix that. One of my plans is to glue most of the timings to the video rendering phases (timers need to be emulated on each CPU instruction though, because of the Timer IRQ). Also currently I check on each clock cycle if any DMA transfers need to be performed which kills the performance a lot. Instead I'll check e.g. at the start of the VBlank if there are VBlank DMAs and if so run them and so on. My current goal is to get atleast 500-700% emulation speed on my Intel i7-3610QM which shouldn't be too unrealistic



    @Shonumi did you do any progress on GBA or NDS emulation in the meantime? i'm really looking forward tackling NDS someday too. but i really need to learn to focus on one thing, so NDS has to wait until I'm satisfied with my GBA emulation
    Last edited by Flerovium; January 24th, 2017 at 19:32.

  5. #125
    EmuTalk Member
    Join Date
    Mar 2014
    Location
    Chicago, IL
    Posts
    166
    Mentioned
    28 Post(s)
    I've been pretty busy working on both the GBA and NDS. For the GBA, I redid a bunch of audio code, so now you can play games without crackling or skipping (at least at 48000Hz). Additionally, I finally tackled affine transformations for OBJs, and I redid affine transformations for backgrounds. So now all of those "Mode 7" effects work just fine. Games like F-Zero and Mario Kart are playable. Still need to work out a few more bugs with affine transformations on OBJs, but that's mostly finished. Just added the ability to create and load save states for the GBA. Each save state is somewhat large (1.5MB) but it works.

    On the NDS, I've done a lot in the past 2 months. I fixed the IPC FIFO, which allows libnds homebrew to properly boot. I'm going through a couple of homebrew games people people released years ago, trying to get them running in GBE+. I got one called Clonemines working perfectly; I'm going to look for more ones to try booting up. The touchscreen doesn't work. There's some bug that causes the ARM7 to jump to code it's not supposed to run and execute an illegal instruction. I'm going to have to spend some time tracking that down because of a number of homebrew titles rely on the touchscreen.

    My end goal is to get a commercial NDS game displaying something/anything by April 1st, when GBE+ 1.1 comes out.

  6. #126
    EmuTalk Member
    Join Date
    Feb 2014
    Location
    Niedersachsen, Germany
    Posts
    87
    Mentioned
    8 Post(s)
    I love how you keep with that April 1st thing! :b Regarding that touchscreen bug: just a very vague assumption/idea: maybe the ARM7 is caught in some kind of deadlock (waiting for the touchscreen) and then **** happens. i've encountered such issues quite a few times where games where polling for some IO register and then after a while simply crashed. maybe some kind of unexpected situation that causes the stack or a register to get corrupted, thus crashing^^

    This weekend I made another branch (called "version2") took the ARM interpreter that I already mostly rewrote/refactored/optimized and basically finally tossed away everything else that's core-related. I also rewrote most of the very core emulation (memory, interrupts, DMA, Timer, basic rendering) on the same weekend and I can already boot a few games!:b Still try to get a lot of games to boot that used to boot fine before (I'm looking at you, Pokémon main series). Atleast I can tell, that it's nothing CPU emulation related which makes me confident I'll find the needle in the haystack soon! I got them to work once, so I'll eventually do it a second time Regarding performance I can say that it seems to be much, much better (I can run Pokémon Mystery Dungeon Team Red at 480-1200% right now) though I don't have everything implemented yet. Also it seems that my ARM interpreter still needs more optimizations (it takes up most time in the profiler, obviously)

  7. #127
    EmuTalk Member
    Join Date
    Mar 2014
    Location
    Chicago, IL
    Posts
    166
    Mentioned
    28 Post(s)
    I actually fixed the touchscreen this past weekend. Homebrew made with libnds looks for some touchscreen calibration settings found in the user firmware. If the calibration points are zero, it fails to work properly and starts executing random code. I guess this could be classified as a bug in DevkitPro, even though under normal conditions, those values should never be zero. Still, it's not safe to assume stuff. By the way, wrote an article about my work so far on NDS emulation -> https://shonumi.github.io/articles/art3.html Maybe we should rename this thread "Gameboy Advance + NDS" or something, since we keep talking about both systems

  8. #128
    EmuTalk Member
    Join Date
    Feb 2014
    Location
    Niedersachsen, Germany
    Posts
    87
    Mentioned
    8 Post(s)
    Yeah given the similarity of both systems renaming the thread would be reasonable. Just read through the entire article. I'll definitly check out your blog more often in the future :b In fact I was thinking for a while about creating my own but I'm too lazy and I really want to focus on the emulator itself for now ^^
    I got Pokémon Fire Red/Ruby/Emerald etc. to boot yesterday. I was assuming that my hacked-in FLASH "emulation" was just good enough to trick the games but apparently that wasn't the case At the current point I can get 450% - 700% speed depending on the game and scene. Though PPU rendering is not finished and APU emulation not even started. That is already much faster than my previous codebase, so rewriting definitly is worth it. I really want to get atleast constant 900% though, also one day I want to get it work at 60FPS on my New 3DS (that might be a seperate "fork" though, where I'd sacrifice some accuracy)

    PS: are you still in any IRC?
    Last edited by Flerovium; February 2nd, 2017 at 18:45.

  9. #129
    Moderator Remote's Avatar
    Join Date
    Jan 2002
    Location
    Stockholm
    Posts
    2,294
    Mentioned
    1 Post(s)
    I liked the article!

  10. #130
    EmuTalk Member
    Join Date
    Mar 2014
    Location
    Chicago, IL
    Posts
    166
    Mentioned
    28 Post(s)
    @Flerovium - I'm not on IRC. I dunno, I just don't like it. I mean, I used to just leave my Raspberry Pi connected to freenode.net and efnet 24/7 (not just for emu-talk, but for #dolphin, #dolphin-dev, #citra, #citra-dev), however I never checked my logs, never really contributed to any discussions. I was permanently idling. So, you could find me on IRC, but I'd never be there to talk to you. I prefer forums with threads and posts and stuff like that.

    Anyway, keep up the good work. Post some screenshots when you get the chance. I think I'm going to look into GPIO to get the RTC in Pokemon games working, then maybe try more exotic games like Boktai or something.

    @Remote - Thanks! I think a lot of people definitely appreciate articles that dive into emulation topics, so I'm trying to do my part by writing more often.

Page 13 of 14 FirstFirst ... 311121314 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •