Angband.oook.cz
Angband.oook.cz
AboutVariantsLadderForumCompetitionComicScreenshotsFunniesLinks

Go Back   Angband Forums > Angband > Vanilla

Reply
 
Thread Tools Display Modes
Old October 1, 2007, 09:37   #1
pupnik
Rookie
 
pupnik's Avatar
 
Join Date: Oct 2007
Posts: 5
pupnik is on a distinguished road
Talking (cross)Compiling for Nokia 770 / N800 Tablets

Hello...

Buildling 3.0.9 (and for testing, svn) in various modes in scratchbox/maemo for Nokia 770 (and Dawnmist on N800 -- ~waves~)

Ncurses: builds with ncurses 5.4 using the "bool hack" in
src/autoconf.h.in

/* Define to 1 if stdbool.h conforms to C99. */
/* #undef HAVE_STDBOOL_H */
SDL:

[sbox-SB_Arm2: ~/Angband/angband-3.0.9] > ./configure --with-setgid=29999 --disable-x11 --enable-sdl --enable-sdl-mixer && make
main-sdl.c:3389: error: structure has no member named `current_w'
main-sdl.c:3390: error: structure has no member named `current_h'

(edit) just hacked main-sdl.c to device's native resolution

full_w = 800;
full_h = 480;
//full_w = VideoInfo->current_w;
//full_h = VideoInfo->current_h;


GTK:

[sbox-SB_Arm2: ~/Angband/angband-3.0.9] > ./configure --with-noinstall --disable-x11 --disable-sdl --disable-sdl-mixer --enable-gtk && make
...
main-gtk.c:47: error: syntax error before "cairo_t"
main-gtk.c:47: warning: no semicolon at end of struct or union
main-gtk.c:65: error: syntax error before '}' token
main-gtk.c: In function `set_foreground_color':
main-gtk.c:116: error: dermain-gtk.c:120: error: dereferencing pointer to incomplete type
main-gtk.c:121: warning: implicit declaration of function `cairo_set_source_rgb'
main-gtk.c:121: error: dereferencing pointer to incomplete type
main-gtk.c: At top level:
main-gtk.c:146: error: syntax error before '*' token
main-gtk.c: In function `c_rect':
main-gtk.c:148: warning: implicit declaration of function `cairo_rectangle'
main-gtk.c:148: error: `cr' undeclared (first use in this function)
main-gtk.c:148: error: (Each undeclared identifier is reported only once
main-gtk.c:148: error: for each function it appears in.)
main-gtk.c:148: error: `r' undeclared (first use in this function)
main-gtk.c: In function `Term_clear_gtk':
main-gtk.c:161: error: dereferencing pointer to incomplete type

// further incomplete type errors baleeted //

main-gtk.c:166: warning: implicit declaration of function `cairo_save
main-gtk.c:173: warning: implicit declaration of function `cairo_restore'
main-gtk.c: In function `Term_text_gtk':
main-gtk.c:237: warning: implicit declaration of function `cairo_move_to'
main-gtk.c:238: warning: implicit declaration of function `pango_cairo_show_layout'1: warning: implicit declaration of function `cairo_close_path'
...main-gtk.c: In function `init_gtk':
main-gtk.c:1214: error: invalid use of undefined type `struct term_data'
main-gtk.c:1227: error: invalid use of undefined type `struct term_data'
main-gtk.c: At top level:
main-gtk.c:71: error: storage size of `data' isn't known
make[2]: *** [main-gtk.o] Error

the x11 build makes no sense for the nokia, as it's a gtk/hildon based device - but SDL is a reasonable option if an alternate input method is built (onscreen buttons).

Will look into this cairo problem - thought the core devs should know about the sdl issue, as that appears to be internal to angband.

Cheers!

Last edited by pupnik; October 1, 2007 at 09:50. Reason: added a /
pupnik is offline   Reply With Quote
Old October 1, 2007, 11:13   #2
Dawnmist
Rookie
 
