Jump to content
IGNORED

New MAME release


mizapf

Recommended Posts

On 1/3/2022 at 9:20 AM, mizapf said:

@VorticonAs you seem to be using Linux, you should consider pulling the latest version via git and building it from sources. Unlike many other OSS projects, this is really simple and only requires you to run the same build command every time that you update your local source copy.

 

See also https://www.mizapf.de/en/ti99/mame/buildmame

Thanks! I used your instructions to build the latest version. 

  • Like 2
Link to comment
Share on other sites

Thanks, looks like I'm good!

 

D:\mame>chdman.exe info -i Bootdisk1.hd
chdman - MAME Compressed Hunks of Data (CHD) manager 0.239 (mame0239)
Input file:   Bootdisk1.hd
File Version: 5
Logical size: 134,217,728 bytes
Hunk Size:    4,096 bytes
Total Hunks:  32,768
Unit Size:    256 bytes
Total Units:  524,288
Compression:  none
CHD size:     134,164,594 bytes
Metadata:     Tag='GDDD'  Index=0  Length=35 bytes
              CYLS:1024,HEADS:16,SECS:32,BPS:256.
Metadata:     Tag='GDDI'  Index=0  Length=37 bytes
              IL:4,CSKEW:0,HSKEW:0,WPCOM:-1,RWC:-1.
Metadata:     Tag='GDDI'  Index=1  Length=45 bytes
              GAP1:16,GAP2:3,GAP3:18,SYNC:13,HLEN:5,ECC:-1.

D:\mame>

  • Like 2
Link to comment
Share on other sites

@mizapf the Geneve and Apple IIgs both have built in clocks and both keep lousy time by gain minutes per second (in the MAME emulation). But, I haven't notice anyone else complain about this. I wondering if maybe it's something I'm doing but I can't think what would be? both set at just 100% speed with auto as frame skip.

Link to comment
Share on other sites

8 hours ago, mizapf said:

I'm not aware of such a timing problem either. What happens if you set the skip to 0 (not auto), i.e. what does it say when you terminate the emulation? Still 100%?

set skip to 0, and it now works on the Geneve even when I set back to auto. guess just a glitch. apple still screwed up though, must be just that emulation. since both were doing it I thought I found a pattern, but not.

Link to comment
Share on other sites

  • 2 weeks later...

@mizapf got the mouse working in ABASIC on the Geneve (yah!) I set it to ctrl-arrow keys. is there any way to get the real mouse to work as the mouse with Geneve mouse movements?

also just an FYI, the Scroll-Lock that turns on the partial-keyboard in MAME is also the same key that turns on the ABASIC KEY function on the Geneve, conflict. anyone messing with the Geneve ABASIC KEY then needs to redefine the partial keyboard in MAME to another key other that Scroll-Lock.

Link to comment
Share on other sites

Ehm ... yes, the mouse is supposed to work. You have to add "-colorbus busmouse" as option. In Windows, the desktop mouse is automatically captured; in Linux you have to add "-mouse" to capture the mouse, or you may have to play with the window sizes to get a good mapping between your desktop and the emulation.

 

No, a seamless integration (where the desktop mouse automatically turns into the emulated mouse and reach every point in the emulated screen, and back when you leave the window) is virtually impossible, I dare say.

 

The thing with the partial mode key is not surprising, since the Geneve may use all XT keyboard keys. You can, of course, map the mode key to any other key on the keyboard, but you will always have to sacrifice that key for the emulation.

  • Like 1
Link to comment
Share on other sites

18 minutes ago, mizapf said:

Ehm ... yes, the mouse is supposed to work. You have to add "-colorbus busmouse" as option. In Windows, the desktop mouse is automatically captured; in Linux you have to add "-mouse" to capture the mouse, or you may have to play with the window sizes to get a good mapping between your desktop and the emulation.

 

No, a seamless integration (where the desktop mouse automatically turns into the emulated mouse and reach every point in the emulated screen, and back when you leave the window) is virtually impossible, I dare say.

 

The thing with the partial mode key is not surprising, since the Geneve may use all XT keyboard keys. You can, of course, map the mode key to any other key on the keyboard, but you will always have to sacrifice that key for the emulation.

