Jump to content
  • entries
    657
  • comments
    2,687
  • views
    897,455

MenuMaker 0.3


SpiceWare

1,042 views

NOTE: use MenuMaker 0.4. It fixes a bug found in version 0.3, and adds support for the 2019+ VecMulti.

 

MenuMaker has been updated for 64-bit macOS. This will create the menu for @Richard H.'s VecMulti SD cartridge for the Vectrex.

 

 

853946733_ScreenShot2021-12-12at10_10_48AM.thumb.png.bc82da461568e1e2027bb42f81eccb9b.png

 

218888972_ScreenShot2021-12-12at10_10_52AM.thumb.png.93ad287f9ed1b9365f3ec28cbb323ab4.png

Program with source:

MenuMaker20211211.zip

 

Port was done using Lazarus, which is available for Linux, Mac, and Windows.

 

Use MenuMaker 0.2 if you're still on a 32-bit version of macOS.

  • Like 6

16 Comments


Recommended Comments

Hi @SpiceWare - I'm not having luck getting the generated menu to work. Might you have any idea why the menu is mangled as shown in this video? It was suggested to me by a member of the FB group Vectrex Fans Unite that I could try truncating the filenames to 12 characters each. I did so and had no luck. (The video only shows my attempt with the original, longer file names.) I'm on MacOS Monterey (12.1), using MenuMaker 0.3. I confirmed the SD card was formatted to FAT. Thanks.

 

 

 

Link to comment
4 hours ago, NeonPeon said:

Might you have any idea why the menu is mangled as shown in this video?

 

In the prior blog post Nathan made this comment:

 

On 12/9/2021 at 12:37 PM, Nathan Strum said:

I haven't tried firing up my Vectrex in a long time. I have two of Richard's multicarts: an previous-generation VecMulti that has never worked in my Vectrex (I have a fussy Vectrex), and a VecFlash, which I can't use because of a lack of Mac software.

 

Richard has a newer VecMulti that seems to do better with fussy Vectrexes (Vectri?), but I can't use it with the Mac because of software. Richard wrote:

Quote

it requires a menu packer (written for PC). Darrell's Mac version menu packer won't work on the new revision of VecMulti.

He was going to think about if there might be a solution, but that was April 2020, and I haven't wanted to press him on it.

 

So apparently there's a newer version of the VecMulti that's incompatible with the version of MenuMaker that I have the source for.  I dropped @Richard H. a PM about this back on Dec 9th, but he's not read it yet.

 

If somebody has a working SD card for the newer VecMulti, and could send me a ZIP of it, I might be able to reverse engineer what the new menu structure is and could then make an attempt to update the Mac software to support both versions.

Link to comment

Thank you for the response @SpiceWare and I appreciate you looking at this. I can borrow my wife's Windows laptop (I only have a Macbook Pro and a couple of Linux boxes) and run MenuMaker.exe that was preinstalled on the SD card packaged with the VecMulti. Hopefully it will work for me and I can send you the resulting menu files as well.

 

Just as an aside, I also tried running MenuMaker.exe using Crossover (which I mainly use for games) but no luck there, heh. I'm kind of new to Crossover so maybe it just needs a config tweak that I'm not aware of. I've attached screenshots for the morbidly curious.

 

 

Screen Shot 2022-01-09 at 12.15.36 AM.png

Screen Shot 2022-01-09 at 12.15.42 AM.png

Link to comment
22 minutes ago, NeonPeon said:

I can send you the resulting menu files as well.

great!  Include that MenuMaker.exe while you're at it, I've a laptop I can run it on. I use Linux on it, but can still boot the original drive with Windows 10. 
 

 

  • Like 1
Link to comment

