DM: Add stub methods, clean up warnings and some comments

This commit is contained in:
Bendegúz Nagy 2016-08-26 22:51:13 +02:00
parent 0f9995851b
commit ead63373ca
8 changed files with 40 additions and 43 deletions

View File

@ -3,9 +3,10 @@ Bugs:
Broken colour palette for dungeon and cursor
Gui is messed up by drawn spell area line on startup
Spellcasting tabs are displayed inproperly, switching between them is possible tho
When reordering a champions, the icons in the top right corner ar drawn twice under the cursor
Logic:
End game method is broken
F0444_STARTEND_Endgame is broken
Items thrown on the right side end up on the left side
@ -23,21 +24,9 @@ Todo:
Double check strcat, strstr usages
I forgot to add a bunch of warning for show/hide mouse pointer and other mouse functions
Finish stuff:
F0444_STARTEND_Endgame
Make missing code warnings to STUB methods
Add quit resuest from scummvm
f380_processCommandQueue
Missing main loop methods
Code stuff todo:
Complete stub methods
Add localization
Save file f433_processCommand140_saveGame fails silently
F0438_STARTEND_OpenEntranceDoors
F0442_STARTEND_ProcessCommand202_EntranceDrawCredits
G0335_ui_SelectedDialogChoice
Add dialogs
Add failcheck to saveing and loading
Refactoring
Places implementing mini mainloop and where input doesn't really matter should call discardInput instead of processInput

View File

@ -1056,7 +1056,7 @@ void DisplayMan::f110_drawDoorButton(int16 doorButtonOrdinal, int16 viewDoorButt
void DisplayMan::f565_viewportSetPalette(uint16* middleScreenPalette, uint16* topAndBottomScreen) {
if (middleScreenPalette && topAndBottomScreen)
debugC(kDMDebugOftenCalledWarning, "MISSING CODE: F0508_AMIGA_BuildPaletteChangeCopperList");
f508_buildPaletteChangeCopperList(middleScreenPalette, topAndBottomScreen);
f566_viewportBlitToScreen();
}
@ -2045,7 +2045,7 @@ void DisplayMan::f124_drawSquareD1C(Direction dir, int16 posX, int16 posY) {
_g296_bitmapViewport, g106_BoxThievesEye_ViewPortVisibleArea, 0, 0,
48, k112_byteWidthViewport, k9_ColorGold, 95, k136_heightViewport); /* BUG0_74 */
f493_addDerivedBitmap(k1_DerivedBitmapThievesEyeVisibleArea);
warning(false, "MISSING CODE: F0480_CACHE_ReleaseBlock");
f480_releaseBlock(k1_DerivedBitmapThievesEyeVisibleArea | 0x8000);
}
return;
case k17_DoorFrontElemType:
@ -2692,6 +2692,7 @@ uint32 DisplayMan::getCompressedDataSize(uint16 index) {
#define kMaskFieldAspectNoMask 255 // @ C255_NO_MASK
void DisplayMan::f113_drawField(FieldAspect* fieldAspect, Box& box) {
warning(false, "STUB METHOD: f113_drawField");
DisplayMan &dispMan = *_vm->_displayMan;
byte *bitmapMask;
@ -2705,11 +2706,6 @@ void DisplayMan::f113_drawField(FieldAspect* fieldAspect, Box& box) {
dispMan.f130_flipBitmapHorizontal(bitmapMask, fieldAspect->_byteWidth, fieldAspect->_height);
}
}
// byte *bitmap = dispMan.f489_getNativeBitmapOrGraphic(k73_FieldTeleporterGraphicIndice + fieldAspect->_nativeBitmapRelativeIndex);
warning(false, "MISSING CODE: F0133_VIDEO_BlitBoxFilledWithMaskedBitmap");
warning(false, "IGNORED CODE: F0491_CACHE_IsDerivedBitmapInCache, F0493_CACHE_AddDerivedBitmap, F0480_CACHE_ReleaseBlock");
}
int16 DisplayMan::f459_getScaledBitmapByteCount(int16 byteWidth, int16 height, int16 scale) {

View File

@ -750,7 +750,9 @@ public:
void f493_addDerivedBitmap(int16 derivedBitmapIndex); // @ F0493_CACHE_AddDerivedBitmap
void f480_releaseBlock(uint16 index); // @ F0480_CACHE_ReleaseBlock
uint16 f431_getDarkenedColor(uint16 RGBcolor);
void f436_STARTEND_FadeToPalette(uint16 *P0849_pui_Palette) { warning(false, "STUB: f436_STARTEND_FadeToPalette"); }
void f436_STARTEND_FadeToPalette(uint16 *P0849_pui_Palette) { warning(false, "STUB METHOD: f436_STARTEND_FadeToPalette"); }
void f508_buildPaletteChangeCopperList(uint16* middleScreen, uint16* topAndBottom) { warning(false, "STUB METHOD: f508_buildPaletteChangeCopperList"); }// @ F0508_AMIGA_BuildPaletteChangeCopperList
void f136_shadeScreenBox(Box* box, Color color) { warning(false, "STUB METHOD: f136_shadeScreenBox"); } // @ F0136_VIDEO_ShadeScreenBox
};
}

