Jump to content
IGNORED

Atari800 2.2.0 released


HiassofT

Recommended Posts

This weekend version 2.2.0 of the Atari800 emulator was released. Binaries are being prepared, currently the source code and SDL and DirectX Windows binaries are online (BTW: the SDL version is the one you should use :-)

 

http://sourceforge.net/projects/atari800/files/atari800/2.2.0/

 

Here's a snippet from the NEWS file:

Version 2.2.0 (2011/04/02)

 

Another update after two long years. A lot of changes and major improvements:

 

New features:

-------------

* SDL features synchronized sound (GTIA+POKEY digisounds play properly now)

* SDL display enhancements (hardware accelerated using OpenGL)

* DirectX display enhancements (also hardware accelerated)

* Improved NTSC and PAL colours (presets: Standard/Deep Black/Vibrant)

* Austin Franklin 80 Column card

* Emulate the Alien Group Voice Box I and II

* Added support for F12 turbo mode.

* IDE emulation (compatible with MyIDE)

* New Android port by Kostas Nakos (available in the App Market already)

* Auto frame skip for slower devices (currently enabled for Android only)

 

Fixes:

------

* trak-ball (cx22) emulation fixed

* SDL: leftmost column missing in 16/32bpp fixed

* DirectX default for Win32 SDL

 

SDL Display enhancements:

-------------------------

1. Fullscreen resolution - this gives a list of all available resolutions from

which a user chooses one. The default resolution is the next-bigger-than

336x240.

 

2. Fullscreen: yes/no - obvious. Window size is independent from the chosen

fullscreen resolution and can be changed by resizing the window.

 

3. Rotate sideways: yes/no - rotates the screen by 90 deg. Works as earlier,

ie. only for "standard" display (no NTSC filter, no 80 column card).

 

4. Stretch - this option controls how display stretching (scaling) is

performed. We can select one of:

a) none - no stretching at all

b) integer multiples (default) - width and height will be resized by 1x, 2x,

3x etc.

c) full - stretching is unrestricted, display will cover the entire screen.

 

5. Keep aspect ratio - this option controls how the display's aspect ratio is

corrected. 3 options available:

a) disabled - no aspect ratio correction, display will fill entire

screen/window,

b) 1:1 (default) - width and height will be multipled by the same value

c) like real TV - display will be resized to reflect pixel aspect ratio of a

real Atari connected to a TV. Atari pixels are not square; pixel width-to-

height ratio is about 0.857 for NTSC and 1.039 for PAL. This option reflects

that.

 

6. Host display aspect ratio - here the user enters aspect ratio of his

monitor. This value is used to properly compute display aspect ratio when

"Keep aspect ratio" is set to "like real TV". Set it to 4:3 (default), 16:9,

1.78:1 etc.

 

7. Horizontal view area - this option sets the size of Atari screen area

visible horizontally. Choose one of:

a) narrow - 320 columns wide,

b) normal (default) - 336 columns wide,

c) full - 384 columns

d) custom - lets the user enter any value between 160 and 384.

 

8. Vertical view area - similar to above:

a) short - 200 lines high

b) normal (default) - this setting is TV-system-dependent. In PAL this makes

all 240 lines visible, while in NTSC top and bottom 8 lines are hidden, which

leaves 224 lines visible. I've made this as such because apparently on NTSC

TVs not all 240 lines are visible. The value of 224 was taken by taking full

NTSC height (480, divided by 2) and cutting top and bottom 3.5% (different

sources say 3.5% is the "action-safe" overscan area).

c) full - 240 lines high

d) custom - any value between 100 and 240.

 

9. Horizontal offset - when amount of columns displayed is less than 384, this

option "shifts" the visible screen area. Setting to higher than 0 shows more

of the right side, and lower than 0 shows more of the left side.

 

10. Vertical offset - similar to above.

 

Additionally, the Alt+Shift+X shortcut that switches beetween standard<->80

column display is now also available as "Display settings->80 column display

if available: yes/no".

 

The Alt+B switch however has been removed - since setting black/white colours

can be done in Display settings anyway.

 

