choosing advmame v1.4 vs v3
-
@arkive All of the AdvanceMAME configs are in the same folder just as @Riverstorm described above. You can usually find these details in the Docs (wiki) if you know where to look. For MAME, it is here:
https://retropie.org.uk/docs/MAME/
This has details for all of the different MAME emulators, and AdvanceMAME is at the bottom.Regarding the use of advcfg, you probably know that one of the initial intentions behind AdvanceMAME was to give users the flexibility to explore many different display options through the use of video modelines. The advcfg utility (and advv) helped to setup those modelines for your hardware. I don't think you are going to get very far with advcfg. A couple years back I was able to make difficult progress with these utilities to get early, locally-compiled versions of AdvanceMAME (1.2?) to render vector games better, but this was before the developer was coding and compiling features specifically for the Pi, and even then, it was questionable whether I was actually affecting the timing of the video. The modelines in the .rc file let you get very specific about display clock frequencies and such--often way beyond technical know-how of most folks, but sometimes necessary for someone trying to connect an old Arcade monitor.
That said, the Pi isn't really going to leverage modelines because of the way that it generates video. I think the version we are using now on the Pi likely ignores modelines, so whatever you build using advcfg or manually using advv will just be a waste of time. Assuming you are using a Pi, I would search other threads for posts about configuring it for an actual CRT and how folks are doing it. From what I can tell, you would need to have the Pi running with success on your CRT first, and then try running advancemame with the default configuration and troubleshoot from there.
-
@riverstorm Nothing else has changed with respect to the vector video settings. But the video menu choices in the GUI are better than the used to be, meaning that settings like magnification etc. seem to respond as expected on the Pi, whereas earlier versions were sometimes hit or miss. Too bad the GUI doesn't give you control over vector effects so you can adjust and see the results in real-time.
-
@caver01 said in choosing advmame v1.4 vs v3:
Too bad the GUI doesn't give you control over vector effects so you can adjust and see the results in real-time.
That would be great as it's painful to quit, change, restart when I was messing with background artwork translucency and deciding which rgbeffect I liked best, etc. Real time...maybe...someday...oh yeah! ;)
I do have the correct path above? If so you're tutorial needs a quick path tweak:
/opt/retropie/configs/mame-advancemame/advmame-1.4.rc
One quick question I know you explained in quite a bit more detail and answered a bunch of questions on how/why you were configuring your tank stick but I can't seem to find that thread. Do you know which one I am referring to by any chance?
-
@caver01 @Riverstorm thanks for replying, I realize my question looks a bit out of context here, but I just wanted to clear that detail regarding advmame.rc, since my file search yesterday yielded two of them - one in the usual opt/retropie/conf... path and another I think in home/Pi - which I now realize is some sort of shortcut? (when I clicked on it, it took me to the opt/retropie dir)
The bigger picture is my ongoing struggle to get vertical MAME games scaling properly (verbose:
https://retropie.org.uk/forum/post/87077, https://retropie.org.uk/forum/post/91530)In a nutshell, I'm using Rpi3B + Retropie 4.2 + Pi2SCART and all the consoles/micros/hori MAME games display fine in glorious 1:1 pixel parity. But not the vertical MAME games. I failed to find a way to do this on this setup , so I turned to Advance MAME in hope it could be a solution. As mentioned in the linked thread, it's nearly there but not quite. Which brings me to the advmame.rc and advcfg, which I ran, tweaked some stuff but it didn't seem to register when trying games later.
The manual says to " run the advcfg utility for AdvanceMAME and advcfg -advmenuc for AdvanceMENU". I also tried the latter, thinking maybe that's the proper config tool for my setup, but am unable to run it from the command line (to include that -advmenuc parameter.) I'm a total Linux noob and failed to do this in the Pie's File Manager. In fact, I'm unable to run any program from that command line, only from the FM's window.
I also tried the advv thingy, but can not see the resolutions that govern the verti games there for some reason. all in all, I'm a bit out of my depth here (fairly easy to see ;)
-
@riverstorm Sure. The "tankstick" configuration is described here when I posted questions about trying to setup <CODE_NOT> mapping in lr-mame2003. This led to the retroarch "nul" workaround so I could get MAME to only see the raw inputs while using the GUI to map the stick.
The idea works in AdvanceMAME GUI as well (for Battlezone, for instance) but the idea is basically this:
If you have seen these games in the arcade, you know that tanks have two separate sticks. One is the LEFT stick, one is the RIGHT. They each can be pushed UP and DOWN. So. . . if you combine the inputs you can control the tank. But what if you are running an emulator with only one joystick? Is it possible to map the left and right game joysticks to one actual joystick such that all of the movements are covered (i.e. a tankstick)?
In short, YES. It is possible if you can negate certain combinations using some complicated <CODE_NOT> and <CODE_AND> input maps. MAME GUI lets you do this by picking a control and pressing multiple inputs for the <AND> and using rapid double-taps for <NOT> before the input timer runs out (a second or two). For example, if you were going to map "UP" <NOT> "LEFT" you would select the control to remap, then press UP on your joystick and immediately double-tap left, wait a moment, and MAME would register that as UP <NOT> LEFT. This would effectively map the control to watch for UP input and stops working if you push the stick into the upper-left corner. You could add to this input with <OR> by waiting for the timeout and adding another input before moving onto the next control.
You can see in the post linked above how you need to configure tank controls to work on a single joystick.
-
@arkive I think you won't get anywhere with advancemame video utilities. These are used to generate modelines for the .rc file but on the Pi, modelines are ignored, so this is a dead-end.
It's probably worthy of a different thread. Start a new one and title it appropriately, something like your NUTSHELL sentence + Arcade games
and make sure you add all of the relevant system details from here.Is there a specific reason that you want to use AdvanceMAME? You can be very explicit about rotation and aspect ratio using a retroarch emulator (lr-mame2003). It will also help us to understand what ROM you are using to test this, how you want it oriented on your display and so on.
-
@caver I think the new version of AM do have support for PI+CRTs - got this impression from following the install.txt:
With a Raspberry Pi you have the same support you have in Linux, plus some specific Raspberry functionality, like the accelerated Framebuffer. With a Raspberry, it's recommended run the Advance program directly from Linux Console because using the Linux Framebuffer you also get hardware acceleration that is missing when run from the X Window system using the SDL library. [...]
If instead you want to use an old CRT Arcade or TV screen, you can configure the Advance programs to generate modelines customized for your video hardware, following the 'Video Setup' chapter. "Hence why I was trying to mess with advcfg/advv. And, the aim is to try and get vertical games to fit my 4:3 screen, but without use of rotation (not very handy to flip this 50 kg behemoth every time you want to play hori/vert game ;)
I tried mostly with 194x shooters, but it can be any vertical game really - anything that goes over 240p with vertical res. On my current setup they either get squashed and artifacted or are 1:1, but losing chunks at top and bottom...which is understandable, because timings are for 240p.
This is what the guy from my other thread achieved with AM, https://picload.org/image/rpacdpgr/dsc_1248.jpg, however he is running the standard composite cable which does not require special hdmi_timings.
I can't really start another thread here, this question was already in two, and I don't think "Running Advance MAME with Pi2SCART" was that bad a title. Think I'll try the AdvanceMAME forum next or maybe email the Arcade Forge people (they don't have a forum, only fb group).
-
@caver01 said in choosing advmame v1.4 vs v3:
If you have seen these games in the arcade, you know that tanks have two separate sticks. One is the LEFT stick, one is the RIGHT. They each can be pushed UP and DOWN.
Ok, wow, a bit confusing! I have the logistics but still not quite sure what you're doing. I mean I understand the mapping parts and how to do it being built upon disabling Retroarch inputs and using raw inputs only but the actual movement I am totally confused if that makes sense.
Game Control Mapped to Right/Up Up <not> Right or Left <not> Down Right/Down Down <not> Right or Right <not> Up <not> Down Left/Up Up <not> Left or Right <not> Down Left/Down Down <not> Left or Left <not> Up <not> Down
Eight directions total. I still have it wrong:
- Joystick Up = both tracks forward
- Joystick Down = both tracks backward
- Joystick Upper Left = Right track forward only
- Joystick Upper Right = Left track forward only
- Joystick Left = Right track forward & left track backward
- Joystick Right = Left track forward & right track backward
- Joystick Lower Left = Right track backward only
- Joystick Lower Right = Left track backward only
-
@riverstorm you have it correct, but you are writing it backwards. You have to map to the controls in the game which is how I have it in the black quoted section above.
-
@arkive Ok. But I think that line about using the utilities is not intended for pi users. Remember, AdvanceMAME has been around for a long time and was not originally developed for the Pi. Multiple platforms use it, but the Pi won’t have the frequency flexibility so the utilities are not really very helpful.
-
@caver01 said in choosing advmame v1.4 vs v3:
@riverstorm you have it correct, but you are writing it backwards. You have to map to the controls in the game which is how I have it in the black quoted section above.
Thanks Caver, yeah I know I could just replicate and it would work but I was actually trying to wrap my head around the actual config and how it's working with the <CODE> and <CODE NOT> corresponding to the actual joystick movements. I find it somewhat confusing but I think I have the gist of which direction is doing what which is good enough. Thank you good sir! :)
-
Another AdvMAME 3.x question if I may. In 3.5 I see some of the buttons and even the 'UI Select' are mapped to j:happy1, 2, etc. It took me a few minutes to figure out they are the D-Pad directional which doesn't work well at it's defaults. Is there some logic to that? Looking at some of the code I don't see what they are trying to do. Did you just remap you Button 1, 2, etc to get things working. I am using an XBOX 360 controller and I wonder if they are "virutal-sprawling" buttons? :)
/* note that the happy name has no meaning */ /* if not to make "happy" joysticks with many buttons */ #ifdef BTN_TRIGGER_HAPPY1 { BTN_TRIGGER_HAPPY1, "happy1" }, /* joystick */ #endif #ifdef BTN_TRIGGER_HAPPY2 { BTN_TRIGGER_HAPPY2, "happy2" }, /* joystick */ #endif
-
@riverstorm think of it in terms of the arcade control panel on the orginial system. Controlling a tank, you have two levers. They usually have triggers too, but that’s not important.
So, if you were going to push the left lever forward, what exactly would that do? Well, either it is turning you to the right while moving forward, or it is rotating you right in place, or it is driving the tank forward (all depending on what is happening with the right lever). How does that translate to a single joystick? It translates to moving the joystick UP but not UP and LEFT, or it could translate to moving a single stick RIGHT but not RIGHT and DOWN.
It’s not a complete picture when you look at just one line because the “or” in the middle means you need to be considering the what the other stick is doing.
The whole point is that someone figured out all of the combinations and then algebraically boiled it down to these mapping configurations so that two two-way sticks can be driven with a single 8-way joystick. It’s brilliant. For folks building arcade panels it also frees up your second hand for fire buttons.
-
@riverstorm said in choosing advmame v1.4 vs v3:
Another AdvMAME 3.x question if I may. . . Did you just remap you Button 1, 2, etc to get things working. I am using an XBOX 360 controller and I wonder if they are "virutal-sprawling" buttons? :)
I think I get to take an easy answer here and say I didn’t worry about it because I am using a keyboard controller (IPAC) and the standard assignment of switches to keys is the MAME default.
-
@caver01 said in choosing advmame v1.4 vs v3:
The whole point is that someone figured out all of the combinations and then algebraically boiled it down to these mapping configurations so that two two-way sticks can be driven with a single 8-way joystick. It’s brilliant. For folks building arcade panels it also frees up your second hand for fire buttons.
Ok, I thought that someone was you! I was like dang he really put some thought into this. I did start looking at 2 lines then 3, then 4 to make sense. I was thinking I would need a grid and lay it all out to fully understand it. It's an incredibly creative way to do it.
-
@caver01 said in choosing advmame v1.4 vs v3:
@riverstorm said in choosing advmame v1.4 vs v3:
Another AdvMAME 3.x question if I may. . . Did you just remap you Button 1, 2, etc to get things working. I am using an XBOX 360 controller and I wonder if they are "virutal-sprawling" buttons? :)
I think I get to take an easy answer here and say I didn’t worry about it because I am using a keyboard controller (IPAC) and the standard assignment of switches to keys is the MAME default.
Sounds good. I usually setup both keyboard and joystick so it can go either way. In 1.4 they are properly mapped to j:a, j:b, j:c, etc. but in 3.x there's a lot of "happy" buttons j:happy(index), 10 total. It's like they are partially implemented or some work in progress in 3.x with the default the D-pad firing, moving, etc. but not the traditional button a, b, c, etc.
I also noticed in the .rc file the joystick "translation" inputs are very different and much more complex then 1.4. I reloaded 1.4 and dumped my default config so I could screenshot the inputs and will duplicate them in 3.5 as the defaults are completely unplayable via joystick.
-
@caver01 said in choosing advmame v1.4 vs v3:
@arkive Ok. But I think that line about using the utilities is not intended for pi users. Remember, AdvanceMAME has been around for a long time and was not originally developed for the Pi. Multiple platforms use it, but the Pi won’t have the frequency flexibility so the utilities are not really very helpful.
Nah, since 3.0 AM has some serious RPi support. My quotes were from the dedicated RPi section, same as this:
To use the programmable modelines with the Raspberry DPI port you need a GPIO add-on board like the Gert's VGA 666.
The Raspberry Pi has strong limitations on the lower range of pixel clocks when using the DPI/GPIO interface, that will affect your ability to control low frequency monitors, like Arcade screens. [...] To overcome this problematic, AdvanceMAME transparently increase the modeline horizontal size, until it reaches the 31.25 MHz pixel clock. Don't be surprised if a modeline that works in AdvanceMAME, doesn't work when setting manually the timings in other ways.Anyway, I'll try the AM forums as a last resort and then probably abandon this wild goose chase altogether. I was always planning to build a separate Groovy MAME PC box anyway.
-
@arkive Ahhh! That explains a lot. Thanks for quoting that. It also confirms why early on, BuZz was saying that the Pi is going to ignore the modelines. That’s still true for most users, but your hardware config is definitely unique. Perhaps @amadvance can offer a suggestion?
-
@caver01 - Thanks Caver 3.5 works really well. I would swear it seems to fun faster or maybe a better word is smoother. One game I like to play occasionally is Skull & Crossbones and the screen ratio is correct out of the box now without tweaks (one of those odd one-offs that gets lumped into AdvMAME because it works correctly there). I'm still taken back when starting a vector game they just look so much better in AdvMAME. This new version works quite well on the Pi.
Just a quick note is in your tutorial you have an incorrect folder in your config file path
mame-advancemame
where it should bemame-advmame
. -
@riverstorm said in choosing advmame v1.4 vs v3:
Just a quick note is in your tutorial you have an incorrect folder in your config file path
mame-advancemame
where it should bemame-advmame
.Oh, crap. I will fix it now. Nice catch.
I will have to look at Skull and Crossbones. I don’t think I know that one.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.