adventuregamestudio / ags Goto Github PK
View Code? Open in Web Editor NEWAGS editor and engine source code
License: Other
AGS editor and engine source code
License: Other
IMHO the scummvm andriod/touch developers came up with a very useful idea: every touch "movement" moves the mouse cursor relative to it's current position and not absolute to where the events originated.
Rational: it's hard to hit small things on the screen when your finger is in front of you.
This means also a single touch event for left click would generate a click even where the cursor is currently located, not where touch even originated.
A touch event with two fingers, aka right mouse click, would also not move the cursor around but just change it's appearance / action.
It probably sounds strange to those unfamiliar with this idea but it's a very practical thing.
./ags ~/games/BR5_Game_2/Barn\ Runner\ 5-2.exe
AGS: Initialize gfx
AGS: Load game data
Script link failed: Runtime error: unresolved import 'OtherRoomObjectOn'
I noticed that sometimes when I run game with fps counter on, it may be covered by some of the game objects.
For example, in the "Infinity String" main menu the "loops" counter is partially covered by animated grass.
And for some reason the counter does not show up in Resonance, at all.
There's this global variable that exists only for builds with MAC_VERSION: char dataDirectory[512];
It is being set once in main_set_gamedir() function as the current active dir, but is never used anywhere.
Was it used somehow before? Is it needed anymore?
when loading said game, the intro screen is messed up in that an actor is displayed (even inventory/action bar) and clicks interpreted as move events.
however the original game does not show an actor there, and a click is used to start or quit the game.
this bug affects both AGS here and the scummvm port i'm currently working on.
since i have no idea what's wrong, it'd help if an ags-savy person could analyze this.
this is not related to any crash / 64bit bugs.
I noticed that music stutter sometimes. Can't tell what kind of music format is that.
This happened in Ben Jordan 8 and King's Quest 2 so far (but I just did not test much games).
Does not happen when I run original game's executable (and it's quite distinctive).
It's like AGS repeats a small bit of music every 3-4 seconds.
most of them are because of unused args
if you don't use args, you can make the warning go away like this
void func(int arg) {
(void) arg; // removes the unused warning
}
Room's region collection should comply to following requirements:
(It is also possible to merge region collection with appropriate mask object at some point.)
Those collections may then be exposed as "Browseable" properties to make them readable and editable by end-user.
Those properties will need a property editor presumably derived from System.ComponentModel.Design.CollectionEditor. The default UI implementation will not fit the requirements very well, because it does not provide a way to restrict amount of added items (meaning, user may keep pressing "Add" button even though collection is at its maximal capacity, which will lead either to exceptions or other confusing behavior); it does let restrict removal of "Region 0", but I am not sure it will let prevent its re-positioning in the list. This means that the new property editor UI should be implemented too.
./ags ~/games/A\ Second\ Face/Eye\ of\ Geltz.exe
...
AGS: Starting game
AGS: Loading room 299
Shutting down Allegro due to signal #4
Illegal instruction
that's a SIGILL. apparently something tried to execute data instead of executable code.
In the "Infinity String" main menu the "New game/Load/Quit" button text is missing, if the Slovenski language was set in game config.
Buttons themselves could be clicked on.
At first I thought this is because some of my recent changes, but then I found it is also reproducible with the older "main" branch.
I made changes to how data file is found.
Tested on Windows and Linux, but I do not know if there are any differences to how it should work on PSP, Android and iOS. In particular - search in the directory.
From what I saw, PSP uses preset path (ac2game.dat), so I left it treated as a "command line parameter". Practically this means that PSP will never use any other way to look for game file. Is this correct?
(This applies to the current git version, which I compiled earlier today.)
If I try to run Trilby's Notes [1] the red and blue colour components are swapped. It actually took a while for me to realize because at first I just thought the game was set at night. This isn't a new bug - I had the same problem with the original AGS 2.7.2 back when I first tried it - but I don't know if it's an AGS bug or an Allegro bug. (Back then I ended up building a custom version of the Allegro library that would swap the colours for me. Crude but effective.)
Other than that, the game seems to work fine, except at the moment I'm not getting any music. (I'm going to try a few things before I assume that's a bug though.) But I've only played through the first scene.
./ags ~/games/eternity/Eternity.exe
Adventure Creator v3.21 Interpreter
[...]
AGS: Starting game
AGS: Loading room 0
AGS: ***** ENGINE HAS SHUTDOWN
It drew my attention that INIreadint() function (the one that reads options from config file) does not use "default value" parameter. Naturally one would assume it should return this value in case option was not found in config. However, it returns -1 in such case.
This behavior is obviously incorrect. However, if it is fixed, how that will affect reading options? I noticed there are several that (try to) use 0 as default value, but afterwards change the read results in a hacky way.
While running a game if I press the Home button or switch to a different content view I am getting errors such as this printed to the log, several times per second:
09-28 01:43:02.291: E/Adreno200-ES11(29061): <qglDrvAPI_glTexSubImage2D:2055>: GL_OUT_OF_MEMORY
Note that I have not experienced any run-time issues, but I am tracking a bug that is causing the engine to silently close occasionally (and seemingly at random). It seems that the engine is still trying to draw to the surface, even when it isn't being shown.
Earlier in the log there are several instances of a couple other errors being logged:
09-28 01:42:42.972: E/Adreno200-EGLSUB(29061): GetBackBuffer() dequeue native buffer failed: No such device
09-28 01:42:42.972: E/Adreno200-EGL(29061): <qeglDrvAPI_eglSwapBuffers:3339>: EGL_BAD_ALLOC
Can anyone shed any light on the cause (and any potential effects) of these errors? Google hasn't been much help.
In the "Two of a kind" game you control 2 characters, who can pass inventory items between each other by the use of the "Use" command. In original game the item would be removed from one character's inventory and added to another character's inventory.
As of current master branch state (3.3.0.1130) this action seem to be broken: sometimes item is removed but not added, sometimes wrong item is passed.
Original game engine version is 2.61.747.
Game may be acquired here: http://www.adventuregamestudio.co.uk/site/games/game/462/
./ags ~/games/HORIZON/Horizon.exe
...
AGS: Starting game
AGS: Loading room 1
AGS: ***** ENGINE HAS SHUTDOWN
This is reproducible ONLY in refactory branch.
On Ben Jordan 8's Main Menu screen there's an unscaled car's sprite shown at the bottom of the screen. When the game is started, the sprite hangs there for few seconds, then starts moving up, changes scaling after a moment, and moves normally afterwards.
In the original game the car is not visible until game starts, and it is scaled correctly from the very beginning.
Apprentice 2 is crashing at changing positions during the intro. When run in gdb, it always stops right at the start of the intro:
AGS: Loading room 2 Program received signal SIGSEGV, Segmentation fault. almp3_get_pos_msecs_mp3 (mp3=0x0) at libsrc/almp3/almp3.c:876 876 second = mp3->current_frame * mp3->outbytes_per_frame; (gdb) backtrace #0 almp3_get_pos_msecs_mp3 (mp3=0x0) at libsrc/almp3/almp3.c:876 #1 0x000055555569ac7c in MYSTATICMP3::get_pos (this=0x555555f66f90) at media/audio/clip_mystaticmp3.cpp:130 #2 0x0000555555654bc1 in GetMP3PosMillis () at ac/global_audio.cpp:295 #3 0x00005555556473d9 in Sc_GetMP3PosMillis (params=, param_count=) at ac/global_api.cpp:667 #4 0x00005555556a4a99 in ccInstance::Run (this=this@entry=0x555555e903b0, curpc=curpc@entry=35940) at script/cc_instance.cpp:1049 #5 0x00005555556a4ee1 in ccInstance::CallScriptFunction (this=0x555555e903b0, funcname=0x5555556eb66d "repeatedly_execute_always", numargs=0, params=params@entry=0x555555a8ad90) at script/cc_instance.cpp:368 #6 0x00005555556a555c in ccInstance::DoRunScriptFuncCantBlock (this=, funcToRun=0x555555a8ad80, hasTheFunc=0x555555a8add1) at script/cc_instance.cpp:410 #7 0x00005555556a67f3 in run_function_on_non_blocking_thread (funcToRun=0x555555a8ad80) at script/script.cpp:131 #8 0x0000555555692068 in game_loop_check_new_room () at main/game_run.cpp:142 #9 0x0000555555693ba1 in mainloop (checkControls=checkControls@entry=true, extraBitmap=extraBitmap@entry=0x0, extraX=extraX@entry=0, extraY=extraY@entry=0) at main/game_run.cpp:694 #10 0x0000555555693d2e in main_game_loop () at main/game_run.cpp:840 #11 0x0000555555694155 in do_play_game () at main/game_start.cpp:139 #12 0x000055555569421a in initialize_start_and_play_game (override_start_room=0, loadSaveGameOnStartup=0x0) at main/game_start.cpp:180 #13 0x00005555556906ad in initialize_engine (argc=2, argv=0x7fffffffe318) at main/engine.cpp:1460 #14 0x00005555555ce806 in main (argc=2, argv=0x7fffffffe318) at main/main.cpp:375
I've identified a couple of issues with my porting of the room (CRM file) loading code from the native assembly to the editor assembly (multi_room_edit branch only). The latest commit has the following identified issues:
If any one else has a chance to look at the code, please let me know what else I may be doing totally wrong. Thanks! -monkey
Hi!
Please add support for a recursive gamedir (on Android).
When I put my games into subfolders, they are not shown in AGS.
i guess this flag was added by ivan to test the segfault i reported.
it should not stay there, because
ld.bfd: /usr/local/lib/libaldmb.a(packfile.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC)
it makes all function calls and global var accesses go through the GOT which severely hurts performance on register pressure, for example on i387 were only 7 general purpose regs are available and one (ebx) is constantly held by the GOT ptr. typical performance cost for PIC/PIE code on i386 is about 10-20%.
test CFLAGS should go to config.mak, because that is included by the Makefile for exactly this case: user defined build flags which are not to be tracked by the VCS,
ac/roomstatus.cpp: In member function ‘void RoomStatus::WriteToFile_v321(AGS::Common::Stream_)’:
ac/roomstatus.cpp:58:26: warning: cast from ‘char_’ to ‘int’ loses precision
ac/gamestate.cpp: In member function ‘void GameState::WriteToFile_v321(AGS::Common::Stream_)’:
ac/gamestate.cpp:379:28: warning: cast from ‘int_’ to ‘int’ loses precision
ac/gamestate.cpp:380:28: warning: cast from ‘char**’ to ‘int’ loses precision
media/audio/queuedaudioitem.cpp:37:28: warning: cast from ‘SOUNDCLIP*’ to ‘int’ loses precision
../Common/ac/gamesetupstructbase.cpp:91:28: warning: cast from ‘char_’ to ‘int’ loses precision
../Common/ac/gamesetupstructbase.cpp:92:28: warning: cast from ‘CharacterInfo_’ to ‘int’ loses precision
../Common/ac/gamesetupstructbase.cpp:93:28: warning: cast from ‘ccScript*’ to ‘int’ loses precision
As of 2012/09/12 "refactory" branch has following bug: in the Editor's GUI preview the Label objects draw text with color that seems to be an inversion of the one that was set in GUI's properties. This does not affect the running game.
I suspect some of the previous changes in shared code broke compatibility with Editor and it may use incorrect drawing implementation.
NOTE: this bug is present at the stage before Bitmap class, can't tell for how long it's been there.
AGS: Load game data
AGS: Hitchhiker's Guide to the Galaxy Remake
AGS: Starting game
An internal error has occurred. Please note down the following information.
If the problem persists, post the details on the AGS Technical Forum.
(ACI version 3.21.1115)
Error: Error running function 'game_start':
Error: Pointer cast failure: the object being pointed to is not in the managed object pool
AGS: ***** ENGINE HAS SHUTDOWN
built on linux x64
Hi, as I was playing Apprentice, I've noticed that when I am in the outside location (tall location with hill, barn and sheep at the beginning of the game) I cannot make inventory show up by moving mouse pointer to the bottom of the screen.
I've found a way to fix it by changing room_height field value of the gamestate (it's an exposed variable) (set in room.cpp) from actual room height (400) to the height of the screen (200).
But I'm not sure it's the correct value of the field.
Could someone who knows the system check it up, and suggest what's the right solution?
~/cdev/cdev/ags[refactory]$ find . -name '.c' | xargs grep blah
grep: ./Editor/AGS.Editor/Panes/RoomEditFilters/Copy: No such file or directory
grep: of: No such file or directory
grep: HotspotsEditorFilter.cs: No such file or directory
here is the list of culprits:
~/cdev/cdev/ags[refactory]$ find . -name '* *'
./Android/library/AGS Game Launcher.launch
./Editor/AGS.Editor/Resources/Copy of plugin.ico
./Editor/AGS.Editor/Resources/Copy of pluginDisabled.ico
./Editor/AGS.Editor/Panes/RoomEditFilters/Copy of HotspotsEditorFilter.cs
./Documents/AGS Goals.txt
those copy of things shouldnt even be in the source control, and the AGS Goals thing should be fixed not to use whitespace but underscores oslt
grab old ags versions here:
http://web.archive.org/web/20060720110737/http://americangirlscouts.org/agswiki/index.php/AGS_Version_history
when creating a new "empty" game and a new room, a bit of content is already built-in, for example an actor with a red shirt and a blue cup.
in the new AGS engine, the shirt is blue and the cup red:
http://i.imgur.com/wtFOp.png
test game is here: 150 KB, .exe stub was removed using https://github.com/rofl0r/agsutils
https://github.com/downloads/rofl0r/ags/252mytest.exe
If you run "Operation Forklift" game, go to "Campaign" - "Load game" and hover mouse over free save slot, the original game displays "Free slot" description, but build from this repository causes an error in my_sprintf: "One of the string arguments supplied was not a string".
The argument is indeed null pointer, returned from call to Game_GetSaveSlotDescription().
This is reproducible in older main branch too. Unfortunately I was unable to test latest CJ's version because it can't load 3.12.1074 games.
This bug only occurs when using 3D renderers (Direct3D, OpenGL).
Found in versions: 3.1.1 - 3.6.0.
When the fade-out starts right after text window was displayed (e.g. during room transition) the middle of the text window is removed, but the borders stay on screen. This looks confusing, like the contents of the window turn transparent, but its actually the borders that failed to be removed, or maybe the part of the screen is not repainted properly. If you run original game, it could be noticed, that text windows are removed a moment after fade-out starts.
Easiest way to reproduce: start any level and press SPACE to restart. The message "One more time" appears before the level reset. Click mouse or press any key, and observe the issue.
I'm changing some code from using local variables to using the Room properties directly, and I started getting OutOfMemory exceptions, which I tracked back to a loop which apparently should only have run 16 times. There isn't a clear indication (from the interface level) that setting Room.HotspotCount, Room.WalkableAreaCount, etc. automatically populate the associated list. I don't believe that the setter method for an int property should be doing that anyway.
IMO, if you change HotspotCount then it's your responsibility to ensure that the list is updated also (by calling the method that does this, or adding them manually). If this is intended as a "feature", then I believe the interface should be changed. Having a public int property setter do this is very confusing, and in my case, led to crashing the editor.
Please consider changing this behavior. Thanks.
There is a new bug in the QFG2 remake. It only occurs in versions after the script interpreter changes.
To reproduce:
I don't think it matters what the character name is or what the stats are. I created a character with a character creator.
What I could investigate is that the file seems to be read succesfuly. You can see the contents appear in the File_ReadRawChar() function.
This is the original bug report: http://www.adventuregamestudio.co.uk/forums/index.php?topic=44768.msg634759#msg634759
The game "Two of a kind" calls ensure_text_valid_for_font in Common/font/fonts with fontnum 15 (right after the intro), which is out of bounds of an array of size MAX_FONTS=15. Is the correct fix to set MAX_FONTS to 16 or should we do something more fancy here?
EDIT: Or should the array be accessed at fontnum-1?
I tested the master branch with Jessica Plunkenstein, which is an older game. I skipped all the intros and tried showing the plain ticket from the inventory (tab) to the guy on the left. Got the following error. Doesn't happen with the main branch.
AGS: Loading room 10
An internal error has occurred. Please note down the following information.
If the problem persists, post the details on the AGS Technical Forum.
(ACI version 3.21.1115)
Error: Error running function 'character4_c':
Error: trying to access stack data inside stack entry, stack corrupted?
AGS: ***** ENGINE HAS SHUTDOWN
Hey, I was just diving into the AGS code and this is my second time so I'm fairly overwhelmed by it! I noticed that there's not a lot of documentation on how everything works, how to set up the different builds (it's sprinkled all over the AGS wiki) and how to contribute to the project. Is there a plan to organize this information?
I've been studying how "C-Script" works a little bit. Can I just go to the github wiki and start writing what I got so far so that others can contribute?
ENGINE HAS SHUTDOWN -> seriously broken X11 resolution
since you cant even reach the taskbar anymore, you basically have to restart X and lose all your unsaved data.
I've followed the instructions in debian/README.md . I have used them to install a functional AGS in the "normal" way, make --directiory=Engine install . That part works fine. But when I follow the instructions for building a Debian package, I get a package with the README in it and basically nothing else--no binaries. At least it installs.
In case it matters...
OS: Kubuntu 13.04 64bit
CPU: AMD Athlon X2
If I read code correctly external function "FileOpen" in the main branch is registered as having paramenters "char* filename" and "char* mode", while in refactory branch as having parameters "char* filename", "FileOpenMode", "FileWorkMode".
This makes calls to FileOpen have random Open and WorkMode, and usually open file in "w+b" mode deleting original file contents.
E.g. this call is used in King's Quest II, and problem can be seen by just waiting for it to try to open "intro.dat" and play the intro, or skipping loading screens by pressing the left mouse button a few times (not the escape key). The ags will delete the contents of intro.dat and crash.
I paid attention to this warning lately, all calsses derived from BaseLibrary don't return any value if Unload is called for non-initialized library object.
Probably should return true (= no errors)?
At the start of the opening movie, I get this error. Using the master branch This does not happen with the main branch.
AGS: Loading room 20
pure virtual method called
terminate called without an active exception
*** glibc detected *** ags: double free or corruption (!prev): 0x00007f2a81049a30 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x75b76)[0x7f2a7e709b76]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x6c)[0x7f2a7e70e8ac]
/usr/lib/x86_64-linux-gnu/liballeg.so.4.4(destroy_sample+0x1c)[0x7f2a800a9a3c]
/usr/lib/x86_64-linux-gnu/liballeg.so.4.4(+0x424d4)[0x7f2a800644d4]
/usr/lib/x86_64-linux-gnu/liballeg.so.4.4(remove_sound+0x7e)[0x7f2a800aa12e]
/usr/lib/x86_64-linux-gnu/liballeg.so.4.4(allegro_exit+0x1d)[0x7f2a8004b7ed]
/usr/lib/x86_64-linux-gnu/liballeg.so.4.4(+0xbb137)[0x7f2a800dd137]
/lib/x86_64-linux-gnu/libc.so.6(+0x324f0)[0x7f2a7e6c64f0]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35)[0x7f2a7e6c6475]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x180)[0x7f2a7e6c96f0]
/usr/lib/x86_64-linux-gnu/libstdc++.so.6(_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x11d)[0x7f2a7e3f289d]
/usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x63996)[0x7f2a7e3f0996]
/usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x639c3)[0x7f2a7e3f09c3]
/usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x644df)[0x7f2a7e3f14df]
ags(_Z17update_mp3_threadv+0x5c)[0x7f2a8065c6dc]
ags(_ZN3AGS6Engine13PThreadThread13_thread_startEPv+0x12)[0x7f2a80667ea2]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x6b50)[0x7f2a7eca3b50]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7f2a7e76c70d]
======= Memory map: ========
7f2a675e6000-7f2a6b5e7000 rw-s 00000000 00:11 56660 /run/shm/pulse-shm-3418340510
7f2a6b5e7000-7f2a6f5e8000 rw-s 00000000 00:11 56655 /run/shm/pulse-shm-594289429
7f2a6f5e8000-7f2a6f5e9000 ---p 00000000 00:00 0
7f2a6f5e9000-7f2a6fde9000 rw-p 00000000 00:00 0
7f2a72bc3000-7f2a72bc4000 ---p 00000000 00:00 0
7f2a72bc4000-7f2a733c4000 rw-p 00000000 00:00 0
7f2a733c4000-7f2a733c5000 ---p 00000000 00:00 0
7f2a733c5000-7f2a73bc5000 rw-p 00000000 00:00 0
7f2a73bc5000-7f2a73bca000 r-xp 00000000 fe:01 1316717 /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_ctl_pulse.so
7f2a73bca000-7f2a73dc9000 ---p 00005000 fe:01 1316717 /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_ctl_pulse.so
7f2a73dc9000-7f2a73dca000 r--p 00004000 fe:01 1316717 /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_ctl_pulse.so
7f2a73dca000-7f2a73dcb000 rw-p 00005000 fe:01 1316717 /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_ctl_pulse.so
7f2a73dcb000-7f2a73dea000 r--p 00000000 fe:01 1186081 /usr/share/locale/de/LC_MESSAGES/libc.mo
7f2a73dea000-7f2a73dfd000 r-xp 00000000 fe:01 3670021 /lib/x86_64-linux-gnu/libresolv-2.13.so
7f2a73dfd000-7f2a73ffc000 ---p 00013000 fe:01 3670021 /lib/x86_64-linux-gnu/libresolv-2.13.so
7f2a73ffc000-7f2a73ffd000 r--p 00012000 fe:01 3670021 /lib/x86_64-linux-gnu/libresolv-2.13.so
7f2a73ffd000-7f2a73ffe000 rw-p 00013000 fe:01 3670021 /lib/x86_64-linux-gnu/libresolv-2.13.so
7f2a73ffe000-7f2a74000000 rw-p 00000000 00:00 0
7f2a74000000-7f2a74033000 rw-p 00000000 00:00 0
7f2a74033000-7f2a78000000 ---p 00000000 00:00 0
7f2a78036000-7f2a78037000 rw-p 00000000 00:00 0
7f2a7819f000-7f2a78452000 r-xp 00000000 fe:01 1190525 /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2.0.8
7f2a78452000-7f2a78651000 ---p 002b3000 fe:01 1190525 /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2.0.8
7f2a78651000-7f2a7866d000 r--p 002b2000 fe:01 1190525 /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2.0.8
7f2a7866d000-7f2a7866e000 rw-p 002ce000 fe:01 1190525 /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2.0.8
7f2a7866e000-7f2a786b9000 r-xp 00000000 fe:01 1190523 /usr/lib/x86_64-linux-gnu/libFLAC.so.8.2.0
7f2a786b9000-7f2a788b8000 ---p 0004b000 fe:01 1190523 /usr/lib/x86_64-linux-gnu/libFLAC.so.8.2.0
7f2a788b8000-7f2a788b9000 r--p 0004a000 fe:01 1190523 /usr/lib/x86_64-linux-gnu/libFLAC.so.8.2.0
7f2a788b9000-7f2a788ba000 rw-p 0004b000 fe:01 1190523 /usr/lib/x86_64-linux-gnu/libFLAC.so.8.2.0
7f2a788ba000-7f2a788cf000 r-xp 00000000 fe:01 3670030 /lib/x86_64-linux-gnu/libnsl-2.13.so
7f2a788cf000-7f2a78ace000 ---p 00015000 fe:01 3670030 /lib/x86_64-linux-gnu/libnsl-2.13.so
7f2a78ace000-7f2a78acf000 r--p 00014000 fe:01 3670030 /lib/x86_64-linux-gnu/libnsl-2.13.so
7f2a78acf000-7f2a78ad0000 rw-p 00015000 fe:01 3670030 /lib/x86_64-linux-gnu/libnsl-2.13.so
7f2a78ad0000-7f2a78ad2000 rw-p 00000000 00:00 0
7f2a78ad2000-7f2a78ae0000 r-xp 00000000 fe:01 1187925 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
7f2a78ae0000-7f2a78ce0000 ---p 0000e000 fe:01 1187925 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
7f2a78ce0000-7f2a78ce1000 rw-p 0000e000 fe:01 1187925 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
7f2a78ce1000-7f2a78ce5000 r-xp 00000000 fe:01 3670089 /lib/x86_64-linux-gnu/libuuid.so.1.3.0
7f2a78ce5000-7f2a78ee4000 ---p 00004000 fe:01 3670089 /lib/x86_64-linux-gnu/libuuid.so.1.3.0
7f2a78ee4000-7f2a78ee5000 r--p 00003000 fe:01 3670089 /lib/x86_64-linux-gnu/libuuid.so.1.3.0
7f2a78ee5000-7f2a78ee6000 rw-p 00004000 fe:01 3670089 /lib/x86_64-linux-gnu/libuuid.so.1.3.0
7f2a78ee6000-7f2a78eea000 r-xp 00000000 fe:01 3670063 /lib/x86_64-linux-gnu/libattr.so.1.1.0
7f2a78eea000-7f2a790e9000 ---p 00004000 fe:01 3670063 /lib/x86_64-linux-gnu/libattr.so.1.1.0
7f2a790e9000-7f2a790ea000 r--p 00003000 fe:01 3670063 /lib/x86_64-linux-gnu/libattr.so.1.1.0
7f2a790ea000-7f2a790eb000 rw-p 00004000 fe:01 3670063 /lib/x86_64-linux-gnu/libattr.so.1.1.0
7f2a790eb000-7f2a790f0000 r-xp 00000000 fe:01 1190519 /usr/lib/x86_64-linux-gnu/libasyncns.so.0.3.1
7f2a790f0000-7f2a792ef000 ---p 00005000 fe:01 1190519 /usr/lib/x86_64-linux-gnu/libasyncns.so.0.3.1
7f2a792ef000-7f2a792f0000 rw-p 00004000 fe:01 1190519 /usr/lib/x86_64-linux-gnu/libasyncns.so.0.3.1
7f2a792f0000-7f2a79351000 r-xp 00000000 fe:01 1190527 /usr/lib/x86_64-linux-gnu/libsndfile.so.1.0.25
7f2a79351000-7f2a79550000 ---p 00061000 fe:01 1190527 /usr/lib/x86_64-linux-gnu/libsndfile.so.1.0.25
7f2a79550000-7f2a79552000 r--p 00060000 fe:01 1190527 /usr/lib/x86_64-linux-gnu/libsndfile.so.1.0.25
7f2a79552000-7f2a79553000 rw-p 00062000 fe:01 1190527 /usr/lib/x86_64-linux-gnu/libsndfile.so.1.0.25
7f2a79553000-7f2a79557000 rw-p 00000000 00:00 0
7f2a79557000-7f2a79560000 r-xp 00000000 fe:01 3673477 /lib/x86_64-linux-gnu/libwrap.so.0.7.6
7f2a79560000-7f2a7975f000 ---p 00009000 fe:01 3673477 /lib/x86_64-linux-gnu/libwrap.so.0.7.6
7f2a7975f000-7f2a79760000 r--p 00008000 fe:01 3673477 /lib/x86_64-linux-gnu/libwrap.so.0.7.6
7f2a79760000-7f2a79761000 rw-p 00009000 fe:01 3673477 /lib/x86_64-linux-gnu/libwrap.so.0.7.6
7f2a79761000-7f2a79762000 rw-p 00000000 00:00 0
7f2a79762000-7f2a79767000 r-xp 00000000 fe:01 1190407 /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0
7f2a79767000-7f2a79966000 ---p 00005000 fe:01 1190407 /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0
7f2a79966000-7f2a79967000 rw-p 00004000 fe:01 1190407 /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0
7f2a79967000-7f2a7996e000 r-xp 00000000 fe:01 1189372 /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1
7f2a7996e000-7f2a79b6d000 ---p 00007000 fe:01 1189372 /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1
7f2a79b6d000-7f2a79b6e000 rw-p 00006000 fe:01 1189372 /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1
7f2a79b6e000-7f2a79b85000 r-xp 00000000 fe:01 1189370 /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0
7f2a79b85000-7f2a79d84000 ---p 00017000 fe:01 1189370 /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0
7f2a79d84000-7f2a79d86000 rw-p 00016000 fe:01 1189370 /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0
7f2a79d86000-7f2a79d89000 rw-p 00000000 00:00 0
7f2a79d89000-7f2a79d8a000 r-xp 00000000 fe:01 1186482 /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0
7f2a79d8a000-7f2a79f89000 ---p 00001000 fe:01 1186482 /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0
7f2a79f89000-7f2a79f8a000 rw-p 00000000 fe:01 1186482 /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0
7f2a79f8a000-7f2a79f8e000 r-xp 00000000 fe:01 3673459 /lib/x86_64-linux-gnu/libcap.so.2.22
7f2a79f8e000-7f2a7a18d000 ---p 00004000 fe:01 3673459 /lib/x86_64-linux-gnu/libcap.so.2.22
7f2a7a18d000-7f2a7a18e000 rw-p 00003000 fe:01 3673459 /lib/x86_64-linux-gnu/libcap.so.2.22
7f2a7a18e000-7f2a7a1d2000 r-xp 00000000 fe:01 3673481 /lib/x86_64-linux-gnu/libdbus-1.so.3.7.2
7f2a7a1d2000-7f2a7a3d2000 ---p 00044000 fe:01 3673481 /lib/x86_64-linux-gnu/libdbus-1.so.3.7.2
7f2a7a3d2000-7f2a7a3d3000 r--p 00044000 fe:01 3673481 /lib/x86_64-linux-gnu/libdbus-1.so.3.7.2
7f2a7a3d3000-7f2a7a3d4000 rw-p 00045000 fe:01 3673481 /lib/x86_64-linux-gnu/libdbus-1.so.3.7.2
7f2a7a3d4000-7f2a7a435000 r-xp 00000000 fe:01 1190531 /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-2.0.so
7f2a7a435000-7f2a7a634000 ---p 00061000 fe:01 1190531 /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-2.0.so
7f2a7a634000-7f2a7a635000 r--p 00060000 fe:01 1190531 /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-2.0.so
7f2a7a635000-7f2a7a637000 rw-p 00061000 fe:01 1190531 /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-2.0.so
7f2a7a637000-7f2a7a63e000 r-xp 00000000 fe:01 1190521 /usr/lib/x86_64-linux-gnu/libjson.so.0.0.1
7f2a7a63e000-7f2a7a83d000 ---p 00007000 fe:01 1190521 /usr/lib/x86_64-linux-gnu/libjson.so.0.0.1
7f2a7a83d000-7f2a7a83e000 r--p 00006000 fe:01 1190521 /usr/lib/x86_64-linux-gnu/libjson.so.0.0.1
7f2a7a83e000-7f2a7a83f000 rw-p 00007000 fe:01 1190521 /usr/lib/x86_64-linux-gnu/libjson.so.0.0.1
7f2a7a83f000-7f2a7a888000 r-xp 00000000 fe:01 1190529 /usr/lib/x86_64-linux-gnu/libpulse.so.0.14.2
7f2a7a888000-7f2a7aa87000 ---p 00049000 fe:01 1190529 /usr/lib/x86_64-linux-gnu/libpulse.so.0.14.2
7f2a7aa87000-7f2a7aa88000 r--p 00048000 fe:01 1190529 /usr/lib/x86_64-linux-gnu/libpulse.so.0.14.2
7f2a7aa88000-7f2a7aa89000 rw-p 00049000 fe:01 1190529 /usr/lib/x86_64-linux-gnu/libpulse.so.0.14.2
7f2a7aaa0000-7f2a7aaa6000 r-xp 00000000 fe:01 1316708 /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_pcm_pulse.so
7f2a7aaa6000-7f2a7aca5000 ---p 00006000 fe:01 1316708 /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_pcm_pulse.so
7f2a7aca5000-7f2a7aca6000 r--p 00005000 fe:01 1316708 /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_pcm_pulse.so
7f2a7aca6000-7f2a7aca7000 rw-p 00006000 fe:01 1316708 /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_pcm_pulse.so
7f2a7aca7000-7f2a7aca8000 ---p 00000000 00:00 0
7f2a7aca8000-7f2a7b4a8000 rw-p 00000000 00:00 0
7f2a7b4a8000-7f2a7b4a9000 ---p 00000000 00:00 0
7f2a7b4a9000-7f2a7bca9000 rw-p 00000000 00:00 0
7f2a7bca9000-7f2a7bcab000 r-xp 00000000 fe:01 4732096 /usr/lib/x86_64-linux-gnu/allegro/4.4.2/alleg-alsamidi.so
7f2a7bcab000-7f2a7beaa000 ---p 00002000 fe:01 4732096 /usr/lib/x86_64-linux-gnu/allegro/4.4.2/alleg-alsamidi.so
7f2a7beaa000-7f2a7beab000 rw-p 00001000 fe:01 4732096 /usr/lib/x86_64-linux-gnu/allegro/4.4.2/alleg-alsamidi.so
7f2a7beab000-7f2a7beb2000 r-xp 00000000 fe:01 3670040 /lib/x86_64-linux-gnu/librt-2.13.so
7f2a7beb2000-7f2a7c0b1000 ---p 00007000 fe:01 3670040 /lib/x86_64-linux-gnu/librt-2.13.so
7f2a7c0b1000-7f2a7c0b2000 r--p 00006000 fe:01 3670040 /lib/x86_64-linux-gnu/librt-2.13.so
7f2a7c0b2000-7f2a7c0b3000 rw-p 00007000 fe:01 3670040 /lib/x86_64-linux-gnu/librt-2.13.so
7f2a7c0b3000-7f2a7c19f000 r-xp 00000000 fe:01 1188821 /usr/lib/x86_64-linux-gnu/libasound.so.2.0.0
7f2a7c19f000-7f2a7c39f000 ---p 000ec000 fe:01 1188821 /usr/lib/x86_64-linux-gnu/libasound.so.2.0.0
7f2a7c39f000-7f2a7c3a5000 r--p 000ec000 fe:01 1188821 /usr/lib/x86_64-linux-gnu/libasound.so.2.0.0
7f2a7c3a5000-7f2a7c3a7000 rw-p 000f2000 fe:01 1188821 /usr/lib/x86_64-linux-gnu/libasound.so.2.0.0
7f2a7c3a7000-7f2a7c3ab000 r-xp 00000000 fe:01 4732095 /usr/lib/x86_64-linux-gnu/allegro/4.4.2/alleg-alsadigi.so
7f2a7c3ab000-7f2a7c5ab000 ---p 00004000 fe:01 4732095 /usr/lib/x86_64-linux-gnu/allegro/4.4.2/alleg-alsadigi.so
7f2a7c5ab000-7f2a7c5ac000 rw-p 00004000 fe:01 4732095 /usr/lib/x86_64-linux-gnu/allegro/4.4.2/alleg-alsadigi.so
7f2a7c5ac000-7f2a7c5b1000 r-xp 00000000 fe:01 1193403 /usr/lib/x86_64-linux-gnu/libXxf86dga.so.1.0.0
7f2a7c5b1000-7f2a7c7b1000 ---p 00005000 fe:01 1193403 /usr/lib/x86_64-linux-gnu/libXxf86dga.so.1.0.0
7f2a7c7b1000-7f2a7c7b2000 rw-p 00005000 fe:01 1193403 /usr/lib/x86_64-linux-gnu/libXxf86dga.so.1.0.0
7f2a7c7b2000-7f2a7c7b7000 r-xp 00000000 fe:01 4732080 /usr/lib/x86_64-linux-gnu/allegro/4.4.2/alleg-dga2.so
7f2a7c7b7000-7f2a7c9b7000 ---p 00005000 fe:01 4732080 /usr/lib/x86_64-linux-gnu/allegro/4.4.2/alleg-dga2.so
7f2a7c9b7000-7f2a7c9b8000 rw-p 00005000 fe:01 4732080 /usr/lib/x86_64-linux-gnu/allegro/4.4.2/alleg-dga2.so
7f2a7c9b8000-7f2a7c9b9000 rw-p 00000000 00:00 0
7f2a7c9b9000-7f2a7c9be000 r-xp 00000000 fe:01 1183116 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7f2a7c9be000-7f2a7cbbd000 ---p 00005000 fe:01 1183116 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7f2a7cbbd000-7f2a7cbbe000 rw-p 00004000 fe:01 1183116 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7f2a7cbbe000-7f2a7cbc0000 r-xp 00000000 fe:01 1183113 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7f2a7cbc0000-7f2a7cdc0000 ---p 00002000 fe:01 1183113 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7f2a7cdc0000-7f2a7cdc1000 rw-p 00002000 fe:01 1183113 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7f2a7cdc1000-7f2a7cdc6000 r-xp 00000000 fe:01 1186460 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0Abgebrochen
This is reproducible at least on Windows and Linux.
In "Infinity String" the game freezes during first intro screen (the text printed over the background depicting the space).
In "Journey To Hell" it freezes during introductory cutscene at game start, when an old man walks towards a house.
I found that this bug is caused by this commit: 61cf388
Today, I played through AGD Interactive's King's Quest 1 remake using the current master branch. While it worked fine for the most part, sometimes text boxes would come up empty and occasionally it would crash. When I managed to capture a crash in the debugger, it always pointed to GetCompatibleColor() being called by wouttext_outline().
I'm not at all familiar with the inner workings of AGS, but here's what I think happens. (Sorry if I ramble, but it helps me think.)
So I'm guessing that _display_main() should call GetVirtualScreen() to get the new 'ds' pointer directly after calling draw_text_window_and_bar() (in both places?). Initial testing looks promising, but the glitch happens so randomly (and the crash even more so) that it's hard to say for sure.
The README doesn't specify if a certain NDK version is strictly required, but NDKr9 fails to compile the native code, giving the following error:
/Engine/platform/android/acpland.cpp:678:65: error: format not a string literal and no format arguments [-Werror=format-security]
acpland.cpp line 678:
__android_log_print(ANDROID_LOG_DEBUG, "AGSNative", displbuf);
The surrounding method:
void AGSAndroid::WriteDebugString(const char* texx, ...)
{
if (psp_debug_write_to_logcat)
{
char displbuf[STD_BUFFER_SIZE] = "AGS: ";
va_list ap;
va_start(ap,texx);
vsprintf(&displbuf[5],texx,ap);
va_end(ap);
__android_log_print(ANDROID_LOG_DEBUG, "AGSNative", displbuf);
}
}
I've been playing the AGD Interactive remake of King's Quest 2, using the latest git version on Debian 32-bit Linux. For the most part, it has worked very well, but I noticed that if I save the game while up in the clouds (after riding the winged horse), I can't load that savegame. It crashes with the message:
Error: Game has been modified since save; unable to restore (GV02)
The problem seems to have something to do with save_game_overlays() / restore_game_overlays(). Up to that point, the save/restore functions seem to agree on which position they're at in the save file.
In save_game_overlays(), numscreenover is 1 so serialize_bitmap() is called and it saves a 400x6x32 bitmap.
In restore_game_overlays(), numscreenover is still 1 (unsurprisingly; it is read from the file), but it seems that read_serialized_bitmap() doesn't get called, so I guess screenover[0].pic was NULL. (My first hunch would be that restore_game_overlays() shouldn't care what screenover[bb].pic is, or at the very least it should skip past the bitmap in the file rather than ignoring it. But I don't really know.)
So when it calls the next function, restore_game_dynamic_surfaces(), it's reading from the wrong position and of course after that it's just a matter of time before something bad happens.
Hi,
I did some testing with the master branch on 64 bit and it seems like some games don't crash anymore at all. There still seem to be some regressions though, especially with older games, see issues 33 and 34.
The detection of game files when only providing the folder does not work reliably yet, for instance when the folder name is given in quotes because it contains spaces. Barn Runner 1 Eclair 1 is not found even when the full path does not contain spaces and no quotes are used.
./ags ~/games/trilby-5days/5days.exe
...
AGS: Engine initialization complete
AGS: Starting game
AGS: Loading room 1
Shutting down Allegro due to signal #11
Segmentation fault
when entering room 49 (3rd level), in the .exe version shipped with duty and beyond, a pig appears - that one is missing in both scummvm and AGS version hosted here.
https://github.com/rofl0r/agsutils
i was able to extract all 139 scripts contained in "Duty And Beyond" into disassembly, recompile them with the assembler, and inject the modified scripts again into the game - and it works.
this should be a milestone in debuggability of AGS games.
see README for usage instructions.
When I started refactoring attempt I had an impression that Editor code should be kept close to Engine's, for they share part of the codebase. Back then there was, perhaps, a sense in this, because there were files divided on engine & editor "parts" by macros, and before those were separated it was more convenient to have both projects together so that every change could be quickly tested on both.
Now I do not see any serious reason to keep them in the same repository, since they are two separate programs, only sharing number of data structures and serialization formats.
In retrospect, keeping AGS.Native library up to date with changes to shared code was redundant, because there was nothing there that would affect editor's logic nor game compilation (but that's other issue).
Besides, ideally, AGS.Native should be rewritten to be a seamless part of the Editor anyway (aside from other reasons, that is required to make Editor compatible with Mono), and have all ties with engine code cut.
What are problems that may arise if we split those two projects?
I assume that most people have forked this repository to get the engine. So far we had never received any pull requests nor patches for the Editor, and I don't suppose someone is preparing one right now.
Cleaning history is more serious issue. If it is possible to erase individual files from the Git history, we could make both repositories have only related files down to the original state.
Information on cleaning may be found here: https://help.github.com/articles/remove-sensitive-data
and here: http://git-scm.com/book/en/Git-Tools-Rewriting-History
If we do that, we should be aware that all collaborators should do "rebase" when getting changes, not "merge".
In the end, we could have, e.g., ags-engine repository, ags-editor, and maybe some ags-utils for any tools, editor installation script, etc.
This is not something that may be done any moment, we should plan this carefully, make some tests first.
I've been looking into what would be needed to publish standalone APKs of AGS games. Just for those who may not be aware, an APK can only be up to 50 MB, so if it exceeds that then an expansion OBB file must be used.
What I'm already able to do:
The problem with this is that the expansion file must not be deleted (or Google Play and/or the app itself will attempt to download it again), thus resulting in a duplication of the game resources (e.g., a 500 MB game could require 1 GB+ to download and install).
The expansion OBB files can be mounted as a temporary folder, which allows the engine to read the files directly. Unfortunately, the engine also expects the game to be launched from a writable location and the OBB is mounted to a non-writable location.
What steps would be required to allow the engine to have a separate working (default save) directory from the game's actual path? If it's a relatively simple modification, then I would have everything I need to publish standalone APKs of AGS games. :) Thanks for any tips/info...I'll try looking around the engine.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.