OK, I'll check out adding the command line for colormouse. I turned it on in the devices only. thanks

and on my scroll-lock-less laptop I use F12 for MAME.

Edited by hloberg
Link to comment
Share on other sites

For a quick check in MDOS, try this. The source code and the binary code are on the disk image.

 

/*   Mouse, keyboard, joystick   */

#include <video_h>

int st, buttons, x, y, xj, yj, keyc;

main() {
   locate(4,5);  printf("\fPress Ctrl-C to stop");
   while (1) {
        keyc = key(1,&st);
        buttons = mouse(&x, &y);
        joyst(1,&xj, &yj);
        locate(8,5);  printf("Keyboard (mode 1): %d ", keyc);
        locate(10,5); printf("Mouse buttons: %d  ", buttons);
        locate(12,5); printf("x value (mouse): %d  ",x);
        locate(14,5); printf("y value (mouse): %d  ",y);
        locate(16,5); printf("x value (joystick): %d  ",xj);
        locate(18,5); printf("y value (joystick): %d  ",yj);
   }
}

genmouse.dsk

  • Like 2
Link to comment
Share on other sites

doesn't capture the movements of the mouse. tried -colorbus busmouse, -mouse, -mouse_device mouse. removed the .cfg with the defined mouse keyboard keys. tried with full screen & window. set in slots-colorbus to on. checked/un-checked various mouse combinations in the .ini. I also checked the MAME forum and took some ideas from there, nothing. it removes the mouse pointer like it tries to capture the mouse but no motion is recorded.

but the keyboard emulation to mouse works which is still a win to me. :) 

 

 

Edited by hloberg
  • Like 2
Link to comment
Share on other sites

Wait, wait, it has to work. Are you sure that you mapped the mouse movement?

 

Check "Input (this machine)" → "V9938 Bus Mouse" → "Mouse X 3 Analog = Mouse X", "Mouse Y 3 Analog = Mouse Y".

 

Is there is "none", select that item, and move your mouse in the respective direction.

Link to comment
Share on other sites

2 hours ago, mizapf said:

Wait, wait, it has to work. Are you sure that you mapped the mouse movement?

 

Check "Input (this machine)" → "V9938 Bus Mouse" → "Mouse X 3 Analog = Mouse X", "Mouse Y 3 Analog = Mouse Y".

 

Is there is "none", select that item, and move your mouse in the respective direction.

on mine

"V9938 Bus Mouse" → "Mouse X 3 Analog = n/a", "Mouse Y 3 Analog = n/a".

UPDATE: I got it. I actually had to assign mouse X3 and mouse Y3 by moving the mouse X then y. afterwards I assigned the mouse buttons. all is good.

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

You know, this is a point where MAME somewhat fails to meet minimal expectations on a reasonable usability (in short, sucks).

(There is a solution at the end of this posting.)

 

Key assignments are part of the configuration. All these configurations cannot be specified on the command line but must be set in the OSD. It would be interesting to allow this as command line options, although I don't dare to think about how that may eventually look like. But it would avoid the hassle that I'm about to describe.

 

MAME is not very good when it comes to changing configurations. The problem is in how MAME handles settings of its components. Over time, the MAME core developers turned the once monolithic system into a system with pluggable components, which allows for a wide range of extensions. You can see it in our TI systems where expansion cards may be plugged in as desired.

 

However, each of these pluggable components may introduce settings, which typically represent switches on the component (dip switches) or setups of the component (e.g. with one or another clock chip). All this can be set in MAME. But when you stop the emulation and restart it, you expect that everything is set like before. To make that happen, each component defines its settings in the code, and the core saves those settings in a file, named by the driver (computer system), for example, cfg/ti99_4a.cfg. How the components find their settings on the next start is determined by the position in the device tree. If you have an IDE card in slot 7, this line is saved in the config file:

 

<port tag=":ioport:peb:slot7:ide:MODE" type="DIPSWITCH" mask="3" defvalue="0" value="2" />

 

It says that the MODE switch is set to value 2, where the default is 0.

 

