Jump to content
IGNORED

BupSystem


TailChao

Recommended Posts

Meanwhile, in other hardware configurations not used by the commercial library - EXRAM is now supported for 32KB cartridges in both A78 and CDF format. In previous implementations only EXRAM/A8 (used by 'Rescue on Fractalus') was allowed for this cartridge type.

 

As with BupSystem's SUPER implementation - declaring your software in a CDF allows specifying the EXRAM size from 2KB - 16KB while A78's are always assumed to have the full 16KB.

 

g_defender.gif.74bfb032ebf7befe21aeb53e95381cd4.gif

 

This at least allows @PacManPlus's old Defender demo to load albeit with a bunch of garbage in overscan.

 

Addendum : Does any other software use this configuration, or is Defender the only one?

Edited by TailChao
Link to comment
Share on other sites

Wow.  I need to revisit that.

I use $6000-$7FFF for RAM...  Is that screenshot PAL?  If so, then it's not detecting the number of PAL scan lines correctly. :(  (It's supposed to auto-detect)

 

Anyway, at this point I think when I do go back to it, I may restart it - as I want to use 320B mode for the entire game.

 

Link to comment
Share on other sites

16 minutes ago, PacManPlus said:

Wow.  I need to revisit that.

I use $6000-$7FFF for RAM...  Is that screenshot PAL?  If so, then it's not detecting the number of PAL scan lines correctly. :(  (It's supposed to auto-detect)

Nope, that's NTSC. I investigated a little more this morning and found the game would run properly if all RAM (both in the cartridge and console) was initialized to zero.

 

g_defender_title.gif.a43b555e6db9ce85ea442364a9b5d26f.gif g_defender_play.gif.fc6416114307632ef08458d082640e35.gif

 

However, it wouldn't run at all if the NTSC (Atari Rainbow) BIOS was executed first. Using the PAL (Asteroids) BIOS would result in the game starting, but still with garbage. I'm not sure why the NTSC BIOS execution handoff isn't working, but there's definitely an initialization problem here.

Link to comment
Share on other sites

2 hours ago, TailChao said:

Nope, that's NTSC. I investigated a little more this morning and found the game would run properly if all RAM (both in the cartridge and console) was initialized to zero.

That's weird, as I have a routine that I put in every game that zeros out RAM before I even do anything else....

 

EDIT - I just realized that I put the DL & DLL in the $6000 area RAM in this game only...  which doesn't get zeroed out... makes sense now.

Edited by PacManPlus
Link to comment
Share on other sites

17 hours ago, PacManPlus said:

I just realized that I put the DL & DLL in the $6000 area RAM in this game only...  which doesn't get zeroed out... makes sense now.

Okay, good to confirm it.

 

This is one of the reasons I'd like to get configurable RAM reset patterns in there eventually. As of writing it's fixed to a very rude pattern which may be familiar to 3DO programmers - but allowing for all zero, all high, or something which approximates the hardware would be nice.

 

In other news, I've implemented everything in the most recent PMC1 feature set aside from the actual SPI devices which can be connected to it. The BupChip commands have also been added and are slightly changed from SOUPER's to allow for 128 music tracks instead of 32. Depending upon how thoroughly this gets vetted prior to release it may be a "secret feature" but it's at least included.

Link to comment
Share on other sites

  • 2 weeks later...

The "eventually whenever" feature of supporting all SOUPER variants (SOUPER, SUBPAR, and SUBLET) found its "whenever" last Saturday. Both SOUPER and SUBPAR are pretty close to what was already implemented in 0.9.6.1, but SUBLET's flash programming features are all there - and it has an SST39SF040 attached! Which means...

 

1323401959_FoxBIOS(R12-R14).gif.b43df4fbd8d21b436b6c1605fd570110.gif

 

...this is the first time I've seen the FoxBIOS (manufacturing test program) update an R12 build of Rikki & Vikki to R14 on Windows.

 

Any cartridge which has a Flash ROM attached won't push written changes to the ROM upon removal of the cartridge or closure of the program, this is intended to protect the original data. However, the changes will be pushed in save states. When I add support for EEPROM or NVRAM devices in the next whenever, these will have their contents pushed to disk.

  • Like 3
Link to comment
Share on other sites

Cross posting from twitter-twatter, but draft PMC1 support is all set for v0.9.6.2 - including some SPI Devices. As noted previously, this may remain a secret feature if I don't verify everything in hardware prior to release. But this is also the last new feature I wanted to include.

 

