Jump to content
IGNORED

Atari800 4.2.0 released...


Mclaneinc

Recommended Posts

 

https://github.com/atari800/atari800/releases

 

Quote

New Features:

  • raw Pokey registers recording by Ivo van Poorten
  • new platform supported: FireBee
  • optional hiding of hidden files/folders in the UI file selector
  • libatari800 (Atari800 as a library) by Rob McMullen
  • R: device (many years old feature) enabled by default

Fixes:

  • proper check if SDL joysticks are found (fixes #58)
  • Portrait mode for Android (related to #41)
  • RMW for Pokey
  • Improved BASIC LST file loading (#55)
  • ROM OS path changes handled better (#15)
  • improved "Find ROM images" - now Atari800 reboots if necessary (#15)
  • fixed an old bug which caused freezing in the UI on Falcon

New command line options:

  • -pokeyrec and its children
  • -atari_files (#29)
  • -saved_files (#29)
  • -kbdjoy0 -kbdjoy1 -nokbdjoy0 -nokbdjoy1 (#29)

Plus many Atari Falcon specific fixes and improvements by Mikro. This should be the most complete and bug-free Atari Falcon release in years, so enjoy! :)

 

  • Like 13
Link to comment
Share on other sites

Many thanks to Petr Stehlík for cutting this release! Have to check out libatari800. Sounds very interesting!

 

Edit:

 

https://github.com/atari800/atari800/blob/master/DOC/README.libatari800

 

Quote

NOTE: sound is currently not supported, but will be added as soon as possible.

 

That's a pity as it could be used as a backend for a tracker.

 

But it does graphics, so perhaps it could be used for RastaConverter or a similar program to evaluate one-frame kernels, if it's fast enough. You'd lose the per-scanline caching, though.

 

Anyway, nice addition! I see ways to extend it, like executing one scanline instead of a full frame, or even a single instruction or single cycle. And sound ofcourse ;)

 

Edited by ivop
Link to comment
Share on other sites

Just now, ivop said:

That's a pity as it could be used as a backend for a tracker.

Yep, that's a limitation. I don't understand how it generates samples or how it synchronizes or anything. So, I left it out of libatari800, but it is on my mind and I will figure it out at some point.

Just now, ivop said:

Anyway, nice addition! I see ways to extend it, like executing one scanline instead of a full frame, or even a single instruction or single cycle.

The way atari800 is written, less-than-full-frame emulation requires a separate thread because the only place the atari800 code returns to a user program is after the frame is complete.

 

I have a multithreading implementation that allows stepping by instruction because that's what I needed to make the debugger in Omnivore, but I didn't integrate that code into libatari800 because I thought it was too specific to Omnivore. But I know the core atari800 folks have talked about a multithreaded debugger for a while, so I will talk to them on the mailing list and see if it could be used as a starting point.

  • Like 2
Link to comment
Share on other sites

1 hour ago, playermissile said:

Yep, that's a limitation. I don't understand how it generates samples or how it synchronizes or anything. So, I left it out of libatari800, but it is on my mind and I will figure it out at some point.

The way atari800 is written, less-than-full-frame emulation requires a separate thread because the only place the atari800 code returns to a user program is after the frame is complete.

 

I have a multithreading implementation that allows stepping by instruction because that's what I needed to make the debugger in Omnivore, but I didn't integrate that code into libatari800 because I thought it was too specific to Omnivore. But I know the core atari800 folks have talked about a multithreaded debugger for a while, so I will talk to them on the mailing list and see if it could be used as a starting point.

Thanks for the explanation!

 

Other API calls that could be useful (IMHO) are direct access to A,X,Y,SP,PC,P in between emulator calls and the same for RAM, ROM and hardware registers. That way one could repeatedly run the same code on a clean machine for example, which is needed if used as a tracker backend. And for that, Pokey emulation has to be improved, up to par with Altirra, but that would be something I'm interested in if it can be easily used as a library in another program.

 

Link to comment
Share on other sites

13 minutes ago, firebottle said:

I get a box that says: "The procedure entry point GetTickCount64 could not be located in the dynamic link library KERNEL32.dll"

 

Hmm... a win32 program that doesn't run in a 32-bit OS.

GetTickCount64() exists on 32-bit OSes, but only on Windows Vista or later. It looks like this might have been an unintentional change due to upgrading one of the libraries used in the build (libwinpthread to be exact).

 

Link to comment
Share on other sites

3 hours ago, firebottle said:

I get a box that says: "The procedure entry point GetTickCount64 could not be located in the dynamic link library KERNEL32.dll"

 

Hmm... a win32 program that doesn't run in a 32-bit OS.

 

The win32 build is targeting Windows 7, the oldest Windows version that gets regular support from Microsoft. The windows builds of the two latest versions of atari800 are created with the MSYS2 development system that does not support Windows XP any more.

 

I understand that upgrading from Windows XP might not be an option for everyone, so I am working on binary package that should work also with Windows XP. However, I would prefer this package to be considered an extra, not a primary windows binary package. It is because it is generated by outdated (but still working) development tools (TDM GCC, to be precise) able to target older Windows. The once popular TDM GCC targets the long obsolete Windows 98.

 

I can share a bare version now, however there are two issues to address - libpng support (without that the screenshots are PCX) and zlib (to support compressed software images). If you can test the bare version on your old Windows XP, please let me know if it works.

  • Like 2
Link to comment
Share on other sites

Just now, ivop said:

Other API calls that could be useful (IMHO) are direct access to A,X,Y,SP,PC,P in between emulator calls and the same for RAM, ROM and hardware registers. That way one could repeatedly run the same code on a clean machine

There's some support on the observation end of things, like

UBYTE *libatari800_get_main_memory_ptr();

and all the CPU state is available through access of a structure, but yes, there does need to be a better interface. The real issue is that this control would only be possible at frame boundaries due to the current design of the atari800 code. There is an example of accessing the CPU state in the source: atari800/src/libatari800/libatari800_test.c

  • Like 1
Link to comment
Share on other sites

11 hours ago, baktra said:

 

The win32 build is targeting Windows 7, the oldest Windows version that gets regular support from Microsoft. The windows builds of the two latest versions of atari800 are created with the MSYS2 development system that does not support Windows XP any more.

 

I understand that upgrading from Windows XP might not be an option for everyone, so I am working on binary package that should work also with Windows XP. However, I would prefer this package to be considered an extra, not a primary windows binary package. It is because it is generated by outdated (but still working) development tools (TDM GCC, to be precise) able to target older Windows. The once popular TDM GCC targets the long obsolete Windows 98.

 

I can share a bare version now, however there are two issues to address - libpng support (without that the screenshots are PCX) and zlib (to support compressed software images). If you can test the bare version on your old Windows XP, please let me know if it works.

 

I have a better version for Windows XP. Now it includes libpng and zlib support. Give it a try and report back.

 

 

  • Like 1
Link to comment
Share on other sites

Works well on Haiku. Just needs a teeny tiny tweak for saving the config file in a Haiku friendly place. If I had the slightest idea of how to use git I'd send that change back.

 

If I had the slightest idea of how to use Haikuporter I'd try and make it a part of the Haiku Depot.

 

Link to comment
Share on other sites

  • 2 weeks later...

The Raspberry Pi packages have been released.

 

There is a separate one for the new Pi 4 because of major hardware changes.

 

The first time you run the Pi 4 version you have to go to <Display Settings>, <Video mode settings> and turn on <Hardware acceleration> - otherwise sound and graphics are jerky in full screen mode.  Hopefully this will be set by default in future releases, but it has to be done by hand for the time being.

  • Like 2
Link to comment
Share on other sites

2 hours ago, eugenetswong said:

Is this the correct thread to ask for help on installing this on Kubuntu from 2016?

It is very easy to build from source

generally untar it,  go into the directory tar created

run "./configure"

then "make install"

 

If it fails, it is most likely because you need to add some other development packages.   The errors would help determine what is missing.

Link to comment
Share on other sites

54 minutes ago, zzip said:

It is very easy to build from source

generally untar it,  go into the directory tar created

run "./configure"

then "make install"

 

If it fails, it is most likely because you need to add some other development packages.   The errors would help determine what is missing.

Hi! :) Thanks for your response. I appreciate the way that you just told me what to type. It has been so long, that I didn't really even know what questions to ask.

 

I got several warning messages. Here are the only errors.

 

rdevice.c:772:19: error: ‘caddr_t’ undeclared (first use in this function)
           memcpy((caddr_t)&peer_in.sin_addr, host->h_addr_list[0], host->h_leng
                   ^
rdevice.c:772:19: note: each undeclared identifier is reported only once for each function it appears in
Makefile:1185: recipe for target 'rdevice.o' failed
make[1]: *** [rdevice.o] Error 1
make[1]: Leaving directory '/home/eugene/.atari/Downloads/atari800-4.2.0/src'
Makefile:416: recipe for target 'install-recursive' failed
make: *** [install-recursive] Error 1

Are you or anybody able to make any sense of it?

Link to comment
Share on other sites

45 minutes ago, eugenetswong said:

Hi! :) Thanks for your response. I appreciate the way that you just told me what to type. It has been so long, that I didn't really even know what questions to ask.

 

I got several warning messages. Here are the only errors.

 


rdevice.c:772:19: error: ‘caddr_t’ undeclared (first use in this function)
           memcpy((caddr_t)&peer_in.sin_addr, host->h_addr_list[0], host->h_leng
                   ^
rdevice.c:772:19: note: each undeclared identifier is reported only once for each function it appears in
Makefile:1185: recipe for target 'rdevice.o' failed
make[1]: *** [rdevice.o] Error 1
make[1]: Leaving directory '/home/eugene/.atari/Downloads/atari800-4.2.0/src'
Makefile:416: recipe for target 'install-recursive' failed
make: *** [install-recursive] Error 1

Are you or anybody able to make any sense of it?

Is there any more above it?   caddr_t might be in some header file that it failed to import.  

 

What I've found online is that caddr_t is old legacy code that shouldn't be used anymore.   But I frequently build new Atari800 releases without issue, so I still think you might be missing a package

Link to comment
Share on other sites

I have recently updated this to the latest packges for the 2016 version. Should I remove caddr_t?

 

I have attempted to attach config.log. I doubt that you'd need it, but I wanted to make this as easy as possible for you, if you needed it.

 

eugene@eugene-Aspire-5100:~/.atari/Downloads/atari800-4.2.0$ sudo make install
Making install in DOC
make[1]: Entering directory '/home/eugene/.atari/Downloads/atari800-4.2.0/DOC'
make[2]: Entering directory '/home/eugene/.atari/Downloads/atari800-4.2.0/DOC'
make[2]: Nothing to be done for 'install-exec-am'.
 /bin/mkdir -p '/usr/local/share/doc/atari800'
 /usr/bin/install -c -m 644 README INSTALL USAGE NEWS '/usr/local/share/doc/atari800'
make[2]: Leaving directory '/home/eugene/.atari/Downloads/atari800-4.2.0/DOC'
make[1]: Leaving directory '/home/eugene/.atari/Downloads/atari800-4.2.0/DOC'
Making install in src
make[1]: Entering directory '/home/eugene/.atari/Downloads/atari800-4.2.0/src'
  CC       afile.o
  CC       antic.o
  CC       atari.o
  CC       binload.o
  CC       cartridge.o
  CC       cassette.o
  CC       compfile.o
  CC       cfg.o
  CC       cpu.o
  CC       crc32.o
  CC       devices.o
  CC       esc.o
  CC       gtia.o
  CC       img_tape.o
  CC       log.o
  CC       memory.o
  CC       monitor.o
  CC       pbi.o
  CC       pia.o
  CC       pokey.o
  CC       roms/altirra_5200_os.o
  CC       rtime.o
  CC       sio.o
  CC       sysrom.o
  CC       util.o
  CC       pokeysnd.o
  CC       mzpokeysnd.o
  CC       remez.o
  CC       sndsave.o
  CC       sound.o
  CC       sound_oss.o
sound_oss.c: In function ‘PLATFORM_SoundSetup’:
sound_oss.c:63:3: warning: implicit declaration of function ‘close’ [-Wimplicit-function-declaration]
   close(dsp_fd);
   ^
sound_oss.c: In function ‘PLATFORM_SoundWrite’:
sound_oss.c:191:14: warning: implicit declaration of function ‘write’ [-Wimplicit-function-declaration]
  int wsize = write(dsp_fd, buffer, size);
              ^
  CC       pokeyrec.o
  CC       atari_basic.o
  CC       roms/altirraos_800.o
  CC       roms/altirraos_xl.o
  CC       roms/altirra_basic.o
  CC       pbi_mio.o
  CC       pbi_bb.o
  CC       pbi_scsi.o
  CC       pbi_xld.o
  CC       voicebox.o
  CC       votrax.o
  CC       votraxsnd.o
gcc -c -o ide.o -I. -O2 -Wall   -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Winline -Wredundant-decls -I.  -DHAVE_CONFIG_H -Wno-missing-declarations -Wno-missing-prototypes ide.c
  CC       rdevice.o
rdevice.c: In function ‘xio_40’:
rdevice.c:722:5: warning: implicit declaration of function ‘snprintf’ [-Wimplicit-function-declaration]
     snprintf(MESSAGE, sizeof(MESSAGE), "R*: XIO 40, %d", aux1);
     ^
rdevice.c: In function ‘open_connection’:
rdevice.c:772:19: error: ‘caddr_t’ undeclared (first use in this function)
           memcpy((caddr_t)&peer_in.sin_addr, host->h_addr_list[0], host->h_length);
                   ^
rdevice.c:772:19: note: each undeclared identifier is reported only once for each function it appears in
Makefile:1185: recipe for target 'rdevice.o' failed
make[1]: *** [rdevice.o] Error 1
make[1]: Leaving directory '/home/eugene/.atari/Downloads/atari800-4.2.0/src'
Makefile:416: recipe for target 'install-recursive' failed
make: *** [install-recursive] Error 1

Thanks again for your time, especially since this system is old, and helping with this can be tedious.

config.log

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