Jump to content
IGNORED

ProSystem Source Code Now Available!


Trebor

Recommended Posts

NightSprinter,

These are also broken on the old version, so at least nothing was broken with carts with the update. I did see where the 128k versions of Baseball, Tank Command, Tower Toppler, and Water Ski work so at least there is another option with those games.

 

I can see where OpenGL(Stella) and Direct3D(Visual Boy) have ways to set bilinear filtering but I don't see how DirectDraw does it and that's what is used in Prosystem. I'm sure there is a way to do it, I just can't find it. Maybe I can throw in a way to scale it in software so at least there's an option.

 

-Brian

Link to comment
Share on other sites

I can see where OpenGL(Stella) and Direct3D(Visual Boy) have ways to set bilinear filtering but I don't see how DirectDraw does it and that's what is used in Prosystem. I'm sure there is a way to do it, I just can't find it. Maybe I can throw in a way to scale it in software so at least there's an option.

 

-Brian

You shouldn't need to add an option to scale in software. DirectDraw handles the scaling, and will probably do so more efficiently than a home-made blitter anyway, since it's using the 3D hardware. In OpenGL, it's just 2 or 3 commands to change from one to the other. I haven't written much DirectX code in a long while, but I'm sure there's something similar. I removed all that code from Stella when it was ported to SDL, but I'm sure it's still in the CVS history, if you feel like looking.

 

BTW, beware of starting a port; you'll be hounded until it has every possible feature. I think you're beginning to see that now :) I originally started on Stella the same way, by just adding bits here and there. That was in 2001 ;)

Link to comment
Share on other sites

Your right, it's *dangerous* picking something up! I certainly understand the feature requests. Hell, I updated it so I could have joystick support myself. But definitely at some point very soon, I want to get back to my own project.

 

I'll look a little more at the DirectX thing and maybe at your old Stella stuff and call it done for now...

 

-Brian

Link to comment
Share on other sites

Good news!

 

SDL is a lot easier to use than I remember. After a couple of hours of hacking, I've got ProSystem working on OS X to the point where it'll load Donkey Kong and play through a couple of levels. At this point, it's probably way too early to release any code -- there's no UI, I've only hooked up the keyboard input and graphics, and the display code is kind of an ugly hack. But it's looking promising at least.

 

Unfortunately, I can't seem to take screenshots of SDL apps on OS X, so you'll have to take my word for it right now. Once I hook up the sound, I'll probably try it out on my Linux machine and see if I have any better luck getting a screenshot.

Link to comment
Share on other sites

BTW, beware of starting a port; you'll be hounded until it has every possible feature. I think you're beginning to see that now :) I originally started on Stella the same way, by just adding bits here and there. That was in 2001 ;)

 

 

SDL is a lot easier to use than I remember. After a couple of hours of hacking, I've got ProSystem working on OS X to the point where it'll load Donkey Kong and play through a couple of levels.

 

You guys are making me think about porting Stella's debugger to ProSystem, or porting ProSystem's emulation core to Stella... how cool would that be?

Link to comment
Share on other sites

I really have to give credit to Brian for separating out the emulation core from the OS-dependent layer. Considering how long it's been since I've used SDL, the porting process has been surprisingly smooth.

 

My SDL port's still nowhere in a releasable state: the sound doesn't work right, the display code's still kind of a hack, and there's still no UI. But to give you a glimpse of what I've gotten working so far, I've attached a few screenshots of ProSystem running under Ubuntu Linux 6.10.

 

I'm going to take a break for now; I'll probably try attacking the sound code in a day or two.

post-1780-1168121528_thumb.png

post-1780-1168121538_thumb.png

post-1780-1168121542_thumb.png

Link to comment
Share on other sites

Ya know, if you do nothing else eegt97, I'm extremely happy with joystick support and an accurate palette! If you happen to fix the Direct3D blurring, great, if not... I'm still 1,000 happier with this version than the previous one! :D

No problem, it's frustrating since the blurring should be an easy thing to fix. I think that Hackmann is on to the better long term solution anyway by using SDL. I use it on my emu and it just make things easier to me.

 

I made contact with Greg about the source and what his intentions were. He asked if I could send the binaries and source to him to post on his site as he seems pumped about the joystick update. He indicated he had been slowly working on another version but I didn't a real warm fuzzy about whether or not he would finish.

 