All new options are also available from command line and are saveable in

configuration.

 

New Android port features:

-------------------------

- Efficient performance

- Uses Opengl ES to handle scaling of the graphics

- Runs on Android 1.6+

- Novel on screen touch joystick control for less hand cramps & intuitive

control

- Supports multi touch input

- Supports hardware keyboard with key remapping for joystick input

- Supports the Wii Controller for joystick input

- Supports the "move to SD" feature

- Sound emulation very good but not perfect yet

- Bypasses the emulator UI menu completely - goes 'the android way' about it

- Available in the App Market: market://details?id=name.nick.jubanka.atari800

 

so long,

 

Hias

  • Like 2
Link to comment
Share on other sites

There are (at least) seven different reasonably current emulators?

 

Atari800WinPlus

Atari800 (this one)

Altirra 1.7

Atari800MacX

A8E

XFormer 2000

AtariWin++

 

Plus special purpose ports for PSP, Nintendo, phones, etc.? Wow, that's a lot of emulators. Atai800 is the "grandfather" of many/most of these?

 

-Larry

 

 

This weekend version 2.2.0 of the Atari800 emulator was released. Binaries are being prepared, currently the source code and SDL and DirectX Windows binaries are online (BTW: the SDL version is the one you should use :-)

 

(snip...)

 

so long,

 

Hias

Link to comment
Share on other sites

Atari800 is ancestral to the following:

 

Atari800WinPlus

Atari800MacX

AtariWin++ (I think)

 

The others are independent efforts and many of them haven't seen updates in years. Altirra and Atari++ are two other actively developed emulators that aren't based on the Atari800 project and have high degrees of accuracy and feature completeness.

Link to comment
Share on other sites

Just built it on a 64-bit Ubuntu Maverick system. Works very nice though I had to tweeze it a bit to get a deb. I had to install the x-dev metapackage from Debian. It is just a dummy transitional package that requires x11proto-core-dev which current Debian derivatives do all have. I also had to comment out anything related to curses and x11 in the debian/rules file since the x11 version won't build. As with Windows, the SDL version is best on Linux anyway. I also added --enable-synchronized_sound to the configure statement in the rules to get that feature. So nothing terrible but that debian build directory is a bit stale.

 

I very much like the OpenGL, resolution, and scaling features. I've had issues getting good screen fits with past releases. It was dead easy and performed well with this one.

Link to comment
Share on other sites

There are (at least) seven different reasonably current emulators?

 

Atari800WinPlus

Atari800 (this one)

Altirra 1.7

Atari800MacX

A8E

XFormer 2000

AtariWin++

Well, as for "current", there's Atari800, Altirra and Atari++.

 

Atari800MacX also seems to have gotten updates in the last years, but for example the (in)famous Atari800WinPlus is quite outdated (based upon an approx. 6 year old version of Atari800).

 

I haven't heard of A8E before, just looked, and found 2 versions from 2007 on the sourceforge site. Doesn't seem like the emulate is still being developed, and the TODO/status list seems to be quite big.

 

And XFormer, ah, well, this one is really old and it started to smell funny a long time ago...

 

BTW: what is AtariWin++? Did you mean Atari++?

 

Plus special purpose ports for PSP, Nintendo, phones, etc.? Wow, that's a lot of emulators. Atai800 is the "grandfather" of many/most of these?

Many of the mobile phone / game console emulators are based upon Atari800, and of course Atari800MacX and Atari800WinPlus. The MacX and WinPlus ports added GUIs to Atari800, but are independent branches. The Android port, for example, was recently added to the Atari800 core and is maintained in core CVS.

 

So: kudos to all Atari800 developers, and thanks for the new release!

 

so long,

 

Hias

Link to comment
Share on other sites

Very cool... turbo was one of the features that I really missed from Atari800WinPlus. Joyride, Cosmic Escape, and Beepem All II are now producing sampled audio. 1st Top Demo 1989 and Cup of Tea are still running slowly, but I think that's POKEY IRQ timing speed.

 

