Next Generation Emulation banner
1 - 13 of 38 Posts

· Registered
98 Posts
Discussion Starter · #1 · (Edited)
RetroCopy v0.400B has been released. RetroCopy is a cycle accurate Sega Master System, Nintendo and Arcade emulator.

This one has a lot of major additions.

If you are an emulator related site could you please link to the individual emulator pages for RetroCopy if you put it in any categories :-
Sega Master System (SMS) Emulator for the Sega Master System emulation
Nintendo Entertainment System (NES) Emulator for Nintendo emulation
Arcade Emulator for Arcade emulation

What's new?

-[EMU] Added Sega System E arcade emulation. The first cycle accurate Sega System E arcade emulator. It's more accurate than MAME and sounds better!
-[EMU] Added new YM2413 (SMS sound chip) emulator which sounds a lot better than old one
-[EMU] Improved SMS/SEGAE VDP performance by 40%
-[EMU] Improved Z80 emulator performance by 20%
-[EMU] Changed the way the YM2413 and SMS-SN79489 were emulated in comparison to other components. They are now accurate to the cycle in line with the Z80/VDP rather than being slave devices, this comes at a small cost in performance but is less cluttered
-[EMU] Fixed SN79489 bug where data byte wasn't correctly setting noise channel low bits and a bug with noise channel using incorrect period when set to TONE2 mode
-[EMU] Fixed various bugs relating to border emulation in the SMS VDP
-[EMU] Added TMS9918 chaining to the SMSVDP
-[EMU] Switched default NES buttons around to match real control pad (NIKOLA)
-[EMU] Fixed a few bugs in the Z80 core relating to undocumented instructions that the SEGA E games used
-[EMU] Refactored every emulator core and implemented versionized save states in preparation for disk loading/saving

-[CORE] Added an emulator benchmark. Allows you to see how many millions of emulated cycles your system can push. The latest CPUs are getting close to 150 million emulated cycles in RetroCopy now!
-[CORE] Implemented new GAME ROM format based on suggestions from users. Now each GAME file can have multiple ROMs inside it, each with their own settings. Works for every system whether console or arcade and achieves compression ratios 20:1 and over in some cases over plain ROM data. There are too many new GAME features added to list here so check my blog for more details.
-[CORE] RetroCopy now automatically converts SMS/NES/ARCADE ROMs it detects to new GAME format on first load, no more trouble with conversion as it's seamless
-[CORE] Added graphics filters SCALE2x / SCALE4x / SCALE4x with scanlines, they run in a separate thread to maximize performance on multicore CPUs.
-[CORE] Added pixel filter and made it the default when fullscreen. Can switch between this and linear filtering with all the filters
-[CORE] Added ability for cores to specify video rotations if necessary for arcade games, like those in the sit down ****tail format
-[CORE] Fixed bug that stopped fast forward working
-[CORE] Fixed crash bug for people with old or non existant OpenGL based hardware. RetroCopy now works in the Microsoft "Software" renderer though hardware accelleration is a lot better.
-[CORE] Stopped SDL from dynamically creating some text files (stderr.txt and stdout.txt)

-[3D] Tweaked the pixel shaders a little bit to give a better lighting effect
-[3D] Fixed an issue with mouse view movement giving variable results depending upon the framerate