You'll be able to instantiate a PMC1 cartridge by writing a CDF, here's an example with two SPI Devices attached...

ProSystem		; Platform
PMC1			; Mapper
THE 100 MEGA SHOCK	; Title
Primary.bin		; Binary

SPI DEVICE (S25FL128P)	; SPI Device A
Resources.bin		; Secondary Flash ROM

SPI DEVICE (M95512)	; SPI Device B
Save.eep		; EEPROM Save Data

CORETONE		; Uses BupChip
Samples.smp		; Sample Package
Macros.ins		; Instrument Set
Track_0.mus		; Music Tracks
Track_1.mus		; |
...			; V

 

The Primary ROM on all PMC1 cartridges is assumed to be an AS29CF160T, you can unlock and write to this but the changes won't be pushed to the original file.

 

SPI Device support is limited to the S25FL128P (16MB Flash) and M95512 (64KB EEPROM), you can attach them however you like in the two device slots as shown above. Devices are always attached in incrementing slots (A, B, ...). Using the SPI DEVICE (EMPTY) keyword will leave a slot open - and both can be left unoccupied by leaving out the SPI DEVICE definitions. Same for CORETONE, it can be excluded if unused - as in SOUPER cartridges.

 

Going to take a break for awhile before packing this version up, but it's nice to have all the additions checked off.

Link to comment
Share on other sites

Oh hey, it's BupSystem v0.9.6.2

 

What's new in this version?

  • Added
    • Upgraded to Visual C++ 6.0 SP5 + Processor Pack.
    • Optimization now favors Pentium Pro.
    • EXRAM support for 32K cartridges.
    • SUBPAR and SUBLET variants of SOUPER cartridges.
    • SST39SF040 (512KB NOR Flash) for SUBLET cartridges.
    • Cartridge type guessing when loading Binary Files (*.bin).
    • Sorted history of recently played cartridges and persistent file filters.
    • Execution pause, resume, and frame step.
    • Menu item icons.
  • Cleanup
    • Sally's clock multiplier was accidentally grouped with save state data.
    • Rendering is now skipped when a cartridge isn't running.
    • Moved console region selection into its own menu.
    • Changed default cartridge format to Atari 7800 File (*.a78).

 

Most improvements were in the interface or under the hood, getting Flash ROM (!) support in there is a big deal and there were several other alterations pertaining to long term maintenance and simplifying new mapper development. The Visual C++ 6.0 SP5 + Processor Pack upgrade was quite nice, despite the executable growing by several tens of kilobytes (oh my!) it actually runs faster - did exactly what it said on the tin.

 

Draft PMC1 support is included (basically everything from the previous posts), but as of writing isn't documented - I'd like to wait until the hardware has been verified and released before "formally" adding it. But you're welcome to give it a try!

 

 

What's next?

I'd like to finish PMC1 support by the end of this year, then go back to analyzing Maria's timing and try and get this downpat and thoroughly documented. The two actually go together well since the PMC1 is designed to be more observant of Maria's bus activity than SOUPER was. As of writing, most of my reverse engineering efforts are going towards other hardware.

 

Everything else, sometime whenever later... no idea...  bla bla.

Edited by TailChao
  • Like 7
Link to comment
Share on other sites

...and what would new features be without new mistakes.

 

Just found out I was drawing the menu item icons out of spec, which worked for classic Windows but resulted in broken alpha on anything which supports Aero and has it enabled (Vista+). So I'm gonna toss together two sets of icons for both scenarios (you can even be extremely rude and change it while BupSystem is running).

 

bupsystem_classic.png.a726b3e5334bc7cdc2f32005e116a5ad.png bupsystem_aero.png.13341e097af63f6705e188f8bab649bf.png

 

If you do heavy customization of your Windows themes or use a really crazy DPI setting the icons may be disabled to prevent distortion of the images. Also added some more warning prompts before erasing the cartridge history, etc.

 

Thought I was gonna get to take like a year off from wedge development, but I'll try and put together a new build for 6/5/2020. As usual, any other reports (especially for the interface) would be appreciated.

  • Like 4
Link to comment
Share on other sites

Tested around for one hour today with version 0.9.6.2 and so far, everything seems to work great.

I have some questions/suggestions. Not sure if they can be realized technically but i want to ask at least.

 

