+x=usr(1536) Posted June 26, 2023 Share Posted June 26, 2023 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. Quote Link to comment Share on other sites More sharing options...
Trebor Posted June 27, 2023 Share Posted June 27, 2023 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: 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". Quote Link to comment Share on other sites More sharing options...
+x=usr(1536) Posted June 27, 2023 Author Share Posted June 27, 2023 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. Quote Link to comment Share on other sites More sharing options...
+x=usr(1536) Posted June 28, 2023 Author Share Posted June 28, 2023 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 % Quote Link to comment Share on other sites More sharing options...
RevEng Posted July 3, 2023 Share Posted July 3, 2023 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) 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.