Jump to content
IGNORED

a7800 on macOS: can't figure out how to select BIOS


x=usr(1536)

Recommended Posts

For the past several years, I've been using MAME's 7800 emulation for, well, emulating the 7800 ;)  However, I recently decided that it would be beneficial to have that capability separate from MAME itself, so started in on using a7800.

 

Everything is going fine (including XM and HSC support) except for one thing: I cannot for the life of me figure out how to make it use a BIOS other than the built-in one.  I'm wanting to do some experiments with the 7800openbios, but seemingly can't get things working.

 

Doing `a7800 a7800 -bios path/to/bios.bin -cart1 game.a78' results in a, "bios.bin: invalid bios, reverting to default," error regardless of which BIOS is specified (and this includes 7800openbios).  The emulator will run the game without issue, but it does so using the built-in BIOS.  If no cart is specified, the emulator drops straight to the orange and grey scrollbars at start.  It also doesn't seem to matter if a cold, warm, or hot system is specified.

 

FWIW, using a7800p as the machine type does seem to load the PAL BIOS and drop straight to Asteroids if no cart is specified.

 

This is on macOS Ventura (13.4.1, AMD64) using the current github binary (5.2, IIRC).  Permissions and ownership look OK, and results are the same regardless of whether or not a7800 has been granted full disk access.  No weird ACLs or extended attributes are set on the files, etc.

 

Any help appreciated - I've been banging my head off of it for the past few days, and have no idea what I'm doing wrong.

Link to comment
Share on other sites

The -bios switch via command line does not allow for selection of a different external BIOS, rather selection from the internal maintained list of available BIOS files. 

 

The path to which the predetermined internal list of maintained supported BIOS files are stored can be specified under the a7800.ini file here:

 

image.png.e6d1ecd9a7b204c4880e2d7e7a19b98d.png

 

The major change with A7800 from standard MAME is allowing the system to run without the BIOS file needing to be present or selection of an internally maintained list.

 

Nonetheless, what may be possible is renaming the desired BIOS to the name of the acceptable internal one, "7800.u7".

Link to comment
Share on other sites

2 hours ago, Trebor said:

The -bios switch via command line does not allow for selection of a different external BIOS, rather selection from the internal maintained list of available BIOS files. 

I thought that might be the case, but good to have confirmation.  Thanks.

2 hours ago, Trebor said:

The path to which the predetermined internal list of maintained supported BIOS files are stored can be specified under the a7800.ini file here:

Yep, and that is specified per the screenshot.

2 hours ago, Trebor said:

The major change with A7800 from standard MAME is allowing the system to run without the BIOS file needing to be present or selection of an internally maintained list.

OK, cool, I understood that part of things correctly ;-)

2 hours ago, Trebor said:

Nonetheless, what may be possible is renaming the desired BIOS to the name of the acceptable internal one, "7800.u7".

Tried it, no dice.  I'll admit to not having looked at the a7800 source yet to see if it's hashing the BIOS files as it loads them and failing if there isn't a match; will check in a bit.

Link to comment
Share on other sites

Dug through and confirmed that a7800 is (as expected) checking hashes for the BIOSes being loaded.

 

One thing that I just realised: running `a7800 a7800 -v' results in 'OPTIONAL 7800.u7 NOT FOUND (tried in a7800 a7800)' appearing in the output if c300558-001a.u7 is replaced with the 7800OpenBIOS image.  However, no mention of c300558-001a.u7 having a hash mismatch is made in the console, and only 7800.u7 (which hasn't been touched) is flagged.  The emulator picks up on the change and gives the usual, 'one or more ROMs or CHDs may be wrong...' message in the UI, but c300558-001a.u7 isn't logged as changed.

 

Spoiler
1536@lolbox .a7800 % a7800 a7800 -v
**Error loading plugin.ini**
Setting SDL_VIDEO_GL_DRIVER = '/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib' ...
Available videodrivers: cocoa dummy 
Current Videodriver: cocoa
	Display #0
		Renderdrivers:
			    opengl (0x0)
			  software (0x0)
Available audio drivers: 
	coreaudio           
	disk                
	dummy               
Build version:      5.2 A7800
Build architecure:  
Build defines 1:    SDLMAME_UNIX=1 SDLMAME_MACOSX=1 SDLMAME_DARWIN=1 
Build defines 1:    LSB_FIRST=1 PTR64=1 
SDL/OpenGL defines: SDL_COMPILEDVERSION=2005 USE_OPENGL=1 
Compiler defines A: __GNUC__=4 __GNUC_MINOR__=2 __GNUC_PATCHLEVEL__=1 __VERSION__="4.2.1 Compatible Clang 3.7.1 (tags/RELEASE_371/final)" 
Compiler defines B: __amd64__=1 __x86_64__=1 
Compiler defines C: _FORTIFY_SOURCE=2 
Enter init_monitors
Adding monitor screen0 (1680 x 1050)
Leave init_monitors
Enter sdlwindow_init
Using SDL multi-window OpenGL driver (SDL 2.0+)