@SpiceWare Here you go sir. Just to be clear: the attachment is a zip containing the four .men files generated by the Windows MenuMaker.exe included on the SD card that comes with the 2019 VecMulti (I believe I have that year right). MenuMaker.exe is also included in the zip. I only added four roms to the Games dir that I generated the menu for, as I figure for the purpose of reverse engineering the format, it might be best to have multiple items but not an overwhelming number of them. (I guess there's one .menu file per rom?) Let me know if you need anything else though.

 

Below is a video of my test run. The generated menu seems to work, but I did encounter a separate technical issue that I'm just documenting here. In short, it appears I can't load any ROMs unless I hit the reset button once. I don't think it's the menu's "fault" but rather a VecMulti bug or limitation.

 

Thank you!

 

 

MenuMakerFilesForSpice.zip

Link to comment

Update: I got the MenuMaker.exe from the SD card to work in Crossover. I've attached a couple of screenshots to demonstrate, that may help somebody else out there. Before the first screenshot, I had created a Bottle in Crossover - I don't think I set any special settings - you can just do Bottle -> New Bottle and select Windows 7 or 10, or whatever.

 

Now, when the MenuMaker app would launch, I would press the MAKE button and get a file write error. Turns out I had to grant "Network" drive access in MacOS to get that to work. But I wasn't prompted by the OS to grant such access when the MenuMaker requested the access. The way I got it was in the wine configuration editor in Crossover, I tried to browse the SD card mounted to /Volumes/VECMULTI, and THEN once I hit the Browse button, I was prompted to grant access, so I did. Smooth sailing from there. You can probably just go to your security settings and set up these permissions, rather than do so in a reactive manner. Not sure of the specific steps offhand.

 

Screenshots don't show the error or the prompt to grant permissions - I didn't capture those.

 

And of course, I confirmed that the VecMulti menu worked. That's all I've got for now!

Screen Shot 2022-01-09 at 1.11.07 PM.png

Screen Shot 2022-01-09 at 1.33.47 PM.png

Screen Shot 2022-01-09 at 1.22.51 PM.png

  • Like 1
Link to comment
2 hours ago, NeonPeon said:

Here you go sir.

 

Thanks!

 

2 hours ago, NeonPeon said:

the four .men files

 

Those are actually the ROMs:

  • AA.men = Berzerk
  • AB.men = Cosmic Chasm
  • AC.men = Mr. Boston
  • AD.men = Star Castle

The ROMS are just copied from the Games directory and given a new filename, the actual contents of the .men files exactly match the ROMs I have.

 

With the older version the filenames are AA.men thru AZ.men for the first 26 games, BA.men thru BZ.men for the next 26 games, etc. Hopefully the new version does the same.

 

With the older version also makes the file Titles.rtf, which contains the text for the menu:

 

419132051_ScreenShot2022-01-09at1_05_49PM.thumb.png.4db7a81069e1cc5218f037555225ef8e.png

 

From your video before the new VecMulti appears to also use the Titles.rtf, but it expects a different layout for the contents of the file. Based on this:

 

419111391_ScreenShot2022-01-09at1_14_08PM.thumb.png.e3c460c30000a3533d5bf400f0d05e4f.png

 

I suspect it no longer uses the |^M| from the older version as it's being displayed by the new VecMulti's menu routine (the double-bars with the space between them, the ^M is a RETURN character).

 

I haven't booted Windows so long it's busy doing updates. Once it's done I'll run the new MenuMaker and see what it does.

Link to comment

Yep, the new MenuMakers copies the games the same using AA-AZ.men, BA-BZ.men, etc. and created Titles.rtf without all the |^M| characters in it:

 

1668925204_ScreenShot2022-01-09at1_28_33PM.thumb.png.5e8e7b8853264694f2461231491954e6.png

 

The ^@: at the start is the number of ROMs.  ^@ = 00 (a NULL character) while : = $3A, so the ROM count is $003A, or 58.

 

The older version has ^@9 for the same number of ROMs. 9 = $39, so its ROM count is $0039 or 57.  Actual file count is still 58, so the two VecMulti menu routines differ their count by 1.  Computers often start indexes with 0 instead of 1, so a group of 58 items would be referenced using 0-57.


So basically I need to modify this prodedure to support both variations of the menu.  

 

procedure TForm1.CreateTitlesRtf();
var
   pack: string;
   temp: string;
   index: integer;
   gs: TFileStream;
   MenuFile: array[1..512] of string;
   gamenum_lo: string;
   gamenum_hi: string;
   titlesfile: string;

begin
  ProgressBar.Position := ProgressBar.Position + 1;
  Application.ProcessMessages;
  pack := '';
  for index := 0 to FlbGameFiles.Count - 1 do
  begin
    temp := Copy(FlbGameFiles.Items[index],1,Length(FlbGameFiles.Items[index])-4);
    MenuFile[index+1] := temp+Spaces(13-(Length(temp)));
    SetLength(MenuFile[index+1],13);
    pack := pack + chr(124)+MenuFile[index+1]+chr(124)+chr(13);
  end;
  gamenum_hi := chr(hi(index));
  gamenum_lo := chr(lo(index));
  titlesfile := TxtSDCard.Text + DirectorySeparator + 'Titles.rtf';
  gs := TFileStream.Create(titlesfile, fmCreate);
  gs.Free;
  AddToEOF(titlesfile, gamenum_hi + gamenum_lo + chr(13) + pack);
end;                      

 

 

  • Like 1
Link to comment

@NeonPeon, @Nathan Strum here's a 0.4 beta version that hopefully correctly creates the menu for the new VecMulti cart.

 

MenuMaker_04beta.app.zip

 

By default it'll create a menu for the original VecMulti.  Check the new New VecMulti (2019) check box to create a menu for the new version.

 

4092650_ScreenShot2022-01-09at3_50_40PM.thumb.png.a4583ad36685714e005db455ab868dd4.png

 

I figured out how to get that checkbox saved in ~user/Library/Preferences/ so it'll remember it between runs, though for some reason the plist file it's using is com.company.MenuMaker.plist. I'm trying to find where "company" is coming from.

  • Like 1
Link to comment
4 hours ago, SpiceWare said:

The older version has ^@9 for the same number of ROMs. 9 = $39, so its ROM count is $0039 or 57.  Actual file count is still 58, so the two VecMulti menu routines differ their count by 1.

 

Turned out the last game in my Games directory was not showing up in the VecMulti menu, so this looks like it was an off-by-one bug in my port.  I don't know if that was a bug my original port, or just the recent re-port. I've fixed it and added the ability the quit the program using COMMAND-Q.

 

I partially figured out the issue with com.company.MenuMaker.plist - in MenuMaker.app/Contents/Info.plist I found this:

  <key>CFBundleIdentifier</key>
  <string>com.company.MenuMaker</string>

 

and if I change it to this

  <key>CFBundleIdentifier</key>
  <string>com.spiceware.MenuMaker</string>

 

the Preferences now get saved in com.spiceware.MenuMaker.plist

 

don't know where the initial company is coming from, but that works for now.

 

I'm thinking about changing the checkbox to 2 radio buttons:

  • original VecMulti
  • 2019+ VecMulti

I think that'll make usage a bit clearer.  Any feedback on this?

 

Also has anybody confirmed it works correctly for the 2019 VecMulti?

  • Like 1
Link to comment
23 minutes ago, SpiceWare said:

I'm thinking about changing the checkbox to 2 radio buttons:

  • original VecMulti
  • 2019+ VecMulti

I think that'll make usage a bit clearer.  Any feedback on this?

 

I like version option nomenclature you have listed. 

 

Suggest also checking with @Richard H. to see if another differences exist for ancient VecMulti versions.  Might as well try to cover them if there are more.

Link to comment
6 hours ago, SpiceWare said:

I suspect it no longer uses the |^M| from the older version as it's being displayed by the new VecMulti's menu routine (the double-bars with the space between them, the ^M is a RETURN character).

 

I haven't booted Windows so long it's busy doing updates. Once it's done I'll run the new MenuMaker and see what it does.

Wow, it's so simple. Apologies for the mixup. I take it you don't need me to send the .rtf file then? I have no problem doing so if you do need it; just sounds like you've got it figured out already is all. ?

Link to comment
1 hour ago, Vectrexer said:

I like version option nomenclature you have listed. 

 

Suggest also checking with @Richard H. to see if another differences exist for ancient VecMulti versions.  Might as well try to cover them if there are more.

 

Thanks!  Possible other versions of VecMulti was also part of the idea behind using radio buttons.

 

16 minutes ago, NeonPeon said:

Wow, it's so simple. Apologies for the mixup. I take it you don't need me to send the .rtf file then? I have no problem doing so if you do need it; just sounds like you've got it figured out already is all. ?

 

No worries, by having the EXE I was able to confirm the ##.men ROM files followed the same convention in both versions of the VecMulti.

  • Like 1
Link to comment

@SpiceWare it works! To be a little more precise, the following was my test:

  1. Ran MenuMaker_04beta2.app on my M1 Mac running MacOS Monterey (12.1)
  2. Deleted all the .men files, as well as the .rtf file from the SD card.
  3. Clicked the make button and waited until it succeeded.
  4. Popped the SD card in the "new" (2019) VecMulti, powered on the Vectrex, and saw a non-garbled menu.
  5. Tried loading a game (Armor Attack) and it ran.

Great to know there's a functioning, MacOS-native version for the new VecMultis. Thanks for the work you do for the Vectrex community!

 

  • Like 1
Link to comment
Guest
Add a comment...

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