Ticket #7947: windbg.diff

File windbg.diff, 11.8 KB (added by SF/mnepomuk, 23 years ago)

WinDbg and debuglevel patch

  • scummvm/Makefile.cygwin

    diff -u -r -w -N scummvm/scummvm/Makefile.cygwin myscummvm/scummvm/Makefile.cygwin
    old new  
     1# Makefile CYGWIN 1.3.10 (gcc 2.95.3, sdl, mad)
     2
     3CC      = gcc
     4CFLAGS  = -O2 -Wall -Wstrict-prototypes -Wuninitialized -Wno-long-long -Wno-multichar
     5DEFINES = -DUNIX -DUSE_WINDBG -DDUMP_SCRIPTS -DUSE_COMPRESSED_SOUND -DCOMPRESSED_SOUND_FILE
     6LDFLAGS :=
     7INCLUDES:= `sdl-config --cflags` -I./ -I./sound
     8CPPFLAGS= $(DEFINES) $(INCLUDES)
     9EXE = .exe
     10
     11# Add -lmad for -DCOMPRESSED_SOUND_FILE
     12LIBS    = `sdl-config --libs` -lwinmm -lmad -mconsole
     13ZIPFILE := scummvm-`date '+%Y-%m-%d'`.zip
     14
     15INCS    = scumm.h scummsys.h stdafx.h
     16
     17OBJS    = actor.o boxes.o costume.o gfx.o object.o resource.o \
     18        saveload.o script.o scummvm.o sound.o string.o \
     19        sys.o verbs.o sdl.o script_v1.o script_v2.o debug.o gui.o \
     20        sound/imuse.o sound/fmopl.o sound/mixer.o debugrl.o \
     21        akos.o vars.o insane.o gameDetector.o init.o \
     22        v3/resource_v3.o v4/resource_v4.o 2xsai.o main.o \
     23        simon/midi.o simon/simon.o simon/simonsys.o sound/mididrv.o
     24
     25DISTFILES=$(OBJS:.o=.cpp) Makefile scumm.h scummsys.h stdafx.h stdafx.cpp \
     26        windows.cpp debugrl.h whatsnew.txt readme.txt copying.txt \
     27        scummvm.dsp scummvm.dsw sound/fmopl.h gui.h sound.h
     28
     29.cpp.o:
     30        $(CC) $(CFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
     31
     32all: scummvm install
     33
     34install: scummvm
     35        cp scummvm$(EXE) /usr/bin
     36
     37scummvm: $(OBJS)
     38        $(CC) $(LDFLAGS) -o $(@) $(OBJS) $(LIBS)
     39
     40clean:
     41        rm -f $(OBJS) scummvm$(EXE)
     42        rm -f -r *.bak *.stackdump *.rej *.orig
     43        rm -f dumps/*
     44
     45dist:
     46        rm -f $(ZIPFILE)
     47        zip -q $(ZIPFILE) $(DISTFILES)
     48
     49check:
     50$(OBJS): $(INCS)
  • scummvm/gameDetector.cpp

    diff -u -r -w -N scummvm/scummvm/gameDetector.cpp myscummvm/scummvm/gameDetector.cpp
    old new  
    3232static const char USAGE_STRING[] =
    3333        "ScummVM - Scumm Interpreter\n"
    3434        "Syntax:\n"
    35   "\tscummvm [-v] [-d] [-n] [-b<num>] [-t<num>] [-s<num>] [-p<path>] [-m<num>] [-f] game\n"
     35  "\tscummvm [-v] [-d[<num>]] [-n] [-b<num>] [-t<num>] [-s<num>] [-p<path>] [-m<num>] [-f] game\n"
    3636        "Flags:\n"
    3737        "\tv       - show version info and exit\n"
    3838        "\tc<num>  - use cdrom <num> for cd audio\n"
    39         "\td       - enable debug output\n"
     39        "\td[<num>]- enable debug output (level <num>)\n"
    4040        "\tn       - no subtitles for speech\n"
    4141        "\tb<num>  - start in room <num>\n"
    4242        "\tt<num>  - set music tempo. Suggested: 1F0000\n"
     
    8383                                        break;
    8484                                case 'd':
    8585                                        _debugMode = true;
    86                                         break;
     86                                        if (*(s+1) != '\0')
     87                                                _debugLevel = atoi(s+1);
     88                                        debug(1,"Debugmode (level %d) on",_debugLevel);
     89                                        goto NextArg;
    8790                                case 'n':
    8891                                        _noSubtitles = true;
    8992                                        break;
  • scummvm/readme.txt

    diff -u -r -w -N scummvm/scummvm/readme.txt myscummvm/scummvm/readme.txt
    old new  
    130130.SOU files, you will need to install the MAD library and define
    131131COMPRESSED_SOUND_FILE. Tools for compressing .SOU files to .SO3 files can be
    132132found in the 'tools' CVS module, or in the 'scummvm-tools' package.
     133On Win9x/NT/XP you can define WIN_DBG and attach WinDbg to browse the debug
     134messages (see www.sysinternals.com/ntw2k/freeware/debugview.shtml).
    133135
    134136        GCC:
    135137        * Type make (or gmake if that's what GNU make is called on your
     
    196198        -t<num>   - Set music tempo.              Default is '2031616'
    197199        -e<mode>  - Select sound engine. See below.
    198200        -g<mode>  - Select graphics scaler. See below.
     201        -d[<num>] - Set debug verbosity to <num>
    199202        -f        - Full-screen mode.
    200203        -n        - Disable subtitles. Use with games that have voice.
    201204        -r        - Enable Roland conversion. Try if music sounds incorrect.
  • scummvm/resource.cpp

    diff -u -r -w -N scummvm/scummvm/resource.cpp myscummvm/scummvm/resource.cpp
    old new  
    357357        int num;
    358358        int i;
    359359
    360         debug(9, "readResTypeList(%d,%x,%s)", id, FROM_LE_32(tag), name);
     360        debug(9, "readResTypeList(%s,%x,%s)", resTypeFromId(id), FROM_LE_32(tag), name);
    361361
    362362        num = fileReadWordLE();
    363363
     
    388388#endif
    389389}
    390390
     391char *Scumm::resTypeFromId(int id) {
     392        static char buf[100];
     393
     394        switch(id) {
     395                case rtRoom:      sprintf(buf, "Room"); break;
     396                case rtScript:    sprintf(buf, "Script"); break;
     397                case rtCostume:   sprintf(buf, "Costume"); break;
     398                case rtSound:     sprintf(buf, "Sound"); break;
     399                case rtInventory: sprintf(buf, "Inventory"); break;
     400                case rtCharset:   sprintf(buf, "Charset"); break;
     401                case rtString:    sprintf(buf, "String"); break;
     402                case rtVerb:      sprintf(buf, "Verb"); break;
     403                case rtActorName: sprintf(buf, "ActorName"); break;
     404                case rtBuffer:    sprintf(buf, "Buffer"); break;
     405                case rtScaleTable:sprintf(buf, "ScaleTable"); break;
     406                case rtTemp:      sprintf(buf, "Temp"); break;
     407                case rtFlObject:  sprintf(buf, "FlObject"); break;
     408                case rtMatrix:    sprintf(buf, "Matrix"); break;
     409                case rtBox:       sprintf(buf, "Box"); break;
     410                case rtLast:      sprintf(buf, "Last"); break;
     411                case rtNumTypes:  sprintf(buf, "NumTypes"); break;
     412                default: sprintf(buf,"%d", id);
     413        }
     414        return buf;
     415}
    391416
    392417void Scumm::allocResTypeData(int id, uint32 tag, int num, const char *name,
    393418                                                                                                                 int mode)
    394419{
    395         debug(9, "allocResTypeData(%d,%x,%d,%s,%d)", id, FROM_LE_32(tag), num, name,
    396                                 mode);
     420        debug(9, "allocResTypeData(%s/%s,%x,%d,%d)", resTypeFromId(id), name, FROM_LE_32(tag), num, mode);
    397421        assert(id >= 0 && id < (int)(sizeof(res.mode) / sizeof(res.mode[0])));
    398422
    399423        if (num >= 2000) {
     
    444468{
    445469        void *addr;
    446470
    447         debug(9, "ensureResourceLoaded(%d,%d)", type, i);
     471        debug(9, "ensureResourceLoaded(%s,%d)", resTypeFromId(type), i);
    448472
    449473        if (type == rtRoom && i > 127) {
    450474                i = _resourceMapper[i & 127];
     
    470494        uint32 fileOffs;
    471495        uint32 size, tag;
    472496
    473 //  debug(1, "loadResource(%d,%d)", type,idx);
     497//  debug(1, "loadResource(%s,%d)", resTypeFromId(type),idx);
    474498
    475499        if (type == rtCharset && (_features & GF_SMALL_HEADER)) {
    476500                loadCharset(idx);
     
    545569        int pri, best_pri;
    546570        uint32 best_size = 0, best_offs = 0;
    547571
    548         debug(9, "readSoundResource(%d,%d)", type, idx);
     572        debug(9, "readSoundResource(%s,%d)", resTypeFromId(type), idx);
    549573
    550574        pos = 0;
    551575
     
    622646{
    623647        byte *ptr;
    624648
    625         debug(9, "getResourceAddress(%d,%d)", type, idx);
    626 
    627649        CHECK_HEAP validateResource("getResourceAddress", type, idx);
    628         if (!res.address[type])
     650        if (!res.address[type]) {
     651                debug(9, "getResourceAddress(%s,%d) == NULL", resTypeFromId(type), idx);
    629652                return NULL;
     653        }
    630654
    631655        if (res.mode[type] && !res.address[type][idx]) {
    632656                ensureResourceLoaded(type, idx);
    633657        }
    634658
    635659
    636         if (!(ptr = (byte *)res.address[type][idx]))
     660        if (!(ptr = (byte *)res.address[type][idx])) {
     661                debug(9, "getResourceAddress(%s,%d) == NULL", resTypeFromId(type), idx);
    637662                return NULL;
     663        }
    638664
    639665        setResourceCounter(type, idx, 1);
    640666
     667        debug(9, "getResourceAddress(%s,%d) == %ld", resTypeFromId(type), idx, ptr + sizeof(MemBlkHeader));
    641668        return ptr + sizeof(MemBlkHeader);
    642669}
    643670
     
    665692{
    666693        byte *ptr;
    667694
    668         CHECK_HEAP debug(9, "createResource(%d,%d,%d)", type, idx, size);
     695        CHECK_HEAP debug(9, "createResource(%s,%d,%d)", resTypeFromId(type), idx, size);
    669696
    670697        if (size > 65536 * 4 + 37856)
    671698                warning("Probably invalid size allocating %d", size);
     
    691718void Scumm::validateResource(const char *str, int type, int idx)
    692719{
    693720        if (type < rtFirst || type > rtLast || (uint) idx >= (uint) res.num[type]) {
    694                 warning("%s Illegal Glob type %d num %d", str, type, idx);
     721                warning("%s Illegal Glob type %s (%d) num %d", str, resTypeFromId(type), type, idx);
    695722        }
    696723}
    697724
     
    699726{
    700727        byte *ptr;
    701728
    702         debug(9, "nukeResource(%d,%d)", type, idx);
     729        debug(9, "nukeResource(%s,%d)", resTypeFromId(type), idx);
    703730
    704731        CHECK_HEAP if (!res.address[type])
    705732                return;
  • scummvm/script.cpp

    diff -u -r -w -N scummvm/scummvm/script.cpp myscummvm/scummvm/script.cpp
    old new  
    357357                _vars[var] = value;
    358358
    359359                if ((_varwatch == (int)var) || (_varwatch == 0))
    360                         printf("vars[%d] = %d (via script %d)\n", var, value,
     360                        debug(0, "vars[%d] = %d (via script %d)", var, value,
    361361                                                 vm.slot[_currentScript].number);
    362362                return;
    363363        }
  • scummvm/scumm.h

    diff -u -r -w -N scummvm/scummvm/scumm.h myscummvm/scummvm/scumm.h
    old new  
    808808        bool openResourceFile(const char *filename);
    809809        void loadPtrToResource(int type, int i, byte *ptr);
    810810        void readResTypeList(int id, uint32 tag, const char *name);
     811        char *resTypeFromId(int id);
    811812        void allocResTypeData(int id, uint32 tag, int num, const char *name, int mode);
    812813        byte *createResource(int type, int index, uint32 size);
    813814        void nukeResource(int type, int i);     
     
    18261827
    18271828extern const uint32 IMxx_tags[];
    18281829extern const byte default_scale_table[768];
     1830extern uint16 _debugLevel;
    18291831
    18301832void outputdisplay2(Scumm *s, int disp);
    18311833extern const byte revBitMask[8];
  • scummvm/scummsys.h

    diff -u -r -w -N scummvm/scummvm/scummsys.h myscummvm/scummvm/scummsys.h
    old new  
    6565#define FORCEINLINE inline
    6666#define NORETURN __attribute__((__noreturn__))
    6767#define GCC_PACK __attribute__((packed))
    68 #define CDECL
     68/* #define CDECL */
     69#define _HEAPOK 0
    6970
    7071typedef unsigned char byte;
    7172typedef unsigned char uint8;
  • scummvm/scummvm.cpp

    diff -u -r -w -N scummvm/scummvm/scummvm.cpp myscummvm/scummvm/scummvm.cpp
    old new  
    10571057void NORETURN CDECL error(const char *s, ...)
    10581058{
    10591059        char buf[1024];
     1060#if defined( USE_WINDBG )
     1061        char buf2[1024];
     1062#endif
    10601063        va_list va;
    10611064
    10621065        va_start(va, s);
     
    10691072                                                g_scumm->_roomResource,
    10701073                                                ss->number,
    10711074                                                g_scumm->_scriptPointer - g_scumm->_scriptOrgPointer, buf);
     1075#if defined( USE_WINDBG )
     1076                sprintf(buf2, "Error(%d:%d:0x%X): %s!\n",
     1077                        g_scumm->_roomResource,
     1078                        ss->number,
     1079                        g_scumm->_scriptPointer - g_scumm->_scriptOrgPointer,
     1080                        buf);
     1081                OutputDebugString(buf2);
     1082#endif
    10721083        } else {
    10731084                fprintf(stderr, "Error: %s!\n", buf);
     1085#if defined( USE_WINDBG )
     1086                sprintf(&buf[strlen(buf)], "\n");
     1087                OutputDebugString(buf);
     1088#endif
    10741089        }
    10751090        // Doesn't wait for any keypress!! Is it intended to?
    10761091        exit(1);
     
    10861101        va_end(va);
    10871102
    10881103        fprintf(stderr, "WARNING: %s!\n", buf);
     1104#if defined( USE_WINDBG )
     1105        sprintf(&buf[strlen(buf)], "\n");
     1106        OutputDebugString(buf);
     1107#endif
    10891108}
    10901109
     1110uint16 _debugLevel = 1;
     1111
    10911112void CDECL debug(int level, const char *s, ...)
    10921113{
    10931114        char buf[1024];
    10941115        va_list va;
    10951116
    1096         if (level > 5)
     1117        if (level > _debugLevel)
    10971118                return;
    10981119
    10991120        va_start(va, s);
    11001121        vsprintf(buf, s, va);
    11011122        va_end(va);
    11021123        printf("%s\n", buf);
     1124#if defined( USE_WINDBG )
     1125        sprintf(&buf[strlen(buf)], "\n");
     1126        OutputDebugString(buf);
     1127#endif
    11031128        fflush(stdout);
    11041129}
    11051130
  • scummvm/simon/simon.h

    diff -u -r -w -N scummvm/scummvm/simon/simon.h myscummvm/scummvm/simon/simon.h
    old new  
    220220};
    221221
    222222/* dummy typedefs to make it compile in *nix */
     223#if !defined(__CYGWIN__)
    223224#if defined(UNIX) || defined(UNIX_X11) || defined(__MORPHOS__) || defined(__DC__)
    224225typedef void* HMIDISTRM;
    225226typedef void* HMIDIOUT;
     
    238239
    239240int GetAsyncKeyState(int key);
    240241
     242#endif
    241243#endif
    242244
    243245class MidiDriver;