Jump to content
IGNORED

ProSystem Source Code Now Available!


Trebor

Recommended Posts

So, after poking around in the source code, I can't really find where it's supposed to call out the Prosystem.dat file to get the proper rom info.

 

Where is this done, so I can try to apply it to the PSP port?

 

You're right though. in the Windows port, if the Prosystem.dat file isn't in the same directory as the prosystem.exe, I get the exact same compatibility errors. This SHOULD be an easy fix.

Link to comment
Share on other sites

In the Windows version, the console_Open(std::string) function in Win/Console.cpp does the following:

 

if(cartridge_Load(filename)) {
sound_Stop( );
display_Clear( );
database_Load(cartridge_digest);
...
 }

 

That database_Load() call is the important one. Since that code is part of the OS-dependent layer, you'll have to look for the equivalent block in the PSP-specific code. (In the SDL port, it's in the Console::open(const std::string &) method in sdl/Console.cpp.)

 

My code had a bug where it didn't actually initialize the database until after the cartridge was loaded, so the database_Load() call always failed. It's possible (but unlikely) that the PSP port has a similar problem.

Link to comment
Share on other sites

My code had a bug where it didn't actually initialize the database until after the cartridge was loaded, so the database_Load() call always failed. It's possible (but unlikely) that the PSP port has a similar problem.

The fact that you keep using past tense here leads me to believe that you've already solved the bug? If so, can you please post a diff or something? I'd like to try porting your code to the GP2X, seeing as my attempt to port Abuse to the system has somewhat stalled :(

 

--Zero

Link to comment
Share on other sites

My code had a bug where it didn't actually initialize the database until after the cartridge was loaded, so the database_Load() call always failed. It's possible (but unlikely) that the PSP port has a similar problem.

The fact that you keep using past tense here leads me to believe that you've already solved the bug? If so, can you please post a diff or something? I'd like to try porting your code to the GP2X, seeing as my attempt to port Abuse to the system has somewhat stalled :(

 

--Zero

I was planning on releasing another snapshot this weekend, which would include the database bug fix among other fixes and enhancements. If you want to hack on the code as-is, you can replicate the database bug fix by finding the

configuration->load(...);

statement in Console::open(), and moving it so that it's right after the

configuration = new Configuration(...);

statement in Console's constructor. (Like I said: very stupid bug.)

Link to comment
Share on other sites

Here is the final version: PSP7800 v. 1.0.4:

 

http://forums.qj.net/f-zx-81s-homebrew-rel...lity-91052.html

 

Silly forum software ate your URL... the path got turned into "f-zx-81s-homebrew-rel...lity-91052.html". which can't be right (404 not found).

 

Correct URL seems to be http://forums.qj.net/f-zx-81s-homebrew-rel...lity-91052.html

 

...but it requires you to register at the site. Could you possibly just post the archive here in this thread?

Edited by Urchlay
Link to comment
Share on other sites

If some one were to update the code in RIOT.CPP to set INTFLG ($285) (high bit I think) in the code when the RIOT timer expires, Beef Drop might work. Not sure if it gets cleared after read or when a new timer is set.

 

--Ken

Ok, I finally looked it up in the datasheet. After the timer reaches 0, on the next count, it should wrap around and at the point the high bit of INTFLG should get set. The timer countdown interval then changes (not relevant to make Beef Drop work). When the INTFLG is read, it should be set to 0.

 

Beef Drop does a

LDA INTFLG

BMI TimerExpired

 

If the flag never gets set, the game play will essentially be frozen.

 

--Ken

Link to comment
Share on other sites

Hi

i have problems to use joysticks.I can choose them,but the do not work. :(

greetings Walter

If you updated from a previous version, you might want to try deleting "Prosystem.ini" and then start the program and set up the controllers again. Also, make sure you are setting the "Part / Key" for all.

 

-Brian

Link to comment
Share on other sites

  • 1 month later...

I have a request (actually 2):

 

In order to use this with a frontend, is there any way:

1) To have the status of the Menu Bar (on / off) stored each time the emulator is run? This way when it is run in full screen mode and you hide the menu bar by hitting 'ESC', it is stored that way so it doesn't come up each time the emulator is run?

2) To be able to configure a different keypress for the Menu Bar on or off so that we can configure the 'ESC' key to exit out of the emulator (again for frontends)?

 

Thanks for your time... :)

 