Anyone seeing issues with resizing on the WinSDL build with hardware acceleration (OpenGL) enabled? When I enable that option and try to resize the window, the program exits.

Edited by phaeron
Link to comment
Share on other sites

Thanks phaeron. The issue (and a few others) is known and the fix will be released in a few weeks. For now the OpenGL feature is somewhat experimental.

 

What is your graphics hardware and Windows version, BTW?

Edited by Kr0tki
Link to comment
Share on other sites

NVIDIA Quadro FX 1800M, Windows 7 x64 SP1, Aero Glass disabled.

 

The resizing crash seems to have become more rare for some reason (figures), but I managed to get it under the debugger. No symbols for the build, so the call stack isn't that useful, but here's what came out:

 

First-chance exception at 0x6812fc5d in atari800.exe: 0xC0000005: Access violation writing location 0x006a5000.

6812FC54  mov         eax,0 
6812FC59  mov         ecx,dword ptr [ebp-2Ch] 
6812FC5C  cld              
6812FC5D  rep stos    dword ptr es:[edi]  <-- crash
6812FC5F  mov         edx,eax 
6812FC61  mov         eax,edi 

>	SDL.dll!6812fc5d() 	
	[Frames below may be incorrect and/or missing, no symbols loaded for SDL.dll]	
	SDL.dll!68130f3f() 	
	SDL.dll!681315c4() 	
	nvoglv32.dll!06ac796a() 	
	atari800.exe!0042e3fc() 	
	atari800.exe!0042e5f2() 	
	atari800.exe!0042d20c() 	
	atari800.exe!0042ae7b() 	
	atari800.exe!0042b175() 	
	atari800.exe!0042b21f() 	
	atari800.exe!0042e0e0() 	
	atari800.exe!0042e1ec() 	
	atari800.exe!0042e20f() 	
	atari800.exe!0043b203() 	
	atari800.exe!00436d34() 	
	atari800.exe!0043ba3e() 	
	atari800.exe!0043c526() 	
	atari800.exe!0040c5d3() 	
	atari800.exe!0042d157() 	
	msvcrt.dll!__onexit()  + 0x35 bytes	
	msvcrt.dll!_atexit()  + 0xd bytes	
	atari800.exe!004010b6() 	
	atari800.exe!004010b6() 	
	msvcrt.dll!_RtlpImageNtHeader@4()  + 0x54 bytes	
	kernel32.dll!@BaseThreadInitThunk@12()  + 0x12 bytes	
	ntdll.dll!___RtlUserThreadStart@8()  + 0x27 bytes	
	ntdll.dll!__RtlUserThreadStart@8()  + 0x1b bytes	

 

Another bug: maximizing the window with OpenGL mode disabled causes the application to not paint the right side of the window.

 

Also, it's rare, but I've also been able to trigger a divide by zero crash a couple of times by resizing the window to an empty client size. The call stack looks pretty bogus, but maybe one of the addresses will be recognizable after a symbol lookup.

 

First-chance exception at 0x00455dfb in atari800.exe: 0xC0000094: Integer division by zero.

00455DF0  mov         dword ptr [ebp-8],eax 
00455DF3  mov         eax,dword ptr [ebp-8] 
00455DF6  mov         edx,0 
00455DFB  div         eax,dword ptr ds:[5150B8h]  <-- 1/0
00455E01  mov         dword ptr [ebp-0Ch],eax 
00455E04  mov         eax,dword ptr [ebp-4]

