Skip to main content

News

Topic: neoSphere 5.9.2 (Read 523063 times) previous topic - next topic

0 Members and 13 Guests are viewing this topic.
  • Fat Cerberus
  • [*][*][*][*][*]
  • Global Moderator
  • Sphere Developer
Re: minisphere 2.1.6
Reply #990
It's actually supposed to show the startup game, guess that's a packaging bug.  Thanks for testing!

As for Allegro 5.1, minisphere will actually compile against Allegro 5.0 now, at the cost of disabling some features--the ones I know are shaders, error copy-to-clipboard, and vertex buffers (improves Galileo performance).  But apparently debuild just sees that Allegro 5.1 is installed and declares that as the dependency.  I'll see if I can fix that before release.

By the way if you drop to command line, can you successfully execute cell and ssj?  Also check if you have man pages for minisphere, spherun, cell and ssj.
neoSphere 5.9.2 - neoSphere engine - Cell compiler - SSj debugger
forum thread | on GitHub

  • DaVince
  • [*][*][*][*][*]
  • Administrator
  • Used Sphere for, like, half my life
Re: minisphere 2.1.6
Reply #991
All of the commands and manpages seem to be present.

I also noticed that my dev copy of Sir Boingers likes to lock up and crash minisphere when navigating over the High Scores option. And also when in the pause menu for half a second or so. Not sure what's up with that; haven't tested if it only happens with the precompiled version or also when I compile it myself. In any case, I can't even navigate down enough to enable the sound and music...

Edit: this error when running from the command line:
Code: [Select]
fish: "minisphere ." terminated by signal SIGSEGV (Address boundary error)


Also, when trying to run the game with ssj, I get:
Code: [Select]
$ ssj .
SSJ 3.0a0 Sphere game debugger x64
A powerful JavaScript debugger for minisphere
(c) 2016 Fat Cerberus

Starting '/home/vincent/Dropbox/projects/sphere/boingers2.2/games/SirBoingers/'... OK.
Connecting to 127.0.0.1:1208... OK.
Handshaking... OK.
  Attached to minisphere 3.0a0
  Duktape v1.4.0
uncaught `TypeError: cannot read property 'origin' of undefined` at input:1
Unrecoverable error, target detached

^C⏎
  • Last Edit: February 09, 2016, 08:50:52 pm by DaVince

  • Fat Cerberus
  • [*][*][*][*][*]
  • Global Moderator
  • Sphere Developer
Re: minisphere 2.1.6
Reply #992
Alright, I'll look into that.  It's possible there's a regression in the latest builds.  Could you PM me a copy of the game?
neoSphere 5.9.2 - neoSphere engine - Cell compiler - SSj debugger
forum thread | on GitHub

  • DaVince
  • [*][*][*][*][*]
  • Administrator
  • Used Sphere for, like, half my life
Re: minisphere 2.1.6
Reply #993
Sure. I also edited my above post with the error messages.

  • Fat Cerberus
  • [*][*][*][*][*]
  • Global Moderator
  • Sphere Developer
Re: minisphere 2.1.6
Reply #994
That second one is a bug in SSJ, it's trying to load the source map which isn't present unless you compile with Cell using the -d switch.  It's supposed to gracefully degrade, but apparently something fouled up there. ;)
neoSphere 5.9.2 - neoSphere engine - Cell compiler - SSj debugger
forum thread | on GitHub

  • Fat Cerberus
  • [*][*][*][*][*]
  • Global Moderator
  • Sphere Developer
Re: minisphere 2.1.6
Reply #995
So I came up with a way to make Cell more useful.

In minisphere 2.1, compiling with cell -d will generate a debug map which maps the name of a script in the compiled package to its location in the source tree.  This aids the debugger (Sphere Studio for 2.1, SSJ for 3.0) in locating the original scripts, even if the Cellscript relocates them.

For Cell 3.0 I'm going to add a new option, --ssj2, which augments the debug info with the full original source code for all scripts.  Not only does this allow easy debugging of SPK packages even if the original source tree changes (or is moved), but it will also let you release betas compiled with --ssj2 that others can run through the debugger when errors occur to get meaningful info. :D
neoSphere 5.9.2 - neoSphere engine - Cell compiler - SSj debugger
forum thread | on GitHub

  • Fat Cerberus
  • [*][*][*][*][*]
  • Global Moderator
  • Sphere Developer
Re: minisphere 2.1.6
Reply #996
SSJ is starting to shape up.  I just implemented listing source code:
Code: [Select]

fatcerberus@pigcult-vm:~/src/spectacles-i$ ssj -p specs.spk
SSJ 2.99.812.1 Sphere debugger (x64)
A powerful JavaScript debugger for minisphere
(c) 2016 Fat Cerberus

spherun /home/fatcerberus/src/spectacles-i/specs.spk... OK.
connecting to 127.0.0.1:1208... OK.
verifying... OK.
: attached minisphere 2.99.812.1
: duktape v1.4.0
locating sources... OK.
: source tree /home/fatcerberus/src/spectacles-i/