View File

@ -117,14 +117,14 @@ void InventoryMan::f355_toggleInventory(ChampionIndex championIndex) {
_vm->_displayMan->_g578_useByteBoxCoordinates = false;
_g432_inventoryChampionOrdinal = _vm->M0_indexToOrdinal(championIndex);
if (!AL1102_ui_InventoryChampionOrdinal) {
warning(false, "MISSING CODE: F0136_VIDEO_ShadeScreenBox");
_vm->_displayMan->f136_shadeScreenBox(&g2_BoxMovementArrows, k0_ColorBlack);
}
L1103_ps_Champion = &_vm->_championMan->_gK71_champions[championIndex];
_vm->_displayMan->f466_loadIntoBitmap(k17_InventoryGraphicIndice, _vm->_displayMan->_g296_bitmapViewport);
if (_vm->_championMan->_g299_candidateChampionOrdinal) {
_vm->_displayMan->f135_fillBoxBitmap(_vm->_displayMan->_g296_bitmapViewport, g41_BoxFloppyZzzCross, k12_ColorDarkestGray, k112_byteWidthViewport, k136_heightViewport);
}
_vm->_textMan->f52_printToViewport(5, 116, k13_ColorLightestGray, "HEALTH");
_vm->_textMan->f52_printToViewport(5, 116, k13_ColorLightestGray, "HEALTH"); // TODO: localization
_vm->_textMan->f52_printToViewport(5, 124, k13_ColorLightestGray, "STAMINA");
_vm->_textMan->f52_printToViewport(5, 132, k13_ColorLightestGray, "MANA");
for (AL1102_ui_SlotIndex = k0_ChampionSlotReadyHand; AL1102_ui_SlotIndex < k30_ChampionSlotChest_1; AL1102_ui_SlotIndex++) {

View File

@ -36,6 +36,7 @@
#include "menus.h"
#include "eventman.h"
#include "projexpl.h"
#include "dialog.h"
namespace DM {
@ -141,8 +142,8 @@ LoadgameResponse DMEngine::f435_loadgame(int16 slot) {
_timeline->f233_initTimeline();
_groupMan->f196_initActiveGroups();
warning(false, "Disabled code in f435_loadgame");
#if 0
// always false?
if (L1366_B_FadePalette) {
_displayMan->f436_STARTEND_FadeToPalette(_displayMan->_g345_aui_BlankBuffer);
D26_WaitForVerticalBlank();
@ -156,7 +157,7 @@ LoadgameResponse DMEngine::f435_loadgame(int16 slot) {
_g526_dungeonId = dmSaveHeader._dungeonId;
_g524_restartGameAllowed = true;
warning(false, "MISSING CDOE: F0427_DIALOG_Draw in f435_loadgame");
_dialog->f427_dialogDraw(nullptr, "LOADING GAME . . .", nullptr, nullptr, nullptr, nullptr, true, true, true); // TODO: localization
}
_championMan->_g303_partyDead = false;

View File

@ -170,7 +170,7 @@ T0386006:
box2._y2 = 110;
dm.f132_blitToBitmap(bitmapIcon, dm._g348_bitmapScreen, box2, 0, 0, 8, k160_byteWidthScreen, kM1_ColorNoTransparency);
if (champion.getAttributes(k0x0008_ChampionAttributeDisableAction) || _vm->_championMan->_g299_candidateChampionOrdinal || _vm->_championMan->_g300_partyIsSleeping) {
warning(false, "MISSING CODE: F0136_VIDEO_ShadeScreenBox");
_vm->_displayMan->f136_shadeScreenBox(&box, k0_ColorBlack);
}
}
@ -183,10 +183,10 @@ void MenuMan::f456_drawDisabledMenu() {
_vm->_inventoryMan->f334_closeChest();
}
} else {
warning(false, "MISSING CODE: F0136_VIDEO_ShadeScreenBox");
_vm->_displayMan->f136_shadeScreenBox(&g2_BoxMovementArrows, k0_ColorBlack);
}
warning(false, "MISSING CODE: F0136_VIDEO_ShadeScreenBox");
warning(false, "MISSING CODE: F0136_VIDEO_ShadeScreenBox");
_vm->_displayMan->f136_shadeScreenBox(&g0_BoxSpellArea, k0_ColorBlack);
_vm->_displayMan->f136_shadeScreenBox(&g1_BoxActionArea, k0_ColorBlack);
_vm->_eventMan->f67_setMousePointerToNormal(k0_pointerArrow);
}
}

View File

@ -139,9 +139,10 @@ void TextMan::f45_messageAreaCreateNewRow() {
uint16 L0029_ui_RowIndex;
if (_g358_messageAreaCursorRow == 3) {
warning(false, "MISSING CODE: F0561_SCROLLER_IsTextScrolling");
f561_isTextScrolling(&_gK60_s_TextScroller, true);
memset(_g356_bitmapMessageAreaNewRow, k0_ColorBlack, 320 * 7);
warning(false, "MISSING CODE: F0560_SCROLLER_SetCommand");
f560_SCROLLER_setCommand(&_gK60_s_TextScroller, 1);
for (L0029_ui_RowIndex = 0; L0029_ui_RowIndex < 3; L0029_ui_RowIndex++) {
_g360_messageAreaRowExpirationTime[L0029_ui_RowIndex] = _g360_messageAreaRowExpirationTime[L0029_ui_RowIndex + 1];
}
@ -155,13 +156,12 @@ void TextMan::f46_messageAreaPrintString(Color color, const char* string) {
int16 L0030_i_StringLength;
L0030_i_StringLength = strlen(string);
warning(false, "MISSING CODE: F0561_SCROLLER_IsTextScrolling");
if (true) { // there is a test here with F0561_SCROLLER_IsTextScrolling
if (f561_isTextScrolling(&_gK60_s_TextScroller, false)) {
f53_printToLogicalScreen(_g359_messageAreaCursorColumn * 6, (_g358_messageAreaCursorRow * 7 - 6) + 177, color, k0_ColorBlack, string);
} else {
f40_printTextToBitmap(_g356_bitmapMessageAreaNewRow, k160_byteWidthScreen, _g359_messageAreaCursorColumn * 6, 5, color, k0_ColorBlack, string, 7);
warning(false, "MISSING CODE: F0561_SCROLLER_IsTextScrolling");
warning(false, "MISSING CODE: F0560_SCROLLER_SetCommand");
if(f561_isTextScrolling(&_gK60_s_TextScroller, false))
f560_SCROLLER_setCommand(&_gK60_s_TextScroller, 1);
}
_g359_messageAreaCursorColumn += L0030_i_StringLength;
_g360_messageAreaRowExpirationTime[_g358_messageAreaCursorRow] = _vm->_g313_gameTime + 200;
@ -206,7 +206,7 @@ void TextMan::f44_messageAreaClearExpiredRows() {
if ((L0027_l_ExpirationTime == -1) || (L0027_l_ExpirationTime > _vm->_g313_gameTime))
continue;
L0028_s_Box._y2 = (L0028_s_Box._y1 = 172 + (L0026_ui_RowIndex * 7)) + 6;
warning(false, "MISSING CODE:F0561_SCROLLER_IsTextScrolling(&K0060_s_TextScroller, true);");
f561_isTextScrolling(&_gK60_s_TextScroller, true);
_vm->_displayMan->f135_fillBoxBitmap(_vm->_displayMan->_g348_bitmapScreen, L0028_s_Box, k0_ColorBlack, k160_byteWidthScreen, k200_heightScreen);
_g360_messageAreaRowExpirationTime[L0026_ui_RowIndex] = -1;
}

View File

@ -33,6 +33,10 @@
namespace DM {
struct TextScroller {
// Placeholder, empty for now
}; // @ Text_Scroller
class TextMan {
DMEngine *_vm;
int16 _g359_messageAreaCursorColumn; // @ G0359_i_MessageAreaCursorColumn
@ -40,14 +44,16 @@ class TextMan {
int32 _g360_messageAreaRowExpirationTime[4]; // @ G0360_al_MessageAreaRowExpirationTime
byte *_g356_bitmapMessageAreaNewRow; // @ G0356_puc_Bitmap_MessageAreaNewRow
public:
TextScroller _gK60_s_TextScroller;
explicit TextMan(DMEngine *vm);
~TextMan();
void f40_printTextToBitmap(byte *destBitmap, uint16 destByteWidth, int16 destX, int16 destY,
Color textColor, Color bgColor, const char *text, uint16 destHeight); // @ F0040_TEXT_Print
Color textColor, Color bgColor, const char *text, uint16 destHeight); // @ F0040_TEXT_Print
void f53_printToLogicalScreen(uint16 destX, uint16 destY, Color textColor, Color bgColor, const char *text); // @ F0053_TEXT_PrintToLogicalScreen
void f52_printToViewport(int16 posX, int16 posY, Color textColor, const char *text, Color bgColor = k12_ColorDarkestGray); // @ F0052_TEXT_PrintToViewport
void f41_printWithTrailingSpaces(byte *destBitmap, int16 destByteWidth, int16 destX, int16 destY, Color textColor, Color bgColor,
const char *text, int16 strLenght, int16 destHeight); // @ F0041_TEXT_PrintWithTrailingSpaces
const char *text, int16 strLenght, int16 destHeight); // @ F0041_TEXT_PrintWithTrailingSpaces
void f51_messageAreaPrintLineFeed(); // @ F0051_TEXT_MESSAGEAREA_PrintLineFeed
void f47_messageAreaPrintMessage(Color color, const char *string); // @ F0047_TEXT_MESSAGEAREA_PrintMessage
void f45_messageAreaCreateNewRow(); // @ F0045_TEXT_MESSAGEAREA_CreateNewRow
@ -56,7 +62,10 @@ public:
void f42_messageAreaMoveCursor(int16 column, int16 row); // @ F0042_TEXT_MESSAGEAREA_MoveCursor
void f44_messageAreaClearExpiredRows(); // @ F0044_TEXT_MESSAGEAREA_ClearExpiredRows
void f443_endgamePrintString(int16 x, int16 y, Color textColor, char *text); // @ F0443_STARTEND_EndgamePrintString
bool f561_isTextScrolling(TextScroller *scroller, bool waitEndOfScrolling) {
warning(false, "STUB METHOD: f561_isTextScrolling"); return true;
} // @ F0561_SCROLLER_IsTextScrolling
void f560_SCROLLER_setCommand(TextScroller *scroller, int16 command) { warning(false, "STUB METHOD: f560_SCROLLER_setCommand"); } // @ F0560_SCROLLER_SetCommand
};
}