You are not logged in.
Pages: 1
Hello,
this crash occurs when I want to start the new version on Ubuntu 9.10:
GNU gdb (GDB) 7.0-ubuntu
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/share/games/opensonic/opensonic...Reading symbols from /usr/lib/debug/usr/share/games/opensonic/opensonic...done.
(no debugging symbols found)...done.
(gdb) r
Starting program: /usr/share/games/opensonic/opensonic
[Thread debugging using libthread_db enabled]
[New Thread 0x7ffff37bf910 (LWP 25570)]
[New Thread 0x7ffff2fbe910 (LWP 25571)]
[New Thread 0x7ffff1f82910 (LWP 25572)]
[New Thread 0x7fffeb9eb910 (LWP 25573)]
[Thread 0x7fffeb9eb910 (LWP 25573) exited]
[New Thread 0x7fffeb9eb910 (LWP 25574)]
[New Thread 0x7fffe6fe3910 (LWP 25575)]
[Thread 0x7fffeb9eb910 (LWP 25574) exited]
*** glibc detected *** /usr/share/games/opensonic/opensonic: double free or corruption (out): 0x0000000000fbd3f0 ***
======= Backtrace: =========
/lib/libc.so.6[0x7ffff6a97dd6]
/lib/libc.so.6(cfree+0x6c)[0x7ffff6a9c74c]
/usr/lib/liballeg.so.4.2(destroy_bitmap+0x87)[0x7ffff7aeab07]
/usr/share/games/opensonic/opensonic(video_render+0x1a7)[0x43fac7]
/usr/share/games/opensonic/opensonic(main+0x3aa)[0x42c10a]
/lib/libc.so.6(__libc_start_main+0xfd)[0x7ffff6a40abd]
/usr/share/games/opensonic/opensonic[0x40acd9]
======= Memory map: ========
00400000-0045c000 r-xp 00000000 08:02 234591 /usr/share/games/opensonic/opensonic
0065b000-0065c000 r--p 0005b000 08:02 234591 /usr/share/games/opensonic/opensonic
0065c000-0065e000 rw-p 0005c000 08:02 234591 /usr/share/games/opensonic/opensonic
0065e000-0110a000 rw-p 00000000 00:00 0 [heap]
7fffe0000000-7fffe0021000 rw-p 00000000 00:00 0
7fffe0021000-7fffe4000000 ---p 00000000 00:00 0
7fffe67e3000-7fffe67e4000 ---p 00000000 00:00 0
7fffe67e4000-7fffe6fe4000 rwxp 00000000 00:00 0
7fffe6fe4000-7fffeafe5000 rw-s 00000000 00:11 1164932 /dev/shm/pulse-shm-2244601164
7fffeafe5000-7fffeafea000 r-xp 00000000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7fffeafea000-7fffeb1e9000 ---p 00005000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7fffeb1e9000-7fffeb1ea000 r--p 00004000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7fffeb1ea000-7fffeb1eb000 rw-p 00005000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7fffeb1eb000-7fffeb1ec000 ---p 00000000 00:00 0
7fffeb1ec000-7fffeb9ec000 rwxp 00000000 00:00 0
7fffef5ff000-7fffef615000 r-xp 00000000 08:02 13380 /lib/libgcc_s.so.1
7fffef615000-7fffef814000 ---p 00016000 08:02 13380 /lib/libgcc_s.so.1
7fffef814000-7fffef815000 r--p 00015000 08:02 13380 /lib/libgcc_s.so.1
7fffef815000-7fffef816000 rw-p 00016000 08:02 13380 /lib/libgcc_s.so.1
7fffef816000-7fffef9a9000 rw-p 00000000 00:00 0
7fffef9aa000-7fffef9ed000 rw-p 00000000 00:00 0
7fffef9ed000-7fffef9f2000 r-xp 00000000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7fffef9f2000-7fffefbf2000 ---p 00005000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7fffefbf2000-7fffefbf3000 r--p 00005000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7fffefbf3000-7fffefbf4000 rw-p 00006000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7fffefbf4000-7fffefc0e000 r-xp 00000000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7fffefc0e000-7fffefe0d000 ---p 0001a000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7fffefe0d000-7fffefe0e000 r--p 00019000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7fffefe0e000-7fffeffce000 rw-p 0001a000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7fffeffce000-7ffff0017000 r-xp 00000000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7ffff0017000-7ffff0217000 ---p 00049000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7ffff0217000-7ffff0218000 r--p 00049000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7ffff0218000-7ffff0219000 rw-p 0004a000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7ffff0219000-7ffff021c000 r-xp 00000000 08:02 3504 /lib/libuuid.so.1.3.0
7ffff021c000-7ffff041c000 ---p 00003000 08:02 3504 /lib/libuuid.so.1.3.0
7ffff041c000-7ffff041d000 r--p 00003000 08:02 3504 /lib/libuuid.so.1.3.0
7ffff041d000-7ffff041e000 rw-p 00004000 08:02 3504 /lib/libuuid.so.1.3.0
7ffff041e000-7ffff045b000 r-xp 00000000 08:02 322 /lib/libdbus-1.so.3.4.0
7ffff045b000-7ffff065b000 ---p 0003d000 08:02 322 /lib/libdbus-1.so.3.4.0
7ffff065b000-7ffff065c000 r--p 0003d000 08:02 322 /lib/libdbus-1.so.3.4.0
7ffff065c000-7ffff065d000 rw-p 0003e000 08:02 322 /lib/libdbus-1.so.3.4.0
7ffff065d000-7ffff06b9000 r-xp 00000000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7ffff06b9000-7ffff08b8000 ---p 0005c000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7ffff08b8000-7ffff08ba000 r--p 0005b000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7ffff08ba000-7ffff08bb000 rw-p 0005d000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7ffff08bb000-7ffff08bf000 rw-p 00000000 00:00 0
7ffff08bf000-7ffff08c8000 r-xp 00000000 08:02 43598 /lib/libwrap.so.0.7.6
7ffff08c8000-7ffff0ac7000 ---p 00009000 08:02 43598 /lib/libwrap.so.0.7.6
7ffff0ac7000-7ffff0ac8000 r--p 00008000 08:02 43598 /lib/libwrap.so.0.7.6
7ffff0ac8000-7ffff0ac9000 rw-p 00009000 08:02 43598 /lib/libwrap.so.0.7.6
7ffff0ac9000-7ffff0aca000 rw-p 00000000 00:00 0
7ffff0aca000-7ffff0acf000 r-xp 00000000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7ffff0acf000-7ffff0ccf000 ---p 00005000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7ffff0ccf000-7ffff0cd0000 r--p 00005000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7ffff0cd0000-7ffff0cd1000 rw-p 00006000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7ffff0cd1000-7ffff0cd9000 r-xp 00000000 08:02 35530 /usr/lib/libSM.so.6.0.0
7ffff0cd9000-7ffff0ed8000 ---p 00008000 08:02 35530 /usr/lib/libSM.so.6.0.0
7ffff0ed8000-7ffff0ed9000 r--p 00007000 08:02 35530 /usr/lib/libSM.so.6.0.0
7ffff0ed9000-7ffff0eda000 rw-p 00008000 08:02 35530 /usr/lib/libSM.so.6.0.0
7ffff0eda000-7ffff0ef1000 r-xp 00000000 08:02 35516 /usr/lib/libICE.so.6.3.0
7ffff0ef1000-7ffff10f0000 ---p 00017000 08:02 35516 /usr/lib/libICE.so.6.3.0
7ffff10f0000-7ffff10f1000 r--p 00016000 08:02 35516 /usr/lib/libICE.so.6.3.0
7ffff10f1000-7ffff10f2000 rw-p 00017000 08:02 35516 /usr/lib/libICE.so.6.3.0
7ffff10f2000-7ffff10f5000 rw-p 00000000 00:00 0
7ffff10f5000-7ffff113f000 r-xp 00000000 08:02 29281 /usr/lib/libpulsecommon-0.9.19.so
Program received signal SIGABRT, Aborted.
0x00007ffff6a554b5 in raise () from /lib/libc.so.6
(gdb) bt
#0 0x00007ffff6a554b5 in raise () from /lib/libc.so.6
#1 0x00007ffff6a58f50 in abort () from /lib/libc.so.6
#2 0x00007ffff6a8dc97 in ?? () from /lib/libc.so.6
#3 0x00007ffff6a97dd6 in ?? () from /lib/libc.so.6
#4 0x00007ffff6a9c74c in free () from /lib/libc.so.6
#5 0x00007ffff7aeab07 in destroy_bitmap () from /usr/lib/liballeg.so.4.2
#6 0x000000000043fac7 in video_render ()
at /home/korn/opensonic/opensonic-0.1.3/src/video.c:420
#7 0x000000000042c10a in main (argc=1, argv=0x7fffffffe308)
at /home/korn/opensonic/opensonic-0.1.3/src/main.c:154
Offline
After I applied this patch the error has changed:
Index: opensonic-0.1.3/src/video.c
===================================================================
--- opensonic-0.1.3.orig/src/video.c 2010-02-26 23:05:02.442283836 +0100
+++ opensonic-0.1.3/src/video.c 2010-02-26 23:07:06.682805892 +0100
@@ -398,7 +398,7 @@
fast2x_blit(video_get_backbuffer()->data, tmp);
blit(tmp, screen, 0, 0, 0, 0, VIDEO_SCREEN_W*2, VIDEO_SCREEN_H*2);
- destroy_bitmap(tmp);
+// destroy_bitmap(tmp);
break;
}
@@ -417,7 +417,7 @@
stretch_blit(video_get_backbuffer()->data, tmp, 0, 0, VIDEO_SCREEN_W, VIDEO_SCREEN_H, 0, 0, tmp->w, tmp->h);
blit(tmp, screen, 0, 0, 0, 0, tmp->w, tmp->h);
- destroy_bitmap(tmp);
+// destroy_bitmap(tmp);
break;
}
GNU gdb (GDB) 7.0-ubuntu
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/share/games/opensonic/opensonic...Reading symbols from /usr/lib/debug/usr/share/games/opensonic/opensonic...done.
(no debugging symbols found)...done.
(gdb) r
Starting program: /usr/share/games/opensonic/opensonic
[Thread debugging using libthread_db enabled]
[New Thread 0x7ffff37bf910 (LWP 12997)]
[New Thread 0x7ffff2fbe910 (LWP 12998)]
[New Thread 0x7ffff1f82910 (LWP 12999)]
[New Thread 0x7fffeb9eb910 (LWP 13000)]
[Thread 0x7fffeb9eb910 (LWP 13000) exited]
[New Thread 0x7fffeb9eb910 (LWP 13001)]
[New Thread 0x7fffe6fe3910 (LWP 13002)]
[Thread 0x7fffeb9eb910 (LWP 13001) exited]
opensonic: malloc.c:3074: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Program received signal SIGABRT, Aborted.
0x00007ffff6a554b5 in raise () from /lib/libc.so.6
(gdb) bt
#0 0x00007ffff6a554b5 in raise () from /lib/libc.so.6
#1 0x00007ffff6a58f50 in abort () from /lib/libc.so.6
#2 0x00007ffff6a4e481 in __assert_fail () from /lib/libc.so.6
#3 0x00007ffff6a9b3a1 in ?? () from /lib/libc.so.6
#4 0x00007ffff6a9c82e in malloc () from /lib/libc.so.6
#5 0x00007ffff7aeacc8 in create_bitmap_ex () from /usr/lib/liballeg.so.4.2
#6 0x000000000043fbca in video_render ()
at /home/korn/opensonic/opensonic-0.1.3/src/video.c:393
#7 0x000000000042c10a in main (argc=1, argv=0x7fffffffe308)
at /home/korn/opensonic/opensonic-0.1.3/src/main.c:154
Offline
Welcome to the forums
Do not apply that patch. Restore the original video.c file.
Please send us your logfile.txt file (either in the same folder of the game, or in $HOME/.opensonic). Can you explain what were you doing before the game crashed?
Offline
Thanks for the welcome
I reverted that patch again.
This is the logfile:
http://pastebin.com/KxL9vaL4
I just start the game and it immediately crashes leaving this output in the terminal:
http://pastebin.com/8GQLkxGb
Offline
(delete $HOME/.opensonic/preferences.dat if applicable)
Compile your game and type make install as root.
Open a terminal and run
opensonic --tiny
You can also try
opensonic --tiny --fullscreen
Please tell us if it works. If it does, try changing the screen resolution at the options menu.
Offline
Starting the game with --tiny (also with --tiny --fullscreen) starts up the game fine.
The crash occurs again if I try to change the resolution in the Options menu to Normal.
I am trying to create a Debian package of the new version for the Ubuntu gaming page PlayDeb.net (http://www.playdeb.net/software/Open%20Sonic).
You are invited to join us on IRC (channel #getdeb on freenode) so we can work this out.
Offline
oh, are you the person who created the 0.1.2 package at PlayDeb?
Apply this patch. Send me the logfile after you compile it.
(you may download the updated video.c file in the svn repository as well)
After compiling it, go to the options screen and change the screen resolution. Tell me what you see. You may run opensonic --tiny initially.
--- video.orig.c 2010-02-25 05:00:17.000000000 -0300
+++ video.c 2010-02-28 15:59:15.000000000 -0300
@@ -40,12 +40,13 @@
static int video_resolution;
static int video_fullscreen;
static int video_showfps;
-static void fast2x_blit(BITMAP *src, BITMAP *dest);
-static void filter_blit(BITMAP *src, BITMAP *dest, int filter);
+static void fast2x_blit(image_t *src, image_t *dest);
+static void filter_blit(image_t *src, image_t *dest, int filter);
static void window_switch_in();
static void window_switch_out();
static int window_active = TRUE;
static void losangle(image_t *img, int x, int y, int r, int col);
+static void draw_to_screen(image_t *img);
/* Fade-in & fade-out */
#define FADEFX_NONE 0
@@ -383,48 +384,51 @@
/* tiny window */
case VIDEORESOLUTION_1X:
{
- blit(video_get_backbuffer()->data, screen, 0, 0, 0, 0, VIDEO_SCREEN_W, VIDEO_SCREEN_H);
+ draw_to_screen(video_get_backbuffer());
break;
}
/* double size */
case VIDEORESOLUTION_2X:
{
- BITMAP *tmp = create_bitmap((int)(video_get_window_size().x), (int)(video_get_window_size().y));
+ image_t *tmp = image_create((int)(video_get_window_size().x), (int)(video_get_window_size().y));
if(video_is_smooth())
- filter_blit(video_get_backbuffer()->data, tmp, FILTER_2XSAI);
+ filter_blit(video_get_backbuffer(), tmp, FILTER_2XSAI);
else
- fast2x_blit(video_get_backbuffer()->data, tmp);
+ fast2x_blit(video_get_backbuffer(), tmp);
- blit(tmp, screen, 0, 0, 0, 0, VIDEO_SCREEN_W*2, VIDEO_SCREEN_H*2);
- destroy_bitmap(tmp);
+ draw_to_screen(tmp);
+ image_destroy(tmp);
break;
}
/* maximum size */
case VIDEORESOLUTION_MAX:
{
- BITMAP *tmp = create_bitmap((int)(video_get_window_size().x), (int)(video_get_window_size().y));
+ image_t *tmp = image_create((int)(video_get_window_size().x), (int)(video_get_window_size().y));
if(video_is_smooth() && tmp->w >= 2*VIDEO_SCREEN_W && tmp->h >= 2*VIDEO_SCREEN_H) {
- BITMAP *half = create_bitmap(tmp->w/2, tmp->h/2);
- stretch_blit(video_get_backbuffer()->data, half, 0, 0, VIDEO_SCREEN_W, VIDEO_SCREEN_H, 0, 0, half->w, half->h);
+ image_t *half = image_create(tmp->w/2, tmp->h/2);
+ v2d_t scale = v2d_new((double)half->w / (double)video_get_backbuffer()->w, (double)half->h / (double)video_get_backbuffer()->h);
+ image_draw_scaled(video_get_backbuffer(), half, 0, 0, scale, IF_NONE);
filter_blit(half, tmp, FILTER_2XSAI);
- destroy_bitmap(half);
+ image_destroy(half);
+ }
+ else {
+ v2d_t scale = v2d_new((double)tmp->w / (double)video_get_backbuffer()->w, (double)tmp->h / (double)video_get_backbuffer()->h);
+ image_draw_scaled(video_get_backbuffer(), tmp, 0, 0, scale, IF_NONE);
}
- else
- stretch_blit(video_get_backbuffer()->data, tmp, 0, 0, VIDEO_SCREEN_W, VIDEO_SCREEN_H, 0, 0, tmp->w, tmp->h);
- blit(tmp, screen, 0, 0, 0, 0, tmp->w, tmp->h);
- destroy_bitmap(tmp);
+ draw_to_screen(tmp);
+ image_destroy(tmp);
break;
}
/* editor */
case VIDEORESOLUTION_EDT:
{
- blit(video_get_backbuffer()->data, screen, 0, 0, 0, 0, VIDEO_SCREEN_W, VIDEO_SCREEN_H);
+ draw_to_screen(video_get_backbuffer());
break;
}
}
@@ -611,7 +615,11 @@
img->data = create_bitmap(width, height);
img->w = width;
img->h = height;
- image_clear(img, image_rgb(0,0,0));
+
+ if(img->data != NULL)
+ image_clear(img, image_rgb(0,0,0));
+ else
+ logfile_message("ERROR - image_create(%d,%d): couldn't create bitmap", width, height);
return img;
}
@@ -623,7 +631,9 @@
*/
void image_destroy(image_t *img)
{
- destroy_bitmap(img->data);
+ if(img->data != NULL)
+ destroy_bitmap(img->data);
+
free(img);
}
@@ -793,24 +803,27 @@
* ---- dest->w = 2 * src->w
* ---- dest->h = 2 * src->h
*/
-void filter_blit(BITMAP *src, BITMAP *dest, int filter)
+void filter_blit(image_t *src, image_t *dest, int filter)
{
int i, j, k=2;
+ if(src->data == NULL || dest->data == NULL)
+ return;
+
switch(filter) {
case FILTER_2XSAI:
- Super2xSaI(src, dest, 0, 0, 0, 0, src->w, src->h);
+ Super2xSaI(src->data, dest->data, 0, 0, 0, 0, src->w, src->h);
for(i=0; i<dest->h; i++) { /* image fix */
for(j=0; j<k; j++)
- putpixel(dest, j, i, getpixel(dest, k, i));
+ putpixel(dest->data, j, i, getpixel(dest->data, k, i));
}
break;
case FILTER_SUPEREAGLE:
- SuperEagle(src, dest, 0, 0, 0, 0, src->w, src->h);
+ SuperEagle(src->data, dest->data, 0, 0, 0, 0, src->w, src->h);
for(i=0; i<dest->h; i++) { /* image fix */
for(j=0; j<k; j++)
- putpixel(dest, dest->w-1-j, i, getpixel(dest, dest->w-1-k, i));
+ putpixel(dest->data, dest->w-1-j, i, getpixel(dest->data, dest->w-1-k, i));
}
break;
}
@@ -823,35 +836,38 @@
* dest is a previously created memory bitmap
* dest->w == 2 * src->w
* dest->h == 2 * src->h */
-void fast2x_blit(BITMAP *src, BITMAP *dest)
+void fast2x_blit(image_t *src, image_t *dest)
{
int i, j;
+ if(src->data == NULL || dest->data == NULL)
+ return;
+
switch(video_get_color_depth())
{
case 8:
for(j=0; j<dest->h; j++) {
for(i=0; i<dest->w; i++)
- ((uint8*)dest->line[j])[i] = ((uint8*)src->line[j/2])[i/2];
+ ((uint8*)dest->data->line[j])[i] = ((uint8*)src->data->line[j/2])[i/2];
}
break;
case 16:
for(j=0; j<dest->h; j++) {
for(i=0; i<dest->w; i++)
- ((uint16*)dest->line[j])[i] = ((uint16*)src->line[j/2])[i/2];
+ ((uint16*)dest->data->line[j])[i] = ((uint16*)src->data->line[j/2])[i/2];
}
break;
case 24:
/* TODO */
- stretch_blit(src, dest, 0, 0, src->w, src->h, 0, 0, dest->w, dest->h);
+ stretch_blit(src->data, dest->data, 0, 0, src->w, src->h, 0, 0, dest->w, dest->h);
break;
case 32:
for(j=0; j<dest->h; j++) {
for(i=0; i<dest->w; i++)
- ((uint32*)dest->line[j])[i] = ((uint32*)src->line[j/2])[i/2];
+ ((uint32*)dest->data->line[j])[i] = ((uint32*)src->data->line[j/2])[i/2];
}
break;
@@ -860,6 +876,19 @@
}
}
+
+/* draws img to the screen */
+void draw_to_screen(image_t *img)
+{
+ if(img->data == NULL) {
+ logfile_message("Can't use video resolution %d", video_get_resolution());
+ video_showmessage("Can't use video resolution %d", video_get_resolution());
+ video_changemode(VIDEORESOLUTION_1X, video_is_smooth(), video_is_fullscreen());
+ }
+ else
+ blit(img->data, screen, 0, 0, 0, 0, img->w, img->h);
+}
+
/* this window is active */
void window_switch_in()
{
Offline
Hello,
yes I am the one who packaged opensonic for PlayDeb (which is down currently unfortunately).
Your patch did not fix the crash:
GNU gdb (GDB) 7.0-ubuntu
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/share/games/opensonic/opensonic...Reading symbols from /usr/lib/debug/usr/share/games/opensonic/opensonic...done.
(no debugging symbols found)...done.
(gdb) r
Starting program: /usr/share/games/opensonic/opensonic
[Thread debugging using libthread_db enabled]
[New Thread 0x7ffff37bf910 (LWP 27496)]
[New Thread 0x7ffff2fbe910 (LWP 27497)]
[New Thread 0x7ffff1f82910 (LWP 27498)]
[New Thread 0x7fffeb9eb910 (LWP 27499)]
[Thread 0x7fffeb9eb910 (LWP 27499) exited]
[New Thread 0x7fffeb9eb910 (LWP 27500)]
[New Thread 0x7fffe6fe3910 (LWP 27502)]
[Thread 0x7fffeb9eb910 (LWP 27500) exited]
*** glibc detected *** /usr/share/games/opensonic/opensonic: double free or corruption (out): 0x0000000001161320 ***
======= Backtrace: =========
/lib/libc.so.6[0x7ffff6a97dd6]
/lib/libc.so.6(cfree+0x6c)[0x7ffff6a9c74c]
/usr/lib/liballeg.so.4.2(destroy_bitmap+0x87)[0x7ffff7aeab07]
/usr/share/games/opensonic/opensonic(image_destroy+0x11)[0x43ed81]
/usr/share/games/opensonic/opensonic(video_render+0x205)[0x43fbe5]
/usr/share/games/opensonic/opensonic(main+0x3aa)[0x42c10a]
/lib/libc.so.6(__libc_start_main+0xfd)[0x7ffff6a40abd]
/usr/share/games/opensonic/opensonic[0x40acd9]
======= Memory map: ========
00400000-0045c000 r-xp 00000000 08:02 226413 /usr/share/games/opensonic/opensonic
0065b000-0065c000 r--p 0005b000 08:02 226413 /usr/share/games/opensonic/opensonic
0065c000-0065e000 rw-p 0005c000 08:02 226413 /usr/share/games/opensonic/opensonic
0065e000-012ae000 rw-p 00000000 00:00 0 [heap]
7fffe0000000-7fffe0021000 rw-p 00000000 00:00 0
7fffe0021000-7fffe4000000 ---p 00000000 00:00 0
7fffe67e3000-7fffe67e4000 ---p 00000000 00:00 0
7fffe67e4000-7fffe6fe4000 rwxp 00000000 00:00 0
7fffe6fe4000-7fffeafe5000 rw-s 00000000 00:11 647522 /dev/shm/pulse-shm-2022057392
7fffeafe5000-7fffeafea000 r-xp 00000000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7fffeafea000-7fffeb1e9000 ---p 00005000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7fffeb1e9000-7fffeb1ea000 r--p 00004000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7fffeb1ea000-7fffeb1eb000 rw-p 00005000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7fffeb1eb000-7fffeb1ec000 ---p 00000000 00:00 0
7fffeb1ec000-7fffeb9ec000 rwxp 00000000 00:00 0
7fffef793000-7fffef7a9000 r-xp 00000000 08:02 13380 /lib/libgcc_s.so.1
7fffef7a9000-7fffef9a8000 ---p 00016000 08:02 13380 /lib/libgcc_s.so.1
7fffef9a8000-7fffef9a9000 r--p 00015000 08:02 13380 /lib/libgcc_s.so.1
7fffef9a9000-7fffef9aa000 rw-p 00016000 08:02 13380 /lib/libgcc_s.so.1
7fffef9aa000-7fffef9ed000 rw-p 00000000 00:00 0
7fffef9ed000-7fffef9f2000 r-xp 00000000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7fffef9f2000-7fffefbf2000 ---p 00005000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7fffefbf2000-7fffefbf3000 r--p 00005000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7fffefbf3000-7fffefbf4000 rw-p 00006000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7fffefbf4000-7fffefc0e000 r-xp 00000000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7fffefc0e000-7fffefe0d000 ---p 0001a000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7fffefe0d000-7fffefe0e000 r--p 00019000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7fffefe0e000-7fffeffce000 rw-p 0001a000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7fffeffce000-7ffff0017000 r-xp 00000000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7ffff0017000-7ffff0217000 ---p 00049000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7ffff0217000-7ffff0218000 r--p 00049000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7ffff0218000-7ffff0219000 rw-p 0004a000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7ffff0219000-7ffff021c000 r-xp 00000000 08:02 3504 /lib/libuuid.so.1.3.0
7ffff021c000-7ffff041c000 ---p 00003000 08:02 3504 /lib/libuuid.so.1.3.0
7ffff041c000-7ffff041d000 r--p 00003000 08:02 3504 /lib/libuuid.so.1.3.0
7ffff041d000-7ffff041e000 rw-p 00004000 08:02 3504 /lib/libuuid.so.1.3.0
7ffff041e000-7ffff045b000 r-xp 00000000 08:02 322 /lib/libdbus-1.so.3.4.0
7ffff045b000-7ffff065b000 ---p 0003d000 08:02 322 /lib/libdbus-1.so.3.4.0
7ffff065b000-7ffff065c000 r--p 0003d000 08:02 322 /lib/libdbus-1.so.3.4.0
7ffff065c000-7ffff065d000 rw-p 0003e000 08:02 322 /lib/libdbus-1.so.3.4.0
7ffff065d000-7ffff06b9000 r-xp 00000000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7ffff06b9000-7ffff08b8000 ---p 0005c000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7ffff08b8000-7ffff08ba000 r--p 0005b000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7ffff08ba000-7ffff08bb000 rw-p 0005d000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7ffff08bb000-7ffff08bf000 rw-p 00000000 00:00 0
7ffff08bf000-7ffff08c8000 r-xp 00000000 08:02 43598 /lib/libwrap.so.0.7.6
7ffff08c8000-7ffff0ac7000 ---p 00009000 08:02 43598 /lib/libwrap.so.0.7.6
7ffff0ac7000-7ffff0ac8000 r--p 00008000 08:02 43598 /lib/libwrap.so.0.7.6
7ffff0ac8000-7ffff0ac9000 rw-p 00009000 08:02 43598 /lib/libwrap.so.0.7.6
7ffff0ac9000-7ffff0aca000 rw-p 00000000 00:00 0
7ffff0aca000-7ffff0acf000 r-xp 00000000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7ffff0acf000-7ffff0ccf000 ---p 00005000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7ffff0ccf000-7ffff0cd0000 r--p 00005000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7ffff0cd0000-7ffff0cd1000 rw-p 00006000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7ffff0cd1000-7ffff0cd9000 r-xp 00000000 08:02 35530 /usr/lib/libSM.so.6.0.0
7ffff0cd9000-7ffff0ed8000 ---p 00008000 08:02 35530 /usr/lib/libSM.so.6.0.0
7ffff0ed8000-7ffff0ed9000 r--p 00007000 08:02 35530 /usr/lib/libSM.so.6.0.0
7ffff0ed9000-7ffff0eda000 rw-p 00008000 08:02 35530 /usr/lib/libSM.so.6.0.0
7ffff0eda000-7ffff0ef1000 r-xp 00000000 08:02 35516 /usr/lib/libICE.so.6.3.0
7ffff0ef1000-7ffff10f0000 ---p 00017000 08:02 35516 /usr/lib/libICE.so.6.3.0
7ffff10f0000-7ffff10f1000 r--p 00016000 08:02 35516 /usr/lib/libICE.so.6.3.0
7ffff10f1000-7ffff10f2000 rw-p 00017000 08:02 35516 /usr/lib/libICE.so.6.3.0
7ffff10f2000-7ffff10f5000 rw-p 00000000 00:00 0
7ffff10f5000-7ffff113f000 r-xp 00000000 08:02 29281 /usr/lib/libpulsecommon-0.9.19.so
Program received signal SIGABRT, Aborted.
0x00007ffff6a554b5 in raise () from /lib/libc.so.6
(gdb) bt
#0 0x00007ffff6a554b5 in raise () from /lib/libc.so.6
#1 0x00007ffff6a58f50 in abort () from /lib/libc.so.6
#2 0x00007ffff6a8dc97 in ?? () from /lib/libc.so.6
#3 0x00007ffff6a97dd6 in ?? () from /lib/libc.so.6
#4 0x00007ffff6a9c74c in free () from /lib/libc.so.6
#5 0x00007ffff7aeab07 in destroy_bitmap () from /usr/lib/liballeg.so.4.2
#6 0x000000000043ed81 in image_destroy (img=0xe2a6d0)
at /home/korn/opensonic/opensonic-0.1.3/src/video.c:635
#7 0x000000000043fbe5 in video_render ()
at /home/korn/opensonic/opensonic-0.1.3/src/video.c:424
#8 0x000000000042c10a in main (argc=1, argv=0x7fffffffe2c8)
at /home/korn/opensonic/opensonic-0.1.3/src/main.c:154
Open Sonic version 0.1.3
logfile_init()
preferences_init()
ERROR: couldn't open preferences file for reading. file="/home/korn/.opensonic/preferences.dat"
game arguments:
argv[0]: '/usr/share/games/opensonic/opensonic'
timer_init()
video_init()
video_changemode(1,0,0)
video_changemode() ok
audio_init()
Initializing Allegro sound...
Warning: unable to install sound.
ALSA: snd_pcm_hw_params_set_format(pcm_handle, hwparams, format) : Invalid argument
Initializing DUMB...
Initializing LOGG...
audio_init() ok
input_init()
No joystick has been detected.
hash_init()
spritedata_load()...
Reading sprite 'SD_SONIC'
load_sprite() with 26 animations and 75 frames
image_load(/usr/share/games/opensonic/images/player.png)
hash_search('images/player.png', 1) returned NULL
hash_insert('images/player.png', 0x6f3820, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_SONIC'...
hash_insert('SD_SONIC', 0x6eaec0, 2)...
Reading sprite 'SD_TAILS'
load_sprite() with 26 animations and 65 frames
image_load(/usr/share/games/opensonic/images/player.png)
load_sprite() ok!
Registering sprite 'SD_TAILS'...
hash_insert('SD_TAILS', 0x6fb910, 2)...
Reading sprite 'SD_KNUCKLES'
load_sprite() with 26 animations and 65 frames
image_load(/usr/share/games/opensonic/images/player.png)
load_sprite() ok!
Registering sprite 'SD_KNUCKLES'...
hash_insert('SD_KNUCKLES', 0x831a20, 2)...
Reading sprite 'SD_ARROW'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
hash_search('images/items.png', 1) returned NULL
hash_insert('images/items.png', 0x8d9810, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_ARROW'...
hash_insert('SD_ARROW', 0x8d9740, 2)...
Reading sprite 'SD_RING'
load_sprite() with 2 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_RING'...
hash_insert('SD_RING', 0x8d9d00, 2)...
Reading sprite 'SD_BLUERING'
load_sprite() with 2 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_BLUERING'...
hash_insert('SD_BLUERING', 0xa71ee0, 2)...
Reading sprite 'SD_BIGRING'
load_sprite() with 1 animations and 10 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_BIGRING'...
hash_insert('SD_BIGRING', 0xa75df0, 2)...
Reading sprite 'SD_JOAN'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
hash_search('images/baddies.png', 1) returned NULL
hash_insert('images/baddies.png', 0xada030, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_JOAN'...
hash_insert('SD_JOAN', 0xad9f60, 2)...
Reading sprite 'SD_FLYINGBOY'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_FLYINGBOY'...
hash_insert('SD_FLYINGBOY', 0xadb770, 2)...
Reading sprite 'SD_FLYINGEYES'
load_sprite() with 1 animations and 4 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_FLYINGEYES'...
hash_insert('SD_FLYINGEYES', 0xadbd60, 2)...
Reading sprite 'SD_KLEPS'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_KLEPS'...
hash_insert('SD_KLEPS', 0xaeecb0, 2)...
Reading sprite 'SD_GOLDFISH'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_GOLDFISH'...
hash_insert('SD_GOLDFISH', 0xaf0800, 2)...
Reading sprite 'SD_SURPREYES'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_SURPREYES'...
hash_insert('SD_SURPREYES', 0xaf3c50, 2)...
Reading sprite 'SD_ORANJECTION'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_ORANJECTION'...
hash_insert('SD_ORANJECTION', 0xaf7dc0, 2)...
Reading sprite 'SD_ROBOXER'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_ROBOXER'...
hash_insert('SD_ROBOXER', 0xaf9ef0, 2)...
Reading sprite 'SD_NAFDER'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_NAFDER'...
hash_insert('SD_NAFDER', 0xafe010, 2)...
Reading sprite 'SD_CHEF'
load_sprite() with 1 animations and 4 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_CHEF'...
hash_insert('SD_CHEF', 0xb05940, 2)...
Reading sprite 'SD_SIMPLEBOSS'
load_sprite() with 3 animations and 4 frames
image_load(/usr/share/games/opensonic/images/boss.png)
hash_search('images/boss.png', 1) returned NULL
hash_insert('images/boss.png', 0xb0da20, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_SIMPLEBOSS'...
hash_insert('SD_SIMPLEBOSS', 0xb0d940, 2)...
Reading sprite 'SD_MECHASHADOW'
load_sprite() with 5 animations and 6 frames
image_load(/usr/share/games/opensonic/images/boss.png)
load_sprite() ok!
Registering sprite 'SD_MECHASHADOW'...
hash_insert('SD_MECHASHADOW', 0xb0e560, 2)...
Reading sprite 'SD_DANGPOWER'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/boss.png)
load_sprite() ok!
Registering sprite 'SD_DANGPOWER'...
hash_insert('SD_DANGPOWER', 0xb2a0d0, 2)...
Reading sprite 'SD_MAINGUI'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/gui.png)
hash_search('images/gui.png', 1) returned NULL
hash_insert('images/gui.png', 0xb2b7b0, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_MAINGUI'...
hash_insert('SD_MAINGUI', 0xb2b6e0, 2)...
Reading sprite 'SD_LIFEGUI'
load_sprite() with 3 animations and 3 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_LIFEGUI'...
hash_insert('SD_LIFEGUI', 0xc199e0, 2)...
Reading sprite 'SD_PAUSE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_PAUSE'...
hash_insert('SD_PAUSE', 0xc20b50, 2)...
Reading sprite 'SD_ITEMBOX'
load_sprite() with 11 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ITEMBOX'...
hash_insert('SD_ITEMBOX', 0xc235c0, 2)...
Reading sprite 'SD_ICON'
load_sprite() with 11 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ICON'...
hash_insert('SD_ICON', 0xb2eab0, 2)...
Reading sprite 'SD_GLASSES'
load_sprite() with 6 animations and 5 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_GLASSES'...
hash_insert('SD_GLASSES', 0xb32510, 2)...
Reading sprite 'SD_SHIELD'
load_sprite() with 1 animations and 5 frames
image_load(/usr/share/games/opensonic/images/ring_shields.png)
hash_search('images/ring_shields.png', 1) returned NULL
hash_insert('images/ring_shields.png', 0xb339c0, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_SHIELD'...
hash_insert('SD_SHIELD', 0xb338e0, 2)...
Reading sprite 'SD_INVSTAR'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_INVSTAR'...
hash_insert('SD_INVSTAR', 0xb343a0, 2)...
Reading sprite 'SD_LEVELOP'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_LEVELOP'...
hash_insert('SD_LEVELOP', 0xb5cf80, 2)...
Reading sprite 'SD_LEVELACT'
load_sprite() with 3 animations and 3 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_LEVELACT'...
hash_insert('SD_LEVELACT', 0xb34dc0, 2)...
Reading sprite 'SD_EXPLOSION'
load_sprite() with 2 animations and 7 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_EXPLOSION'...
hash_insert('SD_EXPLOSION', 0xb625a0, 2)...
Reading sprite 'SD_PIXEL'
load_sprite() with 4 animations and 75 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_PIXEL'...
hash_insert('SD_PIXEL', 0xb634c0, 2)...
Reading sprite 'SD_ANIMAL'
load_sprite() with 24 animations and 36 frames
image_load(/usr/share/games/opensonic/images/animals.png)
hash_search('images/animals.png', 1) returned NULL
hash_insert('images/animals.png', 0xbc53d0, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_ANIMAL'...
hash_insert('SD_ANIMAL', 0xbc5140, 2)...
Reading sprite 'SD_LOOPRIGHT'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPRIGHT'...
hash_insert('SD_LOOPRIGHT', 0xbe8d20, 2)...
Reading sprite 'SD_LOOPMIDDLE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPMIDDLE'...
hash_insert('SD_LOOPMIDDLE', 0xbec1f0, 2)...
Reading sprite 'SD_LOOPLEFT'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPLEFT'...
hash_insert('SD_LOOPLEFT', 0xbecc40, 2)...
Reading sprite 'SD_LOOPNONE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPNONE'...
hash_insert('SD_LOOPNONE', 0xbf0110, 2)...
Reading sprite 'SD_LOOPFLOOR'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPFLOOR'...
hash_insert('SD_LOOPFLOOR', 0xbf35e0, 2)...
Reading sprite 'SD_LOOPFLOORNONE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPFLOORNONE'...
hash_insert('SD_LOOPFLOORNONE', 0xbf48b0, 2)...
Reading sprite 'SD_LOOPFLOORTOP'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPFLOORTOP'...
hash_insert('SD_LOOPFLOORTOP', 0xbf5b80, 2)...
Reading sprite 'SD_YELLOWSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
hash_search('images/spring_pads.png', 1) returned NULL
hash_insert('images/spring_pads.png', 0xbf6f00, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_YELLOWSPRING'...
hash_insert('SD_YELLOWSPRING', 0xbf6e30, 2)...
Reading sprite 'SD_REDSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
load_sprite() ok!
Registering sprite 'SD_REDSPRING'...
hash_insert('SD_REDSPRING', 0xbf82f0, 2)...
Reading sprite 'SD_RREDSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
load_sprite() ok!
Registering sprite 'SD_RREDSPRING'...
hash_insert('SD_RREDSPRING', 0xbfad70, 2)...
Reading sprite 'SD_LREDSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
load_sprite() ok!
Registering sprite 'SD_LREDSPRING'...
hash_insert('SD_LREDSPRING', 0xbfe240, 2)...
Reading sprite 'SD_SWITCH'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_SWITCH'...
hash_insert('SD_SWITCH', 0xc00710, 2)...
Reading sprite 'SD_DOOR'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_DOOR'...
hash_insert('SD_DOOR', 0xc01a80, 2)...
Reading sprite 'SD_TELEPORTER'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_TELEPORTER'...
hash_insert('SD_TELEPORTER', 0xc036b0, 2)...
Reading sprite 'SD_CHECKPOINT'
load_sprite() with 3 animations and 7 frames
image_load(/usr/share/games/opensonic/images/checkpoint_orb.png)
hash_search('images/checkpoint_orb.png', 1) returned NULL
hash_insert('images/checkpoint_orb.png', 0xc10080, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_CHECKPOINT'...
hash_insert('SD_CHECKPOINT', 0xc0ff90, 2)...
Reading sprite 'SD_BUMPER'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_BUMPER'...
hash_insert('SD_BUMPER', 0xc10b20, 2)...
Reading sprite 'SD_GOAL'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_GOAL'...
hash_insert('SD_GOAL', 0xc11050, 2)...
Reading sprite 'SD_ENDSIGN'
load_sprite() with 5 animations and 8 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ENDSIGN'...
hash_insert('SD_ENDSIGN', 0xd9b220, 2)...
Reading sprite 'SD_ENDLEVEL'
load_sprite() with 3 animations and 4 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ENDLEVEL'...
hash_insert('SD_ENDLEVEL', 0xdb2390, 2)...
Reading sprite 'SD_RINGBONUS'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_RINGBONUS'...
hash_insert('SD_RINGBONUS', 0xdca6d0, 2)...
Reading sprite 'SD_SECRETBONUS'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_SECRETBONUS'...
hash_insert('SD_SECRETBONUS', 0xdcbad0, 2)...
Reading sprite 'SD_TOTAL'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_TOTAL'...
hash_insert('SD_TOTAL', 0xdcced0, 2)...
Reading sprite 'SD_DIALOGBOX'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_DIALOGBOX'...
hash_insert('SD_DIALOGBOX', 0xdcd7d0, 2)...
Reading sprite 'SD_TITLESONIC'
load_sprite() with 2 animations and 8 frames
image_load(/usr/share/games/opensonic/images/title.png)
hash_search('images/title.png', 1) returned NULL
hash_insert('images/title.png', 0xddfe50, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_TITLESONIC'...
hash_insert('SD_TITLESONIC', 0xddfd50, 2)...
Reading sprite 'SD_TITLESONICBG'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/title.png)
load_sprite() ok!
Registering sprite 'SD_TITLESONICBG'...
hash_insert('SD_TITLESONICBG', 0xe2a430, 2)...
Reading sprite 'SD_TITLEGAMENAME'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/title.png)
load_sprite() ok!
Registering sprite 'SD_TITLEGAMENAME'...
hash_insert('SD_TITLEGAMENAME', 0xe2a580, 2)...
Reading sprite 'SD_TITLEFOOT'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/title.png)
load_sprite() ok!
Registering sprite 'SD_TITLEFOOT'...
hash_insert('SD_TITLEFOOT', 0xe220e0, 2)...
Reading sprite 'SD_DANGER'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_DANGER'...
hash_insert('SD_DANGER', 0xe223e0, 2)...
Reading sprite 'SD_SPIKES'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_SPIKES'...
hash_insert('SD_SPIKES', 0xe22e30, 2)...
Reading sprite 'SD_DNADOOR'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_DNADOOR'...
hash_insert('SD_DNADOOR', 0xe24100, 2)...
Reading sprite 'SD_FIREBALL'
load_sprite() with 3 animations and 6 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_FIREBALL'...
hash_insert('SD_FIREBALL', 0xe27ae0, 2)...
Reading sprite 'SD_CONFIRMBOX'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_CONFIRMBOX'...
hash_insert('SD_CONFIRMBOX', 0xe48910, 2)...
Reading sprite 'FT_FONT0'
load_sprite() with 1 animations and 52 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT0'...
hash_insert('FT_FONT0', 0xe48d50, 2)...
Reading sprite 'FT_FONT1'
load_sprite() with 1 animations and 52 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT1'...
hash_insert('FT_FONT1', 0xe4e860, 2)...
Reading sprite 'FT_FONT2'
load_sprite() with 1 animations and 11 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT2'...
hash_insert('FT_FONT2', 0xf79e60, 2)...
Reading sprite 'FT_FONT3'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT3'...
hash_insert('FT_FONT3', 0xf7b990, 2)...
Reading sprite 'FT_FONT4'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT4'...
hash_insert('FT_FONT4', 0xf85570, 2)...
Reading sprite 'FT_FONT5'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT5'...
hash_insert('FT_FONT5', 0xf91ad0, 2)...
Reading sprite 'FT_FONT6'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT6'...
hash_insert('FT_FONT6', 0xf9e030, 2)...
Reading sprite 'FT_FONT7'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT7'...
hash_insert('FT_FONT7', 0xfaa590, 2)...
Reading sprite 'FT_FONT8'
load_sprite() with 1 animations and 224 frames
image_load(/usr/share/games/opensonic/images/font.png)
hash_search('images/font.png', 1) returned NULL
hash_insert('images/font.png', 0xfb75d0, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'FT_FONT8'...
hash_insert('FT_FONT8', 0xfb6e10, 2)...
Reading sprite 'FT_FONT9'
load_sprite() with 1 animations and 112 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT9'...
hash_insert('FT_FONT9', 0xfd6760, 2)...
spritedata_load() ok!
font_init()
font_init() ok
Initializing the language module
lang_loadfile("languages/english.lng")...
hash_search('LANG_LANGUAGE', 5) returned NULL
hash_insert('LANG_LANGUAGE', 0xff8440, 5)...
hash_search('LANG_AUTHOR', 5) returned NULL
hash_insert('LANG_AUTHOR', 0xff8850, 5)...
hash_search('LANG_LASTUPDATE', 5) returned NULL
hash_insert('LANG_LASTUPDATE', 0xff8c60, 5)...
hash_search('LANG_COMPATIBILITY', 5) returned NULL
hash_insert('LANG_COMPATIBILITY', 0xff9070, 5)...
hash_search('COLOR_P1', 5) returned NULL
hash_insert('COLOR_P1', 0xff9480, 5)...
hash_search('COLOR_P2', 5) returned NULL
hash_insert('COLOR_P2', 0xff9890, 5)...
hash_search('COLOR_P3', 5) returned NULL
hash_insert('COLOR_P3', 0xff9ca0, 5)...
hash_search('COLOR_INPUT', 5) returned NULL
hash_insert('COLOR_INPUT', 0xffa0b0, 5)...
hash_search('COLOR_SPECIAL', 5) returned NULL
hash_insert('COLOR_SPECIAL', 0xffa4c0, 5)...
hash_search('MENU_1PGAME', 5) returned NULL
hash_insert('MENU_1PGAME', 0xffa8d0, 5)...
hash_search('MENU_TUTORIAL', 5) returned NULL
hash_insert('MENU_TUTORIAL', 0xfface0, 5)...
hash_search('MENU_CUSTOMQUESTS', 5) returned NULL
hash_insert('MENU_CUSTOMQUESTS', 0xffb0f0, 5)...
hash_search('MENU_OPTIONS', 5) returned NULL
hash_insert('MENU_OPTIONS', 0xffb500, 5)...
hash_search('MENU_EXIT', 5) returned NULL
hash_insert('MENU_EXIT', 0xffb910, 5)...
hash_search('OPTIONS_TITLE', 5) returned NULL
hash_insert('OPTIONS_TITLE', 0xffbd20, 5)...
hash_search('OPTIONS_YES', 5) returned NULL
hash_insert('OPTIONS_YES', 0xffc130, 5)...
hash_search('OPTIONS_NO', 5) returned NULL
hash_insert('OPTIONS_NO', 0xffc540, 5)...
hash_search('OPTIONS_GRAPHICS', 5) returned NULL
hash_insert('OPTIONS_GRAPHICS', 0xffc950, 5)...
hash_search('OPTIONS_FULLSCREEN', 5) returned NULL
hash_insert('OPTIONS_FULLSCREEN', 0xffcd60, 5)...
hash_search('OPTIONS_RESOLUTION', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION', 0xffd170, 5)...
hash_search('OPTIONS_RESOLUTION_OPT1', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION_OPT1', 0xffd580, 5)...
hash_search('OPTIONS_RESOLUTION_OPT2', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION_OPT2', 0xffd990, 5)...
hash_search('OPTIONS_RESOLUTION_OPT3', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION_OPT3', 0xffdda0, 5)...
hash_search('OPTIONS_SMOOTHGFX', 5) returned NULL
hash_insert('OPTIONS_SMOOTHGFX', 0xffe1b0, 5)...
hash_search('OPTIONS_FPS', 5) returned NULL
hash_insert('OPTIONS_FPS', 0xffe5c0, 5)...
hash_search('OPTIONS_GAME', 5) returned NULL
hash_insert('OPTIONS_GAME', 0xffe9d0, 5)...
hash_search('OPTIONS_LANGUAGE', 5) returned NULL
hash_insert('OPTIONS_LANGUAGE', 0xffede0, 5)...
hash_search('OPTIONS_STAGESELECT', 5) returned NULL
hash_insert('OPTIONS_STAGESELECT', 0xfff1f0, 5)...
hash_search('OPTIONS_CREDITS', 5) returned NULL
hash_insert('OPTIONS_CREDITS', 0xfff600, 5)...
hash_search('OPTIONS_BACK', 5) returned NULL
hash_insert('OPTIONS_BACK', 0xfffa10, 5)...
hash_search('STAGESELECT_TITLE', 5) returned NULL
hash_insert('STAGESELECT_TITLE', 0xfffe20, 5)...
hash_search('STAGESELECT_MSG', 5) returned NULL
hash_insert('STAGESELECT_MSG', 0x1000230, 5)...
hash_search('STAGESELECT_PAGE', 5) returned NULL
hash_insert('STAGESELECT_PAGE', 0x1000640, 5)...
hash_search('STAGESELECT_ACT', 5) returned NULL
hash_insert('STAGESELECT_ACT', 0x1000a50, 5)...
hash_search('CREDITS_TITLE', 5) returned NULL
hash_insert('CREDITS_TITLE', 0x1000e60, 5)...
hash_search('CREDITS_KEY', 5) returned NULL
hash_insert('CREDITS_KEY', 0x1001270, 5)...
hash_search('CREDITS_PROGRAMMING', 5) returned NULL
hash_insert('CREDITS_PROGRAMMING', 0x1001680, 5)...
hash_search('CREDITS_ART', 5) returned NULL
hash_insert('CREDITS_ART', 0x1001a90, 5)...
hash_search('CREDITS_MUSICS', 5) returned NULL
hash_insert('CREDITS_MUSICS', 0x1001ea0, 5)...
hash_search('CREDITS_LEVELDESIGN', 5) returned NULL
hash_insert('CREDITS_LEVELDESIGN', 0x10022b0, 5)...
hash_search('CREDITS_COMMUNITY', 5) returned NULL
hash_insert('CREDITS_COMMUNITY', 0x10026c0, 5)...
hash_search('CREDITS_PORTING', 5) returned NULL
hash_insert('CREDITS_PORTING', 0x1002ad0, 5)...
hash_search('CREDITS_TRANSLATIONS', 5) returned NULL
hash_insert('CREDITS_TRANSLATIONS', 0x1002ee0, 5)...
hash_search('CREDITS_RETIRED', 5) returned NULL
hash_insert('CREDITS_RETIRED', 0x10032f0, 5)...
hash_search('CREDITS_THANKS', 5) returned NULL
hash_insert('CREDITS_THANKS', 0x1003700, 5)...
hash_search('CREDITS_ALEXANDRE', 5) returned NULL
hash_insert('CREDITS_ALEXANDRE', 0x1003b10, 5)...
hash_search('CREDITS_DI', 5) returned NULL
hash_insert('CREDITS_DI', 0x1003f20, 5)...
hash_search('CREDITS_NEOBLAST', 5) returned NULL
hash_insert('CREDITS_NEOBLAST', 0x1004330, 5)...
hash_search('CREDITS_LAINZ', 5) returned NULL
hash_insert('CREDITS_LAINZ', 0x1004740, 5)...
hash_search('CREDITS_ARTHURBLOT', 5) returned NULL
hash_insert('CREDITS_ARTHURBLOT', 0x1004b50, 5)...
hash_search('CREDITS_REIMUND', 5) returned NULL
hash_insert('CREDITS_REIMUND', 0x1004f60, 5)...
hash_search('CREDITS_SZYMON', 5) returned NULL
hash_insert('CREDITS_SZYMON', 0x1005370, 5)...
hash_search('CREDITS_TOMIRES', 5) returned NULL
hash_insert('CREDITS_TOMIRES', 0x1005780, 5)...
hash_search('CREDITS_BASTIAN', 5) returned NULL
hash_insert('CREDITS_BASTIAN', 0x1005b90, 5)...
hash_search('MENU_CQ_SELECT', 5) returned NULL
hash_insert('MENU_CQ_SELECT', 0x1005fa0, 5)...
hash_search('MENU_CQ_BACK', 5) returned NULL
hash_insert('MENU_CQ_BACK', 0x10063b0, 5)...
hash_search('MENU_CQ_INFO', 5) returned NULL
hash_insert('MENU_CQ_INFO', 0x10067c0, 5)...
hash_search('MENU_CQ_TUTORIAL', 5) returned NULL
hash_insert('MENU_CQ_TUTORIAL', 0x1006bd0, 5)...
hash_search('MENU_CQ_SUPERBOSSES', 5) returned NULL
hash_insert('MENU_CQ_SUPERBOSSES', 0x1006fe0, 5)...
hash_search('QUESTCLEARED_TITLE', 5) returned NULL
hash_insert('QUESTCLEARED_TITLE', 0x10073f0, 5)...
hash_search('QUESTCLEARED_TEXT', 5) returned NULL
hash_insert('QUESTCLEARED_TEXT', 0x1007800, 5)...
hash_search('ENDOFDEMO_TITLE', 5) returned NULL
hash_insert('ENDOFDEMO_TITLE', 0x1007c10, 5)...
hash_search('ENDOFDEMO_TEXT', 5) returned NULL
hash_insert('ENDOFDEMO_TEXT', 0x1008020, 5)...
hash_search('BONUSMSG_TITLE', 5) returned NULL
hash_insert('BONUSMSG_TITLE', 0x1008430, 5)...
hash_search('BONUSMSG_TEXT', 5) returned NULL
hash_insert('BONUSMSG_TEXT', 0x1008840, 5)...
hash_search('CBOX_QUIT_QUESTION', 5) returned NULL
hash_insert('CBOX_QUIT_QUESTION', 0x1008c50, 5)...
hash_search('CBOX_QUIT_OPTION1', 5) returned NULL
hash_insert('CBOX_QUIT_OPTION1', 0x1009060, 5)...
hash_search('CBOX_QUIT_OPTION2', 5) returned NULL
hash_insert('CBOX_QUIT_OPTION2', 0x1009470, 5)...
hash_search('INPUT_KEYB_DIRECTIONAL', 5) returned NULL
hash_insert('INPUT_KEYB_DIRECTIONAL', 0x1009880, 5)...
hash_search('INPUT_KEYB_LEFT', 5) returned NULL
hash_insert('INPUT_KEYB_LEFT', 0x1009c90, 5)...
hash_search('INPUT_KEYB_RIGHT', 5) returned NULL
hash_insert('INPUT_KEYB_RIGHT', 0x100a0a0, 5)...
hash_search('INPUT_KEYB_UP', 5) returned NULL
hash_insert('INPUT_KEYB_UP', 0x100a4b0, 5)...
hash_search('INPUT_KEYB_DOWN', 5) returned NULL
hash_insert('INPUT_KEYB_DOWN', 0x100a8c0, 5)...
hash_search('INPUT_KEYB_FIRE1', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE1', 0x100acd0, 5)...
hash_search('INPUT_KEYB_FIRE2', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE2', 0x100b0e0, 5)...
hash_search('INPUT_KEYB_FIRE3', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE3', 0x100b4f0, 5)...
hash_search('INPUT_KEYB_FIRE4', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE4', 0x100b900, 5)...
hash_search('INPUT_JOY_DIRECTIONAL', 5) returned NULL
hash_insert('INPUT_JOY_DIRECTIONAL', 0x100bd10, 5)...
hash_search('INPUT_JOY_LEFT', 5) returned NULL
hash_insert('INPUT_JOY_LEFT', 0x100c120, 5)...
hash_search('INPUT_JOY_RIGHT', 5) returned NULL
hash_insert('INPUT_JOY_RIGHT', 0x100c530, 5)...
hash_search('INPUT_JOY_UP', 5) returned NULL
hash_insert('INPUT_JOY_UP', 0x100c940, 5)...
hash_search('INPUT_JOY_DOWN', 5) returned NULL
hash_insert('INPUT_JOY_DOWN', 0x100cd50, 5)...
hash_search('INPUT_JOY_FIRE1', 5) returned NULL
hash_insert('INPUT_JOY_FIRE1', 0x100d160, 5)...
hash_search('INPUT_JOY_FIRE2', 5) returned NULL
hash_insert('INPUT_JOY_FIRE2', 0x100d570, 5)...
hash_search('INPUT_JOY_FIRE3', 5) returned NULL
hash_insert('INPUT_JOY_FIRE3', 0x100d980, 5)...
hash_search('INPUT_JOY_FIRE4', 5) returned NULL
hash_insert('INPUT_JOY_FIRE4', 0x100dd90, 5)...
hash_search('TUTORIAL_1_TITLE_0', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_0', 0x100e1a0, 5)...
hash_search('TUTORIAL_1_MSG_0', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_0', 0x100e5b0, 5)...
hash_search('TUTORIAL_1_TITLE_1', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_1', 0x100e9c0, 5)...
hash_search('TUTORIAL_1_MSG_1', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_1', 0x100edd0, 5)...
hash_search('TUTORIAL_1_TITLE_2', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_2', 0x100f1e0, 5)...
hash_search('TUTORIAL_1_MSG_2', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_2', 0x100f5f0, 5)...
hash_search('TUTORIAL_1_TITLE_3', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_3', 0x100fa00, 5)...
hash_search('TUTORIAL_1_MSG_3', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_3', 0x100fe10, 5)...
hash_search('TUTORIAL_1_TITLE_4', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_4', 0x1010220, 5)...
hash_search('TUTORIAL_1_MSG_4', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_4', 0x1010630, 5)...
hash_search('TUTORIAL_1_TITLE_5', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_5', 0x1010a40, 5)...
hash_search('TUTORIAL_1_MSG_5', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_5', 0x1010e50, 5)...
hash_search('TUTORIAL_2_TITLE_0', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_0', 0x1011260, 5)...
hash_search('TUTORIAL_2_MSG_0', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_0', 0x1011670, 5)...
hash_search('TUTORIAL_2_TITLE_1', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_1', 0x1011a80, 5)...
hash_search('TUTORIAL_2_MSG_1', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_1', 0x1011e90, 5)...
hash_search('TUTORIAL_2_TITLE_2', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_2', 0x10122a0, 5)...
hash_search('TUTORIAL_2_MSG_2', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_2', 0x10126b0, 5)...
hash_search('TUTORIAL_2_TITLE_3', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_3', 0x1012ac0, 5)...
hash_search('TUTORIAL_2_MSG_3', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_3', 0x1012ed0, 5)...
hash_search('BOZ_1_TITLE_0', 5) returned NULL
hash_insert('BOZ_1_TITLE_0', 0x10132e0, 5)...
hash_search('BOZ_1_MSG_0', 5) returned NULL
hash_insert('BOZ_1_MSG_0', 0x10136f0, 5)...
hash_search('BOZ_1_TITLE_1', 5) returned NULL
hash_insert('BOZ_1_TITLE_1', 0x1013b00, 5)...
hash_search('BOZ_1_MSG_1', 5) returned NULL
hash_insert('BOZ_1_MSG_1', 0x1013f10, 5)...
hash_search('BOZ_1_TITLE_2', 5) returned NULL
hash_insert('BOZ_1_TITLE_2', 0x1014320, 5)...
hash_search('BOZ_1_MSG_2', 5) returned NULL
hash_insert('BOZ_1_MSG_2', 0x1014730, 5)...
hash_search('BOZ_1_TITLE_3', 5) returned NULL
hash_insert('BOZ_1_TITLE_3', 0x1014b40, 5)...
hash_search('BOZ_1_MSG_3', 5) returned NULL
hash_insert('BOZ_1_MSG_3', 0x1014f50, 5)...
hash_search('BOZ_1_TITLE_4', 5) returned NULL
hash_insert('BOZ_1_TITLE_4', 0x1015360, 5)...
hash_search('BOZ_1_MSG_4', 5) returned NULL
hash_insert('BOZ_1_MSG_4', 0x1015770, 5)...
hash_search('BOZ_1_TITLE_5', 5) returned NULL
hash_insert('BOZ_1_TITLE_5', 0x1015b80, 5)...
hash_search('BOZ_1_MSG_5', 5) returned NULL
hash_insert('BOZ_1_MSG_5', 0x1015f90, 5)...
hash_search('BOZ_3_TITLE_0', 5) returned NULL
hash_insert('BOZ_3_TITLE_0', 0x10163a0, 5)...
hash_search('BOZ_3_MSG_0', 5) returned NULL
hash_insert('BOZ_3_MSG_0', 0x10167b0, 5)...
hash_search('EP_1_TITLE_0', 5) returned NULL
hash_insert('EP_1_TITLE_0', 0x1016bc0, 5)...
hash_search('EP_1_MSG_0', 5) returned NULL
hash_insert('EP_1_MSG_0', 0x1016fd0, 5)...
hash_search('EP_2_TITLE_0', 5) returned NULL
hash_insert('EP_2_TITLE_0', 0x10173e0, 5)...
hash_search('EP_2_MSG_0', 5) returned NULL
hash_insert('EP_2_MSG_0', 0x10177f0, 5)...
hash_search('MBOZ_1_TITLE_0', 5) returned NULL
hash_insert('MBOZ_1_TITLE_0', 0x1017c00, 5)...
hash_search('MBOZ_1_MSG_0', 5) returned NULL
hash_insert('MBOZ_1_MSG_0', 0x1018010, 5)...
hash_search('MEP_2_TITLE_0', 5) returned NULL
hash_insert('MEP_2_TITLE_0', 0x1018420, 5)...
hash_search('MEP_2_MSG_0', 5) returned NULL
hash_insert('MEP_2_MSG_0', 0x1018830, 5)...
hash_search('PROTOTYPE_1_TITLE_0', 5) returned NULL
hash_insert('PROTOTYPE_1_TITLE_0', 0x1018c40, 5)...
hash_search('PROTOTYPE_1_MSG_0', 5) returned NULL
hash_insert('PROTOTYPE_1_MSG_0', 0x1019050, 5)...
hash_search('TESTZONE_1_TITLE_0', 5) returned NULL
hash_insert('TESTZONE_1_TITLE_0', 0x1019460, 5)...
hash_search('TESTZONE_1_MSG_0', 5) returned NULL
hash_insert('TESTZONE_1_MSG_0', 0x1019870, 5)...
lang_loadfile("languages/english.lng") ok!
lang_init() ok!
lang_loadfile("languages/english.lng")...
lang_loadfile("languages/english.lng") ok!
scenestack_push(0x6fc6e0)
image_load(/usr/share/games/opensonic/images/intro.png)
hash_search('images/intro.png', 1) returned NULL
hash_insert('images/intro.png', 0xfd8240, 1)...
image_load() ok
scenestack_push() ok
Offline
Odd. I can't reproduce the crash anywhere. ...and I use Xubuntu 9.10.
Type
make clean
and compile it from the beginning again.
After you compile it from the beginning, please run
opensonic --tiny
, change the screen resolution in the options menu and send us the logfile.
Offline
Didn't work? Try using SzynaW's .deb package
http://opensnc.sourceforge.net/forum/vi … php?id=106
Tell us if it works for you.
=========
By the way, try this patch
--- video.orig.c 2010-02-28 20:30:32.000000000 -0300
+++ video.c 2010-02-28 20:35:16.000000000 -0300
@@ -400,6 +400,7 @@
draw_to_screen(tmp);
image_destroy(tmp);
+ tmp = NULL;
break;
}
@@ -414,6 +415,7 @@
image_draw_scaled(video_get_backbuffer(), half, 0, 0, scale, IF_NONE);
filter_blit(half, tmp, FILTER_2XSAI);
image_destroy(half);
+ half = NULL;
}
else {
v2d_t scale = v2d_new((double)tmp->w / (double)video_get_backbuffer()->w, (double)tmp->h / (double)video_get_backbuffer()->h);
@@ -422,6 +424,7 @@
draw_to_screen(tmp);
image_destroy(tmp);
+ tmp = NULL;
break;
}
@@ -631,8 +634,10 @@
*/
void image_destroy(image_t *img)
{
- if(img->data != NULL)
+ if(img->data != NULL) {
destroy_bitmap(img->data);
+ img->data = NULL;
+ }
free(img);
}
Last edited by Alexandre (2010-03-01 00:09:37)
Offline
I tried the version from the PPA and it also crashes:
korn@ubuntu:~/opensonic$ opensonic --tiny
*** glibc detected *** opensonic: double free or corruption (out): 0x00000000021c62d0 ***
======= Backtrace: =========
/lib/libc.so.6[0x7f81bc13fdd6]
/lib/libc.so.6(cfree+0x6c)[0x7f81bc14474c]
/usr/lib/liballeg.so.4.2(destroy_bitmap+0x87)[0x7f81bd192b07]
opensonic(video_render+0x1a7)[0x43fac7]
opensonic(main+0x3aa)[0x42c10a]
/lib/libc.so.6(__libc_start_main+0xfd)[0x7f81bc0e8abd]
opensonic[0x40acd9]
======= Memory map: ========
00400000-0045c000 r-xp 00000000 08:02 216542 /usr/share/games/opensonic/opensonic
0065b000-0065c000 r--p 0005b000 08:02 216542 /usr/share/games/opensonic/opensonic
0065c000-0065e000 rw-p 0005c000 08:02 216542 /usr/share/games/opensonic/opensonic
0065e000-006a2000 rw-p 00000000 00:00 0
014d5000-02313000 rw-p 00000000 00:00 0 [heap]
7f81a4000000-7f81a4021000 rw-p 00000000 00:00 0
7f81a4021000-7f81a8000000 ---p 00000000 00:00 0
7f81abe8b000-7f81abe8c000 ---p 00000000 00:00 0
7f81abe8c000-7f81ac68c000 rwxp 00000000 00:00 0
7f81ac68c000-7f81b068d000 rw-s 00000000 00:11 61298 /dev/shm/pulse-shm-1719649293
7f81b068d000-7f81b0692000 r-xp 00000000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7f81b0692000-7f81b0891000 ---p 00005000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7f81b0891000-7f81b0892000 r--p 00004000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7f81b0892000-7f81b0893000 rw-p 00005000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7f81b0893000-7f81b0894000 ---p 00000000 00:00 0
7f81b0894000-7f81b1094000 rwxp 00000000 00:00 0
7f81b4cb9000-7f81b4ccf000 r-xp 00000000 08:02 13380 /lib/libgcc_s.so.1
7f81b4ccf000-7f81b4ece000 ---p 00016000 08:02 13380 /lib/libgcc_s.so.1
7f81b4ece000-7f81b4ecf000 r--p 00015000 08:02 13380 /lib/libgcc_s.so.1
7f81b4ecf000-7f81b4ed0000 rw-p 00016000 08:02 13380 /lib/libgcc_s.so.1
7f81b4ed0000-7f81b5095000 rw-p 00000000 00:00 0
7f81b5095000-7f81b509a000 r-xp 00000000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7f81b509a000-7f81b529a000 ---p 00005000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7f81b529a000-7f81b529b000 r--p 00005000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7f81b529b000-7f81b529c000 rw-p 00006000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7f81b529c000-7f81b52b6000 r-xp 00000000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7f81b52b6000-7f81b54b5000 ---p 0001a000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7f81b54b5000-7f81b54b6000 r--p 00019000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7f81b54b6000-7f81b5676000 rw-p 0001a000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7f81b5676000-7f81b56bf000 r-xp 00000000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7f81b56bf000-7f81b58bf000 ---p 00049000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7f81b58bf000-7f81b58c0000 r--p 00049000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7f81b58c0000-7f81b58c1000 rw-p 0004a000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7f81b58c1000-7f81b58c4000 r-xp 00000000 08:02 3504 /lib/libuuid.so.1.3.0
7f81b58c4000-7f81b5ac4000 ---p 00003000 08:02 3504 /lib/libuuid.so.1.3.0
7f81b5ac4000-7f81b5ac5000 r--p 00003000 08:02 3504 /lib/libuuid.so.1.3.0
7f81b5ac5000-7f81b5ac6000 rw-p 00004000 08:02 3504 /lib/libuuid.so.1.3.0
7f81b5ac6000-7f81b5b03000 r-xp 00000000 08:02 322 /lib/libdbus-1.so.3.4.0
7f81b5b03000-7f81b5d03000 ---p 0003d000 08:02 322 /lib/libdbus-1.so.3.4.0
7f81b5d03000-7f81b5d04000 r--p 0003d000 08:02 322 /lib/libdbus-1.so.3.4.0
7f81b5d04000-7f81b5d05000 rw-p 0003e000 08:02 322 /lib/libdbus-1.so.3.4.0
7f81b5d05000-7f81b5d61000 r-xp 00000000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7f81b5d61000-7f81b5f60000 ---p 0005c000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7f81b5f60000-7f81b5f62000 r--p 0005b000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7f81b5f62000-7f81b5f63000 rw-p 0005d000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7f81b5f63000-7f81b5f67000 rw-p 00000000 00:00 0
7f81b5f67000-7f81b5f70000 r-xp 00000000 08:02 43598 /lib/libwrap.so.0.7.6
7f81b5f70000-7f81b616f000 ---p 00009000 08:02 43598 /lib/libwrap.so.0.7.6
7f81b616f000-7f81b6170000 r--p 00008000 08:02 43598 /lib/libwrap.so.0.7.6
7f81b6170000-7f81b6171000 rw-p 00009000 08:02 43598 /lib/libwrap.so.0.7.6
7f81b6171000-7f81b6172000 rw-p 00000000 00:00 0
7f81b6172000-7f81b6177000 r-xp 00000000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7f81b6177000-7f81b6377000 ---p 00005000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7f81b6377000-7f81b6378000 r--p 00005000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7f81b6378000-7f81b6379000 rw-p 00006000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7f81b6379000-7f81b6381000 r-xp 00000000 08:02 35530 /usr/lib/libSM.so.6.0.0
7f81b6381000-7f81b6580000 ---p 00008000 08:02 35530 /usr/lib/libSM.so.6.0.0
7f81b6580000-7f81b6581000 r--p 00007000 08:02 35530 /usr/lib/libSM.so.6.0.0
7f81b6581000-7f81b6582000 rw-p 00008000 08:02 35530 /usr/lib/libSM.so.6.0.0
7f81b6582000-7f81b6599000 r-xp 00000000 08:02 35516 /usr/lib/libICE.so.6.3.0
7f81b6599000-7f81b6798000 ---p 00017000 08:02 35516 /usr/lib/libICE.so.6.3.0
7f81b6798000-7f81b6799000 r--p 00016000 08:02 35516 /usr/lib/libICE.so.6.3.0
7f81b6799000-7f81b679a000 rw-p 00017000 08:02 35516 /usr/lib/libICE.so.6.3.0
7f81b679a000-7f81b679d000 rw-p 00000000 00:00 0
7f81b679d000-7f81b67e7000 r-xp 00000000 08:02 29281 /usr/lib/libpulsecommon-0.9.19.so
Open Sonic version 0.1.3
logfile_init()
preferences_init()
ERROR: couldn't open preferences file for reading. file="/home/korn/.opensonic/preferences.dat"
game arguments:
argv[0]: 'opensonic'
argv[1]: '--tiny'
timer_init()
video_init()
video_changemode(0,0,0)
video_changemode() ok
audio_init()
Initializing Allegro sound...
Warning: unable to install sound.
ALSA: snd_pcm_hw_params_set_format(pcm_handle, hwparams, format) : Invalid argument
Initializing DUMB...
Initializing LOGG...
audio_init() ok
input_init()
No joystick has been detected.
hash_init()
spritedata_load()...
Reading sprite 'SD_SONIC'
load_sprite() with 26 animations and 75 frames
image_load(/usr/share/games/opensonic/images/player.png)
hash_search('images/player.png', 1) returned NULL
hash_insert('images/player.png', 0x1521320, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_SONIC'...
hash_insert('SD_SONIC', 0x152ddc0, 2)...
Reading sprite 'SD_TAILS'
load_sprite() with 26 animations and 65 frames
image_load(/usr/share/games/opensonic/images/player.png)
load_sprite() ok!
Registering sprite 'SD_TAILS'...
hash_insert('SD_TAILS', 0x15bb460, 2)...
Reading sprite 'SD_KNUCKLES'
load_sprite() with 26 animations and 65 frames
image_load(/usr/share/games/opensonic/images/player.png)
load_sprite() ok!
Registering sprite 'SD_KNUCKLES'...
hash_insert('SD_KNUCKLES', 0x1663b00, 2)...
Reading sprite 'SD_ARROW'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
hash_search('images/items.png', 1) returned NULL
hash_insert('images/items.png', 0x170b8f0, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_ARROW'...
hash_insert('SD_ARROW', 0x170b820, 2)...
Reading sprite 'SD_RING'
load_sprite() with 2 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_RING'...
hash_insert('SD_RING', 0x170bde0, 2)...
Reading sprite 'SD_BLUERING'
load_sprite() with 2 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_BLUERING'...
hash_insert('SD_BLUERING', 0x18a3fc0, 2)...
Reading sprite 'SD_BIGRING'
load_sprite() with 1 animations and 10 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_BIGRING'...
hash_insert('SD_BIGRING', 0x18a7ed0, 2)...
Reading sprite 'SD_JOAN'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
hash_search('images/baddies.png', 1) returned NULL
hash_insert('images/baddies.png', 0x190c110, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_JOAN'...
hash_insert('SD_JOAN', 0x190c040, 2)...
Reading sprite 'SD_FLYINGBOY'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_FLYINGBOY'...
hash_insert('SD_FLYINGBOY', 0x190d850, 2)...
Reading sprite 'SD_FLYINGEYES'
load_sprite() with 1 animations and 4 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_FLYINGEYES'...
hash_insert('SD_FLYINGEYES', 0x190de40, 2)...
Reading sprite 'SD_KLEPS'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_KLEPS'...
hash_insert('SD_KLEPS', 0x1920d90, 2)...
Reading sprite 'SD_GOLDFISH'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_GOLDFISH'...
hash_insert('SD_GOLDFISH', 0x19228e0, 2)...
Reading sprite 'SD_SURPREYES'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_SURPREYES'...
hash_insert('SD_SURPREYES', 0x1925d30, 2)...
Reading sprite 'SD_ORANJECTION'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_ORANJECTION'...
hash_insert('SD_ORANJECTION', 0x1929ea0, 2)...
Reading sprite 'SD_ROBOXER'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_ROBOXER'...
hash_insert('SD_ROBOXER', 0x192bfd0, 2)...
Reading sprite 'SD_NAFDER'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_NAFDER'...
hash_insert('SD_NAFDER', 0x19300f0, 2)...
Reading sprite 'SD_CHEF'
load_sprite() with 1 animations and 4 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_CHEF'...
hash_insert('SD_CHEF', 0x1937a20, 2)...
Reading sprite 'SD_SIMPLEBOSS'
load_sprite() with 3 animations and 4 frames
image_load(/usr/share/games/opensonic/images/boss.png)
hash_search('images/boss.png', 1) returned NULL
hash_insert('images/boss.png', 0x193fb00, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_SIMPLEBOSS'...
hash_insert('SD_SIMPLEBOSS', 0x193fa20, 2)...
Reading sprite 'SD_MECHASHADOW'
load_sprite() with 5 animations and 6 frames
image_load(/usr/share/games/opensonic/images/boss.png)
load_sprite() ok!
Registering sprite 'SD_MECHASHADOW'...
hash_insert('SD_MECHASHADOW', 0x1940640, 2)...
Reading sprite 'SD_DANGPOWER'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/boss.png)
load_sprite() ok!
Registering sprite 'SD_DANGPOWER'...
hash_insert('SD_DANGPOWER', 0x195c1b0, 2)...
Reading sprite 'SD_MAINGUI'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/gui.png)
hash_search('images/gui.png', 1) returned NULL
hash_insert('images/gui.png', 0x195d890, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_MAINGUI'...
hash_insert('SD_MAINGUI', 0x195d7c0, 2)...
Reading sprite 'SD_LIFEGUI'
load_sprite() with 3 animations and 3 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_LIFEGUI'...
hash_insert('SD_LIFEGUI', 0x195f7d0, 2)...
Reading sprite 'SD_PAUSE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_PAUSE'...
hash_insert('SD_PAUSE', 0x195fc30, 2)...
Reading sprite 'SD_ITEMBOX'
load_sprite() with 11 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ITEMBOX'...
hash_insert('SD_ITEMBOX', 0x1967970, 2)...
Reading sprite 'SD_ICON'
load_sprite() with 11 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ICON'...
hash_insert('SD_ICON', 0x1974650, 2)...
Reading sprite 'SD_GLASSES'
load_sprite() with 6 animations and 5 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_GLASSES'...
hash_insert('SD_GLASSES', 0x19780b0, 2)...
Reading sprite 'SD_SHIELD'
load_sprite() with 1 animations and 5 frames
image_load(/usr/share/games/opensonic/images/ring_shields.png)
hash_search('images/ring_shields.png', 1) returned NULL
hash_insert('images/ring_shields.png', 0x1979560, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_SHIELD'...
hash_insert('SD_SHIELD', 0x1979480, 2)...
Reading sprite 'SD_INVSTAR'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_INVSTAR'...
hash_insert('SD_INVSTAR', 0x19d4e80, 2)...
Reading sprite 'SD_LEVELOP'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_LEVELOP'...
hash_insert('SD_LEVELOP', 0x19d5a90, 2)...
Reading sprite 'SD_LEVELACT'
load_sprite() with 3 animations and 3 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_LEVELACT'...
hash_insert('SD_LEVELACT', 0x19d6490, 2)...
Reading sprite 'SD_EXPLOSION'
load_sprite() with 2 animations and 7 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_EXPLOSION'...
hash_insert('SD_EXPLOSION', 0x19db300, 2)...
Reading sprite 'SD_PIXEL'
load_sprite() with 4 animations and 75 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_PIXEL'...
hash_insert('SD_PIXEL', 0x197dfc0, 2)...
Reading sprite 'SD_ANIMAL'
load_sprite() with 24 animations and 36 frames
image_load(/usr/share/games/opensonic/images/animals.png)
hash_search('images/animals.png', 1) returned NULL
hash_insert('images/animals.png', 0x1982680, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_ANIMAL'...
hash_insert('SD_ANIMAL', 0x19823f0, 2)...
Reading sprite 'SD_LOOPRIGHT'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPRIGHT'...
hash_insert('SD_LOOPRIGHT', 0x19943a0, 2)...
Reading sprite 'SD_LOOPMIDDLE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPMIDDLE'...
hash_insert('SD_LOOPMIDDLE', 0x1994860, 2)...
Reading sprite 'SD_LOOPLEFT'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPLEFT'...
hash_insert('SD_LOOPLEFT', 0x1994aa0, 2)...
Reading sprite 'SD_LOOPNONE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPNONE'...
hash_insert('SD_LOOPNONE', 0x1994bf0, 2)...
Reading sprite 'SD_LOOPFLOOR'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPFLOOR'...
hash_insert('SD_LOOPFLOOR', 0x1a2ad90, 2)...
Reading sprite 'SD_LOOPFLOORNONE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPFLOORNONE'...
hash_insert('SD_LOOPFLOORNONE', 0x1a2c060, 2)...
Reading sprite 'SD_LOOPFLOORTOP'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPFLOORTOP'...
hash_insert('SD_LOOPFLOORTOP', 0x1a2d330, 2)...
Reading sprite 'SD_YELLOWSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
hash_search('images/spring_pads.png', 1) returned NULL
hash_insert('images/spring_pads.png', 0x1a2e6b0, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_YELLOWSPRING'...
hash_insert('SD_YELLOWSPRING', 0x1a2e5e0, 2)...
Reading sprite 'SD_REDSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
load_sprite() ok!
Registering sprite 'SD_REDSPRING'...
hash_insert('SD_REDSPRING', 0x1a2faa0, 2)...
Reading sprite 'SD_RREDSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
load_sprite() ok!
Registering sprite 'SD_RREDSPRING'...
hash_insert('SD_RREDSPRING', 0x1a32520, 2)...
Reading sprite 'SD_LREDSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
load_sprite() ok!
Registering sprite 'SD_LREDSPRING'...
hash_insert('SD_LREDSPRING', 0x1a359f0, 2)...
Reading sprite 'SD_SWITCH'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_SWITCH'...
hash_insert('SD_SWITCH', 0x1a37ec0, 2)...
Reading sprite 'SD_DOOR'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_DOOR'...
hash_insert('SD_DOOR', 0x1a39230, 2)...
Reading sprite 'SD_TELEPORTER'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_TELEPORTER'...
hash_insert('SD_TELEPORTER', 0x1a3ae60, 2)...
Reading sprite 'SD_CHECKPOINT'
load_sprite() with 3 animations and 7 frames
image_load(/usr/share/games/opensonic/images/checkpoint_orb.png)
hash_search('images/checkpoint_orb.png', 1) returned NULL
hash_insert('images/checkpoint_orb.png', 0x1a47830, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_CHECKPOINT'...
hash_insert('SD_CHECKPOINT', 0x1a47740, 2)...
Reading sprite 'SD_BUMPER'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_BUMPER'...
hash_insert('SD_BUMPER', 0x1a482d0, 2)...
Reading sprite 'SD_GOAL'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_GOAL'...
hash_insert('SD_GOAL', 0x1a48800, 2)...
Reading sprite 'SD_ENDSIGN'
load_sprite() with 5 animations and 8 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ENDSIGN'...
hash_insert('SD_ENDSIGN', 0x1bcd300, 2)...
Reading sprite 'SD_ENDLEVEL'
load_sprite() with 3 animations and 4 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ENDLEVEL'...
hash_insert('SD_ENDLEVEL', 0x1be4470, 2)...
Reading sprite 'SD_RINGBONUS'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_RINGBONUS'...
hash_insert('SD_RINGBONUS', 0x1bfc7b0, 2)...
Reading sprite 'SD_SECRETBONUS'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_SECRETBONUS'...
hash_insert('SD_SECRETBONUS', 0x1bfdbb0, 2)...
Reading sprite 'SD_TOTAL'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_TOTAL'...
hash_insert('SD_TOTAL', 0x1bfefb0, 2)...
Reading sprite 'SD_DIALOGBOX'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_DIALOGBOX'...
hash_insert('SD_DIALOGBOX', 0x1bff8b0, 2)...
Reading sprite 'SD_TITLESONIC'
load_sprite() with 2 animations and 8 frames
image_load(/usr/share/games/opensonic/images/title.png)
hash_search('images/title.png', 1) returned NULL
hash_insert('images/title.png', 0x1c11f30, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_TITLESONIC'...
hash_insert('SD_TITLESONIC', 0x1c11e30, 2)...
Reading sprite 'SD_TITLESONICBG'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/title.png)
load_sprite() ok!
Registering sprite 'SD_TITLESONICBG'...
hash_insert('SD_TITLESONICBG', 0x1c12db0, 2)...
Reading sprite 'SD_TITLEGAMENAME'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/title.png)
load_sprite() ok!
Registering sprite 'SD_TITLEGAMENAME'...
hash_insert('SD_TITLEGAMENAME', 0x1c12f00, 2)...
Reading sprite 'SD_TITLEFOOT'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/title.png)
load_sprite() ok!
Registering sprite 'SD_TITLEFOOT'...
hash_insert('SD_TITLEFOOT', 0x1c7e1b0, 2)...
Reading sprite 'SD_DANGER'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_DANGER'...
hash_insert('SD_DANGER', 0x1c7e4b0, 2)...
Reading sprite 'SD_SPIKES'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_SPIKES'...
hash_insert('SD_SPIKES', 0x1c7ef00, 2)...
Reading sprite 'SD_DNADOOR'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_DNADOOR'...
hash_insert('SD_DNADOOR', 0x1c801d0, 2)...
Reading sprite 'SD_FIREBALL'
load_sprite() with 3 animations and 6 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_FIREBALL'...
hash_insert('SD_FIREBALL', 0x1d915b0, 2)...
Reading sprite 'SD_CONFIRMBOX'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_CONFIRMBOX'...
hash_insert('SD_CONFIRMBOX', 0x1d954c0, 2)...
Reading sprite 'FT_FONT0'
load_sprite() with 1 animations and 52 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT0'...
hash_insert('FT_FONT0', 0x1da0940, 2)...
Reading sprite 'FT_FONT1'
load_sprite() with 1 animations and 52 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT1'...
hash_insert('FT_FONT1', 0x1da6450, 2)...
Reading sprite 'FT_FONT2'
load_sprite() with 1 animations and 11 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT2'...
hash_insert('FT_FONT2', 0x1dabef0, 2)...
Reading sprite 'FT_FONT3'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT3'...
hash_insert('FT_FONT3', 0x1dada20, 2)...
Reading sprite 'FT_FONT4'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT4'...
hash_insert('FT_FONT4', 0x1db7640, 2)...
Reading sprite 'FT_FONT5'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT5'...
hash_insert('FT_FONT5', 0x1dc3ba0, 2)...
Reading sprite 'FT_FONT6'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT6'...
hash_insert('FT_FONT6', 0x1dd0100, 2)...
Reading sprite 'FT_FONT7'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT7'...
hash_insert('FT_FONT7', 0x1ddc660, 2)...
Reading sprite 'FT_FONT8'
load_sprite() with 1 animations and 224 frames
image_load(/usr/share/games/opensonic/images/font.png)
hash_search('images/font.png', 1) returned NULL
hash_insert('images/font.png', 0x1de96a0, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'FT_FONT8'...
hash_insert('FT_FONT8', 0x1de8ee0, 2)...
Reading sprite 'FT_FONT9'
load_sprite() with 1 animations and 112 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT9'...
hash_insert('FT_FONT9', 0x1e08830, 2)...
spritedata_load() ok!
font_init()
font_init() ok
Initializing the language module
lang_loadfile("languages/english.lng")...
hash_search('LANG_LANGUAGE', 5) returned NULL
hash_insert('LANG_LANGUAGE', 0x1e2a510, 5)...
hash_search('LANG_AUTHOR', 5) returned NULL
hash_insert('LANG_AUTHOR', 0x1e2a920, 5)...
hash_search('LANG_LASTUPDATE', 5) returned NULL
hash_insert('LANG_LASTUPDATE', 0x1e2ad30, 5)...
hash_search('LANG_COMPATIBILITY', 5) returned NULL
hash_insert('LANG_COMPATIBILITY', 0x1e2b140, 5)...
hash_search('COLOR_P1', 5) returned NULL
hash_insert('COLOR_P1', 0x1e2b550, 5)...
hash_search('COLOR_P2', 5) returned NULL
hash_insert('COLOR_P2', 0x1e2b960, 5)...
hash_search('COLOR_P3', 5) returned NULL
hash_insert('COLOR_P3', 0x1e2bd70, 5)...
hash_search('COLOR_INPUT', 5) returned NULL
hash_insert('COLOR_INPUT', 0x1e2c180, 5)...
hash_search('COLOR_SPECIAL', 5) returned NULL
hash_insert('COLOR_SPECIAL', 0x1e2c590, 5)...
hash_search('MENU_1PGAME', 5) returned NULL
hash_insert('MENU_1PGAME', 0x1e2c9a0, 5)...
hash_search('MENU_TUTORIAL', 5) returned NULL
hash_insert('MENU_TUTORIAL', 0x1e2cdb0, 5)...
hash_search('MENU_CUSTOMQUESTS', 5) returned NULL
hash_insert('MENU_CUSTOMQUESTS', 0x1e2d1c0, 5)...
hash_search('MENU_OPTIONS', 5) returned NULL
hash_insert('MENU_OPTIONS', 0x1e2d5d0, 5)...
hash_search('MENU_EXIT', 5) returned NULL
hash_insert('MENU_EXIT', 0x1e2d9e0, 5)...
hash_search('OPTIONS_TITLE', 5) returned NULL
hash_insert('OPTIONS_TITLE', 0x1e2ddf0, 5)...
hash_search('OPTIONS_YES', 5) returned NULL
hash_insert('OPTIONS_YES', 0x1e2e200, 5)...
hash_search('OPTIONS_NO', 5) returned NULL
hash_insert('OPTIONS_NO', 0x1e2e610, 5)...
hash_search('OPTIONS_GRAPHICS', 5) returned NULL
hash_insert('OPTIONS_GRAPHICS', 0x1e2ea20, 5)...
hash_search('OPTIONS_FULLSCREEN', 5) returned NULL
hash_insert('OPTIONS_FULLSCREEN', 0x1e2ee30, 5)...
hash_search('OPTIONS_RESOLUTION', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION', 0x1e2f240, 5)...
hash_search('OPTIONS_RESOLUTION_OPT1', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION_OPT1', 0x1e2f650, 5)...
hash_search('OPTIONS_RESOLUTION_OPT2', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION_OPT2', 0x1e2fa60, 5)...
hash_search('OPTIONS_RESOLUTION_OPT3', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION_OPT3', 0x1e2fe70, 5)...
hash_search('OPTIONS_SMOOTHGFX', 5) returned NULL
hash_insert('OPTIONS_SMOOTHGFX', 0x1e30280, 5)...
hash_search('OPTIONS_FPS', 5) returned NULL
hash_insert('OPTIONS_FPS', 0x1e30690, 5)...
hash_search('OPTIONS_GAME', 5) returned NULL
hash_insert('OPTIONS_GAME', 0x1e30aa0, 5)...
hash_search('OPTIONS_LANGUAGE', 5) returned NULL
hash_insert('OPTIONS_LANGUAGE', 0x1e30eb0, 5)...
hash_search('OPTIONS_STAGESELECT', 5) returned NULL
hash_insert('OPTIONS_STAGESELECT', 0x1e312c0, 5)...
hash_search('OPTIONS_CREDITS', 5) returned NULL
hash_insert('OPTIONS_CREDITS', 0x1e316d0, 5)...
hash_search('OPTIONS_BACK', 5) returned NULL
hash_insert('OPTIONS_BACK', 0x1e31ae0, 5)...
hash_search('STAGESELECT_TITLE', 5) returned NULL
hash_insert('STAGESELECT_TITLE', 0x1e31ef0, 5)...
hash_search('STAGESELECT_MSG', 5) returned NULL
hash_insert('STAGESELECT_MSG', 0x1e32300, 5)...
hash_search('STAGESELECT_PAGE', 5) returned NULL
hash_insert('STAGESELECT_PAGE', 0x1e32710, 5)...
hash_search('STAGESELECT_ACT', 5) returned NULL
hash_insert('STAGESELECT_ACT', 0x1e32b20, 5)...
hash_search('CREDITS_TITLE', 5) returned NULL
hash_insert('CREDITS_TITLE', 0x1e32f30, 5)...
hash_search('CREDITS_KEY', 5) returned NULL
hash_insert('CREDITS_KEY', 0x1e33340, 5)...
hash_search('CREDITS_PROGRAMMING', 5) returned NULL
hash_insert('CREDITS_PROGRAMMING', 0x1e33750, 5)...
hash_search('CREDITS_ART', 5) returned NULL
hash_insert('CREDITS_ART', 0x1e33b60, 5)...
hash_search('CREDITS_MUSICS', 5) returned NULL
hash_insert('CREDITS_MUSICS', 0x1e33f70, 5)...
hash_search('CREDITS_LEVELDESIGN', 5) returned NULL
hash_insert('CREDITS_LEVELDESIGN', 0x1e34380, 5)...
hash_search('CREDITS_COMMUNITY', 5) returned NULL
hash_insert('CREDITS_COMMUNITY', 0x1e34790, 5)...
hash_search('CREDITS_PORTING', 5) returned NULL
hash_insert('CREDITS_PORTING', 0x1e34ba0, 5)...
hash_search('CREDITS_TRANSLATIONS', 5) returned NULL
hash_insert('CREDITS_TRANSLATIONS', 0x1e34fb0, 5)...
hash_search('CREDITS_RETIRED', 5) returned NULL
hash_insert('CREDITS_RETIRED', 0x1e353c0, 5)...
hash_search('CREDITS_THANKS', 5) returned NULL
hash_insert('CREDITS_THANKS', 0x1e357d0, 5)...
hash_search('CREDITS_ALEXANDRE', 5) returned NULL
hash_insert('CREDITS_ALEXANDRE', 0x1e35be0, 5)...
hash_search('CREDITS_DI', 5) returned NULL
hash_insert('CREDITS_DI', 0x1e35ff0, 5)...
hash_search('CREDITS_NEOBLAST', 5) returned NULL
hash_insert('CREDITS_NEOBLAST', 0x1e36400, 5)...
hash_search('CREDITS_LAINZ', 5) returned NULL
hash_insert('CREDITS_LAINZ', 0x1e36810, 5)...
hash_search('CREDITS_ARTHURBLOT', 5) returned NULL
hash_insert('CREDITS_ARTHURBLOT', 0x1e36c20, 5)...
hash_search('CREDITS_REIMUND', 5) returned NULL
hash_insert('CREDITS_REIMUND', 0x1e37030, 5)...
hash_search('CREDITS_SZYMON', 5) returned NULL
hash_insert('CREDITS_SZYMON', 0x1e37440, 5)...
hash_search('CREDITS_TOMIRES', 5) returned NULL
hash_insert('CREDITS_TOMIRES', 0x1e37850, 5)...
hash_search('CREDITS_BASTIAN', 5) returned NULL
hash_insert('CREDITS_BASTIAN', 0x1e37c60, 5)...
hash_search('MENU_CQ_SELECT', 5) returned NULL
hash_insert('MENU_CQ_SELECT', 0x1e38070, 5)...
hash_search('MENU_CQ_BACK', 5) returned NULL
hash_insert('MENU_CQ_BACK', 0x1e38480, 5)...
hash_search('MENU_CQ_INFO', 5) returned NULL
hash_insert('MENU_CQ_INFO', 0x1e38890, 5)...
hash_search('MENU_CQ_TUTORIAL', 5) returned NULL
hash_insert('MENU_CQ_TUTORIAL', 0x1e38ca0, 5)...
hash_search('MENU_CQ_SUPERBOSSES', 5) returned NULL
hash_insert('MENU_CQ_SUPERBOSSES', 0x1e390b0, 5)...
hash_search('QUESTCLEARED_TITLE', 5) returned NULL
hash_insert('QUESTCLEARED_TITLE', 0x1e394c0, 5)...
hash_search('QUESTCLEARED_TEXT', 5) returned NULL
hash_insert('QUESTCLEARED_TEXT', 0x1e398d0, 5)...
hash_search('ENDOFDEMO_TITLE', 5) returned NULL
hash_insert('ENDOFDEMO_TITLE', 0x1e39ce0, 5)...
hash_search('ENDOFDEMO_TEXT', 5) returned NULL
hash_insert('ENDOFDEMO_TEXT', 0x1e3a0f0, 5)...
hash_search('BONUSMSG_TITLE', 5) returned NULL
hash_insert('BONUSMSG_TITLE', 0x1e3a500, 5)...
hash_search('BONUSMSG_TEXT', 5) returned NULL
hash_insert('BONUSMSG_TEXT', 0x1e3a910, 5)...
hash_search('CBOX_QUIT_QUESTION', 5) returned NULL
hash_insert('CBOX_QUIT_QUESTION', 0x1e3ad20, 5)...
hash_search('CBOX_QUIT_OPTION1', 5) returned NULL
hash_insert('CBOX_QUIT_OPTION1', 0x1e3b130, 5)...
hash_search('CBOX_QUIT_OPTION2', 5) returned NULL
hash_insert('CBOX_QUIT_OPTION2', 0x1e3b540, 5)...
hash_search('INPUT_KEYB_DIRECTIONAL', 5) returned NULL
hash_insert('INPUT_KEYB_DIRECTIONAL', 0x1e3b950, 5)...
hash_search('INPUT_KEYB_LEFT', 5) returned NULL
hash_insert('INPUT_KEYB_LEFT', 0x1e3bd60, 5)...
hash_search('INPUT_KEYB_RIGHT', 5) returned NULL
hash_insert('INPUT_KEYB_RIGHT', 0x1e3c170, 5)...
hash_search('INPUT_KEYB_UP', 5) returned NULL
hash_insert('INPUT_KEYB_UP', 0x1e3c580, 5)...
hash_search('INPUT_KEYB_DOWN', 5) returned NULL
hash_insert('INPUT_KEYB_DOWN', 0x1e3c990, 5)...
hash_search('INPUT_KEYB_FIRE1', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE1', 0x1e3cda0, 5)...
hash_search('INPUT_KEYB_FIRE2', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE2', 0x1e3d1b0, 5)...
hash_search('INPUT_KEYB_FIRE3', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE3', 0x1e3d5c0, 5)...
hash_search('INPUT_KEYB_FIRE4', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE4', 0x1e3d9d0, 5)...
hash_search('INPUT_JOY_DIRECTIONAL', 5) returned NULL
hash_insert('INPUT_JOY_DIRECTIONAL', 0x1e3dde0, 5)...
hash_search('INPUT_JOY_LEFT', 5) returned NULL
hash_insert('INPUT_JOY_LEFT', 0x1e3e1f0, 5)...
hash_search('INPUT_JOY_RIGHT', 5) returned NULL
hash_insert('INPUT_JOY_RIGHT', 0x1e3e600, 5)...
hash_search('INPUT_JOY_UP', 5) returned NULL
hash_insert('INPUT_JOY_UP', 0x1e3ea10, 5)...
hash_search('INPUT_JOY_DOWN', 5) returned NULL
hash_insert('INPUT_JOY_DOWN', 0x1e3ee20, 5)...
hash_search('INPUT_JOY_FIRE1', 5) returned NULL
hash_insert('INPUT_JOY_FIRE1', 0x1e3f230, 5)...
hash_search('INPUT_JOY_FIRE2', 5) returned NULL
hash_insert('INPUT_JOY_FIRE2', 0x1e3f640, 5)...
hash_search('INPUT_JOY_FIRE3', 5) returned NULL
hash_insert('INPUT_JOY_FIRE3', 0x1e3fa50, 5)...
hash_search('INPUT_JOY_FIRE4', 5) returned NULL
hash_insert('INPUT_JOY_FIRE4', 0x1e3fe60, 5)...
hash_search('TUTORIAL_1_TITLE_0', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_0', 0x1e40270, 5)...
hash_search('TUTORIAL_1_MSG_0', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_0', 0x1e40680, 5)...
hash_search('TUTORIAL_1_TITLE_1', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_1', 0x1e40a90, 5)...
hash_search('TUTORIAL_1_MSG_1', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_1', 0x1e40ea0, 5)...
hash_search('TUTORIAL_1_TITLE_2', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_2', 0x1e412b0, 5)...
hash_search('TUTORIAL_1_MSG_2', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_2', 0x1e416c0, 5)...
hash_search('TUTORIAL_1_TITLE_3', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_3', 0x1e41ad0, 5)...
hash_search('TUTORIAL_1_MSG_3', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_3', 0x1e41ee0, 5)...
hash_search('TUTORIAL_1_TITLE_4', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_4', 0x1e422f0, 5)...
hash_search('TUTORIAL_1_MSG_4', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_4', 0x1e42700, 5)...
hash_search('TUTORIAL_1_TITLE_5', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_5', 0x1e42b10, 5)...
hash_search('TUTORIAL_1_MSG_5', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_5', 0x1e42f20, 5)...
hash_search('TUTORIAL_2_TITLE_0', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_0', 0x1e43330, 5)...
hash_search('TUTORIAL_2_MSG_0', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_0', 0x1e43740, 5)...
hash_search('TUTORIAL_2_TITLE_1', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_1', 0x1e43b50, 5)...
hash_search('TUTORIAL_2_MSG_1', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_1', 0x1e43f60, 5)...
hash_search('TUTORIAL_2_TITLE_2', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_2', 0x1e44370, 5)...
hash_search('TUTORIAL_2_MSG_2', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_2', 0x1e44780, 5)...
hash_search('TUTORIAL_2_TITLE_3', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_3', 0x1e44b90, 5)...
hash_search('TUTORIAL_2_MSG_3', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_3', 0x1e44fa0, 5)...
hash_search('BOZ_1_TITLE_0', 5) returned NULL
hash_insert('BOZ_1_TITLE_0', 0x1e453b0, 5)...
hash_search('BOZ_1_MSG_0', 5) returned NULL
hash_insert('BOZ_1_MSG_0', 0x1e457c0, 5)...
hash_search('BOZ_1_TITLE_1', 5) returned NULL
hash_insert('BOZ_1_TITLE_1', 0x1e45bd0, 5)...
hash_search('BOZ_1_MSG_1', 5) returned NULL
hash_insert('BOZ_1_MSG_1', 0x1e45fe0, 5)...
hash_search('BOZ_1_TITLE_2', 5) returned NULL
hash_insert('BOZ_1_TITLE_2', 0x1e463f0, 5)...
hash_search('BOZ_1_MSG_2', 5) returned NULL
hash_insert('BOZ_1_MSG_2', 0x1e46800, 5)...
hash_search('BOZ_1_TITLE_3', 5) returned NULL
hash_insert('BOZ_1_TITLE_3', 0x1e46c10, 5)...
hash_search('BOZ_1_MSG_3', 5) returned NULL
hash_insert('BOZ_1_MSG_3', 0x1e47020, 5)...
hash_search('BOZ_1_TITLE_4', 5) returned NULL
hash_insert('BOZ_1_TITLE_4', 0x1e47430, 5)...
hash_search('BOZ_1_MSG_4', 5) returned NULL
hash_insert('BOZ_1_MSG_4', 0x1e47840, 5)...
hash_search('BOZ_1_TITLE_5', 5) returned NULL
hash_insert('BOZ_1_TITLE_5', 0x1e47c50, 5)...
hash_search('BOZ_1_MSG_5', 5) returned NULL
hash_insert('BOZ_1_MSG_5', 0x1e48060, 5)...
hash_search('BOZ_3_TITLE_0', 5) returned NULL
hash_insert('BOZ_3_TITLE_0', 0x1e48470, 5)...
hash_search('BOZ_3_MSG_0', 5) returned NULL
hash_insert('BOZ_3_MSG_0', 0x1e48880, 5)...
hash_search('EP_1_TITLE_0', 5) returned NULL
hash_insert('EP_1_TITLE_0', 0x1e48c90, 5)...
hash_search('EP_1_MSG_0', 5) returned NULL
hash_insert('EP_1_MSG_0', 0x1e490a0, 5)...
hash_search('EP_2_TITLE_0', 5) returned NULL
hash_insert('EP_2_TITLE_0', 0x1e494b0, 5)...
hash_search('EP_2_MSG_0', 5) returned NULL
hash_insert('EP_2_MSG_0', 0x1e498c0, 5)...
hash_search('MBOZ_1_TITLE_0', 5) returned NULL
hash_insert('MBOZ_1_TITLE_0', 0x1e49cd0, 5)...
hash_search('MBOZ_1_MSG_0', 5) returned NULL
hash_insert('MBOZ_1_MSG_0', 0x1e4a0e0, 5)...
hash_search('MEP_2_TITLE_0', 5) returned NULL
hash_insert('MEP_2_TITLE_0', 0x1e4a4f0, 5)...
hash_search('MEP_2_MSG_0', 5) returned NULL
hash_insert('MEP_2_MSG_0', 0x1e4a900, 5)...
hash_search('PROTOTYPE_1_TITLE_0', 5) returned NULL
hash_insert('PROTOTYPE_1_TITLE_0', 0x1e4ad10, 5)...
hash_search('PROTOTYPE_1_MSG_0', 5) returned NULL
hash_insert('PROTOTYPE_1_MSG_0', 0x1e4b120, 5)...
hash_search('TESTZONE_1_TITLE_0', 5) returned NULL
hash_insert('TESTZONE_1_TITLE_0', 0x1e4b530, 5)...
hash_search('TESTZONE_1_MSG_0', 5) returned NULL
hash_insert('TESTZONE_1_MSG_0', 0x1e4b940, 5)...
lang_loadfile("languages/english.lng") ok!
lang_init() ok!
lang_loadfile("languages/english.lng")...
lang_loadfile("languages/english.lng") ok!
scenestack_push(0x152d8c0)
image_load(/usr/share/games/opensonic/images/intro.png)
hash_search('images/intro.png', 1) returned NULL
hash_insert('images/intro.png', 0x1e0a310, 1)...
image_load() ok
scenestack_push() ok
scenestack_pop()
scenestack_pop() ok
scenestack_push(0x152ef70)
image_load(/usr/share/games/opensonic/images/sourcecode.png)
hash_search('images/sourcecode.png', 1) returned NULL
hash_insert('images/sourcecode.png', 0x151daf0, 1)...
image_load() ok
load_quest_list()
load_quest('/usr/share/games/opensonic/quests/superbosses.qst')
Reading quest "/usr/share/games/opensonic/quests/superbosses.qst"...
image_load(/usr/share/games/opensonic/images/quest_superbosses.png)
hash_search('images/quest_superbosses.png', 1) returned NULL
hash_insert('images/quest_superbosses.png', 0x151dab0, 1)...
image_load() ok
ok!
load_quest('/usr/share/games/opensonic/quests/extra.qst')
Reading quest "/usr/share/games/opensonic/quests/extra.qst"...
image_load(/usr/share/games/opensonic/images/quest_extra.png)
hash_search('images/quest_extra.png', 1) returned NULL
hash_insert('images/quest_extra.png', 0x1e98590, 1)...
image_load() ok
ok!
load_quest('/usr/share/games/opensonic/quests/tutorial.qst')
Reading quest "/usr/share/games/opensonic/quests/tutorial.qst"...
image_load(/usr/share/games/opensonic/images/quest_tutorial.png)
hash_search('images/quest_tutorial.png', 1) returned NULL
hash_insert('images/quest_tutorial.png', 0x1fa58e0, 1)...
image_load() ok
ok!
3 quests found.
music_load('/usr/share/games/opensonic/musics/title.ogg')
hash_search('musics/title.ogg', 3) returned NULL
hash_insert('musics/title.ogg', 0x1e2a480, 3)...
music_load() ok
scenestack_push() ok
hash_search('samples/choose.wav', 4) returned NULL
sound_load('/usr/share/games/opensonic/samples/choose.wav')
hash_insert('samples/choose.wav', 0x1ea2b20, 4)...
hash_search('samples/select.wav', 4) returned NULL
sound_load('/usr/share/games/opensonic/samples/select.wav')
hash_insert('samples/select.wav', 0x21a5300, 4)...
scenestack_pop()
release_quest_list()
scenestack_pop() ok
scenestack_push(0x1526950)
image_load(/usr/share/games/opensonic/images/squarebg.png)
hash_search('images/squarebg.png', 1) returned NULL
hash_insert('images/squarebg.png', 0x21a53b0, 1)...
image_load() ok
scenestack_push() ok
music_load('/usr/share/games/opensonic/musics/options.ogg')
hash_search('musics/options.ogg', 3) returned NULL
hash_insert('musics/options.ogg', 0x1fe6d50, 3)...
music_load() ok
video_changemode(1,0,0)
video_changemode() ok
Offline
I also applied your patch (make clean is executed automatically before each compilation) but it still crashes
korn@ubuntu:~/opensonic$ opensonic --tiny
*** glibc detected *** ./opensonic: double free or corruption (out): 0x000000000233a9d0 ***
======= Backtrace: =========
/lib/libc.so.6[0x7f0ee8b47dd6]
/lib/libc.so.6(cfree+0x6c)[0x7f0ee8b4c74c]
/usr/lib/liballeg.so.4.2(destroy_bitmap+0x87)[0x7f0ee9b9ab07]
./opensonic(image_destroy+0x11)[0x43ed81]
./opensonic(video_render+0x205)[0x43fbf5]
./opensonic(main+0x3aa)[0x42c10a]
/lib/libc.so.6(__libc_start_main+0xfd)[0x7f0ee8af0abd]
./opensonic[0x40acd9]
======= Memory map: ========
00400000-0045c000 r-xp 00000000 08:02 226315 /usr/share/games/opensonic/opensonic
0065b000-0065c000 r--p 0005b000 08:02 226315 /usr/share/games/opensonic/opensonic
0065c000-0065e000 rw-p 0005c000 08:02 226315 /usr/share/games/opensonic/opensonic
0065e000-006a2000 rw-p 00000000 00:00 0
017ec000-02487000 rw-p 00000000 00:00 0 [heap]
7f0ed4000000-7f0ed4021000 rw-p 00000000 00:00 0
7f0ed4021000-7f0ed8000000 ---p 00000000 00:00 0
7f0ed8893000-7f0ed8894000 ---p 00000000 00:00 0
7f0ed8894000-7f0ed9094000 rwxp 00000000 00:00 0
7f0ed9094000-7f0edd095000 rw-s 00000000 00:11 83887 /dev/shm/pulse-shm-2720571841
7f0edd095000-7f0edd09a000 r-xp 00000000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7f0edd09a000-7f0edd299000 ---p 00005000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7f0edd299000-7f0edd29a000 r--p 00004000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7f0edd29a000-7f0edd29b000 rw-p 00005000 08:02 105743 /usr/lib/alsa-lib/libasound_module_ctl_pulse.so
7f0edd29b000-7f0edd29c000 ---p 00000000 00:00 0
7f0edd29c000-7f0edda9c000 rwxp 00000000 00:00 0
7f0ee152d000-7f0ee1543000 r-xp 00000000 08:02 13380 /lib/libgcc_s.so.1
7f0ee1543000-7f0ee1742000 ---p 00016000 08:02 13380 /lib/libgcc_s.so.1
7f0ee1742000-7f0ee1743000 r--p 00015000 08:02 13380 /lib/libgcc_s.so.1
7f0ee1743000-7f0ee1744000 rw-p 00016000 08:02 13380 /lib/libgcc_s.so.1
7f0ee1744000-7f0ee1a59000 rw-p 00000000 00:00 0
7f0ee1a5a000-7f0ee1a9d000 rw-p 00000000 00:00 0
7f0ee1a9d000-7f0ee1aa2000 r-xp 00000000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7f0ee1aa2000-7f0ee1ca2000 ---p 00005000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7f0ee1ca2000-7f0ee1ca3000 r--p 00005000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7f0ee1ca3000-7f0ee1ca4000 rw-p 00006000 08:02 105744 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so
7f0ee1ca4000-7f0ee1cbe000 r-xp 00000000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7f0ee1cbe000-7f0ee1ebd000 ---p 0001a000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7f0ee1ebd000-7f0ee1ebe000 r--p 00019000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7f0ee1ebe000-7f0ee207e000 rw-p 0001a000 08:02 38668 /usr/lib/libvorbisenc.so.2.0.3
7f0ee207e000-7f0ee20c7000 r-xp 00000000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7f0ee20c7000-7f0ee22c7000 ---p 00049000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7f0ee22c7000-7f0ee22c8000 r--p 00049000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7f0ee22c8000-7f0ee22c9000 rw-p 0004a000 08:02 48548 /usr/lib/libFLAC.so.8.2.0
7f0ee22c9000-7f0ee22cc000 r-xp 00000000 08:02 3504 /lib/libuuid.so.1.3.0
7f0ee22cc000-7f0ee24cc000 ---p 00003000 08:02 3504 /lib/libuuid.so.1.3.0
7f0ee24cc000-7f0ee24cd000 r--p 00003000 08:02 3504 /lib/libuuid.so.1.3.0
7f0ee24cd000-7f0ee24ce000 rw-p 00004000 08:02 3504 /lib/libuuid.so.1.3.0
7f0ee24ce000-7f0ee250b000 r-xp 00000000 08:02 322 /lib/libdbus-1.so.3.4.0
7f0ee250b000-7f0ee270b000 ---p 0003d000 08:02 322 /lib/libdbus-1.so.3.4.0
7f0ee270b000-7f0ee270c000 r--p 0003d000 08:02 322 /lib/libdbus-1.so.3.4.0
7f0ee270c000-7f0ee270d000 rw-p 0003e000 08:02 322 /lib/libdbus-1.so.3.4.0
7f0ee270d000-7f0ee2769000 r-xp 00000000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7f0ee2769000-7f0ee2968000 ---p 0005c000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7f0ee2968000-7f0ee296a000 r--p 0005b000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7f0ee296a000-7f0ee296b000 rw-p 0005d000 08:02 37704 /usr/lib/libsndfile.so.1.0.20
7f0ee296b000-7f0ee296f000 rw-p 00000000 00:00 0
7f0ee296f000-7f0ee2978000 r-xp 00000000 08:02 43598 /lib/libwrap.so.0.7.6
7f0ee2978000-7f0ee2b77000 ---p 00009000 08:02 43598 /lib/libwrap.so.0.7.6
7f0ee2b77000-7f0ee2b78000 r--p 00008000 08:02 43598 /lib/libwrap.so.0.7.6
7f0ee2b78000-7f0ee2b79000 rw-p 00009000 08:02 43598 /lib/libwrap.so.0.7.6
7f0ee2b79000-7f0ee2b7a000 rw-p 00000000 00:00 0
7f0ee2b7a000-7f0ee2b7f000 r-xp 00000000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7f0ee2b7f000-7f0ee2d7f000 ---p 00005000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7f0ee2d7f000-7f0ee2d80000 r--p 00005000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7f0ee2d80000-7f0ee2d81000 rw-p 00006000 08:02 44322 /usr/lib/libXtst.so.6.1.0
7f0ee2d81000-7f0ee2d89000 r-xp 00000000 08:02 35530 /usr/lib/libSM.so.6.0.0
7f0ee2d89000-7f0ee2f88000 ---p 00008000 08:02 35530 /usr/lib/libSM.so.6.0.0
7f0ee2f88000-7f0ee2f89000 r--p 00007000 08:02 35530 /usr/lib/libSM.so.6.0.0
7f0ee2f89000-7f0ee2f8a000 rw-p 00008000 08:02 35530 /usr/lib/libSM.so.6.0.0
7f0ee2f8a000-7f0ee2fa1000 r-xp 00000000 08:02 35516 /usr/lib/libICE.so.6.3.0
7f0ee2fa1000-7f0ee31a0000 ---p 00017000 08:02 35516 /usr/lib/libICE.so.6.3.0
7f0ee31a0000-7f0ee31a1000 r--p 00016000 08:02 35516 /usr/lib/libICE.so.6.3.0
7f0ee31a1000-7f0ee31a2000 rw-p 00017000 08:02 35516 /usr/lib/libICE.so.6.3.0
7f0ee31a2000-7f0ee31a5000 rw-p 00000000 00:00 0
7f0ee31a5000-7f0ee31ef000 r-xp 00000000 08:02 29281 /usr/lib/libpulsecommon-0.9.19.so
Open Sonic version 0.1.3
logfile_init()
preferences_init()
ERROR: couldn't open preferences file for reading. file="/home/korn/.opensonic/preferences.dat"
game arguments:
argv[0]: './opensonic'
argv[1]: '--tiny'
timer_init()
video_init()
video_changemode(0,0,0)
video_changemode() ok
audio_init()
Initializing Allegro sound...
Warning: unable to install sound.
ALSA: snd_pcm_hw_params_set_format(pcm_handle, hwparams, format) : Invalid argument
Initializing DUMB...
Initializing LOGG...
audio_init() ok
input_init()
No joystick has been detected.
hash_init()
spritedata_load()...
Reading sprite 'SD_SONIC'
load_sprite() with 26 animations and 75 frames
image_load(/usr/share/games/opensonic/images/player.png)
hash_search('images/player.png', 1) returned NULL
hash_insert('images/player.png', 0x1845f00, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_SONIC'...
hash_insert('SD_SONIC', 0x1843a20, 2)...
Reading sprite 'SD_TAILS'
load_sprite() with 26 animations and 65 frames
image_load(/usr/share/games/opensonic/images/player.png)
load_sprite() ok!
Registering sprite 'SD_TAILS'...
hash_insert('SD_TAILS', 0x18d2420, 2)...
Reading sprite 'SD_KNUCKLES'
load_sprite() with 26 animations and 65 frames
image_load(/usr/share/games/opensonic/images/player.png)
load_sprite() ok!
Registering sprite 'SD_KNUCKLES'...
hash_insert('SD_KNUCKLES', 0x197aac0, 2)...
Reading sprite 'SD_ARROW'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
hash_search('images/items.png', 1) returned NULL
hash_insert('images/items.png', 0x1a228b0, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_ARROW'...
hash_insert('SD_ARROW', 0x1a227e0, 2)...
Reading sprite 'SD_RING'
load_sprite() with 2 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_RING'...
hash_insert('SD_RING', 0x1a22dc0, 2)...
Reading sprite 'SD_BLUERING'
load_sprite() with 2 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_BLUERING'...
hash_insert('SD_BLUERING', 0x1a28710, 2)...
Reading sprite 'SD_BIGRING'
load_sprite() with 1 animations and 10 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_BIGRING'...
hash_insert('SD_BIGRING', 0x1a2c620, 2)...
Reading sprite 'SD_JOAN'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
hash_search('images/baddies.png', 1) returned NULL
hash_insert('images/baddies.png', 0x1a90860, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_JOAN'...
hash_insert('SD_JOAN', 0x1a90790, 2)...
Reading sprite 'SD_FLYINGBOY'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_FLYINGBOY'...
hash_insert('SD_FLYINGBOY', 0x1a91fa0, 2)...
Reading sprite 'SD_FLYINGEYES'
load_sprite() with 1 animations and 4 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_FLYINGEYES'...
hash_insert('SD_FLYINGEYES', 0x1a92590, 2)...
Reading sprite 'SD_KLEPS'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_KLEPS'...
hash_insert('SD_KLEPS', 0x1aa54c0, 2)...
Reading sprite 'SD_GOLDFISH'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_GOLDFISH'...
hash_insert('SD_GOLDFISH', 0x1aa7010, 2)...
Reading sprite 'SD_SURPREYES'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_SURPREYES'...
hash_insert('SD_SURPREYES', 0x1aaa460, 2)...
Reading sprite 'SD_ORANJECTION'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_ORANJECTION'...
hash_insert('SD_ORANJECTION', 0x1aae5d0, 2)...
Reading sprite 'SD_ROBOXER'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_ROBOXER'...
hash_insert('SD_ROBOXER', 0x1ab0700, 2)...
Reading sprite 'SD_NAFDER'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_NAFDER'...
hash_insert('SD_NAFDER', 0x1ab4820, 2)...
Reading sprite 'SD_CHEF'
load_sprite() with 1 animations and 4 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_CHEF'...
hash_insert('SD_CHEF', 0x1abc150, 2)...
Reading sprite 'SD_SIMPLEBOSS'
load_sprite() with 3 animations and 4 frames
image_load(/usr/share/games/opensonic/images/boss.png)
hash_search('images/boss.png', 1) returned NULL
hash_insert('images/boss.png', 0x1ac4230, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_SIMPLEBOSS'...
hash_insert('SD_SIMPLEBOSS', 0x1ac4150, 2)...
Reading sprite 'SD_MECHASHADOW'
load_sprite() with 5 animations and 6 frames
image_load(/usr/share/games/opensonic/images/boss.png)
load_sprite() ok!
Registering sprite 'SD_MECHASHADOW'...
hash_insert('SD_MECHASHADOW', 0x1bd6be0, 2)...
Reading sprite 'SD_DANGPOWER'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/boss.png)
load_sprite() ok!
Registering sprite 'SD_DANGPOWER'...
hash_insert('SD_DANGPOWER', 0x1bd7a00, 2)...
Reading sprite 'SD_MAINGUI'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/gui.png)
hash_search('images/gui.png', 1) returned NULL
hash_insert('images/gui.png', 0x1bd8810, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_MAINGUI'...
hash_insert('SD_MAINGUI', 0x1bd8740, 2)...
Reading sprite 'SD_LIFEGUI'
load_sprite() with 3 animations and 3 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_LIFEGUI'...
hash_insert('SD_LIFEGUI', 0x1b71030, 2)...
Reading sprite 'SD_PAUSE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_PAUSE'...
hash_insert('SD_PAUSE', 0x1b71450, 2)...
Reading sprite 'SD_ITEMBOX'
load_sprite() with 11 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ITEMBOX'...
hash_insert('SD_ITEMBOX', 0x1b8b580, 2)...
Reading sprite 'SD_ICON'
load_sprite() with 11 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ICON'...
hash_insert('SD_ICON', 0x1b98280, 2)...
Reading sprite 'SD_GLASSES'
load_sprite() with 6 animations and 5 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_GLASSES'...
hash_insert('SD_GLASSES', 0x1caf360, 2)...
Reading sprite 'SD_SHIELD'
load_sprite() with 1 animations and 5 frames
image_load(/usr/share/games/opensonic/images/ring_shields.png)
hash_search('images/ring_shields.png', 1) returned NULL
hash_insert('images/ring_shields.png', 0x1cb0810, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_SHIELD'...
hash_insert('SD_SHIELD', 0x1cb0730, 2)...
Reading sprite 'SD_INVSTAR'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_INVSTAR'...
hash_insert('SD_INVSTAR', 0x1cb1150, 2)...
Reading sprite 'SD_LEVELOP'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_LEVELOP'...
hash_insert('SD_LEVELOP', 0x1cbb940, 2)...
Reading sprite 'SD_LEVELACT'
load_sprite() with 3 animations and 3 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_LEVELACT'...
hash_insert('SD_LEVELACT', 0x1cd9810, 2)...
Reading sprite 'SD_EXPLOSION'
load_sprite() with 2 animations and 7 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_EXPLOSION'...
hash_insert('SD_EXPLOSION', 0x1cde680, 2)...
Reading sprite 'SD_PIXEL'
load_sprite() with 4 animations and 75 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_PIXEL'...
hash_insert('SD_PIXEL', 0x1d07df0, 2)...
Reading sprite 'SD_ANIMAL'
load_sprite() with 24 animations and 36 frames
image_load(/usr/share/games/opensonic/images/animals.png)
hash_search('images/animals.png', 1) returned NULL
hash_insert('images/animals.png', 0x1d0c4e0, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_ANIMAL'...
hash_insert('SD_ANIMAL', 0x1d0c250, 2)...
Reading sprite 'SD_LOOPRIGHT'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPRIGHT'...
hash_insert('SD_LOOPRIGHT', 0x1d1ecb0, 2)...
Reading sprite 'SD_LOOPMIDDLE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPMIDDLE'...
hash_insert('SD_LOOPMIDDLE', 0x1d22160, 2)...
Reading sprite 'SD_LOOPLEFT'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPLEFT'...
hash_insert('SD_LOOPLEFT', 0x1d22bb0, 2)...
Reading sprite 'SD_LOOPNONE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPNONE'...
hash_insert('SD_LOOPNONE', 0x1d26080, 2)...
Reading sprite 'SD_LOOPFLOOR'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPFLOOR'...
hash_insert('SD_LOOPFLOOR', 0x1d29550, 2)...
Reading sprite 'SD_LOOPFLOORNONE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPFLOORNONE'...
hash_insert('SD_LOOPFLOORNONE', 0x1d2a820, 2)...
Reading sprite 'SD_LOOPFLOORTOP'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPFLOORTOP'...
hash_insert('SD_LOOPFLOORTOP', 0x1d2baf0, 2)...
Reading sprite 'SD_YELLOWSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
hash_search('images/spring_pads.png', 1) returned NULL
hash_insert('images/spring_pads.png', 0x1d2ce70, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_YELLOWSPRING'...
hash_insert('SD_YELLOWSPRING', 0x1d2cda0, 2)...
Reading sprite 'SD_REDSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
load_sprite() ok!
Registering sprite 'SD_REDSPRING'...
hash_insert('SD_REDSPRING', 0x1d2e240, 2)...
Reading sprite 'SD_RREDSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
load_sprite() ok!
Registering sprite 'SD_RREDSPRING'...
hash_insert('SD_RREDSPRING', 0x1d30ce0, 2)...
Reading sprite 'SD_LREDSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
load_sprite() ok!
Registering sprite 'SD_LREDSPRING'...
hash_insert('SD_LREDSPRING', 0x1b5ead0, 2)...
Reading sprite 'SD_SWITCH'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_SWITCH'...
hash_insert('SD_SWITCH', 0x1b60fa0, 2)...
Reading sprite 'SD_DOOR'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_DOOR'...
hash_insert('SD_DOOR', 0x1b62310, 2)...
Reading sprite 'SD_TELEPORTER'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_TELEPORTER'...
hash_insert('SD_TELEPORTER', 0x1b63f40, 2)...
Reading sprite 'SD_CHECKPOINT'
load_sprite() with 3 animations and 7 frames
image_load(/usr/share/games/opensonic/images/checkpoint_orb.png)
hash_search('images/checkpoint_orb.png', 1) returned NULL
hash_insert('images/checkpoint_orb.png', 0x1d3d660, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_CHECKPOINT'...
hash_insert('SD_CHECKPOINT', 0x1d3d570, 2)...
Reading sprite 'SD_BUMPER'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_BUMPER'...
hash_insert('SD_BUMPER', 0x1d3e930, 2)...
Reading sprite 'SD_GOAL'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_GOAL'...
hash_insert('SD_GOAL', 0x1d43290, 2)...
Reading sprite 'SD_ENDSIGN'
load_sprite() with 5 animations and 8 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ENDSIGN'...
hash_insert('SD_ENDSIGN', 0x1b6bba0, 2)...
Reading sprite 'SD_ENDLEVEL'
load_sprite() with 3 animations and 4 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ENDLEVEL'...
hash_insert('SD_ENDLEVEL', 0x1b2b660, 2)...
Reading sprite 'SD_RINGBONUS'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_RINGBONUS'...
hash_insert('SD_RINGBONUS', 0x1b2c560, 2)...
Reading sprite 'SD_SECRETBONUS'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_SECRETBONUS'...
hash_insert('SD_SECRETBONUS', 0x1b2c770, 2)...
Reading sprite 'SD_TOTAL'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_TOTAL'...
hash_insert('SD_TOTAL', 0x1b2c980, 2)...
Reading sprite 'SD_DIALOGBOX'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_DIALOGBOX'...
hash_insert('SD_DIALOGBOX', 0x1b2cb90, 2)...
Reading sprite 'SD_TITLESONIC'
load_sprite() with 2 animations and 8 frames
image_load(/usr/share/games/opensonic/images/title.png)
hash_search('images/title.png', 1) returned NULL
hash_insert('images/title.png', 0x1e74f20, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_TITLESONIC'...
hash_insert('SD_TITLESONIC', 0x1e74e20, 2)...
Reading sprite 'SD_TITLESONICBG'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/title.png)
load_sprite() ok!
Registering sprite 'SD_TITLESONICBG'...
hash_insert('SD_TITLESONICBG', 0x1fe0c00, 2)...
Reading sprite 'SD_TITLEGAMENAME'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/title.png)
load_sprite() ok!
Registering sprite 'SD_TITLEGAMENAME'...
hash_insert('SD_TITLEGAMENAME', 0x1fe1200, 2)...
Reading sprite 'SD_TITLEFOOT'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/title.png)
load_sprite() ok!
Registering sprite 'SD_TITLEFOOT'...
hash_insert('SD_TITLEFOOT', 0x1fe1650, 2)...
Reading sprite 'SD_DANGER'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_DANGER'...
hash_insert('SD_DANGER', 0x1fe1950, 2)...
Reading sprite 'SD_SPIKES'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_SPIKES'...
hash_insert('SD_SPIKES', 0x1fe23a0, 2)...
Reading sprite 'SD_DNADOOR'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_DNADOOR'...
hash_insert('SD_DNADOOR', 0x1fe3670, 2)...
Reading sprite 'SD_FIREBALL'
load_sprite() with 3 animations and 6 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_FIREBALL'...
hash_insert('SD_FIREBALL', 0x1fe7060, 2)...
Reading sprite 'SD_CONFIRMBOX'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_CONFIRMBOX'...
hash_insert('SD_CONFIRMBOX', 0x1f029e0, 2)...
Reading sprite 'FT_FONT0'
load_sprite() with 1 animations and 52 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT0'...
hash_insert('FT_FONT0', 0x1f0de60, 2)...
Reading sprite 'FT_FONT1'
load_sprite() with 1 animations and 52 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT1'...
hash_insert('FT_FONT1', 0x1f13970, 2)...
Reading sprite 'FT_FONT2'
load_sprite() with 1 animations and 11 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT2'...
hash_insert('FT_FONT2', 0x1f19410, 2)...
Reading sprite 'FT_FONT3'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT3'...
hash_insert('FT_FONT3', 0x1f1af40, 2)...
Reading sprite 'FT_FONT4'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT4'...
hash_insert('FT_FONT4', 0x1f24b60, 2)...
Reading sprite 'FT_FONT5'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT5'...
hash_insert('FT_FONT5', 0x1f310c0, 2)...
Reading sprite 'FT_FONT6'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT6'...
hash_insert('FT_FONT6', 0x1f3d620, 2)...
Reading sprite 'FT_FONT7'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT7'...
hash_insert('FT_FONT7', 0x1f49b80, 2)...
Reading sprite 'FT_FONT8'
load_sprite() with 1 animations and 224 frames
image_load(/usr/share/games/opensonic/images/font.png)
hash_search('images/font.png', 1) returned NULL
hash_insert('images/font.png', 0x1f56bc0, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'FT_FONT8'...
hash_insert('FT_FONT8', 0x1f56400, 2)...
Reading sprite 'FT_FONT9'
load_sprite() with 1 animations and 112 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT9'...
hash_insert('FT_FONT9', 0x1f75d50, 2)...
spritedata_load() ok!
font_init()
font_init() ok
Initializing the language module
lang_loadfile("languages/english.lng")...
hash_search('LANG_LANGUAGE', 5) returned NULL
hash_insert('LANG_LANGUAGE', 0x1f97a30, 5)...
hash_search('LANG_AUTHOR', 5) returned NULL
hash_insert('LANG_AUTHOR', 0x1f97e40, 5)...
hash_search('LANG_LASTUPDATE', 5) returned NULL
hash_insert('LANG_LASTUPDATE', 0x1f98250, 5)...
hash_search('LANG_COMPATIBILITY', 5) returned NULL
hash_insert('LANG_COMPATIBILITY', 0x1f98660, 5)...
hash_search('COLOR_P1', 5) returned NULL
hash_insert('COLOR_P1', 0x1f98a70, 5)...
hash_search('COLOR_P2', 5) returned NULL
hash_insert('COLOR_P2', 0x1f98e80, 5)...
hash_search('COLOR_P3', 5) returned NULL
hash_insert('COLOR_P3', 0x1f99290, 5)...
hash_search('COLOR_INPUT', 5) returned NULL
hash_insert('COLOR_INPUT', 0x1f996a0, 5)...
hash_search('COLOR_SPECIAL', 5) returned NULL
hash_insert('COLOR_SPECIAL', 0x1f99ab0, 5)...
hash_search('MENU_1PGAME', 5) returned NULL
hash_insert('MENU_1PGAME', 0x1f99ec0, 5)...
hash_search('MENU_TUTORIAL', 5) returned NULL
hash_insert('MENU_TUTORIAL', 0x1f9a2d0, 5)...
hash_search('MENU_CUSTOMQUESTS', 5) returned NULL
hash_insert('MENU_CUSTOMQUESTS', 0x1f9a6e0, 5)...
hash_search('MENU_OPTIONS', 5) returned NULL
hash_insert('MENU_OPTIONS', 0x1f9aaf0, 5)...
hash_search('MENU_EXIT', 5) returned NULL
hash_insert('MENU_EXIT', 0x1f9af00, 5)...
hash_search('OPTIONS_TITLE', 5) returned NULL
hash_insert('OPTIONS_TITLE', 0x1f9b310, 5)...
hash_search('OPTIONS_YES', 5) returned NULL
hash_insert('OPTIONS_YES', 0x1f9b720, 5)...
hash_search('OPTIONS_NO', 5) returned NULL
hash_insert('OPTIONS_NO', 0x1f9bb30, 5)...
hash_search('OPTIONS_GRAPHICS', 5) returned NULL
hash_insert('OPTIONS_GRAPHICS', 0x1f9bf40, 5)...
hash_search('OPTIONS_FULLSCREEN', 5) returned NULL
hash_insert('OPTIONS_FULLSCREEN', 0x1f9c350, 5)...
hash_search('OPTIONS_RESOLUTION', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION', 0x1f9c760, 5)...
hash_search('OPTIONS_RESOLUTION_OPT1', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION_OPT1', 0x1f9cb70, 5)...
hash_search('OPTIONS_RESOLUTION_OPT2', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION_OPT2', 0x1f9cf80, 5)...
hash_search('OPTIONS_RESOLUTION_OPT3', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION_OPT3', 0x1f9d390, 5)...
hash_search('OPTIONS_SMOOTHGFX', 5) returned NULL
hash_insert('OPTIONS_SMOOTHGFX', 0x1f9d7a0, 5)...
hash_search('OPTIONS_FPS', 5) returned NULL
hash_insert('OPTIONS_FPS', 0x1f9dbb0, 5)...
hash_search('OPTIONS_GAME', 5) returned NULL
hash_insert('OPTIONS_GAME', 0x1f9dfc0, 5)...
hash_search('OPTIONS_LANGUAGE', 5) returned NULL
hash_insert('OPTIONS_LANGUAGE', 0x1f9e3d0, 5)...
hash_search('OPTIONS_STAGESELECT', 5) returned NULL
hash_insert('OPTIONS_STAGESELECT', 0x1f9e7e0, 5)...
hash_search('OPTIONS_CREDITS', 5) returned NULL
hash_insert('OPTIONS_CREDITS', 0x1f9ebf0, 5)...
hash_search('OPTIONS_BACK', 5) returned NULL
hash_insert('OPTIONS_BACK', 0x1f9f000, 5)...
hash_search('STAGESELECT_TITLE', 5) returned NULL
hash_insert('STAGESELECT_TITLE', 0x1f9f410, 5)...
hash_search('STAGESELECT_MSG', 5) returned NULL
hash_insert('STAGESELECT_MSG', 0x1f9f820, 5)...
hash_search('STAGESELECT_PAGE', 5) returned NULL
hash_insert('STAGESELECT_PAGE', 0x1f9fc30, 5)...
hash_search('STAGESELECT_ACT', 5) returned NULL
hash_insert('STAGESELECT_ACT', 0x1fa0040, 5)...
hash_search('CREDITS_TITLE', 5) returned NULL
hash_insert('CREDITS_TITLE', 0x1fa0450, 5)...
hash_search('CREDITS_KEY', 5) returned NULL
hash_insert('CREDITS_KEY', 0x1fa0860, 5)...
hash_search('CREDITS_PROGRAMMING', 5) returned NULL
hash_insert('CREDITS_PROGRAMMING', 0x1fa0c70, 5)...
hash_search('CREDITS_ART', 5) returned NULL
hash_insert('CREDITS_ART', 0x1fa1080, 5)...
hash_search('CREDITS_MUSICS', 5) returned NULL
hash_insert('CREDITS_MUSICS', 0x1fa1490, 5)...
hash_search('CREDITS_LEVELDESIGN', 5) returned NULL
hash_insert('CREDITS_LEVELDESIGN', 0x1fa18a0, 5)...
hash_search('CREDITS_COMMUNITY', 5) returned NULL
hash_insert('CREDITS_COMMUNITY', 0x1fa1cb0, 5)...
hash_search('CREDITS_PORTING', 5) returned NULL
hash_insert('CREDITS_PORTING', 0x1fa20c0, 5)...
hash_search('CREDITS_TRANSLATIONS', 5) returned NULL
hash_insert('CREDITS_TRANSLATIONS', 0x1fa24d0, 5)...
hash_search('CREDITS_RETIRED', 5) returned NULL
hash_insert('CREDITS_RETIRED', 0x1fa28e0, 5)...
hash_search('CREDITS_THANKS', 5) returned NULL
hash_insert('CREDITS_THANKS', 0x1fa2cf0, 5)...
hash_search('CREDITS_ALEXANDRE', 5) returned NULL
hash_insert('CREDITS_ALEXANDRE', 0x1fa3100, 5)...
hash_search('CREDITS_DI', 5) returned NULL
hash_insert('CREDITS_DI', 0x1fa3510, 5)...
hash_search('CREDITS_NEOBLAST', 5) returned NULL
hash_insert('CREDITS_NEOBLAST', 0x1fa3920, 5)...
hash_search('CREDITS_LAINZ', 5) returned NULL
hash_insert('CREDITS_LAINZ', 0x1fa3d30, 5)...
hash_search('CREDITS_ARTHURBLOT', 5) returned NULL
hash_insert('CREDITS_ARTHURBLOT', 0x1fa4140, 5)...
hash_search('CREDITS_REIMUND', 5) returned NULL
hash_insert('CREDITS_REIMUND', 0x1fa4550, 5)...
hash_search('CREDITS_SZYMON', 5) returned NULL
hash_insert('CREDITS_SZYMON', 0x1fa4960, 5)...
hash_search('CREDITS_TOMIRES', 5) returned NULL
hash_insert('CREDITS_TOMIRES', 0x1fa4d70, 5)...
hash_search('CREDITS_BASTIAN', 5) returned NULL
hash_insert('CREDITS_BASTIAN', 0x1fa5180, 5)...
hash_search('MENU_CQ_SELECT', 5) returned NULL
hash_insert('MENU_CQ_SELECT', 0x1fa5590, 5)...
hash_search('MENU_CQ_BACK', 5) returned NULL
hash_insert('MENU_CQ_BACK', 0x1fa59a0, 5)...
hash_search('MENU_CQ_INFO', 5) returned NULL
hash_insert('MENU_CQ_INFO', 0x1fa5db0, 5)...
hash_search('MENU_CQ_TUTORIAL', 5) returned NULL
hash_insert('MENU_CQ_TUTORIAL', 0x1fa61c0, 5)...
hash_search('MENU_CQ_SUPERBOSSES', 5) returned NULL
hash_insert('MENU_CQ_SUPERBOSSES', 0x1fa65d0, 5)...
hash_search('QUESTCLEARED_TITLE', 5) returned NULL
hash_insert('QUESTCLEARED_TITLE', 0x1fa69e0, 5)...
hash_search('QUESTCLEARED_TEXT', 5) returned NULL
hash_insert('QUESTCLEARED_TEXT', 0x1fa6df0, 5)...
hash_search('ENDOFDEMO_TITLE', 5) returned NULL
hash_insert('ENDOFDEMO_TITLE', 0x1fa7200, 5)...
hash_search('ENDOFDEMO_TEXT', 5) returned NULL
hash_insert('ENDOFDEMO_TEXT', 0x1fa7610, 5)...
hash_search('BONUSMSG_TITLE', 5) returned NULL
hash_insert('BONUSMSG_TITLE', 0x1fa7a20, 5)...
hash_search('BONUSMSG_TEXT', 5) returned NULL
hash_insert('BONUSMSG_TEXT', 0x1fa7e30, 5)...
hash_search('CBOX_QUIT_QUESTION', 5) returned NULL
hash_insert('CBOX_QUIT_QUESTION', 0x1fa8240, 5)...
hash_search('CBOX_QUIT_OPTION1', 5) returned NULL
hash_insert('CBOX_QUIT_OPTION1', 0x1fa8650, 5)...
hash_search('CBOX_QUIT_OPTION2', 5) returned NULL
hash_insert('CBOX_QUIT_OPTION2', 0x1fa8a60, 5)...
hash_search('INPUT_KEYB_DIRECTIONAL', 5) returned NULL
hash_insert('INPUT_KEYB_DIRECTIONAL', 0x1fa8e70, 5)...
hash_search('INPUT_KEYB_LEFT', 5) returned NULL
hash_insert('INPUT_KEYB_LEFT', 0x1fa9280, 5)...
hash_search('INPUT_KEYB_RIGHT', 5) returned NULL
hash_insert('INPUT_KEYB_RIGHT', 0x1fa9690, 5)...
hash_search('INPUT_KEYB_UP', 5) returned NULL
hash_insert('INPUT_KEYB_UP', 0x1fa9aa0, 5)...
hash_search('INPUT_KEYB_DOWN', 5) returned NULL
hash_insert('INPUT_KEYB_DOWN', 0x1fa9eb0, 5)...
hash_search('INPUT_KEYB_FIRE1', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE1', 0x1faa2c0, 5)...
hash_search('INPUT_KEYB_FIRE2', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE2', 0x1faa6d0, 5)...
hash_search('INPUT_KEYB_FIRE3', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE3', 0x1faaae0, 5)...
hash_search('INPUT_KEYB_FIRE4', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE4', 0x1faaef0, 5)...
hash_search('INPUT_JOY_DIRECTIONAL', 5) returned NULL
hash_insert('INPUT_JOY_DIRECTIONAL', 0x1fab300, 5)...
hash_search('INPUT_JOY_LEFT', 5) returned NULL
hash_insert('INPUT_JOY_LEFT', 0x1fab710, 5)...
hash_search('INPUT_JOY_RIGHT', 5) returned NULL
hash_insert('INPUT_JOY_RIGHT', 0x1fabb20, 5)...
hash_search('INPUT_JOY_UP', 5) returned NULL
hash_insert('INPUT_JOY_UP', 0x1fabf30, 5)...
hash_search('INPUT_JOY_DOWN', 5) returned NULL
hash_insert('INPUT_JOY_DOWN', 0x1fac340, 5)...
hash_search('INPUT_JOY_FIRE1', 5) returned NULL
hash_insert('INPUT_JOY_FIRE1', 0x1fac750, 5)...
hash_search('INPUT_JOY_FIRE2', 5) returned NULL
hash_insert('INPUT_JOY_FIRE2', 0x1facb60, 5)...
hash_search('INPUT_JOY_FIRE3', 5) returned NULL
hash_insert('INPUT_JOY_FIRE3', 0x1facf70, 5)...
hash_search('INPUT_JOY_FIRE4', 5) returned NULL
hash_insert('INPUT_JOY_FIRE4', 0x1fad380, 5)...
hash_search('TUTORIAL_1_TITLE_0', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_0', 0x1fad790, 5)...
hash_search('TUTORIAL_1_MSG_0', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_0', 0x1fadba0, 5)...
hash_search('TUTORIAL_1_TITLE_1', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_1', 0x1fadfb0, 5)...
hash_search('TUTORIAL_1_MSG_1', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_1', 0x1fae3c0, 5)...
hash_search('TUTORIAL_1_TITLE_2', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_2', 0x1fae7d0, 5)...
hash_search('TUTORIAL_1_MSG_2', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_2', 0x1faebe0, 5)...
hash_search('TUTORIAL_1_TITLE_3', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_3', 0x1faeff0, 5)...
hash_search('TUTORIAL_1_MSG_3', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_3', 0x1faf400, 5)...
hash_search('TUTORIAL_1_TITLE_4', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_4', 0x1faf810, 5)...
hash_search('TUTORIAL_1_MSG_4', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_4', 0x1fafc20, 5)...
hash_search('TUTORIAL_1_TITLE_5', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_5', 0x1fb0030, 5)...
hash_search('TUTORIAL_1_MSG_5', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_5', 0x1fb0440, 5)...
hash_search('TUTORIAL_2_TITLE_0', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_0', 0x1fb0850, 5)...
hash_search('TUTORIAL_2_MSG_0', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_0', 0x1fb0c60, 5)...
hash_search('TUTORIAL_2_TITLE_1', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_1', 0x1fb1070, 5)...
hash_search('TUTORIAL_2_MSG_1', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_1', 0x1fb1480, 5)...
hash_search('TUTORIAL_2_TITLE_2', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_2', 0x1fb1890, 5)...
hash_search('TUTORIAL_2_MSG_2', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_2', 0x1fb1ca0, 5)...
hash_search('TUTORIAL_2_TITLE_3', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_3', 0x1fb20b0, 5)...
hash_search('TUTORIAL_2_MSG_3', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_3', 0x1fb24c0, 5)...
hash_search('BOZ_1_TITLE_0', 5) returned NULL
hash_insert('BOZ_1_TITLE_0', 0x1fb28d0, 5)...
hash_search('BOZ_1_MSG_0', 5) returned NULL
hash_insert('BOZ_1_MSG_0', 0x1fb2ce0, 5)...
hash_search('BOZ_1_TITLE_1', 5) returned NULL
hash_insert('BOZ_1_TITLE_1', 0x1fb30f0, 5)...
hash_search('BOZ_1_MSG_1', 5) returned NULL
hash_insert('BOZ_1_MSG_1', 0x1fb3500, 5)...
hash_search('BOZ_1_TITLE_2', 5) returned NULL
hash_insert('BOZ_1_TITLE_2', 0x1fb3910, 5)...
hash_search('BOZ_1_MSG_2', 5) returned NULL
hash_insert('BOZ_1_MSG_2', 0x1fb3d20, 5)...
hash_search('BOZ_1_TITLE_3', 5) returned NULL
hash_insert('BOZ_1_TITLE_3', 0x1fb4130, 5)...
hash_search('BOZ_1_MSG_3', 5) returned NULL
hash_insert('BOZ_1_MSG_3', 0x1fb4540, 5)...
hash_search('BOZ_1_TITLE_4', 5) returned NULL
hash_insert('BOZ_1_TITLE_4', 0x1fb4950, 5)...
hash_search('BOZ_1_MSG_4', 5) returned NULL
hash_insert('BOZ_1_MSG_4', 0x1fb4d60, 5)...
hash_search('BOZ_1_TITLE_5', 5) returned NULL
hash_insert('BOZ_1_TITLE_5', 0x1fb5170, 5)...
hash_search('BOZ_1_MSG_5', 5) returned NULL
hash_insert('BOZ_1_MSG_5', 0x1fb5580, 5)...
hash_search('BOZ_3_TITLE_0', 5) returned NULL
hash_insert('BOZ_3_TITLE_0', 0x1fb5990, 5)...
hash_search('BOZ_3_MSG_0', 5) returned NULL
hash_insert('BOZ_3_MSG_0', 0x1fb5da0, 5)...
hash_search('EP_1_TITLE_0', 5) returned NULL
hash_insert('EP_1_TITLE_0', 0x1fb61b0, 5)...
hash_search('EP_1_MSG_0', 5) returned NULL
hash_insert('EP_1_MSG_0', 0x1fb65c0, 5)...
hash_search('EP_2_TITLE_0', 5) returned NULL
hash_insert('EP_2_TITLE_0', 0x1fb69d0, 5)...
hash_search('EP_2_MSG_0', 5) returned NULL
hash_insert('EP_2_MSG_0', 0x1fb6de0, 5)...
hash_search('MBOZ_1_TITLE_0', 5) returned NULL
hash_insert('MBOZ_1_TITLE_0', 0x1fb71f0, 5)...
hash_search('MBOZ_1_MSG_0', 5) returned NULL
hash_insert('MBOZ_1_MSG_0', 0x1fb7600, 5)...
hash_search('MEP_2_TITLE_0', 5) returned NULL
hash_insert('MEP_2_TITLE_0', 0x1fb7a10, 5)...
hash_search('MEP_2_MSG_0', 5) returned NULL
hash_insert('MEP_2_MSG_0', 0x1fb7e20, 5)...
hash_search('PROTOTYPE_1_TITLE_0', 5) returned NULL
hash_insert('PROTOTYPE_1_TITLE_0', 0x1fb8230, 5)...
hash_search('PROTOTYPE_1_MSG_0', 5) returned NULL
hash_insert('PROTOTYPE_1_MSG_0', 0x1fb8640, 5)...
hash_search('TESTZONE_1_TITLE_0', 5) returned NULL
hash_insert('TESTZONE_1_TITLE_0', 0x1fb8a50, 5)...
hash_search('TESTZONE_1_MSG_0', 5) returned NULL
hash_insert('TESTZONE_1_MSG_0', 0x1fb8e60, 5)...
lang_loadfile("languages/english.lng") ok!
lang_init() ok!
lang_loadfile("languages/english.lng")...
lang_loadfile("languages/english.lng") ok!
scenestack_push(0x183db50)
image_load(/usr/share/games/opensonic/images/intro.png)
hash_search('images/intro.png', 1) returned NULL
hash_insert('images/intro.png', 0x1f77830, 1)...
image_load() ok
scenestack_push() ok
scenestack_pop()
scenestack_pop() ok
scenestack_push(0x183b7c0)
image_load(/usr/share/games/opensonic/images/sourcecode.png)
hash_search('images/sourcecode.png', 1) returned NULL
hash_insert('images/sourcecode.png', 0x1fe49e0, 1)...
image_load() ok
load_quest_list()
load_quest('/usr/share/games/opensonic/quests/superbosses.qst')
Reading quest "/usr/share/games/opensonic/quests/superbosses.qst"...
image_load(/usr/share/games/opensonic/images/quest_superbosses.png)
hash_search('images/quest_superbosses.png', 1) returned NULL
hash_insert('images/quest_superbosses.png', 0x1fd00c0, 1)...
image_load() ok
ok!
load_quest('/usr/share/games/opensonic/quests/extra.qst')
Reading quest "/usr/share/games/opensonic/quests/extra.qst"...
image_load(/usr/share/games/opensonic/images/quest_extra.png)
hash_search('images/quest_extra.png', 1) returned NULL
hash_insert('images/quest_extra.png', 0x1845430, 1)...
image_load() ok
ok!
load_quest('/usr/share/games/opensonic/quests/tutorial.qst')
Reading quest "/usr/share/games/opensonic/quests/tutorial.qst"...
image_load(/usr/share/games/opensonic/images/quest_tutorial.png)
hash_search('images/quest_tutorial.png', 1) returned NULL
hash_insert('images/quest_tutorial.png', 0x1fc9b80, 1)...
image_load() ok
ok!
3 quests found.
music_load('/usr/share/games/opensonic/musics/title.ogg')
hash_search('musics/title.ogg', 3) returned NULL
hash_insert('musics/title.ogg', 0x1fcff30, 3)...
music_load() ok
scenestack_push() ok
hash_search('samples/choose.wav', 4) returned NULL
sound_load('/usr/share/games/opensonic/samples/choose.wav')
hash_insert('samples/choose.wav', 0x23299b0, 4)...
hash_search('samples/select.wav', 4) returned NULL
sound_load('/usr/share/games/opensonic/samples/select.wav')
hash_insert('samples/select.wav', 0x2128070, 4)...
scenestack_pop()
release_quest_list()
scenestack_pop() ok
scenestack_push(0x1834fa0)
image_load(/usr/share/games/opensonic/images/squarebg.png)
hash_search('images/squarebg.png', 1) returned NULL
hash_insert('images/squarebg.png', 0x23299d0, 1)...
image_load() ok
scenestack_push() ok
music_load('/usr/share/games/opensonic/musics/options.ogg')
hash_search('musics/options.ogg', 3) returned NULL
hash_insert('musics/options.ogg', 0x216a060, 3)...
music_load() ok
video_changemode(1,0,0)
video_changemode() ok
This is the backtrace:
(gdb) bt
#0 0x00007ffff6a554b5 in raise () from /lib/libc.so.6
#1 0x00007ffff6a58f50 in abort () from /lib/libc.so.6
#2 0x00007ffff6a8dc97 in ?? () from /lib/libc.so.6
#3 0x00007ffff6a97dd6 in ?? () from /lib/libc.so.6
#4 0x00007ffff6a9c74c in free () from /lib/libc.so.6
#5 0x00007ffff7aeab07 in destroy_bitmap () from /usr/lib/liballeg.so.4.2
#6 0x000000000043ed81 in image_destroy (img=0xfe6240)
at /home/korn/opensonic/opensonic-0.1.3/src/video.c:638
#7 0x000000000043fbf5 in video_render ()
at /home/korn/opensonic/opensonic-0.1.3/src/video.c:426
#8 0x000000000042c10a in main (argc=2, argv=0x7fffffffe2f8)
at /home/korn/opensonic/opensonic-0.1.3/src/main.c:154
Last edited by bugmenot (2010-03-01 10:43:04)
Offline
Given that SzynaW's package also crashes in your system, my hypothesis is that you have a defective Allegro library installed in your system. In order to confirm or reject it, please run
opensonic --tiny --low-memory
(run SzynaW's version)
Play the game a little bit. Please send the logfile and the backtrace when/if it crashes.
Offline
I played a bit but the game did not crash.
If the library is broken that means opensonic will also be broken in Ubuntu lucid (upcoming in april) because it has the same version:
http://packages.ubuntu.com/lucid/liballegro4.2-dev
Offline
ok, then the hypothesis is rejected.
It's been a very busy week for me (university), but I'll take a look carefully on the weekend, maybe change the way things are rendered (that's where the problem lies). In the meantime, I need to know if anyone else is having the same problem. Does the game crash for someone else?
Offline
Ok, I try to find people who can confirm the crash.
Offline
Someone else has the same problem on Ubuntu 9.10:
http://pastebin.com/Tr7h0fTR
So it is not related to my system.
Offline
Delete any opensonics you have on your computer and download revision 90 directly from the subversion repository
svn co https://opensnc.svn.sourceforge.net/svnroot/opensnc/opensonic/trunk opensonic
If it crashes, send the logfile and the backtrace and describe in detail what steps you've taken in the game.
Offline
Hm, the svn does not crash.
But there seems to be a problem with the fonts:
http://www.ubuntu-pics.de/bild/45686/sc … 0mTt32.png
When I change the resolution to max the fonts are fine:
http://www.ubuntu-pics.de/bild/45687/sc … ecBR4O.png
Offline
Please send the logfile anyway (when the game gets strange)
Not just the fonts, but the entire graphics are too weird on your desktop. Never seen that before, but maybe it's related to the previous crash problem.
What's the color depth of your desktop?
[EDIT] Besides sending the logfile and the color depth, please tell us what's the output of the following C program:
#include <stdio.h>
int main()
{
printf(
"%d %d %d %d\n",
sizeof(unsigned char),
sizeof(unsigned short),
sizeof(unsigned long),
sizeof(unsigned long long)
);
return 0;
}
[EDIT 2] Also, run this from the command line:
opensonic --color-depth 24
What's the result?
Last edited by Alexandre (2010-03-08 00:51:02)
Offline
First the logfile:
Open Sonic version 0.1.3
logfile_init()
preferences_init()
ERROR: couldn't open preferences file for reading. file="/home/korn/.opensonic/preferences.dat"
game arguments:
argv[0]: './opensonic'
timer_init()
video_init()
video_changemode(1,0,0)
creating the backbuffer...
creating the window surface...
creating the auxiliary window surface...
setting up the window...
video_changemode() ok
audio_init()
Initializing Allegro sound...
Warning: unable to install sound.
ALSA: snd_pcm_hw_params_set_format(pcm_handle, hwparams, format) : Invalid argument
Initializing DUMB...
Initializing LOGG...
audio_init() ok
input_init()
No joystick has been detected.
hash_init()
spritedata_load()...
Reading sprite 'SD_SONIC'
load_sprite() with 26 animations and 75 frames
image_load(/usr/share/games/opensonic/images/player.png)
hash_search('images/player.png', 1) returned NULL
hash_insert('images/player.png', 0x1f98890, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_SONIC'...
hash_insert('SD_SONIC', 0x1fa7550, 2)...
Reading sprite 'SD_TAILS'
load_sprite() with 26 animations and 65 frames
image_load(/usr/share/games/opensonic/images/player.png)
load_sprite() ok!
Registering sprite 'SD_TAILS'...
hash_insert('SD_TAILS', 0x2035f50, 2)...
Reading sprite 'SD_KNUCKLES'
load_sprite() with 26 animations and 65 frames
image_load(/usr/share/games/opensonic/images/player.png)
load_sprite() ok!
Registering sprite 'SD_KNUCKLES'...
hash_insert('SD_KNUCKLES', 0x20de5f0, 2)...
Reading sprite 'SD_ARROW'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
hash_search('images/items.png', 1) returned NULL
hash_insert('images/items.png', 0x21863e0, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_ARROW'...
hash_insert('SD_ARROW', 0x2186310, 2)...
Reading sprite 'SD_RING'
load_sprite() with 2 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_RING'...
hash_insert('SD_RING', 0x21868d0, 2)...
Reading sprite 'SD_BLUERING'
load_sprite() with 2 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_BLUERING'...
hash_insert('SD_BLUERING', 0x218c240, 2)...
Reading sprite 'SD_BIGRING'
load_sprite() with 1 animations and 10 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_BIGRING'...
hash_insert('SD_BIGRING', 0x2190150, 2)...
Reading sprite 'SD_JOAN'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
hash_search('images/baddies.png', 1) returned NULL
hash_insert('images/baddies.png', 0x21f4390, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_JOAN'...
hash_insert('SD_JOAN', 0x21f42c0, 2)...
Reading sprite 'SD_FLYINGBOY'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_FLYINGBOY'...
hash_insert('SD_FLYINGBOY', 0x21f5ab0, 2)...
Reading sprite 'SD_FLYINGEYES'
load_sprite() with 1 animations and 4 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_FLYINGEYES'...
hash_insert('SD_FLYINGEYES', 0x21f60a0, 2)...
Reading sprite 'SD_KLEPS'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_KLEPS'...
hash_insert('SD_KLEPS', 0x22dd930, 2)...
Reading sprite 'SD_GOLDFISH'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_GOLDFISH'...
hash_insert('SD_GOLDFISH', 0x22df480, 2)...
Reading sprite 'SD_SURPREYES'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_SURPREYES'...
hash_insert('SD_SURPREYES', 0x22e28d0, 2)...
Reading sprite 'SD_ORANJECTION'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_ORANJECTION'...
hash_insert('SD_ORANJECTION', 0x22e6a40, 2)...
Reading sprite 'SD_ROBOXER'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_ROBOXER'...
hash_insert('SD_ROBOXER', 0x22e8b70, 2)...
Reading sprite 'SD_NAFDER'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_NAFDER'...
hash_insert('SD_NAFDER', 0x22ecc90, 2)...
Reading sprite 'SD_CHEF'
load_sprite() with 1 animations and 4 frames
image_load(/usr/share/games/opensonic/images/baddies.png)
load_sprite() ok!
Registering sprite 'SD_CHEF'...
hash_insert('SD_CHEF', 0x22f45c0, 2)...
Reading sprite 'SD_SIMPLEBOSS'
load_sprite() with 3 animations and 4 frames
image_load(/usr/share/games/opensonic/images/boss.png)
hash_search('images/boss.png', 1) returned NULL
hash_insert('images/boss.png', 0x22fc6a0, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_SIMPLEBOSS'...
hash_insert('SD_SIMPLEBOSS', 0x22fc5c0, 2)...
Reading sprite 'SD_MECHASHADOW'
load_sprite() with 5 animations and 6 frames
image_load(/usr/share/games/opensonic/images/boss.png)
load_sprite() ok!
Registering sprite 'SD_MECHASHADOW'...
hash_insert('SD_MECHASHADOW', 0x22fd1e0, 2)...
Reading sprite 'SD_DANGPOWER'
load_sprite() with 1 animations and 2 frames
image_load(/usr/share/games/opensonic/images/boss.png)
load_sprite() ok!
Registering sprite 'SD_DANGPOWER'...
hash_insert('SD_DANGPOWER', 0x2318d50, 2)...
Reading sprite 'SD_MAINGUI'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/gui.png)
hash_search('images/gui.png', 1) returned NULL
hash_insert('images/gui.png', 0x231a430, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_MAINGUI'...
hash_insert('SD_MAINGUI', 0x231a360, 2)...
Reading sprite 'SD_LIFEGUI'
load_sprite() with 3 animations and 3 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_LIFEGUI'...
hash_insert('SD_LIFEGUI', 0x231a930, 2)...
Reading sprite 'SD_PAUSE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_PAUSE'...
hash_insert('SD_PAUSE', 0x231c370, 2)...
Reading sprite 'SD_ITEMBOX'
load_sprite() with 11 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ITEMBOX'...
hash_insert('SD_ITEMBOX', 0x231aea0, 2)...
Reading sprite 'SD_ICON'
load_sprite() with 11 animations and 12 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ICON'...
hash_insert('SD_ICON', 0x2331220, 2)...
Reading sprite 'SD_GLASSES'
load_sprite() with 6 animations and 5 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_GLASSES'...
hash_insert('SD_GLASSES', 0x2334c80, 2)...
Reading sprite 'SD_SHIELD'
load_sprite() with 1 animations and 5 frames
image_load(/usr/share/games/opensonic/images/ring_shields.png)
hash_search('images/ring_shields.png', 1) returned NULL
hash_insert('images/ring_shields.png', 0x2336130, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_SHIELD'...
hash_insert('SD_SHIELD', 0x2336050, 2)...
Reading sprite 'SD_INVSTAR'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_INVSTAR'...
hash_insert('SD_INVSTAR', 0x236c7e0, 2)...
Reading sprite 'SD_LEVELOP'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_LEVELOP'...
hash_insert('SD_LEVELOP', 0x236d3f0, 2)...
Reading sprite 'SD_LEVELACT'
load_sprite() with 3 animations and 3 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_LEVELACT'...
hash_insert('SD_LEVELACT', 0x23591c0, 2)...
Reading sprite 'SD_EXPLOSION'
load_sprite() with 2 animations and 7 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_EXPLOSION'...
hash_insert('SD_EXPLOSION', 0x235e030, 2)...
Reading sprite 'SD_PIXEL'
load_sprite() with 4 animations and 75 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_PIXEL'...
hash_insert('SD_PIXEL', 0x23c3410, 2)...
Reading sprite 'SD_ANIMAL'
load_sprite() with 24 animations and 36 frames
image_load(/usr/share/games/opensonic/images/animals.png)
hash_search('images/animals.png', 1) returned NULL
hash_insert('images/animals.png', 0x23c7b00, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_ANIMAL'...
hash_insert('SD_ANIMAL', 0x23c7870, 2)...
Reading sprite 'SD_LOOPRIGHT'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPRIGHT'...
hash_insert('SD_LOOPRIGHT', 0x23eb490, 2)...
Reading sprite 'SD_LOOPMIDDLE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPMIDDLE'...
hash_insert('SD_LOOPMIDDLE', 0x23ee960, 2)...
Reading sprite 'SD_LOOPLEFT'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPLEFT'...
hash_insert('SD_LOOPLEFT', 0x23ef3b0, 2)...
Reading sprite 'SD_LOOPNONE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPNONE'...
hash_insert('SD_LOOPNONE', 0x23f2880, 2)...
Reading sprite 'SD_LOOPFLOOR'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPFLOOR'...
hash_insert('SD_LOOPFLOOR', 0x23f5d50, 2)...
Reading sprite 'SD_LOOPFLOORNONE'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPFLOORNONE'...
hash_insert('SD_LOOPFLOORNONE', 0x23f7020, 2)...
Reading sprite 'SD_LOOPFLOORTOP'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_LOOPFLOORTOP'...
hash_insert('SD_LOOPFLOORTOP', 0x23f82f0, 2)...
Reading sprite 'SD_YELLOWSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
hash_search('images/spring_pads.png', 1) returned NULL
hash_insert('images/spring_pads.png', 0x23f9670, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_YELLOWSPRING'...
hash_insert('SD_YELLOWSPRING', 0x23f95a0, 2)...
Reading sprite 'SD_REDSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
load_sprite() ok!
Registering sprite 'SD_REDSPRING'...
hash_insert('SD_REDSPRING', 0x23fe820, 2)...
Reading sprite 'SD_RREDSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
load_sprite() ok!
Registering sprite 'SD_RREDSPRING'...
hash_insert('SD_RREDSPRING', 0x23fdcc0, 2)...
Reading sprite 'SD_LREDSPRING'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/spring_pads.png)
load_sprite() ok!
Registering sprite 'SD_LREDSPRING'...
hash_insert('SD_LREDSPRING', 0x23fddb0, 2)...
Reading sprite 'SD_SWITCH'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_SWITCH'...
hash_insert('SD_SWITCH', 0x2425300, 2)...
Reading sprite 'SD_DOOR'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_DOOR'...
hash_insert('SD_DOOR', 0x2426670, 2)...
Reading sprite 'SD_TELEPORTER'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_TELEPORTER'...
hash_insert('SD_TELEPORTER', 0x24282a0, 2)...
Reading sprite 'SD_CHECKPOINT'
load_sprite() with 3 animations and 7 frames
image_load(/usr/share/games/opensonic/images/checkpoint_orb.png)
hash_search('images/checkpoint_orb.png', 1) returned NULL
hash_insert('images/checkpoint_orb.png', 0x2440b40, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_CHECKPOINT'...
hash_insert('SD_CHECKPOINT', 0x2440a50, 2)...
Reading sprite 'SD_BUMPER'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_BUMPER'...
hash_insert('SD_BUMPER', 0x2467270, 2)...
Reading sprite 'SD_GOAL'
load_sprite() with 2 animations and 2 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_GOAL'...
hash_insert('SD_GOAL', 0x24f17f0, 2)...
Reading sprite 'SD_ENDSIGN'
load_sprite() with 5 animations and 8 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ENDSIGN'...
hash_insert('SD_ENDSIGN', 0x24a0190, 2)...
Reading sprite 'SD_ENDLEVEL'
load_sprite() with 3 animations and 4 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_ENDLEVEL'...
hash_insert('SD_ENDLEVEL', 0x24b47b0, 2)...
Reading sprite 'SD_RINGBONUS'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_RINGBONUS'...
hash_insert('SD_RINGBONUS', 0x24b56b0, 2)...
Reading sprite 'SD_SECRETBONUS'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_SECRETBONUS'...
hash_insert('SD_SECRETBONUS', 0x24b6ab0, 2)...
Reading sprite 'SD_TOTAL'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_TOTAL'...
hash_insert('SD_TOTAL', 0x24b6cc0, 2)...
Reading sprite 'SD_DIALOGBOX'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_DIALOGBOX'...
hash_insert('SD_DIALOGBOX', 0x245c410, 2)...
Reading sprite 'SD_TITLESONIC'
load_sprite() with 2 animations and 8 frames
image_load(/usr/share/games/opensonic/images/title.png)
hash_search('images/title.png', 1) returned NULL
hash_insert('images/title.png', 0x245c960, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'SD_TITLESONIC'...
hash_insert('SD_TITLESONIC', 0x245c860, 2)...
Reading sprite 'SD_TITLESONICBG'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/title.png)
load_sprite() ok!
Registering sprite 'SD_TITLESONICBG'...
hash_insert('SD_TITLESONICBG', 0x245e160, 2)...
Reading sprite 'SD_TITLEGAMENAME'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/title.png)
load_sprite() ok!
Registering sprite 'SD_TITLEGAMENAME'...
hash_insert('SD_TITLEGAMENAME', 0x245fdc0, 2)...
Reading sprite 'SD_TITLEFOOT'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/title.png)
load_sprite() ok!
Registering sprite 'SD_TITLEFOOT'...
hash_insert('SD_TITLEFOOT', 0x24601d0, 2)...
Reading sprite 'SD_DANGER'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_DANGER'...
hash_insert('SD_DANGER', 0x24604d0, 2)...
Reading sprite 'SD_SPIKES'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_SPIKES'...
hash_insert('SD_SPIKES', 0x2460f20, 2)...
Reading sprite 'SD_DNADOOR'
load_sprite() with 1 animations and 3 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_DNADOOR'...
hash_insert('SD_DNADOOR', 0x24621f0, 2)...
Reading sprite 'SD_FIREBALL'
load_sprite() with 3 animations and 6 frames
image_load(/usr/share/games/opensonic/images/items.png)
load_sprite() ok!
Registering sprite 'SD_FIREBALL'...
hash_insert('SD_FIREBALL', 0x2465bc0, 2)...
Reading sprite 'SD_CONFIRMBOX'
load_sprite() with 1 animations and 1 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'SD_CONFIRMBOX'...
hash_insert('SD_CONFIRMBOX', 0x267d740, 2)...
Reading sprite 'FT_FONT0'
load_sprite() with 1 animations and 52 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT0'...
hash_insert('FT_FONT0', 0x2688bc0, 2)...
Reading sprite 'FT_FONT1'
load_sprite() with 1 animations and 52 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT1'...
hash_insert('FT_FONT1', 0x268e6d0, 2)...
Reading sprite 'FT_FONT2'
load_sprite() with 1 animations and 11 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT2'...
hash_insert('FT_FONT2', 0x2694170, 2)...
Reading sprite 'FT_FONT3'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT3'...
hash_insert('FT_FONT3', 0x2695ca0, 2)...
Reading sprite 'FT_FONT4'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT4'...
hash_insert('FT_FONT4', 0x269f8c0, 2)...
Reading sprite 'FT_FONT5'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT5'...
hash_insert('FT_FONT5', 0x26abe20, 2)...
Reading sprite 'FT_FONT6'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT6'...
hash_insert('FT_FONT6', 0x26b8380, 2)...
Reading sprite 'FT_FONT7'
load_sprite() with 1 animations and 30 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT7'...
hash_insert('FT_FONT7', 0x26c48e0, 2)...
Reading sprite 'FT_FONT8'
load_sprite() with 1 animations and 224 frames
image_load(/usr/share/games/opensonic/images/font.png)
hash_search('images/font.png', 1) returned NULL
hash_insert('images/font.png', 0x26d1920, 1)...
image_load() ok
load_sprite() ok!
Registering sprite 'FT_FONT8'...
hash_insert('FT_FONT8', 0x26d1160, 2)...
Reading sprite 'FT_FONT9'
load_sprite() with 1 animations and 112 frames
image_load(/usr/share/games/opensonic/images/gui.png)
load_sprite() ok!
Registering sprite 'FT_FONT9'...
hash_insert('FT_FONT9', 0x26f0ab0, 2)...
spritedata_load() ok!
font_init()
font_init() ok
Initializing the language module
lang_loadfile("languages/english.lng")...
hash_search('LANG_LANGUAGE', 5) returned NULL
hash_insert('LANG_LANGUAGE', 0x2712790, 5)...
hash_search('LANG_AUTHOR', 5) returned NULL
hash_insert('LANG_AUTHOR', 0x2712ba0, 5)...
hash_search('LANG_LASTUPDATE', 5) returned NULL
hash_insert('LANG_LASTUPDATE', 0x2712fb0, 5)...
hash_search('LANG_COMPATIBILITY', 5) returned NULL
hash_insert('LANG_COMPATIBILITY', 0x27133c0, 5)...
hash_search('COLOR_P1', 5) returned NULL
hash_insert('COLOR_P1', 0x27137d0, 5)...
hash_search('COLOR_P2', 5) returned NULL
hash_insert('COLOR_P2', 0x2713be0, 5)...
hash_search('COLOR_P3', 5) returned NULL
hash_insert('COLOR_P3', 0x2713ff0, 5)...
hash_search('COLOR_INPUT', 5) returned NULL
hash_insert('COLOR_INPUT', 0x2714400, 5)...
hash_search('COLOR_SPECIAL', 5) returned NULL
hash_insert('COLOR_SPECIAL', 0x2714810, 5)...
hash_search('MENU_1PGAME', 5) returned NULL
hash_insert('MENU_1PGAME', 0x2714c20, 5)...
hash_search('MENU_TUTORIAL', 5) returned NULL
hash_insert('MENU_TUTORIAL', 0x2715030, 5)...
hash_search('MENU_CUSTOMQUESTS', 5) returned NULL
hash_insert('MENU_CUSTOMQUESTS', 0x2715440, 5)...
hash_search('MENU_OPTIONS', 5) returned NULL
hash_insert('MENU_OPTIONS', 0x2715850, 5)...
hash_search('MENU_EXIT', 5) returned NULL
hash_insert('MENU_EXIT', 0x2715c60, 5)...
hash_search('OPTIONS_TITLE', 5) returned NULL
hash_insert('OPTIONS_TITLE', 0x2716070, 5)...
hash_search('OPTIONS_YES', 5) returned NULL
hash_insert('OPTIONS_YES', 0x2716480, 5)...
hash_search('OPTIONS_NO', 5) returned NULL
hash_insert('OPTIONS_NO', 0x2716890, 5)...
hash_search('OPTIONS_GRAPHICS', 5) returned NULL
hash_insert('OPTIONS_GRAPHICS', 0x2716ca0, 5)...
hash_search('OPTIONS_FULLSCREEN', 5) returned NULL
hash_insert('OPTIONS_FULLSCREEN', 0x27170b0, 5)...
hash_search('OPTIONS_RESOLUTION', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION', 0x27174c0, 5)...
hash_search('OPTIONS_RESOLUTION_OPT1', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION_OPT1', 0x27178d0, 5)...
hash_search('OPTIONS_RESOLUTION_OPT2', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION_OPT2', 0x2717ce0, 5)...
hash_search('OPTIONS_RESOLUTION_OPT3', 5) returned NULL
hash_insert('OPTIONS_RESOLUTION_OPT3', 0x27180f0, 5)...
hash_search('OPTIONS_SMOOTHGFX', 5) returned NULL
hash_insert('OPTIONS_SMOOTHGFX', 0x2718500, 5)...
hash_search('OPTIONS_FPS', 5) returned NULL
hash_insert('OPTIONS_FPS', 0x2718910, 5)...
hash_search('OPTIONS_GAME', 5) returned NULL
hash_insert('OPTIONS_GAME', 0x2718d20, 5)...
hash_search('OPTIONS_LANGUAGE', 5) returned NULL
hash_insert('OPTIONS_LANGUAGE', 0x2719130, 5)...
hash_search('OPTIONS_STAGESELECT', 5) returned NULL
hash_insert('OPTIONS_STAGESELECT', 0x2719540, 5)...
hash_search('OPTIONS_CREDITS', 5) returned NULL
hash_insert('OPTIONS_CREDITS', 0x2719950, 5)...
hash_search('OPTIONS_BACK', 5) returned NULL
hash_insert('OPTIONS_BACK', 0x2719d60, 5)...
hash_search('STAGESELECT_TITLE', 5) returned NULL
hash_insert('STAGESELECT_TITLE', 0x271a170, 5)...
hash_search('STAGESELECT_MSG', 5) returned NULL
hash_insert('STAGESELECT_MSG', 0x271a580, 5)...
hash_search('STAGESELECT_PAGE', 5) returned NULL
hash_insert('STAGESELECT_PAGE', 0x271a990, 5)...
hash_search('STAGESELECT_ACT', 5) returned NULL
hash_insert('STAGESELECT_ACT', 0x271ada0, 5)...
hash_search('CREDITS_TITLE', 5) returned NULL
hash_insert('CREDITS_TITLE', 0x271b1b0, 5)...
hash_search('CREDITS_KEY', 5) returned NULL
hash_insert('CREDITS_KEY', 0x271b5c0, 5)...
hash_search('CREDITS_PROGRAMMING', 5) returned NULL
hash_insert('CREDITS_PROGRAMMING', 0x271b9d0, 5)...
hash_search('CREDITS_ART', 5) returned NULL
hash_insert('CREDITS_ART', 0x271bde0, 5)...
hash_search('CREDITS_MUSICS', 5) returned NULL
hash_insert('CREDITS_MUSICS', 0x271c1f0, 5)...
hash_search('CREDITS_LEVELDESIGN', 5) returned NULL
hash_insert('CREDITS_LEVELDESIGN', 0x271c600, 5)...
hash_search('CREDITS_COMMUNITY', 5) returned NULL
hash_insert('CREDITS_COMMUNITY', 0x271ca10, 5)...
hash_search('CREDITS_PORTING', 5) returned NULL
hash_insert('CREDITS_PORTING', 0x271ce20, 5)...
hash_search('CREDITS_TRANSLATIONS', 5) returned NULL
hash_insert('CREDITS_TRANSLATIONS', 0x271d230, 5)...
hash_search('CREDITS_RETIRED', 5) returned NULL
hash_insert('CREDITS_RETIRED', 0x271d640, 5)...
hash_search('CREDITS_THANKS', 5) returned NULL
hash_insert('CREDITS_THANKS', 0x271da50, 5)...
hash_search('CREDITS_ALEXANDRE', 5) returned NULL
hash_insert('CREDITS_ALEXANDRE', 0x271de60, 5)...
hash_search('CREDITS_DI', 5) returned NULL
hash_insert('CREDITS_DI', 0x271e270, 5)...
hash_search('CREDITS_NEOBLAST', 5) returned NULL
hash_insert('CREDITS_NEOBLAST', 0x271e680, 5)...
hash_search('CREDITS_LAINZ', 5) returned NULL
hash_insert('CREDITS_LAINZ', 0x271ea90, 5)...
hash_search('CREDITS_ARTHURBLOT', 5) returned NULL
hash_insert('CREDITS_ARTHURBLOT', 0x271eea0, 5)...
hash_search('CREDITS_REIMUND', 5) returned NULL
hash_insert('CREDITS_REIMUND', 0x271f2b0, 5)...
hash_search('CREDITS_SZYMON', 5) returned NULL
hash_insert('CREDITS_SZYMON', 0x271f6c0, 5)...
hash_search('CREDITS_TOMIRES', 5) returned NULL
hash_insert('CREDITS_TOMIRES', 0x271fad0, 5)...
hash_search('CREDITS_BASTIAN', 5) returned NULL
hash_insert('CREDITS_BASTIAN', 0x271fee0, 5)...
hash_search('CREDITS_XENO', 5) returned NULL
hash_insert('CREDITS_XENO', 0x27202f0, 5)...
hash_search('MENU_CQ_SELECT', 5) returned NULL
hash_insert('MENU_CQ_SELECT', 0x2720700, 5)...
hash_search('MENU_CQ_BACK', 5) returned NULL
hash_insert('MENU_CQ_BACK', 0x2720b10, 5)...
hash_search('MENU_CQ_INFO', 5) returned NULL
hash_insert('MENU_CQ_INFO', 0x2720f20, 5)...
hash_search('MENU_CQ_TUTORIAL', 5) returned NULL
hash_insert('MENU_CQ_TUTORIAL', 0x2721330, 5)...
hash_search('MENU_CQ_SUPERBOSSES', 5) returned NULL
hash_insert('MENU_CQ_SUPERBOSSES', 0x2721740, 5)...
hash_search('QUESTCLEARED_TITLE', 5) returned NULL
hash_insert('QUESTCLEARED_TITLE', 0x2721b50, 5)...
hash_search('QUESTCLEARED_TEXT', 5) returned NULL
hash_insert('QUESTCLEARED_TEXT', 0x2721f60, 5)...
hash_search('ENDOFDEMO_TITLE', 5) returned NULL
hash_insert('ENDOFDEMO_TITLE', 0x2722370, 5)...
hash_search('ENDOFDEMO_TEXT', 5) returned NULL
hash_insert('ENDOFDEMO_TEXT', 0x2722780, 5)...
hash_search('BONUSMSG_TITLE', 5) returned NULL
hash_insert('BONUSMSG_TITLE', 0x2722b90, 5)...
hash_search('BONUSMSG_TEXT', 5) returned NULL
hash_insert('BONUSMSG_TEXT', 0x2722fa0, 5)...
hash_search('CBOX_QUIT_QUESTION', 5) returned NULL
hash_insert('CBOX_QUIT_QUESTION', 0x27233b0, 5)...
hash_search('CBOX_QUIT_OPTION1', 5) returned NULL
hash_insert('CBOX_QUIT_OPTION1', 0x27237c0, 5)...
hash_search('CBOX_QUIT_OPTION2', 5) returned NULL
hash_insert('CBOX_QUIT_OPTION2', 0x2723bd0, 5)...
hash_search('INPUT_KEYB_DIRECTIONAL', 5) returned NULL
hash_insert('INPUT_KEYB_DIRECTIONAL', 0x2723fe0, 5)...
hash_search('INPUT_KEYB_LEFT', 5) returned NULL
hash_insert('INPUT_KEYB_LEFT', 0x27243f0, 5)...
hash_search('INPUT_KEYB_RIGHT', 5) returned NULL
hash_insert('INPUT_KEYB_RIGHT', 0x2724800, 5)...
hash_search('INPUT_KEYB_UP', 5) returned NULL
hash_insert('INPUT_KEYB_UP', 0x2724c10, 5)...
hash_search('INPUT_KEYB_DOWN', 5) returned NULL
hash_insert('INPUT_KEYB_DOWN', 0x2725020, 5)...
hash_search('INPUT_KEYB_FIRE1', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE1', 0x2725430, 5)...
hash_search('INPUT_KEYB_FIRE2', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE2', 0x2725840, 5)...
hash_search('INPUT_KEYB_FIRE3', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE3', 0x2725c50, 5)...
hash_search('INPUT_KEYB_FIRE4', 5) returned NULL
hash_insert('INPUT_KEYB_FIRE4', 0x2726060, 5)...
hash_search('INPUT_JOY_DIRECTIONAL', 5) returned NULL
hash_insert('INPUT_JOY_DIRECTIONAL', 0x2726470, 5)...
hash_search('INPUT_JOY_LEFT', 5) returned NULL
hash_insert('INPUT_JOY_LEFT', 0x2726880, 5)...
hash_search('INPUT_JOY_RIGHT', 5) returned NULL
hash_insert('INPUT_JOY_RIGHT', 0x2726c90, 5)...
hash_search('INPUT_JOY_UP', 5) returned NULL
hash_insert('INPUT_JOY_UP', 0x27270a0, 5)...
hash_search('INPUT_JOY_DOWN', 5) returned NULL
hash_insert('INPUT_JOY_DOWN', 0x27274b0, 5)...
hash_search('INPUT_JOY_FIRE1', 5) returned NULL
hash_insert('INPUT_JOY_FIRE1', 0x27278c0, 5)...
hash_search('INPUT_JOY_FIRE2', 5) returned NULL
hash_insert('INPUT_JOY_FIRE2', 0x2727cd0, 5)...
hash_search('INPUT_JOY_FIRE3', 5) returned NULL
hash_insert('INPUT_JOY_FIRE3', 0x27280e0, 5)...
hash_search('INPUT_JOY_FIRE4', 5) returned NULL
hash_insert('INPUT_JOY_FIRE4', 0x27284f0, 5)...
hash_search('TUTORIAL_1_TITLE_0', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_0', 0x2728900, 5)...
hash_search('TUTORIAL_1_MSG_0', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_0', 0x2728d10, 5)...
hash_search('TUTORIAL_1_TITLE_1', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_1', 0x2729120, 5)...
hash_search('TUTORIAL_1_MSG_1', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_1', 0x2729530, 5)...
hash_search('TUTORIAL_1_TITLE_2', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_2', 0x2729940, 5)...
hash_search('TUTORIAL_1_MSG_2', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_2', 0x2729d50, 5)...
hash_search('TUTORIAL_1_TITLE_3', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_3', 0x272a160, 5)...
hash_search('TUTORIAL_1_MSG_3', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_3', 0x272a570, 5)...
hash_search('TUTORIAL_1_TITLE_4', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_4', 0x272a980, 5)...
hash_search('TUTORIAL_1_MSG_4', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_4', 0x272ad90, 5)...
hash_search('TUTORIAL_1_TITLE_5', 5) returned NULL
hash_insert('TUTORIAL_1_TITLE_5', 0x272b1a0, 5)...
hash_search('TUTORIAL_1_MSG_5', 5) returned NULL
hash_insert('TUTORIAL_1_MSG_5', 0x272b5b0, 5)...
hash_search('TUTORIAL_2_TITLE_0', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_0', 0x272b9c0, 5)...
hash_search('TUTORIAL_2_MSG_0', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_0', 0x272bdd0, 5)...
hash_search('TUTORIAL_2_TITLE_1', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_1', 0x272c1e0, 5)...
hash_search('TUTORIAL_2_MSG_1', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_1', 0x272c5f0, 5)...
hash_search('TUTORIAL_2_TITLE_2', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_2', 0x272ca00, 5)...
hash_search('TUTORIAL_2_MSG_2', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_2', 0x272ce10, 5)...
hash_search('TUTORIAL_2_TITLE_3', 5) returned NULL
hash_insert('TUTORIAL_2_TITLE_3', 0x272d220, 5)...
hash_search('TUTORIAL_2_MSG_3', 5) returned NULL
hash_insert('TUTORIAL_2_MSG_3', 0x272d630, 5)...
hash_search('BOZ_1_TITLE_0', 5) returned NULL
hash_insert('BOZ_1_TITLE_0', 0x272da40, 5)...
hash_search('BOZ_1_MSG_0', 5) returned NULL
hash_insert('BOZ_1_MSG_0', 0x272de50, 5)...
hash_search('BOZ_1_TITLE_1', 5) returned NULL
hash_insert('BOZ_1_TITLE_1', 0x272e260, 5)...
hash_search('BOZ_1_MSG_1', 5) returned NULL
hash_insert('BOZ_1_MSG_1', 0x272e670, 5)...
hash_search('BOZ_1_TITLE_2', 5) returned NULL
hash_insert('BOZ_1_TITLE_2', 0x272ea80, 5)...
hash_search('BOZ_1_MSG_2', 5) returned NULL
hash_insert('BOZ_1_MSG_2', 0x272ee90, 5)...
hash_search('BOZ_1_TITLE_3', 5) returned NULL
hash_insert('BOZ_1_TITLE_3', 0x272f2a0, 5)...
hash_search('BOZ_1_MSG_3', 5) returned NULL
hash_insert('BOZ_1_MSG_3', 0x272f6b0, 5)...
hash_search('BOZ_1_TITLE_4', 5) returned NULL
hash_insert('BOZ_1_TITLE_4', 0x272fac0, 5)...
hash_search('BOZ_1_MSG_4', 5) returned NULL
hash_insert('BOZ_1_MSG_4', 0x272fed0, 5)...
hash_search('BOZ_1_TITLE_5', 5) returned NULL
hash_insert('BOZ_1_TITLE_5', 0x27302e0, 5)...
hash_search('BOZ_1_MSG_5', 5) returned NULL
hash_insert('BOZ_1_MSG_5', 0x27306f0, 5)...
hash_search('BOZ_3_TITLE_0', 5) returned NULL
hash_insert('BOZ_3_TITLE_0', 0x2730b00, 5)...
hash_search('BOZ_3_MSG_0', 5) returned NULL
hash_insert('BOZ_3_MSG_0', 0x2730f10, 5)...
hash_search('EP_1_TITLE_0', 5) returned NULL
hash_insert('EP_1_TITLE_0', 0x2731320, 5)...
hash_search('EP_1_MSG_0', 5) returned NULL
hash_insert('EP_1_MSG_0', 0x2731730, 5)...
hash_search('EP_2_TITLE_0', 5) returned NULL
hash_insert('EP_2_TITLE_0', 0x2731b40, 5)...
hash_search('EP_2_MSG_0', 5) returned NULL
hash_insert('EP_2_MSG_0', 0x2731f50, 5)...
hash_search('MBOZ_1_TITLE_0', 5) returned NULL
hash_insert('MBOZ_1_TITLE_0', 0x2732360, 5)...
hash_search('MBOZ_1_MSG_0', 5) returned NULL
hash_insert('MBOZ_1_MSG_0', 0x2732770, 5)...
hash_search('MEP_2_TITLE_0', 5) returned NULL
hash_insert('MEP_2_TITLE_0', 0x2732b80, 5)...
hash_search('MEP_2_MSG_0', 5) returned NULL
hash_insert('MEP_2_MSG_0', 0x2732f90, 5)...
hash_search('PROTOTYPE_1_TITLE_0', 5) returned NULL
hash_insert('PROTOTYPE_1_TITLE_0', 0x27333a0, 5)...
hash_search('PROTOTYPE_1_MSG_0', 5) returned NULL
hash_insert('PROTOTYPE_1_MSG_0', 0x27337b0, 5)...
hash_search('TESTZONE_1_TITLE_0', 5) returned NULL
hash_insert('TESTZONE_1_TITLE_0', 0x2733bc0, 5)...
hash_search('TESTZONE_1_MSG_0', 5) returned NULL
hash_insert('TESTZONE_1_MSG_0', 0x2733fd0, 5)...
lang_loadfile("languages/english.lng") ok!
lang_init() ok!
lang_loadfile("languages/english.lng")...
lang_loadfile("languages/english.lng") ok!
scenestack_push(0x1f97df0)
image_load(/usr/share/games/opensonic/images/intro.png)
hash_search('images/intro.png', 1) returned NULL
hash_insert('images/intro.png', 0x26f2590, 1)...
image_load() ok
scenestack_push() ok
scenestack_pop()
scenestack_pop() ok
scenestack_push(0x1fa9400)
image_load(/usr/share/games/opensonic/images/sourcecode.png)
hash_search('images/sourcecode.png', 1) returned NULL
hash_insert('images/sourcecode.png', 0x23fd960, 1)...
image_load() ok
load_quest_list()
load_quest('/usr/share/games/opensonic/quests/superbosses.qst')
Reading quest "/usr/share/games/opensonic/quests/superbosses.qst"...
image_load(/usr/share/games/opensonic/images/quest_superbosses.png)
hash_search('images/quest_superbosses.png', 1) returned NULL
hash_insert('images/quest_superbosses.png', 0x273c650, 1)...
image_load() ok
ok!
load_quest('/usr/share/games/opensonic/quests/extra.qst')
Reading quest "/usr/share/games/opensonic/quests/extra.qst"...
image_load(/usr/share/games/opensonic/images/quest_extra.png)
hash_search('images/quest_extra.png', 1) returned NULL
hash_insert('images/quest_extra.png', 0x1f98600, 1)...
image_load() ok
ok!
load_quest('/usr/share/games/opensonic/quests/tutorial.qst')
Reading quest "/usr/share/games/opensonic/quests/tutorial.qst"...
image_load(/usr/share/games/opensonic/images/quest_tutorial.png)
hash_search('images/quest_tutorial.png', 1) returned NULL
hash_insert('images/quest_tutorial.png', 0x281f640, 1)...
image_load() ok
ok!
3 quests found.
music_load('/usr/share/games/opensonic/musics/title.ogg')
hash_search('musics/title.ogg', 3) returned NULL
hash_insert('musics/title.ogg', 0x27125e0, 3)...
music_load() ok
scenestack_push() ok
hash_search('samples/choose.wav', 4) returned NULL
sound_load('/usr/share/games/opensonic/samples/choose.wav')
hash_insert('samples/choose.wav', 0x28c7b00, 4)...
hash_search('samples/select.wav', 4) returned NULL
sound_load('/usr/share/games/opensonic/samples/select.wav')
hash_insert('samples/select.wav', 0x2a8d8e0, 4)...
scenestack_pop()
release_quest_list()
scenestack_pop() ok
Releasing the language module
lang_release() ok!
input_release()
video_release()
video_release() ok
hash_release()
audio_release()
audio_release() ok
timer_release()
logfile_release()
My color depth is 24bit.
Running with --color-depth 24 fixes the odd looking graphics and fonts.
And finally the output of the C program:
1 2 8 8
Offline
okay, update to svn revision 92. It will hopefully work for you.
Offline
Indeed. This revision fixes it.
I thank you for taking the time to fix this bug.
I am going to upload the fixed version now to playdeb.net.
Offline
That was a huge hell of crashes!
Your teacher asks you. What to answer? Say this:
"I thought the teacher is supposed to know."
Offline
Pages: 1