Anyway, I sent him another email asking if he remembered the blurring, if not I'll probably just send what I have for him to post.

 

And Trebor, thanks for your comments as always!

 

Thanks,

Brian

Link to comment
Share on other sites

I really have to give credit to Brian for separating out the emulation core from the OS-dependent layer. Considering how long it's been since I've used SDL, the porting process has been surprisingly smooth.

 

My SDL port's still nowhere in a releasable state: the sound doesn't work right, the display code's still kind of a hack, and there's still no UI. But to give you a glimpse of what I've gotten working so far, I've attached a few screenshots of ProSystem running under Ubuntu Linux 6.10.

 

I'm going to take a break for now; I'll probably try attacking the sound code in a day or two.

That's sweet! Even just a command line version would be great to use with a frontend. And you don't need to thank me, Greg had already made it easy.

 

-Brian

Link to comment
Share on other sites

That's sweet! Even just a command line version would be great to use with a frontend.

Stage 1 is to get it working decently with a command-line interface. If I'm feeling brave, Stage 2 is to see if I can get wxWidgets + SDL to work (since I've always been tempted to try).

 

And you don't need to thank me, Greg had already made it easy.

Whoops! Well, anyway, thanks to him for the initial code.

Link to comment
Share on other sites

I came across an issue with the controller code. I'll try to explain it as clear as possible. Here's a list of how my controllers appear under 'Game Controllers' under XP:

post-18-1168125046_thumb.png

They are setup as follows in order listed:

Saitek P880 Pad - Store bought retail USB game controller.

Saitek P880 Pad - 2nd controller same model/brand as above listed.

Retr - 1st RetroUSB adapter NES to USB connect to an orginal model NES gamepad.

Retr - 2nd RetroUSB adapter NES to USB connect to another original model NES gamepad.

Retr - 3rd RetroUSB adapter Atari/C64 to USB connected to a new cloned original Atari 2600 controller.

Retr - 4th RetroUSB adapter Atari/C64 to USB connected to another cloned original Atari 2600 controller.

 

The "Retr" controllers specific for the NES work great under Nestopia and map without any issues.

The "Retr" controllers specific for the Atari/C64 work great both under Stella as well as WinVICE without an issues.

All controllers listed above map and work perfectly under MAME and MESS without any issues. In the order listed above, the controllers are recognized under those emulators as J1 thru J6 (aka Joysticks/Pad 1 thru Joystick/Pad 6).

 

However, under ProSystem the Retr controllers do not map properly. ProSystem only utilizes the first "Retr" controller (1st NES controller), although all the "Retr" controllers appear listed in the same order under ProSystem Controller setup:

post-18-1168125868_thumb.png

 

No matter which "Retr" I select from the list it always selects the first "Retr" controller (1st NES controller)

 

Here is the Prosystem.ini file with the 1st "Retr" controller (1st NES controller) mapped and working perfectly:

ProSystem_Retr1mapped.zip

This is a snapshot of how the 'Input' section appears:

post-18-1168127159_thumb.png

 

If I select any of the other "Retr" controllers from the list the above snapshot/files do not change.

 

Is there anyway to correct this thru the current way controller setup is handle, or is there a way to implement the way MAME/MESS handles the controller devices? In other words, instead of select from a list of controllers and then select from a list of inputs a controller is capable of from a list of inputs, you rather select the input you desire, for example: Controller 1 Up, then actually perfom the action on the controller itself (Pressing Up on the desired controller), for it to register.

 

Sorry, for the long winded post, but I hopefully made this as clear and understandable as possible.

 

-Trebor

Edited by Trebor
Link to comment
Share on other sites

BTW, beware of starting a port; you'll be hounded until it has every possible feature. I think you're beginning to see that now :) I originally started on Stella the same way, by just adding bits here and there. That was in 2001 ;)

 

 

SDL is a lot easier to use than I remember. After a couple of hours of hacking, I've got ProSystem working on OS X to the point where it'll load Donkey Kong and play through a couple of levels.

 

You guys are making me think about porting Stella's debugger to ProSystem, or porting ProSystem's emulation core to Stella... how cool would that be?