Now suppose that you want to test the SCSI card and replace the IDE card in slot 7. The problem is not that there is a SCSI card in slot 7 which could be confused by that setting (it clearly says "ide"); the problem is that there is no IDE card in slot 7 anymore. When you stop the emulation, the core will again check the components and write their config settings to that file. And on that occasion, all entries from cards that are not there anymore will be lost. Next time that you run the emulation with the IDE card, the MODE setting is back to default.

 

Solution: I actually noticed the "-cfg_directory" option just a while ago. For "big" changes, I use a separate config directory so that the configurations are safe from being overwritten. When you try various configurations, I would suggest to write a script file (batch file) that defines specific configuration directories. You need to remember to use that script file, of course.

 

In my case,

 

#!/bin/bash
./mame ti99_4ae -window -cfg_directory cfgide -nvram_directory nvramide \
  -ioport peb -ioport:peb:slot2 32kmem -ioport:peb:slot3 speech -ioport:peb:slot7 ide \
  -hard1 disks/hd/ide/ti99.hd -ioport:peb:slot8 ddcc1 $*
  • Like 3
  • Thanks 1
Link to comment
Share on other sites

I do something similar. I create several .cfg, .ini and the batch runtime files and give them unique names. when I test something I backup the default files then create a set like ti99-scsi.cfg, ti99-scsi.bat & ti99-scsi.ini if the testing is good and I want to save off for a future use. I also have made a habit of creating generational copies of the .cfg, .bat & .ini if I need to roll back (this really helped trying to figure out the mouse issue.)

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

3 hours ago, mizapf said:

 

Key assignments are part of the configuration. All these configurations cannot be specified on the command line but must be set in the OSD. It would be interesting to allow this as command line options, although I don't dare to think about how that may eventually look like. But it would avoid the hassle that I'm about to describe.

 

 

you can edit the geneve.cfg which hold the key assignments and I did several times figuring out the mouse issue. BUT, you really gotta know what you are doing since it's an auto-generating file and i did crash MAME with a bad line (good I made backups). :) 

oh, the main MAME key assignments are in the DEFAULT.CFG. after I screwed up and couldn't get my UI back after pressing scroll-lock I just removed that file and started over.

and I want to emphasis once you got a good setup backup CFG, INI and your batch files.

 

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

A bug in the machine! ?

 

I booted up Geneve OS 7.3 in MAME and issued the following command:

E:\FDSK1>

E:\FDSK1>COPY DSK1.* .

Floppy noise came on, and system locked up.

 

 

D:\mame>GENEVE.BAT

D:\mame>mame geneve -bios 1.00 -peb:slot4 memex -peb:slot3 horizon -peb:slot5 tirs232 -peb:slot8 hfdc -peb:slot8:hfdc:h1 generic -peb:slot8:hfdc:h2 generic -peb:slot8:hfdc:h3 generic -peb:slot8:hfdc:f3 525dd -peb:slot8:hfdc:f4 525dd -hard1 genos7boot.HD -hard2 Bootdisk2.HD -hard3 Bootdisk3.HD -flop1 DSDD1.dsk -flop2 DSDD2.hfe -flop3 DSDD3.dsk -flop4 DSDD4.dsk -serl1 socket.localhost:10000

-----------------------------------------------------
Exception at EIP=00000000008f253c (address_map_entry& address_map_entry::r<ddenlovr_state, unsigned char>(unsigned char (ddenlovr_state::*)(), char const*) [clone .constprop.0]+0x003c): ACCESS VIOLATION
While attempting to read memory at 000000000dc1f68a
-----------------------------------------------------
RAX=000000000dc1c470 RBX=000000000000190e RCX=0000000006d9ed60 RDX=000000000000190d
RSI=000000000d8bf700 RDI=0000000003c19660 RBP=0000000000000030 RSP=0000000003c19530
 R8=0000000006e1c910  R9=0000000000000000 R10=0000000000000004 R11=000000000000113a