>	atari800.exe!00455dfb() 	
	[Frames below may be incorrect and/or missing, no symbols loaded for atari800.exe]	
	atari800.exe!00456abf() 	
	kernel32.dll!_WaitForSingleObjectExImplementation@12()  + 0x43 bytes	
	atari800.exe!0042d1bf() 	
	atari800.exe!0042ae7b() 	
	atari800.exe!0042b175() 	
	atari800.exe!0042b1e8() 	
	atari800.exe!004300e9() 	
	SDL.dll!68149f16() 	
	KernelBase.dll!_SleepEx@8()  + 0x91 bytes	
	atari800.exe!00435d9e() 	
	atari800.exe!004366e4() 	
	msvcrt.dll!__strnicoll_l()  + 0x5f bytes	
	atari800.exe!00458f55() 	
	atari800.exe!00435ef3() 	
	msvcrt.dll!_getenv()  + 0x49 bytes	
	msvcrt.dll!__VEC_memzero()  + 0x3a bytes	
	atari800.exe!00435ef3() 	
	atari800.exe!0043604d() 	
	atari800.exe!004361c1() 	
	atari800.exe!00436d34() 	
	atari800.exe!0042b92c() 	
	atari800.exe!0043ac2b() 	
	atari800.exe!00436d34() 	
	atari800.exe!0043ba3e() 	
	atari800.exe!0043c526() 	
	atari800.exe!0040c5d3() 	
	atari800.exe!0042d157() 	
	msvcrt.dll!__onexit()  + 0x35 bytes	
	msvcrt.dll!_atexit()  + 0xd bytes	
	atari800.exe!004010b6() 	
	atari800.exe!004010b6() 	
	msvcrt.dll!_RtlpImageNtHeader@4()  + 0x54 bytes	
	kernel32.dll!@BaseThreadInitThunk@12()  + 0x12 bytes	
	ntdll.dll!___RtlUserThreadStart@8()  + 0x27 bytes	
	ntdll.dll!__RtlUserThreadStart@8()  + 0x1b bytes	

Link to comment
Share on other sites

I've prepared a test version of the executable, it's intended to fix some of the OpenGL-related errors. Anyone willing to test, please use this executable instead.

 

This version has a bug such that after switching from software mode to hardware acceleration causes the emulator to stop responding to keys from the range of 0-9, a-z - please don't bother reporting this issue ;)

Edited by Kr0tki
Link to comment
Share on other sites

Excellent release! Thank you.

 

I also encountered the emulator exit when changing to the hardware acceleration. But, I was able to work around this issue (on my Windows 7 setup) by making the H/W accel change, save settings, exit, and then relaunch the program.

 

I tried both the SDL and the Windows DX versions. I like the DX version better since it has more of a "Windows" feel with the File Menu.

 

I haven't seen these issue mentioned yet for the DX version:

 

1) "F12" (Turbo mode) does not seem to work.

2) "File>Save Configuration" does not seem to work. I'm saving right now by going through the "Emulator Configuration>Save configuration file".

Link to comment
Share on other sites

Maybe I missed this. Is there a way to save the configuration and options on exit?

Seems I have to specify my .atr and keyboard configuration every use, or make controller default arrow keys and rt. cntrl fire.

Seems like it would be good if it saved the configuration on exit.

A lot of work, I'm amazed at emulators.

Link to comment
Share on other sites

I've prepared a test version of the executable, it's intended to fix some of the OpenGL-related errors. Anyone willing to test, please use this executable instead.

 

This version has a bug such that after switching from software mode to hardware acceleration causes the emulator to stop responding to keys from the range of 0-9, a-z - please don't bother reporting this issue ;)

 

I have not been able to replicate either crash, but I am still seeing two other bugs (that were also in the original version):

  • Repeated resizing of the window can cause it to jump to a tiny size. I can reproduce this reliably if I grab the corner of the window and keep shortening the height of the window by tiny amounts.
  • Occasionally I've been able to get the window into a half-broken state where it doesn't respond to mouse input, even on the non-client area, until I deselect and reselect the window.

 

The centering behavior when the window is maximized is improved, but changing the fit width/height/both settings on the fly decenters the image until the window is resized again.

Link to comment
Share on other sites

Thanks phaeron, atx4us.

 

Maybe I missed this. Is there a way to save the configuration and options on exit?

Not yet. Configuration can only be saved manually, see the Emulator Configuration menu.

 

Repeated resizing of the window can cause it to jump to a tiny size. I can reproduce this reliably if I grab the corner of the window and keep shortening the height of the window by tiny amounts.

I cannot reproduce this. Please save the emulator's standard output to a file, by running

 

atari800.exe > log_file

 

and show me the resulting log_file. Also, please post the state of all options in the "Video mode settings" menu from the moment you encountered the bug.

 