Note that I'm not volunteering to do this right now, but the 2600 part of Stella is really contained in two classes, Console and TIA. The rest of it is CPU and processor emulation, and bankswitch types. If you could create similar classes for the 7800 (Console7800 and Maria?), and assuming there aren't too many differences in the other hardware, it's possibly feasible to integrate this stuff. However, I'm not a big fan of integrating different emulators together, since it often results in a "jack of all trades, master of none" situation. I look at Mess as an example of this. While it emulates many things, the standalone emulators are almost always better. This usually happens because the different systems are so different. But since a 2600 and a 7800 are similar, perhaps it can be done.

 

If someone were really serious about this, and willing to dedicate the time, I'd definitely consider helping with it (assuming it would get approval from Brad). The Stella codebase is definitely well abstracted, and could probably handle it. And one could leverage the built-in GUI code, so that you didn't need to use an external widget library (wxWidgets, MFC, etc).

Link to comment
Share on other sites

However, under ProSystem the Retr controllers do not map properly. ProSystem only utilizes the first "Retr" controller (1st NES controller), although all the "Retr" controllers appear listed in the same order under ProSystem Controller setup:

Try this, it saves by joystick index instead of name. Nothing automatic here, you have to set it up. Also, if you keep the ini file, you need to reset all controls to what you want. Might be best to delete Prosystem.ini and start over. I don't have multiple joysticks of the same type, so I couldn't verify that it solves the problem.

 

-Brian

Prosystem.zip

Link to comment
Share on other sites

Try this, it saves by joystick index instead of name. Nothing automatic here, you have to set it up. Also, if you keep the ini file, you need to reset all controls to what you want. Might be best to delete Prosystem.ini and start over. I don't have multiple joysticks of the same type, so I couldn't verify that it solves the problem.

 

-Brian

 

P E R F E C T ! Works like a charm:

post-18-1168255086_thumb.png

 

Once again Brian - You the man!!!

 

-Trebor

Link to comment
Share on other sites

I'm looking forward to a polished SDL port... a GP2X version wouldn't be too hard after that :)

 

--Zero

Which would mean that a PSP port would be right behind it.

Zx-81, who coded teh PSPatari 800XL/5200 emulator for the PSP is currently taking a look at the Prosystem source code to see if a PSP version is feasible.

 

Nice.

Link to comment
Share on other sites

I've attached an early, alpha-quality port of ProSystem to SDL. Since there's no real UI, most of the options are configured through ProSystem.ini (which is created the first time you run ProSystem) and can't be changed at runtime. The controls are currently hard-coded to the Windows version's default keys, and joystick isn't supported yet. There're also occasional skips in the audio.

 

If you're not scared off yet, then I'd appreciate anyone who can give it a test. It seems to work fine on Ubuntu 6.10 AMD64 and OS X 10.4.8, but in principle it should work on any OS supported by SDL.

 

If work permits, I'll fix up the input code later this week, and maybe even take a crack at a wxWidgets GUI.

 

(Edit: for some reason, the board software doesn't think I actually mean it when I try to attach a .tar.bz2 file, so I've added a .zip extension to the end. Be sure to rename it after downloading it!)

prosystem_sdl.tar.bz2.zip

Edited by Hackmann
Link to comment
Share on other sites

Works ok so far on my Debian box. One thing I noticed and really annoyed me: You're writing ProSystem.ini to the current directory, and when one launches the program from another working directory again, that directory will end up with a ProSystem.ini too.

Link to comment
Share on other sites

Whoops -- I forgot that the location of the configuration file was hardcoded. I've hacked together a small change to Console.cpp which writes the configuration file to ~/.prosystemrc on UNIX and OS X -- it's still hardcoded, but at least it goes somewhere useful. Drop it in the sdl/ directory and recompile.

 

I'll figure out something better (e.g., letting you control the location of the config file with a command-line parameter) once I deal with the input code.

 

(Note: again, the attachment has an extraneous .txt extension, since apparently .cpp files are forbidden.)

Console.cpp.txt

Link to comment
Share on other sites

I've hacked together a small change to Console.cpp which writes the configuration file to ~/.prosystemrc on UNIX and OS X -- it's still hardcoded, but at least it goes somewhere useful.

 

This is perfectly OK, and should imo be left in as default location for the configuration file.

Edited by Tom
Link to comment
Share on other sites

How's the compatibility on the linux boxes?

 

Is it running Ninja Golf, Mean 18, Ace of Aces, or Kung-Fu Master correctly?

 

The PSP port taht Zx-81 did has some spotty compatibility problems, and if this one doesn't, it might be easier to port from a Linux port than the conversion he made from Windows.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...