Hints:
	SDL_FRAMEBUFFER_ACCELERATION             (null)
	SDL_RENDER_DRIVER                        (null)
	SDL_RENDER_OPENGL_SHADERS                (null)
	SDL_RENDER_SCALE_QUALITY                 (null)
	SDL_RENDER_VSYNC                         (null)
	SDL_VIDEO_X11_XVIDMODE                   (null)
	SDL_VIDEO_X11_XINERAMA                   (null)
	SDL_VIDEO_X11_XRANDR                     (null)
	SDL_GRAB_KEYBOARD                        (null)
	SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS         (null)
	SDL_IOS_IDLE_TIMER_DISABLED              (null)
	SDL_IOS_ORIENTATIONS                     (null)
	SDL_XINPUT_ENABLED                       (null)
	SDL_GAMECONTROLLERCONFIG                 (null)
	SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS     (null)
	SDL_ALLOW_TOPMOST                        (null)
	SDL_TIMER_RESOLUTION                     (null)
	SDL_RENDER_DIRECT3D_THREADSAFE           (null)
	SDL_VIDEO_ALLOW_SCREENSAVER              (null)
	SDL_ACCELEROMETER_AS_JOYSTICK            (null)
	SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK   (null)
	SDL_VIDEO_WIN_D3DCOMPILER                (null)
	SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT      (null)
	SDL_VIDEO_MAC_FULLSCREEN_SPACES          (null)
	SDL_MOUSE_RELATIVE_MODE_WARP             (null)
	SDL_RENDER_DIRECT3D11_DEBUG              (null)
	SDL_VIDEO_HIGHDPI_DISABLED               (null)
	SDL_WINRT_PRIVACY_POLICY_URL             (null)
	SDL_WINRT_PRIVACY_POLICY_LABEL           (null)
	SDL_WINRT_HANDLE_BACK_BUTTON             (null)
Leave sdlwindow_init
Enter sdl_info::create
OpenGL: ATI Technologies Inc.
OpenGL: AMD Radeon Pro 560 OpenGL Engine
OpenGL: 2.1 ATI-4.12.7
OpenGL: texture rectangle supported
OpenGL: non-power-of-2 textures supported (new method)
OpenGL: vertex buffer supported
OpenGL: pixel buffers supported
OpenGL: framebuffer object supported
OpenGL: GLSL supported, but disabled
OpenGL: max texture size 16384 x 16384
Leave renderer_ogl::create
Audio: Start initialization
Creating AudioUnit graph
Adding default output to AudioUnit graph
Audio: End initialization
Keyboard: Start initialization
Input: Adding keyboard #0: System keyboard (device id: System keyboard)
Keyboard: Registered System keyboard
Keyboard: End initialization
Mouse: Start initialization
Input: Adding mouse #0: System mouse (device id: System mouse)
Mouse: Registered System mouse
Mouse: End initialization
Joystick: Start initialization
Joystick: End initialization
FONT NAME default
Matching font: Helvetica
OpenGL: VBO supported
OpenGL: PBO supported
OpenGL: FBO supported
OpenGL: using vid filter: 0
Region ':maincpu' created
OPTIONAL 7800.u7 NOT FOUND (tried in a7800 a7800)
WARNING: the machine might not run correctly.
Starting Atari 7800 (NTSC) Warm ':'
  (missing dependencies; rescheduling)
Starting M6502 ':maincpu'
Starting Timer ':scantimer'
Starting Video Screen ':screen'
  (missing dependencies; rescheduling)
Starting palette ':palette'
Optional memory region ':palette:finder_dummy_tag' not found
Starting Atari MARIA ':maria'
Starting Speaker ':mono'
  (missing dependencies; rescheduling)
Starting Atari TIA (Sound) ':tia'
Starting 6532 RIOT ':riot'
Starting Atari 7800 controller port ':joy1'
Starting Atari 7800 Proline joystick ':joy1:proline_joystick'
Starting Atari 7800 controller port ':joy2'
Starting Atari 7800 Proline joystick ':joy2:proline_joystick'
Starting Atari 7800 Cartridge Slot ':cartslot'
Starting Software List ':cart_list'
Starting Atari 7800 (NTSC) Warm ':'
  (missing dependencies; rescheduling)
Starting Video Screen ':screen'
Starting Speaker ':mono'
Starting Atari 7800 (NTSC) Warm ':'
GL texture: copy 1, shader 0, dynamic 1, 320x243 320x243 [PALETTE16, Equal: 0, Palette: 1,
            scale 1x1, border 0, pitch 454,320/16384], bytes/pix 4
GL texture: copy 1, shader 0, dynamic 1, 320x243 320x243 [PALETTE16, Equal: 0, Palette: 1,
            scale 1x1, border 0, pitch 454,320/16384], bytes/pix 4
Average speed: 100.04% (5 seconds)
Audio: Start deinitialization
Stopping CoreAudio output
Sound buffer: overflows=0 underflows=1
Audio: End deinitialization
Enter sdlwindow_exit
Leave sdlwindow_exit
1536@lolbox .a7800 % 

 

 

Link to comment
Share on other sites

I played around with this for a bit, while developing the open bios in the first place. The bios files are all checksummed, and anything not-matching the checksum is rejected. The behaviour is inherited from Mame, and there isn't a way around it presently. (other than manually adding a new bios entry with it's own checksum)

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