(1) would it be technically feasible, that "BupSystem" identifies a game-rom in the moment it loads, if it's PAL or NTSC and then switches automatically in the correct console-type (NTSC/PAL) without that the user must do anything?

 

(2) and would it be, additionally to point (1), also feasible, that "BupSystem" then also switches in two different fullscreen-videomodes, depending if its a PAL or a NTSC rom? And these fullscreen-resolutions, the user had chosen before in the emulator-menue.

 

I ask because of that - some users have a monitor which can handle 50Hz modes (for example my "BenQ BL912" flatscreen monitor can) and such a 50Hz mode is ideal for PAL games, cause the run with 50FPS and then the scrolling looks very smooth in games which scrolls. And for NTSC games a standard 60Hz fullscreen-mode is ideal, cause they run with 60FPS.

 

Superb would be, if "BupSystem" would have a video-menue, in which the user could assign a fullscreen-resolution together with a Hz-value for using with PAL-games (for example 720x576 - 50Hz) and a fullscreen-resolution together with Hz-value for using with NTSC-games (for example 1280x1024 - 60Hz). The emulator could show different choosable fullscreen-resolutions (together with the Hz-values) in a list and the user can choose one for PAL-roms and one for NTSC-roms.

 

When now a user loads a PAL-rom of a game in BupSystem, the emulator should automatically switch to the correct console-speed (50Hz) and when the user then switches to fullscreen, "Bupsystem" should automatically use, what the user has assigned before in video-menue, like for example "720x576 - 50Hz" as the fullscreen-resolution for this PAL-rom. Same thing when a NTSC-rom is loaded, then the emulator should automatically choose the NTSC console-speed (60Hz) and for fullscreen then the resolution 1280x1024 - 60Hz (or whatever the user has set before for NTSC-roms in the video-menue of the emulator).

 

And when users don't have a monitor that can do 50Hz, then it's also not a problem, cause they can choose for example a 75Hz or 60Hz fullscreen-mode for PAL-roms too then. The only disadvantage those users then would have is, that in games that scrolls, this scrolling then is not as smooth as in a 50Hz fullscreen-mode, but speed runs correct anyway, cause BupSystem has chosen the correct console-type before. In games which dont scroll at all, the difference is only minimal anyway.

 

What you think about these two points, "TailChao"? At the moment, "BupSystem" always uses exactly that resolution and Hz-value for the fullscreen, which the user had chosen in his Windows, in the moment, before starting the emulator. By default the most users will have some kind of resolution with 60Hz and "BupSystem" then also uses this 60Hz for his fullscreen-mode. Perfect for NTSC games, not really perfect for PAL games. Therefore i make it this way since some months - when i know before, that i want to play a PAL game in BupSystem, i switch to a 50Hz resolution before in my Windows and only then start the emulator. Then i have a 50Hz fullscreen-mode in the emulator too for this game.

 

For easy and fast switching from 60Hz to 50Hz and back in Windows, i have made me two links with icons in the Windows-taskbar for which i use the tool NirCMD. It's a commandline-tool and you can make commandos in these links like for example "nircmdc.exe setdisplay 1280 1024 32 60" in the 60Hz icon and "nircmdc.exe setdisplay 1280 1024 32 50" in the 50Hz icon. Then only one mouse-click on my 50Hz icon in the taskbar switches to "1280x1024 - 50Hz" resolution and one mouse-click on my 60Hz icon switches back to "1280x1024 - 60Hz" resolution in Windows.

 

I have alot emulators of various retro-systems on my PC and i use these two icons often for those emulators, which allows not directly in their emu-menue, to assign fullscreen-resolutions together with Hz-values and use always that resolution+Hz-value instead, in which Windows operating-system run in the moment. I can even switch the Hz now, when an emulator is running in window-mode and when switching to fullscreen then again, the emulator takes the new Hz, to which i had switched before in Windows with one of my two NirCMD-taskbar-icons.  :) 

 

So, even though this works good, of course the best thing would be, if any emulator could do this by it's own. Therefore my two suggestions and the question, if you think, that something like this, is technically feasible for BupSystem or not? Would be great.

Edited by AW127
Link to comment
Share on other sites

7 hours ago, AW127 said:

(1) would it be technically feasible, that "BupSystem" identifies a game-rom in the moment it loads, if it's PAL or NTSC and then switches automatically in the correct console-type (NTSC/PAL) without that the user must do anything?