Join Date: Oct 2007
Posts: 23
Dawnmist is on a distinguished road
Testing 3.0.9 on N800:
1. Sound works in both ncurses and sdl - turn it on with "=" menu option 1-a
2. Mouse movement works in sdl - turn it on with "=" menu option 1-k
3. Full menu options are available using the square button in the middle of the DPad. Pointer taps work in the menus to select items, a second tap will select/toggle an option.
4. ESC key works in sdl.
5. ncurses *can* work with the on-screen keyboard if the terminal is in full-screen mode. Use the enhanced osso-xterm and font settings of Sans-bold-10 pt font.
6. SDL can be put into full-screen mode. Image will only scale up if you select a larger font in the menu across the top.
7. Dpad works for horizontal/vertical movement in sdl.
8. All graphics tile options work in the sdl version.

Things not working:
1. SDL mode opens angband, but doesn't add it to the menu of running apps - so if you tab away, you cannot get back to it.
2. The sizing of the window is strange - if you enlarge the font to maximise the display of the map, the status bar is off-screen even though there's plenty of space to have it on-screen. The gap between the bottom of the map and the status bar is too large.
3. In ncurses, the on-screen keyboard's keypad is upside-down (123 at top instead of at bottom). This makes key movement strange (keep trying to move 'up', and move 'down' instead).
4. Escape key doesn't work in ncurses mode - use ` instead.
5. Menu options that require an input value (such as the hitpoint warning %) are not possible to input in the sdl version - you can select them, but since there's no keyboard at that point in time you can't enter the value. An external keyboard is a work-around, as is manually modifying your pref file *outside* the game.
6. You can't run past a shop with the pointer without it taking you into the shop? Seems to pull you in all the time rather than running past it.
7. SDL menus for things like "Wear/wield item" bring up the normal prompt for selection - with no ability to select '*' or type, you can't actually select anything. Like the numerical options, these need to display a list of things that are pointer-selectable by default.

Things that would be nice to get working:
1. A modifier key to switch the dpad into diagonal movement?
2. All 'prompt to select' items to provide a chooser menu by default in SDL mode.
3. Ability to turn off the mouse icon displayed when the user taps the screen with the pointer.


Testing an svn build:
1. Currently won't compile - there's files #include'ing wizard.h, and wizard.h doesn't exist (yet?).

Last edited by Dawnmist; October 1, 2007 at 11:29.
Dawnmist is offline   Reply With Quote
Old October 1, 2007, 11:16   #3
takkaria
Veteran
 
takkaria's Avatar
 
Join Date: Apr 2007
Posts: 1,951
Donated: $40
takkaria is on a distinguished road
Quote:
Originally Posted by pupnik View Post
Will look into this cairo problem - thought the core devs should know about the sdl issue, as that appears to be internal to angband.
The SDL problem is because you're not using a recent enough version of the SDL library. 1.2.10 is the version which added those members.
takkaria is offline   Reply With Quote
Old October 1, 2007, 12:12   #4
Dawnmist
Rookie
 
Join Date: Oct 2007
Posts: 23
Dawnmist is on a distinguished road
Latest version of sdl available for maemo (Nokia N770/N800) is 1.2.8 - so short of compiling our own sdl libraries, we won't have the 1.2.10 library to work with.

At least good to know why that was missing though.

Is there anything else specific that is likely to trip us up in working with the older library? At this stage, things seem to work ok provided we replace those calls with the actual resolution of the screens we're working with (which are always a known, fixed-size).
Dawnmist is offline   Reply With Quote
Old October 2, 2007, 05:24   #5
pupnik
Rookie
 
pupnik's Avatar
 
Join Date: Oct 2007
Posts: 5
pupnik is on a distinguished road
Thumbs down

for adding a sdl virtual keyboard i was thinking, either

1) hack-in the keyboard on a per-game basis

add code near the start of sdl_HandleMouseEvent(SDL_Event *event) to detect if leftmouse button pressed within the keyboard area rectangle, then jump to subroutine and calculate key pressed...