Occasionally I've been able to get the window into a half-broken state where it doesn't respond to mouse input, even on the non-client area, until I deselect and reselect the window.

I'm encountering this bug only when I'm pressing Alt+Tab or Alt+F during mouse-resizing of the window. This is a bug in the SDL library and I doubt I will be able to fix it. Are there other ways to reproduce this bug?

 

The centering behavior when the window is maximized is improved, but changing the fit width/height/both settings on the fly decenters the image until the window is resized again.

Can't reproduce that; again I'm asking for a log file and dump of Video mode settings.

Link to comment
Share on other sites

Any chance that a800win plus can now be updated (since that program is largely based on the emulator this thread is about)

 

Since atari++ and altirra has sort of largely superceded a800win plus

 

Great idea! This would be awesome to see since I'm still using the A8WP emu the most often despite the fact that it's now quite outdated. Is there even anyone maintaining A8WP right now?

Link to comment
Share on other sites

I fixed the debian directory in the source to allow an SDL package to correctly build on recent Debian derivatives (eg Ubuntu). The curses and X11 versions are not built. The attachment replaces the changelog and rules file in the debian directory. Move the attachment into your unpacked atari800-2.2.0 source directory and do:

 

$unzip debian.zip

 

$ sudo aptitude install libx11-dev, libxext-dev libxt-dev x11proto-core-dev libsdl1.2-dev libncurses-dev zlib1g-dev libreadline5-dev

 

Be sure you are the atari800-2.2.0 directory (that is if you ls you should see the debian directory) and do

 

$ fakeroot dpkg-buildpackage -b

 

I also included 32 and 64-bit builds that I built against an Ubuntu Maverick system. YMMV on other Debian derivatives.

debian.zip

atari800_2.2.0-1_amd64.deb.zip

atari800_2.2.0-1_i386.deb.zip

Link to comment
Share on other sites

Any chance that a800win plus can now be updated (since that program is largely based on the emulator this thread is about)

... Is there even anyone maintaining A8WP right now?

 

From what I recall, the A800WinPLus uses atari800 1.3.6 core and, due to atari800 having quite a major reworking when producing version 2.x, the actual task of wrapping the A800WinPLus interface around it would not be such a straight forward task as one might think. I do feel like taking a summary look at what would be involved, however I'd highly recommend using Altirra.

 

Regards,

Mark

Link to comment
Share on other sites

Repeated resizing of the window can cause it to jump to a tiny size. I can reproduce this reliably if I grab the corner of the window and keep shortening the height of the window by tiny amounts.

I cannot reproduce this. Please save the emulator's standard output to a file, by running

 

atari800.exe > log_file

 

and show me the resulting log_file. Also, please post the state of all options in the "Video mode settings" menu from the moment you encountered the bug.

 

All of my tests below are done with a clean start (no .cfg file) and with -windowed, so the settings are like this:

 

Host display aspect ratio: 16:9

Hardware acceleration: no

Bilinear filtering: no

Use pixel buffer objects: yes

Fullscreen: no

Fullscreen res: 640x480

Bits per pixel: 32

Avoid tearing: no

Image aspect ratio: square pixels

Scale image: fit screen - integral

Fit screen method: fit both

Horizontal view area: like on TV

Vertical view area: like on TV

Horizontal shift: 0

Vertical shift: 0

Scanlines visibility: 5

Interpolate scanlines: Yes

 

Console output, reproducing the tiny window bug:

 

User config file '.atari800.cfg' not found.
Trying system wide config file: /etc/atari800.cfg
No configuration file found, will create fresh one from scratch:
Writing config file: .atari800.cfg
OpenGL initialised successfully.
joystick 0 not found
joystick 1 not found
Requested resolution 336x240 is not available, using 640x480 instead.
Video Mode: 336x240x32 windowed without vsync
Video Mode: 336x239x32 windowed without vsync
Video Mode: 336x238x32 windowed without vsync
Video Mode: 337x232x32 windowed without vsync
Video Mode: 337x231x32 windowed without vsync
Video Mode: 337x230x32 windowed without vsync
Video Mode: 342x222x32 windowed without vsync
Video Mode: 343x220x32 windowed without vsync
Video Mode: 343x218x32 windowed without vsync
Video Mode: 343x217x32 windowed without vsync
Video Mode: 343x213x32 windowed without vsync

 

