He's also planning to release the source too, might be interesting to look at once it's out.What started out as a "what if" over the weekend is rapidly turing into a full blown emulator for the Mega Drive. Keep in mind that this is early stages, and it may end up going nowhere, but I want to hear everyone's gripes about current emulators such as Gens and Kega, and any requests for features you would like to see in a new emulator. In particular, I want to hear what current features you rely on, and what features you have always wanted, but aren't provided in a given emulator. Note that at this stage, I'm talking about the base Mega Drive only, not 32x or MegaCD support.
Here's a list of the features my emulator must support for me to be happy with it:
-Breakpoints on code execution, preferably with support for conditions
-Breakpoints on memory read/write (watchpoints)
-PAR/Game Genie support
-Savestates
-Full debuggers for all processors, including the ability to modify any and all data owned by them while execution is paused.
Here are my goals for the overall design of the emulator:
-Accuracy is paramount. The emulator should accurately emulate all behaviour of the original system which has an impact on the execution of code, as well as any inputs or outputs to the system as a whole. Timings must be respected, to allow accurate emulation of the interactions between elements in the system.
-Structure is extremely important. The sourcecode must be structured in a logical, flexible, and intuitive fashion, which makes the emulator highly flexible, as well as easy to understand and modify. To this end, no assembly code will be used, and the entire emulator will be written in a high-level OO fashion.
-Speed is nice, but not vital. Computers nowadays are fast enough to emulate the Mega Drive in real time without the same degree of optimization that was required when emulators like Gens and Genecyst were first written. At no point will structure or accuracy be compromised in favour of speed.
Key things featured:
M68000:
-All M68000 opcodes
-All M68000 states, including trace emulation
-All M68000 exceptions
VDP:
-All DMA modes
-All layers
-Full support for layer/sprite priority
-Support for horizontal and vertical scrolling
Here's a list of some key things Exodus doesn't support yet:
VDP:
-Shadow/Highlight mode
-Interlace modes
-Mode 1/2/3/4 support
Sound:
-Everything
Regen for Linux and Windows
Moderator: General Mods
-
- Trooper
- Posts: 394
- Joined: Mon Feb 20, 2006 3:11 am
- Location: Space
Ah, I hate to double post, but looks like Kega and Regen aren't going to be the only accurate emulators for long. Nemesis is close to releasing Exodus, and here's some information about it... Yes, I know the information is over a year old, but still...
-
- Veteran
- Posts: 637
- Joined: Sat Apr 21, 2007 8:05 pm
Wow, really? You're a machine! If you'd like to upload a beta feel free, but obviously there's no rush. I can give you feedback if you'd like. I'm using ubuntu gutsy.AamirM wrote:Yes linux version is under progress. I could upload a beta of it if you want. But the sound has problems. BTW, What distro are you using?
I bring the trouble.
-
- Trooper
- Posts: 394
- Joined: Mon Feb 20, 2006 3:11 am
- Location: Space
Ok, I've been playing with Regen's Cheat function, and I have to say, I'm quite impressed. I can't import PAR codes over (I've tried) but I think where you're heading with the idea is absolutely perfect! I really like the interface once you've imported a .dat file into Regen to use, and how it easily cuts down on multiple line codes. Now, I have ideas to improve this and to incorporate Pro Action Replay into the mix as well.
-Support for Pro Action Replay in the .dat files (it's a major must for me, since I can't just convert PAR to GG, since the majority of the codes don't work that way). I can then manually convert over all cheats from Kega over... Well, I think I'll do that for selected games ahead of time, just in case.
-Support for Hex codes converted from Game Genie codes (e.g. 000344:6004 being the Hex converted GG Master Code for Sonic 2).
-Automatically save and load Cheats for games (based upon the naming scheme of the ROMs, like Kega).
-Automatically remember enabled cheats, and enable them upon reload of the ROM.
-Automatically have unselected codes as "Off".
-Editable chat window interface. Meaning the ability to add/delete selected cheats (New Cheat & Delete Cheat buttons), and edit (Edit Cheat). This would allow for a lot of people to import a bunch of their codes in, I know I would, and even post my entire .DAT database of codes. Also the ability to move highlighted cheats up and down on the main list.
-Resizable Cheat window, with the 2 columns resizable as well.
-Cheat window remembers it's position when opening it.
-Add a hotkey for cheats (Alt+G perhaps?).
Ok, this request is random, but can you add a hotkey for the Turbo Mode feature too? Backspace would suffice in that case.
Thanks a lot!!! The more I play with this emulator, the more I absolutely LOVE it.
Edit: Hahaha, look at this. None of the codes work since they're PAR/Hex codes, but you get the idea...
Doesn't that just look perfect?
Edit 2: Wow, the game (S3&K) with the most codes in my library looks all nice and tidy now.
-Support for Pro Action Replay in the .dat files (it's a major must for me, since I can't just convert PAR to GG, since the majority of the codes don't work that way). I can then manually convert over all cheats from Kega over... Well, I think I'll do that for selected games ahead of time, just in case.
-Support for Hex codes converted from Game Genie codes (e.g. 000344:6004 being the Hex converted GG Master Code for Sonic 2).
-Automatically save and load Cheats for games (based upon the naming scheme of the ROMs, like Kega).
-Automatically remember enabled cheats, and enable them upon reload of the ROM.
-Automatically have unselected codes as "Off".
-Editable chat window interface. Meaning the ability to add/delete selected cheats (New Cheat & Delete Cheat buttons), and edit (Edit Cheat). This would allow for a lot of people to import a bunch of their codes in, I know I would, and even post my entire .DAT database of codes. Also the ability to move highlighted cheats up and down on the main list.
-Resizable Cheat window, with the 2 columns resizable as well.
-Cheat window remembers it's position when opening it.
-Add a hotkey for cheats (Alt+G perhaps?).
Ok, this request is random, but can you add a hotkey for the Turbo Mode feature too? Backspace would suffice in that case.
Thanks a lot!!! The more I play with this emulator, the more I absolutely LOVE it.
Edit: Hahaha, look at this. None of the codes work since they're PAR/Hex codes, but you get the idea...
Doesn't that just look perfect?
Edit 2: Wow, the game (S3&K) with the most codes in my library looks all nice and tidy now.
-
- -Burninated-
- Posts: 871
- Joined: Mon Sep 10, 2007 11:33 pm
- Location: Unspecified
-
- Trooper
- Posts: 394
- Joined: Mon Feb 20, 2006 3:11 am
- Location: Space
I have a question. Does this emulator have the 4MB game size limit? I tried to load up the 10MB Ultimate Mortal Kombat Trilogy, and it crashes the emulator. I suspect games over the 4MB aren't supported. =P
-
- ZSNES Developer
- Posts: 6747
- Joined: Tue Dec 28, 2004 6:47 am
AFAIK, it was part of one big hack for one emu only.King Of Chaos wrote:I have a question. Does this emulator have the 4MB game size limit? I tried to load up the 10MB Ultimate Mortal Kombat Trilogy, and it crashes the emulator. I suspect games over the 4MB aren't supported. =P
Continuing [url=http://slickproductions.org/forum/index.php?board=13.0]FF4[/url] Research...
Very promising emulator. I like it.
I'm surprised no one asked this yet (or perhaps I missed it), but are there any plans for 32X and Sega/Mega CD emulation? Regen would feel a lot more "complete" in my eyes if this happened.
And, is it necessary to have builds optimized for P3/P4/Athlon? Most emulators these days just provide one generic binary per platform/OS.
Also, a bug in 0.41: The title sequence in Insector X runs way too quickly, at least in the P4 build of Regen.
I'm surprised no one asked this yet (or perhaps I missed it), but are there any plans for 32X and Sega/Mega CD emulation? Regen would feel a lot more "complete" in my eyes if this happened.
And, is it necessary to have builds optimized for P3/P4/Athlon? Most emulators these days just provide one generic binary per platform/OS.
Also, a bug in 0.41: The title sequence in Insector X runs way too quickly, at least in the P4 build of Regen.
-
- Romhacking God
- Posts: 922
- Joined: Wed Jul 28, 2004 11:27 pm
- Contact:
I gave this emulator a try over the weekend. For some reason I got a bunch of skipping and stuttering on both .41 and the previous version posted. It wasn't really playable. I've got a 2.5Ghz AMD X2 and Geforce 7800 GT. No problems with any other emulator. Any ideas?
[url=http://transcorp.romhacking.net]TransCorp[/url] - Home of the Dual Orb 2, Cho Mahou Tairyku Wozz, and Emerald Dragon SFC/SNES translations.
[url=http://www.romhacking.net]ROMhacking.net[/url] - The central hub of the ROM hacking community.
[url=http://www.romhacking.net]ROMhacking.net[/url] - The central hub of the ROM hacking community.
Hi,Nightcrawler wrote:I gave this emulator a try over the weekend. For some reason I got a bunch of skipping and stuttering on both .41 and the previous version posted. It wasn't really playable. I've got a 2.5Ghz AMD X2 and Geforce 7800 GT. No problems with any other emulator. Any ideas?
Stange. What CPU build did you use? It may be the multithreading code.
Thanks for liking it .deltahpc wrote:Very promising emulator. I like it.
I'm surprised no one asked this yet (or perhaps I missed it), but are there any plans for 32X and Sega/Mega CD emulation? Regen would feel a lot more "complete" in my eyes if this happened.
And, is it necessary to have builds optimized for P3/P4/Athlon? Most emulators these days just provide one generic binary per platform/OS.
Also, a bug in 0.41: The title sequence in Insector X runs way too quickly, at least in the P4 build of Regen.
I do want to add 32X and SegaCD but I don't have those units and they are not available here anymore . It is certainly possible to write an emulator without having them but that would decrease accuracy since I won't be able to carry out some of my tests on them.
Well from now on I will only upload Pentium3(also compatible with Athlon) and Pentium 4 builds. I do this because the Pentium 4 build runs much more faster, when running on P4 or up, than the P3 version.
Ah, thanks for reporting it. That also happens with another game. This is because of emulator not supporting DMA timings currently.
No it doesn't . Megadrive could only address 4MB of address space so I think it uses some bank switching. AFAIK, super street fighter is the largest MD game.King of Chaos wrote:I have a question. Does this emulator have the 4MB game size limit? I tried to load up the 10MB Ultimate Mortal Kombat Trilogy, and it crashes the emulator. I suspect games over the 4MB aren't supported. =P
Also, thanks for those cheats suggestions. But some of them may not be possible(read right). I'll post in some details later.
stay safe,
AamirM
-
- Trooper
- Posts: 394
- Joined: Mon Feb 20, 2006 3:11 am
- Location: Space
-
- Seen it all
- Posts: 2302
- Joined: Mon Jan 03, 2005 5:04 pm
- Location: Germany
- Contact:
Maybe the 16x16 could use some bright pixels / more shading? Looks a bit too dark IMHO.King Of Chaos wrote:
vSNES | Delphi 10 BPLs
bsnes launcher with recent files list
bsnes launcher with recent files list
-
- Trooper
- Posts: 376
- Joined: Tue Apr 19, 2005 11:08 pm
- Location: DFW area, TX USA
- Contact:
Kega does have some accuracy issues. When you play King's Bounty, the in-game music is messed up compared to the real cart.AamirM wrote:Well, Kega has done both. As I said above, the emulator could have been a little bit more accurate but that would sacrifice speed very heavily. I am upto a point where I am rewriting some parts in asm in order to compensate for the accuracy gains.Can't be the fastest and most accurate I'm afraid.
-
- Seen it all
- Posts: 2302
- Joined: Mon Jan 03, 2005 5:04 pm
- Location: Germany
- Contact:
King Of Chaos wrote:
Mmmh, still not enough contrast. Here's my try - it uses more color gradients:
Maybe the black vertical lines going down left and right could be removed to show more contrast (they're not nearly as thick in the source image) ...
Mmmh, still not enough contrast. Here's my try - it uses more color gradients:
Maybe the black vertical lines going down left and right could be removed to show more contrast (they're not nearly as thick in the source image) ...
vSNES | Delphi 10 BPLs
bsnes launcher with recent files list
bsnes launcher with recent files list
-
- Trooper
- Posts: 394
- Joined: Mon Feb 20, 2006 3:11 am
- Location: Space
PAR starts with FF, Hex codes start with 00 and an address. Game Genie converts to Hex address, while PAR is RAM addresses. Game Genie and Hex addresses can be considered the same thing, since Kega internally converts all inputted GG codes to hex addresses.
Pro Action Replay on the other hand always starts with FF since it changes the RAM itself.
Examples of this are, take the GG master code to Sonic 1, ATBT-AA32. When it's converted to hex in Kega (or in a tool I have that can convert from GG to hex and back) becomes 000338:6004 which is the hex conversion of the above Game Genie code.
However I don't believe it's possible to convert GG to PAR or hex to PAR (as far as I can tell) since they're completely different things. Although, I'm probably wrong on this.
GG/Hex and PAR codes should work easily for the 32X if you ever add support for it.
Sega CD on the other hand is very, very tricky to use any cheats with. I know you can hack the ISOs of the games (or use hex addresses) for only a select few games. PAR code creation and use is only possible for those games that use the Genesis RAM (Sonic CD for example). However, games that use Word RAM are way, way more tricky, if not impossible.
Game Gear can use Game Genie and Pro Action Replay. Examples of this are... 009-04F-3BE is the Game Genie code for infinite lives in Sonic 2, while 00D2-4009 is the Pro Action Replay code for infinite lives in Sonic 1.
Sega Master System can only use Pro Action Replay. An example of this is 00D2-4609 infinite lives for Sonic 1. PAR for GG and SMS are similar in this case.
Yea, cheating is very confusing for the various systems. Might want to ask Steve Snake about this stuff, since he knows way more stuff about it than me. Also, if you do try to support 32X and Sega CD there's a way to determine how accurate it is. Run games against Kega Fusion, since it's nearly fully hardware accurate for both systems. I suppose it's as close as you can get to the real thing.
Pro Action Replay on the other hand always starts with FF since it changes the RAM itself.
Examples of this are, take the GG master code to Sonic 1, ATBT-AA32. When it's converted to hex in Kega (or in a tool I have that can convert from GG to hex and back) becomes 000338:6004 which is the hex conversion of the above Game Genie code.
However I don't believe it's possible to convert GG to PAR or hex to PAR (as far as I can tell) since they're completely different things. Although, I'm probably wrong on this.
GG/Hex and PAR codes should work easily for the 32X if you ever add support for it.
Sega CD on the other hand is very, very tricky to use any cheats with. I know you can hack the ISOs of the games (or use hex addresses) for only a select few games. PAR code creation and use is only possible for those games that use the Genesis RAM (Sonic CD for example). However, games that use Word RAM are way, way more tricky, if not impossible.
Game Gear can use Game Genie and Pro Action Replay. Examples of this are... 009-04F-3BE is the Game Genie code for infinite lives in Sonic 2, while 00D2-4009 is the Pro Action Replay code for infinite lives in Sonic 1.
Sega Master System can only use Pro Action Replay. An example of this is 00D2-4609 infinite lives for Sonic 1. PAR for GG and SMS are similar in this case.
Yea, cheating is very confusing for the various systems. Might want to ask Steve Snake about this stuff, since he knows way more stuff about it than me. Also, if you do try to support 32X and Sega CD there's a way to determine how accurate it is. Run games against Kega Fusion, since it's nearly fully hardware accurate for both systems. I suppose it's as close as you can get to the real thing.
-
- Trooper
- Posts: 394
- Joined: Mon Feb 20, 2006 3:11 am
- Location: Space
-
- Trooper
- Posts: 394
- Joined: Mon Feb 20, 2006 3:11 am
- Location: Space
Nope, users can go to sites like GSCentral and find existing codes for games. People can edit/create their own codes themselves (like I do), but for the normal user, it's not really needed as codes come complete.
Here, some codes (PAR and GG converted to hex) for Sonic 2...
000344:6004 MASTER CODE (MUST BE ENTERED)
FFFFD0:0001 Enable Stage Select
FFFFD2:0001 Enable Debug Mode
FFFFB1:0007 Have All Chaos Emeralds
FFB02B:0002 Invincibility
FFFE12:0009 Infinite Lives
FFFE24:0007 Unlimited Time
FFFF73:0000 Play As Sonic & Tails
FFFF73:0001 Play As Sonic Only
FFFF73:0002 Play As Tails Only
FFFF73:0003 Play As "Weird" Tails Only
FFFE21:0001 Always Have 1 Rings
FFFE21:0032 Always Have 50 Rings
01217E:6004 Sonic Doesn't Lose Rings When Hit
012192:6004 Tails Doesn't Lose Rings When Hit
01ABEC:604E Super Sonic Doesn't Lose Rings With Time
FFFE19:0001 Sonic Looks Like Super Sonic (Disables Super Sonic)
FFB028:00FA Sonic Never Drowns
FFB068:00FA Tails Never Drowns
FFF64A:FFFF Disable Water On Levels
0041C0:31C4 Start Most Levels With Some Rings
0FCBBC:0000 The Regular Level Music Plays When Super Sonic
These are complete codes. No editing needed. Try them.
EDIT: Here, I convered them to Regen's .dat format in PAR/Hex form...
[0]
Name=MASTER CODE (MUST BE ENTERED)
0=Off
1=On,000344:6004
[1]
Name=Level Select
0=Off
1=Enable,FFFFD0:0001
2=Disable,FFFFD0:0000
[2]
Name=Debug Mode
0=Off
1=Enable,FFFFD2:0001
2=Disable,FFFFD2:0000
[3]
Name=Chaos Emerald Modifier
0=Off
1=None,FFFFB1:0000
1=One,FFFFB1:0001
1=Two,FFFFB1:0002
1=Three,FFFFB1:0003
1=Four,FFFFB1:0004
1=Five,FFFFB1:0005
1=Six,FFFFB1:0006
1=Seven,FFFFB1:0007
[4]
Name=Invincibility
0=Off
1=On,FFB02B:0002
[5]
Name=Infinite Lives
0=Off
1=On,FFFE12:0009
[6]
Name=Infinite Time
0=Off
1=On,FFFE24:0000
[7]
Name=Character Modifier
0=Off
1=Sonic And Tails,FFFF73:0000
2=Sonic,FFFF73:0001
3=Tails,FFFF73:0002
4="Weird" Tails,FFFF73:0003
[8]
Name=Rings Modifier
0=Off
1=1 Ring,FFFE21:0001
2=50 Rings,FFFE21:0032
3=100 Rings,FFFE21:0064
[9]
Name=Doesn't Lose Rings When Hit
0=Off
1=Sonic,01217E:6004
2=Tails,012192:6004
[10]
Name=Super Sonic Doesn't Lose Rings With Time
0=Off
1=On,01ABEC:604E
[11]
Name=Sonic Looks Like Super Sonic (Disables Super Sonic)
0=Off
1=On,FFFE19:0001
[12]
Name=The Regular Level Music Plays When Super Sonic
0=Off
1=On,0FCBBC:0000
[13]
Name=Never Drown
0=Off
1=Sonic,FFB028:00FA
2=Tails,FFB068:00FA
[14]
Name=Disable Water On Levels
0=Off
1=On,FFF64A:FFFF
[15]
Name=Start Most Levels With Some Rings
0=Off
1=On,0041C0:31C4
Here, some codes (PAR and GG converted to hex) for Sonic 2...
000344:6004 MASTER CODE (MUST BE ENTERED)
FFFFD0:0001 Enable Stage Select
FFFFD2:0001 Enable Debug Mode
FFFFB1:0007 Have All Chaos Emeralds
FFB02B:0002 Invincibility
FFFE12:0009 Infinite Lives
FFFE24:0007 Unlimited Time
FFFF73:0000 Play As Sonic & Tails
FFFF73:0001 Play As Sonic Only
FFFF73:0002 Play As Tails Only
FFFF73:0003 Play As "Weird" Tails Only
FFFE21:0001 Always Have 1 Rings
FFFE21:0032 Always Have 50 Rings
01217E:6004 Sonic Doesn't Lose Rings When Hit
012192:6004 Tails Doesn't Lose Rings When Hit
01ABEC:604E Super Sonic Doesn't Lose Rings With Time
FFFE19:0001 Sonic Looks Like Super Sonic (Disables Super Sonic)
FFB028:00FA Sonic Never Drowns
FFB068:00FA Tails Never Drowns
FFF64A:FFFF Disable Water On Levels
0041C0:31C4 Start Most Levels With Some Rings
0FCBBC:0000 The Regular Level Music Plays When Super Sonic
These are complete codes. No editing needed. Try them.
EDIT: Here, I convered them to Regen's .dat format in PAR/Hex form...
[0]
Name=MASTER CODE (MUST BE ENTERED)
0=Off
1=On,000344:6004
[1]
Name=Level Select
0=Off
1=Enable,FFFFD0:0001
2=Disable,FFFFD0:0000
[2]
Name=Debug Mode
0=Off
1=Enable,FFFFD2:0001
2=Disable,FFFFD2:0000
[3]
Name=Chaos Emerald Modifier
0=Off
1=None,FFFFB1:0000
1=One,FFFFB1:0001
1=Two,FFFFB1:0002
1=Three,FFFFB1:0003
1=Four,FFFFB1:0004
1=Five,FFFFB1:0005
1=Six,FFFFB1:0006
1=Seven,FFFFB1:0007
[4]
Name=Invincibility
0=Off
1=On,FFB02B:0002
[5]
Name=Infinite Lives
0=Off
1=On,FFFE12:0009
[6]
Name=Infinite Time
0=Off
1=On,FFFE24:0000
[7]
Name=Character Modifier
0=Off
1=Sonic And Tails,FFFF73:0000
2=Sonic,FFFF73:0001
3=Tails,FFFF73:0002
4="Weird" Tails,FFFF73:0003
[8]
Name=Rings Modifier
0=Off
1=1 Ring,FFFE21:0001
2=50 Rings,FFFE21:0032
3=100 Rings,FFFE21:0064
[9]
Name=Doesn't Lose Rings When Hit
0=Off
1=Sonic,01217E:6004
2=Tails,012192:6004
[10]
Name=Super Sonic Doesn't Lose Rings With Time
0=Off
1=On,01ABEC:604E
[11]
Name=Sonic Looks Like Super Sonic (Disables Super Sonic)
0=Off
1=On,FFFE19:0001
[12]
Name=The Regular Level Music Plays When Super Sonic
0=Off
1=On,0FCBBC:0000
[13]
Name=Never Drown
0=Off
1=Sonic,FFB028:00FA
2=Tails,FFB068:00FA
[14]
Name=Disable Water On Levels
0=Off
1=On,FFF64A:FFFF
[15]
Name=Start Most Levels With Some Rings
0=Off
1=On,0041C0:31C4
-
- Trooper
- Posts: 394
- Joined: Mon Feb 20, 2006 3:11 am
- Location: Space
You are very welcome. I posted some examples in Regen's .dat format above for you to play with.
Edit: Just tried Super Street Fighter II and it does indeed crash the emulator. Not surprising, since the game is too large. I wonder if this could be considered a bug, as Kega does support it regardless of it being 5MB.
Another "issue" I've encountered is that sometimes the left button on my gamepad doesn't respond until after a couple presses. Gens has always had this problem for me, but strangely, I don't have this issue with Kega Fusion.
Edit: Just tried Super Street Fighter II and it does indeed crash the emulator. Not surprising, since the game is too large. I wonder if this could be considered a bug, as Kega does support it regardless of it being 5MB.
Another "issue" I've encountered is that sometimes the left button on my gamepad doesn't respond until after a couple presses. Gens has always had this problem for me, but strangely, I don't have this issue with Kega Fusion.
-
- Trooper
- Posts: 394
- Joined: Mon Feb 20, 2006 3:11 am
- Location: Space