R12=0000000003c19670 R13=0000000000000001 R14=000000000dbf3cb8 R15=0000000000000031
-----------------------------------------------------
Stack crawl:
  0000000003c19530: 00000000008f253c (address_map_entry& address_map_entry::r<ddenlovr_state, unsigned char>(unsigned char (ddenlovr_state::*)(), char const*) [clone .constprop.0]+0x003c)
  0000000003c19610: 0000000000d3a3db (jpmsys5_state::jpmsys5_common(machine_config&)+0x1d4b)
  0000000003c196b0: 0000000000d39d86 (jpmsys5_state::jpmsys5_common(machine_config&)+0x16f6)
  0000000003c19790: 0000000000d3a2bb (jpmsys5_state::jpmsys5_common(machine_config&)+0x1c2b)
  0000000003c19830: 0000000000d39d86 (jpmsys5_state::jpmsys5_common(machine_config&)+0x16f6)
  0000000003c19910: 0000000000d3a2bb (jpmsys5_state::jpmsys5_common(machine_config&)+0x1c2b)
  0000000003c19a00: 0000000000d3b6e7 (jpmsys5_state::reel_0123_w(unsigned int, unsigned short, unsigned short)+0x00a7)
  0000000003c19b10: 0000000000d3a746 (jpmsys5_state::jpmsys5_common(machine_config&)+0x20b6)
  0000000003c19b80: 0000000000d1aaf0 (driver_j6mono60e::{lambda(device_t&)#2}::_FUN(device_t))
  0000000003c19ce0: 0000000000cca8c8 (megasys1_state::megasys1D_map(address_map&)+0x03e8)
  0000000003c1f350: 000000000052a06e (bfm_sc1_state::scorpion1(machine_config&)+0x244e)
  0000000003c1f730: 00000000005c588f (driver_sc5hapnt::{lambda(device_t&)#2}::_FUN(device_t)+0x000f)
  0000000003c1f9f0: 00000000005c5e9d (driver_sc5manick::{lambda(device_t&)#2}::_FUN(device_t)+0x000d)
  0000000003c1fa50: 00000000005272e9 (bfm_sc1_state::sc1_base(address_map&)+0x1ff9)
  0000000003c1fe20: 0000000002ab5b87 (atarig1_state::pfslap114(machine_config&)+0x01f7)
  0000000003c1fef0: 00000000004013c1 (__tmainCRTStartup+0x0231)
  0000000003c1ff20: 00000000004014f6 (mainCRTStartup+0x0016)
  0000000003c1ff50: 00007ffd98487034 (BaseThreadInitThunk+0x0014)
  0000000003c1ffd0: 00007ffd996a2651 (RtlUserThreadStart+0x0021)

D:\mame>

 

Similar Experience with cataloging an archive file on DSK1. It got to the end and said [more] - but the machine was locked up with the following:

D:\mame>GENEVE.BAT

D:\mame>mame geneve -bios 1.00 -peb:slot4 memex -peb:slot3 horizon -peb:slot5 tirs232 -peb:slot8 hfdc -peb:slot8:hfdc:h1 generic -peb:slot8:hfdc:h2 generic -peb:slot8:hfdc:h3 generic -peb:slot8:hfdc:f3 525dd -peb:slot8:hfdc:f4 525dd -hard1 genos7boot.HD -hard2 Bootdisk2.HD -hard3 Bootdisk3.HD -flop1 DSDD1.dsk -flop2 DSDD2.hfe -flop3 DSDD3.dsk -flop4 DSDD4.dsk -serl1 socket.localhost:10000

-----------------------------------------------------
Exception at EIP=00000000008f253c (address_map_entry& address_map_entry::r<ddenlovr_state, unsigned char>(unsigned char (ddenlovr_state::*)(), char const*) [clone .constprop.0]+0x003c): ACCESS VIOLATION
While attempting to read memory at 000000000dc0fd90
-----------------------------------------------------
RAX=000000000dc0be50 RBX=0000000000001fa1 RCX=0000000006dd07f0 RDX=0000000000001fa0
RSI=0000000005f4ed10 RDI=0000000003c19660 RBP=0000000000000088 RSP=0000000003c19530
 R8=0000000006e52f00  R9=0000000000000000 R10=0000000000000004 R11=000000000000113a
R12=0000000003c19670 R13=0000000000000001 R14=000000000dc00ed8 R15=0000000000000089
-----------------------------------------------------
Stack crawl:
  0000000003c19530: 00000000008f253c (address_map_entry& address_map_entry::r<ddenlovr_state, unsigned char>(unsigned char (ddenlovr_state::*)(), char const*) [clone .constprop.0]+0x003c)
  0000000003c19610: 0000000000d3a3db (jpmsys5_state::jpmsys5_common(machine_config&)+0x1d4b)
  0000000003c196b0: 0000000000d39d86 (jpmsys5_state::jpmsys5_common(machine_config&)+0x16f6)
  0000000003c19790: 0000000000d3a2bb (jpmsys5_state::jpmsys5_common(machine_config&)+0x1c2b)
  0000000003c19830: 0000000000d39d86 (jpmsys5_state::jpmsys5_common(machine_config&)+0x16f6)
  0000000003c19910: 0000000000d3a2bb (jpmsys5_state::jpmsys5_common(machine_config&)+0x1c2b)
  0000000003c19a00: 0000000000d3b6e7 (jpmsys5_state::reel_0123_w(unsigned int, unsigned short, unsigned short)+0x00a7)
  0000000003c19b10: 0000000000d3a746 (jpmsys5_state::jpmsys5_common(machine_config&)+0x20b6)
  0000000003c19b80: 0000000000d1aaf0 (driver_j6mono60e::{lambda(device_t&)#2}::_FUN(device_t))
  0000000003c19ce0: 0000000000cca8c8 (megasys1_state::megasys1D_map(address_map&)+0x03e8)
  0000000003c1f350: 000000000052a06e (bfm_sc1_state::scorpion1(machine_config&)+0x244e)
  0000000003c1f730: 00000000005c588f (driver_sc5hapnt::{lambda(device_t&)#2}::_FUN(device_t)+0x000f)
  0000000003c1f9f0: 00000000005c5e9d (driver_sc5manick::{lambda(device_t&)#2}::_FUN(device_t)+0x000d)
  0000000003c1fa50: 00000000005272e9 (bfm_sc1_state::sc1_base(address_map&)+0x1ff9)
  0000000003c1fe20: 0000000002ab5b87 (atarig1_state::pfslap114(machine_config&)+0x01f7)
  0000000003c1fef0: 00000000004013c1 (__tmainCRTStartup+0x0231)
  0000000003c1ff20: 00000000004014f6 (mainCRTStartup+0x0016)
  0000000003c1ff50: 00007ffd98487034 (BaseThreadInitThunk+0x0014)
  0000000003c1ffd0: 00007ffd996a2651 (RtlUserThreadStart+0x0021)
Terminate batch job (Y/N)?

Link to comment
Share on other sites

Before I try, could you please retry your action with fewer parameters? Could you please remove the RS232 and drop all media that you don't need to run your program? It will be much easier to track down the issue if only the required devices are active. Maybe strip down the machine to floppy and hard disk only, then add memex and horizon etc.

Link to comment
Share on other sites

10 hours ago, mizapf said:

Before I try, could you please retry your action with fewer parameters? Could you please remove the RS232 and drop all media that you don't need to run your program? It will be much easier to track down the issue if only the required devices are active. Maybe strip down the machine to floppy and hard disk only, then add memex and horizon etc.

@mizapf I have got that stack crawl error several times recent. it usually happens when I try to change a disk. mine is just 2 HD and whatever floppy. oddly, it doesn't happen all time which is why I didn't mention it till now. I been looking for a pattern and other than it seems to happen some times when I switch disk I haven't seen one.

Link to comment
Share on other sites

It could be an uninitialized variable; this is often hard to find and sometimes depends on the moon phase, bad karma in your vicinity, or uncontrolled butterflies causing weird effects. If you can build MAME by yourself, you could create a debug build, and the stack dump will contain precise information of the source code line where the error occurs. However, according to Heisenberg, you change the situation by your measurement, so the debug build may probably never fail. (This is why such errors are sometimes called Heisenbugs.)

  • Haha 3
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...