Bob

Link to comment
Share on other sites

I have a request (actually 2):

 

In order to use this with a frontend, is there any way:

1) To have the status of the Menu Bar (on / off) stored each time the emulator is run? This way when it is run in full screen mode and you hide the menu bar by hitting 'ESC', it is stored that way so it doesn't come up each time the emulator is run?

2) To be able to configure a different keypress for the Menu Bar on or off so that we can configure the 'ESC' key to exit out of the emulator (again for frontends)?

 

Thanks for your time... :)

 

Bob

I'll try to take a look at those soon...

 

-Brian

Link to comment
Share on other sites

I have a request (actually 2):

 

In order to use this with a frontend, is there any way:

1) To have the status of the Menu Bar (on / off) stored each time the emulator is run? This way when it is run in full screen mode and you hide the menu bar by hitting 'ESC', it is stored that way so it doesn't come up each time the emulator is run?

2) To be able to configure a different keypress for the Menu Bar on or off so that we can configure the 'ESC' key to exit out of the emulator (again for frontends)?

 

Thanks for your time... :)

 

Bob

I'll try to take a look at those soon...

 

-Brian

 

I also agree these would be great additions for us cabinet users. Also, maybe a commandline switch for fullscreen mode, such as -fs.

 

Thanks for the efforts,

John

Link to comment
Share on other sites

  • 2 weeks later...

If some one were to update the code in RIOT.CPP to set INTFLG ($285) (high bit I think) in the code when the RIOT timer expires, Beef Drop might work. Not sure if it gets cleared after read or when a new timer is set.

 

--Ken

I've implemented the INTFLG, but I've run into a problem. It appears the timer is never getting set. What does Beef Drop do (if anything) to setup the timer? I'm wondering if Prosystem doesn't initialize something or if the timer is just not implemented correctly. I'm sure I'll figure it out eventually, but any ideas to help would be appreciated.

 

Thanks,

Brian

Link to comment
Share on other sites

  • 2 weeks later...

Try this executable out. It attempts the following:

 

* Command Line switches

* Implement INTFLG (Beef Drop)

* Allow changing menu and exit keys

 

Let me know how it works and if it breaks anything. I'm not sure if I implemented the timer correctly to make Beef Drop work, so I'll continue to look at it. If everything works right I'll send to Greg for posting on his site. Thanks!

 

-Brian

 

EDIT: I also meant to add that it should save the state of the menu bar as well...

 

 

Prosystem12.zip

Edited by eegt97
Link to comment
Share on other sites

Try this executable out. It attempts the following:

 

* Command Line switches

* Implement INTFLG (Beef Drop)

* Allow changing menu and exit keys

 

Let me know how it works and if it breaks anything. I'm not sure if I implemented the timer correctly to make Beef Drop work, so I'll continue to look at it. If everything works right I'll send to Greg for posting on his site. Thanks!

 

-Brian

 

EDIT: I also meant to add that it should save the state of the menu bar as well...

 

 

Prosystem12.zip

 

beef drop now runs, but runs too fast.

Link to comment
Share on other sites

EXCELLENT!!!!

 

Great Job - I thank you, and my Arcade Cabinet thanks you :)

Cool, good to here those additions worked for you. I'll be sending out for release once I decide what to do about...

 

beef drop now runs, but runs too fast.

I'm not suprised. I'll study a little more.

 

Thanks,

Brian

Link to comment
Share on other sites

I just started playing around with 7800 development and it seems the emulator does something nicely which unfortunately the real hardware does not.

 

In the emulator, when using write mode 2, pixel colors of xyy00, where yy<>00, are not transparent, even when Kangaroo mode is off. That's how the hardware logically SHOULD behave, but it's not how it actually DOES behave.

Link to comment
Share on other sites

I just started playing around with 7800 development and it seems the emulator does something nicely which unfortunately the real hardware does not.

 

In the emulator, when using write mode 2, pixel colors of xyy00, where yy00, are not transparent, even when Kangaroo mode is off. That's how the hardware logically SHOULD behave, but it's not how it actually DOES behave.

 

The real hardware also does some things that the emus do not. Figuring out what they are is the hard part. :roll:

 

Mitch

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...