Jump to content

Photo

Handy emulator - the latest version and source code


9 replies to this topic

#1 Cyprian_K OFFLINE  

Cyprian_K

    Chopper Commander

  • 116 posts

Posted Tue Apr 9, 2019 8:07 AM

Do you have any suggestion where I can find the latest Handy emulator and its source code?

 

I daily use 0.98beta (build Apr 18, 2016) with Debugger. Unfortunately it's homepage http://lynxdev.atari.org/handy shows me error 404

 

I see also following projects:

 

https://github.com/mozzwald/handy-sdl- some updates two years ago;

 

https://github.com/l.../libretro-handy- some updates 11 moths ago

 

https://github.com/b...andy-sdl-master- some updates 11 moths ago

https://github.com/b...rc-0.95-patched- some updates 11 moths ago

 

and the main one with 0.95 from 2007-02-21

https://sourceforge....dy/files/handy/


Edited by Cyprian_K, Tue Apr 9, 2019 11:18 AM.


#2 sage OFFLINE  

sage

    Dragonstomper

  • 994 posts
  • Location:Germany

Posted Tue Apr 9, 2019 9:24 AM

yeah, that link is inexistent :-) must be a typo



#3 Cyprian_K OFFLINE  

Cyprian_K

    Chopper Commander

  • Topic Starter
  • 116 posts

Posted Wed Apr 10, 2019 3:25 AM

ok,
Is your Handy sourcecode available somewhere?

#4 Nop90 OFFLINE  

Nop90

    Chopper Commander

  • 110 posts
  • Location:Italy

Posted Wed Apr 10, 2019 5:57 AM

For debugging I use the old version (usuallyI  don't need to have perfect sound or perfect rendering when tracing instructions for debugging).

 

Last version from Sage should be this https://github.com/bspruck/handy-fork that's one of the link you already found. It has sound problems, but working eeprom support (the only one around AFAIK) and some bug from the original version fixed. Probably you can compile this in Debug mode setting some flag in the makefile (or VS Project), but never tryed.

 

Libretro with Handy core is another good one (probably the best from the point of view of a gamer, maybe not for a developer, don't know much about the handy version used) but has a bug with eeprom handling. Opened an issue on github proposing a solution, but no one tryed to fix the problem so far. 



#5 Cyprian_K OFFLINE  

Cyprian_K

    Chopper Commander

  • Topic Starter
  • 116 posts

Posted Wed Apr 10, 2019 7:27 AM

thanks for clarification Nop90

#6 sage OFFLINE  

sage

    Dragonstomper

  • 994 posts
  • Location:Germany

Posted Wed Apr 10, 2019 6:15 PM

Libretro with Handy core is another good one (probably the best from the point of view of a gamer, maybe not for a developer, don't know much about the handy version used) but has a bug with eeprom handling. Opened an issue on github proposing a solution, but no one tryed to fix the problem so far. 

 

I though this was merged already w/o my intervention... let me check



#7 sage OFFLINE  

sage

    Dragonstomper

  • 994 posts
  • Location:Germany

Posted Wed Apr 10, 2019 6:17 PM

anyway, my branch and libretro are in sync from the feature point of view.



#8 Nop90 OFFLINE  

Nop90

    Chopper Commander

  • 110 posts
  • Location:Italy

Posted Wed Apr 10, 2019 10:57 PM

 

I though this was merged already w/o my intervention... let me check

 

I did not push a fix, because I can't build and test it now. Only opened an issue and suggested how to fix it



#9 Cyprian_K OFFLINE  

Cyprian_K

    Chopper Commander

  • Topic Starter
  • 116 posts

Posted Thu Apr 11, 2019 2:52 AM

I had an error in "eeprom.h" file. There were undefined "min", therefore I added from libretro:

 
#ifndef __min
#define __min(a,b) \
   ({ __typeof__ (a) _a = (a); \
       __typeof__ (b) _b = (b); \
     _a > _b ? _b : _a; })
#endif


#10 MichelS OFFLINE  

MichelS

    Combat Commando

  • 1 posts
  • Location:Germany

Posted Thu Apr 11, 2019 3:32 AM

Wow - perfect timing. I must chime in here.
 
After being away from Lynx emulation and development for about 10 years now, i just came back last week to check what has happened since.
My search for the latest handy-emulator and available patches/fixes just turned up with exactly what was mentioned in the first post - 0.98beta seems to be the last exe-build floating around.
 
The sources available from sage's github page (handy-win32src-0.95-patched) seem to be the most complete regarding updates and patches:
 
patches included in "handy-win32src-0.95-patched" (correct me if i'm wrong):
  • crashes at startup for cc65.org bugfix (patch available on handy's sourceforge page "patch.diff")
  • single point sprite bugfix (fixes Robotron intro, Joust lava, ...)
  • everon bugfix (fixes wuerfel.lnx)
  • stuttering sound fixed (doublebuffered)
  • eeprom support
 
available patches missing in "handy-win32src-0.95-patched"
  • zipped rom filenames containing more than 1 dot (patch available on handy's sourceforge page (system.cpp) - search/replace 2 occurences of strchr with strrchr)
  • Gates of Zendocon sound missing (laughing spider)
 
The missing sound in Gates of Zendocon was already fixed by GadgetUK. 
Unfortunately he never published code (or i couldn't find it at least) but only provided executables - see post #83++ http://atariage.com/...emulator/page-4
handy0.97   - Gates of Zendocon sound fixed but others broke
handy0.971 - seems to work fine
 
Maybe @GadgetUK can make the source public or dig his memory what the required code changes were (i know - it was 6 years ago...). Pretty PLEASE?
 
Also - the stuttering sound fix included in "handy-win32src-0.95-patched" only works partially for me.
Sound is playing nicely on startup. But disabling and re-enabling sound while a game/intro is playing (2x CRTL-S) is a "roll-a-dice" game.
Sometimes the sound is going completely berserk after enabling, sometimes it's fine.
It might be a problem with the read- and writecursors of the soundbuffer.
On sound start the buffer is flushed and the readcursor is set to 0 - doesn't the buffer need to be filled eventually?
I'm by far no expert in directsound but messed around with the code nevertheless. Without digging documentation and debugging i think i have a fix that works for me:
 
Just change the delay in timeSetEvent from 25 to 50 like this:
 
DirectSoundPlayer.cpp, line 159:
if ((m_TimerID = timeSetEvent(50, 0, TimerCallBack, (DWORD)this, TIME_PERIODIC)) == NULL) // 50 was 25
Disabling and re-enabling sound now always works on my systems. I guess the new delay gives the buffer some time to fill up...
 
Maybe if any of the well known atariage members would kindly ask @GadgetUK about the Gates of Zendocon fix (might be more successful than a query from a noob like me),
then hopefully one day all known patches/fixes can be incorporated into a single source repository.
 
Michael





0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users