-[GUI] When clicking on PLAY GAMES the default is now looking at a game list with a 3D TV already selected, rather than having to first select a 3D TV to play on
-[GUI] Changed around the "in game" menu buttons and mode a more distinct difference between the 3D world and playing games
-[GUI] Added a different way to roam the virtual 3D game room using the mouse scroll buttons (Tommy)
-[GUI} Added UNICODE (UTF-8 externally, UTF-16/32 internally) support to the GUI, though none of the current fonts support the more exotic languages.
-[GUI] Changed GUI to accept resource image/cursor data as a per project setting
-[GUI] Added more cursor modes to give some feedback to the user
-[GUI] Added features to listview such as in place editing, indenting, etc
-[GUI] Fixed some small bugs in the software renderer
-[GUI] Added YEAR RELEASED and NUMBER OF PLAYERS to the game display list, taken from the GAME file.
-[GUI] Now up to six 3D game covers can be loaded when you click on a game
-[GUI] Increased size of 3D gamebox window to fit in more 3D boxes at once
-[GUI] Added new Sega Master System 3D gamebox which is a lot more accurate and based on real world dimensions
-[GUI] Added shader based lighting to the 3D Gameboxes (if capable) which makes them near photo-realistic now.
-[GUI] Changed the way you select to play SMS games. Now you select the console you want (SMS2 PAL, JAPANESE SMS, MARK III, SMS1 NTSC, etc) instead of selecting the video/region settings manually. There are slight differences in each console and RetroCopy emulates them for accuracy
-[GUI] Implemented keyboard navigation and searching within listview contents
-[GUI] Improved the game select screen and added some icons

-[GAMEDB] Wrote a completely new GAME database editor in the RetroCopy GUI code. If you want to help with becoming a GAME ROM database maintainer for the NES/SMS/etc please contact me.

· Registered
98 Posts
Discussion Starter · #3 ·
The benchmark is only primitive at the moment but it does give a good indication of how well your CPU can emulate systems. I will extend it over the next few versions to do multicore tests and things of this nature which will be cool. A new way to "real world" stress test your CPU in a 3D environment. Goodbye Prime95 ;)

· Registered
98 Posts
Discussion Starter · #10 ·
Thanks for the kind words guys!

Awesome job!!!! just the kind of software i always wanted to see!!!"Standard Emu- GUI" SHOULD DIE AND BURN IN HELL!
It was just a playful look at things! :)

I think there have been quite a few well designed emulators over the last decade (though most around the DOS era were the best as they all had to be custom). I like your work too.

· Registered
98 Posts
Discussion Starter · #12 ·
Are you using Vista or Win7 with UAC on by any chance? I've tested converting 1000 roms at once and it went fine, but all those files didn't have things like "Read only" flags or anything else weird. One tester found an early bug that if something was read only it couldn't delete it and that led to issues that I thought I fixed.

Depending upon the ROMs you have they may be "dirty" as in have a 512 byte header. RetroCopy eventually will support all dirty ROMs and clean them up itself but you may have to use another tool (SMSChecker is a good one). A clean version of Astro Warrior and PITPOT is in the database.

A feature coming for 0.500B is allowing the auto converting of unknown .SMS/.NES games and show them as such in the interface. At the moment it can be a bit clunky when it finds games it isn't aware of and keeps telling you about them. :)

I'll also be releasing my database editor sometime so that people can create new ones for their own homebrew games so that no conversion is needed. Until a few versions away the GAME format may change a little bit if things are found. I thought it was good for instance until someone suggested also including foreign names along with a converted english name, such that you could see real japanese/korean/etc names for games instead of the englishized version. I can't really see what else can change in the main part of the GAME format though, so it should be fine. There are system specific headers though and the NES currently doesn't have it's own new one and uses the old INES format. I want to change this but need help from any NES interested guys due to the amount of games.

Also what do you mean by "input" it should be working except for the light phaser. Due to the switch to 3D I had to remove the old light phaser code. I was thinking of adding a "Call of Duty" type feel such that you have a virtual light gun in your hand and had to aim it at the screen. I think controlling a simple mouse cursor is too easy for these games and it kind of kills the fun when it isn't a challenge.

· Registered
98 Posts
Discussion Starter · #14 ·
The SMS part doesn't work well with my XBOX 360 (wired) controller, it won't "center" and if I could make a request, please let us map controls for the games, individually or based on system if possible...
Yeah these features are all planned for 0.500B. I had a few issues with the joystick too (every now and then it would think it was pressed when it wasn't) so I will have to look at the code again when I add configurable input options and maybe have dead zone type options.

0.500B won't be very long away because all the things planned for next version are rather small compared to everything I got done in this last version. I'm hoping for a release next Friday.

· Registered
98 Posts
Discussion Starter · #17 ·
Well you might want to try doing "groups" of ROMs and finding the one or the few that are causing issues, it would help me to know what is causing it! :) I'm betting there is one in there that might be a bit weird or something.

