Page 5 of 14 FirstFirst ... 34567 ... LastLast
Results 41 to 50 of 134

Thread: PC-Engine

  1. #41
    Emulator Developer
    Join Date
    May 2006
    Posts
    215
    Mentioned
    1 Post(s)
    I'm back from a convention I was at. I had some sound stuff implemented but it wasn't working in most games. Turns out my timer code was busted. I actually wrote 1024 * 768 where I meant to write 1024 * 3 (embarrassing, I know.. I think my brain is on auto a lot of the time).

    Then I redid the audio. I decided on the output frequency stepping afterall. This was a good move since the FM capability doesn't seem to be used much and I think I was overreacting to the cost of the divides anyway. If the divides are too much of a problem for the normal frequency settings then a 4096 entry table can be used. I actually haven't even encountered a game that uses LFO..

    And I implemented DDA (which sounds alright) and noise (which doesn't sound entirely right). I need better docs on how noise works.

    Still lots of little bugs preventing a lot of games from working right but it's getting closer to release quality. I might start working on a GP2X version soon.


  2. #42
    Moderator aprentice's Avatar
    Join Date
    Nov 2001
    Posts
    1,337
    Mentioned
    0 Post(s)
    what api are you using for sound?

  3. #43
    Emulator Developer
    Join Date
    May 2006
    Posts
    215
    Mentioned
    1 Post(s)
    I'm using SDL for everything...

  4. #44
    Emulator Developer
    Join Date
    May 2006
    Posts
    215
    Mentioned
    1 Post(s)
    Here's something kinda horrible I encountered. A surprisingly large number of games (a few percent of the ones I tested) are doing this. Near the beginning of an interrupt handler a cli is being done right before the interrupt is actually acknowledged. As far as I was aware this should cause the CPU to go into an infinite loop of receiving that interrupt, which is exactly what was happening on my emulator. This is not the case. I can only imagine that due to the partial pipelining of the CPU interrupts do not actually trigger until the instruction after the cli has completed. This might not be the case for plp and rti (both of which modify flags as well and can thus enable interrupts) since they take more cycles.

    This shouldn't be too hard to fix, but it's pretty annoying. Things like this just make me want a dynarec more.

  5. #45
    Moderator Cyberman's Avatar
    Join Date
    Nov 2001
    Posts
    1,930
    Mentioned
    1 Post(s)
    Interesting this is one of those pipeline delay things people take advantage of. I am not certain why they would use it if they didn't absolutely need to do that however. Like in the MIPS there are a number of instructions that can execute before a branch that is taken after the branch instruction ocures, this is in a way a similar thing.

    That is kind of funny though that they were doing that. I can't see the benefit off hand but I'm sure you might be able to think of something.

    Cyb
    Progress (n.):
    The process through which the Internet has evolved from smart people in front of dumb terminals to dumb people in front of smart terminals.
    -------------------------------------------------------------------
    Recursive (adj):
    see Recursive

  6. #46
    Emulator Developer
    Join Date
    May 2006
    Posts
    215
    Mentioned
    1 Post(s)
    Lots of little fixes and strenuous testing... I haven't kept great track of everything and I've looked at Ootake and Mednafen's source a lot. Actually, my render timing right now is mostly like Mednafen's. Some games are still bugged, but compatibility should be somewhere around 95%. I'm going to have a beta tester go through it as much as possible, then I'll begin moving it where I originally intend to have it on, GP2X.

  7. #47
    Moderator aprentice's Avatar
    Join Date
    Nov 2001
    Posts
    1,337
    Mentioned
    0 Post(s)
    Quote Originally Posted by Exophase View Post
    Lots of little fixes and strenuous testing... I haven't kept great track of everything and I've looked at Ootake and Mednafen's source a lot. Actually, my render timing right now is mostly like Mednafen's. Some games are still bugged, but compatibility should be somewhere around 95%. I'm going to have a beta tester go through it as much as possible, then I'll begin moving it where I originally intend to have it on, GP2X.

    wow, 95% compat is pretty good, nice job

  8. #48
    Emulator Developer
    Join Date
    May 2006
    Posts
    215
    Mentioned
    1 Post(s)
    As I mentioned in the NES thread, I'd post here what happened to this emulator.

    Its name is "Temper", which stands for Turbografix EMulator PEr Request, and it came into being because people using the GP2X handheld wanted a better emulator. The few out either had significant compatibility/feature problems or were too slow, so I aimed to make one that was both fast and compatible.

    My first release was last weekend and my second release will probably be tomorrow. The core PC-Engine emulation is pretty good, and it's pretty fast, thanks to having an optimized ARM CPU interpreter and part of the video code in ARM ASM as well. I'd still like to continue optimizing it though. There are a few compatibility problems but nothing too major.

    Next big step is to support PCE-CD and SuperGrafx. Unfortunately there isn't a lot of documentation on the former, so I've been looking through the source of the current emus for it and contacting people in the PC-Engine emulation/demo coding scene to try to gather info. I'll post whatever documentation I can write up from these sources.

    Quick primer on the CD-ROM addon, for some reason called CD-ROM^2:

    - Single speed CD-ROM which is capable of playing CD-DA audio directly from the CD drive at 44.1KHz, 2 channel (stereo), 16bit per sample. Like a standard CD player.
    - Has a SCSI like interface for transferring data.
    - 64KB of general purpose RAM is added and accessible in a previously invalid area of address space.
    - There's an ADPCM unit which plays back samples encoded in OKI ADPCM format (4 bits per sample). There's a special 64KB of RAM dedicated to this unit: games DMA ADPCM from CD-ROM to this RAM, then the ADPCM chip can output from it. I think some games use this RAM as general purpose as well (pushing memory through ports to it). The algorithm is supposed to be optimized for voice, so that's probably what it's used for most of the time (as opposed to music). I figure with CD-DA playing the CD-ROM is being used at 100% capacity, so you can't stream in anything else at the same time anyway, and have to preload all this stuff.
    - 2KB of backup RAM. Actually, some PC-Engine games let you use this too, if it detects the add-on. I would have implemented just this already, but I have save states so it isn't really a big deal.
    - The cartridge port takes system cards which give BIOS functions to the games. Version 3.0 also adds 192KB of RAM, forming "Super CD-ROM^2." Most released games were actually for this configuration and not for the original. This RAM is, of course, accessed in the cart space.

    So you can see it offers a lot more RAM (which it needs to because there's no more addressable ROM for the game) and audio features, as well as a ton of storage. And offers nothing in the way of enhanced graphics or processing power, unlike the Sega CD add-on. Fortunately that makes it less painful to emulate.. in theory anyway.

  9. #49
    Programmer | Moderator Danny's Avatar
    Join Date
    Nov 2005
    Posts
    896
    Mentioned
    21 Post(s)
    Nice one exo

    Plans for a PSP version too?

    Either way great work
    Proud Moderator Of Emutalk.net

    * I develop software for: iOS, Android, Mac, Linux & Windows.
    * Proficient in C#, C, C++, Objective-C, Java, Swift, Lua. Also know some: PHP.

    Want to help EmuTalk? Want us to relive the glory days of old? Ping me, I would love to hear your ideas


  10. #50
    EmuTalk Member
    Join Date
    Sep 2007
    Posts
    68
    Mentioned
    0 Post(s)
    Hi,

    I'll be giving a shot at writing an accurate PC-Engine emulator after I finish some stuff with Regen. Do you have some of your own docs/notes on it? I see there are a few things you have written here but it would be nice to have them at one centralized place. Also would be nice if you could point out some wrong/inaccurate things from Charles MacDonald's docs.

    stay safe,

    AamirM

Page 5 of 14 FirstFirst ... 34567 ... 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
  •