This is feasible, but is in the same category as overscan where I'm only going to add the behavior when it's fully user configurable. So I can't nudge this into 0.9.6.3 but it will be added to the first post's grocery list.

 

Whenever the advanced options dialog shows up it'll be in there - with the asterisk that only *.a78 format cartridges will support automatic region selection.

 

 

7 hours ago, AW127 said:

(2) and would it be, additionally to point (1), also feasible, that "BupSystem" then also switches in two different fullscreen-videomodes, depending if its a PAL or a NTSC rom? And these fullscreen-resolutions, the user had chosen before in the emulator-menue.

 

I ask because of that - some users have a monitor which can handle 50Hz modes (for example my "BenQ BL912" flatscreen monitor can) and such a 50Hz mode is ideal for PAL games, cause the run with 50FPS and then the scrolling looks very smooth in games which scrolls. And for NTSC games a standard 60Hz fullscreen-mode is ideal, cause they run with 60FPS.

Ah, you mean different Full Screen Exclusive modes.

 

The requirement for these has (mostly) been eliminated through things like NVIDIA's G-Sync, which now supports Borderless Windowed programs like BupSystem. I'll confirm it actually syncs for PAL / 50Hz when I have access to a friend's (better) PC next weekend - we tested it in NTSC / 60Hz and it works great.

Link to comment
Share on other sites

7 hours ago, TailChao said:

This is feasible, but is in the same category as overscan where I'm only going to add the behavior when it's fully user configurable. So I can't nudge this into 0.9.6.3 but it will be added to the first post's grocery list.

 

Whenever the advanced options dialog shows up it'll be in there - with the asterisk that only *.a78 format cartridges will support automatic region selection.

 

Ah, okay. But it sounds like there is a chance that this will probably come one day. Would definitely be great .

 

7 hours ago, TailChao said:

Ah, you mean different Full Screen Exclusive modes.

 

Exactly.

 

7 hours ago, TailChao said:

The requirement for these has (mostly) been eliminated through things like NVIDIA's G-Sync, which now supports Borderless Windowed programs like BupSystem. I'll confirm it actually syncs for PAL / 50Hz when I have access to a friend's (better) PC next weekend - we tested it in NTSC / 60Hz and it works great.

 

My experience is that by far not all people have a monitor which has G-Sync or Free-Sync and especially for those users, it is great, when an emulator offers the possibility, to choose a resolution plus a Hz-value to it directly in the emu-menue. Nothing would be lost for users with G-Sync monitors, when additionally, such a "choose fullscreen-resolution" function would be included in a new video-menue in "BupSystem". I like those functions alot and find them senseful. The user assigns one time a resolution+Hz for PAL-roms and one time for NTSC-roms and "BupSystem" then should use these two fullscreen-modes then in the future. And when a user don't assign resolutions in these new fields, then "BupSystem" should handle it like it does in the past. This then is the mode for users of G-Sync monitors, they simply don't need to assign resolutions then in the video-settings and then BupSystem handles it like it does always. For those users nothing would change at all.

 

What you think about it? It would be better for users without a G-Sync compatible monitor, than always switching the Hz-value in Windows, before starting "BupSystem", even when my two mentioned NirCMD-links in the taskbar makes theHz-switching much easier than going all the time into the monitor-settings of Windows and change the Hz-value there. But when "BupSystem" could do it by his own, it would be even better.  :)

 

Edited by AW127
Link to comment
Share on other sites

16 hours ago, AW127 said:

Ah, okay. But it sounds like there is a chance that this will probably come one day. Would definitely be great .

That's going to be the case with most improvements or new features. I'd like for most requests to go in - as long as they don't conflict with what's already there and (in this case) be configurable. It's really a question of when.

 

 

16 hours ago, AW127 said:

What you think about it? It would be better for users without a G-Sync compatible monitor, than always switching the Hz-value in Windows, before starting "BupSystem", even when my two mentioned NirCMD-links in the taskbar makes theHz-switching much easier than going all the time into the monitor-settings of Windows and change the Hz-value there. But when "BupSystem" could do it by his own, it would be even better.  :)

I'll look into it, since having this as part of my render library would be nice. But it's a low priority. I did get the autohiding menu in Full Screen Mode working as part of 0.9.6.3, which would be a prerequisite for this feature.

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

Oh hey, it's BupSystem v0.9.6.3

 