SMSChecker might be a bit old but it cleans/fixes ROMs. I'm not sure that the tool you used for TOSEC renaming fixes the header, I know GoodSMS doesn't by default. They just seem to "skip" the header. There isn't much released for SMS/GG in the last few years anyhow.

· Registered
98 Posts
Discussion Starter · #21 · (Edited)
You shouldn't delete the roms people have without a warning. i got pretty pissed when i saw that retrocopy decided to delete my roms in favor of its own madeup system.
Well you have a point. I'll try and make it more obvious for the next version.

And why makeup your own file system anyways? it just makes things incompatible with other emus.

Also, why can't you play roms that aren't found in the data base?
the database seems to only be needed to give the # of players information, title, and the year the game was made.
none of this stuff is required to emulate a game.
The GAME file tells more than just the simple visual things, it has checksums, information about other data (covers, cheats, etc) and is compressed. Rather than have to worry about 3-5 major compression libraries I only have to worry about one. It also helps with hierarchies of games, I don't want to see 30 versions of the same game that have only a few minor differences for instance, better to group them under one heading and then be able to select the version. Also without some form of database some games simply cannot play, they need to tell the emulator certain things like what is in the cartridge. Some people prefer some custom database to do it, I prefer changing ROMs because it means going forward people can write or release their own games without having to update everyones database.

Having a unified ROM system is something which just makes sense, especially with the features coming down the pipeline. There is no alternative for what RetroCopy needs besides what I have done myself. If there was I would have used it. If others can end up using what I've done then great.

finally, IMO the controls to switch from attached tv to 3d mode, and to switch from menu to ingame and etc... were all horrible. it made me dizzy.
Well ideally you wouldn't be switching all to often. There are some other ideas in the works, that make you rotate around the current TV a bit like google earth, just by holding ALT or something. Which might make it a bit easier to find your perfect angle.

(also i should mention it crashed for me 3 out of the 4 times i played around with it)
What are your system specs like? Since I don't have any old graphics cards anymore it makes it harder to test on the <2006 circa cards that a lot of people still have.

The only crashes I get are sometimes loading bad NES roms, I haven't handled all the "bad cases" yet on INES loading, apart from that I haven't had a single crash. So I believe it is to do with the more lower range systems. There is still a lot of work to be done to get things tuned up a bit for lower end systems, I have been a bit uncaring about allocating 60+MB of RAM for a rewind buffer on SEGA-E for instance.

RetroCopy is really aimed at the future and not at the "single core, 2d accelerated 1GHz PC" market. There are plenty of other emulators which do that stuff fine! So I do want to fix crashes, yes, because I believe even those on poor PCs should be able to get a taste of the future even if it is a bit slow. But I'm not going to go out of my way to make single core CPUs very playable, it's out of my hands to some extent because you can't really have a threaded application on Windows/Linux that also uses 3D stuff without weird "lag" issues coming up (it's a thread priority issue).

anyways i think sometimes is laziness or just lack of GUI design knowledge to create something acceptable. in my case GUI design is more than that... its a passion to say the least as i love to create my own controls and even the logic behind and don´t limit myself with the Windows/coding tools ones :thumb:

anyways you have a nice point there but many other people see that different and nowdays you believe it or not graphics/GUI design is turning into a very important area as its required everywhere. to me a great coded Emulator with a crappy GUI can be viewed that way:
Yeah I agree, we both have a passion about GUIs :) . The thing is most people who do emulators don't really want to "waste time" doing a custom interface, I'm not sure why. Back in the day every DOS emulator worth its salt had one, Meka, Nesticle, Callus, ZSnes, Genecyst. These are some of the most remembered emulators. Most games and entertainment applications come with their own distinct interface, emulators are supposed to be entertainment not business apps which sit on the taskbar looking like everything else! :)

