Windows CE port fixes/enhancements (from <Someone>)

A few other fixes:
- bug: text window does not scroll left on left arrow
- pcmain.c: fix warning: _fileno() returns void* in Windows CE SDK

3.5.0 only:
- files.c: compile error: don't include <signal.h> if NO_SIGNAL is defined. WinMo does not support POSIX signals
- version.c: compile error: append_port_id() is undeclared
- link error: mktime() is unsupported -> define it in celib.c

-<Someone>
This commit is contained in:
nethack.allison
2009-10-22 02:59:35 +00:00
parent dea62334c0
commit 3197e22563
13 changed files with 51 additions and 43 deletions

View File

@@ -2400,6 +2400,10 @@ E unsigned long FDECL(get_feature_notice_ver, (char *));
E unsigned long NDECL(get_current_feature_ver);
E const char *FDECL(copyright_banner_line, (int));
#ifdef RUNTIME_PORT_ID
E void FDECL(append_port_id, (char *));
#endif
/* ### video.c ### */
#ifdef MSDOS

View File

@@ -1,5 +1,4 @@
/* NetHack 3.5 wceconf.h $Date$ $Revision$ */
/* SCCS Id: @(#)wceconf.h 3.5 2005/01/23 */
/* Copyright (C) 2001 by Alex Kompel */
/* NetHack may be freely redistributed. See license for details. */
@@ -272,6 +271,7 @@ struct tm {
extern struct tm * __cdecl localtime(const time_t *);
extern time_t __cdecl time(time_t *);
extern time_t __cdecl mktime(struct tm * tb);
/* __stdio.h__ */
#ifndef BUFSIZ

View File

@@ -45,7 +45,7 @@ extern int errno;
#include <stdlib.h>
#endif
#if defined(UNIX) || defined(VMS) || defined(_MSC_VER)
#if defined(UNIX) || defined(VMS) || !defined(NO_SIGNAL)
#include <signal.h>
#endif

View File

@@ -1,5 +1,4 @@
/* NetHack 3.5 pcmain.c $Date$ $Revision$ */
/* SCCS Id: @(#)pcmain.c 3.5 2008/01/30 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -236,7 +235,7 @@ char *argv[];
*/
if (!strncmp(argv[1], "-s", 2)) {
#if defined(MSWIN_GRAPHICS) || defined(WIN32CON)
int sfd = _fileno(stdout);
int sfd = (int)_fileno(stdout);
redirect_stdout = (sfd >= 0) ? !isatty(sfd) : 0;
# ifdef MSWIN_GRAPHICS

View File

@@ -1,5 +1,4 @@
/* NetHack 3.5 celib.c $Date$ $Revision$ */
/* SCCS Id: @(#)celib.c 3.5 2005/01/23 */
/* Copyright (C) 2001 by Alex Kompel */
/* NetHack may be freely redistributed. See license for details. */
@@ -67,6 +66,21 @@ time_t __cdecl time(time_t * timeptr)
return _t_cnv.t_val;
}
time_t __cdecl mktime(struct tm * tb)
{
if(!tb) return (time_t)-1;
_t_cnv.tm_val.yr = tb->tm_year;
_t_cnv.tm_val.mo = tb->tm_mon;
_t_cnv.tm_val.dd = tb->tm_mday;
_t_cnv.tm_val.hh = tb->tm_hour;
_t_cnv.tm_val.mm = tb->tm_min;
_t_cnv.tm_val.ss = tb->tm_sec;
_t_cnv.tm_val.wd = tb->tm_wday;
return _t_cnv.t_val;
}
/*------------------------------------------------------------------------------*/
/* __io.h__ */
/* Hack io.h function with stdio.h functions */

View File

@@ -17,6 +17,7 @@ copy ..\..\win\win32\mnunsel.uu ..\..\wince\mnunsel.uu
copy ..\..\win\win32\petmark.uu ..\..\wince\petmark.uu
copy ..\..\sys\wince\menubar.uu ..\..\wince\menubar.uu
copy ..\..\sys\wince\keypad.uu ..\..\wince\keypad.uu
copy ..\..\sys\wince\nhico.uu ..\..\wince\nhico.uu
REM
REM Get these files from sys\wince
REM

View File

@@ -1,3 +1,4 @@
/* NetHack 3.5 mhcmd.c $Date$ $Revision$ */
/* NetHack may be freely redistributed. See license for details. */
#include "winMS.h"
@@ -218,7 +219,7 @@ NHCmdPadCell cells_layout_item_handling[NH_CMDPAD_CELLNUM] =
{ -1, "T", "T", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "R", "R", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "D", "D", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "Q", "Q", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "=", "=", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "i", "i", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "Q", "Q", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "A", "A", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },

View File

@@ -876,21 +876,6 @@ LRESULT onWMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
DialogBox(GetNHApp()->hApp, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_CMD_DLG: {
char input[BUFSZ];
char* p;
boolean ctrl = FALSE;
mswin_getlin("Enter command", input);
for(p=input; *p; p++) {
if( *p == '^' ) {
ctrl = TRUE;
continue;
}
NHEVENT_KBD(ctrl? C(*p) : *p);
ctrl = FALSE;
}
} break;
case IDM_EXIT:
done2();
break;
@@ -1090,7 +1075,7 @@ void mswin_select_map_mode(int mode)
/* update "Fit To Screen" item text */
{
TCHAR wbuf[BUFSZ];
MENUITEMINFO mi;
TBBUTTONINFO tbbi;
ZeroMemory( wbuf, sizeof(wbuf) );
if( !LoadString(
@@ -1101,17 +1086,15 @@ void mswin_select_map_mode(int mode)
panic("cannot load main menu strings");
}
ZeroMemory( &mi, sizeof(mi) );
mi.cbSize = sizeof(mi);
mi.fType = MFT_STRING;
mi.fMask = MIIM_TYPE;
mi.dwTypeData = wbuf;
mi.cch = wcslen(wbuf);
if( !SetMenuItemInfo(
hmenuMap,
ZeroMemory( &tbbi, sizeof(tbbi) );
tbbi.cbSize = sizeof(tbbi);
tbbi.dwMask = TBIF_TEXT;
tbbi.pszText = wbuf;
if( !SendMessage(
GetNHApp()->hMenuBar,
TB_SETBUTTONINFO,
IDM_MAP_FIT_TO_SCREEN,
FALSE,
&mi) ) {
(LPARAM)&tbbi) ) {
error( "Cannot update IDM_MAP_FIT_TO_SCREEN menu item." );
}
}

View File

@@ -259,6 +259,10 @@ void LayoutText(HWND hWnd)
LRESULT CALLBACK NHTextControlWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message) {
/* tell Windows not to process arrow keys (we want them) */
case WM_GETDLGCODE:
return DLGC_WANTARROWS;
case WM_KEYDOWN:
switch( wParam ) {
case VK_SPACE:

View File

@@ -149,16 +149,15 @@
#define IDM_HELP_MENU 32828
#define IDM_VIEW_OPTIONS 32829
#define IDM_DIRECT_COMMAND 32830
#define IDM_CMD_DLG 32832
#define IDS_TEXT_WRAP 32833
#define IDS_TEXT_UNWRAP 32834
#define IDS_TEXT_WRAP 32831
#define IDS_TEXT_UNWRAP 32832
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 155
#define _APS_NEXT_COMMAND_VALUE 32831
#define _APS_NEXT_COMMAND_VALUE 32833
#define _APS_NEXT_CONTROL_VALUE 1334
#define _APS_NEXT_SYMED_VALUE 110
#endif

View File

@@ -182,4 +182,7 @@ void mswin_write_reg(void);
BOOL mswin_has_keyboard(void);
void mswin_set_fullscreen(BOOL is_fullscreen);
extern winid WIN_STATUS;
#endif /* WINmswin_H */

View File

@@ -24,7 +24,7 @@ static void win_hack_init(int, char **);
static void __cdecl mswin_moveloop(void *);
static BOOL setMapTiles(const char* fname);
extern void FDECL(pcmain, (int,char **));
extern boolean FDECL(pcmain, (int,char **));
#define MAX_CMDLINE_PARAM 255
@@ -41,6 +41,7 @@ int APIENTRY WinMain(HINSTANCE hInstance,
TCHAR* p;
TCHAR wbuf[NHSTR_BUFSIZE];
char buf[NHSTR_BUFSIZE];
boolean resuming;
sys_early_init();
@@ -122,9 +123,9 @@ int APIENTRY WinMain(HINSTANCE hInstance,
GetModuleFileName(NULL, wbuf, BUFSZ);
argv[0] = _strdup(NH_W2A(wbuf, buf, BUFSZ));
pcmain(argc,argv);
resuming = pcmain(argc,argv);
moveloop();
moveloop(resuming);
return 0;
}

View File

@@ -37,12 +37,12 @@ IDI_WINHACK ICON DISCARDABLE "..\\..\\wince\\NETHACK.ICO"
IDC_WINHACK MENU DISCARDABLE
BEGIN
MENUITEM "Type Cmd", IDM_DIRECT_COMMAND
MENUITEM "Entire Map", IDM_MAP_FIT_TO_SCREEN
POPUP "Menu"
BEGIN
MENUITEM "Options", IDM_VIEW_OPTIONS
MENUITEM "Keypad", IDM_VIEW_KEYPAD
MENUITEM "Cmd", IDM_CMD_DLG
MENUITEM "Cmd", IDM_DIRECT_COMMAND
MENUITEM SEPARATOR
MENUITEM "ASCII", IDM_MAP_ASCII8X8
MENUITEM "Tiles", IDM_MAP_TILES
@@ -232,7 +232,7 @@ END
IDC_WINHACK SHMENUBAR DISCARDABLE
BEGIN
IDC_WINHACK, 2,
I_IMAGENONE, IDM_DIRECT_COMMAND, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE, IDM_DIRECT_COMMAND, 0, NOMENU,
I_IMAGENONE, IDM_MAP_FIT_TO_SCREEN, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE, IDM_MAP_FIT_TO_SCREEN, 0, NOMENU,
I_IMAGENONE, ID_VIEW, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_CAP_VIEW, 0, 1,
END
@@ -313,7 +313,6 @@ END
STRINGTABLE DISCARDABLE
BEGIN
IDM_MAP_FIT_TO_SCREEN "Entire Map"
IDM_DIRECT_COMMAND "Type Cmd"
IDS_CAP_FILE "File"
IDS_CAP_HELP "Help"
IDS_CAP_MAP "Map"