Jump to content
IGNORED

RetroN 77


jeremiahjt

Recommended Posts

I suspect this is an issue with Visual Studio 2017 (the development environment I use in Windows). It phases out older systems from time to time. Look for WinXP support to be dropped next, perhaps in the next year or so.

Please don't drop XP support. I've got an "unlocked" winxp iso I'm dying to use at some point.

 

I plan on rebuilding my old Athlon XP 3000 rig to be an emulation box at some point in the future. That CPU is about 15 years old (serious muscle for 2003, whips the snot out of P4 Prescott in terms of performance per clock and performance per watt) and transplanted into a neat shuttle case. I'll probably max it out with 3 1gb modules of 333mhz ddr1 3-3-3 ram, the most memory the motherboard supports.

 

I just noticed Stella 5.1.3 only supports osx 10.7 or later. My 2006 Macmini was a Core Duo Mac that I voided the warranty by upgrading to Core2Duo. So it meets the minimum requirements for 10.7 but the motherboard is blacklisted for upgrade by the os disk. And I have found very few native 10.6.8 compatible apps that use 64-bit extensions. I think the version of GimpmI have installed does, though it's of limited benefit as the system only supports 2gb RAM.

 

Snow Leopard was also the last MacOS that supported PowerPC OSX apps under Rosetta, but had poor performance when used. Seems Windows has had better track records for backwards compstibility, many Win95 programs still run in Windows 10.

Link to comment
Share on other sites

That's my point. It's not me that's dropping support, it's the development environments. Visual Studio 2017 supports WinXP. As long as I use that, WinXP support will continue (although it receives no testing whatsoever). Future versions of Visual Studio will drop XP; they've already played with the idea in VS 2017, but backtracked after user feedback. Once the newer versions of VS drop XP support and I am forced to upgrade to those versions, the XP support will disappear. It has nothing to do with either me or Stella requirements; it is strictly controlled by Microsoft.

 

OSX and Xcode is a similar situation.

  • Like 6
Link to comment
Share on other sites

Supporting multiple configurations is a pain is the ass for every application. And for a hobby project, this seriously delays or even prevents other developments, due to the added complexity and additional testing which eats up limited ressources. That's why Stella has to focus on the most common configurations. Old configurations will stay only as long as they do not add a lot of overhead.

 

If you really need Stella for such outdated systems, feel free to create it on your own. No one will object. :)

Edited by Thomas Jentzsch
  • Like 4
Link to comment
Share on other sites

That is true about the new Microsoft Visual Studio 2017 IDE, but the solution is simply to connect to MSDN (now Visual Studio resources) and download VS 2015 or an earlier build that supports what you need. These can be installed without breaking each other. Sometimes I even have to go back to Visual Studio 6 (neat trick to get it running on windows 10).

 

I'm under contract with Microsoft for writing IDE's so I have access to all of them, they may not be available to the general public if you didn't hold on to your earlier versions or the license experation bricked them.

  • Like 2
Link to comment
Share on other sites

Supporting multiple configurations is a pain is the ass for every application. And for a hobby project, this seriously delays or even prevents other developments, due to the added complexity and additional testing which eats up limited ressources. That's why Stella has to focus on the most common configurations. Old configurations will stay only as long as they do not add a lot of overhead.

 

If you really need Stella for such outdated systems, feel free to create it on your own. No one will object.

 

For a few years my full time paying job was to support various UNIX commercial tools on all the supported UNIX platforms. It was a huge amount of work to support ten different UNIX derivatives each with 2 or 3 different version that all had to be supported. All had varying degrees of System V, BSD or unique conventions / practices.

Edited by thetick1
Link to comment
Share on other sites

Can Stella tell which fire button on the retron joystick has been pressed?

 

Of course, otherwise it wouldn't know if player 0 or player 1 pressed fire, and that would be terrible in a 2-player game :)

 

This comes down to what events the player0 fire vs. player1 fire button actions are mapped to.

 

EDIT: It just occurred to me you meant which button on the same stick (I forget that the R77 stick has two, since I didn't actually receive a joystick from them). I would say no, it's not possible, since if the joystick could do that, then it would mean you have two separate buttons on a real system. And the pinouts don't support that without extra hardware in the stick.

Link to comment
Share on other sites

Oh I mean if Stella can tell which button (left or right) was pressed on the retron controller.
EDIT: as in the left red button or the right red button

This edit went on in realtime :)

I was thinking if it was possible to reset back to the launcher by pressing them both for a specific time (eg. 3 seconds) but as you explained then it wouldn't work.

If I wanted to use the Retron's reset button instead what scancode would I have check for? I am not familiar with Stella code and keep going down rabbit holes of class abstractions. Would I have to use StellaKeys for that? The hardcoded code in settingsR77.cxx has a line that goes like this:

setInternal("keymap", "116:40:0:0:0:0:0....

Would that mean that 40 is a decimal value assigned to Console Reset and that number refers to KBDK_LEFTPAREN in stella keys enumeration struct?

Edited by Atari Pixel
  • Like 1
Link to comment
Share on other sites

You might want to check out the Hyperkin kernel driver (see my notes in the wiki), it maps the various buttons on the R77 and on the controllers to key codes. This will tell you what key each button is mapped to, and you can then change the mapping either in the driver or in Stella.

Link to comment
Share on other sites

First of all, this is quite confusing, since the mappings are meant to be set by the UI, not manually edited. However, it is easy to understand, if a bit cumbersome.

 

The number in each 'keymap' position (ie, the ones separated by ':') are the enumeration numbers from 'src/emucore/Event.hxx'. Their numerical position correspond to the actual key from 'src/common/StellaKeys'.

 

So take the 'LauncherMode' event. If you look at the Event enumerations, it is value 98 (remember, counting starts from 0!). Now look at the keymap numbers. Ignore the first one; it just tells how many follow it. So, counting from the second one (again, from 0) note that the '98' is in position '8'. Now go to StellaKeys. And see that the enumeration for '8' corresponds to "KBDK_BACKSPACE". So we can see that the Backspace key is mapped to the 'LauncherMode' event :)

 