>>   0: eval() at scripts/main.js:6
6: const DBG_DISABLE_TEXTBOXES = false;

eval() ssj$ l
      1 /***
      2  * Specs Engine v6: Spectacles Saga Game Engine
      3   *           Copyright (c) 2015 Power-Command
      4 ***/
      5
>>    6 const DBG_DISABLE_TEXTBOXES = false;
      7 const DBG_DISABLE_TRANSITIONS = false;
      8
      9 RequireSystemScript('mini/miniRT.js');
     10 RequireSystemScript('analogue.js');

eval() ssj$ so
>>   0: game() at scripts/main.js:30
30: mini.initialize();

game() ssj$ l
     25
     26 // game() function
     27 // This is called by Sphere when the game is launched.
     28 function game()
     29 {
>>   30 mini.initialize();
     31 analogue.init();
     32
     33 mini.Console.register('specs', global, {
     34 'exit': function() { Exit(); }

game() ssj$ q
SSJ session has been detached.
neoSphere 5.9.2 - neoSphere engine - Cell compiler - SSj debugger
forum thread | on GitHub

  • Fat Cerberus
  • [*][*][*][*][*]
  • Global Moderator
  • Sphere Developer
Re: minisphere 3.0b1 (stable: 2.1.6)
Reply #997
After almost 2 months of development, the first beta of minisphere 3.0 is available.  Make sure to test drive SSJ and let me know of any issues.  It still needs polishing, but should be functional enough to use for actual debugging. :P

I recommend uninstalling previous versions of minisphere before trying the beta as the engine executables were renamed, so the old files may cause conflicts/confusion.  Note also that Sphere Studio is no longer included in the download--that will have to be installed separately now for anyone that wants it.  The GDK plugin is included, though, and will be picked up by Sphere Studio 1.2.

If you choose to add minisphere to the PATH, the command to run a game on the command-line is:
spherun <gamepath>

If you omit the path, it will list available command-line options.

edit: By the way, minisphere is available on Ubuntu 14.04 now, through PPA:
Code: [Select]

sudo add-apt-repository ppa:fatcerberus/minisphere
sudo apt-get update
sudo apt-get install minisphere


This probably won't work on later versions of Ubuntu, e.g. 15.10 due to Ubuntu's braindead PPA packaging system (you can't upload multiple packages with the same version number, even if they are built for a different Ubuntu version).  So I'll be posting .deb packages sometime in the near future.

edit 2: Alright, the .deb packages are now available for direct download for those who can't get it through APT.
  • Last Edit: February 12, 2016, 11:11:50 am by Lord English
neoSphere 5.9.2 - neoSphere engine - Cell compiler - SSj debugger
forum thread | on GitHub

  • DaVince
  • [*][*][*][*][*]
  • Administrator
  • Used Sphere for, like, half my life
Re: minisphere 3.0b1 (stable: 2.1.6)
Reply #998
Quote
This probably won't work on later versions of Ubuntu, e.g. 15.10 due to Ubuntu's braindead PPA packaging system (you can't upload multiple packages with the same version number, even if they are built for a different Ubuntu version)

I suppose this is why they keep appending -1, -2, etc. to the end of the version number... You might want to do that for the 15.10 repo, since that's probably the other Ubuntu version a lot of people (including me :P ) will be running.

Will just get the deb file now.

  • Fat Cerberus
  • [*][*][*][*][*]
  • Global Moderator
  • Sphere Developer
Re: minisphere 3.0b1 (stable: 2.1.6)
Reply #999
Heads up, DaVince: I just realized why I originally made the switch to Allegro 5.1.  There are some pretty nasty bugs in 5.0, as I was just reminded by my cousin beta testing it.  Notably, sometimes playing sounds will completely lock up the engine, from which the only way out is to kill the process.  It's a hard deadlock due to a race condition in Allegro's streaming audio code, nothing minisphere can do to work around it. :(

If worse comes to worst I'll have to statically link Allegro for the final Linux release.  This will likely disqualify it from official Debian/Ubuntu packaging, but it'd just be a stopgap measure until a new stable Allegro release comes out.

I hope they release Allegro 5.2 soon... I'm not really up for trying to port the whole thing to SDL right now. :P  Although it might be an interesting experiment to do in my spare time, I'd like to try to get 3.0 out the door first. :P
neoSphere 5.9.2 - neoSphere engine - Cell compiler - SSj debugger
forum thread | on GitHub

  • DaVince
  • [*][*][*][*][*]
  • Administrator
  • Used Sphere for, like, half my life
Re: minisphere 3.0b1 (stable: 2.1.6)
Reply #1000
Yeah, I remember those bugs too. Thing is, the engine hasn't crashed where it would before, so I figured things have gotten at least a *little* better with Allegro 5.0 somehow. Still, I can imagine the earliest minisphere would be able to be included in any official repo is Ubuntu 16.04 or so. On Ubuntu and related distros, anyway.

  • Fat Cerberus
  • [*][*][*][*][*]
  • Global Moderator
  • Sphere Developer
Re: minisphere 3.0b1 (stable: 2.1.6)
Reply #1001
New SSJ feature coming in minisphere 3.0b2: the Examine command.  It's like Eval, but more verbose and shows Duktape runtime data, which can help in identifying objects:

Normal Eval:
Code: [Select]

scripts/main.js ssj$ e Image.prototype
= {
   prop "toString" = {...}
   prop "height" = { get }
   prop "width" = { get }
   prop "blit" = {...}
   prop "blitMask" = {...}
   prop "createSurface" = {...}
   prop "rotateBlit" = {...}
   prop "rotateBlitMask" = {...}
   prop "transformBlit" = {...}
   prop "transformBlitMask" = {...}
   prop "zoomBlit" = {...}
   prop "zoomBlitMask" = {...}
}


Examine:
Code: [Select]

scripts/main.js ssj$ x Image.prototype
= {
   meta "heapptr" = { heap:"0000019a70a80620h" }
   meta "heaphdr_flags" = 1342177408
   meta "heaphdr_type" = 2
   meta "refcount" = 2
   meta "reachable" = 0
   meta "temproot" = 0
   meta "finalizable" = 0
   meta "finalized" = 0
   meta "readonly" = 0
   meta "extensible" = 1
   meta "constructable" = 0
   meta "bound" = 0
   meta "compiledfunction" = 0
   meta "nativefunction" = 0
   meta "bufferobject" = 0
   meta "thread" = 0
   meta "array_part" = 0
   meta "strict" = 0
   meta "notail" = 0
   meta "newenv" = 0
   meta "namebinding" = 0
   meta "createargs" = 0
   meta "envrecclosed" = 0
   meta "exotic_array" = 0
   meta "exotic_stringobj" = 0
   meta "exotic_arguments" = 0
   meta "exotic_dukfunc" = 0
   meta "exotic_proxyobj" = 0
   meta "class_number" = 10
   meta "class_name" = "Object"
   meta "internal_prototype" = { obj:"0000019a6e86eba0h" }
   meta "props" = { ptr:"0000019a6e911750h" }
   meta "e_size" = 14
   meta "e_next" = 14
   meta "a_size" = 0
   meta "h_size" = 0
   prop "toString" = { obj:"0000019a70a67e30h" }
   prop "height" = { get: { obj:"0000019a70a68070h" }, set: null }
   prop "width" = { get: { obj:"0000019a70a67a70h" }, set: null }
   prop "blit" = { obj:"0000019a70a68430h" }
   prop "blitMask" = { obj:"0000019a70a68010h" }
   prop "createSurface" = { obj:"0000019a70a68af0h" }
   prop "rotateBlit" = { obj:"0000019a70a681f0h" }
   prop "rotateBlitMask" = { obj:"0000019a70a67ad0h" }
   prop "transformBlit" = { obj:"0000019a70a68610h" }
   prop "transformBlitMask" = { obj:"0000019a70a67e90h" }
   prop "zoomBlit" = { obj:"0000019a70a68850h" }
   prop "zoomBlitMask" = { obj:"0000019a70a67c50h" }
}
neoSphere 5.9.2 - neoSphere engine - Cell compiler - SSj debugger
forum thread | on GitHub

  • Fat Cerberus
  • [*][*][*][*][*]
  • Global Moderator
  • Sphere Developer
Re: minisphere 3.0b2 (stable: 2.1.6)
Reply #1002
minisphere 3.0b2 for Windows is up, with a vastly improved SSJ debugger. :D  I recommend testing it out on real Sphere games - by my guess, minisphere 3.0 Final is getting pretty close so testing would be much appreciated.

I'll post the tarball and deb downloads later.
neoSphere 5.9.2 - neoSphere engine - Cell compiler - SSj debugger
forum thread | on GitHub

  • Fat Cerberus
  • [*][*][*][*][*]
  • Global Moderator
  • Sphere Developer
Re: minisphere 3.0b2 (stable: 2.1.6)
Reply #1003
@DaVince The 64-bit deb package is up.  Could you do some quick testing?  SSJ has a full manpage now if you need a primer. ;)
neoSphere 5.9.2 - neoSphere engine - Cell compiler - SSj debugger
forum thread | on GitHub

  • DaVince
  • [*][*][*][*][*]
  • Administrator
  • Used Sphere for, like, half my life
Re: minisphere 3.0b2 (stable: 2.1.6)
Reply #1004
Both seems to be working great, for as far as I've tested them! (Only tested SSJ as far as Print/DebugPrint and backtracing a game that crashes on it (an old special Kefka's Revenge winter demo I have yet to upload anywhere).)

The crash happened in "undefined:0", but at least the backtrace ensured it was clear it was in the map engine and exactly what line in the scripts started that map engine with which map. That is really useful. Thanks a ton for making this! :)

Edit: should say, though, if this could somehow report which line/script in the map file is doing that, that would be cool, because... the map it errored out on has like fifty entities.
  • Last Edit: February 23, 2016, 12:29:47 am by DaVince