I believe it's important to have both good emulation and a good interface, hopefully that is what RetroCopy can be seen as, cycle accurate and with a custom interface that is somewhat different.

· Registered
98 Posts
Discussion Starter · #31 · (Edited)
Hmm... how can I change the resolution? >_<

Also, about the "radiocity?" effect that colors the TV's borders (and lights the room?), some screens that have a very distinct colored border don't affect the TV's border. I guess an average color is used?
The average of the screen color yes. It's a bit like ambilight on some TV sets. When I get around to doing light mapping (a bit like shadow mapping but in reverse) I'll be able to get the lighting more realistic and with shadows.

It does hurt when ROMS you can use in other emulators won't work with this emulator, and exactly why do they need deleted after being converted? Why not just move them elsewhere? Like a /converted folder so that gamers don't have to duplicate ROMS so this emulator can convert them?
Well the systems at the moment it's not much drama to have 100MB twice on your hard drive. They are stored compressed, and eventually a GAMEset will use much less space than a comparable zipped set.

I don't see them sticking with this one as the only NES emulator until it's more advanced.
I agree with this. My own belief is RetroCopy isn't on par with most of the other top line NES emulators yet, it doesn't have movies, save states or configurable input. Also the NES side needs a bit of TLC done on the Famicon and PAL versions, combined with more input devices added.

Nice gamegear screenshot :)

Out of interest, how do you run the emulator windowed? Maybe I just didn't play with it enough :/
You can't in the current version, but it does support it. Until options could be saved I wasn't going to bother with all the standard features people expect. v0.500B is bringing a lot of the more user related stuff with it.

Just a suggestion, but instead of converting and deleting the ROMs every time the emulator is ran, how about putting an option in tools to covert ROMs with a source option, and leave the ROMs in the source folder but put the converted ROMs in the destination folder?

That way ROMs would not have to be deleted or converted except when the end user chooses?
I don't really see the problem with deleting the ROMs people copy in there. I think there needs to be more of a warning that when converting, the old ROMs will be deleted like cotton mentioned. It's good not to be surprised by something.

BTW, what arcade games are supported? A text file included with the emulator listing supported ROMS would be nice...
Encryption in Sega System E

All of the SegaE games are supported, of which there are currently 7, I believe one is undumped (Slap Shooter)

Astro Flash / Transformer,Riddle of Pythagoras,Fantasy Zone 2,Tetris,Hang-on Jnr!,Opa Opa

I agree with the above, my roms work fine with every other emulator, yet with this emulator it simply crashes straight to the desktop without a single warning, and this is now with a fresh install of Win7 64bit, so thats both Vista 64 and Win7 64 for me.
It's crashing every time you click play games? Or when you try and load specific NES games? If it's everytime you click play games try getting rid of any non GAME file in the NES/SMS/arcade directory, if that doesn't work try the conversion process again.

If it's on specific NES games then yeah, I will be improving parts of the NES emulation and loader for next version so hopefully it will be less of an issue.

· Registered
98 Posts
Discussion Starter · #33 ·
well that does sound interesting, but still, not being able to play games not listed in the database is a huge disapointment.
IMO there should be some generic loader with maybe a warning that the game wasn't found in the database, and it may not play correctly.
Well every game should be in the database, official games anyhow. And others with merit. The rest will be converted to some default state and not shown as official.

are you talking about bad dumps or dumps with incorrect headers?

i'm aware theres alot of nes games that have currupt headers. but games that do follow the ines format correctly for example, shouldn't need a database afaik.
(if not then please give some examples)
No I'm not talking about games that are corrupt, I'm talking about games like Micro Machines on the SMS which only work on a single revision of the console, of which there were at least 4 officially released in its time.

My philosophy when it comes to the games is that when you have the physical game in real life you have certain information about the game at your disposal, number of players, what devices it uses and what region it is. Not only that but the cartridge itself has its own information that isn't stored in plain ROM data. So the GAME format is designed to replicate that such that it's possible to reliably play the game back, including knowing what systems it worked on, what input devices it can use and any other oddities about it.