So to summarize, in the keymap, the actual numbers are the events, and their positional value correspond to the keys that generate these events.

 

Note that the Hyperkin kernel code has been created such that it outputs keys that correspond to the Stella defaults. So for example, when you press 'Up' on joystick 0, it emits the 'Cursor Up' key. Stella then sees that 'cursor up' and maps it to "J0 Up". Long story short; you shouldn't have to touch the kernel stuff, nor would you really want to.

Link to comment
Share on other sites

There are some games that are programmed to read 7800 and Genesis sticks for 2600. Would it possible to program the UI to recognize other controllers with more buttons like a SEGA 6 button and map the reset button to the SEGA start button and save states and select and the other ATARI toggles to the face buttons?

Link to comment
Share on other sites

Note that the Hyperkin kernel code has been created such that it outputs keys that correspond to the Stella defaults. So for example, when you press 'Up' on joystick 0, it emits the 'Cursor Up' key. Stella then sees that 'cursor up' and maps it to "J0 Up". Long story short; you shouldn't have to touch the kernel stuff, nor would you really want to.

 

 

Why not? Imho this is cleaner than hacking around in Stella's default configuration. The alternative would be a modified stellarc, but this will be nuked in case the config gets corrupted.

Edited by DirtyHairy
Link to comment
Share on other sites

Why not? Imho this is cleaner than hacking around in Stella's default configuration. The alternative would be a modified stellarc, but this will be nuked in case the config gets corrupted.

 

This is where I switched to using SettingsR77.cxx instead of poking around in Stella :)

  • Like 1
Link to comment
Share on other sites

 

This is where I switched to using SettingsR77.cxx instead of poking around in Stella :)

 

Yep, just about to say the same thing. I introduced SettingsR77 specifically so that it's now impossible to lose settings and have the config file screw up, since it's hardcoded into the app itself.

 

Another issue is that when a change is made in Stella, it can go into git. But a change to the Hyperkin kernel code has no such repo to go to, so we may lose the edits eventually.

  • Like 1
Link to comment
Share on other sites

 

Yep, just about to say the same thing. I introduced SettingsR77 specifically so that it's now impossible to lose settings and have the config file screw up, since it's hardcoded into the app itself.

 

Another issue is that when a change is made in Stella, it can go into git. But a change to the Hyperkin kernel code has no such repo to go to, so we may lose the edits eventually.

 

 

I wasn't aware about SettingsR77.cxx ;) Concerning the kernel code: according to the license header, it is GPL, so it could be published on GitHub (or anywhere else).

Edited by DirtyHairy
Link to comment
Share on other sites

This is what I have on SettingsR77.cxx (line 54). It's the same file (unaltered) taken from stella.tar.gz on post 4074223:

 

setInternal("keymap", "116:40:0:0:0:0:0:0:0:99:95:0:0:0:15:0:0:0:0:0:94:0:0:0:0:0:0:0:98:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:62:0:63:64:55:41:42:43:16:17:23:24:53:54:0:61:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:96:0:0:0:97:47:0:52:49:46:22:20:19:56:21:59:60:0:0:57:58:44:0:48:0:0:0:45:51:18:50:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:11:12:14:13:0:0:0:0:0:9:10:3:4:5:6:7:8:91:89:90:92:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:115:0:0:0:0:110:0:0:0:0:0:0:0:0:0:0:0:0:0:114:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:102:103:105:104:0:106:107:108:109:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0");

 

If I understood correctly 98 would be index 28 (Counting 116 as zero). Is my keymap different?

Edited by Atari Pixel
Link to comment
Share on other sites

You skip the 116; it just tells how many follow. The counting starts (from 0) with the second number. So the 98 is at index 27. This means that Event '98' (LauncherMode) is mapped to key '27' (KBDK_ESCAPE). And sure enough, the default mapping for exiting the ROM and entering the ROM launcher is the Escape key.

 

That being said, you should checkout from https://github.com/stella-emu/stella/tree/stella3-r77. Specifically, the code in SettingsR77 has changed since the post you referenced: https://github.com/stella-emu/stella/blob/stella3-r77/src/unix/r77/SettingsR77.cxx.

 

Furthermore, if you will be playing around with the remappings a lot, it might make more sense to install Stella 3.9.3 on another computer and do the remappings within the UI, then look at the config file that it generates.

Link to comment
Share on other sites

Thank you stephena. I think I understand now.

I downloaded the r77 github branch this morning, but when I try to compile it ubuntu complains I am missing libraries I didn't need before to compile the project. First it was opengl, then libpng (though it is in the r77_gui_v0.9 folder), then SDL2. My ubuntu is a fresh install with build-essentials only.

Edited by Atari Pixel
Link to comment
Share on other sites

The huge 1+GB file you download from Hyperkin is essentially a small Linux distribution. As such, it contains all the extra libs you need already installed, etc. If you are compiling Stella on a standalone system, then of course you will need to install all those extra packages yourself. The r77 github branch requires SDL1 at a minimum. Installing that will probably bring in the OpenGL and PNG libraries with it.

Link to comment
Share on other sites

Someone should be collecting a consulting fee at this point....

 

This is really a shame, and I have trouble supporting a product that only semi working out of the box when a little more time and care may have required less out of the user to get it working. Okay... most of us can can install that image that takes care of some of the problems, but i am sure that there will be some buyers that don't even know about these forums...

 

I think I'll just pass.... one less thing to waste money on.

  • Like 1
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...