if ( abs(event.button.x-A_BTN_X) <= BTN_WID &&
abs(event.button.y-A_BTN_Y) <= BTN_HGT)
{
event->type = SDL_KEYDOWN;
event->key.type = SDL_KEYDOWN;
event->key.keysym.unicode = 0;
event->key.keysym.scancode = 0;
event->key.keysym.sym = SDLK_i; // the 'a' key
event->key.keysym.mod = KMOD_NONE;
}
// handling mouseup properly is a bit trickier
2) eventually write code that could be linked-in to any sdl game with a resizable display - that overrode SDL_ProcessEvent, checking first to see if mousebuttondowns are hitting an 'on top' (non-minimized) onscreen virtual keyboard, then passing it on to the regular ProcessEvent.

Mind muddy...
pupnik is offline   Reply With Quote
Old October 2, 2007, 12:51   #6
Dawnmist
Rookie
 
Join Date: Oct 2007
Posts: 23
Dawnmist is on a distinguished road
Working on getting a deb file together for a system-wide install on the N770/N800.

Progress so far:
  1. Deb is building
  2. Workaround for font files being opened in write-only mode when testing for existance (code's already changed in svn) for sdl version
  3. Workaround for graphics tileset files being opened in write-only mode when testing for existance
  4. Deb installs and creates menu item
  5. angband can be run from a terminal window
  6. angband not yet working when run from menu item
  7. sdl mode permit the user to select a tileset to use, but shows only ascii still
  8. angband still not being listed in the 'running programs' menus (so if you tab away, you can't get back)

Current state of the deb prep is at http://www.dawnmist.net/angband/angb...o-devel.tar.gz
Dawnmist is offline   Reply With Quote
Old October 3, 2007, 21:52   #7
pupnik
Rookie
 
pupnik's Avatar
 
Join Date: Oct 2007
Posts: 5
pupnik is on a distinguished road
ONScreen keyboard, 20x20 tiles, sdl fixups

Haven't had time to get into the sdl main much lately - sorry - working on xu4 right now (easier main loop!)

Would you want the onscreen keyboard to popup above the display, or resize the game window?

Edit - oh yeah i need to run a script to generate an overlay png for the tileset so i can verify monster/item names. If any angband illuminatus could point me to how to calculate tile offsets for each object, i'd appreciate it.
pupnik is offline   Reply With Quote
Old October 4, 2007, 03:04   #8
Dawnmist
Rookie
 
Join Date: Oct 2007
Posts: 23
Dawnmist is on a distinguished road
Would depend on how we're planning to implement it (and what's easiest to get going to start with).

If it's only to come on-screen when the game is requesting input (e.g. "how many", "which item", etc), then a pop-up over the top is fine.

If we're planning on being able to use it as well as the stylus for normal play, then it'd need to sit across the bottom of the screen and have the main part of the screen resized to fit. Or we could add a 'show/hide keyboard' button/menu/whatever that toggles this across the bottom of the screen.

svn angband is compiling again - there's been changes in that to support more flexible interface implementation - don't know if those would help us here?

Although I tried compiling and using the svn version late last night - it compiled, but the ncurses version (didn't try sdl) gets to the part where it's creating a savefile, says it has to overwrite an existing savefile (there wasn't any!) and then seems to hang. Didn't have time to try to track that one any further then.

Edit: It's definitely hanging - and does so on my main machine as well as the N800. I get to the last step in character creation - pick a name, then it tries to create the save file. It then warns that it will have to overwrite the "existing" savefile (which doesn't exist), and after you say 'y'es overwrite, it hangs on "Please wait".

So I think svn is still broken - but in another way now *grins*

Last edited by Dawnmist; October 4, 2007 at 12:11.
Dawnmist is offline   Reply With Quote
Old October 5, 2007, 16:22   #9
takkaria
Veteran
 
takkaria's Avatar
 
Join Date: Apr 2007
Posts: 1,951
Donated: $40
takkaria is on a distinguished road
Quote:
Originally Posted by Dawnmist View Post
svn angband is compiling again - there's been changes in that to support more flexible interface implementation - don't know if those would help us here?
Those changes aren't far enough ahead yet to be of any use to you -- but they were made with exactly this kind of flexibility in mind.

Quote:
It's definitely hanging - and does so on my main machine as well as the N800. I get to the last step in character creation - pick a name, then it tries to create the save file. It then warns that it will have to overwrite the "existing" savefile (which doesn't exist), and after you say 'y'es overwrite, it hangs on "Please wait".
I reproduce the prompt OK, but no hang here. Please checkout a clean version of the game and recompile, see if it still happens. If so, please give details of your OS and toolset used to compile. Ta.
takkaria is offline   Reply With Quote
Old October 8, 2007, 07:05   #10
Dawnmist
Rookie
 
Join Date: Oct 2007
Posts: 23
Dawnmist is on a distinguished road
Quote:
Please checkout a clean version of the game and recompile, see if it still happens. If so, please give details of your OS and toolset used to compile. Ta.
Target OS is Internet Tablet OS 2007 ('maemo' linux, 'bora' release), which is on an embedded ARM processor. The toolchain is a scratchbox install for maemo 3.2/Nokia N800 - set up according to the instructions in the maemo development howto and compiling with the ARMEL target (scratchbox hosted inside an Ubuntu Feisty machine).

I'll update the svn source this evening and give it another go tonight

Edit: just verified the source against svn - I was using revision 610 (latest revision), and the only changes were to set the screen size & the ncurses bool:
Quote:
Index: src/main-sdl.c
================================================== =================
--- src/main-sdl.c (revision 610)
+++ src/main-sdl.c (working copy)
@@ -3400,8 +3400,10 @@
/* Require at least 256 colors */
if (VideoInfo->vfmt->BitsPerPixel < 8) quit(format("This %s port requires lots of colors.", VERSION_NAME));

- full_w = VideoInfo->current_w;
- full_h = VideoInfo->current_h;
+ full_w = 800;
+ full_h = 480;
+ //full_w = VideoInfo->current_w;
+ //full_h = VideoInfo->current_h;

/* Use a software surface - A tad inefficient, but stable... */
vflags |= SDL_SWSURFACE;
And the commenting-out of
#undef HAVE_STDBOOL_H
in src/autoconf.h.in

So that is with the current version/etc, and as clean as possible with the SDL version limitations we're working with. It hangs in both the SDL and console modes at that point.

It seems strange that it thinks it needs to overwrite an existing savefile when there is NO existing file...it also won't respond to Ctrl-C, you need to manually 'kill' it in a terminal window (and if you were running from a terminal, it leaves it in an unusable state - no character echoes to screen, black background still there, etc).

Edit #2: I added some debugging messages to dungeon.c to try to work out where the problem is occurring.

Quote:
Index: dungeon.c
================================================== =================
--- dungeon.c (revision 610)
+++ dungeon.c (working copy)
@@ -1926,31 +1926,52 @@
/* Flush the message */
Term_fresh();

+ /* Flash a message */
+ prt("Term_fresh() done...", 0, 0);

+
/* Flavor the objects */
flavor_init();

+ /* Flash a message */
+ prt("flavor_init() done...", 0, 0);
+
/* Reset visuals */
reset_visuals(TRUE);

+ /* Flash a message */
+ prt("reset_visuals(TRUE) done...", 0, 0);

+
/* Redraw stuff */
p_ptr->redraw |= (PR_INVEN | PR_EQUIP | PR_MONSTER | PR_MESSAGE);
redraw_stuff();

+ /* Flash a message */
+ prt("redraw_stuff() done...", 0, 0);

+
/* Process some user pref files */
process_some_user_pref_files();


+ /* Flash a message */
+ prt("process_some_user_pref_files() done...", 0, 0);
+
/* React to changes */
Term_xtra(TERM_XTRA_REACT, 0);


+ /* Flash a message */
+ prt("Term_xtra(TERM_XTRA_REACT, 0) done...", 0, 0);
+
/* Generate a dungeon level if needed */
if (!character_dungeon) generate_cave();

+ /* Flash a message */
+ prt("generate_cave() done...", 0, 0);

+
/* Character is now "complete" */
character_generated = TRUE;
Unless I've used the wrong function to try to flash a message in the top line, the problem is somewhere in Term_fresh() - the message immediately before this one is shown ("Please wait..."), but the "Term_fresh() done..." message never comes up and angband hangs.

Last edited by Dawnmist; October 8, 2007 at 08:31.
Dawnmist is offline   Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 11:51.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2023, vBulletin Solutions Inc.