"But wait, I thought you said this wasn't going to be released until 6/5?!" you shriek, or fervently type.

"Software can only be late, what is this nonsense?!"

 

Ah, well for one I ran out of small things I wanted to patch. The second reason is that today marks four years since BupSystem's first (albeit secret at the time) release - so let's celebrate by pushing this build now. Anyway...

 

What's new in this version?

  • Added
    • Separate menu item icons for Aero themes.
    • Support for using the menu in Full Screen Mode.
    • Optional confirmation when erasing the cartridge history.
    • Multiple file support for Drag 'n Drop.
  • Cleanup
    • All menu item icons redrawn in monochrome.
    • Custom images are a little more considerate of system metrics.
    • Disabled menu items could still be triggered in Full Screen Mode using their accelerator keys.
    • Adjustments in the Color Dialog are now shown whether or not a cartridge is loaded.
    • Disabled mouse cursor autohiding while the Color Dialog is visible.
    • Corrected longstanding GDI Resource leaks in the Input and Joystick Disconnected Dialogs.
       

While there's still a long way to go in terms of accuracy and other improvements, I feel what's here is enough to justify a long hiatus from the platform.

  • Like 5
Link to comment
Share on other sites

  • 4 months later...

There's a palette caching issue in v0.9.6.3 - changing the console region between PAL and NTSC won't force a palette recalculation, as observed by @Turbo Laser Lynx.

 

A temporary workaround is to open the Color Dialog by navigating to Options -> Maria (Video) -> Adjust Color... (F4) and clicking [Default] or twiddling with the sliders. Restarting the program will also force the palette to be recalculated.

  • Like 5
Link to comment
Share on other sites

  • 3 weeks later...

Thanks i had been using A7800 for awhile now. However i have heard/read alot of good things about Bup and noticed it has recent updates. From what i hear it's fairly on par with A7800 in terms of accuracy ? Works great with my homebrew and is nice that pokey is supported especially with bankswitched ROMs (helps motivation with testing one my older projects). Thanks for the continues development of Bup and im looking forward to future releases ?

Link to comment
Share on other sites

Hah, well I dunno if five months ago counts as a 'recent' update but I'm glad you're enjoying it. I do want to be clear that BupSystem's development is still on hiatus, so I'm still keeping track of any issues noticed in v0.9.6.3 but they're not necessarily going to be addressed soon... possibly never.

 

Regarding accuracy - some of Maria's timing stuff is definitely off and so is a bunch of POKEY's behavior. I'd definitely recommend sticking with A7800 if you're doing anything serious with POKEY or the XM's features. The only things BupSystem "leads" in are support for SOUPER, PMC1, and the BupChip.

  • Like 1
Link to comment
Share on other sites

Ah ok i see, yeah i usually like to use a couple accurate emulators in a rolling dev stage. A7800 is great and i feel friendly competition among authors drives for more accurate emulation. The GUI's ease of use reminds me of other standalone emulators such as Fusion ect.

 

It's all good whatever direction you take. I will be keeping an eye out as to where this project leads ?

Link to comment
Share on other sites

Hi all,

 

i just discovered this emulator and i want to use it to discover atari 7800 games.  But unfortunately if i try every rom, i always have this issue:

 Immagine.png

 

does I need the bios? If so, i downloaded the pal and NTSC bios file but i don't know which is the right folder where I have to put them...

 

thank you!

Link to comment
Share on other sites

22 hours ago, TwentySixHundred said:

The GUI's ease of use reminds me of other standalone emulators such as Fusion ect.

Yeah, that sort of setup has always been my preference. Adding in luxurious debugging features like nocash's work would be ideal, but no idea if that'll ever happen.

 

 

19 hours ago, legolas119 said:

i just discovered this emulator and i want to use it to discover atari 7800 games.  But unfortunately if i try every rom, i always have this issue:

 Immagine.png

 

does I need the bios? If so, i downloaded the pal and NTSC bios file but i don't know which is the right folder where I have to put them...

This seems to have already been addressed here, and (generally) I cannot help you find ROMs - you're all on your own for that.

 

However, I do want to point out that many "goodsets" for the 7800 aren't actually that good. Faulty headers, missing Pokey bits, etc. The PROPack by @Trebor is properly curated and checked - if that doesn't work then it's definitely my fault!

  • Like 3
Link to comment
Share on other sites

  • 1 month later...

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