also most games with corrupt headers are still playable if you follow the 'generally followed rules'.
for example: if byte 15 is NOT zero, then assume bytes 7 to 15 should be zero, and treat the game as if it has save ram.
Yes I'm aware of this, however Nestopia for instance has its own database that it also hotpatches ROMs with, in effect it's doing what I'm doing just in a different way, one that only applies to itself.

most of the crashes were from switching between different nes roms after i had one loaded and wanted to change it.
but i also had a crash when i tried to view the credits page.
Hmm that's weird about the credits page. Yes your system should be more than capable!

from what i've seen, i don't think any closed-source nes emu is going to be as compatible as nestopia unless it:
a) steals the source (which is illegal if you plan to keep the emu closed source).
b) gets a big, motivated, and interested team to work on it.
c) has some crazy developer that wants to spend years developing a nes emu which is on par with nestopia.

even then, you'll probably just make something on-par compatibility wise; not beat it (i assume since its open source and popular, any 'secrets' known by the community is already in the emulator)

compatibility aside though, there's features that nestopia doesn't have that may make other emus more favorable (but even feature-wise nestopia does almost everything worthwhile)

from a user point of view, its awesome theres emulators like nestopia out.
from a developer point of view, its not so awesome, as you have to compete with a beast if you want your emu to see the light of day ^^
Well that's an interesting opinion you have there. Have you developed an emulator? I just want to know what credentials you have when considering your opinion.

But either way in my opinion it doesn't take years to make a very accurate NES emulator if you're an experienced developer, you don't need to "steal source" either. There is plenty of information on how to make a cycle accurate emulator for the NES, unlike some other systems. How many lines does it take to make a NES emulator? About 8000. How long does it take to write that if you know what you're doing and have all the information?

I don't necessarily believe Nestopia is the most accurate NES emulator *all* the time anyhow. With its hotpatches it certainly has a high compatibility rate though. If the INES format wasn't so broken then other emulators would have higher compatibility rates than they do at the moment.

· Registered
98 Posts
Discussion Starter · #35 ·
Still you said it would take years to make a Nestopia clone without stealing their code, I disagree with that. Maybe if you're a casual developer. Just because some emulators have been worked on for years doesn't mean that's how long it takes to replicate their feature set. :) A lot of emulators start out from college or high school students that are still learning the craft too.

I think there is a motivation factor with emulating a lot of things on the NES also. Like emulating an input device so that one game plays that nobody probably ever liked or will play again. These are the things it make take a while to build up enough joy so that it can be taken by doing something like that. :)

· Registered
98 Posts
Discussion Starter · #37 ·
most emu devs have other things to do than work full time on an un-paying hobby; and even if they do have the time, a lot like to work on multiple projects at once.

obviously its possible to make a nestopia clone in under a year; but i'm talking about in a practical sense when you factor in
1) this is a hobby
2) you're not getting paid for this
3) the nes system has been emulated by hundreds of different people already and theres not that much interest from the users (so less motivation)
4) there may be other projects you want to work on
5) real life factors take away your time
Valid points. I've worked for years but stopped that a few years ago and am just living off my savings and other things. I'm bringing my experience from all those years working into RetroCopy. As it is now my emulator is my job and I just do other things in my spare time, kinda reversed from the typical emulator author. :)

for my nes emu personally, i decided probably don't want to spend the time making it as compatible as nestopia.
instead i want to just focus on making an overall good emulator while keeping the project fun.
Yeah there is a lot of fun to be had in emulation, no doubt. The way I see it though is if you're not going to do anything different there is little point in releasing things. Over the last 12 years I've been in emulation I haven't released very much because there is little point. The scene is full of these emulators that just never made it past the growing stage. That said I still had lots of fun developing them and helping others out. I think your approach with your NES emulator is a good one to take too, cycle granularity if done right is the way of the emulated future.
1 - 13 of 38 Posts
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.