Occasionally I've been able to get the window into a half-broken state where it doesn't respond to mouse input, even on the non-client area, until I deselect and reselect the window.

 

I'm encountering this bug only when I'm pressing Alt+Tab or Alt+F during mouse-resizing of the window. This is a bug in the SDL library and I doubt I will be able to fix it. Are there other ways to reproduce this bug?

 

I've gotten it to happen just by dragging the window caption. Doesn't always happen, but when it starts happening, it's consistent. It looks almost like something has improperly captured the mouse (SetCapture).

 

A repro that seems to work pretty reliably is to hit Ctrl+C in the console window to break into the debugger, and then resume with "cont." Most of the time, the bug will start reproducing.

 

Ctrl+C afterward and typing "quit" from the debugger seems to cause a crash on exit, btw, which may be a clue....

 

The centering behavior when the window is maximized is improved, but changing the fit width/height/both settings on the fly decenters the image until the window is resized again.

Can't reproduce that; again I'm asking for a log file and dump of Video mode settings.

 

Same video settings as usual, but change the mode to "fit height" with the window maximized. Note that my desktop resolution is 1920x1080.

 

User config file '.atari800.cfg' not found.
Trying system wide config file: /etc/atari800.cfg
No configuration file found, will create fresh one from scratch:
Writing config file: .atari800.cfg
OpenGL initialised successfully.
joystick 0 not found
joystick 1 not found
Requested resolution 336x240 is not available, using 640x480 instead.
Video Mode: 336x240x32 windowed without vsync
Video Mode: 1803x1061x32 windowed without vsync
Video Mode: 1680x1080x32 windowed without vsync
Video Mode: 1344x960x32 windowed without vsync
Video Mode: 1344x960x32 windowed without vsync

Link to comment
Share on other sites

I fixed the debian directory in the source to allow an SDL package to correctly build on recent Debian derivatives (eg Ubuntu). The curses and X11 versions are not built. The attachment replaces the changelog and rules file in the debian directory. Move the attachment into your unpacked atari800-2.2.0 source directory and do:

 

$unzip debian.zip

 

$ sudo aptitude install libx11-dev, libxext-dev libxt-dev x11proto-core-dev libsdl1.2-dev libncurses-dev zlib1g-dev libreadline5-dev

 

Be sure you are the atari800-2.2.0 directory (that is if you ls you should see the debian directory) and do

 

$ fakeroot dpkg-buildpackage -b

 

I also included 32 and 64-bit builds that I built against an Ubuntu Maverick system. YMMV on other Debian derivatives.

 

Thank you :)

Link to comment
Share on other sites

Any chance that a800win plus can now be updated (since that program is largely based on the emulator this thread is about)

... Is there even anyone maintaining A8WP right now?

 

From what I recall, the A800WinPLus uses atari800 1.3.6 core and, due to atari800 having quite a major reworking when producing version 2.x, the actual task of wrapping the A800WinPLus interface around it would not be such a straight forward task as one might think. I do feel like taking a summary look at what would be involved, however I'd highly recommend using Altirra.

 

Regards,

Mark

 

I like Altirra, too! But, it does not support paths (subdirectories) like A8WP which is the way I like to organize my files in folders. This has been mentioned before in the Altirra 1.7 Release forum (http://www.atariage.com/forums/topic/168813-altirra-17-released/page__st__25) by me and flashjazzcat.

 

Also, the last time I tried Altirra 1.8 with my CTetris4G-R1 program, the CTetris4 program would crash after a high score save. The crash does not happen on real hardware and on other Atari emus.

 

I hope that the Altirra author will address the above mentioned issues in his future releases.

 

I'm definitely interested in seeing your summary about updating A8WP to the latest A800 core.

 

Thanks,

Hayden

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